Imported Upstream version 1.22.4 upstream/1.22.4
authorJinWang An <jinwang.an@samsung.com>
Wed, 1 Dec 2021 08:01:25 +0000 (17:01 +0900)
committerJinWang An <jinwang.an@samsung.com>
Wed, 1 Dec 2021 08:01:25 +0000 (17:01 +0900)
956 files changed:
.tarball-version [new file with mode: 0644]
.version [new file with mode: 0644]
AUTHORS [new file with mode: 0644]
BUG-REPORT
ChangeLog
FOR-RELEASE
INSTALL
INSTALL.REPO
INSTALL.extra [new file with mode: 0644]
INSTALL.gen [deleted file]
LICENSES
MANIFEST
MORE.STUFF
Makefile.am [new file with mode: 0644]
Makefile.ccpg [deleted file]
Makefile.comm [deleted file]
Makefile.cpg [deleted file]
Makefile.in
Makefile.lib [deleted file]
Makefile.sub [deleted file]
NEWS
PROBLEMS
PROJECTS
README
README.MinGW
REVISION [deleted file]
THANKS [new file with mode: 0644]
TODO
VERSION [deleted file]
acinclude.m4 [new file with mode: 0644]
aclocal.m4
arch/djgpp/README
arch/djgpp/config.bat
arch/djgpp/config.sed
arch/djgpp/config.site
arch/djgpp/t-groff.bat
arch/mingw/Makefile.sub [deleted file]
arch/mingw/grap2graph.cmd
arch/mingw/mingw.am [new file with mode: 0644]
arch/misc/misc.am [new file with mode: 0644]
arch/misc/shdeps.sh
build-aux/compile [moved from src/libs/gnulib/build-aux/compile with 95% similarity]
build-aux/config.guess [moved from config.guess with 62% similarity]
build-aux/config.rpath [moved from config.rpath with 99% similarity]
build-aux/config.sub [new file with mode: 0755]
build-aux/depcomp [moved from src/libs/gnulib/build-aux/depcomp with 94% similarity]
build-aux/git-version-gen [new file with mode: 0755]
build-aux/install-sh [moved from install-sh with 90% similarity]
build-aux/missing [new file with mode: 0755]
build-aux/prefix-gnulib-mk [new file with mode: 0755]
build-aux/test-driver [new file with mode: 0755]
build-aux/ylwrap [new file with mode: 0755]
config.sub [deleted file]
configure
configure.ac
contrib/chem/ChangeLog
contrib/chem/Makefile.sub [deleted file]
contrib/chem/README.txt
contrib/chem/chem.1.man [moved from contrib/chem/chem.man with 67% similarity]
contrib/chem/chem.am [new file with mode: 0644]
contrib/chem/chem.pic
contrib/chem/chem.pl
contrib/chem/examples/122/README.txt
contrib/chem/examples/122/ch2a_ethyl.chem
contrib/chem/examples/122/ch2b_benzene.chem
contrib/chem/examples/122/ch2c_benzene_right.chem
contrib/chem/examples/122/ch4a_stick.chem
contrib/chem/examples/122/ch4b_methyl_acetate.chem
contrib/chem/examples/122/ch4c_colon.chem
contrib/chem/examples/122/ch4d_HCl.H2O.chem
contrib/chem/examples/122/ch4e_CaSO4.2H2O.chem
contrib/chem/examples/122/ch4f_C.chem
contrib/chem/examples/122/ch4g_BP.chem
contrib/chem/examples/122/ch4h_methacrylate.chem
contrib/chem/examples/122/ch4i_cyclo.chem
contrib/chem/examples/122/ch4j_ring4.chem
contrib/chem/examples/122/ch4k_ring3.chem
contrib/chem/examples/122/ch4l_vertex.chem
contrib/chem/examples/122/ch4m_double.chem
contrib/chem/examples/122/ch4n_triple.chem
contrib/chem/examples/122/ch4o_aromatic.chem
contrib/chem/examples/122/ch4p_cholestanol.chem
contrib/chem/examples/122/ch4q_rings.chem
contrib/chem/examples/122/ch4r_spiro.chem
contrib/chem/examples/122/ch4s_heteroatoms.chem
contrib/chem/examples/122/ch4t_polycyclic.chem
contrib/chem/examples/122/ch4u_nicotine.chem
contrib/chem/examples/122/ch4v_histidine.chem
contrib/chem/examples/122/ch4w_lsd.chem
contrib/chem/examples/122/ch4x_anisole.chem
contrib/chem/examples/122/ch4y_reserpine.chem
contrib/chem/examples/122/ch4z1_eqn_glutamic.chem
contrib/chem/examples/122/ch4z2_text.chem
contrib/chem/examples/122/ch5a_size.chem
contrib/chem/examples/122/ch6a_pic.chem
contrib/chem/examples/122/ch6b_dna.chem
contrib/chem/examples/122/chAa_polymer.chem
contrib/chem/examples/122/chAb_vinyl_chloro.chem
contrib/chem/examples/122/chAc_morphine.chem
contrib/chem/examples/122/chAd_chlorophyll.chem
contrib/chem/examples/122/chAe_chair.chem
contrib/chem/examples/122/chAf_arrow.chem
contrib/chem/examples/122/chAg_circle.chem
contrib/chem/examples/122/chAh_brackets.chem
contrib/chem/examples/122/chAi_poly_vinyl_chloride.chem
contrib/chem/examples/122/chBa_jump.chem
contrib/chem/examples/122/chBb_bonds.chem
contrib/chem/examples/122/chBc_rings.chem
contrib/chem/examples/README.txt
contrib/chem/examples/atp.chem
contrib/chem/examples/cholesterin.chem
contrib/chem/examples/ethamivan.chem
contrib/chem/examples/lsd.chem
contrib/chem/examples/morphine.chem
contrib/chem/examples/penicillin.chem
contrib/chem/examples/reserpine.chem
contrib/eqn2graph/Makefile.sub [deleted file]
contrib/eqn2graph/eqn2graph.1.man [new file with mode: 0644]
contrib/eqn2graph/eqn2graph.am [moved from contrib/pic2graph/Makefile.sub with 51% similarity]
contrib/eqn2graph/eqn2graph.man [deleted file]
contrib/eqn2graph/eqn2graph.sh
contrib/gdiffmk/ChangeLog
contrib/gdiffmk/Makefile.sub [deleted file]
contrib/gdiffmk/README
contrib/gdiffmk/gdiffmk.1.man [new file with mode: 0644]
contrib/gdiffmk/gdiffmk.am [new file with mode: 0644]
contrib/gdiffmk/gdiffmk.man [deleted file]
contrib/gdiffmk/gdiffmk.sh
contrib/gdiffmk/tests/baseline
contrib/gdiffmk/tests/baseline.10
contrib/gdiffmk/tests/baseline.6
contrib/gdiffmk/tests/baseline.6a [new file with mode: 0644]
contrib/gdiffmk/tests/baseline.7
contrib/gdiffmk/tests/baseline.8
contrib/gdiffmk/tests/baseline.9
contrib/gdiffmk/tests/baseline.9a [new file with mode: 0644]
contrib/gdiffmk/tests/gdiffmk_tests.sh [new file with mode: 0755]
contrib/gdiffmk/tests/runtests.sh [moved from contrib/gdiffmk/tests/runtests.in with 73% similarity, mode: 0755]
contrib/glilypond/ChangeLog
contrib/glilypond/ChangeLog.0x
contrib/glilypond/Makefile.sub [deleted file]
contrib/glilypond/README.txt
contrib/glilypond/args.pl
contrib/glilypond/examples/example.groff [new file with mode: 0644]
contrib/glilypond/glilypond.1.man [moved from contrib/glilypond/glilypond.man with 60% similarity]
contrib/glilypond/glilypond.am [new file with mode: 0644]
contrib/glilypond/glilypond.pl
contrib/glilypond/oop_fh.pl
contrib/glilypond/subs.pl
contrib/gperl/ChangeLog
contrib/gperl/Makefile.sub [deleted file]
contrib/gperl/gperl.1.man [moved from contrib/gperl/gperl.man with 59% similarity]
contrib/gperl/gperl.am [new file with mode: 0644]
contrib/gperl/gperl.pl
contrib/gpinyin/ChangeLog
contrib/gpinyin/Makefile.sub [deleted file]
contrib/gpinyin/gpinyin.1.man [new file with mode: 0644]
contrib/gpinyin/gpinyin.am [new file with mode: 0644]
contrib/gpinyin/gpinyin.man [deleted file]
contrib/gpinyin/gpinyin.pl
contrib/gpinyin/subs.pl
contrib/grap2graph/Makefile.sub [deleted file]
contrib/grap2graph/grap2graph.1.man [new file with mode: 0644]
contrib/grap2graph/grap2graph.am [new file with mode: 0644]
contrib/grap2graph/grap2graph.man [deleted file]
contrib/grap2graph/grap2graph.sh
contrib/groff_filenames/ChangeLog
contrib/groff_filenames/Makefile.sub [deleted file]
contrib/groff_filenames/groff_filenames.5.man [moved from contrib/groff_filenames/groff_filenames.man with 55% similarity]
contrib/groff_filenames/groff_filenames.am [new file with mode: 0644]
contrib/groffer/ChangeLog
contrib/groffer/Makefile.sub [deleted file]
contrib/groffer/README
contrib/groffer/README_PERL
contrib/groffer/groffer.1.man [moved from contrib/groffer/groffer.man with 81% similarity]
contrib/groffer/groffer.am [new file with mode: 0644]
contrib/groffer/groffer.pl
contrib/groffer/main_subs.pl
contrib/groffer/man.pl
contrib/groffer/roff2.1.man [moved from contrib/groffer/roff2.man with 60% similarity]
contrib/groffer/roff2.pl
contrib/groffer/split_env.sh
contrib/groffer/subs.pl
contrib/groffer/version.sh
contrib/hdtbl/ChangeLog
contrib/hdtbl/Makefile.sub [deleted file]
contrib/hdtbl/examples/chess_board.roff
contrib/hdtbl/examples/col_rowspan_colors.roff
contrib/hdtbl/examples/color_boxes.roff
contrib/hdtbl/examples/color_nested_tables.roff
contrib/hdtbl/examples/color_table_cells.roff
contrib/hdtbl/examples/color_transitions.roff
contrib/hdtbl/examples/common.roff
contrib/hdtbl/examples/fonts_n.in
contrib/hdtbl/examples/fonts_x.in
contrib/hdtbl/examples/mixed_pickles.roff
contrib/hdtbl/examples/rainbow.roff
contrib/hdtbl/examples/short_reference.roff
contrib/hdtbl/examples/test-hdtbl.sh.in [new file with mode: 0644]
contrib/hdtbl/groff_hdtbl.7.man [moved from contrib/hdtbl/groff_hdtbl.man with 82% similarity]
contrib/hdtbl/hdmisc.tmac-u [moved from contrib/hdtbl/hdmisc.tmac with 86% similarity]
contrib/hdtbl/hdtbl.am [new file with mode: 0644]
contrib/hdtbl/hdtbl.tmac-u [moved from contrib/hdtbl/hdtbl.tmac with 92% similarity]
contrib/mm/ChangeLog
contrib/mm/Makefile.sim
contrib/mm/Makefile.sub [deleted file]
contrib/mm/NOTES
contrib/mm/README
contrib/mm/examples/README
contrib/mm/examples/letter.mm [new file with mode: 0644]
contrib/mm/groff_mm.7.man [moved from contrib/mm/groff_mm.man with 92% similarity]
contrib/mm/groff_mmse.7.man [new file with mode: 0644]
contrib/mm/groff_mmse.man [deleted file]
contrib/mm/m.tmac
contrib/mm/mm.am [new file with mode: 0644]
contrib/mm/mm/0.MT
contrib/mm/mm/4.MT
contrib/mm/mm/5.MT
contrib/mm/mm/ms.cov
contrib/mm/mmroff.1.man [new file with mode: 0644]
contrib/mm/mmroff.man [deleted file]
contrib/mm/mmroff.pl
contrib/mm/mse.tmac
contrib/mm/refer-mm.tmac
contrib/mom/BUGS
contrib/mom/ChangeLog
contrib/mom/Makefile.sub [deleted file]
contrib/mom/NEWS
contrib/mom/TODO
contrib/mom/copyright
contrib/mom/examples/README-fr.txt [new file with mode: 0644]
contrib/mom/examples/README.txt
contrib/mom/examples/elvis_syntax
contrib/mom/examples/elvis_syntax.new
contrib/mom/examples/letter.mom
contrib/mom/examples/mom-pdf.mom
contrib/mom/examples/mom.vim
contrib/mom/examples/mon_premier_doc.mom [new file with mode: 0644]
contrib/mom/examples/sample_docs.mom
contrib/mom/examples/slide-demo.mom [new file with mode: 0644]
contrib/mom/examples/test-mom.sh.in [new file with mode: 0644]
contrib/mom/examples/typesetting.mom
contrib/mom/groff_mom.7.man [moved from contrib/mom/groff_mom.man with 87% similarity]
contrib/mom/mom.am [new file with mode: 0644]
contrib/mom/momdoc/appendices.html
contrib/mom/momdoc/color.html
contrib/mom/momdoc/cover.html
contrib/mom/momdoc/definitions.html
contrib/mom/momdoc/docelement.html
contrib/mom/momdoc/docprocessing.html
contrib/mom/momdoc/goodies.html
contrib/mom/momdoc/graphical.html
contrib/mom/momdoc/headfootpage.html
contrib/mom/momdoc/images.html
contrib/mom/momdoc/inlines.html
contrib/mom/momdoc/intro.html
contrib/mom/momdoc/letters.html
contrib/mom/momdoc/macrolist.html
contrib/mom/momdoc/rectoverso.html
contrib/mom/momdoc/refer.html
contrib/mom/momdoc/reserved.html
contrib/mom/momdoc/stylesheet.css
contrib/mom/momdoc/tables-of-contents.html
contrib/mom/momdoc/toc.html
contrib/mom/momdoc/typesetting.html
contrib/mom/momdoc/using.html
contrib/mom/momdoc/version-2.html
contrib/mom/om.tmac
contrib/pdfmark/ChangeLog
contrib/pdfmark/Makefile.sub [deleted file]
contrib/pdfmark/PROBLEMS
contrib/pdfmark/README
contrib/pdfmark/TODO
contrib/pdfmark/cover.ms
contrib/pdfmark/pdfmark.am [new file with mode: 0644]
contrib/pdfmark/pdfmark.ms
contrib/pdfmark/pdfmark.tmac
contrib/pdfmark/pdfroff.1.man [moved from contrib/pdfmark/pdfroff.man with 75% similarity]
contrib/pdfmark/pdfroff.sh
contrib/pdfmark/spdf.tmac
contrib/pic2graph/pic2graph.1.man [new file with mode: 0644]
contrib/pic2graph/pic2graph.am [moved from Makefile.man with 51% similarity]
contrib/pic2graph/pic2graph.man [deleted file]
contrib/pic2graph/pic2graph.sh
doc/Makefile.in [deleted file]
doc/Makefile.sub [deleted file]
doc/automake.mom [new file with mode: 0644]
doc/doc.am [new file with mode: 0644]
doc/fdl.texi
doc/fixinfo.sh
doc/gnu.eps
doc/grnexmpl.me
doc/groff.info [deleted file]
doc/groff.info-1 [deleted file]
doc/groff.info-2 [deleted file]
doc/groff.texi [moved from doc/groff.texinfo with 96% similarity]
doc/meintro.me
doc/meintro_fr.me
doc/meref.me
doc/pic.ms
doc/texinfo.tex [deleted file]
doc/webpage.ms
font/devX100-12/Makefile.sub [deleted file]
font/devX100-12/devX100-12.am [new file with mode: 0644]
font/devX100/devX100.am [new file with mode: 0644]
font/devX75-12/Makefile.sub [deleted file]
font/devX75-12/devX75-12.am [new file with mode: 0644]
font/devX75/devX75.am [new file with mode: 0644]
font/devascii/Makefile.sub [deleted file]
font/devascii/devascii.am [new file with mode: 0644]
font/devcp1047/Makefile.sub [deleted file]
font/devcp1047/devcp1047.am [new file with mode: 0644]
font/devdvi/CWI
font/devdvi/Makefile.sub [deleted file]
font/devdvi/devdvi.am [new file with mode: 0644]
font/devdvi/generate/Makefile
font/devhtml/Makefile.sub [deleted file]
font/devhtml/devhtml.am [new file with mode: 0644]
font/devlatin1/Makefile.sub [deleted file]
font/devlatin1/devlatin1.am [new file with mode: 0644]
font/devlbp/Makefile.sub [deleted file]
font/devlbp/devlbp.am [new file with mode: 0644]
font/devlj4/Makefile.sub [deleted file]
font/devlj4/devlj4.am [new file with mode: 0644]
font/devlj4/generate/Makefile
font/devlj4/generate/special.awk
font/devlj4/generate/text.map
font/devpdf/Foundry.in
font/devpdf/Makefile.sub [deleted file]
font/devpdf/devpdf.am [new file with mode: 0644]
font/devpdf/util/BuildFoundries.pl
font/devps/Makefile.sub [deleted file]
font/devps/devps.am [new file with mode: 0644]
font/devps/generate/Makefile
font/devps/generate/make-zapfdr
font/devps/generate/symbol.sed
font/devps/prologue.ps
font/devutf8/Makefile.sub [deleted file]
font/devutf8/NOTES
font/devutf8/devutf8.am [new file with mode: 0644]
font/scripts/gendesc.sh [new file with mode: 0755]
font/scripts/genfonts.sh [new file with mode: 0755]
font/scripts/scripts.am [new file with mode: 0644]
font/util/make-Rproto
gendef.sh
gnulib_m4/00gnulib.m4 [moved from src/libs/gnulib/m4/00gnulib.m4 with 97% similarity]
gnulib_m4/absolute-header.m4 [new file with mode: 0644]
gnulib_m4/alloca.m4 [new file with mode: 0644]
gnulib_m4/asm-underscore.m4 [new file with mode: 0644]
gnulib_m4/errno_h.m4 [new file with mode: 0644]
gnulib_m4/exponentd.m4 [new file with mode: 0644]
gnulib_m4/exponentf.m4 [new file with mode: 0644]
gnulib_m4/exponentl.m4 [new file with mode: 0644]
gnulib_m4/extensions.m4 [moved from src/libs/gnulib/m4/extensions.m4 with 72% similarity]
gnulib_m4/extern-inline.m4 [new file with mode: 0644]
gnulib_m4/float_h.m4 [new file with mode: 0644]
gnulib_m4/fpieee.m4 [new file with mode: 0644]
gnulib_m4/fprintf-posix.m4 [new file with mode: 0644]
gnulib_m4/frexp.m4 [new file with mode: 0644]
gnulib_m4/frexpl.m4 [new file with mode: 0644]
gnulib_m4/fseterr.m4 [new file with mode: 0644]
gnulib_m4/gnulib-cache.m4 [moved from src/libs/gnulib/m4/gnulib-cache.m4 with 66% similarity]
gnulib_m4/gnulib-common.m4 [moved from src/libs/gnulib/m4/gnulib-common.m4 with 68% similarity]
gnulib_m4/gnulib-comp.m4 [moved from src/libs/gnulib/m4/gnulib-comp.m4 with 60% similarity]
gnulib_m4/host-cpu-c-abi.m4 [new file with mode: 0644]
gnulib_m4/include_next.m4 [moved from src/libs/gnulib/m4/include_next.m4 with 75% similarity]
gnulib_m4/intmax_t.m4 [new file with mode: 0644]
gnulib_m4/inttypes_h.m4 [new file with mode: 0644]
gnulib_m4/isnand.m4 [new file with mode: 0644]
gnulib_m4/isnanf.m4 [new file with mode: 0644]
gnulib_m4/isnanl.m4 [new file with mode: 0644]
gnulib_m4/ldexpl.m4 [new file with mode: 0644]
gnulib_m4/libunistring-base.m4 [moved from src/libs/gnulib/m4/libunistring-base.m4 with 99% similarity]
gnulib_m4/limits-h.m4 [new file with mode: 0644]
gnulib_m4/longlong.m4 [moved from src/libs/gnulib/m4/longlong.m4 with 98% similarity]
gnulib_m4/math_h.m4 [new file with mode: 0644]
gnulib_m4/memchr.m4 [new file with mode: 0644]
gnulib_m4/mmap-anon.m4 [new file with mode: 0644]
gnulib_m4/multiarch.m4 [moved from src/libs/gnulib/m4/multiarch.m4 with 97% similarity]
gnulib_m4/nocrash.m4 [new file with mode: 0644]
gnulib_m4/non-recursive-gnulib-prefix-hack.m4 [new file with mode: 0644]
gnulib_m4/off_t.m4 [new file with mode: 0644]
gnulib_m4/printf-frexp.m4 [new file with mode: 0644]
gnulib_m4/printf-frexpl.m4 [new file with mode: 0644]
gnulib_m4/printf.m4 [new file with mode: 0644]
gnulib_m4/signbit.m4 [new file with mode: 0644]
gnulib_m4/size_max.m4 [new file with mode: 0644]
gnulib_m4/snprintf.m4 [new file with mode: 0644]
gnulib_m4/ssize_t.m4 [new file with mode: 0644]
gnulib_m4/stddef_h.m4 [moved from src/libs/gnulib/m4/stddef_h.m4 with 57% similarity]
gnulib_m4/stdint.m4 [moved from src/libs/gnulib/m4/stdint.m4 with 81% similarity]
gnulib_m4/stdint_h.m4 [new file with mode: 0644]
gnulib_m4/stdio_h.m4 [new file with mode: 0644]
gnulib_m4/string_h.m4 [new file with mode: 0644]
gnulib_m4/sys_types_h.m4 [new file with mode: 0644]
gnulib_m4/vasnprintf.m4 [new file with mode: 0644]
gnulib_m4/vsnprintf.m4 [new file with mode: 0644]
gnulib_m4/warn-on-use.m4 [moved from src/libs/gnulib/m4/warn-on-use.m4 with 54% similarity]
gnulib_m4/wchar_h.m4 [moved from src/libs/gnulib/m4/wchar_h.m4 with 85% similarity]
gnulib_m4/wchar_t.m4 [moved from src/libs/gnulib/m4/wchar_t.m4 with 92% similarity]
gnulib_m4/wctype_h.m4 [moved from src/libs/gnulib/m4/wctype_h.m4 with 96% similarity]
gnulib_m4/wcwidth.m4 [moved from src/libs/gnulib/m4/wcwidth.m4 with 72% similarity]
gnulib_m4/wint_t.m4 [new file with mode: 0644]
gnulib_m4/xsize.m4 [new file with mode: 0644]
lib/alloca.in.h [new file with mode: 0644]
lib/arg-nonnull.h [moved from src/libs/gnulib/build-aux/snippet/arg-nonnull.h with 67% similarity]
lib/asnprintf.c [new file with mode: 0644]
lib/c++defs.h [moved from src/libs/gnulib/build-aux/snippet/c++defs.h with 69% similarity]
lib/errno.in.h [new file with mode: 0644]
lib/float+.h [new file with mode: 0644]
lib/float.c [new file with mode: 0644]
lib/float.in.h [new file with mode: 0644]
lib/fprintf.c [new file with mode: 0644]
lib/fpucw.h [new file with mode: 0644]
lib/frexp.c [new file with mode: 0644]
lib/frexpl.c [new file with mode: 0644]
lib/fseterr.c [new file with mode: 0644]
lib/fseterr.h [new file with mode: 0644]
lib/gnulib.mk [new file with mode: 0644]
lib/isnan.c [new file with mode: 0644]
lib/isnand-nolibm.h [new file with mode: 0644]
lib/isnand.c [new file with mode: 0644]
lib/isnanf-nolibm.h [new file with mode: 0644]
lib/isnanf.c [new file with mode: 0644]
lib/isnanl-nolibm.h [new file with mode: 0644]
lib/isnanl.c [new file with mode: 0644]
lib/itold.c [new file with mode: 0644]
lib/limits.in.h [new file with mode: 0644]
lib/localcharset.c [new file with mode: 0644]
lib/localcharset.h [new file with mode: 0644]
lib/math.c [new file with mode: 0644]
lib/math.in.h [new file with mode: 0644]
lib/memchr.c [new file with mode: 0644]
lib/memchr.valgrind [new file with mode: 0644]
lib/printf-args.c [new file with mode: 0644]
lib/printf-args.h [new file with mode: 0644]
lib/printf-frexp.c [new file with mode: 0644]
lib/printf-frexp.h [new file with mode: 0644]
lib/printf-frexpl.c [new file with mode: 0644]
lib/printf-frexpl.h [new file with mode: 0644]
lib/printf-parse.c [new file with mode: 0644]
lib/printf-parse.h [new file with mode: 0644]
lib/signbitd.c [new file with mode: 0644]
lib/signbitf.c [new file with mode: 0644]
lib/signbitl.c [new file with mode: 0644]
lib/size_max.h [new file with mode: 0644]
lib/snprintf.c [new file with mode: 0644]
lib/stddef.in.h [moved from src/libs/gnulib/lib/stddef.in.h with 59% similarity]
lib/stdint.in.h [new file with mode: 0644]
lib/stdio-impl.h [new file with mode: 0644]
lib/stdio.in.h [new file with mode: 0644]
lib/streq.h [moved from src/libs/gnulib/lib/streq.h with 91% similarity]
lib/string.in.h [new file with mode: 0644]
lib/sys_types.in.h [new file with mode: 0644]
lib/unitypes.in.h [moved from src/libs/gnulib/lib/unitypes.in.h with 79% similarity]
lib/uniwidth.in.h [moved from src/libs/gnulib/lib/uniwidth.in.h with 84% similarity]
lib/uniwidth/cjk.h [moved from src/libs/gnulib/lib/uniwidth/cjk.h with 79% similarity]
lib/uniwidth/width.c [moved from src/libs/gnulib/lib/uniwidth/width.c with 66% similarity]
lib/vasnprintf.c [new file with mode: 0644]
lib/vasnprintf.h [new file with mode: 0644]
lib/verify.h [moved from src/libs/gnulib/lib/verify.h with 95% similarity]
lib/vsnprintf.c [new file with mode: 0644]
lib/warn-on-use.h [moved from src/libs/gnulib/build-aux/snippet/warn-on-use.h with 59% similarity]
lib/wchar.in.h [moved from src/libs/gnulib/lib/wchar.in.h with 92% similarity]
lib/wctype-h.c [moved from src/libs/gnulib/lib/wctype-h.c with 100% similarity]
lib/wctype.in.h [moved from src/libs/gnulib/lib/wctype.in.h with 91% similarity]
lib/wcwidth.c [moved from src/libs/gnulib/lib/wcwidth.c with 59% similarity]
lib/xsize.c [new file with mode: 0644]
lib/xsize.h [new file with mode: 0644]
m4/codeset.m4
m4/fcntl-o.m4
m4/glibc21.m4
m4/groff.m4
m4/iconv.m4
m4/lib-ld.m4
m4/lib-link.m4
m4/lib-prefix.m4
m4/localcharset.m4
makevarescape.sed [new file with mode: 0644]
man/Makefile.sub [deleted file]
man/ditroff.7.man [new file with mode: 0644]
man/ditroff.man [deleted file]
man/groff.7.man [moved from man/groff.man with 81% similarity]
man/groff_char.7.man [moved from man/groff_char.man with 74% similarity]
man/groff_diff.7.man [moved from man/groff_diff.man with 88% similarity]
man/groff_font.5.man [moved from man/groff_font.man with 79% similarity]
man/groff_out.5.man [moved from man/groff_out.man with 86% similarity]
man/groff_tmac.5.man [moved from man/groff_tmac.man with 75% similarity]
man/man.am [new file with mode: 0644]
man/roff.7.man [moved from man/roff.man with 68% similarity]
mdate.pl [new file with mode: 0755]
mdate.sh [deleted file]
mkinstalldirs [deleted file]
src/devices/grodvi/Makefile.sub [deleted file]
src/devices/grodvi/dvi.cpp
src/devices/grodvi/grodvi.1.man [moved from src/devices/grodvi/grodvi.man with 61% similarity]
src/devices/grodvi/grodvi.am [moved from Makefile.init with 61% similarity]
src/devices/grohtml/Makefile.sub [deleted file]
src/devices/grohtml/grohtml.1.man [moved from src/devices/grohtml/grohtml.man with 63% similarity]
src/devices/grohtml/grohtml.am [new file with mode: 0644]
src/devices/grohtml/html-table.cpp
src/devices/grohtml/html-table.h
src/devices/grohtml/html-text.cpp
src/devices/grohtml/html-text.h
src/devices/grohtml/html.h
src/devices/grohtml/output.cpp
src/devices/grohtml/post-html.cpp
src/devices/grolbp/Makefile.sub [deleted file]
src/devices/grolbp/charset.h
src/devices/grolbp/grolbp.1.man [new file with mode: 0644]
src/devices/grolbp/grolbp.am [new file with mode: 0644]
src/devices/grolbp/grolbp.man [deleted file]
src/devices/grolbp/lbp.cpp
src/devices/grolbp/lbp.h
src/devices/grolj4/Makefile.sub [deleted file]
src/devices/grolj4/grolj4.1.man [new file with mode: 0644]
src/devices/grolj4/grolj4.am [new file with mode: 0644]
src/devices/grolj4/grolj4.man [deleted file]
src/devices/grolj4/lj4.cpp
src/devices/grolj4/lj4_font.5.man [new file with mode: 0644]
src/devices/grolj4/lj4_font.man [deleted file]
src/devices/gropdf/Makefile.sub [deleted file]
src/devices/gropdf/gropdf.1.man [moved from src/devices/gropdf/gropdf.man with 56% similarity]
src/devices/gropdf/gropdf.am [new file with mode: 0644]
src/devices/gropdf/gropdf.pl
src/devices/gropdf/pdfmom.1.man [new file with mode: 0644]
src/devices/gropdf/pdfmom.man [deleted file]
src/devices/gropdf/pdfmom.pl
src/devices/grops/Makefile.sub [deleted file]
src/devices/grops/grops.1.man [moved from src/devices/grops/grops.man with 82% similarity]
src/devices/grops/grops.am [new file with mode: 0644]
src/devices/grops/ps.cpp
src/devices/grops/ps.h
src/devices/grops/psfig.diff
src/devices/grops/psrm.cpp
src/devices/grotty/Makefile.sub [deleted file]
src/devices/grotty/grotty.1.man [moved from src/devices/grotty/grotty.man with 66% similarity]
src/devices/grotty/grotty.am [new file with mode: 0644]
src/devices/grotty/tty.cpp
src/devices/xditview/ChangeLog
src/devices/xditview/Dvi.c
src/devices/xditview/DviP.h
src/devices/xditview/Makefile.sub [deleted file]
src/devices/xditview/README
src/devices/xditview/TODO
src/devices/xditview/ad2c
src/devices/xditview/device.c
src/devices/xditview/draw.c
src/devices/xditview/draw.h [new file with mode: 0644]
src/devices/xditview/font.c
src/devices/xditview/font.h [new file with mode: 0644]
src/devices/xditview/gxditview.1.man [moved from src/devices/xditview/gxditview.man with 70% similarity]
src/devices/xditview/lex.c
src/devices/xditview/lex.h [new file with mode: 0644]
src/devices/xditview/page.c
src/devices/xditview/page.h [new file with mode: 0644]
src/devices/xditview/parse.c
src/devices/xditview/parse.h [new file with mode: 0644]
src/devices/xditview/xditview.am [new file with mode: 0644]
src/include/DviChar.h
src/include/assert.h
src/include/cmap.h
src/include/color.h
src/include/config.hin
src/include/cset.h
src/include/curtime.h [new file with mode: 0644]
src/include/device.h
src/include/driver.h
src/include/errarg.h
src/include/error.h
src/include/font.h
src/include/geometry.h
src/include/getopt.h
src/include/getopt_int.h
src/include/gettext.h
src/include/html-strings.h
src/include/htmlhint.h
src/include/include.am [moved from src/include/Makefile.sub with 56% similarity]
src/include/index.h
src/include/itable.h
src/include/lf.h [new file with mode: 0644]
src/include/lib.h
src/include/localcharset.h
src/include/macropath.h
src/include/nonposix.h
src/include/paper.h
src/include/posix.h
src/include/printer.h
src/include/ptable.h
src/include/refid.h
src/include/relocate.h
src/include/search.h
src/include/searchpath.h
src/include/stringclass.h
src/include/symbol.h
src/include/unicode.h
src/libs/gnulib/Makefile.am [deleted file]
src/libs/gnulib/Makefile.in [deleted file]
src/libs/gnulib/aclocal.m4 [deleted file]
src/libs/gnulib/build-aux/config.guess [deleted file]
src/libs/gnulib/build-aux/config.sub [deleted file]
src/libs/gnulib/build-aux/install-sh [deleted file]
src/libs/gnulib/build-aux/missing [deleted file]
src/libs/gnulib/config.h.in [deleted file]
src/libs/gnulib/configure [deleted file]
src/libs/gnulib/configure.ac [deleted file]
src/libs/gnulib/lib/Makefile.am [deleted file]
src/libs/gnulib/lib/Makefile.in [deleted file]
src/libs/gnulib/lib/config.charset [deleted file]
src/libs/gnulib/lib/intprops.h [deleted file]
src/libs/gnulib/lib/inttypes.in.h [deleted file]
src/libs/gnulib/lib/localcharset.c [deleted file]
src/libs/gnulib/lib/localcharset.h [deleted file]
src/libs/gnulib/lib/ref-add.sin [deleted file]
src/libs/gnulib/lib/ref-del.sin [deleted file]
src/libs/gnulib/lib/stdbool.in.h [deleted file]
src/libs/gnulib/lib/stdint.in.h [deleted file]
src/libs/gnulib/m4/Makefile.am [deleted file]
src/libs/gnulib/m4/Makefile.in [deleted file]
src/libs/gnulib/m4/codeset.m4 [deleted file]
src/libs/gnulib/m4/configmake.m4 [deleted file]
src/libs/gnulib/m4/extern-inline.m4 [deleted file]
src/libs/gnulib/m4/fcntl-o.m4 [deleted file]
src/libs/gnulib/m4/glibc21.m4 [deleted file]
src/libs/gnulib/m4/gnulib-tool.m4 [deleted file]
src/libs/gnulib/m4/inttypes-pri.m4 [deleted file]
src/libs/gnulib/m4/inttypes.m4 [deleted file]
src/libs/gnulib/m4/localcharset.m4 [deleted file]
src/libs/gnulib/m4/onceonly.m4 [deleted file]
src/libs/gnulib/m4/stdbool.m4 [deleted file]
src/libs/gnulib/m4/wint_t.m4 [deleted file]
src/libs/libbib/Makefile.sub [deleted file]
src/libs/libbib/common.cpp
src/libs/libbib/index.cpp
src/libs/libbib/libbib.am [moved from font/devX75/Makefile.sub with 51% similarity]
src/libs/libbib/linear.cpp
src/libs/libbib/map.c
src/libs/libbib/search.cpp
src/libs/libdriver/Makefile.sub [deleted file]
src/libs/libdriver/input.cpp
src/libs/libdriver/libdriver.am [moved from src/preproc/preconv/Makefile.sub with 55% similarity]
src/libs/libdriver/printer.cpp
src/libs/libgroff/Makefile.sub [deleted file]
src/libs/libgroff/assert.cpp
src/libs/libgroff/change_lf.cpp
src/libs/libgroff/cmap.cpp
src/libs/libgroff/color.cpp
src/libs/libgroff/config.charset
src/libs/libgroff/cset.cpp
src/libs/libgroff/curtime.cpp [new file with mode: 0644]
src/libs/libgroff/device.cpp
src/libs/libgroff/errarg.cpp
src/libs/libgroff/error.cpp
src/libs/libgroff/fatal.cpp
src/libs/libgroff/filename.cpp
src/libs/libgroff/fmod.c
src/libs/libgroff/font.cpp
src/libs/libgroff/fontfile.cpp
src/libs/libgroff/geometry.cpp
src/libs/libgroff/getcwd.c
src/libs/libgroff/getopt.c
src/libs/libgroff/getopt1.c
src/libs/libgroff/glyphuni.cpp
src/libs/libgroff/htmlhint.cpp
src/libs/libgroff/hypot.cpp
src/libs/libgroff/iftoa.c
src/libs/libgroff/invalid.cpp
src/libs/libgroff/itoa.c
src/libs/libgroff/lf.cpp
src/libs/libgroff/libgroff.am [new file with mode: 0644]
src/libs/libgroff/lineno.cpp
src/libs/libgroff/localcharset.c
src/libs/libgroff/macropath.cpp
src/libs/libgroff/make-uniuni
src/libs/libgroff/matherr.c
src/libs/libgroff/maxfilename.cpp
src/libs/libgroff/maxpathname.cpp
src/libs/libgroff/mksdir.cpp
src/libs/libgroff/mkstemp.cpp
src/libs/libgroff/nametoindex.cpp
src/libs/libgroff/new.cpp
src/libs/libgroff/paper.cpp
src/libs/libgroff/prime.cpp
src/libs/libgroff/progname.c
src/libs/libgroff/ptable.cpp
src/libs/libgroff/putenv.c
src/libs/libgroff/quotearg.c
src/libs/libgroff/ref-add.sin
src/libs/libgroff/ref-del.sin
src/libs/libgroff/relocatable.h
src/libs/libgroff/relocate.cpp
src/libs/libgroff/searchpath.cpp
src/libs/libgroff/spawnvp.c
src/libs/libgroff/strcasecmp.c
src/libs/libgroff/strerror.c
src/libs/libgroff/string.cpp
src/libs/libgroff/strncasecmp.c
src/libs/libgroff/strsave.cpp
src/libs/libgroff/strtol.c
src/libs/libgroff/symbol.cpp
src/libs/libgroff/tmpfile.cpp
src/libs/libgroff/tmpname.cpp
src/libs/libgroff/unicode.cpp
src/libs/libgroff/uniglyph.cpp
src/libs/libgroff/uniuni.cpp
src/libs/libxutil/DviChar.c
src/libs/libxutil/Makefile.sub [deleted file]
src/libs/libxutil/XFontName.c
src/libs/libxutil/libxutil.am [moved from src/utils/addftinfo/Makefile.sub with 51% similarity]
src/libs/libxutil/xmalloc.c
src/libs/snprintf/snprintf.c [deleted file]
src/preproc/eqn/Makefile.sub [deleted file]
src/preproc/eqn/TODO
src/preproc/eqn/box.cpp
src/preproc/eqn/box.h
src/preproc/eqn/delim.cpp
src/preproc/eqn/eqn.1.man [moved from src/preproc/eqn/eqn.man with 80% similarity]
src/preproc/eqn/eqn.am [new file with mode: 0644]
src/preproc/eqn/eqn.cpp
src/preproc/eqn/eqn.h
src/preproc/eqn/eqn.hpp [moved from src/preproc/eqn/eqn_tab.h with 88% similarity]
src/preproc/eqn/eqn.ypp [moved from src/preproc/eqn/eqn.y with 96% similarity]
src/preproc/eqn/lex.cpp
src/preproc/eqn/limit.cpp
src/preproc/eqn/list.cpp
src/preproc/eqn/main.cpp
src/preproc/eqn/mark.cpp
src/preproc/eqn/neqn.1.man [new file with mode: 0644]
src/preproc/eqn/neqn.man [deleted file]
src/preproc/eqn/neqn.sh
src/preproc/eqn/other.cpp
src/preproc/eqn/over.cpp
src/preproc/eqn/pbox.h
src/preproc/eqn/pile.cpp
src/preproc/eqn/script.cpp
src/preproc/eqn/special.cpp
src/preproc/eqn/sqrt.cpp
src/preproc/eqn/text.cpp
src/preproc/grn/Makefile.sub [deleted file]
src/preproc/grn/README
src/preproc/grn/grn.1.man [moved from src/preproc/grn/grn.man with 74% similarity]
src/preproc/grn/grn.am [new file with mode: 0644]
src/preproc/grn/hdb.cpp
src/preproc/grn/hgraph.cpp
src/preproc/grn/hpoint.cpp
src/preproc/grn/main.cpp
src/preproc/html/Makefile.sub [deleted file]
src/preproc/html/html.am [new file with mode: 0644]
src/preproc/html/pre-html.cpp
src/preproc/html/pre-html.h
src/preproc/html/pushback.cpp
src/preproc/html/pushback.h
src/preproc/pic/Makefile.sub [deleted file]
src/preproc/pic/TODO
src/preproc/pic/common.cpp
src/preproc/pic/common.h
src/preproc/pic/lex.cpp
src/preproc/pic/main.cpp
src/preproc/pic/object.cpp
src/preproc/pic/object.h
src/preproc/pic/output.h
src/preproc/pic/pic.1.man [moved from src/preproc/pic/pic.man with 81% similarity]
src/preproc/pic/pic.am [new file with mode: 0644]
src/preproc/pic/pic.cpp
src/preproc/pic/pic.h
src/preproc/pic/pic.hpp [moved from src/preproc/pic/pic_tab.h with 92% similarity]
src/preproc/pic/pic.ypp [moved from src/preproc/pic/pic.y with 96% similarity]
src/preproc/pic/position.h
src/preproc/pic/tex.cpp
src/preproc/pic/text.h
src/preproc/pic/troff.cpp
src/preproc/preconv/preconv.1.man [moved from src/preproc/preconv/preconv.man with 64% similarity]
src/preproc/preconv/preconv.am [new file with mode: 0644]
src/preproc/preconv/preconv.cpp
src/preproc/refer/Makefile.sub [deleted file]
src/preproc/refer/TODO
src/preproc/refer/command.cpp
src/preproc/refer/command.h
src/preproc/refer/label.cpp
src/preproc/refer/label.hpp [new file with mode: 0644]
src/preproc/refer/label.ypp [moved from src/preproc/refer/label.y with 98% similarity]
src/preproc/refer/ref.cpp
src/preproc/refer/ref.h
src/preproc/refer/refer.1.man [moved from src/preproc/refer/refer.man with 86% similarity]
src/preproc/refer/refer.am [new file with mode: 0644]
src/preproc/refer/refer.cpp
src/preproc/refer/refer.h
src/preproc/refer/token.cpp
src/preproc/refer/token.h
src/preproc/soelim/Makefile.sub [deleted file]
src/preproc/soelim/soelim.1.man [moved from src/preproc/soelim/soelim.man with 66% similarity]
src/preproc/soelim/soelim.am [new file with mode: 0644]
src/preproc/soelim/soelim.cpp
src/preproc/tbl/Makefile.sub [deleted file]
src/preproc/tbl/main.cpp
src/preproc/tbl/table.cpp
src/preproc/tbl/table.h
src/preproc/tbl/tbl.1.man [moved from src/preproc/tbl/tbl.man with 81% similarity]
src/preproc/tbl/tbl.am [new file with mode: 0644]
src/roff/groff/Makefile.sub [deleted file]
src/roff/groff/groff.1.man [moved from src/roff/groff/groff.man with 73% similarity]
src/roff/groff/groff.am [new file with mode: 0644]
src/roff/groff/groff.cpp
src/roff/groff/pipeline.c
src/roff/groff/pipeline.h
src/roff/grog/Makefile.sub [deleted file]
src/roff/grog/grog.1.man [moved from src/roff/grog/grog.man with 57% similarity]
src/roff/grog/grog.am [new file with mode: 0644]
src/roff/grog/grog.pl
src/roff/grog/subs.pl
src/roff/nroff/Makefile.sub [deleted file]
src/roff/nroff/nroff.1.man [new file with mode: 0644]
src/roff/nroff/nroff.am [new file with mode: 0644]
src/roff/nroff/nroff.man [deleted file]
src/roff/nroff/nroff.sh
src/roff/troff/Makefile.sub [deleted file]
src/roff/troff/TODO
src/roff/troff/charinfo.h
src/roff/troff/column.cpp
src/roff/troff/dictionary.cpp
src/roff/troff/dictionary.h
src/roff/troff/div.cpp
src/roff/troff/div.h
src/roff/troff/env.cpp
src/roff/troff/env.h
src/roff/troff/hvunits.h
src/roff/troff/input.cpp
src/roff/troff/input.h
src/roff/troff/mtsm.cpp
src/roff/troff/mtsm.h
src/roff/troff/node.cpp
src/roff/troff/node.h
src/roff/troff/number.cpp
src/roff/troff/reg.cpp
src/roff/troff/reg.h
src/roff/troff/request.h
src/roff/troff/token.h
src/roff/troff/troff.1.man [moved from src/roff/troff/troff.man with 70% similarity]
src/roff/troff/troff.am [new file with mode: 0644]
src/roff/troff/troff.h
src/utils/addftinfo/addftinfo.1.man [new file with mode: 0644]
src/utils/addftinfo/addftinfo.am [new file with mode: 0644]
src/utils/addftinfo/addftinfo.cpp
src/utils/addftinfo/addftinfo.man [deleted file]
src/utils/addftinfo/guess.cpp
src/utils/addftinfo/guess.h
src/utils/afmtodit/Makefile.sub [deleted file]
src/utils/afmtodit/afmtodit.1.man [new file with mode: 0644]
src/utils/afmtodit/afmtodit.am [new file with mode: 0644]
src/utils/afmtodit/afmtodit.man [deleted file]
src/utils/afmtodit/afmtodit.pl
src/utils/afmtodit/afmtodit.tables
src/utils/afmtodit/make-afmtodit-tables
src/utils/hpftodit/Makefile.sub [deleted file]
src/utils/hpftodit/hpftodit.1.man [new file with mode: 0644]
src/utils/hpftodit/hpftodit.am [moved from font/devX100/Makefile.sub with 50% similarity]
src/utils/hpftodit/hpftodit.cpp
src/utils/hpftodit/hpftodit.man [deleted file]
src/utils/hpftodit/hpuni.cpp
src/utils/indxbib/Makefile.sub [deleted file]
src/utils/indxbib/indxbib.1.man [moved from src/utils/indxbib/indxbib.man with 57% similarity]
src/utils/indxbib/indxbib.am [new file with mode: 0644]
src/utils/indxbib/indxbib.cpp
src/utils/indxbib/signal.c
src/utils/lkbib/Makefile.sub [deleted file]
src/utils/lkbib/lkbib.1.man [new file with mode: 0644]
src/utils/lkbib/lkbib.am [moved from arch/misc/Makefile.sub with 60% similarity]
src/utils/lkbib/lkbib.cpp
src/utils/lkbib/lkbib.man [deleted file]
src/utils/lookbib/Makefile.sub [deleted file]
src/utils/lookbib/lookbib.1.man [new file with mode: 0644]
src/utils/lookbib/lookbib.am [moved from Makefile.dev with 61% similarity]
src/utils/lookbib/lookbib.cpp
src/utils/lookbib/lookbib.man [deleted file]
src/utils/pfbtops/Makefile.sub [deleted file]
src/utils/pfbtops/pfbtops.1.man [new file with mode: 0644]
src/utils/pfbtops/pfbtops.am [new file with mode: 0644]
src/utils/pfbtops/pfbtops.c
src/utils/pfbtops/pfbtops.man [deleted file]
src/utils/tfmtodit/Makefile.sub [deleted file]
src/utils/tfmtodit/tfmtodit.1.man [moved from src/utils/tfmtodit/tfmtodit.man with 57% similarity]
src/utils/tfmtodit/tfmtodit.am [moved from Makefile with 61% similarity]
src/utils/tfmtodit/tfmtodit.cpp
src/utils/xtotroff/Makefile.in [deleted file]
src/utils/xtotroff/Makefile.sub [deleted file]
src/utils/xtotroff/xtotroff.1.man [new file with mode: 0644]
src/utils/xtotroff/xtotroff.am [new file with mode: 0644]
src/utils/xtotroff/xtotroff.c
src/utils/xtotroff/xtotroff.man [deleted file]
stamp-h.in [deleted file]
test-groff.in
tmac/62bit.tmac
tmac/LOCALIZATION
tmac/Makefile.sub [deleted file]
tmac/TESTING-HINTS
tmac/TODO
tmac/X.tmac
tmac/Xps.tmac
tmac/a4.tmac
tmac/an-ext.tmac
tmac/an-old.tmac
tmac/an.tmac
tmac/andoc.tmac
tmac/composite.tmac
tmac/cp1047.tmac
tmac/cs.tmac
tmac/de.tmac
tmac/den.tmac
tmac/devtag.tmac
tmac/doc-common-u [moved from tmac/doc-common with 87% similarity]
tmac/doc-ditroff-u [moved from tmac/doc-ditroff with 79% similarity]
tmac/doc-nroff-u [moved from tmac/doc-nroff with 70% similarity]
tmac/doc-old.tmac-u [moved from tmac/doc-old.tmac with 96% similarity]
tmac/doc-syms-u [moved from tmac/doc-syms with 92% similarity]
tmac/doc.tmac-u [moved from tmac/doc.tmac with 91% similarity]
tmac/dvi.tmac
tmac/e.tmac-u [moved from tmac/e.tmac with 86% similarity]
tmac/fr.tmac
tmac/groff_man.7.man [new file with mode: 0644]
tmac/groff_man.man [deleted file]
tmac/groff_mdoc.7.man [moved from tmac/groff_mdoc.man with 96% similarity]
tmac/groff_me.7.man [new file with mode: 0644]
tmac/groff_me.man [deleted file]
tmac/groff_ms.7.man [moved from tmac/groff_ms.man with 73% similarity]
tmac/groff_trace.7.man [moved from tmac/groff_trace.man with 60% similarity]
tmac/groff_www.7.man [moved from tmac/groff_www.man with 72% similarity]
tmac/hyphen.cs
tmac/hyphen.den
tmac/hyphen.det
tmac/hyphen.fr
tmac/hyphen.sv
tmac/hyphen.us
tmac/hyphenex.cs
tmac/hyphenex.det [deleted file]
tmac/hyphenex.pl
tmac/hyphenex.us
tmac/ja.tmac
tmac/papersize.tmac
tmac/pdf.tmac
tmac/pdfpic.tmac [new file with mode: 0644]
tmac/pspic.tmac
tmac/ptx.tmac
tmac/refer-me.tmac
tmac/refer-ms.tmac
tmac/refer.tmac
tmac/s.tmac
tmac/strip.sed
tmac/sv.tmac
tmac/tmac.am [new file with mode: 0644]
tmac/trace.tmac
tmac/trans.tmac
tmac/troffrc
tmac/tty-char.tmac
tmac/tty.tmac
tmac/www.tmac.in [moved from tmac/www.tmac with 93% similarity]
tmac/zh.tmac [new file with mode: 0644]

diff --git a/.tarball-version b/.tarball-version
new file mode 100644 (file)
index 0000000..2a0ba77
--- /dev/null
@@ -0,0 +1 @@
+1.22.4
diff --git a/.version b/.version
new file mode 100644 (file)
index 0000000..2a0ba77
--- /dev/null
+++ b/.version
@@ -0,0 +1 @@
+1.22.4
diff --git a/AUTHORS b/AUTHORS
new file mode 100644 (file)
index 0000000..e69de29
index 3da7964..0a24646 100644 (file)
@@ -1,76 +1,76 @@
-# Copyright (C) 1999-201 Free Software Foundation, Inc.
+# Copyright (C) 1999-2018 Free Software Foundation, Inc.
 #
-# This file is part of `groff'.
+# This file is part of 'groff'.
 #
-# `groff' is free software; you can redistribute it and/or modify it
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
 # the Free Software Foundation, either version 2 of the License, or
 # (at your option) any later version.
 #
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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
+# along with this program.  If not, see
 # <http://www.gnu.org/licenses/gpl-2.0.html>.
 
 
                           Groff Bug Report
 
-Please read the PROBLEMS file before sending in a bug report.
+Please read the PROBLEMS file before submitting a bug report.
 
 Please fill in all fields, even if you think they are not relevant.
 
-Please delete the text in brackets before sending it in.
+Please delete the text in brackets before submitting it.
 
 Please report separate bugs separately.
 
-Send the completed form to bug-groff@gnu.org
+Place the completed form in a new bug report at
+http://savannah.gnu.org/bugs/?group=groff.
 
 GROFF VERSION:
-[The version of groff you are using.  For example, `1.05']
+[The version of groff you are using.  For example, '1.22.4']
 
 MACHINE:
-[The machine you are using.  For example, `Sun SPARCstation 2']
+[The machine you are using.  For example, 'Sun SPARCstation 2']
 
 OS:
-[The operating system you are using.  For example, `SunOS 4.1.1']
+[The operating system you are using.  For example, 'SunOS 4.1.1']
 
 COMPILER:
-[The compiler you are used to compile groff.  For example, `g++ 1.40.3']
+[The compiler you used to compile groff.  For example, 'g++ 1.40.3']
 
 INPUT FILES:
 [Include all the files necessary to reproduce the problem that are not
 part of the standard groff distribution.  This includes font
 description files, DESC files and macro files (with the exception of
-the -ms and -mm macros: we have them).  Send them as a shell archive or
-as a uuencoded, compressed tar file.
+the -ms and -mm macros: we have them).  Attach them to the bug report.
 
 It's easier for us if you can provide an example that doesn't depend on
 any macro package, but obviously if you're reporting a problem with a
 macro package that won't be possible.  Also a short example is more
 convenient than a long one, but don't worry if you can't find a short
-example.  Don't say something like ``any file that X'': Always send a
+example.  Don't say something like "any file that X": Always include a
 definite example.]
 
 COMMAND LINE:
 [The command line that we should run in order to observe the bug.  For
-example, `gtroff -Tps bug.tr'.  If the command line uses -ms or -mm,
+example, 'gtroff -Tps bug.tr'.  If the command line uses -ms or -mm,
 say whether these refer to the groff versions or the Unix versions of
 the macros.]
 
 DESCRIPTION OF INCORRECT BEHAVIOUR:
-[What goes wrong when that command line is run?  For example, `gtroff
-gets a segmentation fault', or `The output looks bad because the bar
+[What goes wrong when that command line is run?  For example, 'gtroff
+gets a segmentation fault', or 'The output looks bad because the bar
 over the x is too long and is too far over to the left.'  If you get an
 error message, include it here without modification: Don't edit it to
 make it more readable.]
 
 SUGGESTED FIX [optional]:
-[If you can suggest a fix for the problem, include a context diff here. 
-But don't delay sending in a bug report in the hope of finding a fix. 
+[If you can suggest a fix for the problem, include a context diff here.
+But don't delay submitting a bug report in the hope of finding a fix.
 Guesses about the cause of the bug are not usually helpful.]
 
 ##### Emacs settings
index e881f17..835d26c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
+2018-12-18 Bertrand Garrigues <bertrand.garrigues@laposte.net>
+
+       Fix 'dvi' and 'pdf' texinfo doc generation.
+
+       GNU make has a built-in variable 'TEXI2DVI' but it is not the case
+       of all 'make' implementations, which causes 'make doc' to fail
+       with an unclear message although 'texi2dvi' is available.  Also,
+       'texi2dvi' is invoked inconditionnally.
+
+       * m4/groff.m4 (GROFF_TEXI2DVI): new macro to detect properly the
+       presence of 'texi2dvi'.
+
+       * configure.ac: use 'GROFF_TEXI2DVI' and define automake conditional
+       'HAVE_TEXI2DVI'.
+
+       * doc/doc.am:
+       - Define TEXI2DVI to 'texi2dvi'.
+       - Print an error message if 'texi2dvi' is not available.
+
+2018-12-08 Bertrand Garrigues <bertrand.garrigues@laposte.net>
+
+       Install texinfo doc on 'make install-pdf' and 'make install-html'
+
+       * doc/doc.am:
+       - Use automake 'install-pdf-local' and 'install-html-local' rules
+       to install groff.pdf and groff.html
+       - New rules 'uninstall_pdf' and 'uninstall_html'.
+       - Use $(RM) instead of 'rm'.
+       - Don't try to build doc if 'BUILD_INFODOC' is not set.
+       * INSTALL.REPO: document texinfo build and installation.
+
+2018-12-10 Ingo Schwarze <schwarze@openbsd.org>
+
+       * Makefile.am: Remove the unused variables PREFIXMAN5 and PREFIXMAN7.
+
+       They caused installation failures on Solaris 9.
+
+2018-12-08 Bertrand Garrigues <bertrand.garrigues@laposte.net>
+
+       Remove gnulib's hypot module.
+
+       The removal of 'GROFF_NEED_DECLARATION([hypot])' in 'configure.ac'
+       was correct as the test was buggy, but there is no need to use
+       gnulib's hypot module as previously we did not need to provide a
+       replacement function.
+
+       * bootstrap.conf: do it.
+
+2018-12-08  Deri James  <deri@chuzzlewit.myzen.co.uk>
+
+       Problem running gropdf on big endian (Sparc)
+
+       * src/devices/gropdf/gropdf.pl: Prior to perl v5.9 the 'L<'
+       template for 'unpack' was unavailable. Solaris 10 uses v5.8.4
+       so safer to use the template 'V' rather than 'L<'.
+
+2018-12-08 Bertrand Garrigues <bertrand.garrigues@laposte.net>
+
+       Use gnulib's 'hypot' module.
+
+       In 'configure.ac', the macro call
+       'GROFF_NEED_DECLARATION([hypot])' checks whether the function
+       'hypot' is correctly declared in 'math.h', but the test is buggy
+       and may yields false results.
+
+       * bootsrap.conf: add 'hypot' module.
+
+       * configure.ac: Remove GROFF_NEED_DECLARATION([hypot]).
+
+       * src/libs/libgroff/hypot.cpp: remove declaration of hypot.
+
+2018-12-07  Deri James  <deri@chuzzlewit.myzen.co.uk>
+
+       Problem running gropdf on big endian (Sparc)
+
+       * src/devices/gropdf/gropdf.pl: When loading a binary (.pfb)
+       font for embedding always use little endian to unpack chunk
+       headers.
+
+2018-12-05  Bertrand Garrigues <bertrand.garrigues@laposte.net>
+
+       Skip mom tests if needed config is missing.
+
+       * contrib/mom/examples/test-mom.sh.in: exit 77 if URW fonts are
+       not available.
+
+       * contrib/mom/mom.am: distribute inconditionnally test-mom.in.
+
+       * m4/groff.m4 (GROFF_URW_FONTS): check if 'awk' and 'gs' are
+       available, and replace non-portable 'grep' command by awk script.
+
+2018-12-01  Colin Watson  <cjwatson@debian.org>
+
+       Fix error handling in tests of mom examples
+
+       * contrib/mom/examples/test-mom.sh.in (check_number_pages): Correct
+       error message.
+       (check_has_images): Correct shell syntax error.
+
+2018-11-26  Bertrand Garrigues <bertrand.garrigues@laposte.net>
+
+       Document .sp behaviour in -me doc -- French translation
+
+       * doc/meintro_fr.me: translation of commit
+       7a83f7f5003e24f020306f09f4d497e04e82cb14.
+
+       Fixes bug https://savannah.gnu.org/bugs/?54958.
+
+2018-11-24  Bertrand Garrigues <bertrand.garrigues@laposte.net>
+
+       Fix tarball generation: script 'makevarescape.sed' was missing.
+
+       * Makefile.am (EXTRA_DIST): add it.
+
+2018-11-24  Bertrand Garrigues <bertrand.garrigues@laposte.net>
+
+       Add automatic tests on mom examples
+
+       * m4/groff.m4 (GROFF_PDFTOOLS): check presence of some pdf tools.
+       * configure.ac: use 'GROFF_PDFTOOLS', add new AM conditional.
+       * contrib/mom/examples/test-mom.sh.in: new file that use 'pdfinfo'
+       and 'pdfimages' to make some basic checks on mom examples.
+
+2018-11-21  G. Branden Robinson <g.branden.robinson@gmail.com>
+
+       tmac/sv.tmac: Set Swedish hyphenation flags to 32.
+
+       This permits hyphenation after the first character but continues
+       prohibiting it before the last character of a word, in
+       congruence with the TeX-based hyphenation patterns we use.
+
+       Fixes <https://savannah.gnu.org/bugs/index.php?55066>.
+
+2018-11-19  Bertrand Garrigues <bertrand.garrigues@laposte.net>
+
+       Fix build on environment where /etc/papersize contains comments
+
+       Issue introduced on commit efea81c75f831ddc6717c2ef25556e0f49d1f679.
+
+       * m4/groff.m4 (GROFF_PAGE): remove comments and get the 1st string
+       of '/etc/papersize'.
+
+2018-11-12  G. Branden Robinson <g.branden.robinson@gmail.com>
+
+       * m4/groff.m4 (GROFF_PAGE): Try /etc/papersize first.
+
+       Fixes <https://savannah.gnu.org/bugs/index.php?53271>.
+
+2018-11-12  G. Branden Robinson <g.branden.robinson@gmail.com>
+
+       * bootstrap.conf: Bump Autoconf dependency to 2.68.  We need it
+       to support our bug-reporting URL, which contains a "?".
+       Strictly, Autoconf 2.65 is fine, but 2.66 and 2.67 broke this.
+       Even 2.69 is over 6 years old now.
+
+       See <https://savannah.gnu.org/support/?107450>.
+
+2018-11-12  G. Branden Robinson <g.branden.robinson@gmail.com>
+
+       * m4/groff.m4 (GROFF_PAGE): Quote shell variables that are under
+       external control and may contain embedded whitespace.  A test
+       shows that our configure script is now robust in this way, but
+       our Automake files are not, starting with
+       src/utils/afmtodit/afmtodit.am.
+
+2018-11-12  G. Branden Robinson <g.branden.robinson@gmail.com>
+
+       * makevarescape.sed:
+         - Escape plain spaces and double-quotes (ASCII 32 and 34) so
+           that bad things don't happen if they are embedded in a Make
+           variable expanded in a man page @THUS@ _and_ given as an
+           argument to a macro that distinguishes its parameters, such
+           as .IR.
+         - Add discretionary breaks after groups of slashes not
+           preceded by a space; e.g., transform "/usr/bin/groff" into
+           "/usr/\:bin/\:groff".  Will also work on URLs
+           {"https://\:example.com/\:page.html"} in case we need that.
+
+2018-11-11  G. Branden Robinson <g.branden.robinson@gmail.com>
+
+       Undocument Werner and Ted as groff maintainers.
+
+       * README:
+       * doc/pic.ms:
+       * src/roff/grog/grog.pl:
+       * src/roff/nroff/nroff.sh: Werner (and Ted) retired from the
+       role some time ago and Bertrand Garrigues has stepped up; see
+       https://lists.gnu.org/archive/html/groff/2017-09/msg00048.html.
+       I'll let him document his maintainer status as and where he
+       prefers.
+
+2018-11-11  G. Branden Robinson <g.branden.robinson@gmail.com>
+
+       Stop spelling "Unix" as "UNIX".
+
+       Per AT&T Bell Labs veterans Doug McIlroy and Meg McRoberts,
+       spelling "Unix" in full caps was a contrivance insisted upon by
+       AT&T lawyers, and not a practice used in the Unix manuals
+       themselves or the Bell Labs Technical Journal.  See
+         https://lists.gnu.org/archive/html/groff/2015-01/msg00026.html
+       and
+         https://lists.gnu.org/archive/html/groff/2015-01/msg00029.html
+       for support.
+
+       There are instances I did _not_ change; they may require further
+       review.
+               ChangeLog.*
+               NEWS
+                       One reference relevant to mdoc; see below.
+               doc/meintro{,_fr}.me
+                       These documents also give the small caps
+                       treatment to groff, troff, and nroff, suggesting
+                       a separate changeset.
+               src/preproc/pic/pic.ypp
+                       Contains a comment referring to "Compaq Tru64
+                       UNIX"; not worth the candle IMO.
+               tmac/s.tmac:
+                       {ms macro package} Leaving UX macro definition
+                       alone until/unless it can be established that
+                       this doesn't change the rendering of historical
+                       documents in an objectionable way.
+               tmac/doc-syms-u:
+               tmac/doc-old.tmac-u:
+               tmac/doc-common-u:
+               tmac/groff_mdoc.7.man:
+                       {mdoc macro package} Similar; mdoc defines many
+                       strings that spit out "UNIX" (albeit not with a
+                       font size change).
+
+       * MORE.STUFF:
+       * NEWS:
+       * README.MinGW:
+       * contrib/groffer/README:
+       * contrib/pdfmark/pdfmark.ms:
+       * contrib/pdfmark/pdfroff.1.man:
+       * doc/groff.texi:
+       * doc/webpage.ms:
+       * m4/groff.m4:
+       * man/groff_diff.7.man:
+       * man/groff_tmac.5.man:
+       * man/roff.7.man:
+       * src/preproc/html/pre-html.cpp:
+       * src/roff/troff/troff.1.man: Change "UNIX" to "Unix",
+       discarding markup as necessary.
+
+2018-11-10  G. Branden Robinson <g.branden.robinson@gmail.com>
+
+       man pages: Escape interpolated Make variables.
+
+       * makevarescape.sed: Transform - to \-, ~ to \(ti, and so forth,
+       {with an extra layer of backslashes--see below} so that Makefile
+       variables containing ASCII characters that do not represent
+       themselves literally in *roff (see groff_char(7)) are correctly
+       interpolated into man page text.
+
+       * Makefile.am (.man): Transform Makefile variables with the
+       above script when interpolating them into man page text.
+
+       Note that while the script, combined with this target, will
+       transform ` to \(ga, including grave accents in Makefile
+       variables is likely to fail when the shell lexes the argument to
+       echo within the old-style command substitution ``.  Testing
+       shows that grave accents should work[1] if POSIX-style command
+       substitution $() is done instead.  However, $() is less
+       portable.  (Triple-escaping grave accents \\\` inside the
+       interpolated Makefile variable will work, but is not attempted
+       at present.)
+
+       Note also that the amount of backslash-escaping in the sed
+       script is excessive (and incorrect) for normal purposes, but
+       required here because a command substitution is being nested
+       inside yet another invocation of sed.
+
+       {1} For this target; no assurances about the good behavior of
+       unusual characters in Makefile variables in other aspects of the
+       groff build are offered.
+
+       Fixes <https://savannah.gnu.org/bugs/index.php?55004>.
+
+2018-11-06  G. Branden Robinson <g.branden.robinson@gmail.com>
+
+       * src/utils/lookbib/lookbib.cpp: Doesn't make much sense to mark
+       Version_string as a C extern if you're just going to hide it in
+       a throwaway scope again.  Remove braces, exposing it.
+
+       "lookbib -v" now reports a version number, instead of "(null)".
+
+       Fixes <https://savannah.gnu.org/bugs/index.php?54972>.
+
+2018-11-06  G. Branden Robinson <g.branden.robinson@gmail.com>
+
+       * src/libs/libgroff/error.cpp (do_error_with_file_and_line):
+       If:
+         a program name is known;
+       but
+         no file is being processed or the line number is negative,
+       then there was no space between the program name (with colon),
+       and the succeeding diagnostic message.
+
+       Example: lookbib:fatal error: no databases
+
+       Fixes <https://savannah.gnu.org/bugs/index.php?54971>.
+
+2018-11-05  G. Branden Robinson <g.branden.robinson@gmail.com>
+
+       Make strip.sed operate only if given permission.
+
+       * tmac/strip.sed: Do nothing whatsoever to any input file that
+       lacks a line matching "%beginstrip%".  This implements a
+       contract between the macro file writer and the stripper script
+       {roff input is not parseable with crude weaponry like regular
+       expressions}.  In practice, most of the changes performed by the
+       script were already in a block enforcing this.  My changes:
+       - Stop unconditionally inserting a roff comment noting the
+         reader of stripping at line 2.  Instead, replace the line
+         matching "%beginstrip%" with this comment if and only if it
+         is present.
+       - Stop deleting lines containing only the empty request if
+         they occur before "%beginstrip%".
+       - Tweak the wording of the roff comment.
+       - Remove comment within the sed script; see
+         https://lists.gnu.org/archive/html/groff/2017-11/msg00057.html
+         and the sed section of "Limitations of Usual Tools" in the
+         GNU Autoconf Manual.
+
+       Invalidates <https://savannah.gnu.org/bugs/index.php?53784>.
+
+2018-11-04  G. Branden Robinson <g.branden.robinson@gmail.com>
+
+       * tmac/an-old.tmac: When emitting diagnostics, report the name
+       of the macro file complaining, and the name and line number of
+       the input file at the time of trouble.  Thanks to Bjarni Ingi
+       Gislason for part of the patch.
+
+       Fixes <https://savannah.gnu.org/bugs/?54175> and continues the
+       long process of fixing <https://savannah.gnu.org/bugs/?52463>.
+
+2018-11-04  G. Branden Robinson <g.branden.robinson@gmail.com>
+
+       * doc/meintro_fr.me: Add encoding hint to top of file so preconv
+       works correctly even if the build environment's encoding is not
+       UTF-8.  Adapted from Bjarni Ingi Gislason's patch.  Also add
+       long-form Emacs coding declaration at end of file.  Vim's
+       auto-detection seems to be fine, so did not update its modeline.
+
+       Fixes <https://savannah.gnu.org/bugs/index.php?54530>.
+
+2018-11-04  G. Branden Robinson <g.branden.robinson@gmail.com>
+
+       * tmac/groff_man.7.man: Reorganize and largely rewrite to more
+       precisely document the macro package's behavior and to be more
+       helpful and accessible to man page writers who may never read
+       any other groff documentation.
+
+2018-10-25  G. Branden Robinson <g.branden.robinson@gmail.com>
+
+       Clarify meaning of \p escape.  Also make more explicit that line
+       adjustment for the .brp request and \p escape depends on the
+       current adjustment mode.
+
+       * doc/groff.texi: Clarify that \p has effect at the next word
+       boundary.  Thanks to Dave <barx> for pointing out the issue and
+       providing elucidating language.
+
+       * man/groff.7.man: Similar, but terser.
+
+       Fixes https://savannah.gnu.org/bugs/index.php?54894.
+
+2018-10-04  Deri James  <deri@chuzzlewit.myzen.co.uk>
+
+       Savannah bug # 54812
+
+       * font/devpdf/util/BuildFoundries.pl: If a font is not found
+       report list of paths searched.
+
+       Fix https://savannah.gnu.org/bugs/?54812
+
+2018-10-10  Bertrand Garrigues <bertrand.garrigues@laposte.net>
+
+       Update 'gnulib' submodule.
+
+       * gnulib: now points on dce8759f0f0236a860a3e68b63c5e99cc6f168f9
+       from 'gnulib' repository.  This fixes build error with glibc 2.28
+       (see https://bugzilla.redhat.com/show_bug.cgi?id=1595702).
+
+2018-10-04  Deri James  <deri@chuzzlewit.myzen.co.uk>
+
+       Savannah bug # 54779
+
+       * font/devpdf/Foundry.in: Recent ghostscript changed name
+       used for embedding groff font HNBI
+
+       Fix https://savannah.gnu.org/bugs/?54779
+
+2018-08-27  Ingo Schwarze  <schwarze@openbsd.org>
+
+       * tmac/groff_www.7.man: Do not use .URL, .MTO, .FTP.
+
+2018-08-21  Ingo Schwarze  <schwarze@openbsd.org>
+
+       Improve terminal rendering for a few special characters:
+
+       * tmac/tty.tmac: add \[.j] (dotless j)
+       * tmac/tty-char.tmac: for \[a.], fall back to "."
+       * tmac/tty-char.tmac: add playing card suits
+
+2018-08-16  Ingo Schwarze  <schwarze@openbsd.org>
+
+       * src/preproc/preconv/preconv.1.man: add -D to the SYNOPSIS
+
+2018-08-09  Ingo Schwarze  <schwarze@openbsd.org>
+
+       * Makefile.am: correctly calculate MAJOR_VERSION etc.
+
+2018-06-19  Deri James  <deri@chuzzlewit.myzen.co.uk>
+
+       Fixes to gropdf
+
+       * src/devices/gropdf/gropdf.pl: Make default line width 0.4pt
+       to match grops. Use 'S' operator (stroke) rather than 's' (close
+       and stroke) when Dl command received. Improve switching between
+       text and graphic modes.
+
+2018-07-01 Bertrand Garrigues <bertrand.garrigues@laposte.net>
+
+       [me] paragraph with umlaut incorrectly rendered
+
+       * tmac/e.tmac-u: workaround done by Werner LEMBERG <wl@gnu.org>.
+
+       Fix https://savannah.gnu.org/bugs/?42191
+
+2018-06-19  Deri James  <deri@chuzzlewit.myzen.co.uk>
+
+       Add gropdf new features to NEWS file.
+
+       * NEWS: new features.
+
+2018-05-29  Werner LEMBERG  <wl@gnu.org>
+
+       [dvi] Fix glyph map for `cmitt10'.
+
+       Problem reported by Pali Rohár <pali.rohar@gmail.com>.
+
+         http://lists.gnu.org/archive/html/groff/2018-05/msg00088.html
+
+       * font/devdvi/texitt.map: New file.  This is identical to
+       `textt.map' except the dollar glyph, which gets replaced by the
+       pound glyph.
+
+       * font/devdvi/generate/Makefile (CWI): Use `texitt.map'.
+
+       * font/devdvi/CWI: Regenerated.
+
+2018-05-07  G. Branden Robinson <g.branden.robinson@gmail.com>
+
+       Improve diagnostics on bad hyphenation requests.
+
+       * src/roff/troff/env.cpp: Add new HYPHEN_* symbols to anonymous
+       enum.
+
+       * src/roff/troff/env.cpp (hyphenate_request):
+         - Warn about hyphenation request values that are completely
+           out of range.
+         - Report bad hyphenation request value in diagnostic messages.
+
+2018-04-28  G. Branden Robinson <g.branden.robinson@gmail.com>
+
+       grap2graph: Parallelize changes with pic2graph.
+
+       * contrib/grap2graph/grap2graph.sh:
+         - Refactor temp directory handling.
+         - Handle embedded whitespace in temp dir.
+         - Adapt to old convert(1) programs.
+
+       * contrib/grap2graph/grap2graph.1.man: Make editorial/style
+       changes and minor corrections.
+
+2018-04-26  G. Branden Robinson <g.branden.robinson@gmail.com>
+
+       eqn2graph: Remove -unsafe option.
+
+       * contrib/eqn2graph/eqn2graph.sh: Unrecognize "-unsafe" option
+       and eliminate $groff_opts variable.  As far as I can tell, this
+       option had no effect because (1) pic is not run on the input
+       stream (no -p argument to groff); (2) eqn doesn't support
+       "shelling out" as pic does; and (3) there is no way to embed
+       *roff requests inside a sequence of eqn commands.  If I'm wrong,
+       let me know.
+
+       * contrib/eqn2graph/eqn2graph.1.man: Undocument "-unsafe"
+       option.
+
+2018-04-26  G. Branden Robinson <g.branden.robinson@gmail.com>
+
+       eqn2graph: Parallelize changes with pic2graph.
+
+       * contrib/eqn2graph/eqn2graph.sh:
+         - Refactor temp directory handling.
+         - Handle embedded whitespace in temp dir.
+         - Adapt to old convert(1) programs.
+
+       * contrib/eqn2graph/eqn2graph.1.man: Make editorial/style
+       changes and minor corrections.
+
+2018-04-25  G. Branden Robinson <g.branden.robinson@gmail.com>
+
+       pic2graph: Refactor temp directory handling.
+
+       * contrib/pic2graph/pic2graph.sh: Issue a diagnostic and give up
+       if the user's desired temporary directory does not exist.  Also
+       document the Bashism $RANDOM and work around its absence.
+
+2018-04-25  G. Branden Robinson <g.branden.robinson@gmail.com>
+
+       pic2graph: Handle embedded whitespace in temp dir.
+
+       * contrib/pic2graph/pic2graph.sh: Quote shell variables having
+       to do with the temporary directory's location; without
+       quotation, temporary directory names with embedded whitespace
+       are wrongly handled.
+
+2018-04-24  G. Branden Robinson <g.branden.robinson@gmail.com>
+
+       * doc/groff.texi: Bump end of copyright range to 2018.  Werner
+       added substantial text this year about hyphenation.
+
+2018-04-24  G. Branden Robinson <g.branden.robinson@gmail.com>
+
+       Set version to 1.22.4 in the few places that hard-code it.
+
+       * arch/mingw/grap2graph.cmd:
+       * contrib/groffer/version.sh:
+       * doc/groff.texi:
+       * doc/webpage.ms: Bump from 1.22.3 to 1.22.4.
+
+2018-04-24  Deri James  <deri@chuzzlewit.myzen.co.uk>
+
+       Restrict scaling factors to 3dp and better handle CR/LF in import.
+
+       * src/devices/gropdf/gropdf.pl: Restrict scaling factors to 3dp
+       rounded. If pdf imported with pdfpic uses CR/LF line termination
+       ibclude XObject Image, length of stream out by 1.
+
+2018-04-23  G. Branden Robinson <g.branden.robinson@gmail.com>
+
+       man pages: Shorten version footer.
+
+       * **/*.man: Replace "Groff Version" with "groff" in the fourth
+       argument to .TH in all man pages.  This suffices to keep that
+       part of the footer from overrunning the date, even in dirty
+       trees on 80-column terminals.
+
+       Fixes https://savannah.gnu.org/bugs/index.php?53721.
+
+2018-04-23  G. Branden Robinson <g.branden.robinson@gmail.com>
+
+       pic2graph(1): Make editorial/style changes and minor
+       corrections.
+
+2018-04-23  G. Branden Robinson <g.branden.robinson@gmail.com>
+
+       pic2graph: Adapt to old convert(1) programs.
+
+       * contrib/pic2graph/pic2graph.sh: Grep convert's -help output
+       for the string "-trim".  If it is not found, the old method for
+       image trimming documented in pic2graph's man page, "-crop 0x0",
+       is used.  I am motivated by the fact that the warning about this
+       in our man page is very old (10 years or more), and I wanted to
+       get rid of it.
+
+       pic2graph emits a warning when performing this fallback, in the
+       event the ImageMagick and/or GraphicsMagick teams surprise the
+       world again.
+
+       * contrib/pic2graph/pic2graph.1.man: Remove BUGS section, the
+       entire contents of which was dedicated to convert's change in
+       behavior.
+
+2018-04-22  G. Branden Robinson <g.branden.robinson@gmail.com>
+
+       groff_man(7): Expand command synopsis section.
+
+       This section now explains in detail how to write (and read) a
+       command synopsis.
+
+2018-04-12  Deri James  <deri@chuzzlewit.myzen.co.uk>
+
+       Make PDFPIC behave the same whether -Tps or -Tpdf used.
+
+       Previously the -Tpdf version did not cause a break nor position
+       to the line beneath the imported picture, whilst the -Tps
+       version did.
+
+       * tmac/pdfpic.tmac: Corrected behavior.
+
+       * NEWS: Explain the change of behaviour and how to reinstate
+       the previous behaviour using register PDFPIC_NOSPACE or the
+       environment variable GROFF_PDFPIC_NOSPACE.
+
+2018-03-27  Bertrand Garrigues <bertrand.garrigues@laposte.net>
+
+       Define a short version for data installation dir name.
+
+       This is the full version stripped of any characters after the
+       third digit.  Used for installation of font, macro and various
+       data (by default in /usr/local/share/groff).  The various programs
+       and scripts still use the full version from gnulib script
+       'git-version-gen' .
+
+       * configure.ac (SHORT_VERSION): short version definition.
+
+       * Makefile.am: use 'SHORT_VERSION' for 'docdir' and 'datasubdir'
+       definitions.
+
+2018-03-11  Bertrand Garrigues <bertrand.garrigues@laposte.net>
+
+       Remove doc/automake_migration_tests.txt
+
+       Automake migration was completed long time ago and this file is no
+       longer needed.
+
+2018-03-11  Colin Watson  <cjwatson@debian.org>
+
+       Switch to Gnulib implementation of snprintf
+
+       This is more actively maintained, straightforward to integrate now
+       that we have Gnulib integration, and simplifies groff's overall
+       licensing.
+
+       * bootstrap.conf (gnulib_modules): Add `snprintf' and `vsnprintf'.
+       * configure.ac: Remove local checks for `snprintf' and `vsnprintf'.
+       * Makefile.am: Remove various comments related to local checks for
+       `snprintf' and `vsnprintf'.
+       * src/include/lib.h: Remove declarations of `snprintf' and
+       `vsnprintf'.
+       * src/libs/libgroff/libgroff.am (EXTRA_DIST): Remove
+       `src/libs/snprintf/snprintf.c'.
+       * src/libs/snprintf/snprintf.c: Remove.
+
+       * LICENSES: Remove section about `src/libs/snprintf/snprintf.c'.
+       * MANIFEST: Remove entry for `src/libs/libxutil'.
+
+2018-03-09  Deri James  <deri@chuzzlewit.myzen.co.uk>
+
+       PDF must not open in presentation mode.
+
+       * src/devices/gropdf/gropdf.pl: When GROPDF_NOSLIDE=1
+       passed do not set pdf to presentation mode.
+
+2018-03-09  Deri James  <deri@chuzzlewit.myzen.co.uk>
+
+       Allow a "." to signify a missing parameter in .pdftransition
+
+       * src/devices/gropdf/gropdf.1.man: Explain the .pdftransition
+       macro (and underlying '\X' command) accepts a "." to specify
+       a parameter retains its current value.
+
+2018-03-09  Colin Watson  <cjwatson@debian.org>
+
+       man pages: fix incorrect cross-referenced section
+
+       * man/roff.7.man (FILE NAME EXTENSIONS): Correct reference to
+       groff_filenames(5).
+
+2018-03-09  Colin Watson  <cjwatson@debian.org>
+
+       mdate.sh: rewrite in Perl
+
+       groff already requires perl to build.  This version is much shorter
+       and easier to understand than the shell/awk version: we don't have
+       to worry about convincing ls to produce output that we can parse,
+       and we don't have to play games with the way that the same field may
+       contain either the year or the time depending on how old the file
+       is.
+
+       While I'm at it, this version also adds `SOURCE_DATE_EPOCH' support
+       for reproducible builds: when `SOURCE_DATE_EPOCH' is set, files are
+       considered to have been last modified at that time.
+
+       * mdate.sh: Rewrite in Perl, moving to ...
+       * mdate.pl: ... this new file.
+       * Makefile.am (EXTRA_DIST, .man): Update references.
+
+2018-03-09  Colin Watson  <cjwatson@debian.org>
+
+       Remove #! lines from non-executable files
+
+       These are always invoked by the build system (either in-tree or via
+       the installed Makefiles) using the necessary program, so the #!
+       lines were unnecessary.  They were harmless except that they caused
+       Debian's `lintian` tool to complain about installed non-executable
+       scripts.
+
+       * font/devlj4/generate/special.awk: Remove #! line.
+       * font/devps/generate/symbol.sed: Likewise.
+
+2018-03-09  Colin Watson  <cjwatson@debian.org>
+
+       doc: stop generating W3C validation icons
+
+       Debian's `lintian' tool says:
+
+         These badges may be displayed to tell readers that care has been
+         taken to make a page compliant with W3C standards.  Unfortunately,
+         downloading the image from www.w3.org might expose the reader's IP
+         address to potential tracking.
+
+       I think the risk is a small one, but I also don't think the badges
+       are especially valuable, so it doesn't seem like much to ask to just
+       drop them at least for groff's own documentation.
+
+       * doc/doc.am (.ms.html, doc/pic.html): Remove `-P-V' option.
+
+2018-03-01  Deri James  <deri@chuzzlewit.myzen.co.uk>
+
+       Place pdf in presentation mode if new commands used.
+
+       * src/devices/gropdf/gropdf: The new commands which
+       control page transitions should result in the pdf being
+       opened in presentation mode.
+
+2018-03-02  Werner LEMBERG  <wl@gnu.org>
+
+       Hyphenation exceptions in pattern files now obey `.hy' (#53196).
+
+       * src/roff/troff/env.cpp (hyphen_trie::read_patterns_file): Mark
+       `\hyphenation' entries with a trailing space.
+       (hyphen_trie::insert_hyphenation): Updated.
+       (hyphenate): Make `\hyphenation' entries obey `.hy' restrictions.
+
+       * doc/groff.texi (.hy): Updated.
+
+2018-03-01  Werner LEMBERG  <wl@gnu.org>
+
+       Adjust `.hy' values.
+
+       In most cases hyphenation constraints were too strict.  The now
+       selected values reflect the parameters used for the generation of
+       the (TeX) hyphenation patterns.
+
+       * tmac/an-old.tmac, tmac/cs.tmac, tmac/de.tmac, tmac/doc-common-u,
+       tmac/e.tmac-u, tmac/fr.tmac, tmac/s.tmac, tmac/sv.tmac: Fix `.hy',
+       `\n[HY]', and `\n[doc-hyphen-flags]' values.
+
+       * doc/groff.texi, tmac/groff_man.7.man, tmac/groff_ms.7.man, NEWS:
+       Updated.
+
+2018-03-01  Werner LEMBERG  <wl@gnu.org>
+
+       Fix some problems related to hyphenation.
+
+       Introduce values 16 (allow hyphenation before last character) and 32
+       (allow hyphenation after first character) to the `hy' request
+       (#48904).
+
+       Really fix problem reported in issue #48904.
+
+       Fix #53243, which is a regression introduced in 2016-09-09.
+
+       * src/roff/troff/env.cpp (HYPHEN_LAST_CHAR, HYPHEN_FIRST_CHAR): New
+       enumeration values.
+       (hyphenate_request): Check for contradicting values.
+       (environment::hyphenate_line): Fix minimum word length considered
+       for hyphenation.
+       (environment::print_env): Updated.
+       (hyphenate): Fix and extend logic.  The original patch to handle
+       #48904 was bad.
+
+       * doc/groff.texi, man/groff_diff.7.man, NEWS: Updated.
+
+2018-03-01  Deri James  <deri@chuzzlewit.myzen.co.uk>
+
+       Add page transitions to pdfs created with gropdf.
+
+       * src/devices/gropdf.pl: Handle new '\X' commands to support page
+       transitions in presentation mode pdfs. These commands are a subset
+       of the commands used in present.tmac allowing slideshows to be
+       directly produced from -Tpdf without using postscript -> gpresent.pl
+       -> ghostscript.
+
+       * tmac/pdf.tmac: New macros '.pdfpause' and '.pdftransition' to
+       support page transitions.
+
+       * src/devices/gropdf.1.man: Document the '\X' commands supported.
+
+2018-03-01  Werner LEMBERG  <wl@gnu.org>
+
+       Use $(AM_V_GEN) and $(AM_V_P) to silence even more file generation.
+
+       * font/devpdf/devpdf.am (BuildFoundries, DESC, Foundry,
+       build_font_files): Do it.
+
+2018-02-28  Werner LEMBERG  <wl@gnu.org>
+
+       Use $(GROFF_V) to silence documentation creation.
+
+       * Makefile.am (GROFF_V): Define.
+
+       * doc/doc.am (.me.txt, .me.ps, .ms.html, .ms.txt, .ms.ps, pic.html,
+       webpage.html): Use $(GROFF_V).
+
+2018-02-28  Werner LEMBERG  <wl@gnu.org>
+
+       Use $(AM_V_GEN) to silence file generation.
+
+       * Makefile.am (.man), contrib/eqn2graph/eqn2graph.am (eqn2graph),
+       contrib/grap2graph/grap2graph.am (grap2graph), contrib/pic2graph.am
+       (pic2graph), src/devices/gropdf/gropdf.am (gropdf, pdfmom),
+       src/preproc/eqn/eqn.am (neqn), src/roff/grog/grog.am (grog),
+       src/roff/nroff/nroff.am (nroff), src/utils/afmtodit/afmtodit.am
+       (afmtodit), font/devascii/devascii.am (DEVASCIIFONTSFILES, DESC),
+       font/devcp1047/devcp1047.am (DEVCP1047FONTSFILES, DESC),
+       font/devhtml/devhtml.am (DEVHTMLFONTSFILES, DESC),
+       font/devlatin1/devlatin1.am (DEVLATIN1FONTSFILES, DESC),
+       font/devutf8/devutf8.am (DEVUTF8FONTSFILES, DESC),
+       font/devps/devps.am (DESC, prologue, zapfdr.pfa, symbolsl.pfa),
+       font/devdvi/devdvi.am (DESC), font/devlbp/devlbp.am (DESC),
+       font/devlj4/devlj4.am (DESC): Do it.
+
+2018-02-28  Werner LEMBERG  <wl@gnu.org>
+
+       * configure.ac: Activate silent Makefile rules.
+
+2018-02-28  Werner LEMBERG  <wl@gnu.org>
+
+       Minor compilation warnings.
+
+       * src/devices/xditview/draw.c: Don't declare `MaxFontPosition'.
+
+       * src/roff/troff/input.cpp (psbb_locator::context_args): Avoid
+       shadowing of `buf'.
+
+2018-02-28  Werner LEMBERG  <wl@gnu.org>
+
+       * src/roff/troff/env.cpp: s/HYPHEN_/HYPHEN_NOT/ for clarification.
+
+2018-02-26  Bertrand Garrigues <bertrand.garrigues@laposte.net>
+
+       Update installation doc.
+
+       * INSTALL.REPO: mention that 'pkg-config' is a dependency.
+
+       * INSTALL.extra: add dependency 'makeinfo' and optional
+       dependencies 'pkg-config' and 'uchardet'.
+
+       * TESTS: move to doc/automake_migration_tests.txt
+
+       * INSTALL.gen: remove, this file is redundant with the 'INSTALL'
+       file from gnulib.
+
+2018-02-02  Bertrand Garrigues <bertrand.garrigues@laposte.net>
+
+       Update 'gnulib' submodule.
+
+       * gnulib: now points on cf56f8f618c48cfadd2499ced58574633d12f129
+       from 'gnulib' repository.
+
+2018-02-02  Bertrand Garrigues <bertrand.garrigues@laposte.net>
+
+       Use gnulib script 'git-version-gen' to define groff's version
+
+       * bootstrap.conf: add 'git-version-gen' script.
+
+       * configure.ac: suppress 'GROFF_VERSION_STRING' and replace it by
+       the script.  If the current commit corresponds to a tag, then the
+       version is simply the tag name.  Otherwise the version has the
+       format: <tag>-<nb_commits_from_latest_tag>-<commit sha1>.  The
+       version is now stored in '.version'.
+
+       * REVISION: removed.
+
+       * VERSION: removed.
+
+       * Makefile.am: define 'MAJOR_VERSION', 'MINOR_VERSION' and
+       'REVISION'.
+
+       * src/libs/libgroff/libgroff.am: use 'MAJOR_VERSION',
+       'MINOR_VERSION' and 'REVISION', add dependency on '.version'.
+
+       * src/roff/troff/troff.am: ditto.
+
+       * contrib/mom/om.tmac-u (short_revision): new string that extracts
+       the first digit of the revision, to be used when checking groff
+       version.
+
+2018-01-18  Deri James  <deri@chuzzlewit.myzen.co.uk>
+
+       On reflection using an array for Filter is not optimal.
+
+       * src/devices/gropdf.pl: revert single line from commit
+       18fd1fd0bf05eb9a5ba0d2be1a655a044662a8bf.
+
+2018-01-17  Deri James  <deri@chuzzlewit.myzen.co.uk>
+
+       All values should be 3 decimals
+
+       * src/devices/gropdf.pl: for values approaching zero values
+       in the for 0.nnnnnnE-nn could be written, not valid syntax for
+       PDF. Make all values rounded to 3 decimals, becomes 0.000.
+
+       Also changed stream Filter dictionary entry to an array.
+
+2018-01-14  Bertrand Garrigues <bertrand.garrigues@laposte.net>
+
+       Fix tarball generation ('make distcheck'  failed)
+
+       * src/devices/xditview/xditview.am: add .h created by commit
+       382ab4af269a1dea422c8f9bb5c67a065d026deb to EXTRA_DIST
+
+       * contrib/mm/mm.am: restore distribution of files removed by
+       commit 445bf58765b759546e238a235651eb0bf5b34325.
+
+2018-01-13  Ingo Schwarze <schwarze@openbsd.org>
+
+       Makefile.am: Re-add -F and -M flags needed to build out of src.
+
+2018-01-13  Ingo Schwarze <schwarze@openbsd.org>
+
+       [mdoc]: rewrite the implementation of the .Lk macro
+
+       * tmac/doc.tmac-u (Lk): Rewrite.
+
+       The old implementation was written before the big mdoc
+       rewrite for groff-1.17.  In contrast to most other macros,
+       it was never updated to use the new techniques.
+       This new implementation makes .Lk callable, makes trailing
+       punctuation work in the normal way, and makes the style of
+       the implementation consistent with other macros.
+
+       It also removes the feature of automatically switching
+       between in-line and displayed rendering depending on the
+       length of the link because that was inconsistent across
+       output modes and counter-intuitive, resulting in ugly
+       output for many existing real-world manual pages.
+       It now always renders in-line.  Use .D1 Lk where desired.
+
+       Merging http://savannah.gnu.org/bugs/?52849
+       OK wl@gnu, jmc@openbsd, bentley@openbsd
+
+2017-12-14  G. Branden Robinson <g.branden.robinson@gmail.com>
+
+       man pages: Comment compatibility-mode switching.
+
+       The '.do' and '.cp' requests (both groffisms) are some of the
+       more obscure features of groff's own man page corpus.
+       Consequently, they get cargo-culted around, within and outside
+       groff.  Thanks to Werner Lemberg for the discussion, which
+       revealed (to me) that groff ships with compatibility mode on by
+       default on Solaris 10 and 11.
+
+       Fix bug https://savannah.gnu.org/bugs/?52444.
+
+2017-11-30  G. Branden Robinson <g.branden.robinson@gmail.com>
+
+       * src/roff/troff/input.cpp:
+       Make writers to stderr identify themselves.
+
+       * font/devpdf/util/BuildFoundries.pl:
+       Same; also refactor all diagnostics into Notice(), Warn(), and
+       Die() functions, which delegate their common message-printing to
+       Msg().
+
+       Fix part of bug https://savannah.gnu.org/bugs/?52463.
+
+2017-11-21  G. Branden Robinson <g.branden.robinson@gmail.com>
+
+       man pages: Fix compatibility-mode problems.
+
+       * contrib/gperl/gperl.1.man: Use idiomatic .BI macro instead of
+         leading an input line with a font escape followed by a dot,
+         the interpretation of which differs based on compatibility
+         mode.
+
+       * src/preproc/soelim/soelim.1.man: Make .mso request only after
+         compatibility mode is turned off.
+
+2017-11-19  G. Branden Robinson <g.branden.robinson@gmail.com>
+
+       * Makefile.am: Protect arguments to "tr" from globbing.
+
+       Prevents errors from tr during man page generation and possible
+       incorrect program prefixing in those pages if, for example, some
+       doofus has directories called "A", "B", ...  hanging around in
+       the build tree.
+
+2017-11-18  G. Branden Robinson <g.branden.robinson@gmail.com>
+
+       * tmac/groff_mdoc.7.man: Use unstripped symbol names.
+
+       Fix bug https://savannah.gnu.org/bugs/?52442.
+
+2017-11-18  G. Branden Robinson <g.branden.robinson@gmail.com>
+
+       * src/include/.gitignore: Ignore config.hin~ files.
+
+2017-11-18  Bjarni Ingi Gislason <bjarniig@rhi.hi.is>
+
+       test-groff.in: Enable backtraces and all warnings by default.
+
+       Fix bug https://savannah.gnu.org/bugs/?51482.
+
+2017-11-18  G. Branden Robinson <g.branden.robinson@gmail.com>
+
+       * tmac/**: Migrate macro package diagnostics away from `quotes'.
+
+2017-11-15  G. Branden Robinson <g.branden.robinson@gmail.com>
+
+       * src/libs/libgroff/new.cpp: Quieten compiler warning.
+
+       Define sized version of overloaded delete operator.  Duplicate
+       code from unsized delete operator because simply calling through
+       to it provokes another warning, -Wdelete-incomplete.
+
+       Fix rest of https://savannah.gnu.org/bugs/?52335.
+
+2017-11-12  Deri James  <deri@chuzzlewit.myzen.co.uk>
+
+       Better handle glyphs in font positions > 255
+
+       * src/devices/gropdf/gropdf.pl: Improve handling
+       when glyphs above 255 are used.
+
+2017-11-12  Deri James  <deri@chuzzlewit.myzen.co.uk>
+
+       gropdf should load ALL 'download' files
+
+       * src/devices/gropdf/gropdf.pl: only the first 'download' file
+       found was loaded, it should load all found.
+
+2017-11-12  G. Branden Robinson <g.branden.robinson@gmail.com>
+
+       * src/libs/libxutil/DviChar.c: Initialize "buckets" field of
+       structs.
+
+       Resolves missing-field-initializers warnings.
+
+2017-11-12  G. Branden Robinson <g.branden.robinson@gmail.com>
+
+       * tmac/strip.sed: Stop rewriting symbol names.  A substitution
+       originally intended to strip the "doc-" prefix off of mdoc macro
+       and string names unintentionally caught some mom stuff.
+       Harmlessly in this instance, but with potentially surprising
+       future effects.  Remove (only) this substitution per discussion
+       in
+       https://lists.gnu.org/archive/html/groff/2017-11/msg00055.html
+       et sequentia.
+
+2017-11-11  Bjarni Ingi Gislason <bjarniig@rhi.hi.is>
+
+       * src/devices/grolbp/lbp.cpp (lbp_printer::setfillmode): Address
+         misleading indentation warning.
+
+       * src/roff/troff/mtsm.cpp (mtsm::push_state, mtsm::pop_state):
+         Same.  Only flush standard error if we just wrote to it,
+         instead of unconditionally.
+
+       Fix bug https://savannah.gnu.org/bugs/?51483.
+
+2017-11-11  G. Branden Robinson <g.branden.robinson@gmail.com>
+
+       * src/utils/xtotroff/xtotroff.c: Mark private function static.
+
+2017-11-11  G. Branden Robinson <g.branden.robinson@gmail.com>
+
+       * src/libs/libxutil/xmalloc.c: Quieten gcc warning.  Mollify
+       -Wmissing-prototypes for xmalloc() in single-function file.
+
+2017-11-11  G. Branden Robinson <g.branden.robinson@gmail.com>
+
+       gxditview: Migrate extern declarations to headers.
+
+       Also mark some private functions as static.
+
+2017-11-11  Bjarni Ingi Gislason <bjarniig@rhi.hi.is>
+
+       src: Declare function protypes where necessary.
+
+       Fix bug https://savannah.gnu.org/bugs/?51513.
+
+2017-11-10  Bjarni Ingi Gislason <bjarniig@rhi.hi.is>
+
+       mom: Abort early with diagnostic in compatibility mode.
+
+       Fix bug https://savannah.gnu.org/bugs/?52333.
+
+2017-11-10  G. Branden Robinson <g.branden.robinson@gmail.com>
+
+       * contrib/**: Migrate diagnostics away from `quotes'.
+
+2017-11-09  G. Branden Robinson <g.branden.robinson@gmail.com>
+
+       * src/**: Migrate diagnostics away from `these quotes'.
+
+       Fix bug https://savannah.gnu.org/bugs/?52374.
+
+2017-11-07  G. Branden Robinson <g.branden.robinson@gmail.com>
+
+       * tmac/strip.sed: Remove nilpotent capture from address.
+
+2017-11-05  Bertrand Garrigues <bertrand.garrigues@laposte.net>
+
+       `preconv': fix usage of lib `uchardet'.
+
+       * src/preproc/preconv/preconv.cpp (detect_file_encoding): Fix
+       usage of uchardet 0.0.1, which may fail but return an empty string
+       instead of a null pointer, and fix some incorrect error
+       managements that might cause memory leaks.
+
+2017-11-05  G. Branden Robinson <g.branden.robinson@gmail.com>
+
+       * font/devpdf/devpdf.am: Silence warning from grep during clean.
+
+2017-11-04  G. Branden Robinson <g.branden.robinson@gmail.com>
+
+       * Makefile.am: Drop unnecessary -F and -M flags from pdfmom
+       call.
+
+2017-11-02  Bjarni Ingi Gislason <bjarniig@rhi.hi.is>
+
+       man/groff_diff.7.man: Correct the explanation of the request
+       ".itc"--it was backwards.
+
+       Fix bug https://savannah.gnu.org/bugs/?51502.
+
+2017-11-02  Bjarni Ingi Gislason <bjarniig@rhi.hi.is>
+
+       test-groff.in: Recognize additional contrib tmacs.
+
+       Fix bug https://savannah.gnu.org/bugs/?51598.
+
+2017-11-02  G. Branden Robinson <g.branden.robinson@gmail.com>
+
+       * Makefile.am: Force build to generate test-groff script.
+
+2017-11-02  G. Branden Robinson <g.branden.robinson@gmail.com>
+
+       * font/devpdf/devpdf.am: Silence warning from grep during build.
+
+2017-11-02  G. Branden Robinson <g.branden.robinson@gmail.com>
+
+       * doc/doc.am: Fix build of pic.html from clean tree.
+
+2017-11-02  G. Branden Robinson <g.branden.robinson@gmail.com>
+
+       * m4/groff.m4: Kill whitespace in macro diagnostic.
+
+2017-11-01  Bjarni Ingi Gislason <bjarniig@rhi.hi.is>
+
+       src/roff/grog/subs.pl: Fix typo in usage message.
+
+       Fix bug https://savannah.gnu.org/bugs/?51540.
+
+2017-10-28  Bjarni Ingi Gislason <bjarniig@rhi.hi.is>
+
+       m.tmac: Fix some formatting and textual issues.
+       * Protect full stops in strings \*[Letns!{1,2,10,11}].
+       * Remove extraneous whitespace from string \*[Pg_type!1].
+
+       Fix bug https://savannah.gnu.org/bugs/?51610.
+
+2017-10-22  Bjarni Ingi Gislason <bjarniig@rhi.hi.is>
+
+       refer-mm.tmac: Protect full stop in abbreviation of "ed.".
+
+       Fix bug https://savannah.gnu.org/bugs/?51611.
+
+2017-10-22  G. Branden Robinson <g.branden.robinson@gmail.com>
+
+       * src/preproc/html/pre-html.cpp: Fix grammar in usage message.
+       When used attributively, e.g. as an adjectival phrase,
+       "command-line" should be hyphenated.
+
+2017-10-22  Bjarni Ingi Gislason <bjarniig@rhi.hi.is>
+
+       pdfpic: Suppress warning if in compatibility mode.
+
+       Fix bug https://savannah.gnu.org/bugs/?51945.
+
+2017-10-22  Bjarni Ingi Gislason <bjarniig@rhi.hi.is>
+
+       www.tmac: Rename font 'C' to 'CR'; define 'CR'.
+
+       The font name 'C' ('CW') is not a part of groff's fonts.
+
+       Fix bug https://savannah.gnu.org/bugs/?51417.
+       Also see https://savannah.gnu.org/bugs/?51426.
+
+2017-10-04  Bertrand Garrigues <bertrand.garrigues@laposte.net>
+
+       Fix build on MacOS X
+
+       See https://savannah.gnu.org/bugs/?49651
+
+2017-09-11  Bertrand Garrigues <bertrand.garrigues@laposte.net>
+
+       Build from git: Make `configure' fail if `yacc' is not found.
+
+       * m4/groff.m4 (GROFF_PROG_YACC): look for (in this order) `byacc',
+       `bison -y', `yacc'.  Set `YACC' to `missing' is nothing is found
+       and generate an error.  Don't generate an error if build is not
+       done from git as tarball already distribute files generated by
+       `yacc'.
+
+2017-09-02  Bertrand Garrigues <bertrand.garrigues@laposte.net>
+
+       Update `gnulib' submodule with latest version.
+
+       * gnulib: now points on 07a187be7f66d3ced66587405f18205971c762e9
+       from `gnulib' repository.
+
+2017-09-02  Bertrand Garrigues <bertrand.garrigues@laposte.net>
+
+       Fix .gitignore files for in-source build.
+
+       Fix bug https://savannah.gnu.org/bugs/?51415.
+
+2017-09-01  Bertrand Garrigues <bertrand.garrigues@laposte.net>
+
+       Fix build on MacOS X
+
+       * Makefile.am: define `SED' command with LANG and LC_ALL set to C.
+       * contrib/mm/mm.am: use it.
+       * doc/doc.am: Ditto.
+
+       Fix bug https://savannah.gnu.org/bugs/?49649
+
+2017-08-30  Colin Watson <cjwatson@debian.org>
+
+       `BuildFoundries' should not be installed.
+
+       * font/devpdf/devpdf.am: remove installation of generated script
+       `BuildFoundries'.
+
+2017-08-30  Bjarni Ingi Gislason <bjarniig@rhi.hi.is>
+
+       pic2graph.1.man: Fix wrong macro for e-mail addresses.
+
+       Fix bug https://savannah.gnu.org/bugs/?51110.
+
+2017-08-30  Bjarni Ingi Gislason <bjarniig@rhi.hi.is>
+
+       groff_diff(7): Remove a repeated word.
+
+       Fix bug https://savannah.gnu.org/bugs/?51077.
+
+2017-08-30  Bjarni Ingi Gislason <bjarniig@rhi.hi.is>
+
+       groff_tmac(5): Fix double dot before request.
+
+       Fix bug https://savannah.gnu.org/bugs/?51070.
+
+2017-08-28  Bjarni Ingi Gislason <bjarniig@rhi.hi.is>
+
+       groff.texi: remove repeated words.
+
+       Fix bug https://savannah.gnu.org/bugs/?51046.
+
+2017-08-28  Bjarni Ingi Gislason <bjarniig@rhi.hi.is>
+
+       groff_man(7) manual page: Fix explanation of the ".itc" request.
+
+       See bug at https://savannah.gnu.org/bugs/?51043.
+
+2017-08-28  Ingo Schwarze  <schwarze@usta.de>
+
+       groff_man(7) manual page: recommendations for escape sequences.
+
+       See bug at https://savannah.gnu.org/bugs/?51021.
+
+2017-08-28  Ingo Schwarze  <schwarze@usta.de>
+
+       groff_char(7) manual: fix table "7-bit Character Codes"
+
+       See bug at https://savannah.gnu.org/bugs/?51020.
+
+2017-08-28  Bertrand Garrigues <bertrand.garrigues@laposte.net>
+
+       Fix troff.1 misleading definition of -w all.
+
+       See bug at https://savannah.gnu.org/bugs/?47784.  Suggested by Kaz
+       Kylheku <kaz@kylheku.com>.
+
+2017-08-25  Bjarni Ingi Gislason <bjarniig@rhi.hi.is>
+
+       `preconv --version' crashes.
+
+       See bug at: https://savannah.gnu.org/bugs/?51587.
+
+       * src/preproc/preconv/preconv.cpp: Add a missing comma in the
+       argument list of "printf".
+
+2017-08-25  Bjarni Ingi Gislason <bjarniig@rhi.hi.is>
+
+       Fix bug: `.itc' request breaks subsequent `.it' requests.
+
+       See bug at: https://savannah.gnu.org/bugs/?51376.  Using `.itc'
+       lets all later uses of `.it' behave like `.itc', that is,
+       interrupted text line ending with \c is not counted as a separate
+       line.
+
+       * env.cpp: Restore input_trap state to normal when '.it' is
+       called.
+
+2017-08-25  Bjarni Ingi Gislason <bjarniig@rhi.hi.is>
+
+       Fix a part of a virtual (pseudo) structure in "tty.tmac".
+
+       * tmac/tty.tmac: Fix warning:  ".../git/groff/tmac/tty.tmac:19:
+       warning: unbalanced .el request"
+
+2017-08-25  Ingo Schwarze  <schwarze@usta.de>
+
+       `tty-char.tmac': focus on meaning rather than graphical shape
+
+       * tmac/tty-char.tmac: add ASCII renderings for six missing
+       mathematical symbols
+
+2017-08-22  Ingo Schwarze  <schwarze@usta.de>
+
+       `tty-char.tmac': focus on meaning rather than graphical shape
+
+       * tmac/tty-char.tmac: Switch the policy from trying to imitate the
+       characters' graphical shapes, which resulted in unintelligible
+       renderings in many cases, to transliterations conveying the
+       characters' meanings.  One benefit is making these characters
+       usable for portable manual pages.
+
+2017-08-21  Deri James  <deri@chuzzlewit.myzen.co.uk>
+
+       'gropdf' does not correctly load new ghostscript fonts
+
+       See bug at: https://savannah.gnu.org/bugs/?50989. Since ghostscript
+       9.21 the fonts supplied have changed from .pfb to .pfa type (with a
+       raw binary section). These failed to be properly loaded.
+
+       * src/devices/gropdf/gropdf: Changes to handle raw binary section in
+       a .pfa type font.
+
+2017-08-18  Bertrand Garrigues <bertrand.garrigues@laposte.net>
+
+       `pdfmom' man page incorrectly displayed.
+
+       * src/devices/gropdf/pdfmom.1.man: Remove `]' character mistakenly
+       added at the beginning of the file.
+
+2017-08-18  Bertrand Garrigues <bertrand.garrigues@laposte.net>
+
+       Incorrect font name for CBI in Foundry.in.
+
+2017-08-15  Ingo Schwarze  <schwarze@usta.de>
+
+       Fix build if `configure' check for `fprintf-posix' fails.
+
+       See bug at: https://savannah.gnu.org/bugs/?51554.  If tests for
+       posix compliance of fprintf from `gnulib_m4/fprintf-posix.m4'
+       fail, a replacement function of `fprintf' is used.  Consequently,
+       all executables that use this function must link against the
+       gnulib (`libgnu.a').  The bug was introduced by commit
+       fa41eeba06987a12bc0434f8b51896d4618a3997.
+
+       * src/devices/xditview/xditview.am
+       * src/preproc/eqn/eqn.am
+       * src/preproc/pic/pic.am
+       * src/preproc/preconv/preconv.am
+       * src/preproc/refer/refer.am
+       * src/preproc/soelim/soelim.am
+       * src/preproc/tbl/tbl.am
+       * src/utils/addftinfo/addftinfo.am
+       * src/utils/hpftodit/hpftodit.am
+       * src/utils/indxbib/indxbib.am
+       * src/utils/lkbib/lkbib.am
+       * src/utils/lookbib/lookbib.am
+       * src/utils/pfbtops/pfbtops.am
+       * src/utils/tfmtodit/tfmtodit.am
+       * src/utils/xtotroff/xtotroff.am: link against libgnu.a
+
+       * INSTALL.REPO: recommend the autoconf and automake versions used
+       during automake migration rather than the minimum versions.
+
+2017-08-04  Deri James  <deri@chuzzlewit.myzen.co.uk>
+
+       See bug at: https://savannah.gnu.org/bugs/?51568
+
+       * src/devices/gropdf/gropdf: Further 'fix' to handle those octal
+       characters. See comment #5 - thank you Bjarni.
+
+2017-07-31  Deri James  <deri@chuzzlewit.myzen.co.uk>
+
+       See bug at: https://savannah.gnu.org/bugs/?51568
+       
+       * src/devices/gropdf/gropdf: previous 'fix' was too narrow, all
+       '\' characters should be escaped. Also there was an unwanted 
+       interaction with code in routine 'do_t'. Sometimes, do_C, when 
+       the named glyph is mapped to a chr < 32, this is encoded as octal
+       \nnn, so in this case the '\' must not be escaped.
+       
+2017-07-25  Deri James  <deri@chuzzlewit.myzen.co.uk>
+
+       If input text contained string which could be interpreted as
+       escaped octal (\ddd) a pdf viewer would interpret as an octal
+       character.  See bug at: https://savannah.gnu.org/bugs/?51568
+       
+       * src/devices/gropdf/gropdf: protect text which resembles \ddd
+       by escaping with extra '\'.
+       
+2017-07-12  Bertrand Garrigues <bertrand.garrigues@laposte.net>
+
+       Use uchardet library in `preconv' to detect input file encoding
+
+       * m4/groff.m4 (GROFF_UCHARDET): new macro that use pkg-config to
+       check if uchardet library is available and define new option
+       `--with-uchardet':
+       - If `yes' is passed and uchardet is not found, configure fails.
+       - If `no' is passed we don't use uchardet and don't display any
+       warning.
+       - If `auto' (or any other option) is passed of if --with-uchardet
+       is not passed, we use uchardet if available, otherwise the build
+       goes on but a warning is displayed at the end of the configuration
+       phase.
+
+       * configure.ac: use pkg-config and `GROFF_UCHARDET' to detect the
+       presence of uchardet library.
+
+       * src/preproc/preconv/preconv.am: link against uchardet library if
+       available.
+
+       * src/preproc/preconv/preconv.cpp (detect_file_encoding): new
+       function that uses uchardet library to detect input file encoding.
+       (do_file): `detect_file_encoding'.
+
+       * src/preproc/preconv/preconv.1.man: update `preconv'
+       documentation.
+
+       See https://savannah.gnu.org/bugs/?51330
+
+2017-07-12  Bertrand Garrigues <bertrand.garrigues@laposte.net>
+
+       Add gnulib module fprintf-posix
+
+       * bootstrap.conf: do it.
+
+       * Fix compilation in some files that needed inclusion of
+       `config.h'.
+
+       See https://savannah.gnu.org/bugs/?51330
+
+2017-05-09  Bertrand Garrigues <bertrand.garrigues@laposte.net>
+
+       Package `ghostscript' 9.21 renamed some fonts installed in
+       `/usr/share/ghostscript/9.21/Resource/Font', e.g. URWGothicL-Demi
+       renamed to URWGothic-Demi, and droped the installation of URW
+       fonts in `/usr/share/fonts/type1/gsfonts/', breaking font
+       generation in `font/devpdf/util/BuildFoundries.pl'.
+
+       * m4/groff.m4 (GROFF_URW_FONTS_PATH): New option
+       `--with-urw-fonts-dir' to pass a custom path to URW fonts.
+       (GROFF_URW_FONTS): search the presence of URW fonts by checking if
+       file `a010013l.pfb' exists in the paths given by `gs -h', in the
+       default paths used in `Foundry.in' and in the path given with
+       option `--with-urw-fonts-dir'.
+       (GROFF_URW_FONTS_CHECK): print a warning at the end of the
+       configuration phase if no URW fonts were found.
+
+       * configure.ac: call new macros `GROFF_URW_FONTS_PATH',
+       `GROFF_URW_FONTS' and `GROFF_URW_FONTS_CHECK'.
+
+       * font/devpdf/Foundry.in: add new basic fonts names and pass
+       custom URW fonts path `urwfontsdir'.
+
+       * font/devpdf/devpdf.am: subsitute `urwfontsdir' in `Foundry'
+       generation.
+
+       Fixes https://savannah.gnu.org/bugs/?50786
+
+2017-05-04  Deri James  <deri@chuzzlewit.myzen.co.uk>
+
+       Fixes for gropdf
+       
+       * src/devices/gropdf/gropdf.pl: Escape '(' and ')' if
+       used in a bookmark, and ignore relative move 'h' if 
+       followed by absolute move 'H' in groff intermediate output.
+       
+2017-04-29  Ingo Schwarze  <schwarze@usta.de>
+
+       groff_char(7): improve description of ASCII characters
+
+       * man/groff_char.7.man: improve description of ASCII
+       characters that do not render as themselves
+
+       See https://savannah.gnu.org/bugs/?50898
+
+2017-04-28  Osamu Sayama
+
+       lkbib with empty file dumps core
+
+       * src/libs/libbib/index.cpp: Test if argument to malloc(3)
+       is zero.
+
+       See https://savannah.gnu.org/bugs/?48433
+
+2017-04-28  David Gilman
+
+       Typo in groff.texi
+
+       * doc/groff.texi: Dp instead of DP used
+
+       https://savannah.gnu.org/bugs/index.php?42251
+
+2017-04-28  Rich Burridge
+
+       "grops -c a" dumps core
+
+       * src/devices/grops/ps.cpp: conversion specifier %s changed
+       to %1 (errprint() uses special syntax different from
+       printf(3))
+
+       https://savannah.gnu.org/bugs/?42190
+
+2017-04-28  Bjarni Ingi Gislason  <bjarniig@rhi.hi.is>
+
+       Macro "itc" is needed to make escape "\c" useful
+
+       * tmac/an-old.tmac: .it changed to .itc
+
+       https://savannah.gnu.org/bugs/?42907
+
+2017-04-28  Bjarni Ingi Gislason  <bjarniig@rhi.hi.is>
+
+       First italic correction (\,) is absent in macros IR and IB
+
+       * tmac/an-old.tmac: Italic correction added
+
+       https://savannah.gnu.org/bugs/?42906
+
+2017-04-13  Ingo Schwarze  <schwarze@usta.de>
+
+       * tmac/doc.tmac-u: Make .Lk with more than two arguments
+       mdoc(7) conform
+
+       Use the second and following arguments as the link text.
+
+       Do not mark up the following colon with \fI.
+
+       Handle any number of trailing delimiters.
+
+       Problem reported by Anthony Bentley <bentley@openbsd.org>,
+       fixed by Ingo Schwarze <schwarze@usta.de>.
+
+       https://savannah.gnu.org/bugs/?50789
+
+2017-04-12  Werner LEMBERG  <wl@gnu.org>
+
+       Update German hyphenation patterns.
+
+       * tmac/de.tmac: Add more hcode values.
+       No longer use `hyphenex.det'.
+       * tmac/hyphen.den, tmac/hyphen.det: Updated to `dehyph-exptl-0.41'.
+       * tmac/hyphenex.det: Removed, no longer needed.
+       * tmac/tmac.am (TMACNORMALFILES): Updated.
+
+2017-04-10  Ingo Schwarze  <schwarze@usta.de>
+
+       * tmac/doc.tmac-u: Punctuation handling of .Lk fixed
+
+       The implementation of the groff_mdoc(7) .Lk (hyperlink) macro
+       contains code to make sure that the second argument is not
+       punctuation before treating it as a link text, but the test
+       can never lead to the result "punctuation" because the
+       initialization of the global variable doc-width was missing
+       before the call to doc-get-arg-type.  Consequently, even "."
+       was not recognized as punctuation.
+
+       Problem reported by Anthony Bentley <bentley@openbsd.org>,
+       fixed by Ingo Schwarze <schwarze@usta.de>.
+
+       https://savannah.gnu.org/bugs/?50771
+
+2017-04-07  Werner LEMBERG  <wl@gnu.org>
+
+       * tmac/hyphenex.us: Updated to current release from TeXLive.
+
+2017-02-23  Bertrand Garrigues  <bertrand.garrigues@laposte.net>
+
+       * bootstrap: update with latest version from gnulib.
+       * gnulib: update the git submodule with latest version (commit
+       4084b3a1094372b960ce4a97634e08f4538c8bdd from gnulib).
+
+2017-02-18  Colin Watson  <cjwatson@debian.org>
+
+       * src/preproc/eqn/main.cpp: Define EQ and EN if they are not already
+       defined, to appease "groff -wmac".
+       * src/preproc/pic/main.cpp: Likewise for PS and PE.
+
+       Fixes: http://bugs.debian.org/495713
+
+2017-02-16  Ingo Schwarze  <schwarze@usta.de>
+
+       mdoc %T: use typographic quotes
+
+       * tmac/doc.tmac-u: Changed \*[q] to \*[Lq] and \*[Rq]
+
+       Citing Anthony J. Bentley:
+
+       The below patch causes -mdoc to generate typographic quotes
+       around a %T (reference title) instead of straight quotes.
+
+       I also submitted similar diffs to mandoc and heirloom troff
+       (which haven't been committed yet).  It would be nice for
+       the major implementations not to differ here, and the change
+       is trivial. 
+
+       It's worth noting that groff's refer(1) already uses typographic
+       quotes around %T with my -ms documents.
+
+       https://savannah.gnu.org/bugs/?43553
+       http://comments.gmane.org/gmane.comp.tools.mdocml.devel/723 
+       https://github.com/n-t-roff/heirloom-doctools/pull/6
+
+2017-02-16  Ingo Schwarze  <schwarze@usta.de>
+
+       mdoc \*[Lq], \*[Rq]: map to \[lq], \[rq] for all terminal
+       devices
+
+       * tmac/doc-nroff-u: .ds Lq \[lq], .ds Rq \[rq]
+
+       If you use \[lq] and \[rq] directly in your document, the
+       quotes already render nicely for all terminal devices:
+       as U+201C and U+201D for devutf8 and as ASCII 0x22 (") for
+       devascii and devlatin1.
+       So it is not quite clear why doc-nroff should avoid
+       \[lq] and \[rq] when resolving \[Lq] and \[Rq] for devascii
+       and devlatin1. Quite to the contrary, many people seem to
+       consider "``" and "''" ugly renderings because they look
+       unbalanced.
+
+       See
+
+       https://savannah.gnu.org/bugs/?43554
+
+2017-02-16  Bjarni Ingi Gislason  <bjarniig@rhi.hi.is>
+
+       Use the traditional (portable) method of using a backslash
+       after '\{'
+
+       * contrib/mm/m.tmac, tmac/e.tmac-u,
+         tmac/s.tmac: Add '\' after "\{"
+
+       See
+
+       https://savannah.gnu.org/bugs/?49917
+
+2017-02-16  Bjarni Ingi Gislason  <bjarniig@rhi.hi.is>
+
+       Use explicit \s±n after a variable string instead of \s0
+
+       * tmac/e.tmac-u: Change \s0 to \s+3
+
+       See
+
+       https://savannah.gnu.org/bugs/?49915
+
+2016-12-29  Deri James  <deri@chuzzlewit.myzen.co.uk>
+
+       Remove duplicate '-e' from gropdf manual.
+       
+       * src/devices/gropdf/gropdf.1.man: Remove first '-e'.
+       
+2016-11-25  Deri James  <deri@chuzzlewit.myzen.co.uk>
+
+       Remove incorrect info from gropdf manual.
+       
+       * src/devices/gropdf/gropdf.1.man: Remove references
+       to postscript.
+       
+2016-11-22  George HELFFRICH  <ghfbsd@gmail.com>
+
+       [me]: Fix alignment of `(c' macro (#43306).
+
+       * tmac/e.tmac-u ((c): Properly initialize environment.
+
+2016-11-20  George HELFFRICH  <ghfbsd@gmail.com>
+
+       [me] Fix vertical spacing of `(b' macro (#42217).
+
+       * tmac/e.tmac-u (@k): Apply pre-spacing conditionally.
+       ()b): Updated.
+
+2016-11-19  George HELFFRICH  <ghfbsd@gmail.com>
+
+       [me] Fix remaining bugs with line numbering (#49650).
+
+       * tmac/e.tmac-u (nm): Redefine.
+       (.n1, .n2): Update so all environments affected.
+       (.ip): Fix double numbering.
+       (.)c, .)l): Restore numbering after diversion included.
+
+2016-11-01  Deri James  <deri@chuzzlewit.myzen.co.uk>
+
+       gropdf remaps characters to position 13 (#48986).
+       
+       * src/devices/gropdf/gropdf: Do not remap anything to chr(13).
+
+2016-11-01  Deri James  <deri@chuzzlewit.myzen.co.uk>
+
+       pdfmom was not including $preconv in the initial groff run.
+       
+       * src/devices/gropdf/pdfmom.pl: Include $preconv in first 
+       groff run which resolves forward pdf references.
+
+2016-10-05  Ingo Schwarze  <schwarze@usta.de>
+
+       * tmac/doc.tmac-u: Simplify behaviour of .Bl -tag
+       * tmac/groff_mdoc.7.man: Update documentation to the new
+       behaviour of .Bl -tag
+
+       If an mdoc(7) .Bl -tag macro lacks the -width argument, the
+       body indentation is calculated separately for each child .It
+       macro.  Neither the Heirloom nor the mandoc(1) implementation
+       of the mdoc(7) language show such behaviour; both use a
+       constant default width for the whole list in that case.
+
+       Apart from doubts whether lists with variable indentation are
+       typographically sound in the first place, support for variable
+       widths in groff is so restricted that it's practically
+       useless.  For each .It, the width will be the default width of
+       whatever happens to be the leading macro after the .It, or of
+       .No if .It is not followed by a macro.
+
+       See
+
+       https://savannah.gnu.org/bugs/index.php?49272
+
+       and
+
+       http://lists.gnu.org/archive/html/groff/2016-10/msg00006.html
+
+
+2016-09-09  Werner LEMBERG  <wl@gnu.org>
+
+       * tmac/sv.tmac: Fix `.hy' settings (#48904).
+
+       The Swedish patterns allow hyphenation after the first character and
+       before the last two characters, not vice versa.
+
+2016-09-09  Werner LEMBERG  <wl@gnu.org>
+
+       troff: Fix hyphenation (#48904).
+
+       This commit fixes two bugs present from the very beginning: troff
+       (a) didn't allow to hyphenate words shorter than 4 characters
+       (ignoring `.hy' settings), and (b) never tried to hyphenate after
+       the first character due to wrong handling of the `.hy' settings.
+
+       * src/roff/troff/env.cpp (environment::hyphenate_line): Use
+       hyphenation flags to determine the minimum word length considered
+       for hyphenation.
+       (hyphenate): Fix handling of `HYPHEN_FIRST_CHARS'.
+
+2016-07-29  Colin Watson  <cjwatson@debian.org>
+
+       Implement `SOURCE_DATE_EPOCH' for reproducible builds.
+
+       * src/include/curtime.h: New file.
+       * src/libs/libgroff/curtime.cpp: New file.
+       * src/libs/libgroff/libgroff.am (libgroff_a_SOURCES): Add
+       src/libs/libgroff/curtime.cpp.
+
+       * src/roff/troff/input.cpp (init_registers): Use `current_time'
+       instead of `time(0)'.
+       * src/devices/grohtml/post-html.cpp
+       (html_printer::do_file_components): Likewise.
+       (html_printer::~html_printer): Likewise.
+       * src/devices/grops/ps.cpp (ps_printer::~ps_printer): Likewise.
+       * src/devices/gropdf/gropdf.pl: Use `$ENV{SOURCE_DATE_EPOCH}` if
+       available in preference to `time`.
+
+       * doc/groff.texi (Environment): Document `SOURCE_DATE_EPOCH'.
+       * src/devices/grohtml/grohtml.1.man (ENVIRONMENT): Likewise.
+       * src/devices/gropdf/gropdf.1.man (ENVIRONMENT): Likewise.
+       * src/devices/grops/grops.1.man (ENVIRONMENT): Likewise.
+
+2016-04-19  Carsten Kunze  <carsten.kunze@arcor.de>
+
+       eqn: Fix problem with explicite spacing before unary operator
+
+       * src/preproc/eqn/list.cpp (list_box::compute_metrics): Change
+       item spacing type from BINARY to ORDINARY also when previous
+       type is SUPPRESS_TYPE.
+
+       As reported in
+
+       http://lists.gnu.org/archive/html/groff/2016-04/msg00024.html
+
+       by Douglas McIlroy <doug@cs.dartmouth.edu>
+
+       an implicite space is added between an unary operator and it's
+       operand when an explicite space is put before the unary
+       operator.  Unary operators are initially set up as binary.
+       Depending on the preceding element their type can be changed
+       to unary.  This did not happen when an explicite space ('~' or
+       '^') had been before that operator.
+
+2016-02-16  Bálint Réczey  <balint@balintreczey.hu>
+
+       Fix many malloc/new vs. free/delete/delete[] mismatches (#47164)
+
+       * src/devices/grops/ps.cpp (ps_font::~ps_font,
+       ps_printer::define_encoding): Use `free'.
+       * src/devices/grops/psrm.cpp (resource::~resource,
+       resource_manager::output_prolog, resource_manager::supply_resource,
+       resource_manager::read_download_file): Ditto.
+
+       * src/include/ptable.h (PTABLE::~PTABLE, PTABLE::define): Ditto.
+
+       * src/libs/libgroff/searchpath.cpp
+       (search_path::open_file_cautious): Ditto.
+
+       * src/libs/libgroff/string.cpp: Include `stdlib.h'.
+       (string::extract): Use `malloc'.
+
+       * src/preproc/eqn/box.cpp (quoted_text_box::~quoted_text_box): Use
+       `free'.
+
+       * src/preproc/eqn/lex.cpp (definition::~definition,
+       macro_input::~macro_input, top_input::~top_input, do_definition):
+       Ditto.
+
+       * src/preproc/eqn/main.cpp (main): Ditto.
+
+       * src/preproc/eqn/other.cpp: Include `stdlib.h'.
+       (size_box::~size_box, font_box::~font_box): Use `free'.
+
+       * src/preproc/eqn/text.cpp: Include `stdlib.h'.
+       (box::set_spacing_type, special_char_box::~special_char_box,
+       split_text): Use `free'.
+
+       * src/preproc/grn/main.cpp (conv): Use `free'.
+
+       * src/preproc/html/pre-html.cpp (get_resolution): Ditto.
+
+       * src/preproc/pic/lex.cpp (macro_input::~macro_input,
+       argument_macro_input::~argument_macro_input, for_input::~for_input):
+       Ditto.
+
+       * src/preproc/pic/main.cpp (do_picture): Ditto.
+
+       * src/preproc/pic/object.cpp: Include `stdlib.h'.
+       (text_piece::~text_piece, string_list::~string_list): Use `free'.
+
+       * src/preproc/pic/pic.ypp (placeless_element, element, text, label,
+       expr_not_lower_than): Ditto.
+
+       * src/preproc/pic/troff.cpp (troff_output::reset_color): Ditto.
+
+       * src/preproc/preconv/preconv.cpp (check_coding_tag): Ditto.
+
+       * src/preproc/soelim/soelim.cpp (do_file): Ditto.
+
+       * src/preproc/tbl/table.cpp (text_entry::~text_entry): Ditto.
+
+       * src/roff/groff/groff.cpp (possible_command::~possible_command,
+       possible_command::set_name): Ditto.
+
+       * src/roff/troff/env.cpp (hyphen_trie::read_patterns_file): Ditto.
+
+       * src/roff/troff/node.cpp (suppress_node::tprint): Ditto.
+
+2016-02-16  Bálint Réczey  <balint@balintreczey.hu>
+
+       Use `malloc' in `strsave'; use `free' for returned pointers (#47164).
+
+       * src/libs/libgroff/font.cpp (text_file::~text_file): Use `free'.
+
+       * src/libs/libgroff/searchpath.cpp (search_path::open_file): Use
+       `free'.
+
+       * src/libs/libgroff/strsave.cpp: Include `stdlib.h'.
+       (strsave): Use `malloc'.
+
+2016-02-16  Bálint Réczey  <balint@balintreczey.hu>
+
+       Simplify memory allocation (#47162).
+
+       Many invalid memory accesses were caught by UBSAN (e.g., invalid
+       memory access in `small_temp_iterator::operator new') while
+       bootstrapping hardened1-linux-amd64 Debian port in the `free_list'
+       handling because it doesn't properly handle the padding between
+       array elements.
+
+       Some places were already #if 0-d out anyway.
+
+       * src/roff/troff/input.cpp (small_temp_iterator): Remove class.
+       (make_temp_iterator): Use `temp_iterator' only.
+
+       * src/devices/grotty/tty.cpp (tty_glyph): Remove `free_list', `new',
+       and `delete'.
+
+       * src/include/color.h, src/include/color.cpp (color): Ditto.
+
+       * src/roff/troff/env.cpp (tab): Ditto.
+
+       * src/roff/troff/node.cpp (glyph_node): Ditto.
+
+2016-02-15  Bálint Réczey  <balint@balintreczey.hu>
+
+       [pre-grohtml] Fix out-of-bounds array access (#47161).
+
+       * src/preproc/html/pre-html.cpp (char_buffer::write_upto_newline):
+       Implement it.
+
+2016-02-15  Bálint Réczey  <balint@balintreczey.hu>
+
+       Don't use `memcpy' with NULL input or output argument (#47160).
+
+       * src/libs/libgroff/string.cpp (string::string, string::operator=):
+       Implement it.
+
+       * src/roff/troff/input.cpp (temp_iterator::temp_iterator): Implement
+       it.
+
+2016-02-04  Carsten Kunze  <carsten.kunze@arcor.de>
+
+       * tmac/s.tmac: Bugfix of previous commit simplified (and
+       introduced redundancy removed) by use of .par*start for .QS and
+       .QE.  This is consistent since any other paragraph macro is
+       using .par*start.
+
+2016-02-02  Carsten Kunze  <carsten.kunze@arcor.de>
+
+       * tmac/s.tmac: Macros .QS and .QE changed to insert vertical
+       inter-paragraph space.  A paragraph bracketed with .QS/.QE
+       should appear identical to a .QP paragraph followed by .LP.
+
+       * tmac/groff_ms.7.man, doc/groff.texi: Documentation of macros
+       .QS and .QE added and .QP information improved (effect of
+       registers QI and PD).
+
+       See also discussion at groff@gnu.org, thread starting at
+
+       http://lists.gnu.org/archive/html/groff/2016-01/msg00033.html
+
+       Issue reported by Douglas McIlroy <doug@cs.dartmouth.edu>
+
+2015-12-26  Carsten Kunze  <carsten.kunze@arcor.de>
+
+       * contrib/mm/m.tmac: Disable macro misc@tag in case output
+         type is not HTML.
+
+       This macro did cause unwanted space in case a MM macros .H
+       had been followed immediately by .DS.
+
+       (See also discussion at groff@gnu.org, thread starting at
+       http://lists.gnu.org/archive/html/groff/2015-12/msg00033.html)
+
+       Bug reported by Damian McGuckin <damianm@esi.com.au>.
+
+2015-12-14  Werner LEMBERG  <wl@gnu.org>
+
+       * src/preproc/eqn/text.cpp (entity_table): s/lamda/lambda/.
+
+       Bug reported by Brian McGuinness <mcguinne@fdu.edu>.
+
+2015-10-27  Deri James  <deri@chuzzlewit.myzen.co.uk>
+
+       gropdf was choking on -I flag passed by groff, now uses
+       these directories to search for included pdfs.
+       
+       * src/devices/gropdf/gropdf.pl: Handle -I flag, avoid
+         unitialised values.
+       
+       * src/roff/groff/groff.1.man: Include 'X pdf: pdfpic'
+       
+       * src/devices/gropdf/gropdf.1.man: Document -I flag
+       
+2015-09-10  Bernd Warken  <groff-bernd.warken-72@web.de>
+
+       * src/roff/grog/subs.pl: fix comments
+
+2015-09-03  Bernd Warken  <groff-bernd.warken-72@web.de>
+
+       * tmac/troffrc: Add .mso for file `pdfpic.tmac'.
+
+2015-08-28  Bertrand Garrigues  <bertrand.garrigues@laposte.net>
+
+       * Makefile.am:
+       - Use only the naming `.section.man' for all man.pages.
+       - Replace `.man.n' by `.man' only, such that no `.n' is
+       generated.
+       - For example, the source `groff.7.man' is transformed into
+       `groff.7' in the same directory and then is by installing just
+       copied into one of the suitable installed man directory.
+
+2015-08-27  Bernd Warken  <groff-bernd.warken-72@web.de>
+
+       * tmac/pfdpic.tmac: Add tmac file for macro `PDFPIC'.
+
+       * tmac/tmac.am: Add new `pdfpic.tmac' file.
+
+       * man/groff_tmac.5.man: Add definition for the new tmac.
+
+2015-08-22  Bernd Warken  <groff-bernd.warken-72@web.de>
+
+       * all man-pages *.man: Rename man-pages such that the man section
+       number before the final `.man'.
+
+       * all *.am: Include renaming.
+
+       * Makefile.am: Reset `.man.n' by `.[157].man.n' with SUFFIXES
+       `.[157].man .n'.
+
+2015-08-20  Bernd Warken  <groff-bernd.warken-72@web.de>
+
+       * Makefile.am: Fix definition of man[157]_MANS.
+
+2015-08-13  Bernd Warken  <groff-bernd.warken-72@web.de>
+
+       * all *.am: Correct Emacs mode `End:' instead of `End.'.
+
+2015-08-09  Werner LEMBERG  <wl@gnu.org>
+
+       Revert previous commit, since it doesn't work correctly yet.
+
+2015-08-07  Bernd Warken  <groff-bernd.warken-72@web.de>
+
+       Add section name to all man-page names.
+
+       * Makefile.am: In `install-prefix-man' and `uninstall-prefix-man'
+       change `sed' commands.  Correct saving in man[157]_MANS.
+
+       * all *.man in source tree: Rename `manpage.man' to
+       `manpage.[157].man'.
+
+       * all makefile.am in source tree: Add new man-page file name.
+
+2015-08-05  Bernd Warken  <groff-bernd.warken-72@web.de>
+
+       * Makefile.am, arch/mingw/mingw.am, arch/misc/misc.am,
+       * contrib/eqn2graph/eqn2graph.am, contrib/grap2graph/grap2graph,
+       * contrib/pic2graph/pic2graph.am, doc/doc.am,
+       * font/devX100/devX100.am, font/devX100-12/devX100-12.am,
+       * font/devX75/devX75.am, font/devX75-12/devX75-12.am,
+       * font/devascii/devascii.am, font/devcp1047/devcp1047.am,
+       * font/devdvi/devdvi.am, font/devhtml/devhtml.am,
+       * font/devlatin1/devlatin1.am, font/devlbp/devlbp.am,
+       * font/devlj4/devlj4.am, font/devpdf/devpdf.am,
+       * font/devps/devps.am, font/devutf8/devutf8.am,
+       * font/scripts/scripts.am, man/man.am,
+       * src/devices/grodvi/grodvi.am, src/devices/grohtml/grohtml.am,
+       * src/devices/grolbp/grolbp.am, src/devices/grolj4/grolj4.am,
+       * src/devices/gropdf/gropdf.am, src/devices/grops/grops.am,
+       * src/devices/grotty/grotty.am,
+       * src/include/include.am, src/libs/libbib/libbib.am,
+       * src/libs/libdriver/libdriver.am, src/libs/libgroff/libgroff.am,
+       * src/libs/libxutil/libxutil.am, src/preproc/grn/grn.am,
+       * src/preproc/html/html.am, src/preproc/pic/pic.am,
+       * src/preproc/preconv/preconv.am, src/preproc/tbl/tbl.am
+       * src/preproc/refer/refer.am, src/preproc/soelim/soelim.am,
+       * src/roff/groff/groff.am, src/roff/grog/grog.am,
+       * src/roff/nroff/nroff.am, src/roff/troff/troff.am,
+       * src/utils/addftinfo/addftinfo.am,
+       * src/utils/afmtodit/afmtodit.am, src/utils/hpftodit/hpftodit.am,
+       * src/utils/indxbib/indxbib.am, src/utils/lkbib/lkbib.am,
+       * src/utils/lookbib/lookbib.am, src/utils/pfbtops/pfbtops.am,
+       * src/utils/tfmtodit/tfmtodit.am, src/utils/xtotroff/xtotroff.am,
+       * tmac/tmac.am:
+       Add `Last update'.  Setup Emacs mode.
+
+2015-07-29  Bernd Warken  <groff-bernd.warken-72@web.de>
+
+       * src/roff/grog/subs.pl: Add -T for all `grog' output, also using
+       -Tps when no option -T is given in the arguments.
+
+       * src/roff/grog/grog.man: Add information about -T output.
+
+2015-07-23  Bernd Warken  <groff-bernd.warken-72@web.de>
+
+       * man/groff.man: Add last update.  Add link on Wikipedia on groff.
+       Add link of groff tutorial by Laha.
+
+2015-07-19  Bernd Warken  <groff-bernd.warken-72@web.de>
+
+       * src/roff/grog/*.pl: Add last update.
+
+       * src/roff/grog/subs.pl: Remove call to Perl INC::System::Simple,
+       use backticks instead.
+       Define &err().
+       Reorder some extensions.
+       Distinguish between .TH at first command for man and later on for
+       ms.
+
+2015-07-01 Peter Bray <pdb_ml@yahoo.com.au>
+
+       Fix Savannah bug #44784.
+
+       Compatibility Mode rendering of groff manual pages
+
+       * m4/groff.m4 (GROFF_WITH_COMPATIBILITY_WRAPPERS): New macro to
+       implement 'configure' option
+       '--with-compatibility-wrappers=<value>'.  With this option the
+       user can control how groff compatibility wrappers for
+       vendor-provided non-GNU macro sets are installed.
+
+       * configure.ac: Use new macro GROFF_WITH_COMPATIBILITY_WRAPPERS.
+
+       * Makefile.am: Define tmac_*_prefix if 'compatibility_wrappers' is
+       set to 'yes'.
+
+       * tmac/tmac.am: Use 'compatibility_wrappers' to control the
+       installation:
+
+       - If set to `no', the groff-provided macro set are installed in
+       <prefix>/share/groff/<version>/tmac/ with the original macro set
+       name.
+
+       - If set to `yes', the groff-provided macro set are installed in
+       <prefix>/share/groff/<version>/tmac/ with a prefix of
+       $(tmac_prefix) (which is usually `g') and the generated
+       compatibility wrappers are installed in
+       <prefix>/lib/groff/site-tmac, with the original macro set name.
+
+       - If set to `manual', the groff-provided macro set are installed
+       in <prefix>/share/groff/<version>/tmac/ with the original macro
+       set name and the generated compatibility wrappers are installed in
+       <prefix>/lib/groff/site-tmac, with a name of
+       <macro><wrapper_suffix> (which is usually `-os').
+
+2015-06-17  Werner LEMBERG  <wl@gnu.org>
+
+       * tmac/tty.tmac: Fix mapping of \[bu] character for -Tutf8.
+
+       Problem reported by carsten.kunze@arcor.de.
+
+2015-06-15  Deri James  <deri@chuzzlewit.myzen.co.uk>
+
+       pdfmom should use $RT_SEP as path separator.
+
+       * src/devices/gropdf/gropdf.am: Use @RT_SEP@ as path separator.
+
+       * src/devices/gropdf/pdfmom.pl: As above but also fix typo in regex
+       for grep.
+
+2015-05-08  Eli Zaretskii  <eliz@gnu.org>
+
+       [groff] Make relocation really work.
+
+       See
+
+         https://lists.gnu.org/archive/html/groff/2015-05/msg00000.html
+
+       * src/roff/groff/groff.cpp: Include `relocate.h'.
+       (main): Use `relocatep'.
+
+2015-05-03  Bertrand Garrigues  <bertrand.garrigues@laposte.net>
+
+       Fix Savannah bug #44768 (Solaris 10 compatibility issues).
+
+       * m4/groff.m4 (GROFF_DIFF_D): new macro to check if `diff' has
+       option -D, and search for `gdiff' if not (new variable DIFF_PROG
+       will contain the `diff' program to be used).
+
+       * m4/groff.m4 (GROFF_HAVE_TEST_EF_OPTION): new macro to check if
+       `test' supports the option -ef (created new variable
+       HAVE_TEST_EF_OPTION).
+
+       * m4/groff.m4 (GROFF_BASH): new macro to search for `bash' (new
+       variable BASH_PROG will contain the full path to `bash' or
+       `/bin/sh' if `bash' was not found).
+
+       * configure.ac: use the 3 new macros defined in m4/groff.m4.
+
+       * contrib/gdiffmk/gdiffmk.am: set HAVE_TEST_EF_OPTION, BASH_PROG,
+       DIFF_PROG in the generated script `gdiffmk'.
+
+       * contrib/gdiffmk/gdiffmk.sh:
+       - Fix incorrect space after '!' in sed script regex.
+       - `test -ef' is not portable: If `bash' is not available and the
+       shell does not support `test -ef', the option to pass a third
+       argument as the output file is disabled.
+       - Report an error if `diff' does not support -D option.
+       - GNU diff and Solaris diff support -D, but #ifndef / #endif are
+       treated differently (GNU adds a '!' in the #endif): modify the
+       regexs in the sed script accordingly.
+
+2015-05-01  Werner LEMBERG  <wl@gnu.org>
+
+       * tmac/tmac.am (TMACNORMALFILES): Add `zh.tmac'.
+
+2015-04-30  Darcy SHEN  <sadhen1992@gmail.com>
+
+       Fix Savannah bug #44941.
+
+       * tmac/zh.tmac: New file to support basic Chinese (both simplified
+       and traditional).
+
+2015-04-22  Deri James  <deri@chuzzlewit.myzen.co.uk>
+
+       Fix Savannah bug #44891.
+
+       * src/devices/gropdf/gropdf.pl: If module Compress::Zlib is not
+       available fall back to producing uncompressed PDF and output a
+       warning.
+
+2015-04-22  Bjarni Ingi Gislason  <bjarniig@rhi.hi.is>
+
+       Fix Savannah bug #44894.
+
+       * tmac/strip.sed: Add a `generated file' warning.
+
+2015-04-21  Deri James  <deri@chuzzlewit.myzen.co.uk>
+
+       Fix Savannah bug #44890.
+       Patch by Peter Bray.
+
+       * font/devpdf/devpdf.am: Don't use 'find -maxdepth'.
+
+2015-03-07  Ingo Schwarze  <schwarze@openbsd.org>
+
+       [mdoc] Fix Savannah bug #44733.
+
+       Prevent mdoc(7) Bl with trailing -width or -offset from picking up
+       old args.
+
+       * tmac/doc.tmac-u (doc-do-Bl-args): When checking whether there is
+       another argument to a Bl macro, do not inspect the argument list
+       because it is never cleaned and may contain arguments from previous
+       macro invocations.  Instead, inspect the argument count which is
+       always up to date.
+
+2015-04-10  Daiki Ueno  <ueno@gnu.org>
+
+       Fix link error on NetBSD 6.
+
+       Reported by carsten.kunze@arcor.de in:
+       <https://lists.gnu.org/archive/html/groff/2015-04/msg00000.html>.
+       The problem can also be reproduced if gl_cv_func_wcwidth_works=no
+       is passed to configure.
+
+       * src/preproc/grn/grn.am (grn_LDADD): Change the link order of
+       libgroff.a and lib/libgnu.a according to dependency.
+       * src/roff/troff/troff.am (troff_LDADD): Likewise.
+
+2015-04-08  Werner LEMBERG  <wl@gnu.org>
+
+       Fix Savannah bug #44767.
+       Patch by Peter Bray.
+
+       * src/roff/grog/grog.am (grog): Correctly substitute `grog_dir'.
+
+2015-04-03  Werner LEMBERG  <wl@gnu.org>
+
+       Fix Savannah bug #44708 (2/2).
+
+       Make man pages work in compatibility mode.
+       Also fix some minor typos.
+
+       * contrib/pic2graph/pic2graph.man, man/ditroff.man, man/groff.man,
+       man/groff_diff.man, man/groff_out.man, man/groff_tmac.man,
+       man/roff.man, src/devices/grodvi/grodvi.man,
+       src/devices/grohtml/grohtml.man, src/devices/grolbp/grolbp.man,
+       src/devices/grolj4/grolj4.man, src/devices/grolj4/lj4_font.man,
+       src/devices/gropdf/gropdf.man, src/devices/gropdf/pdfmom.man,
+       src/devices/grops/grops.man, src/devices/grotty/grotty.man,
+       src/devices/xditview/xditview.man, src/preproc/eqn/eqn.man,
+       src/preproc/eqn/neqn.man, src/preproc/grn/grn.man,
+       src/preproc/pic/pic.man, src/preproc/preconv/preconv.man,
+       src/preproc/refer/refer.man, src/preproc/soelim/soelim.man,
+       src/preproc/tbl/tbl.man, src/roff/groff/groff.man,
+       src/roff/grog/grog.man, src/roff/nroff/nroff.man,
+       src/roff/troff/troff.man, src/utils/addftinto/addftinfo.man,
+       src/utils/afmtodit/afmtodit.man, src/utils/hpftodit/hpftodit.man,
+       src/utils/indxbib/indxbib.man, src/utils/lkbib/lkbib.man,
+       src/utils/lookbib/lookbib.man, src/utils/pfbtops/pfbtops.man,
+       src/utils/tfmtodit/tfmtodit.man, src/utils/xtotroff/xtotroff.man,
+       tmac/groff_man.man, tmac/groff_trace.man: Do it.
+
+2015-04-03  Werner LEMBERG  <wl@gnu.org>
+
+       Fix Savannah bug #44708 (1/2).
+
+       * tmac/andoc.tmac (reload_doc, reload_man): Don't use `de1',
+       otherwise we can't manipulate the compatibility flag within the
+       macro.
+
+       * tmac/doc-common-u (Dt): Remove invalid leading whitespace.
+
+2015-03-11  Deri James  <deri@chuzzlewit.myzen.co.uk>
+
+       * src/devices/gropdf/gropdf.pl: Was not handling the final glyph
+       correctly in the "standard" fonts which are not embedded. They
+       actually have 257 glyphs (0-256) not 256 as I'd assumed, so the
+       remappiing code needs to be applied for them as well as the
+       embedded downloadable fonts.
+
+2015-03-11  Deri James  <deri@chuzzlewit.myzen.co.uk>
+
+       * src/devices/gropdf/gropdf.pl: Fix problem remappiing
+       ellipsis (affects all glyphs > 255).
+
+2015-03-07  Werner LEMBERG  <wl@gnu.org>
+
+       * tmac/tmac.am (TMACSPECIALFILES): Removed.  No longer used.
+
+2015-03-07  Ingo Schwarze  <schwarze@openbsd.org>
+
+       * tmac/doc-common-u (Dd): Avoid warning `unbalanced .el request'.
+
+2015-02-12  Werner LEMBERG  <wl@gnu.org>
+
+       Minor fixes due to renaming `groff.texinfo' to `groff.texi'.
+
+       * doc/doc.am (SUFFIXES): Update.
+       * m4/groff.m4 (GROFF_MAKEINFO): Update.
+
+2015-01-30  Bertrand Garrigues  <bertrand.garrigues@laposte.net>
+
+       Automake migration and Gnulib integration.
+
+       Gnulib:
+       - Added gnulib as a git submodule.
+       - Integrated bootstrap scripts from gnulib.
+       - Gnulib m4 directory is now in `gnulib_m4', while Gnulib's .c
+       files are located in `lib'.  `gnulib_m4' and `lib' are generated
+       and distributed.
+
+       Automake:
+       - Removed Makefiles from the old build system.
+       - Converted Makefile.in into Makefile.am.
+       - Converted Makefile.sub files in all directories to a .am file.
+       - Removed configure, src/include/config.hin (now generated).
+       - Removed various helper scripts (config.guess, config.rpath...),
+       now installed by bootstrap in `build-aux'.
+       - Moved aclocal.m4 to acinclude.m4 (aclocal.m4 is now generated).
+       - Makefile in non-recursive style.
+       - Updated INSTALL.REPO (INSTALL is now a symlink to
+       gnulib/doc/INSTALL, original INSTALL file moved to INSTALL.extra)
+       - Added (empty) THANKS, AUTHORS files.
+       - Added a document on the usage of automake in groff in
+       doc/automake.pdf.
+
+       Additional features:
+       - Out-of-source build is supported.
+       - Parallel build is possible (make -j).
+       - Automatic targets from Automake: `make dist', `make distcheck'.
+       - 'make check' is available for automatic testing, gdiffmk's test
+       was plugged to this target.
+       - Auto-detect if make has builtin variable `RM'.
+
+2015-01-14  Ingo Schwarze  <schwarze@openbsd.org>
+
+       Fix Savannah bug #43905.
+
+       * src/libs/libgroff/glyphuni.cpp (glyph_to_unicode_list),
+       * src/libs/libgroff/uniglyph.cpp (unicode_to_glyph_list): Remove
+       double entries for `rk', `lk', `lt', `rt', `rb', and `lb'.
+
+2014-12-16  Werner LEMBERG  <wl@gnu.org>
+
+       Update Unicode-to-Unicode mapping to version 7.0.0.
+
+       * src/libs/libgroff/make-uniuni: Update emitted copyright.
+
+       * src/libs/libgroff/uniuni.cpp: Regenerated.
+
+2014-11-29  Werner LEMBERG  <wl@gnu.org>
+
+       Fix previous commit.
+
+       We forgot to test whether the patch works if compiling from
+       scratch...
+
+       Problem reported by Bertrand Garrigues
+       <bertrand.garrigues@laposte.net>.
+
+       * src/include/lib.h (interpret_lf_args, normalize_for_lf): Move
+       declarations to...
+       * src/include/lf.h: This new file.
+
+       * src/libs/libgroff/lf.cpp, src/preproc/pic/pic.h,
+       src/preproc/preconv/preconv.cpp, src/preproc/refer/refer.h,
+       src/preproc/soelim/soelim.cpp, src/preproc/tbl/table.h: Include
+       `lf.h'.
+       Make `lib.h' the first included header file.
+
+       * src/preproc/eqn/eqn.h: Don't include `stringclass.h'.
+       * src/preproc/eqn/main.cpp: Include `stringclass.h' and `lf.h'.
+
+       * src/roff/groff/groff.cpp: Make `lib.h' the first included header
+       file.
+
+2014-11-10  Eli Zaretskii  <eliz@gnu.org>
+
+       Improve native Windows port.
+
+       This patch fixes two issues.
+
+         . Handle backslashes in `.lf' arguments for MSDOS and Windows.
+         . Fix file name quoting for the groff pipeline.
+
+       * src/preproc/soelim/soelim.cpp (do_file):
+       * src/preproc/refer/refer.cpp (do_file):
+       * src/preproc/preconv/preconv.cpp (do_file):
+       * src/preproc/pic/main.cpp (do_file):
+       * src/preproc/eqn/main.cpp (do_file): Call `normalize_for_lf' to
+       convert backslashes in the file name being processed to forward
+       slashes.
+
+       * src/include/lib.h (normalize_for_lf): Add prototype.
+
+       * src/preproc/eqn/eqn.h:
+       * src/preproc/pic/pic.h:
+       * src/preproc/refer/refer.h:
+       * src/preproc/tbl/table.h: Include stringclass.h before lib.h.
+
+       * src/libs/libgroff/lf.cpp (normalize_for_lf): New function.
+
+       * src/roff/groff/groff.cpp: Include stringclass.h before lib.h.
+       (append_arg_to_string) [_WIN32 && !__CYGWIN__]: Use only "..." for
+       quoting in native Windows builds.
+
+2014-11-18  Deri James  <deri@chuzzlewit.myzen.co.uk>
+
+       My commit '3fe78135c9fe666dadffde2a822b0535d8db6feb' introduced
+       problem in subroutine `TextWid'.  Octal char `\nnn' returns width of
+       4 char string rather than width of single character.
+
+       * src/devices/gropdf/gropdf.pl: Change `TextWid' to recognise octal
+       escaped characters (\nnn).
+
+2014-11-07  Deri James  <deri@chuzzlewit.myzen.co.uk>
+
+       See bug #43555.
+
+       * src/devices/gropdf/gropdf.pl: Correct Date Format.
+
 2014-11-04  Werner LEMBERG  <wl@gnu.org>
 
        * src/libs/gnulib/*: Regenerate autotool files.
@@ -1418,7 +3852,7 @@ Version 1.22.3 released
        ($(SHPROGDIRS):): Add to existing rule.
        ($(OTHERDIRS):): Depend on $(SHPROGDIRS).
 
-2013-12-08  Eric S. Raymond <esr@thyrsus.com>
+2013-12-08  Eric S. Raymond  <esr@thyrsus.com>
 
        Repository fully converted to git.
 
@@ -2869,7 +5303,7 @@ ________________________________________________________________________
 
 ##### License
 
-Copyright 2011-2014 Free Software Foundation, Inc.
+Copyright 2011-2018 Free Software Foundation, Inc.
 
 Copying and distribution of this file, with or without modification,
 are permitted in any medium without royalty provided the copyright
@@ -2881,3 +5315,4 @@ Local Variables:
 mode: change-log
 version-control: never
 End:
+vim:set autoindent:
index 53f0782..1d9ae0b 100644 (file)
@@ -1,4 +1,4 @@
-    Copyright 2013-2014 Free Software Foundation, Inc.
+    Copyright 2013-2018 Free Software Foundation, Inc.
 
     Copying and distribution of this file, with or without modification,
     are permitted in any medium without royalty provided the copyright
diff --git a/INSTALL b/INSTALL
index 1d3c3df..8865734 100644 (file)
--- a/INSTALL
+++ b/INSTALL
-    Copyright 1997-2014 Free Software Foundation, Inc.
+Installation Instructions
+*************************
+
+   Copyright (C) 1994-1996, 1999-2002, 2004-2016 Free Software
+Foundation, Inc.
+
+   Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.  This file is offered as-is,
+without warranty of any kind.
+
+Basic Installation
+==================
+
+   Briefly, the shell command './configure && make && make install'
+should configure, build, and install this package.  The following
+more-detailed instructions are generic; see the 'README' file for
+instructions specific to this package.  Some packages provide this
+'INSTALL' file but do not implement all of the features documented
+below.  The lack of an optional feature in a given package is not
+necessarily a bug.  More recommendations for GNU packages can be found
+in *note Makefile Conventions: (standards)Makefile Conventions.
+
+   The 'configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation.  It uses
+those values to create a 'Makefile' in each directory of the package.
+It may also create one or more '.h' files containing system-dependent
+definitions.  Finally, it creates a shell script 'config.status' that
+you can run in the future to recreate the current configuration, and a
+file 'config.log' containing compiler output (useful mainly for
+debugging 'configure').
+
+   It can also use an optional file (typically called 'config.cache' and
+enabled with '--cache-file=config.cache' or simply '-C') that saves the
+results of its tests to speed up reconfiguring.  Caching is disabled by
+default to prevent problems with accidental use of stale cache files.
+
+   If you need to do unusual things to compile the package, please try
+to figure out how 'configure' could check whether to do them, and mail
+diffs or instructions to the address given in the 'README' so they can
+be considered for the next release.  If you are using the cache, and at
+some point 'config.cache' contains results you don't want to keep, you
+may remove or edit it.
+
+   The file 'configure.ac' (or 'configure.in') is used to create
+'configure' by a program called 'autoconf'.  You need 'configure.ac' if
+you want to change it or regenerate 'configure' using a newer version of
+'autoconf'.
+
+   The simplest way to compile this package is:
+
+  1. 'cd' to the directory containing the package's source code and type
+     './configure' to configure the package for your system.
+
+     Running 'configure' might take a while.  While running, it prints
+     some messages telling which features it is checking for.
+
+  2. Type 'make' to compile the package.
+
+  3. Optionally, type 'make check' to run any self-tests that come with
+     the package, generally using the just-built uninstalled binaries.
+
+  4. Type 'make install' to install the programs and any data files and
+     documentation.  When installing into a prefix owned by root, it is
+     recommended that the package be configured and built as a regular
+     user, and only the 'make install' phase executed with root
+     privileges.
+
+  5. Optionally, type 'make installcheck' to repeat any self-tests, but
+     this time using the binaries in their final installed location.
+     This target does not install anything.  Running this target as a
+     regular user, particularly if the prior 'make install' required
+     root privileges, verifies that the installation completed
+     correctly.
+
+  6. You can remove the program binaries and object files from the
+     source code directory by typing 'make clean'.  To also remove the
+     files that 'configure' created (so you can compile the package for
+     a different kind of computer), type 'make distclean'.  There is
+     also a 'make maintainer-clean' target, but that is intended mainly
+     for the package's developers.  If you use it, you may have to get
+     all sorts of other programs in order to regenerate files that came
+     with the distribution.
+
+  7. Often, you can also type 'make uninstall' to remove the installed
+     files again.  In practice, not all packages have tested that
+     uninstallation works correctly, even though it is required by the
+     GNU Coding Standards.
+
+  8. Some packages, particularly those that use Automake, provide 'make
+     distcheck', which can by used by developers to test that all other
+     targets like 'make install' and 'make uninstall' work correctly.
+     This target is generally not run by end users.
+
+Compilers and Options
+=====================
 
-    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.
+   Some systems require unusual options for compilation or linking that
+the 'configure' script does not know about.  Run './configure --help'
+for details on some of the pertinent environment variables.
+
+   You can give 'configure' initial values for configuration parameters
+by setting variables in the command line or in the environment.  Here is
+an example:
+
+     ./configure CC=c99 CFLAGS=-g LIBS=-lposix
+
+   *Note Defining Variables::, for more details.
+
+Compiling For Multiple Architectures
+====================================
+
+   You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory.  To do this, you can use GNU 'make'.  'cd' to the
+directory where you want the object files and executables to go and run
+the 'configure' script.  'configure' automatically checks for the source
+code in the directory that 'configure' is in and in '..'.  This is known
+as a "VPATH" build.
+
+   With a non-GNU 'make', it is safer to compile the package for one
+architecture at a time in the source code directory.  After you have
+installed the package for one architecture, use 'make distclean' before
+reconfiguring for another architecture.
+
+   On MacOS X 10.5 and later systems, you can create libraries and
+executables that work on multiple system types--known as "fat" or
+"universal" binaries--by specifying multiple '-arch' options to the
+compiler but only a single '-arch' option to the preprocessor.  Like
+this:
+
+     ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+                 CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+                 CPP="gcc -E" CXXCPP="g++ -E"
+
+   This is not guaranteed to produce working output in all cases, you
+may have to build one architecture at a time and combine the results
+using the 'lipo' tool if you have problems.
+
+Installation Names
+==================
+
+   By default, 'make install' installs the package's commands under
+'/usr/local/bin', include files under '/usr/local/include', etc.  You
+can specify an installation prefix other than '/usr/local' by giving
+'configure' the option '--prefix=PREFIX', where PREFIX must be an
+absolute file name.
+
+   You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files.  If you
+pass the option '--exec-prefix=PREFIX' to 'configure', the package uses
+PREFIX as the prefix for installing programs and libraries.
+Documentation and other data files still use the regular prefix.
+
+   In addition, if you use an unusual directory layout you can give
+options like '--bindir=DIR' to specify different values for particular
+kinds of files.  Run 'configure --help' for a list of the directories
+you can set and what kinds of files go in them.  In general, the default
+for these options is expressed in terms of '${prefix}', so that
+specifying just '--prefix' will affect all of the other directory
+specifications that were not explicitly provided.
+
+   The most portable way to affect installation locations is to pass the
+correct locations to 'configure'; however, many packages provide one or
+both of the following shortcuts of passing variable assignments to the
+'make install' command line to change installation locations without
+having to reconfigure or recompile.
+
+   The first method involves providing an override variable for each
+affected directory.  For example, 'make install
+prefix=/alternate/directory' will choose an alternate location for all
+directory configuration variables that were expressed in terms of
+'${prefix}'.  Any directories that were specified during 'configure',
+but not in terms of '${prefix}', must each be overridden at install time
+for the entire installation to be relocated.  The approach of makefile
+variable overrides for each directory variable is required by the GNU
+Coding Standards, and ideally causes no recompilation.  However, some
+platforms have known limitations with the semantics of shared libraries
+that end up requiring recompilation when using this method, particularly
+noticeable in packages that use GNU Libtool.
+
+   The second method involves providing the 'DESTDIR' variable.  For
+example, 'make install DESTDIR=/alternate/directory' will prepend
+'/alternate/directory' before all installation names.  The approach of
+'DESTDIR' overrides is not required by the GNU Coding Standards, and
+does not work on platforms that have drive letters.  On the other hand,
+it does better at avoiding recompilation issues, and works well even
+when some directory options were not specified in terms of '${prefix}'
+at 'configure' time.
+
+Optional Features
+=================
 
-This file contains information that supplements the generic
-installation instructions in file `INSTALL.gen'.
+   If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving 'configure' the
+option '--program-prefix=PREFIX' or '--program-suffix=SUFFIX'.
 
+   Some packages pay attention to '--enable-FEATURE' options to
+'configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to '--with-PACKAGE' options, where PACKAGE
+is something like 'gnu-as' or 'x' (for the X Window System).  The
+'README' should mention any '--enable-' and '--with-' options that the
+package recognizes.
 
-Normal Installation
-===================
+   For packages that use the X Window System, 'configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the 'configure' options '--x-includes=DIR' and
+'--x-libraries=DIR' to specify their locations.
 
-The simplest way to compile groff is:
+   Some packages offer the ability to configure how verbose the
+execution of 'make' will be.  For these packages, running './configure
+--enable-silent-rules' sets the default to minimal output, which can be
+overridden with 'make V=1'; while running './configure
+--disable-silent-rules' sets the default to verbose, which can be
+overridden with 'make V=0'.
 
-  1. `cd' to the directory containing groff's source code and type
-     `./configure' to configure groff for your system.  If you are
-     using `csh' on an old version of System V, you might need to type
-     `sh ./configure' instead to prevent `csh' from trying to execute
-     `configure' itself.
+Particular systems
+==================
 
-     Running `configure' takes awhile.  While running, it prints some
-     messages telling which features it is checking for.
+   On HP-UX, the default C compiler is not ANSI C compatible.  If GNU CC
+is not installed, it is recommended to use the following options in
+order to use an ANSI C compiler:
 
-  2. Type `make' to compile groff.
+     ./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
 
-  3. Type `sudo make install' to install the groff programs and any
-     data files and documentation.  `make install' is the only step for
-     which you need `root' access; this is done by `sudo'.
+and if that doesn't work, install pre-built binaries of GCC for HP-UX.
 
-  4. You can remove the groff binaries and object files from the
-     source code directory by typing `make clean'.  To also remove the
-     files that `configure' created (so you can compile groff for
-     a different kind of computer), type `make distclean'.
+   HP-UX 'make' updates targets which have the same time stamps as their
+prerequisites, which makes it generally unusable when shipped generated
+files such as 'configure' are involved.  Use GNU 'make' instead.
 
+   On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
+parse its '<wchar.h>' header file.  The option '-nodtk' can be used as a
+workaround.  If GNU CC is not installed, it is therefore recommended to
+try
 
-External Installation
-=====================
+     ./configure CC="cc"
 
-It is also possible to perform the whole installation process outside
-of the source code directory.  In this case a whole external build
-directory structure is created without changing any parts of the source
-code tree.  This is useful if the source code is read-only or if
-several different installations, such as for multiple architectures,
-should be constructed.
+and if that doesn't work, try
 
-As an example we assume that the source code of the `groff' code is in
-`/usr/local/src/groff', and that the build process should be done
-within the directory `/home/my/groff.compile'.
+     ./configure CC="cc -nodtk"
 
-  0. Create `/home/my/groff.compile' and change to that directory.
+   On Solaris, don't put '/usr/ucb' early in your 'PATH'.  This
+directory contains several dysfunctional programs; working variants of
+these programs are available in '/usr/bin'.  So, if you need '/usr/ucb'
+in your 'PATH', put it _after_ '/usr/bin'.
 
-  1. Call `/usr/local/src/groff/configure' in that directory to
-     configure groff for your system.  If you are using `csh' on an old
-     version of System V, you might need to type `sh
-     /usr/local/src/groff/configure' instead.
+   On Haiku, software installed for all users goes in '/boot/common',
+not '/usr/local'.  It is recommended to use the following options:
 
-  2. Type `make' to compile groff in that directory.
+     ./configure --prefix=/boot/common
 
-  3. Type `sudo make install' to install the groff programs and any
-     data files and documentation.
+Specifying the System Type
+==========================
 
-  4. You can remove the groff binaries and object files from the
-     build directory by typing `make clean'.  To also remove the
-     files that `configure' created (so you can compile the package for
-     a different kind of computer), type `make distclean'.
+   There may be some features 'configure' cannot figure out
+automatically, but needs to determine by the type of machine the package
+will run on.  Usually, assuming the package is built to be run on the
+_same_ architectures, 'configure' can figure that out, but if it prints
+a message saying it cannot guess the machine type, give it the
+'--build=TYPE' option.  TYPE can either be a short name for the system
+type, such as 'sun4', or a canonical name which has the form:
 
+     CPU-COMPANY-SYSTEM
 
-Special Platforms
-=================
-
-For instructions how to build groff with DJGPP tools for MS-DOS and
-MS-Windows, see the file arch/djgpp/README.
+where SYSTEM can have one of these forms:
 
-For instructions how to build groff with the MinGW tools for
-MS-Windows, see the file README.MinGW.
+     OS
+     KERNEL-OS
 
+   See the file 'config.sub' for the possible values of each field.  If
+'config.sub' isn't included in this package, then this package doesn't
+need to know the machine type.
 
-Miscellaneous
-=============
+   If you are _building_ compiler tools for cross-compiling, you should
+use the option '--target=TYPE' to select the type of system they will
+produce code for.
 
-groff is written in C++, so you need a C++ compiler.  The C++ source
-files use a suffix of `.cpp', so your C++ compiler must be able to
-handle this.  If you don't already have a C++ compiler, we suggest gcc
-2.7.1 or later (gcc version 2 includes GNU C++ as well as GNU C).  From
-gcc 2.5, it is no longer necessary to install libg++: the C++ header
-files needed by groff are created by the gcc installation process.  To
-override configure's choice of C++ compiler, you can set the CXX
-environment variable.
+   If you want to _use_ a cross compiler, that generates code for a
+platform different from the build platform, you should specify the
+"host" platform (i.e., that on which the generated programs will
+eventually be run) with '--host=TYPE'.
 
-If you have a library that provides a faster malloc than your system's
-usual malloc, it is good idea to include it in LIBS.  For example,
-using the malloc that comes with GNU Emacs version 20 can give a
-worthwhile (and sometimes spectacular) performance improvement.
+Sharing Defaults
+================
 
-Many programs within the `groff' system are written in the Perl
-language.  So you need a `perl' program with the least version of
-`v5.6.1'.
+   If you want to set default values for 'configure' scripts to share,
+you can create a site shell script called 'config.site' that gives
+default values for variables like 'CC', 'cache_file', and 'prefix'.
+'configure' looks for 'PREFIX/share/config.site' if it exists, then
+'PREFIX/etc/config.site' if it exists.  Or, you can set the
+'CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all 'configure' scripts look for a site script.
 
+Defining Variables
+==================
 
-If you want A4 or letter paper format and the configure script produces
-an incorrect guess, say
+   Variables not defined in a site shell script can be set in the
+environment passed to 'configure'.  However, some packages may run
+configure again during the build, and the customized values of these
+variables may be lost.  In order to avoid this problem, you should set
+them in the 'configure' command line, using 'VAR=value'.  For example:
 
-  PAGE=xxx ./configure
+     ./configure CC=/usr/local2/bin/gcc
 
-where `xxx' should be either `A4' or `letter'.  Note that this only
-affects the paper selection of some device drivers like grops (which
-can be still overridden on the command line).  For compatibility with
-ditroff, the default page length in gtroff is always 11 inches.  The
-page length can be changed with the `pl' request.
+causes the specified 'gcc' to be used as the C compiler (unless it is
+overridden in the site shell script).
 
-When you have built groff but not installed yet, you can use the
-test-groff script to try groff out on one of the man pages.  (Use the
-.n files not the .man files.)  The test-groff script sets up environment
-variables to allow groff to run without being installed.  For example,
-you could do
+Unfortunately, this technique does not work for 'CONFIG_SHELL' due to an
+Autoconf limitation.  Until the limitation is lifted, you can use this
+workaround:
 
-  ./test-groff -man -Tascii src/roff/groff/groff.n | less
+     CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash
 
-to display the groff(1) man page with the `less' pager.
+'configure' Invocation
+======================
 
-To get a DVI, PDF, or HTML version of the groff texinfo manual, say
-`make groff.dvi', `make groff.pdf', or `make groff.html', respectively,
-in the `doc' subdirectory (after configuring the groff package).  Note
-that you need texinfo version 4.8 as a prerequisite.
+   'configure' recognizes the following options to control how it
+operates.
 
-If you have problems, read the PROBLEMS file.  If this doesn't help
-and you need support, please contact the `groff' mailing list.  If you
-think that you have found a bug, please submit a report in our bug
-tracker at
+'--help'
+'-h'
+     Print a summary of all of the options to 'configure', and exit.
 
-  https://savannah.gnu.org/projects/groff
+'--help=short'
+'--help=recursive'
+     Print a summary of the options unique to this package's
+     'configure', and exit.  The 'short' variant lists options used only
+     in the top level, while the 'recursive' variant lists options also
+     present in any nested packages.
 
-Alternative, but less preferable, you may send a bug report using the
-form in the file BUG-REPORT.
+'--version'
+'-V'
+     Print the version of Autoconf used to generate the 'configure'
+     script, and exit.
 
-##### Emacs settings
-Local Variables:
-mode: text
-End:
+'--cache-file=FILE'
+     Enable the cache: use and save the results of the tests in FILE,
+     traditionally 'config.cache'.  FILE defaults to '/dev/null' to
+     disable caching.
+
+'--config-cache'
+'-C'
+     Alias for '--cache-file=config.cache'.
+
+'--quiet'
+'--silent'
+'-q'
+     Do not print messages saying which checks are being made.  To
+     suppress all normal output, redirect it to '/dev/null' (any error
+     messages will still be shown).
+
+'--srcdir=DIR'
+     Look for the package's source code in directory DIR.  Usually
+     'configure' can determine that directory automatically.
+
+'--prefix=DIR'
+     Use DIR as the installation prefix.  *note Installation Names:: for
+     more details, including other options available for fine-tuning the
+     installation locations.
+
+'--no-create'
+'-n'
+     Run the configure checks, but stop before creating any output
+     files.
+
+'configure' also accepts some other, not widely useful, options.  Run
+'configure --help' for more details.
index 4cd6557..490f9d7 100644 (file)
@@ -1,35 +1,82 @@
-    Copyright 2013-2014 Free Software Foundation, Inc.
+    Copyright 2013-2018 Free Software Foundation, Inc.
 
     Copying and distribution of this file, with or without
     modification, are permitted in any medium without royalty provided
     the copyright notice and this notice are preserved.
 
 This file contains information that supplements the generic
-installation instructions in file `INSTALL.gen'.  It is meant for
+installation instructions in file `INSTALL'.  It is meant for
 people building directly from the development repository, rather than
 a release or snapshot tarball.
 
 If you want to start compiling the `groff' system with an existing
-script `configure' you won't need the information in this file.
+script `configure' you won't need the information in this file. You
+need them only if you want to build groff from the git repository.
 
-But if you want to use the `GNU autotools' (`aclocal', `autoreconf')
-for creating the following and some more files:
+1. Initial build
+----------------
 
-    aclocal.m4
-    configure
-    Makefile
+You will need autoconf version and 2.65 or higher and automake version
+1.12.2 or higher. These minimal versions are set in the bootstrap.conf
+file.
 
-To update file `aclocal.m4', run the shell command
+On operating systems supporting concurrent installation of multiple
+versions of the autotools, set the following environment variables:
 
-    $ aclocal -I m4
+  export AUTOMAKE_VERSION=1.14
+  export AUTOCONF_VERSION=2.69
 
-To recreate the files `configure' and `Makefile', use the shell
-command
+You will also need to have `pkg-config' installed on your system.
 
-    $ autoreconf -I m4
+First invoke the bootstrap script:
 
-The option `-I m4' is necessary.  It refers to the subdirectory `m4'
-that has files with m4 macro definitions needed by the `autotools'.
+    $ ./bootstrap
+
+This will:
+  
+  - clone the gnulib repository as a git submodule in 'gnulib', add
+    the needed gnulib sources files in 'lib', add the needed gnulib m4
+    macros in 'gnulib_m4'
+
+  - Invoke autoreconf that will call all the `GNU autotools'
+    (`aclocal', `autoconf', `automake') in the right order for
+    creating the following files:
+
+    -- INSTALL (a symlink to gnulib's INSTALL file)
+    -- Makefile.in
+    -- aclocal.m4
+    -- autom4te.cache/
+    -- build-aux/ (that contains all the helper scripts) 
+    -- configure
+    -- src/include/config.hin
+
+Note that aclocal.m4 is generated and the groff m4 macros are included
+via the acinclude.m4 file.
+  
+At this point you can invoke the `configure' script (that generates
+the `config.status' script; it is the `config.status' script generates
+the Makefile) and call 'make' to build the groff project. You can do
+it in the source tree:
+
+    $ ./configure
+    $ make
+
+You can also build groff in an out of source build tree, which is cleaner:
+
+    $ mkdir build
+    $ cd build
+    $ ../configure
+    $ make
+
+Note that parallel build is also supported and make can be invoked
+with the -j option, which will greatly speed up the build.
+
+When the build is finished you can install the whole groff
+installation with:
+
+    $ make install
+
+Notes:
 
 If you use an old `autoreconf' version < 2.69, there might be an error
 warning like:
@@ -44,23 +91,51 @@ warning like:
 Just ignore this.  It doesn't occur in the actual versions of
 `autoreconf'.
 
-You may even use the shell command
+Troff errors of the types
+
+  can't transparently output node at top level
+    and
+  can't translate character code n to special character 'c' in transparent throughput
+
+may safely be ignored.
+
+A few sanity checks can be done with the command:
+
+    $ make check
+
+This will perform some tests on the generated examples.  However,
+these checks are for the moment quite limited.
+
+The groff texinfo manual can be generated in pdf and html formats
+with:
+
+    $ make doc
+
+and installed with:
+
+    $ make install-doc
+
+
+2. Modification of autotools files
+----------------------------------
+
+Previously, when groff used `autoconf' only and not `automake', you
+had to invoke manually the autotools, depending on what you
+modified. For example, to change the file `aclocal.m4', you had to run
+the shell command 'aclocal -I m4', to recreate the files `configure'
+and `Makefile', you had to use the command 'autoreconf -I m4'.
+
+Now, as groff uses `automake', you don't need to run `autoreconf'. If
+you make some changes in Makefile.am or configure.ac, all the files
+that need to be updated will be regenerated when you execute `make'.
 
-    $ autoconf -I m4
 
-instead of `autoreconf', but that will ignore some features.  So
-`autoreconf' is better.
 
-`automake' is not used currently, however, we plan to convert the
-build system accordingly.  If you have experience in creating
-`Makefile.am' files we would be glad if you could help us in the
-conversion process.  Please contact the groff mailing list.
+3. Quick start on the usage of `automake' in groff
+--------------------------------------------------
 
-After the use of the `GNU autotools', the usual compilation should
-work.  If the run of `configure' produces error reports you have
-produced errors in the `autotools' modification.
+A little document explaining the basics of automake and its usage in
+groff is available in doc/automake.mom. It is currently not
+automatically generated, to build it:
 
-##### Emacs settings
-Local Variables:
-mode: text
-End:
+pdfmom automake.mom > automake.pdf
diff --git a/INSTALL.extra b/INSTALL.extra
new file mode 100644 (file)
index 0000000..d7bb2fd
--- /dev/null
@@ -0,0 +1,150 @@
+    Copyright 1997-2018 Free Software Foundation, Inc.
+
+    Copying and distribution of this file, with or without modification,
+    are permitted in any medium without royalty provided the copyright
+    notice and this notice are preserved.
+
+This file contains information that supplements the generic
+installation instructions in file `INSTALL'.
+
+
+Normal Installation
+===================
+
+The simplest way to compile groff is:
+
+  1. `cd' to the directory containing groff's source code and type
+     `./configure' to configure groff for your system.  If you are
+     using `csh' on an old version of System V, you might need to type
+     `sh ./configure' instead to prevent `csh' from trying to execute
+     `configure' itself.
+
+     Running `configure' takes awhile.  While running, it prints some
+     messages telling which features it is checking for.
+
+  2. Type `make' to compile groff.
+
+  3. Type `sudo make install' to install the groff programs and any
+     data files and documentation.  `make install' is the only step for
+     which you need `root' access; this is done by `sudo'.
+
+  4. You can remove the groff binaries and object files from the
+     source code directory by typing `make clean'.  To also remove the
+     files that `configure' created (so you can compile groff for
+     a different kind of computer), type `make distclean'.
+
+
+External Installation
+=====================
+
+It is also possible to perform the whole installation process outside
+of the source code directory.  In this case a whole external build
+directory structure is created without changing any parts of the source
+code tree.  This is useful if the source code is read-only or if
+several different installations, such as for multiple architectures,
+should be constructed.
+
+As an example we assume that the source code of the `groff' code is in
+`/usr/local/src/groff', and that the build process should be done
+within the directory `/home/my/groff.compile'.
+
+  0. Create `/home/my/groff.compile' and change to that directory.
+
+  1. Call `/usr/local/src/groff/configure' in that directory to
+     configure groff for your system.  If you are using `csh' on an old
+     version of System V, you might need to type `sh
+     /usr/local/src/groff/configure' instead.
+
+  2. Type `make' to compile groff in that directory.
+
+  3. Type `sudo make install' to install the groff programs and any
+     data files and documentation.
+
+  4. You can remove the groff binaries and object files from the
+     build directory by typing `make clean'.  To also remove the
+     files that `configure' created (so you can compile the package for
+     a different kind of computer), type `make distclean'.
+
+
+Special Platforms
+=================
+
+For instructions how to build groff with DJGPP tools for MS-DOS and
+MS-Windows, see the file arch/djgpp/README.
+
+For instructions how to build groff with the MinGW tools for
+MS-Windows, see the file README.MinGW.
+
+
+Dependencies
+============
+
+groff is written in C++, so you need a C++ compiler.  The C++ source
+files use a suffix of `.cpp', so your C++ compiler must be able to
+handle this.  If you don't already have a C++ compiler, we suggest gcc
+2.7.1 or later (gcc version 2 includes GNU C++ as well as GNU C).  From
+gcc 2.5, it is no longer necessary to install libg++: the C++ header
+files needed by groff are created by the gcc installation process.  To
+override configure's choice of C++ compiler, you can set the CXX
+environment variable.
+
+If you have a library that provides a faster malloc than your system's
+usual malloc, it is good idea to include it in LIBS.  For example,
+using the malloc that comes with GNU Emacs version 20 can give a
+worthwhile (and sometimes spectacular) performance improvement.
+
+Many programs within the `groff' system are written in the Perl
+language.  So you need a `perl' program with the least version of
+`v5.6.1'.
+
+In order to build the documentation you would need `makeinfo' from the
+'texinfo' package, in fact `configure' will fail if this program is
+not found unless you pass the option `with-doc=no'.
+
+The `uchardet' library is an optional dependency of the `preconv'
+program: if this library is found by `configure' it will be
+automatically used by `preconv'.  In order to discover the presence of
+the `uchardet' library you would also need to have the `pkg-config'
+program installed on your system.
+
+
+Miscellaneous
+=============
+
+If you want A4 or letter paper format and the configure script produces
+an incorrect guess, say
+
+  PAGE=xxx ./configure
+
+where `xxx' should be either `A4' or `letter'.  Note that this only
+affects the paper selection of some device drivers like grops (which
+can be still overridden on the command line).  For compatibility with
+ditroff, the default page length in gtroff is always 11 inches.  The
+page length can be changed with the `pl' request.
+
+When you have built groff but not installed yet, you can use the
+test-groff script to try groff out on one of the man pages.  (Use the
+.n files not the .man files.)  The test-groff script sets up environment
+variables to allow groff to run without being installed.  For example,
+you could do
+
+  ./test-groff -man -Tascii src/roff/groff/groff.n | less
+
+to display the groff(1) man page with the `less' pager.
+
+To get a DVI, PDF, or HTML version of the groff texinfo manual, say
+`make groff.dvi', `make groff.pdf', or `make groff.html', respectively,
+in the `doc' subdirectory (after configuring the groff package).  Note
+that you need texinfo version 4.8 as a prerequisite.
+
+If you have problems, read the PROBLEMS file.  If this doesn't help
+and you need support, please contact the `groff' mailing list.  If you
+think that you have found a bug, please submit a report in our bug
+tracker at
+
+  https://savannah.gnu.org/projects/groff
+
+##### Emacs settings
+Local Variables:
+mode: text
+End:
diff --git a/INSTALL.gen b/INSTALL.gen
deleted file mode 100644 (file)
index 2099840..0000000
+++ /dev/null
@@ -1,370 +0,0 @@
-Installation Instructions
-*************************
-
-Copyright (C) 1994-1996, 1999-2002, 2004-2013 Free Software Foundation,
-Inc.
-
-   Copying and distribution of this file, with or without modification,
-are permitted in any medium without royalty provided the copyright
-notice and this notice are preserved.  This file is offered as-is,
-without warranty of any kind.
-
-Basic Installation
-==================
-
-   Briefly, the shell command `./configure && make && make install'
-should configure, build, and install this package.  The following
-more-detailed instructions are generic; see the `README' file for
-instructions specific to this package.  Some packages provide this
-`INSTALL' file but do not implement all of the features documented
-below.  The lack of an optional feature in a given package is not
-necessarily a bug.  More recommendations for GNU packages can be found
-in *note Makefile Conventions: (standards)Makefile Conventions.
-
-   The `configure' shell script attempts to guess correct values for
-various system-dependent variables used during compilation.  It uses
-those values to create a `Makefile' in each directory of the package.
-It may also create one or more `.h' files containing system-dependent
-definitions.  Finally, it creates a shell script `config.status' that
-you can run in the future to recreate the current configuration, and a
-file `config.log' containing compiler output (useful mainly for
-debugging `configure').
-
-   It can also use an optional file (typically called `config.cache'
-and enabled with `--cache-file=config.cache' or simply `-C') that saves
-the results of its tests to speed up reconfiguring.  Caching is
-disabled by default to prevent problems with accidental use of stale
-cache files.
-
-   If you need to do unusual things to compile the package, please try
-to figure out how `configure' could check whether to do them, and mail
-diffs or instructions to the address given in the `README' so they can
-be considered for the next release.  If you are using the cache, and at
-some point `config.cache' contains results you don't want to keep, you
-may remove or edit it.
-
-   The file `configure.ac' (or `configure.in') is used to create
-`configure' by a program called `autoconf'.  You need `configure.ac' if
-you want to change it or regenerate `configure' using a newer version
-of `autoconf'.
-
-   The simplest way to compile this package is:
-
-  1. `cd' to the directory containing the package's source code and type
-     `./configure' to configure the package for your system.
-
-     Running `configure' might take a while.  While running, it prints
-     some messages telling which features it is checking for.
-
-  2. Type `make' to compile the package.
-
-  3. Optionally, type `make check' to run any self-tests that come with
-     the package, generally using the just-built uninstalled binaries.
-
-  4. Type `make install' to install the programs and any data files and
-     documentation.  When installing into a prefix owned by root, it is
-     recommended that the package be configured and built as a regular
-     user, and only the `make install' phase executed with root
-     privileges.
-
-  5. Optionally, type `make installcheck' to repeat any self-tests, but
-     this time using the binaries in their final installed location.
-     This target does not install anything.  Running this target as a
-     regular user, particularly if the prior `make install' required
-     root privileges, verifies that the installation completed
-     correctly.
-
-  6. You can remove the program binaries and object files from the
-     source code directory by typing `make clean'.  To also remove the
-     files that `configure' created (so you can compile the package for
-     a different kind of computer), type `make distclean'.  There is
-     also a `make maintainer-clean' target, but that is intended mainly
-     for the package's developers.  If you use it, you may have to get
-     all sorts of other programs in order to regenerate files that came
-     with the distribution.
-
-  7. Often, you can also type `make uninstall' to remove the installed
-     files again.  In practice, not all packages have tested that
-     uninstallation works correctly, even though it is required by the
-     GNU Coding Standards.
-
-  8. Some packages, particularly those that use Automake, provide `make
-     distcheck', which can by used by developers to test that all other
-     targets like `make install' and `make uninstall' work correctly.
-     This target is generally not run by end users.
-
-Compilers and Options
-=====================
-
-   Some systems require unusual options for compilation or linking that
-the `configure' script does not know about.  Run `./configure --help'
-for details on some of the pertinent environment variables.
-
-   You can give `configure' initial values for configuration parameters
-by setting variables in the command line or in the environment.  Here
-is an example:
-
-     ./configure CC=c99 CFLAGS=-g LIBS=-lposix
-
-   *Note Defining Variables::, for more details.
-
-Compiling For Multiple Architectures
-====================================
-
-   You can compile the package for more than one kind of computer at the
-same time, by placing the object files for each architecture in their
-own directory.  To do this, you can use GNU `make'.  `cd' to the
-directory where you want the object files and executables to go and run
-the `configure' script.  `configure' automatically checks for the
-source code in the directory that `configure' is in and in `..'.  This
-is known as a "VPATH" build.
-
-   With a non-GNU `make', it is safer to compile the package for one
-architecture at a time in the source code directory.  After you have
-installed the package for one architecture, use `make distclean' before
-reconfiguring for another architecture.
-
-   On MacOS X 10.5 and later systems, you can create libraries and
-executables that work on multiple system types--known as "fat" or
-"universal" binaries--by specifying multiple `-arch' options to the
-compiler but only a single `-arch' option to the preprocessor.  Like
-this:
-
-     ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
-                 CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
-                 CPP="gcc -E" CXXCPP="g++ -E"
-
-   This is not guaranteed to produce working output in all cases, you
-may have to build one architecture at a time and combine the results
-using the `lipo' tool if you have problems.
-
-Installation Names
-==================
-
-   By default, `make install' installs the package's commands under
-`/usr/local/bin', include files under `/usr/local/include', etc.  You
-can specify an installation prefix other than `/usr/local' by giving
-`configure' the option `--prefix=PREFIX', where PREFIX must be an
-absolute file name.
-
-   You can specify separate installation prefixes for
-architecture-specific files and architecture-independent files.  If you
-pass the option `--exec-prefix=PREFIX' to `configure', the package uses
-PREFIX as the prefix for installing programs and libraries.
-Documentation and other data files still use the regular prefix.
-
-   In addition, if you use an unusual directory layout you can give
-options like `--bindir=DIR' to specify different values for particular
-kinds of files.  Run `configure --help' for a list of the directories
-you can set and what kinds of files go in them.  In general, the
-default for these options is expressed in terms of `${prefix}', so that
-specifying just `--prefix' will affect all of the other directory
-specifications that were not explicitly provided.
-
-   The most portable way to affect installation locations is to pass the
-correct locations to `configure'; however, many packages provide one or
-both of the following shortcuts of passing variable assignments to the
-`make install' command line to change installation locations without
-having to reconfigure or recompile.
-
-   The first method involves providing an override variable for each
-affected directory.  For example, `make install
-prefix=/alternate/directory' will choose an alternate location for all
-directory configuration variables that were expressed in terms of
-`${prefix}'.  Any directories that were specified during `configure',
-but not in terms of `${prefix}', must each be overridden at install
-time for the entire installation to be relocated.  The approach of
-makefile variable overrides for each directory variable is required by
-the GNU Coding Standards, and ideally causes no recompilation.
-However, some platforms have known limitations with the semantics of
-shared libraries that end up requiring recompilation when using this
-method, particularly noticeable in packages that use GNU Libtool.
-
-   The second method involves providing the `DESTDIR' variable.  For
-example, `make install DESTDIR=/alternate/directory' will prepend
-`/alternate/directory' before all installation names.  The approach of
-`DESTDIR' overrides is not required by the GNU Coding Standards, and
-does not work on platforms that have drive letters.  On the other hand,
-it does better at avoiding recompilation issues, and works well even
-when some directory options were not specified in terms of `${prefix}'
-at `configure' time.
-
-Optional Features
-=================
-
-   If the package supports it, you can cause programs to be installed
-with an extra prefix or suffix on their names by giving `configure' the
-option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
-
-   Some packages pay attention to `--enable-FEATURE' options to
-`configure', where FEATURE indicates an optional part of the package.
-They may also pay attention to `--with-PACKAGE' options, where PACKAGE
-is something like `gnu-as' or `x' (for the X Window System).  The
-`README' should mention any `--enable-' and `--with-' options that the
-package recognizes.
-
-   For packages that use the X Window System, `configure' can usually
-find the X include and library files automatically, but if it doesn't,
-you can use the `configure' options `--x-includes=DIR' and
-`--x-libraries=DIR' to specify their locations.
-
-   Some packages offer the ability to configure how verbose the
-execution of `make' will be.  For these packages, running `./configure
---enable-silent-rules' sets the default to minimal output, which can be
-overridden with `make V=1'; while running `./configure
---disable-silent-rules' sets the default to verbose, which can be
-overridden with `make V=0'.
-
-Particular systems
-==================
-
-   On HP-UX, the default C compiler is not ANSI C compatible.  If GNU
-CC is not installed, it is recommended to use the following options in
-order to use an ANSI C compiler:
-
-     ./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
-
-and if that doesn't work, install pre-built binaries of GCC for HP-UX.
-
-   HP-UX `make' updates targets which have the same time stamps as
-their prerequisites, which makes it generally unusable when shipped
-generated files such as `configure' are involved.  Use GNU `make'
-instead.
-
-   On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
-parse its `<wchar.h>' header file.  The option `-nodtk' can be used as
-a workaround.  If GNU CC is not installed, it is therefore recommended
-to try
-
-     ./configure CC="cc"
-
-and if that doesn't work, try
-
-     ./configure CC="cc -nodtk"
-
-   On Solaris, don't put `/usr/ucb' early in your `PATH'.  This
-directory contains several dysfunctional programs; working variants of
-these programs are available in `/usr/bin'.  So, if you need `/usr/ucb'
-in your `PATH', put it _after_ `/usr/bin'.
-
-   On Haiku, software installed for all users goes in `/boot/common',
-not `/usr/local'.  It is recommended to use the following options:
-
-     ./configure --prefix=/boot/common
-
-Specifying the System Type
-==========================
-
-   There may be some features `configure' cannot figure out
-automatically, but needs to determine by the type of machine the package
-will run on.  Usually, assuming the package is built to be run on the
-_same_ architectures, `configure' can figure that out, but if it prints
-a message saying it cannot guess the machine type, give it the
-`--build=TYPE' option.  TYPE can either be a short name for the system
-type, such as `sun4', or a canonical name which has the form:
-
-     CPU-COMPANY-SYSTEM
-
-where SYSTEM can have one of these forms:
-
-     OS
-     KERNEL-OS
-
-   See the file `config.sub' for the possible values of each field.  If
-`config.sub' isn't included in this package, then this package doesn't
-need to know the machine type.
-
-   If you are _building_ compiler tools for cross-compiling, you should
-use the option `--target=TYPE' to select the type of system they will
-produce code for.
-
-   If you want to _use_ a cross compiler, that generates code for a
-platform different from the build platform, you should specify the
-"host" platform (i.e., that on which the generated programs will
-eventually be run) with `--host=TYPE'.
-
-Sharing Defaults
-================
-
-   If you want to set default values for `configure' scripts to share,
-you can create a site shell script called `config.site' that gives
-default values for variables like `CC', `cache_file', and `prefix'.
-`configure' looks for `PREFIX/share/config.site' if it exists, then
-`PREFIX/etc/config.site' if it exists.  Or, you can set the
-`CONFIG_SITE' environment variable to the location of the site script.
-A warning: not all `configure' scripts look for a site script.
-
-Defining Variables
-==================
-
-   Variables not defined in a site shell script can be set in the
-environment passed to `configure'.  However, some packages may run
-configure again during the build, and the customized values of these
-variables may be lost.  In order to avoid this problem, you should set
-them in the `configure' command line, using `VAR=value'.  For example:
-
-     ./configure CC=/usr/local2/bin/gcc
-
-causes the specified `gcc' to be used as the C compiler (unless it is
-overridden in the site shell script).
-
-Unfortunately, this technique does not work for `CONFIG_SHELL' due to
-an Autoconf limitation.  Until the limitation is lifted, you can use
-this workaround:
-
-     CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash
-
-`configure' Invocation
-======================
-
-   `configure' recognizes the following options to control how it
-operates.
-
-`--help'
-`-h'
-     Print a summary of all of the options to `configure', and exit.
-
-`--help=short'
-`--help=recursive'
-     Print a summary of the options unique to this package's
-     `configure', and exit.  The `short' variant lists options used
-     only in the top level, while the `recursive' variant lists options
-     also present in any nested packages.
-
-`--version'
-`-V'
-     Print the version of Autoconf used to generate the `configure'
-     script, and exit.
-
-`--cache-file=FILE'
-     Enable the cache: use and save the results of the tests in FILE,
-     traditionally `config.cache'.  FILE defaults to `/dev/null' to
-     disable caching.
-
-`--config-cache'
-`-C'
-     Alias for `--cache-file=config.cache'.
-
-`--quiet'
-`--silent'
-`-q'
-     Do not print messages saying which checks are being made.  To
-     suppress all normal output, redirect it to `/dev/null' (any error
-     messages will still be shown).
-
-`--srcdir=DIR'
-     Look for the package's source code in directory DIR.  Usually
-     `configure' can determine that directory automatically.
-
-`--prefix=DIR'
-     Use DIR as the installation prefix.  *note Installation Names::
-     for more details, including other options available for fine-tuning
-     the installation locations.
-
-`--no-create'
-`-n'
-     Run the configure checks, but stop before creating any output
-     files.
-
-`configure' also accepts some other, not widely useful, options.  Run
-`configure --help' for more details.
index b6c163d..8512b9e 100644 (file)
--- a/LICENSES
+++ b/LICENSES
@@ -1,4 +1,4 @@
-    Copyright 2003-2014 Free Software Foundation, Inc.
+    Copyright 2003-2018 Free Software Foundation, Inc.
 
     Copying and distribution of this file, with or without modification,
     are permitted in any medium without royalty provided the copyright
@@ -36,16 +36,6 @@ hasn't been assigned to the FSF).
   Source Files
   ------------
 
-  . The file `src/libs/snprintf/snprintf.c', written by Mark Martinec
-    <mark.martinec@ijs.si>.
-
-    Please look into snprintf.c for the copyright message.
-
-    The complete snprintf package together with documentation is available
-    from
-
-      http://www.ijs.si/software/snprintf/    .
-
   . The `grn' preprocessor, written by Barry Roitblat <barry@rentonww.com>
     and David Slattengren <slatteng@Xinet.COM>.  These files have been part
     of the original Berkeley ditroff distribution, without AT&T code, and
@@ -152,23 +142,16 @@ hasn't been assigned to the FSF).
     See the file itself for a copyright notice.
 
   . The files `tmac/hyphen.det' and `tmac/hyphen.den' contain the same
-    patterns as the files `dehyphn.tex' and `dehypht.tex' (for TeX), which
-    can be found at
+    patterns as the files `dehypht-x-2017-03-31.pat' and
+    `dehyphn-x-2017-03-31.pat' (for TeX), respectively, which can be found
+    at
 
-      http://dante.ctan.org/CTAN/language/hyphenation/dehyphn.tex
-      http://dante.ctan.org/CTAN/language/hyphenation/dehypht.tex    .
+      http://ctan.org/tex-archive/language/hyphenation/dehyph-exptl
 
-    The patterns have been converted to a format groff can understand.
+    The patterns have been converted to latin-1.
 
     See the files themselves for a copyright notice.
 
-  . The file `tmac/hyphenex.det' is identical to the file `dehyphtex.tex',
-    which can be found at
-
-      http://dante.ctan.org/CTAN/language/hyphenation/dehyphtex.tex    .
-
-    See the file itself for a copyright notice.
-
   . The file `tmac/hyphen.cs' contains the same patterns as the file
     `czhyphen.tex' (for TeX), which can be found in the archive
 
index 2bec20f..7ca4fc8 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -1,4 +1,4 @@
-    Copyright 2001-2014 Free Software Foundation, Inc.
+    Copyright 2001-2018 Free Software Foundation, Inc.
 
     Copying and distribution of this file, with or without modification,
     are permitted in any medium without royalty provided the copyright
@@ -101,7 +101,6 @@ the groff source distribution.
   libdriver     Parser for intermediate output and postprocessor code.
   libgroff      Library for general support functions used everywhere.
   libxutil      Utility functions for xditview and xtotroff.
-  snprintf      An implementation of snprintf() and friends.
 
 ./src/preproc   Preprocessors.
   eqn           Mathematical formulae.
index 25ecf0d..506dd0a 100644 (file)
@@ -1,4 +1,4 @@
-    Copyright 2000-2014 Free Software Foundation, Inc.
+    Copyright 2000-2018 Free Software Foundation, Inc.
 
     Copying and distribution of this file, with or without modification,
     are permitted in any medium without royalty provided the copyright
@@ -219,7 +219,7 @@ miscellaneous
 
   o `AJM Header' is a set of troff macros used in production of the
     Australian Journal of Management.  They use the Memorandum Macros (mm)
-    of AT&T, and so should be invoked with the UNIX troff -mm flag; they
+    of AT&T, and so should be invoked with the Unix troff -mm flag; they
     should also work with the GNU troff -mm flag.
 
 . Various contributed stuff like additional font files, macro packages, and
diff --git a/Makefile.am b/Makefile.am
new file mode 100644 (file)
index 0000000..d18c49b
--- /dev/null
@@ -0,0 +1,941 @@
+# Copyright (C) 1989-2018 Free Software Foundation, Inc.
+# Original Makefile.in written by James Clark (jjc@jclark.com)
+# Migrated to Automake by Bertrand Garrigues
+#
+# Last update: 2017-11-02
+#
+# This file is part of groff.
+#
+# groff 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.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+#
+# Makefile.am
+#
+
+# The variables that are listed in the following comments will be
+# automatically set by automake in the generated Makefile.in
+
+# SHELL
+
+# PACKAGE_TARNAME
+
+# srcdir
+
+# top_srcdir
+
+# VPATH
+
+# top_builddir
+
+# HOST
+# `HOST' is the canonical host specification,
+#    CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or
+#    CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+
+# `RT_SEP' is the operating system's native PATH SEPARATOR CHAR, which
+# is to be used in runtime PATHs compiled into groff executables.
+RT_SEP=@GROFF_PATH_SEPARATOR@
+
+# `SH_SEP' is a alternative PATH SEPARATOR CHAR, to be used in shell
+# scripts and makefile rules; it may be the same as `RT_SEP', but,
+# particularly in some Microsoft environments, it may differ.
+SH_SEP=@PATH_SEPARATOR@
+
+# GLIBC2
+# `GLIBC21' is yes if the host operating system uses GNU libc 2.1 or newer,
+# otherwise no.
+
+
+# VERSION is set by automake, based on what is passed to AC_INIT.
+
+# PAGE
+# Define `page' to be letter if your PostScript printer uses 8.5x11
+# paper (USA) and define it to be A4, if it uses A4 paper (rest of the
+# world).
+
+# GHOSTSCRIPT
+# The name of the ghostscript program. Normally, gs, on GNU/Linux
+# but it might be different on MS-DOS/MS-WIN32 systems.
+
+# ALT_GHOSTSCRIPT_PROGS
+# `ALT_GHOSTSCRIPT_PROGS' specifies a list alternative names,
+# which can be tried if `GHOSTSCRIPT' cannot be found at run time.
+
+# ALT_AWK_PROGS
+# Similarly, `ALT_AWK_PROGS' specifies a list of alternative names,
+# which can be tried at run time, to identify the awk program.
+
+# BROKEN_SPOOLER_FLAGS
+# Normally the Postscript driver, grops, produces output that conforms
+# to version 3.0 of the Adobe Document Structuring Conventions.
+# Unfortunately some spoolers and previewers can't handle such output.
+# The BROKEN_SPOOLER_FLAGS variable tells grops what it should do to
+# make its output acceptable to such programs.  This variable controls
+# only the default behaviour of grops; the behaviour can be changed at
+# runtime by the grops -b option (and so by groff -P-b).
+# Use a value of 0 if your spoolers and previewers are able to handle
+# conforming PostScript correctly.
+# Add 1 if no %%{Begin,End}DocumentSetup comments should be generated;
+# this is needed for early versions of TranScript that get confused by
+# anything between the %%EndProlog line and the first %%Page: comment.
+# Add 2 if lines in included files beginning with %! should be
+# stripped out; this is needed for the OpenWindows 2.0 pageview previewer.
+# Add 4 if %%Page, %%Trailer and %%EndProlog comments should be
+# stripped out of included files; this is needed for spoolers that
+# don't understand the %%{Begin,End}Document comments. I suspect this
+# includes early versions of TranScript.
+# Add 8 if the first line of the PostScript output should be %!PS-Adobe-2.0
+# rather than %!PS-Adobe-3.0; this is needed when using Sun's Newsprint
+# with a printer that requires page reversal.
+
+
+# `DEVICE' is the default device.
+DEVICE=ps
+
+# XDEVIDIRS
+# `XDEVDIRS' is either `font/devX{75,100}{,-12}' or empty.
+
+# XPROGDIRS
+# `XPROGDIRS' is either `src/devices/xditview src/utils/xtotroff' or empty.
+
+# XLIBDIRS
+# `XLIBDIRS' is either `src/libs/libxutil' or empty.
+
+# `TTYDEVDIRS' is either `font/devascii font/devlatin1' (for
+# ASCII) or `font/devcp1047' (for EBCDIC) plus font/devutf8.
+TTYDEVDIRS=@TTYDEVDIRS@ font/devutf8
+
+# OTHERDEVDIRS
+# `OTHERDEVDIRS' is either `font/devlj4 font/devlbp' (for ASCII) or
+# empty (for EBCDIC).
+
+# PSPRINT
+# `PSPRINT' is the command to use for printing a PostScript file,
+# for example `lpr'.
+
+# DVIPRINT
+# `DVIPRINT' is the command to use for printing a TeX dvi file,
+# for example `lpr -d'.
+
+# g
+# Prefix for names of programs that have Unix counterparts.
+# For example, if `g' is `g' then troff will be installed as
+# gtroff.  This doesn't affect programs like grops or groff that have
+# no Unix counterparts.  Note that the groff versions of eqn and tbl
+# will not work with Unix troff.
+
+# prefix
+# exec_prefix
+# Common prefix for installation directories.
+# Used in definitions of exec_prefix, datasubdir, fontpath, manroot.
+# This must already exist when you do make install.
+
+# bindir
+# `bindir' says where to install executables.
+
+# libdir
+# `libdir' says where to install platform-dependent data.
+
+# libprogramdir
+# `libprogramdir' is $(libdir)/groff
+
+# `datasubdir' says where to install platform-independent data files.
+# datadir
+# datarootdir
+dataprogramdir=$(datadir)/groff
+datasubdir=$(dataprogramdir)/$(SHORT_VERSION)
+
+# infodir
+# `infodir' says where to install info files.
+
+# docdir
+# `docdir' says where to install documentation files.  The default
+# location is ${datarootdir}/doc/${PACKAGE}, but we add the version
+docdir=$(datarootdir)/doc/${PACKAGE}-$(SHORT_VERSION)
+
+# `exampledir' says where to install example files.
+exampledir=$(docdir)/examples
+
+# `htmldocdir' says where to install documentation in HTML format.
+htmldocdir=$(docdir)/html
+
+# `pdfdocdir' says where to install documentation in PDF format.
+pdfdocdir=$(docdir)/pdf
+
+# `fontdir' says where to install dev*/*.
+fontdir=$(datasubdir)/font
+
+# `oldfontdir' says where to install old font sets (as dev*/*).
+oldfontdir=$(datasubdir)/oldfont
+
+# `localfontdir' says where local fonts will be installed (as dev*/*).
+localfontdir=$(dataprogramdir)/site-font
+
+# `legacyfontdir' is for compatibility with non-GNU troff.
+legacyfontdir=/usr/lib/font
+
+# `fontpath' says where to look for dev*/*.
+fontpath=$(localfontdir)$(RT_SEP)$(fontdir)$(RT_SEP)$(legacyfontdir)
+
+# `tmacdir' says where to install macros.
+tmacdir=$(datasubdir)/tmac
+
+# `systemtmacdir' says where to install platform-dependent macros.
+systemtmacdir=$(libprogramdir)/site-tmac
+
+# `localtmacdir' says where local files will be installed.
+localtmacdir=$(dataprogramdir)/site-tmac
+
+# appresdir
+# `appresdir' says where to install the application resource file for
+# gxditview.
+
+# groffer_dir
+# glilypond_dir
+# grog_dir
+# gpinyin_dir
+
+# `tmacpath' says where to look for macro files.
+# The current directory will be prepended in unsafe mode only; the home
+# directory will be always added.
+# `troffrc' and `troffrc-end' (and `eqnrc') are searched neither in the
+# current nor in the home directory.
+tmacpath=$(systemtmacdir)$(RT_SEP)$(localtmacdir)$(RT_SEP)$(tmacdir)
+
+# sys_tmac_prefix
+# `sys_tmac_prefix' is prefix (if any) for system macro packages.
+
+# pnmtops_nosetpage
+# `pnmtops_nosetpage' is the command to be run to generate an eps
+# file.  Some versions of pnmtops provide the -nosetpage option.
+# We detect this and use it if present.
+
+# tmac_wrap
+# `tmac_wrap' is list of system macro packages that should be made
+# available to groff by creating a corresponding macro package
+# in the groff macro directory that references the system macro
+# package.
+
+# compatibility_wrappers
+# (groff compatibility wrappers for vendor-provided non-GNU macro sets)
+#
+# `compatibility_wrappers' controls the creation and installation of
+# compatibility wrappers for the macro sets named in `tmac_wrap'.
+# Its value must be one of:
+#   `yes'    install compatibility wrappers as the original macro set name
+#            (that is, the default implementation of that macro set), and
+#            install the groff implementation with a prefix (usually g).
+#   `no'     do not install compatibility wrappers; only install the groff
+#            implementation of each macro set.
+#   `manual' install the compatibility wrappers as `<macro>-os' and install
+#            the groff implementation of each macro set as the default
+#            implementation of that macro set.
+
+# Don't make this empty.
+wrapper_suffix_default="-os"
+
+wrapper_suffix=`if test $(compatibility_wrappers) = manual; then echo $(wrapper_suffix_default); fi`
+
+# When `compatibility_wrappers' is `yes', if there is a groff implementation
+# of a macro set listed in $(tmac_wrap), then the groff implementation will be
+# installed with a prefix of $(tmac_prefix) via the collision detection
+# variables $(tmac_m_prefix), $(tmac_s_prefix), and $(tmac_an_prefix).
+
+# Don't make this empty.
+tmac_prefix=g
+
+# The groff -mm macros will be available as -m$(tmac_m_prefix)m.
+tmac_m_prefix=\
+ `if test $(compatibility_wrappers) = yes; then \
+    for i in $(tmac_wrap) ""; do \
+      case "$$i" in m) echo $(tmac_prefix);; esac; \
+    done; \
+  fi`
+
+# The groff -ms macros will be available as -m$(tmac_s_prefix)s.
+tmac_s_prefix=\
+ `if test $(compatibility_wrappers) = yes; then \
+    for i in $(tmac_wrap) ""; do \
+      case "$$i" in s) echo $(tmac_prefix);; esac; \
+    done; \
+  fi`
+
+# The groff -man macros will be available as -m$(tmac_an_prefix)an.
+tmac_an_prefix=\
+ `if test $(compatibility_wrappers) = yes; then \
+    for i in $(tmac_wrap) ""; do \
+      case "$$i" in an) echo $(tmac_prefix);; esac; \
+    done; \
+  fi`
+
+# Extension to be used for refer index files.  Index files are not
+# sharable between different architectures, so you might want to use
+# different suffixes for different architectures.  Choose an extension
+# that doesn't conflict with refer or any other indexing program.
+indexext=.i
+
+# Directory containing the default index for refer.
+indexdir=/usr/dict/papers
+
+# The filename (without suffix) of the default index for refer.
+indexname=Ind
+
+# common_words_file is a file containing a list of common words.
+# If your system provides /usr/lib/eign it will be copied onto this,
+# otherwise the supplied eign file will be used.
+common_words_file=$(datasubdir)/eign
+
+# mandir
+# `manroot' is the root of the man page directory tree.
+manroot=$(mandir)
+
+# `man1ext' is the man section for user commands.
+man1ext=1
+man1dir=$(manroot)/man$(man1ext)
+
+# `man5ext' is the man section for file formats.
+man5ext=5
+man5dir=$(manroot)/man$(man5ext)
+
+# `man7ext' is the man section for macros.
+man7ext=7
+man7dir=$(manroot)/man$(man7ext)
+
+# doc_dist_target_ok
+# `dist' target is disallowed in some `configure' combinations.
+
+# The configure script checks whether the user wants the info documentation.
+# For the repo version this mechanism also suppresses building via `makeinfo'.
+# make_infodoc
+# make_install_infodoc
+# make_uninstall_infodoc
+
+# The configure script checks whether all necessary utility programs for
+# grohtml are available -- only then we can build the HTML documentation.
+# make_htmldoc
+# make_install_htmldoc
+# make_uninstall_htmldoc
+
+# make_htmlexamples
+# make_install_htmlexamples
+# make_uninstall_htmlexamples
+
+# The configure script also checks whether all necessary utility programs
+# for pdfroff are available -- only then we can build PDF documentation.
+# make_pdfdoc
+# make_install_pdfdoc
+# make_uninstall_pdfdoc
+
+# make_pdfexamples
+# make_install_pdfexamples
+# make_uninstall_pdfexamples
+
+# `other' documentation, e.g., `meref.me' and `pic.ms', as well as their
+# generated counterparts..
+# make_otherdoc
+# make_install_otherdoc
+# make_uninstall_otherdoc
+
+# `examples' -- a generic switch, but the generated examples are furtherly
+# subdivided to catch HTML and PDF production availability.
+# make_examples
+# make_install_examples
+# make_uninstall_examples
+
+# Windows `.cmd' files
+# make_winscripts
+# make_install_winscripts
+# make_uninstall_winscripts
+
+# All the previous installation directories, when used, are prefixed with
+# $(DESTDIR) during install and uninstall, to support staged installations.
+
+# config.h might set the following defines:
+#
+# WORDS_BIGENDIAN              if your target platform is big-endian
+# IS_EBCDIC_HOST               if the host's encoding is EBCDIC
+#
+# HAVE_DIRECT_H                if you have <direct.h>
+# HAVE_DIRENT_H                if you have <dirent.h>
+# HAVE_CC_INTTYPES_H           if you have a C++ <inttypes.h>
+# HAVE_PROCESS_H               if you have <process.h>
+# HAVE_LIMITS_H                if you have <limits.h>
+# HAVE_CC_LIMITS_H             if you have a C++ <limits.h>
+# HAVE_MATH_H                  if you have <math.h>
+# HAVE_CC_OSFCN_H              if you have a C++ <osfcn.h>
+# HAVE_STDDEF_H                if you have <stddef.h>
+# HAVE_STDLIB_H                if you have <stdlib.h>
+# HAVE_STRING_H                if you have <string.h>
+# HAVE_STRINGS_H               if you have <strings.h>
+# HAVE_SYS_DIR_H               if you have <sys/dir.h>
+# HAVE_SYS_PARAM_H             if you have <sys/param.h>
+# HAVE_SYS_STAT_H              if you have <sys/stat.h>
+# HAVE_SYS_TIME_H              if you have <sys/time.h>
+# HAVE_SYS_TYPES_H             if you have <sys/types.h>
+# HAVE_UNISTD_H                if you have <unistd.h>
+#
+# HAVE_FMOD                    if you have fmod()
+# HAVE_GETCWD                  if you have getcwd()
+# HAVE_GETTIMEOFDAY            if you have gettimeofday()
+# HAVE_ICONV                   if you have iconv()
+# HAVE_ISATTY                  if you have isatty()
+# HAVE_KILL                    if you have kill()
+# HAVE_LANGINFO_CODESET        if you have nl_langinfo()
+# HAVE_MKSTEMP         if you have mkstemp()
+# HAVE_MMAP                    if you have mmap()
+# HAVE_PUTENV                  if you have putenv()
+# HAVE_RENAME                  if you have rename()
+# HAVE_SETLOCALE               if you have setlocale()
+# HAVE_STRCASECMP              if you have strcasecmp()
+# HAVE_STRNCASECMP             if you have strncasecmp()
+# HAVE_STRERROR                if you have strerror()
+# HAVE_STRSEP                  if you have strsep()
+# HAVE_STRTOL                  if you have strtol()
+# HAVE_SYMLINK         if you have symlink()
+#
+# NEED_DECLARATION_GETTIMEOFTODAY
+#                              if your C++ <sys/time.h> doesn't declare
+#                              gettimeofday()
+# NEED_DECLARATION_HYPOT       if your C++ <math.h> doesn't declare hypot()
+# NEED_DECLARATION_PCLOSE      if your C++ <stdio.h> doesn't declare pclose()
+# NEED_DECLARATION_POPEN       if your C++ <stdio.h> doesn't declare popen()
+# NEED_DECLARATION_PUTENV      if your C++ <stdlib.h> doesn't declare
+#                              putenv()
+# NEED_DECLARATION_RAND        if your C++ <stdlib.h> doesn't declare rand()
+# NEED_DECLARATION_SRAND       if your C++ <stdlib.h> doesn't declare srand()
+# NEED_DECLARATION_STRCASECMP  if your C++ <string.h> doesn't declare
+#                              strcasecmp()
+# NEED_DECLARATION_STRNCASECMP
+#                              if your C++ <string.h> doesn't declare
+#                              strncasecmp()
+# NEED_DECLARATION_VFPRINTF    if your C++ <stdio.h> doesn't declare
+#                              vfprintf()
+#
+# HAVE_DECL_GETC_UNLOCKED      if you have getc_unlocked()
+# HAVE_DECL_SYS_SIGLIST        if you have sys_siglist[]
+#
+# HAVE_STRUCT_EXCEPTION        if <math.h> defines struct exception
+# HAVE_SYS_NERR                if you have sysnerr in <errno.h> or <stdio.h>
+# HAVE_SYS_ERRLIST             if you have sys_errlist in <errno.h> or
+#                              <stdio.h>
+# ICONV_CONST=const            if declaration of iconv() needs const
+# LONG_FOR_TIME_T              if localtime() takes a long * not a time_t *
+# RETSIGTYPE=int               if signal handlers return int not void
+# RET_TYPE_SRAND_IS_VOID       if srand() returns void not int
+#
+# WCOREFLAG=0200               if the 0200 bit of the status returned by
+#                              wait() indicates whether a core image was
+#                              produced for a process that was terminated
+#                              by a signal
+#
+# HAVE_WORKING_O_NOATIME      define if <fcntl.h>'s O_NOATIME flag works
+# HAVE_WORKING_O_NOFOLLOW     define if <fcntl.h>'s O_NOFOLLOW flag works
+#
+# uintmax_t=<value>            define to `unsigned long' or `unsigned long
+#                              long' if <inttypes.h> does not exist
+#
+# TRADITIONAL_CPP              if your C++ compiler uses a traditional
+#                              (Reiser) preprocessor
+# ARRAY_DELETE_NEEDS_SIZE      if your C++ doesn't understand `delete []'
+#
+# PAGE=A4                      if the printer's page size is A4
+# GHOSTSCRIPT=gs               the name (and directory if required) of the
+#                              ghostscript program
+
+# Include
+#
+#   {fmod,getcwd,mkstemp,putenv,strcasecmp,
+#    strerror,strncasecmp,strtol}.$(OBJEXT)
+#
+# LIBOBJS
+# in LIBOBJS if your C library is missing the corresponding function.
+
+# `CCC' is the compiler for C++ (.cpp) files.
+CCC=@CXX@
+# CC
+# CFLAGS
+# CPPFLAGS
+# LDFLAGS
+
+# X_CFLAGS
+# X_LIBS
+# X_EXTRA_LIBS
+# X_PRE_LIBS
+
+# YACC
+
+# GREP
+# EGREP
+
+# MAKEINFO
+
+# EXEEXT
+# OBJEXT
+# LIBEXT
+# LIBS
+# LIBM
+# LIBICONV
+# RANLIB
+# INSTALL
+# INSTALL_PROGRAM
+# INSTALL_SCRIPT
+# INSTALL_DATA
+# INSTALL_INFO
+# LN_S
+
+AR=ar
+ETAGS=etags
+ETAGSFLAGS=
+# Flag that tells etags to assume C++.
+ETAGSCCFLAG=-C
+# Full path to perl.
+# PERL
+# PERLVERSION
+# Sed command with which to edit sh scripts.
+# SH_SCRIPT_SED_CMD
+# Sed script to deal with OS dependencies in sh scripts.
+SH_DEPS_SED_SCRIPT=$(top_builddir)/shdeps.sed
+
+# On some platforms we need to set LANG and LC_ALL to C for sed
+SED=\
+  LANG=C \
+  LC_ALL=C \
+  sed
+
+# The program to create directory hierarchies.
+# mkinstalldirs is now in gnulib/build-aux
+
+PURIFY=purify
+PURIFYCCFLAGS=
+#PURIFYCCFLAGS=-g++=yes \
+#  -collector=`dirname \`$(CCC) -print-libgcc-file-name\``/ld
+
+# Add groff and gnulib m4 macros
+ACLOCAL_AMFLAGS = -I m4 -I gnulib_m4
+
+# Common preprocessor flags: gnulib includes, common includes in
+# src/include, and config.h that is generated in the build tree
+AM_CPPFLAGS = \
+  -I$(top_srcdir)/src/include \
+  -I$(top_srcdir)/lib \
+  -I$(top_builddir)/src/include \
+  -I$(top_builddir)/lib
+
+# Define a custom string for rules that call groff in make's silence mode.
+GROFF_V = $(GROFF_V_@AM_V@)
+GROFF_V_ = $(GROFF_V_@AM_DEFAULT_V@)
+GROFF_V_0 = @echo "  GROFF   " $@;
+
+# The following Automake variables will be overloaded by the various
+# .am files
+bin_PROGRAMS =
+nobase_bin_PROGRAMS =
+bin_SCRIPTS =
+dist_bin_SCRIPTS =
+MOSTLYCLEANFILES =
+MOSTLYCLEANADD =
+noinst_LIBRARIES =
+BUILT_SOURCES =
+CLEANFILES =
+# gnulib asks to include this file
+EXTRA_DIST = gnulib_m4/gnulib-cache.m4
+FONTFILES =
+PREFIXMAN1 =
+man1_MANS =
+man5_MANS =
+man7_MANS =
+
+# for lex/yacc
+AM_YFLAGS = -d -v
+
+SUFFIXES =
+
+# tests launched by make check
+check_SCRIPTS =
+check_PROGRAMS =
+TESTS =
+AM_TESTS_ENVIRONMENT = \
+  abs_top_srcdir=$(abs_top_srcdir) \
+  abs_top_builddir=$(abs_top_builddir) \
+  export abs_top_srcdir abs_top_builddir;
+
+# We use Automake's Uniform Naming Scheme.
+#
+# prefixexecbin_PROGRAMS is the list of programs that may have a
+# NAMEPREFIX if an existing non-GNU troff system was detected.
+#
+# This is done by the m4 macro GROFF_G that checks for the presence of
+# GNU Troff built-in \n[.g] macro. If a Unix Troff binary was
+# detected, the following programs and scripts names will have a 'g'
+# prefix: chem, tbl, eqn, neqn, pic, soleimm grn, refer, lookbib,
+# troff, nroff. Also, PROG_PREFIX will be set to 'g' in the generated
+# header defs.h so that these programs could be called correctly.
+#
+# prefixexecbindir is used to temporary install these programs. They
+# are then moved to bindir during the install-exec-hook.  Same thing
+# for the scripts.
+NAMEPREFIX=$(g)
+prefixexecbin_PROGRAMS =
+prefixexecbin_SCRIPTS =
+if USEPROGRAMPREFIX
+# We use datadir because the uninstall rule for the PROGRAMS attempt
+# to cd into prefixexecbindir, and thus if prefixexecbindir is removed
+# two consecutive uninstall would fail
+prefixexecbindir = $(datadir)
+else
+prefixexecbindir = $(bindir)
+endif
+
+# Path to binaries and flags used by contribs and doc to generated doc.
+# These may be overridden if cross-compiling.
+GROFFBIN = $(abs_top_builddir)/groff
+GROFF_BIN_PATH = $(abs_top_builddir)
+PDFMOMBIN = $(abs_top_builddir)/pdfmom
+# The second directories are needed for the case "cd build; ../configure".
+FFLAG=-F$(abs_top_builddir)/font -F$(abs_top_srcdir)/font
+TFLAG=-M$(abs_top_builddir)/tmac -M$(abs_top_srcdir)/tmac
+
+# make builtin variable RM
+if MAKE_DONT_HAVE_RM
+RM = rm -f
+endif
+
+# 'VERSION' is generated by gnulib script git-version-gen, using the
+# command 'git describe':
+#
+# - From a git repository: if the current commit corresponds to a
+#   tag, then 'VERSION' is simply the tag (e.g. 1.22.3).  Otherwise
+#   'VERSION' has the following format:
+#     <tag>-<nb_commits>-<commit>
+#
+#   With:
+#     . tag: the most recent tag reachable from the current commit
+#     . nb_commits: number of commits between the most recent tag and
+#       the current commit.
+#     . current commit, abbreviated.
+#   For example: 1.22.3.real.434-5aafd
+#   The version is stored in .version.
+#
+# - From a tarball, the version is taken from .tarball-version
+#
+# REVISION is the full revision given by git-version-gen, which can
+# have non-alphanumeric symbols.
+#
+# Also see configure.ac for the related SHORT_VERSION macro.
+
+MAJOR_VERSION = `echo $(VERSION) | cut -d . -f 1`
+MINOR_VERSION = `echo $(VERSION) | cut -d . -f 2`
+REVISION      = `echo $(VERSION) | cut -d . -f 3`
+
+# Non-recursive makefile system. See Automake manual '7.3 An
+# Alternative Approach to Subdirectories'. We use a single Makefile.am
+# that includes other .am files, rather than using SUBDIRS.  Note that
+# relative paths in the following .am files are relative to the top
+# source directory.
+
+include $(top_srcdir)/lib/gnulib.mk
+include $(top_srcdir)/arch/mingw/mingw.am
+include $(top_srcdir)/arch/misc/misc.am
+include $(top_srcdir)/contrib/chem/chem.am
+include $(top_srcdir)/contrib/eqn2graph/eqn2graph.am
+include $(top_srcdir)/contrib/gdiffmk/gdiffmk.am
+include $(top_srcdir)/contrib/glilypond/glilypond.am
+include $(top_srcdir)/contrib/gperl/gperl.am
+include $(top_srcdir)/contrib/gpinyin/gpinyin.am
+include $(top_srcdir)/contrib/grap2graph/grap2graph.am
+include $(top_srcdir)/contrib/groff_filenames/groff_filenames.am
+include $(top_srcdir)/contrib/groffer/groffer.am
+include $(top_srcdir)/contrib/hdtbl/hdtbl.am
+include $(top_srcdir)/contrib/mm/mm.am
+include $(top_srcdir)/contrib/mom/mom.am
+include $(top_srcdir)/contrib/pdfmark/pdfmark.am
+include $(top_srcdir)/contrib/pic2graph/pic2graph.am
+include $(top_srcdir)/doc/doc.am
+include $(top_srcdir)/font/devX100/devX100.am
+include $(top_srcdir)/font/devX100-12/devX100-12.am
+include $(top_srcdir)/font/devX75/devX75.am
+include $(top_srcdir)/font/devX75-12/devX75-12.am
+include $(top_srcdir)/font/devascii/devascii.am
+include $(top_srcdir)/font/devcp1047/devcp1047.am
+include $(top_srcdir)/font/devdvi/devdvi.am
+include $(top_srcdir)/font/devhtml/devhtml.am
+include $(top_srcdir)/font/devlatin1/devlatin1.am
+include $(top_srcdir)/font/devlbp/devlbp.am
+include $(top_srcdir)/font/devlj4/devlj4.am
+include $(top_srcdir)/font/devpdf/devpdf.am
+include $(top_srcdir)/font/devps/devps.am
+include $(top_srcdir)/font/devutf8/devutf8.am
+include $(top_srcdir)/font/scripts/scripts.am
+include $(top_srcdir)/man/man.am
+include $(top_srcdir)/src/include/include.am
+include $(top_srcdir)/src/libs/libbib/libbib.am
+include $(top_srcdir)/src/libs/libdriver/libdriver.am
+include $(top_srcdir)/src/libs/libgroff/libgroff.am
+include $(top_srcdir)/src/libs/libxutil/libxutil.am
+include $(top_srcdir)/src/devices/grodvi/grodvi.am
+include $(top_srcdir)/src/devices/grohtml/grohtml.am
+include $(top_srcdir)/src/devices/grolbp/grolbp.am
+include $(top_srcdir)/src/devices/grolj4/grolj4.am
+include $(top_srcdir)/src/devices/gropdf/gropdf.am
+include $(top_srcdir)/src/devices/grops/grops.am
+include $(top_srcdir)/src/devices/grotty/grotty.am
+include $(top_srcdir)/src/devices/xditview/xditview.am
+include $(top_srcdir)/src/preproc/eqn/eqn.am
+include $(top_srcdir)/src/preproc/grn/grn.am
+include $(top_srcdir)/src/preproc/html/html.am
+include $(top_srcdir)/src/preproc/pic/pic.am
+include $(top_srcdir)/src/preproc/preconv/preconv.am
+include $(top_srcdir)/src/preproc/refer/refer.am
+include $(top_srcdir)/src/preproc/soelim/soelim.am
+include $(top_srcdir)/src/preproc/tbl/tbl.am
+include $(top_srcdir)/src/roff/groff/groff.am
+include $(top_srcdir)/src/roff/grog/grog.am
+include $(top_srcdir)/src/roff/nroff/nroff.am
+include $(top_srcdir)/src/roff/troff/troff.am
+include $(top_srcdir)/src/utils/addftinfo/addftinfo.am
+include $(top_srcdir)/src/utils/afmtodit/afmtodit.am
+include $(top_srcdir)/src/utils/hpftodit/hpftodit.am
+include $(top_srcdir)/src/utils/indxbib/indxbib.am
+include $(top_srcdir)/src/utils/lkbib/lkbib.am
+include $(top_srcdir)/src/utils/lookbib/lookbib.am
+include $(top_srcdir)/src/utils/pfbtops/pfbtops.am
+include $(top_srcdir)/src/utils/tfmtodit/tfmtodit.am
+include $(top_srcdir)/src/utils/xtotroff/xtotroff.am
+include $(top_srcdir)/tmac/tmac.am
+
+# Adding defs.h to BUILT_SOURCES will ensure that it will be built on
+# make all or make check before all other targets. However, if another
+# target is built from a clean build tree, (for example make groff)
+# the files in BUILT_SOURCES will not be built first. That is why
+# additional dependencies where added in the .am files that lists
+# objects that use defs (for exmaple in groff.am:
+# src/roff/groff/groff.$(OBJEXT): defs.h)
+BUILT_SOURCES += defs.h
+
+# Force generation of test-groff even though we don't ship it.
+BUILT_SOURCES += test-groff
+
+# if there is a name prefix we install the man pages by hand
+all: generate_man_files
+install-data-hook: install-prefix-man
+uninstall-hook: uninstall-prefix-man
+if USEPROGRAMPREFIX
+generate_man_files: $(PREFIXMAN1)
+install-prefix-man:
+       for f in $(PREFIXMAN1); do \
+         cp -f $$f $(DESTDIR)$(man1dir)/$(NAMEPREFIX)`basename $$f`; \
+       done
+uninstall-prefix-man:
+       for f in $(PREFIXMAN1); do \
+         rm -f $(DESTDIR)$(man1dir)/$(NAMEPREFIX)`basename $$f`; \
+       done
+else
+man1_MANS += $(PREFIXMAN1)
+install-prefix-man:
+uninstall-prefix-man:
+generate_man_files:
+endif
+
+# Hook to create the 'current' symlink
+install-data-hook: create_current_symlink
+create_current_symlink:
+       cd $(DESTDIR)$(dataprogramdir); \
+         rm -f current; \
+         $(LN_S) $(SHORT_VERSION) current
+
+# Hook to move the binaries that potentially have a prefix from
+# prefixexecbindir to bindir.
+install-exec-hook: move_binaries_with_prefix
+move_binaries_with_prefix:
+if USEPROGRAMPREFIX
+       if test -n "$(NAMEPREFIX)"; then \
+          for f in $(prefixexecbin_PROGRAMS) $(prefixexecbin_SCRIPTS); do \
+             mv -f $(DESTDIR)$(prefixexecbindir)/$$f$(EXEEXT) \
+                $(DESTDIR)$(bindir)/$(NAMEPREFIX)$$f$(EXEEXT); \
+          done \
+       fi
+endif
+
+# Always create the site-font directory as a guide to the user.
+install-data-hook: install_site_font
+install_site_font:
+       -test -d $(DESTDIR)$(localfontdir) \
+         || $(mkinstalldirs) $(DESTDIR)$(localfontdir)
+
+# Create systemtmacdir if not present
+install-data-hook: install_tmacdir
+install_tmacdir:
+       -test -d $(DESTDIR)$(systemtmacdir) \
+         || $(mkinstalldirs) $(DESTDIR)$(systemtmacdir)
+
+# directories specific to groff
+uninstall-hook: uninstall_groffdirs
+uninstall_groffdirs:
+       if test -d $(DESTDIR)$(datasubdir); then \
+         rm -rf $(DESTDIR)$(fontdir); \
+         rm -rf $(DESTDIR)$(oldfontdir); \
+         rmdir $(DESTDIR)$(datasubdir); \
+       fi
+       if test -d $(DESTDIR)$(dataprogramdir); then \
+         if test -h $(DESTDIR)$(dataprogramdir)/current; then \
+           rm -f $(DESTDIR)$(dataprogramdir)/current; \
+         fi; \
+         if test -d $(DESTDIR)$(localfontdir); then \
+           rm -f $(DESTDIR)$(localfontdir)/*; \
+           rmdir $(DESTDIR)$(localfontdir); \
+         fi; \
+         rmdir $(DESTDIR)$(dataprogramdir); \
+       fi
+       if test -d $(DESTDIR)$(grog_dir); then \
+         rmdir $(DESTDIR)$(grog_dir); \
+       fi
+       if test -d $(DESTDIR)$(libprogramdir); then \
+         if test -d $(DESTDIR)$(systemtmacdir); then \
+           rm -f $(DESTDIR)$(systemtmacdir)/*; \
+           rmdir $(DESTDIR)$(systemtmacdir); \
+         fi; \
+         rmdir $(DESTDIR)$(libprogramdir); \
+       fi
+       if test -d $(DESTDIR)$(docdir); then \
+         if test -d $(DESTDIR)$(exampledir); then \
+           rmdir $(DESTDIR)$(exampledir); \
+         fi; \
+         if test -d $(DESTDIR)$(htmldocdir); then \
+           rmdir $(DESTDIR)$(htmldocdir); \
+         fi; \
+         rmdir $(DESTDIR)$(docdir); \
+       fi
+
+# Uninstall program that have a 'g' prefix
+uninstall-hook: uninstall_binaries_with_prefix
+uninstall_binaries_with_prefix:
+if USEPROGRAMPREFIX
+       if test -n "$(NAMEPREFIX)"; then \
+          for f in $(prefixexecbin_PROGRAMS) $(prefixexecbin_SCRIPTS); do \
+             rm -f $(DESTDIR)$(bindir)/$(NAMEPREFIX)$$f$(EXEEXT); \
+          done; \
+       fi
+endif
+
+# Other files that should be present in the distribution tarball.
+EXTRA_DIST += \
+  BUG-REPORT \
+  ChangeLog.115 \
+  ChangeLog.116 \
+  ChangeLog.117 \
+  ChangeLog.118 \
+  ChangeLog.119 \
+  ChangeLog.120 \
+  ChangeLog.121 \
+  FDL \
+  FOR-RELEASE \
+  gendef.sh \
+  INSTALL.REPO \
+  INSTALL.extra \
+  LICENSES \
+  MANIFEST \
+  mdate.pl \
+  MORE.STUFF \
+  PROBLEMS \
+  PROJECTS \
+  README.MinGW \
+  arch/djgpp \
+  font/util/make-Rproto \
+  makevarescape.sed
+
+MOSTLYCLEANFILES += $(prefixexecbin_SCRIPTS) $(bin_SCRIPTS) \
+  $(man1_MANS) $(man5_MANS) $(man7_MANS) \
+  $(PREFIXMAN1) \
+  test-groff
+
+# Suffix rule to build .1, .5 and .7 files from .1.man, .5.man and
+# .7.man files.  The brackets around the @ are used to prevent the
+# substitution of the variable by automake.
+#
+# The sed script transforms - to \-, ~ to \(ti, and so forth, (with an
+# extra layer of backslashes--see below) so that Makefile variables
+# containing ASCII characters that do not represent themselves literally
+# in *roff (see groff_char(7)) are correctly interpolated into man page
+# text.
+#
+# Note that while the script, combined with this target, will transform
+# ` to \(ga, including grave accents in Makefile variables is likely to
+# fail when the shell lexes the argument to echo within the old-style
+# command substitution `` below.  Testing shows that grave accents
+# should work* if POSIX-style command substitution $() is done instead.
+# However, $() is less portable.  (Triple-escaping grave accents \\\`
+# inside the interpolated Makefile variable will work, but is not
+# attempted here.)
+#
+# Note also that the amount of backslash-escaping in the sed script is
+# excessive (and incorrect) for normal purposes, but required here
+# because a command substitution is being nested inside yet another
+# invocation of sed.
+#
+# * For this target; no assurances about the good behavior of unusual
+#   characters in Makefile variables in other aspects of the groff build
+#   are offered.
+makevarescape=$(top_srcdir)/makevarescape.sed
+
+SUFFIXES += .man
+.man:
+       $(AM_V_GEN)rm -f $@ \
+       && $(MKDIR_P) `dirname $@` \
+       && LC_ALL=C \
+        sed -e "s|[@]APPRESDIR[@]|`echo $(appresdir) | sed -f $(makevarescape)`|g" \
+            -e "s|[@]BINDIR[@]|`echo $(bindir) | sed -f $(makevarescape)`|g" \
+            -e "s|[@]COMMON_WORDS_FILE[@]|`echo $(common_words_file) | sed -f $(makevarescape)`|g" \
+            -e "s|[@]DATASUBDIR[@]|`echo $(datasubdir) | sed -f $(makevarescape)`|g" \
+            -e "s|[@]DEFAULT_INDEX[@]|`echo $(indexdir)/$(indexname) | sed -f $(makevarescape)`|g" \
+            -e "s|[@]DEFAULT_INDEX_NAME[@]|`echo $(indexname) | sed -f $(makevarescape)`|g" \
+            -e "s|[@]DEVICE[@]|$(DEVICE)|g" \
+            -e "s|[@]DOCDIR[@]|`echo $(docdir) | sed -f $(makevarescape)`|g" \
+            -e "s|[@]EXAMPLEDIR[@]|`echo $(exampledir) | sed -f $(makevarescape)`|g" \
+            -e "s|[@]FONTDIR[@]|`echo $(fontdir) | sed -f $(makevarescape)`|g" \
+            -e "s|[@]g[@]|$(g)|g" \
+            -e "s![@]G[@]!`echo $(g) | tr '[a-z]' '[A-Z]'`!g" \
+            -e "s|[@]HTMLDOCDIR[@]|`echo $(htmldocdir) | sed -f $(makevarescape)`|g" \
+            -e "s|[@]INDEX_SUFFIX[@]|$(indexext)|g" \
+            -e "s|[@]LEGACYFONTDIR[@]|`echo $(legacyfontdir) | sed -f $(makevarescape)`|g" \
+            -e "s|[@]LOCALFONTDIR[@]|`echo $(localfontdir) | sed -f $(makevarescape)`|g" \
+            -e "s|[@]LOCALMACRODIR[@]|`echo $(localtmacdir) | sed -f $(makevarescape)`|g" \
+            -e "s|[@]MACRODIR[@]|`echo $(tmacdir) | sed -f $(makevarescape)`|g" \
+            -e "s|[@]MAN1EXT[@]|$(man1ext)|g" \
+            -e "s|[@]MAN5EXT[@]|$(man5ext)|g" \
+            -e "s|[@]MAN7EXT[@]|$(man7ext)|g" \
+            -e "s|[@]MDATE[@]|`$(PERL) $(top_srcdir)/mdate.pl $<`|g" \
+            -e "s|[@]OLDFONTDIR[@]|`echo $(oldfontdir) | sed -f $(makevarescape)`|g" \
+            -e "s|[@]PDFDOCDIR[@]|`echo $(pdfdocdir) | sed -f $(makevarescape)`|g" \
+            -e "s|[@]SYSTEMMACRODIR[@]|`echo $(systemtmacdir) | sed -f $(makevarescape)`|g" \
+            -e "s|[@]TMAC_AN_PREFIX[@]|$(tmac_an_prefix)|g" \
+            -e "s|[@]TMAC_M_PREFIX[@]|$(tmac_m_prefix)|g" \
+            -e "s|[@]TMAC_MDIR[@]|$(tmacdir)/mm|g" \
+            -e "s|[@]TMAC_S_PREFIX[@]|$(tmac_s_prefix)|g" \
+            -e "s|[@]VERSION[@]|$(VERSION)|g" \
+            $< \
+            >$@
+
+# Version files - see script 'build-aux/git-gen-version'
+EXTRA_DIST += $(top_srcdir)/.version
+BUILT_SOURCES += $(top_srcdir)/.version
+$(top_srcdir)/.version:
+       echo $(VERSION) > $@-t && mv $@-t $@
+dist-hook:
+       echo $(VERSION) > $(distdir)/.tarball-version
+
+########################################################################
+### Emacs settings
+# Local Variables:
+# mode: makefile-automake
+# End:
diff --git a/Makefile.ccpg b/Makefile.ccpg
deleted file mode 100644 (file)
index 12931b4..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-# Copyright (C) 1992-2014 Free Software Foundation, Inc.
-#      Written by James Clark (jjc@jclark.com)
-#
-# This file is part of groff.
-#
-# groff 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.
-#
-# groff 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 <http://www.gnu.org/licenses/>.
-#
-# Makefile.ccpg
-#
-MAKEFILEPARTS=\
-  $(top_srcdir)/Makefile.comm \
-  $(top_builddir)/Makefile.cfg \
-  $(srcdir)/Makefile.sub \
-  $(top_srcdir)/Makefile.ccpg \
-  Makefile.dep
-
-all: $(PROG) $(MANPAGES)
-
-$(PROG): $(OBJS) $(XLIBS)
-       $(LINK.cpp) -o $@ $(OBJS) $(XLIBS) $(EXTRA_LDFLAGS) $(LIBS) $(MLIB)
-
-install_bin: install_prog
-install_prog: $(PROG)
-install_data: install_man
-install_man: $(MANPAGES)
-uninstall_sub: uninstall_prog uninstall_man
-depend: depend_src
-depend.temp: $(GENSRCS) $(YTABC)
-distfiles: $(YTABC)
-TAGS: TAGS_src
-TAGS_src: $(CCSRCS) $(CSRCS) $(GRAM) $(HDRS)
-Makefile: $(MAKEFILEPARTS)
-Makefile.dep:
-       touch Makefile.dep
-$(top_builddir)/stamp-h $(MANPAGES): $(top_srcdir)/VERSION \
-               $(top_srcdir)/REVISION
-
-pure: $(PROG).pure
-
-$(PROG).pure: $(OBJS) $(XLIBS)
-       $(PURIFY) $(PURIFYCCFLAGS) \
-         $(LINK.cpp) -o $@ $(OBJS) $(XLIBS) $(LIBS) $(MLIB)
-
-########################################################################
-# Emacs settings
-########################################################################
-#
-# Local Variables:
-# mode: makefile
-# End:
diff --git a/Makefile.comm b/Makefile.comm
deleted file mode 100644 (file)
index 75efc22..0000000
+++ /dev/null
@@ -1,354 +0,0 @@
-# Copyright (C) 1989-2014 Free Software Foundation, Inc.
-#      Written by James Clark (jjc@jclark.com)
-#
-# This file is part of groff.
-#
-# groff 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.
-#
-# groff 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 <http://www.gnu.org/licenses/>.
-#
-# Makefile.comm
-#
-INCLUDES=-I. -I$(srcdir) \
-  -I$(top_builddir)/src/include -I$(top_srcdir)/src/include \
-  -I$(top_builddir)/src/libs/gnulib/lib
-ALL_CCFLAGS=$(INCLUDES) $(CCDEFINES) $(CCFLAGS) $(CPPFLAGS)
-COMPILE.cpp=$(CCC) $(ALL_CCFLAGS) -c
-ALL_CFLAGS=$(INCLUDES) $(CDEFINES) $(CFLAGS) $(CPPFLAGS)
-COMPILE.c=$(CC) $(ALL_CFLAGS) -c
-LINK.cpp=$(CCC) $(CCFLAGS) $(LDFLAGS)
-LINK.c=$(CC) $(CFLAGS) $(LDFLAGS)
-LIBGROFF=$(top_builddir)/src/libs/libgroff/libgroff.$(LIBEXT)
-LIBBIB=$(top_builddir)/src/libs/libbib/libbib.$(LIBEXT)
-LIBDRIVER=$(top_builddir)/src/libs/libdriver/libdriver.$(LIBEXT)
-LIBXUTIL=$(top_builddir)/src/libs/libxutil/libxutil.$(LIBEXT)
-LIBGNU=$(top_builddir)/src/libs/gnulib/lib/libgnu.$(LIBEXT)
-MLIB=
-XLIBS=
-YTABH=
-YTABC=
-GRAM=
-LIBCLEAN=
-MOSTLYCLEANADD=
-MOSTLYCLEANDIRADD=
-MOSTLYCLEANNOTSRCDIRADD=
-MOSTLYCLEANFILES=$(MANCLEAN) $(PROG) $(OBJS) $(GENSRCS) $(GENHDRS) \
-  depend.temp core y.output $(MOSTLYCLEANADD)
-CLEANFILES=$(LIBCLEAN)
-DISTCLEANFILES=TAGS Makefile Makefile.dep
-REALCLEANFILES=$(YTABC) $(YTABH)
-NAMEPREFIX=
-HDRS=
-MANPAGES=$(MAN1) $(MAN5) $(MAN7)
-MANCLEAN=$(MANPAGES)
-fontsubdir=$(fontdir)/dev$(DEV)
-oldfontsubdir=$(oldfontdir)/dev$(DEV)
-
-all do_install install_bin install_data TAGS depend distfiles uninstall_sub:
-
-do_install: install_bin install_data
-uninstall: uninstall_sub
-pure:
-fonts:
-
-.PHONY: all clean distclean mostlyclean realclean extraclean depend distfiles
-.PHONY: install install_bin install_data
-.PHONY: uninstall uninstall_sub
-.PHONY: pure fonts
-
-mostlyclean:
-       rm -f $(MOSTLYCLEANFILES)
-       -rm -rf $(MOSTLYCLEANDIRADD)
-       -@if test "`cd $(srcdir); pwd`" != "`pwd`"; then \
-         rm -f $(MOSTLYCLEANNOTSRCDIRADD); \
-       fi
-
-clean: mostlyclean
-       rm -f $(CLEANFILES)
-
-distclean: clean
-       rm -f $(DISTCLEANFILES)
-       -@if test "`cd $(srcdir); pwd`" != "`pwd`"; then \
-         rm -f $(YTABC) $(YTABH); \
-       fi
-
-realclean: distclean
-       rm -f $(REALCLEANFILES)
-
-extraclean: distclean
-       rm -f \#* *~ =* core junk grot temp tmp tem *.new *.old *.orig
-
-.SUFFIXES:
-.SUFFIXES: .o .obj .cpp .c .y .man .n
-
-.cpp.o:
-       $(COMPILE.cpp) $(EXTRA_CCFLAGS) $<
-
-.c.o:
-       $(COMPILE.c) $(EXTRA_CFLAGS) $<
-
-.cpp.obj:
-       $(COMPILE.cpp) $(EXTRA_CCFLAGS) $<
-
-.c.obj:
-       $(COMPILE.c) $(EXTRA_CFLAGS) $<
-
-.y.cpp:
-       if test -n "$(YTABH)"; then \
-         $(YACC) $(YACCFLAGS) -d $<; \
-       else \
-         $(YACC) $(YACCFLAGS) $<; \
-       fi
-       -test -f y.tab.h && mv y.tab.h y_tab.h
-       -test -f y.tab.c && mv y.tab.c y_tab.c
-       sed "s/^#line \(.*\) \"y.tab.c\"/#line \1 \"$(YTABC)\"/" \
-         < y_tab.c > $(YTABC)
-       rm -f y_tab.c
-       test -z "$(YTABH)" || mv y_tab.h $(YTABH)
-
-# The next rule is needed for make of Solaris 2.5.1 to override its
-# built-in .y.o rule (which takes precedence over the .y.cpp rule above).
-.y.o:
-       if test -n "$(YTABH)"; then \
-         $(YACC) $(YACCFLAGS) -d $<; \
-       else \
-         $(YACC) $(YACCFLAGS) $<; \
-       fi
-       -test -f y.tab.h && mv y.tab.h y_tab.h
-       -test -f y.tab.c && mv y.tab.c y_tab.c
-       mv y_tab.c $(YTABC)
-       test -z "$(YTABH)" || mv y_tab.h $(YTABH)
-       $(COMPILE.cpp) $(EXTRA_CCFLAGS) $(YTABC)
-
-.man.n:
-       @echo Making $@ from $<
-       @rm -f $@
-       @LC_ALL=C \
-        sed -e "s|@APPRESDIR@|$(appresdir)|g" \
-            -e "s|@BINDIR@|$(bindir)|g" \
-            -e "s|@BROKEN_SPOOLER_FLAGS@|$(BROKEN_SPOOLER_FLAGS)|g" \
-            -e "s|@COMMON_WORDS_FILE@|$(common_words_file)|g" \
-            -e "s|@DATASUBDIR@|$(datasubdir)|g" \
-            -e "s|@DEFAULT_INDEX@|$(indexdir)/$(indexname)|g" \
-            -e "s|@DEFAULT_INDEX_NAME@|$(indexname)|g" \
-            -e "s|@DEVICE@|$(DEVICE)|g" \
-            -e "s|@DOCDIR@|$(docdir)|g" \
-            -e "s|@EXAMPLEDIR@|$(exampledir)|g" \
-            -e "s|@FONTDIR@|$(fontdir)|g" \
-            -e "s|@g@|$(g)|g" \
-            -e "s!@G@!`echo $(g) | tr [a-z] [A-Z]`!g" \
-            -e "s|@HTMLDOCDIR@|$(htmldocdir)|g" \
-            -e "s|@INDEX_SUFFIX@|$(indexext)|g" \
-            -e "s|@LEGACYFONTDIR@|$(legacyfontdir)|g" \
-            -e "s|@LOCALFONTDIR@|$(localfontdir)|g" \
-            -e "s|@LOCALMACRODIR@|$(localtmacdir)|g" \
-            -e "s|@MACRODIR@|$(tmacdir)|g" \
-            -e "s|@MAN1EXT@|$(man1ext)|g" \
-            -e "s|@MAN5EXT@|$(man5ext)|g" \
-            -e "s|@MAN7EXT@|$(man7ext)|g" \
-            -e "s|@MDATE@|`$(SHELL) $(top_srcdir)/mdate.sh $<`|g" \
-            -e "s|@OLDFONTDIR@|$(oldfontdir)|g" \
-            -e "s|@PDFDOCDIR@|$(pdfdocdir)|g" \
-            -e "s|@SYSTEMMACRODIR@|$(systemtmacdir)|g" \
-            -e "s|@TMAC_AN_PREFIX@|$(tmac_an_prefix)|g" \
-            -e "s|@TMAC_M_PREFIX@|$(tmac_m_prefix)|g" \
-            -e "s|@TMAC_MDIR@|$(tmacdir)/mm|g" \
-            -e "s|@TMAC_S_PREFIX@|$(tmac_s_prefix)|g" \
-            -e "s|@VERSION@|$(version)$(revision)|g" \
-        $< >$@
-
-.PHONY: install_man
-install_man:
-       -test -d $(DESTDIR)$(manroot) || $(mkinstalldirs) $(DESTDIR)$(manroot)
-       -test -d $(DESTDIR)$(man1dir) || $(mkinstalldirs) $(DESTDIR)$(man1dir)
-       @-pages="$(MAN1)"; \
-        for p in $$pages; do \
-          prog=`basename $$p .n`; \
-          target=$(DESTDIR)$(man1dir)/$(NAMEPREFIX)$$prog.$(man1ext); \
-          rm -f $$target; \
-          echo $(INSTALL_DATA) $$p $$target; \
-          $(INSTALL_DATA) $$p $$target; \
-       done
-       -test -d $(DESTDIR)$(man5dir) || $(mkinstalldirs) $(DESTDIR)$(man5dir)
-       @-pages="$(MAN5)"; \
-        for p in $$pages; do \
-          target=$(DESTDIR)$(man5dir)/`basename $$p .n`.$(man5ext); \
-          rm -f $$target; \
-          echo $(INSTALL_DATA) $$p $$target; \
-          $(INSTALL_DATA) $$p $$target; \
-       done
-       -test -d $(DESTDIR)$(man7dir) || $(mkinstalldirs) $(DESTDIR)$(man7dir)
-       @-pages="$(MAN7)"; \
-        for p in $$pages; do \
-          target=$(DESTDIR)$(man7dir)/`basename $$p .n`.$(man7ext); \
-          rm -f $$target; \
-          echo $(INSTALL_DATA) $$p $$target; \
-          $(INSTALL_DATA) $$p $$target; \
-       done
-
-.PHONY: uninstall_man
-uninstall_man:
-       @-pages="$(MAN1)"; \
-        for p in $$pages; do \
-          target=$(DESTDIR)$(man1dir)/$(NAMEPREFIX); \
-          target=$$target`basename $$p .n`.$(man1ext); \
-          echo rm -f $$target; \
-          rm -f $$target; \
-        done
-       @-pages="$(MAN5)"; \
-        for p in $$pages; do \
-          target=$(DESTDIR)$(man5dir)/`basename $$p .n`.$(man5ext); \
-          echo rm -f $$target; \
-          rm -f $$target; \
-        done
-       @-pages="$(MAN7)"; \
-        for p in $$pages; do \
-          target=$(DESTDIR)$(man7dir)/`basename $$p .n`.$(man7ext); \
-          echo rm -f $$target; \
-          rm -f $$target; \
-       done
-
-.PHONY: install_prog
-install_prog:
-       -test -d $(DESTDIR)$(bindir) || $(mkinstalldirs) $(DESTDIR)$(bindir)
-       rm -f $(DESTDIR)$(bindir)/$(NAMEPREFIX)$(PROG)
-       $(INSTALL_PROGRAM) $(PROG) $(DESTDIR)$(bindir)/$(NAMEPREFIX)$(PROG)
-
-.PHONY: uninstall_prog
-uninstall_prog:
-       rm -f $(DESTDIR)$(bindir)/$(NAMEPREFIX)$(PROG)
-
-.PHONY: install_dev
-install_dev:
-       -test -d $(DESTDIR)$(datadir) \
-         || $(mkinstalldirs) $(DESTDIR)$(datadir)
-       -test -d $(DESTDIR)$(dataprogramdir) \
-         || $(mkinstalldirs) $(DESTDIR)$(dataprogramdir)
-       -test -d $(DESTDIR)$(datasubdir) \
-         || $(mkinstalldirs) $(DESTDIR)$(datasubdir)
-       -test -d $(DESTDIR)$(fontdir) \
-         || $(mkinstalldirs) $(DESTDIR)$(fontdir)
-       -test -d $(DESTDIR)$(fontsubdir) \
-         || $(mkinstalldirs) $(DESTDIR)$(fontsubdir)
-       -if test -d $(srcdir)/generate; then \
-         test -d $(DESTDIR)$(fontsubdir)/generate \
-           || $(mkinstalldirs) $(DESTDIR)$(fontsubdir)/generate; \
-       fi
-       -if test -d $(srcdir)/enc; then \
-         test -d $(DESTDIR)$(fontsubdir)/enc \
-           || $(mkinstalldirs) $(DESTDIR)$(fontsubdir)/enc; \
-       fi
-       -if test -d $(srcdir)/map; then \
-         test -d $(DESTDIR)$(fontsubdir)/map \
-           || $(mkinstalldirs) $(DESTDIR)$(fontsubdir)/map; \
-       fi
-       -if test -d $(srcdir)/util; then \
-         test -d $(DESTDIR)$(fontsubdir)/util \
-           || $(mkinstalldirs) $(DESTDIR)$(fontsubdir)/util; \
-       fi
-       -if test -d $(srcdir)/old; then \
-         test -d $(DESTDIR)$(oldfontdir) \
-           || $(mkinstalldirs) $(DESTDIR)$(oldfontdir); \
-         test -d $(DESTDIR)$(oldfontsubdir) \
-           || $(mkinstalldirs) $(DESTDIR)$(oldfontsubdir); \
-       fi
-       -test -z "$(DEVFILES)" \
-         || for f in ""$(DEVFILES); do \
-              rm -f $(DESTDIR)$(fontsubdir)/$$f; \
-              if test -f $$f; then \
-                $(INSTALL_DATA) $$f $(DESTDIR)$(fontsubdir)/$$f; \
-              else \
-                $(INSTALL_DATA) $(srcdir)/$$f $(DESTDIR)$(fontsubdir)/$$f; \
-              fi; \
-            done
-       -test -z "$(OLDDEVFILES)" \
-         || for f in ""$(OLDDEVFILES); do \
-              rm -f $(DESTDIR)$(oldfontsubdir)/$$f; \
-              $(INSTALL_DATA) $(srcdir)/old/$$f \
-                $(DESTDIR)$(oldfontsubdir)/$$f; \
-            done
-       -test -z "$(DEVSCRIPTS)" \
-         || for f in ""$(DEVSCRIPTS); do \
-              rm -f $(DESTDIR)$(fontsubdir)/$$f; \
-              if test -f $$f; then \
-                $(INSTALL_SCRIPT) $$f $(DESTDIR)$(fontsubdir)/$$f; \
-              else \
-                $(INSTALL_SCRIPT) $(srcdir)/$$f $(DESTDIR)$(fontsubdir)/$$f; \
-              fi; \
-            done
-
-.PHONY: uninstall_dev
-uninstall_dev:
-       -test -z "$(DEVFILES)$(DEVSCRIPTS)" \
-         || for f in ""$(DEVFILES) $(DEVSCRIPTS); do \
-              rm -f $(DESTDIR)$(fontsubdir)/$$f; \
-            done
-       -test -z "$(OLDDEVFILES)" \
-         || for f in ""$(OLDDEVFILES); do \
-              rm -f $(DESTDIR)$(oldfontsubdir)/$$f; \
-            done
-       -d=$(DESTDIR)$(fontsubdir)/generate;\
-         if test -d $$d; then rmdir $$d; fi
-       -d=$(DESTDIR)$(fontsubdir)/enc;\
-         if test -d $$d; then rmdir $$d; fi
-       -d=$(DESTDIR)$(fontsubdir)/map;\
-         if test -d $$d; then rmdir $$d; fi
-       -d=$(DESTDIR)$(fontsubdir)/util;\
-         if test -d $$d; then rmdir $$d; fi
-       -test -d $(DESTDIR)$(fontsubdir) $$ \
-         rmdir $(DESTDIR)$(fontsubdir)
-       -d=$(DESTDIR)$(oldfontsubdir);\
-         if test -d $$d; then rmdir $$d; fi
-
-.PHONY: depend_src
-depend_src: depend.temp
-       mv depend.temp Makefile.dep
-
-depend.temp: FORCE
-       > depend.temp
-       if test -f "$(srcdir)/$(YTABC)"; then \
-         ytabc="$(srcdir)/$(YTABC)"; \
-       else \
-         ytabc="$(YTABC)"; \
-       fi; \
-       test -z "$(CCSRCS)$(YTABC)" \
-         || $(CCC) $(ALL_CCFLAGS) $(EXTRA_CCFLAGS) -MM $(CCSRCS) $$ytabc \
-            >>depend.temp
-       test -z "$(CSRCS)" \
-         || $(CC) $(ALL_CFLAGS) $(EXTRA_CFLAGS) -MM $(CSRCS) >>depend.temp
-       test -z "$(YTABH)" \
-         || (sed -e 's|$(YTABH)|$(YTABC)|g' depend.temp >depend1.temp; \
-             mv depend1.temp depend.temp)
-
-.PHONY: TAGS_src
-TAGS_src:
-       $(ETAGS) $(ETAGSFLAGS) $(CCSRCS) $(CSRCS)
-       test -z "$(GRAM)$(HDRS)" \
-         || $(ETAGS) $(ETAGSFLAGS) -a $(ETAGSCCFLAG) $(GRAM) $(HDRS)
-
-# This rule is only considered for the subdir_Makefile target.
-Makefile:
-       echo srcdir=$(srcdir) >Makefile
-       echo VPATH=$(VPATH) >>Makefile
-       cat $(MAKEFILEPARTS) /dev/null >>Makefile
-
-FORCE:
-
-.NOEXPORT:
-
-########################################################################
-# Emacs settings
-########################################################################
-#
-# Local Variables:
-# mode: makefile
-# End:
diff --git a/Makefile.cpg b/Makefile.cpg
deleted file mode 100644 (file)
index 6a2332a..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-# Copyright (C) 1992-2014 Free Software Foundation, Inc.
-#      Written by James Clark (jjc@jclark.com)
-#
-# This file is part of groff.
-#
-# groff 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.
-#
-# groff 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 <http://www.gnu.org/licenses/>.
-#
-# Makefile.cpg
-#
-MAKEFILEPARTS=\
-  $(top_srcdir)/Makefile.comm \
-  $(top_builddir)/Makefile.cfg \
-  $(srcdir)/Makefile.sub \
-  $(top_srcdir)/Makefile.cpg \
-  Makefile.dep
-
-all: $(PROG) $(MANPAGES)
-
-$(PROG): $(OBJS) $(XLIBS)
-       $(LINK.c) -o $@ $(OBJS) $(XLIBS) $(EXTRA_LDFLAGS) $(LIBS) $(MLIB)
-
-install_bin: install_prog
-install_prog: $(PROG)
-install_data: install_man
-install_man: $(MANPAGES)
-uninstall_sub: uninstall_prog uninstall_man
-depend: depend_src
-depend.temp: $(GENSRCS) $(YTABC)
-distfiles: $(YTABC)
-TAGS: TAGS_src
-TAGS_src: $(CCSRCS) $(CSRCS) $(GRAM) $(HDRS)
-Makefile: $(MAKEFILEPARTS)
-Makefile.dep:
-       touch Makefile.dep
-$(top_builddir)/stamp-h $(MANPAGES): $(top_srcdir)/VERSION \
-               $(top_srcdir)/REVISION
-
-########################################################################
-# Emacs settings
-########################################################################
-#
-# Local Variables:
-# mode: makefile
-# End:
index bc156ce..505e9c3 100644 (file)
@@ -1,5 +1,24 @@
-# Copyright (C) 1989-2014 Free Software Foundation, Inc.
-#   Written by James Clark (jjc@jclark.com)
+# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Copyright (C) 1989-2018 Free Software Foundation, Inc.
+# Original Makefile.in written by James Clark (jjc@jclark.com)
+# Migrated to Automake by Bertrand Garrigues
+#
+# Last update: 2017-11-02
 #
 # This file is part of groff.
 #
 # for more details.
 #
 # You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #
-# Makefile.in
+# Makefile.am
 #
-SHELL=@SHELL@
-
-PACKAGE_TARNAME=@PACKAGE_TARNAME@
-
-srcdir=@srcdir@
-top_srcdir=@abs_top_srcdir@
-VPATH=@srcdir@
-top_builddir=@abs_top_builddir@
 
-# `HOST' is the canonical host specification,
-#    CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
-# or
-#    CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
-HOST=@host@
+# The variables that are listed in the following comments will be
+# automatically set by automake in the generated Makefile.in
 
-# `RT_SEP' is the operating system's native PATH SEPARATOR CHAR, which
-# is to be used in runtime PATHs compiled into groff executables.
-RT_SEP=@GROFF_PATH_SEPARATOR@
-
-# `SH_SEP' is a alternative PATH SEPARATOR CHAR, to be used in shell
-# scripts and makefile rules; it may be the same as `RT_SEP', but,
-# particularly in some Microsoft environments, it may differ.
-SH_SEP=@PATH_SEPARATOR@
+# SHELL
 
-# `GLIBC21' is yes if the host operating system uses GNU libc 2.1 or newer,
-# otherwise no.
-GLIBC21=@GLIBC21@
+# PACKAGE_TARNAME
 
-version=`cat $(top_srcdir)/VERSION`
-# No additional number if revision is zero.
-revision=`sed -e 's/^0$$//' -e 's/^[1-9].*$$/.&/' $(top_srcdir)/REVISION`
+# srcdir
 
-# Define `page' to be letter if your PostScript printer uses 8.5x11
-# paper (USA) and define it to be A4, if it uses A4 paper (rest of the
-# world).
-PAGE=@PAGE@
+# top_srcdir
 
-# The name of the ghostscript program. Normally, gs, on GNU/Linux
-# but it might be different on MS-DOS/MS-WIN32 systems.
-GHOSTSCRIPT=@GHOSTSCRIPT@
+# VPATH
 
-# `ALT_GHOSTSCRIPT_PROGS' specifies a list alternative names,
-# which can be tried if `GHOSTSCRIPT' cannot be found at run time.
-ALT_GHOSTSCRIPT_PROGS=@ALT_GHOSTSCRIPT_PROGS@
+# top_builddir
 
-# Similarly, `ALT_AWK_PROGS' specifies a list of alternative names,
-# which can be tried at run time, to identify the awk program.
-ALT_AWK_PROGS=@ALT_AWK_PROGS@
+# HOST
+# `HOST' is the canonical host specification,
+#    CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or
+#    CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
 
-# Normally the Postscript driver, grops, produces output that conforms
-# to version 3.0 of the Adobe Document Structuring Conventions.
-# Unfortunately some spoolers and previewers can't handle such output.
-# The BROKEN_SPOOLER_FLAGS variable tells grops what it should do to
-# make its output acceptable to such programs.  This variable controls
-# only the default behaviour of grops; the behaviour can be changed at
-# runtime by the grops -b option (and so by groff -P-b).
-# Use a value of 0 if your spoolers and previewers are able to handle
-# conforming PostScript correctly.
-# Add 1 if no %%{Begin,End}DocumentSetup comments should be generated;
-# this is needed for early versions of TranScript that get confused by
-# anything between the %%EndProlog line and the first %%Page: comment.
-# Add 2 if lines in included files beginning with %! should be
-# stripped out; this is needed for the OpenWindows 2.0 pageview previewer.
-# Add 4 if %%Page, %%Trailer and %%EndProlog comments should be
-# stripped out of included files; this is needed for spoolers that
-# don't understand the %%{Begin,End}Document comments. I suspect this
-# includes early versions of TranScript.
-# Add 8 if the first line of the PostScript output should be %!PS-Adobe-2.0
-# rather than %!PS-Adobe-3.0; this is needed when using Sun's Newsprint
-# with a printer that requires page reversal.
-BROKEN_SPOOLER_FLAGS=@BROKEN_SPOOLER_FLAGS@
+# Copyright (C) 2002-2018 Free Software Foundation, Inc.
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This file is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this file.  If not, see <https://www.gnu.org/licenses/>.
+#
+# As a special exception to the GNU General Public License,
+# this file may be distributed as part of a program that
+# contains a configuration script generated by Autoconf, under
+# the same distribution terms as the rest of that program.
+#
+# Generated by gnulib-tool.
+# Reproduce by:
+# gnulib-tool --import --local-dir=gl \
+#  --lib=libgnu \
+#  --source-base=lib \
+#  --m4-base=gnulib_m4 \
+#  --doc-base=doc \
+#  --tests-base=tests \
+#  --aux-dir=build-aux \
+#  --makefile-name=gnulib.mk \
+#  --no-conditional-dependencies \
+#  --no-libtool \
+#  --macro-prefix=gl \
+#  fprintf-posix \
+#  git-version-gen \
+#  havelib \
+#  non-recursive-gnulib-prefix-hack \
+#  snprintf \
+#  vsnprintf \
+#  wcwidth
 
-# `DEVICE' is the default device.
-DEVICE=ps
+# Automake rules for 'chem'
 
-# `XDEVDIRS' is either `font/devX{75,100}{,-12}' or empty.
-XDEVDIRS=@XDEVDIRS@
+# File position: <groff-source>/contrib/chem/chem.am
 
-# `XPROGDIRS' is either `src/devices/xditview src/utils/xtotroff' or empty.
-XPROGDIRS=@XPROGDIRS@
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
+# Written by Bernd Warken <groff-bernd.warken-72@web.de>.
+# Moved to automake by Bertrand Garrigues
+#
+# Last update: 22 Aug 2015
+#
+# This file is part of 'chem' which is part of 'groff'.
+#
+# 'groff' is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License (GPL) version 2 as
+# published by the Free Software Foundation.
+#
+# 'groff' 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.
+#
+# The GPL2 license text is available in the internet at
+# <http://www.gnu.org/licenses/gpl-2.0.html>.
 
-# `XLIBDIRS' is either `src/libs/libxutil' or empty.
-XLIBDIRS=@XLIBDIRS@
+########################################################################
 
-# `TTYDEVDIRS' is either `font/devascii font/devlatin1' (for
-# ASCII) or `font/devcp1047' (for EBCDIC) plus font/devutf8.
-TTYDEVDIRS=@TTYDEVDIRS@ font/devutf8
+# Copyright (C) 2002-2018 Free Software Foundation, Inc.
+#
+# Last update: 22 Aug 2015
+#
+# This file is part of groff.
+#
+# groff 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.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+#
+# eqn2graph.am
+#
 
-# `OTHERDEVDIRS' is either `font/devlj4 font/devlbp' (for ASCII) or
-# empty (for EBCDIC).
-OTHERDEVDIRS=@OTHERDEVDIRS@
+# Automake rules for 'gdiffmk' (integration into the groff source tree)
+#
+# File position: <groff-source>/contrib/gdiffmk/gdiffmk.am
+#
+# Copyright (C) 2004-2018 Free Software Foundation, Inc.
+# Written by Mike Bianchi <MBianchi@Foveal.com <mailto:MBianchi@Foveal.com>>
+# Automake migration by Bertrand Garrigues
+#
+# Last update: 20 Aug 2015
+#
+# This file is part of the gdiffmk utility, which is part of groff.
+#
+# groff 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.
 
-# `PSPRINT' is the command to use for printing a PostScript file,
-# for example `lpr'.
-PSPRINT=@PSPRINT@
+# groff 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 <http://www.gnu.org/licenses/>.
 
-# `DVIPRINT' is the command to use for printing a TeX dvi file,
-# for example `lpr -d'.
-DVIPRINT=@DVIPRINT@
+# Automake rules for 'glilypond'
 
-# Prefix for names of programs that have Unix counterparts.
-# For example, if `g' is `g' then troff will be installed as
-# gtroff.  This doesn't affect programs like grops or groff that have
-# no Unix counterparts.  Note that the groff versions of eqn and tbl
-# will not work with Unix troff.
-g=@g@
+# File position: <groff-source>/contrib/lilypond/glilypond.am
 
-# Common prefix for installation directories.
-# Used in definitions of exec_prefix, datasubdir, fontpath, manroot.
-# This must already exist when you do make install.
-prefix=@prefix@
-exec_prefix=@exec_prefix@
+# Copyright (C) 2013-2018 Free Software Foundation, Inc.
+# Written by Werner Lemberg <wl@gnu.org> and
+# Bernd Warken <groff-bernd.warken-72@web.de>.
+# Automake migration by Bertrand Garrigues
 
-# `bindir' says where to install executables.
-bindir=@bindir@
+# Last update: 22 Aug 2015
 
-# `libdir' says where to install platform-dependent data.
-libdir=@libdir@
-libprogramdir=$(libdir)/groff
+# This file is part of 'glilypond' which is part of 'groff'.
 
-# `datasubdir' says where to install platform-independent data files.
-datadir=@datadir@
-datarootdir=@datarootdir@
-dataprogramdir=$(datadir)/groff
-datasubdir=$(dataprogramdir)/$(version)$(revision)
+# 'groff' 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.
 
-# `infodir' says where to install info files.
-infodir=@infodir@
+# 'groff' 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.
 
-# `docdir' says where to install documentation files.
-docdir=@docdir@
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-# `exampledir' says where to install example files.
-exampledir=$(docdir)/examples
+# Automake rules for 'gperl' (preprocessor for added Perl parts)
 
-# `htmldocdir' says where to install documentation in HTML format.
-htmldocdir=$(docdir)/html
+# File position: <groff-source>/contrib/gperl/gperl.am
 
-# `pdfdocdir' says where to install documentation in PDF format.
-pdfdocdir=$(docdir)/pdf
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+# Written by Bernd Warken <groff-bernd.warken-72@web.de>.
+# Automake migration by Bertrand Garrigues
 
-# `fontdir' says where to install dev*/*.
-fontdir=$(datasubdir)/font
+# Last update: 22 Aug 2015
 
-# `oldfontdir' says where to install old font sets (as dev*/*).
-oldfontdir=$(datasubdir)/oldfont
+# This file is part of 'gperl' which is part of 'groff'.
 
-# `localfontdir' says where local fonts will be installed (as dev*/*).
-localfontdir=$(dataprogramdir)/site-font
+# 'groff' is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 2 of the License, or
+# (at your option) any later version.
 
-# `legacyfontdir' is for compatibility with non-GNU troff.
-legacyfontdir=/usr/lib/font
+# 'groff' 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.
 
-# `fontpath' says where to look for dev*/*.
-fontpath=$(localfontdir)$(RT_SEP)$(fontdir)$(RT_SEP)$(legacyfontdir)
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see
+# <http://www.gnu.org/licenses/gpl-2.0.html>.
 
-# `tmacdir' says where to install macros.
-tmacdir=$(datasubdir)/tmac
+########################################################################
 
-# `systemtmacdir' says where to install platform-dependent macros.
-systemtmacdir=$(libprogramdir)/site-tmac
+# Automake rules for 'gpinyin' (preprocessor for added Perl parts)
 
-# `localtmacdir' says where local files will be installed.
-localtmacdir=$(dataprogramdir)/site-tmac
+# File position: <groff-source>/contrib/gpinyin/gpinyin.am
 
-# `appresdir' says where to install the application resource file for
-# gxditview.
-appresdir=@appresdir@
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+# Written by Bernd Warken <groff-bernd.warken-72@web.de>.
+# Moved to automake by Bertrand Garrigues
 
-glilypond_dir=@glilypond_dir@
-gpinyin_dir=@gpinyin_dir@
-groffer_dir=@groffer_dir@
-grog_dir=@grog_dir@
-libprogramdir=@libprogramdir@
-referdir=@referdir@
+# Last update: 22 Aug 2015
 
-# `tmacpath' says where to look for macro files.
-# The current directory will be prepended in unsafe mode only; the home
-# directory will be always added.
-# `troffrc' and `troffrc-end' (and `eqnrc') are searched neither in the
-# current nor in the home directory.
-tmacpath=$(systemtmacdir)$(RT_SEP)$(localtmacdir)$(RT_SEP)$(tmacdir)
+# This file is part of 'gpinyin' which is part of 'groff'.
 
-# `sys_tmac_prefix' is prefix (if any) for system macro packages.
-sys_tmac_prefix=@sys_tmac_prefix@
+# 'groff' is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 2 of the License, or
+# (at your option) any later version.
 
-# `pnmtops_nosetpage' is the command to be run to generate an eps
-# file.  Some versions of pnmtops provide the -nosetpage option.
-# We detect this and use it if present.
-pnmtops_nosetpage=@pnmtops_nosetpage@
+# 'groff' 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.
 
-# `tmac_wrap' is list of system macro packages that should be made
-# available to groff by creating a corresponding macro package
-# in the groff macro directory that references the system macro
-# package.
-tmac_wrap=@tmac_wrap@
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see
+# <http://www.gnu.org/licenses/gpl-2.0.html>.
 
-# If there is a groff version of a macro package listed in $(tmac_wrap),
-# then the groff version will be installed with a prefix of this.
-# Don't make this empty.
-tmac_prefix=g
+########################################################################
 
-# The groff -mm macros will be available as -m$(tmac_m_prefix)m.
-tmac_m_prefix=\
- `for i in $(tmac_wrap) ""; do case "$$i" in m) echo $(tmac_prefix);; esac; done`
-# The groff -ms macros will be available as -m$(tmac_s_prefix)s.
-tmac_s_prefix=\
- `for i in $(tmac_wrap) ""; do case "$$i" in s) echo $(tmac_prefix);; esac; done`
-# The groff -man macros will be available as -m$(tmac_an_prefix)an.
-tmac_an_prefix=\
- `for i in $(tmac_wrap) ""; do case "$$i" in an) echo $(tmac_prefix);; esac; done`
+# Copyright (C) 2003-2018 Free Software Foundation, Inc.
+#
+# Last update: 22 Aug 2015
+#
+# This file is part of groff.
+#
+# groff 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.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+#
+# grap2graph.am
+#
 
-# Extension to be used for refer index files.  Index files are not
-# sharable between different architectures, so you might want to use
-# different suffixes for different architectures.  Choose an extension
-# that doesn't conflict with refer or any other indexing program.
-indexext=.i
+# Automake rules for 'groff_filenames'
 
-# Directory containing the default index for refer.
-indexdir=/usr/dict/papers
+# File position: <groff-source>/contrib/groff_filenames/groff_filenames.am
 
-# The filename (without suffix) of the default index for refer.
-indexname=Ind
+# Copyright (C) 2013-2018 Free Software Foundation, Inc.
 
-# common_words_file is a file containing a list of common words.
-# If your system provides /usr/lib/eign it will be copied onto this,
-# otherwise the supplied eign file will be used.
-common_words_file=$(datasubdir)/eign
+# Last update: 22 Aug 2015
 
-# `manroot' is the root of the man page directory tree.
-mandir=@mandir@
-manroot=$(mandir)
+# Written by Bernd Warken <groff-bernd.warken-72@web.de>.
+# Automake migration by Bertrand Garrigues
 
-# `man1ext' is the man section for user commands.
-man1ext=1
-man1dir=$(manroot)/man$(man1ext)
+# This file is part of 'groff'.
 
-# `man5ext' is the man section for file formats.
-man5ext=5
-man5dir=$(manroot)/man$(man5ext)
+# 'groff' is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 2 of the License, or
+# (at your option) any later version.
 
-# `man7ext' is the man section for macros.
-man7ext=7
-man7dir=$(manroot)/man$(man7ext)
+# 'groff' 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.
 
-# `dist' target is disallowed in some `configure' combinations.
-doc_dist_target_ok=@doc_dist_target_ok@
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-# The configure script checks whether the user wants the info documentation.
-# For the repo version this mechanism also suppresses building via `makeinfo'.
-make_infodoc=@make_infodoc@
-make_install_infodoc=@make_install_infodoc@
-make_uninstall_infodoc=@make_uninstall_infodoc@
+########################################################################
 
-# The configure script checks whether all necessary utility programs for
-# grohtml are available -- only then we can build the HTML documentation.
-make_htmldoc=@make_htmldoc@
-make_install_htmldoc=@make_install_htmldoc@
-make_uninstall_htmldoc=@make_uninstall_htmldoc@
+# Automake rules for 'groffer'
 
-make_htmlexamples=@make_htmlexamples@
-make_install_htmlexamples=@make_install_htmlexamples@
-make_uninstall_htmlexamples=@make_uninstall_htmlexamples@
+# File position: <groff-source>/contrib/groffer/groffer.am
 
-# However, there may always be some prebuild HTML documentation
-make_install_shipped_htmldoc=@make_install_shipped_htmldoc@
-make_uninstall_shipped_htmldoc=@make_uninstall_shipped_htmldoc@
+# Copyright (C) 2001-2018 Free Software Foundation, Inc.
+# Written by Werner Lemberg <wl@gnu.org> and
+# Bernd Warken <groff-bernd.warken-72@web.de>.
+# Automake migration by Bertrand Garrigues
 
-# The configure script also checks whether all necessary utility programs
-# for pdfroff are available -- only then we can build PDF documentation.
-make_pdfdoc=@make_pdfdoc@
-make_install_pdfdoc=@make_install_pdfdoc@
-make_uninstall_pdfdoc=@make_uninstall_pdfdoc@
+# Last update: 22 Aug 2015
 
-make_pdfexamples=@make_pdfexamples@
-make_install_pdfexamples=@make_install_pdfexamples@
-make_uninstall_pdfexamples=@make_uninstall_pdfexamples@
+# This file is part of 'groffer' which is part of 'groff'.
 
-# `other' documentation, e.g., `meref.me' and `pic.ms', as well as their
-# generated counterparts..
-make_otherdoc=@make_otherdoc@
-make_install_otherdoc=@make_install_otherdoc@
-make_uninstall_otherdoc=@make_uninstall_otherdoc@
+# 'groff' is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 2 of the License, or
+# (at your option) any later version.
 
-# `examples' -- a generic switch, but the generated examples are furtherly
-# subdivided to catch HTML and PDF production availability.
-make_examples=@make_examples@
-make_install_examples=@make_install_examples@
-make_uninstall_examples=@make_uninstall_examples@
+# 'groff' 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.
 
-# Windows `.cmd' files
-make_winscripts=@make_winscripts@
-make_install_winscripts=@make_install_winscripts@
-make_uninstall_winscripts=@make_uninstall_winscripts@
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see
+# <http://www.gnu.org/licenses/gpl-2.0.html>.
 
-# All the previous installation directories, when used, are prefixed with
-# $(DESTDIR) during install and uninstall, to support staged installations.
+########################################################################
 
-# DEFINES should include the following:
-#
-# -DWORDS_BIGENDIAN            if your target platform is big-endian
-# -DIS_EBCDIC_HOST             if the host's encoding is EBCDIC
-#
-# -DHAVE_DIRECT_H              if you have <direct.h>
-# -DHAVE_DIRENT_H              if you have <dirent.h>
-# -DHAVE_CC_INTTYPES_H         if you have a C++ <inttypes.h>
-# -DHAVE_PROCESS_H             if you have <process.h>
-# -DHAVE_LIMITS_H              if you have <limits.h>
-# -DHAVE_CC_LIMITS_H           if you have a C++ <limits.h>
-# -DHAVE_MATH_H                        if you have <math.h>
-# -DHAVE_CC_OSFCN_H            if you have a C++ <osfcn.h>
-# -DHAVE_STDDEF_H              if you have <stddef.h>
-# -DHAVE_STDLIB_H              if you have <stdlib.h>
-# -DHAVE_STRING_H              if you have <string.h>
-# -DHAVE_STRINGS_H             if you have <strings.h>
-# -DHAVE_SYS_DIR_H             if you have <sys/dir.h>
-# -DHAVE_SYS_PARAM_H           if you have <sys/param.h>
-# -DHAVE_SYS_STAT_H            if you have <sys/stat.h>
-# -DHAVE_SYS_TIME_H            if you have <sys/time.h>
-# -DHAVE_SYS_TYPES_H           if you have <sys/types.h>
-# -DHAVE_UNISTD_H              if you have <unistd.h>
-#
-# -DHAVE_FMOD                  if you have fmod()
-# -DHAVE_GETCWD                        if you have getcwd()
-# -DHAVE_GETTIMEOFDAY          if you have gettimeofday()
-# -DHAVE_ICONV                 if you have iconv()
-# -DHAVE_ISATTY                        if you have isatty()
-# -DHAVE_KILL                  if you have kill()
-# -DHAVE_LANGINFO_CODESET      if you have nl_langinfo()
-# -DHAVE_MKSTEMP               if you have mkstemp()
-# -DHAVE_MMAP                  if you have mmap()
-# -DHAVE_PUTENV                        if you have putenv()
-# -DHAVE_RENAME                        if you have rename()
-# -DHAVE_SETLOCALE             if you have setlocale()
-# -DHAVE_SNPRINTF              if you have snprintf()
-# -DHAVE_STRCASECMP            if you have strcasecmp()
-# -DHAVE_STRNCASECMP           if you have strncasecmp()
-# -DHAVE_STRERROR              if you have strerror()
-# -DHAVE_STRSEP                        if you have strsep()
-# -DHAVE_STRTOL                        if you have strtol()
-# -DHAVE_SYMLINK               if you have symlink()
-# -DHAVE_VSNPRINTF             if you have vsnprintf()
-#
-# -DNEED_DECLARATION_GETTIMEOFTODAY
-#                              if your C++ <sys/time.h> doesn't declare
-#                              gettimeofday()
-# -DNEED_DECLARATION_HYPOT     if your C++ <math.h> doesn't declare hypot()
-# -DNEED_DECLARATION_PCLOSE    if your C++ <stdio.h> doesn't declare pclose()
-# -DNEED_DECLARATION_POPEN     if your C++ <stdio.h> doesn't declare popen()
-# -DNEED_DECLARATION_PUTENV    if your C++ <stdlib.h> doesn't declare
-#                              putenv()
-# -DNEED_DECLARATION_RAND      if your C++ <stdlib.h> doesn't declare rand()
-# -DNEED_DECLARATION_SNPRINTF  if your C++ <stdio.h> doesn't declare
-#                              snprintf()
-# -DNEED_DECLARATION_SRAND     if your C++ <stdlib.h> doesn't declare srand()
-# -DNEED_DECLARATION_STRCASECMP        if your C++ <string.h> doesn't declare
-#                              strcasecmp()
-# -DNEED_DECLARATION_STRNCASECMP
-#                              if your C++ <string.h> doesn't declare
-#                              strncasecmp()
-# -DNEED_DECLARATION_VFPRINTF  if your C++ <stdio.h> doesn't declare
-#                              vfprintf()
-# -DNEED_DECLARATION_VSNPRINTF if your C++ <stdio.h> doesn't declare
-#                              vsnprintf()
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
+#      Written by Werner Lemberg (wl@gnu.org)
+#      Automake migration by Bertrand Garrigues
 #
-# -DHAVE_DECL_GETC_UNLOCKED    if you have getc_unlocked()
-# -DHAVE_DECL_SYS_SIGLIST      if you have sys_siglist[]
 #
-# -DHAVE_STRUCT_EXCEPTION      if <math.h> defines struct exception
-# -DHAVE_SYS_NERR              if you have sysnerr in <errno.h> or <stdio.h>
-# -DHAVE_SYS_ERRLIST           if you have sys_errlist in <errno.h> or
-#                              <stdio.h>
-# -DICONV_CONST=const          if declaration of iconv() needs const
-# -DLONG_FOR_TIME_T            if localtime() takes a long * not a time_t *
-# -DRETSIGTYPE=int             if signal handlers return int not void
-# -DRET_TYPE_SRAND_IS_VOID     if srand() returns void not int
+# This file is part of groff.
 #
-# -DWCOREFLAG=0200             if the 0200 bit of the status returned by
-#                              wait() indicates whether a core image was
-#                              produced for a process that was terminated
-#                              by a signal
+# groff 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.
+#
+# groff 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.
 #
-# -DHAVE_WORKING_O_NOATIME      define if <fcntl.h>'s O_NOATIME flag works
-# -DHAVE_WORKING_O_NOFOLLOW     define if <fcntl.h>'s O_NOFOLLOW flag works
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Copyright 1991-2018 Free Software Foundation, Inc.
 #
-# -Duintmax_t=<value>          define to `unsigned long' or `unsigned long
-#                              long' if <inttypes.h> does not exist
+# Last update: 22 Aug 2015
 #
-# -DTRADITIONAL_CPP            if your C++ compiler uses a traditional
-#                              (Reiser) preprocessor
-# -DARRAY_DELETE_NEEDS_SIZE    if your C++ doesn't understand `delete []'
+# This file is part of groff.
 #
-# -DPAGE=A4                    if the the printer's page size is A4
-# -DGHOSTSCRIPT=gs             the name (and directory if required) of the
-#                              ghostscript program
+# groff 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.
 #
-DEFINES=@DEFS@
-
-# Include
+# groff 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.
 #
-#   {fmod,getcwd,mkstemp,putenv,snprintf,strcasecmp,
-#    strerror,strncasecmp,strtol}.$(OBJEXT)
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+# mm.am
 #
-# in LIBOBJS if your C library is missing the corresponding function.
-# vsnprintf is defined in the snprintf.$(OBJEXT) module.
-LIBOBJS=@LIBOBJS@
-
-# `CCC' is the compiler for C++ (.cpp) files.
-CCC=@CXX@
-CC=@CC@
-# CCDEFINES are definitions for C++ compilations.
-CCDEFINES=$(DEFINES)
-# CDEFINES are definitions for C compilations.
-CDEFINES=$(DEFINES)
-
-CCFLAGS=@CXXFLAGS@
-CFLAGS=@CFLAGS@
-CPPFLAGS=@CPPFLAGS@
-LDFLAGS=@LDFLAGS@
-
-X_CFLAGS=@X_CFLAGS@
-X_LIBS=@X_LIBS@
-X_EXTRA_LIBS=@X_EXTRA_LIBS@
-X_PRE_LIBS=@X_PRE_LIBS@
-
-YACC=@YACC@
-YACCFLAGS=-v
-
-GREP=@GREP@
-EGREP=@EGREP@
-
-MAKEINFO=@MAKEINFO@
-
-EXEEXT=@EXEEXT@
-OBJEXT=@OBJEXT@
-LIBEXT=@LIBEXT@
-LIBS=@LIBS@
-LIBM=@LIBM@
-LIBICONV=@LIBICONV@
-RANLIB=@RANLIB@
-INSTALL=@INSTALL@
-INSTALL_PROGRAM=@INSTALL_PROGRAM@
-INSTALL_SCRIPT=@INSTALL_SCRIPT@
-INSTALL_DATA=@INSTALL_DATA@
-INSTALL_INFO=@INSTALL_INFO@
-LN_S=@LN_S@
-AR=ar
-ETAGS=etags
-ETAGSFLAGS=
-# Flag that tells etags to assume C++.
-ETAGSCCFLAG=-C
-# Full path to perl.
-PERL=@PERL@
-PERLVERSION=@PERLVERSION@
-# Sed command with which to edit sh scripts.
-SH_SCRIPT_SED_CMD=@SH_SCRIPT_SED_CMD@
-# Sed script to deal with OS dependencies in sh scripts.
-SH_DEPS_SED_SCRIPT=$(top_builddir)/arch/misc/shdeps.sed
-
-# The program to create directory hierarchies.
-mkinstalldirs= $(SHELL) $(top_srcdir)/mkinstalldirs
-
-PURIFY=purify
-PURIFYCCFLAGS=
-#PURIFYCCFLAGS=-g++=yes \
-#  -collector=`dirname \`$(CCC) -print-libgcc-file-name\``/ld
 
-# Passing down MAKEOVERRIDES prevents $(MAKE) from containing a second
-# copy of $(MDEFINES) when making individual directories; this could
-# cause the argument list to become too long on some systems.
-MDEFINES=\
-  "ALT_AWK_PROGS=$(ALT_AWK_PROGS)" \
-  "ALT_GHOSTSCRIPT_PROGS=$(ALT_GHOSTSCRIPT_PROGS)" \
-  "AR=$(AR)" \
-  "BROKEN_SPOOLER_FLAGS=$(BROKEN_SPOOLER_FLAGS)" \
-  "CC=$(CC)" \
-  "CCC=$(CCC)" \
-  "CCDEFINES=$(CCDEFINES)" \
-  "CCFLAGS=$(CCFLAGS)" \
-  "CDEFINES=$(CDEFINES)" \
-  "CFLAGS=$(CFLAGS)" \
-  "CPPFLAGS=$(CPPFLAGS)" \
-  "DEVICE=$(DEVICE)" \
-  "DVIPRINT=$(DVIPRINT)" \
-  "EGREP=$(EGREP)" \
-  "ETAGS=$(ETAGS)" \
-  "ETAGSCCFLAG=$(ETAGSCCFLAG)" \
-  "ETAGSFLAGS=$(ETAGSFLAGS)" \
-  "EXEEXT=$(EXEEXT)" \
-  "GLIBC21=$(GLIBC21)" \
-  "GREP=$(GREP)" \
-  "HOST=$(HOST)" \
-  "INSTALL_DATA=$(INSTALL_DATA)" \
-  "INSTALL_INFO=$(INSTALL_INFO)" \
-  "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \
-  "INSTALL_SCRIPT=$(INSTALL_SCRIPT)" \
-  "LDFLAGS=$(LDFLAGS)" \
-  "LIBEXT=$(LIBEXT)" \
-  "LIBICONV=$(LIBICONV)" \
-  "LIBM=$(LIBM)" \
-  "LIBOBJS=$(LIBOBJS)" \
-  "LIBS=$(LIBS)" \
-  "MAKEINFO=$(MAKEINFO)" \
-  "MAKEOVERRIDES=$(MAKEOVERRIDES)" \
-  "OBJEXT=$(OBJEXT)" \
-  "OTHERDEVDIRS=$(OTHERDEVDIRS)" \
-  "PAGE=$(PAGE)" \
-  "PERL=$(PERL)" \
-  "PERLVERSION=$(PERLVERSION)" \
-  "GHOSTSCRIPT=$(GHOSTSCRIPT)" \
-  "PSPRINT=$(PSPRINT)" \
-  "PURIFY=$(PURIFY)" \
-  "PURIFYCCFLAGS=$(PURIFYCCFLAGS)" \
-  "RANLIB=$(RANLIB)" \
-  "RT_SEP=$(RT_SEP)" \
-  "SH_SEP=$(SH_SEP)" \
-  "SHELL=$(SHELL)" \
-  "SH_SCRIPT_SED_CMD=$(SH_SCRIPT_SED_CMD)" \
-  "SH_DEPS_SED_SCRIPT=$(SH_DEPS_SED_SCRIPT)" \
-  "TTYDEVDIRS=$(TTYDEVDIRS)" \
-  "XDEVDIRS=$(XDEVDIRS)" \
-  "XLIBDIRS=$(XLIBDIRS)" \
-  "XPROGDIRS=$(XPROGDIRS)" \
-  "X_CFLAGS=$(X_CFLAGS)" \
-  "X_LIBS=$(X_LIBS)" \
-  "X_EXTRA_LIBS=$(X_EXTRA_LIBS)" \
-  "X_PRE_LIBS=$(X_PRE_LIBS)" \
-  "YACC=$(YACC)" \
-  "YACCFLAGS=$(YACCFLAGS)" \
-  "appresdir=$(appresdir)" \
-  "groffer_dir=$(groffer_dir)" \
-  "gpinyin_dir=$(gpinyin_dir)" \
-  "glilypond_dir=$(glilypond_dir)" \
-  "grog_dir=$(grog_dir)" \
-  "referdir=$(referdir)" \
-  "bindir=$(bindir)" \
-  "common_words_file=$(common_words_file)" \
-  "datadir=$(datadir)" \
-  "dataprogramdir=$(dataprogramdir)" \
-  "datasubdir=$(datasubdir)" \
-  "docdir=$(docdir)" \
-  "exampledir=$(exampledir)" \
-  "exec_prefix=$(exec_prefix)" \
-  "fontdir=$(fontdir)" \
-  "fontpath=$(fontpath)" \
-  "g=$(g)" \
-  "htmldocdir=$(htmldocdir)" \
-  "pdfdocdir=$(pdfdocdir)" \
-  "indexdir=$(indexdir)" \
-  "indexext=$(indexext)" \
-  "indexname=$(indexname)" \
-  "infodir=$(infodir)" \
-  "legacyfontdir=$(legacyfontdir)" \
-  "libdir=$(libdir)" \
-  "libprogramdir=$(libprogramdir)" \
-  "localfontdir=$(localfontdir)" \
-  "localtmacdir=$(localtmacdir)" \
-  "make_infodoc=$(make_infodoc)" \
-  "make_install_infodoc=$(make_install_infodoc)" \
-  "make_uninstall_infodoc=$(make_uninstall_infodoc)" \
-  "make_htmldoc=$(make_htmldoc)" \
-  "make_install_htmldoc=$(make_install_htmldoc)" \
-  "make_uninstall_htmldoc=$(make_uninstall_htmldoc)" \
-  "make_htmlexamples=$(make_htmlexamples)" \
-  "make_install_htmlexamples=$(make_install_htmlexamples)" \
-  "make_uninstall_htmlexamples=$(make_uninstall_htmlexamples)" \
-  "make_install_shipped_htmldoc=$(make_install_shipped_htmldoc)" \
-  "make_uninstall_shipped_htmldoc=$(make_uninstall_shipped_htmldoc)" \
-  "make_pdfdoc=$(make_pdfdoc)" \
-  "make_install_pdfdoc=$(make_install_pdfdoc)" \
-  "make_uninstall_pdfdoc=$(make_uninstall_pdfdoc)" \
-  "make_pdfexamples=$(make_pdfexamples)" \
-  "make_install_pdfexamples=$(make_install_pdfexamples)" \
-  "make_uninstall_pdfexamples=$(make_uninstall_pdfexamples)" \
-  "make_otherdoc=$(make_otherdoc)" \
-  "make_install_otherdoc=$(make_install_otherdoc)" \
-  "make_uninstall_otherdoc=$(make_uninstall_otherdoc)" \
-  "make_examples=$(make_examples)" \
-  "make_install_examples=$(make_install_examples)" \
-  "make_uninstall_examples=$(make_uninstall_examples)" \
-  "make_winscripts=$(make_winscripts)" \
-  "make_install_winscripts=$(make_install_winscripts)" \
-  "make_uninstall_winscripts=$(make_uninstall_winscripts)" \
-  "man1dir=$(man1dir)" \
-  "man1ext=$(man1ext)" \
-  "man5dir=$(man5dir)" \
-  "man5ext=$(man5ext)" \
-  "man7dir=$(man7dir)" \
-  "man7ext=$(man7ext)" \
-  "manroot=$(manroot)" \
-  "mkinstalldirs=$(mkinstalldirs)" \
-  "oldfontdir=$(oldfontdir)" \
-  "pnmtops_nosetpage=$(pnmtops_nosetpage)" \
-  "prefix=$(prefix)" \
-  "revision=$(revision)" \
-  "sys_tmac_prefix=$(sys_tmac_prefix)" \
-  "systemtmacdir=$(systemtmacdir)" \
-  "tmac_an_prefix=$(tmac_an_prefix)" \
-  "tmac_m_prefix=$(tmac_m_prefix)" \
-  "tmac_s_prefix=$(tmac_s_prefix)" \
-  "tmac_wrap=$(tmac_wrap)" \
-  "tmacdir=$(tmacdir)" \
-  "tmacpath=$(tmacpath)" \
-  "top_builddir=$(top_builddir)" \
-  "top_srcdir=$(top_srcdir)" \
-  "version=$(version)"
-
-MAKE_K_FLAG=`for f in x $(MAKEFLAGS); do \
-               case $$f in \
-                 *=* | --[!k]*);; \
-                 *k*) echo ' -k ';; \
-               esac; \
-             done`
-
-INCDIRS=\
-  src/include
-LIBDIRS=\
-  src/libs/libgroff \
-  src/libs/libdriver \
-  src/libs/libbib \
-  $(XLIBDIRS)
-ALLLIBDIRS=\
-  src/libs/libgroff \
-  src/libs/libdriver \
-  src/libs/libbib \
-  src/libs/libxutil
-CCPROGDIRS=\
-  src/roff/groff \
-  src/roff/troff \
-  src/preproc/preconv \
-  src/preproc/tbl \
-  src/preproc/pic \
-  src/preproc/eqn \
-  src/preproc/grn \
-  src/preproc/refer \
-  src/preproc/soelim \
-  src/preproc/html \
-  src/devices/grops \
-  src/devices/grotty \
-  src/devices/grodvi \
-  src/devices/grolj4 \
-  src/devices/grohtml \
-  src/devices/grolbp \
-  src/utils/tfmtodit \
-  src/utils/hpftodit \
-  src/utils/lookbib \
-  src/utils/indxbib \
-  src/utils/lkbib \
-  src/utils/addftinfo
-CPROGDIRS=\
-  src/utils/pfbtops
-SHPROGDIRS=\
-  src/devices/gropdf
-PROGDEPDIRS=\
-  arch/misc
-PROGDIRS=\
-  $(PROGDEPDIRS) \
-  $(CCPROGDIRS) \
-  $(CPROGDIRS) \
-  $(SHPROGDIRS) \
-  $(XPROGDIRS)
-ALLPROGDIRS=\
-  $(PROGDEPDIRS) \
-  $(CCPROGDIRS) \
-  $(CPROGDIRS) \
-  $(SHPROGDIRS) \
-  src/devices/xditview \
-  src/utils/xtotroff
-DEVDIRS=\
-  font/devps \
-  font/devdvi \
-  font/devhtml
-ALLTTYDEVDIRS=\
-  font/devascii \
-  font/devlatin1 \
-  font/devutf8 \
-  font/devcp1047
-# `doc' must be processed before `contrib/pdfmark',
-# pdf stuff must be processed before `contrib/mom',
-# devpdf fonts depends on `afmtodit'
-OTHERDIRS=\
-  src/utils/afmtodit \
-  font/devpdf \
-  arch/mingw \
-  contrib/chem \
-  contrib/eqn2graph \
-  contrib/gdiffmk \
-  contrib/glilypond \
-  contrib/gperl \
-  contrib/gpinyin \
-  contrib/grap2graph \
-  contrib/groff_filenames \
-  contrib/groffer \
-  contrib/hdtbl \
-  contrib/mm \
-  contrib/pdfmark \
-  contrib/pic2graph \
-  contrib/mom \
-  doc \
-  man \
-  src/roff/grog \
-  src/roff/nroff \
-  tmac
-
-# OTHERDIRS is handled specially in the `$(TARGETS)' rule to avoid
-# dependency problems with parallel builds.
-ALLDIRS=\
-  $(INCDIRS) \
-  $(LIBDIRS) \
-  $(PROGDIRS) \
-  $(DEVDIRS) \
-  $(XDEVDIRS) \
-  $(OTHERDEVDIRS) \
-  $(TTYDEVDIRS)
-# $(OTHERDIRS)
-EXTRADIRS=\
-  font/devps/generate \
-  font/devdvi/generate \
-  font/devlj4/generate \
-  doc
-NOMAKEDIRS=\
-  m4 \
-  arch/djgpp \
-  contrib/chem/examples \
-  contrib/chem/examples/122 \
-  contrib/hdtbl/examples \
-  contrib/mm/examples \
-  contrib/mm/mm \
-  contrib/mom/examples \
-  contrib/mom/momdoc \
-  contrib/gdiffmk/tests \
-  src/libs/snprintf \
-  src/libs/gnulib/lib \
-  src/libs/gnulib/lib/uniwidth \
-  src/libs/gnulib/m4 \
-  src/libs/gnulib/build-aux \
-  src/libs/gnulib/build-aux/snippet \
-  src/libs/gnulib \
-  font/devps/old \
-  font/devpdf/util \
-  font/util
-GNULIBDIRS=\
-  src/libs/gnulib
-DISTDIRS=\
-  $(INCDIRS) \
-  $(ALLLIBDIRS) \
-  $(ALLPROGDIRS) \
-  $(DEVDIRS) \
-  $(XDEVDIRS) \
-  $(OTHERDEVDIRS) \
-  $(ALLTTYDEVDIRS) \
-  $(OTHERDIRS) \
-  $(EXTRADIRS) \
-  $(NOMAKEDIRS) \
-  $(GNULIBDIRS)
-TARGETS=\
-  all \
-  install_bin install_data \
-  clean distclean mostlyclean realclean extraclean \
-  distfiles \
-  TAGS \
-  depend \
-  uninstall_sub \
-  fonts
-
-# This ENVSETUP gork is required by the DJGPP build on Windows 9X,
-# where Make needs to be case-sensitive to find files like BI and VERSION.
-ENVSETUP=\
-       if test -f $(srcdir)/makefile.ccpg* && \
-          test -f $(srcdir)/Makefile.ccpg*; then \
-         FNCASE=y; export FNCASE; \
-       else :; \
+# Copyright (C) 2002-2018 Free Software Foundation, Inc.
+#      Written by Werner Lemberg (wl@gnu.org)
+#      Automake migration by Bertrand Garrigues
+#
+#
+# This file is part of groff.
+#
+# groff 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.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+
+# Copyright (C) 2005-2018 Free Software Foundation, Inc.
+#      Written by Keith Marshall (keith.d.marshall@ntlworld.com)
+#      Automake migration by Bertrand Garrigues
+#
+# Last update: 22 Aug 2015
+#
+# This file is part of groff.
+#
+# groff 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.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+
+# Copyright (C) 2001-2018 Free Software Foundation, Inc.
+#
+# Last update: 22 Aug 2015
+#
+# This file is part of groff.
+#
+# groff 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.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+#
+# pic2graph.am
+#
+
+# Copyright (C) 2002-2018 Free Software Foundation, Inc.
+#      Original Makefile.sub written by Werner Lemberg <wl@gnu.org>
+#      Automake migration by 
+#      Bertrand Garrigues <bertrand.garrigues@laposte.net>
+#
+#
+# This file is part of groff.
+#
+# groff 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.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Last update: 13 Aug 2015
+#
+# This file is part of 'groff'.
+#
+# 'groff' 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.
+#
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Last update: 13 Aug 2015
+#
+# This file is part of 'groff'.
+#
+# 'groff' 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.
+#
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Last update: 13 Aug 2015
+#
+# This file is part of 'groff'.
+#
+# 'groff' 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.
+#
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Last update: 13 Aug 2015
+#
+# This file is part of 'groff'.
+#
+# 'groff' 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.
+#
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Last update: 13 Aug 2015
+#
+# This file is part of 'groff'.
+#
+# 'groff' 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.
+#
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Last update: 13 Aug 2015
+#
+# This file is part of 'groff'.
+#
+# 'groff' 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.
+#
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Last update: 13 Aug 2015
+#
+# This file is part of 'groff'.
+#
+# 'groff' 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.
+#
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Last update: 13 Aug 2015
+#
+# This file is part of 'groff'.
+#
+# 'groff' 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.
+#
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Last update: 13 Aug 2015
+#
+# This file is part of 'groff'.
+#
+# 'groff' 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.
+#
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Last update: 13 Aug 2015
+#
+# This file is part of 'groff'.
+#
+# 'groff' 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.
+#
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Last update: 13 Aug 2015
+#
+# This file is part of 'groff'.
+#
+# 'groff' 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.
+#
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+
+# Copyright (C) 2011-2018 Free Software Foundation, Inc.
+#      Original Makefile.sub written
+#      by Deri James <deri@chuzzlewit.demon.co.uk>
+#      Automake migration by Bertrand Garrigues
+#
+# Last update: 2017-11-02
+#
+# This file is part of groff.
+#
+# groff 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.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Last update: 13 Aug 2015
+#
+# This file is part of 'groff'.
+#
+# 'groff' 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.
+#
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Last update: 13 Aug 2015
+#
+# This file is part of 'groff'.
+#
+# 'groff' 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.
+#
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+
+# Copyright (C) 2015-2018 Free Software Foundation, Inc.
+#
+# Last update: 13 Aug 2015
+#
+# This file is part of groff.
+#
+# groff is free software; you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free
+# Software Foundation, either version 2 of the License, or (at your
+# option) any later version.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Last update: 13 Aug 2015
+#
+# This file is part of 'groff'.
+#
+# 'groff' 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.
+#
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+
+# Automake rules for 'include'
+#
+# File position: <groff-source>/src/include/include.am
+#
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Latest update: 13 Aug 2015
+#
+# 'groff' is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 2 of the License, or
+# (at your option) any later version.
+#
+# 'groff' 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
+# <http://www.gnu.org/licenses/gpl-2.0.html>.
+#
+########################################################################
+
+# Automake rules for 'libbib'
+#
+# File position: <groff-source>/src/libs/libbib/libbib.am
+#
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Latest update: 13 Aug 2015
+#
+# 'groff' is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 2 of the License, or
+# (at your option) any later version.
+#
+# 'groff' 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
+# <http://www.gnu.org/licenses/gpl-2.0.html>.
+#
+########################################################################
+
+# Automake rules for 'libdriver'
+#
+# File position: <groff-source>/src/libs/libdriver/libdriver.am
+#
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Latest update: 13 Aug 2015
+#
+# 'groff' is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 2 of the License, or
+# (at your option) any later version.
+#
+# 'groff' 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
+# <http://www.gnu.org/licenses/gpl-2.0.html>.
+#
+########################################################################
+
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Latest update: 13 Aug 2015
+#
+# This file is part of groff.
+#
+# groff 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.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+
+# Automake rules for 'libxutil'
+#
+# File position: <groff-source>/src/libs/libxutil/libxutil.am
+#
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Latest update: 13 Aug 2015
+#
+# 'groff' is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 2 of the License, or
+# (at your option) any later version.
+#
+# 'groff' 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
+# <http://www.gnu.org/licenses/gpl-2.0.html>.
+#
+########################################################################
+
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Last update: 22 Aug 2015
+#
+# This file is part of groff.
+#
+# groff 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.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Last update: 22 Aug 2015
+#
+# This file is part of groff.
+#
+# groff 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.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Last update: 13 Aug 2015
+#
+# This file is part of groff.
+#
+# groff 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.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Last update: 22 Aug 2015
+#
+# This file is part of groff.
+#
+# groff 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.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+
+# Copyright (C) 2011-2018 Free Software Foundation, Inc.
+#  Original Makefile.sub written by Deri James <deri@chuzzlewit.demon.co.uk>.
+#  Automake migration by Bertrand Garrigues
+#
+# Last update: 22 Aug 2015
+#
+# This file is part of groff.
+#
+# groff 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.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Last update: 22 Aug 2015
+#
+# This file is part of groff.
+#
+# groff 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.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Last update: 22 Aug 2015
+#
+# This file is part of groff.
+#
+# groff 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.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Last update: 22 Aug 2015
+#
+# This file is part of groff.
+#
+# groff 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.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Latest update: 22 Aug 2015
+#
+# This file is part of groff.
+#
+# groff 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.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Latest update: 22 Aug 2015
+#
+# This file is part of groff.
+#
+# groff 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.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Latest update: 13 Aug 2015
+#
+# This file is part of groff.
+#
+# groff 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.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Latest update: 22 Aug 2015
+#
+# This file is part of groff.
+#
+# groff 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.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Latest update: 22 Aug 2015
+#
+# This file is part of groff.
+#
+# groff 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.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Latest update: 22 Aug 2015
+#
+# This file is part of groff.
+#
+# groff 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.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Latest update: 22 Aug 2015
+#
+# This file is part of groff.
+#
+# groff 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.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Latest update: 22 Aug 2015
+#
+# This file is part of groff.
+#
+# groff 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.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+
+# Copyright (C) 1993-2018 Free Software Foundation, Inc.
+#
+#   Original Makefile.sub rewritten by 
+#   Bernd Warken <groff-bernd.warken-72@web.de>
+#   and Werner LEMBERG <wl@gnu.org>
+#
+#   Automake migration by 
+#   Bertrand Garrigues <bertrand.garrigues@laposte.net>
+#
+# Latest update: 22 Aug 2015
+#
+# 'groff' 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.
+#
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+
+########################################################################
+
+# grog.am for 'grog'
+#
+# File position: <groff-source>/src/roff/grog/grog.am
+#
+# Copyright (C) 1993-2018 Free Software Foundation, Inc.
+#
+# Latest update: 22 Aug 2015
+#
+# This file is part of 'grog' which is part of 'groff'.
+#
+# 'groff' 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.
+#
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Latest update: 22 Aug 2015
+#
+# This file is part of groff.
+#
+# groff 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.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Latest update: 22 Aug 2015
+#
+# This file is part of groff.
+#
+# groff 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.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+
+# Automake rules for 'src utils addftinfo'
+#
+# File position: <groff-source>/src/utils/addftinfo/addftinfo.am
+#
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Latest update: 22 Aug 2015
+#
+# 'groff' is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 2 of the License, or
+# (at your option) any later version.
+#
+# 'groff' 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
+# <http://www.gnu.org/licenses/gpl-2.0.html>.
+#
+########################################################################
+
+# Automake rules for 'src utils afmtodit'
+#
+# File position: <groff-source>/src/utils/afmtodit/afmtdodit.am
+#
+# Copyright (C) 2013-2018 Free Software Foundation, Inc.
+#
+# Latest update: 22 Aug 2015
+#
+# This file is part of groff.
+#
+# groff 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.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+#
+########################################################################
+
+# Automake rules for 'src utils hpftodit'
+#
+# File position: <groff-source>/src/utils/hpftodit/hpftodit.am
+#
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Latest update: 22 Aug 2015
+#
+# 'groff' is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 2 of the License, or
+# (at your option) any later version.
+#
+# 'groff' 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
+# <http://www.gnu.org/licenses/gpl-2.0.html>.
+#
+########################################################################
+
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Latest update: 22 Aug 2015
+#
+# This file is part of groff.
+#
+# groff 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.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Latest update: 22 Aug 2015
+#
+# This file is part of groff.
+#
+# groff 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.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Latest update: 22 Aug 2015
+#
+# This file is part of groff.
+#
+# groff 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.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Latest update: 22 Aug 2015
+#
+# This file is part of groff.
+#
+# groff 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.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Latest update: 22 Aug 2015
+#
+# This file is part of groff.
+#
+# groff 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.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Latest update: 22 Aug 2015
+#
+# This file is part of groff.
+#
+# groff 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.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+
+
+
+
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \  ]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs  ]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+bin_PROGRAMS = grodvi$(EXEEXT) post-grohtml$(EXEEXT) grolbp$(EXEEXT) \
+       grolj4$(EXEEXT) grops$(EXEEXT) grotty$(EXEEXT) $(am__EXEEXT_1) \
+       pre-grohtml$(EXEEXT) preconv$(EXEEXT) groff$(EXEEXT) \
+       addftinfo$(EXEEXT) hpftodit$(EXEEXT) lkbib$(EXEEXT) \
+       pfbtops$(EXEEXT) tfmtodit$(EXEEXT) $(am__EXEEXT_2)
+nobase_bin_PROGRAMS =
+check_PROGRAMS =
+prefixexecbin_PROGRAMS = eqn$(EXEEXT) grn$(EXEEXT) pic$(EXEEXT) \
+       refer$(EXEEXT) soelim$(EXEEXT) tbl$(EXEEXT) troff$(EXEEXT) \
+       indxbib$(EXEEXT) lookbib$(EXEEXT)
+@LIBUNISTRING_COMPILE_UNIWIDTH_WIDTH_TRUE@am__append_1 = lib/uniwidth/width.c
+@BUILD_WINSCRIPTS_TRUE@am__append_2 = $(WINSCRIPTS)
+@BUILD_WINSCRIPTS_FALSE@am__append_3 = $(WINSCRIPTS)
+@BUILD_EXAMPLES_FALSE@am__append_4 = $(HDTBLEXAMPLEFILES) 
+@BUILD_EXAMPLES_TRUE@am__append_5 = $(hdtbl_TESTS)
+@BUILD_EXAMPLES_TRUE@am__append_6 = $(hdtbl_TESTS)
+@BUILD_EXAMPLES_FALSE@am__append_7 = $(MOMEXAMPLEFILES)
+@BUILD_PDFEXAMPLES_TRUE@@HAVE_PDFTOOLS_TRUE@am__append_8 = $(mom_TESTS)
+@BUILD_PDFEXAMPLES_TRUE@@HAVE_PDFTOOLS_TRUE@am__append_9 = $(mom_TESTS)
+@BUILD_PDFDOC_TRUE@am__append_10 = $(PDFDOCFILES)
+@BUILD_PDFDOC_FALSE@am__append_11 = $(PDFDOCFILES)
+@BUILD_OTHERDOC_TRUE@am__append_12 = $(PROCESSEDDOCFILES)
+@BUILD_OTHERDOC_FALSE@am__append_13 = $(DOCFILES)
+@BUILD_PDFDOC_TRUE@am__append_14 = doc/automake.pdf
+@BUILD_EXAMPLES_TRUE@am__append_15 = $(PROCESSEDEXAMPLEFILES)
+@BUILD_EXAMPLES_FALSE@am__append_16 = $(EXAMPLEFILES)
+@BUILD_INFODOC_TRUE@am__append_17 = doc/groff.info doc/groff.info-2 doc/groff.info-2
+@WITHOUT_X11_FALSE@am__append_18 = libxutil.a
+@WITHOUT_X11_TRUE@am__append_19 = $(GXDITVIEWSOURCES)
+@WITHOUT_X11_FALSE@am__append_20 = gxditview
+@WITHOUT_X11_FALSE@am__append_21 = $(XDITVIEW_GENHDRS)
+@WITHOUT_X11_FALSE@am__append_22 = src/devices/xditview/gxditview.1
+@WITHOUT_X11_FALSE@am__append_23 = xtotroff
+@WITHOUT_X11_FALSE@am__append_24 = src/utils/xtotroff/xtotroff.1
+@USEPROGRAMPREFIX_FALSE@am__append_25 = $(PREFIXMAN1)
+subdir = .
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/gnulib_m4/00gnulib.m4 \
+       $(top_srcdir)/gnulib_m4/absolute-header.m4 \
+       $(top_srcdir)/gnulib_m4/alloca.m4 \
+       $(top_srcdir)/gnulib_m4/asm-underscore.m4 \
+       $(top_srcdir)/gnulib_m4/errno_h.m4 \
+       $(top_srcdir)/gnulib_m4/exponentd.m4 \
+       $(top_srcdir)/gnulib_m4/exponentf.m4 \
+       $(top_srcdir)/gnulib_m4/exponentl.m4 \
+       $(top_srcdir)/gnulib_m4/extensions.m4 \
+       $(top_srcdir)/gnulib_m4/extern-inline.m4 \
+       $(top_srcdir)/gnulib_m4/float_h.m4 \
+       $(top_srcdir)/gnulib_m4/fpieee.m4 \
+       $(top_srcdir)/gnulib_m4/fprintf-posix.m4 \
+       $(top_srcdir)/gnulib_m4/frexp.m4 \
+       $(top_srcdir)/gnulib_m4/frexpl.m4 \
+       $(top_srcdir)/gnulib_m4/fseterr.m4 \
+       $(top_srcdir)/gnulib_m4/gnulib-common.m4 \
+       $(top_srcdir)/gnulib_m4/gnulib-comp.m4 \
+       $(top_srcdir)/gnulib_m4/host-cpu-c-abi.m4 \
+       $(top_srcdir)/gnulib_m4/include_next.m4 \
+       $(top_srcdir)/gnulib_m4/intmax_t.m4 \
+       $(top_srcdir)/gnulib_m4/inttypes_h.m4 \
+       $(top_srcdir)/gnulib_m4/isnand.m4 \
+       $(top_srcdir)/gnulib_m4/isnanf.m4 \
+       $(top_srcdir)/gnulib_m4/isnanl.m4 \
+       $(top_srcdir)/gnulib_m4/ldexpl.m4 \
+       $(top_srcdir)/gnulib_m4/libunistring-base.m4 \
+       $(top_srcdir)/gnulib_m4/limits-h.m4 \
+       $(top_srcdir)/gnulib_m4/longlong.m4 \
+       $(top_srcdir)/gnulib_m4/math_h.m4 \
+       $(top_srcdir)/gnulib_m4/memchr.m4 \
+       $(top_srcdir)/gnulib_m4/mmap-anon.m4 \
+       $(top_srcdir)/gnulib_m4/multiarch.m4 \
+       $(top_srcdir)/gnulib_m4/nocrash.m4 \
+       $(top_srcdir)/gnulib_m4/non-recursive-gnulib-prefix-hack.m4 \
+       $(top_srcdir)/gnulib_m4/off_t.m4 \
+       $(top_srcdir)/gnulib_m4/printf-frexp.m4 \
+       $(top_srcdir)/gnulib_m4/printf-frexpl.m4 \
+       $(top_srcdir)/gnulib_m4/printf.m4 \
+       $(top_srcdir)/gnulib_m4/signbit.m4 \
+       $(top_srcdir)/gnulib_m4/size_max.m4 \
+       $(top_srcdir)/gnulib_m4/snprintf.m4 \
+       $(top_srcdir)/gnulib_m4/ssize_t.m4 \
+       $(top_srcdir)/gnulib_m4/stddef_h.m4 \
+       $(top_srcdir)/gnulib_m4/stdint.m4 \
+       $(top_srcdir)/gnulib_m4/stdint_h.m4 \
+       $(top_srcdir)/gnulib_m4/stdio_h.m4 \
+       $(top_srcdir)/gnulib_m4/string_h.m4 \
+       $(top_srcdir)/gnulib_m4/sys_types_h.m4 \
+       $(top_srcdir)/gnulib_m4/vasnprintf.m4 \
+       $(top_srcdir)/gnulib_m4/vsnprintf.m4 \
+       $(top_srcdir)/gnulib_m4/warn-on-use.m4 \
+       $(top_srcdir)/gnulib_m4/wchar_h.m4 \
+       $(top_srcdir)/gnulib_m4/wchar_t.m4 \
+       $(top_srcdir)/gnulib_m4/wctype_h.m4 \
+       $(top_srcdir)/gnulib_m4/wcwidth.m4 \
+       $(top_srcdir)/gnulib_m4/wint_t.m4 \
+       $(top_srcdir)/gnulib_m4/xsize.m4 $(top_srcdir)/acinclude.m4 \
+       $(top_srcdir)/m4/ax_compare_version.m4 \
+       $(top_srcdir)/m4/ax_prog_perl_version.m4 \
+       $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/fcntl-o.m4 \
+       $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/groff.m4 \
+       $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \
+       $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+       $(top_srcdir)/m4/localcharset.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
+       $(am__configure_deps) $(dist_bin_SCRIPTS) \
+       $(am__dist_chemexample_DATA_DIST) $(dist_chempic_DATA) \
+       $(dist_devlj4font_DATA) $(dist_devlj4fontgen_DATA) \
+       $(dist_devpsfont_DATA) $(dist_devpsgen_DATA) \
+       $(am__dist_docexamples_DATA_DIST) $(dist_glilypond_DATA) \
+       $(dist_gpinyin_DATA) $(dist_grog_DATA) \
+       $(am__dist_hdtblexample_DATA_DIST) $(dist_localtmac_DATA) \
+       $(dist_mm_DATA) $(dist_mmexample_DATA) \
+       $(am__dist_momexample_DATA_DIST) $(dist_momtmac_DATA) \
+       $(dist_olddevpsfont_DATA) $(am__dist_otherdoc_DATA_DIST) \
+       $(dist_pdfmarktmac_DATA) $(dist_tmac_DATA) $(dist_tmacmm_DATA) \
+       $(am__DIST_COMMON)
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno config.status.lineno
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/src/include/config.h
+CONFIG_CLEAN_FILES = test-groff
+CONFIG_CLEAN_VPATH_FILES =
+@WITHOUT_X11_FALSE@am__EXEEXT_1 = gxditview$(EXEEXT)
+@WITHOUT_X11_FALSE@am__EXEEXT_2 = xtotroff$(EXEEXT)
+am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)" \
+       "$(DESTDIR)$(prefixexecbindir)" "$(DESTDIR)$(bindir)" \
+       "$(DESTDIR)$(bindir)" "$(DESTDIR)$(prefixexecbindir)" \
+       "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man5dir)" \
+       "$(DESTDIR)$(man7dir)" "$(DESTDIR)$(devX10012fontdir)" \
+       "$(DESTDIR)$(devX100fontdir)" "$(DESTDIR)$(devX7512fontdir)" \
+       "$(DESTDIR)$(devX75fontdir)" "$(DESTDIR)$(devasciifontdir)" \
+       "$(DESTDIR)$(devcp1047fontdir)" "$(DESTDIR)$(devdvifontdir)" \
+       "$(DESTDIR)$(devdvigendir)" "$(DESTDIR)$(devhtmlfontdir)" \
+       "$(DESTDIR)$(devlatin1fontdir)" "$(DESTDIR)$(devlbpfontdir)" \
+       "$(DESTDIR)$(devpdffontdir)" "$(DESTDIR)$(devpdffontencdir)" \
+       "$(DESTDIR)$(devpdffontmapdir)" "$(DESTDIR)$(devutf8fontdir)" \
+       "$(DESTDIR)$(chemexampledir)" "$(DESTDIR)$(chempicdir)" \
+       "$(DESTDIR)$(devlj4fontdir)" "$(DESTDIR)$(devlj4fontgendir)" \
+       "$(DESTDIR)$(devpsfontdir)" "$(DESTDIR)$(devpsgendir)" \
+       "$(DESTDIR)$(docexamplesdir)" "$(DESTDIR)$(glilyponddir)" \
+       "$(DESTDIR)$(gpinyindir)" "$(DESTDIR)$(grogdir)" \
+       "$(DESTDIR)$(hdtblexampledir)" "$(DESTDIR)$(localtmacdir)" \
+       "$(DESTDIR)$(mmdir)" "$(DESTDIR)$(mmexampledir)" \
+       "$(DESTDIR)$(momexampledir)" "$(DESTDIR)$(momtmacdir)" \
+       "$(DESTDIR)$(olddevpsfontdir)" "$(DESTDIR)$(otherdocdir)" \
+       "$(DESTDIR)$(pdfmarktmacdir)" "$(DESTDIR)$(tmacdir)" \
+       "$(DESTDIR)$(tmacmmdir)" "$(DESTDIR)$(grofferdir)" \
+       "$(DESTDIR)$(groffoptsdir)" "$(DESTDIR)$(hdtbltmacdir)" \
+       "$(DESTDIR)$(htmlpicdir)" "$(DESTDIR)$(momhtmldir)" \
+       "$(DESTDIR)$(chemexampledir)" "$(DESTDIR)$(chemexample122dir)" \
+       "$(DESTDIR)$(devlj4fontdir)" "$(DESTDIR)$(devpsfontdir)" \
+       "$(DESTDIR)$(docexamplesdir)" "$(DESTDIR)$(docpdfdocdir)" \
+       "$(DESTDIR)$(hdtblexampledir)" "$(DESTDIR)$(htmlexamplesdir)" \
+       "$(DESTDIR)$(mdocdir)" "$(DESTDIR)$(momprocessedexampledir)" \
+       "$(DESTDIR)$(otherdocdir)" "$(DESTDIR)$(pdfmarkpdfdocdir)" \
+       "$(DESTDIR)$(tmacdir)"
+PROGRAMS = $(bin_PROGRAMS) $(nobase_bin_PROGRAMS) \
+       $(prefixexecbin_PROGRAMS)
+LIBRARIES = $(noinst_LIBRARIES)
+AM_V_AR = $(am__v_AR_@AM_V@)
+am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@)
+am__v_AR_0 = @echo "  AR      " $@;
+am__v_AR_1 = 
+lib_libgnu_a_AR = $(AR) $(ARFLAGS)
+am__DEPENDENCIES_1 =
+am__lib_libgnu_a_SOURCES_DIST = lib/localcharset.c lib/math.c \
+       lib/printf-frexp.c lib/printf-frexpl.c lib/size_max.h \
+       lib/uniwidth/width.c lib/wctype-h.c lib/xsize.h lib/xsize.c
+am__dirstamp = $(am__leading_dot)dirstamp
+@LIBUNISTRING_COMPILE_UNIWIDTH_WIDTH_TRUE@am__objects_1 = lib/uniwidth/width.$(OBJEXT)
+am_lib_libgnu_a_OBJECTS = lib/localcharset.$(OBJEXT) \
+       lib/math.$(OBJEXT) lib/printf-frexp.$(OBJEXT) \
+       lib/printf-frexpl.$(OBJEXT) $(am__objects_1) \
+       lib/wctype-h.$(OBJEXT) lib/xsize.$(OBJEXT)
+lib_libgnu_a_OBJECTS = $(am_lib_libgnu_a_OBJECTS)
+libbib_a_AR = $(AR) $(ARFLAGS)
+libbib_a_LIBADD =
+am_libbib_a_OBJECTS = src/libs/libbib/common.$(OBJEXT) \
+       src/libs/libbib/index.$(OBJEXT) \
+       src/libs/libbib/linear.$(OBJEXT) \
+       src/libs/libbib/search.$(OBJEXT) src/libs/libbib/map.$(OBJEXT)
+libbib_a_OBJECTS = $(am_libbib_a_OBJECTS)
+libdriver_a_AR = $(AR) $(ARFLAGS)
+libdriver_a_LIBADD =
+am_libdriver_a_OBJECTS = src/libs/libdriver/input.$(OBJEXT) \
+       src/libs/libdriver/printer.$(OBJEXT)
+libdriver_a_OBJECTS = $(am_libdriver_a_OBJECTS)
+libgroff_a_AR = $(AR) $(ARFLAGS)
+libgroff_a_LIBADD =
+am_libgroff_a_OBJECTS = src/libs/libgroff/libgroff_a-assert.$(OBJEXT) \
+       src/libs/libgroff/libgroff_a-change_lf.$(OBJEXT) \
+       src/libs/libgroff/libgroff_a-cmap.$(OBJEXT) \
+       src/libs/libgroff/libgroff_a-color.$(OBJEXT) \
+       src/libs/libgroff/libgroff_a-cset.$(OBJEXT) \
+       src/libs/libgroff/libgroff_a-curtime.$(OBJEXT) \
+       src/libs/libgroff/libgroff_a-device.$(OBJEXT) \
+       src/libs/libgroff/libgroff_a-errarg.$(OBJEXT) \
+       src/libs/libgroff/libgroff_a-error.$(OBJEXT) \
+       src/libs/libgroff/libgroff_a-fatal.$(OBJEXT) \
+       src/libs/libgroff/libgroff_a-filename.$(OBJEXT) \
+       src/libs/libgroff/libgroff_a-font.$(OBJEXT) \
+       src/libs/libgroff/libgroff_a-fontfile.$(OBJEXT) \
+       src/libs/libgroff/libgroff_a-geometry.$(OBJEXT) \
+       src/libs/libgroff/libgroff_a-getopt.$(OBJEXT) \
+       src/libs/libgroff/libgroff_a-getopt1.$(OBJEXT) \
+       src/libs/libgroff/libgroff_a-glyphuni.$(OBJEXT) \
+       src/libs/libgroff/libgroff_a-htmlhint.$(OBJEXT) \
+       src/libs/libgroff/libgroff_a-hypot.$(OBJEXT) \
+       src/libs/libgroff/libgroff_a-iftoa.$(OBJEXT) \
+       src/libs/libgroff/libgroff_a-invalid.$(OBJEXT) \
+       src/libs/libgroff/libgroff_a-itoa.$(OBJEXT) \
+       src/libs/libgroff/libgroff_a-lf.$(OBJEXT) \
+       src/libs/libgroff/libgroff_a-lineno.$(OBJEXT) \
+       src/libs/libgroff/libgroff_a-localcharset.$(OBJEXT) \
+       src/libs/libgroff/libgroff_a-macropath.$(OBJEXT) \
+       src/libs/libgroff/libgroff_a-matherr.$(OBJEXT) \
+       src/libs/libgroff/libgroff_a-maxfilename.$(OBJEXT) \
+       src/libs/libgroff/libgroff_a-maxpathname.$(OBJEXT) \
+       src/libs/libgroff/libgroff_a-mksdir.$(OBJEXT) \
+       src/libs/libgroff/libgroff_a-nametoindex.$(OBJEXT) \
+       src/libs/libgroff/libgroff_a-new.$(OBJEXT) \
+       src/libs/libgroff/libgroff_a-paper.$(OBJEXT) \
+       src/libs/libgroff/libgroff_a-prime.$(OBJEXT) \
+       src/libs/libgroff/libgroff_a-progname.$(OBJEXT) \
+       src/libs/libgroff/libgroff_a-ptable.$(OBJEXT) \
+       src/libs/libgroff/libgroff_a-quotearg.$(OBJEXT) \
+       src/libs/libgroff/libgroff_a-relocate.$(OBJEXT) \
+       src/libs/libgroff/libgroff_a-searchpath.$(OBJEXT) \
+       src/libs/libgroff/libgroff_a-spawnvp.$(OBJEXT) \
+       src/libs/libgroff/libgroff_a-string.$(OBJEXT) \
+       src/libs/libgroff/libgroff_a-strsave.$(OBJEXT) \
+       src/libs/libgroff/libgroff_a-symbol.$(OBJEXT) \
+       src/libs/libgroff/libgroff_a-tmpfile.$(OBJEXT) \
+       src/libs/libgroff/libgroff_a-tmpname.$(OBJEXT) \
+       src/libs/libgroff/libgroff_a-unicode.$(OBJEXT) \
+       src/libs/libgroff/libgroff_a-uniglyph.$(OBJEXT) \
+       src/libs/libgroff/libgroff_a-uniuni.$(OBJEXT)
+nodist_libgroff_a_OBJECTS =  \
+       src/libs/libgroff/libgroff_a-version.$(OBJEXT)
+libgroff_a_OBJECTS = $(am_libgroff_a_OBJECTS) \
+       $(nodist_libgroff_a_OBJECTS)
+libxutil_a_AR = $(AR) $(ARFLAGS)
+libxutil_a_LIBADD =
+am__libxutil_a_SOURCES_DIST = src/libs/libxutil/DviChar.c \
+       src/libs/libxutil/XFontName.c src/libs/libxutil/xmalloc.c
+@WITHOUT_X11_FALSE@am_libxutil_a_OBJECTS = src/libs/libxutil/libxutil_a-DviChar.$(OBJEXT) \
+@WITHOUT_X11_FALSE@    src/libs/libxutil/libxutil_a-XFontName.$(OBJEXT) \
+@WITHOUT_X11_FALSE@    src/libs/libxutil/libxutil_a-xmalloc.$(OBJEXT)
+libxutil_a_OBJECTS = $(am_libxutil_a_OBJECTS)
+am_addftinfo_OBJECTS = src/utils/addftinfo/addftinfo.$(OBJEXT) \
+       src/utils/addftinfo/guess.$(OBJEXT)
+addftinfo_OBJECTS = $(am_addftinfo_OBJECTS)
+addftinfo_DEPENDENCIES = libgroff.a lib/libgnu.a
+am_eqn_OBJECTS = src/preproc/eqn/eqn-main.$(OBJEXT) \
+       src/preproc/eqn/eqn-lex.$(OBJEXT) \
+       src/preproc/eqn/eqn-box.$(OBJEXT) \
+       src/preproc/eqn/eqn-limit.$(OBJEXT) \
+       src/preproc/eqn/eqn-list.$(OBJEXT) \
+       src/preproc/eqn/eqn-over.$(OBJEXT) \
+       src/preproc/eqn/eqn-text.$(OBJEXT) \
+       src/preproc/eqn/eqn-script.$(OBJEXT) \
+       src/preproc/eqn/eqn-mark.$(OBJEXT) \
+       src/preproc/eqn/eqn-other.$(OBJEXT) \
+       src/preproc/eqn/eqn-delim.$(OBJEXT) \
+       src/preproc/eqn/eqn-sqrt.$(OBJEXT) \
+       src/preproc/eqn/eqn-pile.$(OBJEXT) \
+       src/preproc/eqn/eqn-special.$(OBJEXT) \
+       src/preproc/eqn/eqn-eqn.$(OBJEXT)
+eqn_OBJECTS = $(am_eqn_OBJECTS)
+eqn_DEPENDENCIES = $(am__DEPENDENCIES_1) libgroff.a lib/libgnu.a
+am_grn_OBJECTS = src/preproc/grn/hdb.$(OBJEXT) \
+       src/preproc/grn/hpoint.$(OBJEXT) \
+       src/preproc/grn/hgraph.$(OBJEXT) \
+       src/preproc/grn/main.$(OBJEXT)
+grn_OBJECTS = $(am_grn_OBJECTS)
+grn_DEPENDENCIES = libgroff.a lib/libgnu.a $(am__DEPENDENCIES_1)
+am_grodvi_OBJECTS = src/devices/grodvi/dvi.$(OBJEXT)
+grodvi_OBJECTS = $(am_grodvi_OBJECTS)
+grodvi_DEPENDENCIES = libdriver.a libgroff.a lib/libgnu.a \
+       $(am__DEPENDENCIES_1)
+am_groff_OBJECTS = src/roff/groff/groff.$(OBJEXT) \
+       src/roff/groff/pipeline.$(OBJEXT)
+groff_OBJECTS = $(am_groff_OBJECTS)
+groff_DEPENDENCIES = libgroff.a lib/libgnu.a $(am__DEPENDENCIES_1)
+am_grolbp_OBJECTS = src/devices/grolbp/lbp.$(OBJEXT)
+grolbp_OBJECTS = $(am_grolbp_OBJECTS)
+grolbp_DEPENDENCIES = $(am__DEPENDENCIES_1) libdriver.a libgroff.a \
+       lib/libgnu.a
+am_grolj4_OBJECTS = src/devices/grolj4/lj4.$(OBJEXT)
+grolj4_OBJECTS = $(am_grolj4_OBJECTS)
+grolj4_DEPENDENCIES = $(am__DEPENDENCIES_1) libdriver.a libgroff.a \
+       lib/libgnu.a
+am_grops_OBJECTS = src/devices/grops/ps.$(OBJEXT) \
+       src/devices/grops/psrm.$(OBJEXT)
+grops_OBJECTS = $(am_grops_OBJECTS)
+grops_DEPENDENCIES = $(am__DEPENDENCIES_1) libdriver.a libgroff.a \
+       lib/libgnu.a
+am_grotty_OBJECTS = src/devices/grotty/tty.$(OBJEXT)
+grotty_OBJECTS = $(am_grotty_OBJECTS)
+grotty_DEPENDENCIES = $(am__DEPENDENCIES_1) libdriver.a libgroff.a \
+       lib/libgnu.a
+am__gxditview_SOURCES_DIST = src/devices/xditview/device.c \
+       src/devices/xditview/draw.c src/devices/xditview/draw.h \
+       src/devices/xditview/Dvi.c src/devices/xditview/font.c \
+       src/devices/xditview/font.h src/devices/xditview/lex.c \
+       src/devices/xditview/lex.h src/devices/xditview/page.c \
+       src/devices/xditview/page.h src/devices/xditview/parse.c \
+       src/devices/xditview/parse.h src/devices/xditview/xditview.c \
+       src/devices/xditview/device.h src/devices/xditview/DviP.h \
+       src/devices/xditview/Menu.h src/devices/xditview/Dvi.h
+am__objects_2 = src/devices/xditview/gxditview-device.$(OBJEXT) \
+       src/devices/xditview/gxditview-draw.$(OBJEXT) \
+       src/devices/xditview/gxditview-Dvi.$(OBJEXT) \
+       src/devices/xditview/gxditview-font.$(OBJEXT) \
+       src/devices/xditview/gxditview-lex.$(OBJEXT) \
+       src/devices/xditview/gxditview-page.$(OBJEXT) \
+       src/devices/xditview/gxditview-parse.$(OBJEXT) \
+       src/devices/xditview/gxditview-xditview.$(OBJEXT)
+@WITHOUT_X11_FALSE@am_gxditview_OBJECTS = $(am__objects_2)
+am__objects_3 =
+@WITHOUT_X11_FALSE@nodist_gxditview_OBJECTS = $(am__objects_3)
+gxditview_OBJECTS = $(am_gxditview_OBJECTS) \
+       $(nodist_gxditview_OBJECTS)
+@WITHOUT_X11_FALSE@gxditview_DEPENDENCIES = $(am__DEPENDENCIES_1) \
+@WITHOUT_X11_FALSE@    $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+@WITHOUT_X11_FALSE@    $(am__DEPENDENCIES_1) libxutil.a \
+@WITHOUT_X11_FALSE@    lib/libgnu.a
+am_hpftodit_OBJECTS = src/utils/hpftodit/hpftodit.$(OBJEXT) \
+       src/utils/hpftodit/hpuni.$(OBJEXT)
+hpftodit_OBJECTS = $(am_hpftodit_OBJECTS)
+hpftodit_DEPENDENCIES = libgroff.a $(am__DEPENDENCIES_1) lib/libgnu.a
+am_indxbib_OBJECTS = src/utils/indxbib/indxbib.$(OBJEXT) \
+       src/utils/indxbib/signal.$(OBJEXT)
+indxbib_OBJECTS = $(am_indxbib_OBJECTS)
+indxbib_DEPENDENCIES = libbib.a libgroff.a $(am__DEPENDENCIES_1) \
+       lib/libgnu.a
+am_lkbib_OBJECTS = src/utils/lkbib/lkbib.$(OBJEXT)
+lkbib_OBJECTS = $(am_lkbib_OBJECTS)
+lkbib_DEPENDENCIES = libbib.a libgroff.a $(am__DEPENDENCIES_1) \
+       lib/libgnu.a
+am_lookbib_OBJECTS = src/utils/lookbib/lookbib.$(OBJEXT)
+lookbib_OBJECTS = $(am_lookbib_OBJECTS)
+lookbib_DEPENDENCIES = libbib.a libgroff.a $(am__DEPENDENCIES_1) \
+       lib/libgnu.a
+am_pfbtops_OBJECTS = src/utils/pfbtops/pfbtops.$(OBJEXT)
+pfbtops_OBJECTS = $(am_pfbtops_OBJECTS)
+pfbtops_DEPENDENCIES = libgroff.a $(am__DEPENDENCIES_1) lib/libgnu.a
+am_pic_OBJECTS = src/preproc/pic/pic-pic.$(OBJEXT) \
+       src/preproc/pic/pic-lex.$(OBJEXT) \
+       src/preproc/pic/pic-main.$(OBJEXT) \
+       src/preproc/pic/pic-object.$(OBJEXT) \
+       src/preproc/pic/pic-common.$(OBJEXT) \
+       src/preproc/pic/pic-troff.$(OBJEXT) \
+       src/preproc/pic/pic-tex.$(OBJEXT)
+pic_OBJECTS = $(am_pic_OBJECTS)
+pic_DEPENDENCIES = libgroff.a $(am__DEPENDENCIES_1) lib/libgnu.a
+am_post_grohtml_OBJECTS = src/devices/grohtml/post-html.$(OBJEXT) \
+       src/devices/grohtml/html-table.$(OBJEXT) \
+       src/devices/grohtml/html-text.$(OBJEXT) \
+       src/devices/grohtml/output.$(OBJEXT)
+post_grohtml_OBJECTS = $(am_post_grohtml_OBJECTS)
+post_grohtml_DEPENDENCIES = $(am__DEPENDENCIES_1) libdriver.a \
+       libgroff.a lib/libgnu.a
+am_pre_grohtml_OBJECTS = src/preproc/html/pre-html.$(OBJEXT) \
+       src/preproc/html/pushback.$(OBJEXT)
+pre_grohtml_OBJECTS = $(am_pre_grohtml_OBJECTS)
+pre_grohtml_DEPENDENCIES = libgroff.a lib/libgnu.a \
+       $(am__DEPENDENCIES_1)
+am_preconv_OBJECTS = src/preproc/preconv/preconv-preconv.$(OBJEXT)
+preconv_OBJECTS = $(am_preconv_OBJECTS)
+preconv_DEPENDENCIES = libgroff.a $(am__DEPENDENCIES_1) \
+       $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) lib/libgnu.a
+am_refer_OBJECTS = src/preproc/refer/refer-command.$(OBJEXT) \
+       src/preproc/refer/refer-ref.$(OBJEXT) \
+       src/preproc/refer/refer-refer.$(OBJEXT) \
+       src/preproc/refer/refer-token.$(OBJEXT) \
+       src/preproc/refer/refer-label.$(OBJEXT)
+refer_OBJECTS = $(am_refer_OBJECTS)
+refer_DEPENDENCIES = libbib.a libgroff.a $(am__DEPENDENCIES_1) \
+       lib/libgnu.a
+am_soelim_OBJECTS = src/preproc/soelim/soelim.$(OBJEXT)
+soelim_OBJECTS = $(am_soelim_OBJECTS)
+soelim_DEPENDENCIES = libgroff.a $(am__DEPENDENCIES_1) lib/libgnu.a
+am_tbl_OBJECTS = src/preproc/tbl/main.$(OBJEXT) \
+       src/preproc/tbl/table.$(OBJEXT)
+tbl_OBJECTS = $(am_tbl_OBJECTS)
+tbl_DEPENDENCIES = libgroff.a $(am__DEPENDENCIES_1) lib/libgnu.a
+am_tfmtodit_OBJECTS = src/utils/tfmtodit/tfmtodit.$(OBJEXT)
+tfmtodit_OBJECTS = $(am_tfmtodit_OBJECTS)
+tfmtodit_DEPENDENCIES = libgroff.a $(am__DEPENDENCIES_1) lib/libgnu.a
+am_troff_OBJECTS = src/roff/troff/dictionary.$(OBJEXT) \
+       src/roff/troff/div.$(OBJEXT) src/roff/troff/env.$(OBJEXT) \
+       src/roff/troff/input.$(OBJEXT) src/roff/troff/mtsm.$(OBJEXT) \
+       src/roff/troff/node.$(OBJEXT) src/roff/troff/number.$(OBJEXT) \
+       src/roff/troff/reg.$(OBJEXT)
+nodist_troff_OBJECTS = src/roff/troff/majorminor.$(OBJEXT)
+troff_OBJECTS = $(am_troff_OBJECTS) $(nodist_troff_OBJECTS)
+troff_DEPENDENCIES = libgroff.a lib/libgnu.a $(am__DEPENDENCIES_1)
+am__xtotroff_SOURCES_DIST = src/utils/xtotroff/xtotroff.c
+@WITHOUT_X11_FALSE@am_xtotroff_OBJECTS = src/utils/xtotroff/xtotroff-xtotroff.$(OBJEXT)
+xtotroff_OBJECTS = $(am_xtotroff_OBJECTS)
+@WITHOUT_X11_FALSE@xtotroff_DEPENDENCIES = libxutil.a libgroff.a \
+@WITHOUT_X11_FALSE@    $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+@WITHOUT_X11_FALSE@    $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+@WITHOUT_X11_FALSE@    lib/libgnu.a
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+SCRIPTS = $(bin_SCRIPTS) $(dist_bin_SCRIPTS) $(prefixexecbin_SCRIPTS)
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/src/include
+depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
+am__maybe_remake_depfiles = depfiles
+am__depfiles_remade = lib/$(DEPDIR)/asnprintf.Po \
+       lib/$(DEPDIR)/float.Po lib/$(DEPDIR)/fprintf.Po \
+       lib/$(DEPDIR)/frexp.Po lib/$(DEPDIR)/frexpl.Po \
+       lib/$(DEPDIR)/fseterr.Po lib/$(DEPDIR)/isnan.Po \
+       lib/$(DEPDIR)/isnand.Po lib/$(DEPDIR)/isnanf.Po \
+       lib/$(DEPDIR)/isnanl.Po lib/$(DEPDIR)/itold.Po \
+       lib/$(DEPDIR)/localcharset.Po lib/$(DEPDIR)/math.Po \
+       lib/$(DEPDIR)/memchr.Po lib/$(DEPDIR)/printf-args.Po \
+       lib/$(DEPDIR)/printf-frexp.Po lib/$(DEPDIR)/printf-frexpl.Po \
+       lib/$(DEPDIR)/printf-parse.Po lib/$(DEPDIR)/signbitd.Po \
+       lib/$(DEPDIR)/signbitf.Po lib/$(DEPDIR)/signbitl.Po \
+       lib/$(DEPDIR)/snprintf.Po lib/$(DEPDIR)/vasnprintf.Po \
+       lib/$(DEPDIR)/vsnprintf.Po lib/$(DEPDIR)/wctype-h.Po \
+       lib/$(DEPDIR)/wcwidth.Po lib/$(DEPDIR)/xsize.Po \
+       lib/uniwidth/$(DEPDIR)/width.Po \
+       src/devices/grodvi/$(DEPDIR)/dvi.Po \
+       src/devices/grohtml/$(DEPDIR)/html-table.Po \
+       src/devices/grohtml/$(DEPDIR)/html-text.Po \
+       src/devices/grohtml/$(DEPDIR)/output.Po \
+       src/devices/grohtml/$(DEPDIR)/post-html.Po \
+       src/devices/grolbp/$(DEPDIR)/lbp.Po \
+       src/devices/grolj4/$(DEPDIR)/lj4.Po \
+       src/devices/grops/$(DEPDIR)/ps.Po \
+       src/devices/grops/$(DEPDIR)/psrm.Po \
+       src/devices/grotty/$(DEPDIR)/tty.Po \
+       src/devices/xditview/$(DEPDIR)/gxditview-Dvi.Po \
+       src/devices/xditview/$(DEPDIR)/gxditview-device.Po \
+       src/devices/xditview/$(DEPDIR)/gxditview-draw.Po \
+       src/devices/xditview/$(DEPDIR)/gxditview-font.Po \
+       src/devices/xditview/$(DEPDIR)/gxditview-lex.Po \
+       src/devices/xditview/$(DEPDIR)/gxditview-page.Po \
+       src/devices/xditview/$(DEPDIR)/gxditview-parse.Po \
+       src/devices/xditview/$(DEPDIR)/gxditview-xditview.Po \
+       src/libs/libbib/$(DEPDIR)/common.Po \
+       src/libs/libbib/$(DEPDIR)/index.Po \
+       src/libs/libbib/$(DEPDIR)/linear.Po \
+       src/libs/libbib/$(DEPDIR)/map.Po \
+       src/libs/libbib/$(DEPDIR)/search.Po \
+       src/libs/libdriver/$(DEPDIR)/input.Po \
+       src/libs/libdriver/$(DEPDIR)/printer.Po \
+       src/libs/libgroff/$(DEPDIR)/libgroff_a-assert.Po \
+       src/libs/libgroff/$(DEPDIR)/libgroff_a-change_lf.Po \
+       src/libs/libgroff/$(DEPDIR)/libgroff_a-cmap.Po \
+       src/libs/libgroff/$(DEPDIR)/libgroff_a-color.Po \
+       src/libs/libgroff/$(DEPDIR)/libgroff_a-cset.Po \
+       src/libs/libgroff/$(DEPDIR)/libgroff_a-curtime.Po \
+       src/libs/libgroff/$(DEPDIR)/libgroff_a-device.Po \
+       src/libs/libgroff/$(DEPDIR)/libgroff_a-errarg.Po \
+       src/libs/libgroff/$(DEPDIR)/libgroff_a-error.Po \
+       src/libs/libgroff/$(DEPDIR)/libgroff_a-fatal.Po \
+       src/libs/libgroff/$(DEPDIR)/libgroff_a-filename.Po \
+       src/libs/libgroff/$(DEPDIR)/libgroff_a-font.Po \
+       src/libs/libgroff/$(DEPDIR)/libgroff_a-fontfile.Po \
+       src/libs/libgroff/$(DEPDIR)/libgroff_a-geometry.Po \
+       src/libs/libgroff/$(DEPDIR)/libgroff_a-getopt.Po \
+       src/libs/libgroff/$(DEPDIR)/libgroff_a-getopt1.Po \
+       src/libs/libgroff/$(DEPDIR)/libgroff_a-glyphuni.Po \
+       src/libs/libgroff/$(DEPDIR)/libgroff_a-htmlhint.Po \
+       src/libs/libgroff/$(DEPDIR)/libgroff_a-hypot.Po \
+       src/libs/libgroff/$(DEPDIR)/libgroff_a-iftoa.Po \
+       src/libs/libgroff/$(DEPDIR)/libgroff_a-invalid.Po \
+       src/libs/libgroff/$(DEPDIR)/libgroff_a-itoa.Po \
+       src/libs/libgroff/$(DEPDIR)/libgroff_a-lf.Po \
+       src/libs/libgroff/$(DEPDIR)/libgroff_a-lineno.Po \
+       src/libs/libgroff/$(DEPDIR)/libgroff_a-localcharset.Po \
+       src/libs/libgroff/$(DEPDIR)/libgroff_a-macropath.Po \
+       src/libs/libgroff/$(DEPDIR)/libgroff_a-matherr.Po \
+       src/libs/libgroff/$(DEPDIR)/libgroff_a-maxfilename.Po \
+       src/libs/libgroff/$(DEPDIR)/libgroff_a-maxpathname.Po \
+       src/libs/libgroff/$(DEPDIR)/libgroff_a-mksdir.Po \
+       src/libs/libgroff/$(DEPDIR)/libgroff_a-nametoindex.Po \
+       src/libs/libgroff/$(DEPDIR)/libgroff_a-new.Po \
+       src/libs/libgroff/$(DEPDIR)/libgroff_a-paper.Po \
+       src/libs/libgroff/$(DEPDIR)/libgroff_a-prime.Po \
+       src/libs/libgroff/$(DEPDIR)/libgroff_a-progname.Po \
+       src/libs/libgroff/$(DEPDIR)/libgroff_a-ptable.Po \
+       src/libs/libgroff/$(DEPDIR)/libgroff_a-quotearg.Po \
+       src/libs/libgroff/$(DEPDIR)/libgroff_a-relocate.Po \
+       src/libs/libgroff/$(DEPDIR)/libgroff_a-searchpath.Po \
+       src/libs/libgroff/$(DEPDIR)/libgroff_a-spawnvp.Po \
+       src/libs/libgroff/$(DEPDIR)/libgroff_a-string.Po \
+       src/libs/libgroff/$(DEPDIR)/libgroff_a-strsave.Po \
+       src/libs/libgroff/$(DEPDIR)/libgroff_a-symbol.Po \
+       src/libs/libgroff/$(DEPDIR)/libgroff_a-tmpfile.Po \
+       src/libs/libgroff/$(DEPDIR)/libgroff_a-tmpname.Po \
+       src/libs/libgroff/$(DEPDIR)/libgroff_a-unicode.Po \
+       src/libs/libgroff/$(DEPDIR)/libgroff_a-uniglyph.Po \
+       src/libs/libgroff/$(DEPDIR)/libgroff_a-uniuni.Po \
+       src/libs/libgroff/$(DEPDIR)/libgroff_a-version.Po \
+       src/libs/libxutil/$(DEPDIR)/libxutil_a-DviChar.Po \
+       src/libs/libxutil/$(DEPDIR)/libxutil_a-XFontName.Po \
+       src/libs/libxutil/$(DEPDIR)/libxutil_a-xmalloc.Po \
+       src/preproc/eqn/$(DEPDIR)/eqn-box.Po \
+       src/preproc/eqn/$(DEPDIR)/eqn-delim.Po \
+       src/preproc/eqn/$(DEPDIR)/eqn-eqn.Po \
+       src/preproc/eqn/$(DEPDIR)/eqn-lex.Po \
+       src/preproc/eqn/$(DEPDIR)/eqn-limit.Po \
+       src/preproc/eqn/$(DEPDIR)/eqn-list.Po \
+       src/preproc/eqn/$(DEPDIR)/eqn-main.Po \
+       src/preproc/eqn/$(DEPDIR)/eqn-mark.Po \
+       src/preproc/eqn/$(DEPDIR)/eqn-other.Po \
+       src/preproc/eqn/$(DEPDIR)/eqn-over.Po \
+       src/preproc/eqn/$(DEPDIR)/eqn-pile.Po \
+       src/preproc/eqn/$(DEPDIR)/eqn-script.Po \
+       src/preproc/eqn/$(DEPDIR)/eqn-special.Po \
+       src/preproc/eqn/$(DEPDIR)/eqn-sqrt.Po \
+       src/preproc/eqn/$(DEPDIR)/eqn-text.Po \
+       src/preproc/grn/$(DEPDIR)/hdb.Po \
+       src/preproc/grn/$(DEPDIR)/hgraph.Po \
+       src/preproc/grn/$(DEPDIR)/hpoint.Po \
+       src/preproc/grn/$(DEPDIR)/main.Po \
+       src/preproc/html/$(DEPDIR)/pre-html.Po \
+       src/preproc/html/$(DEPDIR)/pushback.Po \
+       src/preproc/pic/$(DEPDIR)/pic-common.Po \
+       src/preproc/pic/$(DEPDIR)/pic-lex.Po \
+       src/preproc/pic/$(DEPDIR)/pic-main.Po \
+       src/preproc/pic/$(DEPDIR)/pic-object.Po \
+       src/preproc/pic/$(DEPDIR)/pic-pic.Po \
+       src/preproc/pic/$(DEPDIR)/pic-tex.Po \
+       src/preproc/pic/$(DEPDIR)/pic-troff.Po \
+       src/preproc/preconv/$(DEPDIR)/preconv-preconv.Po \
+       src/preproc/refer/$(DEPDIR)/refer-command.Po \
+       src/preproc/refer/$(DEPDIR)/refer-label.Po \
+       src/preproc/refer/$(DEPDIR)/refer-ref.Po \
+       src/preproc/refer/$(DEPDIR)/refer-refer.Po \
+       src/preproc/refer/$(DEPDIR)/refer-token.Po \
+       src/preproc/soelim/$(DEPDIR)/soelim.Po \
+       src/preproc/tbl/$(DEPDIR)/main.Po \
+       src/preproc/tbl/$(DEPDIR)/table.Po \
+       src/roff/groff/$(DEPDIR)/groff.Po \
+       src/roff/groff/$(DEPDIR)/pipeline.Po \
+       src/roff/troff/$(DEPDIR)/dictionary.Po \
+       src/roff/troff/$(DEPDIR)/div.Po \
+       src/roff/troff/$(DEPDIR)/env.Po \
+       src/roff/troff/$(DEPDIR)/input.Po \
+       src/roff/troff/$(DEPDIR)/majorminor.Po \
+       src/roff/troff/$(DEPDIR)/mtsm.Po \
+       src/roff/troff/$(DEPDIR)/node.Po \
+       src/roff/troff/$(DEPDIR)/number.Po \
+       src/roff/troff/$(DEPDIR)/reg.Po \
+       src/utils/addftinfo/$(DEPDIR)/addftinfo.Po \
+       src/utils/addftinfo/$(DEPDIR)/guess.Po \
+       src/utils/hpftodit/$(DEPDIR)/hpftodit.Po \
+       src/utils/hpftodit/$(DEPDIR)/hpuni.Po \
+       src/utils/indxbib/$(DEPDIR)/indxbib.Po \
+       src/utils/indxbib/$(DEPDIR)/signal.Po \
+       src/utils/lkbib/$(DEPDIR)/lkbib.Po \
+       src/utils/lookbib/$(DEPDIR)/lookbib.Po \
+       src/utils/pfbtops/$(DEPDIR)/dummy.Po \
+       src/utils/pfbtops/$(DEPDIR)/pfbtops.Po \
+       src/utils/tfmtodit/$(DEPDIR)/tfmtodit.Po \
+       src/utils/xtotroff/$(DEPDIR)/xtotroff-xtotroff.Po
+am__mv = mv -f
+AM_V_lt = $(am__v_lt_@AM_V@)
+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 = 
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+       $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
+CCLD = $(CC)
+LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+       $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+AM_V_CXX = $(am__v_CXX_@AM_V@)
+am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@)
+am__v_CXX_0 = @echo "  CXX     " $@;
+am__v_CXX_1 = 
+CXXLD = $(CXX)
+CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
+       -o $@
+AM_V_CXXLD = $(am__v_CXXLD_@AM_V@)
+am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)
+am__v_CXXLD_0 = @echo "  CXXLD   " $@;
+am__v_CXXLD_1 = 
+am__yacc_c2h = sed -e s/cc$$/hh/ -e s/cpp$$/hpp/ -e s/cxx$$/hxx/ \
+                  -e s/c++$$/h++/ -e s/c$$/h/
+YACCCOMPILE = $(YACC) $(AM_YFLAGS) $(YFLAGS)
+AM_V_YACC = $(am__v_YACC_@AM_V@)
+am__v_YACC_ = $(am__v_YACC_@AM_DEFAULT_V@)
+am__v_YACC_0 = @echo "  YACC    " $@;
+am__v_YACC_1 = 
+YLWRAP = $(top_srcdir)/build-aux/ylwrap
+SOURCES = $(lib_libgnu_a_SOURCES) $(EXTRA_lib_libgnu_a_SOURCES) \
+       $(libbib_a_SOURCES) $(libdriver_a_SOURCES) \
+       $(libgroff_a_SOURCES) $(nodist_libgroff_a_SOURCES) \
+       $(libxutil_a_SOURCES) $(addftinfo_SOURCES) $(eqn_SOURCES) \
+       $(grn_SOURCES) $(grodvi_SOURCES) $(groff_SOURCES) \
+       $(grolbp_SOURCES) $(grolj4_SOURCES) $(grops_SOURCES) \
+       $(grotty_SOURCES) $(gxditview_SOURCES) \
+       $(nodist_gxditview_SOURCES) $(hpftodit_SOURCES) \
+       $(indxbib_SOURCES) $(lkbib_SOURCES) $(lookbib_SOURCES) \
+       $(pfbtops_SOURCES) $(nodist_EXTRA_pfbtops_SOURCES) \
+       $(pic_SOURCES) $(post_grohtml_SOURCES) $(pre_grohtml_SOURCES) \
+       $(preconv_SOURCES) $(refer_SOURCES) $(soelim_SOURCES) \
+       $(tbl_SOURCES) $(tfmtodit_SOURCES) $(troff_SOURCES) \
+       $(nodist_troff_SOURCES) $(xtotroff_SOURCES)
+DIST_SOURCES = $(am__lib_libgnu_a_SOURCES_DIST) \
+       $(EXTRA_lib_libgnu_a_SOURCES) $(libbib_a_SOURCES) \
+       $(libdriver_a_SOURCES) $(libgroff_a_SOURCES) \
+       $(am__libxutil_a_SOURCES_DIST) $(addftinfo_SOURCES) \
+       $(eqn_SOURCES) $(grn_SOURCES) $(grodvi_SOURCES) \
+       $(groff_SOURCES) $(grolbp_SOURCES) $(grolj4_SOURCES) \
+       $(grops_SOURCES) $(grotty_SOURCES) \
+       $(am__gxditview_SOURCES_DIST) $(hpftodit_SOURCES) \
+       $(indxbib_SOURCES) $(lkbib_SOURCES) $(lookbib_SOURCES) \
+       $(pfbtops_SOURCES) $(pic_SOURCES) $(post_grohtml_SOURCES) \
+       $(pre_grohtml_SOURCES) $(preconv_SOURCES) $(refer_SOURCES) \
+       $(soelim_SOURCES) $(tbl_SOURCES) $(tfmtodit_SOURCES) \
+       $(troff_SOURCES) $(am__xtotroff_SOURCES_DIST)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+NROFF = nroff
+MANS = $(man1_MANS) $(man5_MANS) $(man7_MANS)
+am__dist_chemexample_DATA_DIST = contrib/chem/examples/atp.chem \
+       contrib/chem/examples/cholesterin.chem \
+       contrib/chem/examples/ethamivan.chem \
+       contrib/chem/examples/lsd.chem \
+       contrib/chem/examples/morphine.chem \
+       contrib/chem/examples/penicillin.chem \
+       contrib/chem/examples/reserpine.chem
+am__dist_docexamples_DATA_DIST = doc/webpage.ms doc/groff.css \
+       doc/grnexmpl.g doc/grnexmpl.me
+am__dist_hdtblexample_DATA_DIST = contrib/hdtbl/examples/common.roff \
+       contrib/hdtbl/examples/chess_board.roff \
+       contrib/hdtbl/examples/color_boxes.roff \
+       contrib/hdtbl/examples/color_nested_tables.roff \
+       contrib/hdtbl/examples/color_table_cells.roff \
+       contrib/hdtbl/examples/color_transitions.roff \
+       contrib/hdtbl/examples/col_rowspan_colors.roff \
+       contrib/hdtbl/examples/mixed_pickles.roff \
+       contrib/hdtbl/examples/rainbow.roff \
+       contrib/hdtbl/examples/short_reference.roff
+am__dist_momexample_DATA_DIST = contrib/mom/examples/letter.mom \
+       contrib/mom/examples/mom-pdf.mom \
+       contrib/mom/examples/mon_premier_doc.mom \
+       contrib/mom/examples/sample_docs.mom \
+       contrib/mom/examples/typesetting.mom \
+       contrib/mom/examples/README.txt \
+       contrib/mom/examples/README-fr.txt \
+       contrib/mom/examples/elvis_syntax \
+       contrib/mom/examples/elvis_syntax.new \
+       contrib/mom/examples/penguin.ps \
+       contrib/mom/examples/penguin.pdf contrib/mom/examples/mom.vim \
+       contrib/mom/examples/slide-demo.mom
+am__dist_otherdoc_DATA_DIST = doc/meref.me doc/meintro.me \
+       doc/meintro_fr.me doc/pic.ms
+DATA = $(devX10012font_DATA) $(devX100font_DATA) $(devX7512font_DATA) \
+       $(devX75font_DATA) $(devasciifont_DATA) $(devcp1047font_DATA) \
+       $(devdvifont_DATA) $(devdvigen_DATA) $(devhtmlfont_DATA) \
+       $(devlatin1font_DATA) $(devlbpfont_DATA) $(devpdffont_DATA) \
+       $(devpdffontenc_DATA) $(devpdffontmap_DATA) \
+       $(devutf8font_DATA) $(dist_chemexample_DATA) \
+       $(dist_chempic_DATA) $(dist_devlj4font_DATA) \
+       $(dist_devlj4fontgen_DATA) $(dist_devpsfont_DATA) \
+       $(dist_devpsgen_DATA) $(dist_docexamples_DATA) \
+       $(dist_glilypond_DATA) $(dist_gpinyin_DATA) $(dist_grog_DATA) \
+       $(dist_hdtblexample_DATA) $(dist_localtmac_DATA) \
+       $(dist_mm_DATA) $(dist_mmexample_DATA) $(dist_momexample_DATA) \
+       $(dist_momtmac_DATA) $(dist_olddevpsfont_DATA) \
+       $(dist_otherdoc_DATA) $(dist_pdfmarktmac_DATA) \
+       $(dist_tmac_DATA) $(dist_tmacmm_DATA) $(groffer_DATA) \
+       $(groffopts_DATA) $(hdtbltmac_DATA) $(htmlpic_DATA) \
+       $(momhtml_DATA) $(nodist_chemexample_DATA) \
+       $(nodist_chemexample122_DATA) $(nodist_devlj4font_DATA) \
+       $(nodist_devpsfont_DATA) $(nodist_docexamples_DATA) \
+       $(nodist_docpdfdoc_DATA) $(nodist_hdtblexample_DATA) \
+       $(nodist_htmlexamples_DATA) $(nodist_mdoc_DATA) \
+       $(nodist_momprocessedexample_DATA) $(nodist_otherdoc_DATA) \
+       $(nodist_pdfmarkpdfdoc_DATA) $(nodist_tmac_DATA)
+HEADERS = $(nodist_noinst_HEADERS)
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
+CTAGS = ctags
+CSCOPE = cscope
+AM_RECURSIVE_TARGETS = cscope check recheck
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red='\e[0;31m'; \
+    grn='\e[0;32m'; \
+    lgn='\e[1;32m'; \
+    blu='\e[1;34m'; \
+    mgn='\e[0;35m'; \
+    brg='\e[1m'; \
+    std='\e[m'; \
+  fi; \
+}
+am__recheck_rx = ^[    ]*:recheck:[    ]*
+am__global_test_result_rx = ^[         ]*:global-test-result:[         ]*
+am__copy_in_global_log_rx = ^[         ]*:copy-in-global-log:[         ]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+           recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[       ]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);                                     \
+$(am__vpath_adj_setup) $(am__vpath_adj)                        \
+$(am__tty_colors);                                     \
+srcdir=$(srcdir); export srcdir;                       \
+case "$@" in                                           \
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;   \
+    *) am__odir=.;;                                    \
+esac;                                                  \
+test "x$$am__odir" = x"." || test -d "$$am__odir"      \
+  || $(MKDIR_P) "$$am__odir" || exit $$?;              \
+if test -f "./$$f"; then dir=./;                       \
+elif test -f "$$f"; then dir=;                         \
+else dir="$(srcdir)/"; fi;                             \
+tst=$$dir$$f; log='$@';                                \
+if test -n '$(DISABLE_HARD_ERRORS)'; then              \
+  am__enable_hard_errors=no;                           \
+else                                                   \
+  am__enable_hard_errors=yes;                          \
+fi;                                                    \
+case " $(XFAIL_TESTS) " in                             \
+  *[\ \        ]$$f[\ \        ]* | *[\ \      ]$$dir$$f[\ \   ]*) \
+    am__expect_failure=yes;;                           \
+  *)                                                   \
+    am__expect_failure=no;;                            \
+esac;                                                  \
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/build-aux/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/build-aux/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+       $(TEST_LOG_FLAGS)
+am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/test-groff.in \
+       $(top_srcdir)/arch/mingw/mingw.am \
+       $(top_srcdir)/arch/misc/misc.am \
+       $(top_srcdir)/build-aux/compile \
+       $(top_srcdir)/build-aux/config.guess \
+       $(top_srcdir)/build-aux/config.rpath \
+       $(top_srcdir)/build-aux/config.sub \
+       $(top_srcdir)/build-aux/depcomp \
+       $(top_srcdir)/build-aux/install-sh \
+       $(top_srcdir)/build-aux/missing \
+       $(top_srcdir)/build-aux/test-driver \
+       $(top_srcdir)/build-aux/ylwrap \
+       $(top_srcdir)/contrib/chem/chem.am \
+       $(top_srcdir)/contrib/eqn2graph/eqn2graph.am \
+       $(top_srcdir)/contrib/gdiffmk/gdiffmk.am \
+       $(top_srcdir)/contrib/glilypond/glilypond.am \
+       $(top_srcdir)/contrib/gperl/gperl.am \
+       $(top_srcdir)/contrib/gpinyin/gpinyin.am \
+       $(top_srcdir)/contrib/grap2graph/grap2graph.am \
+       $(top_srcdir)/contrib/groff_filenames/groff_filenames.am \
+       $(top_srcdir)/contrib/groffer/groffer.am \
+       $(top_srcdir)/contrib/hdtbl/hdtbl.am \
+       $(top_srcdir)/contrib/mm/mm.am \
+       $(top_srcdir)/contrib/mom/mom.am \
+       $(top_srcdir)/contrib/pdfmark/pdfmark.am \
+       $(top_srcdir)/contrib/pic2graph/pic2graph.am \
+       $(top_srcdir)/doc/doc.am \
+       $(top_srcdir)/font/devX100-12/devX100-12.am \
+       $(top_srcdir)/font/devX100/devX100.am \
+       $(top_srcdir)/font/devX75-12/devX75-12.am \
+       $(top_srcdir)/font/devX75/devX75.am \
+       $(top_srcdir)/font/devascii/devascii.am \
+       $(top_srcdir)/font/devcp1047/devcp1047.am \
+       $(top_srcdir)/font/devdvi/devdvi.am \
+       $(top_srcdir)/font/devhtml/devhtml.am \
+       $(top_srcdir)/font/devlatin1/devlatin1.am \
+       $(top_srcdir)/font/devlbp/devlbp.am \
+       $(top_srcdir)/font/devlj4/devlj4.am \
+       $(top_srcdir)/font/devpdf/devpdf.am \
+       $(top_srcdir)/font/devps/devps.am \
+       $(top_srcdir)/font/devutf8/devutf8.am \
+       $(top_srcdir)/font/scripts/scripts.am \
+       $(top_srcdir)/lib/gnulib.mk $(top_srcdir)/man/man.am \
+       $(top_srcdir)/src/devices/grodvi/grodvi.am \
+       $(top_srcdir)/src/devices/grohtml/grohtml.am \
+       $(top_srcdir)/src/devices/grolbp/grolbp.am \
+       $(top_srcdir)/src/devices/grolj4/grolj4.am \
+       $(top_srcdir)/src/devices/gropdf/gropdf.am \
+       $(top_srcdir)/src/devices/grops/grops.am \
+       $(top_srcdir)/src/devices/grotty/grotty.am \
+       $(top_srcdir)/src/devices/xditview/xditview.am \
+       $(top_srcdir)/src/include/config.hin \
+       $(top_srcdir)/src/include/include.am \
+       $(top_srcdir)/src/libs/libbib/libbib.am \
+       $(top_srcdir)/src/libs/libdriver/libdriver.am \
+       $(top_srcdir)/src/libs/libgroff/libgroff.am \
+       $(top_srcdir)/src/libs/libxutil/libxutil.am \
+       $(top_srcdir)/src/preproc/eqn/eqn.am \
+       $(top_srcdir)/src/preproc/grn/grn.am \
+       $(top_srcdir)/src/preproc/html/html.am \
+       $(top_srcdir)/src/preproc/pic/pic.am \
+       $(top_srcdir)/src/preproc/preconv/preconv.am \
+       $(top_srcdir)/src/preproc/refer/refer.am \
+       $(top_srcdir)/src/preproc/soelim/soelim.am \
+       $(top_srcdir)/src/preproc/tbl/tbl.am \
+       $(top_srcdir)/src/roff/groff/groff.am \
+       $(top_srcdir)/src/roff/grog/grog.am \
+       $(top_srcdir)/src/roff/nroff/nroff.am \
+       $(top_srcdir)/src/roff/troff/troff.am \
+       $(top_srcdir)/src/utils/addftinfo/addftinfo.am \
+       $(top_srcdir)/src/utils/afmtodit/afmtodit.am \
+       $(top_srcdir)/src/utils/hpftodit/hpftodit.am \
+       $(top_srcdir)/src/utils/indxbib/indxbib.am \
+       $(top_srcdir)/src/utils/lkbib/lkbib.am \
+       $(top_srcdir)/src/utils/lookbib/lookbib.am \
+       $(top_srcdir)/src/utils/pfbtops/pfbtops.am \
+       $(top_srcdir)/src/utils/tfmtodit/tfmtodit.am \
+       $(top_srcdir)/src/utils/xtotroff/xtotroff.am \
+       $(top_srcdir)/tmac/tmac.am AUTHORS COPYING ChangeLog INSTALL \
+       NEWS README THANKS TODO build-aux/compile \
+       build-aux/config.guess build-aux/config.rpath \
+       build-aux/config.sub build-aux/depcomp build-aux/install-sh \
+       build-aux/missing build-aux/ylwrap src/preproc/eqn/eqn.cpp \
+       src/preproc/eqn/eqn.hpp src/preproc/pic/pic.cpp \
+       src/preproc/pic/pic.hpp src/preproc/refer/label.cpp \
+       src/preproc/refer/label.hpp
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+distdir = $(PACKAGE)-$(VERSION)
+top_distdir = $(distdir)
+am__remove_distdir = \
+  if test -d "$(distdir)"; then \
+    find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
+      && rm -rf "$(distdir)" \
+      || { sleep 5 && rm -rf "$(distdir)"; }; \
+  else :; fi
+am__post_remove_distdir = $(am__remove_distdir)
+DIST_ARCHIVES = $(distdir).tar.gz
+GZIP_ENV = --best
+DIST_TARGETS = dist-gzip
+distuninstallcheck_listfiles = find . -type f -print
+am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
+  | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
+distcleancheck_listfiles = find . -type f -print
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+ALT_AWK_PROGS = @ALT_AWK_PROGS@
+ALT_GHOSTSCRIPT_PROGS = @ALT_GHOSTSCRIPT_PROGS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+# CC
+# CFLAGS
+# CPPFLAGS
+# LDFLAGS
+
+# X_CFLAGS
+# X_LIBS
+# X_EXTRA_LIBS
+# X_PRE_LIBS
+
+# YACC
+
+# GREP
+# EGREP
+
+# MAKEINFO
+
+# EXEEXT
+# OBJEXT
+# LIBEXT
+# LIBS
+# LIBM
+# LIBICONV
+# RANLIB
+# INSTALL
+# INSTALL_PROGRAM
+# INSTALL_SCRIPT
+# INSTALL_DATA
+# INSTALL_INFO
+# LN_S
+AR = ar
+ARFLAGS = @ARFLAGS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BASH_PROG = @BASH_PROG@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+BROKEN_SPOOLER_FLAGS = @BROKEN_SPOOLER_FLAGS@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DIFF_PROG = @DIFF_PROG@
+DVIPRINT = @DVIPRINT@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@
+EMULTIHOP_VALUE = @EMULTIHOP_VALUE@
+ENOLINK_HIDDEN = @ENOLINK_HIDDEN@
+ENOLINK_VALUE = @ENOLINK_VALUE@
+EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
+EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
+ERRNO_H = @ERRNO_H@
+EXEEXT = @EXEEXT@
+FLOAT_H = @FLOAT_H@
+GDIFF = @GDIFF@
+GHOSTSCRIPT = @GHOSTSCRIPT@
+GLIBC21 = @GLIBC21@
+GNULIB_ACOSF = @GNULIB_ACOSF@
+GNULIB_ACOSL = @GNULIB_ACOSL@
+GNULIB_ASINF = @GNULIB_ASINF@
+GNULIB_ASINL = @GNULIB_ASINL@
+GNULIB_ATAN2F = @GNULIB_ATAN2F@
+GNULIB_ATANF = @GNULIB_ATANF@
+GNULIB_ATANL = @GNULIB_ATANL@
+GNULIB_BTOWC = @GNULIB_BTOWC@
+GNULIB_CBRT = @GNULIB_CBRT@
+GNULIB_CBRTF = @GNULIB_CBRTF@
+GNULIB_CBRTL = @GNULIB_CBRTL@
+GNULIB_CEIL = @GNULIB_CEIL@
+GNULIB_CEILF = @GNULIB_CEILF@
+GNULIB_CEILL = @GNULIB_CEILL@
+GNULIB_COPYSIGN = @GNULIB_COPYSIGN@
+GNULIB_COPYSIGNF = @GNULIB_COPYSIGNF@
+GNULIB_COPYSIGNL = @GNULIB_COPYSIGNL@
+GNULIB_COSF = @GNULIB_COSF@
+GNULIB_COSHF = @GNULIB_COSHF@
+GNULIB_COSL = @GNULIB_COSL@
+GNULIB_DPRINTF = @GNULIB_DPRINTF@
+GNULIB_EXP2 = @GNULIB_EXP2@
+GNULIB_EXP2F = @GNULIB_EXP2F@
+GNULIB_EXP2L = @GNULIB_EXP2L@
+GNULIB_EXPF = @GNULIB_EXPF@
+GNULIB_EXPL = @GNULIB_EXPL@
+GNULIB_EXPLICIT_BZERO = @GNULIB_EXPLICIT_BZERO@
+GNULIB_EXPM1 = @GNULIB_EXPM1@
+GNULIB_EXPM1F = @GNULIB_EXPM1F@
+GNULIB_EXPM1L = @GNULIB_EXPM1L@
+GNULIB_FABSF = @GNULIB_FABSF@
+GNULIB_FABSL = @GNULIB_FABSL@
+GNULIB_FCLOSE = @GNULIB_FCLOSE@
+GNULIB_FDOPEN = @GNULIB_FDOPEN@
+GNULIB_FFLUSH = @GNULIB_FFLUSH@
+GNULIB_FFSL = @GNULIB_FFSL@
+GNULIB_FFSLL = @GNULIB_FFSLL@
+GNULIB_FGETC = @GNULIB_FGETC@
+GNULIB_FGETS = @GNULIB_FGETS@
+GNULIB_FLOOR = @GNULIB_FLOOR@
+GNULIB_FLOORF = @GNULIB_FLOORF@
+GNULIB_FLOORL = @GNULIB_FLOORL@
+GNULIB_FMA = @GNULIB_FMA@
+GNULIB_FMAF = @GNULIB_FMAF@
+GNULIB_FMAL = @GNULIB_FMAL@
+GNULIB_FMOD = @GNULIB_FMOD@
+GNULIB_FMODF = @GNULIB_FMODF@
+GNULIB_FMODL = @GNULIB_FMODL@
+GNULIB_FOPEN = @GNULIB_FOPEN@
+GNULIB_FPRINTF = @GNULIB_FPRINTF@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FPURGE = @GNULIB_FPURGE@
+GNULIB_FPUTC = @GNULIB_FPUTC@
+GNULIB_FPUTS = @GNULIB_FPUTS@
+GNULIB_FREAD = @GNULIB_FREAD@
+GNULIB_FREOPEN = @GNULIB_FREOPEN@
+GNULIB_FREXP = @GNULIB_FREXP@
+GNULIB_FREXPF = @GNULIB_FREXPF@
+GNULIB_FREXPL = @GNULIB_FREXPL@
+GNULIB_FSCANF = @GNULIB_FSCANF@
+GNULIB_FSEEK = @GNULIB_FSEEK@
+GNULIB_FSEEKO = @GNULIB_FSEEKO@
+GNULIB_FTELL = @GNULIB_FTELL@
+GNULIB_FTELLO = @GNULIB_FTELLO@
+GNULIB_FWRITE = @GNULIB_FWRITE@
+GNULIB_GETC = @GNULIB_GETC@
+GNULIB_GETCHAR = @GNULIB_GETCHAR@
+GNULIB_GETDELIM = @GNULIB_GETDELIM@
+GNULIB_GETLINE = @GNULIB_GETLINE@
+GNULIB_HYPOT = @GNULIB_HYPOT@
+GNULIB_HYPOTF = @GNULIB_HYPOTF@
+GNULIB_HYPOTL = @GNULIB_HYPOTL@
+GNULIB_ILOGB = @GNULIB_ILOGB@
+GNULIB_ILOGBF = @GNULIB_ILOGBF@
+GNULIB_ILOGBL = @GNULIB_ILOGBL@
+GNULIB_ISFINITE = @GNULIB_ISFINITE@
+GNULIB_ISINF = @GNULIB_ISINF@
+GNULIB_ISNAN = @GNULIB_ISNAN@
+GNULIB_ISNAND = @GNULIB_ISNAND@
+GNULIB_ISNANF = @GNULIB_ISNANF@
+GNULIB_ISNANL = @GNULIB_ISNANL@
+GNULIB_ISWBLANK = @GNULIB_ISWBLANK@
+GNULIB_ISWCTYPE = @GNULIB_ISWCTYPE@
+GNULIB_LDEXPF = @GNULIB_LDEXPF@
+GNULIB_LDEXPL = @GNULIB_LDEXPL@
+GNULIB_LOG = @GNULIB_LOG@
+GNULIB_LOG10 = @GNULIB_LOG10@
+GNULIB_LOG10F = @GNULIB_LOG10F@
+GNULIB_LOG10L = @GNULIB_LOG10L@
+GNULIB_LOG1P = @GNULIB_LOG1P@
+GNULIB_LOG1PF = @GNULIB_LOG1PF@
+GNULIB_LOG1PL = @GNULIB_LOG1PL@
+GNULIB_LOG2 = @GNULIB_LOG2@
+GNULIB_LOG2F = @GNULIB_LOG2F@
+GNULIB_LOG2L = @GNULIB_LOG2L@
+GNULIB_LOGB = @GNULIB_LOGB@
+GNULIB_LOGBF = @GNULIB_LOGBF@
+GNULIB_LOGBL = @GNULIB_LOGBL@
+GNULIB_LOGF = @GNULIB_LOGF@
+GNULIB_LOGL = @GNULIB_LOGL@
+GNULIB_MBRLEN = @GNULIB_MBRLEN@
+GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSINIT = @GNULIB_MBSINIT@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSNLEN = @GNULIB_MBSNLEN@
+GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMCHR = @GNULIB_MEMCHR@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MODF = @GNULIB_MODF@
+GNULIB_MODFF = @GNULIB_MODFF@
+GNULIB_MODFL = @GNULIB_MODFL@
+GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@
+GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@
+GNULIB_OVERRIDES_WINT_T = @GNULIB_OVERRIDES_WINT_T@
+GNULIB_PCLOSE = @GNULIB_PCLOSE@
+GNULIB_PERROR = @GNULIB_PERROR@
+GNULIB_POPEN = @GNULIB_POPEN@
+GNULIB_POWF = @GNULIB_POWF@
+GNULIB_PRINTF = @GNULIB_PRINTF@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_PUTC = @GNULIB_PUTC@
+GNULIB_PUTCHAR = @GNULIB_PUTCHAR@
+GNULIB_PUTS = @GNULIB_PUTS@
+GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
+GNULIB_REMAINDER = @GNULIB_REMAINDER@
+GNULIB_REMAINDERF = @GNULIB_REMAINDERF@
+GNULIB_REMAINDERL = @GNULIB_REMAINDERL@
+GNULIB_REMOVE = @GNULIB_REMOVE@
+GNULIB_RENAME = @GNULIB_RENAME@
+GNULIB_RENAMEAT = @GNULIB_RENAMEAT@
+GNULIB_RINT = @GNULIB_RINT@
+GNULIB_RINTF = @GNULIB_RINTF@
+GNULIB_RINTL = @GNULIB_RINTL@
+GNULIB_ROUND = @GNULIB_ROUND@
+GNULIB_ROUNDF = @GNULIB_ROUNDF@
+GNULIB_ROUNDL = @GNULIB_ROUNDL@
+GNULIB_SCANF = @GNULIB_SCANF@
+GNULIB_SIGNBIT = @GNULIB_SIGNBIT@
+GNULIB_SINF = @GNULIB_SINF@
+GNULIB_SINHF = @GNULIB_SINHF@
+GNULIB_SINL = @GNULIB_SINL@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_SQRTF = @GNULIB_SQRTF@
+GNULIB_SQRTL = @GNULIB_SQRTL@
+GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@
+GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRERROR_R = @GNULIB_STRERROR_R@
+GNULIB_STRNCAT = @GNULIB_STRNCAT@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@
+GNULIB_STRSTR = @GNULIB_STRSTR@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
+GNULIB_TANF = @GNULIB_TANF@
+GNULIB_TANHF = @GNULIB_TANHF@
+GNULIB_TANL = @GNULIB_TANL@
+GNULIB_TMPFILE = @GNULIB_TMPFILE@
+GNULIB_TOWCTRANS = @GNULIB_TOWCTRANS@
+GNULIB_TRUNC = @GNULIB_TRUNC@
+GNULIB_TRUNCF = @GNULIB_TRUNCF@
+GNULIB_TRUNCL = @GNULIB_TRUNCL@
+GNULIB_VASPRINTF = @GNULIB_VASPRINTF@
+GNULIB_VDPRINTF = @GNULIB_VDPRINTF@
+GNULIB_VFPRINTF = @GNULIB_VFPRINTF@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VFSCANF = @GNULIB_VFSCANF@
+GNULIB_VPRINTF = @GNULIB_VPRINTF@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSCANF = @GNULIB_VSCANF@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNULIB_WCPCPY = @GNULIB_WCPCPY@
+GNULIB_WCPNCPY = @GNULIB_WCPNCPY@
+GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
+GNULIB_WCSCASECMP = @GNULIB_WCSCASECMP@
+GNULIB_WCSCAT = @GNULIB_WCSCAT@
+GNULIB_WCSCHR = @GNULIB_WCSCHR@
+GNULIB_WCSCMP = @GNULIB_WCSCMP@
+GNULIB_WCSCOLL = @GNULIB_WCSCOLL@
+GNULIB_WCSCPY = @GNULIB_WCSCPY@
+GNULIB_WCSCSPN = @GNULIB_WCSCSPN@
+GNULIB_WCSDUP = @GNULIB_WCSDUP@
+GNULIB_WCSFTIME = @GNULIB_WCSFTIME@
+GNULIB_WCSLEN = @GNULIB_WCSLEN@
+GNULIB_WCSNCASECMP = @GNULIB_WCSNCASECMP@
+GNULIB_WCSNCAT = @GNULIB_WCSNCAT@
+GNULIB_WCSNCMP = @GNULIB_WCSNCMP@
+GNULIB_WCSNCPY = @GNULIB_WCSNCPY@
+GNULIB_WCSNLEN = @GNULIB_WCSNLEN@
+GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@
+GNULIB_WCSPBRK = @GNULIB_WCSPBRK@
+GNULIB_WCSRCHR = @GNULIB_WCSRCHR@
+GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
+GNULIB_WCSSPN = @GNULIB_WCSSPN@
+GNULIB_WCSSTR = @GNULIB_WCSSTR@
+GNULIB_WCSTOK = @GNULIB_WCSTOK@
+GNULIB_WCSWIDTH = @GNULIB_WCSWIDTH@
+GNULIB_WCSXFRM = @GNULIB_WCSXFRM@
+GNULIB_WCTOB = @GNULIB_WCTOB@
+GNULIB_WCTRANS = @GNULIB_WCTRANS@
+GNULIB_WCTYPE = @GNULIB_WCTYPE@
+GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
+GNULIB_WMEMCHR = @GNULIB_WMEMCHR@
+GNULIB_WMEMCMP = @GNULIB_WMEMCMP@
+GNULIB_WMEMCPY = @GNULIB_WMEMCPY@
+GNULIB_WMEMMOVE = @GNULIB_WMEMMOVE@
+GNULIB_WMEMSET = @GNULIB_WMEMSET@
+GREP = @GREP@
+GROFF_PATH_SEPARATOR = @GROFF_PATH_SEPARATOR@
+HAVE_ACOSF = @HAVE_ACOSF@
+HAVE_ACOSL = @HAVE_ACOSL@
+HAVE_ASINF = @HAVE_ASINF@
+HAVE_ASINL = @HAVE_ASINL@
+HAVE_ATAN2F = @HAVE_ATAN2F@
+HAVE_ATANF = @HAVE_ATANF@
+HAVE_ATANL = @HAVE_ATANL@
+HAVE_BTOWC = @HAVE_BTOWC@
+HAVE_C99_STDINT_H = @HAVE_C99_STDINT_H@
+HAVE_CBRT = @HAVE_CBRT@
+HAVE_CBRTF = @HAVE_CBRTF@
+HAVE_CBRTL = @HAVE_CBRTL@
+HAVE_COPYSIGN = @HAVE_COPYSIGN@
+HAVE_COPYSIGNL = @HAVE_COPYSIGNL@
+HAVE_COSF = @HAVE_COSF@
+HAVE_COSHF = @HAVE_COSHF@
+HAVE_COSL = @HAVE_COSL@
+HAVE_CRTDEFS_H = @HAVE_CRTDEFS_H@
+HAVE_DECL_ACOSL = @HAVE_DECL_ACOSL@
+HAVE_DECL_ASINL = @HAVE_DECL_ASINL@
+HAVE_DECL_ATANL = @HAVE_DECL_ATANL@
+HAVE_DECL_CBRTF = @HAVE_DECL_CBRTF@
+HAVE_DECL_CBRTL = @HAVE_DECL_CBRTL@
+HAVE_DECL_CEILF = @HAVE_DECL_CEILF@
+HAVE_DECL_CEILL = @HAVE_DECL_CEILL@
+HAVE_DECL_COPYSIGNF = @HAVE_DECL_COPYSIGNF@
+HAVE_DECL_COSL = @HAVE_DECL_COSL@
+HAVE_DECL_EXP2 = @HAVE_DECL_EXP2@
+HAVE_DECL_EXP2F = @HAVE_DECL_EXP2F@
+HAVE_DECL_EXP2L = @HAVE_DECL_EXP2L@
+HAVE_DECL_EXPL = @HAVE_DECL_EXPL@
+HAVE_DECL_EXPM1L = @HAVE_DECL_EXPM1L@
+HAVE_DECL_FLOORF = @HAVE_DECL_FLOORF@
+HAVE_DECL_FLOORL = @HAVE_DECL_FLOORL@
+HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@
+HAVE_DECL_FREXPL = @HAVE_DECL_FREXPL@
+HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@
+HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@
+HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@
+HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@
+HAVE_DECL_LDEXPL = @HAVE_DECL_LDEXPL@
+HAVE_DECL_LOG10L = @HAVE_DECL_LOG10L@
+HAVE_DECL_LOG2 = @HAVE_DECL_LOG2@
+HAVE_DECL_LOG2F = @HAVE_DECL_LOG2F@
+HAVE_DECL_LOG2L = @HAVE_DECL_LOG2L@
+HAVE_DECL_LOGB = @HAVE_DECL_LOGB@
+HAVE_DECL_LOGL = @HAVE_DECL_LOGL@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@
+HAVE_DECL_REMAINDER = @HAVE_DECL_REMAINDER@
+HAVE_DECL_REMAINDERL = @HAVE_DECL_REMAINDERL@
+HAVE_DECL_RINTF = @HAVE_DECL_RINTF@
+HAVE_DECL_ROUND = @HAVE_DECL_ROUND@
+HAVE_DECL_ROUNDF = @HAVE_DECL_ROUNDF@
+HAVE_DECL_ROUNDL = @HAVE_DECL_ROUNDL@
+HAVE_DECL_SINL = @HAVE_DECL_SINL@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_SQRTL = @HAVE_DECL_SQRTL@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_TANL = @HAVE_DECL_TANL@
+HAVE_DECL_TRUNC = @HAVE_DECL_TRUNC@
+HAVE_DECL_TRUNCF = @HAVE_DECL_TRUNCF@
+HAVE_DECL_TRUNCL = @HAVE_DECL_TRUNCL@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
+HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
+HAVE_DPRINTF = @HAVE_DPRINTF@
+HAVE_EXPF = @HAVE_EXPF@
+HAVE_EXPL = @HAVE_EXPL@
+HAVE_EXPLICIT_BZERO = @HAVE_EXPLICIT_BZERO@
+HAVE_EXPM1 = @HAVE_EXPM1@
+HAVE_EXPM1F = @HAVE_EXPM1F@
+HAVE_FABSF = @HAVE_FABSF@
+HAVE_FABSL = @HAVE_FABSL@
+HAVE_FEATURES_H = @HAVE_FEATURES_H@
+HAVE_FFSL = @HAVE_FFSL@
+HAVE_FFSLL = @HAVE_FFSLL@
+HAVE_FMA = @HAVE_FMA@
+HAVE_FMAF = @HAVE_FMAF@
+HAVE_FMAL = @HAVE_FMAL@
+HAVE_FMODF = @HAVE_FMODF@
+HAVE_FMODL = @HAVE_FMODL@
+HAVE_FREXPF = @HAVE_FREXPF@
+HAVE_FSEEKO = @HAVE_FSEEKO@
+HAVE_FTELLO = @HAVE_FTELLO@
+HAVE_HYPOTF = @HAVE_HYPOTF@
+HAVE_HYPOTL = @HAVE_HYPOTL@
+HAVE_ILOGB = @HAVE_ILOGB@
+HAVE_ILOGBF = @HAVE_ILOGBF@
+HAVE_ILOGBL = @HAVE_ILOGBL@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISNAND = @HAVE_ISNAND@
+HAVE_ISNANF = @HAVE_ISNANF@
+HAVE_ISNANL = @HAVE_ISNANL@
+HAVE_ISWBLANK = @HAVE_ISWBLANK@
+HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
+HAVE_LDEXPF = @HAVE_LDEXPF@
+HAVE_LOG10F = @HAVE_LOG10F@
+HAVE_LOG10L = @HAVE_LOG10L@
+HAVE_LOG1P = @HAVE_LOG1P@
+HAVE_LOG1PF = @HAVE_LOG1PF@
+HAVE_LOG1PL = @HAVE_LOG1PL@
+HAVE_LOGBF = @HAVE_LOGBF@
+HAVE_LOGBL = @HAVE_LOGBL@
+HAVE_LOGF = @HAVE_LOGF@
+HAVE_LOGL = @HAVE_LOGL@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MAX_ALIGN_T = @HAVE_MAX_ALIGN_T@
+HAVE_MBRLEN = @HAVE_MBRLEN@
+HAVE_MBRTOWC = @HAVE_MBRTOWC@
+HAVE_MBSINIT = @HAVE_MBSINIT@
+HAVE_MBSLEN = @HAVE_MBSLEN@
+HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
+HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MEMCHR = @HAVE_MEMCHR@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MODFF = @HAVE_MODFF@
+HAVE_MODFL = @HAVE_MODFL@
+HAVE_PCLOSE = @HAVE_PCLOSE@
+HAVE_POPEN = @HAVE_POPEN@
+HAVE_POWF = @HAVE_POWF@
+HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
+HAVE_REMAINDER = @HAVE_REMAINDER@
+HAVE_REMAINDERF = @HAVE_REMAINDERF@
+HAVE_RENAMEAT = @HAVE_RENAMEAT@
+HAVE_RINT = @HAVE_RINT@
+HAVE_RINTL = @HAVE_RINTL@
+HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = @HAVE_SAME_LONG_DOUBLE_AS_DOUBLE@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_SINF = @HAVE_SINF@
+HAVE_SINHF = @HAVE_SINHF@
+HAVE_SINL = @HAVE_SINL@
+HAVE_SQRTF = @HAVE_SQRTF@
+HAVE_SQRTL = @HAVE_SQRTL@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRVERSCMP = @HAVE_STRVERSCMP@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_TANF = @HAVE_TANF@
+HAVE_TANHF = @HAVE_TANHF@
+HAVE_TANL = @HAVE_TANL@
+HAVE_TEST_EF_OPTION = @HAVE_TEST_EF_OPTION@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_VASPRINTF = @HAVE_VASPRINTF@
+HAVE_VDPRINTF = @HAVE_VDPRINTF@
+HAVE_WCHAR_H = @HAVE_WCHAR_H@
+HAVE_WCHAR_T = @HAVE_WCHAR_T@
+HAVE_WCPCPY = @HAVE_WCPCPY@
+HAVE_WCPNCPY = @HAVE_WCPNCPY@
+HAVE_WCRTOMB = @HAVE_WCRTOMB@
+HAVE_WCSCASECMP = @HAVE_WCSCASECMP@
+HAVE_WCSCAT = @HAVE_WCSCAT@
+HAVE_WCSCHR = @HAVE_WCSCHR@
+HAVE_WCSCMP = @HAVE_WCSCMP@
+HAVE_WCSCOLL = @HAVE_WCSCOLL@
+HAVE_WCSCPY = @HAVE_WCSCPY@
+HAVE_WCSCSPN = @HAVE_WCSCSPN@
+HAVE_WCSDUP = @HAVE_WCSDUP@
+HAVE_WCSFTIME = @HAVE_WCSFTIME@
+HAVE_WCSLEN = @HAVE_WCSLEN@
+HAVE_WCSNCASECMP = @HAVE_WCSNCASECMP@
+HAVE_WCSNCAT = @HAVE_WCSNCAT@
+HAVE_WCSNCMP = @HAVE_WCSNCMP@
+HAVE_WCSNCPY = @HAVE_WCSNCPY@
+HAVE_WCSNLEN = @HAVE_WCSNLEN@
+HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
+HAVE_WCSPBRK = @HAVE_WCSPBRK@
+HAVE_WCSRCHR = @HAVE_WCSRCHR@
+HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
+HAVE_WCSSPN = @HAVE_WCSSPN@
+HAVE_WCSSTR = @HAVE_WCSSTR@
+HAVE_WCSTOK = @HAVE_WCSTOK@
+HAVE_WCSWIDTH = @HAVE_WCSWIDTH@
+HAVE_WCSXFRM = @HAVE_WCSXFRM@
+HAVE_WCTRANS_T = @HAVE_WCTRANS_T@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WCTYPE_T = @HAVE_WCTYPE_T@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WMEMCHR = @HAVE_WMEMCHR@
+HAVE_WMEMCMP = @HAVE_WMEMCMP@
+HAVE_WMEMCPY = @HAVE_WMEMCPY@
+HAVE_WMEMMOVE = @HAVE_WMEMMOVE@
+HAVE_WMEMSET = @HAVE_WMEMSET@
+HOST_CPU = @HOST_CPU@
+HOST_CPU_C_ABI = @HOST_CPU_C_ABI@
+INCLUDE_NEXT = @INCLUDE_NEXT@
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_INFO = @INSTALL_INFO@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBC = @LIBC@
+LIBEXT = @LIBEXT@
+LIBGNU_LIBDEPS = @LIBGNU_LIBDEPS@
+LIBGNU_LTLIBDEPS = @LIBGNU_LTLIBDEPS@
+LIBICONV = @LIBICONV@
+LIBM = @LIBM@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBUNISTRING_UNITYPES_H = @LIBUNISTRING_UNITYPES_H@
+LIBUNISTRING_UNIWIDTH_H = @LIBUNISTRING_UNIWIDTH_H@
+LIMITS_H = @LIMITS_H@
+LN_S = @LN_S@
+LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@
+LP = @LP@
+LPQ = @LPQ@
+LPR = @LPR@
+LTLIBICONV = @LTLIBICONV@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
+NEXT_AS_FIRST_DIRECTIVE_FLOAT_H = @NEXT_AS_FIRST_DIRECTIVE_FLOAT_H@
+NEXT_AS_FIRST_DIRECTIVE_LIMITS_H = @NEXT_AS_FIRST_DIRECTIVE_LIMITS_H@
+NEXT_AS_FIRST_DIRECTIVE_MATH_H = @NEXT_AS_FIRST_DIRECTIVE_MATH_H@
+NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
+NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@
+NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
+NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H@
+NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
+NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@
+NEXT_ERRNO_H = @NEXT_ERRNO_H@
+NEXT_FLOAT_H = @NEXT_FLOAT_H@
+NEXT_LIMITS_H = @NEXT_LIMITS_H@
+NEXT_MATH_H = @NEXT_MATH_H@
+NEXT_STDDEF_H = @NEXT_STDDEF_H@
+NEXT_STDINT_H = @NEXT_STDINT_H@
+NEXT_STDIO_H = @NEXT_STDIO_H@
+NEXT_STRING_H = @NEXT_STRING_H@
+NEXT_SYS_TYPES_H = @NEXT_SYS_TYPES_H@
+NEXT_WCHAR_H = @NEXT_WCHAR_H@
+NEXT_WCTYPE_H = @NEXT_WCTYPE_H@
+OBJEXT = @OBJEXT@
+OTHERDEVDIRS = @OTHERDEVDIRS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PAGE = @PAGE@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PDFFONTS = @PDFFONTS@
+PDFIMAGES = @PDFIMAGES@
+PDFINFO = @PDFINFO@
+PERL = @PERL@
+PERL_VERSION = @PERL_VERSION@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+PRAGMA_COLUMNS = @PRAGMA_COLUMNS@
+PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
+PROG_TEXI2DVI = @PROG_TEXI2DVI@
+PSPRINT = @PSPRINT@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_ACOSF = @REPLACE_ACOSF@
+REPLACE_ASINF = @REPLACE_ASINF@
+REPLACE_ATAN2F = @REPLACE_ATAN2F@
+REPLACE_ATANF = @REPLACE_ATANF@
+REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CBRTF = @REPLACE_CBRTF@
+REPLACE_CBRTL = @REPLACE_CBRTL@
+REPLACE_CEIL = @REPLACE_CEIL@
+REPLACE_CEILF = @REPLACE_CEILF@
+REPLACE_CEILL = @REPLACE_CEILL@
+REPLACE_COSF = @REPLACE_COSF@
+REPLACE_COSHF = @REPLACE_COSHF@
+REPLACE_DPRINTF = @REPLACE_DPRINTF@
+REPLACE_EXP2 = @REPLACE_EXP2@
+REPLACE_EXP2L = @REPLACE_EXP2L@
+REPLACE_EXPF = @REPLACE_EXPF@
+REPLACE_EXPM1 = @REPLACE_EXPM1@
+REPLACE_EXPM1F = @REPLACE_EXPM1F@
+REPLACE_FABSL = @REPLACE_FABSL@
+REPLACE_FCLOSE = @REPLACE_FCLOSE@
+REPLACE_FDOPEN = @REPLACE_FDOPEN@
+REPLACE_FFLUSH = @REPLACE_FFLUSH@
+REPLACE_FLOOR = @REPLACE_FLOOR@
+REPLACE_FLOORF = @REPLACE_FLOORF@
+REPLACE_FLOORL = @REPLACE_FLOORL@
+REPLACE_FMA = @REPLACE_FMA@
+REPLACE_FMAF = @REPLACE_FMAF@
+REPLACE_FMAL = @REPLACE_FMAL@
+REPLACE_FMOD = @REPLACE_FMOD@
+REPLACE_FMODF = @REPLACE_FMODF@
+REPLACE_FMODL = @REPLACE_FMODL@
+REPLACE_FOPEN = @REPLACE_FOPEN@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_FPURGE = @REPLACE_FPURGE@
+REPLACE_FREOPEN = @REPLACE_FREOPEN@
+REPLACE_FREXP = @REPLACE_FREXP@
+REPLACE_FREXPF = @REPLACE_FREXPF@
+REPLACE_FREXPL = @REPLACE_FREXPL@
+REPLACE_FSEEK = @REPLACE_FSEEK@
+REPLACE_FSEEKO = @REPLACE_FSEEKO@
+REPLACE_FTELL = @REPLACE_FTELL@
+REPLACE_FTELLO = @REPLACE_FTELLO@
+REPLACE_GETDELIM = @REPLACE_GETDELIM@
+REPLACE_GETLINE = @REPLACE_GETLINE@
+REPLACE_HUGE_VAL = @REPLACE_HUGE_VAL@
+REPLACE_HYPOT = @REPLACE_HYPOT@
+REPLACE_HYPOTF = @REPLACE_HYPOTF@
+REPLACE_HYPOTL = @REPLACE_HYPOTL@
+REPLACE_ILOGB = @REPLACE_ILOGB@
+REPLACE_ILOGBF = @REPLACE_ILOGBF@
+REPLACE_ILOGBL = @REPLACE_ILOGBL@
+REPLACE_ISFINITE = @REPLACE_ISFINITE@
+REPLACE_ISINF = @REPLACE_ISINF@
+REPLACE_ISNAN = @REPLACE_ISNAN@
+REPLACE_ISWBLANK = @REPLACE_ISWBLANK@
+REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@
+REPLACE_ITOLD = @REPLACE_ITOLD@
+REPLACE_LDEXPL = @REPLACE_LDEXPL@
+REPLACE_LOG = @REPLACE_LOG@
+REPLACE_LOG10 = @REPLACE_LOG10@
+REPLACE_LOG10F = @REPLACE_LOG10F@
+REPLACE_LOG10L = @REPLACE_LOG10L@
+REPLACE_LOG1P = @REPLACE_LOG1P@
+REPLACE_LOG1PF = @REPLACE_LOG1PF@
+REPLACE_LOG1PL = @REPLACE_LOG1PL@
+REPLACE_LOG2 = @REPLACE_LOG2@
+REPLACE_LOG2F = @REPLACE_LOG2F@
+REPLACE_LOG2L = @REPLACE_LOG2L@
+REPLACE_LOGB = @REPLACE_LOGB@
+REPLACE_LOGBF = @REPLACE_LOGBF@
+REPLACE_LOGBL = @REPLACE_LOGBL@
+REPLACE_LOGF = @REPLACE_LOGF@
+REPLACE_LOGL = @REPLACE_LOGL@
+REPLACE_MBRLEN = @REPLACE_MBRLEN@
+REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
+REPLACE_MBSINIT = @REPLACE_MBSINIT@
+REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
+REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
+REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
+REPLACE_MEMCHR = @REPLACE_MEMCHR@
+REPLACE_MEMMEM = @REPLACE_MEMMEM@
+REPLACE_MODF = @REPLACE_MODF@
+REPLACE_MODFF = @REPLACE_MODFF@
+REPLACE_MODFL = @REPLACE_MODFL@
+REPLACE_NAN = @REPLACE_NAN@
+REPLACE_NULL = @REPLACE_NULL@
+REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@
+REPLACE_PERROR = @REPLACE_PERROR@
+REPLACE_POPEN = @REPLACE_POPEN@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_REMAINDER = @REPLACE_REMAINDER@
+REPLACE_REMAINDERF = @REPLACE_REMAINDERF@
+REPLACE_REMAINDERL = @REPLACE_REMAINDERL@
+REPLACE_REMOVE = @REPLACE_REMOVE@
+REPLACE_RENAME = @REPLACE_RENAME@
+REPLACE_RENAMEAT = @REPLACE_RENAMEAT@
+REPLACE_ROUND = @REPLACE_ROUND@
+REPLACE_ROUNDF = @REPLACE_ROUNDF@
+REPLACE_ROUNDL = @REPLACE_ROUNDL@
+REPLACE_SIGNBIT = @REPLACE_SIGNBIT@
+REPLACE_SIGNBIT_USING_GCC = @REPLACE_SIGNBIT_USING_GCC@
+REPLACE_SINF = @REPLACE_SINF@
+REPLACE_SINHF = @REPLACE_SINHF@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_SQRTF = @REPLACE_SQRTF@
+REPLACE_SQRTL = @REPLACE_SQRTL@
+REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@
+REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@
+REPLACE_STPNCPY = @REPLACE_STPNCPY@
+REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
+REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@
+REPLACE_STRDUP = @REPLACE_STRDUP@
+REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRERROR_R = @REPLACE_STRERROR_R@
+REPLACE_STRNCAT = @REPLACE_STRNCAT@
+REPLACE_STRNDUP = @REPLACE_STRNDUP@
+REPLACE_STRNLEN = @REPLACE_STRNLEN@
+REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
+REPLACE_STRSTR = @REPLACE_STRSTR@
+REPLACE_STRTOK_R = @REPLACE_STRTOK_R@
+REPLACE_TANF = @REPLACE_TANF@
+REPLACE_TANHF = @REPLACE_TANHF@
+REPLACE_TMPFILE = @REPLACE_TMPFILE@
+REPLACE_TOWLOWER = @REPLACE_TOWLOWER@
+REPLACE_TRUNC = @REPLACE_TRUNC@
+REPLACE_TRUNCF = @REPLACE_TRUNCF@
+REPLACE_TRUNCL = @REPLACE_TRUNCL@
+REPLACE_VASPRINTF = @REPLACE_VASPRINTF@
+REPLACE_VDPRINTF = @REPLACE_VDPRINTF@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
+REPLACE_WCSFTIME = @REPLACE_WCSFTIME@
+REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
+REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
+REPLACE_WCSWIDTH = @REPLACE_WCSWIDTH@
+REPLACE_WCTOB = @REPLACE_WCTOB@
+REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
+
+# On some platforms we need to set LANG and LC_ALL to C for sed
+SED = \
+  LANG=C \
+  LC_ALL=C \
+  sed
+
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SHORT_VERSION = @SHORT_VERSION@
+SH_SCRIPT_SED_CMD = @SH_SCRIPT_SED_CMD@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDDEF_H = @STDDEF_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+
+# XDEVIDIRS
+# `XDEVDIRS' is either `font/devX{75,100}{,-12}' or empty.
+
+# XPROGDIRS
+# `XPROGDIRS' is either `src/devices/xditview src/utils/xtotroff' or empty.
+
+# XLIBDIRS
+# `XLIBDIRS' is either `src/libs/libxutil' or empty.
+
+# `TTYDEVDIRS' is either `font/devascii font/devlatin1' (for
+# ASCII) or `font/devcp1047' (for EBCDIC) plus font/devutf8.
+TTYDEVDIRS = @TTYDEVDIRS@ font/devutf8
+UCHARDET_CFLAGS = @UCHARDET_CFLAGS@
+UCHARDET_LIBS = @UCHARDET_LIBS@
+UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@
+VERSION = @VERSION@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WINDOWS_64_BIT_OFF_T = @WINDOWS_64_BIT_OFF_T@
+WINDOWS_STAT_INODES = @WINDOWS_STAT_INODES@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XDEVDIRS = @XDEVDIRS@
+XLIBDIRS = @XLIBDIRS@
+XMKMF = @XMKMF@
+XPMTOPPM = @XPMTOPPM@
+XPROGDIRS = @XPROGDIRS@
+X_CFLAGS = @X_CFLAGS@
+X_EXTRA_LIBS = @X_EXTRA_LIBS@
+X_LIBS = @X_LIBS@
+X_PRE_LIBS = @X_PRE_LIBS@
+YACC = @YACC@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AWK = @ac_ct_AWK@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_GHOSTSCRIPT = @ac_ct_GHOSTSCRIPT@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+appresdir = @appresdir@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+compatibility_wrappers = @compatibility_wrappers@
+datadir = @datadir@
+datarootdir = @datarootdir@
+doc_dist_target_ok = @doc_dist_target_ok@
+
+# infodir
+# `infodir' says where to install info files.
+
+# docdir
+# `docdir' says where to install documentation files.  The default
+# location is ${datarootdir}/doc/${PACKAGE}, but we add the version
+docdir = $(datarootdir)/doc/${PACKAGE}-$(SHORT_VERSION)
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+g = @g@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+glilypond_dir = @glilypond_dir@
+gltests_LIBOBJS = @gltests_LIBOBJS@
+gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+gltests_WITNESS = @gltests_WITNESS@
+gpinyin_dir = @gpinyin_dir@
+groff_have_urw_fonts = @groff_have_urw_fonts@
+groffer_dir = @groffer_dir@
+grog_dir = @grog_dir@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+libprogramdir = @libprogramdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+make_examples = @make_examples@
+make_htmldoc = @make_htmldoc@
+make_htmlexamples = @make_htmlexamples@
+make_infodoc = @make_infodoc@
+make_install_examples = @make_install_examples@
+make_install_htmldoc = @make_install_htmldoc@
+make_install_htmlexamples = @make_install_htmlexamples@
+make_install_infodoc = @make_install_infodoc@
+make_install_otherdoc = @make_install_otherdoc@
+make_install_pdfdoc = @make_install_pdfdoc@
+make_install_pdfexamples = @make_install_pdfexamples@
+make_install_shipped_htmldoc = @make_install_shipped_htmldoc@
+make_otherdoc = @make_otherdoc@
+make_pdfdoc = @make_pdfdoc@
+make_pdfexamples = @make_pdfexamples@
+make_uninstall_examples = @make_uninstall_examples@
+make_uninstall_htmldoc = @make_uninstall_htmldoc@
+make_uninstall_htmlexamples = @make_uninstall_htmlexamples@
+make_uninstall_infodoc = @make_uninstall_infodoc@
+make_uninstall_otherdoc = @make_uninstall_otherdoc@
+make_uninstall_pdfdoc = @make_uninstall_pdfdoc@
+make_uninstall_pdfexamples = @make_uninstall_pdfexamples@
+make_uninstall_shipped_htmldoc = @make_uninstall_shipped_htmldoc@
+make_winscripts = @make_winscripts@
+makeinfo_version_numeric = @makeinfo_version_numeric@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+pnmcrop = @pnmcrop@
+pnmcut = @pnmcut@
+pnmtopng = @pnmtopng@
+pnmtops = @pnmtops@
+pnmtops_nosetpage = @pnmtops_nosetpage@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+psselect = @psselect@
+referdir = @referdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sys_tmac_prefix = @sys_tmac_prefix@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+tmac_wrap = @tmac_wrap@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+urwfontsdir = @urwfontsdir@
+
+# `RT_SEP' is the operating system's native PATH SEPARATOR CHAR, which
+# is to be used in runtime PATHs compiled into groff executables.
+RT_SEP = @GROFF_PATH_SEPARATOR@
+
+# `SH_SEP' is a alternative PATH SEPARATOR CHAR, to be used in shell
+# scripts and makefile rules; it may be the same as `RT_SEP', but,
+# particularly in some Microsoft environments, it may differ.
+SH_SEP = @PATH_SEPARATOR@
+
+# GLIBC2
+# `GLIBC21' is yes if the host operating system uses GNU libc 2.1 or newer,
+# otherwise no.
+
+# VERSION is set by automake, based on what is passed to AC_INIT.
+
+# PAGE
+# Define `page' to be letter if your PostScript printer uses 8.5x11
+# paper (USA) and define it to be A4, if it uses A4 paper (rest of the
+# world).
+
+# GHOSTSCRIPT
+# The name of the ghostscript program. Normally, gs, on GNU/Linux
+# but it might be different on MS-DOS/MS-WIN32 systems.
+
+# ALT_GHOSTSCRIPT_PROGS
+# `ALT_GHOSTSCRIPT_PROGS' specifies a list alternative names,
+# which can be tried if `GHOSTSCRIPT' cannot be found at run time.
+
+# ALT_AWK_PROGS
+# Similarly, `ALT_AWK_PROGS' specifies a list of alternative names,
+# which can be tried at run time, to identify the awk program.
+
+# BROKEN_SPOOLER_FLAGS
+# Normally the Postscript driver, grops, produces output that conforms
+# to version 3.0 of the Adobe Document Structuring Conventions.
+# Unfortunately some spoolers and previewers can't handle such output.
+# The BROKEN_SPOOLER_FLAGS variable tells grops what it should do to
+# make its output acceptable to such programs.  This variable controls
+# only the default behaviour of grops; the behaviour can be changed at
+# runtime by the grops -b option (and so by groff -P-b).
+# Use a value of 0 if your spoolers and previewers are able to handle
+# conforming PostScript correctly.
+# Add 1 if no %%{Begin,End}DocumentSetup comments should be generated;
+# this is needed for early versions of TranScript that get confused by
+# anything between the %%EndProlog line and the first %%Page: comment.
+# Add 2 if lines in included files beginning with %! should be
+# stripped out; this is needed for the OpenWindows 2.0 pageview previewer.
+# Add 4 if %%Page, %%Trailer and %%EndProlog comments should be
+# stripped out of included files; this is needed for spoolers that
+# don't understand the %%{Begin,End}Document comments. I suspect this
+# includes early versions of TranScript.
+# Add 8 if the first line of the PostScript output should be %!PS-Adobe-2.0
+# rather than %!PS-Adobe-3.0; this is needed when using Sun's Newsprint
+# with a printer that requires page reversal.
+
+# `DEVICE' is the default device.
+DEVICE = ps
+
+# OTHERDEVDIRS
+# `OTHERDEVDIRS' is either `font/devlj4 font/devlbp' (for ASCII) or
+# empty (for EBCDIC).
+
+# PSPRINT
+# `PSPRINT' is the command to use for printing a PostScript file,
+# for example `lpr'.
+
+# DVIPRINT
+# `DVIPRINT' is the command to use for printing a TeX dvi file,
+# for example `lpr -d'.
+
+# g
+# Prefix for names of programs that have Unix counterparts.
+# For example, if `g' is `g' then troff will be installed as
+# gtroff.  This doesn't affect programs like grops or groff that have
+# no Unix counterparts.  Note that the groff versions of eqn and tbl
+# will not work with Unix troff.
+
+# prefix
+# exec_prefix
+# Common prefix for installation directories.
+# Used in definitions of exec_prefix, datasubdir, fontpath, manroot.
+# This must already exist when you do make install.
+
+# bindir
+# `bindir' says where to install executables.
+
+# libdir
+# `libdir' says where to install platform-dependent data.
+
+# libprogramdir
+# `libprogramdir' is $(libdir)/groff
+
+# `datasubdir' says where to install platform-independent data files.
+# datadir
+# datarootdir
+dataprogramdir = $(datadir)/groff
+datasubdir = $(dataprogramdir)/$(SHORT_VERSION)
+
+# `exampledir' says where to install example files.
+exampledir = $(docdir)/examples
+
+# `htmldocdir' says where to install documentation in HTML format.
+htmldocdir = $(docdir)/html
+
+# `pdfdocdir' says where to install documentation in PDF format.
+pdfdocdir = $(docdir)/pdf
+
+# `fontdir' says where to install dev*/*.
+fontdir = $(datasubdir)/font
+
+# `oldfontdir' says where to install old font sets (as dev*/*).
+oldfontdir = $(datasubdir)/oldfont
+
+# `localfontdir' says where local fonts will be installed (as dev*/*).
+localfontdir = $(dataprogramdir)/site-font
+
+# `legacyfontdir' is for compatibility with non-GNU troff.
+legacyfontdir = /usr/lib/font
+
+# `fontpath' says where to look for dev*/*.
+fontpath = $(localfontdir)$(RT_SEP)$(fontdir)$(RT_SEP)$(legacyfontdir)
+
+# `tmacdir' says where to install macros.
+tmacdir = $(datasubdir)/tmac
+
+# `systemtmacdir' says where to install platform-dependent macros.
+systemtmacdir = $(libprogramdir)/site-tmac
+
+# `localtmacdir' says where local files will be installed.
+localtmacdir = $(dataprogramdir)/site-tmac
+
+# appresdir
+# `appresdir' says where to install the application resource file for
+# gxditview.
+
+# groffer_dir
+# glilypond_dir
+# grog_dir
+# gpinyin_dir
+
+# `tmacpath' says where to look for macro files.
+# The current directory will be prepended in unsafe mode only; the home
+# directory will be always added.
+# `troffrc' and `troffrc-end' (and `eqnrc') are searched neither in the
+# current nor in the home directory.
+tmacpath = $(systemtmacdir)$(RT_SEP)$(localtmacdir)$(RT_SEP)$(tmacdir)
+
+# sys_tmac_prefix
+# `sys_tmac_prefix' is prefix (if any) for system macro packages.
+
+# pnmtops_nosetpage
+# `pnmtops_nosetpage' is the command to be run to generate an eps
+# file.  Some versions of pnmtops provide the -nosetpage option.
+# We detect this and use it if present.
+
+# tmac_wrap
+# `tmac_wrap' is list of system macro packages that should be made
+# available to groff by creating a corresponding macro package
+# in the groff macro directory that references the system macro
+# package.
+
+# compatibility_wrappers
+# (groff compatibility wrappers for vendor-provided non-GNU macro sets)
+#
+# `compatibility_wrappers' controls the creation and installation of
+# compatibility wrappers for the macro sets named in `tmac_wrap'.
+# Its value must be one of:
+#   `yes'    install compatibility wrappers as the original macro set name
+#            (that is, the default implementation of that macro set), and
+#            install the groff implementation with a prefix (usually g).
+#   `no'     do not install compatibility wrappers; only install the groff
+#            implementation of each macro set.
+#   `manual' install the compatibility wrappers as `<macro>-os' and install
+#            the groff implementation of each macro set as the default
+#            implementation of that macro set.
+
+# Don't make this empty.
+wrapper_suffix_default = "-os"
+wrapper_suffix = `if test $(compatibility_wrappers) = manual; then echo $(wrapper_suffix_default); fi`
+
+# When `compatibility_wrappers' is `yes', if there is a groff implementation
+# of a macro set listed in $(tmac_wrap), then the groff implementation will be
+# installed with a prefix of $(tmac_prefix) via the collision detection
+# variables $(tmac_m_prefix), $(tmac_s_prefix), and $(tmac_an_prefix).
+
+# Don't make this empty.
+tmac_prefix = g
+
+# The groff -mm macros will be available as -m$(tmac_m_prefix)m.
+tmac_m_prefix = \
+ `if test $(compatibility_wrappers) = yes; then \
+    for i in $(tmac_wrap) ""; do \
+      case "$$i" in m) echo $(tmac_prefix);; esac; \
+    done; \
+  fi`
+
+
+# The groff -ms macros will be available as -m$(tmac_s_prefix)s.
+tmac_s_prefix = \
+ `if test $(compatibility_wrappers) = yes; then \
+    for i in $(tmac_wrap) ""; do \
+      case "$$i" in s) echo $(tmac_prefix);; esac; \
+    done; \
+  fi`
+
+
+# The groff -man macros will be available as -m$(tmac_an_prefix)an.
+tmac_an_prefix = \
+ `if test $(compatibility_wrappers) = yes; then \
+    for i in $(tmac_wrap) ""; do \
+      case "$$i" in an) echo $(tmac_prefix);; esac; \
+    done; \
+  fi`
+
+
+# Extension to be used for refer index files.  Index files are not
+# sharable between different architectures, so you might want to use
+# different suffixes for different architectures.  Choose an extension
+# that doesn't conflict with refer or any other indexing program.
+indexext = .i
+
+# Directory containing the default index for refer.
+indexdir = /usr/dict/papers
+
+# The filename (without suffix) of the default index for refer.
+indexname = Ind
+
+# common_words_file is a file containing a list of common words.
+# If your system provides /usr/lib/eign it will be copied onto this,
+# otherwise the supplied eign file will be used.
+common_words_file = $(datasubdir)/eign
+
+# mandir
+# `manroot' is the root of the man page directory tree.
+manroot = $(mandir)
+
+# `man1ext' is the man section for user commands.
+man1ext = 1
+man1dir = $(manroot)/man$(man1ext)
+
+# `man5ext' is the man section for file formats.
+man5ext = 5
+man5dir = $(manroot)/man$(man5ext)
+
+# `man7ext' is the man section for macros.
+man7ext = 7
+man7dir = $(manroot)/man$(man7ext)
+
+# doc_dist_target_ok
+# `dist' target is disallowed in some `configure' combinations.
+
+# The configure script checks whether the user wants the info documentation.
+# For the repo version this mechanism also suppresses building via `makeinfo'.
+# make_infodoc
+# make_install_infodoc
+# make_uninstall_infodoc
+
+# The configure script checks whether all necessary utility programs for
+# grohtml are available -- only then we can build the HTML documentation.
+# make_htmldoc
+# make_install_htmldoc
+# make_uninstall_htmldoc
+
+# make_htmlexamples
+# make_install_htmlexamples
+# make_uninstall_htmlexamples
+
+# The configure script also checks whether all necessary utility programs
+# for pdfroff are available -- only then we can build PDF documentation.
+# make_pdfdoc
+# make_install_pdfdoc
+# make_uninstall_pdfdoc
+
+# make_pdfexamples
+# make_install_pdfexamples
+# make_uninstall_pdfexamples
+
+# `other' documentation, e.g., `meref.me' and `pic.ms', as well as their
+# generated counterparts..
+# make_otherdoc
+# make_install_otherdoc
+# make_uninstall_otherdoc
+
+# `examples' -- a generic switch, but the generated examples are furtherly
+# subdivided to catch HTML and PDF production availability.
+# make_examples
+# make_install_examples
+# make_uninstall_examples
+
+# Windows `.cmd' files
+# make_winscripts
+# make_install_winscripts
+# make_uninstall_winscripts
+
+# All the previous installation directories, when used, are prefixed with
+# $(DESTDIR) during install and uninstall, to support staged installations.
+
+# config.h might set the following defines:
+#
+# WORDS_BIGENDIAN              if your target platform is big-endian
+# IS_EBCDIC_HOST               if the host's encoding is EBCDIC
+#
+# HAVE_DIRECT_H                if you have <direct.h>
+# HAVE_DIRENT_H                if you have <dirent.h>
+# HAVE_CC_INTTYPES_H           if you have a C++ <inttypes.h>
+# HAVE_PROCESS_H               if you have <process.h>
+# HAVE_LIMITS_H                if you have <limits.h>
+# HAVE_CC_LIMITS_H             if you have a C++ <limits.h>
+# HAVE_MATH_H                  if you have <math.h>
+# HAVE_CC_OSFCN_H              if you have a C++ <osfcn.h>
+# HAVE_STDDEF_H                if you have <stddef.h>
+# HAVE_STDLIB_H                if you have <stdlib.h>
+# HAVE_STRING_H                if you have <string.h>
+# HAVE_STRINGS_H               if you have <strings.h>
+# HAVE_SYS_DIR_H               if you have <sys/dir.h>
+# HAVE_SYS_PARAM_H             if you have <sys/param.h>
+# HAVE_SYS_STAT_H              if you have <sys/stat.h>
+# HAVE_SYS_TIME_H              if you have <sys/time.h>
+# HAVE_SYS_TYPES_H             if you have <sys/types.h>
+# HAVE_UNISTD_H                if you have <unistd.h>
+#
+# HAVE_FMOD                    if you have fmod()
+# HAVE_GETCWD                  if you have getcwd()
+# HAVE_GETTIMEOFDAY            if you have gettimeofday()
+# HAVE_ICONV                   if you have iconv()
+# HAVE_ISATTY                  if you have isatty()
+# HAVE_KILL                    if you have kill()
+# HAVE_LANGINFO_CODESET        if you have nl_langinfo()
+# HAVE_MKSTEMP         if you have mkstemp()
+# HAVE_MMAP                    if you have mmap()
+# HAVE_PUTENV                  if you have putenv()
+# HAVE_RENAME                  if you have rename()
+# HAVE_SETLOCALE               if you have setlocale()
+# HAVE_STRCASECMP              if you have strcasecmp()
+# HAVE_STRNCASECMP             if you have strncasecmp()
+# HAVE_STRERROR                if you have strerror()
+# HAVE_STRSEP                  if you have strsep()
+# HAVE_STRTOL                  if you have strtol()
+# HAVE_SYMLINK         if you have symlink()
+#
+# NEED_DECLARATION_GETTIMEOFTODAY
+#                              if your C++ <sys/time.h> doesn't declare
+#                              gettimeofday()
+# NEED_DECLARATION_HYPOT       if your C++ <math.h> doesn't declare hypot()
+# NEED_DECLARATION_PCLOSE      if your C++ <stdio.h> doesn't declare pclose()
+# NEED_DECLARATION_POPEN       if your C++ <stdio.h> doesn't declare popen()
+# NEED_DECLARATION_PUTENV      if your C++ <stdlib.h> doesn't declare
+#                              putenv()
+# NEED_DECLARATION_RAND        if your C++ <stdlib.h> doesn't declare rand()
+# NEED_DECLARATION_SRAND       if your C++ <stdlib.h> doesn't declare srand()
+# NEED_DECLARATION_STRCASECMP  if your C++ <string.h> doesn't declare
+#                              strcasecmp()
+# NEED_DECLARATION_STRNCASECMP
+#                              if your C++ <string.h> doesn't declare
+#                              strncasecmp()
+# NEED_DECLARATION_VFPRINTF    if your C++ <stdio.h> doesn't declare
+#                              vfprintf()
+#
+# HAVE_DECL_GETC_UNLOCKED      if you have getc_unlocked()
+# HAVE_DECL_SYS_SIGLIST        if you have sys_siglist[]
+#
+# HAVE_STRUCT_EXCEPTION        if <math.h> defines struct exception
+# HAVE_SYS_NERR                if you have sysnerr in <errno.h> or <stdio.h>
+# HAVE_SYS_ERRLIST             if you have sys_errlist in <errno.h> or
+#                              <stdio.h>
+# ICONV_CONST=const            if declaration of iconv() needs const
+# LONG_FOR_TIME_T              if localtime() takes a long * not a time_t *
+# RETSIGTYPE=int               if signal handlers return int not void
+# RET_TYPE_SRAND_IS_VOID       if srand() returns void not int
+#
+# WCOREFLAG=0200               if the 0200 bit of the status returned by
+#                              wait() indicates whether a core image was
+#                              produced for a process that was terminated
+#                              by a signal
+#
+# HAVE_WORKING_O_NOATIME      define if <fcntl.h>'s O_NOATIME flag works
+# HAVE_WORKING_O_NOFOLLOW     define if <fcntl.h>'s O_NOFOLLOW flag works
+#
+# uintmax_t=<value>            define to `unsigned long' or `unsigned long
+#                              long' if <inttypes.h> does not exist
+#
+# TRADITIONAL_CPP              if your C++ compiler uses a traditional
+#                              (Reiser) preprocessor
+# ARRAY_DELETE_NEEDS_SIZE      if your C++ doesn't understand `delete []'
+#
+# PAGE=A4                      if the printer's page size is A4
+# GHOSTSCRIPT=gs               the name (and directory if required) of the
+#                              ghostscript program
+
+# Include
+#
+#   {fmod,getcwd,mkstemp,putenv,strcasecmp,
+#    strerror,strncasecmp,strtol}.$(OBJEXT)
+#
+# LIBOBJS
+# in LIBOBJS if your C library is missing the corresponding function.
+
+# `CCC' is the compiler for C++ (.cpp) files.
+CCC = @CXX@
+ETAGS = etags
+ETAGSFLAGS = 
+# Flag that tells etags to assume C++.
+ETAGSCCFLAG = -C
+# Full path to perl.
+# PERL
+# PERLVERSION
+# Sed command with which to edit sh scripts.
+# SH_SCRIPT_SED_CMD
+# Sed script to deal with OS dependencies in sh scripts.
+SH_DEPS_SED_SCRIPT = $(top_builddir)/shdeps.sed
+
+# The program to create directory hierarchies.
+# mkinstalldirs is now in gnulib/build-aux
+PURIFY = purify
+PURIFYCCFLAGS = 
+#PURIFYCCFLAGS=-g++=yes \
+#  -collector=`dirname \`$(CCC) -print-libgcc-file-name\``/ld
+
+# Add groff and gnulib m4 macros
+ACLOCAL_AMFLAGS = -I m4 -I gnulib_m4
+
+# Common preprocessor flags: gnulib includes, common includes in
+# src/include, and config.h that is generated in the build tree
+AM_CPPFLAGS = \
+  -I$(top_srcdir)/src/include \
+  -I$(top_srcdir)/lib \
+  -I$(top_builddir)/src/include \
+  -I$(top_builddir)/lib
+
+
+# Define a custom string for rules that call groff in make's silence mode.
+GROFF_V = $(GROFF_V_@AM_V@)
+GROFF_V_ = $(GROFF_V_@AM_DEFAULT_V@)
+GROFF_V_0 = @echo "  GROFF   " $@;
+bin_SCRIPTS = $(am__append_2) eqn2graph gdiffmk glilypond gperl \
+       gpinyin grap2graph groffer $(ROFF2PROGS) mmroff pdfroff \
+       pic2graph gropdf pdfmom grog afmtodit
+dist_bin_SCRIPTS = 
+MOSTLYCLEANFILES = lib/core lib/*.stackdump lib/alloca.h \
+       lib/alloca.h-t lib/errno.h lib/errno.h-t lib/float.h \
+       lib/float.h-t lib/limits.h lib/limits.h-t lib/math.h \
+       lib/math.h-t lib/stddef.h lib/stddef.h-t lib/stdint.h \
+       lib/stdint.h-t lib/stdio.h lib/stdio.h-t lib/string.h \
+       lib/string.h-t lib/sys/types.h lib/sys/types.h-t \
+       lib/unitypes.h lib/unitypes.h-t lib/uniwidth.h \
+       lib/uniwidth.h-t lib/wchar.h lib/wchar.h-t lib/wctype.h \
+       lib/wctype.h-t shdeps.sed $(CHEM_GENEXAMPLES) \
+       $(nodist_chemexample122_DATA) contrib/chem/README $(ROFF2MAN) \
+       $(HDTBLGENFILES) $(HDTBLPROCESSEDEXAMPLEFILES) \
+       $(HDTBLSTRIPFILES) $(am__append_6) $(am__append_9) \
+       $(MOMPROCESSEDEXAMPLEFILES) penguin.ps penguin.pdf \
+       $(am__append_10) $(am__append_12) $(am__append_14) \
+       $(am__append_15) doc/examples.stamp $(am__append_17) gnu.eps \
+       $(DEVASCIIFONTSFILES) font/devascii/DESC \
+       $(DEVCP1047FONTSFILES) font/devcp1047/DESC font/devdvi/DESC \
+       $(DEVHTMLFONTSFILES) font/devhtml/DESC $(DEVLATIN1FONTSFILES) \
+       font/devlatin1/DESC font/devlbp/DESC font/devlj4/DESC \
+       font/devpdf/download font/devpdf/DESC font/devpdf/Foundry \
+       font/devpdf/build_font_files font/devpdf/util/BuildFoundries \
+       $(DEVPSFONTFILES_GENERATED) $(DEVUTF8FONTSFILES) \
+       font/devutf8/DESC groff_opts.tmp $(GROFF_OPTS_OUTPUT) \
+       $(TMACMDOCFILES) tmac/www.tmac $(TMACSTRIPFILES) \
+       tmac/stamp-wrap tmac/*-wrap $(prefixexecbin_SCRIPTS) \
+       $(bin_SCRIPTS) $(man1_MANS) $(man5_MANS) $(man7_MANS) \
+       $(PREFIXMAN1) test-groff
+MOSTLYCLEANADD = 
+# No GNU Make output.
+noinst_LIBRARIES = lib/libgnu.a libbib.a libdriver.a libgroff.a \
+       $(am__append_18)
+
+# Case of out-of-source build: we must create the 'man' directory.
+
+# Non-recursive makefile system. See Automake manual '7.3 An
+# Alternative Approach to Subdirectories'. We use a single Makefile.am
+# that includes other .am files, rather than using SUBDIRS.  Note that
+# relative paths in the following .am files are relative to the top
+# source directory.
+
+# Adding defs.h to BUILT_SOURCES will ensure that it will be built on
+# make all or make check before all other targets. However, if another
+# target is built from a clean build tree, (for example make groff)
+# the files in BUILT_SOURCES will not be built first. That is why
+# additional dependencies where added in the .am files that lists
+# objects that use defs (for exmaple in groff.am:
+# src/roff/groff/groff.$(OBJEXT): defs.h)
+
+# Force generation of test-groff even though we don't ship it.
+BUILT_SOURCES = $(ALLOCA_H) $(ERRNO_H) $(FLOAT_H) $(LIMITS_H) \
+       lib/math.h $(STDDEF_H) $(STDINT_H) lib/stdio.h lib/string.h \
+       lib/sys/types.h $(LIBUNISTRING_UNITYPES_H) \
+       $(LIBUNISTRING_UNIWIDTH_H) lib/wchar.h lib/wctype.h man defs.h \
+       test-groff $(top_srcdir)/.version
+CLEANFILES = defs.h src/libs/libgroff/version.cpp charset.alias \
+       ref-add.sed ref-del.sed $(am__append_21) \
+       src/preproc/eqn/eqn.hpp src/preproc/eqn/eqn.cpp \
+       src/preproc/eqn/eqn.output src/preproc/pic/pic.cpp \
+       src/preproc/pic/pic.hpp src/preproc/pic/pic.output \
+       src/preproc/refer/label.cpp src/preproc/refer/label.hpp \
+       src/preproc/refer/label.output src/roff/troff/majorminor.cpp
+# gnulib asks to include this file
+
+# Copyright (C) 2004-2018 Free Software Foundation, Inc.
+# Original Makefile.sub written by Keith Marshall
+#   (keith.d.marshall@ntlworld.com).
+# Adapted to Automake by Bertrand Garrigues (bertrand.garrigues@laposte.net).
+#
+# Last update: 13 Aug 2015
+#
+# This file is part of groff.
+#
+# groff 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.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+
+# pdf doc, written in mom and therefore using contrib/mom/mom.am
+# definitions
+
+# File used by contrib/hdtbl and contrib/pdfmark. It is distributed in
+# doc.eps. We try in priority to use the file in 'doc'.
+
+# TODO: these .c files could be removed (use gnulib instead).
+
+# Other files that should be present in the distribution tarball.
+
+# Version files - see script 'build-aux/git-gen-version'
+EXTRA_DIST = gnulib_m4/gnulib-cache.m4 lib/alloca.in.h lib/errno.in.h \
+       lib/float.c lib/float.in.h lib/itold.c lib/fprintf.c \
+       lib/fpucw.h lib/frexp.c lib/frexp.c lib/frexpl.c lib/fseterr.c \
+       lib/fseterr.h lib/stdio-impl.h \
+       $(top_srcdir)/build-aux/git-version-gen \
+       $(top_srcdir)/build-aux/config.rpath lib/float+.h lib/isnan.c \
+       lib/isnand-nolibm.h lib/isnand.c lib/float+.h lib/isnan.c \
+       lib/isnanf-nolibm.h lib/isnanf.c lib/float+.h lib/isnan.c \
+       lib/isnanl-nolibm.h lib/isnanl.c lib/limits.in.h \
+       lib/localcharset.h lib/math.in.h lib/memchr.c \
+       lib/memchr.valgrind $(top_srcdir)/build-aux/prefix-gnulib-mk \
+       lib/printf-frexp.h lib/printf-frexp.c lib/printf-frexpl.h \
+       lib/float+.h lib/signbitd.c lib/signbitf.c lib/signbitl.c \
+       lib/arg-nonnull.h lib/c++defs.h lib/warn-on-use.h \
+       lib/snprintf.c lib/stddef.in.h lib/stdint.in.h lib/stdio.in.h \
+       lib/streq.h lib/string.in.h lib/sys_types.in.h \
+       lib/unitypes.in.h lib/localcharset.h lib/uniwidth.in.h \
+       lib/uniwidth/cjk.h lib/asnprintf.c lib/float+.h \
+       lib/printf-args.c lib/printf-args.h lib/printf-parse.c \
+       lib/printf-parse.h lib/vasnprintf.c lib/vasnprintf.h \
+       lib/verify.h lib/vsnprintf.c lib/wchar.in.h lib/wctype.in.h \
+       lib/wcwidth.c $(am__append_3) arch/misc/shdeps.sh \
+       contrib/chem/ChangeLog contrib/chem/chem.1.man \
+       contrib/chem/chem.pic contrib/chem/chem.pl \
+       contrib/chem/README.txt contrib/chem/examples/README.txt \
+       contrib/chem/examples/122/README.txt \
+       contrib/eqn2graph/eqn2graph.1.man \
+       contrib/eqn2graph/eqn2graph.sh contrib/gdiffmk/gdiffmk.1.man \
+       contrib/gdiffmk/ChangeLog contrib/gdiffmk/README \
+       contrib/gdiffmk/gdiffmk.sh \
+       contrib/gdiffmk/tests/gdiffmk_tests.sh \
+       contrib/gdiffmk/tests/runtests.sh \
+       contrib/gdiffmk/tests/baseline \
+       contrib/gdiffmk/tests/baseline.6 \
+       contrib/gdiffmk/tests/baseline.6a \
+       contrib/gdiffmk/tests/baseline.7 \
+       contrib/gdiffmk/tests/baseline.8 \
+       contrib/gdiffmk/tests/baseline.9 \
+       contrib/gdiffmk/tests/baseline.9a \
+       contrib/gdiffmk/tests/baseline.10 contrib/gdiffmk/tests/file1 \
+       contrib/gdiffmk/tests/file2 contrib/glilypond/ChangeLog \
+       contrib/glilypond/ChangeLog.0x \
+       contrib/glilypond/glilypond.1.man \
+       contrib/glilypond/glilypond.pl contrib/glilypond/README.txt \
+       contrib/glilypond/examples/example.groff \
+       contrib/gperl/ChangeLog contrib/gperl/gperl.1.man \
+       contrib/gperl/gperl.pl contrib/gpinyin/ChangeLog \
+       contrib/gpinyin/gpinyin.1.man contrib/gpinyin/gpinyin.pl \
+       $(grap2graph_srcdir)/grap2graph.sh \
+       $(grap2graph_srcdir)/grap2graph.1.man \
+       contrib/groff_filenames/ChangeLog \
+       contrib/groff_filenames/groff_filenames.5.man $(GROFFER_PERL) \
+       $(GROFFER_REST) contrib/groffer/ChangeLog \
+       contrib/groffer/README contrib/groffer/README_PERL \
+       contrib/hdtbl/examples/fonts_n.in \
+       contrib/hdtbl/examples/fonts_x.in \
+       contrib/hdtbl/examples/test-hdtbl.sh.in $(am__append_4) \
+       contrib/hdtbl/ChangeLog contrib/hdtbl/TODO \
+       contrib/hdtbl/groff_hdtbl.7.man contrib/hdtbl/hdtbl.tmac-u \
+       contrib/hdtbl/hdmisc.tmac-u contrib/mm/ChangeLog \
+       contrib/mm/examples contrib/mm/Makefile.sim contrib/mm/mm \
+       contrib/mm/NOTES contrib/mm/README contrib/mm/groff_mm.7.man \
+       contrib/mm/groff_mmse.7.man contrib/mm/mmroff.1.man \
+       contrib/mm/mmroff.pl $(am__append_7) \
+       contrib/mom/examples/test-mom.sh.in $(MOMHTMLDOCFILES) \
+       $(MOMEXAMPLEFILES) contrib/mom/BUGS contrib/mom/ChangeLog \
+       contrib/mom/NEWS contrib/mom/TODO contrib/mom/copyright \
+       contrib/mom/groff_mom.7.man $(am__append_11) \
+       contrib/pdfmark/cover.ms contrib/pdfmark/pdfmark.ms \
+       contrib/pdfmark/ChangeLog contrib/pdfmark/README \
+       contrib/pdfmark/PROBLEMS contrib/pdfmark/TODO \
+       contrib/pdfmark/pdfroff.1.man contrib/pdfmark/pdfroff.sh \
+       contrib/pic2graph/pic2graph.sh \
+       contrib/pic2graph/pic2graph.1.man $(am__append_13) \
+       doc/automake.mom $(am__append_16) doc/gnu.xpm doc/fixinfo.sh \
+       doc/txi-en.tex doc/groff.texi doc/fdl.texi doc/gnu.xpm \
+       $(DEVX100FONTS) $(DEVX10012FONTS) $(DEVX75FONTS) \
+       $(DEVX7512FONTS) font/devascii/R.proto \
+       font/devascii/DESC.proto font/devcp1047/R.proto \
+       font/devcp1047/DESC.proto $(DEVDVIFONTFILES) $(DEVDVIGENFILES) \
+       font/devdvi/DESC.in font/devhtml/R.proto \
+       font/devhtml/DESC.proto font/devhtml/R.in \
+       font/devlatin1/R.proto font/devlatin1/DESC.proto \
+       $(DEVLBPFONTFILES) font/devlbp/DESC.in font/devlj4/DESC.in \
+       font/devpdf/DESC.in font/devpdf/Foundry.in \
+       font/devpdf/util/BuildFoundries.pl font/devps/symbolmap \
+       font/devps/DESC.in font/devps/prologue.ps \
+       font/devps/psstrip.sed font/devps/symbol.afm \
+       font/devps/symbolsl.ps font/devps/zapfdr.afm \
+       font/devps/zapfdr.ps font/devps/generate/freeeuro.sfd \
+       font/devps/generate/make-zapfdr \
+       font/devps/generate/symbolsl.awk \
+       font/devps/generate/sfdtopfa.pe font/devps/generate/zapfdr.sed \
+       font/devutf8/R.proto font/devutf8/DESC.proto \
+       font/devutf8/NOTES font/devutf8/R.in $(GENFONTSSH) \
+       $(GENDESCSH) man/groff_font.5.man man/groff_out.5.man \
+       man/groff_tmac.5.man man/ditroff.7.man man/groff_char.7.man \
+       man/groff_diff.7.man man/groff.7.man man/roff.7.man \
+       src/libs/libgroff/mkstemp.cpp src/libs/libgroff/fmod.c \
+       src/libs/libgroff/getcwd.c src/libs/libgroff/putenv.c \
+       src/libs/libgroff/strcasecmp.c src/libs/libgroff/strerror.c \
+       src/libs/libgroff/strncasecmp.c src/libs/libgroff/strtol.c \
+       src/libs/libgroff/config.charset src/libs/libgroff/ref-add.sin \
+       src/libs/libgroff/ref-del.sin src/libs/libgroff/make-uniuni \
+       src/devices/grodvi/grodvi.1.man \
+       src/devices/grohtml/grohtml.1.man \
+       src/devices/grolbp/grolbp.1.man \
+       src/devices/grolj4/grolj4.1.man \
+       src/devices/grolj4/lj4_font.5.man src/devices/gropdf/TODO \
+       src/devices/gropdf/gropdf.pl src/devices/gropdf/pdfmom.pl \
+       src/devices/gropdf/gropdf.1.man \
+       src/devices/gropdf/pdfmom.1.man src/devices/grops/grops.1.man \
+       src/devices/grops/psfig.diff src/devices/grops/TODO \
+       src/devices/grotty/grotty.1.man src/devices/grotty/TODO \
+       $(am__append_19) src/devices/xditview/ad2c \
+       src/devices/xditview/ChangeLog src/devices/xditview/DESC.in \
+       src/devices/xditview/FontMap \
+       src/devices/xditview/GXditview-color.ad \
+       src/devices/xditview/GXditview.ad src/devices/xditview/README \
+       src/devices/xditview/TODO src/devices/xditview/gray1.bm \
+       src/devices/xditview/gray2.bm src/devices/xditview/gray3.bm \
+       src/devices/xditview/gray4.bm src/devices/xditview/gray5.bm \
+       src/devices/xditview/gray6.bm src/devices/xditview/gray7.bm \
+       src/devices/xditview/gray8.bm src/devices/xditview/xdit.bm \
+       src/devices/xditview/xdit_mask.bm \
+       src/devices/xditview/gxditview.1.man src/preproc/eqn/TODO \
+       src/preproc/eqn/neqn.sh src/preproc/eqn/eqn.1.man \
+       src/preproc/eqn/neqn.1.man src/preproc/grn/README \
+       src/preproc/grn/grn.1.man src/preproc/pic/pic.1.man \
+       src/preproc/pic/TODO src/preproc/preconv/preconv.1.man \
+       src/preproc/refer/TODO src/preproc/refer/refer.1.man \
+       src/preproc/soelim/TODO src/preproc/soelim/soelim.1.man \
+       src/preproc/tbl/tbl.1.man src/roff/groff/groff.1.man \
+       src/roff/grog/grog.1.man src/roff/grog/grog.pl \
+       src/roff/nroff/nroff.1.man src/roff/nroff/nroff.sh \
+       src/roff/troff/column.cpp src/roff/troff/troff.1.man \
+       src/roff/troff/TODO src/utils/addftinfo/addftinfo.1.man \
+       src/utils/afmtodit/afmtodit.1.man \
+       src/utils/afmtodit/afmtodit.pl \
+       src/utils/afmtodit/afmtodit.tables \
+       src/utils/afmtodit/make-afmtodit-tables \
+       src/utils/hpftodit/hpftodit.1.man \
+       src/utils/indxbib/indxbib.1.man src/utils/indxbib/eign \
+       src/utils/lkbib/lkbib.1.man src/utils/lookbib/lookbib.1.man \
+       src/utils/pfbtops/pfbtops.1.man \
+       src/utils/tfmtodit/tfmtodit.1.man \
+       src/utils/xtotroff/xtotroff.1.man tmac/fixmacros.sed \
+       tmac/groff_ms.7.man tmac/groff_man.7.man tmac/groff_me.7.man \
+       tmac/groff_mdoc.7.man tmac/groff_trace.7.man \
+       tmac/groff_www.7.man tmac/hyphenex.pl tmac/LOCALIZATION \
+       tmac/man.ultrix tmac/psfig.tmac tmac/ptx.tmac tmac/strip.sed \
+       tmac/TESTING-HINTS tmac/TODO tmac/www.tmac.in BUG-REPORT \
+       ChangeLog.115 ChangeLog.116 ChangeLog.117 ChangeLog.118 \
+       ChangeLog.119 ChangeLog.120 ChangeLog.121 FDL FOR-RELEASE \
+       gendef.sh INSTALL.REPO INSTALL.extra LICENSES MANIFEST \
+       mdate.pl MORE.STUFF PROBLEMS PROJECTS README.MinGW arch/djgpp \
+       font/util/make-Rproto makevarescape.sed $(top_srcdir)/.version
+FONTFILES = 
+PREFIXMAN1 = src/preproc/eqn/eqn.1 src/preproc/eqn/neqn.1 \
+       src/preproc/grn/grn.1 src/preproc/pic/pic.1 \
+       src/preproc/refer/refer.1 src/preproc/soelim/soelim.1 \
+       src/preproc/tbl/tbl.1 src/roff/nroff/nroff.1 \
+       src/roff/troff/troff.1 src/utils/indxbib/indxbib.1 \
+       src/utils/lookbib/lookbib.1
+man1_MANS = contrib/chem/chem.1 contrib/eqn2graph/eqn2graph.1 \
+       contrib/gdiffmk/gdiffmk.1 contrib/glilypond/glilypond.1 \
+       contrib/gperl/gperl.1 contrib/gpinyin/gpinyin.1 \
+       contrib/grap2graph/grap2graph.1 contrib/groffer/groffer.1 \
+       contrib/groffer/roff2dvi.1 contrib/groffer/roff2html.1 \
+       contrib/groffer/roff2pdf.1 contrib/groffer/roff2ps.1 \
+       contrib/groffer/roff2text.1 contrib/groffer/roff2x.1 \
+       contrib/mm/mmroff.1 contrib/pdfmark/pdfroff.1 \
+       contrib/pic2graph/pic2graph.1 src/devices/grodvi/grodvi.1 \
+       src/devices/grohtml/grohtml.1 src/devices/grolbp/grolbp.1 \
+       src/devices/grolj4/grolj4.1 src/devices/gropdf/gropdf.1 \
+       src/devices/gropdf/pdfmom.1 src/devices/grops/grops.1 \
+       src/devices/grotty/grotty.1 $(am__append_22) \
+       src/preproc/preconv/preconv.1 src/roff/groff/groff.1 \
+       src/roff/grog/grog.1 src/utils/addftinfo/addftinfo.1 \
+       src/utils/afmtodit/afmtodit.1 src/utils/hpftodit/hpftodit.1 \
+       src/utils/lkbib/lkbib.1 src/utils/pfbtops/pfbtops.1 \
+       src/utils/tfmtodit/tfmtodit.1 $(am__append_24) \
+       $(am__append_25)
+man5_MANS = contrib/groff_filenames/groff_filenames.5 man/groff_font.5 \
+       man/groff_out.5 man/groff_tmac.5 src/devices/grolj4/lj4_font.5
+man7_MANS = contrib/hdtbl/groff_hdtbl.7 contrib/mm/groff_mm.7 \
+       contrib/mm/groff_mmse.7 contrib/mom/groff_mom.7 man/ditroff.7 \
+       man/groff_char.7 man/groff_diff.7 man/groff.7 man/roff.7 \
+       tmac/groff_ms.7 tmac/groff_man.7 tmac/groff_me.7 \
+       tmac/groff_mdoc.7 tmac/groff_trace.7 tmac/groff_www.7
+
+# for lex/yacc
+AM_YFLAGS = -d -v
+
+# Rule to generate ps and roff files
+
+# Rule to generated .pdf files from .mom files
+SUFFIXES = .roff .in .ps .mom .pdf .me .ms .ps .html .txt .texi .dvi \
+       .pdf .xhtml .man
+
+# tests launched by make check
+check_SCRIPTS = 
+TESTS = contrib/gdiffmk/tests/gdiffmk_tests.sh $(am__append_5) \
+       $(am__append_8)
+AM_TESTS_ENVIRONMENT = \
+  abs_top_srcdir=$(abs_top_srcdir) \
+  abs_top_builddir=$(abs_top_builddir) \
+  export abs_top_srcdir abs_top_builddir;
+
+
+# We use Automake's Uniform Naming Scheme.
+#
+# prefixexecbin_PROGRAMS is the list of programs that may have a
+# NAMEPREFIX if an existing non-GNU troff system was detected.
+#
+# This is done by the m4 macro GROFF_G that checks for the presence of
+# GNU Troff built-in \n[.g] macro. If a Unix Troff binary was
+# detected, the following programs and scripts names will have a 'g'
+# prefix: chem, tbl, eqn, neqn, pic, soleimm grn, refer, lookbib,
+# troff, nroff. Also, PROG_PREFIX will be set to 'g' in the generated
+# header defs.h so that these programs could be called correctly.
+#
+# prefixexecbindir is used to temporary install these programs. They
+# are then moved to bindir during the install-exec-hook.  Same thing
+# for the scripts.
+NAMEPREFIX = $(g)
+prefixexecbin_SCRIPTS = chem neqn nroff
+@USEPROGRAMPREFIX_FALSE@prefixexecbindir = $(bindir)
+# We use datadir because the uninstall rule for the PROGRAMS attempt
+# to cd into prefixexecbindir, and thus if prefixexecbindir is removed
+# two consecutive uninstall would fail
+@USEPROGRAMPREFIX_TRUE@prefixexecbindir = $(datadir)
+
+# Path to binaries and flags used by contribs and doc to generated doc.
+# These may be overridden if cross-compiling.
+GROFFBIN = $(abs_top_builddir)/groff
+GROFF_BIN_PATH = $(abs_top_builddir)
+PDFMOMBIN = $(abs_top_builddir)/pdfmom
+# The second directories are needed for the case "cd build; ../configure".
+FFLAG = -F$(abs_top_builddir)/font -F$(abs_top_srcdir)/font
+TFLAG = -M$(abs_top_builddir)/tmac -M$(abs_top_srcdir)/tmac
+
+# make builtin variable RM
+@MAKE_DONT_HAVE_RM_TRUE@RM = rm -f
+
+# 'VERSION' is generated by gnulib script git-version-gen, using the
+# command 'git describe':
+#
+# - From a git repository: if the current commit corresponds to a
+#   tag, then 'VERSION' is simply the tag (e.g. 1.22.3).  Otherwise
+#   'VERSION' has the following format:
+#     <tag>-<nb_commits>-<commit>
+#
+#   With:
+#     . tag: the most recent tag reachable from the current commit
+#     . nb_commits: number of commits between the most recent tag and
+#       the current commit.
+#     . current commit, abbreviated.
+#   For example: 1.22.3.real.434-5aafd
+#   The version is stored in .version.
+#
+# - From a tarball, the version is taken from .tarball-version
+#
+# REVISION is the full revision given by git-version-gen, which can
+# have non-alphanumeric symbols.
+#
+# Also see configure.ac for the related SHORT_VERSION macro.
+MAJOR_VERSION = `echo $(VERSION) | cut -d . -f 1`
+MINOR_VERSION = `echo $(VERSION) | cut -d . -f 2`
+REVISION = `echo $(VERSION) | cut -d . -f 3`
+lib_libgnu_a_SOURCES = lib/localcharset.c lib/math.c \
+       lib/printf-frexp.c lib/printf-frexpl.c lib/size_max.h \
+       $(am__append_1) lib/wctype-h.c lib/xsize.h lib/xsize.c
+lib_libgnu_a_LIBADD = $(gl_LIBOBJS)
+lib_libgnu_a_DEPENDENCIES = $(gl_LIBOBJS)
+EXTRA_lib_libgnu_a_SOURCES = lib/float.c lib/itold.c lib/fprintf.c \
+       lib/frexp.c lib/frexp.c lib/frexpl.c lib/fseterr.c lib/isnan.c \
+       lib/isnand.c lib/isnan.c lib/isnanf.c lib/isnan.c lib/isnanl.c \
+       lib/memchr.c lib/printf-frexp.c lib/signbitd.c lib/signbitf.c \
+       lib/signbitl.c lib/snprintf.c lib/asnprintf.c \
+       lib/printf-args.c lib/printf-parse.c lib/vasnprintf.c \
+       lib/vsnprintf.c lib/wcwidth.c
+
+# Use this preprocessor expression to decide whether #include_next works.
+# Do not rely on a 'configure'-time test for this, since the expression
+# might appear in an installed header, which is used by some other compiler.
+HAVE_INCLUDE_NEXT = lib/(__GNUC__ lib/|| lib/60000000 lib/<= lib/__DECC_VER)
+
+# Because this Makefile snippet defines a variable used by other
+# gnulib Makefile snippets, it must be present in all makefiles that
+# need it. This is ensured by the applicability 'all' defined above.
+ARG_NONNULL_H = $(top_srcdir)/lib/arg-nonnull.h
+
+# Because this Makefile snippet defines a variable used by other
+# gnulib Makefile snippets, it must be present in all makefiles that
+# need it. This is ensured by the applicability 'all' defined above.
+CXXDEFS_H = $(top_srcdir)/lib/c++defs.h
+
+# Because this Makefile snippet defines a variable used by other
+# gnulib Makefile snippets, it must be present in all makefiles that
+# need it. This is ensured by the applicability 'all' defined above.
+WARN_ON_USE_H = $(top_srcdir)/lib/warn-on-use.h
+
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Last update: 13 Aug 2015
+#
+# This file is part of groff.
+#
+# groff 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.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+#
+# mingw.am
+#
+WINSCRIPTS = \
+  arch/mingw/afmtodit.cmd \
+  arch/mingw/chem.cmd \
+  arch/mingw/gperl.cmd \
+  arch/mingw/gpinyin.cmd \
+  arch/mingw/grap2graph.cmd \
+  arch/mingw/groffer.cmd \
+  arch/mingw/grog.cmd \
+  arch/mingw/gropdf.cmd \
+  arch/mingw/mmroff.cmd \
+  arch/mingw/neqn.cmd \
+  arch/mingw/pdfmom.cmd \
+  arch/mingw/roff2dvi.cmd \
+  arch/mingw/roff2html.cmd \
+  arch/mingw/roff2pdf.cmd \
+  arch/mingw/roff2ps.cmd \
+  arch/mingw/roff2text.cmd \
+  arch/mingw/roff2x.cmd
+
+chem_srcdir = $(top_srcdir)/contrib/chem
+
+# Files installed in $(datasubdir)/pic
+chempicdir = $(datasubdir)/pic
+dist_chempic_DATA = contrib/chem/chem.pic
+CHEM_GENEXAMPLES = contrib/chem/examples/README
+CHEM_EXAMPLES = \
+  contrib/chem/examples/atp.chem \
+  contrib/chem/examples/cholesterin.chem \
+  contrib/chem/examples/ethamivan.chem \
+  contrib/chem/examples/lsd.chem \
+  contrib/chem/examples/morphine.chem \
+  contrib/chem/examples/penicillin.chem \
+  contrib/chem/examples/reserpine.chem
+
+
+# Files installed in $(exampledir)/chem
+@BUILD_EXAMPLES_TRUE@chemexampledir = $(exampledir)/chem
+@BUILD_EXAMPLES_TRUE@nodist_chemexample_DATA = $(CHEM_GENEXAMPLES)
+@BUILD_EXAMPLES_TRUE@dist_chemexample_DATA = $(CHEM_EXAMPLES)
+
+# Files installed in $(exampledir)/chem/122. All the .chem files in 122 are 
+# lazily installed by the local install target
+@BUILD_EXAMPLES_TRUE@chemexample122dir = $(chemexampledir)/122
+@BUILD_EXAMPLES_TRUE@nodist_chemexample122_DATA = contrib/chem/examples/122/README
+eqn2graph_srcdir = $(top_srcdir)/contrib/eqn2graph
+
+########################################################################
+gdiffmk_srcdir = $(top_srcdir)/contrib/gdiffmk
+
+########################################################################
+glilypond_srcdir = $(top_srcdir)/contrib/glilypond
+
+# files going to lib directory '$(glilypond_dir)'
+# TODO glilypond_dir is subsitued by configure.ac, check if this could be removed
+glilyponddir = $(glilypond_dir)
+dist_glilypond_DATA = \
+  contrib/glilypond/subs.pl \
+  contrib/glilypond/oop_fh.pl \
+  contrib/glilypond/args.pl
+
+gpinyin_srcdir = $(top_srcdir)/contrib/gpinyin
+gpinyindir = $(gpinyin_dir)
+dist_gpinyin_DATA = contrib/gpinyin/subs.pl
+grap2graph_srcdir = $(top_srcdir)/contrib/grap2graph
+groffer_srcdir = $(top_srcdir)/contrib/groffer
+# generated programs
+ROFF2PROGS = \
+  roff2dvi \
+  roff2html \
+  roff2pdf \
+  roff2ps \
+  roff2text \
+  roff2x
+
+
+# Generated man templates
+ROFF2MAN = \
+  contrib/groffer/roff2dvi.1.man \
+  contrib/groffer/roff2html.1.man \
+  contrib/groffer/roff2pdf.1.man \
+  contrib/groffer/roff2ps.1.man \
+  contrib/groffer/roff2text.1.man \
+  contrib/groffer/roff2x.1.man
+
+GROFFER_PERL = \
+  contrib/groffer/main_subs.pl \
+  contrib/groffer/man.pl \
+  contrib/groffer/split_env.sh \
+  contrib/groffer/subs.pl
+
+GROFFER_REST = \
+  contrib/groffer/roff2.1.man \
+  contrib/groffer/version.sh \
+  contrib/groffer/groffer.1.man \
+  contrib/groffer/groffer.pl \
+  contrib/groffer/roff2.pl
+
+
+# groffer_dir is set by a m4 macro
+grofferdir = $(groffer_dir)
+groffer_DATA = $(GROFFER_PERL) contrib/groffer/version.sh
+hdtbl_srcdir = $(top_srcdir)/contrib/hdtbl
+hdtbl_builddir = $(top_builddir)/contrib/hdtbl
+
+# Groff command used to generate .ps files
+HDTBL_TFLAG = -M$(hdtbl_srcdir) -M$(hdtbl_builddir)
+HDTBL_PFLAG = -t -p -e -U
+HDTBLGROFF = \
+  GROFF_COMMAND_PREFIX= \
+  GROFF_BIN_PATH="$(GROFF_BIN_PATH)" \
+  $(GROFFBIN) $(FFLAG) $(TFLAG) $(HDTBL_TFLAG) $(HDTBL_PFLAG)
+
+
+# Files installed in $(tmacdir).
+# These files are generated with 'strip.sed' from their unstripped source file
+# equivalent (e.g. hdtbl.tmac is generated from hdtbl.tmac-u)
+HDTBLSTRIPFILES = \
+  contrib/hdtbl/hdtbl.tmac \
+  contrib/hdtbl/hdmisc.tmac
+
+hdtbltmacdir = $(tmacdir)
+hdtbltmac_DATA = $(HDTBLSTRIPFILES)
+
+# Files installed in $(exampledir)/hdtbl.  HDTBLEXAMPLEFILES are
+# located in the source tree, while HDTBLPROCESSEDEXAMPLEFILES are
+# generated in the build tree.
+
+# These files are handled by the '.in.roff' rule.
+HDTBLGENFILES = \
+  contrib/hdtbl/examples/fonts_n.roff \
+  contrib/hdtbl/examples/fonts_x.roff
+
+HDTBLEXAMPLEFILES = \
+  contrib/hdtbl/examples/common.roff \
+  contrib/hdtbl/examples/chess_board.roff \
+  contrib/hdtbl/examples/color_boxes.roff \
+  contrib/hdtbl/examples/color_nested_tables.roff \
+  contrib/hdtbl/examples/color_table_cells.roff \
+  contrib/hdtbl/examples/color_transitions.roff \
+  contrib/hdtbl/examples/col_rowspan_colors.roff \
+  contrib/hdtbl/examples/mixed_pickles.roff \
+  contrib/hdtbl/examples/rainbow.roff \
+  contrib/hdtbl/examples/short_reference.roff
+
+HDTBLPROCESSEDEXAMPLEFILES = \
+  contrib/hdtbl/examples/chess_board.ps \
+  contrib/hdtbl/examples/color_boxes.ps \
+  contrib/hdtbl/examples/color_nested_tables.ps \
+  contrib/hdtbl/examples/color_table_cells.ps \
+  contrib/hdtbl/examples/color_transitions.ps \
+  contrib/hdtbl/examples/col_rowspan_colors.ps \
+  contrib/hdtbl/examples/fonts_n.ps \
+  contrib/hdtbl/examples/fonts_x.ps \
+  contrib/hdtbl/examples/mixed_pickles.ps \
+  contrib/hdtbl/examples/rainbow.ps \
+  contrib/hdtbl/examples/short_reference.ps
+
+hdtblexampledir = $(exampledir)/hdtbl
+@BUILD_EXAMPLES_TRUE@dist_hdtblexample_DATA = $(HDTBLEXAMPLEFILES)
+@BUILD_EXAMPLES_TRUE@nodist_hdtblexample_DATA = \
+@BUILD_EXAMPLES_TRUE@  $(HDTBLGENFILES) \
+@BUILD_EXAMPLES_TRUE@  $(HDTBLPROCESSEDEXAMPLEFILES) \
+@BUILD_EXAMPLES_TRUE@  gnu.eps
+
+@BUILD_EXAMPLES_TRUE@hdtbl_TESTS = contrib/hdtbl/examples/test-hdtbl.sh
+mm_srcdir = $(top_srcdir)/contrib/mm
+mm_builddir = $(top_builddir)/contrib/mm
+
+# Files installed in $(tmacdir)/mm
+MMFILES = \
+  contrib/mm/mm/0.MT \
+  contrib/mm/mm/5.MT \
+  contrib/mm/mm/4.MT \
+  contrib/mm/mm/ms.cov \
+  contrib/mm/mm/se_ms.cov
+
+mmdir = $(tmacdir)/mm
+dist_mm_DATA = $(MMFILES)
+
+# Files installed in $(tmacdir)
+tmacmmdir = $(tmacdir)
+dist_tmacmm_DATA = contrib/mm/refer-mm.tmac
+MMEXAMPLEFILES = \
+  contrib/mm/examples/letter.mm
+
+mmexampledir = $(exampledir)/mm
+dist_mmexample_DATA = $(MMEXAMPLEFILES)
+
+# Local configuration files with default values.
+MMLOCALE = \
+  locale \
+  se_locale
+
+mom_srcdir = $(top_srcdir)/contrib/mom
+
+# pdfmom command used to generated .pdf
+MOM_TFLAG = -M$(mom_srcdir)
+MOM_KFLAG = -k -p -e -t
+MOMPDFMOM = \
+  GROFF_COMMAND_PREFIX= \
+  GROFF_BIN_PATH="$(GROFF_BIN_PATH)" \
+  PDFMOM_BIN_PATH="$(top_builddir)" \
+  $(PDFMOMBIN) $(FFLAG) $(TFLAG) $(MOM_TFLAG) $(MOM_KFLAG)
+
+
+# Files installed in $(tmacdir).
+# MOMNORMALFILES are located in the source tree.
+MOMNORMALFILES = \
+  contrib/mom/mom.tmac \
+  contrib/mom/om.tmac
+
+momtmacdir = $(tmacdir)
+dist_momtmac_DATA = $(MOMNORMALFILES)
+
+# Files installed in htmldocdir/mom
+@INSTALL_SHIPPED_HTML_TRUE@MOMHTMLDOCFILES = \
+@INSTALL_SHIPPED_HTML_TRUE@  contrib/mom/momdoc/stylesheet.css \
+@INSTALL_SHIPPED_HTML_TRUE@  contrib/mom/momdoc/appendices.html \
+@INSTALL_SHIPPED_HTML_TRUE@  contrib/mom/momdoc/color.html \
+@INSTALL_SHIPPED_HTML_TRUE@  contrib/mom/momdoc/cover.html \
+@INSTALL_SHIPPED_HTML_TRUE@  contrib/mom/momdoc/definitions.html \
+@INSTALL_SHIPPED_HTML_TRUE@  contrib/mom/momdoc/docelement.html \
+@INSTALL_SHIPPED_HTML_TRUE@  contrib/mom/momdoc/docprocessing.html \
+@INSTALL_SHIPPED_HTML_TRUE@  contrib/mom/momdoc/goodies.html \
+@INSTALL_SHIPPED_HTML_TRUE@  contrib/mom/momdoc/graphical.html \
+@INSTALL_SHIPPED_HTML_TRUE@  contrib/mom/momdoc/headfootpage.html \
+@INSTALL_SHIPPED_HTML_TRUE@  contrib/mom/momdoc/images.html \
+@INSTALL_SHIPPED_HTML_TRUE@  contrib/mom/momdoc/inlines.html \
+@INSTALL_SHIPPED_HTML_TRUE@  contrib/mom/momdoc/intro.html \
+@INSTALL_SHIPPED_HTML_TRUE@  contrib/mom/momdoc/letters.html \
+@INSTALL_SHIPPED_HTML_TRUE@  contrib/mom/momdoc/macrolist.html \
+@INSTALL_SHIPPED_HTML_TRUE@  contrib/mom/momdoc/rectoverso.html \
+@INSTALL_SHIPPED_HTML_TRUE@  contrib/mom/momdoc/refer.html \
+@INSTALL_SHIPPED_HTML_TRUE@  contrib/mom/momdoc/reserved.html \
+@INSTALL_SHIPPED_HTML_TRUE@  contrib/mom/momdoc/tables-of-contents.html \
+@INSTALL_SHIPPED_HTML_TRUE@  contrib/mom/momdoc/toc.html \
+@INSTALL_SHIPPED_HTML_TRUE@  contrib/mom/momdoc/typesetting.html \
+@INSTALL_SHIPPED_HTML_TRUE@  contrib/mom/momdoc/using.html \
+@INSTALL_SHIPPED_HTML_TRUE@  contrib/mom/momdoc/version-2.html
+
+@INSTALL_SHIPPED_HTML_TRUE@momhtmldir = $(htmldocdir)/mom
+@INSTALL_SHIPPED_HTML_TRUE@momhtml_DATA = $(MOMHTMLDOCFILES)
+
+# Files installed in $(examplesdir)/mom.  MOMEXAMPLEFILES are located
+# in the source tree, while MOMPROCESSEDEXAMPLEFILES are generated in
+# the build tree.
+MOMEXAMPLEFILES = \
+  contrib/mom/examples/letter.mom \
+  contrib/mom/examples/mom-pdf.mom \
+  contrib/mom/examples/mon_premier_doc.mom \
+  contrib/mom/examples/sample_docs.mom \
+  contrib/mom/examples/typesetting.mom \
+  contrib/mom/examples/README.txt \
+  contrib/mom/examples/README-fr.txt \
+  contrib/mom/examples/elvis_syntax \
+  contrib/mom/examples/elvis_syntax.new \
+  contrib/mom/examples/penguin.ps \
+  contrib/mom/examples/penguin.pdf \
+  contrib/mom/examples/mom.vim \
+  contrib/mom/examples/slide-demo.mom
+
+@BUILD_EXAMPLES_TRUE@momexampledir = $(exampledir)/mom
+@BUILD_EXAMPLES_TRUE@dist_momexample_DATA = $(MOMEXAMPLEFILES)
+@BUILD_PDFEXAMPLES_TRUE@MOMPROCESSEDEXAMPLEFILES = \
+@BUILD_PDFEXAMPLES_TRUE@  contrib/mom/examples/letter.pdf \
+@BUILD_PDFEXAMPLES_TRUE@  contrib/mom/examples/mom-pdf.pdf \
+@BUILD_PDFEXAMPLES_TRUE@  contrib/mom/examples/mon_premier_doc.pdf \
+@BUILD_PDFEXAMPLES_TRUE@  contrib/mom/examples/sample_docs.pdf \
+@BUILD_PDFEXAMPLES_TRUE@  contrib/mom/examples/typesetting.pdf \
+@BUILD_PDFEXAMPLES_TRUE@  contrib/mom/examples/slide-demo.pdf
+
+@BUILD_PDFEXAMPLES_TRUE@momprocessedexampledir = $(exampledir)/mom
+@BUILD_PDFEXAMPLES_TRUE@nodist_momprocessedexample_DATA = $(MOMPROCESSEDEXAMPLEFILES)
+
+# Small test suite on mom examples
+@BUILD_PDFEXAMPLES_TRUE@@HAVE_PDFTOOLS_TRUE@mom_TESTS = contrib/mom/examples/tests-mom.sh
+
+# For this list of files we add a symlink from $(exampledir)/mom to $(pdfdocdir)
+PDFDOCFILE = mom-pdf.pdf
+pdfmark_srcdir = $(top_srcdir)/contrib/pdfmark
+pdfmark_builddir = $(top_builddir)/contrib/pdfmark
+
+# Files installed in $(tmacdir)
+TMACFILES = \
+  contrib/pdfmark/pdfmark.tmac \
+  contrib/pdfmark/spdf.tmac
+
+pdfmarktmacdir = $(tmacdir)
+dist_pdfmarktmac_DATA = $(TMACFILES)
+
+# Files installed in $(pdfdocdir)
+PDFDOCFILES = \
+  contrib/pdfmark/pdfmark.pdf
+
+@BUILD_PDFDOC_TRUE@pdfmarkpdfdocdir = $(pdfdocdir)
+@BUILD_PDFDOC_TRUE@nodist_pdfmarkpdfdoc_DATA = $(PDFDOCFILES)
+PDFMARK_PFLAG = -dpaper=$(PAGE) -P-p$(PAGE)
+PDFMARK_TFLAG = -M$(pdfmark_srcdir)
+PDFROFF = \
+  GROFF_TMPDIR=. \
+  GROFF_COMMAND_PREFIX= \
+  GROFF_BIN_DIR="$(GROFF_BIN_DIR)" \
+  GROFF_BIN_PATH="$(GROFF_BIN_PATH)" \
+  ./pdfroff --keep-temporary-files \
+  $(FFLAG) $(TFLAG) $(PDFMARK_TFLAG) $(PDFMARK_PFLAG)
+
+pic2graph_srcdir = $(top_srcdir)/contrib/pic2graph
+doc_srcdir = $(abs_top_srcdir)/doc
+doc_builddir = $(abs_top_builddir)/doc
+DOC_SED = $(SED) -e "s;[@]VERSION[@];$(VERSION);"
+DOC_GROFF_ONLY = \
+  GROFF_COMMAND_PREFIX= \
+  GROFF_BIN_PATH="$(GROFF_BIN_PATH)" \
+  $(GROFFBIN) -I$(abs_top_builddir) -M $(doc_srcdir) \
+       $(TFLAG) $(FFLAG) -Upet -ww 
+
+DOC_GROFF = $(DOC_SED) $< | $(DOC_GROFF_ONLY)
+
+# Other doc, installed in $(docdir)
+# Files located in the source tree
+@BUILD_OTHERDOC_TRUE@DOCFILES = \
+@BUILD_OTHERDOC_TRUE@  doc/meref.me \
+@BUILD_OTHERDOC_TRUE@  doc/meintro.me \
+@BUILD_OTHERDOC_TRUE@  doc/meintro_fr.me \
+@BUILD_OTHERDOC_TRUE@  doc/pic.ms
+
+# Files generated in the build tree
+@BUILD_OTHERDOC_TRUE@PROCESSEDDOCFILES = \
+@BUILD_OTHERDOC_TRUE@  doc/meref.ps \
+@BUILD_OTHERDOC_TRUE@  doc/meintro.ps \
+@BUILD_OTHERDOC_TRUE@  doc/meintro_fr.ps \
+@BUILD_OTHERDOC_TRUE@  doc/pic.ps
+
+@BUILD_OTHERDOC_TRUE@otherdocdir = $(docdir)
+@BUILD_OTHERDOC_TRUE@dist_otherdoc_DATA = $(DOCFILES)
+@BUILD_OTHERDOC_TRUE@nodist_otherdoc_DATA = $(PROCESSEDDOCFILES)
+@BUILD_PDFDOC_TRUE@docpdfdocdir = $(pdfdocdir)
+@BUILD_PDFDOC_TRUE@nodist_docpdfdoc_DATA = doc/automake.pdf
+
+# GNU PIC html documentation, installed in $(htmldocdir)
+# Other pic*.html files are installed by the local rule
+@BUILD_HTML_TRUE@HTMLDOCFILES = \
+@BUILD_HTML_TRUE@  doc/pic.html
+
+@BUILD_HTML_TRUE@htmlpicdir = $(htmldocdir)
+@BUILD_HTML_TRUE@htmlpic_DATA = $(HTMLDOCFILES)
+@BUILD_HTML_TRUE@HTMLDOCFILESALL = pic*.html
+@BUILD_HTML_TRUE@HTMLDOCIMAGEFILES = pic*
+
+# Examples files, installed in $(exampledir)
+
+# source tree files
+EXAMPLEFILES = \
+  doc/webpage.ms \
+  doc/groff.css \
+  doc/grnexmpl.g \
+  doc/grnexmpl.me
+
+
+# Generated in the build tree
+@BUILD_EXAMPLES_TRUE@PROCESSEDEXAMPLEFILES = \
+@BUILD_EXAMPLES_TRUE@  doc/webpage.ps \
+@BUILD_EXAMPLES_TRUE@  doc/grnexmpl.ps
+
+@BUILD_EXAMPLES_TRUE@docexamplesdir = $(exampledir)
+@BUILD_EXAMPLES_TRUE@dist_docexamples_DATA = $(EXAMPLEFILES)
+@BUILD_EXAMPLES_TRUE@nodist_docexamples_DATA = $(PROCESSEDEXAMPLEFILES)
+
+# webpage.html is generated, webpage*.html files are installed by the local rule.
+@BUILD_HTMLEXAMPLES_TRUE@HTMLEXAMPLEFILES = doc/webpage.html
+@BUILD_HTMLEXAMPLES_TRUE@HTMLEXAMPLEFILESALL = webpage*.html
+@BUILD_HTMLEXAMPLES_TRUE@HTMLEXAMPLEIMAGEFILES = webpage*
+@BUILD_HTMLEXAMPLES_TRUE@htmlexamplesdir = $(exampledir)
+@BUILD_HTMLEXAMPLES_TRUE@nodist_htmlexamples_DATA = $(HTMLEXAMPLEFILES)
+imagedir = img
+htmldocimagedir = $(htmldocdir)/img
+exampleimagedir = $(exampledir)/img
+@BUILD_INFODOC_TRUE@groffinfodir = $(infodir)
+@BUILD_INFODOC_TRUE@groffpdfdir = $(infodir)
+
+# GNU Make has a built-in variable TEXI2DVI but it is not the case of
+# all 'make' implementation.  As it default to 'texi2dvi' we simply
+# redefine it here.
+TEXI2DVI = texi2dvi
+texi2dvi_missing = no
+DEVX100FONTS = \
+  font/devX100/DESC \
+  font/devX100/TR \
+  font/devX100/TI \
+  font/devX100/TB \
+  font/devX100/TBI \
+  font/devX100/CR \
+  font/devX100/CI \
+  font/devX100/CB \
+  font/devX100/CBI \
+  font/devX100/HR \
+  font/devX100/HI \
+  font/devX100/HB \
+  font/devX100/HBI \
+  font/devX100/NR \
+  font/devX100/NI \
+  font/devX100/NB \
+  font/devX100/NBI \
+  font/devX100/S
+
+@WITHOUT_X11_FALSE@devX100fontdir = $(fontdir)/devX100
+@WITHOUT_X11_FALSE@devX100font_DATA = $(DEVX100FONTS)
+DEVX10012FONTS = \
+  font/devX100-12/DESC \
+  font/devX100-12/TR \
+  font/devX100-12/TI \
+  font/devX100-12/TB \
+  font/devX100-12/TBI \
+  font/devX100-12/CR \
+  font/devX100-12/CI \
+  font/devX100-12/CB \
+  font/devX100-12/CBI \
+  font/devX100-12/HR \
+  font/devX100-12/HI \
+  font/devX100-12/HB \
+  font/devX100-12/HBI \
+  font/devX100-12/NR \
+  font/devX100-12/NI \
+  font/devX100-12/NB \
+  font/devX100-12/NBI \
+  font/devX100-12/S
+
+@WITHOUT_X11_FALSE@devX10012fontdir = $(fontdir)/devX100-12
+@WITHOUT_X11_FALSE@devX10012font_DATA = $(DEVX10012FONTS)
+DEVX75FONTS = \
+  font/devX75/DESC \
+  font/devX75/TR \
+  font/devX75/TI \
+  font/devX75/TB \
+  font/devX75/TBI \
+  font/devX75/CR \
+  font/devX75/CI \
+  font/devX75/CB \
+  font/devX75/CBI \
+  font/devX75/HR \
+  font/devX75/HI \
+  font/devX75/HB \
+  font/devX75/HBI \
+  font/devX75/NR \
+  font/devX75/NI \
+  font/devX75/NB \
+  font/devX75/NBI \
+  font/devX75/S
+
+@WITHOUT_X11_FALSE@devX75fontdir = $(fontdir)/devX75
+@WITHOUT_X11_FALSE@devX75font_DATA = $(DEVX75FONTS)
+DEVX7512FONTS = \
+  font/devX75-12/DESC \
+  font/devX75-12/TR \
+  font/devX75-12/TI \
+  font/devX75-12/TB \
+  font/devX75-12/TBI \
+  font/devX75-12/CR \
+  font/devX75-12/CI \
+  font/devX75-12/CB \
+  font/devX75-12/CBI \
+  font/devX75-12/HR \
+  font/devX75-12/HI \
+  font/devX75-12/HB \
+  font/devX75-12/HBI \
+  font/devX75-12/NR \
+  font/devX75-12/NI \
+  font/devX75-12/NB \
+  font/devX75-12/NBI \
+  font/devX75-12/S
+
+@WITHOUT_X11_FALSE@devX7512fontdir = $(fontdir)/devX75-12
+@WITHOUT_X11_FALSE@devX7512font_DATA = $(DEVX7512FONTS)
+devascii_srcdir = $(top_srcdir)/font/devascii
+DEVASCIIFONTS = R I B BI
+DEVASCIIFONTSFILES = \
+  font/devascii/R font/devascii/I font/devascii/B font/devascii/BI
+
+DEVASCIIRES = 240
+DEVASCIICPI = 10
+DEVASCIILPI = 6
+devasciifontdir = $(fontdir)/devascii
+devasciifont_DATA = $(DEVASCIIFONTSFILES) font/devascii/DESC
+devcp1047_srcdir = $(top_srcdir)/font/devcp1047
+DEVCP1047FONTS = R I B BI
+DEVCP1047FONTSFILES = \
+  font/devcp1047/R font/devcp1047/I font/devcp1047/B font/devcp1047/BI
+
+DEVCP1047RES = 240
+DEVCP1047CPI = 10
+DEVCP1047LPI = 6
+devcp1047fontdir = $(fontdir)/devcp1047
+devcp1047font_DATA = $(DEVCP1047FONTSFILES) font/devcp1047/DESC
+devdvi_srcdir = $(top_srcdir)/font/devdvi
+DEVDVIFONTFILES = \
+  font/devdvi/TR \
+  font/devdvi/TI \
+  font/devdvi/TB \
+  font/devdvi/TBI \
+  font/devdvi/CW \
+  font/devdvi/CWI \
+  font/devdvi/HR \
+  font/devdvi/HI \
+  font/devdvi/HB \
+  font/devdvi/HBI \
+  font/devdvi/TREC \
+  font/devdvi/TIEC \
+  font/devdvi/TBEC \
+  font/devdvi/TBIEC \
+  font/devdvi/CWEC \
+  font/devdvi/CWIEC \
+  font/devdvi/HREC \
+  font/devdvi/HIEC \
+  font/devdvi/HBEC \
+  font/devdvi/HBIEC \
+  font/devdvi/TRTC \
+  font/devdvi/TITC \
+  font/devdvi/TBTC \
+  font/devdvi/TBITC \
+  font/devdvi/CWTC \
+  font/devdvi/CWITC \
+  font/devdvi/HRTC \
+  font/devdvi/HITC \
+  font/devdvi/HBTC \
+  font/devdvi/HBITC \
+  font/devdvi/MI \
+  font/devdvi/S \
+  font/devdvi/EX \
+  font/devdvi/SA \
+  font/devdvi/SB \
+  font/devdvi/SC
+
+devdvifontdir = $(fontdir)/devdvi
+devdvifont_DATA = $(DEVDVIFONTFILES) font/devdvi/DESC
+DEVDVIGENFILES = \
+  font/devdvi/generate/Makefile \
+  font/devdvi/generate/msam.map \
+  font/devdvi/generate/msbm.map \
+  font/devdvi/generate/texb.map \
+  font/devdvi/generate/texex.map \
+  font/devdvi/generate/texi.map \
+  font/devdvi/generate/texmi.map \
+  font/devdvi/generate/texr.map \
+  font/devdvi/generate/texsy.map \
+  font/devdvi/generate/textt.map \
+  font/devdvi/generate/textex.map \
+  font/devdvi/generate/ec.map \
+  font/devdvi/generate/tc.map \
+  font/devdvi/generate/CompileFonts
+
+devdvigendir = $(fontdir)/devdvi/generate
+devdvigen_DATA = $(DEVDVIGENFILES)
+devhtml_srcdir = $(top_srcdir)/font/devhtml
+DEVHTMLFONTS = R I B BI CR CI CB CBI S
+DEVHTMLFONTSFILES = \
+  font/devhtml/R \
+  font/devhtml/I \
+  font/devhtml/B \
+  font/devhtml/BI \
+  font/devhtml/CR \
+  font/devhtml/CI \
+  font/devhtml/CB \
+  font/devhtml/CBI \
+  font/devhtml/S
+
+DEVHTMLRES = 240
+DEVHTMLCPI = 10
+DEVHTMLLPI = 6
+devhtmlfontdir = $(fontdir)/devhtml
+devhtmlfont_DATA = $(DEVHTMLFONTSFILES) font/devhtml/DESC
+devlatin1_srcdir = $(top_srcdir)/font/devlatin1
+DEVLATIN1FONTS = R I B BI
+DEVLATIN1FONTSFILES = \
+  font/devlatin1/R font/devlatin1/I font/devlatin1/B font/devlatin1/BI
+
+DEVLATIN1RES = 240
+DEVLATIN1CPI = 10
+DEVLATIN1LPI = 6
+devlatin1fontdir = $(fontdir)/devlatin1
+devlatin1font_DATA = $(DEVLATIN1FONTSFILES) font/devlatin1/DESC
+LBPPRINT = $(PSPRINT)
+devlbp_srcdir = $(top_srcdir)/font/devlbp
+DEVLBPFONTFILES = \
+  font/devlbp/HB \
+  font/devlbp/HBI \
+  font/devlbp/HI \
+  font/devlbp/HR \
+  font/devlbp/HNB \
+  font/devlbp/HNBI \
+  font/devlbp/HNI \
+  font/devlbp/HNR \
+  font/devlbp/TB \
+  font/devlbp/TBI \
+  font/devlbp/TI \
+  font/devlbp/TR \
+  font/devlbp/CR \
+  font/devlbp/CB \
+  font/devlbp/CI \
+  font/devlbp/ER \
+  font/devlbp/EB \
+  font/devlbp/EI
+
+devlbpfontdir = $(fontdir)/devlbp
+devlbpfont_DATA = $(DEVLBPFONTFILES) font/devlbp/DESC
+devlj4_srcdir = $(top_srcdir)/font/devlj4
+LJ4RES = 1200
+LJ4PRINT = $(PSPRINT)
+DEVLJ4FONTFILES = \
+  font/devlj4/AB \
+  font/devlj4/ABI \
+  font/devlj4/AI \
+  font/devlj4/AR \
+  font/devlj4/ALBB \
+  font/devlj4/ALBR \
+  font/devlj4/AOB \
+  font/devlj4/AOI \
+  font/devlj4/AOR \
+  font/devlj4/CB \
+  font/devlj4/CBI \
+  font/devlj4/CI \
+  font/devlj4/CR \
+  font/devlj4/GB \
+  font/devlj4/GBI \
+  font/devlj4/GI \
+  font/devlj4/GR \
+  font/devlj4/LGB \
+  font/devlj4/LGI \
+  font/devlj4/LGR \
+  font/devlj4/OB \
+  font/devlj4/OBI \
+  font/devlj4/OI \
+  font/devlj4/OR \
+  font/devlj4/TB \
+  font/devlj4/TBI \
+  font/devlj4/TI \
+  font/devlj4/TR \
+  font/devlj4/TNRB \
+  font/devlj4/TNRBI \
+  font/devlj4/TNRI \
+  font/devlj4/TNRR \
+  font/devlj4/UB \
+  font/devlj4/UBI \
+  font/devlj4/UI \
+  font/devlj4/UR \
+  font/devlj4/UCB \
+  font/devlj4/UCBI \
+  font/devlj4/UCI \
+  font/devlj4/UCR \
+  font/devlj4/CLARENDON \
+  font/devlj4/CORONET \
+  font/devlj4/MARIGOLD \
+  font/devlj4/S \
+  font/devlj4/SYMBOL \
+  font/devlj4/WINGDINGS
+
+devlj4fontdir = $(fontdir)/devlj4
+dist_devlj4font_DATA = $(DEVLJ4FONTFILES)
+nodist_devlj4font_DATA = font/devlj4/DESC
+DEVLJ4GENFILES = \
+  font/devlj4/generate/Makefile \
+  font/devlj4/generate/special.map \
+  font/devlj4/generate/symbol.map \
+  font/devlj4/generate/text.map \
+  font/devlj4/generate/wingdings.map \
+  font/devlj4/generate/special.awk
+
+devlj4fontgendir = $(devlj4fontdir)/generate
+dist_devlj4fontgen_DATA = $(DEVLJ4GENFILES)
+devpdf_srcdir = $(top_srcdir)/font/devpdf
+GROFF_FONT_FILES = `cd $(top_builddir)/font/devpdf \
+  && grep -ls internalname [A-CEG-Z]*`
+
+ENC_FILES = `cd $(top_builddir)/font/devpdf; ls enc/*`
+MAP_FILES = `cd $(top_builddir)/font/devpdf; ls map/*`
+devpdffontdir = $(fontdir)/devpdf
+devpdffont_DATA = \
+  font/devpdf/DESC \
+  font/devpdf/Foundry
+
+devpdffontencdir = $(devpdffontdir)/enc
+devpdffontenc_DATA = font/devpdf/enc/text.enc
+devpdffontmapdir = $(devpdffontdir)/map
+DEVPDFFONTMAP_1 = \
+  font/devpdf/map/dingbats.map \
+  font/devpdf/map/symbolchars \
+  font/devpdf/map/textmap
+
+DEVPDFFONTMAP_2 = font/devpdf/map/symbolmap
+devpdffontmap_DATA = $(DEVPDFFONTMAP_1) $(DEVPDFFONTMAP_2)
+devps_srcdir = $(top_srcdir)/font/devps
+devps_builddir = $(top_builddir)/font/devps
+DEVPSFONTFILES = \
+  font/devps/S \
+  font/devps/SS \
+  font/devps/ZD \
+  font/devps/ZDR \
+  font/devps/ZCMI \
+  font/devps/AB \
+  font/devps/ABI \
+  font/devps/AI \
+  font/devps/AR \
+  font/devps/BMB \
+  font/devps/BMBI \
+  font/devps/BMI \
+  font/devps/BMR \
+  font/devps/CB \
+  font/devps/CBI \
+  font/devps/CI \
+  font/devps/CR \
+  font/devps/HB \
+  font/devps/HBI \
+  font/devps/HI \
+  font/devps/HR \
+  font/devps/HNB \
+  font/devps/HNBI \
+  font/devps/HNI \
+  font/devps/HNR \
+  font/devps/NB \
+  font/devps/NBI \
+  font/devps/NI \
+  font/devps/NR \
+  font/devps/PB \
+  font/devps/PBI \
+  font/devps/PI \
+  font/devps/PR \
+  font/devps/TB \
+  font/devps/TBI \
+  font/devps/TI \
+  font/devps/TR \
+  font/devps/EURO \
+  font/devps/freeeuro.pfa \
+  font/devps/freeeuro.afm \
+  font/devps/text.enc \
+  font/devps/download
+
+DEVPSFONTFILES_GENERATED = \
+  font/devps/DESC \
+  font/devps/prologue \
+  font/devps/zapfdr.pfa \
+  font/devps/symbolsl.pfa
+
+devpsfontdir = $(fontdir)/devps
+dist_devpsfont_DATA = $(DEVPSFONTFILES) 
+nodist_devpsfont_DATA = $(DEVPSFONTFILES_GENERATED)
+
+# these files will be installed in oldfontdir
+OLDDEVPSFONTFILES = \
+  font/devps/old/S \
+  font/devps/old/SS \
+  font/devps/old/CB \
+  font/devps/old/CBI \
+  font/devps/old/CI \
+  font/devps/old/CR \
+  font/devps/old/HB \
+  font/devps/old/HBI \
+  font/devps/old/HI \
+  font/devps/old/HR \
+  font/devps/old/HNB \
+  font/devps/old/HNBI \
+  font/devps/old/HNI \
+  font/devps/old/HNR \
+  font/devps/old/NB \
+  font/devps/old/NBI \
+  font/devps/old/NI \
+  font/devps/old/NR \
+  font/devps/old/PB \
+  font/devps/old/PBI \
+  font/devps/old/PI \
+  font/devps/old/PR \
+  font/devps/old/TB \
+  font/devps/old/TBI \
+  font/devps/old/TI \
+  font/devps/old/TR \
+  font/devps/old/symbol.afm \
+  font/devps/old/symbolsl.afm \
+  font/devps/old/zapfdr.afm \
+  font/devps/old/zapfdr.ps
+
+olddevpsfontdir = $(oldfontdir)/devps
+dist_olddevpsfont_DATA = $(OLDDEVPSFONTFILES)
+
+# Files installed in $(devfontdir)/generate
+DEVPSGENFILES = \
+  font/devps/generate/Makefile \
+  font/devps/generate/dingbats.map \
+  font/devps/generate/dingbats.rmap \
+  font/devps/generate/lgreekmap \
+  font/devps/generate/symbolchars \
+  font/devps/generate/symbolsl.afm \
+  font/devps/generate/textmap
+
+DEVPSGENSCRIPTS = \
+  font/devps/generate/afmname \
+  font/devps/generate/symbol.sed
+
+devpsgendir = $(devpsfontdir)/generate
+dist_devpsgen_DATA = $(DEVPSGENFILES) $(DEVPSGENSCRIPTS)
+devutf8_srcdir = $(top_srcdir)/font/devutf8
+DEVUTF8FONTS = R I B BI
+DEVUTF8FONTSFILES = \
+  font/devutf8/R font/devutf8/I font/devutf8/B font/devutf8/BI
+
+DEVUTF8RES = 240
+DEVUTF8CPI = 10
+DEVUTF8LPI = 6
+devutf8fontdir = $(fontdir)/devutf8
+devutf8font_DATA = $(DEVUTF8FONTSFILES) font/devutf8/DESC
+
+# Scripts for font files generation
+GENFONTSSH = $(top_srcdir)/font/scripts/genfonts.sh
+GENDESCSH = $(top_srcdir)/font/scripts/gendesc.sh
+nodist_noinst_HEADERS = defs.h
+libbib_a_SOURCES = \
+  src/libs/libbib/common.cpp \
+  src/libs/libbib/index.cpp \
+  src/libs/libbib/linear.cpp \
+  src/libs/libbib/search.cpp \
+  src/libs/libbib/map.c
+
+libdriver_a_SOURCES = \
+  src/libs/libdriver/input.cpp \
+  src/libs/libdriver/printer.cpp
+
+libgroff_srcdir = $(top_srcdir)/src/libs/libgroff
+libgroff_a_CPPFLAGS = \
+  $(AM_CPPFLAGS) \
+  -D__GETOPT_PREFIX=groff_ \
+  -DENABLE_RELOCATABLE=1 \
+  -DLIBDIR=\"$(libdir)\"
+
+
+# Build from OBJS
+libgroff_a_SOURCES = \
+  src/libs/libgroff/assert.cpp \
+  src/libs/libgroff/change_lf.cpp \
+  src/libs/libgroff/cmap.cpp \
+  src/libs/libgroff/color.cpp \
+  src/libs/libgroff/cset.cpp\
+  src/libs/libgroff/curtime.cpp \
+  src/libs/libgroff/device.cpp \
+  src/libs/libgroff/errarg.cpp \
+  src/libs/libgroff/error.cpp \
+  src/libs/libgroff/fatal.cpp \
+  src/libs/libgroff/filename.cpp \
+  src/libs/libgroff/font.cpp \
+  src/libs/libgroff/fontfile.cpp \
+  src/libs/libgroff/geometry.cpp \
+  src/libs/libgroff/getopt.c \
+  src/libs/libgroff/getopt1.c \
+  src/libs/libgroff/glyphuni.cpp \
+  src/libs/libgroff/htmlhint.cpp \
+  src/libs/libgroff/hypot.cpp \
+  src/libs/libgroff/iftoa.c \
+  src/libs/libgroff/invalid.cpp \
+  src/libs/libgroff/itoa.c \
+  src/libs/libgroff/lf.cpp \
+  src/libs/libgroff/lineno.cpp \
+  src/libs/libgroff/localcharset.c \
+  src/libs/libgroff/macropath.cpp \
+  src/libs/libgroff/matherr.c \
+  src/libs/libgroff/maxfilename.cpp \
+  src/libs/libgroff/maxpathname.cpp \
+  src/libs/libgroff/mksdir.cpp \
+  src/libs/libgroff/nametoindex.cpp \
+  src/libs/libgroff/new.cpp \
+  src/libs/libgroff/paper.cpp \
+  src/libs/libgroff/prime.cpp \
+  src/libs/libgroff/progname.c \
+  src/libs/libgroff/ptable.cpp \
+  src/libs/libgroff/quotearg.c \
+  src/libs/libgroff/relocate.cpp \
+  src/libs/libgroff/searchpath.cpp \
+  src/libs/libgroff/spawnvp.c \
+  src/libs/libgroff/string.cpp \
+  src/libs/libgroff/strsave.cpp \
+  src/libs/libgroff/symbol.cpp \
+  src/libs/libgroff/tmpfile.cpp \
+  src/libs/libgroff/tmpname.cpp \
+  src/libs/libgroff/unicode.cpp \
+  src/libs/libgroff/uniglyph.cpp \
+  src/libs/libgroff/uniuni.cpp \
+  src/libs/libgroff/relocatable.h
+
+nodist_libgroff_a_SOURCES = src/libs/libgroff/version.cpp
+
+# Data for localcharset.c.  Taken from libiconv/libcharset.
+LIBGROFF_PACKAGE = groff
+@WITHOUT_X11_FALSE@libxutil_a_CPPFLAGS = $(AM_CPPFLAGS) $(X_CFLAGS)
+@WITHOUT_X11_FALSE@libxutil_a_SOURCES = \
+@WITHOUT_X11_FALSE@  src/libs/libxutil/DviChar.c \
+@WITHOUT_X11_FALSE@  src/libs/libxutil/XFontName.c \
+@WITHOUT_X11_FALSE@  src/libs/libxutil/xmalloc.c
+
+grodvi_SOURCES = src/devices/grodvi/dvi.cpp
+grodvi_LDADD = \
+  libdriver.a \
+  libgroff.a \
+  lib/libgnu.a $(LIBM)
+
+post_grohtml_SOURCES = \
+  src/devices/grohtml/post-html.cpp \
+  src/devices/grohtml/html-table.cpp \
+  src/devices/grohtml/html-text.cpp \
+  src/devices/grohtml/output.cpp \
+  src/devices/grohtml/html.h \
+  src/devices/grohtml/html-text.h \
+  src/devices/grohtml/html-table.h
+
+post_grohtml_LDADD = $(LIBM) \
+  libdriver.a \
+  libgroff.a \
+  lib/libgnu.a 
+
+grolbp_SOURCES = \
+  src/devices/grolbp/lbp.cpp \
+  src/devices/grolbp/lbp.h \
+  src/devices/grolbp/charset.h
+
+grolbp_LDADD = $(LIBM) \
+  libdriver.a \
+  libgroff.a \
+  lib/libgnu.a
+
+grolj4_SOURCES = src/devices/grolj4/lj4.cpp
+grolj4_LDADD = $(LIBM) \
+  libdriver.a \
+  libgroff.a \
+  lib/libgnu.a
+
+gropdf_dir = $(top_srcdir)/src/devices/gropdf
+grops_SOURCES = \
+  src/devices/grops/ps.cpp \
+  src/devices/grops/psrm.cpp \
+  src/devices/grops/ps.h
+
+grops_LDADD = $(LIBM) \
+  libdriver.a \
+  libgroff.a \
+  lib/libgnu.a
+
+grotty_SOURCES = src/devices/grotty/tty.cpp
+grotty_LDADD = $(LIBM) \
+  libdriver.a \
+  libgroff.a \
+  lib/libgnu.a
+
+GXDITVIEWSOURCES = \
+  src/devices/xditview/device.c \
+  src/devices/xditview/draw.c \
+  src/devices/xditview/draw.h \
+  src/devices/xditview/Dvi.c \
+  src/devices/xditview/font.c \
+  src/devices/xditview/font.h \
+  src/devices/xditview/lex.c \
+  src/devices/xditview/lex.h \
+  src/devices/xditview/page.c \
+  src/devices/xditview/page.h \
+  src/devices/xditview/parse.c \
+  src/devices/xditview/parse.h \
+  src/devices/xditview/xditview.c \
+  src/devices/xditview/device.h \
+  src/devices/xditview/DviP.h \
+  src/devices/xditview/Menu.h \
+  src/devices/xditview/Dvi.h
+
+@WITHOUT_X11_FALSE@xditview_srcdir = $(top_srcdir)/src/devices/xditview
+@WITHOUT_X11_FALSE@gxditview_CPPFLAGS = $(AM_CPPFLAGS) $(X_CFLAGS) -Dlint \
+@WITHOUT_X11_FALSE@  -I$(top_builddir)/src/devices/xditview
+
+@WITHOUT_X11_FALSE@gxditview_LDADD = $(X_LIBS) $(X_PRE_LIBS) -lXaw -lXmu -lXt -lX11 \
+@WITHOUT_X11_FALSE@  $(X_EXTRA_LIBS) $(LIBM) libxutil.a lib/libgnu.a
+
+@WITHOUT_X11_FALSE@XDITVIEW_GENHDRS = src/devices/xditview/GXditview-ad.h
+@WITHOUT_X11_FALSE@gxditview_SOURCES = $(GXDITVIEWSOURCES)
+@WITHOUT_X11_FALSE@nodist_gxditview_SOURCES = $(XDITVIEW_GENHDRS)
+eqn_CPPFLAGS = \
+  $(AM_CPPFLAGS) \
+  -I $(top_srcdir)/src/preproc/eqn \
+  -I $(top_builddir)/src/preproc/eqn
+
+eqn_LDADD = $(LIBM) libgroff.a lib/libgnu.a
+eqn_SOURCES = \
+  src/preproc/eqn/main.cpp \
+  src/preproc/eqn/lex.cpp \
+  src/preproc/eqn/box.cpp \
+  src/preproc/eqn/limit.cpp \
+  src/preproc/eqn/list.cpp \
+  src/preproc/eqn/over.cpp \
+  src/preproc/eqn/text.cpp \
+  src/preproc/eqn/script.cpp \
+  src/preproc/eqn/mark.cpp \
+  src/preproc/eqn/other.cpp \
+  src/preproc/eqn/delim.cpp \
+  src/preproc/eqn/sqrt.cpp \
+  src/preproc/eqn/pile.cpp \
+  src/preproc/eqn/special.cpp \
+  src/preproc/eqn/eqn.ypp \
+  src/preproc/eqn/box.h \
+  src/preproc/eqn/pbox.h \
+  src/preproc/eqn/eqn.h
+
+grn_SOURCES = \
+  src/preproc/grn/hdb.cpp \
+  src/preproc/grn/hpoint.cpp \
+  src/preproc/grn/hgraph.cpp \
+  src/preproc/grn/main.cpp \
+  src/preproc/grn/gprint.h
+
+grn_LDADD = libgroff.a lib/libgnu.a $(LIBM)
+pre_grohtml_LDADD = libgroff.a lib/libgnu.a $(LIBM)
+pre_grohtml_SOURCES = \
+  src/preproc/html/pre-html.cpp \
+  src/preproc/html/pushback.cpp \
+  src/preproc/html/pre-html.h \
+  src/preproc/html/pushback.h
+
+pic_LDADD = libgroff.a $(LIBM) lib/libgnu.a
+pic_SOURCES = \
+  src/preproc/pic/pic.ypp \
+  src/preproc/pic/lex.cpp \
+  src/preproc/pic/main.cpp \
+  src/preproc/pic/object.cpp \
+  src/preproc/pic/common.cpp \
+  src/preproc/pic/troff.cpp \
+  src/preproc/pic/tex.cpp \
+  src/preproc/pic/pic.h \
+  src/preproc/pic/position.h \
+  src/preproc/pic/text.h \
+  src/preproc/pic/common.h \
+  src/preproc/pic/output.h \
+  src/preproc/pic/object.h
+
+pic_CPPFLAGS = $(AM_CPPFLAGS) \
+  -I $(top_srcdir)/src/preproc/pic \
+  -I $(top_builddir)/src/preproc/pic
+
+preconv_LDADD = libgroff.a $(LIBM) $(LIBICONV) $(UCHARDET_LIBS) lib/libgnu.a
+preconv_SOURCES = src/preproc/preconv/preconv.cpp
+preconv_CPPFLAGS = $(AM_CPPFLAGS) $(UCHARDET_CFLAGS)
+refer_CPPFLAGS = $(AM_CPPFLAGS) -I $(top_srcdir)/src/preproc/refer
+refer_LDADD = libbib.a libgroff.a $(LIBM) lib/libgnu.a
+refer_SOURCES = \
+  src/preproc/refer/command.cpp \
+  src/preproc/refer/ref.cpp \
+  src/preproc/refer/refer.cpp \
+  src/preproc/refer/token.cpp \
+  src/preproc/refer/label.ypp \
+  src/preproc/refer/refer.h \
+  src/preproc/refer/ref.h \
+  src/preproc/refer/token.h \
+  src/preproc/refer/command.h
+
+soelim_LDADD = libgroff.a $(LIBM) lib/libgnu.a
+soelim_SOURCES = src/preproc/soelim/soelim.cpp
+tbl_LDADD = libgroff.a $(LIBM) lib/libgnu.a
+tbl_SOURCES = \
+  src/preproc/tbl/main.cpp \
+  src/preproc/tbl/table.cpp \
+  src/preproc/tbl/table.h
+
+groff_LDADD = \
+  libgroff.a \
+  lib/libgnu.a \
+  $(LIBM)
+
+groff_SOURCES = \
+  src/roff/groff/groff.cpp \
+  src/roff/groff/pipeline.c \
+  src/roff/groff/pipeline.h
+
+GROFF_OPTS_OUTPUT = \
+  groff_opts_no_arg.txt \
+  groff_opts_with_arg.txt
+
+groffoptsdir = $(libprogramdir)
+groffopts_DATA = $(GROFF_OPTS_OUTPUT)
+grog_srcdir = $(top_srcdir)/src/roff/grog
+GROG = src/roff/grog/subs.pl
+
+# grog_dir is defined by a m4 macro
+grogdir = $(grog_dir)
+dist_grog_DATA = $(GROG)
+nroff_srcdir = $(top_srcdir)/src/roff/nroff
+troff_LDADD = libgroff.a lib/libgnu.a $(LIBM)
+troff_SOURCES = \
+  src/roff/troff/dictionary.cpp \
+  src/roff/troff/div.cpp \
+  src/roff/troff/env.cpp \
+  src/roff/troff/input.cpp \
+  src/roff/troff/mtsm.cpp \
+  src/roff/troff/node.cpp \
+  src/roff/troff/number.cpp \
+  src/roff/troff/reg.cpp \
+  src/roff/troff/env.h \
+  src/roff/troff/node.h \
+  src/roff/troff/troff.h \
+  src/roff/troff/div.h \
+  src/roff/troff/reg.h \
+  src/roff/troff/dictionary.h \
+  src/roff/troff/input.h \
+  src/roff/troff/mtsm.h \
+  src/roff/troff/token.h \
+  src/roff/troff/charinfo.h \
+  src/roff/troff/request.h \
+  src/roff/troff/hvunits.h
+
+nodist_troff_SOURCES = src/roff/troff/majorminor.cpp
+addftinfo_LDADD = libgroff.a lib/libgnu.a
+addftinfo_SOURCES = \
+  src/utils/addftinfo/addftinfo.cpp \
+  src/utils/addftinfo/guess.cpp \
+  src/utils/addftinfo/guess.h
+
+afmtodit_srcdir = $(top_srcdir)/src/utils/afmtodit
+hpftodit_LDADD = libgroff.a $(LIBM) lib/libgnu.a
+hpftodit_SOURCES = \
+  src/utils/hpftodit/hpftodit.cpp \
+  src/utils/hpftodit/hpuni.cpp
+
+indxbib_srcdir = $(top_srcdir)/src/utils/indxbib
+indxbib_SOURCES = \
+  src/utils/indxbib/indxbib.cpp \
+  src/utils/indxbib/signal.c
+
+indxbib_LDADD = libbib.a libgroff.a $(LIBM) lib/libgnu.a
+lkbib_LDADD = libbib.a libgroff.a $(LIBM) lib/libgnu.a
+lkbib_SOURCES = src/utils/lkbib/lkbib.cpp
+lookbib_LDADD = libbib.a libgroff.a $(LIBM) lib/libgnu.a
+lookbib_SOURCES = src/utils/lookbib/lookbib.cpp
+pfbtops_SOURCES = src/utils/pfbtops/pfbtops.c
+pfbtops_LDADD = libgroff.a $(LIBM) lib/libgnu.a
+# We use the following trick to force the use of C++ compiler
+# See the Automake manual, "Libtool Convenience Libraries"
+nodist_EXTRA_pfbtops_SOURCES = src/utils/pfbtops/dummy.cpp
+tfmtodit_SOURCES = src/utils/tfmtodit/tfmtodit.cpp
+tfmtodit_LDADD = libgroff.a $(LIBM) lib/libgnu.a
+@WITHOUT_X11_FALSE@xtotroff_SOURCES = src/utils/xtotroff/xtotroff.c
+@WITHOUT_X11_FALSE@XLIBS = $(LIBXUTIL) $(LIBGROFF)
+@WITHOUT_X11_FALSE@xtotroff_LDADD = libxutil.a libgroff.a $(X_LIBS) $(X_PRE_LIBS) \
+@WITHOUT_X11_FALSE@  -lXaw -lXt -lX11 $(X_EXTRA_LIBS) $(LIBM) lib/libgnu.a
+
+@WITHOUT_X11_FALSE@xtotroff_CPPFLAGS = $(AM_CPPFLAGS) $(X_CFLAGS)
+
+# Copyright (C) 1989-2018 Free Software Foundation, Inc.
+#      Written by James Clark (jjc@jclark.com)
+#      Automake migration by Bertrand Garrigues
+#
+# Latest update: 22 Aug 2015
+#
+# This file is part of groff.
+#
+# groff 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.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+tmac_srcdir = $(top_srcdir)/tmac
+tmac_builddir = $(top_builddir)/tmac
+TMACNORMALFILES = \
+  tmac/man.tmac \
+  tmac/mandoc.tmac \
+  tmac/andoc.tmac \
+  tmac/an-old.tmac \
+  tmac/an-ext.tmac \
+  tmac/ms.tmac \
+  tmac/me.tmac \
+  tmac/mdoc.tmac \
+  tmac/pic.tmac \
+  tmac/a4.tmac \
+  tmac/papersize.tmac \
+  tmac/62bit.tmac \
+  tmac/ec.tmac \
+  tmac/safer.tmac \
+  tmac/trace.tmac \
+  tmac/ps.tmac \
+  tmac/psold.tmac \
+  tmac/pdfpic.tmac \
+  tmac/pspic.tmac \
+  tmac/psatk.tmac \
+  tmac/pdf.tmac \
+  tmac/dvi.tmac \
+  tmac/tty.tmac \
+  tmac/tty-char.tmac \
+  tmac/latin1.tmac \
+  tmac/latin2.tmac \
+  tmac/latin5.tmac \
+  tmac/latin9.tmac \
+  tmac/cp1047.tmac \
+  tmac/unicode.tmac \
+  tmac/X.tmac \
+  tmac/Xps.tmac \
+  tmac/lj4.tmac \
+  tmac/lbp.tmac \
+  tmac/html.tmac \
+  tmac/html-end.tmac \
+  tmac/devtag.tmac \
+  tmac/europs.tmac \
+  tmac/composite.tmac \
+  tmac/fallbacks.tmac \
+  tmac/eqnrc \
+  tmac/refer.tmac \
+  tmac/refer-me.tmac \
+  tmac/refer-ms.tmac \
+  tmac/troffrc \
+  tmac/troffrc-end \
+  tmac/trans.tmac \
+  tmac/hyphen.us \
+  tmac/hyphenex.us \
+  tmac/fr.tmac \
+  tmac/hyphen.fr \
+  tmac/sv.tmac \
+  tmac/hyphen.sv \
+  tmac/de.tmac \
+  tmac/den.tmac \
+  tmac/hyphen.det \
+  tmac/hyphen.den \
+  tmac/cs.tmac \
+  tmac/hyphen.cs \
+  tmac/hyphenex.cs \
+  tmac/ja.tmac \
+  tmac/zh.tmac
+
+NORMALFILES = `echo $(TMACNORMALFILES) | sed -e "s|tmac/||g"`
+
+# TMACSTRIPFILES are built from their unstripped version (-u)
+TMACSTRIPFILES = tmac/e.tmac tmac/doc.tmac tmac/doc-old.tmac
+
+# Files installed in tmacdir
+dist_tmac_DATA = $(TMACNORMALFILES) tmac/an.tmac tmac/s.tmac
+nodist_tmac_DATA = $(TMACSTRIPFILES) tmac/www.tmac
+TMACMDOCFILES = \
+  tmac/doc-common \
+  tmac/doc-ditroff \
+  tmac/doc-nroff \
+  tmac/doc-syms
+
+MDOCFILES = `echo $(TMACMDOCFILES) | sed -e "s|tmac/||g"`
+mdocdir = $(tmacdir)/mdoc
+# Files installed in mdocdir
+nodist_mdoc_DATA = $(TMACMDOCFILES)
+
+# Installed in localtmacdir
+dist_localtmac_DATA = tmac/man.local tmac/mdoc.local
+
+# Suffix rule to build .1, .5 and .7 files from .1.man, .5.man and
+# .7.man files.  The brackets around the @ are used to prevent the
+# substitution of the variable by automake.
+#
+# The sed script transforms - to \-, ~ to \(ti, and so forth, (with an
+# extra layer of backslashes--see below) so that Makefile variables
+# containing ASCII characters that do not represent themselves literally
+# in *roff (see groff_char(7)) are correctly interpolated into man page
+# text.
+#
+# Note that while the script, combined with this target, will transform
+# ` to \(ga, including grave accents in Makefile variables is likely to
+# fail when the shell lexes the argument to echo within the old-style
+# command substitution `` below.  Testing shows that grave accents
+# should work* if POSIX-style command substitution $() is done instead.
+# However, $() is less portable.  (Triple-escaping grave accents \\\`
+# inside the interpolated Makefile variable will work, but is not
+# attempted here.)
+#
+# Note also that the amount of backslash-escaping in the sed script is
+# excessive (and incorrect) for normal purposes, but required here
+# because a command substitution is being nested inside yet another
+# invocation of sed.
+#
+# * For this target; no assurances about the good behavior of unusual
+#   characters in Makefile variables in other aspects of the groff build
+#   are offered.
+makevarescape = $(top_srcdir)/makevarescape.sed
+all: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) all-am
+
+.SUFFIXES:
+.SUFFIXES: .roff .in .ps .mom .pdf .me .ms .ps .html .txt .texi .dvi .pdf .xhtml .man .c .cpp .log .o .obj .test .test$(EXEEXT) .trs .ypp
+am--refresh: Makefile
+       @:
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am $(top_srcdir)/lib/gnulib.mk $(top_srcdir)/arch/mingw/mingw.am $(top_srcdir)/arch/misc/misc.am $(top_srcdir)/contrib/chem/chem.am $(top_srcdir)/contrib/eqn2graph/eqn2graph.am $(top_srcdir)/contrib/gdiffmk/gdiffmk.am $(top_srcdir)/contrib/glilypond/glilypond.am $(top_srcdir)/contrib/gperl/gperl.am $(top_srcdir)/contrib/gpinyin/gpinyin.am $(top_srcdir)/contrib/grap2graph/grap2graph.am $(top_srcdir)/contrib/groff_filenames/groff_filenames.am $(top_srcdir)/contrib/groffer/groffer.am $(top_srcdir)/contrib/hdtbl/hdtbl.am $(top_srcdir)/contrib/mm/mm.am $(top_srcdir)/contrib/mom/mom.am $(top_srcdir)/contrib/pdfmark/pdfmark.am $(top_srcdir)/contrib/pic2graph/pic2graph.am $(top_srcdir)/doc/doc.am $(top_srcdir)/font/devX100/devX100.am $(top_srcdir)/font/devX100-12/devX100-12.am $(top_srcdir)/font/devX75/devX75.am $(top_srcdir)/font/devX75-12/devX75-12.am $(top_srcdir)/font/devascii/devascii.am $(top_srcdir)/font/devcp1047/devcp1047.am $(top_srcdir)/font/devdvi/devdvi.am $(top_srcdir)/font/devhtml/devhtml.am $(top_srcdir)/font/devlatin1/devlatin1.am $(top_srcdir)/font/devlbp/devlbp.am $(top_srcdir)/font/devlj4/devlj4.am $(top_srcdir)/font/devpdf/devpdf.am $(top_srcdir)/font/devps/devps.am $(top_srcdir)/font/devutf8/devutf8.am $(top_srcdir)/font/scripts/scripts.am $(top_srcdir)/man/man.am $(top_srcdir)/src/include/include.am $(top_srcdir)/src/libs/libbib/libbib.am $(top_srcdir)/src/libs/libdriver/libdriver.am $(top_srcdir)/src/libs/libgroff/libgroff.am $(top_srcdir)/src/libs/libxutil/libxutil.am $(top_srcdir)/src/devices/grodvi/grodvi.am $(top_srcdir)/src/devices/grohtml/grohtml.am $(top_srcdir)/src/devices/grolbp/grolbp.am $(top_srcdir)/src/devices/grolj4/grolj4.am $(top_srcdir)/src/devices/gropdf/gropdf.am $(top_srcdir)/src/devices/grops/grops.am $(top_srcdir)/src/devices/grotty/grotty.am $(top_srcdir)/src/devices/xditview/xditview.am $(top_srcdir)/src/preproc/eqn/eqn.am $(top_srcdir)/src/preproc/grn/grn.am $(top_srcdir)/src/preproc/html/html.am $(top_srcdir)/src/preproc/pic/pic.am $(top_srcdir)/src/preproc/preconv/preconv.am $(top_srcdir)/src/preproc/refer/refer.am $(top_srcdir)/src/preproc/soelim/soelim.am $(top_srcdir)/src/preproc/tbl/tbl.am $(top_srcdir)/src/roff/groff/groff.am $(top_srcdir)/src/roff/grog/grog.am $(top_srcdir)/src/roff/nroff/nroff.am $(top_srcdir)/src/roff/troff/troff.am $(top_srcdir)/src/utils/addftinfo/addftinfo.am $(top_srcdir)/src/utils/afmtodit/afmtodit.am $(top_srcdir)/src/utils/hpftodit/hpftodit.am $(top_srcdir)/src/utils/indxbib/indxbib.am $(top_srcdir)/src/utils/lkbib/lkbib.am $(top_srcdir)/src/utils/lookbib/lookbib.am $(top_srcdir)/src/utils/pfbtops/pfbtops.am $(top_srcdir)/src/utils/tfmtodit/tfmtodit.am $(top_srcdir)/src/utils/xtotroff/xtotroff.am $(top_srcdir)/tmac/tmac.am $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \
+             $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \
+               && exit 0; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           echo ' $(SHELL) ./config.status'; \
+           $(SHELL) ./config.status;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles);; \
+       esac;
+$(top_srcdir)/lib/gnulib.mk $(top_srcdir)/arch/mingw/mingw.am $(top_srcdir)/arch/misc/misc.am $(top_srcdir)/contrib/chem/chem.am $(top_srcdir)/contrib/eqn2graph/eqn2graph.am $(top_srcdir)/contrib/gdiffmk/gdiffmk.am $(top_srcdir)/contrib/glilypond/glilypond.am $(top_srcdir)/contrib/gperl/gperl.am $(top_srcdir)/contrib/gpinyin/gpinyin.am $(top_srcdir)/contrib/grap2graph/grap2graph.am $(top_srcdir)/contrib/groff_filenames/groff_filenames.am $(top_srcdir)/contrib/groffer/groffer.am $(top_srcdir)/contrib/hdtbl/hdtbl.am $(top_srcdir)/contrib/mm/mm.am $(top_srcdir)/contrib/mom/mom.am $(top_srcdir)/contrib/pdfmark/pdfmark.am $(top_srcdir)/contrib/pic2graph/pic2graph.am $(top_srcdir)/doc/doc.am $(top_srcdir)/font/devX100/devX100.am $(top_srcdir)/font/devX100-12/devX100-12.am $(top_srcdir)/font/devX75/devX75.am $(top_srcdir)/font/devX75-12/devX75-12.am $(top_srcdir)/font/devascii/devascii.am $(top_srcdir)/font/devcp1047/devcp1047.am $(top_srcdir)/font/devdvi/devdvi.am $(top_srcdir)/font/devhtml/devhtml.am $(top_srcdir)/font/devlatin1/devlatin1.am $(top_srcdir)/font/devlbp/devlbp.am $(top_srcdir)/font/devlj4/devlj4.am $(top_srcdir)/font/devpdf/devpdf.am $(top_srcdir)/font/devps/devps.am $(top_srcdir)/font/devutf8/devutf8.am $(top_srcdir)/font/scripts/scripts.am $(top_srcdir)/man/man.am $(top_srcdir)/src/include/include.am $(top_srcdir)/src/libs/libbib/libbib.am $(top_srcdir)/src/libs/libdriver/libdriver.am $(top_srcdir)/src/libs/libgroff/libgroff.am $(top_srcdir)/src/libs/libxutil/libxutil.am $(top_srcdir)/src/devices/grodvi/grodvi.am $(top_srcdir)/src/devices/grohtml/grohtml.am $(top_srcdir)/src/devices/grolbp/grolbp.am $(top_srcdir)/src/devices/grolj4/grolj4.am $(top_srcdir)/src/devices/gropdf/gropdf.am $(top_srcdir)/src/devices/grops/grops.am $(top_srcdir)/src/devices/grotty/grotty.am $(top_srcdir)/src/devices/xditview/xditview.am $(top_srcdir)/src/preproc/eqn/eqn.am $(top_srcdir)/src/preproc/grn/grn.am $(top_srcdir)/src/preproc/html/html.am $(top_srcdir)/src/preproc/pic/pic.am $(top_srcdir)/src/preproc/preconv/preconv.am $(top_srcdir)/src/preproc/refer/refer.am $(top_srcdir)/src/preproc/soelim/soelim.am $(top_srcdir)/src/preproc/tbl/tbl.am $(top_srcdir)/src/roff/groff/groff.am $(top_srcdir)/src/roff/grog/grog.am $(top_srcdir)/src/roff/nroff/nroff.am $(top_srcdir)/src/roff/troff/troff.am $(top_srcdir)/src/utils/addftinfo/addftinfo.am $(top_srcdir)/src/utils/afmtodit/afmtodit.am $(top_srcdir)/src/utils/hpftodit/hpftodit.am $(top_srcdir)/src/utils/indxbib/indxbib.am $(top_srcdir)/src/utils/lkbib/lkbib.am $(top_srcdir)/src/utils/lookbib/lookbib.am $(top_srcdir)/src/utils/pfbtops/pfbtops.am $(top_srcdir)/src/utils/tfmtodit/tfmtodit.am $(top_srcdir)/src/utils/xtotroff/xtotroff.am $(top_srcdir)/tmac/tmac.am $(am__empty):
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       $(SHELL) ./config.status --recheck
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+       $(am__cd) $(srcdir) && $(AUTOCONF)
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+       $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+$(am__aclocal_m4_deps):
+
+src/include/config.h: src/include/stamp-h1
+       @test -f $@ || rm -f src/include/stamp-h1
+       @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) src/include/stamp-h1
+
+src/include/stamp-h1: $(top_srcdir)/src/include/config.hin $(top_builddir)/config.status
+       @rm -f src/include/stamp-h1
+       cd $(top_builddir) && $(SHELL) ./config.status src/include/config.h
+$(top_srcdir)/src/include/config.hin:  $(am__configure_deps) 
+       ($(am__cd) $(top_srcdir) && $(AUTOHEADER))
+       rm -f src/include/stamp-h1
+       touch $@
+
+distclean-hdr:
+       -rm -f src/include/config.h src/include/stamp-h1
+test-groff: $(top_builddir)/config.status $(srcdir)/test-groff.in
+       cd $(top_builddir) && $(SHELL) ./config.status $@
+install-binPROGRAMS: $(bin_PROGRAMS)
+       @$(NORMAL_INSTALL)
+       @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+       fi; \
+       for p in $$list; do echo "$$p $$p"; done | \
+       sed 's/$(EXEEXT)$$//' | \
+       while read p p1; do if test -f $$p \
+         ; then echo "$$p"; echo "$$p"; else :; fi; \
+       done | \
+       sed -e 'p;s,.*/,,;n;h' \
+           -e 's|.*|.|' \
+           -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
+       sed 'N;N;N;s,\n, ,g' | \
+       $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
+         { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+           if ($$2 == $$4) files[d] = files[d] " " $$1; \
+           else { print "f", $$3 "/" $$4, $$1; } } \
+         END { for (d in files) print "f", d, files[d] }' | \
+       while read type dir files; do \
+           if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+           test -z "$$files" || { \
+             echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
+             $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
+           } \
+       ; done
+
+uninstall-binPROGRAMS:
+       @$(NORMAL_UNINSTALL)
+       @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+       files=`for p in $$list; do echo "$$p"; done | \
+         sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
+             -e 's/$$/$(EXEEXT)/' \
+       `; \
+       test -n "$$list" || exit 0; \
+       echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
+       cd "$(DESTDIR)$(bindir)" && rm -f $$files
+
+clean-binPROGRAMS:
+       -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
+
+clean-checkPROGRAMS:
+       -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS)
+install-nobase_binPROGRAMS: $(nobase_bin_PROGRAMS)
+       @$(NORMAL_INSTALL)
+       @list='$(nobase_bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+       fi; \
+       for p in $$list; do echo "$$p $$p"; done | \
+       sed 's/$(EXEEXT)$$//' | \
+       while read p p1; do if test -f $$p \
+         ; then echo "$$p"; echo "$$p"; else :; fi; \
+       done | \
+       sed -e 'p;s,.*/,,;n;h' \
+           -e 's|[^/]*$$||; s|^$$|.|' \
+           -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
+       sed 'N;N;N;s,\n, ,g' | \
+       $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
+         { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+           if ($$2 == $$4) files[d] = files[d] " " $$1; \
+           else { print "f", $$3 "/" $$4, $$1; } } \
+         END { for (d in files) print "f", d, files[d] }' | \
+       while read type dir files; do \
+         case $$type in \
+         d) echo " $(MKDIR_P) '$(DESTDIR)$(bindir)/$$dir'"; \
+            $(MKDIR_P) "$(DESTDIR)$(bindir)/$$dir" || exit $$?;; \
+         f) \
+           if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+           test -z "$$files" || { \
+             echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
+             $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
+           } \
+         ;; esac \
+       ; done
+
+uninstall-nobase_binPROGRAMS:
+       @$(NORMAL_UNINSTALL)
+       @list='$(nobase_bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+       files=`for p in $$list; do echo "$$p"; done | \
+         sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
+             -e 's/$$/$(EXEEXT)/' \
+             -e 'x;s,[^/]*$$,,;G;s,\n,,' \
+       `; \
+       test -n "$$list" || exit 0; \
+       echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
+       cd "$(DESTDIR)$(bindir)" && rm -f $$files
+
+clean-nobase_binPROGRAMS:
+       -test -z "$(nobase_bin_PROGRAMS)" || rm -f $(nobase_bin_PROGRAMS)
+install-prefixexecbinPROGRAMS: $(prefixexecbin_PROGRAMS)
+       @$(NORMAL_INSTALL)
+       @list='$(prefixexecbin_PROGRAMS)'; test -n "$(prefixexecbindir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(prefixexecbindir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(prefixexecbindir)" || exit 1; \
+       fi; \
+       for p in $$list; do echo "$$p $$p"; done | \
+       sed 's/$(EXEEXT)$$//' | \
+       while read p p1; do if test -f $$p \
+         ; then echo "$$p"; echo "$$p"; else :; fi; \
+       done | \
+       sed -e 'p;s,.*/,,;n;h' \
+           -e 's|.*|.|' \
+           -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
+       sed 'N;N;N;s,\n, ,g' | \
+       $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
+         { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+           if ($$2 == $$4) files[d] = files[d] " " $$1; \
+           else { print "f", $$3 "/" $$4, $$1; } } \
+         END { for (d in files) print "f", d, files[d] }' | \
+       while read type dir files; do \
+           if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+           test -z "$$files" || { \
+             echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(prefixexecbindir)$$dir'"; \
+             $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(prefixexecbindir)$$dir" || exit $$?; \
+           } \
+       ; done
+
+uninstall-prefixexecbinPROGRAMS:
+       @$(NORMAL_UNINSTALL)
+       @list='$(prefixexecbin_PROGRAMS)'; test -n "$(prefixexecbindir)" || list=; \
+       files=`for p in $$list; do echo "$$p"; done | \
+         sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
+             -e 's/$$/$(EXEEXT)/' \
+       `; \
+       test -n "$$list" || exit 0; \
+       echo " ( cd '$(DESTDIR)$(prefixexecbindir)' && rm -f" $$files ")"; \
+       cd "$(DESTDIR)$(prefixexecbindir)" && rm -f $$files
+
+clean-prefixexecbinPROGRAMS:
+       -test -z "$(prefixexecbin_PROGRAMS)" || rm -f $(prefixexecbin_PROGRAMS)
+
+clean-noinstLIBRARIES:
+       -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+lib/$(am__dirstamp):
+       @$(MKDIR_P) lib
+       @: > lib/$(am__dirstamp)
+lib/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) lib/$(DEPDIR)
+       @: > lib/$(DEPDIR)/$(am__dirstamp)
+lib/localcharset.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/math.$(OBJEXT): lib/$(am__dirstamp) lib/$(DEPDIR)/$(am__dirstamp)
+lib/printf-frexp.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/printf-frexpl.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/uniwidth/$(am__dirstamp):
+       @$(MKDIR_P) lib/uniwidth
+       @: > lib/uniwidth/$(am__dirstamp)
+lib/uniwidth/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) lib/uniwidth/$(DEPDIR)
+       @: > lib/uniwidth/$(DEPDIR)/$(am__dirstamp)
+lib/uniwidth/width.$(OBJEXT): lib/uniwidth/$(am__dirstamp) \
+       lib/uniwidth/$(DEPDIR)/$(am__dirstamp)
+lib/wctype-h.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/xsize.$(OBJEXT): lib/$(am__dirstamp) lib/$(DEPDIR)/$(am__dirstamp)
+lib/float.$(OBJEXT): lib/$(am__dirstamp) lib/$(DEPDIR)/$(am__dirstamp)
+lib/itold.$(OBJEXT): lib/$(am__dirstamp) lib/$(DEPDIR)/$(am__dirstamp)
+lib/fprintf.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/frexp.$(OBJEXT): lib/$(am__dirstamp) lib/$(DEPDIR)/$(am__dirstamp)
+lib/frexpl.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/fseterr.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/isnan.$(OBJEXT): lib/$(am__dirstamp) lib/$(DEPDIR)/$(am__dirstamp)
+lib/isnand.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/isnanf.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/isnanl.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/memchr.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/signbitd.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/signbitf.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/signbitl.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/snprintf.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/asnprintf.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/printf-args.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/printf-parse.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/vasnprintf.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/vsnprintf.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/wcwidth.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+
+lib/libgnu.a: $(lib_libgnu_a_OBJECTS) $(lib_libgnu_a_DEPENDENCIES) $(EXTRA_lib_libgnu_a_DEPENDENCIES) lib/$(am__dirstamp)
+       $(AM_V_at)-rm -f lib/libgnu.a
+       $(AM_V_AR)$(lib_libgnu_a_AR) lib/libgnu.a $(lib_libgnu_a_OBJECTS) $(lib_libgnu_a_LIBADD)
+       $(AM_V_at)$(RANLIB) lib/libgnu.a
+src/libs/libbib/$(am__dirstamp):
+       @$(MKDIR_P) src/libs/libbib
+       @: > src/libs/libbib/$(am__dirstamp)
+src/libs/libbib/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) src/libs/libbib/$(DEPDIR)
+       @: > src/libs/libbib/$(DEPDIR)/$(am__dirstamp)
+src/libs/libbib/common.$(OBJEXT): src/libs/libbib/$(am__dirstamp) \
+       src/libs/libbib/$(DEPDIR)/$(am__dirstamp)
+src/libs/libbib/index.$(OBJEXT): src/libs/libbib/$(am__dirstamp) \
+       src/libs/libbib/$(DEPDIR)/$(am__dirstamp)
+src/libs/libbib/linear.$(OBJEXT): src/libs/libbib/$(am__dirstamp) \
+       src/libs/libbib/$(DEPDIR)/$(am__dirstamp)
+src/libs/libbib/search.$(OBJEXT): src/libs/libbib/$(am__dirstamp) \
+       src/libs/libbib/$(DEPDIR)/$(am__dirstamp)
+src/libs/libbib/map.$(OBJEXT): src/libs/libbib/$(am__dirstamp) \
+       src/libs/libbib/$(DEPDIR)/$(am__dirstamp)
+
+libbib.a: $(libbib_a_OBJECTS) $(libbib_a_DEPENDENCIES) $(EXTRA_libbib_a_DEPENDENCIES) 
+       $(AM_V_at)-rm -f libbib.a
+       $(AM_V_AR)$(libbib_a_AR) libbib.a $(libbib_a_OBJECTS) $(libbib_a_LIBADD)
+       $(AM_V_at)$(RANLIB) libbib.a
+src/libs/libdriver/$(am__dirstamp):
+       @$(MKDIR_P) src/libs/libdriver
+       @: > src/libs/libdriver/$(am__dirstamp)
+src/libs/libdriver/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) src/libs/libdriver/$(DEPDIR)
+       @: > src/libs/libdriver/$(DEPDIR)/$(am__dirstamp)
+src/libs/libdriver/input.$(OBJEXT):  \
+       src/libs/libdriver/$(am__dirstamp) \
+       src/libs/libdriver/$(DEPDIR)/$(am__dirstamp)
+src/libs/libdriver/printer.$(OBJEXT):  \
+       src/libs/libdriver/$(am__dirstamp) \
+       src/libs/libdriver/$(DEPDIR)/$(am__dirstamp)
+
+libdriver.a: $(libdriver_a_OBJECTS) $(libdriver_a_DEPENDENCIES) $(EXTRA_libdriver_a_DEPENDENCIES) 
+       $(AM_V_at)-rm -f libdriver.a
+       $(AM_V_AR)$(libdriver_a_AR) libdriver.a $(libdriver_a_OBJECTS) $(libdriver_a_LIBADD)
+       $(AM_V_at)$(RANLIB) libdriver.a
+src/libs/libgroff/$(am__dirstamp):
+       @$(MKDIR_P) src/libs/libgroff
+       @: > src/libs/libgroff/$(am__dirstamp)
+src/libs/libgroff/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) src/libs/libgroff/$(DEPDIR)
+       @: > src/libs/libgroff/$(DEPDIR)/$(am__dirstamp)
+src/libs/libgroff/libgroff_a-assert.$(OBJEXT):  \
+       src/libs/libgroff/$(am__dirstamp) \
+       src/libs/libgroff/$(DEPDIR)/$(am__dirstamp)
+src/libs/libgroff/libgroff_a-change_lf.$(OBJEXT):  \
+       src/libs/libgroff/$(am__dirstamp) \
+       src/libs/libgroff/$(DEPDIR)/$(am__dirstamp)
+src/libs/libgroff/libgroff_a-cmap.$(OBJEXT):  \
+       src/libs/libgroff/$(am__dirstamp) \
+       src/libs/libgroff/$(DEPDIR)/$(am__dirstamp)
+src/libs/libgroff/libgroff_a-color.$(OBJEXT):  \
+       src/libs/libgroff/$(am__dirstamp) \
+       src/libs/libgroff/$(DEPDIR)/$(am__dirstamp)
+src/libs/libgroff/libgroff_a-cset.$(OBJEXT):  \
+       src/libs/libgroff/$(am__dirstamp) \
+       src/libs/libgroff/$(DEPDIR)/$(am__dirstamp)
+src/libs/libgroff/libgroff_a-curtime.$(OBJEXT):  \
+       src/libs/libgroff/$(am__dirstamp) \
+       src/libs/libgroff/$(DEPDIR)/$(am__dirstamp)
+src/libs/libgroff/libgroff_a-device.$(OBJEXT):  \
+       src/libs/libgroff/$(am__dirstamp) \
+       src/libs/libgroff/$(DEPDIR)/$(am__dirstamp)
+src/libs/libgroff/libgroff_a-errarg.$(OBJEXT):  \
+       src/libs/libgroff/$(am__dirstamp) \
+       src/libs/libgroff/$(DEPDIR)/$(am__dirstamp)
+src/libs/libgroff/libgroff_a-error.$(OBJEXT):  \
+       src/libs/libgroff/$(am__dirstamp) \
+       src/libs/libgroff/$(DEPDIR)/$(am__dirstamp)
+src/libs/libgroff/libgroff_a-fatal.$(OBJEXT):  \
+       src/libs/libgroff/$(am__dirstamp) \
+       src/libs/libgroff/$(DEPDIR)/$(am__dirstamp)
+src/libs/libgroff/libgroff_a-filename.$(OBJEXT):  \
+       src/libs/libgroff/$(am__dirstamp) \
+       src/libs/libgroff/$(DEPDIR)/$(am__dirstamp)
+src/libs/libgroff/libgroff_a-font.$(OBJEXT):  \
+       src/libs/libgroff/$(am__dirstamp) \
+       src/libs/libgroff/$(DEPDIR)/$(am__dirstamp)
+src/libs/libgroff/libgroff_a-fontfile.$(OBJEXT):  \
+       src/libs/libgroff/$(am__dirstamp) \
+       src/libs/libgroff/$(DEPDIR)/$(am__dirstamp)
+src/libs/libgroff/libgroff_a-geometry.$(OBJEXT):  \
+       src/libs/libgroff/$(am__dirstamp) \
+       src/libs/libgroff/$(DEPDIR)/$(am__dirstamp)
+src/libs/libgroff/libgroff_a-getopt.$(OBJEXT):  \
+       src/libs/libgroff/$(am__dirstamp) \
+       src/libs/libgroff/$(DEPDIR)/$(am__dirstamp)
+src/libs/libgroff/libgroff_a-getopt1.$(OBJEXT):  \
+       src/libs/libgroff/$(am__dirstamp) \
+       src/libs/libgroff/$(DEPDIR)/$(am__dirstamp)
+src/libs/libgroff/libgroff_a-glyphuni.$(OBJEXT):  \
+       src/libs/libgroff/$(am__dirstamp) \
+       src/libs/libgroff/$(DEPDIR)/$(am__dirstamp)
+src/libs/libgroff/libgroff_a-htmlhint.$(OBJEXT):  \
+       src/libs/libgroff/$(am__dirstamp) \
+       src/libs/libgroff/$(DEPDIR)/$(am__dirstamp)
+src/libs/libgroff/libgroff_a-hypot.$(OBJEXT):  \
+       src/libs/libgroff/$(am__dirstamp) \
+       src/libs/libgroff/$(DEPDIR)/$(am__dirstamp)
+src/libs/libgroff/libgroff_a-iftoa.$(OBJEXT):  \
+       src/libs/libgroff/$(am__dirstamp) \
+       src/libs/libgroff/$(DEPDIR)/$(am__dirstamp)
+src/libs/libgroff/libgroff_a-invalid.$(OBJEXT):  \
+       src/libs/libgroff/$(am__dirstamp) \
+       src/libs/libgroff/$(DEPDIR)/$(am__dirstamp)
+src/libs/libgroff/libgroff_a-itoa.$(OBJEXT):  \
+       src/libs/libgroff/$(am__dirstamp) \
+       src/libs/libgroff/$(DEPDIR)/$(am__dirstamp)
+src/libs/libgroff/libgroff_a-lf.$(OBJEXT):  \
+       src/libs/libgroff/$(am__dirstamp) \
+       src/libs/libgroff/$(DEPDIR)/$(am__dirstamp)
+src/libs/libgroff/libgroff_a-lineno.$(OBJEXT):  \
+       src/libs/libgroff/$(am__dirstamp) \
+       src/libs/libgroff/$(DEPDIR)/$(am__dirstamp)
+src/libs/libgroff/libgroff_a-localcharset.$(OBJEXT):  \
+       src/libs/libgroff/$(am__dirstamp) \
+       src/libs/libgroff/$(DEPDIR)/$(am__dirstamp)
+src/libs/libgroff/libgroff_a-macropath.$(OBJEXT):  \
+       src/libs/libgroff/$(am__dirstamp) \
+       src/libs/libgroff/$(DEPDIR)/$(am__dirstamp)
+src/libs/libgroff/libgroff_a-matherr.$(OBJEXT):  \
+       src/libs/libgroff/$(am__dirstamp) \
+       src/libs/libgroff/$(DEPDIR)/$(am__dirstamp)
+src/libs/libgroff/libgroff_a-maxfilename.$(OBJEXT):  \
+       src/libs/libgroff/$(am__dirstamp) \
+       src/libs/libgroff/$(DEPDIR)/$(am__dirstamp)
+src/libs/libgroff/libgroff_a-maxpathname.$(OBJEXT):  \
+       src/libs/libgroff/$(am__dirstamp) \
+       src/libs/libgroff/$(DEPDIR)/$(am__dirstamp)
+src/libs/libgroff/libgroff_a-mksdir.$(OBJEXT):  \
+       src/libs/libgroff/$(am__dirstamp) \
+       src/libs/libgroff/$(DEPDIR)/$(am__dirstamp)
+src/libs/libgroff/libgroff_a-nametoindex.$(OBJEXT):  \
+       src/libs/libgroff/$(am__dirstamp) \
+       src/libs/libgroff/$(DEPDIR)/$(am__dirstamp)
+src/libs/libgroff/libgroff_a-new.$(OBJEXT):  \
+       src/libs/libgroff/$(am__dirstamp) \
+       src/libs/libgroff/$(DEPDIR)/$(am__dirstamp)
+src/libs/libgroff/libgroff_a-paper.$(OBJEXT):  \
+       src/libs/libgroff/$(am__dirstamp) \
+       src/libs/libgroff/$(DEPDIR)/$(am__dirstamp)
+src/libs/libgroff/libgroff_a-prime.$(OBJEXT):  \
+       src/libs/libgroff/$(am__dirstamp) \
+       src/libs/libgroff/$(DEPDIR)/$(am__dirstamp)
+src/libs/libgroff/libgroff_a-progname.$(OBJEXT):  \
+       src/libs/libgroff/$(am__dirstamp) \
+       src/libs/libgroff/$(DEPDIR)/$(am__dirstamp)
+src/libs/libgroff/libgroff_a-ptable.$(OBJEXT):  \
+       src/libs/libgroff/$(am__dirstamp) \
+       src/libs/libgroff/$(DEPDIR)/$(am__dirstamp)
+src/libs/libgroff/libgroff_a-quotearg.$(OBJEXT):  \
+       src/libs/libgroff/$(am__dirstamp) \
+       src/libs/libgroff/$(DEPDIR)/$(am__dirstamp)
+src/libs/libgroff/libgroff_a-relocate.$(OBJEXT):  \
+       src/libs/libgroff/$(am__dirstamp) \
+       src/libs/libgroff/$(DEPDIR)/$(am__dirstamp)
+src/libs/libgroff/libgroff_a-searchpath.$(OBJEXT):  \
+       src/libs/libgroff/$(am__dirstamp) \
+       src/libs/libgroff/$(DEPDIR)/$(am__dirstamp)
+src/libs/libgroff/libgroff_a-spawnvp.$(OBJEXT):  \
+       src/libs/libgroff/$(am__dirstamp) \
+       src/libs/libgroff/$(DEPDIR)/$(am__dirstamp)
+src/libs/libgroff/libgroff_a-string.$(OBJEXT):  \
+       src/libs/libgroff/$(am__dirstamp) \
+       src/libs/libgroff/$(DEPDIR)/$(am__dirstamp)
+src/libs/libgroff/libgroff_a-strsave.$(OBJEXT):  \
+       src/libs/libgroff/$(am__dirstamp) \
+       src/libs/libgroff/$(DEPDIR)/$(am__dirstamp)
+src/libs/libgroff/libgroff_a-symbol.$(OBJEXT):  \
+       src/libs/libgroff/$(am__dirstamp) \
+       src/libs/libgroff/$(DEPDIR)/$(am__dirstamp)
+src/libs/libgroff/libgroff_a-tmpfile.$(OBJEXT):  \
+       src/libs/libgroff/$(am__dirstamp) \
+       src/libs/libgroff/$(DEPDIR)/$(am__dirstamp)
+src/libs/libgroff/libgroff_a-tmpname.$(OBJEXT):  \
+       src/libs/libgroff/$(am__dirstamp) \
+       src/libs/libgroff/$(DEPDIR)/$(am__dirstamp)
+src/libs/libgroff/libgroff_a-unicode.$(OBJEXT):  \
+       src/libs/libgroff/$(am__dirstamp) \
+       src/libs/libgroff/$(DEPDIR)/$(am__dirstamp)
+src/libs/libgroff/libgroff_a-uniglyph.$(OBJEXT):  \
+       src/libs/libgroff/$(am__dirstamp) \
+       src/libs/libgroff/$(DEPDIR)/$(am__dirstamp)
+src/libs/libgroff/libgroff_a-uniuni.$(OBJEXT):  \
+       src/libs/libgroff/$(am__dirstamp) \
+       src/libs/libgroff/$(DEPDIR)/$(am__dirstamp)
+src/libs/libgroff/libgroff_a-version.$(OBJEXT):  \
+       src/libs/libgroff/$(am__dirstamp) \
+       src/libs/libgroff/$(DEPDIR)/$(am__dirstamp)
+
+libgroff.a: $(libgroff_a_OBJECTS) $(libgroff_a_DEPENDENCIES) $(EXTRA_libgroff_a_DEPENDENCIES) 
+       $(AM_V_at)-rm -f libgroff.a
+       $(AM_V_AR)$(libgroff_a_AR) libgroff.a $(libgroff_a_OBJECTS) $(libgroff_a_LIBADD)
+       $(AM_V_at)$(RANLIB) libgroff.a
+src/libs/libxutil/$(am__dirstamp):
+       @$(MKDIR_P) src/libs/libxutil
+       @: > src/libs/libxutil/$(am__dirstamp)
+src/libs/libxutil/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) src/libs/libxutil/$(DEPDIR)
+       @: > src/libs/libxutil/$(DEPDIR)/$(am__dirstamp)
+src/libs/libxutil/libxutil_a-DviChar.$(OBJEXT):  \
+       src/libs/libxutil/$(am__dirstamp) \
+       src/libs/libxutil/$(DEPDIR)/$(am__dirstamp)
+src/libs/libxutil/libxutil_a-XFontName.$(OBJEXT):  \
+       src/libs/libxutil/$(am__dirstamp) \
+       src/libs/libxutil/$(DEPDIR)/$(am__dirstamp)
+src/libs/libxutil/libxutil_a-xmalloc.$(OBJEXT):  \
+       src/libs/libxutil/$(am__dirstamp) \
+       src/libs/libxutil/$(DEPDIR)/$(am__dirstamp)
+
+libxutil.a: $(libxutil_a_OBJECTS) $(libxutil_a_DEPENDENCIES) $(EXTRA_libxutil_a_DEPENDENCIES) 
+       $(AM_V_at)-rm -f libxutil.a
+       $(AM_V_AR)$(libxutil_a_AR) libxutil.a $(libxutil_a_OBJECTS) $(libxutil_a_LIBADD)
+       $(AM_V_at)$(RANLIB) libxutil.a
+src/utils/addftinfo/$(am__dirstamp):
+       @$(MKDIR_P) src/utils/addftinfo
+       @: > src/utils/addftinfo/$(am__dirstamp)
+src/utils/addftinfo/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) src/utils/addftinfo/$(DEPDIR)
+       @: > src/utils/addftinfo/$(DEPDIR)/$(am__dirstamp)
+src/utils/addftinfo/addftinfo.$(OBJEXT):  \
+       src/utils/addftinfo/$(am__dirstamp) \
+       src/utils/addftinfo/$(DEPDIR)/$(am__dirstamp)
+src/utils/addftinfo/guess.$(OBJEXT):  \
+       src/utils/addftinfo/$(am__dirstamp) \
+       src/utils/addftinfo/$(DEPDIR)/$(am__dirstamp)
+
+addftinfo$(EXEEXT): $(addftinfo_OBJECTS) $(addftinfo_DEPENDENCIES) $(EXTRA_addftinfo_DEPENDENCIES) 
+       @rm -f addftinfo$(EXEEXT)
+       $(AM_V_CXXLD)$(CXXLINK) $(addftinfo_OBJECTS) $(addftinfo_LDADD) $(LIBS)
+src/preproc/eqn/$(am__dirstamp):
+       @$(MKDIR_P) src/preproc/eqn
+       @: > src/preproc/eqn/$(am__dirstamp)
+src/preproc/eqn/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) src/preproc/eqn/$(DEPDIR)
+       @: > src/preproc/eqn/$(DEPDIR)/$(am__dirstamp)
+src/preproc/eqn/eqn-main.$(OBJEXT): src/preproc/eqn/$(am__dirstamp) \
+       src/preproc/eqn/$(DEPDIR)/$(am__dirstamp)
+src/preproc/eqn/eqn-lex.$(OBJEXT): src/preproc/eqn/$(am__dirstamp) \
+       src/preproc/eqn/$(DEPDIR)/$(am__dirstamp)
+src/preproc/eqn/eqn-box.$(OBJEXT): src/preproc/eqn/$(am__dirstamp) \
+       src/preproc/eqn/$(DEPDIR)/$(am__dirstamp)
+src/preproc/eqn/eqn-limit.$(OBJEXT): src/preproc/eqn/$(am__dirstamp) \
+       src/preproc/eqn/$(DEPDIR)/$(am__dirstamp)
+src/preproc/eqn/eqn-list.$(OBJEXT): src/preproc/eqn/$(am__dirstamp) \
+       src/preproc/eqn/$(DEPDIR)/$(am__dirstamp)
+src/preproc/eqn/eqn-over.$(OBJEXT): src/preproc/eqn/$(am__dirstamp) \
+       src/preproc/eqn/$(DEPDIR)/$(am__dirstamp)
+src/preproc/eqn/eqn-text.$(OBJEXT): src/preproc/eqn/$(am__dirstamp) \
+       src/preproc/eqn/$(DEPDIR)/$(am__dirstamp)
+src/preproc/eqn/eqn-script.$(OBJEXT): src/preproc/eqn/$(am__dirstamp) \
+       src/preproc/eqn/$(DEPDIR)/$(am__dirstamp)
+src/preproc/eqn/eqn-mark.$(OBJEXT): src/preproc/eqn/$(am__dirstamp) \
+       src/preproc/eqn/$(DEPDIR)/$(am__dirstamp)
+src/preproc/eqn/eqn-other.$(OBJEXT): src/preproc/eqn/$(am__dirstamp) \
+       src/preproc/eqn/$(DEPDIR)/$(am__dirstamp)
+src/preproc/eqn/eqn-delim.$(OBJEXT): src/preproc/eqn/$(am__dirstamp) \
+       src/preproc/eqn/$(DEPDIR)/$(am__dirstamp)
+src/preproc/eqn/eqn-sqrt.$(OBJEXT): src/preproc/eqn/$(am__dirstamp) \
+       src/preproc/eqn/$(DEPDIR)/$(am__dirstamp)
+src/preproc/eqn/eqn-pile.$(OBJEXT): src/preproc/eqn/$(am__dirstamp) \
+       src/preproc/eqn/$(DEPDIR)/$(am__dirstamp)
+src/preproc/eqn/eqn-special.$(OBJEXT):  \
+       src/preproc/eqn/$(am__dirstamp) \
+       src/preproc/eqn/$(DEPDIR)/$(am__dirstamp)
+src/preproc/eqn/eqn.hpp: src/preproc/eqn/eqn.cpp
+       @if test ! -f $@; then rm -f src/preproc/eqn/eqn.cpp; else :; fi
+       @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) src/preproc/eqn/eqn.cpp; else :; fi
+src/preproc/eqn/eqn-eqn.$(OBJEXT): src/preproc/eqn/$(am__dirstamp) \
+       src/preproc/eqn/$(DEPDIR)/$(am__dirstamp)
+
+eqn$(EXEEXT): $(eqn_OBJECTS) $(eqn_DEPENDENCIES) $(EXTRA_eqn_DEPENDENCIES) 
+       @rm -f eqn$(EXEEXT)
+       $(AM_V_CXXLD)$(CXXLINK) $(eqn_OBJECTS) $(eqn_LDADD) $(LIBS)
+src/preproc/grn/$(am__dirstamp):
+       @$(MKDIR_P) src/preproc/grn
+       @: > src/preproc/grn/$(am__dirstamp)
+src/preproc/grn/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) src/preproc/grn/$(DEPDIR)
+       @: > src/preproc/grn/$(DEPDIR)/$(am__dirstamp)
+src/preproc/grn/hdb.$(OBJEXT): src/preproc/grn/$(am__dirstamp) \
+       src/preproc/grn/$(DEPDIR)/$(am__dirstamp)
+src/preproc/grn/hpoint.$(OBJEXT): src/preproc/grn/$(am__dirstamp) \
+       src/preproc/grn/$(DEPDIR)/$(am__dirstamp)
+src/preproc/grn/hgraph.$(OBJEXT): src/preproc/grn/$(am__dirstamp) \
+       src/preproc/grn/$(DEPDIR)/$(am__dirstamp)
+src/preproc/grn/main.$(OBJEXT): src/preproc/grn/$(am__dirstamp) \
+       src/preproc/grn/$(DEPDIR)/$(am__dirstamp)
+
+grn$(EXEEXT): $(grn_OBJECTS) $(grn_DEPENDENCIES) $(EXTRA_grn_DEPENDENCIES) 
+       @rm -f grn$(EXEEXT)
+       $(AM_V_CXXLD)$(CXXLINK) $(grn_OBJECTS) $(grn_LDADD) $(LIBS)
+src/devices/grodvi/$(am__dirstamp):
+       @$(MKDIR_P) src/devices/grodvi
+       @: > src/devices/grodvi/$(am__dirstamp)
+src/devices/grodvi/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) src/devices/grodvi/$(DEPDIR)
+       @: > src/devices/grodvi/$(DEPDIR)/$(am__dirstamp)
+src/devices/grodvi/dvi.$(OBJEXT): src/devices/grodvi/$(am__dirstamp) \
+       src/devices/grodvi/$(DEPDIR)/$(am__dirstamp)
+
+grodvi$(EXEEXT): $(grodvi_OBJECTS) $(grodvi_DEPENDENCIES) $(EXTRA_grodvi_DEPENDENCIES) 
+       @rm -f grodvi$(EXEEXT)
+       $(AM_V_CXXLD)$(CXXLINK) $(grodvi_OBJECTS) $(grodvi_LDADD) $(LIBS)
+src/roff/groff/$(am__dirstamp):
+       @$(MKDIR_P) src/roff/groff
+       @: > src/roff/groff/$(am__dirstamp)
+src/roff/groff/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) src/roff/groff/$(DEPDIR)
+       @: > src/roff/groff/$(DEPDIR)/$(am__dirstamp)
+src/roff/groff/groff.$(OBJEXT): src/roff/groff/$(am__dirstamp) \
+       src/roff/groff/$(DEPDIR)/$(am__dirstamp)
+src/roff/groff/pipeline.$(OBJEXT): src/roff/groff/$(am__dirstamp) \
+       src/roff/groff/$(DEPDIR)/$(am__dirstamp)
+
+groff$(EXEEXT): $(groff_OBJECTS) $(groff_DEPENDENCIES) $(EXTRA_groff_DEPENDENCIES) 
+       @rm -f groff$(EXEEXT)
+       $(AM_V_CXXLD)$(CXXLINK) $(groff_OBJECTS) $(groff_LDADD) $(LIBS)
+src/devices/grolbp/$(am__dirstamp):
+       @$(MKDIR_P) src/devices/grolbp
+       @: > src/devices/grolbp/$(am__dirstamp)
+src/devices/grolbp/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) src/devices/grolbp/$(DEPDIR)
+       @: > src/devices/grolbp/$(DEPDIR)/$(am__dirstamp)
+src/devices/grolbp/lbp.$(OBJEXT): src/devices/grolbp/$(am__dirstamp) \
+       src/devices/grolbp/$(DEPDIR)/$(am__dirstamp)
+
+grolbp$(EXEEXT): $(grolbp_OBJECTS) $(grolbp_DEPENDENCIES) $(EXTRA_grolbp_DEPENDENCIES) 
+       @rm -f grolbp$(EXEEXT)
+       $(AM_V_CXXLD)$(CXXLINK) $(grolbp_OBJECTS) $(grolbp_LDADD) $(LIBS)
+src/devices/grolj4/$(am__dirstamp):
+       @$(MKDIR_P) src/devices/grolj4
+       @: > src/devices/grolj4/$(am__dirstamp)
+src/devices/grolj4/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) src/devices/grolj4/$(DEPDIR)
+       @: > src/devices/grolj4/$(DEPDIR)/$(am__dirstamp)
+src/devices/grolj4/lj4.$(OBJEXT): src/devices/grolj4/$(am__dirstamp) \
+       src/devices/grolj4/$(DEPDIR)/$(am__dirstamp)
+
+grolj4$(EXEEXT): $(grolj4_OBJECTS) $(grolj4_DEPENDENCIES) $(EXTRA_grolj4_DEPENDENCIES) 
+       @rm -f grolj4$(EXEEXT)
+       $(AM_V_CXXLD)$(CXXLINK) $(grolj4_OBJECTS) $(grolj4_LDADD) $(LIBS)
+src/devices/grops/$(am__dirstamp):
+       @$(MKDIR_P) src/devices/grops
+       @: > src/devices/grops/$(am__dirstamp)
+src/devices/grops/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) src/devices/grops/$(DEPDIR)
+       @: > src/devices/grops/$(DEPDIR)/$(am__dirstamp)
+src/devices/grops/ps.$(OBJEXT): src/devices/grops/$(am__dirstamp) \
+       src/devices/grops/$(DEPDIR)/$(am__dirstamp)
+src/devices/grops/psrm.$(OBJEXT): src/devices/grops/$(am__dirstamp) \
+       src/devices/grops/$(DEPDIR)/$(am__dirstamp)
+
+grops$(EXEEXT): $(grops_OBJECTS) $(grops_DEPENDENCIES) $(EXTRA_grops_DEPENDENCIES) 
+       @rm -f grops$(EXEEXT)
+       $(AM_V_CXXLD)$(CXXLINK) $(grops_OBJECTS) $(grops_LDADD) $(LIBS)
+src/devices/grotty/$(am__dirstamp):
+       @$(MKDIR_P) src/devices/grotty
+       @: > src/devices/grotty/$(am__dirstamp)
+src/devices/grotty/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) src/devices/grotty/$(DEPDIR)
+       @: > src/devices/grotty/$(DEPDIR)/$(am__dirstamp)
+src/devices/grotty/tty.$(OBJEXT): src/devices/grotty/$(am__dirstamp) \
+       src/devices/grotty/$(DEPDIR)/$(am__dirstamp)
+
+grotty$(EXEEXT): $(grotty_OBJECTS) $(grotty_DEPENDENCIES) $(EXTRA_grotty_DEPENDENCIES) 
+       @rm -f grotty$(EXEEXT)
+       $(AM_V_CXXLD)$(CXXLINK) $(grotty_OBJECTS) $(grotty_LDADD) $(LIBS)
+src/devices/xditview/$(am__dirstamp):
+       @$(MKDIR_P) src/devices/xditview
+       @: > src/devices/xditview/$(am__dirstamp)
+src/devices/xditview/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) src/devices/xditview/$(DEPDIR)
+       @: > src/devices/xditview/$(DEPDIR)/$(am__dirstamp)
+src/devices/xditview/gxditview-device.$(OBJEXT):  \
+       src/devices/xditview/$(am__dirstamp) \
+       src/devices/xditview/$(DEPDIR)/$(am__dirstamp)
+src/devices/xditview/gxditview-draw.$(OBJEXT):  \
+       src/devices/xditview/$(am__dirstamp) \
+       src/devices/xditview/$(DEPDIR)/$(am__dirstamp)
+src/devices/xditview/gxditview-Dvi.$(OBJEXT):  \
+       src/devices/xditview/$(am__dirstamp) \
+       src/devices/xditview/$(DEPDIR)/$(am__dirstamp)
+src/devices/xditview/gxditview-font.$(OBJEXT):  \
+       src/devices/xditview/$(am__dirstamp) \
+       src/devices/xditview/$(DEPDIR)/$(am__dirstamp)
+src/devices/xditview/gxditview-lex.$(OBJEXT):  \
+       src/devices/xditview/$(am__dirstamp) \
+       src/devices/xditview/$(DEPDIR)/$(am__dirstamp)
+src/devices/xditview/gxditview-page.$(OBJEXT):  \
+       src/devices/xditview/$(am__dirstamp) \
+       src/devices/xditview/$(DEPDIR)/$(am__dirstamp)
+src/devices/xditview/gxditview-parse.$(OBJEXT):  \
+       src/devices/xditview/$(am__dirstamp) \
+       src/devices/xditview/$(DEPDIR)/$(am__dirstamp)
+src/devices/xditview/gxditview-xditview.$(OBJEXT):  \
+       src/devices/xditview/$(am__dirstamp) \
+       src/devices/xditview/$(DEPDIR)/$(am__dirstamp)
+
+gxditview$(EXEEXT): $(gxditview_OBJECTS) $(gxditview_DEPENDENCIES) $(EXTRA_gxditview_DEPENDENCIES) 
+       @rm -f gxditview$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(gxditview_OBJECTS) $(gxditview_LDADD) $(LIBS)
+src/utils/hpftodit/$(am__dirstamp):
+       @$(MKDIR_P) src/utils/hpftodit
+       @: > src/utils/hpftodit/$(am__dirstamp)
+src/utils/hpftodit/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) src/utils/hpftodit/$(DEPDIR)
+       @: > src/utils/hpftodit/$(DEPDIR)/$(am__dirstamp)
+src/utils/hpftodit/hpftodit.$(OBJEXT):  \
+       src/utils/hpftodit/$(am__dirstamp) \
+       src/utils/hpftodit/$(DEPDIR)/$(am__dirstamp)
+src/utils/hpftodit/hpuni.$(OBJEXT):  \
+       src/utils/hpftodit/$(am__dirstamp) \
+       src/utils/hpftodit/$(DEPDIR)/$(am__dirstamp)
+
+hpftodit$(EXEEXT): $(hpftodit_OBJECTS) $(hpftodit_DEPENDENCIES) $(EXTRA_hpftodit_DEPENDENCIES) 
+       @rm -f hpftodit$(EXEEXT)
+       $(AM_V_CXXLD)$(CXXLINK) $(hpftodit_OBJECTS) $(hpftodit_LDADD) $(LIBS)
+src/utils/indxbib/$(am__dirstamp):
+       @$(MKDIR_P) src/utils/indxbib
+       @: > src/utils/indxbib/$(am__dirstamp)
+src/utils/indxbib/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) src/utils/indxbib/$(DEPDIR)
+       @: > src/utils/indxbib/$(DEPDIR)/$(am__dirstamp)
+src/utils/indxbib/indxbib.$(OBJEXT):  \
+       src/utils/indxbib/$(am__dirstamp) \
+       src/utils/indxbib/$(DEPDIR)/$(am__dirstamp)
+src/utils/indxbib/signal.$(OBJEXT): src/utils/indxbib/$(am__dirstamp) \
+       src/utils/indxbib/$(DEPDIR)/$(am__dirstamp)
+
+indxbib$(EXEEXT): $(indxbib_OBJECTS) $(indxbib_DEPENDENCIES) $(EXTRA_indxbib_DEPENDENCIES) 
+       @rm -f indxbib$(EXEEXT)
+       $(AM_V_CXXLD)$(CXXLINK) $(indxbib_OBJECTS) $(indxbib_LDADD) $(LIBS)
+src/utils/lkbib/$(am__dirstamp):
+       @$(MKDIR_P) src/utils/lkbib
+       @: > src/utils/lkbib/$(am__dirstamp)
+src/utils/lkbib/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) src/utils/lkbib/$(DEPDIR)
+       @: > src/utils/lkbib/$(DEPDIR)/$(am__dirstamp)
+src/utils/lkbib/lkbib.$(OBJEXT): src/utils/lkbib/$(am__dirstamp) \
+       src/utils/lkbib/$(DEPDIR)/$(am__dirstamp)
+
+lkbib$(EXEEXT): $(lkbib_OBJECTS) $(lkbib_DEPENDENCIES) $(EXTRA_lkbib_DEPENDENCIES) 
+       @rm -f lkbib$(EXEEXT)
+       $(AM_V_CXXLD)$(CXXLINK) $(lkbib_OBJECTS) $(lkbib_LDADD) $(LIBS)
+src/utils/lookbib/$(am__dirstamp):
+       @$(MKDIR_P) src/utils/lookbib
+       @: > src/utils/lookbib/$(am__dirstamp)
+src/utils/lookbib/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) src/utils/lookbib/$(DEPDIR)
+       @: > src/utils/lookbib/$(DEPDIR)/$(am__dirstamp)
+src/utils/lookbib/lookbib.$(OBJEXT):  \
+       src/utils/lookbib/$(am__dirstamp) \
+       src/utils/lookbib/$(DEPDIR)/$(am__dirstamp)
+
+lookbib$(EXEEXT): $(lookbib_OBJECTS) $(lookbib_DEPENDENCIES) $(EXTRA_lookbib_DEPENDENCIES) 
+       @rm -f lookbib$(EXEEXT)
+       $(AM_V_CXXLD)$(CXXLINK) $(lookbib_OBJECTS) $(lookbib_LDADD) $(LIBS)
+src/utils/pfbtops/$(am__dirstamp):
+       @$(MKDIR_P) src/utils/pfbtops
+       @: > src/utils/pfbtops/$(am__dirstamp)
+src/utils/pfbtops/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) src/utils/pfbtops/$(DEPDIR)
+       @: > src/utils/pfbtops/$(DEPDIR)/$(am__dirstamp)
+src/utils/pfbtops/pfbtops.$(OBJEXT):  \
+       src/utils/pfbtops/$(am__dirstamp) \
+       src/utils/pfbtops/$(DEPDIR)/$(am__dirstamp)
+src/utils/pfbtops/dummy.$(OBJEXT): src/utils/pfbtops/$(am__dirstamp) \
+       src/utils/pfbtops/$(DEPDIR)/$(am__dirstamp)
+
+pfbtops$(EXEEXT): $(pfbtops_OBJECTS) $(pfbtops_DEPENDENCIES) $(EXTRA_pfbtops_DEPENDENCIES) 
+       @rm -f pfbtops$(EXEEXT)
+       $(AM_V_CXXLD)$(CXXLINK) $(pfbtops_OBJECTS) $(pfbtops_LDADD) $(LIBS)
+src/preproc/pic/pic.hpp: src/preproc/pic/pic.cpp
+       @if test ! -f $@; then rm -f src/preproc/pic/pic.cpp; else :; fi
+       @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) src/preproc/pic/pic.cpp; else :; fi
+src/preproc/pic/$(am__dirstamp):
+       @$(MKDIR_P) src/preproc/pic
+       @: > src/preproc/pic/$(am__dirstamp)
+src/preproc/pic/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) src/preproc/pic/$(DEPDIR)
+       @: > src/preproc/pic/$(DEPDIR)/$(am__dirstamp)
+src/preproc/pic/pic-pic.$(OBJEXT): src/preproc/pic/$(am__dirstamp) \
+       src/preproc/pic/$(DEPDIR)/$(am__dirstamp)
+src/preproc/pic/pic-lex.$(OBJEXT): src/preproc/pic/$(am__dirstamp) \
+       src/preproc/pic/$(DEPDIR)/$(am__dirstamp)
+src/preproc/pic/pic-main.$(OBJEXT): src/preproc/pic/$(am__dirstamp) \
+       src/preproc/pic/$(DEPDIR)/$(am__dirstamp)
+src/preproc/pic/pic-object.$(OBJEXT): src/preproc/pic/$(am__dirstamp) \
+       src/preproc/pic/$(DEPDIR)/$(am__dirstamp)
+src/preproc/pic/pic-common.$(OBJEXT): src/preproc/pic/$(am__dirstamp) \
+       src/preproc/pic/$(DEPDIR)/$(am__dirstamp)
+src/preproc/pic/pic-troff.$(OBJEXT): src/preproc/pic/$(am__dirstamp) \
+       src/preproc/pic/$(DEPDIR)/$(am__dirstamp)
+src/preproc/pic/pic-tex.$(OBJEXT): src/preproc/pic/$(am__dirstamp) \
+       src/preproc/pic/$(DEPDIR)/$(am__dirstamp)
+
+pic$(EXEEXT): $(pic_OBJECTS) $(pic_DEPENDENCIES) $(EXTRA_pic_DEPENDENCIES) 
+       @rm -f pic$(EXEEXT)
+       $(AM_V_CXXLD)$(CXXLINK) $(pic_OBJECTS) $(pic_LDADD) $(LIBS)
+src/devices/grohtml/$(am__dirstamp):
+       @$(MKDIR_P) src/devices/grohtml
+       @: > src/devices/grohtml/$(am__dirstamp)
+src/devices/grohtml/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) src/devices/grohtml/$(DEPDIR)
+       @: > src/devices/grohtml/$(DEPDIR)/$(am__dirstamp)
+src/devices/grohtml/post-html.$(OBJEXT):  \
+       src/devices/grohtml/$(am__dirstamp) \
+       src/devices/grohtml/$(DEPDIR)/$(am__dirstamp)
+src/devices/grohtml/html-table.$(OBJEXT):  \
+       src/devices/grohtml/$(am__dirstamp) \
+       src/devices/grohtml/$(DEPDIR)/$(am__dirstamp)
+src/devices/grohtml/html-text.$(OBJEXT):  \
+       src/devices/grohtml/$(am__dirstamp) \
+       src/devices/grohtml/$(DEPDIR)/$(am__dirstamp)
+src/devices/grohtml/output.$(OBJEXT):  \
+       src/devices/grohtml/$(am__dirstamp) \
+       src/devices/grohtml/$(DEPDIR)/$(am__dirstamp)
+
+post-grohtml$(EXEEXT): $(post_grohtml_OBJECTS) $(post_grohtml_DEPENDENCIES) $(EXTRA_post_grohtml_DEPENDENCIES) 
+       @rm -f post-grohtml$(EXEEXT)
+       $(AM_V_CXXLD)$(CXXLINK) $(post_grohtml_OBJECTS) $(post_grohtml_LDADD) $(LIBS)
+src/preproc/html/$(am__dirstamp):
+       @$(MKDIR_P) src/preproc/html
+       @: > src/preproc/html/$(am__dirstamp)
+src/preproc/html/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) src/preproc/html/$(DEPDIR)
+       @: > src/preproc/html/$(DEPDIR)/$(am__dirstamp)
+src/preproc/html/pre-html.$(OBJEXT): src/preproc/html/$(am__dirstamp) \
+       src/preproc/html/$(DEPDIR)/$(am__dirstamp)
+src/preproc/html/pushback.$(OBJEXT): src/preproc/html/$(am__dirstamp) \
+       src/preproc/html/$(DEPDIR)/$(am__dirstamp)
+
+pre-grohtml$(EXEEXT): $(pre_grohtml_OBJECTS) $(pre_grohtml_DEPENDENCIES) $(EXTRA_pre_grohtml_DEPENDENCIES) 
+       @rm -f pre-grohtml$(EXEEXT)
+       $(AM_V_CXXLD)$(CXXLINK) $(pre_grohtml_OBJECTS) $(pre_grohtml_LDADD) $(LIBS)
+src/preproc/preconv/$(am__dirstamp):
+       @$(MKDIR_P) src/preproc/preconv
+       @: > src/preproc/preconv/$(am__dirstamp)
+src/preproc/preconv/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) src/preproc/preconv/$(DEPDIR)
+       @: > src/preproc/preconv/$(DEPDIR)/$(am__dirstamp)
+src/preproc/preconv/preconv-preconv.$(OBJEXT):  \
+       src/preproc/preconv/$(am__dirstamp) \
+       src/preproc/preconv/$(DEPDIR)/$(am__dirstamp)
+
+preconv$(EXEEXT): $(preconv_OBJECTS) $(preconv_DEPENDENCIES) $(EXTRA_preconv_DEPENDENCIES) 
+       @rm -f preconv$(EXEEXT)
+       $(AM_V_CXXLD)$(CXXLINK) $(preconv_OBJECTS) $(preconv_LDADD) $(LIBS)
+src/preproc/refer/$(am__dirstamp):
+       @$(MKDIR_P) src/preproc/refer
+       @: > src/preproc/refer/$(am__dirstamp)
+src/preproc/refer/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) src/preproc/refer/$(DEPDIR)
+       @: > src/preproc/refer/$(DEPDIR)/$(am__dirstamp)
+src/preproc/refer/refer-command.$(OBJEXT):  \
+       src/preproc/refer/$(am__dirstamp) \
+       src/preproc/refer/$(DEPDIR)/$(am__dirstamp)
+src/preproc/refer/refer-ref.$(OBJEXT):  \
+       src/preproc/refer/$(am__dirstamp) \
+       src/preproc/refer/$(DEPDIR)/$(am__dirstamp)
+src/preproc/refer/refer-refer.$(OBJEXT):  \
+       src/preproc/refer/$(am__dirstamp) \
+       src/preproc/refer/$(DEPDIR)/$(am__dirstamp)
+src/preproc/refer/refer-token.$(OBJEXT):  \
+       src/preproc/refer/$(am__dirstamp) \
+       src/preproc/refer/$(DEPDIR)/$(am__dirstamp)
+src/preproc/refer/label.hpp: src/preproc/refer/label.cpp
+       @if test ! -f $@; then rm -f src/preproc/refer/label.cpp; else :; fi
+       @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) src/preproc/refer/label.cpp; else :; fi
+src/preproc/refer/refer-label.$(OBJEXT):  \
+       src/preproc/refer/$(am__dirstamp) \
+       src/preproc/refer/$(DEPDIR)/$(am__dirstamp)
+
+refer$(EXEEXT): $(refer_OBJECTS) $(refer_DEPENDENCIES) $(EXTRA_refer_DEPENDENCIES) 
+       @rm -f refer$(EXEEXT)
+       $(AM_V_CXXLD)$(CXXLINK) $(refer_OBJECTS) $(refer_LDADD) $(LIBS)
+src/preproc/soelim/$(am__dirstamp):
+       @$(MKDIR_P) src/preproc/soelim
+       @: > src/preproc/soelim/$(am__dirstamp)
+src/preproc/soelim/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) src/preproc/soelim/$(DEPDIR)
+       @: > src/preproc/soelim/$(DEPDIR)/$(am__dirstamp)
+src/preproc/soelim/soelim.$(OBJEXT):  \
+       src/preproc/soelim/$(am__dirstamp) \
+       src/preproc/soelim/$(DEPDIR)/$(am__dirstamp)
+
+soelim$(EXEEXT): $(soelim_OBJECTS) $(soelim_DEPENDENCIES) $(EXTRA_soelim_DEPENDENCIES) 
+       @rm -f soelim$(EXEEXT)
+       $(AM_V_CXXLD)$(CXXLINK) $(soelim_OBJECTS) $(soelim_LDADD) $(LIBS)
+src/preproc/tbl/$(am__dirstamp):
+       @$(MKDIR_P) src/preproc/tbl
+       @: > src/preproc/tbl/$(am__dirstamp)
+src/preproc/tbl/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) src/preproc/tbl/$(DEPDIR)
+       @: > src/preproc/tbl/$(DEPDIR)/$(am__dirstamp)
+src/preproc/tbl/main.$(OBJEXT): src/preproc/tbl/$(am__dirstamp) \
+       src/preproc/tbl/$(DEPDIR)/$(am__dirstamp)
+src/preproc/tbl/table.$(OBJEXT): src/preproc/tbl/$(am__dirstamp) \
+       src/preproc/tbl/$(DEPDIR)/$(am__dirstamp)
+
+tbl$(EXEEXT): $(tbl_OBJECTS) $(tbl_DEPENDENCIES) $(EXTRA_tbl_DEPENDENCIES) 
+       @rm -f tbl$(EXEEXT)
+       $(AM_V_CXXLD)$(CXXLINK) $(tbl_OBJECTS) $(tbl_LDADD) $(LIBS)
+src/utils/tfmtodit/$(am__dirstamp):
+       @$(MKDIR_P) src/utils/tfmtodit
+       @: > src/utils/tfmtodit/$(am__dirstamp)
+src/utils/tfmtodit/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) src/utils/tfmtodit/$(DEPDIR)
+       @: > src/utils/tfmtodit/$(DEPDIR)/$(am__dirstamp)
+src/utils/tfmtodit/tfmtodit.$(OBJEXT):  \
+       src/utils/tfmtodit/$(am__dirstamp) \
+       src/utils/tfmtodit/$(DEPDIR)/$(am__dirstamp)
+
+tfmtodit$(EXEEXT): $(tfmtodit_OBJECTS) $(tfmtodit_DEPENDENCIES) $(EXTRA_tfmtodit_DEPENDENCIES) 
+       @rm -f tfmtodit$(EXEEXT)
+       $(AM_V_CXXLD)$(CXXLINK) $(tfmtodit_OBJECTS) $(tfmtodit_LDADD) $(LIBS)
+src/roff/troff/$(am__dirstamp):
+       @$(MKDIR_P) src/roff/troff
+       @: > src/roff/troff/$(am__dirstamp)
+src/roff/troff/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) src/roff/troff/$(DEPDIR)
+       @: > src/roff/troff/$(DEPDIR)/$(am__dirstamp)
+src/roff/troff/dictionary.$(OBJEXT): src/roff/troff/$(am__dirstamp) \
+       src/roff/troff/$(DEPDIR)/$(am__dirstamp)
+src/roff/troff/div.$(OBJEXT): src/roff/troff/$(am__dirstamp) \
+       src/roff/troff/$(DEPDIR)/$(am__dirstamp)
+src/roff/troff/env.$(OBJEXT): src/roff/troff/$(am__dirstamp) \
+       src/roff/troff/$(DEPDIR)/$(am__dirstamp)
+src/roff/troff/input.$(OBJEXT): src/roff/troff/$(am__dirstamp) \
+       src/roff/troff/$(DEPDIR)/$(am__dirstamp)
+src/roff/troff/mtsm.$(OBJEXT): src/roff/troff/$(am__dirstamp) \
+       src/roff/troff/$(DEPDIR)/$(am__dirstamp)
+src/roff/troff/node.$(OBJEXT): src/roff/troff/$(am__dirstamp) \
+       src/roff/troff/$(DEPDIR)/$(am__dirstamp)
+src/roff/troff/number.$(OBJEXT): src/roff/troff/$(am__dirstamp) \
+       src/roff/troff/$(DEPDIR)/$(am__dirstamp)
+src/roff/troff/reg.$(OBJEXT): src/roff/troff/$(am__dirstamp) \
+       src/roff/troff/$(DEPDIR)/$(am__dirstamp)
+src/roff/troff/majorminor.$(OBJEXT): src/roff/troff/$(am__dirstamp) \
+       src/roff/troff/$(DEPDIR)/$(am__dirstamp)
+
+troff$(EXEEXT): $(troff_OBJECTS) $(troff_DEPENDENCIES) $(EXTRA_troff_DEPENDENCIES) 
+       @rm -f troff$(EXEEXT)
+       $(AM_V_CXXLD)$(CXXLINK) $(troff_OBJECTS) $(troff_LDADD) $(LIBS)
+src/utils/xtotroff/$(am__dirstamp):
+       @$(MKDIR_P) src/utils/xtotroff
+       @: > src/utils/xtotroff/$(am__dirstamp)
+src/utils/xtotroff/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) src/utils/xtotroff/$(DEPDIR)
+       @: > src/utils/xtotroff/$(DEPDIR)/$(am__dirstamp)
+src/utils/xtotroff/xtotroff-xtotroff.$(OBJEXT):  \
+       src/utils/xtotroff/$(am__dirstamp) \
+       src/utils/xtotroff/$(DEPDIR)/$(am__dirstamp)
+
+xtotroff$(EXEEXT): $(xtotroff_OBJECTS) $(xtotroff_DEPENDENCIES) $(EXTRA_xtotroff_DEPENDENCIES) 
+       @rm -f xtotroff$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(xtotroff_OBJECTS) $(xtotroff_LDADD) $(LIBS)
+install-binSCRIPTS: $(bin_SCRIPTS)
+       @$(NORMAL_INSTALL)
+       @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
+       done | \
+       sed -e 'p;s,.*/,,;n' \
+           -e 'h;s|.*|.|' \
+           -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
+       $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
+         { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+           if ($$2 == $$4) { files[d] = files[d] " " $$1; \
+             if (++n[d] == $(am__install_max)) { \
+               print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
+           else { print "f", d "/" $$4, $$1 } } \
+         END { for (d in files) print "f", d, files[d] }' | \
+       while read type dir files; do \
+            if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+            test -z "$$files" || { \
+              echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \
+              $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
+            } \
+       ; done
+
+uninstall-binSCRIPTS:
+       @$(NORMAL_UNINSTALL)
+       @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \
+       files=`for p in $$list; do echo "$$p"; done | \
+              sed -e 's,.*/,,;$(transform)'`; \
+       dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir)
+install-dist_binSCRIPTS: $(dist_bin_SCRIPTS)
+       @$(NORMAL_INSTALL)
+       @list='$(dist_bin_SCRIPTS)'; test -n "$(bindir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
+       done | \
+       sed -e 'p;s,.*/,,;n' \
+           -e 'h;s|.*|.|' \
+           -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
+       $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
+         { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+           if ($$2 == $$4) { files[d] = files[d] " " $$1; \
+             if (++n[d] == $(am__install_max)) { \
+               print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
+           else { print "f", d "/" $$4, $$1 } } \
+         END { for (d in files) print "f", d, files[d] }' | \
+       while read type dir files; do \
+            if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+            test -z "$$files" || { \
+              echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \
+              $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
+            } \
+       ; done
+
+uninstall-dist_binSCRIPTS:
+       @$(NORMAL_UNINSTALL)
+       @list='$(dist_bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \
+       files=`for p in $$list; do echo "$$p"; done | \
+              sed -e 's,.*/,,;$(transform)'`; \
+       dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir)
+install-prefixexecbinSCRIPTS: $(prefixexecbin_SCRIPTS)
+       @$(NORMAL_INSTALL)
+       @list='$(prefixexecbin_SCRIPTS)'; test -n "$(prefixexecbindir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(prefixexecbindir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(prefixexecbindir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
+       done | \
+       sed -e 'p;s,.*/,,;n' \
+           -e 'h;s|.*|.|' \
+           -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
+       $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
+         { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+           if ($$2 == $$4) { files[d] = files[d] " " $$1; \
+             if (++n[d] == $(am__install_max)) { \
+               print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
+           else { print "f", d "/" $$4, $$1 } } \
+         END { for (d in files) print "f", d, files[d] }' | \
+       while read type dir files; do \
+            if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+            test -z "$$files" || { \
+              echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(prefixexecbindir)$$dir'"; \
+              $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(prefixexecbindir)$$dir" || exit $$?; \
+            } \
+       ; done
+
+uninstall-prefixexecbinSCRIPTS:
+       @$(NORMAL_UNINSTALL)
+       @list='$(prefixexecbin_SCRIPTS)'; test -n "$(prefixexecbindir)" || exit 0; \
+       files=`for p in $$list; do echo "$$p"; done | \
+              sed -e 's,.*/,,;$(transform)'`; \
+       dir='$(DESTDIR)$(prefixexecbindir)'; $(am__uninstall_files_from_dir)
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT)
+       -rm -f lib/*.$(OBJEXT)
+       -rm -f lib/uniwidth/*.$(OBJEXT)
+       -rm -f src/devices/grodvi/*.$(OBJEXT)
+       -rm -f src/devices/grohtml/*.$(OBJEXT)
+       -rm -f src/devices/grolbp/*.$(OBJEXT)
+       -rm -f src/devices/grolj4/*.$(OBJEXT)
+       -rm -f src/devices/grops/*.$(OBJEXT)
+       -rm -f src/devices/grotty/*.$(OBJEXT)
+       -rm -f src/devices/xditview/*.$(OBJEXT)
+       -rm -f src/libs/libbib/*.$(OBJEXT)
+       -rm -f src/libs/libdriver/*.$(OBJEXT)
+       -rm -f src/libs/libgroff/*.$(OBJEXT)
+       -rm -f src/libs/libxutil/*.$(OBJEXT)
+       -rm -f src/preproc/eqn/*.$(OBJEXT)
+       -rm -f src/preproc/grn/*.$(OBJEXT)
+       -rm -f src/preproc/html/*.$(OBJEXT)
+       -rm -f src/preproc/pic/*.$(OBJEXT)
+       -rm -f src/preproc/preconv/*.$(OBJEXT)
+       -rm -f src/preproc/refer/*.$(OBJEXT)
+       -rm -f src/preproc/soelim/*.$(OBJEXT)
+       -rm -f src/preproc/tbl/*.$(OBJEXT)
+       -rm -f src/roff/groff/*.$(OBJEXT)
+       -rm -f src/roff/troff/*.$(OBJEXT)
+       -rm -f src/utils/addftinfo/*.$(OBJEXT)
+       -rm -f src/utils/hpftodit/*.$(OBJEXT)
+       -rm -f src/utils/indxbib/*.$(OBJEXT)
+       -rm -f src/utils/lkbib/*.$(OBJEXT)
+       -rm -f src/utils/lookbib/*.$(OBJEXT)
+       -rm -f src/utils/pfbtops/*.$(OBJEXT)
+       -rm -f src/utils/tfmtodit/*.$(OBJEXT)
+       -rm -f src/utils/xtotroff/*.$(OBJEXT)
+
+distclean-compile:
+       -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/asnprintf.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/float.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/fprintf.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/frexp.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/frexpl.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/fseterr.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/isnan.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/isnand.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/isnanf.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/isnanl.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/itold.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/localcharset.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/math.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/memchr.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/printf-args.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/printf-frexp.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/printf-frexpl.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/printf-parse.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/signbitd.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/signbitf.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/signbitl.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/snprintf.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/vasnprintf.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/vsnprintf.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/wctype-h.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/wcwidth.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/xsize.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@lib/uniwidth/$(DEPDIR)/width.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/devices/grodvi/$(DEPDIR)/dvi.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/devices/grohtml/$(DEPDIR)/html-table.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/devices/grohtml/$(DEPDIR)/html-text.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/devices/grohtml/$(DEPDIR)/output.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/devices/grohtml/$(DEPDIR)/post-html.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/devices/grolbp/$(DEPDIR)/lbp.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/devices/grolj4/$(DEPDIR)/lj4.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/devices/grops/$(DEPDIR)/ps.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/devices/grops/$(DEPDIR)/psrm.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/devices/grotty/$(DEPDIR)/tty.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/devices/xditview/$(DEPDIR)/gxditview-Dvi.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/devices/xditview/$(DEPDIR)/gxditview-device.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/devices/xditview/$(DEPDIR)/gxditview-draw.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/devices/xditview/$(DEPDIR)/gxditview-font.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/devices/xditview/$(DEPDIR)/gxditview-lex.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/devices/xditview/$(DEPDIR)/gxditview-page.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/devices/xditview/$(DEPDIR)/gxditview-parse.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/devices/xditview/$(DEPDIR)/gxditview-xditview.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/libs/libbib/$(DEPDIR)/common.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/libs/libbib/$(DEPDIR)/index.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/libs/libbib/$(DEPDIR)/linear.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/libs/libbib/$(DEPDIR)/map.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/libs/libbib/$(DEPDIR)/search.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/libs/libdriver/$(DEPDIR)/input.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/libs/libdriver/$(DEPDIR)/printer.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/libs/libgroff/$(DEPDIR)/libgroff_a-assert.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/libs/libgroff/$(DEPDIR)/libgroff_a-change_lf.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/libs/libgroff/$(DEPDIR)/libgroff_a-cmap.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/libs/libgroff/$(DEPDIR)/libgroff_a-color.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/libs/libgroff/$(DEPDIR)/libgroff_a-cset.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/libs/libgroff/$(DEPDIR)/libgroff_a-curtime.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/libs/libgroff/$(DEPDIR)/libgroff_a-device.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/libs/libgroff/$(DEPDIR)/libgroff_a-errarg.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/libs/libgroff/$(DEPDIR)/libgroff_a-error.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/libs/libgroff/$(DEPDIR)/libgroff_a-fatal.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/libs/libgroff/$(DEPDIR)/libgroff_a-filename.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/libs/libgroff/$(DEPDIR)/libgroff_a-font.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/libs/libgroff/$(DEPDIR)/libgroff_a-fontfile.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/libs/libgroff/$(DEPDIR)/libgroff_a-geometry.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/libs/libgroff/$(DEPDIR)/libgroff_a-getopt.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/libs/libgroff/$(DEPDIR)/libgroff_a-getopt1.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/libs/libgroff/$(DEPDIR)/libgroff_a-glyphuni.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/libs/libgroff/$(DEPDIR)/libgroff_a-htmlhint.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/libs/libgroff/$(DEPDIR)/libgroff_a-hypot.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/libs/libgroff/$(DEPDIR)/libgroff_a-iftoa.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/libs/libgroff/$(DEPDIR)/libgroff_a-invalid.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/libs/libgroff/$(DEPDIR)/libgroff_a-itoa.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/libs/libgroff/$(DEPDIR)/libgroff_a-lf.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/libs/libgroff/$(DEPDIR)/libgroff_a-lineno.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/libs/libgroff/$(DEPDIR)/libgroff_a-localcharset.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/libs/libgroff/$(DEPDIR)/libgroff_a-macropath.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/libs/libgroff/$(DEPDIR)/libgroff_a-matherr.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/libs/libgroff/$(DEPDIR)/libgroff_a-maxfilename.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/libs/libgroff/$(DEPDIR)/libgroff_a-maxpathname.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/libs/libgroff/$(DEPDIR)/libgroff_a-mksdir.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/libs/libgroff/$(DEPDIR)/libgroff_a-nametoindex.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/libs/libgroff/$(DEPDIR)/libgroff_a-new.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/libs/libgroff/$(DEPDIR)/libgroff_a-paper.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/libs/libgroff/$(DEPDIR)/libgroff_a-prime.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/libs/libgroff/$(DEPDIR)/libgroff_a-progname.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/libs/libgroff/$(DEPDIR)/libgroff_a-ptable.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/libs/libgroff/$(DEPDIR)/libgroff_a-quotearg.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/libs/libgroff/$(DEPDIR)/libgroff_a-relocate.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/libs/libgroff/$(DEPDIR)/libgroff_a-searchpath.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/libs/libgroff/$(DEPDIR)/libgroff_a-spawnvp.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/libs/libgroff/$(DEPDIR)/libgroff_a-string.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/libs/libgroff/$(DEPDIR)/libgroff_a-strsave.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/libs/libgroff/$(DEPDIR)/libgroff_a-symbol.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/libs/libgroff/$(DEPDIR)/libgroff_a-tmpfile.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/libs/libgroff/$(DEPDIR)/libgroff_a-tmpname.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/libs/libgroff/$(DEPDIR)/libgroff_a-unicode.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/libs/libgroff/$(DEPDIR)/libgroff_a-uniglyph.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/libs/libgroff/$(DEPDIR)/libgroff_a-uniuni.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/libs/libgroff/$(DEPDIR)/libgroff_a-version.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/libs/libxutil/$(DEPDIR)/libxutil_a-DviChar.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/libs/libxutil/$(DEPDIR)/libxutil_a-XFontName.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/libs/libxutil/$(DEPDIR)/libxutil_a-xmalloc.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/preproc/eqn/$(DEPDIR)/eqn-box.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/preproc/eqn/$(DEPDIR)/eqn-delim.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/preproc/eqn/$(DEPDIR)/eqn-eqn.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/preproc/eqn/$(DEPDIR)/eqn-lex.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/preproc/eqn/$(DEPDIR)/eqn-limit.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/preproc/eqn/$(DEPDIR)/eqn-list.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/preproc/eqn/$(DEPDIR)/eqn-main.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/preproc/eqn/$(DEPDIR)/eqn-mark.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/preproc/eqn/$(DEPDIR)/eqn-other.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/preproc/eqn/$(DEPDIR)/eqn-over.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/preproc/eqn/$(DEPDIR)/eqn-pile.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/preproc/eqn/$(DEPDIR)/eqn-script.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/preproc/eqn/$(DEPDIR)/eqn-special.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/preproc/eqn/$(DEPDIR)/eqn-sqrt.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/preproc/eqn/$(DEPDIR)/eqn-text.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/preproc/grn/$(DEPDIR)/hdb.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/preproc/grn/$(DEPDIR)/hgraph.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/preproc/grn/$(DEPDIR)/hpoint.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/preproc/grn/$(DEPDIR)/main.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/preproc/html/$(DEPDIR)/pre-html.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/preproc/html/$(DEPDIR)/pushback.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/preproc/pic/$(DEPDIR)/pic-common.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/preproc/pic/$(DEPDIR)/pic-lex.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/preproc/pic/$(DEPDIR)/pic-main.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/preproc/pic/$(DEPDIR)/pic-object.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/preproc/pic/$(DEPDIR)/pic-pic.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/preproc/pic/$(DEPDIR)/pic-tex.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/preproc/pic/$(DEPDIR)/pic-troff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/preproc/preconv/$(DEPDIR)/preconv-preconv.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/preproc/refer/$(DEPDIR)/refer-command.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/preproc/refer/$(DEPDIR)/refer-label.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/preproc/refer/$(DEPDIR)/refer-ref.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/preproc/refer/$(DEPDIR)/refer-refer.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/preproc/refer/$(DEPDIR)/refer-token.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/preproc/soelim/$(DEPDIR)/soelim.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/preproc/tbl/$(DEPDIR)/main.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/preproc/tbl/$(DEPDIR)/table.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/roff/groff/$(DEPDIR)/groff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/roff/groff/$(DEPDIR)/pipeline.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/roff/troff/$(DEPDIR)/dictionary.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/roff/troff/$(DEPDIR)/div.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/roff/troff/$(DEPDIR)/env.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/roff/troff/$(DEPDIR)/input.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/roff/troff/$(DEPDIR)/majorminor.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/roff/troff/$(DEPDIR)/mtsm.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/roff/troff/$(DEPDIR)/node.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/roff/troff/$(DEPDIR)/number.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/roff/troff/$(DEPDIR)/reg.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/utils/addftinfo/$(DEPDIR)/addftinfo.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/utils/addftinfo/$(DEPDIR)/guess.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/utils/hpftodit/$(DEPDIR)/hpftodit.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/utils/hpftodit/$(DEPDIR)/hpuni.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/utils/indxbib/$(DEPDIR)/indxbib.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/utils/indxbib/$(DEPDIR)/signal.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/utils/lkbib/$(DEPDIR)/lkbib.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/utils/lookbib/$(DEPDIR)/lookbib.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/utils/pfbtops/$(DEPDIR)/dummy.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/utils/pfbtops/$(DEPDIR)/pfbtops.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/utils/tfmtodit/$(DEPDIR)/tfmtodit.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/utils/xtotroff/$(DEPDIR)/xtotroff-xtotroff.Po@am__quote@ # am--include-marker
+
+$(am__depfiles_remade):
+       @$(MKDIR_P) $(@D)
+       @echo '# dummy' >$@-t && $(am__mv) $@-t $@
+
+am--depfiles: $(am__depfiles_remade)
+
+.c.o:
+@am__fastdepCC_TRUE@   $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCC_TRUE@   $(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
+
+.c.obj:
+@am__fastdepCC_TRUE@   $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+@am__fastdepCC_TRUE@   $(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+src/libs/libgroff/libgroff_a-getopt.o: src/libs/libgroff/getopt.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/libs/libgroff/libgroff_a-getopt.o -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-getopt.Tpo -c -o src/libs/libgroff/libgroff_a-getopt.o `test -f 'src/libs/libgroff/getopt.c' || echo '$(srcdir)/'`src/libs/libgroff/getopt.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-getopt.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-getopt.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='src/libs/libgroff/getopt.c' object='src/libs/libgroff/libgroff_a-getopt.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/libs/libgroff/libgroff_a-getopt.o `test -f 'src/libs/libgroff/getopt.c' || echo '$(srcdir)/'`src/libs/libgroff/getopt.c
+
+src/libs/libgroff/libgroff_a-getopt.obj: src/libs/libgroff/getopt.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/libs/libgroff/libgroff_a-getopt.obj -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-getopt.Tpo -c -o src/libs/libgroff/libgroff_a-getopt.obj `if test -f 'src/libs/libgroff/getopt.c'; then $(CYGPATH_W) 'src/libs/libgroff/getopt.c'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/getopt.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-getopt.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-getopt.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='src/libs/libgroff/getopt.c' object='src/libs/libgroff/libgroff_a-getopt.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/libs/libgroff/libgroff_a-getopt.obj `if test -f 'src/libs/libgroff/getopt.c'; then $(CYGPATH_W) 'src/libs/libgroff/getopt.c'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/getopt.c'; fi`
+
+src/libs/libgroff/libgroff_a-getopt1.o: src/libs/libgroff/getopt1.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/libs/libgroff/libgroff_a-getopt1.o -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-getopt1.Tpo -c -o src/libs/libgroff/libgroff_a-getopt1.o `test -f 'src/libs/libgroff/getopt1.c' || echo '$(srcdir)/'`src/libs/libgroff/getopt1.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-getopt1.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-getopt1.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='src/libs/libgroff/getopt1.c' object='src/libs/libgroff/libgroff_a-getopt1.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/libs/libgroff/libgroff_a-getopt1.o `test -f 'src/libs/libgroff/getopt1.c' || echo '$(srcdir)/'`src/libs/libgroff/getopt1.c
+
+src/libs/libgroff/libgroff_a-getopt1.obj: src/libs/libgroff/getopt1.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/libs/libgroff/libgroff_a-getopt1.obj -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-getopt1.Tpo -c -o src/libs/libgroff/libgroff_a-getopt1.obj `if test -f 'src/libs/libgroff/getopt1.c'; then $(CYGPATH_W) 'src/libs/libgroff/getopt1.c'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/getopt1.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-getopt1.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-getopt1.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='src/libs/libgroff/getopt1.c' object='src/libs/libgroff/libgroff_a-getopt1.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/libs/libgroff/libgroff_a-getopt1.obj `if test -f 'src/libs/libgroff/getopt1.c'; then $(CYGPATH_W) 'src/libs/libgroff/getopt1.c'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/getopt1.c'; fi`
+
+src/libs/libgroff/libgroff_a-iftoa.o: src/libs/libgroff/iftoa.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/libs/libgroff/libgroff_a-iftoa.o -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-iftoa.Tpo -c -o src/libs/libgroff/libgroff_a-iftoa.o `test -f 'src/libs/libgroff/iftoa.c' || echo '$(srcdir)/'`src/libs/libgroff/iftoa.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-iftoa.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-iftoa.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='src/libs/libgroff/iftoa.c' object='src/libs/libgroff/libgroff_a-iftoa.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/libs/libgroff/libgroff_a-iftoa.o `test -f 'src/libs/libgroff/iftoa.c' || echo '$(srcdir)/'`src/libs/libgroff/iftoa.c
+
+src/libs/libgroff/libgroff_a-iftoa.obj: src/libs/libgroff/iftoa.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/libs/libgroff/libgroff_a-iftoa.obj -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-iftoa.Tpo -c -o src/libs/libgroff/libgroff_a-iftoa.obj `if test -f 'src/libs/libgroff/iftoa.c'; then $(CYGPATH_W) 'src/libs/libgroff/iftoa.c'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/iftoa.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-iftoa.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-iftoa.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='src/libs/libgroff/iftoa.c' object='src/libs/libgroff/libgroff_a-iftoa.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/libs/libgroff/libgroff_a-iftoa.obj `if test -f 'src/libs/libgroff/iftoa.c'; then $(CYGPATH_W) 'src/libs/libgroff/iftoa.c'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/iftoa.c'; fi`
+
+src/libs/libgroff/libgroff_a-itoa.o: src/libs/libgroff/itoa.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/libs/libgroff/libgroff_a-itoa.o -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-itoa.Tpo -c -o src/libs/libgroff/libgroff_a-itoa.o `test -f 'src/libs/libgroff/itoa.c' || echo '$(srcdir)/'`src/libs/libgroff/itoa.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-itoa.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-itoa.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='src/libs/libgroff/itoa.c' object='src/libs/libgroff/libgroff_a-itoa.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/libs/libgroff/libgroff_a-itoa.o `test -f 'src/libs/libgroff/itoa.c' || echo '$(srcdir)/'`src/libs/libgroff/itoa.c
+
+src/libs/libgroff/libgroff_a-itoa.obj: src/libs/libgroff/itoa.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/libs/libgroff/libgroff_a-itoa.obj -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-itoa.Tpo -c -o src/libs/libgroff/libgroff_a-itoa.obj `if test -f 'src/libs/libgroff/itoa.c'; then $(CYGPATH_W) 'src/libs/libgroff/itoa.c'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/itoa.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-itoa.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-itoa.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='src/libs/libgroff/itoa.c' object='src/libs/libgroff/libgroff_a-itoa.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/libs/libgroff/libgroff_a-itoa.obj `if test -f 'src/libs/libgroff/itoa.c'; then $(CYGPATH_W) 'src/libs/libgroff/itoa.c'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/itoa.c'; fi`
+
+src/libs/libgroff/libgroff_a-localcharset.o: src/libs/libgroff/localcharset.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/libs/libgroff/libgroff_a-localcharset.o -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-localcharset.Tpo -c -o src/libs/libgroff/libgroff_a-localcharset.o `test -f 'src/libs/libgroff/localcharset.c' || echo '$(srcdir)/'`src/libs/libgroff/localcharset.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-localcharset.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-localcharset.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='src/libs/libgroff/localcharset.c' object='src/libs/libgroff/libgroff_a-localcharset.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/libs/libgroff/libgroff_a-localcharset.o `test -f 'src/libs/libgroff/localcharset.c' || echo '$(srcdir)/'`src/libs/libgroff/localcharset.c
+
+src/libs/libgroff/libgroff_a-localcharset.obj: src/libs/libgroff/localcharset.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/libs/libgroff/libgroff_a-localcharset.obj -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-localcharset.Tpo -c -o src/libs/libgroff/libgroff_a-localcharset.obj `if test -f 'src/libs/libgroff/localcharset.c'; then $(CYGPATH_W) 'src/libs/libgroff/localcharset.c'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/localcharset.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-localcharset.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-localcharset.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='src/libs/libgroff/localcharset.c' object='src/libs/libgroff/libgroff_a-localcharset.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/libs/libgroff/libgroff_a-localcharset.obj `if test -f 'src/libs/libgroff/localcharset.c'; then $(CYGPATH_W) 'src/libs/libgroff/localcharset.c'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/localcharset.c'; fi`
+
+src/libs/libgroff/libgroff_a-matherr.o: src/libs/libgroff/matherr.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/libs/libgroff/libgroff_a-matherr.o -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-matherr.Tpo -c -o src/libs/libgroff/libgroff_a-matherr.o `test -f 'src/libs/libgroff/matherr.c' || echo '$(srcdir)/'`src/libs/libgroff/matherr.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-matherr.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-matherr.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='src/libs/libgroff/matherr.c' object='src/libs/libgroff/libgroff_a-matherr.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/libs/libgroff/libgroff_a-matherr.o `test -f 'src/libs/libgroff/matherr.c' || echo '$(srcdir)/'`src/libs/libgroff/matherr.c
+
+src/libs/libgroff/libgroff_a-matherr.obj: src/libs/libgroff/matherr.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/libs/libgroff/libgroff_a-matherr.obj -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-matherr.Tpo -c -o src/libs/libgroff/libgroff_a-matherr.obj `if test -f 'src/libs/libgroff/matherr.c'; then $(CYGPATH_W) 'src/libs/libgroff/matherr.c'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/matherr.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-matherr.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-matherr.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='src/libs/libgroff/matherr.c' object='src/libs/libgroff/libgroff_a-matherr.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/libs/libgroff/libgroff_a-matherr.obj `if test -f 'src/libs/libgroff/matherr.c'; then $(CYGPATH_W) 'src/libs/libgroff/matherr.c'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/matherr.c'; fi`
+
+src/libs/libgroff/libgroff_a-progname.o: src/libs/libgroff/progname.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/libs/libgroff/libgroff_a-progname.o -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-progname.Tpo -c -o src/libs/libgroff/libgroff_a-progname.o `test -f 'src/libs/libgroff/progname.c' || echo '$(srcdir)/'`src/libs/libgroff/progname.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-progname.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-progname.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='src/libs/libgroff/progname.c' object='src/libs/libgroff/libgroff_a-progname.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/libs/libgroff/libgroff_a-progname.o `test -f 'src/libs/libgroff/progname.c' || echo '$(srcdir)/'`src/libs/libgroff/progname.c
+
+src/libs/libgroff/libgroff_a-progname.obj: src/libs/libgroff/progname.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/libs/libgroff/libgroff_a-progname.obj -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-progname.Tpo -c -o src/libs/libgroff/libgroff_a-progname.obj `if test -f 'src/libs/libgroff/progname.c'; then $(CYGPATH_W) 'src/libs/libgroff/progname.c'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/progname.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-progname.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-progname.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='src/libs/libgroff/progname.c' object='src/libs/libgroff/libgroff_a-progname.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/libs/libgroff/libgroff_a-progname.obj `if test -f 'src/libs/libgroff/progname.c'; then $(CYGPATH_W) 'src/libs/libgroff/progname.c'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/progname.c'; fi`
+
+src/libs/libgroff/libgroff_a-quotearg.o: src/libs/libgroff/quotearg.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/libs/libgroff/libgroff_a-quotearg.o -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-quotearg.Tpo -c -o src/libs/libgroff/libgroff_a-quotearg.o `test -f 'src/libs/libgroff/quotearg.c' || echo '$(srcdir)/'`src/libs/libgroff/quotearg.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-quotearg.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-quotearg.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='src/libs/libgroff/quotearg.c' object='src/libs/libgroff/libgroff_a-quotearg.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/libs/libgroff/libgroff_a-quotearg.o `test -f 'src/libs/libgroff/quotearg.c' || echo '$(srcdir)/'`src/libs/libgroff/quotearg.c
+
+src/libs/libgroff/libgroff_a-quotearg.obj: src/libs/libgroff/quotearg.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/libs/libgroff/libgroff_a-quotearg.obj -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-quotearg.Tpo -c -o src/libs/libgroff/libgroff_a-quotearg.obj `if test -f 'src/libs/libgroff/quotearg.c'; then $(CYGPATH_W) 'src/libs/libgroff/quotearg.c'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/quotearg.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-quotearg.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-quotearg.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='src/libs/libgroff/quotearg.c' object='src/libs/libgroff/libgroff_a-quotearg.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/libs/libgroff/libgroff_a-quotearg.obj `if test -f 'src/libs/libgroff/quotearg.c'; then $(CYGPATH_W) 'src/libs/libgroff/quotearg.c'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/quotearg.c'; fi`
+
+src/libs/libgroff/libgroff_a-spawnvp.o: src/libs/libgroff/spawnvp.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/libs/libgroff/libgroff_a-spawnvp.o -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-spawnvp.Tpo -c -o src/libs/libgroff/libgroff_a-spawnvp.o `test -f 'src/libs/libgroff/spawnvp.c' || echo '$(srcdir)/'`src/libs/libgroff/spawnvp.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-spawnvp.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-spawnvp.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='src/libs/libgroff/spawnvp.c' object='src/libs/libgroff/libgroff_a-spawnvp.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/libs/libgroff/libgroff_a-spawnvp.o `test -f 'src/libs/libgroff/spawnvp.c' || echo '$(srcdir)/'`src/libs/libgroff/spawnvp.c
+
+src/libs/libgroff/libgroff_a-spawnvp.obj: src/libs/libgroff/spawnvp.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/libs/libgroff/libgroff_a-spawnvp.obj -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-spawnvp.Tpo -c -o src/libs/libgroff/libgroff_a-spawnvp.obj `if test -f 'src/libs/libgroff/spawnvp.c'; then $(CYGPATH_W) 'src/libs/libgroff/spawnvp.c'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/spawnvp.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-spawnvp.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-spawnvp.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='src/libs/libgroff/spawnvp.c' object='src/libs/libgroff/libgroff_a-spawnvp.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/libs/libgroff/libgroff_a-spawnvp.obj `if test -f 'src/libs/libgroff/spawnvp.c'; then $(CYGPATH_W) 'src/libs/libgroff/spawnvp.c'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/spawnvp.c'; fi`
+
+src/libs/libxutil/libxutil_a-DviChar.o: src/libs/libxutil/DviChar.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libxutil_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/libs/libxutil/libxutil_a-DviChar.o -MD -MP -MF src/libs/libxutil/$(DEPDIR)/libxutil_a-DviChar.Tpo -c -o src/libs/libxutil/libxutil_a-DviChar.o `test -f 'src/libs/libxutil/DviChar.c' || echo '$(srcdir)/'`src/libs/libxutil/DviChar.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) src/libs/libxutil/$(DEPDIR)/libxutil_a-DviChar.Tpo src/libs/libxutil/$(DEPDIR)/libxutil_a-DviChar.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='src/libs/libxutil/DviChar.c' object='src/libs/libxutil/libxutil_a-DviChar.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libxutil_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/libs/libxutil/libxutil_a-DviChar.o `test -f 'src/libs/libxutil/DviChar.c' || echo '$(srcdir)/'`src/libs/libxutil/DviChar.c
+
+src/libs/libxutil/libxutil_a-DviChar.obj: src/libs/libxutil/DviChar.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libxutil_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/libs/libxutil/libxutil_a-DviChar.obj -MD -MP -MF src/libs/libxutil/$(DEPDIR)/libxutil_a-DviChar.Tpo -c -o src/libs/libxutil/libxutil_a-DviChar.obj `if test -f 'src/libs/libxutil/DviChar.c'; then $(CYGPATH_W) 'src/libs/libxutil/DviChar.c'; else $(CYGPATH_W) '$(srcdir)/src/libs/libxutil/DviChar.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) src/libs/libxutil/$(DEPDIR)/libxutil_a-DviChar.Tpo src/libs/libxutil/$(DEPDIR)/libxutil_a-DviChar.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='src/libs/libxutil/DviChar.c' object='src/libs/libxutil/libxutil_a-DviChar.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libxutil_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/libs/libxutil/libxutil_a-DviChar.obj `if test -f 'src/libs/libxutil/DviChar.c'; then $(CYGPATH_W) 'src/libs/libxutil/DviChar.c'; else $(CYGPATH_W) '$(srcdir)/src/libs/libxutil/DviChar.c'; fi`
+
+src/libs/libxutil/libxutil_a-XFontName.o: src/libs/libxutil/XFontName.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libxutil_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/libs/libxutil/libxutil_a-XFontName.o -MD -MP -MF src/libs/libxutil/$(DEPDIR)/libxutil_a-XFontName.Tpo -c -o src/libs/libxutil/libxutil_a-XFontName.o `test -f 'src/libs/libxutil/XFontName.c' || echo '$(srcdir)/'`src/libs/libxutil/XFontName.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) src/libs/libxutil/$(DEPDIR)/libxutil_a-XFontName.Tpo src/libs/libxutil/$(DEPDIR)/libxutil_a-XFontName.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='src/libs/libxutil/XFontName.c' object='src/libs/libxutil/libxutil_a-XFontName.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libxutil_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/libs/libxutil/libxutil_a-XFontName.o `test -f 'src/libs/libxutil/XFontName.c' || echo '$(srcdir)/'`src/libs/libxutil/XFontName.c
+
+src/libs/libxutil/libxutil_a-XFontName.obj: src/libs/libxutil/XFontName.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libxutil_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/libs/libxutil/libxutil_a-XFontName.obj -MD -MP -MF src/libs/libxutil/$(DEPDIR)/libxutil_a-XFontName.Tpo -c -o src/libs/libxutil/libxutil_a-XFontName.obj `if test -f 'src/libs/libxutil/XFontName.c'; then $(CYGPATH_W) 'src/libs/libxutil/XFontName.c'; else $(CYGPATH_W) '$(srcdir)/src/libs/libxutil/XFontName.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) src/libs/libxutil/$(DEPDIR)/libxutil_a-XFontName.Tpo src/libs/libxutil/$(DEPDIR)/libxutil_a-XFontName.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='src/libs/libxutil/XFontName.c' object='src/libs/libxutil/libxutil_a-XFontName.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libxutil_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/libs/libxutil/libxutil_a-XFontName.obj `if test -f 'src/libs/libxutil/XFontName.c'; then $(CYGPATH_W) 'src/libs/libxutil/XFontName.c'; else $(CYGPATH_W) '$(srcdir)/src/libs/libxutil/XFontName.c'; fi`
+
+src/libs/libxutil/libxutil_a-xmalloc.o: src/libs/libxutil/xmalloc.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libxutil_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/libs/libxutil/libxutil_a-xmalloc.o -MD -MP -MF src/libs/libxutil/$(DEPDIR)/libxutil_a-xmalloc.Tpo -c -o src/libs/libxutil/libxutil_a-xmalloc.o `test -f 'src/libs/libxutil/xmalloc.c' || echo '$(srcdir)/'`src/libs/libxutil/xmalloc.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) src/libs/libxutil/$(DEPDIR)/libxutil_a-xmalloc.Tpo src/libs/libxutil/$(DEPDIR)/libxutil_a-xmalloc.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='src/libs/libxutil/xmalloc.c' object='src/libs/libxutil/libxutil_a-xmalloc.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libxutil_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/libs/libxutil/libxutil_a-xmalloc.o `test -f 'src/libs/libxutil/xmalloc.c' || echo '$(srcdir)/'`src/libs/libxutil/xmalloc.c
+
+src/libs/libxutil/libxutil_a-xmalloc.obj: src/libs/libxutil/xmalloc.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libxutil_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/libs/libxutil/libxutil_a-xmalloc.obj -MD -MP -MF src/libs/libxutil/$(DEPDIR)/libxutil_a-xmalloc.Tpo -c -o src/libs/libxutil/libxutil_a-xmalloc.obj `if test -f 'src/libs/libxutil/xmalloc.c'; then $(CYGPATH_W) 'src/libs/libxutil/xmalloc.c'; else $(CYGPATH_W) '$(srcdir)/src/libs/libxutil/xmalloc.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) src/libs/libxutil/$(DEPDIR)/libxutil_a-xmalloc.Tpo src/libs/libxutil/$(DEPDIR)/libxutil_a-xmalloc.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='src/libs/libxutil/xmalloc.c' object='src/libs/libxutil/libxutil_a-xmalloc.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libxutil_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/libs/libxutil/libxutil_a-xmalloc.obj `if test -f 'src/libs/libxutil/xmalloc.c'; then $(CYGPATH_W) 'src/libs/libxutil/xmalloc.c'; else $(CYGPATH_W) '$(srcdir)/src/libs/libxutil/xmalloc.c'; fi`
+
+src/devices/xditview/gxditview-device.o: src/devices/xditview/device.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gxditview_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/devices/xditview/gxditview-device.o -MD -MP -MF src/devices/xditview/$(DEPDIR)/gxditview-device.Tpo -c -o src/devices/xditview/gxditview-device.o `test -f 'src/devices/xditview/device.c' || echo '$(srcdir)/'`src/devices/xditview/device.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) src/devices/xditview/$(DEPDIR)/gxditview-device.Tpo src/devices/xditview/$(DEPDIR)/gxditview-device.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='src/devices/xditview/device.c' object='src/devices/xditview/gxditview-device.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gxditview_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/devices/xditview/gxditview-device.o `test -f 'src/devices/xditview/device.c' || echo '$(srcdir)/'`src/devices/xditview/device.c
+
+src/devices/xditview/gxditview-device.obj: src/devices/xditview/device.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gxditview_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/devices/xditview/gxditview-device.obj -MD -MP -MF src/devices/xditview/$(DEPDIR)/gxditview-device.Tpo -c -o src/devices/xditview/gxditview-device.obj `if test -f 'src/devices/xditview/device.c'; then $(CYGPATH_W) 'src/devices/xditview/device.c'; else $(CYGPATH_W) '$(srcdir)/src/devices/xditview/device.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) src/devices/xditview/$(DEPDIR)/gxditview-device.Tpo src/devices/xditview/$(DEPDIR)/gxditview-device.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='src/devices/xditview/device.c' object='src/devices/xditview/gxditview-device.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gxditview_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/devices/xditview/gxditview-device.obj `if test -f 'src/devices/xditview/device.c'; then $(CYGPATH_W) 'src/devices/xditview/device.c'; else $(CYGPATH_W) '$(srcdir)/src/devices/xditview/device.c'; fi`
+
+src/devices/xditview/gxditview-draw.o: src/devices/xditview/draw.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gxditview_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/devices/xditview/gxditview-draw.o -MD -MP -MF src/devices/xditview/$(DEPDIR)/gxditview-draw.Tpo -c -o src/devices/xditview/gxditview-draw.o `test -f 'src/devices/xditview/draw.c' || echo '$(srcdir)/'`src/devices/xditview/draw.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) src/devices/xditview/$(DEPDIR)/gxditview-draw.Tpo src/devices/xditview/$(DEPDIR)/gxditview-draw.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='src/devices/xditview/draw.c' object='src/devices/xditview/gxditview-draw.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gxditview_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/devices/xditview/gxditview-draw.o `test -f 'src/devices/xditview/draw.c' || echo '$(srcdir)/'`src/devices/xditview/draw.c
+
+src/devices/xditview/gxditview-draw.obj: src/devices/xditview/draw.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gxditview_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/devices/xditview/gxditview-draw.obj -MD -MP -MF src/devices/xditview/$(DEPDIR)/gxditview-draw.Tpo -c -o src/devices/xditview/gxditview-draw.obj `if test -f 'src/devices/xditview/draw.c'; then $(CYGPATH_W) 'src/devices/xditview/draw.c'; else $(CYGPATH_W) '$(srcdir)/src/devices/xditview/draw.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) src/devices/xditview/$(DEPDIR)/gxditview-draw.Tpo src/devices/xditview/$(DEPDIR)/gxditview-draw.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='src/devices/xditview/draw.c' object='src/devices/xditview/gxditview-draw.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gxditview_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/devices/xditview/gxditview-draw.obj `if test -f 'src/devices/xditview/draw.c'; then $(CYGPATH_W) 'src/devices/xditview/draw.c'; else $(CYGPATH_W) '$(srcdir)/src/devices/xditview/draw.c'; fi`
+
+src/devices/xditview/gxditview-Dvi.o: src/devices/xditview/Dvi.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gxditview_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/devices/xditview/gxditview-Dvi.o -MD -MP -MF src/devices/xditview/$(DEPDIR)/gxditview-Dvi.Tpo -c -o src/devices/xditview/gxditview-Dvi.o `test -f 'src/devices/xditview/Dvi.c' || echo '$(srcdir)/'`src/devices/xditview/Dvi.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) src/devices/xditview/$(DEPDIR)/gxditview-Dvi.Tpo src/devices/xditview/$(DEPDIR)/gxditview-Dvi.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='src/devices/xditview/Dvi.c' object='src/devices/xditview/gxditview-Dvi.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gxditview_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/devices/xditview/gxditview-Dvi.o `test -f 'src/devices/xditview/Dvi.c' || echo '$(srcdir)/'`src/devices/xditview/Dvi.c
+
+src/devices/xditview/gxditview-Dvi.obj: src/devices/xditview/Dvi.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gxditview_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/devices/xditview/gxditview-Dvi.obj -MD -MP -MF src/devices/xditview/$(DEPDIR)/gxditview-Dvi.Tpo -c -o src/devices/xditview/gxditview-Dvi.obj `if test -f 'src/devices/xditview/Dvi.c'; then $(CYGPATH_W) 'src/devices/xditview/Dvi.c'; else $(CYGPATH_W) '$(srcdir)/src/devices/xditview/Dvi.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) src/devices/xditview/$(DEPDIR)/gxditview-Dvi.Tpo src/devices/xditview/$(DEPDIR)/gxditview-Dvi.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='src/devices/xditview/Dvi.c' object='src/devices/xditview/gxditview-Dvi.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gxditview_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/devices/xditview/gxditview-Dvi.obj `if test -f 'src/devices/xditview/Dvi.c'; then $(CYGPATH_W) 'src/devices/xditview/Dvi.c'; else $(CYGPATH_W) '$(srcdir)/src/devices/xditview/Dvi.c'; fi`
+
+src/devices/xditview/gxditview-font.o: src/devices/xditview/font.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gxditview_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/devices/xditview/gxditview-font.o -MD -MP -MF src/devices/xditview/$(DEPDIR)/gxditview-font.Tpo -c -o src/devices/xditview/gxditview-font.o `test -f 'src/devices/xditview/font.c' || echo '$(srcdir)/'`src/devices/xditview/font.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) src/devices/xditview/$(DEPDIR)/gxditview-font.Tpo src/devices/xditview/$(DEPDIR)/gxditview-font.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='src/devices/xditview/font.c' object='src/devices/xditview/gxditview-font.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gxditview_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/devices/xditview/gxditview-font.o `test -f 'src/devices/xditview/font.c' || echo '$(srcdir)/'`src/devices/xditview/font.c
+
+src/devices/xditview/gxditview-font.obj: src/devices/xditview/font.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gxditview_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/devices/xditview/gxditview-font.obj -MD -MP -MF src/devices/xditview/$(DEPDIR)/gxditview-font.Tpo -c -o src/devices/xditview/gxditview-font.obj `if test -f 'src/devices/xditview/font.c'; then $(CYGPATH_W) 'src/devices/xditview/font.c'; else $(CYGPATH_W) '$(srcdir)/src/devices/xditview/font.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) src/devices/xditview/$(DEPDIR)/gxditview-font.Tpo src/devices/xditview/$(DEPDIR)/gxditview-font.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='src/devices/xditview/font.c' object='src/devices/xditview/gxditview-font.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gxditview_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/devices/xditview/gxditview-font.obj `if test -f 'src/devices/xditview/font.c'; then $(CYGPATH_W) 'src/devices/xditview/font.c'; else $(CYGPATH_W) '$(srcdir)/src/devices/xditview/font.c'; fi`
+
+src/devices/xditview/gxditview-lex.o: src/devices/xditview/lex.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gxditview_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/devices/xditview/gxditview-lex.o -MD -MP -MF src/devices/xditview/$(DEPDIR)/gxditview-lex.Tpo -c -o src/devices/xditview/gxditview-lex.o `test -f 'src/devices/xditview/lex.c' || echo '$(srcdir)/'`src/devices/xditview/lex.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) src/devices/xditview/$(DEPDIR)/gxditview-lex.Tpo src/devices/xditview/$(DEPDIR)/gxditview-lex.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='src/devices/xditview/lex.c' object='src/devices/xditview/gxditview-lex.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gxditview_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/devices/xditview/gxditview-lex.o `test -f 'src/devices/xditview/lex.c' || echo '$(srcdir)/'`src/devices/xditview/lex.c
+
+src/devices/xditview/gxditview-lex.obj: src/devices/xditview/lex.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gxditview_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/devices/xditview/gxditview-lex.obj -MD -MP -MF src/devices/xditview/$(DEPDIR)/gxditview-lex.Tpo -c -o src/devices/xditview/gxditview-lex.obj `if test -f 'src/devices/xditview/lex.c'; then $(CYGPATH_W) 'src/devices/xditview/lex.c'; else $(CYGPATH_W) '$(srcdir)/src/devices/xditview/lex.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) src/devices/xditview/$(DEPDIR)/gxditview-lex.Tpo src/devices/xditview/$(DEPDIR)/gxditview-lex.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='src/devices/xditview/lex.c' object='src/devices/xditview/gxditview-lex.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gxditview_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/devices/xditview/gxditview-lex.obj `if test -f 'src/devices/xditview/lex.c'; then $(CYGPATH_W) 'src/devices/xditview/lex.c'; else $(CYGPATH_W) '$(srcdir)/src/devices/xditview/lex.c'; fi`
+
+src/devices/xditview/gxditview-page.o: src/devices/xditview/page.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gxditview_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/devices/xditview/gxditview-page.o -MD -MP -MF src/devices/xditview/$(DEPDIR)/gxditview-page.Tpo -c -o src/devices/xditview/gxditview-page.o `test -f 'src/devices/xditview/page.c' || echo '$(srcdir)/'`src/devices/xditview/page.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) src/devices/xditview/$(DEPDIR)/gxditview-page.Tpo src/devices/xditview/$(DEPDIR)/gxditview-page.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='src/devices/xditview/page.c' object='src/devices/xditview/gxditview-page.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gxditview_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/devices/xditview/gxditview-page.o `test -f 'src/devices/xditview/page.c' || echo '$(srcdir)/'`src/devices/xditview/page.c
+
+src/devices/xditview/gxditview-page.obj: src/devices/xditview/page.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gxditview_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/devices/xditview/gxditview-page.obj -MD -MP -MF src/devices/xditview/$(DEPDIR)/gxditview-page.Tpo -c -o src/devices/xditview/gxditview-page.obj `if test -f 'src/devices/xditview/page.c'; then $(CYGPATH_W) 'src/devices/xditview/page.c'; else $(CYGPATH_W) '$(srcdir)/src/devices/xditview/page.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) src/devices/xditview/$(DEPDIR)/gxditview-page.Tpo src/devices/xditview/$(DEPDIR)/gxditview-page.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='src/devices/xditview/page.c' object='src/devices/xditview/gxditview-page.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gxditview_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/devices/xditview/gxditview-page.obj `if test -f 'src/devices/xditview/page.c'; then $(CYGPATH_W) 'src/devices/xditview/page.c'; else $(CYGPATH_W) '$(srcdir)/src/devices/xditview/page.c'; fi`
+
+src/devices/xditview/gxditview-parse.o: src/devices/xditview/parse.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gxditview_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/devices/xditview/gxditview-parse.o -MD -MP -MF src/devices/xditview/$(DEPDIR)/gxditview-parse.Tpo -c -o src/devices/xditview/gxditview-parse.o `test -f 'src/devices/xditview/parse.c' || echo '$(srcdir)/'`src/devices/xditview/parse.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) src/devices/xditview/$(DEPDIR)/gxditview-parse.Tpo src/devices/xditview/$(DEPDIR)/gxditview-parse.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='src/devices/xditview/parse.c' object='src/devices/xditview/gxditview-parse.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gxditview_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/devices/xditview/gxditview-parse.o `test -f 'src/devices/xditview/parse.c' || echo '$(srcdir)/'`src/devices/xditview/parse.c
+
+src/devices/xditview/gxditview-parse.obj: src/devices/xditview/parse.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gxditview_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/devices/xditview/gxditview-parse.obj -MD -MP -MF src/devices/xditview/$(DEPDIR)/gxditview-parse.Tpo -c -o src/devices/xditview/gxditview-parse.obj `if test -f 'src/devices/xditview/parse.c'; then $(CYGPATH_W) 'src/devices/xditview/parse.c'; else $(CYGPATH_W) '$(srcdir)/src/devices/xditview/parse.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) src/devices/xditview/$(DEPDIR)/gxditview-parse.Tpo src/devices/xditview/$(DEPDIR)/gxditview-parse.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='src/devices/xditview/parse.c' object='src/devices/xditview/gxditview-parse.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gxditview_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/devices/xditview/gxditview-parse.obj `if test -f 'src/devices/xditview/parse.c'; then $(CYGPATH_W) 'src/devices/xditview/parse.c'; else $(CYGPATH_W) '$(srcdir)/src/devices/xditview/parse.c'; fi`
+
+src/devices/xditview/gxditview-xditview.o: src/devices/xditview/xditview.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gxditview_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/devices/xditview/gxditview-xditview.o -MD -MP -MF src/devices/xditview/$(DEPDIR)/gxditview-xditview.Tpo -c -o src/devices/xditview/gxditview-xditview.o `test -f 'src/devices/xditview/xditview.c' || echo '$(srcdir)/'`src/devices/xditview/xditview.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) src/devices/xditview/$(DEPDIR)/gxditview-xditview.Tpo src/devices/xditview/$(DEPDIR)/gxditview-xditview.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='src/devices/xditview/xditview.c' object='src/devices/xditview/gxditview-xditview.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gxditview_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/devices/xditview/gxditview-xditview.o `test -f 'src/devices/xditview/xditview.c' || echo '$(srcdir)/'`src/devices/xditview/xditview.c
+
+src/devices/xditview/gxditview-xditview.obj: src/devices/xditview/xditview.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gxditview_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/devices/xditview/gxditview-xditview.obj -MD -MP -MF src/devices/xditview/$(DEPDIR)/gxditview-xditview.Tpo -c -o src/devices/xditview/gxditview-xditview.obj `if test -f 'src/devices/xditview/xditview.c'; then $(CYGPATH_W) 'src/devices/xditview/xditview.c'; else $(CYGPATH_W) '$(srcdir)/src/devices/xditview/xditview.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) src/devices/xditview/$(DEPDIR)/gxditview-xditview.Tpo src/devices/xditview/$(DEPDIR)/gxditview-xditview.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='src/devices/xditview/xditview.c' object='src/devices/xditview/gxditview-xditview.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gxditview_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/devices/xditview/gxditview-xditview.obj `if test -f 'src/devices/xditview/xditview.c'; then $(CYGPATH_W) 'src/devices/xditview/xditview.c'; else $(CYGPATH_W) '$(srcdir)/src/devices/xditview/xditview.c'; fi`
+
+src/utils/xtotroff/xtotroff-xtotroff.o: src/utils/xtotroff/xtotroff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(xtotroff_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/utils/xtotroff/xtotroff-xtotroff.o -MD -MP -MF src/utils/xtotroff/$(DEPDIR)/xtotroff-xtotroff.Tpo -c -o src/utils/xtotroff/xtotroff-xtotroff.o `test -f 'src/utils/xtotroff/xtotroff.c' || echo '$(srcdir)/'`src/utils/xtotroff/xtotroff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) src/utils/xtotroff/$(DEPDIR)/xtotroff-xtotroff.Tpo src/utils/xtotroff/$(DEPDIR)/xtotroff-xtotroff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='src/utils/xtotroff/xtotroff.c' object='src/utils/xtotroff/xtotroff-xtotroff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(xtotroff_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/utils/xtotroff/xtotroff-xtotroff.o `test -f 'src/utils/xtotroff/xtotroff.c' || echo '$(srcdir)/'`src/utils/xtotroff/xtotroff.c
+
+src/utils/xtotroff/xtotroff-xtotroff.obj: src/utils/xtotroff/xtotroff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(xtotroff_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/utils/xtotroff/xtotroff-xtotroff.obj -MD -MP -MF src/utils/xtotroff/$(DEPDIR)/xtotroff-xtotroff.Tpo -c -o src/utils/xtotroff/xtotroff-xtotroff.obj `if test -f 'src/utils/xtotroff/xtotroff.c'; then $(CYGPATH_W) 'src/utils/xtotroff/xtotroff.c'; else $(CYGPATH_W) '$(srcdir)/src/utils/xtotroff/xtotroff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) src/utils/xtotroff/$(DEPDIR)/xtotroff-xtotroff.Tpo src/utils/xtotroff/$(DEPDIR)/xtotroff-xtotroff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='src/utils/xtotroff/xtotroff.c' object='src/utils/xtotroff/xtotroff-xtotroff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(xtotroff_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/utils/xtotroff/xtotroff-xtotroff.obj `if test -f 'src/utils/xtotroff/xtotroff.c'; then $(CYGPATH_W) 'src/utils/xtotroff/xtotroff.c'; else $(CYGPATH_W) '$(srcdir)/src/utils/xtotroff/xtotroff.c'; fi`
+
+.cpp.o:
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+@am__fastdepCXX_TRUE@  $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCXX_TRUE@  $(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+@am__fastdepCXX_TRUE@  $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+@am__fastdepCXX_TRUE@  $(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+src/libs/libgroff/libgroff_a-assert.o: src/libs/libgroff/assert.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-assert.o -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-assert.Tpo -c -o src/libs/libgroff/libgroff_a-assert.o `test -f 'src/libs/libgroff/assert.cpp' || echo '$(srcdir)/'`src/libs/libgroff/assert.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-assert.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-assert.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/assert.cpp' object='src/libs/libgroff/libgroff_a-assert.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-assert.o `test -f 'src/libs/libgroff/assert.cpp' || echo '$(srcdir)/'`src/libs/libgroff/assert.cpp
+
+src/libs/libgroff/libgroff_a-assert.obj: src/libs/libgroff/assert.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-assert.obj -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-assert.Tpo -c -o src/libs/libgroff/libgroff_a-assert.obj `if test -f 'src/libs/libgroff/assert.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/assert.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/assert.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-assert.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-assert.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/assert.cpp' object='src/libs/libgroff/libgroff_a-assert.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-assert.obj `if test -f 'src/libs/libgroff/assert.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/assert.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/assert.cpp'; fi`
+
+src/libs/libgroff/libgroff_a-change_lf.o: src/libs/libgroff/change_lf.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-change_lf.o -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-change_lf.Tpo -c -o src/libs/libgroff/libgroff_a-change_lf.o `test -f 'src/libs/libgroff/change_lf.cpp' || echo '$(srcdir)/'`src/libs/libgroff/change_lf.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-change_lf.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-change_lf.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/change_lf.cpp' object='src/libs/libgroff/libgroff_a-change_lf.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-change_lf.o `test -f 'src/libs/libgroff/change_lf.cpp' || echo '$(srcdir)/'`src/libs/libgroff/change_lf.cpp
+
+src/libs/libgroff/libgroff_a-change_lf.obj: src/libs/libgroff/change_lf.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-change_lf.obj -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-change_lf.Tpo -c -o src/libs/libgroff/libgroff_a-change_lf.obj `if test -f 'src/libs/libgroff/change_lf.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/change_lf.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/change_lf.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-change_lf.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-change_lf.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/change_lf.cpp' object='src/libs/libgroff/libgroff_a-change_lf.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-change_lf.obj `if test -f 'src/libs/libgroff/change_lf.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/change_lf.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/change_lf.cpp'; fi`
+
+src/libs/libgroff/libgroff_a-cmap.o: src/libs/libgroff/cmap.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-cmap.o -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-cmap.Tpo -c -o src/libs/libgroff/libgroff_a-cmap.o `test -f 'src/libs/libgroff/cmap.cpp' || echo '$(srcdir)/'`src/libs/libgroff/cmap.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-cmap.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-cmap.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/cmap.cpp' object='src/libs/libgroff/libgroff_a-cmap.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-cmap.o `test -f 'src/libs/libgroff/cmap.cpp' || echo '$(srcdir)/'`src/libs/libgroff/cmap.cpp
+
+src/libs/libgroff/libgroff_a-cmap.obj: src/libs/libgroff/cmap.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-cmap.obj -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-cmap.Tpo -c -o src/libs/libgroff/libgroff_a-cmap.obj `if test -f 'src/libs/libgroff/cmap.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/cmap.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/cmap.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-cmap.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-cmap.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/cmap.cpp' object='src/libs/libgroff/libgroff_a-cmap.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-cmap.obj `if test -f 'src/libs/libgroff/cmap.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/cmap.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/cmap.cpp'; fi`
+
+src/libs/libgroff/libgroff_a-color.o: src/libs/libgroff/color.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-color.o -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-color.Tpo -c -o src/libs/libgroff/libgroff_a-color.o `test -f 'src/libs/libgroff/color.cpp' || echo '$(srcdir)/'`src/libs/libgroff/color.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-color.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-color.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/color.cpp' object='src/libs/libgroff/libgroff_a-color.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-color.o `test -f 'src/libs/libgroff/color.cpp' || echo '$(srcdir)/'`src/libs/libgroff/color.cpp
+
+src/libs/libgroff/libgroff_a-color.obj: src/libs/libgroff/color.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-color.obj -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-color.Tpo -c -o src/libs/libgroff/libgroff_a-color.obj `if test -f 'src/libs/libgroff/color.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/color.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/color.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-color.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-color.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/color.cpp' object='src/libs/libgroff/libgroff_a-color.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-color.obj `if test -f 'src/libs/libgroff/color.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/color.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/color.cpp'; fi`
+
+src/libs/libgroff/libgroff_a-cset.o: src/libs/libgroff/cset.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-cset.o -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-cset.Tpo -c -o src/libs/libgroff/libgroff_a-cset.o `test -f 'src/libs/libgroff/cset.cpp' || echo '$(srcdir)/'`src/libs/libgroff/cset.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-cset.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-cset.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/cset.cpp' object='src/libs/libgroff/libgroff_a-cset.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-cset.o `test -f 'src/libs/libgroff/cset.cpp' || echo '$(srcdir)/'`src/libs/libgroff/cset.cpp
+
+src/libs/libgroff/libgroff_a-cset.obj: src/libs/libgroff/cset.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-cset.obj -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-cset.Tpo -c -o src/libs/libgroff/libgroff_a-cset.obj `if test -f 'src/libs/libgroff/cset.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/cset.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/cset.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-cset.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-cset.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/cset.cpp' object='src/libs/libgroff/libgroff_a-cset.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-cset.obj `if test -f 'src/libs/libgroff/cset.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/cset.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/cset.cpp'; fi`
+
+src/libs/libgroff/libgroff_a-curtime.o: src/libs/libgroff/curtime.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-curtime.o -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-curtime.Tpo -c -o src/libs/libgroff/libgroff_a-curtime.o `test -f 'src/libs/libgroff/curtime.cpp' || echo '$(srcdir)/'`src/libs/libgroff/curtime.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-curtime.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-curtime.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/curtime.cpp' object='src/libs/libgroff/libgroff_a-curtime.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-curtime.o `test -f 'src/libs/libgroff/curtime.cpp' || echo '$(srcdir)/'`src/libs/libgroff/curtime.cpp
+
+src/libs/libgroff/libgroff_a-curtime.obj: src/libs/libgroff/curtime.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-curtime.obj -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-curtime.Tpo -c -o src/libs/libgroff/libgroff_a-curtime.obj `if test -f 'src/libs/libgroff/curtime.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/curtime.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/curtime.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-curtime.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-curtime.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/curtime.cpp' object='src/libs/libgroff/libgroff_a-curtime.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-curtime.obj `if test -f 'src/libs/libgroff/curtime.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/curtime.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/curtime.cpp'; fi`
+
+src/libs/libgroff/libgroff_a-device.o: src/libs/libgroff/device.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-device.o -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-device.Tpo -c -o src/libs/libgroff/libgroff_a-device.o `test -f 'src/libs/libgroff/device.cpp' || echo '$(srcdir)/'`src/libs/libgroff/device.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-device.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-device.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/device.cpp' object='src/libs/libgroff/libgroff_a-device.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-device.o `test -f 'src/libs/libgroff/device.cpp' || echo '$(srcdir)/'`src/libs/libgroff/device.cpp
+
+src/libs/libgroff/libgroff_a-device.obj: src/libs/libgroff/device.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-device.obj -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-device.Tpo -c -o src/libs/libgroff/libgroff_a-device.obj `if test -f 'src/libs/libgroff/device.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/device.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/device.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-device.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-device.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/device.cpp' object='src/libs/libgroff/libgroff_a-device.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-device.obj `if test -f 'src/libs/libgroff/device.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/device.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/device.cpp'; fi`
+
+src/libs/libgroff/libgroff_a-errarg.o: src/libs/libgroff/errarg.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-errarg.o -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-errarg.Tpo -c -o src/libs/libgroff/libgroff_a-errarg.o `test -f 'src/libs/libgroff/errarg.cpp' || echo '$(srcdir)/'`src/libs/libgroff/errarg.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-errarg.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-errarg.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/errarg.cpp' object='src/libs/libgroff/libgroff_a-errarg.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-errarg.o `test -f 'src/libs/libgroff/errarg.cpp' || echo '$(srcdir)/'`src/libs/libgroff/errarg.cpp
+
+src/libs/libgroff/libgroff_a-errarg.obj: src/libs/libgroff/errarg.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-errarg.obj -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-errarg.Tpo -c -o src/libs/libgroff/libgroff_a-errarg.obj `if test -f 'src/libs/libgroff/errarg.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/errarg.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/errarg.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-errarg.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-errarg.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/errarg.cpp' object='src/libs/libgroff/libgroff_a-errarg.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-errarg.obj `if test -f 'src/libs/libgroff/errarg.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/errarg.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/errarg.cpp'; fi`
+
+src/libs/libgroff/libgroff_a-error.o: src/libs/libgroff/error.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-error.o -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-error.Tpo -c -o src/libs/libgroff/libgroff_a-error.o `test -f 'src/libs/libgroff/error.cpp' || echo '$(srcdir)/'`src/libs/libgroff/error.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-error.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-error.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/error.cpp' object='src/libs/libgroff/libgroff_a-error.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-error.o `test -f 'src/libs/libgroff/error.cpp' || echo '$(srcdir)/'`src/libs/libgroff/error.cpp
+
+src/libs/libgroff/libgroff_a-error.obj: src/libs/libgroff/error.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-error.obj -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-error.Tpo -c -o src/libs/libgroff/libgroff_a-error.obj `if test -f 'src/libs/libgroff/error.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/error.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/error.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-error.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-error.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/error.cpp' object='src/libs/libgroff/libgroff_a-error.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-error.obj `if test -f 'src/libs/libgroff/error.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/error.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/error.cpp'; fi`
+
+src/libs/libgroff/libgroff_a-fatal.o: src/libs/libgroff/fatal.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-fatal.o -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-fatal.Tpo -c -o src/libs/libgroff/libgroff_a-fatal.o `test -f 'src/libs/libgroff/fatal.cpp' || echo '$(srcdir)/'`src/libs/libgroff/fatal.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-fatal.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-fatal.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/fatal.cpp' object='src/libs/libgroff/libgroff_a-fatal.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-fatal.o `test -f 'src/libs/libgroff/fatal.cpp' || echo '$(srcdir)/'`src/libs/libgroff/fatal.cpp
+
+src/libs/libgroff/libgroff_a-fatal.obj: src/libs/libgroff/fatal.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-fatal.obj -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-fatal.Tpo -c -o src/libs/libgroff/libgroff_a-fatal.obj `if test -f 'src/libs/libgroff/fatal.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/fatal.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/fatal.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-fatal.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-fatal.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/fatal.cpp' object='src/libs/libgroff/libgroff_a-fatal.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-fatal.obj `if test -f 'src/libs/libgroff/fatal.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/fatal.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/fatal.cpp'; fi`
+
+src/libs/libgroff/libgroff_a-filename.o: src/libs/libgroff/filename.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-filename.o -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-filename.Tpo -c -o src/libs/libgroff/libgroff_a-filename.o `test -f 'src/libs/libgroff/filename.cpp' || echo '$(srcdir)/'`src/libs/libgroff/filename.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-filename.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-filename.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/filename.cpp' object='src/libs/libgroff/libgroff_a-filename.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-filename.o `test -f 'src/libs/libgroff/filename.cpp' || echo '$(srcdir)/'`src/libs/libgroff/filename.cpp
+
+src/libs/libgroff/libgroff_a-filename.obj: src/libs/libgroff/filename.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-filename.obj -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-filename.Tpo -c -o src/libs/libgroff/libgroff_a-filename.obj `if test -f 'src/libs/libgroff/filename.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/filename.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/filename.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-filename.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-filename.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/filename.cpp' object='src/libs/libgroff/libgroff_a-filename.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-filename.obj `if test -f 'src/libs/libgroff/filename.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/filename.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/filename.cpp'; fi`
+
+src/libs/libgroff/libgroff_a-font.o: src/libs/libgroff/font.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-font.o -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-font.Tpo -c -o src/libs/libgroff/libgroff_a-font.o `test -f 'src/libs/libgroff/font.cpp' || echo '$(srcdir)/'`src/libs/libgroff/font.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-font.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-font.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/font.cpp' object='src/libs/libgroff/libgroff_a-font.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-font.o `test -f 'src/libs/libgroff/font.cpp' || echo '$(srcdir)/'`src/libs/libgroff/font.cpp
+
+src/libs/libgroff/libgroff_a-font.obj: src/libs/libgroff/font.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-font.obj -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-font.Tpo -c -o src/libs/libgroff/libgroff_a-font.obj `if test -f 'src/libs/libgroff/font.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/font.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/font.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-font.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-font.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/font.cpp' object='src/libs/libgroff/libgroff_a-font.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-font.obj `if test -f 'src/libs/libgroff/font.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/font.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/font.cpp'; fi`
+
+src/libs/libgroff/libgroff_a-fontfile.o: src/libs/libgroff/fontfile.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-fontfile.o -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-fontfile.Tpo -c -o src/libs/libgroff/libgroff_a-fontfile.o `test -f 'src/libs/libgroff/fontfile.cpp' || echo '$(srcdir)/'`src/libs/libgroff/fontfile.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-fontfile.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-fontfile.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/fontfile.cpp' object='src/libs/libgroff/libgroff_a-fontfile.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-fontfile.o `test -f 'src/libs/libgroff/fontfile.cpp' || echo '$(srcdir)/'`src/libs/libgroff/fontfile.cpp
+
+src/libs/libgroff/libgroff_a-fontfile.obj: src/libs/libgroff/fontfile.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-fontfile.obj -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-fontfile.Tpo -c -o src/libs/libgroff/libgroff_a-fontfile.obj `if test -f 'src/libs/libgroff/fontfile.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/fontfile.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/fontfile.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-fontfile.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-fontfile.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/fontfile.cpp' object='src/libs/libgroff/libgroff_a-fontfile.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-fontfile.obj `if test -f 'src/libs/libgroff/fontfile.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/fontfile.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/fontfile.cpp'; fi`
+
+src/libs/libgroff/libgroff_a-geometry.o: src/libs/libgroff/geometry.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-geometry.o -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-geometry.Tpo -c -o src/libs/libgroff/libgroff_a-geometry.o `test -f 'src/libs/libgroff/geometry.cpp' || echo '$(srcdir)/'`src/libs/libgroff/geometry.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-geometry.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-geometry.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/geometry.cpp' object='src/libs/libgroff/libgroff_a-geometry.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-geometry.o `test -f 'src/libs/libgroff/geometry.cpp' || echo '$(srcdir)/'`src/libs/libgroff/geometry.cpp
+
+src/libs/libgroff/libgroff_a-geometry.obj: src/libs/libgroff/geometry.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-geometry.obj -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-geometry.Tpo -c -o src/libs/libgroff/libgroff_a-geometry.obj `if test -f 'src/libs/libgroff/geometry.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/geometry.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/geometry.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-geometry.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-geometry.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/geometry.cpp' object='src/libs/libgroff/libgroff_a-geometry.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-geometry.obj `if test -f 'src/libs/libgroff/geometry.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/geometry.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/geometry.cpp'; fi`
+
+src/libs/libgroff/libgroff_a-glyphuni.o: src/libs/libgroff/glyphuni.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-glyphuni.o -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-glyphuni.Tpo -c -o src/libs/libgroff/libgroff_a-glyphuni.o `test -f 'src/libs/libgroff/glyphuni.cpp' || echo '$(srcdir)/'`src/libs/libgroff/glyphuni.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-glyphuni.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-glyphuni.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/glyphuni.cpp' object='src/libs/libgroff/libgroff_a-glyphuni.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-glyphuni.o `test -f 'src/libs/libgroff/glyphuni.cpp' || echo '$(srcdir)/'`src/libs/libgroff/glyphuni.cpp
+
+src/libs/libgroff/libgroff_a-glyphuni.obj: src/libs/libgroff/glyphuni.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-glyphuni.obj -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-glyphuni.Tpo -c -o src/libs/libgroff/libgroff_a-glyphuni.obj `if test -f 'src/libs/libgroff/glyphuni.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/glyphuni.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/glyphuni.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-glyphuni.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-glyphuni.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/glyphuni.cpp' object='src/libs/libgroff/libgroff_a-glyphuni.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-glyphuni.obj `if test -f 'src/libs/libgroff/glyphuni.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/glyphuni.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/glyphuni.cpp'; fi`
+
+src/libs/libgroff/libgroff_a-htmlhint.o: src/libs/libgroff/htmlhint.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-htmlhint.o -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-htmlhint.Tpo -c -o src/libs/libgroff/libgroff_a-htmlhint.o `test -f 'src/libs/libgroff/htmlhint.cpp' || echo '$(srcdir)/'`src/libs/libgroff/htmlhint.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-htmlhint.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-htmlhint.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/htmlhint.cpp' object='src/libs/libgroff/libgroff_a-htmlhint.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-htmlhint.o `test -f 'src/libs/libgroff/htmlhint.cpp' || echo '$(srcdir)/'`src/libs/libgroff/htmlhint.cpp
+
+src/libs/libgroff/libgroff_a-htmlhint.obj: src/libs/libgroff/htmlhint.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-htmlhint.obj -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-htmlhint.Tpo -c -o src/libs/libgroff/libgroff_a-htmlhint.obj `if test -f 'src/libs/libgroff/htmlhint.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/htmlhint.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/htmlhint.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-htmlhint.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-htmlhint.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/htmlhint.cpp' object='src/libs/libgroff/libgroff_a-htmlhint.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-htmlhint.obj `if test -f 'src/libs/libgroff/htmlhint.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/htmlhint.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/htmlhint.cpp'; fi`
+
+src/libs/libgroff/libgroff_a-hypot.o: src/libs/libgroff/hypot.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-hypot.o -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-hypot.Tpo -c -o src/libs/libgroff/libgroff_a-hypot.o `test -f 'src/libs/libgroff/hypot.cpp' || echo '$(srcdir)/'`src/libs/libgroff/hypot.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-hypot.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-hypot.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/hypot.cpp' object='src/libs/libgroff/libgroff_a-hypot.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-hypot.o `test -f 'src/libs/libgroff/hypot.cpp' || echo '$(srcdir)/'`src/libs/libgroff/hypot.cpp
+
+src/libs/libgroff/libgroff_a-hypot.obj: src/libs/libgroff/hypot.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-hypot.obj -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-hypot.Tpo -c -o src/libs/libgroff/libgroff_a-hypot.obj `if test -f 'src/libs/libgroff/hypot.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/hypot.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/hypot.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-hypot.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-hypot.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/hypot.cpp' object='src/libs/libgroff/libgroff_a-hypot.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-hypot.obj `if test -f 'src/libs/libgroff/hypot.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/hypot.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/hypot.cpp'; fi`
+
+src/libs/libgroff/libgroff_a-invalid.o: src/libs/libgroff/invalid.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-invalid.o -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-invalid.Tpo -c -o src/libs/libgroff/libgroff_a-invalid.o `test -f 'src/libs/libgroff/invalid.cpp' || echo '$(srcdir)/'`src/libs/libgroff/invalid.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-invalid.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-invalid.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/invalid.cpp' object='src/libs/libgroff/libgroff_a-invalid.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-invalid.o `test -f 'src/libs/libgroff/invalid.cpp' || echo '$(srcdir)/'`src/libs/libgroff/invalid.cpp
+
+src/libs/libgroff/libgroff_a-invalid.obj: src/libs/libgroff/invalid.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-invalid.obj -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-invalid.Tpo -c -o src/libs/libgroff/libgroff_a-invalid.obj `if test -f 'src/libs/libgroff/invalid.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/invalid.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/invalid.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-invalid.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-invalid.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/invalid.cpp' object='src/libs/libgroff/libgroff_a-invalid.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-invalid.obj `if test -f 'src/libs/libgroff/invalid.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/invalid.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/invalid.cpp'; fi`
+
+src/libs/libgroff/libgroff_a-lf.o: src/libs/libgroff/lf.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-lf.o -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-lf.Tpo -c -o src/libs/libgroff/libgroff_a-lf.o `test -f 'src/libs/libgroff/lf.cpp' || echo '$(srcdir)/'`src/libs/libgroff/lf.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-lf.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-lf.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/lf.cpp' object='src/libs/libgroff/libgroff_a-lf.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-lf.o `test -f 'src/libs/libgroff/lf.cpp' || echo '$(srcdir)/'`src/libs/libgroff/lf.cpp
+
+src/libs/libgroff/libgroff_a-lf.obj: src/libs/libgroff/lf.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-lf.obj -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-lf.Tpo -c -o src/libs/libgroff/libgroff_a-lf.obj `if test -f 'src/libs/libgroff/lf.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/lf.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/lf.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-lf.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-lf.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/lf.cpp' object='src/libs/libgroff/libgroff_a-lf.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-lf.obj `if test -f 'src/libs/libgroff/lf.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/lf.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/lf.cpp'; fi`
+
+src/libs/libgroff/libgroff_a-lineno.o: src/libs/libgroff/lineno.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-lineno.o -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-lineno.Tpo -c -o src/libs/libgroff/libgroff_a-lineno.o `test -f 'src/libs/libgroff/lineno.cpp' || echo '$(srcdir)/'`src/libs/libgroff/lineno.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-lineno.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-lineno.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/lineno.cpp' object='src/libs/libgroff/libgroff_a-lineno.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-lineno.o `test -f 'src/libs/libgroff/lineno.cpp' || echo '$(srcdir)/'`src/libs/libgroff/lineno.cpp
+
+src/libs/libgroff/libgroff_a-lineno.obj: src/libs/libgroff/lineno.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-lineno.obj -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-lineno.Tpo -c -o src/libs/libgroff/libgroff_a-lineno.obj `if test -f 'src/libs/libgroff/lineno.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/lineno.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/lineno.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-lineno.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-lineno.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/lineno.cpp' object='src/libs/libgroff/libgroff_a-lineno.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-lineno.obj `if test -f 'src/libs/libgroff/lineno.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/lineno.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/lineno.cpp'; fi`
+
+src/libs/libgroff/libgroff_a-macropath.o: src/libs/libgroff/macropath.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-macropath.o -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-macropath.Tpo -c -o src/libs/libgroff/libgroff_a-macropath.o `test -f 'src/libs/libgroff/macropath.cpp' || echo '$(srcdir)/'`src/libs/libgroff/macropath.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-macropath.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-macropath.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/macropath.cpp' object='src/libs/libgroff/libgroff_a-macropath.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-macropath.o `test -f 'src/libs/libgroff/macropath.cpp' || echo '$(srcdir)/'`src/libs/libgroff/macropath.cpp
+
+src/libs/libgroff/libgroff_a-macropath.obj: src/libs/libgroff/macropath.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-macropath.obj -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-macropath.Tpo -c -o src/libs/libgroff/libgroff_a-macropath.obj `if test -f 'src/libs/libgroff/macropath.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/macropath.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/macropath.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-macropath.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-macropath.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/macropath.cpp' object='src/libs/libgroff/libgroff_a-macropath.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-macropath.obj `if test -f 'src/libs/libgroff/macropath.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/macropath.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/macropath.cpp'; fi`
+
+src/libs/libgroff/libgroff_a-maxfilename.o: src/libs/libgroff/maxfilename.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-maxfilename.o -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-maxfilename.Tpo -c -o src/libs/libgroff/libgroff_a-maxfilename.o `test -f 'src/libs/libgroff/maxfilename.cpp' || echo '$(srcdir)/'`src/libs/libgroff/maxfilename.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-maxfilename.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-maxfilename.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/maxfilename.cpp' object='src/libs/libgroff/libgroff_a-maxfilename.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-maxfilename.o `test -f 'src/libs/libgroff/maxfilename.cpp' || echo '$(srcdir)/'`src/libs/libgroff/maxfilename.cpp
+
+src/libs/libgroff/libgroff_a-maxfilename.obj: src/libs/libgroff/maxfilename.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-maxfilename.obj -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-maxfilename.Tpo -c -o src/libs/libgroff/libgroff_a-maxfilename.obj `if test -f 'src/libs/libgroff/maxfilename.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/maxfilename.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/maxfilename.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-maxfilename.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-maxfilename.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/maxfilename.cpp' object='src/libs/libgroff/libgroff_a-maxfilename.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-maxfilename.obj `if test -f 'src/libs/libgroff/maxfilename.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/maxfilename.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/maxfilename.cpp'; fi`
+
+src/libs/libgroff/libgroff_a-maxpathname.o: src/libs/libgroff/maxpathname.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-maxpathname.o -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-maxpathname.Tpo -c -o src/libs/libgroff/libgroff_a-maxpathname.o `test -f 'src/libs/libgroff/maxpathname.cpp' || echo '$(srcdir)/'`src/libs/libgroff/maxpathname.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-maxpathname.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-maxpathname.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/maxpathname.cpp' object='src/libs/libgroff/libgroff_a-maxpathname.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-maxpathname.o `test -f 'src/libs/libgroff/maxpathname.cpp' || echo '$(srcdir)/'`src/libs/libgroff/maxpathname.cpp
+
+src/libs/libgroff/libgroff_a-maxpathname.obj: src/libs/libgroff/maxpathname.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-maxpathname.obj -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-maxpathname.Tpo -c -o src/libs/libgroff/libgroff_a-maxpathname.obj `if test -f 'src/libs/libgroff/maxpathname.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/maxpathname.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/maxpathname.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-maxpathname.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-maxpathname.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/maxpathname.cpp' object='src/libs/libgroff/libgroff_a-maxpathname.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-maxpathname.obj `if test -f 'src/libs/libgroff/maxpathname.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/maxpathname.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/maxpathname.cpp'; fi`
+
+src/libs/libgroff/libgroff_a-mksdir.o: src/libs/libgroff/mksdir.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-mksdir.o -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-mksdir.Tpo -c -o src/libs/libgroff/libgroff_a-mksdir.o `test -f 'src/libs/libgroff/mksdir.cpp' || echo '$(srcdir)/'`src/libs/libgroff/mksdir.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-mksdir.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-mksdir.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/mksdir.cpp' object='src/libs/libgroff/libgroff_a-mksdir.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-mksdir.o `test -f 'src/libs/libgroff/mksdir.cpp' || echo '$(srcdir)/'`src/libs/libgroff/mksdir.cpp
+
+src/libs/libgroff/libgroff_a-mksdir.obj: src/libs/libgroff/mksdir.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-mksdir.obj -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-mksdir.Tpo -c -o src/libs/libgroff/libgroff_a-mksdir.obj `if test -f 'src/libs/libgroff/mksdir.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/mksdir.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/mksdir.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-mksdir.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-mksdir.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/mksdir.cpp' object='src/libs/libgroff/libgroff_a-mksdir.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-mksdir.obj `if test -f 'src/libs/libgroff/mksdir.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/mksdir.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/mksdir.cpp'; fi`
+
+src/libs/libgroff/libgroff_a-nametoindex.o: src/libs/libgroff/nametoindex.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-nametoindex.o -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-nametoindex.Tpo -c -o src/libs/libgroff/libgroff_a-nametoindex.o `test -f 'src/libs/libgroff/nametoindex.cpp' || echo '$(srcdir)/'`src/libs/libgroff/nametoindex.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-nametoindex.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-nametoindex.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/nametoindex.cpp' object='src/libs/libgroff/libgroff_a-nametoindex.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-nametoindex.o `test -f 'src/libs/libgroff/nametoindex.cpp' || echo '$(srcdir)/'`src/libs/libgroff/nametoindex.cpp
+
+src/libs/libgroff/libgroff_a-nametoindex.obj: src/libs/libgroff/nametoindex.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-nametoindex.obj -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-nametoindex.Tpo -c -o src/libs/libgroff/libgroff_a-nametoindex.obj `if test -f 'src/libs/libgroff/nametoindex.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/nametoindex.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/nametoindex.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-nametoindex.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-nametoindex.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/nametoindex.cpp' object='src/libs/libgroff/libgroff_a-nametoindex.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-nametoindex.obj `if test -f 'src/libs/libgroff/nametoindex.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/nametoindex.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/nametoindex.cpp'; fi`
+
+src/libs/libgroff/libgroff_a-new.o: src/libs/libgroff/new.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-new.o -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-new.Tpo -c -o src/libs/libgroff/libgroff_a-new.o `test -f 'src/libs/libgroff/new.cpp' || echo '$(srcdir)/'`src/libs/libgroff/new.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-new.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-new.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/new.cpp' object='src/libs/libgroff/libgroff_a-new.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-new.o `test -f 'src/libs/libgroff/new.cpp' || echo '$(srcdir)/'`src/libs/libgroff/new.cpp
+
+src/libs/libgroff/libgroff_a-new.obj: src/libs/libgroff/new.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-new.obj -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-new.Tpo -c -o src/libs/libgroff/libgroff_a-new.obj `if test -f 'src/libs/libgroff/new.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/new.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/new.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-new.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-new.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/new.cpp' object='src/libs/libgroff/libgroff_a-new.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-new.obj `if test -f 'src/libs/libgroff/new.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/new.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/new.cpp'; fi`
+
+src/libs/libgroff/libgroff_a-paper.o: src/libs/libgroff/paper.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-paper.o -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-paper.Tpo -c -o src/libs/libgroff/libgroff_a-paper.o `test -f 'src/libs/libgroff/paper.cpp' || echo '$(srcdir)/'`src/libs/libgroff/paper.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-paper.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-paper.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/paper.cpp' object='src/libs/libgroff/libgroff_a-paper.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-paper.o `test -f 'src/libs/libgroff/paper.cpp' || echo '$(srcdir)/'`src/libs/libgroff/paper.cpp
+
+src/libs/libgroff/libgroff_a-paper.obj: src/libs/libgroff/paper.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-paper.obj -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-paper.Tpo -c -o src/libs/libgroff/libgroff_a-paper.obj `if test -f 'src/libs/libgroff/paper.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/paper.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/paper.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-paper.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-paper.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/paper.cpp' object='src/libs/libgroff/libgroff_a-paper.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-paper.obj `if test -f 'src/libs/libgroff/paper.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/paper.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/paper.cpp'; fi`
+
+src/libs/libgroff/libgroff_a-prime.o: src/libs/libgroff/prime.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-prime.o -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-prime.Tpo -c -o src/libs/libgroff/libgroff_a-prime.o `test -f 'src/libs/libgroff/prime.cpp' || echo '$(srcdir)/'`src/libs/libgroff/prime.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-prime.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-prime.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/prime.cpp' object='src/libs/libgroff/libgroff_a-prime.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-prime.o `test -f 'src/libs/libgroff/prime.cpp' || echo '$(srcdir)/'`src/libs/libgroff/prime.cpp
+
+src/libs/libgroff/libgroff_a-prime.obj: src/libs/libgroff/prime.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-prime.obj -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-prime.Tpo -c -o src/libs/libgroff/libgroff_a-prime.obj `if test -f 'src/libs/libgroff/prime.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/prime.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/prime.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-prime.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-prime.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/prime.cpp' object='src/libs/libgroff/libgroff_a-prime.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-prime.obj `if test -f 'src/libs/libgroff/prime.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/prime.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/prime.cpp'; fi`
+
+src/libs/libgroff/libgroff_a-ptable.o: src/libs/libgroff/ptable.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-ptable.o -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-ptable.Tpo -c -o src/libs/libgroff/libgroff_a-ptable.o `test -f 'src/libs/libgroff/ptable.cpp' || echo '$(srcdir)/'`src/libs/libgroff/ptable.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-ptable.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-ptable.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/ptable.cpp' object='src/libs/libgroff/libgroff_a-ptable.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-ptable.o `test -f 'src/libs/libgroff/ptable.cpp' || echo '$(srcdir)/'`src/libs/libgroff/ptable.cpp
+
+src/libs/libgroff/libgroff_a-ptable.obj: src/libs/libgroff/ptable.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-ptable.obj -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-ptable.Tpo -c -o src/libs/libgroff/libgroff_a-ptable.obj `if test -f 'src/libs/libgroff/ptable.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/ptable.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/ptable.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-ptable.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-ptable.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/ptable.cpp' object='src/libs/libgroff/libgroff_a-ptable.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-ptable.obj `if test -f 'src/libs/libgroff/ptable.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/ptable.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/ptable.cpp'; fi`
+
+src/libs/libgroff/libgroff_a-relocate.o: src/libs/libgroff/relocate.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-relocate.o -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-relocate.Tpo -c -o src/libs/libgroff/libgroff_a-relocate.o `test -f 'src/libs/libgroff/relocate.cpp' || echo '$(srcdir)/'`src/libs/libgroff/relocate.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-relocate.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-relocate.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/relocate.cpp' object='src/libs/libgroff/libgroff_a-relocate.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-relocate.o `test -f 'src/libs/libgroff/relocate.cpp' || echo '$(srcdir)/'`src/libs/libgroff/relocate.cpp
+
+src/libs/libgroff/libgroff_a-relocate.obj: src/libs/libgroff/relocate.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-relocate.obj -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-relocate.Tpo -c -o src/libs/libgroff/libgroff_a-relocate.obj `if test -f 'src/libs/libgroff/relocate.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/relocate.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/relocate.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-relocate.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-relocate.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/relocate.cpp' object='src/libs/libgroff/libgroff_a-relocate.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-relocate.obj `if test -f 'src/libs/libgroff/relocate.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/relocate.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/relocate.cpp'; fi`
+
+src/libs/libgroff/libgroff_a-searchpath.o: src/libs/libgroff/searchpath.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-searchpath.o -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-searchpath.Tpo -c -o src/libs/libgroff/libgroff_a-searchpath.o `test -f 'src/libs/libgroff/searchpath.cpp' || echo '$(srcdir)/'`src/libs/libgroff/searchpath.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-searchpath.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-searchpath.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/searchpath.cpp' object='src/libs/libgroff/libgroff_a-searchpath.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-searchpath.o `test -f 'src/libs/libgroff/searchpath.cpp' || echo '$(srcdir)/'`src/libs/libgroff/searchpath.cpp
+
+src/libs/libgroff/libgroff_a-searchpath.obj: src/libs/libgroff/searchpath.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-searchpath.obj -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-searchpath.Tpo -c -o src/libs/libgroff/libgroff_a-searchpath.obj `if test -f 'src/libs/libgroff/searchpath.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/searchpath.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/searchpath.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-searchpath.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-searchpath.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/searchpath.cpp' object='src/libs/libgroff/libgroff_a-searchpath.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-searchpath.obj `if test -f 'src/libs/libgroff/searchpath.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/searchpath.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/searchpath.cpp'; fi`
+
+src/libs/libgroff/libgroff_a-string.o: src/libs/libgroff/string.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-string.o -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-string.Tpo -c -o src/libs/libgroff/libgroff_a-string.o `test -f 'src/libs/libgroff/string.cpp' || echo '$(srcdir)/'`src/libs/libgroff/string.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-string.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-string.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/string.cpp' object='src/libs/libgroff/libgroff_a-string.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-string.o `test -f 'src/libs/libgroff/string.cpp' || echo '$(srcdir)/'`src/libs/libgroff/string.cpp
+
+src/libs/libgroff/libgroff_a-string.obj: src/libs/libgroff/string.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-string.obj -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-string.Tpo -c -o src/libs/libgroff/libgroff_a-string.obj `if test -f 'src/libs/libgroff/string.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/string.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/string.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-string.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-string.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/string.cpp' object='src/libs/libgroff/libgroff_a-string.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-string.obj `if test -f 'src/libs/libgroff/string.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/string.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/string.cpp'; fi`
+
+src/libs/libgroff/libgroff_a-strsave.o: src/libs/libgroff/strsave.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-strsave.o -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-strsave.Tpo -c -o src/libs/libgroff/libgroff_a-strsave.o `test -f 'src/libs/libgroff/strsave.cpp' || echo '$(srcdir)/'`src/libs/libgroff/strsave.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-strsave.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-strsave.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/strsave.cpp' object='src/libs/libgroff/libgroff_a-strsave.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-strsave.o `test -f 'src/libs/libgroff/strsave.cpp' || echo '$(srcdir)/'`src/libs/libgroff/strsave.cpp
+
+src/libs/libgroff/libgroff_a-strsave.obj: src/libs/libgroff/strsave.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-strsave.obj -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-strsave.Tpo -c -o src/libs/libgroff/libgroff_a-strsave.obj `if test -f 'src/libs/libgroff/strsave.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/strsave.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/strsave.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-strsave.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-strsave.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/strsave.cpp' object='src/libs/libgroff/libgroff_a-strsave.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-strsave.obj `if test -f 'src/libs/libgroff/strsave.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/strsave.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/strsave.cpp'; fi`
+
+src/libs/libgroff/libgroff_a-symbol.o: src/libs/libgroff/symbol.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-symbol.o -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-symbol.Tpo -c -o src/libs/libgroff/libgroff_a-symbol.o `test -f 'src/libs/libgroff/symbol.cpp' || echo '$(srcdir)/'`src/libs/libgroff/symbol.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-symbol.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-symbol.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/symbol.cpp' object='src/libs/libgroff/libgroff_a-symbol.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-symbol.o `test -f 'src/libs/libgroff/symbol.cpp' || echo '$(srcdir)/'`src/libs/libgroff/symbol.cpp
+
+src/libs/libgroff/libgroff_a-symbol.obj: src/libs/libgroff/symbol.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-symbol.obj -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-symbol.Tpo -c -o src/libs/libgroff/libgroff_a-symbol.obj `if test -f 'src/libs/libgroff/symbol.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/symbol.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/symbol.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-symbol.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-symbol.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/symbol.cpp' object='src/libs/libgroff/libgroff_a-symbol.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-symbol.obj `if test -f 'src/libs/libgroff/symbol.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/symbol.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/symbol.cpp'; fi`
+
+src/libs/libgroff/libgroff_a-tmpfile.o: src/libs/libgroff/tmpfile.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-tmpfile.o -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-tmpfile.Tpo -c -o src/libs/libgroff/libgroff_a-tmpfile.o `test -f 'src/libs/libgroff/tmpfile.cpp' || echo '$(srcdir)/'`src/libs/libgroff/tmpfile.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-tmpfile.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-tmpfile.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/tmpfile.cpp' object='src/libs/libgroff/libgroff_a-tmpfile.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-tmpfile.o `test -f 'src/libs/libgroff/tmpfile.cpp' || echo '$(srcdir)/'`src/libs/libgroff/tmpfile.cpp
+
+src/libs/libgroff/libgroff_a-tmpfile.obj: src/libs/libgroff/tmpfile.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-tmpfile.obj -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-tmpfile.Tpo -c -o src/libs/libgroff/libgroff_a-tmpfile.obj `if test -f 'src/libs/libgroff/tmpfile.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/tmpfile.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/tmpfile.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-tmpfile.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-tmpfile.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/tmpfile.cpp' object='src/libs/libgroff/libgroff_a-tmpfile.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-tmpfile.obj `if test -f 'src/libs/libgroff/tmpfile.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/tmpfile.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/tmpfile.cpp'; fi`
+
+src/libs/libgroff/libgroff_a-tmpname.o: src/libs/libgroff/tmpname.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-tmpname.o -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-tmpname.Tpo -c -o src/libs/libgroff/libgroff_a-tmpname.o `test -f 'src/libs/libgroff/tmpname.cpp' || echo '$(srcdir)/'`src/libs/libgroff/tmpname.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-tmpname.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-tmpname.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/tmpname.cpp' object='src/libs/libgroff/libgroff_a-tmpname.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-tmpname.o `test -f 'src/libs/libgroff/tmpname.cpp' || echo '$(srcdir)/'`src/libs/libgroff/tmpname.cpp
+
+src/libs/libgroff/libgroff_a-tmpname.obj: src/libs/libgroff/tmpname.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-tmpname.obj -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-tmpname.Tpo -c -o src/libs/libgroff/libgroff_a-tmpname.obj `if test -f 'src/libs/libgroff/tmpname.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/tmpname.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/tmpname.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-tmpname.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-tmpname.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/tmpname.cpp' object='src/libs/libgroff/libgroff_a-tmpname.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-tmpname.obj `if test -f 'src/libs/libgroff/tmpname.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/tmpname.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/tmpname.cpp'; fi`
+
+src/libs/libgroff/libgroff_a-unicode.o: src/libs/libgroff/unicode.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-unicode.o -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-unicode.Tpo -c -o src/libs/libgroff/libgroff_a-unicode.o `test -f 'src/libs/libgroff/unicode.cpp' || echo '$(srcdir)/'`src/libs/libgroff/unicode.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-unicode.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-unicode.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/unicode.cpp' object='src/libs/libgroff/libgroff_a-unicode.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-unicode.o `test -f 'src/libs/libgroff/unicode.cpp' || echo '$(srcdir)/'`src/libs/libgroff/unicode.cpp
+
+src/libs/libgroff/libgroff_a-unicode.obj: src/libs/libgroff/unicode.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-unicode.obj -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-unicode.Tpo -c -o src/libs/libgroff/libgroff_a-unicode.obj `if test -f 'src/libs/libgroff/unicode.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/unicode.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/unicode.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-unicode.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-unicode.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/unicode.cpp' object='src/libs/libgroff/libgroff_a-unicode.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-unicode.obj `if test -f 'src/libs/libgroff/unicode.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/unicode.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/unicode.cpp'; fi`
+
+src/libs/libgroff/libgroff_a-uniglyph.o: src/libs/libgroff/uniglyph.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-uniglyph.o -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-uniglyph.Tpo -c -o src/libs/libgroff/libgroff_a-uniglyph.o `test -f 'src/libs/libgroff/uniglyph.cpp' || echo '$(srcdir)/'`src/libs/libgroff/uniglyph.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-uniglyph.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-uniglyph.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/uniglyph.cpp' object='src/libs/libgroff/libgroff_a-uniglyph.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-uniglyph.o `test -f 'src/libs/libgroff/uniglyph.cpp' || echo '$(srcdir)/'`src/libs/libgroff/uniglyph.cpp
+
+src/libs/libgroff/libgroff_a-uniglyph.obj: src/libs/libgroff/uniglyph.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-uniglyph.obj -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-uniglyph.Tpo -c -o src/libs/libgroff/libgroff_a-uniglyph.obj `if test -f 'src/libs/libgroff/uniglyph.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/uniglyph.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/uniglyph.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-uniglyph.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-uniglyph.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/uniglyph.cpp' object='src/libs/libgroff/libgroff_a-uniglyph.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-uniglyph.obj `if test -f 'src/libs/libgroff/uniglyph.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/uniglyph.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/uniglyph.cpp'; fi`
+
+src/libs/libgroff/libgroff_a-uniuni.o: src/libs/libgroff/uniuni.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-uniuni.o -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-uniuni.Tpo -c -o src/libs/libgroff/libgroff_a-uniuni.o `test -f 'src/libs/libgroff/uniuni.cpp' || echo '$(srcdir)/'`src/libs/libgroff/uniuni.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-uniuni.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-uniuni.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/uniuni.cpp' object='src/libs/libgroff/libgroff_a-uniuni.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-uniuni.o `test -f 'src/libs/libgroff/uniuni.cpp' || echo '$(srcdir)/'`src/libs/libgroff/uniuni.cpp
+
+src/libs/libgroff/libgroff_a-uniuni.obj: src/libs/libgroff/uniuni.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-uniuni.obj -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-uniuni.Tpo -c -o src/libs/libgroff/libgroff_a-uniuni.obj `if test -f 'src/libs/libgroff/uniuni.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/uniuni.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/uniuni.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-uniuni.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-uniuni.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/uniuni.cpp' object='src/libs/libgroff/libgroff_a-uniuni.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-uniuni.obj `if test -f 'src/libs/libgroff/uniuni.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/uniuni.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/uniuni.cpp'; fi`
+
+src/libs/libgroff/libgroff_a-version.o: src/libs/libgroff/version.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-version.o -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-version.Tpo -c -o src/libs/libgroff/libgroff_a-version.o `test -f 'src/libs/libgroff/version.cpp' || echo '$(srcdir)/'`src/libs/libgroff/version.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-version.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-version.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/version.cpp' object='src/libs/libgroff/libgroff_a-version.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-version.o `test -f 'src/libs/libgroff/version.cpp' || echo '$(srcdir)/'`src/libs/libgroff/version.cpp
+
+src/libs/libgroff/libgroff_a-version.obj: src/libs/libgroff/version.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libs/libgroff/libgroff_a-version.obj -MD -MP -MF src/libs/libgroff/$(DEPDIR)/libgroff_a-version.Tpo -c -o src/libs/libgroff/libgroff_a-version.obj `if test -f 'src/libs/libgroff/version.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/version.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/version.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/libs/libgroff/$(DEPDIR)/libgroff_a-version.Tpo src/libs/libgroff/$(DEPDIR)/libgroff_a-version.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/libs/libgroff/version.cpp' object='src/libs/libgroff/libgroff_a-version.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgroff_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/libs/libgroff/libgroff_a-version.obj `if test -f 'src/libs/libgroff/version.cpp'; then $(CYGPATH_W) 'src/libs/libgroff/version.cpp'; else $(CYGPATH_W) '$(srcdir)/src/libs/libgroff/version.cpp'; fi`
+
+src/preproc/eqn/eqn-main.o: src/preproc/eqn/main.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eqn_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/preproc/eqn/eqn-main.o -MD -MP -MF src/preproc/eqn/$(DEPDIR)/eqn-main.Tpo -c -o src/preproc/eqn/eqn-main.o `test -f 'src/preproc/eqn/main.cpp' || echo '$(srcdir)/'`src/preproc/eqn/main.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/preproc/eqn/$(DEPDIR)/eqn-main.Tpo src/preproc/eqn/$(DEPDIR)/eqn-main.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/preproc/eqn/main.cpp' object='src/preproc/eqn/eqn-main.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eqn_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/preproc/eqn/eqn-main.o `test -f 'src/preproc/eqn/main.cpp' || echo '$(srcdir)/'`src/preproc/eqn/main.cpp
+
+src/preproc/eqn/eqn-main.obj: src/preproc/eqn/main.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eqn_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/preproc/eqn/eqn-main.obj -MD -MP -MF src/preproc/eqn/$(DEPDIR)/eqn-main.Tpo -c -o src/preproc/eqn/eqn-main.obj `if test -f 'src/preproc/eqn/main.cpp'; then $(CYGPATH_W) 'src/preproc/eqn/main.cpp'; else $(CYGPATH_W) '$(srcdir)/src/preproc/eqn/main.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/preproc/eqn/$(DEPDIR)/eqn-main.Tpo src/preproc/eqn/$(DEPDIR)/eqn-main.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/preproc/eqn/main.cpp' object='src/preproc/eqn/eqn-main.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eqn_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/preproc/eqn/eqn-main.obj `if test -f 'src/preproc/eqn/main.cpp'; then $(CYGPATH_W) 'src/preproc/eqn/main.cpp'; else $(CYGPATH_W) '$(srcdir)/src/preproc/eqn/main.cpp'; fi`
+
+src/preproc/eqn/eqn-lex.o: src/preproc/eqn/lex.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eqn_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/preproc/eqn/eqn-lex.o -MD -MP -MF src/preproc/eqn/$(DEPDIR)/eqn-lex.Tpo -c -o src/preproc/eqn/eqn-lex.o `test -f 'src/preproc/eqn/lex.cpp' || echo '$(srcdir)/'`src/preproc/eqn/lex.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/preproc/eqn/$(DEPDIR)/eqn-lex.Tpo src/preproc/eqn/$(DEPDIR)/eqn-lex.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/preproc/eqn/lex.cpp' object='src/preproc/eqn/eqn-lex.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eqn_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/preproc/eqn/eqn-lex.o `test -f 'src/preproc/eqn/lex.cpp' || echo '$(srcdir)/'`src/preproc/eqn/lex.cpp
+
+src/preproc/eqn/eqn-lex.obj: src/preproc/eqn/lex.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eqn_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/preproc/eqn/eqn-lex.obj -MD -MP -MF src/preproc/eqn/$(DEPDIR)/eqn-lex.Tpo -c -o src/preproc/eqn/eqn-lex.obj `if test -f 'src/preproc/eqn/lex.cpp'; then $(CYGPATH_W) 'src/preproc/eqn/lex.cpp'; else $(CYGPATH_W) '$(srcdir)/src/preproc/eqn/lex.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/preproc/eqn/$(DEPDIR)/eqn-lex.Tpo src/preproc/eqn/$(DEPDIR)/eqn-lex.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/preproc/eqn/lex.cpp' object='src/preproc/eqn/eqn-lex.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eqn_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/preproc/eqn/eqn-lex.obj `if test -f 'src/preproc/eqn/lex.cpp'; then $(CYGPATH_W) 'src/preproc/eqn/lex.cpp'; else $(CYGPATH_W) '$(srcdir)/src/preproc/eqn/lex.cpp'; fi`
+
+src/preproc/eqn/eqn-box.o: src/preproc/eqn/box.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eqn_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/preproc/eqn/eqn-box.o -MD -MP -MF src/preproc/eqn/$(DEPDIR)/eqn-box.Tpo -c -o src/preproc/eqn/eqn-box.o `test -f 'src/preproc/eqn/box.cpp' || echo '$(srcdir)/'`src/preproc/eqn/box.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/preproc/eqn/$(DEPDIR)/eqn-box.Tpo src/preproc/eqn/$(DEPDIR)/eqn-box.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/preproc/eqn/box.cpp' object='src/preproc/eqn/eqn-box.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eqn_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/preproc/eqn/eqn-box.o `test -f 'src/preproc/eqn/box.cpp' || echo '$(srcdir)/'`src/preproc/eqn/box.cpp
+
+src/preproc/eqn/eqn-box.obj: src/preproc/eqn/box.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eqn_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/preproc/eqn/eqn-box.obj -MD -MP -MF src/preproc/eqn/$(DEPDIR)/eqn-box.Tpo -c -o src/preproc/eqn/eqn-box.obj `if test -f 'src/preproc/eqn/box.cpp'; then $(CYGPATH_W) 'src/preproc/eqn/box.cpp'; else $(CYGPATH_W) '$(srcdir)/src/preproc/eqn/box.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/preproc/eqn/$(DEPDIR)/eqn-box.Tpo src/preproc/eqn/$(DEPDIR)/eqn-box.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/preproc/eqn/box.cpp' object='src/preproc/eqn/eqn-box.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eqn_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/preproc/eqn/eqn-box.obj `if test -f 'src/preproc/eqn/box.cpp'; then $(CYGPATH_W) 'src/preproc/eqn/box.cpp'; else $(CYGPATH_W) '$(srcdir)/src/preproc/eqn/box.cpp'; fi`
+
+src/preproc/eqn/eqn-limit.o: src/preproc/eqn/limit.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eqn_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/preproc/eqn/eqn-limit.o -MD -MP -MF src/preproc/eqn/$(DEPDIR)/eqn-limit.Tpo -c -o src/preproc/eqn/eqn-limit.o `test -f 'src/preproc/eqn/limit.cpp' || echo '$(srcdir)/'`src/preproc/eqn/limit.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/preproc/eqn/$(DEPDIR)/eqn-limit.Tpo src/preproc/eqn/$(DEPDIR)/eqn-limit.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/preproc/eqn/limit.cpp' object='src/preproc/eqn/eqn-limit.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eqn_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/preproc/eqn/eqn-limit.o `test -f 'src/preproc/eqn/limit.cpp' || echo '$(srcdir)/'`src/preproc/eqn/limit.cpp
+
+src/preproc/eqn/eqn-limit.obj: src/preproc/eqn/limit.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eqn_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/preproc/eqn/eqn-limit.obj -MD -MP -MF src/preproc/eqn/$(DEPDIR)/eqn-limit.Tpo -c -o src/preproc/eqn/eqn-limit.obj `if test -f 'src/preproc/eqn/limit.cpp'; then $(CYGPATH_W) 'src/preproc/eqn/limit.cpp'; else $(CYGPATH_W) '$(srcdir)/src/preproc/eqn/limit.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/preproc/eqn/$(DEPDIR)/eqn-limit.Tpo src/preproc/eqn/$(DEPDIR)/eqn-limit.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/preproc/eqn/limit.cpp' object='src/preproc/eqn/eqn-limit.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eqn_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/preproc/eqn/eqn-limit.obj `if test -f 'src/preproc/eqn/limit.cpp'; then $(CYGPATH_W) 'src/preproc/eqn/limit.cpp'; else $(CYGPATH_W) '$(srcdir)/src/preproc/eqn/limit.cpp'; fi`
+
+src/preproc/eqn/eqn-list.o: src/preproc/eqn/list.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eqn_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/preproc/eqn/eqn-list.o -MD -MP -MF src/preproc/eqn/$(DEPDIR)/eqn-list.Tpo -c -o src/preproc/eqn/eqn-list.o `test -f 'src/preproc/eqn/list.cpp' || echo '$(srcdir)/'`src/preproc/eqn/list.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/preproc/eqn/$(DEPDIR)/eqn-list.Tpo src/preproc/eqn/$(DEPDIR)/eqn-list.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/preproc/eqn/list.cpp' object='src/preproc/eqn/eqn-list.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eqn_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/preproc/eqn/eqn-list.o `test -f 'src/preproc/eqn/list.cpp' || echo '$(srcdir)/'`src/preproc/eqn/list.cpp
+
+src/preproc/eqn/eqn-list.obj: src/preproc/eqn/list.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eqn_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/preproc/eqn/eqn-list.obj -MD -MP -MF src/preproc/eqn/$(DEPDIR)/eqn-list.Tpo -c -o src/preproc/eqn/eqn-list.obj `if test -f 'src/preproc/eqn/list.cpp'; then $(CYGPATH_W) 'src/preproc/eqn/list.cpp'; else $(CYGPATH_W) '$(srcdir)/src/preproc/eqn/list.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/preproc/eqn/$(DEPDIR)/eqn-list.Tpo src/preproc/eqn/$(DEPDIR)/eqn-list.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/preproc/eqn/list.cpp' object='src/preproc/eqn/eqn-list.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eqn_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/preproc/eqn/eqn-list.obj `if test -f 'src/preproc/eqn/list.cpp'; then $(CYGPATH_W) 'src/preproc/eqn/list.cpp'; else $(CYGPATH_W) '$(srcdir)/src/preproc/eqn/list.cpp'; fi`
+
+src/preproc/eqn/eqn-over.o: src/preproc/eqn/over.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eqn_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/preproc/eqn/eqn-over.o -MD -MP -MF src/preproc/eqn/$(DEPDIR)/eqn-over.Tpo -c -o src/preproc/eqn/eqn-over.o `test -f 'src/preproc/eqn/over.cpp' || echo '$(srcdir)/'`src/preproc/eqn/over.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/preproc/eqn/$(DEPDIR)/eqn-over.Tpo src/preproc/eqn/$(DEPDIR)/eqn-over.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/preproc/eqn/over.cpp' object='src/preproc/eqn/eqn-over.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eqn_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/preproc/eqn/eqn-over.o `test -f 'src/preproc/eqn/over.cpp' || echo '$(srcdir)/'`src/preproc/eqn/over.cpp
+
+src/preproc/eqn/eqn-over.obj: src/preproc/eqn/over.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eqn_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/preproc/eqn/eqn-over.obj -MD -MP -MF src/preproc/eqn/$(DEPDIR)/eqn-over.Tpo -c -o src/preproc/eqn/eqn-over.obj `if test -f 'src/preproc/eqn/over.cpp'; then $(CYGPATH_W) 'src/preproc/eqn/over.cpp'; else $(CYGPATH_W) '$(srcdir)/src/preproc/eqn/over.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/preproc/eqn/$(DEPDIR)/eqn-over.Tpo src/preproc/eqn/$(DEPDIR)/eqn-over.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/preproc/eqn/over.cpp' object='src/preproc/eqn/eqn-over.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eqn_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/preproc/eqn/eqn-over.obj `if test -f 'src/preproc/eqn/over.cpp'; then $(CYGPATH_W) 'src/preproc/eqn/over.cpp'; else $(CYGPATH_W) '$(srcdir)/src/preproc/eqn/over.cpp'; fi`
+
+src/preproc/eqn/eqn-text.o: src/preproc/eqn/text.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eqn_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/preproc/eqn/eqn-text.o -MD -MP -MF src/preproc/eqn/$(DEPDIR)/eqn-text.Tpo -c -o src/preproc/eqn/eqn-text.o `test -f 'src/preproc/eqn/text.cpp' || echo '$(srcdir)/'`src/preproc/eqn/text.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/preproc/eqn/$(DEPDIR)/eqn-text.Tpo src/preproc/eqn/$(DEPDIR)/eqn-text.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/preproc/eqn/text.cpp' object='src/preproc/eqn/eqn-text.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eqn_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/preproc/eqn/eqn-text.o `test -f 'src/preproc/eqn/text.cpp' || echo '$(srcdir)/'`src/preproc/eqn/text.cpp
+
+src/preproc/eqn/eqn-text.obj: src/preproc/eqn/text.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eqn_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/preproc/eqn/eqn-text.obj -MD -MP -MF src/preproc/eqn/$(DEPDIR)/eqn-text.Tpo -c -o src/preproc/eqn/eqn-text.obj `if test -f 'src/preproc/eqn/text.cpp'; then $(CYGPATH_W) 'src/preproc/eqn/text.cpp'; else $(CYGPATH_W) '$(srcdir)/src/preproc/eqn/text.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/preproc/eqn/$(DEPDIR)/eqn-text.Tpo src/preproc/eqn/$(DEPDIR)/eqn-text.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/preproc/eqn/text.cpp' object='src/preproc/eqn/eqn-text.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eqn_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/preproc/eqn/eqn-text.obj `if test -f 'src/preproc/eqn/text.cpp'; then $(CYGPATH_W) 'src/preproc/eqn/text.cpp'; else $(CYGPATH_W) '$(srcdir)/src/preproc/eqn/text.cpp'; fi`
+
+src/preproc/eqn/eqn-script.o: src/preproc/eqn/script.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eqn_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/preproc/eqn/eqn-script.o -MD -MP -MF src/preproc/eqn/$(DEPDIR)/eqn-script.Tpo -c -o src/preproc/eqn/eqn-script.o `test -f 'src/preproc/eqn/script.cpp' || echo '$(srcdir)/'`src/preproc/eqn/script.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/preproc/eqn/$(DEPDIR)/eqn-script.Tpo src/preproc/eqn/$(DEPDIR)/eqn-script.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/preproc/eqn/script.cpp' object='src/preproc/eqn/eqn-script.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eqn_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/preproc/eqn/eqn-script.o `test -f 'src/preproc/eqn/script.cpp' || echo '$(srcdir)/'`src/preproc/eqn/script.cpp
+
+src/preproc/eqn/eqn-script.obj: src/preproc/eqn/script.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eqn_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/preproc/eqn/eqn-script.obj -MD -MP -MF src/preproc/eqn/$(DEPDIR)/eqn-script.Tpo -c -o src/preproc/eqn/eqn-script.obj `if test -f 'src/preproc/eqn/script.cpp'; then $(CYGPATH_W) 'src/preproc/eqn/script.cpp'; else $(CYGPATH_W) '$(srcdir)/src/preproc/eqn/script.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/preproc/eqn/$(DEPDIR)/eqn-script.Tpo src/preproc/eqn/$(DEPDIR)/eqn-script.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/preproc/eqn/script.cpp' object='src/preproc/eqn/eqn-script.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eqn_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/preproc/eqn/eqn-script.obj `if test -f 'src/preproc/eqn/script.cpp'; then $(CYGPATH_W) 'src/preproc/eqn/script.cpp'; else $(CYGPATH_W) '$(srcdir)/src/preproc/eqn/script.cpp'; fi`
+
+src/preproc/eqn/eqn-mark.o: src/preproc/eqn/mark.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eqn_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/preproc/eqn/eqn-mark.o -MD -MP -MF src/preproc/eqn/$(DEPDIR)/eqn-mark.Tpo -c -o src/preproc/eqn/eqn-mark.o `test -f 'src/preproc/eqn/mark.cpp' || echo '$(srcdir)/'`src/preproc/eqn/mark.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/preproc/eqn/$(DEPDIR)/eqn-mark.Tpo src/preproc/eqn/$(DEPDIR)/eqn-mark.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/preproc/eqn/mark.cpp' object='src/preproc/eqn/eqn-mark.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eqn_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/preproc/eqn/eqn-mark.o `test -f 'src/preproc/eqn/mark.cpp' || echo '$(srcdir)/'`src/preproc/eqn/mark.cpp
+
+src/preproc/eqn/eqn-mark.obj: src/preproc/eqn/mark.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eqn_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/preproc/eqn/eqn-mark.obj -MD -MP -MF src/preproc/eqn/$(DEPDIR)/eqn-mark.Tpo -c -o src/preproc/eqn/eqn-mark.obj `if test -f 'src/preproc/eqn/mark.cpp'; then $(CYGPATH_W) 'src/preproc/eqn/mark.cpp'; else $(CYGPATH_W) '$(srcdir)/src/preproc/eqn/mark.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/preproc/eqn/$(DEPDIR)/eqn-mark.Tpo src/preproc/eqn/$(DEPDIR)/eqn-mark.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/preproc/eqn/mark.cpp' object='src/preproc/eqn/eqn-mark.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eqn_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/preproc/eqn/eqn-mark.obj `if test -f 'src/preproc/eqn/mark.cpp'; then $(CYGPATH_W) 'src/preproc/eqn/mark.cpp'; else $(CYGPATH_W) '$(srcdir)/src/preproc/eqn/mark.cpp'; fi`
+
+src/preproc/eqn/eqn-other.o: src/preproc/eqn/other.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eqn_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/preproc/eqn/eqn-other.o -MD -MP -MF src/preproc/eqn/$(DEPDIR)/eqn-other.Tpo -c -o src/preproc/eqn/eqn-other.o `test -f 'src/preproc/eqn/other.cpp' || echo '$(srcdir)/'`src/preproc/eqn/other.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/preproc/eqn/$(DEPDIR)/eqn-other.Tpo src/preproc/eqn/$(DEPDIR)/eqn-other.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/preproc/eqn/other.cpp' object='src/preproc/eqn/eqn-other.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eqn_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/preproc/eqn/eqn-other.o `test -f 'src/preproc/eqn/other.cpp' || echo '$(srcdir)/'`src/preproc/eqn/other.cpp
+
+src/preproc/eqn/eqn-other.obj: src/preproc/eqn/other.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eqn_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/preproc/eqn/eqn-other.obj -MD -MP -MF src/preproc/eqn/$(DEPDIR)/eqn-other.Tpo -c -o src/preproc/eqn/eqn-other.obj `if test -f 'src/preproc/eqn/other.cpp'; then $(CYGPATH_W) 'src/preproc/eqn/other.cpp'; else $(CYGPATH_W) '$(srcdir)/src/preproc/eqn/other.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/preproc/eqn/$(DEPDIR)/eqn-other.Tpo src/preproc/eqn/$(DEPDIR)/eqn-other.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/preproc/eqn/other.cpp' object='src/preproc/eqn/eqn-other.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eqn_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/preproc/eqn/eqn-other.obj `if test -f 'src/preproc/eqn/other.cpp'; then $(CYGPATH_W) 'src/preproc/eqn/other.cpp'; else $(CYGPATH_W) '$(srcdir)/src/preproc/eqn/other.cpp'; fi`
+
+src/preproc/eqn/eqn-delim.o: src/preproc/eqn/delim.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eqn_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/preproc/eqn/eqn-delim.o -MD -MP -MF src/preproc/eqn/$(DEPDIR)/eqn-delim.Tpo -c -o src/preproc/eqn/eqn-delim.o `test -f 'src/preproc/eqn/delim.cpp' || echo '$(srcdir)/'`src/preproc/eqn/delim.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/preproc/eqn/$(DEPDIR)/eqn-delim.Tpo src/preproc/eqn/$(DEPDIR)/eqn-delim.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/preproc/eqn/delim.cpp' object='src/preproc/eqn/eqn-delim.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eqn_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/preproc/eqn/eqn-delim.o `test -f 'src/preproc/eqn/delim.cpp' || echo '$(srcdir)/'`src/preproc/eqn/delim.cpp
+
+src/preproc/eqn/eqn-delim.obj: src/preproc/eqn/delim.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eqn_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/preproc/eqn/eqn-delim.obj -MD -MP -MF src/preproc/eqn/$(DEPDIR)/eqn-delim.Tpo -c -o src/preproc/eqn/eqn-delim.obj `if test -f 'src/preproc/eqn/delim.cpp'; then $(CYGPATH_W) 'src/preproc/eqn/delim.cpp'; else $(CYGPATH_W) '$(srcdir)/src/preproc/eqn/delim.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/preproc/eqn/$(DEPDIR)/eqn-delim.Tpo src/preproc/eqn/$(DEPDIR)/eqn-delim.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/preproc/eqn/delim.cpp' object='src/preproc/eqn/eqn-delim.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eqn_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/preproc/eqn/eqn-delim.obj `if test -f 'src/preproc/eqn/delim.cpp'; then $(CYGPATH_W) 'src/preproc/eqn/delim.cpp'; else $(CYGPATH_W) '$(srcdir)/src/preproc/eqn/delim.cpp'; fi`
+
+src/preproc/eqn/eqn-sqrt.o: src/preproc/eqn/sqrt.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eqn_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/preproc/eqn/eqn-sqrt.o -MD -MP -MF src/preproc/eqn/$(DEPDIR)/eqn-sqrt.Tpo -c -o src/preproc/eqn/eqn-sqrt.o `test -f 'src/preproc/eqn/sqrt.cpp' || echo '$(srcdir)/'`src/preproc/eqn/sqrt.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/preproc/eqn/$(DEPDIR)/eqn-sqrt.Tpo src/preproc/eqn/$(DEPDIR)/eqn-sqrt.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/preproc/eqn/sqrt.cpp' object='src/preproc/eqn/eqn-sqrt.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eqn_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/preproc/eqn/eqn-sqrt.o `test -f 'src/preproc/eqn/sqrt.cpp' || echo '$(srcdir)/'`src/preproc/eqn/sqrt.cpp
+
+src/preproc/eqn/eqn-sqrt.obj: src/preproc/eqn/sqrt.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eqn_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/preproc/eqn/eqn-sqrt.obj -MD -MP -MF src/preproc/eqn/$(DEPDIR)/eqn-sqrt.Tpo -c -o src/preproc/eqn/eqn-sqrt.obj `if test -f 'src/preproc/eqn/sqrt.cpp'; then $(CYGPATH_W) 'src/preproc/eqn/sqrt.cpp'; else $(CYGPATH_W) '$(srcdir)/src/preproc/eqn/sqrt.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/preproc/eqn/$(DEPDIR)/eqn-sqrt.Tpo src/preproc/eqn/$(DEPDIR)/eqn-sqrt.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/preproc/eqn/sqrt.cpp' object='src/preproc/eqn/eqn-sqrt.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eqn_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/preproc/eqn/eqn-sqrt.obj `if test -f 'src/preproc/eqn/sqrt.cpp'; then $(CYGPATH_W) 'src/preproc/eqn/sqrt.cpp'; else $(CYGPATH_W) '$(srcdir)/src/preproc/eqn/sqrt.cpp'; fi`
+
+src/preproc/eqn/eqn-pile.o: src/preproc/eqn/pile.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eqn_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/preproc/eqn/eqn-pile.o -MD -MP -MF src/preproc/eqn/$(DEPDIR)/eqn-pile.Tpo -c -o src/preproc/eqn/eqn-pile.o `test -f 'src/preproc/eqn/pile.cpp' || echo '$(srcdir)/'`src/preproc/eqn/pile.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/preproc/eqn/$(DEPDIR)/eqn-pile.Tpo src/preproc/eqn/$(DEPDIR)/eqn-pile.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/preproc/eqn/pile.cpp' object='src/preproc/eqn/eqn-pile.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eqn_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/preproc/eqn/eqn-pile.o `test -f 'src/preproc/eqn/pile.cpp' || echo '$(srcdir)/'`src/preproc/eqn/pile.cpp
+
+src/preproc/eqn/eqn-pile.obj: src/preproc/eqn/pile.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eqn_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/preproc/eqn/eqn-pile.obj -MD -MP -MF src/preproc/eqn/$(DEPDIR)/eqn-pile.Tpo -c -o src/preproc/eqn/eqn-pile.obj `if test -f 'src/preproc/eqn/pile.cpp'; then $(CYGPATH_W) 'src/preproc/eqn/pile.cpp'; else $(CYGPATH_W) '$(srcdir)/src/preproc/eqn/pile.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/preproc/eqn/$(DEPDIR)/eqn-pile.Tpo src/preproc/eqn/$(DEPDIR)/eqn-pile.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/preproc/eqn/pile.cpp' object='src/preproc/eqn/eqn-pile.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eqn_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/preproc/eqn/eqn-pile.obj `if test -f 'src/preproc/eqn/pile.cpp'; then $(CYGPATH_W) 'src/preproc/eqn/pile.cpp'; else $(CYGPATH_W) '$(srcdir)/src/preproc/eqn/pile.cpp'; fi`
+
+src/preproc/eqn/eqn-special.o: src/preproc/eqn/special.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eqn_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/preproc/eqn/eqn-special.o -MD -MP -MF src/preproc/eqn/$(DEPDIR)/eqn-special.Tpo -c -o src/preproc/eqn/eqn-special.o `test -f 'src/preproc/eqn/special.cpp' || echo '$(srcdir)/'`src/preproc/eqn/special.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/preproc/eqn/$(DEPDIR)/eqn-special.Tpo src/preproc/eqn/$(DEPDIR)/eqn-special.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/preproc/eqn/special.cpp' object='src/preproc/eqn/eqn-special.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eqn_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/preproc/eqn/eqn-special.o `test -f 'src/preproc/eqn/special.cpp' || echo '$(srcdir)/'`src/preproc/eqn/special.cpp
+
+src/preproc/eqn/eqn-special.obj: src/preproc/eqn/special.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eqn_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/preproc/eqn/eqn-special.obj -MD -MP -MF src/preproc/eqn/$(DEPDIR)/eqn-special.Tpo -c -o src/preproc/eqn/eqn-special.obj `if test -f 'src/preproc/eqn/special.cpp'; then $(CYGPATH_W) 'src/preproc/eqn/special.cpp'; else $(CYGPATH_W) '$(srcdir)/src/preproc/eqn/special.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/preproc/eqn/$(DEPDIR)/eqn-special.Tpo src/preproc/eqn/$(DEPDIR)/eqn-special.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/preproc/eqn/special.cpp' object='src/preproc/eqn/eqn-special.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eqn_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/preproc/eqn/eqn-special.obj `if test -f 'src/preproc/eqn/special.cpp'; then $(CYGPATH_W) 'src/preproc/eqn/special.cpp'; else $(CYGPATH_W) '$(srcdir)/src/preproc/eqn/special.cpp'; fi`
+
+src/preproc/eqn/eqn-eqn.o: src/preproc/eqn/eqn.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eqn_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/preproc/eqn/eqn-eqn.o -MD -MP -MF src/preproc/eqn/$(DEPDIR)/eqn-eqn.Tpo -c -o src/preproc/eqn/eqn-eqn.o `test -f 'src/preproc/eqn/eqn.cpp' || echo '$(srcdir)/'`src/preproc/eqn/eqn.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/preproc/eqn/$(DEPDIR)/eqn-eqn.Tpo src/preproc/eqn/$(DEPDIR)/eqn-eqn.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/preproc/eqn/eqn.cpp' object='src/preproc/eqn/eqn-eqn.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eqn_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/preproc/eqn/eqn-eqn.o `test -f 'src/preproc/eqn/eqn.cpp' || echo '$(srcdir)/'`src/preproc/eqn/eqn.cpp
+
+src/preproc/eqn/eqn-eqn.obj: src/preproc/eqn/eqn.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eqn_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/preproc/eqn/eqn-eqn.obj -MD -MP -MF src/preproc/eqn/$(DEPDIR)/eqn-eqn.Tpo -c -o src/preproc/eqn/eqn-eqn.obj `if test -f 'src/preproc/eqn/eqn.cpp'; then $(CYGPATH_W) 'src/preproc/eqn/eqn.cpp'; else $(CYGPATH_W) '$(srcdir)/src/preproc/eqn/eqn.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/preproc/eqn/$(DEPDIR)/eqn-eqn.Tpo src/preproc/eqn/$(DEPDIR)/eqn-eqn.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/preproc/eqn/eqn.cpp' object='src/preproc/eqn/eqn-eqn.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(eqn_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/preproc/eqn/eqn-eqn.obj `if test -f 'src/preproc/eqn/eqn.cpp'; then $(CYGPATH_W) 'src/preproc/eqn/eqn.cpp'; else $(CYGPATH_W) '$(srcdir)/src/preproc/eqn/eqn.cpp'; fi`
+
+src/preproc/pic/pic-pic.o: src/preproc/pic/pic.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pic_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/preproc/pic/pic-pic.o -MD -MP -MF src/preproc/pic/$(DEPDIR)/pic-pic.Tpo -c -o src/preproc/pic/pic-pic.o `test -f 'src/preproc/pic/pic.cpp' || echo '$(srcdir)/'`src/preproc/pic/pic.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/preproc/pic/$(DEPDIR)/pic-pic.Tpo src/preproc/pic/$(DEPDIR)/pic-pic.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/preproc/pic/pic.cpp' object='src/preproc/pic/pic-pic.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pic_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/preproc/pic/pic-pic.o `test -f 'src/preproc/pic/pic.cpp' || echo '$(srcdir)/'`src/preproc/pic/pic.cpp
+
+src/preproc/pic/pic-pic.obj: src/preproc/pic/pic.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pic_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/preproc/pic/pic-pic.obj -MD -MP -MF src/preproc/pic/$(DEPDIR)/pic-pic.Tpo -c -o src/preproc/pic/pic-pic.obj `if test -f 'src/preproc/pic/pic.cpp'; then $(CYGPATH_W) 'src/preproc/pic/pic.cpp'; else $(CYGPATH_W) '$(srcdir)/src/preproc/pic/pic.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/preproc/pic/$(DEPDIR)/pic-pic.Tpo src/preproc/pic/$(DEPDIR)/pic-pic.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/preproc/pic/pic.cpp' object='src/preproc/pic/pic-pic.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pic_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/preproc/pic/pic-pic.obj `if test -f 'src/preproc/pic/pic.cpp'; then $(CYGPATH_W) 'src/preproc/pic/pic.cpp'; else $(CYGPATH_W) '$(srcdir)/src/preproc/pic/pic.cpp'; fi`
+
+src/preproc/pic/pic-lex.o: src/preproc/pic/lex.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pic_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/preproc/pic/pic-lex.o -MD -MP -MF src/preproc/pic/$(DEPDIR)/pic-lex.Tpo -c -o src/preproc/pic/pic-lex.o `test -f 'src/preproc/pic/lex.cpp' || echo '$(srcdir)/'`src/preproc/pic/lex.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/preproc/pic/$(DEPDIR)/pic-lex.Tpo src/preproc/pic/$(DEPDIR)/pic-lex.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/preproc/pic/lex.cpp' object='src/preproc/pic/pic-lex.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pic_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/preproc/pic/pic-lex.o `test -f 'src/preproc/pic/lex.cpp' || echo '$(srcdir)/'`src/preproc/pic/lex.cpp
+
+src/preproc/pic/pic-lex.obj: src/preproc/pic/lex.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pic_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/preproc/pic/pic-lex.obj -MD -MP -MF src/preproc/pic/$(DEPDIR)/pic-lex.Tpo -c -o src/preproc/pic/pic-lex.obj `if test -f 'src/preproc/pic/lex.cpp'; then $(CYGPATH_W) 'src/preproc/pic/lex.cpp'; else $(CYGPATH_W) '$(srcdir)/src/preproc/pic/lex.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/preproc/pic/$(DEPDIR)/pic-lex.Tpo src/preproc/pic/$(DEPDIR)/pic-lex.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/preproc/pic/lex.cpp' object='src/preproc/pic/pic-lex.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pic_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/preproc/pic/pic-lex.obj `if test -f 'src/preproc/pic/lex.cpp'; then $(CYGPATH_W) 'src/preproc/pic/lex.cpp'; else $(CYGPATH_W) '$(srcdir)/src/preproc/pic/lex.cpp'; fi`
+
+src/preproc/pic/pic-main.o: src/preproc/pic/main.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pic_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/preproc/pic/pic-main.o -MD -MP -MF src/preproc/pic/$(DEPDIR)/pic-main.Tpo -c -o src/preproc/pic/pic-main.o `test -f 'src/preproc/pic/main.cpp' || echo '$(srcdir)/'`src/preproc/pic/main.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/preproc/pic/$(DEPDIR)/pic-main.Tpo src/preproc/pic/$(DEPDIR)/pic-main.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/preproc/pic/main.cpp' object='src/preproc/pic/pic-main.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pic_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/preproc/pic/pic-main.o `test -f 'src/preproc/pic/main.cpp' || echo '$(srcdir)/'`src/preproc/pic/main.cpp
+
+src/preproc/pic/pic-main.obj: src/preproc/pic/main.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pic_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/preproc/pic/pic-main.obj -MD -MP -MF src/preproc/pic/$(DEPDIR)/pic-main.Tpo -c -o src/preproc/pic/pic-main.obj `if test -f 'src/preproc/pic/main.cpp'; then $(CYGPATH_W) 'src/preproc/pic/main.cpp'; else $(CYGPATH_W) '$(srcdir)/src/preproc/pic/main.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/preproc/pic/$(DEPDIR)/pic-main.Tpo src/preproc/pic/$(DEPDIR)/pic-main.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/preproc/pic/main.cpp' object='src/preproc/pic/pic-main.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pic_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/preproc/pic/pic-main.obj `if test -f 'src/preproc/pic/main.cpp'; then $(CYGPATH_W) 'src/preproc/pic/main.cpp'; else $(CYGPATH_W) '$(srcdir)/src/preproc/pic/main.cpp'; fi`
+
+src/preproc/pic/pic-object.o: src/preproc/pic/object.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pic_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/preproc/pic/pic-object.o -MD -MP -MF src/preproc/pic/$(DEPDIR)/pic-object.Tpo -c -o src/preproc/pic/pic-object.o `test -f 'src/preproc/pic/object.cpp' || echo '$(srcdir)/'`src/preproc/pic/object.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/preproc/pic/$(DEPDIR)/pic-object.Tpo src/preproc/pic/$(DEPDIR)/pic-object.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/preproc/pic/object.cpp' object='src/preproc/pic/pic-object.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pic_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/preproc/pic/pic-object.o `test -f 'src/preproc/pic/object.cpp' || echo '$(srcdir)/'`src/preproc/pic/object.cpp
+
+src/preproc/pic/pic-object.obj: src/preproc/pic/object.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pic_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/preproc/pic/pic-object.obj -MD -MP -MF src/preproc/pic/$(DEPDIR)/pic-object.Tpo -c -o src/preproc/pic/pic-object.obj `if test -f 'src/preproc/pic/object.cpp'; then $(CYGPATH_W) 'src/preproc/pic/object.cpp'; else $(CYGPATH_W) '$(srcdir)/src/preproc/pic/object.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/preproc/pic/$(DEPDIR)/pic-object.Tpo src/preproc/pic/$(DEPDIR)/pic-object.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/preproc/pic/object.cpp' object='src/preproc/pic/pic-object.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pic_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/preproc/pic/pic-object.obj `if test -f 'src/preproc/pic/object.cpp'; then $(CYGPATH_W) 'src/preproc/pic/object.cpp'; else $(CYGPATH_W) '$(srcdir)/src/preproc/pic/object.cpp'; fi`
+
+src/preproc/pic/pic-common.o: src/preproc/pic/common.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pic_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/preproc/pic/pic-common.o -MD -MP -MF src/preproc/pic/$(DEPDIR)/pic-common.Tpo -c -o src/preproc/pic/pic-common.o `test -f 'src/preproc/pic/common.cpp' || echo '$(srcdir)/'`src/preproc/pic/common.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/preproc/pic/$(DEPDIR)/pic-common.Tpo src/preproc/pic/$(DEPDIR)/pic-common.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/preproc/pic/common.cpp' object='src/preproc/pic/pic-common.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pic_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/preproc/pic/pic-common.o `test -f 'src/preproc/pic/common.cpp' || echo '$(srcdir)/'`src/preproc/pic/common.cpp
+
+src/preproc/pic/pic-common.obj: src/preproc/pic/common.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pic_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/preproc/pic/pic-common.obj -MD -MP -MF src/preproc/pic/$(DEPDIR)/pic-common.Tpo -c -o src/preproc/pic/pic-common.obj `if test -f 'src/preproc/pic/common.cpp'; then $(CYGPATH_W) 'src/preproc/pic/common.cpp'; else $(CYGPATH_W) '$(srcdir)/src/preproc/pic/common.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/preproc/pic/$(DEPDIR)/pic-common.Tpo src/preproc/pic/$(DEPDIR)/pic-common.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/preproc/pic/common.cpp' object='src/preproc/pic/pic-common.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pic_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/preproc/pic/pic-common.obj `if test -f 'src/preproc/pic/common.cpp'; then $(CYGPATH_W) 'src/preproc/pic/common.cpp'; else $(CYGPATH_W) '$(srcdir)/src/preproc/pic/common.cpp'; fi`
+
+src/preproc/pic/pic-troff.o: src/preproc/pic/troff.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pic_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/preproc/pic/pic-troff.o -MD -MP -MF src/preproc/pic/$(DEPDIR)/pic-troff.Tpo -c -o src/preproc/pic/pic-troff.o `test -f 'src/preproc/pic/troff.cpp' || echo '$(srcdir)/'`src/preproc/pic/troff.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/preproc/pic/$(DEPDIR)/pic-troff.Tpo src/preproc/pic/$(DEPDIR)/pic-troff.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/preproc/pic/troff.cpp' object='src/preproc/pic/pic-troff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pic_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/preproc/pic/pic-troff.o `test -f 'src/preproc/pic/troff.cpp' || echo '$(srcdir)/'`src/preproc/pic/troff.cpp
+
+src/preproc/pic/pic-troff.obj: src/preproc/pic/troff.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pic_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/preproc/pic/pic-troff.obj -MD -MP -MF src/preproc/pic/$(DEPDIR)/pic-troff.Tpo -c -o src/preproc/pic/pic-troff.obj `if test -f 'src/preproc/pic/troff.cpp'; then $(CYGPATH_W) 'src/preproc/pic/troff.cpp'; else $(CYGPATH_W) '$(srcdir)/src/preproc/pic/troff.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/preproc/pic/$(DEPDIR)/pic-troff.Tpo src/preproc/pic/$(DEPDIR)/pic-troff.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/preproc/pic/troff.cpp' object='src/preproc/pic/pic-troff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pic_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/preproc/pic/pic-troff.obj `if test -f 'src/preproc/pic/troff.cpp'; then $(CYGPATH_W) 'src/preproc/pic/troff.cpp'; else $(CYGPATH_W) '$(srcdir)/src/preproc/pic/troff.cpp'; fi`
+
+src/preproc/pic/pic-tex.o: src/preproc/pic/tex.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pic_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/preproc/pic/pic-tex.o -MD -MP -MF src/preproc/pic/$(DEPDIR)/pic-tex.Tpo -c -o src/preproc/pic/pic-tex.o `test -f 'src/preproc/pic/tex.cpp' || echo '$(srcdir)/'`src/preproc/pic/tex.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/preproc/pic/$(DEPDIR)/pic-tex.Tpo src/preproc/pic/$(DEPDIR)/pic-tex.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/preproc/pic/tex.cpp' object='src/preproc/pic/pic-tex.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pic_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/preproc/pic/pic-tex.o `test -f 'src/preproc/pic/tex.cpp' || echo '$(srcdir)/'`src/preproc/pic/tex.cpp
+
+src/preproc/pic/pic-tex.obj: src/preproc/pic/tex.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pic_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/preproc/pic/pic-tex.obj -MD -MP -MF src/preproc/pic/$(DEPDIR)/pic-tex.Tpo -c -o src/preproc/pic/pic-tex.obj `if test -f 'src/preproc/pic/tex.cpp'; then $(CYGPATH_W) 'src/preproc/pic/tex.cpp'; else $(CYGPATH_W) '$(srcdir)/src/preproc/pic/tex.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/preproc/pic/$(DEPDIR)/pic-tex.Tpo src/preproc/pic/$(DEPDIR)/pic-tex.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/preproc/pic/tex.cpp' object='src/preproc/pic/pic-tex.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pic_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/preproc/pic/pic-tex.obj `if test -f 'src/preproc/pic/tex.cpp'; then $(CYGPATH_W) 'src/preproc/pic/tex.cpp'; else $(CYGPATH_W) '$(srcdir)/src/preproc/pic/tex.cpp'; fi`
+
+src/preproc/preconv/preconv-preconv.o: src/preproc/preconv/preconv.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(preconv_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/preproc/preconv/preconv-preconv.o -MD -MP -MF src/preproc/preconv/$(DEPDIR)/preconv-preconv.Tpo -c -o src/preproc/preconv/preconv-preconv.o `test -f 'src/preproc/preconv/preconv.cpp' || echo '$(srcdir)/'`src/preproc/preconv/preconv.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/preproc/preconv/$(DEPDIR)/preconv-preconv.Tpo src/preproc/preconv/$(DEPDIR)/preconv-preconv.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/preproc/preconv/preconv.cpp' object='src/preproc/preconv/preconv-preconv.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(preconv_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/preproc/preconv/preconv-preconv.o `test -f 'src/preproc/preconv/preconv.cpp' || echo '$(srcdir)/'`src/preproc/preconv/preconv.cpp
+
+src/preproc/preconv/preconv-preconv.obj: src/preproc/preconv/preconv.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(preconv_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/preproc/preconv/preconv-preconv.obj -MD -MP -MF src/preproc/preconv/$(DEPDIR)/preconv-preconv.Tpo -c -o src/preproc/preconv/preconv-preconv.obj `if test -f 'src/preproc/preconv/preconv.cpp'; then $(CYGPATH_W) 'src/preproc/preconv/preconv.cpp'; else $(CYGPATH_W) '$(srcdir)/src/preproc/preconv/preconv.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/preproc/preconv/$(DEPDIR)/preconv-preconv.Tpo src/preproc/preconv/$(DEPDIR)/preconv-preconv.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/preproc/preconv/preconv.cpp' object='src/preproc/preconv/preconv-preconv.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(preconv_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/preproc/preconv/preconv-preconv.obj `if test -f 'src/preproc/preconv/preconv.cpp'; then $(CYGPATH_W) 'src/preproc/preconv/preconv.cpp'; else $(CYGPATH_W) '$(srcdir)/src/preproc/preconv/preconv.cpp'; fi`
+
+src/preproc/refer/refer-command.o: src/preproc/refer/command.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(refer_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/preproc/refer/refer-command.o -MD -MP -MF src/preproc/refer/$(DEPDIR)/refer-command.Tpo -c -o src/preproc/refer/refer-command.o `test -f 'src/preproc/refer/command.cpp' || echo '$(srcdir)/'`src/preproc/refer/command.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/preproc/refer/$(DEPDIR)/refer-command.Tpo src/preproc/refer/$(DEPDIR)/refer-command.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/preproc/refer/command.cpp' object='src/preproc/refer/refer-command.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(refer_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/preproc/refer/refer-command.o `test -f 'src/preproc/refer/command.cpp' || echo '$(srcdir)/'`src/preproc/refer/command.cpp
+
+src/preproc/refer/refer-command.obj: src/preproc/refer/command.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(refer_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/preproc/refer/refer-command.obj -MD -MP -MF src/preproc/refer/$(DEPDIR)/refer-command.Tpo -c -o src/preproc/refer/refer-command.obj `if test -f 'src/preproc/refer/command.cpp'; then $(CYGPATH_W) 'src/preproc/refer/command.cpp'; else $(CYGPATH_W) '$(srcdir)/src/preproc/refer/command.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/preproc/refer/$(DEPDIR)/refer-command.Tpo src/preproc/refer/$(DEPDIR)/refer-command.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/preproc/refer/command.cpp' object='src/preproc/refer/refer-command.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(refer_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/preproc/refer/refer-command.obj `if test -f 'src/preproc/refer/command.cpp'; then $(CYGPATH_W) 'src/preproc/refer/command.cpp'; else $(CYGPATH_W) '$(srcdir)/src/preproc/refer/command.cpp'; fi`
+
+src/preproc/refer/refer-ref.o: src/preproc/refer/ref.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(refer_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/preproc/refer/refer-ref.o -MD -MP -MF src/preproc/refer/$(DEPDIR)/refer-ref.Tpo -c -o src/preproc/refer/refer-ref.o `test -f 'src/preproc/refer/ref.cpp' || echo '$(srcdir)/'`src/preproc/refer/ref.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/preproc/refer/$(DEPDIR)/refer-ref.Tpo src/preproc/refer/$(DEPDIR)/refer-ref.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/preproc/refer/ref.cpp' object='src/preproc/refer/refer-ref.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(refer_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/preproc/refer/refer-ref.o `test -f 'src/preproc/refer/ref.cpp' || echo '$(srcdir)/'`src/preproc/refer/ref.cpp
+
+src/preproc/refer/refer-ref.obj: src/preproc/refer/ref.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(refer_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/preproc/refer/refer-ref.obj -MD -MP -MF src/preproc/refer/$(DEPDIR)/refer-ref.Tpo -c -o src/preproc/refer/refer-ref.obj `if test -f 'src/preproc/refer/ref.cpp'; then $(CYGPATH_W) 'src/preproc/refer/ref.cpp'; else $(CYGPATH_W) '$(srcdir)/src/preproc/refer/ref.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/preproc/refer/$(DEPDIR)/refer-ref.Tpo src/preproc/refer/$(DEPDIR)/refer-ref.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/preproc/refer/ref.cpp' object='src/preproc/refer/refer-ref.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(refer_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/preproc/refer/refer-ref.obj `if test -f 'src/preproc/refer/ref.cpp'; then $(CYGPATH_W) 'src/preproc/refer/ref.cpp'; else $(CYGPATH_W) '$(srcdir)/src/preproc/refer/ref.cpp'; fi`
+
+src/preproc/refer/refer-refer.o: src/preproc/refer/refer.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(refer_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/preproc/refer/refer-refer.o -MD -MP -MF src/preproc/refer/$(DEPDIR)/refer-refer.Tpo -c -o src/preproc/refer/refer-refer.o `test -f 'src/preproc/refer/refer.cpp' || echo '$(srcdir)/'`src/preproc/refer/refer.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/preproc/refer/$(DEPDIR)/refer-refer.Tpo src/preproc/refer/$(DEPDIR)/refer-refer.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/preproc/refer/refer.cpp' object='src/preproc/refer/refer-refer.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(refer_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/preproc/refer/refer-refer.o `test -f 'src/preproc/refer/refer.cpp' || echo '$(srcdir)/'`src/preproc/refer/refer.cpp
+
+src/preproc/refer/refer-refer.obj: src/preproc/refer/refer.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(refer_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/preproc/refer/refer-refer.obj -MD -MP -MF src/preproc/refer/$(DEPDIR)/refer-refer.Tpo -c -o src/preproc/refer/refer-refer.obj `if test -f 'src/preproc/refer/refer.cpp'; then $(CYGPATH_W) 'src/preproc/refer/refer.cpp'; else $(CYGPATH_W) '$(srcdir)/src/preproc/refer/refer.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/preproc/refer/$(DEPDIR)/refer-refer.Tpo src/preproc/refer/$(DEPDIR)/refer-refer.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/preproc/refer/refer.cpp' object='src/preproc/refer/refer-refer.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(refer_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/preproc/refer/refer-refer.obj `if test -f 'src/preproc/refer/refer.cpp'; then $(CYGPATH_W) 'src/preproc/refer/refer.cpp'; else $(CYGPATH_W) '$(srcdir)/src/preproc/refer/refer.cpp'; fi`
+
+src/preproc/refer/refer-token.o: src/preproc/refer/token.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(refer_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/preproc/refer/refer-token.o -MD -MP -MF src/preproc/refer/$(DEPDIR)/refer-token.Tpo -c -o src/preproc/refer/refer-token.o `test -f 'src/preproc/refer/token.cpp' || echo '$(srcdir)/'`src/preproc/refer/token.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/preproc/refer/$(DEPDIR)/refer-token.Tpo src/preproc/refer/$(DEPDIR)/refer-token.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/preproc/refer/token.cpp' object='src/preproc/refer/refer-token.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(refer_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/preproc/refer/refer-token.o `test -f 'src/preproc/refer/token.cpp' || echo '$(srcdir)/'`src/preproc/refer/token.cpp
+
+src/preproc/refer/refer-token.obj: src/preproc/refer/token.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(refer_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/preproc/refer/refer-token.obj -MD -MP -MF src/preproc/refer/$(DEPDIR)/refer-token.Tpo -c -o src/preproc/refer/refer-token.obj `if test -f 'src/preproc/refer/token.cpp'; then $(CYGPATH_W) 'src/preproc/refer/token.cpp'; else $(CYGPATH_W) '$(srcdir)/src/preproc/refer/token.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/preproc/refer/$(DEPDIR)/refer-token.Tpo src/preproc/refer/$(DEPDIR)/refer-token.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/preproc/refer/token.cpp' object='src/preproc/refer/refer-token.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(refer_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/preproc/refer/refer-token.obj `if test -f 'src/preproc/refer/token.cpp'; then $(CYGPATH_W) 'src/preproc/refer/token.cpp'; else $(CYGPATH_W) '$(srcdir)/src/preproc/refer/token.cpp'; fi`
+
+src/preproc/refer/refer-label.o: src/preproc/refer/label.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(refer_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/preproc/refer/refer-label.o -MD -MP -MF src/preproc/refer/$(DEPDIR)/refer-label.Tpo -c -o src/preproc/refer/refer-label.o `test -f 'src/preproc/refer/label.cpp' || echo '$(srcdir)/'`src/preproc/refer/label.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/preproc/refer/$(DEPDIR)/refer-label.Tpo src/preproc/refer/$(DEPDIR)/refer-label.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/preproc/refer/label.cpp' object='src/preproc/refer/refer-label.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(refer_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/preproc/refer/refer-label.o `test -f 'src/preproc/refer/label.cpp' || echo '$(srcdir)/'`src/preproc/refer/label.cpp
+
+src/preproc/refer/refer-label.obj: src/preproc/refer/label.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(refer_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/preproc/refer/refer-label.obj -MD -MP -MF src/preproc/refer/$(DEPDIR)/refer-label.Tpo -c -o src/preproc/refer/refer-label.obj `if test -f 'src/preproc/refer/label.cpp'; then $(CYGPATH_W) 'src/preproc/refer/label.cpp'; else $(CYGPATH_W) '$(srcdir)/src/preproc/refer/label.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/preproc/refer/$(DEPDIR)/refer-label.Tpo src/preproc/refer/$(DEPDIR)/refer-label.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/preproc/refer/label.cpp' object='src/preproc/refer/refer-label.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(refer_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/preproc/refer/refer-label.obj `if test -f 'src/preproc/refer/label.cpp'; then $(CYGPATH_W) 'src/preproc/refer/label.cpp'; else $(CYGPATH_W) '$(srcdir)/src/preproc/refer/label.cpp'; fi`
+
+.ypp.cpp:
+       $(AM_V_YACC)$(am__skipyacc) $(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h `echo $@ | $(am__yacc_c2h)` y.output $*.output -- $(YACCCOMPILE)
+install-man1: $(man1_MANS)
+       @$(NORMAL_INSTALL)
+       @list1='$(man1_MANS)'; \
+       list2=''; \
+       test -n "$(man1dir)" \
+         && test -n "`echo $$list1$$list2`" \
+         || exit 0; \
+       echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \
+       $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \
+       { for i in $$list1; do echo "$$i"; done;  \
+       if test -n "$$list2"; then \
+         for i in $$list2; do echo "$$i"; done \
+           | sed -n '/\.1[a-z]*$$/p'; \
+       fi; \
+       } | while read p; do \
+         if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; echo "$$p"; \
+       done | \
+       sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
+             -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
+       sed 'N;N;s,\n, ,g' | { \
+       list=; while read file base inst; do \
+         if test "$$base" = "$$inst"; then list="$$list $$file"; else \
+           echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
+           $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \
+         fi; \
+       done; \
+       for i in $$list; do echo "$$i"; done | $(am__base_list) | \
+       while read files; do \
+         test -z "$$files" || { \
+           echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \
+           $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \
+       done; }
+
+uninstall-man1:
+       @$(NORMAL_UNINSTALL)
+       @list='$(man1_MANS)'; test -n "$(man1dir)" || exit 0; \
+       files=`{ for i in $$list; do echo "$$i"; done; \
+       } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
+             -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
+       dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir)
+install-man5: $(man5_MANS)
+       @$(NORMAL_INSTALL)
+       @list1='$(man5_MANS)'; \
+       list2=''; \
+       test -n "$(man5dir)" \
+         && test -n "`echo $$list1$$list2`" \
+         || exit 0; \
+       echo " $(MKDIR_P) '$(DESTDIR)$(man5dir)'"; \
+       $(MKDIR_P) "$(DESTDIR)$(man5dir)" || exit 1; \
+       { for i in $$list1; do echo "$$i"; done;  \
+       if test -n "$$list2"; then \
+         for i in $$list2; do echo "$$i"; done \
+           | sed -n '/\.5[a-z]*$$/p'; \
+       fi; \
+       } | while read p; do \
+         if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; echo "$$p"; \
+       done | \
+       sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^5][0-9a-z]*$$,5,;x' \
+             -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
+       sed 'N;N;s,\n, ,g' | { \
+       list=; while read file base inst; do \
+         if test "$$base" = "$$inst"; then list="$$list $$file"; else \
+           echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man5dir)/$$inst'"; \
+           $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man5dir)/$$inst" || exit $$?; \
+         fi; \
+       done; \
+       for i in $$list; do echo "$$i"; done | $(am__base_list) | \
+       while read files; do \
+         test -z "$$files" || { \
+           echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man5dir)'"; \
+           $(INSTALL_DATA) $$files "$(DESTDIR)$(man5dir)" || exit $$?; }; \
+       done; }
+
+uninstall-man5:
+       @$(NORMAL_UNINSTALL)
+       @list='$(man5_MANS)'; test -n "$(man5dir)" || exit 0; \
+       files=`{ for i in $$list; do echo "$$i"; done; \
+       } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^5][0-9a-z]*$$,5,;x' \
+             -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
+       dir='$(DESTDIR)$(man5dir)'; $(am__uninstall_files_from_dir)
+install-man7: $(man7_MANS)
+       @$(NORMAL_INSTALL)
+       @list1='$(man7_MANS)'; \
+       list2=''; \
+       test -n "$(man7dir)" \
+         && test -n "`echo $$list1$$list2`" \
+         || exit 0; \
+       echo " $(MKDIR_P) '$(DESTDIR)$(man7dir)'"; \
+       $(MKDIR_P) "$(DESTDIR)$(man7dir)" || exit 1; \
+       { for i in $$list1; do echo "$$i"; done;  \
+       if test -n "$$list2"; then \
+         for i in $$list2; do echo "$$i"; done \
+           | sed -n '/\.7[a-z]*$$/p'; \
+       fi; \
+       } | while read p; do \
+         if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; echo "$$p"; \
+       done | \
+       sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^7][0-9a-z]*$$,7,;x' \
+             -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
+       sed 'N;N;s,\n, ,g' | { \
+       list=; while read file base inst; do \
+         if test "$$base" = "$$inst"; then list="$$list $$file"; else \
+           echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man7dir)/$$inst'"; \
+           $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man7dir)/$$inst" || exit $$?; \
+         fi; \
+       done; \
+       for i in $$list; do echo "$$i"; done | $(am__base_list) | \
+       while read files; do \
+         test -z "$$files" || { \
+           echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man7dir)'"; \
+           $(INSTALL_DATA) $$files "$(DESTDIR)$(man7dir)" || exit $$?; }; \
+       done; }
+
+uninstall-man7:
+       @$(NORMAL_UNINSTALL)
+       @list='$(man7_MANS)'; test -n "$(man7dir)" || exit 0; \
+       files=`{ for i in $$list; do echo "$$i"; done; \
+       } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^7][0-9a-z]*$$,7,;x' \
+             -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
+       dir='$(DESTDIR)$(man7dir)'; $(am__uninstall_files_from_dir)
+install-devX10012fontDATA: $(devX10012font_DATA)
+       @$(NORMAL_INSTALL)
+       @list='$(devX10012font_DATA)'; test -n "$(devX10012fontdir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(devX10012fontdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(devX10012fontdir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(devX10012fontdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(devX10012fontdir)" || exit $$?; \
+       done
+
+uninstall-devX10012fontDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(devX10012font_DATA)'; test -n "$(devX10012fontdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(devX10012fontdir)'; $(am__uninstall_files_from_dir)
+install-devX100fontDATA: $(devX100font_DATA)
+       @$(NORMAL_INSTALL)
+       @list='$(devX100font_DATA)'; test -n "$(devX100fontdir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(devX100fontdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(devX100fontdir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(devX100fontdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(devX100fontdir)" || exit $$?; \
+       done
+
+uninstall-devX100fontDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(devX100font_DATA)'; test -n "$(devX100fontdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(devX100fontdir)'; $(am__uninstall_files_from_dir)
+install-devX7512fontDATA: $(devX7512font_DATA)
+       @$(NORMAL_INSTALL)
+       @list='$(devX7512font_DATA)'; test -n "$(devX7512fontdir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(devX7512fontdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(devX7512fontdir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(devX7512fontdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(devX7512fontdir)" || exit $$?; \
+       done
+
+uninstall-devX7512fontDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(devX7512font_DATA)'; test -n "$(devX7512fontdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(devX7512fontdir)'; $(am__uninstall_files_from_dir)
+install-devX75fontDATA: $(devX75font_DATA)
+       @$(NORMAL_INSTALL)
+       @list='$(devX75font_DATA)'; test -n "$(devX75fontdir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(devX75fontdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(devX75fontdir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(devX75fontdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(devX75fontdir)" || exit $$?; \
+       done
+
+uninstall-devX75fontDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(devX75font_DATA)'; test -n "$(devX75fontdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(devX75fontdir)'; $(am__uninstall_files_from_dir)
+install-devasciifontDATA: $(devasciifont_DATA)
+       @$(NORMAL_INSTALL)
+       @list='$(devasciifont_DATA)'; test -n "$(devasciifontdir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(devasciifontdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(devasciifontdir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(devasciifontdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(devasciifontdir)" || exit $$?; \
+       done
+
+uninstall-devasciifontDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(devasciifont_DATA)'; test -n "$(devasciifontdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(devasciifontdir)'; $(am__uninstall_files_from_dir)
+install-devcp1047fontDATA: $(devcp1047font_DATA)
+       @$(NORMAL_INSTALL)
+       @list='$(devcp1047font_DATA)'; test -n "$(devcp1047fontdir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(devcp1047fontdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(devcp1047fontdir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(devcp1047fontdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(devcp1047fontdir)" || exit $$?; \
+       done
+
+uninstall-devcp1047fontDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(devcp1047font_DATA)'; test -n "$(devcp1047fontdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(devcp1047fontdir)'; $(am__uninstall_files_from_dir)
+install-devdvifontDATA: $(devdvifont_DATA)
+       @$(NORMAL_INSTALL)
+       @list='$(devdvifont_DATA)'; test -n "$(devdvifontdir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(devdvifontdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(devdvifontdir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(devdvifontdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(devdvifontdir)" || exit $$?; \
+       done
+
+uninstall-devdvifontDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(devdvifont_DATA)'; test -n "$(devdvifontdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(devdvifontdir)'; $(am__uninstall_files_from_dir)
+install-devdvigenDATA: $(devdvigen_DATA)
+       @$(NORMAL_INSTALL)
+       @list='$(devdvigen_DATA)'; test -n "$(devdvigendir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(devdvigendir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(devdvigendir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(devdvigendir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(devdvigendir)" || exit $$?; \
+       done
+
+uninstall-devdvigenDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(devdvigen_DATA)'; test -n "$(devdvigendir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(devdvigendir)'; $(am__uninstall_files_from_dir)
+install-devhtmlfontDATA: $(devhtmlfont_DATA)
+       @$(NORMAL_INSTALL)
+       @list='$(devhtmlfont_DATA)'; test -n "$(devhtmlfontdir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(devhtmlfontdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(devhtmlfontdir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(devhtmlfontdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(devhtmlfontdir)" || exit $$?; \
+       done
+
+uninstall-devhtmlfontDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(devhtmlfont_DATA)'; test -n "$(devhtmlfontdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(devhtmlfontdir)'; $(am__uninstall_files_from_dir)
+install-devlatin1fontDATA: $(devlatin1font_DATA)
+       @$(NORMAL_INSTALL)
+       @list='$(devlatin1font_DATA)'; test -n "$(devlatin1fontdir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(devlatin1fontdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(devlatin1fontdir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(devlatin1fontdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(devlatin1fontdir)" || exit $$?; \
+       done
+
+uninstall-devlatin1fontDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(devlatin1font_DATA)'; test -n "$(devlatin1fontdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(devlatin1fontdir)'; $(am__uninstall_files_from_dir)
+install-devlbpfontDATA: $(devlbpfont_DATA)
+       @$(NORMAL_INSTALL)
+       @list='$(devlbpfont_DATA)'; test -n "$(devlbpfontdir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(devlbpfontdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(devlbpfontdir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(devlbpfontdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(devlbpfontdir)" || exit $$?; \
+       done
+
+uninstall-devlbpfontDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(devlbpfont_DATA)'; test -n "$(devlbpfontdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(devlbpfontdir)'; $(am__uninstall_files_from_dir)
+install-devpdffontDATA: $(devpdffont_DATA)
+       @$(NORMAL_INSTALL)
+       @list='$(devpdffont_DATA)'; test -n "$(devpdffontdir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(devpdffontdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(devpdffontdir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(devpdffontdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(devpdffontdir)" || exit $$?; \
+       done
+
+uninstall-devpdffontDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(devpdffont_DATA)'; test -n "$(devpdffontdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(devpdffontdir)'; $(am__uninstall_files_from_dir)
+install-devpdffontencDATA: $(devpdffontenc_DATA)
+       @$(NORMAL_INSTALL)
+       @list='$(devpdffontenc_DATA)'; test -n "$(devpdffontencdir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(devpdffontencdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(devpdffontencdir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(devpdffontencdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(devpdffontencdir)" || exit $$?; \
+       done
+
+uninstall-devpdffontencDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(devpdffontenc_DATA)'; test -n "$(devpdffontencdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(devpdffontencdir)'; $(am__uninstall_files_from_dir)
+install-devpdffontmapDATA: $(devpdffontmap_DATA)
+       @$(NORMAL_INSTALL)
+       @list='$(devpdffontmap_DATA)'; test -n "$(devpdffontmapdir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(devpdffontmapdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(devpdffontmapdir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(devpdffontmapdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(devpdffontmapdir)" || exit $$?; \
+       done
+
+uninstall-devpdffontmapDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(devpdffontmap_DATA)'; test -n "$(devpdffontmapdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(devpdffontmapdir)'; $(am__uninstall_files_from_dir)
+install-devutf8fontDATA: $(devutf8font_DATA)
+       @$(NORMAL_INSTALL)
+       @list='$(devutf8font_DATA)'; test -n "$(devutf8fontdir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(devutf8fontdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(devutf8fontdir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(devutf8fontdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(devutf8fontdir)" || exit $$?; \
+       done
+
+uninstall-devutf8fontDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(devutf8font_DATA)'; test -n "$(devutf8fontdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(devutf8fontdir)'; $(am__uninstall_files_from_dir)
+install-dist_chemexampleDATA: $(dist_chemexample_DATA)
+       @$(NORMAL_INSTALL)
+       @list='$(dist_chemexample_DATA)'; test -n "$(chemexampledir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(chemexampledir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(chemexampledir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(chemexampledir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(chemexampledir)" || exit $$?; \
+       done
+
+uninstall-dist_chemexampleDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(dist_chemexample_DATA)'; test -n "$(chemexampledir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(chemexampledir)'; $(am__uninstall_files_from_dir)
+install-dist_chempicDATA: $(dist_chempic_DATA)
+       @$(NORMAL_INSTALL)
+       @list='$(dist_chempic_DATA)'; test -n "$(chempicdir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(chempicdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(chempicdir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(chempicdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(chempicdir)" || exit $$?; \
+       done
+
+uninstall-dist_chempicDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(dist_chempic_DATA)'; test -n "$(chempicdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(chempicdir)'; $(am__uninstall_files_from_dir)
+install-dist_devlj4fontDATA: $(dist_devlj4font_DATA)
+       @$(NORMAL_INSTALL)
+       @list='$(dist_devlj4font_DATA)'; test -n "$(devlj4fontdir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(devlj4fontdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(devlj4fontdir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(devlj4fontdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(devlj4fontdir)" || exit $$?; \
+       done
+
+uninstall-dist_devlj4fontDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(dist_devlj4font_DATA)'; test -n "$(devlj4fontdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(devlj4fontdir)'; $(am__uninstall_files_from_dir)
+install-dist_devlj4fontgenDATA: $(dist_devlj4fontgen_DATA)
+       @$(NORMAL_INSTALL)
+       @list='$(dist_devlj4fontgen_DATA)'; test -n "$(devlj4fontgendir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(devlj4fontgendir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(devlj4fontgendir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(devlj4fontgendir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(devlj4fontgendir)" || exit $$?; \
+       done
+
+uninstall-dist_devlj4fontgenDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(dist_devlj4fontgen_DATA)'; test -n "$(devlj4fontgendir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(devlj4fontgendir)'; $(am__uninstall_files_from_dir)
+install-dist_devpsfontDATA: $(dist_devpsfont_DATA)
+       @$(NORMAL_INSTALL)
+       @list='$(dist_devpsfont_DATA)'; test -n "$(devpsfontdir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(devpsfontdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(devpsfontdir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(devpsfontdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(devpsfontdir)" || exit $$?; \
+       done
+
+uninstall-dist_devpsfontDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(dist_devpsfont_DATA)'; test -n "$(devpsfontdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(devpsfontdir)'; $(am__uninstall_files_from_dir)
+install-dist_devpsgenDATA: $(dist_devpsgen_DATA)
+       @$(NORMAL_INSTALL)
+       @list='$(dist_devpsgen_DATA)'; test -n "$(devpsgendir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(devpsgendir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(devpsgendir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(devpsgendir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(devpsgendir)" || exit $$?; \
+       done
+
+uninstall-dist_devpsgenDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(dist_devpsgen_DATA)'; test -n "$(devpsgendir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(devpsgendir)'; $(am__uninstall_files_from_dir)
+install-dist_docexamplesDATA: $(dist_docexamples_DATA)
+       @$(NORMAL_INSTALL)
+       @list='$(dist_docexamples_DATA)'; test -n "$(docexamplesdir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(docexamplesdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(docexamplesdir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(docexamplesdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(docexamplesdir)" || exit $$?; \
+       done
+
+uninstall-dist_docexamplesDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(dist_docexamples_DATA)'; test -n "$(docexamplesdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(docexamplesdir)'; $(am__uninstall_files_from_dir)
+install-dist_glilypondDATA: $(dist_glilypond_DATA)
+       @$(NORMAL_INSTALL)
+       @list='$(dist_glilypond_DATA)'; test -n "$(glilyponddir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(glilyponddir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(glilyponddir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(glilyponddir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(glilyponddir)" || exit $$?; \
+       done
+
+uninstall-dist_glilypondDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(dist_glilypond_DATA)'; test -n "$(glilyponddir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(glilyponddir)'; $(am__uninstall_files_from_dir)
+install-dist_gpinyinDATA: $(dist_gpinyin_DATA)
+       @$(NORMAL_INSTALL)
+       @list='$(dist_gpinyin_DATA)'; test -n "$(gpinyindir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(gpinyindir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(gpinyindir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(gpinyindir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(gpinyindir)" || exit $$?; \
+       done
+
+uninstall-dist_gpinyinDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(dist_gpinyin_DATA)'; test -n "$(gpinyindir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(gpinyindir)'; $(am__uninstall_files_from_dir)
+install-dist_grogDATA: $(dist_grog_DATA)
+       @$(NORMAL_INSTALL)
+       @list='$(dist_grog_DATA)'; test -n "$(grogdir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(grogdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(grogdir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(grogdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(grogdir)" || exit $$?; \
+       done
+
+uninstall-dist_grogDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(dist_grog_DATA)'; test -n "$(grogdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(grogdir)'; $(am__uninstall_files_from_dir)
+install-dist_hdtblexampleDATA: $(dist_hdtblexample_DATA)
+       @$(NORMAL_INSTALL)
+       @list='$(dist_hdtblexample_DATA)'; test -n "$(hdtblexampledir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(hdtblexampledir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(hdtblexampledir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(hdtblexampledir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(hdtblexampledir)" || exit $$?; \
+       done
+
+uninstall-dist_hdtblexampleDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(dist_hdtblexample_DATA)'; test -n "$(hdtblexampledir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(hdtblexampledir)'; $(am__uninstall_files_from_dir)
+install-dist_localtmacDATA: $(dist_localtmac_DATA)
+       @$(NORMAL_INSTALL)
+       @list='$(dist_localtmac_DATA)'; test -n "$(localtmacdir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(localtmacdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(localtmacdir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(localtmacdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(localtmacdir)" || exit $$?; \
+       done
+
+uninstall-dist_localtmacDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(dist_localtmac_DATA)'; test -n "$(localtmacdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(localtmacdir)'; $(am__uninstall_files_from_dir)
+install-dist_mmDATA: $(dist_mm_DATA)
+       @$(NORMAL_INSTALL)
+       @list='$(dist_mm_DATA)'; test -n "$(mmdir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(mmdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(mmdir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(mmdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(mmdir)" || exit $$?; \
+       done
+
+uninstall-dist_mmDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(dist_mm_DATA)'; test -n "$(mmdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(mmdir)'; $(am__uninstall_files_from_dir)
+install-dist_mmexampleDATA: $(dist_mmexample_DATA)
+       @$(NORMAL_INSTALL)
+       @list='$(dist_mmexample_DATA)'; test -n "$(mmexampledir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(mmexampledir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(mmexampledir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(mmexampledir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(mmexampledir)" || exit $$?; \
+       done
+
+uninstall-dist_mmexampleDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(dist_mmexample_DATA)'; test -n "$(mmexampledir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(mmexampledir)'; $(am__uninstall_files_from_dir)
+install-dist_momexampleDATA: $(dist_momexample_DATA)
+       @$(NORMAL_INSTALL)
+       @list='$(dist_momexample_DATA)'; test -n "$(momexampledir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(momexampledir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(momexampledir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(momexampledir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(momexampledir)" || exit $$?; \
+       done
+
+uninstall-dist_momexampleDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(dist_momexample_DATA)'; test -n "$(momexampledir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(momexampledir)'; $(am__uninstall_files_from_dir)
+install-dist_momtmacDATA: $(dist_momtmac_DATA)
+       @$(NORMAL_INSTALL)
+       @list='$(dist_momtmac_DATA)'; test -n "$(momtmacdir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(momtmacdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(momtmacdir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(momtmacdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(momtmacdir)" || exit $$?; \
+       done
+
+uninstall-dist_momtmacDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(dist_momtmac_DATA)'; test -n "$(momtmacdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(momtmacdir)'; $(am__uninstall_files_from_dir)
+install-dist_olddevpsfontDATA: $(dist_olddevpsfont_DATA)
+       @$(NORMAL_INSTALL)
+       @list='$(dist_olddevpsfont_DATA)'; test -n "$(olddevpsfontdir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(olddevpsfontdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(olddevpsfontdir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(olddevpsfontdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(olddevpsfontdir)" || exit $$?; \
+       done
+
+uninstall-dist_olddevpsfontDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(dist_olddevpsfont_DATA)'; test -n "$(olddevpsfontdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(olddevpsfontdir)'; $(am__uninstall_files_from_dir)
+install-dist_otherdocDATA: $(dist_otherdoc_DATA)
+       @$(NORMAL_INSTALL)
+       @list='$(dist_otherdoc_DATA)'; test -n "$(otherdocdir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(otherdocdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(otherdocdir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(otherdocdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(otherdocdir)" || exit $$?; \
+       done
+
+uninstall-dist_otherdocDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(dist_otherdoc_DATA)'; test -n "$(otherdocdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(otherdocdir)'; $(am__uninstall_files_from_dir)
+install-dist_pdfmarktmacDATA: $(dist_pdfmarktmac_DATA)
+       @$(NORMAL_INSTALL)
+       @list='$(dist_pdfmarktmac_DATA)'; test -n "$(pdfmarktmacdir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(pdfmarktmacdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(pdfmarktmacdir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pdfmarktmacdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(pdfmarktmacdir)" || exit $$?; \
+       done
+
+uninstall-dist_pdfmarktmacDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(dist_pdfmarktmac_DATA)'; test -n "$(pdfmarktmacdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(pdfmarktmacdir)'; $(am__uninstall_files_from_dir)
+install-dist_tmacDATA: $(dist_tmac_DATA)
+       @$(NORMAL_INSTALL)
+       @list='$(dist_tmac_DATA)'; test -n "$(tmacdir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(tmacdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(tmacdir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(tmacdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(tmacdir)" || exit $$?; \
+       done
+
+uninstall-dist_tmacDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(dist_tmac_DATA)'; test -n "$(tmacdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(tmacdir)'; $(am__uninstall_files_from_dir)
+install-dist_tmacmmDATA: $(dist_tmacmm_DATA)
+       @$(NORMAL_INSTALL)
+       @list='$(dist_tmacmm_DATA)'; test -n "$(tmacmmdir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(tmacmmdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(tmacmmdir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(tmacmmdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(tmacmmdir)" || exit $$?; \
+       done
+
+uninstall-dist_tmacmmDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(dist_tmacmm_DATA)'; test -n "$(tmacmmdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(tmacmmdir)'; $(am__uninstall_files_from_dir)
+install-grofferDATA: $(groffer_DATA)
+       @$(NORMAL_INSTALL)
+       @list='$(groffer_DATA)'; test -n "$(grofferdir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(grofferdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(grofferdir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(grofferdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(grofferdir)" || exit $$?; \
+       done
+
+uninstall-grofferDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(groffer_DATA)'; test -n "$(grofferdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(grofferdir)'; $(am__uninstall_files_from_dir)
+install-groffoptsDATA: $(groffopts_DATA)
+       @$(NORMAL_INSTALL)
+       @list='$(groffopts_DATA)'; test -n "$(groffoptsdir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(groffoptsdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(groffoptsdir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(groffoptsdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(groffoptsdir)" || exit $$?; \
+       done
+
+uninstall-groffoptsDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(groffopts_DATA)'; test -n "$(groffoptsdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(groffoptsdir)'; $(am__uninstall_files_from_dir)
+install-hdtbltmacDATA: $(hdtbltmac_DATA)
+       @$(NORMAL_INSTALL)
+       @list='$(hdtbltmac_DATA)'; test -n "$(hdtbltmacdir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(hdtbltmacdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(hdtbltmacdir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(hdtbltmacdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(hdtbltmacdir)" || exit $$?; \
+       done
+
+uninstall-hdtbltmacDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(hdtbltmac_DATA)'; test -n "$(hdtbltmacdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(hdtbltmacdir)'; $(am__uninstall_files_from_dir)
+install-htmlpicDATA: $(htmlpic_DATA)
+       @$(NORMAL_INSTALL)
+       @list='$(htmlpic_DATA)'; test -n "$(htmlpicdir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(htmlpicdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(htmlpicdir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(htmlpicdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(htmlpicdir)" || exit $$?; \
+       done
+
+uninstall-htmlpicDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(htmlpic_DATA)'; test -n "$(htmlpicdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(htmlpicdir)'; $(am__uninstall_files_from_dir)
+install-momhtmlDATA: $(momhtml_DATA)
+       @$(NORMAL_INSTALL)
+       @list='$(momhtml_DATA)'; test -n "$(momhtmldir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(momhtmldir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(momhtmldir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(momhtmldir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(momhtmldir)" || exit $$?; \
+       done
+
+uninstall-momhtmlDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(momhtml_DATA)'; test -n "$(momhtmldir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(momhtmldir)'; $(am__uninstall_files_from_dir)
+install-nodist_chemexampleDATA: $(nodist_chemexample_DATA)
+       @$(NORMAL_INSTALL)
+       @list='$(nodist_chemexample_DATA)'; test -n "$(chemexampledir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(chemexampledir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(chemexampledir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(chemexampledir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(chemexampledir)" || exit $$?; \
+       done
+
+uninstall-nodist_chemexampleDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(nodist_chemexample_DATA)'; test -n "$(chemexampledir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(chemexampledir)'; $(am__uninstall_files_from_dir)
+install-nodist_chemexample122DATA: $(nodist_chemexample122_DATA)
+       @$(NORMAL_INSTALL)
+       @list='$(nodist_chemexample122_DATA)'; test -n "$(chemexample122dir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(chemexample122dir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(chemexample122dir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(chemexample122dir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(chemexample122dir)" || exit $$?; \
+       done
+
+uninstall-nodist_chemexample122DATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(nodist_chemexample122_DATA)'; test -n "$(chemexample122dir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(chemexample122dir)'; $(am__uninstall_files_from_dir)
+install-nodist_devlj4fontDATA: $(nodist_devlj4font_DATA)
+       @$(NORMAL_INSTALL)
+       @list='$(nodist_devlj4font_DATA)'; test -n "$(devlj4fontdir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(devlj4fontdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(devlj4fontdir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(devlj4fontdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(devlj4fontdir)" || exit $$?; \
+       done
+
+uninstall-nodist_devlj4fontDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(nodist_devlj4font_DATA)'; test -n "$(devlj4fontdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(devlj4fontdir)'; $(am__uninstall_files_from_dir)
+install-nodist_devpsfontDATA: $(nodist_devpsfont_DATA)
+       @$(NORMAL_INSTALL)
+       @list='$(nodist_devpsfont_DATA)'; test -n "$(devpsfontdir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(devpsfontdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(devpsfontdir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(devpsfontdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(devpsfontdir)" || exit $$?; \
+       done
+
+uninstall-nodist_devpsfontDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(nodist_devpsfont_DATA)'; test -n "$(devpsfontdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(devpsfontdir)'; $(am__uninstall_files_from_dir)
+install-nodist_docexamplesDATA: $(nodist_docexamples_DATA)
+       @$(NORMAL_INSTALL)
+       @list='$(nodist_docexamples_DATA)'; test -n "$(docexamplesdir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(docexamplesdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(docexamplesdir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(docexamplesdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(docexamplesdir)" || exit $$?; \
+       done
+
+uninstall-nodist_docexamplesDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(nodist_docexamples_DATA)'; test -n "$(docexamplesdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(docexamplesdir)'; $(am__uninstall_files_from_dir)
+install-nodist_docpdfdocDATA: $(nodist_docpdfdoc_DATA)
+       @$(NORMAL_INSTALL)
+       @list='$(nodist_docpdfdoc_DATA)'; test -n "$(docpdfdocdir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(docpdfdocdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(docpdfdocdir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(docpdfdocdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(docpdfdocdir)" || exit $$?; \
+       done
+
+uninstall-nodist_docpdfdocDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(nodist_docpdfdoc_DATA)'; test -n "$(docpdfdocdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(docpdfdocdir)'; $(am__uninstall_files_from_dir)
+install-nodist_hdtblexampleDATA: $(nodist_hdtblexample_DATA)
+       @$(NORMAL_INSTALL)
+       @list='$(nodist_hdtblexample_DATA)'; test -n "$(hdtblexampledir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(hdtblexampledir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(hdtblexampledir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(hdtblexampledir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(hdtblexampledir)" || exit $$?; \
+       done
+
+uninstall-nodist_hdtblexampleDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(nodist_hdtblexample_DATA)'; test -n "$(hdtblexampledir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(hdtblexampledir)'; $(am__uninstall_files_from_dir)
+install-nodist_htmlexamplesDATA: $(nodist_htmlexamples_DATA)
+       @$(NORMAL_INSTALL)
+       @list='$(nodist_htmlexamples_DATA)'; test -n "$(htmlexamplesdir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(htmlexamplesdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(htmlexamplesdir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(htmlexamplesdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(htmlexamplesdir)" || exit $$?; \
+       done
+
+uninstall-nodist_htmlexamplesDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(nodist_htmlexamples_DATA)'; test -n "$(htmlexamplesdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(htmlexamplesdir)'; $(am__uninstall_files_from_dir)
+install-nodist_mdocDATA: $(nodist_mdoc_DATA)
+       @$(NORMAL_INSTALL)
+       @list='$(nodist_mdoc_DATA)'; test -n "$(mdocdir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(mdocdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(mdocdir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(mdocdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(mdocdir)" || exit $$?; \
+       done
+
+uninstall-nodist_mdocDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(nodist_mdoc_DATA)'; test -n "$(mdocdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(mdocdir)'; $(am__uninstall_files_from_dir)
+install-nodist_momprocessedexampleDATA: $(nodist_momprocessedexample_DATA)
+       @$(NORMAL_INSTALL)
+       @list='$(nodist_momprocessedexample_DATA)'; test -n "$(momprocessedexampledir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(momprocessedexampledir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(momprocessedexampledir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(momprocessedexampledir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(momprocessedexampledir)" || exit $$?; \
+       done
+
+uninstall-nodist_momprocessedexampleDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(nodist_momprocessedexample_DATA)'; test -n "$(momprocessedexampledir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(momprocessedexampledir)'; $(am__uninstall_files_from_dir)
+install-nodist_otherdocDATA: $(nodist_otherdoc_DATA)
+       @$(NORMAL_INSTALL)
+       @list='$(nodist_otherdoc_DATA)'; test -n "$(otherdocdir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(otherdocdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(otherdocdir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(otherdocdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(otherdocdir)" || exit $$?; \
+       done
+
+uninstall-nodist_otherdocDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(nodist_otherdoc_DATA)'; test -n "$(otherdocdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(otherdocdir)'; $(am__uninstall_files_from_dir)
+install-nodist_pdfmarkpdfdocDATA: $(nodist_pdfmarkpdfdoc_DATA)
+       @$(NORMAL_INSTALL)
+       @list='$(nodist_pdfmarkpdfdoc_DATA)'; test -n "$(pdfmarkpdfdocdir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(pdfmarkpdfdocdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(pdfmarkpdfdocdir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pdfmarkpdfdocdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(pdfmarkpdfdocdir)" || exit $$?; \
+       done
+
+uninstall-nodist_pdfmarkpdfdocDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(nodist_pdfmarkpdfdoc_DATA)'; test -n "$(pdfmarkpdfdocdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(pdfmarkpdfdocdir)'; $(am__uninstall_files_from_dir)
+install-nodist_tmacDATA: $(nodist_tmac_DATA)
+       @$(NORMAL_INSTALL)
+       @list='$(nodist_tmac_DATA)'; test -n "$(tmacdir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(tmacdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(tmacdir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(tmacdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(tmacdir)" || exit $$?; \
+       done
+
+uninstall-nodist_tmacDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(nodist_tmac_DATA)'; test -n "$(tmacdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(tmacdir)'; $(am__uninstall_files_from_dir)
+
+ID: $(am__tagged_files)
+       $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+       set x; \
+       here=`pwd`; \
+       $(am__define_uniq_tagged_files); \
+       shift; \
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+         test -n "$$unique" || unique=$$empty_fix; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
+       fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+       $(am__define_uniq_tagged_files); \
+       test -z "$(CTAGS_ARGS)$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && $(am__cd) $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) "$$here"
+cscope: cscope.files
+       test ! -s cscope.files \
+         || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
+clean-cscope:
+       -rm -f cscope.files
+cscope.files: clean-cscope cscopelist
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+       list='$(am__tagged_files)'; \
+       case "$(srcdir)" in \
+         [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+         *) sdir=$(subdir)/$(srcdir) ;; \
+       esac; \
+       for i in $$list; do \
+         if test -f "$$i"; then \
+           echo "$(subdir)/$$i"; \
+         else \
+           echo "$$sdir/$$i"; \
+         fi; \
+       done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+       -rm -f cscope.out cscope.in.out cscope.po.out cscope.files
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+       rm -f $< $@
+       $(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+       @:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+       @$(am__set_TESTS_bases); \
+       am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+       redo_bases=`for i in $$bases; do \
+                     am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+                   done`; \
+       if test -n "$$redo_bases"; then \
+         redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+         redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+         if $(am__make_dryrun); then :; else \
+           rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+         fi; \
+       fi; \
+       if test -n "$$am__remaking_logs"; then \
+         echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+              "recursion detected" >&2; \
+       elif test -n "$$redo_logs"; then \
+         am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+       fi; \
+       if $(am__make_dryrun); then :; else \
+         st=0;  \
+         errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+         for i in $$redo_bases; do \
+           test -f $$i.trs && test -r $$i.trs \
+             || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+           test -f $$i.log && test -r $$i.log \
+             || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+         done; \
+         test $$st -eq 0 || exit 1; \
+       fi
+       @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+       ws='[   ]'; \
+       results=`for b in $$bases; do echo $$b.trs; done`; \
+       test -n "$$results" || results=/dev/null; \
+       all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+       pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+       fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+       skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+       xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+       xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+       error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+       if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+         success=true; \
+       else \
+         success=false; \
+       fi; \
+       br='==================='; br=$$br$$br$$br$$br; \
+       result_count () \
+       { \
+           if test x"$$1" = x"--maybe-color"; then \
+             maybe_colorize=yes; \
+           elif test x"$$1" = x"--no-color"; then \
+             maybe_colorize=no; \
+           else \
+             echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+           fi; \
+           shift; \
+           desc=$$1 count=$$2; \
+           if test $$maybe_colorize = yes && test $$count -gt 0; then \
+             color_start=$$3 color_end=$$std; \
+           else \
+             color_start= color_end=; \
+           fi; \
+           echo "$${color_start}# $$desc $$count$${color_end}"; \
+       }; \
+       create_testsuite_report () \
+       { \
+         result_count $$1 "TOTAL:" $$all   "$$brg"; \
+         result_count $$1 "PASS: " $$pass  "$$grn"; \
+         result_count $$1 "SKIP: " $$skip  "$$blu"; \
+         result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+         result_count $$1 "FAIL: " $$fail  "$$red"; \
+         result_count $$1 "XPASS:" $$xpass "$$red"; \
+         result_count $$1 "ERROR:" $$error "$$mgn"; \
+       }; \
+       {                                                               \
+         echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |       \
+           $(am__rst_title);                                           \
+         create_testsuite_report --no-color;                           \
+         echo;                                                         \
+         echo ".. contents:: :depth: 2";                               \
+         echo;                                                         \
+         for b in $$bases; do echo $$b; done                           \
+           | $(am__create_global_log);                                 \
+       } >$(TEST_SUITE_LOG).tmp || exit 1;                             \
+       mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);                     \
+       if $$success; then                                              \
+         col="$$grn";                                                  \
+        else                                                           \
+         col="$$red";                                                  \
+         test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);               \
+       fi;                                                             \
+       echo "$${col}$$br$${std}";                                      \
+       echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";   \
+       echo "$${col}$$br$${std}";                                      \
+       create_testsuite_report --maybe-color;                          \
+       echo "$$col$$br$$std";                                          \
+       if $$success; then :; else                                      \
+         echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";         \
+         if test -n "$(PACKAGE_BUGREPORT)"; then                       \
+           echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \
+         fi;                                                           \
+         echo "$$col$$br$$std";                                        \
+       fi;                                                             \
+       $$success || exit 1
+
+check-TESTS: $(check_PROGRAMS) $(check_SCRIPTS)
+       @list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
+       @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+       @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+       @set +e; $(am__set_TESTS_bases); \
+       log_list=`for i in $$bases; do echo $$i.log; done`; \
+       trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+       log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+       $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+       exit $$?;
+recheck: all $(check_PROGRAMS) $(check_SCRIPTS)
+       @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+       @set +e; $(am__set_TESTS_bases); \
+       bases=`for i in $$bases; do echo $$i; done \
+                | $(am__list_recheck_tests)` || exit 1; \
+       log_list=`for i in $$bases; do echo $$i.log; done`; \
+       log_list=`echo $$log_list`; \
+       $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+               am__force_recheck=am--force-recheck \
+               TEST_LOGS="$$log_list"; \
+       exit $$?
+contrib/gdiffmk/tests/gdiffmk_tests.sh.log: contrib/gdiffmk/tests/gdiffmk_tests.sh
+       @p='contrib/gdiffmk/tests/gdiffmk_tests.sh'; \
+       b='contrib/gdiffmk/tests/gdiffmk_tests.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+contrib/hdtbl/examples/test-hdtbl.sh.log: contrib/hdtbl/examples/test-hdtbl.sh
+       @p='contrib/hdtbl/examples/test-hdtbl.sh'; \
+       b='contrib/hdtbl/examples/test-hdtbl.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+contrib/mom/examples/tests-mom.sh.log: contrib/mom/examples/tests-mom.sh
+       @p='contrib/mom/examples/tests-mom.sh'; \
+       b='contrib/mom/examples/tests-mom.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+       @p='$<'; \
+       $(am__set_b); \
+       $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+@am__EXEEXT_TRUE@.test$(EXEEXT).log:
+@am__EXEEXT_TRUE@      @p='$<'; \
+@am__EXEEXT_TRUE@      $(am__set_b); \
+@am__EXEEXT_TRUE@      $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+@am__EXEEXT_TRUE@      --log-file $$b.log --trs-file $$b.trs \
+@am__EXEEXT_TRUE@      $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+@am__EXEEXT_TRUE@      "$$tst" $(AM_TESTS_FD_REDIRECT)
+
+distdir: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) distdir-am
+
+distdir-am: $(DISTFILES)
+       $(am__remove_distdir)
+       test -d "$(distdir)" || mkdir "$(distdir)"
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+         else \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+       $(MAKE) $(AM_MAKEFLAGS) \
+         top_distdir="$(top_distdir)" distdir="$(distdir)" \
+         dist-hook
+       -test -n "$(am__skip_mode_fix)" \
+       || find "$(distdir)" -type d ! -perm -755 \
+               -exec chmod u+rwx,go+rx {} \; -o \
+         ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
+         ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
+         ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
+       || chmod -R a+r "$(distdir)"
+dist-gzip: distdir
+       tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz
+       $(am__post_remove_distdir)
+
+dist-bzip2: distdir
+       tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
+       $(am__post_remove_distdir)
+
+dist-lzip: distdir
+       tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
+       $(am__post_remove_distdir)
+
+dist-xz: distdir
+       tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
+       $(am__post_remove_distdir)
+
+dist-tarZ: distdir
+       @echo WARNING: "Support for distribution archives compressed with" \
+                      "legacy program 'compress' is deprecated." >&2
+       @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
+       tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
+       $(am__post_remove_distdir)
+
+dist-shar: distdir
+       @echo WARNING: "Support for shar distribution archives is" \
+                      "deprecated." >&2
+       @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
+       shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz
+       $(am__post_remove_distdir)
+
+dist-zip: distdir
+       -rm -f $(distdir).zip
+       zip -rq $(distdir).zip $(distdir)
+       $(am__post_remove_distdir)
+
+dist dist-all:
+       $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
+       $(am__post_remove_distdir)
+
+# This target untars the dist file and tries a VPATH configuration.  Then
+# it guarantees that the distribution is self-contained by making another
+# tarfile.
+distcheck: dist
+       case '$(DIST_ARCHIVES)' in \
+       *.tar.gz*) \
+         eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\
+       *.tar.bz2*) \
+         bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
+       *.tar.lz*) \
+         lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
+       *.tar.xz*) \
+         xz -dc $(distdir).tar.xz | $(am__untar) ;;\
+       *.tar.Z*) \
+         uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+       *.shar.gz*) \
+         eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\
+       *.zip*) \
+         unzip $(distdir).zip ;;\
+       esac
+       chmod -R a-w $(distdir)
+       chmod u+w $(distdir)
+       mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst
+       chmod a-w $(distdir)
+       test -d $(distdir)/_build || exit 0; \
+       dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
+         && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+         && am__cwd=`pwd` \
+         && $(am__cd) $(distdir)/_build/sub \
+         && ../../configure \
+           $(AM_DISTCHECK_CONFIGURE_FLAGS) \
+           $(DISTCHECK_CONFIGURE_FLAGS) \
+           --srcdir=../.. --prefix="$$dc_install_base" \
+         && $(MAKE) $(AM_MAKEFLAGS) \
+         && $(MAKE) $(AM_MAKEFLAGS) dvi \
+         && $(MAKE) $(AM_MAKEFLAGS) check \
+         && $(MAKE) $(AM_MAKEFLAGS) install \
+         && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+         && $(MAKE) $(AM_MAKEFLAGS) uninstall \
+         && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
+               distuninstallcheck \
+         && chmod -R a-w "$$dc_install_base" \
+         && ({ \
+              (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
+              && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
+              && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
+              && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
+                   distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
+             } || { rm -rf "$$dc_destdir"; exit 1; }) \
+         && rm -rf "$$dc_destdir" \
+         && $(MAKE) $(AM_MAKEFLAGS) dist \
+         && rm -rf $(DIST_ARCHIVES) \
+         && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
+         && cd "$$am__cwd" \
+         || exit 1
+       $(am__post_remove_distdir)
+       @(echo "$(distdir) archives ready for distribution: "; \
+         list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
+         sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
+distuninstallcheck:
+       @test -n '$(distuninstallcheck_dir)' || { \
+         echo 'ERROR: trying to run $@ with an empty' \
+              '$$(distuninstallcheck_dir)' >&2; \
+         exit 1; \
+       }; \
+       $(am__cd) '$(distuninstallcheck_dir)' || { \
+         echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
+         exit 1; \
+       }; \
+       test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
+          || { echo "ERROR: files left after uninstall:" ; \
+               if test -n "$(DESTDIR)"; then \
+                 echo "  (check DESTDIR support)"; \
+               fi ; \
+               $(distuninstallcheck_listfiles) ; \
+               exit 1; } >&2
+distcleancheck: distclean
+       @if test '$(srcdir)' = . ; then \
+         echo "ERROR: distcleancheck can only run from a VPATH build" ; \
+         exit 1 ; \
+       fi
+       @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
+         || { echo "ERROR: files left in build directory after distclean:" ; \
+              $(distcleancheck_listfiles) ; \
+              exit 1; } >&2
+check-am: all-am
+       $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(check_SCRIPTS)
+       $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) check-am
+all-am: Makefile $(PROGRAMS) $(LIBRARIES) $(SCRIPTS) $(MANS) $(DATA) \
+               $(HEADERS)
+installdirs:
+       for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(prefixexecbindir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(prefixexecbindir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man5dir)" "$(DESTDIR)$(man7dir)" "$(DESTDIR)$(devX10012fontdir)" "$(DESTDIR)$(devX100fontdir)" "$(DESTDIR)$(devX7512fontdir)" "$(DESTDIR)$(devX75fontdir)" "$(DESTDIR)$(devasciifontdir)" "$(DESTDIR)$(devcp1047fontdir)" "$(DESTDIR)$(devdvifontdir)" "$(DESTDIR)$(devdvigendir)" "$(DESTDIR)$(devhtmlfontdir)" "$(DESTDIR)$(devlatin1fontdir)" "$(DESTDIR)$(devlbpfontdir)" "$(DESTDIR)$(devpdffontdir)" "$(DESTDIR)$(devpdffontencdir)" "$(DESTDIR)$(devpdffontmapdir)" "$(DESTDIR)$(devutf8fontdir)" "$(DESTDIR)$(chemexampledir)" "$(DESTDIR)$(chempicdir)" "$(DESTDIR)$(devlj4fontdir)" "$(DESTDIR)$(devlj4fontgendir)" "$(DESTDIR)$(devpsfontdir)" "$(DESTDIR)$(devpsgendir)" "$(DESTDIR)$(docexamplesdir)" "$(DESTDIR)$(glilyponddir)" "$(DESTDIR)$(gpinyindir)" "$(DESTDIR)$(grogdir)" "$(DESTDIR)$(hdtblexampledir)" "$(DESTDIR)$(localtmacdir)" "$(DESTDIR)$(mmdir)" "$(DESTDIR)$(mmexampledir)" "$(DESTDIR)$(momexampledir)" "$(DESTDIR)$(momtmacdir)" "$(DESTDIR)$(olddevpsfontdir)" "$(DESTDIR)$(otherdocdir)" "$(DESTDIR)$(pdfmarktmacdir)" "$(DESTDIR)$(tmacdir)" "$(DESTDIR)$(tmacmmdir)" "$(DESTDIR)$(grofferdir)" "$(DESTDIR)$(groffoptsdir)" "$(DESTDIR)$(hdtbltmacdir)" "$(DESTDIR)$(htmlpicdir)" "$(DESTDIR)$(momhtmldir)" "$(DESTDIR)$(chemexampledir)" "$(DESTDIR)$(chemexample122dir)" "$(DESTDIR)$(devlj4fontdir)" "$(DESTDIR)$(devpsfontdir)" "$(DESTDIR)$(docexamplesdir)" "$(DESTDIR)$(docpdfdocdir)" "$(DESTDIR)$(hdtblexampledir)" "$(DESTDIR)$(htmlexamplesdir)" "$(DESTDIR)$(mdocdir)" "$(DESTDIR)$(momprocessedexampledir)" "$(DESTDIR)$(otherdocdir)" "$(DESTDIR)$(pdfmarkpdfdocdir)" "$(DESTDIR)$(tmacdir)"; do \
+         test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+       done
+install: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+mostlyclean-generic:
+       -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
+       -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+       -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+       -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+       -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+       -rm -f lib/$(DEPDIR)/$(am__dirstamp)
+       -rm -f lib/$(am__dirstamp)
+       -rm -f lib/uniwidth/$(DEPDIR)/$(am__dirstamp)
+       -rm -f lib/uniwidth/$(am__dirstamp)
+       -rm -f src/devices/grodvi/$(DEPDIR)/$(am__dirstamp)
+       -rm -f src/devices/grodvi/$(am__dirstamp)
+       -rm -f src/devices/grohtml/$(DEPDIR)/$(am__dirstamp)
+       -rm -f src/devices/grohtml/$(am__dirstamp)
+       -rm -f src/devices/grolbp/$(DEPDIR)/$(am__dirstamp)
+       -rm -f src/devices/grolbp/$(am__dirstamp)
+       -rm -f src/devices/grolj4/$(DEPDIR)/$(am__dirstamp)
+       -rm -f src/devices/grolj4/$(am__dirstamp)
+       -rm -f src/devices/grops/$(DEPDIR)/$(am__dirstamp)
+       -rm -f src/devices/grops/$(am__dirstamp)
+       -rm -f src/devices/grotty/$(DEPDIR)/$(am__dirstamp)
+       -rm -f src/devices/grotty/$(am__dirstamp)
+       -rm -f src/devices/xditview/$(DEPDIR)/$(am__dirstamp)
+       -rm -f src/devices/xditview/$(am__dirstamp)
+       -rm -f src/libs/libbib/$(DEPDIR)/$(am__dirstamp)
+       -rm -f src/libs/libbib/$(am__dirstamp)
+       -rm -f src/libs/libdriver/$(DEPDIR)/$(am__dirstamp)
+       -rm -f src/libs/libdriver/$(am__dirstamp)
+       -rm -f src/libs/libgroff/$(DEPDIR)/$(am__dirstamp)
+       -rm -f src/libs/libgroff/$(am__dirstamp)
+       -rm -f src/libs/libxutil/$(DEPDIR)/$(am__dirstamp)
+       -rm -f src/libs/libxutil/$(am__dirstamp)
+       -rm -f src/preproc/eqn/$(DEPDIR)/$(am__dirstamp)
+       -rm -f src/preproc/eqn/$(am__dirstamp)
+       -rm -f src/preproc/grn/$(DEPDIR)/$(am__dirstamp)
+       -rm -f src/preproc/grn/$(am__dirstamp)
+       -rm -f src/preproc/html/$(DEPDIR)/$(am__dirstamp)
+       -rm -f src/preproc/html/$(am__dirstamp)
+       -rm -f src/preproc/pic/$(DEPDIR)/$(am__dirstamp)
+       -rm -f src/preproc/pic/$(am__dirstamp)
+       -rm -f src/preproc/preconv/$(DEPDIR)/$(am__dirstamp)
+       -rm -f src/preproc/preconv/$(am__dirstamp)
+       -rm -f src/preproc/refer/$(DEPDIR)/$(am__dirstamp)
+       -rm -f src/preproc/refer/$(am__dirstamp)
+       -rm -f src/preproc/soelim/$(DEPDIR)/$(am__dirstamp)
+       -rm -f src/preproc/soelim/$(am__dirstamp)
+       -rm -f src/preproc/tbl/$(DEPDIR)/$(am__dirstamp)
+       -rm -f src/preproc/tbl/$(am__dirstamp)
+       -rm -f src/roff/groff/$(DEPDIR)/$(am__dirstamp)
+       -rm -f src/roff/groff/$(am__dirstamp)
+       -rm -f src/roff/troff/$(DEPDIR)/$(am__dirstamp)
+       -rm -f src/roff/troff/$(am__dirstamp)
+       -rm -f src/utils/addftinfo/$(DEPDIR)/$(am__dirstamp)
+       -rm -f src/utils/addftinfo/$(am__dirstamp)
+       -rm -f src/utils/hpftodit/$(DEPDIR)/$(am__dirstamp)
+       -rm -f src/utils/hpftodit/$(am__dirstamp)
+       -rm -f src/utils/indxbib/$(DEPDIR)/$(am__dirstamp)
+       -rm -f src/utils/indxbib/$(am__dirstamp)
+       -rm -f src/utils/lkbib/$(DEPDIR)/$(am__dirstamp)
+       -rm -f src/utils/lkbib/$(am__dirstamp)
+       -rm -f src/utils/lookbib/$(DEPDIR)/$(am__dirstamp)
+       -rm -f src/utils/lookbib/$(am__dirstamp)
+       -rm -f src/utils/pfbtops/$(DEPDIR)/$(am__dirstamp)
+       -rm -f src/utils/pfbtops/$(am__dirstamp)
+       -rm -f src/utils/tfmtodit/$(DEPDIR)/$(am__dirstamp)
+       -rm -f src/utils/tfmtodit/$(am__dirstamp)
+       -rm -f src/utils/xtotroff/$(DEPDIR)/$(am__dirstamp)
+       -rm -f src/utils/xtotroff/$(am__dirstamp)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+       -rm -f src/preproc/eqn/eqn.cpp
+       -rm -f src/preproc/eqn/eqn.hpp
+       -rm -f src/preproc/pic/pic.cpp
+       -rm -f src/preproc/pic/pic.hpp
+       -rm -f src/preproc/refer/label.cpp
+       -rm -f src/preproc/refer/label.hpp
+       -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+@BUILD_INFODOC_FALSE@install-html-local:
+@BUILD_INFODOC_FALSE@install-pdf-local:
+clean: clean-am
+
+clean-am: clean-binPROGRAMS clean-checkPROGRAMS clean-generic \
+       clean-local clean-nobase_binPROGRAMS clean-noinstLIBRARIES \
+       clean-prefixexecbinPROGRAMS mostlyclean-am
+
+distclean: distclean-am
+       -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+               -rm -f lib/$(DEPDIR)/asnprintf.Po
+       -rm -f lib/$(DEPDIR)/float.Po
+       -rm -f lib/$(DEPDIR)/fprintf.Po
+       -rm -f lib/$(DEPDIR)/frexp.Po
+       -rm -f lib/$(DEPDIR)/frexpl.Po
+       -rm -f lib/$(DEPDIR)/fseterr.Po
+       -rm -f lib/$(DEPDIR)/isnan.Po
+       -rm -f lib/$(DEPDIR)/isnand.Po
+       -rm -f lib/$(DEPDIR)/isnanf.Po
+       -rm -f lib/$(DEPDIR)/isnanl.Po
+       -rm -f lib/$(DEPDIR)/itold.Po
+       -rm -f lib/$(DEPDIR)/localcharset.Po
+       -rm -f lib/$(DEPDIR)/math.Po
+       -rm -f lib/$(DEPDIR)/memchr.Po
+       -rm -f lib/$(DEPDIR)/printf-args.Po
+       -rm -f lib/$(DEPDIR)/printf-frexp.Po
+       -rm -f lib/$(DEPDIR)/printf-frexpl.Po
+       -rm -f lib/$(DEPDIR)/printf-parse.Po
+       -rm -f lib/$(DEPDIR)/signbitd.Po
+       -rm -f lib/$(DEPDIR)/signbitf.Po
+       -rm -f lib/$(DEPDIR)/signbitl.Po
+       -rm -f lib/$(DEPDIR)/snprintf.Po
+       -rm -f lib/$(DEPDIR)/vasnprintf.Po
+       -rm -f lib/$(DEPDIR)/vsnprintf.Po
+       -rm -f lib/$(DEPDIR)/wctype-h.Po
+       -rm -f lib/$(DEPDIR)/wcwidth.Po
+       -rm -f lib/$(DEPDIR)/xsize.Po
+       -rm -f lib/uniwidth/$(DEPDIR)/width.Po
+       -rm -f src/devices/grodvi/$(DEPDIR)/dvi.Po
+       -rm -f src/devices/grohtml/$(DEPDIR)/html-table.Po
+       -rm -f src/devices/grohtml/$(DEPDIR)/html-text.Po
+       -rm -f src/devices/grohtml/$(DEPDIR)/output.Po
+       -rm -f src/devices/grohtml/$(DEPDIR)/post-html.Po
+       -rm -f src/devices/grolbp/$(DEPDIR)/lbp.Po
+       -rm -f src/devices/grolj4/$(DEPDIR)/lj4.Po
+       -rm -f src/devices/grops/$(DEPDIR)/ps.Po
+       -rm -f src/devices/grops/$(DEPDIR)/psrm.Po
+       -rm -f src/devices/grotty/$(DEPDIR)/tty.Po
+       -rm -f src/devices/xditview/$(DEPDIR)/gxditview-Dvi.Po
+       -rm -f src/devices/xditview/$(DEPDIR)/gxditview-device.Po
+       -rm -f src/devices/xditview/$(DEPDIR)/gxditview-draw.Po
+       -rm -f src/devices/xditview/$(DEPDIR)/gxditview-font.Po
+       -rm -f src/devices/xditview/$(DEPDIR)/gxditview-lex.Po
+       -rm -f src/devices/xditview/$(DEPDIR)/gxditview-page.Po
+       -rm -f src/devices/xditview/$(DEPDIR)/gxditview-parse.Po
+       -rm -f src/devices/xditview/$(DEPDIR)/gxditview-xditview.Po
+       -rm -f src/libs/libbib/$(DEPDIR)/common.Po
+       -rm -f src/libs/libbib/$(DEPDIR)/index.Po
+       -rm -f src/libs/libbib/$(DEPDIR)/linear.Po
+       -rm -f src/libs/libbib/$(DEPDIR)/map.Po
+       -rm -f src/libs/libbib/$(DEPDIR)/search.Po
+       -rm -f src/libs/libdriver/$(DEPDIR)/input.Po
+       -rm -f src/libs/libdriver/$(DEPDIR)/printer.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-assert.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-change_lf.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-cmap.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-color.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-cset.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-curtime.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-device.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-errarg.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-error.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-fatal.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-filename.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-font.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-fontfile.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-geometry.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-getopt.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-getopt1.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-glyphuni.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-htmlhint.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-hypot.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-iftoa.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-invalid.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-itoa.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-lf.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-lineno.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-localcharset.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-macropath.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-matherr.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-maxfilename.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-maxpathname.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-mksdir.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-nametoindex.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-new.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-paper.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-prime.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-progname.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-ptable.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-quotearg.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-relocate.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-searchpath.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-spawnvp.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-string.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-strsave.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-symbol.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-tmpfile.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-tmpname.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-unicode.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-uniglyph.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-uniuni.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-version.Po
+       -rm -f src/libs/libxutil/$(DEPDIR)/libxutil_a-DviChar.Po
+       -rm -f src/libs/libxutil/$(DEPDIR)/libxutil_a-XFontName.Po
+       -rm -f src/libs/libxutil/$(DEPDIR)/libxutil_a-xmalloc.Po
+       -rm -f src/preproc/eqn/$(DEPDIR)/eqn-box.Po
+       -rm -f src/preproc/eqn/$(DEPDIR)/eqn-delim.Po
+       -rm -f src/preproc/eqn/$(DEPDIR)/eqn-eqn.Po
+       -rm -f src/preproc/eqn/$(DEPDIR)/eqn-lex.Po
+       -rm -f src/preproc/eqn/$(DEPDIR)/eqn-limit.Po
+       -rm -f src/preproc/eqn/$(DEPDIR)/eqn-list.Po
+       -rm -f src/preproc/eqn/$(DEPDIR)/eqn-main.Po
+       -rm -f src/preproc/eqn/$(DEPDIR)/eqn-mark.Po
+       -rm -f src/preproc/eqn/$(DEPDIR)/eqn-other.Po
+       -rm -f src/preproc/eqn/$(DEPDIR)/eqn-over.Po
+       -rm -f src/preproc/eqn/$(DEPDIR)/eqn-pile.Po
+       -rm -f src/preproc/eqn/$(DEPDIR)/eqn-script.Po
+       -rm -f src/preproc/eqn/$(DEPDIR)/eqn-special.Po
+       -rm -f src/preproc/eqn/$(DEPDIR)/eqn-sqrt.Po
+       -rm -f src/preproc/eqn/$(DEPDIR)/eqn-text.Po
+       -rm -f src/preproc/grn/$(DEPDIR)/hdb.Po
+       -rm -f src/preproc/grn/$(DEPDIR)/hgraph.Po
+       -rm -f src/preproc/grn/$(DEPDIR)/hpoint.Po
+       -rm -f src/preproc/grn/$(DEPDIR)/main.Po
+       -rm -f src/preproc/html/$(DEPDIR)/pre-html.Po
+       -rm -f src/preproc/html/$(DEPDIR)/pushback.Po
+       -rm -f src/preproc/pic/$(DEPDIR)/pic-common.Po
+       -rm -f src/preproc/pic/$(DEPDIR)/pic-lex.Po
+       -rm -f src/preproc/pic/$(DEPDIR)/pic-main.Po
+       -rm -f src/preproc/pic/$(DEPDIR)/pic-object.Po
+       -rm -f src/preproc/pic/$(DEPDIR)/pic-pic.Po
+       -rm -f src/preproc/pic/$(DEPDIR)/pic-tex.Po
+       -rm -f src/preproc/pic/$(DEPDIR)/pic-troff.Po
+       -rm -f src/preproc/preconv/$(DEPDIR)/preconv-preconv.Po
+       -rm -f src/preproc/refer/$(DEPDIR)/refer-command.Po
+       -rm -f src/preproc/refer/$(DEPDIR)/refer-label.Po
+       -rm -f src/preproc/refer/$(DEPDIR)/refer-ref.Po
+       -rm -f src/preproc/refer/$(DEPDIR)/refer-refer.Po
+       -rm -f src/preproc/refer/$(DEPDIR)/refer-token.Po
+       -rm -f src/preproc/soelim/$(DEPDIR)/soelim.Po
+       -rm -f src/preproc/tbl/$(DEPDIR)/main.Po
+       -rm -f src/preproc/tbl/$(DEPDIR)/table.Po
+       -rm -f src/roff/groff/$(DEPDIR)/groff.Po
+       -rm -f src/roff/groff/$(DEPDIR)/pipeline.Po
+       -rm -f src/roff/troff/$(DEPDIR)/dictionary.Po
+       -rm -f src/roff/troff/$(DEPDIR)/div.Po
+       -rm -f src/roff/troff/$(DEPDIR)/env.Po
+       -rm -f src/roff/troff/$(DEPDIR)/input.Po
+       -rm -f src/roff/troff/$(DEPDIR)/majorminor.Po
+       -rm -f src/roff/troff/$(DEPDIR)/mtsm.Po
+       -rm -f src/roff/troff/$(DEPDIR)/node.Po
+       -rm -f src/roff/troff/$(DEPDIR)/number.Po
+       -rm -f src/roff/troff/$(DEPDIR)/reg.Po
+       -rm -f src/utils/addftinfo/$(DEPDIR)/addftinfo.Po
+       -rm -f src/utils/addftinfo/$(DEPDIR)/guess.Po
+       -rm -f src/utils/hpftodit/$(DEPDIR)/hpftodit.Po
+       -rm -f src/utils/hpftodit/$(DEPDIR)/hpuni.Po
+       -rm -f src/utils/indxbib/$(DEPDIR)/indxbib.Po
+       -rm -f src/utils/indxbib/$(DEPDIR)/signal.Po
+       -rm -f src/utils/lkbib/$(DEPDIR)/lkbib.Po
+       -rm -f src/utils/lookbib/$(DEPDIR)/lookbib.Po
+       -rm -f src/utils/pfbtops/$(DEPDIR)/dummy.Po
+       -rm -f src/utils/pfbtops/$(DEPDIR)/pfbtops.Po
+       -rm -f src/utils/tfmtodit/$(DEPDIR)/tfmtodit.Po
+       -rm -f src/utils/xtotroff/$(DEPDIR)/xtotroff-xtotroff.Po
+       -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+       distclean-hdr distclean-local distclean-tags
+
+@BUILD_INFODOC_FALSE@dvi: dvi-am
+
+dvi-am:
+
+@BUILD_INFODOC_FALSE@html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-data-local install-devX10012fontDATA \
+       install-devX100fontDATA install-devX7512fontDATA \
+       install-devX75fontDATA install-devasciifontDATA \
+       install-devcp1047fontDATA install-devdvifontDATA \
+       install-devdvigenDATA install-devhtmlfontDATA \
+       install-devlatin1fontDATA install-devlbpfontDATA \
+       install-devpdffontDATA install-devpdffontencDATA \
+       install-devpdffontmapDATA install-devutf8fontDATA \
+       install-dist_chemexampleDATA install-dist_chempicDATA \
+       install-dist_devlj4fontDATA install-dist_devlj4fontgenDATA \
+       install-dist_devpsfontDATA install-dist_devpsgenDATA \
+       install-dist_docexamplesDATA install-dist_glilypondDATA \
+       install-dist_gpinyinDATA install-dist_grogDATA \
+       install-dist_hdtblexampleDATA install-dist_localtmacDATA \
+       install-dist_mmDATA install-dist_mmexampleDATA \
+       install-dist_momexampleDATA install-dist_momtmacDATA \
+       install-dist_olddevpsfontDATA install-dist_otherdocDATA \
+       install-dist_pdfmarktmacDATA install-dist_tmacDATA \
+       install-dist_tmacmmDATA install-grofferDATA \
+       install-groffoptsDATA install-hdtbltmacDATA \
+       install-htmlpicDATA install-man install-momhtmlDATA \
+       install-nodist_chemexample122DATA \
+       install-nodist_chemexampleDATA install-nodist_devlj4fontDATA \
+       install-nodist_devpsfontDATA install-nodist_docexamplesDATA \
+       install-nodist_docpdfdocDATA install-nodist_hdtblexampleDATA \
+       install-nodist_htmlexamplesDATA install-nodist_mdocDATA \
+       install-nodist_momprocessedexampleDATA \
+       install-nodist_otherdocDATA install-nodist_pdfmarkpdfdocDATA \
+       install-nodist_tmacDATA
+       @$(NORMAL_INSTALL)
+       $(MAKE) $(AM_MAKEFLAGS) install-data-hook
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-binPROGRAMS install-binSCRIPTS \
+       install-dist_binSCRIPTS install-nobase_binPROGRAMS \
+       install-prefixexecbinPROGRAMS install-prefixexecbinSCRIPTS
+       @$(NORMAL_INSTALL)
+       $(MAKE) $(AM_MAKEFLAGS) install-exec-hook
+install-html: install-html-am
+
+install-html-am: install-html-local
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man: install-man1 install-man5 install-man7
+
+install-pdf: install-pdf-am
+
+install-pdf-am: install-pdf-local
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+       -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+       -rm -rf $(top_srcdir)/autom4te.cache
+               -rm -f lib/$(DEPDIR)/asnprintf.Po
+       -rm -f lib/$(DEPDIR)/float.Po
+       -rm -f lib/$(DEPDIR)/fprintf.Po
+       -rm -f lib/$(DEPDIR)/frexp.Po
+       -rm -f lib/$(DEPDIR)/frexpl.Po
+       -rm -f lib/$(DEPDIR)/fseterr.Po
+       -rm -f lib/$(DEPDIR)/isnan.Po
+       -rm -f lib/$(DEPDIR)/isnand.Po
+       -rm -f lib/$(DEPDIR)/isnanf.Po
+       -rm -f lib/$(DEPDIR)/isnanl.Po
+       -rm -f lib/$(DEPDIR)/itold.Po
+       -rm -f lib/$(DEPDIR)/localcharset.Po
+       -rm -f lib/$(DEPDIR)/math.Po
+       -rm -f lib/$(DEPDIR)/memchr.Po
+       -rm -f lib/$(DEPDIR)/printf-args.Po
+       -rm -f lib/$(DEPDIR)/printf-frexp.Po
+       -rm -f lib/$(DEPDIR)/printf-frexpl.Po
+       -rm -f lib/$(DEPDIR)/printf-parse.Po
+       -rm -f lib/$(DEPDIR)/signbitd.Po
+       -rm -f lib/$(DEPDIR)/signbitf.Po
+       -rm -f lib/$(DEPDIR)/signbitl.Po
+       -rm -f lib/$(DEPDIR)/snprintf.Po
+       -rm -f lib/$(DEPDIR)/vasnprintf.Po
+       -rm -f lib/$(DEPDIR)/vsnprintf.Po
+       -rm -f lib/$(DEPDIR)/wctype-h.Po
+       -rm -f lib/$(DEPDIR)/wcwidth.Po
+       -rm -f lib/$(DEPDIR)/xsize.Po
+       -rm -f lib/uniwidth/$(DEPDIR)/width.Po
+       -rm -f src/devices/grodvi/$(DEPDIR)/dvi.Po
+       -rm -f src/devices/grohtml/$(DEPDIR)/html-table.Po
+       -rm -f src/devices/grohtml/$(DEPDIR)/html-text.Po
+       -rm -f src/devices/grohtml/$(DEPDIR)/output.Po
+       -rm -f src/devices/grohtml/$(DEPDIR)/post-html.Po
+       -rm -f src/devices/grolbp/$(DEPDIR)/lbp.Po
+       -rm -f src/devices/grolj4/$(DEPDIR)/lj4.Po
+       -rm -f src/devices/grops/$(DEPDIR)/ps.Po
+       -rm -f src/devices/grops/$(DEPDIR)/psrm.Po
+       -rm -f src/devices/grotty/$(DEPDIR)/tty.Po
+       -rm -f src/devices/xditview/$(DEPDIR)/gxditview-Dvi.Po
+       -rm -f src/devices/xditview/$(DEPDIR)/gxditview-device.Po
+       -rm -f src/devices/xditview/$(DEPDIR)/gxditview-draw.Po
+       -rm -f src/devices/xditview/$(DEPDIR)/gxditview-font.Po
+       -rm -f src/devices/xditview/$(DEPDIR)/gxditview-lex.Po
+       -rm -f src/devices/xditview/$(DEPDIR)/gxditview-page.Po
+       -rm -f src/devices/xditview/$(DEPDIR)/gxditview-parse.Po
+       -rm -f src/devices/xditview/$(DEPDIR)/gxditview-xditview.Po
+       -rm -f src/libs/libbib/$(DEPDIR)/common.Po
+       -rm -f src/libs/libbib/$(DEPDIR)/index.Po
+       -rm -f src/libs/libbib/$(DEPDIR)/linear.Po
+       -rm -f src/libs/libbib/$(DEPDIR)/map.Po
+       -rm -f src/libs/libbib/$(DEPDIR)/search.Po
+       -rm -f src/libs/libdriver/$(DEPDIR)/input.Po
+       -rm -f src/libs/libdriver/$(DEPDIR)/printer.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-assert.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-change_lf.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-cmap.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-color.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-cset.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-curtime.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-device.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-errarg.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-error.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-fatal.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-filename.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-font.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-fontfile.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-geometry.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-getopt.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-getopt1.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-glyphuni.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-htmlhint.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-hypot.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-iftoa.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-invalid.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-itoa.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-lf.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-lineno.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-localcharset.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-macropath.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-matherr.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-maxfilename.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-maxpathname.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-mksdir.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-nametoindex.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-new.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-paper.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-prime.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-progname.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-ptable.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-quotearg.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-relocate.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-searchpath.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-spawnvp.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-string.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-strsave.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-symbol.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-tmpfile.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-tmpname.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-unicode.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-uniglyph.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-uniuni.Po
+       -rm -f src/libs/libgroff/$(DEPDIR)/libgroff_a-version.Po
+       -rm -f src/libs/libxutil/$(DEPDIR)/libxutil_a-DviChar.Po
+       -rm -f src/libs/libxutil/$(DEPDIR)/libxutil_a-XFontName.Po
+       -rm -f src/libs/libxutil/$(DEPDIR)/libxutil_a-xmalloc.Po
+       -rm -f src/preproc/eqn/$(DEPDIR)/eqn-box.Po
+       -rm -f src/preproc/eqn/$(DEPDIR)/eqn-delim.Po
+       -rm -f src/preproc/eqn/$(DEPDIR)/eqn-eqn.Po
+       -rm -f src/preproc/eqn/$(DEPDIR)/eqn-lex.Po
+       -rm -f src/preproc/eqn/$(DEPDIR)/eqn-limit.Po
+       -rm -f src/preproc/eqn/$(DEPDIR)/eqn-list.Po
+       -rm -f src/preproc/eqn/$(DEPDIR)/eqn-main.Po
+       -rm -f src/preproc/eqn/$(DEPDIR)/eqn-mark.Po
+       -rm -f src/preproc/eqn/$(DEPDIR)/eqn-other.Po
+       -rm -f src/preproc/eqn/$(DEPDIR)/eqn-over.Po
+       -rm -f src/preproc/eqn/$(DEPDIR)/eqn-pile.Po
+       -rm -f src/preproc/eqn/$(DEPDIR)/eqn-script.Po
+       -rm -f src/preproc/eqn/$(DEPDIR)/eqn-special.Po
+       -rm -f src/preproc/eqn/$(DEPDIR)/eqn-sqrt.Po
+       -rm -f src/preproc/eqn/$(DEPDIR)/eqn-text.Po
+       -rm -f src/preproc/grn/$(DEPDIR)/hdb.Po
+       -rm -f src/preproc/grn/$(DEPDIR)/hgraph.Po
+       -rm -f src/preproc/grn/$(DEPDIR)/hpoint.Po
+       -rm -f src/preproc/grn/$(DEPDIR)/main.Po
+       -rm -f src/preproc/html/$(DEPDIR)/pre-html.Po
+       -rm -f src/preproc/html/$(DEPDIR)/pushback.Po
+       -rm -f src/preproc/pic/$(DEPDIR)/pic-common.Po
+       -rm -f src/preproc/pic/$(DEPDIR)/pic-lex.Po
+       -rm -f src/preproc/pic/$(DEPDIR)/pic-main.Po
+       -rm -f src/preproc/pic/$(DEPDIR)/pic-object.Po
+       -rm -f src/preproc/pic/$(DEPDIR)/pic-pic.Po
+       -rm -f src/preproc/pic/$(DEPDIR)/pic-tex.Po
+       -rm -f src/preproc/pic/$(DEPDIR)/pic-troff.Po
+       -rm -f src/preproc/preconv/$(DEPDIR)/preconv-preconv.Po
+       -rm -f src/preproc/refer/$(DEPDIR)/refer-command.Po
+       -rm -f src/preproc/refer/$(DEPDIR)/refer-label.Po
+       -rm -f src/preproc/refer/$(DEPDIR)/refer-ref.Po
+       -rm -f src/preproc/refer/$(DEPDIR)/refer-refer.Po
+       -rm -f src/preproc/refer/$(DEPDIR)/refer-token.Po
+       -rm -f src/preproc/soelim/$(DEPDIR)/soelim.Po
+       -rm -f src/preproc/tbl/$(DEPDIR)/main.Po
+       -rm -f src/preproc/tbl/$(DEPDIR)/table.Po
+       -rm -f src/roff/groff/$(DEPDIR)/groff.Po
+       -rm -f src/roff/groff/$(DEPDIR)/pipeline.Po
+       -rm -f src/roff/troff/$(DEPDIR)/dictionary.Po
+       -rm -f src/roff/troff/$(DEPDIR)/div.Po
+       -rm -f src/roff/troff/$(DEPDIR)/env.Po
+       -rm -f src/roff/troff/$(DEPDIR)/input.Po
+       -rm -f src/roff/troff/$(DEPDIR)/majorminor.Po
+       -rm -f src/roff/troff/$(DEPDIR)/mtsm.Po
+       -rm -f src/roff/troff/$(DEPDIR)/node.Po
+       -rm -f src/roff/troff/$(DEPDIR)/number.Po
+       -rm -f src/roff/troff/$(DEPDIR)/reg.Po
+       -rm -f src/utils/addftinfo/$(DEPDIR)/addftinfo.Po
+       -rm -f src/utils/addftinfo/$(DEPDIR)/guess.Po
+       -rm -f src/utils/hpftodit/$(DEPDIR)/hpftodit.Po
+       -rm -f src/utils/hpftodit/$(DEPDIR)/hpuni.Po
+       -rm -f src/utils/indxbib/$(DEPDIR)/indxbib.Po
+       -rm -f src/utils/indxbib/$(DEPDIR)/signal.Po
+       -rm -f src/utils/lkbib/$(DEPDIR)/lkbib.Po
+       -rm -f src/utils/lookbib/$(DEPDIR)/lookbib.Po
+       -rm -f src/utils/pfbtops/$(DEPDIR)/dummy.Po
+       -rm -f src/utils/pfbtops/$(DEPDIR)/pfbtops.Po
+       -rm -f src/utils/tfmtodit/$(DEPDIR)/tfmtodit.Po
+       -rm -f src/utils/xtotroff/$(DEPDIR)/xtotroff-xtotroff.Po
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic \
+       maintainer-clean-local
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+       mostlyclean-local
+
+@BUILD_INFODOC_FALSE@pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-binPROGRAMS uninstall-binSCRIPTS \
+       uninstall-devX10012fontDATA uninstall-devX100fontDATA \
+       uninstall-devX7512fontDATA uninstall-devX75fontDATA \
+       uninstall-devasciifontDATA uninstall-devcp1047fontDATA \
+       uninstall-devdvifontDATA uninstall-devdvigenDATA \
+       uninstall-devhtmlfontDATA uninstall-devlatin1fontDATA \
+       uninstall-devlbpfontDATA uninstall-devpdffontDATA \
+       uninstall-devpdffontencDATA uninstall-devpdffontmapDATA \
+       uninstall-devutf8fontDATA uninstall-dist_binSCRIPTS \
+       uninstall-dist_chemexampleDATA uninstall-dist_chempicDATA \
+       uninstall-dist_devlj4fontDATA uninstall-dist_devlj4fontgenDATA \
+       uninstall-dist_devpsfontDATA uninstall-dist_devpsgenDATA \
+       uninstall-dist_docexamplesDATA uninstall-dist_glilypondDATA \
+       uninstall-dist_gpinyinDATA uninstall-dist_grogDATA \
+       uninstall-dist_hdtblexampleDATA uninstall-dist_localtmacDATA \
+       uninstall-dist_mmDATA uninstall-dist_mmexampleDATA \
+       uninstall-dist_momexampleDATA uninstall-dist_momtmacDATA \
+       uninstall-dist_olddevpsfontDATA uninstall-dist_otherdocDATA \
+       uninstall-dist_pdfmarktmacDATA uninstall-dist_tmacDATA \
+       uninstall-dist_tmacmmDATA uninstall-grofferDATA \
+       uninstall-groffoptsDATA uninstall-hdtbltmacDATA \
+       uninstall-htmlpicDATA uninstall-local uninstall-man \
+       uninstall-momhtmlDATA uninstall-nobase_binPROGRAMS \
+       uninstall-nodist_chemexample122DATA \
+       uninstall-nodist_chemexampleDATA \
+       uninstall-nodist_devlj4fontDATA uninstall-nodist_devpsfontDATA \
+       uninstall-nodist_docexamplesDATA \
+       uninstall-nodist_docpdfdocDATA \
+       uninstall-nodist_hdtblexampleDATA \
+       uninstall-nodist_htmlexamplesDATA uninstall-nodist_mdocDATA \
+       uninstall-nodist_momprocessedexampleDATA \
+       uninstall-nodist_otherdocDATA \
+       uninstall-nodist_pdfmarkpdfdocDATA uninstall-nodist_tmacDATA \
+       uninstall-prefixexecbinPROGRAMS uninstall-prefixexecbinSCRIPTS
+       @$(NORMAL_INSTALL)
+       $(MAKE) $(AM_MAKEFLAGS) uninstall-hook
+uninstall-man: uninstall-man1 uninstall-man5 uninstall-man7
+
+.MAKE: all check check-am install install-am install-data-am \
+       install-exec-am install-strip uninstall-am
+
+.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles am--refresh check \
+       check-TESTS check-am clean clean-binPROGRAMS \
+       clean-checkPROGRAMS clean-cscope clean-generic clean-local \
+       clean-nobase_binPROGRAMS clean-noinstLIBRARIES \
+       clean-prefixexecbinPROGRAMS cscope cscopelist-am ctags \
+       ctags-am dist dist-all dist-bzip2 dist-gzip dist-hook \
+       dist-lzip dist-shar dist-tarZ dist-xz dist-zip distcheck \
+       distclean distclean-compile distclean-generic distclean-hdr \
+       distclean-local distclean-tags distcleancheck distdir \
+       distuninstallcheck dvi dvi-am html html-am info info-am \
+       install install-am install-binPROGRAMS install-binSCRIPTS \
+       install-data install-data-am install-data-hook \
+       install-data-local install-devX10012fontDATA \
+       install-devX100fontDATA install-devX7512fontDATA \
+       install-devX75fontDATA install-devasciifontDATA \
+       install-devcp1047fontDATA install-devdvifontDATA \
+       install-devdvigenDATA install-devhtmlfontDATA \
+       install-devlatin1fontDATA install-devlbpfontDATA \
+       install-devpdffontDATA install-devpdffontencDATA \
+       install-devpdffontmapDATA install-devutf8fontDATA \
+       install-dist_binSCRIPTS install-dist_chemexampleDATA \
+       install-dist_chempicDATA install-dist_devlj4fontDATA \
+       install-dist_devlj4fontgenDATA install-dist_devpsfontDATA \
+       install-dist_devpsgenDATA install-dist_docexamplesDATA \
+       install-dist_glilypondDATA install-dist_gpinyinDATA \
+       install-dist_grogDATA install-dist_hdtblexampleDATA \
+       install-dist_localtmacDATA install-dist_mmDATA \
+       install-dist_mmexampleDATA install-dist_momexampleDATA \
+       install-dist_momtmacDATA install-dist_olddevpsfontDATA \
+       install-dist_otherdocDATA install-dist_pdfmarktmacDATA \
+       install-dist_tmacDATA install-dist_tmacmmDATA install-dvi \
+       install-dvi-am install-exec install-exec-am install-exec-hook \
+       install-grofferDATA install-groffoptsDATA \
+       install-hdtbltmacDATA install-html install-html-am \
+       install-html-local install-htmlpicDATA install-info \
+       install-info-am install-man install-man1 install-man5 \
+       install-man7 install-momhtmlDATA install-nobase_binPROGRAMS \
+       install-nodist_chemexample122DATA \
+       install-nodist_chemexampleDATA install-nodist_devlj4fontDATA \
+       install-nodist_devpsfontDATA install-nodist_docexamplesDATA \
+       install-nodist_docpdfdocDATA install-nodist_hdtblexampleDATA \
+       install-nodist_htmlexamplesDATA install-nodist_mdocDATA \
+       install-nodist_momprocessedexampleDATA \
+       install-nodist_otherdocDATA install-nodist_pdfmarkpdfdocDATA \
+       install-nodist_tmacDATA install-pdf install-pdf-am \
+       install-pdf-local install-prefixexecbinPROGRAMS \
+       install-prefixexecbinSCRIPTS install-ps install-ps-am \
+       install-strip installcheck installcheck-am installdirs \
+       maintainer-clean maintainer-clean-generic \
+       maintainer-clean-local mostlyclean mostlyclean-compile \
+       mostlyclean-generic mostlyclean-local pdf pdf-am ps ps-am \
+       recheck tags tags-am uninstall uninstall-am \
+       uninstall-binPROGRAMS uninstall-binSCRIPTS \
+       uninstall-devX10012fontDATA uninstall-devX100fontDATA \
+       uninstall-devX7512fontDATA uninstall-devX75fontDATA \
+       uninstall-devasciifontDATA uninstall-devcp1047fontDATA \
+       uninstall-devdvifontDATA uninstall-devdvigenDATA \
+       uninstall-devhtmlfontDATA uninstall-devlatin1fontDATA \
+       uninstall-devlbpfontDATA uninstall-devpdffontDATA \
+       uninstall-devpdffontencDATA uninstall-devpdffontmapDATA \
+       uninstall-devutf8fontDATA uninstall-dist_binSCRIPTS \
+       uninstall-dist_chemexampleDATA uninstall-dist_chempicDATA \
+       uninstall-dist_devlj4fontDATA uninstall-dist_devlj4fontgenDATA \
+       uninstall-dist_devpsfontDATA uninstall-dist_devpsgenDATA \
+       uninstall-dist_docexamplesDATA uninstall-dist_glilypondDATA \
+       uninstall-dist_gpinyinDATA uninstall-dist_grogDATA \
+       uninstall-dist_hdtblexampleDATA uninstall-dist_localtmacDATA \
+       uninstall-dist_mmDATA uninstall-dist_mmexampleDATA \
+       uninstall-dist_momexampleDATA uninstall-dist_momtmacDATA \
+       uninstall-dist_olddevpsfontDATA uninstall-dist_otherdocDATA \
+       uninstall-dist_pdfmarktmacDATA uninstall-dist_tmacDATA \
+       uninstall-dist_tmacmmDATA uninstall-grofferDATA \
+       uninstall-groffoptsDATA uninstall-hdtbltmacDATA uninstall-hook \
+       uninstall-htmlpicDATA uninstall-local uninstall-man \
+       uninstall-man1 uninstall-man5 uninstall-man7 \
+       uninstall-momhtmlDATA uninstall-nobase_binPROGRAMS \
+       uninstall-nodist_chemexample122DATA \
+       uninstall-nodist_chemexampleDATA \
+       uninstall-nodist_devlj4fontDATA uninstall-nodist_devpsfontDATA \
+       uninstall-nodist_docexamplesDATA \
+       uninstall-nodist_docpdfdocDATA \
+       uninstall-nodist_hdtblexampleDATA \
+       uninstall-nodist_htmlexamplesDATA uninstall-nodist_mdocDATA \
+       uninstall-nodist_momprocessedexampleDATA \
+       uninstall-nodist_otherdocDATA \
+       uninstall-nodist_pdfmarkpdfdocDATA uninstall-nodist_tmacDATA \
+       uninstall-prefixexecbinPROGRAMS uninstall-prefixexecbinSCRIPTS
+
+.PRECIOUS: Makefile
+
+
+# We need the following in order to create <alloca.h> when the system
+# doesn't have one that works with the given compiler.
+@GL_GENERATE_ALLOCA_H_TRUE@lib/alloca.h: lib/alloca.in.h $(top_builddir)/config.status
+@GL_GENERATE_ALLOCA_H_TRUE@    $(AM_V_GEN)rm -f $@-t $@ && \
+@GL_GENERATE_ALLOCA_H_TRUE@    { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+@GL_GENERATE_ALLOCA_H_TRUE@      cat $(top_srcdir)/lib/alloca.in.h; \
+@GL_GENERATE_ALLOCA_H_TRUE@    } > $@-t && \
+@GL_GENERATE_ALLOCA_H_TRUE@    mv -f $@-t $@
+@GL_GENERATE_ALLOCA_H_FALSE@lib/alloca.h: $(top_builddir)/config.status
+@GL_GENERATE_ALLOCA_H_FALSE@   rm -f $@
+
+# We need the following in order to create <errno.h> when the system
+# doesn't have one that is POSIX compliant.
+@GL_GENERATE_ERRNO_H_TRUE@lib/errno.h: lib/errno.in.h $(top_builddir)/config.status
+@GL_GENERATE_ERRNO_H_TRUE@     $(AM_V_GEN)rm -f $@-t $@ && \
+@GL_GENERATE_ERRNO_H_TRUE@     { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+@GL_GENERATE_ERRNO_H_TRUE@       sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+@GL_GENERATE_ERRNO_H_TRUE@           -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+@GL_GENERATE_ERRNO_H_TRUE@           -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+@GL_GENERATE_ERRNO_H_TRUE@           -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+@GL_GENERATE_ERRNO_H_TRUE@           -e 's|@''NEXT_ERRNO_H''@|$(NEXT_ERRNO_H)|g' \
+@GL_GENERATE_ERRNO_H_TRUE@           -e 's|@''EMULTIHOP_HIDDEN''@|$(EMULTIHOP_HIDDEN)|g' \
+@GL_GENERATE_ERRNO_H_TRUE@           -e 's|@''EMULTIHOP_VALUE''@|$(EMULTIHOP_VALUE)|g' \
+@GL_GENERATE_ERRNO_H_TRUE@           -e 's|@''ENOLINK_HIDDEN''@|$(ENOLINK_HIDDEN)|g' \
+@GL_GENERATE_ERRNO_H_TRUE@           -e 's|@''ENOLINK_VALUE''@|$(ENOLINK_VALUE)|g' \
+@GL_GENERATE_ERRNO_H_TRUE@           -e 's|@''EOVERFLOW_HIDDEN''@|$(EOVERFLOW_HIDDEN)|g' \
+@GL_GENERATE_ERRNO_H_TRUE@           -e 's|@''EOVERFLOW_VALUE''@|$(EOVERFLOW_VALUE)|g' \
+@GL_GENERATE_ERRNO_H_TRUE@           < $(top_srcdir)/lib/errno.in.h; \
+@GL_GENERATE_ERRNO_H_TRUE@     } > $@-t && \
+@GL_GENERATE_ERRNO_H_TRUE@     mv $@-t $@
+@GL_GENERATE_ERRNO_H_FALSE@lib/errno.h: $(top_builddir)/config.status
+@GL_GENERATE_ERRNO_H_FALSE@    rm -f $@
+
+# We need the following in order to create <float.h> when the system
+# doesn't have one that works with the given compiler.
+@GL_GENERATE_FLOAT_H_TRUE@lib/float.h: lib/float.in.h $(top_builddir)/config.status
+@GL_GENERATE_FLOAT_H_TRUE@     $(AM_V_GEN)rm -f $@-t $@ && \
+@GL_GENERATE_FLOAT_H_TRUE@     { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+@GL_GENERATE_FLOAT_H_TRUE@       sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+@GL_GENERATE_FLOAT_H_TRUE@           -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+@GL_GENERATE_FLOAT_H_TRUE@           -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+@GL_GENERATE_FLOAT_H_TRUE@           -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+@GL_GENERATE_FLOAT_H_TRUE@           -e 's|@''NEXT_FLOAT_H''@|$(NEXT_FLOAT_H)|g' \
+@GL_GENERATE_FLOAT_H_TRUE@           -e 's|@''REPLACE_ITOLD''@|$(REPLACE_ITOLD)|g' \
+@GL_GENERATE_FLOAT_H_TRUE@           < $(top_srcdir)/lib/float.in.h; \
+@GL_GENERATE_FLOAT_H_TRUE@     } > $@-t && \
+@GL_GENERATE_FLOAT_H_TRUE@     mv $@-t $@
+@GL_GENERATE_FLOAT_H_FALSE@lib/float.h: $(top_builddir)/config.status
+@GL_GENERATE_FLOAT_H_FALSE@    rm -f $@
+
+# We need the following in order to create <limits.h> when the system
+# doesn't have one that is compatible with GNU.
+@GL_GENERATE_LIMITS_H_TRUE@lib/limits.h: lib/limits.in.h $(top_builddir)/config.status
+@GL_GENERATE_LIMITS_H_TRUE@    $(AM_V_GEN)rm -f $@-t $@ && \
+@GL_GENERATE_LIMITS_H_TRUE@    { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+@GL_GENERATE_LIMITS_H_TRUE@      sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+@GL_GENERATE_LIMITS_H_TRUE@          -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+@GL_GENERATE_LIMITS_H_TRUE@          -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+@GL_GENERATE_LIMITS_H_TRUE@          -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+@GL_GENERATE_LIMITS_H_TRUE@          -e 's|@''NEXT_LIMITS_H''@|$(NEXT_LIMITS_H)|g' \
+@GL_GENERATE_LIMITS_H_TRUE@          < $(top_srcdir)/lib/limits.in.h; \
+@GL_GENERATE_LIMITS_H_TRUE@    } > $@-t && \
+@GL_GENERATE_LIMITS_H_TRUE@    mv $@-t $@
+@GL_GENERATE_LIMITS_H_FALSE@lib/limits.h: $(top_builddir)/config.status
+@GL_GENERATE_LIMITS_H_FALSE@   rm -f $@
+
+# We need the following in order to create <math.h> when the system
+# doesn't have one that works with the given compiler.
+lib/math.h: lib/math.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+         sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+             -e 's|@''INCLUDE_NEXT_AS_FIRST_DIRECTIVE''@|$(INCLUDE_NEXT_AS_FIRST_DIRECTIVE)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+             -e 's|@''NEXT_AS_FIRST_DIRECTIVE_MATH_H''@|$(NEXT_AS_FIRST_DIRECTIVE_MATH_H)|g' \
+             -e 's/@''GNULIB_ACOSF''@/$(GNULIB_ACOSF)/g' \
+             -e 's/@''GNULIB_ACOSL''@/$(GNULIB_ACOSL)/g' \
+             -e 's/@''GNULIB_ASINF''@/$(GNULIB_ASINF)/g' \
+             -e 's/@''GNULIB_ASINL''@/$(GNULIB_ASINL)/g' \
+             -e 's/@''GNULIB_ATANF''@/$(GNULIB_ATANF)/g' \
+             -e 's/@''GNULIB_ATANL''@/$(GNULIB_ATANL)/g' \
+             -e 's/@''GNULIB_ATAN2F''@/$(GNULIB_ATAN2F)/g' \
+             -e 's/@''GNULIB_CBRT''@/$(GNULIB_CBRT)/g' \
+             -e 's/@''GNULIB_CBRTF''@/$(GNULIB_CBRTF)/g' \
+             -e 's/@''GNULIB_CBRTL''@/$(GNULIB_CBRTL)/g' \
+             -e 's/@''GNULIB_CEIL''@/$(GNULIB_CEIL)/g' \
+             -e 's/@''GNULIB_CEILF''@/$(GNULIB_CEILF)/g' \
+             -e 's/@''GNULIB_CEILL''@/$(GNULIB_CEILL)/g' \
+             -e 's/@''GNULIB_COPYSIGN''@/$(GNULIB_COPYSIGN)/g' \
+             -e 's/@''GNULIB_COPYSIGNF''@/$(GNULIB_COPYSIGNF)/g' \
+             -e 's/@''GNULIB_COPYSIGNL''@/$(GNULIB_COPYSIGNL)/g' \
+             -e 's/@''GNULIB_COSF''@/$(GNULIB_COSF)/g' \
+             -e 's/@''GNULIB_COSL''@/$(GNULIB_COSL)/g' \
+             -e 's/@''GNULIB_COSHF''@/$(GNULIB_COSHF)/g' \
+             -e 's/@''GNULIB_EXPF''@/$(GNULIB_EXPF)/g' \
+             -e 's/@''GNULIB_EXPL''@/$(GNULIB_EXPL)/g' \
+             -e 's/@''GNULIB_EXP2''@/$(GNULIB_EXP2)/g' \
+             -e 's/@''GNULIB_EXP2F''@/$(GNULIB_EXP2F)/g' \
+             -e 's/@''GNULIB_EXP2L''@/$(GNULIB_EXP2L)/g' \
+             -e 's/@''GNULIB_EXPM1''@/$(GNULIB_EXPM1)/g' \
+             -e 's/@''GNULIB_EXPM1F''@/$(GNULIB_EXPM1F)/g' \
+             -e 's/@''GNULIB_EXPM1L''@/$(GNULIB_EXPM1L)/g' \
+             -e 's/@''GNULIB_FABSF''@/$(GNULIB_FABSF)/g' \
+             -e 's/@''GNULIB_FABSL''@/$(GNULIB_FABSL)/g' \
+             -e 's/@''GNULIB_FLOOR''@/$(GNULIB_FLOOR)/g' \
+             -e 's/@''GNULIB_FLOORF''@/$(GNULIB_FLOORF)/g' \
+             -e 's/@''GNULIB_FLOORL''@/$(GNULIB_FLOORL)/g' \
+             -e 's/@''GNULIB_FMA''@/$(GNULIB_FMA)/g' \
+             -e 's/@''GNULIB_FMAF''@/$(GNULIB_FMAF)/g' \
+             -e 's/@''GNULIB_FMAL''@/$(GNULIB_FMAL)/g' \
+             -e 's/@''GNULIB_FMOD''@/$(GNULIB_FMOD)/g' \
+             -e 's/@''GNULIB_FMODF''@/$(GNULIB_FMODF)/g' \
+             -e 's/@''GNULIB_FMODL''@/$(GNULIB_FMODL)/g' \
+             -e 's/@''GNULIB_FREXPF''@/$(GNULIB_FREXPF)/g' \
+             -e 's/@''GNULIB_FREXP''@/$(GNULIB_FREXP)/g' \
+             -e 's/@''GNULIB_FREXPL''@/$(GNULIB_FREXPL)/g' \
+             -e 's/@''GNULIB_HYPOT''@/$(GNULIB_HYPOT)/g' \
+             -e 's/@''GNULIB_HYPOTF''@/$(GNULIB_HYPOTF)/g' \
+             -e 's/@''GNULIB_HYPOTL''@/$(GNULIB_HYPOTL)/g' \
+             < $(top_srcdir)/lib/math.in.h | \
+         sed -e 's/@''GNULIB_ILOGB''@/$(GNULIB_ILOGB)/g' \
+             -e 's/@''GNULIB_ILOGBF''@/$(GNULIB_ILOGBF)/g' \
+             -e 's/@''GNULIB_ILOGBL''@/$(GNULIB_ILOGBL)/g' \
+             -e 's/@''GNULIB_ISFINITE''@/$(GNULIB_ISFINITE)/g' \
+             -e 's/@''GNULIB_ISINF''@/$(GNULIB_ISINF)/g' \
+             -e 's/@''GNULIB_ISNAN''@/$(GNULIB_ISNAN)/g' \
+             -e 's/@''GNULIB_ISNANF''@/$(GNULIB_ISNANF)/g' \
+             -e 's/@''GNULIB_ISNAND''@/$(GNULIB_ISNAND)/g' \
+             -e 's/@''GNULIB_ISNANL''@/$(GNULIB_ISNANL)/g' \
+             -e 's/@''GNULIB_LDEXPF''@/$(GNULIB_LDEXPF)/g' \
+             -e 's/@''GNULIB_LDEXPL''@/$(GNULIB_LDEXPL)/g' \
+             -e 's/@''GNULIB_LOG''@/$(GNULIB_LOG)/g' \
+             -e 's/@''GNULIB_LOGF''@/$(GNULIB_LOGF)/g' \
+             -e 's/@''GNULIB_LOGL''@/$(GNULIB_LOGL)/g' \
+             -e 's/@''GNULIB_LOG10''@/$(GNULIB_LOG10)/g' \
+             -e 's/@''GNULIB_LOG10F''@/$(GNULIB_LOG10F)/g' \
+             -e 's/@''GNULIB_LOG10L''@/$(GNULIB_LOG10L)/g' \
+             -e 's/@''GNULIB_LOG1P''@/$(GNULIB_LOG1P)/g' \
+             -e 's/@''GNULIB_LOG1PF''@/$(GNULIB_LOG1PF)/g' \
+             -e 's/@''GNULIB_LOG1PL''@/$(GNULIB_LOG1PL)/g' \
+             -e 's/@''GNULIB_LOG2''@/$(GNULIB_LOG2)/g' \
+             -e 's/@''GNULIB_LOG2F''@/$(GNULIB_LOG2F)/g' \
+             -e 's/@''GNULIB_LOG2L''@/$(GNULIB_LOG2L)/g' \
+             -e 's/@''GNULIB_LOGB''@/$(GNULIB_LOGB)/g' \
+             -e 's/@''GNULIB_LOGBF''@/$(GNULIB_LOGBF)/g' \
+             -e 's/@''GNULIB_LOGBL''@/$(GNULIB_LOGBL)/g' \
+             -e 's/@''GNULIB_MODF''@/$(GNULIB_MODF)/g' \
+             -e 's/@''GNULIB_MODFF''@/$(GNULIB_MODFF)/g' \
+             -e 's/@''GNULIB_MODFL''@/$(GNULIB_MODFL)/g' \
+             -e 's/@''GNULIB_POWF''@/$(GNULIB_POWF)/g' \
+             -e 's/@''GNULIB_REMAINDER''@/$(GNULIB_REMAINDER)/g' \
+             -e 's/@''GNULIB_REMAINDERF''@/$(GNULIB_REMAINDERF)/g' \
+             -e 's/@''GNULIB_REMAINDERL''@/$(GNULIB_REMAINDERL)/g' \
+             -e 's/@''GNULIB_RINT''@/$(GNULIB_RINT)/g' \
+             -e 's/@''GNULIB_RINTF''@/$(GNULIB_RINTF)/g' \
+             -e 's/@''GNULIB_RINTL''@/$(GNULIB_RINTL)/g' \
+             -e 's/@''GNULIB_ROUND''@/$(GNULIB_ROUND)/g' \
+             -e 's/@''GNULIB_ROUNDF''@/$(GNULIB_ROUNDF)/g' \
+             -e 's/@''GNULIB_ROUNDL''@/$(GNULIB_ROUNDL)/g' \
+             -e 's/@''GNULIB_SIGNBIT''@/$(GNULIB_SIGNBIT)/g' \
+             -e 's/@''GNULIB_SINF''@/$(GNULIB_SINF)/g' \
+             -e 's/@''GNULIB_SINL''@/$(GNULIB_SINL)/g' \
+             -e 's/@''GNULIB_SINHF''@/$(GNULIB_SINHF)/g' \
+             -e 's/@''GNULIB_SQRTF''@/$(GNULIB_SQRTF)/g' \
+             -e 's/@''GNULIB_SQRTL''@/$(GNULIB_SQRTL)/g' \
+             -e 's/@''GNULIB_TANF''@/$(GNULIB_TANF)/g' \
+             -e 's/@''GNULIB_TANL''@/$(GNULIB_TANL)/g' \
+             -e 's/@''GNULIB_TANHF''@/$(GNULIB_TANHF)/g' \
+             -e 's/@''GNULIB_TRUNC''@/$(GNULIB_TRUNC)/g' \
+             -e 's/@''GNULIB_TRUNCF''@/$(GNULIB_TRUNCF)/g' \
+             -e 's/@''GNULIB_TRUNCL''@/$(GNULIB_TRUNCL)/g' \
+         | \
+         sed -e 's|@''HAVE_ACOSF''@|$(HAVE_ACOSF)|g' \
+             -e 's|@''HAVE_ACOSL''@|$(HAVE_ACOSL)|g' \
+             -e 's|@''HAVE_ASINF''@|$(HAVE_ASINF)|g' \
+             -e 's|@''HAVE_ASINL''@|$(HAVE_ASINL)|g' \
+             -e 's|@''HAVE_ATANF''@|$(HAVE_ATANF)|g' \
+             -e 's|@''HAVE_ATANL''@|$(HAVE_ATANL)|g' \
+             -e 's|@''HAVE_ATAN2F''@|$(HAVE_ATAN2F)|g' \
+             -e 's|@''HAVE_CBRT''@|$(HAVE_CBRT)|g' \
+             -e 's|@''HAVE_CBRTF''@|$(HAVE_CBRTF)|g' \
+             -e 's|@''HAVE_CBRTL''@|$(HAVE_CBRTL)|g' \
+             -e 's|@''HAVE_COPYSIGN''@|$(HAVE_COPYSIGN)|g' \
+             -e 's|@''HAVE_COPYSIGNL''@|$(HAVE_COPYSIGNL)|g' \
+             -e 's|@''HAVE_COSF''@|$(HAVE_COSF)|g' \
+             -e 's|@''HAVE_COSL''@|$(HAVE_COSL)|g' \
+             -e 's|@''HAVE_COSHF''@|$(HAVE_COSHF)|g' \
+             -e 's|@''HAVE_EXPF''@|$(HAVE_EXPF)|g' \
+             -e 's|@''HAVE_EXPL''@|$(HAVE_EXPL)|g' \
+             -e 's|@''HAVE_EXPM1''@|$(HAVE_EXPM1)|g' \
+             -e 's|@''HAVE_EXPM1F''@|$(HAVE_EXPM1F)|g' \
+             -e 's|@''HAVE_FABSF''@|$(HAVE_FABSF)|g' \
+             -e 's|@''HAVE_FABSL''@|$(HAVE_FABSL)|g' \
+             -e 's|@''HAVE_FMA''@|$(HAVE_FMA)|g' \
+             -e 's|@''HAVE_FMAF''@|$(HAVE_FMAF)|g' \
+             -e 's|@''HAVE_FMAL''@|$(HAVE_FMAL)|g' \
+             -e 's|@''HAVE_FMODF''@|$(HAVE_FMODF)|g' \
+             -e 's|@''HAVE_FMODL''@|$(HAVE_FMODL)|g' \
+             -e 's|@''HAVE_FREXPF''@|$(HAVE_FREXPF)|g' \
+             -e 's|@''HAVE_HYPOTF''@|$(HAVE_HYPOTF)|g' \
+             -e 's|@''HAVE_HYPOTL''@|$(HAVE_HYPOTL)|g' \
+             -e 's|@''HAVE_ILOGB''@|$(HAVE_ILOGB)|g' \
+             -e 's|@''HAVE_ILOGBF''@|$(HAVE_ILOGBF)|g' \
+             -e 's|@''HAVE_ILOGBL''@|$(HAVE_ILOGBL)|g' \
+             -e 's|@''HAVE_ISNANF''@|$(HAVE_ISNANF)|g' \
+             -e 's|@''HAVE_ISNAND''@|$(HAVE_ISNAND)|g' \
+             -e 's|@''HAVE_ISNANL''@|$(HAVE_ISNANL)|g' \
+             -e 's|@''HAVE_LDEXPF''@|$(HAVE_LDEXPF)|g' \
+             -e 's|@''HAVE_LOGF''@|$(HAVE_LOGF)|g' \
+             -e 's|@''HAVE_LOGL''@|$(HAVE_LOGL)|g' \
+             -e 's|@''HAVE_LOG10F''@|$(HAVE_LOG10F)|g' \
+             -e 's|@''HAVE_LOG10L''@|$(HAVE_LOG10L)|g' \
+             -e 's|@''HAVE_LOG1P''@|$(HAVE_LOG1P)|g' \
+             -e 's|@''HAVE_LOG1PF''@|$(HAVE_LOG1PF)|g' \
+             -e 's|@''HAVE_LOG1PL''@|$(HAVE_LOG1PL)|g' \
+             -e 's|@''HAVE_LOGBF''@|$(HAVE_LOGBF)|g' \
+             -e 's|@''HAVE_LOGBL''@|$(HAVE_LOGBL)|g' \
+             -e 's|@''HAVE_MODFF''@|$(HAVE_MODFF)|g' \
+             -e 's|@''HAVE_MODFL''@|$(HAVE_MODFL)|g' \
+             -e 's|@''HAVE_POWF''@|$(HAVE_POWF)|g' \
+             -e 's|@''HAVE_REMAINDER''@|$(HAVE_REMAINDER)|g' \
+             -e 's|@''HAVE_REMAINDERF''@|$(HAVE_REMAINDERF)|g' \
+             -e 's|@''HAVE_RINT''@|$(HAVE_RINT)|g' \
+             -e 's|@''HAVE_RINTL''@|$(HAVE_RINTL)|g' \
+             -e 's|@''HAVE_SINF''@|$(HAVE_SINF)|g' \
+             -e 's|@''HAVE_SINL''@|$(HAVE_SINL)|g' \
+             -e 's|@''HAVE_SINHF''@|$(HAVE_SINHF)|g' \
+             -e 's|@''HAVE_SQRTF''@|$(HAVE_SQRTF)|g' \
+             -e 's|@''HAVE_SQRTL''@|$(HAVE_SQRTL)|g' \
+             -e 's|@''HAVE_TANF''@|$(HAVE_TANF)|g' \
+             -e 's|@''HAVE_TANL''@|$(HAVE_TANL)|g' \
+             -e 's|@''HAVE_TANHF''@|$(HAVE_TANHF)|g' \
+             -e 's|@''HAVE_DECL_ACOSL''@|$(HAVE_DECL_ACOSL)|g' \
+             -e 's|@''HAVE_DECL_ASINL''@|$(HAVE_DECL_ASINL)|g' \
+             -e 's|@''HAVE_DECL_ATANL''@|$(HAVE_DECL_ATANL)|g' \
+             -e 's|@''HAVE_DECL_CBRTF''@|$(HAVE_DECL_CBRTF)|g' \
+             -e 's|@''HAVE_DECL_CBRTL''@|$(HAVE_DECL_CBRTL)|g' \
+             -e 's|@''HAVE_DECL_CEILF''@|$(HAVE_DECL_CEILF)|g' \
+             -e 's|@''HAVE_DECL_CEILL''@|$(HAVE_DECL_CEILL)|g' \
+             -e 's|@''HAVE_DECL_COPYSIGNF''@|$(HAVE_DECL_COPYSIGNF)|g' \
+             -e 's|@''HAVE_DECL_COSL''@|$(HAVE_DECL_COSL)|g' \
+             -e 's|@''HAVE_DECL_EXPL''@|$(HAVE_DECL_EXPL)|g' \
+             -e 's|@''HAVE_DECL_EXP2''@|$(HAVE_DECL_EXP2)|g' \
+             -e 's|@''HAVE_DECL_EXP2F''@|$(HAVE_DECL_EXP2F)|g' \
+             -e 's|@''HAVE_DECL_EXP2L''@|$(HAVE_DECL_EXP2L)|g' \
+             -e 's|@''HAVE_DECL_EXPM1L''@|$(HAVE_DECL_EXPM1L)|g' \
+             -e 's|@''HAVE_DECL_FLOORF''@|$(HAVE_DECL_FLOORF)|g' \
+             -e 's|@''HAVE_DECL_FLOORL''@|$(HAVE_DECL_FLOORL)|g' \
+             -e 's|@''HAVE_DECL_FREXPL''@|$(HAVE_DECL_FREXPL)|g' \
+             -e 's|@''HAVE_DECL_LDEXPL''@|$(HAVE_DECL_LDEXPL)|g' \
+             -e 's|@''HAVE_DECL_LOGL''@|$(HAVE_DECL_LOGL)|g' \
+             -e 's|@''HAVE_DECL_LOG10L''@|$(HAVE_DECL_LOG10L)|g' \
+             -e 's|@''HAVE_DECL_LOG2''@|$(HAVE_DECL_LOG2)|g' \
+             -e 's|@''HAVE_DECL_LOG2F''@|$(HAVE_DECL_LOG2F)|g' \
+             -e 's|@''HAVE_DECL_LOG2L''@|$(HAVE_DECL_LOG2L)|g' \
+             -e 's|@''HAVE_DECL_LOGB''@|$(HAVE_DECL_LOGB)|g' \
+             -e 's|@''HAVE_DECL_REMAINDER''@|$(HAVE_DECL_REMAINDER)|g' \
+             -e 's|@''HAVE_DECL_REMAINDERL''@|$(HAVE_DECL_REMAINDERL)|g' \
+             -e 's|@''HAVE_DECL_RINTF''@|$(HAVE_DECL_RINTF)|g' \
+             -e 's|@''HAVE_DECL_ROUND''@|$(HAVE_DECL_ROUND)|g' \
+             -e 's|@''HAVE_DECL_ROUNDF''@|$(HAVE_DECL_ROUNDF)|g' \
+             -e 's|@''HAVE_DECL_ROUNDL''@|$(HAVE_DECL_ROUNDL)|g' \
+             -e 's|@''HAVE_DECL_SINL''@|$(HAVE_DECL_SINL)|g' \
+             -e 's|@''HAVE_DECL_SQRTL''@|$(HAVE_DECL_SQRTL)|g' \
+             -e 's|@''HAVE_DECL_TANL''@|$(HAVE_DECL_TANL)|g' \
+             -e 's|@''HAVE_DECL_TRUNC''@|$(HAVE_DECL_TRUNC)|g' \
+             -e 's|@''HAVE_DECL_TRUNCF''@|$(HAVE_DECL_TRUNCF)|g' \
+             -e 's|@''HAVE_DECL_TRUNCL''@|$(HAVE_DECL_TRUNCL)|g' \
+         | \
+         sed -e 's|@''REPLACE_ACOSF''@|$(REPLACE_ACOSF)|g' \
+             -e 's|@''REPLACE_ASINF''@|$(REPLACE_ASINF)|g' \
+             -e 's|@''REPLACE_ATANF''@|$(REPLACE_ATANF)|g' \
+             -e 's|@''REPLACE_ATAN2F''@|$(REPLACE_ATAN2F)|g' \
+             -e 's|@''REPLACE_CBRTF''@|$(REPLACE_CBRTF)|g' \
+             -e 's|@''REPLACE_CBRTL''@|$(REPLACE_CBRTL)|g' \
+             -e 's|@''REPLACE_CEIL''@|$(REPLACE_CEIL)|g' \
+             -e 's|@''REPLACE_CEILF''@|$(REPLACE_CEILF)|g' \
+             -e 's|@''REPLACE_CEILL''@|$(REPLACE_CEILL)|g' \
+             -e 's|@''REPLACE_COSF''@|$(REPLACE_COSF)|g' \
+             -e 's|@''REPLACE_COSHF''@|$(REPLACE_COSHF)|g' \
+             -e 's|@''REPLACE_EXPF''@|$(REPLACE_EXPF)|g' \
+             -e 's|@''REPLACE_EXPM1''@|$(REPLACE_EXPM1)|g' \
+             -e 's|@''REPLACE_EXPM1F''@|$(REPLACE_EXPM1F)|g' \
+             -e 's|@''REPLACE_EXP2''@|$(REPLACE_EXP2)|g' \
+             -e 's|@''REPLACE_EXP2L''@|$(REPLACE_EXP2L)|g' \
+             -e 's|@''REPLACE_FABSL''@|$(REPLACE_FABSL)|g' \
+             -e 's|@''REPLACE_FLOOR''@|$(REPLACE_FLOOR)|g' \
+             -e 's|@''REPLACE_FLOORF''@|$(REPLACE_FLOORF)|g' \
+             -e 's|@''REPLACE_FLOORL''@|$(REPLACE_FLOORL)|g' \
+             -e 's|@''REPLACE_FMA''@|$(REPLACE_FMA)|g' \
+             -e 's|@''REPLACE_FMAF''@|$(REPLACE_FMAF)|g' \
+             -e 's|@''REPLACE_FMAL''@|$(REPLACE_FMAL)|g' \
+             -e 's|@''REPLACE_FMOD''@|$(REPLACE_FMOD)|g' \
+             -e 's|@''REPLACE_FMODF''@|$(REPLACE_FMODF)|g' \
+             -e 's|@''REPLACE_FMODL''@|$(REPLACE_FMODL)|g' \
+             -e 's|@''REPLACE_FREXPF''@|$(REPLACE_FREXPF)|g' \
+             -e 's|@''REPLACE_FREXP''@|$(REPLACE_FREXP)|g' \
+             -e 's|@''REPLACE_FREXPL''@|$(REPLACE_FREXPL)|g' \
+             -e 's|@''REPLACE_HUGE_VAL''@|$(REPLACE_HUGE_VAL)|g' \
+             -e 's|@''REPLACE_HYPOT''@|$(REPLACE_HYPOT)|g' \
+             -e 's|@''REPLACE_HYPOTF''@|$(REPLACE_HYPOTF)|g' \
+             -e 's|@''REPLACE_HYPOTL''@|$(REPLACE_HYPOTL)|g' \
+             -e 's|@''REPLACE_ILOGB''@|$(REPLACE_ILOGB)|g' \
+             -e 's|@''REPLACE_ILOGBF''@|$(REPLACE_ILOGBF)|g' \
+             -e 's|@''REPLACE_ILOGBL''@|$(REPLACE_ILOGBL)|g' \
+             -e 's|@''REPLACE_ISFINITE''@|$(REPLACE_ISFINITE)|g' \
+             -e 's|@''REPLACE_ISINF''@|$(REPLACE_ISINF)|g' \
+             -e 's|@''REPLACE_ISNAN''@|$(REPLACE_ISNAN)|g' \
+             -e 's|@''REPLACE_ITOLD''@|$(REPLACE_ITOLD)|g' \
+             -e 's|@''REPLACE_LDEXPL''@|$(REPLACE_LDEXPL)|g' \
+             -e 's|@''REPLACE_LOG''@|$(REPLACE_LOG)|g' \
+             -e 's|@''REPLACE_LOGF''@|$(REPLACE_LOGF)|g' \
+             -e 's|@''REPLACE_LOGL''@|$(REPLACE_LOGL)|g' \
+             -e 's|@''REPLACE_LOG10''@|$(REPLACE_LOG10)|g' \
+             -e 's|@''REPLACE_LOG10F''@|$(REPLACE_LOG10F)|g' \
+             -e 's|@''REPLACE_LOG10L''@|$(REPLACE_LOG10L)|g' \
+             -e 's|@''REPLACE_LOG1P''@|$(REPLACE_LOG1P)|g' \
+             -e 's|@''REPLACE_LOG1PF''@|$(REPLACE_LOG1PF)|g' \
+             -e 's|@''REPLACE_LOG1PL''@|$(REPLACE_LOG1PL)|g' \
+             -e 's|@''REPLACE_LOG2''@|$(REPLACE_LOG2)|g' \
+             -e 's|@''REPLACE_LOG2F''@|$(REPLACE_LOG2F)|g' \
+             -e 's|@''REPLACE_LOG2L''@|$(REPLACE_LOG2L)|g' \
+             -e 's|@''REPLACE_LOGB''@|$(REPLACE_LOGB)|g' \
+             -e 's|@''REPLACE_LOGBF''@|$(REPLACE_LOGBF)|g' \
+             -e 's|@''REPLACE_LOGBL''@|$(REPLACE_LOGBL)|g' \
+             -e 's|@''REPLACE_MODF''@|$(REPLACE_MODF)|g' \
+             -e 's|@''REPLACE_MODFF''@|$(REPLACE_MODFF)|g' \
+             -e 's|@''REPLACE_MODFL''@|$(REPLACE_MODFL)|g' \
+             -e 's|@''REPLACE_NAN''@|$(REPLACE_NAN)|g' \
+             -e 's|@''REPLACE_REMAINDER''@|$(REPLACE_REMAINDER)|g' \
+             -e 's|@''REPLACE_REMAINDERF''@|$(REPLACE_REMAINDERF)|g' \
+             -e 's|@''REPLACE_REMAINDERL''@|$(REPLACE_REMAINDERL)|g' \
+             -e 's|@''REPLACE_ROUND''@|$(REPLACE_ROUND)|g' \
+             -e 's|@''REPLACE_ROUNDF''@|$(REPLACE_ROUNDF)|g' \
+             -e 's|@''REPLACE_ROUNDL''@|$(REPLACE_ROUNDL)|g' \
+             -e 's|@''REPLACE_SIGNBIT''@|$(REPLACE_SIGNBIT)|g' \
+             -e 's|@''REPLACE_SIGNBIT_USING_GCC''@|$(REPLACE_SIGNBIT_USING_GCC)|g' \
+             -e 's|@''REPLACE_SINF''@|$(REPLACE_SINF)|g' \
+             -e 's|@''REPLACE_SINHF''@|$(REPLACE_SINHF)|g' \
+             -e 's|@''REPLACE_SQRTF''@|$(REPLACE_SQRTF)|g' \
+             -e 's|@''REPLACE_SQRTL''@|$(REPLACE_SQRTL)|g' \
+             -e 's|@''REPLACE_TANF''@|$(REPLACE_TANF)|g' \
+             -e 's|@''REPLACE_TANHF''@|$(REPLACE_TANHF)|g' \
+             -e 's|@''REPLACE_TRUNC''@|$(REPLACE_TRUNC)|g' \
+             -e 's|@''REPLACE_TRUNCF''@|$(REPLACE_TRUNCF)|g' \
+             -e 's|@''REPLACE_TRUNCL''@|$(REPLACE_TRUNCL)|g' \
+             -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
+             -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
+             -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \
+       } > $@-t && \
+       mv $@-t $@
+
+# We need the following in order to create <stddef.h> when the system
+# doesn't have one that works with the given compiler.
+@GL_GENERATE_STDDEF_H_TRUE@lib/stddef.h: lib/stddef.in.h $(top_builddir)/config.status
+@GL_GENERATE_STDDEF_H_TRUE@    $(AM_V_GEN)rm -f $@-t $@ && \
+@GL_GENERATE_STDDEF_H_TRUE@    { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+@GL_GENERATE_STDDEF_H_TRUE@      sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+@GL_GENERATE_STDDEF_H_TRUE@          -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+@GL_GENERATE_STDDEF_H_TRUE@          -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+@GL_GENERATE_STDDEF_H_TRUE@          -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+@GL_GENERATE_STDDEF_H_TRUE@          -e 's|@''NEXT_STDDEF_H''@|$(NEXT_STDDEF_H)|g' \
+@GL_GENERATE_STDDEF_H_TRUE@          -e 's|@''HAVE_MAX_ALIGN_T''@|$(HAVE_MAX_ALIGN_T)|g' \
+@GL_GENERATE_STDDEF_H_TRUE@          -e 's|@''HAVE_WCHAR_T''@|$(HAVE_WCHAR_T)|g' \
+@GL_GENERATE_STDDEF_H_TRUE@          -e 's|@''REPLACE_NULL''@|$(REPLACE_NULL)|g' \
+@GL_GENERATE_STDDEF_H_TRUE@          < $(top_srcdir)/lib/stddef.in.h; \
+@GL_GENERATE_STDDEF_H_TRUE@    } > $@-t && \
+@GL_GENERATE_STDDEF_H_TRUE@    mv $@-t $@
+@GL_GENERATE_STDDEF_H_FALSE@lib/stddef.h: $(top_builddir)/config.status
+@GL_GENERATE_STDDEF_H_FALSE@   rm -f $@
+
+# We need the following in order to create <stdint.h> when the system
+# doesn't have one that works with the given compiler.
+@GL_GENERATE_STDINT_H_TRUE@lib/stdint.h: lib/stdint.in.h $(top_builddir)/config.status
+@GL_GENERATE_STDINT_H_TRUE@    $(AM_V_GEN)rm -f $@-t $@ && \
+@GL_GENERATE_STDINT_H_TRUE@    { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+@GL_GENERATE_STDINT_H_TRUE@      sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+@GL_GENERATE_STDINT_H_TRUE@          -e 's/@''HAVE_STDINT_H''@/$(HAVE_STDINT_H)/g' \
+@GL_GENERATE_STDINT_H_TRUE@          -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+@GL_GENERATE_STDINT_H_TRUE@          -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+@GL_GENERATE_STDINT_H_TRUE@          -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+@GL_GENERATE_STDINT_H_TRUE@          -e 's|@''NEXT_STDINT_H''@|$(NEXT_STDINT_H)|g' \
+@GL_GENERATE_STDINT_H_TRUE@          -e 's/@''HAVE_C99_STDINT_H''@/$(HAVE_C99_STDINT_H)/g' \
+@GL_GENERATE_STDINT_H_TRUE@          -e 's/@''HAVE_SYS_TYPES_H''@/$(HAVE_SYS_TYPES_H)/g' \
+@GL_GENERATE_STDINT_H_TRUE@          -e 's/@''HAVE_INTTYPES_H''@/$(HAVE_INTTYPES_H)/g' \
+@GL_GENERATE_STDINT_H_TRUE@          -e 's/@''HAVE_SYS_INTTYPES_H''@/$(HAVE_SYS_INTTYPES_H)/g' \
+@GL_GENERATE_STDINT_H_TRUE@          -e 's/@''HAVE_SYS_BITYPES_H''@/$(HAVE_SYS_BITYPES_H)/g' \
+@GL_GENERATE_STDINT_H_TRUE@          -e 's/@''HAVE_WCHAR_H''@/$(HAVE_WCHAR_H)/g' \
+@GL_GENERATE_STDINT_H_TRUE@          -e 's/@''HAVE_LONG_LONG_INT''@/$(HAVE_LONG_LONG_INT)/g' \
+@GL_GENERATE_STDINT_H_TRUE@          -e 's/@''HAVE_UNSIGNED_LONG_LONG_INT''@/$(HAVE_UNSIGNED_LONG_LONG_INT)/g' \
+@GL_GENERATE_STDINT_H_TRUE@          -e 's/@''APPLE_UNIVERSAL_BUILD''@/$(APPLE_UNIVERSAL_BUILD)/g' \
+@GL_GENERATE_STDINT_H_TRUE@          -e 's/@''BITSIZEOF_PTRDIFF_T''@/$(BITSIZEOF_PTRDIFF_T)/g' \
+@GL_GENERATE_STDINT_H_TRUE@          -e 's/@''PTRDIFF_T_SUFFIX''@/$(PTRDIFF_T_SUFFIX)/g' \
+@GL_GENERATE_STDINT_H_TRUE@          -e 's/@''BITSIZEOF_SIG_ATOMIC_T''@/$(BITSIZEOF_SIG_ATOMIC_T)/g' \
+@GL_GENERATE_STDINT_H_TRUE@          -e 's/@''HAVE_SIGNED_SIG_ATOMIC_T''@/$(HAVE_SIGNED_SIG_ATOMIC_T)/g' \
+@GL_GENERATE_STDINT_H_TRUE@          -e 's/@''SIG_ATOMIC_T_SUFFIX''@/$(SIG_ATOMIC_T_SUFFIX)/g' \
+@GL_GENERATE_STDINT_H_TRUE@          -e 's/@''BITSIZEOF_SIZE_T''@/$(BITSIZEOF_SIZE_T)/g' \
+@GL_GENERATE_STDINT_H_TRUE@          -e 's/@''SIZE_T_SUFFIX''@/$(SIZE_T_SUFFIX)/g' \
+@GL_GENERATE_STDINT_H_TRUE@          -e 's/@''BITSIZEOF_WCHAR_T''@/$(BITSIZEOF_WCHAR_T)/g' \
+@GL_GENERATE_STDINT_H_TRUE@          -e 's/@''HAVE_SIGNED_WCHAR_T''@/$(HAVE_SIGNED_WCHAR_T)/g' \
+@GL_GENERATE_STDINT_H_TRUE@          -e 's/@''WCHAR_T_SUFFIX''@/$(WCHAR_T_SUFFIX)/g' \
+@GL_GENERATE_STDINT_H_TRUE@          -e 's/@''BITSIZEOF_WINT_T''@/$(BITSIZEOF_WINT_T)/g' \
+@GL_GENERATE_STDINT_H_TRUE@          -e 's/@''HAVE_SIGNED_WINT_T''@/$(HAVE_SIGNED_WINT_T)/g' \
+@GL_GENERATE_STDINT_H_TRUE@          -e 's/@''WINT_T_SUFFIX''@/$(WINT_T_SUFFIX)/g' \
+@GL_GENERATE_STDINT_H_TRUE@          -e 's/@''GNULIB_OVERRIDES_WINT_T''@/$(GNULIB_OVERRIDES_WINT_T)/g' \
+@GL_GENERATE_STDINT_H_TRUE@          < $(top_srcdir)/lib/stdint.in.h; \
+@GL_GENERATE_STDINT_H_TRUE@    } > $@-t && \
+@GL_GENERATE_STDINT_H_TRUE@    mv $@-t $@
+@GL_GENERATE_STDINT_H_FALSE@lib/stdint.h: $(top_builddir)/config.status
+@GL_GENERATE_STDINT_H_FALSE@   rm -f $@
+
+# We need the following in order to create <stdio.h> when the system
+# doesn't have one that works with the given compiler.
+lib/stdio.h: lib/stdio.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+         sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+             -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+             -e 's|@''NEXT_STDIO_H''@|$(NEXT_STDIO_H)|g' \
+             -e 's/@''GNULIB_DPRINTF''@/$(GNULIB_DPRINTF)/g' \
+             -e 's/@''GNULIB_FCLOSE''@/$(GNULIB_FCLOSE)/g' \
+             -e 's/@''GNULIB_FDOPEN''@/$(GNULIB_FDOPEN)/g' \
+             -e 's/@''GNULIB_FFLUSH''@/$(GNULIB_FFLUSH)/g' \
+             -e 's/@''GNULIB_FGETC''@/$(GNULIB_FGETC)/g' \
+             -e 's/@''GNULIB_FGETS''@/$(GNULIB_FGETS)/g' \
+             -e 's/@''GNULIB_FOPEN''@/$(GNULIB_FOPEN)/g' \
+             -e 's/@''GNULIB_FPRINTF''@/$(GNULIB_FPRINTF)/g' \
+             -e 's/@''GNULIB_FPRINTF_POSIX''@/$(GNULIB_FPRINTF_POSIX)/g' \
+             -e 's/@''GNULIB_FPURGE''@/$(GNULIB_FPURGE)/g' \
+             -e 's/@''GNULIB_FPUTC''@/$(GNULIB_FPUTC)/g' \
+             -e 's/@''GNULIB_FPUTS''@/$(GNULIB_FPUTS)/g' \
+             -e 's/@''GNULIB_FREAD''@/$(GNULIB_FREAD)/g' \
+             -e 's/@''GNULIB_FREOPEN''@/$(GNULIB_FREOPEN)/g' \
+             -e 's/@''GNULIB_FSCANF''@/$(GNULIB_FSCANF)/g' \
+             -e 's/@''GNULIB_FSEEK''@/$(GNULIB_FSEEK)/g' \
+             -e 's/@''GNULIB_FSEEKO''@/$(GNULIB_FSEEKO)/g' \
+             -e 's/@''GNULIB_FTELL''@/$(GNULIB_FTELL)/g' \
+             -e 's/@''GNULIB_FTELLO''@/$(GNULIB_FTELLO)/g' \
+             -e 's/@''GNULIB_FWRITE''@/$(GNULIB_FWRITE)/g' \
+             -e 's/@''GNULIB_GETC''@/$(GNULIB_GETC)/g' \
+             -e 's/@''GNULIB_GETCHAR''@/$(GNULIB_GETCHAR)/g' \
+             -e 's/@''GNULIB_GETDELIM''@/$(GNULIB_GETDELIM)/g' \
+             -e 's/@''GNULIB_GETLINE''@/$(GNULIB_GETLINE)/g' \
+             -e 's/@''GNULIB_OBSTACK_PRINTF''@/$(GNULIB_OBSTACK_PRINTF)/g' \
+             -e 's/@''GNULIB_OBSTACK_PRINTF_POSIX''@/$(GNULIB_OBSTACK_PRINTF_POSIX)/g' \
+             -e 's/@''GNULIB_PCLOSE''@/$(GNULIB_PCLOSE)/g' \
+             -e 's/@''GNULIB_PERROR''@/$(GNULIB_PERROR)/g' \
+             -e 's/@''GNULIB_POPEN''@/$(GNULIB_POPEN)/g' \
+             -e 's/@''GNULIB_PRINTF''@/$(GNULIB_PRINTF)/g' \
+             -e 's/@''GNULIB_PRINTF_POSIX''@/$(GNULIB_PRINTF_POSIX)/g' \
+             -e 's/@''GNULIB_PUTC''@/$(GNULIB_PUTC)/g' \
+             -e 's/@''GNULIB_PUTCHAR''@/$(GNULIB_PUTCHAR)/g' \
+             -e 's/@''GNULIB_PUTS''@/$(GNULIB_PUTS)/g' \
+             -e 's/@''GNULIB_REMOVE''@/$(GNULIB_REMOVE)/g' \
+             -e 's/@''GNULIB_RENAME''@/$(GNULIB_RENAME)/g' \
+             -e 's/@''GNULIB_RENAMEAT''@/$(GNULIB_RENAMEAT)/g' \
+             -e 's/@''GNULIB_SCANF''@/$(GNULIB_SCANF)/g' \
+             -e 's/@''GNULIB_SNPRINTF''@/$(GNULIB_SNPRINTF)/g' \
+             -e 's/@''GNULIB_SPRINTF_POSIX''@/$(GNULIB_SPRINTF_POSIX)/g' \
+             -e 's/@''GNULIB_STDIO_H_NONBLOCKING''@/$(GNULIB_STDIO_H_NONBLOCKING)/g' \
+             -e 's/@''GNULIB_STDIO_H_SIGPIPE''@/$(GNULIB_STDIO_H_SIGPIPE)/g' \
+             -e 's/@''GNULIB_TMPFILE''@/$(GNULIB_TMPFILE)/g' \
+             -e 's/@''GNULIB_VASPRINTF''@/$(GNULIB_VASPRINTF)/g' \
+             -e 's/@''GNULIB_VDPRINTF''@/$(GNULIB_VDPRINTF)/g' \
+             -e 's/@''GNULIB_VFPRINTF''@/$(GNULIB_VFPRINTF)/g' \
+             -e 's/@''GNULIB_VFPRINTF_POSIX''@/$(GNULIB_VFPRINTF_POSIX)/g' \
+             -e 's/@''GNULIB_VFSCANF''@/$(GNULIB_VFSCANF)/g' \
+             -e 's/@''GNULIB_VSCANF''@/$(GNULIB_VSCANF)/g' \
+             -e 's/@''GNULIB_VPRINTF''@/$(GNULIB_VPRINTF)/g' \
+             -e 's/@''GNULIB_VPRINTF_POSIX''@/$(GNULIB_VPRINTF_POSIX)/g' \
+             -e 's/@''GNULIB_VSNPRINTF''@/$(GNULIB_VSNPRINTF)/g' \
+             -e 's/@''GNULIB_VSPRINTF_POSIX''@/$(GNULIB_VSPRINTF_POSIX)/g' \
+             < $(top_srcdir)/lib/stdio.in.h | \
+         sed -e 's|@''HAVE_DECL_FPURGE''@|$(HAVE_DECL_FPURGE)|g' \
+             -e 's|@''HAVE_DECL_FSEEKO''@|$(HAVE_DECL_FSEEKO)|g' \
+             -e 's|@''HAVE_DECL_FTELLO''@|$(HAVE_DECL_FTELLO)|g' \
+             -e 's|@''HAVE_DECL_GETDELIM''@|$(HAVE_DECL_GETDELIM)|g' \
+             -e 's|@''HAVE_DECL_GETLINE''@|$(HAVE_DECL_GETLINE)|g' \
+             -e 's|@''HAVE_DECL_OBSTACK_PRINTF''@|$(HAVE_DECL_OBSTACK_PRINTF)|g' \
+             -e 's|@''HAVE_DECL_SNPRINTF''@|$(HAVE_DECL_SNPRINTF)|g' \
+             -e 's|@''HAVE_DECL_VSNPRINTF''@|$(HAVE_DECL_VSNPRINTF)|g' \
+             -e 's|@''HAVE_DPRINTF''@|$(HAVE_DPRINTF)|g' \
+             -e 's|@''HAVE_FSEEKO''@|$(HAVE_FSEEKO)|g' \
+             -e 's|@''HAVE_FTELLO''@|$(HAVE_FTELLO)|g' \
+             -e 's|@''HAVE_PCLOSE''@|$(HAVE_PCLOSE)|g' \
+             -e 's|@''HAVE_POPEN''@|$(HAVE_POPEN)|g' \
+             -e 's|@''HAVE_RENAMEAT''@|$(HAVE_RENAMEAT)|g' \
+             -e 's|@''HAVE_VASPRINTF''@|$(HAVE_VASPRINTF)|g' \
+             -e 's|@''HAVE_VDPRINTF''@|$(HAVE_VDPRINTF)|g' \
+             -e 's|@''REPLACE_DPRINTF''@|$(REPLACE_DPRINTF)|g' \
+             -e 's|@''REPLACE_FCLOSE''@|$(REPLACE_FCLOSE)|g' \
+             -e 's|@''REPLACE_FDOPEN''@|$(REPLACE_FDOPEN)|g' \
+             -e 's|@''REPLACE_FFLUSH''@|$(REPLACE_FFLUSH)|g' \
+             -e 's|@''REPLACE_FOPEN''@|$(REPLACE_FOPEN)|g' \
+             -e 's|@''REPLACE_FPRINTF''@|$(REPLACE_FPRINTF)|g' \
+             -e 's|@''REPLACE_FPURGE''@|$(REPLACE_FPURGE)|g' \
+             -e 's|@''REPLACE_FREOPEN''@|$(REPLACE_FREOPEN)|g' \
+             -e 's|@''REPLACE_FSEEK''@|$(REPLACE_FSEEK)|g' \
+             -e 's|@''REPLACE_FSEEKO''@|$(REPLACE_FSEEKO)|g' \
+             -e 's|@''REPLACE_FTELL''@|$(REPLACE_FTELL)|g' \
+             -e 's|@''REPLACE_FTELLO''@|$(REPLACE_FTELLO)|g' \
+             -e 's|@''REPLACE_GETDELIM''@|$(REPLACE_GETDELIM)|g' \
+             -e 's|@''REPLACE_GETLINE''@|$(REPLACE_GETLINE)|g' \
+             -e 's|@''REPLACE_OBSTACK_PRINTF''@|$(REPLACE_OBSTACK_PRINTF)|g' \
+             -e 's|@''REPLACE_PERROR''@|$(REPLACE_PERROR)|g' \
+             -e 's|@''REPLACE_POPEN''@|$(REPLACE_POPEN)|g' \
+             -e 's|@''REPLACE_PRINTF''@|$(REPLACE_PRINTF)|g' \
+             -e 's|@''REPLACE_REMOVE''@|$(REPLACE_REMOVE)|g' \
+             -e 's|@''REPLACE_RENAME''@|$(REPLACE_RENAME)|g' \
+             -e 's|@''REPLACE_RENAMEAT''@|$(REPLACE_RENAMEAT)|g' \
+             -e 's|@''REPLACE_SNPRINTF''@|$(REPLACE_SNPRINTF)|g' \
+             -e 's|@''REPLACE_SPRINTF''@|$(REPLACE_SPRINTF)|g' \
+             -e 's|@''REPLACE_STDIO_READ_FUNCS''@|$(REPLACE_STDIO_READ_FUNCS)|g' \
+             -e 's|@''REPLACE_STDIO_WRITE_FUNCS''@|$(REPLACE_STDIO_WRITE_FUNCS)|g' \
+             -e 's|@''REPLACE_TMPFILE''@|$(REPLACE_TMPFILE)|g' \
+             -e 's|@''REPLACE_VASPRINTF''@|$(REPLACE_VASPRINTF)|g' \
+             -e 's|@''REPLACE_VDPRINTF''@|$(REPLACE_VDPRINTF)|g' \
+             -e 's|@''REPLACE_VFPRINTF''@|$(REPLACE_VFPRINTF)|g' \
+             -e 's|@''REPLACE_VPRINTF''@|$(REPLACE_VPRINTF)|g' \
+             -e 's|@''REPLACE_VSNPRINTF''@|$(REPLACE_VSNPRINTF)|g' \
+             -e 's|@''REPLACE_VSPRINTF''@|$(REPLACE_VSPRINTF)|g' \
+             -e 's|@''ASM_SYMBOL_PREFIX''@|$(ASM_SYMBOL_PREFIX)|g' \
+             -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
+             -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
+             -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \
+       } > $@-t && \
+       mv $@-t $@
+
+# We need the following in order to create <string.h> when the system
+# doesn't have one that works with the given compiler.
+lib/string.h: lib/string.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+         sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+             -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+             -e 's|@''NEXT_STRING_H''@|$(NEXT_STRING_H)|g' \
+             -e 's/@''GNULIB_EXPLICIT_BZERO''@/$(GNULIB_EXPLICIT_BZERO)/g' \
+             -e 's/@''GNULIB_FFSL''@/$(GNULIB_FFSL)/g' \
+             -e 's/@''GNULIB_FFSLL''@/$(GNULIB_FFSLL)/g' \
+             -e 's/@''GNULIB_MBSLEN''@/$(GNULIB_MBSLEN)/g' \
+             -e 's/@''GNULIB_MBSNLEN''@/$(GNULIB_MBSNLEN)/g' \
+             -e 's/@''GNULIB_MBSCHR''@/$(GNULIB_MBSCHR)/g' \
+             -e 's/@''GNULIB_MBSRCHR''@/$(GNULIB_MBSRCHR)/g' \
+             -e 's/@''GNULIB_MBSSTR''@/$(GNULIB_MBSSTR)/g' \
+             -e 's/@''GNULIB_MBSCASECMP''@/$(GNULIB_MBSCASECMP)/g' \
+             -e 's/@''GNULIB_MBSNCASECMP''@/$(GNULIB_MBSNCASECMP)/g' \
+             -e 's/@''GNULIB_MBSPCASECMP''@/$(GNULIB_MBSPCASECMP)/g' \
+             -e 's/@''GNULIB_MBSCASESTR''@/$(GNULIB_MBSCASESTR)/g' \
+             -e 's/@''GNULIB_MBSCSPN''@/$(GNULIB_MBSCSPN)/g' \
+             -e 's/@''GNULIB_MBSPBRK''@/$(GNULIB_MBSPBRK)/g' \
+             -e 's/@''GNULIB_MBSSPN''@/$(GNULIB_MBSSPN)/g' \
+             -e 's/@''GNULIB_MBSSEP''@/$(GNULIB_MBSSEP)/g' \
+             -e 's/@''GNULIB_MBSTOK_R''@/$(GNULIB_MBSTOK_R)/g' \
+             -e 's/@''GNULIB_MEMCHR''@/$(GNULIB_MEMCHR)/g' \
+             -e 's/@''GNULIB_MEMMEM''@/$(GNULIB_MEMMEM)/g' \
+             -e 's/@''GNULIB_MEMPCPY''@/$(GNULIB_MEMPCPY)/g' \
+             -e 's/@''GNULIB_MEMRCHR''@/$(GNULIB_MEMRCHR)/g' \
+             -e 's/@''GNULIB_RAWMEMCHR''@/$(GNULIB_RAWMEMCHR)/g' \
+             -e 's/@''GNULIB_STPCPY''@/$(GNULIB_STPCPY)/g' \
+             -e 's/@''GNULIB_STPNCPY''@/$(GNULIB_STPNCPY)/g' \
+             -e 's/@''GNULIB_STRCHRNUL''@/$(GNULIB_STRCHRNUL)/g' \
+             -e 's/@''GNULIB_STRDUP''@/$(GNULIB_STRDUP)/g' \
+             -e 's/@''GNULIB_STRNCAT''@/$(GNULIB_STRNCAT)/g' \
+             -e 's/@''GNULIB_STRNDUP''@/$(GNULIB_STRNDUP)/g' \
+             -e 's/@''GNULIB_STRNLEN''@/$(GNULIB_STRNLEN)/g' \
+             -e 's/@''GNULIB_STRPBRK''@/$(GNULIB_STRPBRK)/g' \
+             -e 's/@''GNULIB_STRSEP''@/$(GNULIB_STRSEP)/g' \
+             -e 's/@''GNULIB_STRSTR''@/$(GNULIB_STRSTR)/g' \
+             -e 's/@''GNULIB_STRCASESTR''@/$(GNULIB_STRCASESTR)/g' \
+             -e 's/@''GNULIB_STRTOK_R''@/$(GNULIB_STRTOK_R)/g' \
+             -e 's/@''GNULIB_STRERROR''@/$(GNULIB_STRERROR)/g' \
+             -e 's/@''GNULIB_STRERROR_R''@/$(GNULIB_STRERROR_R)/g' \
+             -e 's/@''GNULIB_STRSIGNAL''@/$(GNULIB_STRSIGNAL)/g' \
+             -e 's/@''GNULIB_STRVERSCMP''@/$(GNULIB_STRVERSCMP)/g' \
+             < $(top_srcdir)/lib/string.in.h | \
+         sed -e 's|@''HAVE_EXPLICIT_BZERO''@|$(HAVE_EXPLICIT_BZERO)|g' \
+             -e 's|@''HAVE_FFSL''@|$(HAVE_FFSL)|g' \
+             -e 's|@''HAVE_FFSLL''@|$(HAVE_FFSLL)|g' \
+             -e 's|@''HAVE_MBSLEN''@|$(HAVE_MBSLEN)|g' \
+             -e 's|@''HAVE_MEMCHR''@|$(HAVE_MEMCHR)|g' \
+             -e 's|@''HAVE_DECL_MEMMEM''@|$(HAVE_DECL_MEMMEM)|g' \
+             -e 's|@''HAVE_MEMPCPY''@|$(HAVE_MEMPCPY)|g' \
+             -e 's|@''HAVE_DECL_MEMRCHR''@|$(HAVE_DECL_MEMRCHR)|g' \
+             -e 's|@''HAVE_RAWMEMCHR''@|$(HAVE_RAWMEMCHR)|g' \
+             -e 's|@''HAVE_STPCPY''@|$(HAVE_STPCPY)|g' \
+             -e 's|@''HAVE_STPNCPY''@|$(HAVE_STPNCPY)|g' \
+             -e 's|@''HAVE_STRCHRNUL''@|$(HAVE_STRCHRNUL)|g' \
+             -e 's|@''HAVE_DECL_STRDUP''@|$(HAVE_DECL_STRDUP)|g' \
+             -e 's|@''HAVE_DECL_STRNDUP''@|$(HAVE_DECL_STRNDUP)|g' \
+             -e 's|@''HAVE_DECL_STRNLEN''@|$(HAVE_DECL_STRNLEN)|g' \
+             -e 's|@''HAVE_STRPBRK''@|$(HAVE_STRPBRK)|g' \
+             -e 's|@''HAVE_STRSEP''@|$(HAVE_STRSEP)|g' \
+             -e 's|@''HAVE_STRCASESTR''@|$(HAVE_STRCASESTR)|g' \
+             -e 's|@''HAVE_DECL_STRTOK_R''@|$(HAVE_DECL_STRTOK_R)|g' \
+             -e 's|@''HAVE_DECL_STRERROR_R''@|$(HAVE_DECL_STRERROR_R)|g' \
+             -e 's|@''HAVE_DECL_STRSIGNAL''@|$(HAVE_DECL_STRSIGNAL)|g' \
+             -e 's|@''HAVE_STRVERSCMP''@|$(HAVE_STRVERSCMP)|g' \
+             -e 's|@''REPLACE_MEMCHR''@|$(REPLACE_MEMCHR)|g' \
+             -e 's|@''REPLACE_MEMMEM''@|$(REPLACE_MEMMEM)|g' \
+             -e 's|@''REPLACE_STPNCPY''@|$(REPLACE_STPNCPY)|g' \
+             -e 's|@''REPLACE_STRCHRNUL''@|$(REPLACE_STRCHRNUL)|g' \
+             -e 's|@''REPLACE_STRDUP''@|$(REPLACE_STRDUP)|g' \
+             -e 's|@''REPLACE_STRNCAT''@|$(REPLACE_STRNCAT)|g' \
+             -e 's|@''REPLACE_STRNDUP''@|$(REPLACE_STRNDUP)|g' \
+             -e 's|@''REPLACE_STRNLEN''@|$(REPLACE_STRNLEN)|g' \
+             -e 's|@''REPLACE_STRSTR''@|$(REPLACE_STRSTR)|g' \
+             -e 's|@''REPLACE_STRCASESTR''@|$(REPLACE_STRCASESTR)|g' \
+             -e 's|@''REPLACE_STRTOK_R''@|$(REPLACE_STRTOK_R)|g' \
+             -e 's|@''REPLACE_STRERROR''@|$(REPLACE_STRERROR)|g' \
+             -e 's|@''REPLACE_STRERROR_R''@|$(REPLACE_STRERROR_R)|g' \
+             -e 's|@''REPLACE_STRSIGNAL''@|$(REPLACE_STRSIGNAL)|g' \
+             -e 's|@''UNDEFINE_STRTOK_R''@|$(UNDEFINE_STRTOK_R)|g' \
+             -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
+             -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
+             -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \
+             < $(top_srcdir)/lib/string.in.h; \
+       } > $@-t && \
+       mv $@-t $@
+
+# We need the following in order to create <sys/types.h> when the system
+# doesn't have one that works with the given compiler.
+lib/sys/types.h: lib/sys_types.in.h $(top_builddir)/config.status
+       $(AM_V_at)$(MKDIR_P) lib/sys
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+         sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+             -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+             -e 's|@''NEXT_SYS_TYPES_H''@|$(NEXT_SYS_TYPES_H)|g' \
+             -e 's|@''WINDOWS_64_BIT_OFF_T''@|$(WINDOWS_64_BIT_OFF_T)|g' \
+             -e 's|@''WINDOWS_STAT_INODES''@|$(WINDOWS_STAT_INODES)|g' \
+             < $(top_srcdir)/lib/sys_types.in.h; \
+       } > $@-t && \
+       mv $@-t $@
+
+lib/unitypes.h: lib/unitypes.in.h
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+         cat $(top_srcdir)/lib/unitypes.in.h; \
+       } > $@-t && \
+       mv -f $@-t $@
+
+lib/uniwidth.h: lib/uniwidth.in.h
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+         cat $(top_srcdir)/lib/uniwidth.in.h; \
+       } > $@-t && \
+       mv -f $@-t $@
+
+# We need the following in order to create <wchar.h> when the system
+# version does not work standalone.
+lib/wchar.h: lib/wchar.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+         sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+             -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+             -e 's|@''HAVE_FEATURES_H''@|$(HAVE_FEATURES_H)|g' \
+             -e 's|@''NEXT_WCHAR_H''@|$(NEXT_WCHAR_H)|g' \
+             -e 's|@''HAVE_WCHAR_H''@|$(HAVE_WCHAR_H)|g' \
+             -e 's/@''HAVE_CRTDEFS_H''@/$(HAVE_CRTDEFS_H)/g' \
+             -e 's/@''GNULIB_OVERRIDES_WINT_T''@/$(GNULIB_OVERRIDES_WINT_T)/g' \
+             -e 's/@''GNULIB_BTOWC''@/$(GNULIB_BTOWC)/g' \
+             -e 's/@''GNULIB_WCTOB''@/$(GNULIB_WCTOB)/g' \
+             -e 's/@''GNULIB_MBSINIT''@/$(GNULIB_MBSINIT)/g' \
+             -e 's/@''GNULIB_MBRTOWC''@/$(GNULIB_MBRTOWC)/g' \
+             -e 's/@''GNULIB_MBRLEN''@/$(GNULIB_MBRLEN)/g' \
+             -e 's/@''GNULIB_MBSRTOWCS''@/$(GNULIB_MBSRTOWCS)/g' \
+             -e 's/@''GNULIB_MBSNRTOWCS''@/$(GNULIB_MBSNRTOWCS)/g' \
+             -e 's/@''GNULIB_WCRTOMB''@/$(GNULIB_WCRTOMB)/g' \
+             -e 's/@''GNULIB_WCSRTOMBS''@/$(GNULIB_WCSRTOMBS)/g' \
+             -e 's/@''GNULIB_WCSNRTOMBS''@/$(GNULIB_WCSNRTOMBS)/g' \
+             -e 's/@''GNULIB_WCWIDTH''@/$(GNULIB_WCWIDTH)/g' \
+             -e 's/@''GNULIB_WMEMCHR''@/$(GNULIB_WMEMCHR)/g' \
+             -e 's/@''GNULIB_WMEMCMP''@/$(GNULIB_WMEMCMP)/g' \
+             -e 's/@''GNULIB_WMEMCPY''@/$(GNULIB_WMEMCPY)/g' \
+             -e 's/@''GNULIB_WMEMMOVE''@/$(GNULIB_WMEMMOVE)/g' \
+             -e 's/@''GNULIB_WMEMSET''@/$(GNULIB_WMEMSET)/g' \
+             -e 's/@''GNULIB_WCSLEN''@/$(GNULIB_WCSLEN)/g' \
+             -e 's/@''GNULIB_WCSNLEN''@/$(GNULIB_WCSNLEN)/g' \
+             -e 's/@''GNULIB_WCSCPY''@/$(GNULIB_WCSCPY)/g' \
+             -e 's/@''GNULIB_WCPCPY''@/$(GNULIB_WCPCPY)/g' \
+             -e 's/@''GNULIB_WCSNCPY''@/$(GNULIB_WCSNCPY)/g' \
+             -e 's/@''GNULIB_WCPNCPY''@/$(GNULIB_WCPNCPY)/g' \
+             -e 's/@''GNULIB_WCSCAT''@/$(GNULIB_WCSCAT)/g' \
+             -e 's/@''GNULIB_WCSNCAT''@/$(GNULIB_WCSNCAT)/g' \
+             -e 's/@''GNULIB_WCSCMP''@/$(GNULIB_WCSCMP)/g' \
+             -e 's/@''GNULIB_WCSNCMP''@/$(GNULIB_WCSNCMP)/g' \
+             -e 's/@''GNULIB_WCSCASECMP''@/$(GNULIB_WCSCASECMP)/g' \
+             -e 's/@''GNULIB_WCSNCASECMP''@/$(GNULIB_WCSNCASECMP)/g' \
+             -e 's/@''GNULIB_WCSCOLL''@/$(GNULIB_WCSCOLL)/g' \
+             -e 's/@''GNULIB_WCSXFRM''@/$(GNULIB_WCSXFRM)/g' \
+             -e 's/@''GNULIB_WCSDUP''@/$(GNULIB_WCSDUP)/g' \
+             -e 's/@''GNULIB_WCSCHR''@/$(GNULIB_WCSCHR)/g' \
+             -e 's/@''GNULIB_WCSRCHR''@/$(GNULIB_WCSRCHR)/g' \
+             -e 's/@''GNULIB_WCSCSPN''@/$(GNULIB_WCSCSPN)/g' \
+             -e 's/@''GNULIB_WCSSPN''@/$(GNULIB_WCSSPN)/g' \
+             -e 's/@''GNULIB_WCSPBRK''@/$(GNULIB_WCSPBRK)/g' \
+             -e 's/@''GNULIB_WCSSTR''@/$(GNULIB_WCSSTR)/g' \
+             -e 's/@''GNULIB_WCSTOK''@/$(GNULIB_WCSTOK)/g' \
+             -e 's/@''GNULIB_WCSWIDTH''@/$(GNULIB_WCSWIDTH)/g' \
+             -e 's/@''GNULIB_WCSFTIME''@/$(GNULIB_WCSFTIME)/g' \
+             < $(top_srcdir)/lib/wchar.in.h | \
+         sed -e 's|@''HAVE_WINT_T''@|$(HAVE_WINT_T)|g' \
+             -e 's|@''HAVE_BTOWC''@|$(HAVE_BTOWC)|g' \
+             -e 's|@''HAVE_MBSINIT''@|$(HAVE_MBSINIT)|g' \
+             -e 's|@''HAVE_MBRTOWC''@|$(HAVE_MBRTOWC)|g' \
+             -e 's|@''HAVE_MBRLEN''@|$(HAVE_MBRLEN)|g' \
+             -e 's|@''HAVE_MBSRTOWCS''@|$(HAVE_MBSRTOWCS)|g' \
+             -e 's|@''HAVE_MBSNRTOWCS''@|$(HAVE_MBSNRTOWCS)|g' \
+             -e 's|@''HAVE_WCRTOMB''@|$(HAVE_WCRTOMB)|g' \
+             -e 's|@''HAVE_WCSRTOMBS''@|$(HAVE_WCSRTOMBS)|g' \
+             -e 's|@''HAVE_WCSNRTOMBS''@|$(HAVE_WCSNRTOMBS)|g' \
+             -e 's|@''HAVE_WMEMCHR''@|$(HAVE_WMEMCHR)|g' \
+             -e 's|@''HAVE_WMEMCMP''@|$(HAVE_WMEMCMP)|g' \
+             -e 's|@''HAVE_WMEMCPY''@|$(HAVE_WMEMCPY)|g' \
+             -e 's|@''HAVE_WMEMMOVE''@|$(HAVE_WMEMMOVE)|g' \
+             -e 's|@''HAVE_WMEMSET''@|$(HAVE_WMEMSET)|g' \
+             -e 's|@''HAVE_WCSLEN''@|$(HAVE_WCSLEN)|g' \
+             -e 's|@''HAVE_WCSNLEN''@|$(HAVE_WCSNLEN)|g' \
+             -e 's|@''HAVE_WCSCPY''@|$(HAVE_WCSCPY)|g' \
+             -e 's|@''HAVE_WCPCPY''@|$(HAVE_WCPCPY)|g' \
+             -e 's|@''HAVE_WCSNCPY''@|$(HAVE_WCSNCPY)|g' \
+             -e 's|@''HAVE_WCPNCPY''@|$(HAVE_WCPNCPY)|g' \
+             -e 's|@''HAVE_WCSCAT''@|$(HAVE_WCSCAT)|g' \
+             -e 's|@''HAVE_WCSNCAT''@|$(HAVE_WCSNCAT)|g' \
+             -e 's|@''HAVE_WCSCMP''@|$(HAVE_WCSCMP)|g' \
+             -e 's|@''HAVE_WCSNCMP''@|$(HAVE_WCSNCMP)|g' \
+             -e 's|@''HAVE_WCSCASECMP''@|$(HAVE_WCSCASECMP)|g' \
+             -e 's|@''HAVE_WCSNCASECMP''@|$(HAVE_WCSNCASECMP)|g' \
+             -e 's|@''HAVE_WCSCOLL''@|$(HAVE_WCSCOLL)|g' \
+             -e 's|@''HAVE_WCSXFRM''@|$(HAVE_WCSXFRM)|g' \
+             -e 's|@''HAVE_WCSDUP''@|$(HAVE_WCSDUP)|g' \
+             -e 's|@''HAVE_WCSCHR''@|$(HAVE_WCSCHR)|g' \
+             -e 's|@''HAVE_WCSRCHR''@|$(HAVE_WCSRCHR)|g' \
+             -e 's|@''HAVE_WCSCSPN''@|$(HAVE_WCSCSPN)|g' \
+             -e 's|@''HAVE_WCSSPN''@|$(HAVE_WCSSPN)|g' \
+             -e 's|@''HAVE_WCSPBRK''@|$(HAVE_WCSPBRK)|g' \
+             -e 's|@''HAVE_WCSSTR''@|$(HAVE_WCSSTR)|g' \
+             -e 's|@''HAVE_WCSTOK''@|$(HAVE_WCSTOK)|g' \
+             -e 's|@''HAVE_WCSWIDTH''@|$(HAVE_WCSWIDTH)|g' \
+             -e 's|@''HAVE_WCSFTIME''@|$(HAVE_WCSFTIME)|g' \
+             -e 's|@''HAVE_DECL_WCTOB''@|$(HAVE_DECL_WCTOB)|g' \
+             -e 's|@''HAVE_DECL_WCWIDTH''@|$(HAVE_DECL_WCWIDTH)|g' \
+         | \
+         sed -e 's|@''REPLACE_MBSTATE_T''@|$(REPLACE_MBSTATE_T)|g' \
+             -e 's|@''REPLACE_BTOWC''@|$(REPLACE_BTOWC)|g' \
+             -e 's|@''REPLACE_WCTOB''@|$(REPLACE_WCTOB)|g' \
+             -e 's|@''REPLACE_MBSINIT''@|$(REPLACE_MBSINIT)|g' \
+             -e 's|@''REPLACE_MBRTOWC''@|$(REPLACE_MBRTOWC)|g' \
+             -e 's|@''REPLACE_MBRLEN''@|$(REPLACE_MBRLEN)|g' \
+             -e 's|@''REPLACE_MBSRTOWCS''@|$(REPLACE_MBSRTOWCS)|g' \
+             -e 's|@''REPLACE_MBSNRTOWCS''@|$(REPLACE_MBSNRTOWCS)|g' \
+             -e 's|@''REPLACE_WCRTOMB''@|$(REPLACE_WCRTOMB)|g' \
+             -e 's|@''REPLACE_WCSRTOMBS''@|$(REPLACE_WCSRTOMBS)|g' \
+             -e 's|@''REPLACE_WCSNRTOMBS''@|$(REPLACE_WCSNRTOMBS)|g' \
+             -e 's|@''REPLACE_WCWIDTH''@|$(REPLACE_WCWIDTH)|g' \
+             -e 's|@''REPLACE_WCSWIDTH''@|$(REPLACE_WCSWIDTH)|g' \
+             -e 's|@''REPLACE_WCSFTIME''@|$(REPLACE_WCSFTIME)|g' \
+             -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
+             -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
+             -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \
+       } > $@-t && \
+       mv $@-t $@
+
+# We need the following in order to create <wctype.h> when the system
+# doesn't have one that works with the given compiler.
+lib/wctype.h: lib/wctype.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(WARN_ON_USE_H)
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+         sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+             -e 's/@''HAVE_WCTYPE_H''@/$(HAVE_WCTYPE_H)/g' \
+             -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+             -e 's|@''NEXT_WCTYPE_H''@|$(NEXT_WCTYPE_H)|g' \
+             -e 's/@''HAVE_CRTDEFS_H''@/$(HAVE_CRTDEFS_H)/g' \
+             -e 's/@''GNULIB_OVERRIDES_WINT_T''@/$(GNULIB_OVERRIDES_WINT_T)/g' \
+             -e 's/@''GNULIB_ISWBLANK''@/$(GNULIB_ISWBLANK)/g' \
+             -e 's/@''GNULIB_WCTYPE''@/$(GNULIB_WCTYPE)/g' \
+             -e 's/@''GNULIB_ISWCTYPE''@/$(GNULIB_ISWCTYPE)/g' \
+             -e 's/@''GNULIB_WCTRANS''@/$(GNULIB_WCTRANS)/g' \
+             -e 's/@''GNULIB_TOWCTRANS''@/$(GNULIB_TOWCTRANS)/g' \
+             -e 's/@''HAVE_ISWBLANK''@/$(HAVE_ISWBLANK)/g' \
+             -e 's/@''HAVE_ISWCNTRL''@/$(HAVE_ISWCNTRL)/g' \
+             -e 's/@''HAVE_WCTYPE_T''@/$(HAVE_WCTYPE_T)/g' \
+             -e 's/@''HAVE_WCTRANS_T''@/$(HAVE_WCTRANS_T)/g' \
+             -e 's/@''HAVE_WINT_T''@/$(HAVE_WINT_T)/g' \
+             -e 's/@''REPLACE_ISWBLANK''@/$(REPLACE_ISWBLANK)/g' \
+             -e 's/@''REPLACE_ISWCNTRL''@/$(REPLACE_ISWCNTRL)/g' \
+             -e 's/@''REPLACE_TOWLOWER''@/$(REPLACE_TOWLOWER)/g' \
+             -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
+             -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \
+             < $(top_srcdir)/lib/wctype.in.h; \
+       } > $@-t && \
+       mv $@-t $@
+
+mostlyclean-local: mostlyclean-generic
+       @for dir in '' $(MOSTLYCLEANDIRS); do \
+         if test -n "$$dir" && test -d $$dir; then \
+           echo "rmdir $$dir"; rmdir $$dir; \
+         fi; \
+       done; \
+       :
+
+########################################################################
+### Emacs settings
+# Local Variables:
+# mode: makefile-automake
+# End:
+
+shdeps.sed: $(top_srcdir)/arch/misc/shdeps.sh
+       $(SHELL) $(top_srcdir)/arch/misc/shdeps.sh "$(RT_SEP)" "$(SH_SEP)" "$(bindir)" > $@
+
+########################################################################
+### Emacs settings
+# Local Variables:
+# mode: makefile-automake
+# End:
+
+# This is strangly built but not installed
+all: contrib/chem/README
+
+contrib/chem/README: $(chem_srcdir)/README.txt
+       $(AM_V_GEN)$(MKDIR_P) contrib/chem/ \
+       && sed -e "s|[@]g[@]|$(g)|g" $? >$@
+
+contrib/chem/examples/README: $(chem_srcdir)/examples/README.txt
+       $(AM_V_GEN)$(MKDIR_P) contrib/chem/examples \
+       && sed -e "s|[@]g[@]|$(g)|g" $? >$@
+
+contrib/chem/examples/122/README: $(chem_srcdir)/examples/122/README.txt
+       $(AM_V_GEN)$(MKDIR_P) contrib/chem/examples/122 \
+       && sed -e "s|[@]g[@]|$(g)|g" $? >$@
+
+chem: $(chem_srcdir)/chem.pl $(SH_DEPS_SED_SCRIPT)
+       $(AM_V_GEN)$(RM) $@ \
+       && sed -f "$(SH_DEPS_SED_SCRIPT)" \
+              -e "s|[@]g[@]|$(g)|g" \
+              -e "s|[@]BINDIR[@]|$(DESTDIR)$(bindir)|g" \
+              -e "s|[@]MACRODIR[@]|$(DESTDIR)$(tmacdir)|g" \
+              -e "s|[@]PICDIR[@]|$(DESTDIR)$(datasubdir)/pic|g" \
+              -e "s|[@]VERSION[@]|$(VERSION)|g" \
+              -e "$(SH_SCRIPT_SED_CMD)" \
+              $(chem_srcdir)/chem.pl \
+              >$@ \
+       && chmod +x $@
+
+install-data-local: install_chem_extra
+install_chem_extra:
+@BUILD_EXAMPLES_TRUE@  -test -d $(DESTDIR)$(chemexample122dir) \
+@BUILD_EXAMPLES_TRUE@          || $(mkinstalldirs) $(DESTDIR)$(chemexample122dir);
+@BUILD_EXAMPLES_TRUE@  for i in $(chem_srcdir)/examples/122/*.chem; do \
+@BUILD_EXAMPLES_TRUE@    n=`echo $$i | sed 's|$(chem_srcdir)/examples/122/||g'`; \
+@BUILD_EXAMPLES_TRUE@    $(INSTALL_DATA) $$i $(DESTDIR)$(chemexample122dir)/$$n; \
+@BUILD_EXAMPLES_TRUE@  done
+
+uninstall-local: uninstall_chem_extra
+uninstall_chem_extra:
+@BUILD_EXAMPLES_TRUE@  $(RM) $(DESTDIR)$(exampledir)/chem/122/*
+@BUILD_EXAMPLES_TRUE@  -rmdir $(DESTDIR)$(exampledir)/chem/122
+@BUILD_EXAMPLES_TRUE@  $(RM) $(DESTDIR)$(exampledir)/chem/*
+@BUILD_EXAMPLES_TRUE@  -rmdir $(DESTDIR)$(exampledir)/chem
+       -rmdir $(DESTDIR)$(datasubdir)/pic
+
+dist-hook: dist_chem
+dist_chem:
+       chmod u+w $(distdir)/contrib/chem/examples/122
+       for i in $(chem_srcdir)/examples/122/*.chem; do \
+         cp -f $$i $(distdir)/contrib/chem/examples/122; \
+       done
+
+########################################################################
+# Editor settings
+########################################################################
+#
+# Local Variables:
+# mode: makefile-automake
+# fill-column: 72
+# End:
+# vim: set filetype=automake textwidth=72:
+
+eqn2graph: $(top_srcdir)/contrib/eqn2graph/eqn2graph.sh
+       $(AM_V_GEN)sed -e "s|[@]g[@]|$(g)|g" \
+           -e "s|[@]VERSION[@]|$(VERSION)|" \
+           -e $(SH_SCRIPT_SED_CMD) $(eqn2graph_srcdir)/eqn2graph.sh \
+           >$@ \
+       && chmod +x $@
+
+########################################################################
+### Emacs settings
+# Local Variables:
+# mode: makefile-automake
+# End:
+
+gdiffmk: $(gdiffmk_srcdir)/gdiffmk.sh
+       $(AM_V_GEN)sed -e "s|[@]BINDIR[@]|$(bindir)|g" \
+           -e "s|[@]VERSION[@]|$(VERSION)|g" \
+           -e "s|[@]HAVE_TEST_EF_OPTION[@]|$(HAVE_TEST_EF_OPTION)|g" \
+           -e "s|[@]BASH_PROG[@]|$(BASH_PROG)|g" \
+           -e "s|[@]DIFF_PROG[@]|$(DIFF_PROG)|g" \
+           -e $(SH_SCRIPT_SED_CMD)  $(gdiffmk_srcdir)/gdiffmk.sh \
+           >$@ \
+       && chmod +x $@
+
+clean-local: clean_gdiffmk_check
+clean_gdiffmk_check:
+       if test -d $(top_builddir)/contrib/gdiffmk/tests; then \
+         cd $(top_builddir)/contrib/gdiffmk/tests && \
+         $(abs_top_srcdir)/contrib/gdiffmk/tests/runtests.sh clean; \
+       fi
+
+########################################################################
+# Editor settings
+########################################################################
+#
+# Local Variables:
+# mode: makefile-automake
+# fill-column: 72
+# End:
+# vim: set filetype=automake textwidth=72:
+
+# create perl executable 'glilypond', being stored into 'bindir'
+glilypond: $(glilypond_srcdir)/glilypond.pl shdeps.sed
+       $(AM_V_GEN)$(RM) $@ \
+       && sed -f "$(SH_DEPS_SED_SCRIPT)" \
+              -e "s|[@]g[@]|$(g)|g" \
+              -e "s|[@]BINDIR[@]|$(DESTDIR)$(bindir)|g" \
+              -e "s|[@]glilypond_dir[@]|$(DESTDIR)$(glilypond_dir)|g" \
+              -e "s|[@]VERSION[@]|$(VERSION)|g" \
+              $(glilypond_srcdir)/glilypond.pl \
+              >$@ \
+       && chmod +x $@
+
+uninstall_groffdirs: uninstall-glilypond-hook
+uninstall-glilypond-hook:
+       if test -d $(DESTDIR)$(glilyponddir); then \
+         rmdir $(DESTDIR)$(glilyponddir); \
+       fi
+
+########################################################################
+# Editor settings
+########################################################################
+#
+# Local Variables:
+# mode: makefile-automake
+# fill-column: 72
+# End:
+# vim: set filetype=automake textwidth=72:
+
+gperl: $(top_srcdir)/contrib/gperl/gperl.pl shdeps.sed
+       $(AM_V_GEN)$(RM) $@ \
+       && sed -f "$(SH_DEPS_SED_SCRIPT)" \
+              -e "s|[@]g[@]|$(g)|g" \
+              -e "s|[@]BINDIR[@]|$(DESTDIR)$(bindir)|g" \
+              -e "s|[@]VERSION[@]|$(VERSION)|g" \
+              -e "$(SH_SCRIPT_SED_CMD)" \
+              $(top_srcdir)/contrib/gperl/gperl.pl \
+              >$@ \
+       && chmod +x $@
+
+########################################################################
+# Editor settings
+########################################################################
+#
+# Local Variables:
+# mode: makefile-automake
+# fill-column: 72
+# End:
+# vim: set filetype=automake textwidth=72:
+
+gpinyin: contrib/gpinyin/gpinyin.pl
+       $(AM_V_GEN)sed -f "$(SH_DEPS_SED_SCRIPT)" \
+           -e "s|[@]g[@]|$(g)|g" \
+           -e "s|[@]BINDIR[@]|$(DESTDIR)$(bindir)|g" \
+           -e "s|[@]gpinyin_dir[@]|$(DESTIR)$(gpinyin_dir)|" \
+           -e "s|[@]VERSION[@]|$(VERSION)|g" \
+           -e "$(SH_SCRIPT_SED_CMD)" \
+           $(gpinyin_srcdir)/gpinyin.pl \
+           >$@ \
+       && chmod +x $@
+
+uninstall_groffdirs: uninstall-gpinyin-hook
+uninstall-gpinyin-hook:
+       if test -d $(DESTDIR)$(gpinyindir); then \
+         rmdir $(DESTDIR)$(gpinyindir); \
+       fi
+
+########################################################################
+# Editor settings
+########################################################################
+#
+# Local Variables:
+# mode: makefile-automake
+# fill-column: 72
+# End:
+# vim: set filetype=automake textwidth=72:
+
+grap2graph: $(grap2graph_srcdir)/grap2graph.sh
+       $(AM_V_GEN)sed -e "s|[@]g[@]|$(g)|g" \
+           -e "s|[@]VERSION[@]|$(VERSION)|" \
+           -e $(SH_SCRIPT_SED_CMD) $(grap2graph_srcdir)/grap2graph.sh \
+           >$@ \
+       && chmod +x $@
+
+########################################################################
+### Emacs settings
+# Local Variables:
+# mode: makefile-automake
+# End:
+
+########################################################################
+# Editor settings
+########################################################################
+#
+# Local Variables:
+# mode: makefile-automake
+# fill-column: 72
+# End:
+# vim: set filetype=automake textwidth=72:
+
+$(ROFF2PROGS): $(groffer_srcdir)/roff2.pl
+       cp $(groffer_srcdir)/roff2.pl $@
+
+# we take roff2.man and replace the @ROFF2MODE@ by the type of file
+# (dvi, pdf, html etc ...)
+$(ROFF2MAN):  $(groffer_srcdir)/roff2.1.man
+       $(AM_V_GEN)$(MKDIR_P) contrib/groffer \
+       && FILEMODE=`echo $@ | sed 's|contrib/groffer/roff2\([a-z][a-z]*\)\.1\.man|\1|g'` \
+       && sed -e 's/[@]ROFF2MODE[@]/'"$$FILEMODE"'/g' \
+              $(groffer_srcdir)/roff2.1.man \
+              > $@;
+
+groffer: $(GROFFER_PERL) $(GROFFER_REST) $(SH_DEPS_SED_SCRIPT)
+       $(AM_V_GEN)sed -f "$(SH_DEPS_SED_SCRIPT)" \
+          -e "s|[@]g[@]|$(g)|g" \
+          -e "s|[@]BINDIR[@]|$(DESTDIR)$(bindir)|g" \
+          -e "s|[@]libdir[@]|$(DESTDIR)$(libdir)|g" \
+          -e "s|[@]groffer_dir[@]|$(DESTDIR)$(groffer_dir)|g" \
+          -e "s|[@]VERSION[@]|$(VERSION)|g" \
+          -e "$(SH_SCRIPT_SED_CMD)" \
+          $(groffer_srcdir)/groffer.pl \
+          >$@ \
+       && chmod +x $@;
+
+uninstall_groffdirs: uninstall-groffer-hook
+uninstall-groffer-hook:
+       if test -d $(DESTDIR)$(grofferdir); then \
+         rmdir $(DESTDIR)$(grofferdir); \
+       fi
+
+########################################################################
+# Editor settings
+########################################################################
+#
+# Local Variables:
+# mode: makefile-automake
+# fill-column: 72
+# End:
+# vim: set filetype=automake textwidth=72:
+$(hdtblexample_DATA): $(HDTBLSTRIPFILES)
+@BUILD_EXAMPLES_TRUE@contrib/hdtbl/examples/test-hdtbl.sh: $(top_builddir)/config.status \
+@BUILD_EXAMPLES_TRUE@  $(HDTBLPROCESSEDEXAMPLEFILES) $(top_srcdir)/contrib/hdtbl/examples/test-hdtbl.sh.in
+@BUILD_EXAMPLES_TRUE@  sed -e "s|[@]abs_top_builddir[@]|$(abs_top_builddir)|g" \
+@BUILD_EXAMPLES_TRUE@      -e "s|[@]GHOSTSCRIPT[@]|$(GHOSTSCRIPT)|g" \
+@BUILD_EXAMPLES_TRUE@          $(top_srcdir)/contrib/hdtbl/examples/test-hdtbl.sh.in > $@
+@BUILD_EXAMPLES_TRUE@  chmod +x $@
+
+.roff.ps:
+       $(GROFF_V)$(MKDIR_P) `dirname $@` \
+       && $(HDTBLGROFF) -Tps \
+            -dfontpath=$(top_srcdir)/font \
+            -dsopath=$(hdtbl_srcdir)/ \
+            -mhdtbl $< >$@
+.in.roff:
+       $(AM_V_GEN)$(MKDIR_P) `dirname $@` \
+       && sed -e "s|[@]fontdir[@]|$(fontdir)|" \
+              -e "s|[@]EGREP[@]|$(EGREP)|" $< >$@
+
+$(HDTBLPROCESSEDEXAMPLEFILES): gnu.eps groff troff pic tbl \
+  contrib/hdtbl/examples/common.roff
+
+$(HDTBLSTRIPFILES): $(top_srcdir)/tmac/strip.sed
+       @$(MKDIR_P) `dirname $@`
+       sed -f $(top_srcdir)/tmac/strip.sed $(hdtbl_srcdir)/`basename $@`-u > $@;
+
+uninstall_groffdirs: uninstall-hdtbl-hook
+uninstall-hdtbl-hook:
+       if test -d $(DESTDIR)$(hdtblexampledir); then \
+         rmdir $(DESTDIR)$(hdtblexampledir); \
+       fi
+
+########################################################################
+# Editor settings
+########################################################################
+#
+# Local Variables:
+# mode: makefile-automake
+# fill-column: 72
+# End:
+# vim: set filetype=automake textwidth=72:
+
+mmroff: $(mm_srcdir)/mmroff.pl
+       $(AM_V_GEN)$(SED) -e 's;/usr/bin/perl;$(PERL);' \
+           $(mm_srcdir)/mmroff.pl \
+           >$@ \
+       && chmod +x $@
+
+# Special installation rules for m.tmac, mse.tmac, mmse.tmac, mm.tmac
+# and MMLOCALE
+install-data-local: install_mm
+install_mm:
+       -test -d $(DESTDIR)$(tmacdir) || $(mkinstalldirs) $(DESTDIR)$(tmacdir)
+       -test -d $(DESTDIR)$(mmdir) || $(mkinstalldirs) $(DESTDIR)$(mmdir)
+       $(RM) $(DESTDIR)$(tmacdir)/tmac.$(tmac_m_prefix)m
+       $(RM) $(DESTDIR)$(tmacdir)/$(tmac_m_prefix)m.tmac
+       $(INSTALL_DATA) $(mm_srcdir)/m.tmac \
+         $(DESTDIR)$(tmacdir)/$(tmac_m_prefix)m.tmac
+       $(SED) -e "s;^.mso m.tmac;.mso $(tmac_m_prefix)m.tmac;g" \
+         $(mm_srcdir)/mse.tmac > $(DESTDIR)$(tmacdir)/$(tmac_m_prefix)mse.tmac
+       @$(SED) -e "s;^.mso mse.tmac;.mso $(tmac_m_prefix)mse.tmac;g" \
+         $(mm_srcdir)/mmse.tmac > $(DESTDIR)$(tmacdir)/$(tmac_m_prefix)mmse.tmac
+       @$(SED) -e "s;^.mso m.tmac;.mso $(tmac_m_prefix)m.tmac;g" \
+         $(mm_srcdir)/mm.tmac > $(DESTDIR)$(tmacdir)/$(tmac_m_prefix)mm.tmac
+       @for f in $(MMLOCALE); do \
+         test -f $(DESTDIR)$(tmacdir)/mm/$$f \
+           || touch $(DESTDIR)$(tmacdir)/mm/$$f; \
+       done
+uninstall-local: uninstall_mm
+uninstall_mm:
+       if test -d $(DESTDIR)$(mmexampledir); then \
+         rmdir $(DESTDIR)$(mmexampledir); \
+       fi
+       -for f in $(MMLOCALE); do \
+         test -s $(DESTDIR)$(tmacdir)/mm/$$f \
+           || $(RM) $(DESTDIR)$(tmacdir)/mm/$$f; \
+       done
+       $(RM) $(DESTDIR)$(tmacdir)/tmac.$(tmac_m_prefix)m
+       $(RM) $(DESTDIR)$(tmacdir)/$(tmac_m_prefix)m.tmac
+       $(RM) $(DESTDIR)$(tmacdir)/$(tmac_m_prefix)mm.tmac
+       $(RM) $(DESTDIR)$(tmacdir)/$(tmac_m_prefix)mse.tmac
+       $(RM) $(DESTDIR)$(tmacdir)/$(tmac_m_prefix)mmse.tmac
+       -rmdir $(DESTDIR)$(tmacdir)/mm
+
+# Special distribution rule: we copy all .tmac files from contrib/mm
+dist-hook: dist_mm
+dist_mm:
+       chmod u+w $(distdir)/contrib/mm/
+       for i in $(mm_srcdir)/*.tmac; do \
+         cp -f $$i $(distdir)/contrib/mm/; \
+       done
+
+########################################################################
+### Emacs settings
+# Local Variables:
+# mode: makefile-automake
+# End:
+# vim: set filetype=automake:
+@BUILD_PDFEXAMPLES_TRUE@@HAVE_PDFTOOLS_TRUE@contrib/mom/examples/tests-mom.sh: $(top_builddir)/config.status \
+@BUILD_PDFEXAMPLES_TRUE@@HAVE_PDFTOOLS_TRUE@   $(MOMPROCESSEDEXAMPLEFILES)  $(top_srcdir)/contrib/mom/examples/test-mom.sh.in
+@BUILD_PDFEXAMPLES_TRUE@@HAVE_PDFTOOLS_TRUE@   sed -e "s|[@]abs_top_builddir[@]|$(abs_top_builddir)|g" \
+@BUILD_PDFEXAMPLES_TRUE@@HAVE_PDFTOOLS_TRUE@            -e "s|[@]groff_have_urw_fonts[@]|$(groff_have_urw_fonts)|g" \
+@BUILD_PDFEXAMPLES_TRUE@@HAVE_PDFTOOLS_TRUE@           $(top_srcdir)/contrib/mom/examples/test-mom.sh.in > $@
+@BUILD_PDFEXAMPLES_TRUE@@HAVE_PDFTOOLS_TRUE@   chmod +x $@
+.mom.pdf:
+       $(GROFF_V)$(MKDIR_P) `dirname $@` \
+       && LC_ALL=C $(MOMPDFMOM) $< >$@
+
+$(MOMPROCESSEDEXAMPLEFILES): $(MOMNORMALFILES) \
+  groff troff gropdf pdfmom penguin.ps penguin.pdf \
+  gnu.eps font/devpdf/build_font_files
+
+penguin.ps:
+       cp $(mom_srcdir)/examples/penguin.ps $@
+penguin.pdf:
+       cp $(mom_srcdir)/examples/penguin.pdf $@
+
+install-data-hook: install_mom
+install_mom:
+@BUILD_PDFEXAMPLES_TRUE@       for f in $(PDFDOCFILE); do \
+@BUILD_PDFEXAMPLES_TRUE@         $(RM) $(DESTDIR)$(pdfdocdir)/$$f; \
+@BUILD_PDFEXAMPLES_TRUE@         ln -s $(exampledir)/mom/$$f $(DESTDIR)$(pdfdocdir)/$$f; \
+@BUILD_PDFEXAMPLES_TRUE@       done
+
+uninstall_groffdirs: uninstall_mom
+uninstall_mom:
+       for f in $(PDFDOCFILE); do \
+         $(RM) $(DESTDIR)$(pdfdocdir)/$$f; \
+       done
+       if test -d $(DESTDIR)$(exampledir)/mom; then \
+         rmdir $(DESTDIR)$(exampledir)/mom; \
+       fi
+       if test -d $(DESTDIR)$(htmldocdir)/mom; then \
+         rmdir $(DESTDIR)$(htmldocdir)/mom; \
+       fi
+
+########################################################################
+### Emacs settings
+# Local Variables:
+# mode: makefile-automake
+# End:
+# vim: set filetype=automake:
+
+contrib/pdfmark/pdfmark.pdf: contrib/pdfmark/pdfmark.ms
+       $(GROFF_V)$(MKDIR_P) `dirname $@` \
+       && $(PDFROFF) -mspdf --stylesheet=$(pdfmark_srcdir)/cover.ms \
+            $(top_srcdir)/contrib/pdfmark/pdfmark.ms >$@
+
+# The pdf files use the local script to generate.
+$(PDFDOCFILES): pdfroff groff troff gropdf 
+$(PDFDOCFILES): $(dist_devpsfont_DATA) $(nodist_devpsfont_DATA) gnu.eps
+
+pdfroff: contrib/pdfmark/pdfroff.sh $(SH_DEPS_SED_SCRIPT)
+       $(AM_V_GEN)sed -f $(SH_DEPS_SED_SCRIPT) \
+           -e "s|[@]VERSION[@]|$(VERSION)|" \
+           -e "s|[@]GROFF_AWK_INTERPRETERS[@]|$(ALT_AWK_PROGS)|" \
+           -e "s|[@]GROFF_GHOSTSCRIPT_INTERPRETERS[@]|$(ALT_GHOSTSCRIPT_PROGS)|" \
+           -e "s|[@]GROFF_BIN_DIR[@]|$(bindir)|" $(pdfmark_srcdir)/pdfroff.sh \
+           >$@ \
+       && chmod +x $@
+
+mostlyclean-local: mostlyclean_pdfmark
+mostlyclean_pdfmark:
+       rm -rf $(top_builddir)/pdfroff-*
+
+uninstall_groffdirs: uninstall-pdfmark-hook
+uninstall-pdfmark-hook:
+@BUILD_PDFDOC_TRUE@    if test -d $(DESTDIR)$(pdfmarkpdfdocdir); then \
+@BUILD_PDFDOC_TRUE@      rmdir $(DESTDIR)$(pdfmarkpdfdocdir); \
+@BUILD_PDFDOC_TRUE@    fi
+
+########################################################################
+# Editor settings
+########################################################################
+#
+# Local Variables:
+# mode: makefile-automake
+# fill-column: 72
+# End:
+# vim: set filetype=automake textwidth=72:
+
+pic2graph: $(pic2graph_srcdir)/pic2graph.sh
+       $(AM_V_GEN)sed -e "s|[@]g[@]|$(g)|g" \
+           -e "s|[@]VERSION[@]|$(VERSION)|" \
+           -e $(SH_SCRIPT_SED_CMD) $(pic2graph_srcdir)/pic2graph.sh \
+           >$@ \
+       && chmod +x $@
+
+########################################################################
+### Emacs settings
+# Local Variables:
+# mode: makefile-automake
+# End:
+doc/automake.pdf: doc/automake.mom \
+  groff troff gropdf pdfmom font/devpdf/build_font_files \
+  contrib/mom/om.tmac
+
+# For simplicity, we always call preconv, grn, and eqn.
+.me.txt:
+       $(GROFF_V)$(MKDIR_P) `dirname $@` \
+       && $(DOC_GROFF) -k -Tutf8 -ge -me >$@
+.me.ps:
+       $(GROFF_V)$(MKDIR_P) `dirname $@` \
+       && $(DOC_GROFF) -k -Tps -ge -me >$@
+
+.ms.html:
+       $(GROFF_V)$(MKDIR_P) `dirname $@` \
+       && $(DOC_GROFF) -P-p -P-b -P-I`basename $< | sed -e 's|.ms$$||'` \
+                       -P-D$(imagedir) -Thtml -ms >$@
+.ms.txt:
+       $(GROFF_V)$(MKDIR_P) `dirname $@` \
+       && $(DOC_GROFF) -Tascii -ms -mwww >$@
+.ms.ps:
+       $(GROFF_V)$(MKDIR_P) `dirname $@` \
+       && $(DOC_GROFF) -Tps -ms -mwww >$@
+
+$(PROCESSEDEXAMPLEFILES): $(bin_PROGRAMS) $(prefixexecbin_PROGRAMS) gnu.eps
+$(PROCESSEDEXAMPLEFILES): $(dist_devpsfont_DATA) $(nodist_devpsfont_DATA) $(hdtbltmac_DATA)
+$(PROCESSEDEXAMPLEFILES): $(dist_tmac_DATA) $(nodist_tmac_DATA)
+$(PROCESSEDDOCFILES): $(bin_PROGRAMS) $(prefixexecbin_PROGRAMS) gnu.eps
+
+doc/pic.html: tmac/www.tmac
+doc/pic.html: $(bin_PROGRAMS) $(prefixexecbin_PROGRAMS)
+doc/pic.html: doc/examples.stamp
+doc/pic.html: $(dist_devpsfont_DATA) $(nodist_devpsfont_DATA)
+doc/pic.html: $(doc_srcdir)/pic.ms $(devhtmlfont_DATA)
+       $(GROFF_V)$(MKDIR_P) $(doc_builddir) \
+       && cd $(doc_builddir) \
+       && $(DOC_SED) $(doc_srcdir)/pic.ms \
+          | $(DOC_GROFF_ONLY) -P-p -P-Ipic -P-D$(imagedir) -P-jpic \
+                              -Thtml -ms > pic.html
+
+doc/examples.stamp: doc/groff.css
+       @$(MKDIR_P) $(doc_builddir)
+       test -f $(doc_builddir)/groff.css || cp $(doc_srcdir)/groff.css $(doc_builddir)
+       echo timestamp > $@
+
+doc/webpage.html: $(bin_PROGRAMS) $(prefixexecbin_PROGRAMS)
+doc/webpage.html: doc/examples.stamp $(devhtmlfont_DATA)
+doc/webpage.html: $(dist_devpsfont_DATA) $(nodist_devpsfont_DATA) 
+doc/webpage.html: $(doc_srcdir)/webpage.ms gnu.eps $(doc_srcdir)/groff.css
+       $(GROFF_V)$(MKDIR_P) doc \
+       && cd $(doc_builddir) \
+       && $(DOC_SED) $(doc_srcdir)/webpage.ms \
+          | $(DOC_GROFF_ONLY) -P-jwebpage -P-nrpb -P-Iwebpage \
+                              -P-D$(imagedir) -Thtml -ms > webpage.html
+
+doc/grnexmpl.ps: doc/grnexmpl.me doc/grnexmpl.g
+
+# Note that we remove groff.css only if out-of-source build tree
+mostlyclean-local: mostlyclean_doc
+mostlyclean_doc:
+@BUILD_HTML_TRUE@      if test -d $(doc_builddir); then \
+@BUILD_HTML_TRUE@        cd $(doc_builddir) && \
+@BUILD_HTML_TRUE@        for f in $(HTMLDOCFILESALL); do \
+@BUILD_HTML_TRUE@          $(RM) $$f; \
+@BUILD_HTML_TRUE@        done; \
+@BUILD_HTML_TRUE@      fi
+@BUILD_HTML_TRUE@      if test -d $(doc_builddir)/$(imagedir); then \
+@BUILD_HTML_TRUE@        cd $(doc_builddir)/$(imagedir) && \
+@BUILD_HTML_TRUE@        for f in $(HTMLDOCIMAGEFILES); do \
+@BUILD_HTML_TRUE@          $(RM) $$f; \
+@BUILD_HTML_TRUE@        done; \
+@BUILD_HTML_TRUE@      fi
+       if test $(top_builddir) != $(top_srcdir); then \
+         $(RM) $(top_builddir)/doc/groff.css; \
+       fi
+
+@BUILD_HTMLEXAMPLES_TRUE@      if test -d $(doc_builddir); then \
+@BUILD_HTMLEXAMPLES_TRUE@        cd $(doc_builddir) && \
+@BUILD_HTMLEXAMPLES_TRUE@        for f in $(HTMLEXAMPLEFILESALL); do \
+@BUILD_HTMLEXAMPLES_TRUE@          $(RM) $$f; \
+@BUILD_HTMLEXAMPLES_TRUE@        done; \
+@BUILD_HTMLEXAMPLES_TRUE@      fi
+@BUILD_HTMLEXAMPLES_TRUE@      if test -d $(doc_builddir)/$(imagedir); then \
+@BUILD_HTMLEXAMPLES_TRUE@        cd $(doc_builddir)/$(imagedir) && \
+@BUILD_HTMLEXAMPLES_TRUE@        for f in $(HTMLEXAMPLEIMAGEFILES); do \
+@BUILD_HTMLEXAMPLES_TRUE@          $(RM) $$f; \
+@BUILD_HTMLEXAMPLES_TRUE@        done; \
+@BUILD_HTMLEXAMPLES_TRUE@      fi
+
+install-data-hook: install_doc_htmldoc
+install_doc_htmldoc:
+@BUILD_HTML_TRUE@      cd $(doc_builddir) && \
+@BUILD_HTML_TRUE@      for f in `ls $(HTMLDOCFILESALL)`; do \
+@BUILD_HTML_TRUE@        $(RM) $(DESTDIR)$(htmldocdir)/$$f; \
+@BUILD_HTML_TRUE@        $(INSTALL_DATA) $$f $(DESTDIR)$(htmldocdir)/$$f; \
+@BUILD_HTML_TRUE@      done
+@BUILD_HTML_TRUE@      -test -d $(DESTDIR)$(htmldocimagedir) \
+@BUILD_HTML_TRUE@        || $(mkinstalldirs) $(DESTDIR)$(htmldocimagedir)
+@BUILD_HTML_TRUE@      $(RM) $(DESTDIR)$(htmldocimagedir)/$(HTMLDOCIMAGEFILES)
+@BUILD_HTML_TRUE@      $(INSTALL_DATA) $(doc_builddir)/$(imagedir)/$(HTMLDOCIMAGEFILES) \
+@BUILD_HTML_TRUE@        $(DESTDIR)$(htmldocimagedir)
+
+install-data-hook: install_doc_examples
+install_doc_examples: gnu.eps
+# Prefer gnu.eps in builddir over srcdir.
+@BUILD_EXAMPLES_TRUE@  d=.; test -f "gnu.eps" || d=$(doc_srcdir); \
+@BUILD_EXAMPLES_TRUE@    $(RM) $(DESTDIR)$(exampledir)/gnu.eps; \
+@BUILD_EXAMPLES_TRUE@    $(INSTALL_DATA) $$d/gnu.eps $(DESTDIR)$(exampledir)/gnu.eps
+@BUILD_HTMLEXAMPLES_TRUE@      cd $(doc_builddir) && \
+@BUILD_HTMLEXAMPLES_TRUE@      for f in `ls $(HTMLEXAMPLEFILESALL)`; do \
+@BUILD_HTMLEXAMPLES_TRUE@        $(RM) $(DESTDIR)$(exampledir)/$$f; \
+@BUILD_HTMLEXAMPLES_TRUE@        $(INSTALL_DATA) $$f $(DESTDIR)$(exampledir)/$$f; \
+@BUILD_HTMLEXAMPLES_TRUE@      done
+@BUILD_HTMLEXAMPLES_TRUE@      -test -d $(DESTDIR)$(exampleimagedir) \
+@BUILD_HTMLEXAMPLES_TRUE@        || $(mkinstalldirs) $(DESTDIR)$(exampleimagedir)
+@BUILD_HTMLEXAMPLES_TRUE@      $(RM) $(DESTDIR)$(exampleimagedir)/$(HTMLEXAMPLEIMAGEFILES)
+@BUILD_HTMLEXAMPLES_TRUE@      $(INSTALL_DATA) $(doc_builddir)/$(imagedir)/$(HTMLEXAMPLEIMAGEFILES) \
+@BUILD_HTMLEXAMPLES_TRUE@        $(DESTDIR)$(exampleimagedir)
+
+uninstall-hook: uninstall_doc_examples uninstall_doc_htmldoc uninstall_mom
+uninstall_doc_examples:
+@BUILD_EXAMPLES_TRUE@  $(RM) -f $(DESTDIR)$(exampledir)/gnu.eps
+@BUILD_HTMLEXAMPLES_TRUE@      -test -d $(DESTDIR)$(docexamplesdir) && \
+@BUILD_HTMLEXAMPLES_TRUE@      cd $(DESTDIR)$(docexamplesdir) && \
+@BUILD_HTMLEXAMPLES_TRUE@      for f in $(HTMLEXAMPLEFILESALL); do \
+@BUILD_HTMLEXAMPLES_TRUE@        $(RM) $$f; \
+@BUILD_HTMLEXAMPLES_TRUE@      done
+@BUILD_HTMLEXAMPLES_TRUE@      -test -d $(DESTDIR)$(docexamplesdir)/$(imagedir) && \
+@BUILD_HTMLEXAMPLES_TRUE@      cd $(DESTDIR)$(docexamplesdir)/$(imagedir) && \
+@BUILD_HTMLEXAMPLES_TRUE@      for f in $(HTMLEXAMPLEIMAGEFILES); do \
+@BUILD_HTMLEXAMPLES_TRUE@        $(RM) $$f; \
+@BUILD_HTMLEXAMPLES_TRUE@      done
+@BUILD_HTMLEXAMPLES_TRUE@      -rmdir $(DESTDIR)$(docexamplesdir)/$(imagedir)
+@BUILD_HTMLEXAMPLES_TRUE@      -rmdir $(DESTDIR)$(docexamplesdir)
+
+uninstall_doc_htmldoc:
+@BUILD_HTML_TRUE@      -test -d $(DESTDIR)$(htmldocdir) && \
+@BUILD_HTML_TRUE@      cd $(DESTDIR)$(htmldocdir) && \
+@BUILD_HTML_TRUE@      for f in $(HTMLDOCFILESALL); do \
+@BUILD_HTML_TRUE@        $(RM) $$f; \
+@BUILD_HTML_TRUE@      done
+@BUILD_HTML_TRUE@      -test -d $(DESTDIR)$(htmldocdir)/$(imagedir) && \
+@BUILD_HTML_TRUE@      cd $(DESTDIR)$(htmldocdir)/$(imagedir) && \
+@BUILD_HTML_TRUE@      for f in $(HTMLDOCIMAGEFILES); do \
+@BUILD_HTML_TRUE@        $(RM) $$f; \
+@BUILD_HTML_TRUE@      done
+@BUILD_HTML_TRUE@      -rmdir $(DESTDIR)$(htmldocdir)/$(imagedir)
+@BUILD_HTML_TRUE@      -rmdir $(DESTDIR)$(htmldocdir)
+
+# Texinfo doc
+#
+# Users who want to print out the groff manual are expected to have a
+# working TeX installation.  Note that texi2dvi properly honours the
+# `MAKEINFO' environment variable.
+#
+# We can't use automake's facilities because the make dist target attempts to 
+# generate a pdf version of groff.texi by invoking texi2dvi without the -e 
+# option, which is needed to build this file.
+# info_TEXINFOS = doc/groff.texi
+# doc_groff_TEXINFOS = doc/fdl.texi
+#
+# Note that GNU standards require to install only info doc. Info doc
+# can still be disabled by passing 
+# --with-doc=<something else than info or yes> 
+# to configure
+
+all: build_infodoc
+@BUILD_INFODOC_TRUE@build_infodoc: doc/groff.info
+@BUILD_INFODOC_TRUE@doc/groff.info: $(doc_srcdir)/groff.texi
+@BUILD_INFODOC_TRUE@   @$(MKDIR_P) $(doc_builddir)
+@BUILD_INFODOC_TRUE@   LANG=C \
+@BUILD_INFODOC_TRUE@   LC_ALL=C \
+@BUILD_INFODOC_TRUE@   $(MAKEINFO) -o doc/groff.info --enable-encoding -I$(doc_srcdir) $(doc_srcdir)/groff.texi
+@BUILD_INFODOC_FALSE@build_infodoc:
+# Rules to generate various doc files from .texi files.
+.texi.txt:
+       @$(MKDIR_P) $(doc_builddir)
+       LANG=C \
+       LC_ALL=C \
+       $(MAKEINFO) --enable-encoding -I$(doc_srcdir) --plaintext -o $@ $<
+
+.texi.dvi:
+@HAVE_TEXI2DVI_TRUE@   @$(MKDIR_P) $(doc_builddir)
+@HAVE_TEXI2DVI_TRUE@   LANG=C \
+@HAVE_TEXI2DVI_TRUE@   LC_ALL=C \
+@HAVE_TEXI2DVI_TRUE@   TEXINPUTS="$(top_srcdir)/build-aux:$(TEXINPUTS)" \
+@HAVE_TEXI2DVI_TRUE@   MAKEINFO='$(MAKEINFO) -I $(doc_srcdir)' \
+@HAVE_TEXI2DVI_TRUE@   $(TEXI2DVI) -e --batch --build-dir=doc/`basename $@`.t2d -o $@ $<
+@HAVE_TEXI2DVI_FALSE@  @echo "Program texi2dvi is missing, cannot generate dvi doc"; \
+@HAVE_TEXI2DVI_FALSE@  exit 1
+
+.texi.pdf:
+@HAVE_TEXI2DVI_TRUE@   @$(MKDIR_P) $(doc_builddir)
+@HAVE_TEXI2DVI_TRUE@   LANG=C \
+@HAVE_TEXI2DVI_TRUE@   LC_ALL=C \
+@HAVE_TEXI2DVI_TRUE@   TEXINPUTS="$(top_srcdir)/build-aux:$(TEXINPUTS)" \
+@HAVE_TEXI2DVI_TRUE@   MAKEINFO='$(MAKEINFO) -I $(doc_srcdir)' \
+@HAVE_TEXI2DVI_TRUE@   $(TEXI2DVI) -e --batch --pdf --build-dir=doc/`basename $@`.t2p -o $@ $<
+@HAVE_TEXI2DVI_FALSE@  @echo "Program texi2dvi is missing, cannot generate pdf doc"; \
+@HAVE_TEXI2DVI_FALSE@  exit 1
+
+# This will generate both html split into several files and html doc
+# in a single file. If texinfo version < 5.0, we process the resulting
+# (mono) .html file with fixinfo.sh du to a problem with blockquote
+# closing (for example 5.6.1 Setting Registers, the 'Request'
+# blockquote is not properly closed, see fixinfo.sh for more details
+.texi.html:
+       @$(MKDIR_P) $(doc_builddir)/
+       LANG=C \
+       LC_ALL=C \
+       $(MAKEINFO) --html -I $(doc_srcdir) \
+         -o doc/`basename $@`.node $<
+       LANG=C \
+       LC_ALL=C \
+       $(MAKEINFO) --html -I $(doc_srcdir) --no-split \
+         -o $@ $<
+       if test "$(makeinfo_version_numeric)" -lt 5000; then \
+         echo "patching $@ with fixinfo.sh"; \
+         $(SHELL) $(doc_srcdir)/fixinfo.sh \
+           doc/`basename $@`.mono/`basename $@`; \
+       fi
+
+# Targets to make all the doc in all formats. These doc are not built
+# by default. pdf, dvi, ps, html and their install equivalent
+# install-pdf, install-dvi, install-ps, install-html are standard
+# Automake targets.
+
+@BUILD_INFODOC_TRUE@doc: doc_all
+@BUILD_INFODOC_TRUE@doc_all: doc_txt dvi pdf html
+@BUILD_INFODOC_TRUE@doc_txt: doc/groff.txt
+@BUILD_INFODOC_TRUE@dvi: doc_dvi
+@BUILD_INFODOC_TRUE@doc_dvi: doc/groff.dvi
+@BUILD_INFODOC_TRUE@pdf: doc_pdf
+@BUILD_INFODOC_TRUE@doc_pdf: doc/groff.pdf
+@BUILD_INFODOC_TRUE@html: doc_html
+@BUILD_INFODOC_TRUE@doc_html: doc/groff.html
+@BUILD_INFODOC_TRUE@install-doc: install-pdf install-html
+
+distclean-local: clean_infodoc clean_otherdoc
+maintainer-clean-local: clean_infodoc clean_otherdoc
+clean_infodoc:
+       -$(RM) $(doc_builddir)/groff.info*
+       -$(RM) $(doc_builddir)/groff.pdf
+       -$(RM) $(doc_builddir)/groff.dvi
+       -$(RM) -r $(doc_builddir)/groff.html.*
+clean_otherdoc:
+       -cd $(doc_builddir) && \
+         $(RM) -r *.pdf *.html *.txt *.dvi *.t2p *.t2d
+
+install-data-local: install_infodoc
+@BUILD_INFODOC_TRUE@install_infodoc: doc/groff.info
+@BUILD_INFODOC_TRUE@   -test -d $(DESTDIR)$(infodir) || $(mkinstalldirs) $(DESTDIR)$(infodir)
+@BUILD_INFODOC_TRUE@     for p in doc/groff.info `ls doc/groff.info*`; do \
+@BUILD_INFODOC_TRUE@       f=`basename $$p`; \
+@BUILD_INFODOC_TRUE@       $(RM) $(DESTDIR)$(infodir)/$$f; \
+@BUILD_INFODOC_TRUE@       $(INSTALL_DATA) $$p $(DESTDIR)$(infodir)/$$f; \
+@BUILD_INFODOC_TRUE@     done
+@BUILD_INFODOC_TRUE@   $(INSTALL_INFO) --info-dir=$(DESTDIR)$(infodir) \
+@BUILD_INFODOC_TRUE@     $(DESTDIR)$(infodir)/groff.info
+@BUILD_INFODOC_TRUE@install-pdf-local: doc/groff.pdf
+@BUILD_INFODOC_TRUE@   -test -d $(DESTDIR)$(pdfdocdir) || $(mkinstalldirs) $(DESTDIR)$(pdfdocdir)
+@BUILD_INFODOC_TRUE@   cp $(top_builddir)/doc/groff.pdf $(DESTDIR)$(pdfdocdir)
+@BUILD_INFODOC_TRUE@install-html-local: doc/groff.html
+@BUILD_INFODOC_TRUE@   -test -d $(DESTDIR)$(htmldocdir)/groff.html.mono || $(mkinstalldirs) $(DESTDIR)$(htmldocdir)/groff.html.mono
+@BUILD_INFODOC_TRUE@   cp -r $(top_builddir)/doc/groff.html $(DESTDIR)$(htmldocdir)/groff.html.mono
+@BUILD_INFODOC_TRUE@   cp -r $(top_builddir)/doc/groff.html.node $(DESTDIR)$(htmldocdir)
+@BUILD_INFODOC_FALSE@install_infodoc:
+
+uninstall-local: uninstall_infodoc uninstall-pdf uninstall-html
+uninstall_doc: uninstall-local
+uninstall-doc: uninstall-local
+uninstall_infodoc:
+@BUILD_INFODOC_TRUE@   -$(INSTALL_INFO) --remove --info-dir=$(DESTDIR)$(infodir) \
+@BUILD_INFODOC_TRUE@     $(DESTDIR)$(infodir)/groff.info
+@BUILD_INFODOC_TRUE@   -for f in `ls $(DESTDIR)$(infodir)/groff.info*`; do \
+@BUILD_INFODOC_TRUE@     $(RM) $$f; \
+@BUILD_INFODOC_TRUE@   done
+uninstall-pdf:
+@BUILD_INFODOC_TRUE@   -$(RM) -f $(DESTDIR)$(pdfdocdir)/groff.pdf 
+uninstall-html:
+@BUILD_INFODOC_TRUE@   -$(RM) -r $(DESTDIR)$(htmldocdir)/groff.html.*
+gnu.eps:
+       echo $(XPMTOPPM)
+       if test -f $(top_srcdir)/doc/gnu.eps; then \
+         cp $(top_srcdir)/doc/gnu.eps . ; \
+       elif test -f $(top_builddir)/doc/gnu.eps; then \
+         cp $(top_builddir)/doc/gnu.eps . ; \
+       else \
+         if test ""$(XPMTOPPM) != "found"; then \
+           echo "Program xpmtoppm is missing, can't generate gnu.eps" ; \
+           exit 1; \
+         fi; \
+         if test ""$(pnmtops) != "found"; then \
+           echo "Program pnmtops is missing, can't generate gnu.eps" ; \
+           exit 1; \
+         fi; \
+         if test "$(pnmtops_nosetpage)" != "pnmtops -nosetpage"; then \
+           echo "Program pnmtops can't handle -nosetpage, can't generate gnu.eps" ; \
+           exit 1; \
+         fi; \
+         xpmtoppm $(top_srcdir)/doc/gnu.xpm | pnmdepth 15 \
+           | $(pnmtops_nosetpage) -noturn -rle >$@ ; \
+       fi
+
+# Copy gnu.eps in 'doc' directory
+dist-hook: dist-gnueps
+dist-gnueps:
+       chmod u+w $(distdir)/doc
+       cp -f gnu.eps $(distdir)/doc
+
+########################################################################
+### Emacs settings
+# Local Variables:
+# mode: makefile-automake
+# End:
+
+########################################################################
+# Editor settings
+########################################################################
+#
+# Local Variables:
+# mode: makefile-automake
+# fill-column: 72
+# End:
+# vim: set filetype=automake textwidth=72:
+
+########################################################################
+# Editor settings
+########################################################################
+#
+# Local Variables:
+# mode: makefile-automake
+# fill-column: 72
+# End:
+# vim: set filetype=automake textwidth=72:
+
+########################################################################
+# Editor settings
+########################################################################
+#
+# Local Variables:
+# mode: makefile-automake
+# fill-column: 72
+# End:
+# vim: set filetype=automake textwidth=72:
+
+########################################################################
+# Editor settings
+########################################################################
+#
+# Local Variables:
+# mode: makefile-automake
+# fill-column: 72
+# End:
+# vim: set filetype=automake textwidth=72:
+
+$(DEVASCIIFONTSFILES): $(devascii_srcdir)/R.proto
+       $(AM_V_GEN)$(MKDIR_P) `dirname $@` \
+       && $(RM) $@ \
+       && $(SHELL) $(GENFONTSSH) $(devascii_srcdir)/R.proto \
+            $(DEVASCIIRES) $(DEVASCIICPI) `basename $@` > $@
+
+font/devascii/DESC: $(devascii_srcdir)/DESC.proto
+       $(AM_V_GEN)$(MKDIR_P) `dirname $@` \
+       && $(SHELL) $(GENDESCSH) $(devascii_srcdir)/DESC.proto \
+            $(DEVASCIIRES) $(DEVASCIICPI) $(DEVASCIILPI) \
+            $(DEVASCIIFONTS) > $@
+
+########################################################################
+# Editor settings
+########################################################################
+#
+# Local Variables:
+# mode: makefile-automake
+# fill-column: 72
+# End:
+# vim: set filetype=automake textwidth=72:
+
+$(DEVCP1047FONTSFILES): $(devcp1047_srcdir)/R.proto
+       $(AM_V_GEN)$(MKDIR_P) `dirname $@` \
+       && $(RM) $@ \
+       && $(SHELL) $(GENFONTSSH) $(devcp1047_srcdir)/R.proto \
+            $(DEVCP1047RES) $(DEVCP1047CPI) `basename $@` > $@
+
+font/devcp1047/DESC: $(devcp1047_srcdir)/DESC.proto
+       $(AM_V_GEN)$(MKDIR_P) `dirname $@` \
+       && $(SHELL) $(GENDESCSH) $(devcp1047_srcdir)/DESC.proto \
+            $(DEVCP1047RES) $(DEVCP1047CPI) $(DEVCP1047LPI) \
+            $(DEVCP1047FONTS) > $@
+
+########################################################################
+# Editor settings
+########################################################################
+#
+# Local Variables:
+# mode: makefile-automake
+# fill-column: 72
+# End:
+# vim: set filetype=automake textwidth=72:
+
+font/devdvi/DESC: $(devdvi_srcdir)/DESC.in
+       $(AM_V_GEN)$(MKDIR_P) `dirname $@` \
+       && cat $(devdvi_srcdir)/DESC.in >$@ \
+       && if test "$(PAGE)" = A4; then \
+            echo "papersize a4" >>$@; \
+          else \
+            echo "papersize letter" >>$@; \
+          fi \
+       && (test -z '$(DVIPRINT)' \
+           || echo print '$(DVIPRINT)' >>$@)
+
+########################################################################
+# Editor settings
+########################################################################
+#
+# Local Variables:
+# mode: makefile-automake
+# fill-column: 72
+# End:
+# vim: set filetype=automake textwidth=72:
+
+$(DEVHTMLFONTSFILES): $(devhtml_srcdir)/R.proto
+       $(AM_V_GEN)$(MKDIR_P) `dirname $@` \
+       && $(RM) $@ \
+       && $(SHELL) $(GENFONTSSH) $(devhtml_srcdir)/R.proto \
+            $(DEVHTMLRES) $(DEVHTMLCPI) `basename $@` > $@
+
+font/devhtml/DESC: $(devhtml_srcdir)/DESC.proto
+       $(AM_V_GEN)$(MKDIR_P) `dirname $@` \
+       && $(SHELL) $(GENDESCSH) $(devhtml_srcdir)/DESC.proto \
+            $(DEVHTMLRES) $(DEVHTMLCPI) $(DEVHTMLLPI) $(DEVHTMLFONTS) > $@ \
+       && echo "image_generator $(GHOSTSCRIPT)" >> $@
+
+########################################################################
+# Editor settings
+########################################################################
+#
+# Local Variables:
+# mode: makefile-automake
+# fill-column: 72
+# End:
+# vim: set filetype=automake textwidth=72:
+
+$(DEVLATIN1FONTSFILES): $(devlatin1_srcdir)/R.proto
+       $(AM_V_GEN)$(MKDIR_P) `dirname $@` \
+       && $(RM) $@ \
+       && $(SHELL) $(GENFONTSSH) $(devlatin1_srcdir)/R.proto \
+            $(DEVLATIN1RES) $(DEVLATIN1CPI) `basename $@` > $@
+
+font/devlatin1/DESC: $(devlatin1_srcdir)/DESC.proto
+       $(AM_V_GEN)$(MKDIR_P) `dirname $@` \
+       && $(SHELL) $(GENDESCSH) $(devlatin1_srcdir)/DESC.proto \
+            $(DEVLATIN1RES) $(DEVLATIN1CPI) $(DEVLATIN1LPI) \
+            $(DEVLATIN1FONTS) > $@
+
+########################################################################
+# Editor settings
+########################################################################
+#
+# Local Variables:
+# mode: makefile-automake
+# fill-column: 72
+# End:
+# vim: set filetype=automake textwidth=72:
+
+font/devlbp/DESC: $(devlbp_srcdir)/DESC.in
+       $(AM_V_GEN)$(MKDIR_P) `dirname $@` \
+       && cat $(devlbp_srcdir)/DESC.in >$@ \
+       && if test "$(PAGE)" = A4; then \
+            echo "papersize a4" >>$@; \
+          else \
+            echo "papersize letter" >>$@; \
+          fi \
+       && (test -z '$(LBPPRINT)' \
+           || echo print '$(LBPPRINT)' >>$@)
+
+########################################################################
+# Editor settings
+########################################################################
+#
+# Local Variables:
+# mode: makefile-automake
+# fill-column: 72
+# End:
+# vim: set filetype=automake textwidth=72:
+
+font/devlj4/DESC: $(devlj4_srcdir)/DESC.in
+       $(AM_V_GEN)$(MKDIR_P) `dirname $@` \
+       && echo "res $(LJ4RES)" >$@ \
+       && echo "unitwidth `expr 7620000 / $(LJ4RES)`" >>$@ \
+       && cat $(devlj4_srcdir)/DESC.in >>$@ \
+       && if test "$(PAGE)" = A4; then \
+            echo "papersize a4" >>$@; \
+          else \
+            echo "papersize letter" >>$@; \
+          fi \
+       && (test -z '$(LJ4PRINT)' \
+           || echo print '$(LJ4PRINT)' >>$@)
+
+fonts: devlj4_fonts
+devlj4_fonts: hpftodit font/devlj4/DESC
+       $(MAKE) -f $(devlj4_srcdir)/generate/Makefile \
+         srcdir=$(devlj4_srcdir)/generate \
+         HPFTODIT=$(top_builddir)/hpftodit
+
+########################################################################
+# Editor settings
+########################################################################
+#
+# Local Variables:
+# mode: makefile-automake
+# fill-column: 72
+# End:
+# vim: set filetype=automake textwidth=72:
+
+font/devpdf/enc/text.enc:
+       @$(MKDIR_P) $(top_builddir)/font/devpdf/enc
+       cp -f $(top_srcdir)/font/devps/text.enc \
+         $(top_builddir)/font/devpdf/enc
+
+font/devpdf/map/symbolmap:
+       @$(MKDIR_P) $(top_builddir)/font/devpdf/map
+       @cp -f $(top_srcdir)/font/devps/symbolmap \
+         $(top_builddir)/font/devpdf/map
+
+$(DEVPDFFONTMAP_1):
+       @$(MKDIR_P) $(top_builddir)/font/devpdf/map
+       @cp -f $(top_srcdir)/font/devps/generate/`basename $@` \
+         $(top_builddir)/font/devpdf/map
+
+font/devpdf/util/BuildFoundries: shdeps.sed \
+  $(devpdf_srcdir)/util/BuildFoundries.pl
+       $(AM_V_GEN)$(MKDIR_P) $(top_builddir)/font/devpdf/util \
+       && $(RM) $(top_builddir)/font/devpdf/util/BuildFoundries \
+       && if test -n "$(PERL)"; then \
+            sed -f $(SH_DEPS_SED_SCRIPT) \
+                -e "s|/usr/bin/perl|$(PERL)|" \
+                -e "s|[@]GROFF_GHOSTSCRIPT_INTERPRETERS[@]|$(GHOSTSCRIPT)|" \
+                -e "s|[@]VERSION[@]|$(VERSION)|" \
+                -e "s|[@]GROFF_FONT_DIR[@]|$(fontdir)|" \
+                $(devpdf_srcdir)/util/BuildFoundries.pl \
+                >$(top_builddir)/font/devpdf/util/BuildFoundries; \
+          else \
+            sed -f $(SH_DEPS_SED_SCRIPT) \
+                -e "s|[@]VERSION[@]|$(VERSION)|" \
+                -e "s|[@]GROFF_FONT_DIR[@]|$(fontdir)|" \
+                $(devpdf_srcdir)/util/BuildFoundries.pl \
+                >$(top_builddir)/font/devpdf/util/BuildFoundries; \
+          fi \
+       && chmod +x $(top_builddir)/font/devpdf/util/BuildFoundries
+
+font/devpdf/DESC: $(devpdf_srcdir)/DESC.in
+       $(AM_V_GEN)$(MKDIR_P) $(top_builddir)/font/devpdf \
+       && $(RM) $(top_builddir)/font/devpdf/DESC \
+       && cat $(devpdf_srcdir)/DESC.in >$(top_builddir)/font/devpdf/DESC \
+       && if test "$(PAGE)" = A4; then \
+            echo "papersize a4" >>$(top_builddir)/font/devpdf/DESC; \
+          else \
+            echo "papersize letter" >>$(top_builddir)/font/devpdf/DESC; \
+          fi
+
+font/devpdf/Foundry:
+       $(AM_V_GEN)$(RM) $(top_builddir)/font/devpdf/Foundry \
+       && sed "s|[@]urwfontsdir[@]|$(urwfontsdir)|" \
+              $(devpdf_srcdir)/Foundry.in >$(top_builddir)/$@
+
+all: font/devpdf/build_font_files
+
+# PATH: path to find afmtodit. We add $(abs_top_builddir) because
+# afmtodit is built in the top builddir.
+font/devpdf/build_font_files: afmtodit font/devpdf/DESC \
+  $(devpdffontenc_DATA) $(devpdffontmap_DATA) $(devpdffont_DATA) \
+  font/devpdf/util/BuildFoundries
+       @if $(AM_V_P); then \
+         set -x; \
+       else \
+         echo "  GEN      $(top_builddir)/font/devpdf/download"; \
+       fi \
+       && $(RM) $@ \
+       && $(MKDIR_P) $(top_builddir)/font/devpdf \
+       && echo "# foundry      ps name psfile" > $(top_builddir)/font/devpdf/download \
+       && PATH="$(abs_top_builddir)$(GROFF_PATH_SEPARATOR)$(abs_top_builddir)/build-aux$(GROFF_PATH_SEPARATOR)$(PATH)" \
+            $(abs_top_builddir)/font/devpdf/util/BuildFoundries \
+              $(abs_top_builddir)/font/devpdf \
+              '$(abs_top_srcdir)/font/devps : $(abs_top_builddir)/font/devps' \
+              >> $(top_builddir)/font/devpdf/download \
+       && touch $@
+
+mostlyclean-local: mostlyclean_devpdf_extra
+mostlyclean_devpdf_extra:
+       @echo Cleaning font/devpdf
+       rm -rf $(top_builddir)/font/devpdf/enc \
+         $(top_builddir)/font/devpdf/map;
+       if test -d $(top_builddir)/font/devpdf; then \
+         for f in $(GROFF_FONT_FILES); do \
+           rm -f $(top_builddir)/font/devpdf/$$f; \
+         done; \
+       fi
+
+install-data-local: install_devpdf
+install_devpdf:
+       @echo Installing devpdf files
+       -@test -d $(DESTDIR)$(devpdffontdir) \
+         || $(mkinstalldirs) $(DESTDIR)$(devpdffontdir)
+       @for f in $(GROFF_FONT_FILES); do \
+         $(RM) $(DESTDIR)$(devpdffontdir)/$$f; \
+         if test -f $$f; then \
+           $(INSTALL_DATA) $$f $(DESTDIR)$(devpdffontdir)/$$f; \
+         else \
+           $(INSTALL_DATA) $(top_builddir)/font/devpdf/$$f \
+             $(DESTDIR)$(devpdffontdir)/$$f; \
+         fi; \
+       done
+       $(INSTALL_DATA) $(top_builddir)/font/devpdf/download \
+         $(DESTDIR)$(devpdffontdir)/
+
+uninstall_groffdirs: uninstall_devpdf
+uninstall_devpdf:
+       @echo Uninstalling devpdf files
+       if test -d $(DESTDIR)$(devpdffontdir); then \
+         for f in $(GROFF_FONT_FILES); do \
+           rm -f $(DESTDIR)$(devpdffontdir)/$$f; \
+         done; \
+         if test -d $(DESTDIR)$(devpdffontencdir); then \
+           rmdir $(DESTDIR)$(devpdffontencdir); \
+         fi; \
+         if test -d $(DESTDIR)$(devpdffontmapdir); then \
+           rmdir $(DESTDIR)$(devpdffontmapdir); \
+         fi; \
+         rm -f $(DESTDIR)$(devpdffontdir)/download; \
+         rmdir $(DESTDIR)$(devpdffontdir); \
        fi
 
-do=all
-dodirs=$(ALLDIRS) $(OTHERDIRS) dot
-# Default target for subdir_Makefile
-subdir=src/roff/troff
-
-$(TARGETS):
-       @$(ENVSETUP); $(MAKE) $(MAKE_K_FLAG) do=$@ $(ALLDIRS)
-       @$(ENVSETUP); $(MAKE) $(MAKE_K_FLAG) do=$@ $(OTHERDIRS) dot
-
-clean: clean-gnulib
-clean-gnulib:
-       @$(ENVSETUP); cd src/libs/gnulib; $(MAKE) $(MAKE_K_FLAG) clean
-
-distclean: distclean-gnulib
-distclean-gnulib:
-       @$(ENVSETUP); cd src/libs/gnulib; $(MAKE) $(MAKE_K_FLAG) distclean
-       rm -rf src/libs/gnulib/autom4te.cache
-
-dot: FORCE
-       @$(ENVSETUP); \
-       $(MAKE) $(MAKE_K_FLAG) $(MDEFINES) srcdir=$(srcdir) VPATH=$(srcdir) \
-         -f $(top_srcdir)/Makefile.comm \
-         -f $(top_srcdir)/Makefile.sub $(do)
-
-$(LIBDIRS): FORCE $(INCDIRS) $(PROGDEPDIRS) $(GNULIBDIRS)
-       @$(ENVSETUP); \
-       if test $(srcdir) = .; then \
-         srcdir=.; \
-       else \
-         srcdir=$(top_srcdir)/$@; \
-       fi; \
-       test -d $@ || $(mkinstalldirs) $@; \
-       cd $@; \
-       test -f Makefile.dep || touch Makefile.dep; \
-       $(MAKE) $(MAKE_K_FLAG) $(MDEFINES) srcdir=$$srcdir VPATH=$$srcdir \
-         -f $(top_srcdir)/Makefile.comm \
-         -f $$srcdir/Makefile.sub \
-         -f $(top_srcdir)/Makefile.lib \
-         -f Makefile.dep $(do)
-
-$(CPROGDIRS) $(XPROGDIRS): FORCE $(LIBDIRS)
-       @$(ENVSETUP); \
-       if test $(srcdir) = .; then \
-         srcdir=.; \
-       else \
-         srcdir=$(top_srcdir)/$@; \
-       fi; \
-       test -d $@ || $(mkinstalldirs) $@; \
-       cd $@; \
-       test -f Makefile.dep || touch Makefile.dep; \
-       $(MAKE) $(MAKE_K_FLAG) $(MDEFINES) srcdir=$$srcdir VPATH=$$srcdir \
-         -f $(top_srcdir)/Makefile.comm \
-         -f $$srcdir/Makefile.sub \
-         -f $(top_srcdir)/Makefile.cpg \
-         -f Makefile.dep $(do)
-
-$(CCPROGDIRS): FORCE $(LIBDIRS)
-       @$(ENVSETUP); \
-       if test $(srcdir) = .; then \
-         srcdir=.; \
-       else \
-         srcdir=$(top_srcdir)/$@; \
-       fi; \
-       test -d $@ || $(mkinstalldirs) $@; \
-       cd $@; \
-       test -f Makefile.dep || touch Makefile.dep; \
-       $(MAKE) $(MAKE_K_FLAG) $(MDEFINES) srcdir=$$srcdir VPATH=$$srcdir \
-         -f $(top_srcdir)/Makefile.comm \
-         -f $$srcdir/Makefile.sub \
-         -f $(top_srcdir)/Makefile.ccpg \
-         -f Makefile.dep $(do)
-
-$(DEVDIRS) $(XDEVDIRS) $(OTHERDEVDIRS) $(TTYDEVDIRS): FORCE \
-               $(PROGDEPDIRS) $(CCPROGDIRS) $(CPROGDIRS)
-       @$(ENVSETUP); \
-       if test $(srcdir) = .; then \
-         srcdir=.; \
+########################################################################
+# Editor settings
+########################################################################
+#
+# Local Variables:
+# mode: makefile-automake
+# fill-column: 72
+# End:
+# vim: set filetype=automake textwidth=72:
+
+font/devps/DESC: $(devps_srcdir)/DESC.in
+       $(AM_V_GEN)$(MKDIR_P) font/devps \
+       && cat $(devps_srcdir)/DESC.in >$@ \
+       && echo broken $(BROKEN_SPOOLER_FLAGS) >>$@ \
+       && if test "$(PAGE)" = A4; then \
+            echo "papersize a4" >>$@; \
+          else \
+            echo "papersize letter" >>$@; \
+          fi \
+       && (test -z '$(PSPRINT)' \
+           || echo print '$(PSPRINT)' >>$@)
+
+fonts: devps_fonts
+# We add top_builddir to the PATH in case the only afmtodit available is
+# the one in the current build.
+devps_fonts: afmtodit font/devps/DESC
+       PATH=$(top_builddir)$(GROFF_PATH_SEPARATOR)$(PATH) \
+         $(MAKE) -f $(devps_srcdir)/generate/Makefile \
+         srcdir=$(devps_srcdir)/generate DESC=$(devps_srcdir)/DESC.in
+
+font/devps/prologue: $(devps_srcdir)/prologue.ps
+       $(AM_V_GEN)$(MKDIR_P) font/devps \
+       && $(RM) $@ \
+       && sed -f $(devps_srcdir)/psstrip.sed $? >$@
+font/devps/zapfdr.pfa: $(devps_srcdir)/zapfdr.ps
+       $(AM_V_GEN)$(MKDIR_P) font/devps \
+       && $(RM) $@ \
+       && sed -f $(devps_srcdir)/psstrip.sed $? >$@
+font/devps/symbolsl.pfa: $(devps_srcdir)/symbolsl.ps
+       $(AM_V_GEN)$(MKDIR_P) font/devps \
+       && $(RM) $@ \
+       && sed -f $(devps_srcdir)/psstrip.sed $? >$@
+
+########################################################################
+# Editor settings
+########################################################################
+#
+# Local Variables:
+# mode: makefile-automake
+# fill-column: 72
+# End:
+# vim: set filetype=automake textwidth=72:
+
+$(DEVUTF8FONTSFILES): $(devutf8_srcdir)/R.proto
+       $(AM_V_GEN)$(MKDIR_P) `dirname $@` \
+       && $(RM) $@ \
+       && $(SHELL) $(GENFONTSSH) $(devutf8_srcdir)/R.proto \
+            $(DEVUTF8RES) $(DEVUTF8CPI) `basename $@` > $@
+
+font/devutf8/DESC: $(devutf8_srcdir)/DESC.proto
+       $(AM_V_GEN)$(MKDIR_P) `dirname $@` \
+       && $(SHELL) $(GENDESCSH) $(devutf8_srcdir)/DESC.proto \
+            $(DEVUTF8RES) $(DEVUTF8CPI) $(DEVUTF8LPI) $(DEVUTF8FONTS) > $@
+
+########################################################################
+# Editor settings
+########################################################################
+#
+# Local Variables:
+# mode: makefile-automake
+# fill-column: 72
+# End:
+# vim: set filetype=automake textwidth=72:
+
+########################################################################
+# Editor settings
+########################################################################
+#
+# Local Variables:
+# mode: makefile-automake
+# fill-column: 72
+# End:
+# vim: set filetype=automake textwidth=72:
+man:
+       $(MKDIR_P) $(top_builddir)/man
+
+########################################################################
+# Editor settings
+########################################################################
+#
+# Local Variables:
+# mode: makefile-automake
+# fill-column: 72
+# End:
+# vim: set filetype=automake textwidth=72:
+defs.h: config.status
+       @$(SHELL) $(top_srcdir)/gendef.sh defs.h \
+       "PROG_PREFIX=\"$(g)\"" \
+       "DEVICE=\"$(DEVICE)\"" \
+       "INSTALLPATH=\"$(prefix)\"" \
+       "BINPATH=\"$(bindir)\"" \
+       "FONTPATH=\"$(fontpath)\"" \
+       "MACROPATH=\"$(tmacpath)\"" \
+       "INDEX_SUFFIX=\"$(indexext)\"" \
+       "COMMON_WORDS_FILE=\"$(common_words_file)\"" \
+       "DEFAULT_INDEX_DIR=\"$(indexdir)\"" \
+       "DEFAULT_INDEX_NAME=\"$(indexname)\"" \
+       "DEFAULT_INDEX=\"$(indexdir)/$(indexname)\""
+
+dist-hook: dist_include
+dist_include:
+       chmod u+w $(distdir)/src/include
+       cp -f $(top_srcdir)/src/include/*.h $(distdir)/src/include
+
+########################################################################
+# Editor settings
+########################################################################
+#
+# Local Variables:
+# mode: makefile-automake
+# fill-column: 72
+# End:
+# vim: set filetype=automake textwidth=72:
+src/libs/libbib/index.$(OBJEXT): defs.h
+
+########################################################################
+# Editor settings
+########################################################################
+#
+# Local Variables:
+# mode: makefile-automake
+# fill-column: 72
+# End:
+# vim: set filetype=automake textwidth=72:
+
+########################################################################
+# Editor settings
+########################################################################
+#
+# Local Variables:
+# mode: makefile-automake
+# fill-column: 72
+# End:
+# vim: set filetype=automake textwidth=72:
+
+# .o files have a 'libgroff_a-' prefix because we set libgroff_a_CPPFLAGS
+src/libs/libgroff/libgroff_a-device.$(OBJEXT): defs.h
+src/libs/libgroff/libgroff_a-fontfile.$(OBJEXT): defs.h
+src/libs/libgroff/libgroff_a-macropath.$(OBJEXT): defs.h
+src/libs/libgroff/libgroff_a-relocate.$(OBJEXT): defs.h
+
+src/libs/libgroff/version.cpp: $(top_srcdir)/.version
+       @echo Making version.cpp
+       @echo const char \*version_string = \"$(MAJOR_VERSION).$(MINOR_VERSION)\"\; >$@
+       @echo const char \*revision_string = \"$(REVISION)\"\; >>$@
+       @echo extern \"C\" { >>$@
+       @echo const char \*Version_string = \"$(VERSION)\"\; >>$@
+       @echo } >>$@ \
+         | sed -e 's/\.0\"/\"/' >>$@
+
+all: charset.alias ref-add.sed ref-del.sed
+
+charset.alias: $(libgroff_srcdir)/config.charset
+       $(SHELL) $(libgroff_srcdir)/config.charset '$(HOST)' > t-$@
+       mv t-$@ $@
+
+ref-add.sed : $(libgroff_srcdir)/ref-add.sin
+       sed -e '/^#/d' \
+           -e 's/@''PACKAGE''@/$(LIBGROFF_PACKAGE)/g' $(libgroff_srcdir)/ref-add.sin > t-$@
+       mv t-$@ $@
+
+ref-del.sed : $(libgroff_srcdir)/ref-del.sin
+       sed -e '/^#/d' \
+           -e 's/@''PACKAGE''@/$(LIBGROFF_PACKAGE)/g' $(libgroff_srcdir)/ref-del.sin > t-$@
+       mv t-$@ $@
+
+install-data-local: install_charset_data
+install_charset_data:
+       -test $(GLIBC21) != no || $(mkinstalldirs) $(DESTDIR)$(libdir)
+       if test -f $(DESTDIR)$(libdir)/charset.alias; then \
+         sed -f ref-add.sed $(DESTDIR)$(libdir)/charset.alias \
+           > $(DESTDIR)$(libdir)/t-charset.alias; \
+         $(INSTALL_DATA) $(DESTDIR)$(libdir)/t-charset.alias \
+           $(DESTDIR)$(libdir)/charset.alias; \
+         rm -f $(DESTDIR)$(libdir)/t-charset.alias; \
        else \
-         srcdir=$(top_srcdir)/$@; \
-       fi; \
-       test -d $@ || $(mkinstalldirs) $@; \
-       cd $@; \
-       $(MAKE) $(MAKE_K_FLAG) $(MDEFINES) srcdir=$$srcdir VPATH=$$srcdir \
-         -f $(top_srcdir)/Makefile.comm \
-         -f $$srcdir/Makefile.sub \
-         -f $(top_srcdir)/Makefile.dev $(do)
-
-$(GNULIBDIRS): FORCE
-       @$(ENVSETUP); \
-       if test $(srcdir) = .; then \
-         srcdir=.; \
+         if test $(GLIBC21) = no; then \
+           sed -f ref-add.sed charset.alias \
+             > $(DESTDIR)$(libdir)/t-charset.alias; \
+           $(INSTALL_DATA) $(DESTDIR)$(libdir)/t-charset.alias \
+             $(DESTDIR)$(libdir)/charset.alias; \
+           rm -f $(DESTDIR)$(libdir)/t-charset.alias; \
+         fi; \
+       fi
+
+uninstall-local: uninstall_charset_data
+uninstall_charset_data:
+       -if test -f $(DESTDIR)$(libdir)/charset.alias; then \
+         sed -f ref-del.sed $(DESTDIR)$(libdir)/charset.alias \
+           > $(DESTDIR)$(libdir)/t-charset.alias; \
+         if grep '^# Packages using this file: $$' \
+                 $(DESTDIR)$(libdir)/t-charset.alias > /dev/null; then \
+           rm -f $(DESTDIR)$(libdir)/charset.alias; \
+         else \
+           $(INSTALL_DATA) $(DESTDIR)$(libdir)/t-charset.alias \
+             $(DESTDIR)$(libdir)/charset.alias; \
+         fi; \
+         rm -f $(DESTDIR)$(libdir)/t-charset.alias; \
+       fi
+
+########################################################################
+# Editor settings
+########################################################################
+#
+# Local Variables:
+# mode: makefile-automake
+# fill-column: 72
+# End:
+# vim: set filetype=automake textwidth=72:
+
+########################################################################
+# Editor settings
+########################################################################
+#
+# Local Variables:
+# mode: makefile-automake
+# fill-column: 72
+# End:
+# vim: set filetype=automake textwidth=72:
+
+########################################################################
+### Emacs settings
+# Local Variables:
+# mode: makefile-automake
+# End:
+
+########################################################################
+### Emacs settings
+# Local Variables:
+# mode: makefile-automake
+# End:
+
+########################################################################
+### Emacs settings
+# Local Variables:
+# mode: makefile-automake
+# End:
+
+########################################################################
+### Emacs settings
+# Local Variables:
+# mode: makefile-automake
+# End:
+
+gropdf: $(gropdf_dir)/gropdf.pl $(SH_DEPS_SED_SCRIPT)
+       $(AM_V_GEN)$(RM) $@ \
+       && sed -f $(SH_DEPS_SED_SCRIPT) \
+              -e "s|[@]VERSION[@]|$(VERSION)|" \
+              -e "s|[@]PERL[@]|$(PERL)|" \
+              -e "s|[@]GROFF_FONT_DIR[@]|$(fontpath)|" \
+              -e "s|[@]RT_SEP[@]|$(RT_SEP)|" $(gropdf_dir)/gropdf.pl \
+              >$@ \
+       && chmod +x $@
+
+pdfmom: $(gropdf_dir)/pdfmom.pl $(SH_DEPS_SED_SCRIPT)
+       $(AM_V_GEN)$(RM) $@ \
+       && sed -f $(SH_DEPS_SED_SCRIPT) \
+              -e "s|[@]VERSION[@]|$(VERSION)|" \
+              -e "s|[@]RT_SEP[@]|$(RT_SEP)|" \
+              -e "s|[@]PERL[@]|$(PERL)|" $(gropdf_dir)/pdfmom.pl \
+              >$@ \
+       && chmod +x $@
+
+########################################################################
+### Emacs settings
+# Local Variables:
+# mode: makefile-automake
+# End:
+
+########################################################################
+### Emacs settings
+# Local Variables:
+# mode: makefile-automake
+# End:
+
+########################################################################
+### Emacs settings
+# Local Variables:
+# mode: makefile-automake
+# End:
+
+# Because we defined gxditview_CPPFLAGS, automake renames all the xditview's 
+# objects, adding an "gxditview-" prefix. 
+@WITHOUT_X11_FALSE@src/devices/xditview/gxditview-device.$(OBJEXT): defs.h
+@WITHOUT_X11_FALSE@src/devices/xditview/gxditview-xditview.$(OBJEXT): $(XDITVIEW_GENHDRS)
+
+@WITHOUT_X11_FALSE@src/devices/xditview/GXditview-ad.h: $(xditview_srcdir)/GXditview.ad
+@WITHOUT_X11_FALSE@    @echo Making $@
+@WITHOUT_X11_FALSE@    $(SHELL) $(xditview_srcdir)/ad2c $(xditview_srcdir)/GXditview.ad > $@
+
+# Custom installation of GXditview.ad and GXditview-color.ad
+install-data-local: install_xditview
+uninstall-local: uninstall_xditview
+
+@WITHOUT_X11_TRUE@install_xditview:
+@WITHOUT_X11_TRUE@uninstall_xditview:
+@WITHOUT_X11_FALSE@install_xditview: $(xditview_srcdir)/GXditview.ad $(xditview_srcdir)/GXditview-color.ad
+@WITHOUT_X11_FALSE@    -test -d $(DESTDIR)$(appresdir) \
+@WITHOUT_X11_FALSE@      || $(mkinstalldirs) $(DESTDIR)$(appresdir)
+@WITHOUT_X11_FALSE@    if test -f $(DESTDIR)$(appresdir)/GXditview; then \
+@WITHOUT_X11_FALSE@      mv $(DESTDIR)$(appresdir)/GXditview \
+@WITHOUT_X11_FALSE@        $(DESTDIR)$(appresdir)/GXditview.old; \
+@WITHOUT_X11_FALSE@    fi
+@WITHOUT_X11_FALSE@    if test -f $(DESTDIR)$(appresdir)/GXditview-color; then \
+@WITHOUT_X11_FALSE@      mv $(DESTDIR)$(appresdir)/GXditview-color \
+@WITHOUT_X11_FALSE@        $(DESTDIR)$(appresdir)/GXditview-color.old; \
+@WITHOUT_X11_FALSE@    fi
+@WITHOUT_X11_FALSE@    $(INSTALL_DATA) $(xditview_srcdir)/GXditview.ad \
+@WITHOUT_X11_FALSE@      $(DESTDIR)$(appresdir)/GXditview
+@WITHOUT_X11_FALSE@    $(INSTALL_DATA) $(xditview_srcdir)/GXditview-color.ad \
+@WITHOUT_X11_FALSE@      $(DESTDIR)$(appresdir)/GXditview-color
+
+@WITHOUT_X11_FALSE@uninstall_xditview:
+@WITHOUT_X11_FALSE@    rm -f $(DESTDIR)$(appresdir)/GXditview
+@WITHOUT_X11_FALSE@    rm -f $(DESTDIR)$(appresdir)/GXditview-color
+
+########################################################################
+### Emacs settings
+# Local Variables:
+# mode: makefile-automake
+# End:
+
+src/preproc/eqn/eqn-lex.$(OBJEXT): src/preproc/eqn/eqn.hpp
+
+neqn: $(top_srcdir)/src/preproc/eqn/neqn.sh $(SH_DEPS_SED_SCRIPT)
+       $(AM_V_GEN)$(RM) $@ \
+       && sed -e 's/[@]g[@]/$(g)/g' \
+              -f $(SH_DEPS_SED_SCRIPT) \
+              -e $(SH_SCRIPT_SED_CMD) \
+              $(top_srcdir)/src/preproc/eqn/neqn.sh \
+              >$@ \
+       && chmod +x $@
+
+########################################################################
+### Emacs settings
+# Local Variables:
+# mode: makefile-automake
+# End:
+src/preproc/grn/main.$(OBJEXT): defs.h
+
+########################################################################
+### Emacs settings
+# Local Variables:
+# mode: makefile-automake
+# End:
+src/preproc/html/pre-html.$(OBJEXT): defs.h
+
+########################################################################
+### Emacs settings
+# Local Variables:
+# mode: makefile-automake
+# End:
+
+src/preproc/pic/pic-lex.$(OBJEXT): src/preproc/pic/pic.hpp
+
+########################################################################
+### Emacs settings
+# Local Variables:
+# mode: makefile-automake
+# End:
+
+########################################################################
+### Emacs settings
+# Local Variables:
+# mode: makefile-automake
+# End:
+# As refer_CPPFLAGS was set, all the .o have a 'refer-' prefix
+src/preproc/refer/refer-command.$(OBJEXT): defs.h
+src/preproc/refer/refer-ref.$(OBJEXT): defs.h
+src/preproc/refer/refer-refer.$(OBJEXT): defs.h
+src/preproc/refer/refer-token.$(OBJEXT): defs.h
+src/preproc/refer/refer-label.$(OBJEXT): defs.h
+
+########################################################################
+### Emacs settings
+# Local Variables:
+# mode: makefile-automake
+# End:
+
+########################################################################
+### Emacs settings
+# Local Variables:
+# mode: makefile-automake
+# End:
+
+########################################################################
+### Emacs settings
+# Local Variables:
+# mode: makefile-automake
+# End:
+src/roff/groff/groff.$(OBJEXT): defs.h
+
+groff_opts.tmp: src/roff/groff/groff.cpp
+       @$(GREP) -e ':.*:.*:' $? | sed -e 's/[ \t",]//g' > $@
+       @echo -n 'groff options: '
+       @cat $@
+
+groff_opts_no_arg.txt: groff_opts.tmp
+       @sed -e 's/[a-zA-Z]://g' $? > $@
+       @echo -n 'no arg: '
+       @cat $@
+
+groff_opts_with_arg.txt: groff_opts_no_arg.txt
+       @rm -f $@
+       @sed "s/[`cat $?`:]//g" groff_opts.tmp > $@
+       @echo -n 'with arg: '
+       @cat $@
+
+########################################################################
+# Editor settings
+########################################################################
+#
+# Local Variables:
+# mode: makefile-automake
+# fill-column: 72
+# End:
+# vim: set filetype=automake textwidth=72:
+
+# Perl version works for all parts of 'groff'.
+
+grog: $(grog_srcdir)/grog.pl $(GROG) $(SH_DEPS_SED_SCRIPT)
+       $(AM_V_GEN)$(RM) $@ \
+       && sed -f "$(SH_DEPS_SED_SCRIPT)" \
+              -e "1s|^\(#! \).*perl|\\1$(PERL)|" \
+              -e "s|[@]g[@]|$(g)|g" \
+              -e "s|[@]BINDIR[@]|$(DESTDIR)$(bindir)|g" \
+              -e "s|[@]libdir[@]|$(DESTDIR)$(libdir)|g" \
+              -e "s|[@]EGREP[@]|$(EGREP)|g" \
+              -e "s|[@]VERSION[@]|$(VERSION)|" \
+              -e "s|[@]grog_dir[@]|$(grog_dir)|" \
+              -e "$(SH_SCRIPT_SED_CMD)" \
+              $(grog_srcdir)/grog.pl \
+              >$@ \
+       && chmod +x $@
+
+########################################################################
+# Editor settings
+########################################################################
+#
+# Local Variables:
+# mode: makefile-automake
+# fill-column: 72
+# End:
+# vim: set filetype=automake textwidth=72:
+
+nroff: $(nroff_srcdir)/nroff.sh $(SH_DEPS_SED_SCRIPT)
+       $(AM_V_GEN)rm -f $@ \
+       && sed -f $(SH_DEPS_SED_SCRIPT) \
+              -e $(SH_SCRIPT_SED_CMD) \
+              -e "s|[@]VERSION[@]|$(VERSION)|" \
+              $(nroff_srcdir)/nroff.sh \
+              >$@ \
+       && chmod +x $@
+
+########################################################################
+### Emacs settings
+# Local Variables:
+# mode: makefile-automake
+# End:
+
+src/roff/troff/input.$(OBJEXT): defs.h
+
+src/roff/troff/majorminor.cpp: $(top_srcdir)/.version
+       @echo Making $@
+       @$(RM) $@
+       @echo const char \*major_version = \"$(MAJOR_VERSION)\"\; >$@
+       @echo const char \*minor_version = \"$(MINOR_VERSION)\"\; >>$@
+       @echo const char \*revision = \"$(REVISION)\"\; >>$@
+
+########################################################################
+# Editor settings
+########################################################################
+#
+# Local Variables:
+# mode: makefile-automake
+# fill-column: 72
+# End:
+# vim: set filetype=automake textwidth=72:
+
+########################################################################
+# Editor settings
+########################################################################
+#
+# Local Variables:
+# mode: makefile-automake
+# fill-column: 72
+# End:
+# vim: set filetype=automake textwidth=72:
+
+afmtodit: $(afmtodit_srcdir)/afmtodit.pl $(afmtodit_srcdir)/afmtodit.tables
+       $(AM_V_GEN)if test -n "$(PERL)"; then \
+         sed -e "s|/usr/bin/perl|$(PERL)|" \
+             -e "s|[@]VERSION[@]|$(VERSION)|" \
+             -e "s|[@]FONTDIR[@]|$(fontdir)|" \
+             -e "/[@]afmtodit.tables[@]/ r $(afmtodit_srcdir)/afmtodit.tables" \
+             -e "/[@]afmtodit.tables[@]/ d" \
+             $(afmtodit_srcdir)/afmtodit.pl \
+             >afmtodit; \
        else \
-         srcdir=$(top_srcdir)/$@; \
-       fi; \
-       test -d $@ || $(mkinstalldirs) $@; \
-       case $(do) in \
-       all) \
-         cd $@; \
-         args=`$(top_builddir)/config.status --config`; \
-         test -f Makefile \
-           || eval $$srcdir/configure "$$args" --srcdir=$$srcdir; \
-         $(MAKE) ACLOCAL=: AUTOCONF=: AUTOHEADER=: AUTOMAKE=: $(do) ;; \
-       esac
+         sed -e "s|[@]VERSION[@]|$(VERSION)|" \
+             -e "s|[@]FONTDIR[@]|$(fontdir)|" \
+             -e "/[@]afmtodit.tables[@]/ r $(afmtodit_srcdir)/afmtodit.tables" \
+             -e "/[@]afmtodit.tables[@]/ d" \
+             $(afmtodit_srcdir)/afmtodit.pl \
+             >afmtodit; \
+       fi \
+       && chmod +x afmtodit
+
+########################################################################
+# Editor settings
+########################################################################
+#
+# Local Variables:
+# mode: makefile-automake
+# fill-column: 72
+# End:
+# vim: set filetype=automake textwidth=72:
 
-$(OTHERDIRS): $(PROGDEPDIRS) $(CCPROGDIRS) $(CPROGDIRS) $(SHPROGDIRS)
+########################################################################
+# Editor settings
+########################################################################
+#
+# Local Variables:
+# mode: makefile-automake
+# fill-column: 72
+# End:
+# vim: set filetype=automake textwidth=72:
+src/utils/indxbib/indxbib.$(OBJEXT): defs.h
 
-$(INCDIRS) $(PROGDEPDIRS) $(SHPROGDIRS) $(OTHERDIRS): FORCE
-       @$(ENVSETUP); \
-       if test $(srcdir) = .; then \
-         srcdir=.; \
+install-data-local: install_indxbib
+install_indxbib: $(indxbib_srcdir)/eign
+       -test -d $(DESTDIR)$(datadir) \
+         || $(mkinstalldirs) $(DESTDIR)$(datadir)
+       -test -d $(DESTDIR)$(dataprogramdir) \
+         || $(mkinstalldirs) $(DESTDIR)$(dataprogramdir)
+       -test -d $(DESTDIR)$(datasubdir) \
+         || $(mkinstalldirs) $(DESTDIR)$(datasubdir)
+       if test -f /usr/lib/eign; then \
+         rm -f $(DESTDIR)$(common_words_file); \
+         ln -s /usr/lib/eign $(DESTDIR)$(common_words_file) 2>/dev/null \
+           || ln /usr/lib/eign $(DESTDIR)$(common_words_file) 2>/dev/null \
+           || cp /usr/lib/eign $(DESTDIR)$(common_words_file); \
        else \
-         srcdir=$(top_srcdir)/$@; \
-       fi; \
-       test -d $@ || $(mkinstalldirs) $@; \
-       cd $@; \
-       $(MAKE) $(MAKE_K_FLAG) $(MDEFINES) srcdir=$$srcdir VPATH=$$srcdir \
-         -f $(top_srcdir)/Makefile.comm \
-         -f $$srcdir/Makefile.sub \
-         -f $(top_srcdir)/Makefile.man $(do)
-
-.PHONY: dist
-dist:
-       if test "${doc_dist_target_ok}" != yes; then \
-         echo "The \`dist' target is not applicable to this configuration"; \
-         exit 1; \
+         rm -f $(DESTDIR)$(common_words_file); \
+         $(INSTALL_DATA) $(indxbib_srcdir)/eign $(DESTDIR)$(common_words_file); \
        fi
-       -rm -fr tmp
-       rm -f groff-$(version)$(revision).tar.gz
-       mkdir tmp
-       for d in $(DISTDIRS); do \
-         $(mkinstalldirs) tmp/$$d; \
-       done
-       cp Makefile tmp
-       -cp * tmp 2>/dev/null
-       -for d in $(DISTDIRS); do \
-         (cd tmp/$$d; \
-          cp $(top_srcdir)/$$d/* . 2>/dev/null;); \
-       done
-       cd tmp; $(MAKE) srcdir=. VPATH=. distfiles
-       cd tmp; $(MAKE) srcdir=. VPATH=. extraclean
-       for d in $(EXTRADIRS); do \
-         (cd tmp/$$d; \
-          if test -f Makefile; then \
-            $(MAKE) extraclean; \
-          else \
-            $(MAKE) -f $(top_builddir)/$$d/Makefile extraclean; \
-          fi); \
-       done
-       for d in $(GNULIBDIRS); do \
-         (cd tmp/$$d; \
-          if test -f config.status; then \
-            ./config.status; \
-          fi; \
-          if test -f Makefile; then \
-            $(MAKE) distclean; \
-          else \
-            $(MAKE) -f $(top_builddir)/$$d/Makefile distclean; \
-          fi; \
-          rm -rf autom4te.cache); \
-       done
-       rm -f tmp/Makefile
-       cp Makefile.init tmp/Makefile
-       mv tmp groff-$(version)$(revision)
-       tar cfh - groff-$(version)$(revision) \
-         | gzip -c >groff-$(version)$(revision).tar.gz
-       rm -fr groff-$(version)$(revision)
-
-# $(PROGDIRS): libgroff
-# grops grotty grodvi: libdriver
-# refer lookbib indxbib lkbib: libbib
-# $(LIBDIRS) $(PROGDIRS): include
-
-.PHONY: $(ALLDIRS) dot $(TARGETS) FORCE
-
-# Create a Makefile in $(subdir).  This is useful for development since it
-# avoids running make recursively.
-subdir_Makefile: Makefile.cfg
-       $(MAKE) do=Makefile $(subdir)
-
-Makefile.cfg: Makefile
-       >Makefile.cfg
-       for var in $(MDEFINES); do \
-         echo "$$var" >>Makefile.cfg; \
-       done
-
-Makefile: Makefile.in
-       $(SHELL) config.status
-
-.PHONY: install
-install:
-       -test -d $(DESTDIR)$(prefix) \
-         || $(mkinstalldirs) $(DESTDIR)$(prefix)
-       @$(ENVSETUP); $(MAKE) $(MAKE_K_FLAG) $(MDEFINES) \
-         do=do_install $(dodirs)
-       cd $(DESTDIR)$(dataprogramdir); \
-         rm -f current; \
-         $(LN_S) $(version)$(revision) current
-
-.PHONY: uninstall
-uninstall: uninstall_sub uninstall_dirs
-
-.PHONY: uninstall_dirs
-# Use `rmdir' here so that the directories are only removed if they are empty.
-uninstall_dirs:
-       rm -f $(DESTDIR)$(dataprogramdir)/current
-       -rmdir \
-         $(DESTDIR)$(man1dir) \
-         $(DESTDIR)$(man5dir) \
-         $(DESTDIR)$(man7dir) \
-         $(DESTDIR)$(manroot) \
-         $(DESTDIR)$(tmacdir) \
-         $(DESTDIR)$(systemtmacdir) \
-         $(DESTDIR)$(localtmacdir) \
-         $(DESTDIR)$(fontdir) \
-         $(DESTDIR)$(localfontdir) \
-         $(DESTDIR)$(oldfontdir) \
-         $(DESTDIR)$(bindir) \
-         $(DESTDIR)$(datasubdir) \
-         $(DESTDIR)$(dataprogramdir) \
-         $(DESTDIR)$(libprogramdir) \
-         $(DESTDIR)$(libdir) \
-         $(DESTDIR)$(infodir) \
-         $(DESTDIR)$(exampledir) \
-         $(DESTDIR)$(htmldocdir) \
-         $(DESTDIR)$(pdfdocdir) \
-         $(DESTDIR)$(docdir) \
-         $(DESTDIR)$(datadir)/doc/groff \
-         $(DESTDIR)$(datadir)/doc \
-         $(DESTDIR)$(datadir) 2>/dev/null || :
-
-.PHONY: check
-check:
-       @echo There is no validation suite for this package.
-
-#check: site.exp docheck
-#.PHONY: docheck
-
-#docheck:
-#      if $(SHELL) -c "runtest --version" > /dev/null 2>&1; then \
-#        runtest; \
-#      else \
-#        echo "WARNING: could not find \`runtest'" 1>&2; \
-#      fi
-
-# This snippet has been taken from the automake package.
-
-#site.exp:
-#      @echo "Making a new site.exp file..."
-#      @echo "## these variables are automatically generated by make ##" >site.tmp
-#      @echo "# Do not edit here.  If you wish to override these values" >>site.tmp
-#      @echo "# edit the last section" >>site.tmp
-#      @echo "set tool groff" >>site.tmp
-#      @echo "set srcdir $(srcdir)/testsuite" >>site.tmp
-#      @echo "set objdir `pwd`" >> site.tmp
-#      @echo "## All variables above are generated by configure.  Do not edit! ##" >> site.tmp
-#      @test ! -f site.exp \
-#        || sed '1,/^## All variables above are.*##/ d' site.exp >> site.tmp
-#      @rm -f site.bak
-#      @test ! -f site.exp || mv site.exp site.bak
-#      @mv site.tmp site.exp
-
-FORCE:
 
-.NOEXPORT:
+uninstall-local: uninstall_indxbib
+uninstall_indxbib:
+       rm -f $(DESTDIR)$(common_words_file)
+
+########################################################################
+### Emacs settings
+# Local Variables:
+# mode: makefile-automake
+# End:
+src/utils/lkbib/lkbib.$(OBJEXT): defs.h
+
+########################################################################
+### Emacs settings
+# Local Variables:
+# mode: makefile-automake
+# End:
+
+########################################################################
+### Emacs settings
+# Local Variables:
+# mode: makefile-automake
+# End:
+
+########################################################################
+### Emacs settings
+# Local Variables:
+# mode: makefile-automake
+# End:
+
+########################################################################
+### Emacs settings
+# Local Variables:
+# mode: makefile-automake
+# End:
+
+########################################################################
+### Emacs settings
+# Local Variables:
+# mode: makefile-automake
+# End:
+
+dist-hook: tmac-dist-hook
+tmac-dist-hook:
+       chmod u+w $(distdir)/tmac
+       for f in $(TMACMDOCFILES) $(TMACSTRIPFILES); do \
+         cp -f $(top_srcdir)/$$f-u $(distdir)/tmac; \
+       done
+
+$(TMACMDOCFILES) $(TMACSTRIPFILES): 
+       $(MKDIR_P) $(top_builddir)/tmac
+       for f in $(TMACMDOCFILES) $(TMACSTRIPFILES); do \
+          sed -f $(tmac_srcdir)/strip.sed $(top_srcdir)/$$f-u > $(top_builddir)/$$f; \
+       done
+
+tmac/www.tmac: tmac/www.tmac.in
+       $(MKDIR_P) $(top_builddir)/tmac
+       sed -e "s;[@]PNMTOPS_NOSETPAGE[@];$(pnmtops_nosetpage);g" \
+         $(tmac_srcdir)/www.tmac.in > $(top_builddir)/tmac/www.tmac
+
+# The installation of groff compatibility wrappers for vendor-provided
+# non-GNU macro sets is controlled by 'compatibility_wrappers' (see the
+# commentary surrounding m4/groff.m4's
+# GROFF_WITH_COMPATIBILITY_WRAPPERS).  Collision detection variables of
+# the form 'tmac_<macro>_prefix' are defined in Makefile.am, to assist
+# in the installation of groff-provided macro sets.
+#
+# When 'compatibility_wrappers' is 'no', one step is performed:
+#   - the groff-provided macro set implementations are installed in
+#     <prefix>/share/groff/<version>/tmac/ with the original macro set
+#     name
+#
+# When 'compatibility_wrappers' is 'yes', two steps are performed:
+#   - the groff-provided macro set implementations are installed in
+#     <prefix>/share/groff/<version>/tmac/ with a prefix of
+#     $(tmac_prefix) (which is usually 'g', via the appropriate
+#     collision detection variable)
+#   - the generated compatibility wrappers are installed in
+#     <prefix>/lib/groff/site-tmac, with the original macro set name
+#
+# When 'compatibility_wrappers' is 'manual', two steps are performed:
+#   - the groff-provided macro set implementations are installed in
+#     <prefix>/share/groff/<version>/tmac/ with the original macro set
+#     name
+#   - the generated compatibility wrappers are installed in
+#     <prefix>/lib/groff/site-tmac, with a name of
+#     <macro><wrapper_suffix>, (which is usually '-os', see
+#     'wrapper_suffix_default' in Makefile.am)
+
+all: tmac/stamp-wrap
+
+# Generate groff compatibility wrappers for all non-GNU OS provided
+# macro sets.
+tmac/stamp-wrap:
+       $(MKDIR_P) $(top_builddir)/tmac;
+       if test -n "$(tmac_wrap)"; then \
+         for m in ""$(tmac_wrap); do \
+           $(RM) $(top_builddir)/tmac/$$m-wrap; \
+           if test "$$m" = an; then \
+             echo .do mso andoc.tmac >>$(top_builddir)/tmac/$$m-wrap; \
+           fi; \
+           echo .cp 1 >>$(top_builddir)/tmac/$$m-wrap; \
+           echo .so $(sys_tmac_prefix)$$m >>$(top_builddir)/tmac/$$m-wrap; \
+         done; \
+       fi
+       touch $@
+
+# Install groff compatibility wrappers into
+# <prefix>/lib/groff/site-tmac.
+install-data-local: install_tmac_wrap
+install_tmac_wrap:
+       $(MKDIR_P) $(DESTDIR)$(systemtmacdir);
+       if test "$(compatibility_wrappers)" != "no"; then \
+         if test -n "$(tmac_wrap)"; then \
+           for m in ""$(tmac_wrap); do \
+             $(INSTALL_DATA) $(tmac_builddir)/$$m-wrap \
+                $(DESTDIR)$(systemtmacdir)/$$m$(wrapper_suffix).tmac; \
+           done; \
+         fi; \
+       fi
+
+# Rename the groff implementations of colliding macro sets to have a
+# prefix.
+install-data-hook: install_tmac_wrap_hook
+install_tmac_wrap_hook:
+       if test "$(compatibility_wrappers)" = "yes"; then \
+         if test -n "$(tmac_wrap)"; then \
+           if test -f $(DESTDIR)$(tmacdir)/s.tmac -a -n "$(tmac_s_prefix)"; \
+           then \
+             mv $(DESTDIR)$(tmacdir)/s.tmac \
+                $(DESTDIR)$(tmacdir)/$(tmac_s_prefix)s.tmac; \
+           fi; \
+           if test -f $(DESTDIR)$(tmacdir)/an.tmac -a -n "$(tmac_an_prefix)"; \
+           then \
+             mv $(DESTDIR)$(tmacdir)/an.tmac \
+                $(DESTDIR)$(tmacdir)/$(tmac_an_prefix)an.tmac; \
+           fi; \
+         fi; \
+       fi
+
+# Uninstall groff compatibility wrappers & renamed groff implementation
+# macro sets.
+uninstall_groffdirs: uninstall_tmac_hook
+uninstall_tmac_hook:
+       if test -n "$(tmac_wrap)"; then \
+         if test "$(compatibility_wrappers)" != "no"; then \
+           for m in ""$(tmac_wrap); do \
+             $(RM) $(DESTDIR)$(systemtmacdir)/$$m$(wrapper_suffix).tmac; \
+           done; \
+         fi; \
+         $(RM) -f $(DESTDIR)$(tmacdir)/$(tmac_an_prefix)an.tmac; \
+         $(RM) -f $(DESTDIR)$(tmacdir)/$(tmac_s_prefix)s.tmac; \
+       fi
+       if test -d $(DESTDIR)$(mdocdir); then \
+         rmdir $(DESTDIR)$(mdocdir); \
+       fi
+       if test -d $(DESTDIR)$(tmacdir); then \
+         rmdir $(DESTDIR)$(tmacdir); \
+       fi
+       if test -d $(DESTDIR)$(localtmacdir); then \
+         rmdir $(DESTDIR)$(localtmacdir); \
+       fi
 
 ########################################################################
-# Emacs settings
+# Editor settings
 ########################################################################
 #
 # Local Variables:
-# mode: makefile
+# mode: makefile-automake
+# fill-column: 72
+# End:
+# vim: set filetype=automake textwidth=72:
+
+# if there is a name prefix we install the man pages by hand
+all: generate_man_files
+install-data-hook: install-prefix-man
+uninstall-hook: uninstall-prefix-man
+@USEPROGRAMPREFIX_TRUE@generate_man_files: $(PREFIXMAN1)
+@USEPROGRAMPREFIX_TRUE@install-prefix-man:
+@USEPROGRAMPREFIX_TRUE@        for f in $(PREFIXMAN1); do \
+@USEPROGRAMPREFIX_TRUE@          cp -f $$f $(DESTDIR)$(man1dir)/$(NAMEPREFIX)`basename $$f`; \
+@USEPROGRAMPREFIX_TRUE@        done
+@USEPROGRAMPREFIX_TRUE@uninstall-prefix-man:
+@USEPROGRAMPREFIX_TRUE@        for f in $(PREFIXMAN1); do \
+@USEPROGRAMPREFIX_TRUE@          rm -f $(DESTDIR)$(man1dir)/$(NAMEPREFIX)`basename $$f`; \
+@USEPROGRAMPREFIX_TRUE@        done
+@USEPROGRAMPREFIX_FALSE@install-prefix-man:
+@USEPROGRAMPREFIX_FALSE@uninstall-prefix-man:
+@USEPROGRAMPREFIX_FALSE@generate_man_files:
+
+# Hook to create the 'current' symlink
+install-data-hook: create_current_symlink
+create_current_symlink:
+       cd $(DESTDIR)$(dataprogramdir); \
+         rm -f current; \
+         $(LN_S) $(SHORT_VERSION) current
+
+# Hook to move the binaries that potentially have a prefix from
+# prefixexecbindir to bindir.
+install-exec-hook: move_binaries_with_prefix
+move_binaries_with_prefix:
+@USEPROGRAMPREFIX_TRUE@        if test -n "$(NAMEPREFIX)"; then \
+@USEPROGRAMPREFIX_TRUE@           for f in $(prefixexecbin_PROGRAMS) $(prefixexecbin_SCRIPTS); do \
+@USEPROGRAMPREFIX_TRUE@              mv -f $(DESTDIR)$(prefixexecbindir)/$$f$(EXEEXT) \
+@USEPROGRAMPREFIX_TRUE@                 $(DESTDIR)$(bindir)/$(NAMEPREFIX)$$f$(EXEEXT); \
+@USEPROGRAMPREFIX_TRUE@           done \
+@USEPROGRAMPREFIX_TRUE@        fi
+
+# Always create the site-font directory as a guide to the user.
+install-data-hook: install_site_font
+install_site_font:
+       -test -d $(DESTDIR)$(localfontdir) \
+         || $(mkinstalldirs) $(DESTDIR)$(localfontdir)
+
+# Create systemtmacdir if not present
+install-data-hook: install_tmacdir
+install_tmacdir:
+       -test -d $(DESTDIR)$(systemtmacdir) \
+         || $(mkinstalldirs) $(DESTDIR)$(systemtmacdir)
+
+# directories specific to groff
+uninstall-hook: uninstall_groffdirs
+uninstall_groffdirs:
+       if test -d $(DESTDIR)$(datasubdir); then \
+         rm -rf $(DESTDIR)$(fontdir); \
+         rm -rf $(DESTDIR)$(oldfontdir); \
+         rmdir $(DESTDIR)$(datasubdir); \
+       fi
+       if test -d $(DESTDIR)$(dataprogramdir); then \
+         if test -h $(DESTDIR)$(dataprogramdir)/current; then \
+           rm -f $(DESTDIR)$(dataprogramdir)/current; \
+         fi; \
+         if test -d $(DESTDIR)$(localfontdir); then \
+           rm -f $(DESTDIR)$(localfontdir)/*; \
+           rmdir $(DESTDIR)$(localfontdir); \
+         fi; \
+         rmdir $(DESTDIR)$(dataprogramdir); \
+       fi
+       if test -d $(DESTDIR)$(grog_dir); then \
+         rmdir $(DESTDIR)$(grog_dir); \
+       fi
+       if test -d $(DESTDIR)$(libprogramdir); then \
+         if test -d $(DESTDIR)$(systemtmacdir); then \
+           rm -f $(DESTDIR)$(systemtmacdir)/*; \
+           rmdir $(DESTDIR)$(systemtmacdir); \
+         fi; \
+         rmdir $(DESTDIR)$(libprogramdir); \
+       fi
+       if test -d $(DESTDIR)$(docdir); then \
+         if test -d $(DESTDIR)$(exampledir); then \
+           rmdir $(DESTDIR)$(exampledir); \
+         fi; \
+         if test -d $(DESTDIR)$(htmldocdir); then \
+           rmdir $(DESTDIR)$(htmldocdir); \
+         fi; \
+         rmdir $(DESTDIR)$(docdir); \
+       fi
+
+# Uninstall program that have a 'g' prefix
+uninstall-hook: uninstall_binaries_with_prefix
+uninstall_binaries_with_prefix:
+@USEPROGRAMPREFIX_TRUE@        if test -n "$(NAMEPREFIX)"; then \
+@USEPROGRAMPREFIX_TRUE@           for f in $(prefixexecbin_PROGRAMS) $(prefixexecbin_SCRIPTS); do \
+@USEPROGRAMPREFIX_TRUE@              rm -f $(DESTDIR)$(bindir)/$(NAMEPREFIX)$$f$(EXEEXT); \
+@USEPROGRAMPREFIX_TRUE@           done; \
+@USEPROGRAMPREFIX_TRUE@        fi
+.man:
+       $(AM_V_GEN)rm -f $@ \
+       && $(MKDIR_P) `dirname $@` \
+       && LC_ALL=C \
+        sed -e "s|[@]APPRESDIR[@]|`echo $(appresdir) | sed -f $(makevarescape)`|g" \
+            -e "s|[@]BINDIR[@]|`echo $(bindir) | sed -f $(makevarescape)`|g" \
+            -e "s|[@]COMMON_WORDS_FILE[@]|`echo $(common_words_file) | sed -f $(makevarescape)`|g" \
+            -e "s|[@]DATASUBDIR[@]|`echo $(datasubdir) | sed -f $(makevarescape)`|g" \
+            -e "s|[@]DEFAULT_INDEX[@]|`echo $(indexdir)/$(indexname) | sed -f $(makevarescape)`|g" \
+            -e "s|[@]DEFAULT_INDEX_NAME[@]|`echo $(indexname) | sed -f $(makevarescape)`|g" \
+            -e "s|[@]DEVICE[@]|$(DEVICE)|g" \
+            -e "s|[@]DOCDIR[@]|`echo $(docdir) | sed -f $(makevarescape)`|g" \
+            -e "s|[@]EXAMPLEDIR[@]|`echo $(exampledir) | sed -f $(makevarescape)`|g" \
+            -e "s|[@]FONTDIR[@]|`echo $(fontdir) | sed -f $(makevarescape)`|g" \
+            -e "s|[@]g[@]|$(g)|g" \
+            -e "s![@]G[@]!`echo $(g) | tr '[a-z]' '[A-Z]'`!g" \
+            -e "s|[@]HTMLDOCDIR[@]|`echo $(htmldocdir) | sed -f $(makevarescape)`|g" \
+            -e "s|[@]INDEX_SUFFIX[@]|$(indexext)|g" \
+            -e "s|[@]LEGACYFONTDIR[@]|`echo $(legacyfontdir) | sed -f $(makevarescape)`|g" \
+            -e "s|[@]LOCALFONTDIR[@]|`echo $(localfontdir) | sed -f $(makevarescape)`|g" \
+            -e "s|[@]LOCALMACRODIR[@]|`echo $(localtmacdir) | sed -f $(makevarescape)`|g" \
+            -e "s|[@]MACRODIR[@]|`echo $(tmacdir) | sed -f $(makevarescape)`|g" \
+            -e "s|[@]MAN1EXT[@]|$(man1ext)|g" \
+            -e "s|[@]MAN5EXT[@]|$(man5ext)|g" \
+            -e "s|[@]MAN7EXT[@]|$(man7ext)|g" \
+            -e "s|[@]MDATE[@]|`$(PERL) $(top_srcdir)/mdate.pl $<`|g" \
+            -e "s|[@]OLDFONTDIR[@]|`echo $(oldfontdir) | sed -f $(makevarescape)`|g" \
+            -e "s|[@]PDFDOCDIR[@]|`echo $(pdfdocdir) | sed -f $(makevarescape)`|g" \
+            -e "s|[@]SYSTEMMACRODIR[@]|`echo $(systemtmacdir) | sed -f $(makevarescape)`|g" \
+            -e "s|[@]TMAC_AN_PREFIX[@]|$(tmac_an_prefix)|g" \
+            -e "s|[@]TMAC_M_PREFIX[@]|$(tmac_m_prefix)|g" \
+            -e "s|[@]TMAC_MDIR[@]|$(tmacdir)/mm|g" \
+            -e "s|[@]TMAC_S_PREFIX[@]|$(tmac_s_prefix)|g" \
+            -e "s|[@]VERSION[@]|$(VERSION)|g" \
+            $< \
+            >$@
+$(top_srcdir)/.version:
+       echo $(VERSION) > $@-t && mv $@-t $@
+dist-hook:
+       echo $(VERSION) > $(distdir)/.tarball-version
+
+########################################################################
+### Emacs settings
+# Local Variables:
+# mode: makefile-automake
 # End:
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/Makefile.lib b/Makefile.lib
deleted file mode 100644 (file)
index 221537e..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-# Copyright (C) 1989-2014 Free Software Foundation, Inc.
-#      Written by James Clark (jjc@jclark.com)
-#
-# This file is part of groff.
-#
-# groff 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.
-#
-# groff 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 <http://www.gnu.org/licenses/>.
-#
-# Makefile.lib
-#
-LIBCLEAN=lib$(LIB).$(LIBEXT)
-MAKEFILEPARTS=\
-  $(top_srcdir)/Makefile.comm \
-  $(top_builddir)/Makefile.cfg \
-  $(srcdir)/Makefile.sub \
-  $(top_srcdir)/Makefile.lib \
-  Makefile.dep
-
-all: lib$(LIB).$(LIBEXT)
-
-lib$(LIB).$(LIBEXT): $(OBJS)
-       $(AR) r $@ $?
-       $(RANLIB) $@
-
-depend: depend_src
-depend.temp: $(GENSRCS)
-TAGS: $(CCSRCS) $(CSRCS)
-Makefile: $(MAKEFILEPARTS)
-Makefile.dep:
-       touch Makefile.dep
-
-########################################################################
-# Emacs settings
-########################################################################
-#
-# Local Variables:
-# mode: makefile
-# End:
diff --git a/Makefile.sub b/Makefile.sub
deleted file mode 100644 (file)
index 9d6b193..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-# Copyright (C) 1989-2014 Free Software Foundation, Inc.
-#      Written by James Clark (jjc@jclark.com)
-#
-# This file is part of groff.
-#
-# groff 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.
-#
-# groff 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 <http://www.gnu.org/licenses/>.
-#
-# Makefile.sub
-#
-DISTCLEANFILES=\
-  Makefile \
-  config.cache \
-  config.log \
-  config.status \
-  groff.log \
-  groff.sum \
-  src/include/config.h \
-  site.bak \
-  site.exp \
-  stamp-h \
-  test-groff
-
-MOSTLYCLEANADD=\
-  Makefile.cfg \
-  conftest*
-
-M4MACROS=\
-  $(srcdir)/m4/ax_compare_version.m4 \
-  $(srcdir)/m4/ax_prog_perl_version.m4 \
-  $(srcdir)/m4/codeset.m4 \
-  $(srcdir)/m4/fcntl-o.m4 \
-  $(srcdir)/m4/glibc21.m4 \
-  $(srcdir)/m4/groff.m4 \
-  $(srcdir)/m4/iconv.m4 \
-  $(srcdir)/m4/lib-ld.m4 \
-  $(srcdir)/m4/lib-link.m4 \
-  $(srcdir)/m4/lib-prefix.m4 \
-  $(srcdir)/m4/localcharset.m4
-
-distfiles: configure
-
-$(srcdir)/configure: configure.ac $(srcdir)/aclocal.m4
-       cd $(srcdir) && autoconf && rm -rf autom4te.cache
-
-$(srcdir)/aclocal.m4: $(M4MACROS)
-       cd $(srcdir) && aclocal -I m4
-
-config.status: configure
-       $(SHELL) config.status --recheck
-
-# autoheader might not change config.hin, so touch a stamp file.
-$(srcdir)/config.hin: stamp-h.in
-$(srcdir)/stamp-h.in: configure.ac $(srcdir)/aclocal.m4
-       cd $(srcdir) && autoheader
-       echo timestamp > $(srcdir)/stamp-h.in
-
-config.h: stamp-h
-stamp-h: config.hin config.status
-       $(SHELL) config.status
-
-# Always create the site-font directory as a guide to the user.
-install_data:
-       -test -d $(DESTDIR)$(localfontdir) \
-         || $(mkinstalldirs) $(DESTDIR)$(localfontdir)
-
-########################################################################
-# Emacs settings
-########################################################################
-#
-# Local Variables:
-# mode: makefile
-# End:
diff --git a/NEWS b/NEWS
index eeb4090..1adb2a1 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,4 +1,4 @@
-    Copyright (C) 1992-2014 Free Software Foundation, Inc.
+    Copyright (C) 1992-2018 Free Software Foundation, Inc.
 
     Copying and distribution of this file, with or without modification,
     are permitted in any medium without royalty provided the copyright
@@ -7,6 +7,86 @@
 This file describes recent user-visible changes in groff.  Bug fixes are not
 described.  There are more details in the man and info pages.
 
+
+VERSION 1.22.4
+==============
+
+Troff
+-----
+
+o The `hy' request has been extended.  Value 16 enables hyphenation before
+  the last character, and value 32 enables hyphenation after the first
+  character.
+
+
+PDFPIC
+------
+
+o PDFPIC has been corrected so the behaviour is the same whether you use the
+  PostScript or PDF drivers.  However, this means that any documents which
+  were written using the old behaviour will not be rendered correctly if
+  using the PDF driver with the new version.
+
+  The change would mean that documents which relied on the previous
+  behaviour are likely to have a gap underneath the image which was not
+  there before.  If you see this effect there are three ways you can restore
+  the previous behaviour:
+
+  Add the line ".nr PDFPIC_NOSPACE 1" to the document before the first call
+  to .PDFPIC.
+
+  If it is just a single document which exhibits this behaviour you can run
+  groff adding "-rPDFPIC_NOSPACE=1" to the command line.
+
+  If you have many documents which rely on the previous behaviour you can
+  set an environment variable "export GROFF_PDFPIC_NOSPACE=1" which will
+  restore the previous behaviour for all runs.
+
+  Note that this change has no effect if you were using .PDFPIC with the
+  PostScript driver--only if you used it with the PDF driver.
+
+
+Gropdf
+------
+
+o Type 1 font loading is fixed to handle newer Ghostscript versions.
+
+o Handling of glyphs above position 255 is improved to allow many more
+  glyphs to be used.
+
+o New macros .pdftransition and .pdfpause are introduced to allow creation
+  of presentation slides.  Partially backward-compatible with present.tmac,
+  specifically the PAUSE, BLOCKS and BLOCKE commands.  Supports all the
+  transition types introduced in PDF v1.5 (see the gropdf man page).
+
+
+Miscellaneous
+-------------
+
+o A new 'configure' option --with-compatibility-wrappers controls how groff
+  compatibility wrappers for vendor-provided non-GNU macro sets are
+  installed (see ./configure --help).
+
+o eqn2graph, grap2graph, and pic2graph now attempt to adapt to very old
+  installed versions of the ImageMagick and GraphicsMagick programs
+  "convert".  They search the output of convert's "-help" option, and use
+  "-trim" if that string is found; otherwise, the old "-crop 0x0" method
+  (which produces incompatible results on versions that _do_ support
+  "-trim") is used.  The programs emit a warning to standard error if the
+  search fails and the old method is used.
+
+o eqn2graph no longer supports the "-unsafe" option.  It did nothing.
+
+o groffer now supports the output of XHTML.  Use the "--xhtml" or
+  "--mode=xhtml" command-line options to generate it.
+
+o Much work has been done, and is ongoing, to make groff's man pages better
+  examples for man page writers to follow.  groff_man(7) itself has been
+  expanded and largely rewritten to more precisely document the macro
+  package's behavior and to be more helpful and accessible to man page
+  writers who may never read any other groff documentation.
+
+
 VERSION 1.22.3
 ==============
 
@@ -48,7 +128,7 @@ Gpinyin
 -------
 
 o Another preprocessor from Bernd Warken to pretty-print Pinyin syllables
-  like `guo2wang2' as `guówáng'.
+  like `guo2wang2' as `guówáng'.
 
 
 Pdfroff
@@ -72,8 +152,11 @@ o The pdfroff utility script now activates its `--no-toc-relocation' option
 Macro Packages
 --------------
 
+o New default values for hyphenation.  The previous values were too strict,
+  suppressing some hyphenation points unnecessarily.
+
 o The -mom macro package now has full support for eqn, pic, and tbl, as well
-  as captioning and labelling of pdf images and preprocessor output.  Lists
+  as captioning and labelling of PDF images and preprocessor output.  Lists
   of Figures, Equations, and Tables can now be autogenerated.  PDF_IMAGE has
   a new FRAME option.
 
@@ -1243,7 +1326,7 @@ o The escapes `\%', `\&', `\)', and `\:' no longer cause an error in \X;
   single space characters.
 
 o The default tab distance in nroff mode is now 0.8i to be compatible
-  with UNIX troff.
+  with Unix troff.
 
 o Using the latin-1 input character 0xAD (soft hyphen) for the `shc'
   request was a bad idea.  Instead, it is now translated to `\%', and
@@ -1283,7 +1366,7 @@ o The PSPIC macro has been extended to work with DVI output (`pspic.tmac' is
 o The trace.tmac package now traces calls to `am' also.  Additionally, it
   works in compatibility mode.
 
-o `troff.1' has been split.  Differences to UNIX troff are now documented
+o `troff.1' has been split.  Differences to Unix troff are now documented
   in the new man page `groff_diff.7'.
 
 o `groff_mwww.7' has been renamed to `groff_www.7'.  The file mwww.tmac
@@ -1377,8 +1460,8 @@ Eqn2graph
 ---------
 
 o A new script contributed by Eric S. Raymond <esr@thyrsus.com>.  It
-  converts an EQN diagram into a cropped image.  Since it uses gs and the PNM
-  library, virtually all graphics formats are available for output.
+  converts an EQN diagram into a cropped image.  Since it uses gs and the
+  PNM library, virtually all graphics formats are available for output.
 
 Groffer
 -------
@@ -1600,6 +1683,8 @@ o The mdoc package has been completely rewritten, using the full power of
 
   Great care has been taken to assure backwards compatibility.  If you
   encounter any abnormal results, please report them to bug-groff@gnu.org.
+  [2018 UPDATE: This address no longer accepts bug reports; please use the
+  GNU Savannah bug tracker at http://savannah.gnu.org/bugs/?group=groff.]
 
 o A new command line option for the `man' macros (similar to the `mdoc'
   package) has been implemented: `-rcR=1' (now the default in nroff mode)
@@ -1956,9 +2041,9 @@ configure script).
 Documentation
 -------------
 
-Three new man pages are available: groff_tmac.5 (documenting how troff macros
-are accessed and where they are found), groff.7 (a short reference of the GNU
-roff language), and roff.7 (a general survey on GNU troff).
+Three new man pages are available: groff_tmac.5 (documenting how troff
+macros are accessed and where they are found), groff.7 (a short reference of
+the GNU roff language), and roff.7 (a general survey on GNU troff).
 
 Miscellaneous
 -------------
@@ -1980,10 +2065,10 @@ Bug fixes only; no user-visible changes.
 VERSION 1.12
 ============
 
-Finally, there are new maintainers for groff.  Mailing lists and a development
-repository are available also. See the file README for details.  Not all
-reported bugs could be fixed, so please send mails again if something is
-still not working.
+Finally, there are new maintainers for groff.  Mailing lists and a
+development repository are available also. See the file README for details.
+Not all reported bugs could be fixed, so please send mails again if
+something is still not working.
 
 Most of the installation problems should have vanished now (most
 notably the $(tmac_wrap) bug).
@@ -2715,8 +2800,8 @@ containing the hyphenation patterns.
 
 There is a `\C'xxx'' escape sequence equivalent to `\[xxx]'.
 
-Characters ", ', ), ], *, \(dg are now initially transparent for the purposes
-of end of sentence recognition.
+Characters ", ', ), ], *, \(dg are now initially transparent for the
+purposes of end of sentence recognition.
 
 There is an anti-recursion feature in the `char' request, so you can
 say `.char \(bu \s+2\(bu\s-2'.
@@ -2796,5 +2881,7 @@ definitions.
 Local Variables:
 version-control: never
 coding: latin-1
+fill-column: 76
 mode: text
 End:
+# vim: set autoindent textwidth=76:
index 4bc0aeb..8710a12 100644 (file)
--- a/PROBLEMS
+++ b/PROBLEMS
@@ -1,4 +1,4 @@
-    Copyright 1989-2014 Free Software Foundation, Inc.
+    Copyright 1989-2018 Free Software Foundation, Inc.
 
     Copying and distribution of this file, with or without modification,
     are permitted in any medium without royalty provided the copyright
@@ -965,6 +965,53 @@ Use
 
   ./configure CXX=g++-4.2
 
+----------------------------------------------------------------------
+
+* When compiling on NetBSD, make issues warnings like
+
+  Warning: line 28: Unable to locate font(s)
+  URWGothicL-Demi,a010015l.pfb on the given path(s)
+
+  and
+
+  Warning: line 77: Failed to create groff font 'U-AB' by running
+  afmtodit
+
+In this case install the package "urw-fonts":
+
+  pkgin install urw-fonts
+
+and make the font path known to ghostscript, e.g. with (ksh):
+
+  export GS_LIB=/usr/pkg/share/fonts/urw
+
+----------------------------------------------------------------------
+
+* Currently (December 2015) building groff fails on NetBSD and
+  FreeBSD with the message:
+
+  make[1]: don't know how to make contrib/chem/chem.1. Stop
+
+The reason is a bug in the make(1) tool used on those systems related
+to .SUFFIXES lines.
+
+A temporary workaround is to change the Makefile line
+
+  .SUFFIXES: .roff .in .ps .mom .pdf .me .ms .ps .html .txt .texi \
+    .dvi .pdf .xhtml .man .c .cpp .log .o .obj .sed .sin \
+    .test .test$(EXEEXT) .trs .ypp
+
+into
+
+  .SUFFIXES: .man .roff .in .ps .mom .pdf .me .ms .ps .html .txt \
+    .texi .dvi .pdf .xhtml .c .cpp .log .o .obj .sed .sin \
+    .test .test$(EXEEXT) .trs .ypp
+
+(put .man at begin of the list).
+
+The bug is reported to the maintainer of the make(1) tool of those
+systems.
+
 ##### Emacs settings
 Local Variables:
 mode: text
index df6357b..98f2fa7 100644 (file)
--- a/PROJECTS
+++ b/PROJECTS
@@ -1,4 +1,4 @@
-# Copyright (C) 1999-2014 Free Software Foundation, Inc.
+# Copyright (C) 1999-2018 Free Software Foundation, Inc.
 #
 # This file is part of `groffer' which is part of `groff'.
 #
@@ -13,7 +13,7 @@
 # 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
+# along with this program.  If not, see
 # <http://www.gnu.org/licenses/gpl-2.0.html>.
 
 Here are some things that would be useful additions to groff:
@@ -40,7 +40,7 @@ Here are some things that would be useful additions to groff:
   (like pm and -mpm)
 
 If you want to work on one of these, you should probably post to
-gnu.groff.bug (or send email to bug-groff@gnu.org) to see if anyone else
+gnu.groff.bug (or send email to groff@gnu.org) to see if anyone else
 has gotten there first.
 
 
diff --git a/README b/README
index 951fedb..44fa8a6 100644 (file)
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
-    Copyright (C) 1989-2014 Free Software Foundation, Inc.
+    Copyright (C) 1989-2018 Free Software Foundation, Inc.
 
     Copying and distribution of this file, with or without
     modification, are permitted in any medium without royalty provided
@@ -78,10 +78,6 @@ Additionally, producing `PDF' output directly with the `gropdf' device needs
 a working installation of `perl'.  The same is true for some other
 preprocessors like `chem'.
 
-In Linux Debian, the installation of `texinfo' is dangerous.  For it
-creates a file `install-info' that blocks the system installation.  So
-the created `/usr/local/bin/install-info' must be renamed.
-
 The `groff' configure script searches for the X11 headers and
 libraries `Xaw' and `Xmu'.  So the corresponding developer packages of
 your system must be installed, otherwise `groff' does not install
@@ -93,18 +89,16 @@ page at
 
   https://savannah.gnu.org/projects/groff
 
-Alternatively, but less preferable, you may use the form in the file
-`BUG-REPORT'; the idea of this is to make sure that FSF has all the
-information it needs to fix the bug.  At the very least, read the
-`BUG-REPORT' form and make sure that you supply all the information
-that it asks for.  Even if you are not sure that something is a bug,
-report it using `BUG-REPORT': this enables us to determine whether it
-really is a bug or not.
+You may use the form in the file `BUG-REPORT'; the idea of this is to
+make sure that FSF has all the information it needs to fix the bug.
+At the very least, read the `BUG-REPORT' form and make sure that you
+supply all the information that it asks for.  Even if you are not sure
+that something is a bug, report it: this enables us to determine whether
+it really is a bug.
 
 Three mailing lists are available:
 
-  bug-groff@gnu.org          for reporting bugs and following bug
-                             reports
+  bug-groff@gnu.org          for following bug reports
   groff@gnu.org              for general discussion of groff
   groff-commit@gnu.org       a read-only list to follow commits
                              to the git repository
@@ -121,9 +115,7 @@ Alternatively, you may subscribe by visiting the web pages at
 Each of these web pages also provides a link to a browseable archive of
 postings to the corresponding mailing list.
 
-GNU `groff' was written by James Clark <jjc@jclark.com>.  It is now
-maintained by Ted Harding <ted.harding@nessie.mcc.ac.uk> and Werner
-Lemberg <wl@gnu.org>.
+GNU `groff' was written by James Clark <jjc@jclark.com>.
 
 
 ##### Emacs settings
index 107fee7..2cbc35e 100644 (file)
@@ -1,4 +1,4 @@
-    Copyright (C) 2003-2014 Free Software Foundation, Inc.
+    Copyright (C) 2003-2018 Free Software Foundation, Inc.
 
     Copying and distribution of this file, with or without modification,
     are permitted in any medium without royalty provided the copyright
@@ -31,7 +31,7 @@
   MinGW.
 
   Additionally, if you wish to compile groff with support for its HTML (and
-  XHTML) output capability, some additional tools are required as decribed in
+  XHTML) output capability, some additional tools are required as described in
   the section PREREQUISITES FOR HTML OUTPUT later in this file.
 
 
   In the case of building with MinGW, the default behaviour of configure is
   not appropriate for the following reasons.
 
-  o The MSYS environment creates a virtual UNIX-like file system, with its
+  o The MSYS environment creates a virtual Unix-like file system, with its
     root mapped to the actual MS-Windows directory where MSYS itself is
     installed; /usr is also mapped to this MSYS installation directory.
 
 
   o Knowledge of the MSYS virtual file system is not imparted to groff; it
     expects the compiled-in path to its components to be a fully qualified
-    MS-Windows path name (although UNIX-style slashes are permitted, and
+    MS-Windows path name (although Unix-style slashes are permitted, and
     preferred to the MS-Windows style backslashes, to demarcate the directory
     hierarchy).  Thus, when configuring groff, if
     --prefix=<win32-install-path> is not correctly specified, then the
     ./configure --prefix=D:/MSYS/1.0/local ...
 
   Note that the backslash characters, which appear in the native MS-Windows
-  form of the path name, are replaced by UNIX-style slashes in the argument to
+  form of the path name, are replaced by Unix-style slashes in the argument to
   configure; this is the preferred syntax.
 
   Also note that the MS-Windows device designator (D: in this instance) is
   -------------------------
 
   The runtime environment, provided to groff by MSYS, is essentially the same
-  as would be provided under a UNIX or GNU/Linux operating system; thus, any
+  as would be provided under a Unix or GNU/Linux operating system; thus, any
   environment variables which may be used to customize the groff runtime
-  environment have similar effects under MSYS, as they would in UNIX or
+  environment have similar effects under MSYS, as they would in Unix or
   GNU/Linux, with the exception that any variable specifying a path should
   adopt the same syntax as a native MS-Windows PATH specification.
 
   creating temporary files.  When these conditions arise, groff fails with a
   `permission denied' error, as soon as it tries to create any temporary file.
 
-  To specify the location for creating temporary files, the standard UNIX or
+  To specify the location for creating temporary files, the standard Unix or
   GNU/Linux implementation of groff provides the GROFF_TMPDIR or TMPDIR
   environment variables, whereas MS-Windows applications generally use TMP or
   TEMP; furthermore, the MS-Windows implementations of Ghostscript apparently
   ----------------
 
   There are two known issues, observed when running groff in the MinGW/MSYS
-  environment, which would not affect groff in its native UNIX environment:
+  environment, which would not affect groff in its native Unix environment:
 
   o Running groff with the working directory set to a subdirectory of a
     network share, where the user does not have write permission in the root
       cat | groff ...
 
     in which case <Ctrl-D> terminates the standard input stream, in just the
-    same way it does on a UNIX system; the cat executable provided with MSYS
+    same way it does on a Unix system; the cat executable provided with MSYS
     does seem to trap the end-of-file condition, and properly signals groff
     that the input stream has terminated.
 
diff --git a/REVISION b/REVISION
deleted file mode 100644 (file)
index 00750ed..0000000
--- a/REVISION
+++ /dev/null
@@ -1 +0,0 @@
-3
diff --git a/THANKS b/THANKS
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/TODO b/TODO
index 91697b0..b098782 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,4 +1,4 @@
-# Copyright (C) 2000-2014 Free Software Foundation, Inc.
+# Copyright (C) 2000-2018 Free Software Foundation, Inc.
 #
 # This file is part of `groffer' which is part of `groff'.
 #
@@ -13,7 +13,7 @@
 # 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
+# along with this program.  If not, see
 # <http://www.gnu.org/licenses/gpl-2.0.html>.
 
 Unicode input:
diff --git a/VERSION b/VERSION
deleted file mode 100644 (file)
index 71f7f51..0000000
--- a/VERSION
+++ /dev/null
@@ -1 +0,0 @@
-1.22
diff --git a/acinclude.m4 b/acinclude.m4
new file mode 100644 (file)
index 0000000..000c5fc
--- /dev/null
@@ -0,0 +1,25 @@
+# generated automatically by aclocal 1.14 -*- Autoconf -*-
+
+# Copyright (C) 1996-2018 Free Software Foundation, Inc.
+
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
+m4_include([m4/ax_compare_version.m4])
+m4_include([m4/ax_prog_perl_version.m4])
+m4_include([m4/codeset.m4])
+m4_include([m4/fcntl-o.m4])
+m4_include([m4/glibc21.m4])
+m4_include([m4/groff.m4])
+m4_include([m4/iconv.m4])
+m4_include([m4/lib-ld.m4])
+m4_include([m4/lib-link.m4])
+m4_include([m4/lib-prefix.m4])
+m4_include([m4/localcharset.m4])
index 77cb968..74c41d5 100644 (file)
@@ -1,6 +1,6 @@
-# generated automatically by aclocal 1.14 -*- Autoconf -*-
+# generated automatically by aclocal 1.16.1 -*- Autoconf -*-
 
-# Copyright (C) 1996-2013 Free Software Foundation, Inc.
+# Copyright (C) 1996-2018 Free Software Foundation, Inc.
 
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # PARTICULAR PURPOSE.
 
 m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
-m4_include([m4/ax_compare_version.m4])
-m4_include([m4/ax_prog_perl_version.m4])
-m4_include([m4/codeset.m4])
-m4_include([m4/fcntl-o.m4])
-m4_include([m4/glibc21.m4])
-m4_include([m4/groff.m4])
-m4_include([m4/iconv.m4])
-m4_include([m4/lib-ld.m4])
-m4_include([m4/lib-link.m4])
-m4_include([m4/lib-prefix.m4])
-m4_include([m4/localcharset.m4])
+m4_ifndef([AC_AUTOCONF_VERSION],
+  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],,
+[m4_warning([this file was generated for autoconf 2.69.
+You have another version of autoconf.  It may work, but is not guaranteed to.
+If you have problems, you may need to regenerate the build system entirely.
+To do so, use the procedure documented by the package, typically 'autoreconf'.])])
+
+# pkg.m4 - Macros to locate and utilise pkg-config.   -*- Autoconf -*-
+# serial 11 (pkg-config-0.29.1)
+
+dnl Copyright © 2004 Scott James Remnant <scott@netsplit.com>.
+dnl Copyright © 2012-2015 Dan Nicholson <dbn.lists@gmail.com>
+dnl
+dnl This program is free software; you can redistribute it and/or modify
+dnl it under the terms of the GNU General Public License as published by
+dnl the Free Software Foundation; either version 2 of the License, or
+dnl (at your option) any later version.
+dnl
+dnl This program is distributed in the hope that it will be useful, but
+dnl WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+dnl General Public License for more details.
+dnl
+dnl You should have received a copy of the GNU General Public License
+dnl along with this program; if not, write to the Free Software
+dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+dnl 02111-1307, USA.
+dnl
+dnl As a special exception to the GNU General Public License, if you
+dnl distribute this file as part of a program that contains a
+dnl configuration script generated by Autoconf, you may include it under
+dnl the same distribution terms that you use for the rest of that
+dnl program.
+
+dnl PKG_PREREQ(MIN-VERSION)
+dnl -----------------------
+dnl Since: 0.29
+dnl
+dnl Verify that the version of the pkg-config macros are at least
+dnl MIN-VERSION. Unlike PKG_PROG_PKG_CONFIG, which checks the user's
+dnl installed version of pkg-config, this checks the developer's version
+dnl of pkg.m4 when generating configure.
+dnl
+dnl To ensure that this macro is defined, also add:
+dnl m4_ifndef([PKG_PREREQ],
+dnl     [m4_fatal([must install pkg-config 0.29 or later before running autoconf/autogen])])
+dnl
+dnl See the "Since" comment for each macro you use to see what version
+dnl of the macros you require.
+m4_defun([PKG_PREREQ],
+[m4_define([PKG_MACROS_VERSION], [0.29.1])
+m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1,
+    [m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])])
+])dnl PKG_PREREQ
+
+dnl PKG_PROG_PKG_CONFIG([MIN-VERSION])
+dnl ----------------------------------
+dnl Since: 0.16
+dnl
+dnl Search for the pkg-config tool and set the PKG_CONFIG variable to
+dnl first found in the path. Checks that the version of pkg-config found
+dnl is at least MIN-VERSION. If MIN-VERSION is not specified, 0.9.0 is
+dnl used since that's the first version where most current features of
+dnl pkg-config existed.
+AC_DEFUN([PKG_PROG_PKG_CONFIG],
+[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
+m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$])
+m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$])
+AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])
+AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path])
+AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path])
+
+if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+       AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
+fi
+if test -n "$PKG_CONFIG"; then
+       _pkg_min_version=m4_default([$1], [0.9.0])
+       AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version])
+       if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+               AC_MSG_RESULT([yes])
+       else
+               AC_MSG_RESULT([no])
+               PKG_CONFIG=""
+       fi
+fi[]dnl
+])dnl PKG_PROG_PKG_CONFIG
+
+dnl PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+dnl -------------------------------------------------------------------
+dnl Since: 0.18
+dnl
+dnl Check to see whether a particular set of modules exists. Similar to
+dnl PKG_CHECK_MODULES(), but does not set variables or print errors.
+dnl
+dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+dnl only at the first occurence in configure.ac, so if the first place
+dnl it's called might be skipped (such as if it is within an "if", you
+dnl have to call PKG_CHECK_EXISTS manually
+AC_DEFUN([PKG_CHECK_EXISTS],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+if test -n "$PKG_CONFIG" && \
+    AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then
+  m4_default([$2], [:])
+m4_ifvaln([$3], [else
+  $3])dnl
+fi])
+
+dnl _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
+dnl ---------------------------------------------
+dnl Internal wrapper calling pkg-config via PKG_CONFIG and setting
+dnl pkg_failed based on the result.
+m4_define([_PKG_CONFIG],
+[if test -n "$$1"; then
+    pkg_cv_[]$1="$$1"
+ elif test -n "$PKG_CONFIG"; then
+    PKG_CHECK_EXISTS([$3],
+                     [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes ],
+                    [pkg_failed=yes])
+ else
+    pkg_failed=untried
+fi[]dnl
+])dnl _PKG_CONFIG
+
+dnl _PKG_SHORT_ERRORS_SUPPORTED
+dnl ---------------------------
+dnl Internal check to see if pkg-config supports short errors.
+AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi[]dnl
+])dnl _PKG_SHORT_ERRORS_SUPPORTED
+
+
+dnl PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
+dnl   [ACTION-IF-NOT-FOUND])
+dnl --------------------------------------------------------------
+dnl Since: 0.4.0
+dnl
+dnl Note that if there is a possibility the first call to
+dnl PKG_CHECK_MODULES might not happen, you should be sure to include an
+dnl explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
+AC_DEFUN([PKG_CHECK_MODULES],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
+AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
+
+pkg_failed=no
+AC_MSG_CHECKING([for $1])
+
+_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
+_PKG_CONFIG([$1][_LIBS], [libs], [$2])
+
+m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS
+and $1[]_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.])
+
+if test $pkg_failed = yes; then
+       AC_MSG_RESULT([no])
+        _PKG_SHORT_ERRORS_SUPPORTED
+        if test $_pkg_short_errors_supported = yes; then
+               $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1`
+        else 
+               $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1`
+        fi
+       # Put the nasty error message in config.log where it belongs
+       echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
+
+       m4_default([$4], [AC_MSG_ERROR(
+[Package requirements ($2) were not met:
+
+$$1_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+_PKG_TEXT])[]dnl
+        ])
+elif test $pkg_failed = untried; then
+       AC_MSG_RESULT([no])
+       m4_default([$4], [AC_MSG_FAILURE(
+[The pkg-config script could not be found or is too old.  Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+_PKG_TEXT
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.])[]dnl
+        ])
+else
+       $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
+       $1[]_LIBS=$pkg_cv_[]$1[]_LIBS
+        AC_MSG_RESULT([yes])
+       $3
+fi[]dnl
+])dnl PKG_CHECK_MODULES
+
+
+dnl PKG_CHECK_MODULES_STATIC(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
+dnl   [ACTION-IF-NOT-FOUND])
+dnl ---------------------------------------------------------------------
+dnl Since: 0.29
+dnl
+dnl Checks for existence of MODULES and gathers its build flags with
+dnl static libraries enabled. Sets VARIABLE-PREFIX_CFLAGS from --cflags
+dnl and VARIABLE-PREFIX_LIBS from --libs.
+dnl
+dnl Note that if there is a possibility the first call to
+dnl PKG_CHECK_MODULES_STATIC might not happen, you should be sure to
+dnl include an explicit call to PKG_PROG_PKG_CONFIG in your
+dnl configure.ac.
+AC_DEFUN([PKG_CHECK_MODULES_STATIC],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+_save_PKG_CONFIG=$PKG_CONFIG
+PKG_CONFIG="$PKG_CONFIG --static"
+PKG_CHECK_MODULES($@)
+PKG_CONFIG=$_save_PKG_CONFIG[]dnl
+])dnl PKG_CHECK_MODULES_STATIC
+
+
+dnl PKG_INSTALLDIR([DIRECTORY])
+dnl -------------------------
+dnl Since: 0.27
+dnl
+dnl Substitutes the variable pkgconfigdir as the location where a module
+dnl should install pkg-config .pc files. By default the directory is
+dnl $libdir/pkgconfig, but the default can be changed by passing
+dnl DIRECTORY. The user can override through the --with-pkgconfigdir
+dnl parameter.
+AC_DEFUN([PKG_INSTALLDIR],
+[m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])])
+m4_pushdef([pkg_description],
+    [pkg-config installation directory @<:@]pkg_default[@:>@])
+AC_ARG_WITH([pkgconfigdir],
+    [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],,
+    [with_pkgconfigdir=]pkg_default)
+AC_SUBST([pkgconfigdir], [$with_pkgconfigdir])
+m4_popdef([pkg_default])
+m4_popdef([pkg_description])
+])dnl PKG_INSTALLDIR
+
+
+dnl PKG_NOARCH_INSTALLDIR([DIRECTORY])
+dnl --------------------------------
+dnl Since: 0.27
+dnl
+dnl Substitutes the variable noarch_pkgconfigdir as the location where a
+dnl module should install arch-independent pkg-config .pc files. By
+dnl default the directory is $datadir/pkgconfig, but the default can be
+dnl changed by passing DIRECTORY. The user can override through the
+dnl --with-noarch-pkgconfigdir parameter.
+AC_DEFUN([PKG_NOARCH_INSTALLDIR],
+[m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])])
+m4_pushdef([pkg_description],
+    [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@])
+AC_ARG_WITH([noarch-pkgconfigdir],
+    [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],,
+    [with_noarch_pkgconfigdir=]pkg_default)
+AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir])
+m4_popdef([pkg_default])
+m4_popdef([pkg_description])
+])dnl PKG_NOARCH_INSTALLDIR
+
+
+dnl PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE,
+dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+dnl -------------------------------------------
+dnl Since: 0.28
+dnl
+dnl Retrieves the value of the pkg-config variable for the given module.
+AC_DEFUN([PKG_CHECK_VAR],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl
+
+_PKG_CONFIG([$1], [variable="][$3]["], [$2])
+AS_VAR_COPY([$1], [pkg_cv_][$1])
+
+AS_VAR_IF([$1], [""], [$5], [$4])dnl
+])dnl PKG_CHECK_VAR
+
+dnl PKG_WITH_MODULES(VARIABLE-PREFIX, MODULES,
+dnl   [ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND],
+dnl   [DESCRIPTION], [DEFAULT])
+dnl ------------------------------------------
+dnl
+dnl Prepare a "--with-" configure option using the lowercase
+dnl [VARIABLE-PREFIX] name, merging the behaviour of AC_ARG_WITH and
+dnl PKG_CHECK_MODULES in a single macro.
+AC_DEFUN([PKG_WITH_MODULES],
+[
+m4_pushdef([with_arg], m4_tolower([$1]))
+
+m4_pushdef([description],
+           [m4_default([$5], [build with ]with_arg[ support])])
+
+m4_pushdef([def_arg], [m4_default([$6], [auto])])
+m4_pushdef([def_action_if_found], [AS_TR_SH([with_]with_arg)=yes])
+m4_pushdef([def_action_if_not_found], [AS_TR_SH([with_]with_arg)=no])
+
+m4_case(def_arg,
+            [yes],[m4_pushdef([with_without], [--without-]with_arg)],
+            [m4_pushdef([with_without],[--with-]with_arg)])
+
+AC_ARG_WITH(with_arg,
+     AS_HELP_STRING(with_without, description[ @<:@default=]def_arg[@:>@]),,
+    [AS_TR_SH([with_]with_arg)=def_arg])
+
+AS_CASE([$AS_TR_SH([with_]with_arg)],
+            [yes],[PKG_CHECK_MODULES([$1],[$2],$3,$4)],
+            [auto],[PKG_CHECK_MODULES([$1],[$2],
+                                        [m4_n([def_action_if_found]) $3],
+                                        [m4_n([def_action_if_not_found]) $4])])
+
+m4_popdef([with_arg])
+m4_popdef([description])
+m4_popdef([def_arg])
+
+])dnl PKG_WITH_MODULES
+
+dnl PKG_HAVE_WITH_MODULES(VARIABLE-PREFIX, MODULES,
+dnl   [DESCRIPTION], [DEFAULT])
+dnl -----------------------------------------------
+dnl
+dnl Convenience macro to trigger AM_CONDITIONAL after PKG_WITH_MODULES
+dnl check._[VARIABLE-PREFIX] is exported as make variable.
+AC_DEFUN([PKG_HAVE_WITH_MODULES],
+[
+PKG_WITH_MODULES([$1],[$2],,,[$3],[$4])
+
+AM_CONDITIONAL([HAVE_][$1],
+               [test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"])
+])dnl PKG_HAVE_WITH_MODULES
+
+dnl PKG_HAVE_DEFINE_WITH_MODULES(VARIABLE-PREFIX, MODULES,
+dnl   [DESCRIPTION], [DEFAULT])
+dnl ------------------------------------------------------
+dnl
+dnl Convenience macro to run AM_CONDITIONAL and AC_DEFINE after
+dnl PKG_WITH_MODULES check. HAVE_[VARIABLE-PREFIX] is exported as make
+dnl and preprocessor variable.
+AC_DEFUN([PKG_HAVE_DEFINE_WITH_MODULES],
+[
+PKG_HAVE_WITH_MODULES([$1],[$2],[$3],[$4])
+
+AS_IF([test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"],
+        [AC_DEFINE([HAVE_][$1], 1, [Enable ]m4_tolower([$1])[ support])])
+])dnl PKG_HAVE_DEFINE_WITH_MODULES
+
+# Copyright (C) 2002-2018 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_AUTOMAKE_VERSION(VERSION)
+# ----------------------------
+# Automake X.Y traces this macro to ensure aclocal.m4 has been
+# generated from the m4 files accompanying Automake X.Y.
+# (This private macro should not be called outside this file.)
+AC_DEFUN([AM_AUTOMAKE_VERSION],
+[am__api_version='1.16'
+dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
+dnl require some minimum version.  Point them to the right macro.
+m4_if([$1], [1.16.1], [],
+      [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
+])
+
+# _AM_AUTOCONF_VERSION(VERSION)
+# -----------------------------
+# aclocal traces this macro to find the Autoconf version.
+# This is a private macro too.  Using m4_define simplifies
+# the logic in aclocal, which can simply ignore this definition.
+m4_define([_AM_AUTOCONF_VERSION], [])
+
+# AM_SET_CURRENT_AUTOMAKE_VERSION
+# -------------------------------
+# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
+# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
+AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+[AM_AUTOMAKE_VERSION([1.16.1])dnl
+m4_ifndef([AC_AUTOCONF_VERSION],
+  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
+
+# AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
+
+# Copyright (C) 2001-2018 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
+# $ac_aux_dir to '$srcdir/foo'.  In other projects, it is set to
+# '$srcdir', '$srcdir/..', or '$srcdir/../..'.
+#
+# Of course, Automake must honor this variable whenever it calls a
+# tool from the auxiliary directory.  The problem is that $srcdir (and
+# therefore $ac_aux_dir as well) can be either absolute or relative,
+# depending on how configure is run.  This is pretty annoying, since
+# it makes $ac_aux_dir quite unusable in subdirectories: in the top
+# source directory, any form will work fine, but in subdirectories a
+# relative path needs to be adjusted first.
+#
+# $ac_aux_dir/missing
+#    fails when called from a subdirectory if $ac_aux_dir is relative
+# $top_srcdir/$ac_aux_dir/missing
+#    fails if $ac_aux_dir is absolute,
+#    fails when called from a subdirectory in a VPATH build with
+#          a relative $ac_aux_dir
+#
+# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
+# are both prefixed by $srcdir.  In an in-source build this is usually
+# harmless because $srcdir is '.', but things will broke when you
+# start a VPATH build or use an absolute $srcdir.
+#
+# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
+# iff we strip the leading $srcdir from $ac_aux_dir.  That would be:
+#   am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
+# and then we would define $MISSING as
+#   MISSING="\${SHELL} $am_aux_dir/missing"
+# This will work as long as MISSING is not called from configure, because
+# unfortunately $(top_srcdir) has no meaning in configure.
+# However there are other variables, like CC, which are often used in
+# configure, and could therefore not use this "fixed" $ac_aux_dir.
+#
+# Another solution, used here, is to always expand $ac_aux_dir to an
+# absolute PATH.  The drawback is that using absolute paths prevent a
+# configured tree to be moved without reconfiguration.
+
+AC_DEFUN([AM_AUX_DIR_EXPAND],
+[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
+# Expand $ac_aux_dir to an absolute path.
+am_aux_dir=`cd "$ac_aux_dir" && pwd`
+])
+
+# AM_CONDITIONAL                                            -*- Autoconf -*-
+
+# Copyright (C) 1997-2018 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_CONDITIONAL(NAME, SHELL-CONDITION)
+# -------------------------------------
+# Define a conditional.
+AC_DEFUN([AM_CONDITIONAL],
+[AC_PREREQ([2.52])dnl
+ m4_if([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
+       [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+AC_SUBST([$1_TRUE])dnl
+AC_SUBST([$1_FALSE])dnl
+_AM_SUBST_NOTMAKE([$1_TRUE])dnl
+_AM_SUBST_NOTMAKE([$1_FALSE])dnl
+m4_define([_AM_COND_VALUE_$1], [$2])dnl
+if $2; then
+  $1_TRUE=
+  $1_FALSE='#'
+else
+  $1_TRUE='#'
+  $1_FALSE=
+fi
+AC_CONFIG_COMMANDS_PRE(
+[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
+  AC_MSG_ERROR([[conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.]])
+fi])])
+
+# Copyright (C) 1999-2018 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+
+# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be
+# written in clear, in which case automake, when reading aclocal.m4,
+# will think it sees a *use*, and therefore will trigger all it's
+# C support machinery.  Also note that it means that autoscan, seeing
+# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
+
+
+# _AM_DEPENDENCIES(NAME)
+# ----------------------
+# See how the compiler implements dependency checking.
+# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC".
+# We try a few techniques and use that to set a single cache variable.
+#
+# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
+# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
+# dependency, and given that the user is not expected to run this macro,
+# just rely on AC_PROG_CC.
+AC_DEFUN([_AM_DEPENDENCIES],
+[AC_REQUIRE([AM_SET_DEPDIR])dnl
+AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
+AC_REQUIRE([AM_MAKE_INCLUDE])dnl
+AC_REQUIRE([AM_DEP_TRACK])dnl
+
+m4_if([$1], [CC],   [depcc="$CC"   am_compiler_list=],
+      [$1], [CXX],  [depcc="$CXX"  am_compiler_list=],
+      [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+      [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'],
+      [$1], [UPC],  [depcc="$UPC"  am_compiler_list=],
+      [$1], [GCJ],  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
+                    [depcc="$$1"   am_compiler_list=])
+
+AC_CACHE_CHECK([dependency style of $depcc],
+               [am_cv_$1_dependencies_compiler_type],
+[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named 'D' -- because '-MD' means "put the output
+  # in D".
+  rm -rf conftest.dir
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_$1_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
+  fi
+  am__universal=false
+  m4_case([$1], [CC],
+    [case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac],
+    [CXX],
+    [case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac])
+
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+      # Solaris 10 /bin/sh.
+      echo '/* dummy */' > sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    # We check with '-c' and '-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle '-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs.
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
+    case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
+    nosideeffect)
+      # After this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested.
+      if test "x$enable_dependency_tracking" = xyes; then
+       continue
+      else
+       break
+      fi
+      ;;
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+      # This compiler won't grok '-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
+    none) break ;;
+    esac
+    if depmode=$depmode \
+       source=sub/conftest.c object=$am__obj \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_$1_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_$1_dependencies_compiler_type=none
+fi
+])
+AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
+AM_CONDITIONAL([am__fastdep$1], [
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
+])
+
+
+# AM_SET_DEPDIR
+# -------------
+# Choose a directory name for dependency files.
+# This macro is AC_REQUIREd in _AM_DEPENDENCIES.
+AC_DEFUN([AM_SET_DEPDIR],
+[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
+])
+
+
+# AM_DEP_TRACK
+# ------------
+AC_DEFUN([AM_DEP_TRACK],
+[AC_ARG_ENABLE([dependency-tracking], [dnl
+AS_HELP_STRING(
+  [--enable-dependency-tracking],
+  [do not reject slow dependency extractors])
+AS_HELP_STRING(
+  [--disable-dependency-tracking],
+  [speeds up one-time build])])
+if test "x$enable_dependency_tracking" != xno; then
+  am_depcomp="$ac_aux_dir/depcomp"
+  AMDEPBACKSLASH='\'
+  am__nodep='_no'
+fi
+AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+AC_SUBST([AMDEPBACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
+AC_SUBST([am__nodep])dnl
+_AM_SUBST_NOTMAKE([am__nodep])dnl
+])
+
+# Generate code to set up dependency tracking.              -*- Autoconf -*-
+
+# Copyright (C) 1999-2018 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_OUTPUT_DEPENDENCY_COMMANDS
+# ------------------------------
+AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
+[{
+  # Older Autoconf quotes --file arguments for eval, but not when files
+  # are listed without --file.  Let's play safe and only enable the eval
+  # if we detect the quoting.
+  # TODO: see whether this extra hack can be removed once we start
+  # requiring Autoconf 2.70 or later.
+  AS_CASE([$CONFIG_FILES],
+          [*\'*], [eval set x "$CONFIG_FILES"],
+          [*], [set x $CONFIG_FILES])
+  shift
+  # Used to flag and report bootstrapping failures.
+  am_rc=0
+  for am_mf
+  do
+    # Strip MF so we end up with the name of the file.
+    am_mf=`AS_ECHO(["$am_mf"]) | sed -e 's/:.*$//'`
+    # Check whether this is an Automake generated Makefile which includes
+    # dependency-tracking related rules and includes.
+    # Grep'ing the whole file directly is not great: AIX grep has a line
+    # limit of 2048, but all sed's we know have understand at least 4000.
+    sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \
+      || continue
+    am_dirpart=`AS_DIRNAME(["$am_mf"])`
+    am_filepart=`AS_BASENAME(["$am_mf"])`
+    AM_RUN_LOG([cd "$am_dirpart" \
+      && sed -e '/# am--include-marker/d' "$am_filepart" \
+        | $MAKE -f - am--depfiles]) || am_rc=$?
+  done
+  if test $am_rc -ne 0; then
+    AC_MSG_FAILURE([Something went wrong bootstrapping makefile fragments
+    for automatic dependency tracking.  Try re-running configure with the
+    '--disable-dependency-tracking' option to at least be able to build
+    the package (albeit without support for automatic dependency tracking).])
+  fi
+  AS_UNSET([am_dirpart])
+  AS_UNSET([am_filepart])
+  AS_UNSET([am_mf])
+  AS_UNSET([am_rc])
+  rm -f conftest-deps.mk
+}
+])# _AM_OUTPUT_DEPENDENCY_COMMANDS
+
+
+# AM_OUTPUT_DEPENDENCY_COMMANDS
+# -----------------------------
+# This macro should only be invoked once -- use via AC_REQUIRE.
+#
+# This code is only required when automatic dependency tracking is enabled.
+# This creates each '.Po' and '.Plo' makefile fragment that we'll need in
+# order to bootstrap the dependency handling code.
+AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
+[AC_CONFIG_COMMANDS([depfiles],
+     [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
+     [AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}"])])
+
+# Do all the work for Automake.                             -*- Autoconf -*-
+
+# Copyright (C) 1996-2018 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This macro actually does too much.  Some checks are only needed if
+# your package does certain things.  But this isn't really a big deal.
+
+dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O.
+m4_define([AC_PROG_CC],
+m4_defn([AC_PROG_CC])
+[_AM_PROG_CC_C_O
+])
+
+# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
+# AM_INIT_AUTOMAKE([OPTIONS])
+# -----------------------------------------------
+# The call with PACKAGE and VERSION arguments is the old style
+# call (pre autoconf-2.50), which is being phased out.  PACKAGE
+# and VERSION should now be passed to AC_INIT and removed from
+# the call to AM_INIT_AUTOMAKE.
+# We support both call styles for the transition.  After
+# the next Automake release, Autoconf can make the AC_INIT
+# arguments mandatory, and then we can depend on a new Autoconf
+# release and drop the old call support.
+AC_DEFUN([AM_INIT_AUTOMAKE],
+[AC_PREREQ([2.65])dnl
+dnl Autoconf wants to disallow AM_ names.  We explicitly allow
+dnl the ones we care about.
+m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+AC_REQUIRE([AC_PROG_INSTALL])dnl
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+  # is not polluted with repeated "-I."
+  AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
+  # test to see if srcdir already configured
+  if test -f $srcdir/config.status; then
+    AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+  fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+  if (cygpath --version) >/dev/null 2>/dev/null; then
+    CYGPATH_W='cygpath -w'
+  else
+    CYGPATH_W=echo
+  fi
+fi
+AC_SUBST([CYGPATH_W])
+
+# Define the identity of the package.
+dnl Distinguish between old-style and new-style calls.
+m4_ifval([$2],
+[AC_DIAGNOSE([obsolete],
+             [$0: two- and three-arguments forms are deprecated.])
+m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+ AC_SUBST([PACKAGE], [$1])dnl
+ AC_SUBST([VERSION], [$2])],
+[_AM_SET_OPTIONS([$1])dnl
+dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
+m4_if(
+  m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]),
+  [ok:ok],,
+  [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
+ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
+ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+
+_AM_IF_OPTION([no-define],,
+[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package])
+ AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl
+
+# Some tools Automake needs.
+AC_REQUIRE([AM_SANITY_CHECK])dnl
+AC_REQUIRE([AC_ARG_PROGRAM])dnl
+AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}])
+AM_MISSING_PROG([AUTOCONF], [autoconf])
+AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}])
+AM_MISSING_PROG([AUTOHEADER], [autoheader])
+AM_MISSING_PROG([MAKEINFO], [makeinfo])
+AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
+AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+# For better backward compatibility.  To be removed once Automake 1.9.x
+# dies out for good.  For more background, see:
+# <https://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
+# <https://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
+AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
+# We need awk for the "check" target (and possibly the TAP driver).  The
+# system "awk" is bad on some platforms.
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
+             [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+                            [_AM_PROG_TAR([v7])])])
+_AM_IF_OPTION([no-dependencies],,
+[AC_PROVIDE_IFELSE([AC_PROG_CC],
+                 [_AM_DEPENDENCIES([CC])],
+                 [m4_define([AC_PROG_CC],
+                            m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+                 [_AM_DEPENDENCIES([CXX])],
+                 [m4_define([AC_PROG_CXX],
+                            m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJC],
+                 [_AM_DEPENDENCIES([OBJC])],
+                 [m4_define([AC_PROG_OBJC],
+                            m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
+                 [_AM_DEPENDENCIES([OBJCXX])],
+                 [m4_define([AC_PROG_OBJCXX],
+                            m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl
+])
+AC_REQUIRE([AM_SILENT_RULES])dnl
+dnl The testsuite driver may need to know about EXEEXT, so add the
+dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This
+dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below.
+AC_CONFIG_COMMANDS_PRE(dnl
+[m4_provide_if([_AM_COMPILER_EXEEXT],
+  [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
+
+# POSIX will say in a future version that running "rm -f" with no argument
+# is OK; and we want to be able to make that assumption in our Makefile
+# recipes.  So use an aggressive probe to check that the usage we want is
+# actually supported "in the wild" to an acceptable degree.
+# See automake bug#10828.
+# To make any issue more visible, cause the running configure to be aborted
+# by default if the 'rm' program in use doesn't match our expectations; the
+# user can still override this though.
+if rm -f && rm -fr && rm -rf; then : OK; else
+  cat >&2 <<'END'
+Oops!
+
+Your 'rm' program seems unable to run without file operands specified
+on the command line, even when the '-f' option is present.  This is contrary
+to the behaviour of most rm programs out there, and not conforming with
+the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
+
+Please tell bug-automake@gnu.org about your system, including the value
+of your $PATH and any error possibly output before this message.  This
+can help us improve future automake versions.
+
+END
+  if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
+    echo 'Configuration will proceed anyway, since you have set the' >&2
+    echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
+    echo >&2
+  else
+    cat >&2 <<'END'
+Aborting the configuration process, to ensure you take notice of the issue.
+
+You can download and install GNU coreutils to get an 'rm' implementation
+that behaves properly: <https://www.gnu.org/software/coreutils/>.
+
+If you want to complete the configuration process using your problematic
+'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
+to "yes", and re-run configure.
+
+END
+    AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
+  fi
+fi
+dnl The trailing newline in this macro's definition is deliberate, for
+dnl backward compatibility and to allow trailing 'dnl'-style comments
+dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841.
+])
+
+dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion.  Do not
+dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
+dnl mangled by Autoconf and run in a shell conditional statement.
+m4_define([_AC_COMPILER_EXEEXT],
+m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
+
+# When config.status generates a header, we must update the stamp-h file.
+# This file resides in the same directory as the config header
+# that is generated.  The stamp files are numbered to have different names.
+
+# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
+# loop where config.status creates the headers, so we can generate
+# our stamp files there.
+AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
+[# Compute $1's index in $config_headers.
+_am_arg=$1
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+  case $_am_header in
+    $_am_arg | $_am_arg:* )
+      break ;;
+    * )
+      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+  esac
+done
+echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
+
+# Copyright (C) 2001-2018 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_SH
+# ------------------
+# Define $install_sh.
+AC_DEFUN([AM_PROG_INSTALL_SH],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+if test x"${install_sh+set}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\    *)
+    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+  *)
+    install_sh="\${SHELL} $am_aux_dir/install-sh"
+  esac
+fi
+AC_SUBST([install_sh])])
+
+# Copyright (C) 2003-2018 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# Check whether the underlying file-system supports filenames
+# with a leading dot.  For instance MS-DOS doesn't.
+AC_DEFUN([AM_SET_LEADING_DOT],
+[rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+  am__leading_dot=.
+else
+  am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+AC_SUBST([am__leading_dot])])
+
+# Check to see how 'make' treats includes.                 -*- Autoconf -*-
+
+# Copyright (C) 2001-2018 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_MAKE_INCLUDE()
+# -----------------
+# Check whether make has an 'include' directive that can support all
+# the idioms we need for our automatic dependency tracking code.
+AC_DEFUN([AM_MAKE_INCLUDE],
+[AC_MSG_CHECKING([whether ${MAKE-make} supports the include directive])
+cat > confinc.mk << 'END'
+am__doit:
+       @echo this is the am__doit target >confinc.out
+.PHONY: am__doit
+END
+am__include="#"
+am__quote=
+# BSD make does it like this.
+echo '.include "confinc.mk" # ignored' > confmf.BSD
+# Other make implementations (GNU, Solaris 10, AIX) do it like this.
+echo 'include confinc.mk # ignored' > confmf.GNU
+_am_result=no
+for s in GNU BSD; do
+  AM_RUN_LOG([${MAKE-make} -f confmf.$s && cat confinc.out])
+  AS_CASE([$?:`cat confinc.out 2>/dev/null`],
+      ['0:this is the am__doit target'],
+      [AS_CASE([$s],
+          [BSD], [am__include='.include' am__quote='"'],
+          [am__include='include' am__quote=''])])
+  if test "$am__include" != "#"; then
+    _am_result="yes ($s style)"
+    break
+  fi
+done
+rm -f confinc.* confmf.*
+AC_MSG_RESULT([${_am_result}])
+AC_SUBST([am__include])])
+AC_SUBST([am__quote])])
+
+# Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
+
+# Copyright (C) 1997-2018 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_MISSING_PROG(NAME, PROGRAM)
+# ------------------------------
+AC_DEFUN([AM_MISSING_PROG],
+[AC_REQUIRE([AM_MISSING_HAS_RUN])
+$1=${$1-"${am_missing_run}$2"}
+AC_SUBST($1)])
+
+# AM_MISSING_HAS_RUN
+# ------------------
+# Define MISSING if not defined so far and test if it is modern enough.
+# If it is, set am_missing_run to use it, otherwise, to nothing.
+AC_DEFUN([AM_MISSING_HAS_RUN],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([missing])dnl
+if test x"${MISSING+set}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\    *)
+    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+  *)
+    MISSING="\${SHELL} $am_aux_dir/missing" ;;
+  esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --is-lightweight"; then
+  am_missing_run="$MISSING "
+else
+  am_missing_run=
+  AC_MSG_WARN(['missing' script is too old or missing])
+fi
+])
+
+# Helper functions for option handling.                     -*- Autoconf -*-
+
+# Copyright (C) 2001-2018 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_MANGLE_OPTION(NAME)
+# -----------------------
+AC_DEFUN([_AM_MANGLE_OPTION],
+[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+
+# _AM_SET_OPTION(NAME)
+# --------------------
+# Set option NAME.  Presently that only means defining a flag for this option.
+AC_DEFUN([_AM_SET_OPTION],
+[m4_define(_AM_MANGLE_OPTION([$1]), [1])])
+
+# _AM_SET_OPTIONS(OPTIONS)
+# ------------------------
+# OPTIONS is a space-separated list of Automake options.
+AC_DEFUN([_AM_SET_OPTIONS],
+[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+
+# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
+# -------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+AC_DEFUN([_AM_IF_OPTION],
+[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+
+# Copyright (C) 1999-2018 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_PROG_CC_C_O
+# ---------------
+# Like AC_PROG_CC_C_O, but changed for automake.  We rewrite AC_PROG_CC
+# to automatically call this.
+AC_DEFUN([_AM_PROG_CC_C_O],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([compile])dnl
+AC_LANG_PUSH([C])dnl
+AC_CACHE_CHECK(
+  [whether $CC understands -c and -o together],
+  [am_cv_prog_cc_c_o],
+  [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])])
+  # Make sure it works both with $CC and with simple cc.
+  # Following AC_PROG_CC_C_O, we do the test twice because some
+  # compilers refuse to overwrite an existing .o file with -o,
+  # though they will create one.
+  am_cv_prog_cc_c_o=yes
+  for am_i in 1 2; do
+    if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \
+         && test -f conftest2.$ac_objext; then
+      : OK
+    else
+      am_cv_prog_cc_c_o=no
+      break
+    fi
+  done
+  rm -f core conftest*
+  unset am_i])
+if test "$am_cv_prog_cc_c_o" != yes; then
+   # Losing compiler, so override with the script.
+   # FIXME: It is wrong to rewrite CC.
+   # But if we don't then we get into trouble of one sort or another.
+   # A longer-term fix would be to have automake use am__CC in this case,
+   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+   CC="$am_aux_dir/compile $CC"
+fi
+AC_LANG_POP([C])])
+
+# For backward compatibility.
+AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
+
+# Copyright (C) 2001-2018 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_RUN_LOG(COMMAND)
+# -------------------
+# Run COMMAND, save the exit status in ac_status, and log it.
+# (This has been adapted from Autoconf's _AC_RUN_LOG macro.)
+AC_DEFUN([AM_RUN_LOG],
+[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD
+   ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+   (exit $ac_status); }])
+
+# Check to make sure that the build environment is sane.    -*- Autoconf -*-
+
+# Copyright (C) 1996-2018 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_SANITY_CHECK
+# ---------------
+AC_DEFUN([AM_SANITY_CHECK],
+[AC_MSG_CHECKING([whether build environment is sane])
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name.  Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+  *[[\\\"\#\$\&\'\`$am_lf]]*)
+    AC_MSG_ERROR([unsafe absolute working directory name]);;
+esac
+case $srcdir in
+  *[[\\\"\#\$\&\'\`$am_lf\ \   ]]*)
+    AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);;
+esac
+
+# Do 'set' in a subshell so we don't clobber the current shell's
+# arguments.  Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+   am_has_slept=no
+   for am_try in 1 2; do
+     echo "timestamp, slept: $am_has_slept" > conftest.file
+     set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+     if test "$[*]" = "X"; then
+       # -L didn't work.
+       set X `ls -t "$srcdir/configure" conftest.file`
+     fi
+     if test "$[*]" != "X $srcdir/configure conftest.file" \
+       && test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+       # If neither matched, then we have a broken ls.  This can happen
+       # if, for instance, CONFIG_SHELL is bash and it inherits a
+       # broken ls alias from the environment.  This has actually
+       # happened.  Such a system could not be considered "sane".
+       AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
+  alias in your environment])
+     fi
+     if test "$[2]" = conftest.file || test $am_try -eq 2; then
+       break
+     fi
+     # Just in case.
+     sleep 1
+     am_has_slept=yes
+   done
+   test "$[2]" = conftest.file
+   )
+then
+   # Ok.
+   :
+else
+   AC_MSG_ERROR([newly created file is older than distributed files!
+Check your system clock])
+fi
+AC_MSG_RESULT([yes])
+# If we didn't sleep, we still need to ensure time stamps of config.status and
+# generated files are strictly newer.
+am_sleep_pid=
+if grep 'slept: no' conftest.file >/dev/null 2>&1; then
+  ( sleep 1 ) &
+  am_sleep_pid=$!
+fi
+AC_CONFIG_COMMANDS_PRE(
+  [AC_MSG_CHECKING([that generated files are newer than configure])
+   if test -n "$am_sleep_pid"; then
+     # Hide warnings about reused PIDs.
+     wait $am_sleep_pid 2>/dev/null
+   fi
+   AC_MSG_RESULT([done])])
+rm -f conftest.file
+])
+
+# Copyright (C) 2009-2018 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_SILENT_RULES([DEFAULT])
+# --------------------------
+# Enable less verbose build rules; with the default set to DEFAULT
+# ("yes" being less verbose, "no" or empty being verbose).
+AC_DEFUN([AM_SILENT_RULES],
+[AC_ARG_ENABLE([silent-rules], [dnl
+AS_HELP_STRING(
+  [--enable-silent-rules],
+  [less verbose build output (undo: "make V=1")])
+AS_HELP_STRING(
+  [--disable-silent-rules],
+  [verbose build output (undo: "make V=0")])dnl
+])
+case $enable_silent_rules in @%:@ (((
+  yes) AM_DEFAULT_VERBOSITY=0;;
+   no) AM_DEFAULT_VERBOSITY=1;;
+    *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
+esac
+dnl
+dnl A few 'make' implementations (e.g., NonStop OS and NextStep)
+dnl do not support nested variable expansions.
+dnl See automake bug#9928 and bug#10237.
+am_make=${MAKE-make}
+AC_CACHE_CHECK([whether $am_make supports nested variables],
+   [am_cv_make_support_nested_variables],
+   [if AS_ECHO([['TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+       @$(TRUE)
+.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then
+  am_cv_make_support_nested_variables=yes
+else
+  am_cv_make_support_nested_variables=no
+fi])
+if test $am_cv_make_support_nested_variables = yes; then
+  dnl Using '$V' instead of '$(V)' breaks IRIX make.
+  AM_V='$(V)'
+  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+  AM_V=$AM_DEFAULT_VERBOSITY
+  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AC_SUBST([AM_V])dnl
+AM_SUBST_NOTMAKE([AM_V])dnl
+AC_SUBST([AM_DEFAULT_V])dnl
+AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl
+AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
+AM_BACKSLASH='\'
+AC_SUBST([AM_BACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
+])
+
+# Copyright (C) 2001-2018 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_STRIP
+# ---------------------
+# One issue with vendor 'install' (even GNU) is that you can't
+# specify the program used to strip binaries.  This is especially
+# annoying in cross-compiling environments, where the build's strip
+# is unlikely to handle the host's binaries.
+# Fortunately install-sh will honor a STRIPPROG variable, so we
+# always use install-sh in "make install-strip", and initialize
+# STRIPPROG with the value of the STRIP variable (set by the user).
+AC_DEFUN([AM_PROG_INSTALL_STRIP],
+[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+# Installed binaries are usually stripped using 'strip' when the user
+# run "make install-strip".  However 'strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the 'STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be 'maybe'.
+if test "$cross_compiling" != no; then
+  AC_CHECK_TOOL([STRIP], [strip], :)
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+AC_SUBST([INSTALL_STRIP_PROGRAM])])
+
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_SUBST_NOTMAKE(VARIABLE)
+# ---------------------------
+# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
+# This macro is traced by Automake.
+AC_DEFUN([_AM_SUBST_NOTMAKE])
+
+# AM_SUBST_NOTMAKE(VARIABLE)
+# --------------------------
+# Public sister of _AM_SUBST_NOTMAKE.
+AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
+
+# Check how to create a tarball.                            -*- Autoconf -*-
+
+# Copyright (C) 2004-2018 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_PROG_TAR(FORMAT)
+# --------------------
+# Check how to create a tarball in format FORMAT.
+# FORMAT should be one of 'v7', 'ustar', or 'pax'.
+#
+# Substitute a variable $(am__tar) that is a command
+# writing to stdout a FORMAT-tarball containing the directory
+# $tardir.
+#     tardir=directory && $(am__tar) > result.tar
+#
+# Substitute a variable $(am__untar) that extract such
+# a tarball read from stdin.
+#     $(am__untar) < result.tar
+#
+AC_DEFUN([_AM_PROG_TAR],
+[# Always define AMTAR for backward compatibility.  Yes, it's still used
+# in the wild :-(  We should find a proper way to deprecate it ...
+AC_SUBST([AMTAR], ['$${TAR-tar}'])
+
+# We'll loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
+
+m4_if([$1], [v7],
+  [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
+
+  [m4_case([$1],
+    [ustar],
+     [# The POSIX 1988 'ustar' format is defined with fixed-size fields.
+      # There is notably a 21 bits limit for the UID and the GID.  In fact,
+      # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343
+      # and bug#13588).
+      am_max_uid=2097151 # 2^21 - 1
+      am_max_gid=$am_max_uid
+      # The $UID and $GID variables are not portable, so we need to resort
+      # to the POSIX-mandated id(1) utility.  Errors in the 'id' calls
+      # below are definitely unexpected, so allow the users to see them
+      # (that is, avoid stderr redirection).
+      am_uid=`id -u || echo unknown`
+      am_gid=`id -g || echo unknown`
+      AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format])
+      if test $am_uid -le $am_max_uid; then
+         AC_MSG_RESULT([yes])
+      else
+         AC_MSG_RESULT([no])
+         _am_tools=none
+      fi
+      AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format])
+      if test $am_gid -le $am_max_gid; then
+         AC_MSG_RESULT([yes])
+      else
+        AC_MSG_RESULT([no])
+        _am_tools=none
+      fi],
+
+  [pax],
+    [],
+
+  [m4_fatal([Unknown tar format])])
+
+  AC_MSG_CHECKING([how to create a $1 tar archive])
+
+  # Go ahead even if we have the value already cached.  We do so because we
+  # need to set the values for the 'am__tar' and 'am__untar' variables.
+  _am_tools=${am_cv_prog_tar_$1-$_am_tools}
+
+  for _am_tool in $_am_tools; do
+    case $_am_tool in
+    gnutar)
+      for _am_tar in tar gnutar gtar; do
+        AM_RUN_LOG([$_am_tar --version]) && break
+      done
+      am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+      am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+      am__untar="$_am_tar -xf -"
+      ;;
+    plaintar)
+      # Must skip GNU tar: if it does not support --format= it doesn't create
+      # ustar tarball either.
+      (tar --version) >/dev/null 2>&1 && continue
+      am__tar='tar chf - "$$tardir"'
+      am__tar_='tar chf - "$tardir"'
+      am__untar='tar xf -'
+      ;;
+    pax)
+      am__tar='pax -L -x $1 -w "$$tardir"'
+      am__tar_='pax -L -x $1 -w "$tardir"'
+      am__untar='pax -r'
+      ;;
+    cpio)
+      am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+      am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+      am__untar='cpio -i -H $1 -d'
+      ;;
+    none)
+      am__tar=false
+      am__tar_=false
+      am__untar=false
+      ;;
+    esac
+
+    # If the value was cached, stop now.  We just wanted to have am__tar
+    # and am__untar set.
+    test -n "${am_cv_prog_tar_$1}" && break
+
+    # tar/untar a dummy directory, and stop if the command works.
+    rm -rf conftest.dir
+    mkdir conftest.dir
+    echo GrepMe > conftest.dir/file
+    AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+    rm -rf conftest.dir
+    if test -s conftest.tar; then
+      AM_RUN_LOG([$am__untar <conftest.tar])
+      AM_RUN_LOG([cat conftest.dir/file])
+      grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+    fi
+  done
+  rm -rf conftest.dir
+
+  AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+  AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+
+AC_SUBST([am__tar])
+AC_SUBST([am__untar])
+]) # _AM_PROG_TAR
+
+m4_include([gnulib_m4/00gnulib.m4])
+m4_include([gnulib_m4/absolute-header.m4])
+m4_include([gnulib_m4/alloca.m4])
+m4_include([gnulib_m4/asm-underscore.m4])
+m4_include([gnulib_m4/errno_h.m4])
+m4_include([gnulib_m4/exponentd.m4])
+m4_include([gnulib_m4/exponentf.m4])
+m4_include([gnulib_m4/exponentl.m4])
+m4_include([gnulib_m4/extensions.m4])
+m4_include([gnulib_m4/extern-inline.m4])
+m4_include([gnulib_m4/float_h.m4])
+m4_include([gnulib_m4/fpieee.m4])
+m4_include([gnulib_m4/fprintf-posix.m4])
+m4_include([gnulib_m4/frexp.m4])
+m4_include([gnulib_m4/frexpl.m4])
+m4_include([gnulib_m4/fseterr.m4])
+m4_include([gnulib_m4/gnulib-common.m4])
+m4_include([gnulib_m4/gnulib-comp.m4])
+m4_include([gnulib_m4/host-cpu-c-abi.m4])
+m4_include([gnulib_m4/include_next.m4])
+m4_include([gnulib_m4/intmax_t.m4])
+m4_include([gnulib_m4/inttypes_h.m4])
+m4_include([gnulib_m4/isnand.m4])
+m4_include([gnulib_m4/isnanf.m4])
+m4_include([gnulib_m4/isnanl.m4])
+m4_include([gnulib_m4/ldexpl.m4])
+m4_include([gnulib_m4/libunistring-base.m4])
+m4_include([gnulib_m4/limits-h.m4])
+m4_include([gnulib_m4/longlong.m4])
+m4_include([gnulib_m4/math_h.m4])
+m4_include([gnulib_m4/memchr.m4])
+m4_include([gnulib_m4/mmap-anon.m4])
+m4_include([gnulib_m4/multiarch.m4])
+m4_include([gnulib_m4/nocrash.m4])
+m4_include([gnulib_m4/non-recursive-gnulib-prefix-hack.m4])
+m4_include([gnulib_m4/off_t.m4])
+m4_include([gnulib_m4/printf-frexp.m4])
+m4_include([gnulib_m4/printf-frexpl.m4])
+m4_include([gnulib_m4/printf.m4])
+m4_include([gnulib_m4/signbit.m4])
+m4_include([gnulib_m4/size_max.m4])
+m4_include([gnulib_m4/snprintf.m4])
+m4_include([gnulib_m4/ssize_t.m4])
+m4_include([gnulib_m4/stddef_h.m4])
+m4_include([gnulib_m4/stdint.m4])
+m4_include([gnulib_m4/stdint_h.m4])
+m4_include([gnulib_m4/stdio_h.m4])
+m4_include([gnulib_m4/string_h.m4])
+m4_include([gnulib_m4/sys_types_h.m4])
+m4_include([gnulib_m4/vasnprintf.m4])
+m4_include([gnulib_m4/vsnprintf.m4])
+m4_include([gnulib_m4/warn-on-use.m4])
+m4_include([gnulib_m4/wchar_h.m4])
+m4_include([gnulib_m4/wchar_t.m4])
+m4_include([gnulib_m4/wctype_h.m4])
+m4_include([gnulib_m4/wcwidth.m4])
+m4_include([gnulib_m4/wint_t.m4])
+m4_include([gnulib_m4/xsize.m4])
+m4_include([acinclude.m4])
index 0fe7f26..48993dc 100644 (file)
@@ -1,12 +1,12 @@
-    Copyright (C) 2000-2014 Free Software Foundation, Inc.
+    Copyright (C) 2000-2018 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.
+    Copying and distribution of this file, with or without
+    modification, are permitted in any medium without royalty provided
+    the copyright notice and this notice are preserved.
 
 This is a port of GNU Groff to DJGPP v2.03 or later.
 Groff is the GNU version of document formatting tools related to
-`troff'.
+'troff'.
 
 This README file describes how to build and install Groff on MS-DOS or
 MS-Windows systems using the DJGPP port of GNU C/C++ compiler and
@@ -19,8 +19,8 @@ I.  Installing the pre-compiled binary package
     1. Unzip the file groNNNb.zip (where NNN is the version number)
        preserving the directory structure (-d switch to PKUNZIP) from
        the main DJGPP installation directory.  If you will use Groff
-       on Windows 9X or Windows2000, use an unzip program which
-       supports long filenames.
+       on Windows 9x, Windows 2000, or later, use an unzip program
+       which supports long filenames.
 
     2. Groff binaries were configured so that they will look for their
        standard directories under the directory pointed to by the
@@ -34,7 +34,7 @@ I.  Installing the pre-compiled binary package
         GROFF_TYPESETTER=ascii
         GROFF_FONT_PATH=%DJDIR%/share/groff/<version>/font
 
-       <version> is something like `1.16.1' or `1.17'.
+       <version> is something like '1.16.1' or '1.17'.
 
        In addition, you can set the variable GROFF_TMPDIR to point to
        a directory where you want Groff to create temporary files it
@@ -48,7 +48,7 @@ I.  Installing the pre-compiled binary package
        installed.
 
        Note that the GROFF_TYPESETTER variable sets the default Groff
-       device to be `ascii', which is suitable for formatting man
+       device to be 'ascii', which is suitable for formatting man
        pages to be viewed on the terminal.  Use the -T switch to
        generate output for other devices (e.g., -Tps for PostScript).
 
@@ -72,7 +72,7 @@ I.  Installing the pre-compiled binary package
        under construction, so some sections are empty.
 
        If you want to add a Groff entry to the main Info menu in the
-       file DIR, chdir to the `info' subdirectory of the main Groff
+       file DIR, chdir to the 'info' subdirectory of the main Groff
        installation directory and run this command:
 
          install-info --dir-file=dir groff.info
@@ -84,14 +84,14 @@ I.  Installing the pre-compiled binary package
 
                   groff -man -s foo.1 > foo.man
 
-       where `foo.1' is the troff source of the man page and `foo.man'
+       where 'foo.1' is the troff source of the man page and 'foo.man'
        is the formatted page.  If you need to view the man page, say
        this:
 
                   groff -man -s foo.1 | less
 
-       You can also use the DJGPP clone of the Unix `man' command, in
-       which case `man' runs the above command for you automatically.
+       You can also use the DJGPP clone of the Unix 'man' command, in
+       which case 'man' runs the above command for you automatically.
 
        Here's how you print man pages on a PostScript printer:
 
@@ -103,20 +103,20 @@ I.  Installing the pre-compiled binary package
 
        Printing the documents produced by Groff is possible either by
        redirecting Groff's standard output to the local printer
-       device, like shown above, or by using the `-l' switch to Groff.
+       device, like shown above, or by using the '-l' switch to Groff.
        The latter possibility causes Groff to pipe its output to a
        program whose name and arguments appear in the files named
-       `DESC' in each of the `devFOO' subdirectories of the
+       'DESC' in each of the 'devFOO' subdirectories of the
        %DJDIR%/share/groff/<version>/font directory; for example, the
        file devps/DESC is used by "groff -Tps".  The relevant line in
        these files begins with the word "print".
 
-       As configured, when invoked with the `-l' switch, Groff will
-       call `cat' (from GNU Textutils) to pipe its output to the
+       As configured, when invoked with the '-l' switch, Groff will
+       call 'cat' (from GNU Textutils) to pipe its output to the
        default printer device for -Tps, -Tlbp and -Tlj4 options, and
-       it will call `dvilj4' (from the dvljNNNb.zip package) for -Tdvi
+       it will call 'dvilj4' (from the dvljNNNb.zip package) for -Tdvi
        option.  If you don't have these programs installed, you can
-       edit the respective `DESC' files to replace these commands with
+       edit the respective 'DESC' files to replace these commands with
        something else.  The replacement program must be able to read
        its standard input and send its output to whatever printer you
        want.  The "print" entry is assumed to be a shell command, so
@@ -149,7 +149,7 @@ I.  Installing the pre-compiled binary package
                  - egrep
                  - sed
 
-       The `afmtodit' and `mmroff' utilities are Perl scripts, so you
+       The 'afmtodit' and 'mmroff' utilities are Perl scripts, so you
        will need a Perl port to run them.
 
        All of these ports should be available from the DJGPP sites.
@@ -171,8 +171,8 @@ I.  Installing the pre-compiled binary package
 
     8. The package does not include the directories under
        share/groff/<version>/font whose names begin with "devX": these
-       are needed on X-Windows for running the gxditview program, which
-       is not supported by this port.
+       are needed on the X Window System for running the gxditview
+       program, which is not supported by this port.
 
     9. Due to 8+3 limitations of DOS filesystems, several files were
        renamed:
@@ -215,22 +215,22 @@ II. Building Groff from sources
        Special considerations apply if you have GCC 2.8.1 installed,
        and cannot upgrade to a later version.  See paragraph 4 below.
 
-       After you install these tools, make sure you have a ``symlink''
-       to bash.exe called sh.exe and a ``symlink'' to gawk.exe called
+       After you install these tools, make sure you have a "symlink"
+       to bash.exe called sh.exe and a "symlink" to gawk.exe called
        awk.exe.  If not, go to the DJGPP bin/ subdirectory and type
        the following words of wisdom from the DOS prompt:
 
                      ln -s bash.exe sh.exe
                      ln -s gawk.exe awk.exe
 
-       (`ln' is part of GNU Fileutils, see above.)
+       ('ln' is part of GNU Fileutils, see above.)
 
     2. Unzip the source distribution groXYZs.zip (where XYZ is the
        version number) preserving the directory structure (-d switch
        to PKUNZIP) from the main DJGPP installation directory.  (If
-       you are building Groff on Windows 9X or Windows 2000, use an
-       unzip program which supports long filenames.)  This creates
-       directory gnu/groff-X.YZ and unzips the sources there.
+       you are building Groff on Windows 9x, Windows 2000, or later,
+       use an unzip program which supports long filenames.)  This
+       creates directory gnu/groff-X.YZ and unzips the sources there.
 
        If you are building from the official GNU distribution, unpack
        the .tar.gz archive like this:
@@ -286,7 +286,7 @@ II. Building Groff from sources
 
        The problem with redefining NULL should not happen with DJGPP
        v2.03 or later.  But if you still see compilation errors which
-       say "`NULL' undeclared", comment out the line in _G_config.h
+       say "'NULL' undeclared", comment out the line in _G_config.h
        that says this:
 
           #undef NULL
@@ -313,7 +313,7 @@ II. Building Groff from sources
        read it to make yourself familiar with the programs.)
 
        Note that the batch file sets a lot of environment variables;
-       if you get ``Out of environment space'' messages, launch a
+       if you get "Out of environment space" messages, launch a
        subsidiary COMMAND.COM with plenty of environment space, like
        so:
 
@@ -330,7 +330,7 @@ II. Building Groff from sources
        be installed under the top DJGPP installation directory.
 
        Alternatively, you could instruct Make explicitly where to
-       install the package by setting the `prefix' variable.  For
+       install the package by setting the 'prefix' variable.  For
        example:
 
                make install prefix=c:/groff
@@ -341,7 +341,7 @@ II. Building Groff from sources
        will need to format them.  Use the commands shown in chapter I,
        section 5 above to do that, and redirect its output to the
        appropriate catN subdirectory.  Alternatively, you could format
-       the pages when you need to view them (the DJGPP clone of `man'
+       the pages when you need to view them (the DJGPP clone of 'man'
        will automatically format them).
 
        Consult the installation instructions for pre-compiled binaries
@@ -349,10 +349,13 @@ II. Building Groff from sources
 
     8. You can safely delete the directories under
        share/groff/<version>/font whose names begin with "devX": these
-       are needed on X-Windows which is not supported by this port.
+       are used by the X Window System client 'gxditview', which is
+       not supported by this port.
 
 
-##### Emacs settings
+##### Editor settings
 Local Variables:
 mode: text
+fill-column: 70
 End:
+vim: set autoindent textwidth=70:
index 48eca86..8657ff6 100644 (file)
@@ -1,4 +1,4 @@
-Rem Copyright (C) 2000-2014 Free Software Foundation, Inc.\r
+Rem Copyright (C) 2000-2018 Free Software Foundation, Inc.\r
 Rem\r
 Rem This configure script is free software; the Free Software Foundation\r
 Rem gives unlimited permission to copy, distribute and modify it.\r
@@ -31,7 +31,7 @@ if not "%CONFIG_SITE%" == "%XSRC%/arch/djgpp/config.site" goto SmallEnv
 \r
 Rem This is required because DOS/Windows are case-insensitive\r
 Rem to file names, and "make install" will do nothing if Make\r
-Rem finds a file called `install'.\r
+Rem finds a file called 'install'.\r
 if exist INSTALL ren INSTALL INSTALL.txt\r
 \r
 Rem Set HOSTNAME so it shows in config.status\r
index d12473c..9e4a50f 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2000-2014 Free Software Foundation, Inc.
+# Copyright (C) 2000-2018 Free Software Foundation, Inc.
 #
 # This configure script is free software; the Free Software Foundation
 # gives unlimited permission to copy, distribute and modify it.
index 2925419..c1e5650 100644 (file)
@@ -1,6 +1,6 @@
 #! /bin/sh
 
-# Copyright (C) 2000-2014 Free Software Foundation, Inc.
+# Copyright (C) 2000-2018 Free Software Foundation, Inc.
 #
 # This configure script is free software; the Free Software Foundation
 # gives unlimited permission to copy, distribute and modify it.
@@ -34,5 +34,5 @@ LPR=${LPR='cat >>PRN'}
 DVIPRINT=${DVIPRINT='dvilj4 - >>PRN'}
 PERL=${PERL='/usr/bin/perl'}
 
-# Force `cp' to be used instead of "ln -s".
+# Force "cp" to be used instead of "ln -s".
 ac_cv_prog_LN_S="cp -p"
index 1e3a0cd..c78fccf 100644 (file)
@@ -1,4 +1,4 @@
-Rem Copyright (C) 2000-201 Free Software Foundation, Inc.\r
+Rem Copyright (C) 2000-2018 Free Software Foundation, Inc.\r
 Rem\r
 Rem This file is part of groff.\r
 Rem\r
diff --git a/arch/mingw/Makefile.sub b/arch/mingw/Makefile.sub
deleted file mode 100644 (file)
index 4c1e957..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-# Copyright (C) 2014
-#   Free Software Foundation, Inc.
-#
-# This file is part of groff.
-#
-# groff 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.
-#
-# groff 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 <http://www.gnu.org/licenses/>.
-#
-# Makefile.sub
-#
-WINSCRIPTS=\
-  afmtodit.cmd \
-  chem.cmd \
-  gperl.cmd \
-  gpinyin.cmd \
-  grap2graph.cmd \
-  groffer.cmd \
-  grog.cmd \
-  gropdf.cmd \
-  mmroff.cmd \
-  neqn.cmd \
-  pdfmom.cmd \
-  roff2dvi.cmd \
-  roff2html.cmd \
-  roff2pdf.cmd \
-  roff2ps.cmd \
-  roff2text.cmd \
-  roff2x.cmd
-
-RM=rm -f
-
-all: $(make_winscripts)
-install_data: $(make_install_winscripts)
-uninstall_sub: $(make_uninstall_winscripts)
-
-winscripts: $(WINSCRIPTS)
-
-install_winscripts: $(WINSCRIPTS)
-       -test -d $(DESTDIR)$(bindir) || $(mkinstalldirs) $(DESTDIR)$(bindir)
-       for f in $(WINSCRIPTS); do \
-         $(RM) $(DESTDIR)$(bindir)/$$f; \
-         $(INSTALL_SCRIPT) $(srcdir)/$$f $(DESTDIR)$(bindir)/$$f; \
-       done
-
-uninstall_winscripts:
-       -for f in $(WINSCRIPTS); do \
-         $(RM) $(DESTDIR)$(bindir)/$$f; \
-       done
-
-########################################################################
-# Emacs settings
-########################################################################
-#
-# Local Variables:
-# mode: makefile
-# End:
index 84f4085..6b26cc9 100644 (file)
@@ -75,7 +75,7 @@ rm -rf %tdir%
 goto end\r
 \r
 :version\r
-echo GNU grap2graph (groff) version 1.22.3\r
+echo GNU grap2graph (groff) version 1.22.4\r
 goto end\r
 \r
 :usage\r
diff --git a/arch/mingw/mingw.am b/arch/mingw/mingw.am
new file mode 100644 (file)
index 0000000..389453c
--- /dev/null
@@ -0,0 +1,52 @@
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Last update: 13 Aug 2015
+#
+# This file is part of groff.
+#
+# groff 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.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+#
+# mingw.am
+#
+WINSCRIPTS=\
+  arch/mingw/afmtodit.cmd \
+  arch/mingw/chem.cmd \
+  arch/mingw/gperl.cmd \
+  arch/mingw/gpinyin.cmd \
+  arch/mingw/grap2graph.cmd \
+  arch/mingw/groffer.cmd \
+  arch/mingw/grog.cmd \
+  arch/mingw/gropdf.cmd \
+  arch/mingw/mmroff.cmd \
+  arch/mingw/neqn.cmd \
+  arch/mingw/pdfmom.cmd \
+  arch/mingw/roff2dvi.cmd \
+  arch/mingw/roff2html.cmd \
+  arch/mingw/roff2pdf.cmd \
+  arch/mingw/roff2ps.cmd \
+  arch/mingw/roff2text.cmd \
+  arch/mingw/roff2x.cmd
+
+if BUILD_WINSCRIPTS
+bin_SCRIPTS += $(WINSCRIPTS)
+else
+EXTRA_DIST += $(WINSCRIPTS)
+endif
+
+
+########################################################################
+### Emacs settings
+# Local Variables:
+# mode: makefile-automake
+# End:
diff --git a/arch/misc/misc.am b/arch/misc/misc.am
new file mode 100644 (file)
index 0000000..2c3a1c8
--- /dev/null
@@ -0,0 +1,33 @@
+# Copyright (C) 2004-2018 Free Software Foundation, Inc.
+# Original Makefile.sub written by Keith Marshall
+#   (keith.d.marshall@ntlworld.com).
+# Adapted to Automake by Bertrand Garrigues (bertrand.garrigues@laposte.net).
+#
+# Last update: 13 Aug 2015
+#
+# This file is part of groff.
+#
+# groff 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.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+EXTRA_DIST += arch/misc/shdeps.sh
+MOSTLYCLEANFILES += shdeps.sed
+
+shdeps.sed: $(top_srcdir)/arch/misc/shdeps.sh
+       $(SHELL) $(top_srcdir)/arch/misc/shdeps.sh "$(RT_SEP)" "$(SH_SEP)" "$(bindir)" > $@
+
+
+########################################################################
+### Emacs settings
+# Local Variables:
+# mode: makefile-automake
+# End:
index 9a94381..c38a859 100644 (file)
@@ -1,29 +1,29 @@
 #! /bin/sh
-# shdeps.sh: Generate OS dependency fixups, for `groff' shell scripts
+# shdeps.sh: Generate OS dependency fixups, for 'groff' shell scripts
 #
-# Copyright (C) 2004-2014 Free Software Foundation, Inc.
+# Copyright (C) 2004-2018 Free Software Foundation, Inc.
 #      Written by Keith Marshall (keith.d.marshall@ntlworld.com)
 #
-# Invoked only by `make', as:
+# Invoked only by 'make', as:
 #    $(SHELL) shdeps.sh "$(RT_SEP)" "$(SH_SEP)" "$(bindir)" > shdeps.sed
-# 
+#
 # This file is part of groff.
-# 
+#
 # groff 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.
-# 
+#
 # groff 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 <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 cat << ETX
-# shdeps.sed: Script generated automatically by \`make' -- do not modify!
+# shdeps.sed: Script generated automatically by 'make' -- do not modify!
 
 /^$/N
 /@GROFF_BIN_PATH_SETUP@/c\\
@@ -31,10 +31,10 @@ ETX
 
 if [ "$1$2" = "::" ]
 then
-  # `PATH_SEPARATOR' is `:' both at `groff' run time, and in `make',
+  # 'PATH_SEPARATOR' is ':' both at 'groff' run time, and in 'make',
   # implying an implementation which is completely POSIX compliant.
-  # Simply apply the `GROFF_BIN_PATH' and `PATH_SEPARATOR' values
-  # determined by `configure', in all cases.
+  # Simply apply the 'GROFF_BIN_PATH' and 'PATH_SEPARATOR' values
+  # determined by 'configure', in all cases.
 
   cat << ETX
 \\
@@ -43,13 +43,13 @@ GROFF_RUNTIME="\${GROFF_BIN_PATH=$3}:"
 ETX
 
 else
-  # `PATH_SEPARATOR' is NOT always `:',
+  # 'PATH_SEPARATOR' is NOT always ':',
   # which suggests an implementation for a Microsoft platform.
-  # We need to choose the `GROFF_BIN_PATH' format and `PATH_SEPARATOR'
+  # We need to choose the 'GROFF_BIN_PATH' format and 'PATH_SEPARATOR'
   # which will suit the user's choice of shell.
   #
-  # Note that some Windows users may specify the `--prefix' path
-  # using backslash characters, instead of `/', preferred by POSIX,
+  # Note that some Windows users may specify the '--prefix' path
+  # using backslash characters, instead of '/', preferred by POSIX,
   # so we will also fix that up.
 
   POSIX_BINDIR=`echo $3 | tr '\\\\' /`
similarity index 95%
rename from src/libs/gnulib/build-aux/compile
rename to build-aux/compile
index 531136b..99e5052 100755 (executable)
@@ -1,9 +1,9 @@
 #! /bin/sh
 # Wrapper for compilers which do not understand '-c -o'.
 
-scriptversion=2012-10-14.11; # UTC
+scriptversion=2018-03-07.03; # UTC
 
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+# Copyright (C) 1999-2018 Free Software Foundation, Inc.
 # Written by Tom Tromey <tromey@cygnus.com>.
 #
 # This program is free software; you can redistribute it and/or modify
@@ -17,7 +17,7 @@ scriptversion=2012-10-14.11; # UTC
 # 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 <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
 # As a special exception to the GNU General Public License, if you
 # distribute this file as part of a program that contains a
@@ -255,7 +255,8 @@ EOF
     echo "compile $scriptversion"
     exit $?
     ;;
-  cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
+  cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \
+  icl | *[/\\]icl | icl.exe | *[/\\]icl.exe )
     func_cl_wrapper "$@"      # Doesn't return...
     ;;
 esac
@@ -339,9 +340,9 @@ exit $ret
 # Local Variables:
 # mode: shell-script
 # sh-indentation: 2
-# eval: (add-hook 'write-file-hooks 'time-stamp)
+# eval: (add-hook 'before-save-hook 'time-stamp)
 # time-stamp-start: "scriptversion="
 # time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC"
+# time-stamp-time-zone: "UTC0"
 # time-stamp-end: "; # UTC"
 # End:
similarity index 62%
rename from config.guess
rename to build-aux/config.guess
index 1f5c50c..b33c9e8 100755 (executable)
@@ -1,8 +1,8 @@
 #! /bin/sh
 # Attempt to guess a canonical system name.
-#   Copyright 1992-2014 Free Software Foundation, Inc.
+#   Copyright 1992-2018 Free Software Foundation, Inc.
 
-timestamp='2014-03-23'
+timestamp='2018-08-29'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -15,7 +15,7 @@ timestamp='2014-03-23'
 # 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 <http://www.gnu.org/licenses/>.
+# along with this program; if not, see <https://www.gnu.org/licenses/>.
 #
 # As a special exception to the GNU General Public License, if you
 # distribute this file as part of a program that contains a
@@ -24,12 +24,12 @@ timestamp='2014-03-23'
 # program.  This Exception is an additional permission under section 7
 # of the GNU General Public License, version 3 ("GPLv3").
 #
-# Originally written by Per Bothner.
+# Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
 #
 # You can get the latest version of this script from:
-# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
 #
-# Please send patches with a ChangeLog entry to config-patches@gnu.org.
+# Please send patches to <config-patches@gnu.org>.
 
 
 me=`echo "$0" | sed -e 's,.*/,,'`
@@ -39,7 +39,7 @@ Usage: $0 [OPTION]
 
 Output the configuration name of the system \`$me' is run on.
 
-Operation modes:
+Options:
   -h, --help         print this help, then exit
   -t, --time-stamp   print date of last modification, then exit
   -v, --version      print version number, then exit
@@ -50,7 +50,7 @@ version="\
 GNU config.guess ($timestamp)
 
 Originally written by Per Bothner.
-Copyright 1992-2014 Free Software Foundation, Inc.
+Copyright 1992-2018 Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -84,8 +84,6 @@ if test $# != 0; then
   exit 1
 fi
 
-trap 'exit 1' 1 2 15
-
 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a
 # compiler to aid in system detection is discouraged as it requires
 # temporary files to be created and, as you can see below, it is a
@@ -96,34 +94,39 @@ trap 'exit 1' 1 2 15
 
 # Portable tmp directory creation inspired by the Autoconf team.
 
-set_cc_for_build='
-trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
-trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
-: ${TMPDIR=/tmp} ;
- { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
- { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
- { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
- { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
-dummy=$tmp/dummy ;
-tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
-case $CC_FOR_BUILD,$HOST_CC,$CC in
- ,,)    echo "int x;" > $dummy.c ;
-       for c in cc gcc c89 c99 ; do
-         if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
-            CC_FOR_BUILD="$c"; break ;
-         fi ;
-       done ;
-       if test x"$CC_FOR_BUILD" = x ; then
-         CC_FOR_BUILD=no_compiler_found ;
-       fi
-       ;;
- ,,*)   CC_FOR_BUILD=$CC ;;
- ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
-esac ; set_cc_for_build= ;'
+tmp=
+# shellcheck disable=SC2172
+trap 'test -z "$tmp" || rm -fr "$tmp"' 1 2 13 15
+trap 'exitcode=$?; test -z "$tmp" || rm -fr "$tmp"; exit $exitcode' 0
+
+set_cc_for_build() {
+    : "${TMPDIR=/tmp}"
+    # shellcheck disable=SC2039
+    { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
+       { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } ||
+       { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } ||
+       { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; }
+    dummy=$tmp/dummy
+    case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in
+       ,,)    echo "int x;" > "$dummy.c"
+              for driver in cc gcc c89 c99 ; do
+                  if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then
+                      CC_FOR_BUILD="$driver"
+                      break
+                  fi
+              done
+              if test x"$CC_FOR_BUILD" = x ; then
+                  CC_FOR_BUILD=no_compiler_found
+              fi
+              ;;
+       ,,*)   CC_FOR_BUILD=$CC ;;
+       ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
+    esac
+}
 
 # This is needed to find uname on a Pyramid OSx when run in the BSD universe.
 # (ghazi@noc.rutgers.edu 1994-08-24)
-if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
+if test -f /.attbin/uname ; then
        PATH=$PATH:/.attbin ; export PATH
 fi
 
@@ -132,14 +135,14 @@ UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
 UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
 UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
 
-case "${UNAME_SYSTEM}" in
+case "$UNAME_SYSTEM" in
 Linux|GNU|GNU/*)
        # If the system lacks a compiler, then just pick glibc.
        # We could probably try harder.
        LIBC=gnu
 
-       eval $set_cc_for_build
-       cat <<-EOF > $dummy.c
+       set_cc_for_build
+       cat <<-EOF > "$dummy.c"
        #include <features.h>
        #if defined(__UCLIBC__)
        LIBC=uclibc
@@ -149,13 +152,20 @@ Linux|GNU|GNU/*)
        LIBC=gnu
        #endif
        EOF
-       eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`
+       eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`"
+
+       # If ldd exists, use it to detect musl libc.
+       if command -v ldd >/dev/null && \
+               ldd --version 2>&1 | grep -q ^musl
+       then
+           LIBC=musl
+       fi
        ;;
 esac
 
 # Note: order is significant - the case branches are not exclusive.
 
-case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
     *:NetBSD:*:*)
        # NetBSD (nbsd) targets should (where applicable) match one or
        # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
@@ -168,21 +178,31 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
        # Note: NetBSD doesn't particularly care about the vendor
        # portion of the name.  We always set it to "unknown".
        sysctl="sysctl -n hw.machine_arch"
-       UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
-           /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
-       case "${UNAME_MACHINE_ARCH}" in
+       UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \
+           "/sbin/$sysctl" 2>/dev/null || \
+           "/usr/sbin/$sysctl" 2>/dev/null || \
+           echo unknown)`
+       case "$UNAME_MACHINE_ARCH" in
            armeb) machine=armeb-unknown ;;
            arm*) machine=arm-unknown ;;
            sh3el) machine=shl-unknown ;;
            sh3eb) machine=sh-unknown ;;
            sh5el) machine=sh5le-unknown ;;
-           *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
+           earmv*)
+               arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'`
+               endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'`
+               machine="${arch}${endian}"-unknown
+               ;;
+           *) machine="$UNAME_MACHINE_ARCH"-unknown ;;
        esac
        # The Operating System including object format, if it has switched
-       # to ELF recently, or will in the future.
-       case "${UNAME_MACHINE_ARCH}" in
+       # to ELF recently (or will in the future) and ABI.
+       case "$UNAME_MACHINE_ARCH" in
+           earm*)
+               os=netbsdelf
+               ;;
            arm*|i386|m68k|ns32k|sh3*|sparc|vax)
-               eval $set_cc_for_build
+               set_cc_for_build
                if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
                        | grep -q __ELF__
                then
@@ -197,44 +217,67 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
                os=netbsd
                ;;
        esac
+       # Determine ABI tags.
+       case "$UNAME_MACHINE_ARCH" in
+           earm*)
+               expr='s/^earmv[0-9]/-eabi/;s/eb$//'
+               abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"`
+               ;;
+       esac
        # The OS release
        # Debian GNU/NetBSD machines have a different userland, and
        # thus, need a distinct triplet. However, they do not need
        # kernel version information, so it can be replaced with a
        # suitable tag, in the style of linux-gnu.
-       case "${UNAME_VERSION}" in
+       case "$UNAME_VERSION" in
            Debian*)
                release='-gnu'
                ;;
            *)
-               release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+               release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2`
                ;;
        esac
        # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
        # contains redundant information, the shorter form:
        # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
-       echo "${machine}-${os}${release}"
+       echo "$machine-${os}${release}${abi-}"
        exit ;;
     *:Bitrig:*:*)
        UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
-       echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE}
+       echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE"
        exit ;;
     *:OpenBSD:*:*)
        UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
-       echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
+       echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE"
+       exit ;;
+    *:LibertyBSD:*:*)
+       UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'`
+       echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE"
+       exit ;;
+    *:MidnightBSD:*:*)
+       echo "$UNAME_MACHINE"-unknown-midnightbsd"$UNAME_RELEASE"
        exit ;;
     *:ekkoBSD:*:*)
-       echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
+       echo "$UNAME_MACHINE"-unknown-ekkobsd"$UNAME_RELEASE"
        exit ;;
     *:SolidBSD:*:*)
-       echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
+       echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE"
        exit ;;
     macppc:MirBSD:*:*)
-       echo powerpc-unknown-mirbsd${UNAME_RELEASE}
+       echo powerpc-unknown-mirbsd"$UNAME_RELEASE"
        exit ;;
     *:MirBSD:*:*)
-       echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
+       echo "$UNAME_MACHINE"-unknown-mirbsd"$UNAME_RELEASE"
        exit ;;
+    *:Sortix:*:*)
+       echo "$UNAME_MACHINE"-unknown-sortix
+       exit ;;
+    *:Redox:*:*)
+       echo "$UNAME_MACHINE"-unknown-redox
+       exit ;;
+    mips:OSF1:*.*)
+        echo mips-dec-osf1
+        exit ;;
     alpha:OSF1:*:*)
        case $UNAME_RELEASE in
        *4.0)
@@ -251,63 +294,54 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
        ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1`
        case "$ALPHA_CPU_TYPE" in
            "EV4 (21064)")
-               UNAME_MACHINE="alpha" ;;
+               UNAME_MACHINE=alpha ;;
            "EV4.5 (21064)")
-               UNAME_MACHINE="alpha" ;;
+               UNAME_MACHINE=alpha ;;
            "LCA4 (21066/21068)")
-               UNAME_MACHINE="alpha" ;;
+               UNAME_MACHINE=alpha ;;
            "EV5 (21164)")
-               UNAME_MACHINE="alphaev5" ;;
+               UNAME_MACHINE=alphaev5 ;;
            "EV5.6 (21164A)")
-               UNAME_MACHINE="alphaev56" ;;
+               UNAME_MACHINE=alphaev56 ;;
            "EV5.6 (21164PC)")
-               UNAME_MACHINE="alphapca56" ;;
+               UNAME_MACHINE=alphapca56 ;;
            "EV5.7 (21164PC)")
-               UNAME_MACHINE="alphapca57" ;;
+               UNAME_MACHINE=alphapca57 ;;
            "EV6 (21264)")
-               UNAME_MACHINE="alphaev6" ;;
+               UNAME_MACHINE=alphaev6 ;;
            "EV6.7 (21264A)")
-               UNAME_MACHINE="alphaev67" ;;
+               UNAME_MACHINE=alphaev67 ;;
            "EV6.8CB (21264C)")
-               UNAME_MACHINE="alphaev68" ;;
+               UNAME_MACHINE=alphaev68 ;;
            "EV6.8AL (21264B)")
-               UNAME_MACHINE="alphaev68" ;;
+               UNAME_MACHINE=alphaev68 ;;
            "EV6.8CX (21264D)")
-               UNAME_MACHINE="alphaev68" ;;
+               UNAME_MACHINE=alphaev68 ;;
            "EV6.9A (21264/EV69A)")
-               UNAME_MACHINE="alphaev69" ;;
+               UNAME_MACHINE=alphaev69 ;;
            "EV7 (21364)")
-               UNAME_MACHINE="alphaev7" ;;
+               UNAME_MACHINE=alphaev7 ;;
            "EV7.9 (21364A)")
-               UNAME_MACHINE="alphaev79" ;;
+               UNAME_MACHINE=alphaev79 ;;
        esac
        # A Pn.n version is a patched version.
        # A Vn.n version is a released version.
        # A Tn.n version is a released field test version.
        # A Xn.n version is an unreleased experimental baselevel.
        # 1.2 uses "1.2" for uname -r.
-       echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+       echo "$UNAME_MACHINE"-dec-osf"`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`"
        # Reset EXIT trap before exiting to avoid spurious non-zero exit code.
        exitcode=$?
        trap '' 0
        exit $exitcode ;;
-    Alpha\ *:Windows_NT*:*)
-       # How do we know it's Interix rather than the generic POSIX subsystem?
-       # Should we change UNAME_MACHINE based on the output of uname instead
-       # of the specific Alpha model?
-       echo alpha-pc-interix
-       exit ;;
-    21064:Windows_NT:50:3)
-       echo alpha-dec-winnt3.5
-       exit ;;
     Amiga*:UNIX_System_V:4.0:*)
        echo m68k-unknown-sysv4
        exit ;;
     *:[Aa]miga[Oo][Ss]:*:*)
-       echo ${UNAME_MACHINE}-unknown-amigaos
+       echo "$UNAME_MACHINE"-unknown-amigaos
        exit ;;
     *:[Mm]orph[Oo][Ss]:*:*)
-       echo ${UNAME_MACHINE}-unknown-morphos
+       echo "$UNAME_MACHINE"-unknown-morphos
        exit ;;
     *:OS/390:*:*)
        echo i370-ibm-openedition
@@ -319,7 +353,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
        echo powerpc-ibm-os400
        exit ;;
     arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
-       echo arm-acorn-riscix${UNAME_RELEASE}
+       echo arm-acorn-riscix"$UNAME_RELEASE"
        exit ;;
     arm*:riscos:*:*|arm*:RISCOS:*:*)
        echo arm-unknown-riscos
@@ -346,38 +380,33 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
            sparc) echo sparc-icl-nx7; exit ;;
        esac ;;
     s390x:SunOS:*:*)
-       echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       echo "$UNAME_MACHINE"-ibm-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`"
        exit ;;
     sun4H:SunOS:5.*:*)
-       echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       echo sparc-hal-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
        exit ;;
     sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
-       echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       echo sparc-sun-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`"
        exit ;;
     i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
-       echo i386-pc-auroraux${UNAME_RELEASE}
+       echo i386-pc-auroraux"$UNAME_RELEASE"
        exit ;;
     i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
-       eval $set_cc_for_build
-       SUN_ARCH="i386"
-       # If there is a compiler, see if it is configured for 64-bit objects.
-       # Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
-       # This test works for both compilers.
-       if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
-           if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
-               (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
-               grep IS_64BIT_ARCH >/dev/null
-           then
-               SUN_ARCH="x86_64"
-           fi
-       fi
-       echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       UNAME_REL="`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`"
+       case `isainfo -b` in
+           32)
+               echo i386-pc-solaris2"$UNAME_REL"
+               ;;
+           64)
+               echo x86_64-pc-solaris2"$UNAME_REL"
+               ;;
+       esac
        exit ;;
     sun4*:SunOS:6*:*)
        # According to config.sub, this is the proper way to canonicalize
        # SunOS6.  Hard to guess exactly what SunOS6 will be like, but
        # it's likely to be more like Solaris than SunOS4.
-       echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       echo sparc-sun-solaris3"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
        exit ;;
     sun4*:SunOS:*:*)
        case "`/usr/bin/arch -k`" in
@@ -386,25 +415,25 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
                ;;
        esac
        # Japanese Language versions have a version number like `4.1.3-JL'.
-       echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
+       echo sparc-sun-sunos"`echo "$UNAME_RELEASE"|sed -e 's/-/_/'`"
        exit ;;
     sun3*:SunOS:*:*)
-       echo m68k-sun-sunos${UNAME_RELEASE}
+       echo m68k-sun-sunos"$UNAME_RELEASE"
        exit ;;
     sun*:*:4.2BSD:*)
        UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
-       test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
+       test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3
        case "`/bin/arch`" in
            sun3)
-               echo m68k-sun-sunos${UNAME_RELEASE}
+               echo m68k-sun-sunos"$UNAME_RELEASE"
                ;;
            sun4)
-               echo sparc-sun-sunos${UNAME_RELEASE}
+               echo sparc-sun-sunos"$UNAME_RELEASE"
                ;;
        esac
        exit ;;
     aushp:SunOS:*:*)
-       echo sparc-auspex-sunos${UNAME_RELEASE}
+       echo sparc-auspex-sunos"$UNAME_RELEASE"
        exit ;;
     # The situation for MiNT is a little confusing.  The machine name
     # can be virtually everything (everything which is not
@@ -415,44 +444,44 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
     # MiNT.  But MiNT is downward compatible to TOS, so this should
     # be no problem.
     atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
-       echo m68k-atari-mint${UNAME_RELEASE}
+       echo m68k-atari-mint"$UNAME_RELEASE"
        exit ;;
     atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
-       echo m68k-atari-mint${UNAME_RELEASE}
+       echo m68k-atari-mint"$UNAME_RELEASE"
        exit ;;
     *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
-       echo m68k-atari-mint${UNAME_RELEASE}
+       echo m68k-atari-mint"$UNAME_RELEASE"
        exit ;;
     milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
-       echo m68k-milan-mint${UNAME_RELEASE}
+       echo m68k-milan-mint"$UNAME_RELEASE"
        exit ;;
     hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
-       echo m68k-hades-mint${UNAME_RELEASE}
+       echo m68k-hades-mint"$UNAME_RELEASE"
        exit ;;
     *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
-       echo m68k-unknown-mint${UNAME_RELEASE}
+       echo m68k-unknown-mint"$UNAME_RELEASE"
        exit ;;
     m68k:machten:*:*)
-       echo m68k-apple-machten${UNAME_RELEASE}
+       echo m68k-apple-machten"$UNAME_RELEASE"
        exit ;;
     powerpc:machten:*:*)
-       echo powerpc-apple-machten${UNAME_RELEASE}
+       echo powerpc-apple-machten"$UNAME_RELEASE"
        exit ;;
     RISC*:Mach:*:*)
        echo mips-dec-mach_bsd4.3
        exit ;;
     RISC*:ULTRIX:*:*)
-       echo mips-dec-ultrix${UNAME_RELEASE}
+       echo mips-dec-ultrix"$UNAME_RELEASE"
        exit ;;
     VAX*:ULTRIX*:*:*)
-       echo vax-dec-ultrix${UNAME_RELEASE}
+       echo vax-dec-ultrix"$UNAME_RELEASE"
        exit ;;
     2020:CLIX:*:* | 2430:CLIX:*:*)
-       echo clipper-intergraph-clix${UNAME_RELEASE}
+       echo clipper-intergraph-clix"$UNAME_RELEASE"
        exit ;;
     mips:*:*:UMIPS | mips:*:*:RISCos)
-       eval $set_cc_for_build
-       sed 's/^        //' << EOF >$dummy.c
+       set_cc_for_build
+       sed 's/^        //' << EOF > "$dummy.c"
 #ifdef __cplusplus
 #include <stdio.h>  /* for printf() prototype */
        int main (int argc, char *argv[]) {
@@ -461,23 +490,23 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
 #endif
        #if defined (host_mips) && defined (MIPSEB)
        #if defined (SYSTYPE_SYSV)
-         printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
+         printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0);
        #endif
        #if defined (SYSTYPE_SVR4)
-         printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
+         printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0);
        #endif
        #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
-         printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
+         printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0);
        #endif
        #endif
          exit (-1);
        }
 EOF
-       $CC_FOR_BUILD -o $dummy $dummy.c &&
-         dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
-         SYSTEM_NAME=`$dummy $dummyarg` &&
+       $CC_FOR_BUILD -o "$dummy" "$dummy.c" &&
+         dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` &&
+         SYSTEM_NAME=`"$dummy" "$dummyarg"` &&
            { echo "$SYSTEM_NAME"; exit; }
-       echo mips-mips-riscos${UNAME_RELEASE}
+       echo mips-mips-riscos"$UNAME_RELEASE"
        exit ;;
     Motorola:PowerMAX_OS:*:*)
        echo powerpc-motorola-powermax
@@ -503,17 +532,17 @@ EOF
     AViiON:dgux:*:*)
        # DG/UX returns AViiON for all architectures
        UNAME_PROCESSOR=`/usr/bin/uname -p`
-       if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
+       if [ "$UNAME_PROCESSOR" = mc88100 ] || [ "$UNAME_PROCESSOR" = mc88110 ]
        then
-           if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
-              [ ${TARGET_BINARY_INTERFACE}x = x ]
+           if [ "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx ] || \
+              [ "$TARGET_BINARY_INTERFACE"x = x ]
            then
-               echo m88k-dg-dgux${UNAME_RELEASE}
+               echo m88k-dg-dgux"$UNAME_RELEASE"
            else
-               echo m88k-dg-dguxbcs${UNAME_RELEASE}
+               echo m88k-dg-dguxbcs"$UNAME_RELEASE"
            fi
        else
-           echo i586-dg-dgux${UNAME_RELEASE}
+           echo i586-dg-dgux"$UNAME_RELEASE"
        fi
        exit ;;
     M88*:DolphinOS:*:*)        # DolphinOS (SVR3)
@@ -530,7 +559,7 @@ EOF
        echo m68k-tektronix-bsd
        exit ;;
     *:IRIX*:*:*)
-       echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
+       echo mips-sgi-irix"`echo "$UNAME_RELEASE"|sed -e 's/-/_/g'`"
        exit ;;
     ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
        echo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id
@@ -542,14 +571,14 @@ EOF
        if [ -x /usr/bin/oslevel ] ; then
                IBM_REV=`/usr/bin/oslevel`
        else
-               IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+               IBM_REV="$UNAME_VERSION.$UNAME_RELEASE"
        fi
-       echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
+       echo "$UNAME_MACHINE"-ibm-aix"$IBM_REV"
        exit ;;
     *:AIX:2:3)
        if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
-               eval $set_cc_for_build
-               sed 's/^                //' << EOF >$dummy.c
+               set_cc_for_build
+               sed 's/^                //' << EOF > "$dummy.c"
                #include <sys/systemcfg.h>
 
                main()
@@ -560,7 +589,7 @@ EOF
                        exit(0);
                        }
 EOF
-               if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
+               if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"`
                then
                        echo "$SYSTEM_NAME"
                else
@@ -574,26 +603,27 @@ EOF
        exit ;;
     *:AIX:*:[4567])
        IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
-       if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
+       if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then
                IBM_ARCH=rs6000
        else
                IBM_ARCH=powerpc
        fi
-       if [ -x /usr/bin/oslevel ] ; then
-               IBM_REV=`/usr/bin/oslevel`
+       if [ -x /usr/bin/lslpp ] ; then
+               IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc |
+                          awk -F: '{ print $3 }' | sed s/[0-9]*$/0/`
        else
-               IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+               IBM_REV="$UNAME_VERSION.$UNAME_RELEASE"
        fi
-       echo ${IBM_ARCH}-ibm-aix${IBM_REV}
+       echo "$IBM_ARCH"-ibm-aix"$IBM_REV"
        exit ;;
     *:AIX:*:*)
        echo rs6000-ibm-aix
        exit ;;
-    ibmrt:4.4BSD:*|romp-ibm:BSD:*)
+    ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*)
        echo romp-ibm-bsd4.4
        exit ;;
     ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
-       echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to
+       echo romp-ibm-bsd"$UNAME_RELEASE"   # 4.3 with uname added to
        exit ;;                             # report: romp-ibm BSD 4.3
     *:BOSX:*:*)
        echo rs6000-bull-bosx
@@ -608,28 +638,28 @@ EOF
        echo m68k-hp-bsd4.4
        exit ;;
     9000/[34678]??:HP-UX:*:*)
-       HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
-       case "${UNAME_MACHINE}" in
-           9000/31? )            HP_ARCH=m68000 ;;
-           9000/[34]?? )         HP_ARCH=m68k ;;
+       HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'`
+       case "$UNAME_MACHINE" in
+           9000/31?)            HP_ARCH=m68000 ;;
+           9000/[34]??)         HP_ARCH=m68k ;;
            9000/[678][0-9][0-9])
                if [ -x /usr/bin/getconf ]; then
                    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
                    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
-                   case "${sc_cpu_version}" in
-                     523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
-                     528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+                   case "$sc_cpu_version" in
+                     523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0
+                     528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1
                      532)                      # CPU_PA_RISC2_0
-                       case "${sc_kernel_bits}" in
-                         32) HP_ARCH="hppa2.0n" ;;
-                         64) HP_ARCH="hppa2.0w" ;;
-                         '') HP_ARCH="hppa2.0" ;;   # HP-UX 10.20
+                       case "$sc_kernel_bits" in
+                         32) HP_ARCH=hppa2.0n ;;
+                         64) HP_ARCH=hppa2.0w ;;
+                         '') HP_ARCH=hppa2.0 ;;   # HP-UX 10.20
                        esac ;;
                    esac
                fi
-               if [ "${HP_ARCH}" = "" ]; then
-                   eval $set_cc_for_build
-                   sed 's/^            //' << EOF >$dummy.c
+               if [ "$HP_ARCH" = "" ]; then
+                   set_cc_for_build
+                   sed 's/^            //' << EOF > "$dummy.c"
 
                #define _HPUX_SOURCE
                #include <stdlib.h>
@@ -662,13 +692,13 @@ EOF
                    exit (0);
                }
 EOF
-                   (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
+                   (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"`
                    test -z "$HP_ARCH" && HP_ARCH=hppa
                fi ;;
        esac
-       if [ ${HP_ARCH} = "hppa2.0w" ]
+       if [ "$HP_ARCH" = hppa2.0w ]
        then
-           eval $set_cc_for_build
+           set_cc_for_build
 
            # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
            # 32-bit code.  hppa64-hp-hpux* has the same kernel and a compiler
@@ -679,23 +709,23 @@ EOF
            # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
            # => hppa64-hp-hpux11.23
 
-           if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
+           if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) |
                grep -q __LP64__
            then
-               HP_ARCH="hppa2.0w"
+               HP_ARCH=hppa2.0w
            else
-               HP_ARCH="hppa64"
+               HP_ARCH=hppa64
            fi
        fi
-       echo ${HP_ARCH}-hp-hpux${HPUX_REV}
+       echo "$HP_ARCH"-hp-hpux"$HPUX_REV"
        exit ;;
     ia64:HP-UX:*:*)
-       HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
-       echo ia64-hp-hpux${HPUX_REV}
+       HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'`
+       echo ia64-hp-hpux"$HPUX_REV"
        exit ;;
     3050*:HI-UX:*:*)
-       eval $set_cc_for_build
-       sed 's/^        //' << EOF >$dummy.c
+       set_cc_for_build
+       sed 's/^        //' << EOF > "$dummy.c"
        #include <unistd.h>
        int
        main ()
@@ -720,11 +750,11 @@ EOF
          exit (0);
        }
 EOF
-       $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
+       $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` &&
                { echo "$SYSTEM_NAME"; exit; }
        echo unknown-hitachi-hiuxwe2
        exit ;;
-    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
+    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*)
        echo hppa1.1-hp-bsd
        exit ;;
     9000/8??:4.3bsd:*:*)
@@ -733,7 +763,7 @@ EOF
     *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
        echo hppa1.0-hp-mpeix
        exit ;;
-    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
+    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*)
        echo hppa1.1-hp-osf
        exit ;;
     hp8??:OSF1:*:*)
@@ -741,9 +771,9 @@ EOF
        exit ;;
     i*86:OSF1:*:*)
        if [ -x /usr/sbin/sysversion ] ; then
-           echo ${UNAME_MACHINE}-unknown-osf1mk
+           echo "$UNAME_MACHINE"-unknown-osf1mk
        else
-           echo ${UNAME_MACHINE}-unknown-osf1
+           echo "$UNAME_MACHINE"-unknown-osf1
        fi
        exit ;;
     parisc*:Lites*:*:*)
@@ -768,127 +798,120 @@ EOF
        echo c4-convex-bsd
        exit ;;
     CRAY*Y-MP:*:*:*)
-       echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       echo ymp-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
        exit ;;
     CRAY*[A-Z]90:*:*:*)
-       echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
+       echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \
        | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
              -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
              -e 's/\.[^.]*$/.X/'
        exit ;;
     CRAY*TS:*:*:*)
-       echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       echo t90-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
        exit ;;
     CRAY*T3E:*:*:*)
-       echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       echo alphaev5-cray-unicosmk"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
        exit ;;
     CRAY*SV1:*:*:*)
-       echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       echo sv1-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
        exit ;;
     *:UNICOS/mp:*:*)
-       echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       echo craynv-cray-unicosmp"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
        exit ;;
     F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
-       FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
-       FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
-       FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+       FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
+       FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
+       FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'`
        echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
        exit ;;
     5000:UNIX_System_V:4.*:*)
-       FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
-       FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
+       FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
+       FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'`
        echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
        exit ;;
     i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
-       echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
+       echo "$UNAME_MACHINE"-pc-bsdi"$UNAME_RELEASE"
        exit ;;
     sparc*:BSD/OS:*:*)
-       echo sparc-unknown-bsdi${UNAME_RELEASE}
+       echo sparc-unknown-bsdi"$UNAME_RELEASE"
        exit ;;
     *:BSD/OS:*:*)
-       echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+       echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE"
+       exit ;;
+    arm:FreeBSD:*:*)
+       UNAME_PROCESSOR=`uname -p`
+       set_cc_for_build
+       if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
+           | grep -q __ARM_PCS_VFP
+       then
+           echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabi
+       else
+           echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabihf
+       fi
        exit ;;
     *:FreeBSD:*:*)
        UNAME_PROCESSOR=`/usr/bin/uname -p`
-       case ${UNAME_PROCESSOR} in
+       case "$UNAME_PROCESSOR" in
            amd64)
-               echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
-           *)
-               echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+               UNAME_PROCESSOR=x86_64 ;;
+           i386)
+               UNAME_PROCESSOR=i586 ;;
        esac
+       echo "$UNAME_PROCESSOR"-unknown-freebsd"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`"
        exit ;;
     i*:CYGWIN*:*)
-       echo ${UNAME_MACHINE}-pc-cygwin
+       echo "$UNAME_MACHINE"-pc-cygwin
        exit ;;
     *:MINGW64*:*)
-       echo ${UNAME_MACHINE}-pc-mingw64
+       echo "$UNAME_MACHINE"-pc-mingw64
        exit ;;
     *:MINGW*:*)
-       echo ${UNAME_MACHINE}-pc-mingw32
+       echo "$UNAME_MACHINE"-pc-mingw32
        exit ;;
     *:MSYS*:*)
-       echo ${UNAME_MACHINE}-pc-msys
-       exit ;;
-    i*:windows32*:*)
-       # uname -m includes "-pc" on this system.
-       echo ${UNAME_MACHINE}-mingw32
+       echo "$UNAME_MACHINE"-pc-msys
        exit ;;
     i*:PW*:*)
-       echo ${UNAME_MACHINE}-pc-pw32
+       echo "$UNAME_MACHINE"-pc-pw32
        exit ;;
     *:Interix*:*)
-       case ${UNAME_MACHINE} in
+       case "$UNAME_MACHINE" in
            x86)
-               echo i586-pc-interix${UNAME_RELEASE}
+               echo i586-pc-interix"$UNAME_RELEASE"
                exit ;;
            authenticamd | genuineintel | EM64T)
-               echo x86_64-unknown-interix${UNAME_RELEASE}
+               echo x86_64-unknown-interix"$UNAME_RELEASE"
                exit ;;
            IA64)
-               echo ia64-unknown-interix${UNAME_RELEASE}
+               echo ia64-unknown-interix"$UNAME_RELEASE"
                exit ;;
        esac ;;
-    [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
-       echo i${UNAME_MACHINE}-pc-mks
-       exit ;;
-    8664:Windows_NT:*)
-       echo x86_64-pc-mks
-       exit ;;
-    i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
-       # How do we know it's Interix rather than the generic POSIX subsystem?
-       # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
-       # UNAME_MACHINE based on the output of uname instead of i386?
-       echo i586-pc-interix
-       exit ;;
     i*:UWIN*:*)
-       echo ${UNAME_MACHINE}-pc-uwin
+       echo "$UNAME_MACHINE"-pc-uwin
        exit ;;
     amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
        echo x86_64-unknown-cygwin
        exit ;;
-    p*:CYGWIN*:*)
-       echo powerpcle-unknown-cygwin
-       exit ;;
     prep*:SunOS:5.*:*)
-       echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       echo powerpcle-unknown-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
        exit ;;
     *:GNU:*:*)
        # the GNU system
-       echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+       echo "`echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,'`-unknown-$LIBC`echo "$UNAME_RELEASE"|sed -e 's,/.*$,,'`"
        exit ;;
     *:GNU/*:*:*)
        # other systems with GNU libc and userland
-       echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
+       echo "$UNAME_MACHINE-unknown-`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`-$LIBC"
        exit ;;
-    i*86:Minix:*:*)
-       echo ${UNAME_MACHINE}-pc-minix
+    *:Minix:*:*)
+       echo "$UNAME_MACHINE"-unknown-minix
        exit ;;
     aarch64:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
        exit ;;
     aarch64_be:Linux:*:*)
        UNAME_MACHINE=aarch64_be
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
        exit ;;
     alpha:Linux:*:*)
        case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
@@ -901,58 +924,64 @@ EOF
          EV68*) UNAME_MACHINE=alphaev68 ;;
        esac
        objdump --private-headers /bin/sh | grep -q ld.so.1
-       if test "$?" = 0 ; then LIBC="gnulibc1" ; fi
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       if test "$?" = 0 ; then LIBC=gnulibc1 ; fi
+       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
        exit ;;
     arc:Linux:*:* | arceb:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
        exit ;;
     arm*:Linux:*:*)
-       eval $set_cc_for_build
+       set_cc_for_build
        if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
            | grep -q __ARM_EABI__
        then
-           echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+           echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
        else
            if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
                | grep -q __ARM_PCS_VFP
            then
-               echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi
+               echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabi
            else
-               echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf
+               echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabihf
            fi
        fi
        exit ;;
     avr32*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
        exit ;;
     cris:Linux:*:*)
-       echo ${UNAME_MACHINE}-axis-linux-${LIBC}
+       echo "$UNAME_MACHINE"-axis-linux-"$LIBC"
        exit ;;
     crisv32:Linux:*:*)
-       echo ${UNAME_MACHINE}-axis-linux-${LIBC}
+       echo "$UNAME_MACHINE"-axis-linux-"$LIBC"
+       exit ;;
+    e2k:Linux:*:*)
+       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
        exit ;;
     frv:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
        exit ;;
     hexagon:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
        exit ;;
     i*86:Linux:*:*)
-       echo ${UNAME_MACHINE}-pc-linux-${LIBC}
+       echo "$UNAME_MACHINE"-pc-linux-"$LIBC"
        exit ;;
     ia64:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+       exit ;;
+    k1om:Linux:*:*)
+       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
        exit ;;
     m32r*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
        exit ;;
     m68*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
        exit ;;
     mips:Linux:*:* | mips64:Linux:*:*)
-       eval $set_cc_for_build
-       sed 's/^        //' << EOF >$dummy.c
+       set_cc_for_build
+       sed 's/^        //' << EOF > "$dummy.c"
        #undef CPU
        #undef ${UNAME_MACHINE}
        #undef ${UNAME_MACHINE}el
@@ -966,64 +995,70 @@ EOF
        #endif
        #endif
 EOF
-       eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
-       test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
+       eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU'`"
+       test "x$CPU" != x && { echo "$CPU-unknown-linux-$LIBC"; exit; }
        ;;
+    mips64el:Linux:*:*)
+       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+       exit ;;
     openrisc*:Linux:*:*)
-       echo or1k-unknown-linux-${LIBC}
+       echo or1k-unknown-linux-"$LIBC"
        exit ;;
     or32:Linux:*:* | or1k*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
        exit ;;
     padre:Linux:*:*)
-       echo sparc-unknown-linux-${LIBC}
+       echo sparc-unknown-linux-"$LIBC"
        exit ;;
     parisc64:Linux:*:* | hppa64:Linux:*:*)
-       echo hppa64-unknown-linux-${LIBC}
+       echo hppa64-unknown-linux-"$LIBC"
        exit ;;
     parisc:Linux:*:* | hppa:Linux:*:*)
        # Look for CPU level
        case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
-         PA7*) echo hppa1.1-unknown-linux-${LIBC} ;;
-         PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;
-         *)    echo hppa-unknown-linux-${LIBC} ;;
+         PA7*) echo hppa1.1-unknown-linux-"$LIBC" ;;
+         PA8*) echo hppa2.0-unknown-linux-"$LIBC" ;;
+         *)    echo hppa-unknown-linux-"$LIBC" ;;
        esac
        exit ;;
     ppc64:Linux:*:*)
-       echo powerpc64-unknown-linux-${LIBC}
+       echo powerpc64-unknown-linux-"$LIBC"
        exit ;;
     ppc:Linux:*:*)
-       echo powerpc-unknown-linux-${LIBC}
+       echo powerpc-unknown-linux-"$LIBC"
        exit ;;
     ppc64le:Linux:*:*)
-       echo powerpc64le-unknown-linux-${LIBC}
+       echo powerpc64le-unknown-linux-"$LIBC"
        exit ;;
     ppcle:Linux:*:*)
-       echo powerpcle-unknown-linux-${LIBC}
+       echo powerpcle-unknown-linux-"$LIBC"
+       exit ;;
+    riscv32:Linux:*:* | riscv64:Linux:*:*)
+       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
        exit ;;
     s390:Linux:*:* | s390x:Linux:*:*)
-       echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
+       echo "$UNAME_MACHINE"-ibm-linux-"$LIBC"
        exit ;;
     sh64*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
        exit ;;
     sh*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
        exit ;;
     sparc:Linux:*:* | sparc64:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
        exit ;;
     tile*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
        exit ;;
     vax:Linux:*:*)
-       echo ${UNAME_MACHINE}-dec-linux-${LIBC}
+       echo "$UNAME_MACHINE"-dec-linux-"$LIBC"
        exit ;;
     x86_64:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       echo "$UNAME_MACHINE"-pc-linux-"$LIBC"
        exit ;;
     xtensa*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
        exit ;;
     i*86:DYNIX/ptx:4*:*)
        # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
@@ -1037,34 +1072,34 @@ EOF
        # I am not positive that other SVR4 systems won't match this,
        # I just have to hope.  -- rms.
        # Use sysv4.2uw... so that sysv4* matches it.
-       echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
+       echo "$UNAME_MACHINE"-pc-sysv4.2uw"$UNAME_VERSION"
        exit ;;
     i*86:OS/2:*:*)
        # If we were able to find `uname', then EMX Unix compatibility
        # is probably installed.
-       echo ${UNAME_MACHINE}-pc-os2-emx
+       echo "$UNAME_MACHINE"-pc-os2-emx
        exit ;;
     i*86:XTS-300:*:STOP)
-       echo ${UNAME_MACHINE}-unknown-stop
+       echo "$UNAME_MACHINE"-unknown-stop
        exit ;;
     i*86:atheos:*:*)
-       echo ${UNAME_MACHINE}-unknown-atheos
+       echo "$UNAME_MACHINE"-unknown-atheos
        exit ;;
     i*86:syllable:*:*)
-       echo ${UNAME_MACHINE}-pc-syllable
+       echo "$UNAME_MACHINE"-pc-syllable
        exit ;;
     i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
-       echo i386-unknown-lynxos${UNAME_RELEASE}
+       echo i386-unknown-lynxos"$UNAME_RELEASE"
        exit ;;
     i*86:*DOS:*:*)
-       echo ${UNAME_MACHINE}-pc-msdosdjgpp
+       echo "$UNAME_MACHINE"-pc-msdosdjgpp
        exit ;;
-    i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
-       UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
+    i*86:*:4.*:*)
+       UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'`
        if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
-               echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
+               echo "$UNAME_MACHINE"-univel-sysv"$UNAME_REL"
        else
-               echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
+               echo "$UNAME_MACHINE"-pc-sysv"$UNAME_REL"
        fi
        exit ;;
     i*86:*:5:[678]*)
@@ -1074,12 +1109,12 @@ EOF
            *Pentium)        UNAME_MACHINE=i586 ;;
            *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
        esac
-       echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
+       echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}{$UNAME_VERSION}"
        exit ;;
     i*86:*:3.2:*)
        if test -f /usr/options/cb.name; then
                UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
-               echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
+               echo "$UNAME_MACHINE"-pc-isc"$UNAME_REL"
        elif /bin/uname -X 2>/dev/null >/dev/null ; then
                UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
                (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
@@ -1089,9 +1124,9 @@ EOF
                        && UNAME_MACHINE=i686
                (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
                        && UNAME_MACHINE=i686
-               echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
+               echo "$UNAME_MACHINE"-pc-sco"$UNAME_REL"
        else
-               echo ${UNAME_MACHINE}-pc-sysv32
+               echo "$UNAME_MACHINE"-pc-sysv32
        fi
        exit ;;
     pc:*:*:*)
@@ -1099,7 +1134,7 @@ EOF
        # uname -m prints for DJGPP always 'pc', but it prints nothing about
        # the processor, so we play safe by assuming i586.
        # Note: whatever this is, it MUST be the same as what config.sub
-       # prints for the "djgpp" host, or else GDB configury will decide that
+       # prints for the "djgpp" host, or else GDB configure will decide that
        # this is a cross-build.
        echo i586-pc-msdosdjgpp
        exit ;;
@@ -1111,9 +1146,9 @@ EOF
        exit ;;
     i860:*:4.*:*) # i860-SVR4
        if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
-         echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
+         echo i860-stardent-sysv"$UNAME_RELEASE" # Stardent Vistra i860-SVR4
        else # Add other i860-SVR4 vendors below as they are discovered.
-         echo i860-unknown-sysv${UNAME_RELEASE}  # Unknown i860-SVR4
+         echo i860-unknown-sysv"$UNAME_RELEASE"  # Unknown i860-SVR4
        fi
        exit ;;
     mini*:CTIX:SYS*5:*)
@@ -1133,9 +1168,9 @@ EOF
        test -r /etc/.relid \
        && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
        /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-         && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+         && { echo i486-ncr-sysv4.3"$OS_REL"; exit; }
        /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
-         && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+         && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;;
     3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
        /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
          && { echo i486-ncr-sysv4; exit; } ;;
@@ -1144,28 +1179,28 @@ EOF
        test -r /etc/.relid \
            && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
        /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-           && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+           && { echo i486-ncr-sysv4.3"$OS_REL"; exit; }
        /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
-           && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
+           && { echo i586-ncr-sysv4.3"$OS_REL"; exit; }
        /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
-           && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+           && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;;
     m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
-       echo m68k-unknown-lynxos${UNAME_RELEASE}
+       echo m68k-unknown-lynxos"$UNAME_RELEASE"
        exit ;;
     mc68030:UNIX_System_V:4.*:*)
        echo m68k-atari-sysv4
        exit ;;
     TSUNAMI:LynxOS:2.*:*)
-       echo sparc-unknown-lynxos${UNAME_RELEASE}
+       echo sparc-unknown-lynxos"$UNAME_RELEASE"
        exit ;;
     rs6000:LynxOS:2.*:*)
-       echo rs6000-unknown-lynxos${UNAME_RELEASE}
+       echo rs6000-unknown-lynxos"$UNAME_RELEASE"
        exit ;;
     PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
-       echo powerpc-unknown-lynxos${UNAME_RELEASE}
+       echo powerpc-unknown-lynxos"$UNAME_RELEASE"
        exit ;;
     SM[BE]S:UNIX_SV:*:*)
-       echo mips-dde-sysv${UNAME_RELEASE}
+       echo mips-dde-sysv"$UNAME_RELEASE"
        exit ;;
     RM*:ReliantUNIX-*:*:*)
        echo mips-sni-sysv4
@@ -1176,7 +1211,7 @@ EOF
     *:SINIX-*:*:*)
        if uname -p 2>/dev/null >/dev/null ; then
                UNAME_MACHINE=`(uname -p) 2>/dev/null`
-               echo ${UNAME_MACHINE}-sni-sysv4
+               echo "$UNAME_MACHINE"-sni-sysv4
        else
                echo ns32k-sni-sysv
        fi
@@ -1196,23 +1231,23 @@ EOF
        exit ;;
     i*86:VOS:*:*)
        # From Paul.Green@stratus.com.
-       echo ${UNAME_MACHINE}-stratus-vos
+       echo "$UNAME_MACHINE"-stratus-vos
        exit ;;
     *:VOS:*:*)
        # From Paul.Green@stratus.com.
        echo hppa1.1-stratus-vos
        exit ;;
     mc68*:A/UX:*:*)
-       echo m68k-apple-aux${UNAME_RELEASE}
+       echo m68k-apple-aux"$UNAME_RELEASE"
        exit ;;
     news*:NEWS-OS:6*:*)
        echo mips-sony-newsos6
        exit ;;
     R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
        if [ -d /usr/nec ]; then
-               echo mips-nec-sysv${UNAME_RELEASE}
+               echo mips-nec-sysv"$UNAME_RELEASE"
        else
-               echo mips-unknown-sysv${UNAME_RELEASE}
+               echo mips-unknown-sysv"$UNAME_RELEASE"
        fi
        exit ;;
     BeBox:BeOS:*:*)    # BeOS running on hardware made by Be, PPC only.
@@ -1231,46 +1266,56 @@ EOF
        echo x86_64-unknown-haiku
        exit ;;
     SX-4:SUPER-UX:*:*)
-       echo sx4-nec-superux${UNAME_RELEASE}
+       echo sx4-nec-superux"$UNAME_RELEASE"
        exit ;;
     SX-5:SUPER-UX:*:*)
-       echo sx5-nec-superux${UNAME_RELEASE}
+       echo sx5-nec-superux"$UNAME_RELEASE"
        exit ;;
     SX-6:SUPER-UX:*:*)
-       echo sx6-nec-superux${UNAME_RELEASE}
+       echo sx6-nec-superux"$UNAME_RELEASE"
        exit ;;
     SX-7:SUPER-UX:*:*)
-       echo sx7-nec-superux${UNAME_RELEASE}
+       echo sx7-nec-superux"$UNAME_RELEASE"
        exit ;;
     SX-8:SUPER-UX:*:*)
-       echo sx8-nec-superux${UNAME_RELEASE}
+       echo sx8-nec-superux"$UNAME_RELEASE"
        exit ;;
     SX-8R:SUPER-UX:*:*)
-       echo sx8r-nec-superux${UNAME_RELEASE}
+       echo sx8r-nec-superux"$UNAME_RELEASE"
+       exit ;;
+    SX-ACE:SUPER-UX:*:*)
+       echo sxace-nec-superux"$UNAME_RELEASE"
        exit ;;
     Power*:Rhapsody:*:*)
-       echo powerpc-apple-rhapsody${UNAME_RELEASE}
+       echo powerpc-apple-rhapsody"$UNAME_RELEASE"
        exit ;;
     *:Rhapsody:*:*)
-       echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+       echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE"
        exit ;;
     *:Darwin:*:*)
        UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
-       eval $set_cc_for_build
+       set_cc_for_build
        if test "$UNAME_PROCESSOR" = unknown ; then
            UNAME_PROCESSOR=powerpc
        fi
-       if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then
-           if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+       if test "`echo "$UNAME_RELEASE" | sed -e 's/\..*//'`" -le 10 ; then
+           if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
                if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
-                   (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
-                   grep IS_64BIT_ARCH >/dev/null
+                      (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+                      grep IS_64BIT_ARCH >/dev/null
                then
                    case $UNAME_PROCESSOR in
                        i386) UNAME_PROCESSOR=x86_64 ;;
                        powerpc) UNAME_PROCESSOR=powerpc64 ;;
                    esac
                fi
+               # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc
+               if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \
+                      (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+                      grep IS_PPC >/dev/null
+               then
+                   UNAME_PROCESSOR=powerpc
+               fi
            fi
        elif test "$UNAME_PROCESSOR" = i386 ; then
            # Avoid executing cc on OS X 10.9, as it ships with a stub
@@ -1281,27 +1326,33 @@ EOF
            # that Apple uses in portable devices.
            UNAME_PROCESSOR=x86_64
        fi
-       echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
+       echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE"
        exit ;;
     *:procnto*:*:* | *:QNX:[0123456789]*:*)
        UNAME_PROCESSOR=`uname -p`
-       if test "$UNAME_PROCESSOR" = "x86"; then
+       if test "$UNAME_PROCESSOR" = x86; then
                UNAME_PROCESSOR=i386
                UNAME_MACHINE=pc
        fi
-       echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
+       echo "$UNAME_PROCESSOR"-"$UNAME_MACHINE"-nto-qnx"$UNAME_RELEASE"
        exit ;;
     *:QNX:*:4*)
        echo i386-pc-qnx
        exit ;;
-    NEO-?:NONSTOP_KERNEL:*:*)
-       echo neo-tandem-nsk${UNAME_RELEASE}
+    NEO-*:NONSTOP_KERNEL:*:*)
+       echo neo-tandem-nsk"$UNAME_RELEASE"
        exit ;;
     NSE-*:NONSTOP_KERNEL:*:*)
-       echo nse-tandem-nsk${UNAME_RELEASE}
+       echo nse-tandem-nsk"$UNAME_RELEASE"
        exit ;;
-    NSR-?:NONSTOP_KERNEL:*:*)
-       echo nsr-tandem-nsk${UNAME_RELEASE}
+    NSR-*:NONSTOP_KERNEL:*:*)
+       echo nsr-tandem-nsk"$UNAME_RELEASE"
+       exit ;;
+    NSV-*:NONSTOP_KERNEL:*:*)
+       echo nsv-tandem-nsk"$UNAME_RELEASE"
+       exit ;;
+    NSX-*:NONSTOP_KERNEL:*:*)
+       echo nsx-tandem-nsk"$UNAME_RELEASE"
        exit ;;
     *:NonStop-UX:*:*)
        echo mips-compaq-nonstopux
@@ -1310,18 +1361,19 @@ EOF
        echo bs2000-siemens-sysv
        exit ;;
     DS/*:UNIX_System_V:*:*)
-       echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
+       echo "$UNAME_MACHINE"-"$UNAME_SYSTEM"-"$UNAME_RELEASE"
        exit ;;
     *:Plan9:*:*)
        # "uname -m" is not consistent, so use $cputype instead. 386
        # is converted to i386 for consistency with other x86
        # operating systems.
-       if test "$cputype" = "386"; then
+       # shellcheck disable=SC2154
+       if test "$cputype" = 386; then
            UNAME_MACHINE=i386
        else
            UNAME_MACHINE="$cputype"
        fi
-       echo ${UNAME_MACHINE}-unknown-plan9
+       echo "$UNAME_MACHINE"-unknown-plan9
        exit ;;
     *:TOPS-10:*:*)
        echo pdp10-unknown-tops10
@@ -1342,14 +1394,14 @@ EOF
        echo pdp10-unknown-its
        exit ;;
     SEI:*:*:SEIUX)
-       echo mips-sei-seiux${UNAME_RELEASE}
+       echo mips-sei-seiux"$UNAME_RELEASE"
        exit ;;
     *:DragonFly:*:*)
-       echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+       echo "$UNAME_MACHINE"-unknown-dragonfly"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`"
        exit ;;
     *:*VMS:*:*)
        UNAME_MACHINE=`(uname -p) 2>/dev/null`
-       case "${UNAME_MACHINE}" in
+       case "$UNAME_MACHINE" in
            A*) echo alpha-dec-vms ; exit ;;
            I*) echo ia64-dec-vms ; exit ;;
            V*) echo vax-dec-vms ; exit ;;
@@ -1358,34 +1410,48 @@ EOF
        echo i386-pc-xenix
        exit ;;
     i*86:skyos:*:*)
-       echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
+       echo "$UNAME_MACHINE"-pc-skyos"`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'`"
        exit ;;
     i*86:rdos:*:*)
-       echo ${UNAME_MACHINE}-pc-rdos
+       echo "$UNAME_MACHINE"-pc-rdos
        exit ;;
     i*86:AROS:*:*)
-       echo ${UNAME_MACHINE}-pc-aros
+       echo "$UNAME_MACHINE"-pc-aros
        exit ;;
     x86_64:VMkernel:*:*)
-       echo ${UNAME_MACHINE}-unknown-esx
+       echo "$UNAME_MACHINE"-unknown-esx
+       exit ;;
+    amd64:Isilon\ OneFS:*:*)
+       echo x86_64-unknown-onefs
        exit ;;
 esac
 
+echo "$0: unable to guess system type" >&2
+
+case "$UNAME_MACHINE:$UNAME_SYSTEM" in
+    mips:Linux | mips64:Linux)
+       # If we got here on MIPS GNU/Linux, output extra information.
+       cat >&2 <<EOF
+
+NOTE: MIPS GNU/Linux systems require a C compiler to fully recognize
+the system type. Please install a C compiler and try again.
+EOF
+       ;;
+esac
+
 cat >&2 <<EOF
-$0: unable to guess system type
 
-This script, last modified $timestamp, has failed to recognize
-the operating system you are using. It is advised that you
-download the most up to date version of the config scripts from
+This script (version $timestamp), has failed to recognize the
+operating system you are using. If your script is old, overwrite *all*
+copies of config.guess and config.sub with the latest versions from:
 
-  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+  https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
 and
-  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+  https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
 
-If the version you run ($0) is already up to date, please
-send the following data and any information you think might be
-pertinent to <config-patches@gnu.org> in order to provide the needed
-information to handle your system.
+If $0 has already been updated, send the following data and any
+information you think might be pertinent to config-patches@gnu.org to
+provide the necessary information to handle your system.
 
 config.guess timestamp = $timestamp
 
@@ -1404,16 +1470,16 @@ hostinfo               = `(hostinfo) 2>/dev/null`
 /usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`
 /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
 
-UNAME_MACHINE = ${UNAME_MACHINE}
-UNAME_RELEASE = ${UNAME_RELEASE}
-UNAME_SYSTEM  = ${UNAME_SYSTEM}
-UNAME_VERSION = ${UNAME_VERSION}
+UNAME_MACHINE = "$UNAME_MACHINE"
+UNAME_RELEASE = "$UNAME_RELEASE"
+UNAME_SYSTEM  = "$UNAME_SYSTEM"
+UNAME_VERSION = "$UNAME_VERSION"
 EOF
 
 exit 1
 
 # Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
+# eval: (add-hook 'before-save-hook 'time-stamp)
 # time-stamp-start: "timestamp='"
 # time-stamp-format: "%:y-%02m-%02d"
 # time-stamp-end: "'"
similarity index 99%
rename from config.rpath
rename to build-aux/config.rpath
index b625621..fc5913d 100755 (executable)
@@ -2,7 +2,7 @@
 # Output a system dependent set of variables, describing how to set the
 # run time search path of shared libraries in an executable.
 #
-#   Copyright 1996-2014 Free Software Foundation, Inc.
+#   Copyright 1996-2018 Free Software Foundation, Inc.
 #   Taken from GNU libtool, 2001
 #   Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
 #
diff --git a/build-aux/config.sub b/build-aux/config.sub
new file mode 100755 (executable)
index 0000000..b51fb8c
--- /dev/null
@@ -0,0 +1,1790 @@
+#! /bin/sh
+# Configuration validation subroutine script.
+#   Copyright 1992-2018 Free Software Foundation, Inc.
+
+timestamp='2018-08-29'
+
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 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 <https://www.gnu.org/licenses/>.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that
+# program.  This Exception is an additional permission under section 7
+# of the GNU General Public License, version 3 ("GPLv3").
+
+
+# Please send patches to <config-patches@gnu.org>.
+#
+# Configuration subroutine to validate and canonicalize a configuration type.
+# Supply the specified configuration type as an argument.
+# If it is invalid, we print an error message on stderr and exit with code 1.
+# Otherwise, we print the canonical config type on stdout and succeed.
+
+# You can get the latest version of this script from:
+# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
+
+# This file is supposed to be the same for all GNU packages
+# and recognize all the CPU types, system types and aliases
+# that are meaningful with *any* GNU software.
+# Each package is responsible for reporting which valid configurations
+# it does not support.  The user should be able to distinguish
+# a failure to support a valid configuration from a meaningless
+# configuration.
+
+# The goal of this file is to map all the various variations of a given
+# machine specification into a single specification in the form:
+#      CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or in some cases, the newer four-part form:
+#      CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+# It is wrong to echo any other type of specification.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
+
+Canonicalize a configuration name.
+
+Options:
+  -h, --help         print this help, then exit
+  -t, --time-stamp   print date of last modification, then exit
+  -v, --version      print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.sub ($timestamp)
+
+Copyright 1992-2018 Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+  case $1 in
+    --time-stamp | --time* | -t )
+       echo "$timestamp" ; exit ;;
+    --version | -v )
+       echo "$version" ; exit ;;
+    --help | --h* | -h )
+       echo "$usage"; exit ;;
+    -- )     # Stop option processing
+       shift; break ;;
+    - )        # Use stdin as input.
+       break ;;
+    -* )
+       echo "$me: invalid option $1$help"
+       exit 1 ;;
+
+    *local*)
+       # First pass through any local machine types.
+       echo "$1"
+       exit ;;
+
+    * )
+       break ;;
+  esac
+done
+
+case $# in
+ 0) echo "$me: missing argument$help" >&2
+    exit 1;;
+ 1) ;;
+ *) echo "$me: too many arguments$help" >&2
+    exit 1;;
+esac
+
+# Split fields of configuration type
+IFS="-" read -r field1 field2 field3 field4 <<EOF
+$1
+EOF
+
+# Separate into logical components for further validation
+case $1 in
+       *-*-*-*-*)
+               echo Invalid configuration \`"$1"\': more than four components >&2
+               exit 1
+               ;;
+       *-*-*-*)
+               basic_machine=$field1-$field2
+               os=$field3-$field4
+               ;;
+       *-*-*)
+               # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
+               # parts
+               maybe_os=$field2-$field3
+               case $maybe_os in
+                       nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc \
+                       | linux-newlib* | linux-musl* | linux-uclibc* | uclinux-uclibc* \
+                       | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
+                       | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
+                       | storm-chaos* | os2-emx* | rtmk-nova*)
+                               basic_machine=$field1
+                               os=$maybe_os
+                               ;;
+                       android-linux)
+                               basic_machine=$field1-unknown
+                               os=linux-android
+                               ;;
+                       *)
+                               basic_machine=$field1-$field2
+                               os=$field3
+                               ;;
+               esac
+               ;;
+       *-*)
+               # A lone config we happen to match not fitting any patern
+               case $field1-$field2 in
+                       decstation-3100)
+                               basic_machine=mips-dec
+                               os=
+                               ;;
+                       *-*)
+                               # Second component is usually, but not always the OS
+                               case $field2 in
+                                       # Prevent following clause from handling this valid os
+                                       sun*os*)
+                                               basic_machine=$field1
+                                               os=$field2
+                                               ;;
+                                       # Manufacturers
+                                       dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
+                                       | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
+                                       | unicom* | ibm* | next | hp | isi* | apollo | altos* \
+                                       | convergent* | ncr* | news | 32* | 3600* | 3100* \
+                                       | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \
+                                       | ultra | tti* | harris | dolphin | highlevel | gould \
+                                       | cbm | ns | masscomp | apple | axis | knuth | cray \
+                                       | microblaze* | sim | cisco \
+                                       | oki | wec | wrs | winbond)
+                                               basic_machine=$field1-$field2
+                                               os=
+                                               ;;
+                                       *)
+                                               basic_machine=$field1
+                                               os=$field2
+                                               ;;
+                               esac
+                       ;;
+               esac
+               ;;
+       *)
+               # Convert single-component short-hands not valid as part of
+               # multi-component configurations.
+               case $field1 in
+                       386bsd)
+                               basic_machine=i386-pc
+                               os=bsd
+                               ;;
+                       a29khif)
+                               basic_machine=a29k-amd
+                               os=udi
+                               ;;
+                       adobe68k)
+                               basic_machine=m68010-adobe
+                               os=scout
+                               ;;
+                       alliant)
+                               basic_machine=fx80-alliant
+                               os=
+                               ;;
+                       altos | altos3068)
+                               basic_machine=m68k-altos
+                               os=
+                               ;;
+                       am29k)
+                               basic_machine=a29k-none
+                               os=bsd
+                               ;;
+                       amdahl)
+                               basic_machine=580-amdahl
+                               os=sysv
+                               ;;
+                       amiga)
+                               basic_machine=m68k-unknown
+                               os=
+                               ;;
+                       amigaos | amigados)
+                               basic_machine=m68k-unknown
+                               os=amigaos
+                               ;;
+                       amigaunix | amix)
+                               basic_machine=m68k-unknown
+                               os=sysv4
+                               ;;
+                       apollo68)
+                               basic_machine=m68k-apollo
+                               os=sysv
+                               ;;
+                       apollo68bsd)
+                               basic_machine=m68k-apollo
+                               os=bsd
+                               ;;
+                       aros)
+                               basic_machine=i386-pc
+                               os=aros
+                               ;;
+                       aux)
+                               basic_machine=m68k-apple
+                               os=aux
+                               ;;
+                       balance)
+                               basic_machine=ns32k-sequent
+                               os=dynix
+                               ;;
+                       blackfin)
+                               basic_machine=bfin-unknown
+                               os=linux
+                               ;;
+                       cegcc)
+                               basic_machine=arm-unknown
+                               os=cegcc
+                               ;;
+                       convex-c1)
+                               basic_machine=c1-convex
+                               os=bsd
+                               ;;
+                       convex-c2)
+                               basic_machine=c2-convex
+                               os=bsd
+                               ;;
+                       convex-c32)
+                               basic_machine=c32-convex
+                               os=bsd
+                               ;;
+                       convex-c34)
+                               basic_machine=c34-convex
+                               os=bsd
+                               ;;
+                       convex-c38)
+                               basic_machine=c38-convex
+                               os=bsd
+                               ;;
+                       cray)
+                               basic_machine=j90-cray
+                               os=unicos
+                               ;;
+                       crds | unos)
+                               basic_machine=m68k-crds
+                               os=
+                               ;;
+                       da30)
+                               basic_machine=m68k-da30
+                               os=
+                               ;;
+                       decstation | pmax | pmin | dec3100 | decstatn)
+                               basic_machine=mips-dec
+                               os=
+                               ;;
+                       delta88)
+                               basic_machine=m88k-motorola
+                               os=sysv3
+                               ;;
+                       dicos)
+                               basic_machine=i686-pc
+                               os=dicos
+                               ;;
+                       djgpp)
+                               basic_machine=i586-pc
+                               os=msdosdjgpp
+                               ;;
+                       ebmon29k)
+                               basic_machine=a29k-amd
+                               os=ebmon
+                               ;;
+                       es1800 | OSE68k | ose68k | ose | OSE)
+                               basic_machine=m68k-ericsson
+                               os=ose
+                               ;;
+                       gmicro)
+                               basic_machine=tron-gmicro
+                               os=sysv
+                               ;;
+                       go32)
+                               basic_machine=i386-pc
+                               os=go32
+                               ;;
+                       h8300hms)
+                               basic_machine=h8300-hitachi
+                               os=hms
+                               ;;
+                       h8300xray)
+                               basic_machine=h8300-hitachi
+                               os=xray
+                               ;;
+                       h8500hms)
+                               basic_machine=h8500-hitachi
+                               os=hms
+                               ;;
+                       harris)
+                               basic_machine=m88k-harris
+                               os=sysv3
+                               ;;
+                       hp300)
+                               basic_machine=m68k-hp
+                               ;;
+                       hp300bsd)
+                               basic_machine=m68k-hp
+                               os=bsd
+                               ;;
+                       hp300hpux)
+                               basic_machine=m68k-hp
+                               os=hpux
+                               ;;
+                       hppaosf)
+                               basic_machine=hppa1.1-hp
+                               os=osf
+                               ;;
+                       hppro)
+                               basic_machine=hppa1.1-hp
+                               os=proelf
+                               ;;
+                       i386mach)
+                               basic_machine=i386-mach
+                               os=mach
+                               ;;
+                       vsta)
+                               basic_machine=i386-pc
+                               os=vsta
+                               ;;
+                       isi68 | isi)
+                               basic_machine=m68k-isi
+                               os=sysv
+                               ;;
+                       m68knommu)
+                               basic_machine=m68k-unknown
+                               os=linux
+                               ;;
+                       magnum | m3230)
+                               basic_machine=mips-mips
+                               os=sysv
+                               ;;
+                       merlin)
+                               basic_machine=ns32k-utek
+                               os=sysv
+                               ;;
+                       mingw64)
+                               basic_machine=x86_64-pc
+                               os=mingw64
+                               ;;
+                       mingw32)
+                               basic_machine=i686-pc
+                               os=mingw32
+                               ;;
+                       mingw32ce)
+                               basic_machine=arm-unknown
+                               os=mingw32ce
+                               ;;
+                       monitor)
+                               basic_machine=m68k-rom68k
+                               os=coff
+                               ;;
+                       morphos)
+                               basic_machine=powerpc-unknown
+                               os=morphos
+                               ;;
+                       moxiebox)
+                               basic_machine=moxie-unknown
+                               os=moxiebox
+                               ;;
+                       msdos)
+                               basic_machine=i386-pc
+                               os=msdos
+                               ;;
+                       msys)
+                               basic_machine=i686-pc
+                               os=msys
+                               ;;
+                       mvs)
+                               basic_machine=i370-ibm
+                               os=mvs
+                               ;;
+                       nacl)
+                               basic_machine=le32-unknown
+                               os=nacl
+                               ;;
+                       ncr3000)
+                               basic_machine=i486-ncr
+                               os=sysv4
+                               ;;
+                       netbsd386)
+                               basic_machine=i386-pc
+                               os=netbsd
+                               ;;
+                       netwinder)
+                               basic_machine=armv4l-rebel
+                               os=linux
+                               ;;
+                       news | news700 | news800 | news900)
+                               basic_machine=m68k-sony
+                               os=newsos
+                               ;;
+                       news1000)
+                               basic_machine=m68030-sony
+                               os=newsos
+                               ;;
+                       necv70)
+                               basic_machine=v70-nec
+                               os=sysv
+                               ;;
+                       nh3000)
+                               basic_machine=m68k-harris
+                               os=cxux
+                               ;;
+                       nh[45]000)
+                               basic_machine=m88k-harris
+                               os=cxux
+                               ;;
+                       nindy960)
+                               basic_machine=i960-intel
+                               os=nindy
+                               ;;
+                       mon960)
+                               basic_machine=i960-intel
+                               os=mon960
+                               ;;
+                       nonstopux)
+                               basic_machine=mips-compaq
+                               os=nonstopux
+                               ;;
+                       os400)
+                               basic_machine=powerpc-ibm
+                               os=os400
+                               ;;
+                       OSE68000 | ose68000)
+                               basic_machine=m68000-ericsson
+                               os=ose
+                               ;;
+                       os68k)
+                               basic_machine=m68k-none
+                               os=os68k
+                               ;;
+                       paragon)
+                               basic_machine=i860-intel
+                               os=osf
+                               ;;
+                       parisc)
+                               basic_machine=hppa-unknown
+                               os=linux
+                               ;;
+                       pw32)
+                               basic_machine=i586-unknown
+                               os=pw32
+                               ;;
+                       rdos | rdos64)
+                               basic_machine=x86_64-pc
+                               os=rdos
+                               ;;
+                       rdos32)
+                               basic_machine=i386-pc
+                               os=rdos
+                               ;;
+                       rom68k)
+                               basic_machine=m68k-rom68k
+                               os=coff
+                               ;;
+                       sa29200)
+                               basic_machine=a29k-amd
+                               os=udi
+                               ;;
+                       sei)
+                               basic_machine=mips-sei
+                               os=seiux
+                               ;;
+                       sequent)
+                               basic_machine=i386-sequent
+                               os=
+                               ;;
+                       sps7)
+                               basic_machine=m68k-bull
+                               os=sysv2
+                               ;;
+                       st2000)
+                               basic_machine=m68k-tandem
+                               os=
+                               ;;
+                       stratus)
+                               basic_machine=i860-stratus
+                               os=sysv4
+                               ;;
+                       sun2)
+                               basic_machine=m68000-sun
+                               os=
+                               ;;
+                       sun2os3)
+                               basic_machine=m68000-sun
+                               os=sunos3
+                               ;;
+                       sun2os4)
+                               basic_machine=m68000-sun
+                               os=sunos4
+                               ;;
+                       sun3)
+                               basic_machine=m68k-sun
+                               os=
+                               ;;
+                       sun3os3)
+                               basic_machine=m68k-sun
+                               os=sunos3
+                               ;;
+                       sun3os4)
+                               basic_machine=m68k-sun
+                               os=sunos4
+                               ;;
+                       sun4)
+                               basic_machine=sparc-sun
+                               os=
+                               ;;
+                       sun4os3)
+                               basic_machine=sparc-sun
+                               os=sunos3
+                               ;;
+                       sun4os4)
+                               basic_machine=sparc-sun
+                               os=sunos4
+                               ;;
+                       sun4sol2)
+                               basic_machine=sparc-sun
+                               os=solaris2
+                               ;;
+                       sun386 | sun386i | roadrunner)
+                               basic_machine=i386-sun
+                               os=
+                               ;;
+                       sv1)
+                               basic_machine=sv1-cray
+                               os=unicos
+                               ;;
+                       symmetry)
+                               basic_machine=i386-sequent
+                               os=dynix
+                               ;;
+                       t3e)
+                               basic_machine=alphaev5-cray
+                               os=unicos
+                               ;;
+                       t90)
+                               basic_machine=t90-cray
+                               os=unicos
+                               ;;
+                       toad1)
+                               basic_machine=pdp10-xkl
+                               os=tops20
+                               ;;
+                       tpf)
+                               basic_machine=s390x-ibm
+                               os=tpf
+                               ;;
+                       udi29k)
+                               basic_machine=a29k-amd
+                               os=udi
+                               ;;
+                       ultra3)
+                               basic_machine=a29k-nyu
+                               os=sym1
+                               ;;
+                       v810 | necv810)
+                               basic_machine=v810-nec
+                               os=none
+                               ;;
+                       vaxv)
+                               basic_machine=vax-dec
+                               os=sysv
+                               ;;
+                       vms)
+                               basic_machine=vax-dec
+                               os=vms
+                               ;;
+                       vxworks960)
+                               basic_machine=i960-wrs
+                               os=vxworks
+                               ;;
+                       vxworks68)
+                               basic_machine=m68k-wrs
+                               os=vxworks
+                               ;;
+                       vxworks29k)
+                               basic_machine=a29k-wrs
+                               os=vxworks
+                               ;;
+                       xbox)
+                               basic_machine=i686-pc
+                               os=mingw32
+                               ;;
+                       ymp)
+                               basic_machine=ymp-cray
+                               os=unicos
+                               ;;
+                       *)
+                               basic_machine=$1
+                               os=
+                               ;;
+               esac
+               ;;
+esac
+
+# Decode 1-component or ad-hoc basic machines
+case $basic_machine in
+       # Here we handle the default manufacturer of certain CPU types.  It is in
+       # some cases the only manufacturer, in others, it is the most popular.
+       w89k)
+               cpu=hppa1.1
+               vendor=winbond
+               ;;
+       op50n)
+               cpu=hppa1.1
+               vendor=oki
+               ;;
+       op60c)
+               cpu=hppa1.1
+               vendor=oki
+               ;;
+       ibm*)
+               cpu=i370
+               vendor=ibm
+               ;;
+       orion105)
+               cpu=clipper
+               vendor=highlevel
+               ;;
+       mac | mpw | mac-mpw)
+               cpu=m68k
+               vendor=apple
+               ;;
+       pmac | pmac-mpw)
+               cpu=powerpc
+               vendor=apple
+               ;;
+
+       # Recognize the various machine names and aliases which stand
+       # for a CPU type and a company and sometimes even an OS.
+       3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
+               cpu=m68000
+               vendor=att
+               ;;
+       3b*)
+               cpu=we32k
+               vendor=att
+               ;;
+       bluegene*)
+               cpu=powerpc
+               vendor=ibm
+               os=cnk
+               ;;
+       decsystem10* | dec10*)
+               cpu=pdp10
+               vendor=dec
+               os=tops10
+               ;;
+       decsystem20* | dec20*)
+               cpu=pdp10
+               vendor=dec
+               os=tops20
+               ;;
+       delta | 3300 | motorola-3300 | motorola-delta \
+             | 3300-motorola | delta-motorola)
+               cpu=m68k
+               vendor=motorola
+               ;;
+       dpx2*)
+               cpu=m68k
+               vendor=bull
+               os=sysv3
+               ;;
+       encore | umax | mmax)
+               cpu=ns32k
+               vendor=encore
+               ;;
+       elxsi)
+               cpu=elxsi
+               vendor=elxsi
+               os=${os:-bsd}
+               ;;
+       fx2800)
+               cpu=i860
+               vendor=alliant
+               ;;
+       genix)
+               cpu=ns32k
+               vendor=ns
+               ;;
+       h3050r* | hiux*)
+               cpu=hppa1.1
+               vendor=hitachi
+               os=hiuxwe2
+               ;;
+       hp3k9[0-9][0-9] | hp9[0-9][0-9])
+               cpu=hppa1.0
+               vendor=hp
+               ;;
+       hp9k2[0-9][0-9] | hp9k31[0-9])
+               cpu=m68000
+               vendor=hp
+               ;;
+       hp9k3[2-9][0-9])
+               cpu=m68k
+               vendor=hp
+               ;;
+       hp9k6[0-9][0-9] | hp6[0-9][0-9])
+               cpu=hppa1.0
+               vendor=hp
+               ;;
+       hp9k7[0-79][0-9] | hp7[0-79][0-9])
+               cpu=hppa1.1
+               vendor=hp
+               ;;
+       hp9k78[0-9] | hp78[0-9])
+               # FIXME: really hppa2.0-hp
+               cpu=hppa1.1
+               vendor=hp
+               ;;
+       hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
+               # FIXME: really hppa2.0-hp
+               cpu=hppa1.1
+               vendor=hp
+               ;;
+       hp9k8[0-9][13679] | hp8[0-9][13679])
+               cpu=hppa1.1
+               vendor=hp
+               ;;
+       hp9k8[0-9][0-9] | hp8[0-9][0-9])
+               cpu=hppa1.0
+               vendor=hp
+               ;;
+       i*86v32)
+               cpu=`echo "$1" | sed -e 's/86.*/86/'`
+               vendor=pc
+               os=sysv32
+               ;;
+       i*86v4*)
+               cpu=`echo "$1" | sed -e 's/86.*/86/'`
+               vendor=pc
+               os=sysv4
+               ;;
+       i*86v)
+               cpu=`echo "$1" | sed -e 's/86.*/86/'`
+               vendor=pc
+               os=sysv
+               ;;
+       i*86sol2)
+               cpu=`echo "$1" | sed -e 's/86.*/86/'`
+               vendor=pc
+               os=solaris2
+               ;;
+       j90 | j90-cray)
+               cpu=j90
+               vendor=cray
+               os=${os:-unicos}
+               ;;
+       iris | iris4d)
+               cpu=mips
+               vendor=sgi
+               case $os in
+                   irix*)
+                       ;;
+                   *)
+                       os=irix4
+                       ;;
+               esac
+               ;;
+       miniframe)
+               cpu=m68000
+               vendor=convergent
+               ;;
+       *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
+               cpu=m68k
+               vendor=atari
+               os=mint
+               ;;
+       news-3600 | risc-news)
+               cpu=mips
+               vendor=sony
+               os=newsos
+               ;;
+       next | m*-next)
+               cpu=m68k
+               vendor=next
+               case $os in
+                   nextstep* )
+                       ;;
+                   ns2*)
+                     os=nextstep2
+                       ;;
+                   *)
+                     os=nextstep3
+                       ;;
+               esac
+               ;;
+       np1)
+               cpu=np1
+               vendor=gould
+               ;;
+       op50n-* | op60c-*)
+               cpu=hppa1.1
+               vendor=oki
+               os=proelf
+               ;;
+       pa-hitachi)
+               cpu=hppa1.1
+               vendor=hitachi
+               os=hiuxwe2
+               ;;
+       pbd)
+               cpu=sparc
+               vendor=tti
+               ;;
+       pbb)
+               cpu=m68k
+               vendor=tti
+               ;;
+       pc532)
+               cpu=ns32k
+               vendor=pc532
+               ;;
+       pn)
+               cpu=pn
+               vendor=gould
+               ;;
+       power)
+               cpu=power
+               vendor=ibm
+               ;;
+       ps2)
+               cpu=i386
+               vendor=ibm
+               ;;
+       rm[46]00)
+               cpu=mips
+               vendor=siemens
+               ;;
+       rtpc | rtpc-*)
+               cpu=romp
+               vendor=ibm
+               ;;
+       sde)
+               cpu=mipsisa32
+               vendor=sde
+               os=${os:-elf}
+               ;;
+       simso-wrs)
+               cpu=sparclite
+               vendor=wrs
+               os=vxworks
+               ;;
+       tower | tower-32)
+               cpu=m68k
+               vendor=ncr
+               ;;
+       vpp*|vx|vx-*)
+               cpu=f301
+               vendor=fujitsu
+               ;;
+       w65)
+               cpu=w65
+               vendor=wdc
+               ;;
+       w89k-*)
+               cpu=hppa1.1
+               vendor=winbond
+               os=proelf
+               ;;
+       none)
+               cpu=none
+               vendor=none
+               ;;
+       leon|leon[3-9])
+               cpu=sparc
+               vendor=$basic_machine
+               ;;
+       leon-*|leon[3-9]-*)
+               cpu=sparc
+               vendor=`echo "$basic_machine" | sed 's/-.*//'`
+               ;;
+
+       *-*)
+               IFS="-" read -r cpu vendor <<EOF
+$basic_machine
+EOF
+               ;;
+       # We use `pc' rather than `unknown'
+       # because (1) that's what they normally are, and
+       # (2) the word "unknown" tends to confuse beginning users.
+       i*86 | x86_64)
+               cpu=$basic_machine
+               vendor=pc
+               ;;
+       # These rules are duplicated from below for sake of the special case above;
+       # i.e. things that normalized to x86 arches should also default to "pc"
+       pc98)
+               cpu=i386
+               vendor=pc
+               ;;
+       x64 | amd64)
+               cpu=x86_64
+               vendor=pc
+               ;;
+       # Recognize the basic CPU types without company name.
+       *)
+               cpu=$basic_machine
+               vendor=unknown
+               ;;
+esac
+
+unset -v basic_machine
+
+# Decode basic machines in the full and proper CPU-Company form.
+case $cpu-$vendor in
+       # Here we handle the default manufacturer of certain CPU types in cannonical form. It is in
+       # some cases the only manufacturer, in others, it is the most popular.
+       craynv-unknown)
+               vendor=cray
+               os=${os:-unicosmp}
+               ;;
+       c90-unknown | c90-cray)
+               vendor=cray
+               os=${os:-unicos}
+               ;;
+       fx80-unknown)
+               vendor=alliant
+               ;;
+       romp-unknown)
+               vendor=ibm
+               ;;
+       mmix-unknown)
+               vendor=knuth
+               ;;
+       microblaze-unknown | microblazeel-unknown)
+               vendor=xilinx
+               ;;
+       rs6000-unknown)
+               vendor=ibm
+               ;;
+       vax-unknown)
+               vendor=dec
+               ;;
+       pdp11-unknown)
+               vendor=dec
+               ;;
+       we32k-unknown)
+               vendor=att
+               ;;
+       cydra-unknown)
+               vendor=cydrome
+               ;;
+       i370-ibm*)
+               vendor=ibm
+               ;;
+       orion-unknown)
+               vendor=highlevel
+               ;;
+       xps-unknown | xps100-unknown)
+               cpu=xps100
+               vendor=honeywell
+               ;;
+
+       # Here we normalize CPU types with a missing or matching vendor
+       dpx20-unknown | dpx20-bull)
+               cpu=rs6000
+               vendor=bull
+               os=${os:-bosx}
+               ;;
+
+       # Here we normalize CPU types irrespective of the vendor
+       amd64-*)
+               cpu=x86_64
+               ;;
+       blackfin-*)
+               cpu=bfin
+               os=linux
+               ;;
+       c54x-*)
+               cpu=tic54x
+               ;;
+       c55x-*)
+               cpu=tic55x
+               ;;
+       c6x-*)
+               cpu=tic6x
+               ;;
+       e500v[12]-*)
+               cpu=powerpc
+               os=$os"spe"
+               ;;
+       mips3*-*)
+               cpu=mips64
+               ;;
+       ms1-*)
+               cpu=mt
+               ;;
+       m68knommu-*)
+               cpu=m68k
+               os=linux
+               ;;
+       m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
+               cpu=s12z
+               ;;
+       openrisc-*)
+               cpu=or32
+               ;;
+       parisc-*)
+               cpu=hppa
+               os=linux
+               ;;
+       pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
+               cpu=i586
+               ;;
+       pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*)
+               cpu=i686
+               ;;
+       pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
+               cpu=i686
+               ;;
+       pentium4-*)
+               cpu=i786
+               ;;
+       pc98-*)
+               cpu=i386
+               ;;
+       ppc-* | ppcbe-*)
+               cpu=powerpc
+               ;;
+       ppcle-* | powerpclittle-*)
+               cpu=powerpcle
+               ;;
+       ppc64-*)
+               cpu=powerpc64
+               ;;
+       ppc64le-* | powerpc64little-*)
+               cpu=powerpc64le
+               ;;
+       sb1-*)
+               cpu=mipsisa64sb1
+               ;;
+       sb1el-*)
+               cpu=mipsisa64sb1el
+               ;;
+       sh5e[lb]-*)
+               cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
+               ;;
+       spur-*)
+               cpu=spur
+               ;;
+       strongarm-* | thumb-*)
+               cpu=arm
+               ;;
+       tx39-*)
+               cpu=mipstx39
+               ;;
+       tx39el-*)
+               cpu=mipstx39el
+               ;;
+       x64-*)
+               cpu=x86_64
+               ;;
+       xscale-* | xscalee[bl]-*)
+               cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
+               ;;
+
+       # Recognize the cannonical CPU Types that limit and/or modify the
+       # company names they are paired with.
+       cr16-*)
+               os=${os:-elf}
+               ;;
+       crisv32-* | etraxfs*-*)
+               cpu=crisv32
+               vendor=axis
+               ;;
+       cris-* | etrax*-*)
+               cpu=cris
+               vendor=axis
+               ;;
+       crx-*)
+               os=${os:-elf}
+               ;;
+       neo-tandem)
+               cpu=neo
+               vendor=tandem
+               ;;
+       nse-tandem)
+               cpu=nse
+               vendor=tandem
+               ;;
+       nsr-tandem)
+               cpu=nsr
+               vendor=tandem
+               ;;
+       nsv-tandem)
+               cpu=nsv
+               vendor=tandem
+               ;;
+       nsx-tandem)
+               cpu=nsx
+               vendor=tandem
+               ;;
+       s390-*)
+               cpu=s390
+               vendor=ibm
+               ;;
+       s390x-*)
+               cpu=s390x
+               vendor=ibm
+               ;;
+       tile*-*)
+               os=${os:-linux-gnu}
+               ;;
+
+       *)
+               # Recognize the cannonical CPU types that are allowed with any
+               # company name.
+               case $cpu in
+                       1750a | 580 \
+                       | a29k \
+                       | aarch64 | aarch64_be \
+                       | abacus \
+                       | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
+                       | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
+                       | alphapca5[67] | alpha64pca5[67] \
+                       | am33_2.0 \
+                       | arc | arceb \
+                       | arm  | arm[lb]e | arme[lb] | armv* \
+                       | avr | avr32 \
+                       | asmjs \
+                       | ba \
+                       | be32 | be64 \
+                       | bfin | bs2000 \
+                       | c[123]* | c30 | [cjt]90 | c4x \
+                       | c8051 | clipper | craynv | csky | cydra \
+                       | d10v | d30v | dlx | dsp16xx \
+                       | e2k | elxsi | epiphany \
+                       | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
+                       | h8300 | h8500 \
+                       | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+                       | hexagon \
+                       | i370 | i*86 | i860 | i960 | ia16 | ia64 \
+                       | ip2k | iq2000 \
+                       | k1om \
+                       | le32 | le64 \
+                       | lm32 \
+                       | m32c | m32r | m32rle \
+                       | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k | v70 | w65 \
+                       | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip \
+                       | m88110 | m88k | maxq | mb | mcore | mep | metag \
+                       | microblaze | microblazeel \
+                       | mips | mipsbe | mipseb | mipsel | mipsle \
+                       | mips16 \
+                       | mips64 | mips64el \
+                       | mips64octeon | mips64octeonel \
+                       | mips64orion | mips64orionel \
+                       | mips64r5900 | mips64r5900el \
+                       | mips64vr | mips64vrel \
+                       | mips64vr4100 | mips64vr4100el \
+                       | mips64vr4300 | mips64vr4300el \
+                       | mips64vr5000 | mips64vr5000el \
+                       | mips64vr5900 | mips64vr5900el \
+                       | mipsisa32 | mipsisa32el \
+                       | mipsisa32r2 | mipsisa32r2el \
+                       | mipsisa32r6 | mipsisa32r6el \
+                       | mipsisa64 | mipsisa64el \
+                       | mipsisa64r2 | mipsisa64r2el \
+                       | mipsisa64r6 | mipsisa64r6el \
+                       | mipsisa64sb1 | mipsisa64sb1el \
+                       | mipsisa64sr71k | mipsisa64sr71kel \
+                       | mipsr5900 | mipsr5900el \
+                       | mipstx39 | mipstx39el \
+                       | mmix \
+                       | mn10200 | mn10300 \
+                       | moxie \
+                       | mt \
+                       | msp430 \
+                       | nds32 | nds32le | nds32be \
+                       | nfp \
+                       | nios | nios2 | nios2eb | nios2el \
+                       | none | np1 | ns16k | ns32k \
+                       | open8 \
+                       | or1k* \
+                       | or32 \
+                       | orion \
+                       | pdp10 | pdp11 | pj | pjl | pn | power \
+                       | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
+                       | pru \
+                       | pyramid \
+                       | riscv | riscv32 | riscv64 \
+                       | rl78 | romp | rs6000 | rx \
+                       | score \
+                       | sh | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
+                       | sh[1234]e[lb] |  sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
+                       | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
+                       | sparclite \
+                       | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
+                       | spu \
+                       | tahoe \
+                       | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
+                       | tron \
+                       | ubicom32 \
+                       | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
+                       | vax \
+                       | visium \
+                       | wasm32 \
+                       | we32k \
+                       | x86 | x86_64 | xc16x | xgate | xps100 \
+                       | xstormy16 | xtensa* \
+                       | ymp \
+                       | z8k | z80)
+                               ;;
+
+                       *)
+                               echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2
+                               exit 1
+                               ;;
+               esac
+               ;;
+esac
+
+# Here we canonicalize certain aliases for manufacturers.
+case $vendor in
+       digital*)
+               vendor=dec
+               ;;
+       commodore*)
+               vendor=cbm
+               ;;
+       *)
+               ;;
+esac
+
+# Decode manufacturer-specific aliases for certain operating systems.
+
+if [ x$os != x ]
+then
+case $os in
+       # First match some system type aliases that might get confused
+       # with valid system types.
+       # solaris* is a basic system type, with this one exception.
+       auroraux)
+               os=auroraux
+               ;;
+       bluegene*)
+               os=cnk
+               ;;
+       solaris1 | solaris1.*)
+               os=`echo $os | sed -e 's|solaris1|sunos4|'`
+               ;;
+       solaris)
+               os=solaris2
+               ;;
+       unixware*)
+               os=sysv4.2uw
+               ;;
+       gnu/linux*)
+               os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
+               ;;
+       # es1800 is here to avoid being matched by es* (a different OS)
+       es1800*)
+               os=ose
+               ;;
+       # Some version numbers need modification
+       chorusos*)
+               os=chorusos
+               ;;
+       isc)
+               os=isc2.2
+               ;;
+       sco6)
+               os=sco5v6
+               ;;
+       sco5)
+               os=sco3.2v5
+               ;;
+       sco4)
+               os=sco3.2v4
+               ;;
+       sco3.2.[4-9]*)
+               os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
+               ;;
+       sco3.2v[4-9]* | sco5v6*)
+               # Don't forget version if it is 3.2v4 or newer.
+               ;;
+       scout)
+               # Don't match below
+               ;;
+       sco*)
+               os=sco3.2v2
+               ;;
+       psos*)
+               os=psos
+               ;;
+       # Now accept the basic system types.
+       # The portable systems comes first.
+       # Each alternative MUST end in a * to match a version number.
+       # sysv* is not here because it comes later, after sysvr4.
+       gnu* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
+            | *vms* | esix* | aix* | cnk* | sunos | sunos[34]*\
+            | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
+            | sym* | kopensolaris* | plan9* \
+            | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
+            | aos* | aros* | cloudabi* | sortix* \
+            | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
+            | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
+            | knetbsd* | mirbsd* | netbsd* \
+            | bitrig* | openbsd* | solidbsd* | libertybsd* \
+            | ekkobsd* | kfreebsd* | freebsd* | riscix* | lynxos* \
+            | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
+            | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
+            | udi* | eabi* | lites* | ieee* | go32* | aux* | hcos* \
+            | chorusrdb* | cegcc* | glidix* \
+            | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
+            | midipix* | mingw32* | mingw64* | linux-gnu* | linux-android* \
+            | linux-newlib* | linux-musl* | linux-uclibc* \
+            | uxpv* | beos* | mpeix* | udk* | moxiebox* \
+            | interix* | uwin* | mks* | rhapsody* | darwin* \
+            | openstep* | oskit* | conix* | pw32* | nonstopux* \
+            | storm-chaos* | tops10* | tenex* | tops20* | its* \
+            | os2* | vos* | palmos* | uclinux* | nucleus* \
+            | morphos* | superux* | rtmk* | windiss* \
+            | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
+            | skyos* | haiku* | rdos* | toppers* | drops* | es* \
+            | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
+            | midnightbsd*)
+       # Remember, each alternative MUST END IN *, to match a version number.
+               ;;
+       qnx*)
+               case $cpu in
+                   x86 | i*86)
+                       ;;
+                   *)
+                       os=nto-$os
+                       ;;
+               esac
+               ;;
+       hiux*)
+               os=hiuxwe2
+               ;;
+       nto-qnx*)
+               ;;
+       nto*)
+               os=`echo $os | sed -e 's|nto|nto-qnx|'`
+               ;;
+       sim | xray | os68k* | v88r* \
+           | windows* | osx | abug | netware* | os9* \
+           | macos* | mpw* | magic* | mmixware* | mon960* | lnews*)
+               ;;
+       linux-dietlibc)
+               os=linux-dietlibc
+               ;;
+       linux*)
+               os=`echo $os | sed -e 's|linux|linux-gnu|'`
+               ;;
+       lynx*178)
+               os=lynxos178
+               ;;
+       lynx*5)
+               os=lynxos5
+               ;;
+       lynx*)
+               os=lynxos
+               ;;
+       mac*)
+               os=`echo "$os" | sed -e 's|mac|macos|'`
+               ;;
+       opened*)
+               os=openedition
+               ;;
+       os400*)
+               os=os400
+               ;;
+       sunos5*)
+               os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
+               ;;
+       sunos6*)
+               os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
+               ;;
+       wince*)
+               os=wince
+               ;;
+       utek*)
+               os=bsd
+               ;;
+       dynix*)
+               os=bsd
+               ;;
+       acis*)
+               os=aos
+               ;;
+       atheos*)
+               os=atheos
+               ;;
+       syllable*)
+               os=syllable
+               ;;
+       386bsd)
+               os=bsd
+               ;;
+       ctix* | uts*)
+               os=sysv
+               ;;
+       nova*)
+               os=rtmk-nova
+               ;;
+       ns2)
+               os=nextstep2
+               ;;
+       nsk*)
+               os=nsk
+               ;;
+       # Preserve the version number of sinix5.
+       sinix5.*)
+               os=`echo $os | sed -e 's|sinix|sysv|'`
+               ;;
+       sinix*)
+               os=sysv4
+               ;;
+       tpf*)
+               os=tpf
+               ;;
+       triton*)
+               os=sysv3
+               ;;
+       oss*)
+               os=sysv3
+               ;;
+       svr4*)
+               os=sysv4
+               ;;
+       svr3)
+               os=sysv3
+               ;;
+       sysvr4)
+               os=sysv4
+               ;;
+       # This must come after sysvr4.
+       sysv*)
+               ;;
+       ose*)
+               os=ose
+               ;;
+       *mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
+               os=mint
+               ;;
+       zvmoe)
+               os=zvmoe
+               ;;
+       dicos*)
+               os=dicos
+               ;;
+       pikeos*)
+               # Until real need of OS specific support for
+               # particular features comes up, bare metal
+               # configurations are quite functional.
+               case $cpu in
+                   arm*)
+                       os=eabi
+                       ;;
+                   *)
+                       os=elf
+                       ;;
+               esac
+               ;;
+       nacl*)
+               ;;
+       ios)
+               ;;
+       none)
+               ;;
+       *-eabi)
+               ;;
+       *)
+               echo Invalid configuration \`"$1"\': system \`"$os"\' not recognized 1>&2
+               exit 1
+               ;;
+esac
+else
+
+# Here we handle the default operating systems that come with various machines.
+# The value should be what the vendor currently ships out the door with their
+# machine or put another way, the most popular os provided with the machine.
+
+# Note that if you're going to try to match "-MANUFACTURER" here (say,
+# "-sun"), then you have to tell the case statement up towards the top
+# that MANUFACTURER isn't an operating system.  Otherwise, code above
+# will signal an error saying that MANUFACTURER isn't an operating
+# system, and we'll never get to this point.
+
+case $cpu-$vendor in
+       score-*)
+               os=elf
+               ;;
+       spu-*)
+               os=elf
+               ;;
+       *-acorn)
+               os=riscix1.2
+               ;;
+       arm*-rebel)
+               os=linux
+               ;;
+       arm*-semi)
+               os=aout
+               ;;
+       c4x-* | tic4x-*)
+               os=coff
+               ;;
+       c8051-*)
+               os=elf
+               ;;
+       clipper-intergraph)
+               os=clix
+               ;;
+       hexagon-*)
+               os=elf
+               ;;
+       tic54x-*)
+               os=coff
+               ;;
+       tic55x-*)
+               os=coff
+               ;;
+       tic6x-*)
+               os=coff
+               ;;
+       # This must come before the *-dec entry.
+       pdp10-*)
+               os=tops20
+               ;;
+       pdp11-*)
+               os=none
+               ;;
+       *-dec | vax-*)
+               os=ultrix4.2
+               ;;
+       m68*-apollo)
+               os=domain
+               ;;
+       i386-sun)
+               os=sunos4.0.2
+               ;;
+       m68000-sun)
+               os=sunos3
+               ;;
+       m68*-cisco)
+               os=aout
+               ;;
+       mep-*)
+               os=elf
+               ;;
+       mips*-cisco)
+               os=elf
+               ;;
+       mips*-*)
+               os=elf
+               ;;
+       or32-*)
+               os=coff
+               ;;
+       *-tti)  # must be before sparc entry or we get the wrong os.
+               os=sysv3
+               ;;
+       sparc-* | *-sun)
+               os=sunos4.1.1
+               ;;
+       pru-*)
+               os=elf
+               ;;
+       *-be)
+               os=beos
+               ;;
+       *-ibm)
+               os=aix
+               ;;
+       *-knuth)
+               os=mmixware
+               ;;
+       *-wec)
+               os=proelf
+               ;;
+       *-winbond)
+               os=proelf
+               ;;
+       *-oki)
+               os=proelf
+               ;;
+       *-hp)
+               os=hpux
+               ;;
+       *-hitachi)
+               os=hiux
+               ;;
+       i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
+               os=sysv
+               ;;
+       *-cbm)
+               os=amigaos
+               ;;
+       *-dg)
+               os=dgux
+               ;;
+       *-dolphin)
+               os=sysv3
+               ;;
+       m68k-ccur)
+               os=rtu
+               ;;
+       m88k-omron*)
+               os=luna
+               ;;
+       *-next)
+               os=nextstep
+               ;;
+       *-sequent)
+               os=ptx
+               ;;
+       *-crds)
+               os=unos
+               ;;
+       *-ns)
+               os=genix
+               ;;
+       i370-*)
+               os=mvs
+               ;;
+       *-gould)
+               os=sysv
+               ;;
+       *-highlevel)
+               os=bsd
+               ;;
+       *-encore)
+               os=bsd
+               ;;
+       *-sgi)
+               os=irix
+               ;;
+       *-siemens)
+               os=sysv4
+               ;;
+       *-masscomp)
+               os=rtu
+               ;;
+       f30[01]-fujitsu | f700-fujitsu)
+               os=uxpv
+               ;;
+       *-rom68k)
+               os=coff
+               ;;
+       *-*bug)
+               os=coff
+               ;;
+       *-apple)
+               os=macos
+               ;;
+       *-atari*)
+               os=mint
+               ;;
+       *-wrs)
+               os=vxworks
+               ;;
+       *)
+               os=none
+               ;;
+esac
+fi
+
+# Here we handle the case where we know the os, and the CPU type, but not the
+# manufacturer.  We pick the logical manufacturer.
+case $vendor in
+       unknown)
+               case $os in
+                       riscix*)
+                               vendor=acorn
+                               ;;
+                       sunos*)
+                               vendor=sun
+                               ;;
+                       cnk*|-aix*)
+                               vendor=ibm
+                               ;;
+                       beos*)
+                               vendor=be
+                               ;;
+                       hpux*)
+                               vendor=hp
+                               ;;
+                       mpeix*)
+                               vendor=hp
+                               ;;
+                       hiux*)
+                               vendor=hitachi
+                               ;;
+                       unos*)
+                               vendor=crds
+                               ;;
+                       dgux*)
+                               vendor=dg
+                               ;;
+                       luna*)
+                               vendor=omron
+                               ;;
+                       genix*)
+                               vendor=ns
+                               ;;
+                       clix*)
+                               vendor=intergraph
+                               ;;
+                       mvs* | opened*)
+                               vendor=ibm
+                               ;;
+                       os400*)
+                               vendor=ibm
+                               ;;
+                       ptx*)
+                               vendor=sequent
+                               ;;
+                       tpf*)
+                               vendor=ibm
+                               ;;
+                       vxsim* | vxworks* | windiss*)
+                               vendor=wrs
+                               ;;
+                       aux*)
+                               vendor=apple
+                               ;;
+                       hms*)
+                               vendor=hitachi
+                               ;;
+                       mpw* | macos*)
+                               vendor=apple
+                               ;;
+                       *mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
+                               vendor=atari
+                               ;;
+                       vos*)
+                               vendor=stratus
+                               ;;
+               esac
+               ;;
+esac
+
+echo "$cpu-$vendor-$os"
+exit
+
+# Local variables:
+# eval: (add-hook 'before-save-hook 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
similarity index 94%
rename from src/libs/gnulib/build-aux/depcomp
rename to build-aux/depcomp
index 3178801..65cbf70 100755 (executable)
@@ -1,9 +1,9 @@
 #! /bin/sh
 # depcomp - compile a program generating dependencies as side-effects
 
-scriptversion=2013-05-30.07; # UTC
+scriptversion=2018-03-07.03; # UTC
 
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+# Copyright (C) 1999-2018 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
@@ -16,7 +16,7 @@ scriptversion=2013-05-30.07; # UTC
 # 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 <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
 # As a special exception to the GNU General Public License, if you
 # distribute this file as part of a program that contains a
@@ -251,6 +251,41 @@ hp)
   exit 1
   ;;
 
+sgi)
+  if test "$libtool" = yes; then
+    "$@" "-Wp,-MDupdate,$tmpdepfile"
+  else
+    "$@" -MDupdate "$tmpdepfile"
+  fi
+  stat=$?
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+
+  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
+    echo "$object : \\" > "$depfile"
+    # Clip off the initial element (the dependent).  Don't try to be
+    # clever and replace this with sed code, as IRIX sed won't handle
+    # lines with more than a fixed number of characters (4096 in
+    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
+    # the IRIX cc adds comments like '#:fec' to the end of the
+    # dependency line.
+    tr ' ' "$nl" < "$tmpdepfile" \
+      | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \
+      | tr "$nl" ' ' >> "$depfile"
+    echo >> "$depfile"
+    # The second pass generates a dummy entry for each header file.
+    tr ' ' "$nl" < "$tmpdepfile" \
+      | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
+      >> "$depfile"
+  else
+    make_dummy_depfile
+  fi
+  rm -f "$tmpdepfile"
+  ;;
+
 xlc)
   # This case exists only to let depend.m4 do its work.  It works by
   # looking at the text of this script.  This case will never be run,
@@ -748,9 +783,9 @@ exit 0
 # Local Variables:
 # mode: shell-script
 # sh-indentation: 2
-# eval: (add-hook 'write-file-hooks 'time-stamp)
+# eval: (add-hook 'before-save-hook 'time-stamp)
 # time-stamp-start: "scriptversion="
 # time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC"
+# time-stamp-time-zone: "UTC0"
 # time-stamp-end: "; # UTC"
 # End:
diff --git a/build-aux/git-version-gen b/build-aux/git-version-gen
new file mode 100755 (executable)
index 0000000..6d073fc
--- /dev/null
@@ -0,0 +1,227 @@
+#!/bin/sh
+# Print a version string.
+scriptversion=2018-03-07.03; # UTC
+
+# Copyright (C) 2007-2018 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 <https://www.gnu.org/licenses/>.
+
+# This script is derived from GIT-VERSION-GEN from GIT: https://git-scm.com/.
+# It may be run two ways:
+# - from a git repository in which the "git describe" command below
+#   produces useful output (thus requiring at least one signed tag)
+# - from a non-git-repo directory containing a .tarball-version file, which
+#   presumes this script is invoked like "./git-version-gen .tarball-version".
+
+# In order to use intra-version strings in your project, you will need two
+# separate generated version string files:
+#
+# .tarball-version - present only in a distribution tarball, and not in
+#   a checked-out repository.  Created with contents that were learned at
+#   the last time autoconf was run, and used by git-version-gen.  Must not
+#   be present in either $(srcdir) or $(builddir) for git-version-gen to
+#   give accurate answers during normal development with a checked out tree,
+#   but must be present in a tarball when there is no version control system.
+#   Therefore, it cannot be used in any dependencies.  GNUmakefile has
+#   hooks to force a reconfigure at distribution time to get the value
+#   correct, without penalizing normal development with extra reconfigures.
+#
+# .version - present in a checked-out repository and in a distribution
+#   tarball.  Usable in dependencies, particularly for files that don't
+#   want to depend on config.h but do want to track version changes.
+#   Delete this file prior to any autoconf run where you want to rebuild
+#   files to pick up a version string change; and leave it stale to
+#   minimize rebuild time after unrelated changes to configure sources.
+#
+# As with any generated file in a VC'd directory, you should add
+# /.version to .gitignore, so that you don't accidentally commit it.
+# .tarball-version is never generated in a VC'd directory, so needn't
+# be listed there.
+#
+# Use the following line in your configure.ac, so that $(VERSION) will
+# automatically be up-to-date each time configure is run (and note that
+# since configure.ac no longer includes a version string, Makefile rules
+# should not depend on configure.ac for version updates).
+#
+# AC_INIT([GNU project],
+#         m4_esyscmd([build-aux/git-version-gen .tarball-version]),
+#         [bug-project@example])
+#
+# Then use the following lines in your Makefile.am, so that .version
+# will be present for dependencies, and so that .version and
+# .tarball-version will exist in distribution tarballs.
+#
+# EXTRA_DIST = $(top_srcdir)/.version
+# BUILT_SOURCES = $(top_srcdir)/.version
+# $(top_srcdir)/.version:
+#      echo $(VERSION) > $@-t && mv $@-t $@
+# dist-hook:
+#      echo $(VERSION) > $(distdir)/.tarball-version
+
+
+me=$0
+
+version="git-version-gen $scriptversion
+
+Copyright 2011 Free Software Foundation, Inc.
+There is NO warranty.  You may redistribute this software
+under the terms of the GNU General Public License.
+For more information about these matters, see the files named COPYING."
+
+usage="\
+Usage: $me [OPTION]... \$srcdir/.tarball-version [TAG-NORMALIZATION-SED-SCRIPT]
+Print a version string.
+
+Options:
+
+   --prefix PREFIX    prefix of git tags (default 'v')
+   --fallback VERSION
+                      fallback version to use if \"git --version\" fails
+
+   --help             display this help and exit
+   --version          output version information and exit
+
+Running without arguments will suffice in most cases."
+
+prefix=v
+fallback=
+
+while test $# -gt 0; do
+  case $1 in
+    --help) echo "$usage"; exit 0;;
+    --version) echo "$version"; exit 0;;
+    --prefix) shift; prefix=${1?};;
+    --fallback) shift; fallback=${1?};;
+    -*)
+      echo "$0: Unknown option '$1'." >&2
+      echo "$0: Try '--help' for more information." >&2
+      exit 1;;
+    *)
+      if test "x$tarball_version_file" = x; then
+        tarball_version_file="$1"
+      elif test "x$tag_sed_script" = x; then
+        tag_sed_script="$1"
+      else
+        echo "$0: extra non-option argument '$1'." >&2
+        exit 1
+      fi;;
+  esac
+  shift
+done
+
+if test "x$tarball_version_file" = x; then
+    echo "$usage"
+    exit 1
+fi
+
+tag_sed_script="${tag_sed_script:-s/x/x/}"
+
+nl='
+'
+
+# Avoid meddling by environment variable of the same name.
+v=
+v_from_git=
+
+# First see if there is a tarball-only version file.
+# then try "git describe", then default.
+if test -f $tarball_version_file
+then
+    v=`cat $tarball_version_file` || v=
+    case $v in
+        *$nl*) v= ;; # reject multi-line output
+        [0-9]*) ;;
+        *) v= ;;
+    esac
+    test "x$v" = x \
+        && echo "$0: WARNING: $tarball_version_file is missing or damaged" 1>&2
+fi
+
+if test "x$v" != x
+then
+    : # use $v
+# Otherwise, if there is at least one git commit involving the working
+# directory, and "git describe" output looks sensible, use that to
+# derive a version string.
+elif test "`git log -1 --pretty=format:x . 2>&1`" = x \
+    && v=`git describe --abbrev=4 --match="$prefix*" HEAD 2>/dev/null \
+          || git describe --abbrev=4 HEAD 2>/dev/null` \
+    && v=`printf '%s\n' "$v" | sed "$tag_sed_script"` \
+    && case $v in
+         $prefix[0-9]*) ;;
+         *) (exit 1) ;;
+       esac
+then
+    # Is this a new git that lists number of commits since the last
+    # tag or the previous older version that did not?
+    #   Newer: v6.10-77-g0f8faeb
+    #   Older: v6.10-g0f8faeb
+    vprefix=`expr "X$v" : 'X\(.*\)-g[^-]*$'` || vprefix=$v
+    case $vprefix in
+        *-*) : git describe is probably okay three part flavor ;;
+        *)
+            : git describe is older two part flavor
+            # Recreate the number of commits and rewrite such that the
+            # result is the same as if we were using the newer version
+            # of git describe.
+            vtag=`echo "$v" | sed 's/-.*//'`
+            commit_list=`git rev-list "$vtag"..HEAD 2>/dev/null` \
+                || { commit_list=failed;
+                     echo "$0: WARNING: git rev-list failed" 1>&2; }
+            numcommits=`echo "$commit_list" | wc -l`
+            v=`echo "$v" | sed "s/\(.*\)-\(.*\)/\1-$numcommits-\2/"`;
+            test "$commit_list" = failed && v=UNKNOWN
+            ;;
+    esac
+
+    # Change the penultimate "-" to ".", for version-comparing tools.
+    # Remove the "g" to save a byte.
+    v=`echo "$v" | sed 's/-\([^-]*\)-g\([^-]*\)$/.\1-\2/'`;
+    v_from_git=1
+elif test "x$fallback" = x || git --version >/dev/null 2>&1; then
+    v=UNKNOWN
+else
+    v=$fallback
+fi
+
+v=`echo "$v" |sed "s/^$prefix//"`
+
+# Test whether to append the "-dirty" suffix only if the version
+# string we're using came from git.  I.e., skip the test if it's "UNKNOWN"
+# or if it came from .tarball-version.
+if test "x$v_from_git" != x; then
+  # Don't declare a version "dirty" merely because a timestamp has changed.
+  git update-index --refresh > /dev/null 2>&1
+
+  dirty=`exec 2>/dev/null;git diff-index --name-only HEAD` || dirty=
+  case "$dirty" in
+      '') ;;
+      *) # Append the suffix only if there isn't one already.
+          case $v in
+            *-dirty) ;;
+            *) v="$v-dirty" ;;
+          esac ;;
+  esac
+fi
+
+# Omit the trailing newline, so that m4_esyscmd can use the result directly.
+printf %s "$v"
+
+# Local variables:
+# eval: (add-hook 'before-save-hook 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC0"
+# time-stamp-end: "; # UTC"
+# End:
similarity index 90%
rename from install-sh
rename to build-aux/install-sh
index 0b0fdcb..8175c64 100755 (executable)
@@ -1,7 +1,7 @@
 #!/bin/sh
 # install - install a program, script, or datafile
 
-scriptversion=2013-12-25.23; # UTC
+scriptversion=2018-03-11.20; # UTC
 
 # This originates from X11R5 (mit/util/scripts/install.sh), which was
 # later released in X11R6 (xc/config/util/install.sh) with the
@@ -271,15 +271,18 @@ do
     fi
     dst=$dst_arg
 
-    # If destination is a directory, append the input filename; won't work
-    # if double slashes aren't ignored.
+    # If destination is a directory, append the input filename.
     if test -d "$dst"; then
       if test "$is_target_a_directory" = never; then
         echo "$0: $dst_arg: Is a directory" >&2
         exit 1
       fi
       dstdir=$dst
-      dst=$dstdir/`basename "$src"`
+      dstbase=`basename "$src"`
+      case $dst in
+       */) dst=$dst$dstbase;;
+       *)  dst=$dst/$dstbase;;
+      esac
       dstdir_status=0
     else
       dstdir=`dirname "$dst"`
@@ -288,6 +291,11 @@ do
     fi
   fi
 
+  case $dstdir in
+    */) dstdirslash=$dstdir;;
+    *)  dstdirslash=$dstdir/;;
+  esac
+
   obsolete_mkdir_used=false
 
   if test $dstdir_status != 0; then
@@ -324,34 +332,43 @@ do
             # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
             ;;
           *)
+            # Note that $RANDOM variable is not portable (e.g. dash);  Use it
+            # here however when possible just to lower collision chance.
             tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
-            trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
 
+            trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0
+
+            # Because "mkdir -p" follows existing symlinks and we likely work
+            # directly in world-writeable /tmp, make sure that the '$tmpdir'
+            # directory is successfully created first before we actually test
+            # 'mkdir -p' feature.
             if (umask $mkdir_umask &&
-                exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
+                $mkdirprog $mkdir_mode "$tmpdir" &&
+                exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1
             then
               if test -z "$dir_arg" || {
                    # Check for POSIX incompatibilities with -m.
                    # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
                    # other-writable bit of parent directory when it shouldn't.
                    # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
-                   ls_ld_tmpdir=`ls -ld "$tmpdir"`
+                   test_tmpdir="$tmpdir/a"
+                   ls_ld_tmpdir=`ls -ld "$test_tmpdir"`
                    case $ls_ld_tmpdir in
                      d????-?r-*) different_mode=700;;
                      d????-?--*) different_mode=755;;
                      *) false;;
                    esac &&
-                   $mkdirprog -m$different_mode -p -- "$tmpdir" && {
-                     ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
+                   $mkdirprog -m$different_mode -p -- "$test_tmpdir" && {
+                     ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"`
                      test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
                    }
                  }
               then posix_mkdir=:
               fi
-              rmdir "$tmpdir/d" "$tmpdir"
+              rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir"
             else
               # Remove any dirs left behind by ancient mkdir implementations.
-              rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
+              rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null
             fi
             trap '' 0;;
         esac;;
@@ -427,8 +444,8 @@ do
   else
 
     # Make a couple of temp file names in the proper directory.
-    dsttmp=$dstdir/_inst.$$_
-    rmtmp=$dstdir/_rm.$$_
+    dsttmp=${dstdirslash}_inst.$$_
+    rmtmp=${dstdirslash}_rm.$$_
 
     # Trap to clean up those temp files at exit.
     trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
@@ -493,9 +510,9 @@ do
 done
 
 # Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
+# eval: (add-hook 'before-save-hook 'time-stamp)
 # time-stamp-start: "scriptversion="
 # time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC"
+# time-stamp-time-zone: "UTC0"
 # time-stamp-end: "; # UTC"
 # End:
diff --git a/build-aux/missing b/build-aux/missing
new file mode 100755 (executable)
index 0000000..625aeb1
--- /dev/null
@@ -0,0 +1,215 @@
+#! /bin/sh
+# Common wrapper for a few potentially missing GNU programs.
+
+scriptversion=2018-03-07.03; # UTC
+
+# Copyright (C) 1996-2018 Free Software Foundation, Inc.
+# Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <https://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+if test $# -eq 0; then
+  echo 1>&2 "Try '$0 --help' for more information"
+  exit 1
+fi
+
+case $1 in
+
+  --is-lightweight)
+    # Used by our autoconf macros to check whether the available missing
+    # script is modern enough.
+    exit 0
+    ;;
+
+  --run)
+    # Back-compat with the calling convention used by older automake.
+    shift
+    ;;
+
+  -h|--h|--he|--hel|--help)
+    echo "\
+$0 [OPTION]... PROGRAM [ARGUMENT]...
+
+Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due
+to PROGRAM being missing or too old.
+
+Options:
+  -h, --help      display this help and exit
+  -v, --version   output version information and exit
+
+Supported PROGRAM values:
+  aclocal   autoconf  autoheader   autom4te  automake  makeinfo
+  bison     yacc      flex         lex       help2man
+
+Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and
+'g' are ignored when checking the name.
+
+Send bug reports to <bug-automake@gnu.org>."
+    exit $?
+    ;;
+
+  -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
+    echo "missing $scriptversion (GNU Automake)"
+    exit $?
+    ;;
+
+  -*)
+    echo 1>&2 "$0: unknown '$1' option"
+    echo 1>&2 "Try '$0 --help' for more information"
+    exit 1
+    ;;
+
+esac
+
+# Run the given program, remember its exit status.
+"$@"; st=$?
+
+# If it succeeded, we are done.
+test $st -eq 0 && exit 0
+
+# Also exit now if we it failed (or wasn't found), and '--version' was
+# passed; such an option is passed most likely to detect whether the
+# program is present and works.
+case $2 in --version|--help) exit $st;; esac
+
+# Exit code 63 means version mismatch.  This often happens when the user
+# tries to use an ancient version of a tool on a file that requires a
+# minimum version.
+if test $st -eq 63; then
+  msg="probably too old"
+elif test $st -eq 127; then
+  # Program was missing.
+  msg="missing on your system"
+else
+  # Program was found and executed, but failed.  Give up.
+  exit $st
+fi
+
+perl_URL=https://www.perl.org/
+flex_URL=https://github.com/westes/flex
+gnu_software_URL=https://www.gnu.org/software
+
+program_details ()
+{
+  case $1 in
+    aclocal|automake)
+      echo "The '$1' program is part of the GNU Automake package:"
+      echo "<$gnu_software_URL/automake>"
+      echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:"
+      echo "<$gnu_software_URL/autoconf>"
+      echo "<$gnu_software_URL/m4/>"
+      echo "<$perl_URL>"
+      ;;
+    autoconf|autom4te|autoheader)
+      echo "The '$1' program is part of the GNU Autoconf package:"
+      echo "<$gnu_software_URL/autoconf/>"
+      echo "It also requires GNU m4 and Perl in order to run:"
+      echo "<$gnu_software_URL/m4/>"
+      echo "<$perl_URL>"
+      ;;
+  esac
+}
+
+give_advice ()
+{
+  # Normalize program name to check for.
+  normalized_program=`echo "$1" | sed '
+    s/^gnu-//; t
+    s/^gnu//; t
+    s/^g//; t'`
+
+  printf '%s\n' "'$1' is $msg."
+
+  configure_deps="'configure.ac' or m4 files included by 'configure.ac'"
+  case $normalized_program in
+    autoconf*)
+      echo "You should only need it if you modified 'configure.ac',"
+      echo "or m4 files included by it."
+      program_details 'autoconf'
+      ;;
+    autoheader*)
+      echo "You should only need it if you modified 'acconfig.h' or"
+      echo "$configure_deps."
+      program_details 'autoheader'
+      ;;
+    automake*)
+      echo "You should only need it if you modified 'Makefile.am' or"
+      echo "$configure_deps."
+      program_details 'automake'
+      ;;
+    aclocal*)
+      echo "You should only need it if you modified 'acinclude.m4' or"
+      echo "$configure_deps."
+      program_details 'aclocal'
+      ;;
+   autom4te*)
+      echo "You might have modified some maintainer files that require"
+      echo "the 'autom4te' program to be rebuilt."
+      program_details 'autom4te'
+      ;;
+    bison*|yacc*)
+      echo "You should only need it if you modified a '.y' file."
+      echo "You may want to install the GNU Bison package:"
+      echo "<$gnu_software_URL/bison/>"
+      ;;
+    lex*|flex*)
+      echo "You should only need it if you modified a '.l' file."
+      echo "You may want to install the Fast Lexical Analyzer package:"
+      echo "<$flex_URL>"
+      ;;
+    help2man*)
+      echo "You should only need it if you modified a dependency" \
+           "of a man page."
+      echo "You may want to install the GNU Help2man package:"
+      echo "<$gnu_software_URL/help2man/>"
+    ;;
+    makeinfo*)
+      echo "You should only need it if you modified a '.texi' file, or"
+      echo "any other file indirectly affecting the aspect of the manual."
+      echo "You might want to install the Texinfo package:"
+      echo "<$gnu_software_URL/texinfo/>"
+      echo "The spurious makeinfo call might also be the consequence of"
+      echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might"
+      echo "want to install GNU make:"
+      echo "<$gnu_software_URL/make/>"
+      ;;
+    *)
+      echo "You might have modified some files without having the proper"
+      echo "tools for further handling them.  Check the 'README' file, it"
+      echo "often tells you about the needed prerequisites for installing"
+      echo "this package.  You may also peek at any GNU archive site, in"
+      echo "case some other package contains this missing '$1' program."
+      ;;
+  esac
+}
+
+give_advice "$1" | sed -e '1s/^/WARNING: /' \
+                       -e '2,$s/^/         /' >&2
+
+# Propagate the correct exit status (expected to be 127 for a program
+# not found, 63 for a program that failed due to version mismatch).
+exit $st
+
+# Local variables:
+# eval: (add-hook 'before-save-hook 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC0"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/build-aux/prefix-gnulib-mk b/build-aux/prefix-gnulib-mk
new file mode 100755 (executable)
index 0000000..544654f
--- /dev/null
@@ -0,0 +1,229 @@
+eval '(exit $?0)' && eval 'exec perl -wS "$0" "$@"'
+  & eval 'exec perl -wS "$0" $argv:q'
+    if 0;
+
+use strict;
+use IO::File;
+use Getopt::Long;
+use File::Basename; # for dirname
+
+my $VERSION = '2012-01-21 17:13'; # UTC
+(my $ME = $0) =~ s|.*/||;
+
+my $prefix;
+my $lib_name;
+
+sub usage ($)
+{
+  my ($exit_code) = @_;
+  my $STREAM = ($exit_code == 0 ? *STDOUT : *STDERR);
+  if ($exit_code != 0)
+    {
+      print $STREAM "Try '$ME --help' for more information.\n";
+    }
+  else
+    {
+      print $STREAM <<EOF;
+Usage: $ME --lib-name=NAME FILE
+   or: $ME [--help|--version]
+Rewrite a gnulib-tool-generated FILE like lib/gnulib.mk to work with
+automake's subdir-objects.
+
+OPTIONS:
+
+This option must be specified:
+
+   --lib-name=NAME    library name, often "lib\$project"
+
+The following are optional:
+
+   --help             display this help and exit
+   --version          output version information and exit
+
+EOF
+    }
+  exit $exit_code;
+}
+
+# contents ($FILE_NAME)
+# ---------------------
+sub contents ($)
+{
+  my ($file) = @_;
+  local $/;                     # Turn on slurp-mode.
+  my $f = new IO::File "< $file" or die "$file";
+  my $contents = $f->getline or die "$file";
+  $f->close;
+  return $contents;
+}
+
+# prefix_word ($WORD)
+# -------------------
+# Do not prefix special words such as variable dereferences.  Also,
+# "Makefile" is really "Makefile", since precisely there is no
+# lib/Makefile.
+sub prefix_word ($)
+{
+  local ($_) = @_;
+  $_ = $prefix . $_
+    unless (/^-/ || m{^\$\(\w+\)} || $_ eq "Makefile" || $_ eq '\\'
+            || $_ eq '@ALLOCA@');
+  return $_;
+}
+
+
+# prefix_words ($TEXT)
+# --------------------
+sub prefix_words ($)
+{
+  local ($_) = @_;
+  s{(\S+)}{prefix_word($1)}gem;
+  return $_;
+}
+
+
+# prefix_assignment ($LHS-AND-ASSIGN-OP, $RHS)
+# --------------------------------------------
+sub prefix_assignment ($$)
+{
+  my ($lhs_and_assign_op, $rhs) = @_;
+  my $res;
+
+  # Some variables are initialized by gnulib.mk, and we don't want
+  # that.  Change '=' to '+='.
+  if ($lhs_and_assign_op =~ /^(GPERF|V_GPERF.*) =$/)
+    {
+      # Do not change the RHS, which specifies the GPERF program.
+    }
+  elsif ($lhs_and_assign_op =~
+      /^(SUBDIRS|EXTRA_DIST|BUILT_SOURCES|SUFFIXES|MOSTLYCLEANFILES
+         |CLEANFILES|DISTCLEANFILES|MAINTAINERCLEANFILES|AM_CFLAGS
+         |AM_CPPFLAGS|AM_GNU_GETTEXT)\ =/x)
+    {
+      $lhs_and_assign_op =~ s/=/+=/;
+    }
+  # We don't want to inherit gnulib's AUTOMAKE_OPTIONS, comment them.
+  elsif ($lhs_and_assign_op =~ /^AUTOMAKE_OPTIONS =/)
+    {
+      $lhs_and_assign_op =~ s/^/# /;
+    }
+  elsif ($lhs_and_assign_op =~ /^SUFFIXES /)
+    {
+      # Elide any SUFFIXES assignment or concatenation.
+      $lhs_and_assign_op =~ s/^/# /;
+    }
+  # The words are (probably) paths to files in lib/: prefix them.
+  else
+    {
+      $rhs = prefix_words($rhs)
+    }
+
+  # Variables which name depend on the location: libbison_a_SOURCES =>
+  # lib_libbison_a_SOURCES.
+  $lhs_and_assign_op =~ s/($lib_name)/lib_$1/g;
+
+  return $lhs_and_assign_op . $rhs;
+}
+
+# prefix $CONTENTS
+# ----------------
+# $CONTENTS is a Makefile content.  Post-process it so that each file-name
+# is prefixed with $prefix (e.g., "lib/").
+#
+# Relies heavily on the regularity of the file generated by gnulib-tool.
+sub prefix ($)
+{
+  # Work on $_.
+  local ($_) = @_;
+
+  # Prefix all the occurrence of files in rules.  If there is nothing
+  # after in the :, it's probably a phony target, or a suffix rule.
+  # Don't touch it.
+  s{^([-\w+/]+\.[-\w.]+ *: *\S.*)$}
+   {prefix_words($1)}gem;
+
+  # Prefix files in variables.
+  s{^([\w.]+\s*\+?=)(.*)$}
+   {prefix_assignment($1, $2)}gem;
+
+  # $(srcdir)/ is actually $(top_srcdir)/$prefix/.
+  # The trailing slash is required to avoid matching this rule:
+  #   test '$(srcdir)' = . || rm -f $(top_builddir)/GNUmakefile
+  s{\$\(srcdir\)/}{\$(top_srcdir)/$prefix}g;
+
+  # Sometimes, t-$@ is used instead of $@-t, which, of course, does
+  # not work when we have a $@ with a directory in it.
+  s{t-\$\@}{\$\@-t}g;
+
+  # Some AC_SUBST patterns remain and would better be Make macros.
+  s{\@(MKDIR_P)\@}{\$($1)}g;
+
+  # Adjust paths in mkdir.
+  s{(\$\(MKDIR_P\))\s*(\w+)}{$1 $prefix$2}g;
+
+  return $_;
+}
+
+# process ($IN)
+# -------------
+sub process ($)
+{
+  my ($file) = @_;
+  my ($bak) = "$file.bak";
+  rename ($file, $bak) or die "$ME: rename $file $bak failed: $!\n";
+  my $contents = contents ($bak);
+  $contents = prefix ($contents);
+  my $out = new IO::File(">$file")
+    or die "$ME: $file: failed to open for writing: $!\n";
+  print $out $contents;
+}
+
+{
+  GetOptions
+    (
+     'lib-name=s' => \$lib_name,
+     help => sub { usage 0 },
+     version => sub { print "$ME version $VERSION\n"; exit },
+    ) or usage 1;
+
+  my $fail = 0;
+  defined $lib_name
+    or (warn "$ME: no library name; use --lib-name=NAME\n"), $fail = 1;
+
+  # There must be exactly one argument.
+  @ARGV == 0
+    and (warn "$ME: missing FILE argument\n"), $fail = 1;
+  1 < @ARGV
+    and (warn "$ME: too many arguments:\n", join ("\n", @ARGV), "\n"),
+      $fail = 1;
+  $fail
+    and usage 1;
+
+  my $file = $ARGV[0];
+  $prefix = (dirname $file) . '/';
+  warn "prefix=$prefix\n";
+
+  process $file;
+}
+
+### Setup "GNU" style for perl-mode and cperl-mode.
+## Local Variables:
+## perl-indent-level: 2
+## perl-continued-statement-offset: 2
+## perl-continued-brace-offset: 0
+## perl-brace-offset: 0
+## perl-brace-imaginary-offset: 0
+## perl-label-offset: -2
+## cperl-indent-level: 2
+## cperl-brace-offset: 0
+## cperl-continued-brace-offset: 0
+## cperl-label-offset: -2
+## cperl-extra-newline-before-brace: t
+## cperl-merge-trailing-else: nil
+## cperl-continued-statement-offset: 2
+## eval: (add-hook 'before-save-hook 'time-stamp)
+## time-stamp-start: "my $VERSION = '"
+## time-stamp-format: "%:y-%02m-%02d %02H:%02M"
+## time-stamp-time-zone: "UTC0"
+## time-stamp-end: "'; # UTC"
+## End:
diff --git a/build-aux/test-driver b/build-aux/test-driver
new file mode 100755 (executable)
index 0000000..b8521a4
--- /dev/null
@@ -0,0 +1,148 @@
+#! /bin/sh
+# test-driver - basic testsuite driver script.
+
+scriptversion=2018-03-07.03; # UTC
+
+# Copyright (C) 2011-2018 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <https://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+# Make unconditional expansion of undefined variables an error.  This
+# helps a lot in preventing typo-related bugs.
+set -u
+
+usage_error ()
+{
+  echo "$0: $*" >&2
+  print_usage >&2
+  exit 2
+}
+
+print_usage ()
+{
+  cat <<END
+Usage:
+  test-driver --test-name=NAME --log-file=PATH --trs-file=PATH
+              [--expect-failure={yes|no}] [--color-tests={yes|no}]
+              [--enable-hard-errors={yes|no}] [--]
+              TEST-SCRIPT [TEST-SCRIPT-ARGUMENTS]
+The '--test-name', '--log-file' and '--trs-file' options are mandatory.
+END
+}
+
+test_name= # Used for reporting.
+log_file=  # Where to save the output of the test script.
+trs_file=  # Where to save the metadata of the test run.
+expect_failure=no
+color_tests=no
+enable_hard_errors=yes
+while test $# -gt 0; do
+  case $1 in
+  --help) print_usage; exit $?;;
+  --version) echo "test-driver $scriptversion"; exit $?;;
+  --test-name) test_name=$2; shift;;
+  --log-file) log_file=$2; shift;;
+  --trs-file) trs_file=$2; shift;;
+  --color-tests) color_tests=$2; shift;;
+  --expect-failure) expect_failure=$2; shift;;
+  --enable-hard-errors) enable_hard_errors=$2; shift;;
+  --) shift; break;;
+  -*) usage_error "invalid option: '$1'";;
+   *) break;;
+  esac
+  shift
+done
+
+missing_opts=
+test x"$test_name" = x && missing_opts="$missing_opts --test-name"
+test x"$log_file"  = x && missing_opts="$missing_opts --log-file"
+test x"$trs_file"  = x && missing_opts="$missing_opts --trs-file"
+if test x"$missing_opts" != x; then
+  usage_error "the following mandatory options are missing:$missing_opts"
+fi
+
+if test $# -eq 0; then
+  usage_error "missing argument"
+fi
+
+if test $color_tests = yes; then
+  # Keep this in sync with 'lib/am/check.am:$(am__tty_colors)'.
+  red='\e[0;31m' # Red.
+  grn='\e[0;32m' # Green.
+  lgn='\e[1;32m' # Light green.
+  blu='\e[1;34m' # Blue.
+  mgn='\e[0;35m' # Magenta.
+  std='\e[m'     # No color.
+else
+  red= grn= lgn= blu= mgn= std=
+fi
+
+do_exit='rm -f $log_file $trs_file; (exit $st); exit $st'
+trap "st=129; $do_exit" 1
+trap "st=130; $do_exit" 2
+trap "st=141; $do_exit" 13
+trap "st=143; $do_exit" 15
+
+# Test script is run here.
+"$@" >$log_file 2>&1
+estatus=$?
+
+if test $enable_hard_errors = no && test $estatus -eq 99; then
+  tweaked_estatus=1
+else
+  tweaked_estatus=$estatus
+fi
+
+case $tweaked_estatus:$expect_failure in
+  0:yes) col=$red res=XPASS recheck=yes gcopy=yes;;
+  0:*)   col=$grn res=PASS  recheck=no  gcopy=no;;
+  77:*)  col=$blu res=SKIP  recheck=no  gcopy=yes;;
+  99:*)  col=$mgn res=ERROR recheck=yes gcopy=yes;;
+  *:yes) col=$lgn res=XFAIL recheck=no  gcopy=yes;;
+  *:*)   col=$red res=FAIL  recheck=yes gcopy=yes;;
+esac
+
+# Report the test outcome and exit status in the logs, so that one can
+# know whether the test passed or failed simply by looking at the '.log'
+# file, without the need of also peaking into the corresponding '.trs'
+# file (automake bug#11814).
+echo "$res $test_name (exit status: $estatus)" >>$log_file
+
+# Report outcome to console.
+echo "${col}${res}${std}: $test_name"
+
+# Register the test result, and other relevant metadata.
+echo ":test-result: $res" > $trs_file
+echo ":global-test-result: $res" >> $trs_file
+echo ":recheck: $recheck" >> $trs_file
+echo ":copy-in-global-log: $gcopy" >> $trs_file
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'before-save-hook 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC0"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/build-aux/ylwrap b/build-aux/ylwrap
new file mode 100755 (executable)
index 0000000..5943168
--- /dev/null
@@ -0,0 +1,247 @@
+#! /bin/sh
+# ylwrap - wrapper for lex/yacc invocations.
+
+scriptversion=2018-03-07.03; # UTC
+
+# Copyright (C) 1996-2018 Free Software Foundation, Inc.
+#
+# Written by Tom Tromey <tromey@cygnus.com>.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, 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 <https://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+get_dirname ()
+{
+  case $1 in
+    */*|*\\*) printf '%s\n' "$1" | sed -e 's|\([\\/]\)[^\\/]*$|\1|';;
+    # Otherwise,  we want the empty string (not ".").
+  esac
+}
+
+# guard FILE
+# ----------
+# The CPP macro used to guard inclusion of FILE.
+guard ()
+{
+  printf '%s\n' "$1"                                                    \
+    | sed                                                               \
+        -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'   \
+        -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g'                        \
+        -e 's/__*/_/g'
+}
+
+# quote_for_sed [STRING]
+# ----------------------
+# Return STRING (or stdin) quoted to be used as a sed pattern.
+quote_for_sed ()
+{
+  case $# in
+    0) cat;;
+    1) printf '%s\n' "$1";;
+  esac \
+    | sed -e 's|[][\\.*]|\\&|g'
+}
+
+case "$1" in
+  '')
+    echo "$0: No files given.  Try '$0 --help' for more information." 1>&2
+    exit 1
+    ;;
+  --basedir)
+    basedir=$2
+    shift 2
+    ;;
+  -h|--h*)
+    cat <<\EOF
+Usage: ylwrap [--help|--version] INPUT [OUTPUT DESIRED]... -- PROGRAM [ARGS]...
+
+Wrapper for lex/yacc invocations, renaming files as desired.
+
+  INPUT is the input file
+  OUTPUT is one file PROG generates
+  DESIRED is the file we actually want instead of OUTPUT
+  PROGRAM is program to run
+  ARGS are passed to PROG
+
+Any number of OUTPUT,DESIRED pairs may be used.
+
+Report bugs to <bug-automake@gnu.org>.
+EOF
+    exit $?
+    ;;
+  -v|--v*)
+    echo "ylwrap $scriptversion"
+    exit $?
+    ;;
+esac
+
+
+# The input.
+input=$1
+shift
+# We'll later need for a correct munging of "#line" directives.
+input_sub_rx=`get_dirname "$input" | quote_for_sed`
+case $input in
+  [\\/]* | ?:[\\/]*)
+    # Absolute path; do nothing.
+    ;;
+  *)
+    # Relative path.  Make it absolute.
+    input=`pwd`/$input
+    ;;
+esac
+input_rx=`get_dirname "$input" | quote_for_sed`
+
+# Since DOS filename conventions don't allow two dots,
+# the DOS version of Bison writes out y_tab.c instead of y.tab.c
+# and y_tab.h instead of y.tab.h. Test to see if this is the case.
+y_tab_nodot=false
+if test -f y_tab.c || test -f y_tab.h; then
+  y_tab_nodot=true
+fi
+
+# The parser itself, the first file, is the destination of the .y.c
+# rule in the Makefile.
+parser=$1
+
+# A sed program to s/FROM/TO/g for all the FROM/TO so that, for
+# instance, we rename #include "y.tab.h" into #include "parse.h"
+# during the conversion from y.tab.c to parse.c.
+sed_fix_filenames=
+
+# Also rename header guards, as Bison 2.7 for instance uses its header
+# guard in its implementation file.
+sed_fix_header_guards=
+
+while test $# -ne 0; do
+  if test x"$1" = x"--"; then
+    shift
+    break
+  fi
+  from=$1
+  # Handle y_tab.c and y_tab.h output by DOS
+  if $y_tab_nodot; then
+    case $from in
+      "y.tab.c") from=y_tab.c;;
+      "y.tab.h") from=y_tab.h;;
+    esac
+  fi
+  shift
+  to=$1
+  shift
+  sed_fix_filenames="${sed_fix_filenames}s|"`quote_for_sed "$from"`"|$to|g;"
+  sed_fix_header_guards="${sed_fix_header_guards}s|"`guard "$from"`"|"`guard "$to"`"|g;"
+done
+
+# The program to run.
+prog=$1
+shift
+# Make any relative path in $prog absolute.
+case $prog in
+  [\\/]* | ?:[\\/]*) ;;
+  *[\\/]*) prog=`pwd`/$prog ;;
+esac
+
+dirname=ylwrap$$
+do_exit="cd '`pwd`' && rm -rf $dirname > /dev/null 2>&1;"' (exit $ret); exit $ret'
+trap "ret=129; $do_exit" 1
+trap "ret=130; $do_exit" 2
+trap "ret=141; $do_exit" 13
+trap "ret=143; $do_exit" 15
+mkdir $dirname || exit 1
+
+cd $dirname
+
+case $# in
+  0) "$prog" "$input" ;;
+  *) "$prog" "$@" "$input" ;;
+esac
+ret=$?
+
+if test $ret -eq 0; then
+  for from in *
+  do
+    to=`printf '%s\n' "$from" | sed "$sed_fix_filenames"`
+    if test -f "$from"; then
+      # If $2 is an absolute path name, then just use that,
+      # otherwise prepend '../'.
+      case $to in
+        [\\/]* | ?:[\\/]*) target=$to;;
+        *) target=../$to;;
+      esac
+
+      # Do not overwrite unchanged header files to avoid useless
+      # recompilations.  Always update the parser itself: it is the
+      # destination of the .y.c rule in the Makefile.  Divert the
+      # output of all other files to a temporary file so we can
+      # compare them to existing versions.
+      if test $from != $parser; then
+        realtarget=$target
+        target=tmp-`printf '%s\n' "$target" | sed 's|.*[\\/]||g'`
+      fi
+
+      # Munge "#line" or "#" directives.  Don't let the resulting
+      # debug information point at an absolute srcdir.  Use the real
+      # output file name, not yy.lex.c for instance.  Adjust the
+      # include guards too.
+      sed -e "/^#/!b"                           \
+          -e "s|$input_rx|$input_sub_rx|"       \
+          -e "$sed_fix_filenames"               \
+          -e "$sed_fix_header_guards"           \
+        "$from" >"$target" || ret=$?
+
+      # Check whether files must be updated.
+      if test "$from" != "$parser"; then
+        if test -f "$realtarget" && cmp -s "$realtarget" "$target"; then
+          echo "$to is unchanged"
+          rm -f "$target"
+        else
+          echo "updating $to"
+          mv -f "$target" "$realtarget"
+        fi
+      fi
+    else
+      # A missing file is only an error for the parser.  This is a
+      # blatant hack to let us support using "yacc -d".  If -d is not
+      # specified, don't fail when the header file is "missing".
+      if test "$from" = "$parser"; then
+        ret=1
+      fi
+    fi
+  done
+fi
+
+# Remove the directory.
+cd ..
+rm -rf $dirname
+
+exit $ret
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'before-save-hook 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC0"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/config.sub b/config.sub
deleted file mode 100755 (executable)
index d4c8338..0000000
+++ /dev/null
@@ -1,1805 +0,0 @@
-#! /bin/sh
-# Configuration validation subroutine script.
-#   Copyright 1992-2014 Free Software Foundation, Inc.
-
-timestamp='2014-09-26'
-
-# This file is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 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 <http://www.gnu.org/licenses/>.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that
-# program.  This Exception is an additional permission under section 7
-# of the GNU General Public License, version 3 ("GPLv3").
-
-
-# Please send patches with a ChangeLog entry to config-patches@gnu.org.
-#
-# Configuration subroutine to validate and canonicalize a configuration type.
-# Supply the specified configuration type as an argument.
-# If it is invalid, we print an error message on stderr and exit with code 1.
-# Otherwise, we print the canonical config type on stdout and succeed.
-
-# You can get the latest version of this script from:
-# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
-
-# This file is supposed to be the same for all GNU packages
-# and recognize all the CPU types, system types and aliases
-# that are meaningful with *any* GNU software.
-# Each package is responsible for reporting which valid configurations
-# it does not support.  The user should be able to distinguish
-# a failure to support a valid configuration from a meaningless
-# configuration.
-
-# The goal of this file is to map all the various variations of a given
-# machine specification into a single specification in the form:
-#      CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
-# or in some cases, the newer four-part form:
-#      CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
-# It is wrong to echo any other type of specification.
-
-me=`echo "$0" | sed -e 's,.*/,,'`
-
-usage="\
-Usage: $0 [OPTION] CPU-MFR-OPSYS
-       $0 [OPTION] ALIAS
-
-Canonicalize a configuration name.
-
-Operation modes:
-  -h, --help         print this help, then exit
-  -t, --time-stamp   print date of last modification, then exit
-  -v, --version      print version number, then exit
-
-Report bugs and patches to <config-patches@gnu.org>."
-
-version="\
-GNU config.sub ($timestamp)
-
-Copyright 1992-2014 Free Software Foundation, Inc.
-
-This is free software; see the source for copying conditions.  There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-
-help="
-Try \`$me --help' for more information."
-
-# Parse command line
-while test $# -gt 0 ; do
-  case $1 in
-    --time-stamp | --time* | -t )
-       echo "$timestamp" ; exit ;;
-    --version | -v )
-       echo "$version" ; exit ;;
-    --help | --h* | -h )
-       echo "$usage"; exit ;;
-    -- )     # Stop option processing
-       shift; break ;;
-    - )        # Use stdin as input.
-       break ;;
-    -* )
-       echo "$me: invalid option $1$help"
-       exit 1 ;;
-
-    *local*)
-       # First pass through any local machine types.
-       echo $1
-       exit ;;
-
-    * )
-       break ;;
-  esac
-done
-
-case $# in
- 0) echo "$me: missing argument$help" >&2
-    exit 1;;
- 1) ;;
- *) echo "$me: too many arguments$help" >&2
-    exit 1;;
-esac
-
-# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
-# Here we must recognize all the valid KERNEL-OS combinations.
-maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
-case $maybe_os in
-  nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
-  linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
-  knetbsd*-gnu* | netbsd*-gnu* | \
-  kopensolaris*-gnu* | \
-  storm-chaos* | os2-emx* | rtmk-nova*)
-    os=-$maybe_os
-    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
-    ;;
-  android-linux)
-    os=-linux-android
-    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
-    ;;
-  *)
-    basic_machine=`echo $1 | sed 's/-[^-]*$//'`
-    if [ $basic_machine != $1 ]
-    then os=`echo $1 | sed 's/.*-/-/'`
-    else os=; fi
-    ;;
-esac
-
-### Let's recognize common machines as not being operating systems so
-### that things like config.sub decstation-3100 work.  We also
-### recognize some manufacturers as not being operating systems, so we
-### can provide default operating systems below.
-case $os in
-       -sun*os*)
-               # Prevent following clause from handling this invalid input.
-               ;;
-       -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
-       -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
-       -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
-       -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
-       -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
-       -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
-       -apple | -axis | -knuth | -cray | -microblaze*)
-               os=
-               basic_machine=$1
-               ;;
-       -bluegene*)
-               os=-cnk
-               ;;
-       -sim | -cisco | -oki | -wec | -winbond)
-               os=
-               basic_machine=$1
-               ;;
-       -scout)
-               ;;
-       -wrs)
-               os=-vxworks
-               basic_machine=$1
-               ;;
-       -chorusos*)
-               os=-chorusos
-               basic_machine=$1
-               ;;
-       -chorusrdb)
-               os=-chorusrdb
-               basic_machine=$1
-               ;;
-       -hiux*)
-               os=-hiuxwe2
-               ;;
-       -sco6)
-               os=-sco5v6
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -sco5)
-               os=-sco3.2v5
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -sco4)
-               os=-sco3.2v4
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -sco3.2.[4-9]*)
-               os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -sco3.2v[4-9]*)
-               # Don't forget version if it is 3.2v4 or newer.
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -sco5v6*)
-               # Don't forget version if it is 3.2v4 or newer.
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -sco*)
-               os=-sco3.2v2
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -udk*)
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -isc)
-               os=-isc2.2
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -clix*)
-               basic_machine=clipper-intergraph
-               ;;
-       -isc*)
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -lynx*178)
-               os=-lynxos178
-               ;;
-       -lynx*5)
-               os=-lynxos5
-               ;;
-       -lynx*)
-               os=-lynxos
-               ;;
-       -ptx*)
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
-               ;;
-       -windowsnt*)
-               os=`echo $os | sed -e 's/windowsnt/winnt/'`
-               ;;
-       -psos*)
-               os=-psos
-               ;;
-       -mint | -mint[0-9]*)
-               basic_machine=m68k-atari
-               os=-mint
-               ;;
-esac
-
-# Decode aliases for certain CPU-COMPANY combinations.
-case $basic_machine in
-       # Recognize the basic CPU types without company name.
-       # Some are omitted here because they have special meanings below.
-       1750a | 580 \
-       | a29k \
-       | aarch64 | aarch64_be \
-       | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
-       | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
-       | am33_2.0 \
-       | arc | arceb \
-       | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
-       | avr | avr32 \
-       | be32 | be64 \
-       | bfin \
-       | c4x | c8051 | clipper \
-       | d10v | d30v | dlx | dsp16xx \
-       | epiphany \
-       | fido | fr30 | frv \
-       | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
-       | hexagon \
-       | i370 | i860 | i960 | ia64 \
-       | ip2k | iq2000 \
-       | k1om \
-       | le32 | le64 \
-       | lm32 \
-       | m32c | m32r | m32rle | m68000 | m68k | m88k \
-       | maxq | mb | microblaze | microblazeel | mcore | mep | metag \
-       | mips | mipsbe | mipseb | mipsel | mipsle \
-       | mips16 \
-       | mips64 | mips64el \
-       | mips64octeon | mips64octeonel \
-       | mips64orion | mips64orionel \
-       | mips64r5900 | mips64r5900el \
-       | mips64vr | mips64vrel \
-       | mips64vr4100 | mips64vr4100el \
-       | mips64vr4300 | mips64vr4300el \
-       | mips64vr5000 | mips64vr5000el \
-       | mips64vr5900 | mips64vr5900el \
-       | mipsisa32 | mipsisa32el \
-       | mipsisa32r2 | mipsisa32r2el \
-       | mipsisa32r6 | mipsisa32r6el \
-       | mipsisa64 | mipsisa64el \
-       | mipsisa64r2 | mipsisa64r2el \
-       | mipsisa64r6 | mipsisa64r6el \
-       | mipsisa64sb1 | mipsisa64sb1el \
-       | mipsisa64sr71k | mipsisa64sr71kel \
-       | mipsr5900 | mipsr5900el \
-       | mipstx39 | mipstx39el \
-       | mn10200 | mn10300 \
-       | moxie \
-       | mt \
-       | msp430 \
-       | nds32 | nds32le | nds32be \
-       | nios | nios2 | nios2eb | nios2el \
-       | ns16k | ns32k \
-       | open8 | or1k | or1knd | or32 \
-       | pdp10 | pdp11 | pj | pjl \
-       | powerpc | powerpc64 | powerpc64le | powerpcle \
-       | pyramid \
-       | riscv32 | riscv64 \
-       | rl78 | rx \
-       | score \
-       | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
-       | sh64 | sh64le \
-       | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
-       | sparcv8 | sparcv9 | sparcv9b | sparcv9v \
-       | spu \
-       | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
-       | ubicom32 \
-       | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
-       | we32k \
-       | x86 | xc16x | xstormy16 | xtensa \
-       | z8k | z80)
-               basic_machine=$basic_machine-unknown
-               ;;
-       c54x)
-               basic_machine=tic54x-unknown
-               ;;
-       c55x)
-               basic_machine=tic55x-unknown
-               ;;
-       c6x)
-               basic_machine=tic6x-unknown
-               ;;
-       leon|leon[3-9])
-               basic_machine=sparc-$basic_machine
-               ;;
-       m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
-               basic_machine=$basic_machine-unknown
-               os=-none
-               ;;
-       m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
-               ;;
-       ms1)
-               basic_machine=mt-unknown
-               ;;
-
-       strongarm | thumb | xscale)
-               basic_machine=arm-unknown
-               ;;
-       xgate)
-               basic_machine=$basic_machine-unknown
-               os=-none
-               ;;
-       xscaleeb)
-               basic_machine=armeb-unknown
-               ;;
-
-       xscaleel)
-               basic_machine=armel-unknown
-               ;;
-
-       # We use `pc' rather than `unknown'
-       # because (1) that's what they normally are, and
-       # (2) the word "unknown" tends to confuse beginning users.
-       i*86 | x86_64)
-         basic_machine=$basic_machine-pc
-         ;;
-       # Object if more than one company name word.
-       *-*-*)
-               echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
-               exit 1
-               ;;
-       # Recognize the basic CPU types with company name.
-       580-* \
-       | a29k-* \
-       | aarch64-* | aarch64_be-* \
-       | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
-       | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
-       | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
-       | arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
-       | avr-* | avr32-* \
-       | be32-* | be64-* \
-       | bfin-* | bs2000-* \
-       | c[123]* | c30-* | [cjt]90-* | c4x-* \
-       | c8051-* | clipper-* | craynv-* | cydra-* \
-       | d10v-* | d30v-* | dlx-* \
-       | elxsi-* \
-       | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
-       | h8300-* | h8500-* \
-       | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
-       | hexagon-* \
-       | i*86-* | i860-* | i960-* | ia64-* \
-       | ip2k-* | iq2000-* \
-       | k1om-* \
-       | le32-* | le64-* \
-       | lm32-* \
-       | m32c-* | m32r-* | m32rle-* \
-       | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
-       | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
-       | microblaze-* | microblazeel-* \
-       | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
-       | mips16-* \
-       | mips64-* | mips64el-* \
-       | mips64octeon-* | mips64octeonel-* \
-       | mips64orion-* | mips64orionel-* \
-       | mips64r5900-* | mips64r5900el-* \
-       | mips64vr-* | mips64vrel-* \
-       | mips64vr4100-* | mips64vr4100el-* \
-       | mips64vr4300-* | mips64vr4300el-* \
-       | mips64vr5000-* | mips64vr5000el-* \
-       | mips64vr5900-* | mips64vr5900el-* \
-       | mipsisa32-* | mipsisa32el-* \
-       | mipsisa32r2-* | mipsisa32r2el-* \
-       | mipsisa32r6-* | mipsisa32r6el-* \
-       | mipsisa64-* | mipsisa64el-* \
-       | mipsisa64r2-* | mipsisa64r2el-* \
-       | mipsisa64r6-* | mipsisa64r6el-* \
-       | mipsisa64sb1-* | mipsisa64sb1el-* \
-       | mipsisa64sr71k-* | mipsisa64sr71kel-* \
-       | mipsr5900-* | mipsr5900el-* \
-       | mipstx39-* | mipstx39el-* \
-       | mmix-* \
-       | mt-* \
-       | msp430-* \
-       | nds32-* | nds32le-* | nds32be-* \
-       | nios-* | nios2-* | nios2eb-* | nios2el-* \
-       | none-* | np1-* | ns16k-* | ns32k-* \
-       | open8-* \
-       | or1k*-* \
-       | orion-* \
-       | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
-       | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
-       | pyramid-* \
-       | rl78-* | romp-* | rs6000-* | rx-* \
-       | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
-       | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
-       | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
-       | sparclite-* \
-       | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \
-       | tahoe-* \
-       | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
-       | tile*-* \
-       | tron-* \
-       | ubicom32-* \
-       | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
-       | vax-* \
-       | we32k-* \
-       | x86-* | x86_64-* | xc16x-* | xps100-* \
-       | xstormy16-* | xtensa*-* \
-       | ymp-* \
-       | z8k-* | z80-*)
-               ;;
-       # Recognize the basic CPU types without company name, with glob match.
-       xtensa*)
-               basic_machine=$basic_machine-unknown
-               ;;
-       # Recognize the various machine names and aliases which stand
-       # for a CPU type and a company and sometimes even an OS.
-       386bsd)
-               basic_machine=i386-unknown
-               os=-bsd
-               ;;
-       3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
-               basic_machine=m68000-att
-               ;;
-       3b*)
-               basic_machine=we32k-att
-               ;;
-       a29khif)
-               basic_machine=a29k-amd
-               os=-udi
-               ;;
-       abacus)
-               basic_machine=abacus-unknown
-               ;;
-       adobe68k)
-               basic_machine=m68010-adobe
-               os=-scout
-               ;;
-       alliant | fx80)
-               basic_machine=fx80-alliant
-               ;;
-       altos | altos3068)
-               basic_machine=m68k-altos
-               ;;
-       am29k)
-               basic_machine=a29k-none
-               os=-bsd
-               ;;
-       amd64)
-               basic_machine=x86_64-pc
-               ;;
-       amd64-*)
-               basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       amdahl)
-               basic_machine=580-amdahl
-               os=-sysv
-               ;;
-       amiga | amiga-*)
-               basic_machine=m68k-unknown
-               ;;
-       amigaos | amigados)
-               basic_machine=m68k-unknown
-               os=-amigaos
-               ;;
-       amigaunix | amix)
-               basic_machine=m68k-unknown
-               os=-sysv4
-               ;;
-       apollo68)
-               basic_machine=m68k-apollo
-               os=-sysv
-               ;;
-       apollo68bsd)
-               basic_machine=m68k-apollo
-               os=-bsd
-               ;;
-       aros)
-               basic_machine=i386-pc
-               os=-aros
-               ;;
-       aux)
-               basic_machine=m68k-apple
-               os=-aux
-               ;;
-       balance)
-               basic_machine=ns32k-sequent
-               os=-dynix
-               ;;
-       blackfin)
-               basic_machine=bfin-unknown
-               os=-linux
-               ;;
-       blackfin-*)
-               basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
-               os=-linux
-               ;;
-       bluegene*)
-               basic_machine=powerpc-ibm
-               os=-cnk
-               ;;
-       c54x-*)
-               basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       c55x-*)
-               basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       c6x-*)
-               basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       c90)
-               basic_machine=c90-cray
-               os=-unicos
-               ;;
-       cegcc)
-               basic_machine=arm-unknown
-               os=-cegcc
-               ;;
-       convex-c1)
-               basic_machine=c1-convex
-               os=-bsd
-               ;;
-       convex-c2)
-               basic_machine=c2-convex
-               os=-bsd
-               ;;
-       convex-c32)
-               basic_machine=c32-convex
-               os=-bsd
-               ;;
-       convex-c34)
-               basic_machine=c34-convex
-               os=-bsd
-               ;;
-       convex-c38)
-               basic_machine=c38-convex
-               os=-bsd
-               ;;
-       cray | j90)
-               basic_machine=j90-cray
-               os=-unicos
-               ;;
-       craynv)
-               basic_machine=craynv-cray
-               os=-unicosmp
-               ;;
-       cr16 | cr16-*)
-               basic_machine=cr16-unknown
-               os=-elf
-               ;;
-       crds | unos)
-               basic_machine=m68k-crds
-               ;;
-       crisv32 | crisv32-* | etraxfs*)
-               basic_machine=crisv32-axis
-               ;;
-       cris | cris-* | etrax*)
-               basic_machine=cris-axis
-               ;;
-       crx)
-               basic_machine=crx-unknown
-               os=-elf
-               ;;
-       da30 | da30-*)
-               basic_machine=m68k-da30
-               ;;
-       decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
-               basic_machine=mips-dec
-               ;;
-       decsystem10* | dec10*)
-               basic_machine=pdp10-dec
-               os=-tops10
-               ;;
-       decsystem20* | dec20*)
-               basic_machine=pdp10-dec
-               os=-tops20
-               ;;
-       delta | 3300 | motorola-3300 | motorola-delta \
-             | 3300-motorola | delta-motorola)
-               basic_machine=m68k-motorola
-               ;;
-       delta88)
-               basic_machine=m88k-motorola
-               os=-sysv3
-               ;;
-       dicos)
-               basic_machine=i686-pc
-               os=-dicos
-               ;;
-       djgpp)
-               basic_machine=i586-pc
-               os=-msdosdjgpp
-               ;;
-       dpx20 | dpx20-*)
-               basic_machine=rs6000-bull
-               os=-bosx
-               ;;
-       dpx2* | dpx2*-bull)
-               basic_machine=m68k-bull
-               os=-sysv3
-               ;;
-       ebmon29k)
-               basic_machine=a29k-amd
-               os=-ebmon
-               ;;
-       elxsi)
-               basic_machine=elxsi-elxsi
-               os=-bsd
-               ;;
-       encore | umax | mmax)
-               basic_machine=ns32k-encore
-               ;;
-       es1800 | OSE68k | ose68k | ose | OSE)
-               basic_machine=m68k-ericsson
-               os=-ose
-               ;;
-       fx2800)
-               basic_machine=i860-alliant
-               ;;
-       genix)
-               basic_machine=ns32k-ns
-               ;;
-       gmicro)
-               basic_machine=tron-gmicro
-               os=-sysv
-               ;;
-       go32)
-               basic_machine=i386-pc
-               os=-go32
-               ;;
-       h3050r* | hiux*)
-               basic_machine=hppa1.1-hitachi
-               os=-hiuxwe2
-               ;;
-       h8300hms)
-               basic_machine=h8300-hitachi
-               os=-hms
-               ;;
-       h8300xray)
-               basic_machine=h8300-hitachi
-               os=-xray
-               ;;
-       h8500hms)
-               basic_machine=h8500-hitachi
-               os=-hms
-               ;;
-       harris)
-               basic_machine=m88k-harris
-               os=-sysv3
-               ;;
-       hp300-*)
-               basic_machine=m68k-hp
-               ;;
-       hp300bsd)
-               basic_machine=m68k-hp
-               os=-bsd
-               ;;
-       hp300hpux)
-               basic_machine=m68k-hp
-               os=-hpux
-               ;;
-       hp3k9[0-9][0-9] | hp9[0-9][0-9])
-               basic_machine=hppa1.0-hp
-               ;;
-       hp9k2[0-9][0-9] | hp9k31[0-9])
-               basic_machine=m68000-hp
-               ;;
-       hp9k3[2-9][0-9])
-               basic_machine=m68k-hp
-               ;;
-       hp9k6[0-9][0-9] | hp6[0-9][0-9])
-               basic_machine=hppa1.0-hp
-               ;;
-       hp9k7[0-79][0-9] | hp7[0-79][0-9])
-               basic_machine=hppa1.1-hp
-               ;;
-       hp9k78[0-9] | hp78[0-9])
-               # FIXME: really hppa2.0-hp
-               basic_machine=hppa1.1-hp
-               ;;
-       hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
-               # FIXME: really hppa2.0-hp
-               basic_machine=hppa1.1-hp
-               ;;
-       hp9k8[0-9][13679] | hp8[0-9][13679])
-               basic_machine=hppa1.1-hp
-               ;;
-       hp9k8[0-9][0-9] | hp8[0-9][0-9])
-               basic_machine=hppa1.0-hp
-               ;;
-       hppa-next)
-               os=-nextstep3
-               ;;
-       hppaosf)
-               basic_machine=hppa1.1-hp
-               os=-osf
-               ;;
-       hppro)
-               basic_machine=hppa1.1-hp
-               os=-proelf
-               ;;
-       i370-ibm* | ibm*)
-               basic_machine=i370-ibm
-               ;;
-       i*86v32)
-               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-               os=-sysv32
-               ;;
-       i*86v4*)
-               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-               os=-sysv4
-               ;;
-       i*86v)
-               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-               os=-sysv
-               ;;
-       i*86sol2)
-               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-               os=-solaris2
-               ;;
-       i386mach)
-               basic_machine=i386-mach
-               os=-mach
-               ;;
-       i386-vsta | vsta)
-               basic_machine=i386-unknown
-               os=-vsta
-               ;;
-       iris | iris4d)
-               basic_machine=mips-sgi
-               case $os in
-                   -irix*)
-                       ;;
-                   *)
-                       os=-irix4
-                       ;;
-               esac
-               ;;
-       isi68 | isi)
-               basic_machine=m68k-isi
-               os=-sysv
-               ;;
-       leon-*|leon[3-9]-*)
-               basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'`
-               ;;
-       m68knommu)
-               basic_machine=m68k-unknown
-               os=-linux
-               ;;
-       m68knommu-*)
-               basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
-               os=-linux
-               ;;
-       m88k-omron*)
-               basic_machine=m88k-omron
-               ;;
-       magnum | m3230)
-               basic_machine=mips-mips
-               os=-sysv
-               ;;
-       merlin)
-               basic_machine=ns32k-utek
-               os=-sysv
-               ;;
-       microblaze*)
-               basic_machine=microblaze-xilinx
-               ;;
-       mingw64)
-               basic_machine=x86_64-pc
-               os=-mingw64
-               ;;
-       mingw32)
-               basic_machine=i686-pc
-               os=-mingw32
-               ;;
-       mingw32ce)
-               basic_machine=arm-unknown
-               os=-mingw32ce
-               ;;
-       miniframe)
-               basic_machine=m68000-convergent
-               ;;
-       *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
-               basic_machine=m68k-atari
-               os=-mint
-               ;;
-       mips3*-*)
-               basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
-               ;;
-       mips3*)
-               basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
-               ;;
-       monitor)
-               basic_machine=m68k-rom68k
-               os=-coff
-               ;;
-       morphos)
-               basic_machine=powerpc-unknown
-               os=-morphos
-               ;;
-       moxiebox)
-               basic_machine=moxie-unknown
-               os=-moxiebox
-               ;;
-       msdos)
-               basic_machine=i386-pc
-               os=-msdos
-               ;;
-       ms1-*)
-               basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
-               ;;
-       msys)
-               basic_machine=i686-pc
-               os=-msys
-               ;;
-       mvs)
-               basic_machine=i370-ibm
-               os=-mvs
-               ;;
-       nacl)
-               basic_machine=le32-unknown
-               os=-nacl
-               ;;
-       ncr3000)
-               basic_machine=i486-ncr
-               os=-sysv4
-               ;;
-       netbsd386)
-               basic_machine=i386-unknown
-               os=-netbsd
-               ;;
-       netwinder)
-               basic_machine=armv4l-rebel
-               os=-linux
-               ;;
-       news | news700 | news800 | news900)
-               basic_machine=m68k-sony
-               os=-newsos
-               ;;
-       news1000)
-               basic_machine=m68030-sony
-               os=-newsos
-               ;;
-       news-3600 | risc-news)
-               basic_machine=mips-sony
-               os=-newsos
-               ;;
-       necv70)
-               basic_machine=v70-nec
-               os=-sysv
-               ;;
-       next | m*-next )
-               basic_machine=m68k-next
-               case $os in
-                   -nextstep* )
-                       ;;
-                   -ns2*)
-                     os=-nextstep2
-                       ;;
-                   *)
-                     os=-nextstep3
-                       ;;
-               esac
-               ;;
-       nh3000)
-               basic_machine=m68k-harris
-               os=-cxux
-               ;;
-       nh[45]000)
-               basic_machine=m88k-harris
-               os=-cxux
-               ;;
-       nindy960)
-               basic_machine=i960-intel
-               os=-nindy
-               ;;
-       mon960)
-               basic_machine=i960-intel
-               os=-mon960
-               ;;
-       nonstopux)
-               basic_machine=mips-compaq
-               os=-nonstopux
-               ;;
-       np1)
-               basic_machine=np1-gould
-               ;;
-       neo-tandem)
-               basic_machine=neo-tandem
-               ;;
-       nse-tandem)
-               basic_machine=nse-tandem
-               ;;
-       nsr-tandem)
-               basic_machine=nsr-tandem
-               ;;
-       op50n-* | op60c-*)
-               basic_machine=hppa1.1-oki
-               os=-proelf
-               ;;
-       openrisc | openrisc-*)
-               basic_machine=or32-unknown
-               ;;
-       os400)
-               basic_machine=powerpc-ibm
-               os=-os400
-               ;;
-       OSE68000 | ose68000)
-               basic_machine=m68000-ericsson
-               os=-ose
-               ;;
-       os68k)
-               basic_machine=m68k-none
-               os=-os68k
-               ;;
-       pa-hitachi)
-               basic_machine=hppa1.1-hitachi
-               os=-hiuxwe2
-               ;;
-       paragon)
-               basic_machine=i860-intel
-               os=-osf
-               ;;
-       parisc)
-               basic_machine=hppa-unknown
-               os=-linux
-               ;;
-       parisc-*)
-               basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
-               os=-linux
-               ;;
-       pbd)
-               basic_machine=sparc-tti
-               ;;
-       pbb)
-               basic_machine=m68k-tti
-               ;;
-       pc532 | pc532-*)
-               basic_machine=ns32k-pc532
-               ;;
-       pc98)
-               basic_machine=i386-pc
-               ;;
-       pc98-*)
-               basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       pentium | p5 | k5 | k6 | nexgen | viac3)
-               basic_machine=i586-pc
-               ;;
-       pentiumpro | p6 | 6x86 | athlon | athlon_*)
-               basic_machine=i686-pc
-               ;;
-       pentiumii | pentium2 | pentiumiii | pentium3)
-               basic_machine=i686-pc
-               ;;
-       pentium4)
-               basic_machine=i786-pc
-               ;;
-       pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
-               basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       pentiumpro-* | p6-* | 6x86-* | athlon-*)
-               basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
-               basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       pentium4-*)
-               basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       pn)
-               basic_machine=pn-gould
-               ;;
-       power)  basic_machine=power-ibm
-               ;;
-       ppc | ppcbe)    basic_machine=powerpc-unknown
-               ;;
-       ppc-* | ppcbe-*)
-               basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       ppcle | powerpclittle | ppc-le | powerpc-little)
-               basic_machine=powerpcle-unknown
-               ;;
-       ppcle-* | powerpclittle-*)
-               basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       ppc64)  basic_machine=powerpc64-unknown
-               ;;
-       ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       ppc64le | powerpc64little | ppc64-le | powerpc64-little)
-               basic_machine=powerpc64le-unknown
-               ;;
-       ppc64le-* | powerpc64little-*)
-               basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       ps2)
-               basic_machine=i386-ibm
-               ;;
-       pw32)
-               basic_machine=i586-unknown
-               os=-pw32
-               ;;
-       rdos | rdos64)
-               basic_machine=x86_64-pc
-               os=-rdos
-               ;;
-       rdos32)
-               basic_machine=i386-pc
-               os=-rdos
-               ;;
-       rom68k)
-               basic_machine=m68k-rom68k
-               os=-coff
-               ;;
-       rm[46]00)
-               basic_machine=mips-siemens
-               ;;
-       rtpc | rtpc-*)
-               basic_machine=romp-ibm
-               ;;
-       s390 | s390-*)
-               basic_machine=s390-ibm
-               ;;
-       s390x | s390x-*)
-               basic_machine=s390x-ibm
-               ;;
-       sa29200)
-               basic_machine=a29k-amd
-               os=-udi
-               ;;
-       sb1)
-               basic_machine=mipsisa64sb1-unknown
-               ;;
-       sb1el)
-               basic_machine=mipsisa64sb1el-unknown
-               ;;
-       sde)
-               basic_machine=mipsisa32-sde
-               os=-elf
-               ;;
-       sei)
-               basic_machine=mips-sei
-               os=-seiux
-               ;;
-       sequent)
-               basic_machine=i386-sequent
-               ;;
-       sh)
-               basic_machine=sh-hitachi
-               os=-hms
-               ;;
-       sh5el)
-               basic_machine=sh5le-unknown
-               ;;
-       sh64)
-               basic_machine=sh64-unknown
-               ;;
-       sparclite-wrs | simso-wrs)
-               basic_machine=sparclite-wrs
-               os=-vxworks
-               ;;
-       sps7)
-               basic_machine=m68k-bull
-               os=-sysv2
-               ;;
-       spur)
-               basic_machine=spur-unknown
-               ;;
-       st2000)
-               basic_machine=m68k-tandem
-               ;;
-       stratus)
-               basic_machine=i860-stratus
-               os=-sysv4
-               ;;
-       strongarm-* | thumb-*)
-               basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       sun2)
-               basic_machine=m68000-sun
-               ;;
-       sun2os3)
-               basic_machine=m68000-sun
-               os=-sunos3
-               ;;
-       sun2os4)
-               basic_machine=m68000-sun
-               os=-sunos4
-               ;;
-       sun3os3)
-               basic_machine=m68k-sun
-               os=-sunos3
-               ;;
-       sun3os4)
-               basic_machine=m68k-sun
-               os=-sunos4
-               ;;
-       sun4os3)
-               basic_machine=sparc-sun
-               os=-sunos3
-               ;;
-       sun4os4)
-               basic_machine=sparc-sun
-               os=-sunos4
-               ;;
-       sun4sol2)
-               basic_machine=sparc-sun
-               os=-solaris2
-               ;;
-       sun3 | sun3-*)
-               basic_machine=m68k-sun
-               ;;
-       sun4)
-               basic_machine=sparc-sun
-               ;;
-       sun386 | sun386i | roadrunner)
-               basic_machine=i386-sun
-               ;;
-       sv1)
-               basic_machine=sv1-cray
-               os=-unicos
-               ;;
-       symmetry)
-               basic_machine=i386-sequent
-               os=-dynix
-               ;;
-       t3e)
-               basic_machine=alphaev5-cray
-               os=-unicos
-               ;;
-       t90)
-               basic_machine=t90-cray
-               os=-unicos
-               ;;
-       tile*)
-               basic_machine=$basic_machine-unknown
-               os=-linux-gnu
-               ;;
-       tx39)
-               basic_machine=mipstx39-unknown
-               ;;
-       tx39el)
-               basic_machine=mipstx39el-unknown
-               ;;
-       toad1)
-               basic_machine=pdp10-xkl
-               os=-tops20
-               ;;
-       tower | tower-32)
-               basic_machine=m68k-ncr
-               ;;
-       tpf)
-               basic_machine=s390x-ibm
-               os=-tpf
-               ;;
-       udi29k)
-               basic_machine=a29k-amd
-               os=-udi
-               ;;
-       ultra3)
-               basic_machine=a29k-nyu
-               os=-sym1
-               ;;
-       v810 | necv810)
-               basic_machine=v810-nec
-               os=-none
-               ;;
-       vaxv)
-               basic_machine=vax-dec
-               os=-sysv
-               ;;
-       vms)
-               basic_machine=vax-dec
-               os=-vms
-               ;;
-       vpp*|vx|vx-*)
-               basic_machine=f301-fujitsu
-               ;;
-       vxworks960)
-               basic_machine=i960-wrs
-               os=-vxworks
-               ;;
-       vxworks68)
-               basic_machine=m68k-wrs
-               os=-vxworks
-               ;;
-       vxworks29k)
-               basic_machine=a29k-wrs
-               os=-vxworks
-               ;;
-       w65*)
-               basic_machine=w65-wdc
-               os=-none
-               ;;
-       w89k-*)
-               basic_machine=hppa1.1-winbond
-               os=-proelf
-               ;;
-       xbox)
-               basic_machine=i686-pc
-               os=-mingw32
-               ;;
-       xps | xps100)
-               basic_machine=xps100-honeywell
-               ;;
-       xscale-* | xscalee[bl]-*)
-               basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
-               ;;
-       ymp)
-               basic_machine=ymp-cray
-               os=-unicos
-               ;;
-       z8k-*-coff)
-               basic_machine=z8k-unknown
-               os=-sim
-               ;;
-       z80-*-coff)
-               basic_machine=z80-unknown
-               os=-sim
-               ;;
-       none)
-               basic_machine=none-none
-               os=-none
-               ;;
-
-# Here we handle the default manufacturer of certain CPU types.  It is in
-# some cases the only manufacturer, in others, it is the most popular.
-       w89k)
-               basic_machine=hppa1.1-winbond
-               ;;
-       op50n)
-               basic_machine=hppa1.1-oki
-               ;;
-       op60c)
-               basic_machine=hppa1.1-oki
-               ;;
-       romp)
-               basic_machine=romp-ibm
-               ;;
-       mmix)
-               basic_machine=mmix-knuth
-               ;;
-       rs6000)
-               basic_machine=rs6000-ibm
-               ;;
-       vax)
-               basic_machine=vax-dec
-               ;;
-       pdp10)
-               # there are many clones, so DEC is not a safe bet
-               basic_machine=pdp10-unknown
-               ;;
-       pdp11)
-               basic_machine=pdp11-dec
-               ;;
-       we32k)
-               basic_machine=we32k-att
-               ;;
-       sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
-               basic_machine=sh-unknown
-               ;;
-       sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
-               basic_machine=sparc-sun
-               ;;
-       cydra)
-               basic_machine=cydra-cydrome
-               ;;
-       orion)
-               basic_machine=orion-highlevel
-               ;;
-       orion105)
-               basic_machine=clipper-highlevel
-               ;;
-       mac | mpw | mac-mpw)
-               basic_machine=m68k-apple
-               ;;
-       pmac | pmac-mpw)
-               basic_machine=powerpc-apple
-               ;;
-       *-unknown)
-               # Make sure to match an already-canonicalized machine name.
-               ;;
-       *)
-               echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
-               exit 1
-               ;;
-esac
-
-# Here we canonicalize certain aliases for manufacturers.
-case $basic_machine in
-       *-digital*)
-               basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
-               ;;
-       *-commodore*)
-               basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
-               ;;
-       *)
-               ;;
-esac
-
-# Decode manufacturer-specific aliases for certain operating systems.
-
-if [ x"$os" != x"" ]
-then
-case $os in
-       # First match some system type aliases
-       # that might get confused with valid system types.
-       # -solaris* is a basic system type, with this one exception.
-       -auroraux)
-               os=-auroraux
-               ;;
-       -solaris1 | -solaris1.*)
-               os=`echo $os | sed -e 's|solaris1|sunos4|'`
-               ;;
-       -solaris)
-               os=-solaris2
-               ;;
-       -svr4*)
-               os=-sysv4
-               ;;
-       -unixware*)
-               os=-sysv4.2uw
-               ;;
-       -gnu/linux*)
-               os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
-               ;;
-       # First accept the basic system types.
-       # The portable systems comes first.
-       # Each alternative MUST END IN A *, to match a version number.
-       # -sysv* is not here because it comes later, after sysvr4.
-       -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
-             | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
-             | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
-             | -sym* | -kopensolaris* | -plan9* \
-             | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
-             | -aos* | -aros* \
-             | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
-             | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
-             | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
-             | -bitrig* | -openbsd* | -solidbsd* \
-             | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
-             | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
-             | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
-             | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
-             | -chorusos* | -chorusrdb* | -cegcc* \
-             | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
-             | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
-             | -linux-newlib* | -linux-musl* | -linux-uclibc* \
-             | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \
-             | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
-             | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
-             | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
-             | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
-             | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
-             | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
-             | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*)
-       # Remember, each alternative MUST END IN *, to match a version number.
-               ;;
-       -qnx*)
-               case $basic_machine in
-                   x86-* | i*86-*)
-                       ;;
-                   *)
-                       os=-nto$os
-                       ;;
-               esac
-               ;;
-       -nto-qnx*)
-               ;;
-       -nto*)
-               os=`echo $os | sed -e 's|nto|nto-qnx|'`
-               ;;
-       -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
-             | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
-             | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
-               ;;
-       -mac*)
-               os=`echo $os | sed -e 's|mac|macos|'`
-               ;;
-       -linux-dietlibc)
-               os=-linux-dietlibc
-               ;;
-       -linux*)
-               os=`echo $os | sed -e 's|linux|linux-gnu|'`
-               ;;
-       -sunos5*)
-               os=`echo $os | sed -e 's|sunos5|solaris2|'`
-               ;;
-       -sunos6*)
-               os=`echo $os | sed -e 's|sunos6|solaris3|'`
-               ;;
-       -opened*)
-               os=-openedition
-               ;;
-       -os400*)
-               os=-os400
-               ;;
-       -wince*)
-               os=-wince
-               ;;
-       -osfrose*)
-               os=-osfrose
-               ;;
-       -osf*)
-               os=-osf
-               ;;
-       -utek*)
-               os=-bsd
-               ;;
-       -dynix*)
-               os=-bsd
-               ;;
-       -acis*)
-               os=-aos
-               ;;
-       -atheos*)
-               os=-atheos
-               ;;
-       -syllable*)
-               os=-syllable
-               ;;
-       -386bsd)
-               os=-bsd
-               ;;
-       -ctix* | -uts*)
-               os=-sysv
-               ;;
-       -nova*)
-               os=-rtmk-nova
-               ;;
-       -ns2 )
-               os=-nextstep2
-               ;;
-       -nsk*)
-               os=-nsk
-               ;;
-       # Preserve the version number of sinix5.
-       -sinix5.*)
-               os=`echo $os | sed -e 's|sinix|sysv|'`
-               ;;
-       -sinix*)
-               os=-sysv4
-               ;;
-       -tpf*)
-               os=-tpf
-               ;;
-       -triton*)
-               os=-sysv3
-               ;;
-       -oss*)
-               os=-sysv3
-               ;;
-       -svr4)
-               os=-sysv4
-               ;;
-       -svr3)
-               os=-sysv3
-               ;;
-       -sysvr4)
-               os=-sysv4
-               ;;
-       # This must come after -sysvr4.
-       -sysv*)
-               ;;
-       -ose*)
-               os=-ose
-               ;;
-       -es1800*)
-               os=-ose
-               ;;
-       -xenix)
-               os=-xenix
-               ;;
-       -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
-               os=-mint
-               ;;
-       -aros*)
-               os=-aros
-               ;;
-       -zvmoe)
-               os=-zvmoe
-               ;;
-       -dicos*)
-               os=-dicos
-               ;;
-       -nacl*)
-               ;;
-       -none)
-               ;;
-       *)
-               # Get rid of the `-' at the beginning of $os.
-               os=`echo $os | sed 's/[^-]*-//'`
-               echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
-               exit 1
-               ;;
-esac
-else
-
-# Here we handle the default operating systems that come with various machines.
-# The value should be what the vendor currently ships out the door with their
-# machine or put another way, the most popular os provided with the machine.
-
-# Note that if you're going to try to match "-MANUFACTURER" here (say,
-# "-sun"), then you have to tell the case statement up towards the top
-# that MANUFACTURER isn't an operating system.  Otherwise, code above
-# will signal an error saying that MANUFACTURER isn't an operating
-# system, and we'll never get to this point.
-
-case $basic_machine in
-       score-*)
-               os=-elf
-               ;;
-       spu-*)
-               os=-elf
-               ;;
-       *-acorn)
-               os=-riscix1.2
-               ;;
-       arm*-rebel)
-               os=-linux
-               ;;
-       arm*-semi)
-               os=-aout
-               ;;
-       c4x-* | tic4x-*)
-               os=-coff
-               ;;
-       c8051-*)
-               os=-elf
-               ;;
-       hexagon-*)
-               os=-elf
-               ;;
-       tic54x-*)
-               os=-coff
-               ;;
-       tic55x-*)
-               os=-coff
-               ;;
-       tic6x-*)
-               os=-coff
-               ;;
-       # This must come before the *-dec entry.
-       pdp10-*)
-               os=-tops20
-               ;;
-       pdp11-*)
-               os=-none
-               ;;
-       *-dec | vax-*)
-               os=-ultrix4.2
-               ;;
-       m68*-apollo)
-               os=-domain
-               ;;
-       i386-sun)
-               os=-sunos4.0.2
-               ;;
-       m68000-sun)
-               os=-sunos3
-               ;;
-       m68*-cisco)
-               os=-aout
-               ;;
-       mep-*)
-               os=-elf
-               ;;
-       mips*-cisco)
-               os=-elf
-               ;;
-       mips*-*)
-               os=-elf
-               ;;
-       or32-*)
-               os=-coff
-               ;;
-       *-tti)  # must be before sparc entry or we get the wrong os.
-               os=-sysv3
-               ;;
-       sparc-* | *-sun)
-               os=-sunos4.1.1
-               ;;
-       *-be)
-               os=-beos
-               ;;
-       *-haiku)
-               os=-haiku
-               ;;
-       *-ibm)
-               os=-aix
-               ;;
-       *-knuth)
-               os=-mmixware
-               ;;
-       *-wec)
-               os=-proelf
-               ;;
-       *-winbond)
-               os=-proelf
-               ;;
-       *-oki)
-               os=-proelf
-               ;;
-       *-hp)
-               os=-hpux
-               ;;
-       *-hitachi)
-               os=-hiux
-               ;;
-       i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
-               os=-sysv
-               ;;
-       *-cbm)
-               os=-amigaos
-               ;;
-       *-dg)
-               os=-dgux
-               ;;
-       *-dolphin)
-               os=-sysv3
-               ;;
-       m68k-ccur)
-               os=-rtu
-               ;;
-       m88k-omron*)
-               os=-luna
-               ;;
-       *-next )
-               os=-nextstep
-               ;;
-       *-sequent)
-               os=-ptx
-               ;;
-       *-crds)
-               os=-unos
-               ;;
-       *-ns)
-               os=-genix
-               ;;
-       i370-*)
-               os=-mvs
-               ;;
-       *-next)
-               os=-nextstep3
-               ;;
-       *-gould)
-               os=-sysv
-               ;;
-       *-highlevel)
-               os=-bsd
-               ;;
-       *-encore)
-               os=-bsd
-               ;;
-       *-sgi)
-               os=-irix
-               ;;
-       *-siemens)
-               os=-sysv4
-               ;;
-       *-masscomp)
-               os=-rtu
-               ;;
-       f30[01]-fujitsu | f700-fujitsu)
-               os=-uxpv
-               ;;
-       *-rom68k)
-               os=-coff
-               ;;
-       *-*bug)
-               os=-coff
-               ;;
-       *-apple)
-               os=-macos
-               ;;
-       *-atari*)
-               os=-mint
-               ;;
-       *)
-               os=-none
-               ;;
-esac
-fi
-
-# Here we handle the case where we know the os, and the CPU type, but not the
-# manufacturer.  We pick the logical manufacturer.
-vendor=unknown
-case $basic_machine in
-       *-unknown)
-               case $os in
-                       -riscix*)
-                               vendor=acorn
-                               ;;
-                       -sunos*)
-                               vendor=sun
-                               ;;
-                       -cnk*|-aix*)
-                               vendor=ibm
-                               ;;
-                       -beos*)
-                               vendor=be
-                               ;;
-                       -hpux*)
-                               vendor=hp
-                               ;;
-                       -mpeix*)
-                               vendor=hp
-                               ;;
-                       -hiux*)
-                               vendor=hitachi
-                               ;;
-                       -unos*)
-                               vendor=crds
-                               ;;
-                       -dgux*)
-                               vendor=dg
-                               ;;
-                       -luna*)
-                               vendor=omron
-                               ;;
-                       -genix*)
-                               vendor=ns
-                               ;;
-                       -mvs* | -opened*)
-                               vendor=ibm
-                               ;;
-                       -os400*)
-                               vendor=ibm
-                               ;;
-                       -ptx*)
-                               vendor=sequent
-                               ;;
-                       -tpf*)
-                               vendor=ibm
-                               ;;
-                       -vxsim* | -vxworks* | -windiss*)
-                               vendor=wrs
-                               ;;
-                       -aux*)
-                               vendor=apple
-                               ;;
-                       -hms*)
-                               vendor=hitachi
-                               ;;
-                       -mpw* | -macos*)
-                               vendor=apple
-                               ;;
-                       -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
-                               vendor=atari
-                               ;;
-                       -vos*)
-                               vendor=stratus
-                               ;;
-               esac
-               basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
-               ;;
-esac
-
-echo $basic_machine$os
-exit
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:
index b16e567..783de81 100755 (executable)
--- a/configure
+++ b/configure
@@ -1,8 +1,8 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for groff 1.22.3.
+# Generated by GNU Autoconf 2.69 for GNU Troff 1.22.4.
 #
-# Report bugs to <bug-groff@gnu.org>.
+# Report bugs to <http://savannah.gnu.org/bugs/?group=groff>.
 #
 #
 # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
@@ -266,11 +266,11 @@ fi
     $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
     $as_echo "$0: be upgraded to zsh 4.3.4 or later."
   else
-    $as_echo "$0: Please tell bug-autoconf@gnu.org and bug-groff@gnu.org
-$0: about your system, including any error possibly output
-$0: before this message. Then install a modern shell, or
-$0: manually run the script under such a shell if you do
-$0: have one."
+    $as_echo "$0: Please tell bug-autoconf@gnu.org and
+$0: http://savannah.gnu.org/bugs/?group=groff about your
+$0: system, including any error possibly output before this
+$0: message. Then install a modern shell, or manually run
+$0: the script under such a shell if you do have one."
   fi
   exit 1
 fi
@@ -578,12 +578,12 @@ MFLAGS=
 MAKEFLAGS=
 
 # Identity of this package.
-PACKAGE_NAME='groff'
-PACKAGE_TARNAME='groff-1.22.3'
-PACKAGE_VERSION='1.22.3'
-PACKAGE_STRING='groff 1.22.3'
-PACKAGE_BUGREPORT='bug-groff@gnu.org'
-PACKAGE_URL=''
+PACKAGE_NAME='GNU Troff'
+PACKAGE_TARNAME='groff'
+PACKAGE_VERSION='1.22.4'
+PACKAGE_STRING='GNU Troff 1.22.4'
+PACKAGE_BUGREPORT='http://savannah.gnu.org/bugs/?group=groff'
+PACKAGE_URL='http://www.gnu.org/software/groff/'
 
 ac_unique_file="src/roff/groff/groff.cpp"
 # Factoring default headers for most tests.
@@ -622,10 +622,49 @@ ac_includes_default="\
 # include <unistd.h>
 #endif"
 
-ac_header_list=
 ac_func_list=
-ac_subst_vars='LTLIBOBJS
-GLIBC21
+ac_header_list=
+ac_config_libobj_dir=lib
+ac_subst_vars='gltests_LTLIBOBJS
+gltests_LIBOBJS
+gl_LTLIBOBJS
+gl_LIBOBJS
+am__EXEEXT_FALSE
+am__EXEEXT_TRUE
+LTLIBOBJS
+HAVE_TEXI2DVI_FALSE
+HAVE_TEXI2DVI_TRUE
+HAVE_PDFTOOLS_FALSE
+HAVE_PDFTOOLS_TRUE
+INSTALL_SHIPPED_HTML_FALSE
+INSTALL_SHIPPED_HTML_TRUE
+BUILD_EXAMPLES_FALSE
+BUILD_EXAMPLES_TRUE
+BUILD_OTHERDOC_FALSE
+BUILD_OTHERDOC_TRUE
+BUILD_PDFEXAMPLES_FALSE
+BUILD_PDFEXAMPLES_TRUE
+BUILD_PDFDOC_FALSE
+BUILD_PDFDOC_TRUE
+BUILD_HTMLEXAMPLES_FALSE
+BUILD_HTMLEXAMPLES_TRUE
+BUILD_HTML_FALSE
+BUILD_HTML_TRUE
+BUILD_INFODOC_FALSE
+BUILD_INFODOC_TRUE
+USEPROGRAMPREFIX_FALSE
+USEPROGRAMPREFIX_TRUE
+MAKE_DONT_HAVE_RM_FALSE
+MAKE_DONT_HAVE_RM_TRUE
+WITHOUT_X11_FALSE
+WITHOUT_X11_TRUE
+BUILD_WINSCRIPTS_FALSE
+BUILD_WINSCRIPTS_TRUE
+groff_have_urw_fonts
+BASH_PROG
+HAVE_TEST_EF_OPTION
+DIFF_PROG
+GDIFF
 pnmtops_nosetpage
 make_uninstall_pdfexamples
 make_install_pdfexamples
@@ -650,37 +689,37 @@ ac_ct_GHOSTSCRIPT
 GHOSTSCRIPT
 ALT_GHOSTSCRIPT_PROGS
 GROFF_PATH_SEPARATOR
+compatibility_wrappers
 tmac_wrap
 sys_tmac_prefix
 g
 PAGE
 BROKEN_SPOOLER_FLAGS
+urwfontsdir
 LIBOBJS
 LIBEXT
 LTLIBICONV
 LIBICONV
 CXXCPP
-host_os
-host_vendor
-host_cpu
-host
-build_os
-build_vendor
-build_cpu
-build
 LIBM
 LIBC
 SH_SCRIPT_SED_CMD
+PDFIMAGES
+PDFFONTS
+PDFINFO
+UCHARDET_LIBS
+UCHARDET_CFLAGS
+PKG_CONFIG_LIBDIR
+PKG_CONFIG_PATH
+PKG_CONFIG
+XPMTOPPM
 LN_S
-INSTALL_DATA
-INSTALL_SCRIPT
-INSTALL_PROGRAM
 INSTALL_INFO
-RANLIB
+PROG_TEXI2DVI
+makeinfo_version_numeric
 make_uninstall_infodoc
 make_install_infodoc
 make_infodoc
-MAKEINFO
 make_uninstall_examples
 make_install_examples
 make_examples
@@ -696,7 +735,6 @@ PSPRINT
 LPQ
 LP
 LPR
-AWK
 PERL_VERSION
 SED
 PERL
@@ -710,14 +748,710 @@ X_LIBS
 X_PRE_LIBS
 X_CFLAGS
 XMKMF
-make_uninstall_winscripts
-make_install_winscripts
 make_winscripts
 OTHERDEVDIRS
 TTYDEVDIRS
+LIBGNU_LTLIBDEPS
+LIBGNU_LIBDEPS
+gltests_WITNESS
+REPLACE_TOWLOWER
+REPLACE_ISWCNTRL
+HAVE_WCTYPE_H
+NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H
+NEXT_WCTYPE_H
+HAVE_ISWCNTRL
+REPLACE_ISWBLANK
+HAVE_WCTRANS_T
+HAVE_WCTYPE_T
+HAVE_ISWBLANK
+GNULIB_TOWCTRANS
+GNULIB_WCTRANS
+GNULIB_ISWCTYPE
+GNULIB_WCTYPE
+GNULIB_ISWBLANK
+HAVE_CRTDEFS_H
+HAVE_WINT_T
+NEXT_AS_FIRST_DIRECTIVE_WCHAR_H
+NEXT_WCHAR_H
+REPLACE_WCSFTIME
+REPLACE_WCSWIDTH
+REPLACE_WCWIDTH
+REPLACE_WCSNRTOMBS
+REPLACE_WCSRTOMBS
+REPLACE_WCRTOMB
+REPLACE_MBSNRTOWCS
+REPLACE_MBSRTOWCS
+REPLACE_MBRLEN
+REPLACE_MBRTOWC
+REPLACE_MBSINIT
+REPLACE_WCTOB
+REPLACE_BTOWC
+REPLACE_MBSTATE_T
+HAVE_DECL_WCWIDTH
+HAVE_DECL_WCTOB
+HAVE_WCSFTIME
+HAVE_WCSWIDTH
+HAVE_WCSTOK
+HAVE_WCSSTR
+HAVE_WCSPBRK
+HAVE_WCSSPN
+HAVE_WCSCSPN
+HAVE_WCSRCHR
+HAVE_WCSCHR
+HAVE_WCSDUP
+HAVE_WCSXFRM
+HAVE_WCSCOLL
+HAVE_WCSNCASECMP
+HAVE_WCSCASECMP
+HAVE_WCSNCMP
+HAVE_WCSCMP
+HAVE_WCSNCAT
+HAVE_WCSCAT
+HAVE_WCPNCPY
+HAVE_WCSNCPY
+HAVE_WCPCPY
+HAVE_WCSCPY
+HAVE_WCSNLEN
+HAVE_WCSLEN
+HAVE_WMEMSET
+HAVE_WMEMMOVE
+HAVE_WMEMCPY
+HAVE_WMEMCMP
+HAVE_WMEMCHR
+HAVE_WCSNRTOMBS
+HAVE_WCSRTOMBS
+HAVE_WCRTOMB
+HAVE_MBSNRTOWCS
+HAVE_MBSRTOWCS
+HAVE_MBRLEN
+HAVE_MBRTOWC
+HAVE_MBSINIT
+HAVE_BTOWC
+GNULIB_WCSFTIME
+GNULIB_WCSWIDTH
+GNULIB_WCSTOK
+GNULIB_WCSSTR
+GNULIB_WCSPBRK
+GNULIB_WCSSPN
+GNULIB_WCSCSPN
+GNULIB_WCSRCHR
+GNULIB_WCSCHR
+GNULIB_WCSDUP
+GNULIB_WCSXFRM
+GNULIB_WCSCOLL
+GNULIB_WCSNCASECMP
+GNULIB_WCSCASECMP
+GNULIB_WCSNCMP
+GNULIB_WCSCMP
+GNULIB_WCSNCAT
+GNULIB_WCSCAT
+GNULIB_WCPNCPY
+GNULIB_WCSNCPY
+GNULIB_WCPCPY
+GNULIB_WCSCPY
+GNULIB_WCSNLEN
+GNULIB_WCSLEN
+GNULIB_WMEMSET
+GNULIB_WMEMMOVE
+GNULIB_WMEMCPY
+GNULIB_WMEMCMP
+GNULIB_WMEMCHR
+GNULIB_WCWIDTH
+GNULIB_WCSNRTOMBS
+GNULIB_WCSRTOMBS
+GNULIB_WCRTOMB
+GNULIB_MBSNRTOWCS
+GNULIB_MBSRTOWCS
+GNULIB_MBRLEN
+GNULIB_MBRTOWC
+GNULIB_MBSINIT
+GNULIB_WCTOB
+GNULIB_BTOWC
+LIBUNISTRING_COMPILE_UNIWIDTH_WIDTH_FALSE
+LIBUNISTRING_COMPILE_UNIWIDTH_WIDTH_TRUE
+LIBUNISTRING_UNIWIDTH_H
+LIBUNISTRING_UNITYPES_H
+WINDOWS_STAT_INODES
+WINDOWS_64_BIT_OFF_T
+NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H
+NEXT_SYS_TYPES_H
+NEXT_AS_FIRST_DIRECTIVE_STRING_H
+NEXT_STRING_H
+NEXT_AS_FIRST_DIRECTIVE_STDIO_H
+NEXT_STDIO_H
+GL_GENERATE_STDINT_H_FALSE
+GL_GENERATE_STDINT_H_TRUE
+STDINT_H
+HAVE_SYS_INTTYPES_H
+HAVE_SYS_BITYPES_H
+HAVE_C99_STDINT_H
+WINT_T_SUFFIX
+WCHAR_T_SUFFIX
+SIG_ATOMIC_T_SUFFIX
+SIZE_T_SUFFIX
+PTRDIFF_T_SUFFIX
+HAVE_SIGNED_WINT_T
+HAVE_SIGNED_WCHAR_T
+HAVE_SIGNED_SIG_ATOMIC_T
+BITSIZEOF_WINT_T
+BITSIZEOF_WCHAR_T
+BITSIZEOF_SIG_ATOMIC_T
+BITSIZEOF_SIZE_T
+BITSIZEOF_PTRDIFF_T
+HAVE_STDINT_H
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H
+NEXT_STDINT_H
+HAVE_SYS_TYPES_H
+HAVE_INTTYPES_H
+HAVE_WCHAR_H
+HAVE_UNSIGNED_LONG_LONG_INT
+HAVE_LONG_LONG_INT
+NEXT_AS_FIRST_DIRECTIVE_STDDEF_H
+NEXT_STDDEF_H
+GL_GENERATE_STDDEF_H_FALSE
+GL_GENERATE_STDDEF_H_TRUE
+STDDEF_H
+HAVE_WCHAR_T
+HAVE_MAX_ALIGN_T
+REPLACE_NULL
+UNDEFINE_STRTOK_R
+REPLACE_STRSIGNAL
+REPLACE_STRERROR_R
+REPLACE_STRERROR
+REPLACE_STRTOK_R
+REPLACE_STRCASESTR
+REPLACE_STRSTR
+REPLACE_STRNLEN
+REPLACE_STRNDUP
+REPLACE_STRNCAT
+REPLACE_STRDUP
+REPLACE_STRCHRNUL
+REPLACE_STPNCPY
+REPLACE_MEMMEM
+REPLACE_MEMCHR
+HAVE_STRVERSCMP
+HAVE_DECL_STRSIGNAL
+HAVE_DECL_STRERROR_R
+HAVE_DECL_STRTOK_R
+HAVE_STRCASESTR
+HAVE_STRSEP
+HAVE_STRPBRK
+HAVE_DECL_STRNLEN
+HAVE_DECL_STRNDUP
+HAVE_DECL_STRDUP
+HAVE_STRCHRNUL
+HAVE_STPNCPY
+HAVE_STPCPY
+HAVE_RAWMEMCHR
+HAVE_DECL_MEMRCHR
+HAVE_MEMPCPY
+HAVE_DECL_MEMMEM
+HAVE_MEMCHR
+HAVE_FFSLL
+HAVE_FFSL
+HAVE_EXPLICIT_BZERO
+HAVE_MBSLEN
+GNULIB_STRVERSCMP
+GNULIB_STRSIGNAL
+GNULIB_STRERROR_R
+GNULIB_STRERROR
+GNULIB_MBSTOK_R
+GNULIB_MBSSEP
+GNULIB_MBSSPN
+GNULIB_MBSPBRK
+GNULIB_MBSCSPN
+GNULIB_MBSCASESTR
+GNULIB_MBSPCASECMP
+GNULIB_MBSNCASECMP
+GNULIB_MBSCASECMP
+GNULIB_MBSSTR
+GNULIB_MBSRCHR
+GNULIB_MBSCHR
+GNULIB_MBSNLEN
+GNULIB_MBSLEN
+GNULIB_STRTOK_R
+GNULIB_STRCASESTR
+GNULIB_STRSTR
+GNULIB_STRSEP
+GNULIB_STRPBRK
+GNULIB_STRNLEN
+GNULIB_STRNDUP
+GNULIB_STRNCAT
+GNULIB_STRDUP
+GNULIB_STRCHRNUL
+GNULIB_STPNCPY
+GNULIB_STPCPY
+GNULIB_RAWMEMCHR
+GNULIB_MEMRCHR
+GNULIB_MEMPCPY
+GNULIB_MEMMEM
+GNULIB_MEMCHR
+GNULIB_FFSLL
+GNULIB_FFSL
+GNULIB_EXPLICIT_BZERO
+NEXT_AS_FIRST_DIRECTIVE_MATH_H
+NEXT_MATH_H
+LOCALCHARSET_TESTS_ENVIRONMENT
+GLIBC21
+GL_GENERATE_LIMITS_H_FALSE
+GL_GENERATE_LIMITS_H_TRUE
+LIMITS_H
+NEXT_AS_FIRST_DIRECTIVE_LIMITS_H
+NEXT_LIMITS_H
+HOST_CPU_C_ABI
+HOST_CPU
+REPLACE_TRUNCL
+REPLACE_TRUNCF
+REPLACE_TRUNC
+REPLACE_TANHF
+REPLACE_TANF
+REPLACE_SQRTL
+REPLACE_SQRTF
+REPLACE_SINHF
+REPLACE_SINF
+REPLACE_SIGNBIT_USING_GCC
+REPLACE_SIGNBIT
+REPLACE_ROUNDL
+REPLACE_ROUNDF
+REPLACE_ROUND
+REPLACE_REMAINDERL
+REPLACE_REMAINDERF
+REPLACE_REMAINDER
+REPLACE_NAN
+REPLACE_MODFL
+REPLACE_MODFF
+REPLACE_MODF
+REPLACE_LOGBL
+REPLACE_LOGBF
+REPLACE_LOGB
+REPLACE_LOG2L
+REPLACE_LOG2F
+REPLACE_LOG2
+REPLACE_LOG1PL
+REPLACE_LOG1PF
+REPLACE_LOG1P
+REPLACE_LOG10L
+REPLACE_LOG10F
+REPLACE_LOG10
+REPLACE_LOGL
+REPLACE_LOGF
+REPLACE_LOG
+REPLACE_LDEXPL
+REPLACE_ISNAN
+REPLACE_ISINF
+REPLACE_ISFINITE
+REPLACE_ILOGBL
+REPLACE_ILOGBF
+REPLACE_ILOGB
+REPLACE_HYPOTL
+REPLACE_HYPOTF
+REPLACE_HYPOT
+REPLACE_HUGE_VAL
+REPLACE_FREXPL
+REPLACE_FREXP
+REPLACE_FREXPF
+REPLACE_FMODL
+REPLACE_FMODF
+REPLACE_FMOD
+REPLACE_FMAL
+REPLACE_FMAF
+REPLACE_FMA
+REPLACE_FLOORL
+REPLACE_FLOORF
+REPLACE_FLOOR
+REPLACE_FABSL
+REPLACE_EXP2L
+REPLACE_EXP2
+REPLACE_EXPM1F
+REPLACE_EXPM1
+REPLACE_EXPF
+REPLACE_COSHF
+REPLACE_COSF
+REPLACE_CEILL
+REPLACE_CEILF
+REPLACE_CEIL
+REPLACE_CBRTL
+REPLACE_CBRTF
+REPLACE_ATAN2F
+REPLACE_ATANF
+REPLACE_ASINF
+REPLACE_ACOSF
+HAVE_DECL_TRUNCL
+HAVE_DECL_TRUNCF
+HAVE_DECL_TRUNC
+HAVE_DECL_TANL
+HAVE_DECL_SQRTL
+HAVE_DECL_SINL
+HAVE_DECL_ROUNDL
+HAVE_DECL_ROUNDF
+HAVE_DECL_ROUND
+HAVE_DECL_RINTF
+HAVE_DECL_REMAINDERL
+HAVE_DECL_REMAINDER
+HAVE_DECL_LOGB
+HAVE_DECL_LOG2L
+HAVE_DECL_LOG2F
+HAVE_DECL_LOG2
+HAVE_DECL_LOG10L
+HAVE_DECL_LOGL
+HAVE_DECL_LDEXPL
+HAVE_DECL_FREXPL
+HAVE_DECL_FLOORL
+HAVE_DECL_FLOORF
+HAVE_DECL_EXPM1L
+HAVE_DECL_EXP2L
+HAVE_DECL_EXP2F
+HAVE_DECL_EXP2
+HAVE_DECL_EXPL
+HAVE_DECL_COSL
+HAVE_DECL_COPYSIGNF
+HAVE_DECL_CEILL
+HAVE_DECL_CEILF
+HAVE_DECL_CBRTL
+HAVE_DECL_CBRTF
+HAVE_DECL_ATANL
+HAVE_DECL_ASINL
+HAVE_DECL_ACOSL
+HAVE_TANHF
+HAVE_TANL
+HAVE_TANF
+HAVE_SQRTL
+HAVE_SQRTF
+HAVE_SINHF
+HAVE_SINL
+HAVE_SINF
+HAVE_RINTL
+HAVE_RINT
+HAVE_REMAINDERF
+HAVE_REMAINDER
+HAVE_POWF
+HAVE_MODFL
+HAVE_MODFF
+HAVE_LOGBL
+HAVE_LOGBF
+HAVE_LOG1PL
+HAVE_LOG1PF
+HAVE_LOG1P
+HAVE_LOG10L
+HAVE_LOG10F
+HAVE_LOGL
+HAVE_LOGF
+HAVE_LDEXPF
+HAVE_ISNANL
+HAVE_ISNAND
+HAVE_ISNANF
+HAVE_ILOGBL
+HAVE_ILOGBF
+HAVE_ILOGB
+HAVE_HYPOTL
+HAVE_HYPOTF
+HAVE_FREXPF
+HAVE_FMODL
+HAVE_FMODF
+HAVE_FMAL
+HAVE_FMAF
+HAVE_FMA
+HAVE_FABSL
+HAVE_FABSF
+HAVE_EXPM1F
+HAVE_EXPM1
+HAVE_EXPL
+HAVE_EXPF
+HAVE_COSHF
+HAVE_COSL
+HAVE_COSF
+HAVE_COPYSIGNL
+HAVE_COPYSIGN
+HAVE_CBRTL
+HAVE_CBRTF
+HAVE_CBRT
+HAVE_ATAN2F
+HAVE_ATANL
+HAVE_ATANF
+HAVE_ASINL
+HAVE_ASINF
+HAVE_ACOSL
+HAVE_ACOSF
+GNULIB_TRUNCL
+GNULIB_TRUNCF
+GNULIB_TRUNC
+GNULIB_TANHF
+GNULIB_TANL
+GNULIB_TANF
+GNULIB_SQRTL
+GNULIB_SQRTF
+GNULIB_SINHF
+GNULIB_SINL
+GNULIB_SINF
+GNULIB_SIGNBIT
+GNULIB_ROUNDL
+GNULIB_ROUNDF
+GNULIB_ROUND
+GNULIB_RINTL
+GNULIB_RINTF
+GNULIB_RINT
+GNULIB_REMAINDERL
+GNULIB_REMAINDERF
+GNULIB_REMAINDER
+GNULIB_POWF
+GNULIB_MODFL
+GNULIB_MODFF
+GNULIB_MODF
+GNULIB_LOGBL
+GNULIB_LOGBF
+GNULIB_LOGB
+GNULIB_LOG2L
+GNULIB_LOG2F
+GNULIB_LOG2
+GNULIB_LOG1PL
+GNULIB_LOG1PF
+GNULIB_LOG1P
+GNULIB_LOG10L
+GNULIB_LOG10F
+GNULIB_LOG10
+GNULIB_LOGL
+GNULIB_LOGF
+GNULIB_LOG
+GNULIB_LDEXPL
+GNULIB_LDEXPF
+GNULIB_ISNANL
+GNULIB_ISNAND
+GNULIB_ISNANF
+GNULIB_ISNAN
+GNULIB_ISINF
+GNULIB_ISFINITE
+GNULIB_ILOGBL
+GNULIB_ILOGBF
+GNULIB_ILOGB
+GNULIB_HYPOTL
+GNULIB_HYPOTF
+GNULIB_HYPOT
+GNULIB_FREXPL
+GNULIB_FREXP
+GNULIB_FREXPF
+GNULIB_FMODL
+GNULIB_FMODF
+GNULIB_FMOD
+GNULIB_FMAL
+GNULIB_FMAF
+GNULIB_FMA
+GNULIB_FLOORL
+GNULIB_FLOORF
+GNULIB_FLOOR
+GNULIB_FABSL
+GNULIB_FABSF
+GNULIB_EXPM1L
+GNULIB_EXPM1F
+GNULIB_EXPM1
+GNULIB_EXP2L
+GNULIB_EXP2F
+GNULIB_EXP2
+GNULIB_EXPL
+GNULIB_EXPF
+GNULIB_COSHF
+GNULIB_COSL
+GNULIB_COSF
+GNULIB_COPYSIGNL
+GNULIB_COPYSIGNF
+GNULIB_COPYSIGN
+GNULIB_CEILL
+GNULIB_CEILF
+GNULIB_CEIL
+GNULIB_CBRTL
+GNULIB_CBRTF
+GNULIB_CBRT
+GNULIB_ATAN2F
+GNULIB_ATANL
+GNULIB_ATANF
+GNULIB_ASINL
+GNULIB_ASINF
+GNULIB_ACOSL
+GNULIB_ACOSF
+REPLACE_VSPRINTF
+REPLACE_VSNPRINTF
+REPLACE_VPRINTF
+REPLACE_VFPRINTF
+REPLACE_VDPRINTF
+REPLACE_VASPRINTF
+REPLACE_TMPFILE
+REPLACE_STDIO_WRITE_FUNCS
+REPLACE_STDIO_READ_FUNCS
+REPLACE_SPRINTF
+REPLACE_SNPRINTF
+REPLACE_RENAMEAT
+REPLACE_RENAME
+REPLACE_REMOVE
+REPLACE_PRINTF
+REPLACE_POPEN
+REPLACE_PERROR
+REPLACE_OBSTACK_PRINTF
+REPLACE_GETLINE
+REPLACE_GETDELIM
+REPLACE_FTELLO
+REPLACE_FTELL
+REPLACE_FSEEKO
+REPLACE_FSEEK
+REPLACE_FREOPEN
+REPLACE_FPURGE
+REPLACE_FPRINTF
+REPLACE_FOPEN
+REPLACE_FFLUSH
+REPLACE_FDOPEN
+REPLACE_FCLOSE
+REPLACE_DPRINTF
+HAVE_VDPRINTF
+HAVE_VASPRINTF
+HAVE_RENAMEAT
+HAVE_POPEN
+HAVE_PCLOSE
+HAVE_FTELLO
+HAVE_FSEEKO
+HAVE_DPRINTF
+HAVE_DECL_VSNPRINTF
+HAVE_DECL_SNPRINTF
+HAVE_DECL_OBSTACK_PRINTF
+HAVE_DECL_GETLINE
+HAVE_DECL_GETDELIM
+HAVE_DECL_FTELLO
+HAVE_DECL_FSEEKO
+HAVE_DECL_FPURGE
+GNULIB_VSPRINTF_POSIX
+GNULIB_VSNPRINTF
+GNULIB_VPRINTF_POSIX
+GNULIB_VPRINTF
+GNULIB_VFPRINTF_POSIX
+GNULIB_VFPRINTF
+GNULIB_VDPRINTF
+GNULIB_VSCANF
+GNULIB_VFSCANF
+GNULIB_VASPRINTF
+GNULIB_TMPFILE
+GNULIB_STDIO_H_SIGPIPE
+GNULIB_STDIO_H_NONBLOCKING
+GNULIB_SPRINTF_POSIX
+GNULIB_SNPRINTF
+GNULIB_SCANF
+GNULIB_RENAMEAT
+GNULIB_RENAME
+GNULIB_REMOVE
+GNULIB_PUTS
+GNULIB_PUTCHAR
+GNULIB_PUTC
+GNULIB_PRINTF_POSIX
+GNULIB_PRINTF
+GNULIB_POPEN
+GNULIB_PERROR
+GNULIB_PCLOSE
+GNULIB_OBSTACK_PRINTF_POSIX
+GNULIB_OBSTACK_PRINTF
+GNULIB_GETLINE
+GNULIB_GETDELIM
+GNULIB_GETCHAR
+GNULIB_GETC
+GNULIB_FWRITE
+GNULIB_FTELLO
+GNULIB_FTELL
+GNULIB_FSEEKO
+GNULIB_FSEEK
+GNULIB_FSCANF
+GNULIB_FREOPEN
+GNULIB_FREAD
+GNULIB_FPUTS
+GNULIB_FPUTC
+GNULIB_FPURGE
+GNULIB_FPRINTF_POSIX
+GNULIB_FPRINTF
+GNULIB_FOPEN
+GNULIB_FGETS
+GNULIB_FGETC
+GNULIB_FFLUSH
+GNULIB_FDOPEN
+GNULIB_FCLOSE
+GNULIB_DPRINTF
+HAVE_FEATURES_H
+GNULIB_OVERRIDES_WINT_T
+APPLE_UNIVERSAL_BUILD
+HAVE_SAME_LONG_DOUBLE_AS_DOUBLE
+REPLACE_ITOLD
+GL_GENERATE_FLOAT_H_FALSE
+GL_GENERATE_FLOAT_H_TRUE
+FLOAT_H
+NEXT_AS_FIRST_DIRECTIVE_FLOAT_H
+NEXT_FLOAT_H
+EOVERFLOW_VALUE
+EOVERFLOW_HIDDEN
+ENOLINK_VALUE
+ENOLINK_HIDDEN
+EMULTIHOP_VALUE
+EMULTIHOP_HIDDEN
+GL_GENERATE_ERRNO_H_FALSE
+GL_GENERATE_ERRNO_H_TRUE
+ERRNO_H
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H
+NEXT_ERRNO_H
+PRAGMA_COLUMNS
+PRAGMA_SYSTEM_HEADER
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE
+INCLUDE_NEXT
+GL_GENERATE_ALLOCA_H_FALSE
+GL_GENERATE_ALLOCA_H_TRUE
+ALLOCA_H
+ALLOCA
+GL_COND_LIBTOOL_FALSE
+GL_COND_LIBTOOL_TRUE
+host_os
+host_vendor
+host_cpu
+host
+build_os
+build_vendor
+build_cpu
+build
+RANLIB
+ARFLAGS
+AR
+am__fastdepCXX_FALSE
+am__fastdepCXX_TRUE
+CXXDEPMODE
 ac_ct_CXX
 CXXFLAGS
 CXX
+AM_BACKSLASH
+AM_DEFAULT_VERBOSITY
+AM_DEFAULT_V
+AM_V
+am__fastdepCC_FALSE
+am__fastdepCC_TRUE
+CCDEPMODE
+am__nodep
+AMDEPBACKSLASH
+AMDEP_FALSE
+AMDEP_TRUE
+am__include
+DEPDIR
+am__untar
+am__tar
+AMTAR
+am__leading_dot
+SET_MAKE
+AWK
+mkdir_p
+MKDIR_P
+INSTALL_STRIP_PROGRAM
+STRIP
+install_sh
+MAKEINFO
+AUTOHEADER
+AUTOMAKE
+AUTOCONF
+ACLOCAL
+VERSION
+PACKAGE
+CYGPATH_W
+am__isrc
+INSTALL_DATA
+INSTALL_SCRIPT
+INSTALL_PROGRAM
 EGREP
 GREP
 CPP
@@ -728,6 +1462,7 @@ CPPFLAGS
 LDFLAGS
 CFLAGS
 CC
+SHORT_VERSION
 target_alias
 host_alias
 build_alias
@@ -770,17 +1505,23 @@ referdir
 grog_dir
 gpinyin_dir
 glilypond_dir
-libprogramdir'
+libprogramdir
+am__quote'
 ac_subst_files=''
 ac_user_opts='
 enable_option_checking
+enable_dependency_tracking
+enable_silent_rules
 with_x
 with_appresdir
 with_grofferdir
 with_doc
+with_uchardet
 with_gnu_ld
 enable_rpath
 with_libiconv_prefix
+with_urw_fonts_dir
+with_compatibility_wrappers
 with_alt_gs
 with_gs
 with_alt_awk
@@ -799,6 +1540,11 @@ CXX
 CXXFLAGS
 CCC
 XMKMF
+PKG_CONFIG
+PKG_CONFIG_PATH
+PKG_CONFIG_LIBDIR
+UCHARDET_CFLAGS
+UCHARDET_LIBS
 CXXCPP'
 
 
@@ -1340,7 +2086,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures groff 1.22.3 to adapt to many kinds of systems.
+\`configure' configures GNU Troff 1.22.4 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1388,7 +2134,7 @@ Fine tuning of the installation directories:
   --infodir=DIR           info documentation [DATAROOTDIR/info]
   --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
   --mandir=DIR            man documentation [DATAROOTDIR/man]
-  --docdir=DIR            documentation root [DATAROOTDIR/doc/groff-1.22.3]
+  --docdir=DIR            documentation root [DATAROOTDIR/doc/groff]
   --htmldir=DIR           html documentation [DOCDIR]
   --dvidir=DIR            dvi documentation [DOCDIR]
   --pdfdir=DIR            pdf documentation [DOCDIR]
@@ -1397,6 +2143,11 @@ _ACEOF
 
   cat <<\_ACEOF
 
+Program names:
+  --program-prefix=PREFIX            prepend PREFIX to installed program names
+  --program-suffix=SUFFIX            append SUFFIX to installed program names
+  --program-transform-name=PROGRAM   run sed PROGRAM on installed program names
+
 X features:
   --x-includes=DIR    X include files are in DIR
   --x-libraries=DIR   X library files are in DIR
@@ -1409,7 +2160,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of groff 1.22.3:";;
+     short | recursive ) echo "Configuration of GNU Troff 1.22.4:";;
    esac
   cat <<\_ACEOF
 
@@ -1417,6 +2168,12 @@ Optional Features:
   --disable-option-checking  ignore unrecognized --enable/--with options
   --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
   --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
+  --enable-dependency-tracking
+                          do not reject slow dependency extractors
+  --disable-dependency-tracking
+                          speeds up one-time build
+  --enable-silent-rules   less verbose build output (undo: "make V=1")
+  --disable-silent-rules  verbose build output (undo: "make V=0")
   --disable-rpath         do not hardcode runtime library paths
 
 Optional Packages:
@@ -1426,13 +2183,38 @@ Optional Packages:
   --with-appresdir=DIR    X11 application resource files
   --with-grofferdir=DIR   groffer files location
   --with-doc[=TYPE]       choose which manuals (beside man pages) are
-                          desirable. TYPE can be `yes' or `no', or a
-                          comma-separated list of one or multiple of `html',
-                          `info', `other', `pdf', and `examples', to restrict
+                          desirable. TYPE can be 'yes' or 'no', or a
+                          comma-separated list of one or multiple of 'html',
+                          'info', 'other', 'pdf', and 'examples', to restrict
                           what is produced
+  --with-uchardet         Build 'preconv' with uchardet library for file
+                          encoding automatic detection [=auto|no|yes]
   --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
   --with-libiconv-prefix[=DIR]  search for libiconv in DIR/include and DIR/lib
   --without-libiconv-prefix     don't search for libiconv in includedir and libdir
+  --with-urw-fonts-dir=DIR
+                          Search for URW fonts in this directory
+  --with-compatibility-wrappers[=VALUE]
+                          choose whether and how groff compatibility wrappers
+                          for vendor-provided non-GNU macro sets are
+                          installed. VALUE can be 'check', 'yes', 'no' or
+                          'manual'. 'check' (the default) checks for the
+                          existence of vendor-provided non-GNU macro sets, and
+                          implements the 'yes' or 'no' option accordingly.
+                          'yes' generates compatibility wrappers for
+                          vendor-provided non-GNU macro sets to allow their
+                          use with groff-based tools. The compatibility
+                          wrappers are installed with the original macro set
+                          name, while groff implementation of these macro sets
+                          are installed with a 'g' prefix. Thus use of the
+                          groff implementation of these macro sets requires
+                          use of the '-mg<macro>' option (example: -mgan).
+                          'no' only installs the groff implementation of macro
+                          sets. 'manual' generates compatibility wrappers for
+                          vendor-provided non-GNU macro sets as '<macro>-os'.
+                          Use of these groff compatibility wrappers (for
+                          vendor-provided non-GNU macro sets) requires the use
+                          of the '-m<macro>-os' option (example: -man-os).
   --with-alt-gs=LIST      alternative names for ghostscript executable
   --with-gs=PROG          actual [/path/]name of ghostscript executable
   --with-alt-awk=LIST     alternative names for awk executable
@@ -1450,12 +2232,23 @@ Some influential environment variables:
   CXX         C++ compiler command
   CXXFLAGS    C++ compiler flags
   XMKMF       Path to xmkmf, Makefile generator for X Window System
+  PKG_CONFIG  path to pkg-config utility
+  PKG_CONFIG_PATH
+              directories to add to pkg-config's search path
+  PKG_CONFIG_LIBDIR
+              path overriding pkg-config's built-in search path
+  UCHARDET_CFLAGS
+              C compiler flags for UCHARDET, overriding pkg-config
+  UCHARDET_LIBS
+              linker flags for UCHARDET, overriding pkg-config
   CXXCPP      C++ preprocessor
 
 Use these variables to override the choices made by `configure' or to help
 it to find libraries and programs with nonstandard names/locations.
 
-Report bugs to <bug-groff@gnu.org>.
+Report bugs to <http://savannah.gnu.org/bugs/?group=groff>.
+GNU Troff home page: <http://www.gnu.org/software/groff/>.
+General help using GNU software: <http://www.gnu.org/gethelp/>.
 _ACEOF
 ac_status=$?
 fi
@@ -1518,7 +2311,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-groff configure 1.22.3
+GNU Troff configure 1.22.4
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1677,9 +2470,9 @@ $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
 $as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
     { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
-( $as_echo "## -------------------------------- ##
-## Report this to bug-groff@gnu.org ##
-## -------------------------------- ##"
+( $as_echo "## -------------------------------------------------------- ##
+## Report this to http://savannah.gnu.org/bugs/?group=groff ##
+## -------------------------------------------------------- ##"
      ) | sed "s/^/$as_me: WARNING:     /" >&2
     ;;
 esac
@@ -1809,93 +2602,59 @@ fi
 
 } # ac_fn_cxx_try_compile
 
-# ac_fn_cxx_try_run LINENO
-# ------------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
-# that executables *can* be run.
-ac_fn_cxx_try_run ()
+# ac_fn_c_check_type LINENO TYPE VAR INCLUDES
+# -------------------------------------------
+# Tests whether TYPE exists after having included INCLUDES, setting cache
+# variable VAR accordingly.
+ac_fn_c_check_type ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
-  { { case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; }; then :
-  ac_retval=0
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  $as_echo "$as_me: program exited with status $ac_status" >&5
-       $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_retval=$ac_status
-fi
-  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_cxx_try_run
-
-# ac_fn_cxx_try_link LINENO
-# -------------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded.
-ac_fn_cxx_try_link ()
+  eval "$3=no"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
 {
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  rm -f conftest.$ac_objext conftest$ac_exeext
-  if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && {
-        test -z "$ac_cxx_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-        test "$cross_compiling" = yes ||
-        test -x conftest$ac_exeext
-       }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+if (sizeof ($2))
+        return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+if (sizeof (($2)))
+           return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
 
-       ac_retval=1
+else
+  eval "$3=yes"
 fi
-  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
-  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
-  # interfere with the next link command; also delete a directory that is
-  # left behind by Apple's compiler.  We do this before executing the actions.
-  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
 
-} # ac_fn_cxx_try_link
+} # ac_fn_c_check_type
 
 # ac_fn_c_try_link LINENO
 # -----------------------
@@ -2010,56 +2769,59 @@ $as_echo "$ac_res" >&6; }
 
 } # ac_fn_c_check_func
 
-# ac_fn_cxx_try_cpp LINENO
-# ------------------------
-# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
-ac_fn_cxx_try_cpp ()
+# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES
+# --------------------------------------------
+# Tries to find the compile-time value of EXPR in a program that includes
+# INCLUDES, setting VAR accordingly. Returns whether the value could be
+# computed
+ac_fn_c_compute_int ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if { { ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } > conftest.i && {
-        test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
-        test ! -s conftest.err
-       }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-    ac_retval=1
-fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_cxx_try_cpp
+  if test "$cross_compiling" = yes; then
+    # Depending upon the size, compute the lo and hi bounds.
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) >= 0)];
+test_array [0] = 0;
+return test_array [0];
 
-# ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES
-# ---------------------------------------------
-# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR
-# accordingly.
-ac_fn_c_check_decl ()
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_lo=0 ac_mid=0
+  while :; do
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
 {
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  as_decl_name=`echo $2|sed 's/ *(.*//'`
-  as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'`
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5
-$as_echo_n "checking whether $as_decl_name is declared... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
+static int test_array [1 - 2 * !(($2) <= $ac_mid)];
+test_array [0] = 0;
+return test_array [0];
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_hi=$ac_mid; break
+else
+  as_fn_arith $ac_mid + 1 && ac_lo=$as_val
+                       if test $ac_lo -le $ac_mid; then
+                         ac_lo= ac_hi=
+                         break
+                       fi
+                       as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 int
 main ()
 {
-#ifndef $as_decl_name
-#ifdef __cplusplus
-  (void) $as_decl_use;
-#else
-  (void) $as_decl_name;
-#endif
-#endif
+static int test_array [1 - 2 * !(($2) < 0)];
+test_array [0] = 0;
+return test_array [0];
 
   ;
   return 0;
 }
 _ACEOF
 if ac_fn_c_try_compile "$LINENO"; then :
-  eval "$3=yes"
+  ac_hi=-1 ac_mid=-1
+  while :; do
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) >= $ac_mid)];
+test_array [0] = 0;
+return test_array [0];
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_lo=$ac_mid; break
 else
-  eval "$3=no"
+  as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val
+                       if test $ac_mid -le $ac_hi; then
+                         ac_lo= ac_hi=
+                         break
+                       fi
+                       as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  ac_lo= ac_hi=
 fi
-eval ac_res=\$$3
-              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+  as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) <= $ac_mid)];
+test_array [0] = 0;
+return test_array [0];
 
-} # ac_fn_c_check_decl
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_hi=$ac_mid
+else
+  as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in #((
+?*) eval "$3=\$ac_lo"; ac_retval=0 ;;
+'') ac_retval=1 ;;
+esac
+  else
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+static long int longval () { return $2; }
+static unsigned long int ulongval () { return $2; }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+  FILE *f = fopen ("conftest.val", "w");
+  if (! f)
+    return 1;
+  if (($2) < 0)
+    {
+      long int i = longval ();
+      if (i != ($2))
+       return 1;
+      fprintf (f, "%ld", i);
+    }
+  else
+    {
+      unsigned long int i = ulongval ();
+      if (i != ($2))
+       return 1;
+      fprintf (f, "%lu", i);
+    }
+  /* Do not output a trailing newline, as this causes \r\n confusion
+     on some platforms.  */
+  return ferror (f) || fclose (f) != 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  echo >>conftest.val; read $3 <conftest.val; ac_retval=0
+else
+  ac_retval=1
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f conftest.val
+
+  fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_compute_int
+
+# ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES
+# ---------------------------------------------
+# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR
+# accordingly.
+ac_fn_c_check_decl ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  as_decl_name=`echo $2|sed 's/ *(.*//'`
+  as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'`
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5
+$as_echo_n "checking whether $as_decl_name is declared... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+#ifndef $as_decl_name
+#ifdef __cplusplus
+  (void) $as_decl_use;
+#else
+  (void) $as_decl_name;
+#endif
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_decl
+
+# ac_fn_cxx_try_run LINENO
+# ------------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
+# that executables *can* be run.
+ac_fn_cxx_try_run ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+       $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_retval=$ac_status
+fi
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_cxx_try_run
+
+# ac_fn_cxx_try_link LINENO
+# -------------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_cxx_try_link ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext conftest$ac_exeext
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+        test -z "$ac_cxx_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        test -x conftest$ac_exeext
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_retval=1
+fi
+  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+  # interfere with the next link command; also delete a directory that is
+  # left behind by Apple's compiler.  We do this before executing the actions.
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_cxx_try_link
+
+# ac_fn_cxx_try_cpp LINENO
+# ------------------------
+# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+ac_fn_cxx_try_cpp ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } > conftest.i && {
+        test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
+        test ! -s conftest.err
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+    ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_cxx_try_cpp
 cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by groff $as_me 1.22.3, which was
+It was created by GNU Troff $as_me 1.22.4, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -2376,10 +3406,25 @@ $as_echo "$as_me: creating cache $cache_file" >&6;}
   >$cache_file
 fi
 
-as_fn_append ac_header_list " stdlib.h"
+as_fn_append ac_func_list " vasnprintf"
+as_fn_append ac_header_list " features.h"
+as_fn_append ac_func_list " snprintf"
+as_fn_append ac_func_list " __fseterr"
+as_fn_append ac_header_list " limits.h"
 as_fn_append ac_header_list " unistd.h"
-as_fn_append ac_header_list " sys/param.h"
 as_fn_append ac_func_list " symlink"
+as_fn_append ac_header_list " math.h"
+as_fn_append ac_header_list " sys/mman.h"
+as_fn_append ac_func_list " mprotect"
+gl_printf_safe=yes
+as_fn_append ac_header_list " wchar.h"
+as_fn_append ac_header_list " stdint.h"
+as_fn_append ac_header_list " crtdefs.h"
+as_fn_append ac_func_list " iswcntrl"
+as_fn_append ac_header_list " wctype.h"
+as_fn_append ac_func_list " wcwidth"
+as_fn_append ac_header_list " stdlib.h"
+as_fn_append ac_header_list " sys/param.h"
 # Check that the precious variables saved in the cache have kept the same
 # value.
 ac_cache_corrupted=false
@@ -2450,10 +3495,52 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
 
+
+# SHORT_VERSION contains only the number of REVISION before the first '.',
+# e.g. if REVISION is '3.real.434-5aafd' then SHORT_VERSION is 'x.yy.3',
+# where x and yy are MAJOR_VERSION and MINOR_VERSION, respectively.
+SHORT_VERSION=1.22.4
+
+
+# Directories where the helper scripts should be found. This must be consistent
+# with the variable build_aux in bootstrap.conf
+ac_aux_dir=
+for ac_dir in build-aux "$srcdir"/build-aux; do
+  if test -f "$ac_dir/install-sh"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install-sh -c"
+    break
+  elif test -f "$ac_dir/install.sh"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install.sh -c"
+    break
+  elif test -f "$ac_dir/shtool"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/shtool install -c"
+    break
+  fi
+done
+if test -z "$ac_aux_dir"; then
+  as_fn_error $? "cannot find install-sh, install.sh, or shtool in build-aux \"$srcdir\"/build-aux" "$LINENO" 5
+fi
+
+# These three variables are undocumented and unsupported,
+# and are intended to be withdrawn in a future Autoconf release.
+# They can cause serious problems if a builder's source tree is in a directory
+# whose full name contains unusual characters.
+ac_config_guess="$SHELL $ac_aux_dir/config.guess"  # Please don't use this var.
+ac_config_sub="$SHELL $ac_aux_dir/config.sub"  # Please don't use this var.
+ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
+
+
+
 ac_config_headers="$ac_config_headers src/include/config.h:src/include/config.hin"
 
 
 
+# Expand $ac_aux_dir to an absolute path.
+am_aux_dir=`cd "$ac_aux_dir" && pwd`
+
 ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -3243,19 +4330,78 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
-
 ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
-$as_echo_n "checking how to run the C preprocessor... " >&6; }
-# On Suns, sometimes $CPP names a directory.
-if test -n "$CPP" && test -d "$CPP"; then
-  CPP=
-fi
-if test -z "$CPP"; then
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5
+$as_echo_n "checking whether $CC understands -c and -o together... " >&6; }
+if ${am_cv_prog_cc_c_o+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+  # Make sure it works both with $CC and with simple cc.
+  # Following AC_PROG_CC_C_O, we do the test twice because some
+  # compilers refuse to overwrite an existing .o file with -o,
+  # though they will create one.
+  am_cv_prog_cc_c_o=yes
+  for am_i in 1 2; do
+    if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5
+   ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); } \
+         && test -f conftest2.$ac_objext; then
+      : OK
+    else
+      am_cv_prog_cc_c_o=no
+      break
+    fi
+  done
+  rm -f core conftest*
+  unset am_i
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5
+$as_echo "$am_cv_prog_cc_c_o" >&6; }
+if test "$am_cv_prog_cc_c_o" != yes; then
+   # Losing compiler, so override with the script.
+   # FIXME: It is wrong to rewrite CC.
+   # But if we don't then we get into trouble of one sort or another.
+   # A longer-term fix would be to have automake use am__CC in this case,
+   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+   CC="$am_aux_dir/compile $CC"
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
+$as_echo_n "checking how to run the C preprocessor... " >&6; }
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+  CPP=
+fi
+if test -z "$CPP"; then
   if ${ac_cv_prog_CPP+:} false; then :
   $as_echo_n "(cached) " >&6
 else
@@ -3660,6 +4806,9 @@ $as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h
 
 $as_echo "#define _MINIX 1" >>confdefs.h
 
+
+$as_echo "#define _NETBSD_SOURCE 1" >>confdefs.h
+
   fi
 
 
@@ -3695,30 +4844,297 @@ $as_echo "$ac_cv_safe_to_define___extensions__" >&6; }
 
   $as_echo "#define _ALL_SOURCE 1" >>confdefs.h
 
+  $as_echo "#define _DARWIN_C_SOURCE 1" >>confdefs.h
+
   $as_echo "#define _GNU_SOURCE 1" >>confdefs.h
 
+  $as_echo "#define _NETBSD_SOURCE 1" >>confdefs.h
+
+  $as_echo "#define _OPENBSD_SOURCE 1" >>confdefs.h
+
   $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h
 
+  $as_echo "#define __STDC_WANT_IEC_60559_ATTRIBS_EXT__ 1" >>confdefs.h
+
+  $as_echo "#define __STDC_WANT_IEC_60559_BFP_EXT__ 1" >>confdefs.h
+
+  $as_echo "#define __STDC_WANT_IEC_60559_DFP_EXT__ 1" >>confdefs.h
+
+  $as_echo "#define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1" >>confdefs.h
+
+  $as_echo "#define __STDC_WANT_IEC_60559_TYPES_EXT__ 1" >>confdefs.h
+
+  $as_echo "#define __STDC_WANT_LIB_EXT2__ 1" >>confdefs.h
+
+  $as_echo "#define __STDC_WANT_MATH_SPEC_FUNCS__ 1" >>confdefs.h
+
   $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h
 
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether _XOPEN_SOURCE should be defined" >&5
+$as_echo_n "checking whether _XOPEN_SOURCE should be defined... " >&6; }
+if ${ac_cv_should_define__xopen_source+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_should_define__xopen_source=no
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
+          #include <wchar.h>
+          mbstate_t x;
+int
+main ()
+{
 
-# checks for programs
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}gcc; ac_word=$2
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+             #define _XOPEN_SOURCE 500
+             #include <wchar.h>
+             mbstate_t x;
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_should_define__xopen_source=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_should_define__xopen_source" >&5
+$as_echo "$ac_cv_should_define__xopen_source" >&6; }
+  test $ac_cv_should_define__xopen_source = yes &&
+    $as_echo "#define _XOPEN_SOURCE 500" >>confdefs.h
+
+  $as_echo "#define _HPUX_ALT_XOPEN_SOCKET_API 1" >>confdefs.h
+
+
+
+am__api_version='1.16'
+
+# Find a good install program.  We prefer a C program (faster),
+# so one script is as good as another.  But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+# Reject install programs that cannot install multiple files.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
+$as_echo_n "checking for a BSD-compatible install... " >&6; }
+if test -z "$INSTALL"; then
+if ${ac_cv_path_install+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in #((
+  ./ | .// | /[cC]/* | \
+  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+  ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
+  /usr/ucb/* ) ;;
+  *)
+    # OSF1 and SCO ODT 3.0 have their own names for install.
+    # Don't use installbsd from OSF since it installs stuff as root
+    # by default.
+    for ac_prog in ginstall scoinst install; do
+      for ac_exec_ext in '' $ac_executable_extensions; do
+       if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
+         if test $ac_prog = install &&
+           grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+           # AIX install.  It has an incompatible calling convention.
+           :
+         elif test $ac_prog = install &&
+           grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+           # program-specific install script used by HP pwplus--don't use.
+           :
+         else
+           rm -rf conftest.one conftest.two conftest.dir
+           echo one > conftest.one
+           echo two > conftest.two
+           mkdir conftest.dir
+           if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
+             test -s conftest.one && test -s conftest.two &&
+             test -s conftest.dir/conftest.one &&
+             test -s conftest.dir/conftest.two
+           then
+             ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+             break 3
+           fi
+         fi
+       fi
+      done
+    done
+    ;;
+esac
+
+  done
+IFS=$as_save_IFS
+
+rm -rf conftest.one conftest.two conftest.dir
+
+fi
+  if test "${ac_cv_path_install+set}" = set; then
+    INSTALL=$ac_cv_path_install
+  else
+    # As a last resort, use the slow shell script.  Don't cache a
+    # value for INSTALL within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the value is a relative name.
+    INSTALL=$ac_install_sh
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
+$as_echo "$INSTALL" >&6; }
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
+$as_echo_n "checking whether build environment is sane... " >&6; }
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name.  Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+  *[\\\"\#\$\&\'\`$am_lf]*)
+    as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;;
+esac
+case $srcdir in
+  *[\\\"\#\$\&\'\`$am_lf\ \    ]*)
+    as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;;
+esac
+
+# Do 'set' in a subshell so we don't clobber the current shell's
+# arguments.  Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+   am_has_slept=no
+   for am_try in 1 2; do
+     echo "timestamp, slept: $am_has_slept" > conftest.file
+     set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+     if test "$*" = "X"; then
+       # -L didn't work.
+       set X `ls -t "$srcdir/configure" conftest.file`
+     fi
+     if test "$*" != "X $srcdir/configure conftest.file" \
+       && test "$*" != "X conftest.file $srcdir/configure"; then
+
+       # If neither matched, then we have a broken ls.  This can happen
+       # if, for instance, CONFIG_SHELL is bash and it inherits a
+       # broken ls alias from the environment.  This has actually
+       # happened.  Such a system could not be considered "sane".
+       as_fn_error $? "ls -t appears to fail.  Make sure there is not a broken
+  alias in your environment" "$LINENO" 5
+     fi
+     if test "$2" = conftest.file || test $am_try -eq 2; then
+       break
+     fi
+     # Just in case.
+     sleep 1
+     am_has_slept=yes
+   done
+   test "$2" = conftest.file
+   )
+then
+   # Ok.
+   :
+else
+   as_fn_error $? "newly created file is older than distributed files!
+Check your system clock" "$LINENO" 5
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+# If we didn't sleep, we still need to ensure time stamps of config.status and
+# generated files are strictly newer.
+am_sleep_pid=
+if grep 'slept: no' conftest.file >/dev/null 2>&1; then
+  ( sleep 1 ) &
+  am_sleep_pid=$!
+fi
+
+rm -f conftest.file
+
+test "$program_prefix" != NONE &&
+  program_transform_name="s&^&$program_prefix&;$program_transform_name"
+# Use a double $ so make ignores it.
+test "$program_suffix" != NONE &&
+  program_transform_name="s&\$&$program_suffix&;$program_transform_name"
+# Double any \ or $.
+# By default was `s,x,x', remove it if useless.
+ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
+program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
+
+if test x"${MISSING+set}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\    *)
+    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+  *)
+    MISSING="\${SHELL} $am_aux_dir/missing" ;;
+  esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --is-lightweight"; then
+  am_missing_run="$MISSING "
+else
+  am_missing_run=
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5
+$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;}
+fi
+
+if test x"${install_sh+set}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\    *)
+    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+  *)
+    install_sh="\${SHELL} $am_aux_dir/install-sh"
+  esac
+fi
+
+# Installed binaries are usually stripped using 'strip' when the user
+# run "make install-strip".  However 'strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the 'STRIP' environment variable to overrule this program.
+if test "$cross_compiling" != no; then
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
+if ${ac_cv_prog_STRIP+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
+  if test -n "$STRIP"; then
+  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
@@ -3727,7 +5143,7 @@ do
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CC="${ac_tool_prefix}gcc"
+    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
@@ -3737,10 +5153,10 @@ IFS=$as_save_IFS
 
 fi
 fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
@@ -3748,17 +5164,17 @@ fi
 
 
 fi
-if test -z "$ac_cv_prog_CC"; then
-  ac_ct_CC=$CC
-  # Extract the first word of "gcc", so it can be a program name with args.
-set dummy gcc; ac_word=$2
+if test -z "$ac_cv_prog_STRIP"; then
+  ac_ct_STRIP=$STRIP
+  # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
+if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$ac_ct_CC"; then
-  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+  if test -n "$ac_ct_STRIP"; then
+  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
@@ -3767,7 +5183,7 @@ do
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_CC="gcc"
+    ac_cv_prog_ac_ct_STRIP="strip"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
@@ -3777,17 +5193,17 @@ IFS=$as_save_IFS
 
 fi
 fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
-  if test "x$ac_ct_CC" = x; then
-    CC=""
+  if test "x$ac_ct_STRIP" = x; then
+    STRIP=":"
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
@@ -3795,65 +5211,69 @@ yes:)
 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
-    CC=$ac_ct_CC
+    STRIP=$ac_ct_STRIP
   fi
 else
-  CC="$ac_cv_prog_CC"
+  STRIP="$ac_cv_prog_STRIP"
 fi
 
-if test -z "$CC"; then
-          if test -n "$ac_tool_prefix"; then
-    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
+$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
+if test -z "$MKDIR_P"; then
+  if ${ac_cv_path_mkdir+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CC="${ac_tool_prefix}cc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
+    for ac_prog in mkdir gmkdir; do
+        for ac_exec_ext in '' $ac_executable_extensions; do
+          as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue
+          case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
+            'mkdir (GNU coreutils) '* | \
+            'mkdir (coreutils) '* | \
+            'mkdir (fileutils) '4.1*)
+              ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
+              break 3;;
+          esac
+        done
+       done
   done
 IFS=$as_save_IFS
 
 fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
 
+  test -d ./--version && rmdir ./--version
+  if test "${ac_cv_path_mkdir+set}" = set; then
+    MKDIR_P="$ac_cv_path_mkdir -p"
+  else
+    # As a last resort, use the slow shell script.  Don't cache a
+    # value for MKDIR_P within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the value is a relative name.
+    MKDIR_P="$ac_install_sh -d"
   fi
 fi
-if test -z "$CC"; then
-  # Extract the first word of "cc", so it can be a program name with args.
-set dummy cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
+$as_echo "$MKDIR_P" >&6; }
+
+for ac_prog in gawk mawk nawk awk
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
+if ${ac_cv_prog_AWK+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
+  if test -n "$AWK"; then
+  ac_cv_prog_AWK="$AWK" # Let the user override the test.
 else
-  ac_prog_rejected=no
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
@@ -3861,11 +5281,7 @@ do
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
-       ac_prog_rejected=yes
-       continue
-     fi
-    ac_cv_prog_CC="cc"
+    ac_cv_prog_AWK="$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
@@ -3873,37 +5289,456 @@ done
   done
 IFS=$as_save_IFS
 
-if test $ac_prog_rejected = yes; then
-  # We found a bogon in the path, so make sure we never use it.
-  set dummy $ac_cv_prog_CC
-  shift
-  if test $# != 0; then
-    # We chose a different compiler from the bogus one.
-    # However, it has the same basename, so the bogon will be chosen
-    # first if we set CC to just the basename; use the full file name.
-    shift
-    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
-  fi
 fi
 fi
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
+$as_echo "$AWK" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
+
+
+  test -n "$AWK" && break
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
+set x ${MAKE-make}
+ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.make <<\_ACEOF
+SHELL = /bin/sh
+all:
+       @echo '@@@%%%=$(MAKE)=@@@%%%'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
+case `${MAKE-make} -f conftest.make 2>/dev/null` in
+  *@@@%%%=?*=@@@%%%*)
+    eval ac_cv_prog_make_${ac_make}_set=yes;;
+  *)
+    eval ac_cv_prog_make_${ac_make}_set=no;;
+esac
+rm -f conftest.make
+fi
+if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+  SET_MAKE=
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
+  SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+  am__leading_dot=.
+else
+  am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+
+DEPDIR="${am__leading_dot}deps"
+
+ac_config_commands="$ac_config_commands depfiles"
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5
+$as_echo_n "checking whether ${MAKE-make} supports the include directive... " >&6; }
+cat > confinc.mk << 'END'
+am__doit:
+       @echo this is the am__doit target >confinc.out
+.PHONY: am__doit
+END
+am__include="#"
+am__quote=
+# BSD make does it like this.
+echo '.include "confinc.mk" # ignored' > confmf.BSD
+# Other make implementations (GNU, Solaris 10, AIX) do it like this.
+echo 'include confinc.mk # ignored' > confmf.GNU
+_am_result=no
+for s in GNU BSD; do
+  { echo "$as_me:$LINENO: ${MAKE-make} -f confmf.$s && cat confinc.out" >&5
+   (${MAKE-make} -f confmf.$s && cat confinc.out) >&5 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); }
+  case $?:`cat confinc.out 2>/dev/null` in #(
+  '0:this is the am__doit target') :
+    case $s in #(
+  BSD) :
+    am__include='.include' am__quote='"' ;; #(
+  *) :
+    am__include='include' am__quote='' ;;
+esac ;; #(
+  *) :
+     ;;
+esac
+  if test "$am__include" != "#"; then
+    _am_result="yes ($s style)"
+    break
+  fi
+done
+rm -f confinc.* confmf.*
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5
+$as_echo "${_am_result}" >&6; }
+
+# Check whether --enable-dependency-tracking was given.
+if test "${enable_dependency_tracking+set}" = set; then :
+  enableval=$enable_dependency_tracking;
+fi
+
+if test "x$enable_dependency_tracking" != xno; then
+  am_depcomp="$ac_aux_dir/depcomp"
+  AMDEPBACKSLASH='\'
+  am__nodep='_no'
+fi
+ if test "x$enable_dependency_tracking" != xno; then
+  AMDEP_TRUE=
+  AMDEP_FALSE='#'
+else
+  AMDEP_TRUE='#'
+  AMDEP_FALSE=
 fi
 
 
+# Check whether --enable-silent-rules was given.
+if test "${enable_silent_rules+set}" = set; then :
+  enableval=$enable_silent_rules;
 fi
-if test -z "$CC"; then
-  if test -n "$ac_tool_prefix"; then
-  for ac_prog in cl.exe
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+
+case $enable_silent_rules in # (((
+  yes) AM_DEFAULT_VERBOSITY=0;;
+   no) AM_DEFAULT_VERBOSITY=1;;
+    *) AM_DEFAULT_VERBOSITY=1;;
+esac
+am_make=${MAKE-make}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
+$as_echo_n "checking whether $am_make supports nested variables... " >&6; }
+if ${am_cv_make_support_nested_variables+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if $as_echo 'TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+       @$(TRUE)
+.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then
+  am_cv_make_support_nested_variables=yes
+else
+  am_cv_make_support_nested_variables=no
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
+$as_echo "$am_cv_make_support_nested_variables" >&6; }
+if test $am_cv_make_support_nested_variables = yes; then
+    AM_V='$(V)'
+  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+  AM_V=$AM_DEFAULT_VERBOSITY
+  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AM_BACKSLASH='\'
+
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+  # is not polluted with repeated "-I."
+  am__isrc=' -I$(srcdir)'
+  # test to see if srcdir already configured
+  if test -f $srcdir/config.status; then
+    as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
+  fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+  if (cygpath --version) >/dev/null 2>/dev/null; then
+    CYGPATH_W='cygpath -w'
+  else
+    CYGPATH_W=echo
+  fi
+fi
+
+
+# Define the identity of the package.
+ PACKAGE='groff'
+ VERSION='1.22.4'
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE "$PACKAGE"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define VERSION "$VERSION"
+_ACEOF
+
+# Some tools Automake needs.
+
+ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
+
+
+AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
+
+
+AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
+
+
+AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
+
+
+MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
+
+# For better backward compatibility.  To be removed once Automake 1.9.x
+# dies out for good.  For more background, see:
+# <https://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
+# <https://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
+mkdir_p='$(MKDIR_P)'
+
+# We need awk for the "check" target (and possibly the TAP driver).  The
+# system "awk" is bad on some platforms.
+# Always define AMTAR for backward compatibility.  Yes, it's still used
+# in the wild :-(  We should find a proper way to deprecate it ...
+AMTAR='$${TAR-tar}'
+
+
+# We'll loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar  pax cpio none'
+
+am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
+
+
+
+
+
+depcc="$CC"   am_compiler_list=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if ${am_cv_CC_dependencies_compiler_type+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named 'D' -- because '-MD' means "put the output
+  # in D".
+  rm -rf conftest.dir
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_CC_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+  fi
+  am__universal=false
+  case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac
+
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+      # Solaris 10 /bin/sh.
+      echo '/* dummy */' > sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    # We check with '-c' and '-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle '-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs.
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
+    case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
+    nosideeffect)
+      # After this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested.
+      if test "x$enable_dependency_tracking" = xyes; then
+       continue
+      else
+       break
+      fi
+      ;;
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+      # This compiler won't grok '-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
+    none) break ;;
+    esac
+    if depmode=$depmode \
+       source=sub/conftest.c object=$am__obj \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_CC_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_CC_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+ if
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
+  am__fastdepCC_TRUE=
+  am__fastdepCC_FALSE='#'
+else
+  am__fastdepCC_TRUE='#'
+  am__fastdepCC_FALSE=
+fi
+
+
+
+# POSIX will say in a future version that running "rm -f" with no argument
+# is OK; and we want to be able to make that assumption in our Makefile
+# recipes.  So use an aggressive probe to check that the usage we want is
+# actually supported "in the wild" to an acceptable degree.
+# See automake bug#10828.
+# To make any issue more visible, cause the running configure to be aborted
+# by default if the 'rm' program in use doesn't match our expectations; the
+# user can still override this though.
+if rm -f && rm -fr && rm -rf; then : OK; else
+  cat >&2 <<'END'
+Oops!
+
+Your 'rm' program seems unable to run without file operands specified
+on the command line, even when the '-f' option is present.  This is contrary
+to the behaviour of most rm programs out there, and not conforming with
+the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
+
+Please tell bug-automake@gnu.org about your system, including the value
+of your $PATH and any error possibly output before this message.  This
+can help us improve future automake versions.
+
+END
+  if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
+    echo 'Configuration will proceed anyway, since you have set the' >&2
+    echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
+    echo >&2
+  else
+    cat >&2 <<'END'
+Aborting the configuration process, to ensure you take notice of the issue.
+
+You can download and install GNU coreutils to get an 'rm' implementation
+that behaves properly: <https://www.gnu.org/software/coreutils/>.
+
+If you want to complete the configuration process using your problematic
+'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
+to "yes", and re-run configure.
+
+END
+    as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5
+  fi
+fi
+
+
+# Check whether --enable-silent-rules was given.
+if test "${enable_silent_rules+set}" = set; then :
+  enableval=$enable_silent_rules;
+fi
+
+case $enable_silent_rules in # (((
+  yes) AM_DEFAULT_VERBOSITY=0;;
+   no) AM_DEFAULT_VERBOSITY=1;;
+    *) AM_DEFAULT_VERBOSITY=0;;
+esac
+am_make=${MAKE-make}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
+$as_echo_n "checking whether $am_make supports nested variables... " >&6; }
+if ${am_cv_make_support_nested_variables+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if $as_echo 'TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+       @$(TRUE)
+.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then
+  am_cv_make_support_nested_variables=yes
+else
+  am_cv_make_support_nested_variables=no
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
+$as_echo "$am_cv_make_support_nested_variables" >&6; }
+if test $am_cv_make_support_nested_variables = yes; then
+    AM_V='$(V)'
+  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+  AM_V=$AM_DEFAULT_VERBOSITY
+  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AM_BACKSLASH='\'
+
+
+# checks for programs
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
 if ${ac_cv_prog_CC+:} false; then :
@@ -3919,7 +5754,7 @@ do
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+    ac_cv_prog_CC="${ac_tool_prefix}gcc"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
@@ -3939,15 +5774,11 @@ $as_echo "no" >&6; }
 fi
 
 
-    test -n "$CC" && break
-  done
 fi
-if test -z "$CC"; then
+if test -z "$ac_cv_prog_CC"; then
   ac_ct_CC=$CC
-  for ac_prog in cl.exe
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
+  # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
 if ${ac_cv_prog_ac_ct_CC+:} false; then :
@@ -3963,7 +5794,7 @@ do
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_CC="$ac_prog"
+    ac_cv_prog_ac_ct_CC="gcc"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
@@ -3982,10 +5813,6 @@ else
 $as_echo "no" >&6; }
 fi
 
-
-  test -n "$ac_ct_CC" && break
-done
-
   if test "x$ac_ct_CC" = x; then
     CC=""
   else
@@ -3997,12 +5824,212 @@ ac_tool_warned=yes ;;
 esac
     CC=$ac_ct_CC
   fi
+else
+  CC="$ac_cv_prog_CC"
 fi
 
+if test -z "$CC"; then
+          if test -n "$ac_tool_prefix"; then
+    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="${ac_tool_prefix}cc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
-test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+  fi
+fi
+if test -z "$CC"; then
+  # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+  ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+       ac_prog_rejected=yes
+       continue
+     fi
+    ac_cv_prog_CC="cc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+if test $ac_prog_rejected = yes; then
+  # We found a bogon in the path, so make sure we never use it.
+  set dummy $ac_cv_prog_CC
+  shift
+  if test $# != 0; then
+    # We chose a different compiler from the bogus one.
+    # However, it has the same basename, so the bogon will be chosen
+    # first if we set CC to just the basename; use the full file name.
+    shift
+    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+  fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$CC"; then
+  if test -n "$ac_tool_prefix"; then
+  for ac_prog in cl.exe
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$CC" && break
+  done
+fi
+if test -z "$CC"; then
+  ac_ct_CC=$CC
+  for ac_prog in cl.exe
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CC="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_CC" && break
+done
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+fi
+
+fi
+
+
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
 as_fn_error $? "no acceptable C compiler found in \$PATH
 See \`config.log' for more details" "$LINENO" 5; }
@@ -4243,6 +6270,65 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5
+$as_echo_n "checking whether $CC understands -c and -o together... " >&6; }
+if ${am_cv_prog_cc_c_o+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+  # Make sure it works both with $CC and with simple cc.
+  # Following AC_PROG_CC_C_O, we do the test twice because some
+  # compilers refuse to overwrite an existing .o file with -o,
+  # though they will create one.
+  am_cv_prog_cc_c_o=yes
+  for am_i in 1 2; do
+    if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5
+   ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); } \
+         && test -f conftest2.$ac_objext; then
+      : OK
+    else
+      am_cv_prog_cc_c_o=no
+      break
+    fi
+  done
+  rm -f core conftest*
+  unset am_i
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5
+$as_echo "$am_cv_prog_cc_c_o" >&6; }
+if test "$am_cv_prog_cc_c_o" != yes; then
+   # Losing compiler, so override with the script.
+   # FIXME: It is wrong to rewrite CC.
+   # But if we don't then we get into trouble of one sort or another.
+   # A longer-term fix would be to have automake use am__CC in this case,
+   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+   CC="$am_aux_dir/compile $CC"
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
 ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -4500,1047 +6586,13112 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
+depcc="$CXX"  am_compiler_list=
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if ${am_cv_CXX_dependencies_compiler_type+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named 'D' -- because '-MD' means "put the output
+  # in D".
+  rm -rf conftest.dir
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_CXX_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+  fi
+  am__universal=false
+  case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac
 
-   ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+      # Solaris 10 /bin/sh.
+      echo '/* dummy */' > sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    # We check with '-c' and '-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle '-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs.
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
+    case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
+    nosideeffect)
+      # After this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested.
+      if test "x$enable_dependency_tracking" = xyes; then
+       continue
+      else
+       break
+      fi
+      ;;
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+      # This compiler won't grok '-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
+    none) break ;;
+    esac
+    if depmode=$depmode \
+       source=sub/conftest.c object=$am__obj \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_CXX_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
 
-   if test "$cross_compiling" = no; then
-     { $as_echo "$as_me:${as_lineno-$LINENO}: checking that C++ compiler can compile simple program" >&5
-$as_echo_n "checking that C++ compiler can compile simple program... " >&6; }
-   fi
-   if test "$cross_compiling" = yes; then :
-  :
+  cd ..
+  rm -rf conftest.dir
 else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
+  am_cv_CXX_dependencies_compiler_type=none
+fi
 
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; }
+CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type
 
+ if
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then
+  am__fastdepCXX_TRUE=
+  am__fastdepCXX_FALSE='#'
+else
+  am__fastdepCXX_TRUE='#'
+  am__fastdepCXX_FALSE=
+fi
 
-int main() {
-  return 0;
-}
 
 
 
-_ACEOF
-if ac_fn_cxx_try_run "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-      as_fn_error $? "a working C++ compiler is required" "$LINENO" 5
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
 
 
-   if test "$cross_compiling" = no; then
-     { $as_echo "$as_me:${as_lineno-$LINENO}: checking that C++ static constructors and destructors are called" >&5
-$as_echo_n "checking that C++ static constructors and destructors are called... " >&6; }
-   fi
-   if test "$cross_compiling" = yes; then :
-  :
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
 
 
 
-extern "C" {
-  void _exit(int);
-}
 
-int i;
-struct A {
-  char dummy;
-  A() { i = 1; }
-  ~A() { if (i == 1) _exit(0); }
-};
-
-A a;
 
-int main()
-{
-  return 1;
-}
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Minix Amsterdam compiler" >&5
+$as_echo_n "checking for Minix Amsterdam compiler... " >&6; }
+if ${gl_cv_c_amsterdam_compiler+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
 
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
+#ifdef __ACK__
+Amsterdam
+#endif
 
 _ACEOF
-if ac_fn_cxx_try_run "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "Amsterdam" >/dev/null 2>&1; then :
+  gl_cv_c_amsterdam_compiler=yes
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-      as_fn_error $? "a working C++ compiler is required" "$LINENO" 5
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
+  gl_cv_c_amsterdam_compiler=no
 fi
+rm -f conftest*
 
 
-   { $as_echo "$as_me:${as_lineno-$LINENO}: checking that header files support C++" >&5
-$as_echo_n "checking that header files support C++... " >&6; }
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-
-
-#include <stdio.h>
-
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_c_amsterdam_compiler" >&5
+$as_echo "$gl_cv_c_amsterdam_compiler" >&6; }
 
-int
-main ()
-{
+      if test $gl_cv_c_amsterdam_compiler = yes; then
+    if test -z "$AR"; then
+      AR='cc -c.a'
+    fi
+    if test -z "$ARFLAGS"; then
+      ARFLAGS='-o'
+    fi
+  else
+                                                :
+  fi
 
+        if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ar; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AR+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$AR"; then
+  ac_cv_prog_AR="$AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_AR="${ac_tool_prefix}ar"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
 
-fopen(0, 0);
+fi
+fi
+AR=$ac_cv_prog_AR
+if test -n "$AR"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
+$as_echo "$AR" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
 
 
-  ;
-  return 0;
-}
+fi
+if test -z "$ac_cv_prog_AR"; then
+  ac_ct_AR=$AR
+  # Extract the first word of "ar", so it can be a program name with args.
+set dummy ar; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_AR+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_AR"; then
+  ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_AR="ar"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
 
-_ACEOF
-if ac_fn_cxx_try_link "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+fi
+fi
+ac_ct_AR=$ac_cv_prog_ac_ct_AR
+if test -n "$ac_ct_AR"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
+$as_echo "$ac_ct_AR" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
-      as_fn_error $? "header files do not support C++
-                  (if you are using a version of gcc/g++ earlier than 2.5,
-                  you should install libg++)" "$LINENO" 5
 fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-   ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether character set is EBCDIC" >&5
-$as_echo_n "checking whether character set is EBCDIC... " >&6; }
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
 
+  if test "x$ac_ct_AR" = x; then
+    AR="ar"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    AR=$ac_ct_AR
+  fi
+else
+  AR="$ac_cv_prog_AR"
+fi
 
+  if test -z "$ARFLAGS"; then
+    ARFLAGS='cr'
+  fi
 
-/* Treat any failure as ASCII for compatibility with existing art.
-   Use compile-time rather than run-time tests for cross-compiler
-   tolerance. */
-#if '0' != 240
-make an error "Character set is not EBCDIC"
-#endif
 
 
-int
-main ()
-{
+  if test -z "$RANLIB"; then
+    if test $gl_cv_c_amsterdam_compiler = yes; then
+      RANLIB=':'
+    else
+            if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_RANLIB+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$RANLIB"; then
+  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
 
-  ;
-  return 0;
-}
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
+$as_echo "$RANLIB" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
 
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  groff_cv_ebcdic="yes"
-      TTYDEVDIRS="font/devcp1047"
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
 
-$as_echo "#define IS_EBCDIC_HOST 1" >>confdefs.h
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+  ac_ct_RANLIB=$RANLIB
+  # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_RANLIB"; then
+  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_RANLIB="ranlib"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
 
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
+$as_echo "$ac_ct_RANLIB" >&6; }
 else
-  groff_cv_ebcdic="no"
-     TTYDEVDIRS="font/devascii font/devlatin1"
-     OTHERDEVDIRS="font/devlj4 font/devlbp"
-     { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
+  if test "x$ac_ct_RANLIB" = x; then
+    RANLIB=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    RANLIB=$ac_ct_RANLIB
+  fi
+else
+  RANLIB="$ac_cv_prog_RANLIB"
+fi
 
-if test "$groff_cv_ebcdic" = "yes"; then
-     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for OS/390 Unix" >&5
-$as_echo_n "checking for OS/390 Unix... " >&6; }
-     case `uname` in
-     OS/390)
-       CFLAGS="$CFLAGS -D_ALL_SOURCE"
-       { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; } ;;
-     *)
-       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; } ;;
-     esac
-   fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to install .cmd wrapper scripts for Windows" >&5
-$as_echo_n "checking whether to install .cmd wrapper scripts for Windows... " >&6; }
-   case "$host_os" in
-   *mingw*)
-     make_winscripts=winscripts
-     make_install_winscripts=install_winscripts
-     make_uninstall_winscripts=uninstall_winscripts
-     { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; } ;;
-   *)
-     make_winscripts=
-     make_install_winscripts=
-     make_uninstall_winscripts=
-     { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; } ;;
-   esac
+    fi
+  fi
 
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for X" >&5
-$as_echo_n "checking for X... " >&6; }
+# Make sure we can run config.sub.
+$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
+  as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
+$as_echo_n "checking build system type... " >&6; }
+if ${ac_cv_build+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_build_alias=$build_alias
+test "x$ac_build_alias" = x &&
+  ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
+test "x$ac_build_alias" = x &&
+  as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
+ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
+  as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
 
-# Check whether --with-x was given.
-if test "${with_x+set}" = set; then :
-  withval=$with_x;
 fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
+$as_echo "$ac_cv_build" >&6; }
+case $ac_cv_build in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
+esac
+build=$ac_cv_build
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_build
+shift
+build_cpu=$1
+build_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+build_os=$*
+IFS=$ac_save_IFS
+case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
 
-# $have_x is `yes', `no', `disabled', or empty when we do not yet know.
-if test "x$with_x" = xno; then
-  # The user explicitly disabled X.
-  have_x=disabled
-else
-  case $x_includes,$x_libraries in #(
-    *\'*) as_fn_error $? "cannot use X directory names containing '" "$LINENO" 5;; #(
-    *,NONE | NONE,*) if ${ac_cv_have_x+:} false; then :
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
+$as_echo_n "checking host system type... " >&6; }
+if ${ac_cv_host+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  # One or both of the vars are not set, and there is no cached value.
-ac_x_includes=no ac_x_libraries=no
-rm -f -r conftest.dir
-if mkdir conftest.dir; then
-  cd conftest.dir
-  cat >Imakefile <<'_ACEOF'
-incroot:
-       @echo incroot='${INCROOT}'
-usrlibdir:
-       @echo usrlibdir='${USRLIBDIR}'
-libdir:
-       @echo libdir='${LIBDIR}'
-_ACEOF
-  if (export CC; ${XMKMF-xmkmf}) >/dev/null 2>/dev/null && test -f Makefile; then
-    # GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
-    for ac_var in incroot usrlibdir libdir; do
-      eval "ac_im_$ac_var=\`\${MAKE-make} $ac_var 2>/dev/null | sed -n 's/^$ac_var=//p'\`"
-    done
-    # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR.
-    for ac_extension in a so sl dylib la dll; do
-      if test ! -f "$ac_im_usrlibdir/libX11.$ac_extension" &&
-        test -f "$ac_im_libdir/libX11.$ac_extension"; then
-       ac_im_usrlibdir=$ac_im_libdir; break
-      fi
-    done
-    # Screen out bogus values from the imake configuration.  They are
-    # bogus both because they are the default anyway, and because
-    # using them would break gcc on systems where it needs fixed includes.
-    case $ac_im_incroot in
-       /usr/include) ac_x_includes= ;;
-       *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;;
-    esac
-    case $ac_im_usrlibdir in
-       /usr/lib | /usr/lib64 | /lib | /lib64) ;;
-       *) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;;
-    esac
-  fi
-  cd ..
-  rm -f -r conftest.dir
+  if test "x$host_alias" = x; then
+  ac_cv_host=$ac_cv_build
+else
+  ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
+    as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
 fi
 
-# Standard set of common directories for X headers.
-# Check X11 before X11Rn because it is often a symlink to the current release.
-ac_x_header_dirs='
-/usr/X11/include
-/usr/X11R7/include
-/usr/X11R6/include
-/usr/X11R5/include
-/usr/X11R4/include
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
+$as_echo "$ac_cv_host" >&6; }
+case $ac_cv_host in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
+esac
+host=$ac_cv_host
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_host
+shift
+host_cpu=$1
+host_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+host_os=$*
+IFS=$ac_save_IFS
+case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
 
-/usr/include/X11
-/usr/include/X11R7
-/usr/include/X11R6
-/usr/include/X11R5
-/usr/include/X11R4
 
-/usr/local/X11/include
-/usr/local/X11R7/include
-/usr/local/X11R6/include
-/usr/local/X11R5/include
-/usr/local/X11R4/include
 
-/usr/local/include/X11
-/usr/local/include/X11R7
-/usr/local/include/X11R6
-/usr/local/include/X11R5
-/usr/local/include/X11R4
 
-/usr/X386/include
-/usr/x386/include
-/usr/XFree86/include/X11
 
-/usr/include
-/usr/local/include
-/usr/unsupported/include
-/usr/athena/include
-/usr/local/x11r5/include
-/usr/lpp/Xamples/include
+  # IEEE behaviour is the default on all CPUs except Alpha and SH
+  # (according to the test results of Bruno Haible's ieeefp/fenv_default.m4
+  # and the GCC 4.1.2 manual).
+  case "$host_cpu" in
+    alpha*)
+      # On Alpha systems, a compiler option provides the behaviour.
+      # See the ieee(3) manual page, also available at
+      # <https://backdrift.org/man/tru64/man3/ieee.3.html>
+      if test -n "$GCC"; then
+        # GCC has the option -mieee.
+        # For full IEEE compliance (rarely needed), use option -mieee-with-inexact.
+        CPPFLAGS="$CPPFLAGS -mieee"
+      else
+        # Compaq (ex-DEC) C has the option -ieee, equivalent to -ieee_with_no_inexact.
+        # For full IEEE compliance (rarely needed), use option -ieee_with_inexact.
+        CPPFLAGS="$CPPFLAGS -ieee"
+      fi
+      ;;
+    sh*)
+      if test -n "$GCC"; then
+        # GCC has the option -mieee.
+        CPPFLAGS="$CPPFLAGS -mieee"
+      fi
+      ;;
+  esac
 
-/usr/openwin/include
-/usr/openwin/share/include'
 
-if test "$ac_x_includes" = no; then
-  # Guess where to find include files, by looking for Xlib.h.
-  # First, try using that file with no special directory specified.
+
+  # Pre-early section.
+
+
+
+
+  # Code from module absolute-header:
+  # Code from module alloca-opt:
+  # Code from module errno:
+  # Code from module extensions:
+  # Code from module extern-inline:
+  # Code from module float:
+  # Code from module fpieee:
+
+  # Code from module fprintf-posix:
+  # Code from module fpucw:
+  # Code from module frexp-nolibm:
+  # Code from module frexpl-nolibm:
+  # Code from module fseterr:
+  # Code from module git-version-gen:
+  # Code from module havelib:
+  # Code from module host-cpu-c-abi:
+  # Code from module include_next:
+  # Code from module isnand-nolibm:
+  # Code from module isnanf-nolibm:
+  # Code from module isnanl-nolibm:
+  # Code from module limits-h:
+  # Code from module localcharset:
+  # Code from module math:
+  # Code from module memchr:
+  # Code from module multiarch:
+  # Code from module nocrash:
+  # Code from module non-recursive-gnulib-prefix-hack:
+  # Code from module printf-frexp:
+  # Code from module printf-frexpl:
+  # Code from module printf-safe:
+  # Code from module signbit:
+  # Code from module size_max:
+  # Code from module snippet/arg-nonnull:
+  # Code from module snippet/c++defs:
+  # Code from module snippet/warn-on-use:
+  # Code from module snprintf:
+  # Code from module ssize_t:
+  # Code from module stddef:
+  # Code from module stdint:
+  # Code from module stdio:
+  # Code from module streq:
+  # Code from module string:
+  # Code from module sys_types:
+  # Code from module unitypes:
+  # Code from module uniwidth/base:
+  # Code from module uniwidth/width:
+  # Code from module vasnprintf:
+  # Code from module verify:
+  # Code from module vsnprintf:
+  # Code from module wchar:
+  # Code from module wctype-h:
+  # Code from module wcwidth:
+  # Code from module xsize:
+
+
+
+
+
+
+          LIBC_FATAL_STDERR_=1
+  export LIBC_FATAL_STDERR_
+
+ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default"
+if test "x$ac_cv_type_size_t" = xyes; then :
+
+else
+
+cat >>confdefs.h <<_ACEOF
+#define size_t unsigned int
+_ACEOF
+
+fi
+
+# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
+# for constant arguments.  Useless!
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5
+$as_echo_n "checking for working alloca.h... " >&6; }
+if ${ac_cv_working_alloca_h+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <X11/Xlib.h>
+#include <alloca.h>
+int
+main ()
+{
+char *p = (char *) alloca (2 * sizeof (int));
+                         if (p) return 0;
+  ;
+  return 0;
+}
 _ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  # We can compile using X headers with no special include directory.
-ac_x_includes=
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_working_alloca_h=yes
 else
-  for ac_dir in $ac_x_header_dirs; do
-  if test -r "$ac_dir/X11/Xlib.h"; then
-    ac_x_includes=$ac_dir
-    break
-  fi
-done
+  ac_cv_working_alloca_h=no
 fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-fi # $ac_x_includes = no
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5
+$as_echo "$ac_cv_working_alloca_h" >&6; }
+if test $ac_cv_working_alloca_h = yes; then
 
-if test "$ac_x_libraries" = no; then
-  # Check for the libraries.
-  # See if we find them without any special options.
-  # Don't add to $LIBS permanently.
-  ac_save_LIBS=$LIBS
-  LIBS="-lX11 $LIBS"
+$as_echo "#define HAVE_ALLOCA_H 1" >>confdefs.h
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5
+$as_echo_n "checking for alloca... " >&6; }
+if ${ac_cv_func_alloca_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <X11/Xlib.h>
+#ifdef __GNUC__
+# define alloca __builtin_alloca
+#else
+# ifdef _MSC_VER
+#  include <malloc.h>
+#  define alloca _alloca
+# else
+#  ifdef HAVE_ALLOCA_H
+#   include <alloca.h>
+#  else
+#   ifdef _AIX
+ #pragma alloca
+#   else
+#    ifndef alloca /* predefined by HP cc +Olibcalls */
+void *alloca (size_t);
+#    endif
+#   endif
+#  endif
+# endif
+#endif
+
 int
 main ()
 {
-XrmInitialize ()
+char *p = (char *) alloca (1);
+                                   if (p) return 0;
   ;
   return 0;
 }
 _ACEOF
 if ac_fn_c_try_link "$LINENO"; then :
-  LIBS=$ac_save_LIBS
-# We can link X programs with no special library path.
-ac_x_libraries=
+  ac_cv_func_alloca_works=yes
 else
-  LIBS=$ac_save_LIBS
-for ac_dir in `$as_echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g`
-do
-  # Don't even attempt the hair of trying to link an X program!
-  for ac_extension in a so sl dylib la dll; do
-    if test -r "$ac_dir/libX11.$ac_extension"; then
-      ac_x_libraries=$ac_dir
-      break 2
-    fi
-  done
-done
+  ac_cv_func_alloca_works=no
 fi
 rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
-fi # $ac_x_libraries = no
-
-case $ac_x_includes,$ac_x_libraries in #(
-  no,* | *,no | *\'*)
-    # Didn't find X, or a directory has "'" in its name.
-    ac_cv_have_x="have_x=no";; #(
-  *)
-    # Record where we found X for the cache.
-    ac_cv_have_x="have_x=yes\
-       ac_x_includes='$ac_x_includes'\
-       ac_x_libraries='$ac_x_libraries'"
-esac
 fi
-;; #(
-    *) have_x=yes;;
-  esac
-  eval "$ac_cv_have_x"
-fi # $with_x != no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_alloca_works" >&5
+$as_echo "$ac_cv_func_alloca_works" >&6; }
+
+if test $ac_cv_func_alloca_works = yes; then
+
+$as_echo "#define HAVE_ALLOCA 1" >>confdefs.h
 
-if test "$have_x" != yes; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_x" >&5
-$as_echo "$have_x" >&6; }
-  no_x=yes
 else
-  # If each of the values was on the command line, it overrides each guess.
-  test "x$x_includes" = xNONE && x_includes=$ac_x_includes
-  test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries
-  # Update the cache value to reflect the command line values.
-  ac_cv_have_x="have_x=yes\
-       ac_x_includes='$x_includes'\
-       ac_x_libraries='$x_libraries'"
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: libraries $x_libraries, headers $x_includes" >&5
-$as_echo "libraries $x_libraries, headers $x_includes" >&6; }
-fi
+  # The SVR3 libPW and SVR4 libucb both contain incompatible functions
+# that cause trouble.  Some versions do not even contain alloca or
+# contain a buggy version.  If you still want to use their alloca,
+# use ar to extract alloca.o from them instead of compiling alloca.c.
 
-if test "$no_x" = yes; then
-  # Not all programs may use this symbol, but it does not hurt to define it.
 
-$as_echo "#define X_DISPLAY_MISSING 1" >>confdefs.h
 
-  X_CFLAGS= X_PRE_LIBS= X_LIBS= X_EXTRA_LIBS=
-else
-  if test -n "$x_includes"; then
-    X_CFLAGS="$X_CFLAGS -I$x_includes"
-  fi
 
-  # It would also be nice to do this for all -L options, not just this one.
-  if test -n "$x_libraries"; then
-    X_LIBS="$X_LIBS -L$x_libraries"
-    # For Solaris; some versions of Sun CC require a space after -R and
-    # others require no space.  Words are not sufficient . . . .
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -R must be followed by a space" >&5
-$as_echo_n "checking whether -R must be followed by a space... " >&6; }
-    ac_xsave_LIBS=$LIBS; LIBS="$LIBS -R$x_libraries"
-    ac_xsave_c_werror_flag=$ac_c_werror_flag
-    ac_c_werror_flag=yes
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
 
-int
-main ()
-{
+ALLOCA=\${LIBOBJDIR}alloca.$ac_objext
 
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-       X_LIBS="$X_LIBS -R$x_libraries"
+$as_echo "#define C_ALLOCA 1" >>confdefs.h
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether \`alloca.c' needs Cray hooks" >&5
+$as_echo_n "checking whether \`alloca.c' needs Cray hooks... " >&6; }
+if ${ac_cv_os_cray+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  LIBS="$ac_xsave_LIBS -R $x_libraries"
-       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
+#if defined CRAY && ! defined CRAY2
+webecray
+#else
+wenotbecray
+#endif
 
-int
-main ()
-{
-
-  ;
-  return 0;
-}
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-         X_LIBS="$X_LIBS -R $x_libraries"
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "webecray" >/dev/null 2>&1; then :
+  ac_cv_os_cray=yes
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: neither works" >&5
-$as_echo "neither works" >&6; }
+  ac_cv_os_cray=no
 fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
+rm -f conftest*
+
 fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-    ac_c_werror_flag=$ac_xsave_c_werror_flag
-    LIBS=$ac_xsave_LIBS
-  fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_os_cray" >&5
+$as_echo "$ac_cv_os_cray" >&6; }
+if test $ac_cv_os_cray = yes; then
+  for ac_func in _getb67 GETB67 getb67; do
+    as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
 
-  # Check for system-dependent libraries X programs must link with.
-  # Do this before checking for the system-independent R6 libraries
-  # (-lICE), since we may need -lsocket or whatever for X linking.
+cat >>confdefs.h <<_ACEOF
+#define CRAY_STACKSEG_END $ac_func
+_ACEOF
 
-  if test "$ISC" = yes; then
-    X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl_s -linet"
-  else
-    # Martyn Johnson says this is needed for Ultrix, if the X
-    # libraries were built with DECnet support.  And Karl Berry says
-    # the Alpha needs dnet_stub (dnet does not exist).
-    ac_xsave_LIBS="$LIBS"; LIBS="$LIBS $X_LIBS -lX11"
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
+    break
+fi
 
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char XOpenDisplay ();
-int
-main ()
-{
-return XOpenDisplay ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+  done
+fi
 
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dnet_ntoa in -ldnet" >&5
-$as_echo_n "checking for dnet_ntoa in -ldnet... " >&6; }
-if ${ac_cv_lib_dnet_dnet_ntoa+:} false; then :
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5
+$as_echo_n "checking stack direction for C alloca... " >&6; }
+if ${ac_cv_c_stack_direction+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldnet  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+  if test "$cross_compiling" = yes; then :
+  ac_cv_c_stack_direction=0
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
+$ac_includes_default
+int
+find_stack_direction (int *addr, int depth)
+{
+  int dir, dummy = 0;
+  if (! addr)
+    addr = &dummy;
+  *addr = addr < &dummy ? 1 : addr == &dummy ? 0 : -1;
+  dir = depth ? find_stack_direction (addr, depth - 1) : 0;
+  return dir + dummy;
+}
 
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dnet_ntoa ();
 int
-main ()
+main (int argc, char **argv)
 {
-return dnet_ntoa ();
-  ;
-  return 0;
+  return find_stack_direction (0, argc + !argv + 20) < 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_dnet_dnet_ntoa=yes
+if ac_fn_c_try_run "$LINENO"; then :
+  ac_cv_c_stack_direction=1
 else
-  ac_cv_lib_dnet_dnet_ntoa=no
+  ac_cv_c_stack_direction=-1
 fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dnet_dnet_ntoa" >&5
-$as_echo "$ac_cv_lib_dnet_dnet_ntoa" >&6; }
-if test "x$ac_cv_lib_dnet_dnet_ntoa" = xyes; then :
-  X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet"
+
 fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5
+$as_echo "$ac_cv_c_stack_direction" >&6; }
+cat >>confdefs.h <<_ACEOF
+#define STACK_DIRECTION $ac_cv_c_stack_direction
+_ACEOF
 
-    if test $ac_cv_lib_dnet_dnet_ntoa = no; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dnet_ntoa in -ldnet_stub" >&5
-$as_echo_n "checking for dnet_ntoa in -ldnet_stub... " >&6; }
-if ${ac_cv_lib_dnet_stub_dnet_ntoa+:} false; then :
+
+fi
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the preprocessor supports include_next" >&5
+$as_echo_n "checking whether the preprocessor supports include_next... " >&6; }
+if ${gl_cv_have_include_next+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldnet_stub  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
+  rm -rf conftestd1a conftestd1b conftestd2
+     mkdir conftestd1a conftestd1b conftestd2
+                                                  cat <<EOF > conftestd1a/conftest.h
+#define DEFINED_IN_CONFTESTD1
+#include_next <conftest.h>
+#ifdef DEFINED_IN_CONFTESTD2
+int foo;
+#else
+#error "include_next doesn't work"
 #endif
-char dnet_ntoa ();
-int
-main ()
-{
-return dnet_ntoa ();
-  ;
-  return 0;
-}
+EOF
+     cat <<EOF > conftestd1b/conftest.h
+#define DEFINED_IN_CONFTESTD1
+#include <stdio.h>
+#include_next <conftest.h>
+#ifdef DEFINED_IN_CONFTESTD2
+int foo;
+#else
+#error "include_next doesn't work"
+#endif
+EOF
+     cat <<EOF > conftestd2/conftest.h
+#ifndef DEFINED_IN_CONFTESTD1
+#error "include_next test doesn't work"
+#endif
+#define DEFINED_IN_CONFTESTD2
+EOF
+     gl_save_CPPFLAGS="$CPPFLAGS"
+     CPPFLAGS="$gl_save_CPPFLAGS -Iconftestd1b -Iconftestd2"
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <conftest.h>
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_dnet_stub_dnet_ntoa=yes
+if ac_fn_c_try_compile "$LINENO"; then :
+  gl_cv_have_include_next=yes
 else
-  ac_cv_lib_dnet_stub_dnet_ntoa=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5
-$as_echo "$ac_cv_lib_dnet_stub_dnet_ntoa" >&6; }
-if test "x$ac_cv_lib_dnet_stub_dnet_ntoa" = xyes; then :
-  X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub"
+  CPPFLAGS="$gl_save_CPPFLAGS -Iconftestd1a -Iconftestd2"
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <conftest.h>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gl_cv_have_include_next=buggy
+else
+  gl_cv_have_include_next=no
 fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
-    fi
 fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-    LIBS="$ac_xsave_LIBS"
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+     CPPFLAGS="$gl_save_CPPFLAGS"
+     rm -rf conftestd1a conftestd1b conftestd2
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_have_include_next" >&5
+$as_echo "$gl_cv_have_include_next" >&6; }
+  PRAGMA_SYSTEM_HEADER=
+  if test $gl_cv_have_include_next = yes; then
+    INCLUDE_NEXT=include_next
+    INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include_next
+    if test -n "$GCC"; then
+      PRAGMA_SYSTEM_HEADER='#pragma GCC system_header'
+    fi
+  else
+    if test $gl_cv_have_include_next = buggy; then
+      INCLUDE_NEXT=include
+      INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include_next
+    else
+      INCLUDE_NEXT=include
+      INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include
+    fi
+  fi
 
-    # msh@cis.ufl.edu says -lnsl (and -lsocket) are needed for his 386/AT,
-    # to get the SysV transport functions.
-    # Chad R. Larson says the Pyramis MIS-ES running DC/OSx (SVR4)
-    # needs -lnsl.
-    # The nsl library prevents programs from opening the X display
-    # on Irix 5.2, according to T.E. Dickey.
-    # The functions gethostbyname, getservbyname, and inet_addr are
-    # in -lbsd on LynxOS 3.0.1/i386, according to Lars Hecking.
-    ac_fn_c_check_func "$LINENO" "gethostbyname" "ac_cv_func_gethostbyname"
-if test "x$ac_cv_func_gethostbyname" = xyes; then :
 
-fi
 
-    if test $ac_cv_func_gethostbyname = no; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lnsl" >&5
-$as_echo_n "checking for gethostbyname in -lnsl... " >&6; }
-if ${ac_cv_lib_nsl_gethostbyname+:} false; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether system header files limit the line length" >&5
+$as_echo_n "checking whether system header files limit the line length... " >&6; }
+if ${gl_cv_pragma_columns+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lnsl  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
+#ifdef __TANDEM
+choke me
 #endif
-char gethostbyname ();
-int
-main ()
-{
-return gethostbyname ();
-  ;
-  return 0;
-}
+
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_nsl_gethostbyname=yes
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "choke me" >/dev/null 2>&1; then :
+  gl_cv_pragma_columns=yes
 else
-  ac_cv_lib_nsl_gethostbyname=no
+  gl_cv_pragma_columns=no
 fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostbyname" >&5
-$as_echo "$ac_cv_lib_nsl_gethostbyname" >&6; }
-if test "x$ac_cv_lib_nsl_gethostbyname" = xyes; then :
-  X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl"
+rm -f conftest*
+
+
 fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_pragma_columns" >&5
+$as_echo "$gl_cv_pragma_columns" >&6; }
+  if test $gl_cv_pragma_columns = yes; then
+    PRAGMA_COLUMNS="#pragma COLUMNS 10000"
+  else
+    PRAGMA_COLUMNS=
+  fi
 
-      if test $ac_cv_lib_nsl_gethostbyname = no; then
-       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lbsd" >&5
-$as_echo_n "checking for gethostbyname in -lbsd... " >&6; }
-if ${ac_cv_lib_bsd_gethostbyname+:} false; then :
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for complete errno.h" >&5
+$as_echo_n "checking for complete errno.h... " >&6; }
+if ${gl_cv_header_errno_h_complete+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lbsd  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
+#include <errno.h>
+#if !defined ETXTBSY
+booboo
 #endif
-char gethostbyname ();
-int
-main ()
-{
-return gethostbyname ();
-  ;
-  return 0;
-}
+#if !defined ENOMSG
+booboo
+#endif
+#if !defined EIDRM
+booboo
+#endif
+#if !defined ENOLINK
+booboo
+#endif
+#if !defined EPROTO
+booboo
+#endif
+#if !defined EMULTIHOP
+booboo
+#endif
+#if !defined EBADMSG
+booboo
+#endif
+#if !defined EOVERFLOW
+booboo
+#endif
+#if !defined ENOTSUP
+booboo
+#endif
+#if !defined ENETRESET
+booboo
+#endif
+#if !defined ECONNABORTED
+booboo
+#endif
+#if !defined ESTALE
+booboo
+#endif
+#if !defined EDQUOT
+booboo
+#endif
+#if !defined ECANCELED
+booboo
+#endif
+#if !defined EOWNERDEAD
+booboo
+#endif
+#if !defined ENOTRECOVERABLE
+booboo
+#endif
+#if !defined EILSEQ
+booboo
+#endif
+
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_bsd_gethostbyname=yes
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "booboo" >/dev/null 2>&1; then :
+  gl_cv_header_errno_h_complete=no
 else
-  ac_cv_lib_bsd_gethostbyname=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
+  gl_cv_header_errno_h_complete=yes
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsd_gethostbyname" >&5
-$as_echo "$ac_cv_lib_bsd_gethostbyname" >&6; }
-if test "x$ac_cv_lib_bsd_gethostbyname" = xyes; then :
-  X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd"
+rm -f conftest*
+
+
 fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_errno_h_complete" >&5
+$as_echo "$gl_cv_header_errno_h_complete" >&6; }
+  if test $gl_cv_header_errno_h_complete = yes; then
+    ERRNO_H=''
+  else
 
-      fi
-    fi
 
-    # lieder@skyler.mavd.honeywell.com says without -lsocket,
-    # socket/setsockopt and other routines are undefined under SCO ODT
-    # 2.0.  But -lsocket is broken on IRIX 5.2 (and is not necessary
-    # on later versions), says Simon Leinen: it contains gethostby*
-    # variants that don't use the name server (or something).  -lsocket
-    # must be given before -lnsl if both are needed.  We assume that
-    # if connect needs -lnsl, so does gethostbyname.
-    ac_fn_c_check_func "$LINENO" "connect" "ac_cv_func_connect"
-if test "x$ac_cv_func_connect" = xyes; then :
 
-fi
 
-    if test $ac_cv_func_connect = no; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for connect in -lsocket" >&5
-$as_echo_n "checking for connect in -lsocket... " >&6; }
-if ${ac_cv_lib_socket_connect+:} false; then :
+
+
+
+
+     if test $gl_cv_have_include_next = yes; then
+       gl_cv_next_errno_h='<'errno.h'>'
+     else
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <errno.h>" >&5
+$as_echo_n "checking absolute name of <errno.h>... " >&6; }
+if ${gl_cv_next_errno_h+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lsocket $X_EXTRA_LIBS $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
 
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char connect ();
-int
-main ()
-{
-return connect ();
-  ;
-  return 0;
-}
+
+
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <errno.h>
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_socket_connect=yes
-else
-  ac_cv_lib_socket_connect=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_connect" >&5
-$as_echo "$ac_cv_lib_socket_connect" >&6; }
-if test "x$ac_cv_lib_socket_connect" = xyes; then :
-  X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS"
+                case "$host_os" in
+    aix*) gl_absname_cpp="$ac_cpp -C" ;;
+    *)    gl_absname_cpp="$ac_cpp" ;;
+  esac
+
+  case "$host_os" in
+    mingw*)
+                                          gl_dirsep_regex='[/\\]'
+      ;;
+    *)
+      gl_dirsep_regex='\/'
+      ;;
+  esac
+      gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g'
+  gl_header_literal_regex=`echo 'errno.h' \
+                           | sed -e "$gl_make_literal_regex_sed"`
+  gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{
+      s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/
+      s|^/[^/]|//&|
+      p
+      q
+    }'
+
+        gl_cv_absolute_errno_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+  sed -n "$gl_absolute_header_sed"`
+
+           gl_header=$gl_cv_absolute_errno_h
+           gl_cv_next_errno_h='"'$gl_header'"'
+
+
 fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_errno_h" >&5
+$as_echo "$gl_cv_next_errno_h" >&6; }
+     fi
+     NEXT_ERRNO_H=$gl_cv_next_errno_h
 
-    fi
+     if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+       gl_next_as_first_directive='<'errno.h'>'
+     else
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+       gl_next_as_first_directive=$gl_cv_next_errno_h
+     fi
+     NEXT_AS_FIRST_DIRECTIVE_ERRNO_H=$gl_next_as_first_directive
 
-    # Guillermo Gomez says -lposix is necessary on A/UX.
-    ac_fn_c_check_func "$LINENO" "remove" "ac_cv_func_remove"
-if test "x$ac_cv_func_remove" = xyes; then :
 
+
+
+    ERRNO_H='errno.h'
+  fi
+
+   if test -n "$ERRNO_H"; then
+  GL_GENERATE_ERRNO_H_TRUE=
+  GL_GENERATE_ERRNO_H_FALSE='#'
+else
+  GL_GENERATE_ERRNO_H_TRUE='#'
+  GL_GENERATE_ERRNO_H_FALSE=
 fi
 
-    if test $ac_cv_func_remove = no; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for remove in -lposix" >&5
-$as_echo_n "checking for remove in -lposix... " >&6; }
-if ${ac_cv_lib_posix_remove+:} false; then :
+
+  if test -n "$ERRNO_H"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for EMULTIHOP value" >&5
+$as_echo_n "checking for EMULTIHOP value... " >&6; }
+if ${gl_cv_header_errno_h_EMULTIHOP+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lposix  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
+#include <errno.h>
+#ifdef EMULTIHOP
+yes
 #endif
-char remove ();
-int
-main ()
-{
-return remove ();
-  ;
-  return 0;
-}
+
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_posix_remove=yes
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "yes" >/dev/null 2>&1; then :
+  gl_cv_header_errno_h_EMULTIHOP=yes
 else
-  ac_cv_lib_posix_remove=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
+  gl_cv_header_errno_h_EMULTIHOP=no
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_posix_remove" >&5
-$as_echo "$ac_cv_lib_posix_remove" >&6; }
-if test "x$ac_cv_lib_posix_remove" = xyes; then :
-  X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix"
+rm -f conftest*
+
+      if test $gl_cv_header_errno_h_EMULTIHOP = no; then
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+#ifdef EMULTIHOP
+yes
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "yes" >/dev/null 2>&1; then :
+  gl_cv_header_errno_h_EMULTIHOP=hidden
 fi
+rm -f conftest*
 
-    fi
+        if test $gl_cv_header_errno_h_EMULTIHOP = hidden; then
+                              if ac_fn_c_compute_int "$LINENO" "EMULTIHOP" "gl_cv_header_errno_h_EMULTIHOP"        "
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+/* The following two lines are a workaround against an autoconf-2.52 bug.  */
+#include <stdio.h>
+#include <stdlib.h>
+"; then :
 
-    # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay.
-    ac_fn_c_check_func "$LINENO" "shmat" "ac_cv_func_shmat"
-if test "x$ac_cv_func_shmat" = xyes; then :
+fi
+
+        fi
+      fi
 
 fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_errno_h_EMULTIHOP" >&5
+$as_echo "$gl_cv_header_errno_h_EMULTIHOP" >&6; }
+    case $gl_cv_header_errno_h_EMULTIHOP in
+      yes | no)
+        EMULTIHOP_HIDDEN=0; EMULTIHOP_VALUE=
+        ;;
+      *)
+        EMULTIHOP_HIDDEN=1; EMULTIHOP_VALUE="$gl_cv_header_errno_h_EMULTIHOP"
+        ;;
+    esac
 
-    if test $ac_cv_func_shmat = no; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shmat in -lipc" >&5
-$as_echo_n "checking for shmat in -lipc... " >&6; }
-if ${ac_cv_lib_ipc_shmat+:} false; then :
+
+  fi
+
+
+  if test -n "$ERRNO_H"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ENOLINK value" >&5
+$as_echo_n "checking for ENOLINK value... " >&6; }
+if ${gl_cv_header_errno_h_ENOLINK+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lipc  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
+#include <errno.h>
+#ifdef ENOLINK
+yes
 #endif
-char shmat ();
-int
-main ()
-{
-return shmat ();
-  ;
-  return 0;
-}
+
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_ipc_shmat=yes
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "yes" >/dev/null 2>&1; then :
+  gl_cv_header_errno_h_ENOLINK=yes
 else
-  ac_cv_lib_ipc_shmat=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ipc_shmat" >&5
-$as_echo "$ac_cv_lib_ipc_shmat" >&6; }
-if test "x$ac_cv_lib_ipc_shmat" = xyes; then :
-  X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc"
+  gl_cv_header_errno_h_ENOLINK=no
 fi
+rm -f conftest*
 
-    fi
-  fi
+      if test $gl_cv_header_errno_h_ENOLINK = no; then
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
-  # Check for libraries that X11R6 Xt/Xaw programs need.
-  ac_save_LDFLAGS=$LDFLAGS
-  test -n "$x_libraries" && LDFLAGS="$LDFLAGS -L$x_libraries"
-  # SM needs ICE to (dynamically) link under SunOS 4.x (so we have to
-  # check for ICE first), but we must link in the order -lSM -lICE or
-  # we get undefined symbols.  So assume we have SM if we have ICE.
-  # These have to be linked with before -lX11, unlike the other
-  # libraries we check for below, so use a different variable.
-  # John Interrante, Karl Berry
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for IceConnectionNumber in -lICE" >&5
-$as_echo_n "checking for IceConnectionNumber in -lICE... " >&6; }
-if ${ac_cv_lib_ICE_IceConnectionNumber+:} false; then :
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+#ifdef ENOLINK
+yes
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "yes" >/dev/null 2>&1; then :
+  gl_cv_header_errno_h_ENOLINK=hidden
+fi
+rm -f conftest*
+
+        if test $gl_cv_header_errno_h_ENOLINK = hidden; then
+                              if ac_fn_c_compute_int "$LINENO" "ENOLINK" "gl_cv_header_errno_h_ENOLINK"        "
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+/* The following two lines are a workaround against an autoconf-2.52 bug.  */
+#include <stdio.h>
+#include <stdlib.h>
+"; then :
+
+fi
+
+        fi
+      fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_errno_h_ENOLINK" >&5
+$as_echo "$gl_cv_header_errno_h_ENOLINK" >&6; }
+    case $gl_cv_header_errno_h_ENOLINK in
+      yes | no)
+        ENOLINK_HIDDEN=0; ENOLINK_VALUE=
+        ;;
+      *)
+        ENOLINK_HIDDEN=1; ENOLINK_VALUE="$gl_cv_header_errno_h_ENOLINK"
+        ;;
+    esac
+
+
+  fi
+
+
+  if test -n "$ERRNO_H"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for EOVERFLOW value" >&5
+$as_echo_n "checking for EOVERFLOW value... " >&6; }
+if ${gl_cv_header_errno_h_EOVERFLOW+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lICE $X_EXTRA_LIBS $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
+#include <errno.h>
+#ifdef EOVERFLOW
+yes
 #endif
-char IceConnectionNumber ();
-int
-main ()
-{
-return IceConnectionNumber ();
-  ;
-  return 0;
-}
+
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_ICE_IceConnectionNumber=yes
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "yes" >/dev/null 2>&1; then :
+  gl_cv_header_errno_h_EOVERFLOW=yes
 else
-  ac_cv_lib_ICE_IceConnectionNumber=no
+  gl_cv_header_errno_h_EOVERFLOW=no
 fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
+rm -f conftest*
+
+      if test $gl_cv_header_errno_h_EOVERFLOW = no; then
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+#ifdef EOVERFLOW
+yes
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "yes" >/dev/null 2>&1; then :
+  gl_cv_header_errno_h_EOVERFLOW=hidden
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5
-$as_echo "$ac_cv_lib_ICE_IceConnectionNumber" >&6; }
-if test "x$ac_cv_lib_ICE_IceConnectionNumber" = xyes; then :
-  X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE"
+rm -f conftest*
+
+        if test $gl_cv_header_errno_h_EOVERFLOW = hidden; then
+                              if ac_fn_c_compute_int "$LINENO" "EOVERFLOW" "gl_cv_header_errno_h_EOVERFLOW"        "
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+/* The following two lines are a workaround against an autoconf-2.52 bug.  */
+#include <stdio.h>
+#include <stdlib.h>
+"; then :
+
 fi
 
-  LDFLAGS=$ac_save_LDFLAGS
+        fi
+      fi
 
 fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_errno_h_EOVERFLOW" >&5
+$as_echo "$gl_cv_header_errno_h_EOVERFLOW" >&6; }
+    case $gl_cv_header_errno_h_EOVERFLOW in
+      yes | no)
+        EOVERFLOW_HIDDEN=0; EOVERFLOW_VALUE=
+        ;;
+      *)
+        EOVERFLOW_HIDDEN=1; EOVERFLOW_VALUE="$gl_cv_header_errno_h_EOVERFLOW"
+        ;;
+    esac
 
 
-   groff_no_x=$no_x
-   if test -z "$groff_no_x"; then
-     OLDCFLAGS=$CFLAGS
-     OLDLDFLAGS=$LDFLAGS
-     OLDLIBS=$LIBS
-     CFLAGS="$CFLAGS $X_CFLAGS"
-     LDFLAGS="$LDFLAGS $X_LIBS"
-     LIBS="$LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS"
+  fi
 
-     LIBS="$LIBS -lXaw"
-     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Xaw library and header files" >&5
-$as_echo_n "checking for Xaw library and header files... " >&6; }
-     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
 
 
 
-#include <X11/Intrinsic.h>
-#include <X11/Xaw/Simple.h>
 
 
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdint.h" >&5
+$as_echo_n "checking for stdint.h... " >&6; }
+if ${gl_cv_header_stdint_h+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/types.h>
+            #include <stdint.h>
 int
 main ()
 {
-
+uintmax_t i = (uintmax_t) -1; return !i;
   ;
   return 0;
 }
-
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_compile "$LINENO"; then :
+  gl_cv_header_stdint_h=yes
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-       groff_no_x="yes"
+  gl_cv_header_stdint_h=no
 fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_stdint_h" >&5
+$as_echo "$gl_cv_header_stdint_h" >&6; }
+  if test $gl_cv_header_stdint_h = yes; then
 
-     LIBS="$LIBS -lXmu"
-     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Xmu library and header files" >&5
-$as_echo_n "checking for Xmu library and header files... " >&6; }
-     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STDINT_H_WITH_UINTMAX 1
+_ACEOF
 
+  fi
 
 
-#include <X11/Intrinsic.h>
-#include <X11/Xmu/Converters.h>
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for inttypes.h" >&5
+$as_echo_n "checking for inttypes.h... " >&6; }
+if ${gl_cv_header_inttypes_h+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
+#include <sys/types.h>
+#include <inttypes.h>
 
 int
 main ()
 {
-
+uintmax_t i = (uintmax_t) -1; return !i;
   ;
   return 0;
 }
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gl_cv_header_inttypes_h=yes
+else
+  gl_cv_header_inttypes_h=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_inttypes_h" >&5
+$as_echo "$gl_cv_header_inttypes_h" >&6; }
+  if test $gl_cv_header_inttypes_h = yes; then
 
+cat >>confdefs.h <<_ACEOF
+#define HAVE_INTTYPES_H_WITH_UINTMAX 1
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+
+  fi
+
+
+
+
+
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether printf supports size specifiers as in C99" >&5
+$as_echo_n "checking whether printf supports size specifiers as in C99... " >&6; }
+if ${gl_cv_func_printf_sizes_c99+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-       groff_no_x="yes"
+
+      if test "$cross_compiling" = yes; then :
+
+         case "$host_os" in
+                                 # Guess yes on glibc systems.
+           *-gnu* | gnu*)        gl_cv_func_printf_sizes_c99="guessing yes";;
+                                 # Guess yes on FreeBSD >= 5.
+           freebsd[1-4].*)       gl_cv_func_printf_sizes_c99="guessing no";;
+           freebsd* | kfreebsd*) gl_cv_func_printf_sizes_c99="guessing yes";;
+                                 # Guess yes on Mac OS X >= 10.3.
+           darwin[1-6].*)        gl_cv_func_printf_sizes_c99="guessing no";;
+           darwin*)              gl_cv_func_printf_sizes_c99="guessing yes";;
+                                 # Guess yes on OpenBSD >= 3.9.
+           openbsd[1-2].* | openbsd3.[0-8] | openbsd3.[0-8].*)
+                                 gl_cv_func_printf_sizes_c99="guessing no";;
+           openbsd*)             gl_cv_func_printf_sizes_c99="guessing yes";;
+                                 # Guess yes on Solaris >= 2.10.
+           solaris2.[1-9][0-9]*) gl_cv_func_printf_sizes_c99="guessing yes";;
+           solaris*)             gl_cv_func_printf_sizes_c99="guessing no";;
+                                 # Guess yes on NetBSD >= 3.
+           netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*)
+                                 gl_cv_func_printf_sizes_c99="guessing no";;
+           netbsd*)              gl_cv_func_printf_sizes_c99="guessing yes";;
+                                 # Guess yes on MSVC, no on mingw.
+           mingw*)               cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#ifdef _MSC_VER
+ Known
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "Known" >/dev/null 2>&1; then :
+  gl_cv_func_printf_sizes_c99="guessing yes"
+else
+  gl_cv_func_printf_sizes_c99="guessing no"
 fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
+rm -f conftest*
 
-     CFLAGS=$OLDCFLAGS
-     LDFLAGS=$OLDLDFLAGS
-     LIBS=$OLDLIBS
-   fi
+                                 ;;
+                                 # If we don't know, assume the worst.
+           *)                    gl_cv_func_printf_sizes_c99="guessing no";;
+         esac
 
-   if test "x$groff_no_x" = "xyes"; then
-     { $as_echo "$as_me:${as_lineno-$LINENO}: gxditview and xtotroff won't be built" >&5
-$as_echo "$as_me: gxditview and xtotroff won't be built" >&6;}
-   else
-     XDEVDIRS="font/devX75 font/devX75-12 font/devX100 font/devX100-12"
-     XPROGDIRS="src/devices/xditview src/utils/xtotroff"
-     XLIBDIRS="src/libs/libxutil"
-   fi
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <stddef.h>
+#include <stdio.h>
+#include <string.h>
+#include <sys/types.h>
+#if HAVE_STDINT_H_WITH_UINTMAX
+# include <stdint.h>
+#endif
+#if HAVE_INTTYPES_H_WITH_UINTMAX
+# include <inttypes.h>
+#endif
+static char buf[100];
+int main ()
+{
+  int result = 0;
+#if HAVE_STDINT_H_WITH_UINTMAX || HAVE_INTTYPES_H_WITH_UINTMAX
+  buf[0] = '\0';
+  if (sprintf (buf, "%ju %d", (uintmax_t) 12345671, 33, 44, 55) < 0
+      || strcmp (buf, "12345671 33") != 0)
+    result |= 1;
+#else
+  result |= 1;
+#endif
+  buf[0] = '\0';
+  if (sprintf (buf, "%zu %d", (size_t) 12345672, 33, 44, 55) < 0
+      || strcmp (buf, "12345672 33") != 0)
+    result |= 2;
+  buf[0] = '\0';
+  if (sprintf (buf, "%tu %d", (ptrdiff_t) 12345673, 33, 44, 55) < 0
+      || strcmp (buf, "12345673 33") != 0)
+    result |= 4;
+  buf[0] = '\0';
+  if (sprintf (buf, "%Lg %d", (long double) 1.5, 33, 44, 55) < 0
+      || strcmp (buf, "1.5 33") != 0)
+    result |= 8;
+  return result;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_printf_sizes_c99=yes
+else
+  gl_cv_func_printf_sizes_c99=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
 
 
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_printf_sizes_c99" >&5
+$as_echo "$gl_cv_func_printf_sizes_c99" >&6; }
 
 
 
-# Check whether --with-appresdir was given.
-if test "${with_appresdir+set}" = set; then :
-  withval=$with_appresdir;
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether printf supports 'long double' arguments" >&5
+$as_echo_n "checking whether printf supports 'long double' arguments... " >&6; }
+if ${gl_cv_func_printf_long_double+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+      if test "$cross_compiling" = yes; then :
+  case "$host_os" in
+           beos*)  gl_cv_func_printf_long_double="guessing no";;
+                   # Guess yes on MSVC, no on mingw.
+           mingw*) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#ifdef _MSC_VER
+ Known
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "Known" >/dev/null 2>&1; then :
+  gl_cv_func_printf_long_double="guessing yes"
+else
+  gl_cv_func_printf_long_double="guessing no"
 fi
+rm -f conftest*
 
-if test -z "$groff_no_x"; then
-     if test "x$with_appresdir" = "x"; then
-       if test "x$prefix" = "xNONE"; then
-         appresdir=$ac_default_prefix/lib/X11/app-defaults
-       else
-         appresdir=$prefix/lib/X11/app-defaults
-       fi
+                   ;;
+           *)      gl_cv_func_printf_long_double="guessing yes";;
+         esac
+
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <stdio.h>
+#include <string.h>
+static char buf[10000];
+int main ()
+{
+  int result = 0;
+  buf[0] = '\0';
+  if (sprintf (buf, "%Lf %d", 1.75L, 33, 44, 55) < 0
+      || strcmp (buf, "1.750000 33") != 0)
+    result |= 1;
+  buf[0] = '\0';
+  if (sprintf (buf, "%Le %d", 1.75L, 33, 44, 55) < 0
+      || strcmp (buf, "1.750000e+00 33") != 0)
+    result |= 2;
+  buf[0] = '\0';
+  if (sprintf (buf, "%Lg %d", 1.75L, 33, 44, 55) < 0
+      || strcmp (buf, "1.75 33") != 0)
+    result |= 4;
+  return result;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_printf_long_double=yes
+else
+  gl_cv_func_printf_long_double=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_printf_long_double" >&5
+$as_echo "$gl_cv_func_printf_long_double" >&6; }
+
+
+
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether printf supports infinite 'double' arguments" >&5
+$as_echo_n "checking whether printf supports infinite 'double' arguments... " >&6; }
+if ${gl_cv_func_printf_infinite+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+      if test "$cross_compiling" = yes; then :
+
+         case "$host_os" in
+                                 # Guess yes on glibc systems.
+           *-gnu* | gnu*)        gl_cv_func_printf_infinite="guessing yes";;
+                                 # Guess yes on FreeBSD >= 6.
+           freebsd[1-5].*)       gl_cv_func_printf_infinite="guessing no";;
+           freebsd* | kfreebsd*) gl_cv_func_printf_infinite="guessing yes";;
+                                 # Guess yes on Mac OS X >= 10.3.
+           darwin[1-6].*)        gl_cv_func_printf_infinite="guessing no";;
+           darwin*)              gl_cv_func_printf_infinite="guessing yes";;
+                                 # Guess yes on HP-UX >= 11.
+           hpux[7-9]* | hpux10*) gl_cv_func_printf_infinite="guessing no";;
+           hpux*)                gl_cv_func_printf_infinite="guessing yes";;
+                                 # Guess yes on NetBSD >= 3.
+           netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*)
+                                 gl_cv_func_printf_infinite="guessing no";;
+           netbsd*)              gl_cv_func_printf_infinite="guessing yes";;
+                                 # Guess yes on BeOS.
+           beos*)                gl_cv_func_printf_infinite="guessing yes";;
+                                 # Guess yes on MSVC, no on mingw.
+           mingw*)               cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#ifdef _MSC_VER
+ Known
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "Known" >/dev/null 2>&1; then :
+  gl_cv_func_printf_infinite="guessing yes"
+else
+  gl_cv_func_printf_infinite="guessing no"
+fi
+rm -f conftest*
+
+                                 ;;
+                                 # If we don't know, assume the worst.
+           *)                    gl_cv_func_printf_infinite="guessing no";;
+         esac
+
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <stdio.h>
+#include <string.h>
+static int
+strisnan (const char *string, size_t start_index, size_t end_index)
+{
+  if (start_index < end_index)
+    {
+      if (string[start_index] == '-')
+        start_index++;
+      if (start_index + 3 <= end_index
+          && memcmp (string + start_index, "nan", 3) == 0)
+        {
+          start_index += 3;
+          if (start_index == end_index
+              || (string[start_index] == '(' && string[end_index - 1] == ')'))
+            return 1;
+        }
+    }
+  return 0;
+}
+static int
+have_minus_zero ()
+{
+  static double plus_zero = 0.0;
+  double minus_zero = - plus_zero;
+  return memcmp (&plus_zero, &minus_zero, sizeof (double)) != 0;
+}
+static char buf[10000];
+static double zero = 0.0;
+int main ()
+{
+  int result = 0;
+  if (sprintf (buf, "%f", 1.0 / zero) < 0
+      || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0))
+    result |= 1;
+  if (sprintf (buf, "%f", -1.0 / zero) < 0
+      || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0))
+    result |= 1;
+  if (sprintf (buf, "%f", zero / zero) < 0
+      || !strisnan (buf, 0, strlen (buf)))
+    result |= 2;
+  if (sprintf (buf, "%e", 1.0 / zero) < 0
+      || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0))
+    result |= 4;
+  if (sprintf (buf, "%e", -1.0 / zero) < 0
+      || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0))
+    result |= 4;
+  if (sprintf (buf, "%e", zero / zero) < 0
+      || !strisnan (buf, 0, strlen (buf)))
+    result |= 8;
+  if (sprintf (buf, "%g", 1.0 / zero) < 0
+      || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0))
+    result |= 16;
+  if (sprintf (buf, "%g", -1.0 / zero) < 0
+      || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0))
+    result |= 16;
+  if (sprintf (buf, "%g", zero / zero) < 0
+      || !strisnan (buf, 0, strlen (buf)))
+    result |= 32;
+  /* This test fails on HP-UX 10.20.  */
+  if (have_minus_zero ())
+    if (sprintf (buf, "%g", - zero) < 0
+        || strcmp (buf, "-0") != 0)
+    result |= 64;
+  return result;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_printf_infinite=yes
+else
+  gl_cv_func_printf_infinite=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_printf_infinite" >&5
+$as_echo "$gl_cv_func_printf_infinite" >&6; }
+
+
+   { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5
+$as_echo_n "checking whether byte ordering is bigendian... " >&6; }
+if ${ac_cv_c_bigendian+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_c_bigendian=unknown
+    # See if we're dealing with a universal compiler.
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifndef __APPLE_CC__
+              not a universal capable compiler
+            #endif
+            typedef int dummy;
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+       # Check for potential -arch flags.  It is not universal unless
+       # there are at least two -arch flags with different values.
+       ac_arch=
+       ac_prev=
+       for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do
+        if test -n "$ac_prev"; then
+          case $ac_word in
+            i?86 | x86_64 | ppc | ppc64)
+              if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then
+                ac_arch=$ac_word
+              else
+                ac_cv_c_bigendian=universal
+                break
+              fi
+              ;;
+          esac
+          ac_prev=
+        elif test "x$ac_word" = "x-arch"; then
+          ac_prev=arch
+        fi
+       done
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    if test $ac_cv_c_bigendian = unknown; then
+      # See if sys/param.h defines the BYTE_ORDER macro.
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/types.h>
+            #include <sys/param.h>
+
+int
+main ()
+{
+#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \
+                    && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \
+                    && LITTLE_ENDIAN)
+             bogus endian macros
+            #endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  # It does; now see whether it defined to BIG_ENDIAN or not.
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/types.h>
+               #include <sys/param.h>
+
+int
+main ()
+{
+#if BYTE_ORDER != BIG_ENDIAN
+                not big endian
+               #endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_c_bigendian=yes
+else
+  ac_cv_c_bigendian=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    fi
+    if test $ac_cv_c_bigendian = unknown; then
+      # See if <limits.h> defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris).
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <limits.h>
+
+int
+main ()
+{
+#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN)
+             bogus endian macros
+            #endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  # It does; now see whether it defined to _BIG_ENDIAN or not.
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <limits.h>
+
+int
+main ()
+{
+#ifndef _BIG_ENDIAN
+                not big endian
+               #endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_c_bigendian=yes
+else
+  ac_cv_c_bigendian=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    fi
+    if test $ac_cv_c_bigendian = unknown; then
+      # Compile a test program.
+      if test "$cross_compiling" = yes; then :
+  # Try to guess by grepping values from an object file.
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+short int ascii_mm[] =
+                 { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 };
+               short int ascii_ii[] =
+                 { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 };
+               int use_ascii (int i) {
+                 return ascii_mm[i] + ascii_ii[i];
+               }
+               short int ebcdic_ii[] =
+                 { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 };
+               short int ebcdic_mm[] =
+                 { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 };
+               int use_ebcdic (int i) {
+                 return ebcdic_mm[i] + ebcdic_ii[i];
+               }
+               extern int foo;
+
+int
+main ()
+{
+return use_ascii (foo) == use_ebcdic (foo);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then
+             ac_cv_c_bigendian=yes
+           fi
+           if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then
+             if test "$ac_cv_c_bigendian" = unknown; then
+               ac_cv_c_bigendian=no
+             else
+               # finding both strings is unlikely to happen, but who knows?
+               ac_cv_c_bigendian=unknown
+             fi
+           fi
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+
+            /* Are we little or big endian?  From Harbison&Steele.  */
+            union
+            {
+              long int l;
+              char c[sizeof (long int)];
+            } u;
+            u.l = 1;
+            return u.c[sizeof (long int) - 1] == 1;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  ac_cv_c_bigendian=no
+else
+  ac_cv_c_bigendian=yes
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+    fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5
+$as_echo "$ac_cv_c_bigendian" >&6; }
+ case $ac_cv_c_bigendian in #(
+   yes)
+     $as_echo "#define WORDS_BIGENDIAN 1" >>confdefs.h
+;; #(
+   no)
+      ;; #(
+   universal)
+
+$as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h
+
+     ;; #(
+   *)
+     as_fn_error $? "unknown endianness
+ presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;;
+ esac
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether long double and double are the same" >&5
+$as_echo_n "checking whether long double and double are the same... " >&6; }
+if ${gl_cv_long_double_equals_double+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <float.h>
+int
+main ()
+{
+typedef int check[sizeof (long double) == sizeof (double)
+                              && LDBL_MANT_DIG == DBL_MANT_DIG
+                              && LDBL_MAX_EXP == DBL_MAX_EXP
+                              && LDBL_MIN_EXP == DBL_MIN_EXP
+                              ? 1 : -1];
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gl_cv_long_double_equals_double=yes
+else
+  gl_cv_long_double_equals_double=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_long_double_equals_double" >&5
+$as_echo "$gl_cv_long_double_equals_double" >&6; }
+  if test $gl_cv_long_double_equals_double = yes; then
+
+$as_echo "#define HAVE_SAME_LONG_DOUBLE_AS_DOUBLE 1" >>confdefs.h
+
+    HAVE_SAME_LONG_DOUBLE_AS_DOUBLE=1
+  else
+    HAVE_SAME_LONG_DOUBLE_AS_DOUBLE=0
+  fi
+
+
+
+
+
+
+
+         if test -n "$gl_printf_safe"; then
+
+$as_echo "#define CHECK_PRINTF_SAFE 1" >>confdefs.h
+
+  fi
+  case "$gl_cv_func_printf_long_double" in
+    *yes)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether printf supports infinite 'long double' arguments" >&5
+$as_echo_n "checking whether printf supports infinite 'long double' arguments... " >&6; }
+if ${gl_cv_func_printf_infinite_long_double+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+          if test "$cross_compiling" = yes; then :
+  case "$host_cpu" in
+                                     # Guess no on ia64, x86_64, i386.
+               ia64 | x86_64 | i*86) gl_cv_func_printf_infinite_long_double="guessing no";;
+               *)
+                 case "$host_os" in
+                                         # Guess yes on glibc systems.
+                   *-gnu* | gnu*)        gl_cv_func_printf_infinite_long_double="guessing yes";;
+                                         # Guess yes on FreeBSD >= 6.
+                   freebsd[1-5].*)       gl_cv_func_printf_infinite_long_double="guessing no";;
+                   freebsd* | kfreebsd*) gl_cv_func_printf_infinite_long_double="guessing yes";;
+                                         # Guess yes on HP-UX >= 11.
+                   hpux[7-9]* | hpux10*) gl_cv_func_printf_infinite_long_double="guessing no";;
+                   hpux*)                gl_cv_func_printf_infinite_long_double="guessing yes";;
+                                         # Guess yes on MSVC, no on mingw.
+                   mingw*)               cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#ifdef _MSC_VER
+ Known
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "Known" >/dev/null 2>&1; then :
+  gl_cv_func_printf_infinite_long_double="guessing yes"
+else
+  gl_cv_func_printf_infinite_long_double="guessing no"
+fi
+rm -f conftest*
+
+                                         ;;
+                                         # If we don't know, assume the worst.
+                   *)                    gl_cv_func_printf_infinite_long_double="guessing no";;
+                 esac
+                 ;;
+             esac
+
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+#include <stdlib.h>
+#if defined __MACH__ && defined __APPLE__
+/* Avoid a crash on Mac OS X.  */
+#include <mach/mach.h>
+#include <mach/mach_error.h>
+#include <mach/thread_status.h>
+#include <mach/exception.h>
+#include <mach/task.h>
+#include <pthread.h>
+/* The exception port on which our thread listens.  */
+static mach_port_t our_exception_port;
+/* The main function of the thread listening for exceptions of type
+   EXC_BAD_ACCESS.  */
+static void *
+mach_exception_thread (void *arg)
+{
+  /* Buffer for a message to be received.  */
+  struct {
+    mach_msg_header_t head;
+    mach_msg_body_t msgh_body;
+    char data[1024];
+  } msg;
+  mach_msg_return_t retval;
+  /* Wait for a message on the exception port.  */
+  retval = mach_msg (&msg.head, MACH_RCV_MSG | MACH_RCV_LARGE, 0, sizeof (msg),
+                     our_exception_port, MACH_MSG_TIMEOUT_NONE, MACH_PORT_NULL);
+  if (retval != MACH_MSG_SUCCESS)
+    abort ();
+  exit (1);
+}
+static void
+nocrash_init (void)
+{
+  mach_port_t self = mach_task_self ();
+  /* Allocate a port on which the thread shall listen for exceptions.  */
+  if (mach_port_allocate (self, MACH_PORT_RIGHT_RECEIVE, &our_exception_port)
+      == KERN_SUCCESS) {
+    /* See http://web.mit.edu/darwin/src/modules/xnu/osfmk/man/mach_port_insert_right.html.  */
+    if (mach_port_insert_right (self, our_exception_port, our_exception_port,
+                                MACH_MSG_TYPE_MAKE_SEND)
+        == KERN_SUCCESS) {
+      /* The exceptions we want to catch.  Only EXC_BAD_ACCESS is interesting
+         for us.  */
+      exception_mask_t mask = EXC_MASK_BAD_ACCESS;
+      /* Create the thread listening on the exception port.  */
+      pthread_attr_t attr;
+      pthread_t thread;
+      if (pthread_attr_init (&attr) == 0
+          && pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED) == 0
+          && pthread_create (&thread, &attr, mach_exception_thread, NULL) == 0) {
+        pthread_attr_destroy (&attr);
+        /* Replace the exception port info for these exceptions with our own.
+           Note that we replace the exception port for the entire task, not only
+           for a particular thread.  This has the effect that when our exception
+           port gets the message, the thread specific exception port has already
+           been asked, and we don't need to bother about it.
+           See http://web.mit.edu/darwin/src/modules/xnu/osfmk/man/task_set_exception_ports.html.  */
+        task_set_exception_ports (self, mask, our_exception_port,
+                                  EXCEPTION_DEFAULT, MACHINE_THREAD_STATE);
+      }
+    }
+  }
+}
+#elif defined _WIN32 && ! defined __CYGWIN__
+/* Avoid a crash on native Windows.  */
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#include <winerror.h>
+static LONG WINAPI
+exception_filter (EXCEPTION_POINTERS *ExceptionInfo)
+{
+  switch (ExceptionInfo->ExceptionRecord->ExceptionCode)
+    {
+    case EXCEPTION_ACCESS_VIOLATION:
+    case EXCEPTION_IN_PAGE_ERROR:
+    case EXCEPTION_STACK_OVERFLOW:
+    case EXCEPTION_GUARD_PAGE:
+    case EXCEPTION_PRIV_INSTRUCTION:
+    case EXCEPTION_ILLEGAL_INSTRUCTION:
+    case EXCEPTION_DATATYPE_MISALIGNMENT:
+    case EXCEPTION_ARRAY_BOUNDS_EXCEEDED:
+    case EXCEPTION_NONCONTINUABLE_EXCEPTION:
+      exit (1);
+    }
+  return EXCEPTION_CONTINUE_SEARCH;
+}
+static void
+nocrash_init (void)
+{
+  SetUnhandledExceptionFilter ((LPTOP_LEVEL_EXCEPTION_FILTER) exception_filter);
+}
+#else
+/* Avoid a crash on POSIX systems.  */
+#include <signal.h>
+#include <unistd.h>
+/* A POSIX signal handler.  */
+static void
+exception_handler (int sig)
+{
+  _exit (1);
+}
+static void
+nocrash_init (void)
+{
+#ifdef SIGSEGV
+  signal (SIGSEGV, exception_handler);
+#endif
+#ifdef SIGBUS
+  signal (SIGBUS, exception_handler);
+#endif
+}
+#endif
+
+#include <float.h>
+#include <stdio.h>
+#include <string.h>
+static int
+strisnan (const char *string, size_t start_index, size_t end_index)
+{
+  if (start_index < end_index)
+    {
+      if (string[start_index] == '-')
+        start_index++;
+      if (start_index + 3 <= end_index
+          && memcmp (string + start_index, "nan", 3) == 0)
+        {
+          start_index += 3;
+          if (start_index == end_index
+              || (string[start_index] == '(' && string[end_index - 1] == ')'))
+            return 1;
+        }
+    }
+  return 0;
+}
+static char buf[10000];
+static long double zeroL = 0.0L;
+int main ()
+{
+  int result = 0;
+  nocrash_init();
+  if (sprintf (buf, "%Lf", 1.0L / zeroL) < 0
+      || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0))
+    result |= 1;
+  if (sprintf (buf, "%Lf", -1.0L / zeroL) < 0
+      || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0))
+    result |= 1;
+  if (sprintf (buf, "%Lf", zeroL / zeroL) < 0
+      || !strisnan (buf, 0, strlen (buf)))
+    result |= 1;
+  if (sprintf (buf, "%Le", 1.0L / zeroL) < 0
+      || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0))
+    result |= 1;
+  if (sprintf (buf, "%Le", -1.0L / zeroL) < 0
+      || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0))
+    result |= 1;
+  if (sprintf (buf, "%Le", zeroL / zeroL) < 0
+      || !strisnan (buf, 0, strlen (buf)))
+    result |= 1;
+  if (sprintf (buf, "%Lg", 1.0L / zeroL) < 0
+      || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0))
+    result |= 1;
+  if (sprintf (buf, "%Lg", -1.0L / zeroL) < 0
+      || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0))
+    result |= 1;
+  if (sprintf (buf, "%Lg", zeroL / zeroL) < 0
+      || !strisnan (buf, 0, strlen (buf)))
+    result |= 1;
+#if CHECK_PRINTF_SAFE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) && !HAVE_SAME_LONG_DOUBLE_AS_DOUBLE
+/* Representation of an 80-bit 'long double' as an initializer for a sequence
+   of 'unsigned int' words.  */
+# ifdef WORDS_BIGENDIAN
+#  define LDBL80_WORDS(exponent,manthi,mantlo) \
+     { ((unsigned int) (exponent) << 16) | ((unsigned int) (manthi) >> 16), \
+       ((unsigned int) (manthi) << 16) | ((unsigned int) (mantlo) >> 16),   \
+       (unsigned int) (mantlo) << 16                                        \
+     }
+# else
+#  define LDBL80_WORDS(exponent,manthi,mantlo) \
+     { mantlo, manthi, exponent }
+# endif
+  { /* Quiet NaN.  */
+    static union { unsigned int word[4]; long double value; } x =
+      { LDBL80_WORDS (0xFFFF, 0xC3333333, 0x00000000) };
+    if (sprintf (buf, "%Lf", x.value) < 0
+        || !strisnan (buf, 0, strlen (buf)))
+      result |= 2;
+    if (sprintf (buf, "%Le", x.value) < 0
+        || !strisnan (buf, 0, strlen (buf)))
+      result |= 2;
+    if (sprintf (buf, "%Lg", x.value) < 0
+        || !strisnan (buf, 0, strlen (buf)))
+      result |= 2;
+  }
+  {
+    /* Signalling NaN.  */
+    static union { unsigned int word[4]; long double value; } x =
+      { LDBL80_WORDS (0xFFFF, 0x83333333, 0x00000000) };
+    if (sprintf (buf, "%Lf", x.value) < 0
+        || !strisnan (buf, 0, strlen (buf)))
+      result |= 2;
+    if (sprintf (buf, "%Le", x.value) < 0
+        || !strisnan (buf, 0, strlen (buf)))
+      result |= 2;
+    if (sprintf (buf, "%Lg", x.value) < 0
+        || !strisnan (buf, 0, strlen (buf)))
+      result |= 2;
+  }
+  { /* Pseudo-NaN.  */
+    static union { unsigned int word[4]; long double value; } x =
+      { LDBL80_WORDS (0xFFFF, 0x40000001, 0x00000000) };
+    if (sprintf (buf, "%Lf", x.value) <= 0)
+      result |= 4;
+    if (sprintf (buf, "%Le", x.value) <= 0)
+      result |= 4;
+    if (sprintf (buf, "%Lg", x.value) <= 0)
+      result |= 4;
+  }
+  { /* Pseudo-Infinity.  */
+    static union { unsigned int word[4]; long double value; } x =
+      { LDBL80_WORDS (0xFFFF, 0x00000000, 0x00000000) };
+    if (sprintf (buf, "%Lf", x.value) <= 0)
+      result |= 8;
+    if (sprintf (buf, "%Le", x.value) <= 0)
+      result |= 8;
+    if (sprintf (buf, "%Lg", x.value) <= 0)
+      result |= 8;
+  }
+  { /* Pseudo-Zero.  */
+    static union { unsigned int word[4]; long double value; } x =
+      { LDBL80_WORDS (0x4004, 0x00000000, 0x00000000) };
+    if (sprintf (buf, "%Lf", x.value) <= 0)
+      result |= 16;
+    if (sprintf (buf, "%Le", x.value) <= 0)
+      result |= 16;
+    if (sprintf (buf, "%Lg", x.value) <= 0)
+      result |= 16;
+  }
+  { /* Unnormalized number.  */
+    static union { unsigned int word[4]; long double value; } x =
+      { LDBL80_WORDS (0x4000, 0x63333333, 0x00000000) };
+    if (sprintf (buf, "%Lf", x.value) <= 0)
+      result |= 32;
+    if (sprintf (buf, "%Le", x.value) <= 0)
+      result |= 32;
+    if (sprintf (buf, "%Lg", x.value) <= 0)
+      result |= 32;
+  }
+  { /* Pseudo-Denormal.  */
+    static union { unsigned int word[4]; long double value; } x =
+      { LDBL80_WORDS (0x0000, 0x83333333, 0x00000000) };
+    if (sprintf (buf, "%Lf", x.value) <= 0)
+      result |= 64;
+    if (sprintf (buf, "%Le", x.value) <= 0)
+      result |= 64;
+    if (sprintf (buf, "%Lg", x.value) <= 0)
+      result |= 64;
+  }
+#endif
+  return result;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_printf_infinite_long_double=yes
+else
+  gl_cv_func_printf_infinite_long_double=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_printf_infinite_long_double" >&5
+$as_echo "$gl_cv_func_printf_infinite_long_double" >&6; }
+      ;;
+    *)
+      gl_cv_func_printf_infinite_long_double="irrelevant"
+      ;;
+  esac
+
+
+
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether printf supports the 'a' and 'A' directives" >&5
+$as_echo_n "checking whether printf supports the 'a' and 'A' directives... " >&6; }
+if ${gl_cv_func_printf_directive_a+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+      if test "$cross_compiling" = yes; then :
+
+         case "$host_os" in
+                                 # Guess yes on glibc >= 2.5 systems.
+           *-gnu* | gnu*)
+             cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+               #include <features.h>
+               #ifdef __GNU_LIBRARY__
+                #if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 5) || (__GLIBC__ > 2)) && !defined __UCLIBC__
+                 BZ2908
+                #endif
+               #endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "BZ2908" >/dev/null 2>&1; then :
+  gl_cv_func_printf_directive_a="guessing yes"
+else
+  gl_cv_func_printf_directive_a="guessing no"
+fi
+rm -f conftest*
+
+             ;;
+                                 # Guess no on native Windows.
+           mingw*)               gl_cv_func_printf_directive_a="guessing no";;
+                                 # If we don't know, assume the worst.
+           *)                    gl_cv_func_printf_directive_a="guessing no";;
+         esac
+
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <stdio.h>
+#include <string.h>
+static char buf[100];
+static double zero = 0.0;
+int main ()
+{
+  int result = 0;
+  if (sprintf (buf, "%a %d", 3.1416015625, 33, 44, 55) < 0
+      || (strcmp (buf, "0x1.922p+1 33") != 0
+          && strcmp (buf, "0x3.244p+0 33") != 0
+          && strcmp (buf, "0x6.488p-1 33") != 0
+          && strcmp (buf, "0xc.91p-2 33") != 0))
+    result |= 1;
+  if (sprintf (buf, "%A %d", -3.1416015625, 33, 44, 55) < 0
+      || (strcmp (buf, "-0X1.922P+1 33") != 0
+          && strcmp (buf, "-0X3.244P+0 33") != 0
+          && strcmp (buf, "-0X6.488P-1 33") != 0
+          && strcmp (buf, "-0XC.91P-2 33") != 0))
+    result |= 2;
+  /* This catches a FreeBSD 6.1 bug: it doesn't round.  */
+  if (sprintf (buf, "%.2a %d", 1.51, 33, 44, 55) < 0
+      || (strcmp (buf, "0x1.83p+0 33") != 0
+          && strcmp (buf, "0x3.05p-1 33") != 0
+          && strcmp (buf, "0x6.0ap-2 33") != 0
+          && strcmp (buf, "0xc.14p-3 33") != 0))
+    result |= 4;
+  /* This catches a Mac OS X 10.12.4 (Darwin 16.5) bug: it doesn't round.  */
+  if (sprintf (buf, "%.0a %d", 1.51, 33, 44, 55) < 0
+      || (strcmp (buf, "0x2p+0 33") != 0
+          && strcmp (buf, "0x3p-1 33") != 0
+          && strcmp (buf, "0x6p-2 33") != 0
+          && strcmp (buf, "0xcp-3 33") != 0))
+    result |= 4;
+  /* This catches a FreeBSD 6.1 bug.  See
+     <https://lists.gnu.org/r/bug-gnulib/2007-04/msg00107.html> */
+  if (sprintf (buf, "%010a %d", 1.0 / zero, 33, 44, 55) < 0
+      || buf[0] == '0')
+    result |= 8;
+  /* This catches a Mac OS X 10.3.9 (Darwin 7.9) bug.  */
+  if (sprintf (buf, "%.1a", 1.999) < 0
+      || (strcmp (buf, "0x1.0p+1") != 0
+          && strcmp (buf, "0x2.0p+0") != 0
+          && strcmp (buf, "0x4.0p-1") != 0
+          && strcmp (buf, "0x8.0p-2") != 0))
+    result |= 16;
+  /* This catches the same Mac OS X 10.3.9 (Darwin 7.9) bug and also a
+     glibc 2.4 bug <https://sourceware.org/bugzilla/show_bug.cgi?id=2908>.  */
+  if (sprintf (buf, "%.1La", 1.999L) < 0
+      || (strcmp (buf, "0x1.0p+1") != 0
+          && strcmp (buf, "0x2.0p+0") != 0
+          && strcmp (buf, "0x4.0p-1") != 0
+          && strcmp (buf, "0x8.0p-2") != 0))
+    result |= 32;
+  return result;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_printf_directive_a=yes
+else
+  gl_cv_func_printf_directive_a=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_printf_directive_a" >&5
+$as_echo "$gl_cv_func_printf_directive_a" >&6; }
+
+
+
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether printf supports the 'F' directive" >&5
+$as_echo_n "checking whether printf supports the 'F' directive... " >&6; }
+if ${gl_cv_func_printf_directive_f+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+      if test "$cross_compiling" = yes; then :
+
+         case "$host_os" in
+                                 # Guess yes on glibc systems.
+           *-gnu* | gnu*)        gl_cv_func_printf_directive_f="guessing yes";;
+                                 # Guess yes on FreeBSD >= 6.
+           freebsd[1-5].*)       gl_cv_func_printf_directive_f="guessing no";;
+           freebsd* | kfreebsd*) gl_cv_func_printf_directive_f="guessing yes";;
+                                 # Guess yes on Mac OS X >= 10.3.
+           darwin[1-6].*)        gl_cv_func_printf_directive_f="guessing no";;
+           darwin*)              gl_cv_func_printf_directive_f="guessing yes";;
+                                 # Guess yes on Solaris >= 2.10.
+           solaris2.[1-9][0-9]*) gl_cv_func_printf_directive_f="guessing yes";;
+           solaris*)             gl_cv_func_printf_directive_f="guessing no";;
+                                 # Guess yes on MSVC, no on mingw.
+           mingw*)               cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#ifdef _MSC_VER
+ Known
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "Known" >/dev/null 2>&1; then :
+  gl_cv_func_printf_directive_f="guessing yes"
+else
+  gl_cv_func_printf_directive_f="guessing no"
+fi
+rm -f conftest*
+
+                                 ;;
+                                 # If we don't know, assume the worst.
+           *)                    gl_cv_func_printf_directive_f="guessing no";;
+         esac
+
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <stdio.h>
+#include <string.h>
+static char buf[100];
+static double zero = 0.0;
+int main ()
+{
+  int result = 0;
+  if (sprintf (buf, "%F %d", 1234567.0, 33, 44, 55) < 0
+      || strcmp (buf, "1234567.000000 33") != 0)
+    result |= 1;
+  if (sprintf (buf, "%F", 1.0 / zero) < 0
+      || (strcmp (buf, "INF") != 0 && strcmp (buf, "INFINITY") != 0))
+    result |= 2;
+  /* This catches a Cygwin 1.5.x bug.  */
+  if (sprintf (buf, "%.F", 1234.0) < 0
+      || strcmp (buf, "1234") != 0)
+    result |= 4;
+  return result;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_printf_directive_f=yes
+else
+  gl_cv_func_printf_directive_f=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_printf_directive_f" >&5
+$as_echo "$gl_cv_func_printf_directive_f" >&6; }
+
+
+
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether printf supports the 'n' directive" >&5
+$as_echo_n "checking whether printf supports the 'n' directive... " >&6; }
+if ${gl_cv_func_printf_directive_n+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+      if test "$cross_compiling" = yes; then :
+  case "$host_os" in
+                   # Guess no on native Windows.
+           mingw*) gl_cv_func_printf_directive_n="guessing no";;
+           *)      gl_cv_func_printf_directive_n="guessing yes";;
+         esac
+
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#ifdef _MSC_VER
+/* See page about "Parameter Validation" on msdn.microsoft.com.  */
+static void cdecl
+invalid_parameter_handler (const wchar_t *expression,
+                           const wchar_t *function,
+                           const wchar_t *file, unsigned int line,
+                           uintptr_t dummy)
+{
+  exit (1);
+}
+#endif
+static char fmtstring[10];
+static char buf[100];
+int main ()
+{
+  int count = -1;
+#ifdef _MSC_VER
+  _set_invalid_parameter_handler (invalid_parameter_handler);
+#endif
+  /* Copy the format string.  Some systems (glibc with _FORTIFY_SOURCE=2)
+     support %n in format strings in read-only memory but not in writable
+     memory.  */
+  strcpy (fmtstring, "%d %n");
+  if (sprintf (buf, fmtstring, 123, &count, 33, 44, 55) < 0
+      || strcmp (buf, "123 ") != 0
+      || count != 4)
+    return 1;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_printf_directive_n=yes
+else
+  gl_cv_func_printf_directive_n=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_printf_directive_n" >&5
+$as_echo "$gl_cv_func_printf_directive_n" >&6; }
+
+
+
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether printf supports the 'ls' directive" >&5
+$as_echo_n "checking whether printf supports the 'ls' directive... " >&6; }
+if ${gl_cv_func_printf_directive_ls+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+      if test "$cross_compiling" = yes; then :
+
+         case "$host_os" in
+           openbsd*)       gl_cv_func_printf_directive_ls="guessing no";;
+           irix*)          gl_cv_func_printf_directive_ls="guessing no";;
+           solaris*)       gl_cv_func_printf_directive_ls="guessing no";;
+           cygwin*)        gl_cv_func_printf_directive_ls="guessing no";;
+           beos* | haiku*) gl_cv_func_printf_directive_ls="guessing no";;
+                           # Guess yes on native Windows.
+           mingw*)         gl_cv_func_printf_directive_ls="guessing yes";;
+           *)              gl_cv_func_printf_directive_ls="guessing yes";;
+         esac
+
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+   <wchar.h>.
+   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+   included before <wchar.h>.  */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+#include <string.h>
+int main ()
+{
+  int result = 0;
+  char buf[100];
+  /* Test whether %ls works at all.
+     This test fails on OpenBSD 4.0, IRIX 6.5, Solaris 2.6, Haiku, but not on
+     Cygwin 1.5.  */
+  {
+    static const wchar_t wstring[] = { 'a', 'b', 'c', 0 };
+    buf[0] = '\0';
+    if (sprintf (buf, "%ls", wstring) < 0
+        || strcmp (buf, "abc") != 0)
+      result |= 1;
+  }
+  /* This test fails on IRIX 6.5, Solaris 2.6, Cygwin 1.5, Haiku (with an
+     assertion failure inside libc), but not on OpenBSD 4.0.  */
+  {
+    static const wchar_t wstring[] = { 'a', 0 };
+    buf[0] = '\0';
+    if (sprintf (buf, "%ls", wstring) < 0
+        || strcmp (buf, "a") != 0)
+      result |= 2;
+  }
+  /* Test whether precisions in %ls are supported as specified in ISO C 99
+     section 7.19.6.1:
+       "If a precision is specified, no more than that many bytes are written
+        (including shift sequences, if any), and the array shall contain a
+        null wide character if, to equal the multibyte character sequence
+        length given by the precision, the function would need to access a
+        wide character one past the end of the array."
+     This test fails on Solaris 10.  */
+  {
+    static const wchar_t wstring[] = { 'a', 'b', (wchar_t) 0xfdfdfdfd, 0 };
+    buf[0] = '\0';
+    if (sprintf (buf, "%.2ls", wstring) < 0
+        || strcmp (buf, "ab") != 0)
+      result |= 8;
+  }
+  return result;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_printf_directive_ls=yes
+else
+  gl_cv_func_printf_directive_ls=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_printf_directive_ls" >&5
+$as_echo "$gl_cv_func_printf_directive_ls" >&6; }
+
+
+
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether printf supports POSIX/XSI format strings with positions" >&5
+$as_echo_n "checking whether printf supports POSIX/XSI format strings with positions... " >&6; }
+if ${gl_cv_func_printf_positions+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+      if test "$cross_compiling" = yes; then :
+
+         case "$host_os" in
+           netbsd[1-3]* | netbsdelf[1-3]* | netbsdaout[1-3]* | netbsdcoff[1-3]*)
+                         gl_cv_func_printf_positions="guessing no";;
+           beos*)        gl_cv_func_printf_positions="guessing no";;
+                         # Guess no on native Windows.
+           mingw* | pw*) gl_cv_func_printf_positions="guessing no";;
+           *)            gl_cv_func_printf_positions="guessing yes";;
+         esac
+
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <stdio.h>
+#include <string.h>
+/* The string "%2$d %1$d", with dollar characters protected from the shell's
+   dollar expansion (possibly an autoconf bug).  */
+static char format[] = { '%', '2', '$', 'd', ' ', '%', '1', '$', 'd', '\0' };
+static char buf[100];
+int main ()
+{
+  sprintf (buf, format, 33, 55);
+  return (strcmp (buf, "55 33") != 0);
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_printf_positions=yes
+else
+  gl_cv_func_printf_positions=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_printf_positions" >&5
+$as_echo "$gl_cv_func_printf_positions" >&6; }
+
+
+
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether printf supports the grouping flag" >&5
+$as_echo_n "checking whether printf supports the grouping flag... " >&6; }
+if ${gl_cv_func_printf_flag_grouping+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+      if test "$cross_compiling" = yes; then :
+
+         case "$host_os" in
+           cygwin*)      gl_cv_func_printf_flag_grouping="guessing no";;
+           netbsd*)      gl_cv_func_printf_flag_grouping="guessing no";;
+                         # Guess no on native Windows.
+           mingw* | pw*) gl_cv_func_printf_flag_grouping="guessing no";;
+           *)            gl_cv_func_printf_flag_grouping="guessing yes";;
+         esac
+
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <stdio.h>
+#include <string.h>
+static char buf[100];
+int main ()
+{
+  if (sprintf (buf, "%'d %d", 1234567, 99) < 0
+      || buf[strlen (buf) - 1] != '9')
+    return 1;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_printf_flag_grouping=yes
+else
+  gl_cv_func_printf_flag_grouping=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_printf_flag_grouping" >&5
+$as_echo "$gl_cv_func_printf_flag_grouping" >&6; }
+
+
+
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether printf supports the left-adjust flag correctly" >&5
+$as_echo_n "checking whether printf supports the left-adjust flag correctly... " >&6; }
+if ${gl_cv_func_printf_flag_leftadjust+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+      if test "$cross_compiling" = yes; then :
+
+         case "$host_os" in
+                    # Guess yes on HP-UX 11.
+           hpux11*) gl_cv_func_printf_flag_leftadjust="guessing yes";;
+                    # Guess no on HP-UX 10 and older.
+           hpux*)   gl_cv_func_printf_flag_leftadjust="guessing no";;
+                    # Guess yes on native Windows.
+           mingw*)  gl_cv_func_printf_flag_leftadjust="guessing yes";;
+                    # Guess yes otherwise.
+           *)       gl_cv_func_printf_flag_leftadjust="guessing yes";;
+         esac
+
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <stdio.h>
+#include <string.h>
+static char buf[100];
+int main ()
+{
+  /* Check that a '-' flag is not annihilated by a negative width.  */
+  if (sprintf (buf, "a%-*sc", -3, "b") < 0
+      || strcmp (buf, "ab  c") != 0)
+    return 1;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_printf_flag_leftadjust=yes
+else
+  gl_cv_func_printf_flag_leftadjust=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_printf_flag_leftadjust" >&5
+$as_echo "$gl_cv_func_printf_flag_leftadjust" >&6; }
+
+
+
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether printf supports the zero flag correctly" >&5
+$as_echo_n "checking whether printf supports the zero flag correctly... " >&6; }
+if ${gl_cv_func_printf_flag_zero+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+      if test "$cross_compiling" = yes; then :
+
+         case "$host_os" in
+                          # Guess yes on glibc systems.
+           *-gnu* | gnu*) gl_cv_func_printf_flag_zero="guessing yes";;
+                          # Guess yes on BeOS.
+           beos*)         gl_cv_func_printf_flag_zero="guessing yes";;
+                          # Guess no on native Windows.
+           mingw*)        gl_cv_func_printf_flag_zero="guessing no";;
+                          # If we don't know, assume the worst.
+           *)             gl_cv_func_printf_flag_zero="guessing no";;
+         esac
+
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <stdio.h>
+#include <string.h>
+static char buf[100];
+static double zero = 0.0;
+int main ()
+{
+  if (sprintf (buf, "%010f", 1.0 / zero, 33, 44, 55) < 0
+      || (strcmp (buf, "       inf") != 0
+          && strcmp (buf, "  infinity") != 0))
+    return 1;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_printf_flag_zero=yes
+else
+  gl_cv_func_printf_flag_zero=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_printf_flag_zero" >&5
+$as_echo "$gl_cv_func_printf_flag_zero" >&6; }
+
+
+
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether printf supports large precisions" >&5
+$as_echo_n "checking whether printf supports large precisions... " >&6; }
+if ${gl_cv_func_printf_precision+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+      if test "$cross_compiling" = yes; then :
+
+         case "$host_os" in
+           # Guess no only on Solaris, native Windows, and BeOS systems.
+           solaris*)     gl_cv_func_printf_precision="guessing no" ;;
+           mingw* | pw*) gl_cv_func_printf_precision="guessing no" ;;
+           beos*)        gl_cv_func_printf_precision="guessing no" ;;
+           *)            gl_cv_func_printf_precision="guessing yes" ;;
+         esac
+
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <stdio.h>
+#include <string.h>
+static char buf[5000];
+int main ()
+{
+  int result = 0;
+#ifdef __BEOS__
+  /* On BeOS, this would crash and show a dialog box.  Avoid the crash.  */
+  return 1;
+#endif
+  if (sprintf (buf, "%.4000d %d", 1, 33, 44) < 4000 + 3)
+    result |= 1;
+  if (sprintf (buf, "%.4000f %d", 1.0, 33, 44) < 4000 + 5)
+    result |= 2;
+  if (sprintf (buf, "%.511f %d", 1.0, 33, 44) < 511 + 5
+      || buf[0] != '1')
+    result |= 4;
+  if (sprintf (buf, "%.999f %d", 1.0, 33, 44) < 999 + 5
+      || buf[0] != '1')
+    result |= 4;
+  return result;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_printf_precision=yes
+else
+  gl_cv_func_printf_precision=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_printf_precision" >&5
+$as_echo "$gl_cv_func_printf_precision" >&6; }
+
+
+    gl_cv_c_multiarch=no
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifndef __APPLE_CC__
+         not a universal capable compiler
+        #endif
+        typedef int dummy;
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+               arch=
+     prev=
+     for word in ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}; do
+       if test -n "$prev"; then
+         case $word in
+           i?86 | x86_64 | ppc | ppc64)
+             if test -z "$arch" || test "$arch" = "$word"; then
+               arch="$word"
+             else
+               gl_cv_c_multiarch=yes
+             fi
+             ;;
+         esac
+         prev=
+       else
+         if test "x$word" = "x-arch"; then
+           prev=arch
+         fi
+       fi
+     done
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  if test $gl_cv_c_multiarch = yes; then
+    APPLE_UNIVERSAL_BUILD=1
+  else
+    APPLE_UNIVERSAL_BUILD=0
+  fi
+
+
+
+
+
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether printf survives out-of-memory conditions" >&5
+$as_echo_n "checking whether printf survives out-of-memory conditions... " >&6; }
+if ${gl_cv_func_printf_enomem+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+      gl_cv_func_printf_enomem="guessing no"
+      if test "$cross_compiling" = no; then
+        if test $APPLE_UNIVERSAL_BUILD = 0; then
+          cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+#include <stdlib.h>
+#if defined __MACH__ && defined __APPLE__
+/* Avoid a crash on Mac OS X.  */
+#include <mach/mach.h>
+#include <mach/mach_error.h>
+#include <mach/thread_status.h>
+#include <mach/exception.h>
+#include <mach/task.h>
+#include <pthread.h>
+/* The exception port on which our thread listens.  */
+static mach_port_t our_exception_port;
+/* The main function of the thread listening for exceptions of type
+   EXC_BAD_ACCESS.  */
+static void *
+mach_exception_thread (void *arg)
+{
+  /* Buffer for a message to be received.  */
+  struct {
+    mach_msg_header_t head;
+    mach_msg_body_t msgh_body;
+    char data1024;
+  } msg;
+  mach_msg_return_t retval;
+  /* Wait for a message on the exception port.  */
+  retval = mach_msg (&msg.head, MACH_RCV_MSG | MACH_RCV_LARGE, 0, sizeof (msg),
+                     our_exception_port, MACH_MSG_TIMEOUT_NONE, MACH_PORT_NULL);
+  if (retval != MACH_MSG_SUCCESS)
+    abort ();
+  exit (1);
+}
+static void
+nocrash_init (void)
+{
+  mach_port_t self = mach_task_self ();
+  /* Allocate a port on which the thread shall listen for exceptions.  */
+  if (mach_port_allocate (self, MACH_PORT_RIGHT_RECEIVE, &our_exception_port)
+      == KERN_SUCCESS) {
+    /* See http://web.mit.edu/darwin/src/modules/xnu/osfmk/man/mach_port_insert_right.html.  */
+    if (mach_port_insert_right (self, our_exception_port, our_exception_port,
+                                MACH_MSG_TYPE_MAKE_SEND)
+        == KERN_SUCCESS) {
+      /* The exceptions we want to catch.  Only EXC_BAD_ACCESS is interesting
+         for us.  */
+      exception_mask_t mask = EXC_MASK_BAD_ACCESS;
+      /* Create the thread listening on the exception port.  */
+      pthread_attr_t attr;
+      pthread_t thread;
+      if (pthread_attr_init (&attr) == 0
+          && pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED) == 0
+          && pthread_create (&thread, &attr, mach_exception_thread, NULL) == 0) {
+        pthread_attr_destroy (&attr);
+        /* Replace the exception port info for these exceptions with our own.
+           Note that we replace the exception port for the entire task, not only
+           for a particular thread.  This has the effect that when our exception
+           port gets the message, the thread specific exception port has already
+           been asked, and we don't need to bother about it.
+           See http://web.mit.edu/darwin/src/modules/xnu/osfmk/man/task_set_exception_ports.html.  */
+        task_set_exception_ports (self, mask, our_exception_port,
+                                  EXCEPTION_DEFAULT, MACHINE_THREAD_STATE);
+      }
+    }
+  }
+}
+#elif defined _WIN32 && ! defined __CYGWIN__
+/* Avoid a crash on native Windows.  */
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#include <winerror.h>
+static LONG WINAPI
+exception_filter (EXCEPTION_POINTERS *ExceptionInfo)
+{
+  switch (ExceptionInfo->ExceptionRecord->ExceptionCode)
+    {
+    case EXCEPTION_ACCESS_VIOLATION:
+    case EXCEPTION_IN_PAGE_ERROR:
+    case EXCEPTION_STACK_OVERFLOW:
+    case EXCEPTION_GUARD_PAGE:
+    case EXCEPTION_PRIV_INSTRUCTION:
+    case EXCEPTION_ILLEGAL_INSTRUCTION:
+    case EXCEPTION_DATATYPE_MISALIGNMENT:
+    case EXCEPTION_ARRAY_BOUNDS_EXCEEDED:
+    case EXCEPTION_NONCONTINUABLE_EXCEPTION:
+      exit (1);
+    }
+  return EXCEPTION_CONTINUE_SEARCH;
+}
+static void
+nocrash_init (void)
+{
+  SetUnhandledExceptionFilter ((LPTOP_LEVEL_EXCEPTION_FILTER) exception_filter);
+}
+#else
+/* Avoid a crash on POSIX systems.  */
+#include <signal.h>
+#include <unistd.h>
+/* A POSIX signal handler.  */
+static void
+exception_handler (int sig)
+{
+  _exit (1);
+}
+static void
+nocrash_init (void)
+{
+#ifdef SIGSEGV
+  signal (SIGSEGV, exception_handler);
+#endif
+#ifdef SIGBUS
+  signal (SIGBUS, exception_handler);
+#endif
+}
+#endif
+
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/time.h>
+#include <sys/resource.h>
+#include <errno.h>
+int main()
+{
+  struct rlimit limit;
+  int ret;
+  nocrash_init ();
+  /* Some printf implementations allocate temporary space with malloc.  */
+  /* On BSD systems, malloc() is limited by RLIMIT_DATA.  */
+#ifdef RLIMIT_DATA
+  if (getrlimit (RLIMIT_DATA, &limit) < 0)
+    return 77;
+  if (limit.rlim_max == RLIM_INFINITY || limit.rlim_max > 5000000)
+    limit.rlim_max = 5000000;
+  limit.rlim_cur = limit.rlim_max;
+  if (setrlimit (RLIMIT_DATA, &limit) < 0)
+    return 77;
+#endif
+  /* On Linux systems, malloc() is limited by RLIMIT_AS.  */
+#ifdef RLIMIT_AS
+  if (getrlimit (RLIMIT_AS, &limit) < 0)
+    return 77;
+  if (limit.rlim_max == RLIM_INFINITY || limit.rlim_max > 5000000)
+    limit.rlim_max = 5000000;
+  limit.rlim_cur = limit.rlim_max;
+  if (setrlimit (RLIMIT_AS, &limit) < 0)
+    return 77;
+#endif
+  /* Some printf implementations allocate temporary space on the stack.  */
+#ifdef RLIMIT_STACK
+  if (getrlimit (RLIMIT_STACK, &limit) < 0)
+    return 77;
+  if (limit.rlim_max == RLIM_INFINITY || limit.rlim_max > 5000000)
+    limit.rlim_max = 5000000;
+  limit.rlim_cur = limit.rlim_max;
+  if (setrlimit (RLIMIT_STACK, &limit) < 0)
+    return 77;
+#endif
+  ret = printf ("%.5000000f", 1.0);
+  return !(ret == 5000002 || (ret < 0 && errno == ENOMEM));
+}
+
+_ACEOF
+          if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s conftest$ac_exeext; then
+            (./conftest 2>&5
+             result=$?
+             $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $result" >&5
+             if test $result != 0 && test $result != 77; then result=1; fi
+             exit $result
+            ) >/dev/null 2>/dev/null
+            case $? in
+              0) gl_cv_func_printf_enomem="yes" ;;
+              77) gl_cv_func_printf_enomem="guessing no" ;;
+              *) gl_cv_func_printf_enomem="no" ;;
+            esac
+          else
+            gl_cv_func_printf_enomem="guessing no"
+          fi
+          rm -fr conftest*
+        else
+                                        gl_cv_func_printf_enomem="guessing no"
+        fi
+      fi
+      if test "$gl_cv_func_printf_enomem" = "guessing no"; then
+        case "$host_os" in
+                         # Guess yes on glibc systems.
+          *-gnu* | gnu*) gl_cv_func_printf_enomem="guessing yes";;
+                         # Guess yes on Solaris.
+          solaris*)      gl_cv_func_printf_enomem="guessing yes";;
+                         # Guess yes on AIX.
+          aix*)          gl_cv_func_printf_enomem="guessing yes";;
+                         # Guess yes on HP-UX/hppa.
+          hpux*)         case "$host_cpu" in
+                           hppa*) gl_cv_func_printf_enomem="guessing yes";;
+                           *)     gl_cv_func_printf_enomem="guessing no";;
+                         esac
+                         ;;
+                         # Guess yes on IRIX.
+          irix*)         gl_cv_func_printf_enomem="guessing yes";;
+                         # Guess yes on OSF/1.
+          osf*)          gl_cv_func_printf_enomem="guessing yes";;
+                         # Guess yes on BeOS.
+          beos*)         gl_cv_func_printf_enomem="guessing yes";;
+                         # Guess yes on Haiku.
+          haiku*)        gl_cv_func_printf_enomem="guessing yes";;
+                         # If we don't know, assume the worst.
+          *)             gl_cv_func_printf_enomem="guessing no";;
+        esac
+      fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_printf_enomem" >&5
+$as_echo "$gl_cv_func_printf_enomem" >&6; }
+
+
+
+  case "$gl_cv_func_printf_long_double" in
+    *yes)
+      ;;
+    *)
+
+$as_echo "#define NEED_PRINTF_LONG_DOUBLE 1" >>confdefs.h
+
+      ;;
+  esac
+
+
+
+
+  for ac_func in $ac_func_list
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for unsigned long long int" >&5
+$as_echo_n "checking for unsigned long long int... " >&6; }
+if ${ac_cv_type_unsigned_long_long_int+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_type_unsigned_long_long_int=yes
+     if test "x${ac_cv_prog_cc_c99-no}" = xno; then
+       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+  /* For now, do not test the preprocessor; as of 2007 there are too many
+         implementations with broken preprocessors.  Perhaps this can
+         be revisited in 2012.  In the meantime, code should not expect
+         #if to work with literals wider than 32 bits.  */
+      /* Test literals.  */
+      long long int ll = 9223372036854775807ll;
+      long long int nll = -9223372036854775807LL;
+      unsigned long long int ull = 18446744073709551615ULL;
+      /* Test constant expressions.   */
+      typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll)
+                     ? 1 : -1)];
+      typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1
+                     ? 1 : -1)];
+      int i = 63;
+int
+main ()
+{
+/* Test availability of runtime routines for shift and division.  */
+      long long int llmax = 9223372036854775807ll;
+      unsigned long long int ullmax = 18446744073709551615ull;
+      return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i)
+              | (llmax / ll) | (llmax % ll)
+              | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i)
+              | (ullmax / ull) | (ullmax % ull));
+  ;
+  return 0;
+}
+
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+
+else
+  ac_cv_type_unsigned_long_long_int=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+     fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_unsigned_long_long_int" >&5
+$as_echo "$ac_cv_type_unsigned_long_long_int" >&6; }
+  if test $ac_cv_type_unsigned_long_long_int = yes; then
+
+$as_echo "#define HAVE_UNSIGNED_LONG_LONG_INT 1" >>confdefs.h
+
+  fi
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for long long int" >&5
+$as_echo_n "checking for long long int... " >&6; }
+if ${ac_cv_type_long_long_int+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_type_long_long_int=yes
+      if test "x${ac_cv_prog_cc_c99-no}" = xno; then
+        ac_cv_type_long_long_int=$ac_cv_type_unsigned_long_long_int
+        if test $ac_cv_type_long_long_int = yes; then
+                                        if test "$cross_compiling" = yes; then :
+  :
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <limits.h>
+                 #ifndef LLONG_MAX
+                 # define HALF \
+                          (1LL << (sizeof (long long int) * CHAR_BIT - 2))
+                 # define LLONG_MAX (HALF - 1 + HALF)
+                 #endif
+int
+main ()
+{
+long long int n = 1;
+                 int i;
+                 for (i = 0; ; i++)
+                   {
+                     long long int m = n << i;
+                     if (m >> i != n)
+                       return 1;
+                     if (LLONG_MAX / 2 < m)
+                       break;
+                   }
+                 return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+
+else
+  ac_cv_type_long_long_int=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+        fi
+      fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_long_long_int" >&5
+$as_echo "$ac_cv_type_long_long_int" >&6; }
+  if test $ac_cv_type_long_long_int = yes; then
+
+$as_echo "#define HAVE_LONG_LONG_INT 1" >>confdefs.h
+
+  fi
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wchar_t" >&5
+$as_echo_n "checking for wchar_t... " >&6; }
+if ${gt_cv_c_wchar_t+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stddef.h>
+            wchar_t foo = (wchar_t)'\0';
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gt_cv_c_wchar_t=yes
+else
+  gt_cv_c_wchar_t=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_c_wchar_t" >&5
+$as_echo "$gt_cv_c_wchar_t" >&6; }
+  if test $gt_cv_c_wchar_t = yes; then
+
+$as_echo "#define HAVE_WCHAR_T 1" >>confdefs.h
+
+  fi
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wint_t" >&5
+$as_echo_n "checking for wint_t... " >&6; }
+if ${gt_cv_c_wint_t+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+   <wchar.h>.
+   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included
+   before <wchar.h>.  */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+            wint_t foo = (wchar_t)'\0';
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gt_cv_c_wint_t=yes
+else
+  gt_cv_c_wint_t=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_c_wint_t" >&5
+$as_echo "$gt_cv_c_wint_t" >&6; }
+  if test $gt_cv_c_wint_t = yes; then
+
+$as_echo "#define HAVE_WINT_T 1" >>confdefs.h
+
+
+            { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether wint_t is too small" >&5
+$as_echo_n "checking whether wint_t is too small... " >&6; }
+if ${gl_cv_type_wint_t_too_small+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+   <wchar.h>.
+   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+   included before <wchar.h>.  */
+#if !(defined __GLIBC__ && !defined __UCLIBC__)
+# include <stddef.h>
+# include <stdio.h>
+# include <time.h>
+#endif
+#include <wchar.h>
+              int verify[sizeof (wint_t) < sizeof (int) ? -1 : 1];
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gl_cv_type_wint_t_too_small=no
+else
+  gl_cv_type_wint_t_too_small=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_type_wint_t_too_small" >&5
+$as_echo "$gl_cv_type_wint_t_too_small" >&6; }
+    if test $gl_cv_type_wint_t_too_small = yes; then
+      GNULIB_OVERRIDES_WINT_T=1
+    else
+      GNULIB_OVERRIDES_WINT_T=0
+    fi
+  else
+    GNULIB_OVERRIDES_WINT_T=0
+  fi
+
+
+
+
+
+  for ac_header in $ac_header_list
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
+"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+
+
+  if test $ac_cv_header_features_h = yes; then
+    HAVE_FEATURES_H=1
+  else
+    HAVE_FEATURES_H=0
+  fi
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for intmax_t" >&5
+$as_echo_n "checking for intmax_t... " >&6; }
+if ${gt_cv_c_intmax_t+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <stddef.h>
+#include <stdlib.h>
+#if HAVE_STDINT_H_WITH_UINTMAX
+#include <stdint.h>
+#endif
+#if HAVE_INTTYPES_H_WITH_UINTMAX
+#include <inttypes.h>
+#endif
+
+int
+main ()
+{
+intmax_t x = -1; return !x;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gt_cv_c_intmax_t=yes
+else
+  gt_cv_c_intmax_t=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_c_intmax_t" >&5
+$as_echo "$gt_cv_c_intmax_t" >&6; }
+  if test $gt_cv_c_intmax_t = yes; then
+
+$as_echo "#define HAVE_INTMAX_T 1" >>confdefs.h
+
+  else
+
+    test $ac_cv_type_long_long_int = yes \
+      && ac_type='long long' \
+      || ac_type='long'
+
+cat >>confdefs.h <<_ACEOF
+#define intmax_t $ac_type
+_ACEOF
+
+  fi
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking where to find the exponent in a 'double'" >&5
+$as_echo_n "checking where to find the exponent in a 'double'... " >&6; }
+if ${gl_cv_cc_double_expbit0+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+      if test "$cross_compiling" = yes; then :
+
+                                                                      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#if defined arm || defined __arm || defined __arm__
+  mixed_endianness
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "mixed_endianness" >/dev/null 2>&1; then :
+  gl_cv_cc_double_expbit0="unknown"
+else
+
+                                                         :
+if ${ac_cv_c_bigendian+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_c_bigendian=unknown
+    # See if we're dealing with a universal compiler.
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifndef __APPLE_CC__
+              not a universal capable compiler
+            #endif
+            typedef int dummy;
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+       # Check for potential -arch flags.  It is not universal unless
+       # there are at least two -arch flags with different values.
+       ac_arch=
+       ac_prev=
+       for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do
+        if test -n "$ac_prev"; then
+          case $ac_word in
+            i?86 | x86_64 | ppc | ppc64)
+              if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then
+                ac_arch=$ac_word
+              else
+                ac_cv_c_bigendian=universal
+                break
+              fi
+              ;;
+          esac
+          ac_prev=
+        elif test "x$ac_word" = "x-arch"; then
+          ac_prev=arch
+        fi
+       done
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    if test $ac_cv_c_bigendian = unknown; then
+      # See if sys/param.h defines the BYTE_ORDER macro.
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/types.h>
+            #include <sys/param.h>
+
+int
+main ()
+{
+#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \
+                    && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \
+                    && LITTLE_ENDIAN)
+             bogus endian macros
+            #endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  # It does; now see whether it defined to BIG_ENDIAN or not.
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/types.h>
+               #include <sys/param.h>
+
+int
+main ()
+{
+#if BYTE_ORDER != BIG_ENDIAN
+                not big endian
+               #endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_c_bigendian=yes
+else
+  ac_cv_c_bigendian=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    fi
+    if test $ac_cv_c_bigendian = unknown; then
+      # See if <limits.h> defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris).
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <limits.h>
+
+int
+main ()
+{
+#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN)
+             bogus endian macros
+            #endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  # It does; now see whether it defined to _BIG_ENDIAN or not.
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <limits.h>
+
+int
+main ()
+{
+#ifndef _BIG_ENDIAN
+                not big endian
+               #endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_c_bigendian=yes
+else
+  ac_cv_c_bigendian=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    fi
+    if test $ac_cv_c_bigendian = unknown; then
+      # Compile a test program.
+      if test "$cross_compiling" = yes; then :
+  # Try to guess by grepping values from an object file.
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+short int ascii_mm[] =
+                 { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 };
+               short int ascii_ii[] =
+                 { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 };
+               int use_ascii (int i) {
+                 return ascii_mm[i] + ascii_ii[i];
+               }
+               short int ebcdic_ii[] =
+                 { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 };
+               short int ebcdic_mm[] =
+                 { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 };
+               int use_ebcdic (int i) {
+                 return ebcdic_mm[i] + ebcdic_ii[i];
+               }
+               extern int foo;
+
+int
+main ()
+{
+return use_ascii (foo) == use_ebcdic (foo);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then
+             ac_cv_c_bigendian=yes
+           fi
+           if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then
+             if test "$ac_cv_c_bigendian" = unknown; then
+               ac_cv_c_bigendian=no
+             else
+               # finding both strings is unlikely to happen, but who knows?
+               ac_cv_c_bigendian=unknown
+             fi
+           fi
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+
+            /* Are we little or big endian?  From Harbison&Steele.  */
+            union
+            {
+              long int l;
+              char c[sizeof (long int)];
+            } u;
+            u.l = 1;
+            return u.c[sizeof (long int) - 1] == 1;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  ac_cv_c_bigendian=no
+else
+  ac_cv_c_bigendian=yes
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+    fi
+fi
+:
+ case $ac_cv_c_bigendian in #(
+   yes)
+     gl_cv_cc_double_expbit0="word 0 bit 20";; #(
+   no)
+     gl_cv_cc_double_expbit0="word 1 bit 20" ;; #(
+   universal)
+
+$as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h
+
+     ;; #(
+   *)
+     gl_cv_cc_double_expbit0="unknown" ;;
+ esac
+
+
+fi
+rm -f conftest*
+
+
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <float.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <string.h>
+#define NWORDS \
+  ((sizeof (double) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
+typedef union { double value; unsigned int word[NWORDS]; } memory_double;
+static unsigned int ored_words[NWORDS];
+static unsigned int anded_words[NWORDS];
+static void add_to_ored_words (double x)
+{
+  memory_double m;
+  size_t i;
+  /* Clear it first, in case sizeof (double) < sizeof (memory_double).  */
+  memset (&m, 0, sizeof (memory_double));
+  m.value = x;
+  for (i = 0; i < NWORDS; i++)
+    {
+      ored_words[i] |= m.word[i];
+      anded_words[i] &= m.word[i];
+    }
+}
+int main ()
+{
+  size_t j;
+  FILE *fp = fopen ("conftest.out", "w");
+  if (fp == NULL)
+    return 1;
+  for (j = 0; j < NWORDS; j++)
+    anded_words[j] = ~ (unsigned int) 0;
+  add_to_ored_words (0.25);
+  add_to_ored_words (0.5);
+  add_to_ored_words (1.0);
+  add_to_ored_words (2.0);
+  add_to_ored_words (4.0);
+  /* Remove bits that are common (e.g. if representation of the first mantissa
+     bit is explicit).  */
+  for (j = 0; j < NWORDS; j++)
+    ored_words[j] &= ~anded_words[j];
+  /* Now find the nonzero word.  */
+  for (j = 0; j < NWORDS; j++)
+    if (ored_words[j] != 0)
+      break;
+  if (j < NWORDS)
+    {
+      size_t i;
+      for (i = j + 1; i < NWORDS; i++)
+        if (ored_words[i] != 0)
+          {
+            fprintf (fp, "unknown");
+            return (fclose (fp) != 0);
+          }
+      for (i = 0; ; i++)
+        if ((ored_words[j] >> i) & 1)
+          {
+            fprintf (fp, "word %d bit %d", (int) j, (int) i);
+            return (fclose (fp) != 0);
+          }
+    }
+  fprintf (fp, "unknown");
+  return (fclose (fp) != 0);
+}
+
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_cc_double_expbit0=`cat conftest.out`
+else
+  gl_cv_cc_double_expbit0="unknown"
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+      rm -f conftest.out
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_double_expbit0" >&5
+$as_echo "$gl_cv_cc_double_expbit0" >&6; }
+  case "$gl_cv_cc_double_expbit0" in
+    word*bit*)
+      word=`echo "$gl_cv_cc_double_expbit0" | sed -e 's/word //' -e 's/ bit.*//'`
+      bit=`echo "$gl_cv_cc_double_expbit0" | sed -e 's/word.*bit //'`
+
+cat >>confdefs.h <<_ACEOF
+#define DBL_EXPBIT0_WORD $word
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define DBL_EXPBIT0_BIT $bit
+_ACEOF
+
+      ;;
+  esac
+
+
+
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether snprintf returns a byte count as in C99" >&5
+$as_echo_n "checking whether snprintf returns a byte count as in C99... " >&6; }
+if ${gl_cv_func_snprintf_retval_c99+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+      if test "$cross_compiling" = yes; then :
+  case "$host_os" in
+                                 # Guess yes on glibc systems.
+           *-gnu* | gnu*)        gl_cv_func_snprintf_retval_c99="guessing yes";;
+                                 # Guess yes on FreeBSD >= 5.
+           freebsd[1-4].*)       gl_cv_func_snprintf_retval_c99="guessing no";;
+           freebsd* | kfreebsd*) gl_cv_func_snprintf_retval_c99="guessing yes";;
+                                 # Guess yes on Mac OS X >= 10.3.
+           darwin[1-6].*)        gl_cv_func_snprintf_retval_c99="guessing no";;
+           darwin*)              gl_cv_func_snprintf_retval_c99="guessing yes";;
+                                 # Guess yes on OpenBSD >= 3.9.
+           openbsd[1-2].* | openbsd3.[0-8] | openbsd3.[0-8].*)
+                                 gl_cv_func_snprintf_retval_c99="guessing no";;
+           openbsd*)             gl_cv_func_snprintf_retval_c99="guessing yes";;
+                                 # Guess yes on Solaris >= 2.10.
+           solaris2.[1-9][0-9]*) gl_cv_func_printf_sizes_c99="guessing yes";;
+           solaris*)             gl_cv_func_printf_sizes_c99="guessing no";;
+                                 # Guess yes on AIX >= 4.
+           aix[1-3]*)            gl_cv_func_snprintf_retval_c99="guessing no";;
+           aix*)                 gl_cv_func_snprintf_retval_c99="guessing yes";;
+                                 # Guess yes on NetBSD >= 3.
+           netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*)
+                                 gl_cv_func_snprintf_retval_c99="guessing no";;
+           netbsd*)              gl_cv_func_snprintf_retval_c99="guessing yes";;
+                                 # Guess yes on BeOS.
+           beos*)                gl_cv_func_snprintf_retval_c99="guessing yes";;
+                                 # Guess yes on MSVC, no on mingw.
+           mingw*)               cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#ifdef _MSC_VER
+ Known
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "Known" >/dev/null 2>&1; then :
+  gl_cv_func_snprintf_retval_c99="guessing yes"
+else
+  gl_cv_func_snprintf_retval_c99="guessing no"
+fi
+rm -f conftest*
+
+                                 ;;
+                                 # If we don't know, assume the worst.
+           *)                    gl_cv_func_snprintf_retval_c99="guessing no";;
+         esac
+
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <stdio.h>
+#include <string.h>
+#if HAVE_SNPRINTF
+# define my_snprintf snprintf
+#else
+# include <stdarg.h>
+static int my_snprintf (char *buf, int size, const char *format, ...)
+{
+  va_list args;
+  int ret;
+  va_start (args, format);
+  ret = vsnprintf (buf, size, format, args);
+  va_end (args);
+  return ret;
+}
+#endif
+static char buf[100];
+int main ()
+{
+  strcpy (buf, "ABCDEF");
+  if (my_snprintf (buf, 3, "%d %d", 4567, 89) != 7)
+    return 1;
+  if (my_snprintf (buf, 0, "%d %d", 4567, 89) != 7)
+    return 2;
+  if (my_snprintf (NULL, 0, "%d %d", 4567, 89) != 7)
+    return 3;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_snprintf_retval_c99=yes
+else
+  gl_cv_func_snprintf_retval_c99=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_snprintf_retval_c99" >&5
+$as_echo "$gl_cv_func_snprintf_retval_c99" >&6; }
+
+
+
+
+
+
+  for ac_func in snprintf strnlen wcslen wcsnlen mbrtowc wcrtomb
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+      ac_fn_c_check_decl "$LINENO" "_snprintf" "ac_cv_have_decl__snprintf" "#include <stdio.h>
+"
+if test "x$ac_cv_have_decl__snprintf" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL__SNPRINTF $ac_have_decl
+_ACEOF
+
+
+
+  case "$gl_cv_func_snprintf_retval_c99" in
+    *yes)
+
+$as_echo "#define HAVE_SNPRINTF_RETVAL_C99 1" >>confdefs.h
+
+      ;;
+  esac
+
+
+  GNULIB_DPRINTF=0;
+  GNULIB_FCLOSE=0;
+  GNULIB_FDOPEN=0;
+  GNULIB_FFLUSH=0;
+  GNULIB_FGETC=0;
+  GNULIB_FGETS=0;
+  GNULIB_FOPEN=0;
+  GNULIB_FPRINTF=0;
+  GNULIB_FPRINTF_POSIX=0;
+  GNULIB_FPURGE=0;
+  GNULIB_FPUTC=0;
+  GNULIB_FPUTS=0;
+  GNULIB_FREAD=0;
+  GNULIB_FREOPEN=0;
+  GNULIB_FSCANF=0;
+  GNULIB_FSEEK=0;
+  GNULIB_FSEEKO=0;
+  GNULIB_FTELL=0;
+  GNULIB_FTELLO=0;
+  GNULIB_FWRITE=0;
+  GNULIB_GETC=0;
+  GNULIB_GETCHAR=0;
+  GNULIB_GETDELIM=0;
+  GNULIB_GETLINE=0;
+  GNULIB_OBSTACK_PRINTF=0;
+  GNULIB_OBSTACK_PRINTF_POSIX=0;
+  GNULIB_PCLOSE=0;
+  GNULIB_PERROR=0;
+  GNULIB_POPEN=0;
+  GNULIB_PRINTF=0;
+  GNULIB_PRINTF_POSIX=0;
+  GNULIB_PUTC=0;
+  GNULIB_PUTCHAR=0;
+  GNULIB_PUTS=0;
+  GNULIB_REMOVE=0;
+  GNULIB_RENAME=0;
+  GNULIB_RENAMEAT=0;
+  GNULIB_SCANF=0;
+  GNULIB_SNPRINTF=0;
+  GNULIB_SPRINTF_POSIX=0;
+  GNULIB_STDIO_H_NONBLOCKING=0;
+  GNULIB_STDIO_H_SIGPIPE=0;
+  GNULIB_TMPFILE=0;
+  GNULIB_VASPRINTF=0;
+  GNULIB_VFSCANF=0;
+  GNULIB_VSCANF=0;
+  GNULIB_VDPRINTF=0;
+  GNULIB_VFPRINTF=0;
+  GNULIB_VFPRINTF_POSIX=0;
+  GNULIB_VPRINTF=0;
+  GNULIB_VPRINTF_POSIX=0;
+  GNULIB_VSNPRINTF=0;
+  GNULIB_VSPRINTF_POSIX=0;
+    HAVE_DECL_FPURGE=1;
+  HAVE_DECL_FSEEKO=1;
+  HAVE_DECL_FTELLO=1;
+  HAVE_DECL_GETDELIM=1;
+  HAVE_DECL_GETLINE=1;
+  HAVE_DECL_OBSTACK_PRINTF=1;
+  HAVE_DECL_SNPRINTF=1;
+  HAVE_DECL_VSNPRINTF=1;
+  HAVE_DPRINTF=1;
+  HAVE_FSEEKO=1;
+  HAVE_FTELLO=1;
+  HAVE_PCLOSE=1;
+  HAVE_POPEN=1;
+  HAVE_RENAMEAT=1;
+  HAVE_VASPRINTF=1;
+  HAVE_VDPRINTF=1;
+  REPLACE_DPRINTF=0;
+  REPLACE_FCLOSE=0;
+  REPLACE_FDOPEN=0;
+  REPLACE_FFLUSH=0;
+  REPLACE_FOPEN=0;
+  REPLACE_FPRINTF=0;
+  REPLACE_FPURGE=0;
+  REPLACE_FREOPEN=0;
+  REPLACE_FSEEK=0;
+  REPLACE_FSEEKO=0;
+  REPLACE_FTELL=0;
+  REPLACE_FTELLO=0;
+  REPLACE_GETDELIM=0;
+  REPLACE_GETLINE=0;
+  REPLACE_OBSTACK_PRINTF=0;
+  REPLACE_PERROR=0;
+  REPLACE_POPEN=0;
+  REPLACE_PRINTF=0;
+  REPLACE_REMOVE=0;
+  REPLACE_RENAME=0;
+  REPLACE_RENAMEAT=0;
+  REPLACE_SNPRINTF=0;
+  REPLACE_SPRINTF=0;
+  REPLACE_STDIO_READ_FUNCS=0;
+  REPLACE_STDIO_WRITE_FUNCS=0;
+  REPLACE_TMPFILE=0;
+  REPLACE_VASPRINTF=0;
+  REPLACE_VDPRINTF=0;
+  REPLACE_VFPRINTF=0;
+  REPLACE_VPRINTF=0;
+  REPLACE_VSNPRINTF=0;
+  REPLACE_VSPRINTF=0;
+
+
+  GNULIB_ACOSF=0;
+  GNULIB_ACOSL=0;
+  GNULIB_ASINF=0;
+  GNULIB_ASINL=0;
+  GNULIB_ATANF=0;
+  GNULIB_ATANL=0;
+  GNULIB_ATAN2F=0;
+  GNULIB_CBRT=0;
+  GNULIB_CBRTF=0;
+  GNULIB_CBRTL=0;
+  GNULIB_CEIL=0;
+  GNULIB_CEILF=0;
+  GNULIB_CEILL=0;
+  GNULIB_COPYSIGN=0;
+  GNULIB_COPYSIGNF=0;
+  GNULIB_COPYSIGNL=0;
+  GNULIB_COSF=0;
+  GNULIB_COSL=0;
+  GNULIB_COSHF=0;
+  GNULIB_EXPF=0;
+  GNULIB_EXPL=0;
+  GNULIB_EXP2=0;
+  GNULIB_EXP2F=0;
+  GNULIB_EXP2L=0;
+  GNULIB_EXPM1=0;
+  GNULIB_EXPM1F=0;
+  GNULIB_EXPM1L=0;
+  GNULIB_FABSF=0;
+  GNULIB_FABSL=0;
+  GNULIB_FLOOR=0;
+  GNULIB_FLOORF=0;
+  GNULIB_FLOORL=0;
+  GNULIB_FMA=0;
+  GNULIB_FMAF=0;
+  GNULIB_FMAL=0;
+  GNULIB_FMOD=0;
+  GNULIB_FMODF=0;
+  GNULIB_FMODL=0;
+  GNULIB_FREXPF=0;
+  GNULIB_FREXP=0;
+  GNULIB_FREXPL=0;
+  GNULIB_HYPOT=0;
+  GNULIB_HYPOTF=0;
+  GNULIB_HYPOTL=0;
+  GNULIB_ILOGB=0;
+  GNULIB_ILOGBF=0;
+  GNULIB_ILOGBL=0;
+  GNULIB_ISFINITE=0;
+  GNULIB_ISINF=0;
+  GNULIB_ISNAN=0;
+  GNULIB_ISNANF=0;
+  GNULIB_ISNAND=0;
+  GNULIB_ISNANL=0;
+  GNULIB_LDEXPF=0;
+  GNULIB_LDEXPL=0;
+  GNULIB_LOG=0;
+  GNULIB_LOGF=0;
+  GNULIB_LOGL=0;
+  GNULIB_LOG10=0;
+  GNULIB_LOG10F=0;
+  GNULIB_LOG10L=0;
+  GNULIB_LOG1P=0;
+  GNULIB_LOG1PF=0;
+  GNULIB_LOG1PL=0;
+  GNULIB_LOG2=0;
+  GNULIB_LOG2F=0;
+  GNULIB_LOG2L=0;
+  GNULIB_LOGB=0;
+  GNULIB_LOGBF=0;
+  GNULIB_LOGBL=0;
+  GNULIB_MODF=0;
+  GNULIB_MODFF=0;
+  GNULIB_MODFL=0;
+  GNULIB_POWF=0;
+  GNULIB_REMAINDER=0;
+  GNULIB_REMAINDERF=0;
+  GNULIB_REMAINDERL=0;
+  GNULIB_RINT=0;
+  GNULIB_RINTF=0;
+  GNULIB_RINTL=0;
+  GNULIB_ROUND=0;
+  GNULIB_ROUNDF=0;
+  GNULIB_ROUNDL=0;
+  GNULIB_SIGNBIT=0;
+  GNULIB_SINF=0;
+  GNULIB_SINL=0;
+  GNULIB_SINHF=0;
+  GNULIB_SQRTF=0;
+  GNULIB_SQRTL=0;
+  GNULIB_TANF=0;
+  GNULIB_TANL=0;
+  GNULIB_TANHF=0;
+  GNULIB_TRUNC=0;
+  GNULIB_TRUNCF=0;
+  GNULIB_TRUNCL=0;
+    HAVE_ACOSF=1;
+  HAVE_ACOSL=1;
+  HAVE_ASINF=1;
+  HAVE_ASINL=1;
+  HAVE_ATANF=1;
+  HAVE_ATANL=1;
+  HAVE_ATAN2F=1;
+  HAVE_CBRT=1;
+  HAVE_CBRTF=1;
+  HAVE_CBRTL=1;
+  HAVE_COPYSIGN=1;
+  HAVE_COPYSIGNL=1;
+  HAVE_COSF=1;
+  HAVE_COSL=1;
+  HAVE_COSHF=1;
+  HAVE_EXPF=1;
+  HAVE_EXPL=1;
+  HAVE_EXPM1=1;
+  HAVE_EXPM1F=1;
+  HAVE_FABSF=1;
+  HAVE_FABSL=1;
+  HAVE_FMA=1;
+  HAVE_FMAF=1;
+  HAVE_FMAL=1;
+  HAVE_FMODF=1;
+  HAVE_FMODL=1;
+  HAVE_FREXPF=1;
+  HAVE_HYPOTF=1;
+  HAVE_HYPOTL=1;
+  HAVE_ILOGB=1;
+  HAVE_ILOGBF=1;
+  HAVE_ILOGBL=1;
+  HAVE_ISNANF=1;
+  HAVE_ISNAND=1;
+  HAVE_ISNANL=1;
+  HAVE_LDEXPF=1;
+  HAVE_LOGF=1;
+  HAVE_LOGL=1;
+  HAVE_LOG10F=1;
+  HAVE_LOG10L=1;
+  HAVE_LOG1P=1;
+  HAVE_LOG1PF=1;
+  HAVE_LOG1PL=1;
+  HAVE_LOGBF=1;
+  HAVE_LOGBL=1;
+  HAVE_MODFF=1;
+  HAVE_MODFL=1;
+  HAVE_POWF=1;
+  HAVE_REMAINDER=1;
+  HAVE_REMAINDERF=1;
+  HAVE_RINT=1;
+  HAVE_RINTL=1;
+  HAVE_SINF=1;
+  HAVE_SINL=1;
+  HAVE_SINHF=1;
+  HAVE_SQRTF=1;
+  HAVE_SQRTL=1;
+  HAVE_TANF=1;
+  HAVE_TANL=1;
+  HAVE_TANHF=1;
+  HAVE_DECL_ACOSL=1;
+  HAVE_DECL_ASINL=1;
+  HAVE_DECL_ATANL=1;
+  HAVE_DECL_CBRTF=1;
+  HAVE_DECL_CBRTL=1;
+  HAVE_DECL_CEILF=1;
+  HAVE_DECL_CEILL=1;
+  HAVE_DECL_COPYSIGNF=1;
+  HAVE_DECL_COSL=1;
+  HAVE_DECL_EXPL=1;
+  HAVE_DECL_EXP2=1;
+  HAVE_DECL_EXP2F=1;
+  HAVE_DECL_EXP2L=1;
+  HAVE_DECL_EXPM1L=1;
+  HAVE_DECL_FLOORF=1;
+  HAVE_DECL_FLOORL=1;
+  HAVE_DECL_FREXPL=1;
+  HAVE_DECL_LDEXPL=1;
+  HAVE_DECL_LOGL=1;
+  HAVE_DECL_LOG10L=1;
+  HAVE_DECL_LOG2=1;
+  HAVE_DECL_LOG2F=1;
+  HAVE_DECL_LOG2L=1;
+  HAVE_DECL_LOGB=1;
+  HAVE_DECL_REMAINDER=1;
+  HAVE_DECL_REMAINDERL=1;
+  HAVE_DECL_RINTF=1;
+  HAVE_DECL_ROUND=1;
+  HAVE_DECL_ROUNDF=1;
+  HAVE_DECL_ROUNDL=1;
+  HAVE_DECL_SINL=1;
+  HAVE_DECL_SQRTL=1;
+  HAVE_DECL_TANL=1;
+  HAVE_DECL_TRUNC=1;
+  HAVE_DECL_TRUNCF=1;
+  HAVE_DECL_TRUNCL=1;
+  REPLACE_ACOSF=0;
+  REPLACE_ASINF=0;
+  REPLACE_ATANF=0;
+  REPLACE_ATAN2F=0;
+  REPLACE_CBRTF=0;
+  REPLACE_CBRTL=0;
+  REPLACE_CEIL=0;
+  REPLACE_CEILF=0;
+  REPLACE_CEILL=0;
+  REPLACE_COSF=0;
+  REPLACE_COSHF=0;
+  REPLACE_EXPF=0;
+  REPLACE_EXPM1=0;
+  REPLACE_EXPM1F=0;
+  REPLACE_EXP2=0;
+  REPLACE_EXP2L=0;
+  REPLACE_FABSL=0;
+  REPLACE_FLOOR=0;
+  REPLACE_FLOORF=0;
+  REPLACE_FLOORL=0;
+  REPLACE_FMA=0;
+  REPLACE_FMAF=0;
+  REPLACE_FMAL=0;
+  REPLACE_FMOD=0;
+  REPLACE_FMODF=0;
+  REPLACE_FMODL=0;
+  REPLACE_FREXPF=0;
+  REPLACE_FREXP=0;
+  REPLACE_FREXPL=0;
+  REPLACE_HUGE_VAL=0;
+  REPLACE_HYPOT=0;
+  REPLACE_HYPOTF=0;
+  REPLACE_HYPOTL=0;
+  REPLACE_ILOGB=0;
+  REPLACE_ILOGBF=0;
+  REPLACE_ILOGBL=0;
+  REPLACE_ISFINITE=0;
+  REPLACE_ISINF=0;
+  REPLACE_ISNAN=0;
+  REPLACE_LDEXPL=0;
+  REPLACE_LOG=0;
+  REPLACE_LOGF=0;
+  REPLACE_LOGL=0;
+  REPLACE_LOG10=0;
+  REPLACE_LOG10F=0;
+  REPLACE_LOG10L=0;
+  REPLACE_LOG1P=0;
+  REPLACE_LOG1PF=0;
+  REPLACE_LOG1PL=0;
+  REPLACE_LOG2=0;
+  REPLACE_LOG2F=0;
+  REPLACE_LOG2L=0;
+  REPLACE_LOGB=0;
+  REPLACE_LOGBF=0;
+  REPLACE_LOGBL=0;
+  REPLACE_MODF=0;
+  REPLACE_MODFF=0;
+  REPLACE_MODFL=0;
+  REPLACE_NAN=0;
+  REPLACE_REMAINDER=0;
+  REPLACE_REMAINDERF=0;
+  REPLACE_REMAINDERL=0;
+  REPLACE_ROUND=0;
+  REPLACE_ROUNDF=0;
+  REPLACE_ROUNDL=0;
+  REPLACE_SIGNBIT=0;
+  REPLACE_SIGNBIT_USING_GCC=0;
+  REPLACE_SINF=0;
+  REPLACE_SINHF=0;
+  REPLACE_SQRTF=0;
+  REPLACE_SQRTL=0;
+  REPLACE_TANF=0;
+  REPLACE_TANHF=0;
+  REPLACE_TRUNC=0;
+  REPLACE_TRUNCF=0;
+  REPLACE_TRUNCL=0;
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether frexp() can be used without linking with libm" >&5
+$as_echo_n "checking whether frexp() can be used without linking with libm... " >&6; }
+if ${gl_cv_func_frexp_no_libm+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+             double x;
+int
+main ()
+{
+int e; return frexp (x, &e) > 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_func_frexp_no_libm=yes
+else
+  gl_cv_func_frexp_no_libm=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_frexp_no_libm" >&5
+$as_echo "$gl_cv_func_frexp_no_libm" >&6; }
+
+ac_fn_c_check_decl "$LINENO" "alarm" "ac_cv_have_decl_alarm" "$ac_includes_default"
+if test "x$ac_cv_have_decl_alarm" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_ALARM $ac_have_decl
+_ACEOF
+
+
+
+
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#ifdef _MSC_VER
+MicrosoftCompiler
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "MicrosoftCompiler" >/dev/null 2>&1; then :
+  gl_asmext='asm'
+     gl_c_asm_opt='-c -Fa'
+
+else
+  gl_asmext='s'
+     gl_c_asm_opt='-S'
+
+fi
+rm -f conftest*
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking host CPU and C ABI" >&5
+$as_echo_n "checking host CPU and C ABI... " >&6; }
+if ${gl_cv_host_cpu_c_abi+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case "$host_cpu" in
+
+       i[4567]86 )
+         gl_cv_host_cpu_c_abi=i386
+         ;;
+
+       x86_64 )
+         # On x86_64 systems, the C compiler may be generating code in one of
+         # these ABIs:
+         # - 64-bit instruction set, 64-bit pointers, 64-bit 'long': x86_64.
+         # - 64-bit instruction set, 64-bit pointers, 32-bit 'long': x86_64
+         #   with native Windows (mingw, MSVC).
+         # - 64-bit instruction set, 32-bit pointers, 32-bit 'long': x86_64-x32.
+         # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': i386.
+         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#if (defined __x86_64__ || defined __amd64__ \
+                     || defined _M_X64 || defined _M_AMD64)
+                 int ok;
+                #else
+                 error fail
+                #endif
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#if defined __ILP32__ || defined _ILP32
+                    int ok;
+                   #else
+                    error fail
+                   #endif
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gl_cv_host_cpu_c_abi=x86_64-x32
+else
+  gl_cv_host_cpu_c_abi=x86_64
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+  gl_cv_host_cpu_c_abi=i386
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+         ;;
+
+       alphaev[4-8] | alphaev56 | alphapca5[67] | alphaev6[78] )
+         gl_cv_host_cpu_c_abi=alpha
+         ;;
+
+       arm* | aarch64 )
+         # Assume arm with EABI.
+         # On arm64 systems, the C compiler may be generating code in one of
+         # these ABIs:
+         # - aarch64 instruction set, 64-bit pointers, 64-bit 'long': arm64.
+         # - aarch64 instruction set, 32-bit pointers, 32-bit 'long': arm64-ilp32.
+         # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': arm or armhf.
+         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __aarch64__
+                 int ok;
+                #else
+                 error fail
+                #endif
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#if defined __ILP32__ || defined _ILP32
+                   int ok;
+                  #else
+                   error fail
+                  #endif
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gl_cv_host_cpu_c_abi=arm64-ilp32
+else
+  gl_cv_host_cpu_c_abi=arm64
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+  # Don't distinguish little-endian and big-endian arm, since they
+            # don't require different machine code for simple operations and
+            # since the user can distinguish them through the preprocessor
+            # defines __ARMEL__ vs. __ARMEB__.
+            # But distinguish arm which passes floating-point arguments and
+            # return values in integer registers (r0, r1, ...) - this is
+            # gcc -mfloat-abi=soft or gcc -mfloat-abi=softfp - from arm which
+            # passes them in float registers (s0, s1, ...) and double registers
+            # (d0, d1, ...) - this is gcc -mfloat-abi=hard. GCC 4.6 or newer
+            # sets the preprocessor defines __ARM_PCS (for the first case) and
+            # __ARM_PCS_VFP (for the second case), but older GCC does not.
+            echo 'double ddd; void func (double dd) { ddd = dd; }' > conftest.c
+            # Look for a reference to the register d0 in the .s file.
+            { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $gl_c_asm_opt conftest.c'
+  { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; } >/dev/null 2>&1
+            if LC_ALL=C grep 'd0,' conftest.$gl_asmext >/dev/null; then
+              gl_cv_host_cpu_c_abi=armhf
+            else
+              gl_cv_host_cpu_c_abi=arm
+            fi
+            rm -f conftest*
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+         ;;
+
+       hppa1.0 | hppa1.1 | hppa2.0* | hppa64 )
+         # On hppa, the C compiler may be generating 32-bit code or 64-bit
+         # code. In the latter case, it defines _LP64 and __LP64__.
+         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __LP64__
+                 int ok;
+                #else
+                 error fail
+                #endif
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gl_cv_host_cpu_c_abi=hppa64
+else
+  gl_cv_host_cpu_c_abi=hppa
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+         ;;
+
+       ia64* )
+         # On ia64 on HP-UX, the C compiler may be generating 64-bit code or
+         # 32-bit code. In the latter case, it defines _ILP32.
+         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef _ILP32
+                 int ok;
+                #else
+                 error fail
+                #endif
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gl_cv_host_cpu_c_abi=ia64-ilp32
+else
+  gl_cv_host_cpu_c_abi=ia64
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+         ;;
+
+       mips* )
+         # We should also check for (_MIPS_SZPTR == 64), but gcc keeps this
+         # at 32.
+         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#if defined _MIPS_SZLONG && (_MIPS_SZLONG == 64)
+                 int ok;
+                #else
+                 error fail
+                #endif
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gl_cv_host_cpu_c_abi=mips64
+else
+  # In the n32 ABI, _ABIN32 is defined, _ABIO32 is not defined (but
+            # may later get defined by <sgidefs.h>), and _MIPS_SIM == _ABIN32.
+            # In the 32 ABI, _ABIO32 is defined, _ABIN32 is not defined (but
+            # may later get defined by <sgidefs.h>), and _MIPS_SIM == _ABIO32.
+            cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#if (_MIPS_SIM == _ABIN32)
+                    int ok;
+                   #else
+                    error fail
+                   #endif
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gl_cv_host_cpu_c_abi=mipsn32
+else
+  gl_cv_host_cpu_c_abi=mips
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+         ;;
+
+       powerpc* )
+         # Different ABIs are in use on AIX vs. Mac OS X vs. Linux,*BSD.
+         # No need to distinguish them here; the caller may distinguish
+         # them based on the OS.
+         # On powerpc64 systems, the C compiler may still be generating
+         # 32-bit code. And on powerpc-ibm-aix systems, the C compiler may
+         # be generating 64-bit code.
+         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#if defined __powerpc64__ || defined _ARCH_PPC64
+                 int ok;
+                #else
+                 error fail
+                #endif
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  # On powerpc64, there are two ABIs on Linux: The AIX compatible
+            # one and the ELFv2 one. The latter defines _CALL_ELF=2.
+            cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#if defined _CALL_ELF && _CALL_ELF == 2
+                    int ok;
+                   #else
+                    error fail
+                   #endif
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gl_cv_host_cpu_c_abi=powerpc64-elfv2
+else
+  gl_cv_host_cpu_c_abi=powerpc64
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+else
+  gl_cv_host_cpu_c_abi=powerpc
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+         ;;
+
+       rs6000 )
+         gl_cv_host_cpu_c_abi=powerpc
+         ;;
+
+       riscv32 | riscv64 )
+         # There are 2 architectures (with variants): rv32* and rv64*.
+         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#if __riscv_xlen == 64
+                  int ok;
+                #else
+                  error fail
+                #endif
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  cpu=riscv64
+else
+  cpu=riscv32
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+         # There are 6 ABIs: ilp32, ilp32f, ilp32d, lp64, lp64f, lp64d.
+         # Size of 'long' and 'void *':
+         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#if defined __LP64__
+                  int ok;
+                #else
+                  error fail
+                #endif
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  main_abi=lp64
+else
+  main_abi=ilp32
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+         # Float ABIs:
+         # __riscv_float_abi_double:
+         #   'float' and 'double' are passed in floating-point registers.
+         # __riscv_float_abi_single:
+         #   'float' are passed in floating-point registers.
+         # __riscv_float_abi_soft:
+         #   No values are passed in floating-point registers.
+         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#if defined __riscv_float_abi_double
+                  int ok;
+                #else
+                  error fail
+                #endif
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  float_abi=d
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#if defined __riscv_float_abi_single
+                     int ok;
+                   #else
+                     error fail
+                   #endif
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  float_abi=f
+else
+  float_abi=''
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+         gl_cv_host_cpu_c_abi="${cpu}-${main_abi}${float_abi}"
+         ;;
+
+       s390* )
+         # On s390x, the C compiler may be generating 64-bit (= s390x) code
+         # or 31-bit (= s390) code.
+         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#if defined __LP64__ || defined __s390x__
+                  int ok;
+                #else
+                  error fail
+                #endif
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gl_cv_host_cpu_c_abi=s390x
+else
+  gl_cv_host_cpu_c_abi=s390
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+         ;;
+
+       sparc | sparc64 )
+         # UltraSPARCs running Linux have `uname -m` = "sparc64", but the
+         # C compiler still generates 32-bit code.
+         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#if defined __sparcv9 || defined __arch64__
+                 int ok;
+                #else
+                 error fail
+                #endif
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gl_cv_host_cpu_c_abi=sparc64
+else
+  gl_cv_host_cpu_c_abi=sparc
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+         ;;
+
+       *)
+         gl_cv_host_cpu_c_abi="$host_cpu"
+         ;;
+     esac
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_host_cpu_c_abi" >&5
+$as_echo "$gl_cv_host_cpu_c_abi" >&6; }
+
+    HOST_CPU=`echo "$gl_cv_host_cpu_c_abi" | sed -e 's/-.*//'`
+  HOST_CPU_C_ABI="$gl_cv_host_cpu_c_abi"
+
+
+
+  # This was
+  #   AC_DEFINE_UNQUOTED([__${HOST_CPU}__])
+  #   AC_DEFINE_UNQUOTED([__${HOST_CPU_C_ABI}__])
+  # earlier, but KAI C++ 3.2d doesn't like this.
+  sed -e 's/-/_/g' >> confdefs.h <<EOF
+#ifndef __${HOST_CPU}__
+#define __${HOST_CPU}__ 1
+#endif
+#ifndef __${HOST_CPU_C_ABI}__
+#define __${HOST_CPU_C_ABI}__ 1
+#endif
+EOF
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking where to find the exponent in a 'float'" >&5
+$as_echo_n "checking where to find the exponent in a 'float'... " >&6; }
+if ${gl_cv_cc_float_expbit0+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+      if test "$cross_compiling" = yes; then :
+  gl_cv_cc_float_expbit0="word 0 bit 23"
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <float.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <string.h>
+#define NWORDS \
+  ((sizeof (float) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
+typedef union { float value; unsigned int word[NWORDS]; } memory_float;
+static unsigned int ored_words[NWORDS];
+static unsigned int anded_words[NWORDS];
+static void add_to_ored_words (float x)
+{
+  memory_float m;
+  size_t i;
+  /* Clear it first, in case
+     sizeof (float) < sizeof (memory_float).  */
+  memset (&m, 0, sizeof (memory_float));
+  m.value = x;
+  for (i = 0; i < NWORDS; i++)
+    {
+      ored_words[i] |= m.word[i];
+      anded_words[i] &= m.word[i];
+    }
+}
+int main ()
+{
+  size_t j;
+  FILE *fp = fopen ("conftest.out", "w");
+  if (fp == NULL)
+    return 1;
+  for (j = 0; j < NWORDS; j++)
+    anded_words[j] = ~ (unsigned int) 0;
+  add_to_ored_words (0.25f);
+  add_to_ored_words (0.5f);
+  add_to_ored_words (1.0f);
+  add_to_ored_words (2.0f);
+  add_to_ored_words (4.0f);
+  /* Remove bits that are common (e.g. if representation of the first mantissa
+     bit is explicit).  */
+  for (j = 0; j < NWORDS; j++)
+    ored_words[j] &= ~anded_words[j];
+  /* Now find the nonzero word.  */
+  for (j = 0; j < NWORDS; j++)
+    if (ored_words[j] != 0)
+      break;
+  if (j < NWORDS)
+    {
+      size_t i;
+      for (i = j + 1; i < NWORDS; i++)
+        if (ored_words[i] != 0)
+          {
+            fprintf (fp, "unknown");
+            return (fclose (fp) != 0);
+          }
+      for (i = 0; ; i++)
+        if ((ored_words[j] >> i) & 1)
+          {
+            fprintf (fp, "word %d bit %d", (int) j, (int) i);
+            return (fclose (fp) != 0);
+          }
+    }
+  fprintf (fp, "unknown");
+  return (fclose (fp) != 0);
+}
+
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_cc_float_expbit0=`cat conftest.out`
+else
+  gl_cv_cc_float_expbit0="unknown"
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+      rm -f conftest.out
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_float_expbit0" >&5
+$as_echo "$gl_cv_cc_float_expbit0" >&6; }
+  case "$gl_cv_cc_float_expbit0" in
+    word*bit*)
+      word=`echo "$gl_cv_cc_float_expbit0" | sed -e 's/word //' -e 's/ bit.*//'`
+      bit=`echo "$gl_cv_cc_float_expbit0" | sed -e 's/word.*bit //'`
+
+cat >>confdefs.h <<_ACEOF
+#define FLT_EXPBIT0_WORD $word
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define FLT_EXPBIT0_BIT $bit
+_ACEOF
+
+      ;;
+  esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+     if test $gl_cv_have_include_next = yes; then
+       gl_cv_next_limits_h='<'limits.h'>'
+     else
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <limits.h>" >&5
+$as_echo_n "checking absolute name of <limits.h>... " >&6; }
+if ${gl_cv_next_limits_h+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+             if test $ac_cv_header_limits_h = yes; then
+
+
+
+
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <limits.h>
+_ACEOF
+                case "$host_os" in
+    aix*) gl_absname_cpp="$ac_cpp -C" ;;
+    *)    gl_absname_cpp="$ac_cpp" ;;
+  esac
+
+  case "$host_os" in
+    mingw*)
+                                          gl_dirsep_regex='[/\\]'
+      ;;
+    *)
+      gl_dirsep_regex='\/'
+      ;;
+  esac
+      gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g'
+  gl_header_literal_regex=`echo 'limits.h' \
+                           | sed -e "$gl_make_literal_regex_sed"`
+  gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{
+      s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/
+      s|^/[^/]|//&|
+      p
+      q
+    }'
+
+        gl_cv_absolute_limits_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+  sed -n "$gl_absolute_header_sed"`
+
+           gl_header=$gl_cv_absolute_limits_h
+           gl_cv_next_limits_h='"'$gl_header'"'
+          else
+               gl_cv_next_limits_h='<'limits.h'>'
+             fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_limits_h" >&5
+$as_echo "$gl_cv_next_limits_h" >&6; }
+     fi
+     NEXT_LIMITS_H=$gl_cv_next_limits_h
+
+     if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+       gl_next_as_first_directive='<'limits.h'>'
+     else
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+       gl_next_as_first_directive=$gl_cv_next_limits_h
+     fi
+     NEXT_AS_FIRST_DIRECTIVE_LIMITS_H=$gl_next_as_first_directive
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether limits.h has LLONG_MAX, WORD_BIT, ULLONG_WIDTH etc." >&5
+$as_echo_n "checking whether limits.h has LLONG_MAX, WORD_BIT, ULLONG_WIDTH etc.... " >&6; }
+if ${gl_cv_header_limits_width+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifndef __STDC_WANT_IEC_60559_BFP_EXT__
+             #define __STDC_WANT_IEC_60559_BFP_EXT__ 1
+            #endif
+            #include <limits.h>
+            long long llm = LLONG_MAX;
+            int wb = WORD_BIT;
+            int ullw = ULLONG_WIDTH;
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gl_cv_header_limits_width=yes
+else
+  gl_cv_header_limits_width=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_limits_width" >&5
+$as_echo "$gl_cv_header_limits_width" >&6; }
+  if test "$gl_cv_header_limits_width" = yes; then
+    LIMITS_H=
+  else
+    LIMITS_H=limits.h
+  fi
+
+   if test -n "$LIMITS_H"; then
+  GL_GENERATE_LIMITS_H_TRUE=
+  GL_GENERATE_LIMITS_H_FALSE='#'
+else
+  GL_GENERATE_LIMITS_H_TRUE='#'
+  GL_GENERATE_LIMITS_H_FALSE=
+fi
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for nl_langinfo and CODESET" >&5
+$as_echo_n "checking for nl_langinfo and CODESET... " >&6; }
+if ${am_cv_langinfo_codeset+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <langinfo.h>
+int
+main ()
+{
+char* cs = nl_langinfo(CODESET); return !cs;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  am_cv_langinfo_codeset=yes
+else
+  am_cv_langinfo_codeset=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_langinfo_codeset" >&5
+$as_echo "$am_cv_langinfo_codeset" >&6; }
+  if test $am_cv_langinfo_codeset = yes; then
+
+$as_echo "#define HAVE_LANGINFO_CODESET 1" >>confdefs.h
+
+  fi
+
+
+
+
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working fcntl.h" >&5
+$as_echo_n "checking for working fcntl.h... " >&6; }
+if ${gl_cv_header_working_fcntl_h+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then :
+  gl_cv_header_working_fcntl_h=cross-compiling
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/types.h>
+           #include <sys/stat.h>
+           #if HAVE_UNISTD_H
+           # include <unistd.h>
+           #else /* on Windows with MSVC */
+           # include <io.h>
+           # include <stdlib.h>
+           # defined sleep(n) _sleep ((n) * 1000)
+           #endif
+           #include <fcntl.h>
+           #ifndef O_NOATIME
+            #define O_NOATIME 0
+           #endif
+           #ifndef O_NOFOLLOW
+            #define O_NOFOLLOW 0
+           #endif
+           static int const constants[] =
+            {
+              O_CREAT, O_EXCL, O_NOCTTY, O_TRUNC, O_APPEND,
+              O_NONBLOCK, O_SYNC, O_ACCMODE, O_RDONLY, O_RDWR, O_WRONLY
+            };
+
+int
+main ()
+{
+
+            int result = !constants;
+            #if HAVE_SYMLINK
+            {
+              static char const sym[] = "conftest.sym";
+              if (symlink ("/dev/null", sym) != 0)
+                result |= 2;
+              else
+                {
+                  int fd = open (sym, O_WRONLY | O_NOFOLLOW | O_CREAT, 0);
+                  if (fd >= 0)
+                    {
+                      close (fd);
+                      result |= 4;
+                    }
+                }
+              if (unlink (sym) != 0 || symlink (".", sym) != 0)
+                result |= 2;
+              else
+                {
+                  int fd = open (sym, O_RDONLY | O_NOFOLLOW);
+                  if (fd >= 0)
+                    {
+                      close (fd);
+                      result |= 4;
+                    }
+                }
+              unlink (sym);
+            }
+            #endif
+            {
+              static char const file[] = "confdefs.h";
+              int fd = open (file, O_RDONLY | O_NOATIME);
+              if (fd < 0)
+                result |= 8;
+              else
+                {
+                  struct stat st0;
+                  if (fstat (fd, &st0) != 0)
+                    result |= 16;
+                  else
+                    {
+                      char c;
+                      sleep (1);
+                      if (read (fd, &c, 1) != 1)
+                        result |= 24;
+                      else
+                        {
+                          if (close (fd) != 0)
+                            result |= 32;
+                          else
+                            {
+                              struct stat st1;
+                              if (stat (file, &st1) != 0)
+                                result |= 40;
+                              else
+                                if (st0.st_atime != st1.st_atime)
+                                  result |= 64;
+                            }
+                        }
+                    }
+                }
+            }
+            return result;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_header_working_fcntl_h=yes
+else
+  case $? in #(
+        4) gl_cv_header_working_fcntl_h='no (bad O_NOFOLLOW)';; #(
+        64) gl_cv_header_working_fcntl_h='no (bad O_NOATIME)';; #(
+        68) gl_cv_header_working_fcntl_h='no (bad O_NOATIME, O_NOFOLLOW)';; #(
+         *) gl_cv_header_working_fcntl_h='no';;
+        esac
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_working_fcntl_h" >&5
+$as_echo "$gl_cv_header_working_fcntl_h" >&6; }
+
+  case $gl_cv_header_working_fcntl_h in #(
+  *O_NOATIME* | no | cross-compiling) ac_val=0;; #(
+  *) ac_val=1;;
+  esac
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_WORKING_O_NOATIME $ac_val
+_ACEOF
+
+
+  case $gl_cv_header_working_fcntl_h in #(
+  *O_NOFOLLOW* | no | cross-compiling) ac_val=0;; #(
+  *) ac_val=1;;
+  esac
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_WORKING_O_NOFOLLOW $ac_val
+_ACEOF
+
+
+ac_fn_c_check_decl "$LINENO" "getc_unlocked" "ac_cv_have_decl_getc_unlocked" "$ac_includes_default"
+if test "x$ac_cv_have_decl_getc_unlocked" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GETC_UNLOCKED $ac_have_decl
+_ACEOF
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C Library >= 2.1 or uClibc" >&5
+$as_echo_n "checking whether we are using the GNU C Library >= 2.1 or uClibc... " >&6; }
+if ${ac_cv_gnu_library_2_1+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <features.h>
+#ifdef __GNU_LIBRARY__
+ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2)
+  Lucky GNU user
+ #endif
+#endif
+#ifdef __UCLIBC__
+ Lucky user
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "Lucky" >/dev/null 2>&1; then :
+  ac_cv_gnu_library_2_1=yes
+else
+  ac_cv_gnu_library_2_1=no
+fi
+rm -f conftest*
+
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_gnu_library_2_1" >&5
+$as_echo "$ac_cv_gnu_library_2_1" >&6; }
+
+    GLIBC21="$ac_cv_gnu_library_2_1"
+
+
+
+
+
+
+
+
+
+  GNULIB_EXPLICIT_BZERO=0;
+  GNULIB_FFSL=0;
+  GNULIB_FFSLL=0;
+  GNULIB_MEMCHR=0;
+  GNULIB_MEMMEM=0;
+  GNULIB_MEMPCPY=0;
+  GNULIB_MEMRCHR=0;
+  GNULIB_RAWMEMCHR=0;
+  GNULIB_STPCPY=0;
+  GNULIB_STPNCPY=0;
+  GNULIB_STRCHRNUL=0;
+  GNULIB_STRDUP=0;
+  GNULIB_STRNCAT=0;
+  GNULIB_STRNDUP=0;
+  GNULIB_STRNLEN=0;
+  GNULIB_STRPBRK=0;
+  GNULIB_STRSEP=0;
+  GNULIB_STRSTR=0;
+  GNULIB_STRCASESTR=0;
+  GNULIB_STRTOK_R=0;
+  GNULIB_MBSLEN=0;
+  GNULIB_MBSNLEN=0;
+  GNULIB_MBSCHR=0;
+  GNULIB_MBSRCHR=0;
+  GNULIB_MBSSTR=0;
+  GNULIB_MBSCASECMP=0;
+  GNULIB_MBSNCASECMP=0;
+  GNULIB_MBSPCASECMP=0;
+  GNULIB_MBSCASESTR=0;
+  GNULIB_MBSCSPN=0;
+  GNULIB_MBSPBRK=0;
+  GNULIB_MBSSPN=0;
+  GNULIB_MBSSEP=0;
+  GNULIB_MBSTOK_R=0;
+  GNULIB_STRERROR=0;
+  GNULIB_STRERROR_R=0;
+  GNULIB_STRSIGNAL=0;
+  GNULIB_STRVERSCMP=0;
+  HAVE_MBSLEN=0;
+    HAVE_EXPLICIT_BZERO=1;
+  HAVE_FFSL=1;
+  HAVE_FFSLL=1;
+  HAVE_MEMCHR=1;
+  HAVE_DECL_MEMMEM=1;
+  HAVE_MEMPCPY=1;
+  HAVE_DECL_MEMRCHR=1;
+  HAVE_RAWMEMCHR=1;
+  HAVE_STPCPY=1;
+  HAVE_STPNCPY=1;
+  HAVE_STRCHRNUL=1;
+  HAVE_DECL_STRDUP=1;
+  HAVE_DECL_STRNDUP=1;
+  HAVE_DECL_STRNLEN=1;
+  HAVE_STRPBRK=1;
+  HAVE_STRSEP=1;
+  HAVE_STRCASESTR=1;
+  HAVE_DECL_STRTOK_R=1;
+  HAVE_DECL_STRERROR_R=1;
+  HAVE_DECL_STRSIGNAL=1;
+  HAVE_STRVERSCMP=1;
+  REPLACE_MEMCHR=0;
+  REPLACE_MEMMEM=0;
+  REPLACE_STPNCPY=0;
+  REPLACE_STRCHRNUL=0;
+  REPLACE_STRDUP=0;
+  REPLACE_STRNCAT=0;
+  REPLACE_STRNDUP=0;
+  REPLACE_STRNLEN=0;
+  REPLACE_STRSTR=0;
+  REPLACE_STRCASESTR=0;
+  REPLACE_STRTOK_R=0;
+  REPLACE_STRERROR=0;
+  REPLACE_STRERROR_R=0;
+  REPLACE_STRSIGNAL=0;
+  UNDEFINE_STRTOK_R=0;
+
+
+
+
+
+
+  # Check for mmap(). Don't use AC_FUNC_MMAP, because it checks too much: it
+  # fails on HP-UX 11, because MAP_FIXED mappings do not work. But this is
+  # irrelevant for anonymous mappings.
+  ac_fn_c_check_func "$LINENO" "mmap" "ac_cv_func_mmap"
+if test "x$ac_cv_func_mmap" = xyes; then :
+  gl_have_mmap=yes
+else
+  gl_have_mmap=no
+fi
+
+
+  # Try to allow MAP_ANONYMOUS.
+  gl_have_mmap_anonymous=no
+  if test $gl_have_mmap = yes; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MAP_ANONYMOUS" >&5
+$as_echo_n "checking for MAP_ANONYMOUS... " >&6; }
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <sys/mman.h>
+#ifdef MAP_ANONYMOUS
+    I cannot identify this map
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "I cannot identify this map" >/dev/null 2>&1; then :
+  gl_have_mmap_anonymous=yes
+fi
+rm -f conftest*
+
+    if test $gl_have_mmap_anonymous != yes; then
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <sys/mman.h>
+#ifdef MAP_ANON
+    I cannot identify this map
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "I cannot identify this map" >/dev/null 2>&1; then :
+
+$as_echo "#define MAP_ANONYMOUS MAP_ANON" >>confdefs.h
+
+         gl_have_mmap_anonymous=yes
+fi
+rm -f conftest*
+
+    fi
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_have_mmap_anonymous" >&5
+$as_echo "$gl_have_mmap_anonymous" >&6; }
+    if test $gl_have_mmap_anonymous = yes; then
+
+$as_echo "#define HAVE_MAP_ANONYMOUS 1" >>confdefs.h
+
+    fi
+  fi
+
+
+
+
+
+
+  if test $HAVE_MEMCHR = 1; then
+    # Detect platform-specific bugs in some versions of glibc:
+    # memchr should not dereference anything with length 0
+    #   https://bugzilla.redhat.com/show_bug.cgi?id=499689
+    # memchr should not dereference overestimated length after a match
+    #   https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=521737
+    #   https://sourceware.org/bugzilla/show_bug.cgi?id=10162
+    # Assume that memchr works on platforms that lack mprotect.
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether memchr works" >&5
+$as_echo_n "checking whether memchr works... " >&6; }
+if ${gl_cv_func_memchr_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then :
+  case "$host_os" in
+                    # Guess yes on native Windows.
+            mingw*) gl_cv_func_memchr_works="guessing yes" ;;
+                    # Be pessimistic for now.
+            *)      gl_cv_func_memchr_works="guessing no" ;;
+          esac
+
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <string.h>
+#if HAVE_SYS_MMAN_H
+# include <fcntl.h>
+# include <unistd.h>
+# include <sys/types.h>
+# include <sys/mman.h>
+# ifndef MAP_FILE
+#  define MAP_FILE 0
+# endif
+#endif
+
+int
+main ()
+{
+
+  int result = 0;
+  char *fence = NULL;
+#if HAVE_SYS_MMAN_H && HAVE_MPROTECT
+# if HAVE_MAP_ANONYMOUS
+  const int flags = MAP_ANONYMOUS | MAP_PRIVATE;
+  const int fd = -1;
+# else /* !HAVE_MAP_ANONYMOUS */
+  const int flags = MAP_FILE | MAP_PRIVATE;
+  int fd = open ("/dev/zero", O_RDONLY, 0666);
+  if (fd >= 0)
+# endif
+    {
+      int pagesize = getpagesize ();
+      char *two_pages =
+        (char *) mmap (NULL, 2 * pagesize, PROT_READ | PROT_WRITE,
+                       flags, fd, 0);
+      if (two_pages != (char *)(-1)
+          && mprotect (two_pages + pagesize, pagesize, PROT_NONE) == 0)
+        fence = two_pages + pagesize;
+    }
+#endif
+  if (fence)
+    {
+      if (memchr (fence, 0, 0))
+        result |= 1;
+      strcpy (fence - 9, "12345678");
+      if (memchr (fence - 9, 0, 79) != fence - 1)
+        result |= 2;
+      if (memchr (fence - 1, 0, 3) != fence - 1)
+        result |= 4;
+    }
+  return result;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_memchr_works=yes
+else
+  gl_cv_func_memchr_works=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_memchr_works" >&5
+$as_echo "$gl_cv_func_memchr_works" >&6; }
+    case "$gl_cv_func_memchr_works" in
+      *yes) ;;
+      *) REPLACE_MEMCHR=1 ;;
+    esac
+  fi
+
+ac_fn_c_check_decl "$LINENO" "snprintf" "ac_cv_have_decl_snprintf" "$ac_includes_default"
+if test "x$ac_cv_have_decl_snprintf" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_SNPRINTF $ac_have_decl
+_ACEOF
+
+
+    REPLACE_NULL=0;
+  HAVE_MAX_ALIGN_T=1;
+  HAVE_WCHAR_T=1;
+
+
+
+
+
+
+
+
+
+
+
+  if test $ac_cv_type_long_long_int = yes; then
+    HAVE_LONG_LONG_INT=1
+  else
+    HAVE_LONG_LONG_INT=0
+  fi
+
+
+  if test $ac_cv_type_unsigned_long_long_int = yes; then
+    HAVE_UNSIGNED_LONG_LONG_INT=1
+  else
+    HAVE_UNSIGNED_LONG_LONG_INT=0
+  fi
+
+
+
+  if test $ac_cv_header_wchar_h = yes; then
+    HAVE_WCHAR_H=1
+  else
+    HAVE_WCHAR_H=0
+  fi
+
+
+      if test $ac_cv_header_inttypes_h = yes; then
+    HAVE_INTTYPES_H=1
+  else
+    HAVE_INTTYPES_H=0
+  fi
+
+
+      if test $ac_cv_header_sys_types_h = yes; then
+    HAVE_SYS_TYPES_H=1
+  else
+    HAVE_SYS_TYPES_H=0
+  fi
+
+
+
+
+
+
+
+
+
+
+
+     if test $gl_cv_have_include_next = yes; then
+       gl_cv_next_stdint_h='<'stdint.h'>'
+     else
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <stdint.h>" >&5
+$as_echo_n "checking absolute name of <stdint.h>... " >&6; }
+if ${gl_cv_next_stdint_h+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+             if test $ac_cv_header_stdint_h = yes; then
+
+
+
+
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdint.h>
+_ACEOF
+                case "$host_os" in
+    aix*) gl_absname_cpp="$ac_cpp -C" ;;
+    *)    gl_absname_cpp="$ac_cpp" ;;
+  esac
+
+  case "$host_os" in
+    mingw*)
+                                          gl_dirsep_regex='[/\\]'
+      ;;
+    *)
+      gl_dirsep_regex='\/'
+      ;;
+  esac
+      gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g'
+  gl_header_literal_regex=`echo 'stdint.h' \
+                           | sed -e "$gl_make_literal_regex_sed"`
+  gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{
+      s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/
+      s|^/[^/]|//&|
+      p
+      q
+    }'
+
+        gl_cv_absolute_stdint_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+  sed -n "$gl_absolute_header_sed"`
+
+           gl_header=$gl_cv_absolute_stdint_h
+           gl_cv_next_stdint_h='"'$gl_header'"'
+          else
+               gl_cv_next_stdint_h='<'stdint.h'>'
+             fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_stdint_h" >&5
+$as_echo "$gl_cv_next_stdint_h" >&6; }
+     fi
+     NEXT_STDINT_H=$gl_cv_next_stdint_h
+
+     if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+       gl_next_as_first_directive='<'stdint.h'>'
+     else
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+       gl_next_as_first_directive=$gl_cv_next_stdint_h
+     fi
+     NEXT_AS_FIRST_DIRECTIVE_STDINT_H=$gl_next_as_first_directive
+
+
+
+
+  if test $ac_cv_header_stdint_h = yes; then
+    HAVE_STDINT_H=1
+  else
+    HAVE_STDINT_H=0
+  fi
+
+
+    if test $ac_cv_header_stdint_h = yes; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stdint.h conforms to C99" >&5
+$as_echo_n "checking whether stdint.h conforms to C99... " >&6; }
+if ${gl_cv_header_working_stdint_h+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  gl_cv_header_working_stdint_h=no
+       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+#define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */
+#define __STDC_CONSTANT_MACROS 1
+#define __STDC_LIMIT_MACROS 1
+#include <stdint.h>
+/* Dragonfly defines WCHAR_MIN, WCHAR_MAX only in <wchar.h>.  */
+#if !(defined WCHAR_MIN && defined WCHAR_MAX)
+#error "WCHAR_MIN, WCHAR_MAX not defined in <stdint.h>"
+#endif
+
+
+  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+     included before <wchar.h>.  */
+  #include <stddef.h>
+  #include <signal.h>
+  #if HAVE_WCHAR_H
+  # include <stdio.h>
+  # include <time.h>
+  # include <wchar.h>
+  #endif
+
+
+#ifdef INT8_MAX
+int8_t a1 = INT8_MAX;
+int8_t a1min = INT8_MIN;
+#endif
+#ifdef INT16_MAX
+int16_t a2 = INT16_MAX;
+int16_t a2min = INT16_MIN;
+#endif
+#ifdef INT32_MAX
+int32_t a3 = INT32_MAX;
+int32_t a3min = INT32_MIN;
+#endif
+#ifdef INT64_MAX
+int64_t a4 = INT64_MAX;
+int64_t a4min = INT64_MIN;
+#endif
+#ifdef UINT8_MAX
+uint8_t b1 = UINT8_MAX;
+#else
+typedef int b1[(unsigned char) -1 != 255 ? 1 : -1];
+#endif
+#ifdef UINT16_MAX
+uint16_t b2 = UINT16_MAX;
+#endif
+#ifdef UINT32_MAX
+uint32_t b3 = UINT32_MAX;
+#endif
+#ifdef UINT64_MAX
+uint64_t b4 = UINT64_MAX;
+#endif
+int_least8_t c1 = INT8_C (0x7f);
+int_least8_t c1max = INT_LEAST8_MAX;
+int_least8_t c1min = INT_LEAST8_MIN;
+int_least16_t c2 = INT16_C (0x7fff);
+int_least16_t c2max = INT_LEAST16_MAX;
+int_least16_t c2min = INT_LEAST16_MIN;
+int_least32_t c3 = INT32_C (0x7fffffff);
+int_least32_t c3max = INT_LEAST32_MAX;
+int_least32_t c3min = INT_LEAST32_MIN;
+int_least64_t c4 = INT64_C (0x7fffffffffffffff);
+int_least64_t c4max = INT_LEAST64_MAX;
+int_least64_t c4min = INT_LEAST64_MIN;
+uint_least8_t d1 = UINT8_C (0xff);
+uint_least8_t d1max = UINT_LEAST8_MAX;
+uint_least16_t d2 = UINT16_C (0xffff);
+uint_least16_t d2max = UINT_LEAST16_MAX;
+uint_least32_t d3 = UINT32_C (0xffffffff);
+uint_least32_t d3max = UINT_LEAST32_MAX;
+uint_least64_t d4 = UINT64_C (0xffffffffffffffff);
+uint_least64_t d4max = UINT_LEAST64_MAX;
+int_fast8_t e1 = INT_FAST8_MAX;
+int_fast8_t e1min = INT_FAST8_MIN;
+int_fast16_t e2 = INT_FAST16_MAX;
+int_fast16_t e2min = INT_FAST16_MIN;
+int_fast32_t e3 = INT_FAST32_MAX;
+int_fast32_t e3min = INT_FAST32_MIN;
+int_fast64_t e4 = INT_FAST64_MAX;
+int_fast64_t e4min = INT_FAST64_MIN;
+uint_fast8_t f1 = UINT_FAST8_MAX;
+uint_fast16_t f2 = UINT_FAST16_MAX;
+uint_fast32_t f3 = UINT_FAST32_MAX;
+uint_fast64_t f4 = UINT_FAST64_MAX;
+#ifdef INTPTR_MAX
+intptr_t g = INTPTR_MAX;
+intptr_t gmin = INTPTR_MIN;
+#endif
+#ifdef UINTPTR_MAX
+uintptr_t h = UINTPTR_MAX;
+#endif
+intmax_t i = INTMAX_MAX;
+uintmax_t j = UINTMAX_MAX;
+
+/* Check that SIZE_MAX has the correct type, if possible.  */
+#if 201112 <= __STDC_VERSION__
+int k = _Generic (SIZE_MAX, size_t: 0);
+#elif (2 <= __GNUC__ || defined __IBM__TYPEOF__ \
+       || (0x5110 <= __SUNPRO_C && !__STDC__))
+extern size_t k;
+extern __typeof__ (SIZE_MAX) k;
+#endif
+
+#include <limits.h> /* for CHAR_BIT */
+#define TYPE_MINIMUM(t) \
+  ((t) ((t) 0 < (t) -1 ? (t) 0 : ~ TYPE_MAXIMUM (t)))
+#define TYPE_MAXIMUM(t) \
+  ((t) ((t) 0 < (t) -1 \
+        ? (t) -1 \
+        : ((((t) 1 << (sizeof (t) * CHAR_BIT - 2)) - 1) * 2 + 1)))
+struct s {
+  int check_PTRDIFF:
+      PTRDIFF_MIN == TYPE_MINIMUM (ptrdiff_t)
+      && PTRDIFF_MAX == TYPE_MAXIMUM (ptrdiff_t)
+      ? 1 : -1;
+  /* Detect bug in FreeBSD 6.0 / ia64.  */
+  int check_SIG_ATOMIC:
+      SIG_ATOMIC_MIN == TYPE_MINIMUM (sig_atomic_t)
+      && SIG_ATOMIC_MAX == TYPE_MAXIMUM (sig_atomic_t)
+      ? 1 : -1;
+  int check_SIZE: SIZE_MAX == TYPE_MAXIMUM (size_t) ? 1 : -1;
+  int check_WCHAR:
+      WCHAR_MIN == TYPE_MINIMUM (wchar_t)
+      && WCHAR_MAX == TYPE_MAXIMUM (wchar_t)
+      ? 1 : -1;
+  /* Detect bug in mingw.  */
+  int check_WINT:
+      WINT_MIN == TYPE_MINIMUM (wint_t)
+      && WINT_MAX == TYPE_MAXIMUM (wint_t)
+      ? 1 : -1;
+
+  /* Detect bugs in glibc 2.4 and Solaris 10 stdint.h, among others.  */
+  int check_UINT8_C:
+        (-1 < UINT8_C (0)) == (-1 < (uint_least8_t) 0) ? 1 : -1;
+  int check_UINT16_C:
+        (-1 < UINT16_C (0)) == (-1 < (uint_least16_t) 0) ? 1 : -1;
+
+  /* Detect bugs in OpenBSD 3.9 stdint.h.  */
+#ifdef UINT8_MAX
+  int check_uint8: (uint8_t) -1 == UINT8_MAX ? 1 : -1;
+#endif
+#ifdef UINT16_MAX
+  int check_uint16: (uint16_t) -1 == UINT16_MAX ? 1 : -1;
+#endif
+#ifdef UINT32_MAX
+  int check_uint32: (uint32_t) -1 == UINT32_MAX ? 1 : -1;
+#endif
+#ifdef UINT64_MAX
+  int check_uint64: (uint64_t) -1 == UINT64_MAX ? 1 : -1;
+#endif
+  int check_uint_least8: (uint_least8_t) -1 == UINT_LEAST8_MAX ? 1 : -1;
+  int check_uint_least16: (uint_least16_t) -1 == UINT_LEAST16_MAX ? 1 : -1;
+  int check_uint_least32: (uint_least32_t) -1 == UINT_LEAST32_MAX ? 1 : -1;
+  int check_uint_least64: (uint_least64_t) -1 == UINT_LEAST64_MAX ? 1 : -1;
+  int check_uint_fast8: (uint_fast8_t) -1 == UINT_FAST8_MAX ? 1 : -1;
+  int check_uint_fast16: (uint_fast16_t) -1 == UINT_FAST16_MAX ? 1 : -1;
+  int check_uint_fast32: (uint_fast32_t) -1 == UINT_FAST32_MAX ? 1 : -1;
+  int check_uint_fast64: (uint_fast64_t) -1 == UINT_FAST64_MAX ? 1 : -1;
+  int check_uintptr: (uintptr_t) -1 == UINTPTR_MAX ? 1 : -1;
+  int check_uintmax: (uintmax_t) -1 == UINTMAX_MAX ? 1 : -1;
+  int check_size: (size_t) -1 == SIZE_MAX ? 1 : -1;
+};
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+                                                    if test "$cross_compiling" = yes; then :
+  case "$host_os" in
+                         # Guess yes on native Windows.
+                 mingw*) gl_cv_header_working_stdint_h="guessing yes" ;;
+                         # In general, assume it works.
+                 *)      gl_cv_header_working_stdint_h="guessing yes" ;;
+               esac
+
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+#define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */
+#define __STDC_CONSTANT_MACROS 1
+#define __STDC_LIMIT_MACROS 1
+#include <stdint.h>
+
+
+  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+     included before <wchar.h>.  */
+  #include <stddef.h>
+  #include <signal.h>
+  #if HAVE_WCHAR_H
+  # include <stdio.h>
+  # include <time.h>
+  # include <wchar.h>
+  #endif
+
+
+#include <stdio.h>
+#include <string.h>
+#define MVAL(macro) MVAL1(macro)
+#define MVAL1(expression) #expression
+static const char *macro_values[] =
+  {
+#ifdef INT8_MAX
+    MVAL (INT8_MAX),
+#endif
+#ifdef INT16_MAX
+    MVAL (INT16_MAX),
+#endif
+#ifdef INT32_MAX
+    MVAL (INT32_MAX),
+#endif
+#ifdef INT64_MAX
+    MVAL (INT64_MAX),
+#endif
+#ifdef UINT8_MAX
+    MVAL (UINT8_MAX),
+#endif
+#ifdef UINT16_MAX
+    MVAL (UINT16_MAX),
+#endif
+#ifdef UINT32_MAX
+    MVAL (UINT32_MAX),
+#endif
+#ifdef UINT64_MAX
+    MVAL (UINT64_MAX),
+#endif
+    NULL
+  };
+
+int
+main ()
+{
+
+  const char **mv;
+  for (mv = macro_values; *mv != NULL; mv++)
+    {
+      const char *value = *mv;
+      /* Test whether it looks like a cast expression.  */
+      if (strncmp (value, "((unsigned int)"/*)*/, 15) == 0
+          || strncmp (value, "((unsigned short)"/*)*/, 17) == 0
+          || strncmp (value, "((unsigned char)"/*)*/, 16) == 0
+          || strncmp (value, "((int)"/*)*/, 6) == 0
+          || strncmp (value, "((signed short)"/*)*/, 15) == 0
+          || strncmp (value, "((signed char)"/*)*/, 14) == 0)
+        return mv - macro_values + 1;
+    }
+  return 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_header_working_stdint_h=yes
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_working_stdint_h" >&5
+$as_echo "$gl_cv_header_working_stdint_h" >&6; }
+  fi
+
+  HAVE_C99_STDINT_H=0
+  HAVE_SYS_BITYPES_H=0
+  HAVE_SYS_INTTYPES_H=0
+  STDINT_H=stdint.h
+  case "$gl_cv_header_working_stdint_h" in
+    *yes)
+      HAVE_C99_STDINT_H=1
+                  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stdint.h predates C++11" >&5
+$as_echo_n "checking whether stdint.h predates C++11... " >&6; }
+if ${gl_cv_header_stdint_predates_cxx11_h+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  gl_cv_header_stdint_predates_cxx11_h=yes
+         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+#define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */
+#include <stdint.h>
+
+
+  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+     included before <wchar.h>.  */
+  #include <stddef.h>
+  #include <signal.h>
+  #if HAVE_WCHAR_H
+  # include <stdio.h>
+  # include <time.h>
+  # include <wchar.h>
+  #endif
+
+
+intmax_t im = INTMAX_MAX;
+int32_t i32 = INT32_C (0x7fffffff);
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gl_cv_header_stdint_predates_cxx11_h=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_stdint_predates_cxx11_h" >&5
+$as_echo "$gl_cv_header_stdint_predates_cxx11_h" >&6; }
+
+      if test "$gl_cv_header_stdint_predates_cxx11_h" = yes; then
+
+$as_echo "#define __STDC_CONSTANT_MACROS 1" >>confdefs.h
+
+
+$as_echo "#define __STDC_LIMIT_MACROS 1" >>confdefs.h
+
+      fi
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stdint.h has UINTMAX_WIDTH etc." >&5
+$as_echo_n "checking whether stdint.h has UINTMAX_WIDTH etc.... " >&6; }
+if ${gl_cv_header_stdint_width+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  gl_cv_header_stdint_width=no
+         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+              /* Work if build is not clean.  */
+              #define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1
+              #ifndef __STDC_WANT_IEC_60559_BFP_EXT__
+               #define __STDC_WANT_IEC_60559_BFP_EXT__ 1
+              #endif
+              #include <stdint.h>
+
+  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+     included before <wchar.h>.  */
+  #include <stddef.h>
+  #include <signal.h>
+  #if HAVE_WCHAR_H
+  # include <stdio.h>
+  # include <time.h>
+  # include <wchar.h>
+  #endif
+
+              int iw = UINTMAX_WIDTH;
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gl_cv_header_stdint_width=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_stdint_width" >&5
+$as_echo "$gl_cv_header_stdint_width" >&6; }
+      if test "$gl_cv_header_stdint_width" = yes; then
+        STDINT_H=
+      fi
+      ;;
+    *)
+                  for ac_header in sys/inttypes.h sys/bitypes.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+      if test $ac_cv_header_sys_inttypes_h = yes; then
+        HAVE_SYS_INTTYPES_H=1
+      fi
+      if test $ac_cv_header_sys_bitypes_h = yes; then
+        HAVE_SYS_BITYPES_H=1
+      fi
+
+
+  if test $APPLE_UNIVERSAL_BUILD = 0; then
+
+
+  for gltype in ptrdiff_t size_t ; do
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bit size of $gltype" >&5
+$as_echo_n "checking for bit size of $gltype... " >&6; }
+if eval \${gl_cv_bitsizeof_${gltype}+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if ac_fn_c_compute_int "$LINENO" "sizeof ($gltype) * CHAR_BIT" "result"        "
+  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+     included before <wchar.h>.  */
+  #include <stddef.h>
+  #include <signal.h>
+  #if HAVE_WCHAR_H
+  # include <stdio.h>
+  # include <time.h>
+  # include <wchar.h>
+  #endif
+
+#include <limits.h>"; then :
+
+else
+  result=unknown
+fi
+
+       eval gl_cv_bitsizeof_${gltype}=\$result
+
+fi
+eval ac_res=\$gl_cv_bitsizeof_${gltype}
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+    eval result=\$gl_cv_bitsizeof_${gltype}
+    if test $result = unknown; then
+                                                result=0
+    fi
+    GLTYPE=`echo "$gltype" | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
+    cat >>confdefs.h <<_ACEOF
+#define BITSIZEOF_${GLTYPE} $result
+_ACEOF
+
+    eval BITSIZEOF_${GLTYPE}=\$result
+  done
+
+
+  fi
+
+
+  for gltype in sig_atomic_t wchar_t wint_t ; do
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bit size of $gltype" >&5
+$as_echo_n "checking for bit size of $gltype... " >&6; }
+if eval \${gl_cv_bitsizeof_${gltype}+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if ac_fn_c_compute_int "$LINENO" "sizeof ($gltype) * CHAR_BIT" "result"        "
+  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+     included before <wchar.h>.  */
+  #include <stddef.h>
+  #include <signal.h>
+  #if HAVE_WCHAR_H
+  # include <stdio.h>
+  # include <time.h>
+  # include <wchar.h>
+  #endif
+
+#include <limits.h>"; then :
+
+else
+  result=unknown
+fi
+
+       eval gl_cv_bitsizeof_${gltype}=\$result
+
+fi
+eval ac_res=\$gl_cv_bitsizeof_${gltype}
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+    eval result=\$gl_cv_bitsizeof_${gltype}
+    if test $result = unknown; then
+                                                result=0
+    fi
+    GLTYPE=`echo "$gltype" | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
+    cat >>confdefs.h <<_ACEOF
+#define BITSIZEOF_${GLTYPE} $result
+_ACEOF
+
+    eval BITSIZEOF_${GLTYPE}=\$result
+  done
+
+
+
+
+  for gltype in sig_atomic_t wchar_t wint_t ; do
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $gltype is signed" >&5
+$as_echo_n "checking whether $gltype is signed... " >&6; }
+if eval \${gl_cv_type_${gltype}_signed+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+     included before <wchar.h>.  */
+  #include <stddef.h>
+  #include <signal.h>
+  #if HAVE_WCHAR_H
+  # include <stdio.h>
+  # include <time.h>
+  # include <wchar.h>
+  #endif
+
+            int verify[2 * (($gltype) -1 < ($gltype) 0) - 1];
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  result=yes
+else
+  result=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+       eval gl_cv_type_${gltype}_signed=\$result
+
+fi
+eval ac_res=\$gl_cv_type_${gltype}_signed
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+    eval result=\$gl_cv_type_${gltype}_signed
+    GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
+    if test "$result" = yes; then
+      cat >>confdefs.h <<_ACEOF
+#define HAVE_SIGNED_${GLTYPE} 1
+_ACEOF
+
+      eval HAVE_SIGNED_${GLTYPE}=1
+    else
+      eval HAVE_SIGNED_${GLTYPE}=0
+    fi
+  done
+
+
+  gl_cv_type_ptrdiff_t_signed=yes
+  gl_cv_type_size_t_signed=no
+  if test $APPLE_UNIVERSAL_BUILD = 0; then
+
+
+  for gltype in ptrdiff_t size_t ; do
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $gltype integer literal suffix" >&5
+$as_echo_n "checking for $gltype integer literal suffix... " >&6; }
+if eval \${gl_cv_type_${gltype}_suffix+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  eval gl_cv_type_${gltype}_suffix=no
+       eval result=\$gl_cv_type_${gltype}_signed
+       if test "$result" = yes; then
+         glsufu=
+       else
+         glsufu=u
+       fi
+       for glsuf in "$glsufu" ${glsufu}l ${glsufu}ll ${glsufu}i64; do
+         case $glsuf in
+           '')  gltype1='int';;
+           l)   gltype1='long int';;
+           ll)  gltype1='long long int';;
+           i64) gltype1='__int64';;
+           u)   gltype1='unsigned int';;
+           ul)  gltype1='unsigned long int';;
+           ull) gltype1='unsigned long long int';;
+           ui64)gltype1='unsigned __int64';;
+         esac
+         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+     included before <wchar.h>.  */
+  #include <stddef.h>
+  #include <signal.h>
+  #if HAVE_WCHAR_H
+  # include <stdio.h>
+  # include <time.h>
+  # include <wchar.h>
+  #endif
+
+              extern $gltype foo;
+              extern $gltype1 foo;
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval gl_cv_type_${gltype}_suffix=\$glsuf
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+         eval result=\$gl_cv_type_${gltype}_suffix
+         test "$result" != no && break
+       done
+fi
+eval ac_res=\$gl_cv_type_${gltype}_suffix
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+    GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
+    eval result=\$gl_cv_type_${gltype}_suffix
+    test "$result" = no && result=
+    eval ${GLTYPE}_SUFFIX=\$result
+    cat >>confdefs.h <<_ACEOF
+#define ${GLTYPE}_SUFFIX $result
+_ACEOF
+
+  done
+
+
+  fi
+
+
+  for gltype in sig_atomic_t wchar_t wint_t ; do
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $gltype integer literal suffix" >&5
+$as_echo_n "checking for $gltype integer literal suffix... " >&6; }
+if eval \${gl_cv_type_${gltype}_suffix+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  eval gl_cv_type_${gltype}_suffix=no
+       eval result=\$gl_cv_type_${gltype}_signed
+       if test "$result" = yes; then
+         glsufu=
+       else
+         glsufu=u
+       fi
+       for glsuf in "$glsufu" ${glsufu}l ${glsufu}ll ${glsufu}i64; do
+         case $glsuf in
+           '')  gltype1='int';;
+           l)   gltype1='long int';;
+           ll)  gltype1='long long int';;
+           i64) gltype1='__int64';;
+           u)   gltype1='unsigned int';;
+           ul)  gltype1='unsigned long int';;
+           ull) gltype1='unsigned long long int';;
+           ui64)gltype1='unsigned __int64';;
+         esac
+         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+     included before <wchar.h>.  */
+  #include <stddef.h>
+  #include <signal.h>
+  #if HAVE_WCHAR_H
+  # include <stdio.h>
+  # include <time.h>
+  # include <wchar.h>
+  #endif
+
+              extern $gltype foo;
+              extern $gltype1 foo;
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval gl_cv_type_${gltype}_suffix=\$glsuf
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+         eval result=\$gl_cv_type_${gltype}_suffix
+         test "$result" != no && break
+       done
+fi
+eval ac_res=\$gl_cv_type_${gltype}_suffix
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+    GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
+    eval result=\$gl_cv_type_${gltype}_suffix
+    test "$result" = no && result=
+    eval ${GLTYPE}_SUFFIX=\$result
+    cat >>confdefs.h <<_ACEOF
+#define ${GLTYPE}_SUFFIX $result
+_ACEOF
+
+  done
+
+
+
+          if test $GNULIB_OVERRIDES_WINT_T = 1; then
+    BITSIZEOF_WINT_T=32
+  fi
+
+      ;;
+  esac
+
+
+
+  LIMITS_H='limits.h'
+   if test -n "$LIMITS_H"; then
+  GL_GENERATE_LIMITS_H_TRUE=
+  GL_GENERATE_LIMITS_H_FALSE='#'
+else
+  GL_GENERATE_LIMITS_H_TRUE='#'
+  GL_GENERATE_LIMITS_H_FALSE=
+fi
+
+
+
+
+
+
+
+   if test -n "$STDINT_H"; then
+  GL_GENERATE_STDINT_H_TRUE=
+  GL_GENERATE_STDINT_H_FALSE='#'
+else
+  GL_GENERATE_STDINT_H_TRUE='#'
+  GL_GENERATE_STDINT_H_FALSE=
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C/C++ restrict keyword" >&5
+$as_echo_n "checking for C/C++ restrict keyword... " >&6; }
+if ${ac_cv_c_restrict+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_c_restrict=no
+   # The order here caters to the fact that C++ does not require restrict.
+   for ac_kw in __restrict __restrict__ _Restrict restrict; do
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+typedef int *int_ptr;
+           int foo (int_ptr $ac_kw ip) { return ip[0]; }
+           int bar (int [$ac_kw]); /* Catch GCC bug 14050.  */
+           int bar (int ip[$ac_kw]) { return ip[0]; }
+
+int
+main ()
+{
+int s[1];
+           int *$ac_kw t = s;
+           t[0] = 0;
+           return foo (t) + bar (t);
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_c_restrict=$ac_kw
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+     test "$ac_cv_c_restrict" != no && break
+   done
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_restrict" >&5
+$as_echo "$ac_cv_c_restrict" >&6; }
+
+ case $ac_cv_c_restrict in
+   restrict) ;;
+   no) $as_echo "#define restrict /**/" >>confdefs.h
+ ;;
+   *)  cat >>confdefs.h <<_ACEOF
+#define restrict $ac_cv_c_restrict
+_ACEOF
+ ;;
+ esac
+
+
+
+
+
+
+
+
+
+
+
+
+     if test $gl_cv_have_include_next = yes; then
+       gl_cv_next_string_h='<'string.h'>'
+     else
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <string.h>" >&5
+$as_echo_n "checking absolute name of <string.h>... " >&6; }
+if ${gl_cv_next_string_h+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <string.h>
+_ACEOF
+                case "$host_os" in
+    aix*) gl_absname_cpp="$ac_cpp -C" ;;
+    *)    gl_absname_cpp="$ac_cpp" ;;
+  esac
+
+  case "$host_os" in
+    mingw*)
+                                          gl_dirsep_regex='[/\\]'
+      ;;
+    *)
+      gl_dirsep_regex='\/'
+      ;;
+  esac
+      gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g'
+  gl_header_literal_regex=`echo 'string.h' \
+                           | sed -e "$gl_make_literal_regex_sed"`
+  gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{
+      s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/
+      s|^/[^/]|//&|
+      p
+      q
+    }'
+
+        gl_cv_absolute_string_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+  sed -n "$gl_absolute_header_sed"`
+
+           gl_header=$gl_cv_absolute_string_h
+           gl_cv_next_string_h='"'$gl_header'"'
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_string_h" >&5
+$as_echo "$gl_cv_next_string_h" >&6; }
+     fi
+     NEXT_STRING_H=$gl_cv_next_string_h
+
+     if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+       gl_next_as_first_directive='<'string.h'>'
+     else
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+       gl_next_as_first_directive=$gl_cv_next_string_h
+     fi
+     NEXT_AS_FIRST_DIRECTIVE_STRING_H=$gl_next_as_first_directive
+
+
+
+
+
+
+
+
+
+
+
+ac_fn_c_check_type "$LINENO" "pid_t" "ac_cv_type_pid_t" "$ac_includes_default"
+if test "x$ac_cv_type_pid_t" = xyes; then :
+
+else
+
+cat >>confdefs.h <<_ACEOF
+#define pid_t int
+_ACEOF
+
+fi
+
+ac_fn_c_check_type "$LINENO" "mode_t" "ac_cv_type_mode_t" "$ac_includes_default"
+if test "x$ac_cv_type_mode_t" = xyes; then :
+
+else
+
+cat >>confdefs.h <<_ACEOF
+#define mode_t int
+_ACEOF
+
+fi
+
+
+
+    WINDOWS_64_BIT_OFF_T=0
+
+
+
+
+
+$as_echo "#define _USE_STD_STAT 1" >>confdefs.h
+
+
+
+
+
+
+
+
+
+
+
+     if test $gl_cv_have_include_next = yes; then
+       gl_cv_next_sys_types_h='<'sys/types.h'>'
+     else
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <sys/types.h>" >&5
+$as_echo_n "checking absolute name of <sys/types.h>... " >&6; }
+if ${gl_cv_next_sys_types_h+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/types.h>
+_ACEOF
+                case "$host_os" in
+    aix*) gl_absname_cpp="$ac_cpp -C" ;;
+    *)    gl_absname_cpp="$ac_cpp" ;;
+  esac
+
+  case "$host_os" in
+    mingw*)
+                                          gl_dirsep_regex='[/\\]'
+      ;;
+    *)
+      gl_dirsep_regex='\/'
+      ;;
+  esac
+      gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g'
+  gl_header_literal_regex=`echo 'sys/types.h' \
+                           | sed -e "$gl_make_literal_regex_sed"`
+  gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{
+      s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/
+      s|^/[^/]|//&|
+      p
+      q
+    }'
+
+        gl_cv_absolute_sys_types_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+  sed -n "$gl_absolute_header_sed"`
+
+           gl_header=$gl_cv_absolute_sys_types_h
+           gl_cv_next_sys_types_h='"'$gl_header'"'
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_sys_types_h" >&5
+$as_echo "$gl_cv_next_sys_types_h" >&6; }
+     fi
+     NEXT_SYS_TYPES_H=$gl_cv_next_sys_types_h
+
+     if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+       gl_next_as_first_directive='<'sys/types.h'>'
+     else
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+       gl_next_as_first_directive=$gl_cv_next_sys_types_h
+     fi
+     NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H=$gl_next_as_first_directive
+
+
+
+
+
+
+
+
+
+
+
+
+    WINDOWS_STAT_INODES=0
+
+
+
+
+
+
+
+
+
+gl_libunistring_sed_extract_major='/^[0-9]/{s/^\([0-9]*\).*/\1/p;q;}
+i\
+0
+q
+'
+gl_libunistring_sed_extract_minor='/^[0-9][0-9]*[.][0-9]/{s/^[0-9]*[.]\([0-9]*\).*/\1/p;q;}
+i\
+0
+q
+'
+gl_libunistring_sed_extract_subminor='/^[0-9][0-9]*[.][0-9][0-9]*[.][0-9]/{s/^[0-9]*[.][0-9]*[.]\([0-9]*\).*/\1/p;q;}
+i\
+0
+q
+'
+
+
+  if test "$HAVE_LIBUNISTRING" = yes; then
+    LIBUNISTRING_VERSION_MAJOR=`echo "$LIBUNISTRING_VERSION" | sed -n -e "$gl_libunistring_sed_extract_major"`
+    LIBUNISTRING_VERSION_MINOR=`echo "$LIBUNISTRING_VERSION" | sed -n -e "$gl_libunistring_sed_extract_minor"`
+    LIBUNISTRING_VERSION_SUBMINOR=`echo "$LIBUNISTRING_VERSION" | sed -n -e "$gl_libunistring_sed_extract_subminor"`
+  fi
+
+ac_fn_c_check_decl "$LINENO" "vsnprintf" "ac_cv_have_decl_vsnprintf" "$ac_includes_default"
+if test "x$ac_cv_have_decl_vsnprintf" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_VSNPRINTF $ac_have_decl
+_ACEOF
+
+
+  GNULIB_BTOWC=0;
+  GNULIB_WCTOB=0;
+  GNULIB_MBSINIT=0;
+  GNULIB_MBRTOWC=0;
+  GNULIB_MBRLEN=0;
+  GNULIB_MBSRTOWCS=0;
+  GNULIB_MBSNRTOWCS=0;
+  GNULIB_WCRTOMB=0;
+  GNULIB_WCSRTOMBS=0;
+  GNULIB_WCSNRTOMBS=0;
+  GNULIB_WCWIDTH=0;
+  GNULIB_WMEMCHR=0;
+  GNULIB_WMEMCMP=0;
+  GNULIB_WMEMCPY=0;
+  GNULIB_WMEMMOVE=0;
+  GNULIB_WMEMSET=0;
+  GNULIB_WCSLEN=0;
+  GNULIB_WCSNLEN=0;
+  GNULIB_WCSCPY=0;
+  GNULIB_WCPCPY=0;
+  GNULIB_WCSNCPY=0;
+  GNULIB_WCPNCPY=0;
+  GNULIB_WCSCAT=0;
+  GNULIB_WCSNCAT=0;
+  GNULIB_WCSCMP=0;
+  GNULIB_WCSNCMP=0;
+  GNULIB_WCSCASECMP=0;
+  GNULIB_WCSNCASECMP=0;
+  GNULIB_WCSCOLL=0;
+  GNULIB_WCSXFRM=0;
+  GNULIB_WCSDUP=0;
+  GNULIB_WCSCHR=0;
+  GNULIB_WCSRCHR=0;
+  GNULIB_WCSCSPN=0;
+  GNULIB_WCSSPN=0;
+  GNULIB_WCSPBRK=0;
+  GNULIB_WCSSTR=0;
+  GNULIB_WCSTOK=0;
+  GNULIB_WCSWIDTH=0;
+  GNULIB_WCSFTIME=0;
+    HAVE_BTOWC=1;
+  HAVE_MBSINIT=1;
+  HAVE_MBRTOWC=1;
+  HAVE_MBRLEN=1;
+  HAVE_MBSRTOWCS=1;
+  HAVE_MBSNRTOWCS=1;
+  HAVE_WCRTOMB=1;
+  HAVE_WCSRTOMBS=1;
+  HAVE_WCSNRTOMBS=1;
+  HAVE_WMEMCHR=1;
+  HAVE_WMEMCMP=1;
+  HAVE_WMEMCPY=1;
+  HAVE_WMEMMOVE=1;
+  HAVE_WMEMSET=1;
+  HAVE_WCSLEN=1;
+  HAVE_WCSNLEN=1;
+  HAVE_WCSCPY=1;
+  HAVE_WCPCPY=1;
+  HAVE_WCSNCPY=1;
+  HAVE_WCPNCPY=1;
+  HAVE_WCSCAT=1;
+  HAVE_WCSNCAT=1;
+  HAVE_WCSCMP=1;
+  HAVE_WCSNCMP=1;
+  HAVE_WCSCASECMP=1;
+  HAVE_WCSNCASECMP=1;
+  HAVE_WCSCOLL=1;
+  HAVE_WCSXFRM=1;
+  HAVE_WCSDUP=1;
+  HAVE_WCSCHR=1;
+  HAVE_WCSRCHR=1;
+  HAVE_WCSCSPN=1;
+  HAVE_WCSSPN=1;
+  HAVE_WCSPBRK=1;
+  HAVE_WCSSTR=1;
+  HAVE_WCSTOK=1;
+  HAVE_WCSWIDTH=1;
+  HAVE_WCSFTIME=1;
+  HAVE_DECL_WCTOB=1;
+  HAVE_DECL_WCWIDTH=1;
+  REPLACE_MBSTATE_T=0;
+  REPLACE_BTOWC=0;
+  REPLACE_WCTOB=0;
+  REPLACE_MBSINIT=0;
+  REPLACE_MBRTOWC=0;
+  REPLACE_MBRLEN=0;
+  REPLACE_MBSRTOWCS=0;
+  REPLACE_MBSNRTOWCS=0;
+  REPLACE_WCRTOMB=0;
+  REPLACE_WCSRTOMBS=0;
+  REPLACE_WCSNRTOMBS=0;
+  REPLACE_WCWIDTH=0;
+  REPLACE_WCSWIDTH=0;
+  REPLACE_WCSFTIME=0;
+
+
+            { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether <wchar.h> uses 'inline' correctly" >&5
+$as_echo_n "checking whether <wchar.h> uses 'inline' correctly... " >&6; }
+if ${gl_cv_header_wchar_h_correct_inline+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  gl_cv_header_wchar_h_correct_inline=yes
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+       #define wcstod renamed_wcstod
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+   <wchar.h>.
+   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+   included before <wchar.h>.  */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+extern int zero (void);
+int main () { return zero(); }
+
+_ACEOF
+                              save_ac_compile="$ac_compile"
+     ac_compile=`echo "$save_ac_compile" | sed s/conftest/conftest1/`
+     if echo '#include "conftest.c"' >conftest1.c &&
+        { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+         #define wcstod renamed_wcstod
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+   <wchar.h>.
+   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+   included before <wchar.h>.  */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+int zero (void) { return 0; }
+
+_ACEOF
+              ac_compile=`echo "$save_ac_compile" | sed s/conftest/conftest2/`
+       if echo '#include "conftest.c"' >conftest2.c &&
+          { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+         if $CC -o conftest$ac_exeext $CFLAGS $LDFLAGS conftest1.$ac_objext conftest2.$ac_objext $LIBS >&5 2>&1; then
+           :
+         else
+           gl_cv_header_wchar_h_correct_inline=no
+         fi
+       fi
+     fi
+     ac_compile="$save_ac_compile"
+     rm -f conftest12.c conftest12.$ac_objext conftest$ac_exeext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_wchar_h_correct_inline" >&5
+$as_echo "$gl_cv_header_wchar_h_correct_inline" >&6; }
+  if test $gl_cv_header_wchar_h_correct_inline = no; then
+    as_fn_error $? "<wchar.h> cannot be used with this compiler ($CC $CFLAGS $CPPFLAGS).
+This is a known interoperability problem of glibc <= 2.5 with gcc >= 4.3 in
+C99 mode. You have four options:
+  - Add the flag -fgnu89-inline to CC and reconfigure, or
+  - Fix your include files, using parts of
+    <https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=b037a293a48718af30d706c2e18c929d0e69a621>, or
+  - Use a gcc version older than 4.3, or
+  - Don't use the flags -std=c99 or -std=gnu99.
+Configuration aborted." "$LINENO" 5
+  fi
+
+
+
+
+
+  if test $ac_cv_header_crtdefs_h = yes; then
+    HAVE_CRTDEFS_H=1
+  else
+    HAVE_CRTDEFS_H=0
+  fi
+
+
+
+  GNULIB_ISWBLANK=0;
+  GNULIB_WCTYPE=0;
+  GNULIB_ISWCTYPE=0;
+  GNULIB_WCTRANS=0;
+  GNULIB_TOWCTRANS=0;
+    HAVE_ISWBLANK=1;
+  HAVE_WCTYPE_T=1;
+  HAVE_WCTRANS_T=1;
+  REPLACE_ISWBLANK=0;
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5
+$as_echo_n "checking for inline... " >&6; }
+if ${ac_cv_c_inline+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_c_inline=no
+for ac_kw in inline __inline__ __inline; do
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifndef __cplusplus
+typedef int foo_t;
+static $ac_kw foo_t static_foo () {return 0; }
+$ac_kw foo_t foo () {return 0; }
+#endif
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_c_inline=$ac_kw
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  test "$ac_cv_c_inline" != no && break
+done
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5
+$as_echo "$ac_cv_c_inline" >&6; }
+
+case $ac_cv_c_inline in
+  inline | yes) ;;
+  *)
+    case $ac_cv_c_inline in
+      no) ac_val=;;
+      *) ac_val=$ac_cv_c_inline;;
+    esac
+    cat >>confdefs.h <<_ACEOF
+#ifndef __cplusplus
+#define inline $ac_val
+#endif
+_ACEOF
+    ;;
+esac
+
+
+   if false; then
+  GL_COND_LIBTOOL_TRUE=
+  GL_COND_LIBTOOL_FALSE='#'
+else
+  GL_COND_LIBTOOL_TRUE='#'
+  GL_COND_LIBTOOL_FALSE=
+fi
+
+  gl_cond_libtool=false
+  gl_libdeps=
+  gl_ltlibdeps=
+  gl_m4_base='gnulib_m4'
+
+
+
+
+
+
+
+
+
+  gl_source_base='lib'
+
+
+  if test $ac_cv_func_alloca_works = no; then
+    :
+  fi
+
+  # Define an additional variable used in the Makefile substitution.
+  if test $ac_cv_working_alloca_h = yes; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for alloca as a compiler built-in" >&5
+$as_echo_n "checking for alloca as a compiler built-in... " >&6; }
+if ${gl_cv_rpl_alloca+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#if defined __GNUC__ || defined _AIX || defined _MSC_VER
+        Need own alloca
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "Need own alloca" >/dev/null 2>&1; then :
+  gl_cv_rpl_alloca=yes
+else
+  gl_cv_rpl_alloca=no
+fi
+rm -f conftest*
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_rpl_alloca" >&5
+$as_echo "$gl_cv_rpl_alloca" >&6; }
+    if test $gl_cv_rpl_alloca = yes; then
+
+$as_echo "#define HAVE_ALLOCA 1" >>confdefs.h
+
+      ALLOCA_H=alloca.h
+    else
+                  ALLOCA_H=
+    fi
+  else
+    ALLOCA_H=alloca.h
+  fi
+
+   if test -n "$ALLOCA_H"; then
+  GL_GENERATE_ALLOCA_H_TRUE=
+  GL_GENERATE_ALLOCA_H_FALSE='#'
+else
+  GL_GENERATE_ALLOCA_H_TRUE='#'
+  GL_GENERATE_ALLOCA_H_FALSE=
+fi
+
+
+
+
+
+
+
+  FLOAT_H=
+  REPLACE_FLOAT_LDBL=0
+  case "$host_os" in
+    aix* | beos* | openbsd* | mirbsd* | irix*)
+      FLOAT_H=float.h
+      ;;
+    freebsd* | dragonfly*)
+      case "$host_cpu" in
+        i[34567]86 )
+          FLOAT_H=float.h
+          ;;
+        x86_64 )
+          # On x86_64 systems, the C compiler may still be generating
+          # 32-bit code.
+          cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#if defined __LP64__ || defined __x86_64__ || defined __amd64__
+                  int ok;
+                 #else
+                  error fail
+                 #endif
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+  FLOAT_H=float.h
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+          ;;
+      esac
+      ;;
+    linux*)
+      case "$host_cpu" in
+        powerpc*)
+          FLOAT_H=float.h
+          ;;
+      esac
+      ;;
+  esac
+  case "$host_os" in
+    aix* | freebsd* | dragonfly* | linux*)
+      if test -n "$FLOAT_H"; then
+        REPLACE_FLOAT_LDBL=1
+      fi
+      ;;
+  esac
+
+    REPLACE_ITOLD=0
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether conversion from 'int' to 'long double' works" >&5
+$as_echo_n "checking whether conversion from 'int' to 'long double' works... " >&6; }
+if ${gl_cv_func_itold_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+      if test "$cross_compiling" = yes; then :
+  case "$host" in
+           sparc*-*-linux*)
+             cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#if defined __LP64__ || defined __arch64__
+                    int ok;
+                   #else
+                    error fail
+                   #endif
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gl_cv_func_itold_works="guessing no"
+else
+  gl_cv_func_itold_works="guessing yes"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+             ;;
+                   # Guess yes on native Windows.
+           mingw*) gl_cv_func_itold_works="guessing yes" ;;
+           *)      gl_cv_func_itold_works="guessing yes" ;;
+         esac
+
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int i = -1;
+volatile long double ld;
+int main ()
+{
+  ld += i * 1.0L;
+  if (ld > 0)
+    return 1;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_itold_works=yes
+else
+  gl_cv_func_itold_works=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_itold_works" >&5
+$as_echo "$gl_cv_func_itold_works" >&6; }
+  case "$gl_cv_func_itold_works" in
+    *no)
+      REPLACE_ITOLD=1
+                  FLOAT_H=float.h
+      ;;
+  esac
+
+  if test -n "$FLOAT_H"; then
+
+
+
+
+
+
+
+
+     if test $gl_cv_have_include_next = yes; then
+       gl_cv_next_float_h='<'float.h'>'
+     else
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <float.h>" >&5
+$as_echo_n "checking absolute name of <float.h>... " >&6; }
+if ${gl_cv_next_float_h+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <float.h>
+_ACEOF
+                case "$host_os" in
+    aix*) gl_absname_cpp="$ac_cpp -C" ;;
+    *)    gl_absname_cpp="$ac_cpp" ;;
+  esac
+
+  case "$host_os" in
+    mingw*)
+                                          gl_dirsep_regex='[/\\]'
+      ;;
+    *)
+      gl_dirsep_regex='\/'
+      ;;
+  esac
+      gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g'
+  gl_header_literal_regex=`echo 'float.h' \
+                           | sed -e "$gl_make_literal_regex_sed"`
+  gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{
+      s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/
+      s|^/[^/]|//&|
+      p
+      q
+    }'
+
+        gl_cv_absolute_float_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+  sed -n "$gl_absolute_header_sed"`
+
+           gl_header=$gl_cv_absolute_float_h
+           gl_cv_next_float_h='"'$gl_header'"'
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_float_h" >&5
+$as_echo "$gl_cv_next_float_h" >&6; }
+     fi
+     NEXT_FLOAT_H=$gl_cv_next_float_h
+
+     if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+       gl_next_as_first_directive='<'float.h'>'
+     else
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+       gl_next_as_first_directive=$gl_cv_next_float_h
+     fi
+     NEXT_AS_FIRST_DIRECTIVE_FLOAT_H=$gl_next_as_first_directive
+
+
+
+
+  fi
+
+   if test -n "$FLOAT_H"; then
+  GL_GENERATE_FLOAT_H_TRUE=
+  GL_GENERATE_FLOAT_H_FALSE='#'
+else
+  GL_GENERATE_FLOAT_H_TRUE='#'
+  GL_GENERATE_FLOAT_H_FALSE=
+fi
+
+
+
+  if test $REPLACE_FLOAT_LDBL = 1; then
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS float.$ac_objext"
+
+  fi
+  if test $REPLACE_ITOLD = 1; then
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS itold.$ac_objext"
+
+  fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+  gl_cv_func_fprintf_posix=no
+  case "$gl_cv_func_printf_sizes_c99" in
+    *yes)
+      case "$gl_cv_func_printf_long_double" in
+        *yes)
+          case "$gl_cv_func_printf_infinite" in
+            *yes)
+              case "$gl_cv_func_printf_infinite_long_double" in
+                *yes)
+                  case "$gl_cv_func_printf_directive_a" in
+                    *yes)
+                      case "$gl_cv_func_printf_directive_f" in
+                        *yes)
+                          case "$gl_cv_func_printf_directive_n" in
+                            *yes)
+                              case "$gl_cv_func_printf_directive_ls" in
+                                *yes)
+                                  case "$gl_cv_func_printf_positions" in
+                                    *yes)
+                                      case "$gl_cv_func_printf_flag_grouping" in
+                                        *yes)
+                                          case "$gl_cv_func_printf_flag_leftadjust" in
+                                            *yes)
+                                              case "$gl_cv_func_printf_flag_zero" in
+                                                *yes)
+                                                  case "$gl_cv_func_printf_precision" in
+                                                    *yes)
+                                                      case "$gl_cv_func_printf_enomem" in
+                                                        *yes)
+                                                          # fprintf exists and is
+                                                          # already POSIX compliant.
+                                                          gl_cv_func_fprintf_posix=yes
+                                                          ;;
+                                                      esac
+                                                      ;;
+                                                  esac
+                                                  ;;
+                                              esac
+                                              ;;
+                                          esac
+                                          ;;
+                                      esac
+                                      ;;
+                                  esac
+                                  ;;
+                              esac
+                              ;;
+                          esac
+                          ;;
+                      esac
+                      ;;
+                  esac
+                  ;;
+              esac
+              ;;
+          esac
+          ;;
+      esac
+      ;;
+  esac
+  if test $gl_cv_func_fprintf_posix = no; then
+
+
+
+  case "$gl_cv_func_printf_infinite" in
+    *yes)
+      ;;
+    *)
+
+$as_echo "#define NEED_PRINTF_INFINITE_DOUBLE 1" >>confdefs.h
+
+      ;;
+  esac
+
+
+
+
+  case "$gl_cv_func_printf_long_double" in
+    *yes)
+      case "$gl_cv_func_printf_infinite_long_double" in
+        *yes)
+          ;;
+        *)
+
+$as_echo "#define NEED_PRINTF_INFINITE_LONG_DOUBLE 1" >>confdefs.h
+
+          ;;
+      esac
+      ;;
+  esac
+
+
+
+  case "$gl_cv_func_printf_directive_a" in
+    *yes)
+      ;;
+    *)
+
+$as_echo "#define NEED_PRINTF_DIRECTIVE_A 1" >>confdefs.h
+
+      for ac_func in nl_langinfo
+do :
+  ac_fn_c_check_func "$LINENO" "nl_langinfo" "ac_cv_func_nl_langinfo"
+if test "x$ac_cv_func_nl_langinfo" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_NL_LANGINFO 1
+_ACEOF
+
+fi
+done
+
+      ;;
+  esac
+
+
+
+  case "$gl_cv_func_printf_directive_f" in
+    *yes)
+      ;;
+    *)
+
+$as_echo "#define NEED_PRINTF_DIRECTIVE_F 1" >>confdefs.h
+
+      ;;
+  esac
+
+
+
+  case "$gl_cv_func_printf_directive_ls" in
+    *yes)
+      ;;
+    *)
+
+$as_echo "#define NEED_PRINTF_DIRECTIVE_LS 1" >>confdefs.h
+
+      ;;
+  esac
+
+
+
+  case "$gl_cv_func_printf_flag_grouping" in
+    *yes)
+      ;;
+    *)
+
+$as_echo "#define NEED_PRINTF_FLAG_GROUPING 1" >>confdefs.h
+
+      ;;
+  esac
+
+
+
+  case "$gl_cv_func_printf_flag_leftadjust" in
+    *yes)
+      ;;
+    *)
+
+$as_echo "#define NEED_PRINTF_FLAG_LEFTADJUST 1" >>confdefs.h
+
+      ;;
+  esac
+
+
+
+  case "$gl_cv_func_printf_flag_zero" in
+    *yes)
+      ;;
+    *)
+
+$as_echo "#define NEED_PRINTF_FLAG_ZERO 1" >>confdefs.h
+
+      ;;
+  esac
+
+
+
+  case "$gl_cv_func_printf_precision" in
+    *yes)
+      ;;
+    *)
+
+$as_echo "#define NEED_PRINTF_UNBOUNDED_PRECISION 1" >>confdefs.h
+
+
+$as_echo "#define NEED_PRINTF_DOUBLE 1" >>confdefs.h
+
+
+$as_echo "#define NEED_PRINTF_LONG_DOUBLE 1" >>confdefs.h
+
+      ;;
+  esac
+
+
+
+  case "$gl_cv_func_printf_enomem" in
+    *yes)
+      ;;
+    *)
+
+$as_echo "#define NEED_PRINTF_ENOMEM 1" >>confdefs.h
+
+
+$as_echo "#define NEED_PRINTF_DOUBLE 1" >>confdefs.h
+
+
+$as_echo "#define NEED_PRINTF_LONG_DOUBLE 1" >>confdefs.h
+
+      ;;
+  esac
+
+
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS vasnprintf.$ac_objext"
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS printf-args.$ac_objext"
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS printf-parse.$ac_objext"
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS asnprintf.$ac_objext"
+
+  if test $ac_cv_func_vasnprintf = yes; then
+
+$as_echo "#define REPLACE_VASNPRINTF 1" >>confdefs.h
+
+  fi
+
+
+
+
+
+
+
+
+
+
+
+  ac_fn_c_check_type "$LINENO" "ptrdiff_t" "ac_cv_type_ptrdiff_t" "$ac_includes_default"
+if test "x$ac_cv_type_ptrdiff_t" = xyes; then :
+
+else
+
+$as_echo "#define ptrdiff_t long" >>confdefs.h
+
+
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS fprintf.$ac_objext"
+
+  REPLACE_FPRINTF=1
+
+$as_echo "#define REPLACE_FPRINTF_POSIX 1" >>confdefs.h
+
+  :
+
+  fi
+
+
+
+
+
+
+          GNULIB_FPRINTF_POSIX=1
+
+
+
+
+
+$as_echo "#define GNULIB_TEST_FPRINTF_POSIX 1" >>confdefs.h
+
+
+
+
+
+
+  if test $gl_cv_func_frexp_no_libm = yes; then
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether frexp works" >&5
+$as_echo_n "checking whether frexp works... " >&6; }
+if ${gl_cv_func_frexp_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+      if test "$cross_compiling" = yes; then :
+  case "$host_os" in
+           netbsd* | irix*) gl_cv_func_frexp_works="guessing no" ;;
+           mingw*) # Guess yes with MSVC, no with mingw.
+             cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#ifdef _MSC_VER
+ Good
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "Good" >/dev/null 2>&1; then :
+  gl_cv_func_frexp_works="guessing yes"
+else
+  gl_cv_func_frexp_works="guessing no"
+fi
+rm -f conftest*
+
+             ;;
+           *) gl_cv_func_frexp_works="guessing yes" ;;
+         esac
+
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <float.h>
+#include <math.h>
+#include <string.h>
+#if HAVE_DECL_ALARM
+# include <signal.h>
+# include <unistd.h>
+#endif
+/* HP cc on HP-UX 10.20 has a bug with the constant expression -0.0.
+   ICC 10.0 has a bug when optimizing the expression -zero.
+   The expression -DBL_MIN * DBL_MIN does not work when cross-compiling
+   to PowerPC on Mac OS X 10.5.  */
+#if defined __hpux || defined __sgi || defined __ICC
+static double
+compute_minus_zero (void)
+{
+  return -DBL_MIN * DBL_MIN;
+}
+# define minus_zero compute_minus_zero ()
+#else
+double minus_zero = -0.0;
+#endif
+int main()
+{
+  int result = 0;
+  int i;
+  volatile double x;
+  double zero = 0.0;
+#if HAVE_DECL_ALARM
+  /* NeXTstep 3.3 frexp() runs into an endless loop when called on an infinite
+     number.  Let the test fail in this case.  */
+  signal (SIGALRM, SIG_DFL);
+  alarm (5);
+#endif
+  /* Test on denormalized numbers.  */
+  for (i = 1, x = 1.0; i >= DBL_MIN_EXP; i--, x *= 0.5)
+    ;
+  if (x > 0.0)
+    {
+      int exp;
+      double y = frexp (x, &exp);
+      /* On machines with IEEE754 arithmetic: x = 1.11254e-308, exp = -1022.
+         On NetBSD: y = 0.75. Correct: y = 0.5.  */
+      if (y != 0.5)
+        result |= 1;
+    }
+  /* Test on infinite numbers.  */
+  x = 1.0 / zero;
+  {
+    int exp;
+    double y = frexp (x, &exp);
+    if (y != x)
+      result |= 2;
+  }
+  /* Test on negative zero.  */
+  x = minus_zero;
+  {
+    int exp;
+    double y = frexp (x, &exp);
+    if (memcmp (&y, &x, sizeof x))
+      result |= 4;
+  }
+  return result;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_frexp_works=yes
+else
+  gl_cv_func_frexp_works=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_frexp_works" >&5
+$as_echo "$gl_cv_func_frexp_works" >&6; }
+
+    case "$gl_cv_func_frexp_works" in
+      *yes) gl_func_frexp_no_libm=yes ;;
+      *)    gl_func_frexp_no_libm=no; REPLACE_FREXP=1 ;;
+    esac
+  else
+    gl_func_frexp_no_libm=no
+        REPLACE_FREXP=1
+  fi
+  if test $gl_func_frexp_no_libm = yes; then
+
+$as_echo "#define HAVE_FREXP_IN_LIBC 1" >>confdefs.h
+
+  fi
+
+  if test $gl_func_frexp_no_libm != yes; then
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS frexp.$ac_objext"
+
+  fi
+
+
+
+
+
+          GNULIB_FREXP=1
+
+
+
+
+
+$as_echo "#define GNULIB_TEST_FREXP 1" >>confdefs.h
+
+
+
+
+
+
+      ac_fn_c_check_decl "$LINENO" "frexpl" "ac_cv_have_decl_frexpl" "#include <math.h>
+"
+if test "x$ac_cv_have_decl_frexpl" = xyes; then :
+
+else
+  HAVE_DECL_FREXPL=0
+fi
+
+  if test $HAVE_DECL_FREXPL = 1; then
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether frexpl() can be used without linking with libm" >&5
+$as_echo_n "checking whether frexpl() can be used without linking with libm... " >&6; }
+if ${gl_cv_func_frexpl_no_libm+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+             long double x;
+int
+main ()
+{
+int e; return frexpl (x, &e) > 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_func_frexpl_no_libm=yes
+else
+  gl_cv_func_frexpl_no_libm=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_frexpl_no_libm" >&5
+$as_echo "$gl_cv_func_frexpl_no_libm" >&6; }
+
+    if test $gl_cv_func_frexpl_no_libm = yes; then
+
+
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether frexpl works" >&5
+$as_echo_n "checking whether frexpl works... " >&6; }
+if ${gl_cv_func_frexpl_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+      if test "$cross_compiling" = yes; then :
+
+         case "$host_os" in
+           aix | aix[3-6]* | beos* | darwin* | irix* | mingw* | pw*)
+              gl_cv_func_frexpl_works="guessing no";;
+           *) gl_cv_func_frexpl_works="guessing yes";;
+         esac
+
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <float.h>
+#include <math.h>
+/* Override the values of <float.h>, like done in float.in.h.  */
+#if defined __i386__ && (defined __BEOS__ || defined __OpenBSD__)
+# undef LDBL_MIN_EXP
+# define LDBL_MIN_EXP    (-16381)
+#endif
+#if defined __i386__ && (defined __FreeBSD__ || defined __DragonFly__)
+# undef LDBL_MIN_EXP
+# define LDBL_MIN_EXP    (-16381)
+#endif
+#if (defined _ARCH_PPC || defined _POWER) && defined _AIX && (LDBL_MANT_DIG == 106) && defined __GNUC__
+# undef LDBL_MIN_EXP
+# define LDBL_MIN_EXP DBL_MIN_EXP
+#endif
+#if defined __sgi && (LDBL_MANT_DIG >= 106)
+# if defined __GNUC__
+#  undef LDBL_MIN_EXP
+#  define LDBL_MIN_EXP DBL_MIN_EXP
+# endif
+#endif
+extern
+#ifdef __cplusplus
+"C"
+#endif
+long double frexpl (long double, int *);
+int main()
+{
+  int result = 0;
+  volatile long double x;
+  /* Test on finite numbers that fails on AIX 5.1.  */
+  x = 16.0L;
+  {
+    int exp = -9999;
+    frexpl (x, &exp);
+    if (exp != 5)
+      result |= 1;
+  }
+  /* Test on finite numbers that fails on Mac OS X 10.4, because its frexpl
+     function returns an invalid (incorrectly normalized) value: it returns
+               y = { 0x3fe028f5, 0xc28f5c28, 0x3c9eb851, 0xeb851eb8 }
+     but the correct result is
+          0.505L = { 0x3fe028f5, 0xc28f5c29, 0xbc547ae1, 0x47ae1480 }  */
+  x = 1.01L;
+  {
+    int exp = -9999;
+    long double y = frexpl (x, &exp);
+    if (!(exp == 1 && y == 0.505L))
+      result |= 2;
+  }
+  /* Test on large finite numbers.  This fails on BeOS at i = 16322, while
+     LDBL_MAX_EXP = 16384.
+     In the loop end test, we test x against Infinity, rather than comparing
+     i with LDBL_MAX_EXP, because BeOS <float.h> has a wrong LDBL_MAX_EXP.  */
+  {
+    int i;
+    for (i = 1, x = 1.0L; x != x + x; i++, x *= 2.0L)
+      {
+        int exp = -9999;
+        frexpl (x, &exp);
+        if (exp != i)
+          {
+            result |= 4;
+            break;
+          }
+      }
+  }
+  /* Test on denormalized numbers.  */
+  {
+    int i;
+    for (i = 1, x = 1.0L; i >= LDBL_MIN_EXP; i--, x *= 0.5L)
+      ;
+    if (x > 0.0L)
+      {
+        int exp;
+        long double y = frexpl (x, &exp);
+        /* On machines with IEEE854 arithmetic: x = 1.68105e-4932,
+           exp = -16382, y = 0.5.  On Mac OS X 10.5: exp = -16384, y = 0.5.  */
+        if (exp != LDBL_MIN_EXP - 1)
+          result |= 8;
+      }
+  }
+  /* Test on infinite numbers.  */
+  x = 1.0L / 0.0L;
+  {
+    int exp;
+    long double y = frexpl (x, &exp);
+    if (y != x)
+      result |= 16;
+  }
+  return result;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_frexpl_works=yes
+else
+  gl_cv_func_frexpl_works=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_frexpl_works" >&5
+$as_echo "$gl_cv_func_frexpl_works" >&6; }
+
+      case "$gl_cv_func_frexpl_works" in
+        *yes) gl_func_frexpl_no_libm=yes ;;
+        *)    gl_func_frexpl_no_libm=no; REPLACE_FREXPL=1 ;;
+      esac
+    else
+      gl_func_frexpl_no_libm=no
+            REPLACE_FREXPL=1
+    fi
+    if test $gl_func_frexpl_no_libm = yes; then
+
+$as_echo "#define HAVE_FREXPL_IN_LIBC 1" >>confdefs.h
+
+    fi
+  fi
+
+  if test $HAVE_DECL_FREXPL = 0 || test $gl_func_frexpl_no_libm = no; then
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS frexpl.$ac_objext"
+
+  fi
+
+
+
+
+
+          GNULIB_FREXPL=1
+
+
+
+
+
+$as_echo "#define GNULIB_TEST_FREXPL 1" >>confdefs.h
+
+
+
+
+
+
+  if test $ac_cv_func___fseterr = no; then
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS fseterr.$ac_objext"
+
+  fi
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether isnan(double) can be used without linking with libm" >&5
+$as_echo_n "checking whether isnan(double) can be used without linking with libm... " >&6; }
+if ${gl_cv_func_isnand_no_libm+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+             #if __GNUC__ >= 4
+             # undef isnand
+             # define isnand(x) __builtin_isnan ((double)(x))
+             #else
+             # undef isnand
+             # define isnand(x) isnan ((double)(x))
+             #endif
+             double x;
+int
+main ()
+{
+return isnand (x);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_func_isnand_no_libm=yes
+else
+  gl_cv_func_isnand_no_libm=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_isnand_no_libm" >&5
+$as_echo "$gl_cv_func_isnand_no_libm" >&6; }
+
+  gl_func_isnand_no_libm=$gl_cv_func_isnand_no_libm
+  if test $gl_cv_func_isnand_no_libm = yes; then
+
+$as_echo "#define HAVE_ISNAND_IN_LIBC 1" >>confdefs.h
+
+  fi
+
+  if test $gl_func_isnand_no_libm != yes; then
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS isnand.$ac_objext"
+
+
+
+
+  fi
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether isnan(float) can be used without linking with libm" >&5
+$as_echo_n "checking whether isnan(float) can be used without linking with libm... " >&6; }
+if ${gl_cv_func_isnanf_no_libm+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+             #if __GNUC__ >= 4
+             # undef isnanf
+             # define isnanf(x) __builtin_isnanf ((float)(x))
+             #elif defined isnan
+             # undef isnanf
+             # define isnanf(x) isnan ((float)(x))
+             #endif
+             float x;
+int
+main ()
+{
+return isnanf (x);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_func_isnanf_no_libm=yes
+else
+  gl_cv_func_isnanf_no_libm=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_isnanf_no_libm" >&5
+$as_echo "$gl_cv_func_isnanf_no_libm" >&6; }
+
+  if test $gl_cv_func_isnanf_no_libm = yes; then
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether isnan(float) works" >&5
+$as_echo_n "checking whether isnan(float) works... " >&6; }
+if ${gl_cv_func_isnanf_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+      if test "$cross_compiling" = yes; then :
+  case "$host_os" in
+           irix* | solaris*) gl_cv_func_isnanf_works="guessing no" ;;
+           mingw*) # Guess yes on mingw, no on MSVC.
+             cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#ifdef __MINGW32__
+ Known
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "Known" >/dev/null 2>&1; then :
+  gl_cv_func_isnanf_works="guessing yes"
+else
+  gl_cv_func_isnanf_works="guessing no"
+fi
+rm -f conftest*
+
+             ;;
+           *) gl_cv_func_isnanf_works="guessing yes" ;;
+         esac
+
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <math.h>
+#if __GNUC__ >= 4
+# undef isnanf
+# define isnanf(x) __builtin_isnanf ((float)(x))
+#elif defined isnan
+# undef isnanf
+# define isnanf(x) isnan ((float)(x))
+#endif
+/* The Compaq (ex-DEC) C 6.4 compiler chokes on the expression 0.0 / 0.0.  */
+#ifdef __DECC
+static float
+NaN ()
+{
+  static float zero = 0.0f;
+  return zero / zero;
+}
+#else
+# define NaN() (0.0f / 0.0f)
+#endif
+#define NWORDS \
+  ((sizeof (float) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
+typedef union { unsigned int word[NWORDS]; float value; } memory_float;
+int main()
+{
+  int result = 0;
+
+  if (isnanf (1.0f / 0.0f))
+    result |= 1;
+
+  if (!isnanf (NaN ()))
+    result |= 2;
+
+#if defined FLT_EXPBIT0_WORD && defined FLT_EXPBIT0_BIT
+  /* The isnanf function should be immune against changes in the sign bit and
+     in the mantissa bits.  The xor operation twiddles a bit that can only be
+     a sign bit or a mantissa bit.  */
+  if (FLT_EXPBIT0_WORD == 0 && FLT_EXPBIT0_BIT > 0)
+    {
+      memory_float m;
+
+      m.value = NaN ();
+      /* Set the bits below the exponent to 01111...111.  */
+      m.word[0] &= -1U << FLT_EXPBIT0_BIT;
+      m.word[0] |= 1U << (FLT_EXPBIT0_BIT - 1) - 1;
+      if (!isnanf (m.value))
+        result |= 4;
+    }
+#endif
+
+  return result;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_isnanf_works=yes
+else
+  gl_cv_func_isnanf_works=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_isnanf_works" >&5
+$as_echo "$gl_cv_func_isnanf_works" >&6; }
+
+  fi
+  if test $gl_cv_func_isnanf_no_libm = yes \
+     && { case "$gl_cv_func_isnanf_works" in
+            *yes) true;;
+            *) false;;
+          esac
+        }; then
+    gl_func_isnanf_no_libm=yes
+
+$as_echo "#define HAVE_ISNANF_IN_LIBC 1" >>confdefs.h
+
+  else
+    gl_func_isnanf_no_libm=no
+  fi
+
+  if test $gl_func_isnanf_no_libm != yes; then
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS isnanf.$ac_objext"
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking where to find the exponent in a 'float'" >&5
+$as_echo_n "checking where to find the exponent in a 'float'... " >&6; }
+if ${gl_cv_cc_float_expbit0+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+      if test "$cross_compiling" = yes; then :
+  gl_cv_cc_float_expbit0="word 0 bit 23"
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <float.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <string.h>
+#define NWORDS \
+  ((sizeof (float) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
+typedef union { float value; unsigned int word[NWORDS]; } memory_float;
+static unsigned int ored_words[NWORDS];
+static unsigned int anded_words[NWORDS];
+static void add_to_ored_words (float x)
+{
+  memory_float m;
+  size_t i;
+  /* Clear it first, in case
+     sizeof (float) < sizeof (memory_float).  */
+  memset (&m, 0, sizeof (memory_float));
+  m.value = x;
+  for (i = 0; i < NWORDS; i++)
+    {
+      ored_words[i] |= m.word[i];
+      anded_words[i] &= m.word[i];
+    }
+}
+int main ()
+{
+  size_t j;
+  FILE *fp = fopen ("conftest.out", "w");
+  if (fp == NULL)
+    return 1;
+  for (j = 0; j < NWORDS; j++)
+    anded_words[j] = ~ (unsigned int) 0;
+  add_to_ored_words (0.25f);
+  add_to_ored_words (0.5f);
+  add_to_ored_words (1.0f);
+  add_to_ored_words (2.0f);
+  add_to_ored_words (4.0f);
+  /* Remove bits that are common (e.g. if representation of the first mantissa
+     bit is explicit).  */
+  for (j = 0; j < NWORDS; j++)
+    ored_words[j] &= ~anded_words[j];
+  /* Now find the nonzero word.  */
+  for (j = 0; j < NWORDS; j++)
+    if (ored_words[j] != 0)
+      break;
+  if (j < NWORDS)
+    {
+      size_t i;
+      for (i = j + 1; i < NWORDS; i++)
+        if (ored_words[i] != 0)
+          {
+            fprintf (fp, "unknown");
+            return (fclose (fp) != 0);
+          }
+      for (i = 0; ; i++)
+        if ((ored_words[j] >> i) & 1)
+          {
+            fprintf (fp, "word %d bit %d", (int) j, (int) i);
+            return (fclose (fp) != 0);
+          }
+    }
+  fprintf (fp, "unknown");
+  return (fclose (fp) != 0);
+}
+
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_cc_float_expbit0=`cat conftest.out`
+else
+  gl_cv_cc_float_expbit0="unknown"
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+      rm -f conftest.out
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_float_expbit0" >&5
+$as_echo "$gl_cv_cc_float_expbit0" >&6; }
+  case "$gl_cv_cc_float_expbit0" in
+    word*bit*)
+      word=`echo "$gl_cv_cc_float_expbit0" | sed -e 's/word //' -e 's/ bit.*//'`
+      bit=`echo "$gl_cv_cc_float_expbit0" | sed -e 's/word.*bit //'`
+
+cat >>confdefs.h <<_ACEOF
+#define FLT_EXPBIT0_WORD $word
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define FLT_EXPBIT0_BIT $bit
+_ACEOF
+
+      ;;
+  esac
+
+
+  fi
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether isnan(long double) can be used without linking with libm" >&5
+$as_echo_n "checking whether isnan(long double) can be used without linking with libm... " >&6; }
+if ${gl_cv_func_isnanl_no_libm+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+             #if __GNUC__ >= 4
+             # undef isnanl
+             # define isnanl(x) __builtin_isnanl ((long double)(x))
+             #elif defined isnan
+             # undef isnanl
+             # define isnanl(x) isnan ((long double)(x))
+             #endif
+             long double x;
+int
+main ()
+{
+return isnanl (x);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_func_isnanl_no_libm=yes
+else
+  gl_cv_func_isnanl_no_libm=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_isnanl_no_libm" >&5
+$as_echo "$gl_cv_func_isnanl_no_libm" >&6; }
+
+  gl_func_isnanl_no_libm=$gl_cv_func_isnanl_no_libm
+  if test $gl_func_isnanl_no_libm = yes; then
+
+
+
+
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether isnanl works" >&5
+$as_echo_n "checking whether isnanl works... " >&6; }
+if ${gl_cv_func_isnanl_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+      if test "$cross_compiling" = yes; then :
+  case "$host_os" in
+           mingw*) # Guess yes on mingw, no on MSVC.
+             cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#ifdef __MINGW32__
+ Known
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "Known" >/dev/null 2>&1; then :
+  gl_cv_func_isnanl_works="guessing yes"
+else
+  gl_cv_func_isnanl_works="guessing no"
+fi
+rm -f conftest*
+
+             ;;
+           *) gl_cv_func_isnanl_works="guessing yes" ;;
+         esac
+
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <float.h>
+#include <limits.h>
+#include <math.h>
+#if __GNUC__ >= 4
+# undef isnanl
+# define isnanl(x) __builtin_isnanl ((long double)(x))
+#elif defined isnan
+# undef isnanl
+# define isnanl(x) isnan ((long double)(x))
+#endif
+#define NWORDS \
+  ((sizeof (long double) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
+typedef union { unsigned int word[NWORDS]; long double value; }
+        memory_long_double;
+/* On Irix 6.5, gcc 3.4.3 can't compute compile-time NaN, and needs the
+   runtime type conversion.  */
+#ifdef __sgi
+static long double NaNl ()
+{
+  double zero = 0.0;
+  return zero / zero;
+}
+#else
+# define NaNl() (0.0L / 0.0L)
+#endif
+int main ()
+{
+  int result = 0;
+
+  if (!isnanl (NaNl ()))
+    result |= 1;
+
+  {
+    memory_long_double m;
+    unsigned int i;
+
+    /* The isnanl function should be immune against changes in the sign bit and
+       in the mantissa bits.  The xor operation twiddles a bit that can only be
+       a sign bit or a mantissa bit (since the exponent never extends to
+       bit 31).  */
+    m.value = NaNl ();
+    m.word[NWORDS / 2] ^= (unsigned int) 1 << (sizeof (unsigned int) * CHAR_BIT - 1);
+    for (i = 0; i < NWORDS; i++)
+      m.word[i] |= 1;
+    if (!isnanl (m.value))
+      result |= 1;
+  }
+
+#if ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) && !HAVE_SAME_LONG_DOUBLE_AS_DOUBLE
+/* Representation of an 80-bit 'long double' as an initializer for a sequence
+   of 'unsigned int' words.  */
+# ifdef WORDS_BIGENDIAN
+#  define LDBL80_WORDS(exponent,manthi,mantlo) \
+     { ((unsigned int) (exponent) << 16) | ((unsigned int) (manthi) >> 16), \
+       ((unsigned int) (manthi) << 16) | ((unsigned int) (mantlo) >> 16),   \
+       (unsigned int) (mantlo) << 16                                        \
+     }
+# else
+#  define LDBL80_WORDS(exponent,manthi,mantlo) \
+     { mantlo, manthi, exponent }
+# endif
+  { /* Quiet NaN.  */
+    static memory_long_double x =
+      { LDBL80_WORDS (0xFFFF, 0xC3333333, 0x00000000) };
+    if (!isnanl (x.value))
+      result |= 2;
+  }
+  {
+    /* Signalling NaN.  */
+    static memory_long_double x =
+      { LDBL80_WORDS (0xFFFF, 0x83333333, 0x00000000) };
+    if (!isnanl (x.value))
+      result |= 2;
+  }
+  /* isnanl should return something even for noncanonical values.  */
+  { /* Pseudo-NaN.  */
+    static memory_long_double x =
+      { LDBL80_WORDS (0xFFFF, 0x40000001, 0x00000000) };
+    if (isnanl (x.value) && !isnanl (x.value))
+      result |= 4;
+  }
+  { /* Pseudo-Infinity.  */
+    static memory_long_double x =
+      { LDBL80_WORDS (0xFFFF, 0x00000000, 0x00000000) };
+    if (isnanl (x.value) && !isnanl (x.value))
+      result |= 8;
+  }
+  { /* Pseudo-Zero.  */
+    static memory_long_double x =
+      { LDBL80_WORDS (0x4004, 0x00000000, 0x00000000) };
+    if (isnanl (x.value) && !isnanl (x.value))
+      result |= 16;
+  }
+  { /* Unnormalized number.  */
+    static memory_long_double x =
+      { LDBL80_WORDS (0x4000, 0x63333333, 0x00000000) };
+    if (isnanl (x.value) && !isnanl (x.value))
+      result |= 32;
+  }
+  { /* Pseudo-Denormal.  */
+    static memory_long_double x =
+      { LDBL80_WORDS (0x0000, 0x83333333, 0x00000000) };
+    if (isnanl (x.value) && !isnanl (x.value))
+      result |= 64;
+  }
+#endif
+
+  return result;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_isnanl_works=yes
+else
+  gl_cv_func_isnanl_works=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_isnanl_works" >&5
+$as_echo "$gl_cv_func_isnanl_works" >&6; }
+
+    case "$gl_cv_func_isnanl_works" in
+      *yes) ;;
+      *)    gl_func_isnanl_no_libm=no ;;
+    esac
+  fi
+  if test $gl_func_isnanl_no_libm = yes; then
+
+$as_echo "#define HAVE_ISNANL_IN_LIBC 1" >>confdefs.h
+
+  fi
+
+  if test $gl_func_isnanl_no_libm != yes; then
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS isnanl.$ac_objext"
+
+
+
+
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking where to find the exponent in a 'long double'" >&5
+$as_echo_n "checking where to find the exponent in a 'long double'... " >&6; }
+if ${gl_cv_cc_long_double_expbit0+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+      if test "$cross_compiling" = yes; then :
+
+                              gl_cv_cc_long_double_expbit0="unknown"
+          case "$host_os" in
+            mingw*) # On native Windows (little-endian), we know the result
+                    # in two cases: mingw, MSVC.
+              cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#ifdef __MINGW32__
+ Known
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "Known" >/dev/null 2>&1; then :
+  gl_cv_cc_long_double_expbit0="word 2 bit 0"
+fi
+rm -f conftest*
+
+              cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#ifdef _MSC_VER
+ Known
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "Known" >/dev/null 2>&1; then :
+  gl_cv_cc_long_double_expbit0="word 1 bit 20"
+fi
+rm -f conftest*
+
+              ;;
+          esac
+
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <float.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <string.h>
+#define NWORDS \
+  ((sizeof (long double) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
+typedef union { long double value; unsigned int word[NWORDS]; }
+        memory_long_double;
+static unsigned int ored_words[NWORDS];
+static unsigned int anded_words[NWORDS];
+static void add_to_ored_words (long double x)
+{
+  memory_long_double m;
+  size_t i;
+  /* Clear it first, in case
+     sizeof (long double) < sizeof (memory_long_double).  */
+  memset (&m, 0, sizeof (memory_long_double));
+  m.value = x;
+  for (i = 0; i < NWORDS; i++)
+    {
+      ored_words[i] |= m.word[i];
+      anded_words[i] &= m.word[i];
+    }
+}
+int main ()
+{
+  size_t j;
+  FILE *fp = fopen ("conftest.out", "w");
+  if (fp == NULL)
+    return 1;
+  for (j = 0; j < NWORDS; j++)
+    anded_words[j] = ~ (unsigned int) 0;
+  add_to_ored_words (0.25L);
+  add_to_ored_words (0.5L);
+  add_to_ored_words (1.0L);
+  add_to_ored_words (2.0L);
+  add_to_ored_words (4.0L);
+  /* Remove bits that are common (e.g. if representation of the first mantissa
+     bit is explicit).  */
+  for (j = 0; j < NWORDS; j++)
+    ored_words[j] &= ~anded_words[j];
+  /* Now find the nonzero word.  */
+  for (j = 0; j < NWORDS; j++)
+    if (ored_words[j] != 0)
+      break;
+  if (j < NWORDS)
+    {
+      size_t i;
+      for (i = j + 1; i < NWORDS; i++)
+        if (ored_words[i] != 0)
+          {
+            fprintf (fp, "unknown");
+            return (fclose (fp) != 0);
+          }
+      for (i = 0; ; i++)
+        if ((ored_words[j] >> i) & 1)
+          {
+            fprintf (fp, "word %d bit %d", (int) j, (int) i);
+            return (fclose (fp) != 0);
+          }
+    }
+  fprintf (fp, "unknown");
+  return (fclose (fp) != 0);
+}
+
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_cc_long_double_expbit0=`cat conftest.out`
+else
+  gl_cv_cc_long_double_expbit0="unknown"
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+      rm -f conftest.out
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_long_double_expbit0" >&5
+$as_echo "$gl_cv_cc_long_double_expbit0" >&6; }
+  case "$gl_cv_cc_long_double_expbit0" in
+    word*bit*)
+      word=`echo "$gl_cv_cc_long_double_expbit0" | sed -e 's/word //' -e 's/ bit.*//'`
+      bit=`echo "$gl_cv_cc_long_double_expbit0" | sed -e 's/word.*bit //'`
+
+cat >>confdefs.h <<_ACEOF
+#define LDBL_EXPBIT0_WORD $word
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define LDBL_EXPBIT0_BIT $bit
+_ACEOF
+
+      ;;
+  esac
+
+
+
+  fi
+
+
+
+
+
+
+
+
+
+    LOCALCHARSET_TESTS_ENVIRONMENT=
+
+
+
+
+
+
+
+
+
+
+
+
+     if test $gl_cv_have_include_next = yes; then
+       gl_cv_next_math_h='<'math.h'>'
+     else
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <math.h>" >&5
+$as_echo_n "checking absolute name of <math.h>... " >&6; }
+if ${gl_cv_next_math_h+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+             if test $ac_cv_header_math_h = yes; then
+
+
+
+
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+_ACEOF
+                case "$host_os" in
+    aix*) gl_absname_cpp="$ac_cpp -C" ;;
+    *)    gl_absname_cpp="$ac_cpp" ;;
+  esac
+
+  case "$host_os" in
+    mingw*)
+                                          gl_dirsep_regex='[/\\]'
+      ;;
+    *)
+      gl_dirsep_regex='\/'
+      ;;
+  esac
+      gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g'
+  gl_header_literal_regex=`echo 'math.h' \
+                           | sed -e "$gl_make_literal_regex_sed"`
+  gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{
+      s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/
+      s|^/[^/]|//&|
+      p
+      q
+    }'
+
+        gl_cv_absolute_math_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+  sed -n "$gl_absolute_header_sed"`
+
+           gl_header=$gl_cv_absolute_math_h
+           gl_cv_next_math_h='"'$gl_header'"'
+          else
+               gl_cv_next_math_h='<'math.h'>'
+             fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_math_h" >&5
+$as_echo "$gl_cv_next_math_h" >&6; }
+     fi
+     NEXT_MATH_H=$gl_cv_next_math_h
+
+     if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+       gl_next_as_first_directive='<'math.h'>'
+     else
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+       gl_next_as_first_directive=$gl_cv_next_math_h
+     fi
+     NEXT_AS_FIRST_DIRECTIVE_MATH_H=$gl_next_as_first_directive
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NAN macro works" >&5
+$as_echo_n "checking whether NAN macro works... " >&6; }
+if ${gl_cv_header_math_nan_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+/* Solaris 10 has a broken definition of NAN.  Other platforms
+        fail to provide NAN, or provide it only in C99 mode; this
+        test only needs to fail when NAN is provided but wrong.  */
+         float f = 1.0f;
+#ifdef NAN
+         f = NAN;
+#endif
+         return f == 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gl_cv_header_math_nan_works=yes
+else
+  gl_cv_header_math_nan_works=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_math_nan_works" >&5
+$as_echo "$gl_cv_header_math_nan_works" >&6; }
+  if test $gl_cv_header_math_nan_works = no; then
+    REPLACE_NAN=1
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether HUGE_VAL works" >&5
+$as_echo_n "checking whether HUGE_VAL works... " >&6; }
+if ${gl_cv_header_math_huge_val_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+/* Solaris 10 has a broken definition of HUGE_VAL.  */
+         double d = HUGE_VAL;
+         return d == 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gl_cv_header_math_huge_val_works=yes
+else
+  gl_cv_header_math_huge_val_works=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_math_huge_val_works" >&5
+$as_echo "$gl_cv_header_math_huge_val_works" >&6; }
+  if test $gl_cv_header_math_huge_val_works = no; then
+    REPLACE_HUGE_VAL=1
+  fi
+
+
+
+
+
+
+  if test $HAVE_MEMCHR = 0 || test $REPLACE_MEMCHR = 1; then
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS memchr.$ac_objext"
+
+
+  for ac_header in bp-sym.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "bp-sym.h" "ac_cv_header_bp_sym_h" "$ac_includes_default"
+if test "x$ac_cv_header_bp_sym_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_BP_SYM_H 1
+_ACEOF
+
+fi
+
+done
+
+
+  fi
+
+
+
+
+
+          GNULIB_MEMCHR=1
+
+
+
+
+
+$as_echo "#define GNULIB_TEST_MEMCHR 1" >>confdefs.h
+
+
+
+
+
+
+
+  if test $gl_cv_func_frexp_no_libm = yes; then
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether frexp works" >&5
+$as_echo_n "checking whether frexp works... " >&6; }
+if ${gl_cv_func_frexp_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+      if test "$cross_compiling" = yes; then :
+  case "$host_os" in
+           netbsd* | irix*) gl_cv_func_frexp_works="guessing no" ;;
+           mingw*) # Guess yes with MSVC, no with mingw.
+             cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#ifdef _MSC_VER
+ Good
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "Good" >/dev/null 2>&1; then :
+  gl_cv_func_frexp_works="guessing yes"
+else
+  gl_cv_func_frexp_works="guessing no"
+fi
+rm -f conftest*
+
+             ;;
+           *) gl_cv_func_frexp_works="guessing yes" ;;
+         esac
+
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <float.h>
+#include <math.h>
+#include <string.h>
+#if HAVE_DECL_ALARM
+# include <signal.h>
+# include <unistd.h>
+#endif
+/* HP cc on HP-UX 10.20 has a bug with the constant expression -0.0.
+   ICC 10.0 has a bug when optimizing the expression -zero.
+   The expression -DBL_MIN * DBL_MIN does not work when cross-compiling
+   to PowerPC on Mac OS X 10.5.  */
+#if defined __hpux || defined __sgi || defined __ICC
+static double
+compute_minus_zero (void)
+{
+  return -DBL_MIN * DBL_MIN;
+}
+# define minus_zero compute_minus_zero ()
+#else
+double minus_zero = -0.0;
+#endif
+int main()
+{
+  int result = 0;
+  int i;
+  volatile double x;
+  double zero = 0.0;
+#if HAVE_DECL_ALARM
+  /* NeXTstep 3.3 frexp() runs into an endless loop when called on an infinite
+     number.  Let the test fail in this case.  */
+  signal (SIGALRM, SIG_DFL);
+  alarm (5);
+#endif
+  /* Test on denormalized numbers.  */
+  for (i = 1, x = 1.0; i >= DBL_MIN_EXP; i--, x *= 0.5)
+    ;
+  if (x > 0.0)
+    {
+      int exp;
+      double y = frexp (x, &exp);
+      /* On machines with IEEE754 arithmetic: x = 1.11254e-308, exp = -1022.
+         On NetBSD: y = 0.75. Correct: y = 0.5.  */
+      if (y != 0.5)
+        result |= 1;
+    }
+  /* Test on infinite numbers.  */
+  x = 1.0 / zero;
+  {
+    int exp;
+    double y = frexp (x, &exp);
+    if (y != x)
+      result |= 2;
+  }
+  /* Test on negative zero.  */
+  x = minus_zero;
+  {
+    int exp;
+    double y = frexp (x, &exp);
+    if (memcmp (&y, &x, sizeof x))
+      result |= 4;
+  }
+  return result;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_frexp_works=yes
+else
+  gl_cv_func_frexp_works=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_frexp_works" >&5
+$as_echo "$gl_cv_func_frexp_works" >&6; }
+
+    case "$gl_cv_func_frexp_works" in
+      *yes)
+
+$as_echo "#define HAVE_FREXP_IN_LIBC 1" >>confdefs.h
+
+        ;;
+    esac
+  fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ldexp can be used without linking with libm" >&5
+$as_echo_n "checking whether ldexp can be used without linking with libm... " >&6; }
+if ${gl_cv_func_ldexp_no_libm+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+             double x;
+             int y;
+int
+main ()
+{
+return ldexp (x, y) < 1;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_func_ldexp_no_libm=yes
+else
+  gl_cv_func_ldexp_no_libm=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_ldexp_no_libm" >&5
+$as_echo "$gl_cv_func_ldexp_no_libm" >&6; }
+  if test $gl_cv_func_ldexp_no_libm = yes; then
+
+$as_echo "#define HAVE_LDEXP_IN_LIBC 1" >>confdefs.h
+
+  fi
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether frexpl() can be used without linking with libm" >&5
+$as_echo_n "checking whether frexpl() can be used without linking with libm... " >&6; }
+if ${gl_cv_func_frexpl_no_libm+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+             long double x;
+int
+main ()
+{
+int e; return frexpl (x, &e) > 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_func_frexpl_no_libm=yes
+else
+  gl_cv_func_frexpl_no_libm=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_frexpl_no_libm" >&5
+$as_echo "$gl_cv_func_frexpl_no_libm" >&6; }
+
+  if test $gl_cv_func_frexpl_no_libm = yes; then
+
+
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether frexpl works" >&5
+$as_echo_n "checking whether frexpl works... " >&6; }
+if ${gl_cv_func_frexpl_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+      if test "$cross_compiling" = yes; then :
+
+         case "$host_os" in
+           aix | aix[3-6]* | beos* | darwin* | irix* | mingw* | pw*)
+              gl_cv_func_frexpl_works="guessing no";;
+           *) gl_cv_func_frexpl_works="guessing yes";;
+         esac
+
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <float.h>
+#include <math.h>
+/* Override the values of <float.h>, like done in float.in.h.  */
+#if defined __i386__ && (defined __BEOS__ || defined __OpenBSD__)
+# undef LDBL_MIN_EXP
+# define LDBL_MIN_EXP    (-16381)
+#endif
+#if defined __i386__ && (defined __FreeBSD__ || defined __DragonFly__)
+# undef LDBL_MIN_EXP
+# define LDBL_MIN_EXP    (-16381)
+#endif
+#if (defined _ARCH_PPC || defined _POWER) && defined _AIX && (LDBL_MANT_DIG == 106) && defined __GNUC__
+# undef LDBL_MIN_EXP
+# define LDBL_MIN_EXP DBL_MIN_EXP
+#endif
+#if defined __sgi && (LDBL_MANT_DIG >= 106)
+# if defined __GNUC__
+#  undef LDBL_MIN_EXP
+#  define LDBL_MIN_EXP DBL_MIN_EXP
+# endif
+#endif
+extern
+#ifdef __cplusplus
+"C"
+#endif
+long double frexpl (long double, int *);
+int main()
+{
+  int result = 0;
+  volatile long double x;
+  /* Test on finite numbers that fails on AIX 5.1.  */
+  x = 16.0L;
+  {
+    int exp = -9999;
+    frexpl (x, &exp);
+    if (exp != 5)
+      result |= 1;
+  }
+  /* Test on finite numbers that fails on Mac OS X 10.4, because its frexpl
+     function returns an invalid (incorrectly normalized) value: it returns
+               y = { 0x3fe028f5, 0xc28f5c28, 0x3c9eb851, 0xeb851eb8 }
+     but the correct result is
+          0.505L = { 0x3fe028f5, 0xc28f5c29, 0xbc547ae1, 0x47ae1480 }  */
+  x = 1.01L;
+  {
+    int exp = -9999;
+    long double y = frexpl (x, &exp);
+    if (!(exp == 1 && y == 0.505L))
+      result |= 2;
+  }
+  /* Test on large finite numbers.  This fails on BeOS at i = 16322, while
+     LDBL_MAX_EXP = 16384.
+     In the loop end test, we test x against Infinity, rather than comparing
+     i with LDBL_MAX_EXP, because BeOS <float.h> has a wrong LDBL_MAX_EXP.  */
+  {
+    int i;
+    for (i = 1, x = 1.0L; x != x + x; i++, x *= 2.0L)
+      {
+        int exp = -9999;
+        frexpl (x, &exp);
+        if (exp != i)
+          {
+            result |= 4;
+            break;
+          }
+      }
+  }
+  /* Test on denormalized numbers.  */
+  {
+    int i;
+    for (i = 1, x = 1.0L; i >= LDBL_MIN_EXP; i--, x *= 0.5L)
+      ;
+    if (x > 0.0L)
+      {
+        int exp;
+        long double y = frexpl (x, &exp);
+        /* On machines with IEEE854 arithmetic: x = 1.68105e-4932,
+           exp = -16382, y = 0.5.  On Mac OS X 10.5: exp = -16384, y = 0.5.  */
+        if (exp != LDBL_MIN_EXP - 1)
+          result |= 8;
+      }
+  }
+  /* Test on infinite numbers.  */
+  x = 1.0L / 0.0L;
+  {
+    int exp;
+    long double y = frexpl (x, &exp);
+    if (y != x)
+      result |= 16;
+  }
+  return result;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_frexpl_works=yes
+else
+  gl_cv_func_frexpl_works=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_frexpl_works" >&5
+$as_echo "$gl_cv_func_frexpl_works" >&6; }
+
+    case "$gl_cv_func_frexpl_works" in
+      *yes) gl_func_frexpl_no_libm=yes ;;
+      *)    gl_func_frexpl_no_libm=no; REPLACE_FREXPL=1 ;;
+    esac
+  else
+    gl_func_frexpl_no_libm=no
+        REPLACE_FREXPL=1
+  fi
+  if test $gl_func_frexpl_no_libm = yes; then
+
+$as_echo "#define HAVE_FREXPL_IN_LIBC 1" >>confdefs.h
+
+            ac_fn_c_check_decl "$LINENO" "frexpl" "ac_cv_have_decl_frexpl" "#include <math.h>
+"
+if test "x$ac_cv_have_decl_frexpl" = xyes; then :
+
+else
+  HAVE_DECL_FREXPL=0
+fi
+
+  fi
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ldexpl() can be used without linking with libm" >&5
+$as_echo_n "checking whether ldexpl() can be used without linking with libm... " >&6; }
+if ${gl_cv_func_ldexpl_no_libm+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+             long double x;
+int
+main ()
+{
+return ldexpl (x, -1) > 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_func_ldexpl_no_libm=yes
+else
+  gl_cv_func_ldexpl_no_libm=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_ldexpl_no_libm" >&5
+$as_echo "$gl_cv_func_ldexpl_no_libm" >&6; }
+
+  if test $gl_cv_func_ldexpl_no_libm = yes; then
+
+
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ldexpl works" >&5
+$as_echo_n "checking whether ldexpl works... " >&6; }
+if ${gl_cv_func_ldexpl_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+      if test "$cross_compiling" = yes; then :
+
+         case "$host_os" in
+           aix | aix[3-6]*) gl_cv_func_ldexpl_works="guessing no" ;;
+                            # Guess yes on native Windows.
+           mingw*)          gl_cv_func_ldexpl_works="guessing yes" ;;
+           *)               gl_cv_func_ldexpl_works="guessing yes" ;;
+         esac
+
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <math.h>
+extern
+#ifdef __cplusplus
+"C"
+#endif
+long double ldexpl (long double, int);
+int main()
+{
+  int result = 0;
+  {
+    volatile long double x = 1.0;
+    volatile long double y = ldexpl (x, -1);
+    if (y != 0.5L)
+      result |= 1;
+  }
+  {
+    volatile long double x = 1.73205L;
+    volatile long double y = ldexpl (x, 0);
+    if (y != x)
+      result |= 2;
+  }
+  return result;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_ldexpl_works=yes
+else
+  gl_cv_func_ldexpl_works=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_ldexpl_works" >&5
+$as_echo "$gl_cv_func_ldexpl_works" >&6; }
+
+    case "$gl_cv_func_ldexpl_works" in
+      *yes)
+
+$as_echo "#define HAVE_LDEXPL_IN_LIBC 1" >>confdefs.h
+
+                        ac_fn_c_check_decl "$LINENO" "ldexpl" "ac_cv_have_decl_ldexpl" "#include <math.h>
+"
+if test "x$ac_cv_have_decl_ldexpl" = xyes; then :
+
+else
+  HAVE_DECL_LDEXPL=0
+fi
+
+        ;;
+    esac
+  fi
+
+
+
+
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for signbit macro" >&5
+$as_echo_n "checking for signbit macro... " >&6; }
+if ${gl_cv_func_signbit+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+      if test "$cross_compiling" = yes; then :
+  case "$host_os" in
+                          # Guess yes on glibc systems.
+           *-gnu* | gnu*) gl_cv_func_signbit="guessing yes" ;;
+                          # Guess yes on native Windows.
+           mingw*)        gl_cv_func_signbit="guessing yes" ;;
+                          # If we don't know, assume the worst.
+           *)             gl_cv_func_signbit="guessing no" ;;
+         esac
+
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <math.h>
+/* If signbit is defined as a function, don't use it, since calling it for
+   'float' or 'long double' arguments would involve conversions.
+   If signbit is not declared at all but exists as a library function, don't
+   use it, since the prototype may not match.
+   If signbit is not declared at all but exists as a compiler built-in, don't
+   use it, since it's preferable to use __builtin_signbit* (no warnings,
+   no conversions).  */
+#ifndef signbit
+# error "signbit should be a macro"
+#endif
+#include <string.h>
+
+/* Global variables.
+   Needed because GCC 4 constant-folds __builtin_signbitl (literal)
+   but cannot constant-fold            __builtin_signbitl (variable).  */
+float vf;
+double vd;
+long double vl;
+int main ()
+{
+/* HP cc on HP-UX 10.20 has a bug with the constant expression -0.0.
+   So we use -p0f and -p0d instead.  */
+float p0f = 0.0f;
+float m0f = -p0f;
+double p0d = 0.0;
+double m0d = -p0d;
+/* On HP-UX 10.20, negating 0.0L does not yield -0.0L.
+   So we use another constant expression instead.
+   But that expression does not work on other platforms, such as when
+   cross-compiling to PowerPC on Mac OS X 10.5.  */
+long double p0l = 0.0L;
+#if defined __hpux || defined __sgi
+long double m0l = -LDBL_MIN * LDBL_MIN;
+#else
+long double m0l = -p0l;
+#endif
+  int result = 0;
+  if (signbit (vf)) /* link check */
+    vf++;
+  {
+    float plus_inf = 1.0f / p0f;
+    float minus_inf = -1.0f / p0f;
+    if (!(!signbit (255.0f)
+          && signbit (-255.0f)
+          && !signbit (p0f)
+          && (memcmp (&m0f, &p0f, sizeof (float)) == 0 || signbit (m0f))
+          && !signbit (plus_inf)
+          && signbit (minus_inf)))
+      result |= 1;
+  }
+  if (signbit (vd)) /* link check */
+    vd++;
+  {
+    double plus_inf = 1.0 / p0d;
+    double minus_inf = -1.0 / p0d;
+    if (!(!signbit (255.0)
+          && signbit (-255.0)
+          && !signbit (p0d)
+          && (memcmp (&m0d, &p0d, sizeof (double)) == 0 || signbit (m0d))
+          && !signbit (plus_inf)
+          && signbit (minus_inf)))
+      result |= 2;
+  }
+  if (signbit (vl)) /* link check */
+    vl++;
+  {
+    long double plus_inf = 1.0L / p0l;
+    long double minus_inf = -1.0L / p0l;
+    if (signbit (255.0L))
+      result |= 4;
+    if (!signbit (-255.0L))
+      result |= 4;
+    if (signbit (p0l))
+      result |= 8;
+    if (!(memcmp (&m0l, &p0l, sizeof (long double)) == 0 || signbit (m0l)))
+      result |= 16;
+    if (signbit (plus_inf))
+      result |= 32;
+    if (!signbit (minus_inf))
+      result |= 64;
+  }
+  return result;
+}
+
+
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_signbit=yes
+else
+  gl_cv_func_signbit=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_signbit" >&5
+$as_echo "$gl_cv_func_signbit" >&6; }
+          { $as_echo "$as_me:${as_lineno-$LINENO}: checking for signbit compiler built-ins" >&5
+$as_echo_n "checking for signbit compiler built-ins... " >&6; }
+if ${gl_cv_func_signbit_gcc+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+      if test "$cross_compiling" = yes; then :
+  case "$host_os" in
+                          # Guess yes on glibc systems.
+           *-gnu* | gnu*) gl_cv_func_signbit_gcc="guessing yes" ;;
+                          # Guess yes on mingw, no on MSVC.
+           mingw*)        if test -n "$GCC"; then
+                            gl_cv_func_signbit_gcc="guessing yes"
+                          else
+                            gl_cv_func_signbit_gcc="guessing no"
+                          fi
+                          ;;
+                          # If we don't know, assume the worst.
+           *)             gl_cv_func_signbit_gcc="guessing no" ;;
+         esac
+
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#if __GNUC__ >= 4
+# define signbit(x) \
+   (sizeof (x) == sizeof (long double) ? __builtin_signbitl (x) : \
+    sizeof (x) == sizeof (double) ? __builtin_signbit (x) : \
+    __builtin_signbitf (x))
+#else
+# error "signbit should be three compiler built-ins"
+#endif
+#include <string.h>
+
+/* Global variables.
+   Needed because GCC 4 constant-folds __builtin_signbitl (literal)
+   but cannot constant-fold            __builtin_signbitl (variable).  */
+float vf;
+double vd;
+long double vl;
+int main ()
+{
+/* HP cc on HP-UX 10.20 has a bug with the constant expression -0.0.
+   So we use -p0f and -p0d instead.  */
+float p0f = 0.0f;
+float m0f = -p0f;
+double p0d = 0.0;
+double m0d = -p0d;
+/* On HP-UX 10.20, negating 0.0L does not yield -0.0L.
+   So we use another constant expression instead.
+   But that expression does not work on other platforms, such as when
+   cross-compiling to PowerPC on Mac OS X 10.5.  */
+long double p0l = 0.0L;
+#if defined __hpux || defined __sgi
+long double m0l = -LDBL_MIN * LDBL_MIN;
+#else
+long double m0l = -p0l;
+#endif
+  int result = 0;
+  if (signbit (vf)) /* link check */
+    vf++;
+  {
+    float plus_inf = 1.0f / p0f;
+    float minus_inf = -1.0f / p0f;
+    if (!(!signbit (255.0f)
+          && signbit (-255.0f)
+          && !signbit (p0f)
+          && (memcmp (&m0f, &p0f, sizeof (float)) == 0 || signbit (m0f))
+          && !signbit (plus_inf)
+          && signbit (minus_inf)))
+      result |= 1;
+  }
+  if (signbit (vd)) /* link check */
+    vd++;
+  {
+    double plus_inf = 1.0 / p0d;
+    double minus_inf = -1.0 / p0d;
+    if (!(!signbit (255.0)
+          && signbit (-255.0)
+          && !signbit (p0d)
+          && (memcmp (&m0d, &p0d, sizeof (double)) == 0 || signbit (m0d))
+          && !signbit (plus_inf)
+          && signbit (minus_inf)))
+      result |= 2;
+  }
+  if (signbit (vl)) /* link check */
+    vl++;
+  {
+    long double plus_inf = 1.0L / p0l;
+    long double minus_inf = -1.0L / p0l;
+    if (signbit (255.0L))
+      result |= 4;
+    if (!signbit (-255.0L))
+      result |= 4;
+    if (signbit (p0l))
+      result |= 8;
+    if (!(memcmp (&m0l, &p0l, sizeof (long double)) == 0 || signbit (m0l)))
+      result |= 16;
+    if (signbit (plus_inf))
+      result |= 32;
+    if (!signbit (minus_inf))
+      result |= 64;
+  }
+  return result;
+}
+
+
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_signbit_gcc=yes
+else
+  gl_cv_func_signbit_gcc=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_signbit_gcc" >&5
+$as_echo "$gl_cv_func_signbit_gcc" >&6; }
+      case "$gl_cv_func_signbit_gcc" in
+    *yes)
+      REPLACE_SIGNBIT_USING_GCC=1
+      ;;
+    *)
+      case "$gl_cv_func_signbit" in
+        *yes) ;;
+        *)
+                    REPLACE_SIGNBIT=1
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking where to find the sign bit in a 'float'" >&5
+$as_echo_n "checking where to find the sign bit in a 'float'... " >&6; }
+if ${gl_cv_cc_float_signbit+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+      if test "$cross_compiling" = yes; then :
+
+                              gl_cv_cc_float_signbit="unknown"
+
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <stddef.h>
+#include <stdio.h>
+#define NWORDS \
+  ((sizeof (float) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
+typedef union { float value; unsigned int word[NWORDS]; }
+        memory_float;
+static memory_float plus = { 1.0f };
+static memory_float minus = { -1.0f };
+int main ()
+{
+  size_t j, k, i;
+  unsigned int m;
+  FILE *fp = fopen ("conftest.out", "w");
+  if (fp == NULL)
+    return 1;
+  /* Find the different bit.  */
+  k = 0; m = 0;
+  for (j = 0; j < NWORDS; j++)
+    {
+      unsigned int x = plus.word[j] ^ minus.word[j];
+      if ((x & (x - 1)) || (x && m))
+        {
+          /* More than one bit difference.  */
+          fprintf (fp, "unknown");
+          fclose (fp);
+          return 2;
+        }
+      if (x)
+        {
+          k = j;
+          m = x;
+        }
+    }
+  if (m == 0)
+    {
+      /* No difference.  */
+      fprintf (fp, "unknown");
+      fclose (fp);
+      return 3;
+    }
+  /* Now m = plus.word[k] ^ ~minus.word[k].  */
+  if (plus.word[k] & ~minus.word[k])
+    {
+      /* Oh? The sign bit is set in the positive and cleared in the negative
+         numbers?  */
+      fprintf (fp, "unknown");
+      fclose (fp);
+      return 4;
+    }
+  for (i = 0; ; i++)
+    if ((m >> i) & 1)
+      break;
+  fprintf (fp, "word %d bit %d", (int) k, (int) i);
+  if (fclose (fp) != 0)
+    return 5;
+  return 0;
+}
+
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_cc_float_signbit=`cat conftest.out`
+else
+  gl_cv_cc_float_signbit="unknown"
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+      rm -f conftest.out
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_float_signbit" >&5
+$as_echo "$gl_cv_cc_float_signbit" >&6; }
+  case "$gl_cv_cc_float_signbit" in
+    word*bit*)
+      word=`echo "$gl_cv_cc_float_signbit" | sed -e 's/word //' -e 's/ bit.*//'`
+      bit=`echo "$gl_cv_cc_float_signbit" | sed -e 's/word.*bit //'`
+
+cat >>confdefs.h <<_ACEOF
+#define FLT_SIGNBIT_WORD $word
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define FLT_SIGNBIT_BIT $bit
+_ACEOF
+
+      ;;
+  esac
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking where to find the sign bit in a 'double'" >&5
+$as_echo_n "checking where to find the sign bit in a 'double'... " >&6; }
+if ${gl_cv_cc_double_signbit+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+      if test "$cross_compiling" = yes; then :
+
+                              gl_cv_cc_double_signbit="unknown"
+
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <stddef.h>
+#include <stdio.h>
+#define NWORDS \
+  ((sizeof (double) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
+typedef union { double value; unsigned int word[NWORDS]; }
+        memory_float;
+static memory_float plus = { 1.0 };
+static memory_float minus = { -1.0 };
+int main ()
+{
+  size_t j, k, i;
+  unsigned int m;
+  FILE *fp = fopen ("conftest.out", "w");
+  if (fp == NULL)
+    return 1;
+  /* Find the different bit.  */
+  k = 0; m = 0;
+  for (j = 0; j < NWORDS; j++)
+    {
+      unsigned int x = plus.word[j] ^ minus.word[j];
+      if ((x & (x - 1)) || (x && m))
+        {
+          /* More than one bit difference.  */
+          fprintf (fp, "unknown");
+          fclose (fp);
+          return 2;
+        }
+      if (x)
+        {
+          k = j;
+          m = x;
+        }
+    }
+  if (m == 0)
+    {
+      /* No difference.  */
+      fprintf (fp, "unknown");
+      fclose (fp);
+      return 3;
+    }
+  /* Now m = plus.word[k] ^ ~minus.word[k].  */
+  if (plus.word[k] & ~minus.word[k])
+    {
+      /* Oh? The sign bit is set in the positive and cleared in the negative
+         numbers?  */
+      fprintf (fp, "unknown");
+      fclose (fp);
+      return 4;
+    }
+  for (i = 0; ; i++)
+    if ((m >> i) & 1)
+      break;
+  fprintf (fp, "word %d bit %d", (int) k, (int) i);
+  if (fclose (fp) != 0)
+    return 5;
+  return 0;
+}
+
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_cc_double_signbit=`cat conftest.out`
+else
+  gl_cv_cc_double_signbit="unknown"
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+      rm -f conftest.out
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_double_signbit" >&5
+$as_echo "$gl_cv_cc_double_signbit" >&6; }
+  case "$gl_cv_cc_double_signbit" in
+    word*bit*)
+      word=`echo "$gl_cv_cc_double_signbit" | sed -e 's/word //' -e 's/ bit.*//'`
+      bit=`echo "$gl_cv_cc_double_signbit" | sed -e 's/word.*bit //'`
+
+cat >>confdefs.h <<_ACEOF
+#define DBL_SIGNBIT_WORD $word
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define DBL_SIGNBIT_BIT $bit
+_ACEOF
+
+      ;;
+  esac
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking where to find the sign bit in a 'long double'" >&5
+$as_echo_n "checking where to find the sign bit in a 'long double'... " >&6; }
+if ${gl_cv_cc_long_double_signbit+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+      if test "$cross_compiling" = yes; then :
+
+                              gl_cv_cc_long_double_signbit="unknown"
+
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <stddef.h>
+#include <stdio.h>
+#define NWORDS \
+  ((sizeof (long double) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
+typedef union { long double value; unsigned int word[NWORDS]; }
+        memory_float;
+static memory_float plus = { 1.0L };
+static memory_float minus = { -1.0L };
+int main ()
+{
+  size_t j, k, i;
+  unsigned int m;
+  FILE *fp = fopen ("conftest.out", "w");
+  if (fp == NULL)
+    return 1;
+  /* Find the different bit.  */
+  k = 0; m = 0;
+  for (j = 0; j < NWORDS; j++)
+    {
+      unsigned int x = plus.word[j] ^ minus.word[j];
+      if ((x & (x - 1)) || (x && m))
+        {
+          /* More than one bit difference.  */
+          fprintf (fp, "unknown");
+          fclose (fp);
+          return 2;
+        }
+      if (x)
+        {
+          k = j;
+          m = x;
+        }
+    }
+  if (m == 0)
+    {
+      /* No difference.  */
+      fprintf (fp, "unknown");
+      fclose (fp);
+      return 3;
+    }
+  /* Now m = plus.word[k] ^ ~minus.word[k].  */
+  if (plus.word[k] & ~minus.word[k])
+    {
+      /* Oh? The sign bit is set in the positive and cleared in the negative
+         numbers?  */
+      fprintf (fp, "unknown");
+      fclose (fp);
+      return 4;
+    }
+  for (i = 0; ; i++)
+    if ((m >> i) & 1)
+      break;
+  fprintf (fp, "word %d bit %d", (int) k, (int) i);
+  if (fclose (fp) != 0)
+    return 5;
+  return 0;
+}
+
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_cc_long_double_signbit=`cat conftest.out`
+else
+  gl_cv_cc_long_double_signbit="unknown"
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+      rm -f conftest.out
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_long_double_signbit" >&5
+$as_echo "$gl_cv_cc_long_double_signbit" >&6; }
+  case "$gl_cv_cc_long_double_signbit" in
+    word*bit*)
+      word=`echo "$gl_cv_cc_long_double_signbit" | sed -e 's/word //' -e 's/ bit.*//'`
+      bit=`echo "$gl_cv_cc_long_double_signbit" | sed -e 's/word.*bit //'`
+
+cat >>confdefs.h <<_ACEOF
+#define LDBL_SIGNBIT_WORD $word
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define LDBL_SIGNBIT_BIT $bit
+_ACEOF
+
+      ;;
+  esac
+
+
+          if test "$gl_cv_cc_float_signbit" = unknown; then
+                        ac_fn_c_check_decl "$LINENO" "copysignf" "ac_cv_have_decl_copysignf" "#include <math.h>
+"
+if test "x$ac_cv_have_decl_copysignf" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_COPYSIGNF $ac_have_decl
+_ACEOF
+
+            if test "$ac_cv_have_decl_copysignf" = yes; then
+                            { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether copysignf can be used without linking with libm" >&5
+$as_echo_n "checking whether copysignf can be used without linking with libm... " >&6; }
+if ${gl_cv_func_copysignf_no_libm+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+                  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+                         float x, y;
+int
+main ()
+{
+return copysignf (x, y) < 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_func_copysignf_no_libm=yes
+else
+  gl_cv_func_copysignf_no_libm=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_copysignf_no_libm" >&5
+$as_echo "$gl_cv_func_copysignf_no_libm" >&6; }
+              if test $gl_cv_func_copysignf_no_libm = yes; then
+
+$as_echo "#define HAVE_COPYSIGNF_IN_LIBC 1" >>confdefs.h
+
+              fi
+            fi
+          fi
+          if test "$gl_cv_cc_double_signbit" = unknown; then
+                        ac_fn_c_check_decl "$LINENO" "copysign" "ac_cv_have_decl_copysign" "#include <math.h>
+"
+if test "x$ac_cv_have_decl_copysign" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_COPYSIGN $ac_have_decl
+_ACEOF
+
+            if test "$ac_cv_have_decl_copysign" = yes; then
+                            { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether copysign can be used without linking with libm" >&5
+$as_echo_n "checking whether copysign can be used without linking with libm... " >&6; }
+if ${gl_cv_func_copysign_no_libm+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+                  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+                         double x, y;
+int
+main ()
+{
+return copysign (x, y) < 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_func_copysign_no_libm=yes
+else
+  gl_cv_func_copysign_no_libm=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_copysign_no_libm" >&5
+$as_echo "$gl_cv_func_copysign_no_libm" >&6; }
+              if test $gl_cv_func_copysign_no_libm = yes; then
+
+$as_echo "#define HAVE_COPYSIGN_IN_LIBC 1" >>confdefs.h
+
+              fi
+            fi
+          fi
+          if test "$gl_cv_cc_long_double_signbit" = unknown; then
+                        ac_fn_c_check_decl "$LINENO" "copysignl" "ac_cv_have_decl_copysignl" "#include <math.h>
+"
+if test "x$ac_cv_have_decl_copysignl" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_COPYSIGNL $ac_have_decl
+_ACEOF
+
+            if test "$ac_cv_have_decl_copysignl" = yes; then
+                            { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether copysignl can be used without linking with libm" >&5
+$as_echo_n "checking whether copysignl can be used without linking with libm... " >&6; }
+if ${gl_cv_func_copysignl_no_libm+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+                  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <math.h>
+                         long double x, y;
+int
+main ()
+{
+return copysignl (x, y) < 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_func_copysignl_no_libm=yes
+else
+  gl_cv_func_copysignl_no_libm=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_copysignl_no_libm" >&5
+$as_echo "$gl_cv_func_copysignl_no_libm" >&6; }
+              if test $gl_cv_func_copysignl_no_libm = yes; then
+
+$as_echo "#define HAVE_COPYSIGNL_IN_LIBC 1" >>confdefs.h
+
+              fi
+            fi
+          fi
+          ;;
+      esac
+      ;;
+  esac
+
+  if test $REPLACE_SIGNBIT = 1; then
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS signbitf.$ac_objext"
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS signbitd.$ac_objext"
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS signbitl.$ac_objext"
+
+  fi
+
+
+
+
+
+          GNULIB_SIGNBIT=1
+
+
+
+
+
+$as_echo "#define GNULIB_TEST_SIGNBIT 1" >>confdefs.h
+
+
+
+
+  for ac_header in stdint.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "stdint.h" "ac_cv_header_stdint_h" "$ac_includes_default"
+if test "x$ac_cv_header_stdint_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_STDINT_H 1
+_ACEOF
+
+fi
+
+done
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SIZE_MAX" >&5
+$as_echo_n "checking for SIZE_MAX... " >&6; }
+if ${gl_cv_size_max+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    gl_cv_size_max=
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <limits.h>
+#if HAVE_STDINT_H
+#include <stdint.h>
+#endif
+#ifdef SIZE_MAX
+Found it
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "Found it" >/dev/null 2>&1; then :
+  gl_cv_size_max=yes
+fi
+rm -f conftest*
+
+    if test -z "$gl_cv_size_max"; then
+                        if ac_fn_c_compute_int "$LINENO" "sizeof (size_t) * CHAR_BIT - 1" "size_t_bits_minus_1"        "#include <stddef.h>
+#include <limits.h>"; then :
+
+else
+  size_t_bits_minus_1=
+fi
+
+      if ac_fn_c_compute_int "$LINENO" "sizeof (size_t) <= sizeof (unsigned int)" "fits_in_uint"        "#include <stddef.h>"; then :
+
+else
+  fits_in_uint=
+fi
+
+      if test -n "$size_t_bits_minus_1" && test -n "$fits_in_uint"; then
+        if test $fits_in_uint = 1; then
+                              cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stddef.h>
+                 extern size_t foo;
+                 extern unsigned long foo;
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  fits_in_uint=0
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+        fi
+                                if test $fits_in_uint = 1; then
+          gl_cv_size_max="(((1U << $size_t_bits_minus_1) - 1) * 2 + 1)"
+        else
+          gl_cv_size_max="(((1UL << $size_t_bits_minus_1) - 1) * 2 + 1)"
+        fi
+      else
+                gl_cv_size_max='((size_t)~(size_t)0)'
+      fi
+    fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_size_max" >&5
+$as_echo "$gl_cv_size_max" >&6; }
+  if test "$gl_cv_size_max" != yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define SIZE_MAX $gl_cv_size_max
+_ACEOF
+
+  fi
+
+
+
+
+  gl_cv_func_snprintf_usable=no
+  for ac_func in snprintf
+do :
+  ac_fn_c_check_func "$LINENO" "snprintf" "ac_cv_func_snprintf"
+if test "x$ac_cv_func_snprintf" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SNPRINTF 1
+_ACEOF
+
+fi
+done
+
+  if test $ac_cv_func_snprintf = yes; then
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether snprintf respects a size of 1" >&5
+$as_echo_n "checking whether snprintf respects a size of 1... " >&6; }
+if ${gl_cv_func_snprintf_size1+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+      if test "$cross_compiling" = yes; then :
+  case "$host_os" in
+                   # Guess yes on native Windows.
+           mingw*) gl_cv_func_snprintf_size1="guessing yes" ;;
+           *)      gl_cv_func_snprintf_size1="guessing yes" ;;
+         esac
+
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <stdio.h>
+#if HAVE_SNPRINTF
+# define my_snprintf snprintf
+#else
+# include <stdarg.h>
+static int my_snprintf (char *buf, int size, const char *format, ...)
+{
+  va_list args;
+  int ret;
+  va_start (args, format);
+  ret = vsnprintf (buf, size, format, args);
+  va_end (args);
+  return ret;
+}
+#endif
+int main()
+{
+  static char buf[8] = { 'D', 'E', 'A', 'D', 'B', 'E', 'E', 'F' };
+  my_snprintf (buf, 1, "%d", 12345);
+  return buf[1] != 'E';
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_snprintf_size1=yes
+else
+  gl_cv_func_snprintf_size1=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_snprintf_size1" >&5
+$as_echo "$gl_cv_func_snprintf_size1" >&6; }
+
+    case "$gl_cv_func_snprintf_size1" in
+      *yes)
+
+        case "$gl_cv_func_snprintf_retval_c99" in
+          *yes)
+
+
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether printf supports POSIX/XSI format strings with positions" >&5
+$as_echo_n "checking whether printf supports POSIX/XSI format strings with positions... " >&6; }
+if ${gl_cv_func_printf_positions+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+      if test "$cross_compiling" = yes; then :
+
+         case "$host_os" in
+           netbsd[1-3]* | netbsdelf[1-3]* | netbsdaout[1-3]* | netbsdcoff[1-3]*)
+                         gl_cv_func_printf_positions="guessing no";;
+           beos*)        gl_cv_func_printf_positions="guessing no";;
+                         # Guess no on native Windows.
+           mingw* | pw*) gl_cv_func_printf_positions="guessing no";;
+           *)            gl_cv_func_printf_positions="guessing yes";;
+         esac
+
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <stdio.h>
+#include <string.h>
+/* The string "%2$d %1$d", with dollar characters protected from the shell's
+   dollar expansion (possibly an autoconf bug).  */
+static char format[] = { '%', '2', '$', 'd', ' ', '%', '1', '$', 'd', '\0' };
+static char buf[100];
+int main ()
+{
+  sprintf (buf, format, 33, 55);
+  return (strcmp (buf, "55 33") != 0);
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_printf_positions=yes
+else
+  gl_cv_func_printf_positions=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_printf_positions" >&5
+$as_echo "$gl_cv_func_printf_positions" >&6; }
+
+            case "$gl_cv_func_printf_positions" in
+              *yes)
+                gl_cv_func_snprintf_usable=yes
+                ;;
+            esac
+            ;;
+        esac
+        ;;
+    esac
+  fi
+  if test $gl_cv_func_snprintf_usable = no; then
+
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS snprintf.$ac_objext"
+
+  if test $ac_cv_func_snprintf = yes; then
+    REPLACE_SNPRINTF=1
+  else
+
+    if test $ac_cv_have_decl_snprintf = yes; then
+                        REPLACE_SNPRINTF=1
+    fi
+  fi
+  :
+
+  fi
+
+  if test $ac_cv_have_decl_snprintf = no; then
+    HAVE_DECL_SNPRINTF=0
+  fi
+
+
+
+
+
+
+          GNULIB_SNPRINTF=1
+
+
+
+
+
+$as_echo "#define GNULIB_TEST_SNPRINTF 1" >>confdefs.h
+
+
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define GNULIB_SNPRINTF 1
+_ACEOF
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ssize_t" >&5
+$as_echo_n "checking for ssize_t... " >&6; }
+if ${gt_cv_ssize_t+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/types.h>
+int
+main ()
+{
+int x = sizeof (ssize_t *) + sizeof (ssize_t);
+            return !x;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gt_cv_ssize_t=yes
+else
+  gt_cv_ssize_t=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_ssize_t" >&5
+$as_echo "$gt_cv_ssize_t" >&6; }
+  if test $gt_cv_ssize_t = no; then
+
+$as_echo "#define ssize_t int" >>confdefs.h
+
+  fi
+
+
+
+
+  STDDEF_H=
+
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for good max_align_t" >&5
+$as_echo_n "checking for good max_align_t... " >&6; }
+if ${gl_cv_type_max_align_t+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stddef.h>
+            unsigned int s = sizeof (max_align_t);
+            #if defined __GNUC__ || defined __IBM__ALIGNOF__
+            int check1[2 * (__alignof__ (double) <= __alignof__ (max_align_t)) - 1];
+            int check2[2 * (__alignof__ (long double) <= __alignof__ (max_align_t)) - 1];
+            #endif
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gl_cv_type_max_align_t=yes
+else
+  gl_cv_type_max_align_t=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_type_max_align_t" >&5
+$as_echo "$gl_cv_type_max_align_t" >&6; }
+  if test $gl_cv_type_max_align_t = no; then
+    HAVE_MAX_ALIGN_T=0
+    STDDEF_H=stddef.h
+  fi
+
+  if test $gt_cv_c_wchar_t = no; then
+    HAVE_WCHAR_T=0
+    STDDEF_H=stddef.h
+  fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NULL can be used in arbitrary expressions" >&5
+$as_echo_n "checking whether NULL can be used in arbitrary expressions... " >&6; }
+if ${gl_cv_decl_null_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stddef.h>
+      int test[2 * (sizeof NULL == sizeof (void *)) -1];
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gl_cv_decl_null_works=yes
+else
+  gl_cv_decl_null_works=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_decl_null_works" >&5
+$as_echo "$gl_cv_decl_null_works" >&6; }
+  if test $gl_cv_decl_null_works = no; then
+    REPLACE_NULL=1
+    STDDEF_H=stddef.h
+  fi
+
+
+   if test -n "$STDDEF_H"; then
+  GL_GENERATE_STDDEF_H_TRUE=
+  GL_GENERATE_STDDEF_H_FALSE='#'
+else
+  GL_GENERATE_STDDEF_H_TRUE='#'
+  GL_GENERATE_STDDEF_H_FALSE=
+fi
+
+  if test -n "$STDDEF_H"; then
+
+
+
+
+
+
+
+
+     if test $gl_cv_have_include_next = yes; then
+       gl_cv_next_stddef_h='<'stddef.h'>'
+     else
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <stddef.h>" >&5
+$as_echo_n "checking absolute name of <stddef.h>... " >&6; }
+if ${gl_cv_next_stddef_h+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stddef.h>
+_ACEOF
+                case "$host_os" in
+    aix*) gl_absname_cpp="$ac_cpp -C" ;;
+    *)    gl_absname_cpp="$ac_cpp" ;;
+  esac
+
+  case "$host_os" in
+    mingw*)
+                                          gl_dirsep_regex='[/\\]'
+      ;;
+    *)
+      gl_dirsep_regex='\/'
+      ;;
+  esac
+      gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g'
+  gl_header_literal_regex=`echo 'stddef.h' \
+                           | sed -e "$gl_make_literal_regex_sed"`
+  gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{
+      s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/
+      s|^/[^/]|//&|
+      p
+      q
+    }'
+
+        gl_cv_absolute_stddef_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+  sed -n "$gl_absolute_header_sed"`
+
+           gl_header=$gl_cv_absolute_stddef_h
+           gl_cv_next_stddef_h='"'$gl_header'"'
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_stddef_h" >&5
+$as_echo "$gl_cv_next_stddef_h" >&6; }
+     fi
+     NEXT_STDDEF_H=$gl_cv_next_stddef_h
+
+     if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+       gl_next_as_first_directive='<'stddef.h'>'
+     else
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+       gl_next_as_first_directive=$gl_cv_next_stddef_h
+     fi
+     NEXT_AS_FIRST_DIRECTIVE_STDDEF_H=$gl_next_as_first_directive
+
+
+
+
+  fi
+
+
+
+
+  $as_echo "#define __USE_MINGW_ANSI_STDIO 1" >>confdefs.h
+
+
+
+
+
+
+
+
+
+
+     if test $gl_cv_have_include_next = yes; then
+       gl_cv_next_stdio_h='<'stdio.h'>'
+     else
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <stdio.h>" >&5
+$as_echo_n "checking absolute name of <stdio.h>... " >&6; }
+if ${gl_cv_next_stdio_h+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdio.h>
+_ACEOF
+                case "$host_os" in
+    aix*) gl_absname_cpp="$ac_cpp -C" ;;
+    *)    gl_absname_cpp="$ac_cpp" ;;
+  esac
+
+  case "$host_os" in
+    mingw*)
+                                          gl_dirsep_regex='[/\\]'
+      ;;
+    *)
+      gl_dirsep_regex='\/'
+      ;;
+  esac
+      gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g'
+  gl_header_literal_regex=`echo 'stdio.h' \
+                           | sed -e "$gl_make_literal_regex_sed"`
+  gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{
+      s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/
+      s|^/[^/]|//&|
+      p
+      q
+    }'
+
+        gl_cv_absolute_stdio_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+  sed -n "$gl_absolute_header_sed"`
+
+           gl_header=$gl_cv_absolute_stdio_h
+           gl_cv_next_stdio_h='"'$gl_header'"'
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_stdio_h" >&5
+$as_echo "$gl_cv_next_stdio_h" >&6; }
+     fi
+     NEXT_STDIO_H=$gl_cv_next_stdio_h
+
+     if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+       gl_next_as_first_directive='<'stdio.h'>'
+     else
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+       gl_next_as_first_directive=$gl_cv_next_stdio_h
+     fi
+     NEXT_AS_FIRST_DIRECTIVE_STDIO_H=$gl_next_as_first_directive
+
+
+
+
+
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking which flavor of printf attribute matches inttypes macros" >&5
+$as_echo_n "checking which flavor of printf attribute matches inttypes macros... " >&6; }
+if ${gl_cv_func_printf_attribute_flavor+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+       #define __STDC_FORMAT_MACROS 1
+       #include <stdio.h>
+       #include <inttypes.h>
+       /* For non-mingw systems, compilation will trivially succeed.
+          For mingw, compilation will succeed for older mingw (system
+          printf, "I64d") and fail for newer mingw (gnu printf, "lld"). */
+       #if (defined _WIN32 && ! defined __CYGWIN__) && \
+         (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
+       extern char PRIdMAX_probe[sizeof PRIdMAX == sizeof "I64d" ? 1 : -1];
+       #endif
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gl_cv_func_printf_attribute_flavor=system
+else
+  gl_cv_func_printf_attribute_flavor=gnu
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_printf_attribute_flavor" >&5
+$as_echo "$gl_cv_func_printf_attribute_flavor" >&6; }
+  if test "$gl_cv_func_printf_attribute_flavor" = gnu; then
+
+$as_echo "#define GNULIB_PRINTF_ATTRIBUTE_FLAVOR_GNU 1" >>confdefs.h
+
+  fi
+
+      GNULIB_FSCANF=1
+
+
+cat >>confdefs.h <<_ACEOF
+#define GNULIB_FSCANF 1
+_ACEOF
+
+
+  GNULIB_SCANF=1
+
+
+cat >>confdefs.h <<_ACEOF
+#define GNULIB_SCANF 1
+_ACEOF
+
+
+  GNULIB_FGETC=1
+  GNULIB_GETC=1
+  GNULIB_GETCHAR=1
+  GNULIB_FGETS=1
+  GNULIB_FREAD=1
+
+
+      GNULIB_FPRINTF=1
+  GNULIB_PRINTF=1
+  GNULIB_VFPRINTF=1
+  GNULIB_VPRINTF=1
+  GNULIB_FPUTC=1
+  GNULIB_PUTC=1
+  GNULIB_PUTCHAR=1
+  GNULIB_FPUTS=1
+  GNULIB_PUTS=1
+  GNULIB_FWRITE=1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+      if  { test "$HAVE_LIBUNISTRING" != yes \
+    || {
+
+
+
+            test $LIBUNISTRING_VERSION_MAJOR -lt 0 \
+            || { test $LIBUNISTRING_VERSION_MAJOR -eq 0 \
+                 && { test $LIBUNISTRING_VERSION_MINOR -lt 9 \
+                      || { test $LIBUNISTRING_VERSION_MINOR -eq 9 \
+                           && test $LIBUNISTRING_VERSION_SUBMINOR -lt 4
+                         }
+                    }
+               }
+
+
+
+
+       }
+  }; then
+    LIBUNISTRING_UNITYPES_H='unitypes.h'
+  else
+    LIBUNISTRING_UNITYPES_H=
+  fi
+
+
+
+
+      if  { test "$HAVE_LIBUNISTRING" != yes \
+    || {
+
+
+
+            test $LIBUNISTRING_VERSION_MAJOR -lt 0 \
+            || { test $LIBUNISTRING_VERSION_MAJOR -eq 0 \
+                 && { test $LIBUNISTRING_VERSION_MINOR -lt 9 \
+                      || { test $LIBUNISTRING_VERSION_MINOR -eq 9 \
+                           && test $LIBUNISTRING_VERSION_SUBMINOR -lt 4
+                         }
+                    }
+               }
+
+
+
+
+       }
+  }; then
+    LIBUNISTRING_UNIWIDTH_H='uniwidth.h'
+  else
+    LIBUNISTRING_UNIWIDTH_H=
+  fi
+
+
+
+
+       if  { test "$HAVE_LIBUNISTRING" != yes \
+    || {
+
+
+
+            test $LIBUNISTRING_VERSION_MAJOR -lt 0 \
+            || { test $LIBUNISTRING_VERSION_MAJOR -eq 0 \
+                 && { test $LIBUNISTRING_VERSION_MINOR -lt 9 \
+                      || { test $LIBUNISTRING_VERSION_MINOR -eq 9 \
+                           && test $LIBUNISTRING_VERSION_SUBMINOR -lt 8
+                         }
+                    }
+               }
+
+
+
+
+       }
+  }; then
+  LIBUNISTRING_COMPILE_UNIWIDTH_WIDTH_TRUE=
+  LIBUNISTRING_COMPILE_UNIWIDTH_WIDTH_FALSE='#'
+else
+  LIBUNISTRING_COMPILE_UNIWIDTH_WIDTH_TRUE='#'
+  LIBUNISTRING_COMPILE_UNIWIDTH_WIDTH_FALSE=
+fi
+
+
+
+
+  if test $ac_cv_func_vasnprintf = no; then
+
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS vasnprintf.$ac_objext"
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS printf-args.$ac_objext"
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS printf-parse.$ac_objext"
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS asnprintf.$ac_objext"
+
+  if test $ac_cv_func_vasnprintf = yes; then
+
+$as_echo "#define REPLACE_VASNPRINTF 1" >>confdefs.h
+
+  fi
+
+
+
+
+
+
+
+
+
+
+
+  ac_fn_c_check_type "$LINENO" "ptrdiff_t" "ac_cv_type_ptrdiff_t" "$ac_includes_default"
+if test "x$ac_cv_type_ptrdiff_t" = xyes; then :
+
+else
+
+$as_echo "#define ptrdiff_t long" >>confdefs.h
+
+
+fi
+
+
+
+
+
+
+
+  fi
+
+
+
+  gl_cv_func_vsnprintf_usable=no
+  for ac_func in vsnprintf
+do :
+  ac_fn_c_check_func "$LINENO" "vsnprintf" "ac_cv_func_vsnprintf"
+if test "x$ac_cv_func_vsnprintf" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_VSNPRINTF 1
+_ACEOF
+
+fi
+done
+
+  if test $ac_cv_func_vsnprintf = yes; then
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether snprintf respects a size of 1" >&5
+$as_echo_n "checking whether snprintf respects a size of 1... " >&6; }
+if ${gl_cv_func_snprintf_size1+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+      if test "$cross_compiling" = yes; then :
+  case "$host_os" in
+                   # Guess yes on native Windows.
+           mingw*) gl_cv_func_snprintf_size1="guessing yes" ;;
+           *)      gl_cv_func_snprintf_size1="guessing yes" ;;
+         esac
+
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <stdio.h>
+#if HAVE_SNPRINTF
+# define my_snprintf snprintf
+#else
+# include <stdarg.h>
+static int my_snprintf (char *buf, int size, const char *format, ...)
+{
+  va_list args;
+  int ret;
+  va_start (args, format);
+  ret = vsnprintf (buf, size, format, args);
+  va_end (args);
+  return ret;
+}
+#endif
+int main()
+{
+  static char buf[8] = { 'D', 'E', 'A', 'D', 'B', 'E', 'E', 'F' };
+  my_snprintf (buf, 1, "%d", 12345);
+  return buf[1] != 'E';
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_snprintf_size1=yes
+else
+  gl_cv_func_snprintf_size1=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_snprintf_size1" >&5
+$as_echo "$gl_cv_func_snprintf_size1" >&6; }
+
+    case "$gl_cv_func_snprintf_size1" in
+      *yes)
+
+        case "$gl_cv_func_snprintf_retval_c99" in
+          *yes)
+
+
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether printf supports POSIX/XSI format strings with positions" >&5
+$as_echo_n "checking whether printf supports POSIX/XSI format strings with positions... " >&6; }
+if ${gl_cv_func_printf_positions+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+      if test "$cross_compiling" = yes; then :
+
+         case "$host_os" in
+           netbsd[1-3]* | netbsdelf[1-3]* | netbsdaout[1-3]* | netbsdcoff[1-3]*)
+                         gl_cv_func_printf_positions="guessing no";;
+           beos*)        gl_cv_func_printf_positions="guessing no";;
+                         # Guess no on native Windows.
+           mingw* | pw*) gl_cv_func_printf_positions="guessing no";;
+           *)            gl_cv_func_printf_positions="guessing yes";;
+         esac
+
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <stdio.h>
+#include <string.h>
+/* The string "%2$d %1$d", with dollar characters protected from the shell's
+   dollar expansion (possibly an autoconf bug).  */
+static char format[] = { '%', '2', '$', 'd', ' ', '%', '1', '$', 'd', '\0' };
+static char buf[100];
+int main ()
+{
+  sprintf (buf, format, 33, 55);
+  return (strcmp (buf, "55 33") != 0);
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_printf_positions=yes
+else
+  gl_cv_func_printf_positions=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_printf_positions" >&5
+$as_echo "$gl_cv_func_printf_positions" >&6; }
+
+            case "$gl_cv_func_printf_positions" in
+              *yes)
+                gl_cv_func_vsnprintf_usable=yes
+                ;;
+            esac
+            ;;
+        esac
+        ;;
+    esac
+  fi
+  if test $gl_cv_func_vsnprintf_usable = no; then
+
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS vsnprintf.$ac_objext"
+
+  if test $ac_cv_func_vsnprintf = yes; then
+    REPLACE_VSNPRINTF=1
+  else
+
+    if test $ac_cv_have_decl_vsnprintf = yes; then
+                        REPLACE_VSNPRINTF=1
+    fi
+  fi
+  :
+
+  fi
+
+  if test $ac_cv_have_decl_vsnprintf = no; then
+    HAVE_DECL_VSNPRINTF=0
+  fi
+
+
+
+
+
+
+          GNULIB_VSNPRINTF=1
+
+
+
+
+
+$as_echo "#define GNULIB_TEST_VSNPRINTF 1" >>confdefs.h
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+     if test $gl_cv_have_include_next = yes; then
+       gl_cv_next_wchar_h='<'wchar.h'>'
+     else
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <wchar.h>" >&5
+$as_echo_n "checking absolute name of <wchar.h>... " >&6; }
+if ${gl_cv_next_wchar_h+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+             if test $ac_cv_header_wchar_h = yes; then
+
+
+
+
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <wchar.h>
+_ACEOF
+                case "$host_os" in
+    aix*) gl_absname_cpp="$ac_cpp -C" ;;
+    *)    gl_absname_cpp="$ac_cpp" ;;
+  esac
+
+  case "$host_os" in
+    mingw*)
+                                          gl_dirsep_regex='[/\\]'
+      ;;
+    *)
+      gl_dirsep_regex='\/'
+      ;;
+  esac
+      gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g'
+  gl_header_literal_regex=`echo 'wchar.h' \
+                           | sed -e "$gl_make_literal_regex_sed"`
+  gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{
+      s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/
+      s|^/[^/]|//&|
+      p
+      q
+    }'
+
+        gl_cv_absolute_wchar_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+  sed -n "$gl_absolute_header_sed"`
+
+           gl_header=$gl_cv_absolute_wchar_h
+           gl_cv_next_wchar_h='"'$gl_header'"'
+          else
+               gl_cv_next_wchar_h='<'wchar.h'>'
+             fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_wchar_h" >&5
+$as_echo "$gl_cv_next_wchar_h" >&6; }
+     fi
+     NEXT_WCHAR_H=$gl_cv_next_wchar_h
+
+     if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+       gl_next_as_first_directive='<'wchar.h'>'
+     else
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+       gl_next_as_first_directive=$gl_cv_next_wchar_h
+     fi
+     NEXT_AS_FIRST_DIRECTIVE_WCHAR_H=$gl_next_as_first_directive
+
+
+
+
+  if test $ac_cv_header_wchar_h = yes; then
+    HAVE_WCHAR_H=1
+  else
+    HAVE_WCHAR_H=0
+  fi
+
+
+
+
+
+  if test $gt_cv_c_wint_t = yes; then
+    HAVE_WINT_T=1
+  else
+    HAVE_WINT_T=0
+  fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+  if test $ac_cv_func_iswcntrl = yes; then
+    HAVE_ISWCNTRL=1
+  else
+    HAVE_ISWCNTRL=0
+  fi
+
+
+
+  if test $gt_cv_c_wint_t = yes; then
+    HAVE_WINT_T=1
+  else
+    HAVE_WINT_T=0
+  fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+     if test $gl_cv_have_include_next = yes; then
+       gl_cv_next_wctype_h='<'wctype.h'>'
+     else
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <wctype.h>" >&5
+$as_echo_n "checking absolute name of <wctype.h>... " >&6; }
+if ${gl_cv_next_wctype_h+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+             if test $ac_cv_header_wctype_h = yes; then
+
+
+
+
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <wctype.h>
+_ACEOF
+                case "$host_os" in
+    aix*) gl_absname_cpp="$ac_cpp -C" ;;
+    *)    gl_absname_cpp="$ac_cpp" ;;
+  esac
+
+  case "$host_os" in
+    mingw*)
+                                          gl_dirsep_regex='[/\\]'
+      ;;
+    *)
+      gl_dirsep_regex='\/'
+      ;;
+  esac
+      gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g'
+  gl_header_literal_regex=`echo 'wctype.h' \
+                           | sed -e "$gl_make_literal_regex_sed"`
+  gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{
+      s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/
+      s|^/[^/]|//&|
+      p
+      q
+    }'
+
+        gl_cv_absolute_wctype_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+  sed -n "$gl_absolute_header_sed"`
+
+           gl_header=$gl_cv_absolute_wctype_h
+           gl_cv_next_wctype_h='"'$gl_header'"'
+          else
+               gl_cv_next_wctype_h='<'wctype.h'>'
+             fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_wctype_h" >&5
+$as_echo "$gl_cv_next_wctype_h" >&6; }
+     fi
+     NEXT_WCTYPE_H=$gl_cv_next_wctype_h
+
+     if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+       gl_next_as_first_directive='<'wctype.h'>'
+     else
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+       gl_next_as_first_directive=$gl_cv_next_wctype_h
+     fi
+     NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H=$gl_next_as_first_directive
+
+
+
+
+  if test $ac_cv_header_wctype_h = yes; then
+    if test $ac_cv_func_iswcntrl = yes; then
+                  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether iswcntrl works" >&5
+$as_echo_n "checking whether iswcntrl works... " >&6; }
+if ${gl_cv_func_iswcntrl_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+          if test "$cross_compiling" = yes; then :
+               cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+                          #if __GNU_LIBRARY__ == 1
+                          Linux libc5 i18n is broken.
+                          #endif
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gl_cv_func_iswcntrl_works="guessing yes"
+else
+  gl_cv_func_iswcntrl_works="guessing no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+               /* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be
+                  included before <wchar.h>.
+                  BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h>
+                  must be included before <wchar.h>.  */
+               #include <stddef.h>
+               #include <stdio.h>
+               #include <time.h>
+               #include <wchar.h>
+               #include <wctype.h>
+               int main () { return iswprint ('x') == 0; }
+
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_iswcntrl_works=yes
+else
+  gl_cv_func_iswcntrl_works=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_iswcntrl_works" >&5
+$as_echo "$gl_cv_func_iswcntrl_works" >&6; }
+    fi
+    HAVE_WCTYPE_H=1
+  else
+    HAVE_WCTYPE_H=0
+  fi
+
+
+  case "$gl_cv_func_iswcntrl_works" in
+    *yes) REPLACE_ISWCNTRL=0 ;;
+    *)    REPLACE_ISWCNTRL=1 ;;
+  esac
+
+
+  if test $HAVE_ISWCNTRL = 0 || test $REPLACE_ISWCNTRL = 1; then
+        :
+  fi
+
+  if test $REPLACE_ISWCNTRL = 1; then
+    REPLACE_TOWLOWER=1
+  else
+    for ac_func in towlower
+do :
+  ac_fn_c_check_func "$LINENO" "towlower" "ac_cv_func_towlower"
+if test "x$ac_cv_func_towlower" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_TOWLOWER 1
+_ACEOF
+
+fi
+done
+
+    if test $ac_cv_func_towlower = yes; then
+      REPLACE_TOWLOWER=0
+    else
+      ac_fn_c_check_decl "$LINENO" "towlower" "ac_cv_have_decl_towlower" "/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be
+             included before <wchar.h>.
+             BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h>
+             must be included before <wchar.h>.  */
+          #include <stddef.h>
+          #include <stdio.h>
+          #include <time.h>
+          #include <wchar.h>
+          #if HAVE_WCTYPE_H
+          # include <wctype.h>
+          #endif
+
+"
+if test "x$ac_cv_have_decl_towlower" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_TOWLOWER $ac_have_decl
+_ACEOF
+
+      if test $ac_cv_have_decl_towlower = yes; then
+                                REPLACE_TOWLOWER=1
+      else
+        REPLACE_TOWLOWER=0
+      fi
+    fi
+  fi
+
+
+  if test $HAVE_ISWCNTRL = 0 || test $REPLACE_TOWLOWER = 1; then
+        :
+  fi
+
+          { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wctype_t" >&5
+$as_echo_n "checking for wctype_t... " >&6; }
+if ${gl_cv_type_wctype_t+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be
+               included before <wchar.h>.
+               BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h>
+               must be included before <wchar.h>.  */
+            #include <stddef.h>
+            #include <stdio.h>
+            #include <time.h>
+            #include <wchar.h>
+            #if HAVE_WCTYPE_H
+            # include <wctype.h>
+            #endif
+            wctype_t a;
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gl_cv_type_wctype_t=yes
+else
+  gl_cv_type_wctype_t=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_type_wctype_t" >&5
+$as_echo "$gl_cv_type_wctype_t" >&6; }
+  if test $gl_cv_type_wctype_t = no; then
+    HAVE_WCTYPE_T=0
+  fi
+
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wctrans_t" >&5
+$as_echo_n "checking for wctrans_t... " >&6; }
+if ${gl_cv_type_wctrans_t+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be
+               included before <wchar.h>.
+               BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h>
+               must be included before <wchar.h>.  */
+            #include <stddef.h>
+            #include <stdio.h>
+            #include <time.h>
+            #include <wchar.h>
+            #include <wctype.h>
+            wctrans_t a;
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gl_cv_type_wctrans_t=yes
+else
+  gl_cv_type_wctrans_t=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_type_wctrans_t" >&5
+$as_echo "$gl_cv_type_wctrans_t" >&6; }
+  if test $gl_cv_type_wctrans_t = no; then
+    HAVE_WCTRANS_T=0
+  fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+  ac_fn_c_check_decl "$LINENO" "wcwidth" "ac_cv_have_decl_wcwidth" "
+/* AIX 3.2.5 declares wcwidth in <string.h>. */
+#include <string.h>
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+   <wchar.h>.
+   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included
+   before <wchar.h>.  */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+
+"
+if test "x$ac_cv_have_decl_wcwidth" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_WCWIDTH $ac_have_decl
+_ACEOF
+
+  if test $ac_cv_have_decl_wcwidth != yes; then
+    HAVE_DECL_WCWIDTH=0
+  fi
+
+  if test $ac_cv_func_wcwidth != yes; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether wcwidth is a macro" >&5
+$as_echo_n "checking whether wcwidth is a macro... " >&6; }
+if ${gl_cv_func_wcwidth_macro+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <wchar.h>
+#ifdef wcwidth
+ wchar_header_defines_wcwidth
+#endif
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "wchar_header_defines_wcwidth" >/dev/null 2>&1; then :
+  gl_cv_func_wcwidth_macro=yes
+else
+  gl_cv_func_wcwidth_macro=no
+fi
+rm -f conftest*
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_wcwidth_macro" >&5
+$as_echo "$gl_cv_func_wcwidth_macro" >&6; }
+  fi
+
+  if test $ac_cv_func_wcwidth = yes || test $gl_cv_func_wcwidth_macro = yes; then
+    HAVE_WCWIDTH=1
+                        { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether wcwidth works reasonably in UTF-8 locales" >&5
+$as_echo_n "checking whether wcwidth works reasonably in UTF-8 locales... " >&6; }
+if ${gl_cv_func_wcwidth_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+        if test "$cross_compiling" = yes; then :
+
+           case "$host_os" in
+                                        # Guess yes on glibc and AIX 7 systems.
+             *-gnu* | gnu* | aix[7-9]*) gl_cv_func_wcwidth_works="guessing yes";;
+             *)                         gl_cv_func_wcwidth_works="guessing no";;
+           esac
+
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <locale.h>
+/* AIX 3.2.5 declares wcwidth in <string.h>. */
+#include <string.h>
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+   <wchar.h>.
+   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included
+   before <wchar.h>.  */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+#if !HAVE_DECL_WCWIDTH
+extern
+# ifdef __cplusplus
+"C"
+# endif
+int wcwidth (int);
+#endif
+int main ()
+{
+  int result = 0;
+  if (setlocale (LC_ALL, "fr_FR.UTF-8") != NULL)
+    {
+      if (wcwidth (0x0301) > 0)
+        result |= 1;
+      if (wcwidth (0x05B0) > 0)
+        result |= 2;
+      if (wcwidth (0x200B) > 0)
+        result |= 4;
+      if (wcwidth (0xFF1A) == 0)
+        result |= 8;
+    }
+  return result;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_wcwidth_works=yes
+else
+  gl_cv_func_wcwidth_works=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_wcwidth_works" >&5
+$as_echo "$gl_cv_func_wcwidth_works" >&6; }
+    case "$gl_cv_func_wcwidth_works" in
+      *yes) ;;
+      *no) REPLACE_WCWIDTH=1 ;;
+    esac
+  else
+    HAVE_WCWIDTH=0
+  fi
+
+  if test $HAVE_WCWIDTH = 0 || test $REPLACE_WCWIDTH = 1; then
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS wcwidth.$ac_objext"
+
+
+
+  :
+
+  fi
+
+
+
+
+
+          GNULIB_WCWIDTH=1
+
+
+
+
+
+$as_echo "#define GNULIB_TEST_WCWIDTH 1" >>confdefs.h
+
+
+
+
+
+  for ac_header in stdint.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "stdint.h" "ac_cv_header_stdint_h" "$ac_includes_default"
+if test "x$ac_cv_header_stdint_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_STDINT_H 1
+_ACEOF
+
+fi
+
+done
+
+
+  # End of code from modules
+
+
+
+
+
+
+
+
+
+  gltests_libdeps=
+  gltests_ltlibdeps=
+
+
+
+
+
+
+
+
+
+  gl_source_base='tests'
+  gltests_WITNESS=IN_`echo "${PACKAGE-$PACKAGE_TARNAME}" | LC_ALL=C tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ | LC_ALL=C sed -e 's/[^A-Z0-9_]/_/g'`_GNULIB_TESTS
+
+  gl_module_indicator_condition=$gltests_WITNESS
+
+
+
+
+
+
+
+
+
+  LIBGNU_LIBDEPS="$gl_libdeps"
+
+  LIBGNU_LTLIBDEPS="$gl_ltlibdeps"
+
+
+
+
+   ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+   if test "$cross_compiling" = no; then
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking that C++ compiler can compile simple program" >&5
+$as_echo_n "checking that C++ compiler can compile simple program... " >&6; }
+   fi
+   if test "$cross_compiling" = yes; then :
+  :
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+
+int main() {
+  return 0;
+}
+
+
+
+_ACEOF
+if ac_fn_cxx_try_run "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+      as_fn_error $? "a working C++ compiler is required" "$LINENO" 5
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+
+   if test "$cross_compiling" = no; then
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking that C++ static constructors and destructors are called" >&5
+$as_echo_n "checking that C++ static constructors and destructors are called... " >&6; }
+   fi
+   if test "$cross_compiling" = yes; then :
+  :
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+
+extern "C" {
+  void _exit(int);
+}
+
+int i;
+struct A {
+  char dummy;
+  A() { i = 1; }
+  ~A() { if (i == 1) _exit(0); }
+};
+
+A a;
+
+int main()
+{
+  return 1;
+}
+
+
+
+_ACEOF
+if ac_fn_cxx_try_run "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+      as_fn_error $? "a working C++ compiler is required" "$LINENO" 5
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+
+   { $as_echo "$as_me:${as_lineno-$LINENO}: checking that header files support C++" >&5
+$as_echo_n "checking that header files support C++... " >&6; }
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+
+#include <stdio.h>
+
+
+int
+main ()
+{
+
+
+fopen(0, 0);
+
+
+  ;
+  return 0;
+}
+
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+      as_fn_error $? "header files do not support C++
+                  (if you are using a version of gcc/g++ earlier than 2.5,
+                  you should install libg++)" "$LINENO" 5
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+   ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether character set is EBCDIC" >&5
+$as_echo_n "checking whether character set is EBCDIC... " >&6; }
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+
+/* Treat any failure as ASCII for compatibility with existing art.
+   Use compile-time rather than run-time tests for cross-compiler
+   tolerance. */
+#if '0' != 240
+make an error "Character set is not EBCDIC"
+#endif
+
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  groff_cv_ebcdic="yes"
+      TTYDEVDIRS="font/devcp1047"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+$as_echo "#define IS_EBCDIC_HOST 1" >>confdefs.h
+
+else
+  groff_cv_ebcdic="no"
+     TTYDEVDIRS="font/devascii font/devlatin1"
+     OTHERDEVDIRS="font/devlj4 font/devlbp"
+     { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+
+if test "$groff_cv_ebcdic" = "yes"; then
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for OS/390 Unix" >&5
+$as_echo_n "checking for OS/390 Unix... " >&6; }
+     case `uname` in
+     OS/390)
+       CFLAGS="$CFLAGS -D_ALL_SOURCE"
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; } ;;
+     *)
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; } ;;
+     esac
+   fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to install .cmd wrapper scripts for Windows" >&5
+$as_echo_n "checking whether to install .cmd wrapper scripts for Windows... " >&6; }
+   case "$host_os" in
+   *mingw*)
+     make_winscripts=winscripts
+     { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; } ;;
+   *)
+     make_winscripts=
+     { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; } ;;
+   esac
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for X" >&5
+$as_echo_n "checking for X... " >&6; }
+
+
+# Check whether --with-x was given.
+if test "${with_x+set}" = set; then :
+  withval=$with_x;
+fi
+
+# $have_x is `yes', `no', `disabled', or empty when we do not yet know.
+if test "x$with_x" = xno; then
+  # The user explicitly disabled X.
+  have_x=disabled
+else
+  case $x_includes,$x_libraries in #(
+    *\'*) as_fn_error $? "cannot use X directory names containing '" "$LINENO" 5;; #(
+    *,NONE | NONE,*) if ${ac_cv_have_x+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  # One or both of the vars are not set, and there is no cached value.
+ac_x_includes=no ac_x_libraries=no
+rm -f -r conftest.dir
+if mkdir conftest.dir; then
+  cd conftest.dir
+  cat >Imakefile <<'_ACEOF'
+incroot:
+       @echo incroot='${INCROOT}'
+usrlibdir:
+       @echo usrlibdir='${USRLIBDIR}'
+libdir:
+       @echo libdir='${LIBDIR}'
+_ACEOF
+  if (export CC; ${XMKMF-xmkmf}) >/dev/null 2>/dev/null && test -f Makefile; then
+    # GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
+    for ac_var in incroot usrlibdir libdir; do
+      eval "ac_im_$ac_var=\`\${MAKE-make} $ac_var 2>/dev/null | sed -n 's/^$ac_var=//p'\`"
+    done
+    # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR.
+    for ac_extension in a so sl dylib la dll; do
+      if test ! -f "$ac_im_usrlibdir/libX11.$ac_extension" &&
+        test -f "$ac_im_libdir/libX11.$ac_extension"; then
+       ac_im_usrlibdir=$ac_im_libdir; break
+      fi
+    done
+    # Screen out bogus values from the imake configuration.  They are
+    # bogus both because they are the default anyway, and because
+    # using them would break gcc on systems where it needs fixed includes.
+    case $ac_im_incroot in
+       /usr/include) ac_x_includes= ;;
+       *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;;
+    esac
+    case $ac_im_usrlibdir in
+       /usr/lib | /usr/lib64 | /lib | /lib64) ;;
+       *) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;;
+    esac
+  fi
+  cd ..
+  rm -f -r conftest.dir
+fi
+
+# Standard set of common directories for X headers.
+# Check X11 before X11Rn because it is often a symlink to the current release.
+ac_x_header_dirs='
+/usr/X11/include
+/usr/X11R7/include
+/usr/X11R6/include
+/usr/X11R5/include
+/usr/X11R4/include
+
+/usr/include/X11
+/usr/include/X11R7
+/usr/include/X11R6
+/usr/include/X11R5
+/usr/include/X11R4
+
+/usr/local/X11/include
+/usr/local/X11R7/include
+/usr/local/X11R6/include
+/usr/local/X11R5/include
+/usr/local/X11R4/include
+
+/usr/local/include/X11
+/usr/local/include/X11R7
+/usr/local/include/X11R6
+/usr/local/include/X11R5
+/usr/local/include/X11R4
+
+/usr/X386/include
+/usr/x386/include
+/usr/XFree86/include/X11
+
+/usr/include
+/usr/local/include
+/usr/unsupported/include
+/usr/athena/include
+/usr/local/x11r5/include
+/usr/lpp/Xamples/include
+
+/usr/openwin/include
+/usr/openwin/share/include'
+
+if test "$ac_x_includes" = no; then
+  # Guess where to find include files, by looking for Xlib.h.
+  # First, try using that file with no special directory specified.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <X11/Xlib.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  # We can compile using X headers with no special include directory.
+ac_x_includes=
+else
+  for ac_dir in $ac_x_header_dirs; do
+  if test -r "$ac_dir/X11/Xlib.h"; then
+    ac_x_includes=$ac_dir
+    break
+  fi
+done
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+fi # $ac_x_includes = no
+
+if test "$ac_x_libraries" = no; then
+  # Check for the libraries.
+  # See if we find them without any special options.
+  # Don't add to $LIBS permanently.
+  ac_save_LIBS=$LIBS
+  LIBS="-lX11 $LIBS"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <X11/Xlib.h>
+int
+main ()
+{
+XrmInitialize ()
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  LIBS=$ac_save_LIBS
+# We can link X programs with no special library path.
+ac_x_libraries=
+else
+  LIBS=$ac_save_LIBS
+for ac_dir in `$as_echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g`
+do
+  # Don't even attempt the hair of trying to link an X program!
+  for ac_extension in a so sl dylib la dll; do
+    if test -r "$ac_dir/libX11.$ac_extension"; then
+      ac_x_libraries=$ac_dir
+      break 2
+    fi
+  done
+done
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi # $ac_x_libraries = no
+
+case $ac_x_includes,$ac_x_libraries in #(
+  no,* | *,no | *\'*)
+    # Didn't find X, or a directory has "'" in its name.
+    ac_cv_have_x="have_x=no";; #(
+  *)
+    # Record where we found X for the cache.
+    ac_cv_have_x="have_x=yes\
+       ac_x_includes='$ac_x_includes'\
+       ac_x_libraries='$ac_x_libraries'"
+esac
+fi
+;; #(
+    *) have_x=yes;;
+  esac
+  eval "$ac_cv_have_x"
+fi # $with_x != no
+
+if test "$have_x" != yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_x" >&5
+$as_echo "$have_x" >&6; }
+  no_x=yes
+else
+  # If each of the values was on the command line, it overrides each guess.
+  test "x$x_includes" = xNONE && x_includes=$ac_x_includes
+  test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries
+  # Update the cache value to reflect the command line values.
+  ac_cv_have_x="have_x=yes\
+       ac_x_includes='$x_includes'\
+       ac_x_libraries='$x_libraries'"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: libraries $x_libraries, headers $x_includes" >&5
+$as_echo "libraries $x_libraries, headers $x_includes" >&6; }
+fi
+
+if test "$no_x" = yes; then
+  # Not all programs may use this symbol, but it does not hurt to define it.
+
+$as_echo "#define X_DISPLAY_MISSING 1" >>confdefs.h
+
+  X_CFLAGS= X_PRE_LIBS= X_LIBS= X_EXTRA_LIBS=
+else
+  if test -n "$x_includes"; then
+    X_CFLAGS="$X_CFLAGS -I$x_includes"
+  fi
+
+  # It would also be nice to do this for all -L options, not just this one.
+  if test -n "$x_libraries"; then
+    X_LIBS="$X_LIBS -L$x_libraries"
+    # For Solaris; some versions of Sun CC require a space after -R and
+    # others require no space.  Words are not sufficient . . . .
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -R must be followed by a space" >&5
+$as_echo_n "checking whether -R must be followed by a space... " >&6; }
+    ac_xsave_LIBS=$LIBS; LIBS="$LIBS -R$x_libraries"
+    ac_xsave_c_werror_flag=$ac_c_werror_flag
+    ac_c_werror_flag=yes
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+       X_LIBS="$X_LIBS -R$x_libraries"
+else
+  LIBS="$ac_xsave_LIBS -R $x_libraries"
+       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+         X_LIBS="$X_LIBS -R $x_libraries"
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: neither works" >&5
+$as_echo "neither works" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    ac_c_werror_flag=$ac_xsave_c_werror_flag
+    LIBS=$ac_xsave_LIBS
+  fi
+
+  # Check for system-dependent libraries X programs must link with.
+  # Do this before checking for the system-independent R6 libraries
+  # (-lICE), since we may need -lsocket or whatever for X linking.
+
+  if test "$ISC" = yes; then
+    X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl_s -linet"
+  else
+    # Martyn Johnson says this is needed for Ultrix, if the X
+    # libraries were built with DECnet support.  And Karl Berry says
+    # the Alpha needs dnet_stub (dnet does not exist).
+    ac_xsave_LIBS="$LIBS"; LIBS="$LIBS $X_LIBS -lX11"
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char XOpenDisplay ();
+int
+main ()
+{
+return XOpenDisplay ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dnet_ntoa in -ldnet" >&5
+$as_echo_n "checking for dnet_ntoa in -ldnet... " >&6; }
+if ${ac_cv_lib_dnet_dnet_ntoa+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldnet  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dnet_ntoa ();
+int
+main ()
+{
+return dnet_ntoa ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dnet_dnet_ntoa=yes
+else
+  ac_cv_lib_dnet_dnet_ntoa=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dnet_dnet_ntoa" >&5
+$as_echo "$ac_cv_lib_dnet_dnet_ntoa" >&6; }
+if test "x$ac_cv_lib_dnet_dnet_ntoa" = xyes; then :
+  X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet"
+fi
+
+    if test $ac_cv_lib_dnet_dnet_ntoa = no; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dnet_ntoa in -ldnet_stub" >&5
+$as_echo_n "checking for dnet_ntoa in -ldnet_stub... " >&6; }
+if ${ac_cv_lib_dnet_stub_dnet_ntoa+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldnet_stub  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dnet_ntoa ();
+int
+main ()
+{
+return dnet_ntoa ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dnet_stub_dnet_ntoa=yes
+else
+  ac_cv_lib_dnet_stub_dnet_ntoa=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5
+$as_echo "$ac_cv_lib_dnet_stub_dnet_ntoa" >&6; }
+if test "x$ac_cv_lib_dnet_stub_dnet_ntoa" = xyes; then :
+  X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub"
+fi
+
+    fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    LIBS="$ac_xsave_LIBS"
+
+    # msh@cis.ufl.edu says -lnsl (and -lsocket) are needed for his 386/AT,
+    # to get the SysV transport functions.
+    # Chad R. Larson says the Pyramis MIS-ES running DC/OSx (SVR4)
+    # needs -lnsl.
+    # The nsl library prevents programs from opening the X display
+    # on Irix 5.2, according to T.E. Dickey.
+    # The functions gethostbyname, getservbyname, and inet_addr are
+    # in -lbsd on LynxOS 3.0.1/i386, according to Lars Hecking.
+    ac_fn_c_check_func "$LINENO" "gethostbyname" "ac_cv_func_gethostbyname"
+if test "x$ac_cv_func_gethostbyname" = xyes; then :
+
+fi
+
+    if test $ac_cv_func_gethostbyname = no; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lnsl" >&5
+$as_echo_n "checking for gethostbyname in -lnsl... " >&6; }
+if ${ac_cv_lib_nsl_gethostbyname+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lnsl  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char gethostbyname ();
+int
+main ()
+{
+return gethostbyname ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_nsl_gethostbyname=yes
+else
+  ac_cv_lib_nsl_gethostbyname=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostbyname" >&5
+$as_echo "$ac_cv_lib_nsl_gethostbyname" >&6; }
+if test "x$ac_cv_lib_nsl_gethostbyname" = xyes; then :
+  X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl"
+fi
+
+      if test $ac_cv_lib_nsl_gethostbyname = no; then
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lbsd" >&5
+$as_echo_n "checking for gethostbyname in -lbsd... " >&6; }
+if ${ac_cv_lib_bsd_gethostbyname+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lbsd  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char gethostbyname ();
+int
+main ()
+{
+return gethostbyname ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_bsd_gethostbyname=yes
+else
+  ac_cv_lib_bsd_gethostbyname=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsd_gethostbyname" >&5
+$as_echo "$ac_cv_lib_bsd_gethostbyname" >&6; }
+if test "x$ac_cv_lib_bsd_gethostbyname" = xyes; then :
+  X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd"
+fi
+
+      fi
+    fi
+
+    # lieder@skyler.mavd.honeywell.com says without -lsocket,
+    # socket/setsockopt and other routines are undefined under SCO ODT
+    # 2.0.  But -lsocket is broken on IRIX 5.2 (and is not necessary
+    # on later versions), says Simon Leinen: it contains gethostby*
+    # variants that don't use the name server (or something).  -lsocket
+    # must be given before -lnsl if both are needed.  We assume that
+    # if connect needs -lnsl, so does gethostbyname.
+    ac_fn_c_check_func "$LINENO" "connect" "ac_cv_func_connect"
+if test "x$ac_cv_func_connect" = xyes; then :
+
+fi
+
+    if test $ac_cv_func_connect = no; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for connect in -lsocket" >&5
+$as_echo_n "checking for connect in -lsocket... " >&6; }
+if ${ac_cv_lib_socket_connect+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsocket $X_EXTRA_LIBS $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char connect ();
+int
+main ()
+{
+return connect ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_socket_connect=yes
+else
+  ac_cv_lib_socket_connect=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_connect" >&5
+$as_echo "$ac_cv_lib_socket_connect" >&6; }
+if test "x$ac_cv_lib_socket_connect" = xyes; then :
+  X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS"
+fi
+
+    fi
+
+    # Guillermo Gomez says -lposix is necessary on A/UX.
+    ac_fn_c_check_func "$LINENO" "remove" "ac_cv_func_remove"
+if test "x$ac_cv_func_remove" = xyes; then :
+
+fi
+
+    if test $ac_cv_func_remove = no; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for remove in -lposix" >&5
+$as_echo_n "checking for remove in -lposix... " >&6; }
+if ${ac_cv_lib_posix_remove+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lposix  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char remove ();
+int
+main ()
+{
+return remove ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_posix_remove=yes
+else
+  ac_cv_lib_posix_remove=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_posix_remove" >&5
+$as_echo "$ac_cv_lib_posix_remove" >&6; }
+if test "x$ac_cv_lib_posix_remove" = xyes; then :
+  X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix"
+fi
+
+    fi
+
+    # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay.
+    ac_fn_c_check_func "$LINENO" "shmat" "ac_cv_func_shmat"
+if test "x$ac_cv_func_shmat" = xyes; then :
+
+fi
+
+    if test $ac_cv_func_shmat = no; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shmat in -lipc" >&5
+$as_echo_n "checking for shmat in -lipc... " >&6; }
+if ${ac_cv_lib_ipc_shmat+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lipc  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char shmat ();
+int
+main ()
+{
+return shmat ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_ipc_shmat=yes
+else
+  ac_cv_lib_ipc_shmat=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ipc_shmat" >&5
+$as_echo "$ac_cv_lib_ipc_shmat" >&6; }
+if test "x$ac_cv_lib_ipc_shmat" = xyes; then :
+  X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc"
+fi
+
+    fi
+  fi
+
+  # Check for libraries that X11R6 Xt/Xaw programs need.
+  ac_save_LDFLAGS=$LDFLAGS
+  test -n "$x_libraries" && LDFLAGS="$LDFLAGS -L$x_libraries"
+  # SM needs ICE to (dynamically) link under SunOS 4.x (so we have to
+  # check for ICE first), but we must link in the order -lSM -lICE or
+  # we get undefined symbols.  So assume we have SM if we have ICE.
+  # These have to be linked with before -lX11, unlike the other
+  # libraries we check for below, so use a different variable.
+  # John Interrante, Karl Berry
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for IceConnectionNumber in -lICE" >&5
+$as_echo_n "checking for IceConnectionNumber in -lICE... " >&6; }
+if ${ac_cv_lib_ICE_IceConnectionNumber+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lICE $X_EXTRA_LIBS $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char IceConnectionNumber ();
+int
+main ()
+{
+return IceConnectionNumber ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_ICE_IceConnectionNumber=yes
+else
+  ac_cv_lib_ICE_IceConnectionNumber=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5
+$as_echo "$ac_cv_lib_ICE_IceConnectionNumber" >&6; }
+if test "x$ac_cv_lib_ICE_IceConnectionNumber" = xyes; then :
+  X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE"
+fi
+
+  LDFLAGS=$ac_save_LDFLAGS
+
+fi
+
+
+   groff_no_x=$no_x
+   if test -z "$groff_no_x"; then
+     OLDCFLAGS=$CFLAGS
+     OLDLDFLAGS=$LDFLAGS
+     OLDLIBS=$LIBS
+     CFLAGS="$CFLAGS $X_CFLAGS"
+     LDFLAGS="$LDFLAGS $X_LIBS"
+     LIBS="$LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS"
+
+     LIBS="$LIBS -lXaw"
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Xaw library and header files" >&5
+$as_echo_n "checking for Xaw library and header files... " >&6; }
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+
+#include <X11/Intrinsic.h>
+#include <X11/Xaw/Simple.h>
+
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+       groff_no_x="yes"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+     LIBS="$LIBS -lXmu"
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Xmu library and header files" >&5
+$as_echo_n "checking for Xmu library and header files... " >&6; }
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+
+#include <X11/Intrinsic.h>
+#include <X11/Xmu/Converters.h>
+
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+       groff_no_x="yes"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+     CFLAGS=$OLDCFLAGS
+     LDFLAGS=$OLDLDFLAGS
+     LIBS=$OLDLIBS
+   fi
+
+   if test "x$groff_no_x" = "xyes"; then
+     { $as_echo "$as_me:${as_lineno-$LINENO}: gxditview and xtotroff won't be built" >&5
+$as_echo "$as_me: gxditview and xtotroff won't be built" >&6;}
+   else
+     XDEVDIRS="font/devX75 font/devX75-12 font/devX100 font/devX100-12"
+     XPROGDIRS="src/devices/xditview src/utils/xtotroff"
+     XLIBDIRS="src/libs/libxutil"
+   fi
+
+
+
+
+
+# Check whether --with-appresdir was given.
+if test "${with_appresdir+set}" = set; then :
+  withval=$with_appresdir;
+fi
+
+if test -z "$groff_no_x"; then
+     if test "x$with_appresdir" = "x"; then
+       if test "x$prefix" = "xNONE"; then
+         appresdir=$ac_default_prefix/lib/X11/app-defaults
+       else
+         appresdir=$prefix/lib/X11/app-defaults
+       fi
+     else
+       appresdir=$with_appresdir
+     fi
+   fi
+
+libprogramdir=$libdir/groff
+
+
+# Check whether --with-grofferdir was given.
+if test "${with_grofferdir+set}" = set; then :
+  withval=$with_grofferdir;
+fi
+
+if test "x$with_grofferdir" = "x"; then
+    groffer_dir=$libprogramdir/groffer
+  else
+    groffer_dir=$with_grofferdir
+  fi
+
+glilypond_dir=$libprogramdir/glilypond
+
+gpinyin_dir=$libprogramdir/gpinyin
+
+grog_dir=$libprogramdir/grog
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
+$as_echo_n "checking for a sed that does not truncate output... " >&6; }
+if ${ac_cv_path_SED+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+            ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
+     for ac_i in 1 2 3 4 5 6 7; do
+       ac_script="$ac_script$as_nl$ac_script"
+     done
+     echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
+     { ac_script=; unset ac_script;}
+     if test -z "$SED"; then
+  ac_path_SED_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in sed gsed; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_SED" || continue
+# Check for GNU ac_path_SED and select it if it is found.
+  # Check for GNU $ac_path_SED
+case `"$ac_path_SED" --version 2>&1` in
+*GNU*)
+  ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo '' >> "conftest.nl"
+    "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_SED_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_SED="$ac_path_SED"
+      ac_path_SED_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_SED_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_SED"; then
+    as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5
+  fi
+else
+  ac_cv_path_SED=$SED
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
+$as_echo "$ac_cv_path_SED" >&6; }
+ SED="$ac_cv_path_SED"
+  rm -f conftest.sed
+
+PERLVERSION=v5.6.1
+   # Extract the first word of "perl", so it can be a program name with args.
+set dummy perl; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_PERL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $PERL in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_PERL="$PERL" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_PERL="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_path_PERL" && ac_cv_path_PERL="no"
+  ;;
+esac
+fi
+PERL=$ac_cv_path_PERL
+if test -n "$PERL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5
+$as_echo "$PERL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+   if test "x$PERL" = "xno"; then
+     as_fn_error 1 "perl binary not found" "$LINENO" 5
+   fi
+
+
+
+
+    if test -n "$PERL"; then :
+
+        ax_perl_version="$PERLVERSION"
+
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for perl version" >&5
+$as_echo_n "checking for perl version... " >&6; }
+
+        perl_version=`$PERL --version 2>&1 \
+          | $SED -n -e '/This is perl/b inspect
+b
+: inspect
+s/.* (\{0,1\}v\([0-9]*\.[0-9]*\.[0-9]*\))\{0,1\} .*/\1/;p'`
+
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $perl_version" >&5
+$as_echo "$perl_version" >&6; }
+
+       PERL_VERSION=$perl_version
+
+
+
+
+
+  # Used to indicate true or false condition
+  ax_compare_version=false
+
+  # Convert the two version strings to be compared into a format that
+  # allows a simple string comparison.  The end result is that a version
+  # string of the form 1.12.5-r617 will be converted to the form
+  # 0001001200050617.  In other words, each number is zero padded to four
+  # digits, and non digits are removed.
+
+  ax_compare_version_A=`echo "$ax_perl_version" | sed -e 's/\([0-9]*\)/Z\1Z/g' \
+                     -e 's/Z\([0-9]\)Z/Z0\1Z/g' \
+                     -e 's/Z\([0-9][0-9]\)Z/Z0\1Z/g' \
+                     -e 's/Z\([0-9][0-9][0-9]\)Z/Z0\1Z/g' \
+                     -e 's/[^0-9]//g'`
+
+
+  ax_compare_version_B=`echo "$perl_version" | sed -e 's/\([0-9]*\)/Z\1Z/g' \
+                     -e 's/Z\([0-9]\)Z/Z0\1Z/g' \
+                     -e 's/Z\([0-9][0-9]\)Z/Z0\1Z/g' \
+                     -e 's/Z\([0-9][0-9][0-9]\)Z/Z0\1Z/g' \
+                     -e 's/[^0-9]//g'`
+
+
+    ax_compare_version=`echo "x$ax_compare_version_A
+x$ax_compare_version_B" | sed 's/^ *//' | sort | sed "s/x${ax_compare_version_A}/true/;s/x${ax_compare_version_B}/false/;1q"`
+
+
+
+    if test "$ax_compare_version" = "true" ; then
+
+           :
+            true
+
+    else
+           :
+            \
+     as_fn_error 1 "perl version is too old" "$LINENO" 5
+
+  fi
+
+
+else
+
+        { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: could not find the perl interpreter" >&5
+$as_echo "$as_me: WARNING: could not find the perl interpreter" >&2;}
+        \
+     as_fn_error 1 "perl version is too old" "$LINENO" 5
+
+fi
+
+if test -z "$PSPRINT"; then
+     for ac_prog in lpr
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_LPR+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$LPR"; then
+  ac_cv_prog_LPR="$LPR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_LPR="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+LPR=$ac_cv_prog_LPR
+if test -n "$LPR"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LPR" >&5
+$as_echo "$LPR" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$LPR" && break
+done
+
+     for ac_prog in lp
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_LP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$LP"; then
+  ac_cv_prog_LP="$LP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_LP="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+LP=$ac_cv_prog_LP
+if test -n "$LP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LP" >&5
+$as_echo "$LP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$LP" && break
+done
+
+     if test -n "$LPR" && test -n "$LP"; then
+       # HP-UX provides an lpr command that emulates lpr using lp,
+       # but it doesn't have lpq; in this case we want to use lp
+       # rather than lpr.
+       for ac_prog in lpq
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_LPQ+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$LPQ"; then
+  ac_cv_prog_LPQ="$LPQ" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_LPQ="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+LPQ=$ac_cv_prog_LPQ
+if test -n "$LPQ"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LPQ" >&5
+$as_echo "$LPQ" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$LPQ" && break
+done
+
+       test -n "$LPQ" || LPR=
+     fi
+     if test -n "$LPR"; then
+       PSPRINT="$LPR"
+     elif test -n "$LP"; then
+       PSPRINT="$LP"
+     fi
+   fi
+
+   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for command to use for printing PostScript files" >&5
+$as_echo_n "checking for command to use for printing PostScript files... " >&6; }
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PSPRINT" >&5
+$as_echo "$PSPRINT" >&6; }
+
+   # Figure out DVIPRINT from PSPRINT.
+   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for command to use for printing dvi files" >&5
+$as_echo_n "checking for command to use for printing dvi files... " >&6; }
+   if test -n "$PSPRINT" && test -z "$DVIPRINT"; then
+     if test "x$PSPRINT" = "xlpr"; then
+       DVIPRINT="lpr -d"
      else
-       appresdir=$with_appresdir
+       DVIPRINT="$PSPRINT"
      fi
    fi
 
-libprogramdir=$libdir/groff
-
-
-# Check whether --with-grofferdir was given.
-if test "${with_grofferdir+set}" = set; then :
-  withval=$with_grofferdir;
-fi
-
-if test "x$with_grofferdir" = "x"; then
-    groffer_dir=$libprogramdir/groffer
-  else
-    groffer_dir=$with_grofferdir
-  fi
-
-glilypond_dir=$libprogramdir/glilypond
-
-gpinyin_dir=$libprogramdir/gpinyin
-
-grog_dir=$libprogramdir/grog
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DVIPRINT" >&5
+$as_echo "$DVIPRINT" >&6; }
+# GROFF_REFER
+referdir=$libprogramdir/refer
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
-$as_echo_n "checking for a sed that does not truncate output... " >&6; }
-if ${ac_cv_path_SED+:} false; then :
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
+$as_echo_n "checking for egrep... " >&6; }
+if ${ac_cv_path_EGREP+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-            ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
-     for ac_i in 1 2 3 4 5 6 7; do
-       ac_script="$ac_script$as_nl$ac_script"
-     done
-     echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
-     { ac_script=; unset ac_script;}
-     if test -z "$SED"; then
-  ac_path_SED_found=false
+  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+   then ac_cv_path_EGREP="$GREP -E"
+   else
+     if test -z "$EGREP"; then
+  ac_path_EGREP_found=false
   # Loop through the user's path and test for each of PROGNAME-LIST
   as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-    for ac_prog in sed gsed; do
+    for ac_prog in egrep; do
     for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_SED" || continue
-# Check for GNU ac_path_SED and select it if it is found.
-  # Check for GNU $ac_path_SED
-case `"$ac_path_SED" --version 2>&1` in
+      ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_EGREP" || continue
+# Check for GNU ac_path_EGREP and select it if it is found.
+  # Check for GNU $ac_path_EGREP
+case `"$ac_path_EGREP" --version 2>&1` in
 *GNU*)
-  ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
+  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
 *)
   ac_count=0
   $as_echo_n 0123456789 >"conftest.in"
@@ -5549,14 +19700,14 @@ case `"$ac_path_SED" --version 2>&1` in
     cat "conftest.in" "conftest.in" >"conftest.tmp"
     mv "conftest.tmp" "conftest.in"
     cp "conftest.in" "conftest.nl"
-    $as_echo '' >> "conftest.nl"
-    "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    $as_echo 'EGREP' >> "conftest.nl"
+    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
     diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
     as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_SED_max-0}; then
+    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
       # Best one so far, save it but keep looking for a better one
-      ac_cv_path_SED="$ac_path_SED"
-      ac_path_SED_max=$ac_count
+      ac_cv_path_EGREP="$ac_path_EGREP"
+      ac_path_EGREP_max=$ac_count
     fi
     # 10*(2^10) chars as input seems more than enough
     test $ac_count -gt 10 && break
@@ -5564,35 +19715,36 @@ case `"$ac_path_SED" --version 2>&1` in
   rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
 esac
 
-      $ac_path_SED_found && break 3
+      $ac_path_EGREP_found && break 3
     done
   done
   done
 IFS=$as_save_IFS
-  if test -z "$ac_cv_path_SED"; then
-    as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5
+  if test -z "$ac_cv_path_EGREP"; then
+    as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
   fi
 else
-  ac_cv_path_SED=$SED
+  ac_cv_path_EGREP=$EGREP
 fi
 
+   fi
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
-$as_echo "$ac_cv_path_SED" >&6; }
- SED="$ac_cv_path_SED"
-  rm -f conftest.sed
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
+$as_echo "$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
 
-for ac_prog in gawk mawk nawk awk
+
+for ac_prog in byacc 'bison -y' yacc
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_AWK+:} false; then :
+if ${ac_cv_prog_YACC+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$AWK"; then
-  ac_cv_prog_AWK="$AWK" # Let the user override the test.
+  if test -n "$YACC"; then
+  ac_cv_prog_YACC="$YACC" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
@@ -5601,7 +19753,7 @@ do
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_AWK="$ac_prog"
+    ac_cv_prog_YACC="$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
@@ -5611,152 +19763,112 @@ IFS=$as_save_IFS
 
 fi
 fi
-AWK=$ac_cv_prog_AWK
-if test -n "$AWK"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
-$as_echo "$AWK" >&6; }
+YACC=$ac_cv_prog_YACC
+if test -n "$YACC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $YACC" >&5
+$as_echo "$YACC" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
 
-  test -n "$AWK" && break
+  test -n "$YACC" && break
 done
+test -n "$YACC" || YACC="missing"
 
-PERLVERSION=v5.6.1
-   # Extract the first word of "perl", so it can be a program name with args.
-set dummy perl; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PERL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $PERL in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_PERL="$PERL" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_PERL="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
+  if test "x$YACC" = "xmissing" -a -d ${srcdir}/.git; then
+    as_fn_error 1 "Could not find 'yacc' or 'bison'" "$LINENO" 5
   fi
-done
-  done
-IFS=$as_save_IFS
 
-  test -z "$ac_cv_path_PERL" && ac_cv_path_PERL="no"
-  ;;
-esac
-fi
-PERL=$ac_cv_path_PERL
-if test -n "$PERL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5
-$as_echo "$PERL" >&6; }
+
+# Check whether --with-doc was given.
+if test "${with_doc+set}" = set; then :
+  withval=$with_doc; doc="$withval"
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  doc=yes
 fi
 
+  test "x$doc" = xno && doc=''
+  if test "x$doc" = xyes; then
+    doc_dist_target_ok=yes
+    docadd_html=yes
+    docadd_info=yes
+    docadd_other=yes
+    docadd_pdf=yes
+    docadd_examples=yes
+  else
+    # Don't use case/esac, verify input.
+    doc_dist_target_ok=no
+    docadd_html=no
+    docadd_info=no
+    docadd_other=no
+    docadd_pdf=no
+    docadd_examples=no
+    OFS=$IFS
+    IFS=','
+    set -- $doc
+    IFS=$OFS
+    for i
+    do
+      test "x$i" = xhtml     && { docadd_html=yes; continue; }
+      test "x$i" = xinfo     && { docadd_info=yes; continue; }
+      test "x$i" = xother    && { docadd_other=yes; continue; }
+      test "x$i" = xpdf      && { docadd_pdf=yes; continue; }
+      test "x$i" = xexamples && { docadd_examples=yes; continue; }
+      { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Invalid '--with-doc' argument: $i" >&5
+$as_echo "$as_me: WARNING: Invalid '--with-doc' argument: $i" >&2;}
+    done
+  fi
+  if test $docadd_html = yes; then
+    make_install_shipped_htmldoc=install_shipped_htmldoc
+    make_uninstall_shipped_htmldoc=uninstall_shipped_htmldoc
+  else
+    make_install_shipped_htmldoc=
+    make_uninstall_shipped_htmldoc=
+  fi
+  if test $docadd_other = yes; then
+    make_otherdoc=otherdoc
+    make_install_otherdoc=install_otherdoc
+    make_uninstall_otherdoc=uninstall_otherdoc
+  else
+    make_otherdoc=
+    make_install_otherdoc=
+    make_uninstall_otherdoc=
+  fi
+  if test $docadd_examples = yes; then
+    make_examples=examples
+    make_install_examples=install_examples
+    make_uninstall_examples=uninstall_examples
+  else
+    make_examples=
+    make_install_examples=
+    make_uninstall_examples=
+  fi
 
-   if test "x$PERL" = "xno"; then
-     as_fn_error 1 "perl binary not found" "$LINENO" 5
-   fi
-
-
-
-
-    if test -n "$PERL"; then :
-
-        ax_perl_version="$PERLVERSION"
-
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for perl version" >&5
-$as_echo_n "checking for perl version... " >&6; }
-
-        perl_version=`$PERL --version 2>&1 \
-          | $SED -n -e '/This is perl/b inspect
-b
-: inspect
-s/.* (\{0,1\}v\([0-9]*\.[0-9]*\.[0-9]*\))\{0,1\} .*/\1/;p'`
-
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $perl_version" >&5
-$as_echo "$perl_version" >&6; }
-
-       PERL_VERSION=$perl_version
-
-
-
-
-
-  # Used to indicate true or false condition
-  ax_compare_version=false
-
-  # Convert the two version strings to be compared into a format that
-  # allows a simple string comparison.  The end result is that a version
-  # string of the form 1.12.5-r617 will be converted to the form
-  # 0001001200050617.  In other words, each number is zero padded to four
-  # digits, and non digits are removed.
-
-  ax_compare_version_A=`echo "$ax_perl_version" | sed -e 's/\([0-9]*\)/Z\1Z/g' \
-                     -e 's/Z\([0-9]\)Z/Z0\1Z/g' \
-                     -e 's/Z\([0-9][0-9]\)Z/Z0\1Z/g' \
-                     -e 's/Z\([0-9][0-9][0-9]\)Z/Z0\1Z/g' \
-                     -e 's/[^0-9]//g'`
-
-
-  ax_compare_version_B=`echo "$perl_version" | sed -e 's/\([0-9]*\)/Z\1Z/g' \
-                     -e 's/Z\([0-9]\)Z/Z0\1Z/g' \
-                     -e 's/Z\([0-9][0-9]\)Z/Z0\1Z/g' \
-                     -e 's/Z\([0-9][0-9][0-9]\)Z/Z0\1Z/g' \
-                     -e 's/[^0-9]//g'`
-
-
-    ax_compare_version=`echo "x$ax_compare_version_A
-x$ax_compare_version_B" | sed 's/^ *//' | sort | sed "s/x${ax_compare_version_A}/true/;s/x${ax_compare_version_B}/false/;1q"`
-
-
-
-    if test "$ax_compare_version" = "true" ; then
 
-           :
-            true
 
-    else
-           :
-            \
-     as_fn_error 1 "perl version is too old" "$LINENO" 5
 
-  fi
 
 
-else
 
-        { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: could not find the perl interpreter" >&5
-$as_echo "$as_me: WARNING: could not find the perl interpreter" >&2;}
-        \
-     as_fn_error 1 "perl version is too old" "$LINENO" 5
 
-fi
 
-if test -z "$PSPRINT"; then
-     for ac_prog in lpr
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
+# By default automake will set MAKEINFO to MAKEINFO = ${SHELL} <top
+  # src dir>/build-aux/missing makeinfo.As we need a more precise
+  # check of makeinfo version, we don't use it.
+  MAKEINFO=
+   if test $docadd_info = yes; then
+     missing=
+     # Extract the first word of "makeinfo", so it can be a program name with args.
+set dummy makeinfo; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_LPR+:} false; then :
+if ${ac_cv_prog_MAKEINFO+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$LPR"; then
-  ac_cv_prog_LPR="$LPR" # Let the user override the test.
+  if test -n "$MAKEINFO"; then
+  ac_cv_prog_MAKEINFO="$MAKEINFO" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
@@ -5765,7 +19877,7 @@ do
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_LPR="$ac_prog"
+    ac_cv_prog_MAKEINFO="makeinfo"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
@@ -5775,30 +19887,76 @@ IFS=$as_save_IFS
 
 fi
 fi
-LPR=$ac_cv_prog_LPR
-if test -n "$LPR"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LPR" >&5
-$as_echo "$LPR" >&6; }
+MAKEINFO=$ac_cv_prog_MAKEINFO
+if test -n "$MAKEINFO"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAKEINFO" >&5
+$as_echo "$MAKEINFO" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
 
-  test -n "$LPR" && break
-done
+     if test -z "$MAKEINFO"; then
+       missing="'makeinfo' is missing."
+     else
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for makeinfo version" >&5
+$as_echo_n "checking for makeinfo version... " >&6; }
+       # We need an additional level of quoting to make sed's regexps work.
+       makeinfo_version=`$MAKEINFO --version 2>&1 \
+        | sed -e 's/^.* \([^ ][^ ]*\)$/\1/' -e '1q'`
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $makeinfo_version" >&5
+$as_echo "$makeinfo_version" >&6; }
+       # Consider only the first two numbers in version number string.
+       makeinfo_version_major=`IFS=.; set x $makeinfo_version; echo 0${2}`
+       makeinfo_version_minor=`IFS=.; set x $makeinfo_version; echo 0${3}`
+       makeinfo_version_numeric=`
+         expr ${makeinfo_version_major}000 \+ ${makeinfo_version_minor}`
+       if test $makeinfo_version_numeric -lt 4008; then
+         missing="'makeinfo' is too old."
+       fi
+     fi
 
-     for ac_prog in lp
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
+     if test -n "$missing"; then
+       infofile=doc/groff.info
+       test -f ${infofile} || infofile=${srcdir}/${infofile}
+       if test ! -f ${infofile} \
+       || test ${srcdir}/doc/groff.texi -nt ${infofile}; then
+        as_fn_error $? "$missing
+Get the 'texinfo' package version 4.8 or newer." "$LINENO" 5
+       else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $missing
+Get the 'texinfo' package version 4.8 or newer if you want to convert
+'groff.texi' into a PDF or HTML document." >&5
+$as_echo "$as_me: WARNING: $missing
+Get the 'texinfo' package version 4.8 or newer if you want to convert
+'groff.texi' into a PDF or HTML document." >&2;}
+       fi
+     fi
+
+     make_infodoc=infodoc
+     make_install_infodoc=install_infodoc
+     make_uninstall_infodoc=uninstall_infodoc
+   else
+     make_infodoc=
+     make_install_infodoc=
+     make_uninstall_infodoc=
+     MAKEINFO=
+   fi
+
+
+
+
+
+# Extract the first word of "texi2dvi", so it can be a program name with args.
+set dummy texi2dvi; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_LP+:} false; then :
+if ${ac_cv_prog_PROG_TEXI2DVI+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$LP"; then
-  ac_cv_prog_LP="$LP" # Let the user override the test.
+  if test -n "$PROG_TEXI2DVI"; then
+  ac_cv_prog_PROG_TEXI2DVI="$PROG_TEXI2DVI" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
@@ -5807,7 +19965,7 @@ do
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_LP="$ac_prog"
+    ac_cv_prog_PROG_TEXI2DVI="found"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
@@ -5815,36 +19973,35 @@ done
   done
 IFS=$as_save_IFS
 
+  test -z "$ac_cv_prog_PROG_TEXI2DVI" && ac_cv_prog_PROG_TEXI2DVI="missing"
 fi
 fi
-LP=$ac_cv_prog_LP
-if test -n "$LP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LP" >&5
-$as_echo "$LP" >&6; }
+PROG_TEXI2DVI=$ac_cv_prog_PROG_TEXI2DVI
+if test -n "$PROG_TEXI2DVI"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PROG_TEXI2DVI" >&5
+$as_echo "$PROG_TEXI2DVI" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
 
-  test -n "$LP" && break
-done
+   if test "x$PROG_TEXI2DVI" = "xfound"; then
+      groff_have_texi2dvi=yes;
+   else
+      groff_have_texi2dvi=no;
+   fi
 
-     if test -n "$LPR" && test -n "$LP"; then
-       # HP-UX provides an lpr command that emulates lpr using lp,
-       # but it doesn't have lpq; in this case we want to use lp
-       # rather than lpr.
-       for ac_prog in lpq
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_LPQ+:} false; then :
+if ${ac_cv_prog_RANLIB+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$LPQ"; then
-  ac_cv_prog_LPQ="$LPQ" # Let the user override the test.
+  if test -n "$RANLIB"; then
+  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
@@ -5853,7 +20010,7 @@ do
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_LPQ="$ac_prog"
+    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
@@ -5863,127 +20020,85 @@ IFS=$as_save_IFS
 
 fi
 fi
-LPQ=$ac_cv_prog_LPQ
-if test -n "$LPQ"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LPQ" >&5
-$as_echo "$LPQ" >&6; }
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
+$as_echo "$RANLIB" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
 
-  test -n "$LPQ" && break
-done
-
-       test -n "$LPQ" || LPR=
-     fi
-     if test -n "$LPR"; then
-       PSPRINT="$LPR"
-     elif test -n "$LP"; then
-       PSPRINT="$LP"
-     fi
-   fi
-
-   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for command to use for printing PostScript files" >&5
-$as_echo_n "checking for command to use for printing PostScript files... " >&6; }
-   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PSPRINT" >&5
-$as_echo "$PSPRINT" >&6; }
-
-   # Figure out DVIPRINT from PSPRINT.
-   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for command to use for printing dvi files" >&5
-$as_echo_n "checking for command to use for printing dvi files... " >&6; }
-   if test -n "$PSPRINT" && test -z "$DVIPRINT"; then
-     if test "x$PSPRINT" = "xlpr"; then
-       DVIPRINT="lpr -d"
-     else
-       DVIPRINT="$PSPRINT"
-     fi
-   fi
-
-   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DVIPRINT" >&5
-$as_echo "$DVIPRINT" >&6; }
-# GROFF_REFER
-referdir=$libprogramdir/refer
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
-$as_echo_n "checking for egrep... " >&6; }
-if ${ac_cv_path_EGREP+:} false; then :
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+  ac_ct_RANLIB=$RANLIB
+  # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
-   then ac_cv_path_EGREP="$GREP -E"
-   else
-     if test -z "$EGREP"; then
-  ac_path_EGREP_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+  if test -n "$ac_ct_RANLIB"; then
+  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-    for ac_prog in egrep; do
     for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_EGREP" || continue
-# Check for GNU ac_path_EGREP and select it if it is found.
-  # Check for GNU $ac_path_EGREP
-case `"$ac_path_EGREP" --version 2>&1` in
-*GNU*)
-  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo 'EGREP' >> "conftest.nl"
-    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_EGREP="$ac_path_EGREP"
-      ac_path_EGREP_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_EGREP_found && break 3
-    done
-  done
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_RANLIB="ranlib"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
   done
 IFS=$as_save_IFS
-  if test -z "$ac_cv_path_EGREP"; then
-    as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
-  fi
+
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
+$as_echo "$ac_ct_RANLIB" >&6; }
 else
-  ac_cv_path_EGREP=$EGREP
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
-   fi
+  if test "x$ac_ct_RANLIB" = x; then
+    RANLIB=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    RANLIB=$ac_ct_RANLIB
+  fi
+else
+  RANLIB="$ac_cv_prog_RANLIB"
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
-$as_echo "$ac_cv_path_EGREP" >&6; }
- EGREP="$ac_cv_path_EGREP"
 
 
-for ac_prog in byacc 'bison -y'
+   ac_dir=`cd $ac_aux_dir; pwd`
+   ac_install_sh="$ac_dir/install-sh -c"
+if test $docadd_info = yes; then
+     for ac_prog in install-info
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_YACC+:} false; then :
+if ${ac_cv_prog_INSTALL_INFO+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$YACC"; then
-  ac_cv_prog_YACC="$YACC" # Let the user override the test.
+  if test -n "$INSTALL_INFO"; then
+  ac_cv_prog_INSTALL_INFO="$INSTALL_INFO" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
@@ -5992,7 +20107,7 @@ do
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_YACC="$ac_prog"
+    ac_cv_prog_INSTALL_INFO="$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
@@ -6002,85 +20117,70 @@ IFS=$as_save_IFS
 
 fi
 fi
-YACC=$ac_cv_prog_YACC
-if test -n "$YACC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $YACC" >&5
-$as_echo "$YACC" >&6; }
+INSTALL_INFO=$ac_cv_prog_INSTALL_INFO
+if test -n "$INSTALL_INFO"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL_INFO" >&5
+$as_echo "$INSTALL_INFO" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
 
-  test -n "$YACC" && break
+  test -n "$INSTALL_INFO" && break
 done
-test -n "$YACC" || YACC="yacc"
+test -n "$INSTALL_INFO" || INSTALL_INFO=":"
 
+   fi
 
-# Check whether --with-doc was given.
-if test "${with_doc+set}" = set; then :
-  withval=$with_doc; doc="$withval"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
+$as_echo_n "checking whether ln -s works... " >&6; }
+LN_S=$as_ln_s
+if test "$LN_S" = "ln -s"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
 else
-  doc=yes
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
+$as_echo "no, using $LN_S" >&6; }
 fi
 
-  test "x$doc" = xno && doc=''
-  if test "x$doc" = xyes; then
-    doc_dist_target_ok=yes
-    docadd_html=yes
-    docadd_info=yes
-    docadd_other=yes
-    docadd_pdf=yes
-    docadd_examples=yes
-  else
-    # Don't use case/esac, verify input.
-    doc_dist_target_ok=no
-    docadd_html=no
-    docadd_info=no
-    docadd_other=no
-    docadd_pdf=no
-    docadd_examples=no
-    OFS=$IFS
-    IFS=','
-    set -- $doc
-    IFS=$OFS
-    for i
-    do
-      test "x$i" = xhtml     && { docadd_html=yes; continue; }
-      test "x$i" = xinfo     && { docadd_info=yes; continue; }
-      test "x$i" = xother    && { docadd_other=yes; continue; }
-      test "x$i" = xpdf      && { docadd_pdf=yes; continue; }
-      test "x$i" = xexamples && { docadd_examples=yes; continue; }
-      { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Invalid \`--with-doc' argument: $i" >&5
-$as_echo "$as_me: WARNING: Invalid \`--with-doc' argument: $i" >&2;}
-    done
-  fi
-  if test $docadd_html = yes; then
-    make_install_shipped_htmldoc=install_shipped_htmldoc
-    make_uninstall_shipped_htmldoc=uninstall_shipped_htmldoc
-  else
-    make_install_shipped_htmldoc=
-    make_uninstall_shipped_htmldoc=
-  fi
-  if test $docadd_other = yes; then
-    make_otherdoc=otherdoc
-    make_install_otherdoc=install_otherdoc
-    make_uninstall_otherdoc=uninstall_otherdoc
-  else
-    make_otherdoc=
-    make_install_otherdoc=
-    make_uninstall_otherdoc=
-  fi
-  if test $docadd_examples = yes; then
-    make_examples=examples
-    make_install_examples=install_examples
-    make_uninstall_examples=uninstall_examples
-  else
-    make_examples=
-    make_install_examples=
-    make_uninstall_examples=
+
+# Extract the first word of "xpmtoppm", so it can be a program name with args.
+set dummy xpmtoppm; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_XPMTOPPM+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$XPMTOPPM"; then
+  ac_cv_prog_XPMTOPPM="$XPMTOPPM" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_XPMTOPPM="found"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
   fi
+done
+  done
+IFS=$as_save_IFS
 
+  test -z "$ac_cv_prog_XPMTOPPM" && ac_cv_prog_XPMTOPPM="missing"
+fi
+fi
+XPMTOPPM=$ac_cv_prog_XPMTOPPM
+if test -n "$XPMTOPPM"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XPMTOPPM" >&5
+$as_echo "$XPMTOPPM" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
 
 
 
@@ -6089,26 +20189,29 @@ $as_echo "$as_me: WARNING: Invalid \`--with-doc' argument: $i" >&2;}
 
 
 
-if test $docadd_info = yes; then
-     missing=
-     # Extract the first word of "makeinfo", so it can be a program name with args.
-set dummy makeinfo; ac_word=$2
+
+if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+       if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
+set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_MAKEINFO+:} false; then :
+if ${ac_cv_path_PKG_CONFIG+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$MAKEINFO"; then
-  ac_cv_prog_MAKEINFO="$MAKEINFO" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+  case $PKG_CONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_MAKEINFO="makeinfo"
+    ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
@@ -6116,78 +20219,206 @@ done
   done
 IFS=$as_save_IFS
 
+  ;;
+esac
 fi
+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
+if test -n "$PKG_CONFIG"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
+$as_echo "$PKG_CONFIG" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
-MAKEINFO=$ac_cv_prog_MAKEINFO
-if test -n "$MAKEINFO"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAKEINFO" >&5
-$as_echo "$MAKEINFO" >&6; }
+
+
+fi
+if test -z "$ac_cv_path_PKG_CONFIG"; then
+  ac_pt_PKG_CONFIG=$PKG_CONFIG
+  # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $ac_pt_PKG_CONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
+if test -n "$ac_pt_PKG_CONFIG"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
+$as_echo "$ac_pt_PKG_CONFIG" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
+  if test "x$ac_pt_PKG_CONFIG" = x; then
+    PKG_CONFIG=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    PKG_CONFIG=$ac_pt_PKG_CONFIG
+  fi
+else
+  PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
+fi
 
-     if test -z "$MAKEINFO"; then
-       missing="\`makeinfo' is missing."
-     else
-       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for makeinfo version" >&5
-$as_echo_n "checking for makeinfo version... " >&6; }
-       # We need an additional level of quoting to make sed's regexps work.
-       makeinfo_version=`$MAKEINFO --version 2>&1 \
-        | sed -e 's/^.* \([^ ][^ ]*\)$/\1/' -e '1q'`
-       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $makeinfo_version" >&5
-$as_echo "$makeinfo_version" >&6; }
-       # Consider only the first two numbers in version number string.
-       makeinfo_version_major=`IFS=.; set x $makeinfo_version; echo 0${2}`
-       makeinfo_version_minor=`IFS=.; set x $makeinfo_version; echo 0${3}`
-       makeinfo_version_numeric=`
-         expr ${makeinfo_version_major}000 \+ ${makeinfo_version_minor}`
-       if test $makeinfo_version_numeric -lt 4008; then
-         missing="\`makeinfo' is too old."
-       fi
-     fi
+fi
+if test -n "$PKG_CONFIG"; then
+       _pkg_min_version=0.9.0
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5
+$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; }
+       if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+               { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+       else
+               { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+               PKG_CONFIG=""
+       fi
+fi
 
-     if test -n "$missing"; then
-       infofile=doc/groff.info
-       test -f ${infofile} || infofile=${srcdir}/${infofile}
-       if test ! -f ${infofile} \
-       || test ${srcdir}/doc/groff.texinfo -nt ${infofile}; then
-        as_fn_error $? "$missing
-Get the \`texinfo' package version 4.8 or newer." "$LINENO" 5
-       else
-        { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $missing
-Get the \`texinfo' package version 4.8 or newer if you want to convert
-\`groff.texinfo' into a PDF or HTML document." >&5
-$as_echo "$as_me: WARNING: $missing
-Get the \`texinfo' package version 4.8 or newer if you want to convert
-\`groff.texinfo' into a PDF or HTML document." >&2;}
-       fi
-     fi
+# Check whether --with-uchardet was given.
+if test "${with_uchardet+set}" = set; then :
+  withval=$with_uchardet;
+fi
 
-     make_infodoc=infodoc
-     make_install_infodoc=install_infodoc
-     make_uninstall_infodoc=uninstall_infodoc
-   else
-     make_infodoc=
-     make_install_infodoc=
-     make_uninstall_infodoc=
-     MAKEINFO=
-   fi
+   if test "x$with_uchardet" != "xno"; then :
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for UCHARDET" >&5
+$as_echo_n "checking for UCHARDET... " >&6; }
+
+if test -n "$UCHARDET_CFLAGS"; then
+    pkg_cv_UCHARDET_CFLAGS="$UCHARDET_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"uchardet >= 0.0.1\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "uchardet >= 0.0.1") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_UCHARDET_CFLAGS=`$PKG_CONFIG --cflags "uchardet >= 0.0.1" 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+if test -n "$UCHARDET_LIBS"; then
+    pkg_cv_UCHARDET_LIBS="$UCHARDET_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"uchardet >= 0.0.1\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "uchardet >= 0.0.1") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_UCHARDET_LIBS=`$PKG_CONFIG --libs "uchardet >= 0.0.1" 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
 
 
 
+if test $pkg_failed = yes; then
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
-set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+               UCHARDET_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "uchardet >= 0.0.1" 2>&1`
+        else
+               UCHARDET_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "uchardet >= 0.0.1" 2>&1`
+        fi
+       # Put the nasty error message in config.log where it belongs
+       echo "$UCHARDET_PKG_ERRORS" >&5
+
+       if test "x$with_uchardet" = "xyes"; then
+                               { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "Could not found uchardet library
+See \`config.log' for more details" "$LINENO" 5; }
+                             else
+                               { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: uchardet library not found, preconv \
+might not work properly" >&5
+$as_echo "$as_me: WARNING: uchardet library not found, preconv \
+might not work properly" >&2;}
+                             fi
+                             groff_have_uchardet=no
+elif test $pkg_failed = untried; then
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+       if test "x$with_uchardet" = "xyes"; then
+                               { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "Could not found uchardet library
+See \`config.log' for more details" "$LINENO" 5; }
+                             else
+                               { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: uchardet library not found, preconv \
+might not work properly" >&5
+$as_echo "$as_me: WARNING: uchardet library not found, preconv \
+might not work properly" >&2;}
+                             fi
+                             groff_have_uchardet=no
+else
+       UCHARDET_CFLAGS=$pkg_cv_UCHARDET_CFLAGS
+       UCHARDET_LIBS=$pkg_cv_UCHARDET_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+$as_echo "#define HAVE_UCHARDET 1" >>confdefs.h
+
+                             groff_have_uchardet=yes
+fi
+else
+  groff_have_uchardet=no
+
+fi
+# Extract the first word of "pdfinfo", so it can be a program name with args.
+set dummy pdfinfo; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_RANLIB+:} false; then :
+if ${ac_cv_prog_PDFINFO+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$RANLIB"; then
-  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+  if test -n "$PDFINFO"; then
+  ac_cv_prog_PDFINFO="$PDFINFO" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
@@ -6196,7 +20427,7 @@ do
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+    ac_cv_prog_PDFINFO="found"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
@@ -6204,30 +20435,28 @@ done
   done
 IFS=$as_save_IFS
 
+  test -z "$ac_cv_prog_PDFINFO" && ac_cv_prog_PDFINFO="missing"
 fi
 fi
-RANLIB=$ac_cv_prog_RANLIB
-if test -n "$RANLIB"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
-$as_echo "$RANLIB" >&6; }
+PDFINFO=$ac_cv_prog_PDFINFO
+if test -n "$PDFINFO"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PDFINFO" >&5
+$as_echo "$PDFINFO" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
 
-fi
-if test -z "$ac_cv_prog_RANLIB"; then
-  ac_ct_RANLIB=$RANLIB
-  # Extract the first word of "ranlib", so it can be a program name with args.
-set dummy ranlib; ac_word=$2
+   # Extract the first word of "pdffonts", so it can be a program name with args.
+set dummy pdffonts; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
+if ${ac_cv_prog_PDFFONTS+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$ac_ct_RANLIB"; then
-  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+  if test -n "$PDFFONTS"; then
+  ac_cv_prog_PDFFONTS="$PDFFONTS" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
@@ -6236,7 +20465,7 @@ do
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_RANLIB="ranlib"
+    ac_cv_prog_PDFFONTS="found"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
@@ -6244,76 +20473,28 @@ done
   done
 IFS=$as_save_IFS
 
+  test -z "$ac_cv_prog_PDFFONTS" && ac_cv_prog_PDFFONTS="missing"
 fi
 fi
-ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
-if test -n "$ac_ct_RANLIB"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
-$as_echo "$ac_ct_RANLIB" >&6; }
+PDFFONTS=$ac_cv_prog_PDFFONTS
+if test -n "$PDFFONTS"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PDFFONTS" >&5
+$as_echo "$PDFFONTS" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
-  if test "x$ac_ct_RANLIB" = x; then
-    RANLIB=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    RANLIB=$ac_ct_RANLIB
-  fi
-else
-  RANLIB="$ac_cv_prog_RANLIB"
-fi
-
-ac_aux_dir=
-for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
-  if test -f "$ac_dir/install-sh"; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/install-sh -c"
-    break
-  elif test -f "$ac_dir/install.sh"; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/install.sh -c"
-    break
-  elif test -f "$ac_dir/shtool"; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/shtool install -c"
-    break
-  fi
-done
-if test -z "$ac_aux_dir"; then
-  as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5
-fi
-
-# These three variables are undocumented and unsupported,
-# and are intended to be withdrawn in a future Autoconf release.
-# They can cause serious problems if a builder's source tree is in a directory
-# whose full name contains unusual characters.
-ac_config_guess="$SHELL $ac_aux_dir/config.guess"  # Please don't use this var.
-ac_config_sub="$SHELL $ac_aux_dir/config.sub"  # Please don't use this var.
-ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
-
-
 
-   ac_dir=`cd $ac_aux_dir; pwd`
-   ac_install_sh="$ac_dir/install-sh -c"
-if test $docadd_info = yes; then
-     for ac_prog in install-info
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
+   # Extract the first word of "pdfimages", so it can be a program name with args.
+set dummy pdfimages; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_INSTALL_INFO+:} false; then :
+if ${ac_cv_prog_PDFIMAGES+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$INSTALL_INFO"; then
-  ac_cv_prog_INSTALL_INFO="$INSTALL_INFO" # Let the user override the test.
+  if test -n "$PDFIMAGES"; then
+  ac_cv_prog_PDFIMAGES="$PDFIMAGES" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
@@ -6322,7 +20503,7 @@ do
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_INSTALL_INFO="$ac_prog"
+    ac_cv_prog_PDFIMAGES="found"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
@@ -6330,126 +20511,24 @@ done
   done
 IFS=$as_save_IFS
 
+  test -z "$ac_cv_prog_PDFIMAGES" && ac_cv_prog_PDFIMAGES="missing"
 fi
 fi
-INSTALL_INFO=$ac_cv_prog_INSTALL_INFO
-if test -n "$INSTALL_INFO"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL_INFO" >&5
-$as_echo "$INSTALL_INFO" >&6; }
+PDFIMAGES=$ac_cv_prog_PDFIMAGES
+if test -n "$PDFIMAGES"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PDFIMAGES" >&5
+$as_echo "$PDFIMAGES" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
 
-  test -n "$INSTALL_INFO" && break
-done
-test -n "$INSTALL_INFO" || INSTALL_INFO=":"
-
+   if test "x$PDFINFO" = "xfound" -a "x$PDFFONTS" = "xfound" -a "x$PDFIMAGES" = "xfound"; then
+      groff_have_pdftools=yes;
+   else
+      groff_have_pdftools=no;
    fi
-# Find a good install program.  We prefer a C program (faster),
-# so one script is as good as another.  But avoid the broken or
-# incompatible versions:
-# SysV /etc/install, /usr/sbin/install
-# SunOS /usr/etc/install
-# IRIX /sbin/install
-# AIX /bin/install
-# AmigaOS /C/install, which installs bootblocks on floppy discs
-# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
-# AFS /usr/afsws/bin/install, which mishandles nonexistent args
-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
-# OS/2's system install, which has a completely different semantic
-# ./install, which can be erroneously created by make from ./install.sh.
-# Reject install programs that cannot install multiple files.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
-$as_echo_n "checking for a BSD-compatible install... " >&6; }
-if test -z "$INSTALL"; then
-if ${ac_cv_path_install+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    # Account for people who put trailing slashes in PATH elements.
-case $as_dir/ in #((
-  ./ | .// | /[cC]/* | \
-  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
-  ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
-  /usr/ucb/* ) ;;
-  *)
-    # OSF1 and SCO ODT 3.0 have their own names for install.
-    # Don't use installbsd from OSF since it installs stuff as root
-    # by default.
-    for ac_prog in ginstall scoinst install; do
-      for ac_exec_ext in '' $ac_executable_extensions; do
-       if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
-         if test $ac_prog = install &&
-           grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
-           # AIX install.  It has an incompatible calling convention.
-           :
-         elif test $ac_prog = install &&
-           grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
-           # program-specific install script used by HP pwplus--don't use.
-           :
-         else
-           rm -rf conftest.one conftest.two conftest.dir
-           echo one > conftest.one
-           echo two > conftest.two
-           mkdir conftest.dir
-           if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
-             test -s conftest.one && test -s conftest.two &&
-             test -s conftest.dir/conftest.one &&
-             test -s conftest.dir/conftest.two
-           then
-             ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
-             break 3
-           fi
-         fi
-       fi
-      done
-    done
-    ;;
-esac
-
-  done
-IFS=$as_save_IFS
-
-rm -rf conftest.one conftest.two conftest.dir
-
-fi
-  if test "${ac_cv_path_install+set}" = set; then
-    INSTALL=$ac_cv_path_install
-  else
-    # As a last resort, use the slow shell script.  Don't cache a
-    # value for INSTALL within a source directory, because that will
-    # break other packages using the cache if that directory is
-    # removed, or if the value is a relative name.
-    INSTALL=$ac_install_sh
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
-$as_echo "$INSTALL" >&6; }
-
-# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
-# It thinks the first close brace ends the variable substitution.
-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
-
-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
-
-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
-$as_echo_n "checking whether ln -s works... " >&6; }
-LN_S=$as_ln_s
-if test "$LN_S" = "ln -s"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
-$as_echo "no, using $LN_S" >&6; }
-fi
 
 
 # use a dummy substitution if no csh hack is necessary to avoid errors
@@ -6568,77 +20647,8 @@ extern "C" { void srand(unsigned int); }
 
 
 int
-main ()
-{
-
-  ;
-  return 0;
-}
-
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: void" >&5
-$as_echo "void" >&6; }
-
-$as_echo "#define RET_TYPE_SRAND_IS_VOID 1" >>confdefs.h
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: int" >&5
-$as_echo "int" >&6; }
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-   ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether gettimeofday must be declared" >&5
-$as_echo_n "checking whether gettimeofday must be declared... " >&6; }
-   ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-   if ${groff_cv_decl_needed_gettimeofday+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-
-
-#include <stdio.h>
-#ifdef HAVE_STRING_H
-#include <string.h>
-#endif
-#ifdef HAVE_STRINGS_H
-#include <strings.h>
-#endif
-#ifdef HAVE_STDLIB_H
-#include <stdlib.h>
-#endif
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
-#endif
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#ifdef HAVE_MATH_H
-#include <math.h>
-#endif
-
-
-int
-main ()
-{
-
-
-#ifndef gettimeofday
-  char *p = (char *) gettimeofday;
-#endif
-
+main ()
+{
 
   ;
   return 0;
@@ -6646,35 +20656,31 @@ main ()
 
 _ACEOF
 if ac_fn_cxx_try_compile "$LINENO"; then :
-  groff_cv_decl_needed_gettimeofday=no
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: void" >&5
+$as_echo "void" >&6; }
+
+$as_echo "#define RET_TYPE_SRAND_IS_VOID 1" >>confdefs.h
+
 else
-  groff_cv_decl_needed_gettimeofday=yes
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: int" >&5
+$as_echo "int" >&6; }
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
-   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $groff_cv_decl_needed_gettimeofday" >&5
-$as_echo "$groff_cv_decl_needed_gettimeofday" >&6; }
-   if test $groff_cv_decl_needed_gettimeofday = yes; then
-
-$as_echo "#define NEED_DECLARATION_GETTIMEOFDAY 1" >>confdefs.h
-
-   fi
    ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether hypot must be declared" >&5
-$as_echo_n "checking whether hypot must be declared... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether gettimeofday must be declared" >&5
+$as_echo_n "checking whether gettimeofday must be declared... " >&6; }
    ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
 
-   if ${groff_cv_decl_needed_hypot+:} false; then :
+   if ${groff_cv_decl_needed_gettimeofday+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -6708,8 +20714,8 @@ main ()
 {
 
 
-#ifndef hypot
-  char *p = (char *) hypot;
+#ifndef gettimeofday
+  char *p = (char *) gettimeofday;
 #endif
 
 
@@ -6719,18 +20725,18 @@ main ()
 
 _ACEOF
 if ac_fn_cxx_try_compile "$LINENO"; then :
-  groff_cv_decl_needed_hypot=no
+  groff_cv_decl_needed_gettimeofday=no
 else
-  groff_cv_decl_needed_hypot=yes
+  groff_cv_decl_needed_gettimeofday=yes
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
 
-   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $groff_cv_decl_needed_hypot" >&5
-$as_echo "$groff_cv_decl_needed_hypot" >&6; }
-   if test $groff_cv_decl_needed_hypot = yes; then
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $groff_cv_decl_needed_gettimeofday" >&5
+$as_echo "$groff_cv_decl_needed_gettimeofday" >&6; }
+   if test $groff_cv_decl_needed_gettimeofday = yes; then
 
-$as_echo "#define NEED_DECLARATION_HYPOT 1" >>confdefs.h
+$as_echo "#define NEED_DECLARATION_GETTIMEOFDAY 1" >>confdefs.h
 
    fi
    ac_ext=c
@@ -7031,79 +21037,6 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether snprintf must be declared" >&5
-$as_echo_n "checking whether snprintf must be declared... " >&6; }
-   ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-   if ${groff_cv_decl_needed_snprintf+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-
-
-#include <stdio.h>
-#ifdef HAVE_STRING_H
-#include <string.h>
-#endif
-#ifdef HAVE_STRINGS_H
-#include <strings.h>
-#endif
-#ifdef HAVE_STDLIB_H
-#include <stdlib.h>
-#endif
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
-#endif
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#ifdef HAVE_MATH_H
-#include <math.h>
-#endif
-
-
-int
-main ()
-{
-
-
-#ifndef snprintf
-  char *p = (char *) snprintf;
-#endif
-
-
-  ;
-  return 0;
-}
-
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  groff_cv_decl_needed_snprintf=no
-else
-  groff_cv_decl_needed_snprintf=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
-   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $groff_cv_decl_needed_snprintf" >&5
-$as_echo "$groff_cv_decl_needed_snprintf" >&6; }
-   if test $groff_cv_decl_needed_snprintf = yes; then
-
-$as_echo "#define NEED_DECLARATION_SNPRINTF 1" >>confdefs.h
-
-   fi
-   ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether srand must be declared" >&5
 $as_echo_n "checking whether srand must be declared... " >&6; }
    ac_ext=cpp
@@ -7396,79 +21329,6 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether vsnprintf must be declared" >&5
-$as_echo_n "checking whether vsnprintf must be declared... " >&6; }
-   ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-   if ${groff_cv_decl_needed_vsnprintf+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-
-
-#include <stdio.h>
-#ifdef HAVE_STRING_H
-#include <string.h>
-#endif
-#ifdef HAVE_STRINGS_H
-#include <strings.h>
-#endif
-#ifdef HAVE_STDLIB_H
-#include <stdlib.h>
-#endif
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
-#endif
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#ifdef HAVE_MATH_H
-#include <math.h>
-#endif
-
-
-int
-main ()
-{
-
-
-#ifndef vsnprintf
-  char *p = (char *) vsnprintf;
-#endif
-
-
-  ;
-  return 0;
-}
-
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  groff_cv_decl_needed_vsnprintf=no
-else
-  groff_cv_decl_needed_vsnprintf=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
-   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $groff_cv_decl_needed_vsnprintf" >&5
-$as_echo "$groff_cv_decl_needed_vsnprintf" >&6; }
-   if test $groff_cv_decl_needed_vsnprintf = yes; then
-
-$as_echo "#define NEED_DECLARATION_VSNPRINTF 1" >>confdefs.h
-
-   fi
-   ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
 ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -8203,77 +22063,6 @@ ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
 
-# Make sure we can run config.sub.
-$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
-  as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
-$as_echo_n "checking build system type... " >&6; }
-if ${ac_cv_build+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_build_alias=$build_alias
-test "x$ac_build_alias" = x &&
-  ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
-test "x$ac_build_alias" = x &&
-  as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
-ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
-  as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
-$as_echo "$ac_cv_build" >&6; }
-case $ac_cv_build in
-*-*-*) ;;
-*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
-esac
-build=$ac_cv_build
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_build
-shift
-build_cpu=$1
-build_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-build_os=$*
-IFS=$ac_save_IFS
-case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
-$as_echo_n "checking host system type... " >&6; }
-if ${ac_cv_host+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "x$host_alias" = x; then
-  ac_cv_host=$ac_cv_build
-else
-  ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
-    as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
-$as_echo "$ac_cv_host" >&6; }
-case $ac_cv_host in
-*-*-*) ;;
-*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
-esac
-host=$ac_cv_host
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_host
-shift
-host_cpu=$1
-host_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-host_os=$*
-IFS=$ac_save_IFS
-case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
-
-
 
       if test "X$prefix" = "XNONE"; then
     acl_final_prefix="$ac_default_prefix"
 $as_echo "
          $am_cv_proto_iconv" >&6; }
 
-cat >>confdefs.h <<_ACEOF
-#define ICONV_CONST $am_cv_proto_iconv_arg1
-_ACEOF
-
-
-  fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-# we need LIBEXT
-LIBEXT=$acl_libext
-
-
-# checks for functions
-
-
-
-  for ac_header in $ac_header_list
-do :
-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
-"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+cat >>confdefs.h <<_ACEOF
+#define ICONV_CONST $am_cv_proto_iconv_arg1
 _ACEOF
 
-fi
 
-done
+  fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
 
+# we need LIBEXT
+LIBEXT=$acl_libext
 
 
+# checks for functions
 
 
 
@@ -9671,19 +23441,6 @@ esac
 
 fi
 
-ac_fn_c_check_func "$LINENO" "snprintf" "ac_cv_func_snprintf"
-if test "x$ac_cv_func_snprintf" = xyes; then :
-  $as_echo "#define HAVE_SNPRINTF 1" >>confdefs.h
-
-else
-  case " $LIBOBJS " in
-  *" snprintf.$ac_objext "* ) ;;
-  *) LIBOBJS="$LIBOBJS snprintf.$ac_objext"
- ;;
-esac
-
-fi
-
 ac_fn_c_check_func "$LINENO" "strcasecmp" "ac_cv_func_strcasecmp"
 if test "x$ac_cv_func_strcasecmp" = xyes; then :
   $as_echo "#define HAVE_STRCASECMP 1" >>confdefs.h
@@ -9737,25 +23494,6 @@ esac
 fi
 
 
-# vsnprintf is in the same source file as snprintf
-for ac_func in vsnprintf
-do :
-  ac_fn_c_check_func "$LINENO" "vsnprintf" "ac_cv_func_vsnprintf"
-if test "x$ac_cv_func_vsnprintf" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_VSNPRINTF 1
-_ACEOF
-
-else
-  case " $LIBOBJS " in
-  *" snprintf.$ac_objext "* ) ;;
-  *) LIBOBJS="$LIBOBJS snprintf.$ac_objext"
- ;;
-esac
-
-fi
-done
-
 LIBS="$saved_libs"
 for ac_func in gettimeofday isatty kill rename setlocale strsep
 do :
@@ -10025,6 +23763,15 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
 fi
 
 
+# URW fonts extra dir
+
+# Check whether --with-urw-fonts-dir was given.
+if test "${with_urw_fonts_dir+set}" = set; then :
+  withval=$with_urw_fonts_dir; urwfontsdir="$withval"
+fi
+
+
+
 # other random stuff
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking default value for grops -b option" >&5
 $as_echo_n "checking default value for grops -b option... " >&6; }
@@ -10036,15 +23783,18 @@ $as_echo "$BROKEN_SPOOLER_FLAGS" >&6; }
 $as_echo_n "checking default paper size... " >&6; }
    groff_prefix=$prefix
    test "x$prefix" = "xNONE" && groff_prefix=$ac_default_prefix
+   if test -z "$PAGE" && test -r /etc/papersize; then
+     PAGE=`cat /etc/papersize | sed -e 's/^ *#.*//g' | tr -d "\n" | awk '{ print  }'`
+   fi
    if test -z "$PAGE"; then
      descfile=
-     if test -r $groff_prefix/share/groff/font/devps/DESC; then
+     if test -r "$groff_prefix"/share/groff/font/devps/DESC; then
        descfile=$groff_prefix/share/groff/font/devps/DESC
-     elif test -r $groff_prefix/lib/groff/font/devps/DESC; then
+     elif test -r "$groff_prefix"/lib/groff/font/devps/DESC; then
        descfile=$groff_prefix/lib/groff/font/devps/DESC
      else
-       for f in $groff_prefix/share/groff/*/font/devps/DESC; do
-        if test -r $f; then
+       for f in "$groff_prefix"/share/groff/*/font/devps/DESC; do
+        if test -r "$f"; then
           descfile=$f
           break
         fi
@@ -10052,9 +23802,9 @@ $as_echo_n "checking default paper size... " >&6; }
      fi
 
      if test -n "$descfile"; then
-       if grep '^paperlength[   ]\+841890' $descfile >/dev/null 2>&1; then
+       if grep '^paperlength[   ]\+841890' "$descfile" >/dev/null 2>&1; then
         PAGE=A4
-       elif grep '^papersize[   ]\+[aA]4' $descfile >/dev/null 2>&1; then
+       elif grep '^papersize[   ]\+[aA]4' "$descfile" >/dev/null 2>&1; then
         PAGE=A4
        fi
      fi
@@ -10070,7 +23820,7 @@ $as_echo_n "checking default paper size... " >&6; }
         dom=`(hostname) 2>/dev/null | grep '\.'`
        fi
      fi
-     # If the top-level domain is two letters and it's not `us' or `ca'
+     # If the top-level domain is two letters and it's not 'us' or 'ca'
      # then they probably use A4 paper.
      case "$dom" in
      *.[Uu][Ss]|*.[Cc][Aa])
@@ -10168,6 +23918,54 @@ $as_echo_n "checking which system macro packages should be made available... " >
    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tmac_wrap" >&5
 $as_echo "$tmac_wrap" >&6; }
 
+
+# Check whether --with-compatibility-wrappers was given.
+if test "${with_compatibility_wrappers+set}" = set; then :
+  withval=$with_compatibility_wrappers; compatibility_wrappers="$withval"
+else
+  compatibility_wrappers="check"
+fi
+
+
+    if test "x$compatibility_wrappers" != "xcheck"  -a \
+            "x$compatibility_wrappers" != "xyes"    -a \
+            "x$compatibility_wrappers" != "xno"     -a \
+            "x$compatibility_wrappers" != "xmanual"
+    then
+         { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Invalid '--with-compatibility-wrappers' argument: '$compatibility_wrappers' - assuming 'check' requested." >&5
+$as_echo "$as_me: WARNING: Invalid '--with-compatibility-wrappers' argument: '$compatibility_wrappers' - assuming 'check' requested." >&2;}
+         compatibility_wrappers="check"
+    fi
+
+    if test "x$tmac_wrap" = "x"
+    then
+        # No Operating System Macro Sets Present
+        if   test "x$compatibility_wrappers" = "xcheck"
+        then
+            compatibility_wrappers="no"
+        elif test "x$compatibility_wrappers" = "xyes"
+        then
+            as_fn_error $? "No non-GNU macro sets found - cannot create and install compatibility wrappers" "$LINENO" 5
+        elif test "x$compatibility_wrappers" = "xno"
+        then
+            : # No action required
+        elif test "x$compatibility_wrappers" = "xmanual"
+        then
+            # 'manual' allows quiet conversion to 'no' to support
+            # cross-platform build instructions
+            compatibility_wrappers="no"
+        fi
+    else
+        # One or more Operating System Macro Sets Present
+        if   test "x$compatibility_wrappers" = "xcheck"
+        then
+            compatibility_wrappers="yes"
+        fi
+    fi
+
+    # Now compatibility_wrappers can only be yes, no or manual
+
+
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking separator character to use in groff search paths" >&5
 $as_echo_n "checking separator character to use in groff search paths... " >&6; }
    cp ${srcdir}/src/include/nonposix.h conftest.h
@@ -10370,7 +24168,7 @@ fi
 
 
       if test $pnmcut = missing; then
-       missing="$missing \`pnmcut'"
+       missing="$missing 'pnmcut'"
       fi;# Extract the first word of "pnmcrop", so it can be a program name with args.
 set dummy pnmcrop; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
@@ -10410,7 +24208,7 @@ fi
 
 
       if test $pnmcrop = missing; then
-       missing="$missing \`pnmcrop'"
+       missing="$missing 'pnmcrop'"
       fi;# Extract the first word of "pnmtopng", so it can be a program name with args.
 set dummy pnmtopng; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
@@ -10450,7 +24248,7 @@ fi
 
 
       if test $pnmtopng = missing; then
-       missing="$missing \`pnmtopng'"
+       missing="$missing 'pnmtopng'"
       fi;# Extract the first word of "psselect", so it can be a program name with args.
 set dummy psselect; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
@@ -10490,7 +24288,7 @@ fi
 
 
       if test $psselect = missing; then
-       missing="$missing \`psselect'"
+       missing="$missing 'psselect'"
       fi;# Extract the first word of "pnmtops", so it can be a program name with args.
 set dummy pnmtops; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 
 
       if test $pnmtops = missing; then
-       missing="$missing \`pnmtops'"
+       missing="$missing 'pnmtops'"
       fi;
 
-   test "$GHOSTSCRIPT" = "missing" && missing="$missing \`gs'"
+   test "$GHOSTSCRIPT" = "missing" && missing="$missing 'gs'"
 
    if test -z "$missing"; then
      if test $docadd_html = yes; then
@@ -10716,8 +24514,8 @@ make_pdfdoc=
 
 
    missing=""
-   test "$AWK" = missing && missing="\`awk'"
-   test "$GHOSTSCRIPT" = missing && missing="$missing \`gs'"
+   test "$AWK" = missing && missing="'awk'"
+   test "$GHOSTSCRIPT" = missing && missing="$missing 'gs'"
    if test -z "$missing"; then
      if test $docadd_pdf = yes; then
        make_pdfdoc=pdfdoc
@@ -10770,231 +24568,342 @@ $as_echo "no" >&6; }
      pnmtops_nosetpage="pnmtops"
    fi
 
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C Library >= 2.1 or uClibc" >&5
-$as_echo_n "checking whether we are using the GNU C Library >= 2.1 or uClibc... " >&6; }
-if ${ac_cv_gnu_library_2_1+:} false; then :
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether make has builtin variable RM" >&5
+$as_echo_n "checking whether make has builtin variable RM... " >&6; }
+cat <<EOF > test_make_rm.mk
+all:
+       @if test -n "\$(RM)"; then \
+          echo "yes"; \
+       else \
+          echo "no"; \
+       fi
+EOF
+  groff_is_rm_defined=`make -sf test_make_rm.mk`
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $groff_is_rm_defined" >&5
+$as_echo "$groff_is_rm_defined" >&6; }
+  rm -f test_make_rm.mk
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a diff program that supports option -D" >&5
+$as_echo_n "checking for a diff program that supports option -D... " >&6; }
+  groff_has_diff_d_option=no
+  DIFF_PROG=diff
+  diff -Dx /dev/null /dev/null >/dev/null 2>&1 && groff_has_diff_d_option=yes
+  if test "$groff_has_diff_d_option" = no; then
+    for ac_prog in gdiff
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_GDIFF+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#include <features.h>
-#ifdef __GNU_LIBRARY__
- #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2)
-  Lucky GNU user
- #endif
-#endif
-#ifdef __UCLIBC__
- Lucky user
-#endif
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "Lucky" >/dev/null 2>&1; then :
-  ac_cv_gnu_library_2_1=yes
+  if test -n "$GDIFF"; then
+  ac_cv_prog_GDIFF="$GDIFF" # Let the user override the test.
 else
-  ac_cv_gnu_library_2_1=no
-fi
-rm -f conftest*
-
-
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_GDIFF="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_gnu_library_2_1" >&5
-$as_echo "$ac_cv_gnu_library_2_1" >&6; }
-
-    GLIBC21="$ac_cv_gnu_library_2_1"
-
-
-
-
-
-  for ac_func in $ac_func_list
-do :
-  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
 fi
-done
-
-
-
+GDIFF=$ac_cv_prog_GDIFF
+if test -n "$GDIFF"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GDIFF" >&5
+$as_echo "$GDIFF" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
 
 
+  test -n "$GDIFF" && break
+done
 
+    if test -n "$GDIFF"; then
+      "$GDIFF" -Dx /dev/null /dev/null >/dev/null 2>&1 && groff_has_diff_d_option=yes
+      if test "$groff_has_diff_d_option" = yes; then
+        DIFF_PROG="$GDIFF"
+      fi
+    fi
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $groff_has_diff_d_option" >&5
+$as_echo "$groff_has_diff_d_option" >&6; }
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether test supports option -ef" >&5
+$as_echo_n "checking whether test supports option -ef... " >&6; }
+  HAVE_TEST_EF_OPTION=no
+  test /dev/null -ef /dev/null > /dev/null 2>&1 && HAVE_TEST_EF_OPTION=yes
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $HAVE_TEST_EF_OPTION" >&5
+$as_echo "$HAVE_TEST_EF_OPTION" >&6; }
 
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working fcntl.h" >&5
-$as_echo_n "checking for working fcntl.h... " >&6; }
-if ${gl_cv_header_working_fcntl_h+:} false; then :
+for ac_prog in bash
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_BASH_PROG+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test "$cross_compiling" = yes; then :
-  gl_cv_header_working_fcntl_h=cross-compiling
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <sys/types.h>
-           #include <sys/stat.h>
-           #if HAVE_UNISTD_H
-           # include <unistd.h>
-           #else /* on Windows with MSVC */
-           # include <io.h>
-           # include <stdlib.h>
-           # defined sleep(n) _sleep ((n) * 1000)
-           #endif
-           #include <fcntl.h>
-           #ifndef O_NOATIME
-            #define O_NOATIME 0
-           #endif
-           #ifndef O_NOFOLLOW
-            #define O_NOFOLLOW 0
-           #endif
-           static int const constants[] =
-            {
-              O_CREAT, O_EXCL, O_NOCTTY, O_TRUNC, O_APPEND,
-              O_NONBLOCK, O_SYNC, O_ACCMODE, O_RDONLY, O_RDWR, O_WRONLY
-            };
-
-int
-main ()
-{
-
-            int result = !constants;
-            #if HAVE_SYMLINK
-            {
-              static char const sym[] = "conftest.sym";
-              if (symlink ("/dev/null", sym) != 0)
-                result |= 2;
-              else
-                {
-                  int fd = open (sym, O_WRONLY | O_NOFOLLOW | O_CREAT, 0);
-                  if (fd >= 0)
-                    {
-                      close (fd);
-                      result |= 4;
-                    }
-                }
-              if (unlink (sym) != 0 || symlink (".", sym) != 0)
-                result |= 2;
-              else
-                {
-                  int fd = open (sym, O_RDONLY | O_NOFOLLOW);
-                  if (fd >= 0)
-                    {
-                      close (fd);
-                      result |= 4;
-                    }
-                }
-              unlink (sym);
-            }
-            #endif
-            {
-              static char const file[] = "confdefs.h";
-              int fd = open (file, O_RDONLY | O_NOATIME);
-              if (fd < 0)
-                result |= 8;
-              else
-                {
-                  struct stat st0;
-                  if (fstat (fd, &st0) != 0)
-                    result |= 16;
-                  else
-                    {
-                      char c;
-                      sleep (1);
-                      if (read (fd, &c, 1) != 1)
-                        result |= 24;
-                      else
-                        {
-                          if (close (fd) != 0)
-                            result |= 32;
-                          else
-                            {
-                              struct stat st1;
-                              if (stat (file, &st1) != 0)
-                                result |= 40;
-                              else
-                                if (st0.st_atime != st1.st_atime)
-                                  result |= 64;
-                            }
-                        }
-                    }
-                }
-            }
-            return result;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  gl_cv_header_working_fcntl_h=yes
+  case $BASH_PROG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_BASH_PROG="$BASH_PROG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_BASH_PROG="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+BASH_PROG=$ac_cv_path_BASH_PROG
+if test -n "$BASH_PROG"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BASH_PROG" >&5
+$as_echo "$BASH_PROG" >&6; }
 else
-  case $? in #(
-        4) gl_cv_header_working_fcntl_h='no (bad O_NOFOLLOW)';; #(
-        64) gl_cv_header_working_fcntl_h='no (bad O_NOATIME)';; #(
-        68) gl_cv_header_working_fcntl_h='no (bad O_NOATIME, O_NOFOLLOW)';; #(
-         *) gl_cv_header_working_fcntl_h='no';;
-        esac
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
+
+
+  test -n "$BASH_PROG" && break
+done
+test -n "$BASH_PROG" || BASH_PROG="no"
+
+  if test x$BASH_PROG = xno; then
+     BASH_PROG=/bin/sh
+  fi
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C Library >= 2.1 or uClibc" >&5
+$as_echo_n "checking whether we are using the GNU C Library >= 2.1 or uClibc... " >&6; }
+if ${ac_cv_gnu_library_2_1+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <features.h>
+#ifdef __GNU_LIBRARY__
+ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2)
+  Lucky GNU user
+ #endif
+#endif
+#ifdef __UCLIBC__
+ Lucky user
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "Lucky" >/dev/null 2>&1; then :
+  ac_cv_gnu_library_2_1=yes
+else
+  ac_cv_gnu_library_2_1=no
 fi
+rm -f conftest*
+
+
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_working_fcntl_h" >&5
-$as_echo "$gl_cv_header_working_fcntl_h" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_gnu_library_2_1" >&5
+$as_echo "$ac_cv_gnu_library_2_1" >&6; }
 
-  case $gl_cv_header_working_fcntl_h in #(
-  *O_NOATIME* | no | cross-compiling) ac_val=0;; #(
-  *) ac_val=1;;
-  esac
+    GLIBC21="$ac_cv_gnu_library_2_1"
 
-cat >>confdefs.h <<_ACEOF
-#define HAVE_WORKING_O_NOATIME $ac_val
-_ACEOF
 
 
-  case $gl_cv_header_working_fcntl_h in #(
-  *O_NOFOLLOW* | no | cross-compiling) ac_val=0;; #(
-  *) ac_val=1;;
-  esac
 
-cat >>confdefs.h <<_ACEOF
-#define HAVE_WORKING_O_NOFOLLOW $ac_val
-_ACEOF
 
 
-ac_fn_c_check_decl "$LINENO" "getc_unlocked" "ac_cv_have_decl_getc_unlocked" "$ac_includes_default"
-if test "x$ac_cv_have_decl_getc_unlocked" = xyes; then :
-  ac_have_decl=1
+
+
+
+
+
+# checks for presence of URW fonts (requires ghostscript, which is
+# checked in GROFF_HTML_PROGRAMS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether URW fonts in pfb format are available" >&5
+$as_echo_n "checking whether URW fonts in pfb format are available... " >&6; }
+
+
+   groff_have_urw_fonts=no
+   if test "$AWK" = "missing" -o "$GHOSTSCRIPT" = "missing"; then
+     { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: awk and gs are required, can't look for URW fonts" >&5
+$as_echo "$as_me: WARNING: awk and gs are required, can't look for URW fonts" >&2;}
+   else
+     _list_paths=`$GHOSTSCRIPT -h | $AWK 'BEGIN { found = 0 } /Search path:/ { found = 1 } /^ *\// { print $'0' }'| tr : ' '`
+     _list_paths="$_list_paths /usr/share/fonts/type1/gsfonts/ \
+               /opt/local/share/fonts/urw-fonts/"
+     if test -n "$urwfontsdir"; then
+       _list_paths="$ _list_paths $urwfontsdir"
+     fi
+     for k in $_list_paths; do
+       if test -f $k/a010013l.pfb; then
+         { $as_echo "$as_me:${as_lineno-$LINENO}: result: found in $k" >&5
+$as_echo "found in $k" >&6; }
+         groff_have_urw_fonts=yes
+         break
+       fi
+     done
+   fi
+   if test $groff_have_urw_fonts = no; then
+     { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+   fi
+
+
+
+ if test -n "$make_winscripts"; then
+  BUILD_WINSCRIPTS_TRUE=
+  BUILD_WINSCRIPTS_FALSE='#'
 else
-  ac_have_decl=0
+  BUILD_WINSCRIPTS_TRUE='#'
+  BUILD_WINSCRIPTS_FALSE=
 fi
 
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_GETC_UNLOCKED $ac_have_decl
-_ACEOF
 
+# If X11 is not available, don't build:
+# font/devX75
+# font/devX75-12
+# font/devX100
+# font/devX100-12
+# src/devices/xditview
+# src/utils/xtotroff
+# src/libs/libxutil
+ if test "x$groff_no_x" = "xyes"; then
+  WITHOUT_X11_TRUE=
+  WITHOUT_X11_FALSE='#'
+else
+  WITHOUT_X11_TRUE='#'
+  WITHOUT_X11_FALSE=
+fi
+
+
+# make builtin variable RM
+ if test "x$groff_is_rm_defined" = "xno"; then
+  MAKE_DONT_HAVE_RM_TRUE=
+  MAKE_DONT_HAVE_RM_FALSE='#'
+else
+  MAKE_DONT_HAVE_RM_TRUE='#'
+  MAKE_DONT_HAVE_RM_FALSE=
+fi
+
+
+# Some programs have a "g" prefix if an existing groff installation is detected
+ if test x$g = xg; then
+  USEPROGRAMPREFIX_TRUE=
+  USEPROGRAMPREFIX_FALSE='#'
+else
+  USEPROGRAMPREFIX_TRUE='#'
+  USEPROGRAMPREFIX_FALSE=
+fi
+
+
+ if test -n "$make_infodoc"; then
+  BUILD_INFODOC_TRUE=
+  BUILD_INFODOC_FALSE='#'
+else
+  BUILD_INFODOC_TRUE='#'
+  BUILD_INFODOC_FALSE=
+fi
 
+ if test -n "$make_htmldoc"; then
+  BUILD_HTML_TRUE=
+  BUILD_HTML_FALSE='#'
+else
+  BUILD_HTML_TRUE='#'
+  BUILD_HTML_FALSE=
+fi
 
+ if test -n "$make_htmlexamples"; then
+  BUILD_HTMLEXAMPLES_TRUE=
+  BUILD_HTMLEXAMPLES_FALSE='#'
+else
+  BUILD_HTMLEXAMPLES_TRUE='#'
+  BUILD_HTMLEXAMPLES_FALSE=
+fi
 
+ if test -n "$make_pdfdoc"; then
+  BUILD_PDFDOC_TRUE=
+  BUILD_PDFDOC_FALSE='#'
+else
+  BUILD_PDFDOC_TRUE='#'
+  BUILD_PDFDOC_FALSE=
+fi
 
+ if test -n "$make_pdfexamples"; then
+  BUILD_PDFEXAMPLES_TRUE=
+  BUILD_PDFEXAMPLES_FALSE='#'
+else
+  BUILD_PDFEXAMPLES_TRUE='#'
+  BUILD_PDFEXAMPLES_FALSE=
+fi
 
+ if test -n "$make_otherdoc"; then
+  BUILD_OTHERDOC_TRUE=
+  BUILD_OTHERDOC_FALSE='#'
+else
+  BUILD_OTHERDOC_TRUE='#'
+  BUILD_OTHERDOC_FALSE=
+fi
 
+ if test -n "$make_examples"; then
+  BUILD_EXAMPLES_TRUE=
+  BUILD_EXAMPLES_FALSE='#'
+else
+  BUILD_EXAMPLES_TRUE='#'
+  BUILD_EXAMPLES_FALSE=
+fi
 
+ if test -n "$make_install_shipped_htmldoc"; then
+  INSTALL_SHIPPED_HTML_TRUE=
+  INSTALL_SHIPPED_HTML_FALSE='#'
+else
+  INSTALL_SHIPPED_HTML_TRUE='#'
+  INSTALL_SHIPPED_HTML_FALSE=
+fi
 
+ if test "x$groff_have_pdftools" = "xyes" ; then
+  HAVE_PDFTOOLS_TRUE=
+  HAVE_PDFTOOLS_FALSE='#'
+else
+  HAVE_PDFTOOLS_TRUE='#'
+  HAVE_PDFTOOLS_FALSE=
+fi
 
-ac_config_files="$ac_config_files stamp-h"
+ if test "x$groff_have_texi2dvi" = "xyes" ; then
+  HAVE_TEXI2DVI_TRUE=
+  HAVE_TEXI2DVI_FALSE='#'
+else
+  HAVE_TEXI2DVI_TRUE='#'
+  HAVE_TEXI2DVI_FALSE=
+fi
 
-ac_config_files="$ac_config_files Makefile doc/Makefile src/utils/xtotroff/Makefile"
 
-ac_config_files="$ac_config_files contrib/gdiffmk/tests/runtests"
+ac_config_files="$ac_config_files Makefile"
 
 ac_config_files="$ac_config_files test-groff"
 
@@ -11107,8 +25016,187 @@ LIBOBJS=$ac_libobjs
 LTLIBOBJS=$ac_ltlibobjs
 
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5
+$as_echo_n "checking that generated files are newer than configure... " >&6; }
+   if test -n "$am_sleep_pid"; then
+     # Hide warnings about reused PIDs.
+     wait $am_sleep_pid 2>/dev/null
+   fi
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5
+$as_echo "done" >&6; }
+if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
+  as_fn_error $? "conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+  as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+ if test -n "$EXEEXT"; then
+  am__EXEEXT_TRUE=
+  am__EXEEXT_FALSE='#'
+else
+  am__EXEEXT_TRUE='#'
+  am__EXEEXT_FALSE=
+fi
+
+if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then
+  as_fn_error $? "conditional \"am__fastdepCXX\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${GL_COND_LIBTOOL_TRUE}" && test -z "${GL_COND_LIBTOOL_FALSE}"; then
+  as_fn_error $? "conditional \"GL_COND_LIBTOOL\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${GL_GENERATE_ALLOCA_H_TRUE}" && test -z "${GL_GENERATE_ALLOCA_H_FALSE}"; then
+  as_fn_error $? "conditional \"GL_GENERATE_ALLOCA_H\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${GL_GENERATE_ERRNO_H_TRUE}" && test -z "${GL_GENERATE_ERRNO_H_FALSE}"; then
+  as_fn_error $? "conditional \"GL_GENERATE_ERRNO_H\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${GL_GENERATE_FLOAT_H_TRUE}" && test -z "${GL_GENERATE_FLOAT_H_FALSE}"; then
+  as_fn_error $? "conditional \"GL_GENERATE_FLOAT_H\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+
+
+if test -z "${GL_GENERATE_LIMITS_H_TRUE}" && test -z "${GL_GENERATE_LIMITS_H_FALSE}"; then
+  as_fn_error $? "conditional \"GL_GENERATE_LIMITS_H\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+
+
+
+  # Tell AC_LIBSOURCES where to find source files like alloca.c.
+
+
+  # This hack originated in bison.  It is required when using non-recursive
+  # automake rules to build from gnulib-provided lib/ sources.  Hence, LIB_DIR
+  # is usually simply "lib".  Those rules use the list of names like "fchdir.o"
+  # and "strstr.o" in gl_LIBOBJS.  With non-recursive make, we must prefix each
+  # such file name with the "lib/" prefix.  See also build-aux/prefix-gnulib-mk.
+  gl_LIBOBJS=`echo "$gl_LIBOBJS" | sed -e 's, , lib/,g'`
+
+  # Listing the names of the variables to prefix is error-prone.
+  # Rather, adjust each AC_SUBST'd variable whose name ends in '_H'
+  # and whose value ends in '.h'.
+  for ac_var in $ac_subst_vars
+  do
+    eval "ac_val=\$$ac_var"
+    case $ac_var:$ac_val in
+      *_H:*.h) eval "$ac_var=lib/\$$ac_var";;
+    esac
+  done
+
+
+if test -z "${GL_GENERATE_STDDEF_H_TRUE}" && test -z "${GL_GENERATE_STDDEF_H_FALSE}"; then
+  as_fn_error $? "conditional \"GL_GENERATE_STDDEF_H\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${GL_GENERATE_LIMITS_H_TRUE}" && test -z "${GL_GENERATE_LIMITS_H_FALSE}"; then
+  as_fn_error $? "conditional \"GL_GENERATE_LIMITS_H\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${GL_GENERATE_STDINT_H_TRUE}" && test -z "${GL_GENERATE_STDINT_H_FALSE}"; then
+  as_fn_error $? "conditional \"GL_GENERATE_STDINT_H\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${LIBUNISTRING_COMPILE_UNIWIDTH_WIDTH_TRUE}" && test -z "${LIBUNISTRING_COMPILE_UNIWIDTH_WIDTH_FALSE}"; then
+  as_fn_error $? "conditional \"LIBUNISTRING_COMPILE_UNIWIDTH_WIDTH\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+
+    gl_libobjs=
+    gl_ltlibobjs=
+    if test -n "$gl_LIBOBJS"; then
+      # Remove the extension.
+      sed_drop_objext='s/\.o$//;s/\.obj$//'
+      for i in `for i in $gl_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do
+        gl_libobjs="$gl_libobjs $i.$ac_objext"
+        gl_ltlibobjs="$gl_ltlibobjs $i.lo"
+      done
+    fi
+    gl_LIBOBJS=$gl_libobjs
+
+    gl_LTLIBOBJS=$gl_ltlibobjs
 
 
+
+    gltests_libobjs=
+    gltests_ltlibobjs=
+    if test -n "$gltests_LIBOBJS"; then
+      # Remove the extension.
+      sed_drop_objext='s/\.o$//;s/\.obj$//'
+      for i in `for i in $gltests_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do
+        gltests_libobjs="$gltests_libobjs $i.$ac_objext"
+        gltests_ltlibobjs="$gltests_ltlibobjs $i.lo"
+      done
+    fi
+    gltests_LIBOBJS=$gltests_libobjs
+
+    gltests_LTLIBOBJS=$gltests_ltlibobjs
+
+
+
+if test -z "${BUILD_WINSCRIPTS_TRUE}" && test -z "${BUILD_WINSCRIPTS_FALSE}"; then
+  as_fn_error $? "conditional \"BUILD_WINSCRIPTS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${WITHOUT_X11_TRUE}" && test -z "${WITHOUT_X11_FALSE}"; then
+  as_fn_error $? "conditional \"WITHOUT_X11\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${MAKE_DONT_HAVE_RM_TRUE}" && test -z "${MAKE_DONT_HAVE_RM_FALSE}"; then
+  as_fn_error $? "conditional \"MAKE_DONT_HAVE_RM\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${USEPROGRAMPREFIX_TRUE}" && test -z "${USEPROGRAMPREFIX_FALSE}"; then
+  as_fn_error $? "conditional \"USEPROGRAMPREFIX\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${BUILD_INFODOC_TRUE}" && test -z "${BUILD_INFODOC_FALSE}"; then
+  as_fn_error $? "conditional \"BUILD_INFODOC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${BUILD_HTML_TRUE}" && test -z "${BUILD_HTML_FALSE}"; then
+  as_fn_error $? "conditional \"BUILD_HTML\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${BUILD_HTMLEXAMPLES_TRUE}" && test -z "${BUILD_HTMLEXAMPLES_FALSE}"; then
+  as_fn_error $? "conditional \"BUILD_HTMLEXAMPLES\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${BUILD_PDFDOC_TRUE}" && test -z "${BUILD_PDFDOC_FALSE}"; then
+  as_fn_error $? "conditional \"BUILD_PDFDOC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${BUILD_PDFEXAMPLES_TRUE}" && test -z "${BUILD_PDFEXAMPLES_FALSE}"; then
+  as_fn_error $? "conditional \"BUILD_PDFEXAMPLES\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${BUILD_OTHERDOC_TRUE}" && test -z "${BUILD_OTHERDOC_FALSE}"; then
+  as_fn_error $? "conditional \"BUILD_OTHERDOC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${BUILD_EXAMPLES_TRUE}" && test -z "${BUILD_EXAMPLES_FALSE}"; then
+  as_fn_error $? "conditional \"BUILD_EXAMPLES\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${INSTALL_SHIPPED_HTML_TRUE}" && test -z "${INSTALL_SHIPPED_HTML_FALSE}"; then
+  as_fn_error $? "conditional \"INSTALL_SHIPPED_HTML\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAVE_PDFTOOLS_TRUE}" && test -z "${HAVE_PDFTOOLS_FALSE}"; then
+  as_fn_error $? "conditional \"HAVE_PDFTOOLS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAVE_TEXI2DVI_TRUE}" && test -z "${HAVE_TEXI2DVI_FALSE}"; then
+  as_fn_error $? "conditional \"HAVE_TEXI2DVI\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+
 : "${CONFIG_STATUS=./config.status}"
 ac_write_fail=0
 ac_clean_files_save=$ac_clean_files
@@ -11505,7 +25593,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by groff $as_me 1.22.3, which was
+This file was extended by GNU Troff $as_me 1.22.4, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -11532,6 +25620,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 # Files that config.status was made for.
 config_files="$ac_config_files"
 config_headers="$ac_config_headers"
+config_commands="$ac_config_commands"
 
 _ACEOF
 
@@ -11561,13 +25650,18 @@ $config_files
 Configuration headers:
 $config_headers
 
-Report bugs to <bug-groff@gnu.org>."
+Configuration commands:
+$config_commands
+
+Report bugs to <http://savannah.gnu.org/bugs/?group=groff>.
+GNU Troff home page: <http://www.gnu.org/software/groff/>.
+General help using GNU software: <http://www.gnu.org/gethelp/>."
 
 _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-groff config.status 1.22.3
+GNU Troff config.status 1.22.4
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
@@ -11578,6 +25672,7 @@ gives unlimited permission to copy, distribute and modify it."
 ac_pwd='$ac_pwd'
 srcdir='$srcdir'
 INSTALL='$INSTALL'
+MKDIR_P='$MKDIR_P'
 AWK='$AWK'
 test -n "\$AWK" || AWK=awk
 _ACEOF
@@ -11682,6 +25777,11 @@ _ASBOX
 
 _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+#
+# INIT-COMMANDS
+#
+AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}"
+
 _ACEOF
 
 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
@@ -11691,11 +25791,8 @@ for ac_config_target in $ac_config_targets
 do
   case $ac_config_target in
     "src/include/config.h") CONFIG_HEADERS="$CONFIG_HEADERS src/include/config.h:src/include/config.hin" ;;
-    "stamp-h") CONFIG_FILES="$CONFIG_FILES stamp-h" ;;
+    "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
     "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
-    "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;;
-    "src/utils/xtotroff/Makefile") CONFIG_FILES="$CONFIG_FILES src/utils/xtotroff/Makefile" ;;
-    "contrib/gdiffmk/tests/runtests") CONFIG_FILES="$CONFIG_FILES contrib/gdiffmk/tests/runtests" ;;
     "test-groff") CONFIG_FILES="$CONFIG_FILES test-groff" ;;
 
   *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
@@ -11710,6 +25807,7 @@ done
 if $ac_need_defaults; then
   test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
   test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
+  test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
 fi
 
 # Have a temporary directory for convenience.  Make it in the build tree
@@ -12006,7 +26104,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 fi # test -n "$CONFIG_HEADERS"
 
 
-eval set X "  :F $CONFIG_FILES  :H $CONFIG_HEADERS    "
+eval set X "  :F $CONFIG_FILES  :H $CONFIG_HEADERS    :C $CONFIG_COMMANDS"
 shift
 for ac_tag
 do
@@ -12144,6 +26242,11 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
   [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
   *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
   esac
+  ac_MKDIR_P=$MKDIR_P
+  case $MKDIR_P in
+  [\\/$]* | ?:[\\/]* ) ;;
+  */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
+  esac
 _ACEOF
 
 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
@@ -12198,6 +26301,7 @@ s&@builddir@&$ac_builddir&;t t
 s&@abs_builddir@&$ac_abs_builddir&;t t
 s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
 s&@INSTALL@&$ac_INSTALL&;t t
+s&@MKDIR_P@&$ac_MKDIR_P&;t t
 $ac_datarootdir_hack
 "
 eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
@@ -12242,15 +26346,143 @@ $as_echo "$as_me: $ac_file is unchanged" >&6;}
       && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
       || as_fn_error $? "could not create -" "$LINENO" 5
   fi
+# Compute "$ac_file"'s index in $config_headers.
+_am_arg="$ac_file"
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+  case $_am_header in
+    $_am_arg | $_am_arg:* )
+      break ;;
+    * )
+      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+  esac
+done
+echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" ||
+$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$_am_arg" : 'X\(//\)[^/]' \| \
+        X"$_am_arg" : 'X\(//\)$' \| \
+        X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$_am_arg" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`/stamp-h$_am_stamp_count
  ;;
 
-
+  :C)  { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
+$as_echo "$as_me: executing $ac_file commands" >&6;}
+ ;;
   esac
 
 
   case $ac_file$ac_mode in
-    "stamp-h":F) echo timestamp > stamp-h ;;
-    "contrib/gdiffmk/tests/runtests":F) chmod +x contrib/gdiffmk/tests/runtests ;;
+    "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
+  # Older Autoconf quotes --file arguments for eval, but not when files
+  # are listed without --file.  Let's play safe and only enable the eval
+  # if we detect the quoting.
+  # TODO: see whether this extra hack can be removed once we start
+  # requiring Autoconf 2.70 or later.
+  case $CONFIG_FILES in #(
+  *\'*) :
+    eval set x "$CONFIG_FILES" ;; #(
+  *) :
+    set x $CONFIG_FILES ;; #(
+  *) :
+     ;;
+esac
+  shift
+  # Used to flag and report bootstrapping failures.
+  am_rc=0
+  for am_mf
+  do
+    # Strip MF so we end up with the name of the file.
+    am_mf=`$as_echo "$am_mf" | sed -e 's/:.*$//'`
+    # Check whether this is an Automake generated Makefile which includes
+    # dependency-tracking related rules and includes.
+    # Grep'ing the whole file directly is not great: AIX grep has a line
+    # limit of 2048, but all sed's we know have understand at least 4000.
+    sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \
+      || continue
+    am_dirpart=`$as_dirname -- "$am_mf" ||
+$as_expr X"$am_mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$am_mf" : 'X\(//\)[^/]' \| \
+        X"$am_mf" : 'X\(//\)$' \| \
+        X"$am_mf" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$am_mf" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+    am_filepart=`$as_basename -- "$am_mf" ||
+$as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \
+        X"$am_mf" : 'X\(//\)$' \| \
+        X"$am_mf" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$am_mf" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+           s//\1/
+           q
+         }
+         /^X\/\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\/\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+    { echo "$as_me:$LINENO: cd "$am_dirpart" \
+      && sed -e '/# am--include-marker/d' "$am_filepart" \
+        | $MAKE -f - am--depfiles" >&5
+   (cd "$am_dirpart" \
+      && sed -e '/# am--include-marker/d' "$am_filepart" \
+        | $MAKE -f - am--depfiles) >&5 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); } || am_rc=$?
+  done
+  if test $am_rc -ne 0; then
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "Something went wrong bootstrapping makefile fragments
+    for automatic dependency tracking.  Try re-running configure with the
+    '--disable-dependency-tracking' option to at least be able to build
+    the package (albeit without support for automatic dependency tracking).
+See \`config.log' for more details" "$LINENO" 5; }
+  fi
+  { am_dirpart=; unset am_dirpart;}
+  { am_filepart=; unset am_filepart;}
+  { am_mf=; unset am_mf;}
+  { am_rc=; unset am_rc;}
+  rm -f conftest-deps.mk
+}
+ ;;
     "test-groff":F) chmod +x test-groff ;;
 
   esac
 echo "
 ${PACKAGE_NAME} version ${PACKAGE_VERSION}
 ----------------------------------------------------------------------
- Prefix            : ${prefix}
- Compiler          : ${CC} ${CFLAGS} ${CPPFLAGS}"
+ Prefix                          : ${prefix}
+ Compiler                        : ${CC} ${CFLAGS} ${CPPFLAGS}"
 if test "x$groff_no_x" = "xyes"; then
 echo "\
- X11 support       : no"
+ X11 support                     : no"
 else
 echo "\
- X11 support       : yes
- X11 resources dir : $appresdir"
+ X11 support                     : yes
+ X11 resources dir               : $appresdir"
 fi
 if test "x$doc" = x; then
 echo "\
- Doc build         : no"
+ Doc build                       : no"
 else
 echo "\
- Doc build         : ${doc} "
+ Doc build                       : ${doc} "
 fi
 echo "\
+ URW fonts for pdf               : $groff_have_urw_fonts
+ Use uchardet library for preconv: $groff_have_uchardet
+ pdftools for distcheck          : $groff_have_pdftools"
+echo "\
 ----------------------------------------------------------------------"
 
 if test -z "$groff_no_x"; then
@@ -12322,13 +26558,13 @@ if test -z "$groff_no_x"; then
 
     $appresdir
 
-  (existing files will be saved by appending \`.old' to the file
+  (existing files will be saved by appending '.old' to the file
   name).
 
   To install them into a different directory, say,
-  \`/etc/X11/app-defaults', add
-  \`--with-appresdir=/etc/X11/app-defaults' to the configure script
-  command line options and rerun it (\`prefix' value has no effect on
+  '/etc/X11/app-defaults', add
+  '--with-appresdir=/etc/X11/app-defaults' to the configure script
+  command-line options and rerun it ('prefix' value has no effect on
   a --with-appresdir option).
 
   If the gxditview resources are installed in a directory that is not
@@ -12337,7 +26573,7 @@ if test -z "$groff_no_x"; then
   /usr/share/X11/app-defaults and /etc/X11/app-defaults), you will
   have to set the environment variable XFILESEARCHPATH to this
   path.  More details can be found in the X(7) manual page, or in \"X
-  Toolkit Intrinsics - C Language Interface manual\"
+  Toolkit Intrinsics - C Language Interface manual\".
        " >&5
 $as_echo "$as_me:
   The application resource files for gxditview (GXditview and
@@ -12345,13 +26581,13 @@ $as_echo "$as_me:
 
     $appresdir
 
-  (existing files will be saved by appending \`.old' to the file
+  (existing files will be saved by appending '.old' to the file
   name).
 
   To install them into a different directory, say,
-  \`/etc/X11/app-defaults', add
-  \`--with-appresdir=/etc/X11/app-defaults' to the configure script
-  command line options and rerun it (\`prefix' value has no effect on
+  '/etc/X11/app-defaults', add
+  '--with-appresdir=/etc/X11/app-defaults' to the configure script
+  command-line options and rerun it ('prefix' value has no effect on
   a --with-appresdir option).
 
   If the gxditview resources are installed in a directory that is not
@@ -12360,7 +26596,57 @@ $as_echo "$as_me:
   /usr/share/X11/app-defaults and /etc/X11/app-defaults), you will
   have to set the environment variable XFILESEARCHPATH to this
   path.  More details can be found in the X(7) manual page, or in \"X
-  Toolkit Intrinsics - C Language Interface manual\"
+  Toolkit Intrinsics - C Language Interface manual\".
        " >&6;}
      fi
    fi
+if test "$groff_have_urw_fonts" = no; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}:
+  No URW fonts in .pfb format were found on your system, URW fonts
+  generation for 'devpdf' will not work properly.  These fonts can be
+  downloaded here:
+
+    http://downloads.ghostscript.com/public/fonts/urw-base35-v1.10.zip
+
+  By default groff will search these fonts in the paths given by \`gs
+  -h' and in these 2 default directories:
+  '/usr/share/fonts/type1/gsfonts/' and
+  '/opt/local/share/fonts/urw-fonts/' (paths used by
+  font/devpdf/Foundry.in).  You can also pass the option
+  '--with-urw-fonts-dir=DIR' to 'configure' to set a custom path.  You
+  would need to re-run the 'configure' script after installing these
+  fonts.
+
+  " >&5
+$as_echo "$as_me:
+  No URW fonts in .pfb format were found on your system, URW fonts
+  generation for 'devpdf' will not work properly.  These fonts can be
+  downloaded here:
+
+    http://downloads.ghostscript.com/public/fonts/urw-base35-v1.10.zip
+
+  By default groff will search these fonts in the paths given by \`gs
+  -h' and in these 2 default directories:
+  '/usr/share/fonts/type1/gsfonts/' and
+  '/opt/local/share/fonts/urw-fonts/' (paths used by
+  font/devpdf/Foundry.in).  You can also pass the option
+  '--with-urw-fonts-dir=DIR' to 'configure' to set a custom path.  You
+  would need to re-run the 'configure' script after installing these
+  fonts.
+
+  " >&6;}
+  fi
+
+if test "x$groff_have_uchardet" = "xno" -a "x$with_uchardet" != "xno"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:
+  uchardet library was not found; preprocessor 'preconv', which uses it to detect
+  the input file encoding, might not work properly (to check how and in which
+  order 'preconv' tries to determine the file encoding, see its man page).
+  " >&5
+$as_echo "$as_me: WARNING:
+  uchardet library was not found; preprocessor 'preconv', which uses it to detect
+  the input file encoding, might not work properly (to check how and in which
+  order 'preconv' tries to determine the file encoding, see its man page).
+  " >&2;}
+  fi
+
index c779165..28e75f1 100644 (file)
@@ -1,5 +1,5 @@
 # Autoconf configuration file for groff.
-# Copyright (C) 1989-2014 Free Software Foundation, Inc.
+# Copyright (C) 1989-2018 Free Software Foundation, Inc.
 #
 # This file is part of groff.
 #
 # for more details.
 #
 # You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #
 # Process this file with autoconf to produce a configure script.
 
-dnl Use `VERSION' and `REVISION' files to get version.
-m4_define([GROFF_VERSION_DATA], m4_include([VERSION]))
-m4_define([GROFF_REVISION_DATA], m4_include([REVISION]))
-
-dnl Strip off newline characters.
-m4_define([GROFF_VERSION],
-          m4_substr(GROFF_VERSION_DATA,
-                    [0], m4_decr(m4_len(GROFF_VERSION_DATA))))
-m4_define([GROFF_REVISION],
-          m4_substr(GROFF_REVISION_DATA,
-                    [0], m4_decr(m4_len(GROFF_REVISION_DATA))))
-
-dnl Don't use revision if it is zero.
-m4_define([GROFF_VERSION_STRING],
-          m4_if(m4_eval(GROFF_REVISION[ > 0]),
-                [1],
-                GROFF_VERSION[.]GROFF_REVISION,
-                GROFF_VERSION))
-
-AC_INIT([groff],
-        GROFF_VERSION_STRING,
-        [bug-groff@gnu.org],
-        [groff-]GROFF_VERSION_STRING)
+AC_INIT([GNU Troff],
+        m4_esyscmd([build-aux/git-version-gen --prefix "" .tarball-version]),
+        http://savannah.gnu.org/bugs/?group=groff,
+        [groff])
+
 AC_PREREQ([2.62])
 
+# SHORT_VERSION contains only the number of REVISION before the first '.',
+# e.g. if REVISION is '3.real.434-5aafd' then SHORT_VERSION is 'x.yy.3',
+# where x and yy are MAJOR_VERSION and MINOR_VERSION, respectively.
+AC_SUBST([SHORT_VERSION],
+       m4_bregexp(AC_PACKAGE_VERSION,[^\(\w+\.\w+\.\w+\).*$],[\1]))
+
+# Directories where the helper scripts should be found. This must be consistent
+# with the variable build_aux in bootstrap.conf
+AC_CONFIG_AUX_DIR([build-aux])
+
 AC_CONFIG_HEADERS([src/include/config.h:src/include/config.hin])
 AC_CONFIG_SRCDIR([src/roff/groff/groff.cpp])
 
 AC_USE_SYSTEM_EXTENSIONS
 
+AM_INIT_AUTOMAKE([subdir-objects])
+
+AM_SILENT_RULES([yes])
+
 # checks for programs
 AC_PROG_CC
 AC_PROG_CXX
+gl_EARLY
+gl_INIT
 GROFF_CXX_CHECK
 GROFF_EBCDIC
 GROFF_OS390
@@ -72,11 +70,17 @@ AC_PROG_EGREP
 GROFF_PROG_YACC
 GROFF_DOC_CHECK
 GROFF_MAKEINFO
+GROFF_TEXI2DVI
 AC_PROG_RANLIB
 GROFF_INSTALL_SH
 GROFF_INSTALL_INFO
 AC_PROG_INSTALL
 AC_PROG_LN_S
+AC_PROG_MKDIR_P
+GROFF_PROG_XPMTOPPM
+PKG_PROG_PKG_CONFIG
+GROFF_UCHARDET
+GROFF_PDFTOOLS
 
 # use a dummy substitution if no csh hack is necessary to avoid errors
 # with non-GNU sed programs
@@ -92,17 +96,14 @@ GROFF_POSIX
 # checks for header stuff
 GROFF_SRAND
 GROFF_NEED_DECLARATION([gettimeofday])
-GROFF_NEED_DECLARATION([hypot])
 GROFF_NEED_DECLARATION([popen])
 GROFF_NEED_DECLARATION([pclose])
 GROFF_NEED_DECLARATION([putenv])
 GROFF_NEED_DECLARATION([rand])
-GROFF_NEED_DECLARATION([snprintf])
 GROFF_NEED_DECLARATION([srand])
 GROFF_NEED_DECLARATION([strcasecmp])
 GROFF_NEED_DECLARATION([strncasecmp])
 GROFF_NEED_DECLARATION([vfprintf])
-GROFF_NEED_DECLARATION([vsnprintf])
 GROFF_SYS_NERR
 GROFF_SYS_ERRLIST
 GROFF_OSFCN_H
@@ -134,10 +135,8 @@ AC_SUBST([LIBEXT],[$acl_libext])
 AC_FUNC_MMAP
 saved_libs="$LIBS"
 LIBS="$LIBS $LIBC $LIBM"
-AC_REPLACE_FUNCS([fmod getcwd putenv snprintf strcasecmp \
+AC_REPLACE_FUNCS([fmod getcwd putenv strcasecmp \
                   strerror strncasecmp strtol])
-# vsnprintf is in the same source file as snprintf
-AC_CHECK_FUNCS([vsnprintf], [], [AC_LIBOBJ([snprintf])])
 LIBS="$saved_libs"
 AC_CHECK_FUNCS([gettimeofday isatty kill rename setlocale strsep])
 GROFF_MKSTEMP
@@ -151,46 +150,90 @@ GROFF_TRADITIONAL_CPP
 # checks for operating system services
 GROFF_WCOREFLAG
 
+# URW fonts extra dir
+GROFF_URW_FONTS_PATH
+
 # other random stuff
 GROFF_BROKEN_SPOOLER_FLAGS
 GROFF_PAGE
 GROFF_G
 GROFF_TMAC
+GROFF_WITH_COMPATIBILITY_WRAPPERS
 GROFF_TARGET_PATH_SEPARATOR
 GROFF_HTML_PROGRAMS
 GROFF_PDFDOC_PROGRAMS
 GROFF_PNMTOPS_NOSETPAGE
+GROFF_MAKE_RM
+GROFF_DIFF_D
+GROFF_HAVE_TEST_EF_OPTION
+GROFF_BASH
 gl_GLIBC21
 gl_LOCALCHARSET
 
-AC_CONFIG_FILES([stamp-h], [echo timestamp > stamp-h])
-AC_CONFIG_FILES([Makefile doc/Makefile src/utils/xtotroff/Makefile])
-AC_CONFIG_FILES([contrib/gdiffmk/tests/runtests],
-                [chmod +x contrib/gdiffmk/tests/runtests])
+# checks for presence of URW fonts (requires ghostscript, which is
+# checked in GROFF_HTML_PROGRAMS
+GROFF_URW_FONTS
+
+AM_CONDITIONAL([BUILD_WINSCRIPTS], [test -n "$make_winscripts"])
+
+# If X11 is not available, don't build:
+# font/devX75 
+# font/devX75-12
+# font/devX100
+# font/devX100-12
+# src/devices/xditview 
+# src/utils/xtotroff
+# src/libs/libxutil
+AM_CONDITIONAL([WITHOUT_X11], [test "x$groff_no_x" = "xyes"])
+
+# make builtin variable RM
+AM_CONDITIONAL([MAKE_DONT_HAVE_RM], [test "x$groff_is_rm_defined" = "xno"])
+
+# Some programs have a "g" prefix if an existing groff installation is detected
+AM_CONDITIONAL([USEPROGRAMPREFIX], [test x$g = xg])
+
+AM_CONDITIONAL([BUILD_INFODOC], [test -n "$make_infodoc"])
+AM_CONDITIONAL([BUILD_HTML], [test -n "$make_htmldoc"])
+AM_CONDITIONAL([BUILD_HTMLEXAMPLES], [test -n "$make_htmlexamples"])
+AM_CONDITIONAL([BUILD_PDFDOC], [test -n "$make_pdfdoc"])
+AM_CONDITIONAL([BUILD_PDFEXAMPLES], [test -n "$make_pdfexamples"])
+AM_CONDITIONAL([BUILD_OTHERDOC], [test -n "$make_otherdoc"])
+AM_CONDITIONAL([BUILD_EXAMPLES], [test -n "$make_examples"])
+AM_CONDITIONAL([INSTALL_SHIPPED_HTML], [test -n "$make_install_shipped_htmldoc"])
+AM_CONDITIONAL([HAVE_PDFTOOLS], [test "x$groff_have_pdftools" = "xyes" ])
+AM_CONDITIONAL([HAVE_TEXI2DVI], [test "x$groff_have_texi2dvi" = "xyes" ])
+
+AC_CONFIG_FILES([Makefile])
 AC_CONFIG_FILES([test-groff], [chmod +x test-groff])
 AC_OUTPUT
 
 echo "
 ${PACKAGE_NAME} version ${PACKAGE_VERSION}
 ----------------------------------------------------------------------
- Prefix            : ${prefix}
- Compiler          : ${CC} ${CFLAGS} ${CPPFLAGS}"
+ Prefix                          : ${prefix}
+ Compiler                        : ${CC} ${CFLAGS} ${CPPFLAGS}"
 if test "x$groff_no_x" = "xyes"; then
 echo "\
- X11 support       : no"
+ X11 support                     : no"
 else
 echo "\
- X11 support       : yes
- X11 resources dir : $appresdir"
+ X11 support                     : yes
+ X11 resources dir               : $appresdir"
 fi
 if test "x$doc" = x; then
 echo "\
- Doc build         : no"
+ Doc build                       : no"
 else
 echo "\
- Doc build         : ${doc} "
+ Doc build                       : ${doc} "
 fi
 echo "\
+ URW fonts for pdf               : $groff_have_urw_fonts
+ Use uchardet library for preconv: $groff_have_uchardet
+ pdftools for distcheck          : $groff_have_pdftools"
+echo "\
 ----------------------------------------------------------------------"
 
 GROFF_APPRESDIR_CHECK
+GROFF_URW_FONTS_CHECK
+GROFF_UCHARDET_CHECK
index 4c3ddf3..02f4c07 100644 (file)
@@ -1,3 +1,22 @@
+2018-02-28  Werner LEMBERG  <wl@gnu.org>
+
+       * chem.am (chem, README): Use $(AM_V_GEN) to silence file generation.
+
+2015-08-22  Bernd Warken  <bernd.warken@web.de>
+
+       * chem.1.man: Rename `chem.man'.
+
+       * chem.am: Include renaming.
+
+2015-08-05  Bernd Warken  <bernd.warken@web.de>
+
+       * chem.am: Add `Last update'.  Setup Emacs makefile-automake-mode.
+
+2015-04-03  Werner LEMBERG  <wl@gnu.org>
+
+       * chem.man: Make it work in compatibility mode.
+       (EL): Fix typo.
+
 2014-09-25  Bernd Warken  <bernd.warken@web.de>
 
        * chem.pl: New chem version 1.0.5.
 ________________________________________________________________
 License
 
-Copyright (C) 2006-2014  Free Software Foundation, Inc.
+Copyright (C) 2006-2018  Free Software Foundation, Inc.
 Written by Bernd Warken <groff-bernd.warken-72@web.de>.
 
 Copying and distribution of this file, with or without
diff --git a/contrib/chem/Makefile.sub b/contrib/chem/Makefile.sub
deleted file mode 100644 (file)
index b13dc2e..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-# Makefile.sub for `chem'
-
-# File position: <groff-source>/contrib/chem/Makefile.sub
-
-# Copyright (C) 2006-2014  Free Software Foundation, Inc.
-# Written by Bernd Warken <groff-bernd.warken-72@web.de>.
-
-# This file is part of `chem' which is part of `groff'.
-
-# `groff' is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License (GPL) version 2 as
-# published by the Free Software Foundation.
-
-# `groff' 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.
-
-# The GPL2 license text is available in the internet at
-# <http://www.gnu.org/licenses/gpl-2.0.html>.
-
-########################################################################
-
-MAN1=chem.n
-MOSTLYCLEANADD=\
-  chem \
-  chem.n \
-  README \
-  examples/README \
-  examples/122/README
-
-RM=rm -f
-
-all: README chem $(MAN1) $(make_examples)
-
-README: $(srcdir)/README.txt
-       sed -e "s|@g@|$(g)|g" $? >$@
-
-.PHONY: examples
-examples: examples/README examples/122/README
-
-examples/README: $(srcdir)/examples/README.txt
-       test -d examples || $(mkinstalldirs) examples;
-       sed -e "s|@g@|$(g)|g" $? >$@
-
-examples/122/README: $(srcdir)/examples/122/README.txt
-       test -d examples || $(mkinstalldirs) examples;
-       test -d examples/122 || $(mkinstalldirs) examples/122;
-       sed -e "s|@g@|$(g)|g" $? >$@;
-
-chem: $(srcdir)/chem.pl $(SH_DEPS_SED_SCRIPT)
-       $(RM) $@;
-       sed -f "$(SH_DEPS_SED_SCRIPT)" \
-           -e "s|@g@|$(g)|g" \
-           -e "s|@BINDIR@|$(DESTDIR)$(bindir)|g" \
-           -e "s|@MACRODIR@|$(DESTDIR)$(tmacdir)|g" \
-           -e "s|@PICDIR@|$(DESTDIR)$(datasubdir)/pic|g" \
-           -e "s|@VERSION@|$(version)$(revision)|g" \
-           -e "$(SH_SCRIPT_SED_CMD)" \
-           $(srcdir)/chem.pl >$@;
-       chmod +x $@;
-
-.PHONY: install_always
-install_always: chem README $(srcdir)/chem.pic
-       test -d $(DESTDIR)$(bindir) || $(mkinstalldirs) $(DESTDIR)$(bindir);
-       $(RM) $(DESTDIR)$(bindir)/$(g)chem;
-       $(INSTALL_SCRIPT) chem $(DESTDIR)$(bindir)/$(g)chem;
-       test -d $(DESTDIR)$(datasubdir)/pic \
-         || $(mkinstalldirs) $(DESTDIR)$(datasubdir)/pic;
-       $(RM) $(DESTDIR)$(datasubdir)/pic/chem.pic;
-       $(INSTALL_DATA) $(srcdir)/chem.pic \
-         $(DESTDIR)$(datasubdir)/pic/chem.pic;
-
-.PHONY: install_examples
-install_examples:
-       test -d $(DESTDIR)$(exampledir)/chem \
-         || $(mkinstalldirs) $(DESTDIR)$(exampledir)/chem;
-       test -d $(DESTDIR)$(exampledir)/chem/122 \
-         || $(mkinstalldirs) $(DESTDIR)$(exampledir)/chem/122;
-       find $(DESTDIR)$(exampledir)/chem -type f -exec rm -f '{}' ';'
-       $(INSTALL_DATA) examples/README $(DESTDIR)$(exampledir)/chem/README;
-       for i in $(srcdir)/examples/*.chem; do \
-         n=`echo $$i | sed 's|$(srcdir)/examples/||g'`; \
-         $(INSTALL_DATA) $$i $(DESTDIR)$(exampledir)/chem/$$n; \
-       done;
-       $(INSTALL_DATA) examples/122/README \
-         $(DESTDIR)$(exampledir)/chem/122/README;
-       for i in $(srcdir)/examples/122/*.chem; do \
-         n=`echo $$i | sed 's|$(srcdir)/examples/122/||g'`; \
-         $(INSTALL_DATA) $$i $(DESTDIR)$(exampledir)/chem/122/$$n; \
-       done
-
-.PHONY: install_data
-
-install_data: install_always $(make_install_examples)
-
-# uninstall_sub: uninstall_always $(make_uninstall_examples)
-
-.PHONY: uninstall_always
-uninstall_always:
-       $(RM) $(DESTDIR)$(bindir)/chem;
-       $(RM) $(DESTDIR)$(datasubdir)/pic/chem.pic;
-       -test -d $(DESTDIR)$(datasubdir)/pic && \
-         rmdir $(DESTDIR)$(datasubdir)/pic;
-
-.PHONY: uninstall_examples
-uninstall_examples:
-       $(RM) $(DESTDIR)$(exampledir)/chem/122/*;
-       -test -d $(DESTDIR)$(exampledir)/chem/122 && \
-         rmdir $(DESTDIR)$(exampledir)/chem/122;
-       $(RM) $(DESTDIR)$(exampledir)/chem/*;
-       -test -d $(DESTDIR)$(exampledir)/chem && \
-         rmdir $(DESTDIR)$(exampledir)/chem;
-
-.PHONY: uninstall_sub
-uninstall_sub: uninstall_always uninstall_examples
-
-########################################################################
-# Emacs settings
-########################################################################
-#
-# Local Variables:
-# mode: makefile
-# End:
index ef550f5..000c470 100644 (file)
@@ -1,39 +1,39 @@
-`chem' is a `roff' language to generate chemical structure diagrams.
-`@g@chem' is a `groff' preprocessor that produces output suitable for
-the `@g@pic' preprocessor.
+'chem' is a 'roff' language to generate chemical structure diagrams.
+'@g@chem' is a 'groff' preprocessor that produces output suitable for
+the '@g@pic' preprocessor.
 
-The original version of `chem' is an `awk' script written by Brian
+The original version of 'chem' is an 'awk' script written by Brian
 Kernighan <http://cm.bell-labs.com/cm/cs/who/bwk/index.html>.  The
-source files of the `awk' version of `chem' are available at
+source files of the 'awk' version of 'chem' are available at
 <http://cm.bell-labs.com/netlib/typesetting/chem.gz>.
 
-This project is a rewrite of `chem' in Perl for the GNU `roff' project
-`groff'.  It was written under Perl v5.8.8, but at least Perl v5.6 is
-needed to run the Perl version of `chem'.
+This project is a rewrite of 'chem' in Perl for the GNU 'roff' project
+'groff'.  It was written under Perl v5.8.8, but at least Perl v5.6 is
+needed to run the Perl version of 'chem'.
 
-In comparison to the original `awk' version of `chem', the Perl
+In comparison to the original 'awk' version of 'chem', the Perl
 version does the following changements:
 - the options -h, --help, -v, --version to output usage and version
 information are added.
-- remove some functions `inline', `shiftfields', and `set' and some
+- remove some functions 'inline', 'shiftfields', and 'set' and some
 variables that are used only once.
 
-The subdirectory `examples/' contains example files for chem.  They
-are written in the `chem' language.  The file names end with .chem.
+The subdirectory 'examples/' contains example files for chem.  They
+are written in the 'chem' language.  The file names end with .chem.
 
 
 ####### License
 
-Copyright (C) 2006-2014 Free Software Foundation, Inc.
+Copyright (C) 2006-2018 Free Software Foundation, Inc.
 Written by Bernd Warken <groff-bernd.warken-72@web.de>.
 
-This file is part of `chem', which is part of `groff'.
+This file is part of 'chem', which is part of 'groff'.
 
-`groff' is free software; you can redistribute it and/or modify it
-under the terms of the GNU General Public License (GPL) vbersion 2 as
+'groff' is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License (GPL) version 2 as
 published by the Free Software Foundation.
 
-`groff' is distributed in the hope that it will be useful, but WITHOUT
+'groff' 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.
similarity index 67%
rename from contrib/chem/chem.man
rename to contrib/chem/chem.1.man
index 33c0a21..d6574ce 100644 (file)
@@ -1,4 +1,4 @@
-.TH @G@CHEM @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
+.TH @G@CHEM @MAN1EXT@ "@MDATE@" "groff @VERSION@"
 .SH NAME
 @g@chem \- groff preprocessor for producing chemical structure diagrams
 .
 .\" Installed position:    $prefix/share/man/man1/@g@chem.1
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .\" Legal Terms
-.\" --------------------------------------------------------------------
-.
-.de co
-Copyright \[co] 2006-2014 Free Software Foundation, Inc.
-
-This file is part of chem, which is part of groff, a free software
-project.
-
-You can redistribute it and/or modify it under the terms of the GNU
-General Public License version 2 (GPL2) as published by the Free
-Software Foundation.
-
-The license text for GPL2 is available in the internet at
-.UR http://www.gnu.org/licenses/gpl-2.0.html
-.UE .
-..
-.
-.de au
-This file was written by Bernd Warken <groff-bernd.warken-72@web.de>.
-
-It is based on the documentation of Brian Kernighan's original awk
-version of chem at
-.UR http://cm.bell-labs.com/cm/cs/who/bwk/index.html
-.UE .
-..
+.\" ====================================================================
+.\"
+.\" Copyright (C) 2006-2018 Free Software Foundation, Inc.
+.\"
+.\" This file is part of chem, which is part of groff, a free software
+.\" project.
+.\"
+.\" You can redistribute it and/or modify it under the terms of the GNU
+.\" General Public License version 2 (GPL2) as published by the Free
+.\" Software Foundation.
+.\"
+.\" The license text for GPL2 is available in the internet at
+.\" <http://www.gnu.org/licenses/gpl-2.0.html>.
 .
-.\" --------------------------------------------------------------------
+.
+.\" ====================================================================
 .\" Setup
-.\" --------------------------------------------------------------------
+.\" ====================================================================
+.
 .
-.\" --------------------------------------------------------------------
+.\" Save and disable compatibility mode (for, e.g., Solaris 10/11).
+.do nr chem_C \n[.C]
+.cp 0
+.
+.
+.\" ====================================================================
 .\" Characters
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .\" Ellipsis ...
-.ie t .ds EL \fS\N'188'\fP
-.el .ds EL \&.\|.\|.\&\
+.ie t .ds EL \fS\N'188'\fP\"
+.el .ds EL \&.\|.\|.\&\"
 .\" called with \*(EL
 .
-.\" Bullet
-.ie t .ds BU \[bu]
-.el .ds BU *
-.\" used in `.IP \*(BU 2m' (former .Topic)
-.
-.
-.\" --------------------------------------------------------------------
-.\" Macro definitions
 .
-.\" --------------------------------------------------------------------
-.\" .FONT (<font name> <text> [<font name> <text> ...])
-.\"
-.\"  in different fonts: R, I, B, CR, CI, CB
-.\"
-.de FONT
-.  if (\\n[.$] = 0) \{\
-.      \" compatibility to .ft
-.      nop \&\f[P]\&
-.      return
-.  \}
-.  ds result \&
-.  while (\\n[.$] >= 2) \{\
-.      as result \,\f[\\$1]\\$2
-.      if !"\\$1"P" .as result \f[P]
-.       \" the double-quote " after P above is now ignored in Emacs
-.      shift 2
-.  \}
-.  if (\\n[.$] = 1) .as result \,\f[\\$1]
-.\"  nh
-.  nop \\*[result]\&
-.\"  hy
-.  rm result
-..
-.
-.
-.\" End of macro definitions
-.
-.
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "SYNOPSIS"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .SY @g@chem
-.OP \fI\%option \*(EL\fP
 .OP \-\-
-.OP \fI\%filespec \*(EL\fP
+.RI [ filespec
+\*(EL]
 .YS
 .
 .SY @g@chem
 .B \-h
-|
+.SY @g@chem
 .B \-\-help
 .YS
 .
 .SY @g@chem
 .B \-v
-|
+.SY @g@chem
 .B \-\-version
 .YS
 .
 .
-.\" --------------------------------------------------------------------
-.SH OPTION USAGE
-.\" --------------------------------------------------------------------
-.
-There are no other options than
-.BR \-h ,
-.BR \-\-help ,
-.BR \-v ,
-and
-.BR \%\-\-version ;
-these options provoke the printing of a version or usage information,
-respectively, and all
-.I filespec
-arguments are ignored.
-.
-A
-.I filespec
-argument is either a file name of an existing file or a minus
-character
-.BR \- ,
-meaning standard input.
-.
-If no argument is specified then standard input is taken
-automatically.
-.
-.
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH DESCRIPTION
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .I chem
 produces chemical structure diagrams.
@@ -164,20 +96,43 @@ language.
 .
 .
 .P
+A
+.I filespec
+argument is either a file name of an existing file or a minus
+character
+.BR \- ,
+meaning standard input.
+.
+If no argument is specified then standard input is taken
+automatically.
+.
+.B \-h
+and
+.B \-\-help
+display a usage message,
+whereas
+.B \-v
+and
+.B \-\-version
+display version information;
+all exit.
+.
+.
+.P
 The program
 .B @g@chem
 originates from the Perl source file
-.BR chem.pl .
+.IR chem.pl .
 .
 It tells
 .B @g@pic
 to include a copy of the macro file
-.BR chem.pic .
+.IR chem.pic .
 .
 Moreover the
 .I groff
 source file
-.B pic.tmac
+.I pic.tmac
 is loaded.
 .
 .
@@ -281,9 +236,9 @@ for the activation of
 .B @g@chem [file \*(EL] | groff \-p \*(EL
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH THE LANGUAGE
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The
 .I chem
@@ -295,9 +250,9 @@ moieties (e.g.,
 \*(EL, and strings.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS Setting Variables
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 There are some variables that can be set by commands.
 .
@@ -353,9 +308,9 @@ Scale the diagram to make it look plausible at point size
 default is 10 point.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS Bonds
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 This
 .
@@ -430,9 +385,9 @@ dotted or dashed bonds or to specify a
 place.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS Rings
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 There are lots of rings, but only 5 and 6-sided rings get
 much support.
@@ -450,8 +405,8 @@ puts a circle into any kind of ring.
 .RB [ \%aromatic ]
 .RB [ put\ Mol\ at\ \fIn\/\fP ]
 .RB [ \%double\ \c
-.IR i , j\ \c
-.IR k , l\ \c
+.IR i , j\ \/\c
+.IR k , l\ \/\c
 \*(EL
 .RI [ picstuff ]
 .YS
@@ -567,9 +522,9 @@ that it exactly matches the 6-sided rings.
 The description of a ring has to fit on a single line.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS Moieties and Strings
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 A moiety is a string of characters beginning with a capital letter,
 such as N(C2H5)2.
@@ -661,9 +616,9 @@ Text within quotes \(dq\*(EL\(dq is treated more or less
 like a moiety except that no changes are made to the quoted part.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS Names
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 In the alkyl chain above, notice that the carbon atom
 .B C
@@ -699,9 +654,9 @@ only letters and numbers is valid:
 .RE
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS Miscellaneous
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The specific construction
 .RS
@@ -831,9 +786,9 @@ statements are stored and their call is accepted as a
 command as well.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS WISH LIST
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .P
 This TODO list was collected by Brian Kernighan.
@@ -887,82 +842,64 @@ Text (quoted strings) doesn't work very well.
 A squiggle bond is needed.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "FILES"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .TP
-.B @DATASUBDIR@/pic/chem.pic
+.I @DATASUBDIR@/pic/chem.pic
 A collection of
 .I pic
 macros needed by
 .BR @g@chem .
 .
 .TP
-.B @MACRODIR@/pic.tmac
+.I @MACRODIR@/pic.tmac
 A macro file which redefines
 .B .PS
 and
-.BR .PE
+.B .PE
 to center
 .I pic
 diagrams.
 .
 .TP
-.B @DOCDIR@/examples/chem/*.chem
+.IR @DOCDIR@/examples/chem/ * .chem
 Example files for
 .IR chem .
 .
 .TP
-.B @DOCDIR@/examples/chem/122/*.chem
+.IR @DOCDIR@/examples/chem/122/ * .chem
 Example files from the classical
 .I chem
-book
-.BR 122.ps .
+article
+.I "CHEM \[en] A Program for Typesetting Chemical Structure Diagrams"
+[CSTR\~#122].
 .
 .
-.\" --------------------------------------------------------------------
-.SH "BUGS"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
+.SH AUTHORS
+.\" ====================================================================
 .
-Report bugs to the
-.MT bug-groff@\:gnu.org
-bug-groff mailing list
+The GNU version of
+.B chem
+was written by
+.MT groff\-bernd.warken\-72@\:web.de
+Bernd Warken
 .ME .
 .
-Include a complete, self-contained example that will allow the bug to
-be reproduced, and say which version of
-.I groff
-and
+It is based on the documentation of Brian Kernighan's original
+.I awk
+version of
 .I chem
-you are using.
-.
-You can get both version numbers by calling
-.BR "@g@chem \-\-version" .
-.
-.
-.P
-You can also use the
-.MT groff@\:gnu.org
-groff mailing list
-.ME ,
-but you must first subscribe to this list.
-.
-You can do that by visiting the
-.UR http://\:lists.gnu.org/\:mailman/\:listinfo/\:groff
-groff mailing list web page
+at
+.UR http://\:cm.bell\-labs.com/\:cm/\:cs/\:who/\:bwk/\:index.html
 .UE .
 .
 .
-.P
-See
-.BR \%groff (@MAN1EXT@)
-for information on availability.
-.
-.
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "SEE ALSO"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .BR \%groff (@MAN1EXT@),
 .BR \%@g@pic (@MAN1EXT@),
@@ -971,7 +908,7 @@ for information on availability.
 .
 .P
 You can still get the original
-.UR http://\:cm.bell-labs.com/\:netlib/\:typesetting/\:chem.gz
+.UR http://\:cm.bell\-labs.com/\:netlib/\:typesetting/\:chem.gz
 chem awk source
 .UE .
 .
@@ -984,25 +921,21 @@ file was used for this manual page.
 The other classical document on
 .I chem
 is
-.UR http://\:cm.bell-labs.com/\:cm/\:cs/\:cstr/\:122.ps.gz
-122.ps
+.UR http://\:cm.bell\-labs.com/\:cm/\:cs/\:cstr/\:122.ps.gz
+.I "CHEM \[en] A Program for Typesetting Chemical Structure Diagrams"
+[CSTR\~#122]
 .UE .
 .
 .
-.\" --------------------------------------------------------------------
-.SH "COPYING"
-.\" --------------------------------------------------------------------
-.co
-.\" --------------------------------------------------------------------
-.SH "AUTHORS"
-.\" --------------------------------------------------------------------
-.au
+.\" Restore compatibility mode (for, e.g., Solaris 10/11).
+.cp \n[chem_C]
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .\" Emacs settings
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .\" Local Variables:
 .\" mode: nroff
 .\" End:
+.\" vim: set filetype=groff:
diff --git a/contrib/chem/chem.am b/contrib/chem/chem.am
new file mode 100644 (file)
index 0000000..89d16d9
--- /dev/null
@@ -0,0 +1,134 @@
+# Automake rules for 'chem'
+
+# File position: <groff-source>/contrib/chem/chem.am
+
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
+# Written by Bernd Warken <groff-bernd.warken-72@web.de>.
+# Moved to automake by Bertrand Garrigues
+#
+# Last update: 22 Aug 2015
+#
+# This file is part of 'chem' which is part of 'groff'.
+#
+# 'groff' is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License (GPL) version 2 as
+# published by the Free Software Foundation.
+#
+# 'groff' 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.
+#
+# The GPL2 license text is available in the internet at
+# <http://www.gnu.org/licenses/gpl-2.0.html>.
+
+########################################################################
+
+chem_srcdir = $(top_srcdir)/contrib/chem
+prefixexecbin_SCRIPTS += chem
+
+# Files installed in $(datasubdir)/pic
+chempicdir = $(datasubdir)/pic
+dist_chempic_DATA = contrib/chem/chem.pic
+
+
+CHEM_GENEXAMPLES = contrib/chem/examples/README
+CHEM_EXAMPLES =  \
+  contrib/chem/examples/atp.chem \
+  contrib/chem/examples/cholesterin.chem \
+  contrib/chem/examples/ethamivan.chem \
+  contrib/chem/examples/lsd.chem \
+  contrib/chem/examples/morphine.chem \
+  contrib/chem/examples/penicillin.chem \
+  contrib/chem/examples/reserpine.chem
+
+if BUILD_EXAMPLES
+# Files installed in $(exampledir)/chem
+chemexampledir = $(exampledir)/chem
+nodist_chemexample_DATA = $(CHEM_GENEXAMPLES)
+dist_chemexample_DATA = $(CHEM_EXAMPLES)
+
+# Files installed in $(exampledir)/chem/122. All the .chem files in 122 are 
+# lazily installed by the local install target
+chemexample122dir = $(chemexampledir)/122
+nodist_chemexample122_DATA = contrib/chem/examples/122/README
+endif
+EXTRA_DIST += \
+  contrib/chem/ChangeLog \
+  contrib/chem/chem.1.man \
+  contrib/chem/chem.pic \
+  contrib/chem/chem.pl \
+  contrib/chem/README.txt \
+  contrib/chem/examples/README.txt \
+  contrib/chem/examples/122/README.txt
+
+man1_MANS += contrib/chem/chem.1
+MOSTLYCLEANFILES += $(CHEM_GENEXAMPLES) $(nodist_chemexample122_DATA) \
+  contrib/chem/README
+
+# This is strangly built but not installed
+all: contrib/chem/README
+
+contrib/chem/README: $(chem_srcdir)/README.txt
+       $(AM_V_GEN)$(MKDIR_P) contrib/chem/ \
+       && sed -e "s|[@]g[@]|$(g)|g" $? >$@
+
+contrib/chem/examples/README: $(chem_srcdir)/examples/README.txt
+       $(AM_V_GEN)$(MKDIR_P) contrib/chem/examples \
+       && sed -e "s|[@]g[@]|$(g)|g" $? >$@
+
+contrib/chem/examples/122/README: $(chem_srcdir)/examples/122/README.txt
+       $(AM_V_GEN)$(MKDIR_P) contrib/chem/examples/122 \
+       && sed -e "s|[@]g[@]|$(g)|g" $? >$@
+
+chem: $(chem_srcdir)/chem.pl $(SH_DEPS_SED_SCRIPT)
+       $(AM_V_GEN)$(RM) $@ \
+       && sed -f "$(SH_DEPS_SED_SCRIPT)" \
+              -e "s|[@]g[@]|$(g)|g" \
+              -e "s|[@]BINDIR[@]|$(DESTDIR)$(bindir)|g" \
+              -e "s|[@]MACRODIR[@]|$(DESTDIR)$(tmacdir)|g" \
+              -e "s|[@]PICDIR[@]|$(DESTDIR)$(datasubdir)/pic|g" \
+              -e "s|[@]VERSION[@]|$(VERSION)|g" \
+              -e "$(SH_SCRIPT_SED_CMD)" \
+              $(chem_srcdir)/chem.pl \
+              >$@ \
+       && chmod +x $@
+
+install-data-local: install_chem_extra
+install_chem_extra:
+if BUILD_EXAMPLES
+       -test -d $(DESTDIR)$(chemexample122dir) \
+          || $(mkinstalldirs) $(DESTDIR)$(chemexample122dir);
+       for i in $(chem_srcdir)/examples/122/*.chem; do \
+         n=`echo $$i | sed 's|$(chem_srcdir)/examples/122/||g'`; \
+         $(INSTALL_DATA) $$i $(DESTDIR)$(chemexample122dir)/$$n; \
+       done
+endif
+
+uninstall-local: uninstall_chem_extra
+uninstall_chem_extra:
+if BUILD_EXAMPLES
+       $(RM) $(DESTDIR)$(exampledir)/chem/122/*
+       -rmdir $(DESTDIR)$(exampledir)/chem/122
+       $(RM) $(DESTDIR)$(exampledir)/chem/*
+       -rmdir $(DESTDIR)$(exampledir)/chem
+endif
+       -rmdir $(DESTDIR)$(datasubdir)/pic
+
+dist-hook: dist_chem
+dist_chem:
+       chmod u+w $(distdir)/contrib/chem/examples/122
+       for i in $(chem_srcdir)/examples/122/*.chem; do \
+         cp -f $$i $(distdir)/contrib/chem/examples/122; \
+       done
+
+
+########################################################################
+# Editor settings
+########################################################################
+#
+# Local Variables:
+# mode: makefile-automake
+# fill-column: 72
+# End:
+# vim: set filetype=automake textwidth=72:
index 4ba066f..6f4ee81 100644 (file)
@@ -3,17 +3,17 @@
 # Source file position: <groff-source>/contrib/chem/chem.pic
 # Installed position: <prefix>/share/groff/<version>/pic
 
-# Copyright (C) 2006-2014 Free Software Foundation, Inc.
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
 # Written by Brian Kernighan <http://cm.bell-labs.com/cm/cs/who/bwk>,
 # modified by Bernd Warken <groff-bernd.warken-72@web.de>.
 
-# This file is part of `chem', which is part of `groff'.
+# This file is part of 'chem', which is part of 'groff'.
 
-# `groff' is free software; you can redistribute it and/or modify it
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License (GPL) version 2 as
 # published by the Free Software Foundation.
 
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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.
index 1a8b3cc..883907b 100755 (executable)
@@ -8,13 +8,13 @@
 my $Copyright = 'Copyright (C) 2006-2014 Free Software Foundation, Inc.';
 # Written by Bernd Warken <groff-bernd.warken-72@web.de>.
 
-# This file is part of `chem', which is part of `groff'.
+# This file is part of 'chem', which is part of 'groff'.
 
-# `groff' is free software; you can redistribute it and/or modify it
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License (GPL) version 2 as
 # published by the Free Software Foundation.
 
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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.
@@ -57,7 +57,7 @@ my $File_pic_tmac;
 
 BEGIN {
   {
-    my $before_make;           # script before run of `make'
+    my $before_make;           # script before run of 'make'
     {
       my $at = '@';
       $before_make = 1 if '@VERSION@' eq "${at}VERSION${at}";
@@ -337,9 +337,9 @@ my $Line = '';
       return 1;
     }
     if ($line =~ /^[\.']\s*cstart\s*$/) {
-      # line: `.cstart'
+      # line: '.cstart'
       if ($is_chem) {
-       &error("additional `.cstart'; chem is already active.");
+       &error("additional '.cstart'; chem is already active.");
        return 1;
       }
       unless ($is_pic) {
@@ -352,10 +352,10 @@ my $Line = '';
     }
 ### main_line()
     if ($line =~ /^\s*begin\s+chem\s*$/) {
-      # line: `begin chem'
+      # line: 'begin chem'
       if ($is_pic) {
        if ($is_chem) {
-         &error("additional `begin chem'; chem is already active.");
+         &error("additional 'begin chem'; chem is already active.");
          return 1;
        }
        $is_chem = 'begin chem';
@@ -366,9 +366,9 @@ my $Line = '';
       return 1;
     }
     if ($line =~ /^[\.']\s*cend\s*/) {
-      # line `.cend'
+      # line '.cend'
       if ($is_chem) {
-       &error("you end chem with `.cend', but started it with `begin chem'.")
+       &error("you end chem with '.cend', but started it with 'begin chem'.")
          if $is_chem eq 'begin chem';
        if ($is_pic eq 'by chem') {
          &print_pe();
@@ -381,9 +381,9 @@ my $Line = '';
       return 1;
     }
     if ($line =~ /^\s*end\s*$/) {
-      # line: `end'
+      # line: 'end'
       if ($is_chem) {
-       &error("you end chem with `end', but started it with `.cstart'.")
+       &error("you end chem with 'end', but started it with '.cstart'.")
          if $is_chem eq '.cstart';
        if ($is_pic eq 'by chem') {
          &print_pe();
@@ -421,10 +421,10 @@ my $Line = '';
 
     if ($Words[0] eq 'textht') {
       if ($#Words == 0) {
-       &error("`textht' needs a single argument.");
+       &error("'textht' needs a single argument.");
        return 0;
       }
-      &error("only the last argument is taken for `textht', " .
+      &error("only the last argument is taken for 'textht', " .
             "all others are ignored.")
        unless $#Words <= 1 or ($#Words == 2 && $Words[1] =~ /^=/);
       $Params{'textht'} = $Words[$#Words];
@@ -433,10 +433,10 @@ my $Line = '';
 ### main_line()
     if ($Words[0] eq 'cwid') { # character width
       if ($#Words == 0) {
-       &error("`cwid' needs a single argument.");
+       &error("'cwid' needs a single argument.");
        return 0;
       }
-      &error("only the last argument is taken for `cwid', " .
+      &error("only the last argument is taken for 'cwid', " .
             "all others are ignored.")
        unless $#Words <= 1 or ($#Words == 2 && $Words[1] =~ /^=/);
       $Params{'cwid'} = $Words[$#Words];
@@ -444,10 +444,10 @@ my $Line = '';
     }
     if ($Words[0] eq 'db') {   # bond length
       if ($#Words == 0) {
-       &error("`db' needs a single argument.");
+       &error("'db' needs a single argument.");
        return 0;
       }
-      &error("only the last argument is taken for `db', " .
+      &error("only the last argument is taken for 'db', " .
             "all others are ignored.")
        unless $#Words <= 1 or ($#Words == 2 && $Words[1] =~ /^=/);
       $Params{'db'} = $Words[$#Words];
@@ -456,10 +456,10 @@ my $Line = '';
     if ($Words[0] eq 'size') { # size for all parts of the whole diagram
       my $size;
       if ($#Words == 0) {
-       &error("`size' needs a single argument.");
+       &error("'size' needs a single argument.");
        return 0;
       }
-      &error("only the last argument is taken for `size', " .
+      &error("only the last argument is taken for 'size', " .
             "all others are ignored.")
        unless $#Words <= 1 or ($#Words == 2 && $Words[1] =~ /^=/);
       if ($Words[$#Words] <= 4) {
@@ -578,7 +578,7 @@ my $Line = '';
     return 1 unless $line;
 #    print STDERR "# $Line\n";
 #    &error('This is not a chem command.  To include a command for pic, ' .
-#         "add `pic' as the first word to the command.");
+#           "add 'pic' as the first word to the command.");
     print $line, "\n";
     $Last_Type = $Types{'OTHER'};
     1;
@@ -636,7 +636,7 @@ sub bond {
   $moiety = '';
   for ($i = 1; $i <= $#Words; $i++) {
     if ($Words[$i] eq ';') {
-      &error("a colon `;' must be followed by a space and a single word.")
+      &error("a colon ';' must be followed by a space and a single word.")
        if $i != $#Words - 1;
       $moiety = $Words[$i + 1] if $#Words > $i;
       $#Words = $i - 1;
index fc4e9ae..4030a59 100644 (file)
@@ -1,4 +1,4 @@
-This directory contains the examples for the `chem' language written
+This directory contains the examples for the 'chem' language written
 in the book:
 
     Computing Science Technical Report No. 122
@@ -8,60 +8,60 @@ in the book:
 The book is available in the internet at
 <http://cm.bell-labs.com/cm/cs/cstr/122.ps.gz>.
 
-Many of the examples had to be fixed.  Unfortunately, the `chem' akw
+Many of the examples had to be fixed.  Unfortunately, the 'chem' akw
 version does not run on many of these programs.  But the Perl version
-of `chem' works on all examples.
+of 'chem' works on all examples.
 
 Most examples do not use the modern chemical display.  They have C
 atoms added, whereas the modern method omits all C atoms and their
 directly appended H atoms.
 
 The examples are named and sorted by the chapter where they are found
-in the book.  For example, the file `ch4c_colon.chem' means a `chem'
-example in chapter 4; according to `c', it is the third example in
-this chapter; the name `colon' is used to describe the context of the
+in the book.  For example, the file 'ch4c_colon.chem' means a 'chem'
+example in chapter 4; according to 'c', it is the third example in
+this chapter; the name 'colon' is used to describe the context of the
 example.
 
 You can view the graphical display of the examples by calling
 
     groffer <file>
 
-`groffer' calls `chem' automatically.
+'groffer' calls 'chem' automatically.
 
 If you want to transform example files to a different format use the
-`roff2*' programs:
+'roff2*' programs:
 
-`roff2dvi' prints dvi format to standard output,
-`roff2html' generates html output,
-`roff2pdf' outputs pdf mode,
-`roff2ps' produces PostScript output,
-`roff2text' generates text output in the groff device `latin1',
-`roff2x' prints the output  in  the  groff  device  X  that  is
-         suitable  for programs  like `gxditview' or `xditview'.
+'roff2dvi' prints dvi format to standard output,
+'roff2html' generates html output,
+'roff2pdf' outputs pdf mode,
+'roff2ps' produces PostScript output,
+'roff2text' generates text output in the groff device 'latin1',
+'roff2x' prints the output  in  the  groff  device  X  that  is
+         suitable  for programs  like 'gxditview' or 'xditview'.
 
-To get a suitable `groff' output run
+To get a suitable 'groff' output run
 
     @g@chem <file> | groff -p ...
 
 
 ####### License
 
-Copyright (C) 2006-2014 Free Software Foundation, Inc.
+Copyright (C) 2006-2018 Free Software Foundation, Inc.
 Written by Bernd Warken <groff-bernd.warken-72@web.de>.
 
-This file is part of `chem', which is part of `groff'.
+This file is part of 'chem', which is part of 'groff'.
 
-`groff' is free software; you can redistribute it and/or modify it
+'groff' is free software; you can redistribute it and/or modify it
 under the terms of the GNU General Public License (GPL) version 2 as
 published by the Free Software Foundation.
 
-`groff' is distributed in the hope that it will be useful, but WITHOUT
+'groff' 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 <http://www.gnu.org/licenses/>.
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 The GPL2 license text is available in the internet at
 <http://www.gnu.org/licenses/gpl-2.0.html>.
index 2a32514..c0f0c2c 100644 (file)
@@ -2,28 +2,28 @@ ch2a_ethyl.chem:
 .br
 .cstart
 
-# Example file for `chem':
+# Example file for 'chem':
 
 # This originates from Computing Science Technical Report No. 122
 #   CHEM - A Program for Typesetting Chemical Diagrams: User Manual
 #   by Jon L. Bentley, Lynn W. Jelinski, Brian W. Kernighan
 #   <http://cm.bell-labs.com/cm/cs/cstr/122.ps.gz>.
 
-# Copyright (C) 2006-2014 Free Software Foundation, Inc.
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
 
-# This file is part of `chem', which is part of `groff'.
+# This file is part of 'chem', which is part of 'groff'.
 
-# `groff' is free software; you can redistribute it and/or modify it
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License (GPL) version 2 as
 # published by the Free Software Foundation.
 
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # The GPL2 license text is available in the internet at
 # <http://www.gnu.org/licenses/gpl-2.0.html>.
index 1eacbc2..0342d1f 100644 (file)
@@ -2,28 +2,28 @@ ch2b_benzene.chem:
 .br
 .cstart
 
-# Example file for `chem':
+# Example file for 'chem':
 
 # This originates from Computing Science Technical Report No. 122
 #   CHEM - A Program for Typesetting Chemical Diagrams: User Manual
 #   by Jon L. Bentley, Lynn W. Jelinski, Brian W. Kernighan
 #   <http://cm.bell-labs.com/cm/cs/cstr/122.ps.gz>.
 
-# Copyright (C) 2006-2014 Free Software Foundation, Inc.
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
 
-# This file is part of `chem', which is part of `groff'.
+# This file is part of 'chem', which is part of 'groff'.
 
-# `groff' is free software; you can redistribute it and/or modify it
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License (GPL) version 2 as
 # published by the Free Software Foundation.
 
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # The GPL2 license text is available in the internet at
 # <http://www.gnu.org/licenses/gpl-2.0.html>.
index 463e67e..5026ef6 100644 (file)
@@ -2,26 +2,26 @@ ch2c_benzene_right.chem:
 .br
 .cstart
 
-# Example file for `chem':
+# Example file for 'chem':
 
 # This originates from Computing Science Technical Report No. 122
 #   CHEM - A Program for Typesetting Chemical Diagrams: User Manual
 #   by Jon L. Bentley, Lynn W. Jelinski, Brian W. Kernighan
 #   <http://cm.bell-labs.com/cm/cs/cstr/122.ps.gz>.
 
-# Copyright (C) 2006-2014 Free Software Foundation, Inc.
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
 
-# `groff' is free software; you can redistribute it and/or modify it
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License (GPL) version 2 as
 # published by the Free Software Foundation.
 
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # The GPL2 license text is available in the internet at
 # <http://www.gnu.org/licenses/gpl-2.0.html>.
index 1964b02..732cbad 100644 (file)
@@ -2,28 +2,28 @@ ch4a_stick.chem:
 .br
 .cstart
 
-# Example file for `chem':
+# Example file for 'chem':
 
 # This originates from Computing Science Technical Report No. 122
 #   CHEM - A Program for Typesetting Chemical Diagrams: User Manual
 #   by Jon L. Bentley, Lynn W. Jelinski, Brian W. Kernighan
 #   <http://cm.bell-labs.com/cm/cs/cstr/122.ps.gz>.
 
-# Copyright (C) 2006-2014 Free Software Foundation, Inc.
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
 
-# This file is part of `chem', which is part of `groff'.
+# This file is part of 'chem', which is part of 'groff'.
 
-# `groff' is free software; you can redistribute it and/or modify it
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License (GPL) version 2 as
 # published by the Free Software Foundation.
 
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # The GPL2 license text is available in the internet at
 # <http://www.gnu.org/licenses/gpl-2.0.html>.
index ae44bd1..cd5be9d 100644 (file)
@@ -2,28 +2,28 @@ ch4b_methyl_acetate.chem:
 .br
 .cstart
 
-# Example file for `chem':
+# Example file for 'chem':
 
 # This originates from Computing Science Technical Report No. 122
 #   CHEM - A Program for Typesetting Chemical Diagrams: User Manual
 #   by Jon L. Bentley, Lynn W. Jelinski, Brian W. Kernighan
 #   <http://cm.bell-labs.com/cm/cs/cstr/122.ps.gz>.
 
-# Copyright (C) 2006-2014 Free Software Foundation, Inc.
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
 
-# This file is part of `chem', which is part of `groff'.
+# This file is part of 'chem', which is part of 'groff'.
 
-# `groff' is free software; you can redistribute it and/or modify it
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License (GPL) version 2 as
 # published by the Free Software Foundation.
 
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # The GPL2 license text is available in the internet at
 # <http://www.gnu.org/licenses/gpl-2.0.html>.
index cdf7927..db50c03 100644 (file)
@@ -2,28 +2,28 @@ ch4c_colon.chem:
 .br
 .cstart
 
-# Example file for `chem':
+# Example file for 'chem':
 
 # This originates from Computing Science Technical Report No. 122
 #   CHEM - A Program for Typesetting Chemical Diagrams: User Manual
 #   by Jon L. Bentley, Lynn W. Jelinski, Brian W. Kernighan
 #   <http://cm.bell-labs.com/cm/cs/cstr/122.ps.gz>.
 
-# Copyright (C) 2006-2014 Free Software Foundation, Inc.
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
 
-# This file is part of `chem', which is part of `groff'.
+# This file is part of 'chem', which is part of 'groff'.
 
-# `groff' is free software; you can redistribute it and/or modify it
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License (GPL) version 2 as
 # published by the Free Software Foundation.
 
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # The GPL2 license text is available in the internet at
 # <http://www.gnu.org/licenses/gpl-2.0.html>.
index b1bb112..71e4f88 100644 (file)
@@ -2,28 +2,28 @@ ch4d_HCl.H2O.chem:
 .br
 .cstart
 
-# Example file for `chem':
+# Example file for 'chem':
 
 # This originates from Computing Science Technical Report No. 122
 #   CHEM - A Program for Typesetting Chemical Diagrams: User Manual
 #   by Jon L. Bentley, Lynn W. Jelinski, Brian W. Kernighan
 #   <http://cm.bell-labs.com/cm/cs/cstr/122.ps.gz>.
 
-# Copyright (C) 2006-2014 Free Software Foundation, Inc.
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
 
-# This file is part of `chem', which is part of `groff'.
+# This file is part of 'chem', which is part of 'groff'.
 
-# `groff' is free software; you can redistribute it and/or modify it
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License (GPL) version 2 as
 # published by the Free Software Foundation.
 
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # The GPL2 license text is available in the internet at
 # <http://www.gnu.org/licenses/gpl-2.0.html>.
index f76ea37..1f820c0 100644 (file)
@@ -2,28 +2,28 @@ ch4e_CaSO4.2H2O.chem:
 .br
 .cstart
 
-# Example file for `chem':
+# Example file for 'chem':
 
 # This originates from Computing Science Technical Report No. 122
 #   CHEM - A Program for Typesetting Chemical Diagrams: User Manual
 #   by Jon L. Bentley, Lynn W. Jelinski, Brian W. Kernighan
 #   <http://cm.bell-labs.com/cm/cs/cstr/122.ps.gz>.
 
-# Copyright (C) 2006-2014 Free Software Foundation, Inc.
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
 
-# This file is part of `chem', which is part of `groff'.
+# This file is part of 'chem', which is part of 'groff'.
 
-# `groff' is free software; you can redistribute it and/or modify it
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License (GPL) version 2 as
 # published by the Free Software Foundation.
 
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # The GPL2 license text is available in the internet at
 # <http://www.gnu.org/licenses/gpl-2.0.html>.
index c44b6a5..9b749c0 100644 (file)
@@ -2,28 +2,28 @@ ch4f_C.chem:
 .br
 .cstart
 
-# Example file for `chem':
+# Example file for 'chem':
 
 # This originates from Computing Science Technical Report No. 122
 #   CHEM - A Program for Typesetting Chemical Diagrams: User Manual
 #   by Jon L. Bentley, Lynn W. Jelinski, Brian W. Kernighan
 #   <http://cm.bell-labs.com/cm/cs/cstr/122.ps.gz>.
 
-# Copyright (C) 2006-2014 Free Software Foundation, Inc.
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
 
-# This file is part of `chem', which is part of `groff'.
+# This file is part of 'chem', which is part of 'groff'.
 
-# `groff' is free software; you can redistribute it and/or modify it
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License (GPL) version 2 as
 # published by the Free Software Foundation.
 
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # The GPL2 license text is available in the internet at
 # <http://www.gnu.org/licenses/gpl-2.0.html>.
index f500e0e..41b8582 100644 (file)
@@ -2,28 +2,28 @@ ch4g_BP.chem:
 .br
 .cstart
 
-# Example file for `chem':
+# Example file for 'chem':
 
 # This originates from Computing Science Technical Report No. 122
 #   CHEM - A Program for Typesetting Chemical Diagrams: User Manual
 #   by Jon L. Bentley, Lynn W. Jelinski, Brian W. Kernighan
 #   <http://cm.bell-labs.com/cm/cs/cstr/122.ps.gz>.
 
-# Copyright (C) 2006-2014 Free Software Foundation, Inc.
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
 
-# This file is part of `chem', which is part of `groff'.
+# This file is part of 'chem', which is part of 'groff'.
 
-# `groff' is free software; you can redistribute it and/or modify it
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License (GPL) version 2 as
 # published by the Free Software Foundation.
 
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # The GPL2 license text is available in the internet at
 # <http://www.gnu.org/licenses/gpl-2.0.html>.
index 7e34fda..63c90ab 100644 (file)
@@ -2,28 +2,28 @@ ch4h_methacrylate.chem:
 .br
 .cstart
 
-# Example file for `chem':
+# Example file for 'chem':
 
 # This originates from Computing Science Technical Report No. 122
 #   CHEM - A Program for Typesetting Chemical Diagrams: User Manual
 #   by Jon L. Bentley, Lynn W. Jelinski, Brian W. Kernighan
 #   <http://cm.bell-labs.com/cm/cs/cstr/122.ps.gz>.
 
-# Copyright (C) 2006-2014 Free Software Foundation, Inc.
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
 
-# This file is part of `chem', which is part of `groff'.
+# This file is part of 'chem', which is part of 'groff'.
 
-# `groff' is free software; you can redistribute it and/or modify it
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License (GPL) version 2 as
 # published by the Free Software Foundation.
 
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # The GPL2 license text is available in the internet at
 # <http://www.gnu.org/licenses/gpl-2.0.html>.
index 7641aa1..b4b8888 100644 (file)
@@ -2,28 +2,28 @@ ch4i_cyclo.chem:
 .br
 .cstart
 
-# Example file for `chem':
+# Example file for 'chem':
 
 # This originates from Computing Science Technical Report No. 122
 #   CHEM - A Program for Typesetting Chemical Diagrams: User Manual
 #   by Jon L. Bentley, Lynn W. Jelinski, Brian W. Kernighan
 #   <http://cm.bell-labs.com/cm/cs/cstr/122.ps.gz>.
 
-# Copyright (C) 2006-2014 Free Software Foundation, Inc.
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
 
-# This file is part of `chem', which is part of `groff'.
+# This file is part of 'chem', which is part of 'groff'.
 
-# `groff' is free software; you can redistribute it and/or modify it
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License (GPL) version 2 as
 # published by the Free Software Foundation.
 
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # The GPL2 license text is available in the internet at
 # <http://www.gnu.org/licenses/gpl-2.0.html>.
index 0b69348..fcd94ad 100644 (file)
@@ -2,28 +2,28 @@ ch4j_ring4.chem:
 .br
 .cstart
 
-# Example file for `chem':
+# Example file for 'chem':
 
 # This originates from Computing Science Technical Report No. 122
 #   CHEM - A Program for Typesetting Chemical Diagrams: User Manual
 #   by Jon L. Bentley, Lynn W. Jelinski, Brian W. Kernighan
 #   <http://cm.bell-labs.com/cm/cs/cstr/122.ps.gz>.
 
-# Copyright (C) 2006-2014 Free Software Foundation, Inc.
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
 
-# This file is part of `chem', which is part of `groff'.
+# This file is part of 'chem', which is part of 'groff'.
 
-# `groff' is free software; you can redistribute it and/or modify it
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License (GPL) version 2 as
 # published by the Free Software Foundation.
 
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # The GPL2 license text is available in the internet at
 # <http://www.gnu.org/licenses/gpl-2.0.html>.
index 14baafe..c51a521 100644 (file)
@@ -2,28 +2,28 @@ ch4k_ring3.chem:
 .br
 .cstart
 
-# Example file for `chem':
+# Example file for 'chem':
 
 # This originates from Computing Science Technical Report No. 122
 #   CHEM - A Program for Typesetting Chemical Diagrams: User Manual
 #   by Jon L. Bentley, Lynn W. Jelinski, Brian W. Kernighan
 #   <http://cm.bell-labs.com/cm/cs/cstr/122.ps.gz>.
 
-# Copyright (C) 2006-2014 Free Software Foundation, Inc.
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
 
-# This file is part of `chem', which is part of `groff'.
+# This file is part of 'chem', which is part of 'groff'.
 
-# `groff' is free software; you can redistribute it and/or modify it
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License (GPL) version 2 as
 # published by the Free Software Foundation.
 
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # The GPL2 license text is available in the internet at
 # <http://www.gnu.org/licenses/gpl-2.0.html>.
index 1594f4c..08f1768 100644 (file)
@@ -2,28 +2,28 @@ ch4l_vertex.chem:
 .br
 .cstart
 
-# Example file for `chem':
+# Example file for 'chem':
 
 # This originates from Computing Science Technical Report No. 122
 #   CHEM - A Program for Typesetting Chemical Diagrams: User Manual
 #   by Jon L. Bentley, Lynn W. Jelinski, Brian W. Kernighan
 #   <http://cm.bell-labs.com/cm/cs/cstr/122.ps.gz>.
 
-# Copyright (C) 2006-2014 Free Software Foundation, Inc.
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
 
-# This file is part of `chem', which is part of `groff'.
+# This file is part of 'chem', which is part of 'groff'.
 
-# `groff' is free software; you can redistribute it and/or modify it
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License (GPL) version 2 as
 # published by the Free Software Foundation.
 
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # The GPL2 license text is available in the internet at
 # <http://www.gnu.org/licenses/gpl-2.0.html>.
index c7b3da7..e1202a8 100644 (file)
@@ -2,28 +2,28 @@ ch4m_double.chem:
 .br
 .cstart
 
-# Example file for `chem':
+# Example file for 'chem':
 
 # This originates from Computing Science Technical Report No. 122
 #   CHEM - A Program for Typesetting Chemical Diagrams: User Manual
 #   by Jon L. Bentley, Lynn W. Jelinski, Brian W. Kernighan
 #   <http://cm.bell-labs.com/cm/cs/cstr/122.ps.gz>.
 
-# Copyright (C) 2006-2014 Free Software Foundation, Inc.
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
 
-# This file is part of `chem', which is part of `groff'.
+# This file is part of 'chem', which is part of 'groff'.
 
-# `groff' is free software; you can redistribute it and/or modify it
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License (GPL) version 2 as
 # published by the Free Software Foundation.
 
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # The GPL2 license text is available in the internet at
 # <http://www.gnu.org/licenses/gpl-2.0.html>.
index 82ce6fb..e622c46 100644 (file)
@@ -2,28 +2,28 @@ ch4n_triple.chem:
 .br
 .cstart
 
-# Example file for `chem':
+# Example file for 'chem':
 
 # This originates from Computing Science Technical Report No. 122
 #   CHEM - A Program for Typesetting Chemical Diagrams: User Manual
 #   by Jon L. Bentley, Lynn W. Jelinski, Brian W. Kernighan
 #   <http://cm.bell-labs.com/cm/cs/cstr/122.ps.gz>.
 
-# Copyright (C) 2006-2014 Free Software Foundation, Inc.
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
 
-# This file is part of `chem', which is part of `groff'.
+# This file is part of 'chem', which is part of 'groff'.
 
-# `groff' is free software; you can redistribute it and/or modify it
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License (GPL) version 2 as
 # published by the Free Software Foundation.
 
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # The GPL2 license text is available in the internet at
 # <http://www.gnu.org/licenses/gpl-2.0.html>.
index 2da5d25..919f84c 100644 (file)
@@ -2,26 +2,26 @@ ch4o_aromatic.chem:
 .br
 .cstart
 
-# Example file for `chem':
+# Example file for 'chem':
 
 # This originates from Computing Science Technical Report No. 122
 #   CHEM - A Program for Typesetting Chemical Diagrams: User Manual
 #   by Jon L. Bentley, Lynn W. Jelinski, Brian W. Kernighan
 #   <http://cm.bell-labs.com/cm/cs/cstr/122.ps.gz>.
 
-# Copyright (C) 2006-2014 Free Software Foundation, Inc.
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
 
-# `groff' is free software; you can redistribute it and/or modify it
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License (GPL) version 2 as
 # published by the Free Software Foundation.
 
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # The GPL2 license text is available in the internet at
 # <http://www.gnu.org/licenses/gpl-2.0.html>.
index 8f2d112..717481f 100644 (file)
@@ -2,28 +2,28 @@ ch4p_cholestanol.chem:
 .br
 .cstart
 
-# Example file for `chem':
+# Example file for 'chem':
 
 # This originates from Computing Science Technical Report No. 122
 #   CHEM - A Program for Typesetting Chemical Diagrams: User Manual
 #   by Jon L. Bentley, Lynn W. Jelinski, Brian W. Kernighan
 #   <http://cm.bell-labs.com/cm/cs/cstr/122.ps.gz>.
 
-# Copyright (C) 2006-2014 Free Software Foundation, Inc.
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
 
-# This file is part of `chem', which is part of `groff'.
+# This file is part of 'chem', which is part of 'groff'.
 
-# `groff' is free software; you can redistribute it and/or modify it
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License (GPL) version 2 as
 # published by the Free Software Foundation.
 
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # The GPL2 license text is available in the internet at
 # <http://www.gnu.org/licenses/gpl-2.0.html>.
index 0d41943..3bbf3e0 100644 (file)
@@ -2,28 +2,28 @@ ch4q_rings.chem:
 .br
 .cstart
 
-# Example file for `chem':
+# Example file for 'chem':
 
 # This originates from Computing Science Technical Report No. 122
 #   CHEM - A Program for Typesetting Chemical Diagrams: User Manual
 #   by Jon L. Bentley, Lynn W. Jelinski, Brian W. Kernighan
 #   <http://cm.bell-labs.com/cm/cs/cstr/122.ps.gz>.
 
-# Copyright (C) 2006-2014 Free Software Foundation, Inc.
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
 
-# This file is part of `chem', which is part of `groff'.
+# This file is part of 'chem', which is part of 'groff'.
 
-# `groff' is free software; you can redistribute it and/or modify it
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License (GPL) version 2 as
 # published by the Free Software Foundation.
 
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # The GPL2 license text is available in the internet at
 # <http://www.gnu.org/licenses/gpl-2.0.html>.
index e7df614..a98509b 100644 (file)
@@ -2,28 +2,28 @@ ch4r_spiro.chem:
 .br
 .cstart
 
-# Example file for `chem':
+# Example file for 'chem':
 
 # This originates from Computing Science Technical Report No. 122
 #   CHEM - A Program for Typesetting Chemical Diagrams: User Manual
 #   by Jon L. Bentley, Lynn W. Jelinski, Brian W. Kernighan
 #   <http://cm.bell-labs.com/cm/cs/cstr/122.ps.gz>.
 
-# Copyright (C) 2006-2014 Free Software Foundation, Inc.
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
 
-# This file is part of `chem', which is part of `groff'.
+# This file is part of 'chem', which is part of 'groff'.
 
-# `groff' is free software; you can redistribute it and/or modify it
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License (GPL) version 2 as
 # published by the Free Software Foundation.
 
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # The GPL2 license text is available in the internet at
 # <http://www.gnu.org/licenses/gpl-2.0.html>.
index 2a31aeb..13f935e 100644 (file)
@@ -2,28 +2,28 @@ ch4s_heteroatoms.chem:
 .br
 .cstart
 
-# Example file for `chem':
+# Example file for 'chem':
 
 # This originates from Computing Science Technical Report No. 122
 #   CHEM - A Program for Typesetting Chemical Diagrams: User Manual
 #   by Jon L. Bentley, Lynn W. Jelinski, Brian W. Kernighan
 #   <http://cm.bell-labs.com/cm/cs/cstr/122.ps.gz>.
 
-# Copyright (C) 2006-2014 Free Software Foundation, Inc.
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
 
-# This file is part of `chem', which is part of `groff'.
+# This file is part of 'chem', which is part of 'groff'.
 
-# `groff' is free software; you can redistribute it and/or modify it
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License (GPL) version 2 as
 # published by the Free Software Foundation.
 
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # The GPL2 license text is available in the internet at
 # <http://www.gnu.org/licenses/gpl-2.0.html>.
index ad79e0d..7a50d82 100644 (file)
@@ -2,28 +2,28 @@ ch4t_polycyclic.chem:
 .br
 .cstart
 
-# Example file for `chem':
+# Example file for 'chem':
 
 # This originates from Computing Science Technical Report No. 122
 #   CHEM - A Program for Typesetting Chemical Diagrams: User Manual
 #   by Jon L. Bentley, Lynn W. Jelinski, Brian W. Kernighan
 #   <http://cm.bell-labs.com/cm/cs/cstr/122.ps.gz>.
 
-# Copyright (C) 2006-2014 Free Software Foundation, Inc.
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
 
-# This file is part of `chem', which is part of `groff'.
+# This file is part of 'chem', which is part of 'groff'.
 
-# `groff' is free software; you can redistribute it and/or modify it
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License (GPL) version 2 as
 # published by the Free Software Foundation.
 
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # The GPL2 license text is available in the internet at
 # <http://www.gnu.org/licenses/gpl-2.0.html>.
index 268128a..ee37e19 100644 (file)
@@ -2,28 +2,28 @@ ch4u_nicotine.chem:
 .br
 .cstart
 
-# Example file for `chem':
+# Example file for 'chem':
 
 # This originates from Computing Science Technical Report No. 122
 #   CHEM - A Program for Typesetting Chemical Diagrams: User Manual
 #   by Jon L. Bentley, Lynn W. Jelinski, Brian W. Kernighan
 #   <http://cm.bell-labs.com/cm/cs/cstr/122.ps.gz>.
 
-# Copyright (C) 2006-2014 Free Software Foundation, Inc.
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
 
-# This file is part of `chem', which is part of `groff'.
+# This file is part of 'chem', which is part of 'groff'.
 
-# `groff' is free software; you can redistribute it and/or modify it
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License (GPL) version 2 as
 # published by the Free Software Foundation.
 
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # The GPL2 license text is available in the internet at
 # <http://www.gnu.org/licenses/gpl-2.0.html>.
index a5b61c1..b8cea27 100644 (file)
@@ -2,28 +2,28 @@ ch4v_histidine.chem:
 .br
 .cstart
 
-# Example file for `chem':
+# Example file for 'chem':
 
 # This originates from Computing Science Technical Report No. 122
 #   CHEM - A Program for Typesetting Chemical Diagrams: User Manual
 #   by Jon L. Bentley, Lynn W. Jelinski, Brian W. Kernighan
 #   <http://cm.bell-labs.com/cm/cs/cstr/122.ps.gz>.
 
-# Copyright (C) 2006-2014 Free Software Foundation, Inc.
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
 
-# This file is part of `chem', which is part of `groff'.
+# This file is part of 'chem', which is part of 'groff'.
 
-# `groff' is free software; you can redistribute it and/or modify it
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License (GPL) version 2 as
 # published by the Free Software Foundation.
 
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # The GPL2 license text is available in the internet at
 # <http://www.gnu.org/licenses/gpl-2.0.html>.
index 0aa6941..cca2e12 100644 (file)
@@ -2,28 +2,28 @@ ch4w_lsd.chem:
 .br
 .cstart
 
-# Example file for `chem':
+# Example file for 'chem':
 
 # This originates from Computing Science Technical Report No. 122
 #   CHEM - A Program for Typesetting Chemical Diagrams: User Manual
 #   by Jon L. Bentley, Lynn W. Jelinski, Brian W. Kernighan
 #   <http://cm.bell-labs.com/cm/cs/cstr/122.ps.gz>.
 
-# Copyright (C) 2006-2014 Free Software Foundation, Inc.
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
 
-# This file is part of `chem', which is part of `groff'.
+# This file is part of 'chem', which is part of 'groff'.
 
-# `groff' is free software; you can redistribute it and/or modify it
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License (GPL) version 2 as
 # published by the Free Software Foundation.
 
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # The GPL2 license text is available in the internet at
 # <http://www.gnu.org/licenses/gpl-2.0.html>.
index ad0e57d..a729a03 100644 (file)
@@ -2,28 +2,28 @@ ch4x_anisole.chem:
 .br
 .cstart
 
-# Example file for `chem':
+# Example file for 'chem':
 
 # This originates from Computing Science Technical Report No. 122
 #   CHEM - A Program for Typesetting Chemical Diagrams: User Manual
 #   by Jon L. Bentley, Lynn W. Jelinski, Brian W. Kernighan
 #   <http://cm.bell-labs.com/cm/cs/cstr/122.ps.gz>.
 
-# Copyright (C) 2006-2014 Free Software Foundation, Inc.
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
 
-# This file is part of `chem', which is part of `groff'.
+# This file is part of 'chem', which is part of 'groff'.
 
-# `groff' is free software; you can redistribute it and/or modify it
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License (GPL) version 2 as
 # published by the Free Software Foundation.
 
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # The GPL2 license text is available in the internet at
 # <http://www.gnu.org/licenses/gpl-2.0.html>.
index 2f6e41e..4ff18fc 100644 (file)
@@ -2,7 +2,7 @@ ch4y_reserpine.chem:
 .br
 .cstart
 
-# Example file for `chem':
+# Example file for 'chem':
 
 # This originates from Computing Science Technical Report No. 122
 #   CHEM - A Program for Typesetting Chemical Diagrams: User Manual
@@ -10,21 +10,21 @@ ch4y_reserpine.chem:
 #   <http://cm.bell-labs.com/cm/cs/cstr/122.ps.gz>.
 # Some corrections were added.
 
-# Copyright (C) 2006-2014 Free Software Foundation, Inc.
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
 
-# This file is part of `chem', which is part of `groff'.
+# This file is part of 'chem', which is part of 'groff'.
 
-# `groff' is free software; you can redistribute it and/or modify it
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License (GPL) version 2 as
 # published by the Free Software Foundation.
 
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # The GPL2 license text is available in the internet at
 # <http://www.gnu.org/licenses/gpl-2.0.html>.
index 7d0c4a2..685fc30 100644 (file)
@@ -5,7 +5,7 @@ delim $$
 .EN
 .cstart
 
-# Example file for `chem':
+# Example file for 'chem':
 
 # This originates from Computing Science Technical Report No. 122
 #   CHEM - A Program for Typesetting Chemical Diagrams: User Manual
@@ -13,21 +13,21 @@ delim $$
 #   <http://cm.bell-labs.com/cm/cs/cstr/122.ps.gz>.
 # Some corrections were added.
 
-# Copyright (C) 2006-2014 Free Software Foundation, Inc.
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
 
-# This file is part of `chem', which is part of `groff'.
+# This file is part of 'chem', which is part of 'groff'.
 
-# `groff' is free software; you can redistribute it and/or modify it
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License (GPL) version 2 as
 # published by the Free Software Foundation.
 
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # The GPL2 license text is available in the internet at
 # <http://www.gnu.org/licenses/gpl-2.0.html>.
index 215d219..4397127 100644 (file)
@@ -2,28 +2,28 @@ ch4z2_text.chem:
 .br
 .cstart
 
-# Example file for `chem':
+# Example file for 'chem':
 
 # This originates from Computing Science Technical Report No. 122
 #   CHEM - A Program for Typesetting Chemical Diagrams: User Manual
 #   by Jon L. Bentley, Lynn W. Jelinski, Brian W. Kernighan
 #   <http://cm.bell-labs.com/cm/cs/cstr/122.ps.gz>.
 
-# Copyright (C) 2006-2014 Free Software Foundation, Inc.
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
 
-# This file is part of `chem', which is part of `groff'.
+# This file is part of 'chem', which is part of 'groff'.
 
-# `groff' is free software; you can redistribute it and/or modify it
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License (GPL) version 2 as
 # published by the Free Software Foundation.
 
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # The GPL2 license text is available in the internet at
 # <http://www.gnu.org/licenses/gpl-2.0.html>.
index be3f8c0..5eeca02 100644 (file)
@@ -2,28 +2,28 @@ ch5a_size.chem:
 .br
 .cstart
 
-# Example file for `chem':
+# Example file for 'chem':
 
 # This originates from Computing Science Technical Report No. 122
 #   CHEM - A Program for Typesetting Chemical Diagrams: User Manual
 #   by Jon L. Bentley, Lynn W. Jelinski, Brian W. Kernighan
 #   <http://cm.bell-labs.com/cm/cs/cstr/122.ps.gz>.
 
-# Copyright (C) 2006-2014 Free Software Foundation, Inc.
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
 
-# This file is part of `chem', which is part of `groff'.
+# This file is part of 'chem', which is part of 'groff'.
 
-# `groff' is free software; you can redistribute it and/or modify it
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License (GPL) version 2 as
 # published by the Free Software Foundation.
 
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # The GPL2 license text is available in the internet at
 # <http://www.gnu.org/licenses/gpl-2.0.html>.
index bbb6a7c..4351b00 100644 (file)
@@ -2,28 +2,28 @@ ch6a_pic.chem:
 .br
 .cstart
 
-# Example file for `chem':
+# Example file for 'chem':
 
 # This originates from Computing Science Technical Report No. 122
 #   CHEM - A Program for Typesetting Chemical Diagrams: User Manual
 #   by Jon L. Bentley, Lynn W. Jelinski, Brian W. Kernighan
 #   <http://cm.bell-labs.com/cm/cs/cstr/122.ps.gz>.
 
-# Copyright (C) 2006-2014 Free Software Foundation, Inc.
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
 
-# This file is part of `chem', which is part of `groff'.
+# This file is part of 'chem', which is part of 'groff'.
 
-# `groff' is free software; you can redistribute it and/or modify it
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License (GPL) version 2 as
 # published by the Free Software Foundation.
 
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # The GPL2 license text is available in the internet at
 # <http://www.gnu.org/licenses/gpl-2.0.html>.
index 2fc25e5..73709b0 100644 (file)
@@ -2,28 +2,28 @@ ch6b_dna.chem:
 .br
 .cstart
 
-# Example file for `chem':
+# Example file for 'chem':
 
 # This originates from Computing Science Technical Report No. 122
 #   CHEM - A Program for Typesetting Chemical Diagrams: User Manual
 #   by Jon L. Bentley, Lynn W. Jelinski, Brian W. Kernighan
 #   <http://cm.bell-labs.com/cm/cs/cstr/122.ps.gz>.
 
-# Copyright (C) 2006-2014 Free Software Foundation, Inc.
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
 
-# This file is part of `chem', which is part of `groff'.
+# This file is part of 'chem', which is part of 'groff'.
 
-# `groff' is free software; you can redistribute it and/or modify it
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License (GPL) version 2 as
 # published by the Free Software Foundation.
 
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # The GPL2 license text is available in the internet at
 # <http://www.gnu.org/licenses/gpl-2.0.html>.
index 5e0a849..995fba4 100644 (file)
@@ -2,28 +2,28 @@ chAa_polymer.chem:
 .br
 .cstart
 
-# Example file for `chem':
+# Example file for 'chem':
 
 # This originates from Computing Science Technical Report No. 122
 #   CHEM - A Program for Typesetting Chemical Diagrams: User Manual
 #   by Jon L. Bentley, Lynn W. Jelinski, Brian W. Kernighan
 #   <http://cm.bell-labs.com/cm/cs/cstr/122.ps.gz>.
 
-# Copyright (C) 2006-2014 Free Software Foundation, Inc.
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
 
-# This file is part of `chem', which is part of `groff'.
+# This file is part of 'chem', which is part of 'groff'.
 
-# `groff' is free software; you can redistribute it and/or modify it
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License (GPL) version 2 as
 # published by the Free Software Foundation.
 
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # The GPL2 license text is available in the internet at
 # <http://www.gnu.org/licenses/gpl-2.0.html>.
index 26b4386..a7aa46c 100644 (file)
@@ -2,28 +2,28 @@ chAb_vinyl_chloro.chem:
 .br
 .cstart
 
-# Example file for `chem':
+# Example file for 'chem':
 
 # This originates from Computing Science Technical Report No. 122
 #   CHEM - A Program for Typesetting Chemical Diagrams: User Manual
 #   by Jon L. Bentley, Lynn W. Jelinski, Brian W. Kernighan
 #   <http://cm.bell-labs.com/cm/cs/cstr/122.ps.gz>.
 
-# Copyright (C) 2006-2014 Free Software Foundation, Inc.
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
 
-# This file is part of `chem', which is part of `groff'.
+# This file is part of 'chem', which is part of 'groff'.
 
-# `groff' is free software; you can redistribute it and/or modify it
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License (GPL) version 2 as
 # published by the Free Software Foundation.
 
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # The GPL2 license text is available in the internet at
 # <http://www.gnu.org/licenses/gpl-2.0.html>.
index 39e3d77..5d43cdb 100644 (file)
@@ -2,28 +2,28 @@ chAc_morphine.chem:
 .br
 .cstart
 
-# Example file for `chem':
+# Example file for 'chem':
 
 # This originates from Computing Science Technical Report No. 122
 #   CHEM - A Program for Typesetting Chemical Diagrams: User Manual
 #   by Jon L. Bentley, Lynn W. Jelinski, Brian W. Kernighan
 #   <http://cm.bell-labs.com/cm/cs/cstr/122.ps.gz>.
 
-# Copyright (C) 2006-2014 Free Software Foundation, Inc.
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
 
-# This file is part of `chem', which is part of `groff'.
+# This file is part of 'chem', which is part of 'groff'.
 
-# `groff' is free software; you can redistribute it and/or modify it
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License (GPL) version 2 as
 # published by the Free Software Foundation.
 
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # The GPL2 license text is available in the internet at
 # <http://www.gnu.org/licenses/gpl-2.0.html>.
index 5595474..40e9fa2 100644 (file)
@@ -2,28 +2,28 @@ chAd_chlorophyll.chem:
 .br
 .cstart
 
-# Example file for `chem':
+# Example file for 'chem':
 
 # This originates from Computing Science Technical Report No. 122
 #   CHEM - A Program for Typesetting Chemical Diagrams: User Manual
 #   by Jon L. Bentley, Lynn W. Jelinski, Brian W. Kernighan
 #   <http://cm.bell-labs.com/cm/cs/cstr/122.ps.gz>.
 
-# Copyright (C) 2006-2014 Free Software Foundation, Inc.
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
 
-# This file is part of `chem', which is part of `groff'.
+# This file is part of 'chem', which is part of 'groff'.
 
-# `groff' is free software; you can redistribute it and/or modify it
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License (GPL) version 2 as
 # published by the Free Software Foundation.
 
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # The GPL2 license text is available in the internet at
 # <http://www.gnu.org/licenses/gpl-2.0.html>.
index 3e7d668..30612a3 100644 (file)
@@ -2,28 +2,28 @@ chAe_chair.chem:
 .br
 .cstart
 
-# Example file for `chem':
+# Example file for 'chem':
 
 # This originates from Computing Science Technical Report No. 122
 #   CHEM - A Program for Typesetting Chemical Diagrams: User Manual
 #   by Jon L. Bentley, Lynn W. Jelinski, Brian W. Kernighan
 #   <http://cm.bell-labs.com/cm/cs/cstr/122.ps.gz>.
 
-# Copyright (C) 2006-2014 Free Software Foundation, Inc.
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
 
-# This file is part of `chem', which is part of `groff'.
+# This file is part of 'chem', which is part of 'groff'.
 
-# `groff' is free software; you can redistribute it and/or modify it
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License (GPL) version 2 as
 # published by the Free Software Foundation.
 
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # The GPL2 license text is available in the internet at
 # <http://www.gnu.org/licenses/gpl-2.0.html>.
index a26584f..83685b8 100644 (file)
@@ -5,28 +5,28 @@ delim $$
 .EN
 .cstart
 
-# Example file for `chem':
+# Example file for 'chem':
 
 # This originates from Computing Science Technical Report No. 122
 #   CHEM - A Program for Typesetting Chemical Diagrams: User Manual
 #   by Jon L. Bentley, Lynn W. Jelinski, Brian W. Kernighan
 #   <http://cm.bell-labs.com/cm/cs/cstr/122.ps.gz>.
 
-# Copyright (C) 2006-2014 Free Software Foundation, Inc.
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
 
-# This file is part of `chem', which is part of `groff'.
+# This file is part of 'chem', which is part of 'groff'.
 
-# `groff' is free software; you can redistribute it and/or modify it
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License (GPL) version 2 as
 # published by the Free Software Foundation.
 
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # The GPL2 license text is available in the internet at
 # <http://www.gnu.org/licenses/gpl-2.0.html>.
index 90a6124..6c70226 100644 (file)
@@ -2,28 +2,28 @@ chAg_circle.chem:
 .br
 .cstart
 
-# Example file for `chem':
+# Example file for 'chem':
 
 # This originates from Computing Science Technical Report No. 122
 #   CHEM - A Program for Typesetting Chemical Diagrams: User Manual
 #   by Jon L. Bentley, Lynn W. Jelinski, Brian W. Kernighan
 #   <http://cm.bell-labs.com/cm/cs/cstr/122.ps.gz>.
 
-# Copyright (C) 2006-2014 Free Software Foundation, Inc.
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
 
-# This file is part of `chem', which is part of `groff'.
+# This file is part of 'chem', which is part of 'groff'.
 
-# `groff' is free software; you can redistribute it and/or modify it
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License (GPL) version 2 as
 # published by the Free Software Foundation.
 
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # The GPL2 license text is available in the internet at
 # <http://www.gnu.org/licenses/gpl-2.0.html>.
index 0bda3c8..3db3581 100644 (file)
@@ -5,28 +5,28 @@ delim $$
 .EN
 .cstart
 
-# Example file for `chem':
+# Example file for 'chem':
 
 # This originates from Computing Science Technical Report No. 122
 #   CHEM - A Program for Typesetting Chemical Diagrams: User Manual
 #   by Jon L. Bentley, Lynn W. Jelinski, Brian W. Kernighan
 #   <http://cm.bell-labs.com/cm/cs/cstr/122.ps.gz>.
 
-# Copyright (C) 2006-2014 Free Software Foundation, Inc.
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
 
-# This file is part of `chem', which is part of `groff'.
+# This file is part of 'chem', which is part of 'groff'.
 
-# `groff' is free software; you can redistribute it and/or modify it
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License (GPL) version 2 as
 # published by the Free Software Foundation.
 
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # The GPL2 license text is available in the internet at
 # <http://www.gnu.org/licenses/gpl-2.0.html>.
index f99679e..71f9c6a 100644 (file)
@@ -3,28 +3,28 @@ chAi_poly_vinyl_chloride.chem:
 .ps -2
 .cstart
 
-# Example file for `chem':
+# Example file for 'chem':
 
 # This originates from Computing Science Technical Report No. 122
 #   CHEM - A Program for Typesetting Chemical Diagrams: User Manual
 #   by Jon L. Bentley, Lynn W. Jelinski, Brian W. Kernighan
 #   <http://cm.bell-labs.com/cm/cs/cstr/122.ps.gz>.
 
-# Copyright (C) 2006-2014 Free Software Foundation, Inc.
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
 
-# This file is part of `chem', which is part of `groff'.
+# This file is part of 'chem', which is part of 'groff'.
 
-# `groff' is free software; you can redistribute it and/or modify it
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License (GPL) version 2 as
 # published by the Free Software Foundation.
 
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # The GPL2 license text is available in the internet at
 # <http://www.gnu.org/licenses/gpl-2.0.html>.
index 6e1af6e..db0e2da 100644 (file)
@@ -2,28 +2,28 @@ chBa_jump.chem:
 .br
 .cstart
 
-# Example file for `chem':
+# Example file for 'chem':
 
 # This originates from Computing Science Technical Report No. 122
 #   CHEM - A Program for Typesetting Chemical Diagrams: User Manual
 #   by Jon L. Bentley, Lynn W. Jelinski, Brian W. Kernighan
 #   <http://cm.bell-labs.com/cm/cs/cstr/122.ps.gz>.
 
-# Copyright (C) 2006-2014 Free Software Foundation, Inc.
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
 
-# This file is part of `chem', which is part of `groff'.
+# This file is part of 'chem', which is part of 'groff'.
 
-# `groff' is free software; you can redistribute it and/or modify it
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License (GPL) version 2 as
 # published by the Free Software Foundation.
 
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # The GPL2 license text is available in the internet at
 # <http://www.gnu.org/licenses/gpl-2.0.html>.
index 30ee356..acb02fc 100644 (file)
@@ -2,28 +2,28 @@ chBb_bonds.chem:
 .br
 .cstart
 
-# Example file for `chem':
+# Example file for 'chem':
 
 # This originates from Computing Science Technical Report No. 122
 #   CHEM - A Program for Typesetting Chemical Diagrams: User Manual
 #   by Jon L. Bentley, Lynn W. Jelinski, Brian W. Kernighan
 #   <http://cm.bell-labs.com/cm/cs/cstr/122.ps.gz>.
 
-# Copyright (C) 2006-2014 Free Software Foundation, Inc.
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
 
-# This file is part of `chem', which is part of `groff'.
+# This file is part of 'chem', which is part of 'groff'.
 
-# `groff' is free software; you can redistribute it and/or modify it
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License (GPL) version 2 as
 # published by the Free Software Foundation.
 
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # The GPL2 license text is available in the internet at
 # <http://www.gnu.org/licenses/gpl-2.0.html>.
index 5e1dca4..c04623d 100644 (file)
@@ -2,28 +2,28 @@ chBc_rings.chem:
 .br
 .cstart
 
-# Example file for `chem':
+# Example file for 'chem':
 
 # This originates from Computing Science Technical Report No. 122
 #   CHEM - A Program for Typesetting Chemical Diagrams: User Manual
 #   by Jon L. Bentley, Lynn W. Jelinski, Brian W. Kernighan
 #   <http://cm.bell-labs.com/cm/cs/cstr/122.ps.gz>.
 
-# Copyright (C) 2006-2014 Free Software Foundation, Inc.
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
 
-# This file is part of `chem', which is part of `groff'.
+# This file is part of 'chem', which is part of 'groff'.
 
-# `groff' is free software; you can redistribute it and/or modify it
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License (GPL) version 2 as
 # published by the Free Software Foundation.
 
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # The GPL2 license text is available in the internet at
 # <http://www.gnu.org/licenses/gpl-2.0.html>.
index cd5a3ad..d00130e 100644 (file)
@@ -1,23 +1,23 @@
-This directory contains examples for the `chem' language.
+This directory contains examples for the 'chem' language.
 
 You can view the graphical display of the examples by calling
 
     groffer <file>
 
-`groffer' calls `chem' automatically.
+'groffer' calls 'chem' automatically.
 
 If you want to transform example files to a different format use the
-`roff2*' programs:
+'roff2*' programs:
 
-`roff2dvi' prints dvi format to standard output,
-`roff2html' generates html output,
-`roff2pdf' outputs pdf mode,
-`roff2ps' produces PostScript output,
-`roff2text' generates text output in the groff device `latin1',
-`roff2x' prints the output  in  the  groff  device  X  that  is
-         suitable  for programs  like `gxditview' or `xditview'.
+'roff2dvi' prints dvi format to standard output,
+'roff2html' generates html output,
+'roff2pdf' outputs pdf mode,
+'roff2ps' produces PostScript output,
+'roff2text' generates text output in the groff device 'latin1',
+'roff2x' prints the output  in  the  groff  device  X  that  is
+         suitable  for programs  like 'gxditview' or 'xditview'.
 
-To get a suitable `groff' output run
+To get a suitable 'groff' output run
 
     @g@chem <file> | groff -p ...
 
@@ -37,17 +37,17 @@ chemically.
 
 ####### License
 
-Copyright (C) 2006-2014 Free Software Foundation, Inc.
+Copyright (C) 2006-2018 Free Software Foundation, Inc.
 Written by Bernd Warken <groff-bernd.warken-72@web.de>.
 
-This file is part of `chem', which is part of `groff'.
+This file is part of 'chem', which is part of 'groff'.
 
-`groff' is free software; you can redistribute it and/or modify it
+'groff' 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.
 
-`groff' is distributed in the hope that it will be useful, but WITHOUT
+'groff' 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.
index e2a4f7a..dbc59f4 100644 (file)
@@ -1,7 +1,7 @@
 atp.chem:
 .cstart
 
-# Example file for `chem':
+# Example file for 'chem':
 #   ATP or C10_H16_N5_O13_P3 or
 #   [[[5-(6-aminopurin-9-yl)-3,4-dihydroxy-oxolan-2-yl]methoxy-hydroxy-
 #     phosphoryl]oxy-hydroxy-phosphoryl]oxyphosphonic acid
@@ -11,16 +11,16 @@ atp.chem:
 # Source file position: <groff-source>/contrib/chem/example/atp.chem
 # Installed position: <prefix>/share/doc/groff/example/chem/atp.chem
 
-# Copyright (C) 2006-2014 Free Software Foundation, Inc.
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
 # Written by Bernd Warken <groff-bernd.warken-72@web.de>.
 
-# This file is part of `chem', which is part of `groff'.
+# This file is part of 'chem', which is part of 'groff'.
 
-# `groff' is free software; you can redistribute it and/or modify it
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License (GPL) version 2 as
 # published by the Free Software Foundation.
 
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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.
index 7e44167..d5dd046 100644 (file)
@@ -1,7 +1,7 @@
 cholesterin.chem:
 .cstart
 
-# Example file for `chem':
+# Example file for 'chem':
 #   Cholesterin or C27_H46O or
 #   10,13-dimethyl-17-(6-methylheptan-2-yl)-2,3,4,5,6,9,11,12,14,15,16,17-
 #     dodecahydro-1H-cyclopenta[a]phenanthren-3-ol
@@ -9,22 +9,22 @@ cholesterin.chem:
 # Source file position: <groff-source>/contrib/chem/example/cholesterin.p
 # Installed position: <prefix>/share/doc/groff/example/chem/cholesterin.p
 
-# Copyright (C) 2006-2014 Free Software Foundation, Inc.
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
 # Written by Bernd Warken <groff-bernd.warken-72@web.de>.
 
-# This file is part of `chem', which is part of `groff'.
+# This file is part of 'chem', which is part of 'groff'.
 
-# `groff' is free software; you can redistribute it and/or modify it
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License (GPL) version 2 as
 # published by the Free Software Foundation.
 
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 R1:    ring6
        bond -120 ; HO
index 47d9799..4de4c15 100644 (file)
@@ -1,23 +1,23 @@
 ethamivan.chem:
 .cstart
 
-# Example file for `chem':
+# Example file for 'chem':
 #   Ethamivan or Analepticon or C12_H17_N_O3 or
 #   N,N-diethyl-4-hydroxy-3-methoxy-benzamide
 
 # Source file position: <groff-source>/contrib/chem/example/ethamivan.chem
 # Installed position: <prefix>/share/doc/groff/example/chem/ethamivan.chem
 
-# Copyright (C) 2006-2014 Free Software Foundation, Inc.
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
 # Written by Bernd Warken <groff-bernd.warken-72@web.de>.
 
-# This file is part of `chem', which is part of `groff'.
+# This file is part of 'chem', which is part of 'groff'.
 
-# `groff' is free software; you can redistribute it and/or modify it
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License (GPL) version 2 as
 # published by the Free Software Foundation.
 
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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.
index 92f6272..2f23dd8 100644 (file)
@@ -1,29 +1,29 @@
 lsd.chem:
 .cstart
 
-# Example file for `chem':
+# Example file for 'chem':
 #   LSD or Lysergic acid dethylamide or C20_H25_N3O or
 #   9,10-Didehydro-N,N-diethyl-6-methyl-ergoline-8-beta-carboxamide
 
 # Source file position: <groff-source>/contrib/chem/example/lsd.p
 # Installed position: <prefix>/share/doc/groff/example/chem/lsd.p
 
-# Copyright (C) 2006-2014 Free Software Foundation, Inc.
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
 # Written by Bernd Warken <groff-bernd.warken-72@web.de>.
 
-# This file is part of `chem', which is part of `groff'.
+# This file is part of 'chem', which is part of 'groff'.
 
-# `groff' is free software; you can redistribute it and/or modify it
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License (GPL) version 2 as
 # published by the Free Software Foundation.
 
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 F:     flatring5 pointing left put N at 5 double 3,4
        H below F.N
index 67a72c9..e994ead 100644 (file)
@@ -1,7 +1,7 @@
 morphine.chem:
 .cstart
 
-# Example file for `chem':
+# Example file for 'chem':
 #    Morphine or C23_H31_N3O or
 #    N,N-diethyl-N'-(2-methoxyacridin-9-yl)-pentane-1,4-diamine
 
@@ -10,22 +10,22 @@ morphine.chem:
 # Source file position: <groff-source>/contrib/chem/example/morphine.chem
 # Installed position: <prefix>/share/doc/groff/example/chem/morphine.chem
 
-# Copyright (C) 2006-2014 Free Software Foundation, Inc.
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
 # Written by Bernd Warken <groff-bernd.warken-72@web.de>.
 
-# This file is part of `chem', which is part of `groff'.
+# This file is part of 'chem', which is part of 'groff'.
 
-# `groff' is free software; you can redistribute it and/or modify it
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License (GPL) version 2 as
 # published by the Free Software Foundation.
 
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # The GPL2 license text is available in the internet at
 # <http://www.gnu.org/licenses/gpl-2.0.html>.
index f2d6607..afe2786 100644 (file)
@@ -1,7 +1,7 @@
 penicillin.chem:
 .cstart
 
-# Example file for `chem':
+# Example file for 'chem':
 #    Penicillin or C16_H18_N2_O4_S or
 #    3,3-dimethyl-6-oxo-7-(2-phenylacetyl)amino-2-thia-5-
 #      azabicyclo[3.2.0]heptane-4-carboxylic acid
@@ -11,22 +11,22 @@ penicillin.chem:
 # Source file position: <groff-source>/contrib/chem/example/morphine.chem
 # Installed position: <prefix>/share/doc/groff/example/chem/morphine.chem
 
-# Copyright (C) 2006-2014 Free Software Foundation, Inc.
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
 # Written by Bernd Warken <groff-bernd.warken-72@web.de>.
 
-# This file is part of `chem', which is part of `groff'.
+# This file is part of 'chem', which is part of 'groff'.
 
-# `groff' is free software; you can redistribute it and/or modify it
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License (GPL) version 2 as
 # published by the Free Software Foundation.
 
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # The GPL2 license text is available in the internet at
 # <http://www.gnu.org/licenses/gpl-2.0.html>.
index b6e4e92..188ac9c 100644 (file)
@@ -2,28 +2,28 @@ reserpine.chem:
 .PS
 begin chem
 
-# Example file for `chem':
+# Example file for 'chem':
 #   Reserpine or C33H40N2O9
 
 # Source file position: <groff-source>/contrib/chem/example/reserpine.chem
 # Installed position: <prefix>/share/doc/groff/example/chem/reserpine.chem
 
-# Copyright (C) 2006-2014 Free Software Foundation, Inc.
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
 # Written by Bernd Warken <groff-bernd.warken-72@web.de>.
 
-# This file is part of `chem', which is part of `groff'.
+# This file is part of 'chem', which is part of 'groff'.
 
-# `groff' is free software; you can redistribute it and/or modify it
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License (GPL) version 2 as
 # published by the Free Software Foundation.
 
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # The GPL2 license text is available in the internet at
 # <http://www.gnu.org/licenses/gpl-2.0.html>.
diff --git a/contrib/eqn2graph/Makefile.sub b/contrib/eqn2graph/Makefile.sub
deleted file mode 100644 (file)
index 8f3a4b7..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-# Copyright (C) 2002-2014
-#   Free Software Foundation, Inc.
-#
-# This file is part of groff.
-#
-# groff 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.
-#
-# groff 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 <http://www.gnu.org/licenses/>.
-#
-# Makefile.sub
-#
-MAN1=eqn2graph.n
-MOSTLYCLEANADD=eqn2graph
-RM=rm -f
-
-all: eqn2graph
-
-eqn2graph: eqn2graph.sh
-       sed -e "s|@g@|$(g)|g" \
-           -e "s|@VERSION@|$(version)$(revision)|" \
-           -e $(SH_SCRIPT_SED_CMD) $(srcdir)/eqn2graph.sh >$@
-       chmod +x $@
-
-install_data: eqn2graph
-       -test -d $(DESTDIR)$(bindir) || $(mkinstalldirs) $(DESTDIR)$(bindir)
-       $(RM) $(DESTDIR)$(bindir)/eqn2graph
-       $(INSTALL_SCRIPT) eqn2graph $(DESTDIR)$(bindir)/eqn2graph
-
-uninstall_sub:
-       $(RM) $(DESTDIR)$(bindir)/eqn2graph
-
-########################################################################
-# Emacs settings
-########################################################################
-#
-# Local Variables:
-# mode: makefile
-# End:
diff --git a/contrib/eqn2graph/eqn2graph.1.man b/contrib/eqn2graph/eqn2graph.1.man
new file mode 100644 (file)
index 0000000..8113227
--- /dev/null
@@ -0,0 +1,158 @@
+.TH EQN2GRAPH @MAN1EXT@ "@MDATE@" "groff @VERSION@"
+.SH NAME
+eqn2graph \- convert an EQN equation into a cropped image
+.
+.
+.\" ====================================================================
+.\" Legal Terms
+.\" ====================================================================
+.\"
+.\" This documentation is released to the public domain.
+.
+.
+.\" ====================================================================
+.SH SYNOPSIS
+.\" ====================================================================
+.
+.SY eqn2graph
+.OP \-format output-format
+.RI [ convert-arguments ]
+.YS
+.
+.SY eqn2graph
+.B \-\-help
+.YS
+.
+.SY eqn2graph
+.B \-v
+.SY eqn2graph
+.B \-\-version
+.YS
+.
+.
+.\" ====================================================================
+.SH DESCRIPTION
+.\" ====================================================================
+.
+.I eqn2graph
+reads a one-line
+.IR @g@eqn (@MAN1EXT@)
+equation from the standard input and writes an image file,
+by default in Portable Network Graphics (PNG) format,
+to the standard output.
+.
+.
+.PP
+The input EQN code should
+.I not
+be preceded by the
+.B \&.EQ
+macro that normally precedes it within
+.IR groff (@MAN1EXT@)
+macros;
+nor do you need to have dollar-sign or other delimiters around the
+equation.
+.
+.
+.\" FIXME: How old?  This text hasn't been touched since 2008 at latest.
+.\" Older versions of
+.\" .I \%convert
+.\" will produce a black-on-white graphic; newer ones may produce a
+.\" black-on-transparent graphic.
+.
+.PP
+Arguments not recognized by
+.I eqn2graph
+are passed to the ImageMagick or GraphicsMagick program
+.IR \%convert (1).
+.
+.
+By specifying these, you can give your image a border,
+.\" Transparent backgrounds are the default in 2018.
+.\" force the background transparent,
+set the image's pixel density,
+or perform other useful transformations.
+.
+.
+.PP
+The output image is clipped using
+.IR \%convert 's
+.B \-trim
+option to the smallest possible bounding box that contains all the black
+pixels.
+.
+.
+.\" ====================================================================
+.SH OPTIONS
+.\" ====================================================================
+.
+.TP
+.BI "\-format " output-format
+Write the image in
+.IR output-format ,
+which must be understood by
+.IR \%convert ;
+the default is PNG.
+.
+.
+.TP
+.B \-\-help
+Display a usage message and exit.
+.
+.
+.TP
+.B \-v
+.TQ
+.B \-\-version
+Display version information and exit.
+.
+.
+.\" ====================================================================
+.SH ENVIRONMENT
+.\" ====================================================================
+.
+.TP
+.I \%GROFF_TMPDIR
+.TQ
+.I \%TMPDIR
+.TQ
+.I TMP
+.TQ
+.I TEMP
+These environment variables are searched in the given order to determine
+the directory where temporary files will be created.
+.
+If none are set,
+.I /tmp
+is used.
+.
+.
+.\" ====================================================================
+.SH AUTHORS
+.\" ====================================================================
+.
+.I eqn2graph
+was written by
+.MT esr@\:thyrsus.com
+Eric S.\& Raymond
+.ME ,
+based on a recipe for
+.IR pic2graph (@MAN1EXT@),
+by W.\& Richard Stevens.
+.
+.
+.\" ====================================================================
+.SH "SEE ALSO"
+.\" ====================================================================
+.
+.IR pic2graph (@MAN1EXT@),
+.IR grap2graph (@MAN1EXT@),
+.IR @g@eqn (@MAN1EXT@),
+.IR groff (@MAN1EXT@),
+.IR \%convert (1)
+.
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" End:
+.\" vim: set filetype=groff:
similarity index 51%
rename from contrib/pic2graph/Makefile.sub
rename to contrib/eqn2graph/eqn2graph.am
index d49b7e3..79a8ad1 100644 (file)
@@ -1,4 +1,6 @@
-# Copyright (C) 2001-2014  Free Software Foundation, Inc.
+# Copyright (C) 2002-2018 Free Software Foundation, Inc.
+#
+# Last update: 22 Aug 2015
 #
 # This file is part of groff.
 #
 # for more details.
 #
 # You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #
-# Makefile.sub
+# eqn2graph.am
 #
-MAN1=pic2graph.n
-MOSTLYCLEANADD=pic2graph
-RM=rm -f
-
-all: pic2graph
 
-pic2graph: pic2graph.sh
-       sed -e "s|@g@|$(g)|g" \
-           -e "s|@VERSION@|$(version)$(revision)|" \
-           -e $(SH_SCRIPT_SED_CMD) $(srcdir)/pic2graph.sh >$@
-       chmod +x $@
+eqn2graph_srcdir = $(top_srcdir)/contrib/eqn2graph
+bin_SCRIPTS += eqn2graph
+man1_MANS += contrib/eqn2graph/eqn2graph.1
+EXTRA_DIST += \
+  contrib/eqn2graph/eqn2graph.1.man \
+  contrib/eqn2graph/eqn2graph.sh
 
-install_data: pic2graph
-       -test -d $(DESTDIR)$(bindir) || $(mkinstalldirs) $(DESTDIR)$(bindir)
-       $(RM) $(DESTDIR)$(bindir)/pic2graph
-       $(INSTALL_SCRIPT) pic2graph $(DESTDIR)$(bindir)/pic2graph
-
-uninstall_sub:
-       $(RM) $(DESTDIR)$(bindir)/pic2graph
+eqn2graph: $(top_srcdir)/contrib/eqn2graph/eqn2graph.sh
+       $(AM_V_GEN)sed -e "s|[@]g[@]|$(g)|g" \
+           -e "s|[@]VERSION[@]|$(VERSION)|" \
+           -e $(SH_SCRIPT_SED_CMD) $(eqn2graph_srcdir)/eqn2graph.sh \
+           >$@ \
+       && chmod +x $@
 
 
 ########################################################################
-# Emacs settings
-#
+### Emacs settings
 # Local Variables:
-# mode: makefile
+# mode: makefile-automake
 # End:
diff --git a/contrib/eqn2graph/eqn2graph.man b/contrib/eqn2graph/eqn2graph.man
deleted file mode 100644 (file)
index 8d56768..0000000
+++ /dev/null
@@ -1,183 +0,0 @@
-.TH EQN2GRAPH @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
-.SH NAME
-eqn2graph \- convert an EQN equation into a cropped image
-.
-.
-.\" This documentation is released to the public domain.
-.
-.
-.\" Like TP, but if specified indent is more than half
-.\" the current line-length - indent, use the default indent.
-.de Tp
-.ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP
-.el .TP "\\$1"
-..
-.
-.\" --------------------------------------------------------------------
-.SH SYNOPSIS
-.\" --------------------------------------------------------------------
-.
-.B eqn2graph
-[
-.B \-unsafe
-]
-[
-.BI \-format\  fmt
-]
-.
-.
-.\" --------------------------------------------------------------------
-.SH DESCRIPTION
-.\" --------------------------------------------------------------------
-.
-Reads an EQN equation (one line) as input; produces an image
-file (by default in Portable Network Graphics format) suitable for the
-Web as output.
-.
-.
-.P
-Your input EQN code should
-.I not
-have the \&.EQ/.EN preamble that normally precedes it within
-.BR groff (@MAN1EXT@)
-macros; nor do you need to have dollar-sign or other delimiters
-around the equation.
-.
-.
-.P
-The output image will be clipped to the smallest possible bounding box
-that contains all the black pixels.
-.
-Older versions of
-.BR convert (1)
-will produce a black-on-white graphic; newer ones may produce a
-black-on-transparent graphic.
-.
-By specifying command-line options to be passed to
-.BR convert (1)
-you can give it a border, force the background transparent, set the
-image's pixel density, or perform other useful transformations.
-.
-.
-.P
-This program uses
-.BR @g@eqn (@MAN1EXT@),
-.BR groff (@MAN1EXT@),
-and the ImageMagick
-.BR convert (1)
-program.
-.
-These programs must be installed on your system and accessible on your
-$PATH for
-.B eqn2graph
-to work.
-.
-.
-.\" --------------------------------------------------------------------
-.SH OPTIONS
-.\" --------------------------------------------------------------------
-.
-.TP
-.B \-unsafe
-Run
-.BR groff (@MAN1EXT@)
-in the `unsafe' mode enabling the PIC macro
-.B sh
-to execute arbitrary commands.
-.
-The default is to forbid this.
-.
-.TP
-.BI \-format\  fmt
-Specify an output format; the default is PNG (Portable Network Graphics).
-.
-Any format that
-.BR convert (1)
-can emit is supported.
-.
-.
-.PP
-Command-line switches and arguments not listed above are passed to
-.BR convert (1).
-.
-.
-.\" --------------------------------------------------------------------
-.SH FILES
-.\" --------------------------------------------------------------------
-.
-.Tp \w'\fB@MACRODIR@/eqnrc'u+2n
-.B @MACRODIR@/eqnrc
-The
-.BR @g@eqn (@MAN1EXT@)
-initialization file.
-.
-.
-.\" --------------------------------------------------------------------
-.SH ENVIRONMENT
-.\" --------------------------------------------------------------------
-.
-.TP
-.B GROFF_TMPDIR
-The directory in which temporary files will be created.
-.
-If this is not set
-.B eqn2graph
-searches the environment variables
-.BR \%TMPDIR ,
-.BR TMP ,
-and
-.B TEMP
-(in that order).
-.
-Otherwise, temporary files will be created in
-.BR /tmp .
-.
-.
-.\" --------------------------------------------------------------------
-.SH BUGS
-.\" --------------------------------------------------------------------
-.
-Due to changes in the behavior of ImageMagick
-.BR convert (1)
-that are both forward and backward-incompatible,
-mismatches between your
-.B eqn2graph
-and
-.BR convert (1)
-versions may produce zero-sized or untrimmed output images.
-.
-For this version of
-.B eqn2graph
-you will need a version of
-.BR convert (1)
-that supports the
-.B \-trim
-option; older versions of
-.B eqn2graph
-used
-.BR \-crop\~0x0 ,
-which no longer has trimming behavior.
-.
-.
-.\" --------------------------------------------------------------------
-.ad l
-.SH "SEE ALSO"
-.\" --------------------------------------------------------------------
-.
-.BR pic2graph (@MAN1EXT@),
-.BR grap2graph (@MAN1EXT@),
-.BR @g@eqn (@MAN1EXT@),
-.BR groff (@MAN1EXT@),
-.BR gs (1),
-.BR convert (1).
-.
-.
-.SH AUTHORS
-Eric S.\& Raymond <esr@thyrsus.com>.
-.
-This documentation is released to the public domain.
-.
-.
-.\" Local Variables:
-.\" mode: nroff
-.\" End:
index ee7cc5f..3e9c374 100644 (file)
@@ -7,8 +7,7 @@
 # In Unixland, the magic is in knowing what to string together...
 #
 # Take an eqn equation on stdin, emit cropped bitmap on stdout.
-# The pic markup should *not* be wrapped in .EQ/.EN, this script will do that.
-# A -U option on the command line enables gpic/groff "unsafe" mode.
+# The eqn markup should *not* be wrapped in .EQ/.EN, this script will do that.
 # A -format FOO option changes the image output format to any format
 # supported by convert(1).  All other options are passed to convert(1).
 # The default format is PNG.
 #
 # 1. None of the options of eqn(1) are relevant.
 #
-# 2. Only the -U option of groff(1) is relevant.
-#
-# 3. Many options of convert(1) are potentially relevant, (especially 
+# 2. Many options of convert(1) are potentially relevant, (especially
 # -density, -interlace, -transparency, -border, and -comment).
 #
-# Thus, we pass -U to groff(1), and everything else to convert(1).
+# Thus, we pass everything except -format to convert(1).
 #
-groff_opts=""
 convert_opts=""
+convert_trim_arg="-trim"
 format="png"
 
 while [ "$1" ]
 do
     case $1 in
-    -unsafe)
-       groff_opts="-U";;
     -format)
        format=$2
        shift;;
@@ -58,22 +53,45 @@ done
 
 # create temporary directory
 tmp=
-for d in "$GROFF_TMPDIR" "$TMPDIR" "$TMP" "$TEMP" /tmp; do
-    test -z "$d" && continue
+for d in "$GROFF_TMPDIR" "$TMPDIR" "$TMP" "$TEMP" /tmp
+do
+    test -n "$d" && break
+done
+
+if ! test -d "$d"
+then
+    echo "$0: error: temporary directory \"$d\" does not exist or is" \
+        "not a directory" >&2
+    exit 1
+fi
+
+if ! tmp=`(umask 077 && mktemp -d -q "$d/eqn2graph-XXXXXX") 2> /dev/null`
+then
+    # mktemp failed--not installed or is a version that doesn't support those
+    # flags?  Fall back to older method which uses more predictable naming.
+    #
+    # $RANDOM is a Bashism.  The fallback of $PPID is not good pseudorandomness,
+    # but is supported by the stripped-down dash shell, for instance.
+    tmp="$d/eqn2graph$$-${RANDOM:-$PPID}"
+    (umask 077 && mkdir "$tmp") 2> /dev/null
+fi
 
-    tmp=`(umask 077 && mktemp -d -q "$d/eqn2graph-XXXXXX") 2> /dev/null` \
-    && test -n "$tmp" && test -d "$tmp" \
-    && break
+if ! test -d "$tmp"
+then
+    echo "$0: error: cannot create temporary directory \"$tmp\"" >&2
+    exit 1
+fi
 
-    tmp=$d/eqn2graph$$-$RANDOM
-    (umask 077 && mkdir $tmp) 2> /dev/null && break
-done;
-if test -z "$tmp"; then
-    echo "$0: cannot create temporary directory" >&2
-    { (exit 1); exit 1; }
+# See if the installed version of convert(1) is new enough to support the -trim
+# option.  Versions that didn't were described as "old" as early as 2008.
+is_convert_recent=`convert -help | grep -e -trim`
+if test -z "$is_convert_recent"
+then
+    echo "$0: warning: falling back to old '-crop 0x0' trim method" >&2
+    convert_trim_arg="-crop 0x0"
 fi
 
-trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' EXIT INT TERM
+trap 'exit_status=$?; rm -rf "$tmp" && exit $exit_status' EXIT INT TERM
 
 # Here goes:
 # 1. Add .EQ/.EN.
@@ -82,8 +100,9 @@ trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' EXIT INT TERM
 # 4. Use convert(1) to crop the Postscript and turn it into a bitmap.
 read equation
 (echo ".EQ"; echo 'delim $$'; echo ".EN"; echo '$'"$equation"'$') | \
-       groff -e $groff_opts -Tps -P-pletter > $tmp/eqn2graph.ps \
-       && convert -trim $convert_opts $tmp/eqn2graph.ps $tmp/eqn2graph.$format \
-       && cat $tmp/eqn2graph.$format
+       groff -e -Tps -P-pletter > "$tmp"/eqn2graph.ps \
+       && convert $convert_trim_arg $convert_opts "$tmp"/eqn2graph.ps \
+          "$tmp"/eqn2graph.$format \
+       && cat "$tmp"/eqn2graph.$format
 
 # End
index 8d9e245..5237cd4 100644 (file)
@@ -1,3 +1,63 @@
+2018-02-28  Werner LEMBERG  <wl@gnu.org>
+
+       * gdiffmk.am (gdiffmk): Use $(AM_V_GEN) to silence file generation.
+
+2015-08-22  Bernd Warken  <groff-bernd.warken-72@web.de>
+
+       * gdiffmk.1.man: Rename `gdiffmk.man'.
+
+       * gdiffmk.am: Include renaming.
+
+2015-08-05  Bernd Warken  <groff-bernd.warken-72@web.de>
+
+       * gdiffmk.am: Add `Last update'.  Setup Emacs mode.
+
+2015-04-13  Mike Bianchi <MBianchi@Foveal.com>
+       More fixes to Savannah bug #44768.
+
+       * gdiffmk.sh:
+               replace
+                       for OPTION   with  while [ $# -gt 0 ]
+
+                       test -e ...  with  test -f
+
+                       use  ${DIFFCMD}  for the last  diff
+               add
+                       -s SEDCMD  option
+                       OPTION="$1"
+
+               many other cosmetic changes documented in the bug Discussion.
+               especially:
+                       capitalize variables  e.g.  CMD=`basename $0`
+
+       fix  make check  tests within gdiffmk
+       * tests/gdiffmk_tests.sh
+               add  set -e
+                       fails if ${abs_top_builddir} not set or incorrect
+
+       * tests/runtests.sh
+               add test 6a
+                       # Different values for addmark, changemark, deletemark
+                       # Alternate format of -a -c and -d flag arguments
+
+               add test 9a
+                       # Test -D  and  -M  options
+                       # Alternate format of -M argument.
+
+               add printout of failure count
+               add exit with failure exit_code if any test fails
+
+2015-04-10  Werner LEMBERG  <wl@gnu.org>
+
+       Fix Savannah bug #44768.
+
+       * gdiffmk.sh: Remove bash's $(...) with classic `...`.
+       Patch by Peter Bray.
+
+2015-04-03  Werner LEMBERG  <wl@gnu.org
+
+       * gdiffmk.man: Make it work in compatibility mode.
+
 2014-09-03  Bernd Warken  <groff-bernd.warken-72@web.de>
 
        * all `gdiffmk' source files: Add and improve the copying
 
        First import of gdiffmk files.
 
-Copyright 2004-2009, 2014
+Copyright 2004-2009, 2014-2015
   Free Software Foundation, Inc.
 
 Copying and distribution of this file, with or without modification,
@@ -108,5 +168,6 @@ notice and this notice are preserved.
 
 Local Variables:
 version-control: never
+mode: change-log
 coding: latin-1
 End:
diff --git a/contrib/gdiffmk/Makefile.sub b/contrib/gdiffmk/Makefile.sub
deleted file mode 100644 (file)
index 580a9ba..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-# Makefile.sub for `gdiffmk' (integration into the groff source tree)
-
-# File position: <groff-source>/contrib/gdiffmk/Makefile.sub
-
-# Copyright (C) 2004-2014 Free Software Foundation, Inc.
-# Written by Mike Bianchi <MBianchi@Foveal.com <mailto:MBianchi@Foveal.com>>
-
-# This file is part of the gdiffmk utility, which is part of groff.
-
-# groff 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.
-
-# groff 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 <http://www.gnu.org/licenses/>.
-
-########################################################################
-
-MAN1=gdiffmk.n
-MOSTLYCLEANADD=gdiffmk tests/runtests
-RM=rm -f
-
-all: gdiffmk
-
-gdiffmk: gdiffmk.sh
-       sed -e "s|@BINDIR@|$(bindir)|g" \
-           -e "s|@VERSION@|$(version)$(revision)|g" \
-           -e $(SH_SCRIPT_SED_CMD)  $(srcdir)/gdiffmk.sh >$@
-       chmod +x $@
-
-install_data: gdiffmk
-       -test -d $(DESTDIR)$(bindir) || $(mkinstalldirs) $(DESTDIR)$(bindir)
-       $(RM) $(DESTDIR)$(bindir)/gdiffmk
-       $(INSTALL_SCRIPT) gdiffmk $(DESTDIR)$(bindir)/gdiffmk
-
-uninstall_sub:
-       $(RM) $(DESTDIR)$(bindir)/gdiffmk
-
-########################################################################
-# Emacs settings
-########################################################################
-#
-# Local Variables:
-# mode: makefile
-# End:
index 7a6e841..d0b8e21 100644 (file)
@@ -1,14 +1,14 @@
 gdiffmk is approximately a recreation of the original Bell Labs/AT&T diffmk
 command for troff/nroff documents, with enhancements.
 
-It should not be confused with `diffmk' commands that operate on XML.
+It should not be confused with 'diffmk' commands that operate on XML.
 
 The inspiration for this code was a Perl 2 version written in 1989 by Randal
 L. Schwartz.  See
   landfield.com/software/comp.sources.misc/archive-name/volume06/diffmk.p.gz
 
 The command also attempts to reproduce some of the functionality of the old
-`nrchbar' command.  See
+'nrchbar' command.  See
   open-systems.ufl.edu/mirrors/ftp.isc.org/usenet/comp.sources.unix/volume10/nrchbar.Z
 
 Thanks to Werner Lemberg for help in making the package more portable and
@@ -19,13 +19,13 @@ translates the output into something groff/troff/nroff can handle.
 
 Note the BUGS on the man page.
 
-The `tests' directory contains simple tests.  `runtests run' runs them and
-compares the output against baseline files.  Calling `runtests' without
+The 'tests' directory contains simple tests.  'runtests run' runs them and
+compares the output against baseline files.  Calling 'runtests' without
 argument gives the usage.
 
 ----------------------------------------------------------------------------
 
-Copyright (C) 2004-2014 Free Software Foundation, Inc.
+Copyright (C) 2004-2018 Free Software Foundation, Inc.
 Written by Mike Bianchi <MBianchi@Foveal.com <mailto:MBianchi@Foveal.com>>
 
 This file is part of the gdiffmk utility, which is part of groff.
diff --git a/contrib/gdiffmk/gdiffmk.1.man b/contrib/gdiffmk/gdiffmk.1.man
new file mode 100644 (file)
index 0000000..1e20d47
--- /dev/null
@@ -0,0 +1,260 @@
+.TH GDIFFMK @MAN1EXT@ "@MDATE@" "groff @VERSION@"
+.SH NAME
+gdiffmk \- mark differences between groff/nroff/troff files
+.
+.
+.\" ====================================================================
+.\" Legal Terms
+.\" ====================================================================
+.\"
+.\" Copyright (C) 2004-2018 Free Software Foundation, Inc.
+.\"
+.\" This file is part of gdiffmk, which is part of groff, the GNU roff
+.\" type-setting system.
+.\"
+.\" 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
+.\" <http://www.gnu.org/licenses/>.
+.
+.
+.\" ====================================================================
+.SH SYNOPSIS
+.\" ====================================================================
+.
+.SY gdiffmk
+.OP \-a addmark
+.OP \-c changemark
+.OP \-d deletemark
+.RB [ \-D
+.RB [ \-B ]
+.RB [ \-M
+.IR "mark1 mark2" ]]
+.OP \-x diffcmd
+.OP \-\-
+.I file1
+.I file2
+.RI [ output ]
+.YS
+.
+.SY gdiffmk
+.B \-\-help
+.YS
+.
+.SY gdiffmk
+.B \-\-version
+.YS
+.
+.\" ====================================================================
+.SH DESCRIPTION
+.\" ====================================================================
+.
+.B gdiffmk
+compares two
+.BR groff (1),
+.BR nroff (1),
+or
+.BR troff (1)
+documents,
+.I file1
+and
+.IR file2 ,
+and creates an output which is
+.I file2
+with added \[lq]margin character\[rq] (.mc) commands that indicate the
+differences.
+.
+.
+.LP
+If the
+.I output
+filename is present,
+the output is written there.
+.
+If it is
+.B \-
+or absent the output is written to the standard output.
+.
+.
+.LP
+If the
+.I file1
+or
+.I file2
+argument is
+.B \-
+the standard input is read for that input.
+.
+Clearly both cannot be
+.BR \- .
+.
+.
+.LP
+Note that the output is not necessarily compatible with all macro packages
+and all preprocessors.
+.
+See section \(lqBugs\(rq below.
+.
+.
+.\" ====================================================================
+.SH OPTIONS
+.\" ====================================================================
+.
+.TP
+.BI \-a addmark
+Use the
+.I addmark
+for source lines not in
+.I file1
+but present in
+.IR file2 .
+.
+Default:
+.BR + .
+.
+.TP
+.B \-B
+By default, the deleted texts marked by the
+.B \-D
+option end
+with an added troff break command,
+.BR .br ,
+to ensure that the deletions are marked properly.
+.
+This is the only way to guarantee that deletions and small
+changes get flagged.
+.
+This option directs the program not to insert these breaks; it makes
+no sense to use it without
+.BR \-D .
+.
+.TP
+.BI \-c changemark
+Use the
+.I changemark
+for changed source lines.
+.
+Default:
+.BR | .
+.
+.TP
+.BI \-d deletemark
+Use the
+.I deletemark
+for deleted source lines.
+.
+Default:
+.BR * .
+.
+.TP
+.B \-D
+Show the deleted portions from changed and deleted text.
+.
+Default delimiting marks:
+.BR "[[" " \&.\|.\|.\& " "]]" .
+.
+.TP
+.BI \-M "mark1 mark2"
+Change the delimiting marks for the
+.B \-D
+option.
+.
+It makes no sense to use this option without
+.BR \-D .
+.
+.TP
+.BI \-x diffcmd
+Use the
+.I diffcmd
+command to perform the comparison of
+.I file1
+and
+.IR file2 .
+.
+In particular,
+.I diffcmd
+should accept the GNU
+.B diff
+.BI \-D name
+option.
+.
+Default:
+.BR diff (1).
+.
+.TP
+.B \-\-
+All the following arguments are treated as file names,
+even if they begin with
+.BR \- .
+.
+.TP
+.B \-\-help
+Print a usage message on standard error output and exit.
+.
+.TP
+.B \-\-version
+Print version information on the standard output and exit.
+.
+.
+.\" ====================================================================
+.SH BUGS
+.\" ====================================================================
+.
+The output is not necessarily compatible with all macro packages
+and all preprocessors.
+.
+A workaround that is often successful against preprocessor problems is
+to run
+.B gdiffmk
+on the output of all the preprocessors instead of the input source.
+.
+.
+.LP
+.B gdiffmk
+relies on the
+.BI \-D name
+option of GNU
+.BR diff (1)
+to make a merged \[lq]#ifdef\[rq] output format.
+.
+It hasn't been tested whether other versions of
+.BR diff (1)
+do support this option.
+.
+See also the
+.BI \-x diffcmd
+option.
+.
+.
+.\" ====================================================================
+.SH AUTHORS
+.\" ====================================================================
+.B gdiffmk
+was written and is maintained by
+.MT MBianchi@\:Foveal.com
+Mike Bianchi
+.ME .
+.
+.
+.\" ====================================================================
+.SH "SEE ALSO"
+.\" ====================================================================
+.
+.BR groff (@MAN1EXT@),
+.BR nroff (@MAN1EXT@),
+.BR gtroff (@MAN1EXT@),
+.BR diff (@MAN1EXT@)
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" End:
+.\" vim: set filetype=groff:
diff --git a/contrib/gdiffmk/gdiffmk.am b/contrib/gdiffmk/gdiffmk.am
new file mode 100644 (file)
index 0000000..325948e
--- /dev/null
@@ -0,0 +1,75 @@
+# Automake rules for 'gdiffmk' (integration into the groff source tree)
+#
+# File position: <groff-source>/contrib/gdiffmk/gdiffmk.am
+#
+# Copyright (C) 2004-2018 Free Software Foundation, Inc.
+# Written by Mike Bianchi <MBianchi@Foveal.com <mailto:MBianchi@Foveal.com>>
+# Automake migration by Bertrand Garrigues
+#
+# Last update: 20 Aug 2015
+#
+# This file is part of the gdiffmk utility, which is part of groff.
+#
+# groff 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.
+
+# groff 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 <http://www.gnu.org/licenses/>.
+
+########################################################################
+gdiffmk_srcdir = $(top_srcdir)/contrib/gdiffmk
+bin_SCRIPTS += gdiffmk
+TESTS += contrib/gdiffmk/tests/gdiffmk_tests.sh
+man1_MANS += contrib/gdiffmk/gdiffmk.1
+EXTRA_DIST += \
+  contrib/gdiffmk/gdiffmk.1.man \
+  contrib/gdiffmk/ChangeLog \
+  contrib/gdiffmk/README \
+  contrib/gdiffmk/gdiffmk.sh \
+  contrib/gdiffmk/tests/gdiffmk_tests.sh \
+  contrib/gdiffmk/tests/runtests.sh \
+  contrib/gdiffmk/tests/baseline \
+  contrib/gdiffmk/tests/baseline.6 \
+  contrib/gdiffmk/tests/baseline.6a \
+  contrib/gdiffmk/tests/baseline.7 \
+  contrib/gdiffmk/tests/baseline.8 \
+  contrib/gdiffmk/tests/baseline.9 \
+  contrib/gdiffmk/tests/baseline.9a \
+  contrib/gdiffmk/tests/baseline.10 \
+  contrib/gdiffmk/tests/file1 \
+  contrib/gdiffmk/tests/file2
+
+gdiffmk: $(gdiffmk_srcdir)/gdiffmk.sh
+       $(AM_V_GEN)sed -e "s|[@]BINDIR[@]|$(bindir)|g" \
+           -e "s|[@]VERSION[@]|$(VERSION)|g" \
+           -e "s|[@]HAVE_TEST_EF_OPTION[@]|$(HAVE_TEST_EF_OPTION)|g" \
+           -e "s|[@]BASH_PROG[@]|$(BASH_PROG)|g" \
+           -e "s|[@]DIFF_PROG[@]|$(DIFF_PROG)|g" \
+           -e $(SH_SCRIPT_SED_CMD)  $(gdiffmk_srcdir)/gdiffmk.sh \
+           >$@ \
+       && chmod +x $@
+
+clean-local: clean_gdiffmk_check
+clean_gdiffmk_check:
+       if test -d $(top_builddir)/contrib/gdiffmk/tests; then \
+         cd $(top_builddir)/contrib/gdiffmk/tests && \
+         $(abs_top_srcdir)/contrib/gdiffmk/tests/runtests.sh clean; \
+       fi
+
+
+########################################################################
+# Editor settings
+########################################################################
+#
+# Local Variables:
+# mode: makefile-automake
+# fill-column: 72
+# End:
+# vim: set filetype=automake textwidth=72:
diff --git a/contrib/gdiffmk/gdiffmk.man b/contrib/gdiffmk/gdiffmk.man
deleted file mode 100644 (file)
index 87c2175..0000000
+++ /dev/null
@@ -1,288 +0,0 @@
-.\"-*- nroff -*-
-.TH GDIFFMK @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
-.SH NAME
-.
-.\" gdiffmk \- mark differences between groff/nroff/troff files
-.
-.
-.\" --------------------------------------------------------------------
-.\" Legal Terms
-.\" --------------------------------------------------------------------
-.
-.de co
-Copyright \[co] 2004-2014 Free Software Foundation, Inc.
-
-This file is part of the gdiffmk utility, which is part of groff, a
-free software project.
-
-You can redistribute and/or modify gdiffmk 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.
-
-gdiffmk 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 <http://www.gnu.org/licenses/>.
-..
-.
-.de au
-This document was written and is maintained by
-.MT MBianchi@Foveal.com
-Mike Bianchi
-.MT .
-..
-.
-.\" --------------------------------------------------------------------
-.SH SYNOPSIS
-.\" --------------------------------------------------------------------
-.
-.nr a \n(.j
-.ad l
-.nr i \n(.i
-.in +\w'\fBgdiffmk 'u
-.ti \niu
-.B gdiffmk
-.de OP
-.  ie \\n(.$-1 .RI "[\ \fB\\$1\fP" "\\$2" "\ ]"
-.  el .RB "[\ " "\\$1" "\ ]"
-..
-.OP \-a \%addmark
-.OP \-c \%changemark
-.OP \-d \%deletemark
-[\ \c
-.B \-D
-.OP \-B
-.OP \-M "mark1 mark2"
-]
-.OP \-x \%diffcmd
-.OP \-\-
-.OP \-\-help
-.OP \%\-\-version
-.I \%file1
-.I \%file2
-[\ \c
-.IR \%output \ \c
-]
-.br
-.ad \na
-.
-.
-.\" --------------------------------------------------------------------
-.SH DESCRIPTION
-.\" --------------------------------------------------------------------
-.
-.B gdiffmk
-compares two
-.BR groff (1),
-.BR nroff (1),
-or
-.BR troff (1)
-documents,
-.I file1
-and
-.IR file2 ,
-and creates an output which is
-.I file2
-with added `margin character' (.mc) commands that indicate the differences.
-.
-.
-.LP
-If the
-.I output
-filename is present,
-the output is written there.
-.
-If it is
-.B \-
-or absent the output is written to the standard output.
-.
-.
-.LP
-If the
-.I file1
-or
-.I file2
-argument is
-.B \-
-the standard input is read for that input.
-.
-Clearly both cannot be
-.BR \- .
-.
-.
-.LP
-Note that the output is not necessarily compatible with all macro packages
-and all preprocessors.
-.
-See the
-.B BUGS
-section below.
-.
-.
-.\" --------------------------------------------------------------------
-.SH OPTIONS
-.\" --------------------------------------------------------------------
-.
-.TP
-.BI \-a addmark
-Use the
-.I addmark
-for source lines not in
-.I file1
-but present in
-.IR file2 .
-.
-Default:
-.BR + .
-.
-.TP
-.B \-B
-By default, the deleted texts marked by the
-.B \-D
-option end
-with an added troff break command,
-.BR .br ,
-to ensure that the deletions are marked properly.
-.
-This is the only way to guarantee that deletions and small
-changes get flagged.
-.
-This option directs the program not to insert these breaks; it makes
-no sense to use it without
-.BR \-D .
-.
-.TP
-.BI \-c changemark
-Use the
-.I changemark
-for changed source lines.
-.
-Default:
-.BR | .
-.
-.TP
-.BI \-d deletemark
-Use the
-.I deletemark
-for deleted source lines.
-.
-Default:
-.BR * .
-.
-.TP
-.B \-D
-Show the deleted portions from changed and deleted text.
-.
-Default delimiting marks:
-.BR "[[" " \&.\|.\|.\& " "]]" .
-.
-.TP
-.BI \-M "mark1 mark2"
-Change the delimiting marks for the
-.B \-D
-option.
-.
-It makes no sense to use this option without
-.BR \-D .
-.
-.TP
-.BI \-x diffcmd
-Use the
-.I diffcmd
-command to perform the comparison of
-.I file1
-and
-.IR file2 .
-.
-In particular,
-.I diffcmd
-should accept the GNU
-.B diff
-.BI \-D name
-option.
-.
-Default:
-.BR diff (1).
-.
-.TP
-.B \-\-
-All the following arguments are treated as file names,
-even if they begin with
-.BR \- .
-.
-.TP
-.B \-\-help
-Print a usage message on standard error output and exit.
-.
-.TP
-.B \-\-version
-Print version information on the standard output and exit.
-.
-.
-.\" --------------------------------------------------------------------
-.SH BUGS
-.\" --------------------------------------------------------------------
-.
-The output is not necessarily compatible with all macro packages
-and all preprocessors.
-.
-A workaround that is often successful against preprocessor problems is
-to run
-.B gdiffmk
-on the output of all the preprocessors instead of the input source.
-.
-.
-.LP
-.B gdiffmk
-relies on the
-.BI \-D name
-option of GNU
-.BR diff (1)
-to make a merged `#ifdef' output format.
-.
-It hasn't been tested whether other versions of
-.BR diff (1)
-do support this option.
-.
-See also the
-.BI \-x diffcmd
-option.
-.
-.
-.LP
-Report bugs to
-.MT bug-groff@gnu.org
-.ME .
-.
-Include a complete, self-contained example that will allow the bug to
-be reproduced, and say which version of
-.B gdiffmk
-you are using.
-.
-.
-.\" --------------------------------------------------------------------
-.SH COPYRIGHT
-.\" --------------------------------------------------------------------
-.co
-.\" --------------------------------------------------------------------
-.SH AUTHORS
-.\" --------------------------------------------------------------------
-.au
-.
-.
-.\" --------------------------------------------------------------------
-.SH "SEE ALSO"
-.\" --------------------------------------------------------------------
-.
-.BR groff (@MAN1EXT@),
-.BR nroff (@MAN1EXT@),
-.BR gtroff (@MAN1EXT@),
-.BR diff (@MAN1EXT@)
-.
-.\" Local Variables:
-.\" mode: nroff
-.\" End:
index e66f3eb..5ce931e 100644 (file)
@@ -1,6 +1,7 @@
-#! /bin/sh
-# Copyright (C) 2004-2014 Free Software Foundation, Inc.
+#!@BASH_PROG@
+# Copyright (C) 2004-2018 Free Software Foundation, Inc.
 # Written by Mike Bianchi <MBianchi@Foveal.com <mailto:MBianchi@Foveal.com>>
+# Thanks to Peter Bray for debugging.
 
 # This file is part of the gdiffmk utility, which is part of groff.
 
 # License for more details.
 
 # You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 # This file is part of GNU gdiffmk.
 
 
-cmd=$( basename $0 )
+CMD=`basename $0`
 
 Usage () {
-       if test "$#" -gt 0
+       if test $# -gt 0
        then
-               echo >&2 "${cmd}:  $@"
+               echo >&2 "${CMD}:  $@"
        fi
        echo >&2 "\
 
-Usage:  ${cmd} [ OPTIONS ] FILE1 FILE2 [ OUTPUT ]
+Usage:  ${CMD} [ OPTIONS ] FILE1 FILE2 [ OUTPUT ]
 Place difference marks into the new version of a groff/nroff/troff document.
-FILE1 and FILE2 are compared, using \`diff', and FILE2 is output with
-groff \`.mc' requests added to indicate how it is different from FILE1.
+FILE1 and FILE2 are compared, using 'diff', and FILE2 is output with
+groff '.mc' requests added to indicate how it is different from FILE1.
 
-  FILE1   Previous version of the groff file.  \`-' means standard input.
-  FILE2   Current version of the groff file.   \`-' means standard input.
+  FILE1   Previous version of the groff file.  '-' means standard input.
+  FILE2   Current version of the groff file.   '-' means standard input.
           Either FILE1 or FILE2 can be standard input, but not both.
-  OUTPUT  Copy of FILE2 with \`.mc' commands added.
-          \`-' means standard output (the default).
+  OUTPUT  Copy of FILE2 with '.mc' commands added.
+          '-' means standard output (the default).
+          If the shell's 'test' does not support option -ef, OUTPUT
+          can only be the standard output.
 
 OPTIONS:
-  -a ADDMARK     Mark for added groff source lines.    Default: \`+'.
-  -c CHANGEMARK  Mark for changed groff source lines.  Default: \`|'.
-  -d DELETEMARK  Mark for deleted groff source lines.  Default: \`*'.
+  -a ADDMARK     Mark for added groff source lines.    Default: '+'.
+  -c CHANGEMARK  Mark for changed groff source lines.  Default: '|'.
+  -d DELETEMARK  Mark for deleted groff source lines.  Default: '*'.
 
   -D             Show the deleted portions from changed and deleted text.
-                  Default delimiting marks:  \`[[' .... \`]]'.
-  -B             By default, the deleted texts marked by the \`-D' option end
-                  with an added troff \`.br' command.  This option prevents
-                  the added \`.br'.
-  -M MARK1 MARK2 Change the delimiting marks for the \`-D' option.
+                  Default delimiting marks:  '[[' .... ']]'.
+  -B             By default, the deleted texts marked by the '-D' option end
+                  with an added troff '.br' command.  This option prevents
+                  the added '.br'.
+  -M MARK1 MARK2 Change the delimiting marks for the '-D' option.
 
   -x DIFFCMD     Use a different diff(1) command;
-                  one that accepts the \`-Dname' option, such as GNU diff.
+                  one that accepts the '-Dname' option, such as GNU diff.
+  -s SEDCMD      Use a different sed(1) command;
+                  such as GNU sed.
   --version      Print version information on the standard output and exit.
   --help         Print this message on the standard error.
 "
@@ -65,7 +70,7 @@ Exit () {
        shift
        for arg
        do
-               echo >&2 "${cmd}:  $1"
+               echo >&2 "${CMD}:  $1"
                shift
        done
        exit ${exitcode}
@@ -82,13 +87,13 @@ FileRead () {
                ;;
        esac
 
-       if test ! -e "$2"
+       if test ! -f "$2"
        then
-               Exit $1 "File \`$2' not found."
+               Exit $1 "File '$2' not found."
        fi
        if test ! -r "$2"
        then
-               Exit $1 "File \`$2' not readable."
+               Exit $1 "File '$2' not readable."
        fi
 }
 
@@ -104,14 +109,15 @@ FileCreate () {
                ;;
        esac
 
-       if ! touch "$2" 2>/dev/null
+       touch "$2" 2>/dev/null
+       if test $? -ne 0
        then
-               if test ! -e "$2"
+               if test ! -f "$2"
                then
-                       Exit $1 "File \`$2' not created; " \
-                         "Cannot write directory \`$( dirname "$2" )'."
+                       Exit $1 "File '$2' not created; " \
+                         "Cannot write directory '`dirname "$2"`'."
                fi
-               Exit $1 "File \`$2' not writeable."
+               Exit $1 "File '$2' not writeable."
        fi
 }
 
@@ -122,11 +128,19 @@ WouldClobber () {
                ;;
        esac
 
-       if test "$1" -ef "$3"
+       # BASH_PROG is set to /bin/sh if bash was not found
+       if test "$HAVE_TEST_EF_OPTION" = "no" -a "$BASH_PROG" = "/bin/sh"
        then
                Exit 3 \
-                 "The $2 and OUTPUT arguments both point to the same file," \
-                 "\`$1', and it would be overwritten."
+               "Your shell does support test -ef, [OUTPUT] can only be the" \
+               "standard  output."
+       else
+               if test "$1" -ef "$3"
+               then
+                       Exit 3 \
+                       "The $2 and OUTPUT arguments both point to the same file," \
+                       "'$1', and it would be overwritten."
+               fi
        fi
 }
 
@@ -146,56 +160,64 @@ RequiresArgument () {
                ;;
        esac
 
-       if test "$#" -lt 2
+       if test $# -lt 2
        then
-               Exit 255 "Option \`$1' requires a value."
+               Exit 255 "Option '$1' requires a value."
        fi
 
        echo "$2"
        return 0
 }
 
-badoption=
-DIFFCMD=diff
+HAVE_TEST_EF_OPTION=@HAVE_TEST_EF_OPTION@
+BASH_PROG=@BASH_PROG@
+BADOPTION=
+DIFFCMD=@DIFF_PROG@
+SEDCMD=sed
 D_option=
 br=.br
-for OPTION
+while [ $# -gt 0 ]
 do
+       OPTION="$1"
        case "${OPTION}" in
        -a*)
-               ADDMARK=$( RequiresArgument "${OPTION}" $2 )            &&
+               ADDMARK=`RequiresArgument "${OPTION}" "$2"`             &&
                        shift
                ;;
        -c*)
-               CHANGEMARK=$( RequiresArgument "${OPTION}" $2 )         &&
+               CHANGEMARK=`RequiresArgument "${OPTION}" "$2"`          &&
                        shift
                ;;
        -d*)
-               DELETEMARK=$( RequiresArgument "${OPTION}" $2 )         &&
+               DELETEMARK=`RequiresArgument "${OPTION}" "$2"`          &&
                        shift
                ;;
        -D )
                D_option=D_option
                ;;
        -M* )
-               MARK1=$( RequiresArgument "${OPTION}" $2 )              &&
+               MARK1=`RequiresArgument "${OPTION}" "$2"`               &&
                        shift
                if [ $# -lt 2 ]
                then
-                       Usage "Option \`-M' is missing the MARK2 value."
+                       Usage "Option '-M' is missing the MARK2 value."
                fi
-               MARK2=$2
+               MARK2="$2"
                shift
                ;;
        -B )
                br=.
                ;;
+       -s* )
+               SEDCMD=`RequiresArgument "${OPTION}" "$2"`              &&
+                       shift
+               ;;
        -x* )
-               DIFFCMD=$( RequiresArgument "${OPTION}" $2 )            &&
+               DIFFCMD=`RequiresArgument "${OPTION}" "$2"`             &&
                        shift
                ;;
        --version)
-               echo "GNU ${cmd} (groff) version @VERSION@"
+               echo "GNU ${CMD} (groff) version @VERSION@"
                exit 0
                ;;
        --help)
@@ -210,7 +232,7 @@ do
                break
                ;;
        -*)
-               badoption="${cmd}:  invalid option \`$1'"
+               BADOPTION="${CMD}:  invalid option '$1'"
                ;;
        *)
                break
@@ -220,32 +242,33 @@ do
 done
 
 ${DIFFCMD} -Dx /dev/null /dev/null >/dev/null 2>&1  ||
-       Usage "The \`${DIFFCMD}' program does not accept"       \
-               "the required \`-Dname' option.
-Use GNU diff instead.  See the \`-x DIFFCMD' option."
+       Usage "The '${DIFFCMD}' program does not accept"        \
+               "the required '-Dname' option.
+Use GNU diff instead.  See the '-x DIFFCMD' option.  You can also
+install GNU diff as gdiff on your system"
 
-if test -n "${badoption}"
+if test -n "${BADOPTION}"
 then
-       Usage "${badoption}"
+       Usage "${BADOPTION}"
 fi
 
-if test "$#" -lt 2  -o  "$#" -gt 3
+if test $# -lt 2  -o  $# -gt 3
 then
        Usage "Incorrect number of arguments."
 fi
 
-if test "1$1" = 1-  -a  "2$2" = 2-
+if test "1$1" = "1-"  -a  "2$2" = "2-"
 then
-       Usage "Both FILE1 and FILE2 are \`-'."
+       Usage "Both FILE1 and FILE2 are '-'."
 fi
 
-FILE1=$1
-FILE2=$2
+FILE1="$1"
+FILE2="$2"
 
 FileRead 1 "${FILE1}"
 FileRead 2 "${FILE2}"
 
-if test "$#" = 3
+if test $# = 3
 then
        case "$3" in
        -)
@@ -262,24 +285,24 @@ then
        esac
 fi
 
-#      To make a very unlikely label even more unlikely ...
-label=__diffmk_$$__
+#      To make a very unlikely LABEL even more unlikely ...
+LABEL=__diffmk_$$__
 
-sed_script='
-               /^#ifdef '"${label}"'/,/^#endif \/\* '"${label}"'/ {
-                 /^#ifdef '"${label}"'/          s/.*/.mc '"${ADDMARK}"'/
-                 /^#endif \/\* '"${label}"'/     s/.*/.mc/
+SED_SCRIPT='
+               /^#ifdef '"${LABEL}"'/,/^#endif \/\* '"${LABEL}"'/ {
+                 /^#ifdef '"${LABEL}"'/          s/.*/.mc '"${ADDMARK}"'/
+                 /^#endif \/\* '"${LABEL}"'/     s/.*/.mc/
                  p
                  d
                }
-               /^#ifndef '"${label}"'/,/^#endif \/\* [!not ]*'"${label}"'/ {
-                 /^#else \/\* '"${label}"'/,/^#endif \/\* '"${label}"'/ {
-                   /^#else \/\* '"${label}"'/    s/.*/.mc '"${CHANGEMARK}"'/
-                   /^#endif \/\* '"${label}"'/   s/.*/.mc/
+               /^#ifndef '"${LABEL}"'/,/^#endif \/\* [!not ]*'"${LABEL}"'/ {
+                 /^#else \/\* '"${LABEL}"'/,/^#endif \/\* '"${LABEL}"'/ {
+                   /^#else \/\* '"${LABEL}"'/    s/.*/.mc '"${CHANGEMARK}"'/
+                   /^#endif \/\* '"${LABEL}"'/   s/.*/.mc/
                    p
                    d
                  }
-                 /^#endif \/\* \(not\|!\) '"${label}"'/ {
+                 /^#endif \/\* [!not ]*'"${LABEL}"'/ {
                   s/.*/.mc '"${DELETEMARK}"'/p
                   a\
 .mc
@@ -291,27 +314,27 @@ sed_script='
 
 if [ ${D_option} ]
 then
-       sed_script='
-               /^#ifdef '"${label}"'/,/^#endif \/\* '"${label}"'/ {
-                 /^#ifdef '"${label}"'/          s/.*/.mc '"${ADDMARK}"'/
-                 /^#endif \/\* '"${label}"'/     s/.*/.mc/
+       SED_SCRIPT='
+               /^#ifdef '"${LABEL}"'/,/^#endif \/\* '"${LABEL}"'/ {
+                 /^#ifdef '"${LABEL}"'/          s/.*/.mc '"${ADDMARK}"'/
+                 /^#endif \/\* '"${LABEL}"'/     s/.*/.mc/
                  p
                  d
                }
-               /^#ifndef '"${label}"'/,/^#endif \/\* [!not ]*'"${label}"'/ {
-                 /^#ifndef '"${label}"'/ {
+               /^#ifndef '"${LABEL}"'/,/^#endif \/\* [!not ]*'"${LABEL}"'/ {
+                 /^#ifndef '"${LABEL}"'/ {
                   i\
 '"${MARK1}"'
                   d
                  }
-                 /^#else \/\* '"${label}"'/ ! {
-                  /^#endif \/\* [!not ]*'"${label}"'/ ! {
+                 /^#else \/\* '"${LABEL}"'/ !{
+                  /^#endif \/\* [!not ]*'"${LABEL}"'/ !{
                    p
                    d
                   }
                  }
-                 /^#else \/\* '"${label}"'/,/^#endif \/\* '"${label}"'/ {
-                   /^#else \/\* '"${label}"'/ {
+                 /^#else \/\* '"${LABEL}"'/,/^#endif \/\* '"${LABEL}"'/ {
+                   /^#else \/\* '"${LABEL}"'/ {
                     i\
 '"${MARK2}"'\
 '"${br}"'
@@ -320,11 +343,11 @@ then
 .mc '"${CHANGEMARK}"'
                     d
                    }
-                   /^#endif \/\* '"${label}"'/   s/.*/.mc/
+                   /^#endif \/\* '"${LABEL}"'/   s/.*/.mc/
                    p
                    d
                  }
-                 /^#endif \/\* \(not\|!\) '"${label}"'/ {
+                 /^#endif \/\* [!not ]*'"${LABEL}"'/ {
                   i\
 '"${MARK2}"'\
 '"${br}"'
@@ -338,15 +361,7 @@ then
        '
 fi
 
-diff -D"${label}" -- ${FILE1} ${FILE2}  |
-       sed -n "${sed_script}"
+${DIFFCMD} -D"${LABEL}" -- "${FILE1}" "${FILE2}"  |
+       ${SEDCMD} -n "${SED_SCRIPT}"
 
 # EOF
-
-
-########################################################################
-# Emacs settings
-#
-# Local Variables:
-# mode: text
-# End:
index 4414ef9..6b32992 100644 (file)
@@ -1,24 +1,3 @@
-.ig \"-*- nroff -*-
-Copyright (C) 2004-2014 Free Software Foundation, Inc.
-
-This file is part of the gdiffmk utility, which is part of groff.
-Written by Mike Bianchi <MBianchi@Foveal.com <mailto:MBianchi@Foveal.com>>
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the
-entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
-Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be included in
-translations approved by the Free Software Foundation instead of in
-the original English.
-..
 .ll 25
 .pl 20
 .nf
@@ -36,8 +15,3 @@ file1 and file2 #3
 .mc
 file1 and file2 #4
 file1 and file2 #5
-.
-.\" Emacs setup
-.\" Local Variables:
-.\" mode: nroff
-.\" End:
index aacead6..b523f45 100644 (file)
@@ -1,24 +1,3 @@
-.ig \"-*- nroff -*-
-Copyright (C) 2004-2014 Free Software Foundation, Inc.
-
-This file is part of the gdiffmk utility, which is part of groff.
-Written by Mike Bianchi <MBianchi@Foveal.com <mailto:MBianchi@Foveal.com>>
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the
-entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
-Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be included in
-translations approved by the Free Software Foundation instead of in
-the original English.
-..
 .ll 25
 .pl 20
 .nf
@@ -45,8 +24,3 @@ file1 only
 .mc
 file1 and file2 #4
 file1 and file2 #5
-.
-.\" Emacs setup
-.\" Local Variables:
-.\" mode: nroff
-.\" End:
index abca50e..3156961 100644 (file)
@@ -1,24 +1,3 @@
-.ig \"-*- nroff -*-
-Copyright (C) 2004-2014 Free Software Foundation, Inc.
-
-This file is part of the gdiffmk utility, which is part of groff.
-Written by Mike Bianchi <MBianchi@Foveal.com <mailto:MBianchi@Foveal.com>>
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the
-entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
-Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be included in
-translations approved by the Free Software Foundation instead of in
-the original English.
-..
 .ll 25
 .pl 20
 .nf
@@ -36,8 +15,3 @@ file1 and file2 #3
 .mc
 file1 and file2 #4
 file1 and file2 #5
-.
-.\" Emacs setup
-.\" Local Variables:
-.\" mode: nroff
-.\" End:
diff --git a/contrib/gdiffmk/tests/baseline.6a b/contrib/gdiffmk/tests/baseline.6a
new file mode 100644 (file)
index 0000000..3156961
--- /dev/null
@@ -0,0 +1,17 @@
+.ll 25
+.pl 20
+.nf
+file1 and file2 #1
+.mc C
+file2 only
+file2 only
+.mc
+file1 and file2 #2
+.mc A
+file2 only
+.mc
+file1 and file2 #3
+.mc D
+.mc
+file1 and file2 #4
+file1 and file2 #5
index 9d2c8dc..df23363 100644 (file)
@@ -1,2 +1,2 @@
 gdiffmk:  The FILE2 and OUTPUT arguments both point to the same file,
-gdiffmk:  `tmp_file.7', and it would be overwritten.
+gdiffmk:  'tmp_file.7', and it would be overwritten.
index d6b7fea..9846dd5 100644 (file)
@@ -1,24 +1,3 @@
-.ig \"-*- nroff -*-
-Copyright (C) 2004-2014 Free Software Foundation, Inc.
-
-This file is part of the gdiffmk utility, which is part of groff.
-Written by Mike Bianchi <MBianchi@Foveal.com <mailto:MBianchi@Foveal.com>>
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the
-entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
-Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be included in
-translations approved by the Free Software Foundation instead of in
-the original English.
-..
 .ll 25
 .pl 20
 .nf
@@ -45,8 +24,3 @@ file1 only
 .mc
 file1 and file2 #4
 file1 and file2 #5
-.
-.\" Emacs setup
-.\" Local Variables:
-.\" mode: nroff
-.\" End:
index 3af8755..50fe57d 100644 (file)
@@ -1,24 +1,3 @@
-.ig \"-*- nroff -*-
-Copyright (C) 2004-2014 Free Software Foundation, Inc.
-
-This file is part of the gdiffmk utility, which is part of groff.
-Written by Mike Bianchi <MBianchi@Foveal.com <mailto:MBianchi@Foveal.com>>
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the
-entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
-Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be included in
-translations approved by the Free Software Foundation instead of in
-the original English.
-..
 .ll 25
 .pl 20
 .nf
@@ -45,8 +24,3 @@ file1 only
 .mc
 file1 and file2 #4
 file1 and file2 #5
-.
-.\" Emacs setup
-.\" Local Variables:
-.\" mode: nroff
-.\" End:
diff --git a/contrib/gdiffmk/tests/baseline.9a b/contrib/gdiffmk/tests/baseline.9a
new file mode 100644 (file)
index 0000000..50fe57d
--- /dev/null
@@ -0,0 +1,26 @@
+.ll 25
+.pl 20
+.nf
+file1 and file2 #1
+<<<<
+file1 only
+>>>>
+.br
+.mc |
+file2 only
+file2 only
+.mc
+file1 and file2 #2
+.mc +
+file2 only
+.mc
+file1 and file2 #3
+<<<<
+file1 only
+file1 only
+>>>>
+.br
+.mc *
+.mc
+file1 and file2 #4
+file1 and file2 #5
diff --git a/contrib/gdiffmk/tests/gdiffmk_tests.sh b/contrib/gdiffmk/tests/gdiffmk_tests.sh
new file mode 100755 (executable)
index 0000000..e74d594
--- /dev/null
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+# Execute runtests.sh in the builddir 
+
+set -e
+
+mkdir -p ${abs_top_builddir}/contrib/gdiffmk/tests
+cd ${abs_top_builddir}/contrib/gdiffmk/tests
+${abs_top_srcdir}/contrib/gdiffmk/tests/runtests.sh run
old mode 100644 (file)
new mode 100755 (executable)
similarity index 73%
rename from contrib/gdiffmk/tests/runtests.in
rename to contrib/gdiffmk/tests/runtests.sh
index 714ce48..0f7c3b6
@@ -2,7 +2,7 @@
 #
 #      A very simple function test for gdiffmk.sh.
 #
-# Copyright (C) 2004, 2005, 2009 Free Software Foundation, Inc.
+# Copyright (C) 2004-2018 Free Software Foundation, Inc.
 # Written by Mike Bianchi <MBianchi@Foveal.com <mailto:MBianchi@Foveal.com>>
 
 # This file is part of the gdiffmk utility, which is part of groff.
 # License for more details.
 
 # You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 # This file is part of GNU gdiffmk.
 
-srcdir=@srcdir@
+# abs_top_srcdir and abs_top_builddir are set by AM_TESTS_ENVIRONMENT
+# (defined in Makefile.am) when running make check
 
-command=../gdiffmk
+srcdir=${abs_top_srcdir}/contrib/gdiffmk/tests
+
+command=${abs_top_builddir}/gdiffmk
 
 #      Test the number of arguments and the first argument.
-case $#-$1 in
+case "$#-$1" in
 1-clean )
        rm -fv result* tmp_file*
        exit 0
@@ -35,7 +38,7 @@ case $#-$1 in
        ;;
 * )
        echo >&2 "$0 [ clean | run ]
-Run a few simple tests on \`${command}'."'
+Run a few simple tests on '${command}'."'
 
 clean  Remove the result? and tmp_file? files.
 run    Run the tests.
@@ -44,7 +47,9 @@ run   Run the tests.
        ;;
 esac
 
-function TestResult {
+exit_code=0    #  Success
+failure_count=0
+TestResult () {
        if cmp -s $1 $2
        then
                echo $2 PASSED
@@ -53,6 +58,8 @@ function TestResult {
                echo $2 TEST FAILED
                diff $1 $2
                echo ''
+               exit_code=1     #  Failure
+               failure_count=`expr ${failure_count} + 1`
        fi
 }
 
@@ -67,31 +74,44 @@ ${command}  ${srcdir}/file1  ${srcdir}/file2 ${ResultFile} 2>${tmpfile}
 cat ${tmpfile} >>${ResultFile}
 TestResult ${srcdir}/baseline ${ResultFile}
 
+
 #      OUTPUT to stdout by default
 ResultFile=result.2
 ${command}  ${srcdir}/file1  ${srcdir}/file2  >${ResultFile} 2>&1
 TestResult ${srcdir}/baseline ${ResultFile}
 
+
 #      OUTPUT to stdout via  -  argument
 ResultFile=result.3
 ${command}  ${srcdir}/file1  ${srcdir}/file2 - >${ResultFile} 2>&1
 TestResult ${srcdir}/baseline ${ResultFile}
 
+
 #      FILE1 from standard input via  -  argument
 ResultFile=result.4
 ${command}  - ${srcdir}/file2 <${srcdir}/file1  >${ResultFile} 2>&1
 TestResult ${srcdir}/baseline ${ResultFile}
 
+
 #      FILE2 from standard input via  -  argument
 ResultFile=result.5
 ${command}  ${srcdir}/file1 - <${srcdir}/file2  >${ResultFile} 2>&1
 TestResult ${srcdir}/baseline ${ResultFile}
 
+
 #      Different values for addmark, changemark, deletemark
 ResultFile=result.6
 ${command}  -aA -cC -dD  ${srcdir}/file1 ${srcdir}/file2  >${ResultFile} 2>&1
 TestResult ${srcdir}/baseline.6 ${ResultFile}
 
+
+#      Different values for addmark, changemark, deletemark
+#      Alternate format of -a -c and -d flag arguments
+ResultFile=result.6a
+${command}  -a A -c C -d D  ${srcdir}/file1 ${srcdir}/file2  >${ResultFile} 2>&1
+TestResult ${srcdir}/baseline.6a ${ResultFile}
+
+
 #      Test for accidental file overwrite.
 ResultFile=result.7
 cp ${srcdir}/file2 tmp_file.7
@@ -99,20 +119,36 @@ ${command}  -aA -dD -cC  ${srcdir}/file1 tmp_file.7  tmp_file.7    \
                                                        >${ResultFile} 2>&1
 TestResult ${srcdir}/baseline.7 ${ResultFile}
 
+
 #      Test -D option
 ResultFile=result.8
 ${command}  -D  ${srcdir}/file1 ${srcdir}/file2 >${ResultFile} 2>&1
 TestResult ${srcdir}/baseline.8 ${ResultFile}
 
+
 #      Test -D  and  -M  options
 ResultFile=result.9
 ${command}  -D  -M '<<<<' '>>>>'                               \
                        ${srcdir}/file1 ${srcdir}/file2 >${ResultFile} 2>&1
 TestResult ${srcdir}/baseline.9 ${ResultFile}
 
+
+#      Test -D  and  -M  options
+#      Alternate format of -M argument.
+ResultFile=result.9a
+${command}  -D  -M'<<<<' '>>>>'                                \
+                       ${srcdir}/file1 ${srcdir}/file2 >${ResultFile} 2>&1
+TestResult ${srcdir}/baseline.9a ${ResultFile}
+
+
 #      Test -D  and  -B  options
 ResultFile=result.10
 ${command}  -D  -B  ${srcdir}/file1 ${srcdir}/file2 >${ResultFile} 2>&1
 TestResult ${srcdir}/baseline.10 ${ResultFile}
 
+
+echo failure_count ${failure_count}
+
+exit ${exit_code}
+
 #      EOF
index 7cf6476..16e193f 100644 (file)
@@ -1,3 +1,50 @@
+2018-02-28  Werner LEMBERG  <wl@gnu.org>
+
+       * glilypond.am (glilypond): Use $(AM_V_GEN) to silence file generation.
+
+2017-10-22  G. Branden Robinson <g.branden.robinson@gmail.com>
+
+       * args.pl: Fix grammar in usage message.
+
+       When used attributively, e.g. as an adjectival phrase,
+       "command-line" should be hyphenated.
+
+2015-09-10  Bernd Warken  <groff-bernd.warken-72@web.de>
+
+       * glilypond.pl, args.pl, subs.pl: New default `eps_func' as `pdf'.
+
+2015-09-10  Bernd Warken  <groff-bernd.warken-72@web.de>
+
+       * glilypond.1.man: New default `pdf2eps'.  Several fixes.
+
+       * subs.pl: Replace `.PSPIC' by `$P_PIC'.  Set new default sub on
+       top.
+
+2015-08-22  Bernd Warken  <groff-bernd.warken-72@web.de>
+
+       * glilypond.1.man: Rename `glilypond.man'.
+
+       * glilypond.am: Include renaming.
+
+2015-08-05  Bernd Warken  <groff-bernd.warken-72@web.de>
+
+       * glilypond.am: Add `Last update'.  Setup Emacs mode.
+
+2015-04-03  Werner LEMBERG  <wl@gnu.org>
+
+       * glilypond.man: Make it work in compatibility mode.
+       (EL): Fix typo.
+
+2015-03-20  Ralph Corderoy  <ralph@inputplus.co.uk>
+
+       * glilypond.pl: Minor syntax fixes.
+
+2015-03-20  Werner LEMBERG  <wl@gnu.org>
+
+       * glilypond.pl <read files or stdin>: Fix typo.
+
+       Problem reported by Grégoire Babey <gibux@gmx.ch>.
+
 2014-09-03  Bernd Warken  <groff-bernd.warken-72@web.de>
 
        * glilypond.pl: New version 1.3.1
 
 ########################################################################
 
-Copyright 2013-201 Free Software Foundation, Inc.
+Copyright 2013-2018 Free Software Foundation, Inc.
 
 Copying and distribution of this file, with or without modification,
 are permitted in any medium without royalty provided the copyright
@@ -183,5 +230,5 @@ notice and this notice are preserved.
 
 Local Variables:
 version-control: never
-coding: utf-8
+mode: change-log
 End:
index cf8cd9e..10f45e7 100644 (file)
@@ -89,7 +89,7 @@
        * groff_lilypond.pl: Program written in Perl, version v0.1
        * groff_lilypond.man: Corresponding man-page
 
-Copyright 2013  Free Software Foundation, Inc.
+Copyright 2013-2018 Free Software Foundation, Inc.
 
 Copying and distribution of this file, with or without modification,
 are permitted in any medium without royalty provided the copyright
diff --git a/contrib/glilypond/Makefile.sub b/contrib/glilypond/Makefile.sub
deleted file mode 100644 (file)
index f843271..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-# Makefile.sub for `glilypond'
-
-# File position: <groff-source>/contrib/lilypond/Makefile.sub
-
-# Copyright (C) 2013-2014  Free Software Foundation, Inc.
-# Written by Werner Lemberg <wl@gnu.org> and
-# Bernd Warken <groff-bernd.warken-72@web.de>.
-
-# This file is part of `glilypond' which is part of `groff'.
-
-# `groff' 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.
-
-# `groff' 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 <http://www.gnu.org/licenses/>.
-
-########################################################################
-
-MAN1=glilypond.n
-
-MOSTLYCLEANADD=glilypond $(MAN1)
-
-all: glilypond
-
-# files going to lib directory `$(glilypond_dir)'
-
-GLILYPOND_LIB=\
-  $(srcdir)/subs.pl \
-  $(srcdir)/oop_fh.pl \
-  $(srcdir)/args.pl
-
-GLILYPOND_LIB_=`echo $(GLILYPOND_LIB) | sed 's|$(srcdir)/||g'`
-
-RM=rm -f
-
-# create perl executable `glilypond', being stored into `bindir'
-
-glilypond: $(srcdir)/glilypond.pl
-       $(RM) $@
-       sed -f "$(SH_DEPS_SED_SCRIPT)" \
-           -e "s|@g@|$(g)|g" \
-           -e "s|@BINDIR@|$(DESTDIR)$(bindir)|g" \
-           -e "s|@glilypond_dir@|$(DESTDIR)$(glilypond_dir)|g" \
-           -e "s|@VERSION@|$(version)$(revision)|g" \
-           $(srcdir)/glilypond.pl >$@
-       chmod +x $@
-
-install_data: glilypond $(GLILYPOND_LIB)
-       -test -d $(DESTDIR)$(bindir) \
-         || $(mkinstalldirs) $(DESTDIR)$(bindir)
-       $(RM) $(DESTDIR)$(bindir)/glilypond
-       $(INSTALL_SCRIPT) glilypond $(DESTDIR)$(bindir)/glilypond
-       -test -d $(DESTDIR)$(glilypond_dir) \
-         || $(mkinstalldirs) $(DESTDIR)$(glilypond_dir)
-       for f in $(GLILYPOND_LIB_); do \
-         $(RM) $(DESTDIR)$(glilypond_dir)/$$f; \
-         $(INSTALL_SCRIPT) $(srcdir)/$$f $(DESTDIR)$(glilypond_dir)/$$f; \
-       done
-
-uninstall_sub:
-       $(RM) $(DESTDIR)$(bindir)/glilypond
-       -for f in $(GLILYPOND_LIB_); do \
-         $(RM) $(DESTDIR)$(glilypond_dir)/$$f; \
-       done
-       -test -d $(DESTDIR)$(glilypond_dir) && \
-         rmdir $(DESTDIR)$(glilypond_dir)
-
-########################################################################
-# Emacs settings
-########################################################################
-#
-# Local Variables:
-# mode: makefile
-# End:
index 404e87d..0b976f1 100644 (file)
@@ -1,4 +1,4 @@
-    Copyright (C) 2013-201 Free Software Foundation, Inc.
+    Copyright (C) 2013-2018 Free Software Foundation, Inc.
 
     Written by Bernd Warken <groff-bernd.warken-72@web.de>
 
@@ -6,34 +6,34 @@
     are permitted in any medium without royalty provided the copyright
     notice and this notice are preserved.
 
-    This file is part of `glilypond', which is part of `groff'.
+    This file is part of 'glilypond', which is part of 'groff'.
 
 
 ########################################################################
 
-In order to run `glilypond', your system must have installed Perl of at
-least version `v5.6'.
+In order to run 'glilypond', your system must have installed Perl of at
+least version 'v5.6'.
 
 
 ########################################################################
 
-In order to have this program installed by `make', the creation of a
+In order to have this program installed by 'make', the creation of a
 libdir (library directory) must be programmed in some system files.
 The following actions must be taken:
 
 1) <groff_src_dir>/m4/groff.m4:
-Add `AC_DEFUN([GROFF_GROFFERDIR_DEFAULT])'.
+Add 'AC_DEFUN([GROFF_GROFFERDIR_DEFAULT])'.
 
 2) <groff_src_dir>/configure.ac:
-Add `GROFF_GROFFERDIR_DEFAULT'.
+Add 'GROFF_GROFFERDIR_DEFAULT'.
 
 3) <groff_src_dir>/Makefile.in:
-Add several informations of `glilypond_dir'
+Add several informations of 'glilypond_dir'
 
-With that, the program `autoconf' can be run in order to update the
+With that, the program 'autoconf' can be run in order to update the
 configure files and Makefile's.
 
-Now `$glilypond_dir' can be used as libdir.
+Now '$glilypond_dir' can be used as libdir.
 
 
 ########################################################################
index 485195c..038b004 100644 (file)
@@ -3,29 +3,31 @@
 ########################################################################
 
 my $License = q*
-groff_lilypond - integrate `lilypond' into `groff' files
+groff_lilypond - integrate 'lilypond' into 'groff' files
 
-Source file position: `<groff-source>/contrib/glilypond/args.pl'
-Installed position: `<prefix>/lib/groff/glilypond'
+Source file position: '<groff-source>/contrib/glilypond/args.pl'
+Installed position: '<prefix>/lib/groff/glilypond'
 
-Copyright (C) 2013-2014 Free Software Foundation, Inc.
+Copyright (C) 2013-2018 Free Software Foundation, Inc.
   Written by Bernd Warken <groff-bernd.warken-72@web.de>
 
-This file is part of `GNU groff'.
+Last update: 10 Sep 2015
 
-  `GNU groff' 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
+This file is part of 'GNU groff'.
+
+  'GNU groff' 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.
 
-  `GNU groff' is distributed in the hope that it will be useful, but
+  'GNU groff' 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
+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 `groff', see the files `COPYING' and `LICENSE' in the top
-directory of the `groff' source package.  If not, see
+  You should have received a copy of the 'GNU General Public License'
+along with 'groff', see the files 'COPYING' and 'LICENSE' in the top
+directory of the 'groff' source package.  If not, see
 <http://www.gnu.org/licenses/>.
 *;
 
@@ -110,7 +112,7 @@ my @files = EMPTYARRAY;
 
 
 #----------
-# first run for command line arguments
+# first run for command-line arguments
 #----------
 
 # global variables for first run
@@ -122,8 +124,8 @@ my $has_arg = FALSE;
 
 
 # Split short option collections and transfer these to suitable long
-# options from above.  Note that `-v' now means `--verbose' in version
-# `v1.1', earlier versions had `--version' for `-v'.
+# options from above.  Note that '-v' now means '--verbose' in version
+# 'v1.1', earlier versions had '--version' for '-v'.
 
 my %short_opts =
   (
@@ -153,7 +155,7 @@ $long_opts[3] =
    '--o' => '--output',
    '--p' => '--prefix',                # and --file_prefix
    '--t' => '--temp_dir',
-   '--u' => '--help',          # '--usage' is mapped to `--help'
+   '--u' => '--help',          # '--usage' is mapped to '--help'
   };
 
 $long_opts[4] =
@@ -177,13 +179,13 @@ my $split_short = sub {
 
   my @chars = split //, $1;    # omit leading dash
 
-     # if result is TRUE: run `next SPLIT' afterwards
+     # if result is TRUE: run 'next SPLIT' afterwards
 
    CHARS: while ( @chars ) {
        my $c = shift @chars;
 
        unless ( exists $short_opts{$c} ) {
-        $stderr->print( "Unknown short option `-$c'." );
+        $stderr->print( "Unknown short option '-$c'." );
         next CHARS;
        }
 
@@ -206,12 +208,12 @@ my $split_short = sub {
           # in this arg, the rest of characters in @chars
           push @splitted_args, join "", @chars;
           @chars = EMPTYARRAY;
-          return TRUE;         # use `next SPLIT' afterwards
+          return TRUE;         # use 'next SPLIT' afterwards
         }
 
         # optarg is the next argument
         $has_arg = $transopt;
-        return TRUE;           # use `next SPLIT' afterwards
+        return TRUE;           # use 'next SPLIT' afterwards
        }                       # end of if %opts_with_arg
      }                         # end of while CHARS
      return FALSE;             # do not do anything
@@ -253,7 +255,7 @@ my $split_long = sub {
                      $from_arg . '.' ) if ( defined($optarg) );
       push @splitted_args, $transopt;
       $Args->{'verbose'} = TRUE if ( $transopt eq '--verbose' );
-      return TRUE;             # use `next SPLIT' afterwards
+      return TRUE;             # use 'next SPLIT' afterwards
     }                          # end of if %opts_noarg
 
     # test on option with arg
@@ -263,18 +265,18 @@ my $split_long = sub {
       # test on optarg in arg
       if ( defined($optarg) ) {
        push @splitted_args, $1;
-       return TRUE; # use `next SPLIT' afterwards
+       return TRUE; # use 'next SPLIT' afterwards
       } # end of if optarg in arg
 
       # has optarg in next arg
       $has_arg = $transopt;
-      return TRUE; # use `next SPLIT' afterwards
+      return TRUE; # use 'next SPLIT' afterwards
     } # end of if %opts_with_arg
 
     # not with and without option, so is not permitted
-    $stderr->print( "`" . $transopt .
-                   "' is unknown long option from `" . $from_arg . "'" );
-    return TRUE; # use `next SPLIT' afterwards
+    $stderr->print( "'" . $transopt .
+                   "' is unknown long option from '" . $from_arg . "'" );
+    return TRUE; # use 'next SPLIT' afterwards
   } # end of for N
   return FALSE; # do nothing
 }; # end of split_long()
@@ -287,7 +289,7 @@ sub run_first {
 
  SPLIT: foreach (@ARGV) {
     # Transform long and short options into some given long options.
-    # Split long opts with arg into 2 args (no `=').
+    # Split long opts with arg into 2 args (no '=').
     # Transform short option collections into given long options.
     chomp;
 
@@ -302,12 +304,12 @@ sub run_first {
       next SPLIT;
     }
 
-    if ( $_ eq '-' ) {         # file arg `-'
+    if ( $_ eq '-' ) {         # file arg '-'
       push @files, $_;
       next SPLIT;
     }
 
-    if ( $_ eq '--' ) {                # POSIX arg `--'
+    if ( $_ eq '--' ) {                # POSIX arg '--'
       push @splitted_args, $_;
       $double_minus = TRUE;
       next SPLIT;
@@ -337,7 +339,7 @@ sub run_first {
   }                            # end of foreach SPLIT
 
                                # all args are considered
-  $stderr->print( "Option `$has_arg' needs an argument." )
+  $stderr->print( "Option '$has_arg' needs an argument." )
     if ( $has_arg );
 
 
@@ -351,7 +353,7 @@ sub run_first {
 # open or ignore verbose output
 #----------
 sub install_verbose {
-  if ( $Args->{'verbose'} ) { # `--verbose' was used
+  if ( $Args->{'verbose'} ) { # '--verbose' was used
     # make verbose output into $v
     my $s = $v->get(); # get content of string so far as array ref, close
 
@@ -363,11 +365,11 @@ sub install_verbose {
       }
     }
     # verbose output is now active (into STDERR)
-    $v->print( "Option `-v' means `--verbose'." );
-    $v->print( "Version information is printed by option `--version'." );
+    $v->print( "Option '-v' means '--verbose'." );
+    $v->print( "Version information is printed by option '--version'." );
     $v->print( "#" x 72 );
 
-  } else { # `--verbose' was not used
+  } else { # '--verbose' was not used
     # do not be verbose, make verbose invisible
 
     $v->close(); # close and ignore the string content
@@ -376,7 +378,7 @@ sub install_verbose {
     # this is either into /dev/null or in an ignored string
 
   } # end if-else about verbose
-  # `$v->print' works now in any case
+  # '$v->print' works now in any case
 
   $v->print( "Verbose output was chosen." );
 
@@ -384,20 +386,20 @@ sub install_verbose {
   $v->print( $Globals->{'prog'} . " is" . $s .
             " installed." );
 
-  $v->print( 'The command line options are:' );
+  $v->print( 'The command-line options are:' );
 
   $s = "  options:";
-  $s .= " `" . $_ . "'" for ( @ARGV );
+  $s .= " '" . $_ . "'" for ( @ARGV );
   $v->print( $s );
 
   $s = "  file names:";
-  $s .= " `" . $_ . "'\n" for ( @files );
+  $s .= " '" . $_ . "'\n" for ( @files );
   $v->print( $s );
 } # end install_verbose()
 
 
 #----------
-# second run of command line arguments
+# second run of command-line arguments
 #----------
 sub run_second {
     # Second run of args with new @ARGV from the former splitting.
@@ -408,12 +410,12 @@ sub run_second {
 
   ARGS: for my $arg ( @ARGV ) {
 
-      # ignore `--', file names are handled later on
+      # ignore '--', file names are handled later on
       last ARGS if ( $arg eq '--' );
 
       if ( $has_arg ) {
        unless ( exists $opts_with_arg{$has_arg} ) {
-         $stderr->print( "`\%opts_with_args' does not have key `" .
+         $stderr->print( "'\%opts_with_args' does not have key '" .
                            $has_arg . "'." );
          next ARGS;
        }
@@ -434,14 +436,14 @@ sub run_second {
       }
 
       # not a suitable option
-      $stderr->print( "Wrong option `" . $arg . "'." );
+      $stderr->print( "Wrong option '" . $arg . "'." );
       next ARGS;
 
     } # end of for ARGS:
 
 
     if ( $has_arg ) { # after last argument
-      die "Option `$has_arg' needs an argument.";
+      die "Option '$has_arg' needs an argument.";
     }
 
   }; # end of second run
@@ -450,40 +452,40 @@ sub run_second {
 sub handle_args {
   # handling the output of args
 
-  if ( $Args->{'output'} ) { # `--output' was set in the arguments
+  if ( $Args->{'output'} ) { # '--output' was set in the arguments
     my $out_path = &path2abs($Args->{'output'});
     die "Output file name $Args->{'output'} cannot be used."
       unless ( $out_path );
 
     my ( $file, $dir );
     ( $file, $dir ) = File::Basename::fileparse($out_path)
-      or die "Could not handle output file path `" . $out_path . "': " .
-       "directory name `" . $dir . "' and file name `" . $file . "'.";
+      or die "Could not handle output file path '" . $out_path . "': " .
+       "directory name '" . $dir . "' and file name '" . $file . "'.";
 
-    die "Could not find output directory for `" . $Args->{'output'} . "'"
+    die "Could not find output directory for '" . $Args->{'output'} . "'"
       unless ( $dir );
-    die "Could not find output file: `" . $Args->{'output'} .
+    die "Could not find output file: '" . $Args->{'output'} .
       "'" unless ( $file );
 
     if ( -d $dir ) {
-      die "Could not write to output directory `" . $dir . "'."
+      die "Could not write to output directory '" . $dir . "'."
        unless ( -w $dir );
     } else {
       $dir = &make_dir($dir);
-      die "Could not create output directory in: `" . $out_path . "'."
+      die "Could not create output directory in: '" . $out_path . "'."
        unless ( $dir );
     }
 
     # now $dir is a writable directory
 
     if ( -e $out_path ) {
-      die "Could not write to output file `" . $out_path . "'."
+      die "Could not write to output file '" . $out_path . "'."
        unless ( -w $out_path );
     }
 
     $out = new FH_FILE( $out_path );
-    $v->print( "Output goes to file `" . $out_path . "'." );
-  } else { # `--output' was not set
+    $v->print( "Output goes to file '" . $out_path . "'." );
+  } else { # '--output' was not set
     $out = new FH_STDOUT();
   }
   # no $out is the right behavior for standard output
diff --git a/contrib/glilypond/examples/example.groff b/contrib/glilypond/examples/example.groff
new file mode 100644 (file)
index 0000000..59d53f6
--- /dev/null
@@ -0,0 +1,51 @@
+.\" --------------------------------------------------------------------
+.\" Legalese
+.\" --------------------------------------------------------------------
+.
+.ig
+glilypond - integrate 'lilypond' parts into 'groff' files
+
+Source file position:  <groff_source_top>/contrib/glilypond.man
+Installed position:    <prefix>/share/man/man1/glilypond.1
+
+This file was written by Bernd Warken <groff\-bernd.warken\-72@web.de>.
+.
+Copyright (C) 2013-2018 Free Software Foundation, Inc.
+
+Last update: 10 Sep 2015
+
+This file is part of glilypond, which is part of GNU groff, a free
+software project.
+
+You can redistribute it and/or modify it under the terms of the GNU
+General Public License version 2 as published by the Free Software
+Foundation.
+
+The license text is available in the internet at
+.UR http://\%www.gnu.org/\%licenses/\%gpl-2.0.html
+.UE .
+..
+.
+.\" --------------------------------------------------------------------
+.\" Groff Part
+.\" --------------------------------------------------------------------
+.
+before
+.lilypond start
+\version "2.14.2"
+\relative c' {
+  \key c \minor
+  c d e f
+  g(
+  <ees c'>)
+  <d f gis b>-.
+  <ees g bes>-.
+}
+\paper {
+   oddHeaderMarkup = #f
+   evenHeaderMarkup = #f
+   oddFooterMarkup = #f
+   evenFooterMarkup = #f
+}
+.lilypond end
+after
similarity index 60%
rename from contrib/glilypond/glilypond.man
rename to contrib/glilypond/glilypond.1.man
index 74bc2d5..2a02689 100644 (file)
-.TH glilypond @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
+.TH glilypond @MAN1EXT@ "@MDATE@" "groff @VERSION@"
 .SH NAME
-glilypond \(em integrate lilypond parts into groff
+glilypond \- integrate lilypond parts into groff
 .
-.\" This .SH was moved to this place in order to appease `apropos'.
-.
-.\" glilypond - integrate `lilypond' parts into `groff' files
+.\" glilypond - integrate 'lilypond' parts into 'groff' files
 .\" Source file position:  <groff_source_top>/contrib/glilypond.man
 .\" Installed position:    <prefix>/share/man/man1/glilypond.1
 .
-.
-.\" --------------------------------------------------------------------
-.\" Legalese
-.\" --------------------------------------------------------------------
-.
-.de co
-Copyright \[co] 2013-2014 Free Software Foundation, Inc.
-
-This file is part of glilypond, which is part of GNU groff, a free
-software project.
-
-You can redistribute it and/or modify it under the terms of the GNU
-General Public License version 2 (GPL2) as published by the Free
-Software Foundation.
-
-The license text is available in the internet at
-.UR http://\%www.gnu.org/\%licenses/\%gpl-2.0.html
-.UE .
-..
-.
-.de au
-This document was written by
-.MT groff\-bernd.warken\-72@web.de
-Bernd Warken
-.ME .
-..
-.
-.\" --------------------------------------------------------------------
+.\" TODO: This page needs a thorough edit by a native English speaker.
+.
+.\" ====================================================================
+.\" Legal Terms
+.\" ====================================================================
+.\"
+.\" Copyright (C) 2013-2018 Free Software Foundation, Inc.
+.\"
+.\" This file is part of glilypond, which is part of GNU groff, a free
+.\" software project.
+.\"
+.\" You can redistribute it and/or modify it under the terms of the GNU
+.\" General Public License version 2 (GPL2) as published by the Free
+.\" Software Foundation.
+.\"
+.\" The license text is available in the internet at
+.\" <http://www.gnu.org/licenses/gpl-2.0.html>.
+.
+.
+.\" ====================================================================
 .\" Characters
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .\" Ellipsis ...
-.ie t .ds EL \fS\N'188'\fP
-.el .ds EL \&.\|.\|.\&\
+.ie t .ds EL \fS\N'188'\fP\"
+.el .ds EL \&.\|.\|.\&\"
 .\" called with \*(EL
 .
-.ad l
-.
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH SYNOPSIS
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .SY glilypond
-.OP \& options
+.RB [{ \-\-ly2eps | \-\-pdf2eps }]
+.RB [ \-e
+.IR directory ]
+.OP \-k
+.RB [ \-o
+.IR output-file ]
+.RB [ \-p
+.IR filename-prefix ]
+.RB [ \-t
+.IR tdir ]
+.RB [{ \-v | \-V }]
 .OP \-
 .OP \-\-
-.OP \& "\%filespec \*(EL"
+.RI [ filespec
+\*(EL]
+.SY glilypond
+.RB [{ \-\-ly2eps | \-\-pdf2eps }]
+.RB [ \-\-eps_dir
+.IR directory ]
+.OP \-\-keep_all
+.RB [ \-\-output
+.IR output-file ]
+.RB [ \-\-prefix
+.IR filename-prefix ]
+.RB [ \-\-temp_dir
+.IR tdir ]
+.OP \-\-verbose
+.OP \-
+.OP \-\-
+.RI [ filespec
+\*(EL]
 .YS
 .
+.SY glilypond
+.B \-?
+.SY glilypond
+.B \-h
+.SY glilypond
+.B \-\-help
+.SY glilypond
+.B \-\-usage
+.YS
+.
+.SY glilypond
+.B \-l
+.SY glilypond
+.B \-\-license
+.YS
 .
-.\" --------------------------------------------------------------------
+.SY glilypond
+.B \-\-version
+.YS
+.
+.\" ====================================================================
 .SH DESCRIPTION
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .B glilypond
 transforms sheet music written in the
@@ -74,6 +108,9 @@ request, such that
 .BR groff (@MAN1EXT@)
 can transform it into a format that can be displayed directly.
 .
+.B .PDFPIC
+is available, but does on yet work with lilypond.
+.
 .
 .P
 Files in
@@ -83,13 +120,88 @@ language and
 can be provided as arguments.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
+.SH "WORKING GLILYPOND"
+.\" ====================================================================
+.
+Together with
+.BR .PSPIC ,
+.B glilypond can work only for
+.I troff
+devices without
+.I PDF
+and
+.I X
+devices.
+.
+.
+.P
+I.e., the following
+.B groff
+devices work,
+.BR \-Tps ,
+.BR \-Tdvi ,
+.BR \-Thtml ,
+and
+.BR \-Txhtml .
+.
+.
+.P
+I'm not sure about the
+.B ldp
+and
+.B lj4
+devices.
+.
+.
+.P
+In
+.BR groffer ,
+it is easier to use the following device options, either
+.
+.BR \-\-ps ,
+.BR \-\-div ,
+.BR \-\-html ,
+or
+.BR \-\-xhtml .
+.
+.
+.P
+Unfortunately, the
+.B groff
+option
+.B \-Tpdf
+does not work and the
+.B groffer
+default
+.I PDF
+works neither.
+.
+.
+.P
+But
+.B groffer
+has an additional
+.IR "pdf mode" ,
+not available in
+.BR groff .
+.
+It is based on the
+.I ps mode
+in
+.B groff
+and is called through
+.B groffer \-\-pdf2
+.IR roff-file-with-lilypond .
+.
+.
+.\" ====================================================================
 .SH "OPTION OVERVIEW"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Breaking Options"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .nh
 .nf
@@ -108,9 +220,9 @@ Print license information.
 .hy
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Options for building EPS Files"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .TP
 .OP \-\-ly2eps
@@ -128,7 +240,7 @@ This is the default.
 The program
 .B glilypond
 generates a
-.I pdf
+.I PDF
 file using
 .BR lilypond .
 .
@@ -140,9 +252,9 @@ and
 .BR ps2eps R .
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Directories and Files"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .TP
 .BR \-e | \-\-eps_dir "\fI directory_name\fP"
@@ -158,7 +270,7 @@ So at last, the temporary directory can be removed.
 .
 .
 .TP
-.BR -p | --prefix "\fI begin_of_name\fP"
+.BR \-p | \-\-prefix "\fI begin_of_name\fP"
 Normally all temporary files get names that start with the
 .BI ly \*(EL
 prefix.
@@ -167,7 +279,7 @@ With this option, you can freely change this prefix.
 .
 .
 .TP
-.BR -k | --keep_all
+.BR \-k | \-\-keep_all
 Normally all temporary files without the
 .I eps
 files are deleted.
@@ -178,7 +290,7 @@ program or other format transposers are kept.
 .
 .
 .TP
-.BR -t | --temp_dir "\fI dir\fP"
+.BR \-t | \-\-temp_dir "\fI dir\fP"
 With this option, you call a directory that is the base for the
 temporary directory.
 .
@@ -192,16 +304,16 @@ directly under this directory.
 In this temporary directory, the temporary files are stored.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Output"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .TP
-.BR -o | --output "\fI file_name\fP"
+.BR \-o | \-\-output "\fI file_name\fP"
 Normally all
 .I groff
 output of this program is sent to
-.BR STDOUT .
+.BR STDOUT .
 .
 With this option, that can be changed, such that the output is stored
 into a file named in the option argument
@@ -209,13 +321,13 @@ into a file named in the option argument
 .
 .
 .TP
-.BR -v | -V | --verbose
+.BR \-v | \-V | \-\-verbose
 A lot more of information is sent to STDERR.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Short Option Collections"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The argument handling of options
 .
@@ -268,9 +380,9 @@ So this argument could also be written as several arguments
 .IR some_dir .
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Handling of Long Options"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 Arguments that start with a double dash
 .B \-\-
@@ -364,9 +476,9 @@ or even as an abbreviation like
 .BR \-\-KeE .
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH FILESPEC ARGUMENTS
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 An argument that is not an option or an option argument is called a
 .I filespec
@@ -414,13 +526,13 @@ This is handled according to the
 standard.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "THE LILYPOND PARTS IN ROFF INPUT"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Integrated Lilypond Codes"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 A
 .I lilypond
@@ -474,9 +586,9 @@ These files are transformed later on into
 files.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Inclusion of ly-Files"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 An additional command line for file inclusion of
 .I lilypond
@@ -527,9 +639,9 @@ are also transformed into
 files.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "GENERATED FILES"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 By the transformation process of
 .I lilypond
@@ -542,16 +654,16 @@ stored in a temporary directory.
 .
 .
 .P
-This process can be changed by command line options.
+This process can be changed by command-line options.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Command Line Options for Directories"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The temporary directory for this program is either created
 automatically or can be named by the option
-.BR -t | --temp_dir
+.BR \-t | \-\-temp_dir
 .IR dir .
 .
 .
@@ -563,8 +675,8 @@ files that are later on referred by
 command in the final
 .I groff
 output can be stored in a different directory that can be set by the
-command line option
-.BR -e | --eps_dir
+command-line option
+.BR \-e | \-\-eps_dir
 .IR directory_name .
 .
 With this option, the temporary directory can be removed completely at
@@ -573,8 +685,8 @@ the end of the program.
 .
 .P
 The beginning of the names of the temporary files can be set by the
-command line option
-.OP -p | --prefix
+command-line option
+.OP \-p | \-\-prefix
 .IR begin_of_name .
 .
 .
@@ -583,8 +695,8 @@ All of the temporary files except the
 .I EPS
 files are deleted finally.
 .
-This can be changed by setting the command line option
-.OP -k | --keep_files .
+This can be changed by setting the command-line option
+.OP \-k | \-\-keep_files .
 .
 With this, all temporary files and directories are kept, not deleted.
 .
@@ -600,81 +712,16 @@ But they cannot be deleted by the transformation process because they
 are needed for the display which can take a long time.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "TRANSFORMATION PROCESSES FOR GENERATING EPS FILES"
-.\" --------------------------------------------------------------------
-.
-.\" --------------------------------------------------------------------
-.SS "Mode ly2eps"
-.\" --------------------------------------------------------------------
-.
-This mode is the default.
-.
-It can also be chosen by the option
-.BR --ly2eps .
-.
-.
-.P
-In this mode, the
-.B .ly
-files are transformed by the
-.B lilypond
-program into many files of different formats, including
-.I eps
-files, using
-.RS
-.EX
-.BI "$ lilypond \-\-ps \-dbackend=eps \-dgs\-load\-fonts \-\-output=" file\-name
-.EE
-.RE
-for each
-.B .ly
-file.
-.
-The output
-.I file\-name
-must be provided without an extension, its directory is temporary.
-.
-.
-.P
-There are many
-.I EPS
-files created.
-.
-One having the complete transformed
-.B ly
-file, named
-.IB file\-name .eps \fR.\fP
-.
-.
-.P
-Moreover there are
-.I EPS
-files for each page, named
-.IB file\-name \- digit .eps \fR.\fP
-.
-.
-.P
-The last step to be done is replacing all
-.I lilypond
-parts by the collection of the corresponding
-.I EPS
-page files.
-.
-This is done by
-.I groff
-commands
-.EX
-.BI ".PSPIC " file-name \- digit .eps
-.EE
+.\" ====================================================================
 .
-.
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Mode pdf2eps"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
-This mode can be chosen by the option
-.BR --pdf2eps .
+This mode is the actual default and can also be chosen by the option
+.BR \-\-pdf2eps .
 .
 .
 .P
@@ -683,7 +730,7 @@ In this mode, the
 files are transformed by the
 .BR lilypond (1)
 program into
-.I pdf
+.I PDF
 files, using
 .RS
 .EX
@@ -760,9 +807,79 @@ command
 .RE
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
+.SS "Mode ly2eps"
+.\" ====================================================================
+.
+In earlier time, this mode was the default.
+.
+But now it does not work any more, so accept the new default
+.BR pdf2eps .
+.
+For testing, this mode can also be chosen by the
+.B glilypond
+option
+.BR \-\-ly2eps .
+.
+.
+.P
+In this mode, the
+.B .ly
+files are transformed by the
+.B lilypond
+program into many files of different formats, including
+.I eps
+files, using
+.RS
+.EX
+.BI "$ lilypond \-\-ps \-dbackend=eps \-dgs\-load\-fonts \-\-output=" file\-name
+.EE
+.RE
+for each
+.B .ly
+file.
+.
+The output
+.I file\-name
+must be provided without an extension, its directory is temporary.
+.
+.
+.P
+There are many
+.I EPS
+files created.
+.
+One having the complete transformed
+.B ly
+file, named
+.IB file\-name .eps \fR.\fP
+.
+.
+.P
+Moreover there are
+.I EPS
+files for each page, named
+.IB file\-name \- digit .eps \fR.\fP
+.
+.
+.P
+The last step to be done is replacing all
+.I lilypond
+parts by the collection of the corresponding
+.I EPS
+page files.
+.
+This is done by
+.I groff
+commands
+.EX
+.BI ".PSPIC " file-name \- digit .eps
+.EE
+.
+.
+.\" ====================================================================
 .SH "THE GENERATED NEW ROFF STRUCTURE"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The new
 .BR groff (@MAN7EXT@)
@@ -785,85 +902,66 @@ stored into a file by given the option
 .I file_name
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
+.SH AUTHORS
+.\" ====================================================================
+.B glilypond
+was written by
+.MT groff\-bernd.warken\-72@\:web.de
+Bernd Warken
+.ME .
+.
+.
+.\" ====================================================================
 .SH "SEE ALSO"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .TP
 .BR groff (@MAN1EXT@)
-the usage of the groff program and pointers to the documentation and
-availability of the
-.I groff
-system.
-.
-The main source of information for the
-.I groff
-system is the
+describes the usage of the
 .I groff
-.BR info (1)
-file.
-.
-.
-.TP
-.BR groff (@MAN7EXT@)
-documents the
+command and contains pointers to further documentation of the
 .I groff
-language.
+system.
 .
 .
 .TP
 .BR groff_tmac (@MAN5EXT@)
-contains documentation of the
+describes the
 .B .PSPIC
 request.
 .
 .
 .TP
 .BR lilypond (1)
-The documentation of the
+briefly describes the
 .B lilypond
-program.
-.
-The main source of information for the
-.I lilypond
-language is the
-.I lilypond
-.BR info (1)
-file.
+command and contains pointers to further documentation.
 .
 .
 .TP
 .BR pdf2ps (1)
-transform a
+transforms a
 .I PDF
 file into a
-.I Postscript
+.I PostScript
 format.
 .
 .
 .TP
 .BR ps2eps (1)
-transform a
+transforms a
 .I PS
 file into an
 .I EPS
 format.
 .
 .
-.\" --------------------------------------------------------------------
-.SH "COPYING"
-.\" --------------------------------------------------------------------
-.co
-.\" --------------------------------------------------------------------
-.SH "AUTHORS"
-.\" --------------------------------------------------------------------
-.au
-.
-.
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .\" Emacs settings
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .\" Local Variables:
 .\" mode: nroff
 .\" End:
+.\" vim: set filetype=groff:
diff --git a/contrib/glilypond/glilypond.am b/contrib/glilypond/glilypond.am
new file mode 100644 (file)
index 0000000..4dd88fe
--- /dev/null
@@ -0,0 +1,76 @@
+# Automake rules for 'glilypond'
+
+# File position: <groff-source>/contrib/lilypond/glilypond.am
+
+# Copyright (C) 2013-2018 Free Software Foundation, Inc.
+# Written by Werner Lemberg <wl@gnu.org> and
+# Bernd Warken <groff-bernd.warken-72@web.de>.
+# Automake migration by Bertrand Garrigues
+
+# Last update: 22 Aug 2015
+
+# This file is part of 'glilypond' which is part of 'groff'.
+
+# 'groff' 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.
+
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+
+########################################################################
+glilypond_srcdir = $(top_srcdir)/contrib/glilypond
+bin_SCRIPTS += glilypond
+man1_MANS += contrib/glilypond/glilypond.1
+
+# files going to lib directory '$(glilypond_dir)'
+# TODO glilypond_dir is subsitued by configure.ac, check if this could be removed
+glilyponddir = $(glilypond_dir)
+dist_glilypond_DATA = \
+  contrib/glilypond/subs.pl \
+  contrib/glilypond/oop_fh.pl \
+  contrib/glilypond/args.pl
+
+EXTRA_DIST += \
+  contrib/glilypond/ChangeLog \
+  contrib/glilypond/ChangeLog.0x \
+  contrib/glilypond/glilypond.1.man \
+  contrib/glilypond/glilypond.pl \
+  contrib/glilypond/README.txt \
+  contrib/glilypond/examples/example.groff
+
+
+# create perl executable 'glilypond', being stored into 'bindir'
+glilypond: $(glilypond_srcdir)/glilypond.pl shdeps.sed
+       $(AM_V_GEN)$(RM) $@ \
+       && sed -f "$(SH_DEPS_SED_SCRIPT)" \
+              -e "s|[@]g[@]|$(g)|g" \
+              -e "s|[@]BINDIR[@]|$(DESTDIR)$(bindir)|g" \
+              -e "s|[@]glilypond_dir[@]|$(DESTDIR)$(glilypond_dir)|g" \
+              -e "s|[@]VERSION[@]|$(VERSION)|g" \
+              $(glilypond_srcdir)/glilypond.pl \
+              >$@ \
+       && chmod +x $@
+
+uninstall_groffdirs: uninstall-glilypond-hook
+uninstall-glilypond-hook:
+       if test -d $(DESTDIR)$(glilyponddir); then \
+         rmdir $(DESTDIR)$(glilyponddir); \
+       fi
+
+
+########################################################################
+# Editor settings
+########################################################################
+#
+# Local Variables:
+# mode: makefile-automake
+# fill-column: 72
+# End:
+# vim: set filetype=automake textwidth=72:
index 6f8dd83..868801b 100755 (executable)
@@ -6,14 +6,14 @@ package main;
 # debugging
 ########################################################################
 
-# See `Mastering Perl', chapter 4.
+# See 'Mastering Perl', chapter 4.
 
 # use strict;
 # use warnings;
 # use diagnostics;
 
 use Carp;
-$SIG[__DIE__] = sub { &Carp::croak; };
+$SIG{__DIE__} = sub { &Carp::croak; };
 
 use Data::Dumper;
 
@@ -26,31 +26,33 @@ our $Legalese;
 {
   use constant VERSION => 'v1.3.1'; # version of glilypond
 
-### This constant `LICENSE' is the license for this file `GPL' >= 2
+### This constant 'LICENSE' is the license for this file 'GPL' >= 2
   use constant LICENSE => q*
-glilypond - integrate `lilypond' into `groff' files
+glilypond - integrate 'lilypond' into 'groff' files
 
-Source file position: `<groff-source>/contrib/glilypond/glilypond.pl'
-Installed position: `<prefix>/bin/glilypond'
+Source file position: '<groff-source>/contrib/glilypond/glilypond.pl'
+Installed position: '<prefix>/bin/glilypond'
 
-Copyright (C) 2013-2014 Free Software Foundation, Inc.
+Copyright (C) 2013-2018 Free Software Foundation, Inc.
   Written by Bernd Warken <groff-bernd.warken-72@web.de>
 
-This file is part of `GNU groff'.
+Last update: 10 Sep 2015
 
-  `GNU groff' is free software: you can redistribute it and/or modify it
-under the terms of the `GNU General Public License' as published by the
-`Free Software Foundation', either version 2 of the License, or (at your
+This file is part of 'GNU groff'.
+
+  'GNU groff' is free software: you can redistribute it and/or modify it
+under the terms of the 'GNU General Public License' as published by the
+'Free Software Foundation', either version 2 of the License, or (at your
 option) any later version.
 
-  `GNU groff' is distributed in the hope that it will be useful, but
+  'GNU groff' 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
+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 `groff', see the files `COPYING' and `LICENSE' in the top
-directory of the `groff' source package.  If not, see
+  You should have received a copy of the 'GNU General Public License'
+along with 'groff', see the files 'COPYING' and 'LICENSE' in the top
+directory of the 'groff' source package.  If not, see
 <http://www.gnu.org/licenses/>.
 *;
 
@@ -102,8 +104,8 @@ BEGIN {
   {
     ( my $volume, my $directory, $Globals->{'prog'} ) =
       File::Spec->splitpath($0);
-    # $Globals->{'prog'} is `glilypond' when installed,
-    # `glilypond.pl' when not
+    # $Globals->{'prog'} is 'glilypond' when installed,
+    # 'glilypond.pl' when not
   }
 
 
@@ -114,7 +116,7 @@ BEGIN {
 
   {
     {
-      # script before run of `make'
+      # script before run of 'make'
       my $at = '@';
       $Globals->{'before_make'} = TRUE if '@VERSION@' eq "${at}VERSION${at}";
     }
@@ -134,7 +136,7 @@ BEGIN {
 
     unshift(@INC, $glilypond_libdir);
 
-    umask 0077; # octal output: `printf "%03o", umask;'
+    umask 0077; # octal output: 'printf "%03o", umask;'
   }
 
   require 'subs.pl';
@@ -150,7 +152,7 @@ require 'oop_fh.pl';
 our $stdout = new FH_STDOUT();
 our $stderr = new FH_STDERR();
 
-# verbose printing, not clear wether this will be set by `--verbose',
+# verbose printing, not clear wether this will be set by '--verbose',
 # so store this now into a string, which can be gotten later on, when
 # it will become either STDERR or /dev/null
 our $v = new FH_STRING();
@@ -162,41 +164,41 @@ our $out;
 
 
 ########################################################################
-# Args: command line arguments
+# Args: command-line arguments
 ########################################################################
 
-# command line arguments are handled in 2 runs:
-# 1) split short option collections, `=' optargs, and transfer abbrevs
+# command-line arguments are handled in 2 runs:
+# 1) split short option collections, '=' optargs, and transfer abbrevs
 # 2) handle the transferred options with subs
 
 our $Args =
   {
-   'eps_dir' => EMPTYSTRING, # can be overwritten by `--eps_dir'
+   'eps_dir' => EMPTYSTRING, # can be overwritten by '--eps_dir'
 
-   # `eps-func' has 2 possible values:
-   # 1) `ly' from `--ly2eps' (default)
-   # 2) `pdf' `--pdf2eps'
-   'eps_func' => 'ly',
+   # 'eps-func' has 2 possible values:
+   # 1) 'pdf' '--pdf2eps' (default)
+   # 2) 'ly' from '--ly2eps'
+   'eps_func' => 'pdf',
 
    # files names of temporary files start with this string,
-   # can be overwritten by `--prefix'
+   # can be overwritten by '--prefix'
    'prefix' => 'ly',
 
    # delete or do not delete temporary files
    'keep_all' => FALSE,
 
-   # the roff output goes normally to STDOUT, can be a file with `--output'
+   # the roff output goes normally to STDOUT, can be a file with '--output'
    'output' => EMPTYSTRING,
 
-   # temporary directory, can be overwritten by `--temp_dir',
+   # temporary directory, can be overwritten by '--temp_dir',
    # empty for default of the program
    'temp_dir' => EMPTYSTRING,
 
-   # regulates verbose output (on STDERR), overwritten by `--verbose'
+   # regulates verbose output (on STDERR), overwritten by '--verbose'
    'verbose' => FALSE,
   };
 
-{ # `Args'
+{ # 'Args'
   require 'args.pl';
   &run_first();
   &install_verbose();
@@ -204,7 +206,7 @@ our $Args =
   &handle_args();
 }
 
-# end `Args'
+# end 'Args'
 
 
 ########################################################################
@@ -223,25 +225,25 @@ our $Temp =
    'temp_dir' => EMPTYSTRING,
   };
 
-{ # `Temp'
+{ # 'Temp'
 
   if ( $Args->{'temp_dir'} ) {
 
     #----------
-    # temporary directory was set by `--temp_dir'
+    # temporary directory was set by '--temp_dir'
     #----------
 
     my $dir = $Args->{'temp_dir'};
 
     $dir = &path2abs($dir);
     $dir = &make_dir($dir) or
-      die "The directory `$dir' cannot be used temporarily: $!";
+      die "The directory '$dir' cannot be used temporarily: $!";
 
 
-    # now `$dir' is a writable directory
+    # now '$dir' is a writable directory
 
     opendir( my $dh, $dir ) or
-      die "Could not open temporary directory `$dir': $!";
+      die "Could not open temporary directory '$dir': $!";
     my $file_name;
     my $found = FALSE;
     my $prefix = $Args->{'prefix'};
@@ -275,7 +277,7 @@ our $Temp =
     $Temp->{'temp_dir'} = $dir;
 
 
-  } else { # $Args->{'temp_dir'} not given by `--temp_dir'
+  } else { # $Args->{'temp_dir'} not given by '--temp_dir'
 
     #----------
     # temporary directory was not set
@@ -288,7 +290,7 @@ our $Temp =
        my $tmpdir = File::Spec->tmpdir();
        push @tempdirs, $tmpdir if ( $tmpdir && -d $tmpdir && -w $tmpdir );
 
-       my $root_dir = File::Spec->rootdir(); # `/' in Unix
+       my $root_dir = File::Spec->rootdir(); # '/' in Unix
        my $root_tmp = File::Spec->catdir($root_dir, 'tmp');
        push @tempdirs, $root_tmp
          if ( $root_tmp ne $tmpdir && -d $root_tmp && -w $root_tmp );
@@ -298,7 +300,7 @@ our $Temp =
        my $home_tmp = File::Spec->catdir($home, 'tmp');
        push @tempdirs, $home_tmp if ( -d $home_tmp && -w $home_tmp );
 
-       # `/var/tmp' in Unix
+       # '/var/tmp' in Unix
        my $var_tmp = File::Spec->catdir('', 'var', 'tmp');
        push @tempdirs, $var_tmp if ( -d $var_tmp && -w $var_tmp );
       }
@@ -306,8 +308,8 @@ our $Temp =
 
       my @path_extension = qw( groff ); # TEMPDIR/groff/USER/lilypond/<NUMBER>
       {
-       # `$<' is UID of actual user,
-       # `getpwuid' gets user name in scalar context
+       # '$<' is UID of actual user,
+       # 'getpwuid' gets user name in scalar context
        my $user = getpwuid($<);
        push @path_extension, $user if ( $user );
 
@@ -317,7 +319,7 @@ our $Temp =
 
     TEMPS: foreach ( @tempdirs ) {
 
-       my $dir; # final directory name in `while' loop
+       my $dir; # final directory name in 'while' loop
        $dir = &path2abs($_);
        next TEMPS unless ( $dir );
 
@@ -355,8 +357,8 @@ our $Temp =
 
   } # end temporary directory
 
-  $v->print( "Temporary directory: `" . $Temp->{'temp_dir'} . "'\n" );
-  $v->print( "file_prefix: `" . $Args->{'prefix'} . "'" );
+  $v->print( "Temporary directory: '" . $Temp->{'temp_dir'} . "'\n" );
+  $v->print( "file_prefix: '" . $Args->{'prefix'} . "'" );
 
 
   #----------
@@ -364,7 +366,7 @@ our $Temp =
   #----------
 
   my $make_dir = FALSE;
-  if ( $Args->{'eps_dir'} ) { # set by `--eps_dir'
+  if ( $Args->{'eps_dir'} ) { # set by '--eps_dir'
     my $dir = $Args->{'eps_dir'};
 
     $dir = &path2abs($dir);
@@ -372,7 +374,7 @@ our $Temp =
     if ( -e $dir ) {
       goto EMPTY unless ( -w $dir );
 
-      # `$dir' is writable
+      # '$dir' is writable
       if ( -d $dir ) {
        my $upper_dir = $dir;
 
@@ -401,12 +403,12 @@ our $Temp =
        }
        $make_dir = TRUE;
        $Temp->{'eps_dir'} = $dir;
-      } else { # `$dir' is not a dir, so unlink it to create it as dir
-       if ( unlink $dir ) { # could remove `$dir'
+      } else { # '$dir' is not a dir, so unlink it to create it as dir
+       if ( unlink $dir ) { # could remove '$dir'
          $Temp->{'eps_dir'} = $dir;
          $make_dir = TRUE;
        } else { # could not remove
-         stderr->print(  "Could not use EPS dir `" . $dir .
+         $stderr->print( "Could not use EPS dir '" . $dir .
                          "', use temp dir." );
        } # end of unlink
       } # end test of -d $dir
@@ -415,17 +417,17 @@ our $Temp =
     } # end of if -e $dir
 
 
-    if ( $make_dir ) { # make directory `$dir'
+    if ( $make_dir ) { # make directory '$dir'
       my $made = FALSE;
       $dir = &make_dir($dir) and $made = TRUE;
 
       if ( $made ) {
        $Temp->{'eps_dir'} = $dir;
-       $v->print( "Directory for useful EPS files is `" . $dir . "'." );
+       $v->print( "Directory for useful EPS files is '" . $dir . "'." );
       } else {
-       $v->print( "The EPS directory `" . $dir . "' cannot be used: $!" );
+       $v->print( "The EPS directory '" . $dir . "' cannot be used: $!" );
       }
-    } else { # `--eps_dir' was not set, so take the temporary directory
+    } else { # '--eps_dir' was not set, so take the temporary directory
       $Temp->{'eps_dir'} = $Args->{'temp_dir'};
     } # end of make dir
   }
@@ -434,10 +436,10 @@ our $Temp =
     # EPS-dir not set or available, use temp dir,
     # but leave $Temp->{'}eps_dir'} empty
     $v->print( "Directory for useful EPS files is the " .
-      "temporary directory `" . $Temp->{'temp_dir'} . "'." );
+      "temporary directory '" . $Temp->{'temp_dir'} . "'." );
   }
 
-} # end `Temp'
+} # end 'Temp'
 
 
 ########################################################################
@@ -447,32 +449,32 @@ our $Temp =
 our $Read =
   {
    'file_numbered' => EMPTYSTRING,
-   'file_ly' => EMPTYSTRING, # `$file_numbered.ly'
+   'file_ly' => EMPTYSTRING, # '$file_numbered.ly'
   };
 
 { # read files or stdin
 
   my $ly_number = 0; # number of lilypond file
 
-  # `$Args->{'prefix'}_[0-9]'
+  # '$Args->{'prefix'}_[0-9]'
 
   my $lilypond_mode = FALSE;
 
-  my $arg1; # first argument for `.lilypond'
-  my $arg2; # argument for `.lilypond include'
+  my $arg1; # first argument for '.lilypond'
+  my $arg2; # argument for '.lilypond include'
 
   my $path_ly; # path of ly-file
 
 
-  my $check_file = sub { # for argument of `.lilypond include'
+  my $check_file = sub { # for argument of '.lilypond include'
     my $file = shift; # argument is a file name
     $file = &path2abs($file);
     unless ( $file ) {
-      die "Line `.lilypond include' without argument";
+      die "Line '.lilypond include' without argument";
       return '';
     }
     unless ( -f $file && -r $file ) {
-      die "Argument `$file' in `.lilypond include' is not a readable file";
+      die "Argument '$file' in '.lilypond include' is not a readable file";
     }
 
     return $file;
@@ -493,7 +495,7 @@ our $Read =
      'pdf' => \&create_pdf2eps, # lilypond creates PDF file
     );
 
-  # about lines starting with `.lilypond'
+  # about lines starting with '.lilypond'
 
   my $ly;
   my $fh_include_file;
@@ -501,21 +503,21 @@ our $Read =
     (
 
      'start' => sub {
-       $v->print( "\nline: `.lilypond start'" );
-       die "Line `.lilypond stop' expected." if ( $lilypond_mode );
+       $v->print( "\nline: '.lilypond start'" );
+       die "Line '.lilypond stop' expected." if ( $lilypond_mode );
 
        $lilypond_mode = TRUE;
        &$increase_ly_number;
 
-       $v->print( "ly-file: `" . $path_ly . "'" );
+       $v->print( "ly-file: '" . $path_ly . "'" );
 
        $ly = new FH_FILE($path_ly);
      },
 
 
      'end' => sub {
-       $v->print( "line: `.lilypond end'\n" );
-       die "Expected line `.lilypond start'." unless ( $lilypond_mode );
+       $v->print( "line: '.lilypond end'\n" );
+       die "Expected line '.lilypond start'." unless ( $lilypond_mode );
 
        $lilypond_mode = FALSE;
        $ly->close();
@@ -528,7 +530,7 @@ our $Read =
      },
 
 
-     'include' => sub { # `.lilypond include file...'
+     'include' => sub { # '.lilypond include file...'
 
        # this may not be used within lilypond mode
        next LILYPOND if ( $lilypond_mode );
@@ -540,13 +542,13 @@ our $Read =
        # file can be read now
 
 
-       # `$fh_write_ly' must be opened
+       # '$fh_write_ly' must be opened
        &$increase_ly_number;
 
        $ly = new FH_FILE($path_ly);
 
        my $include = new FH_READ_FILE($file);
-       my $res = $include->read-all(); # is a refernce to an array
+       my $res = $include->read_all(); # is a reference to an array
        foreach ( @$res ) {
         chomp;
         $ly->print($_);
@@ -556,9 +558,9 @@ our $Read =
        if ( exists $eps_subs{ $Args->{'eps_func'} } ) {
         $eps_subs{ $Args->{'eps_func'} }->();
        } else {
-        die "Wrong argument for \$eps_subs: `" . $Args->{'eps_func'} . "'";
+        die "Wrong argument for \$eps_subs: '" . $Args->{'eps_func'} . "'";
        }
-     }, # end `.lilypond include'
+     }, # end '.lilypond include'
 
     ); # end definition %lilypond_args
 
@@ -596,16 +598,16 @@ our $Read =
                  )
                  \s*
                //x;
-      my $arg1 = $1; # `start', `end' or `include'
+      my $arg1 = $1; # 'start', 'end' or 'include'
       $args =~ s/["'`]//g;
-      my $arg2 = $args; # file argument for `.lilypond include'
+      my $arg2 = $args; # file argument for '.lilypond include'
 
       if ( exists $lilypond_args{$arg1} ) {
        $lilypond_args{$arg1}->($arg2);
        next;
       } else {
-       # not a suitable argument of `.lilypond'
-       $stderr->print( "Unknown command: `$arg1' `$arg2':  `$line'" );
+       # not a suitable argument of '.lilypond'
+       $stderr->print( "Unknown command: '$arg1' '$arg2':  '$line'" );
       }
 
       next LILYPOND;
@@ -613,7 +615,7 @@ our $Read =
 
 
     if ( $lilypond_mode ) { # do lilypond-mode
-      # see `.lilypond start'
+      # see '.lilypond start'
       $ly->print( $line );
       next LILYPOND;
     } # do lilypond-mode
@@ -624,7 +626,7 @@ our $Read =
               [.']
               \s*
               lilypond
-            /x ) { # not a `.lilypond' line
+            /x ) { # not a '.lilypond' line
       $out->print($line);
       next LILYPOND;
     }
@@ -643,7 +645,7 @@ END {
 
   if ( $Args->{'keep_all'} ) {
     # With --keep_all, no temporary files are removed.
-    $v->print( "keep_all: `TRUE'" );
+    $v->print( "keep_all: 'TRUE'" );
     $v->print( "No temporary files will be deleted:" );
 
     opendir my $dh_temp, $Temp->{'temp_dir'} or
@@ -669,7 +671,7 @@ END {
   } else { # keep_all is not set
     # Remove all temporary files except the eps files.
 
-    $v->print( "keep_all: `FALSE'" );
+    $v->print( "keep_all: 'FALSE'" );
     $v->print( "All temporary files except *.eps will be deleted" );
 
 
@@ -679,7 +681,7 @@ END {
       if ( &is_subdir( $Temp->{'eps_dir'}, $Temp->{'temp_dir'} ) ) {
        $v->print( "EPS dir is subdir of temp dir, so keep both." );
       } else { # remove temp dir
-       $v->print( "Try to remove temporary directory `" .
+       $v->print( "Try to remove temporary directory '" .
          $Temp->{'temp_dir'} ."':" );
        if ( File::Path::remove_tree($Temp->{'temp_dir'}) ) {
          # remove succeeds
@@ -706,10 +708,10 @@ END {
               ^
               $Args->{'prefix'}
               _
-            /x ) { # this includes `PREFIX_temp*'
+            /x ) { # this includes 'PREFIX_temp*'
          my $file = File::Spec->catfile( $Temp->{'temp_dir'},  $_ );
-         $v->print( "Remove `" . $file . "'" );
-         unlink $file or $stderr->print( "Could not remove `$file': $!" );
+         $v->print( "Remove '" . $file . "'" );
+         unlink $file or $stderr->print( "Could not remove '$file': $!" );
          next;
        } # end if prefix
        next;
@@ -721,11 +723,11 @@ END {
 
   if ( $Temp->{'eps_dir'} ) {
     # EPS files in $Temp->{'eps_dir'} are always kept
-    $v->print( "As EPS directrory is set as `" .
+    $v->print( "As EPS directrory is set as '" .
       $Temp->{'eps_dir'} . "', no EPS files there will be deleted." );
 
     opendir my $dh_temp, $Temp->{'eps_dir'} or
-      die "Cannot open `" . $Temp->{'eps_dir'} . ": $!";
+      die "Cannot open '" . $Temp->{'eps_dir'} . ": $!";
     for ( sort readdir $dh_temp ) {
       next if ( /         # omit files starting with a dot
                  ^
index f6b7214..73da6a2 100644 (file)
@@ -3,29 +3,29 @@ my $License = q*
 # Legalese
 ########################################################################
 
-Source file position: `<groff-source>/contrib/glilypond/oop_fh.pl'
-Installed position: `<prefix>/lib/groff/glilypond/oop_fh.pl'
+Source file position: '<groff-source>/contrib/glilypond/oop_fh.pl'
+Installed position: '<prefix>/lib/groff/glilypond/oop_fh.pl'
 
-Copyright (C) 2013-2013  Free Software Foundation, Inc.
+Copyright (C) 2013-2013 Free Software Foundation, Inc.
   Written by Bernd Warken <groff-bernd.warken-72@web.de>
 
-This file is part of `glilypond', which is part of `GNU groff'.
+This file is part of 'glilypond', which is part of 'GNU groff'.
 
-glilypond - integrate `lilypond' into `groff' files
+glilypond - integrate 'lilypond' into 'groff' files
 
-  `GNU groff' 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
+  'GNU groff' 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.
 
-  `GNU groff' is distributed in the hope that it will be useful, but
+  'GNU groff' 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
+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 `groff', see the files `COPYING' and `LICENSE' in the top
-directory of the `groff' source package.  If not, see
+  You should have received a copy of the 'GNU General Public License'
+along with 'groff', see the files 'COPYING' and 'LICENSE' in the top
+directory of the 'groff' source package.  If not, see
 <http://www.gnu.org/licenses/>.
 *;
 
@@ -135,7 +135,7 @@ use integer;
       die "$file is a directory" if ( -d $file );
     }
     open $self->{'fh'}, ">", $self->{'file'}
-      or die "could not open file `$file' for writing: $!";
+      or die "could not open file '$file' for writing: $!";
     $self->{'opened'} = main::TRUE;
   }
 
@@ -230,7 +230,7 @@ use integer;
 
   sub new {
     my ( $pkg, $file ) = @_;
-    die "File `$file' cannot be read." unless ( -f $file && -r $file );
+    die "File '$file' cannot be read." unless ( -f $file && -r $file );
     bless {
           'fh' => undef,
           'file' => $file,
@@ -251,7 +251,7 @@ use integer;
       die "$file is a directory" if ( -d $file );
     }
     open $self->{'fh'}, "<", $self->{'file'}
-      or die "could not read file `$file': $!";
+      or die "could not read file '$file': $!";
     $self->{'opened'} = main::TRUE;
   }
 
index aa70dfe..bcc7b70 100644 (file)
@@ -3,29 +3,31 @@ my $License = q*
 # Legalese
 ########################################################################
 
-Subroutines for `glilypond'.
+Subroutines for 'glilypond'.
 
-Source file position: `<groff-source>/contrib/glilypond/subs.pl'
-Installed position: `<prefix>/lib/groff/glilypond/subs.pl'
+Source file position: '<groff-source>/contrib/glilypond/subs.pl'
+Installed position: '<prefix>/lib/groff/glilypond/subs.pl'
 
-Copyright (C) 2013-201 Free Software Foundation, Inc.
+Copyright (C) 2013-2018 Free Software Foundation, Inc.
   Written by Bernd Warken <groff-bernd.warken-72@web.de>
 
-This file is part of `glilypond', which is part of `GNU groff'.
+Last update: 10 Sep 2015
 
-  `GNU groff' 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
+This file is part of 'glilypond', which is part of 'GNU groff'.
+
+  'GNU groff' 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.
 
-  `GNU groff' is distributed in the hope that it will be useful, but
+  'GNU groff' 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
+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 `groff', see the files `COPYING' and `LICENSE' in the top
-directory of the `groff' source package.  If not, see
+  You should have received a copy of the 'GNU General Public License'
+along with 'groff', see the files 'COPYING' and 'LICENSE' in the top
+directory of the 'groff' source package.  If not, see
 <http://www.gnu.org/licenses/>.
 *;
 
@@ -40,17 +42,20 @@ use integer;
 use utf8;
 use feature 'state';
 
+my $P_PIC;
+# $P_PIC = '.PDFPIC';
+$P_PIC = '.PSPIC';
 
 ########################################################################
 # subs for using several times
 ########################################################################
 
-sub create_ly2eps {                   # `--ly2eps' default
+sub create_ly2eps {                   # '--ly2eps' default
   our ( $out, $Read, $Temp );
 
   my $prefix = $Read->{'file_numbered'};   # with dir change to temp dir
 
-  # `$ lilypond --ps -dbackend=eps -dgs-load-fonts \
+  # '$ lilypond --ps -dbackend=eps -dgs-load-fonts \
   #      output=file_without_extension file.ly'
   # extensions are added automatically
   my $opts = '--ps -dbackend=eps -dinclude-eps-fonts -dgs-load-fonts ' .
@@ -58,13 +63,13 @@ sub create_ly2eps {                # `--ly2eps' default
   &run_lilypond("$opts");
 
   Cwd::chdir $Temp->{'cwd'} or
-      die "Could not change to former directory `" .
+      die "Could not change to former directory '" .
        $Temp->{'cwd'} . "': $!";
 
   my $eps_dir = $Temp->{'eps_dir'};
   my $dir = $Temp->{'temp_dir'};
   opendir( my $dh, $dir ) or
-    die "could not open temporary directory `$dir': $!";
+    die "could not open temporary directory '$dir': $!";
 
   my $re = qr<
               ^
@@ -89,14 +94,14 @@ sub create_ly2eps {                # `--ly2eps' default
          $file_path = File::Spec->catfile($eps_dir, $_);
        }
       }
-      $out->print( '.PSPIC ' . $file_path );
+      $out->print( $P_PIC . ' ' . $file_path );
     }
   }                            # end while readdir
   closedir( $dh );
 }                              # end sub create_ly2eps()
 
 
-sub create_pdf2eps {                  # `--pdf2eps'
+sub create_pdf2eps {                  # '--pdf2eps'
   our ( $v, $stdout, $stderr, $out, $Read, $Temp );
 
   my $prefix = $Read->{'file_numbered'};   # with dir change to temp dir
@@ -108,25 +113,25 @@ sub create_pdf2eps {                     # `--pdf2eps'
 
   # pdf2ps in temp dir
   my $temp_file = &next_temp_file;
-  $v->print( "\n##### run of `pdf2ps'" );
-  # `$ pdf2ps file.pdf file.ps'
+  $v->print( "\n##### run of 'pdf2ps'" );
+  # '$ pdf2ps file.pdf file.ps'
   my $output = `pdf2ps $file_pdf $file_ps 2> $temp_file`;
   die 'Program pdf2ps does not work.' if ( $? );
   &shell_handling($output, $temp_file);
-  $v->print( "##### end run of `pdf2ps'\n" );
+  $v->print( "##### end run of 'pdf2ps'\n" );
 
   # ps2eps in temp dir
   $temp_file = &next_temp_file;
-  $v->print( "\n##### run of `ps2eps'" );
-  # `$ ps2eps file.ps'
+  $v->print( "\n##### run of 'ps2eps'" );
+  # '$ ps2eps file.ps'
   $output = `ps2eps $file_ps 2> $temp_file`;
   die 'Program ps2eps does not work.' if ( $? );
   &shell_handling($output, $temp_file);
-  $v->print( "##### end run of `ps2eps'\n" );
+  $v->print( "##### end run of 'ps2eps'\n" );
 
   # change back to former dir
   Cwd::chdir $Temp->{'cwd'} or
-      die "Could not change to former directory `" .
+      die "Could not change to former directory '" .
        $Temp->{'cwd'} . "': $!";
 
   # handling of .eps file
@@ -144,7 +149,7 @@ sub create_pdf2eps {                       # `--pdf2eps'
     } # end Temp->{'eps_dir'}
   }
   # print into groff output
-  $out->print( '.PSPIC ' . $eps_path );
+  $out->print( $P_PIC . ' ' . $eps_path );
 }                              # end sub create_pdf2eps()
 
 
@@ -206,13 +211,13 @@ sub make_dir {                    # make directory or check if it exists
     next DIRPARTS if ( -d $dir_grow );
 
     if ( -e $dir_grow ) {  # exists, but not a dir, so must be removed
-      die "Couldn't create dir `$dir_arg', it is blocked by `$dir_grow'."
+      die "Couldn't create dir '$dir_arg', it is blocked by '$dir_grow'."
        unless ( -w $dir_grow );
 
       # now it's writable, but not a dir, so it can be removed
       unlink ( $dir_grow ) or
-       die "Couldn't remove `$dir_grow', " .
-         "so I cannot create dir `$dir_arg': $!";
+       die "Couldn't remove '$dir_grow', " .
+         "so I cannot create dir '$dir_arg': $!";
     }
 
     # $dir_grow does no longer exist, so the former dir must be writable
@@ -220,24 +225,24 @@ sub make_dir {                    # make directory or check if it exists
     pop @dir_grow;
     $dir_grow = File::Spec->catdir(@dir_grow);
 
-    die "`$dir_grow' is not writable, " .
-      "so directory `$dir_arg' can't be createdd."
+    die "'$dir_grow' is not writable, " .
+      "so directory '$dir_arg' can't be createdd."
        unless ( -w $dir_grow );
 
-    # former directory is writable, so `$dir_arg' can be created
+    # former directory is writable, so '$dir_arg' can be created
 
     File::Path::make_path( $dir_arg,
                           {
                            mask => oct('0700'),
                            verbose => $Args->{'verbose'},
                           }
-                        )      #  `mkdir -P'
-       or die "Could not create directory `$dir_arg': $!";
+                        )      #  'mkdir -P'
+       or die "Could not create directory '$dir_arg': $!";
 
     last DIRPARTS;
   }
 
-  die "`$dir_arg' is not a writable directory"
+  die "'$dir_arg' is not a writable directory"
     unless ( -d $dir_arg && -w $dir_arg );
 
   return $dir_arg;
@@ -252,7 +257,7 @@ sub next_temp_file {
   my $temp_basename = $Args->{'prefix'} . '_temp_' . $number;
   my $temp_file = File::Spec->catfile( $Temp->{'temp_dir'} ,
                                       $temp_basename );
-  $v->print( "next temporary file: `$temp_file'" );
+  $v->print( "next temporary file: '$temp_file'" );
   return $temp_file;
 }                              # end sub next_temp_file()
 
@@ -273,7 +278,7 @@ sub path2abs {
 
   die "path2abs(): argument is empty." unless ( $path );
 
-  # Perl does not support shell `~' for home dir
+  # Perl does not support shell '~' for home dir
   if ( $path =~ /
                  ^
                  ~
@@ -323,7 +328,7 @@ sub path2abs {
 
 
 sub run_lilypond {
-  # arg is the options collection for `lilypond' to run
+  # arg is the options collection for 'lilypond' to run
   # either from ly or pdf
 
   our ( $Temp, $v );
@@ -336,16 +341,16 @@ sub run_lilypond {
 
   # change to temp dir
   Cwd::chdir $Temp->{'temp_dir'} or
-      die "Could not change to temporary directory `" .
+      die "Could not change to temporary directory '" .
        $Temp->{'temp_dir'} . "': $!";
 
-  $v->print( "\n##### run of `lilypond " . $opts . "'" );
+  $v->print( "\n##### run of 'lilypond " . $opts . "'" );
   $output = `lilypond $opts 2>$temp_file`;
-  die "Program lilypond does not work, see `$temp_file': $?"
+  die "Program lilypond does not work, see '$temp_file': $?"
     if ( $? );
   chomp $output;
   &shell_handling($output, $temp_file);
-  $v->print( "##### end run of `lilypond'\n" );
+  $v->print( "##### end run of 'lilypond'\n" );
 
   # stay in temp dir
 } # end sub run_lilypond()
@@ -389,19 +394,19 @@ sub string2array {
 } # end string2array()
 
 
-sub usage {                    # for `--help'
+sub usage {                    # for '--help'
   our ( $Globals, $Args );
 
   my $p = $Globals->{'prog'};
   my $usage = EMPTYSTRING;
   $usage = '###### usage:' . "\n" if ( $Args->{'verbose'} );
   $usage .= qq*Options for $p:
-Read a `roff' file or standard input and transform `lilypond' parts
-(everything between `.lilypond start' and `.lilypond end') into
-`EPS'-files that can be read by groff using `.PSPIC'.
+Read a 'roff' file or standard input and transform 'lilypond' parts
+(everything between '.lilypond start' and '.lilypond end') into
+'EPS'-files that can be read by groff using '.PSPIC'.
 
-There is also a command `.lilypond include <file_name>' that can
-include a complete `lilypond' file into the `groff' document.
+There is also a command '.lilypond include <file_name>' that can
+include a complete 'lilypond' file into the 'groff' document.
 
 
 # Breaking options:
@@ -413,10 +418,10 @@ $p --license               # the license is GPL >= 3
 # Normal options:
 $p [options] [--] [filename ...]
 
-There are 2 options for influencing the way how the `EPS' files for the
-`roff' display are generated:
---ly2eps           `lilypond' generates `EPS' files directly (default)
---pdf2eps          `lilypond' generates a `PDF' file that is transformed
+There are 2 options for influencing the way how the 'EPS' files for the
+'roff' display are generated:
+--ly2eps           'lilypond' generates 'EPS' files directly (default)
+--pdf2eps          'lilypond' generates a 'PDF' file that is transformed
 
 -k|--keep_all      do not delete any temporary files
 -v|--verbose       print much information to STDERR
@@ -438,7 +443,7 @@ The directories set are created when they do not exist.
 } # end sub usage()
 
 
-sub version { # for `--version'
+sub version { # for '--version'
   our ( $Globals, $Legalese, $stdout, $Args );
   my $end;
   if ( $Globals->{'groff_version'} ) {
@@ -449,8 +454,8 @@ sub version { # for `--version'
 
   my $output = EMPTYSTRING;
   $output = "###### version:\n" if ( $Args->{'verbose'} );
-  $output .= "`" . $Globals->{'prog'} . "' version `" .
-    $Legalese->{'version'} . "' is part of `GNU groff'" . $end;
+  $output .= "'" . $Globals->{'prog'} . "' version '" .
+    $Legalese->{'version'} . "' is part of 'GNU groff'" . $end;
 
   $stdout->print($output);
 } # end sub version()
index 4da5ffe..2186288 100644 (file)
@@ -1,3 +1,22 @@
+2018-02-28  Werner LEMBERG  <wl@gnu.org>
+
+       * gperl.am (gperl): Use $(AM_V_GEN) to silence file generation.
+
+2015-08-22  Bernd Warken  <groff-bernd.warken-72@web.de>
+
+       * gperl.1.man: Rename `gperl.man'.
+
+       * gperl.am: Include renaming.
+
+2015-08-05  Bernd Warken  <groff-bernd.warken-72@web.de>
+
+       * gperl.am: Add `Last update'.  Setup Emacs mode.
+
+2015-04-03  Werner LEMBERG  <wl@gnu.org>
+
+       * gperl.man: Make it work in compatibility mode.
+       (EL): Fix typo.
+
 2014-10-11  Bernd Warken  <groff-bernd.warken-72@web.de>
 
        * gperl.pl: Version 1.2.6
@@ -66,8 +85,7 @@
 ________________________________________________________________________
 License
 
-Copyright (C) 2014
-       Free Software Foundation, Inc.
+Copyright (C) 2014-2018 Free Software Foundation, Inc.
 Written by Bernd Warken <groff-bernd.warken-72@web.de>.
 
 Copying and distribution of this file, with or without
diff --git a/contrib/gperl/Makefile.sub b/contrib/gperl/Makefile.sub
deleted file mode 100644 (file)
index 4e8fd07..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-# Makefile.sub for `gperl' (preprocessor for added Perl parts)
-
-# File position: <groff-source>/contrib/gperl/Makefile.sub
-
-# Copyright (C) 2014  Free Software Foundation, Inc.
-# Written by Bernd Warken <groff-bernd.warken-72@web.de>.
-
-# This file is part of `gperl' which is part of `groff'.
-
-# `groff' is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 2 of the License, or
-# (at your option) any later version.
-
-# `groff' 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
-# <http://www.gnu.org/licenses/gpl-2.0.html>.
-
-########################################################################
-
-MAN1=gperl.n
-
-MOSTLYCLEANADD=gperl $(MAN1)
-
-# not all make programs have $(RM) predefined.
-RM=rm -f
-
-all: gperl
-
-gperl: gperl.pl
-       sed -f "$(SH_DEPS_SED_SCRIPT)" \
-            -e "s|@g@|$(g)|g" \
-           -e "s|@BINDIR@|$(DESTDIR)$(bindir)|g" \
-           -e "s|@VERSION@|$(version)$(revision)|g" \
-           -e "$(SH_SCRIPT_SED_CMD)" \
-           $(srcdir)/gperl.pl >$@; \
-       chmod +x $@
-
-.PHONY: install_data
-install_data: gperl
-       -test -d $(DESTDIR)$(bindir) || $(mkinstalldirs) $(DESTDIR)$(bindir)
-       $(RM) $(DESTDIR)$(bindir)/gperl
-       $(INSTALL_SCRIPT) gperl $(DESTDIR)$(bindir)/gperl
-
-.PHONY: uninstall_sub
-uninstall_sub:
-       $(RM) $(DESTDIR)$(bindir)/gperl
-
-
-########################################################################
-# Emacs settings
-########################################################################
-#
-# Local Variables:
-# mode: makefile
-# End:
similarity index 59%
rename from contrib/gperl/gperl.man
rename to contrib/gperl/gperl.1.man
index 3600f4d..ba5cac4 100644 (file)
@@ -1,86 +1,70 @@
-.TH GPERL @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
+.TH GPERL @MAN1EXT@ "@MDATE@" "groff @VERSION@"
 .SH NAME
 gperl \- groff preprocessor for Perl parts in roff files
 .
-.\" The .SH was moved to this place in order to appease `apropos'.
-.
-.\" --------------------------------------------------------------------
-.\" Legalese
-.\" --------------------------------------------------------------------
-.
-.de au
-This file was written by
-.MT groff-bernd.warken-72@web.de
-Bernd Warken
-.ME .
-..
-.
-.de co
-Copyright \[co] 2014 Free Software Foundation, Inc.
-.
-.P
-This file is part of
-.IR \%gperl ,
-which is part of
-.IR \%groff ,
-a free software project.
-.
-You can redistribute it and/or modify it under the terms of the
-.nh
-.B "GNU General Public License"
-.hy
-as published by the
-.nh
-.BR "Free Software Foundation" ,
-.hy
-version\~2.
-.
-.P
-The license text is available in the internet at
-.UR http://www.gnu.org/licenses/gpl-2.0.html
-.UE .
-..
-.
-.\" --------------------------------------------------------------------
+.\" ====================================================================
+.\" Legal Terms
+.\" ====================================================================
+.\"
+.\" Copyright (C) 2014-2018 Free Software Foundation, Inc.
+.\"
+.\" This file is part of gperl, which is part of groff, a free software
+.\" project.
+.\"
+.\" You can redistribute it and/or modify it under the terms of the GNU
+.\" General Public License as published by the Free Software Foundation,
+.\" version 2.
+.\"
+.\" The license text is available in the internet at
+.\" <http://www.gnu.org/licenses/gpl-2.0.html>.
+.
+.\" ====================================================================
 .\" Characters
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .\" Ellipsis ...
-.ie t .ds EL \fS\N'188'\fP
-.el .ds EL \&.\|.\|.\&\
+.ie t .ds EL \fS\N'188'\fP\"
+.el .ds EL \&.\|.\|.\&\"
 .\" called with \*(EL
 .
 .\" Bullet
-.ie t .ds BU \[bu]
+.ie t .ds BU \(bu
 .el .ds BU *
-.\" used in `.IP \*(BU 2m' (former .Topic)
+.\" used in '.IP \*(BU 2m' (former .Topic)
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "SYNOPSIS"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .SY gperl
-.OP \-
-.OP \-\-
-.OP \& "\%filespec \*(EL"
+.RI [ filespec
+\*(EL]
 .YS
 .
-.BR "gperl -h" | --help
-.br
-.BR "gperl -v" | --version
+.SY gperl
+.B \-h
+.SY gperl
+.B \-\-help
+.YS
 .
+.SY gperl
+.B \-v
+.SY gperl
+.B \-\-version
+.YS
 .
-.\" --------------------------------------------------------------------
+.
+.\" ====================================================================
 .SH DESCRIPTION
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
-This is a preprocesor for
+This is a preprocessor for
 .BR \%groff (@MAN1EXT@).
 .
-It allows to add
+It allows the use of
 .BR perl (7)
-code into
+code in
 .BR groff (7)
 files.
 .
@@ -94,9 +78,9 @@ based on the arguments at a final line of a
 .IR "Perl part" .
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "OPTIONS"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 So far, there are only
 .I filespec
@@ -113,7 +97,7 @@ character for standard input.
 .
 As usual, the argument
 .B \-\-
-can be used in order to let all fowllowing arguments mean file names,
+can be used in order to let all following arguments mean file names,
 even if the names begin with a minus character
 .BR \- .
 .
@@ -128,22 +112,22 @@ All other arguments will be ignored by that.
 .
 These
 .I breaking
-options are heree
+options are here
 .
 .TP
-.B -h\~\fR|\fB\~--help
+.B \-h\~\fR|\fB\~\-\-help
 Print help information with a short explanation of options to
 standard output.
 .
 .
 .TP
-.B -v\~\fR|\fB\~--version
+.B \-v\~\fR|\fB\~\-\-version
 Print version information to standard output.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "PERL PARTS"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .I Perl
 parts in
@@ -157,9 +141,9 @@ and an
 command.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Starting Perl Mode"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The starting
 .I Perl request
@@ -168,15 +152,15 @@ can either be without arguments, or by a request that has the term
 as its only argument.
 .RS
 .IP \*(BU 2m
-.B \&.Perl
+.B .Perl
 .IP \*(BU 2m
-.B \&.Perl start
+.B .Perl start
 .RE
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Ending Perl Mode without Storage"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 A
 .B .Perl
@@ -191,21 +175,21 @@ that's possible, but not necessary.
 .
 .RS
 .IP \*(BU 2m
-.B \&.Perl stop
+.B .Perl stop
 .IP \*(BU 2m
-.BI \&.Perl " other_than_start"
+.BI .Perl " other_than_start"
 .RE
 .
 The argument
 .I other_than_start
 can additionally be used as a
 .I groff
-string variable name for storage \[em] see next section.
+string variable name for storage \(em see next section.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Ending Perl Mode with Storage"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 A useful feature of
 .B gperl
@@ -217,7 +201,7 @@ is to store one or more results from the
 The output of a
 .I Perl part
 can be got with backticks
-.BR `...` .
+.BR \[ga]...\[ga] .
 .
 .
 .P
@@ -228,7 +212,7 @@ program.
 .
 This pseudo-printing output can have several lines, due to printed
 line breaks with
-.BR \[rs]n .
+.BR \(rsn .
 .
 By that, the output of a Perl run should be stored into a Perl array,
 with a single line for each array member.
@@ -288,7 +272,7 @@ generates a
 storage line
 .RS
 .EX
-\&\fB.ds \fIvar_name content
+.BI .ds " var_name content"
 .EE
 .RE
 .
@@ -297,7 +281,7 @@ In
 the following groff command is generated
 .RS
 .EX
-\&\fB.nr \fIvar_name content
+.BI .nr " var_name content"
 .EE
 .RE
 .
@@ -308,7 +292,7 @@ We present argument collections in the following.
 You can add as first argument for all
 .BR stop .
 .
-We omit this additional element. 
+We omit this additional element.
 .
 .
 .P
@@ -396,9 +380,9 @@ by
 .RE
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Printing towards STDERR is without Storage"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The printing towards
 .IR STDERR ,
@@ -406,12 +390,12 @@ The printing towards
 .
 All error information goes to the real normal
 .IR "standard error" ,
-without other automatical storage.
+without other automatic storage.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "EXAMPLES"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 A possible
 .I Perl part
@@ -432,7 +416,7 @@ after
 .
 .P
 This stores the result
-.B \[rq]some data\[rq]
+.B \(rqsome data\(rq
 into the
 .I roff string
 called
@@ -457,10 +441,10 @@ with several outputs is:
 .RS
 .EX
 \&.Perl start
-print \[rq]first\[rs]n\[rq];
-print \[rq]second line\[rs]n\[rq];
-print \[rq]3\[rs]n\[rq];
-\&.Perl var1 var2 .nr var3 
+print \(rqfirst\(rsn\(rq;
+print \(rqsecond line\(rsn\(rq;
+print \(rq3\(rsn\(rq;
+\&.Perl var1 var2 .nr var3
 .EE
 .RE
 .
@@ -481,12 +465,22 @@ command lines are created:
 .RE
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
+.SH AUTHORS
+.\" ====================================================================
+.B gperl
+was written by
+.MT groff\-bernd.warken\-72@\:web.de
+Bernd Warken
+.ME .
+.
+.
+.\" ====================================================================
 .SH "SEE ALSO"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .P
-Man\-pages related to
+Man pages related to
 .I groff
 are
 .BR \%groff (@MAN1EXT@),
@@ -504,20 +498,11 @@ are
 .BR \%perl (@MAN7EXT@).
 .
 .
-.\" --------------------------------------------------------------------
-.SH "COPYING"
-.\" --------------------------------------------------------------------
-.co
-.\" --------------------------------------------------------------------
-.SH "AUTHORS"
-.\" --------------------------------------------------------------------
-.au
-.
-.
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .\" Emacs settings
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .\" Local Variables:
 .\" mode: nroff
 .\" End:
+.\" vim: set filetype=groff:
diff --git a/contrib/gperl/gperl.am b/contrib/gperl/gperl.am
new file mode 100644 (file)
index 0000000..5689386
--- /dev/null
@@ -0,0 +1,56 @@
+# Automake rules for 'gperl' (preprocessor for added Perl parts)
+
+# File position: <groff-source>/contrib/gperl/gperl.am
+
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+# Written by Bernd Warken <groff-bernd.warken-72@web.de>.
+# Automake migration by Bertrand Garrigues
+
+# Last update: 22 Aug 2015
+
+# This file is part of 'gperl' which is part of 'groff'.
+
+# 'groff' is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 2 of the License, or
+# (at your option) any later version.
+
+# 'groff' 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
+# <http://www.gnu.org/licenses/gpl-2.0.html>.
+
+########################################################################
+
+bin_SCRIPTS += gperl
+man1_MANS += contrib/gperl/gperl.1
+EXTRA_DIST += \
+  contrib/gperl/ChangeLog \
+  contrib/gperl/gperl.1.man \
+  contrib/gperl/gperl.pl
+
+gperl: $(top_srcdir)/contrib/gperl/gperl.pl shdeps.sed
+       $(AM_V_GEN)$(RM) $@ \
+       && sed -f "$(SH_DEPS_SED_SCRIPT)" \
+              -e "s|[@]g[@]|$(g)|g" \
+              -e "s|[@]BINDIR[@]|$(DESTDIR)$(bindir)|g" \
+              -e "s|[@]VERSION[@]|$(VERSION)|g" \
+              -e "$(SH_SCRIPT_SED_CMD)" \
+              $(top_srcdir)/contrib/gperl/gperl.pl \
+              >$@ \
+       && chmod +x $@
+
+
+########################################################################
+# Editor settings
+########################################################################
+#
+# Local Variables:
+# mode: makefile-automake
+# fill-column: 72
+# End:
+# vim: set filetype=automake textwidth=72:
index 4571f64..fdb93ff 100755 (executable)
@@ -5,20 +5,20 @@
 # Source file position: <groff-source>/contrib/gperl/gperl.pl
 # Installed position: <prefix>/bin/gperl
 
-# Copyright (C) 2014  Free Software Foundation, Inc.
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
 
 # Written by Bernd Warken <groff-bernd.warken-72@web.de>.
 
 my $version = '1.2.6';
 
-# This file is part of `gperl', which is part of `groff'.
+# This file is part of 'gperl', which is part of 'groff'.
 
-# `groff' is free software; you can redistribute it and/or modify it
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
 # the Free Software Foundation, either version 2 of the License, or
 # (at your option) any later version.
 
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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.
@@ -38,7 +38,7 @@ use File::Temp qw/ tempfile tempdir /;
 # needed for temporary dir
 use File::Spec;
 
-# for `copy' and `move'
+# for 'copy' and 'move'
 use File::Copy;
 
 # for fileparse, dirname and basename
@@ -65,7 +65,7 @@ our $File_split_env_sh;
 our $File_version_sh;
 our $Groff_Version;
 
-my $before_make;               # script before run of `make'
+my $before_make;               # script before run of 'make'
 {
   my $at = '@';
   $before_make = 1 if '@VERSION@' eq "${at}VERSION${at}";
@@ -91,15 +91,15 @@ if ($before_make) {
 
 foreach (@ARGV) {
   if ( /^(-h|--h|--he|--hel|--help)$/ ) {
-    print q(Usage for the `gperl' program:);
+    print q(Usage for the 'gperl' program:);
     print 'gperl [-] [--] [filespec...] normal file name arguments';
     print 'gperl [-h|--help]        gives usage information';
     print 'gperl [-v|--version]     displays the version number';
-    print q(This program is a `groff' preprocessor that handles Perl ) .
-      q(parts in `roff' files.);
+    print q(This program is a 'groff' preprocessor that handles Perl ) .
+      q(parts in 'roff' files.);
     exit;
   } elsif ( /^(-v|--v|--ve|--ver|--vers|--versi|--versio|--version)$/ ) {
-    print q(`gperl' version ) . $version;
+    print q('gperl' version ) . $version;
     exit;
   }
 }
@@ -138,7 +138,7 @@ foreach (<>) {
   my $line = $_;
   my $is_dot_Perl = $line =~ /^[.']\s*Perl(|\s+.*)$/;
 
-  unless ( $is_dot_Perl ) {    # not a `.Perl' line
+  unless ( $is_dot_Perl ) {    # not a '.Perl' line
     if ( $perl_mode ) {                # is running in Perl mode
       print OUT $line;
     } else {                   # normal line, not Perl-related
@@ -149,7 +149,7 @@ foreach (<>) {
 
 
   ##########
-  # now the line is a `.Perl' line
+  # now the line is a '.Perl' line
 
   my $args = $line;
   $args =~ s/\s+$//;   # remove final spaces
@@ -160,11 +160,11 @@ foreach (<>) {
   ##########
   # start Perl mode
   if ( @args == 0 || @args == 1 && $args[0] eq 'start' ) {
-    # For `.Perl' no args or first arg `start' means opening `Perl' mode.
+    # For '.Perl' no args or first arg 'start' means opening 'Perl' mode.
     # Everything else means an ending command.
     if ( $perl_mode ) {
-      # `.Perl' was started twice, ignore
-      print STDERR q(`.Perl' starter was run several times);
+      # '.Perl' was started twice, ignore
+      print STDERR q('.Perl' starter was run several times);
       next;
     } else {   # new Perl start
       $perl_mode = 1;
@@ -183,15 +183,15 @@ foreach (<>) {
     next;
   }
 
-  $perl_mode = 0;      # `Perl' stop calling is correct
-  close OUT;           # close the storing of `Perl' commands
+  $perl_mode = 0;      # 'Perl' stop calling is correct
+  close OUT;           # close the storing of 'Perl' commands
 
   ##########
-  # run this `Perl' part, later on about storage of the result
+  # run this 'Perl' part, later on about storage of the result
   # array stores prints with \n
   my @print_res = `perl $out_file`;
 
-  # remove `stop' arg if exists
+  # remove 'stop' arg if exists
   shift @args if ( $args[0] eq 'stop' );
 
   if ( @args == 0 ) {
index b2d95b7..c7ec8d5 100644 (file)
@@ -1,3 +1,22 @@
+2018-02-28  Werner LEMBERG  <wl@gnu.org>
+
+       * gpinyin.am (gpinyin): Use $(AM_V_GEN) to silence file generation.
+
+2015-08-22  Bernd Warken  <groff-bernd.warken-72@web.de>
+
+       * gpinyin.1.man: Rename `gpinyin.man'.
+
+       * gpinyin.am: include renaming.
+
+2015-08-05  Bernd Warken  <groff-bernd.warken-72@web.de>
+
+       * gpinyin.am: Add `Last update'.  Setup Emacs mode.
+
+2015-04-03  Werner LEMBERG  <wl@gnu.org>
+
+       * gpinyin.man: Make it work in compatibility mode.
+       (EL): Fix typo.
+
 2014-10-11  Werner LEMBERG  <wl@gnu.org>
 
        * Makefile.sub (gpinyin): Handle `gpinyin_dir'.
@@ -55,8 +74,7 @@
 ________________________________________________________________________
 License
 
-Copyright (C) 2014
-       Free Software Foundation, Inc.
+Copyright (C) 2014-2018 Free Software Foundation, Inc.
 Written by Bernd Warken <groff-bernd.warken-72@web.de>.
 
 Copying and distribution of this file, with or without
diff --git a/contrib/gpinyin/Makefile.sub b/contrib/gpinyin/Makefile.sub
deleted file mode 100644 (file)
index 4c499de..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-# Makefile.sub for `gpinyin' (preprocessor for added Perl parts)
-
-# File position: <groff-source>/contrib/gpinyin/Makefile.sub
-
-# Copyright (C) 2014  Free Software Foundation, Inc.
-# Written by Bernd Warken <groff-bernd.warken-72@web.de>.
-
-# This file is part of `gpinyin' which is part of `groff'.
-
-# `groff' is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 2 of the License, or
-# (at your option) any later version.
-
-# `groff' 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
-# <http://www.gnu.org/licenses/gpl-2.0.html>.
-
-########################################################################
-
-MAN1=gpinyin.n
-
-MOSTLYCLEANADD=gpinyin $(MAN1)
-
-# not all make programs have $(RM) predefined.
-RM=rm -f
-
-all: gpinyin
-
-gpinyin: gpinyin.pl
-       sed -f "$(SH_DEPS_SED_SCRIPT)" \
-           -e "s|@g@|$(g)|g" \
-           -e "s|@BINDIR@|$(DESTDIR)$(bindir)|g" \
-           -e "s|@gpinyin_dir@|$(DESTIR)$(gpinyin_dir)|" \
-           -e "s|@VERSION@|$(version)$(revision)|g" \
-           -e "$(SH_SCRIPT_SED_CMD)" \
-           $(srcdir)/gpinyin.pl >$@; \
-       chmod +x $@
-
-.PHONY: install_data
-install_data: gpinyin subs.pl
-       test -d $(DESTDIR)$(bindir) || \
-         $(mkinstalldirs) $(DESTDIR)$(bindir); \
-       $(RM) $(DESTDIR)$(bindir)/gpinyin; \
-       $(INSTALL_SCRIPT) gpinyin $(DESTDIR)$(bindir)/gpinyin; \
-       test -d $(DESTDIR)$(gpinyin_dir) || \
-         $(mkinstalldirs) $(DESTDIR)$(gpinyin_dir); \
-       $(RM) $(DESTDIR)$(gpinyin_dir)/subs.pl; \
-       $(INSTALL_SCRIPT) $(srcdir)/subs.pl \
-         $(DESTDIR)$(gpinyin_dir)/subs.pl
-
-.PHONY: uninstall_sub
-uninstall_sub:
-       $(RM) $(DESTDIR)$(bindir)/gpinyin; \
-       $(RM) $(DESTDIR)$(gpinyin_dir)/subs.pl;
-       -test -d $(DESTDIR)$(gpinyin_dir) && \
-         rmdir $(DESTDIR)$(gpinyin_dir)
-
-
-########################################################################
-# Emacs settings
-########################################################################
-#
-# Local Variables:
-# mode: makefile
-# End:
diff --git a/contrib/gpinyin/gpinyin.1.man b/contrib/gpinyin/gpinyin.1.man
new file mode 100644 (file)
index 0000000..db634fd
--- /dev/null
@@ -0,0 +1,345 @@
+'\" t
+.TH GPINYIN @MAN1EXT@ "@MDATE@" "groff @VERSION@"
+.SH NAME
+gpinyin \- use Hanyu Pinyin Chinese in roff
+.
+.\" ====================================================================
+.\" Legal Terms
+.\" ====================================================================
+.\"
+.\" Copyright (C) 2014-2018 Free Software Foundation, Inc.
+.\"
+.\" This file is part of gpinyin, which is part of groff, a free
+.\" software project.
+.\"
+.\" You can redistribute it and/or modify it under the terms of the GNU
+.\" General Public License version 2 as published by the Free Software
+.\" Foundation.
+.\"
+.\" The license text is available in the internet at
+.\" <http://www.gnu.org/licenses/gpl-2.0.html>.
+.
+.\" ====================================================================
+.\" Local definitions
+.\" ====================================================================
+.
+.\" Define a string for the TeX logo.
+.ie t .ds TeX T\h'-.1667m'\v'.224m'E\v'-.224m'\h'-.125m'X
+.el   .ds TeX TeX
+.
+.\" Define a string for an ellipsis.
+.ie t .ds EL \f[S]\N'188'\f[P]\"
+.el .ds EL \&.\|.\|.\&\"
+.
+.
+.\" ====================================================================
+.SH "SYNOPSIS"
+.\" ====================================================================
+.
+.SY gpinyin
+.RI [ input-file
+\*(EL]
+.YS
+.
+.SY gpinyin
+.B \-h
+.SY gpinyin
+.B \-\-help
+.YS
+.
+.SY gpinyin
+.B \-v
+.SY gpinyin
+.B \-\-version
+.YS
+.
+.
+.\" ====================================================================
+.SH DESCRIPTION
+.\" ====================================================================
+.
+.B gpinyin
+is a preprocessor for
+.BR \%groff (@MAN1EXT@)
+that facilitates use of the Hanyu Pinyin
+.BR groff (7)
+files.
+.
+Pinyin is a method for writing the Chinese language with the Latin
+alphabet.
+.
+The Chinese language consists of more than four hundred syllables,
+each with one of five different tones.
+.
+In Pinyin,
+a syllable is written in the Latin alphabet and a numeric tone indicator
+can be appended to each syllable.
+.
+.
+.P
+Each
+.I input-file
+is a file name or the hyphen-minus character \[lq]\-\[rq] to indicate
+that standard input should be read.
+.
+As usual,
+the argument \[lq]\-\-\[rq] can be used in order to force interpretation
+of all remaining arguments as file names,
+even if an
+.I input-file
+argument begins with the hyphen-minus character.
+.
+.
+.\" ====================================================================
+.SS "Pinyin Sections"
+.\" ====================================================================
+.
+Pinyin sections in
+.I groff
+files are enclosed by two
+.B .pinyin
+requests with different arguments.
+.
+The starting request is
+.RS
+.EX
+\&.pinyin start
+.EE
+.RE
+or
+.RS
+.EX
+\&.pinyin begin
+.EE
+.RE
+and the ending request is
+.RS
+.EX
+\&.pinyin stop
+.EE
+.RE
+or
+.RS
+.EX
+\&.pinyin end
+.EE
+.RE
+\&.
+.
+.
+.\" ====================================================================
+.SS "Syllables"
+.\" ====================================================================
+.
+The spoken Chinese language is based on about 411
+.IR syllables ;
+see
+.UR http://\:en.wikipedia.org/\:wiki/\:Pinyin_table
+.UE .
+.
+.
+.P
+In Pinyin,
+each syllable consists of one to six letters from the Latin alphabet;
+these letters comprise the fifty-two upper- and lowercase letters from
+the ASCII character set,
+plus the letter \[lq]U\[rq] with dieresis (umlaut) in both cases\[em]in
+other words,
+the members of the set \[lq][a\[en]zA\[en]Z\[:u]\[:U]]\[rq].
+.
+.
+.P
+In
+.I groff
+input,
+all ASCII letters are written as themselves.
+.
+The \[lq]u with dieresis\[rq] can be written as
+\[lq]\e[:u]\[rq]
+in lowercase or
+\[lq]\e[:U]\[rq]
+in uppercase.
+.
+Within
+.B .pinyin
+sections,
+.I gpinyin
+supports the form
+\[lq]ue\[rq]
+for lowercase and the forms
+\[lq]Ue\[rq]
+and
+\[lq]UE\[rq]
+for uppercase.
+.
+.
+.\" ====================================================================
+.SS "Tones"
+.\" ====================================================================
+.
+Each syllable has exactly one of five
+.IR tones .
+.
+The fifth tone is not explicitly written at all,
+but each of the first through fourth tones is indicated with a diacritic
+above a specific vowel within the syllable.
+.
+.
+.P
+In a
+.I gpinyin
+source file,
+these tones are written by adding a numeral in the range 0 to 5 after
+the syllable.
+.
+The tone numbers 1 to 4 are transformed into accents above vowels in the
+output.
+.
+The tone numbers 0 and 5 are synonymous.
+.
+.
+.P
+The following table summarizes the tones.
+.
+Some output devices will not be able to render every output example.
+.
+.
+.P
+.if t .ne 8 \" Try to keep the table on one page for printed output.
+.TS
+l l l l l.
+Tone   Description     Diacritic       Example Input   Example Output
+_
+first  flat    \[a-]   ma1     m\[u0061_0304]
+second rising  \[aa]   ma2     m\[u0061_0301]
+third  falling-rising  \[ah]   ma3     m\[u0061_030C]
+fourth falling \[ga]   ma4     m\[u0061_0300]
+fifth  neutral (none)  ma0     ma
+\^     \^      \^      ma5     \^
+.TE
+.
+.
+.P
+The neutral tone number can be omitted from a word-final syllable,
+but not otherwise.
+.
+.
+.\" ====================================================================
+.SH OPTIONS
+.\" ====================================================================
+.
+.TP
+.B \-h
+.TQ
+.B \-\-help
+Print usage information and exit.
+.
+.
+.TP
+.B \-v
+.TQ
+.B \-\-version
+Print version information and exit.
+.
+.
+.\" ====================================================================
+.SH AUTHORS
+.\" ====================================================================
+.
+.B gpinyin
+was written by
+.MT <groff\-bernd.warken\-72@\:web.de>
+Bernd Warken
+.ME .
+.
+.
+.\" ====================================================================
+.SH "SEE ALSO"
+.\" ====================================================================
+.
+Useful documents on the World Wide Web related to Pinyin include
+.RS 4n
+.br
+.UR http://\:en.wikipedia.org/\:wiki/\:Pinyin
+\[lq]Pinyin\[rq] (Wikipedia)
+.UE ,
+.
+.br
+.UR http://\:en.wikipedia.org/\:wiki/\:Pinyin_table
+\[lq]Pinyin table\[rq] (Wikipedia)
+.UE ,
+.
+.\" XXX: dead link
+.\".br
+.\".UR http://\:www.sino.uni\-heidelberg.de/\:course_resources/\:s02/\:\
+.\"py\-vowels.htm
+.\".I Unicode vowels for Pinyin
+.\".UE ,
+.\".
+.br
+.UR http://\:www.foolsworkshop.com/\:ptou/\:index.html
+.I Pinyin to Unicode
+.UE ,
+.
+.br
+.UR http://\:www.mandarintools.com/
+.I On-line Chinese Tools
+.UE ,
+.
+.br
+.UR http://\:www.pinyin.info/\:index.html
+.I Pinyin.info: a guide to the writing of Mandarin Chinese in \
+romanization
+.UE ,
+.
+.br
+.UR http://\:www.pinyin.info/\:rules/\:where.html
+\[lq]Where do the tone marks go?\[rq] (Pinyin.info)
+.UE ,
+.
+.br
+.UR http://\:git.savannah.gnu.org/\:gitweb/\:\
+?p=cjk.git;a=blob_plain;f=doc/\:pinyin.txt;hb=HEAD
+pinyin.txt from the CJK macro package for \*[TeX]
+.UE ,
+.br
+.RS -4n
+and
+.RE
+.
+.br
+.UR http://\:git.savannah.gnu.org/\:gitweb/\:\
+?p=cjk.git;a=blob_plain;f=texinput/p\:inyin.sty;hb=HEAD
+pinyin.sty from the CJK macro package for \*[TeX]
+.UE .
+.
+.RE
+.
+.P
+.BR \%groff (@MAN1EXT@),
+.BR \%grog (@MAN1EXT@),
+and
+.BR \%groffer (@MAN1EXT@)
+explain how to view
+.I roff
+documents.
+.
+.
+.P
+.BR \%groff (@MAN7EXT@)
+and
+.BR \%groff_char (@MAN7EXT@)
+are comprehensive references covering the language elements of GNU
+.I roff
+and the available glyph repertoire,
+respectively.
+.
+.
+.\" ====================================================================
+.\" Editor settings
+.\" ====================================================================
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" End:
+.\" vim: set filetype=groff:
diff --git a/contrib/gpinyin/gpinyin.am b/contrib/gpinyin/gpinyin.am
new file mode 100644 (file)
index 0000000..a46e17f
--- /dev/null
@@ -0,0 +1,65 @@
+# Automake rules for 'gpinyin' (preprocessor for added Perl parts)
+
+# File position: <groff-source>/contrib/gpinyin/gpinyin.am
+
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+# Written by Bernd Warken <groff-bernd.warken-72@web.de>.
+# Moved to automake by Bertrand Garrigues
+
+# Last update: 22 Aug 2015
+
+# This file is part of 'gpinyin' which is part of 'groff'.
+
+# 'groff' is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 2 of the License, or
+# (at your option) any later version.
+
+# 'groff' 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
+# <http://www.gnu.org/licenses/gpl-2.0.html>.
+
+########################################################################
+
+gpinyin_srcdir = $(top_srcdir)/contrib/gpinyin
+bin_SCRIPTS += gpinyin
+gpinyindir = $(gpinyin_dir)
+dist_gpinyin_DATA = contrib/gpinyin/subs.pl
+man1_MANS += contrib/gpinyin/gpinyin.1
+EXTRA_DIST += \
+  contrib/gpinyin/ChangeLog \
+  contrib/gpinyin/gpinyin.1.man \
+  contrib/gpinyin/gpinyin.pl
+
+gpinyin: contrib/gpinyin/gpinyin.pl
+       $(AM_V_GEN)sed -f "$(SH_DEPS_SED_SCRIPT)" \
+           -e "s|[@]g[@]|$(g)|g" \
+           -e "s|[@]BINDIR[@]|$(DESTDIR)$(bindir)|g" \
+           -e "s|[@]gpinyin_dir[@]|$(DESTIR)$(gpinyin_dir)|" \
+           -e "s|[@]VERSION[@]|$(VERSION)|g" \
+           -e "$(SH_SCRIPT_SED_CMD)" \
+           $(gpinyin_srcdir)/gpinyin.pl \
+           >$@ \
+       && chmod +x $@
+
+uninstall_groffdirs: uninstall-gpinyin-hook
+uninstall-gpinyin-hook:
+       if test -d $(DESTDIR)$(gpinyindir); then \
+         rmdir $(DESTDIR)$(gpinyindir); \
+       fi
+
+
+########################################################################
+# Editor settings
+########################################################################
+#
+# Local Variables:
+# mode: makefile-automake
+# fill-column: 72
+# End:
+# vim: set filetype=automake textwidth=72:
diff --git a/contrib/gpinyin/gpinyin.man b/contrib/gpinyin/gpinyin.man
deleted file mode 100644 (file)
index 79371e6..0000000
+++ /dev/null
@@ -1,414 +0,0 @@
-.TH GPINYIN @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
-.SH NAME
-gpinyin \- Chinese European-like writing within groff
-.
-.SH "SYNOPSIS"
-.\" The .SH was moved to this place in order to appease `apropos'.
-.
-.\" --------------------------------------------------------------------
-.\" Legalese
-.\" --------------------------------------------------------------------
-.
-.de co
-Copyright \[co] 2014 Free Software Foundation, Inc.
-
-This file is part of gpinyin, which is part of groff, a free software
-project.
-
-You can redistribute it and/or modify it under the terms of the GNU
-General Public License version 2 as published by the Free Software
-Foundation.
-
-The license text is available in the internet at
-.UR http://www.gnu.org/licenses/gpl-2.0.html
-.UE .
-..
-.
-.de au
-This file was written by Bernd Warken <groff-bernd.warken-72@web.de>.
-..
-.
-.\" --------------------------------------------------------------------
-.\" Characters
-.\" --------------------------------------------------------------------
-.
-.ie t .ds EL \f[S]\N'188'\f[P]
-.el .ds EL \&.\|.\|.\&\
-.\" ie t .char \[Ellipsis] \f[S]\N'188'\f[P]
-.\" el .char \[Ellipsis] \&.\|.\|.\&\
-.\" called with \[Ellipsis]
-.
-.
-.\" --------------------------------------------------------------------
-.\" SH "SYNOPSIS"
-.\" --------------------------------------------------------------------
-.
-.SY gpinyin
-.OP \-
-.OP \-\-
-.OP \& "\%filespec \*(EL"
-.YS
-.
-.BR "gpinyin -h" | --help
-.br
-.BR "gpinyin -v" | --version
-.
-.
-.\" --------------------------------------------------------------------
-.SH DESCRIPTION
-.\" --------------------------------------------------------------------
-.
-This is a preprocesor for
-.BR \%groff (@MAN1EXT@).
-.
-It allows to add the Chinese European-like language
-.I Pinyin
-into
-.BR groff (7)
-files.
-.
-.
-.\" --------------------------------------------------------------------
-.SH "OPTIONS"
-.\" --------------------------------------------------------------------
-.
-.\" --------------------------------------------------------------------
-.SS "Breaking Options"
-.\" --------------------------------------------------------------------
-.
-An option is
-.IR breaking ,
-when the program just writes the information that was asked for and
-then stops.
-.
-All other arguments will be ignored by that.
-.
-The
-.I breaking
-options are here
-.
-.TP
-.B -h\~\fR|\fB\~--help
-Print help information with a short explanation of options to standard
-output.
-.
-.
-.TP
-.B -v\~\fR|\fB\~--version
-Print version information to standard output.
-.
-.
-.\" --------------------------------------------------------------------
-.SS "Filespec Options"
-.\" --------------------------------------------------------------------
-.
-So far, there are only
-.I filespec
-and
-.I breaking
-options.
-.
-.
-.P
-.I filespec
-arguments are file names or the minus sign
-.B \-
-for standard input.
-.
-As usual, the argument
-.B \-\-
-can be used in order to let all following arguments mean file names,
-even if the names begin with a minus character
-.BR \- .
-.
-.
-.\" --------------------------------------------------------------------
-.SH "PINYIN PARTS"
-.\" --------------------------------------------------------------------
-.
-.I Pinyin
-parts in
-.I groff files
-are enclosed by two
-.B .pinyin
-requests with different arguments.
-.
-The starting request is
-.RS
-.EX
-\e.pinyin start
-.EE
-.RE
-or
-.RS
-.EX
-\e.pinyin begin
-.EE
-.RE
-and the ending request is
-.RS
-.EX
-\e.pinyin stop
-.EE
-.RE
-or
-.RS
-.EX
-\e.pinyin end
-.EE
-.RE
-.
-.
-.\" --------------------------------------------------------------------
-.SH "PINYIN DETAILS"
-.\" --------------------------------------------------------------------
-.
-.I Pinyin
-is used for writing the Chinese language in a European-like
-(romanization) way.
-.
-The Chinese language consists of more than 400 syllables, each with
-one of 5 different tones.
-.
-In
-.IR Pinyin ,
-such toned syllables can be appended to word-like connections.
-.
-.
-.\" --------------------------------------------------------------------
-.SS "Syllables"
-.\" --------------------------------------------------------------------
-.
-The Chinese language is based on about 411 defined
-.IR syllables ,
-see
-.UR http://en.wikipedia.org/wiki/Pinyin_table
-.UE .
-.
-.
-.P
-In
-.IR Pinyin ,
-each syllable consists of 1 to 6 European-like letters, the normal
-ASCII characters in upper and lower case, the only unusual characters
-are the
-.BR "U dieresis " ( umlaut )
-in both cases, i.e.
-.BR [a-zA-ZüÜ] .
-.
-.
-.P
-In the
-.B groff gpinyin
-input,
-all ASCII letters are written as usual.
-.
-But the
-.BR u / U
-.B dieresis
-can be written as either as
-.B \e[\[aq]u] or
-.B ue
-in lower case or
-.BR \e[\[aq]U] ,
-.BR Ue ,
-.B UE
-in upper case.
-.
-.
-.\" --------------------------------------------------------------------
-.SS "Tones"
-.\" --------------------------------------------------------------------
-.
-Each syllable has exactly one of 5 defined
-.IR tones .
-.
-The 5th tone is not written at all, but each tone 1 to 4 is written
-as an accent above a defined vowel within the syllable.
-.
-.
-.P
-In the source file, these tones are written by adding a number 0 to 5
-after the syllable name.
-.
-.
-.P
-In each writing, the tone numbers 1 to 4 are transformed into accents
-above vowels.
-.
-.
-.P
-The 1st tone is the horizontal macron
-.BR \e[a\-]
-.B \[a-] ,
-similar to a minus or sub character, but on top of the vowel.
-.
-In each source file, write the 1st tone as
-.IB "syllable" 1\fR.
-.
-.
-.P
-The 2nd tone is the accute accent
-.B \e[aa]
-.BR \[aa] .
-.
-In each source file, write the 2nd tone as
-.IB "syllable" 2\fR.
-.
-.
-.P
-The 3rd tone is the caron sign,
-.BR \e[ah]
-.B \[ah] ,
-which looks a bit like a small
-.B v
-above the vowel.
-.
-In each source file, write the 3rd tone as
-.IB "syllable" 3\fR.
-.
-.
-.P
-The 4th tone is the grave accent
-.B \e[ga]
-.BR \[ga] .
-.
-In each source file, write the 4th tone as
-.IB "syllable" 4\fR.
-.
-.
-.P
-The 5th tone is the no-tone.
-.
-The numbers 0 and 5 can be used for the
-.BR ( no-tone ).
-.
-The
-.B no-tone
-number can be omitted, when the syllable is the end of some word.
-.
-But within a word of syllables, one of the
-.B no-tone
-numbers 0 or 5 must be written.
-.
-.
-.\" --------------------------------------------------------------------
-.SH "SEE ALSO"
-.\" --------------------------------------------------------------------
-.
-.TP
-.BR \%groff (@MAN1EXT@)
-.TQ
-.BR \%grog (@MAN1EXT@)
-.TQ
-.BR \%groffer (@MAN1EXT@)
-Man\-pages with section
-.B 1
-related to
-.IR groff .
-.
-They can be called with either
-.RS
-.RS
-.EX
-.BI man " name"
-.BI groffer "name"
-.EE
-.RE
-.RE
-.
-.
-.TP
-.BR \%groff (@MAN7EXT@)
-.TQ
-.BR \%groff_char (@MAN7EXT@)
-Man\-pages with section
-.B 7
-related to
-.IR groff .
-.
-They can be called with either
-.RS
-.RS
-.EX
-.BI "man 7" " name"
-.BI "groffer 7" " name"
-.EE
-.RE
-.RE
-.
-.
-.P
-Internet documents related to
-.I pinyin
-are
-.RS
-.br
-.UR http://\:en.wikipedia.org/\:wiki/\:Pinyin
-.I Wikipedia pinyin
-.UE ,
-.
-.br
-.UR http://\:en.wikipedia.org/\:wiki/\:Pinyin_table
-.I Pinyin Table
-.UE ,
-.
-.br
-.UR http://\;www.sino.uni-heidelberg.de/\:course_resources/\:s02/\:\
-py-vowels.htm
-.I Unicode vowels for Pinyin 
-.UE ,
-.
-.br
-.UR http://\:www.foolsworkshop.com/\:ptou/\:index.html
-.IR pinyin to Unicode
-.UE ,
-.
-.br
-.UR http://\:www.mandarintools.com/
-.I Online Chinese Tools
-.UE ,
-.
-.br
-.UR http://\:www.pinyin.info/\:index.html
-.I Main pinyin website
-.UE ,
-.
-.br
-.UR http://\:www.pinyin.info/\:rules/\:where.html
-.I Where do the tone marks go?
-.UE ,
-.
-.br
-.UR http://\:git.savannah.gnu.org/\:gitweb/\:\
-?p=cjk.git;a=blob_plain;f=doc/\:pinyin.txt;hb=HEAD
-.I Pinyin for TeX 1
-.UE ,
-.
-.br
-.UR http://\:git.savannah.gnu.org/\:gitweb/\:\
-?p=cjk.git;a=blob_plain;f=texinput/p\:inyin.sty;hb=HEAD
-.I Pinyin for TeX 2
-.UE .
-.
-.RE
-.
-.
-.\" --------------------------------------------------------------------
-.SH "COPYING"
-.\" --------------------------------------------------------------------
-.co
-.\" --------------------------------------------------------------------
-.SH "AUTHORS"
-.\" --------------------------------------------------------------------
-.au
-.
-.
-.\" --------------------------------------------------------------------
-.\" Emacs settings
-.\" --------------------------------------------------------------------
-.
-.\" Local Variables:
-.\" mode: nroff
-.\" coding: latin-1
-.\" End:
index ea874d6..e4bb5a3 100755 (executable)
@@ -1,24 +1,24 @@
 #! /usr/bin/env perl
 
-# gpinyin - European-like Chinese writing `pinyin' into `groff'
+# gpinyin - European-like Chinese writing 'pinyin' into 'groff'
 
 # Source file position: <groff-source>/contrib/gpinyin/gpinyin.pl
 # Installed position: <prefix>/bin/gpinyin
 
-# Copyright (C) 2014  Free Software Foundation, Inc.
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
 
 # Written by Bernd Warken <groff-bernd.warken-72@web.de>.
 
 my $version = '1.0.4';
 
-# This file is part of `gpinyin', which is part of `groff'.
+# This file is part of 'gpinyin', which is part of 'groff'.
 
-# `groff' is free software; you can redistribute it and/or modify it
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
 # the Free Software Foundation, either version 2 of the License, or
 # (at your option) any later version.
 
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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.
@@ -38,7 +38,7 @@ use File::Temp qw/ tempfile tempdir /;
 # needed for temporary dir
 use File::Spec;
 
-# for `copy' and `move'
+# for 'copy' and 'move'
 use File::Copy;
 
 # for fileparse, dirname and basename
@@ -65,7 +65,7 @@ our $File_split_env_sh;
 our $File_version_sh;
 our $Groff_Version;
 
-my $before_make;               # script before run of `make'
+my $before_make;               # script before run of 'make'
 {
   my $at = '@';
   $before_make = 1 if '@VERSION@' eq "${at}VERSION${at}";
@@ -96,15 +96,15 @@ require 'subs.pl';
 
 foreach (@ARGV) {
   if ( /^(-h|--h|--he|--hel|--help)$/ ) {
-    print q(Usage for the `gpinyin' program:);
+    print q(Usage for the 'gpinyin' program:);
     print 'gpinyin [-] [--] [filespec...] normal file name arguments';
     print 'gpinyin [-h|--help]            gives usage information';
     print 'gpinyin [-v|--version]         displays the version number';
-    print q(This program is a `groff' preprocessor that handles ) .
-      q(pinyin parts in `roff' files.);
+    print q(This program is a 'groff' preprocessor that handles ) .
+      q(pinyin parts in 'roff' files.);
     exit;
   } elsif (/^(-v|--v|--ve|--ver|--vers|--versi|--versio|--version)$/) {
-    print q(`gpinyin' version ) . $version;
+    print q('gpinyin' version ) . $version;
     exit;
   }
 }
@@ -136,8 +136,8 @@ foreach (<>) {      # get line from input
   # .pinyin start or begin line
   if ( $line =~ /^[.']\s*pinyin\s+(start|begin)$/ ) {
     if ( $pinyin_mode ) {
-      # `.pinyin' was started twice, ignore
-      &err( q[`.pinyin' starter was run several times] );
+      # '.pinyin' was started twice, ignore
+      &err( q['.pinyin' starter was run several times] );
     } else {   # new pinyin start
       $pinyin_mode = 1;
     }
@@ -176,7 +176,7 @@ foreach (<>) {      # get line from input
 
 
 ########################################################################
-# end of file without stopping `pinyin' mode
+# end of file without stopping 'pinyin' mode
 if ( $pinyin_mode ) {
   &finish_pinyin_mode( \@output_n, \@output_t );
 }
index 08e919f..1b10869 100755 (executable)
@@ -1,22 +1,22 @@
 #! /usr/bin/env perl
 
-# gpinyin - European-like Chinese writing `pinyin' into `groff'
+# gpinyin - European-like Chinese writing 'pinyin' into 'groff'
 
 # Source file position: <groff-source>/contrib/gpinyin/gpinyin.pl
 # Installed position: <prefix>/bin/gpinyin
 
-# Copyright (C) 2014  Free Software Foundation, Inc.
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
 
 # Written by Bernd Warken <groff-bernd.warken-72@web.de>.
 
-# This file is part of `gpinyin', which is part of `groff'.
+# This file is part of 'gpinyin', which is part of 'groff'.
 
-# `groff' is free software; you can redistribute it and/or modify it
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
 # the Free Software Foundation, either version 2 of the License, or
 # (at your option) any later version.
 
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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.
@@ -312,7 +312,7 @@ sub handle_line {
 
     # this is a word, maybe composed of several syllables
     my $punctuation = $1 if ( $word =~ s/([,.?!:;]*)$// );
-    # `$word' is now without punctuation
+    # '$word' is now without punctuation
 
     my %outword = &handle_word($word);
     next unless ( %outword );
@@ -477,7 +477,7 @@ sub handle_syll {
   }
 
 #  unless ( $vowel =~ /^[aeiouAEIOU]$/ ) {
-#    print STDERR q(The argument `) . $vowel . q(' is not a vowel!);
+#    print STDERR q(The argument ') . $vowel . q(' is not a vowel!);
 #    return {};
 #  }
 
diff --git a/contrib/grap2graph/Makefile.sub b/contrib/grap2graph/Makefile.sub
deleted file mode 100644 (file)
index 97761fe..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-# Copyright (C) 2003-2014  Free Software Foundation, Inc.
-#
-# This file is part of groff.
-#
-# groff 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.
-#
-# groff 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 <http://www.gnu.org/licenses/>.
-#
-# Makefile.sub
-#
-MAN1=grap2graph.n
-MOSTLYCLEANADD=grap2graph
-RM=rm -f
-
-all: grap2graph
-
-grap2graph: grap2graph.sh
-       sed -e "s|@g@|$(g)|g" \
-           -e "s|@VERSION@|$(version)$(revision)|" \
-           -e $(SH_SCRIPT_SED_CMD) $(srcdir)/grap2graph.sh >$@
-       chmod +x $@
-
-install_data: grap2graph
-       -test -d $(DESTDIR)$(bindir) || $(mkinstalldirs) $(DESTDIR)$(bindir)
-       $(RM) $(DESTDIR)$(bindir)/grap2graph
-       $(INSTALL_SCRIPT) grap2graph $(DESTDIR)$(bindir)/grap2graph
-
-uninstall_sub:
-       $(RM) $(DESTDIR)$(bindir)/grap2graph
-
-########################################################################
-# Emacs settings
-########################################################################
-#
-# Local Variables:
-# mode: makefile
-# End:
diff --git a/contrib/grap2graph/grap2graph.1.man b/contrib/grap2graph/grap2graph.1.man
new file mode 100644 (file)
index 0000000..bf13d6d
--- /dev/null
@@ -0,0 +1,175 @@
+.TH GRAP2GRAPH @MAN1EXT@ "@MDATE@" "groff @VERSION@"
+.SH NAME
+grap2graph \- convert a GRAP diagram into a cropped image
+.
+.
+.\" ====================================================================
+.\" Legal Terms
+.\" ====================================================================
+.\"
+.\" This documentation is released to the public domain.
+.
+.
+.\" ====================================================================
+.SH SYNOPSIS
+.\" ====================================================================
+.
+.SY grap2graph
+.OP \-unsafe
+.OP \-format output-format
+.RI [ convert-arguments ]
+.YS
+.
+.SY grap2graph
+.B \-\-help
+.YS
+.
+.SY grap2graph
+.B \-v
+.SY grap2graph
+.B \-\-version
+.YS
+.
+.
+.\" ====================================================================
+.SH DESCRIPTION
+.\" ====================================================================
+.
+.I grap2graph
+reads a
+.IR grap (1)
+program from the standard input and writes an image file,
+by default in Portable Network Graphics (PNG) format,
+to the standard output.
+.
+.
+.PP
+The input GRAP code should
+.I not
+be wrapped with the
+.B \&.G1
+and
+.B \&.G2
+macros that normally guard it within
+.IR groff (@MAN1EXT@)
+documents.
+.
+.
+.\" FIXME: How old?  This text hasn't been touched since 2008 at latest.
+.\" Older versions of
+.\" .I \%convert
+.\" will produce a black-on-white graphic; newer ones may produce a
+.\" black-on-transparent graphic.
+.
+.PP
+Arguments not recognized by
+.I grap2graph
+are passed to the ImageMagick or GraphicsMagick program
+.IR \%convert (1).
+.
+.
+By specifying these, you can give your image a border,
+.\" Transparent backgrounds are the default in 2018.
+.\" force the background transparent,
+set the image's pixel density,
+or perform other useful transformations.
+.
+.
+.PP
+The output image is clipped using
+.IR \%convert 's
+.B \-trim
+option to the smallest possible bounding box that contains all the black
+pixels.
+.
+.
+.\" ====================================================================
+.SH OPTIONS
+.\" ====================================================================
+.
+.TP
+.BI "\-format " output-format
+Write the image in
+.IR output-format ,
+which must be understood by
+.IR \%convert ;
+the default is PNG.
+.
+.
+.TP
+.B \-\-help
+Display a usage message and exit.
+.
+.
+.TP
+.B \-unsafe
+Run
+.I groff
+in
+.I unsafe
+mode, enabling the PIC command
+.B sh
+to execute arbitrary Unix shell commands.
+.
+The
+.I groff
+default is to forbid this.
+.
+.
+.TP
+.B \-v
+.TQ
+.B \-\-version
+Display version information and exit.
+.
+.
+.\" ====================================================================
+.SH ENVIRONMENT
+.\" ====================================================================
+.
+.TP
+.I \%GROFF_TMPDIR
+.TQ
+.I \%TMPDIR
+.TQ
+.I TMP
+.TQ
+.I TEMP
+These environment variables are searched in the given order to determine
+the directory where temporary files will be created.
+.
+If none are set,
+.I /tmp
+is used.
+.
+.
+.\" ====================================================================
+.SH AUTHORS
+.\" ====================================================================
+.
+.B grap2graph
+was written by
+.MT esr@\:thyrsus.com
+Eric S.\& Raymond
+.ME ,
+based on a recipe for
+.IR pic2graph (@MAN1EXT@),
+by W.\& Richard Stevens.
+.
+.
+.\" ====================================================================
+.SH "SEE ALSO"
+.\" ====================================================================
+.
+.IR pic2graph (@MAN1EXT@),
+.IR eqn2graph (@MAN1EXT@),
+.IR grap (1),
+.IR @g@pic (@MAN1EXT@),
+.IR groff (@MAN1EXT@),
+.IR \%convert (1)
+.
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" End:
+.\" vim: set filetype=groff:
diff --git a/contrib/grap2graph/grap2graph.am b/contrib/grap2graph/grap2graph.am
new file mode 100644 (file)
index 0000000..f00ebfd
--- /dev/null
@@ -0,0 +1,42 @@
+# Copyright (C) 2003-2018 Free Software Foundation, Inc.
+#
+# Last update: 22 Aug 2015
+#
+# This file is part of groff.
+#
+# groff 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.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+#
+# grap2graph.am
+#
+
+grap2graph_srcdir = $(top_srcdir)/contrib/grap2graph
+bin_SCRIPTS += grap2graph
+man1_MANS += contrib/grap2graph/grap2graph.1
+EXTRA_DIST += \
+  $(grap2graph_srcdir)/grap2graph.sh \
+  $(grap2graph_srcdir)/grap2graph.1.man
+
+grap2graph: $(grap2graph_srcdir)/grap2graph.sh
+       $(AM_V_GEN)sed -e "s|[@]g[@]|$(g)|g" \
+           -e "s|[@]VERSION[@]|$(VERSION)|" \
+           -e $(SH_SCRIPT_SED_CMD) $(grap2graph_srcdir)/grap2graph.sh \
+           >$@ \
+       && chmod +x $@
+
+
+########################################################################
+### Emacs settings
+# Local Variables:
+# mode: makefile-automake
+# End:
diff --git a/contrib/grap2graph/grap2graph.man b/contrib/grap2graph/grap2graph.man
deleted file mode 100644 (file)
index d35888a..0000000
+++ /dev/null
@@ -1,145 +0,0 @@
-.TH GRAP2GRAPH @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
-.SH NAME
-grap2graph \- convert a grap diagram into a cropped bitmap image
-.
-.
-.\" --------------------------------------------------------------------
-.SH SYNOPSIS
-.\" --------------------------------------------------------------------
-.
-.B grap2graph
-[
-.B \-unsafe
-]
-[
-.BI \-resolution\  M\fR\^|\^\fPMxN
-]
-[
-.BI \-format\  fmt
-]
-.
-.
-.\" --------------------------------------------------------------------
-.SH DESCRIPTION
-.\" --------------------------------------------------------------------
-.
-Reads a grap program as input; produces an image file (by default in
-Portable Network Graphics format) suitable for the Web as output.
-.
-For a description of the grap language, see
-.BR grap (1).
-.
-.
-.P
-Your graph specification should \fInot\fR be wrapped with the \&.G1 and
-\&.G2 macros that normally guard it within
-.BR groff (@MAN1EXT@)
-macros.
-.
-.
-.P
-The output image will be a black-on-white graphic clipped to the
-smallest possible bounding box that contains all the black pixels.
-.
-By specifying command-line options to be passed to
-.BR convert (1)
-you can give it a border, set the background transparent, set the
-image's pixel density, or perform other useful transformations.
-.
-.
-.P
-This program uses
-.BR grap (1),
-.BR @g@pic (@MAN1EXT@),
-.BR groff (@MAN1EXT@),
-and the ImageMagick
-.BR convert (1)
-program.
-.
-These programs must be installed on your system and accessible on your
-$PATH for \fBgrap2graph\fR to work.
-.
-.
-.\" --------------------------------------------------------------------
-.SH OPTIONS
-.\" --------------------------------------------------------------------
-.
-.TP
-.B \-unsafe
-Run
-.BR @g@pic (@MAN1EXT@)
-and
-.BR groff (@MAN1EXT@)
-in the `unsafe' mode enabling the PIC macro
-.B sh
-to execute arbitrary commands.
-.
-The default is to forbid this.
-.
-.TP
-.BI \-format\  fmt
-Specify an output format; the default is PNG (Portable Network Graphics).
-.
-Any format that
-.BR convert (1)
-can emit is supported.
-.
-.
-.PP
-Command-line switches and arguments not listed above are passed to
-.BR convert (1).
-.
-.
-.\" --------------------------------------------------------------------
-.SH ENVIRONMENT
-.\" --------------------------------------------------------------------
-.
-.TP
-.B GROFF_TMPDIR
-The directory in which temporary files will be created.
-.
-If this is not set
-.B grap2graph
-searches the environment variables
-.BR \%TMPDIR ,
-.BR TMP ,
-and
-.B TEMP
-(in that order).
-.
-Otherwise, temporary files will be created in
-.BR /tmp .
-.
-.
-.\" --------------------------------------------------------------------
-.na
-.SH "SEE ALSO"
-.\" --------------------------------------------------------------------
-.
-.BR pic2graph (@MAN1EXT@),
-.BR eqn2graph (@MAN1EXT@),
-.BR @g@pic (@MAN1EXT@),
-.BR groff (@MAN1EXT@),
-.BR gs (1),
-.BR convert (1).
-.
-.
-.\" --------------------------------------------------------------------
-.SH COPYING
-.\" --------------------------------------------------------------------
-.
-This documentation is released to the public domain.
-.
-.\" --------------------------------------------------------------------
-.SH AUTHORS
-.\" --------------------------------------------------------------------
-.
-This document was written by
-.MT esr@thyrsus.com
-Eric S.\& Raymond
-.ME .
-.
-.
-.\" Local Variables:
-.\" mode: nroff
-.\" End:
index 58544e1..29df25b 100644 (file)
@@ -7,7 +7,7 @@
 # In Unixland, the magic is in knowing what to string together...
 #
 # Take grap description on stdin, emit cropped bitmap on stdout.
-# The pic markup should *not* be wrapped in .G1/.G2, this script will do that.
+# The grap markup should *not* be wrapped in .G1/.G2, this script will do that.
 # A -U option on the command line enables gpic/groff "unsafe" mode.
 # A -format FOO option changes the image output format to any format
 # supported by convert(1).  All other options are passed to convert(1).
@@ -30,6 +30,7 @@
 #
 groff_opts=""
 convert_opts=""
+convert_trim_arg="-trim"
 format="png"
 
 while [ "$1" ]
@@ -54,22 +55,45 @@ done
 
 # create temporary directory
 tmp=
-for d in "$GROFF_TMPDIR" "$TMPDIR" "$TMP" "$TEMP" /tmp; do
-    test -z "$d" && continue
+for d in "$GROFF_TMPDIR" "$TMPDIR" "$TMP" "$TEMP" /tmp
+do
+    test -n "$d" && break
+done
+
+if ! test -d "$d"
+then
+    echo "$0: error: temporary directory \"$d\" does not exist or is" \
+        "not a directory" >&2
+    exit 1
+fi
 
-    tmp=`(umask 077 && mktemp -d -q "$d/grap2graph-XXXXXX") 2> /dev/null` \
-    && test -n "$tmp" && test -d "$tmp" \
-    && break
+if ! tmp=`(umask 077 && mktemp -d -q "$d/grap2graph-XXXXXX") 2> /dev/null`
+then
+    # mktemp failed--not installed or is a version that doesn't support those
+    # flags?  Fall back to older method which uses more predictable naming.
+    #
+    # $RANDOM is a Bashism.  The fallback of $PPID is not good pseudorandomness,
+    # but is supported by the stripped-down dash shell, for instance.
+    tmp="$d/grap2graph$$-${RANDOM:-$PPID}"
+    (umask 077 && mkdir "$tmp") 2> /dev/null
+fi
+
+if ! test -d "$tmp"
+then
+    echo "$0: error: cannot create temporary directory \"$tmp\"" >&2
+    exit 1
+fi
 
-    tmp=$d/grap2graph$$-$RANDOM
-    (umask 077 && mkdir $tmp) 2> /dev/null && break
-done;
-if test -z "$tmp"; then
-    echo "$0: cannot create temporary directory" >&2
-    { (exit 1); exit 1; }
+# See if the installed version of convert(1) is new enough to support the -trim
+# option.  Versions that didn't were described as "old" as early as 2008.
+is_convert_recent=`convert -help | grep -e -trim`
+if test -z "$is_convert_recent"
+then
+    echo "$0: warning: falling back to old '-crop 0x0' trim method" >&2
+    convert_trim_arg="-crop 0x0"
 fi
 
-trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' EXIT INT TERM
+trap 'exit_status=$?; rm -rf "$tmp" && exit $exit_status' EXIT INT TERM
 
 # Here goes:
 # 1. Add .G1/.G2.
@@ -77,7 +101,7 @@ trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' EXIT INT TERM
 # 3. Process through groff(1) with pic preprocessing to emit Postscript.
 # 4. Use convert(1) to crop the Postscript and turn it into a bitmap.
 (echo ".G1"; cat; echo ".G2") | grap | groff -p $groff_opts -Tps -P-pletter | \
-    convert -trim -crop 0x0 $convert_opts - $tmp/grap2graph.$format \
-    && cat $tmp/grap2graph.$format
+    convert -trim $convert_opts - "$tmp"/grap2graph.$format \
+    && cat "$tmp"/grap2graph.$format
 
 # End
index 1410ec6..09ec3a8 100644 (file)
@@ -1,3 +1,27 @@
+2015-08-22  Bernd Warken  <groff-bernd.warken-72@web.de>
+
+       * groff_filenames.5.man: Use section 5 within this man-page.
+
+2015-08-22  Bernd Warken  <groff-bernd.warken-72@web.de>
+
+       * groff_filenames.5.man: Rename `groff_filenames.1.man'.
+
+       * groff_filenames.am: Include section changing.
+
+2015-08-22  Bernd Warken  <groff-bernd.warken-72@web.de>
+
+       * groff_filenames.1.man: Rename `groff_filenames.man'.
+
+       * groff_filenames.am: Include renaming.
+
+2015-08-05  Bernd Warken  <groff-bernd.warken-72@web.de>
+
+       * groff_filenames.am: Add `Last update'.  Setup Emacs mode.
+
+2015-04-03  Werner LEMBERG  <wl@gnu.org>
+
+       * groff_filenames.man: Make it work in compatibility mode.
+
 2014-09-03  Bernd Warken  <groff-bernd.warken-72@web.de>
 
        * groff_filenames.man, Makefile.sub: Repair copying and Emacs
@@ -71,8 +95,7 @@
 
 ########################################################################
 
-Copyright 2013
-  Free Software Foundation, Inc.
+Copyright 2013-2018 Free Software Foundation, Inc.
 
 Copying and distribution of this file, with or without modification,
 are permitted in any medium without royalty provided the copyright
@@ -80,5 +103,6 @@ notice and this notice are preserved.
 
 Local Variables:
 version-control: never
+mode: change-log
 coding: utf-8
 End:
diff --git a/contrib/groff_filenames/Makefile.sub b/contrib/groff_filenames/Makefile.sub
deleted file mode 100644 (file)
index bc6b955..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-# Makefile.sub for `groff_filenames' (integration into the `groff' source tree)
-
-# File position: <groff-source>/contrib/groff_filenames/Makefile.sub
-
-# Copyright (C) 2013-2014  Free Software Foundation, Inc.
-#
-# Written by Bernd Warken <groff-bernd.warken-72@web.de>.
-
-# This file is part of `groff'.
-
-# `groff' is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 2 of the License, or
-# (at your option) any later version.
-
-# `groff' 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 <http://www.gnu.org/licenses/>.
-
-########################################################################
-
-MAN7=\
-  groff_filenames.n
-
-MOSTLYCLEANADD=$(MAN7)
-
-########################################################################
-##### Emacs settings
-# Local Variables:
-# mode: makefile
-# End:
similarity index 55%
rename from contrib/groff_filenames/groff_filenames.man
rename to contrib/groff_filenames/groff_filenames.5.man
index 82b8019..8f87abe 100644 (file)
@@ -1,37 +1,26 @@
-.TH GROFF_FILENAMES @MAN7EXT@ "@MDATE@" "Groff Version @VERSION@"
+.TH GROFF_FILENAMES @MAN5EXT@ "@MDATE@" "groff @VERSION@"
 .SH NAME
-groff_filenames \(em filename extensions for roff and groff
-.
-.\" The .SH was moved to this place in order to appease `apropos'.
+groff_filenames \- filename extensions for roff and groff
 .
 .\" ad l
-.\" --------------------------------------------------------------------
-.\" Legalese
-.\" --------------------------------------------------------------------
-.
-.de co
-Copyright \[co] 2013-2014 Free Software Foundation, Inc.
-
-This file is part of groff, a free software project.  You can
-redistribute it and/or modify it under the terms of the GNU General
-Public License version 2 (GPL2) as published by the Free Software
-Foundation (FSF).
-
-The license text can be found in the internet at
-.UR http://www.gnu.org/licenses
-.UE .
-..
-.
-.de au
-This file was written by
-.MT groff-bernd.warken-72@web.de
-Bernd Warken
-.ME .
-..
-.
-.\" --------------------------------------------------------------------
+.\" ====================================================================
+.\" Legal Terms
+.\" ====================================================================
+.\"
+.\" Copyright (C) 2013-2018 Free Software Foundation, Inc.
+.\"
+.\" This file is part of groff, a free software project.  You can
+.\" redistribute it and/or modify it under the terms of the GNU General
+.\" Public License version 2 (GPL2) as published by the Free Software
+.\" Foundation (FSF).
+.\"
+.\" The license text can be found in the internet at
+.\" <http://www.gnu.org/licenses>.
+.
+.
+.\" ====================================================================
 .SH DESCRIPTION
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 Since the evolution of
 .I roff
@@ -55,13 +44,14 @@ Later on,
 .B groff
 added some more extensions.
 .
-We will now write a
-.I man\-page about these filename extensions.
+This
+.I man page
+is about these filename extensions.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH COMPRESSION OF ROFF FILES
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 Each
 .I roff
@@ -74,11 +64,11 @@ ends with a
 .IR "compressor name" .
 .
 So the whole filename has the structure
-.IR <name> \f[CB].\fP <extension>[ \f[CB].\fP <compression>] .
+.IR <name> . <extension>[ . <compression>] .
 .
 .
 .P
-Mostly known are the
+Best-known are the
 .I compressor extensions
 .BR .Z ,
 .BR .gz ,
@@ -96,17 +86,17 @@ and only comment the structure
 .IB <name> . <extension>\fR.\fP
 .
 .
-.\" --------------------------------------------------------------------
-.SH MAN\-PAGES
-.\" --------------------------------------------------------------------
+.\" ====================================================================
+.SH MAN PAGES
+.\" ====================================================================
 .
 The
 .I Unix manual pages
-are shortly named
-.IR "man\-pages" .
+are widely called
+.IR "man pages" .
 .
 The
-.I man\-page
+.I man page
 style is the best known part of the
 .I roff
 language.
@@ -127,12 +117,12 @@ language use the following extension:
 .BI *. <section>[<group>] \fR.\fP
 .
 .
-.\" --------------------------------------------------------------------
-.SS Man-page Sections
-.\" --------------------------------------------------------------------
+.\" ====================================================================
+.SS Man page Sections
+.\" ====================================================================
 .
 The traditional
-.I man\-page <section>
+.I man page <section>
 is a digit from
 .B 1
 to
@@ -155,22 +145,24 @@ to
 .IB <name> .7
 .TQ
 .IB <name> .8
-Classic man\-page
+Classic man page
 .IR sections .
 .
 .
 .P
-Linux added the section number
-.B 9
-for kernel man\-pages.
-.
-.
-.TP
-.IB <name> .9
-.I Linux
-kernel man-pages
-.
-.
+.\" NOTE: There was once a feeble attempt in this direction, but it
+.\" hasn't been true in any sense for a long time.
+.\"Linux added the section number
+.\".B 9
+.\"for kernel man pages.
+.\".
+.\".
+.\".TP
+.\".IB <name> .9
+.\".I Linux
+.\"kernel man pages
+.\".
+.\".
 .P
 In older commercial
 .I Unix
@@ -195,13 +187,13 @@ but there are still documents in this format.
 .TQ
 .IB <name> .o
 .I Deprecated
-old
-.IR "man\-page sections" .
+man page sections, which stood for \[lq]local\[rq], \[lq]new\[rq], and
+\[lq]old\[rq], respectively.
 .
 .
-.\" --------------------------------------------------------------------
-.SS Man\-page Group Extensions
-.\" --------------------------------------------------------------------
+.\" ====================================================================
+.SS Man page Group Extensions
+.\" ====================================================================
 .
 The
 .I <group>
@@ -209,14 +201,14 @@ extension in
 .BI . <section>[<group>]
 is optional, but it can be any string of word characters.
 .
-Usually programmers use a group name that is already used, e.g.
+Usually programmers use a group name that is already used, e.g.\&
 .B x
 for
-.I "X Window System"
+X Window System
 documents or
-.B tk
+.B tcl
 to refer to the
-.I tk
+.I Tcl
 programming language.
 .
 .
@@ -226,7 +218,7 @@ Examples:
 .
 .TP
 .B groff.1
-is the man-page for
+is the man page for
 .B groff
 in
 .I section
@@ -237,7 +229,7 @@ without a
 .
 .TP
 .B xargs.1posix.gz
-is the man\-page for the program
+is the man page for the program
 .B xargs
 in
 .I section
@@ -264,8 +256,8 @@ with
 .
 .
 .TP
-.B dpkg-reconfigure.8cdebconf
-man\-page for the program
+.B dpkg\-reconfigure.8cdebconf
+man page for the program
 .B dpkg\-reconfigure
 in
 .I section
@@ -275,13 +267,13 @@ and
 .BR cdebconf .
 .
 .
-.\" --------------------------------------------------------------------
-.SS Source of Man\-pages
-.\" --------------------------------------------------------------------
+.\" ====================================================================
+.SS Source of man pages
+.\" ====================================================================
 .
 There are 2
 .I roff
-languages for writing man\-pages:
+languages for writing man pages:
 .B man
 and
 .BR mdoc .
@@ -290,7 +282,7 @@ and
 .P
 The names of these 2 styles are taken as
 .I extensions
-for the source code files of man\-pages in the
+for the source code files of man pages in the
 .I groff
 package.
 .
@@ -298,14 +290,14 @@ package.
 .TP
 .IB <name> .man
 .I traditional
-Unix\-like man\-page format within groff source files.
+Unix-like man page format within groff source files.
 .
 .
 .TP
-.IB <name> .n
-A temporary man-page file produced from a
+.IB <name> . n
+A temporary man page file produced from a
 .IB name .man
-man\-page by a run of
+man page by a run of
 .B make
 within the
 .B groff
@@ -314,29 +306,29 @@ source package.
 .
 .TP
 .IB <name> .mdoc
-Man-page format in BSD.
+Man page format in BSD.
 .
 .
 .TP
 .IB <name> .1b
-Man-page format in
+Man page format in
 .IR "heirloom roff ".
 .
 .
 .TP
 .IB <name> .mandoc
-Files using this extension recognize both man\-page formats in
+Files using this extension recognize both man page formats in
 .B groff
 and other processors.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH TRADITIONAL TROFF EXTENSIONS
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS Files Using Macro Packages
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The
 .I "classical roff"
@@ -388,9 +380,9 @@ languages and their extensions are still very active in
 .BR groff .
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS Source Code for Macro Packages (TMAC Files)
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 In traditional
 .I roff
@@ -424,9 +416,9 @@ In the
 source, more suitable file names were integrated, see later on.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS Preprocessors
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 Moreover, the following
 .I preprocessors
@@ -461,9 +453,9 @@ for files using the
 .I preprocessor
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS Classical Roff Files
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .TP
 .IB <name> .t
@@ -474,9 +466,9 @@ for files using the
 language of any kind
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH NEW GROFF EXTENSIONS
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .I "GNU roff"
 .B groff
@@ -503,9 +495,9 @@ general ending for files using the
 .I groff language
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS Source Code for Macro Packages (TMAC Files)
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 As the classical form
 .BI tmac. <package_without_m> \fR,\fP
@@ -525,9 +517,9 @@ added the following structures:
 .BI groff_m <package> .tmac
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS Files Using new Macro Packages
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .I Groff
 uses the following new macro packages:
@@ -552,20 +544,19 @@ files written in the
 .TP
 .IB <name> .www
 files written in
-.BR HTML \-like
+.BR HTML -like
 .I groff
 .IR macros .
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS Preprocessors and Postprocessors
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .TP
 .IB <name> .hdtbl
-a new
-.I tbl
-format.
+Heidelberger tables, an alternative to the preprocessor
+.IR tbl .
 .
 See
 .BR groff_hdtbl (@MAN7EXT@).
@@ -595,9 +586,18 @@ of the
 system
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
+.SH AUTHORS
+.\" ====================================================================
+This document was written by
+.MT groff\-bernd.warken\-72@\:web.de
+Bernd Warken
+.ME .
+.
+.
+.\" ====================================================================
 .SH "SEE ALSO"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .
 .TP
@@ -617,7 +617,7 @@ History and future
 .
 .
 .P
-A man-page of the naming form
+A man page of the naming form
 .IB name ( n )
 can be read in text mode by
 .RS
@@ -634,32 +634,23 @@ or in graphical mode (PDF) by
 .
 .
 .P
-.UR https://\:github.com/\:n-t-roff/\:heirloom-doctools
-.I Gunnar Ritter\[aq]s Heirloom roff project
+.UR https://\:github.com/\:n\-t\-roff/\:heirloom\-doctools
+.I Gunnar Ritter's Heirloom roff project
 .UE .
 .
 You can get this package with the shell command:
 .RS
 .EX
-\[Do] git clone https://github.com/n-t-roff/heirloom-doctools
+\(Do \fBgit clone https://github.com/n\-t\-roff/heirloom\-doctools\fP
 .EE
 .RE
 .
 .
-.\" --------------------------------------------------------------------
-.SH "COPYING"
-.\" --------------------------------------------------------------------
-.co
-.\" --------------------------------------------------------------------
-.SH "AUTHORS"
-.\" --------------------------------------------------------------------
-.au
-.
-.
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .\" Emacs settings
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .\" Local Variables:
 .\" mode: nroff
 .\" End:
+.\" vim: set filetype=groff:
diff --git a/contrib/groff_filenames/groff_filenames.am b/contrib/groff_filenames/groff_filenames.am
new file mode 100644 (file)
index 0000000..52b88fa
--- /dev/null
@@ -0,0 +1,43 @@
+# Automake rules for 'groff_filenames'
+
+# File position: <groff-source>/contrib/groff_filenames/groff_filenames.am
+
+# Copyright (C) 2013-2018 Free Software Foundation, Inc.
+
+# Last update: 22 Aug 2015
+
+# Written by Bernd Warken <groff-bernd.warken-72@web.de>.
+# Automake migration by Bertrand Garrigues
+
+# This file is part of 'groff'.
+
+# 'groff' is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 2 of the License, or
+# (at your option) any later version.
+
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+
+########################################################################
+
+man5_MANS += contrib/groff_filenames/groff_filenames.5
+EXTRA_DIST += \
+  contrib/groff_filenames/ChangeLog \
+  contrib/groff_filenames/groff_filenames.5.man
+
+
+########################################################################
+# Editor settings
+########################################################################
+#
+# Local Variables:
+# mode: makefile-automake
+# fill-column: 72
+# End:
+# vim: set filetype=automake textwidth=72:
index a411b77..3aef914 100644 (file)
@@ -1,3 +1,58 @@
+2018-04-24  G. Branden Robinson <g.branden.robinson@gmail.com>
+
+       * version.sh: Bump groffer version to 2.3.0, reflecting Bernd's
+         addition of the xhtml device/mode feature in 2015.  This
+         change extended the interface of the groffer
+         program--backwards-compatibly--e.g., by adding the '--xhtml'
+         option.
+
+2018-04-24  G. Branden Robinson <g.branden.robinson@gmail.com>
+
+       * version.sh (_GROFF_VERSION_PRESET): Set to 1.22.4.
+
+2018-02-28  Werner LEMBERG  <wl@gnu.org>
+
+       * groffer.am (groffer): Use $(AM_V_GEN) to silence file generation.
+
+2015-08-27  Bernd Warken  <groff-bernd.warken-72@web.de>
+
+       * *.pl: Add device (mode) `xhtml'.
+
+       * groffer.1.man: Add documentation for device `xhtml'.
+
+2015-08-27  Bernd Warken  <groff-bernd.warken-72@web.de>
+
+       * groffer.1.man: Correct the documentation for `--viewer'.
+
+2015-08-05  Bernd Warken  <groff-bernd.warken-72@web.de>
+
+       * groffer.1.man: Rename `groffer.man'.
+
+       * roff2.1.man: Rename `roff2.man'.
+
+       * groffer.am: Include renamings.
+
+2015-08-05  Bernd Warken  <groff-bernd.warken-72@web.de>
+
+       * groffer.am: Add `Last update'.  Setup Emacs mode.
+
+2015-04-04  Werner LEMBERG  <wl@gnu.org>
+
+       * roff2.man (EL): Fix typo.
+
+2015-04-04  Werner LEMBERG  <wl@gnu.org>
+
+       * roff2.man: Make it work in compatibility mode.
+
+2015-04-04  Werner LEMBERG  <wl@gnu.org>
+
+       * groffer.man: Make it work in compatibility mode.
+       (EL): Fix typo.
+
+2015-03-20  Werner LEMBERG  <wl@gnu.org>
+
+       * subs.pl (where_is_prog): Fix typo.
+
 2014-11-04  Werner LEMBERG  <wl@gnu.org>
 
        * version.sh (_GROFF_VERSION_PRESET): Set to 1.22.3.
 ________________________________________________________________
 License
 
-Copyright (C) 2006-2009, 2011-2014
-       Free Software Foundation, Inc.
+Copyright (C) 2006-2018 Free Software Foundation, Inc.
 Written by Bernd Warken <groff-bernd.warken-72@web.de>.
 
 Copying and distribution of this file, with or without
diff --git a/contrib/groffer/Makefile.sub b/contrib/groffer/Makefile.sub
deleted file mode 100644 (file)
index 05e00d2..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-# Makefile.sub for `groffer' (integration into the `groff' source tree)
-
-# File position: <groff-source>/contrib/groffer/Makefile.sub
-
-# Copyright (C) 2001-2014  Free Software Foundation, Inc.
-# Written by Werner Lemberg <wl@gnu.org> and
-# Bernd Warken <groff-bernd.warken-72@web.de>.
-
-# This file is part of `groffer' which is part of `groff'.
-
-# `groff' is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 2 of the License, or
-# (at your option) any later version.
-
-# `groff' 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
-# <http://www.gnu.org/licenses/gpl-2.0.html>.
-
-########################################################################
-
-ROFF2MODES=dvi html pdf ps text x
-ROFF2PROGS=`echo $(ROFF2MODES) | sed 's/[a-z][a-z]*/roff2&/g'`
-ROFF2MAN=`echo $(ROFF2MODES) | sed 's/[a-z][a-z]*/roff2&.man/g'`
-ROFF2N=`echo $(ROFF2MODES) | sed 's/[a-z][a-z]*/roff2&.n/g'`
-
-MAN1=groffer.n \
-     roff2dvi.n \
-     roff2html.n \
-     roff2pdf.n \
-     roff2ps.n \
-     roff2text.n \
-     roff2x.n
-
-MOSTLYCLEANADD=groffer $(MAN1) $(ROFF2MAN) $(ROFF2N) $(ROFF2PROGS)
-
-RM=rm -f
-
-all: groffer
-
-GROFFER_PERL=subs.pl \
-             main_subs.pl \
-             man.pl \
-             split_env.sh
-GROFFER_REST=roff2.man \
-             version.sh \
-             groffer.man \
-             groffer.pl \
-             roff2.pl
-
-groffer: $(GROFFER_PERL) $(GROFFER_REST) $(SH_DEPS_SED_SCRIPT)
-       sed -f "$(SH_DEPS_SED_SCRIPT)" \
-           -e "s|@g@|$(g)|g" \
-           -e "s|@BINDIR@|$(DESTDIR)$(bindir)|g" \
-           -e "s|@libdir@|$(DESTDIR)$(libdir)|g" \
-           -e "s|@groffer_dir@|$(DESTDIR)$(groffer_dir)|g" \
-           -e "s|@VERSION@|$(version)$(revision)|g" \
-           -e "$(SH_SCRIPT_SED_CMD)" \
-            $(srcdir)/groffer.pl >$@; \
-       for f in $(ROFF2PROGS); do \
-         cp $(srcdir)/roff2.pl $$f; \
-       done; \
-       chmod +x $@
-       for m in $(ROFF2MODES); do \
-         cat $(srcdir)/roff2.man \
-           | sed 's/@ROFF2MODE@/'"$$m"'/g' > roff2$${m}.man; \
-       done
-
-install_data: groffer
-       -test -d $(DESTDIR)$(bindir) || $(mkinstalldirs) $(DESTDIR)$(bindir)
-       $(RM) $(DESTDIR)$(bindir)/groffer
-       $(INSTALL_SCRIPT) groffer $(DESTDIR)$(bindir)/groffer
-       for f in $(ROFF2PROGS); do \
-         $(RM) $(DESTDIR)$(bindir)/$$f; \
-         $(INSTALL_SCRIPT) $$f $(DESTDIR)$(bindir)/$$f; \
-       done
-       -test -d $(DESTDIR)$(groffer_dir) \
-         || $(mkinstalldirs) $(DESTDIR)$(groffer_dir)
-       $(RM) $(DESTDIR)$(groffer_dir)/version.sh
-       $(INSTALL_DATA) $(srcdir)/version.sh $(DESTDIR)$(groffer_dir)/version.sh
-       for f in $(GROFFER_PERL); do \
-         $(RM) $(DESTDIR)$(groffer_dir)/$$f; \
-       done
-       for f in $(GROFFER_PERL); do \
-         $(INSTALL_SCRIPT) $(srcdir)/$$f $(DESTDIR)$(groffer_dir)/$$f; \
-       done;
-
-uninstall_sub:
-       $(RM) $(DESTDIR)$(bindir)/groffer
-       -for f in $(ROFF2PROGS); do $(RM) $(DESTDIR)$(bindir)/$$f; done
-       -for f in $(GROFFER_PERL) version.sh; do \
-         $(RM) $(DESTDIR)$(groffer_dir)/$$f;\
-       done
-       -test -d $(DESTDIR)$(libdir)/groff/groffer && \
-         rmdir $(DESTDIR)$(libdir)/groff/groffer
-
-
-########################################################################
-# Emacs settings
-########################################################################
-#
-# Local Variables:
-# mode: makefile
-# End:
index e2b3efd..2d638f3 100644 (file)
@@ -1,26 +1,26 @@
 README
 
-The `groffer' program is the easiest way to read documents written in
-some `roff' language, such as the `man pages', the manual pages in
-many operating systems.  All `roff' preprocessors, such as `chem' or
-`glilypond', are detected and executed automatically.
+The 'groffer' program is the easiest way to read documents written in
+some 'roff' language, such as the 'man pages', the manual pages in
+many operating systems.  All 'roff' preprocessors, such as 'chem' or
+'glilypond', are detected and executed automatically.
 
 
 Input
 
-Input comes from either standard input or command line parameters that
+Input comes from either standard input or command-line parameters that
 represent names of exisiting roff files or standardized specifications
 for searching man pages.  All of these can be compressed in a format
-that is decompressible by `gzip' or `bzip2', including `.gz', `bz2',
-and `.Z'.
+that is decompressible by 'gzip' or 'bzip2', including '.gz', 'bz2',
+and '.Z'.
 
-`groffer' has many built-in `man' functionalities to find and read the
-manual pages on UNIX and similar operating systems.  It accepts the
-information from an installed `man' program, but tries to find a man
+'groffer' has many built-in 'man' functionalities to find and read the
+manual pages on Unix and similar operating systems.  It accepts the
+information from an installed 'man' program, but tries to find a man
 path by itself.
 
-`groffer' bundles all filespec parameters into a single output file in
-the same way as `groff'.  The disadvantage of this is that all file
+'groffer' bundles all filespec parameters into a single output file in
+the same way as 'groff'.  The disadvantage of this is that all file
 name arguments must use the same groff language.  To change this, the
 option parsing must be revised for large parts.  It seems that this
 would create incompatibilities, so the actual option strategy is kept.
@@ -28,9 +28,9 @@ would create incompatibilities, so the actual option strategy is kept.
 
 Output
 
-All input is first sent to `grog' to determine the necessary `groff'
-command and then to `groff' together with all necessary preprocessors.
-So no special `groff' arguments must be given.  But all `groff'
+All input is first sent to 'grog' to determine the necessary 'groff'
+command and then to 'groff' together with all necessary preprocessors.
+So no special 'groff' arguments must be given.  But all 'groff'
 options can be specified when this seems to be appropriate.
 
 The following displaying modes for the output are available:
@@ -38,67 +38,70 @@ The following displaying modes for the output are available:
 -- a PDF viewer,
 -- a Postcript viewer,
 -- a web browser,
--- the X `roff' viewer `gxditview',
+-- the X 'roff' viewer 'gxditview',
 -- a DVI viewer,
 -- a pager in a text terminal (tty).
-- Generate `groff' output on stdout without a viewer.
-- Generate the `groff intermediate output' on standard output without
+- Generate 'groff' output on stdout without a viewer.
+- Generate the 'groff intermediate output' on standard output without
   postprocessing.
-- Output the source code without any `groff' processing.
-- There are some information outputs without `groff' processing, such
-  as by option `-V' and the `man' like `whatis' and `apropos'
+- Output the source code without any 'groff' processing.
+- There are some information outputs without 'groff' processing, such
+  as by option '-V' and the 'man' like 'whatis' and 'apropos'
   outputs.
 
 By default, the program creates a PDF file; on non-X text terminals,
-the `tty' text mode with a pager is tried by default.
+the 'tty' text mode with a pager is tried by default.
 
 
 File access
 
-The Perl version of groffer now use umask of 077.  This is a very
+The Perl version of groffer now uses a umask of 077.  This is a very
 strict security issue.  It allows only access of the temporary files
 by the file owner.
 
 
 Compatibility
 
-`groffer' is compatible to the `man' program.  It supports `.so'
+'groffer' is compatible to the 'man' program.  It supports '.so'
 requests based on the man path and compressed files.  That's more than
-`groff' does.
+'groff' does.
 
 
-Mailing lists
+Reporting bugs
 
-For reporting bugs of `groffer', groff's free mailing list
-<bug-groff@gnu.org> can be used.
+For reporting bugs of 'groffer', groff's bug-tracking tool at
+http://savannah.gnu.org/bugs/?group=groff can be used.
 
-For a general discussion, the mailing list <groff@gnu.org> is more
+
+Mailing list
+
+For a general discussion, the mailing list <groff@gnu.org> is
 useful, but one has to subscribe to this list at
 http://lists.gnu.org/mailman/listinfo/groff.
 
-See the `README' file in the top directory of the `groff' source
-package for more details on these mailing lists.
+See the 'README' file in the top directory of the 'groff' source
+package for more details on this mailing list.
 
 
 ####### License
 
-Copyright (C) 2003-201 Free Software Foundation, Inc.
+Copyright (C) 2003-2018 Free Software Foundation, Inc.
 Written by Bernd Warken <groff-bernd.warken-72@web.de>.
 
-This file is part of `groffer', which is part of `groff'.
+This file is part of 'groffer', which is part of 'groff'.
 
-`groff' is free software; you can redistribute it and/or modify it
+'groff' is free software; you can redistribute it and/or modify it
 under the terms of the GNU General Public License as published by
 the Free Software Foundation, either version 2 of the License, or
 (at your option) any later version.
 
-`groff' is distributed in the hope that it will be useful, but WITHOUT
+'groff' 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
+along with this program.  If not, see
 <http://www.gnu.org/licenses/gpl-2.0.html>.
 
 
index 7266790..0e0e86d 100644 (file)
@@ -1,6 +1,6 @@
 README_PERL
 
-`groffer' is written in the programming language Perl.
+'groffer' is written in the programming language Perl.
 
 
 Compatibility
@@ -8,37 +8,37 @@ Compatibility
 It was written in Linux, but due to Free Software under GNU it is
 available for each operating system.
 
-For testing, `groffer.pl' may be used directly without a Makefile.  By
-`make', this file will be transformed into the file `groffer' that will
+For testing, 'groffer.pl' may be used directly without a Makefile.  By
+'make', this file will be transformed into the file 'groffer' that will
 be installed.
 
 
 Temporary files
 
-The `file' and `so' temporaries are numbered and the files with .so
+The 'file' and 'so' temporaries are numbered and the files with .so
 request are copied.  All .so requests are handled; this is an
-extension to `man' that deals only with the first .so request.
+extension to 'man' that deals only with the first .so request.
 
 
 ####### License
 
-Copyright (C) 2003-201 Free Software Foundation, Inc.
+Copyright (C) 2003-2018 Free Software Foundation, Inc.
 Written by Bernd Warken <groff-bernd.warken-72@web.de>.
 
-This file is part of `groffer', which is part of `groff'.
+This file is part of 'groffer', which is part of 'groff'.
 
-`groff' is free software; you can redistribute it and/or modify it
+'groff' is free software; you can redistribute it and/or modify it
 under the terms of the GNU General Public License as published by
 the Free Software Foundation, either version 2 of the License, or
 (at your option) any later version.
 
-`groff' is distributed in the hope that it will be useful, but WITHOUT
+'groff' 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
+along with this program.  If not, see
 <http://www.gnu.org/licenses/gpl-2.0.html>.
 
 
similarity index 81%
rename from contrib/groffer/groffer.man
rename to contrib/groffer/groffer.1.man
index 46b1104..5eec6bf 100644 (file)
@@ -1,80 +1,84 @@
-.TH GROFFER @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
+.TH GROFFER @MAN1EXT@ "@MDATE@" "groff @VERSION@"
 .SH NAME
-groffer \- display groff files and man\~pages on X and tty
-.
-.\" The .SH was moved to this place in order to appease `apropos'.
-.
-.\" --------------------------------------------------------------------
-.\" Legalese
-.\" --------------------------------------------------------------------
-.
-.de co
-Copyright \[co] 2001-2014 Free Software Foundation, Inc.
-
-This file is part of groffer, which is part of groff, a free software
-project.
-
-You can redistribute it and/or modify it under the terms of the GNU
-General Public License version 2 as published by the Free Software
-Foundation.
-
-The license text is available in the internet at
-.UR http://www.gnu.org/licenses/gpl-2.0.html
-.UE .
-..
-.
-.de au
-This file was written by
-.MT groff-bernd.warken-72@web.de
-Bernd Warken
-.ME .
-..
-.
-.\" --------------------------------------------------------------------
+groffer \- display groff files and man pages on X and tty
+.
+.
+.\"*********************************************************************
+.\"
+.\" This man page doesn't use extended groff syntax!
+.\" XXX: Yes, it does--"\~" is ubiquitous.  "\/" and "\," also occur.
+.\" Formatting it with and without groff's option '-C' should always
+.\" give the same result.
+.\"
+.\"*********************************************************************
+.
+.
+.\" ====================================================================
+.\" Legal Terms
+.\" ====================================================================
+.\"
+.\" Copyright (C) 2001-2018 Free Software Foundation, Inc.
+.\"
+.\" This file is part of groffer, which is part of groff, a free
+.\" software project.
+.\"
+.\" You can redistribute it and/or modify it under the terms of the GNU
+.\" General Public License version 2 as published by the Free Software
+.\" Foundation.
+.\"
+.\" The license text is available in the internet at
+.\" <http://www.gnu.org/licenses/gpl-2.0.html>.
+.
+.
+.\" ====================================================================
 .\" Characters
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .\" Ellipsis ...
-.ie t .ds EL \fS\N'188'\fP
-.el .ds EL \&.\|.\|.\&\
+.ie t .ds EL \fS\N'188'\fP\"
+.el .ds EL \&.\|.\|.\&\"
 .\" called with \*(EL
 .
 .\" Bullet
-.ie t .ds BU \[bu]
+.ie t .ds BU \(bu
 .el .ds BU *
-.\" used in `.IP \*(BU 2m' (former .Topic)
+.\" used in '.IP \*(BU 2m' (former .Topic)
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "SYNOPSIS"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .SY groffer
+.RI [ mode-option
+\*(EL]
+.RI [ groff-option
+\*(EL]
+.RI [ man-option
+\*(EL]
+.RI [ X-option
+\*(EL]
 .OP \-\-
-.OP \%filespec \*(EL
+.RI [ filespec
+\*(EL]
 .YS
 .
 .SY groffer
-.OP mode-option \*(EL
-.OP groff-options \*(EL
-.OP man-options \*(EL
-.OP X-options \*(EL
-.OP \-\-
-.OP \%filespec \*(EL
-.YS
-.
+.B \-h
 .SY groffer
-.BR \-h " | " \-\-help
+.B \-\-help
 .YS
 .
 .SY groffer
-.BR \-v " | " \-\-version
+.B \-v
+.SY groffer
+.B \-\-version
 .YS
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH DESCRIPTION
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The
 .B \%groffer
@@ -102,7 +106,7 @@ preprocessors, such as
 The
 .B \%groffer
 program also includes many of the features for finding and displaying
-the \%\f[CR]Unix\f[] manual pages
+the \%\f(CRUnix\fP manual pages
 .nh
 .RI ( man\~pages ),
 .hy
@@ -127,8 +131,7 @@ behaviors.
 .
 This can be done either in configuration files, with the shell
 environment variable
-.SM
-.BR \%$GROFFER_OPT ,
+.IR \%GROFFER_OPT ,
 or on the command line.
 .
 .
@@ -138,16 +141,19 @@ available for
 .IR \%groff .
 .
 This includes the
+X Window System-based
 .I \%groff
-native \%\f[CR]X\~Window\f[] viewer
+program
 .BR \%gxditview (@MAN1EXT@),
 each
-.IR \%Postcript ,
-.IR \%pdf ,
+.IR \%PostScript ,
+.IR \%PDF ,
 or
-.I \%dvi
+.I \%DVI
 display program, a web browser by generating
-.I \%html
+.I \%HTML
+or
+.I \%XHTML
 in
 .IR \%www\~mode ,
 or several
@@ -168,28 +174,28 @@ But all parts can also be controlled manually by arguments.
 .
 .
 .P
-Several file names can be specified on the command line arguments.
+Several file names can be specified on the command-line arguments.
 .
 They are transformed into a single document in the normal way of
 .BR \%groff .
 .
 .
 .P
-Option handling is done in \f[CR]GNU\f[] style.
+Option handling is done in \f(CRGNU\fP style.
 .
 Options and file names can be mixed freely.
 .
 The option
-.RB ` \-\- '
+.RB \[lq] \-\- \[rq]
 closes the option handling, all following arguments are treated as
 file names.
 .
 Long options can be abbreviated in several ways.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "OPTION OVERVIEW"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .TP
 .I breaking options
@@ -225,23 +231,12 @@ Long options can be abbreviated in several ways.
 .OP \-\-utf8
 .OP \-\-viewer prog
 .OP \-\-www
-.OP \-\-x\~\fR|\fB\~\-\-X
+.OP \-\-xhtml
+.OP \-\-x\~\fR|\fB\~\-\-X\fP
 .YS
 .RE
 .
 .
-.ig
-Replace these options by --viewer
-.OP \-\-dvi\-viewer prog
-.OP \-\-html\-viewer prog
-.OP \-\-pdf\-viewer prog
-.OP \-\-ps\-viewer prog
-.OP \-\-tty\-viewer prog
-.OP \-\-www\-viewer prog
-.OP \-\-x\-viewer\~\fR|\fB\~\-\-X\-viewer prog
-..
-.
-.
 .TP
 .I options related to \%groff
 .RS
@@ -294,14 +289,14 @@ short options are accepted.
 .OP \-\-troff\-device device
 .YS
 .P
-Further long options of \f[CR]GNU\f[]
+Further long options of \f(CRGNU\fP
 .B man
 are accepted as well.
 .RE
 .
 .
 .TP
-.I X Window Toolkit options
+.I options mapped to X Window System Toolkit Intrinsics options
 .RS
 .P
 .SY
@@ -365,7 +360,7 @@ that is optionally followed by an
 The name of a
 .I man section
 is a single character from
-.BR \%[1\[en]9on] ,
+.BR \%[1\(en9on] ,
 the
 .I extension
 is some word.
@@ -426,9 +421,9 @@ in the lowest man\~section.
 .RE
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "OPTION DETAILS"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The
 .B \%groffer
@@ -476,16 +471,15 @@ an error is raised.
 .
 .P
 These abbreviations are only allowed in the environment variable
-.SM
-.BR \%$GROFFER_OPT ,
+.IR \%GROFFER_OPT ,
 but not in the configuration files.
 .
 In configuration, all long options must be exact.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "groffer breaking Options"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 As soon as one of these options is found on the command line it is
 executed, printed to standard output, and the running
@@ -506,9 +500,9 @@ standard output.
 Print version information to standard output.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "groffer Mode Options"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The display mode and the viewer programs are determined by these
 options.
@@ -521,10 +515,11 @@ The default modes are
 .IR "mode pdf" ,
 .IR "mode ps" ,
 .IR "mode html" ,
+.IR "mode xhtml" ,
 .IR "mode x" ,
 and
 .I "mode dvi"
-in \%\f[CR]X\~Window\f[] with different viewers and
+in the X Window System with different viewers and
 .I mode tty
 with device
 .I utf8
@@ -535,25 +530,25 @@ default mode do not exist.
 .
 .
 .P
-In \%\f[CR]X\~Window\f[], many programs create their own window when
+In the X Window System, many programs create their own window when
 called.
 .
 .B \%groffer
 can run these viewers as an independent program in the background.
 .
 As this does not work in text mode on a terminal (tty) there must be a
-way to know which viewers are \%\f[CR]X\~Window\f[] graphical
+way to know which viewers are X Window System-based graphical
 programs.
 .
 The
 .B \%groffer
-script has a small set of information on some viewer names.
+script has a small amount of information on some viewer names.
 .
 If a viewer argument of the command\-line chooses an element that is
-kept as \%\f[CR]X\~Window\f[] program in this list it is treated as a
-viewer that can run in the background.
+recognized as an X Window System-based program in this list, it is
+treated as a viewer that can run in the background.
 .
-All other, unknown viewer calls are not run in the background.
+Unrecognized viewers are not run in the background.
 .
 .
 .P
@@ -567,7 +562,7 @@ combination of the options
 and
 .B \-\-viewer=less
 shows the content of the
-.I Postscript
+.I PostScript
 output, the source code, with the pager
 .BR less .
 .
@@ -580,12 +575,11 @@ Equivalent to
 .
 .TP
 .B \-\-default
-Reset all configuration from previously processed command line options
+Reset all configuration from previously processed command-line options
 to the default values.
 .
 This is useful to wipe out all former options of the configuration, in
-.SM
-.BR \%$GROFFER_OPT ,
+.IR \%GROFFER_OPT ,
 and restart option processing using only the rest of the command line.
 .
 .
@@ -597,8 +591,8 @@ to the comma separated list given in the argument.
 .
 See
 .B \-\-mode
-for details on modes.  Display in the default manner; actually, this
-means to try the modes
+for details on modes.
+Display in the default manner; actually, this means to try the modes
 .IR x ,
 .IR ps ,
 and
@@ -611,24 +605,14 @@ in this sequence.
 .B \-\-dvi
 Equivalent to
 .BR \-\-mode=\%dvi .
-.TQ
-.BI \-\-viewer \ prog
-Choose a viewer program for
-.IR \%dvi\~mode .
-.
-This can be a file name or a program to be searched in
-.SM
-.BR $PATH .
 .
-Known \%\f[CR]X\~Window\f[]
-.I \%dvi
-viewers include
+Known
+.I \%DVI
+viewers for the X Window System include
 .BR \%xdvi (1)
 and
 .BR \%dvilx (1).
 .
-In each case, arguments can be provided additionally.
-.
 .
 .TP
 .B \-\-groff
@@ -640,15 +624,6 @@ Equivalent to
 .B \-\-html
 Equivalent to
 .BR \-\-mode=html .
-.TQ
-.B \-\-viewer
-Choose a web browser program for viewing in
-.IR \%html\~mode .
-.
-It can be the path name of an executable file or a program in
-.BR $PATH .
-.
-In each case, arguments can be provided additionally.
 .
 .
 .TP
@@ -676,7 +651,7 @@ when a different mode was specified before.
 .TP
 .B dvi
 Display formatted input in a
-.I \%dvi
+.I \%DVI
 viewer program.
 .
 By default, the formatted input is displayed with the
@@ -699,7 +674,7 @@ viewing features.
 .
 .TP
 .B html
-Translate the input into html format and display the result in a web
+Translate the input into HTML format and display the result in a web
 browser program.
 .
 By default, the existence of a sequence of standard web browsers is
@@ -707,7 +682,15 @@ tested, starting with
 .BR \%konqueror (1)
 and
 .BR \%mozilla (1).
-The text html viewer is
+The text HTML viewer is
+.BR \%lynx (1).
+.
+By default, the existence of a sequence of standard web browsers is
+tested, starting with
+.BR \%konqueror (1)
+and
+.BR \%mozilla (1).
+The text HTML viewer is
 .BR \%lynx (1).
 .
 .
@@ -742,14 +725,14 @@ Sometimes this mode produces more correct output than the default
 .
 By default, the input is formatted by
 .B \%groff
-using the Postscript device, then it is transformed into the PDF file
+using the PostScript device, then it is transformed into the PDF file
 format using
 .BR \%gs (1),
 or
 .BR ps2pdf (1).
 .
 If that's not possible, the
-.I Postscript mode (ps)
+.I PostScript mode (ps)
 is used instead.
 .
 Finally it is displayed using different viewer programs.
@@ -757,7 +740,7 @@ Finally it is displayed using different viewer programs.
 .
 .TP
 .B ps
-Display formatted input in a Postscript viewer program.
+Display formatted input in a PostScript viewer program.
 .
 By default, the formatted input is displayed in one of many viewer
 programs.
@@ -781,7 +764,7 @@ by default, can be chosen with option
 Format in a
 .I \%groff\~text\~mode
 and write the result to standard output using a text pager program,
-even when in \%\f[CR]X\~Window\f[].
+even when in the X Window System.
 .
 .
 .TP
@@ -800,7 +783,7 @@ By default, the formatted input is displayed with the
 .BR \%gxditview (@MAN1EXT@)
 program being distributed together with
 .BR \%groff .
-But the standard \%\f[CR]X\~Window\f[] tool
+But the legacy X Window System application
 .BR \%xditview (1)
 can also be chosen with the option
 .BR \-\-viewer .
@@ -838,6 +821,19 @@ Equivalent to
 .BR \-\-mode=x .
 .
 .
+.TP
+.B xhtml
+Translate the input into
+.I XHTML
+format, which is an
+.I XML
+version of
+.IR HTML .
+.
+Then display the result in a web browser program, mostly the known
+.IR "HTML viewers" .
+.
+.
 .P
 The following modes do not use the
 .I \%groffer
@@ -878,31 +874,14 @@ Equivalent to
 .B \-\-pdf2
 Equivalent to
 .BR \-\-mode=pdf2 .
-.TQ
-.BI \-\-viewer \ prog
-Choose a viewer program for
-.IR \%pdf\~mode .
-.
-This can be a file name or a program to be searched in
-.SM
-.BR $PATH ;
-arguments can be provided additionally.
 .
 .
 .TP
 .B \-\-ps
 Equivalent to
 .BR \-\-mode=ps .
-.TQ
-.BI \-\-viewer \ prog
-Choose a viewer program for
-.IR \%ps\~mode .
 .
-This can be a file name or a program to be searched in
-.SM
-.BR $PATH .
-.
-Common Postscript viewers include
+Common PostScript viewers include
 .BR \%okular (1),
 .BR \%evince (1),
 .BR \%gv (1),
@@ -937,10 +916,6 @@ It will not be displayed in graphical mode.
 .B \-\-tty
 Equivalent to
 .BR \-\-mode=tty .
-.TQ
-.BI \-\-viewer \ prog
-Choose a text pager for mode
-.IR tty .
 The standard pager is
 .BR less (1).
 This option is equivalent to
@@ -948,8 +923,16 @@ This option is equivalent to
 option
 .BR \-\-pager=\,\fIprog\fP .
 The option argument can be a file name or a program to be searched in
-.SM
-.BR $PATH ;
+.IR $PATH ;
+arguments can be provided additionally.
+.
+.
+.TP
+.BI \-\-viewer \ prog
+Choose a viewer program for actual device or mode.
+.
+This can be a file name or a program to be searched in
+.IR $PATH ;
 arguments can be provided additionally.
 .
 .
@@ -957,27 +940,16 @@ arguments can be provided additionally.
 .B \-\-www
 Equivalent to
 .BR \-\-mode=html .
-.TQ
-.B \-\-viewer
-.IR prog .
 .
 .
 .TP
 .B \-\-X\~\fR|\fB\~\-\-x
 Equivalent to
 .BR \-\-mode=x .
-.TQ
-.BI \-\-viewer " prog"
-Choose a viewer program for
-.IR \%x\~mode .
 Suitable viewer programs are
 .BR \%gxditview (@MAN1EXT@)
 which is the default and
 .BR \%xditview (1).
-The argument can be any executable file or a program in
-.SM
-.BR $PATH ;
-arguments can be provided additionally.
 .
 .
 .TP
@@ -1008,9 +980,9 @@ So postprocessors, macro packages, compatibility with
 and much more can be manually specified.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Options related to groff"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 All short options of
 .B \%groffer
@@ -1044,7 +1016,7 @@ process.
 .
 .TP
 .B \-\-a
-This generates an ascii approximation of output in the
+This generates an ASCII approximation of output in the
 .IR \%text\~modes .
 .
 That could be important when the text pager has problems with control
@@ -1104,6 +1076,7 @@ arguments are mapped to the corresponding
 option:
 .BR \%dvi ,
 .BR \%html ,
+.BR \%xhtml ,
 and
 .BR \%ps .
 All
@@ -1172,9 +1145,9 @@ none of these
 options should be needed, except for advanced usage.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Options for man\~pages"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .TP
 .B \-\-apropos
@@ -1281,7 +1254,7 @@ For each
 .I \%filespec
 argument search all
 .I \%man\~pages
-and display their description \[em] or say that it is not a
+and display their description \(em or say that it is not a
 .IR \%man\~page .
 This is written from anew, so it differs from
 .IR man 's
@@ -1316,7 +1289,7 @@ The default is looking up for local files.
 .
 .TP
 .B \-\-man
-Check the non-option command line arguments
+Check the non-option command-line arguments
 .nh
 .RI ( filespecs )
 .hy
@@ -1349,16 +1322,16 @@ and
 .BR \-\-whatis .
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Long options taken over from GNU man"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The long options of
 .B \%groffer
-were synchronized with the long options of \f[CR]GNU\f[]
+were synchronized with the long options of \f(CRGNU\fP
 .BR man .
 .
-All long options of \f[CR]GNU\f[]
+All long options of \f(CRGNU\fP
 .B man
 are recognized, but not all of these options are important to
 .BR \%groffer ,
@@ -1382,13 +1355,12 @@ are documented.
 .
 .
 .P
-If your system has \f[CR]GNU\f[]
+If your system has \f(CRGNU\fP
 .B man
-installed the full set of long and short options of the \f[CR]GNU\f[]
+installed the full set of long and short options of the \f(CRGNU\fP
 .B man
 program can be passed via the environment variable
-.SM
-.BR \%$MANOPT ;
+.IR MANOPT ;
 see
 .BR \%man (1).
 .
@@ -1444,8 +1416,7 @@ Set the language for
 .IR \%man\~pages .
 .
 This has the same effect, but overwrites
-.SM
-.BR $LANG .
+.IR $LANG .
 .
 .
 .TP
@@ -1509,16 +1480,16 @@ Equivalent to
 .BR \-\-location .
 .
 .
-.\" --------------------------------------------------------------------
-.SS "X\~\%Window\~\%Toolkit Options"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
+.SS "X Window System Toolkit Intrinsics Options"
+.\" ====================================================================
 .
 The following long options were adapted from the corresponding
-\%\f[CR]X\~Window\~Toolkit\f[] options.
+X Window System Toolkit Intrinsics options.
 .
 .B \%groffer
 will pass them to the actual viewer program if it is an
-\%\f[CR]X\~Window\f[] program.
+X Window System program.
 .
 Otherwise these options are ignored.
 .
@@ -1534,14 +1505,15 @@ options, for example,
 .B \%groffer
 uses the option
 .B \-\-font
-for the \%\f[CR]X\~Window\f[] option
+for the X Window System Toolkit Intrinsics option
 .BR \-font .
 .
 .
 .P
 See
 .BR X (7)
-and the documentation on the \%\f[CR]X\~Window\~Toolkit\f[] options
+and the manual
+.I "X Toolkit Intrinsics \(en C Language Interface"
 for more details on these options and their arguments.
 .
 .
@@ -1581,9 +1553,12 @@ window.
 .
 .TP
 .BI \-\-display \ X-display
-Set the \%\f[CR]X\~Window\f[] display on which the viewer program
-shall be started, see the \%\f[CR]X\~Window\f[] documentation for the
-syntax of the argument.
+Set the X Window System display on which the viewer program
+shall be started.
+.
+See section \(lqDisplay Names\(rq in
+.BR X (7)
+for the syntax of the argument.
 .
 .
 .TP
@@ -1607,7 +1582,7 @@ This is equivalent to
 .BI \-\-font \ font_name
 Set the font used by the viewer window.
 .
-The argument is an \%\f[CR]X\~Window\f[] font name.
+The argument is an X Window System font name.
 .
 .
 .TP
@@ -1621,14 +1596,14 @@ This is equivalent to
 Set the geometry of the display window, that means its size and its
 starting position.
 .
-See
-.BR \%X (7)
+See section \(lqGeometry Specifications\(rq in
+.BR X (7)
 for the syntax of the argument.
 .
 .
 .TP
 .BI \-\-resolution \ value
-Set \%\f[CR]X\~Window\f[] resolution in dpi (dots per inch) in some
+Set X Window System resolution in dpi (dots per inch) in some
 viewer programs.
 .
 The only supported dpi values are
@@ -1656,12 +1631,12 @@ Set the title for the viewer window.
 .
 .TP
 .BI \-\-xrm \ 'resource'
-Set \f[CR]\%X\~Window\f[] resource.
+Set the X Window System server resource to the given value.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Options for Development"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .TP
 .B \-\-debug
@@ -1701,9 +1676,8 @@ files, do not delete them during the run of
 .TP
 .B \-\-debug\-params
 Print the parameters, as obtained from the configuration files, from
-.SM
-.BR \%GROFFER_OPT ,
-and the command line arguments.
+.IR \%GROFFER_OPT ,
+and the command-line arguments.
 .
 .
 .TP
@@ -1749,8 +1723,7 @@ the display program for viewing the output with its arguments,
 .
 .IP \*(BU 2m
 the active parameters from the config files, the arguments in
-.SM
-.BR \%$GROFFER_OPT ,
+.IR \%GROFFER_OPT ,
 and the arguments of the command line,
 .
 .IP \*(BU 2m
@@ -1769,9 +1742,9 @@ and
 .BR \-\-mode=groff .
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Filespec Arguments"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 A
 .I \%filespec
@@ -1790,12 +1763,12 @@ does.
 .
 .
 .P
-The strange \%\f[CR]POSIX\f[] behavior to regard all arguments behind
+The strange \%\f(CRPOSIX\fP behavior to regard all arguments behind
 the first non-option argument as
 .I \%filespec
 arguments is ignored.
 .
-The \f[CR]GNU\f[] behavior to recognize options even when mixed with
+The \f(CRGNU\fP behavior to recognize options even when mixed with
 .I \%filespec
 arguments is used throughout.
 .
@@ -1803,7 +1776,7 @@ But, as usual, the double minus argument
 .B \-\-
 ends the option handling and interprets all following arguments as
 .I \%filespec
-arguments; so the \%\f[CR]POSIX\f[] behavior can be easily adopted.
+arguments; so the \%\f(CRPOSIX\fP behavior can be easily adopted.
 .
 .
 .P
@@ -1867,13 +1840,13 @@ This can optionally be followed by a string, the so-called
 .IR extension .
 The
 .I extension
-allows to store several
+allows the storage of several
 .I man\~pages
 with the same name in the same
 .IR section .
 But the
 .I extension
-is only rarely used, usually it is omitted.
+is only rarely used; usually it is omitted.
 .
 Then the
 .I extensions
@@ -1992,9 +1965,9 @@ So they should have at least the same style of the
 language.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "OUTPUT MODES"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 By default, the
 .B \%groffer
@@ -2025,8 +1998,8 @@ option
 .
 .
 .P
-Several different modes are offered, graphical modes for
-\f[CR]\%X\~Window\f[],
+Several different modes are offered: graphical modes for
+the X Window System,
 .IR \%text\~modes ,
 and some direct
 .I \%groff\~modes
@@ -2056,24 +2029,23 @@ The searching for
 and the decompression of the input are active in every mode.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Graphical Display Modes"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
-The graphical display modes work mostly in the \%\f[CR]X\~Window\f[]
+The graphical display modes work mostly in the X Window System
 environment (or similar implementations within other windowing
 environments).
 .
 The environment variable
-.SM
-.B \%$DISPLAY
+.I \%DISPLAY
 and the option
 .B \-\-display
-are used for specifying the \%\f[CR]X\~Window\f[] display to be used.
+are used for specifying the X Window System display to be used.
 .
-If this environment variable is empty
+If this environment variable is empty,
 .B \%groffer
-assumes that no \%\f[CR]X\~Window\f[] is running and changes to a
+assumes that the X Window System is not running and changes to a
 .IR \%text\~mode .
 .
 You can change this automatic behavior by the option
@@ -2082,7 +2054,7 @@ You can change this automatic behavior by the option
 .
 .P
 Known viewers for the graphical display modes and their standard
-\%\f[CR]X\~Window\f[] viewer programs are
+X Window System viewer programs are
 .
 .IP \*(BU 2m
 in a PDF viewer
@@ -2093,20 +2065,21 @@ in a PDF viewer
 .IP \*(BU 2m
 in a web browser
 .nh
-.RI ( html
+.RI ( html ,
+.RI ( xhtml ,
 or
 .IR \%www\~mode )
 .hy
 .RE
 .
 .IP \*(BU 2m
-in a Postscript viewer
+in a PostScript viewer
 .nh
 .RI ( \%ps\~mode )
 .hy
 .
 .IP \*(BU 2m
-\%\f[CR]X\~Window\f[]
+X Window System
 .I roff
 viewers such as
 .BR \%gxditview (@MAN1EXT@)
@@ -2116,7 +2089,7 @@ or
 .IR \%x\~mode )
 .
 .IP \*(BU 2m
-in a dvi viewer program
+in a DVI viewer program
 .nh
 .RI ( \%dvi\~mode )
 .hy
@@ -2125,8 +2098,8 @@ in a dvi viewer program
 .P
 The
 .I \%pdf\~mode
-has a major advantage \[em] it is the only graphical display mode that
-allows to search for text within the viewer; this can be a really
+has a major advantage \(em it is the only graphical display mode that
+allows searching for text within the viewer; this can be a really
 important feature.
 .
 Unfortunately, it takes some time to transform the input into the PDF
@@ -2135,17 +2108,17 @@ format, so it was not chosen as the major mode.
 .
 .P
 These graphical viewers can be customized by options of the
-\%\f[CR]X\~Window\~Toolkit\f[].
+X Window System Toolkit Intrinsics.
 .
 But the
 .B \%groffer
 options use a leading double minus instead of the single minus used by
-the \%\f[CR]X\~Window\~Toolkit\f[].
+the X Window System Toolkit Intrinsics.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Text modes"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 There are two modes for text output,
 .I \%mode\~text
@@ -2156,8 +2129,7 @@ for a text output on a text terminal using some pager program.
 .
 .P
 If the variable
-.SM
-.B \%$DISPLAY
+.I \%DISPLAY
 is not set or empty,
 .B \%groffer
 assumes that it should use
@@ -2184,7 +2156,7 @@ The pager to be used can be specified by one of the options
 and
 .BR \-\-viewer ,
 or by the environment variable
-.BR \%$PAGER .
+.IR PAGER .
 If all of this is not used the
 .BR \%less (1)
 program with the option
@@ -2193,9 +2165,9 @@ for correctly displaying control sequences is used as the default
 pager.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Special Modes for Debugging and Development"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 These modes use the
 .I \%groffer
@@ -2263,9 +2235,9 @@ short options are supported by
 .BR \%groffer .
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "MAN PAGE SEARCHING"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The default behavior of
 .B \%groffer
@@ -2301,9 +2273,9 @@ was retrieved for some file parameter a warning is issued on standard
 error, but processing is continued.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Search Algorithm"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 Let us now assume that a
 .I \%man\~page
@@ -2315,7 +2287,7 @@ program provides a search facility for
 .IR \%man\~pages .
 .
 All long options, all environment variables, and most of the
-functionality of the \f[CR]GNU\fP
+functionality of the \f(CRGNU\fP
 .BR \%man (1)
 program were implemented.
 .
@@ -2375,14 +2347,12 @@ It is generated by the following methods.
 .
 .IP \*(BU 2m
 The environment variable
-.SM
-.B \%$MANPATH
+.I \%MANPATH
 can be set.
 .
 .IP \*(BU 2m
 It can be read from the arguments of the environment variable
-.SM
-.BR \%$MANOPT .
+.IR MANOPT .
 .
 .IP \*(BU 2m
 The
@@ -2402,8 +2372,7 @@ program is tried to determine one.
 .
 .IP \*(BU 2m
 If this does not work a reasonable default path from
-.SM
-.B $PATH
+.I $PATH
 is determined.
 .
 .
@@ -2428,17 +2397,15 @@ can be provided by 3 methods.
 .
 .IP \*(BU 2m
 The environment variable
-.SM
-.B \%$SYSTEM
+.I \%SYSTEM
 has the lowest precedence.
 .
 .IP \*(BU 2m
 This can be overridden by an option in
-.SM
-.BR \%$MANOPT .
+.IR MANOPT .
 .
 .IP \*(BU 2m
-This again is overridden by the command line option
+This again is overridden by the command-line option
 .BR \-\-systems .
 .
 .
@@ -2481,26 +2448,22 @@ can be chosen by several methods.
 .
 .IP \*(BU 2m
 Environment variable
-.SM
-.BR $LANG .
+.IR LANG .
 .
 .IP \*(BU 2m
 This is overridden by
-.SM
-.BR \%$LC_MESSAGES .
+.IR \%LC_MESSAGES .
 .
 .IP \*(BU 2m
 This is overridden by
-.SM
-.BR $LC_ALL .
+.IR LC_ALL .
 .
 .IP \*(BU 2m
 This can be overridden by providing an option in
-.SM
-.BR \%$MANOPT .
+.IR MANOPT .
 .
 .IP \*(BU 2m
-All these environment variables are overridden by the command line
+All these environment variables are overridden by the command-line
 option
 .BR \-\-locale .
 .
@@ -2509,7 +2472,7 @@ option
 The
 .I default language
 can be specified by specifying one of the pseudo-language parameters
-\f[CR]C\fP or \f[CR]\%POSIX\fP.
+\f(CRC\fP or \f(CR\%POSIX\fP.
 .
 This is like deleting a formerly given
 .I language
@@ -2527,13 +2490,13 @@ Of course, the
 .I language
 name is determined by
 .BR man .
-In \f[CR]GNU\fP
+In \f(CRGNU\fP
 .BR man ,
-it is specified in the \%\f[CR]POSIX\~1003.1\fP based format:
+it is specified in the \%\f(CRPOSIX\~1003.1\fP based format:
 .P
 .nh
-\f[I]<language>\/\f[][\f[CB]_\f[]\,\f[I]<territory>\/\f[][\f[CB].\fP\
-\f[I]<character-set>\/\f[][\f[CB],\fP\,\f[I]<version>\/\fP]]],
+\fI<language>\/\fP[\f(CB_\fP\,\fI<territory>\/\fP[\f(CB.\fP\
+\fI<character-set>\/\fP[\f(CB,\fP\,\fI<version>\/\fP]]],
 .hy
 .P
 but the two-letter code in
@@ -2613,8 +2576,8 @@ Each
 file in a
 .I section
 directory has the form
-.IR \%\f[CB]man\fP<section>\f[CB]/\fP<name>\f[CB].\fP<section>\
-[<extension>][\f[CB].\fP<compression>] ,
+.IR \%\f(CBman\fP<section>\f(CB/\fP<name>\f(CB.\fP<section>\
+[<extension>][\f(CB.\fP<compression>] ,
 where
 .I \%<extension>
 and
@@ -2659,8 +2622,7 @@ on the command line:
 .
 .IP \*(BU 2m
 Environment variable
-.SM
-.B \%$MANSECT
+.I \%MANSECT
 .
 .IP \*(BU 2m
 Command line option
@@ -2692,8 +2654,7 @@ search to only some
 The multiple
 .I sections
 are only possible for
-.SM
-.B \%$MANSECT
+.I \%MANSECT
 and
 .BR \-\-sections .
 .
@@ -2718,8 +2679,7 @@ abbreviation is good enough in most cases.
 .
 .IP \*(BU 2m
 Environment variable
-.SM
-.B \%$EXTENSION
+.I \%EXTENSION
 .
 .IP \*(BU 2m
 Command line option
@@ -2745,15 +2705,15 @@ searching, see
 .BR \%man (1).
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Examples of man files"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .TP
 .B /usr/share/man/man1/groff.1
 This is an uncompressed file for the
 .I \%man\~page
-\f[CR]groff\fP in
+\f(CRgroff\fP in
 .IR section\~1 .
 .
 It can be called by
@@ -2841,8 +2801,8 @@ The file can be viewed with one of the following commands
 \fIsh#\fR\~groffer\~1e\~ctags
 \fIsh#\fR\~groffer\~\-\-extension=e\~\-\-sections=1\~ctags
 .EE
-where \f[CR]e\fP works as an abbreviation for the extension
-\f[CR]emacs21\fP.
+where \f(CRe\fP works as an abbreviation for the extension
+\f(CRemacs21\fP.
 .
 .
 .TP
@@ -2899,9 +2859,9 @@ The command is then
 .EE
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH DECOMPRESSION
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The program has a decompression facility.
 .
@@ -2912,7 +2872,7 @@ or
 .BR \%bzip2 (1)
 it is decompressed on-the-fly.
 .
-This includes the \f[CR]GNU\fP
+This includes the \f(CRGNU\fP
 .BR \%.gz ,
 .BR \%.bz2 ,
 and the traditional
@@ -2923,9 +2883,9 @@ The program displays the concatenation of all decompressed input in
 the sequence that was specified on the command line.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "ENVIRONMENT"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The
 .B \%groffer
@@ -2934,26 +2894,26 @@ other programs.
 .
 All environment variables of
 .BR \%groff (@MAN1EXT@)
-and \f[CR]GNU\fP
+and \f(CRGNU\fP
 .BR \%man (1)
 and some standard system variables are honored.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Native groffer Variables"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .TP
-.SM
-.B \%$GROFFER_OPT
+.I \%GROFFER_OPT
 Store options for a run of
 .BR \%groffer .
 .
 The options specified in this variable are overridden by the options
 given on the command line.
 .
-The content of this variable is run through the shell builtin `eval';
-so arguments containing white-space or special shell characters should
+The content of this variable is run through the shell builtin
+\[lq]eval\[rq],
+so arguments containing whitespace or special shell characters should
 be quoted.
 .
 Do not forget to export this variable, otherwise it does not exist
@@ -2961,19 +2921,17 @@ during the run of
 .BR groffer .
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "System Variables"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The following variables have a special meaning for
 .BR \%groffer .
 .
 .
 .TP
-.SM
-.B \%$DISPLAY
-If this variable is set this indicates that the \%\f[CR]X\~Window\fP
-system is running.
+.I \%DISPLAY
+If set, this variable indicates that the X Window System is running.
 .
 Testing this variable decides on whether graphical or text output is
 generated.
@@ -2981,7 +2939,7 @@ generated.
 This variable should not be changed by the user carelessly, but it can
 be used to start the graphical
 .B \%groffer
-on a remote \%\f[CR]X\~Window\fP terminal.
+on a remote X Window System terminal.
 .
 For example, depending on your system,
 .B \%groffer
@@ -2993,14 +2951,11 @@ can be started on the second monitor by the command
 .
 .
 .TP
-.SM
-.B \%$LC_ALL
+.I \%LC_ALL
 .TQ
-.SM
-.B \%$LC_MESSAGES
+.I \%LC_MESSAGES
 .TQ
-.SM
-.B $LANG
+.I LANG
 If one of these variables is set (in the above sequence), its content
 is interpreted as the locale, the language to be used, especially when
 retrieving
@@ -3026,7 +2981,7 @@ is a character set or encoding identifier like ISO-8859-1 or UTF-8;
 see
 .BR \%setlocale (3).
 .
-The locale values \f[CR]C\fP and \%\f[CR]POSIX\fP
+The locale values \f(CRC\fP and \%\f(CRPOSIX\fP
 stand for the default, i.e.\& the
 .I \%man\~page
 directories without a language prefix.
@@ -3035,8 +2990,7 @@ This is the same behavior as when all 3\~variables are unset.
 .
 .
 .TP
-.SM
-.B \%$PAGER
+.I \%PAGER
 This variable can be used to set the pager for the tty output.
 .
 For example, to disable the use of a pager completely set this
@@ -3050,8 +3004,7 @@ program
 .sp
 .
 .TP
-.SM
-.B $PATH
+.I PATH
 All programs within the
 .B \%groffer
 script are called without a fixed path.
@@ -3061,9 +3014,9 @@ within the run of
 .BR \%groffer .
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Groff Variables"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The
 .B \%groffer
@@ -3080,8 +3033,7 @@ The following variable has a direct meaning for the
 program.
 .
 .TP
-.SM
-.B \%$GROFF_TMPDIR
+.I \%GROFF_TMPDIR
 If the value of this variable is an existing, writable directory,
 .B \%groffer
 uses it for storing its temporary files, just as
@@ -3093,9 +3045,9 @@ See the
 man page for more details on the location of temporary files.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Man Variables"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 Parts of the functionality of the
 .B man
@@ -3112,14 +3064,12 @@ but the user interface is the same.
 The
 .B man
 environment variables can be overwritten by options provided with
-.SM
-.BR \%$MANOPT ,
+.IR MANOPT ,
 which in turn is overwritten by the command line.
 .
 .
 .TP
-.SM
-.B \%$EXTENSION
+.I \%EXTENSION
 Restrict the search for
 .I \%man\~pages
 to files having this extension.
@@ -3130,8 +3080,7 @@ see there for details.
 .
 .
 .TP
-.SM
-.B \%$MANOPT
+.I MANOPT
 This variable contains options as a preset for
 .BR \%man (1).
 As not all of these are relevant for
@@ -3147,8 +3096,7 @@ given on the command line.
 .
 .
 .TP
-.SM
-.B \%$MANPATH
+.I \%MANPATH
 If set, this variable contains the directories in which the
 .I \%man\~page
 trees are stored.
@@ -3158,8 +3106,7 @@ This is overridden by option
 .
 .
 .TP
-.SM
-.B \%$MANSECT
+.I \%MANSECT
 If this is a colon separated list of section names, the search for
 .I \%man\~pages
 is restricted to those manual sections in that order.
@@ -3169,8 +3116,7 @@ This is overridden by option
 .
 .
 .TP
-.SM
-.B \%$SYSTEM
+.I \%SYSTEM
 If this is set to a comma separated list of names these are interpreted
 as
 .I \%man\~page
@@ -3183,16 +3129,15 @@ see there for details.
 .
 .P
 The environment variable
-.SM
-.B \%$MANROFFSEQ
+.I \%MANROFFSEQ
 is ignored by
 .B \%groffer
 because the necessary preprocessors are determined automatically.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "CONFIGURATION FILES"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The
 .B \%groffer
@@ -3210,8 +3155,7 @@ System-wide configuration file for
 User-specific configuration file for
 .BR \%groffer ,
 where
-.SM
-.B \%$HOME
+.I \%$HOME
 denotes the user's home directory.
 .
 This file is called after the system-wide configuration file to enable
@@ -3225,8 +3169,7 @@ file in
 comes first; it is overwritten by the configuration file in the home
 directory; both configuration files are overwritten by the environment
 variable
-.SM
-.BR \%$GROFFER_OPT ;
+.IR \%GROFFER_OPT ;
 everything is overwritten by the command line arguments.
 .
 .
@@ -3242,12 +3185,12 @@ without an argument.
 .
 So each line with configuration information starts with a minus
 character
-.RB ` \- ';
+.RB \[lq] \- \[rq];
 a line with a long option starts with two minus characters
-.RB ` \-\- ',
+.RB \[lq] \-\- \[rq],
 a line with a short option or short option cluster starts with a
 single minus
-.RB ` \- '.
+.RB \[lq] \- \[rq].
 .
 .
 .P
@@ -3258,7 +3201,7 @@ they must be exact.
 .P
 The argument for a long option can be separated from the option name
 either by an equal sign
-.RB ` = '
+.RB \[lq] = \[rq]
 or by whitespace, i.e.\& one or several space or tab characters.
 .
 An argument for a short option or short option cluster can be directly
@@ -3279,7 +3222,7 @@ separating equal sign or whitespace; with a short option, the
 separator can be omitted as well.
 .
 For a long option with a separating equal sign
-.RB ` = ',
+.RB \[lq] = \[rq],
 the pair of quotes can be omitted, thus ending the line with the
 separating equal sign.
 .
@@ -3291,13 +3234,13 @@ In the configuration files, arbitrary whitespace is allowed at the
 beginning of each line, it is just ignored.
 .
 Each whitespace within a line is replaced by a single space character
-` ' internally.
+\[lq] \[rq] internally.
 .
 .
 .P
 All lines of the configuration lines that do not start
 with a minus character are ignored, such that comments starting with
-.RB ` # '
+.RB \[lq] # \[rq]
 are possible.
 .
 So there are no shell commands in the configuration files.
@@ -3321,7 +3264,6 @@ or
 \-\-foreground=DarkBlue
 \-\-resolution=100
 \-\-viewer=gxditview \-geometry 900x1200
-\-\-viewer xpdf \-Z 150
 .fi
 .hy
 .ft
@@ -3335,7 +3277,7 @@ are just ignored, so they act as command lines.
 This configuration sets four
 .B \%groffer
 options (the lines starting with
-.RB ` \- ').
+.RB \[lq] \- \[rq]).
 This has the following effects:
 .
 .
@@ -3381,9 +3323,9 @@ viewer with the argument
 .BR 150 .
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "EXAMPLES"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The usage of
 .B \%groffer
@@ -3407,9 +3349,9 @@ in the directory
 .BR /usr/local/share/doc/groff ,
 using the standard viewer
 .B \%gxditview
-as graphical viewer when in \%\f[CR]X\~Window\fP, or the
+as graphical viewer when in the X Window System, or the
 .BR \%less (1)
-pager program when not in \%\f[CR]X\~Window\fP.
+pager program otherwise.
 .
 .sp
 .EX
@@ -3476,7 +3418,7 @@ not split to a search for
 .
 .sp
 .EX
-\fIsh#\fR\~groffer\~groff\~\[cq]troff(1)\[cq]\~man:roff
+\fIsh#\fR\~groffer\~groff\~\(cqtroff(1)\(cq\~man:roff
 .EE
 .sp
 The arguments that are not existing files are looked-up as the
@@ -3492,13 +3434,13 @@ and
 .
 The quotes around
 .nh
-.I \[cq]troff(1)\[cq]
+.I \(cqtroff(1)\(cq
 .hy
 are necessary because the parentheses are special shell characters;
 escaping them with a backslash character
-.I \[rs](
+.I \(rs(
 and
-.I \[rs])
+.I \(rs)
 would be possible, too.
 .
 The formatted files are concatenated and displayed in one piece.
@@ -3516,6 +3458,8 @@ for the
 .B ls
 program, decompress it, format it to
 .I \%html
+or
+.I \%xhtml
 format
 .nh
 .RI ( \%www\~mode )
@@ -3581,18 +3525,18 @@ option
 .
 .sp
 .EX
-\fIsh#\fR\~echo\~'\[rs]f[CB]WOW!'\~|
+\fIsh#\fR\~echo\~'\(rsf(CBWOW!'\~|
 > groffer \-\-x \-\-bg red \-\-fg yellow \-\-geometry 200x100 \-
 .EE
 .sp
 .
-Display the word \f[CB]WOW!\fP in a small window in constant-width
+Display the word \f(CBWOW!\fP in a small window in constant-width
 bold font, using color yellow on red background.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "COMPATIBILITY"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The
 .B \%groffer
@@ -3601,10 +3545,10 @@ program is written in Perl, the Perl version during writing was v5.8.8.
 .
 .P
 .B \%groffer
-provides its own parser for command line arguments that is compatible
-to both \%\f[CR]POSIX\fP
+provides its own parser for command-line arguments that is compatible
+to both \%\f(CRPOSIX\fP
 .BR \%getopts (1)
-and \%\f[CR]GNU\fP
+and \%\f(CRGNU\fP
 .BR \%getopt (1).
 It can handle option arguments and file names containing white space
 and a large set of special characters.
@@ -3632,7 +3576,7 @@ is equivalent to
 Long options are options with names longer than one character; they
 are always preceded by a double minus.
 .
-An option argument can either go to the next command line argument or
+An option argument can either go to the next command-line argument or
 be appended with an equal sign to the argument; for example,
 .B \-\-long=arg
 is equivalent to
@@ -3642,7 +3586,7 @@ is equivalent to
 .IP \*(BU 2m
 An argument of
 .B \-\-
-ends option parsing; all further command line arguments are
+ends option parsing; all further command-line arguments are
 interpreted as
 .I \%filespec
 parameters, i.e.\& file names or constructs for searching
@@ -3650,7 +3594,7 @@ parameters, i.e.\& file names or constructs for searching
 .
 .
 .IP \*(BU 2m
-All command line arguments that are neither options nor option
+All command-line arguments that are neither options nor option
 arguments are interpreted as
 .I \%filespec
 parameters and stored until option parsing has finished.
@@ -3673,52 +3617,28 @@ The free mixing of options and
 .I \%filespec
 parameters follows the GNU principle.
 .
-That does not fulfill the strange option behavior of \%\f[CR]POSIX\fP
+That does not fulfill the strange option behavior of \%\f(CRPOSIX\fP
 that ends option processing as soon as the first non-option argument
 has been reached.
 .
 The end of option processing can be forced by the option
-.RB ` \-\- '
+.RB \[lq] \-\- \[rq]
 anyway.
 .
 .
-.\" --------------------------------------------------------------------
-.SH "BUGS"
-.\" --------------------------------------------------------------------
-.
-Report bugs to the
-.MT bug-groff@gnu.org
-bug-groff mailing list
+.\" ====================================================================
+.SH AUTHORS
+.\" ====================================================================
+.B groffer
+was written by
+.MT groff\-bernd.warken\-72@\:web.de
+Bernd Warken
 .ME .
 .
-Include a complete, self-contained example that will allow the bug to
-be reproduced, and say which version of
-.B \%groffer
-you are using.
-.
-.
-.P
-You can also use the
-.MT groff@gnu.org
-groff mailing list
-.ME ,
-but you must first subscribe to this list.
-.
-You can do that by visiting the
-.UR http://\:lists.gnu.org/\:mailman/\:listinfo/\:groff
-groff mailing list web page
-.UE .
-.
-.
-.P
-See
-.BR \%groff (@MAN1EXT@)
-for information on availability.
-.
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "SEE ALSO"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .P
 .BR \%groff (@MAN1EXT@),
@@ -3735,7 +3655,7 @@ all of them can be used with
 .BR \%grog (@MAN1EXT@)
 This program tries to guess the necessary
 .B \%groff
-command line options from the input and the
+command-line options from the input and the
 .B groffer
 options.
 .
@@ -3868,7 +3788,8 @@ Viewers for
 .BR \%lynx (1)
 Web-browsers for
 .BR \%groffer 's
-.I \%html
+.IR \%html ,
+.IR \%xhtml ,
 or
 .IR \%www\~mode .
 .
@@ -3891,20 +3812,11 @@ The decompression programs supported by
 .BR \%groffer .
 .
 .
-.\" --------------------------------------------------------------------
-.SH "COPYING"
-.\" --------------------------------------------------------------------
-.co
-.\" --------------------------------------------------------------------
-.SH "AUTHORS"
-.\" --------------------------------------------------------------------
-.au
-.
-.
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .\" Emacs settings
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .\" Local Variables:
 .\" mode: nroff
 .\" End:
+.\" vim: set filetype=groff:
diff --git a/contrib/groffer/groffer.am b/contrib/groffer/groffer.am
new file mode 100644 (file)
index 0000000..7f0665a
--- /dev/null
@@ -0,0 +1,120 @@
+# Automake rules for 'groffer'
+
+# File position: <groff-source>/contrib/groffer/groffer.am
+
+# Copyright (C) 2001-2018 Free Software Foundation, Inc.
+# Written by Werner Lemberg <wl@gnu.org> and
+# Bernd Warken <groff-bernd.warken-72@web.de>.
+# Automake migration by Bertrand Garrigues
+
+# Last update: 22 Aug 2015
+
+# This file is part of 'groffer' which is part of 'groff'.
+
+# 'groff' is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 2 of the License, or
+# (at your option) any later version.
+
+# 'groff' 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
+# <http://www.gnu.org/licenses/gpl-2.0.html>.
+
+########################################################################
+
+groffer_srcdir = $(top_srcdir)/contrib/groffer
+# generated programs
+ROFF2PROGS = \
+  roff2dvi \
+  roff2html \
+  roff2pdf \
+  roff2ps \
+  roff2text \
+  roff2x
+
+# Generated man templates
+ROFF2MAN = \
+  contrib/groffer/roff2dvi.1.man \
+  contrib/groffer/roff2html.1.man \
+  contrib/groffer/roff2pdf.1.man \
+  contrib/groffer/roff2ps.1.man \
+  contrib/groffer/roff2text.1.man \
+  contrib/groffer/roff2x.1.man
+
+GROFFER_PERL = \
+  contrib/groffer/main_subs.pl \
+  contrib/groffer/man.pl \
+  contrib/groffer/split_env.sh \
+  contrib/groffer/subs.pl
+
+GROFFER_REST = \
+  contrib/groffer/roff2.1.man \
+  contrib/groffer/version.sh \
+  contrib/groffer/groffer.1.man \
+  contrib/groffer/groffer.pl \
+  contrib/groffer/roff2.pl
+
+EXTRA_DIST += $(GROFFER_PERL) $(GROFFER_REST) \
+  contrib/groffer/ChangeLog  \
+  contrib/groffer/README \
+  contrib/groffer/README_PERL
+
+# groffer_dir is set by a m4 macro
+grofferdir = $(groffer_dir)
+bin_SCRIPTS += groffer $(ROFF2PROGS)
+groffer_DATA = $(GROFFER_PERL) contrib/groffer/version.sh
+man1_MANS += \
+  contrib/groffer/groffer.1 \
+  contrib/groffer/roff2dvi.1 \
+  contrib/groffer/roff2html.1 \
+  contrib/groffer/roff2pdf.1 \
+  contrib/groffer/roff2ps.1 \
+  contrib/groffer/roff2text.1 \
+  contrib/groffer/roff2x.1
+MOSTLYCLEANFILES += $(ROFF2MAN)
+
+$(ROFF2PROGS): $(groffer_srcdir)/roff2.pl
+       cp $(groffer_srcdir)/roff2.pl $@
+
+# we take roff2.man and replace the @ROFF2MODE@ by the type of file
+# (dvi, pdf, html etc ...)
+$(ROFF2MAN):  $(groffer_srcdir)/roff2.1.man
+       $(AM_V_GEN)$(MKDIR_P) contrib/groffer \
+       && FILEMODE=`echo $@ | sed 's|contrib/groffer/roff2\([a-z][a-z]*\)\.1\.man|\1|g'` \
+       && sed -e 's/[@]ROFF2MODE[@]/'"$$FILEMODE"'/g' \
+              $(groffer_srcdir)/roff2.1.man \
+              > $@;
+
+groffer: $(GROFFER_PERL) $(GROFFER_REST) $(SH_DEPS_SED_SCRIPT)
+       $(AM_V_GEN)sed -f "$(SH_DEPS_SED_SCRIPT)" \
+          -e "s|[@]g[@]|$(g)|g" \
+          -e "s|[@]BINDIR[@]|$(DESTDIR)$(bindir)|g" \
+          -e "s|[@]libdir[@]|$(DESTDIR)$(libdir)|g" \
+          -e "s|[@]groffer_dir[@]|$(DESTDIR)$(groffer_dir)|g" \
+          -e "s|[@]VERSION[@]|$(VERSION)|g" \
+          -e "$(SH_SCRIPT_SED_CMD)" \
+          $(groffer_srcdir)/groffer.pl \
+          >$@ \
+       && chmod +x $@;
+
+uninstall_groffdirs: uninstall-groffer-hook
+uninstall-groffer-hook:
+       if test -d $(DESTDIR)$(grofferdir); then \
+         rmdir $(DESTDIR)$(grofferdir); \
+       fi
+
+
+########################################################################
+# Editor settings
+########################################################################
+#
+# Local Variables:
+# mode: makefile-automake
+# fill-column: 72
+# End:
+# vim: set filetype=automake textwidth=72:
index 4e2e575..697dacb 100755 (executable)
@@ -5,25 +5,26 @@
 # Source file position: <groff-source>/contrib/groffer/groffer.pl
 # Installed position: <prefix>/bin/groffer
 
-# Copyright (C) 2006-2014
-#   Free Software Foundation, Inc.
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
 
 # Written by Bernd Warken <groff-bernd.warken-72@web.de>.
 
-# This file is part of `groffer', which is part of `groff'.
+# Last update: 27 Aug 2015
 
-# `groff' is free software; you can redistribute it and/or modify it
+# This file is part of 'groffer', which is part of 'groff'.
+
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
 # the Free Software Foundation, either version 2 of the License, or
 # (at your option) any later version.
 
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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
+# along with this program.  If not, see
 # <http://www.gnu.org/licenses/gpl-2.0.html>.
 
 ########################################################################
@@ -38,7 +39,7 @@ use File::Temp qw/ tempfile tempdir /;
 # needed for temporary dir
 use File::Spec;
 
-# for `copy' and `move'
+# for 'copy' and 'move'
 use File::Copy;
 
 # for fileparse, dirname and basename
@@ -106,7 +107,7 @@ our $File_split_env_sh;
 our $File_version_sh;
 our $Groff_Version;
 
-my $before_make;               # script before run of `make'
+my $before_make;               # script before run of 'make'
 {
   my $at = '@';
   $before_make = 1 if '@VERSION@' eq "${at}VERSION${at}";
@@ -163,7 +164,8 @@ our @Conf_Files = (File::Spec->catfile(File::Spec->rootdir(),
                                      'groffer.conf')
                 );
 
-our @Default_Modes = ('pdf', 'pdf2', 'html', 'ps', 'x', 'dvi', 'tty');
+our @Default_Modes = ('pdf', 'pdf2', 'html', 'xhtml', 'ps', 'x', 'dvi',
+                     'tty');
 our $Default_Resolution = 100;
 our $Default_tty_Device = 'utf8';
 
@@ -181,6 +183,9 @@ our %Viewer_X = ('DVI' => ['kdvi', 'xdvi', 'dvilx'],
                'HTML' => ['konqueror', 'epiphany'. 'mozilla-firefox',
                           'firefox', 'mozilla', 'netscape', 'galeon',
                           'opera', 'amaya','arena', 'mosaic'],
+               'XHTML' => ['konqueror', 'epiphany'. 'mozilla-firefox',
+                          'firefox', 'mozilla', 'netscape', 'galeon',
+                          'opera', 'amaya','arena', 'mosaic'],
                'PDF' => ['okular', 'kpdf', 'acroread', 'evince',
                          'xpdf -z 150', 'gpdf', 'xpdf', 'zathura'.
                          'epdfview', 'qpdfview', 'apvlv', 'qpdfview',
index 90627cc..a40e356 100644 (file)
@@ -5,27 +5,29 @@
 # Source file position: <groff-source>/contrib/groffer/subs.pl
 # Installed position: <prefix>/lib/groff/groffer/subs.pl
 
-# Copyright (C) 2006-201 Free Software Foundation, Inc.
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
 # Written by Bernd Warken <groff-bernd.warken-72@web.de>.
 
-# This file is part of `groffer', which is part of `groff'.
+# Last update: 27 Aug 2015
 
-# `groff' is free software; you can redistribute it and/or modify it
+# This file is part of 'groffer', which is part of 'groff'.
+
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
 # the Free Software Foundation, either version 2 of the License, or
 # (at your option) any later version.
 
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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
+# along with this program.  If not, see
 # <http://www.gnu.org/licenses/gpl-2.0.html>.
 
 ########################################################################
-# This file contains the main functions formerly in `groff.pl'
+# This file contains the main functions formerly in 'groff.pl'
 
 use strict;
 use warnings;
@@ -66,7 +68,7 @@ sub main_set_options {
   'groff', 'help', 'intermediate-output', 'html', 'latin1', 'man',
   'no-location', 'no-man', 'no-special', 'pdf', 'pdf2', 'ps', 'rv',
   'source', 'text', 'to-stdout', 'text-device', 'tty', 'tty-device',
-  'utf8', 'version', 'whatis', 'where', 'www', 'x', 'X');
+  'utf8', 'version', 'whatis', 'where', 'www', 'x', 'X', 'xhtml');
 
 ### main_set_options()
   my @opts_groffer_long_arg =
@@ -75,10 +77,10 @@ sub main_set_options {
      # tty viewers are ignored
      'dvi-viewer-tty', 'html-viewer-tty', 'pdf-viewer-tty',
      'ps-viewer-tty', 'tty-viewer-tty', 'www-viewer-tty',
-     'X-viewer-tty', 'x-viewer-tty',
+     'X-viewer-tty', 'x-viewer-tty', 'xhtml-viewer-tty',,
      # viewers for modes are ignored
      'dvi-viewer', 'html-viewer', 'pdf-viewer', 'ps-viewer', 'tty-viewer',
-     'www-viewer', 'X-viewer', 'x-viewer',
+     'www-viewer', 'X-viewer', 'x-viewer', 'xhtml-viewer',
     );
 
   ##### groffer options inhereted from groff
@@ -132,9 +134,9 @@ sub main_set_options {
   'encoding', 'extension', 'locale');
 
 ### main_set_options()
-  ###### collections of command line options
+  ###### collections of command-line options
 
-  # There are two hashes that control the whole of the command line
+  # There are two hashes that control the whole of the command-line
   # options, one for short and one for long options.  Options without
   # and with arguments are mixed by advicing a value of 0 for an option
   # without argument and a value of 1 for an option with argument.
@@ -190,9 +192,11 @@ sub main_set_options {
                          '--where' => '--location',
                          '--www' => '--html',
                          '--X' => '--x',
+                         '--xhtml' => '--html',
                          # '--dvi-viewer' => '--viewer',
                          '--dvi-viewer-tty' => '--viewer',
                          '--html-viewer-tty' => '--viewer',
+                         '--xhtml-viewer-tty' => '--pager',
                          '--pdf-viewer-tty' => '--viewer',
                          '--ps-viewer-tty' => '--viewer',
                          '--tty-viewer' => '--pager',
@@ -344,14 +348,14 @@ sub main_config_params {  # handle configuration files
          next;
        }
        if ( $line =~ /^--[ =]/ ) {
-         warn "No option name in `$line' in configuration " .
+         warn "No option name in '$line' in configuration " .
            "file $f.\n";
          next;
        }
        push @Starting_Conf, $line;
        # -- or -
        if ($line =~ /^--?$/) {
-         warn "`$line' is not allowed in configuration files.\n";
+         warn "'$line' is not allowed in configuration files.\n";
          next; }
 ### main_config_params()
        if ($line =~ /^--/) {           # line is long option
@@ -365,7 +369,7 @@ sub main_config_params {    # handle configuration files
          } $name =~ s/[\'\"]//g;
          unless (exists $Opts_Cmdline_Long{$name}) {
            # option does not exist
-           warn "Option `$name' does not exist.\n";
+           warn "Option '$name' does not exist.\n";
            next LINE;
          }
          # option exists
@@ -373,13 +377,13 @@ sub main_config_params {  # handle configuration files
            if (defined $arg) {
              push @conf_args, $name, $arg;
              next LINE;
-           } else { warn "Option `$name' needs an argument in " .
+           } else { warn "Option '$name' needs an argument in " .
                       "configuration file $f\n";
                     next LINE;
                   }
          } else { # option has no arg
            if (defined $arg) {
-             warn "Option `$name' may not have an argument " .
+             warn "Option '$name' may not have an argument " .
                "in configuration file $f\n";
              next LINE;
            } else {
@@ -394,7 +398,7 @@ sub main_config_params {    # handle configuration files
            my $opt = "-$1";
            next if ($opt =~ /\'\"/);
            if ($opt =~ /- /) {
-             warn "Option `$conf_args[$#conf_args]' does not " .
+             warn "Option '$conf_args[$#conf_args]' does not " .
                "have an argument.\n";
              next LINE;
            }
@@ -411,7 +415,7 @@ sub main_config_params {    # handle configuration files
                next;
              }
            } else { # short option does not exist
-             warn "Wrong short option `-$opt' from " .
+             warn "Wrong short option '-$opt' from " .
                "configuration.  Rest of line ignored.\n";
              next LINE;
            }
@@ -430,7 +434,7 @@ sub main_config_params {    # handle configuration files
     chomp @GROFFER_OPT;
   }
 
-  # Handle command line parameters together with $GROFFER_OPT.
+  # Handle command-line parameters together with $GROFFER_OPT.
   # Options can be abbreviated, with each - as abbreviation place.
   {
     my @argv0 = (@GROFFER_OPT, @ARGV);
@@ -466,11 +470,11 @@ sub main_config_params {  # handle configuration files
       }
 
       if ($elt =~ /^--[ =]/) { # no option name
-       warn "No option name in `$elt' at $s[$j].\n";
+       warn "No option name in '$elt' at $s[$j].\n";
        next ELT;
       }
       if ($elt =~ /^---/) { # wrong with three minus
-       warn "Wrong option `$elt' at $s[$j].\n";
+       warn "Wrong option '$elt' at $s[$j].\n";
        next ELT;
       }
 
@@ -499,7 +503,7 @@ sub main_config_params {    # handle configuration files
          my $n0 = $1;
          if ( $Opts_Cmdline_Long_Str =~
               /\s(${match}[^-\s]*)\s.*\s(${match}[^-\s]*) / ) {
-           warn "Option name `--$abbrev' is not unique: " .
+           warn "Option name '--$abbrev' is not unique: " .
              "--$1 --$2 \n";
            next ELT;
          }
@@ -510,14 +514,14 @@ sub main_config_params {  # handle configuration files
          my $n0 = $1;
          if ( $Opts_Cmdline_Long_Str =~
               /\s(${match}[^\s]*)\s.*\s(${match}[^\s]*)\s/ ) {
-           warn "Option name `--$abbrev' is not unique: " .
+           warn "Option name '--$abbrev' is not unique: " .
              "--$1 --$2 \n";
            next ELT;
          }
          $name = $n0;
          $opt = "--$n0";
        } else {
-         warn "Option `--$abbrev' does not exist.\n";
+         warn "Option '--$abbrev' does not exist.\n";
          next ELT;
        }
 ### main_config_params()
@@ -528,7 +532,7 @@ sub main_config_params {    # handle configuration files
          } else { # $arg not defined, argument at next element
            if (($i == $n1) || ($i > $n)) {
              warn "No argument left for option " .
-               "`$elt' at $s[$j].\n";
+               "'$elt' at $s[$j].\n";
              next ELT; }
            # add argument as next element
            push @argv, "--$name", $argv0[$i];
@@ -537,7 +541,7 @@ sub main_config_params {    # handle configuration files
          }             # if (defined $arg)
        } else {        # option has no arg
          if (defined $arg) {
-           warn "Option `$abbrev' may not have an argument " .
+           warn "Option '$abbrev' may not have an argument " .
              "at $s[$j].\n";
            next ELT;
          } else {
@@ -563,7 +567,7 @@ sub main_config_params {    # handle configuration files
              } else { # argument at next element
                if (($i == $n1) || ($i > $n)) {
                  warn "No argument left for option " .
-                   "`$opt' at $s[$j].\n";
+                   "'$opt' at $s[$j].\n";
                  next ELT; }
 ### main_config_params()
                # add argument as next element
@@ -575,7 +579,7 @@ sub main_config_params {    # handle configuration files
              push @argv, $opt; next;
            }
          } else { # short option does not exist
-           warn "Wrong short option `$opt' at $s[$j].\n";
+           warn "Wrong short option '$opt' at $s[$j].\n";
            next ELT;
          }             # if (exists $Opts_Cmdline_Short{$opt})
        }               # while ($cluster)
@@ -657,6 +661,7 @@ sub main_parse_params {
                        'cp1047' => 'tty',
                        'dvi'=> 'dvi',
                        'html' => 'html',
+                       'xhtml' => 'html',
                        'latin1' => 'tty',
                        'lbp' => 'groff',
                        'lj4' => 'groff',
@@ -734,7 +739,7 @@ sub main_parse_params {
      '--locale' =>             # set language for man pages, arg
      # argument is xx[_territory[.codeset[@modifier]]] (ISO 639,...)
      sub { $Opt{'LANG'} = &_get_arg(); },
-     '--local-file' =>         # force local files; same as `--no-man'
+     '--local-file' =>         # force local files; same as '--no-man'
      sub { delete $Man{'ENABLE'}; delete $Man{'FORCE'}; },
      '--location' =>           # print file locations to stderr
      sub { $Opt{'LOCATION'} = 1; },
@@ -769,11 +774,11 @@ sub main_parse_params {
               delete $Opt{'MODE'};
             }
           } else {
-            warn "Unknown mode in `$arg' for --mode\n";
+            warn "Unknown mode in '$arg' for --mode\n";
           }
         },
 ### main_parse_params()
-     '--no-location' =>                # disable former call to `--location'
+     '--no-location' =>                # disable former call to '--location'
      sub { delete $Opt{'LOCATION'}; },
      '--no-man' =>             # disable search for man pages
      sub { delete $Man{'ENABLE'}; delete $Man{'FORCE'}; },
@@ -804,7 +809,7 @@ sub main_parse_params {
 ### main_parse_params()
      '--rv' => sub { $Opt{'RV'} = 1; },
      '--sections' =>           # specify sections for man pages, arg
-     # arg is a `:'-separated (colon) list of section names
+     # arg is a ':'-separated (colon) list of section names
      sub { my $arg = &_get_arg();
           my @arg = split /:/, $arg;
           my $s;
@@ -814,7 +819,7 @@ sub main_parse_params {
             if ($Man{'AUTO_SEC_CHARS'} =~ /$c/) {
               $s .= $c;
             } else {
-              warn "main_parse_params(): not a man section `$c';";
+              warn "main_parse_params(): not a man section '$c';";
             }
           }
           $Opt{'SECTIONS'} = $s; },
@@ -941,7 +946,7 @@ sub main_parse_params {
   }
 
   if ( $Opt{'WHATIS'} ) {
-    die "main_parse_params(): cannot handle both `whatis' and `apropos';"
+    die "main_parse_params(): cannot handle both 'whatis' and 'apropos';"
       if $Opt{'APROPOS'};
     $Man{'ALL'} = 1;
     delete $Opt{'APROPOS_SECTIONS'};
@@ -1016,7 +1021,7 @@ sub main_set_mode {
       $Display{'MODE'} = $Opt{'MODE'};
       return 1;
     }
-    $Display{'MODE'} = $Opt{'MODE'} if $Opt{'MODE'} =~ /^html$/;
+    $Display{'MODE'} = $Opt{'MODE'} if $Opt{'MODE'} =~ /^x?html$/;
     @modes = ($Opt{'MODE'});
   } else {                     # empty mode
     if ($Opt{'DEVICE'}) {
@@ -1118,7 +1123,7 @@ sub _get_prog_args {
     my %prog = &where_is_prog($opt);
     my $prog_ref = \%prog;
     unless (%prog) {
-      warn "_get_prog_args(): `$opt' is not an existing program;";
+      warn "_get_prog_args(): '$opt' is not an existing program;";
       return 0;
     }
 
@@ -1161,7 +1166,7 @@ sub _get_prog_args {
 #
 # Local function of main_set_mode().
 #
-# Return  : `0' if not a part of the list, `1' if found in the list.
+# Return  : '0' if not a part of the list, '1' if found in the list.
 #
 sub _get_first_prog {
   our %Display;
@@ -1193,7 +1198,7 @@ sub _get_first_prog {
 #
 # Arguments: 2
 #
-# Return  : `0' if not a part of the list, `1' if found in the list.
+# Return  : '0' if not a part of the list, '1' if found in the list.
 # Output  : none
 #
 # Globals in    : $Viewer_X{<MODE>}, $Viewer_tty{<MODE>}
@@ -1463,7 +1468,7 @@ sub main_do_fileargs {
        warn "main_do_fileargs: the argument $filespec is not a file;";
       }
       next FILESPEC;
-    } else {                   # neither `-' nor has dir
+    } else {                   # neither '-' nor has dir
       # check whether filespec is an existing file
       unless ( $Man{'FORCE'} ) {
        if (-f $filespec && -r $filespec) {
@@ -1499,7 +1504,7 @@ sub main_do_fileargs {
     $Filespec_Is_Man = 1;
 
 ### main_do_fileargs()
-    # test filespec with `man:...' or `...(...)' on man page
+    # test filespec with 'man:...' or '...(...)' on man page
 
     my @names = ($filespec);
     if ($filespec =~ /^man:(.*)$/) {
@@ -1805,7 +1810,7 @@ sub main_display {
       }
 
 ### main_display()
-      # mode is not 'text', but `tty'
+      # mode is not 'text', but 'tty'
       my %pager;
       my @p;
       push @p, $Opt{'PAGER'} if $Opt{'PAGER'};
@@ -1876,6 +1881,21 @@ sub main_display {
       next SWITCH;
     };
 
+    /^xhtml$/ and do {
+      if ($Opt{'DEVICE'} && $Opt{'DEVICE'} ne 'xhtml') {
+       warn "main_display(): " .
+         "wrong device for $Display{'MODE'} mode: $Opt{'DEVICE'};"
+      }
+      $modefile .= '.xhtml';
+      $groggy = `cat $tmp_cat | grog -Txhtml`;
+      die "main_display(): grog error;" if $?;
+      chomp $groggy;
+      print STDERR "grog output: $groggy\n" if $Debug{'GROG'};
+      &_do_display();
+      next SWITCH;
+    };
+
+
     /^pdf$/ and do {
       $modefile .= '.pdf';
       $groggy = `cat $tmp_cat | grog -Tpdf --ligatures`;
@@ -1946,7 +1966,7 @@ sub main_display {
        die "main_display(): grog error;" if $?;
        chomp $groggy;
        print STDERR "grog output: $groggy\n" if $Debug{'GROG'};
-      } elsif ($Opt{'DEVICE'} =~ /^(X.*|dvi|html|lbp|lj4|ps)$/) {
+      } elsif ($Opt{'DEVICE'} =~ /^(X.*|dvi|html|xhtml|lbp|lj4|ps)$/) {
        # these devices work with
        $groggy = `cat $tmp_cat | grog -T$Opt{'DEVICE'} -X`;
        die "main_display(): grog error;" if $?;
@@ -1965,7 +1985,7 @@ sub main_display {
     };
 
     /^.*$/ and do {
-      die "main_display(): unknown mode `$Display{'MODE'}';";
+      die "main_display(): unknown mode '$Display{'MODE'}';";
     };
 
   }                            # SWITCH
@@ -1978,7 +1998,7 @@ sub main_display {
 #
 # Perform the generation of the output and view the result.  If an
 # argument is given interpret it as a function name that is called in
-# the midst (actually only for `pdf').
+# the midst (actually only for 'pdf').
 #
 sub _do_display {
   our ( %Display, %Debug, %Opt );
@@ -2029,7 +2049,7 @@ sub _do_display {
 #############
 # _do_opt_V ()
 #
-# Check on option `-V'; if set print the corresponding output and leave.
+# Check on option '-V'; if set print the corresponding output and leave.
 #
 # Globals: @ARGV, $Display{MODE}, $Display{PROG},
 #          $Display{ARGS}, $groggy,  $modefile, $addopts
index 02a4afa..a79368c 100644 (file)
@@ -5,23 +5,23 @@
 # Source file position: <groff-source>/contrib/groffer/man.pl
 # Installed position: <prefix>/lib/groff/groffer/man.pl
 
-# Copyright (C) 2006-201 Free Software Foundation, Inc.
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
 # Written by Bernd Warken <groff-bernd.warken-72@web.de>.
 
-# This file is part of `groffer', which is part of `groff'.
+# This file is part of 'groffer', which is part of 'groff'.
 
-# `groff' is free software; you can redistribute it and/or modify it
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
 # the Free Software Foundation, either version 2 of the License, or
 # (at your option) any later version.
 
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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
+# along with this program.  If not, see
 # <http://www.gnu.org/licenses/gpl-2.0.html>.
 
 ########################################################################
@@ -148,7 +148,7 @@ sub is_man {
   my $n = @_;
   die "is_man(): one argument is needed, you used $n;"
     unless $n == 1;
-  die "is_man(): the argument is not a hash reference `$_[0]';"
+  die "is_man(): the argument is not a hash reference '$_[0]';"
     if ref($_[0]) ne 'HASH';
   die 'is_man(): temporary directory is not set;' unless $main::tmpdir;
   die 'is_man(): man_setup() must be run first;' unless $main::Man{'IS_SETUP'};
@@ -207,11 +207,11 @@ sub man_get {
   my $n = @_;
   die "man_get(): one argument is needed, you used $n;"
     unless $n == 1;
-  die "man_get(): the argument is not a hash reference `$_[0]';"
+  die "man_get(): the argument is not a hash reference '$_[0]';"
     if ref($_[0]) ne 'HASH';
   die "man_get(): is_man() must be run first on the argument;"
     unless $main::Manspec;
-  die "man_get(): wrong hash reference `$_[0]', no 'name' key;"
+  die "man_get(): wrong hash reference '$_[0]', no 'name' key;"
     unless exists $_[0]->{'name'};
 
   my ($name, $sec, $ext, $f, $path);
@@ -334,15 +334,15 @@ sub man_get {
 #           $main::Man{SEC}, $main::Man{ALL}
 #   in/out: $main::Man{ENABLE}
 #
-# The precedence for the variables related to `man' is that of GNU
-# `man', i.e.
+# The precedence for the variables related to 'man' is that of GNU
+# 'man', i.e.
 #
 # $LANG; overridden by
 # $LC_MESSAGES; overridden by
 # $LC_ALL; this has the same precedence as
 # $MANPATH, $MANSEC, $PAGER, $SYSTEM; overridden by
 # $MANOPT; overridden by
-# the groffer command line options.
+# the groffer command-line options.
 #
 # $MANROFFSEQ is ignored because grog determines the preprocessors.
 #
@@ -462,7 +462,7 @@ sub man_setup {
 # Globals:
 #   in:     $main::Man{SYS}: a list of names of operating systems.
 #           $main::Man{LANG} and $main::Man{LANG2}: each a single name
-#   in/out: @{$main::Man{PATH}}: list of directories which shall have the `man?'
+#   in/out: @{$main::Man{PATH}}: list of directories which shall have the 'man?'
 #           subdirectories.
 #
 sub manpath_add_lang_sys {
@@ -512,7 +512,7 @@ sub manpath_add_lang_sys {
 #
 # Determine basic search path for man pages from $PATH.
 #
-# Return:    `1' if a valid man path was retrieved.
+# Return:    '1' if a valid man path was retrieved.
 # Output:    none
 # Globals:
 #   in:  $PATH
@@ -587,7 +587,7 @@ sub special_setup {
 ##########
 # whatis_filename(<filename>)
 #
-# Interpret <filename> as a man page and display its `whatis'
+# Interpret <filename> as a man page and display its 'whatis'
 # information as a fragment written in the groff language.
 #
 # Globals:  in: $main::Opt{'WHATIS'}, $main::Special_Setup, $main::Special_Filespec,
@@ -628,7 +628,7 @@ sub whatis_filename {
     }
   }
 
-  # traditional man style; grep the line containing `.TH' macro, if any
+  # traditional man style; grep the line containing '.TH' macro, if any
   my @catz = &cat_z($_[0]);
   my $res;
   my $test;
@@ -640,7 +640,7 @@ sub whatis_filename {
   }                            # foreach (@catz)
 ### whatis_filename()
   if ($test) {                 # traditional man style
-    # get the first line after the first `.SH' macro before the next `.SH'
+    # get the first line after the first '.SH' macro before the next '.SH'
     my $test1;
     foreach (@catz) {
       if ($test1) {
@@ -675,7 +675,7 @@ sub whatis_filename {
     return 1;
   }                            # if ($test)
 
-  # mdoc style (BSD doc); grep the line containing `.Nd' macro, if any
+  # mdoc style (BSD doc); grep the line containing '.Nd' macro, if any
   foreach (@catz) {
     if (/^[\.']\s*Nd\s/) {             # BSD doc style
       $res =~ s/^(.*)$/$name ($section) \\[em] $1/;
similarity index 60%
rename from contrib/groffer/roff2.man
rename to contrib/groffer/roff2.1.man
index 17d094b..6013b58 100644 (file)
@@ -1,4 +1,4 @@
-.TH roff2@ROFF2MODE@ @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
+.TH roff2@ROFF2MODE@ @MAN1EXT@ "@MDATE@" "groff @VERSION@"
 .SH NAME
 roff2@ROFF2MODE@ \- transform roff code into @ROFF2MODE@ mode
 .
@@ -8,58 +8,55 @@ roff2@ROFF2MODE@ \- transform roff code into @ROFF2MODE@ mode
 .\" Installed position:   $prefix/share/man/man1/roff2@ROFF2MODE@.1
 .
 .
-.\" --------------------------------------------------------------------
-.\" Legalese
-.\" --------------------------------------------------------------------
-.
-.de co
-Copyright \[co] 2006-2014 Free Software Foundation, Inc.
-
-This file is part of groffer, which is part of GNU groff, a free
-software project.
-
-You can redistribute it and/or modify it under the terms of the GNU
-General Public License version 2 (GPL2) as published by the Free
-Software Foundation.
-
-The license text is available in the internet at
-.UR http://www.gnu.org/licenses/gpl-2.0.html
-.UE .
-..
-.
-.de au
-This file was written by
-.MT groff-bernd.warken-72@web.de
-Bernd Warken
-.ME .
-..
-.
-.\" --------------------------------------------------------------------
+.\" ====================================================================
+.\" Legal Terms
+.\" ====================================================================
+.\"
+.\" Copyright (C) 2006-2018 Free Software Foundation, Inc.
+.\"
+.\" This file is part of groffer, which is part of GNU groff, a free
+.\" software project.
+.\"
+.\" You can redistribute it and/or modify it under the terms of the GNU
+.\" General Public License version 2 (GPL2) as published by the Free
+.\" Software Foundation.
+.\"
+.\" The license text is available in the internet at
+.\" <http://www.gnu.org/licenses/gpl-2.0.html>.
+.
+.
+.\" ====================================================================
 .\" Characters
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .\" Ellipsis ...
-.ie t .ds EL \fS\N'188'\fP
-.el .ds EL \&.\|.\|.\&\
+.ie t .ds EL \fS\N'188'\fP\"
+.el .ds EL \&.\|.\|.\&\"
 .\" called with \*(EL
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "SYNOPSIS"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .SY roff2@ROFF2MODE@
-.OP \& "\%groffer_option \*(EL"
+.RI [ groffer-option
+\*(EL]
 .OP \-\-
-.OP \& "\%filespec \*(EL"
+.RI [ filespec
+\*(EL]
 .YS
 .
 .SY roff2@ROFF2MODE@
-.BR \-h | \-\-help
+.B \-h
+.SY roff2@ROFF2MODE@
+.B \-\-help
 .YS
 .
 .SY roff2@ROFF2MODE@
-.BR \-v | \-\-version
+.B \-v
+.SY roff2@ROFF2MODE@
+.B \-\-version
 .YS
 .
 .P
@@ -107,7 +104,7 @@ If no
 is specified standard input is assumed automatically.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH DESCRIPTION
 .
 .B \%roff2@ROFF2MODE@
@@ -148,7 +145,7 @@ mode.
 .  TP
 .  BR \%roff2html (@MAN1EXT@)
 generates
-.  I html
+.  I HTML
 output.
 .\}
 .
@@ -191,9 +188,19 @@ or
 .\}
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
+.SH AUTHORS
+.\" ====================================================================
+.B roff2@ROFF2MODE@
+was written by
+.MT groff\-bernd.warken\-72@\:web.de
+Bernd Warken
+.ME .
+.
+.
+.\" ====================================================================
 .SH "SEE ALSO"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .BR \%groff (@MAN1EXT@),
 .BR \%groffer (@MAN1EXT@),
@@ -212,20 +219,11 @@ or
 .BR \%gxditview (@MAN1EXT@).
 .
 .
-.\" --------------------------------------------------------------------
-.SH "COPYING"
-.\" --------------------------------------------------------------------
-.co
-.\" --------------------------------------------------------------------
-.SH "AUTHOR"
-.\" --------------------------------------------------------------------
-.au
-.
-.
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .\" Emacs settings
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .\" Local Variables:
 .\" mode: nroff
 .\" End:
+.\" vim: set filetype=groff:
index d8dad3f..cf5c583 100755 (executable)
@@ -5,23 +5,23 @@
 # Source file position: <groff-source>/contrib/groffer/roff2.pl
 # Installed position: <prefix>/bin/roff2*
 
-# Copyright (C) 2006-201 Free Software Foundation, Inc.
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
 # Written by Bernd Warken <groff-bernd.warken-72@web.de>.
 
-# This file is part of `groffer', which is part of `groff'.
+# This file is part of 'groffer', which is part of 'groff'.
 
-# `groff' is free software; you can redistribute it and/or modify it
+# 'groff' 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.
 
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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
+# along with this program.  If not, see
 # <http://www.gnu.org/licenses/gpl-2.0.html>.
 
 ########################################################################
@@ -197,12 +197,12 @@ usage: $Name [option]... [--] [filespec]...
 -h | --help     print usage information
 -v | --version  print version information
 
-All other options are arbitrary options of `groffer'; the options
+All other options are arbitrary options of 'groffer'; the options
 override the behavior of this program.
 
-filespec's are the same as in `groffer': either the names of existing,
-readable files or `-' for standard input or a search pattern for man
-pages.  No `filespec' assumes standard input automatically.
+filespec's are the same as in 'groffer': either the names of existing,
+readable files or '-' for standard input or a search pattern for man
+pages.  No 'filespec' assumes standard input automatically.
 EOF
 }
 
@@ -213,10 +213,10 @@ usage: $Name [option]... [--] [filespec]...
 -h | --help     print usage information
 -v | --version  print version information
 
-No other options are allowed because `groffer' is not available.
+No other options are allowed because 'groffer' is not available.
 
-The only `filespec's allowed are the names of existing, readable files
-or `-' for standard input.  No `filespec' assumes standard input
+The only 'filespec's allowed are the names of existing, readable files
+or '-' for standard input.  No 'filespec' assumes standard input
 automatically.
 EOF
 }
index 682f011..b3b77e9 100644 (file)
@@ -5,23 +5,23 @@
 # Source file position: <groff-source>/contrib/groffer/split_env.sh
 # Installed position: <prefix>/lib/groff/groffer/split_env.sh
 
-# Copyright (C) 2006-2014 Free Software Foundation, Inc.
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
 # Written by Bernd Warken <groff-bernd.warken-72@web.de>.
 
-# This file is part of `groffer', which is part of `groff'.
+# This file is part of 'groffer', which is part of 'groff'.
 
-# `groff' is free software; you can redistribute it and/or modify it
+# 'groff' 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.
 
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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
+# along with this program.  If not, see
 # <http://www.gnu.org/licenses/gpl-2.0.html>.
 
 ########################################################################
index 3c17a87..a3d6b87 100644 (file)
@@ -5,23 +5,25 @@
 # Source file position: <groff-source>/contrib/groffer/subs.pl
 # Installed position: <prefix>/lib/groff/groffer/subs.pl
 
-# Copyright (C) 2006-201 Free Software Foundation, Inc.
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
 # Written by Bernd Warken <groff-bernd.warken-72@web.de>.
 
-# This file is part of `groffer', which is part of `groff'.
+# Last update: 27 Aug 2015
 
-# `groff' is free software; you can redistribute it and/or modify it
+# This file is part of 'groffer', which is part of 'groff'.
+
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
 # the Free Software Foundation, either version 2 of the License, or
 # (at your option) any later version.
 
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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
+# along with this program.  If not, see
 # <http://www.gnu.org/licenses/gpl-2.0.html>.
 
 ########################################################################
@@ -46,7 +48,7 @@ sub cat_z {
     unless $n == 1;
 
   my $file = $_[0];
-  die "cat_z(): `$file' is not a readable file;" unless -f $file && -r $file;
+  die "cat_z(): '$file' is not a readable file;" unless -f $file && -r $file;
   return () if -z $file;
 
   my @res;
@@ -57,7 +59,7 @@ sub cat_z {
        @res = `bzip2 -c -d $file 2>$main::Dev_Null`;
        return @res;
       }
-      # if not compressed with gz, gzip will act like `cat'
+      # if not compressed with gz, gzip will act like 'cat'
       @res = `gzip -c -d -f $file 2>$main::Dev_Null`;
       return @res;
     }
@@ -525,8 +527,8 @@ on-the-fly with all formats that gzip can handle.
   "name.n"     man page "name" in section "n"
   "n name"     man page "name" in section "n"
   "name"       man page "name" in first section found
-where `section' is a single character out of [1-9on], optionally followed
-by some more letters that are called the `extension'.
+where 'section' is a single character out of [1-9on], optionally followed
+by some more letters that are called the 'extension'.
 
 -h --help         print this usage message.
 -T --device=name  pass to groff using output device "name".
@@ -556,7 +558,7 @@ The most important groffer long options are
 --help         display this helping output.
 --html         display in a web browser.
 --man          check file parameters first whether they are man pages.
---mode=auto|dvi|groff|html|pdf|ps|source|text|tty|utf8|www|x|X
+--mode=auto|dvi|groff|html|pdf|ps|source|text|tty|utf8|www|x|X|xhtml
                choose display mode.
 --no-man       disable man-page facility.
 --no-special   disable --all, --apropos*, and --whatis
@@ -572,6 +574,7 @@ The most important groffer long options are
 --whatis       display the file name and description of man pages
 --www          same as --html.
 --x --X                display with "gxditview" using an X* device.
+--xhtml                display html in XML mode using a web browser.
 
 The usual X Windows toolkit options transformed into GNU long options:
 --background=color, --bd=size, --bg=color, --bordercolor=color,
@@ -594,7 +597,7 @@ EOF
 # option.  The old options are only ignored:
 # --dvi-viewer=prog choose the viewer program for dvi mode.
 # --html-viewer=program
-#                  choose the web browser for html mode.
+#                  choose the web browser for html or xhtml mode.
 # --pdf-viewer=prog choose the viewer program for pdf mode.
 # --ps-viewer=prog  choose the viewer program for ps mode.
 # --tty-viewer=prog select a pager for tty mode; same as --pager.
@@ -656,7 +659,7 @@ EOF
 # in $PATH.
 #
 # Arguments : 1, <program> can have spaces and arguments.
-# Return    : a hash with `dir', `file', `fullname', `args' if
+# Return    : a hash with 'dir', 'file', 'fullname', 'args' if
 #             argument exists or is a program in $PATH, empty hash else.
 #
 sub where_is_prog {
@@ -749,7 +752,7 @@ sub where_is_prog {
     my @baseargs = ($n);
     while (@base) {
       my $base = join(' ', @base);
-      foreach my $d (@maon::Path) {
+      foreach my $d (@main::Path) {
        my $file = File::Spec->catfile($d, $base);
        if (-f $file && -x $file) {
          my $baseargs = join(' ', @baseargs);
index f696ef4..0015981 100644 (file)
@@ -5,30 +5,30 @@
 # Source file position: <groff-source>/contrib/groffer/version.sh
 # Installed position: <prefix>/lib/groff/groffer/version.sh
 
-# Copyright (C) 2001-201 Free Software Foundation, Inc.
+# Copyright (C) 2001-2018 Free Software Foundation, Inc.
 # Written by Bernd Warken <groff-bernd.warken-72@web.de>.
 
-# This file is part of `groffer', which is part of `groff'.
+# This file is part of 'groffer', which is part of 'groff'.
 
-# `groff' is free software; you can redistribute it and/or modify it
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
 # the Free Software Foundation, either version 2 of the License, or
 # (at your option) any later version.
 
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 ########################################################################
 
 export _PROGRAM_VERSION;
-_PROGRAM_VERSION='2.2.5';
+_PROGRAM_VERSION='2.3.0';
 
 # this setting of the groff version is only used before make is run,
 # otherwise @VERSION@ will set it, see groffer.sh.
 export _GROFF_VERSION_PRESET;
-_GROFF_VERSION_PRESET='1.22.3';
+_GROFF_VERSION_PRESET='1.22.4';
index b9a5935..431db45 100644 (file)
@@ -1,3 +1,144 @@
+2018-12-06  Ingo Schwarze  <schwarze@openbsd.org>
+
+       * examples/fonts_n.in, examples/fonts_x.in:
+         Make the shell script in the .pso request more portable:
+         1. POSIX requires "echo -n" to print "-n" followed by
+            a newline character, so use printf(1) instead.
+         2. According to POSIX, behaviour of tr(1) is undefined
+            if string2 contains fewer characters than string1,
+            and on Oracle Solaris, the excess characters in string1
+            are not translated.  So make sure string2 contains
+            a sufficient number of characters.
+
+2018-12-05  Bertrand Garrigues <bertrand.garrigues@laposte.net>
+
+       Skip tests if needed config is missing.
+
+       * examples/test-hdtbl.sh.in: exit 77 (indicates automake
+       to skip the result) if 'gs' is missing.
+
+       * hdtbl.am: flag correctly test program generation.
+
+2018-11-25  Bertrand Garrigues <bertrand.garrigues@laposte.net>
+
+       Clean hdtbl.am
+
+       * hdtbl.am (MOSTLYCLEANFILES): Remove 'hdmisc.tmac-s'
+       and 'hdtbl.tmac-s' (these files are no longer present).
+
+       Fixes https://savannah.gnu.org/bugs/index.php?55083, reported by
+       Bjarni Ingi Gislason <bjarniig@rhi.hi.is>.
+
+2018-11-13  G. Branden Robinson <g.branden.robinson@gmail.com>
+
+       Don't clean other people's unit tests.
+
+       * hdtbl.am: test-hdtbl.sh is generated from an .in file,
+       so while we can add it to $(TESTS), we shouldn't then add
+       $(TESTS) to $(MOSTLYCLEANFILES) or we will clobber all tests
+       that ever get defined.  This clobbered gdiffmk's test script on
+       in-tree builds.  Give it its own variable, $(hdtbl_TESTS).
+       Now it clobbers no more.
+
+       Fixes <https://savannah.gnu.org/bugs/index.php?55020>.
+
+2018-11-12  G. Branden Robinson <g.branden.robinson@gmail.com>
+
+       * hdtbl.am: Remove examples/test-hdtbl.sh on 'make distclean'.
+
+2018-11-07  Bertrand Garrigues <bertrand.garrigues@laposte.net>
+
+       Add a sanity check on 2 examples.
+
+       * examples/test-hdtbl.sh.in: new test script that uses 'gs'
+       to check the number of pages of 'fonts_x.ps' and 'fonts_n.ps'.
+
+       * hdtbl.am: connect 'test-hdtbl.sh' to 'make check'
+
+2018-08-09  Ingo Schwarze  <schwarze@openbsd.org>
+
+       * examples/common.roff: Remove more dead code
+         since the date and time are no longer used.
+
+       Reported by Bjarni Ingi Gislason in Savannah bug #54461.
+
+2018-08-09  Ingo Schwarze  <schwarze@openbsd.org>
+
+       * examples/common.roff, examples/col_rowspan_colors.roff,
+         examples/short_reference.roff: do forgotten renamings .pv -> .t*pv
+
+       Fixing it improves the formatting of all hdtbl examples.
+       Reported by Bjarni Ingi Gislason in Savannah bug #54470.
+
+2018-08-04  Ingo Schwarze  <schwarze@openbsd.org>
+
+       * examples/*: delete the date and time macros
+       * examples/hdtbl.am: run groff without -U option
+
+2018-03-11  Colin Watson  <cjwatson@debian.org>
+
+       Remove unnecessary randomness from example output.
+
+       The examples don't need good randomness, as they're only
+       example output; removing the process ID from consideration
+       allows better integration with reproducible builds.
+
+       * examples/common.roff (random-s1): Remove process ID.
+
+2018-02-28  Werner LEMBERG  <wl@gnu.org>
+
+       * hdtbl.am (.roff.ps, .in.roff): Use $(GROFF_V) and $(AM_V_GEN).
+
+2017-11-30  G. Branden Robinson <g.branden.robinson@gmail.com>
+
+       * examples/common.roff:
+       * examples/fonts_n.in:
+       * examples/fonts_x.in:
+       Make writers to stderr identify themselves.
+
+2017-11-19  G. Branden Robinson <g.branden.robinson@gmail.com>
+
+       * examples/*.roff: Seed RNG.
+
+       * examples/col_rowspan_colors.roff:
+       * examples/color_boxes.roff:
+       * examples/color_nested_tables.roff:
+       * examples/color_table_cells.roff:
+       Support reproducible builds by seeding hdtbl's random
+       number generator (in examples/common.roff).
+
+       Fix issue https://savannah.gnu.org/bugs/?52462.
+
+2017-11-01  Bjarni Ingi Gislason <bjarniig@rhi.hi.is>
+
+       hdtbl.tmac-u: Fix ignored escape sequence.
+
+       The escape '\c' ignores everything after it, except "\R...".
+
+       Fix bug https://savannah.gnu.org/bugs/?51609.
+
+2015-08-22  Bernd Warken  <groff-bernd.warken-72@web.de>
+
+       * groff_hdtbl.7.man: Rename `groff_hdtbl.man'.
+
+       * hdtbl.am: Include renaming.
+
+2015-08-05  Bernd Warken  <groff-bernd.warken-72@web.de>
+
+       * hdtbl.am: Add `Last update'.  Setup Emacs mode.
+
+2015-04-03  Werner LEMBERG  <wl@gnu.org>
+
+       Fix Savannah bug #44798.
+
+       * examples/fonts_n.in, examples/fonts_x.in: Use @EGREP@.
+
+       * hdtbl.am (.in.roff): Handle @EGREP@.
+
+2015-04-03  Werner LEMBERG  <wl@gnu.org>
+
+       * groff_hdtbl.man: Make it work in compatibility mode.
+
 2013-09-03  Bernd Warken  <groff-bernd.warken-72@web.de>
 
        * all files in groff_hdtbl: Copying and Emacs setup.
 
 2012-09-20  Werner LEMBERG  <wl@gnu.org>
 
-       Simplify enviroment handling.
+       Simplify environment handling.
 
        Suggested by Ivan Shmakov <oneingray@gmail.com>.
 
        * examples/common.roff, examples/fonts_n.in, examples/fonts_x.in:
        s/bash/sh/.
 
-2010-02-09  Werner LEMBEARG  <wl@gnu.org>
+2010-02-09  Werner LEMBERG  <wl@gnu.org>
 
        Make example compilation work again if srcdir != builddir.
 
 2006-10-23  Werner LEMBERG  <wl@gnu.org>
 
        * hdtbl.tmac (\n[t*#]): Initialize.
-       (TBL): Don't inialize `\*[width]'.
+       (TBL): Don't initialize `\*[width]'.
        Add validity checks for all keywords.
        (TD): Add validity checks for `rowspan' and `colspan' keywords.
        (t*cl): Add validity checks for cell widths.
 
 2006-06-04  Werner LEMBERG  <wl@gnu.org>
 
-       * hdbtl.tmac: Improve error messages.  In particular, handle
+       * hdtbl.tmac: Improve error messages.  In particular, handle
        singular and plural correctly by using a pseudo array `nth-{1,2,3}'.
 
        * examples/rainbow.roff: Add copyright notice.  Formatting.
        * Import of hdtbl 0.91 (with some further modifications).  Still
        many rough edges.
 
-Copyright 2006, 2008-2014
-  Free Software Foundation, Inc.
+________________________________________________________________________
+
+Copyright 2006-2018 Free Software Foundation, Inc.
 
 Copying and distribution of this file, with or without modification,
 are permitted in any medium without royalty provided the copyright
@@ -319,5 +461,6 @@ notice and this notice are preserved.
 
 Local Variables:
 version-control: never
+mode: change-log
 coding: latin-1
 End:
diff --git a/contrib/hdtbl/Makefile.sub b/contrib/hdtbl/Makefile.sub
deleted file mode 100644 (file)
index 149311d..0000000
+++ /dev/null
@@ -1,174 +0,0 @@
-# Copyright (C) 2006-2014  Free Software Foundation, Inc.
-#      Written by Werner Lemberg (wl@gnu.org)
-#
-# This file is part of groff.
-#
-# groff 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.
-#
-# groff 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 <http://www.gnu.org/licenses/>.
-
-# These may be overridden if cross-compiling.
-GROFFBIN=$(top_builddir)/src/roff/groff/groff
-GROFF_BIN_PATH=`echo $(groff_bin_dirs) | sed -e 's|  *|$(SH_SEP)|g'`
-
-groff_bin_dirs=\
-  $(top_builddir)/src/roff/groff \
-  $(top_builddir)/src/roff/troff \
-  $(top_builddir)/src/preproc/eqn \
-  $(top_builddir)/src/preproc/pic \
-  $(top_builddir)/src/preproc/tbl \
-  $(top_builddir)/src/devices/grops
-
-FFLAG=-F$(top_builddir)/font -F$(top_srcdir)/font
-TFLAG=-M$(top_builddir)/tmac -M$(top_srcdir)/tmac -M$(srcdir)
-PFLAG=-t -p -e -U
-
-GROFF=\
-  GROFF_COMMAND_PREFIX= \
-  GROFF_BIN_PATH="$(GROFF_BIN_PATH)" \
-  $(GROFFBIN) $(FFLAG) $(TFLAG) $(PFLAG)
-
-MAN7=\
-  groff_hdtbl.n
-
-# These files are processed with `strip.sed'.
-STRIPFILES=\
-  hdtbl.tmac \
-  hdmisc.tmac
-
-# These files are handled by the `.in.roff' rule.
-GENFILES=\
-  examples/fonts_n.roff \
-  examples/fonts_x.roff
-
-EXAMPLEFILES=\
-  examples/common.roff \
-  examples/chess_board.roff \
-  examples/color_boxes.roff \
-  examples/color_nested_tables.roff \
-  examples/color_table_cells.roff \
-  examples/color_transitions.roff \
-  examples/col_rowspan_colors.roff \
-  examples/mixed_pickles.roff \
-  examples/rainbow.roff \
-  examples/short_reference.roff
-
-PROCESSEDEXAMPLEFILES=\
-  examples/chess_board.ps \
-  examples/color_boxes.ps \
-  examples/color_nested_tables.ps \
-  examples/color_table_cells.ps \
-  examples/color_transitions.ps \
-  examples/col_rowspan_colors.ps \
-  examples/fonts_n.ps \
-  examples/fonts_x.ps \
-  examples/mixed_pickles.ps \
-  examples/rainbow.ps \
-  examples/short_reference.ps
-
-EXAMPLEFILES_=`echo $(EXAMPLEFILES) | sed 's|examples/||g'`
-GENFILES_=`echo $(GENFILES) | sed 's|examples/||g'`
-PROCESSEDEXAMPLEFILES_=`echo $(PROCESSEDEXAMPLEFILES) | sed 's|examples/||g'`
-
-MOSTLYCLEANADD=\
-  gnu.eps \
-  $(PROCESSEDEXAMPLEFILES) \
-  $(GENFILES) \
-  examples/stamp \
-  stamp-strip \
-  hdmisc.tmac-s hdtbl.tmac-s
-
-RM=rm -f
-
-.SUFFIXES: .roff .in .ps
-
-.roff.ps:
-       $(GROFF) -Tps -dfontpath=$(top_srcdir)/font -dsopath=$(srcdir)/ \
-                -mhdtbl $< >$@
-
-.in.roff:
-       sed -e "s|@fontdir@|$(fontdir)|" $< >$@
-
-all: $(make_examples) stamp-strip
-
-.PHONY: examples
-examples: $(PROCESSEDEXAMPLEFILES)
-
-$(PROCESSEDEXAMPLEFILES): gnu.eps examples/stamp examples/common.roff
-
-gnu.eps:
-       if test -f $(top_srcdir)/doc/gnu.eps; then \
-         cp $(top_srcdir)/doc/gnu.eps . ; \
-       elif test -f $(top_builddir)/doc/gnu.eps; then \
-         cp $(top_builddir)/doc/gnu.eps . ; \
-       else \
-         xpmtoppm $(top_srcdir)/doc/gnu.xpm | pnmdepth 15 \
-           | $(pnmtops_nosetpage) -noturn -rle >$@ ; \
-       fi
-
-examples/stamp:
-       -test -d examples || $(mkinstalldirs) examples
-       touch $@
-
-stamp-strip: $(STRIPFILES)
-       for f in $(STRIPFILES); do \
-         $(RM) $$f-s; \
-         sed -f $(top_srcdir)/tmac/strip.sed $(srcdir)/$$f >$$f-s; \
-       done
-       touch $@
-
-$(GENFILES): examples/stamp
-
-install_data: install_always $(make_install_examples)
-
-install_always: $(STRIPFILES) $(GENFILES)
-       -test -d $(DESTDIR)$(tmacdir) || $(mkinstalldirs) $(DESTDIR)$(tmacdir)
-       for f in $(STRIPFILES); do \
-         $(RM) $(DESTDIR)$(tmacdir)/$$f; \
-         $(INSTALL_DATA) $$f-s $(DESTDIR)$(tmacdir)/$$f; \
-       done
-
-install_examples: install_always $(EXAMPLEFILES) $(PROCESSEDEXAMPLEFILES) \
-                 gnu.eps stamp-strip
-       -test -d $(DESTDIR)$(exampledir)/hdtbl \
-         || $(mkinstalldirs) $(DESTDIR)$(exampledir)/hdtbl
-       for f in $(EXAMPLEFILES_); do \
-         $(RM) $(DESTDIR)$(exampledir)/hdtbl/$$f; \
-         $(INSTALL_DATA) $(srcdir)/examples/$$f \
-           $(DESTDIR)$(exampledir)/hdtbl/$$f; \
-       done
-       for f in $(PROCESSEDEXAMPLEFILES_) $(GENFILES_); do \
-         $(RM) $(DESTDIR)$(exampledir)/hdtbl/$$f; \
-         $(INSTALL_DATA) examples/$$f $(DESTDIR)$(exampledir)/hdtbl/$$f; \
-       done
-       $(INSTALL_DATA) gnu.eps $(DESTDIR)$(exampledir)/hdtbl/gnu.eps
-
-uninstall_sub: uninstall_always $(make_uninstall_examples)
-
-uninstall_always:
-       -for f in $(STRIPFILES); do $(RM) $(DESTDIR)$(tmacdir)/$$f; done
-
-uninstall_examples: uninstall_always
-       -for f in $(EXAMPLEFILES_) $(PROCESSEDEXAMPLEFILES_) $(GENFILES_); do \
-         $(RM) $(DESTDIR)$(exampledir)/hdtbl/$$f; \
-       done
-       $(RM) $(DESTDIR)$(exampledir)/hdtbl/gnu.eps
-       -test -d $(DESTDIR)$(exampledir)/hdtbl && \
-         rmdir $(DESTDIR)$(exampledir)/hdtbl
-
-########################################################################
-# Emacs settings
-########################################################################
-#
-# Local Variables:
-# mode: makefile
-# End:
index cca1c35..ee5d365 100644 (file)
@@ -1,10 +1,9 @@
-.\" -*- mode: nroff -*-
 .ig
 chess_board.roff
 
 This file is part of groff, the GNU roff type-setting system.
 
-Copyright (C) 2005-201 Free Software Foundation, Inc.
+Copyright (C) 2005-2018 Free Software Foundation, Inc.
 written by Joachim Walsdorff <Joachim.Walsdorff@urz.uni-heidelberg.de>.
 
 groff is free software; you can redistribute it and/or modify it under
@@ -18,7 +17,7 @@ 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 <http://www.gnu.org/licenses/>.
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
 ..
 .
 .if !d sopath \
@@ -27,8 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .so \*[sopath]examples/common.roff
 .
 .
-.time start
-.
 .nr *x 8
 .de r1
 .TR height=1.6c 
@@ -59,8 +56,13 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .PN 8 .TD ".nr *y +1" \\\\n(*y
 .TD
 .ETB
-.time
-.\"    466MHz Celeron CPU, 384MB RAM 
-.\"    WindowsXP/cygwin groff18.1:       1s
-.\"    WindowsXP/cygwin groff19.2:       4s
-.\"    Suse Linux 9.3 groff19.2:         1s
+.
+.\" ====================================================================
+.\" Editor settings
+.\" ====================================================================
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" fill-column: 72
+.\" End:
+.\" vim: set filetype=groff textwidth=72:
index 7f58b91..9a42766 100644 (file)
@@ -1,10 +1,9 @@
-.\" -*- mode: nroff -*-
 .ig
 col_rowspan_colors.roff
 
 This file is part of groff, the GNU roff type-setting system.
 
-Copyright (C) 2005-201 Free Software Foundation, Inc.
+Copyright (C) 2005-2018 Free Software Foundation, Inc.
 written by Joachim Walsdorff <Joachim.Walsdorff@urz.uni-heidelberg.de>.
 
 groff is free software; you can redistribute it and/or modify it under
@@ -18,7 +17,7 @@ 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 <http://www.gnu.org/licenses/>.
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
 ..
 .
 .if !d sopath \
@@ -26,8 +25,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .
 .so \*[sopath]examples/common.roff
 .
-.time start
-.
+.\" Seed the random number generator for reproducible builds.
+.random-seed 131545532 19201711
 .de color#
 .nr # +1
 .random#
@@ -38,9 +37,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .nr # 0
 .color#
 .if \\n[t*cols\\n[t*#]]/2*2=\\n[t*cols\\n[t*#]] \{ .
-.   tmc \\n(.F:\\n(.c: cols was even (\\n[t*cols\\n[t*#]]), 
+.   tmc \\n(.F:\\n(.c: cols was even (\\n[t*cols\\n[t*#]]),
 .   nr t*cols\\n[t*#] +1
-.   tm  increased by one col to \\n[t*cols\\n[t*#]].
+.   tm1 " increased by one col to \\n[t*cols\\n[t*#]].
 .   t*cl \\*[width]
 .   ie "\\*[tal]"r" .nr in\\n[t*#] -\\*[width]\"    recalculate cell widths etc.
 .   el .if "\\*[tal]"c" .nr in\\n[t*#] -\\*[width]/2
@@ -55,7 +54,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .   color#
 .   ds html "".TR height=\\nW" ".TD colspan=\\nI bgc=c\\n#"
 .   color#
-.   as html " ".TD rowspan=\\nI bgc=c\\n#" 
+.   as html " ".TD rowspan=\\nI bgc=c\\n#"
 .   color#
 .   as html " ".TR height=\\nW" ".TD rowspan=\\nI bgc=c\\n#"
 .   color#
@@ -64,20 +63,24 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .t*P1 \\*[html]
 ..
 .
-.pv 1.2 1.2 "" x
+.t*pv 1.2 1.2 "" x
 .PN 10 Text before table.
 .in 1c
 .PN 8 Indented text before table.
 *** *** ***
 .TBL width=90% border=1n csp=1n cpd=1n bgc=wheat tal=c .TR .TD
-.TBL  border= cols=10 width=1c tal=c csp=0 cpd=0 \"cols must be odd
+.TBL  border= cols=11 width=1c tal=c csp=0 cpd=0 \"cols must be odd
 .CPTN val=b Randomly Colored Table Cells with Colspan/\%Rowspan
 .brt
-.ETB .ETB 
+.ETB .ETB
 .PN 15 Text after table.
-.time
-.date
-.\"    466MHz Celeron CPU, 384MB RAM 
-.\"    WindowsXP/cygwin groff18.1:      4s
-.\"    WindowsXP/cygwin groff19.2:      7s
-.\"    Suse Linux 9.3 groff19.2:        1s
+.
+.\" ====================================================================
+.\" Editor settings
+.\" ====================================================================
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" fill-column: 72
+.\" End:
+.\" vim: set filetype=groff textwidth=72:
index 0ce9507..ddb1666 100644 (file)
@@ -1,10 +1,9 @@
-.\" -*- mode: nroff -*-
 .ig
 color_boxes.roff
 
 This file is part of groff, the GNU roff type-setting system.
 
-Copyright (C) 2005-2014 Free Software Foundation, Inc.
+Copyright (C) 2005-2018 Free Software Foundation, Inc.
 written by Joachim Walsdorff <Joachim.Walsdorff@urz.uni-heidelberg.de>.
 
 groff is free software; you can redistribute it and/or modify it under
@@ -18,7 +17,7 @@ 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 <http://www.gnu.org/licenses/>.
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
 ..
 .
 .if !d sopath \
@@ -26,7 +25,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .
 .so \*[sopath]examples/common.roff
 .
-.time start
+.\" Seed the random number generator for reproducible builds.
+.random-seed 131545532 19201711
 .
 .H Horizontal Rules and Boxes .br with Randomly Colored Border and Background
 .PN 25 Text before horizontal rule.
@@ -44,8 +44,13 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .PN 15 Text after table.
 .TBL border=.5n bc=color1 bgc=color2 width=15c tal=c csp=.2n cpd=.3n .TR .TD .ETB
 .PN 25 Text after horizontal rule.
-.time
-.\"    466MHz Celeron CPU, 384MB RAM 
-.\"    WindowsXP/cygwin groff18.1:      10s
-.\"    WindowsXP/cygwin groff19.2:      14s
-.\"    Suse Linux 9.3 groff19.2:         1s
+.
+.\" ====================================================================
+.\" Editor settings
+.\" ====================================================================
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" fill-column: 72
+.\" End:
+.\" vim: set filetype=groff textwidth=72:
index e469cf4..cb0e9c4 100644 (file)
@@ -1,11 +1,10 @@
-.\" -*- mode: nroff -*-
 .ig
 
 color_nested_tables.roff
 
 This file is part of groff, the GNU roff type-setting system.
 
-Copyright (C) 2005-201 Free Software Foundation, Inc.
+Copyright (C) 2005-2018 Free Software Foundation, Inc.
 written by Joachim Walsdorff <Joachim.Walsdorff@urz.uni-heidelberg.de>.
 
 groff is free software; you can redistribute it and/or modify it under
@@ -19,7 +18,7 @@ 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 <http://www.gnu.org/licenses/>.
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 ..
 .
@@ -29,7 +28,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .so \*[sopath]examples/common.roff
 .
 .
-.time start
+.\" Seed the random number generator for reproducible builds.
+.random-seed 131545532 19201711
 .
 .PN 15 Text before first table.
 .nr # 0 1
@@ -41,12 +41,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .PN 39 .ETB
 .PN 15 Text after first table.
 .
-.time
-.
 .bp
 .
-.time start
-.
 .PN 15 Text before second table.
 *****
 .nr # 0 1
@@ -57,9 +53,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .PN 39 .ETB
 .PN 25 Text after second table.
 .
-.time
+.\" ====================================================================
+.\" Editor settings
+.\" ====================================================================
 .
-.\"    466MHz Celeron CPU, 384MB RAM 
-.\"    WindowsXP/cygwin groff18.1:      9/9s
-.\"    WindowsXP/cygwin groff19.2:    14/14s
-.\"    Suse Linux 9.3 groff19.2:        1/1s
+.\" Local Variables:
+.\" mode: nroff
+.\" fill-column: 72
+.\" End:
+.\" vim: set filetype=groff textwidth=72:
index 7a482f3..2f84b28 100644 (file)
@@ -1,11 +1,10 @@
-.\" -*- mode: nroff -*-
 .ig
 
 color_table_cells.roff
 
 This file is part of groff, the GNU roff type-setting system.
 
-Copyright (C) 2005-2014 Free Software Foundation, Inc.
+Copyright (C) 2005-2018 Free Software Foundation, Inc.
 written by Joachim Walsdorff <Joachim.Walsdorff@urz.uni-heidelberg.de>.
 
 groff is free software; you can redistribute it and/or modify it under
@@ -19,7 +18,7 @@ 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 <http://www.gnu.org/licenses/>.
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 ..
 .
@@ -28,7 +27,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .
 .so \*[sopath]examples/common.roff
 .
-.time start
+.\" Seed the random number generator for reproducible builds.
+.random-seed 131545532 19201711
 .
 .H Horizontal Rules and Randomly Colored Table Cells
 .PN 15 Text before HR.
@@ -46,8 +46,13 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .PN 10 Text after table.
 .TBL border=.5n bc=c1 bgc=c2 width=15c tal=c csp=.2n cpd=.3n .TR .TD .ETB
 .PN 15 Text after HR.
-.time
-.\"    466MHz Celeron CPU, 384MB RAM 
-.\"    WindowsXP/cygwin groff18.1:      14s
-.\"    WindowsXP/cygwin groff19.2:      18s
-.\"    Suse Linux 9.3 groff19.2:         1s
+.
+.\" ====================================================================
+.\" Editor settings
+.\" ====================================================================
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" fill-column: 72
+.\" End:
+.\" vim: set filetype=groff textwidth=72:
index 91db356..27c1400 100644 (file)
@@ -1,11 +1,10 @@
-.\" -*- mode: nroff -*-
 .ig
 
 color_transitions.roff
 
 This file is part of groff, the GNU roff type-setting system.
 
-Copyright (C) 2005-201 Free Software Foundation, Inc.
+Copyright (C) 2005-2018 Free Software Foundation, Inc.
 written by Joachim Walsdorff <Joachim.Walsdorff@urz.uni-heidelberg.de>.
 
 groff is free software; you can redistribute it and/or modify it under
@@ -19,7 +18,7 @@ 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 <http://www.gnu.org/licenses/>.
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 ..
 .
@@ -28,8 +27,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .
 .so \*[sopath]examples/common.roff
 .
-.time start
-.
 .de ctab
 .nr #cc 0
 .PN 21 ".nr #cc +.05f" ".defcolor \En[t*#] rgb \\$1 \\$2 \\$3" ".TBL border= csp=0 cpd=.5n bgc=\\\\n[t*#] bc=" .TR .TD
@@ -53,8 +50,13 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .xTD ".ctab 0+\En[#cc]u 1f-\En[#cc]u 1f-\En[#cc]u"\"   cyan   -> red
 .ETB 
 .PN 30 After table.
-.time
-.\"    466MHz Celeron CPU, 384MB RAM 
-.\"    WindowsXP/cygwin groff18.1:      3s
-.\"    WindowsXP/cygwin groff19.2:     20s
-.\"    Suse Linux 9.3 groff19.2         3s
+.
+.\" ====================================================================
+.\" Editor settings
+.\" ====================================================================
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" fill-column: 72
+.\" End:
+.\" vim: set filetype=groff textwidth=72:
index ddb6d4a..fa45674 100644 (file)
@@ -1,11 +1,10 @@
-.\"    -*-     mode: nroff     -*-
 .ig
 
 common.roff
 
 This file is part of groff, the GNU roff type-setting system.
 
-Copyright (C) 2010-201 Free Software Foundation, Inc.
+Copyright (C) 2010-2018 Free Software Foundation, Inc.
 written by Joachim Walsdorff <Joachim.Walsdorff@urz.uni-heidelberg.de>.
 
 groff is free software; you can redistribute it and/or modify it under
@@ -19,11 +18,12 @@ 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 <http://www.gnu.org/licenses/>.
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 ..
 .
 .
+.ds common common.roff\"               name for diagnostic messages
 .mso hdtbl.tmac\"                      load table macros
 .
 .\"    ******************************************************************
@@ -31,12 +31,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .\"    ******************************************************************
 .
 .\"    ******************************************************************
-.\"    **      some of the following macros use system commands        **
-.\"    **      and are therefore `unsafe': they need the `-U' argument **
-.\"    **      when calling groff/troff                                **
-.\"    ******************************************************************
-.
-.\"    ******************************************************************
 .\"    **              Header macro for the examples                   **
 .\"    ******************************************************************
 .de H
@@ -59,40 +53,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .
 .
 .\"    ******************************************************************
-.\"    **      Utility macro for the date, requires UNIX date.         **
-.\"    **      after return string *date contains the date in the      **
-.\"    **      standard form of the Unix date-command,                 **
-.\"    **      for example "Sun Dec  5 22:27:57     2004"              **
-.\"    ******************************************************************
-.de date
-.  pso sh -c "echo -n .ds *date\ ;date"
-.  tm \\*[*date] ***
-..
-.
-.
-.\"    ******************************************************************
-.\"    **      Utility macro for time measurement, requires UNIX date  **
-.\"    **      .time s[tart]|[end]                                     **
-.\"    **              .time start:                                    **
-.\"    **                      reg *time gets the start-time (seconds) **
-.\"    **              .time [end]:                                    **
-.\"    **                      reg *time gets the difference of the    **
-.\"    **                              end- and start-time (seconds)   **
-.\"    ******************************************************************
-.de time
-.  ds * \\$1\"
-.  substring * 0 0
-.  ie "\\*[*]"s" \
-.    pso sh -c "echo -n .nr *time 0+;date +%s"
-.  el \{\
-.   pso sh -c "echo -n .nr *time -;date +%s"
-.   nr *time 0-\\n[*time]
-.   tm elapsed time: \\n[*time] seconds
-.  \}
-..
-.
-.
-.\"    ******************************************************************
 .\"    **              Perform n-times all the arbitrary arguments     **
 .\"    **              .PN n a2 a3 ...                                 **
 .\"    **                      PN is nestable                          **
@@ -111,16 +71,16 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .
 .\"    Utility macro:  .d2x decimal_number [base [string_name]]
 .\"
-.\"            Convert `decimal_number' to another base `base' (in the
-.\"            range 1..16) and store the result in string `string_name'.
-.\"            If `base' is missing or empty, convert to a hexadecimal
-.\"            number.  If `string_name' is missing or empty, return value
-.\"            in string `hex#', otherwise return the value in both
-.\"            `string_name' and `hex#'.
+.\"            Convert 'decimal_number' to another base 'base' (in the
+.\"            range 1..16) and store the result in string 'string_name'.
+.\"            If 'base' is missing or empty, convert to a hexadecimal
+.\"            number.  If 'string_name' is missing or empty, return value
+.\"            in string 'hex#', otherwise return the value in both
+.\"            'string_name' and 'hex#'.
 .\"
 .\"            The base value 1 is handled specially: The returned
-.\"            string contains the character `|' `decimal_number' times
-.\"            (for example, input value 4 yields `||||').
+.\"            string contains the character '|' 'decimal_number' times
+.\"            (for example, input value 4 yields '||||').
 .ds d2x-0 0\"
 .ds d2x-1 1\"
 .ds d2x-2 2\"
@@ -141,8 +101,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .
 .de d2x
 .  if !\B\a\\$1\a \{\
-.    tm \\n[.F]:\\n[.c]: invalid or missing first argument
-.    tm1 "     usage: `.d2x decimal_number [base [string_name]]'
+.    tmc \\*[common]: \\n[.F]:\\n[.c]: d2x: invalid or missing first
+.    tm argument
+.    tm \\*[common]: usage: '.d2x decimal_number [base [string_name]]'
 .    return
 .  \}
 .
@@ -156,10 +117,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .
 .  ie !"\\$2"" \{\
 .    ie !\B\a\\$2\a \
-.      tm \\n[.F]:\\n[.c]: invalid base `\\$2'
+.      tm \\*[common]: \\n[.F]:\\n[.c]: d2x: invalid base '\\$2'
 .    el \
 .      ie ((\\$2 < 1) : (\\$2 > 16)) \
-.        tm \\n[.F]:\\n[.c]: invalid base `\\$2'
+.        tm \\*[common]: \\n[.F]:\\n[.c]: d2x: invalid base '\\$2'
 .      el \
 .        nr b# \\$2
 .  \}\}
@@ -198,7 +159,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .
 .  if !"\\$3"" \{\
 .    ie !\A\a\\$3\a \
-.      tm \\n[.F]:\\n[.c]: invalid string name `\\$3'
+.      tm \\*[common]: \\n[.F]:\\n[.c]: d2x: invalid string name '\\$3'
 .    el \
 .      ds \\$3 \\*[hex#]\"
 .  \}
@@ -209,46 +170,35 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .\"                    .random-seed seed1 seed2
 .\"
 .\"            Return pseudo-random numbers in the range 0..0xFFFFFF,
-.\"            represented as the concatenation of `#' and six
-.\"            hexadecimal digits, in the string `#random'.  The
-.\"            macro `random-seed' can be used to set seed values,
+.\"            represented as the concatenation of '#' and six
+.\"            hexadecimal digits, in the string '#random'.  The
+.\"            macro 'random-seed' can be used to set seed values,
 .\"            which should be integers in the range 1..2147483562 and
-.\"            1..2147483398 for `seed1' and `seed2', respectively
+.\"            1..2147483398 for 'seed1' and 'seed2', respectively
 .\"            (the macro applies a modulo operation to assure this
-.\"            range).  If `random-seed' isn't called the registers
-.\"            `seconds', `minutes', `hours', `dy', `mo', `year', and
-.\"            `$$' are used to compute it.
+.\"            range).  If 'random-seed' isn't called the registers
+.\"            start at some constant, arbitrary values.
 .\"
 .\"            The used generator is presented in L'Ecuyer's 1988 paper
-.\"            `Efficient and Portable Combined Random Number
+.\"            'Efficient and Portable Combined Random Number
 .\"            Generators', which combines two Multiplicative Linear
 .\"            Congruential Generators (MLCGs) to achieve a period of
 .\"            2.3*10^18.
-.af hours 00
-.af minutes 00
-.af seconds 00
-.af year 0000
-.af mo 00
-.af dy 00
-.
-.ds random-s1 \n[minutes]\n[seconds]\n[$$]\n[hours]\"
-.\" prevent overflow
-.substring random-s1 0 8
-.
-.nr random-s1 (\*[random-s1] % 2147483562)
-.nr random-s2 \n[dy]\n[year]\n[mo]
-.
+.\"
+.\"            Since this just generates example output,
+.\"            we don't need good randomness.
 .
 .de random-seed
 .  if !(\\n[.$] == 2) \{\
-.    tm1 "random-seed: Invalid number of arguments.
-.    tm1 "             usage: `.random-seed seed1 seed2'
+.    tm \\*[common]: random-seed: Invalid number of arguments.
+.    tm \\*[common]: usage: '.random-seed seed1 seed2'
 .    return
 .  \}
 .
 .  nr random-s1 (\\$1 % 2147483562)
 .  nr random-s2 (\\$2 % 2147483398)
 ..
+.random-seed 131545532 19201711
 .
 .
 .de random#
@@ -286,7 +236,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .nr v \n[.v]
 .nr p \n[.p]
 .nr o \n[.o]
-.pv 1.2 1.2 "" X
 .nr l 6.6i                             \"      set text width
 .ll \n[t*l]u
 .nr o 2c                               \"      set offset
@@ -339,4 +288,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .if "\n[.M]"" \
 .  fcolor white
 .
-.\" EOF
+.\" ====================================================================
+.\" Editor settings
+.\" ====================================================================
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" fill-column: 72
+.\" End:
+.\" vim: set filetype=groff textwidth=72:
index e94ca72..76d6661 100644 (file)
@@ -1,11 +1,10 @@
-.\"    -*-     mode: groff     -*-
 .ig
 
 font_n.roff
 
 This file is part of groff, the GNU roff type-setting system.
 
-Copyright (C) 2005-2014 Free Software Foundation, Inc.
+Copyright (C) 2005-2018 Free Software Foundation, Inc.
 written by Joachim Walsdorff <Joachim.Walsdorff@urz.uni-heidelberg.de>.
 
 groff is free software; you can redistribute it and/or modify it under
@@ -19,7 +18,7 @@ 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 <http://www.gnu.org/licenses/>.
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 ..
 .
@@ -29,21 +28,23 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .\"    **      .fontdump [font1 font2 ...]                             **
 .\"    **              Print glyphs of font1, font2, ..., versus       **
 .\"    **              character code.                                 **
-.\"    **              `all' as fontname prints all fonts in the       **
-.\"    **              specified string `fontpath'.                    **
+.\"    **              'all' as fontname prints all fonts in the       **
+.\"    **              specified string 'fontpath'.                    **
 .\"    **              without arg: glyphs and codes of active font.   **
 .\"    ******************************************************************
 .
+.ds fonts_n fonts_n.roff\"             name for diagnostic messages
+.
 .if !d sopath \
 .  ds sopath
 .
 .so \*[sopath]examples/common.roff
 .
-.time start
-.
 .if !d fontpath \
 .  ds fontpath @fontdir@
 .
+.tm \*[fonts_n]: listing fonts in \*[fontpath]/dev\*[.T]
+.
 .de fontdump
 .  ie \\n[.$] \
 .    ds *args \\$*
@@ -51,9 +52,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .    ds *args \\n[.fn]
 .
 .  pso sh -c \
-       "echo -n .ds *f\ ; \
+       "printf '%s' '.ds *f ' ; \
         ls \\*[fontpath]/dev\*[.T] \
-        | tr '[:cntrl:]' ' '"
+        | tr '[:cntrl:]' '[ *]'"
 .  \"  This dummy line is necessary; the preceding line eats it.
 .
 .  while !"\\*[*args]"" \{\
@@ -76,13 +77,13 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .
 .    ie (\\n[.y] > 18) \
 .      if !F \\*[*$1] \{\
-.        tm \\n[.F]:\\n[.c]: Font \\*[*$1] not found.
-.        continue 
+.        tm \\*[fonts_n]: \\n[.F]:\\n[.c]: Font \\*[*$1] not found.
+.        continue
 .      \}
 .    el \{\
 .      if !\\n[t*index] \{\
-.        tm \\n[.F]:\\n[.c]: Font \\*[*$1] not found.
-.        continue 
+.        tm \\*[fonts_n]: \\n[.F]:\\n[.c]: Font \\*[*$1] not found.
+.        continue
 .      \}
 .
 .      nr * \\n[.f]
@@ -97,22 +98,22 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .    if \\n[t*cptn] \
 .      bp
 .
-.    tm listing font `\\*[*$1]'...
+.    tm \\*[fonts_n]: listing font '\\*[*$1]'...
 .
 .    TBL border=.1n bc=red cpd=0 csp=.1n bgc=
 .      CPTN groff font \\*[*$1] \
             .br \
-            val=b ".pso grep -e internalname \\*[fontpath]/dev\*[.T]/\\*[*$1]"
+            val=b ".pso @EGREP@ internalname \\*[fontpath]/dev\*[.T]/\\*[*$1]"
 .      TR 
 .        TD
 .          TBL cols=12 border=.1n bc=red csp=.1n cpd=.2n fgc=red4 bgc=beige \
                hal=c fsz='1.2 1.2' fst=\\*[*$1]
 .            nr c# 0-1 1
 .            nr y# 0-1 1
-.            TR fst=HB fgc=blue 
-.              TD 
+.            TR fst=HB fgc=blue
+.              TD
 .                nr x# 0-1 1
-.                \" following 4 `PN's instead of 4 while-loops as in
+.                \" following 4 'PN's instead of 4 while-loops as in
 .                \" font_x.roff; short and easy to write, but a little
 .                \" bit slower.
 .              PN 10 .TD \
@@ -141,10 +142,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .
 .fontdump all
 .
-.time
-.date
+.\" ====================================================================
+.\" Editor settings
+.\" ====================================================================
 .
-.\"    466MHz Celeron CPU, 384MB RAM 
-.\"    WindowsXP/cygwin groff18.1:     115s
-.\"    WindowsXP/cygwin groff19.2:     450s
-.\"    Suse Linux 9.3 groff19.2:        76s
+.\" Local Variables:
+.\" mode: nroff
+.\" fill-column: 72
+.\" End:
+.\" vim: set filetype=groff textwidth=72:
index 72e3f24..081c8c7 100644 (file)
@@ -1,11 +1,10 @@
-.\"    -*-     mode: nroff     -*-
 .ig
 
 font_x.roff
 
 This file is part of groff, the GNU roff type-setting system.
 
-Copyright (C) 2005-2014 Free Software Foundation, Inc.
+Copyright (C) 2005-2018 Free Software Foundation, Inc.
 written by Joachim Walsdorff <Joachim.Walsdorff@urz.uni-heidelberg.de>.
 
 groff is free software; you can redistribute it and/or modify it under
@@ -19,7 +18,7 @@ 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 <http://www.gnu.org/licenses/>.
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 ..
 .
@@ -29,21 +28,23 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .\"    **      .fontdump [font1 font2 ...]                             **
 .\"    **              Print glyphs of font1, font2, ..., versus       **
 .\"    **              character code.                                 **
-.\"    **              `all' as fontname prints all fonts in the       **
-.\"    **              specified string `fontpath'.                    **
+.\"    **              'all' as fontname prints all fonts in the       **
+.\"    **              specified string 'fontpath'.                    **
 .\"    **              without arg: glyphs and codes of active font.   **
 .\"    ******************************************************************
 .
+.ds fonts_x fonts_x.roff\"             name for diagnostic messages
+.
 .if !d sopath \
 .  ds sopath
 .
 .so \*[sopath]examples/common.roff
 .
-.time start
-.
 .if !d fontpath \
 .  ds fontpath @fontdir@
 .
+.tm \*[fonts_x]: listing fonts in \*[fontpath]/dev\*[.T]
+.
 .de fontdump
 .  ie \\n[.$] \
 .    ds *args \\$*
@@ -51,9 +52,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .    ds *args \\n[.fn]
 .
 .  pso sh -c \
-       "echo -n .ds *f\ ; \
+       "printf '%s' '.ds *f ' ; \
         ls \\*[fontpath]/dev\*[.T] \
-        | tr '[:cntrl:]' ' '"
+        | tr '[:cntrl:]' '[ *]'"
 .  \"  This dummy line is necessary; the preceding line eats it.
 .
 .  while !"\\*[*args]"" \{\
@@ -76,12 +77,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .
 .    ie (\\n[.y] > 18) \
 .      if !F \\*[*$1] \{\
-.        tm \\n[.F]:\\n[.c]: Font \\*[*$1] not found.
+.        tm \\*[fonts_x]: \\n[.F]:\\n[.c]: Font \\*[*$1] not found.
 .        continue
 .      \}
 .    el \{\
 .      if !\\n[t*index] \{\
-.        tm \\n[.F]:\\n[.c]: Font \\*[*$1] not found.
+.        tm \\*[fonts_x]: \\n[.F]:\\n[.c]: Font \\*[*$1] not found.
 .        continue
 .      \}
 .
@@ -97,12 +98,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .    if \\n[t*cptn] \
 .      bp
 .
-.    tm listing font `\\*[*$1]'...
+.    tm \\*[fonts_x]: listing font '\\*[*$1]'...
 .
 .    TBL border=.1n bc=red cpd=0 csp=.1n bgc=
 .      CPTN groff font \\*[*$1] \
             .br \
-            val=b ".pso grep -e internalname \\*[fontpath]/dev\*[.T]/\\*[*$1]"
+            val=b ".pso @EGREP@ internalname \\*[fontpath]/dev\*[.T]/\\*[*$1]"
 .      TR
 .        TD
 .          TBL cols=18 border=.1n bc=red csp=.1n cpd=.2n fgc=red4 bgc=beige \
@@ -152,10 +153,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .
 .fontdump all
 .
-.time
-.date
+.\" ====================================================================
+.\" Editor settings
+.\" ====================================================================
 .
-.\"    466MHz Celeron CPU, 384MB RAM
-.\"    WindowsXP/cygwin groff18.1:     107s
-.\"    WindowsXP/cygwin groff19.2:     390s
-.\"    Suse Linux 9.3 groff19.2:        66s
+.\" Local Variables:
+.\" mode: nroff
+.\" fill-column: 72
+.\" End:
+.\" vim: set filetype=groff textwidth=72:
index a21a807..190c860 100644 (file)
@@ -1,11 +1,10 @@
-.\"    -*-     mode: nroff     -*-
 .ig
 
 mixed_pickles.roff
 
 This file is part of groff, the GNU roff type-setting system.
 
-Copyright (C) 2005-2014 Free Software Foundation, Inc.
+Copyright (C) 2005-2018 Free Software Foundation, Inc.
 written by Joachim Walsdorff <Joachim.Walsdorff@urz.uni-heidelberg.de>.
 
 groff is free software; you can redistribute it and/or modify it under
@@ -19,7 +18,7 @@ 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 <http://www.gnu.org/licenses/>.
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 ..
 .
@@ -28,8 +27,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .
 .so \*[sopath]examples/common.roff
 .
-.time start
-.
 .H Table with Mixed Content: \
    .br \
    EPS Image, eqn Equation, tbl Table, and pic Picture
@@ -96,9 +93,12 @@ ellipse "PostScript"
 .      ETB
 .ETB
 .
-.time
+.\" ====================================================================
+.\" Editor settings
+.\" ====================================================================
 .
-.\"    466MHz Celeron CPU, 384MB RAM 
-.\"    WindowsXP/cygwin groff18.1:       1s
-.\"    WindowsXP/cygwin groff19.2:       2s
-.\"    Suse Linux 9.3 groff19.2:         1s
+.\" Local Variables:
+.\" mode: nroff
+.\" fill-column: 72
+.\" End:
+.\" vim: set filetype=groff textwidth=72:
index e90f872..8c2553f 100644 (file)
@@ -1,11 +1,10 @@
-.\" -*- mode: nroff -*-
 .ig
 
 rainbow.roff
 
 This file is part of groff, the GNU roff type-setting system.
 
-Copyright (C) 2005-201 Free Software Foundation, Inc.
+Copyright (C) 2005-2018 Free Software Foundation, Inc.
 written by Joachim Walsdorff <Joachim.Walsdorff@urz.uni-heidelberg.de>.
 
 groff is free software; you can redistribute it and/or modify it under
@@ -19,7 +18,7 @@ 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 <http://www.gnu.org/licenses/>.
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 ..
 .
@@ -28,8 +27,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .
 .so \*[sopath]examples/common.roff
 .
-.time start
-.
 .nr *n 25
 .nr *# 0 1
 .
@@ -55,12 +52,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .
 .PN 6*\n[*n] .ETB
 .
-.time end
-.
 .bp
 .
-.time start
-.
 .nr *n 25
 .nr *# 0 1
 .
@@ -86,9 +79,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .
 .PN 6*\n[*n] .ETB
 .
-.time end
+.\" ====================================================================
+.\" Editor settings
+.\" ====================================================================
 .
-.\"    466MHz Celeron CPU, 384MB RAM 
-.\"    WindowsXP/cygwin groff18.1:     11/10s
-.\"    WindowsXP/cygwin groff19.2:     57/55s
-.\"    Suse Linux 9.3 groff19.2:         8/8s
+.\" Local Variables:
+.\" mode: nroff
+.\" fill-column: 72
+.\" End:
+.\" vim: set filetype=groff textwidth=72:
index fa784c0..e608769 100644 (file)
@@ -1,11 +1,10 @@
-.\" -*- mode: nroff -*-
 .ig
 
 short_reference.roff
 
 This file is part of groff, the GNU roff type-setting system.
 
-Copyright (C) 2005-2014 Free Software Foundation, Inc.
+Copyright (C) 2005-2018 Free Software Foundation, Inc.
 written by Joachim Walsdorff <Joachim.Walsdorff@urz.uni-heidelberg.de>.
 
 groff is free software; you can redistribute it and/or modify it under
@@ -19,7 +18,7 @@ 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 <http://www.gnu.org/licenses/>.
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 ..
 .
@@ -28,9 +27,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .
 .so \*[sopath]examples/common.roff
 .
-.time start
-.
-.pv 1.2 1.2 "" x
+.t*pv 1.2 1.2 "" x
 .H Short Reference for the HDtbl-Macros
 This Short Reference describes the Heidelberger Table Macros
 using the macros themselves.
@@ -59,7 +56,7 @@ using the macros themselves.
 .TD \&.TR \&.TD \&.TH \%.ETB cell content
 .TD \&.TD \&.TH \&.TR \%.ETB cell content
 .TR 
-.TD \&.TH .TD Begin table data cell .TD \&.TR \&.TD \&.TH \%.ETB cell content
+.TD \&.TD .TD Begin table data cell .TD \&.TR \&.TD \&.TH \%.ETB cell content
 .TD \&.TD \&.TH \&.TR \%.ETB cell content
 .TR 
 .TD \&.ETB .TD Finish and print table .TD \&.TD \&.TH \%.ETB cell content
@@ -81,4 +78,13 @@ using the macros themselves.
 .TD color of border and cellseperatorlines .TD .ce X .TD .TD .ce X .TD .ce X .TD .ce X .TD
 .ETB
 .H ------ incomplete -------
-.time end
+.
+.\" ====================================================================
+.\" Editor settings
+.\" ====================================================================
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" fill-column: 72
+.\" End:
+.\" vim: set filetype=groff textwidth=72:
diff --git a/contrib/hdtbl/examples/test-hdtbl.sh.in b/contrib/hdtbl/examples/test-hdtbl.sh.in
new file mode 100644 (file)
index 0000000..5e81bf7
--- /dev/null
@@ -0,0 +1,47 @@
+#!/bin/sh
+#
+# Copyright (C) 2018- Free Software Foundation, Inc.
+# 
+# This file is part of groff.
+# 
+# groff 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.
+# 
+# groff 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 <http://www.gnu.org/licenses/>.
+#
+
+# Test generated files 'font_n.ps' and 'font_x.ps'.  Both should have
+# 38 pages.
+
+builddir="@abs_top_builddir@"
+gs_program="@GHOSTSCRIPT@"
+ret=0
+
+if test "$gs_program" = "missing"; then
+   echo "ghostscript program missing, can't check hdtbl examples"
+   exit 77
+fi
+
+# $1 file, $2 expected number of pages
+check_number_pages()
+{
+    echo "Checking $1"
+    res=`$gs_program -o /dev/null/ -sDEVICE=bbox "$1" 2>&1 | grep HiResBoundingBox | wc -l`
+    if test $res != $2; then
+        echo "  Error: expected $2 pages, found $res pages"
+        ret=255
+    fi
+}
+
+check_number_pages $builddir/contrib/hdtbl/examples/fonts_n.ps 38
+check_number_pages $builddir/contrib/hdtbl/examples/fonts_x.ps 38
+
+exit $ret
similarity index 82%
rename from contrib/hdtbl/groff_hdtbl.man
rename to contrib/hdtbl/groff_hdtbl.7.man
index 74012ae..0ae39a3 100644 (file)
@@ -1,40 +1,36 @@
-.TH GROFF_HDTBL @MAN7EXT@ "@MDATE@" "Groff Version @VERSION@"
+.TH GROFF_HDTBL @MAN7EXT@ "@MDATE@" "groff @VERSION@"
 .SH NAME
-groff_hdtbl \- groff `hdtbl' macros for generation of tables
-.
-.
-.\" --------------------------------------------------------------------
-.\" Legalese
-.\" --------------------------------------------------------------------
-.
-.de co
-Copyright \[co] 2005-2014 Free Software Foundation, Inc.
-
-This file is part of groff, the groff.
-
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.3 or
-any later version published by the Free Software Foundation; with the
-Invariant Sections being this .ig-section and AUTHORS, with no
-Front-Cover Texts, and with no Back-Cover Texts.
-
-A copy of the Free Documentation License is included as a file called
-FDL in the main directory of the groff source package.
-..
+groff_hdtbl \- Heidelberger table macros for GNU roff
 .
-.de au
-This document was written by
-.MT Joachim.Walsdorff@urz.uni-heidelberg.de
-Joachim Walsdorff
-.ME .
-..
+.
+.\" Save and disable compatibility mode (for, e.g., Solaris 10/11).
+.do nr groff_hdtbl_C \n[.C]
+.cp 0
+.
+.
+.\" ====================================================================
+.\" Legal Terms
+.\" ====================================================================
+.\"
+.\" Copyright (C) 2005-2018 Free Software Foundation, Inc.
+.\"
+.\" This file is part of groff, the GNU roff type-setting system.
+.\"
+.\" Permission is granted to copy, distribute and/or modify this
+.\" document under the terms of the GNU Free Documentation License,
+.\" Version 1.3 or any later version published by the Free Software
+.\" Foundation; with no Invariant Sections, with no Front-Cover Texts,
+.\" and with no Back-Cover Texts.
+.\"
+.\" A copy of the Free Documentation License is included as a file
+.\" called FDL in the main directory of the groff source package.
 .
 .
 .ig
-  Some simple formatting macros.  Note that we use `.ig' here and not a
-  comment to make `mandb' 2.4.1 (and probably more recent versions also)
-  happy; otherwise the `.char' lines and the stuff which follows is included
-  in the `whatis' database.
+  Some simple formatting macros.  Note that we use '.ig' here and not a
+  comment to make 'mandb' 2.4.1 (and probably more recent versions also)
+  happy; otherwise the '.char' lines and the stuff which follows is included
+  in the 'whatis' database.
 ..
 .
 .
@@ -56,7 +52,7 @@ Joachim Walsdorff
 .  \"   .CR bar
 .  \"   foo
 .  \"
-.  \" the space immediately after `bar' should not be taken from the `C'
+.  \" the space immediately after 'bar' should not be taken from the 'C'
 .  \" family.  At the same time, this
 .  \"
 .  \"   foo
@@ -116,12 +112,6 @@ Joachim Walsdorff
 .\}
 .
 .
-.de TQ
-.  br
-.  ns
-.  TP
-..
-.
 .
 .de XB
 .  B "\\$1"
@@ -171,9 +161,9 @@ Joachim Walsdorff
 .  nop ).
 ..
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH DESCRIPTION
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The
 .B hdtbl
@@ -191,7 +181,7 @@ An advantage of
 .B hdtbl
 is that the tables are constructed without calling a preprocessor; this
 means that
-.BR groff \[aq]s
+.BR groff 's
 full macro capabilities are available.
 .
 On the other hand, table processing with
@@ -205,9 +195,9 @@ A further advantage is that the HTML-like syntax of
 will be easily converted to HTML; this is not implemented yet.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH USAGE
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 In this and the next section, we present examples to help users
 understand the basic workflow of
@@ -296,7 +286,7 @@ representation is
 .PP
 .nf
 .nh
-.ft C
+.ft CR
 .RS
 +------------------------------------------------------+
 | contents-of-the-table-cell                           |
@@ -324,7 +314,7 @@ Equivalent to the above is the following notation.
 By default, the formatted table is inserted into the surrounding text
 at the place of its definition.
 .
-If the vertical space isn\[aq]t sufficient, it is placed at the top of
+If the vertical space isn't sufficient, it is placed at the top of
 the next page.
 .
 Tables can also be stored for later insertion.
@@ -359,7 +349,7 @@ representation is
 .PP
 .nf
 .nh
-.ft C
+.ft CR
 .RS
 +--------------------------+---------------------------+
 | 1*1                      | 1*2                       |
@@ -373,7 +363,7 @@ representation is
 .
 .
 .PP
-Here we see a difference to HTML tables: The number of columns must be
+Here we see a difference from HTML tables: The number of columns must be
 explicitly specified using the
 .CRI \[oq]cols= m\[cq]
 argument (or indirectly via the
@@ -449,7 +439,7 @@ The first table looks like
 .PP
 .nf
 .nh
-.ft C
+.ft CR
 .RS
 +------------------------------------------------------+
 | 1*1 1*2                                              |
@@ -469,7 +459,7 @@ and the second one like
 .PP
 .nf
 .nh
-.ft C
+.ft CR
 .RS
 +------------------------------------------------------+
 | 1*1 1*2                                              |
@@ -501,9 +491,9 @@ line, everything belonging to this macro including the macro itself must be
 enclosed in double quotes.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH MACROS AND ARGUMENTS
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The order of macro calls and other tokens follows the HTML model.
 .
@@ -590,7 +580,7 @@ These common arguments are explained in the next subsection.
 Most of the argument default values can be changed by the user by
 setting corresponding default registers or strings, as listed below.
 .
-.\"------------------------------------------------------------------
+.\"==================================================================
 .
 .TP
 .CBI ".TBL " \[lB]args\[rB]
@@ -660,9 +650,10 @@ Horizontal alignment of the table, if it is smaller than the line width.
 Widths of table cells.
 .
 .CI w1\c
-,
+.RI , ""
 .CI w2\c
-, \[ell] are either numbers of type\~\c
+.RI , ""
+\[ell] are either numbers of type\~\c
 .CI n
 or natural numbers with the pseudo-scaling indicator
 .CR \[oq]%\[cq]\c
@@ -692,11 +683,12 @@ Height of the table.
 .
 If the table with its contents is lower than\~\c
 .CI n\c
-, the last row is stretched to this value.
+.RI , ""
+the last row is stretched to this value.
 .RE
 .RE
 .
-.\"------------------------------------------------------------------
+.\"==================================================================
 .
 .TP
 .CBI ".CPTN " \[lB]args\[rB]
@@ -728,7 +720,7 @@ Vertical alignment of the table caption.
 .RE
 .RE
 .
-.\"------------------------------------------------------------------
+.\"==================================================================
 .
 .TP
 .CBI ".TR " \[lB]args\[rB]
@@ -745,14 +737,16 @@ Begin a new table row.
 The height of the row.
 .
 If a cell in the row is higher than\~\c
-.CI n
-this value is ignored; otherwise the row height is stretched to\~\c
 .CI n\c
-\&.
+.RI , ""
+this value is ignored;
+otherwise the row height is stretched to\~\c
+.CI n\c
+.RI . ""
 .RE
 .RE
 .
-.\"------------------------------------------------------------------
+.\"==================================================================
 .
 .TP
 .CBI ".TD " "\[lB]args \[lB]cell contents\[rB]\[rB]"
@@ -831,7 +825,7 @@ is
 This looks like
 .
 .PP
-.ft C
+.ft CR
 .if t \{\
 .  ne 7v
 .\}
@@ -877,7 +871,7 @@ is
 which looks like
 .
 .PP
-.ft C
+.ft CR
 .RS
 .nf
 .nh
@@ -889,12 +883,12 @@ which looks like
 .hy
 .fi
 .RE
-.ft C
+.ft CR
 .
 .RE
 .RE
 .
-.\"------------------------------------------------------------------
+.\"==================================================================
 .
 .TP
 .CB ".ETB \[lB]hold\[rB]"
@@ -920,8 +914,8 @@ Otherwise, if the table is higher than the remaining space on the page,
 it is printed at the top of the next page.
 .
 .IP \[bu] 3
-If none of the two above constraints hold, the table is printed immediately
-at the place of its definition.
+If neither of the two above constraints hold, the table is printed
+immediately at the place of its definition.
 .RE
 .
 .IP
@@ -941,13 +935,14 @@ This argument is ignored for inner (nested) tables.
 .RE
 .RE
 .
-.\"------------------------------------------------------------------
+.\"==================================================================
 .
 .TP
 .CBI ".t*free " \[lB]n\[rB]
 Free the next held table or
-.CI n\c
-\~held tables.
+.CI n\~\c
+.RI held ""
+tables.
 .
 Call this utility macro to print tables which are held by using the
 .CR \[oq]hold\[cq]
@@ -956,9 +951,9 @@ argument of the
 macro.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Arguments common to \f[CB].TBL\f[], \f[CB].TR\f[], \f[CB].TD\f[], and \f[CB].TH\f[]"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The arguments described in this section can be specified with the
 .CR .TBL
@@ -1022,9 +1017,9 @@ The font style for the table.
 One of
 .CR R\c
 ,
-.CR I\c
-,
 .CR B\c
+,
+.CR I\c
 , or
 .CR BI
 for roman,
@@ -1054,9 +1049,11 @@ The font style in use right before the table (string
 .XAA "fsz=\[aq]" "d1 \[lB]d2\[rB]" \[aq]
 A decimal or fractional factor
 .CI d1\c
-, by which the point size for the table is changed, and
+.RI , ""
+by which the point size for the table is changed, and
 .CI d2\c
-, by which the vertical line spacing is changed.
+.RI , ""
+by which the vertical line spacing is changed.
 .
 If
 .CI d2
@@ -1158,9 +1155,9 @@ argument above.
 .XDEFS vl=s t*vl
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH HDTBL CUSTOMIZATION
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .PP
 Before creating the first table, you should configure default values
@@ -1182,7 +1179,7 @@ The following example sets up defaults suitable for typical papers:
 The file
 .B examples/common.roff
 provides another example setup
-in the ``minimal Page setup'' section.
+in the \[lq]minimal Page setup\[rq] section.
 .
 .
 .PP
@@ -1219,7 +1216,7 @@ and for missing
 macros (table not closed).
 .
 You can append this macro
-to the ``end'' macro of your document's main macro package.
+to the \[lq]end\[rq] macro of your document's main macro package.
 .
 For example:
 .
@@ -1240,34 +1237,59 @@ If you use the
 macro package.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH BUGS AND SUGGESTIONS
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 Please send your commments to the
-.MT groff@gnu.org
+.MT groff@\:gnu.org
 groff mailing list
 .ME
 or directly to the author.
 .
 .
-.\" --------------------------------------------------------------------
-.SH COPYING
-.\" --------------------------------------------------------------------
-.co
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH AUTHORS
-.\" --------------------------------------------------------------------
-.au
+.\" ====================================================================
+The
+.B hdtbl
+macro package was written by
+.MT Joachim.Walsdorff@\:urz.uni\-heidelberg.de
+Joachim Walsdorff
+.ME .
+.
+.
+.\" ====================================================================
+.SH SEE ALSO
+.\" ====================================================================
+.TP
+.BR groff (1)
+provides an overview of GNU
+.I roff
+and details how to invoke
+.I groff
+at the command line.
+.TP
+.BR groff (7)
+summarizes the
+.I roff
+language and GNU extensions to it.
+.TP
+.BR tbl (1)
+describes the traditional
+.I roff
+preprocessor for tables.
 .
 .
-.\" EOF
+.\" Restore compatibility mode (for, e.g., Solaris 10/11).
+.cp \n[groff_hdtbl_C]
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .\" Emacs settings
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .\" Local Variables:
 .\" mode: nroff
 .\" End:
+.\" vim: filetype=groff:
similarity index 86%
rename from contrib/hdtbl/hdmisc.tmac
rename to contrib/hdtbl/hdmisc.tmac-u
index d0c57e0..33111eb 100644 (file)
@@ -1,11 +1,10 @@
-.\"    -*-     mode: nroff     -*-
 .ig
 
 hdmisc.tmac
 
 This file is part of groff, the GNU roff type-setting system.
 
-Copyright (C) 2005-201 Free Software Foundation, Inc.
+Copyright (C) 2005-2018 Free Software Foundation, Inc.
 written by Joachim Walsdorff <Joachim.Walsdorff@urz.uni-heidelberg.de>.
 
 groff is free software; you can redistribute it and/or modify it under
@@ -19,7 +18,7 @@ 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 <http://www.gnu.org/licenses/>.
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 ..
 .
@@ -46,28 +45,28 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .\"                                    <val> must not contain spaces.
 .\"                    <key>='<val>'   Assign <val> to string <key>.
 .\"                                    <val> can contain spaces.
-.\"                    <key>=          Assign `=' to string <key>.
-.\"                    <key>           Assign `key' to string <key>.
+.\"                    <key>=          Assign '=' to string <key>.
+.\"                    <key>           Assign 'key' to string <key>.
 .\"
-.\"            After return, the string `args' contains the remaining
+.\"            After return, the string 'args' contains the remaining
 .\"            arguments.
 .\"
-.\"            Example: With the definition of string `foo' as
+.\"            Example: With the definition of string 'foo' as
 .\"
 .\"                    .ds foo aaa=xxx bbb ccc='yyy zzz' ddd= eee
 .\"
-.\"            a call to `getarg' with
+.\"            a call to 'getarg' with
 .\"
 .\"                    .getarg ccc \*[foo]
 .\"
-.\"            sets string `ccc' to value `yyy zzz'.  The string `args'
-.\"            now contains `aaa=xxx bbb ddd= eee'.  An additional call
+.\"            sets string 'ccc' to value 'yyy zzz'.  The string 'args'
+.\"            now contains 'aaa=xxx bbb ddd= eee'.  An additional call
 .\"            like
 .\"
 .\"                    .getarg ddd \*[args]
 .\"
-.\"            sets string `ddd' to value `=', and `args' contains
-.\"            `aaa=xxx bbb eee'.
+.\"            sets string 'ddd' to value '=', and 'args' contains
+.\"            'aaa=xxx bbb eee'.
 .de t*getarg
 .  ds \\$1
 .  ds args
@@ -99,7 +98,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .        ds \\*[$1] \\*[$1]\"                  return key as string
 .      el \{\
 .        ie "\?\\*[**]\?"\?\\*[$1]=\?" \
-.          ds \\*[$1] =\"                      return `='
+.          ds \\*[$1] =\"                      return '='
 .        el \{\
 .          substring ** (\\n[*] + 1) -1
 .          ds * \\*[**]\"
@@ -146,9 +145,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .\"    Utility macro:  .index <string1> <string2>
 .\"
 .\"            Check whether <string2> is a substring of <string1> and
-.\"            return its position in number register `t*index', starting
+.\"            return its position in number register 't*index', starting
 .\"            with 1.  If not found, return 0.  If <string2> is empty,
-.\"            set `t*index' to -999.
+.\"            set 't*index' to -999.
 .de t*index
 .  if "\\$2"" \{\
 .    nr t*index -999
@@ -219,7 +218,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .\"    **                      P1 is nestable                          **
 .\"    ******************************************************************
 .de t*P1
-.  \" `while' command is about five times faster than recursion!
+.  \" 'while' command is about five times faster than recursion!
 .  while \\n[.$] \{\
 .    nop \\$1
 .    shift
@@ -231,7 +230,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .\"    **      Hilfsmakro zum Einstellen von Schriftgroesse und        **
 .\"    **      Zeilenabstand, bezogen auf Anfangswerte \n[t*s]         **
 .\"    **      und \n[t*v] sowie fuer Hyphenation:                     **
-.\"    **              .pv s v hy# hart;  macht .br                    **
+.\"    **              .t*pv s v hy# hart;  macht .br                  **
 .\"    **      Bei 4. Argument setzen der Register s und v und hy.     **
 .\"    **      Fuer angefangene Zeile die vorgefundenen Einstellungen  **
 .\"    **                                                              **
@@ -312,14 +311,23 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .
 .  if !"\\*[t*kept]"" \{\
 .    tm1 "hdtbl: Not all tables have been printed.
-.    tm1 "       Add `.bp' at the end of your document.
+.    tm1 "       Add '.bp' at the end of your document.
 .  \}
 .  if !"\\*[t*held]"" \{\
 .    tm1 "hdtbl: There are held tables which haven't been printed.
-.    tm1 "       Add `.t*free' at the end of your document.
+.    tm1 "       Add '.t*free' at the end of your document.
 .  \}
 .  if \\n[t*#] \
-.    tm hdtbl: Missing `.ETB' macro; last .TBL in \\*[t*FN] at line \\*[t*LN].
+.    tm hdtbl: Missing '.ETB' macro; last .TBL in \\*[t*FN] at line \\*[t*LN].
 ..
 .
-.\" EOF
+.
+.\" ====================================================================
+.\" Editor settings
+.\" ====================================================================
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" fill-column: 72
+.\" End:
+.\" vim: set filetype=groff textwidth=72:
diff --git a/contrib/hdtbl/hdtbl.am b/contrib/hdtbl/hdtbl.am
new file mode 100644 (file)
index 0000000..3537aa6
--- /dev/null
@@ -0,0 +1,153 @@
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
+#      Written by Werner Lemberg (wl@gnu.org)
+#      Automake migration by Bertrand Garrigues
+#
+#
+# This file is part of groff.
+#
+# groff 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.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+
+hdtbl_srcdir = $(top_srcdir)/contrib/hdtbl
+hdtbl_builddir = $(top_builddir)/contrib/hdtbl
+
+man7_MANS += contrib/hdtbl/groff_hdtbl.7
+
+# Groff command used to generate .ps files
+HDTBL_TFLAG = -M$(hdtbl_srcdir) -M$(hdtbl_builddir)
+HDTBL_PFLAG=-t -p -e -U
+HDTBLGROFF = \
+  GROFF_COMMAND_PREFIX= \
+  GROFF_BIN_PATH="$(GROFF_BIN_PATH)" \
+  $(GROFFBIN) $(FFLAG) $(TFLAG) $(HDTBL_TFLAG) $(HDTBL_PFLAG)
+
+# Files installed in $(tmacdir).
+# These files are generated with 'strip.sed' from their unstripped source file
+# equivalent (e.g. hdtbl.tmac is generated from hdtbl.tmac-u)
+HDTBLSTRIPFILES = \
+  contrib/hdtbl/hdtbl.tmac \
+  contrib/hdtbl/hdmisc.tmac
+hdtbltmacdir = $(tmacdir)
+hdtbltmac_DATA = $(HDTBLSTRIPFILES)
+
+# Files installed in $(exampledir)/hdtbl.  HDTBLEXAMPLEFILES are
+# located in the source tree, while HDTBLPROCESSEDEXAMPLEFILES are
+# generated in the build tree.
+
+# These files are handled by the '.in.roff' rule.
+HDTBLGENFILES = \
+  contrib/hdtbl/examples/fonts_n.roff \
+  contrib/hdtbl/examples/fonts_x.roff
+EXTRA_DIST += \
+  contrib/hdtbl/examples/fonts_n.in \
+  contrib/hdtbl/examples/fonts_x.in \
+  contrib/hdtbl/examples/test-hdtbl.sh.in
+
+HDTBLEXAMPLEFILES = \
+  contrib/hdtbl/examples/common.roff \
+  contrib/hdtbl/examples/chess_board.roff \
+  contrib/hdtbl/examples/color_boxes.roff \
+  contrib/hdtbl/examples/color_nested_tables.roff \
+  contrib/hdtbl/examples/color_table_cells.roff \
+  contrib/hdtbl/examples/color_transitions.roff \
+  contrib/hdtbl/examples/col_rowspan_colors.roff \
+  contrib/hdtbl/examples/mixed_pickles.roff \
+  contrib/hdtbl/examples/rainbow.roff \
+  contrib/hdtbl/examples/short_reference.roff
+
+HDTBLPROCESSEDEXAMPLEFILES = \
+  contrib/hdtbl/examples/chess_board.ps \
+  contrib/hdtbl/examples/color_boxes.ps \
+  contrib/hdtbl/examples/color_nested_tables.ps \
+  contrib/hdtbl/examples/color_table_cells.ps \
+  contrib/hdtbl/examples/color_transitions.ps \
+  contrib/hdtbl/examples/col_rowspan_colors.ps \
+  contrib/hdtbl/examples/fonts_n.ps \
+  contrib/hdtbl/examples/fonts_x.ps \
+  contrib/hdtbl/examples/mixed_pickles.ps \
+  contrib/hdtbl/examples/rainbow.ps \
+  contrib/hdtbl/examples/short_reference.ps
+
+hdtblexampledir = $(exampledir)/hdtbl
+
+if BUILD_EXAMPLES
+dist_hdtblexample_DATA = $(HDTBLEXAMPLEFILES)
+nodist_hdtblexample_DATA = \
+  $(HDTBLGENFILES) \
+  $(HDTBLPROCESSEDEXAMPLEFILES) \
+  gnu.eps
+else
+EXTRA_DIST += $(HDTBLEXAMPLEFILES) 
+endif
+$(hdtblexample_DATA): $(HDTBLSTRIPFILES)
+
+MOSTLYCLEANFILES += $(HDTBLGENFILES) $(HDTBLPROCESSEDEXAMPLEFILES) \
+  $(HDTBLSTRIPFILES)
+
+EXTRA_DIST += \
+  contrib/hdtbl/ChangeLog \
+  contrib/hdtbl/TODO \
+  contrib/hdtbl/groff_hdtbl.7.man \
+  contrib/hdtbl/hdtbl.tmac-u \
+  contrib/hdtbl/hdmisc.tmac-u
+
+if BUILD_EXAMPLES
+hdtbl_TESTS = contrib/hdtbl/examples/test-hdtbl.sh
+TESTS += $(hdtbl_TESTS)
+contrib/hdtbl/examples/test-hdtbl.sh: $(top_builddir)/config.status \
+       $(HDTBLPROCESSEDEXAMPLEFILES) $(top_srcdir)/contrib/hdtbl/examples/test-hdtbl.sh.in
+       sed -e "s|[@]abs_top_builddir[@]|$(abs_top_builddir)|g" \
+           -e "s|[@]GHOSTSCRIPT[@]|$(GHOSTSCRIPT)|g" \
+               $(top_srcdir)/contrib/hdtbl/examples/test-hdtbl.sh.in > $@
+       chmod +x $@
+MOSTLYCLEANFILES += $(hdtbl_TESTS)
+endif
+
+# Rule to generate ps and roff files
+SUFFIXES += .roff .in .ps
+
+.roff.ps:
+       $(GROFF_V)$(MKDIR_P) `dirname $@` \
+       && $(HDTBLGROFF) -Tps \
+            -dfontpath=$(top_srcdir)/font \
+            -dsopath=$(hdtbl_srcdir)/ \
+            -mhdtbl $< >$@
+.in.roff:
+       $(AM_V_GEN)$(MKDIR_P) `dirname $@` \
+       && sed -e "s|[@]fontdir[@]|$(fontdir)|" \
+              -e "s|[@]EGREP[@]|$(EGREP)|" $< >$@
+
+
+$(HDTBLPROCESSEDEXAMPLEFILES): gnu.eps groff troff pic tbl \
+  contrib/hdtbl/examples/common.roff
+
+$(HDTBLSTRIPFILES): $(top_srcdir)/tmac/strip.sed
+       @$(MKDIR_P) `dirname $@`
+       sed -f $(top_srcdir)/tmac/strip.sed $(hdtbl_srcdir)/`basename $@`-u > $@;
+
+uninstall_groffdirs: uninstall-hdtbl-hook
+uninstall-hdtbl-hook:
+       if test -d $(DESTDIR)$(hdtblexampledir); then \
+         rmdir $(DESTDIR)$(hdtblexampledir); \
+       fi
+
+
+########################################################################
+# Editor settings
+########################################################################
+#
+# Local Variables:
+# mode: makefile-automake
+# fill-column: 72
+# End:
+# vim: set filetype=automake textwidth=72:
similarity index 92%
rename from contrib/hdtbl/hdtbl.tmac
rename to contrib/hdtbl/hdtbl.tmac-u
index 069f9ce..c39f52a 100644 (file)
@@ -1,11 +1,10 @@
-.\"    -*- nroff -*-
 .ig
 
 hdtbl.tmac
 
 This file is part of groff, the GNU roff type-setting system.
 
-Copyright (C) 2005-201 Free Software Foundation, Inc.
+Copyright (C) 2005-2018 Free Software Foundation, Inc.
 written by Joachim Walsdorff <Joachim.Walsdorff@urz.uni-heidelberg.de>.
 
 groff is free software; you can redistribute it and/or modify it under
@@ -19,7 +18,7 @@ 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 <http://www.gnu.org/licenses/>.
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 ..
 .
@@ -66,7 +65,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .ds t*cptn "".sp .4" \
             ".t*pv 1.0 1.0" \
             ".ad l" \
-            "\m[\\*[t*fgc]]Table \\n+[t*cptn]:\0\c\k*"\"
+            "\m[\\*[t*fgc]]Table \\n+[t*cptn]:\0\k*\c"\"
 .
 .
 .\" %beginstrip%
@@ -112,17 +111,17 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .  nr t*# +1
 .
 .  \" Save current location for error checking at end
-.  ds t*FN \\[.F]
-.  ds t*LN \\[.c]
+.  ds t*FN \\[.F]\"
+.  ds t*LN \\[.c]\"
 .
-.  t*getarg cols \\$@\"        from here string `args' contains the rest of \\$@
+.  t*getarg cols \\$@\"        from here string 'args' contains the rest of \\$@
 .  ie "\\*[cols]"" \
 .    nr t*cols\\n[t*#] \\n[t*cols]
 .  el \{\
 .    ie \B\a\\*[cols]\a \
 .      nr t*cols\\n[t*#] \\*[cols]
 .    el \
-.      tm \\n[.F]:\\n[.c]: Invalid number of columns value `\\*[cols]'.
+.      tm \\n[.F]:\\n[.c]: Invalid number of columns value '\\*[cols]'.
 .  \}
 .
 .  t*getarg cpd \\*[args]                 \"   cell padding
@@ -132,7 +131,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .    ie \B\a\\*[cpd]\a \
 .      nr t*cpd\\n[t*#] \\*[cpd]
 .    el \
-.      tm \\n[.F]:\\n[.c]: Invalid cell padding value `\\*[cpd]'.
+.      tm \\n[.F]:\\n[.c]: Invalid cell padding value '\\*[cpd]'.
 .  \}
 .
 .  t*getarg csp \\*[args]                 \"   cell spacing
@@ -142,7 +141,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .    ie \B\a\\*[csp]\a \
 .      nr t*csp\\n[t*#] \\*[csp]
 .    el \
-.      tm \\n[.F]:\\n[.c]: Invalid cell spacing value `\\*[csp]'.
+.      tm \\n[.F]:\\n[.c]: Invalid cell spacing value '\\*[csp]'.
 .  \}
 .
 .  t*getarg border \\*[args]              \"   border thickness
@@ -155,7 +154,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .      ie \B\a\\*[border]\a \
 .        nr t*b\\n[t*#] \\*[border]
 .      el \
-.        tm \\n[.F]:\\n[.c]: Invalid border thickness value `\\*[border]'.
+.        tm \\n[.F]:\\n[.c]: Invalid border thickness value '\\*[border]'.
 .  \}\}
 .
 .  t*getarg bc \\*[args]                  \"   border color
@@ -167,7 +166,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .      ie "\\*[bc]"=" \
 .        ds t*bc\\n[t*#] =\"
 .      el \
-.        tm \\n[.F]:\\n[.c]: Invalid border color `\\*[bc]'.
+.        tm \\n[.F]:\\n[.c]: Invalid border color '\\*[bc]'.
 .  \}\}
 .  ie "\\*[bc]"=" \
 .    ds t*bc\\n[t*#]
@@ -194,7 +193,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
                             - ((2 * \\n[cscp\\n[t*#]]) \
                                 + (3 * \\n[b/2\\n[t*#]])))
 .    el \
-.      tm \\n[.F]:\\n[.c]: Invalid height value `\\*[height]'.
+.      tm \\n[.F]:\\n[.c]: Invalid height value '\\*[height]'.
 .  \}
 .
 .  t*cl \\*[width]                      \"     get cell widths and offsets
@@ -212,8 +211,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .      ie "\\*[tal]"r" \
 .        nr in\\n[t*#] (\\n[.l] - \\n[ll\\n[t*#]] + \\n[.i])
 .      el \{\
-.        tmc \\n[.F]:\\n[.c]: Invalid horizontal table alignment `\\*[tal]':
-.        tm1 " must be `l', `c' or `r'.
+.        tmc \\n[.F]:\\n[.c]: Invalid horizontal table alignment '\\*[tal]':
+.        tm1 " must be 'l', 'c' or 'r'.
 .  \}\}\}
 .
 .  nr t*r#\\n[t*#] 0                   \"      initialize row index
@@ -231,8 +230,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .
 .  if "\\$0"CPTN" \
 .    if \\n[t*r#\\n[t*#]] \{\
-.      tmc \\n[.F]:\\n[.c]: Invalid placement of `.CPTN';
-.      tm1 " must be called immediately after `.TBL'.
+.      tmc \\n[.F]:\\n[.c]: Invalid placement of '.CPTN';
+.      tm1 " must be called immediately after '.TBL'.
 .      return
 .    \}
 .
@@ -298,11 +297,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .    ie \B\a\\*[height]\a \
 .      nr t*height\\*[#t#r] \\*[height]
 .    el \
-.      tm \\n[.F]:\\n[.c]: Invalid table row height `\\*[height]'.
+.      tm \\n[.F]:\\n[.c]: Invalid table row height '\\*[height]'.
 .  \}
 .
-.  \"  If there is a TR with height `height', the total height of the table
-.  \"  is too high by 3/2 b, independent of the number of TR with `height'.
+.  \"  If there is a TR with height 'height', the total height of the table
+.  \"  is too high by 3/2 b, independent of the number of TR with 'height'.
 .  t*args \\*[#t#r] \\n[t*#]            \"     look for common arguments
 .
 .  t*P1 \\*[args]
@@ -352,7 +351,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .      nr *rsp*\\*[*#trc*] (\\n[rowspan] - 1)
 .    \}
 .    el \
-.      tm \\n[.F]:\\n[.c]: Invalid value of `rowspan' keyword.
+.      tm \\n[.F]:\\n[.c]: Invalid value of 'rowspan' keyword.
 .  \}
 .
 .  t*getarg colspan \\*[args]
@@ -361,7 +360,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .    ie \B\a\\*[colspan]\a \
 .      nr colspan (\\*[colspan] >? 1)
 .    el \
-.      tm \\n[.F]:\\n[.c]: Invalid value of `colspan' keyword.
+.      tm \\n[.F]:\\n[.c]: Invalid value of 'colspan' keyword.
 .  \}
 .
 .  t*args \\*[#trc] \\*[#t#r]           \"  look for common arguments
@@ -383,7 +382,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .  nr *c \\n[c#\\*[#t#r]]
 .
 .  if (\\n[colspan] - 1) \{\
-.    nr vline\\*[*#trc*] 0-1           \"      set `no vl' flag
+.    nr vline\\*[*#trc*] 0-1           \"      set 'no vl' flag
 .
 .    while (\\n+[*] <= \\n[colspan]) \{\
 .      nr *c +1
@@ -504,7 +503,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .de t*free
 .  if "\\$0"CPTN" \
 .    if \\n[t*r#\\n[t*#]] \{\
-.      tmc \\n[.F]:\\n[.c]: Invalid placement of `.t*free' within a table;
+.      tmc \\n[.F]:\\n[.c]: Invalid placement of '.t*free' within a table;
 .      tm1 " it must be called outside of any table.
 .      return
 .    \}
@@ -544,7 +543,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .\"            Nested tables are processed from inside to outside.
 .
 .de t*divs
-.  ll (\\n[t*l]u + 1c)                 \"      avoid warning `can't break line'
+.  ll (\\n[t*l]u + 1c)                 \"      avoid warning 'can't break line'
 .  nf
 .
 .  nr b/2 \\n[b/2\\n[t*#]]             \"      some abbreviations
@@ -584,7 +583,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .      \" and position of lower horizontal line
 .      if \\n[*rsp*\\*[#trc]] \{\
 .        nr * \\n[#r] 1
-.        nr rspan\\*[#trc] 0-1         \"      set `no hl' flag
+.        nr rspan\\*[#trc] 0-1         \"      set 'no hl' flag
 .        nr corr (\\n[dn\\*[#trc]] - \\n[dntr\\n[t*#]*\\n[#r]])
 .
 .        \" clear row span flags in following rows and update row height
@@ -624,9 +623,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .      \" double and single lines have the same thickness;
 .      \" the double lines' distance is the line thickness.
 .      \"
-.      \" `border=x': horizontal/vertical lines x/2 thick, minimum .1n
-.      \" `border=0': no border; horizontal/vertical lines .1n thick
-.      \" `border=': neither border nor horizontal/vertical lines
+.      \" 'border=x': horizontal/vertical lines x/2 thick, minimum .1n
+.      \" 'border=0': no border; horizontal/vertical lines .1n thick
+.      \" 'border=': neither border nor horizontal/vertical lines
 .
 .      nr *t (.1n >? \\n[b/2])         \"      thickness of hl/vl; min. .1n
 .      in +\\n[cscp]u
@@ -741,7 +740,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .  while (\\n[t*cols\\n[t*#]] >= \\n+[*]) \{\
 .    nr $\\n[*] \\n[**]
 .    if !"\\$[\\n[*]]"" \{\
-.      \" check for `%' pseudo scaling indicator
+.      \" check for '%' pseudo scaling indicator
 .      ds * \\$\\n[*]\"
 .      substring * -1 -1
 .      ie "\\*[*]"%" \{\
@@ -750,13 +749,13 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .        ie \B\a\\*[**]\a \
 .          nr $\\n[*] (\\*[**] * \\n[.l] / 100)
 .        el \
-.          tm \\n[.F]:\\n[.c]: Invalid relative cell width `\\*[**]%'.
+.          tm \\n[.F]:\\n[.c]: Invalid relative cell width '\\*[**]%'.
 .      \}
 .      el \{\
 .        ie \B\a\\$[\\n[*]]\a \
 .          nr $\\n[*] \\$[\\n[*]]
 .        el \
-.          tm \\n[.F]:\\n[.c]: Invalid cell width `\\$[\\n[*]]'.
+.          tm \\n[.F]:\\n[.c]: Invalid cell width '\\$[\\n[*]]'.
 .    \}\}
 .
 .    nr ll\\n[t*#] +\\n[$\\n[*]]
@@ -902,7 +901,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .      ie "\\*[bgc]"=" \
 .        ds t*bgc\\$1 =\"
 .      el \
-.        tm \\n[.F]:\\n[.c]: Invalid background color `\\*[bgc]'.
+.        tm \\n[.F]:\\n[.c]: Invalid background color '\\*[bgc]'.
 .  \}\}
 .  if "\\*[args]"" \
 .    return
@@ -915,7 +914,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .      ie "\\*[fgc]"=" \
 .        ds t*fgc\\$1 =\"
 .      el \
-.        tm \\n[.F]:\\n[.c]: Invalid foreground color `\\*[fgc]'.
+.        tm \\n[.F]:\\n[.c]: Invalid foreground color '\\*[fgc]'.
 .  \}\}
 .  if "\\*[args]"" \
 .    return
@@ -938,8 +937,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .    ie \\n[t*index] \
 .      ds t*hal\\$1 \\*[hal]\"
 .    el \{\
-.      tmc \\n[.F]:\\n[.c]: Invalid horizontal alignment `\\*[hal]':
-.      tm1 " must be `b', `c', `l' or `r'.
+.      tmc \\n[.F]:\\n[.c]: Invalid horizontal alignment '\\*[hal]':
+.      tm1 " must be 'b', 'c', 'l' or 'r'.
 .  \}\}
 .  if "\\*[args]"" \
 .    return
@@ -950,8 +949,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .    ie \\n[t*index] \
 .      ds t*val\\$1 \\*[val]\"
 .    el \{\
-.      tmc \\n[.F]:\\n[.c]: Invalid vertical alignment `\\*[val]':
-.      tm1 " must be `t', `m' or `b'.
+.      tmc \\n[.F]:\\n[.c]: Invalid vertical alignment '\\*[val]':
+.      tm1 " must be 't', 'm' or 'b'.
 .  \}\}
 .  if "\\*[args]"" \
 .    return
@@ -1000,4 +999,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .  ev
 ..
 .
-.\" EOF
+.\" Local Variables:
+.\" mode: nroff
+.\" End:
+.\" vim: filetype=groff:
index 7deef78..6b0f41f 100644 (file)
@@ -1,3 +1,49 @@
+2018-03-01  Werner LEMBERG  <wl@gnu.org>
+
+       * m.tmac: Fix `.hy' value.
+
+       * groff_mm.7.man: Updated.
+
+2018-02-28  Werner LEMBERG  <wl@gnu.org>
+
+       * mm.am (mmroff): Use $(AM_V_GEN) to silence file generation.
+
+2017-11-02  G. Branden Robinson <g.branden.robinson@gmail.com>
+
+       examples/letter.mm: New; simple example of mm usage.
+       mm.am: Ship the file.
+
+2015-08-22  Bernd Warken  <groff-bernd.warken-72@web.de>
+
+       * mmroff.1.man: Rename `mmroff.man'.
+
+       * groff_mm.7.man: Rename `groff_mm.man'.
+
+       * groff_mmse.7.man: Rename `groff_mmse.man'.
+
+       * mm.am: Include renamings.
+
+2015-08-05  Bernd Warken  <groff-bernd.warken-72@web.de>
+
+       * mm.am, Makefile.sim: Add `Last update'.  Setup Emacs mode.
+
+Thu Jul 16 11:52:03 2015  Carsten Kunze  <carsten.kunze@arcor.de>
+
+       Fix line length of `.DS' with indentation (#45452).
+
+       If `.DS' with first argument `1' or `I' is used the output should
+       use an indentation of `\n[Si]n'.  To make this work, the line length
+       within the `.DS' diversion must be set to zero, otherwise the
+       effective line length is too large.
+
+       * m.tmac (DS): Call `ds@set-new-ev' with correct indentation value.
+
+Fri Apr  3 16:33:22 2015  Werner LEMBERG  <wl@gnu.org>
+
+       Make man pages work in compatibility mode.
+
+       * groff_mm.man, groff_mmse.man, mmroff.man: Do it.
+
 Wed Sep  3 21:29:00 2014  Bernd Warken  <groff-bernd.warken-72@web.de>
 
        * all files in contrib/mm: Copying and Emacs setting.
@@ -949,8 +995,9 @@ Sun Jan 1 00:00:00 1991 Joergen Haegg (jh at efd.lth.se)
        * TP&PX supported
        * warnings for unimplemented macros
 
-Copyright 1991-2007, 2009-2014
-  Free Software Foundation, Inc.
+________________________________________________________________________
+
+Copyright 1991-2018 Free Software Foundation, Inc.
 
 Copying and distribution of this file, with or without modification,
 are permitted in any medium without royalty provided the copyright
@@ -958,5 +1005,5 @@ notice and this notice are preserved.
 
 Local Variables:
 version-control: never
-coding: latin-1
+mode: change-log
 End:
index 5f4048a..518401c 100644 (file)
@@ -1,4 +1,6 @@
-# Copyright 1991-2014  Free S0ftware Foundation, Inc.
+# Copyright 1991-2018 Free Software Foundation, Inc.
+#
+# Last update: 5 Aug 2015
 #
 # This file is part of groff.
 #
@@ -13,7 +15,7 @@
 # for more details.
 #
 # You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #
 # Makefile.sim
 #
@@ -79,9 +81,11 @@ uninstall: groff_mm.n groff_mmse.n
         $< >$@
 
 ########################################################################
-# Emacs settings
+# Editor settings
 ########################################################################
 #
 # Local Variables:
 # mode: makefile
+# fill-column: 72
 # End:
+# vim: set filetype=make textwidth=72:
diff --git a/contrib/mm/Makefile.sub b/contrib/mm/Makefile.sub
deleted file mode 100644 (file)
index d40eafd..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-# Copyright 1991-2014  Free Software Foundation, Inc.
-#
-# This file is part of groff.
-#
-# groff 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.
-#
-# groff 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 <http://www.gnu.org/licenses/>.
-#
-# Makefile.sub
-#
-#
-PROG=mmroff
-MAN1=\
-  mmroff.n
-MAN7=\
-  groff_mm.n \
-  groff_mmse.n
-FILES=0.MT 5.MT 4.MT ms.cov se_ms.cov
-# Local configuration files with default values.
-LOCALE=locale se_locale
-MOSTLYCLEANADD=temp
-RM=rm -f
-
-all: mmroff
-
-install_bin: install_mmroff
-
-install_data: install_m
-       -test -d $(DESTDIR)$(tmacdir)/mm \
-         || $(mkinstalldirs) $(DESTDIR)$(tmacdir)/mm
-       for f in $(FILES); do \
-         $(RM) $(DESTDIR)$(tmacdir)/mm/$$f; \
-         $(INSTALL_DATA) $(srcdir)/mm/$$f $(DESTDIR)$(tmacdir)/mm/$$f; \
-       done
-       for f in $(LOCALE); do \
-         test -f $(DESTDIR)$(tmacdir)/mm/$$f \
-           || touch $(DESTDIR)$(tmacdir)/mm/$$f; \
-       done
-       $(INSTALL_DATA) $(srcdir)/refer-mm.tmac \
-         $(DESTDIR)$(tmacdir)/refer-mm.tmac
-
-install_m:
-       -test -d $(DESTDIR)$(tmacdir) || $(mkinstalldirs) $(DESTDIR)$(tmacdir)
-       $(RM) $(DESTDIR)$(tmacdir)/tmac.$(tmac_m_prefix)m
-       $(RM) $(DESTDIR)$(tmacdir)/$(tmac_m_prefix)m.tmac
-       $(INSTALL_DATA) $(srcdir)/m.tmac \
-         $(DESTDIR)$(tmacdir)/$(tmac_m_prefix)m.tmac
-       @sed -e "s;^.mso m.tmac;.mso $(tmac_m_prefix)m.tmac;g" \
-         $(srcdir)/mse.tmac > $(DESTDIR)$(tmacdir)/$(tmac_m_prefix)mse.tmac
-       @sed -e "s;^.mso mse.tmac;.mso $(tmac_m_prefix)mse.tmac;g" \
-         $(srcdir)/mmse.tmac > $(DESTDIR)$(tmacdir)/$(tmac_m_prefix)mmse.tmac
-       @sed -e "s;^.mso m.tmac;.mso $(tmac_m_prefix)m.tmac;g" \
-         $(srcdir)/mm.tmac > $(DESTDIR)$(tmacdir)/$(tmac_m_prefix)mm.tmac
-
-install_mmroff: mmroff
-       -test -d $(DESTDIR)$(bindir) || $(mkinstalldirs) $(DESTDIR)$(bindir)
-       $(RM) $(DESTDIR)$(bindir)/mmroff
-       $(INSTALL_SCRIPT) mmroff $(DESTDIR)$(bindir)/mmroff
-
-mmroff: mmroff.pl
-       sed -e 's;/usr/bin/perl;$(PERL);' $(srcdir)/mmroff.pl >$@
-       chmod +x $@
-
-uninstall_sub:
-       -for f in $(FILES); do $(RM) $(DESTDIR)$(tmacdir)/mm/$$f; done
-       -for f in $(LOCALE); do \
-         test -s $(DESTDIR)$(tmacdir)/mm/$$f \
-           || $(RM) $(DESTDIR)$(tmacdir)/mm/$$f; \
-       done
-       $(RM) $(DESTDIR)$(tmacdir)/tmac.$(tmac_m_prefix)m
-       $(RM) $(DESTDIR)$(tmacdir)/$(tmac_m_prefix)m.tmac
-       $(RM) $(DESTDIR)$(tmacdir)/$(tmac_m_prefix)mm.tmac
-       $(RM) $(DESTDIR)$(tmacdir)/$(tmac_m_prefix)mse.tmac
-       $(RM) $(DESTDIR)$(tmacdir)/$(tmac_m_prefix)mmse.tmac
-       $(RM) $(DESTDIR)$(tmacdir)/refer-mm.tmac
-       -test -d $(DESTDIR)$(tmacdir)/mm && \
-         rmdir $(DESTDIR)$(tmacdir)/mm
-       $(RM) $(DESTDIR)$(bindir)/mmroff
-
-########################################################################
-# Emacs settings
-########################################################################
-#
-# Local Variables:
-# mode: makefile
-# End:
index 7978871..c3cb3d1 100644 (file)
@@ -1,4 +1,4 @@
-    Copyright (C) 1989-201 Free Software Foundation, Inc.
+    Copyright (C) 1989-2018 Free Software Foundation, Inc.
 
     Copying and distribution of this file, with or without modification,
     are permitted in any medium without royalty provided the copyright
index 3a86d8e..bd79b18 100644 (file)
@@ -1,4 +1,4 @@
-    Copyright (C) 1989-201 Free Software Foundation, Inc.
+    Copyright (C) 1989-2018 Free Software Foundation, Inc.
 
     Copying and distribution of this file, with or without modification,
     are permitted in any medium without royalty provided the copyright
@@ -9,8 +9,9 @@ This is mgm, a macro package for groff.
 It is supposed to be compatible with the DWB mm macros,
 and has several extensions.
 
-Send bug reports to bug-groff@gnu.org with a description of the problem
-and a sample of text which reproduces the error.
+Submit bug reports at http://savannah.gnu.org/bugs/?group=groff with a
+description of the problem and a sample of text which reproduces the
+error.
 
 Don't forget to mention the version of mgm (look in the beginning
 of m.tmac) and the version of groff.
index cfa1c03..7c496b5 100644 (file)
@@ -1,5 +1,5 @@
     -*- text -*-
-    Copyright (C) 1989-201 Free Software Foundation, Inc.
+    Copyright (C) 1989-2018 Free Software Foundation, Inc.
 
     Copying and distribution of this file, with or without modification,
     are permitted in any medium without royalty provided the copyright
@@ -37,4 +37,4 @@ I've made sure that mgm is useful in several languages;
 all English output can be redefined.
 
 For Swedish localization, check the manual for groff_mse and the
-macro files `mse.tmac' and `sv.tmac'.
+macro files 'mse.tmac' and 'sv.tmac'.
diff --git a/contrib/mm/examples/letter.mm b/contrib/mm/examples/letter.mm
new file mode 100644 (file)
index 0000000..078546d
--- /dev/null
@@ -0,0 +1,33 @@
+.\" Set point size to 14.
+.S 14
+.\" Set paragraph type to "indented".
+.nr Pt 1
+                                                               1 November 2017
+.\" Set line spacing to double-spaced.
+.SP 2
+.\" Start display.
+.DS
+Mr. Ty Coon
+President of Vice, Intellectual Property and Licensing
+Very Big Corporation of America
+Silly Valley, CA 94043
+.\" End display.
+.DE
+Dear Mr. Coon,
+.\" Start new paragraph.
+.P
+I would like to request that your wholly-owned subsidiary, Yoyodyne, Inc.,
+disclaim all copyright interest in the program `Gnomovision' (which makes passes
+at compilers) written by Juliet Hacker prior to her employment with Yoyodyne.
+.P
+Our colleagues at the Software Freedom Conservancy have determined and informed
+us that Ms. Hacker's employment agreement is a contract of adhesion.
+.P
+Thank you for your prompt attention to this matter.
+.\" Set line spacing to single-spaced.
+.SP
+                                                               Sincerely yours,
+.\" Leave room for signature.
+.SP 2
+                                                               Tracy T. Jordan
+.\" vim: set noexpandtab textwidth=80:
similarity index 92%
rename from contrib/mm/groff_mm.man
rename to contrib/mm/groff_mm.7.man
index a58ce5d..a95790c 100644 (file)
@@ -1,51 +1,56 @@
 '\" t
-.TH GROFF_MM @MAN7EXT@ "@MDATE@" "Groff Version @VERSION@"
+.TH GROFF_MM @MAN7EXT@ "@MDATE@" "groff @VERSION@"
 .SH NAME
-groff_mm \- groff mm macros
-.
-.
-.de co
-Copyright \[co] 1989-2014 Free Software Foundation, Inc.
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the
-entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
-Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be included in
-translations approved by the Free Software Foundation instead of in
-the original English.
-..
-.
-.de au
-.MT jh@axis.se
-J\[:o]rgen H\[:a]gg, Lund, Sweden
-.ME .
-..
-.
-.\" --------------------------------------------------------------------
+groff_mm \- memorandum macros for GNU roff
+.
+.
+.\" Save and disable compatibility mode (for, e.g., Solaris 10/11).
+.do nr groff_mm_C \n[.C]
+.cp 0
+.
+.
+.\" ====================================================================
+.\" Legal Terms
+.\" ====================================================================
+.\"
+.\" Copyright (C) 1989-2018 Free Software Foundation, Inc.
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of
+.\" this manual under the conditions for verbatim copying, provided that
+.\" the entire resulting derived work is distributed under the terms of
+.\" a permission notice identical to this one.
+.\"
+.\" Permission is granted to copy and distribute translations of this
+.\" manual into another language, under the above conditions for
+.\" modified versions, except that this permission notice may be
+.\" included in translations approved by the Free Software Foundation
+.\" instead of in the original English.
+.
+.
+.\" ====================================================================
 .SH SYNOPSIS
-.\" --------------------------------------------------------------------
-.
-.B groff
-.B \-m@TMAC_M_PREFIX@m
-[
-.IR options .\|.\|.\&
-]
-[
-.IR files .\|.\|.\&
-]
-.
-.
-.\" --------------------------------------------------------------------
+.\" ====================================================================
+.
+.SY "groff \-m@TMAC_M_PREFIX@m"
+.RI [ option
+\&.\|.\|.\&]
+.RI [ file
+\&.\|.\|.\&]
+.SY "groff \-m m@TMAC_M_PREFIX@m"
+.RI [ option
+\&.\|.\|.\&]
+.RI [ file
+\&.\|.\|.\&]
+.YS
+.
+.
+.\" ====================================================================
 .SH DESCRIPTION
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The groff mm macros are intended to be compatible with the DWB mm macros
 with the following limitations:
@@ -72,7 +77,7 @@ Use
 as an example how to adapt the output format to a national standard.
 .
 Localized strings are collected in the file
-.RI \[oq]@MACRODIR@/ xx .tmac\[cq],
+.IR @MACRODIR@/ xx .tmac ,
 where
 .I xx
 denotes the two-letter code for the
@@ -88,9 +93,9 @@ is the ISO 3166 two-letter code for the
 .\"########################################################################
 .LP
 A file called
-.B locale
+.I locale
 or
-.IB country _locale
+.RI country _locale
 is read after the initialization of the global variables.
 .
 It is therefore possible to localize the macros with a different company
@@ -101,9 +106,9 @@ name and so on.
 In this manual, square brackets are used to show optional arguments.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Number registers and strings"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 Many macros can be controlled by number registers and strings.
 .
@@ -120,13 +125,13 @@ command:
 .LP
 .I XXX
 is the name of the register,
-.I n\c
-\~is the value to be assigned, and
-.I i\c
-\~is the increment value for auto-increment.
+.IR n \~is
+the value to be assigned, and
+.IR i \~is
+the increment value for auto-increment.
 .
-.I n\c
-\~can have a plus or minus sign as a prefix if an increment
+.IR n \~can
+have a plus or minus sign as a prefix if an increment
 or decrement of the current value is wanted.
 .
 (Auto-increment or auto-decrement occurs if the number register is
@@ -144,8 +149,8 @@ Strings are defined with
 .LP
 \fB\&.ds\fP \fIYYY string\fP
 .RE
-..
-
+.
+.
 .LP
 The string is assigned everything to the end of the line,
 even blanks.
@@ -158,9 +163,9 @@ should be prefixed with a double-quote.
 .BI \[rs]*[ YYY ]\fR.)\fP
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Special formatting of number registers"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 A number register is printed with normal digits if no format has been
 given.
@@ -175,10 +180,10 @@ Set the format with
 .
 .
 .LP
-.I R\c
-\~is the name of the register,
-.I c\c
-\~is the format.
+.IR R \~is
+the name of the register,
+.IR c \~is
+the format.
 .
 .RS
 .LP
@@ -197,19 +202,18 @@ A@0, A, B, C, .\|.\|., Z, AA, AB, .\|.\|.
 .RE
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS Fonts
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 In
 .BR m@TMAC_M_PREFIX@m ,
 the fonts (or rather, font styles)
-.B R\c
-\~(normal),
-.B I\c
-\~(italic), and
-.B B\c
-\~(bold) are hardwired to font positions
+.BR R \~(normal),
+.BR I \~(italic),
+and
+.BR B \~(bold)
+are hardwired to font positions
 .BR 1 ,
 .BR 2 ,
 and\~\c
@@ -218,13 +222,13 @@ respectively.
 .
 Internally, font positions are used for backwards compatibility.
 .
-From a practical point of view it doesn\[aq]t make a big difference
+From a practical point of view it doesn't make a big difference
 \[en] a different font family can still be selected with a call to the
 .B .fam
 request or using
-.BR groff \[aq]s
+.BR groff 's
 .B \-f
-command line option.
+command-line option.
 .
 On the other hand, if you want to replace just, say, font
 .BR B ,
@@ -232,9 +236,9 @@ you have to replace the font at position\~2 (with a call to
 \[oq].fp\~2\~.\|.\|.\[cq]).
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS Macros
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .TP
 .BI )E\  "level text"
@@ -277,7 +281,7 @@ Abstract end, see
 .
 .TP
 .BI AF\ \fR[\fP name-of-firm \fR]\fP
-Author\[aq]s firm, should be called before
+Author's firm, should be called before
 .BR AU ,
 see also
 .BR COVER .
@@ -402,7 +406,7 @@ Sets the text above the abstract text.
 .
 .TP
 .BI AT\  "title1 \fR[\fPtitle2 \fR[.\|.\|.]]\fP"
-Author\[aq]s title.
+Author's title.
 .
 .B AT
 must appear just after each
@@ -539,11 +543,12 @@ appears before any normal text.
 This macro uses
 .I arg
 to build the filename
-\[oq]@TMAC_MDIR@/\fIarg\fP.cov\[cq].
+.IR @TMAC_MDIR@/ arg .cov .
 .
 Therefore it is possible to create unlimited types of cover sheets.
 .
-\[oq]ms.cov\[cq] is supposed to look like the ms cover sheet.
+.I ms.cov
+is supposed to look like the ms cover sheet.
 .
 .B .COVER
 requires a
@@ -1202,11 +1207,11 @@ is added to the header in the text but not in the table of contents.
 .
 This is normally used for footnote marks and similar things.
 .
-Don\[aq]t use
+Don't use
 .B \[rs]*F
 in
 .IR heading-suffix ,
-it doesn\[aq]t work.
+it doesn't work.
 .
 A manual label must be used, see
 .BR FS .
@@ -1217,8 +1222,8 @@ directly after\~\c
 .B H
 is ignored.
 .
-.B H\c
-\~takes care of spacing and indentation.
+.BR H \~takes
+care of spacing and indentation.
 .
 .IP
 .B Page ejection before heading
@@ -1619,7 +1624,7 @@ all are concatenated.
 .
 .TP
 .BI IA\  "\fR[\fPaddressee-name \fR[\fPtitle\fR]]\fP"
-Begin specification of the addressee and addressee\[aq]s address in
+Begin specification of the addressee and addressee's address in
 letter style.
 .
 Several names can be specified with empty
@@ -1682,7 +1687,8 @@ T}
 Initialize the cross reference macros.
 .
 Cross references are written to stderr and are supposed to be
-redirected into file \[oq]\fIfilename\fR.qrf\[cq].
+redirected into file
+.RI filename .qrf .
 .
 Requires two passes with groff;
 this is handled by a separate program called
@@ -1991,8 +1997,7 @@ See also
 Format a letter in one of four different styles depending
 on the argument.
 .
-See also section
-.BR INTERNALS .
+Also see section \[lq]Internals\[rq] below.
 .
 .RS
 .IP
@@ -2003,7 +2008,7 @@ l lx.
 Arg@Style
 BL@T{
 Blocked.
-Date line, return address, writer\[aq]s address and closing
+Date line, return address, writer's address and closing
 begins at the center of the line.
 .
 All other lines begin at the left margin.
@@ -2020,7 +2025,7 @@ T}
 SP@T{
 Simplified.
 Almost the same as the full-blocked style.
-Subject and the writer\[aq]s identification are printed in all-capital.
+Subject and the writer's identification are printed in all-capital.
 T}
 .TE
 .RE
@@ -2119,7 +2124,8 @@ Memorandum type.
 .
 The argument
 .I arg
-is part of a filename in \[oq]@TMAC_MDIR@/*.MT\[cq].
+is part of a filename in
+.IR @TMAC_MDIR@/ * .MT .
 .
 Memorandum types 0 to\~5 are supported, including type
 \[oq]string\[cq] (which gets internally mapped to type\~6).
@@ -2137,8 +2143,8 @@ tab(@);
 l l.
 0@Normal memorandum, no type printed.
 1@Memorandum with \[oq]MEMORANDUM FOR FILE\[cq] printed.
-2@Memorandum with \[oq]PROGRAMMER\[aq]S NOTES\[cq] printed.
-3@Memorandum with \[oq]ENGINEER\[aq]S NOTES\[cq] printed.
+2@Memorandum with \[oq]PROGRAMMER'S NOTES\[cq] printed.
+3@Memorandum with \[oq]ENGINEER'S NOTES\[cq] printed.
 4@Released paper style.
 5@External letter style.
 .TE
@@ -2206,7 +2212,7 @@ See
 .B NCOL
 Force printing to the next column.
 .
-Don\[aq]t use this together with the
+Don't use this together with the
 .B MUL*
 macros, see
 .BR 2C .
@@ -2220,7 +2226,7 @@ The argument selects between the predefined type of notations.
 If the second argument is available,
 then the argument becomes the entire notation.
 .
-If the argument doesn\[aq]t select a predefined type,
+If the argument doesn't select a predefined type,
 it is printed as \[oq]Copy (\fIarg\/\fP) to\[cq].
 .
 It is possible to add more standard notations,
@@ -2301,8 +2307,8 @@ Does not output an empty page if currently at the top of an odd page.
 .BI P\  \fR[\fPtype\fR]\fP
 Begin new paragraph.
 .
-.B P\c
-\~without argument produces left\-justified text,
+.BR P \~without
+argument produces left\-justified text,
 even the first line of the paragraph.
 .
 This is the same as setting
@@ -2326,7 +2332,7 @@ Using 0 and\~1 is the same as adding that value to
 .BR P .
 .
 A value of\~2 indents all paragraphs, except after headings, lists,
-and displays (this value can\[aq]t be used as an argument to
+and displays (this value can't be used as an argument to
 .B P
 itself).
 .
@@ -2355,9 +2361,9 @@ A line break is done unless the fourth argument is given.
 This can be used to avoid the page number on the first page
 while setting new width and length.
 .
-(It seems as if this macro sometimes doesn\[aq]t work too well.
+(It seems as if this macro sometimes doesn't work too well.
 .
-Use the command line arguments to change
+Use the command-line arguments to change
 line length, page length, and page offset instead.)
 .
 .TP
@@ -2403,7 +2409,7 @@ can also be given to resize the picture.
 Picture end.
 .
 Ends a picture for
-.BR @g@pic (@MAN1EXT).
+.BR @g@pic (@MAN1EXT@).
 .
 .TP
 .BI PF\  \fR[\fParg\fR]\fP
@@ -2671,8 +2677,7 @@ otherwise at the last.
 No reference data is printed if the author(s) is specified through
 .BR .WA / .WE .
 .
-See section
-.BR INTERNALS .
+See section \[lq]Internals\[rq] below.
 .
 .TP
 .BI SK\  \fR[\fPpages\fR]\fP
@@ -2876,7 +2881,7 @@ ends the header of the table.
 .
 This header is printed again if a page break occurs.
 .
-Argument \[oq]N\[cq] isn\[aq]t implemented yet.
+Argument \[oq]N\[cq] isn't implemented yet.
 .
 .TP
 .BI TL\  "\fR[\fPcharging-case-number \fR[\fPfiling-case-number\fR]]\fP"
@@ -3066,7 +3071,7 @@ and setting top and/or bottom margin to less than the default.
 .
 .TP
 .BI WA\  "\fR[\fPwriter-name \fR[\fPtitle\fR]]\fP"
-Begin specification of the writer and writer\[aq]s address.
+Begin specification of the writer and writer's address.
 .
 Several names can be specified with empty
 .BR WA / WE
@@ -3120,9 +3125,9 @@ T}
 .RE
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Strings used in m@TMAC_M_PREFIX@m"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .TP
 .B App
@@ -3261,7 +3266,7 @@ is an array containing the different strings used in
 It is really a number of string variables prefixed with
 .BR Letns! .
 .
-If the argument doesn\[aq]t exist, it is included between
+If the argument doesn't exist, it is included between
 .B ()
 with
 .B Letns!copy
@@ -3293,8 +3298,8 @@ Letns!11@Copy (without atts.\&) to
 Letns!12@Abstract Only to
 Letns!13@Complete Memorandum to
 Letns!14@CC
-Letns!copy@Copy \[rs]"
-Letns!to@" to
+Letns!copy@Copy \fI(with trailing space)\fP
+Letns!to@ to \fI(note leading space)\fP
 .TE
 .RE
 .
@@ -3361,9 +3366,9 @@ command.
 Default is\~1.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Number variables used in m@TMAC_M_PREFIX@m"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .TP
 .B Aph
@@ -3597,7 +3602,7 @@ Hyphenation status of text body.
 7tab(@);
 l l.
 0@no hyphenation
-1@hyphenation on, set to value\~14
+1@hyphenation on, set to value\~6
 .TE
 .RE
 .
@@ -3613,7 +3618,7 @@ Useless inside of a document.
 .
 .TP
 .B L
-Page length, only for command line settings.
+Page length, only for command-line settings.
 .
 .TP
 .B Letwam
@@ -3718,7 +3723,7 @@ Default is\~0.
 .
 .TP
 .B O
-Page offset, only for command line settings.
+Page offset, only for command-line settings.
 .
 .TP
 .B Of
@@ -3847,16 +3852,16 @@ Default is 5n.
 .
 .TP
 .B W
-Line length, only for command line settings.
+Line length, only for command-line settings.
 .
 .TP
 .B .mgm
 Always\~1.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH INTERNALS
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The letter macros are using different submacros depending on the
 letter type.
@@ -3903,8 +3908,8 @@ and
 are specified through
 .BR .WA / .WB .
 .
-.I n\c
-\~is the counter, 1-max, and
+.IR n \~is
+the counter, 1-max, and
 .I flag
 is true for the last name.
 .
@@ -3934,29 +3939,41 @@ then assigns the argument to the string variable
 .BI let*lo- type\fR.\fP
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .\".SH BUGS
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH FILES
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .TP
-.B @MACRODIR@/@TMAC_M_PREFIX@m.tmac
+.I @MACRODIR@/@TMAC_M_PREFIX@m.tmac
 .TP
-.B @TMAC_MDIR@/*.cov
+.IR @TMAC_MDIR@/ * .cov
 .TP
-.B @TMAC_MDIR@/*.MT
+.IR @TMAC_MDIR@/ * .MT
 .TP
-.B @TMAC_MDIR@/locale
+.I @TMAC_MDIR@/locale
+.
+.
+.\" ====================================================================
+.SH AUTHORS
+.\" ====================================================================
+The GNU version of the
+.I mm
+macro package was written by
+.MT jh@\:axis.se
+J\[:o]rgen H\[:a]gg
+.ME
+of Lund, Sweden.
 .
 .
 .na
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "SEE ALSO"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .BR groff (@MAN1EXT@),
 .BR @g@troff (@MAN1EXT@),
@@ -3967,17 +3984,12 @@ then assigns the argument to the string variable
 .BR groff_mmse (@MAN7EXT@)
 .
 .
-.\" --------------------------------------------------------------------
-.SH COPYING
-.\" --------------------------------------------------------------------
-.co
-.\" --------------------------------------------------------------------
-.SH AUTHOR
-.\" --------------------------------------------------------------------
-.au
+.\" Restore compatibility mode (for, e.g., Solaris 10/11).
+.cp \n[groff_mm_C]
 .
 .
 .\" Local Variables:
 .\" mode: nroff
 .\" coding: latin-1
 .\" End:
+.\" vim:set filetype=groff:
diff --git a/contrib/mm/groff_mmse.7.man b/contrib/mm/groff_mmse.7.man
new file mode 100644 (file)
index 0000000..814d54f
--- /dev/null
@@ -0,0 +1,178 @@
+.TH GROFF_MMSE @MAN7EXT@ "@MDATE@" "groff @VERSION@"
+.SH NAMN
+groff_mmse \- svenska \(rqmemorandum\(rq makro f\(:or GNU roff
+.
+.
+.\" Save and disable compatibility mode (for, e.g., Solaris 10/11).
+.do nr groff_mmse_C \n[.C]
+.cp 0
+.
+.
+.\" ====================================================================
+.\" Legal Terms
+.\" ====================================================================
+.\"
+.\" Copyright (C) 1989-2018 Free Software Foundation, Inc.
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of
+.\" this manual under the conditions for verbatim copying, provided that
+.\" the entire resulting derived work is distributed under the terms of
+.\" a permission notice identical to this one.
+.\"
+.\" Permission is granted to copy and distribute translations of this
+.\" manual into another language, under the above conditions for
+.\" modified versions, except that this permission notice may be
+.\" included in translations approved by the Free Software Foundation
+.\" instead of in the original English.
+.
+.\"
+.\" Skrivet av Jörgen Hägg, Lund, Sverige
+.\"
+.
+.mso sv.tmac
+.
+.
+.\" ====================================================================
+.SH SYNTAX
+.\" ====================================================================
+.
+.SY "groff \-m@TMAC_M_PREFIX@mse"
+.RI [ flaggor
+\&.\|.\|.\&]
+.RI [ filer
+\&.\|.\|.\&]
+.SY "groff \-m m@TMAC_M_PREFIX@mse"
+.RI [ flaggor
+\&.\|.\|.\&]
+.RI [ filer
+\&.\|.\|.\&]
+.YS
+.
+.
+.\" ====================================================================
+.SH BESKRIVNING
+.\" ====================================================================
+.
+.B m@TMAC_M_PREFIX@mse
+är en svensk variant av
+.BR m@TMAC_M_PREFIX@m .
+Alla texter är översatta.
+En A4 sida får text som är 13\~cm bred,
+3,5\~cm indragning samt är 28,5\~cm hög.
+Det finns stöd för brevuppställning enligt svensk standard
+för vänster och högerjusterad text.
+.
+.LP
+.B COVER
+kan använda
+.I se_ms
+som argument.
+Detta ger ett svenskt försättsblad.
+Se
+.BR groff_mm (@MAN7EXT@)
+för övriga detaljer.
+.
+.
+.\" ====================================================================
+.SH BREV
+.\" ====================================================================
+.
+Tillgängliga brevtyper:
+.
+.TP
+.B ".LT SVV"
+Vänsterställd löptext med adressat i position T0 (vänsterställt).
+.
+.TP
+.B ".LT SVH"
+Högerställd löptext med adressat i position T4 (passar
+fönsterkuvert).
+.
+.LP
+Följande extra LO-variabler används.
+.
+.TP
+.BI ".LO DNAMN\ " namn
+Anger dokumentets namn.
+.
+.TP
+.BI ".LO MDAT\ " datum
+Mottagarens datum, anges under
+.B Ert datum:
+.RB ( LetMDAT ).
+.
+.TP
+.BI ".LO BIL\ " sträng
+Anger bilaga, nummer eller sträng med
+.B Bilaga
+.RB ( LetBIL )
+som prefix.
+.
+.TP
+.BI ".LO KOMP\ " text
+Anger kompletteringsuppgift.
+.
+.TP
+.BI ".LO DBET\ " beteckning
+Anger dokumentbeteckning eller dokumentnummer.
+.
+.TP
+.BI ".LO BET\ " beteckning
+Anger beteckning (ärendebeteckning i form av diarienummer eller liknande).
+.
+.TP
+.BI ".LO SIDOR\ " antal
+Anger totala antalet sidor och skrivs ut efter sidnumret inom
+parenteser.
+.
+.LP
+Om makrot
+.B .TP
+är definierat anropas det efter utskrift av brevhuvudet.
+Där lägger man lämpligen in postadress och annat som brevfot.
+.
+.
+.\" ====================================================================
+.SH "SKRIVET AV"
+.\" ====================================================================
+.
+Jörgen Hägg, Lund, Sweden <Jorgen.Hagg@axis.se>
+.
+.
+.\" ====================================================================
+.SH FILER
+.\" ====================================================================
+.
+.TP
+.I @MACRODIR@/@TMAC_M_PREFIX@mse.tmac
+.TP
+.IR @TMAC_MDIR@/se_ * .cov
+.
+.
+.na
+.\" ====================================================================
+.SH "SE OCKSÅ"
+.\" ====================================================================
+.
+.BR groff (@MAN1EXT@),
+.BR @g@troff (@MAN1EXT@),
+.BR @g@tbl (@MAN1EXT@),
+.BR @g@pic (@MAN1EXT@),
+.BR @g@eqn (@MAN1EXT@)
+.br
+.BR groff_mm (@MAN7EXT@)
+.
+.
+.\" Restore compatibility mode (for, e.g., Solaris 10/11).
+.cp \n[groff_mmse_C]
+.
+.
+.\" Local Variables:
+.\" coding: latin-1
+.\" mode: nroff
+.\" End:
+.\" vim: set filetype=groff:
diff --git a/contrib/mm/groff_mmse.man b/contrib/mm/groff_mmse.man
deleted file mode 100644 (file)
index 635e3f0..0000000
+++ /dev/null
@@ -1,163 +0,0 @@
-.TH GROFF_MMSE @MAN7EXT@ "@MDATE@" "Groff Version @VERSION@"
-.
-.SH NAMN
-groff_mmse \- svenska mm makro för groff
-.
-.
-.ig
-Copyright \[co] 1989-2014 Free Software Foundation, Inc.
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the
-entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
-Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be included in
-translations approved by the Free Software Foundation instead of in
-the original English.
-..
-.
-.\"
-.\" Skrivet av Jörgen Hägg, Lund, Sverige
-.\"
-.
-.mso sv.tmac
-.
-.
-.\" --------------------------------------------------------------------
-.SH SYNTAX
-.\" --------------------------------------------------------------------
-.
-.B groff
-.B \-m@TMAC_M_PREFIX@mse
-[
-.IR flaggor .\|.\|.\&
-]
-[
-.IR filer .\|.\|.\&
-]
-.
-.
-.\" --------------------------------------------------------------------
-.SH BESKRIVNING
-.\" --------------------------------------------------------------------
-.
-.B m@TMAC_M_PREFIX@mse
-är en svensk variant av
-.BR m@TMAC_M_PREFIX@m .
-Alla texter är översatta.
-En A4 sida får text som är 13\~cm bred,
-3,5\~cm indragning samt är 28,5\~cm hög.
-Det finns stöd för brevuppställning enligt svensk standard
-för vänster och högerjusterad text.
-.
-.LP
-.B COVER
-kan använda
-.I se_ms
-som argument.
-Detta ger ett svenskt försättsblad.
-Se
-.BR groff_mm (@MAN7EXT@)
-för övriga detaljer.
-.
-.
-.\" --------------------------------------------------------------------
-.SH BREV
-.\" --------------------------------------------------------------------
-.
-Tillgängliga brevtyper:
-.
-.TP
-.B ".LT SVV"
-Vänsterställd löptext med adressat i position T0 (vänsterställt).
-.
-.TP
-.B ".LT SVH"
-Högerställd löptext med adressat i position T4 (passar
-fönsterkuvert).
-.
-.LP
-Följande extra LO-variabler används.
-.
-.TP
-.BI ".LO DNAMN\ " namn
-Anger dokumentets namn.
-.
-.TP
-.BI ".LO MDAT\ " datum
-Mottagarens datum, anges under
-.B Ert datum:
-.RB ( LetMDAT ).
-.
-.TP
-.BI ".LO BIL\ " sträng
-Anger bilaga, nummer eller sträng med
-.B Bilaga
-.RB ( LetBIL )
-som prefix.
-.
-.TP
-.BI ".LO KOMP\ " text
-Anger kompletteringsuppgift.
-.
-.TP
-.BI ".LO DBET\ " beteckning
-Anger dokumentbeteckning eller dokumentnummer.
-.
-.TP
-.BI ".LO BET\ " beteckning
-Anger beteckning (ärendebeteckning i form av diarienummer eller liknande).
-.
-.TP
-.BI ".LO SIDOR\ " antal
-Anger totala antalet sidor och skrivs ut efter sidnumret inom
-parenteser.
-.
-.LP
-Om makrot
-.B .TP
-är definierat anropas det efter utskrift av brevhuvudet.
-Där lägger man lämpligen in postadress och annat som brevfot.
-.
-.
-.\" --------------------------------------------------------------------
-.SH "SKRIVET AV"
-.\" --------------------------------------------------------------------
-.
-Jörgen Hägg, Lund, Sweden <Jorgen.Hagg@axis.se>
-.
-.
-.\" --------------------------------------------------------------------
-.SH FILER
-.\" --------------------------------------------------------------------
-.
-.TP
-.B @MACRODIR@/@TMAC_M_PREFIX@mse.tmac
-.TP
-.B @TMAC_MDIR@/se_*.cov
-.
-.
-.na
-.\" --------------------------------------------------------------------
-.SH "SE OCKSÅ"
-.\" --------------------------------------------------------------------
-.
-.BR groff (@MAN1EXT@),
-.BR @g@troff (@MAN1EXT@),
-.BR @g@tbl (@MAN1EXT@),
-.BR @g@pic (@MAN1EXT@),
-.BR @g@eqn (@MAN1EXT@)
-.br
-.BR groff_mm (@MAN7EXT@)
-.
-.\" Local Variables:
-.\" coding: latin-1
-.\" mode: nroff
-.\" End:
index 4b76039..2851d68 100644 (file)
@@ -1,8 +1,6 @@
-.\" -*- nroff -*-
-.
 .ig
 
-Copyright (C) 1991-201 Free Software Foundation, Inc.
+Copyright (C) 1991-2018 Free Software Foundation, Inc.
 mgm is written by Jörgen Hägg <jh@axis.com>
 
 mgm is free software; you can redistribute it and/or modify it under
@@ -16,9 +14,10 @@ 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 <http://www.gnu.org/licenses/>.
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-Please send bug reports with examples to bug-groff@gnu.org.
+Please submit bug reports with examples at
+http://savannah.gnu.org/bugs/?group=groff.
 
 Naming convention stolen from mgs.
 Local names    module*name
@@ -318,8 +317,8 @@ Index               array!index
 .ds Letns!copy Copy \" space!
 .ds Letns!to " to
 .ds Letns!0 Copy to
-.ds Letns!1 Copy (with att.) to
-.ds Letns!2 Copy (without att.) to
+.ds Letns!1 Copy (with att.\&) to
+.ds Letns!2 Copy (without att.\&) to
 .ds Letns!3 Att.
 .ds Letns!4 Atts.
 .ds Letns!5 Enc.
@@ -327,15 +326,15 @@ Index             array!index
 .ds Letns!7 Under separate cover
 .ds Letns!8 Letter to
 .ds Letns!9 Memorandum to
-.ds Letns!10 Copy (with atts.) to
-.ds Letns!11 Copy (without atts.) to
+.ds Letns!10 Copy (with atts.\&) to
+.ds Letns!11 Copy (without atts.\&) to
 .ds Letns!12 Abstract Only to
 .ds Letns!13 Complete Memorandum to
 .ds Letns!14 CC:
 .\"
 .\" Text printed below the footer. Controlled by @copy_type (C).
 .ds Pg_type!0
-.ds Pg_type!1 OFFICIAL FILE COPY 
+.ds Pg_type!1 OFFICIAL FILE COPY
 .ds Pg_type!2 DATE FILE COPY
 .ds Pg_type!3 D\ R\ A\ F\ T
 .ds Pg_type!4 D\ R\ A\ F\ T
@@ -736,13 +735,19 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
 .\" Wrapper to cancel the side effect of .tag + .br generating
 .\" unwanted vertical space.
 .de misc@tag
+.\" This macro is currently used solely to give information to the
+.\" HTML postprocessor.  If for PostScript or PDF output macro .H
+.\" had been followed by .DS both .H post-space and .DS pre-space
+.\" had been output because of this macro.  So it is now enabled
+.\" only when postprocessor tags are required.
+.if '\*[.T]'html' \{\
 .\" retain temporary indentation and horizontal position
 .if !(\\n[.in]-\\n[.i]=0) .nr misc*ti \\n[.in]
 .nr misc*.k \\n[.k]
 .vpt 0
 .DEVTAG-\\$1 \\$2
 .br
-.if r misc*ti \{
+.if r misc*ti \{\
 .      ti \\n[misc*ti]u
 .      rr misc*ti
 .      sp -1
@@ -751,6 +756,7 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
 \h'\\n[misc*.k]u'\c
 .rr misc*.k
 .vpt 1
+.\}
 ..
 .\" ######## module pict #################
 .nr pict*width 0
@@ -939,7 +945,7 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
 .als }2 hd*suf-space
 .aln ;3 hd*need
 .\"-------------
-.\" .hd@split varable index name val1 val2 ...
+.\" .hd@split variable index name val1 val2 ...
 .de hd@split
 .if \\$2>(\\n[.$]-3) .@error "\\$3 must have at least \\$2 values (\\*[\\$3]).
 .nr hd*sp-tmp \\$2+3
@@ -1018,7 +1024,7 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
 .\" May change hd*mark (}0), hd*suf-space (}2) and hd*need (;3)
 .\" Can also change Hps1/2.
 .if d HX .HX \\n[hd*level] \\n[hd*arg1] "\\$2\\$3"
-.\"-------------------------------------- 
+.\"--------------------------------------
 .\" pre-space
 .ie \\n[hd*level]<=\\n[Hps] .SP (u;\\n[Hps2])
 .el .SP (u;\\n[Hps1])
@@ -1055,12 +1061,12 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
 .      vs \\*[hd*new-ps]+2
 .\}
 .\"
-.\"---------- user macro HY ------------- 
+.\"---------- user macro HY -------------
 .\"    user macro to reset indents
 .if d HY .HY \\n[hd*level] \\n[hd*arg1] "\\$2\\$3"
 .\" HTML: mark beginning of heading
 .misc@tag NH \\n[hd*level]
-.\"-------------------------------------- 
+.\"--------------------------------------
 .nr hd*mark-size \w@\\*[hd*mark]@
 .if (\\n[hd*level]<=\\n[Hc])&\\n[hd*htype] .ce\" center if level<=Hc
 .\"
@@ -1116,8 +1122,8 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
 .while \\n+[hd*i]<15 .af H\\n[hd*i] \\$[\\n[hd*i]] 1
 ..
 .\"----------------------
-.\" set page-nr, called from header 
-.\" 
+.\" set page-nr, called from header
+.\"
 .de hd@set-page
 .\"
 .ie \\n[.$]>0 .nr P \\$1
@@ -1165,7 +1171,7 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
 .\"
 .if \\n[D]>2 .tm pg*foot-trap \\n[@pl]u-(\\n[pg*block-size]u+\\n[ft*note-size]u+\\n[pg*foot-margin]u+\\n[pg*footer-size]u+\\n[pg*extra-footer-size]u) = \\n[pg*foot-trap]
 .\"
-.\" last-pos points to the position of the footer and bottom 
+.\" last-pos points to the position of the footer and bottom
 .\" block below foot-notes.
 .nr pg*last-pos \\n[@pl]u-(\\n[pg*block-size]u+\\n[pg*foot-margin]u+\\n[pg*footer-size]u+\\n[pg*extra-footer-size]u)
 .if \\n[D]>2 .tm pg*last-pos \\n[@pl]u-(\\n[pg*block-size]u+\\n[pg*foot-margin]u+\\n[pg*footer-size]u+\\n[pg*extra-footer-size]u) = \\n[pg*last-pos]
@@ -1273,7 +1279,7 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
 .              PX
 .              rs
 .      \}
-.      \" check for pending footnotes 
+.      \" check for pending footnotes
 .      ft@check-old
 .      \"
 .      \" back to normal text processing
@@ -1283,7 +1289,7 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
 .      \" reset NCOL pointer at each new page.
 .      nr pg*last-ncol 0
 .      \" set multicolumn
-.      \" 
+.      \"
 .      pg@set-po
 .      \" print floating displays
 .      df@print-float 4
@@ -1291,7 +1297,7 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
 .      ns
 .\}
 .if \\n[pg*top-enabled]<0 .nr pg*top-enabled 1
-.nr hd*cur-bline \\n[nl]       \" .H needs to know if output has occured
+.nr hd*cur-bline \\n[nl]       \" .H needs to know if output has occurred
 .\}
 ..
 .\"---------------------------------------------------------
@@ -1453,7 +1459,7 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
 .ref@eot-print
 ..
 .\"-------------------------
-.\" set top and bottom margins 
+.\" set top and bottom margins
 .\" -T sets pg*footer-size and pg*header-size instead
 .de VM
 .ie '\\$1'-T' \{\
@@ -1480,7 +1486,7 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
 .pg@move-trap
 ..
 .\"---------------------
-.\" multicolumn output. 
+.\" multicolumn output.
 .de pg@set-po
 .if \\n[pg*cols-per-page]>1 \{\
 .      ll \\n[pg*column-size]u
@@ -1599,7 +1605,7 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
 .fam \\*[pg*mul-fam]
 .ft \\n[pg*mul-font]
 .fi
-.hy 14
+.hy 6
 .di pg*mul-div
 .MULN
 ..
@@ -1660,7 +1666,7 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
 'fi
 .ie \\n[ft*adjust] 'ad
 .el 'na
-.ie \\n[ft*hyphen] 'hy 14
+.ie \\n[ft*hyphen] 'hy 6
 .el 'hy 0
 .ll \\n[@cur-ll]u
 .lt \\n[@cur-ll]u
@@ -1679,7 +1685,7 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
 .      ie \\$1>11 .nr ft*format 0
 .      el .nr ft*format \\$1
 .      \"
-.      nr ft*hyphen (\\n[ft*format]%2)*14
+.      nr ft*hyphen (\\n[ft*format]%2)*6
 .      nr ft*format \\n[ft*format]/2
 .      \"
 .      nr ft*adjust 1-(\\n[ft*format]%2)
@@ -1711,7 +1717,7 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
 .              nr ds*wide 0
 .              if r ft*df-save \{\
 .                      nr Df \\n[ft*df-save]
-.                      rm ft*df-save 
+.                      rm ft*df-save
 .              \}
 .      \}
 .      if '\\*[ft*x]'WD' \{\
@@ -2083,7 +2089,9 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
 'in 0
 .di ds*div!\\n[ds*snr]
 .\"
-.ds@set-new-ev \\n[ds*old-ll]
+.nr ds*div-ll \\n[ds*old-ll]
+.if \\n[ds*format]=1 .nr ds*div-ll -\\n(Sin
+.ds@set-new-ev \\n[ds*div-ll]
 .nr df*float 0
 ..
 .\"--------------------------------------------
@@ -2390,7 +2398,7 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
 .SP .5
 ..
 .\" ####### module eq #######################################
-.\" 
+.\"
 .nr eq*number 0 1
 .ds eq*label
 .de EQ
@@ -2504,7 +2512,7 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
 .      \}
 .\}
 .am toc*list
-.\" .toc@set level headernumber text pagenr
+.\" .toc@set level headernumber text pagenumber
 .toc@set \\$1 "\\$2" "\\$3" \\$4
 \\..
 ..
@@ -2528,7 +2536,7 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
 .in \\n[toc*text]u
 .ti -\\n[toc*hl!\\$1]u
 .\"
-.\" length of headernum space
+.\" length of headernumber space
 .nr toc*i \\n[toc*hl!\\$1]-\w@\\$2@
 .\"
 .ll \\n[@ll]u-\w@\\$4@u-2m
@@ -2560,7 +2568,7 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
 .ll \\n[@ll]u
 ..
 .\"########################### module lix ############################
-.\" LIST OF figures, tables, exhibits and equations 
+.\" LIST OF figures, tables, exhibits and equations
 .nr lix*fg-nr 0 1
 .nr lix*tb-nr 0 1
 .nr lix*ec-nr 0 1
@@ -2692,7 +2700,7 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
 ..
 .\"------------
 .\" print appended macro
-.\" lix@dsln type pagenumber text headernr
+.\" lix@dsln type pagenumber text headernumber
 .de lix@dsln
 .nr lix*i \\n[lix*wth\\$1]-\w@\\$4@
 .ne 4v
@@ -2860,7 +2868,7 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
 .\"-----------
 .\" called by end-of-text!
 .de ref@eot-print
-.\".if \\n[ref*flag] \{
+.\".if \\n[ref*flag] \{\
 .if d ref*mac \{\
 .      if \\n[D]>2 .tm Print references, called by eot
 .      nr ref*flag 0
@@ -2891,7 +2899,7 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
 .nr ref*flag 0 1
 ..
 .\"########################### module app ############################
-.\" 
+.\"
 .nr app*nr 0 1
 .af app*nr A
 .nr app*dnr 0 1
@@ -2937,7 +2945,7 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
 .      \}
 .      ds app*ind \\n+[app*nr]
 .      nr H1 \\n+[app*dnr]
-.      nr H1h \\n[app*dnr] 
+.      nr H1h \\n[app*dnr]
 .\}
 .\"    clear lower counters
 .nr app*i 1 1
@@ -3566,3 +3574,13 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
 .\"--------------------
 .\" Start with a clean slate
 .init@reset
+.
+.\" ====================================================================
+.\" Editor settings
+.\" ====================================================================
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" fill-column: 72
+.\" End:
+.\" vim: set filetype=groff textwidth=72:
diff --git a/contrib/mm/mm.am b/contrib/mm/mm.am
new file mode 100644 (file)
index 0000000..cdd5270
--- /dev/null
@@ -0,0 +1,127 @@
+# Copyright 1991-2018 Free Software Foundation, Inc.
+#
+# Last update: 22 Aug 2015
+#
+# This file is part of groff.
+#
+# groff 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.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+#
+# mm.am
+#
+
+mm_srcdir = $(top_srcdir)/contrib/mm
+mm_builddir = $(top_builddir)/contrib/mm
+
+bin_SCRIPTS += mmroff
+
+man1_MANS += contrib/mm/mmroff.1
+man7_MANS += \
+  contrib/mm/groff_mm.7 \
+  contrib/mm/groff_mmse.7
+
+# Files installed in $(tmacdir)/mm
+MMFILES = \
+  contrib/mm/mm/0.MT \
+  contrib/mm/mm/5.MT \
+  contrib/mm/mm/4.MT \
+  contrib/mm/mm/ms.cov \
+  contrib/mm/mm/se_ms.cov
+mmdir = $(tmacdir)/mm
+dist_mm_DATA = $(MMFILES)
+
+# Files installed in $(tmacdir)
+tmacmmdir = $(tmacdir)
+dist_tmacmm_DATA = contrib/mm/refer-mm.tmac
+
+MMEXAMPLEFILES=\
+  contrib/mm/examples/letter.mm
+
+mmexampledir=$(exampledir)/mm
+dist_mmexample_DATA = $(MMEXAMPLEFILES)
+
+# Local configuration files with default values.
+MMLOCALE = \
+  locale \
+  se_locale
+
+EXTRA_DIST += \
+  contrib/mm/ChangeLog \
+  contrib/mm/examples \
+  contrib/mm/Makefile.sim \
+  contrib/mm/mm \
+  contrib/mm/NOTES \
+  contrib/mm/README \
+  contrib/mm/groff_mm.7.man \
+  contrib/mm/groff_mmse.7.man \
+  contrib/mm/mmroff.1.man \
+  contrib/mm/mmroff.pl
+
+
+mmroff: $(mm_srcdir)/mmroff.pl
+       $(AM_V_GEN)$(SED) -e 's;/usr/bin/perl;$(PERL);' \
+           $(mm_srcdir)/mmroff.pl \
+           >$@ \
+       && chmod +x $@
+
+# Special installation rules for m.tmac, mse.tmac, mmse.tmac, mm.tmac
+# and MMLOCALE
+install-data-local: install_mm
+install_mm:
+       -test -d $(DESTDIR)$(tmacdir) || $(mkinstalldirs) $(DESTDIR)$(tmacdir)
+       -test -d $(DESTDIR)$(mmdir) || $(mkinstalldirs) $(DESTDIR)$(mmdir)
+       $(RM) $(DESTDIR)$(tmacdir)/tmac.$(tmac_m_prefix)m
+       $(RM) $(DESTDIR)$(tmacdir)/$(tmac_m_prefix)m.tmac
+       $(INSTALL_DATA) $(mm_srcdir)/m.tmac \
+         $(DESTDIR)$(tmacdir)/$(tmac_m_prefix)m.tmac
+       $(SED) -e "s;^.mso m.tmac;.mso $(tmac_m_prefix)m.tmac;g" \
+         $(mm_srcdir)/mse.tmac > $(DESTDIR)$(tmacdir)/$(tmac_m_prefix)mse.tmac
+       @$(SED) -e "s;^.mso mse.tmac;.mso $(tmac_m_prefix)mse.tmac;g" \
+         $(mm_srcdir)/mmse.tmac > $(DESTDIR)$(tmacdir)/$(tmac_m_prefix)mmse.tmac
+       @$(SED) -e "s;^.mso m.tmac;.mso $(tmac_m_prefix)m.tmac;g" \
+         $(mm_srcdir)/mm.tmac > $(DESTDIR)$(tmacdir)/$(tmac_m_prefix)mm.tmac
+       @for f in $(MMLOCALE); do \
+         test -f $(DESTDIR)$(tmacdir)/mm/$$f \
+           || touch $(DESTDIR)$(tmacdir)/mm/$$f; \
+       done
+uninstall-local: uninstall_mm
+uninstall_mm:
+       if test -d $(DESTDIR)$(mmexampledir); then \
+         rmdir $(DESTDIR)$(mmexampledir); \
+       fi
+       -for f in $(MMLOCALE); do \
+         test -s $(DESTDIR)$(tmacdir)/mm/$$f \
+           || $(RM) $(DESTDIR)$(tmacdir)/mm/$$f; \
+       done
+       $(RM) $(DESTDIR)$(tmacdir)/tmac.$(tmac_m_prefix)m
+       $(RM) $(DESTDIR)$(tmacdir)/$(tmac_m_prefix)m.tmac
+       $(RM) $(DESTDIR)$(tmacdir)/$(tmac_m_prefix)mm.tmac
+       $(RM) $(DESTDIR)$(tmacdir)/$(tmac_m_prefix)mse.tmac
+       $(RM) $(DESTDIR)$(tmacdir)/$(tmac_m_prefix)mmse.tmac
+       -rmdir $(DESTDIR)$(tmacdir)/mm
+
+# Special distribution rule: we copy all .tmac files from contrib/mm
+dist-hook: dist_mm
+dist_mm:
+       chmod u+w $(distdir)/contrib/mm/
+       for i in $(mm_srcdir)/*.tmac; do \
+         cp -f $$i $(distdir)/contrib/mm/; \
+       done
+
+
+########################################################################
+### Emacs settings
+# Local Variables:
+# mode: makefile-automake
+# End:
+# vim: set filetype=automake:
index 966bf94..20952ec 100644 (file)
@@ -1,7 +1,7 @@
 .\" -*- nroff -*-
 .ig
 
-Copyright (C) 1991-201 Free Software Foundation, Inc.
+Copyright (C) 1991-2018 Free Software Foundation, Inc.
 mgm is written by Jörgen Hägg <jh@axis.com>
 
 mgm is free software; you can redistribute it and/or modify it under
@@ -15,9 +15,10 @@ 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 <http://www.gnu.org/licenses/>.
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-Please send bug reports with examples to bug-groff@gnu.org.
+Please submit bug reports with examples at
+http://savannah.gnu.org/bugs/?group=groff.
 ..
 .
 .\"------------
index 85437d8..a722490 100644 (file)
@@ -1,7 +1,7 @@
 .\" -*- nroff -*-
 .ig
 
-Copyright (C) 1991-201 Free Software Foundation, Inc.
+Copyright (C) 1991-2018 Free Software Foundation, Inc.
 mgm is written by Jörgen Hägg <jh@axis.com>
 
 mgm is free software; you can redistribute it and/or modify it under
@@ -15,9 +15,10 @@ 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 <http://www.gnu.org/licenses/>.
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-Please send bug reports with examples to bug-groff@gnu.org.
+Please submit bug reports with examples at
+http://savannah.gnu.org/bugs/?group=groff.
 ..
 .
 .\"------------
index 77062e2..20d7795 100644 (file)
@@ -1,7 +1,7 @@
 .\" -*- nroff -*-
 .ig
 
-Copyright (C) 1991-201 Free Software Foundation, Inc.
+Copyright (C) 1991-2018 Free Software Foundation, Inc.
 mgm is written by Jörgen Hägg <jh@axis.com>
 
 mgm is free software; you can redistribute it and/or modify it under
@@ -15,9 +15,10 @@ 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 <http://www.gnu.org/licenses/>.
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-Please send bug reports with examples to bug-groff@gnu.org.
+Please submit bug reports with examples at
+http://savannah.gnu.org/bugs/?group=groff.
 ..
 .
 .\"------------
index d1e351f..d771a81 100644 (file)
@@ -1,7 +1,7 @@
 .\" -*- nroff -*-
 .ig
 
-Copyright (C) 1991-201 Free Software Foundation, Inc.
+Copyright (C) 1991-2018 Free Software Foundation, Inc.
 mgm is written by Jörgen Hägg <jh@axis.com>
 
 mgm is free software; you can redistribute it and/or modify it under
@@ -15,9 +15,10 @@ 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 <http://www.gnu.org/licenses/>.
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-Please send bug reports with examples to bug-groff@gnu.org.
+Please submit bug reports with examples at
+http://savannah.gnu.org/bugs/?group=groff.
 ..
 .
 .\"------------
diff --git a/contrib/mm/mmroff.1.man b/contrib/mm/mmroff.1.man
new file mode 100644 (file)
index 0000000..cd5c375
--- /dev/null
@@ -0,0 +1,112 @@
+.TH MMROFF @MAN1EXT@ "@MDATE@" "groff @VERSION@"
+.SH NAME
+mmroff \- cross-reference preprocessor for GNU roff mm macro package
+.
+.
+.\" Save and disable compatibility mode (for, e.g., Solaris 10/11).
+.do nr mmroff_C \n[.C]
+.cp 0
+.
+.
+.\" ====================================================================
+.\" Legal Terms
+.\" ====================================================================
+.\"
+.\" Copyright (C) 1989-2018 Free Software Foundation, Inc.
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of
+.\" this manual under the conditions for verbatim copying, provided that
+.\" the entire resulting derived work is distributed under the terms of
+.\" a permission notice identical to this one.
+.\"
+.\" Permission is granted to copy and distribute translations of this
+.\" manual into another language, under the above conditions for
+.\" modified versions, except that this permission notice may be
+.\" included in translations approved by the Free Software Foundation
+.\" instead of in the original English.
+.
+.
+.\" ====================================================================
+.SH SYNOPSIS
+.\" ====================================================================
+.
+.SY mmroff
+.OP \-x
+.I groff-arguments
+.YS
+.
+.
+.\" ====================================================================
+.SH DESCRIPTION
+.\" ====================================================================
+.
+.I mmroff
+is a simple preprocessor for
+.IR groff ,
+used for expanding cross references in
+.IR m@TMAC_M_PREFIX@m ;
+see
+.IR groff_mm (@MAN7EXT@).
+.
+.I groff
+is executed twice, first with
+.B \-z
+and
+.B \-rRef=1
+to collect all cross references and then to do the real processing
+when the cross-reference file is up to date.
+.
+.
+.\" ====================================================================
+.SH OPTIONS
+.\" ====================================================================
+.
+.TP
+.B \-x
+Just create the cross-reference file.
+.
+This can be used to refresh the cross-reference file; it isn't
+always needed to have accurate cross references and by using this
+option
+.I groff
+will only be run once.
+.
+.
+.\" ====================================================================
+.SH AUTHORS
+.\" ====================================================================
+.
+.B mmroff
+was written by
+.MT jh@\:axis.se
+Jörgen Hägg
+.ME
+of Lund, Sweden.
+.
+.
+.\" ====================================================================
+.SH "SEE ALSO"
+.\" ====================================================================
+.
+.IR groff_mm (@MAN7EXT@),
+.IR groff_mmse (@MAN7EXT@),
+.IR groff (@MAN1EXT@),
+.IR @g@troff (@MAN1EXT@),
+.IR @g@tbl (@MAN1EXT@),
+.IR @g@pic (@MAN1EXT@),
+.IR @g@eqn (@MAN1EXT@)
+.
+.
+.\" Restore compatibility mode (for, e.g., Solaris 10/11).
+.cp \n[mmroff_C]
+.
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" coding: latin-1
+.\" End:
+.\" vim: set filetype=groff:
diff --git a/contrib/mm/mmroff.man b/contrib/mm/mmroff.man
deleted file mode 100644 (file)
index dbd50b9..0000000
+++ /dev/null
@@ -1,125 +0,0 @@
-.TH MMROFF @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
-.SH NAME
-mmroff \- cross reference preprocessor
-.
-.
-.\" --------------------------------------------------------------------
-.\" Legalese
-.\" --------------------------------------------------------------------
-.
-.de co
-Copyright \[co] 1989-2014 Free Software Foundation, Inc.
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the
-entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
-Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be included in
-translations approved by the Free Software Foundation instead of in
-the original English.
-..
-.
-.de au
-This document was written by
-.MT jh@axis.se
-Jörgen Hägg, Lund, Sweden
-.ME .
-..
-.
-.\" --------------------------------------------------------------------
-.SH SYNOPSIS
-.\" --------------------------------------------------------------------
-.
-.B mmroff
-[
-.I \-x
-]
-.I groff_arguments
-.
-.
-.\" --------------------------------------------------------------------
-.SH DESCRIPTION
-.\" --------------------------------------------------------------------
-.
-.B mmroff
-is a simple preprocessor for
-.BR groff ,
-it is used for expanding cross references in
-.BR m@TMAC_M_PREFIX@m ,
-see
-.BR groff_mm (@MAN7EXT@).
-.
-.B groff
-is executed twice, first with
-.B \-z
-and
-.B \-rRef=1
-to collect all cross references and then to do the real processing
-when the cross reference file is up to date.
-.
-.
-.TP
-.B \-x
-Just create the cross reference file.
-.
-This can be used to refresh the cross reference file, it isn\[aq]t
-always needed to have accurate cross references and by using this
-option
-.B groff
-will only be run once.
-.
-.
-.\" --------------------------------------------------------------------
-.\".SH BUGS
-.\" --------------------------------------------------------------------
-.
-.
-.\" --------------------------------------------------------------------
-.SH FILES
-.\" --------------------------------------------------------------------
-.
-.TP
-.B @MACRODIR@/@TMAC_M_PREFIX@m.tmac
-.TP
-.B @TMAC_MDIR@/*.cov
-.TP
-.B @TMAC_MDIR@/*.MT
-.TP
-.B @TMAC_MDIR@/locale
-.
-.
-.na
-.\" --------------------------------------------------------------------
-.SH "SEE ALSO"
-.\" --------------------------------------------------------------------
-.
-.BR groff_mm (@MAN7EXT@),
-.BR groff_mmse (@MAN7EXT@),
-.BR groff (@MAN1EXT@),
-.BR @g@troff (@MAN1EXT@),
-.BR @g@tbl (@MAN1EXT@),
-.BR @g@pic (@MAN1EXT@),
-.BR @g@eqn (@MAN1EXT@)
-.
-.
-.\" --------------------------------------------------------------------
-.SH COPYING
-.\" --------------------------------------------------------------------
-.co
-.\" --------------------------------------------------------------------
-.SH AUTHORS
-.\" --------------------------------------------------------------------
-.
-.
-.
-.\" Local Variables:
-.\" mode: nroff
-.\" coding: latin-1
-.\" End:
index beaf84f..685a588 100644 (file)
@@ -1,6 +1,6 @@
 #! /usr/bin/perl
 # -*- Perl -*-
-# Copyright (C) 1989-201 Free Software Foundation, Inc.
+# Copyright (C) 1989-2018 Free Software Foundation, Inc.
 #
 # This file is part of groff.
 #
@@ -15,7 +15,7 @@
 # for more details.
 #
 # You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 use strict;
 # runs groff in safe mode, that seems to be the default
index d175a51..7a9795e 100644 (file)
@@ -1,7 +1,6 @@
-.\"     -*- nroff -*-
 .ig
 
-Copyright (C) 1991-201 Free Software Foundation, Inc.
+Copyright (C) 1991-2018 Free Software Foundation, Inc.
 mgm is written by Jörgen Hägg <jh@axis.com>
 
 mgm is free software; you can redistribute it and/or modify it under
@@ -15,9 +14,10 @@ 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 <http://www.gnu.org/licenses/>.
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-Please send bug reports with examples to bug-groff@gnu.org.
+Please submit bug reports with examples at
+http://savannah.gnu.org/bugs/?group=groff.
 ..
 .
 .\"
@@ -27,7 +27,7 @@ Please send bug reports with examples to bug-groff@gnu.org.
 .ds @country se
 .
 .mso m.tmac
-.\" The two-letter code for Swedish is `sv', not `se' (this is Northern Sami)
+.\" The two-letter code for Swedish is 'sv', not 'se' (this is Northern Sami)
 .mso sv.tmac
 .
 .ISODATE
@@ -158,3 +158,13 @@ Datum:
 .sp |17
 ..
 .\"  -----------------------------------
+.
+.\" ====================================================================
+.\" Editor settings
+.\" ====================================================================
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" fill-column: 72
+.\" End:
+.\" vim: set filetype=groff textwidth=72:
index 0b84848..c27fa31 100644 (file)
@@ -1,10 +1,8 @@
-.\" -*- mode: nroff; coding: iso-latin-1; -*-
-.\"
 .\" refer-mm.tmac
 .\"
 .\" Refer support for mm macros.
 .\"
-.\" Copyright (C) 2011-201 Free Software Foundation, Inc.
+.\" Copyright (C) 2011-2018 Free Software Foundation, Inc.
 .\"   Written by Werner Lemberg (wl@gnu.org)
 .\"
 .\" This file is part of groff.
@@ -20,7 +18,7 @@
 .\" for more details.
 .\"
 .\" You should have received a copy of the GNU General Public License
-.\" along with this program. If not, see <http://www.gnu.org/licenses/>.
+.\" along with this program.  If not, see <http://www.gnu.org/licenses/>.
 .\"
 .\" Please send comments to groff@gnu.org.
 .
@@ -59,7 +57,7 @@
 .ds ref*spec!A     ",  " "
 .ds ref*spec!B     """ " " "in \fI" ""    "\fP"
 .ds ref*spec!D     """ " " "("      ")"
-.ds ref*spec!E     ",  " " "ed. "
+.ds ref*spec!E     ",  " " "ed.\& "
 .ds ref*spec!G     """ " " "("      ")"
 .ds ref*spec!J     ",  " " "\fI"    ""    "\fP"
 .ds ref*spec!N     """ "(" ""       ")"
@@ -73,7 +71,7 @@
 .ds ref*spec!dflt  ",  " "
 .
 .\" For the bibliography section, we emulate the .RS/.RF mechanism of mm by
-.\" collecting references (enclosed with .]- and .][) in macro `ref*mac'.
+.\" collecting references (enclosed with .]- and .][) in macro 'ref*mac'.
 .\" This macro gets expanded while calling the .RP macro.
 .
 .de ref*][-first-pass
 .
 .mso refer.tmac
 .
-.\" EOF
+.\" ====================================================================
+.\" Editor settings
+.\" ====================================================================
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" fill-column: 72
+.\" End:
+.\" vim: set filetype=groff textwidth=72:
index c8e9738..4875fdf 100644 (file)
@@ -1,5 +1,5 @@
     -*- text -*-
-    Copyright 2004-201 Free Software Foundation, Inc.
+    Copyright 2004-2018 Free Software Foundation, Inc.
 
     Copying and distribution of this file, with or without modification,
     are permitted in any medium without royalty provided the copyright
@@ -16,12 +16,106 @@ suggestions, or contact me directly at:
 
 If writing me directly, please include the word "groff" or "mom" in
 the Subject line or you risk my spam filters nuking your message.
-Also, please--no html email.  That, too, gets nuked.
 
 --Peter Schaffter
 
 ====================================================================
 
+Version 2.4
+===========
+BIBLIOGRAPHY output broken.
+---Fixed---
+
+Version 2.3
+===========
+.PS/.PE not working at start of documents without a preceding .PP.
+---Fixed---
+
+Output of .PS/.PE not centered correctly (the default).
+---Fixed---
+
+Version 2.2-a
+=============
+Omitting postfixed digit from ROMAN/roman args to LIST not
+generating warning.
+---Fixed---
+
+FOOTERS causing infinite loop.
+---Fixed---
+
+Version 2.2
+===========
+COVERTITLE not picking up style params.
+---Fixed---
+
+FORCE_RECTO and BLANKPAGES not co-operating.
+---Fixed---
+
+TOC and LISTS_OF leading not being picked up and/or adjusted
+properly.
+---Fixed---
+
+PDF outline putting first doc ahead of TOC in PDF outline when
+TOC is auto-relocated and COVER has the BLANKPAGE arg.
+---Fixed---
+
+Version 2.1-b
+=============
+Toggling of pagination broken.
+---Fixed---
+
+HEADERS_AND_FOOTERS printing footer at top of second page instead of
+printing header unless FOOTER_ON_FIRST_PAGE is called.
+---Fixed---
+
+Version 2.1-a
+=============
+
+Some part-by-part formatting changes to headers not being recognized
+when global header options have been invoked.
+---Fixed---
+
+Version 2.1
+===========
+
+UNDERSCORE adding an extra space after underlined text.
+---Fixed---
+
+bug #44903: 2 column output misplaced
+---Fixed---
+
+PDF_IMAGE and FLOAT environments conflicting.
+---Fixed---
+
+DROPCAP picking up color from last call to .gcolor.
+---Fixed---
+
+PAD not working properly with mom's indent macros.
+---Fixed---
+
+Margin notes not respecting differing recto-verso margins.
+---Fixed---
+
+Graphical object macros not clearing fill/no-fill registers and
+modes.
+---Fixed---
+
+LIST ALPHA emitting a number register to output.
+---Fixed---
+
+HEADER_PLAIN and FOOTER_PLAIN broken.
+---Fixed---
+
+Version 2.0-c_1
+===============
+
+.TS with no H causing FN_OVERFLOW warning when there are footnotes
+on same page.
+---Fixed---
+
+PDF_TARGET "descriptive text" not printing.
+---Fixed---
+
 Version 2.0-c
 =============
 
@@ -209,7 +303,7 @@ START.
 ---Fixed---
 
 1st footnotes with overflow vanishing altogether with an
-"automatically ending diversion `FN_OVERFLOW' on exit" warning.
+"automatically ending diversion 'FN_OVERFLOW' on exit" warning.
 ---Fixed---
 
 Right hand margin notes vanishing when an RH margin note overflows
index f185371..25c3f8c 100644 (file)
@@ -1,3 +1,98 @@
+2018-11-24
+
+       * version 2.4 release (see NEWS)
+
+2018-09-05
+
+       * improved grap support
+
+2018-03-04
+
+       * version 2.3 release (see NEWS)
+
+2018-02-28  Werner LEMBERG  <wl@gnu.org>
+
+       * mom.am (.mom.pdf): Use $(GROFF_V).
+
+2017-11-04  G. Branden Robinson <g.branden.robinson@gmail.com>
+
+       * mom.am: Drop unnecessary -M flag; build tree has what it needs.
+
+2017-10-29  Bjarni Ingi Gislason <bjarniig@rhi.hi.is>
+
+       om.tmac-u: Fix typo in register reference.
+
+       Fix bug https://savannah.gnu.org/bugs/?51608.
+
+2015-08-22  Bernd Warken  <groff-bernd.warken-72@web.de>
+
+       * groff_mom.7.man: Rename `groff_mom.man'.
+
+       * mom.am: Include renaming.
+
+2015-08-05  Bernd Warken  <groff-bernd.warken-72@web.de>
+
+       * mom.am: Add `Last update'.  Setup Emacs mode.
+
+* Sun Jul 26 2015
+
+       o Fix to header part-by-part changes.
+
+* Mon Apr 27 2015
+
+       o version 2.1-a release (see NEWS)
+
+* Fri Apr 4 2015
+
+       o groff_mom.man: Make it work in compatibility mode.
+
+* Sat Feb 28 2015
+
+       o Added an ADJUST argument to QUOTE and BLOCKQUOTE to facilitate
+               optical centering tweaks
+
+* Sat Feb 21 2015
+
+       o Expanded scope of _STYLE macros to headers/footers and
+               page numbers
+
+* Thu Feb 5 2015
+
+       o Version 2.1 release (see NEWS)
+
+       o overhaul of control macro handling
+
+       o overhaul of cover and docheader management 
+
+       o general code cleanup to remove redundancies and reduce size of
+               om.tmac
+
+       o changes to example files to demonstrate new features
+
+       o copyrights updated in all files
+
+* Tue Jan 14 2015
+
+       o Added a new example in French, mon_premier_doc.mom
+
+       o Added README-fr.txt, a translation in French of the README.txt file
+
+       o Makefile.sub: generation of mon_premier_doc.mom, installation of
+         README-fr.txt
+
+* Sun Nov 30 2014
+
+       o Added auto underscoring, caps, and color to TOC header
+               (first-page titles)
+
+       o Added vertical page positioning control macros for TOC and
+               ENDNOTES headers (first-page titles)
+
+* Tue Nov 25 2014
+
+       o Tweak so collated, non-chapter docs with the same author
+               don't require .AUTHOR "" to skip printing author in docheader
+
 * Wed Oct 29 2014
 
        o Makefile.sub: KFLAG to run pdfmom with -k
@@ -1535,7 +1630,7 @@ ________________________________________________________________________
 
 ##### License
 
-Copyright 2004-201 Free Software Foundation, Inc.
+Copyright 2004-2018 Free Software Foundation, Inc.
 
 Copying and distribution of this file, with or without modification,
 are permitted in any medium without royalty provided the copyright
diff --git a/contrib/mom/Makefile.sub b/contrib/mom/Makefile.sub
deleted file mode 100644 (file)
index 5109333..0000000
+++ /dev/null
@@ -1,230 +0,0 @@
-# -*- makefile -*-
-# Copyright (C) 2002-2014  Free Software Foundation, Inc.
-#      Written by Werner Lemberg (wl@gnu.org)
-#
-# This file is part of groff.
-#
-# groff 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.
-#
-# groff 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 <http://www.gnu.org/licenses/>.
-
-# These may be overridden if cross-compiling.
-GROFFBIN=$(top_builddir)/src/roff/groff/groff
-GROFF_BIN_PATH=`echo $(groff_bin_dirs) | sed -e 's|  *|$(SH_SEP)|g'`
-PDFMOMBIN=$(top_builddir)/src/devices/gropdf/pdfmom
-
-groff_bin_dirs=\
-  $(top_builddir)/src/roff/groff \
-  $(top_builddir)/src/roff/troff \
-  $(top_builddir)/src/devices/grops \
-  $(top_builddir)/src/devices/gropdf
-
-FFLAG=-F$(top_builddir)/font -F$(top_srcdir)/font
-TFLAG=-M$(top_builddir)/tmac -M$(top_srcdir)/tmac -M$(srcdir)
-KFLAG=-k
-
-GROFF=\
-  GROFF_COMMAND_PREFIX= \
-  GROFF_BIN_PATH="$(GROFF_BIN_PATH)" \
-  $(GROFFBIN) $(FFLAG) $(TFLAG)
-
-PDFMOM=\
-  GROFF_COMMAND_PREFIX= \
-  GROFF_BIN_PATH="$(GROFF_BIN_PATH)" \
-  PDFMOM_BIN_PATH="$(top_builddir)/src/devices/gropdf" \
-  $(PDFMOMBIN) $(FFLAG) $(TFLAG) $(KFLAG)
-
-MAN7=\
-  groff_mom.n
-
-NORMALFILES=\
-  mom.tmac
-
-# These files are processed with `strip.sed'.
-STRIPFILES=\
-  om.tmac
-
-HTMLDOCFILES=\
-  momdoc/stylesheet.css \
-  momdoc/appendices.html \
-  momdoc/color.html \
-  momdoc/cover.html \
-  momdoc/definitions.html \
-  momdoc/docelement.html \
-  momdoc/docprocessing.html \
-  momdoc/goodies.html \
-  momdoc/graphical.html \
-  momdoc/headfootpage.html \
-  momdoc/images.html \
-  momdoc/inlines.html \
-  momdoc/intro.html \
-  momdoc/letters.html \
-  momdoc/macrolist.html \
-  momdoc/rectoverso.html \
-  momdoc/refer.html \
-  momdoc/reserved.html \
-  momdoc/tables-of-contents.html \
-  momdoc/toc.html \
-  momdoc/typesetting.html \
-  momdoc/using.html \
-  momdoc/version-2.html
-
-EXAMPLEFILES=\
-  examples/letter.mom \
-  examples/mom-pdf.mom \
-  examples/sample_docs.mom \
-  examples/typesetting.mom \
-  examples/README.txt \
-  examples/elvis_syntax \
-  examples/elvis_syntax.new \
-  examples/penguin.ps \
-  examples/penguin.pdf \
-  examples/mom.vim
-
-PROCESSEDEXAMPLEFILES=\
-  examples/letter.pdf \
-  examples/mom-pdf.pdf \
-  examples/sample_docs.pdf \
-  examples/typesetting.pdf
-
-HTMLDOCFILES_=`echo $(HTMLDOCFILES) | sed 's|momdoc/||g'`
-EXAMPLEFILES_=`echo $(EXAMPLEFILES) | sed 's|examples/||g'`
-PROCESSEDEXAMPLEFILES_=`echo $(PROCESSEDEXAMPLEFILES) | sed 's|examples/||g'`
-PDFDOCFILE=mom-pdf.pdf
-
-MOSTLYCLEANADD=\
-  stamp-strip \
-  penguin.ps \
-  penguin.pdf \
-  $(PROCESSEDEXAMPLEFILES) \
-  examples/stamp \
-  om.tmac-s
-
-RM=rm -f
-
-#.SUFFIXES: .mom .ps
-#.mom.ps:
-#      $(GROFF) -Tps -mom $< >$@
-
-.SUFFIXES: .mom .pdf
-.mom.pdf:
-       LC_ALL=C $(PDFMOM) $< >$@
-
-all: stamp-strip $(make_pdfexamples)
-
-$(PROCESSEDEXAMPLEFILES): penguin.ps penguin.pdf examples/stamp
-
-pdfexamples: $(PROCESSEDEXAMPLEFILES)
-
-penguin.ps:
-       cp $(srcdir)/examples/penguin.ps .
-penguin.pdf:
-       cp $(srcdir)/examples/penguin.pdf .
-
-examples/stamp:
-       -test -d examples || $(mkinstalldirs) examples
-       touch $@
-
-install_data: install_always \
-             $(make_install_pdfdoc) $(make_install_shipped_htmldoc) \
-             $(make_install_examples)
-
-install_always: stamp-strip $(NORMALFILES)
-       -test -d $(DESTDIR)$(tmacdir) || $(mkinstalldirs) $(DESTDIR)$(tmacdir)
-       for f in $(NORMALFILES); do \
-         $(RM) $(DESTDIR)$(tmacdir)/$$f; \
-         $(INSTALL_DATA) $(srcdir)/$$f $(DESTDIR)$(tmacdir)/$$f; \
-       done
-       for f in $(STRIPFILES); do \
-         $(RM) $(DESTDIR)$(tmacdir)/$$f; \
-         $(INSTALL_DATA) $$f-s $(DESTDIR)$(tmacdir)/$$f; \
-       done
-
-install_pdfdoc:
-# Since this uses examples/, it's in install_pdfexamples
-
-install_shipped_htmldoc: install_always $(HTMLDOCFILES)
-       -test -d $(DESTDIR)$(htmldocdir)/mom \
-         || $(mkinstalldirs) $(DESTDIR)$(htmldocdir)/mom
-       for f in $(HTMLDOCFILES_); do \
-         $(RM) $(DESTDIR)$(htmldocdir)/mom/$$f; \
-         $(INSTALL_DATA) $(srcdir)/momdoc/$$f \
-           $(DESTDIR)$(htmldocdir)/mom/$$f; \
-       done
-
-
-install_examples: install_examples_always $(make_install_pdfexamples)
-
-install_examples_always: $(EXAMPLEFILES)
-       -test -d $(DESTDIR)$(exampledir)/mom \
-         || $(mkinstalldirs) $(DESTDIR)$(exampledir)/mom
-       for f in $(EXAMPLEFILES_); do \
-         $(RM) $(DESTDIR)$(exampledir)/mom/$$f; \
-         $(INSTALL_DATA) $(srcdir)/examples/$$f \
-           $(DESTDIR)$(exampledir)/mom/$$f; \
-       done
-
-install_pdfexamples: install_examples_always $(PROCESSEDEXAMPLEFILES)
-       for f in $(PROCESSEDEXAMPLEFILES_); do \
-         $(RM) $(DESTDIR)$(exampledir)/mom/$$f; \
-         $(INSTALL_DATA) examples/$$f $(DESTDIR)$(exampledir)/mom/$$f; \
-       done
-       -test -d $(DESTDIR)$(pdfdocdir) \
-         || $(mkinstalldirs) $(DESTDIR)$(pdfdocdir)
-       for f in $(PDFDOCFILE); do \
-         $(RM) $(DESTDIR)$(pdfdocdir)/$$f; \
-         ln -s $(exampledir)/mom/$$f $(DESTDIR)$(pdfdocdir)/$$f; \
-       done
-
-stamp-strip: $(STRIPFILES)
-       for f in $(STRIPFILES); do \
-         $(RM) $$f-s; \
-         LANG=C LC_ALL=C \
-           sed -f $(top_srcdir)/tmac/strip.sed $(srcdir)/$$f >$$f-s; \
-       done
-       touch $@
-
-uninstall_sub: uninstall_always \
-               $(make_uninstall_pdfdoc) $(make_uninstall_shipped_htmldoc) \
-               $(make_uninstall_examples)
-
-uninstall_always:
-       -for f in $(NORMALFILES) $(STRIPFILES); do \
-         $(RM) $(DESTDIR)$(tmacdir)/$$f; \
-       done
-
-uninstall_pdfdoc: uninstall_always
-# Since that used examples/, it's in uninstall_pdfexamples
-
-uninstall_shipped_htmldoc: uninstall_always
-       -for f in $(HTMLDOCFILES_); do \
-         $(RM) $(DESTDIR)$(htmldocdir)/mom/$$f; \
-       done
-       -test -d $(DESTDIR)$(htmldocdir)/mom && \
-         rmdir $(DESTDIR)$(htmldocdir)/mom
-
-uninstall_examples: uninstall_examples_always $(make_uninstall_pdfexamples)
-       -test -d $(DESTDIR)$(exampledir)/mom && \
-         rmdir $(DESTDIR)$(exampledir)/mom
-
-uninstall_examples_always:
-       -for f in $(EXAMPLEFILES_); do \
-         $(RM) $(DESTDIR)$(exampledir)/mom/$$f; \
-       done
-
-uninstall_pdfexamples: uninstall_examples_always
-       -for f in $(PDFDOCFILE); do \
-         $(RM) $(DESTDIR)$(pdfdocdir)/$$f; \
-       done
-       -for f in $(PROCESSEDEXAMPLEFILES_); do \
-         $(RM) $(DESTDIR)$(exampledir)/mom/$$f; \
-       done
index bccb599..a5fd76b 100644 (file)
@@ -1,10 +1,63 @@
     -*- text -*-
-    Copyright (C) 2004-2014  Free Software Foundation, Inc.
+    Copyright (C) 2004-2018  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.
 
+Release 2.4
+-----------
+General bug fix release, with an overhaul of float, image, and
+pre-processor handling to correct inconsistencies in spacing,
+indents, labels, and captions.  Corrects page numbering issue in
+"Lists of..." when pre-processor material is floated and defered.
+
+Release 2.3
+-----------
+Addition of DOCTYPE SLIDES and associated macros
+  NEWSLIDE
+  PAUSE
+  TRANSITION for slide presentations processed with gropdf.
+Fixes and improvements to nested lists (ITEM now takes a spacing
+arg), indents (IB), NEWPAGE (aliased as NEWSLIDE).  Addition
+of CENTER_BLOCK (center blocks of type over whole line length
+regardless of indents).  Tighten up graphical object macros.
+Addition of macros to handle hanging punctuation.  .COLOR preferred
+to .gcolor in om.tmac.  Changes to HEADER to handle printing of both
+headers and footers when DOCTYPE SLIDES.
+
+Release 2.2
+-----------
+Addition of flex-spacing (flexible vertical whitespace).  Fixes and
+improvements to positioning of floats, images, and pre-processor
+material.  Addition of TARGET (PDF target) argument to floats,
+images, and pre-processor material.  Improvements to autolabelling.
+
+Release 2.1-b
+-------------
+Fix to handling of kern units.  Updated copyright info.
+
+Release 2.1-a
+-------------
+Expanded labelling facilities to include floats and
+quotes/blockquotes.  Improvements to TOC handling.
+
+Release 2.1
+-----------
+Expanded support for doc-covers, covers, and docheaders:
+  - control macros for formatting every element separately (title,
+    subtitle, author, etc.); formatting options include family,
+    font, size, color, quad, caps, smallcaps and underscoring
+  - (DOC_)COVERTEXT for setting blocks of type on cover pages
+  - (DOC_)COVER_IMAGE for putting full page or small images on cover
+    pages
+
+New <ELEMENT>_STYLE macros that allow grouping of style parameters
+for most document elements into a single macro using keyword/value
+pairs.
+
+Smallcaps, with the ability to control size, weight, and width.
+
 Release 2.0-c
 -------------
 Mom now has full support for eqn, pic, and tbl, as well as
index 0949188..d558eb7 100644 (file)
@@ -1,10 +1,10 @@
     -*- txt -*-
-    Copyright 2004-201 Free Software Foundation, Inc.
+    Copyright 2004-2018 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.
 
-Version 2.0
-
-(nothing yet)
+- cutarounds
+- clickable footnote and endnote markers
+- indexing
index 15d8845..aee4b03 100644 (file)
@@ -9,7 +9,7 @@ K1L 6X6
 ========================================================================
 
 The groff macro file om.tmac and the html documentation pertaining to
-it are Copyright (C) 2004-2014 Peter Schaffter.
+it are Copyright (C) 2004-2018 Peter Schaffter.
 
 om.tmac is issued under the GNU General Public License, a full copy of
 which can be had at
diff --git a/contrib/mom/examples/README-fr.txt b/contrib/mom/examples/README-fr.txt
new file mode 100644 (file)
index 0000000..ddf572b
--- /dev/null
@@ -0,0 +1,120 @@
+     -*- mode: text; coding: utf-8; -*-
+    Copyright (C) 2014-2018 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.
+
+========================================================================
+
+Les fichiers dans ce répertoire vous permettent de voir mom en pleine
+action.
+
+Si vous avez téléchargé et décompressé une version de mom depuis sa
+page d'accueil, vous verrez qu'aucun exemple n'est accompagné du
+fichier PDF (.pdf) correspondant, comme c'est le cas sur les versions
+pré-compilées de groff, ou groff compilé à partir des sources.
+
+Je n'ai pas inclu les PDF parce que je voulais conserver l'archive mom
+aussi petite que possible. Pour générer les PDF, traitez les fichiers
+avec pdfmom(1).
+
+    pdfmom mom-pdf.mom > mom-pdf.pdf
+    pdfmom sample_docs.mom > sample_docs.pdf
+    pdfmom slide-demo.mom > slide-demo.pdf
+    pdfmom -k letter.mom > letter.pdf
+    pdfmom -k mon_premier_doc.mom > mon_premier_doc.pdf
+    pdfmom -k typesetting.mom > typesetting.pdf
+
+Les fichiers
+------------
+
+Tous les fichiers sont configurés pour le format lettre US, exceptés
+mom-pdf.mom et mon_premier_doc.mom, qui utilisent le format A4.
+
+***typesetting.mom**
+
+Le fichier typesetting.mom montre l'utilisation d'éléments de
+composition typographique: tabulations, tabulations intégrées dans des
+chaînes de caractères, remplissage de lignes, texte sur plusieurs
+colonnes et différents styles d'indentation; ainsi que certaines
+subtilités et réglages précis disponibles via des macros et des
+échappements en ligne ("inline escape", des commandes insérées
+directement dans le texte, par opposition aux macros).
+
+Comme ce fichier montre également l'utilisation d'une petite image au
+milieu d'un texte et que cette image est la mascotte favorite de tout
+le monde -- Tux, le fichier PDF de cette image, penguin.pdf, a été
+ajouté dans ce répertoire.
+
+***sample_docs.mom***
+
+Le fichier sample_docs.mom montre en exemple les trois styles de
+documents apportés par les macros de formattage de document de mom,
+ansi que l'utilisation de COLLATE. Il montre également certaines
+fonctionnalités PDF de mom dont l'écriture d'une ébauche de nouvelle
+ou des liens cliquables dans une table des matières.
+
+Le dernier exemple démontre, par un texte séparé en deux colonnes, la
+souplesse de mom pour la conception de document.
+
+Le PRINTSTYLE de ce fichier est TYPESET et vous donne une idée du
+comportement par défaut de mom pour la composition typographique de
+document.
+
+Si vous souhaitez voir comment mom traite le même fichier quand
+PRINTSTYLE est TYPEWRITE (c'est-à-dire dactylographié, avec espace
+double) remplacez .PRINTSTYLE TYPESET par .PRINTSTYLE TYPEWRITE au
+début du fichier.
+
+***letter.mom***
+
+Ceci est simplement l'exemple du tutorial de momdocs, prêt à être vu.
+
+***slide-demo.mom***
+
+Le fichier slide-demo.mom montre une présentation de diapositives
+avec des effets PAUSE et TRANSITION.  Le fichier .pdf généré avec
+pdfmom devrait être ouvert en mode Présentation d'un lecteur PDF
+(Okular, Evince, Acroread).  Notez que pas tous les effets de
+transition sont disponibles pour tous les lecteurs PDF.  
+
+***mon_premier_doc.mom***
+
+Le fichier mon_premier_doc.mom est un exemple simple en français
+montrant l'utilisation d'éléments de formattage courants: titres de
+section, paragraphes, listes, table des matières et liens PDF
+cliquables. Il doit être généré avec l'option -k du fait de la
+présence de caractères accentués.
+
+Un certain nombre de réglages ont également été changés pour ce
+document en français:  ATTRIBUTE_STRING est utilisé pour remplacer
+"by" par "par" en tête de document (là où le titre et l'auteur sont
+affichés). TOC_HEADER_STRING sert à modifier le titre de la table des
+matières en "Table des matières" plutôt que "Table of Content". Enfin,
+le paramètre de configuration INDENT_FIRST_PARAS est activé afin
+d'indenter le premier paragraphe de chaque section -- ceci est l'usage
+en typographie française.
+
+***mom-pdf.mom***
+
+Le manuel "Producing PDFs with mom and groff".
+
+***mom.vim***
+
+Les règles de coloration syntaxique vim sont baséés sur celles
+fournies par Christian V. J. Brüssow (cvjb@cvjb.de). Copiez le fichier
+mom.vim dans votre répertoire ~/.vim/syntax directory; ensuite,
+autorisez la coloration syntaxique si ce n'est pas encore le cas:
+
+  :syntax enable
+ou
+  :syntax on
+
+***elvis_syntax.new***
+
+Ceux qui utilisent elvis, le clone de vi, peuvent directement
+copier-coller le contenu de ce fichier dans leur elvis.syn. Tous les
+fichiers ayant l'extension .mom auront la coloration syntaxique.  Les
+règles dans elvis_syntax ne sont pas exhaustive, mais aideront
+beaucoup à rendre les fichiers mom plus lisibles.
index 0a7f74b..633f089 100644 (file)
@@ -1,5 +1,5 @@
-     -*- text -*-
-    Copyright (C) 2004-201 Free Software Foundation, Inc.
+    -*- mode: text; coding: utf-8; -*-
+    Copyright (C) 2004-2018 Free Software Foundation, Inc.
 
     Copying and distribution of this file, with or without modification,
     are permitted in any medium without royalty provided the copyright
@@ -18,16 +18,18 @@ I haven't included the PDF output because I want to keep the mom
 archive as lean as possible.  To view the PDF output, process the
 files with pdfmom(1).
 
-    pdfmom letter.mom > letter.pdf
     pdfmom mom-pdf.mom > mom-pdf.pdf
     pdfmom sample_docs.mom > sample_docs.pdf
-    pdfmom typesetting.mom > typesetting.pdf
+    pdfmom slide-demo.mom > slide-demo.pdf
+    pdfmom -k letter.mom > letter.pdf
+    pdfmom -k mon_premier_doc.mom > mon_premier_doc.pdf
+    pdfmom -k typesetting.mom > typesetting.pdf
 
 The files themselves
 --------------------
 
-All are set up for US letter papersize except mom-pdf.mom, which
-uses A4.
+All are set up for US letter papersize except mom-pdf.mom and
+mon_premier_doc.mom, which uses A4.
 
 ***typesetting.mom**
 
@@ -64,6 +66,29 @@ the file.
 This is just the tutorial example from the momdocs, ready for
 previewing.
 
+***slide-demo.mom***
+
+The file, slide-demo.mom, demonstrates a slide presentation with
+PAUSE and TRANSITION effects.  The .pdf created by pdfmom should be
+opened in Presentation Mode in a PDF reader (e.g. Okular, Evince,
+Acroread).  Note that not all transition effects are available in
+all PDF readers.
+
+***mon_premier_doc.mom***
+
+The file, mon_premier_doc.mom, is a simple example in French showing
+the use of common elements: section headings, paragraphs, lists, table
+of contents and clickable links.  It should be generated with option -k
+as there are some accented letters.
+
+A few settings were also changed for this French document:
+ATTRIBUTE_STRING is used to replace "by" by "par" in the document
+header (where the title and the author are displayed).
+TOC_HEADER_STRING is used to modity the Table of Content title to
+"Table des matières". And finally, INDENT_FIRST_PARAS is used to
+indent the first paragraph of a section -- this is the usual
+convention in French typesetting.
+
 ***mom-pdf.mom***
 
 The manual, Producing PDFs with mom and groff.
index 7b29a04..68a0c35 100644 (file)
@@ -1,4 +1,4 @@
-" Copyright (C) 2004-2014 Free Software Foundation, Inc.
+" Copyright (C) 2004-2018 Free Software Foundation, Inc.
 "
 " Copying and distribution of this file, with or without modification,
 " are permitted in any medium without royalty provided the copyright
index eb1aae7..fd63275 100644 (file)
@@ -1,4 +1,4 @@
-" Copyright (C) 2004-201 Free Software Foundation, Inc.
+" Copyright (C) 2004-2018 Free Software Foundation, Inc.
 "
 " Copying and distribution of this file, with or without modification,
 " are permitted in any medium without royalty provided the copyright
index a6e19b6..1d1eac5 100644 (file)
@@ -1,6 +1,6 @@
-.\" -*- mode: troff; coding: utf-8; -*-
-.
-\# Copyright (C) 2004-201 Free Software Foundation, Inc.
+.\" -*- mode: text; coding: utf-8; -*-
+\#
+\# Copyright (C) 2004-2018 Free Software Foundation, Inc.
 \#
 \# Copying and distribution of this file, with or without modification,
 \# are permitted in any medium without royalty provided the copyright
@@ -40,3 +40,7 @@ legislation that would cripple or render illegal open source
 development.
 .CLOSING
 Sincerely,
+.\" Local Variables:
+.\" mode: nroff
+.\" End:
+.\" vim: filetype=groff:
index c0aea92..17c0b4c 100644 (file)
@@ -1,5 +1,6 @@
-.\" -*- nroff -*-
-.\" Copyright (C) 2012-2014  Free Software Foundation, Inc.
+.\" -*- mode: text; coding: utf-8; -*-
+.\"
+.\" Copyright (C) 2012-2018 Free Software Foundation, Inc.
 .\"
 .\" This file is part of mom, which is part of groff, a free software
 .\" project.
@@ -8,68 +9,93 @@
 .\" GNU General Public License as published by the "Free Software
  \" Foundation", version\~2.
 .\"
-.\" The license text is available in the internet at
+.\" The license text is available on the internet at
 .\" <http://www.gnu.org/licenses/gpl-2.0.html>
 .\"
-.PAPER     A4
+.PAPER A4
 .\" Reference macros (metadata)
 .TITLE     "Producing PDFs" "with groff and mom"
 .PDF_TITLE "\*[$TITLE]
-.AUTHOR    "\v'-.5v'\*[UP 4p]Deri James" \
-           "\v'-.5v'\*[UP 8p]and" \
-           "\v'-.5v'\*[UP 11p]Peter Schaffter"
-.MISC      "This file is part of groff." \
-           ".sp .25v" \
-           "groff is free software; you can redistribute it" \
-           "and\*[FU3]/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." \
-           ".sp .25v" \
-           "You should have received a copy of the GNU" \
-           "General Public License along with this program." \
-           "If not, see:" \
-           ".sp .25v" \
-           ".IL 2P" \
-           ".PDF_WWW_LINK http://www.gnu.org/licenses/" \
-           ".IQ CLEAR"
-.COPYRIGHT "20\*[BU3]1\*[BU2]2 Free Software Foundation
+.COPYRIGHT "20\*[BU3]1\*[BU2]5, 20\*[BU3]1\*[BU2]7 Free Software Foundation
+.AUTHOR "Deri James" "\*[UP .5p]and" "Peter Schaffter"
+.\" Cover author style
+.COVER_AUTHOR_STYLE \
+  LEAD 15 \
+  SPACE -.5v
+.\" Docheader author style
+.AUTHOR_STYLE \
+ LEAD 14 \
+ SPACE -.75
 .ATTRIBUTE_STRING ""  \" Don't print 'by'
+.\"
 .PDF_BOOKMARKS_OPEN 2
-.\" Cover and page header
-.COVER       TITLE AUTHOR COPYRIGHT MISC
-.HEADER_LEFT "James, Schaffter"
-.\" Page, style, formatting
+.\" Formatting style, margins
 .PRINTSTYLE TYPESET
 .L_MARGIN   2.5c
 .R_MARGIN   2.5c
 .B_MARGIN   2.5c
-.\"
+.\" General defaults
 .FAM      H
 .FT       R
 .PT_SIZE  10.5
 .AUTOLEAD 3
-.PARA_INDENT 0  \" Because we're spacing paragraphs.
+.PARA_INDENT 0  \" No indent because we're spacing paragraphs.
+.\" Copyright notice
+.COVERTEXT
+.SP .5v
+.QUAD CENTER
+.HY off
+.IB 8P
+This file is part of groff.
+.SP .5v
+Groff is free software.  You can redistribute it
+and\*[FU3]/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.
+.SP .5v
+You should have received a copy of the GNU
+General Public License along with this program.
+If not, see:
+.SP .25v
+.PDF_LINK_COLOR 0.0 0.3 0.9
+.PDF_WWW_LINK http://www.gnu.org/licenses/
+.IQ CLEAR
+.HY
+.COVERTEXT end
+.\" Cover and page header
+.COVER TITLE AUTHOR COPYRIGHT COVERTEXT
+.HEADER_LEFT "James, Schaffter"
 .\"
 .COVER_LEAD     +3.5
 .DOCHEADER_LEAD +3.5
 .\" Color for code snippets
 .NEWCOLOUR dark-grey RGB #343434
 .\" Make QUOTE look like CODE
-.QUOTE_FAMILY C
-.QUOTE_FONT   B
-.QUOTE_SIZE   +1.5
-.QUOTE_COLOR  dark-grey
-.QUOTE_INDENT 9p
+.QUOTE_STYLE \
+  FAMILY C \
+  FONT   B \
+  SIZE   +1.5 \
+  COLOR  dark-grey \
+  INDENT 9p
 .\"
-.CODE_FONT  B
-.CODE_SIZE  115
-.CODE_COLOR dark-grey
-.CONDENSE   87
+.CODE_STYLE \
+  FONT  B \
+  SIZE  115 \
+  COLOR dark-grey
+.CONDENSE 87 \" Condense percentage used in COD
 .\"
-.HEADING_STYLE 1 NUMBER FONT B SIZE +1 BASELINE_ADJUST \n[.v]/5
-.HEADING_STYLE 2 NUMBER FONT I SIZE +.25 BASELINE_ADJUST \n[.v]/5
+.HEADING_STYLE 1 \
+  NUMBER \
+  FONT B \
+  SIZE +1 \
+  BASELINE_ADJUST \n[.v]/5
+.HEADING_STYLE 2 \
+  NUMBER \
+  FONT I \
+  SIZE +.25 \
+  BASELINE_ADJUST \n[.v]/5
 .\"
 .FOOTNOTE_SIZE -1
 .\" Character definitions for program names, opts, etc.
 .char \[gropdf]           \*[BD]gropdf\*[PREV]
 .char \[grops]            \*[BD]grops\*[PREV]
 .char \[man]              \*[BD]man\*[PREV]
-.char \[-mom]             \*[BD]-mom\*[PREV]
+.char \[-mom]             \*[BD]\-mom\*[PREV]
 .char \[mom]              \*[BD]mom\*[PREV]
-.char \[-mpdfmark]        \*[BD]-mpdfmark\*[PREV]
+.char \[-mpdfmark]        \*[BD]\-mpdfmark\*[PREV]
 .char \[ms]               \*[BD]ms\*[PREV]
 .char \[pdfmom]           \*[BD]pdfmom\*[PREV]
 .char \[pdfroff]          \*[BD]pdfroff\*[PREV]
-.char \[-P-e]             \*[BD]-P-e\*[PREV]
-.char \[-P-p<papersize>]  \*[BD]-P-p<papersize>\*[PREV]
+.char \[-P-e]             \*[BD]\-P\-e\*[PREV]
+.char \[-P-p<papersize>]  \*[BD]\-P\-p<papersize>\*[PREV]
 .char \[ps2pdf]           \*[BD]ps2pdf\*[PREV]
 .char \[psselect]         \*[BD]psselect\*[PREV]
-.char \[-T]               \*[BD]-T\*[PREV]
-.char \[-Tpdf]            \*[BD]-Tpdf\*[PREV]
-.char \[-Tps]             \*[BD]-Tps\*[PREV]
+.char \[-T]               \*[BD]\-T\*[PREV]
+.char \[-Tpdf]            \*[BD]\-Tpdf\*[PREV]
+.char \[-Tps]             \*[BD]\-Tps\*[PREV]
 .\" Strings for inline code
-.ds cod  "\E*[CODE]\&\E*[COND]
-.ds codx "\E*[CONDX]\E*[CODE off]\&
+.ds cod  \E*[CODE]\&\E*[COND]
+.ds codx \E*[CONDX]\E*[CODE off]\&
 .\" Paragraph spacing
-.de PP2
-. ALD .3v
-. PP
-..
+.PARA_SPACE .3v
 .\" Wrapper around QUOTE
 .de COD
 . QUOTE
 .SPACE_TOC_ITEMS
 .AUTO_RELOCATE_TOC
 .TOC_ENTRY_STYLE 2 FONT I
-.TOC_LEAD 14
+.TOC_LEAD 14.5 ADJUST
+.TOC_PADDING 1
 .\"
-.DOCHEADER_ADVANCE 5c \" Begin this distance down from top of page
+.DOCHEADER_ADVANCE 5c \" Begin docheader this distance down from top of page
 .\"
+.NO_SHIM
 .START
 .\"
+.SP .5c
 .HEADING 1 NAMED intro "Introduction"
 .PP
 .RW .12
@@ -135,7 +161,7 @@ or to remote web pages
 .PDF_LINK external PREFIX ( SUFFIX ), "external links"
 and the generation of a clickable document outline that appears in
 the Contents panel of most PDF viewers.
-.PP2
+.PP
 .RW .01
 Using \[groff] and \[mom] to produce PDF documents results in the
 automatic generation of clickable document outlines (discussed
@@ -151,13 +177,13 @@ when the document is viewed at the screen (see
 Groff provides more than one way to generate PDF documents from
 files formatted with the \[mom] macros.  One is to call \[groff]
 directly, either with
-.COD "groff [-Tps] -mom -m pdfmark doc.mom | ps2pdf - doc.pdf
+.COD "groff [\-Tps] \-mom \-m pdfmark doc.mom | ps2pdf \- doc.pdf
 which pipes output from the \[grops] PostScript driver through
 \[ps2pdf], or
-.COD "groff -Tpdf -mom doc.mom > doc.pdf
+.COD "groff \-Tpdf \-mom doc.mom > doc.pdf
 which uses the native PDF driver, \[gropdf].  Alternatively, one may
 call the wrapper
-.COD "pdfroff -mom -mpdfmark --no-toc doc.mom > doc.pdf
+.COD "pdfroff \-mom \-mpdfmark \-\-no-toc doc.mom > doc.pdf
 A fourth, preferred method is to use
 .PDF_LINK pdfmom SUFFIX , "\[pdfmom]"
 which is strongly recommended since it implements the full range
@@ -169,7 +195,7 @@ One reason to prefer using the native PDF driver (via \[pdfmom] or
   "paper and page setup macros"
 do not require a corresponding \[-P-p<papersize>] flag on the
 command line.
-.PP2
+.PP
 There are other minor differences between the methods, discussed
 .PDF_LINK pdf-diff SUFFIX . "here"
 .RW 0
@@ -179,7 +205,6 @@ Often, but not always, links in the body of a PDF document point
 to headings elsewhere in the same document.  Creating these links
 is a simple process.  First, identify the places to link to
 ("destinations"), then link to them from any place in the document.
-.NO_SHIM
 .HEADING 2 NAMED naming "Creating destination points at headings"
 .PP
 The first step in creating links to a heading is to give the
@@ -193,7 +218,7 @@ would, in addition to printing the head in the body of the document,
 identify the introduction by the unique id, "intro"\*[BU6].  This
 id, or name, can then be used to create links to the introduction
 from any part of the document.
-.PP2
+.PP
 Furthermore, \*[cod]NAMED\|<id>\*[codx] stores the text of the
 heading for use later on when linking to it (see
 .PDF_LINK internal SUFFIX ). +
@@ -209,13 +234,14 @@ just above the table in the source file.  As with
 \*[cod]HEADING\*[codx], \*[cod]<id>\*[codx] is any unique name.
 \*[cod]<text>\*[codx] is optional. \*[cod]<id>\*[codx] can now be linked
 to from anywhere in the document.
+.SP 2.5p
 .HEADING 2 NAMED internal "Creating internal links"
 .PP
 Internal links are clickable text areas that allow you to jump to
 named destinations within a document.  (See
 .PDF_LINK external "here"
 for a description of external links.)
-.PP2
+.PP
 Internal links are created with the macro \*[cod]PDF_LINK\*[codx],
 which takes the form
 .COD "\&.PDF_LINK <id> [PREFIX <text>] [SUFFIX <text>] \
@@ -225,23 +251,23 @@ the document (see
 .PDF_LINK naming +
 and
 .PDF_LINK target SUFFIX ). +
-.PP2
+.PP
 \*[cod]PREFIX\|<text>\*[codx] and \*[cod]SUFFIX\|<text>\*[codx], both or
 either of which are optional, are printed around the clickable area
 but do not form part of the link itself.
-.PP2
+.PP
 \*[cod]<hotlink text>\*[codx] is the text that should be clickable,
 identifiable in the PDF document by the colour assigned to links
 (see
 .PDF_LINK colour SUFFIX ). +
 .PDF_TARGET expando
-.PP2
+.PP
 If the hotlink text ends in \*[cod]\[dq]*\[dq]\*[codx]\*[BU9],
 the asterisk is replaced by the text of the destination
 point, assuming it's a heading.  If the hotlink text ends in
 \*[cod]\[dq]+\[dq]\*[codx]\*[BU9], the replacement text is surrounded
 by quotes.
-.PP2
+.PP
 Using our
 .PDF_LINK intro-ex SUFFIX , "HEADING example"
 .RW .1
@@ -256,7 +282,7 @@ In the text, the link would look like this:
 External links are clickable text areas whose destination is a
 URL.  Clicking on them causes a browser window to pop up with the
 destination address.
-.PP2
+.PP
 The format of the macro to create external links is similar to the
 one for creating internal links:
 .COD "\&.PDF_WWW_LINK <url> [PREFIX <text>] [SUFFIX <text>] [\[dq]<hotlink text>\[dq]]"
@@ -265,7 +291,7 @@ one for creating internal links:
 exactly the same meaning, as does \*[cod]<hotlink text>\*[codx],
 which furthermore accepts the same expandos, \*[cod]\[dq]+\[dq]\*[codx] and
 \*[cod]\[dq]*\[dq]\*[codx].
-.PP2
+.PP
 .RW .1
 If no hotlink text is given, then \*[cod]<url>\*[codx] is
 used as the text.  If hotlink text is given and ends in
@@ -303,7 +329,7 @@ both lead to mom using
 .PDF_LINK colour red
 .PDF_LINK_COLOR
 links.
-.PP2
+.PP
 The default colour can be restored by calling
 \*[cod]PDF_LINK_COLOR\*[codx] with no parameter.
 .FLOAT
@@ -317,24 +343,24 @@ be processed with
 \[oq]\[pdfmom]\~\[-Tps]\[cq].
 .IBQ
 .FLOAT off
-.NO_SHIM off
+.SP .5v
 .HEADING 1 NAMED outline "The PDF Outline"
 .PP
 Most PDF viewers provide a panel that displays a document's outline,
 similar to a table of contents.  Clicking on an entry navigates
 directly to the appropriate place in the document.
-.PP2
+.PP
 Mom generates PDF outlines the same way she populates
 her own table of contents: by intercepting calls to the
 \*[cod]HEADING\*[codx] macro, as well as to the various title
 and chapter macros used in namimg documents, and allocating each a
 hierarchic level.
-.PP2
+.PP
 Covers, titles/chapters, and the table of contents are all
 assigned to level 1\*[BU5].  Subsequent headings are assigned to
 n\*[UP 1p]+\*[DOWN 1p]\*[BU4]1, where n is the level given to
 \*[cod]HEADING\*[codx].
-.PP2
+.PP
 .RW .22
 The PDF outline can sensibly recover from skipped or omitted heading
 levels; the printed table of contents cannot.  Users are therefore
@@ -348,13 +374,13 @@ visible in the PDF outline.  Closed \%levels have at least one level
 beneath them that is not visible unless the closed link is clicked.
 It is common for only the first two levels to be open so the outline
 doesn't look cluttered.
-.PP2
+.PP
 To establish which levels should be open by default when a document
 loads, use
 .COD "\&.PDF_BOOKMARKS_OPEN n
 where \*[cod]n\*[codx] is a number specifying at which level all
 subsequent ones should be closed.
-.PP2
+.PP
 If, at any point in the document, you specify
 .COD "\&.PDF_BOOKMARKS_OPEN NO  \e\[dq] or any other text argument
 then all subsequent bookmarks will be closed until
@@ -368,6 +394,7 @@ Mom's default is to collect entries, so if the command is placed at
 the start of a document, it \%disables entry collection completely.
 Elsewhere, it suspends collection until you re-enable it with
 .COD "\&.PDF_BOOKMARKS  \e\[dq] i.e. with no parameter
+.SP -1
 .HEADING 2 NAMED pdf:title "The PDF window title"
 .PP
 While not strictly part of the PDF outline, the title of a document
@@ -385,7 +412,7 @@ can remove the window title by issuing
 .COD ".PDF_TITLE \[dq]\[dq] \e\[dq] ie. with a blank argument
 .IBQ
 .FLOAT off
-.NO_SHIM
+.SP .5v
 .HEADING 1 NAMED toc "Tables of Contents"
 .RLD .5v
 .HEADING 2 NAMED toc:gen "Generating a Table of Contents 
@@ -401,7 +428,7 @@ SUFFIX ). "mom documentation"
 When the file is processed and loaded in a viewer, entries in the
 Table of Contents will be clickable links.
 .RW 0
-.PP2
+.PP
 Whichever link colour is active at the end of the document, prior to
 \*[cod]TOC\*[codx], will be used for the \%Table of Contents
 links.
@@ -412,11 +439,11 @@ file, the Table of Contents is printed at the end of the document.
 When this is not desirable, the PostScript output from \[groff]
 must be processed with \[psselect] in order to place the TOC in the
 preferred location.
-.PP2
+.PP
 When using mom and \[groff]'s native pdf device (via \[pdfmom] or
 \[groff] \[-Tpdf]), positioning of the Table of Contents can be done
 within the source file.
-.PP2
+.PP
 The command to control the placement of the TOC is
 .COD "\&.AUTO_RELOCATE_TOC [<position>]
 where the optional \*[cod]<position>\*[codx] can be one of these
@@ -441,16 +468,13 @@ AFTER_COVER\*[SIZE]
 It is normally not necessary to supply a keyword, since
 \*[cod]AUTO_RELOCATE_TOC\*[codx] places the TOC after the DOC_COVER,
 if there is one, or the first COVER when no DOC_COVER is present.
-.NO_SHIM off
 In rare instances where it is desirable to place the TOC somewhere
 else in the document, there are two low-level commands,
-.SP .5v
-\*[FWD 6p]\*[cod].TOC_BEFORE_HERE\*[codx]
+\*[cod].TOC_BEFORE_HERE\*[codx]
 \ \*[SIZE -.5]and\*[SIZE]\ \"
 \*[cod].TOC_AFTER_HERE\*[codx]
-.SP .5v
 which place the TOC either before or after the current page.
-.PP2
+.PP
 These last two commands have a small catch: although the TOC will
 appear where specified, the \%"Contents" entry in the PDF outline,
 which observes a hierarchy of levels, will assign the TOC to
@@ -467,7 +491,6 @@ for creating PDF files with \[groff]: the original method, ie.
 passing the \[-Tps] and \[-mpdfmark] options to \[groff] (or using
 \[pdfroff], which does this for you); or the newer \[-Tpdf], which
 produces PDF files natively.
-.NO_SHIM
 .HEADING 2 NAMED fwd:ref "The problem of forward references"
 .PP
 .EW .2
@@ -483,7 +506,7 @@ with one of the expandos,
 Mom doesn't know what text to put in the expando because it has not
 yet been defined.  This means that \[groff] must be run multiple
 times to find the unknown text.
-.PP2
+.PP
 .EW .2
 The program \[pdfroff] exists to handle these multiple runs, but it
 imposes some limitations on the PDF features available with \[mom].
@@ -494,7 +517,7 @@ imposes some limitations on the PDF features available with \[mom].
 preferred, trouble-free way to generate PDF documents from a mom
 source file.  Like \[pdfroff], it is a frontend to \[groff] and
 accepts all the same options (see \[man]\~\[groff]).
-.PP2
+.PP
 .EW .2
 Called as-is, \[pdfmom] accepts all the same options as \[groff],
 and requires no additional flags.  PDF generation is performed by
@@ -505,10 +528,10 @@ If a \[-Tps] option is supplied, \[pdfmom] hands control over to
 \[pdfroff], and both \[groff] and \[pdfroff] options may given.
 The resulting PDF is produced from PostScript output fed into
 \[ghostscript].
-.COD "pdfmom -Tps [pdfroff opts [groff opts]] doc.mom > doc.pdf
+.COD "pdfmom \-Tps [pdfroff opts [groff opts]] doc.mom > doc.pdf
 For either invocation, it is not necessary to add \[-mom] or
 \[-mpdfmark], as these are implied.
-.PP2
+.PP
 If Encapsulated PostScript or plain PostScript images have been
 embedded in a document with
 .PDF_WWW_LINK http://www.schaffter.ca/mom/momdoc/images.html#pspic SUFFIX , \
@@ -516,6 +539,7 @@ embedded in a document with
 the \[-Tps] option must be used.  In most other cases, \[pdfmom]
 with no \[-T] flag is preferable.
 .HEADING 2 NAMED papersize "Setting papersize within a source file"
+.PP
 A significant convenience afforded by using \[pdfmom] (or \[groff]
 with the \[-Tpdf] flag) is that papersizes or page dimensions set
 within mom source files (see
@@ -529,7 +553,7 @@ unequal-sized pages.
 .PP
 Several features described in this manual are not available when
 using \[pdfmom] with the \[-Tps] option, or when using \[pdfroff], or
-\[groff]\~\[-Tps]\~\[-mpdfmark].
+\[groff]\~\[-Tps]\~\[-mpdfmark]:
 .SP .25v
 .QUAD LEFT
 .HYPHENATION off
@@ -553,7 +577,7 @@ only accepts colour definitions in decimal notation.
 .LIST OFF
 .IQ
 .HEADING 1 \
-"Comparison of -Tps\*[FU4]/\*[FU2]-mpdfmark with -Tpdf\*[FU4]/\*[FU2]-mom
+"Comparison of \-Tps\*[FU4]/\*[FU2]\-mpdfmark with \-Tpdf\*[FU4]/\*[FU2]\-mom
 .SP .25v
 .IB
 \[-Tps]\*[FU4]/\*[FU2]\[-mpdfmark]
@@ -583,15 +607,14 @@ is not compatible with
 .PDF_WWW_LINK \
   http://www.schaffter.ca/mom/momdoc/docprocessing.html#printstyle \
   "PRINTSTYLE TYPEWRITE"
-underlining (eg of italics)
+underlining (e.g., of italics)
 .ITEM
 generally produces larger files; these can be reduced by piping
 the output through \[ps2pdf]\*[B]
-.RLD .5v
 .FLOAT
 .QUAD LEFT
 .BR_AT_LINE_KERN
-.IQ
+.IL -2P
 .BOX-NOTE (\n[.l]u-6P) 3P
 .EW .3
 \*[BD]Note:\*[PREV] Owing to a known bug, PDF files piped
@@ -599,10 +622,13 @@ through \[ps2pdf] lose some of
 .EW 0
 their metadata, notably the window title set with
 \*[cod]PDF_TITLE\*[codx].
+.SP .75
 .FLOAT off
 .ITEM
-is newer code with less testing\c
-.EL
+is newer code with less testing
 .LIST OFF
-.IQ CLEAR
 .TOC
+.\" Local Variables:
+.\" mode: nroff
+.\" End:
+.\" vim: filetype=groff:
index 79ec75c..340e2c8 100644 (file)
@@ -1,4 +1,4 @@
-" Copyright (C) 2012-201 Free Software Foundation, Inc.
+" Copyright (C) 2012-2018 Free Software Foundation, Inc.
 "
 " Copying and distribution of this file, with or without modification,
 " are permitted in any medium without royalty provided the copyright
diff --git a/contrib/mom/examples/mon_premier_doc.mom b/contrib/mom/examples/mon_premier_doc.mom
new file mode 100644 (file)
index 0000000..ffb1b19
--- /dev/null
@@ -0,0 +1,140 @@
+.\" -*- mode: text; coding: utf-8; -*-
+\#
+\# Copyright (C) 2015-2018 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.
+\#
+\# A very simple document with basic elements: headings, paragraphs,
+\# lists, table of contents and clickable links.
+\# 
+.TITLE "Mon Premier Document"
+.AUTHOR "Cicéron"
+.
+.DOCTYPE    DEFAULT
+.PRINTSTYLE TYPESET
+.
+.PAPER      A4
+.DOC_COVERTITLE "Mon Premier Document"
+.DOC_COVER DOC_COVERTITLE AUTHOR
+.COVER TITLE
+.ATTRIBUTE_STRING "par"
+.TOC_HEADER_STRING "Table des matières"
+.AUTO_RELOCATE_TOC
+.HEADING_STYLE 1 NUMBER
+.HEADING_STYLE 2 NUMBER
+.NO_SHIM
+.START
+\#
+.HEADING 1 "Les différentes versions"
+.PP
+Voir également le chapitre sur 
+.PDF_LINK evolution "les évolutions"
+possibles.
+.HEADING 2 "La version originale"
+.PP
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non
+risus. Suspendisse lectus tortor, dignissim sit amet, adipiscing nec,
+ultricies sed, dolor. Cras elementum ultrices diam. Maecenas ligula
+massa, varius a, semper congue, euismod non, mi. Proin porttitor, orci
+nec nonummy molestie, enim est eleifend mi, non fermentum diam nisl
+sit amet erat. Duis semper. Duis arcu massa, scelerisque vitae,
+consequat in, pretium a, enim. Pellentesque congue. Ut in risus
+volutpat libero pharetra tempor. Cras vestibulum bibendum augue.
+Praesent egestas leo in pede. Praesent blandit odio eu enim.
+Pellentesque sed dui ut augue blandit sodales. Vestibulum ante ipsum
+primis in faucibus orci luctus et ultrices posuere cubilia Curae;
+Aliquam nibh. Mauris ac mauris sed pede pellentesque fermentum.
+Maecenas adipiscing ante non diam sodales hendrerit.
+.PP
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non
+risus. Suspendisse lectus tortor, dignissim sit amet, adipiscing nec,
+ultricies sed, dolor. Cras elementum ultrices diam. Maecenas ligula
+massa, varius a, semper congue, euismod non, mi. Proin porttitor, orci
+nec nonummy molestie, enim est eleifend mi, non fermentum diam nisl
+sit amet erat. Duis semper. Duis arcu massa, scelerisque vitae,
+consequat in, pretium a, enim. Pellentesque congue. Ut in risus
+volutpat libero pharetra tempor. Cras vestibulum bibendum augue.
+Praesent egestas leo in pede. Praesent blandit odio eu enim.
+Pellentesque sed dui ut augue blandit sodales. Vestibulum ante ipsum
+primis in faucibus orci luctus et ultrices posuere cubilia Curae;
+Aliquam nibh. Mauris ac mauris sed pede pellentesque fermentum.
+Maecenas adipiscing ante non diam sodales hendrerit.
+.PP
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non
+risus. Suspendisse lectus tortor, dignissim sit amet, adipiscing nec,
+ultricies sed, dolor. Cras elementum ultrices diam. Maecenas ligula
+massa, varius a, semper congue, euismod non, mi. Proin porttitor, orci
+nec nonummy molestie, enim est eleifend mi, non fermentum diam nisl
+sit amet erat. Duis semper. Duis arcu massa, scelerisque vitae,
+consequat in, pretium a, enim. Pellentesque congue. Ut in risus
+volutpat libero pharetra tempor. Cras vestibulum bibendum augue.
+Praesent egestas leo in pede. Praesent blandit odio eu enim.
+Pellentesque sed dui ut augue blandit sodales. Vestibulum ante ipsum
+primis in faucibus orci luctus et ultrices posuere cubilia Curae;
+Aliquam nibh. Mauris ac mauris sed pede pellentesque fermentum.
+\#
+.HEADING 2 "La version moderne"
+.PP
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non
+risus. Suspendisse lectus tortor, dignissim sit amet, adipiscing nec,
+ultricies sed, dolor. Cras elementum ultrices diam. Maecenas ligula
+massa, varius a, semper congue, euismod non, mi. Proin porttitor, orci
+nec nonummy molestie, enim est eleifend mi, non fermentum diam nisl
+sit amet erat. Duis semper. Duis arcu massa, scelerisque vitae,
+consequat in, pretium a, enim. Pellentesque congue. Ut in risus
+volutpat libero pharetra tempor. Cras vestibulum bibendum augue.
+Praesent egestas leo in pede. Praesent blandit odio eu enim.
+Pellentesque sed dui ut augue blandit sodales. Vestibulum ante ipsum
+primis in faucibus orci luctus et ultrices posuere cubilia Curae;
+Aliquam nibh. Mauris ac mauris sed pede pellentesque fermentum.
+Maecenas adipiscing ante non diam sodales hendrerit.
+.PP
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non
+risus. Suspendisse lectus tortor, dignissim sit amet, adipiscing nec,
+ultricies sed, dolor. Cras elementum ultrices diam. Maecenas ligula
+massa, varius a, semper congue, euismod non, mi. Proin porttitor, orci
+nec nonummy molestie, enim est eleifend mi, non fermentum diam nisl
+sit amet erat. Duis semper. Duis arcu massa, scelerisque vitae,
+consequat in, pretium a, enim. Pellentesque congue. Ut in risus
+volutpat libero pharetra tempor. Cras vestibulum bibendum augue.
+Praesent egestas leo in pede. Praesent blandit odio eu enim.
+Pellentesque sed dui ut augue blandit sodales. Vestibulum ante ipsum
+primis in faucibus orci luctus et ultrices posuere cubilia Curae;
+Aliquam nibh. Mauris ac mauris sed pede pellentesque fermentum.
+Maecenas adipiscing ante non diam sodales hendrerit.
+\#
+.HEADING 1 NAMED evolution "Les évolutions du Lorem"
+.PP
+Trois axes de progressions sont envisageables:
+.LIST
+.SHIFT_LIST 3m
+.ITEM
+Lorem ipsum dolor sit amet.
+.ITEM
+Consectetur adipiscing elit.
+.ITEM
+.PDF_TARGET sed_non_risus
+Sed non risus.
+.LIST OFF
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non
+risus. Suspendisse lectus tortor, dignissim sit amet, adipiscing nec,
+ultricies sed, dolor. Cras elementum ultrices diam. Maecenas ligula
+massa, varius a, semper congue, euismod non, mi. Proin porttitor, orci
+nec nonummy molestie, enim est eleifend mi, non fermentum diam nisl
+sit amet erat. Duis semper. Duis arcu massa, scelerisque vitae,
+consequat in, pretium a, enim. Pellentesque congue. Ut in risus
+volutpat libero pharetra tempor. Cras vestibulum bibendum augue.
+Praesent egestas leo in pede. Praesent blandit odio eu enim.
+Pellentesque sed dui ut augue blandit sodales. Vestibulum ante ipsum
+primis in faucibus orci luctus et ultrices posuere cubilia Curae;
+Aliquam nibh. Mauris ac mauris sed pede pellentesque fermentum.
+Maecenas adipiscing ante non diam sodales hendrerit.
+\#
+.TOC_RV_SWITCH
+.TOC
+.\" Local Variables:
+.\" mode: nroff
+.\" End:
+.\" vim: filetype=groff:
index 3503973..5c25a2a 100644 (file)
@@ -1,4 +1,6 @@
-\# Copyright (C) 2004-2014  Free Software Foundation, Inc.
+.\" -*- mode: text; coding: utf-8; -*-
+\#
+\# Copyright (C) 2004-2018 Free Software Foundation, Inc.
 \#
 \# Copying and distribution of this file, with or without modification,
 \# are permitted in any medium without royalty provided the copyright
@@ -15,7 +17,7 @@
 \#
 \# Since the text throughout is greeked, and groff doesn't know how
 \# to hyphenate all that pseudo-latinate nonsense, I've inserted
-\# discretionary hyphens (\%) into a large number of the the words.
+\# discretionary hyphens (\%) into a large number of the words.
 \# Normally, this isn't necessary.
 \#
 \# The PRINTSTYLE is TYPESET.  If you'd like to see what mom does
 \# subheads and paraheads.  I've turned the feature on merely to
 \# demonstrate it.
 \#
-\# Reference macros (metadata)
+\# Information for the cover pages
+\#
+\# Title, subtitle and copyright for the document cover.
+\#
+.TITLE DOC_COVER \
+  "Sample mom documents"
+.SUBTITLE DOC_COVER \
+  "Three types of mom documents" \
+  "assembled and collated" \
+  "by mom's author"
+.COPYRIGHT DOC_COVER \
+  "2015 Peter Schaffter"
+\#
+\# What appears in the pdf viewer's window title
+\#
+.PDF_TITLE "Sample mom documents"
+\#
+\# Reference macros (metadata) for the first section of the collated
+\# document.
 \#
 .TITLE     "Lake Attica's Shores"
 .SUBTITLE  "A Romance Novel"
 .AUTHOR    "Rosemary Winspeare"
-.COPYRIGHT "2004 Alma Podborski"
-.PDF_TITLE "Sample mom documents"
+.COPYRIGHT "2015 Alma Podborski"
+\#
+\# What to put on the cover for the whole document (in mom-speak,
+\# the "doc cover").  The title, subtitle, and author are what were
+\# given to TITLE DOC_COVER, SUBTITLE DOC_COVER, and COPYRIGHT
+\# DOC_COVER.
 \#
-\# Additional information, for the cover
+.DOC_COVER TITLE SUBTITLE COPYRIGHT
 \#
-.DOC_COVERTITLE "Sample mom Documents"
-.MISC "Three types of mom documents" "assembled and collated by mom's author"
+\# What to put on the first document's title page (in mom-speak, the
+\# "cover").  In this case, we're using the metadata from TITLE,
+\# SUBTITLE, AUTHOR and COPYRIGHT, which will also be used to
+\# generate the docheader (minus the copyright).
+\#
+.COVER TITLE AUTHOR DOCTYPE COPYRIGHT
 \#
 \# Docstyle macros (templates)
 \#
 .DOCTYPE    NAMED "Outline"
-.PRINTSTYLE TYPESET   \" Or TYPEWRITE to preview "typewritten, double-spaced"
+.PRINTSTYLE TYPESET
 .PAPER      LETTER
 \#
-\# What to put on the cover and first title page
-\#
-.DOC_COVER DOC_COVERTITLE MISC 
-.COVER     TITLE AUTHOR DOCTYPE COPYRIGHT
-\#
-\# Style for nested heading levels
+\# Here we style the covers a bit.
+\#
+.DOC_COVER_TITLE_STYLE \
+  SIZE +8 \
+  SMALLCAPS \
+  UNDERLINE 1 3p 
+.DOC_COVER_SUBTITLE_STYLE \
+  FONT I \
+  SIZE +2 \
+  LEAD 18 \
+  SPACE .75v
+.DOC_COVER_COPYRIGHT_SIZE -.5
+\#
+.COVER_TITLE_SIZE +5
+.COVER_ATTRIBUTE_STYLE \
+  SIZE +2 \
+  SPACE .25v
+.COVER_AUTHOR_STYLE \
+  SIZE +2 \
+  LEAD 18
+.COVER_DOCTYPE_STYLE \
+  SIZE +4 \
+  UNDERLINE DOUBLE 1
+.COVER_COPYRIGHT_SIZE -.5
+\#
+\# Here we style the docheader a bit.
+\#
+.SUBTITLE_SPACE .25v
+.DOCTYPE_UNDERLINE 1 2p
+\#
+\# Styles for nested heading levels
 \#
 \# The first two instances of level-1 headings will be paragraph heads
 \# so we set the paragraph head style here, then change it when
 \# level-1 headings become main heads.
 \#
-.HEADING_STYLE 1 FONT BI SIZE +.25
-.HEADING_STYLE 2 FONT B SIZE +.5 BASELINE_ADJUST \n[.v]/8 \" ie 1/8 the leading
+.HEADING_STYLE 1 \
+  FONT BI \
+  SIZE +.75
+.HEADING_STYLE 2 \
+  FONT B \
+  SIZE +.5 \
+  BASELINE_ADJUST \n[.v]/8 \" ie 1/8 the leading
+\#
+.AUTO_RELOCATE_TOC \" Move table of contents to the top of the doc
+.SPACE_TOC_ITEMS   \" Prettify TOC spacing
 \#
-.AUTO_RELOCATE_TOC
-.SPACE_TOC_ITEMS
+\# Begin the document
 \#
 .START
+\#
 .PP
 .HEADING 1 PARAHEAD "A note on the setting"
 Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam
@@ -99,8 +160,15 @@ ut labore et do\%lo\%re magna ali\%quyam erat, sed diam voluptua.
 \#
 \# Change level-1 style and add numbering to levels 1 and 2
 \#
-.HEADING_STYLE 1 FONT B SIZE +1.5 CAPS UNDERSCORE .5 2p QUAD C \
-  NO_SPACE_AFTER BASELINE_ADJUST +0 NUMBER
+.HEADING_STYLE 1 \
+  FONT B \
+  SIZE +1.5 \
+  CAPS \
+  UNDERSCORE .5 2p \
+  QUAD C \
+  NO_SPACE_AFTER \
+  BASELINE_ADJUST +0 \
+  NUMBER
 .HEADING_STYLE 2 NUMBER
 \#
 .HEADING 1 "Part One"
@@ -168,32 +236,30 @@ gubergren, no sea takimata sanctus.
 .PP
 At vero eos et accusam et justo duo do\%lo\%res et ea rebum.  Stet clita
 kasd gubergren.  Sea takimata sanctus est lorem ipsum dolor
-sit amet.  Accusam et justo duo do\%lo\%res et ea rebum
-.SPREAD
+sit amet.  Accusam et justo duo do\%lo\%res et ea rebum.  Diam
+nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna.
 .RIGHT
 \*[BD]\&...end of sample outline\c
 .EL
 .COLLATE
 \#
-\# The .EL after the line "...end of sample outline" ensures that
-\# mom doesn't spring the page trap, which would deposit a header at
-\# the top of the next page.  COLLATE doesn't print a page header
-\# on the first page of a collated document, but if the page trap
-\# has already deposited one there, COLLATE can't undo it.
+\# The '\c /.EL' keeps mom from depositing a line break which,
+\# because "...end of sample outline" falls exactly on the last
+\# baseline of the page, would spring the page trap that sets a
+\# header at the top of the next page.  Since the next page is a
+\# title page, we don't want that.  Normally, this isn't required,
+\# although using it routinely before COLLATE is a good habit.
 \#
-\# Normally, this isn't necessary; here we require it because the
-\# line falls right at the bottom of the page.
-\#
-\# Please notice, too, the use of "\&" before "..."  Whenever an
-\# input line begins with either a period, an apostrophe or a space,
-\# you must precede it with \&, otherwise the line will disappear,
-\# even when, as here, there's an inline escape that starts the
-\# line.
+\# Notice, too, the use of "\&" before "..."  Whenever an input line
+\# begins with either a period, an apostrophe or a space, you must
+\# precede it with \&, otherwise the line will disappear, even when,
+\# as here, there's an inline escape beforehand.
 \#
 \# =====================================================================
 \#
-\# Next, two pages of a chapter, set in DRAFT style, showing the use
-\# of the EPIGRAPH BLOCK macro and the QUOTE macro.
+\# Next, a document composed of two pages of a chapter, set in DRAFT
+\# style, showing the use of the EPIGRAPH BLOCK macro and the QUOTE
+\# macro.
 \#
 \# You'll notice that the starting page number of this "draft" is 1 (in
 \# roman numerals).  COPYSTYLE DRAFT always numbers the first page of a
@@ -214,10 +280,23 @@ sit amet.  Accusam et justo duo do\%lo\%res et ea rebum
 .EPIGRAPH_FONT I       \" Epigraphs are normally set in roman
 .DRAFT_WITH_PAGENUMBER \" Draft/revision info usually goes in the header
 \#
-.COVER_MISC_FAMILY H
-.COVER_MISC_QUAD  RIGHT
+\# Style the title page
+\#
+.COVER_CHAPTER_SIZE +6
+.COVER_CHAPTER_TITLE_STYLE \
+  SIZE +5 \
+  SPACE .25v
+.COVER_MISC_SIZE -.25
+\#
+\# What goes on the title page
+\#
 .COVER CHAPTER+TITLE MISC
 \#
+\# Begin the document
+\#
+.CHAPTER_SIZE +3.5
+.CHAPTER_TITLE_SIZE +5
+.CHAPTER_TITLE_SPACE +3p
 .START
 .EPIGRAPH BLOCK
 Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam
@@ -225,7 +304,8 @@ nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna ali\%quyam erat,
 sed diam voluptua.
 .RIGHT
 \#
-\# If running PRINTSTYLE TYPEWRITE, add space before citation
+\# If running PRINTSTYLE TYPEWRITE, this adds space before
+\# attribution ("Joseph E. Blough")
 \#
 .if \n[#PRINT_STYLE]=1 .sp
 \#
@@ -317,24 +397,45 @@ do\%lo\%res et ea rebum.
 \# create a stylesheet, along with some of the control macros that
 \# can be used.
 \#
-.TITLE     "CONTROL EQUALS CHAOS"
+\# Style the title page
+\#
+.COVER_TITLE_CAPS
+.COVER_ATTRIBUTE_SPACE .5v
+.COVER_AUTHOR_STYLE \
+  SIZE    +1.5 \
+  LEAD 14 \
+  SPACE .25v
+.COVER_MISC_STYLE \
+  QUAD L \
+  SIZE +0
+.COVER_COPYRIGHT_SIZE +0
+\#
+\# What goes on the title page
+\#
+.COVER TITLE AUTHOR COPYRIGHT MISC
+\#
+.DOCTYPE    DEFAULT
+.COPYSTYLE  FINAL
+\#
+.TITLE     "Control Equals Chaos"
 .SUBTITLE  "\*[ALD1]The Psychological and Auditory \
 Impact of Serial vs. Aleatoric Music\*[RLD1]"
 .AUTHOR    "Joe Chang" "and" "Brad Hegel Connors"
-.COPYRIGHT "2004 J. Chang, B.H. Connors
-.MISC      "Submitted June 3, 2004" "\*[IT]Piano Quarterly\*[PREV]"
+.COPYRIGHT "2015 J. Chang, B.H. Connors
+.MISC      "Submitted June 3, 2015" "\*[IT]Piano Quarterly\*[PREV]"
 \#
-.DOCTYPE    DEFAULT
-.COPYSTYLE  FINAL
+\# Style the docheader
+\#
+.TITLE_CAPS
+.ATTRIBUTE_SPACE .33
+.AUTHOR_SIZE   +1
+.SUBTITLE_SIZE +2
 \#
 .L_MARGIN   6P
 .R_MARGIN   4P+6p
 .PT_SIZE    10
 .AUTOLEAD   1.5
 \#
-.AUTHOR_SIZE   +.5
-.SUBTITLE_SIZE +1
-\#
 .RECTO_VERSO
 .PAGENUM   1
 \#
@@ -350,27 +451,30 @@ Impact of Serial vs. Aleatoric Music\*[RLD1]"
 .if \n[#PRINT_STYLE]=2 \{\
 . PARA_INDENT  1P
 . QUOTE_INDENT 2
+. BLOCKQUOTE_INDENT 2
 .\}
 \#
-.HEADING_STYLE 1 QUAD L SIZE +0 NO_NUMBER NO_CAPS NO_UNDERSCORE \
-  NO_SPACE_AFTER BASELINE_ADJUST \n[.v]/8 \" ie 1/8 of the leading
+\# Style heading 1
 \#
-.BLOCKQUOTE_FAMILY   H
-.BLOCKQUOTE_SIZE     -2
-.BLOCKQUOTE_AUTOLEAD 2
+.HEADING_STYLE 1 \
+  QUAD L \
+  SIZE +0 \
+  NO_NUMBER \
+  NO_CAPS \
+  NO_UNDERSCORE \
+  NO_SPACE_AFTER \
+  BASELINE_ADJUST \n[.v]/8 \" ie 1/8 of the leading
 \#
-.COVERTITLE "\*[UP 3p]\E*[$TITLE]" \" Use $TITLE, but raise 3 points
+\# Style the blockquotes
 \#
-.COVER_LEAD           +2
-.COVER_AUTHOR_SIZE    +1.5
-.COVER_MISC_FAMILY    T
-.COVER_MISC_QUAD      L
-.COVER_MISC_SIZE      +0
-.COVER_COPYRIGHT_SIZE +0
+.BLOCKQUOTE_STYLE \
+  FAMILY   H \
+  SIZE     -2 \
+  AUTOLEAD 2
 \#
-.COVER COVERTITLE AUTHOR COPYRIGHT MISC
+.COLUMNS 2 1P+6p \" Set in two columns
 \#
-.COLUMNS 2 1P+6p
+\# Being the document
 \#
 .START
 .PP
@@ -579,7 +683,7 @@ sanctus est.
 Nonumy eirmod tempor invidunt, ut labore et do\%lo\%re magna ali\%quyam
 erat?  At vero eos et accusam et justo duo do\%lo\%res et ea.  Rebum stet
 clita kasd gubergren no sea takimata sanctus.  Est lorem ipsum dolor
-sit amet.  Sadipscing\c
+amet.  Sadipscing\c
 .FOOTNOTE
 Sadipscing diam nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna
 ali\%quyam erat, sed diam voluptua.
@@ -603,3 +707,7 @@ takimata sanctus est.
 .FINIS
 .TOC_RV_SWITCH
 .TOC
+.\" Local Variables:
+.\" mode: nroff
+.\" End:
+.\" vim: filetype=groff:
diff --git a/contrib/mom/examples/slide-demo.mom b/contrib/mom/examples/slide-demo.mom
new file mode 100644 (file)
index 0000000..2dc4439
--- /dev/null
@@ -0,0 +1,396 @@
+.\" -*- mode: text; coding: utf-8; -*-
+.
+.\"----------------------------------------------------------------
+.\" Make first slide black.  Remove if printing to save ink.
+.po 0
+.ll 11i
+.DBX SOLID 0 \n[.l]u \n[.p]u
+.\"----------------------------------------------------------------
+.
+.\"----------------------------------------------------------------
+.\" Macro for code blocks
+.de CODE_BLOCK
+. ie \\n[.$] \{\
+.   CODE off
+.   QUOTE off
+.   CENTER_BLOCK off
+. \}
+. el \{\
+.   CENTER_BLOCK
+.   QUOTE
+.   CODE
+. \}
+..
+.\"----------------------------------------------------------------
+.
+.TITLE "Creating slide presentations with gropdf/mom"
+.PDF_TITLE "\*[$TITLE]"
+.
+.DOCTYPE SLIDES \
+  ASPECT 16:9 \
+  HEADER "Header left" "\*[$TITLE]" "Header right" \
+  FOOTER "" "" "\*S[+2]\*[SLIDE#]\*S[-2]" \
+  TRANSITION "Box 1 . O" \
+  PAUSE "Wipe 1"
+.
+.PARA_SPACE .75v
+.SS +3
+.HYPHENATION off
+.
+.NEWCOLOR darkred #aa0000
+.NEWCOLOR darkred1 #900000
+.NEWCOLOR blue1 #00007b
+.NEWCOLOR blue2 #00006f
+.NEWCOLOR code-grey GRAY 0.3
+.XCOLOR cyan4
+.XCOLOR green4
+.
+.HEADER_COLOR      darkred1
+.HEADER_RULE_COLOR blue1
+.FOOTER_RULE       off
+.
+.COVER_STYLE \
+  LEAD +8 \
+  COLOR white
+.HEADING_STYLE 1 \
+  COLOR blue2
+.CODE_STYLE \
+  FONT B \
+  SIZE 115 \
+  COLOR code-grey
+.QUOTE_STYLE \
+  QUAD LEFT
+.CONDENSE 90
+.
+.PDF_IMAGE_FRAME "" 1 blue1
+.
+.COVERTITLE \
+  "Creating slide presentations" \
+  "with" \
+  "gropdf and mom"
+.
+.COVER_START_POS 15P
+.COVER COVERTITLE
+.
+.STRING hand \*[darkred]\[rh]\*[black]
+.
+.START
+.
+.ADD_SPACE 9p
+.IB 8P
+.
+.HEADING 1 "PDF slides"
+.SP .5v
+.
+.PP
+PDF slides are a subset of mom's document processing macros
+formatted for presentation mode when viewed in a PDF reader.  In
+most respects, they behave identically to the default document type
+described in mom's html documentation\*[HANG .]
+.BR
+Differences in the formatting include\*[HANG :]
+.
+.PAUSE
+.LEFT
+.LIST
+.ITEM .2v
+the choice between two aspect ratios, 4:3 or 16:9
+.LIST USER \*[hand]
+.ITEM
+both fit on A4 or US letter paper sizes when printed
+.
+.PAUSE
+.LIST BACK
+.ITEM .2v
+type is set centered by default
+.LIST USER \*[hand]
+.ITEM
+this may be changed to left, right, or justified
+.
+.PAUSE
+.LIST BACK
+.ITEM .2v
+headers and/or footers must be explicitly instantiated
+.LIST USER \*[hand]
+.ITEM
+the left, centre, and right parts must be supplied
+by the user
+.
+.PAUSE
+.LIST BACK
+.ITEM .2v
+slide numbering (pagination) is disabled
+.LIST  USER \*[hand]
+.ITEM
+if slide numbering is desired, it must be put in the left,
+centre, or right part of a header or footer definition
+.QUIT_LISTS
+.
+.NEWSLIDE
+.
+.ADD_SPACE 9p
+.IB 2P
+.
+.DOC_QUAD CENTER
+.
+.HEADING 1 "Pauses and transitions"
+.SP .5v
+.
+.PP
+Slides made with mom take advantage of the pause and slide
+transition features provided in presentation mode by most
+contemporary PDF readers.
+.PAUSE
+.PP
+Pauses and transitions are dynamic and engaging, holding the
+viewer's attention while increasing the impact of the content.
+.PAUSE
+.PP
+With pauses, material on a slide can be revealed progressively
+with
+.BR
+a mouse click or by hitting
+.
+.LIST
+.ITEM .5v
+Next
+.ITEM 2p
+PgDown
+.ITEM 2p
+Spacebar
+.LIST off
+.
+.PAUSE
+.PP
+The manner in which new material is revealed and new slides
+are displayed can be tailored separately for effects like Fade,
+Dissolve, Wipe and others, and can be changed on the fly.
+.
+.NEWSLIDE
+.
+.PP
+Mom slides begin with the macro DOCTYPE SLIDES, where you choose
+the aspect ratio and transition effects, and set up headers and
+footers\*[HANG .]
+.PAUSE
+.PP
+You may find it convenient to provide a title for the slide
+presentation, as the top of the .mom file for these slides
+demonstrates\*[HANG :]
+.
+.SP -1v
+.CODE_BLOCK
+\*[COND]\&.TITLE "Creating slide presentations with gropdf/mom"
+\&.PDF_TITLE "\\*[$TITLE]"
+\&.\\"
+\&.DOCTYPE SLIDES \\
+ ASPECT 16:9 \\
+ HEADER "Header left" "\\*[$TITLE]" "Header right" \\
+ FOOTER "" "" "\\*S[+2]\\*[SLIDE#]\\*S[-2]" \\
+ TRANSITION "Box 1 . O" \\
+ PAUSE "Wipe 1"\*[CONDX]
+.CODE_BLOCK off
+.SP -.5v
+.
+.PAUSE
+.PP
+Afterwards, you may make any changes you like to the layout and
+style, then enter START.  Unlike other mom documents, PRINTSTYLE is
+not required\*[HANG .]
+.
+.NEWSLIDE
+.
+.ADD_SPACE 9p
+.IB -1P+6p
+.
+.HEADING 1 \
+  "The \s[-2]PAUSE\s[0] and \s[-2]NEWSLIDE\s[0] macros"
+.SP .5v
+.
+.PP
+Whenever you want a pause before revealing the next material on a
+slide, enter the macro PAUSE on a line by itself.  If you want a
+reveal effect that's different from the current one, you may pass
+PAUSE the parameters of the new effect\*[HANG :]
+.
+.SP -1v
+.PAUSE
+.
+.CODE_BLOCK
+\&.PAUSE "Dissolve .4"
+.CODE_BLOCK off
+.
+.PAUSE "Dissolve .4"
+Notice that this material dissolves in, whereas before, new material
+appeared from left to right.  \*[BU6]The new effect stays in force
+until you change it again\*[HANG .]
+.PAUSE "Wipe 1"
+.PP
+New slides are introduced with NEWSLIDE. \*[bu6]Transition effects
+and parameters may be given to NEWSLIDE\*[HANG :]
+.SP -1v
+.
+.CODE_BLOCK
+\&.NEWSLIDE "Blinds .5"
+.CODE_BLOCK off
+.
+.PAUSE
+The next slide in this presentation will appear with the Blinds
+effect\*[HANG .]
+.BR
+Consult man gropdf\c
+\*[FU2]\*[UP 1p](\*[DOWN 1p]\*[BU2]1\*[UP 1p]\*[BU1])\*[DOWN 1p]
+for all the pause/transition effects and their
+parameters.\*[BU6]\*[UP 2p]\s[-2]*\s[0]
+.SP 4p
+.FT I
+.PT_SIZE -2
+*Note that not all PDF \*[BU6]viewers support every effect\*[HANG .]
+.FT R
+.PT_SIZE +2
+.
+.NEWSLIDE "Blinds .5"
+.
+.ADD_SPACE 9p
+.
+.HEADING 1 "Macros and preprocessors"
+.SP .5v
+.
+.PP
+Slides can make full use of all mom's document processing and
+typesetting macros, including preprocessors and image insertion\*[HANG .]
+.
+.IBX CLEAR
+.LS -4
+.
+.PAD "\
+\*[FWD 4P+6p]\*[ST1]#\*[ST1X]\
+\*[FWD 1P]\*[ST2]#\*[ST2X]\
+\*[FWD 3P+6p]\*[ST3]#\*[ST3X]\
+\*[FWD 3P]\*[ST4]#\*[ST4X]\*[FWD 2P]"
+.
+.ST 1 L
+.ST 2 L
+.ST 3 L
+.ST 4 L
+.
+.PAUSE "Fade .5"
+.
+.TAB 1
+.PT_SIZE -1.5
+\*[BD]\*[blue2]\*[DOWN 6p]tbl
+.mk
+.PT_SIZE -1
+.COLOR blue2
+.TS H BOXED
+tab(^) allbox;
+c c
+n n.
+\*[darkred]\s[-.5]\*[DOWN .5p]Year^Mean Temp.\s[0]\*[blue2]
+_
+.TH
+\*[cyan4]\fB2015^28.3\*[blue2]
+\*[cyan4]1998^28.3\*[blue2]
+\*[cyan4]1997^28.3\*[blue2]
+\*[cyan4]2010^28.1\*[blue2]
+\*[cyan4]2002^28.1\*[blue2]
+\*[cyan4]2005^28.0\*[blue2]
+\*[cyan4]2014^27.9\*[blue2]
+\*[cyan4]2009^27.9\*[blue2]
+.TE
+.
+.rt
+.PAUSE
+.
+.TN
+.PT_SIZE +1
+\*[FWD 10p]\*[DOWN 6p]pic
+.COLOR green4
+.SP 3p
+.PS 2
+A: ellipse wid 0.5 ht 0.5
+  arrow color "green4" up 0.2 from A.n
+  arrow color "green4" up 0.2 right 0.2 from A.ne
+  arrow color "green4" right 0.2 from A.e
+  arrow color "green4" down 0.2 right 0.2 from A.se
+  arrow color "green4" down 0.2 from A.s
+  arrow color "green4" down 0.2 left 0.2 from A.sw
+  arrow color "green4" left 0.2 from A.w
+  arrow color "green4" up 0.2 left 0.2 from A.nw
+.PE
+.
+.rt
+.PAUSE
+.
+.TN
+.COLOR blue2
+\*[FWD 1p]\*[DOWN 6p]eqn
+.FAMILY T
+.PT_SIZE +3
+.LS
+.COLOR code-grey
+.SP 4P
+.EQ
+f sub X (x) ^=^ left {
+  rpile { 0 above 2x above 0 }
+  ~~lpile { x < 0 above 0 <= x <= 1 above x > 1 }
+.EN
+.
+.rt
+.PAUSE
+.
+.TN
+.FAMILY H
+.PT_SIZE -3
+.COLOR blue2
+\*[DOWN 6p]pdf image\*[black]\*[PREV]
+.SP 2P+6p
+.PDF_IMAGE -L penguin.pdf 81p 96p FRAME
+.TQ
+.
+.NEWSLIDE "Box 1 . O"
+.ADD_SPACE 9p
+.IB 10P
+.PT_SIZE +1.5
+.
+.HEADING 1 "Printing handouts"
+.SP .5v
+.
+.CODE_STYLE \
+  COLOR BLACK \
+  SIZE 120
+.PP
+Because slides contain pauses, they need a little help on their
+way to the printer or they stop printing at the first pause\*[HANG .]
+.PAUSE "Wipe 1"
+.PP
+Setting GROPDF_NOSLIDE=1 before invoking 
+\[oq]\*[FU4]\*[CODE]\*[COND]pdfmom\*[CONDX]\*[CODE off]\*[FU4]\[cq]
+or
+\[oq]\*[FU2]\*[CODE]\*[COND]groff\~-Tpdf\*[CONDX]\*[CODE off]\*[FU6]\[cq]
+disables the pauses\*[HANG :]
+.
+.SP -1v
+.
+.CODE_STYLE \
+  COLOR code-grey \
+  SIZE 110
+.CODE_BLOCK
+\*[COND]GROPDF_NOSLIDE=1 pdfmom <options> slide-file.mom\*[CONDX]
+.CODE_BLOCK off
+.
+.PAUSE
+The output may be piped directly to a printer or saved to a file\*[HANG .]
+.PAUSE
+.PP
+See mom's html documentation and the gropdf\c
+\*[FU2]\*[UP 1p](\*[DOWN 1p]\*[BU2]1\*[UP 1p]\*[BU1])\*[DOWN 1p]
+manpage for complete information concerning slide usage\*[HANG .]
+.
+.SP 9p
+.CENTER_BLOCK
+.nr dcl-ind -1 1
+.while \n[dcl-ind]<4 \{\
+. DCL SOLID \n+[dcl-ind]P 9p 9p blue2
+.\}
+.CENTER_BLOCK off
diff --git a/contrib/mom/examples/test-mom.sh.in b/contrib/mom/examples/test-mom.sh.in
new file mode 100644 (file)
index 0000000..0841b37
--- /dev/null
@@ -0,0 +1,79 @@
+#!/bin/sh
+#
+# Copyright (C) 2018- Free Software Foundation, Inc.
+# 
+# This file is part of groff.
+# 
+# groff 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.
+# 
+# groff 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 <http://www.gnu.org/licenses/>.
+#
+
+builddir="@abs_top_builddir@"
+have_urw_fonts="@groff_have_urw_fonts@"
+examplesdir="$builddir/contrib/mom/examples"
+ret=0
+list="
+  letter.pdf
+  mom-pdf.pdf
+  mon_premier_doc.pdf
+  sample_docs.pdf
+  slide-demo.pdf
+  typesetting.pdf
+  "
+
+if test "$have_urw_fonts" != "yes"; then
+    echo "No URW fonts, mom examples cannot be correctly generated"
+    exit 77
+fi
+
+# $1: pdf file
+# $2: expected number of pages
+check_number_pages()
+{
+    echo "Checking number of pages of $1"
+    n_pages=`pdfinfo $1  | grep Pages | awk '{ print $2}'`
+    if test "$n_pages" != "$2"; then
+       echo "  Error: expected $2 pages, found $n_pages pages"
+       ret=255
+    fi
+}
+
+# $1 pdf file
+check_has_images()
+{
+    echo "Checking if $1 has images"
+    n_lines=`pdfimages -list $1 | wc -l `
+    if test $n_lines -le 2; then
+        echo " no images found"
+        ret=255
+    fi
+}
+
+for k in $list; do
+    if ! test -f $examplesdir/$k; then
+        echo "File $k not found"
+        exit 255
+    fi
+done
+
+check_number_pages "$examplesdir/letter.pdf" 1
+check_number_pages "$examplesdir/mom-pdf.pdf" 8
+check_number_pages "$examplesdir/mon_premier_doc.pdf" 5
+check_number_pages "$examplesdir/sample_docs.pdf" 12
+check_number_pages "$examplesdir/slide-demo.pdf" 27
+check_number_pages "$examplesdir/typesetting.pdf" 3
+
+check_has_images "$examplesdir/typesetting.pdf"
+check_has_images "$examplesdir/slide-demo.pdf"
+
+exit $ret
index 2c497bd..a35b237 100644 (file)
@@ -1,6 +1,6 @@
-.\" -*- mode: troff; coding: utf-8; -*-
-.
-\# Copyright (C) 2004-2014  Free Software Foundation, Inc.
+.\" -*- mode: text; coding: utf-8; -*-
+\#
+\# Copyright 2004-2018 Free Software Foundation, Inc.
 \#
 \# Copying and distribution of this file, with or without modification,
 \# are permitted in any medium without royalty provided the copyright
@@ -37,7 +37,7 @@
 .SP |1i-1v     \" Advance 1 inch from top of paper to first baseline
 Example 1\*[BU 2]:
 .ALD .25v      \" Advance an extra 1/4 linespace
-.UNDERSCORE 3.75p "T\*[BU 4]asting notes using padding, string tabs \
+.UNDERSCORE 3.5p "T\*[BU 4]asting notes using padding, string tabs \
 and multi-columns"
 \#
 .SP            \" Add an extra line space
@@ -194,7 +194,7 @@ itself around the word "Massaging".  We circumvent this by using the
 groff inline escapes \[lq] and \[rq] (leftquote and rightquote).
 .COMMENT OFF
 \#
-.UNDERSCORE 3.75p "\[lq]Massaging\[rq] \*[BCK 1p]a passage of rag right text"
+.UNDERSCORE 3.5p "\[lq]Massaging\[rq] \*[BCK 1p]a passage of rag right text"
 .SP            \" Add an extra linespace
 \#
 .PT_SIZE 12.5
@@ -298,19 +298,21 @@ done the wrong.
 \#
 Example 3:
 .ALD .25v
-.UNDERSCORE 3.75p "A \*[BU2]recipe for enumerated lists using indents"
-.SP .75v        \" Add an extra half line space
-.FAM      T    \" New Century Schoolbook family
+.UNDERSCORE 3.5p "A \*[BU2]recipe for enumerated lists using indents"
+.SP .5v         \" Add an extra half line space
+.ie '\*[.T]'ps' \
+.FAM      N     \" New Century Schoolbook family
+.el .if '\*[.T]'pdf' \
+.FAM      U-N 
 .FT       R
-.PT_SIZE 12
-.LS      14
+.PT_SIZE 11
+.LS      13
 .HY            \" Turn hyphenation back on
 .JUSTIFY       \" Justify text
 This example demonstrates the use of left and hanging indents for
 simple enumerated lists.  Nested lists are possible, as the example
 shows; however, the more complex the nesting, the wiser it becomes
 to use (string) tabs, as seen in Example 4.
-.RLD .25v                  \" Move upwards 1/2 linespace
 .DBX .5 0 \n[.l]u 2P+9p   \" Draw box; \n[.l]u means "the current line length"
 .IB 6p                    \" Indent from both left and right margins
 .ALD 14p
@@ -318,7 +320,7 @@ to use (string) tabs, as seen in Example 4.
 enumerated lists automatically.  These examples merely show hanging
 indents and string tabs in use.
 \#
-.SP .25v
+.ALD 9p
 .JUSTIFY       \" Justify text
 .IL \w'\0.\0'  \" Establish a left indent equal to 2 figure spaces plus a period.
 .HI \w'\0.\0'  \" Establish a hanging indent equal to the left indent.
@@ -391,12 +393,15 @@ go back to the top level (numbered) list...
 \#
 Example 4:
 .ALD .25v
-.UNDERSCORE 3.75p "A \*[BU 2]recipe for nested lists using string tabs"
-.SP .75v
-.FAM T
+.UNDERSCORE 3.5p "A \*[BU 2]recipe for nested lists using string tabs"
+.SP .5v
+.ie '\*[.T]'ps' \
+.FAM N
+.el .if '\*[.T]'pdf' \
+.FAM U-N
 .FT  R
-.PT_SIZE 12
-.LS  14
+.PT_SIZE 11
+.LS  13
 .JUSTIFY
 Although setting up string tabs is a bit more complex than setting
 up indents, it's \*[BU 3]well worth the effort, especially for
@@ -500,14 +505,18 @@ structures easier than with the indent macros.
 .FT      B
 .PT_SIZE 12
 .LS      14
+.RLD 2p
 .LEFT
 \#
 Example 5:
 .ALD .25v
-.UNDERSCORE 3.75p "Word spacing"
+.UNDERSCORE 3.5p "Word spacing"
 .ALD 8p
-.FAM T
-.PT_SIZE 12
+.ie '\*[.T]'ps' \
+.FAM P          \" Palatino family
+.el .if '\*[.T]'pdf' \
+.FAM U-P
+.PT_SIZE 11
 .LS  14
 \#
 \# The "label" lines for the following are set in Helvetica
@@ -524,13 +533,13 @@ N\*[BU1]o\*[BU1]w \*[BU1]is the time for all good men to come to the aid of the
 .FT R
 .WS +2
 N\*[BU1]o\*[BU1]w \*[BU1]is the time for all good men to come to the aid of the party.
-.WS  +0
+.WS  DEFAULT
 .ALD 4p
 \f[HB]\*S[-1]Word spacing adjusted by \*[UP 1p]\*[BU3]+\*[DOWN 1p]4\*S[+1]\*[PREV]
 .FT R
 .WS +4
 N\*[BU1]o\*[BU1]w \*[BU1]is the time for all good men to come to the aid of the party.
-.WS  +0
+.WS  DEFAULT
 .ALD 4p
 \f[HB]\*S[-1]Word spacing adjusted by \*[UP 1p]\*[BU3]+\*[DOWN 1p]6\*S[+1]\*[PREV]
 .FT R
@@ -547,11 +556,14 @@ N\*[BU1]o\*[BU1]w \*[BU1]is the time for all good men to come to the aid of the
 .LEFT
 Example 6:
 .ALD .25v
-.UNDERSCORE 3.75p "Line kerning"
+.UNDERSCORE 3.5p "Line kerning"
 .ALD 8p
-.FAM     T     \" Palatino family
+.ie '\*[.T]'ps' \
+.FAM P          \" Palatino family
+.el .if '\*[.T]'pdf' \
+.FAM     U-P
 .FT      R
-.PT_SIZE 12
+.PT_SIZE 11
 .LS      15
 \#
 \# Here, we set up some tabs so the examples can go into facing columns.
@@ -580,7 +592,6 @@ Example 6:
 \f[HB]\*S[-1]Line "tightened" \[en] .RW .3\*S[+1]\*[PREV]
 .RW .3
 "But this is \*[IT]important!\/"\*[PREV]she exclaimed.
-.RW 0
 .MCR
 .TB 2
 \f[HB]\*S[-1]Unkerned line\*S[+1]\*[PREV]
@@ -598,6 +609,7 @@ Example 6:
 .EW .3
 "But this is \*[IT]important!\/"\*[PREV]she exclaimed.
 .MCX 1.5v
+.EW 0
 \#
 .FAM     T
 .FT      B
@@ -607,7 +619,7 @@ Example 6:
 \#
 Example 7:
 .ALD .25v
-.UNDERSCORE 3.75p "Cutaround using left\*[FU 2]/right indents, \
+.UNDERSCORE 3.5p "Cutaround using left\*[FU 2]/right indents, \
 multi columns and a dropcap"
 .SP
 \#
@@ -689,3 +701,7 @@ Dolores et ea rebum stet clita kasd gubergren, no sea takimata
 sanctus.  Sadipscing elitr sed diam, nonumy eirmod tempor, invidunt
 ut labore et dolore magna aliquyam erat.  Sed diam voluptua, at vero
 eos et accusam et justo duo dolores et ea rebum.
+.\" Local Variables:
+.\" mode: nroff
+.\" End:
+.\" vim: filetype=groff:
similarity index 87%
rename from contrib/mom/groff_mom.man
rename to contrib/mom/groff_mom.7.man
index 4e787b0..6cb2bcd 100644 (file)
@@ -1,63 +1,48 @@
-.TH GROFF_MOM @MAN7EXT@ "@MDATE@" "Groff Version @VERSION@"
+.TH GROFF_MOM @MAN7EXT@ "@MDATE@" "groff @VERSION@"
 .SH NAME
-groff_mom \- groff `mom' macros, `mom' is a `roff' language, part of `groff'
-.
-.\" The .SH was moved to this place in order to appease `apropos'.
-.
-.\" --------------------------------------------------------------------
-.\" Legalese
-.\" --------------------------------------------------------------------
-.
-.de co
-Copyright \[co] 2002-2014 Free Software Foundation, Inc.
-
-This file is part of groff, a free software project.
-
-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.
-
-You should have received a copy of the GNU General Public License
-along with groff, see the files COPYING and LICENSE in the top
-directory of the groff Text source package.
-
-Or read the manpage
-.BR gpl (1).
-You can also visit <http://www.gnu.org/licenses/>.
-..
+groff_mom \- groff \(lqmom\(rq macros; \(lqmom\(rq is a \(lqroff\(rq \
+language, part of \(lqgroff\(rq
 .
-.de au
-mom was written by
-.MT peter@schaffter.ca
-Peter Schaffter
-.ME
-and revised by
-.MT wl@gnu.org
-Werner Lemberg
-.ME .
-
-PDF support was provided by
-.MT deri@chuzzlewit.demon.co.uk
-Deri James
-.ME .
-
-The alphabetical documentation of macros and escape seqauences in this
-man\-page were written by the
-.I mom
-team.
-..
 .
-.\" --------------------------------------------------------------------
+.\" Save and disable compatibility mode (for, e.g., Solaris 10/11).
+.do nr groff_mom_C \n[.C]
+.cp 0
+.
+.
+.\" ====================================================================
+.\" Legal Terms
+.\" ====================================================================
+.\"
+.\" Copyright (C) 2002-2018 Free Software Foundation, Inc.
+.\"
+.\" This file is part of mom, which is part of groff, the GNU roff
+.\" type-setting system.
+.\"
+.\" 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
+.\" <http://www.gnu.org/licenses/>.
+.
+.
+.\" ====================================================================
 .\" Setup
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .ds Ellipsis \&.\|.\|.\&\"
 .
 .hw line-space
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .\" .FONT (<font name> <text> [<font name> <text> ...])
 .\"
 .\" Print in different fonts: R, I, B, CR, CI, CB
@@ -80,40 +65,38 @@ team.
 ..
 .
 .
-.do nr groff_mom_C \n[.C]
-.cp 0
-.
-.de TQ
-.br
-.ns
-.TP \\$1
-..
-.
-.
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "SYNOPSIS"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .SY pdfmom
-.OP \-Tps "\fR[pdfroff options]"
-[groff options]
-.I files \*[Ellipsis]
+.RB [ \-Tps
+.RI [ pdfroff-option
+\*[Ellipsis]]]
+.RI [ groff-option
+\*[Ellipsis]]
+.I file
+\*[Ellipsis]
 .YS
 .
 .SY groff
-.OP \-mom
-.I files \*[Ellipsis]
-.YS
-.
+.B \-mom
+.RI [ option
+\*[Ellipsis]]
+.I file
+\*[Ellipsis]
 .SY groff
-.OP "\-m mom"
-.I files .\|.\|.
+.B "\-m mom"
+.RI [ option
+\*[Ellipsis]]
+.I file
+\*[Ellipsis]
 .YS
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH CALLING MOM
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .B mom
 is a macro set for
@@ -130,8 +113,8 @@ output.
 provides two categories of macros: macros for typesetting, and
 macros for document processing.
 .
-The typesetting macros provide access to groff\[aq]s typesetting
-capabilities in ways that are simpler to master than groff\[aq]s
+The typesetting macros provide access to groff's typesetting
+capabilities in ways that are simpler to master than groff's
 primitives.
 .
 The document processing macros provide highly customizable markup
@@ -158,7 +141,7 @@ viewers, and may contain clickable internal and external links.
 When
 .RI \-T ps
 is absent,
-.B groff\[aq]s
+.B groff's
 native
 .I PDF
 driver,
@@ -170,7 +153,7 @@ When given, the output is still
 but processing is passed over to
 .BR pdfroff ,
 which uses
-.B groff\[aq]s
+.B groff's
 PostScript driver,
 .BR grops \&.
 Not all
@@ -187,7 +170,7 @@ images.
 Files processed with
 .B groff \-mom
 (or
-.BI "\-m " mom\c
+.BI "\-m " mom\/\c
 ) produce
 .I PostScript
 output by default.
@@ -211,37 +194,37 @@ or
 usage.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH FILES
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .TP
-.om.tmac
+.I @MACRODIR@/\:om.tmac
 \[en] the main macro file
 .TQ
-.mom.tmac
+.I @MACRODIR@/\:mom.tmac
 \[en] a wrapper file that calls om.tmac directly.
 .
 .TP
-.B \%@HTMLDOCDIR@/\:mom/\:toc.html
+.@HTMLDOCDIR@/\:mom/\:toc.html
 \[en] entry point to the HTML documentation
 .
 .TP
-.B \%@PDFDOCDIR@/\:mom-pdf.pdf
+.I @PDFDOCDIR@/\:mom\-pdf.pdf
 \[en] the PDF manual,
 .I Producing PDFs with groff and mom
 .
 .TP
-.B @EXAMPLEDIR@/mom/*.mom
+.IR @EXAMPLEDIR@/\:mom/\: * .mom
 \[en] example files using mom
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH DOCUMENTATION IN ALPHABETICAL ORDER
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .
-This part of the man-page contains information just as in groff(7),
+This part of the man page contains information just as in groff(7),
 .I mom macros
 and
 .I mom escape sequences
@@ -256,7 +239,7 @@ and
 is very well documented in
 .
 .TP
-.B \%@HTMLDOCDIR@/\:mom/\:toc.html
+.@HTMLDOCDIR@/\:mom/\:toc.html
 \[en] entry point to the HTML documentation
 .
 .
@@ -274,17 +257,17 @@ But, so far, we took all documentation details from the
 file, just in a more useful alphabetical order.
 .
 .
-So this part of the man-page is nothing new, but only a logical
+So this part of the man page is nothing new, but only a logical
 arrangement.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "QUICK REFERENCE"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Quick Reference of Inline Escape Sequences in alphabetical Order"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .TP
 .FONT B \[rs]*[ I <colorname> B ]
@@ -297,13 +280,13 @@ move backwards in a line
 .
 .
 .TP
-.BI \[rs]*[BOLDER]
+.B \[rs]*[BOLDER]
 invoke pseudo bold inline (related to macro
 .BR .SETBOLDER )
 .
 .
 .TP
-.BI \[rs]*[BOLDERX]
+.B \[rs]*[BOLDERX]
 off pseudo bold inline (related to macro
 .BR .SETBOLDER )
 .
@@ -315,13 +298,13 @@ move characters pairs closer together inline (related to macro
 .
 .
 .TP
-.BI \[rs]*[COND]
+.B \[rs]*[COND]
 invoke pseudo condensing inline (related to macro
 .BR \%.CONDENSE )
 .
 .
 .TP
-.BI \[rs]*[CONDX]
+.B \[rs]*[CONDX]
 off pseudo condensing inline (related to macro
 .BR \%.CONDENSE )
 .
@@ -337,19 +320,19 @@ temporarily move downwards in a line
 .
 .
 .TP
-.BI \[rs]*[EN-MARK]
+.B \[rs]*[EN\-MARK]
 mark initial line of a range of line numbers (for use with line
 numbered endnotes)
 .
 .
 .TP
-.BI \[rs]*[EXT]
+.B \[rs]*[EXT]
 invoke pseudo extending inline (related to macro
 .BR \%.EXTEND )
 .
 .
 .TP
-.BI \[rs]*[EXTX]
+.B \[rs]*[EXTX]
 off pseudo condensing inline (related to macro
 .BR \%.EXTEND )
 .
@@ -371,12 +354,12 @@ move forward in a line
 .
 .
 .TP
-.BI \[rs]*[LEADER]
+.B \[rs]*[LEADER]
 insert leaders at the end of a line
 .
 .
 .TP
-.BI \[rs]*[RULE]
+.B \[rs]*[RULE]
 draw a full measure rule
 .
 .
@@ -387,13 +370,13 @@ change the point size inline (related to macro
 .
 .
 .TP
-.BI \[rs]*[SLANT]
+.B \[rs]*[SLANT]
 invoke pseudo italic inline (related to macro
 .BR \%.SETSLANT )
 .
 .
 .TP
-.BI \[rs]*[SLANTX]
+.B \[rs]*[SLANTX]
 off pseudo italic inline (related to macro
 .BR \%.SETSLANT )
 .
@@ -425,52 +408,52 @@ invoke underlining inline (fixed width fonts only)
 temporarily move upwards in a line
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Quick Reference of Macros in alphabetical Order"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .TP
-.BI .AUTOLEAD
+.B .AUTOLEAD
 set the linespacing relative to the point size
 .
 .
 .TP
-.BI .B_MARGIN
+.B .B_MARGIN
 set a bottom margin
 .
 .
 .TP
-.BI .BR
+.B .BR
 break a justified line
 .
 .
 .TP
-.BI .CENTER
+.B .CENTER
 set line-by-line quad centre
 .
 .
 .TP
-.BI .CONDENSE
+.B .CONDENSE
 set the amount to pseudo condense
 .
 .
 .TP
-.BI .EL
+.B .EL
 break a line without advancing on the page
 .
 .
 .TP
-.BI .EXTEND
+.B .EXTEND
 set the amount to pseudo extend
 .
 .
 .TP
-.BI .FALLBACK_FONT
+.B .FALLBACK_FONT
 establish a fallback font (for missing fonts)
 .
 .
 .TP
-.BI .FAM
+.B .FAM
 alias to
 .B .FAMILY
 .
@@ -482,7 +465,7 @@ set the
 .
 .
 .TP
-.BI .FT
+.B .FT
 set the font style (roman, italic, etc.)
 .
 .
@@ -492,12 +475,12 @@ hanging indent
 .
 .
 .TP
-.BI .HY
+.B .HY
 automatic hyphenation on/off
 .
 .
 .TP
-.BI .HY_SET
+.B .HY_SET
 set automatic hyphenation parameters
 .
 .
@@ -537,47 +520,47 @@ exit indent right
 .
 .
 .TP
-.BI .JUSTIFY
+.B .JUSTIFY
 justify text to both margins
 .
 .
 .TP
-.BI .KERN
+.B .KERN
 automatic character pair kerning on/off
 .
 .
 .TP
-.BI .L_MARGIN
+.B .L_MARGIN
 set a left margin (page offset)
 .
 .
 .TP
-.BI .LEFT
+.B .LEFT
 set line-by-line quad left
 .
 .
 .TP
-.BI .LL
+.B .LL
 set a line length
 .
 .
 .TP
-.BI .LS
+.B .LS
 set a linespacing (leading)
 .
 .
 .TP
-.BI .PAGE
+.B .PAGE
 set explicit page dimensions and margins
 .
 .
 .TP
-.BI .PAGEWIDTH
+.B .PAGEWIDTH
 set a custom page width
 .
 .
 .TP
-.BI .PAGELENGTH
+.B .PAGELENGTH
 set a custom page length
 .
 .
@@ -587,47 +570,47 @@ set common paper sizes (letter, A4, etc)
 .
 .
 .TP
-.BI .PT_SIZE
+.B .PT_SIZE
 set the point size
 .
 .
 .TP
-.BI .QUAD
+.B .QUAD
 "justify" text left, centre, or right
 .
 .
 .TP
-.BI .R_MARGIN
+.B .R_MARGIN
 set a right margin
 .
 .
 .TP
-.BI .RIGHT
+.B .RIGHT
 set line-by-line quad right
 .
 .
 .TP
-.BI .SETBOLDER
+.B .SETBOLDER
 set the amount of emboldening
 .
 .
 .TP
-.BI .SETSLANT
+.B .SETSLANT
 set the degree of slant
 .
 .
 .TP
-.BI .SPREAD
+.B .SPREAD
 force justify a line
 .
 .
 .TP
-.BI .SS
+.B .SS
 set the sentence space size
 .
 .
 .TP
-.BI .T_MARGIN
+.B .T_MARGIN
 set a top margin
 .
 .
@@ -637,17 +620,17 @@ temporary left indent
 .
 .
 .TP
-.BI .WS
+.B .WS
 set the minimum word space size
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "DOCUMENTATION OF DETAILS"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Details of Inline Escape Sequences in alphabetical Order"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .TP
 .FONT B \[rs]*[ I <colorname> B ]
@@ -698,7 +681,7 @@ Once
 is invoked, it remains in effect until turned off.
 .
 .P
-Note: If you\[aq]re using the document processing macros with
+Note: If you're using the document processing macros with
 .BR "\%.PRINTSTYLE \%TYPEWRITE" ,
 .B mom
 ignores
@@ -723,7 +706,7 @@ move characters pairs closer together inline (related to macro
 .TP
 .B \[rs]*[COND]
 .TQ
-.BI \[rs]*[CONDX]
+.B \[rs]*[CONDX]
 Pseudo-condensing on/off
 .
 .RS
@@ -766,7 +749,7 @@ must be turned off before changing the condense percentage with
 .BR \%.CONDENSE .
 .
 .P
-Note: If you\[aq]re using the document processing macros with
+Note: If you're using the document processing macros with
 .BR "\%.PRINTSTYLE \%TYPEWRITE" ,
 .B mom
 ignores
@@ -796,7 +779,7 @@ temporarily move downwards in a line
 .\" EN-MARK
 .\" ======================================================================
 .TP
-.BI \[rs]*[EN-MARK]
+.B \[rs]*[EN\-MARK]
 mark initial line of a range of line numbers (for use with line
 numbered endnotes)
 .
@@ -891,7 +874,7 @@ move forward in a line
 .\" LEADER
 .\" ======================================================================
 .TP
-.BI \[rs]*[LEADER]
+.B \[rs]*[LEADER]
 insert leaders at the end of a line
 .
 .
@@ -899,7 +882,7 @@ insert leaders at the end of a line
 .\" RULE
 .\" ======================================================================
 .TP
-.BI \[rs]*[RULE]
+.B \[rs]*[RULE]
 draw a full measure rule
 .
 .
@@ -946,7 +929,7 @@ embedded in text lines, like this:
 .P
 Alternatively, if you wanted the whole line
 .IR pseudo-italicized ,
-you\[aq]d do
+you'd do
 .RS
 .EX
 .FONT B \[rs]*[SLANT] R "Not everything is as it seems." B \[rs]*[SLANTX]
@@ -959,7 +942,7 @@ Once
 is invoked, it remains in effect until turned off.
 .
 .P
-Note: If you\[aq]re using the document processing macros with
+Note: If you're using the document processing macros with
 .BR "\%.PRINTSTYLE \%TYPEWRITE" ,
 .B mom
 underlines pseudo-italics by default.
@@ -1032,7 +1015,7 @@ and ends after
 .IR men .
 .
 .I Inline escapes
-(e.g.
+(e.g.\&
 .I font
 or
 .I point size
@@ -1137,7 +1120,7 @@ you should do:
 .B .TAB 1
 .B .PT_SIZE 24
 .B .ALD 3p
-.B \[rs]*[RULE] \[rs]" Note that you can\[aq]t use \[rs]*[UP] or \[rs]*[DOWN] with \[rs]*[RULE]\""
+.B \[rs]*[RULE] \[rs]" Note that you can't use \[rs]*[UP] or \[rs]*[DOWN] with \[rs]*[RULE]\""
 .B .RLD 3p
 .B .TQ
 .EE
@@ -1180,15 +1163,15 @@ invoke underlining inline (fixed width fonts only)
 temporarily move upwards in a line
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Details of Macros in alphabetical Order"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .\" ======================================================================
 .\" AUTOLEAD
 .\" ======================================================================
 .TP
-.BI .AUTOLEAD
+.B .AUTOLEAD
 set the linespacing relative to the point size
 .
 .
@@ -1207,7 +1190,7 @@ Requires a unit of measure
 .P
 .B .B_MARGIN
 sets a nominal position at the bottom of the page beyond which you
-don\[aq]t want your type to go.
+don't want your type to go.
 .
 When the bottom margin is reached,
 .B mom
@@ -1225,7 +1208,7 @@ To set a nominal bottom margin of 3/4 inch, enter
 .RE
 .
 .P
-Obviously, if you haven\[aq]t spaced the type on your pages so that the
+Obviously, if you haven't spaced the type on your pages so that the
 last lines fall perfectly at the bottom margin, the margin will vary
 from page to page.
 .
@@ -1237,14 +1220,14 @@ Occasionally, owing to a peculiarity in
 .IR groff ,
 an extra line will fall below the nominal bottom margin.
 .
-If you\[aq]re using the document processing macros, this is unlikely to
+If you're using the document processing macros, this is unlikely to
 happen; the document processing macros are very hard-nosed about
 aligning bottom margins.
 .
 .P
 Note: The meaning of
 .B .B_MARGIN
-is slightly different when you\[aq]re using the document processing
+is slightly different when you're using the document processing
 macros.
 .
 .RE
@@ -1272,7 +1255,7 @@ by default, uses the
 in order to continue processing your file.
 .
 .P
-If you\[aq]d prefer another
+If you'd prefer another
 .IR "fallback font" ,
 pass
 .B \%.FALLBACK_FONT
@@ -1280,9 +1263,9 @@ the full
 .I family+font name
 of the
 .I font
-you\[aq]d like.
+you'd like.
 .
-For example, if you\[aq]d rather the
+For example, if you'd rather the
 .I fallback font
 were
 .BR "Times Roman Medium Roman" ,
@@ -1299,7 +1282,7 @@ issues a warning whenever a
 .I font style set
 with
 .B .FT
-does not exist, either because you haven\[aq]t registered the style
+does not exist, either because you haven't registered the style
 or because the
 .I font style
 does not exist in the current
@@ -1312,7 +1295,7 @@ By default,
 then aborts, which allows you to correct the problem.
 .
 .P
-If you\[aq]d prefer that
+If you'd prefer that
 .B \%mom
 not abort on non-existent
 .IR fonts ,
@@ -1478,7 +1461,7 @@ Additional note: If you are running a version of groff lower than
 1.19.2, you must follow all
 .B .FAMILY
 requests with a
-.B FT
+.B .FT
 request, otherwise
 .B mom
 will set all type up to the next
@@ -1517,11 +1500,11 @@ will set all subsequent type in the fallback font (by default,
 .BR Roman )
 until she encounters a
 .B .FT
-request that\[aq]s valid for the
+request that's valid for the
 .IR family .
 .
 .P
-For example, assuming you don\[aq]t have the font
+For example, assuming you don't have the font
 .B Medium Condensed Roman
 .RB  ( mom
 extension
@@ -1544,7 +1527,7 @@ In the above example, you must follow
 .B .FAMILY H
 with a
 .B .FT
-request that\[aq]s valid for
+request that's valid for
 .BR Helvetica .
 .
 .P
@@ -1555,7 +1538,7 @@ for information on adding fonts and families to groff, as well as to
 see a list of the extensions
 .B mom
 provides to
-.IR groff \[aq]s
+.IR groff 's
 basic
 .BR R ,
 .BR I ,
@@ -1663,7 +1646,7 @@ If your
 .I family
 were
 .BR \%Palatino ,
-you\[aq]d get the
+you'd get the
 .I \%Palatino bold
 .IR font .
 .
@@ -1697,13 +1680,13 @@ How
 .B mom
 reacts to an invalid argument to
 .B .FT
-depends on which version of groff you\[aq]re using.
+depends on which version of groff you're using.
 .
 If your
 .I groff version
 is greater than or equal to 1.19.2,
 .B mom
-will issue a warning and, depending on how you\[aq]ve set up the fallback
+will issue a warning and, depending on how you've set up the fallback
 font, either continue processing using the fallback font, or abort
 (allowing you to correct the problem).  If your
 .I groff version
@@ -1830,7 +1813,7 @@ intervening control lines).
 .
 And because
 .I hanging indents
-affect only one line, there\[aq]s no need to turn them off.
+affect only one line, there's no need to turn them off.
 .
 .P
 .I IMPORTANT:
@@ -1874,13 +1857,13 @@ only.
 .B ".HI \[rs]w'\[rs]0\[rs]0.'"
 \fB1.\[rs]0The most important point to be considered is whether the
 answer to the meaning of Life, the Universe, and Everything
-really is 42.  We have no-one\[aq]s word on the subject except
-Mr. Adams\[aq].
+really is 42.  We have no-one's word on the subject except
+Mr.\& Adams'.
 .B .HI
 2.\[rs]0If the answer to the meaning of Life, the Universe,
 and Everything is indeed 42, what impact does this have on
 the politics of representation?  42 is, after all not a
-prime number.  Are we to infer that prime numbers don\[aq]t
+prime number.  Are we to infer that prime numbers don't
 deserve equal rights and equal access in the universe?
 .B .HI
 3.\[rs]0If 42 is deemed non-exclusionary, how do we present it
@@ -1909,7 +1892,7 @@ starts at exactly the same spot as the indented lines that follow.
 .P
 Notice that subsequent invocations of
 .B .HI
-don\[aq]t require a
+don't require a
 .I measure
 to be given.
 .
@@ -1963,7 +1946,7 @@ and
 instead of
 .BR .IB .
 .
-You\[aq]ll save yourself a lot of grief.
+You'll save yourself a lot of grief.
 .
 .P
 A
@@ -2026,10 +2009,10 @@ Indent left \[em] the optional argument requires a unit of measure
 .
 .P
 .B .IL
-indents text from the left margin of the page, or if you\[aq]re in a
+indents text from the left margin of the page, or if you're in a
 .IR tab ,
 from the left edge of the
-.IR tab
+.IR tab .
 .
 Once
 .I IL
@@ -2145,7 +2128,7 @@ a measure again.
 .
 .P
 .BR ".IQ CLEAR" ,
-as you\[aq]d suspect, quits and clears the values for all indent
+as you'd suspect, quits and clears the values for all indent
 styles at once.
 .
 .RE
@@ -2164,7 +2147,7 @@ Indent right \[em] the optional argument requires a unit of measure
 .B .IR
 indents text from the
 .I right margin
-of the page, or if you\[aq]re in a
+of the page, or if you're in a
 .IR tab ,
 from the end of the
 .IR tab .
@@ -2241,14 +2224,14 @@ It may be used any time, and remains in effect until you enter a new value.
 .P
 Left indents and tabs are calculated from the value you pass to
 .BR .L_MARGIN ,
-hence it\[aq]s always a good idea to invoke it before starting any serious
+hence it's always a good idea to invoke it before starting any serious
 typesetting.
 .
 A unit of measure is required.
 .
 Decimal fractions are allowed.
 .
-Therefore, to set the left margin at 3 picas (1/2 inch), you\[aq]d enter either
+Therefore, to set the left margin at 3 picas (1/2 inch), you'd enter either
 .RS
 .EX
 .B .L_MARGIN 3P
@@ -2279,7 +2262,7 @@ to
 .P
 Note:
 .B .L_MARGIN
-behaves in a special way when you\[aq]re using the document processing
+behaves in a special way when you're using the document processing
 macros.
 .
 .RE
@@ -2325,7 +2308,7 @@ macro in the document processing macros.
 .\" ======================================================================
 .TP
 .B \%.MCR
-Once you\[aq]ve turned
+Once you've turned
 .I multi-columns
 on (with
 .BR \%.MCO ),
@@ -2377,7 +2360,7 @@ the distance specified by the argument.
 The argument requires a unit of measure; therefore, to advance an
 extra 6 points below where
 .B \%.MCX
-would normally place you, you\[aq]d enter
+would normally place you, you'd enter
 .RS
 .EX
 .B .MCX 6p
@@ -2445,16 +2428,16 @@ All arguments require a unit of measure
 .
 .P
 .I IMPORTANT:
-If you\[aq]re using the document processing macros,
+If you're using the document processing macros,
 .B .PAGE
 must come after
 .BR .START .
 .
 Otherwise, it should go at the top of a document, prior to any text.
 .
-And remember, when you\[aq]re using the document processing macros, top
+And remember, when you're using the document processing macros, top
 margin and bottom margin mean something slightly different than when
-you\[aq]re using just the typesetting macros (see Top and bottom margins
+you're using just the typesetting macros (see Top and bottom margins
 in document processing).
 .
 .P
@@ -2465,7 +2448,7 @@ macro.
 The only required argument is page width.
 .
 The rest are
-optional, but they must appear in order and you can\[aq]t skip over
+optional, but they must appear in order and you can't skip over
 any.
 .
 .IR <lm> ,
@@ -2476,7 +2459,7 @@ and
 refer to the left, right, top and bottom margins respectively.
 .
 .P
-Assuming your page dimensions are 11 inches by 17 inches, and that\[aq]s
+Assuming your page dimensions are 11 inches by 17 inches, and that's
 all you want to set, enter
 .RS
 .EX
@@ -2499,7 +2482,7 @@ Now suppose you also want to set the top margin, say, at 1\(en1/2 inches.
 .I <tm>
 comes after
 .I <rm>
-in the optional arguments, but you can\[aq]t skip over any arguments,
+in the optional arguments, but you can't skip over any arguments,
 therefore to set the top margin, you must also give a right margin.
 .
 The
@@ -2545,7 +2528,7 @@ To compensate, do
 .B .RLD 1v
 .EE
 .RE
-immediately before entering any text, or, if it\[aq]s feasible, make
+immediately before entering any text, or, if it's feasible, make
 .B .PAGE
 the last macro you invoke prior to entering text.
 .
@@ -2684,7 +2667,7 @@ of something,
 .B \%.PT_SIZE
 does not require that you supply a
 .I unit of measure
-since it\[aq]s a near universal convention that
+since it's a near universal convention that
 .I type size
 is measured in
 .IR points .
@@ -2753,18 +2736,18 @@ can also be changed inline.
 It is unfortunate that the
 .B \%pic
 preprocessor has already taken the name, PS, and thus
-.IR mom \[aq]s
+.IR mom 's
 macro for setting
 .I point sizes
-can\[aq]t use it.
+can't use it.
 .
-However, if you aren\[aq]t using
+However, if you aren't using
 .BR pic ,
 you might want to alias
 .B \%.PT_SIZE
 as
 .BR .PS ,
-since there\[aq]d be no conflict.
+since there'd be no conflict.
 .
 For example
 .RS
@@ -2801,14 +2784,14 @@ if used, must come after
 .BR .L_MARGIN ,
 and/or
 .B .PAGE
-(if a right margin isn\[aq]t given to PAGE).
+(if a right margin isn't given to PAGE).
 .
 The reason is that
 .B .R_MARGIN
 calculates line length from the overall page dimensions and the left margin.
 .
 .P
-Obviously, it can\[aq]t make the calculation if it doesn\[aq]t know the page
+Obviously, it can't make the calculation if it doesn't know the page
 width and the left margin.
 .
 .P
@@ -2836,7 +2819,7 @@ type as having a right margin.
 In others, giving a line length may make more sense.
 .
 .P
-For example, if you\[aq]re setting a page of type you know should have
+For example, if you're setting a page of type you know should have
 6-pica margins left and right, it makes sense to enter a left and
 right margin, like this:
 .RS
@@ -2847,7 +2830,7 @@ right margin, like this:
 .RE
 .
 .P
-That way, you don\[aq]t have to worry about calculating the line
+That way, you don't have to worry about calculating the line
 length.
 .
 On the other hand, if you know the line length for a patch of type
@@ -2883,7 +2866,7 @@ is, of course, overridden.
 .P
 Note:
 .B .R_MARGIN
-behaves in a special way when you\[aq]re using the document processing
+behaves in a special way when you're using the document processing
 macros.
 .
 .RE
@@ -2912,9 +2895,9 @@ In this respect,
 .B .ST
 is like
 .B \%.TAB_SET
-except that you don\[aq]t have to give
+except that you don't have to give
 .B .ST
-an indent or a line length (that\[aq]s already taken care of, inline,
+an indent or a line length (that's already taken care of, inline,
 by
 .BR \[rs]*[ST]\*[Ellipsis]\[rs]*[STX] ).
 .
@@ -3104,7 +3087,7 @@ A temporary indent is one that applies only to the first line of text
 that comes after it.
 .
 Its chief use is indenting the first line of paragraphs.
-.RB ( Mom\[aq]s
+.RB ( Mom's
 .B .PP
 macro, for example, uses a
 .IR "temporary indent" .)
@@ -3133,7 +3116,7 @@ keeps track of the last measure you gave it.
 .P
 Because
 .I temporary indents
-are temporary, there\[aq]s no need to turn them off.
+are temporary, there's no need to turn them off.
 .
 .P
 .I IMPORTANT:
@@ -3194,9 +3177,9 @@ works.
 .P
 In
 .I \%tabs
-that aren\[aq]t given the
+that aren't given the
 .B QUAD
-argument when they\[aq]re set up with
+argument when they're set up with
 .B \%.TAB_SET
 or
 .BR ST ,
@@ -3230,7 +3213,7 @@ You must put text in the input line immediately after
 .BR .TN .
 .
 Stacking of
-.BR .TN \[aq]s
+.BR .TN 's
 is not allowed.
 .
 In other words, you cannot do
@@ -3314,7 +3297,7 @@ you want your type to start.
 .
 It requires a unit of measure, and decimal fractions are allowed.
 .
-To set a top margin of 2\(12 centimetres, you\[aq]d enter
+To set a top margin of 2\(12 centimetres, you'd enter
 .RS
 .EX
 .B .T_MARGIN 2.5c
@@ -3336,7 +3319,7 @@ top of the page.
 .P
 Note:
 .B .T_MARGIN
-means something slightly different when you\[aq]re using the document
+means something slightly different when you're using the document
 processing macros.
 .
 See Top and bottom margins in document processing for an explanation.
@@ -3362,15 +3345,35 @@ after NEWPAGE, like this:
 .RE
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
+.SH AUTHORS
+.\" ====================================================================
+.I mom
+was written by
+.MT peter@\:schaffter.ca
+Peter Schaffter
+.ME .
+.
+PDF support was provided by
+.MT deri@\:chuzzlewit.demon.co.uk
+Deri James
+.ME .
+.
+The alphabetical documentation of macros and escape sequences in this
+man page were written by the
+.I mom
+team.
+.
+.
+.\" ====================================================================
 .SH "SEE ALSO"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .BR groff (@MAN1EXT@),
 .BR groff_mom (@MAN7EXT@),
 .
 .TP
-.B \%@HTMLDOCDIR@/\:mom/\:toc.html
+.I \%@HTMLDOCDIR@/\:mom/\:toc.html
 \[en] entry point to the HTML documentation
 .
 .TP
@@ -3384,33 +3387,15 @@ after NEWPAGE, like this:
 \[en] the mom macros homepage
 .
 .
-.\" --------------------------------------------------------------------
-.SH BUGS
-.\" --------------------------------------------------------------------
-.
-Please send bug reports to the
-.MT bug-groff@gnu.org
-groff-bug mailing list
-.ME
-or directly to the authors.
-.
-.
-.\" --------------------------------------------------------------------
-.SH "COPYING"
-.\" --------------------------------------------------------------------
-.co
-.\" --------------------------------------------------------------------
-.SH "AUTHORS"
-.\" --------------------------------------------------------------------
-.au
-.
-.
+.\" Restore compatibility mode (for, e.g., Solaris 10/11).
 .cp \n[groff_mom_C]
 .
-.\" --------------------------------------------------------------------
+.
+.\" ====================================================================
 .\" Emacs settings
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .\" Local Variables:
 .\" mode: nroff
 .\" End:
+.\" vim: set filetype=groff:
diff --git a/contrib/mom/mom.am b/contrib/mom/mom.am
new file mode 100644 (file)
index 0000000..57ae357
--- /dev/null
@@ -0,0 +1,180 @@
+# Copyright (C) 2002-2018 Free Software Foundation, Inc.
+#      Written by Werner Lemberg (wl@gnu.org)
+#      Automake migration by Bertrand Garrigues
+#
+#
+# This file is part of groff.
+#
+# groff 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.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+
+mom_srcdir = $(top_srcdir)/contrib/mom
+
+# pdfmom command used to generated .pdf
+MOM_TFLAG = -M$(mom_srcdir)
+MOM_KFLAG = -k -p -e -t
+MOMPDFMOM = \
+  GROFF_COMMAND_PREFIX= \
+  GROFF_BIN_PATH="$(GROFF_BIN_PATH)" \
+  PDFMOM_BIN_PATH="$(top_builddir)" \
+  $(PDFMOMBIN) $(FFLAG) $(TFLAG) $(MOM_TFLAG) $(MOM_KFLAG)
+
+man7_MANS += contrib/mom/groff_mom.7
+
+# Files installed in $(tmacdir).
+# MOMNORMALFILES are located in the source tree.
+MOMNORMALFILES = \
+  contrib/mom/mom.tmac \
+  contrib/mom/om.tmac
+momtmacdir = $(tmacdir)
+dist_momtmac_DATA = $(MOMNORMALFILES)
+
+# Files installed in htmldocdir/mom
+if INSTALL_SHIPPED_HTML
+MOMHTMLDOCFILES=\
+  contrib/mom/momdoc/stylesheet.css \
+  contrib/mom/momdoc/appendices.html \
+  contrib/mom/momdoc/color.html \
+  contrib/mom/momdoc/cover.html \
+  contrib/mom/momdoc/definitions.html \
+  contrib/mom/momdoc/docelement.html \
+  contrib/mom/momdoc/docprocessing.html \
+  contrib/mom/momdoc/goodies.html \
+  contrib/mom/momdoc/graphical.html \
+  contrib/mom/momdoc/headfootpage.html \
+  contrib/mom/momdoc/images.html \
+  contrib/mom/momdoc/inlines.html \
+  contrib/mom/momdoc/intro.html \
+  contrib/mom/momdoc/letters.html \
+  contrib/mom/momdoc/macrolist.html \
+  contrib/mom/momdoc/rectoverso.html \
+  contrib/mom/momdoc/refer.html \
+  contrib/mom/momdoc/reserved.html \
+  contrib/mom/momdoc/tables-of-contents.html \
+  contrib/mom/momdoc/toc.html \
+  contrib/mom/momdoc/typesetting.html \
+  contrib/mom/momdoc/using.html \
+  contrib/mom/momdoc/version-2.html
+momhtmldir = $(htmldocdir)/mom
+momhtml_DATA = $(MOMHTMLDOCFILES)
+endif
+
+# Files installed in $(examplesdir)/mom.  MOMEXAMPLEFILES are located
+# in the source tree, while MOMPROCESSEDEXAMPLEFILES are generated in
+# the build tree.
+MOMEXAMPLEFILES=\
+  contrib/mom/examples/letter.mom \
+  contrib/mom/examples/mom-pdf.mom \
+  contrib/mom/examples/mon_premier_doc.mom \
+  contrib/mom/examples/sample_docs.mom \
+  contrib/mom/examples/typesetting.mom \
+  contrib/mom/examples/README.txt \
+  contrib/mom/examples/README-fr.txt \
+  contrib/mom/examples/elvis_syntax \
+  contrib/mom/examples/elvis_syntax.new \
+  contrib/mom/examples/penguin.ps \
+  contrib/mom/examples/penguin.pdf \
+  contrib/mom/examples/mom.vim \
+  contrib/mom/examples/slide-demo.mom
+if BUILD_EXAMPLES
+momexampledir = $(exampledir)/mom
+dist_momexample_DATA = $(MOMEXAMPLEFILES)
+else
+EXTRA_DIST += $(MOMEXAMPLEFILES)
+endif
+
+if BUILD_PDFEXAMPLES
+MOMPROCESSEDEXAMPLEFILES = \
+  contrib/mom/examples/letter.pdf \
+  contrib/mom/examples/mom-pdf.pdf \
+  contrib/mom/examples/mon_premier_doc.pdf \
+  contrib/mom/examples/sample_docs.pdf \
+  contrib/mom/examples/typesetting.pdf \
+  contrib/mom/examples/slide-demo.pdf
+momprocessedexampledir = $(exampledir)/mom
+nodist_momprocessedexample_DATA = $(MOMPROCESSEDEXAMPLEFILES)
+
+if HAVE_PDFTOOLS
+# Small test suite on mom examples
+mom_TESTS = contrib/mom/examples/tests-mom.sh
+TESTS += $(mom_TESTS)
+contrib/mom/examples/tests-mom.sh: $(top_builddir)/config.status \
+       $(MOMPROCESSEDEXAMPLEFILES)  $(top_srcdir)/contrib/mom/examples/test-mom.sh.in
+       sed -e "s|[@]abs_top_builddir[@]|$(abs_top_builddir)|g" \
+            -e "s|[@]groff_have_urw_fonts[@]|$(groff_have_urw_fonts)|g" \
+               $(top_srcdir)/contrib/mom/examples/test-mom.sh.in > $@
+       chmod +x $@
+MOSTLYCLEANFILES += $(mom_TESTS)
+endif
+endif
+EXTRA_DIST += contrib/mom/examples/test-mom.sh.in
+
+# For this list of files we add a symlink from $(exampledir)/mom to $(pdfdocdir)
+PDFDOCFILE = mom-pdf.pdf
+
+EXTRA_DIST += $(MOMHTMLDOCFILES) $(MOMEXAMPLEFILES) \
+  contrib/mom/BUGS \
+  contrib/mom/ChangeLog \
+  contrib/mom/NEWS \
+  contrib/mom/TODO \
+  contrib/mom/copyright \
+  contrib/mom/groff_mom.7.man
+
+MOSTLYCLEANFILES += \
+  $(MOMPROCESSEDEXAMPLEFILES) \
+  penguin.ps \
+  penguin.pdf
+
+# Rule to generated .pdf files from .mom files
+SUFFIXES += .mom .pdf
+.mom.pdf:
+       $(GROFF_V)$(MKDIR_P) `dirname $@` \
+       && LC_ALL=C $(MOMPDFMOM) $< >$@
+
+$(MOMPROCESSEDEXAMPLEFILES): $(MOMNORMALFILES) \
+  groff troff gropdf pdfmom penguin.ps penguin.pdf \
+  gnu.eps font/devpdf/build_font_files
+
+penguin.ps:
+       cp $(mom_srcdir)/examples/penguin.ps $@
+penguin.pdf:
+       cp $(mom_srcdir)/examples/penguin.pdf $@
+
+install-data-hook: install_mom
+install_mom:
+if BUILD_PDFEXAMPLES
+       for f in $(PDFDOCFILE); do \
+         $(RM) $(DESTDIR)$(pdfdocdir)/$$f; \
+         ln -s $(exampledir)/mom/$$f $(DESTDIR)$(pdfdocdir)/$$f; \
+       done
+endif
+
+uninstall_groffdirs: uninstall_mom
+uninstall_mom:
+       for f in $(PDFDOCFILE); do \
+         $(RM) $(DESTDIR)$(pdfdocdir)/$$f; \
+       done
+       if test -d $(DESTDIR)$(exampledir)/mom; then \
+         rmdir $(DESTDIR)$(exampledir)/mom; \
+       fi
+       if test -d $(DESTDIR)$(htmldocdir)/mom; then \
+         rmdir $(DESTDIR)$(htmldocdir)/mom; \
+       fi
+
+
+########################################################################
+### Emacs settings
+# Local Variables:
+# mode: makefile-automake
+# End:
+# vim: set filetype=automake:
index 32a9ce4..21a7a15 100644 (file)
@@ -2,14 +2,14 @@
 <!--
 This file is part of groff, the GNU roff type-setting system.
 
-Copyright (C) 2004-2014  Free Software Foundation, Inc.
+Copyright (C) 2004-2018  Free Software Foundation, Inc.
 Written by Peter Schaffter (peter@schaffter.ca).
 
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.3 or
-any later version published by the Free Software Foundation; with the
-Invariant Sections being this comment section, with no Front-Cover
-Texts, and with no Back-Cover Texts.
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
+Texts.
 
 A copy of the Free Documentation License is included as a file called
 FDL in the main directory of the groff source package.
@@ -637,7 +637,7 @@ of the form
 <span class="pre-in-pp">
   internalname &lt;name&gt;
 </span>
-Usually, the internal name is helpfully descriptive, eg,
+Usually, the internal name is helpfully descriptive, e.g.,
 <br/>
 <span class="pre-in-pp">
   internalname Optima-Bold
@@ -832,15 +832,13 @@ helpful to everyone, groff newbies and old hands alike.
 
 <p>
 Mom&#8217;s macro file, om.tmac, uses long names, aliases, and a
-host of other groff goodies that have become part of the whole
-groff picture under the unflagging guidance of groff&#8217;s
-current maintainer, Werner Lemberg.  The function of nearly
-every macro, number register and string can be infered simply
-from its name.  The file is heavily commented.  A consistent, if
-idiosyncratic, indenting style is used as well, significantly
-improving readability.  Anyone wanting to futz around with
-mom&#8217;s macros should be able to do so with a minimum of head
-scratching.
+host of other groff goodies that have become part of the whole groff
+picture.  The function of nearly every macro, number register and
+string can be infered simply from its name.  The file is heavily
+commented.  A consistent, if idiosyncratic, indenting style is used
+as well, significantly improving readability.  Anyone wanting to
+futz around with mom&#8217;s macros should be able to do so with a
+minimum of head scratching.
 </p>
 
 <div class="box-tip">
@@ -902,4 +900,3 @@ typeset with mom and groff.
 
 </body>
 </html>
-<!-- vim: fileencoding=utf-8: nomodified: -->
index e447110..c03ceb4 100644 (file)
@@ -2,14 +2,14 @@
 <!--
 This file is part of groff, the GNU roff type-setting system.
 
-Copyright (C) 2004-2014  Free Software Foundation, Inc.
+Copyright (C) 2004-2018  Free Software Foundation, Inc.
 Written by Peter Schaffter (peter@schaffter.ca).
 
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.3 or
-any later version published by the Free Software Foundation; with the
-Invariant Sections being this comment section, with no Front-Cover
-Texts, and with no Back-Cover Texts.
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
+Texts.
 
 A copy of the Free Documentation License is included as a file called
 FDL in the main directory of the groff source package.
@@ -58,8 +58,8 @@ Afterward, any time you want text to be coloured, you either colour
 it with an
 <a href="definitions.html#inlines">inline escape</a>
 that contains the colour name (e.g. <kbd>\*[red]</kbd>
-or <kbd>\*[blue]</kbd>) or invoke the macro,
-<kbd><a href="#color">COLOR</a></kbd>,
+or <kbd>\*[blue]</kbd>) or invoke the macro
+<kbd><a href="#color">COLOR</a></kbd>
 with the name of the colour you want.
 </p>
 
@@ -222,13 +222,13 @@ could enter one of the following:
   .NEWCOLOR YELLOW #FFFF00         \"or ##FFFFFFFF0000 or "1 1 0"
   .NEWCOLOR YELLOW RGB #FFFF00     \"or ##FFFFFFFF0000 or "1 1 0"
   .NEWCOLOR YELLOW CYM #00FF00     \"or ##0000FFFF0000 or "0 1 0"
-  .NEWCOLOR YELLOW CYMK #00FF0000  \"or ##0000FFFF00000000 or "1 1 0"
+  .NEWCOLOR YELLOW CYMK #00FF0000  \"or ##0000FFFF00000000 or "0 0 1 0"
 </span>
 After you've told mom about a colour, you can then get her to set
 text in that colour either with the
 <a href="definitions.html#inlines">inline escape</a>,
 <a href="#color-inline"><kbd>\*[&lt;colorname&gt;]</kbd></a>,
-or the macro,
+or the macro
 <a href="#color">COLOR</a>.
 (See the
 <a href="#color-example">example</a>,
@@ -442,7 +442,7 @@ Once you've told mom about a colour (via
 <a href="#newcolor">NEWCOLOR</a>
 or
 <a href="#xcolor">XCOLOR</a>,
-you use either the macro, COLOR, or the
+you use either the macro COLOR or the
 <a href="definitions.html#inlines">inline escape</a>,
 <kbd>\*[&lt;colorname&gt;]</kbd>, to cause mom to
 set subsequent text in that colour.  See the
@@ -504,4 +504,3 @@ in the notes at the end of
 
 </body>
 </html>
-<!-- vim: fileencoding=utf-8: nomodified: -->
index 3b49df8..e18a1c3 100644 (file)
@@ -2,14 +2,14 @@
 <!--
 This file is part of groff, the GNU roff type-setting system.
 
-Copyright (C) 2004-2014  Free Software Foundation, Inc.
+Copyright (C) 2004-2018  Free Software Foundation, Inc.
 Written by Peter Schaffter (peter@schaffter.ca).
 
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.3 or
-any later version published by the Free Software Foundation; with the
-Invariant Sections being this comment section, with no Front-Cover
-Texts, and with no Back-Cover Texts.
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
+Texts.
 
 A copy of the Free Documentation License is included as a file called
 FDL in the main directory of the groff source package.
@@ -40,28 +40,42 @@ FDL in the main directory of the groff source package.
 
 <h1 class="docs">Creating cover pages</h1>
 
-<div style="width: 63%; margin: auto;">
+<div style="width: 66%; margin: auto;">
 <ul class="no-enumerator">
   <li><a href="#cover-intro">Introduction to cover pages</a>
   <ul style="margin-left: -.5em; list-style-type: disc;">
     <li><a href="#important-note">Important note</a></li>
     <li><a href="#desc">Description of cover pages</a></li>
-    <li><a href="#pagination">Headers/footers/pagination and cover pages</a></li>
+    <li><a href="#pagination">Headers/footers/pagination</a>
+      <ul style="margin-left: -1.25em; list-style-type: circle;">
+        <li><a href="#pagination">DOC_COVERS_COUNT_PAGES</a></li>
+        <li><a href="#pagination">COVERS_COUNT_PAGES</a></li>
+      </ul>
+    </li>
     <li><a href="#design">Designing your own cover pages</a></li>
+    <li><a href="#persistence">Persistence of data and formatting</a></li>
   </ul></li>
-  <li><a href="#index-covers">Cover and document cover macros</a>
+  <li><a href="#index-covers">Doc-cover and cover macros</a>
   <ul style="margin-left: -.5em; list-style-type: disc;">
-    <li><a href="#cover">COVER / DOC_COVER</a>
-    <ul style="margin-left: -.5em; list-style-type: circle;">
-      <li><a href="#required-arg">The required argument</a></li>
+    <li><a href="#cover">DOC_COVER / COVER</a>
+    <ul style="margin-left: -1.25em; list-style-type: circle;">
+      <li><a href="#cover-args">The argument list: saying what goes on doc-cover and cover pages</a></li>
+      <li><a href="#meanings">What the arguments mean</a></li>
       <li><a href="#chapter">How the CHAPTER argument and friends work</a></li>
-      <li><a href="#optional-args">The optional arguments</a></li>
-      <li><a href="#doctype">What the DOCTYPE argument means</a></li>
-      <li><a href="#blankpage">What the BLANKPAGE argument means</a></li>
     </ul></li>
+    <li><a href="#covertext">DOC_COVERTEXT / COVERTEXT</a>
+      <ul style="margin-left: -1.25em; list-style-type: circle;">
+        <li><a href="#placement">Placement</a></li>
+      </ul>
+    </li>
+    <li><a href="#coverimage">DOC_COVER_IMAGE / COVER_IMAGE</a>
+      <ul style="margin-left: -1.25em; list-style-type: circle;">
+        <li><a href="#positioning">Positioning of doc-cover and cover images</a></li>
+      </ul>
+    </li>
   </ul></li>
   <li><a href="#on-off">Enabling/disabling automatic generation of cover pages</a></li>
-  <li><a href="#cover-control">Control macros for covers and doc covers</a></li>
+  <li><a href="#cover-control">Control macros for covers and doc-covers</a></li>
 </ul>
 </div>
 
@@ -71,15 +85,15 @@ FDL in the main directory of the groff source package.
 
 <p>
 Though identical in treatment, mom provides two kinds of cover
-pages: document cover pages (&#8221;doc covers&#8221;), and section
+pages: document cover pages (&#8221;doc-covers&#8221;), and section
 cover pages (which I shall refer to simply as cover pages).
 </p>
 
 <p>
-A doc cover is what you&#8217;d most likely use at the start of a
+A doc-cover is what you&#8217;d most likely use at the start of a
 collated document, where you might want the name of the complete
 document, the author(s) and the copyright line to appear.  Another
-place you might use a doc cover is for a novel, where you want the
+place you might use a doc-cover is for a novel, where you want the
 title of the novel, not the chapter title or chapter number, as the
 first cover page.
 </p>
@@ -87,26 +101,26 @@ first cover page.
 <p>
 A cover is what you&#8217;d use for pages that separate sections
 of a collated document, ie title pages.  A cover page (but not a
-doc cover) in a collated document could, for example, simply read:
+doc-cover) in a collated document could, for example, simply read:
 &#8221;PART 1&#8221;.
 </p>
 
 <p>
 In non-collated documents (say, an essay) you can use either a cover
-or doc cover to generate the cover sheet.
+or doc-cover to generate the cover sheet.
 </p>
 
 <p>
-In addition, nothing prevents you from generating both a doc cover
+In addition, nothing prevents you from generating both a doc-cover
 and a cover for every document in a collated document.  Or you can
-selectively disable the automatic generation of either doc covers or
+selectively disable the automatic generation of either doc-covers or
 covers in a collated document on-the-fly.
 </p>
 
 <div id="important-note" class="box-important">
 <p class="tip">
 <span class="important">Important note:</span>
-Automatic generation of covers or doc covers after the first one(s)
+Automatic generation of covers or doc-covers after the first one(s)
 only takes place if you are working with collated documents.  Mom
 provides no mechanism for saying &#8221;print a section cover
 here even though I'm still working on the same (non-collated)
@@ -117,7 +131,7 @@ document.&#8221;
 <h3 id="desc" class="docs">Description of cover pages</h3>
 
 <p>
-By default, mom typesets covers and doc covers  identically to
+By default, mom typesets covers and doc-covers  identically to
 <a href="definitions.html#docheader">docheaders</a>
 (see
 <a href="docprocessing.html#docheader-control">How to change the look of docheaders</a>
@@ -127,51 +141,55 @@ differences are
 <ul style="margin-top: -.5em;  margin-bottom: -.5em;">
   <li>the position on the page where the information is output</li>
   <li>the (optional) addition of copyright and miscellaneous information</li>
-  <li>there&#8217;s no running text underneath</li>
+  <li>there&#8217;s no running text underneath, although you can add text
+      to a cover or doc-cover (for example, an Abstract) with
+      <a href="#covertext">COVERTEXT</a>
+   </li>
 </ul>
 
 <p>
 You tell mom what you want to appear on cover pages through the
 arguments you pass to
-<a href="#cover">COVER</a>
+<a href="#cover">DOC_COVER</a>
 and/or
-<a href="#cover">DOC_COVER</a>.
+<a href="#cover">COVER</a>.
 Provided you have already given mom the appropriate reference macros
-(eg
+(e.g.,
 <a href="docprocessing.html#title">TITLE</a>
 or
 <a href="docprocessing.html#author">AUTHOR</a>),
-she will output covers and doc covers identically to how she
+she will output covers and doc-covers identically to how she
 would output docheaders containing the same information.
 </p>
 
 <p>
-By default, mom starts covers and doc covers one-third of the way
+By default, mom starts covers and doc-covers one-third of the way
 down the page.  This can be changed through the use of the control
-macros COVER_ADVANCE / DOC_COVER_ADVANCE.
+macros DOC_COVER_START_POS / COVER_START_POS (or DOC_COVER_ADVANCE /
+COVER_ADVANCE).
 </p>
 
 <p>
 If you request copyright information (and have already given mom the
-reference macro,
-<a href="docprocessing.html#copyright">COPYRIGHT</a>),
+reference macro
+<a href="docprocessing.html#copyright">COPYRIGHT</a>)
 she sets it, by default, in a smaller
 <a href="definitions.html#ps">point size</a>
-in the bottom right hand corner of the cover or doc cover.  The
+in the bottom right hand corner of the cover or doc-cover.  The
 position, as well as all of the standard typesetting parameters, can be
 altered via control macros.
 </p>
 
 <p>
 Similarly, if you request miscellaneous information (and have
-already given mom the reference macro,
-<a href="docprocessing.html#misc">MISC</a>),
+already given mom the reference macro
+<a href="docprocessing.html#misc">MISC</a>)
 she sets it, by default, in a smaller point size in the bottom left
-hand corner of the cover or doc cover.  As with the copyright, the
+hand corner of the cover or doc-cover.  As with the copyright, the
 position and type specs can be altered via control macros.
 </p>
 
-<h3 id="pagination" class="docs">Headers/footers/pagination and cover pages</h3>
+<h3 id="pagination" class="docs">Headers/footers/pagination</h3>
 
 <p>
 Mom does not set any
@@ -179,81 +197,75 @@ Mom does not set any
 or
 <a href="definitions.html#footer">footers</a>
 on cover pages.  Neither does she set any page numbers.  From
-the point of view of pagination, covers and doc covers are by
+the point of view of pagination, covers and doc-covers are by
 default considered &#8221;null&#8221; pages.  If you wish them to
 be included in the pagination scheme (even though no page numbers
-appear), you must tell mom that&#8217;s what you want with the
-macros DOC_COVERS_COUNT_PAGES and/or COVERS_COUNT_PAGES.
+appear), you must tell mom that&#8217;s what you want by invoking
+<br/>
+<span class="pre-in-pp">
+  .DOC_COVERS_COUNT_PAGES
+</span>
+or
+<br/>
+<span class="pre-in-pp">
+  .COVERS_COUNT_PAGES
+</span>
 </p>
 
 <h3 id="design" class="docs">Designing your own cover pages</h3>
 
 <p>
 Finally, if you want to design your own cover page(s), you can
-always typeset them (using the
-<a href="typesetting.html#macros-typesetting">typesetting macros</a>),
-invoke
-<a href="typesetting.html#newpage"><kbd>.NEWPAGE</kbd></a>,
-set up your document (see
-<a href="docprocessing.html#docprocessing-tut">Tutorial &ndash; Setting up a mom document</a>),
-and lastly invoke
-<a href="docprocessing.html#start"><kbd>.START</kbd></a>.
-The cover page, and any typesetting commands on it, will have no
-effect on mom&#8217;s processing of the document after you invoke
-<kbd><a href="docprocessing.html#START">.START</a></kbd>.
+typeset them by hand inside a
+<a href="#covertext">COVERTEXT</a>
+block using mom&#8217;s typesetting macros to format the text.
+</p>
+
+<h3 id="persistence" class="docs">Persistence of data and formatting</h3>
+
+<p>
+Doc-cover and cover data&mdash;that is to say, the strings passed to
+reference macros that appear on doc-cover and cover
+pages&mdash;does not persist after
+<a href="docprocessing.html#start">START</a>,
+however the formatting of the various parts (TITLE, AUTHOR,
+COPYRIGHT, etc.) does.
 </p>
 
 <div class="macro-list-container">
 <h3 id="index-covers" class="macro-list">Cover and document cover macros</h3>
 <ul class="macro-list">
-  <li><a href="#cover">COVER and DOC_COVER</a>
+  <li><a href="#cover">DOC_COVER and COVER</a>
   <ul style="margin-left: -.5em; list-style-type: disc;">
-    <li><a href="#required-and-optional-args">Required and optional arguments</a></li>
+    <li><a href="#cover-args">The arguments: saying what goes on doc-cover and cover pages</a></li>
   </ul></li>
+  <li><a href="#covertext">DOC_COVERTEXT / COVERTEXT</a></li>
+  <li><a href="#coverimage">DOC_COVER_IMAGE / COVER_IMAGE</a></li>
   <li><a href="#on-off">Enabling/disabling automatic generation of cover pages</a>
   <ul style="margin-left: -.5em; list-style-type: disc;">
-    <li><a href="#covers">COVERS</a></li>
     <li><a href="#doc-covers">DOC_COVERS</a></li>
+    <li><a href="#covers">COVERS</a></li>
   </ul></li>
-  <li><a href="#cover-control">Control macros for covers and doc covers</a></li>
+  <li><a href="#cover-control">Control macros for doc-covers and covers</a></li>
 </ul>
 </div>
 
 <!-- -COVER- -->
 
 <div class="macro-id-overline">
-<h3 id="cover" class="macro-id">COVER and DOC_COVER</h3>
+<h3 id="cover" class="macro-id">DOC_COVER and COVER</h3>
 </div>
 
-<div class="box-macro-args">
-Macro: <b>COVER</b> <kbd class="macro-args">(see required and optional arguments, below)</kbd>
-</div>
-
-<div id="doc-cover" class="box-macro-args" style="margin-top: 1em;">
-Macro: <b>DOC_COVER</b> <kbd class="macro-args">(see required and optional arguments, below)</kbd>
-</div>
-
-<div id="required-and-optional-args" style="margin-top: 1em; padding-bottom: 3px; white-space: nowrap; overflow: auto;">
-<b><a href="#required-arg">Required argument:</a></b> <kbd class="macro-args">TITLE | DOCTITLE | COVERTITLE | CHAPTER | CHAPTER_TITLE | CHAPTER+TITLE</kbd>
-</div>
-
-<div style="margin-top: .5em; padding-bottom: 3px; white-space: nowrap; overflow: auto;">
-<b><a href="#optional-args">Optional arguments:</a></b> <kbd class="macro-args">[ SUBTITLE AUTHOR DOCTYPE COPYRIGHT MISC BLANKPAGE PDF_OUTLINE_LABEL &lt;label&gt; ]</kbd>
+<div id="doc-cover" class="box-macro-args">
+Macro: <b>DOC_COVER</b> <kbd class="macro-args">(see argument list, below)</kbd>
 </div>
 
-<div class="box-tip">
-<p class="tip">
-<span class="note">Note:</span>
-These macros should be placed in the style sheet section of your
-document setup (see
-<a href="docprocessing.html#docprocessing-tut">Tutorial &ndash; Setting up a mom document</a>),
-ie after PRINTSTYLE (and/or DOCTYPE and/or COPYSTYLE), but before
-START.
-</p>
+<div class="box-macro-args" style="margin-top: 1em;">
+Macro: <b>COVER</b> <kbd class="macro-args">(see argument list, below)</kbd>
 </div>
 
-<p style="margin-top: -.25em;">
-COVER and DOC_COVER behave identically.  The reason mom provides
+<p>
+DOC_COVER and COVER behave identically.  The reason mom provides
 two macros for cover page generation is so that you can have two
 different kinds of covers with different information on each.
 </p>
@@ -267,50 +279,166 @@ page that contained the name of the entire document, your (the
 author&#8217;s) name, and perhaps the copyright date.  Subsequently,
 you could use COVER, after each <kbd>.COLLATE</kbd> but before each
 <kbd><a href="docprocessing.html#start">.START</a></kbd>,
-to generate a cover page (or cover &#8221;sheet&#8221;, if you
-prefer) containing just the name of the section.
+to generate a cover page (title page, cover sheet) containing
+just the name of the section, for example, &#8220;Part 1&#8221;.
 </p>
 
-<h4 id="required-arg" class="docs" style="margin-top: -.5em;">The required argument</h4>
-
 <p>
-Both COVER and DOC_COVER, whenever invoked, require a first
-argument, as listed above.  This first argument will become the
-first bit of information mom prints on the cover or doc cover (ie
-the title).
+The arguments to <kbd>DOC_COVER</kbd> and <kbd>COVER</kbd> tell mom
+what you&#8217;d like on cover pages.  You may give as many or as
+few arguments as you need, in any order.  A very common setup would
+be:
+<br/>
+<span class="pre-in-pp">
+  .COVER TITLE AUTHOR COPYRIGHT
+</span>
 </p>
 
-<p>
-In order for the information to appear, you must, of course, have
-given mom the appropriate
-<a href="docprocessing.html#reference-macros">reference macro</a>.
-A list of first arguments with their equivalent reference macros follows.
+<h4 id="cover-args" class="docs" style="margin-top: -1em;">The argument list</h4>
+
+<p style="margin-top: 1em">
+The arguments to <kbd>COVER</kbd> and <kbd>DOC_COVER</kbd> tell mom
+what you want on the cover page:
+<br/>
+<span class="pre-in-pp">
+  TITLE | DOCTITLE | DOC_COVERTITLE | COVERTITLE
+  CHAPTER | CHAPTER_TITLE | CHAPTER+TITLE
+  SUBTITLE
+  AUTHOR
+  DOCTYPE
+  DOC_COVERTEXT | COVERTEXT
+  DOC_COVER_IMAGE | COVER_IMAGE
+  COPYRIGHT
+  MISC
+  PDF_OUTLINE_LABEL "&lt;label&gt;"
+  BLANKPAGE
+</span>
 </p>
 
-<dl style="margin-top: -.5em;">
-  <dt class="no-italic"><kbd>TITLE</kbd></dt>
-  <dd>
-  &ndash; means the argument you gave to <a href="docprocessing.html#title">TITLE</a>
-  </dd>
-  <dt class="no-italic"><kbd>DOCTITLE</kbd></dt>
-  <dd>
-  &ndash; means the argument you gave to <a href="docprocessing.html#doc-title">DOCTITLE</a>
-  </dd>
-  <dt class="no-italic"><kbd>COVERTITLE</kbd></dt>
-  <dd>
-  &ndash; means the argument you gave to <a href="docprocessing.html#covertitle">COVERTITLE</a>
-  or
-  <a href="docprocessing.html#doc-covertitle">DOC_COVERTITLE</a>
-  </dd>
-  <dt class="no-italic"><kbd>CHAPTER, CHAPTER_TITLE, CHAPTER+TITLE</kbd></dt>
-  <dd>
-  &ndash; see below, <i>How the CHAPTER argument and friends work</i>
-  </dd>
-</dl>
+<h4 id="meanings" class="docs" style="margin-top: -1em;">What the arguments mean</h4>
+
+<dl>
+  <dt class="params">TITLE</dt>
+    <dd class="cover-args">&ndash; the string(s) you gave to
+      <a href="docprocessing.html#title">TITLE</a>
+    </dd>
+  <dt class="params">DOCTITLE</dt>
+    <dd class="cover-args">&ndash; the string(s) you gave to
+      <a href="docprocessing.html#doc-title">DOCTITLE</a>
+    </dd>
+  <dt class="params">DOC_COVERTITLE / COVERTITLE</dt>
+    <dd class="cover-args">&ndash; the string(s) you gave to
+      <a href="docprocessing.html#doc-covertitle">DOC_COVERTITLE</a>
+      or
+      <a href="docprocessing.html#covertitle">COVERTITLE</a>
+    </dd>
+  <dt class="params">CHAPTER, CHAPTER_TITLE, CHAPTER+TITLE</dt>
+    <dd class="cover-args">&ndash; see below,
+      <a href="#chapter">How the CHAPTER argument and friends work</a>
+    </dd>
+  <dt class="params">SUBTITLE</dt>
+    <dd class="cover-args">&ndash; the string(s) you gave to
+      <a href="docprocessing.html#subtitle">SUBTITLE</a>
+    </dd>
+  <dt class="params">AUTHOR</dt>
+    <dd class="cover-args">&ndash; the string(s) you gave to
+      <a href="docprocessing.html#author">AUTHOR</a>
+    </dd>
+  <dt class="params">DOCTYPE</dt>
+    <dd class="cover-args">&ndash; the string you gave to
+      <a href="docprocessing.html#doctype">DOCTYPE NAMED</a>
+    </dd>
+  <dt class="params">DOC_COVERTEXT / COVERTEXT</dt>
+    <dd class="cover-args">&ndash; the block of type you entered for
+      <a href="#covertext">DOC_COVERTEXT</a>
+      or
+      <a href="#covertext">COVERTEXT</a>
+    </dd>
+  <dt class="params">DOC_COVER_IMAGE / COVER_IMAGE</dt>
+    <dd class="cover-args">&ndash; the image file you gave to
+      <a href="#covertext">DOC_COVER_IMAGE</a>
+      or
+      <a href="#covertext">COVER_IMAGE</a>
+    </dd>
+  <dt class="params">COPYRIGHT</dt>
+    <dd class="cover-args">&ndash; the string you gave to
+      <a href="docprocessing.html#copyright">COPYRIGHT</a>
+    </dd>
+  <dt class="params">MISC</dt>
+    <dd class="cover-args">&ndash; the string(s) you gave to
+      <a href="docprocessing.html#misc">MISC</a>
+    </dd>
+  <dt class="params">PDF_OUTLINE_LABEL &lt;label&gt;</dt>
+    <dd class="cover-args">
+      <span style="display:block; margin-left: 1em">
+      By default, mom identifies doc-covers in the outline panel of PDF
+      viewers with the prepended label, &#8220;Cover:&#8221;, and covers
+      with the label &#8220;Title Page:&#8221;.  If you would like
+      to change the label, give the <kbd>PDF_OUTLINE_LABEL</kbd>
+      argument to DOC_COVER or COVER along with the new label, in
+      quotation marks, as in this example:
+      <br/>
+      <kbd>&nbsp;&nbsp;.COVER TITLE AUTHOR COPYRIGHT PDF_LABEL "Cover Sheet: "</kbd>
+      </span>
+    </dd>
+  <dt class="params">BLANKPAGE</dt>
+    <dd class="cover-args">
+      <span style="display:block; margin-left: 1em">
+      If the final argument to DOC_COVER or COVER is <kbd>BLANKPAGE</kbd>,
+      mom will insert a blank page after the doc-cover or cover.  This is
+      particularly useful if you intend to print your document two-sided,
+      since, in two-sided printing, there may be instances where you do
+      not want text on the reverse side of cover or title pages
+      </span>
+      <span style="display:block; margin-left: 1em; margin-top: .5em">
+      If you enable
+      <a href="#pagination">DOC_COVERS_COUNT_PAGES</a>
+      and/or
+      <a href="#pagination">COVERS_COUNT_PAGES</a>,
+      the blank page will be taken into account in the pagination
+      scheme, though no page number appears on it.  Otherwise, blank
+      pages are invisible to mom's pagination.
+      </span>
+    </dd>
+<dl/>
 
-<h5 id="chapter" class="docs" style="margin-top: -.5em; text-transform: none;">How the CHAPTER argument and friends work</h5>
+<p>
+Please note that in all cases, if you have passed
+a reference macro one of the optional arguments
+<kbd>DOC_COVER</kbd> or <kbd>COVER</kbd> (e.g.
+<kbd>.TITLE&nbsp;DOC_COVER&nbsp;"Title"</kbd>), mom will print the
+appropriate string on the appropriate cover page.  Thus,
+<br/>
+<span class="pre-in-pp">
+  .TITLE DOC_COVER "Collected Essays"
+  .TITLE COVER "1985-2015"
+  .TITLE "Neo-liberalism: Who Did They Think They Were Fooling?"
+  .DOC_COVER TITLE
+  .COVER TITLE
+</span>
+will print &#8220;Collected Essays&#8221; on the doc-cover page,
+&#8220;1985-2015&#8221; on the cover page, and, assuming the
+docheader hasn&#8217;t been disabled, &#8220;Neo-liberalism: Who
+Did They Think They Were Fooling?&#8221; as the title in the
+docheader.
+</p>
 
 <p>
+Note that
+<br/>
+<span class="pre-in-pp">
+  .DOC_COVERTITLE "Collected Essays"
+  .COVERTITLE "1985-2015"
+  .TITLE "Neo-liberalism: Who Did They Think They Were Fooling?"
+  .DOC_COVER DOC_COVERTITLE
+  .COVER COVERTITLE
+</span>
+could be used to accomplish the same thing.
+</p>
+
+<h5 id="chapter" class="docs" style="margin-top: 0; text-transform: none;">How the CHAPTER argument and friends work</h5>
+
+<p style="margin-top: .75em">
 <span style="display: block; margin-bottom: -1.25em; font-weight: bold;">&bull;&nbsp;CHAPTER</span>
 <br/>
 The <kbd>CHAPTER</kbd> argument will print the
@@ -322,7 +450,7 @@ For example, assuming a vanilla setup for your chapter:
 <span class="pre-in-pp" style="color: #64614a;">
   .CHAPTER 1
   .CHAPTER_TITLE "The Bonny Blue Yonder"
-  <span style="color: #941614;">.COVER CHAPTER</span>  \"(or <span style="color: #941614;">.DOC_COVER CHAPTER</span>)
+  <span style="color: #941614;">.COVER CHAPTER</span>  \" (or <span style="color: #941614;">.DOC_COVER CHAPTER</span>)
 </span>
 will print (and only print)
 <br/>
@@ -371,72 +499,196 @@ will print
 </span>
 </p>
 
-<h4 id="optional-args" class="docs" style="margin-top: -1em;">The optional arguments</h4>
+<div class="macro-id-overline">
+<h3 id="covertext" class="macro-id">DOC_COVERTEXT and COVERTEXT</h3>
+</div>
+
+<div class="box-macro-args">
+Macro: <b>DOC_COVERTEXT</b> <kbd class="macro-args">&lt;toggle&gt;</kbd>
+</div>
+<div class="box-macro-args" style="margin-top: 1em;">
+Macro: <b>COVERTEXT</b> <kbd class="macro-args">&lt;toggle&gt;</kbd>
+</div>
+
+<p class="requires">
+&bull;&nbsp;Must come after
+<a href="#printstyle"><span class="normal">PRINTSTYLE</span></a>
+</p>
+
+<p>
+<kbd>DOC_COVERTEXT</kbd> and <kbd>COVERTEXT</kbd> allow you to add
+text to doc-covers and covers in addition to, or instead of, what is
+generated by mom from the arguments you give to
+<a href="#doccover">DOC_COVER</a>
+and
+<a href="#doccover">COVER</a>.
+</p>
+
+<p>
+Invoke <kbd>.DOC_COVERTEXT</kbd> or <kbd>.COVERTEXT</kbd> on a line
+by itself, follow it with the text and formatting you desire, and
+terminate the text block with <kbd>.DOC_COVERTEXT&nbsp;OFF</kbd> or
+<kbd>COVERTEXT&nbsp;OFF</kbd> (or <kbd>QUIT, END, DONE</kbd>, etc.).
+</p>
+
+<p>
+By default, cover text is set over the full line length of the
+document, using the style parameters of
+<a href="definitions.html#running">running text</a>.
+Therefore, as noted, these macros must come after PRINTSTYLE
+and any global style changes (margins, family, size, leading,
+etc.).  Formatting within a cover text block must be done
+&#8220;manually&#8221; with mom&#8217;s typesetting macros;
+<a href="docelement.html#pp">PP</a>
+is the only allowed document element tag.
+</p>
+
+<h4 id="placement" class="docs">Placement</h4>
 
 <p>
-The remainder of the arguments to COVER and
-DOC_COVER are optional.  They refer specifically to
-the information you gave the
-<a href="docprocessing.html#reference-macros">reference macros</a>
-bearing the same name as the arguments.  You may enter as many or as
-few as you like, in any order.
+If you do not instruct mom to put anything on doc-cover or cover
+pages except <kbd>DOC_COVERTEXT</kbd> or <kbd>COVERTEXT</kbd>, the
+cover text will begin at the document&#8217;s top margin.  You must
+use
+<a href="typesetting.html#space">SP</a>
+or
+<a href="typesetting.html#ald">ALD</a>
+to move it further down the page.  Equally, if only
+<kbd>COPYRIGHT</kbd> and/or <kbd>MISC</kbd> are to go on the pages,
+cover text begins at the top margin.  In all other cases, cover text
+begins below the last element on the page (excluding COPYRIGHT or
+MISC), separated by a blank line.
 </p>
 
-<h5 id="doctype" class="docs" style="text-transform: none; margin-top: -.5em;">What the DOCTYPE argument means</h5>
+<p>
+<kbd>DOC_COVERTEXT</kbd> and <kbd>COVERTEXT</kbd> are particularly
+useful for putting abstracts on cover pages, as technical reports
+often require.
+</p>
 
 <p>
-When you pass COVER or DOC_COVER
-the argument, <kbd>DOCTYPE</kbd>, it refers to the argument you gave
-to
-<a href="docprocessing.html#doctype">DOCTYPE</a>&nbsp;<kbd>NAMED</kbd>.
-For example, if, in your
-<a href="docprocessing.html#docstyle-macros">docstyle macros</a>
-you gave a
+Here's a simple recipe for setting an abstract:
 <br/>
 <span class="pre-in-pp">
-    .DOCTYPE NAMED "Abstract"
+  .COVERTEXT
+  .FT BI
+  .PT_SIZE 14
+  .LS 14
+  .CENTER
+  Abstract
+  .SP .5v
+  .FT R
+  .PT_SIZE 12
+  .IB 6P
+  .JUSTIFY
+  Text of Abstract...
+  .COVERTEXT OFF
 </span>
-the argument, <kbd>DOCTYPE</kbd>, given to the COVER or DOC_COVER
-macros, would mean that you wanted the word, Abstract, to appear on
-the cover or doc cover underneath the title and/or author(s), just
-as it would in the
-<a href="docprocessing.html#docheader">docheader</a>.
+Assuming you have told mom to put the title and author on the
+cover page, the abstract will appear beneath the author with a
+14-point bold-italic title, centered, with the text of the abstract
+medium-roman and justified, indented 6 picas from both margins.
 </p>
 
-<h5 id="blankpage" class="docs" style="text-transform: none; margin-top: -.5em;">What the BLANKPAGE argument means</h5>
+<div class="macro-id-overline">
+<h3 id="coverimage" class="macro-id">DOC_COVER_IMAGE and COVER_IMAGE</h3>
+</div>
+
+<div id="coverimage" class="box-macro-args">
+Macro: <b>DOC_COVER_IMAGE</b> <kbd class="macro-args">&lt;image&gt; &lt;width&gt; &lt;height&gt; [ -L | -C | -R | -I &lt;indent&gt; &lt;Y-pos&gt; [ &lt;X-pos&gt; ] ]</kbd>
+</div>
+
+<div id="coverimage" class="box-macro-args" style="margin-top: 1em;">
+Macro: <b>COVER_IMAGE</b> <kbd class="macro-args">&lt;image&gt; &lt;width&gt; &lt;height&gt; [ -L | -C | -R | -I &lt;indent&gt; &lt;Y-pos&gt; [ &lt;X-pos&gt; ] ]</kbd> 
+</div>
 
 <p>
-If the final argument to DOC_COVER or COVER is <kbd>BLANKPAGE</kbd>,
-mom will insert a blank page after the doc cover or cover.  This is
-particularly useful if you intend to print your document two-sided,
-since, in two-sided printing, there may be instances where you do
-not want text on the reverse side of cover or title pages.
+There are times you need a full page image on a cover, for example
+the jacket of a book.  Equally, there are times when you need a small
+image on the cover, perhaps a company logo.
 </p>
 
 <p>
-If you enable DOC_COVERS_COUNT_PAGES and/or COVERS_COUNT_PAGES, the
-blank page will be taken into account in the pagination scheme,
-though no page number appears on it.  Otherwise, blank pages are
-invisible to mom's pagination.
+DOC_COVER_IMAGE and COVER_IMAGE take the same arguments
+as PDF_IMAGE, and in the same order.  Consult
+<a href="images.html#pdf-image">PDF_IMAGE</a>
+for a desciption.
 </p>
 
-<h5 id="pdf-label" class="docs" style="text-transform: none; margin-top: -.5em;">What the PDF_OUTLINE_LABEL argument means</h5>
+<p>
+Two additional arguments allow you to place images using x-y
+coordinates.  Please note that if you use x-y coordinates for
+positioning, <b>Y-pos</b> comes before <b>X-pos</b> in the order of
+arguments.
+</p>
 
 <p>
-By default, mom identifies doccovers in the outline panel of PDF
-viewers with the prepended string, &#8220;Cover:&#8221;, and covers
-with the string &#8220;Title Page:&#8221;.  If you would like
-to change the strings, pass the <kbd>PDF_OUTLINE_LABEL</kbd>
-argument to COVER or DOCCOVER, along with the new string.
+Like PDF_IMAGE, the image file must be in PDF format.  Mom
+apologizes, but PostScript images are not supported for inclusion on
+covers.  See
+<a href="images.html#pdf">Image conversion and file processing</a>
+for instructions on converting various image types to PDF, and
+<a href="images.html#bounding-box">here</a>
+for instructions on obtaining image dimensions.
 </p>
 
-<!-- -ENABLING/DISABLING- -->
+<h4 id="positioning" class="docs">Positioning of doc-cover and cover images</h4>
 
-<div class="macro-id-overline">
+<p>
+With no arguments other than <kbd>&lt;file name&gt;</kbd>,
+<kbd>&lt;width&gt;</kbd>, and <kbd>&lt;height&gt;</kbd>,
+DOC_COVER_IMAGE and COVER_IMAGE place images flush with the top
+left corner of the printer sheet.  This allows placing full-page
+background images on covers.  For example, assuming a US-letter page
+size,
+<br/>
+<span class="pre-in-pp">
+  .DOC_COVER_IMAGE image.pdf 612p 792p
+  .DOC_COVER TITLE AUTHOR DOC_COVER_IMAGE
+</span>
+will fill the doc-cover page with &#8220;image.pdf&#8221; and set
+the title and author in their usual locations.
+</p>
+
+<p>
+For smaller images, the horizontal position is established
+with one of the <kbd>-L</kbd>, <kbd>-C</kbd>, <kbd>-R</kbd>, or
+<kbd>-I&nbsp;&lt;indent&gt;</kbd> arguments, just like
+<a href="images.html#pdf-image">PDF_IMAGE</a>.
+You may instead use the <kbd>X-pos</kbd> argument, provided that it
+is preceded by a <kbd>Y-pos</kbd> argument.  The values given to
+<kbd>-I</kbd>, <kbd>Y-pos</kbd> and <kbd>X-pos</kbd> must have a
+<a href="definitions.html#unitofmeasure">unit of measure</a>
+appended to them.
+</p>
+
+<p>
+Vertical positioning of smaller images requires the <kbd>Y-pos</kbd>
+argument (which is why it precedes <kbd>X-pos</kbd> in the order of
+arguments) otherwise the image will be flush with the top edge of
+the printer sheet
+</p>
+
+<p>
+The positioning of images does not effect the placement of type on
+doc-cover and cover pages.
+</p>
+
+<div class="box-tip">
+<p class="tip">
+<span class="note">Tip:</span>
+The combination of
+<a href="#covertext">COVERTEXT</a>
+and COVER_IMAGE make it possible to design covers entirely to your
+own specifications.
+</p>
+</div>
+
+<div class="macro-id-overline" style="margin-top: .5em">
 <h3 id="on-off" class="macro-id">Enabling/disabling automatic generation of cover pages</h3>
 </div>
 
-<div id="covers" class="box-macro-args">
+<div id="covers" class="box-macro-args" style="margin-top: .5em">
 Macro: <b>COVERS</b> <kbd class="macro-args">&lt;toggle&gt;</kbd>
 </div>
 
@@ -449,7 +701,7 @@ By default, if you give mom a
 <a href="#cover">COVER</a>
 or
 <a href="#doc-cover">DOC_COVER</a>
-directive, she will print the cover or doc cover.  In a document
+directive, she will print the cover or doc-cover.  In a document
 that contains sections, articles or chapters formerly treated as
 &#8221;one-off&#8217;s&#8221; but now being
 <a href="rectoverso.html#collate-intro">collated</a>,
@@ -458,12 +710,11 @@ such behaviour may not be desirable.
 
 <p>
 Mom lets you selectively enable or disable the generation of covers
-and/or doc covers with the toggle macros, COVERS and DOC_COVERS.
+and/or doc-covers with the toggle macros, COVERS and DOC_COVERS.
 Because they&#8217;re toggle macros, simply invoking them by
-themselves enables automatic cover or doc cover generation, while
+themselves enables automatic cover or doc-cover generation, while
 invoking them with any argument at all (<kbd>OFF, QUIT, X</kbd>,
-etc) disables cover or doc cover generation.
-</p>
+etc) disables cover or doc-cover generation. </p>
 
 <div class="box-tip">
 <p class="tip">
@@ -482,10 +733,10 @@ instances of START.
 
 <div class="rule-short"><hr/></div>
 
-<h2 id="cover-control" class="macro-group">Control macros for covers and doc covers</h2>
+<h2 id="cover-control" class="macro-group">Control macros for doc-covers and covers</h2>
 
 <p>
-The default typographic appearance of the items on a cover or doc
+The default typographic appearance of the items on a doc-cover or
 cover is identical to that of the items in a
 <a href="definitions.html#docheader">docheader</a>.
 (See
@@ -501,111 +752,80 @@ which do not appear in docheaders, have the following default
 characteristics:
 </p>
 <ul style="margin-top: -.5em; margin-bottom: -.5em;">
-  <li>the COPYRIGHT line is set in the bottom right hand corner
-      of the page, 2
+  <li>the COPYRIGHT line is set flush with the document&#8217;s right
+      and bottom margins, 2
       <a href="definitions.html#ps">point sizes</a>
       smaller than the size of
       <a href="definitions.html#running">running text</a>
   </li>
-  <li>MISC lines are set in the bottom left hand
-      corner of the page, in the same family, font and point size
-      as the copyright line.
+  <li>MISC lines are set flush with the document&#8217;s left and bottom
+      margins, in the same family, font and point size as the
+      copyright line.
   </li>
 </ul>
 
 <p>
-The defaults for the entirety of covers and doc covers, and all the
+The defaults for the entirety of doc-covers and covers, and all the
 elements thereon, can be changed with control macros whose defaults
-and arguments are identical to the corresponding control macros
-governing docheaders.  The only difference is the name by which you
-invoke them.
-</p>
-
-<p>
-A complete list of cover and doc cover control macros follows.
-Please refer to
-<a href="docprocessing.html#index-docheader-control">docheader control</a>
-in order to get the defaults and any special instructions for usage.
-</p>
-
-<h3 id="index-cover-control" class="docs" style="margin-bottom: .25em;">Cover / doc cover control macros and defaults</h3>
-
-<div class="defaults-container" style="padding-bottom: 8px;">
-
-<span class="pre defaults">
-COVER_ADVANCE  DOC_COVER_ADVANCE -+
-COVER_FAMILY   DOC_COVER_FAMILY   | like
-COVER_LEAD     DOC_COVER_LEAD     | DOCHEADER_&lt;spec&gt;
-COVER_QUAD     DOC_COVER_QUAD    -+
-
-COVER_TITLE_FAMILY  DOC_COVER_TITLE_FAMILY -+
-COVER_TITLE_FONT    DOC_COVER_TITLE_FONT    | like
-COVER_TITLE_COLOR   DOC_COVER_TITLE_COLOR   | TITLE_&lt;spec&gt;
-COVER_TITLE_SIZE    DOC_COVER_TITLE_SIZE   -+
-
-COVER_CHAPTER_TITLE_FAMILY  DOC_COVER_CHAPTER_TITLE_FAMILY -+
-COVER_CHAPTER_TITLE_FONT    DOC_COVER_CHAPTER_TITLE_FONT    | like
-COVER_CHAPTER_TITLE_COLOR   DOC_COVER_CHAPTER_TITLE_COLOR   | CHAPTER_TITLE_&lt;spec&gt;
-COVER_CHAPTER_TITLE_SIZE    DOC_COVER_CHAPTER_TITLE_SIZE   -+
-
-COVER_SUBTITLE_FAMILY  DOC_COVER_SUBTITLE_FAMILY -+
-COVER_SUBTITLE_FONT    DOC_COVER_SUBTITLE_FONT    | like
-COVER_SUBTITLE_COLOR   DOC_COVER_SUBTITLE_COLOR   | SUBTITLE_&lt;spec&gt;
-COVER_SUBTITLE_SIZE    DOC_COVER_AUTHOR_SIZE     -+
-
-COVER_ATTRIBUTE_COLOR  DOC_COVER_ATTRIBUTE_COLOR - like ATTRIBUTE_COLOR
- - the macro, ATTRIBUTE_STRING, controls the attribution string
-   for both docheaders and cover pages; cover pages have no
-   separate ATTRIBUTE_STRING macro
-
-COVER_AUTHOR_FAMILY  DOC_COVER_AUTHOR_FAMILY -+
-COVER_AUTHOR_FONT    DOC_COVER_AUTHOR_FONT    | like
-COVER_AUTHOR_COLOR   DOC_COVER_AUTHOR_COLOR   | AUTHOR_&lt;spec&gt;
-COVER_AUTHOR_SIZE    DOC_COVER_AUTHOR_SIZE   -+
-
-COVER_DOCTYPE_FAMILY  DOC_COVER_DOCTYPE_FAMILY -+
-COVER_DOCTYPE_FONT    DOC_COVER_DOCTYPE_FONT    | like
-COVER_DOCTYPE_COLOR   DOC_COVER_DOCTYPE_COLOR   | DOCTYPE_&lt;spec&gt;
-COVER_DOCTYPE_SIZE    DOC_COVER_DOCTYPE_SIZE   -+
-
-COVER_COPYRIGHT_FAMILY  DOC_COVER_COPYRIGHT_FAMILY -+
-COVER_COPYRIGHT_FONT    DOC_COVER_COPYRIGHT_FONT    |
-COVER_COPYRIGHT_COLOR   DOC_COVER_COPYRIGHT_COLOR   | like any of the above
-COVER_COPYRIGHT_SIZE    DOC_COVER_COPYRIGHT_SIZE    |
-COVER_COPYRIGHT_QUAD    DOC_COVER_COPYRIGHT_QUAD   -+
-  - copyright quad sets both the position on the page and the quad
-    direction and can be either L (left) or R (right); default is right
-
-COVER_MISC_FAMILY  DOC_COVER_MISC_FAMILY -+
-COVER_MISC_FONT    DOC_COVER_MISC_FONT    |
-COVER_MISC_COLOR   DOC_COVER_MISC_COLOR   | like any of the above
-COVER_MISC_SIZE    DOC_COVER_MISC_SIZE    |
-COVER_MISC_QUAD    DOC_COVER_MISC_QUAD   -+
-  - misc quad sets both the position on the page and the quad
-    direction and can be either L (left) or R (right); default is left
-
-COVER_UNDERLINE    DOC_COVER_UNDERLINE - like DOCTYPE_UNDERLINE
-  - cover underline controls underlining of the argument given to
-    DOCTYPE NAMED "&lt;name&gt;" only
-
-COVER_COUNTS_PAGES DOC_COVER_COUNTS_PAGES
- - whether to consider cover pages in the pagination scheme; the
-   default is to ignore them
- - see Note
-</span>
-</div>
+and arguments are identical to the corresponding
+<a href="docprocessing.html#index-docheader-control">Control macros for docheaders</a>
+(q.v.)  The only difference is the name by which you invoke them.  Wherever
+<kbd>DOCHEADER</kbd> is used for overall changes, replace it
+with <kbd>DOC_COVER</kbd> or <kbd>COVER</kbd>.  For part-by-part
+changes, prepend <kbd>DOC_COVER_</kbd> or <kbd>COVER_</kbd> to the
+part/parameter.
+</p>
 
-<p style="margin-top: -2em;">
-<b>Note:</b>
+<p>
+Thus, to change the overall family, color, leading, quad and
+starting position of a doc-cover, you&#8217;d do
+<br/>
+<span class="pre-in-pp">
+  .DOC_COVER_FAMILY  H
+  .DOC_COVER_COLOR   blue
+  .DOC_COVER_LEAD    +2
+  .DOC_COVER_QUAD    L
+  .DOC_COVER_ADVANCE 3i \" or .DOC_COVER_START_POS 3i
+</span>
+To change the style parameters for selected parts of a cover, you
+might do something like this:
 <br/>
-COVER_COUNTS_PAGES and DOC_COVER_COUNTS_PAGES are toggle macros,
-hence invoking them by themselves means that mom will consider
-covers and doc covers in the pagination scheme; invoking them with
-any argument (<kbd>OFF, NO, X</kbd>, etc.) means they are ignored.
-The default is to ignore them.
+<span class="pre-in-pp">
+  .COVER_TITLE_FONT B
+  .COVER_TITLE_SIZE +4
+  .COVER_SUBTITLE_FONT I
+  .COVER_AUTHOR_FONT R
+  .COVER_AUTHOR_SPACE_BEFORE 6p
+  .COVER_DOCTYPE_COLOR red
+  .COVER_MISC_SIZE -1
+  .COVER_MISC_LEAD 12
+  .COVER_COPYRIGHT_SIZE -2
+  .COVER_COPYRIGHT_QUAD L
+  .COVER_MISC_QUAD R
+</span>
+Note in the above example that _COPYRIGHT_QUAD and _MISC_QUAD set
+both the horizontal position on the page and the quad direction,
+either L (or LEFT) or R (or RIGHT), and have no corresponding
+docheader control macro.
 </p>
 
-<div class="rule-long"><hr/></div>
+<div class="box-tip">
+<p class="tip-top">
+<span class="note">Tip:</span>
+As with the docheader control macros, <kbd>DOC_COVER_</kbd> and
+<kbd>COVER_</kbd> part/parameter style changes may be
+<a href="docprocessing.html#grouping">grouped</a>,
+for example
+</br>
+<span class="pre-in-pp">
+  .DOC_COVER_TITLE_STYLE \
+  FAMILY A \
+  FONT B \
+  SIZE +4 \
+  CAPS
+</span>
+</p>
+</div>
 
 <!-- Navigation links -->
 <table style="width: 100%; margin-top: 12px;">
@@ -622,4 +842,3 @@ The default is to ignore them.
 
 </body>
 </html>
-<!-- vim: fileencoding=utf-8: nomodified: -->
index edc9a76..0d032fa 100644 (file)
@@ -2,14 +2,14 @@
 <!--
 This file is part of groff, the GNU roff type-setting system.
 
-Copyright (C) 2004-2014  Free Software Foundation, Inc.
+Copyright (C) 2004-2018  Free Software Foundation, Inc.
 Written by Peter Schaffter (peter@schaffter.ca).
 
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.3 or
-any later version published by the Free Software Foundation; with the
-Invariant Sections being this comment section, with no Front-Cover
-Texts, and with no Back-Cover Texts.
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
+Texts.
 
 A copy of the Free Documentation License is included as a file called
 FDL in the main directory of the groff source package.
@@ -110,6 +110,7 @@ or concept you&#8217;re not familiar with.
         <a href="#numericargument">Numeric argument</a><br/>
         <a href="#outputline">Output line</a><br/>
         <a href="#primitives">Primitives</a><br/>
+        <a href="#preprocessor">Pre-processor</a><br/>
         <a href="#stringargument">String Argument</a><br/>
         <a href="#unitofmeasure">Unit of measure</a><br/>
         <a href="#zerowidthcharacter">Zero-width character</a><br/>
@@ -123,10 +124,12 @@ or concept you&#8217;re not familiar with.
     <tr><th class="definitions">Mom terms</th></tr>
     <tr>
       <td>
+        <a href="#baseline-grid">Baseline grid</a><br/>
         <a href="#blockquote">Blockquote</a><br/>
         <a href="#controlmacro">Control macro</a><br/>
         <a href="#docheader">Docheader</a><br/>
         <a href="#epigraph">Epigraph</a><br/>
+        <a href="#float">Float</a><br/>
         <a href="#footer">Footer</a><br/>
         <a href="#head">Head</a><br/>
         <a href="#header">Header</a><br/>
@@ -229,7 +232,7 @@ or concept you&#8217;re not familiar with.
   <dd>
   The collective name by which a collection of
   <a href="#font">fonts</a>
-  are known, eg Helvetica, Times Roman, Garamond.
+  are known, e.g., Helvetica, Times Roman, Garamond.
   </dd>
   
   <dt id="figurespace">Figure space/Digit space</dt>
@@ -240,11 +243,11 @@ or concept you&#8217;re not familiar with.
   say, columns or numbered lists.  In groff, the figure space is
   entered with <kbd>\0</kbd> (ie a backslash followed by a zero)
   </dd>
-  
-  <dt id="fixedwidthfont">Fixed width font</dt>
+
+  <dt id="fixedwidthfont">Fixed-width font</dt>
   <dd>
   A family or font in which every character occupies exactly the
-  same amount of vertical space on the line.  Courier is the
+  same amount of horizontal space on the line.  Courier is the
   best-known, if not the most elegant, fixed-width font.
   </dd>
 
@@ -267,7 +270,7 @@ or concept you&#8217;re not familiar with.
   <a href="#shape">shape</a>
   of type within a
   <a href="#family">family</a>,
-  eg light, medium, bold (which are weights), and roman, italic,
+  e.g., light, medium, bold (which are weights), and roman, italic,
   condensed (which are shapes).  By default, groff knows of four
   fonts within its default set of families: R (medium roman), I
   (medium italic), B (bold roman) and BI (bold italic).
@@ -662,7 +665,7 @@ or concept you&#8217;re not familiar with.
   when the groff device is ps. (&#8220;ps&#8221; means
   &#8220;PostScript&#8221;&mdash;the default device for
   which groff prepares output, and the device for which
-  mom was specifically designed.)
+  mom was originally designed.)
   </dd>
   
   <dt id="numericargument">Numeric argument</dt>
@@ -698,6 +701,17 @@ or concept you&#8217;re not familiar with.
   A line of text as it appears in output copy.
   </dd>
   
+  <dt id="preprocessor">Pre-processor</dt>
+  <dd>
+  Pre-processors are used by groff to generate tables (tbl),
+  diagrams (pic), and equations (eqn).  These pre-processors are
+  fully supported by mom.  In addition, the &#8220;refer&#8221;
+  pre-processor is used to generate bibliographies and lists of
+  cited works.  The PDF_IMAGE macro, which allows insertion of
+  graphics into a document, is not strictly a pre-processor but
+  behaves similarly to tbl, pic, and eqn.
+  </dd>
+  
   <dt id="primitives">Primitives</dt>
   <dd>
   The lowercase instructions, introduced with a period, that groff
@@ -782,7 +796,7 @@ or concept you&#8217;re not familiar with.
   
   <p>
   You can enter decimal values for any unit of measure.  Different
-  units may be combined by adding them together (eg 1.5i+2m,
+  units may be combined by adding them together (e.g., 1.5i+2m,
   which gives a measure of 1-1/2 inches plus 2 ems).
   </p>
   
@@ -828,20 +842,20 @@ or concept you&#8217;re not familiar with.
 
 <h3 id="mom-terms" class="docs">Mom terms</h3>
 <dl>
-  <dt id="blockquote">Blockquote</dt>
+  <dt id="baseline-grid">Baseline grid</dt>
   <dd>
-  Cited material other than
-  <a href="#quote">quotes</a>.
-  Typically set at a smaller point size than paragraph text,
-  indented from the left and right margins.  Blockquotes are
-  <a href="#filled">filled</a>.
+  Virtual guide lines spaced according to the
+  <a href="#leading">leading</a>
+  established for running text.  Adherence to the grid ensures that
+  text fills the page completely to the bottom margin.  Uncorrected
+  deviations from the grid result in bottom margins that fall short.
   </dd>
   
   <dt id="controlmacro">Control macro</dt>
   <dd>
   Macros used in
   <a href="docprocessing.html#docprocessing">document processing</a>
-  to control/alter the appearance of document elements (eg
+  to control/alter the appearance of document elements (e.g.,
   headings, quotes, footnotes,
   <a href="#header">headers</a>,
   etc.).
@@ -859,6 +873,14 @@ or concept you&#8217;re not familiar with.
   a chapter, story, or other document.
   </dd>
   
+  <dt id="float">Float</dt>
+  <dd>
+  A float is material intended to be kept together as a block.
+  Floated material that fits on a page in position is output on that
+  page.  Floats that do not fit in position are deferred to the top
+  of the next page.
+  </dd>
+  
   <dt id="footer">Footer/page footer</dt>
   <dd>
   Document information (frequently author and title) output in
@@ -898,7 +920,7 @@ or concept you&#8217;re not familiar with.
   <a href="#running">running text</a>,
   frequently set off by typographic symbols such as asterisks or
   daggers.  Used to indicate a shift in the content of a document
-  (eg a scene change in a short story).  Also commonly called a
+  (e.g., a scene change in a short story).  Also commonly called a
   scene break or a section break.
   </dd>
   
@@ -918,14 +940,14 @@ or concept you&#8217;re not familiar with.
   <dt id="pdfoutline">PDF outline</dt>
   <dd>
   The hierarchically-arranged navigation outline provided by most PDF
-  viewers (eg Okular, Evince), typically in a panel to the left of
+  viewers (e.g., Okular, Evince), typically in a panel to the left of
   the document window, and usually labeled &#8220;Contents&#8221;.
   </dd>
   
   <dt id="quote">Quote</dt>
   <dd>
   A quote, to mom, is a line-for-line setting
-  of quoted material (eg poetry, song lyrics, or a snippet of
+  of quoted material (e.g., poetry, song lyrics, or a snippet of
   programming code).  You don&#8217;t have to use
   <a href="typesetting.html#br"><kbd>BR</kbd></a>
   with quotes.
@@ -970,4 +992,3 @@ or concept you&#8217;re not familiar with.
 
 </body>
 </html>
-<!-- vim: fileencoding=utf-8: nomodified:-->
index 090352e..a6ef1c6 100644 (file)
@@ -2,14 +2,14 @@
 <!--
 This file is part of groff, the GNU roff type-setting system.
 
-Copyright (C) 2004-2014 Free Software Foundation, Inc.
+Copyright (C) 2004-2018 Free Software Foundation, Inc.
 Written by Peter Schaffter (peter@schaffter.ca).
 
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.3 or
-any later version published by the Free Software Foundation; with the
-Invariant Sections being this comment section, with no Front-Cover
-Texts, and with no Back-Cover Texts.
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
+Texts.
 
 A copy of the Free Documentation License is included as a file called
 FDL in the main directory of the groff source package.
@@ -53,6 +53,7 @@ FDL in the main directory of the groff source package.
       <li><a href="#quad">quad/justification</a></li>
       <li><a href="#underline">underline style, rule weight</a></li>
     </ul></li>
+    <li><a href="#grouping">Grouping control macros</a></li>
   </ul></li>
 </ul>
 </div>
@@ -369,7 +370,20 @@ Control macros that end in _QUAD take the same arguments as
 If mom gives the option to underline a document element, the weight
 of the underline and its distance from the
 <a href="definitions.html#baseline">baseline</a>
-are controlled by macros that end in _UNDERLINE.
+are controlled by macros that end in _UNDERSCORE or _UNDERLINE.
+These macros take the following arguments:
+<br/>
+<span class="pre-in-pp">
+  DOUBLE     - double underscore
+  &lt;weight&gt;   - the underscore weight (in points, no unit of measure required
+  &lt;distance&gt; - distance from baseline (unit of measure required)
+  &lt;rule gap&gt; - distance between double underscore rules (unit of measure required_
+</span>
+<kbd>DOUBLE</kbd> by itself will double-underscore the element.  The
+remaining arguments must be entered in the order given.  You may not
+skip over any of them, which means that if you only wish to change
+<kbd>&lt;rule gap&gt;</kbd>, you must still enter a
+<kbd>&lt;weight&gt;</kbd> and <kbd>&lt;distance&gt;</kbd> argument.
 </p>
 
 <p>
@@ -386,6 +400,63 @@ to
 as is the argument to _RULE_WEIGHT macros.
 </p>
 
+<h3 id="grouping" class="docs">Grouping control macros</h3>
+
+<p>
+As of version 2.1, it is possible to group control macros for a
+particular tag into a single <kbd>&lt;element&gt;_STYLE</kbd> macro.
+For example, rather than setting the family, size, and indent of
+<a href="#blockquote-intro">BLOCKQUOTES</a>
+with
+<br/>
+<span class="pre-in-pp">
+  .BLOCKQUOTE_FAMILY H
+  .BLOCKQUOTE_SIZE -2
+  .BLOCKQUOTE_INDENT 4P
+</span>
+you can enter the same style parameter changes with
+<br/>
+<span class="pre-in-pp">
+  .BLOCKQUOTE_STYLE \
+  FAMILY H \
+  SIZE -2 \
+  INDENT 4P
+</span>
+<kbd>&lt;element&gt;_STYLE</kbd> macros use
+&#8220;keyword/value&#8221; pairs (<kbd>FAMILY</kbd> is a keyword,
+<kbd>H</kbd> is a value), and may be entered entirely on one line,
+or, as the example shows, broken into several readable lines using
+the backslash.  The macro itself and all but the last keyword/value
+pair require the backslash when this style is used.
+</p>
+
+<p>
+Not all the control macros for a particular tag may be available
+with an <kbd>&lt;element&gt;_STYLE</kbd> macro.  Generally speaking,
+though, if a tag has control macros for
+<br/>
+<span class="pre-in-pp">
+  FAMILY FONT SIZE
+  LEAD AUTOLEAD
+  QUAD INDENT
+  COLOR
+  CAPS SMALLCAPS
+  UNDERLINE/UNDERSCORE
+</span>
+those parameters may be used within an
+<kbd>&lt;element&gt;_STYLE</kbd> macro.
+</p>
+
+<div class="box-tip">
+<p class="tip">
+<span class="note">Note:</span>
+If you need to reverse the sense of <kbd>CAPS</kbd>,
+<kbd>SMALLCAPS</kbd> or <kbd>UNDERSCORE/UNDERLINE</kbd>, which
+do not take a value after the keyword, use <kbd>NO_CAPS</kbd>,
+<kbd>NO_SMALLCAPS</kbd> and <kbd>NO_UNDERSCORE/NO_UNDERLINE</kbd>.
+</p>
+</div>
+
 <div class="rule-short"><hr/></div>
 
 <!-- ==================================================================== -->
@@ -469,11 +540,24 @@ or
 
 <div class="box-tip">
 <p class="tip">
-<span class="tip">Tip:</span>
+<span class="tip">Tips on vertical spacing around epigraphs:</span>
+If you wish to change the vertical position of an epigraph with
+<a href="typesetting.html#space">SPACE</a>/
+<a href="typesetting.html#ald">ALD</a>/
+<a href="typesetting.html#rld">RLD</a>,
+do so before invoking <kbd>.EPIGRAPH</kbd>, like this:
+<br/>
+<span class="pre-in-pp">
+  .SP -6p
+  .EPIGRAPH
+  A notable quote.
+  .EPIGRAPH OFF
+</span>
 If you&#8217;re setting a document in
 <a href="docprocessing.html#columns">columns</a>
-and you&#8217;d like to add or subtract space after the epigraph,
-the place to do it is inside the epigraph, like this:
+and you&#8217;d like to add or subtract space <i>after</i> the
+epigraph, which is centred over the top of both columns, the place
+to do it is inside the epigraph, like this:
 <br/>
 <span class="pre-in-pp">
   .EPIGRAPH
@@ -493,6 +577,10 @@ resulting in unbalanced columns.
 <p class="defaults">
 See
 <a href="#control-macro-args">Arguments to the control macros</a>.
+<br/>
+The following EPIGRAPH control macros may also be
+<a href="#grouping">grouped</a>
+using EPIGRAPH_STYLE.
 </p>
 
 <span class="pre defaults">
@@ -501,10 +589,7 @@ See
 .EPIGRAPH_SIZE      default = -1.5 (points)
 .EPIGRAPH_COLOR     default = black
 .EPIGRAPH_AUTOLEAD  default = 2 points
-
 (The next two apply to &#8220;block&#8221; style epigraphs only)
-
-.EPIGRAPH_QUAD      default = same as paragraphs
 .EPIGRAPH_INDENT*  (see Note on EPIGRAPH_INDENT, below)
 
 *Indent here refers to the indent from both the left and right margins
@@ -575,65 +660,27 @@ her to do so, use the control macro
 <a href="typesetting.html#printstyle">PRINTSTYLE TYPEWRITE</a>.)
 </p>
 
-<div class="box-tip">
-<p class="tip">
-<span class="tip">Tip:</span>
-If you want to add less than a full linespace between
-paragraphs, you may give the amount of space you&#8217;d like as an
-argument to
-<kbd>.PARA_SPACE</kbd>. 
-</span>
-Introducing a paragraph with <kbd>.PP2</kbd> will add a space equal
-to one-quarter of the prevailing linespace before the start of the
-paragraph.  Initial paragraphs, ie those at the start of a document,
-or after a heading or
-<a href="#linebreak-intro">linebreak</a>,
-should still be introduced with
-<kbd>.PP</kbd>.
-</div>
-
 <p>
 Note that mom does not provide widow or orphan control for
 paragraphs (ie even if only one line of a paragraph fits at the
 bottom of a page, she will set it on that page).  The reason for
 this is that writers of fiction often have single-line paragraphs
-(eg in dialogue).  Groff&#8217;s simplistic orphan control will
+(e.g., in dialogue).  Groff&#8217;s simplistic orphan control will
 break these one-liners&mdash;if they fall at the bottom of the
 page&mdash;to a new page, which is not what you want.
 </p>
 
 <div class="box-tip">
-<p class="tip-top">
+<p class="tip">
 <span class="tip">Tip:</span>
-The last thing you want while you&#8217;re writing and editing
-drafts of a document (particularly stories and chapters) is a
-text file cluttered up with <kbd>.PP</kbd>&#8217;s. The visual
-interruption in the flow of text is a serious obstacle to creativity
-and critiquing.
-</p>
-
-<p>
-I use the tab key on my keyboard to indent paragraphs by four spaces
-when I'm writing, producing a text file that looks pretty much like
-what you see on a printed page.  When it comes time to format and
-print the file, I run it through a sed script that (amongst other
-things) converts the intial four spaces into <kbd>.PP</kbd> (plus a
-new line) and pipes the output to groff for processing and printing.
-</p>
-
-<p class="tip-bottom">
-Another solution would be to insert a blank line between paragraphs
-of your text files.  The blank lines can then be sedded out at
-print time, as above (<kbd>.PP</kbd> plus a newline), or, more
-conveniently, you could use the <kbd>.blm</kbd>
-<a href="definitions.html#primitives">primitive</a>
-(blank line macro) to tell groff (and mom) that blank lines should
-be interpreted as PP&#8217;s.
+If you would prefer not to clutter up your files with
+<kbd>.PP</kbd>s, you can use groff&#8217;s &#8220;blank line
+macro&#8221; to instruct groff to interpret blank lines as
+<kbd>.PP</kbd>&#8217;s, like this:
 <br/>
 <span class="pre-in-pp">
   .blm PP
 </span>
-tells groff that blank lines are really the macro PP.
 </p>
 </div>
 
@@ -666,8 +713,11 @@ and
 The PP macro being so important, and representing, as it were, the
 basis of everything that goes on in a document, its control is
 managed in a manner somewhat different from other document element
-tags.
+tags.  As a result, the control macros for PP may not be
+<a href="#grouping">grouped</a>
+within a <kbd>_STYLE</kbd> macro.
 </p>
+
 <ol style="margin-top: .5em; padding-bottom: .5em;">
   <li><a href="#pp-family">Family control</a></li>
   <li><a href="#pp-font">Font control</a></li>
@@ -700,7 +750,7 @@ If you wish to change the family for regular text paragraphs only,
 invoke <kbd>.FAMILY</kbd> immediately after <kbd>.PP</kbd> in every
 paragraph whose family you wish to differ from the prevailing
 document family.  Alternatively, set the family and font for
-paragraphs with PP_FONT, giving it a complete family+font name, eg
+paragraphs with PP_FONT, giving it a complete family+font name, e.g.,
 <br/>
 <span class="pre-in-pp">
   PP_FONT TI
@@ -763,8 +813,8 @@ italic.  Neither persists past the end of the paragraph.
 
 <p>
 Mom has no special control macro for colourizing paragraphs.  If you
-wish a colourized paragraph, you must use the macro,
-<a href="color.html#color">COLOR</a>,
+wish a colourized paragraph, you must use the macro
+<a href="color.html#color">COLOR</a>
 or the
 <a href="definitions.html#inline">inline escape</a>,
 <a href="color.html#color-inline"><kbd>\*[&lt;colourname&gt;]</kbd></a>,
@@ -820,20 +870,23 @@ and
 
 <p>
 If you wish to change the leading of regular text paragraphs only,
-invoke <kbd>.LS</kbd> immediately after <kbd>.PP</kbd> in every
+invoke <kbd>.LS</kbd> immediately after <kbd>.PP</kbd> in any
 paragraph whose leading you wish to change.
 </p>
 
 <div class="box-tip">
 <p class="tip">
 <span class="note">Warning:</span>
-It is extremely unwise to change a paragraph&#8217;s leading with LS as
-it will, in all cases, screw up mom&#8217;s ability to balance
-the bottom margin of pages.  Should you absolutely need to change
-paragraph leading with LS, and subsequently want mom to get back on
-the right leading track, use the
+Changing a paragraph&#8217;s leading will almost certaininly screw
+up mom&#8217;s ability to balance the bottom margin of pages.
+Should you absolutely require a change of paragraph&#8217;s leading and
+need to get mom back on track leading-wise afterwards, use the
 <a href="docprocessing.html#shim">SHIM</a>
-macro.
+or
+<a href="docprocessing.html#shim">FLEX</a>
+macro, depending on which
+<a href="docprocessing.html#vertical-whitespace-management">vertical whitespace management</a>
+strategy you are using.
 </p>
 </div>
 
@@ -966,8 +1019,8 @@ that first paragraphs will once again not be indented.
 
 <p>
 By default, mom does not insert a blank line between
-paragraphs.  If you would like her to do so, invoke the macro,
-<kbd>.PARA_SPACE</kbd>, without an argument, either before or after
+paragraphs.  If you would like her to do so, invoke the macro
+<kbd>.PARA_SPACE</kbd> without an argument, either before or after
 <a href="docprocessing.html#start">START</a>.
 PARA_SPACE is a toggle macro, therefore passing it any argument
 (<b>OFF, QUIT, Q, X</b>...) cancels its effect, meaning that
@@ -991,6 +1044,15 @@ paragraphs
 </span>
 </p>
 
+<p style="margin-top: -1em" >
+If
+<a href="docprocessing.html#flex-vs-shim">flex-spacing</a>
+is enabled, additional flexible vertical whitespace can be inserted
+between spaced paragraphs with the
+<a href="docprocessing.html#flex">FLEX</a>
+macro.
+</p>
+
 <p>
 PARA_SPACE is not recommended for use with PRINTSTYLE TYPEWRITE
 unless you give PRINTSTYLE the <kbd>SINGLESPACE</kbd> option.
@@ -1044,7 +1106,7 @@ expect the blank line to appear.
 
 <p>
 Heads, subheads, and deeper levels of section headings are handled by 
-a single macro, HEADING, to which you pass an argument stating the
+a single macro HEADING to which you pass an argument stating the
 desired level.  <kbd>.HEADING 1 &quot;&lt;text&gt;&quot;</kbd>, for
 example, would be a main head; <kbd>.HEADING 2
 &quot;&lt;text&gt;&quot;</kbd> would be a subhead; etc.
@@ -1062,7 +1124,7 @@ bookmark for
 
 <p>
 Headings can also be numbered on a per-heading-level basis,
-hierarchically and concatenatively, eg
+hierarchically and concatenatively, e.g.,
 <br/>
 <span class="pre-in-pp">
   1.
@@ -1174,25 +1236,26 @@ each heading.
 
 <p>
 If, however, you disrupt the regular placement of text on
-mom&#8217;s baseline grid, HEADING adds as much whitespace to the
-blank line as is necessary to get things back on track.  The extra
-whitespace is always less than the current leading and therefore
-usually doesn't draw attention to itself.  This, along with a
-similar strategy for whitespace around quotes and blockquotes, is
-what allows mom to balance the bottom margins of pages effectively.
-The manual,
-<a href="http://www.schaffter.ca/mom/pdf/mom-pdf.pdf"><span class="book-title">Producing PDFs with groff and mom</span></a>,
-demonstrates this well: the inter-paragraph spacing is 1/3 of the
-leading, yet mom is able to produce a document with good page-rhythm
-and evenly balanced bottom margins.
+mom&#8217;s
+<a href="definitions.html#baseline-grid">baseline grid</a>,
+HEADING adds extra whitespace to the blank line according to the
+<a href="docprocessing.html#vertical-whitespace-management">vertical whitespace management</a>
+strategy in effect.  This, along with a similar strategy for
+whitespace around quotes, blockquotes, and
+<a href="definitions.html#float">floated</a>
+and
+<a href="definitions.html#preprocessor">pre-processor material</a>
+is what allows mom to balance the bottom
+margins of pages effectively.
 </p>
 
 <p>
-It occasionally happens that the extra whitespace becomes noticeable,
-typically when the amount of whitespace approaches the value of the
-current leading.  The result looks like two blank lines instead of
-one.  When this happens, a simple but effective fix is to reduce the
-space before the heading by backing up one line, either with
+It occasionally happens that the extra whitespace becomes
+noticeable.  This typically occurs when the amount of whitespace
+adjustment approaches the value of the current leading.  The result
+looks like two blank lines instead of one.  When this happens, a
+simple but effective fix is to reduce the space before the heading
+by backing up one line, either with
 <br/>
 <span class="pre-in-pp">
   .SPACE -1v
@@ -1203,30 +1266,21 @@ or
   .RLD -1v
 </span>
 This results in slightly less whitespace than normal, but the
-difference is usually not apparent.
-</p>
-
-<p class="tip-bottom">
-If you&#8217;d prefer that mom not add flexible whitespace to
-headings, invoke the macro
+difference is usually not apparent.  Alternatively, you may pass the
+<kbd>NO_SHIM</kbd> or <kbd>NO_FLEX</kbd> argument to
+<a href="#heading-style">HEADING_STYLE</a>
+to prevent shimming or flex-spacing of any particlar heading level
+either globally or selectively.  If shimming/flex-spacing is
+disabled selectively with
 <br/>
 <span class="pre-in-pp">
-  .NO_SHIM
+  .HEADING_STYLE &lt;n&gt; NO_SHIM | NO_FLEX
 </span>
-either in the style sheet section of your document (ie after
-PRINTSTYLE but before START), which will globally disable whitespace
-adjustment not only before headings, but around quotes and
-blockquotes as well, or on a per-instance basis.  <kbd>.NO_SHIM</kbd>
-is disabled by issuing
+it can be re-enabled for the heading level with
 <br/>
 <span class="pre-in-pp">
-  .NO_SHIM OFF
+  .HEADING_STYLE &lt;n&gt; SHIM | FLEX
 </span>
-Please note that <kbd>.NO_SHIM</kbd> also disables mom&#8217;s
-automatic shimming around quotes, blockquotes, after PDF images and
-floats, and
-<a href="docprocessing.html#shim">SHIM</a>
-macro itself.
 </p>
 </div>
 
@@ -1248,7 +1302,7 @@ A single blank line precedes all levels of heading.
 <h4 id="heading-style" class="docs" style="margin-bottom: -.5em">The HEADING_STYLE macro</h4>
 
 <p>
-Styling heads is accomplished with a single macro,
+Styling heads is accomplished with a single macro
 <br/>
 <span class="pre-in-pp">
   .HEADING_STYLE&nbsp;&lt;level&gt;
@@ -1270,9 +1324,13 @@ which may be given in any order:
   UNDERSCORE  &lt;weight&gt; &lt;gap&gt; | NO_UNDERSCORE \
   UNDERSCORE2 &lt;weight&gt; &lt;gap1&gt; &lt;gap2&gt; | NO_UNDERSCORE2 \
   CAPS | NO_CAPS \
+  SMALLCAPS | NO_SMALLCAPS \
   BASELINE_ADJUST &lt;amount to raise heading from the baseline&gt; \
+  NEEDS &lt;lines of text required beneath the heading &gt;
   SPACE_AFTER | NO_SPACE_AFTER \
-  NUMBER | NO_NUMBER
+  NUMBER | NO_NUMBER \
+  NO_SHIM | SHIM \
+  NO_FLEX | FLEX
 </span>
 </p>
 
@@ -1324,6 +1382,17 @@ appended to it.
 </p>
 
 <p class="defaults" style="margin-bottom: 1em">
+<kbd>NEEDS</kbd> lets you reserve the number of lines of text
+required beneath a heading, including fractions thereof (e.g.,
+&#8220;1.5&#8221; for one line of text plus half a linespace).
+If a heading falls near the bottom margin and there isn&#8217;t
+sufficient room for both the heading and the reserved space, mom
+will break to a new page for the heading.  A
+<a href="definitions.html#unitofmeasure">unit of measure</a>
+should not be appended to the argument.
+</p>
+
+<p class="defaults" style="margin-bottom: 1em">
 <kbd>SPACE_AFTER</kbd> inserts a blank line equal to the current
 <a href="definitions.html#leading">leading</a> after a HEADING.
 If you'd like a full linespace after a heading level, use
@@ -1345,6 +1414,15 @@ number to numbered headings and Table of Contents entries,
 <a href="#prefix-chapter-number">PREFIX_CHAPTER_NUMBER</a>.
 </p>
 
+<p class="defaults" style="margin-bottom: 1em">
+<kbd>SHIM</kbd> is not necessary if shimming is enabled
+globally, which it is by default; it exists to re-enable
+shimming for the heading level if you have previously passed
+HEADING_STYLE&nbsp;<kbd>&lt;n&gt;</kbd> a <kbd>NO_SHIM</kbd>
+argument.  The <kbd>FLEX</kbd> and <kbd>NO_FLEX</kbd> arguments work
+the same way if flex-spacing is enabled.
+</p>
+
 <p class="defaults" style="padding-bottom: .5em">
 The argument list is long, so you may want to break it into
 several lines by using the backslash character (<kbd>\</kbd>).
@@ -1358,7 +1436,7 @@ Here's an example of how you might style a level 1 heading:
   BASELINE_ADJUST 3p \
   NUMBER
 </span>
-This creates a level-1 heading style that's bold, centered,
+This creates a level-1 heading style that's bold, centred,
 underscored and numbered, raised by 3 points from the baseline.
 </p>
 </div>
@@ -1434,7 +1512,7 @@ numbered head element of each collated document).
 
 <p>
 PREFIX_CHAPTER_NUMBER can be disabled by passing it any argument
-other than a digit (eg <b>OFF, QUIT, END, X</b>, etc), although,
+other than a digit (e.g., <b>OFF, QUIT, END, X</b>, etc), although,
 as noted above, mom will keep, and&mdash;in the case of collated
 documents&mdash;increment the chapter number, allowing you to turn
 prefixing of chapter numbers to numbered head elements off and on
@@ -1449,8 +1527,8 @@ the chapter number, it&#8217;s use need not be restricted to
 You can use it with any document type.  Furthermore, even if
 your doctype isn&#8217;t <kbd>CHAPTER</kbd>, you can identify
 the document as a chapter for the purposes of numbering head
-elements by invoking the macro,
-<a href="docprocessing.html#chapter"><kbd>.CHAPTER</kbd></a>,
+elements by invoking the macro
+<a href="docprocessing.html#chapter"><kbd>.CHAPTER</kbd></a>
 with a
 <a href="definitions.html#numericargument">numeric argument</a>
 in your document setup. 
@@ -1503,7 +1581,7 @@ the changes with the
 <a href="#heading-style">HEADING_STYLE</a>
 macro.  The entire style need not be recreated, only those
 parameters that differed from mom's defaults.  Thus, if your HEADs
-were set flush left, instead of the oldstyle default, centered, but
+were set flush left, instead of the oldstyle default, centred, but
 otherwise kept mom's settings, you need only do
 <br/>
 <span class="pre-in-pp">
@@ -1514,7 +1592,7 @@ otherwise kept mom's settings, you need only do
 <div id="parahead" class="box-important">
 <p class="tip-top">
 <span class="important">Important:</span>
-The macro, PARAHEAD, is no longer available.  You must create paragraph
+The macro PARAHEAD is no longer available.  You must create paragraph
 heads using the
 <a href="#heading">HEADING</a>
 macro.  Mom will abort with an informational message whenever she
@@ -1639,7 +1717,7 @@ The former style defaults for HEAD were:
 <div class="box-tip">
 <p class="tip">
 <span class="note">Note:</span>
-The macro, NUMBER_HEADS, from pre-2.0 versions of mom, can still be
+The macro NUMBER_HEADS from pre-2.0 versions of mom, can still be
 used, though it is now a wrapper for
 <br/>
 <span class="pre-in-pp">
@@ -1680,7 +1758,7 @@ The former style defaults for SUBHEAD were:
 <div class="box-tip">
 <p class="tip">
 <span class="note">Note:</span>
-The macro, NUMBER_SUBHEADS, from pre-2.0 versions of mom, can still be
+The macro NUMBER_SUBHEADS from pre-2.0 versions of mom, can still be
 used, though it is now a wrapper for
 <br/>
 <span class="pre-in-pp">
@@ -1722,7 +1800,7 @@ The former style defaults for SUBSUBHEAD were:
 <div class="box-tip">
 <p class="tip">
 <span class="note">Note:</span>
-The macro, NUMBER_SUBSUBHEADS, from pre-2.0 versions of mom, can still be
+The macro NUMBER_SUBSUBHEADS from pre-2.0 versions of mom, can still be
 used, though it is now a wrapper for
 <br/>
 <span class="pre-in-pp">
@@ -1746,7 +1824,7 @@ Mom will alert you to this on stderr.
 <p>
 Linebreaks (&#8220;author linebreaks&#8221;, &#8220;section
 breaks&#8221;) are gaps in the vertical flow of running text that
-indicate a shift in content (eg a scene change in story).  They
+indicate a shift in content (e.g., a scene change in story).  They
 are frequently set off by typographic symbols, sometimes whimsical
 in nature.
 </p>
@@ -1806,7 +1884,7 @@ and a vertical adjustment factor.
 </p>
 
 <p>
-The first argument is any valid groff character (eg <kbd>*</kbd>
+The first argument is any valid groff character (e.g., <kbd>*</kbd>
 [an asterisk], <kbd>\[dg]</kbd> [a dagger], <kbd>\f[ZD]\N'141\fP</kbd>
 [an arbitrary character from Zapf Dingbats], <kbd>\l'4P'</kbd> [a
 4-pica long rule]). Mom sets the character centred on the current
@@ -1873,11 +1951,21 @@ or
 <h2 id="quote-intro" class="macro-group">Quotes (line for line, poetry or code)</h2>
 
 <ul style="margin-left: -.5em;">
+  <li><a href="#quote-description">Introduction</a>
+  <ul style="margin-left: -1.25em">
+    <li><a href="#quote-spacing">Quote spacing</a>
+    <ul style="margin-left: -1.25em">
+      <li><a href="#quote-spacing-notes">Notes on quote spacing</a></li>
+    </ul></li>
+    <li><a href="#no-shim">Disable shimming of quotes and blockquotes</a></li>
+    <li><a href="#float-quote">Keeping quotes and blockquotes together as a block</a></li>
+    <li><a href="#label-caption">Labelling/captioning quotes and blockquotes</a></li>
+  </ul></li>
   <li><a href="#quote">Tag: QUOTE</a></li>
   <li><a href="#quote-control">Quote control macros and defaults</a></li>
 </ul>
 
-<p>
+<p id="quote-decription">
 <a href="definitions.html#quote">Quotes</a>
 are always set in
 <a href="definitions.html#filled">nofill mode</a>,
@@ -1900,8 +1988,8 @@ or underlined
 indented from the left margin.  Obviously, she&#8217;s thinking
 &#8220;quotes from poetry or song lyrics&#8221;, but with the
 <a href="#quote-control">QUOTE control macros</a>
-you can change her defaults so QUOTE serves other needs, eg
-entering verbatim snippets of programming code, command line
+you can change her defaults so QUOTE serves other needs, e.g.,
+entering verbatim snippets of programming code, command-line
 instructions, and so on.  (See the
 <a href="#code">CODE</a>
 for a convenience macro to assist in including code snippets in
@@ -1927,58 +2015,36 @@ This behaviour can be changed with the control macro
 </p>
 
 <div class="box-tip">
-<h2 id="quote-spacing-notes" class="docs" style="padding-top: 9px; font-size: 100%;">Further notes on quote spacing</h2>
+<h3 id="quote-spacing-notes" class="docs" style="padding-top: 9px; font-size: 95%;">Notes on quote spacing</h3>
 
-<p clas"defaults">
+<p style="margin-top: .5em">
 If your quote (or blockquote) leading differs from the document
 leading, mom attempts to observe the same rules for vertical
 whitespace outlined above; however, she will also insert a small,
-flexible amount of extra whitespace around the quotes to make sure
-the whitespace is equal, top and bottom.  Since she does this
-on a quote by quote basis, rather than by figuring out how much
-extra whitespace is needed to adjust <i>all</i> quotes on a page,
-the spacing around multiple quotes on the same page will differ
-slightly, although each will be balanced between lines of normal
-<a href="definitions.html#running">running text</a>,
-top and bottom.  (The inability to scan an entire page and insert
-equalized whitespace at marked places is a limitation of groff,
-which, by and large, processes text on a line-per-line basis.)
+flexible amount of extra whitespace
+(<a href="docprocessing.html#shim-vs-flex">shim or flex-spacing</a>)
+around the quotes to make sure the whitespace is equal, top and
+bottom.  When shimming is enabled, this may result in multiple
+quotes or blockquotes on the same page being spaced slightly
+differently.
 </p>
 
-<h3 id="no-shim" class="docs">Disable shimming of quotes and blockquotes</h3>
-
-<p>
-If you don&#8217;t want the behaviour described above (ie you
-don&#8217;t want mom shimming 
-quotes and blockquotes), issue the macro
-<br/>
-<span class="pre-in-pp">
-  .NO_SHIM
-</span>
-in the style sheet section of your document (ie after PRINTSTYLE but
-before START), which will disable shimming globally, or on a
-per-instance basis prior to <kbd>.QUOTE</kbd> or <kbd>.BLOCKQUOTE</kbd>.
-</p>
-
-<p>
-If you&#8217;ve disabled shimming of quotes and blockquotes with
-<kbd>.NO_SHIM</kbd> and you want mom to return to her default
-behaviour in this matter, invoke <kbd>.NO_SHIM&nbsp;OFF</kbd> (or
-<kbd>QUIT, END, X</kbd>, etc).
-</p>
-
-<p>
-Please note that <kbd>NO_SHIM</kbd> disables shimming before
-headings, and the
-<a href="docprocessing.html#shim">SHIM</a>
-macro itself.
-</p>
+<h4 id="no-shim" class="docs">Disable shimming/flex-spacing of quotes and blockquotes</h4>
 
 <p class="tip-bottom">
-If you don&#8217;t provide mom with a QUOTE_AUTOLEAD, quotes are
-leaded at the default for normal running text, meaning that multiple
-quotes on the same page are all spaced identically.
+If you don&#8217;t want the behaviour
+described above (ie you don&#8217;t want mom putting additional shim
+or flex-spacing around quotes and
+blockquotes), put <kbd>.NO_SHIM</kbd> or/and <kbd>.NO_FLEX</kbd>
+in the style sheet section of your document (ie after PRINTSTYLE
+but before START), which will disable shimming or/and flex-spacing
+globally for all tags, or disable shimming/flex-spacing
+on a per-instance basis prior to <kbd>.QUOTE</kbd> or
+<kbd>.BLOCKQUOTE</kbd>, re-enabling it after the terminating
+<kbd>.QUOTE&nbsp;OFF</kbd> or <kbd>.BLOCKQUOTE&nbsp;OFF</kbd> with
+<kbd>.NO_SHIM&nbsp;OFF</kbd> or <kbd>.NO_FLEX&nbsp;OFF</kbd>.
 </p>
+
 </div>
 
 <h3 id="float-quote" class="docs">Keeping QUOTEs and BLOCKQUOTEs together as a block</h3>
@@ -2005,7 +2071,17 @@ the <kbd>FORCE</kbd> argument.
   .QUOTE END
   .FLOAT OFF
 </span>
+</p>
 
+<h3 id="label-caption" class="docs">Labelling/captioning quotes and blockquotes</h3>
+
+<p>
+Quotes and blockquotes may be labelled and/or captioned identically to
+<a href="images.html#floats-intro">floats</a>
+with the macros
+<a href="images.html#label">LABEL</a>
+and
+<a href="images.html#caption">CAPTION</a>.
 </p>
 
 <!-- -QUOTE- -->
@@ -2015,14 +2091,18 @@ the <kbd>FORCE</kbd> argument.
 </div>
 
 <div class="box-macro-args">
-Macro: <b>QUOTE</b> <kbd class="macro-args">toggle</kbd>
+Macro: <b>QUOTE</b> <kbd class="macro-args">[ ADJUST +|-&lt;space&gt; ] | &lt;anything&gt;</kbd>
 </div>
+<p class="requires">
+&bull;&nbsp;The argument to <kbd style="font-style: normal">ADJUST</kbd> requires a
+<a href="definitions.html#unitofmeasure">unit of measure</a>
+</p>
 
 <p>
-QUOTE is a toggle macro.  To begin a section
-of quoted text, invoke it with no argument, then type in your
-quote.  When you&#8217;re finished, invoke <kbd>.QUOTE</kbd> with any
-argument (eg <kbd>OFF, END, X, Q</kbd>...) to turn it off.  Example:
+QUOTE is a toggle macro.  To begin a section of quoted text, invoke
+it with no argument, then type in your quote.  When you&#8217;re
+finished, invoke <kbd>.QUOTE</kbd> with any argument (e.g., <kbd>OFF,
+END, X, Q</kbd>...) to turn it off.  Example:
 <br/>
 <span class="pre-in-pp">
   .QUOTE
@@ -2033,9 +2113,28 @@ argument (eg <kbd>OFF, END, X, Q</kbd>...) to turn it off.  Example:
   And bits of her tits in Brazil.
   .QUOTE END
 </span>
+Mom does her best to equalize whitespace around quotes and make
+sure the line following it falls on a valid baseline.  On occasion,
+you may need to tweak the quote placement slightly, which is done
+by passing <kbd>ADJUST</kbd> to QUOTE with a plus or minus value.
+The quote will be lowered (<kbd>+</kbd>) or raised (<kbd>-</kbd>)
+<i>within the space allotted for it</i> by the given amount.  For
+example, to lower a quote slightly within the space allotted for it,
+you&#8217;d do
+<br/>
+<span class="pre-in-pp">
+  .QUOTE ADJUST +3p
+  There was a soprano named Golda
+  Whose lovers grew colda and colda
+  For during love-making
+  She'd sing the earth-shaking
+  Love theme from Tristan und Isolde.
+  .QUOTE off
+</span>
 </p>
 
 <div class="defaults-container" style="background-color: #ded4bd; border: none;">
+
 <h3 id="quote-control" class="docs defaults">QUOTE control macros and defaults</h3>
 
 <ol style="margin-top: .5em; padding-bottom: .5em;">
@@ -2051,14 +2150,27 @@ argument (eg <kbd>OFF, END, X, Q</kbd>...) to turn it off.  Example:
 <p class="defaults" style="padding-top: 6px;">
 See
 <a href="#control-macro-args">Arguments to the control macros</a>.
+<br/>
+The following QUOTE control macros may also be
+<a href="#grouping">grouped</a>
+using QUOTE_STYLE.  If you do so, <kbd>QUOTE_LEFT</kbd>, <kbd>QUOTE_CENTER</kbd>,
+and <kbd>QUOTE_RIGHT</kbd> must be entered as:
+<br/>
+<kbd>&nbsp;&nbsp;&nbsp;QUAD LEFT</kbd><br/>
+<kbd>&nbsp;&nbsp;&nbsp;QUAD CENTER</kbd><br/>
+<kbd>&nbsp;&nbsp;&nbsp;QUAD RIGHT</kbd>
 </p>
+
 <span class="pre defaults">
 .QUOTE_FAMILY   default = prevailing document family; default is Times Roman
 .QUOTE_FONT     default = italic; underlined in TYPEWRITE
 .QUOTE_SIZE     default = +0 (ie same size as paragraph text)
-.QUOTE_AUTOLEAD default = none; leading of quotes is the same as paragraphs
+<a id="quote-autolead">.QUOTE_AUTOLEAD default = none; leading of quotes is the same as paragraphs </a>
 .QUOTE_COLOR    default = black
 .QUOTE_INDENT  (see below, "Quote indent")
+.QUOTE_LEFT    -+  Quad direction of quote.
+.QUOTE_CENTER   |  LEFT observes QUOTE_INDENT;
+.QUOTE_RIGHT   -+  CENTER and RIGHT do not
 </span>
 </div>
 
@@ -2086,19 +2198,13 @@ and 1 (for
 </p>
 
 <div class="box-tip">
-<p class="tip-top">
+<p class="tip">
 <span class="note">Note:</span>
 If your PARA_INDENT is 0 (ie no indenting of the first line of
 paragraphs), you <i>must</i> set a QUOTE_INDENT yourself, with a
 unit of measure appended to the argument. Mom has no default for
 QUOTE_INDENT if paragraph first lines are not being indented.
 </p>
-
-<p class="tip-bottom">
-<span class="note">Additional note:</span>
-QUOTE_INDENT also sets the indent for
-<a href="#blockquote">blockquotes</a>.
-</p>
 </div>
 
 <h4 id="always-fullspace-quotes" class="docs" style="margin-top: -.25em;">2. Spacing above and below quotes (typeset only)</h4>
@@ -2112,7 +2218,7 @@ below quotes, invoke
 </span>
 with no argument.  If you wish to restore mom&#8217;s
 default behaviour regarding the spacing of quotes (see
-<a href="#quote-spacing">above</a>),
+<a href="#quote-spacing">Quote spacing</a>),
 invoke the macro with any argument (<kbd>OFF, QUIT, END, X</kbd>...)
 </p>
 
@@ -2154,11 +2260,12 @@ ITALIC_MEANS_ITALIC is enabled (see
 <h2 id="blockquote-intro" class="macro-group">Blockquotes (cited material)</h2>
 
 <ul style="margin-left: -.5em;">
+  <li><a href="#blockquote-description">Introduction</a>
   <li><a href="#blockquote">Tag: BLOCKQUOTE</a></li>
   <li><a href="#blockquote-control">BLOCKQUOTE control macros</a></li>
 </ul>
 
-<p>
+<p id="blockquote-description">
 <a href="definitions.html#blockquote">Blockquotes</a>
 are used to cite passages from another author&#8217;s work.  So that
 they stand out well from
@@ -2179,11 +2286,19 @@ left.
 Besides indenting blockquotes, mom further sets them off from
 running text with a small amount of vertical whitespace top and
 bottom.  (See
-<a href="#quote-spacing">above</a>
+<a href="#quote-spacing">Quote spacing</a>
 for a complete explanation of how this is managed, and how
 to control it.)
 </p>
 
+<p>
+Additional information concerning blockquotes, floats, and labelling
+blockquotes can be found in the sections
+<a href="#float-quote">Keeping quotes and blockquotes together as a block</a>,
+and
+<a href="#label-caption">Labelling/captioning quotes and blockquotes</a>.
+</p>
+
 <!-- -BLOCKQUOTE- -->
 
 <div class="macro-id-overline">
@@ -2191,18 +2306,23 @@ to control it.)
 </div>
 
 <div class="box-macro-args">
-Macro: <b>BLOCKQUOTE</b> <kbd class="macro-args">toggle</kbd>
+Macro: <b>BLOCKQUOTE</b>  <kbd class="macro-args">[ ADJUST +|-&lt;space&gt; ] | &lt;anything&gt;</kbd>
 </div>
 
 <p class="alias" style="margin-bottom: 0;">
 <i>Aliases: </i> <b>CITE, CITATION</b>
 </p>
 
+<p class="requires">
+&bull;&nbsp;The argument to <kbd style="font-style: normal">ADJUST</kbd> requires a
+<a href="definitions.html#unitofmeasure">unit of measure</a>
+</p>
+
 <p>
 BLOCKQUOTE is a toggle macro.  To begin a cited passage, invoke
 the tag with no argument, then type in your blockquote.  When
 you&#8217;re finished, invoke <kbd>.BLOCKQUOTE</kbd> with any
-argument (eg <kbd>OFF, END, X, Q</kbd>...) to turn it off.
+argument (e.g., <kbd>OFF, END, X, Q</kbd>...) to turn it off.
 Example:
 <br/>
 <span class="pre-in-pp">
@@ -2219,6 +2339,27 @@ introduce each paragraph&mdash;including the first&mdash;with
 <kbd><a href="#pp">.PP</a></kbd>.
 </p>
 
+<p>
+Mom does her best to equalize whitespace around blockquotes and make
+sure the line following it falls on a valid baseline.  On occasion,
+you may need to tweak the blockquote placement slightly, which is
+done by passing <kbd>ADJUST</kbd> to BLOCKQUOTE with a plus or minus
+value.  The blockquote will be lowered (<kbd>+</kbd>) or raised
+(<kbd>-</kbd>) <i>within the space allotted for it</i> by the given
+amount.  For example, to raise a blockquote slightly within the
+space allotted for it, you&#8217;d do
+<br/>
+<span class="pre-in-pp">
+  .BLOCKQUOTE ADJUST -3p
+  True! - nervous - very, very dreadfully nervous I had been and
+  am; but why will you say that I am mad?  The disease had sharpened
+  my senses - not destroyed - not dulled them.
+  .RIGHT
+  \[em]Edgar Allen Poe, The Tell-Tale Heart
+  .QUOTE off
+</span>
+</p>
+
 <div class="box-tip">
 <p class="tip">
 <span class="note">Note:</span>
@@ -2243,12 +2384,16 @@ tag, as well as in any of the control macros that begin or end with
 <p class="defaults" style="padding-top: 6px;">
 See
 <a href="#control-macro-args">Arguments to the control macros</a>.
+<br/>
+The following BLOCKQUOTE control macros may also be
+<a href="#grouping">grouped</a>
+using BLOCKQUOTE_STYLE.
 </p>
 <span class="pre defaults">
 .BLOCKQUOTE_FAMILY   default = prevailing document family; default is Times Roman
 .BLOCKQUOTE_FONT     default = roman
 .BLOCKQUOTE_SIZE     default = -1 (point)
-.BLOCKQUOTE_AUTOLEAD default = none; leading of blockquotes is the same as paragraphs
+<a id="blockquote-autolead">.BLOCKQUOTE_AUTOLEAD default = none; leading of blockquotes is the same as paragraphs</a>
 .BLOCKQUOTE_COLOR    default = black
 .BLOCKQUOTE_QUAD     default = left
 .BLOCKQUOTE_INDENT  (see below)
@@ -2280,19 +2425,13 @@ and 1 (for
 </p>
 
 <div class="box-tip">
-<p class="tip-top">
+<p class="tip">
 <span class="note">Note:</span>
 If your PARA_INDENT is 0 (ie no indenting of the first line of
 paragraphs), you <i>must</i> set a BLOCKQUOTE_INDENT yourself, with
 a unit of measure appended to the argument.  Mom has no default for
 BLOCKQUOTE_INDENT if paragraph first lines are not being indented.
 </p>
-
-<p class="tip-bottom">
-<span class="note">Additional note:</span>
-BLOCKQUOTE_INDENT also sets the indent for
-<a href="#quote">quotes</a>.
-</p>
 </div>
 
 
@@ -2308,7 +2447,7 @@ below blockquotes, invoke
 </span>
 with no argument.  If you wish to restore mom&#8217;s default
 behaviour regarding the spacing of blockquotes (see
-<a href="#quote-spacing">above</a>),
+<a href="#quote-spacing">Quote spacing</a>),
 invoke the macro with any argument (<b>OFF, QUIT, END,
 X</b>...).
 </p>
@@ -2352,7 +2491,7 @@ Inline escape: <b><kbd>\*[CODE]</kbd></b>
 </p>
 
 <p>
-When you invoke the macro, <kbd>.CODE</kbd>, or insert <kbd>\*[CODE]</kbd> into
+When you invoke the macro <kbd>.CODE</kbd> or insert <kbd>\*[CODE]</kbd> into
 running text, mom switches to a
 <a href="definitions.html#fixedwidthfont">fixed-width font</a>
 (Courier, by default) and turns
@@ -2363,7 +2502,7 @@ off.
 <p>
 If your code includes the backslash character, which is
 groff&#8217;s escape character, you will have to change the
-escape character temporarily to something else with the macro,
+escape character temporarily to something else with the macro
 <a href="goodies.html#esc-char">ESC_CHAR</a>.
 Mom has no way of knowing what special characters you&#8217;re going
 to use in code snippets, therefore she cannot automatically replace
@@ -2380,11 +2519,17 @@ The correct order for changing the escape character inside
   .ESC_CHAR .
   .CODE OFF
 </span>
+Be aware that changing the escape character prevents subsequent
+macros, which require that the backslash be the escape character,
+from functioning correctly.  Therefore, do not introduce any macros
+into your CODE block without first restoring the escape character to
+its default.
 </p>
 
 <p>
 Alternatively, you can enter the backslash character as
-<kbd>\e</kbd>, which tells groff to print a literal backslash.
+<kbd>\e</kbd> or <kbd>\\</kbd> (two backslashes), which tells groff
+to print a literal backslash.
 </p>
 
 <div class="box-tip">
@@ -2408,7 +2553,7 @@ it as well, invoke <kbd>.CODE</kbd> with the argument,
 you want a break afterwards, you must supply it manually with
 <a href="typesetting.html#br">BR</a>
 unless what follows immediately is a macro that automatically causes
-a break (eg
+a break (e.g.,
 <a href="#pp">PP</a>).
 </p>
 
@@ -2422,19 +2567,21 @@ in conjunction with CODE, like this:
   .QUOTE
   .CODE
   $ echo "Hello, world" | sed -e 's/Hello,/Goodbye, cruel/'
-  .CODE OFF
   .QUOTE OFF
 </span>
 QUOTE takes care of breaking both the text and the code, as well as
 indenting the code and offsetting it from
 <a href="definitions.html#running">running text</a>
-with vertical whitespace.
+with vertical whitespace.  Notice that <kbd>.CODE</kbd>, above, has
+no corresponding <kbd>.CODE OFF</kbd>.  <kbd>.CODE</kbd> inside a QUOTE
+does not require a terminating <kbd>.CODE&nbsp;OFF</kbd>, which risks
+introducing unwanted vertical whitespace.
 </p>
 </div>
 
 <p>
 Passing any argument other than <kbd>BR</kbd>, <kbd>BREAK</kbd> or
-<kbd>SPREAD</kbd> to CODE (eg <kbd>OFF, QUIT, END, X,</kbd> etc.)
+<kbd>SPREAD</kbd> to CODE (e.g., <kbd>OFF, QUIT, END, X,</kbd> etc.)
 turns CODE off and returns the family, font, and smartquotes back to
 their former state.
 </p>
@@ -2454,8 +2601,9 @@ for short snippets, as in the following example.
 
 <p>
 <kbd>\*[CODE]</kbd> does not permit changing the escape character,
-so <kbd>\e</kbd> must be used.  Furthermore, if your code starts
-with a period, you must enter it as &#8220;<kbd>\&.</kbd>&#8221;.
+so <kbd>\e</kbd> or a doubled backslash must be used.  Furthermore,
+if your code starts with a period, you must enter it as
+&#8220;<kbd>\&.</kbd>&#8221;.
 <br/>
 <span class="pre-in-pp">
   Registers are created with the \*[CODE]\&.nr\*[CODE OFF] request.
@@ -2471,7 +2619,8 @@ with the parameters of
 <a href="definitions.html#running">running text</a>,
 you must terminate the block with &#8220;<kbd>\c</kbd>&#8221; and
 enter the punctuation at the beginning of the next input line.  If
-the punctuation mark is a period, you must precede it with
+the punctuation mark is a period or an apostrophe, you must precede
+it with
 &#8220;<kbd>\&amp;</kbd>&#8221;.
 <br/>
 <span class="pre-in-pp">
@@ -2482,8 +2631,9 @@ the punctuation mark is a period, you must precede it with
   \&.  As this demonstrates...
 </span>
 Use of <kbd>\*[CODE]</kbd> inline does not require the
-<kbd>\c</kbd>, however periods after <kbd>\*[CODE&nbsp;OFF]</kbd>
-still need to be introduced with <kbd>\&</kbd>, as in this example:
+<kbd>\c</kbd>, however periods and apostrophes after
+<kbd>\*[CODE&nbsp;OFF]</kbd> still need to be introduced with
+<kbd>\&</kbd>, as in this example:
 <br/>
 <span class="pre-in-pp">
   ...append the unit of measure \*[CODE]p\*[CODE&nbsp;OFF]\&. New sentence...
@@ -2506,6 +2656,10 @@ still need to be introduced with <kbd>\&</kbd>, as in this example:
 <p class="defaults" style="padding-top: 6px;">
 See
 <a href="#control-macro-args">Arguments to the control macros</a>.
+<br/>
+The following CODE control macros may also be
+<a href="#grouping">grouped</a>
+using CODE_STYLE.
 </p>
 <span class="pre defaults">
 .CODE_FAMILY  default = Courier
@@ -2568,7 +2722,7 @@ digits and letters.
 <p>
 Setting lists with mom is easy.  First, you initialize a list with
 the LIST macro.  Then, for every item in the list, you invoke
-the macro, <kbd>.ITEM</kbd>, followed by the text of the item.
+the macro <kbd>.ITEM</kbd> followed by the text of the item.
 When a list is finished, you exit the list with
 <kbd>.LIST&nbsp;OFF</kbd> (or <kbd>QUIT, END, BACK,</kbd> etc.)
 </p>
@@ -2591,7 +2745,7 @@ left margin of running text that comes before it, like this:
   o a couple of hours at the piano
 </span>
 In other words, mom does not, by default, indent entire lists.
-Indenting a list is controlled by the macro,
+Indenting a list is controlled by the macro
 <a href="#shift-list">SHIFT_LIST</a>.
 (This is a design decision; there are too many instances where a
 default indent is not desirable.)  Equally, mom does not add any
@@ -2610,9 +2764,35 @@ and returns you to the left margin of running text.
 </p>
 
 <p>
+If
+<kbd><a href="typesetting.html#quad">QUAD CENTER</a></kbd>
+is in effect when LIST is invoked, the list is set quad left but
+centred on the page as a block, based on the longest line of list
+text.  Equally, if <kbd>QUAD RIGHT</kbd> in in effect, the list is
+set flush left but quadded right as a block.  If you want a centred
+or right-quadded list in an otherwise left-quadded or justified
+document, simply invoke <kbd>.QUAD&nbsp;&lt;direction&gt;</kbd> 
+before the list and reset the quad afterwards.  Do not use
+<kbd><a href="typesetting.html#lrc">CENTER</a></kbd>
+or
+<kbd><a href="typesetting.html#lrc">RIGHT</a></kbd>.
+</p>
+
+<div class="box-tip">
+<p class="tip">
+<span class="note">Note:</span>
+Mom centres lists over the entire line length, disregarding
+<a href="typesetting.html#ib">IB</a>
+if it is in effect.  If there are lines in the list that exceed
+the the margins of IB, they must be broken manually with
+<kbd>.BR</kbd> if you wish to keep them within the indented margins.
+</p>
+</div>
+
+<p>
 Finally, lists can be used in documents created with either the
 <a href="docprocessing.html#top">document processing macros</a>
-or the
+or just the
 <a href="typesetting.html#top">typesetting macros</a>.
 </p>
 
@@ -2623,13 +2803,13 @@ or the
 </div>
 
 <div class="box-macro-args">
-Macro: <b>LIST</b> <kbd class="macro-args">[ BULLET | DASH | DIGIT | ALPHA | alpha | ROMAN&lt;n&gt; | roman&lt;n&gt; | USER &lt;string&gt;] [ &lt;separator&gt; | &lt;user-defined enumerator&gt; ] [ &lt;prefix&gt; ] [ &lt;off&gt; ]</kbd>
+Macro: <b>LIST</b> <kbd class="macro-args">[ BULLET | DASH | DIGIT | ALPHA | alpha | ROMAN&lt;n&gt; | roman&lt;n&gt; | USER &lt;user-defined enumerator&gt;  | PLAIN | VARIABLE &lt;character&gt;] [ &lt;separator&gt; ] [ &lt;prefix&gt; ] [ &lt;anything&gt; ]</kbd>
 </div>
 
 <p>
 Invoked by itself (ie with no argument), LIST
-initializes a list (with bullets as the default enumerator).
-Afterwards, each block of input text preceded by
+initializes a list with bullets as the default enumerator.
+Afterward,s each block of input text preceded by
 <kbd><a href="#item">.ITEM</a></kbd>,
 on a line by itself, is treated as a list item.
 </p>
@@ -2666,10 +2846,13 @@ uppercase letters), <kbd>alpha</kbd> (for lowercase letters),
 <p>
 The arguments, <kbd>ROMAN&lt;n&gt;</kbd> and
 <kbd>roman&lt;n&gt;</kbd>, are special.  You must append to them
-a digit (arabic, eg "1" or "9" or "17") saying how many items a
+a digit (arabic, e.g., "1" or "9" or "17") saying how many items a
 particular roman-numeralled LIST is going to have. Mom requires this
 information in order to align roman numerals sensibly, and will
 abort&mdash;with a message &mdash; if you don&#8217;t provide it.
+(For setting roman numeral and digit lists with the enumerators
+aligned flush right&mdash;the default is flush left&mdash;see
+<a href="#pad-list-digits">PAD_LIST_DIGITS</a>.)
 </p>
 
 <p>
@@ -2692,13 +2875,41 @@ up like this:
 </p>
 
 <p>
-The argument, <kbd>USER</kbd>, lets you make up your own enumerator,
-and must be followed by a second argument: what you&#8217;d like the
-enumerator to look like.
+The argument <kbd>VARIABLE&nbsp;&lt;character&gt;</kbd> lets
+you choose different enumerators for the items in a list.
+<kbd>&lt;character&gt;</kbd> is the widest enumerator to
+be used.  Thus, if you have a list enumerated by both bullets
+and em-dashes, you&#8217;d set it up with
+<br/>
+<span class="pre-in-pp">
+  .LIST VARIABLE \[em]
+</span>
+and select the enumerator you want with
+<br/>
+<span class="pre-in-pp">
+  .ITEM \[em]
+</span>
+or
+<br/>
+<span class="pre-in-pp">
+  .ITEM \[bu]
+</span>
+If your enumerator contains spaces, you must enclose the
+<kbd>&lt;character&gt;</kbd> argument in both LIST and ITEM in
+double-quotes,
+e.g.
+<br/>
+<span class="pre-in-pp">
+  .LIST VARIABLE "\*[UP 1p]\[bu]\*[DOWN 1p]"
+  .ITEM "\*[UP 1p]\[bu]\*[DOWN 1p]"
+</span>
 </p>
 
 <p>
-For example, if you want a list enumerated with <kbd>=&gt;</kbd>,
+The argument <kbd>USER</kbd> lets you make up your own enumerator,
+and must be followed by a second argument: what you&#8217;d like the
+enumerator to look like.  For example, if you want a list enumerated
+with <kbd>=&gt;</kbd>,
 <br/>
 <span class="pre-in-pp">
   .LIST USER =&gt;
@@ -2728,10 +2939,14 @@ of <kbd>\[sq]</kbd> slightly, you might do
 <span class="pre-in-pp">
   .LIST USER "\*[UP .25p]\[sq]\*[DOWN .25p]"
     or
-  .LIST USER \v'-.25p]\[sq]\[\v'.25p']
+  .LIST USER \v'-.25p'\[sq]\v'.25p'
 </span>
 </p>
 
+<p>
+The argument <kbd>PLAIN</kbd> initializes a list with no enumerator.
+</p>
+
 <div class="box-tip">
 <p class="tip">
 <span class="note">Note:</span>
@@ -2831,7 +3046,7 @@ which would produce
 Any single argument to <kbd>LIST</kbd> other than
 <kbd>BULLET</kbd>, <kbd>DASH</kbd>, <kbd>DIGIT</kbd>,
 <kbd>ALPHA</kbd>, <kbd>alpha</kbd>, <kbd>ROMAN&lt;n&gt;</kbd>,
-<kbd>roman&lt;n&gt;</kbd> or <kbd>USER</kbd> (eg
+<kbd>roman&lt;n&gt;</kbd> or <kbd>USER</kbd> (e.g.,
 <kbd>LIST&nbsp;OFF</kbd> or <kbd>LIST&nbsp;BACK</kbd>) takes you out
 of the current list.
 </p>
@@ -2883,10 +3098,7 @@ is created like this:
   Lorem ipsum dolor sit amet, consetetur sadipscing elitr,
   sed diam nonumy eirmod tempor invidunt ut labore.
 </span>
-</p>
-
-<p>
-Alternatively, you may use the single-purpose macro,
+Alternatively, you may use the single-purpose macro
 <kbd>.QUIT_LISTS</kbd>, to get yourself out of a list structure.  In
 the example above, the two <kbd>.LIST&nbsp;OFF</kbd> lines could be
 replaced with a single <kbd>.QUIT_LISTS</kbd>.
@@ -2897,8 +3109,12 @@ replaced with a single <kbd>.QUIT_LISTS</kbd>.
 </div>
 
 <div class="box-macro-args">
-Macro: <b>ITEM</b>
+Macro: <b>ITEM</b> <kbd class="macro-args">[&lt;enumerator&gt;] [&lt;space&gt;]</kbd>
 </div>
+<p class="requires">
+&bull;&nbsp;The argument to <kbd style="font-style: normal">&lt;space&gt;</kbd> requires a
+<a href="definitions.html#unitofmeasure">unit of measure</a>
+</p>
 
 <p>
 After you&#8217;ve initialized a list with
@@ -2909,6 +3125,17 @@ appropriate to the list you&#8217;re in.
 </p>
 
 <p>
+If you&#8217;ve chosen the <kbd>VARIABLE</kbd> argument when
+invoking LIST, ITEM must be followed by an enumerator character.
+</p>
+
+<p>
+If you give ITEM a space argument, either by itself or after a
+variable enumerator character, the item will be spaced by the amount
+of the argument.
+</p>
+
+<p>
 In document processing, it is valid to have list items that contain
 multiple paragraphs.  Simply issue a
 <kbd><a href="#pp">.PP</a></kbd>
@@ -2935,7 +3162,12 @@ but rather
 <div class="defaults-container" style="background-color: #ded4bd; border: none;">
 <h3 id="list-control" class="docs defaults">LIST control macros and defaults</h3>
 
-<ol style="margin-top: .5em; padding-bottom: .5em;">
+<p style="margin-top: 0; margin-left: .5em">
+LIST control macros may not be
+<a href="#grouping">grouped</a>.
+</p>
+
+<ol style="margin-top: -.5em; padding-left: 1.5em; padding-bottom: .5em;">
   <li><a href="#shift-list">Indenting lists (SHIFT_LIST)</a></li>
   <li><a href="#reset-list">Resetting an initialized list&#8217;s enumerator (RESET_LIST)</a></li>
   <li><a href="#pad-list-digits">Padding digit enumerators (PAD_LIST_DIGITS)</a></li>
@@ -3040,7 +3272,7 @@ normal state of affairs for the alpha'ed list under
 </span>
 would be d), e) and f).  The solution, in such a case, is simply
 to reset the enumerator&mdash;before <kbd>.ITEM</kbd>&mdash;with
-the macro, <kbd>.RESET_LIST</kbd>.  By default, with no argument,
+the macro <kbd>.RESET_LIST</kbd>.  By default, with no argument,
 <kbd>.RESET_LIST</kbd> resets the enumerator to 1, A, a, I or i
 depending on the style of enumerator.  You may, if you wish, pass
 <kbd>.RESET_LIST</kbd> a
@@ -3062,7 +3294,7 @@ the right or the left of the single-numeral digits?
 </p>
 
 <p>
-If you want the extra space to the right, invoke the macro,
+If you want the extra space to the right, invoke the macro
 <kbd>.PAD_LIST_DIGITS</kbd> (with no argument), after
 <kbd>.LIST</kbd> and before <kbd>.ITEM</kbd>.  This will produce
 something like
@@ -3154,11 +3386,11 @@ When you turn line-numbering on, mom, by default
 
 <p>
 Mom expects that
-<kbd><a href="#quote">QUOTE</a></kbd>s
+<a href="#quote">QUOTE</a>s
 and
-<kbd><a href="#blockquote">BLOCKQUOTE</a></kbd>s
-will not be line-numbered, however control macros
-are provided to enable line numbering for either.
+<a href="#blockquote">BLOCKQUOTE</a>s
+will not be line-numbered, however control macros are provided to
+enable line numbering for either.
 See
 <a href="#number-quote-lines">Line numbering control macros for quotes and blockquotes</a>.
 </p>
@@ -3214,7 +3446,7 @@ you must, at a minimum, tell it what line number you want the
 <a href="definitions.html#outputline">output line</a>
 to have.  The optional arguments <kbd>which lines to number</kbd>
 and <kbd>gutter</kbd> allow you to state which lines should
-be numbered (eg every five or every ten lines), and the gutter to
+be numbered (e.g., every five or every ten lines), and the gutter to
 place between line numbers and
 <a href="definitions.html#running">running text</a>.
 </p>
@@ -3377,8 +3609,9 @@ desired result.
 
 <ol style="margin-top: .5em; padding-bottom: .5em;">
   <li><a href="#number-lines-general">Family/font/size/colour</a></li>
+  <li><a href="#number-lines-per-section">Reset line numbering after COLLATE</a></li>
   <li><a href="#number-quote-lines">Line numbering control for quotes and blockquotes</a>
-  <ul>
+  <ul style="padding-left: 1em">
     <li><a href="#number-quote-lines-global">Including QUOTEs and BLOCKQUOTEs in the line numbering scheme</a></li>
     <li><a href="#number-quote-lines-selective">Selectively enabling line numbering for QUOTEs and BLOCKQUOTEs</a></li>
     <li><a href="#number-quote-lines-gutter">Changing the line number gutter for QUOTEs and BLOCKQUOTEs</a></li>
@@ -3393,6 +3626,10 @@ desired result.
 <p class="defaults" style="padding-top: 6px;">
 See
 <a href="#control-macro-args">Arguments to the control macros</a>.
+<br/>
+The following NUMBER_LINES control macros may also be
+<a href="#grouping">grouped</a>
+using LINENUMBER_STYLE.
 </p>
 <span class="pre defaults">
 .LINENUMBER_FAMILY default = prevailing family or document family; default is Times Roman
@@ -3402,7 +3639,22 @@ See
 </span>
 </div>
 
-<h4 id="number-quote-lines" class="docs" style="margin-top: -1.75em;">2. Line numbering control macros for QUOTE and BLOCKQUOTE</h4>
+<h4 id="number-lines-per-section" class="docs" style="margin-top: -1.75em;">2. Reset line numbering after COLLATE</h4>
+
+<p>
+After
+<a href="rectoverso.html#collate">COLLATE</a>,
+line numbering continues from where it left off.  If you would like
+each chapter or major document section to begin its line numbering
+at &#8220;1&#8221;, invoke
+<span class="pre-in-pp">
+  .NUMBER_LINES_PER_SECTION
+</span>
+after
+<a href="#number-lines"><kbd>.NUMBER_LINES</kbd></a>.
+</p>
+
+<h4 id="number-quote-lines" class="docs" style="margin-top: 0em;">3. Line numbering control macros for QUOTE and BLOCKQUOTE</h4>
 
 <h5 id="number-quote-lines-global" class="docs" style="font-size: 87%">&bull;&nbsp;Including QUOTEs and BLOCKQUOTEs in the line numbering scheme</h5>
 
@@ -3600,15 +3852,24 @@ assured mom is happy to oblige.
 
 <p>
 A small amount of vertical whitespace and a short horizontal rule
-separate footnotes from the document body.  The amount of whitespace
-varies slightly from page to page depending on the number of lines
-in the footnotes. Mom tries for a nice balance between too little
+separate footnotes from the document body.  When
+<a href="docprocessing.html#flex-vs-shim">shimming</a>
+is enabled, the amount of whitespace
+may vary slightly from page to page depending on the number of lines
+in the footnotes.  Mom tries for a nice balance between too little
 whitespace and too much, but when push comes to shove, she&#8217;ll
 usually opt for ample over cramped.  The last lines of footnotes are
 always flush with the document&#8217;s bottom margin.
 </p>
 
 <p>
+When 
+<a href="docprocessing.html#flex-vs-shim">flex-spacing</a>
+is enabled, the distance between the last line of text and the
+first footnote is always the same.
+</p>
+
+<p>
 If mom sees that a portion of a footnote cannot be fit on its page,
 she carries that portion over to the next page.  If an entire
 footnote can&#8217;t be fit on its page (ie  FOOTNOTE has been
@@ -3650,7 +3911,7 @@ they&#8217;ll know the entry belongs to the previous page).
 </p>
 
 <p>
-Very exceptionally, two footnotes may have to be deferred (eg one
+Very exceptionally, two footnotes may have to be deferred (e.g., one
 occurs on the second to last line of a page, and another on the last
 line).  In such a circumstance, mom does not add
 a blank after the second deferred footnote.  If you&#8217;d like a blank
@@ -3993,6 +4254,10 @@ should be entered normally.
 <p class="defaults" style="padding-top: 6px;">
 See
 <a href="#control-macro-args">Arguments to the control macros</a>.
+<br/>
+The following FOOTNOTE control macros may also be
+<a href="#grouping">grouped</a>
+using FOOTNOTE_STYLE.
 </p>
 <span class="pre defaults">
 .FOOTNOTE_FAMILY    default = prevailing document family; default is Times Roman
@@ -4125,12 +4390,12 @@ footnotes either by single line numbers, or line ranges.  If
 what you want is a single line number, you need only invoke
 <kbd>.FOOTNOTE</kbd>, <i>without the terminating</i> <kbd>\c</kbd>,
 at the appropriate place in running text.  Input lines after the
-footnote has been terminated (eg with <kbd>.FOOTNOTE OFF</kbd>)
+footnote has been terminated (e.g., with <kbd>.FOOTNOTE OFF</kbd>)
 must begin at the left margin.
 </p>
 
 <p>
-If you want a range of line numbers (eg&nbsp;[5-11]&nbsp;),
+If you want a range of line numbers (e.g.,&nbsp;[5-11]&nbsp;),
 insert, directly into the first line of the range you want,
 the <a href="definitions.html#inlines">inline escape</a>,
 <kbd>\*[FN_MARK]</kbd>.  For the terminating line number of the
@@ -4160,7 +4425,7 @@ macros:
 
 <p style="margin-left: .5em;">
 Mom, by default, surrounds footnote line numbers with square
-brackets.  The style of the brackets may be changed with the macro,
+brackets.  The style of the brackets may be changed with the macro
 <br/>
 <span class="pre-in-pp">
   .FOOTNOTE_LINENUMBER_BRACKETS
@@ -4497,11 +4762,10 @@ is removed.
 </p>
 
 <p>
-By default, mom starts the endnotes page with a bold,
-centred, double-underscored head, &#8220;ENDNOTES&#8221;.
-Subsequently, for each section in a
+By default, mom starts the endnotes page with a bold, centred head,
+&#8220;ENDNOTES&#8221;.  Subsequently, for each section in a
 <a href="rectoverso.html#collate-intro">collated</a>
-document (eg chapters in a book), she identifies the section in bold
+document (e.g., chapters in a book), she identifies the section in bold
 type, flush left and underscored, followed by one-half linespace.
 Endnotes pertaining to the section are output underneath, identified
 by superscript numbers.  The text of the endnotes themselves is
@@ -4711,19 +4975,18 @@ appearance of endnotes pages, set them up prior to
     <li><a href="#endnotes-hdrftr-center">Header/footer centre string when doctype is CHAPTER</a></li>
     <li><a href="#endnotes-allows-headers">Allow headers on endnotes pages</a></li>
   </ul></li>
-  <li><a href="#endnotes-main-title"><b>Endnotes' first-page title control</b></a>
+  <li><a href="#endnotes-header"><b>Endnotes header (first-page title) control</b></a>
   <ul style="margin-left: -.5em;">
-    <li><a href="#endnote-string">Title string</a></li>
-    <li><a href="#endnote-string-control">Title string control macros and defaults</a></li>
-    <li><a href="#endnote-string-placement">Title string placement</a></li>
-    <li><a href="#endnote-string-underline">Title string underscoring</a></li>
-    <li><a href="#endnote-string-caps">Title string capitalization</a></li>
+    <li><a href="#endnotes-header-string">Header string</a></li>
+    <li><a href="#endnotes-header-string-control">Header string control macros and defaults</a></li>
+    <li><a href="#endnotes-header-placement">Header string placement</a></li>
+    <li><a href="#endnotes-header-underscore">Header string underscoring</a></li>
+    <li><a href="#endnotes-header-caps">Header string capitalization</a></li>
   </ul></li>
   <li><a href="#endnotes-doc-title"><b>Endnotes document-identification string control</b></a>
   <ul style="margin-left: -.5em;">
     <li><a href="#endnote-title">Document-identification string(s)</a></li>
     <li><a href="#endnote-title-control">Document-identification string control macros and defaults</a></li>
-    <li><a href="#endnote-title-underscore">Document-identification string underscoring</a></li>
   </ul></li>
   <li><a href="#endnotes-numbering"><b>Endnotes referencing style</b></a>
   <ul style="margin-left: -.5em;">
@@ -4747,6 +5010,10 @@ appearance of endnotes pages, set them up prior to
 <p class="defaults" style="padding-top: 6px;">
 See
 <a href="#control-macro-args">Arguments to the control macros</a>.
+<br/>
+The following ENDNOTE control macros may also be
+<a href="#grouping">grouped</a>
+using ENDNOTE_STYLE.
 </p>
 <span class="pre defaults">
 .ENDNOTE_FAMILY    default = prevailing document family; default is Times Roman
@@ -4874,7 +5141,7 @@ Macro: <b>ENDNOTE_SPACING</b> <kbd class="macro-args">&lt;space to insert betwee
 
 <p>
 If you'd like some whitespace between endnotes, just invoke
-ENDNOTE_SPACING with the amount of space you want, eg
+ENDNOTE_SPACING with the amount of space you want, e.g.,
 <br/>
 <span class="pre-in-pp">
   .ENDNOTE_SPACING 6p
@@ -5200,59 +5467,82 @@ ENDNOTES_ALLOWS_FOOTERS OFF.
 </p>
 </div>
 
-<h4 id="endnotes-main-title" class="docs">4. Endnotes' first-page title control</h4>
+<h4 id="endnotes-header" class="docs">4. Endnotes header (first-page title) control</h4>
 
-<!-- -ENDNOTE_STRING- -->
+<!-- -ENDNOTES_HEADER_STRING- -->
 
-<h5 id="endnote-string" class="docs" style="margin-top: 1em; margin-bottom: .5em; margin-left: .5em;">&bull;&nbsp;Title string</h5>
+<h5 id="endnotes-header-string" class="docs" style="margin-top: 1em; margin-bottom: .5em; margin-left: .5em;">&bull;&nbsp;Header (first-page title) string</h5>
 
 <div class="box-macro-args">
-Macro: <b>ENDNOTE_STRING</b> <kbd class="macro-args">&quot;&lt;head to print at the top of endnotes&gt;&quot;</kbd>
+Macro: <b>ENDNOTES_HEADER_STRING</b> <kbd class="macro-args">&quot;&lt;title to print at the top of endnotes&gt;&quot;</kbd>
 </div>
 
+<p class="alias" style="margin-bottom: 0;">
+<i>Alias:</i> <b>ENDNOTE_STRING</b> (for compatibility with older documents)
+</p>
+
 <p>
 By default, mom prints the word &#8220;ENDNOTES&#8221; as a head
 at the top of the first page of endnotes.  If you want her to
-print something else, invoke <kbd>.ENDNOTE_STRING</kbd> with the
-endnotes-page head you want, surrounded by double-quotes.  If you
-don&#8217;t want a head at the top of the first endnotes-page,
-invoke <kbd>.ENDNOTE_STRING</kbd> with a blank argument (either two
-double-quotes side by side&mdash;<kbd>&quot;&quot;</kbd>&mdash;or no
-argument at all).
+print something else, invoke <kbd>.ENDNOTES_HEADER_STRING</kbd>
+with the endnotes-page head you want, surrounded by double-quotes.
+If you don&#8217;t want a head at the top of the first
+endnotes-page, invoke <kbd>.ENDNOTES_HEADER_STRING</kbd>
+with a blank argument (either two double-quotes side by
+side&mdash;<kbd>&quot;&quot;</kbd>&mdash;or no argument at all).
 </p>
 
-<!-- -ENDNOTE_STRING_CONTROL- -->
+<!-- -ENDNOTES_HEADER_CONTROL- -->
 
-<h5 id="endnote-string-control" class="docs" style="margin-top: -.5em; margin-bottom: .5em; margin-left: .5em;">&bull;&nbsp;Title control macros and defaults</h5>
+<h5 id="endnotes-header-string-control" class="docs" style="margin-top: -.5em; margin-bottom: .5em; margin-left: .5em;">&bull;&nbsp;Header (first-page title) control macros and defaults</h5>
 
 <div class="defaults-container" style="padding-bottom: 8px;">
 <p class="defaults" style="padding-top: 6px;">
 See
 <a href="#control-macro-args">Arguments to the control macros</a>.
+<br/>
+The following ENDNOTES_HEADER control macros may also be
+<a href="#grouping">grouped</a>
+using ENDNOTES_HEADER_STYLE.
 </p>
+
+<p style="margin-top: .5em; margin-bottom: 0; margin-left: .5em">
+Please note that &#8220;_HEADER_&#8221;, here, refers to the title
+that appears at the top of the first endnotes page, not to the page
+headers of subsequent endnotes pages.
 <span class="pre defaults">
-.ENDNOTE_STRING_FAMILY  default = prevailing document family
-.ENDNOTE_STRING_FONT    default = bold
-.ENDNOTE_STRING_SIZE*   default = +1
-.ENDNOTE_STRING_QUAD    default = centred
-.ENDNOTE_STRING_COLOR   default = black
+.ENDNOTES_HEADER_FAMILY  default = prevailing document family
+.ENDNOTES_HEADER_FONT    default = bold
+.ENDNOTES_HEADER_SIZE*   default = +1
+.ENDNOTES_HEADER_QUAD    default = centred
+.ENDNOTES_HEADER_COLOR   default = black
 
 *Relative to the size of the endnotes text (set with ENDNOTE_PT_SIZE)
 </span>
+</p>
 </div>
 
-<!-- -ENDNOTE_STRING_ADVANCE- -->
+<p style="margin-top: -2em">
+<b>Note:</b> <i>For compatibility with older documents, these macros are aliased
+as</i> <kbd>.ENDNOTE_STRING_&lt;SPEC&gt;</kbd>, e.g. <kbd>.ENDNOTE_STRING_FAMILY</kbd>.
+</p>
+
+<!-- -ENDNOTES_HEADER_V_POS- -->
 
-<h5 id="endnote-string-placement" class="docs" style="margin-top: -1em; margin-bottom: .5em; margin-left: .5em;">&bull;&nbsp;Title string placement</h5>
+<h5 id="endnotes-header-placement" class="docs" style="margin-top: -.25em; margin-bottom: .5em; margin-left: .5em;">&bull;&nbsp;Header (first-page title) placement</h5>
 
 <div class="box-macro-args">
-Macro: <b>ENDNOTE_STRING_ADVANCE</b> <kbd class="macro-args">&lt;distance from top of page&gt;</kbd>
+Macro: <b>ENDNOTES_HEADER_V_POS</b> <kbd class="macro-args">&lt;distance from top of page&gt;</kbd>
 </div>
 
 <p class="requires">
 &bull;&nbsp;Argument requires a <a href="definitions.html#unitofmeasure">unit of measusure</a>
 </p>
 
+<p class="alias" style="margin-top: -1em; margin-bottom: 0;">
+<i>Alias:</i> <b>ENDNOTE_STRING_ADVANCE</b> (for compatibility with older documents)
+</p>
+
 <p>
 By default, mom places the title (the docheader, as it were) of
 endnotes pages (typically "ENDNOTES") on the same
@@ -5261,7 +5551,7 @@ that is used for the start of
 <a href="definitions.html#running">running text</a>.
 If you&#8217;d prefer another location, higher or lower on the page
 (thereby also raising or lowering the starting position of the
-endnotes themselves), invoke <kbd>.ENDNOTE_STRING_ADVANCE</kbd> with
+endnotes themselves), invoke <kbd>.ENDNOTES_HEADER_V_POS</kbd> with
 an argument stating the distance from the top edge of the page at
 which you&#8217;d like the title placed.
 </p>
@@ -5272,20 +5562,23 @@ to appear 1-1/2 inches from the top edge of the page, you&#8217;d tell
 mom about it like this:
 <br/>
 <span class="pre-in-pp">
-  .ENDNOTE_STRING_ADVANCE 1.5i
+  .ENDNOTES_HEADER_V_POS 1.5i
 </span>
 </p>
 
-<!-- -ENDNOTE_STRING_UNDERLINE- -->
+<!--- ENDNOTES_HEADER_UNDERSCORE --->
 
-<h5 id="endnote-string-underline" class="docs" style="margin-top: -1em; margin-bottom: .5em; margin-left: .5em;">&bull;&nbsp;Title string underscoring</h5>
+<h5 id="endnotes-header-underscore" class="docs" style="margin-top: -1em; margin-bottom: .5em; margin-left: .5em;">&bull;&nbsp;Header (first-page title) underscoring</h5>
 
 <div class="box-macro-args">
-Macro: <b>ENDNOTE_STRING_UNDERSCORE</b> <kbd class="macro-args">[DOUBLE] [&lt;underscore weight&gt; [&lt;underscore gap&gt; [&lt;distance between double rules]]] | &lt;none&gt; | &lt;anything&gt;</kbd>
+Macro: <b>ENDNOTES_HEADER_UNDERSCORE</b> <kbd class="macro-args">[DOUBLE] [&lt;underscore weight&gt; [&lt;underscore gap&gt; [&lt;distance between double rules]]] | &lt;none&gt; | &lt;anything&gt;</kbd>
 </div>
 
 <p class="alias" style="margin-bottom: 0;">
-<i>Alias:</i> <b>ENDNOTE_STRING_UNDERLINE</b>
+<i>Alias:</i> <b>ENDNOTES_HEADER_UNDERLINE</b>.
+<i>(For compatibility with older documents, also
+aliased as</i> <b>ENDNOTE_STRING_UNDERSCORE</b> <i>and</i>
+<b>ENDNOTE_STRING_UNDERLINE</b>.)
 </p>
 
 <p class="requires">
@@ -5298,16 +5591,16 @@ appended to it; all other arguments require a unit of measure
 </p>
 
 <p>
-Invoked without an argument, <kbd>.ENDNOTE_STRING_UNDERSCORE</kbd>
+Invoked without an argument, <kbd>.ENDNOTES_HEADER_UNDERSCORE</kbd>
 will place a single rule underneath the endnotes page title.  Invoked
-with the argument, <kbd>DOUBLE</kbd>, ENDNOTE_STRING_UNDERSCORE will
+with the argument, <kbd>DOUBLE</kbd>, ENDNOTES_HEADER_UNDERSCORE will
 double-underscore the title.  Invoked with any other non-numeric
-argument, (eg <kbd>OFF, NO, X</kbd>, etc.) the macro disables
+argument, (e.g., <kbd>OFF, NO, X</kbd>, etc.) the macro disables
 underscoring of the title.
 </p>
 
 <p>
-In addition, you can use ENDNOTE_STRING_UNDERSCORE to control the
+In addition, you can use ENDNOTES_HEADER_UNDERSCORE to control the
 weight of the underscore rule(s), the gap between the title and the
 underscore, and, in the case of double-underscores, the distance
 between the two rules.
@@ -5317,46 +5610,50 @@ between the two rules.
 Some examples:
 <br/>
 <span class="pre-in-pp">
-  .ENDNOTE_STRING_UNDERSCORE 1
+  .ENDNOTES_HEADER_UNDERSCORE 1
       - turn underscoring on; set the rule weight to 1 point
 
-  .ENDNOTE_STRING_UNDERSCORE 1 3p
+  .ENDNOTES_HEADER_UNDERSCORE 1 3p
       - turn underscoring on; set the rule weight to 1 point; set
         the gap between the title and the underscore to 3 points
   
-  .ENDNOTE_STRING_UNDERSCORE DOUBLE .75 3p
+  .ENDNOTES_HEADER_UNDERSCORE DOUBLE .75 3p
       - turn double-underscoring on; set the rule weight to 3/4 of
         a point; set the gap between the title and the upper
         underscore to 3 points; leave the gap between the upper
-        and the lower underunderscore at the default
+        and the lower underscore at the default
   
-  .ENDNOTE_STRING_UNDERSCORE DOUBLE 1.5 1.5p 1.5p
+  .ENDNOTES_HEADER_UNDERSCORE DOUBLE 1.5 1.5p 1.5p
       - turn double-underscoring on; set the rule weight to 1-1/2
         points; set the gap between the title and the upper
         underscore to 1-1/2 points; set the gap between the upper
         and the lower underscore to 1-1/2 points
 </span>
 Note, from the above, that in all instances, underscoring (single
-or double) is enabled whenever ENDNOTE_STRING_UNDERSCORE is used in
+or double) is enabled whenever ENDNOTES_HEADER_UNDERSCORE is used in
 this way.
 </p>
 
 <p>
-Mom&#8217;s default is to double-underscore the title with 1/2-point
-rules placed 2 points apart and 2 points below the baseline of the
-title.
+By default, mom double-underscores the title if your
+<a href="docprocessing.html#printstyle">PRINTSTYLE</a>
+is <kbd>TYPEWRITE</kbd>.
 </p>
 
-<!-- -ENDNOTE_STRING_CAPS- -->
+<!-- -ENDNOTES_HEADER_CAPS- -->
 
-<h5 id="endnote-string-caps" class="docs" style="margin-top: -.5em; margin-bottom: .5em; margin-left: .5em;">&bull;&nbsp;Title string capitalization</h5>
+<h5 id="endnotes-header-caps" class="docs" style="margin-top: -.5em; margin-bottom: .5em; margin-left: .5em;">&bull;&nbsp;Header (first-page title) capitalization</h5>
 
 <div class="box-macro-args">
-Macro: <b>ENDNOTE_STRING_CAPS</b> <kbd class="macro-args">toggle</kbd>
+Macro: <b>ENDNOTES_HEADER_CAPS</b> <kbd class="macro-args">toggle</kbd>
 </div>
 
+<p class="alias" style="margin-bottom: 0;">
+<i>Alias:</i> <b>ENDNOTE_STRING_CAPS</b> (for compatibility with older documents)
+</p>
+
 <p>
-Invoked by itself, <kbd>.ENDNOTE_STRING_CAPS</kbd> will
+Invoked by itself, <kbd>.ENDNOTES_HEADER_CAPS</kbd> will
 automatically capitalize the endnotes-page title.  Invoked with any
 other argument, the macro disables automatic capitalization of the
 title.
@@ -5366,8 +5663,8 @@ title.
 If you&#8217;re generating a table of contents, you may want the
 endnotes pages title to be in caps, but the toc entry in caps/lower
 case.  If the argument to
-<kbd><a href="#endnote-string">ENDNOTE_STRING</a></kbd>
-is in caps/lower case and ENDNOTE_STRING_CAPS is on, this is exactly
+<kbd><a href="#endnotes-header-string">ENDNOTES_HEADER_STRING</a></kbd>
+is in caps/lower case and ENDNOTES_HEADER_CAPS is on, this is exactly
 what will happen.
 </p>
 
@@ -5412,87 +5709,25 @@ included in the endnotes redundant.
 <p class="defaults" style="padding-top: 6px;">
 See
 <a href="#control-macro-args">Arguments to the control macros</a>.
+<br/>
+The following ENDNOTE_TITLE_STYLE control macros may also be
+<a href="#grouping">grouped</a>
+using ENDNOTE_TITLE_STYLE_STYLE.
 </p>
 <span class="pre defaults">
-.ENDNOTE_TITLE_FAMILY  default = prevailing document family; default is Times Roman
-.ENDNOTE_TITLE_FONT    default = bold
-.ENDNOTE_TITLE_SIZE*   default = 0
-.ENDNOTE_TITLE_QUAD    default = left
+.ENDNOTE_TITLE_FAMILY default = prevailing document family; default is Times Roman
+.ENDNOTE_TITLE_FONT   default = bold
+.ENDNOTE_TITLE_SIZE*  default = 0
+.ENDNOTE_TITLE_COLOR  default = black
+.ENDNOTE_TITLE_QUAD   default = left
+.ENDNOTE_TITLE_CAPS
+.ENDNOTE_TITLE_SMALLCAPS
+.ENDNOTE_TITLE_UNDERSCORE default = single underscore 
 
 *Relative to the size of the endnotes text (set with ENDNOTE_PT_SIZE)
 </span>
 </div>
 
-<!-- -ENDNOTE_TITLE_UNDERLINE- -->
-
-<h5 id="endnote-title-underscore" class="docs" style="margin-top: -1.25em; margin-bottom: .5em; margin-left: .5em;">&bull;&nbsp;Endnotes document-identification underscoring</h5>
-
-<div class="box-macro-args">
-Macro: <b>ENDNOTE_TITLE_UNDERSCORE</b> <kbd class="macro-args">[DOUBLE] [&lt;underline weight&gt; [&lt;underline gap&gt; [&lt;distance between double rules]]] | &lt;none&gt; | &lt;anything&gt;</kbd>
-</div>
-
-<p class="alias" style="margin-bottom: 0;">
-<i>Alias:</i> <b>ENDNOTE_TITLE_UNDERLINE</b>
-</p>
-
-<p class="requires">
-&bull;&nbsp;The argument
-<span style="font-style: normal"><kbd>&lt;underscore weight&gt;</kbd></span>
-must not have the
-<a href="definitions.html#unitofmeasure">unit of measure</a>,
-<span style="font-style: normal;"><kbd>p</kbd></span>,
-appended to it; all other arguments require a unit of measure
-</p>
-
-<p>
-Invoked without an argument, <kbd>.ENDNOTE_TITLE_UNDERSCORE</kbd>
-will place a single rule underneath the document identification
-string.  Invoked with the argument <kbd>DOUBLE</kbd>,
-ENDNOTE_TITLE_UNDERSCORE will double-underscore the string.  Invoked
-with any other non-numeric argument, (eg <kbd>OFF, NO, X</kbd>,
-etc.) the macro disables underscoring of the string.
-</p>
-
-<p>
-In addition, you can use ENDNOTE_TITLE_UNDERSCORE to control the
-weight of the underscore rule(s), the gap between the title and the
-underscore, and, in the case of double-underscores, the distance
-between the two rules.
-</p>
-
-<p>
-Some examples:
-<br/>
-<span class="pre-in-pp">
-  .ENDNOTE_TITLE_UNDERSCORE 1
-      - turn underscoring on; set the rule weight to 1 point
-
-  .ENDNOTE_TITLE_UNDERSCORE 1 3p
-      - turn underscoring on; set the rule weight to 1 point; set
-        the gap between the string and the underscore to 3 points
-  
-  .ENDNOTE_TITLE_UNDERSCORE DOUBLE .75 3p
-      - turn double-underscoring on; set the rule weight to 3 points
-  
-  .ENDNOTE_TITLE_UNDERSCORE DOUBLE 1.5 1.5p 1.5p
-      - turn double-underscoring on; set the rule weight to 1-1/2
-        points; set the gap between the string and the upper
-        underscore to 1-1/2 points; set the gap between the upper
-        and the lower underscore to 1-1/2 points
-</span>
-</p>
-
-<p>
-Note, from the above, that in all instances, underscoring (single or
-double) is enabled whenever ENDNOTE_TITLE_UNDERSCORE is used in this
-way.
-</p>
-
-<p>
-Mom&#8217;s default is to single-underscore the string with a
-1/2-point rule placed 2 points below its baseline.
-</p>
-
 <!-- -ENDNOTE_NUMBERING- -->
 
 <h4 id="endnotes-numbering" class="docs" style="margin-top: -.25em;">6. Endnotes referencing style</h4>
@@ -5521,7 +5756,7 @@ endnotes either by single line numbers or by line ranges.  If
 what you want is a single line number, you need only invoke
 <kbd>.ENDNOTE</kbd> at the appropriate place in running
 text <i>without the terminating</i> <kbd>\c</kbd>.  Input lines
-after the endnote has been terminated (eg with <kbd>.ENDNOTE
+after the endnote has been terminated (e.g., with <kbd>.ENDNOTE
 OFF</kbd>) must begin at the left margin.
 </p>
 
@@ -5535,7 +5770,7 @@ nothing to prevent you from doing so.)
 </p>
 
 <p id="en-mark">
-If you want a range of line numbers (eg&nbsp;[5-11]&nbsp;),
+If you want a range of line numbers (e.g.,&nbsp;[5-11]&nbsp;),
 insert, directly into the first line of the range you want, the
 <a href="definitions.html#inlines">inline escape</a>,
 <kbd>\*[EN-MARK]</kbd>.  For the terminating line number of the
@@ -5610,9 +5845,9 @@ numbers are flush right with each other.
 <p class="tip-bottom">
 If you need less space (the total number of endnotes is less than 10) or
 more (the total number of endnotes is greater than 99), use the
-macro,
+macro
 <a href="docelement.html#endnote-numbers-align">ENDNOTE_NUMBERS_ALIGN</a>,
-to set the desired amount of reserved space, eg
+to set the desired amount of reserved space, e.g.,
 <br/>
 <span class="pre-in-pp">
   .ENDNOTE_NUMBERS_ALIGN RIGHT 1
@@ -5640,9 +5875,9 @@ When your
 <a href="#endnote-marker-style">ENDNOTE_MARKER_STYLE</a>
 is <kbd>LINE</kbd>, mom, by default, inserts a space equal to
 1/2-<a href="definitions.html#em">en</a>
-between the linenumber and the text of an endnote.  For aesthetic reasons, you may want 
-to change the size of the gap, which is done with the macro,
-ENDNOTE_LINENUMBER_GAP.
+between the linenumber and the text of an endnote.  For aesthetic
+reasons, you may want to change the size of the gap, which is done
+with the macro ENDNOTE_LINENUMBER_GAP.
 </p>
 
 <p>
@@ -5666,7 +5901,7 @@ Macro: <b>ENDNOTE_LINENUMBER_BRACKETS</b> <kbd class="macro-args">PARENS | SQUAR
 
 <p>
 By default, mom puts endnote line numbers inside square brackets.
-The style of the brackets may be changed with the macro,
+The style of the brackets may be changed with the macro
 ENDNOTE_LINENUMBER_BRACKETS, which takes one of three possible
 arguments: <kbd>PARENS</kbd> (&#8220;round&#8221; brackets),
 <kbd>SQUARE</kbd> (the default) or <kbd>BRACES</kbd> (curly braces).
@@ -5880,7 +6115,7 @@ it&#8217;s impossible for mom to guess whether to align
 the first lines of margin notes with a document
 <a href="definitions.html#baseline">baseline</a>,
 whether to align the last lines of margin notes with a document
-baseline, or whether to center them, vertically, so that neither
+baseline, or whether to centre them, vertically, so that neither
 first nor last line aligns with anything!
 </p>
 
@@ -5991,7 +6226,7 @@ If you forget to do so, mom will issue a warning and abort.
 <p>
 The arguments may be entered in any order, and since the list is
 long, use of the backslash character ( <kbd>\</kbd> ) to put each on
-a separate line is recommended, eg.
+a separate line is recommended, e.g.,
 <br/>
 <span class="pre-in-pp">
   .MN_INIT \
@@ -6167,11 +6402,12 @@ etc) exits the current margin note.
 
 <ul style="margin-left: -.5em;">
   <li><a href="#finis">Tag: FINIS</a></li>
-  <li>FINIS control macros
+  <li><a href="#finis-control">FINIS control macros</a>
   <ul style="margin-left: -1.25em;">
     <li><a href="#finis-string">Changing the FINIS string</a></li>
     <li><a href="#finis-string-caps">Automatic capitalization of the FINIS string</a></li>
     <li><a href="#finis-color">Changing the FINIS colour</a></li>
+    <li><a href="#finis-no-dashes">Removing the dashes around FINIS</a></li>
   </ul></li>
 </ul>
 
@@ -6199,7 +6435,7 @@ document, mom will alert you on stderr.
 
 <p>
 If you&#8217;re writing in a language other than English, you can
-change what mom prints for END with the control macro,
+change what mom prints for END with the control macro
 <a href="#finis-string">FINIS_STRING</a>.
 </p>
 
@@ -6243,7 +6479,15 @@ two lines of your document file, like this:
 
 <h3 id="finis-control" class="docs" style="margin-bottom: -1em">Finis contol macros</h3>
 
-<h4 id="finis-string" class="docs">Changing the FINIS string</h4>
+<p>
+Since FINIS is only used once in a document, it has few control
+macros.  It is expected that you will make changes to style
+parameters such as family, font, and size with
+<a href="definitions.html#inlines">inline escapes</a>
+in the FINIS string itself (see below).  
+</p>
+
+<h4 id="finis-string" class="docs" style="margin-top: -.5em">Changing the FINIS string</h4>
 
 <p>
 By default, FINIS prints the word, END, between
@@ -6285,14 +6529,14 @@ it&#8217;s a short, dashed line composed of four hyphens.)
 <p>
 By default, mom sets the string you pass to FINIS all-caps.
 If you&#8217;d prefer that she not do so, but rather respect
-the FINIS string exactly as you enter it, invoke the macro,
+the FINIS string exactly as you enter it, invoke the macro
 <kbd>.FINIS_STRING_CAPS</kbd> with the <kbd>OFF</kbd> argument, like
 this:
 <br/>
 <span class="pre-in-pp">
     .FINIS_STRING_CAPS OFF
 </span>
-<kbd>OFF</kbd>, above, could be anything, eg <kbd>NO</kbd> or
+<kbd>OFF</kbd>, above, could be anything, e.g., <kbd>NO</kbd> or
 <kbd>X</kbd>.
 </p>
 
@@ -6301,7 +6545,7 @@ this:
 <h4 id="finis-color" class="docs">Changing the FINIS colour</h4>
 
 <p>
-Invoking the control macro, <kbd>.FINIS_COLOR</kbd>, with a
+Invoking the control macro <kbd>.FINIS_COLOR</kbd> with a
 pre-defined (or &#8220;initalized&#8221;) colour changes the colour
 of both the FINIS string and the em-dashes that surround it.  If you
 use the
@@ -6312,6 +6556,19 @@ new colour; the em-dashes will be in the default document colour
 (usually black).
 </p>
 
+<!-- -FINIS DASHES- -->
+
+<h4 id="finis-no-dashes" class="docs">Removing the dashes around FINIS</h4>
+
+<p>
+If you don&#8217;t want the dashes around the FINIS string, you can
+remove them with
+<br/>
+<span class="pre-in-pp">
+  .FINIS_NO_DASHES
+</span>
+</p>
+
 <div class="rule-long"><hr/></div>
 
 <!-- Navigation links -->
@@ -6329,4 +6586,3 @@ new colour; the em-dashes will be in the default document colour
 
 </body>
 </html>
-<!-- vim: fileencoding=utf-8: nomodified: -->
index 7873885..573f54d 100644 (file)
@@ -2,14 +2,14 @@
 <!--
 This file is part of groff, the GNU roff type-setting system.
 
-Copyright (C) 2004-2014 Free Software Foundation, Inc.
+Copyright (C) 2004-2018 Free Software Foundation, Inc.
 Written by Peter Schaffter (peter@schaffter.ca).
 
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.3 or
-any later version published by the Free Software Foundation; with the
-Invariant Sections being this comment section, with no Front-Cover
-Texts, and with no Back-Cover Texts.
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
+Texts.
 
 A copy of the Free Documentation License is included as a file called
 FDL in the main directory of the groff source package.
@@ -40,23 +40,14 @@ FDL in the main directory of the groff source package.
 
 <h1 class="docs">Document processing with mom</h1>
 
-<div style="text-align: center;">
-<ul class="no-enumerator" style="margin-left: -2.5em;">
-  <li><a href="#defaults">Document defaults</a></li>
-  <li><a href="#leading-note">Important note on leading/spacing and bottom margins</a></li>
-  <li><a href="#shim">The SHIM macro</a></li>
-</ul>
-</div>
-
-<div class="rule-medium"><hr/></div>
-
 <h2 id="toc-doc-processing" class="docs" style="text-align: center;">Table of contents</h2>
 
 <div id="docprocessing-mini-toc" style="font-size: 90%; line-height: 150%; margin-top: .5em;">
 <div class="mini-toc-col-1" style="margin-left: 0;">
-<h3 class="toc toc-docproc-header" style="margin-top: 1em;"><a class="header-link" href="#docprocessing-intro">Introduction</a></h3>
-<h3 class="toc toc-docproc-header" style="margin-top: .5em;"><a
-class="header-link" href="#setup">Preliminary document setup</a></h3>
+<h3 class="toc toc-docproc-header" style="margin-top: 1em;"><a class="header-link" href="#docprocessing-intro">Introduction to document processing</a></h3>
+<h3 class="toc toc-docproc-header" style="margin-top: .5em;"><a class="header-link" href="#defaults">Document defaults</a></h3>
+<h3 class="toc toc-docproc-header" style="margin-top: .5em;"><a class="header-link" href="#vertical-whitespace-management">Vertical whitespace management</a></h3>
+<h3 class="toc toc-docproc-header" style="margin-top: .5em;"><a class="header-link" href="#setup">Preliminary document setup</a></h3>
 <ul class="toc-docproc" style="margin-top: .5em;">
   <li><a href="#docprocessing-tut"><b>Tutorial &ndash; Setting up a mom document</b></a></li>
   <li><a href="#reference-macros"><b>The reference macros (metadata)</b></a>
@@ -77,15 +68,34 @@ class="header-link" href="#setup">Preliminary document setup</a></h3>
   </ul></li>
   <li><a href="#docstyle-macros"><b>The docstyle macros (templates)</b></a>
   <ul class="toc-docproc">
-    <li><a href="#doctype">DOCTYPE</a></li>
+    <li><a href="#doctype">DOCTYPE (default, chapter, letter, named, slides)</a></li>
+    <li><a href="#slides">DOCTYPE SLIDES</a></li>
+    <ul class="toc-docproc">
+    <li><a href="#newslide">NEWSLIDE</a></li>
+      <li><a href="#pause">PAUSE</a></li>
+      <li><a href="#transition">TRANSITION</a></li>
+    </ul>
     <li><a href="#printstyle">PRINTSTYLE</a></li>
     <li><a href="#copystyle">COPYSTYLE</a></li>
   </ul></li>
+  <li><a href="cover.html"><b>Cover pages</b></a>
+  <li><a href="#docheader"><b>Managing the document header</b></a>
+  <ul class="toc-docproc">
+    <li><a href="#docheader">DOCHEADER</a></li>
+    <li><a href="#docheader-control">Docheader control</a>
+    <ul class="toc-docproc">
+      <li><a href="#docheader-desc">Docheader description</a></li>
+      <li><a href="#index-docheader-control">Macro list</a></li>
+    </ul></li>
+  </ul></li>
 </ul>
 <h3 class="toc toc-docproc-header"><a class="header-link" href="#start-macro">Initiate document processing</a></h3>
 <ul class="toc-docproc" style="margin-top: .5em;">
   <li><a href="#start"><b>The START macro</b></a></li>
 </ul>
+</div>
+<div class="mini-toc-col-2">
+<br/>
 <h3 class="toc toc-docproc-header"><a class="header-link" href="#style-before-start">Establishing type and formatting<br/><span style="display: block; margin-top: -.3em;">parameters before START</span></a></h3>
 <ul class="toc-docproc" style="margin-top: .5em;">
   <li><a href="#type-before-start"><b>Behaviour of the typesetting macros before START</b></a>
@@ -94,10 +104,7 @@ class="header-link" href="#setup">Preliminary document setup</a></h3>
     <li><a href="#color">Initializing colours</a></li>
   </ul></li>
 </ul>
-</div>
-<div class="mini-toc-col-2" style="margin-top: -1em;">
-<br/>
-<ul class="toc-docproc" style="margin-top: .5em;">
+<ul class="toc-docproc" style="margin-top: -1em">
   <li><a href="#doc-lead-adjust"><b>Adjust linespacing to fill pages</b></a>
   <ul class="toc-docproc">
     <li><a href="#doc-lead-adjust">DOC_LEAD_ADJUST</a></li>
@@ -106,15 +113,6 @@ class="header-link" href="#setup">Preliminary document setup</a></h3>
       <li><a href="#automatic-shimming">Automatic shimming (headings, etc)</a></li>
     </ul></li>
   </ul></li>
-  <li><a href="#docheader"><b>Managing the document header</b></a>
-  <ul class="toc-docproc">
-    <li><a href="#docheader">DOCHEADER</a></li>
-    <li><a href="#docheader-control">Docheader control</a>
-    <ul class="toc-docproc">
-      <li><a href="#docheader-desc">Docheader description</a></li>
-      <li><a href="#index-docheader-control">Macro list</a></li>
-    </ul></li>
-  </ul></li>
   <li><a href="#columns-intro"><b>Setting documents in columns</b></a>
   <ul class="toc-docproc">
     <li><a href="#columns">COLUMNS</a></li>
@@ -150,7 +148,7 @@ class="header-link" href="#setup">Preliminary document setup</a></h3>
 </div>
 </div>
 
-<div class="rule-short"><br/><hr/></div>
+<div class="rule-short" style="margin-top: -1.75em"><br/><hr/></div>
 
 <!-- ==================================================================== -->
 
@@ -177,7 +175,7 @@ macros that control how they look and behave.
 Setting up a mom doc is a simple, four-part procedure.  You
 begin by entering metadata about the document itself (title,
 subtitle, author, etc.).  Next, you tell mom what kind of document
-you&#8217;re creating (eg chapter, letter, abstract, etc...) and
+you&#8217;re creating (e.g., chapter, letter, abstract, etc...) and
 what kind of output you want (typeset, typewritten, draft-style,
 etc) &mdash; essentially, templates.  Thirdly, you make as many
 or as few changes to the templates as you wish; in other words,
@@ -207,7 +205,7 @@ documentation, so just in case:
       visually 1-inch
   </li>
   <li>pages are numbered; the number appears centred, at the
-      bottom, surrounded by hyphens ( eg -6- )
+      bottom, surrounded by hyphens ( e.g., -6- )
   </li>
   <li>the first page of a document begins with a
       <a href="definitions.html#docheader">document header</a>
@@ -220,68 +218,143 @@ documentation, so just in case:
 
 <!-- ==================================================================== -->
 
-<h2 id="leading-note" class="docs">Important note on leading/spacing and bottom margins</h2>
+<h2 id="vertical-whitespace-management" class="macro-group">Vertical whitespace management</h2>
+
+<ul style="margin-left: -.5em;">
+  <li><a href="#shim">Macro: SHIM</a></li>
+  <li><a href="#no-shim">Macro: NO_SHIM</a></li>
+  <li><a href="#flex">Macro: FLEX</a></li>
+  <li><a href="#no-flex">Macro: NO_FLEX</a></li>
+</ul>
+
 
 <p>
 Mom takes evenly-aligned bottom margins in
 <a href="definitions.html#running">running text</a>
-very seriously.  Only under a very few (exceptional) circumstances
+very seriously.  Only under a very few, exceptional circumstances
 will she allow a bottom margin to &#8220;hang&#8221; (ie to fall
 short).
 </p>
 
 <p>
-In order to ensure even bottom margins, mom uses the
-&#8220;base&#8221; document
+Mom offers two modes of operation for ensuring flush bottom margins:
+shimming and flex-spacing.  Shimming means that mom nudges the
+next line after a significant break in running text back onto the
+<a href="definitions.html#baseline-grid">baseline grid</a>
+(e.g., after the insertion of a graphic).  Flex-spacing means that any
+vertical whitespace remaining between the end of running text and
+the bottom margin is distributed equally at logical points on the
+page.
+</p>
+
+<p>
+Mom uses the
 <a href="definitions.html#leading">leading</a>
-in effect <i>at the start of running text on each page</i> (ie
-the leading used in paragraphs) to calculate the spacing of every
-document element.  Prior to invoking
+of running text (the &#8220;document leading&#8221;) that&#8217;s in effect
+<i>at the start of running text on each page</i>
+to establish the grid and space document elements such as heads or
+blockquotes so that they adhere to it.  (Prior to invoking
 <a href="#start">START</a>,
-this is set with the
+the document leading is set with the
 <a href="typesetting.html#macros-typesetting">typesetting macro</a>
 <a href="typesetting.html#leading">LS</a>,
 afterwards with the document
 <a href="definitions.html#controlmacro">control macro</a>
-<a href="#doc-lead">DOC_LEAD</a>.
+<a href="#doc-lead">DOC_LEAD</a>.)
 </p>
 
 <p>
-Because mom relies so heavily on the base document
-leading, any change to the leading or spacing on a page will almost
-certainly have undesirable consequences on that page&#8217;s bottom margin
-unless the change is fully compensated for elsewhere on the page.
+What this means is that documents whose paragraphs are not separated
+by whitepace and which do not contain graphics or
+<a href="definitions.html#pre-processor">pre-processor material</a>
+will fill the page completely to the bottom margin.
+However, if your paragraphs are spaced, or if there are any leading
+changes on a page, or if graphics or pre-processor material are
+inserted, it&#8217;s very likely the bottom margins will hang
+unless shimming or flex-spacing is enabled.
 </p>
 
+<h3 id="shim-vs-flex" class="docs">Shimming <span style="text-transform: none">vs.</span> flex-spacing</h3>
+
 <p>
-In other words, if you add a few points of space somewhere on a page,
-you must subtract the same number of points somewhere else on that
-same page, and vice versa.
+<b>Shimming</b> is mom's default mode of operation.  She applies it
+automatically before headings, around quotes and blockquotes, and
+beneath
+<a href="definitions.html#float">floats</a>
+and
+<a href="definitions.html#preprocessor">pre-processor material</a>.
+In addition, the
+<a href="#shim">SHIM</a>
+macro can be inserted into a document to make sure that the
+text following falls on the baseline grid.
 </p>
 
 <p>
-If it&#8217;s a question of adding or subtracting full
-line spaces between or within document elements, you
-can do so by using the &#8220;<kbd>v</kbd>&#8221; <a
-href="definitions.html#unitofmeasure">unit of measure</a> with
-whatever spacing macro you choose &mdash;
-<a href="typesetting.html#ald">ALD</a>,
-<a href="typesetting.html#rld">RLD</a>,
-<a href="typesetting.html#space">SPACE</a>
-&mdash; and mom won&#8217;t object.  &#8220;<kbd>v</kbd>&#8221; means
-&#8220;the current leading&#8221;, so she isn&#8217;t confused by it.  And
-since &#8220;<kbd>v</kbd>&#8221; accepts decimal fractions, you can add/subtract
-half linespaces and quarter linespaces with &#8220;<kbd>v</kbd>&#8221; as well,
-<i>provided you compensate for the fractional linespace somewhere
-else on the page</i>.
+This mode of operation works well in documents whose paragraphs are
+not spaced.  Deviations from the baseline grid, usually
+caused by floats or pre-processor material, are corrected
+immediately.  If the shimming results in slightly unbalanced
+whitespace around them, it can easily be remedied by passing the
+<kbd>ADJUST</kbd> argument to the appropriate macro.
+</p>
+
+<p>
+If you do not want mom shimming automatically,
+<a href="#no-shim">NO_SHIM</a>
+turns shimming off globally and suppresses the SHIM macro.  If you
+want to disable shimming only for a particular float or
+pre-processor, the <kbd>NO_SHIM</kbd> argument may be given to the
+appropriate macro.
+</p>
+
+<p>
+<b>Flex-spacing</b> kicks in automatically whenever you turn shimming
+off.  In other words, if you want a document flex-spaced,
+<kbd>.NO_SHIM</kbd> is how you achieve it.  If, in addition to not
+shimming, you don&#8217;t want mom flex-spacing either,
+<a href="#no-flex">NO_FLEX</a>
+lets you disable it, too.
+</p>
+
+<p>
+Flex-spacing differs from shimming in that mom doesn&#8217;t
+correct deviations from the baseline grid.  Rather, she distributes
+whitespace left at the bottom of the page equally in appropriate
+places.  Like shimming, flex-spacing is automatically applied
+before heads, after floats and pre-processor material, and around
+quotes and blockquotes.  Like shimming, flex-spacing can be
+disabled for individual floats or pre-processor material with the
+<kbd>NO_FLEX</kbd> flag.
+</p>
+
+<p>
+In addition, you can use the
+<a href="#flex">FLEX</a>
+macro to insert flex-spacing yourself into the document, which you
+will almost certainly want to do if your paragraphs are spaced.
+This is because paragraphs are not flex-spaced.  Typographically,
+the ideal for spaced paragraphs is that the space between them
+remain constant.  Paradoxically, the only way to achieve flush
+bottom margins, or to correct excessive flex-spacing before a
+heading, is by adding flex-space between paragraphs.  This requires
+human judgment, and mom does not presume to decide for you.
+</p>
+
+<p>
+Shimming and flex-spacing are mutually exclusive.  If the one is
+active, the other isn&#8217;t unless you have disabled both.  This means
+that you cannot use the FLEX macro when shimming is enabled, or the
+SHIM macro when flex-spacing is enabled.  Mom will issue a warning
+if you do.
 </p>
 
 <p>
-If all this seems like too much work, mom provides a special macro
-to get you out of trouble if you&#8217;ve played around with leading
-and/or spacing.  The macro is called SHIM (like those little pieces
-of wood carpenters use to get their work even, level and snug), and
-it&#8217;s described below.
+The choice of whether to use shimming or flex-spacing depends on
+whether or not your paragraphs are spaced.  In a document with
+indented, non-spaced paragraphs, shimming and flex-spacing produce
+nearly the same result, with shimming winning by an aesthetic hair.
+In documents with spaced paragraphs, flex-spacing is the only way to
+achieve flush bottom margins.
 </p>
 
 <!-- -SHIM- -->
@@ -295,119 +368,198 @@ Macro: <b>SHIM</b>
 </div>
 
 <p>
-SHIM doesn&#8217;t take any argument.  Use it whenever you&#8217;ve played
-around with the
-<a href="definitions.html#leading">leading</a>
-or spacing on a page and you need to get mom&#8217;s document
-leading back on track.
+When shimming is enabled, which it is by default, the SHIM macro
+allows you to nudge the line following it back onto the baseline
+grid.  In documents with non-spaced paragraphs, this prevents
+the bottom margins from hanging.
 </p>
 
+<p style="margin-bottom: -1em">
+Mom herself automatically applies shimming
+</p>
+<ul>
+  <li><i>before</i> headings</li>
+  <li><i>around</i> quotes and blockquotes</li>
+  <li><i>after</i> PDF images, tables, pic diagrams, equations, and floats</li>
+</ul>
+
 <p>
-For example, say you want to insert an image into a document with
-<a href="images.html#pspic">PSPIC</a>.
-Images and graphics aren&#8217;t usually conveniently sized in
-multiples of the document leading, which means that when you insert
-the picture, you disrupt mom&#8217;s ordered placement of baselines
-on the page.  This will certainly result in a bottom margin that
-doesn&#8217;t match the bottom margins of your document&#8217;s
-other pages.
+You may sometimes find the amount of space generated by
+<kbd>SHIM</kbd> looks too big, whether inserted manually into a
+document or as a result of automatic shimming.
+The situation occurs when the amount of shimming applied
+comes close to the leading currently in effect, making it seem as if
+there&#8217;s one linespace too much whitespace.
 </p>
 
 <p>
-The solution is to insert SHIM after the image, like this:
-<br/>
-<span class="pre-in-pp">
-  &lt;text&gt;
-  .PSPIC &lt;args&gt;
-  .SHIM
-  &lt;text&gt;
-</span>
+The solution is simply to add <kbd>.SPACE&nbsp;-1v</kbd> or
+<kbd>.RLD&nbsp;1v</kbd> to the document immediately after
+<kbd>.SHIM</kbd>.  (Both <kbd>.SPACE&nbsp;-1v</kbd> and
+<kbd>.RLD&nbsp;1v</kbd> back up by one linespace.)
 </p>
 
+<div class="macro-id-overline">
+<h3 id="no-shim" class="macro-id">NO_SHIM</h3>
+</div>
+
+<div class="box-macro-args">
+Macro: <b>NO_SHIM</b> <kbd class="macro-args">&lt;none&gt; | &lt;anything&gt;
+</div>
+
 <p>
-SHIM instructs mom to insert as much or a little space after the
-picture as is needed to ensure that the baseline of the next
-<a href="definitions.html#outputline">output line</a>
-falls where mom would have put it had you not disrupted the normal
-flow of output lines with the picture.
+NO_SHIM, without an argument, disables automatic shimming,
+suppresses the SHIM macro, and enables flex-spacing.
 </p>
 
 <p>
-And say, on previewing the above example, you find the image
-doesn&#8217;t centre nicely between the lines of text, you can
-adjust the image position by using
-<a href="typesetting.html#ald">ALD</a>
-or
-<a href="typesetting.html#rld">RLD</a>
-before PSPIC.  To demonstrate,
-<br/>
-<span class="pre-in-pp">
-  &lt;text&gt;
-  .RLD 3p
-  .PSPIC &lt;args&gt;
-  .SHIM
-  &lt;text&gt;
-</span>
-which raises the image slightly and thereby balances the whitespace around it.
+NO_SHIM with any argument (e.g., <b>OFF, QUIT, END, X</b>, etc)
+re-enables shimming if it has been disabled and disables
+flex-spacing.
 </p>
 
+<!-- -FLEX- -->
+
+<div class="macro-id-overline">
+<h3 id="flex" class="macro-id">FLEX</h3>
+</div>
+
+<div class="box-macro-args">
+Macro: <b>FLEX</b> <kbd class="macro-args">[ FORCE ]</kbd>
+</div>
+
 <p>
-You may sometimes find the amount of space generated by
-<kbd>SHIM</kbd> looks too big, whether inserted manually into a
-document or as a result of automatic shimming (see immediately
-below).  The situation occurs when the amount of shimming applied
-comes close to the leading currently in effect, making it seem as if
-there&#8217;s one linespace too much whitespace.  The solution is
-simply to add <kbd>.SPACE&nbsp;-1v</kbd> or <kbd>.RLD&nbsp;1v</kbd>
-to the document immediately after <kbd>.SHIM</kbd>.  (Both
-<kbd>.SPACE&nbsp;-1v</kbd> and <kbd>.RLD&nbsp;1v</kbd> back up
-by one linespace.)
+When flex-spacing is enabled, the FLEX macro inserts flexible
+vertical whitespace into a document.  The amount of flex-space is
+determined from any extra whitespace at the bottom of a page divided
+by the number of flex points on the same page.
 </p>
-<h4 id="automatic-shimming" class="docs">Automatic shimming of headings, quotes, blockquotes, PDF images, and floats</h4>
 
 <p style="margin-bottom: -1em">
-By default, mom automatically applies shimming
+If flex-spacing is enabled, mom herself automatically applies
+flex-spacing
 </p>
-<ul>
+<ul style="margin-bottom: -.5em">
   <li><i>before</i> headings</li>
   <li><i>around</i> quotes and blockquotes</li>
-  <li><i>after</i> PDF images, floats, and tables</li>
+  <li><i>after</i> PDF images, tables, pic diagrams, equations, and floats</li>
 </ul>
 
 <p>
-In documents where paragraphs are not spaced, automatic shimming is
-almost always desirable.  In documents where paragraphs are spaced
-by an amount less than the document leading, or which have numerous
-graphics, headings, and quotes, you may want to disable shimming,
-either globally or on a tag-by-tag basis.
+Near the bottom of some pages, you may find that
+<a href="definitions.html#float">floated</a>
+or
+<a href="definitions.html#preprocessor">pre-proccesor material</a>,
+including images, or a single line of text afterward, is not flush
+with the bottom margin.  This is a result of mom flex-spacing
+<i>after</i> such material but not before.  The solution to is
+insert <kbd>.FLEX</kbd> immediately beforehand.
 </p>
 
-<p id="disable-shim">
-<span style="font-weight: bold; font-style: italic; font-size: 95%">To disable
-automatic shimming</span>, invoke the macro, <kbd>.NO_SHIM</kbd>,
-either in the style sheet section of your document (ie after
-<a href="#printstyle">PRINTSTYLE</a>
-and before
-<a href="#start">START</a>),
-or just before
-<a href="docelement.html#heading">HEADING</a>,
-<a href="docelement.html#quote">QUOTE</a>,
-<a href="docelement.html#blockquote">BLOCKQUOTE</a>,
-<a href="images.html#pdf-image">PDF_IMAGE</a>
-<a href="images.html#float">FLOAT</a>.
-or
-<a href="images.html#ts">TS</a>.
+<p>
+There are some instances where mom inhibits flex-spacing, notably
+after outputting deferred floats and pre-processor material.
+Introducing FLEX by itself in these instances&mdash;say, before a head
+or paragraph&mdash;will not have any effect; you must pass FLEX the
+<kbd>FORCE</kbd> argument.
 </p>
 
 <div class="box-tip">
 <p class="tip">
-<span class="note">Note:</span>
-<kbd>.NO_SHIM</kbd> also disables the SHIM macro itself.
+<span class="important">Important note on flex-spacing policy:</span><br/>
+Mom disables flex-spacing on
+</p>
+<ul style="margin-top: -1em; margin-bottom: -.5em">
+  <li>the last page or column of a document, before the Table of Contents,
+      Endnotes, Bibliography, and/or any &#8220;Lists of...&#8221;
+  </li>
+  <li>the page preceding a
+      <a href="rectoverso.html#collate">COLLATE</a>
+  </li>
+  <li>the page preceding a
+      <a href="typesetting.html#NEWPAGE">NEWPAGE</a>
+      or
+      <a href="headfootpage.html#blankpage">BLANKPAGE</a>
+  </li>
+  <li>the column preceding a
+      <a href="#col-next">COL_NEXT</a>
+      or
+      <a href="#col-break">COL_BREAK</a>
+  </li>
+</ul>
+
+<p>
+If this is not what you want, insert
+<a href="#no-flex"><kbd>.NO_FLEX&nbsp;OFF</kbd></a>
+before the first flex-space point on the affected page or in the
+affected column.
+</p>
+
+<p>
+Flex-spacing is also disabled for any page or column where
+insufficient room at or near the bottom causes a
+<a href="docelement.html#heading">HEADING</a>
+or
+<a href="images.html#tbl">table</a>
+to be moved to the top of the next page.  These situations cannot
+be harmonized with flex-spacing except by adjusting your layout
+to prevent them.  You may try re-enabling flex-spacing for the
+page (<kbd>.NO_FLEX&nbsp;OFF</kbd>) and manually inserting
+flex-spaces at appropriate points, but the original whitespace is
+usually large enough that re-distributing it merely changes
+one layout gaffe into another.
+</p>
+
+<p>
+Very occasionally you may notice that a document element (spaced
+paragraph, floated material, pre-processor material, or a PDF image)
+near the bottom of page has also caused mom to disable flex-spacing
+for that page.  This occurs when the document element following it
+is a
+<a href="docelement.html#pp-space">spaced paragraph</a>.
+</p>
+
+<p>
+It is typographically acceptable for there to be space between
+insertions in running text (e.g., an image) and the bottom margin when
+the next page begins with a paragraph.  If you&#8217;d like to
+nudge the insertion a little closer to the bottom margin&mdash;not
+all the way; that isn&#8217;t possible without pushing it to the
+next page and disrupting subsequent flex-spacing&mdash;insert a
+small amount of space beforehand with
+<a href="typesetting.html#sp">SP</a>.
+Do not, in these cases, use the <kbd>ADJUST</kbd>
+argument (for example to
+<a href="images.html#pdf-image">PDF_IMAGE</a>.)
 </p>
+
+<p class="tip-bottom">
+In the case of a spaced paragraph itself near the bottom of the page
+causing a break, re-enabling flex-spacing
+(<kbd>.NO_FLEX&nbsp;OFF</kbd>) at an appropriate place in your input
+file will resolve the issue, provided there is at least one
+flex-point on the page.  If not, add one or more.
+</p>
+</div>
+
+<div class="macro-id-overline">
+<h3 id="no-flex" class="macro-id">NO_FLEX</h3>
 </div>
 
-<p>To re-enable automatic shimming and the SHIM macro itself, use
-<kbd>.NO_SHIM OFF</kbd> (or <kbd>QUIT, END, X</kbd>, etc).
+<div class="box-macro-args">
+Macro: <b>NO_FLEX</b> <kbd class="macro-args">&lt;none&gt; | &lt;anything&gt;</kbd>
+</div>
+
+<p>
+NO_FLEX, without an argument, disables automatic flex-spacing
+and suppresses the FLEX macro.  If, in addition to NO_FLEX, NO_SHIM
+has also been given, your document will be neither flex-spaced nor
+shimmed.
+</p>
+
+<p>
+NO_FLEX with any argument (e.g., <b>OFF, QUIT, END, X</b>, etc)
+re-enables flex-spacing if it has been disabled.
 </p>
 
 <div class="rule-short"><hr/></div>
@@ -521,7 +673,7 @@ tell her how you want your document formatted.  What kind of
 document is it?  Should it be typeset or typewritten?  Is this a
 final copy (for the world to see) or just a draft?  Mom calls
 the macros that answer these questions &#8220;the docstyle
-macros.&#8221;, and they're essentially templates.
+macros&#8221;, and they're essentially templates.
 </p>
 <ul style="margin-top: -.5em; margin-bottom: -.5em;">
   <li>PRINTSTYLE&mdash;typeset or typewritten</li>
@@ -568,8 +720,8 @@ and tag, but who&#8217;s ever satisfied with defaults?  Use any of
 the
 <a href="typesetting.html#macros-typesetting">typesetting macros</a>
 here to change mom&#8217;s document defaults (paper size, margins,
-family, point size, line space, rag, etc), or use any of the
-document processing
+family, point size, line space, rag, etc), or any of the document
+processing
 <a href="definitions.html#controlmacro">control macros</a>.
 This is the style-sheet section of a document, and
 must come after the
@@ -614,7 +766,7 @@ here.  The setup for Joe Blow&#8217;s story now looks like this:
 <p>
 The final step in setting up a document is telling mom to start
 document processing.  It&#8217;s a no-brainer, just the single
-macro, START.  Other than PRINTSTYLE, it&#8217;s the only macro
+macro START.  Other than PRINTSTYLE, it&#8217;s the only macro
 required for document processing.
 </p>
 
@@ -826,13 +978,13 @@ the title of each article or entitled section), and appears
 </p>
 
 <ol style="list-style-type: lower-alpha">
-  <li>as the window title in PDF viewers (eg Okular or Evince)</li>
+  <li>as the window title in PDF viewers (e.g., Okular or Evince)</li>
   <li>in the initial rightmost position of page headers in the document</li>
 </ol>
 
 <p>
 Moreover, DOCTITLE does not appear in the
-<a href="definitions.html#pdfoutline">PDF outline </a>,
+<a href="definitions.html#pdfoutline">PDF outline</a>,
 as its presence in window title would make it redundant.
 </p>
 
@@ -944,7 +1096,7 @@ Macro: <b>AUTHOR</b> <kbd class="macro-args">[COVER | DOC_COVER] &quot;&lt;autho
 </p>
 
 <p>
-Each author string can hold as many names as you like, eg
+Each author string can hold as many names as you like, e.g.,
 <br/>
 <span class="pre-in-pp" style="margin-bottom: -1em;">
   .AUTHOR "Joe Blow"
@@ -1055,9 +1207,9 @@ what it is with the CHAPTER_STRING macro, like this:
 </p>
 
 <p>
-You can also use CHAPTER_STRING if you want
-&#8220;CHAPTER&#8221; (all caps) instead of &#8220;Chapter&#8221;
-(caps/lowercase) in the doc- and page-headers.
+If you would like a blank chapter string, ie you&#8217;d like
+the chapter number to appear without &#8220;Chapter&#8221;
+beforehand, enter <kbd>.CHAPTER_STRING "\&"</kbd>.
 </p>
 
 <!-- -CHAPTER_TITLE- -->
@@ -1117,7 +1269,7 @@ page headers.
 <p>
 The style of the chapter title can be altered by
 <a href="docelement.html#docelement-control">control macros</a>,
-eg CHAPTER_TITLE_FAMILY, CHAPTER_TITLE_FONT, etc.  The default
+e.g., CHAPTER_TITLE_FAMILY, CHAPTER_TITLE_FONT, etc.  The default
 family, font and point size are Times Roman, Bold Italic, 4 points
 larger than
 <a href="definitions.html#running">running text</a>.
@@ -1255,7 +1407,7 @@ you must enclose the argument in double-quotes.
 <p>
 You may, if you wish, invoke <kbd>.REVISION</kbd> without an
 argument, in which case, no revision number will be printed beside
-&quot;Rev.&quot; in headers or footers.
+&#8220;Rev.&#8221; in headers or footers.
 </p>
 
 <!-- -REVISION_STRING- -->
@@ -1362,6 +1514,44 @@ or
 <a href="cover.html#cover">COVER</a>
 </p>
 
+<p>
+Style parameters for the copyright line may be
+entered as individual macros or
+<a href="docelement.html#grouping">grouped</a>,
+e.g.,
+<br/>
+<span class="pre-in-pp">
+  .COPYRIGHT_FAMILY H
+  .COPYRIGHT_FONT   R
+  .COPYRIGHT_SIZE   -2
+</span>
+or
+<br/>
+<span class="pre-in-pp">
+  .COPYRIGHT_STYLE \
+  FAMILY H \
+  FONT   R \
+  SIZE   -2
+</span>
+The vertical position of the copyright line may be raised (-) or
+lowered (+) with the macro COPYRIGHT_V_ADJUST.  For example, to
+raise the copyright line by 3
+<a href="definitions.html#picaspoints">points</a>, you&#8217;d do
+<br/>
+<span class="pre-in-pp">
+  .COPYRIGHT_V_ADJUST -3p
+</span>
+Alternatively, the COPYRIGHT_STYLE macro may be used with the
+argument <kbd>V_ADJUST</kbd>:
+<span class="pre-in-pp">
+  .COPYRIGHT_STYLE \
+  FAMILY    H \
+  FONT      R \
+  SIZE     -2 \
+  V_ADJUST -3p
+</span>
+</p>
+
 <!-- -MISC- -->
 
 <div class="macro-id-overline">
@@ -1487,7 +1677,7 @@ Macro: <b>PDF_TITLE</b> <kbd class="macro-args">&quot;&lt;pdf viewer window titl
 
 <p>
 Except for
-<a href="#doctitle">DOCTITLE</a>,
+<a href="#doc-title">DOCTITLE</a>,
 mom does not, by default, provide PDF viewers with a document title.
 You may set one, if you like, with PDF_TITLE.
 </p>
@@ -1509,9 +1699,6 @@ and revision information in the headers) or a final copy.
 <h3 id="index-docstyle" class="macro-list">Docstyle macros</h3>
 <ul class="macro-list">
   <li><a href="#doctype">DOCTYPE</a>
-  <ul style="margin-left: -.5em; list-style-type: disc;"> 
-    <li><a href="#doctype-underline">DOCTYPE_UNDERLINE</a> &ndash; how to control DOCTYPE <kbd>NAMED</kbd> underlining</li>      
-  </ul></li>
   <li><a href="#printstyle">PRINTSTYLE</a> &ndash; non-optional macro required for document processing
   <ul style="margin-left: -.5em; list-style-type: disc;">
     <li><a href="#typeset-defaults">Defaults for PRINTSTYLE TYPESET</a></li>
@@ -1536,7 +1723,7 @@ and revision information in the headers) or a final copy.
 </div>
 
 <div class="box-macro-args">
-Macro: <b>DOCTYPE</b> <kbd class="macro-args">DEFAULT | CHAPTER | NAMED &quot;&lt;name&gt;&quot; | LETTER</kbd>
+Macro: <b>DOCTYPE</b> <kbd class="macro-args">DEFAULT | CHAPTER | NAMED &quot;&lt;name&gt;&quot; | LETTER | SLIDES</kbd>
 </div>
 
 <p>
@@ -1545,7 +1732,8 @@ The arguments <kbd>DEFAULT,</kbd> <kbd>CHAPTER</kbd> and
 <a href="definitions.html#docheader">docheader</a>
 and
 <a href="definitions.html#header">page headers</a>.
-<kbd>LETTER</kbd> tells her that you want to write a letter.
+<kbd>LETTER</kbd> and <kbd>SLIDES</kbd> tells her you want to write
+a letter or create slides.
 </p>
 
 <p>
@@ -1553,7 +1741,7 @@ Mom&#8217;s default DOCTYPE is <kbd>DEFAULT</kbd>.  If that&#8217;s
 what you want, you don&#8217;t have to give a DOCTYPE command.
 </p>
 
-<p>
+<p id="default-doctype">
 <kbd>DEFAULT</kbd> prints a
 <a href="definitions.html#docheader">docheader</a>
 containing the title, subtitle and author information given to the
@@ -1571,7 +1759,7 @@ of a
 <a href="#reference-macros">reference macro</a>,
 <kbd><a href="#chapter">CHAPTER</a></kbd>).
 If you give the chapter a title with
-<a href="#chapter-title">CHAPTER TITLE</a>,
+<a href="#chapter-title">CHAPTER_TITLE</a>,
 mom prints &#8220;Chapter &lt;n&gt;&#8221; and the
 title underneath.  If you omit the
 <a href="#chapter">CHAPTER</a>
@@ -1592,7 +1780,7 @@ the page header.
 
 <p>
 <kbd>NAMED</kbd> takes an additional argument: a name for this
-particular kind of document (eg outline, synopsis, abstract,
+particular kind of document (e.g., outline, synopsis, abstract,
 memorandum), enclosed in double-quotes. <kbd>NAMED</kbd> is
 identical to <kbd>DEFAULT</kbd> except that mom prints the argument
 to <kbd>NAMED</kbd> beneath the
@@ -1603,108 +1791,291 @@ as well as in page headers.
 for how mom outputs each part of the page header.)
 </p>
 
+<div class="box-tip">
+<p id="copystyle-note" class="tip">
+<span class="note">Note: version 2.1 change</span>
+<br/>
+<kbd>DOCTYPE NAMED "string"</kbd> no longer accepts a color argument
+after <kbd>"string"</kbd>.  Setting the color of the string is now
+done with <kbd>DOCTYPE_COLOR &lt;color&gt;</kbd>.  Default
+underscoring of <kbd>"string"</kbd> in the docheader and on covers
+has been removed.  Use <kbd>DOCTYPE_UNDERLINE</kbd>,
+<kbd>DOC_COVER_DOCTYPE_UNDERLINE</kbd> and/or
+<kbd>COVER_DOCTYPE_UNDERLINE</kbd> to re-enable it.  All three
+take the same arguments listed in the
+<a href="docelement.html#underline">Underline style, rule weight</a>
+section of
+<a href="docelement.html#control-macro-args">Arguments to the control macros</a>.
+</p>
+</div>
+
 <p>
-Additionally, if you wish the name of this particular kind of
-document to be coloured, you can pass DOCTYPE <kbd>NAMED</kbd> a
-third (optional) argument: the name of a colour pre-defined (or
-&#8220;initialized&#8221;) with
-<a href="color.html#newcolor">NEWCOLOR</a>
-or
-<a href="color.html#xcolor">XCOLOR</a>.
-For example, if you have a doctype named &#8220;Warning&#8221;,
-and you&#8217;d like &#8220;Warning&#8221; to be in red, assuming you&#8217;ve
-pre-defined (or &#8220;initialized&#8221;) the color, red, this is
-what the DOCTYPE entry would look like:
+<kbd>LETTER</kbd> tells mom you&#8217;re writing a letter.  See the
+section
+<a href="letters.html#letters">Writing Letters</a>
+for instructions on using mom to format letters.
+</p>
+
+<h4 id="slides" class="docs" style="font-size: 100%; text-transform: uppercase">Slides</h4>
+
+<p>
+PDF slides are a special kind of mom document, formatted for viewing
+in a PDF reader&#8217;s presentation mode.  In most respects, they
+behave identically to the other document types.  Key differences
+are:
+</p>
+<ul style="margin-top: -.5em">
+<li>headers, footers, and pagination are disabled by default</li>
+<li>type is set
+<a href="typesetting.html#quad">QUAD CENTER</a>
+by default</li>
+<li>
+<a href="#flex">flex-spacing</a>
+and
+<a href="#shim">shimming</a>
+are disabled by default; shimming may
+be re-enabled (with <kbd>NO_SHIM OFF</kbd>), but not flex-spacing</li>
+<li>there&#8217;s no need for
+<a href="#printstyle">PRINTSTYLE</a></li>
+</ul>
+
+<p>
+DOCTYPE SLIDES takes up to five optional arguments, which come
+immediately after SLIDES. They may be entered in any order.
 <br/>
-<span class="pre">
-  .DOCTYPE NAMED "Warning" red
+<span class="pre-in-pp">
+  DOCTYPE SLIDES \
+   ASPECT 4:3 | 16:9 \
+   HEADER "left" "centre" "right" \
+   FOOTER  "left" "centre" "right" \
+   TRANSITION "&lt;slide transition effect&gt;" (mode + parameters) \
+   PAUSE "&lt;text reveal effect&gt;" (mode + parameters)
 </span>
+For convenience, you many want to enter each argument on a single
+line as shown above; all but the last must be terminated by a
+backslash.
 </p>
 
-<div class="box-tip" style="margin-top: 1.5em;">
-<h3 id="doctype-underline" class="docs control">How to control DOCTYPE NAMED underlining</h3>
+<h5 class="docs" style="margin-top: .5em">Aspect</h5>
 
-<p style="tip">
-By default, the string passed to DOCTYPE <kbd>NAMED</kbd> is
-underlined in the docheader, and on document-cover pages and cover
-(&#8220;title&#8221;) pages.  (See the
-<a href="cover.html#intro">Introduction to covers</a>
-for the difference between &#8220;doc cover&#8221; and
-&#8220;cover&#8221; pages.)
+<p>
+Slides can be formatted for one of two aspect ratios common to
+monitors and screens: 4:3 and 16:9.  The default is 16:9.
+<span class="pre-in-pp">
+ 4:3                              16:9
+ media size: 11" x 8.25"          media size: 11" x 8.1875"
+ left/right margins: 36 points    left/right margins: 36 points
+ top margin: 90 points            top margin: 80 points
+ bottom margin: 84 points         bottom margin: 72 points
+ base text size: 16 points        base text size: 14 points
+ autoleading: 6 points, adjusted  autoleading: 4 points, adjusted
+ (header/footer size: -3 points)  (header/footer size: -2 points)
+</span>
+Note that both media sizes fit on either A4 or US LETTER papersizes.
 </p>
 
+<h5 class="docs" style="margin-top: .5em">Headers, footers, and pagination</h5>
+
 <p>
-You can use the macro DOCTYPE_UNDERLINE to set the weight of
-the underline and its distance from where the doctype-name appears
-in the docheader (doc covers and covers handle underlining of the
-doctype-name differently; see
-<a href="cover.html#cover-underline">COVER_UNDERLINE</a>),
-or simply toggle doctype underlining on or off.  Mom&#8217;s default
-is to underline the doctype-name.
+If you want a header, footer, or both for your slides, pass SLIDES
+the <kbd>HEADER</kbd> and/or <kbd>FOOTER</kbd> argument(s).  Both
+take three additional
+<a href="definitions.html#stringargument">string arguments</a>,
+which must be enclosed in double-quotes, defining the left, centre,
+and right parts of the header/footer.  Any parts you want left blank
+should be entered as two double-quotes.  For example,
+<span class="pre-in-pp">
+  HEADER "" "My slide presentation" ""  
+</span>
+will result in a header with only the centre part.
 </p>
 
 <p>
-The order of arguments is <kbd>weight</kbd>, optionally followed by
-<kbd>gap</kbd>, where &#8220;gap&#8221; is the distance from the
-<a href="definitions.html#baseline">baseline</a>
-of the doctype-name to the underline.
+Normal pagination is disabled for slides.  If you want your slides
+numbered, the slide number must be given to one of the header/footer
+parts with the
+<a href="definitions.html#inlines">inline escape</a>
+<br/>
+<kbd>\*[SLIDE#]</kbd>.  For example:
+<span class="pre-in-pp">
+  HEADER "" "My slide presentation" "" \
+  FOOTER "" "" "\*[SLIDE#]"
+</span>
+will give you a centred header with numbering at the bottom right of
+the slide.
 </p>
 
 <p>
-The <kbd>weight</kbd> argument is given in points, or fractions
-thereof, and must not have the
-<a href="definitions.html#unitofmeasure">unit of measure</a>,
-<kbd>p</kbd>, appended.  Like
-<a href="inlines.html#rule-weight">RULE_WEIGHT</a>,
-weights must be greater than 0 and less than 100.  Mom&#8217;s
-default for DOCTYPE <kbd>NAMED</kbd> underlining is 1/2 point.
+The overall family, size, and colour of headers may be set with
+HEADER_FAMILY, HEADER_SIZE, and HEADER_COLOR.  If you request
+FOOTERS, you may use the FOOTER_ equivalent of these macros.
+If you request both headers and footers, use one or the other but
+not both.  For example, in a header/footer situation, HEADER_FAMILY
+would determine the family for both headers and footers, but if you
+attempted to do this
+<span class="pre-in-pp">
+  .HEADER_FAMILY T
+  .FOOTER_FAMILY H
+</span>
+FOOTER_FAMILY would take precedence, and your header family would be
+&#8220;<kbd>H</kbd>&#8221;.
 </p>
 
 <p>
-The <kbd>gap</kbd> argument can be given using any unit of measure,
-and must have the unit of measure appended to the argument.
-The distance of the gap is measured from the baseline of the
-DOCTYPE <kbd>NAMED</kbd> name to the upper edge of the underline.
-Mom&#8217;s default gap for named-doctype underlining is 2 points.
+All other formatting of individual header/footer parts must be
+entered as inline escapes inside the double-quotes.  If you want,
+say, your headers to be red but your footer page numbering to be
+black and two points larger, this is how you&#8217;d do it:
+<span class="pre-in-pp">
+  .HEADER_COLOR red
+  .DOCTYPE SLIDES \
+    HEADER "" "My slide presentation" "" \
+    FOOTER "" "" "\*[black]\*S[+2]\*[SLIDE#]\*S[-2]"
+</span>
+</p>
+
+<div class="box-tip">
+<p class="tip">
+<span class="note">Note:</span>
+Do not use mom&#8217;s
+<a href="inlines.html#inline-size-mom"><kbd>\*[SIZE &plusmn;n]</kbd></a>
+inline escape to change point size in the strings passed to HEADER
+or FOOTER.  Prefer either mom&#8217;s <kbd>\*S[&plusmn;n]</kbd> or
+groff's <kbd>\s[&plusmn;n]</kbd>.
+</span>
 </p>
+</div>
+
+<h5 class="docs" style="margin-top: .5em">Transition</h5>
 
 <p>
-As an example, suppose you want the doctype-name underlined in the
-docheader with a 2-point rule separated from the doctype-name by 3
-points.  The way to accomplish it is:
-<br/>
+&#8220;Transition&#8221; refers to how new slides appear during a
+presentation.  The official PDF specification lists a number of modes,
+each with a choice of configurable parameters.  Modes include Box,
+Blinds, Wipe, Fade, and several others.  Parameters include things
+like duration, dimension, and direction.  There are a total of
+twelve modes; for each one there are from one to six configurable
+parameters.  Consult <kbd>man gropdf(1)</kbd> for a complete listing
+of modes and parameters.
+</p>
+
+<p>
+If you pass SLIDES the <kbd>TRANSTION</kbd> argument, you must
+at a minimum follow it with a mode.  Afterwards, you may give as
+many or as few parameters as you wish.  Parameters are, in order,
 <span class="pre-in-pp">
-  .DOCTYPE_UNDERLINE 2 3p
+  1. duration
+  2. dimension
+  3. motion
+  4. direction
+  5. scale
+  6. bool
 </span>
-If you wanted the same thing, but were content with mom&#8217;s
-default gap of 2 points,
-<br/>
+You don't have to fill them all out.  If you only need the first
+three, that's all you need to input.  If you need the first and
+third, enter the second as a period (dot), which is used any time
+you want to leave a parameter at its current default or when it
+isn&#8217;t applicable.  For example, if you want a Box transition
+that lasts 1 second, filling the screen from the centre outwards,
+you'd enter
 <span class="pre-in-pp">
-  .DOCTYPE_UNDERLINE 2
+  TRANSITION "Box 1 . O"
 </span>
-would do the trick.
+because Box does not take a &#8220;dimension&#8221; parameter but it
+does take a motion parameter.
 </p>
 
 <p>
-If you merely want to toggle the underlining of
-the doctype-name in docheaders on or off, invoke
-<kbd>.DOCTYPE_UNDERLINE</kbd> by itself to turn the underlining on,
-or <kbd>.DOCTYPE_UNDERLINE&nbsp;OFF</kbd> (or NO, X, etc.)
+Notice that the entire string (mode+parameters) must be enclosed in
+double-quotes.
 </p>
 
-<p class="tip-bottom">
-Please note that if you supply a weight to DOCTYPE_UNDERLINE, and
-optionally a gap, you also turn the underlining of the doctype-name
-in docheaders on; if this is not what you want, you must turn the
-underlining off manually afterwards.
+<div class="box-tip">
+<p class="tip">
+<span class="note">Note:</span>
+Not all PDF viewers support all modes.  Any that are not supported
+are replaced by the &#8220;R&#8221; mode, which simply replaces one
+slide with the next unless the PDF viewer has a different default
+transition mode.
+</span>
 </p>
 </div>
 
+<h5 class="docs" style="margin-top: .5em">Pause</h5>
+
 <p>
-<kbd>LETTER</kbd> tells mom you&#8217;re writing a letter.  See the
-section
-<a href="letters.html#letters">Writing Letters</a>
-for instructions on using mom to format letters.
+A &#8220;pause&#8221; occurs when material on a slide is halted (see
+<a href="#pause">PAUSE</a>),
+awaiting a mouse click, PgDown, Next, or the spacebar to reveal 
+subsequent material.  All the same modes and parameters as
+<kbd>TRANSITION</kbd> may be used.  The manner of entering them is
+is identical, including that the entire mode+parameter string must
+be enclosed in double-quotes.
+</p>
+
+<div class="macro-id-overline">
+<h3 id="slide-macros" class="macro-id">SLIDE MACROS</h3>
+</div>
+
+<div id="newslide" class="box-macro-args">
+Macro: <b>NEWSLIDE</b> <kbd class="macro-args">["&lt;transition mode and parameters&gt;"]</kbd>
+</div>
+
+<p>
+Unless you want material from one slide to flow onto the next, you
+need to tell mom when to start a new slide with the macro NEWSLIDE.
+Without any arguments, the new slide will appear with the default
+TRANSTION you gave to DOCTYPE SLIDES.
+</p>
+
+<p>
+If you would like a different transition, you may pass NEWSLIDE a
+new mode and associated parameters, following the same rules as the
+TRANSITION argument to DOCTYPE.  Note that the new effect becomes
+the default.  If you wish to return to the original transition, you
+must give it explicitly to the appropriate NEWSLIDE.
+</p>
+
+<div id="pause" class="box-macro-args">
+Macro: <b>PAUSE</b> <kbd class="macro-args">["&lt;pause mode and parameters&gt;"]</kbd>
+</div>
+
+<p>
+Pauses in slides are accomplished by entering the macro PAUSE at
+desired locations in your input file.  Subsequent material will be
+revealed using the pause mode given to DOCTYPE SLIDES.
+</p>
+
+<p>
+If you would like a different mode, you may pass PAUSE a
+new mode and associated parameters, following the same rules as the
+PAUSE argument to DOCTYPE.
+</p>
+
+<div id="transition" class="box-macro-args">
+Macro: <b>TRANSITION</b> <kbd class="macro-args">["&lt;transition mode and parameters&gt;"]</kbd>
+</div>
+
+<p>
+If for some reason you have material that flows from one slide to
+the next <i>and</i> you want the next slide to have a transition
+different from the current one, you can tell mom about the new
+transition with the macro TRANSITION anywhere prior to the break to
+the next slide.
+</p>
+
+<h4 id="slide-printing" class="docs" style="font-size: 100%; text-transform: uppercase">Printing slides</h4>
+
+<p>
+If you want to print slides as handouts, you have to tell
+<kbd>pdfmom</kbd> or <kbd>gropdf</kbd>, otherwise printing will
+stop at the first pause.  Simply precede <kbd>pdfmom</kbd> or
+<kbd>gropdf</kbd> with GROPDF_NOSLIDE=1, like this:
+<br/>
+<span class="pre-in-pp">
+ GROPDF_NOSLIDE=1 pdfmom &lt;options&gt; slidefile.mom &gt; slidefile.pdf
+</span>
+
 </p>
 
 <!-- -PRINTSTYLE- -->
@@ -1718,7 +2089,8 @@ Macro: <b>PRINTSTYLE</b> <kbd class="macro-args">TYPESET | TYPEWRITE [ SINGLESPA
 </div>
 
 <p class="requires">
-&bull;&nbsp;Required for document processing
+&bull;&nbsp;Required for document processing, except in the case of
+slides
 <br/>
 Must come before any changes to default document style
 </p>
@@ -2212,7 +2584,7 @@ below have the following meanings:
   FAMILY         The family of all type in the document
   PT_SIZE        The point size of type in paragraphs; mom uses
                  this to calculate automatic point size changes
-                 (eg for heads, footnotes, quotes, headers, etc)
+                 (e.g., for heads, footnotes, quotes, headers, etc)
   LS/AUTOLEAD**  The leading used in paragraphs; all leading and
                  spacing of running text is calculated from this
 
@@ -2276,7 +2648,7 @@ If you routinely make the same changes to mom&#8217;s defaults in
 order to create similar documents in a similar style&mdash;in other
 words, you need a template&mdash; you can create style-sheet files
 and include, or "source", them into your mom documents with the
-macro, INCLUDE.  The right place for such style sheets is after
+macro INCLUDE.  The right place for such style sheets is after
 <a href="#printstyle">PRINTSTYLE</a>
 and before
 <a href="#start">START</a>.
@@ -2367,11 +2739,11 @@ I recommend doing so before you begin document processing with
 </p>
 
 <p>
-The macro,
-<a href="color.html#color">COLOR</a>,
+The macro
+<a href="color.html#color">COLOR</a>
 and the
 <a href="definitions.html#inlines">inline escape</a>,
-<a href="color.html#color-inline"><kbd>\[&lt;colorname&gt;]</kbd></a>,
+<a href="color.html#color-inline"><kbd>\*[&lt;colorname&gt;]</kbd></a>
 can be used at any time during document processing for occasional
 colour effects.  However, consistent and reliable colourizing of
 various document elements (the docheader, heads, linebreaks,
@@ -2387,20 +2759,16 @@ If you plan to have mom generate a
 <a href="docelement.html#toc">table of contents</a>,
 do not embed colour
 <a href="definitions.html#inlines">inline escapes</a>
-(<a href="color.html#color-inline"><kbd>\[&lt;colorname&gt;]</kbd></a>)
+(<a href="color.html#color-inline"><kbd>\*[&lt;colorname&gt;]</kbd></a>)
 in the
 <a href="definitions.html#stringargument">string arguments</a>
 given to any of the
 <a href="docprocessing.html#reference-macros">reference macros</a>,
 nor in the string arguments given to
-<a href="docelement.html#head">HEAD</a>,
-<a href="docelement.html#subhead">SUBHEAD</a>
-or
-<a href="docelement.html#parahead">PARAHEAD</a>.
+<a href="docelement.html#heading">HEADING</a>.
 Use, rather, the
 <a href="definitions.html#controlmacro">control macros</a>
-mom provides to automatically colourize these
-elements.
+mom provides to automatically colourize these elements.
 </p>
 </div>
 
@@ -2512,7 +2880,7 @@ for an explanation of how to disable this default behaviour.
 </div>
 
 <div class="box-macro-args">
-Macro: <b>DOCHEADER</b> <kbd class="macro-args">&lt;toggle&gt; [ distance to advance from top of page ]</kbd>
+Macro: <b>DOCHEADER</b> <kbd class="macro-args">&lt;toggle&gt; [ distance to advance from top of page ] [ NO_SHIM ]</kbd>
 </div>
 
 <p class="requires">
@@ -2556,20 +2924,30 @@ edge of the paper to the
 of the first line of type.
 </p>
 
+<p>
+With <kbd>DOCHEADER OFF</kbd>, it is possible to create your own
+custom docheaders (after
+<a href="#start">START</a>)
+using mom&#8217;s typesetting macros.  It is recommended that if you
+do create a custom docheader, you make
+<a href="docprocessing.html#shim"><kbd>.SHIM</kbd></a>
+the last macro before the first item of your document (for
+example, <kbd>PP</kbd> or <kbd>HEADING&nbsp;1</kbd>.
+</p>
+
 <div class="box-tip">
 <p class="tip">
-<span class="tip">Tip:</span>
-Since no document processing happens until you invoke
-<a href="#start"><kbd>.START</kbd></a>&mdash;including
-anything to do with docheaders&mdash;you can
-typeset your own docheader prior to START (if
-you don&#8217;t like the way mom does things) and use
-<kbd>.DOCHEADER&nbsp;OFF</kbd> with its optional distance
-argument to ensure that the body of your document starts where
-you want.  You can even insert a PDF or PostScript image file (see
-<a href="images.html#pspic">PSPIC</a>).
-and
-<a href="images.html#pdf-image">PDF_IMAGE</a>).
+<span class="note">Note:</span>
+You may have tried <kbd>DOCHEAHER&nbsp;OFF</kbd> with a distance argument
+and discovered that mom will not budge the starting position of the document
+from her chosen default location.  This is byproduct of
+<a href="#shim">shimming</a>,
+which mom always applies before the first line of running text after
+the docheader, regardless of which
+<a href="#vertical-whitespace-management">vertical whitespace management</a>
+strategy is in effect.  If you encounter the problem, pass
+<kbd>DOCHEADER&nbsp;OFF&nbsp;&lt;distance&gt;</kbd>
+the additional final argument, <kbd>NO_SHIM</kbd>.
 </p>
 </div>
 
@@ -2599,8 +2977,7 @@ A typeset docheader has the following characteristics:
       by        medium italic, same size as running text
    Author(s)    medium italic, same size as running text
 
-(Document type) bold italic, underscored, 3 points larger than running text
-
+(Document type) bold italic, 3 points larger than running text
 </span>
 </div>
 
@@ -2613,7 +2990,6 @@ is <kbd>CHAPTER</kbd>,
 <span class="pre" style="color: #302419;">
  Chapter &lt;n&gt;   bold, 4 points larger than running text
 Chapter Title  bold italic, 4 points larger than running text
-
 </span>
 </div>
 
@@ -2624,7 +3000,6 @@ is the prevailing family of the whole document.  Title, subtitle,
 author and document type are what you supply with the
 <a href="#reference-macros">reference macros</a>.
 Any you leave out will not appear; mom will compensate:
-
 </p>
 
 <div class="box-tip">
@@ -2633,52 +3008,56 @@ Any you leave out will not appear; mom will compensate:
 If your DOCTYPE is <kbd>CHAPTER</kbd> and you have both &#8220;Chapter
 &lt;n&gt;&#8221; and a &#8220;Chapter Title&#8221; (as above), mom
 inserts a small amount of whitespace between them, equal to
-one-quarter of the <a href="definitions.html#leading">leading</a> in
-effect.  If this doesn&#8217;t suit you, you can alter the space by
-including the
-<a href="definitions.html#inlines">inline escapes</a>,
-<a href="inlines.html#up"><kbd>\*[UP]</kbd></a>
-or
-<a href="inlines.html#down"><kbd>\*[DOWN]</kbd></a>,
-in the argument you pass to
-<a href="#chapter-title">CHAPTER_TITLE</a>,
-like this:
-<br/>
-<span class="pre-in-pp" style="margin-bottom: -1em;">
-  .CHAPTER_TITLE "\*[DOWN 2p]Why Not Patent Calculus?"
-</span>
-or
-<span class="pre-in-pp" style="margin-top: -.5em;">
-  .CHAPTER_TITLE "\*[UP 2p]Why Not Patent Calculus?"
-</span>
+one-quarter of the
+<a href="definitions.html#leading">leading</a>
+in effect.  If this doesn&#8217;t suit you, you can remove or alter
+the space with
+<a href="#space-before">CHAPTER_TITLE_SPACE_BEFORE</a>.
 </p>
 </div>
 
 <div class="macro-list-container">
 <h3 id="index-docheader-control" class="macro-list">Docheader control</h3>
-<ol class="macro-list">
-  <li><a href="#change-start">Change the starting position of the docheader</a></li>
-  <li><a href="#docheader-quad">Change quad direction the entire docheader</a></li>
-  <li><a href="#docheader-family">Change the family of the entire docheader</a></li>
-  <li><a href="#change-family">Change the family of individual docheader elements</a></li>
-  <li><a href="#change-font">Change the font of individual docheader elements</a></li>
-  <li><a href="#change-size">Adjust the size of docheader elements</a></li>
-  <li><a href="#adjust-leading">Adjust the docheader leading</a></li>
-  <li><a href="#docheader-color">Change the colour of the entire docheader</a></li>
-  <li><a href="#change-color">Change the colour of the individual docheader elements</a></li>
-  <li><a href="#change-attribute">Change the attribution string (&#8220;by&#8221;)</a></li>
-</ol>
+
+<p style="margin-top: -1.5em; margin-left: .5em; margin-right: .5em">
+With the docheader control macros, you can change the family,
+colour, leading and quad direction of the entire docheader.  You can
+also set the style parameters for each part individually.  Style
+parameters include family, font, size, colour, lead, space before,
+caps, smallcaps and underscoring.
+</p>
+
+<ul class="macro-list" style="margin-top: -.5em">
+  <li><a href="#change-whole-docheader">1. Changes to the whole docheader</a>
+  <ul style="list-style-type: disc">
+    <li><a href="#change-start">Change the starting position of the docheader</a></li>
+    <li><a href="#docheader-family">Change the family of the whole docheader</a></li>
+    <li><a href="#docheader-color">Change the colour of the whole docheader</a></li>
+    <li><a href="#docheader-lead">Change the leading of the whole docheader</a></li>
+    <li><a href="#docheader-quad">Change the quad direction of the docheader</a></li>
+  </ul>
+  </li>
+  <li><a href="#part-by-part">2. Part by part changes</a>
+  <ul style="list-style-type: disc">
+    <li><a href="#list-of-params">List of parameters and arguments</a></li>
+    <li><a href="#grouping">Grouping part/parameter changes</a> &ndash; very handy</li>
+  </ul>
+  </li>
+  <li><a href="#change-attribute">3. Changing or removing the attribution string (&#8220;by&#8221;)</a></li>
+</ul>
 </div>
 
-<h4 id="change-start" class="docs">1. Change the starting position of the docheader</h4>
+<h4 id="change-whole-docheader" class="docs" style="font-size: 100%">1. Changes to the whole docheader</h4>
+
+<h5 id="change-start" class="docs">Change the starting position of the docheader</h5>
 
 <p>
 By default, a docheader starts on the same
 <a href="definitions.html#baseline">baseline</a>
 as
 <a href="definitions.html#running">running text</a>.
-If you&#8217;d like it to start somewhere else, use the macro,
-DOCHEADER_ADVANCE, and give it the distance you want (measured from
+If you&#8217;d like it to start somewhere else, use the macro
+DOCHEADER_ADVANCE and give it the distance you want (measured from
 the top edge of the paper to the first baseline of the docheader),
 like this:
 <br/>
@@ -2707,18 +3086,18 @@ to place them where you want.
 </p>
 </div>
 
-<h4 id="docheader-quad" class="docs">2. Change the quad direction of the docheader</h4>
+<h5 id="docheader-quad" class="docs">Change the quad direction of the docheader</h5>
 
 <p>
-By default, mom centers the docheader.  If you&#8217;d prefer to
+By default, mom centres the docheader.  If you&#8217;d prefer to
 have your docheaders set flush left or right, or need to restore
-the default centering, invoke <kbd>.DOCHEADER_QUAD</kbd> with the
+the default centreing, invoke <kbd>.DOCHEADER_QUAD</kbd> with the
 quad direction you want, either <kbd>LEFT</kbd> (or <kbd>L</kbd>),
 <kbd>RIGHT</kbd> (or <kbd>R</kbd>) or <kbd>CENTER</kbd> (or
 <kbd>C</kbd>).
 </p>
 
-<h4 id="docheader-family" class="docs">3. Change the family of the entire docheader</h4>
+<h5 id="docheader-family" class="docs">Change the family of the entire docheader</h5>
 
 <p>
 By default, mom sets the docheader in the same
@@ -2743,186 +3122,199 @@ is how you&#8217;d do it.
 
 <p>
 Please note that if you use DOCHEADER_FAMILY, you can still alter
-the family of individual parts of the docheader with the macros
-listed
-<a href="#change-family">here</a>.
+the family of individual parts of the docheader.
 </p>
 
-<h4 id="change-family" class="docs">4. Change the family of individual docheader elements</h4>
+<h5 id="docheader-color" class="docs">Change the color of the entire docheader</h5>
 
 <p>
-The following macros let you change the
-<a href="definitions.html#family">family</a>
-of each docheader element separately:
-</p>
-<ul style="list-style-type: none; margin: -.5em;">
-  <li>Macro: <b>TITLE_FAMILY</b> <kbd class="macro-args">&lt;family&gt;</kbd></li>
-  <li>Macro: <b>CHAPTER_TITLE_FAMILY</b> <kbd class="macro-args">&lt;family&gt;</kbd></li>
-  <li>Macro: <b>SUBTITLE_FAMILY</b> <kbd class="macro-args">&lt;family&gt;</kbd></li>
-  <li>Macro: <b>AUTHOR_FAMILY</b> <kbd class="macro-args">&lt;family&gt;</kbd></li>
-  <li>Macro: <b>DOCTYPE_FAMILY</b> <kbd class="macro-args">&lt;family&gt;</kbd>
-      (if <a href="#doctype">DOCTYPE</a> is <kbd>NAMED</kbd>)
-  </li>
-</ul>
-
-<p>
-Simply pass the appropriate macro the family you want, just as you
-would with
-<a href="typesetting.html#family">FAMILY</a>.
-</p>
-
-<h4 id="change-font" class="docs">5. Change the font of individual docheader elements</h4>
-
-<p>
-The following macros let you change the
-<a href="definitions.html#font">font</a>
-of each docheader element separately:
-</p>
-<ul style="list-style-type: none; margin: -.5em;">
-  <li>Macro: <b>TITLE_FONT</b> <kbd class="macro-args">R | B | I | BI</kbd></li>
-  <li>Macro: <b>CHAPTER_TITLE_FONT</b> <kbd class="macro-args">R | B | I | BI</kbd></li>
-  <li>Macro: <b>SUBTITLE_FONT</b> <kbd class="macro-args">R | B | I | BI</kbd></li>
-  <li>Macro: <b>AUTHOR_FONT</b> <kbd class="macro-args">R | B | I | BI</kbd></li>
-  <li>Macro: <b>DOCTYPE_FONT</b> <kbd class="macro-args">R | B | I | BI</kbd>
-      (if <a href="#doctype">DOCTYPE</a> is <kbd>NAMED</kbd>)
-  </li>
-</ul>
-
-<p>
-Simply pass the appropriate macro the font you want. <kbd>R, B,
-I</kbd> and <kbd>BI</kbd> have the same meaning as they do for
-<a href="typesetting.html#font">FT</a>.  You may also use any of the
-<a href="appendices.html#style-extensions">style extensions</a>
-provided by mom.
-</p>
-
-<h4 id="change-size" class="docs">6. Adjust the size of individual docheader elements</h4>
-
-<p>
-The following macros let you adjust the point size of each docheader
-element separately.
-</p>
-
-<p>
-Mom calculates the point size of docheader elements from the point
-size of paragraphs in running text, so you must prepend a + or -
-sign to the argument.  Points is assumed as the
-<a href="definitions.html#unitofmeasure">unit of measure</a>,
-so there&#8217;s no need to append a unit to the argument.
-Fractional point sizes are allowed.
+The default color for docheaders is black, as you&#8217;d expect.
+If you wish to change it, use
+<kbd>.DOCHEADER_COLOR&nbsp;&lt;color&gt;</kbd>, where
+<kbd>&nbsp;&lt;color&gt;</kbd> is a color pre-initialized with
+<a href="color.html#xcolor">XCOLOR</a>
+or
+<a href="color.html#newcolor">NEWCOLOR</a>.
 </p>
 
-<ul style="list-style-type: none; margin: -.5em;">
-  <li>Macro: <b>TITLE_SIZE</b> <kbd class="macro-args">&lt;+/-points&gt;</kbd>
-      <br/>
-      &nbsp;&nbsp;&nbsp;default = +3.5 (+4 if docheader title is &quot;Chapter &lt;n&gt;&quot;)
-  </li>
-  <li>Macro: <b>CHAPTER_TITLE_SIZE</b> <kbd class="macro-args">&lt;+/-points&gt;</kbd>
-      <br/>
-      &nbsp;&nbsp;&nbsp;default = +4
-  </li>
-  <li>Macro: <b>SUBTITLE_SIZE</b> <kbd class="macro-args">&lt;+/-points&gt;</kbd>
-      <br/>
-      &nbsp;&nbsp;&nbsp;default = +0
-  </li>
-  <li>Macro: <b>AUTHOR_SIZE</b> <kbd class="macro-args">&lt;+/-points&gt;</kbd>
-      <br/>
-      &nbsp;&nbsp;&nbsp;default = +0
-  </li>
-  <li>Macro: <b>DOCTYPE_SIZE</b> <kbd class="macro-args">&lt;+/-points&gt;</kbd>
-      (if <a href="#doctype">DOCTYPE</a> is <kbd>NAMED</kbd>)
-      <br/>
-      &nbsp;&nbsp;&nbsp;default = +3
-  </li>
-</ul>
+<h5 id="docheader-lead" class="docs">Change the leading of the entire docheader</h5>
 
 <p>
-Simply pass the appropriate macro the size adjustment you want.
+By default, mom uses the leading in effect for
+<a href="definitions.html#running">running text</a>
+for docheaders.  If you want to increase or
+decrease the overall docheader leading, use
+<kbd>.DOCHEADER_LEAD&nbsp;+|-&lt;amount&gt;</kbd>, where
+<kbd>&lt;amount&gt;</kbd> is the number of
+<a href="definitions.html#picaspoints">points</a>
+by which to make the adjustment.  
 </p>
 
-<h4 id="adjust-leading" class="docs">7. Adjust the docheader leading</h4>
+<h4 id="part-by-part" class="docs" style="font-size: 100%">2. Part by part changes</h4>
 
 <p>
-The
-<a href="definitions.html#leading">leading</a>
-of docheaders is the same as running text.  If you&#8217;d like your
-docheaders to have a different leading, say, 2 points more than the
-lead of running text, use:
+Whenever you want to change the style parameters for any part of
+the docheader, simply join the name of the part to the parameter
+you wish to change using an underscore, then supply any necessary
+arguments.  The subitle double-underlined?  No problem.
 <br/>
 <span class="pre-in-pp">
-  .DOCHEADER_LEAD +2
+  .SUBTITLE_UNDERLINE DOUBLE
 </span>
-Since the leading of docheaders is calculated from the lead of running
-text, a + or - sign is required before the argument (how much to add
-or subtract from the lead of running text).  No 
-<a href="definitions.html#unitofmeasure">unit of measure</a>
-is required; points is assumed.
-</p>
-
-<h4 id="docheader-color" class="docs">8. Change the colour of the entire docheader</h4>
-
-<p>
-If you want to colourize the entire docheader:
+Author in red?
 <br/>
 <span class="pre-in-pp">
-  .DOCHEADER_COLOR <kbd class="macro-args">&lt;color name&gt;</kbd>
+  .AUTHOR_COLOR red
+</span>
+Title in smallcaps?
+<span class="pre-in-pp">
+  .TITLE_SMALLCAPS
 </span>
-You must pre-define (or &#8220;initialize&#8221;) the colour with
-<a href="color.html#newcolor">NEWCOLOR</a>
-or
-<a href="color.html#xcolor">XCOLOR</a>.
 </p>
 
+<div class="box-tip" style="margin-top: -1em;">
+<p class="tip">
+<span class="note">Note:</span>
+Use <kbd>ATTRIBUTE</kbd> as the part name for the attribution string
+(&#8220;by&#8221;) that precedes the author, and <kbd>DOCTYPE</kbd>
+as the name for the string passed to <kbd>DOCTYPE NAMED&nbsp;"string"</kbd>.
+</p>
+</div>
 
-<h4 id="change-color" class="docs">9. Change the colour of the docheader elements individually</h4>
-
-<p>
-The following macros let you change the colour of each
-docheader element separately.  You must pre-define (or
-&#8220;initialize&#8221;) the colour with
-<a href="color.html#newcolor">NEWCOLOR</a>
-or
-<a href="color.html#xcolor">XCOLOR</a>.
-</p>
-<ul style="list-style-type: none; margin: -.5em;">
-  <li>Macro: <b>TITLE_COLOR</b> <kbd class="macro-args">&lt;colorname&gt;</kbd></li>
-  <li>Macro: <b>CHAPTER_TITLE_COLOR</b> <kbd class="macro-args">&lt;colorname&gt;</kbd>
-  <ul style="list-style-type: disc; margin-left: -.5em;">
-    <li>Note: <b>CHAPTER_TITLE_COLOR</b> is needed only if you supply both a
-        <a href="#chapter">CHAPTER</a>
-        reference macro and a
-        <a href="#chapter-title">CHAPTER_TITLE</a>
-        macro.  Otherwise, TITLE_COLOR takes care of colorizing the
-        chapter header.
-    </li>
-  </ul></li>
-  <li>Macro: <b>SUBTITLE_COLOR</b> <kbd class="macro-args">&lt;colorname&gt;</kbd></li>
-  <li>Macro: <b>ATTRIBUTE_COLOR</b> <kbd class="macro-args">&lt;colorname&gt;</kbd>
-      (the &#8220;by&#8221; string preceding author[s] name[s])
-  </li>
-  <li>Macro: <b>AUTHOR_COLOR</b> <kbd class="macro-args">&lt;colorname&gt;</kbd></li>
-  <li>Macro: <b>DOCTYPE_COLOR</b> <kbd class="macro-args"> &lt;colorname&gt;</kbd>
-      (if <a href="#doctype">DOCTYPE</a> is <kbd>NAMED</kbd>)
-  </li>
-</ul>
-
-<p>
-It is not recommended that you embed colour (with the
-<a href="definitions.html#inlines">inline escape</a>,
-<a href="color.html#color-inline"><kbd>\*[&lt;colorname&gt;]</kbd></a>)
-in the strings passed to TITLE, CHAPTER_TITLE, SUBTITLE, AUTHOR or
-the name you give DOCTYPE <kbd>NAMED</kbd>.  The strings passed to
-these macros are used to generate page
-<a href="definitions.html#header">headers</a>
-and
-<a href="definitions.html#footer">footers</a>,
-with the result that an embedded colour will cause the string to be
-colourized in headers and/or footers as well.  (If you want headers
-or footers colourized, or parts thereof, use the header/footer
-control macros.)
+<h5 id="list-of-params" class="docs">List of parameters with arguments</h5>
+
+<dl>
+  <dt class="params">_FAMILY</dt>
+    <dd>
+      Takes the same argument as <a href="typesetting.html#family">FAMILY</a>.
+    </dd>
+  <dt class="params">_FONT</dt>
+    <dd>
+      Takes the same argument as <a href="typesetting.html#font">FT</a>.
+    </dd>
+  <dt class="params">_SIZE</dt>
+    <dd>
+      Takes a <kbd>+</kbd> or <kbd>-</kbd> value relative to the size of
+      <a href="definitions.html#running">running text</a>.
+    </dd>
+  <dt class="params">_COLOR</dt>
+    <dd>
+      Takes the same argument as <a href="color.html#color">COLOR</a>.
+      Colors should be pre-initialized with
+      <a href="color.html#xcolor">XCOLOR</a>
+      or
+      <a href="color.html#newcolor">NEWCOLOR</a>.
+    </dd>
+  <dt class="params">_LEAD</dt>
+    <dd>
+      Takes an absolute leading value, i.e. not relative to the
+      overall leading of the docheader.  The leading applies to
+      multiple lines of type within the same docheader part, e.g.
+      several authors or a long title that must be split over two
+      lines.  No
+      <a href="definitions.html#unitofmeasure">unit of measure</a>
+      is required;
+      <a href="definitions.html#picaspoints">points</a>
+      is assumed.
+    </dd>
+  <dt id="space-before" class="params">_SPACE</dt>
+    <dd>
+      Takes a numeric value with a
+      <a href="definitions.html#unitofmeasure">unit of measure</a>
+      appended to it.  The value may be negative.  This allows you
+      to adjust the whitespace before a docheader part, for example
+      if you want more whitespace between the title and the author.
+      <span style="display: block; margin-top: .5em">
+      Note that <kbd>TITLE</kbd> does not have a <kbd>_SPACE</kbd>
+      parameter; use
+      <a href="#change-start">DOCHEADER_ADVANCE</a>
+      to move the title further down on the page.
+      </span>
+    </dd>
+  <dt class="params">_CAPS</dt>
+    <dd>
+      Capitalizes the entire docheader part.  No argument is
+      required.
+    </dd>
+  <dt class="params">_NO_CAPS</dt>
+    <dd>
+      Only used if you need to reverse the sense of <kbd>_CAPS</kbd>, as
+      can sometimes happen when
+      <a href="rectoverso.html#collate">collating</a>
+      documents that have differing docheader style requirements.
+    </dd>
+  <dt class="params">_SMALLCAPS</dt>
+    <dd>
+      Set the entire docheader part in smallcaps.  No argument is
+      required.
+    </dd>
+  <dt class="params">_NO_SMALLCAPS</dt>
+    <dd>
+      Only used if you need to reverse the sense of
+      <kbd>_SMALLCAPS</kbd>, as can sometimes happen when
+      <a href="rectoverso.html#collate">collating</a>
+      documents that have differing docheader style requirements.
+    </dd>
+  <dt class="params">_UNDERSCORE</dt>
+    <dd>
+      With no argument, underscores the docheader part.  With a
+      single, possibly decimal numeric argument, sets the weight of
+      the underscore.  A second numeric argument to which a
+      <a href="definitions.html#unitofmeasure">unit of measure</a>
+      is appended (most likely <kbd>p</kbd>) sets the distance
+      between the baseline and the underscore.
+      <span style="display: block; margin-top: .5em">
+      If the argument <kbd>DOUBLE</kbd> is given, double underscores
+      the docheader part.  With a single, possibly decimal numeric
+      argument afterwards, sets the weight of the underscore rules.
+      A third numeric argument to which a
+      <a href="definitions.html#unitofmeasure">unit of measure</a>
+      is appended (most likely <kbd>p</kbd>) sets the distance
+      between the baseline and the first underscore rule.  A fourth
+      numeric argument to which a unit of measure is appended sets
+      the distance between the two underscore rules.
+      </span>
+      <span style="display: block; margin-top: .5em">
+      You may give <kbd>_UNDERLINE</kbd> as the parameter instead of
+      <kbd>_UNDERSCORE</kbd> if you prefer.
+      </span>
+    </dd>
+  <dt class="params">NO_UNDERSCORE</dt>
+    <dd>
+      Only used if you need to reverse the sense of
+      <kbd>_UNDERSCORE</kbd>, as can sometimes happen when
+      <a href="rectoverso.html#collate">collating</a>
+      documents that have differing docheader style requirements.
+    </dd>
+</dl>
+
+<h5 id="grouping" class="docs">Grouping part/parameter changes</h5>
+
+<p>
+If you want to change several parameters for a particular docheader
+part, you may group the changes together in a single macro by
+joining the name of the part to <kbd>STYLE</kbd> with an underscore,
+for example <kbd>TITLE_STYLE</kbd> or <kbd>AUTHOR_STYLE</kbd>.
+The following demonstrates:
+<span class="pre-in-pp">
+  .CHAPTER_TITLE_STYLE \
+  FAMILY T \
+  SIZE +4 \
+  UNDERSCORE 2 \
+  SMALLCAPS
+</span>
+Notice the use of the backslash character, which is required after
+the macro name and all parameters except the last.  Grouping reduces
+clutter and the finger fatigue caused by entering
+<span class="pre-in-pp">
+   .CHAPTER_TITLE_FAMILY T
+   .CHAPTER_TITLE_SIZE +4
+   .CHAPTER_TITLE_UNDERSCORE 2
+   .CHAPTER_TITLE_SMALLCAPS
+</span>
 </p>
 
-<h4 id="change-attribute" class="docs">10. Change the attribution string (&#8220;by&#8221;)</h4>
+<h4 id="change-attribute" class="docs" style="font-size: 100%">3. Changing or removing the attribution string (&#8220;by&#8221;)</h4>
 
 <p>
 If you&#8217;re not writing in English, you can change what mom
@@ -2933,7 +3325,7 @@ prints where &#8220;by&#8221; appears in docheaders.  For example,
 </span>
 changes &#8220;by&#8221; to &#8220;par&#8221;.  ATTRIBUTE_STRING
 can also be used, for example, to make the attribution read
-&quot;Edited by&quot;.
+&#8220;Edited by&#8221;.
 </p>
 
 <p>
@@ -2978,24 +3370,6 @@ doc cover pages, cover pages, or the first-page docheader,
 arguments, is sufficient.
 </p>
 
-<div class="box-tip">
-<p class="tip">
-<span class="note">Note:</span>
-The type specs for the attribution line in docheaders are the
-same as for the author line.  Although it&#8217;s highly unlikely
-you&#8217;ll want the attribution line in a different family, font,
-or point size, you can make such changes using
-<a href="definitions.html#inlines">inline escapes</a>
-in the argument to ATTRIBUTE_STRING.  For example,
-<br/>
-<span class="pre-in-pp">
-  .ATTRIBUTE_STRING "\f[HBI]\*[SIZE -2p] by \*[SIZE +2p]\*[PREV]"
-</span>
-would set &#8220;by&#8221; in Helvetica bold italic, 2 points
-smaller than normal.
-</p>
-</div>
-
 <div class="rule-short"><hr/></div>
 
 <!-- -COLUMNS- -->
@@ -3104,17 +3478,33 @@ or remove space after the docheader, there is no need to invoke
 <div class="box-tip">
 <p class="tip">
 <span class="note">Note:</span>
-If you add or subtract space after the docheader, e.g. with
+If you do add or subtract space after the docheader, e.g. with
 <a href="typesetting.html#ald">ALD</a>
 or
 <a href="typesetting.html#SP">SP</a>,
 and your
 <a href="definitions.html#unitofmeasure">unit of measure</a>
-is something other than &#8220;<kbd>v</kbd>&#8221;, be sure to follow the spacing
-command with
-<a href="docprocessing.html#shim"><kbd>.SHIM</kbd></a>
-unless shimming has been disabled with
-<a href="#disable-shim">NO_SHIM</a>.
+is something other than a multiple of &#8220;<kbd>v</kbd>&#8221;, be
+sure to follow the spacing command with
+<a href="docprocessing.html#shim">SHIM</a>
+before entering <kbd>.COL_MARK</kbd> unless shimming has been
+disabled with
+<a href="#no-shim">NO_SHIM</a>.
+If your document is being flex-spaced, do not use
+<a href="docprocessing.html#flex">FLEX</a>.
+Rather, disable flex-spacing temporarily with
+<br/>
+<span class="pre-in-pp">
+  .NO_FLEX
+  .NO_SHIM off
+  .SHIM
+  .COL_MARK
+</span>
+and re-enable it afterwards with
+<span class="pre-in-pp">
+  .NO_SHIM
+  .NO_FLEX off
+</span>
 </p>
 </div>
 
@@ -3151,7 +3541,7 @@ Macro: <b>COL_NEXT</b>
 it left (assuming the type is justified or quad left), and moves over
 to the top of the next column.  If the column happens to be the last
 (rightmost) one on the page, mom starts a new page
-at the &quot;column 1&quot; position.  This is the macro to use when
+at the &#8220;column 1&#8221; position.  This is the macro to use when
 you want to start a new column after the end of a paragraph.
 </p>
 
@@ -3313,12 +3703,12 @@ the tops of pages after the first.)
                element tag is entered, the font reverts
                to the current default for the new tag.
 
-               N.B. &mdash; \&bull;[SLANT] and \&bull;[BOLDER] affect
+               N.B. &mdash; \*[SLANT] and \*[BOLDER] affect
                paragraph text, and remain in effect for all
                paragraphs until turned off.  If you want to
                use them in a macro that takes a string
                argument, include the escape in the string.
-               \&bull;[COND] and \&bull;[EXT] behave similarly.
+               \*[COND] and \*[EXT] behave similarly.
 
   PT_SIZE     &bull;Changes point size for the duration of the
                current tag only.  As soon as another document
@@ -3336,25 +3726,23 @@ the tops of pages after the first.)
                a document will almost certainly result in a
                bottom margin that doesn&#8217;t align with the
                bottom margin of subsequent pages.  You&#8217;ll
-               need to use the SHIM macro to get mom back on
-               track when you&#8217;re ready to return to the
+               need to use the SHIM or FLEX macro to get mom back
+               on track when you&#8217;re ready to return to the
                document&#8217;s default leading.
 
-
-<a id="autolead"></a>
-  AUTOLEAD   &bull;Invoked before START, sets the overall document
+  <a id="autolead" style="margin-top: -1em">AUTOLEAD</a>   &bull;Invoked before START, sets the overall document
               leading as a function of the overall document
               point size (ie the point size used in paragraphs);
               subsequently disabled after START, except for calls
               to DOC_PT_SIZE
-              
+
              &bull;DOC_LEAD before DOC_PT_SIZE cancels the AUTOLEAD
               set before START
 
              &bull;Invoked after START, remains in effect for all
               subsequent point size changes made with PT_SIZE,
               but does not affect the leading of the document
-              element tags (eg HEADING, PP, QUOTE...), or calls
+              element tags (e.g., HEADING, PP, QUOTE...), or calls
               to DOC_PT_SIZE
 
   QUAD        &bull;Changes quad for the duration of the
@@ -3418,7 +3806,7 @@ first.
 </p>
 
 <p>
-If you need the space, you must use the macro, ADD_SPACE, in
+If you need the space, you must use the macro ADD_SPACE in
 conjunction with
 <a href="typesetting.html#newpage">NEWPAGE</a>.
 </p>
@@ -3426,11 +3814,13 @@ conjunction with
 <!-- -ADD_SPACE- -->
 
 <div class="macro-id-overline">
-<h3 id="add-space" class= "macro-id">ADD_SPACE</h3>
+<h3 id="add-space" class= "macro-id">ADD_SPACE/RESTORE_SPACE</h3>
 </div>
 
 <div class="box-macro-args">
 Macro: <b>ADD_SPACE</b> <kbd class="macro-args">&lt;amount of space&gt;</kbd>
+<br/>
+Macro: <b>RESTORE_SPACE</b>
 </div>
 
 <p class="requires">
@@ -3438,10 +3828,12 @@ Macro: <b>ADD_SPACE</b> <kbd class="macro-args">&lt;amount of space&gt;</kbd>
 </p>
 
 <p>
-ADD_SPACE takes as its single argument the distance
-you want mom to advance from the normal
-baseline position at the top of any page after the first
-(ie the one on which the docheader is normally printed).  A
+If your
+<a href="#doctype">DOCTYPE</a>
+is DEFAULT, CHAPTER, NAMED, or LETTER, ADD_SPACE takes as its
+single argument the distance you want mom to advance from the normal
+baseline position at the top of any page <i>after the first</i> (ie
+the one on which the docheader is normally printed).  A
 <a href="definitions.html#unitofmeasure">unit of measure</a> is
 required.
 </p>
@@ -3466,7 +3858,33 @@ Since adding space in this way is almost sure to disrupt mom&#8217;s
 ability to guarantee perfectly flush bottom margins, I highly
 recommend using the
 <a href="docprocessing.html#shim">SHIM</a>
-macro immediately after ADD_SPACE.
+or
+<a href="docprocessing.html#flex">FLEX</a>
+macro immediately after ADD_SPACE, which will add the space plus
+whatever correction is required by the
+<a href="docprocessing.html#vertical-whitespace-management">vertical whitespace management</a>
+strategy in effect.
+</p>
+
+<p>
+If your
+<a href="#doctype">DOCTYPE</a>
+is SLIDES, ADD_SPACE may be used on any slide <i>including the
+first</i> to introduce additional white space at the top.
+</p>
+
+<h4 class="docs doc-param-macros" style="margin-top: .5em">RESTORE_SPACE</h4>
+
+<p style="margin-top: .5em">
+You may sometimes find that mom refuses to respect
+<a href="typesetting.html#space">SP</a>,
+<a href="typesetting.html#index-aldrld">ALD/RLD</a>,
+<a href="docprocessing.html#shim">SHIM</a>,
+or
+<a href="docprocessing.html#flex">FLEX</a>
+after the first element (line of text, floated material) output
+at the top of a page.  Should this happen, insert the macro
+RESTORE_SPACE before issuing the spacing command.
 </p>
 
 <!-- *** -->
@@ -3630,7 +4048,7 @@ Macro: <b>DOC_FAMILY</b> <kbd class="macro-args">&lt;family&gt;</kbd>
       <li><a href="docelement.html#endnote-intro">endnotes pages</a></li>
       <li><a href="docelement.html#toc-intro">table of contents</a></li>
   </ul></li>
-  <li>any page elements (eg headers page numbers, footnotes) whose
+  <li>any page elements (e.g., headers page numbers, footnotes) whose
       families you wish to remain at their old values must be
       reset with the appropriate
       <a href="docelement.html#docelement-control">control macros</a>
@@ -3757,7 +4175,7 @@ You need do nothing special to terminate a document.  When groff
 finishes processing the last
 <a href="definitions.html#inputline">input line</a>
 of a file, the page is ejected, subject to whatever routines are
-needed to complete it (eg printing footnotes or adding the page
+needed to complete it (e.g., printing footnotes or adding the page
 number).
 </p>
 
@@ -3771,7 +4189,7 @@ page at the end of the formatted document.
 
 <p>
 The situation is rare, generally occurring only when some additional
-macro is required after the input text, eg to exit a
+macro is required after the input text, e.g., to exit a
 <a href="docelement.html#list-intro">list</a>
 or terminate a
 <a href="docelement.html#quote">quote</a>.
@@ -3822,9 +4240,6 @@ a document.
 </p>
 </div>
 
-
-<div class="rule-long"><hr/></div>
-
 <!-- Navigation links -->
 <table style="width: 100%; margin-top: 12px;">
 <tr>
@@ -3840,4 +4255,3 @@ a document.
 
 </body>
 </html>
-<!-- vim: fileencoding=utf-8: nomodified: -->
index 4ac405a..24c1a27 100644 (file)
@@ -2,14 +2,14 @@
 <!--
 This file is part of groff, the GNU roff type-setting system.
 
-Copyright (C) 2004-2014 Free Software Foundation, Inc.
+Copyright (C) 2004-2018 Free Software Foundation, Inc.
 Written by Peter Schaffter (peter@schaffter.ca).
 
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.3 or
-any later version published by the Free Software Foundation; with the
-Invariant Sections being this comment section, with no Front-Cover
-Texts, and with no Back-Cover Texts.
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
+Texts.
 
 A copy of the Free Documentation License is included as a file called
 FDL in the main directory of the groff source package.
@@ -50,7 +50,10 @@ nearly indispensable) routines to simplify typesetting.
 <ul class="no-enumerator">
 <li class="list-head-goodies"><a href="#alias">ALIAS</a> <span class="normal-smaller">&ndash; rename macros</span></li>
 <li class="list-head-goodies"><a href="#caps">CAPS</a> <span class="normal-smaller">&ndash; convert to upper case</span></li>
+<li class="list-head-goodies"><a href="#center-block">CENTER_BLOCK</a> <span class="normal-smaller">&ndash; centre blocks of type with quad intact</span></li>
 <li class="list-head-goodies"><a href="#esc-char">ESC_CHAR</a> <span class="normal-smaller">&ndash; change the escape character to something other than a backslash</span></li>
+<li class="list-head-goodies"><a href="#hang">HANG</a> <span class="normal-smaller">&ndash; hang character(s) outside right margin (inline escape)</span></li>
+<li class="list-head-goodies"><a href="#left-hang">LEFT_HANG</a> <span class="normal-smaller">&ndash; hang character(s) outside left margin</span></li>
 <li class="list-head-goodies"><a href="#silent">SILENT</a> <span class="normal-smaller">&ndash; hide input lines from output</span></li>
 <li class="list-head-goodies"><a href="#sizespecs">SIZESPECS</a> <span class="normal-smaller">&ndash; get cap-height, x-height and descender depth of a font</span></li>
 <li class="list-head-goodies"><a href="#smartquotes">SMARTQUOTES</a> <span class="normal-smaller">&ndash; convert typewriter doublequotes to proper doublequotes</span></li>
@@ -125,8 +128,7 @@ Macro: <b>ALIAS</b> <kbd class="macro-args">&lt;new name&gt; &lt;old name&gt;</k
 <p>
 The ALIAS macro may well be your best friend.  With it, you can
 change the name of a macro to anything you like (provided the new
-name is not already being used by mom; see the
-<a href="reserved.html#reserved">list of reserved words</a>).
+name is not already being used by mom).
 </p>
 
 <p>
@@ -166,7 +168,7 @@ precedes the macro when it&#8217;s a
 <div class="box-tip">
 <p class="tip">
 <span class="tip">Tip:</span>
-A particularly good candidate for ALIAS is the macro,
+A particularly good candidate for ALIAS is the macro
 <a href="typesetting.html#ps">PT_SIZE</a>.
 A more natural name for it would simply be PS, but PS conflicts
 with the <b>eqn</b> equation preprocessor and thus mom uses the
@@ -510,6 +512,21 @@ The above produces, on output
 </span>
 </p>
 
+<div class="box-tip">
+<p class="tip">
+<span class="note">Note:</span>
+<kbd>\*[LC]</kbd> must come after a terminating period.
+<br/>
+<span class="pre-in-pp">
+  \*[UC]All work and no play makes Jack a dull boy.\*[LC]
+</span>
+not
+<span class="pre-in-pp">
+  \*[UC]All work and no play makes Jack a dull boy\*[LC].
+</span>
+</p>
+</div>
+
 <!-- -STRING- -->
 
 <div class="macro-id-overline">
@@ -604,6 +621,15 @@ character to whatever the argument is.  ESC_CHAR with no argument
 restores the escape character to the backslash.
 </p>
 
+<div class="box-tip">
+<p class="tip">
+<span class="important">Important:</span>
+Changing the escape character prevents macros, which require that
+the backslash be the escape character, from functioning correctly.
+Do not introduce any subsequent macros without first restoring the
+escape character to its default.
+</p>
+</div>
 
 <div class="box-tip">
 <p class="tip">
@@ -698,10 +724,26 @@ UNDERSCORE.  If you need to underscore several lines of type, use
 </p>
 </div>
 
+<div class="box-tip">
+<p class="tip">
+<span class="note">Additional note:</span>
+In
+<a href="definitions.html#filled">nofill modes</a>,
+UNDERSCORE causes a break before and after, meaning the underscored
+word or phrase will appear as a separate line in your output.  If
+you wish to embed an underscored word or phrase into non-filled
+text, temporarily change to the corresponding fill mode with
+<a href="typesetting.html#quad">QUAD</a>
+and insert breaks manually with
+<a href="typesetting.html#br">BR</a>
+as appropriate, reverting to the original nofill mode afterwards.
+</p>
+</div>
+
 <h3 id="underscore-weight" class="docs">Controlling the weight of underscores</h3>
 <p>
 The weight (thickness) of underscores may be controlled with the
-macro, UNDERSCORE_WEIGHT.  Thus, if you want underscores with a
+macro UNDERSCORE_WEIGHT.  Thus, if you want underscores with a
 weight of 1-1/2 points, you&#8217;d invoke:
 <br/>
 <span class="pre-in-pp">
@@ -813,6 +855,22 @@ the macro
 (q.v).
 </p>
 
+<div class="box-tip">
+<p class="tip">
+<span class="note">Note:</span>
+In
+<a href="definitions.html#filled">nofill modes</a>,
+UNDERSCORE2 causes a break before and after, meaning the double-underscored
+word or phrase will appear as a separate line in your output.  If
+you wish to embed a double-underscored word or phrase into non-filled
+text, temporarily change to the corresponding fill mode with
+<a href="typesetting.html#quad">QUAD</a>
+and insert breaks manually with
+<a href="typesetting.html#br">BR</a>
+as appropriate, reverting to the original nofill mode afterwards.
+</p>
+</div>
+
 <!-- -UNDERLINE- --> 
 <div class="macro-id-overline">
 <h3 id="underline" class="macro-id">Underline</h3>
@@ -824,11 +882,11 @@ Macro: <b>UNDERLINE</b> <kbd class="macro-args">toggle</kbd>
 
 <p>
 The distinction between underscoring and underlining is that
-underscoring is suitable for occasional effects (a word here, a word
-there), whereas underlining underlines whole passages of type.
-Furthermore, you cannot colorize underlining, and there&#8217;s a
-special macro,
-<a href="#underline-specs">UNDERLINE_SPECS</a>,
+underscoring is suitable for occasional effects (a word here,
+a phrase there), whereas underlining underlines whole passages
+of type.  Furthermore, you cannot colorize underlining, and
+there&#8217;s a special macro
+<a href="#underline-specs">UNDERLINE_SPECS</a>
 to control the weight and distance from the baseline of the
 underline.  Lastly, files that use UNDERLINE must be processed with
 <br/>
@@ -1404,7 +1462,9 @@ If your running type is
 or
 <a href="typesetting.html#ext-inline">pseudo-extended</a>
 and you want your superscripts to be equivalently pseudo-condensed
-or -extended, use <kbd>\*[CONDSUP]...\*[CONDSUPX]</kbd> or
+or -extended, use
+<br/>
+<kbd>\*[CONDSUP]...\*[CONDSUPX]</kbd> or
 <kbd>\*[EXTSUP]...\*[EXTSUPX]</kbd>.
 </p>
 
@@ -1433,7 +1493,7 @@ above the baseline.  If you&#8217;re not happy with this default,
 you can change it by invoking SUPERSCRIPT_RAISE_AMOUNT with the
 amount you want them raised.  A
 <a href="definitions.html#unitofmeasure">unit of measure</a>
-must be appended directly to the amount.  Thus, you want
+must be appended directly to the amount.  Thus, if you want
 superscripts raised by 3
 <a href="definitions.html#picaspoints">points</a>
 instead of 1/3 em, you&#8217;d do
@@ -1444,6 +1504,100 @@ instead of 1/3 em, you&#8217;d do
 and all subsequent superscripts would be raised by 3 points.
 </p>
 
+<!-- -CENTER BLOCK- -->
+
+<div class="macro-id-overline">
+<h3 id="center-block" class="macro-id">Centre blocks of type</h3>
+</div>
+
+<div class="box-macro-args">
+Macro: <b>CENTER_BLOCK</b> <kbd class="macro-args">&lt;toggle&gt;</kbd>
+</div>
+
+<p>
+Blocks of type sometimes need to be centred on the page with their quad
+direction (left, centre, right) left intact.  The
+document processing macros
+<a href="docelement.html#quote">QUOTE</a>
+and
+<a href="docelement.html#blockquote">BLOCKQUOTE</a>
+take care of this automatically, but there are other situations
+where you may want to centre blocks of type.  An example might be
+left-quadded
+<a href="docelement.html#list-intro">nested lists</a>.
+</p>
+
+<p>
+Whenever you want to centre a block of type on the page, surround it with
+<kbd>.CENTER_BLOCK/.CENTER_BLOCK OFF</kbd> (or QUIT, X, etc.).
+</p>
+
+<div class="macro-id-overline">
+<h3 id="left-hang" class="macro-id">Hanging characters</h3>
+</div>
+<br/>
+<div class="box-macro-args">
+Macro: <b>LEFT_HANG</b> <kbd class="macro-args">&lt;character&gt;</kbd>
+</div>
+
+<div class="box-macro-args" style="margin-top: 1em">
+Inline: <b>\*[HANG <kbd class="macro-args">&lt;character&gt;</kbd>]</b>
+</div>
+
+
+<p>
+LEFT_HANG hangs its argument to the left of the left margin.
+If enclosed in double-quotes, the argument may contain local
+horizontal motions.
+</p>
+
+<p>
+Input text after LEFT_HANG must begin by repeating the text of the
+argument, including horizontal motions.  If the hung character is
+a left double-quote, <kbd>\[lq]</kbd> must be used in the argument
+and the usual keyboard double-quote (<kbd>"</kbd>) used for the
+input text so as not to confuse SMARTQUOTES.
+</p>
+
+<p>
+The following example demonstrates:
+<br>
+<span class="pre-in-pp">
+  .LEFT_HANG "\[lq]\*[FU3]"
+  "\*[FU3]This line will have its opening double-quote
+  plus three kern units of space hung outside the
+  left margin."
+</span>
+</p>
+
+<p style="margin-top: -1em">
+The <kbd>\*[HANG]</kbd> inline escape hangs its single-character
+argument, typically a punctuation mark, outside the right margin of
+justified copy, like this:
+<br>
+<span class="pre-in-pp">
+  This line will have its closing period hung outside
+  the right margin\*[HANG .]
+</span>
+For the exceptionally fussy, <kbd>\*[HANG]</kbd> may also be used
+with centred text to centre the text visually without taking the
+hung punctuation into account.
+</p>
+
+<p>
+If the hung character is a right double-quote, <kbd>"\[rq]"</kbd>
+must be used as the argument (that is, the <kbd>\[rq]</kbd> character surrounded
+by double-quotes).  The double-quotes are required for all special
+characters of the form <kbd>\[xx]</kbd>.
+</p>
+
+<p>
+If the hung character is a hyphen, <kbd>\*[HANG&nbsp;-]</kbd> must
+come at the end of an
+<a href="definitions.html#inputline">input line</a>.
+All other characters may be used mid-line if groff breaks the line
+naturally at the point the hung character is introduced.
+</p>
 <div class="rule-long"><hr/></div>
 
 <!-- Navigation links -->
@@ -1461,4 +1615,3 @@ and all subsequent superscripts would be raised by 3 points.
 
 </body>
 </html>
-<!-- vim: fileencoding=utf-8: nomodified: -->
index 61b7fcb..ae8c6ea 100644 (file)
@@ -2,14 +2,14 @@
 <!--
 This file is part of groff, the GNU roff type-setting system.
 
-Copyright (C) 2004-2014 Free Software Foundation, Inc.
+Copyright (C) 2004-2018 Free Software Foundation, Inc.
 Written by Peter Schaffter (peter@schaffter.ca).
 
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.3 or
-any later version published by the Free Software Foundation; with the
-Invariant Sections being this comment section, with no Front-Cover
-Texts, and with no Back-Cover Texts.
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
+Texts.
 
 A copy of the Free Documentation License is included as a file called
 FDL in the main directory of the groff source package.
@@ -102,7 +102,7 @@ box.
 
 <p>
 Here&#8217;s the same box, drawn with mom&#8217;s box drawing
-macro,
+macro
 <kbd><a href="#dbx">DBX</a></kbd>:
 <br/>
 <span class="pre-in-pp">
@@ -195,8 +195,8 @@ a little judicious reasoning, you&#8217;ll always remember how to
 draw graphical objects.  The &#8220;judicious reasoning&#8221; means
 that, for example, horizontal rules don&#8217;t require a depth and
 vertical rules don&#8217;t require a length.  Thus, in the case of
-drawing a horizontal rule, you supply the macro,
-<kbd><a href="#drh">DRH</a></kbd>,
+drawing a horizontal rule, you supply the macro
+<kbd><a href="#drh">DRH</a></kbd>
 with only the arguments (from the mnemonic) that apply: <b>W-I-L</b> (and
 possibly <b>C</b>).
 </p>
@@ -260,7 +260,8 @@ arguments.
 DRH is the only graphical object macro that may be invoked
 without arguments.  The weight (&#8220;thickness&#8221;) of
 the rule is determined by the argument you last gave the
-macro, <a href="inlines.html#rule-weight">RULE_WEIGHT</a>.
+macro
+<a href="inlines.html#rule-weight">RULE_WEIGHT</a>.
 DRH, used this way, is exactly equivalent to entering the
 <a href="definitions.html#inlines">inline escape</a>, <a
 href="inlines.html#inline-rule-mom"><kbd>\*[RULE]</kbd></a>.
@@ -627,4 +628,3 @@ page, either horizontal or vertical.
 
 </body>
 </html>
-<!-- vim: fileencoding=utf-8: nomodified: -->
index 3ed822e..13f0809 100644 (file)
@@ -2,14 +2,14 @@
 <!--
 This file is part of groff, the GNU roff type-setting system.
 
-Copyright (C) 2004-2014 Free Software Foundation, Inc.
+Copyright (C) 2004-2018 Free Software Foundation, Inc.
 Written by Peter Schaffter (peter@schaffter.ca).
 
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.3 or
-any later version published by the Free Software Foundation; with the
-Invariant Sections being this comment section, with no Front-Cover
-Texts, and with no Back-Cover Texts.
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
+Texts.
 
 A copy of the Free Documentation License is included as a file called
 FDL in the main directory of the groff source package.
@@ -204,7 +204,7 @@ type selected with
 You can, however, supply whatever strings you like&mdash;including
 page numbers&mdash;to go in any part of headers.  What&#8217;s more,
 you can set the family, font, size, colour and capitalization style
-(caps or caps/lower-case) for each header part individually.
+(caps, caps/lower-case, or smallcaps) for each header part individually.
 </p>
 
 <p>
@@ -242,19 +242,19 @@ All caps     no                  no                  yes
 Size*        -.5 (points)        -.5 (points)        -2 (points)
             (-2 if all caps)    (-2 if all caps)    (-.5 if not all caps)
 
-*Relative to the point size of type in paragraphs
+*Relative to the point size of <a href="definitions.html#running">running text</a>
 </span>
 </div>
 
 <p style="margin-top: -1.5em;">
 You can, of course, change any of the defaults using the appropriate
 control macros.  And should you wish to design headers from the
-ground up, mom has a special macro,
-<a href="#hdrftr-plain">HEADER_PLAIN</a>,
-that removes all type adjustments to headers.  The straightforward
-type specs for paragraphs are used instead, providing a simple
+ground up, mom has a special macro
+<a href="#hdrftr-plain">HEADER_PLAIN</a>
+that removes all type adjustments to headers.  The
+type specs for running text are used instead, providing a simple
 reference point for any alterations you want to make to the family,
-font, size and capitalization style of any header part.
+font, size, and capitalization style of any header part.
 </p>
 
 <h3 id="vertical-spacing" class="docs">Vertical placement and spacing of headers/footers</h3>
@@ -287,11 +287,13 @@ page.
 
 <p>
 The distance between headers and the start
-of running text can be controlled with the macro,
-<a href="#hdrftr-gap">HEADER_GAP</a>
-(effectively making HEADER_MARGIN + HEADER_GAP the top margin of
+of running text can be controlled with the macro
+<a href="#hdrftr-gap">HEADER_GAP</a>,
+effectively making HEADER_MARGIN + HEADER_GAP the top margin of
 running text unless you give mom a literal top margin (with
-<a href="typesetting.html#t-margin">T_MARGIN</a>),
+<a href="typesetting.html#t-margin">T_MARGIN</a>)
+or
+<a href="typesetting.html#page">PAGE</a>,
 in which case she ignores HEADER_GAP and begins the running text at
 whatever top margin you give.
 </p>
@@ -381,9 +383,9 @@ there&#8217;s no need to turn headers off first.
 </p>
 </div>
 
-<p>
-If you need both headers and footers, there&#8217;s a special macro,
-<a href="#headers-and-footers">HEADERS_AND_FOOTERS</a>,
+<p style="margin-top: -.5em">
+If you need both headers and footers, there&#8217;s a special macro
+<a href="#headers-and-footers">HEADERS_AND_FOOTERS</a>
 that allows you to set it up.
 </p>
 
@@ -424,7 +426,7 @@ Macro: <b>HEADERS</b> <kbd class="macro-args">toggle</kbd>
 <a href="definitions.html#header">Page headers</a>
 are on by default.  If you don&#8217;t want them, turn them off by
 invoking <kbd>.HEADERS</kbd> with any argument (<b>OFF, QUIT,
-END, X...</b>), eg
+END, X...</b>), e.g.,
 <br/>
 <span class="pre-in-pp">
     .HEADERS OFF
@@ -470,7 +472,7 @@ Macro: <b>FOOTERS</b> <kbd class="macro-args">toggle</kbd>
 are off by default.  If you want them instead of
 <a href="definitions.html#header">headers</a>
 (you can&#8217;t have both), turn them on by invoking
-<kbd>.FOOTERS</kbd> without an argument, eg
+<kbd>.FOOTERS</kbd> without an argument, e.g.,
 <br/>
 <span class="pre-in-pp">
     .FOOTERS
@@ -537,7 +539,7 @@ to headers/footers) can be designed to your own specifications.
     </ul></li>
     <li><a href="#hdrftr-right">HEADER_RIGHT</a></li>
     <li><a href="#reserved-strings">Using mom&#8217;s reserved strings in header/footer definitions</a>
-        (eg <kbd>\E*[$TITLE]</kbd> when you want
+        (e.g., <kbd>\E*[$TITLE]</kbd> when you want
         the title, <kbd>\E*[$AUTHOR]</kbd> when you want the author, etc.)
     </li>
     <li><a href="#page-number-symbol">Replacing header-left, centre or right with the page number</a></li>
@@ -547,9 +549,9 @@ to headers/footers) can be designed to your own specifications.
   <ul style="margin-left: -.5em;">
     <li><a href="#hdrftr-style-global">Global changes</a>
     <ul style="margin-left: -.5em;">
+      <li><a href="#hdrftr-plain">HEADER_PLAIN</a> &ndash; disable default adjustments to header parts</li>
       <li><a href="#hdrftr-global-family">HEADER_FAMILY</a> &ndash; family for entire header</li>
       <li><a href="#hdrftr-global-size">HEADER_SIZE</a> &ndash; size for entire header</li>
-      <li><a href="#hdrftr-plain">HEADER_PLAIN</a> &ndash; disable default adjustments to header parts</li>
       <li><a href="#hdrftr-color">HEADER_COLOR</a> &ndash; colourize the header</li>
     </ul></li>
     <li><a href="#hdrftr-style-part">Part-by-part changes</a>
@@ -558,6 +560,7 @@ to headers/footers) can be designed to your own specifications.
       <li><a href="#_font">_FONT</a> &ndash; left, centre or right font</li>
       <li><a href="#_size">_SIZE</a> &ndash; left, centre or right size</li>
       <li><a href="#_caps">_CAPS</a> &ndash; left, centre or right all caps</li>
+      <li><a href="#_smallcaps">_SMALLCAPS</a> &ndash; left, centre or right smallcaps</li>
       <li><a href="#_color">_COLOR</a> &ndash; left, centre or right colour</li>
     </ul></li>
   </ul></li>
@@ -837,13 +840,34 @@ of the header at once.
 
 <div class="macro-list-container">
 <ul style="padding-top: 6px; padding-bottom: 6px; margin-left: -.5em;">
+  <li><a href="#hdrftr-plain">HEADER_PLAIN</a></li>
   <li><a href="#hdrftr-global-family">HEADER_FAMILY</a></li>
   <li><a href="#hdrftr-global-size">HEADER_SIZE</a></li>
-  <li><a href="#hdrftr-plain">HEADER_PLAIN</a></li>
   <li><a href="#hdrftr-color">HEADER_COLOR</a></li>
 </ul>
 </div>
 
+<div id="hdrftr-plain" class="box-macro-args">
+Macro: <b>HEADER_PLAIN</b>
+</div>
+
+<p>
+By default, mom makes adjustments to the font, size, and
+capitalization style of each part of headers to achieve an
+aesthetically pleasing look.  Should you wish to design your own
+headers from the ground up without worrying how changes to the
+various elements of header style interact with mom&#8217;s defaults,
+invoke <kbd>.HEADER_PLAIN</kbd> by itself, with no argument. Mom
+will disable her default behaviour for headers, and reset all
+elements of header style to the same family, font, point size and
+colour as she uses in paragraphs.
+</p>
+
+<p>
+Replace HEADER_, above, with FOOTER_ to disable mom&#8217;s default
+behaviour for the various elements of footer style.
+</p>
+
 <div id="hdrftr-global-family" class="box-macro-args">
 Macro: <b>HEADER_FAMILY</b> <kbd class="macro-args">&lt;family&gt;</kbd>
 </div>
@@ -937,27 +961,6 @@ to change the colour of the header rule.
 Replace HEADER_, above, with FOOTER_ to colourize footers.
 </p>
 
-<div id="hdrftr-plain" class="box-macro-args">
-Macro: <b>HEADER_PLAIN</b>
-</div>
-
-<p>
-By default, mom makes adjustments to the font, size, and
-capitalization style of each part of headers to achieve an
-aesthetically pleasing look.  Should you wish to design your own
-headers from the ground up without worrying how changes to the
-various elements of header style interact with mom&#8217;s defaults,
-invoke <kbd>.HEADER_PLAIN</kbd> by itself, with no argument. Mom
-will disable her default behaviour for headers, and reset all
-elements of header style to the same family, font, point size and
-colour as she uses in paragraphs.
-</p>
-
-<p>
-Replace HEADER_, above, with FOOTER_ to disable mom&#8217;s default
-behaviour for the various elements of footer style.
-</p>
-
 <h4 id="hdrftr-style-part" class="docs">3. Part by part changes</h4>
 
 <p>
@@ -972,7 +975,9 @@ appropriate.
   <li><a href="#_font">HEADER_&lt;POSITION&gt;_FONT</a></li>
   <li><a href="#_size">HEADER_&lt;POSITION&gt;_SIZE</a></li>
   <li><a href="#_caps">HEADER_&lt;POSITION&gt;_CAPS</a></li>
+  <li><a href="#_smallcaps">HEADER_&lt;POSITION&gt;_SMALLCAPS</a></li>
   <li><a href="#_color">HEADER_&lt;POSITION&gt;_COLOR</a></li>
+  <li><a href="#grouping">Grouping style parameters for the individual header/footer parts</a></li>
 </ul>
 </div>
 
@@ -1038,7 +1043,7 @@ or as defined by you with the
 simply invoke this macro (using the appropriate position) with no
 argument.  If you wish to turn capitalization off (say, for the
 header-right string that mom capitalizes by default), invoke the
-macro with any argument (eg <kbd>OFF, QUIT, END, X</kbd>...).
+macro with any argument (e.g., <kbd>OFF, QUIT, END, X</kbd>...).
 </p>
 
 <p>
@@ -1046,6 +1051,24 @@ Replace HEADER_, above, with FOOTER_ to change a footer part&#8217;s
 capitalization style.
 </p>
 
+<div id="_smallcaps" class="box-macro-args">
+Macro: <b>HEADER_&lt;POSITION&gt;_SMALLCAPS</b> <kbd class="macro-args">toggle</kbd>
+</div>
+
+<p>
+HEADER_&lt;POSITION&gt;_SMALLCAPS is a
+<a href="definitions.html#toggle">toggle macro</a>.
+If you want any part of headers to be set in smallcaps, simply
+invoke this macro (using the appropriate position) with no argument.
+If you wish to turn the smallcaps off, invoke the macro with any
+argument (e.g., <kbd>OFF, QUIT, END, X</kbd>...).
+</p>
+
+<p>
+Replace HEADER,_ above, with FOOTER_ to invoke smallcaps for footer
+parts.
+</p>
+
 <div id="_color" class="box-macro-args">
 Macro: <b>HEADER_&lt;POSITION&gt;_COLOR</b> <kbd class="macro-args">&lt;colorname&gt;</kbd>
 </div>
@@ -1092,6 +1115,45 @@ Replace HEADER_, above, with FOOTER_ to set the colours for the
 various elements of footers.
 </p>
 
+<h5 id="grouping" class="docs">Grouping style parameters for the individual header parts</h5>
+
+<p>
+Instead of using control macros for the style parameters
+of an individual header part, the parameters may be
+<a href="docelement.html#grouping">grouped</a>
+by invoking <kbd>HEADER_&lt;POSITION&gt;_STYLE</kbd> with a list of
+keyword/value pairs.  Acceptable keywords are
+<kbd>FAMILY FONT SIZE COLOR CAPS</kbd> and <kbd>SMALLCAPS</kbd>.
+Keyword/value pairs may appear on the same line as the macro, or
+separated into several lines using the backslash character
+(<kbd>\</kbd>).  If you use the latter style, all but the final
+parameter must be terminated with the backslash.
+</p>
+
+<p>
+Thus, to set the header-left part in Helvetica bold, red, 1 point larger
+than
+<a href="definitions.html#running">running text</a>
+and all caps, you could do either
+<br/>
+<span class="pre-in-pp">
+  .HEADER_LEFT_STYLE FAMILY H FONT B SIZE +1 COLOR red CAPS
+</span>
+or
+<br/>
+<span class="pre-in-pp">
+  .HEADER_LEFT_STYLE \
+   FAMILY H \
+   FONT B \
+   SIZE +1 \
+   COLOR red \
+   CAPS
+</span>
+If you need to reverse the sense of <kbd>CAPS</kbd>
+or <kbd>SMALLCAPS</kbd>, use <kbd>NO_CAPS</kbd> or
+<kbd>NO_SMALLCAPS</kbd>.
+</p>
+
 <!-- -HDRFTR_VERTICAL- -->
 
 <h4 id="hdrftr-vertical" class="docs">3. Header/footer vertical placement and spacing</h4>
@@ -1256,9 +1318,6 @@ but if you want a different gap, say, 2 centimetres, do
 <span class="pre-in-pp">
   .HEADER_GAP 2c
 </span>
-</p>
-
-<p>
 If your document uses
 <a href="definitions.html#footer">footers</a>,
 replace HEADER_, above, with FOOTER_.  The argument to FOOTER_GAP
@@ -1295,6 +1354,32 @@ the number and the first line of running text with HEADER_GAP.
 </p>
 </div>
 
+<div id="gap-note" class="box-tip">
+<p class="tip-top">
+<span class="note">Additional note:</span>
+HEADER_GAP and FOOTER_GAP may only be used once, at the start of a
+document.  In
+<a href="rectoverso.html#collate">collated documents</a>,
+this means that HEADER_GAP or FOOTER_GAP cannot be used to change
+the gaps once they have been set.  The same applies to the Table of
+Contents, Endnotes, Bibliographies, and Lists of...&nbsp;.
+</p>
+
+<p class="tip-bottom">
+In the event that you need to change the header or footer gap after
+the start of a document, you must do so with
+<a href="typesetting.html#t-margin">T_MARGIN</a>
+or
+<a href="typesetting.html#b-margin">B_MARGIN</a>,
+which raise or lower the top and bottom margins of
+<a href="definitions.html#running">running text</a>
+but do not affect the placement headers and footers.
+(See
+<a href="tables-of-contents.html#toc-page-settings-example">here</a>
+for a demonstration.)
+</p>
+</div>
+
 <!-- -HDRFTR_SEPARATOR- -->
 
 <h4 id="hdrftr-separator" class="docs">4. Header/footer separator rule</h4>
@@ -1330,7 +1415,7 @@ Macro: <b>HEADER_RULE</b> <kbd class="macro-args">toggle</kbd>
 By default, mom prints a header separator rule underneath headers
 (or above footers). If you don&#8217;t want the rule, turn it off by
 invoking <kbd>.HEADER_RULE</kbd> with any argument (<kbd>OFF, QUIT,
-END, X...</kbd>), eg
+END, X...</kbd>), e.g.,
 <br/>
 <span class="pre-in-pp">
   .HEADER_RULE OFF
@@ -1717,13 +1802,13 @@ string, use the escape sequence for the pound sign
 
 <p>
 Normally, mom prints either a header or a footer, but not both, depending on whether
-<a href="docprocessing.html#header">HEADERS</a>
+<a href="#headers">HEADERS</a>
 or
-<a href="docprocessing.html#footer">FOOTERS</a>
+<a href="#footers">FOOTERS</a>
 is enabled.  (Page numbering, whether in the top margin
 or the bottom, is not considered a header or a footer.)
 Should you need both headers and footers on the same page, the
-single macro, HEADERS_AND_FOOTERS, is the way to set it up.
+single macro HEADERS_AND_FOOTERS is the way to set it up.
 </p>
 
 <div id="headers-and-footers" class="box-macro-args">
@@ -1738,7 +1823,7 @@ Invocation:
   &lt;L | C | R&gt; "&lt;header-recto string&gt;" \
   &lt;L | C | R&gt; "&lt;footer-recto string&gt;" \
   &lt;L | C | R&gt; "&lt;header-verso string&gt;" \
-  &lt;L | C | R&gt; "&lt;header-verso string&gt;"
+  &lt;L | C | R&gt; "&lt;footer-verso string&gt;"
 </span>
 or
 <span class="pre-in-pp" style="margin-top: -.5em;">
@@ -1813,7 +1898,7 @@ to the style shown above to keep things manageable.
 <p>
 If you want to disable having both headers and footers on the same
 page, invoke <kbd>.HEADERS_AND_FOOTERS</kbd> with any argument
-you want (eg <kbd>OFF, QUIT, END, X...</kbd>). Mom will restore
+you want (e.g., <kbd>OFF, QUIT, END, X...</kbd>). Mom will restore
 her default behaviour of setting automatically generated page
 headers, with the page number, centered, at the bottom of the
 page.  If you would prefer footers instead of headers after turning
@@ -1913,8 +1998,9 @@ with control macros.
   <li><a href="#paginate">PAGINATE</a> &ndash; pagination on or off</li>
   <li><a href="#pagenumber">PAGENUMBER</a> &ndash; user-defined (starting) page number</li>
   <li><a href="#pagenum-style">PAGENUM_STYLE</a> &ndash; digits, roman numerals, etc</li>
-  <li><a href="#pagenum-on-first-page">PAGENUM_ON_FIRST_PAGE</a> &ndash; applies only when footers are enabled</li>
+  <li><a href="#pagenum-on-first-page">PAGENUM_ON_FIRST_PAGE</a> &ndash; put page number on first page when numbering is at the top of the page</li>
   <li><a href="#draft-with-pagenumber">DRAFT_WITH_PAGENUMBER</a> &ndash; attach draft/revision information to page numbers</li>
+  <li><a href="#pagenumber-string">PAGENUMBER_STRING</a> &ndash; user-defined page number string</li>
   <li><a href="#index-paginate-control">Pagination control macros and defaults</a></li>
 </ul>
 </div>
@@ -1933,7 +2019,7 @@ Macro: <b>PAGINATE</b> <kbd class="macro-args">toggle</kbd>
 By default, mom paginates documents (in the bottom margin).  If
 you&#8217;d prefer she not paginate, turn pagination off by invoking
 <kbd>.PAGINATE</kbd> with any argument (<kbd>OFF, NO, QUIT, END,
-X...</kbd>), eg
+X...</kbd>), e.g.,
 <br/>
 <span class="pre-in-pp">
   .PAGINATE NO 
@@ -2053,6 +2139,33 @@ for other ways of dealing with crowded page headers when formatting
 draft-style copy.
 </p>
 
+<!-- -PAGENUMBER_STRING- -->
+
+<div id="pagenumber-string" class="box-macro-args">
+Macro: <b>PAGENUMBER_STRING</b> "&lt;text of page number string&gt;"
+</div>
+
+<p>
+If you want page numbering to contain text in addition to the page
+number itself, use PAGENUMBER_STRING.
+</p>
+
+<p>
+The most common use for PAGENUMBER_STRING is to include the total
+number of pages along with the page number, for example
+&#8220;Page 1 of 10, Page 2 of 10...&#8221;  To accomplish this,
+you&#8217;d enter
+<br/>
+<span class="pre-in-pp">
+  .PAGENUMBER_STRING "Page \*[PAGE#] of 10"
+</span>
+Notice that the page number is entered symbolically with the
+<a href="definitions.html#inlines">inline escape</a>
+<span style="white-space:nowrap"><kbd>\*[PAGE#]</kbd>,</span>
+while the total number of pages must be entered explicitly after the
+document is complete and the total number of pages known.
+</p>
+
 <!-- -PAGINATE_CONTROL- -->
 
 <div class="macro-list-container">
@@ -2071,19 +2184,28 @@ draft-style copy.
 <p class="defaults" style="padding-top: 6px;">
 See
 <a href="docelement.html#control-macro-args">Arguments to the control macros</a>.
+<br/>
+The following control macros may also be
+<a href="docelement.html#grouping">grouped</a>
+using PAGENUMBER_STYLE.*
 </p>
 <span class="pre defaults">
-.PAGENUM_FAMILY default = prevailing document family; default is Times Roman
+.PAGENUM_FAMILY default = prevailing document family
 .PAGENUM_FONT   default = roman
-.PAGENUM_SIZE   default = 0 (ie same size as paragraph text)
+.PAGENUM_SIZE   default = +0 (ie same size as paragraph text)
 .PAGENUM_COLOR  default = black
 </span>
 </div>
 
-<h4 id="pagenum-pos" class="docs" style="margin-top: -1em;">2. Page number position</h4>
+<p style="margin-top: -2em">
+*Note: Do not confuse PAGENUMBER_STYLE with
+<a href="#pagenum-style">PAGENUM_STYLE</a>.
+</p>
+
+<h4 id="pagenum-pos" class="docs" style="margin-top: 0em;">2. Page number position</h4>
 
 <div class="box-macro-args" style="margin-top: 1em;">
-Macro: <b>PAGENUM_POS</b> <kbd class="macro-args">TOP | BOTTOM&nbsp;&nbsp;LEFT | CENTER | RIGHT</kbd>
+Macro: <b>PAGENUM_POS</b> <kbd class="macro-args">[ TOP | BOTTOM ]&nbsp;&nbsp;[ LEFT | CENTER | RIGHT ]</kbd>
 </div>
 
 <p>
@@ -2192,4 +2314,3 @@ enabled.
 
 </body>
 </html>
-<!-- vim: fileencoding=utf-8: nomodified: -->
index fdff0c0..15ecbd7 100644 (file)
@@ -2,14 +2,14 @@
 <!--
 This file is part of groff, the GNU roff type-setting system.
 
-Copyright (C) 2004-2014 Free Software Foundation, Inc.
+Copyright (C) 2004-2018 Free Software Foundation, Inc.
 Written by Peter Schaffter (peter@schaffter.ca).
 
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.3 or
-any later version published by the Free Software Foundation; with the
-Invariant Sections being this comment section, with no Front-Cover
-Texts, and with no Back-Cover Texts.
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
+Texts.
 
 A copy of the Free Documentation License is included as a file called
 FDL in the main directory of the groff source package.
@@ -58,6 +58,11 @@ FDL in the main directory of the groff source package.
   <li><a href="#floats-intro">Floats</a>
   <ul>
     <li><a href="#float">The FLOAT macro</a></li>
+    <li><a href="#float-label-caption">Labelling and captioning floats</a>
+               <ul style="margin-left: -1.25em">
+               <li><a href="#label">LABEL</a></li>
+               <li><a href="#caption">CAPTION</a></li>
+               </ul></li>
   </ul></li>
   <li><a href="#preprocessor-support">Preprocessor support</a>
   <ul>
@@ -74,11 +79,15 @@ FDL in the main directory of the groff source package.
       <li><a href="#ps-pe">.PS / .PE macros and arguments</a></li>
       <li><a href="#pic-text-style">PIC_TEXT_STYLE</a>&mdash;set parameters for text used in diagrams</li>
     </ul></li>
+    <li><a href="#grap">grap</a>
+    <ul style="margin-left: -1.25em;">
+    </ul></li>
     <li><a href="#refer">refer</a></li>
   </ul>
   <li><a href="#captions-and-labels">Captions and labels</a>
     <ul>
       <li><a href="#autolabel">AUTOLABEL</a></li>
+      <li><a href="#set-autolabel">SET_AUTOLABEL</a></li>
       <li><a href="#caption-after-label">CAPTION_AFTER_LABEL</a></li>
       <li><a href="#captions-labels-sources">CAPTIONS / LABELS / SOURCES</a>&mdash;set style parameters for each</li>
       <li><a href="#mla">MLA</a></li>
@@ -180,13 +189,13 @@ Macro: <b>PDF_IMAGE</b> <kbd class="macro-args">[ -L | -C | -R | -I &lt;indent&g
 <br/>
 &lt;image-file.pdf&gt; &lt;width&gt; &lt;height&gt; [ SCALE &lt;factor&gt; ] \
 <br/>
-[ ADJUST +|-&lt;vertical adjustment&gt; ] [ NO_SHIM ] \
+[ ADJUST +|-&lt;vertical adjustment&gt; ] [ NO_SHIM ] [ NO_FLEX ] \
 <br/>
 [ FRAME ] \
 <br/>
 [ CAPTION "&lt;caption&gt;" ] [ SHORT_CAPTION "&lt;short caption&gt;" ] \
 <br/>
-[ LABEL "&lt;label&gt;" ]</kbd>
+[ LABEL "&lt;label&gt;" ] [ TARGET "&lt;name&gt;" ]</kbd>
 </div>
 <p class="requires">
 &bull;&nbsp;<span style="font-style: normal">
@@ -284,22 +293,51 @@ optical centering between surrounding blocks of type.  A unit of
 measure is required.
 </p>
 
+<div class="box-tip">
+<p class="tip-top">
+<span class="note">Tip:</span>
+You may sometimes find that a PDF_IMAGE at the bottom of a page
+doesn&#8217;t sit flush on the bottom margin, however attempts to lower it
+by adding space beforehand result in it being deferred to the next
+page.
+</p>
+
+<p class="tip-bottom">
+The solution is to introduce <i>negative</i> space before the image
+so that it displays on the page, then lower it to the bottom margin
+with PDF_IMAGE&#8217;s ADJUST argument.
+</p>
+</div>
+
 <h5 class="docs" style="margin-top: 1em; text-transform: none">'NO_SHIM'</h5>
 
 <p>
 <kbd>NO_SHIM</kbd> instructs mom not to apply
-<a href="docprocessing.html#shim">shimming</a>
-after the image, which she does by default.  Shimming ensures that
-running text after the image falls properly on the page&#8217;s baseline
-grid, but usually results in slightly unequal spacing above and
-below, which must be corrected with the <kbd>ADJUST</kbd> argument.
-Mom&#8217;s default shimming is generally a good idea since it ensures
-properly aligned bottom margins for running text, however if you
-have several images on the page, there may be visible differences in
-the spacing beneath images.  <kbd>NO_SHIM</kbd> corrects the
-problem, but will result in running text that does not completely
-fill the page unless shimming is applied manually elsewhere on the
-same page.
+<a href="docprocessing.html#shim-vs-flex">shimming</a>
+after an image, which she will do automatically when shimming is
+enabled, which it is by default.  Shimming ensures that running text
+after the image falls properly on the page&#8217;s
+<a href="definitions.html#baseline-grid">baseline grid</a>,
+but can result in slightly unequal spacing above and below
+(correctible with the <kbd>ADJUST</kbd> argument).
+<kbd>NO_SHIM</kbd> is useful when you have several images on the
+page and there are visible differences in the spacing beneath them
+as a result of shimming.  To ensure a flush bottom margin, the last
+image on the page should be shimmed, ie should not be given the
+<kbd>NO_SHIM</kbd> argument.
+</p>
+
+<h5 class="docs" style="margin-top: 1em; text-transform: none">'NO_FLEX'</h5>
+
+<p>
+<kbd>NO_FLEX</kbd> instructs mom not to apply
+<a href="docprocessing.html#shim-vs-flex">flex-spacing</a>
+after an image, which she will do automatically when flex-spacing is
+enabled. <kbd>NO_FLEX</kbd> is useful when you have several images
+on the page and you want to distribute excess vertical
+whitespace on the page amongst other flex-spacing points on the
+page.  If there are no others, the final image should be
+flex-spaced, ie not given the <kbd>NO_FLEX</kbd> argument.
 </p>
 
 <h5 class="docs" style="margin-top: 1em; text-transform: none">'FRAME'</h5>
@@ -341,6 +379,36 @@ an auto-labelling facility for images (see
 which, if enabled, overrides the <kbd>LABEL</kbd> argument.
 </p>
 
+<h5 class="docs" style="margin-top: 1em; text-transform: none">'TARGET'</h5>
+
+<p>
+<kbd>TARGET</kbd> followed by a unique name surrounded by
+double-quotes creates a PDF target for the image so that it may be
+linked to from other places in the file (with PDF_LINK; see
+<a href="version-2.html#mom-pdf">Producing PDFs with groff and mom</a>).
+</p>
+
+<p>
+When
+<a href="#autolabel">autolabelling</a>
+is enabled and the document is processed with
+<a href="using.html#pdfmom" style="font-weight: bold">pdfmom</a>,
+the target name can be used to generate the target&#8217;s label
+number in running text if it is entered as a groff string, ie of the
+form <kbd>\*[name]</kbd>.  For example, if you create a target named
+&#8220;foo&#8221; for a pdf image whose autolabel number would be 3,
+entering
+<br/>
+<span class="pre-in-pp">
+  See
+  .PDF_LINK foo "Figure \*[foo]"
+</span>
+anywhere in running text would result in a pdf link that reads
+&#8220;Figure 3&#8221;.  If chapter numbers are being prefixed to
+labels, the same string in, say, chapter 5 would produce the pdf
+link &#8220;Figure 5.3&#8221;.
+</p>
+
 <p>
 Remember that mom files with embedded PDF images must be processed
 with
@@ -360,10 +428,11 @@ which is to say that if an image doesn&#8217;t fit on the output
 page, she will defer it to the top of the next page while continuing
 to process
 <a href="definitions.html#running">running text</a>.
-<kbd>ADJUST</kbd> is ignored whenever an image is deferred, except
-when moving from column to column on the same page, when the image
-may need to be optically adjusted.  Subsequent images that do not
-fit, if any, are output in order immediately after the first.
+<kbd>ADJUST</kbd> is ignored whenever an image is the first to be
+deferred, except when moving from column to column on the same page,
+when the image may need to be optically adjusted.  Subsequent images
+that do not fit, if any, are output in order immediately after the
+first.
 </p>
 
 <p class="tip-bottom">
@@ -373,7 +442,7 @@ but this is now no longer required, and should, in fact, be avoided.
 </p>
 </div>
 
-<!---PDF_IMAGE_FRAME--->
+<!-- -PDF_IMAGE_FRAME- -->
 
 <div class="macro-id-overline">
 <h3 id="pdf-image-frame" class= "macro-id">PDF_IMAGE_FRAME</h3>
@@ -397,6 +466,7 @@ PDF_IMAGE_FRAME establishes the parameters for subsequent invocations of
 when the <kbd>FRAME</kbd> argument is given.  Arguments must appear
 in order, and any you wish left at the current value should be
 entered as two adjacent double-quotes.  So, for example,
+<br/>
 <span class="pre-in-pp">
   .PDF_IMAGE_FRAME "" "" blue
 </span>
@@ -460,6 +530,7 @@ and <kbd>&lt;height&gt;</kbd> arguments unless you are scaling
 the image, in which case you will most likely need the original
 dimensions of the EPS image&#8217;s bounding box.  These can be
 found with
+<br/>
 <span class="pre-in-pp">
  gs -q -dBATCH -dNOPAUSE -sDEVICE=bbox &lt;image file&gt;.pdf 2&gt;&amp;1 \
  | grep "%%BoundingBox" | cut -d " " -f4,5
@@ -486,14 +557,18 @@ correct optical centering.
 </p>
 
 <p>
-Additionally, non-floated EPS images inserted into
-<a href="definitions.html#running">running text</a>
-will almost certainly disrupt the baseline placement of running
-text.  In order to get mom back on track after inserting a
-non-floated <kbd>.PSPIC</kbd> image, I strongly recommend using the
+Additionally, non-floated EPS images
+will almost certainly disrupt the baseline placement of
+<a href="definitions.html#running">running text</a>.
+In order to get mom back on track after inserting a non-floated
+<kbd>.PSPIC</kbd> image, insert the
 <a href="docprocessing.html#shim">SHIM</a>
-macro so that the bottom margin of running text falls where it
-should.
+or
+<a href="docprocessing.html#flex">FLEX</a>
+macro afterwards, depending on the
+<a href="docprocessing.html#vertical-whitespace-management">vertical whitespace management</a>
+strategy in effect, so that the bottom margin of running text falls
+where it should.
 </p>
 
 <p>
@@ -548,9 +623,10 @@ previous page without interruption.
 
 <p>
 In the case of a float that doesn&#8217;t fit being followed by
-one that does, the second is output in position and the first is
-deferred.  In the case of two or more that don&#8217;t fit, they are
-output in order on the next page.
+one that does, both are deferred and output one after the other.
+Note that this represents a change from versions 2.1-b_1 and earlier
+where the second float was output in position and the first was
+deferred.
 </p>
 
 <p>
@@ -593,12 +669,13 @@ not
 Floats begin on the baseline immediately below the running text
 preceding them.  No additional whitespace surrounds them, above or
 below.  Running text below a float is, however,
-<a href="docprocessing.html#shim">shimmed</a>,
-unless shimming has been disabled with <kbd>.NO_SHIM</kbd> or the
-<kbd>NO_SHIM</kbd> argument is given to <kbd>FLOAT</kbd>.  Shimming
-generally results in a small amount of extra whitespace after the
-float, which can be equalized with the whitespace beforehand using
-the <kbd>ADJUST</kbd> argument to FLOAT.
+<a href="docprocessing.html#shim">shimmed</a>
+or
+<a href="docprocessing.html#flex">flex-spaced</a>,
+depending on the
+<a href="docprocessing.html#vertical-whitespace-management">vertical whitespace management</a>
+strategy in effect.  This behaviour can be disabled for individual
+floats with <kbd>NO_SHIM</kbd> or <kbd>NO_FLEX</kbd>.
 </p>
 
 <p>
@@ -616,7 +693,7 @@ or
 </div>
 
 <div class="box-macro-args">
-Macro: <b>FLOAT</b> <kbd class="macro-args">[ ADJUST +|-&lt;amount&gt; ] [ FORCE ] [ SPAN ] [ NO_SHIM] | &lt;anything&gt;</kbd>
+Macro: <b>FLOAT</b> <kbd class="macro-args">[ ADJUST +|-&lt;amount&gt; ] [ FORCE ] [ SPAN ] [ INDENT &lt;value&gt; ] [ CENTER ] [ RIGHT ] [ NO_SHIM] [ NO_FLEX ] | TARGET "&lt;name&gt;" | &lt;anything&gt;</kbd>
 </div>
 
 <div class="box-tip">
@@ -626,12 +703,41 @@ FLOAT is intended for use with the document processing macros only.
 </p>
 </div>
 
+<div class="box-tip">
+<p class="tip">
+<span class="note">Note:</span>
+As a general rule, avoid consecutive floats that have no intervening
+<a href="definitions.html#running">running text</a>.
+Rather, wrap all the material into a single float.
+</p>
+</div>
+
+<div class="box-tip">
+<p class="tip">
+<span class="note">Note:</span>
+Deferred floats are output with the left indent that was in effect
+when they were input.  If you do not want this behaviour, disable
+the indent prior to inputting the float and re-enable it afterward.
+</p>
+</div>
+
+<div class="box-tip">
+<p class="tip">
+<span class="note">Note:</span>
+Mom treats <b>pic</b> pre-processor directives and pdf images as
+floats so it is not necessary to wrap them inside FLOAT unless
+additional material is included in what is floated.
+</p>
+</div>
+
 <p style="margin-top: -.5em">
 To begin a float, simply invoke <kbd>.FLOAT</kbd> and follow it with
 whatever you want the float to contain.  When you&#8217;re done,
 invoke <kbd>.FLOAT&nbsp;OFF</kbd> (or <kbd>QUIT, END, X</kbd>, etc).
 </p>
 
+<h5 class="docs" style="margin-top: 1em; text-transform: none">'ADJUST'</h5>
+
 <p>
 The optional <kbd>ADJUST</kbd> argument tells mom to raise
 (<kbd>+</kbd>) or lower (<kbd>-</kbd>) the float <i>within
@@ -640,13 +746,22 @@ the space allotted to it</i> by the specified amount.
 <a href="definitions.html#unitofmeasure">unit of measure</a>
 appended.  <kbd>ADJUST</kbd> gives you precise control over
 the vertical centering of floats, allowing you to compensate for
-unequal spacing that may result of from the automatic shimming of
-floats (or the absence thereof).  See
-<a href="docprocessing.html#shim">SHIM</a>
-for a discussion of automatic shimming.
+unequal spacing that may result of from the automatic
+<a href="docprocessing.html#shim">shimming</a>
+or
+<a href="docprocessing.html#flex">flex-spacing</a>
+floats.
 </p>
 
 <p>
+<kbd>ADJUST</kbd> is ignored for the first float deferred to
+a following page but respected for subsequent deferred floats
+output immediately afterward.
+</p>
+
+<h5 class="docs" style="margin-top: 1em; text-transform: none">'FORCE'</h5>
+
+<p>
 The <kbd>FORCE</kbd> argument instructs mom to output the float
 exactly where it occurs in the input file.  With <kbd>FORCE</kbd>,
 mom immediately breaks to a new page to output the float if it does
@@ -656,10 +771,13 @@ page), there are circumstances where it may be desirable.
 </p>
 
 <p>
-<kbd>ADJUST</kbd> is ignored whenever a float is deferred to
-the following page.
+If you need to force a page break after completion of a float that
+has been deferred to a subsequent page, insert <kbd>\!.bp</kbd>
+immediately before terminating the float.
 </p>
 
+<h5 class="docs" style="margin-top: 1em; text-transform: none">'SPAN'</h5>
+
 <p>
 The <kbd>SPAN</kbd> argument tells mom that a float, if deferred,
 may carry onto multiple pages.  Please note that <kbd>SPAN</kbd> may
@@ -668,22 +786,83 @@ a warning should this occur.  Unboxed tables, on the other hand, are
 acceptable within floats that are given the <kbd>SPAN</kbd> argument.
 </p>
 
+<h5 class="docs" style="margin-top: 1em; text-transform: none">'INDENT'</h5>
+
+<p>
+<kbd>INDENT</kbd> allows you to indent a float from the left margin
+by a specified value.  The value must have a
+(<a href="definitions.html#unitofmeasure">unit of measure</a>
+appended to it.
+</p>
+
+<h5 class="docs" style="margin-top: 1em; text-transform: none">'CENTER'</h5>
+
+<p>
+<kbd>CENTER</kbd> instructs mom to center a float if it is not
+already centered by default.
+</p>
+
+<h5 class="docs" style="margin-top: 1em; text-transform: none">'RIGHT'</h5>
+
+<p>
+<kbd>RIGHT</kbd> instructs mom to place a float a the right of the
+page; the longest line in the float will be flush with the page's
+right margin.
+</p>
+
+<h5 class="docs" style="margin-top: 1em; text-transform: none">'NO_SHIM'</h5>
+
 <p>
 <kbd>NO_SHIM</kbd> instructs mom not to apply
-<a href="docprocessing.html#shim">shimming</a>
-after the float, which she does by default.  Shimming ensures that
-running text after the float falls properly on the page&#8217;s baseline
-grid, but usually results in slightly unequal spacing above and
-below, which must be corrected with the <kbd>ADJUST</kbd> argument.
-Mom&#8217;s default shimming is generally a good idea since it ensures
-properly aligned bottom margins for running text, however if you
-have several floats on the page, there may be visible differences in
-the spacing beneath them.  <kbd>NO_SHIM</kbd> corrects the
-problem, but will result in running text that does not completely
-fill the page unless shimming is applied manually elsewhere on the
-same page.
+<a href="docprocessing.html#shim-vs-flex">shimming</a>
+after a float, which she will do automatically when shimming is
+enabled, which it is by default.  Shimming ensures that running text
+after the float falls properly on the page&#8217;s
+<a href="definitions.html#baseline-grid">baseline grid</a>,
+but can result in slightly unequal spacing above and below
+(correctible with the <kbd>ADJUST</kbd> argument).
+<kbd>NO_SHIM</kbd> is useful when you have several floats on the
+page and there are visible differences in the spacing beneath them
+as a result of shimming.  To ensure a flush bottom margin, the last
+float on the page should be shimmed, ie should not be given the
+<kbd>NO_SHIM</kbd> argument.
 </p>
 
+<h5 class="docs" style="margin-top: 1em; text-transform: none">'NO_FLEX'</h5>
+
+<p>
+<kbd>NO_FLEX</kbd> instructs mom not to apply
+<a href="docprocessing.html#shim-vs-flex">flex-spacing</a>
+after a float, which she will do automatically when flex-spacing is
+enabled. <kbd>NO_FLEX</kbd> is useful when you have several floats
+on the page and you want to distribute excess vertical
+whitespace on the page amongst other flex-spacing points on the
+page.  If there are no others, the final float should be
+flex-spaced, ie not given the <kbd>NO_FLEX</kbd> argument.
+</p>
+
+<h5 class="docs" style="margin-top: 1em; text-transform: none">'TARGET'</h5>
+
+<p>
+<kbd>TARGET</kbd> followed by a unique name surrounded by
+double-quotes creates a PDF target for the float so that it may be
+linked to from other places in the file (with PDF_LINK; see
+<a href="version-2.html#mom-pdf">Producing PDFs with groff and mom</a>).
+</p>
+
+<p>
+Floats cannot be autolabelled, so unlike pdf images and
+pre-processor material, the target name cannot be used as a string
+to generate the target&#8217;s label number in running text.  Label
+numbers for floats must be entered explicitly running text, however
+they may be entered symbolically in the argument to
+<a href="#label">LABEL</a>.
+See
+<a href="#reserved-label-strings">Reserved variables for
+labels</a>.
+</p>
+
+
 <div class="box-tip">
 <p class="tip-top">
 <span class="note">Note:</span>
@@ -691,7 +870,7 @@ Floats use
 <a href="definitions.html#filled">no-fill mode</a>,
 with each input line beginning at the left margin.  If this is not
 what you want, you must specify the preferred horizontal alignment
-<i>within the float</i> (eg
+<i>within the float</i> (e.g.,
 <a href="typesetting.html#lrc">CENTER</a>
 or
 <a href="typesetting.html#lrc">RIGHT</a>).
@@ -708,6 +887,336 @@ within the float.
 </p>
 </div>
 
+<h2 id="float-label-caption" class="docs">Labelling and captioning floats</h2>
+
+<p>
+Labelling and captioning of tables (<b>tbl</b>), equations
+(<b>eq</b>), diagrams (<b>pic</b>) and pdf images
+(<a href="#pdf-image">PDF_IMAGE</a>)
+are handled by the macros that initiate them, regardless of whether
+they&#8217;re wrapped inside a float.  However, since a float may
+contain any valid input, it is sometimes necessary to add a label
+and/or caption to the float itself.
+</p>
+
+<div class="box-tip">
+<p class="tip">
+<span class="important">Important:</span>
+Always use the native labelling/captioning facilities for
+preprocessor output and pdf images rather than labelling the
+containing float, if any.
+</p>
+</div>
+
+<p>
+The macros to label and caption floats are
+<a href="#label">LABEL</a>
+and
+<a href="#caption">CAPTION</a>.
+If a label or caption is to appear above the float, the appropriate
+macro is entered immediately after
+<a href="#float">FLOAT</a>.
+If a label or caption is to appear beneath the float, the appropriate
+macro is entered immediately before ending the float with
+<kbd>FLOAT&nbsp;OFF</kbd>.
+</p>
+
+<p>
+If a label and caption are to be joined, the <b>LABEL</b> macro is
+used to enter both by passing the <kbd>CAPTION</kbd> argument to
+<kbd>LABEL</kbd>.
+</p>
+
+<p>
+It is impossible for mom to know the contents of a float, so
+floats cannot be autolabelled.  Each label must be entered
+explicitly.  Mom does, however, provide a way to enter both
+chapter numbers and incrementing label numbers
+<a href="#reserved-label-strings">symbolically</a>,
+easing the burden of keeping the numbering scheme intact as
+labelled floats are added to or subtracted from a document.
+</p>
+
+<div class="box-tip">
+<p class="tip">
+<span class="note">Tip:</span>
+<a href="docelement.html#blockquote">QUOTE</a>
+and
+<a href="docelement.html#blockquote">BLOCKQUOTE</a>
+may also be labelled and captioned using <b>LABEL</b> and
+<b>CAPTION</b>.
+</p>
+</div>
+
+<h4 class="docs">Spacing</h4>
+
+<p>
+If a float has a caption at the top, the caption is whitespaced
+1/4 linespace from running text and the float itself begins
+an additional 1/4 linespace below the caption.  If the float has
+no corresponding label at the bottom, the float observes the
+bottom-spacing rules for all floats, namely that no extra space is
+added other than
+<a href="docprocessing.html#shim">shimming</a>
+or
+<a href="docprocessing.html#shim-vs-flex">flex-spacing</a>,
+depending on the
+<a href="docprocessing.html#vertical-whitespace-management">vertical whitespace management</a>
+in effect.
+</p>
+
+<p>
+If a float has a label at the bottom but no caption at the top, the
+float begins exactly where started, i.e. with no extra whitespace
+between running text and the float.  The label (and attached
+caption, if any) are whitespaced 1/4 linespace below the float,
+with an additional 1/4 linespace underneath <i>plus</i> shimming or
+flex-spacing.
+</p>
+
+<p>
+Labelled/captioned quotes and blockquotes inside floats treat the
+labels/captions as part of the quote so the spacing above and
+below the whole float block is what you&#8217;d expect from quotes
+normally, while the spacing between the label/caption and the quote
+is 1/4 linespace.
+</p>
+
+<div class="macro-id-overline">
+<h3 id="label" class="macro-id">LABEL</h3>
+</div>
+
+<div class="box-macro-args">
+Macro: <b>LABEL</b></a>
+<kbd class="macro-args">"&lt;label&gt;" [ CAPTION "&lt;caption&gt;" ] [ SHORT_CAPTION ] \
+<br/>
+[ TO_LIST FIGURES | TABLES | EQUATIONS ]</kbd>
+</div>
+
+<p>
+The placement of a float&#8217;s label depends on where you put it
+inside the float.
+</p>
+
+<p>
+If you want a label at the top, put <kbd>LABEL</kbd> immediately
+underneath
+<a href="#float">FLOAT</a>
+and follow it with the text of the label surrounded by double-quotes:
+<br/>
+<span class="pre-in-pp">
+  .FLOAT
+  .LABEL "Fig. 1"
+</span>
+If you want a label at the bottom, put <kbd>LABEL</kbd> immediately
+before ending the float:
+<br/>
+<span class="pre-in-pp">
+  .FLOAT
+  &lt;contents of float&gt;
+  .LABEL "Fig. 1"
+  .FLOAT OFF
+</span>
+</p>
+
+<h3  id="reserved-label-strings" class="docs" style="text-transform: none">Reserved variables for labels</h3>
+
+<p>
+Mom reserves strings you may use when entering label text after
+the <kbd>LABEL</kbd> argument. <kbd>\*[chapter]</kbd> holds the
+current chapter or major section number. <kbd>\*[fig-label]</kbd>,
+<kbd>\*[tbl-label]</kbd>, and <kbd>\*[eqn-label]</kbd>
+increment the label number of the appropriate label type by one,
+and are initially set to zero after each invocation of
+<a href="docprocessing.html#start">START</a>
+when the
+<a href="docprocessing.html#doctype">DOCTYPE</a>
+is <kbd>CHAPTER</kbd>.  Thus, in every chapter requiring numbered
+float labels, you can enter
+<br/>
+<span class="pre-in-pp">
+  .LABEL "Fig. \*[chapter].\*[fig-label]. TO_LIST FIGURES
+</span>
+which, assuming the third autolabelled float of Chapter 2, will
+produce <kbd>Fig. 2.3.</kbd>
+</p>
+
+<p>
+If your <b>DOCTYPE</b> is <kbd>DEFAULT</kbd> or <kbd>NAMED</kbd>,
+you must reset <kbd>\*[&lt;type&gt;-label]</kbd> after each
+<a href="docprocessing.html#collate">COLLATE</a>
+by entering
+<br/>
+<span class="pre-in-pp">
+  .AUTOLABEL_&lt;list type&gt;
+</span>
+before <kbd>.START</kbd>.
+</p>
+
+<p>
+If
+<a href="#autolabel">autolabelling</a>
+is enabled, e.g., <kbd>.AUTOLABEL_IMAGES</kbd> (List
+of Figures) or <kbd>.AUTOLABEL_PIC</kbd> (also List of Figures),
+the prefix is stripped from the label when it appears in
+the List.  Thus, if you have invoked <kbd>.AUTOLABEL_PIC</kbd>,
+<br/>
+<span class="pre-in-pp">
+  .LABEL "Fig. 1.1."
+   CAPTION "Caption for label \
+   TO_LIST FIGURES
+</span>
+or
+<br/>
+<span class="pre-in-pp">
+  .LABEL "Fig. \*[chapter].\*[label]." \
+   CAPTION "Caption for label \
+   TO_LIST FIGURES
+</span>
+will appear in the List of Figures as &#8220;1.1.&nbsp;&nbsp;Caption for
+label&#8221;.
+</p>
+
+<h3 class="docs">CAPTION</h3>
+
+<p>
+If you&#8217;d like a caption attached to the label, pass
+<kbd>LABEL</kbd> the optional argument <kbd>CAPTION</kbd> followed
+by the text of the caption as a single string surrounded by
+double-quotes:
+<br/>
+<span class="pre-in-pp">
+  .FLOAT
+  &lt;contents of float&gt;
+  .LABEL "Fig. 1" CAPTION "Caption for Fig. 1"
+  .FLOAT OFF
+</span>
+Note that the
+<a href="#caption">CAPTION</a>
+macro by itself permits entering several strings, each output on
+a line by itself, whereas the <kbd>CAPTION</kbd> argument to
+<kbd>LABEL</kbd> accepts only a single string.
+</p>
+
+<h3 class="docs">SHORT_CAPTION</h3>
+
+<p>
+If your caption runs long and you&#8217;re including the
+float in a &#8220;List of ...&#8221;, (see
+<a href="#list-of">TO_LIST</a>, below)
+<kbd>SHORT_CAPTION</kbd> tells
+mom how you&#8217;d like the caption to appear in the List.
+</p>
+
+<h3 class="docs">TO_LIST</h3>
+
+<p>
+The optional argument <kbd>TO_LIST</kbd> tells mom to add the
+float&#8217;s label and attached caption, if present, to the specified
+<a href="#lists-of">list</a>,
+which may be one of <kbd>FIGURES</kbd>, <kbd>TABLES</kbd>, or
+<kbd>EQUATIONS</kbd>.
+</p>
+
+<p>
+If, for some reason, you want only the caption appended to the List,
+give <kbd>\&</kbd> as the first argument to LABEL, followed by
+<kbd>CAPTION&nbsp;&#8220;caption&#8221;</kbd>:
+<br/>
+<span class="pre-in-pp">
+  .LABEL \& \
+   CAPTION "caption"
+</p>
+
+<div class="box-tip">
+<p class="tip-top">
+<span class="note">Tip:</span>
+<kbd>TO_LIST</kbd> can be used to handle situations where labelled
+floats need to go to a uniquely named &#8220;List of ...&#8221;.
+</p>
+
+<p class="tip-bottom">
+Suppose, for example, your document contains figures (e.g.
+<b>pic</b> output or pdf-images) and tables, and you need a
+&#8220;List of Examples&#8221; for floats labelled &#8220;Example
+n.n&#8221;.  By changing the default title string for
+<a href="#lists-macros">LIST_OF_EQUATIONS</a>
+to &#8220;List of Examples&#8221;, you may include the float in your
+List of Examples with
+<br/>
+<span class="pre-in-pp">
+  .TO_FIGURES EQUATIONS
+</p>
+</div>
+
+<div class="macro-id-overline">
+<h3 id="caption" class="macro-id">CAPTION</h3>
+</div>
+
+<div class="box-macro-args">
+Macro: <b>CAPTION</b></a>
+<kbd class="macro-args">"&lt;caption&gt;" \
+<br/>
+[ "&lt;additional line&gt;" [ "&lt;additional line&gt;"... ] ] \
+<br/>
+[ TO_LIST FIGURES | TABLES | EQUATIONS ]</kbd>
+</div>
+
+<p>
+The placement of a float&#8217;s caption depends on where you put it
+inside the float.
+</p>
+
+<p>
+If you want a caption at the top, put <kbd>CAPTIO</kbd> immediately
+underneath
+<a href="#float">FLOAT</a>
+and follow it with the text of the caption surrounded by double-quotes:
+<br/>
+<span class="pre-in-pp">
+  .FLOAT
+  .CAPTION "Caption at top of float"
+</span>
+<b>CAPTION</b> can take multiple string arguments, allowing for
+captions that run to several lines.  There is a caveat: the strings
+are not automatically broken into individual lines.  You must
+provide strings that include literal breaks or spaces:
+<br/>
+<span class="pre-in-pp">
+  .FLOAT
+  .CAPTION "Caption" ".BR" "at top" ".BR" "of float"
+</span>
+or, easier to read:
+<br/>
+<span class="pre-in-pp">
+  .FLOAT
+  .CAPTION "Caption" \
+  ".BR" \
+  "at top" \
+  ".BR" \
+  "of float"
+</span>
+If you want a caption at the bottom, put <kbd>CAPTION</kbd> immediately
+before ending the float:
+<br/>
+<span class="pre-in-pp">
+  .FLOAT
+  &lt;contents of float&gt;
+  .CAPTION "Caption at bottom of float"
+  .FLOAT OFF
+</span>
+</p>
+
+<div class="box-tip">
+<p class="tip">
+<span class="note">Note:</span>
+If you want a caption attached to a label, do not use
+<b>CAPTION</b> by itself.  Rather, invoke
+<a href="#label"><kbd>.LABEL</kbd></a>
+with the <kbd>CAPTION</kbd> argument.
+</p>
+</div>
+
 <div class="rule-medium"><hr/></div>
 
 <h2 id="preprocessor-support" class="docs">Preprocessor support</h2>
@@ -746,7 +1255,8 @@ preprocessor, <b>tbl</b>.  If you are unfamiliar with <b>tbl</b>, I
 recommend downloading a copy of
 <a href="http://plan9.bell-labs.com/10thEdMan/tbl.pdf">Tbl - A Program to Format Tables</a>,
 which, in addition to providing a thorough introduction, contains
-some fine examples.
+some fine examples.  If you use <b>tbl</b>, you must pass groff or
+pdfmom the <b>-t</b> flag when you process the file.
 </p>
 
 <p>
@@ -773,12 +1283,12 @@ and do not wrap the table inside a float.
 <div class="box-tip">
 <p class="tip">
 <span class="note">Note:</span>
-If you use <kbd>.TS H</kbd> to create a boxed table that spans
-multiple pages, do not attempt to wrap the table inside a float.
-For the purposes of boxed, multipage tables, <kbd>.TS H</kbd> and
-<kbd>.FLOAT</kbd> should be considered mutually exclusive.  This
-restriction is imposed by the <kbd>tbl</kbd> preprocessor itself,
-not groff or mom.
+If you create a boxed table that will span several pages, do not
+wrap the table inside a float.  Boxed, multipage tables and FLOAT
+should be considered mutually exclusive.  This restriction is
+imposed by the <kbd>tbl</kbd> preprocessor itself, not groff or
+mom.  Unboxed tables that span several pages, however, are
+acceptable within FLOAT.
 </p>
 </div>
 
@@ -789,7 +1299,7 @@ If you use <kbd>.TS</kbd> without the <kbd>H</kbd> argument (and
 therefore no <kbd>.TH</kbd>), tables that fit on the page are output
 in position.  If there is not enough room to output the table,
 <kbd>tbl</kbd> will abort with message instructing you to use
-<kbd>.TS H/.TH</kbd>.  Given that <kbd>.TS</kbd> without <kbd>TH</kbd>
+<kbd>.TS H/.TH</kbd>.  Given that <kbd>.TS</kbd> without <kbd>H</kbd>
 may sometimes fail, it is advisable to begin all <b>tbl</b> blocks
 with <kbd>.TS H</kbd>.
 </p>
@@ -827,14 +1337,22 @@ Unboxed tables inside floats may span multiple pages provided the
 <span class="note">Note:</span>
 The vertical spacing around unfloated tables may appear slightly
 unequal, especially if there are several tables on the page.  This
-is a result of
+is a result of the
 <a href="docprocessing.html#shim">shimming</a>
-that mom applies automatically after each table.  You may
-disable shimming with <kbd>.NO_SHIM</kbd>, or by giving the
-<kbd>NO_SHIM</kbd> argument to <kbd>.TS</kbd>.  In either case, you
-will still likely want to adjust the spacing around with table with
-the <kbd>AJUST</kbd> argument to <kbd>.TS</kbd>.  Tables inside
-floats should be adjusted with the <kbd>ADJUST</kbd> argument to
+or
+<a href="docprocessing.html#flex">flex-spacing</a>
+that mom applies automatically after each table, depending on which
+<a href="docprocessing.html#vertical-whitespace-management">vertical whitespace management</a>
+is in effect.  You may
+disable shimming or flex-spacing with
+<a href="docprocessing.html#no-shim">NO_SHIM</a>
+or
+<a href="docprocessing.html#no-flex">NO_FLEX</a>,
+or by passing the <kbd>NO_SHIM</kbd> or <kbd>NO_FLEX</kbd> argument
+to <kbd>.TS</kbd>.  In either case, you will still likely want to
+adjust the spacing around with table with the <kbd>AJUST</kbd>
+argument to <kbd>.TS</kbd>.  Tables inside floats should be adjusted
+with the <kbd>ADJUST</kbd> argument to
 <a href="#float">FLOAT</a>,
 not the <kbd>ADJUST</kbd> argument to <kbd>.TS</kbd>.
 </p>
@@ -865,11 +1383,15 @@ required)
 <kbd class="macro-args"><br/>
 &nbsp;&nbsp;[ NO_SHIM ]
 <br/>
+&nbsp;&nbsp;[ NO_FLEX ]
+<br/>
 &nbsp;&nbsp;[ CAPTION "&lt;caption&gt;" ]
 <br/>
 &nbsp;&nbsp;[ SHORT_CAPTION "&lt;short caption&gt;" ]
 <br/>
 &nbsp;&nbsp;[ LABEL "&lt;label&gt;" ]
+<br/>
+&nbsp;&nbsp;[ TARGET "&lt;name&gt;" ]
 </kbd>
 <br/>
 Macro: <a href="#th"><b>TH</b></a> <kbd class="macro-args">(optional, only if .TS H)</kbd>
@@ -1042,30 +1564,44 @@ number of rows.
 <h5 class="docs" style="margin-top: 1em; text-transform: none">'ADJUST'</h5>
 
 <p>
-<kbd>ADJUST</kbd> lets you raise (<kbd>+</kbd>) or lower (<kbd>-</kbd>) the image
-<span style="font-style: italic">within the space allotted for it</span>
-by the amount you specify.  This is useful for achieving good
-optical centering between surrounding blocks of type.  A unit of
-measure is required.
+<kbd>ADJUST</kbd> lets you raise (<kbd>+</kbd>) or lower
+(<kbd>-</kbd>) the table <span style="font-style: italic">within
+the space allotted for it</span> by the amount you specify.  This
+is useful for achieving good optical centering between surrounding
+blocks of type.  A unit of measure is required.
 </p>
 
 <h5 class="docs" style="margin-top: 1em; text-transform: none">'NO_SHIM'</h5>
 
 <p>
 <kbd>NO_SHIM</kbd> instructs mom not to apply
-<a href="docprocessing.html#shim">shimming</a>
-after the image, which she does by default.  Shimming ensures that
-running text after the image falls properly on the page&#8217;s baseline
-grid, but usually results in slightly unequal spacing above and
-below, which must be corrected with the <kbd>ADJUST</kbd> argument.
-Mom&#8217;s default shimming is generally a good idea since it ensures
-properly aligned bottom margins for running text, however if you
-have several images on the page, there may be visible differences in
-the spacing beneath images.  <kbd>NO_SHIM</kbd> corrects the
-problem, but will result in running text that does not completely
-fill the page unless shimming is applied manually elsewhere on the
-same page.
+<a href="docprocessing.html#shim-vs-flex">shimming</a>
+after a table, which she will do automatically when shimming is
+enabled, which it is by default.  Shimming ensures that running text
+after the table falls properly on the page&#8217;s
+<a href="definitions.html#baseline-grid">baseline grid</a>,
+but can result in slightly unequal spacing above and below
+(correctible with the <kbd>ADJUST</kbd> argument).
+<kbd>NO_SHIM</kbd> is useful when you have several tables on the
+page and there are visible differences in the spacing beneath them
+as a result of shimming.  To ensure a flush bottom margin, the last
+table on the page should be shimmed, ie should not be given the
+<kbd>NO_SHIM</kbd> argument.
+</p>
+
+<h5 class="docs" style="margin-top: 1em; text-transform: none">'NO_FLEX'</h5>
+
+<p>
+<kbd>NO_FLEX</kbd> instructs mom not to apply
+<a href="docprocessing.html#shim-vs-flex">flex-spacing</a>
+after a table, which she will do automatically when flex-spacing is
+enabled. <kbd>NO_FLEX</kbd> is useful when you have several tables
+on the page and you want to distribute excess vertical
+whitespace on the page amongst other flex-spacing points on the
+page.  If there are no others, the final table should be
+flex-spaced, ie not given the <kbd>NO_FLEX</kbd> argument.
 </p>
+
 <h5 class="docs" style="margin-top: 1em; text-transform: none">'CAPTION'</h5>
 
 <p>
@@ -1104,6 +1640,36 @@ an auto-labelling facility for tables (see
 which, if enabled, overrides the <kbd>LABEL</kbd> argument.
 </p>
 
+<h5 class="docs" style="margin-top: 1em; text-transform: none">'TARGET'</h5>
+
+<p>
+<kbd>TARGET</kbd> followed by a unique name surrounded by
+double-quotes creates a PDF target for the table so that it may be
+linked to from other places in the file (with PDF_LINK; see
+<a href="version-2.html#mom-pdf">Producing PDFs with groff and mom</a>).
+</p>
+
+<p>
+When
+<a href="#autolabel">autolabelling</a>
+is enabled and the document is processed with
+<a href="using.html#pdfmom" style="font-weight: bold">pdfmom</a>,
+the target name can be used to generate the target&#8217;s label
+number in running text if it is entered as a groff string, ie of
+the form <kbd>\*[name]</kbd>.  For example, if you create a target
+called &#8220;foo&#8221; for a table whose autolabel number would be
+3, entering
+<br/>
+<span class="pre-in-pp">
+  See
+  .PDF_LINK foo "Table \*[foo]"
+</span>
+anywhere in running text would result in a pdf link that reads
+&#8220;Table 3&#8221;.  If chapter numbers are being prefixed to
+labels, the same string in, say, chapter 5 would produce the pdf
+link &#8220;Table 5.3&#8221;.  
+</p>
+
 <div class="macro-id-overline">
 <h4 id="th" class="docs" style="font-size: 100%; margin-top: .5em">The .TH macro</h4>
 </div>
@@ -1144,11 +1710,9 @@ which, as of version 2.0-c, takes a single, optional argument,
 <kbd>SOURCE</kbd>.  (Formerly, <kbd>TE</kbd> took a label/caption
 argument along with arguments controlling placement.)  The argument
 is followed by the text of the table&#8217;s source, surrounded by
-double-quotes.  The source will appear immediately beneath the label
-and/or caption underneath the table, or, if
+double-quotes.  The SOURCE argument may only be used if
 <a href="#mla">MLA</a>
-(Modern Language Association) is enabled, immediately below the
-table.
+(Modern Language Association) style is enabled.
 </p>
 
 <div class="rule-medium"><hr/></div>
@@ -1161,6 +1725,9 @@ preprocessor, <b>pic</b>.  If you are unfamiliar with <b>pic</b>, I
 recommend downloading a copy of
 <a href="http://www.kohala.com/start/troff/gpic.raymond.ps">Making Pictures with GNU PIC</a>
 which provides a thorough introduction and contains many examples.
+If you use <b>pic</b>, you must pass groff or pdfmom the <b>-p</b>
+flag when you process the file.
+
 </p>
 
 <p>
@@ -1194,7 +1761,7 @@ fit, if any, are output in order immediately after the first.
 <p>
 Lastly, if your diagrams contain text, you may set all the type
 parameters for the text (family, font, size, leading) separately
-from the <b>pic</b> block with the macro,
+from the <b>pic</b> block with the macro
 <a href="#pic-text-style">PIC_TEXT_STYLE</a>.
 If you need to change the type parameters within the block
 on-the-fly, you must use <b>pic</b>&#8217;s native facilities for
@@ -1224,11 +1791,15 @@ required)
 <kbd class="macro-args"><br/>
 &nbsp;&nbsp;[ NO_SHIM ]
 <br/>
+&nbsp;&nbsp;[ NO_FLEX ]
+<br/>
 &nbsp;&nbsp;[ CAPTION "&lt;caption&gt;" ]
 <br/>
 &nbsp;&nbsp;[ SHORT_CAPTION "&lt;short caption&gt;" ]
 <br/>
 &nbsp;&nbsp;[ LABEL "&lt;label&gt;" ]
+<br/>
+&nbsp;&nbsp;[ TARGET "&lt;name&gt;" ]
 </kbd>
 <br/>
 Macro: <b>PE</b> <span style="font-size: 95%">(no arguments; ends
@@ -1275,18 +1846,31 @@ measure is required.
 
 <p>
 <kbd>NO_SHIM</kbd> instructs mom not to apply
-<a href="docprocessing.html#shim">shimming</a>
-after the diagram, which she does by default.  Shimming ensures that
-running text after the diagram falls properly on the page&#8217;s baseline
-grid, but usually results in slightly unequal spacing above and
-below, which must be corrected with the <kbd>ADJUST</kbd> argument.
-Mom&#8217;s default shimming is generally a good idea since it ensures
-properly aligned bottom margins for running text, however if you
-have several diagrams on the page, there may be visible differences in
-the spacing beneath them.  <kbd>NO_SHIM</kbd> corrects the
-problem, but will result in running text that does not completely
-fill the page unless shimming is applied manually elsewhere on the
-same page.
+<a href="docprocessing.html#shim-vs-flex">shimming</a>
+after a <b>pic</b> diagrame, which she will do automatically when
+shimming is enabled, which it is by default.  Shimming ensures that
+running text after the diagrame falls properly on the page&#8217;s
+<a href="definitions.html#baseline-grid">baseline grid</a>,
+but can result in slightly unequal spacing above and below
+(correctible with the <kbd>ADJUST</kbd> argument).
+<kbd>NO_SHIM</kbd> is useful when you have several diagrams on the
+page and there are visible differences in the spacing beneath them
+as a result of shimming.  To ensure a flush bottom margin, the last
+diagram on the page should be shimmed, ie should not be given the
+<kbd>NO_SHIM</kbd> argument.
+</p>
+
+<h5 class="docs" style="margin-top: 1em; text-transform: none">'NO_FLEX'</h5>
+
+<p>
+<kbd>NO_FLEX</kbd> instructs mom not to apply
+<a href="docprocessing.html#shim-vs-flex">flex-spacing</a>
+after a <b>pic</b> diagram, which she will do automatically when
+flex-spacing is enabled. <kbd>NO_FLEX</kbd> is useful when you
+have several diagrams on the page and you want to distribute excess
+vertical whitespace on the page amongst other flex-spacing points
+on the page.  If there are no others, the final diagram should be
+flex-spaced, ie not given the <kbd>NO_FLEX</kbd> argument.
 </p>
 
 <h5 class="docs" style="margin-top: 1em; text-transform: none">'CAPTION'</h5>
@@ -1320,6 +1904,36 @@ an auto-labelling facility for diagrams (see
 which, if enabled, overrides the <kbd>LABEL</kbd> argument.
 </p>
 
+<h5 class="docs" style="margin-top: 1em; text-transform: none">'TARGET'</h5>
+
+<p>
+<kbd>TARGET</kbd> followed by a unique name surrounded by
+double-quotes creates a PDF target for the diagram so that it may be
+linked to from other places in the file (with PDF_LINK; see
+<a href="version-2.html#mom-pdf">Producing PDFs with groff and mom</a>).
+</p>
+
+<p>
+When
+<a href="#autolabel">autolabelling</a>
+is enabled and the document is processed with
+<a href="using.html#pdfmom" style="font-weight: bold">pdfmom</a>,
+the target name can be used to generate the target&#8217;s label
+number in running text if it is entered as a groff string, ie of
+the form <kbd>\*[name]</kbd>.  For example, if you create a target
+called &#8220;foo&#8221; for a diagram whose autolabel number would
+be 3, entering
+<br/>
+<span class="pre-in-pp">
+  See
+  .PDF_LINK foo "Figure \*[foo]"
+</span>
+anywhere in running text would result in a pdf link that reads
+&#8220;Figure 3&#8221;.  If chapter numbers are being prefixed to
+labels, the same string in, say, chapter 5 would produce the pdf
+link &#8220;Figure 5.3&#8221;.
+</p>
+
 <!---PIC_TEXT_STYLE--->
 
 <div class="macro-id-overline">
@@ -1373,6 +1987,37 @@ preprocessor itself, not groff or mom.
 
 <div class="rule-medium"><hr/></div>
 
+<h3 id="grap" class="docs">grap support</h3>
+
+<p>
+Grap is a <b>pic</b> preprocessor for creating graphs.  Grap
+usage is covered in the <kbd>grap(1)</kbd> manpage.  Its mom
+implementation is the same as for <b>pic</b> except that instead of
+enclosing directives between
+<a href="#ps-pe">.PS&nbsp;/&nbsp;.PE</a>,
+they are enclosed between <b>.G1/.G2</b>.  If you use <b>grap</b>,
+you must pass groff or pdfmom the <b>-G</b> flag when you process
+the file.
+
+</p>
+
+<p>
+<b>.G1</b> takes all the same arguments as
+<a href="#ps-pe">PS</a>
+with one exception: the argument <b>GRAP</b> must always be given to
+<b>.G1</b>.  So, for example, a skeleton grap block raised 2 points
+and with a caption would be entered:
+<br/>
+<span class="pre-in-pp">
+  .G1 GRAP ADJUST +2p CAPTION "Graph caption"
+  &lt;grap directives&gt;
+  .G2
+</span>
+
+</p>
+
+<div class="rule-medium"><hr/></div>
+
 <h3 id="eqn" class="docs">eqn support</h3>
 
 <p>
@@ -1383,7 +2028,9 @@ the scope of this documentation, but is covered in the manpage
 Harding&#8217;s
 <!--- edit me -->
 <a href="http://www.zen89632.zen.co.uk/Groff/Eqn/eqnguide.pdf">A Guide to Typesetting Mathematics Using GNU eqn</a>,
-which contains useful examples.
+which contains useful examples.  If you use <b>eqn</b>, you must give groff or
+pdfmom the <b>-e</b> flag.
+
 </p>
 
 <div class="macro-id-overline">
@@ -1407,6 +2054,10 @@ required)
 required)
 </span>
 <kbd class="macro-args"><br/>
+&nbsp;&nbsp;[ NO_SHIM ]
+<br/>
+&nbsp;&nbsp;[ NO_FLEX ]
+<br/>
 &nbsp;&nbsp;[ CAPTION "&lt;caption&gt;" ]
 <br/>
 &nbsp;&nbsp;[ LABEL "&lt;label&gt;" ]
@@ -1415,6 +2066,8 @@ required)
 <br/>
 &nbsp;&nbsp;[ SHORT_CAPTION "&lt;short caption&gt;" ]
 <br/>
+&nbsp;&nbsp;[ TARGET "&lt;name&gt;" ]
+<br/>
 Macro: <a href="#en"><b>EN</b></a> <kbd class="macro-args"> [ CONTINUED | CONT | ... ]</kbd>
 </div>
 
@@ -1473,18 +2126,31 @@ measure is required.
 
 <p>
 <kbd>NO_SHIM</kbd> instructs mom not to apply
-<a href="docprocessing.html#shim">shimming</a>
-after the equation, which she does by default.  Shimming ensures that
-running text after the equation falls properly on the page&#8217;s baseline
-grid, but usually results in slightly unequal spacing above and
-below, which must be corrected with the <kbd>ADJUST</kbd> argument.
-Mom&#8217;s default shimming is generally a good idea since it ensures
-properly aligned bottom margins for running text, however if you
-have several equations on the page, there may be visible differences in
-the spacing beneath them.  <kbd>NO_SHIM</kbd> corrects the
-problem, but will result in running text that does not completely
-fill the page unless shimming is applied manually elsewhere on the
-same page.
+<a href="docprocessing.html#shim-vs-flex">shimming</a>
+after an equation, which she will do automatically when shimming is
+enabled, which it is by default.  Shimming ensures that running text
+after the equation falls properly on the page&#8217;s
+<a href="definitions.html#baseline-grid">baseline grid</a>,
+but can result in slightly unequal spacing above and
+below (correctible with the <kbd>ADJUST</kbd> argument).
+<kbd>NO_SHIM</kbd> is useful when you have several equations on the
+page and there are visible differences in the spacing beneath them
+as a result of shimming.  To ensure a flush bottom margin, the last
+equation on the page should be shimmed, ie should not be given the
+<kbd>NO_SHIM</kbd> argument.
+</p>
+
+<h5 class="docs" style="margin-top: 1em; text-transform: none">'NO_FLEX'</h5>
+
+<p>
+<kbd>NO_FLEX</kbd> instructs mom not to apply
+<a href="docprocessing.html#shim-vs-flex">flex-spacing</a>
+after an equation, which she will do automatically when flex-spacing
+is enabled. <kbd>NO_FLEX</kbd> is useful when you have several
+equations on the page and you want to distribute excess vertical
+whitespace on the page amongst other flex-spacing points on
+the page.  If there are no others, the final equation should be
+flex-spaced, ie not given the <kbd>NO_FLEX</kbd> argument.
 </p>
 
 </p>
@@ -1527,6 +2193,37 @@ with the last line.  Assuming a three-line equation,
 one line, thus centering it vertically on the equation.
 </p>
 
+<h5 class="docs" style="margin-top: 1em; text-transform: none">'TARGET'</h5>
+
+<p>
+<kbd>TARGET</kbd> followed by a unique name surrounded by
+double-quotes creates a PDF target for the equation so that it may
+be linked to from other places in the file (with PDF_LINK; see
+<a href="version-2.html#mom-pdf">Producing PDFs with groff and mom</a>).
+</p>
+
+<p>
+When
+<a href="#autolabel">autolabelling</a>
+is enabled and the document is processed with
+<a href="using.html#pdfmom" style="font-weight: bold">pdfmom</a>,
+the target name can be used to generate the target&#8217;s label
+number in running text if it is entered as a groff string, ie of
+the form <kbd>\*[name]</kbd>.  For example, if you create a target
+called &#8220;foo&#8221; for an equation whose autolabel number
+would be 3, entering
+<br/>
+<span class="pre-in-pp">
+  See
+  .PDF_LINK foo "Equation \*[foo]"
+</span>
+anywhere in running text would result in a pdf link that reads
+&#8220;Equation 3&#8221;.  If chapter numbers are being prefixed to
+labels, the same string in, say, chapter 5 would produce the pdf
+link &#8220;Equation 5.3&#8221;.
+</p>
+
+
 <div class="macro-id-overline" style="margin-top: .5em">
 <h4 id="en" class="docs" style="font-size: 100%; margin-top: .5em">The .EN macro</h4>
 </div>
@@ -1601,7 +2298,7 @@ pdf images) and tables.  This behaviour may be modified with the
 macro
 <a href="#caption-after-label">CAPTION_AFTER_LABEL</a>.
 Equations always have their captions set underneath.  All aspects of
-the text style for captions may be set with the macro,
+the text style for captions may be set with the macro
 <a href="#captions-labels-sources">CAPTIONS</a>.
 </p>
 
@@ -1613,10 +2310,10 @@ above the table, per MLA style, and the source for the table, if
 any, appears underneath.  Labels for figures are set underneath.
 Equation labels, by default, are set on the same baseline as the
 last line of the equation.  Like captions, all aspects of text style
-for labels may be established with a single macro,
-<a href="#labels">LABELS</a>.  Furthermore, mom can autolabel
-figures, tables, and equations, with or without a prefixed chapter
-number.
+for labels may be established with a single macro
+<a href="#labels">LABELS</a>.
+Furthermore, mom can autolabel figures, tables, and equations, with
+or without a prefixed chapter number.
 </p>
 
 <div class="macro-id-overline">
@@ -1642,33 +2339,64 @@ Macro: <b>AUTOLABEL_TABLES</b>
 <b>AUTOLABEL_&lt;type&gt;</b> takes care of labelling &lt;type&gt; by
 identifying each with a separate, incrementing numeric scheme, which
 is also collected for output in Lists of Figures, Equations, and
-Tables.  By default, the label numbers are prefixed, and, in the
-case of equations, suffixed, with strings such that they appear for
-tables as &#8220;Table &lt;n&gt;&#8221;, for <b>pic</b> diagrams and
-pdf images as &#8220;Fig. &lt;n&gt;&#8221;, and for equations as
-&#8220;(&lt;n&gt;)&#8221;.
+Tables.
 </p>
 
 <p>
-Use <kbd>PREFIX&nbsp;&lt;"string"&gt;</kbd> to change what comes
-before the automatic numbering.  For example, if you are including
-musical excerpts in your document, MLA style requires that they be
-labelled &#8220;Ex.&nbsp;&lt;n&gt;&#8221;.  Since musical excerpts
-are likely to be scanned images (in pdf format, don&#8217;t forget),
-you have to change the prefix string for pdf images:
+Autolabelling may be disabled on-the-fly by giving any argument
+other than <kbd>PREFIX</kbd>, <kbd>SUFFIX</kbd>, or
+<kbd>PREFIX_CHAPTER</kbd> to the appropriate macro.  For example,
+</br>
+<span class="pre-in-pp">
+  .AUTOLABEL_IMAGES NO
+</span>
+would disable autolabelling of images.
+</p>
+
+<h4 class="docs" style="margin-top: -.5em">Prefixes and suffixes</h4>
+
+<p>
+By default, when <b>AUTOLABEL</b> is enabled, the label numbers are
+prefixed, and, in the case of equations, suffixed, with strings such
+that they appear for tables as &#8220;Table &lt;n&gt;&#8221;, for
+<b>pic</b> diagrams and pdf images as &#8220;Fig. &lt;n&gt;&#8221;,
+and for equations as &#8220;(&lt;n&gt;)&#8221;.
+</p>
+
+<p>
+You can use <kbd>PREFIX&nbsp;&lt;"string"&gt;</kbd> to change what
+comes before the automatic numbering.  For example, if you are
+including musical excerpts in your document, MLA style requires that
+they be labelled &#8220;Ex.&nbsp;&lt;n&gt;&#8221;.  Since musical
+excerpts are likely to be scanned images (in pdf format, don&#8217;t
+forget), you have to change the prefix string for pdf images:
 <br/>
 <span class="pre-in-pp">
-  .AUTOLABEL_IMAGES PREFIX "Ex. "
+  .AUTOLABEL_IMAGES \
+   PREFIX "Ex. " \
+   SUFFIX ""
 </span>
 If you need a suffix after the automatic numbering, use
 <kbd>SUFFIX&nbsp;&lt;"string"&gt;</kbd>, like this:
 <br/>
 <span class="pre-in-pp">
-  .AUTOLABEL_IMAGES PREFIX "(Fig. " SUFFIX ")"
+  .AUTOLABEL_IMAGES \
+   PREFIX "(Fig. " \
+   SUFFIX ")"
 </span>
-Note that the double-quotes around the single-character SUFFIX
-string are optional.
+Note from the above that both arguments, <kbd>PREFIX</kbd> and
+<kbd>SUFFIX</kbd>, are required should you want either.  Two
+adjacent double-quotes leaves the string blank.
+</p>
+
+<div class="box-tip">
+<p class="tip">
+<span class="note">Note:</span>
+In automatically formatted
+<a href="#lists-macros">&#8220;Lists of ...&#8221;</a>,
+label number prefixes are stripped when autolabelling is enabled.
 </p>
+</div>
 
 <h4 class="docs" style="margin-top: -.5em">Prefixing chapter numbers</h4>
 
@@ -1679,13 +2407,58 @@ pass <kbd>AUTOLABEL_&lt;type&gt;</kbd> the argument
 </p>
 
 <p>
-If you have not given mom a <kbd>CHAPTER&nbsp;&lt;n&gt;</kbd> prior
-to invoking <kbd>AUTOLABEL_&lt;type&gt;&nbsp;PREFIX_CHAPTER</kbd>,
-you must give the chapter number after <kbd>PREFIX_CHAPTER</kbd>.
-Once done, all subsequent chapters or collated document sections
-will increment the chapter number by one automatically.  Failure to
-provide a chapter number after <kbd>PREFIX_CHAPTER</kbd> when it is
-required will result in mom aborting with a reminder to do so.
+If for some reason you need to specify the chapter number,
+you may do so by passing the number as an argument to
+<kbd>PREFIX_CHAPTER</kbd>.  Subsequent chapters or major sections
+will increment by one as expected.
+</p>
+
+<div class="box-tip">
+<p class="tip">
+<span class="note">Note:</span>
+For the purposes of labelling, mom treats
+<a href="docprocessing.html#doctype">DOCTYPE&nbsp;DEFAULT</a>
+as if it were <b>DOCTYPE&nbsp;CHAPTER</b>, hence, with
+<kbd>PREFIX_CHAPTER</kbd>, each collated <b>DEFAULT</b>
+doctype's prefixed &#8220;chapter&#8221; number is incremented
+and the label number itself reset to &#8220;1&#8221;.  If
+you do not give <kbd>PREFIX_CHAPTER</kbd>, the label number
+is <i>not</i> reset automatically.  To reset it, invoke
+<kbd>.AUTOLABEL_&lt;type&gt;</kbd> after each
+<a href="docprocessing.html#collate">COLLATE</a>.
+</div>
+
+<div id="set-autolabel" class="box-macro-args" style="margin-top: .5em">
+Macro: <b>SET_AUTOLABEL</b> <kbd class="macro-args">FIG | TBL | PIC | EQN &lt;n&gt;</kbd>
+</div>
+
+<p>
+You may sometimes need to set or reset the autolabel number for a
+particular type of pre-processor or for PDF images.  This is likely
+to occur if you are using
+<a href="#float">FLOAT</a>
+in conjunction with the <kbd>TO_LIST</kbd> argument.
+</p>
+
+<p>
+For example, if your document has Figures (PDF images, pic diagrams)
+and you want your tables to be labelled as Figures as well, you have
+to wrap the tables inside a float and label the float manually as
+&#8220;Fig.&nbsp;n&#8221;, sending it to the List of Figures with
+<kbd>TO_LIST FIGURES</kbd>.
+</p>
+
+<p>
+Mom does not autolabel floats or assign them automatically
+to a list, so she doesn&#8217;t know you&#8217;ve interrupted the
+auto-incrementing label numbers.  Use SET_AUTOLABEL get her back on
+track.  The number you give as an argument after telling her which
+kind of label number to set is the one you want to appear next.
+<br/>
+<span class="pre-in-pp">
+  .SET_AUTOLABEL FIG 6
+</span>
+means the next autolabelled Figure will be &#8220;Fig. 6.&#8221;
 </p>
 
 <div class="macro-id-overline">
@@ -1776,9 +2549,9 @@ anything you like (<kbd>X</kbd>, <kbd>NO</kbd>, etc).
 </div>
 
 <div class="box-macro-args" style="margin-top: .5em">
-Macro: <b>CAPTIONS</b> <kbd class="macro-args">EQN | IMG | PIC | TBL | ALL</kbd>
+Macro: <b>CAPTIONS</b> <kbd class="macro-args">EQN | IMG | PIC | TBL | FLOATING | ALL</kbd>
 <br/>
-Macro: <b>LABELS</b> <kbd class="macro-args">EQN | IMG | PIC | TBL | ALL</kbd>
+Macro: <b>LABELS</b> <kbd class="macro-args">EQN | IMG | PIC | TBL | FLOATING | ALL</kbd>
 <br/>
 Macro: <b>SOURCES</b> <kbd class="macro-args">TBL</kbd>
 <br/>
@@ -1788,14 +2561,16 @@ Macro: <b>SOURCES</b> <kbd class="macro-args">TBL</kbd>
 <br/>
 &nbsp;&nbsp;FONT &lt;font&gt; \
 <br/>
-&nbsp;&nbsp;SIZE "+|-&lt;size&gt;" \
+&nbsp;&nbsp;SIZE +|-&lt;size&gt; \
 <br/>
-&nbsp;&nbsp;AUTOLEAD "&lt;value&gt;" \
+&nbsp;&nbsp;AUTOLEAD &lt;value&gt; \
 <br/>
-&nbsp;&nbsp;COLOR "&lt;color&gt;" \
+&nbsp;&nbsp;COLOR &lt;color&gt; \
 <br/>
 &nbsp;&nbsp;QUAD LEFT | CENTER | RIGHT [ ON_LL ] \
 <br/>
+&nbsp;&nbsp;INDENT &lt;indent&gt; \
+<br/>
 &nbsp;&nbsp;ADJUST +|-&lt;vertical adjustment&gt;
 </kbd>
 </div>
@@ -1830,28 +2605,46 @@ for tables) behave identically to the
 
 <p>
 The first, required argument after <kbd>CAPTIONS</kbd>,
-<kbd>LABELS</kbd>, and <kbd>SOURCES</kbd> indicates the preprocessor
+<kbd>LABELS</kbd>, or <kbd>SOURCES</kbd> indicates the preprocessor
 type for which you are setting the parameters.  (For convenience
 PDF_IMAGE&mdash;argument <kbd>IMG</kbd>&mdash;is here treated as a
-preprocessor.)  An argument of <kbd>ALL</kbd> sets a unified
-style for every preprocessor.  If the <kbd>ALL</kbd> argument is
-given, arguments to subsequent invocations of <kbd>CAPTIONS</kbd>,
-<kbd>LABELS</kbd>, or <kbd>SOURCES</kbd> overwrite only the
-explicitly named style parameters.
+preprocessor.)  <kbd>FLOATING</kbd> sets the style for the macros
+<a href="#caption">CAPTION</a>
+and
+<a href="#label">LABEL</a>,
+which are used to label floats, quotes, and blockquotes.
+</p>
+
+<p>
+An argument of <kbd>ALL</kbd> sets a unified style for all
+preprocessors, floats, quotes, and blockquotes.  If the
+<kbd>ALL</kbd> argument is given, arguments to subsequent
+invocations of <kbd>CAPTIONS</kbd>, <kbd>LABELS</kbd>, or
+<kbd>SOURCES</kbd> overwrite only the explicitly named style
+parameters.
 </p>
 
 <h4 class="docs">QUAD &mdash; quadding of labels, captions, and sources</h4>
 
+<h5 class="docs" style="text-transform: none">&bull;&nbsp;pic, tbl, pdf images</h5>
+
 <p>
 By default, figures (<b>pic</b> output and pdf images) and tables
-have their captions and labels set quad left.  Sources (for tables)
-are also set quad left.  Equations have their labels set quad right,
-and their captions centered.  Regardless of the quad direction,
-captions, labels, and sources are quadded over the width of figures
-and tables unless you pass the optional <kbd>ON_LL</kbd> argument to
-<kbd>QUAD&nbsp;&lt;direction&gt;</kbd>.
+have their captions and labels set quad left.  Sources (for
+tables) are also set quad left.  Equations have their labels
+set quad right, and their captions centered.
+</p>
+
+<p>
+Regardless of the quad direction, captions, labels and sources
+are set on the width of the figure, table, or pdf image
+unless you pass the optional <kbd>ON_LL</kbd> argument to
+<kbd>QUAD&nbsp;&lt;direction&gt;</kbd>, in which case the prevailing
+document line length is used instead.
 </p>
 
+<h5 class="docs" style="text-transform: none">&bull;&nbsp;eqn</h5>
+
 <p>
 Equations behave differently.  By default, equation labels are
 set flush right with the page&#8217;s right margin regardless of
@@ -1860,9 +2653,65 @@ equation is positioned left, the label will appear at the right
 margin regardless of the direction you give to <kbd>QUAD</kbd>.  If
 the equation is indented with the <kbd>-I&nbsp;&lt;indent&gt;</kbd>
 option, a quad direction of <kbd>LEFT</kbd> is observed, but may
-overprint the last line of the equation.  Note that there is no
-<kbd>CENTER</kbd> option for equation labels, and that captions are
-always quadded over the full line length.
+overprint the last line of the equation.
+</p>
+
+<p>
+Note that there is no <kbd>CENTER</kbd> option for equation labels,
+and that captions are always quadded over the prevailing document
+line length.
+</p>
+
+<h5 class="docs" style="text-transform: none">&bull;&nbsp;quotes and blockquotes</h5>
+
+<p>
+Floating labels attached to <b>QUOTE</b>s are quadded on the
+prevailing document line length, and require the <kbd>INDENT</kbd>
+argument if you want to align them with the left and/or right edges
+the quote.
+</p>
+
+<p>
+Floating labels attached to <b>BLOCKQUOTE</b>s are always quadded on
+the indent and line length of the blockquote.
+</p>
+
+<h5 class="docs" style="text-transform: none">&bull;&nbsp;floats</h5>
+
+<p>
+Floating labels and captions attached to <b>FLOAT</b>s are always
+quadded over the prevailing document line length, and require the
+<kbd>INDENT</kbd> argument if you want to align them with the left
+and/or right edges of the float&#8217;s contents.
+</p>
+
+<h4 class="docs">INDENT</h4>
+
+<p>
+The <kbd>INDENT</kbd> argument may only be used if the label
+or caption type is <kbd>FLOATING</kbd>, and only applies to
+<b>FLOAT</b>s and <b>QUOTE</b>s, not <b>BLOCKQUOTE</b>s.
+</p>
+
+<p>
+It is not possible for mom to know the width of a float before
+setting a label or caption attached to a float.  She therefore sets
+it on the prevailing document line length.  While this isn&#8217;t
+much of an issue when the label or caption quad is <b>CENTER</b>,
+you may want to adjust the horizontal positioning when the quad is
+<b>LEFT</b> or <b>RIGHT</b>.
+</p>
+
+<p>
+<kbd>INDENT</kbd>, with a numeric value to which a
+<a href="definitions.html#unitofmeasure">unit of measure</a>
+is appended, allows you to indent a floating label or caption so
+it lines up with the left edge of a <b>FLOAT</b> or <b>QUOTE</b>.
+<kbd>INDENT&nbsp;RIGHT</kbd> (with a value) allows you to shorten the
+line length to the appropriate width.  If you need both a left and
+right indent, invoke <kbd>LABELS</kbd> or <kbd>CAPTIONS</kbd> twice,
+one instance containing <kbd>INDENT&nbsp;&lt;indent&gt;</kbd> and
+the other <kbd>INDENT&nbsp;RIGHT&nbsp;&lt;indent&gt;</kbd>.
 </p>
 
 <h4 class="docs">ADJUST</h4>
@@ -1871,9 +2720,9 @@ always quadded over the full line length.
 The <kbd>ADJUST</kbd> argument allows you to add(<kbd>+</kbd>) or
 subtract (<kbd>-</kbd>) vertical space between labels and captions
 and the output to which they are attached.  The argument requires a
-<a href="definitions.html#unitofmeasure">unit of measure</a>.  For
-example, if you find that table labels are a bit too close to the
-table itself,
+<a href="definitions.html#unitofmeasure">unit of measure</a>.
+For example, if you find that table labels are a bit too close to
+the table itself,
 <br/>
 <span class="pre-in-pp">
   .LABELS TBL ADJUST +3p
@@ -2016,6 +2865,8 @@ Arguments:
 <br/>
 &nbsp;&nbsp;TITLE_QUAD LEFT | CENTER | RIGHT \
 <br/>
+&nbsp;&nbsp;TOC_HEADER_UNDERSCORE default = none
+<br/>
 &nbsp;&nbsp;TITLE_COLOR &lt;color&gt; \
 <br/>
 &nbsp;&nbsp;PN_FAMILY &lt;family&gt; \
@@ -2158,4 +3009,3 @@ macro.
 
 </body>
 </html>
-<!-- vim: fileencoding=utf-8: nomodified: -->
index c93c54d..d700ffe 100644 (file)
@@ -2,14 +2,14 @@
 <!--
 This file is part of groff, the GNU roff type-setting system.
 
-Copyright (C) 2004-2014 Free Software Foundation, Inc.
+Copyright (C) 2004-2018 Free Software Foundation, Inc.
 Written by Peter Schaffter (peter@schaffter.ca).
 
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.3 or
-any later version published by the Free Software Foundation; with the
-Invariant Sections being this comment section, with no Front-Cover
-Texts, and with no Back-Cover Texts.
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
+Texts.
 
 A copy of the Free Documentation License is included as a file called
 FDL in the main directory of the groff source package.
@@ -203,7 +203,7 @@ current document element tag.
 Additionally, if you&#8217;re designing your own
 <a href="headfootpage.html#headfootpage-intro">HEADERS or FOOTERS</a>
 and want to use mom&#8217;s inline escapes for changing fonts as
-part of the the left, centre and/or right strings, or in the strings
+part of the left, centre and/or right strings, or in the strings
 for
 <a href="headfootpage.html#hdrftr-rectoverso">recto</a>
 and/or
@@ -211,7 +211,7 @@ and/or
 HEADERS or FOOTERS, or in the strings passed to
 <a href="headfootpage.html#headers-and-footers">HEADERS_AND_FOOTERS</a>,
 you must enter the inlines beginning with <kbd>\E*</kbd>
-rather than just <kbd>\*</kbd>, eg <kbd>\E*[BD]</kbd>.
+rather than just <kbd>\*</kbd>, e.g., <kbd>\E*[BD]</kbd>.
 </p>
 </div>
 
@@ -388,7 +388,7 @@ up to a limit of 36).
 
 <p id="kernunit">
 The default size of a kern unit is 1/36 of the current point size;
-this may be changed by invoking the macro, <kbd>.KERN_UNIT</kbd>,
+this may be changed by invoking the macro <kbd>.KERN_UNIT</kbd>
 with the desired value, which represents a fraction of the current
 point size.  For example, to change the kern unit to 1/54 of the
 current point size,
@@ -418,7 +418,7 @@ HEADERS or FOOTERS, or in the strings passed to
 you <i>must</i> use the forms <kbd>\E*[BU&lt;n&gt;]</kbd>
 and <kbd>\E*[FU&lt;n&gt;]</kbd> (ie with no space), and enter the
 inline beginning with <kbd>\E*</kbd> rather than just <kbd>\*</kbd>,
-eg <kbd>\E*[BU4]</kbd>.
+e.g., <kbd>\E*[BU4]</kbd>.
 </p>
  
 <p class="tip-bottom">
@@ -501,7 +501,7 @@ HEADERS or FOOTERS, or in the strings passed to
 you <i>must</i> use the forms <kbd>\E*[BP&lt;n&gt;]</kbd>
 and <kbd>\E*[FP&lt;n&gt;]</kbd> (ie with no space), and enter the
 inline beginning with <kbd>\E*</kbd> rather than just <kbd>\*</kbd>,
-eg <kbd>\E*[BP.755]</kbd>.
+e.g., <kbd>\E*[BP.75]</kbd>.
 </p>
 </div>
 
@@ -569,7 +569,7 @@ HEADERS or FOOTERS, or in the strings passed to
 you <i>must</i> use the forms <kbd>\E*[ALD&lt;n&gt;]</kbd>
 and <kbd>\E*[RLD&lt;n&gt;]</kbd> (ie with no space), and enter the
 inline beginning with <kbd>\E*</kbd> rather than just <kbd>\*</kbd>,
-eg <kbd>\E*[ALD.5]</kbd>.
+e.g., <kbd>\E*[ALD.5]</kbd>.
 </p>
 </div>
 
@@ -578,9 +578,9 @@ eg <kbd>\E*[ALD.5]</kbd>.
 <h3 id="inline-b-mom" class="docs">Terminate a line without advancing on the page</h3>
 <p>
 Sometimes, you want mom to break a line but not advance on the page.
-This can be accomplished with the macro,
+This can be accomplished with the macro
 <a href="typesetting.html#el">EL</a>
-or with the escape, <kbd>\*[B]</kbd>.  Simply attach <kbd>\*[B]</kbd>
+or with the escape <kbd>\*[B]</kbd>.  Simply attach <kbd>\*[B]</kbd>
 to the end of any input line.  Using the example given in the
 document entry for EL, you'd use <kbd>\*[B]</kbd> like this:
 <br/>
@@ -600,7 +600,7 @@ document entry for EL, you'd use <kbd>\*[B]</kbd> like this:
 
 <h3 id="tb-plus-mom" class="docs">Call the next sequential tab without advancing on the page</h3>
 <p>
-Sometimes, you want mom to move to the next tab in sequence (eg
+Sometimes, you want mom to move to the next tab in sequence (e.g.,
 from TAB 1 to TAB 2, or TAB 8 to TAB 9) without mom advancing on the
 page.  (See the NOTE
 <a href="typesetting.html#note-tn">here</a>
@@ -636,7 +636,7 @@ example:
 </span>
 
 The above draws a rule the full measure of the 6-pica line length.
-For another way to draw full measure rules, see the macro,
+For another way to draw full measure rules, see the macro
 <a href="graphical.html#drh">DRH</a>.
 </p>
 
@@ -914,7 +914,7 @@ used <kbd>\v</kbd> with the minus sign) or too low (if you used
 <p>
 In the context of mom, the string width inline
 <kbd>\w'&lt;string&gt;'</kbd> primarily serves to let you establish the
-horizontal measure of something (eg indents) based on the length
+horizontal measure of something (e.g., indents) based on the length
 of a bit of text.  For example, if you want a left indent the length
 of the word &#8220;Examples:&#8221; plus a space, you can set it with
 the <kbd>\w</kbd> inline escape:
@@ -1082,4 +1082,3 @@ ligatures and letters unique to various European languages), consult
 
 </body>
 </html>
-<!-- vim: fileencoding=utf-8: nomodified: -->
index bab0be5..bd02e17 100644 (file)
@@ -2,14 +2,14 @@
 <!--
 This file is part of groff, the GNU roff type-setting system.
 
-Copyright (C) 2004-2014 Free Software Foundation, Inc.
+Copyright (C) 2004-2018 Free Software Foundation, Inc.
 Written by Peter Schaffter (peter@schaffter.ca).
 
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.3 or
-any later version published by the Free Software Foundation; with the
-Invariant Sections being this comment section, with no Front-Cover
-Texts, and with no Back-Cover Texts.
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
+Texts.
 
 A copy of the Free Documentation License is included as a file called
 FDL in the main directory of the groff source package.
@@ -70,8 +70,8 @@ PostScript (.ps).  She&#8217;s aimed at three kinds of users:
       not-always-typographically-intuitive
       <a href="definitions.html#primitives">primitives</a>;
   </li>
-  <li>Non-technical writers who need to format their work easily,
-      with a minimum of clutter;
+  <li>Writers who need to format their work easily, with a
+      minimum of clutter;
   </li>
   <li>Newcomers to groff, typesetting, or document processing
       who need a well-documented macro set to get them started.
@@ -293,7 +293,7 @@ aren&#8217;t enough, I offer examples.
 The canonical reference materials for groff are
 <strong>cstr54</strong> (a downloadable PostScript copy of which
 is available
-<a href="http://www.kohala.com/start/troff/">here</a>)
+<a href="http://www.kohala.com/start/troff/cstr54.ps">here</a>)
 and the <strong>troff</strong> and <strong>groff_diff</strong>
 manpages.  The most complete and up-to-date source of information is
 the groff info pages, available by typing <kbd>info groff</kbd> at
@@ -494,4 +494,3 @@ quote&#8217;s finished, you have to tell mom it&#8217;s done.
 
 </body>
 </html>
-<!-- vim: fileencoding=utf-8: nomodified: -->
index c33c58d..63dbb32 100644 (file)
@@ -2,14 +2,14 @@
 <!--
 This file is part of groff, the GNU roff type-setting system.
 
-Copyright (C) 2004-2014 Free Software Foundation, Inc.
+Copyright (C) 2004-2018 Free Software Foundation, Inc.
 Written by Peter Schaffter (peter@schaffter.ca).
 
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.3 or
-any later version published by the Free Software Foundation; with the
-Invariant Sections being this comment section, with no Front-Cover
-Texts, and with no Back-Cover Texts.
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
+Texts.
 
 A copy of the Free Documentation License is included as a file called
 FDL in the main directory of the groff source package.
@@ -109,7 +109,7 @@ After the START macro, you enter headers pertinent to your letter:
 the date, the addressee (in business correspondence, typically both
 name and address), the addresser (that&#8217;s you; in business
 correspondence, typically both name and address), and a greeting
-(in full, eg &#8220;Dear Mr. Smith,&#8221; or &#8220;Dear
+(in full, e.g., &#8220;Dear Mr. Smith,&#8221; or &#8220;Dear
 Mr. Smith:&#8221;).
 </p>
 
@@ -141,7 +141,7 @@ macro.
 <p>
 At the end of the letter, should you wish a closing (&#8220;Yours
 truly,&#8221; &#8220;Sincerely,&#8221; &#8220;Hugs and
-kisses&#8221;), invoke the macro, <kbd>.CLOSING</kbd>, on a line
+kisses&#8221;), invoke the macro <kbd>.CLOSING</kbd> on a line
 by itself, and follow it with the text of the closing. <b>N.B.</b>
 Don&#8217;t put your name here; mom supplies it automatically from
 <a href="docprocessing.html#author">AUTHOR</a>),
@@ -486,7 +486,7 @@ Macro: <b>CLOSING</b>
 
 <p>
 Invoke <kbd>.CLOSING</kbd> on a line by itself after the body of
-the letter, with the closing you&#8217;d like (eg &#8220;Yours
+the letter, with the closing you&#8217;d like (e.g., &#8220;Yours
 truly,&#8221;) underneath, like this:
 <br/>
 <span class="pre-in-pp">
@@ -575,4 +575,3 @@ number at the bottom of multi-page letters, invoke
 
 </body>
 </html>
-<!-- vim: fileencoding=utf-8: nomodified: -->
index 4da8456..2c39e0e 100644 (file)
@@ -2,14 +2,14 @@
 <!--
 This file is part of groff, the GNU roff type-setting system.
 
-Copyright (C) 2004-2014 Free Software Foundation, Inc.
+Copyright (C) 2004-2018 Free Software Foundation, Inc.
 Written by Peter Schaffter (peter@schaffter.ca).
 
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.3 or
-any later version published by the Free Software Foundation; with the
-Invariant Sections being this comment section, with no Front-Cover
-Texts, and with no Back-Cover Texts.
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
+Texts.
 
 A copy of the Free Documentation License is included as a file called
 FDL in the main directory of the groff source package.
@@ -28,7 +28,7 @@ FDL in the main directory of the groff source package.
 
 <!-- ==================================================================== -->
 
-<div id="top" class="page">
+<div id="top" class="page" style="width: 800px">
 
 <!-- Navigation links -->
 <table style="width: 100%;">
@@ -68,6 +68,7 @@ elsewhere in the documentation.
   <li><a href="#qr-14">Nested lists</a></li>
   <li><a href="#qr-15">Colour</a></li>
   <li><a href="#qr-16">Dropcaps</a></li>
+  <li><a href="#qr-56">Smallcaps</a></li>
   <li><a href="#qr-17">Utilities</a></li>
   <li><a href="#qr-18">Graphical objects and images</a></li>
 </ul>
@@ -75,16 +76,18 @@ elsewhere in the documentation.
 <ul style="margin-top: .5em; margin-left: 0; padding-left: 0; list-style-type: none;">
   <li><a href="#qr-19">Reference macros (metadata)</a></li>
   <li><a href="#qr-20">Document type and initial defaults</a></li>
+  <li><a href="#qr-59">&nbsp;&nbsp;&ndash;&nbsp;Slides</a></li>
   <li><a href="#qr-23">TYPEWRITE control macros</a></li>
+  <li><a href="#qr-57">Vertical whitespace management</a></li>
   <li><a href="#qr-47">Document and section cover (title) pages</a></li>
   <li><a href="#qr-22">Set documents in columns</a></li>
   <li><a href="#qr-21">Line numbering</a></li>
   <li><a href="#qr-24">Initiate document processing</a></li>
-  <li><a href="#qr-42">Global print style changes after START</a></li>
 </ul>
 </div>
-<ul style="margin-top: 1.75em; margin-left: 0; padding-left: 0; list-style-type: none;">
-  <li><a href="#qr-43">Managing a document&#8217;s first-page header<br/><span style="margin-left: 1.25em;">(the &#8220;docheader&#8221;)</span></a></li>
+<ul style="margin-top: 2.75em; margin-left: 0; padding-left: 0; list-style-type: none;">
+  <li><a href="#qr-42">Global print style changes after START</a></li>
+  <li><a href="#qr-43">Managing the docheader</a></li>
   <li><a href="#qr-25">Epigraphs</a></li>
   <li><a href="#qr-26">Headings</a></li>
   <li><a href="#qr-30">Paragraphs</a></li>
@@ -100,6 +103,7 @@ elsewhere in the documentation.
   <li><a href="#qr-53">Images and graphics</a></li>
   <li><a href="#qr-51">eqn support</a></li>
   <li><a href="#qr-52">pic support</a></li>
+  <li><a href="#qr-58">grap support</a></li>
   <li><a href="#qr-50">tbl support</a></li>
   <li><a href="#qr-54">Captions and labels</a></li>
   <li><a href="#qr-39">Bibliographic references</a></li>
@@ -120,7 +124,8 @@ elsewhere in the documentation.
 
 <table class="quick-ref">
 <tr>
-<th id="qr-1" class="quick-ref" colspan="2" >+++ Paper size, margins, line length</th>
+<th id="qr-1" class="quick-ref" colspan="2">
+<a href="typesetting.html#page-setup-intro">+++ Paper size, margins, line length</a></th>
 </tr>
 <tr>
 <td><a href="typesetting.html#paper">PAPER</a></td><td>-- set common paper sizes (letter, A4, etc)</td>
@@ -152,7 +157,8 @@ elsewhere in the documentation.
 </table>
 
 <table class="quick-ref">
-<tr><th id="qr-2" class="quick-ref" colspan="2">+++ Family, font, point size</th></tr>
+<tr><th id="qr-2" class="quick-ref" colspan="2">
+<a href="typesetting.html#basic-params-intro">+++ Family, font, point size</a></th></tr>
 <tr>
 <td><a href="typesetting.html#family">FAMILY</a></td><td>-- set the family of type</td>
 </tr>
@@ -172,7 +178,8 @@ elsewhere in the documentation.
 
 <table class="quick-ref">
 <tr>
-<th id="qr-3" class="quick-ref" colspan="2" >+++ Font modifications</th>
+<th id="qr-3" class="quick-ref" colspan="2">
+<a href="typesetting.html#modifications-intro">+++ Font modifications</a></th>
 </tr>
 <tr><td style="padding-left: 0;">Pseudo italic</td></tr>
 <tr>
@@ -182,7 +189,7 @@ elsewhere in the documentation.
 <td><a href="typesetting.html#slant-inline">\*[SLANT]</a></td><td>-- invoke pseudo italic inline</td>
 </tr>
 <tr>
-<td><a href="typesetting.html#slant-inline">\*[SLANTX]</a></td><td>-- off pseudo italic inline</td>
+<td><a href="typesetting.html#slant-inline">\*[SLANTX]</a></td><td>-- turn off pseudo italic inline</td>
 </tr>
 <tr><td style="padding-left: 0;">Pseudo bold</td></tr>
 <tr>
@@ -192,7 +199,7 @@ elsewhere in the documentation.
 <td><a href="typesetting.html#bolder-inline">\*[BOLDER]</a></td><td>-- invoke pseudo bold inline</td>
 </tr>
 <tr>
-<td><a href="typesetting.html#bolder-inline">\*[BOLDERX]</a></td><td>-- off pseudo bold inline</td>
+<td><a href="typesetting.html#bolder-inline">\*[BOLDERX]</a></td><td>-- turn off pseudo bold inline</td>
 </tr>
 <tr><td style="padding-left: 0;">Pseudo condensed</td></tr> 
 <tr>
@@ -202,7 +209,7 @@ elsewhere in the documentation.
 <td><a href="typesetting.html#cond-inline">\*[COND]</a></td><td>-- invoke pseudo condensing inline</td>
 </tr>
 <tr>
-<td><a href="typesetting.html#cond-inline">\*[CONDX]</a></td><td>-- off pseudo condensing inlines</td>
+<td><a href="typesetting.html#cond-inline">\*[CONDX]</a></td><td>-- turn off pseudo condensing inline</td>
 </tr>
 <tr><td style="padding-left: 0;">Pseudo extended</td></tr>
 <tr>
@@ -212,13 +219,14 @@ elsewhere in the documentation.
 <td><a href="typesetting.html#ext-inline">\*[EXT]</a></td><td>-- invoke pseudo extending inline</td>
 </tr>
 <tr>
-<td><a href="typesetting.html#ext-inline">\*[EXTX]</a></td><td>-- off pseudo condensing inlinee</td>
+<td><a href="typesetting.html#ext-inline">\*[EXTX]</a></td><td>-- turn off pseudo condensing inline</td>
 </tr>
 </table>
 
 <table class="quick-ref">
 <tr>
-<th id="qr-4" class="quick-ref" colspan="2" >+++ Linespacing (leading)</th>
+<th id="qr-4" class="quick-ref" colspan="2">
+<a href="typesetting.html#leading">+++ Linespacing (leading)</a></th>
 </tr>
 <tr>
 <td><a href="typesetting.html#leading">LS</a></td><td>-- set the linespacing (leading)</td>
@@ -230,7 +238,8 @@ elsewhere in the documentation.
 
 <table class="quick-ref">
 <tr>
-<th id="qr-5" class="quick-ref" colspan="2" >+++ Justification, quad direction, line-by-line setting, breaking lines</th>
+<th id="qr-5" class="quick-ref" colspan="2">
+<a href="typesetting.html#justification-intro">+++ Justification, quad direction, line-by-line setting, breaking lines</a></th>
 </tr>
 <tr>
 <td><a href="typesetting.html#justify">JUSTIFY</a></td><td>-- justify text to both margins</td>
@@ -260,7 +269,8 @@ elsewhere in the documentation.
 
 <table class="quick-ref">
 <tr>
-<th id="qr-6" class="quick-ref" colspan="2" >+++ Hyphenation</th>
+<th id="qr-6" class="quick-ref" colspan="2">
+<a href="typesetting.html#hy">+++ Hyphenation</a></th>
 </tr>
 <tr>
 <td><a href="typesetting.html#hy">HY</a></td><td>-- automatic hyphenation on/off</td>
@@ -272,7 +282,8 @@ elsewhere in the documentation.
 
 <table class="quick-ref">
 <tr>
-<th id="qr-7" class="quick-ref" colspan="2" >+++ Word and sentence spacing</th>
+<th id="qr-7" class="quick-ref" colspan="2">
+<a href="typesetting.html#ws">+++ Word and sentence spacing</a></th>
 </tr>
 <tr>
 <td><a href="typesetting.html#ws">WS</a></td><td>-- set the minimum word space size</td>
@@ -284,7 +295,8 @@ elsewhere in the documentation.
 
 <table class="quick-ref">
 <tr>
-<th id="qr-8" class="quick-ref" colspan="2" >+++ Kerning, ligatures, smartquotes</th>
+<th id="qr-8" class="quick-ref" colspan="2">
+<a href="typesetting.html#kern">+++ Kerning, ligatures, smartquotes</a></th>
 </tr>
 <tr>
 <td><a href="typesetting.html#kern">KERN</a></td><td>-- automatic character pair kerning on/off</td>
@@ -314,7 +326,8 @@ elsewhere in the documentation.
 
 <table class="quick-ref">
 <tr>
-<th id="qr-9" class="quick-ref" colspan="2" >+++ Horizontal and vertical movements, columnar setting</th>
+<th id="qr-9" class="quick-ref" colspan="2">
+<a href="typesetting.html#aldrld-intro">+++ Horizontal and vertical movements, columnar setting</a></th>
 </tr>
 <tr>
 <td><a href="typesetting.html#ald">ALD</a></td><td>-- move downards on the page</td>
@@ -350,7 +363,8 @@ elsewhere in the documentation.
 
 <table class="quick-ref">
 <tr>
-<th id="qr-10" class="quick-ref" colspan="2" >+++ Indents</th>
+<th id="qr-10" class="quick-ref" colspan="2">
+<a href="typesetting.html#indents-intro">+++ Indents</a></th>
 </tr>
 <tr>
 <td><a href="typesetting.html#il">IL</a></td><td>-- set and turn on a left indent</td>
@@ -383,7 +397,8 @@ elsewhere in the documentation.
 
 <table class="quick-ref">
 <tr>
-<th id="qr-11" class="quick-ref" colspan="2" >+++ Tabs</th>
+<th id="qr-11" class="quick-ref" colspan="2">
+<a href="typesetting.html#tabs-intro">+++ Tabs</a></th>
 </tr>
 <tr>
 <td><a href="typesetting.html#tab-set">TAB_SET</a></td><td>-- set up a typesetting tab</td>
@@ -410,7 +425,8 @@ elsewhere in the documentation.
 
 <table class="quick-ref">
 <tr>
-<th id="qr-12" class="quick-ref" colspan="2" >+++ Underscoring, underlining</th>
+<th id="qr-12" class="quick-ref" colspan="2">
+<a href="goodies.html#underscore">+++ Underscoring, underlining</a></th>
 </tr>
 <tr>
 <td><a href="goodies.html#underscore">UNDERSCORE</a></td><td>-- underscore</td>
@@ -431,7 +447,8 @@ elsewhere in the documentation.
 
 <table class="quick-ref">
 <tr>
-<th id="qr-13" class="quick-ref" colspan="2" >+++ Superscipts</th>
+<th id="qr-13" class="quick-ref" colspan="2">
+<a href="goodies.html#sup">+++ Superscipts</a></th>
 </tr>
 <tr>
 <td><a href="goodies.html#sup">\*[SUP]...\*[SUPX]</a></td><td>-- superscript</td>
@@ -449,7 +466,8 @@ elsewhere in the documentation.
 
 <table class="quick-ref">
 <tr>
-<th id="qr-14" class="quick-ref" colspan="2" >+++ Nested lists</th>
+<th id="qr-14" class="quick-ref" colspan="2">
+<a href="docelement.html#list-intro">+++ Nested lists</a></th>
 </tr>
 <tr>
 <td><a href="docelement.html#list">LIST</a></td><td>-- begin a list</td>
@@ -470,7 +488,8 @@ elsewhere in the documentation.
 
 <table class="quick-ref">
 <tr>
-<th id="qr-15" class="quick-ref" colspan="2" >+++ Colour</th>
+<th id="qr-15" class="quick-ref" colspan="2">
+<a href="color.html#color-intro">+++ Colour</a></th>
 </tr>
 <tr>
 <td><a href="color.html#newcolor">NEWCOLOR</a></td><td>-- initialize (define) a colour</td>
@@ -488,7 +507,8 @@ elsewhere in the documentation.
 
 <table class="quick-ref">
 <tr>
-<th id="qr-16" class="quick-ref" colspan="2" >+++ Dropcaps</th>
+<th id="qr-16" class="quick-ref" colspan="2">
+<a href="goodies.html#dropcap">+++ Dropcaps</a></th>
 </tr>
 <tr>
 <td><a href="goodies.html#dropcap">DROPCAP</a></td><td>-- set a dropcap</td>
@@ -512,7 +532,21 @@ elsewhere in the documentation.
 
 <table class="quick-ref">
 <tr>
-<th id="qr-17" class="quick-ref" colspan="2" >+++ Utilities</th>
+<th id="qr-56" class="quick-ref" colspan="2">
+<a href="typesetting.html#smallcaps">+++ Smallcaps</a></th>
+</tr>
+<tr>
+<td><a href="typesetting.html#smallcaps">SMALLCAPS</a></td>
+</tr>
+<tr>
+<td><a href="typesetting.html#smallcaps-style">SMALLCAPS_STYLE</a></td>
+</tr>
+</table>
+
+
+<table class="quick-ref">
+<tr>
+<th id="qr-17" class="quick-ref" colspan="2">+++ Utilities</th>
 </tr>
 <tr>
 <td><a href="goodies.html#alias">ALIAS</a></td><td>-- give a macro a new name</td>
@@ -536,6 +570,15 @@ elsewhere in the documentation.
 <td><a href="typesetting.html#newpage">NEWPAGE</a></td><td>-- break to a new page</td>
 </tr>
 <tr>
+<td><a href="docprocessing.html#newslide">NEWSLIDE</a></td><td>-- break to a new slide</td>
+</tr>
+<tr>
+<td><a href="docprocessing.html#pause">PAUSE</a></td><td>-- pause slide presentation</td>
+</tr>
+<tr>
+<td><a href="docprocessing.html#transition">TRANSITION</a></td><td>-- transition effect for slides</td>
+</tr>
+<tr>
 <td><a href="goodies.html#pad">PAD</a></td><td>-- insert equalized whitespace into a line</td>
 </tr>
 <tr>
@@ -557,7 +600,8 @@ elsewhere in the documentation.
 
 <table class="quick-ref">
 <tr>
-<th id="qr-18" class="quick-ref" colspan="2" >+++ Graphical objects and images</th>
+<th id="qr-18" class="quick-ref" colspan="2">
+<a href="graphical.html#intro-graphical">+++ Graphical objects and images</a></th>
 </tr>
 <tr>
 <td><a href="graphical.html#drh">DRH</a></td><td>-- draw a horizontal rule</td>
@@ -586,7 +630,8 @@ elsewhere in the documentation.
 
 <table class="quick-ref">
 <tr>
-<th id="qr-19" class="quick-ref" colspan="2" >+++ Reference macros</th>
+<th id="qr-19" class="quick-ref" colspan="2">
+<a href="docprocessing.html#reference-macros">+++ Reference macros</a></th>
 </tr>
 <tr>
 <td><a href="docprocessing.html#title">TITLE</a></td><td>-- document title</td>
@@ -640,12 +685,16 @@ elsewhere in the documentation.
 
 <table class="quick-ref">
 <tr>
-<th id="qr-20" class="quick-ref" colspan="2" >+++ General document formatting directives</th>
+<th id="qr-20" class="quick-ref" colspan="2">
+<a href="docprocessing.html#docstyle-macros">+++ General document formatting directives</a></th>
 </tr>
 <tr>
 <td><a href="docprocessing.html#doctype">DOCTYPE</a></td><td>-- general document type</td>
 </tr>
 <tr>
+<td id="qr-59"><a href="docprocessing.html#slides">DOCTYPE SLIDES</a></td><td>-- create slide presentation</td>
+</tr>
+<tr>
 <td><a href="docprocessing.html#copystyle">COPYSTYLE</a></td><td>-- draft or final copy</td>
 </tr>
 <tr>
@@ -655,7 +704,8 @@ elsewhere in the documentation.
 
 <table class="quick-ref">
 <tr>
-<th id="qr-21" class="quick-ref" colspan="2" >+++ Line numbering</th>
+<th id="qr-21" class="quick-ref" colspan="2">
+<a href="docelement.html#number-lines-intro">+++ Line numbering</a></th>
 </tr>
 <tr>
 <td><a href="docelement.html#number-lines">NUMBER_LINES</a></td><td>-- automatic line numbering on/off</td>
@@ -666,11 +716,15 @@ elsewhere in the documentation.
 <tr>
 <td><a href="docelement.html#number-blockquote-lines">NUMBER_BLOCKQUOTE_LINES</a></td><td>-- numbering of BLOCKQUOTE lines on/off</td>
 </tr>
+<tr>
+<td><a href="docelement.html#number-lines-control">Control macros</a></td><td>-- numbering of BLOCKQUOTE lines on/off</td>
+</tr>
 </table>
 
 <table class="quick-ref">
 <tr>
-<th id="qr-22" class="quick-ref" colspan="2" >+++ Set documents in columns</th>
+<th id="qr-22" class="quick-ref" colspan="2">
+<a href="docprocessing.html#columns-intro">+++ Set documents in columns</a></th>
 </tr>
 <tr>
 <td><a href="docprocessing.html#columns">COLUMNS</a></td>
@@ -685,7 +739,7 @@ elsewhere in the documentation.
 
 <table class="quick-ref">
 <tr>
-<th id="qr-23" class="quick-ref" colspan="2" >+++ TYPEWRITE control macros</th>
+<th id="qr-23" class="quick-ref" colspan="2">+++ TYPEWRITE control macros</th>
 </tr>
 <tr>
 <td><a href="docprocessing.html#typewriter-underlining">UNDERLINE_ITALIC</a></td><td>--  underlining of italics on</td>
@@ -706,7 +760,8 @@ elsewhere in the documentation.
 
 <table class="quick-ref">
 <tr>
-<th id="qr-24" class="quick-ref" colspan="2" >+++ Initiate document processing</th>
+<th id="qr-24" class="quick-ref" colspan="2">
+<a href="docprocessing.html#start-macro">+++ Initiate document processing</a></th>
 </tr>
 <tr>
 <td><a href="docprocessing.html#start">START</a></td><td>-- begin document processing</td>
@@ -715,7 +770,8 @@ elsewhere in the documentation.
 
 <table class="quick-ref">
 <tr>
-<th id="qr-25" class="quick-ref" colspan="2" >+++ Epigraphs</th>
+<th id="qr-25" class="quick-ref" colspan="2">
+<a href="docelement.html#epigraph-intro">+++ Epigraphs</a></th>
 </tr>
 <tr>
 <td><a href="docelement.html#epigraph">EPIGRAPH</a></td><td>-- set an epigraph underneath the docheader</td>
@@ -727,7 +783,8 @@ elsewhere in the documentation.
 
 <table class="quick-ref">
 <tr>
-<th id="qr-26" class="quick-ref" colspan="2" >+++ HEADINGS</th>
+<th id="qr-26" class="quick-ref" colspan="2">
+<a href="docelement.html#heading-intro">+++ Headings</a></th>
 </tr>
 <tr>
 <td><a href="docelement.html#heading">HEADING</a></td><td>-- hierarchical headings</td>
@@ -743,7 +800,8 @@ elsewhere in the documentation.
 
 <table class="quick-ref">
 <tr>
-<th id="qr-30" class="quick-ref" colspan="2" >+++ Paragraphs</th>
+<th id="qr-30" class="quick-ref" colspan="2">
+<a href="docelement.html#pp-intro">+++ Paragraphs</a></th>
 </tr>
 <tr>
 <td><a href="docelement.html#pp">PP</a></td><td>-- set a paragraph</td>
@@ -767,7 +825,8 @@ elsewhere in the documentation.
 
 <table class="quick-ref">
 <tr>
-<th id="qr-31" class="quick-ref" colspan="2" >+++ Quotes (line for line verbatim quotes)</th>
+<th id="qr-31" class="quick-ref" colspan="2">
+<a href="docelement.html#quote-intro">+++ Quotes (line for line verbatim quotes)</a></th>
 </tr>
 <tr>
 <td><a href="docelement.html#quote">QUOTE</a></td><td>-- set quoted text line for line </td>
@@ -782,7 +841,8 @@ elsewhere in the documentation.
 
 <table class="quick-ref">
 <tr>
-<th id="qr-32" class="quick-ref" colspan="2" >+++ Blockquotes (cited passages of text)</th>
+<th id="qr-32" class="quick-ref" colspan="2">
+<a href="docelement.html#blockquote-intro">+++ Blockquotes (cited passages of text)</a></th>
 </tr>
 <tr>
 <td><a href="docelement.html#blockquote">BLOCKQUOTE</a></td><td>-- set longer passages of cited text</td>
@@ -797,7 +857,8 @@ elsewhere in the documentation.
 
 <table class="quick-ref">
 <tr>
-<th id="qr-49" class="quick-ref" colspan="2" >+++Floats </th>
+<th id="qr-49" class="quick-ref" colspan="2">
+<a href="images.html#floats-intro">+++ Floats</a></th>
 </tr>
 <tr>
 <td style="vertical-align: top"><a href="images.html#float">FLOAT</a></td><td>-- keep blocks of input together, output on next page
@@ -808,7 +869,8 @@ elsewhere in the documentation.
 
 <table class="quick-ref">
 <tr>
-<th id="qr-53" class="quick-ref" colspan="2" >+++Images and graphics </th>
+<th id="qr-53" class="quick-ref" colspan="2">
+<a href="images.html#images-intro">+++ Images and graphics</a></th>
 </tr>
 <tr>
 <td style="vertical-align: top"><a href="images.html#pdf">PDF_IMAGE</a></td><td>-- inserting pdf images
@@ -823,7 +885,8 @@ elsewhere in the documentation.
 
 <table class="quick-ref">
 <tr>
-<th id="qr-51" class="quick-ref" colspan="2" >+++eqn support </th>
+<th id="qr-51" class="quick-ref" colspan="2">
+<a href="images.html#eqn">+++ eqn support</a></th>
 </tr>
 <tr>
 <td><a href="images.html#eq-en">EQ</a></td><td>-- begin an eqn block</td>
@@ -835,7 +898,8 @@ elsewhere in the documentation.
 
 <table class="quick-ref">
 <tr>
-<th id="qr-52" class="quick-ref" colspan="2" >+++pic support </th>
+<th id="qr-52" class="quick-ref" colspan="2">
+<a href="images.html#pic">+++ pic support</a></th>
 </tr>
 <tr>
 <td><a href="images.html#ps-pe">PS</a></td><td>-- begin a pic block</td>
@@ -850,7 +914,21 @@ elsewhere in the documentation.
 
 <table class="quick-ref">
 <tr>
-<th id="qr-50" class="quick-ref" colspan="2" >+++tbl support</th>
+<th id="qr-58" class="quick-ref" colspan="2">
+<a href="images.html#grap">+++ grap support</a></th>
+</tr>
+<tr>
+<td><a href="images.html#grap">G1</a></td><td>-- begin a grap block</td>
+</tr>
+<tr>
+<td><a href="images.html#grap">G2</a></td><td>-- end a grap block</td>
+</tr>
+</table>
+
+<table class="quick-ref">
+<tr>
+<th id="qr-50" class="quick-ref" colspan="2">
+<a href="images.html#tbl">+++ tbl support</a></th>
 </tr>
 <tr>
 <td><a href="images.html#ts-te">TS</a></td><td>-- begin a tbl block</td>
@@ -865,18 +943,28 @@ elsewhere in the documentation.
 
 <table class="quick-ref">
 <tr>
-<th id="qr-54" class="quick-ref" colspan="2" >+++ Captions and labels</th>
+<th id="qr-54" class="quick-ref" colspan="2">
+<a href="images.html#captions-and-labels">+++ Captions and labels</a></th>
 </tr>
 <tr>
 <td><a href="images.html#autolabel">AUTOLABEL</a></td><td>-- auto-label figures, tables, equations</td>
 </tr>
 <tr>
+<td><a href="images.html#set-autolabel">SET_AUTOLABEL</a></td><td>-- set or reset autolabel numbers</td>
+</tr>
+<tr>
 <td><a href="images.html#caption-after-label">CAPTION_AFTER_LABEL</a></td><td>-- place captions after labels</td>
 </tr>
 <tr>
 <td><a href="images.html#mla">MLA</a></td><td>-- MLA-style labelling and captioning</td>
 </tr>
 <tr>
+<td><a href="images.html#caption">CAPTION</a></td><td>-- add a caption to a float or (block)quote</td>
+</tr>
+<tr>
+<td><a href="images.html#label">LABEL</a></td><td>-- add a label to a float or (block)quote</td>
+</tr>
+<tr>
 <td><a href="images.html#captions-labels-sources">CAPTIONS</a></td><td>-- set style for captions</td>
 </tr>
 <tr>
@@ -889,7 +977,8 @@ elsewhere in the documentation.
 
 <table class="quick-ref">
 <tr>
-<th id="qr-55" class="quick-ref" colspan="2" >+++Lists of Figures, Tables, and Equations</th>
+<th id="qr-55" class="quick-ref" colspan="2">
+<a href="images.html#lists-of">+++ Lists of Figures, Tables, and Equations</a></th>
 </tr>
 <tr>
 <td><a href="images.html#lists-macros">LIST_OF_FIGURES</a></td><td>-- generate a List of Figures</td>
@@ -907,7 +996,8 @@ elsewhere in the documentation.
 
 <table class="quick-ref">
 <tr>
-<th id="qr-33" class="quick-ref" colspan="2" >+++ Code snippets</th>
+<th id="qr-33" class="quick-ref" colspan="2">
+<a href="docelement.html#code-intro">+++ Code snippets</a></th>
 </tr>
 <tr>
 <td><a href="docelement.html#code">CODE</a></td><td>-- set a code snippet</td>
@@ -925,7 +1015,8 @@ elsewhere in the documentation.
 
 <table class="quick-ref">
 <tr>
-<th id="qr-34" class="quick-ref" colspan="2" >+++ Author linebreaks (section breaks)</th>
+<th id="qr-34" class="quick-ref" colspan="2">
+<a href="docelement.html#linebreak-intro">+++ Author linebreaks (section breaks)</a></th>
 </tr>
 <tr>
 <td><a href="docelement.html#linebreak">LINEBREAK</a></td><td>-- insert an author linebreak (section break)</td>
@@ -943,7 +1034,8 @@ elsewhere in the documentation.
 
 <table class="quick-ref">
 <tr>
-<th id="qr-35" class="quick-ref" colspan="2" >+++ Document termination string</th>
+<th id="qr-35" class="quick-ref" colspan="2">
+<a href="docelement.html#finis-intro">+++ Document termination string</a></th>
 </tr>
 <tr>
 <td><a href="docelement.html#finis">FINIS</a></td><td>-- insert a document termination string</td>
@@ -964,7 +1056,8 @@ elsewhere in the documentation.
 
 <table class="quick-ref">
 <tr>
-<th id="qr-36" class="quick-ref" colspan="2" >+++ Footnotes</th>
+<th id="qr-36" class="quick-ref" colspan="2">
+<a href="docelement.html#footnote-intro">+++ Footnotes</a></th>
 </tr>
 <tr>
 <td><a href="docelement.html#footnote">FOOTNOTE</a></td><td>-- set a footnote</td>
@@ -998,7 +1091,8 @@ elsewhere in the documentation.
 
 <table class="quick-ref">
 <tr>
-<th id="qr-37" class="quick-ref" colspan="2" >+++ Endnotes</th>
+<th id="qr-37" class="quick-ref" colspan="2">
+<a href="docelement.html#endnote-intro">+++ Endnotes</a></th>
 </tr>
 <tr>
 <td><a href="docelement.html#endnote">ENDNOTE</a></td><td>-- set an endnote</td>
@@ -1027,7 +1121,7 @@ elsewhere in the documentation.
 <td><a href="docelement.html#endnotes-header-control">Header/footer control</a></td>
 </tr>
 <tr>
-<td><a href="docelement.html#endnotes-main-title">Title control</a></td>
+<td><a href="docelement.html#endnotes-header-string-control">Title control</a></td>
 </tr>
 <tr>
 <td><a href="docelement.html#endnotes-doc-title">Document/section identification control</a></td>
@@ -1039,7 +1133,8 @@ elsewhere in the documentation.
 
 <table class="quick-ref">
 <tr>
-<th id="qr-38" class="quick-ref" colspan="2" >+++ Margin notes</th>
+<th id="qr-38" class="quick-ref" colspan="2">
+<a href="docelement.html#margin-notes-intro">+++ Margin notes</a></th>
 </tr>
 <tr>
 <td><a href="docelement.html#mn-init">MN_INIT</a></td><td>-- initialize margin notes</td>
@@ -1051,7 +1146,8 @@ elsewhere in the documentation.
 
 <table class="quick-ref">
 <tr>
-<th id="qr-39" class="quick-ref" colspan="2" >+++ Bibliographic references</th>
+<th id="qr-39" class="quick-ref" colspan="2">
+<a href="refer.html#intro-ref">+++ Bibliographic references</a></th>
 </tr>
 <tr>
 <td><a href="refer.html#ref">REF</a></td><td>-- begin a reference</td>
@@ -1069,7 +1165,7 @@ elsewhere in the documentation.
 <td><a href="refer.html#bracket-refs">REF[ / REF]</a></td><td>-- put square brackets around embedded references</td>
 </tr>
 <tr>
-<td><a href="refer.html#bracket-refs">REF{ / REF}</a></td><td>-- put curly braces around mbedded references</td>
+<td><a href="refer.html#bracket-refs">REF{ / REF}</a></td><td>-- put curly braces around embedded references</td>
 </tr>
 <tr>
 <td><a href="refer.html#bibliography">BIBLIOGRAPHY</a></td><td>-- output a bibliography</td>
@@ -1096,7 +1192,8 @@ elsewhere in the documentation.
 
 <table class="quick-ref">
 <tr>
-<th id="qr-40" class="quick-ref" colspan="2" >+++ Tables of contents</th>
+<th id="qr-40" class="quick-ref" colspan="2">
+<a href="tables-of-contents.html">+++ Tables of contents</a></th>
 </tr>
 <tr>
 <td><a href="tables-of-contents.html#toc">TOC</a></td><td>-- output a table of contents</td>
@@ -1132,7 +1229,8 @@ elsewhere in the documentation.
 
 <table class="quick-ref">
 <tr>
-<th id="qr-41" class="quick-ref" colspan="2" >+++ Letter (correspondence) macros</th>
+<th id="qr-41" class="quick-ref" colspan="2">
+<a href="letters.html">+++ Letter (correspondence) macros</a></th>
 </tr>
 <tr>
 <td><a href="letters.html#date">DATE</a></td><td>-- letter&#8217;s date</td>
@@ -1162,7 +1260,8 @@ elsewhere in the documentation.
 
 <table class="quick-ref">
 <tr>
-<th id="qr-42" class="quick-ref" colspan="2" >+++ Changing global print style parameters after START</th>
+<th id="qr-42" class="quick-ref" colspan="2">
+<a href="docprocessing.html#style-after-start">+++ Changing global print style parameters after START</a></th>
 </tr>
 <tr>
 <td><a href="docprocessing.html#doc-left-margin">DOC_LEFT_MARGIN</a></td><td>-- left margin of everything on the page</td>
@@ -1189,7 +1288,8 @@ elsewhere in the documentation.
 
 <table class="quick-ref">
 <tr>
-<th id="qr-43" class="quick-ref" colspan="2" >+++ Managing a document&#8217;s first-page header</th>
+<th id="qr-43" class="quick-ref" colspan="2">
+<a href="docprocessing.html#docheader">+++ Managing a document&#8217;s first-page header<a></th>
 </tr>
 <tr>
 <td><a href="docprocessing.html#docheader">DOCHEADER</a></td><td>-- document first-page header on/off</td>
@@ -1201,7 +1301,8 @@ elsewhere in the documentation.
 
 <table class="quick-ref">
 <tr>
-<th id="qr-44" class="quick-ref" colspan="2" >+++ Managing page headers and footers</th>
+<th id="qr-44" class="quick-ref" colspan="2">
+<a href="headfootpage.html#headfoot-management">+++ Managing page headers and footers</a></th>
 </tr>
 <tr>
 <td><a href="headfootpage.html#headers">HEADERS</a></td><td>-- page headers on/off</td>
@@ -1241,12 +1342,16 @@ elsewhere in the documentation.
 
 <table class="quick-ref">
 <tr>
-<th id="qr-45" class="quick-ref" colspan="2" >+++ Recto/verso page headers and footers</th>
+<th id="qr-45" class="quick-ref" colspan="2">
+<a href="rectoverso.html">+++ Recto/verso page headers and footers</a></th>
 </tr>
 <tr>
 <td><a href="rectoverso.html#recto-verso">RECTO_VERSO</a></td><td>-- recto/verso headers and/or footers on/off</td>
 </tr>
 <tr>
+<td><a href="rectoverso.html#force-recto">FORCE_RECTO</a></td><td>-- insert blank pages so chapters start recto</td>
+</tr>
+<tr>
 <td><a href="rectoverso.html#switch-hdrftr">SWITCH_HEADERS</a></td><td>-- switch recto or verso header</td>
 </tr>
 <tr>
@@ -1268,13 +1373,14 @@ elsewhere in the documentation.
 
 <table class="quick-ref">
 <tr>
-<th id="qr-46" class="quick-ref" colspan="2" >+++ Pagination</th>
+<th id="qr-46" class="quick-ref" colspan="2">
+<a href="headfootpage.html#pagination-intro">+++ Pagination</a></th>
 </tr>
 <tr>
-<td><a href="headfootpage.html#index-pagination">PAGINATE</a></td><td>-- pagination on/off</td>
+<td><a href="headfootpage.html#paginate">PAGINATE</a></td><td>-- pagination on/off</td>
 </tr>
 <tr>
-<td><a href="headfootpage.html#index-pagination-control">Control macros</a></td><td>-- change default style for pagination</td>
+<td><a href="headfootpage.html#index-paginate-control">Control macros</a></td><td>-- change default style for pagination</td>
 </tr>
 <tr>
 <td><a href="headfootpage.html#pagenumber">&nbsp;PAGENUMBER</a></td><td>-- user-defined (starting) page number</td>
@@ -1283,7 +1389,10 @@ elsewhere in the documentation.
 <td><a href="headfootpage.html#pagenum-style">&nbsp;PAGENUM_STYLE</a></td><td>-- digits, roman numerals, etc</td>
 </tr>
 <tr>
-<td><a href="headfootpage.html#pagenum-on-first-page">&nbsp;PAGENUM_ON_FIRST_PAGE</a></td><td>-- when footers are enabled</td>
+<td><a href="headfootpage.html#pagenumber-string">&nbsp;PAGENUMBER_STRING</a></td><td>-- user-defined page numbering string</td>
+</tr>
+<tr>
+<td><a href="headfootpage.html#pagenum-on-first-page">&nbsp;PAGENUM_ON_FIRST_PAGE</a></td><td>-- when page numbering is at page top</td>
 </tr>
 <tr>
 <td style="vertical-align: top;"><a href="headfootpage.html#draft-with-pagenumber">&nbsp;DRAFT_WITH_PAGENUMBER</a></td><td>-- attach draft/revision to page number</td>
@@ -1292,43 +1401,76 @@ elsewhere in the documentation.
 
 <table class="quick-ref">
 <tr>
-<th id="qr-47" class="quick-ref" colspan="2" >+++ Document and section cover (title) pages</th>
+<th id="qr-57" class="quick-ref" colspan="2">
+<a href="docprocessing.html#vertical-whitespace-management">+++ Vertical whitespace management</a></th>
 </tr>
 <tr>
-<td><a href="cover.html#cover">COVER</a></td><td>-- information to include in a section cover</td>
+<td><a href="docprocessing.html#shim">SHIM</a></td><td>-- align to the baseline grid</td>
+</tr>
+<tr>
+<td><a href="docprocessing.html#flex">FLEX</a></td><td>-- insert flexible whitespace</td>
+</tr>
+</table>
+
+
+<table class="quick-ref">
+<tr>
+<th id="qr-47" class="quick-ref" colspan="2">
+<a href="cover.html">+++ Document and section cover (title) pages</a></th>
 </tr>
 <tr>
 <td><a href="cover.html#cover">DOC_COVER</a></td><td>-- information to include in a document cover</td>
 </tr>
 <tr>
-<td><a href="cover.html#on-off">COVERS</a></td><td>-- printing of section covers on/off</td>
+<td><a href="cover.html#cover">COVER</a></td><td>-- information to include in a section cover</td>
 </tr>
 <tr>
 <td><a href="cover.html#on-off">DOC_COVERS</a></td><td>-- printing of document covers on/off</td>
 </tr>
 <tr>
+<td><a href="cover.html#on-off">COVERS</a></td><td>-- printing of section covers on/off</td>
+</tr>
+<tr>
+<td><a href="cover.html#covertext">DOC_COVERTEXT</a></td><td>-- user-added text for document covers</td>
+</tr>
+<tr>
+<td><a href="cover.html#covertext">COVERTEXT</a></td><td>-- user-added text for section covers</td>
+</tr>
+<tr>
+<td><a href="cover.html#coverimage">DOC_COVER_IMAGE</a></td><td>-- add images to document covers</td>
+</tr>
+<tr>
+<td><a href="cover.html#coverimage">COVER_IMAGE</a></td><td>-- add images to document covers</td>
+</tr>
+<tr>
 <td><a href="cover.html#cover-control">Control macros</a></td><td>-- change style defaults for covers</td>
 </tr>
 </table>
 
 <table class="quick-ref">
 <tr>
-<th id="qr-48" class="quick-ref" colspan="2" >+++ Utilities</th>
+<th id="qr-48" class="quick-ref" colspan="2">+++ Utilities</th>
 </tr>
 <tr>
 <td><a href="docprocessing.html#add-space">ADD_SPACE</a></td><td>-- add space to the top of a page</td>
 </tr>
 <tr>
+<td><a href="docprocessing.html#add-space">RESTORE_SPACE</a></td><td>-- restore spacing at the top of a page</td>
+</tr>
+<tr>
 <td><a href="headfootpage.html#blank-pages">BLANKPAGE</a></td><td>-- output one or more blank pages</td>
 </tr>
 <tr>
 <td><a href="docprocessing.html#doc-lead-adjust">DOC_LEAD_ADJUST</a></td><td>-- adjust leading to fill pages</td>
 </tr>
 <tr>
-<td><a href="rectoverso.html#collate">COLLATE</a></td><td>-- join documents (chapters/sections) together</td>
+<td><a href="rectoverso.html#collate">COLLATE</a></td><td>-- join documents (chapters/sections)</td>
+</tr>
+<tr>
+<td><a href="goodies.html#center-block">CENTER_BLOCK</a></td><td>-- centre blocks of type</td>
 </tr>
 <tr>
-<td><a href="docprocessing.html#shim">SHIM</a></td><td>-- move vertical position to next valid baseline</td>
+<td><a href="goodies.html#left-hang">LEFT_HANG / \*[HANG c]</a></td><td>-- hanging punctuation</td>
 </tr>
 </table>
 
@@ -1349,4 +1491,3 @@ elsewhere in the documentation.
 
 </body>
 </html>
-<!-- vim: fileencoding=utf-8: nomodified: -->
index 4a884bb..d644dec 100644 (file)
@@ -2,14 +2,14 @@
 <!--
 This file is part of groff, the GNU roff type-setting system.
 
-Copyright (C) 2004-2014 Free Software Foundation, Inc.
+Copyright (C) 2004-2018 Free Software Foundation, Inc.
 Written by Peter Schaffter (peter@schaffter.ca).
 
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.3 or
-any later version published by the Free Software Foundation; with the
-Invariant Sections being this comment section, with no Front-Cover
-Texts, and with no Back-Cover Texts.
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
+Texts.
 
 A copy of the Free Documentation License is included as a file called
 FDL in the main directory of the groff source package.
@@ -40,7 +40,7 @@ FDL in the main directory of the groff source package.
 
 <h1 class="docs">Recto/verso printing, collating</h1>
 
-<div style="width: 40%; margin: auto;">
+<div style="width: 50%; margin: auto;">
 <ul class="no-enumerator" style="margin-left: -1em;">
   <li><a href="#rectoverso-intro">Introduction to recto/verso printing</a>
   <ul style="margin-left: -.5em; list-style-type: disc;">
@@ -77,9 +77,9 @@ aspects of alternating page layout:
       <a href="headfootpage.html#description-general">General description of headers</a>)
   </li>
   <li>switching
-      <a href="headfootpage.html#hdrftr-rectoverso">HEADER_RECTO</a>
+      <a href="headfootpage.html#hdrftr-recto">HEADER_RECTO</a>
       and
-      <a href="headfootpage.html#hdrftr-rectoverso">HEADER_VERSO</a>
+      <a href="headfootpage.html#hdrftr-recto">HEADER_VERSO</a>
       if user-defined, single string recto/verso headers
       or footers are used in place of the default 3-part
       headers or footers
@@ -92,6 +92,7 @@ aspects of alternating page layout:
 <h3 id="rectoverso-list" class="macro-list">Recto/verso macros</h3>
 <ul class="macro-list">
   <li><a href="#recto-verso">RECTO_VERSO</a></li>
+  <li><a href="#force-recto">FORCE_RECTO</a></li>
   <li><a href="#switch-hdrftr">SWITCH_HEADERS (also FOOTERS)</a>
       &ndash; switch starting position of the header parts (left and right)
   </li>
@@ -143,6 +144,27 @@ number position with
 </p>
 </div>
 
+<!-- -FORCE_RECTO- -->
+
+<div id="force-recto" class="box-macro-args" style="margin-top: 1em;">
+Macro: <b>FORCE_RECTO</b>
+</div>
+
+<p>
+It is a common convention with two-sided printing to ensure that
+cover pages, title pages, and chapters or major sections of a document
+always begin on the recto side of a page.  This sometimes
+necessitates inserting a blank page before the start of a new
+chapter or major section.
+</p>
+
+<p>
+If you would like mom to take care of this for you automatically,
+simply invoke <kbd>FORCE_RECTO</kbd> before the first
+<a href="docprocessing.html#start">START</a>
+of the document.
+</p>
+
 <!-- -SWITCH_HDRFTR- -->
 
 <div id="switch-hdrftr" class="box-macro-args" style="margin-top: 1em;">
@@ -197,7 +219,7 @@ together.  You need only concatenate chapters into a single file
 (most likely with the <kbd>cat</kbd> command), put <kbd>.COLLATE</kbd> at the end of each
 concatenated chapter, follow it with the
 <a href="docprocessing.html#reference-macros">reference macros</a>
-(metadata) needed for the new chapter, eg
+(metadata) needed for the new chapter, e.g.,
 <a href="docprocessing.html#chapter">CHAPTER</a>
 or
 <a href="docprocessing.html#chapter-string">CHAPTER_STRING</a>,
@@ -264,9 +286,6 @@ this:
   .CHAPTER 17
   .START
 </span>
-</p>
-
-<p>
 A slightly more complex version of the same thing, for chapters
 that require their own titles, looks like this:
 <br/>
@@ -277,12 +296,12 @@ that require their own titles, looks like this:
 </span>
 </p>
 
-<div class="box-tip">
+<div class="box-tip" style="margin-top: -1em">
 <p class="tip">
 <span class="tip">Tip:</span>
 If the last line of text before <kbd>.COLLATE</kbd>
 falls too close to the bottom margin, or if the line is followed
-by a macro likely to cause a linebreak (eg <kbd>.LIST OFF</kbd> or
+by a macro likely to cause a linebreak (e.g., <kbd>.LIST OFF</kbd> or
 <kbd>.IQ</kbd>), mom may output a superfluous blank page before
 the start of the following document.
 </p>
@@ -294,14 +313,14 @@ after the last line of text, before <kbd>.COLLATE</kbd> and/or any
 concluding macros.  For example,
 <br/>
 <span class="pre-in-pp">
-  some concluding text.
+  some concluding text.\c
   .EL
   .COLLATE
 </span>
 or
 <br/>
 <span class="pre-in-pp">
-  some concluding text.
+  some concluding text.\c
   .EL
   .LIST OFF
   .COLLATE
@@ -335,4 +354,3 @@ above.
 
 </body>
 </html>
-<!-- vim: fileencoding=utf-8: nomodified: -->
index e18681e..bd814c0 100644 (file)
@@ -2,14 +2,14 @@
 <!--
 This file is part of groff, the GNU roff type-setting system.
 
-Copyright (C) 2004-2014 Free Software Foundation, Inc.
+Copyright (C) 2004-2018 Free Software Foundation, Inc.
 Written by Peter Schaffter (peter@schaffter.ca).
 
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.3 or
-any later version published by the Free Software Foundation; with the
-Invariant Sections being this comment section, with no Front-Cover
-Texts, and with no Back-Cover Texts.
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
+Texts.
 
 A copy of the Free Documentation License is included as a file called
 FDL in the main directory of the groff source package.
@@ -172,7 +172,7 @@ are separated from each other by a single, blank line.  The records
 themselves are composed of single lines (&#8220;fields&#8221;) with
 no blank lines between them.  Each field begins with a percent
 sign and a single letter (the &quot;field identifier&quot;)
-eg <kbd>%A</kbd> or <kbd>%T</kbd>.  The letter identifies
+e.g., <kbd>%A</kbd> or <kbd>%T</kbd>.  The letter identifies
 what part of a bibliographic entry the field refers to: Author,
 Title, Publisher, Date, etc.  After the field identifier comes
 a single space, followed by the information appropriate to
@@ -253,7 +253,7 @@ database &lt;full path to database&gt;
 </div>
 <p style="margin-top: .5em; font-size: 95%; line-height: 120%;">
 <kbd>&lt;full&nbsp;path&nbsp;to&nbsp;the&nbsp;database&gt;</kbd>
-means the full path including the filename, eg
+means the full path including the filename, e.g.,
 <kbd>/home/user/refer/my-database-file</kbd>.
 </p>
 
@@ -282,7 +282,7 @@ database &lt;full path to database&gt;
 </div>
 <p style="margin-top: .5em; font-size: 95%; line-height: 120%;">
 <kbd>&lt;full&nbsp;path&nbsp;to&nbsp;the&nbsp;database&gt;</kbd>
-means the full path including the filename, eg
+means the full path including the filename, e.g.,
 <kbd>/home/user/refer/my-database-file</kbd>.
 </p>
 
@@ -313,7 +313,7 @@ database &lt;full path to database&gt;
 
 <p style="margin-top: .5em; font-size: 95%; line-height: 120%;">
 <kbd>&lt;full&nbsp;path&nbsp;to&nbsp;the&nbsp;database&gt;</kbd>
-means the full path including the filename, eg
+means the full path including the filename, e.g.,
 <kbd>/home/user/refer/my-database</kbd>.
 </p>
 
@@ -353,7 +353,7 @@ for how to output the collected references.
 <p>
 For outputting an entire <kbd>refer</kbd> database, or
 generating a comprehensive reading list from a database, see the
-macro,
+macro
 <a href="#bibliography">BIBLIOGRAPHY</a>.
 </p>
 
@@ -752,7 +752,7 @@ are very few rules, and those there are make sense.  In a nutshell:
       escapes <kbd>\*[IT]</kbd> and <kbd>\*[PREV]</kbd>; if the italicized
       portion concludes the field, omit <kbd>\*[PREV]</kbd></li>
   <li>if you require characters with accents, ligatures or special
-      symbols, use groff&#8217;s &#8220;named&#8221; glyphs (eg.
+      symbols, use groff&#8217;s &#8220;named&#8221; glyphs (e.g.,
       <kbd>\['e]</kbd> for <kbd>é</kbd>); a full list can be found in
       <kbd>man groff_char</kbd></li>
 </ul>
@@ -763,11 +763,11 @@ are very few rules, and those there are make sense.  In a nutshell:
 <span class="pre">
 <a class="quick" href="#A">%A</a> author           &ndash; records may contain multiple authors,
                       one per line
-<a class="quick" href="#Q">%Q</a> non-human author &ndash; corporate author, eg. National Geographic;
+<a class="quick" href="#Q">%Q</a> non-human author &ndash; corporate author, e.g., National Geographic;
                       may also be used for exceptional reference types
 <a class="quick" href="#m">%m</a> multiple authors &ndash; whenever "et al." is desirable
 <a class="quick" href="#i">%i</a> idem             &ndash; multiple works by the same author
-<a class="quick" href="#p">%p</a> post-author      &ndash; post-author information (eg appendix,
+<a class="quick" href="#p">%p</a> post-author      &ndash; post-author information (e.g., appendix,
                       foreword, letter)
 %T title            &ndash; primary title (of a book) or the
                       title of an article (within a scholarly
@@ -788,13 +788,13 @@ are very few rules, and those there are make sense.  In a nutshell:
     newspaper
 %J journal          &ndash; when %T contains the title of an article
 %e edition          &ndash; number or name of an edition
-                      (eg Second, 2nd, Collector's, etc.)
+                      (e.g., Second, 2nd, Collector's, etc.)
 %S series           &ndash; series name of books or journals
 %V volume           &ndash; volume number (of books)
 %N journal number   &ndash; journal or magazine number
 %R report number    &ndash; technical report number
 %G gov&#8217;t.           &ndash; government ordering number
-<a class="quick" href="#O">%O</a> other            &ndash; information or which there is no appropriate
+<a class="quick" href="#O">%O</a> other            &ndash; information for which there is no appropriate
                       field letter
 <a class="quick" href="#C">%C</a> city             &ndash; city of publication
 %I publisher        &ndash; publisher
@@ -805,7 +805,7 @@ are very few rules, and those there are make sense.  In a nutshell:
 <a class="quick" href="#n">%n</a> annotation       &ndash; annotation to the reference
 %s site name        &ndash; for internet references, the website name
 %c content          &ndash; for internet references, the source of
-                      the material (eg. Web or Email); for websites,
+                      the material (e.g., Web or Email); for websites,
                       the content, if unclear
 %o organization     &ndash; for internet sites, the organization, group
                       or sponsor of the site
@@ -930,7 +930,7 @@ like this:
 
 <p>
 Use this only if the author and the editor are not one in the same,
-eg
+e.g.,
 <br/>
 <span class="pre-in-pp">
   %A Geoffrey Chaucer
@@ -1008,7 +1008,7 @@ publication data is desired, include it in the field, like this:
   %A Kazuo Ishiguro
   %T The Remains of the Day
   %d London: Faber, 1989
-  %D New York
+  %C New York
   %I Knopf
   %D 1990
 </span>
@@ -1099,7 +1099,7 @@ Macro: <b>REF</b>
 </div>
 
 <p>
-The macro, REF, tells mom that what follows is
+The macro REF tells mom that what follows is
 <kbd>refer</kbd>-specific, a keyword-identified reference to a
 <kbd>refer</kbd> database record.  Depending on whether you&#8217;ve issued
 a
@@ -1725,7 +1725,7 @@ If you output bibliographies at the end of each document in a
 document set in columns, column mode will automatically be
 reinstated for each document, even with BIBLIOGRAPHY_NO_COLUMNS
 turned on.  In such circumstances, you must re-enable
-ENDNOTES_NO_COLUMNS for each separate collated document.
+BIBLIOGRAPHY_NO_COLUMNS for each separate collated document.
 </p>
 
 <h4 id="biblio-pagination" class="docs" style="margin-bottom: .5em;">2. Pagination of bibliographies</h4>
@@ -1822,7 +1822,7 @@ after you&#8217;ve finished with your bibliography.
 
 <h5 id="biblio-modify-hdrftr" class="docs" style="margin-top: 0; margin-bottom: .5em; margin-left: .5em;">&bull;&nbsp;Modifying what goes in the bibliography header/footer</h5>
 
-<p>
+<p style="margin-top: 0">
 If you wish to modify what appears in the header/footer that appears
 on bibliography pages, make the changes before you invoke
 <a href="#bibliography"><kbd>.BIBLIOGRAPHY</kbd></a>,
@@ -1837,9 +1837,11 @@ on bibliography pages.  Chapters get treated differently in that,
 by default, mom does not print the header/footer centre string
 (normally the chapter number or chapter title.)  In most cases, this
 is what you want.  However, should you not want mom to remove the
-centre string from the bibliography pages headers/footers, invoke
+centre string from the bibliography pages headers/footers, or you
+would like her to add one in cases where there hasn't been one
+before (e.g. DOCTYPE DEFAULT) invoke
 <kbd><a href="#bibliography-hdrftr-center">.BIBLIOGRAPHY_HEADER_CENTER</a></kbd>
-with no argument. 
+with no argument.
 </p>
 
 <p>
@@ -1848,23 +1850,29 @@ An important change you may want to make is to put the word
 do so, invoke
 <br/>
 <span class="pre-in-pp" style="margin-bottom: -1em;">
+  .BIBLIOGRAPHY_HEADER_CENTER
   .HEADER_CENTER "Bibliography"
 </span>
 or
 <span class="pre-in-pp" style="margin-top: -.5em;">
+  .BIBLIOGRAPHY_FOOTER_CENTER
   .FOOTER_CENTER "Bibliography"
 </span>
-prior to invoking <kbd>.BIBLIOGRAPHY</kbd>.
+prior to invoking <kbd>.BIBLIOGRAPHY</kbd>.  
 </p>
 
-<div class="box-tip">
+<div class="box-important">
 <p class="tip">
-<span class="note">Note:</span>
-If your
-<a href="docprocessing.html#doctype">DOCTYPE</a>
-is <kbd>CHAPTER</kbd>, you must also invoke
-<a href="#endnotes-hdrftr-center">BIBLIOGRAPHY_HEADER_CENTER</a>
-for the BIBLIOGRAPHY_HEADER_CENTER to appear.
+<span class="important">Important:</span>
+Unless you have a running centre string in your headers or footers, you must invoke
+<span class="pre-in-pp" style="margin-top: -.5em;">
+  <a href="#endnotes-hdrftr-center">.BIBLIOGRAPHY_HEADER_CENTER</a>
+</span>
+or
+<span class="pre-in-pp" style="margin-top: -.5em;">
+  <a href="#endnotes-hdrftr-center">.BIBLIOGRAPHY_FOOTER_CENTER</a>
+</span>
+in order for the centre string to appear, as demonstrated above.
 </p>
 </div>
 
@@ -1879,9 +1887,12 @@ If your
 <a href="docprocessing.html#doctype">DOCTYPE</a>
 is <kbd>CHAPTER</kbd> and you want mom to include a centre
 string in the headers/footers that appear on bibliography
-pages, invoke <kbd>.BIBLIOGRAPHY_HEADER_CENTER</kbd> (or
-<kbd>.BIBLIOGRAPHY_FOOTER_CENTER</kbd>) with no argument.
-Mom&#8217;s default is NOT to print the centre string.
+pages, or if you do not have a running header/footer
+centre string in the body of the document, invoke
+<kbd>.BIBLIOGRAPHY_HEADER_CENTER</kbd> (or
+<kbd>.BIBLIOGRAPHY_FOOTER_CENTER</kbd>) with no argument before
+defining the centre string .  Mom&#8217;s default is NOT to print the
+centre string.
 </p>
 
 <p>
@@ -1929,6 +1940,9 @@ BIBLIOGRAPHY_ALLOWS_FOOTERS OFF.
 <div class="box-macro-args">
 Macro: <b>BIBLIOGRAPHY_STRING</b> <kbd class="macro-args">&quot;&lt;title to print at the top of bibliography pages&gt;&quot;</kbd>
 </div>
+<p class="alias" style="margin-bottom: 0;">
+<i>Alias:</i> <b>BIBLIOGRAPHY_HEADER</b>
+</p>
 
 <p>
 By default, mom prints the word &#8220;BIBLIOGRAPHY&#8221; as a title
@@ -2024,7 +2038,7 @@ Invoked without an argument,
 underneath the bibliography&#8217;s first-page title.  Invoked with the
 argument, <kbd>DOUBLE</kbd>, BIBLIOGRAPHY_STRING_UNDERSCORE will
 double-underscore the title.  Invoked with any other non-numeric
-argument, (eg <kbd>OFF, NO, X</kbd>, etc.) the macro disables
+argument, (e.g., <kbd>OFF, NO, X</kbd>, etc.) the macro disables
 underlining of the title.
 </p>
 
@@ -2064,9 +2078,9 @@ in this way.
 </p>
 
 <p>
-Mom&#8217;s default is to double-underscore the title with 1/2-point
-rules placed 2 points apart and 2 points below the baseline of the
-title.
+By default, mom double-underscores the title if your
+<a href="docprocessing.html#printstyle">PRINTSTYLE</a>
+is <kbd>TYPEWRITE</kbd>.
 </p>
 
 <!-- -BIBLIO_STRING_CAPS- -->
@@ -2115,4 +2129,3 @@ title.
 
 </body>
 </html>
-<!-- vim: fileencoding=utf-8: nomodified: -->
index 7740f77..2cfc463 100644 (file)
@@ -2,14 +2,14 @@
 <!--
 This file is part of groff, the GNU roff type-setting system.
 
-Copyright (C) 2004-2014 Free Software Foundation, Inc.
+Copyright (C) 2004-2018 Free Software Foundation, Inc.
 Written by Peter Schaffter (peter@schaffter.ca).
 
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.3 or
-any later version published by the Free Software Foundation; with the
-Invariant Sections being this comment section, with no Front-Cover
-Texts, and with no Back-Cover Texts.
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
+Texts.
 
 A copy of the Free Documentation License is included as a file called
 FDL in the main directory of the groff source package.
@@ -660,8 +660,6 @@ support and &#8220;Lists of&#8221; are not included.
   TS/TE                   Begin/end a tbl block
 
 <span style="display: block; margin-top: -.75em; margin-bottom: -1em;">*Headers/footers</span>
-  BREAK_QUOTE          Manually break a footnoted quote that crosses
-                         a page/column
   DO_FOOTER            Prints footer (after footnote processing, if any)
   FOOTER_ON_FIRST_PAGE Print footer on first page? (boolean)
   FOOTER               Trap-invoked footer macro
@@ -1124,7 +1122,6 @@ support and &#8220;Lists of&#8221; are not included.
   #BQ_LEAD                   Leading of blockquotes
   #BQUOTE_COLOR              Colorize blockquotes? (boolean)
   #BQUOTE_LN                 Number blockquotes? (boolean)
-  #BROKEN_QUOTE              Did we invoke BREAK_QUOTE? (boolean)
   #CAP_HEIGHT_ADJUST         Tallest cap height of strings LEFT, CENTER,
                                and RIGHT in footers; used to place rule
                                over footer
@@ -2460,9 +2457,6 @@ docelement control macros that end in _COLOR.
 <span style="display: block; margin-top: -1.5em; margin-bottom: -2.5em;">+++These aliases are for convenience, and header/footer management+++</span>
 
   BIBLIOGRAPHY_STRING_UNDERSCORE    BIBLIOGRAPHY_STRING_UNDERLINE
-  BREAK_BLOCKQUOTE                  BREAK_QUOTE
-  BREAK_CITATION                    BREAK_QUOTE
-  BREAK_CITE                        BREAK_QUOTE
   CITATION                          BLOCKQUOTE
   CITE                              BLOCKQUOTE
   COL_BREAK                         COL_NEXT
@@ -2740,4 +2734,3 @@ docelement control macros that end in _COLOR.
 
 </body>
 </html>
-<!-- vim: fileencoding=utf-8: nomodified: -->
index 9ff4050..ff3315f 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2004-2014  Free Software Foundation, Inc. */
+/* Copyright (C) 2004-2018  Free Software Foundation, Inc. */
 /* This file is part of mom, which is part of groff, a free software */
 /* project. */
 
@@ -361,13 +361,13 @@ ul.mini-toc-centered
 .mini-toc-col-1
 {
   float: left ;
-  width: 50% ;
-  margin-left: -6px ;
+  width: 49% ;
+  margin-left: -10px ;
 }
 .mini-toc-col-2
 {
   float: left ;
-  width: 50% ;
+  width: 51% ;
   clear: right ;
 }
 
@@ -376,7 +376,7 @@ ul.mini-toc-centered
 {
   float: left ;
   width: 32% ;
-  height: 52em ;
+  height: 55em ;
   padding-bottom: 9px;
   background-color: #ded4bd ;
   margin-right: 2% ;
@@ -385,7 +385,7 @@ ul.mini-toc-centered
 {
   float: left ;
   width: 32% ;
-  height: 52em ;
+  height: 55em ;
   padding-bottom: 9px;
   background-color: #ded4bd ;
   margin-right: 2% ;
@@ -394,7 +394,7 @@ ul.mini-toc-centered
 {
   float: left ;
   width: 32% ;
-  height: 52em ;
+  height: 55em ;
   padding-bottom: 9px;
   background-color: #ded4bd ;
   margin-bottom: 24px ;
@@ -492,6 +492,7 @@ h3.macro-list
 ul.macro-list
 {
   margin-left: -21px ;
+  padding-right: 12px ;
   list-style-type: none ;
   font-family: arial,sans-serif ;
   margin-top: -1.25em ;
@@ -545,7 +546,7 @@ kbd
 {
   font-family: "Lucida Console",monospace ;
   font-weight: bold ;
-  font-size: 95% ;
+  font-size: 98% ;
 }
 kbd.macro-args
 {
@@ -673,3 +674,14 @@ span.book-title
   font-style: italic ;
 }
 
+dt.params
+{
+  font-style: normal ;
+  font-weight: bold ;
+}
+
+dd.cover-args
+{
+  margin-bottom: .25em; 
+  margin-left: 1.25em ;
+}
index 058b9f8..4872039 100644 (file)
@@ -2,14 +2,14 @@
 <!--
 This file is part of groff, the GNU roff type-setting system.
 
-Copyright (C) 2004-2014 Free Software Foundation, Inc.
+Copyright (C) 2004-2018 Free Software Foundation, Inc.
 Written by Peter Schaffter (peter@schaffter.ca).
 
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.3 or
-any later version published by the Free Software Foundation; with the
-Invariant Sections being this comment section, with no Front-Cover
-Texts, and with no Back-Cover Texts.
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
+Texts.
 
 A copy of the Free Documentation License is included as a file called
 FDL in the main directory of the groff source package.
@@ -124,7 +124,7 @@ the rest of the document is.  Lastly, if
 printing is enabled, the table of contents respects it.  This
 sometimes leads to tables of contents that begin with the wrong
 margins, but the margins can be corrected either by outputting a
-<a href="#blank-page">BLANKPAGE</a>
+<a href="headfootpage.html#blank-pages">BLANKPAGE</a>
 or by using the control macro
 <a href="#toc-rv-switch">TOC_RV_SWITCH</a>.
 </p>
@@ -181,8 +181,8 @@ desirable for others.
 <p>
 When
 <a href="using.html#pdfmom" style="font-weight: bold">pdfmom</a>
-is used to process files with a table of contents, the macro,
-<kbd>.AUTO_RELOCATE_TOC</kbd>, can be used to reposition the table
+is used to process files with a table of contents, the macro
+<kbd>.AUTO_RELOCATE_TOC</kbd> can be used to reposition the table
 of contents to the top of the output document, with the presence
 of a cover and/or title page sensibly taken into account.  Full
 AUTO_RELOCATE_TOC usage is described in the manual,
@@ -200,6 +200,14 @@ of contents yourself with <strong>psselect</strong>, described
 below.
 </p>
 
+<div class="box-tip">
+<p class="tip">
+<span class="note">Note:</span>
+Note: <kbd>.AUTO_RELOCATE_TOC</kbd> must come before
+<a href="docprocessing.html#start">START</a>.
+</p>
+</div>
+
 <h4 id="psselect" class="docs"><span style="text-transform: none">Using psselect to relocate the Table of Contents in PostScript documents</span></h4>
 
 <p>
@@ -276,7 +284,7 @@ output to a new file.
 </div>
 
 <div class="box-macro-args">
-Macro: <b>TOC</b>
+Macro: <b>TOC</b> <kbd class="macro-args">[ INCLUDE_TITLE ]</kbd>
 </div>
 
 <p>
@@ -284,19 +292,28 @@ If you want a table of contents, just place <kbd>.TOC</kbd> at the
 very end of your document.  Mom takes care of the rest.
 </p>
 
+<p>
+The optional argument, <kbd>INCLUDE_TITLE</kbd>, is needed only
+if your document is standalone, i.e. is not collated, for example
+an essay.  By default, mom does not include the title (and page
+number) of standalone documents in the Table of Contents since it
+is largely redundant.  If you would like her to include the title,
+invoke <kbd>.TOC</kbd> with <kbd>INCLUDE_TITLE</kbd>.
+</p>
+
 <div class="box-tip">
 <p class="tip">
-<span class="tip">Tip:</span>
+<span class="note">Note:</span>
 If the last line of text in a document, before <kbd>.TOC</kbd>,
 falls too close to the bottom margin, or if the line is followed
-by a macro likely to cause a linebreak (eg <kbd>.LIST OFF</kbd> or
+by a macro likely to cause a linebreak (e.g., <kbd>.LIST OFF</kbd> or
 <kbd>.IQ</kbd>), mom may output a superfluous blank page before the
 Table of Contents.
 </p>
 
 <p class="tip-bottom">
 In order to avoid this, insert
-<a href="docprocessing.html#EL"><kbd>.EL</kbd></a>
+<a href="typesetting.html#el"><kbd>.EL</kbd></a>
 after the last line of text, before <kbd>.TOC</kbd> and/or any
 concluding macros.  For example,
 <br/>
@@ -342,19 +359,26 @@ themselves (overall family, headers/footers, pagination, etc).
     <li><a href="#paginate-toc">PAGINATE_TOC</a> &ndash; turn table of contents pagination on or off</li>
     <li><a href="#toc-pagenum-style">TOC_PAGENUM_STYLE</a> &ndash; table of contents page numbering style</li>
   </ul></li>
-  <li><a href="#toc-header">Header string (eg &#8220;Contents&#8221;) and style</a>
+  <li><a href="#toc-header">Header string (e.g., &#8220;Contents&#8221;) and style</a>
   <ul style="margin-left: -.5em;">
-    <li><a href="#toc-header-string">Changing the header string</a>
-    <ul style="margin-left: -.5em;">
-      <li><a href="#toc-header-style">Header string control macros and defaults</a></li>
-    </ul></li>
+    <li><a href="#toc-header-string">Changing the header string</a></li>
+    <li><a href="#toc-header-v-pos">Header string vertical placement</a></li>
+    <li><a href="#toc-header-style">Header string control macros and defaults</a></li>
+    </li>
   </ul></li>
   <li><a href="#toc-style">Entries and reference page number style</a>
   <ul style="margin-left: -.5em;">
     <li><a href="#toc-pn">Reference page numbers style control</a></li>
     <li><a href="#toc-title-style">Title entry style control</a></li>
     <li><a href="#toc-entry-style">Heading entry style control</a></li>
-    <li><a href="#toc-entry-numbers">Controlling the numbering of entries</a></li>
+    <li>Numbering table of contents items
+    <ul style="margin-left: -.75em; list-style: disc">
+      <li><a href="#toc-prefix-ch-number">Prefix chapter/section numbers</a>
+      <ul style="margin-left: -.75em;">
+        <li><a href="#toc-pad-ch-numbers">Pad chapter/section numbers</a></li>
+      </ul></li>
+      <li><a href="#toc-entry-numbers">Numbering heading entries</a></li>
+    </ul></li>
   </ul></li>
   <li><a href="#toc-additional">Additional table of contents control macros</a>
   <ul style="margin-left: -.5em;">
@@ -364,6 +388,7 @@ themselves (overall family, headers/footers, pagination, etc).
     <li><a href="#toc-padding">Establish the number of placeholders to leave for page reference numbers</a></li>
     <li><a href="#toc-rv-switch">Switch tables of contents page margins</a></li>
   </ul></li>
+  <li><a href="#toc-more">I still need more!</a></li>
 </ol>
 </div>
 
@@ -500,7 +525,7 @@ immediately prior to <kbd>.TOC</kbd>.
 </p>
 
 <p>
-A special macro,
+A special macro
 <kbd><a href="#toc-pagenum-style">TOC_PAGENUM_STYLE</a></kbd>
 controls the style of table of contents pagination (ie the actual
 table of contents pages' numbers, not the page number references of
@@ -580,22 +605,50 @@ example
 </span>
 </p>
 
+<h5 id="toc-header-v-pos" class="docs" style="margin-top: 1em; text-transform: none;">Header string vertical placement</h5>
+
+<div id="toc-header-v-pos" class="box-macro-args" style="margin-top: 1em">
+Macro: <b>TOC_HEADER_V_POS</b> <kbd class="macro-args">&lt;distance from top of page&gt;</kbd>
+</div>
+<p class="requires">
+&bull;&nbsp;Requires a <a href="definitions.html#unitofmeasure">unit of measure</a>
+</p>
+
+<p>
+Normally, the TOC header string falls at the same vertical position
+as the
+<a href="definitions.html#docheader">docheader</a>.
+If you&#8217;d like it to fall at a different position, say 2 inches, use
+<br/>
+<span class="pre-in-pp">
+  .TOC_HEADER_V_POS 2i
+</span>
+</p>
+
 <h5 id="toc-header-style" class="docs" style="margin-top: -.5em; text-transform: none;">Header string control macros and defaults</h5>
 
 <div class="defaults-container" style="margin-top: 1em; padding-bottom: 8px;">
 <p class="defaults" style="padding-top: 6px;">
 See
 <a href="docelement.html#control-macro-args">Arguments to the control macros</a>.
+<br/>
+The following TOC_HEADER control macros may also be
+<a href="#grouping">grouped</a>
+using TOC_HEADER_STYLE.
 </p>
 <span class="pre defaults">
 .TOC_HEADER_FAMILY  default = prevailing doc family 
 .TOC_HEADER_FONT    default = bold
 .TOC_HEADER_SIZE    default = +4
 .TOC_HEADER_QUAD    default = left
+.TOC_HEADER_COLOR   default = black
+.TOC_HEADER_CAPS       default = no
+.TOC_HEADER_SMALLCAPS  default = no
+.TOC_HEADER_UNDERSCORE default = none
 </span>
 </div>
 
-<h4 id="toc-style" class="docs" style="margin-top: -1em;">4. Entries and reference page numbers style</h4>
+<h4 id="toc-style" class="docs" style="margin-top: -.5em;">4. Entries and reference page numbers style</h4>
 
 <p>
 &#8220;Entries&#8221; refers to the hierarchical arrangement of
@@ -609,7 +662,7 @@ documents) and headings as they appear in the table of contents:
         Head level 3
           ...
 </span>
-The style for title entries (eg chapter numbers or titles) and
+The style for title entries (e.g., chapter numbers or titles) and
 heading levels is controlled by
 <a href="#toc-title-style">TOC_TITLE_STYLE </a>
 and
@@ -679,7 +732,8 @@ The default is zero.
 
 <p>
 <kbd>CAPS</kbd> instructs mom to capitalize title entries.
-Capitalization may be enabled or disabled on a per-title basis.
+Capitalization may be enabled or disabled on a per-entry-level
+basis.
 </p>
 
 <p>
@@ -773,6 +827,75 @@ or
 </span>
 </p>
 
+<!-- -PREFIX_CHAPTER_NUMBERS- -->
+
+<div id="toc-prefix-ch-number" class="box-macro-args">
+Macro: <b>TOC_PREFIX_CHAPTER_NUMBER</b> <kbd class="macro-args">&lt;none&gt; &lt;anything&gt;</kbd>
+</div>
+<p class="alias" style="margin-bottom: 0;">
+<i>Alias:</i> <b>TOC_PREFIX_SECTION_NUMBER</b>
+</p>
+
+<p>
+By default, mom does not prefix a chapter number to chapters or
+section titles in the table of contents.  If you would like her to
+do so, invoke <kbd>TOC_PREFIX_CHAPTER_NUMBER</kbd> without an
+argument before
+<a href="docprocessing.html#start">START</a>.
+</p>
+
+<p>
+You may subsequently disable the prefixing of chapter numbers by
+supplying the macro with any argument (<b>OFF, QUIT, Q, X</b>...)
+prior to the <kbd>START</kbd> that comes after
+<a href="rectoverso.html#collate">COLLATE</a>.
+</p>
+
+<p>
+This macro is useful you want chapters numbered in the table of
+contents but the chapters themselves are identified by title only.
+It can be used with both
+<a href="docprocessing.html#doctype">DOCTYPE CHAPTER</a>
+and
+<a href="docprocessing.html#doctype">DOCTYPE DEFAULT</a>.
+The alias <b>TOC_PREFIX_SECTION_NUMBER</b> may be preferable
+in the latter case.
+</p>
+
+<!-- -PAD_TOC_CHAPTER_NUMBERS- -->
+
+<div id="toc-pad-ch-numbers" class="box-macro-args">
+Macro: <b>PAD_TOC_CHAPTER_NUMBERS</b> <kbd class="macro-args">&lt;number of chapters&gt;</kbd>
+</div>
+<p class="alias" style="margin-bottom: 0;">
+<i>Alias:</i> <b>PAD_TOC_SECTION_NUMBERS</b>
+</p>
+
+
+<p>
+If the number of chapters or major sections
+(<a href="docprocessing.html#doctype">DOCTYPE DEFAULT</a>)
+exceeds 9, you can have mom pad the numbers so the rightmost
+numerals of the chapter numbers align.  Simply invoke
+<kbd>PAD_TOC_CHAPTER_NUMBERS</kbd> with the number of chapters in
+the document.
+</p>
+
+<p>
+Without padding:
+<br/>
+<span class="pre-in-pp">
+  9. Chapter Title.....................100
+  10. Chapter Title....................123
+</span>
+With padding:
+<br/>
+<span class="pre-in-pp">
+   9. Chapter Title....................100
+  10. Chapter Title....................123
+</span>
+</p>
+
 <!-- -TOC_ENTRY_NUMBERS- -->
 
 <div id="toc-entry-numbers" class="box-macro-args">
@@ -830,10 +953,13 @@ completely.
 <div class="box-tip">
 <p class="tip">
 <span class="note">Note:</span>
-<kbd>.TOC_ENTRY_NUMBER TRUNCATE</kbd> removes the numbering
-associated with title entries if
+<kbd>.TOC_ENTRY_NUMBERS TRUNCATE</kbd> removes the numbering
+associated with table of contents chapter or section titles
+when
 <a href="docelement.html#prefix-chapter-number">PREFIX_CHAPTER_NUMBER</a>
-is enabled.
+is enabled.  To enable the numbering of chapter or section titles
+in this circumstance, use
+<a href="#toc-prefix-ch-number"><kbd>TOC_PREFIX_CHAPTER_NUMBER</kbd></a>.
 </p>
 </div>
 
@@ -981,7 +1107,60 @@ page when you want an odd, or vice versa.
 
 <p>
 The same result can be accomplished by outputting a
-<a href="#blank-page">BLANKPAGE</a>.
+<a href="headfootpage.html#blank-pages">BLANKPAGE</a>.
+</p>
+
+<h4 id="toc-more" class="docs" style="margin-top: -.5em;">6. I still need more!</h4>
+
+<p>
+If there is some aspect of Table of Contents formatting for which
+no TOC control macros are provided, mom has a special
+<a href="definitions.html#toggle">toggle macro</a>
+to help out: TOC_PAGE_SETTINGS.
+</p>
+
+<p>
+TOC_PAGE_SETTINGS allows you to enter extra formatting changes for
+the Table of Contents as if it were simply another collated section
+or chapter of a document.  Because it&#8217;s a toggle macro,
+invoking it by itself begins collecting your formatting directives,
+and invoking it with any argument (<b>OFF, QUIT, END</b>...) stops
+the collection.
+</p>
+
+<p>
+TOC_PAGE_SETTINGS is special in that the formatting commands
+contained within it must be preceded by <kbd>\!</kbd> (that&#8217;s
+backslash-exclamation point).
+</p>
+
+<p id="toc-page-settings-example">
+For example, say you want to redesign the default page headers for
+the Tables of Contents so that it only contains the document title
+on the left and &#8220;Contents&#8221; in italics on the right, and
+furthermore adjust the footer margin and footer gap, this is how
+you&#8217;d do it:
+<br/>
+<span class="pre-in-pp">
+  .TOC_PAGE_SETTINGS
+  \!.HEADER_RECTO L "^\E*[$TITLE]#\*[IT]Contents\*[PREV]^"
+  \!.FOOTER_MARGIN 3P
+  \!.B_MARGIN 6P+3p
+  .TOC_PAGE_SETTINGS END
+</span>
+(For an explanation of why the example uses <kbd>.B_MARGIN</kbd> to
+set/change the footer gap, see
+<a href="headfootpage.html#gap-note">here</a>.)
+</p>
+
+<p>
+TOC_PAGE_SETTINGS can be put in the stylesheet section of a document
+(ie after
+<a href="docprocessing.html#printstyle">PRINTSTYLE</a>
+and before
+<a href="docprocessing.html#start">START</a>)
+or invoked just before
+<a href="#toc">TOC</a>.
 </p>
 
 <div class="rule-long"><hr/></div>
@@ -1001,5 +1180,3 @@ The same result can be accomplished by outputting a
 
 </body>
 </html>
-<!-- vim: fileencoding=utf-8: nomodified: -->
-
index da3b6b0..eb1df1d 100644 (file)
@@ -2,14 +2,14 @@
 <!--
 This file is part of groff, the GNU roff type-setting system.
 
-Copyright (C) 2004-2014 Free Software Foundation, Inc.
+Copyright (C) 2004-2018 Free Software Foundation, Inc.
 Written by Peter Schaffter (peter@schaffter.ca).
 
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.3 or
-any later version published by the Free Software Foundation; with the
-Invariant Sections being this comment section, with no Front-Cover
-Texts, and with no Back-Cover Texts.
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
+Texts.
 
 A copy of the Free Documentation License is included as a file called
 FDL in the main directory of the groff source package.
@@ -20,7 +20,7 @@ FDL in the main directory of the groff source package.
 
 <head>
   <meta http-equiv="content-type" content="text/html;charset=utf-8"/>
-  <title>Mom, version 2.1-c_1 -- Table of Contents</title>
+  <title>Mom, version 2.4 -- Table of Contents</title>
   <link rel="stylesheet" type="text/css" href="stylesheet.css" />
 </head>
 
@@ -31,7 +31,7 @@ FDL in the main directory of the groff source package.
 <div class="page">
 
   <div class="version">
-    mom, version 2.1-c_1
+    mom, version 2.4
   </div>
 
 <h1 class="toc" style="margin-top: 9px;">Table of Contents</h1>
@@ -47,6 +47,7 @@ FDL in the main directory of the groff source package.
     <a href="#full-toc">Full Table of Contents</a>.
     <br/>
     If you've been using mom for a while, you may prefer the
+    <br/>
     <a href="macrolist.html#top">Quick Reference Guide</a>.
     </p>
 
@@ -94,6 +95,7 @@ FDL in the main directory of the groff source package.
     <ul class="toc" style="margin-left: 3em;">
       <li><a href="#doc-proc">Introduction to document processing</a></li>
       <li><a href="#doc-defaults">Document defaults</a></li>
+      <li><a href="#vert-ws">Vertical whitespace management</a></li>
       <li><a href="#prelim">Preliminary document setup</a></li>
       <li><a href="#typemacdoc">Behaviour of the typesetting macros during document processing</a></li>
       <li><a href="#tags">The document element tags</a> &ndash; headings, paragraphs, quotes, footnotes, etc.</li>
@@ -263,9 +265,10 @@ FDL in the main directory of the groff source package.
   <ul class="toc">
     <li><a href="docprocessing.html#docprocessing-intro">5.1 Introduction to document processing</a></li>
     <li><a id="doc-defaults" href="docprocessing.html#defaults">5.2 Document defaults</a> &ndash; papersize, margins, etc.
-      <ul>
-        <li><a href="docprocessing.html#leading-note">5.2.1 Important note on leading/spacing and bottom margins</a></li>
-        <li><a href="docprocessing.html#shim">5.2.1 The SHIM macro</a> &ndash; flexible spacer to keep document leading back on track</li>
+      <li><a id="vert-ws" href="docprocessing.html#vertical-whitespace-management">5.3 Vertical whitespace management</a>
+        <ul>
+        <li><a id="typemacdoc" href="docprocessing.html#shim">5.3.1 SHIM</a></li>
+        <li><a href="docprocessing.html#flex">5.3.2 FLEX</a>
       </ul></li>
     <li><a id="prelim" href="docprocessing.html#setup" class="highlight">5.3 PRELIMINARY DOCUMENT SETUP</a>
       <ul>
@@ -288,7 +291,10 @@ FDL in the main directory of the groff source package.
           </ul></li>
         <li><a href="docprocessing.html#docstyle-macros">5.3.3 The docstyle macros</a> &ndash; base templates; what kind of document you're creating, how you want it to look overall
           <ul>
-            <li><a href="docprocessing.html#doctype">5.3.3.1 DOCTYPE</a> &ndash; the kind of document</li>
+            <li><a href="docprocessing.html#doctype">5.3.3.1 DOCTYPE</a> &ndash; the kind of document (default, chapter, named, letter)
+            <ul style="list-style-type: circle">
+              <li><a href="docprocessing.html#slides">DOCTYPE SLIDES</a></li>
+            </ul></li>
             <li><a href="docprocessing.html#printstyle">5.3.3.2 PRINTSTYLE</a> &ndash; typeset or &#8220;typewritten, double-spaced&#8221;</li>
             <li><a href="docprocessing.html#copystyle">5.3.3.3 COPYSTYLE</a> &ndash; draft or final</li>
           </ul></li>
@@ -310,20 +316,14 @@ FDL in the main directory of the groff source package.
               </ul></li>
             <li><a href="docprocessing.html#doc-lead-adjust">5.3.7.2  DOC_LEAD_ADJUST</a> &ndash; adjust document
                 <a href="definitions.html#leading">leading</a>
-                to fill pages
-            <ul class="fourth-level">
-              <li>&ndash; <a href="docprocessing.html#shim">5.3.6.7.1 SHIM</a> &ndash; flexible spacer to keep document leading back on track</li>
-            </ul></li>
-        </ul></li>
+                to fill pages</li>
+            </ul>
       <li><a href="docprocessing.html#style-after-start">5.3.8 Changing basic type and formatting parameters <span style="font-style: italic">after</span> START</a>
         <ul>
           <li><a id="typemacdoc" href="docprocessing.html#behaviour">5.3.8.1 Behaviour of the typesetting macros during document processing</a></li>
           <li><a href="docprocessing.html#intro-doc-param">5.3.8.2 Post-START global style-change macros</a>
-          <ul class="fourth-level">
-            <li>&ndash; <a href="docprocessing.html#index-doc-param">Macro list</a></li>
           </ul></li>
         </ul></li>
-      </ul></li>
       <li><a id="tags" class="highlight" href="docelement.html#top">5.4 THE DOCUMENT ELEMENT TAGS</a>
         <ul>
           <li><a href="docelement.html#docelement-intro">5.4.1 Introduction to the document element tags</a>
@@ -457,5 +457,3 @@ FDL in the main directory of the groff source package.
 
 </body>
 </html>
-
-<!-- vim: fileencoding=utf-8: nomodified: -->
index 3a8722a..fc71165 100644 (file)
@@ -2,14 +2,14 @@
 <!--
 This file is part of groff, the GNU roff type-setting system.
 
-Copyright (C) 2004-2014 Free Software Foundation, Inc.
+Copyright (C) 2004-2018 Free Software Foundation, Inc.
 Written by Peter Schaffter (peter@schaffter.ca).
 
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.3 or
-any later version published by the Free Software Foundation; with the
-Invariant Sections being this comment section, with no Front-Cover
-Texts, and with no Back-Cover Texts.
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
+Texts.
 
 A copy of the Free Documentation License is included as a file called
 FDL in the main directory of the groff source package.
@@ -109,9 +109,9 @@ FDL in the main directory of the groff source package.
     <li class="item"><a href="inlines.html#index-inlines">List of inline escapes</a>
     </li>
   </ul></li>
-  <li class="list-head"><a href="color.html#colored-text-intro">Coloured text</a>
+  <li class="list-head"><a href="color.html">Coloured text</a>
   <ul class="no-enumerator">
-    <li class="item"><a href="color.html#colored-text-macros">Macro list</a></li>
+    <li class="item"><a href="color.html#index-color">Macro list</a></li>
   </ul></li>
 </ul>
 </div>
@@ -197,7 +197,7 @@ have to worry about them.
 
 <p>
 Mom documents processed directly with <strong>groff</strong>, or with
-<strong>pdfroff</strong>, or with <strong>pdfmom -Tps</strong>, require
+<strong>pdfroff</strong>, or with <strong>pdfmom&nbsp;&#8209;Tps</strong>, require
 that the papersize be given on the command line as well if the
 papersize is different from the default on your system.  You can
 verify&mdash;or change&mdash;the default papersize by inspecting the
@@ -236,7 +236,7 @@ or
 or
 <a href="#page">PAGE</a>),
 you must include <kbd>-P-p&lt;papersize&gt;</kbd> on whichever
-command line you use, eg
+command line you use, e.g.,
 <br/>
 <span class="pre-in-pp">
   pdfmom -Tps -mom -P-plegal
@@ -504,7 +504,7 @@ and right margin, like this:
 That way, you don&#8217;t have to worry about calculating the line
 length.  On the other hand, if you know the line length for a patch
 of type should be 17 picas and 3 points, entering the line length
-with LL is much easier than calculating the right margin, eg
+with LL is much easier than calculating the right margin, e.g.,
 <br/>
 <span class="pre-in-pp">
   .LL 17P+3p
@@ -1106,7 +1106,7 @@ is measured in points.  Therefore, to change the type size to, say,
 <span class="pre-in-pp">
   .PT_SIZE 11
 </span>
-Point sizes may be fractional (e 10.25 or 12.5).
+Point sizes may be fractional (e.g., 10.25 or 12.5).
 </p>
 
 <p>
@@ -1170,7 +1170,7 @@ Macro: <b>LS</b> <kbd class="macro-args">&lt;distance between lines&gt;</kbd>
 <p>
 LS (Line Space) takes one argument: the distance you want, typically
 in points, from baseline to baseline of type.  The argument may be
-fractional (eg 12.25 or 14.5).  Like PT_SIZE, LS does not require
+fractional (e.g., 12.25 or 14.5).  Like PT_SIZE, LS does not require
 a unit of measure, since
 <a href="definitions.html#leading">leading</a>
 is most often given in points.  Therefore, to set the linespace to
@@ -1241,7 +1241,7 @@ requests automatically update the linespacing by the autolead amount.
 Used in this way, AUTOLEAD does not require a unit of measure;
 points is assumed.  However, you may use an alternate unit of
 measure by appending it to the argument.  The argument may be a
-decimal fraction (eg .5 or 2.75).
+decimal fraction (e.g., .5 or 2.75).
 </p>
 
 <p>
@@ -1348,7 +1348,7 @@ groff&#8217;s
 <a href="inlines.html#inline-stringwidth-groff"><kbd>\w</kbd></a>
 escape as the argument to LL, like this:
 <br/>
-<span class="pre=in-pp">
+<span class="pre-in-pp">
   .LL +\w'.'u
 </span>
 The above example increases the current line length by the width of
@@ -1359,8 +1359,8 @@ a period.  Notice that you must append the
 
 <div class="box-tip">
 <p class="tip">
-<span class="note">Note:</span> The right margin macro,
-<a href="#r-margin">(R_MARGIN)</a>,
+<span class="note">Note:</span> The right margin macro
+<a href="#r-margin">(R_MARGIN)</a>
 can also be used to set line length.
 </p>
 </div>
@@ -1663,11 +1663,6 @@ with the
 <span style="font-style: normal;">
 <kbd>\c</kbd> inline escape.
 </span>
-See
-<span style="font-style: normal;">
-<a href="#el-notes">NOTES</a>,
-</span>
-below.
 </p>
 
 <p style="margin-top: -.5em">
@@ -2175,7 +2170,7 @@ explicit hyphens (ie the actual hyphen character) do not.
 
 <p>
 HY MARGIN sets the amount of room allowed at the end of a line
-before hyphenation is tripped (eg if there&#8217;s only 6 points
+before hyphenation is tripped (e.g., if there&#8217;s only 6 points
 left at the end of a line, groff won&#8217;t try to hyphenate the
 next word).  HY MARGIN only applies if you&#8217;re using
 <a href="#quad">QUAD</a>,
@@ -2325,7 +2320,7 @@ Macro: <b>RW</b> <kbd class="macro-args">&lt;amount of whitespace reduction betw
 
 <p>
 RW (<span style="text-decoration: underline;">R</span>educe <span style="text-decoration: underline;">W</span>hitespace)
-and its corresponding macro,
+and its corresponding macro
 EW (<span style="text-decoration: underline;">E</span>xpand <span style="text-decoration: underline;">W</span>hitespace),
 allow you to tighten (or loosen)
 <a href="definitions.html#outputline">output lines</a>
@@ -2499,7 +2494,7 @@ Macro: <b>KERN</b> <kbd class="macro-args">toggle</kbd>
 <p>
 By itself (ie with no argument), KERN turns automatic pairwise
 <a href="definitions.html#kern">kerning</a>
-on.  With any argument (eg OFF, Q, X), pairwise kerning is turned
+on.  With any argument (e.g., OFF, Q, X), pairwise kerning is turned
 off.
 </p>
 
@@ -2590,6 +2585,11 @@ large patches of type in a faked font look typographically cheap.
     <li><a href="#extend">EXTEND</a> &ndash; percentage for pseudo-extended type</li>
     <li><a href="#ext-inline">\*[EXT]</a> &ndash; inline escape for pseudo-extending</li>
   </ul></li>
+  <li>Smallcaps
+  <ul style="list-style: none; margin-left: -1em;">
+    <li><a href="#smallcaps">SMALLCAPS</a> &ndash; enable smallcaps</li>
+    <li><a href="#smallcaps-style">SMALLCAPS_STYLE</a> &ndash; size, weight, and width of smallcaps</li>
+  </ul></li>
 </ul>
 </div>
 
@@ -2933,10 +2933,7 @@ embedded in text lines, like this:
 </span>
 <kbd>\*[EXT]</kbd> remains in effect until you turn it off with
 <kbd>\*[EXTX]</kbd>.
-</p>
-
-<div class="box-important">
-<p class="tip">
+</p> <div class="box-important"> <p class="tip">
 <span class="important">IMPORTANT:</span> You must turn
 <kbd>\*[EXT]</kbd> off before making any changes to the point size
 of your type, either via the
@@ -2958,6 +2955,108 @@ mom ignores <kbd>\*[EXT]</kbd> requests.
 </p>
 </div>
 
+<!-- SMALLCAPS -->
+
+<div class="macro-id-overline">
+<h3 id="smallcaps" class="macro-id">Smallcaps</h3>
+</div>
+
+<div class="box-macro-args">
+Macro: <b>SMALLCAPS</b> <kbd class="macro-args">&lt;toggle&gt;</kbd>
+</div>
+
+<p>
+To begin setting type in pseudo-smallcaps, simply invoke
+<kbd>.SMALLCAPS</kbd>.  When you no longer want them, invoke
+<kbd>SMALLCAPS&nbsp;OFF</kbd> (or <kbd>END</kbd>, <kbd>STOP</kbd>,
+<kbd>DONE</kbd>, etc).  If you are currently in a
+<a href="definitions.html#filled">no-fill mode</a>,
+(i.e. <kbd>.LEFT</kbd>, <kbd>.CENTER</kbd>, or <kbd>.RIGHT</kbd>)
+and you want the smallcaps to continue on the same line,
+append a <kbd>\c</kbd> to the line, like this
+<br/>
+<span class="pre-in-pp">
+  A line of type\c
+  .SMALLCAPS
+  with a few words in smallcaps.
+  .SMALLCAPS OFF
+</span>
+The line preceding <kbd>.SMALLCAPS OFF</kbd> should also have a
+<kbd>\c</kbd> appended to it if you wish it to continue unbroken.
+</p>
+
+<div class="box-tip">
+<p class="tip-top">
+<span class="note">Note:</span>
+SMALLCAPS does not have an inline equivalent to
+<a href="inlines.html#uc-lc"><kbd>\*[UC]</kbd> / <kbd>\*[LC]</kbd></a>.
+Furthermore, if you&#8217;re using the
+<a href="docprocessing.html#docprocessing">document processing macros</a>
+with
+<a href="docprocessing.html#printstyle">PRINTSTYLE TYPEWRITE</a>,
+mom ignores SMALLCAPS.
+</p>
+
+<p class="tip-bottom">
+Additionally, be aware that no automatic
+<a href="definitions.html#kern">kerning</a>
+takes place while pseudo-smallcaps are in effect.
+</p>
+</div>
+
+<div class="macro-id-overline">
+<h3 id="smallcaps-style" class="macro-id">Set size, weight, and width of smallcaps</h3>
+</div>
+
+<div class="box-macro-args">
+Macro: <b>SMALLCAPS_STYLE</b> <kbd class="macro-args">SIZE &lt;percentage&gt; WEIGHT_ADJ &lt;percentage&gt; EXTEND &lt;percentage&gt;</kbd>
+</div>
+
+<p>
+True smallcaps are not a font effect, but, like designer cuts of
+bold, condensed, and extended, actual fonts provided with some
+families.  It is highly recommended that you acquire real smallcaps
+fonts rather than relying on mom's pseudo version.
+</p>
+
+<p>
+To achieve a reasonable facsimile of designer-cut smallcaps fonts,
+mom needs to know the percentage of regular caps at a given point
+size by which to reduce the small caps.  To make adjustments for
+the difference in weight and width of the smaller caps, she also
+needs to know by how much to embolden (&#8220;fatten&#8221;) the
+smallcaps, and by how much to increase their width.
+</p>
+
+<p>
+All three arguments to SMALLCAPS_STYLE reflect a
+percentage of the point size in effect when
+<a href="#smallcaps">SMALLCAPS</a>
+is invoked.  Mom&#8217;s defaults for pseudo-smallcaps are:
+<br/>
+<span class="pre-in-pp">
+  SIZE       = 74%
+  WEIGHT_ADJ = .3%
+  EXTEND     = 5%
+</span>
+To change any or all of the defaults, you might enter
+<br/>
+<span class="pre-in-pp">
+  .SMALLCAPS_STYLE SIZE 80 WEIGHT_ADJ .25 EXTEND 3
+</span>
+or, more readably,
+<br/>
+<span class="pre-in-pp">
+  .SMALLCAPS_STYLE 
+  SIZE 80 \
+  WEIGHT_ADJ .25 \
+  EXTEND 3
+</span>
+Note that you do not have to give SMALLCAPS_STYLE all three
+arguments, and that the arguments may be entered in any order.  Any
+arguments you omit will remain at their former value.
+</p>
+
 <div class="rule-short" style="margin-bottom: 24px;"><hr/></div>
 
 <!-- ==================================================================== -->
@@ -3692,7 +3791,7 @@ string tab markers.
 </span>
 String tab 1 begins at the start of the line and ends after the word
 &#8220;time&#8221;.  String tab 2 starts at &#8220;good&#8221; and
-ends after &#8220;men&#8221;.  Inline escapes (eg font or point
+ends after &#8220;men&#8221;.  Inline escapes (e.g., font or point
 size changes, or horizontal movements, including
 <a href="goodies.html#pad">padding</a>)
 are taken into account when mom determines the position and length
@@ -4083,6 +4182,20 @@ macro in the
 </p>
 </div>
 
+<div class="box-tip">
+<p class="tip">
+<span class="note">Additional Note:</span>
+Do not use multi-columns with
+<a href="docprocessing.html#slide">DOCTYPE SLIDES</a>
+because MCX uses the lowest line on the page to determine column
+depth.  Owing to the fact that both headers and footers are printed
+prior to slides receiving text, MCX will always go to the
+footer position.  If you need functionality similar to MCO/MCX, use
+the groff requests <kbd>.mk</kbd> and <kbd>.rt</kbd>.  See
+<kbd>info groff --index-search=mk</kbd>.
+</p>
+</div>
+
 <div id="index-multicolumns" class="macro-list-container">
 <h3 class="macro-list">Multi-columns macros</h3>
 
@@ -4430,8 +4543,8 @@ indents text by the width of the word &#8220;margarine&#8221;.
 </p>
 
 <p>
-With no argument, IL indents by its last active value.  See the
-<a href="#indents-explanation">brief explanation of how mom handles indents</a>
+With no argument, IL after an ILX indents by its last active value.  See the
+<a href="#indents-handling">explanation of how mom handles indents</a>
 for more details.
 </p>
 
@@ -4482,8 +4595,8 @@ indents text by the width of the word &#8220;jello&#8221;.
 </p>
 
 <p>
-With no argument, IR indents by its last active value.  See the
-<a href="#indents-explanation">brief explanation of how mom handles indents</a>
+With no argument, IR after an IRX indents by its last active value.  See the
+<a href="#indents-handling">explanation of how mom handles indents</a>
 for more details.
 </p>
 
@@ -4507,7 +4620,7 @@ automatically turns off IB.
 </div>
 
 <div class="box-macro-args">
-Macro: <b>IB</b> <kbd class="macro-args">[ &lt;left measure&gt; &lt;right measure&gt; ]</kbd>
+Macro: <b>IB</b> <kbd class="macro-args">[ &lt;indent-1&gt; &lt;indent-2&gt; ]</kbd>
 </div>
 <p class="requires">
 &bull;&nbsp;The optional arguments require a <a href="definitions.html#unitofmeasure">unit of measure</a>
@@ -4519,18 +4632,20 @@ time.
 </p>
 
 <p>
-At its first invocation, you must supply a measure for both indents;
-at subsequent invocations when you wish to supply a measure, both
-must be given again.  As with IL and IR, the measures are added to
-the values previously passed to the macro.  Hence, if you wish to
-change just one of the values, you must give an argument of zero to
-the other.
+If you supply only an <kbd>indent-1</kbd> argument, the argument is
+the amount to indent from both the left and right margins.  If you
+give both <kbd>indent-1</kbd> and <kbd>indent-2</kbd>, the first is
+the indent from the left margin and the second is the indent from
+the right margin.
 </p>
 
 <p>
-A word of advice: If you need to manipulate left and right
-indents separately, use a combination of IL and IR instead of IB.
-You&#8217;ll save yourself a lot of grief.
+As with IL and IR, the measures are added to the values previously
+passed to the macro.  Hence, if you wish to change just one of the
+values, you must give an argument of zero to the other.  (A word of
+advice: If you need to manipulate left and right indents separately,
+use a combination of IL and IR instead of IB.  You&#8217;ll save
+yourself a lot of grief.)
 </p>
 
 <p>
@@ -4549,9 +4664,9 @@ and right indents by the width of &#8220;jello&#8221;.
 </p>
 
 <p>
-Like IL and IR, IB with no argument indents by its last active
-values.  See the
-<a href="#indents-explanation">brief explanation of how mom handles indents</a>
+Like IL and IR, IB with no argument after an IBX indents by its
+last active values.  See the
+<a href="#indents-handling">explanation of how mom handles indents</a>
 for more details.
 </p>
 
@@ -4827,4 +4942,3 @@ quits and clears the values for all indent styles at once.
 
 </body>
 </html>
-<!-- vim: fileencoding=utf-8: nomodified: -->
index 341efcd..851d637 100644 (file)
@@ -2,14 +2,14 @@
 <!--
 This file is part of groff, the GNU roff type-setting system.
 
-Copyright (C) 2004-2014 Free Software Foundation, Inc.
+Copyright (C) 2004-2018 Free Software Foundation, Inc.
 Written by Peter Schaffter (peter@schaffter.ca).
 
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.3 or
-any later version published by the Free Software Foundation; with the
-Invariant Sections being this comment section, with no Front-Cover
-Texts, and with no Back-Cover Texts.
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
+Texts.
 
 A copy of the Free Documentation License is included as a file called
 FDL in the main directory of the groff source package.
@@ -154,7 +154,7 @@ flyer for your lost dog, the following apply.
   <li>
     <a href="definitions.html#stringargument">String arguments</a>,
     in the sense of this manual, must be surrounded by double-quotes
-    (eg <kbd>"text"</kbd>).  Multiple
+    (e.g., <kbd>"text"</kbd>).  Multiple
     string arguments are separated from each other by spaces (with
     each argument surrounded by double-quotes).
     <br/>
@@ -210,7 +210,7 @@ You may also, if you wish, add a comment to the end of a line with
 <h2 id="viewing" class="docs">Processing and viewing documents</h2>
 
 <p>
-The most basic command line usage for processing a file formatted
+The most basic command-line usage for processing a file formatted
 with the mom macros is
 <br/>
 <span class="pre-in-pp">
@@ -256,7 +256,7 @@ it:
   pdfmom filename.mom &gt; filename.pdf
 </span>
 <strong>pdfmom</strong> is a wrapper around groff, and accepts all
-groff's command line options as listed in the groff manpage.
+groff's command-line options as listed in the groff manpage.
 Full usage is explained in the manual,
 <a href="http://www.schaffter.ca/mom/pdf/mom-pdf.pdf"><span class="book-title">Producing PDFs with groff and mom</span></a>.
 </p>
@@ -286,12 +286,12 @@ metadata, notably the document window title set with PDF_TITLE.
 
 <p>
 Most PDF viewers have a &#8220;Watch File&#8221; option, which
-automaticaly updates a displayed document whenever there's a change.
-This is useful when preparing documents that require judgment calls.
-I recommend creating a keymapping in your text editor that both
-saves the mom file and processes it with <strong>pdfmom</strong>.
-The displayed PDF then automatically reflects whatever changes you
-save to the mom file.
+automaticaly updates a displayed document whenever there&#8217;s
+a change.  This is useful when preparing documents that require
+judgment calls.  I recommend creating a keymapping in your
+text editor that both saves the mom file and processes it with
+<strong>pdfmom</strong>.  The displayed PDF then automatically
+reflects whatever changes you save to the mom file.
 </p>
 
 <div class="rule-long"><hr/></div>
@@ -311,4 +311,3 @@ save to the mom file.
 
 </body>
 </html>
-<!-- vim: fileencoding=utf-8: nomodified: -->
index ce50adc..d3908e2 100644 (file)
@@ -2,14 +2,14 @@
 <!--
 This file is part of groff, the GNU roff type-setting system.
 
-Copyright (C) 2004-2014 Free Software Foundation, Inc.
+Copyright (C) 2004-2018 Free Software Foundation, Inc.
 Written by Peter Schaffter (peter@schaffter.ca).
 
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.3 or
-any later version published by the Free Software Foundation; with the
-Invariant Sections being this comment section, with no Front-Cover
-Texts, and with no Back-Cover Texts.
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
+Texts.
 
 A copy of the Free Documentation License is included as a file called
 FDL in the main directory of the groff source package.
@@ -54,8 +54,9 @@ FDL in the main directory of the groff source package.
     <li><a href="#headings">2.3 Headings</a></li>
     <li><a href="#margin-notes">2.4 Margin notes</a></li>
     <li><a href="#floats">2.5 Floats</a></li>
-    <li><a href="#table-of-contents">2.5 Table of contents</a></li>
+    <li><a href="#table-of-contents">2.5 Tables of contents</a></li>
   </ul></li>
+  <li><a href="#v2.1-changes">Version 2.1 changes</a></li>
   <li><a href="#pdfmom">The <strong>pdfmom</strong> wrapper around groff</a></li>
   <li><a href="#install-font">The <strong>install-font.sh</strong> script</a></li>
 </ol>
@@ -101,7 +102,7 @@ if their 1.x defaults are not desired.
 In conjunction with the changes to nested heads, Table of Contents
 generation has also been rethought.  Greater flexibility in the
 inclusion of toc entry numbering been added.  Like nested heads,
-there&#8217;s a new macro, <kbd>TOC_ENTRY_STYLE</kbd>, that permits
+there&#8217;s a new macro <kbd>TOC_ENTRY_STYLE</kbd> that permits
 styling of each level in the toc hierarchy separately.  The default
 overall layout has also been significantly improved, achieving a
 level of typographical elegance formerly lacking.  Best of all, the
@@ -149,7 +150,7 @@ has been added to the documentation.  The file,
 <strong>mom-pdf.pdf</strong> can be found in
 <br/>
 <span class="pre-in-pp">
-  /usr/local/share/doc/groff-1.21/pdf/
+  /usr/local/share/doc/groff-&lt;version&gt;/pdf/
 </span>
 or
 <br/>
@@ -168,7 +169,7 @@ integral part of the present documentation.  In addition, the mom
 source file for the manual can be found in
 <br/>
 <span class="pre-in-pp">
-  /usr/local/share/doc/groff-1.21/examples/mom
+  /usr/local/share/doc/groff-&lt;version&gt;/examples/mom
 </span>
 or
 <br/>
@@ -213,7 +214,7 @@ The 1.x macros
 <span class="pre-in-pp">
   HEAD SUBHEAD SUBSUBHEAD
 </span>
-are now deprecated and have been replaced by a single macro,
+are now deprecated and have been replaced by a single macro
 <br/>
 <span class="pre-in-pp">
   <a href="docelement.html#heading"><kbd>HEADING &lt;n&gt;</kbd></a>
@@ -228,7 +229,7 @@ destination.
 </p>
 
 <p>
-Styling of headings is managed by a single macro,
+Styling of headings is managed by a single macro
 <br/>
 <span class="pre-in-pp">
   <a href="docelement.html#heading"><kbd>HEADING_STYLE &lt;n&gt;</kbd></a>
@@ -276,7 +277,7 @@ top of the next page.  An <kbd>ADJUST</kbd> argument to FLOAT allows
 for optical centering.
 </p>
 
-<h3 id="table-of-contents" class="docs">2.6. Table of contents</h3>
+<h3 id="table-of-contents" class="docs">2.6. Tables of contents</h3>
 
 <p>
 The default look of the Table of Contents has been overhauled to
@@ -321,7 +322,70 @@ the mom source file is processed with
 <a href="pdfmom"><strong>pdfmom</strong></a>.
 </p>
 
-<h2 id="pdfmom" class="docs">3. pdfmom</h2>
+<h2 id="v2.1-changes" class="docs">3. Version 2.1 changes</h2>
+
+<p>
+Version 2.1 adds these features:
+</p>
+<ul style="margin-top: -.5em; width: 90%">
+  <li>expansion of cover, docheader, page header, and heading
+  control macros to permit caps, smallcaps, color, and
+  underscoring</li>
+  <li>the ability to style every element appearing in docheaders and
+  automatically-generated cover/title pages separately</li>
+  <li>macros to place images on cover/title pages</li>
+  <li>a new macro COVERTEXT that allows adding text (e.g. an
+  Abstract) to automatically-generated cover/title pages or to
+  create cover/title pages entirely by hand</li>
+  <li>separate indent control macros for QUOTES and BLOCKQUOTES</li>
+  <li>pseudo-smallcaps, including a control macro to choose the
+  size, weight, and width of the small caps</li>
+  <li>new &lt;element&gt;_STYLE macros that allow setting
+  parameters for &lt;element&gt; with a single macro using
+  keyword/value pairs</li>
+</ul>
+
+<p>
+The following changes have been made:
+</p>
+
+<ul style="margin-top: -.5em; width: 90%">
+  <li>MISC_AUTOLEAD (including COVER_MISC_AUTOLEAD and
+  DOC_COVER_MISC_AUTOLEAD) has been replaced in favour of MISC_LEAD,
+  which takes an absolute leading value, rather than one derived
+  from the point size</li>
+  <li>COVER_UNDERLINE and DOC_COVER_UNDERLINE have been
+  removed in favour of COVER_DOCTYPE_UNDERLINE and
+  DOC_COVER_DOCTYPE_UNDERLINE</li>
+  <li>DOCTYPE NAMED &lt;string&gt; no longer accepts a color
+  argument; setting the color for &lt;string&gt; is accomplished with
+  DOCTYPE_COLOR &lt;color&gt;; in addition, the string now has a
+  complete set of control macros</li>
+  <li>default underscoring of the DOCTYPE NAMED string has been
+  removed, both in the docheader and on cover/title pages</li>
+  <li>no cover/title page data persists, however formatting for the
+  elements on them does</li>
+</ul>
+
+<h2 id="v2.1-changes" class="docs">3. Version 2.2 changes</h2>
+
+<p>
+Version 2.2 adds these features:
+</p>
+<ul style="margin-top: -.5em; width: 90%">
+  <li>flex-spacing, an alternative to mom&#8217;s default shimming
+  policy; flex-spacing balances vertical whitespace on the page by
+  distributing any excess equally at sensible points so that running
+  text always fills the page to the bottom margin (see
+  <a href="docprocessing.html#vertical-whitespace-management">
+    vertical whitespace management</a>
+  </li>
+  <li>improvements to auto-labelling, such that it is now possible
+  to link symbollically to auto-labelled preprocessor material and
+  PDF images</li>
+</ul>
+
+<h2 id="pdfmom" class="docs">4. pdfmom</h2>
 
 <p>
 Deri James has provided <strong>pdfmom</strong>, a wrapper around
@@ -339,7 +403,7 @@ recognizes PDF images that have been embedded with
 <a href="images.html#pdf-image"><kbd>PDF_IMAGE</kbd></a>.
 </p>
 
-<h2 id="install-font" class="docs">4. install-font.sh</h2>
+<h2 id="install-font" class="docs">5. install-font.sh</h2>
 
 <p>
 A bash script, <strong>install-font.sh</strong>, has been posted at the
@@ -376,4 +440,3 @@ desired.
 
 </body>
 </html>
-<!-- vim: fileencoding=utf-8: nomodified: -->
index 762c848..ee31e69 100644 (file)
@@ -1,8 +1,7 @@
-.\" -*- nroff -*-      om.tmac
 .ig
 Mom -- a typesetting/document-processing macro set for groff.
 
-Copyright (C) 2002-2014  Free Software Foundation, Inc.
+Copyright (C) 2002-2018  Free Software Foundation, Inc.
  Written by Peter Schaffter <peter@schaffter.ca>
  PDF integration contributed by Deri James <deri.james@chuzzlewit.co.uk>
 
@@ -21,16 +20,16 @@ for more details.
 You should have received a copy of the GNU General Public License
 along with this program. If not, see <http://www.gnu.org/licenses/>.
 
-Version 2.1-c_1
----------------
-Antoine de St-Exupéry asserted that elegance in engineering is
+Version 2.4
+-----------
+Antoine de St-Exupéry asserted that elegance in engineering is
 achieved not when there is nothing left to add, but when there is
 nothing left to take away.
 
 By those standards, mom is a Rube Goldberg contraption.  She was
 created over the years while groff, and my understanding of it,
 changed and evolved.  However, I'm a firm believer in "if it ain't
-broke, don't fix it."  Version 2.0 removes some of the redundancies
+broke, don't fix it."  Version 2.0 removed some of the redundancies
 and cruft, but mom still needs some nip and tuck.
 
 "<anything>" in the description of arguments that can be passed
@@ -40,20 +39,29 @@ Thanks to everyone who has contributed suggestions and patches,
 and to those whose GPL'd work has been plundered.  Special thanks
 to Werner Lemberg (margin notes), Tadziu Hoffman (underlining),
 Deri James (pdf integration), Robin Haberkorn (tbl integration, eqn
-extentions, and float management).
+extensions, and float management).
 ..
 .\" %beginstrip%
 \#
 \# ====================================================================
 \#
-\# Check which version of groff is being run
-.if (\n[.x]\n[.y] < 118) \
-.   ab [mom]: You need GNU troff version 1.18 or higher to run this version of mom.
+.if \n(.C \
+.   ab [mom]: The groff mom macros do not work in compatibility mode.
 \# Check that GNU troff is being run
 .if !\n[.g]=1 \
 .   ab [mom]: The mom macros require that you be running GNU troff.
-.if \n[.C] \
-.   ab [mom]: The groff mom macros do not work in compatibility mode.
+\# Check which version of groff is being run
+.if (\n[.x]\n[.y] < 118) \
+.   ab [mom]: You need GNU troff version 1.18 or higher to run this version of mom.
+\# Mom version
+.ds version 2.4
+.if dVERSION \{\
+.   ab [mom]: Version \*[version]
+.\}
+\# Groff revision
+.ds short_revision \n[.Y]
+.substring short_revision 0 0
+\#
 \# Add supplementary styles
 .sty \n[.fp] UL      \"  Ultra Light
 .sty \n[.fp] ULI     \"  Ultra Light Italic
@@ -155,7 +163,7 @@ extentions, and float management).
 .sty \n[.fp] UBLI    \"  Ultra Black Italic
 .sty \n[.fp] UBLCD   \"  Ultra Black Condensed
 .sty \n[.fp] UBLCDI  \"  Ultra Black Condensed Italic
-.sty \n[.fp] UBLEX   \"  Ultra Black Exteneded
+.sty \n[.fp] UBLEX   \"  Ultra Black Extended
 .sty \n[.fp] UBLEXI  \"  Ultra Black Extended Italic
 \#
 .sty \n[.fp] SC      \"  Small Caps Roman
@@ -214,6 +222,10 @@ end
 .if n .color 0
 .nr TOC.RELOCATE 0 \" TOC.RELOCATE is off by default
 .ds PDFHREF.TEXTCOL.DEFAULT 0.0 0.3 0.9
+.nr PDFHREF.VIEW.LEADING.C 3i
+.nr PDFHREF.VIEW.LEADING.T 1i
+.nr PDFHREF.VIEW.LEADING 0
+.nr PDFHREF.VIEW.LEADING.H \n[PDFHREF.VIEW.LEADING]
 \#
 \# ====================================================================
 \#
@@ -256,6 +268,13 @@ end
 .nr #L_MARGIN \n[.o]  \" Tabs, etc require #L_MARGIN
 .cflags 4 /\[en]      \" So slash and en-dashes get broken
 \#
+\# 'END' is used throughout as the 2nd arg to 'MAC' (alias of .de)
+\# Defining it as a macro here prevents groff from complaining
+\# that 'END' isn't defined.
+\#
+.de END
+..
+\#
 \# ====================================================================
 \#
 \# +++PAGE LAYOUT+++
@@ -332,7 +351,6 @@ end
 \#
 .MAC T_MARGIN END
 .    nr #T_MARGIN (\\$1)
-.    nr #TOP 1
 .    if !\\n[#DOCS] .sp |\\n[#T_MARGIN]u-1v
 .    wh 0i DO_T_MARGIN
 .END
@@ -404,10 +422,8 @@ end
 \#
 .MAC DO_T_MARGIN END
 .    ev T_MARGIN
-.    nr #TOP 1
 .    sp |\\n[#T_MARGIN]u-1v
 .    ev
-.    sp -\\n[#T_MARGIN_LEAD_ADJ]u
 .END
 \#
 \# DO_B_MARGIN
@@ -421,8 +437,12 @@ end
 \#
 .MAC DO_B_MARGIN END
 .    nr #T_MARGIN_LEAD_ADJ \\n[#LEAD]-12000
-'    bp
+.    ev B_MARGIN
 .    if !n .nop \X'ps: exec 0 setlinejoin'\X'ps: exec 0 setlinecap'
+.    ie \\n[#DOCS] \
+.       if !\\n[#NEWPAGE] .bp
+.    el .bp
+.    ev
 .END
 \#
 \# NEWPAGE
@@ -436,33 +456,39 @@ end
 \#   breaks to a new page.
 \#
 .MAC NEWPAGE END
-.    if \\n[.vpt]=0 .vpt
-.    ie \\n[#NO_BREAK] \{\
-'       br
-.       rr #NO_BREAK
+.    br
+.    if \\n[#DOC_TYPE]=5 \{\
+.       if \\n[#NUM_ARGS]>0 \
+.       pdftransition PAGE \\$1
 .    \}
-.    el .br
-.    nr #NEWPAGE 1
-.    nr @TOP 1
-.    ie \\n[#B_MARGIN_SET]=1 \{\
-.       ie !\\n[#DOCS]=1 \{\
-.          ev NP
-.          DO_B_MARGIN
-.          ev
-.       \}
-.       el \{\
-.          if \\n[#COLUMNS]=1 .nr #COL_NUM \\n[#NUM_COLS]
-.          ie !\\n[#FN_DEPTH] \{\
-.             ch FN_OVERFLOW_TRAP
-.             DO_FOOTER
-.             wh -(\\n[#FN_OVERFLOW_TRAP_POS]u) FN_OVERFLOW_TRAP
-.          \}
-.          el .DO_B_MARGIN
+.    if !\\n[defer] \{\
+.       nr #NEWPAGE 1
+.       rr tbl*no-print-header
+.    \}
+.    ie !\\n[#DOCS]=1 \
+.       if \\n[#B_MARGIN_SET]=1 .DO_B_MARGIN
+.    el \{\
+.       if \\n[#COLUMNS]=1 .nr #COL_NUM \\n[#NUM_COLS]
+.       if !\\n[#FN_DEPTH] \{\
+.          ch FN_OVERFLOW_TRAP
+.          nr #RESET_FN_OVERFLOW_TRAP 1
 .       \}
 .    \}
-.    el 'bp
+.    if dPDF.EXPORT \
+.       if \\n[#FLEX_ACTIVE] \
+.          if !\\n[#NO_FLEX] \
+.             tm .ds pre-newpage-\\n% \\n%@\\n[#COL_NUM]
+.    if (\\n[@TOP]=0):(\\n[#END_COVER]=1) \
+.       bp
+.    rr #END_COVER
+.    if \\n[#RESET_FN_OVERFLOW_TRAP] \{\
+.       wh -\\n[#FN_OVERFLOW_TRAP_POS]u FN_OVERFLOW_TRAP
+.       rr #RESET_FN_OVERFLOW_TRAP_POS
+.   \}
 .END
 \#
+.ALIAS NEWSLIDE NEWPAGE
+\#
 \# =====================================================================
 \#
 \# +++GENERAL STYLE MACROS+++
@@ -529,6 +555,8 @@ end
 \#   to $FAMILY.
 \#
 .MAC FAMILY END
+.    if '\\n[.ev]'COVER_TEXT' .ds $SAVED_DOC_FAM \\n[.fam]
+.    if \\n[#COLLATE] .rm $SAVED_DOC_FAM
 .    ds $FAMILY \\$1
 .    if \\n[#PRINT_STYLE]=1 \{\
 .       fam \\*[$TYPEWRITER_FAM]
@@ -538,10 +566,10 @@ end
 .       fam \\*[$TYPEWRITER_FAM]
 .       return
 .    \}
-.    if (\\n[.x]\\n[.y]\\n[.Y] >= 1192) .ds $SAVED_STYLE \\n[.sty]
+.    if (\\n[.x]\\n[.y]\\*[short_revision] >= 1192) .ds $SAVED_STYLE \\n[.sty]
 .    ft 0
 .    fam \\*[$FAMILY]
-.    if (\\n[.x]\\n[.y]\\n[.Y] >= 1192) \{\
+.    if (\\n[.x]\\n[.y]\\*[short_revision] >= 1192) \{\
 .       ft \\*[$SAVED_STYLE]
 .       if !F\\n[.fn] .ft 0
 .    \}
@@ -578,21 +606,21 @@ end
 .    \}
 .    ft 0
 .    ft \\*[$FONT]
-.    if (\\n[.x]\\n[.y]\\n[.Y] >= 1192) \{\
+.    if (\\n[.x]\\n[.y]\\*[short_revision] >= 1192) \{\
 .       if '\\n[.sty]'' \{\
 .          if !F\\n[.fn] \{\
 .             if !S\\*[$FONT] \{\
 .                tm1 "[mom]: Font style "\\*[$FONT]" at line \\n[.c] has not been registered.
 .                ie \\n[#ABORT_FT_ERRORS]=0 \
 .                   tm1 "       Continuing to process using fallback font.
-.                el .ab Aborting '\\n[.F]' at \\$0, line \\n[.c].
+.                el .ab [mom]: Aborting '\\n[.F]' at \\$0, line \\n[.c].
 .             \}
 .             if \\n[.f]=0 \{\
 .                tm1 "[mom]: Either font style "\\*[$FONT]" at line \\n[.c] does not exist in family "\\n[.fam]",
 .                tm1 "       or family "\\n[.fam]" has not been installed.
 .                ie \\n[#ABORT_FT_ERRORS]=0 \
 .                   tm1 "       Continuing to process using fallback font.
-.                el .ab Aborting '\\n[.F]' at \\$0, line \\n[.c].
+.                el .ab [mom]: Aborting '\\n[.F]' at \\$0, line \\n[.c].
 .             \}
 .          \}
 .       \}
@@ -655,7 +683,6 @@ end
 \#
 .MAC LS END
 .    br
-.    nr #OLD_LEAD \\n[.v]
 .    if \\n[#PRINT_STYLE]=1 .return
 .    if \\n[#IGNORE] .return
 .    if \\n[#AUTO_LEAD] \{\
@@ -664,13 +691,8 @@ end
 .       rr #AUTOLEADING
 .    \}
 .    vs \\$1
-.    if \\n[.t]<\\n[.v] 'bp
-.    if \\n[#TOP] \{\
-.       nr #TOP_BASELINE_ADJ \\n[.v]-\\n[#OLD_LEAD]
-.       sp -\\n[#TOP_BASELINE_ADJ]u
-.       rr #TOP
-.       rr #TOP_BASELINE_ADJ
-.    \}
+.    if !\\n[#START] \
+.       if \\n[.t]<\\n[.v] 'bp
 .END
 \#
 \# AUTOLEAD
@@ -691,7 +713,6 @@ end
 .    if \\n[#PRINT_STYLE]=1 .return
 .    if \\n[#IGNORE] .return
 .    nr #AUTO_LEAD 1 \" autolead on or off
-.    nr #OLD_LEAD \\n[.v]
 .    nr #AUTOLEAD_VALUE (p;\\$1) \" arg x 1000
 .    ie '\\$2'FACTOR' \{\
 .       if !\\n[#DOCS] .nr #DOC_AUTOLEAD_FACTOR \\n[#AUTOLEAD_VALUE] \" save for DOC_PT_SIZE
@@ -699,12 +720,6 @@ end
 .    \}
 .    el .nr #AUTOLEADING \\n[#AUTOLEAD_VALUE]
 .    vs \\n[.ps]u+\\n[#AUTOLEADING]u
-.    if \\n[#TOP] \{\
-.       nr #TOP_BASELINE_ADJ \\n[.v]-\\n[#OLD_LEAD]
-.       sp -\\n[#TOP_BASELINE_ADJ]u
-.       rr #TOP
-.       rr #TOP_BASELINE_ADJ
-.    \}
 .END
 \#
 \# STRINGS FOR INLINE CONTROL OF GENERAL TYPE STYLE
@@ -754,26 +769,21 @@ end
 \# KERN_UNIT macro.
 \#
 .MAC KERN_UNIT END
-.    ie '\\$1'DEFAULT' .nr #KERN_UNIT 36
-.    el .nr #KERN_UNIT \\$1
+.    ie '\\$1'DEFAULT' .ds $KERN_UNIT 36
+.    el .ds $KERN_UNIT \\$1
 .END
 \#
-.nr #KERN_UNIT 36
-.ds BU   \h'-(\En[#PT_SIZE]u/\n[#KERN_UNIT]u*\\$1u)'
-.ds FU   \h'(\En[#PT_SIZE]u/\n[#KERN_UNIT]u*\\$1u)'
+.ds $KERN_UNIT 36
+.ds BU   \h'-(\En[.ps]u/\E*[$KERN_UNIT]u*\\$1u)'
+.ds FU   \h'(\En[.ps]u/\E*[$KERN_UNIT]u*\\$1u)'
 \#
 \# Initialize strings for pre-1.1.3c-style BU and FU
 \#
 .nr #LOOP 0 1
 .while \n+[#LOOP]<37 \{\
-.   ds BU\n[#LOOP]  \h'-(\En[#PT_SIZE]u/\n[#KERN_UNIT]u*\n[#LOOP]u)'
-.\}
-\#
-.nr #LOOP 0 1
-.while \n+[#LOOP]<37 \{\
-.   ds FU\n[#LOOP] \h'(\En[#PT_SIZE]u/\n[#KERN_UNIT]u*\n[#LOOP]u)'
+.   ds BU\n[#LOOP] \h'-(\En[.ps]u/\E*[$KERN_UNIT]u*\n[#LOOP]u)'
+.   ds FU\n[#LOOP] \h'(\En[.ps]u/\E*[$KERN_UNIT]u*\n[#LOOP]u)'
 .\}
-.rr #LOOP
 \#
 \# Horizontal movements
 \# --------------------
@@ -1060,17 +1070,16 @@ end
 \#   Requires a unit of measure.
 \#
 .MAC ALD END
-.    br
-.    if \\n[nl]=0 .nr #TOP 1
 .    if '\\$0'ALD' \{\
-.       nr #ALD (\\$1)
+.       nr #ALD (u;\\$1)
 .       sp \\n[#ALD]u
 .    \}
 .    if '\\$0'ADD_SPACE' \{\
 .       vpt 0
-.       nr #ALD (\\$1)
+.       nr #ALD (u;\\$1)
 .       rs
 .       nop \&
+.       br
 .       sp |\\n[#T_MARGIN]u-1v+\\n[#ALD]u
 .       rr @TOP
 .       nr #SPACE_ADDED 1
@@ -1092,7 +1101,7 @@ end
 \#
 .MAC RLD END
 .    br
-.    nr #RLD (\\$1)
+.    nr #RLD (u;\\$1)
 .    sp -\\n[#RLD]u
 .END
 \#
@@ -1446,7 +1455,11 @@ end
 \#   mode is enabled.
 \#
 .MAC QUAD END
+.    br
+.    if \\n[#COVERTEXT_PP] \
+.       ds $RESTORE_DOC_QUAD \\*[$QUAD_VALUE]
 .    ds $QUAD_VALUE \\$1
+.    substring $QUAD_VALUE 0 0
 .    if \\n[#TAB_ACTIVE]=0 \{\
 .       nr #QUAD 1
 .       ds $RESTORE_QUAD_VALUE \\*[$QUAD_VALUE]
@@ -1457,50 +1470,30 @@ end
 .       nr #JUSTIFY 0
 .       ad l
 .    \}
-.    if '\\*[$QUAD_VALUE]'LEFT' \{\
-.       nr #JUSTIFY 0
-.       ad l
-.    \}
 .    if '\\*[$QUAD_VALUE]'R' \{\
 .       nr #JUSTIFY 0
 .       ad r
 .    \}
-.    if '\\*[$QUAD_VALUE]'RIGHT' \{\
-.       nr #JUSTIFY 0
-.       ad r
-.    \}
 .    if '\\*[$QUAD_VALUE]'C' \{\
 .       nr #JUSTIFY 0
 .       ad c
 .    \}
-.    if '\\*[$QUAD_VALUE]'CENTER' \{\
-.       nr #JUSTIFY 0
-.       ad c
-.    \}
-.    if '\\*[$QUAD_VALUE]'CENTRE' \{\
-.       nr #JUSTIFY 0
-.       ad c
-.    \}
 .    if '\\*[$QUAD_VALUE]'J' \{\
 .       nr #JUSTIFY 1
 .       ad b
 .    \}
-.    if '\\*[$QUAD_VALUE]'JUSTIFY' \{\
-.       nr #JUSTIFY 1
-.       ad b
-.    \}
 .    nr #PSEUDO_FILL 0
 .END
 \#
 \# LEFT, RIGHT, AND CENTER
 \# -----------------------
 \# The purpose of these macros is to allow the user to enter lines
-\# of text that will be quadded LRC having to stick .BR or .br
-\# between lines.  For the sake of consistency, all three appear to
-\# behave similarly (from the point of view of the user), although
-\# the underlying primitives don't.  For this reason, LEFT, RIGHT,
-\# and CENTER must be followed by .QUAD [L R C J] or .JUSTIFY to
-\# restore text to fill mode.
+\# of text that will be quadded LRC without having to stick .BR
+\# or .br between lines.  For the sake of consistency, all three
+\# appear to behave similarly (from the point of view of the user),
+\# although the underlying primitives don't.  For this reason, LEFT,
+\# RIGHT, and CENTER must be followed by .QUAD [L R C J] or .JUSTIFY
+\# to restore text to fill mode.
 \#
 \# LEFT
 \# ----
@@ -1552,7 +1545,7 @@ end
 \# *Argument:
 \#   <none>
 \# *Function:
-\#   Turns fill on.  Allows user to center lines without
+\#   Turns fill off.  Allows user to center lines without
 \#   requiring the .BR or .br macro.
 \# *Notes:
 \#   Lines that exceed the current LL will be broken, with the excess
@@ -1568,6 +1561,31 @@ end
 .    nr #PSEUDO_FILL 1
 .END
 \#
+\# CENTER BLOCKS OF TYPE
+\# ---------------------
+\# *Arguments:
+\#   <none> | <anything>
+\# *Function:
+\#   Allows users to centre blocks of type on the page without
+\#   altering their quad.
+\#
+.MAC CENTER_BLOCK END
+.    br
+.    ie !\\n[.$] .di CENTER*BLOCK
+.    el \{\
+.       di
+.       in \\n[.l]u-\\n[dl]u/2u
+.       if \\n[.u] .nr #FILLED 1
+.       nf
+.       CENTER*BLOCK
+.       if \\n[#FILLED] .fi
+.       rr #FILLED
+.       in
+.    \}
+.END
+\#
+.ALIAS CENTRE_BLOCK CENTER_BLOCK
+\#
 \# =====================================================================
 \#
 \# +++TABS+++
@@ -1590,7 +1608,7 @@ end
 \# Setting up string tabs is a two-step procedure.  First, the user
 \# enters an input line in which s/he wants to mark off string tabs.
 \# The beginning of a tab is marked with \*[STn], where "n" is
-\# the desired number of the tab.  The end of the the tab is marked
+\# the desired number of the tab.  The end of the tab is marked
 \# with \*[STnX].  All ST's must have a matching STX.  String tabs
 \# may be nested.
 \#
@@ -1702,7 +1720,7 @@ end
 .        nr #TAB_OFFSET\\*[$CURRENT_TAB] \\n[#TAB_OFFSET]
 .        nr #ST_OFFSET \\n[#TAB_OFFSET]
 .        ie !'\\\\n[.z]'' \
-\!.         po \\\\n[#L_MARGIN]u+\\\\n[#TAB_OFFSET\\\\*[$CURRENT_TAB]]u
+\!.         po \\\\\\\\n[#L_MARGIN]u+\\\\n[#TAB_OFFSET\\\\*[$CURRENT_TAB]]u
 .        el \
 .           po \\\\n[#L_MARGIN]u+\\\\n[#TAB_OFFSET\\\\*[$CURRENT_TAB]]u
 .        ll \\n[#TAB_LENGTH]u
@@ -1746,7 +1764,7 @@ end
 \# *Argument:
 \#   <none>
 \# *Function:
-\#   Automagically moves to TAB<n+1> on the same line as the last
+\#   Automatically moves to TAB<n+1> on the same line as the last
 \#   line of the previous tab.
 \# *Notes:
 \#   The \c inline must be appended to the end of input lines when in
@@ -1754,11 +1772,11 @@ end
 \#
 .MAC TN END
 .    nr #TN 1
-.    TRAP OFF
+.    vpt 0
 .    sp -1v
 .    nr #NEXT_TAB \\n[#CURRENT_TAB]+1
 .    TAB\\n[#NEXT_TAB]
-.    TRAP
+.    vpt
 .END
 \#
 \# An inline escape to accomplish the same thing.  Preferable, since
@@ -1794,7 +1812,14 @@ end
 .       rm $ST\\n[#LOOP]_FILL
 .    \}
 .    rr #LOOP
-.    po \\n[#L_MARGIN]u
+.    ie '\\n[.z]'FLOAT*DIV' \{\
+\!.     po \\n[#L_MARGIN]u
+\!.     ll \\n[#L_LENGTH]u
+.    \}
+.    el \{\
+.       po \\n[#L_MARGIN]u
+.       ll \\n[#L_LENGTH]u
+.    \}
 .    ll \\n[#L_LENGTH]u
 .    ta \\n[.l]u
 .    ie \\n[#QUAD] \{\
@@ -1881,15 +1906,38 @@ end
 \#
 \# Pre-define xcolors black and white
 \#
-.ds black \m[black]
-.ds BLACK \m[black]
-.ds white \m[white]
-.ds WHITE \m[WHITE]
+.ds black   \m[black]
+.ds BLACK   \m[black]
+.ds white   \m[white]
+.ds WHITE   \m[white]
+.ds default black
 \#
 \# =====================================================================
 \#
 \# +++MISCELLANEOUS USEFUL MACROS AND STRINGS+++
 \#
+.nr _w 500
+.nr _d 1250
+\#
+\# These string are used for creating aliases within loops that set
+\# style for doc-cover, cover, and docheader items.  They're defined
+\# here because underscoring needs them.
+\#
+.ds TITLE_TYPE_1  ATTRIBUTE
+.ds TITLE_TYPE_2  AUTHOR
+.ds TITLE_TYPE_3  CHAPTER
+.ds TITLE_TYPE_4  CHAPTER_TITLE
+.ds TITLE_TYPE_5  COVERTITLE
+.ds TITLE_TYPE_6  DOCTITLE
+.ds TITLE_TYPE_7  DOCTYPE
+.ds TITLE_TYPE_8  DOC_COVERTITLE
+.ds TITLE_TYPE_9  SUBTITLE
+.ds TITLE_TYPE_10 TITLE
+.ds TITLE_TYPE_11 MISC
+.ds TITLE_TYPE_12 COPYRIGHT
+.ds TITLE_TYPE_13 DOC_COVER_TITLE
+.ds TITLE_TYPE_14 COVER_TITLE
+\#
 \# UNDERLINE
 \# ---------
 \# *Arguments:
@@ -1900,9 +1948,6 @@ end
 \#   Defaults for rule weight and distance from baseline are below.
 \#   UNDERLINE_SPECS lets user change them
 \#
-.nr _w 500
-.nr _d 1250
-\#
 .MAC UNDERLINE_SPECS END
 .    ie \B'\\$1' .nr _w (u;\\$1)
 .    el \{\
@@ -1938,7 +1983,7 @@ end
 .    \}
 .    el \{\
 .       nr #UNDERLINE_ON 0
-.       SS \\*[$SAVED_SS_VAR]
+.       if !'\\*[$SAVED_SS_VAR]'' .SS \\*[$SAVED_SS_VAR]
 .       ie !n .nop \X'ps: exec decornone'\c
 .       el .ul 0
 .    \}
@@ -2033,57 +2078,32 @@ end
 .    nr #SAVED_UNDERSCORE_WEIGHT     \\n[#UNDERSCORE_WEIGHT]
 .    nr #SAVED_UNDERSCORE_WEIGHT_ADJ \\n[#UNDERSCORE_WEIGHT_ADJ]
 .    ds $SAVED_UNDERSCORE_GAP        \\*[$UNDERSCORE_GAP]
-.    if \\n[#FROM_BIB_STRING]=1 \{\
-.       nr #UNDERSCORE_WEIGHT        \\n[#BIB_STRING_UNDERLINE_WEIGHT]
-.       nr #UNDERSCORE_WEIGHT_ADJ    \\n[#BIB_STRING_UNDERLINE_WEIGHT_ADJ]
-.       ds $UNDERSCORE_GAP           \\*[$BIB_STRING_UNDERLINE_GAP]
-.    \}
-.    if \\n[#FROM_COVER]=1 \{\
-.       nr #UNDERSCORE_WEIGHT        \\n[#COVER_UNDERLINE_WEIGHT]
-.       nr #UNDERSCORE_WEIGHT_ADJ    \\n[#COVER_UNDERLINE_WEIGHT_ADJ]
-.       ds $UNDERSCORE_GAP           \\*[$COVER_UNDERLINE_GAP]
-.    \}
-.    if \\n[#FROM_DOC_COVER]=1 \{\
-.       nr #UNDERSCORE_WEIGHT        \\n[#DOC_COVER_UNDERLINE_WEIGHT]
-.       nr #UNDERSCORE_WEIGHT_ADJ    \\n[#DOC_COVER_UNDERLINE_WEIGHT_ADJ]
-.       ds $UNDERSCORE_GAP           \\*[$DOC_COVER_UNDERLINE_GAP]
-.    \}
-.    if \\n[#FROM_DOCTYPE]=1 \{\
-.       nr #UNDERSCORE_WEIGHT        \\n[#DOCTYPE_UNDERLINE_WEIGHT]
-.       nr #UNDERSCORE_WEIGHT_ADJ    \\n[#DOCTYPE_UNDERLINE_WEIGHT_ADJ]
-.       ds $UNDERSCORE_GAP           \\*[$DOCTYPE_UNDERLINE_GAP]
-.    \}
-.    if \\n[#FROM_EN_STRING]=1 \{\
-.       nr #UNDERSCORE_WEIGHT        \\n[#EN_STRING_UNDERLINE_WEIGHT]
-.       nr #UNDERSCORE_WEIGHT_ADJ    \\n[#EN_STRING_UNDERLINE_WEIGHT_ADJ]
-.       ds $UNDERSCORE_GAP           \\*[$EN_STRING_UNDERLINE_GAP]
-.    \}
-.    if \\n[#FROM_EN_TITLE]=1 \{\
-.       nr #UNDERSCORE_WEIGHT        \\n[#EN_TITLE_UNDERLINE_WEIGHT]
-.       nr #UNDERSCORE_WEIGHT_ADJ    \\n[#EN_TITLE_UNDERLINE_WEIGHT_ADJ]
-.       ds $UNDERSCORE_GAP           \\*[$EN_TITLE_UNDERLINE_GAP]
-.    \}
-.    ie \\n[#NUM_ARGS]=1 \{\
-.       nr #TEXT_WIDTH \w'\\$1'
-\\$1\
-\D't \\n[#UNDERSCORE_WEIGHT]'\
-\h'-\\n[#TEXT_WIDTH]u-\\n[#UNDERSCORE_WEIGHT]u'\
-\v'+(\\*[$UNDERSCORE_GAP])+\\n[#UNDERSCORE_WEIGHT_ADJ]u'\
+.    if \\n[#NUM_ARGS]=2 \{\
+.       ds $UNDERSCORE_GAP \\$1
+.       shift
+.    \}
+.    if !'\\*[$TITLE_TYPE]'' \{\
+.       nr #UNDERSCORE_WEIGHT     \\n[#\\*[$TITLE_TYPE]_UNDERLINE_WEIGHT]
+.       nr #UNDERSCORE_WEIGHT_ADJ \\n[#\\*[$TITLE_TYPE]_UNDERLINE_WEIGHT_ADJ]
+.       ds $UNDERSCORE_GAP        \\*[$\\*[$TITLE_TYPE]_UNDERLINE_GAP]
+.    \}
+.    nr #TEXT_WIDTH \w'\\$1'
+.    ie \\n[.u]=1 \{\
+\Z'\\$1'\
+\Z'\D't \\n[#UNDERSCORE_WEIGHT]''\
+\v'\\*[$UNDERSCORE_GAP]+\\n[#UNDERSCORE_WEIGHT_ADJ]u'\
 \D'l \\n[#TEXT_WIDTH]u 0'\
-\D't \\n[#RULE_WEIGHT]'\
-\h'-\\n[#RULE_WEIGHT]u'\
-\v'-(\\*[$UNDERSCORE_GAP])-\\n[#UNDERSCORE_WEIGHT_ADJ]u'
+\Z'\D't \\n[#RULE_WEIGHT]''\
+\v'-(\\*[$UNDERSCORE_GAP]+\\n[#UNDERSCORE_WEIGHT_ADJ]u)'\c
+.       nop
 .    \}
 .    el \{\
-.       nr #TEXT_WIDTH \w'\\$2'
-\\$2\
-\h'-\\n[#TEXT_WIDTH]u-\\n[#UNDERSCORE_WEIGHT]u'\
-\v'+(\\$1)+\\n[#UNDERSCORE_WEIGHT_ADJ]u'\
-\D't \\n[#UNDERSCORE_WEIGHT]'\
+\Z'\\$1'\
+\Z'\D't \\n[#UNDERSCORE_WEIGHT]''\
+\v'\\*[$UNDERSCORE_GAP]+\\n[#UNDERSCORE_WEIGHT_ADJ]u'\
 \D'l \\n[#TEXT_WIDTH]u 0'\
-\D't \\n[#RULE_WEIGHT]'\
-\h'-\\n[#RULE_WEIGHT]u'\
-\v'-(\\$1)-\\n[#UNDERSCORE_WEIGHT_ADJ]u'
+\Z'\D't \\n[#RULE_WEIGHT]''\
+\v'-(\\*[$UNDERSCORE_GAP]+\\n[#UNDERSCORE_WEIGHT_ADJ]u)'
 .    \}
 .    nr #UNDERSCORE_WEIGHT     \\n[#SAVED_UNDERSCORE_WEIGHT]
 .    nr #UNDERSCORE_WEIGHT_ADJ \\n[#SAVED_UNDERSCORE_WEIGHT_ADJ]
@@ -2091,6 +2111,7 @@ end
 .    rr #SAVED_UNDERSCORE_WEIGHT
 .    rr #SAVED_UNDERSCORE_WEIGHT_ADJ
 .    rm $SAVED_UNDERSCORE_GAP
+.    rm $TITLE_TYPE
 .END
 \#
 \# DOUBLE UNDERSCORE
@@ -2110,63 +2131,38 @@ end
 .    ds $SAVED_RULE_GAP              \\*[$RULE_GAP]
 .    if \\n[#NUM_ARGS]=2 \{\
 .       ds $UNDERSCORE_GAP \\$1
+.       shift
 .    \}
 .    if \\n[#NUM_ARGS]=3 \{\
 .       ds $UNDERSCORE_GAP \\$1
 .       ds $RULE_GAP \\$2
+.       shift 2
 .    \}
-.    if \\n[#FROM_BIB_STRING] \{\
-.       nr #UNDERSCORE_WEIGHT        \\n[#BIB_STRING_UNDERLINE_WEIGHT]
-.       nr #UNDERSCORE_WEIGHT_ADJ    \\n[#BIB_STRING_UNDERLINE_WEIGHT_ADJ]
-.       ds $UNDERSCORE_GAP           \\*[$BIB_STRING_UNDERLINE_GAP]
-.       ds $RULE_GAP                 \\*[$BIB_STRING_RULE_GAP]
-.    \}
-.    if \\n[#FROM_EN_STRING] \{\
-.       nr #UNDERSCORE_WEIGHT        \\n[#EN_STRING_UNDERLINE_WEIGHT]
-.       nr #UNDERSCORE_WEIGHT_ADJ    \\n[#EN_STRING_UNDERLINE_WEIGHT_ADJ]
-.       ds $UNDERSCORE_GAP           \\*[$EN_STRING_UNDERLINE_GAP]
-.       ds $RULE_GAP                 \\*[$EN_STRING_RULE_GAP]
-.    \}
-.    if \\n[#NUM_ARGS]=1 \{\
-.       nr #TEXT_WIDTH \w'\\$1'
-\\$1\
-\D't \\n[#UNDERSCORE_WEIGHT]'\
-\v'+\\*[$UNDERSCORE_GAP]+\\n[#UNDERSCORE_WEIGHT_ADJ]u'\
-\h'-\\n[#TEXT_WIDTH]u-\\n[#UNDERSCORE_WEIGHT]u'\
-\D'l \\n[#TEXT_WIDTH]u 0'\
-\v'+\\*[$RULE_GAP]+\\n[#UNDERSCORE_WEIGHT]u'\
-\h'-\\n[#TEXT_WIDTH]u'\
-\D'l \\n[#TEXT_WIDTH]u 0'\
-\D't \\n[#RULE_WEIGHT]'\
-\h'-\\n[#RULE_WEIGHT]u'\
-\v'-(\\*[$UNDERSCORE_GAP]+\\*[$RULE_GAP])-(\\n[#UNDERSCORE_WEIGHT]u*2u)'
+.    if !'\\*[$TITLE_TYPE]'' \{\
+.       nr #UNDERSCORE_WEIGHT     \\n[#\\*[$TITLE_TYPE]_UNDERLINE_WEIGHT]
+.       nr #UNDERSCORE_WEIGHT_ADJ \\n[#\\*[$TITLE_TYPE]_UNDERLINE_WEIGHT_ADJ]
+.       ds $UNDERSCORE_GAP        \\*[$\\*[$TITLE_TYPE]_UNDERLINE_GAP]
+.       ds $RULE_GAP              \\*[$\\*[$TITLE_TYPE]_RULE_GAP]
 .    \}
-.    if \\n[#NUM_ARGS]=2 \{\
-.       nr #TEXT_WIDTH \w'\\$2'
-\\$2\
-\D't \\n[#UNDERSCORE_WEIGHT]'\
-\v'+\\*[$UNDERSCORE_GAP]+\\n[#UNDERSCORE_WEIGHT_ADJ]u'\
-\h'-\\n[#TEXT_WIDTH]u-\\n[#UNDERSCORE_WEIGHT]u'\
-\D'l \\n[#TEXT_WIDTH]u 0'\
-\v'+(\\*[$RULE_GAP])+\\n[#UNDERSCORE_WEIGHT]u'\
-\h'-\\n[#TEXT_WIDTH]u'\
+.    nr #TEXT_WIDTH \w'\\$1'
+.    ie \\n[.u]=1 \{\
+\Z'\\$1'\
+\Z'\D't \\n[#UNDERSCORE_WEIGHT]''\
+\v'\\*[$UNDERSCORE_GAP]+\\n[#UNDERSCORE_WEIGHT_ADJ]u'\
+\Z'\D'l \\n[#TEXT_WIDTH]u 0''\
+\v'\\*[$RULE_GAP]+\\n[#UNDERSCORE_WEIGHT]u'\
 \D'l \\n[#TEXT_WIDTH]u 0'\
-\D't \\n[#RULE_WEIGHT]'\
-\h'-\\n[#RULE_WEIGHT]u'\
-\v'-(\\*[$UNDERSCORE_GAP]+\\*[$RULE_GAP])+(\\n[#UNDERSCORE_WEIGHT]u*2u)'
+\Z'\D't \\n[#RULE_WEIGHT]''\
+\v'-(\\*[$UNDERSCORE_GAP]+\\*[$RULE_GAP])-(\\n[#UNDERSCORE_WEIGHT]u*2u)'\c
 .    \}
-.    if \\n[#NUM_ARGS]=3 \{\
-.       nr #TEXT_WIDTH \w'\\$3'
-\\$3\
-\D't \\n[#UNDERSCORE_WEIGHT]'\
-\v'+\\*[$UNDERSCORE_GAP]+\\n[#UNDERSCORE_WEIGHT_ADJ]u'\
-\h'-\\n[#TEXT_WIDTH]u-\\n[#UNDERSCORE_WEIGHT]u'\
-\D'l \\n[#TEXT_WIDTH]u 0'\
-\v'+\\*[$RULE_GAP]+\\n[#UNDERSCORE_WEIGHT]u'\
-\h'-\\n[#TEXT_WIDTH]u'\
+.    el \{\
+\Z'\\$1'\
+\Z'\D't \\n[#UNDERSCORE_WEIGHT]''\
+\v'\\*[$UNDERSCORE_GAP]+\\n[#UNDERSCORE_WEIGHT_ADJ]u'\
+\Z'\D'l \\n[#TEXT_WIDTH]u 0''\
+\v'\\*[$RULE_GAP]+\\n[#UNDERSCORE_WEIGHT]u'\
 \D'l \\n[#TEXT_WIDTH]u 0'\
-\D't \\n[#RULE_WEIGHT]'\
-\h'-\\n[#RULE_WEIGHT]u'\
+\Z'\D't \\n[#RULE_WEIGHT]''\
 \v'-(\\*[$UNDERSCORE_GAP]+\\*[$RULE_GAP])-(\\n[#UNDERSCORE_WEIGHT]u*2u)'
 .    \}
 .    nr #UNDERSCORE_WEIGHT     \\n[#SAVED_UNDERSCORE_WEIGHT]
@@ -2176,21 +2172,31 @@ end
 .    rr #SAVED_UNDERSCORE_WEIGHT_ADJ
 .    rm $SAVED_UNDERSCORE_GAP
 .    rm $SAVED_RULE_GAP
+.    rm $TITLE_TYPE
 .END
 \#
-\# Default underscoring rule gaps
+\# Default underscoring underline and rule gaps
 \#
-.ds $BIB_STRING_UNDERLINE_GAP 2p
 .ds $BIB_STRING_RULE_GAP      2p
-.ds $COVER_UNDERLINE_GAP      2p
-.ds $DOC_COVER_UNDERLINE_GAP  2p
-.ds $DOCTYPE_UNDERLINE_GAP    2p
-.ds $EN_STRING_UNDERLINE_GAP  2p
+.ds $BIB_STRING_UNDERLINE_GAP 2p
 .ds $EN_STRING_RULE_GAP       2p
+.ds $EN_STRING_UNDERLINE_GAP  2p
 .ds $EN_TITLE_UNDERLINE_GAP   2p
 .ds $RULE_GAP                 2p
+.ds $TOC_HEADER_RULE_GAP      2p
+.ds $TOC_HEADER_UNDERLINE_GAP 2p
 .ds $UNDERSCORE_GAP           2p
 \#
+.nr #LOOP 0 1
+.while \n+[#LOOP]<=14 \{\
+. ds $\*[TITLE_TYPE_\n[#LOOP]]_RULE_GAP                2p
+. ds $COVER_\*[TITLE_TYPE_\n[#LOOP]]_RULE_GAP          2p
+. ds $DOC_COVER_\*[TITLE_TYPE_\n[#LOOP]]_RULE_GAP      2p
+. ds $\*[TITLE_TYPE_\n[#LOOP]]_UNDERLINE_GAP           2p
+. ds $COVER_\*[TITLE_TYPE_\n[#LOOP]]_UNDERLINE_GAP     2p
+. ds $DOC_COVER_\*[TITLE_TYPE_\n[#LOOP]]_UNDERLINE_GAP 2p
+.\}
+\#
 \# SUPERSCRIPT
 \# -----------
 \# *Function:
@@ -2400,7 +2406,7 @@ end
 \#
 \# PAD
 \# ---
-\# *Argments:
+\# *Arguments:
 \#   "<string of text with padding markers inserted>"
 \#   "<id of bookmark created by .PDF_BOOKMARK>"
 \# *Function:
@@ -2425,20 +2431,27 @@ end
 .    as $PAD_STRING \Ekp
 .    di PAD_STRING
 .    fam \\*[$FAMILY_FOR_PAD]
-\\f[\\*[$FONT_FOR_PAD]]\\s[\\n[#SIZE_FOR_PAD]u]\\*[$PAD_STRING]
+\f[\\*[$FONT_FOR_PAD]]\s[\\n[#SIZE_FOR_PAD]u]\\*[$PAD_STRING]
 .    br
 .    di
+.    if \\n[#INDENT_ACTIVE] \{\
+.       if \\n[#INDENT_LEFT_ACTIVE]  .ll -\\n[#L_INDENT]u
+.       if \\n[#INDENT_RIGHT_ACTIVE] .ll -\\n[#R_INDENT]u
+.       if \\n[#INDENT_BOTH_ACTIVE]  .ll -\\n[#BR_INDENT]u
+.    \}
 .    char \\*[$PAD_MARKER] \
 \R'#SPACE_TO_END \En[.l]-\En[p]'\R'#PAD_SPACE \En[#SPACE_TO_END]/\En[#PAD_COUNT]'
 .    di PAD_STRING
 .    fam \\*[$FAMILY_FOR_PAD]
-\\f[\\*[$FONT_FOR_PAD]]\\s[\\n[#SIZE_FOR_PAD]u]\\*[$PAD_STRING]
+\f[\\*[$FONT_FOR_PAD]]\s[\\n[#SIZE_FOR_PAD]u]\\*[$PAD_STRING]
 .    br
 .    di
+.    if \\n[#INDENT_ACTIVE] \
+.       if (\\n[#INDENT_LEFT_ACTIVE]=1):(\\n[#INDENT_BOTH_ACTIVE]) .ll
 .    char \\*[$PAD_MARKER] \h'\En[#PAD_SPACE]u'
 .    if \\n[#SILENT] .SILENT
 .    fam \\*[$FAMILY_FOR_PAD]
-\\f[\\*[$FONT_FOR_PAD]]\\s[\\n[#SIZE_FOR_PAD]u]
+\f[\\*[$FONT_FOR_PAD]]\s[\\n[#SIZE_FOR_PAD]u]
 .    ie '\\$2'' .nop \\*[$PAD_STRING]
 .    el \{\
 .       ie !'\\$2'NOBREAK' .pdfhref L -D "\\$2" -E -- \&\\*[$PAD_STRING]
@@ -2455,7 +2468,7 @@ end
 .    rr #PAD_SPACE
 .    rm $PAD_STRING
 .    rm PAD_STRING
-.    rchar #
+.    rchar \\*[$PAD_MARKER]
 .    if '\\$2'NOBREAK' \{\
 .       TRAP OFF
 .       EOL
@@ -2594,11 +2607,13 @@ end
 .          return
 .       \}
 .       if \\n[#PRINT_STYLE]=2 \{\
+.          sp -1
 .          if \\n[#PP_STYLE]=2 \{\
 .             PRINT \\$1\c
 .             return
 .          \}
 .          if \\n[#PP]>1 \{\
+.             if \\n[#PP_INDENT] .ti \\n[#PP_INDENT]u
 .             PRINT \\$1\c
 .             return
 .          \}
@@ -2619,7 +2634,7 @@ end
 .    \}
 .    if '\\$3'COND' .CONDENSE \\$4
 .    if '\\$3'EXT' .EXTEND \\$4
-.    if !r#DC_GUT .nr #DC_GUT (3p)
+.    if !r#DC_GUT .nr #DC_GUT 3p
 .    ie \\n[#DOCS] .ds $RESTORE_FAM \\*[$DOC_FAM]
 .    el .ds $RESTORE_FAM \\n[.fam]
 .    ie \\n[#DOCS] .ds $RESTORE_FT  \\*[$PP_FT]
@@ -2641,9 +2656,13 @@ end
 .    nr #DC_LINES +1
 .    if \\n[#DC_LINES]v>\\n[.t] \{\
 .       nr pgnum \\n%+\\n[#PAGE_NUM_ADJ] 1
-.       tm1 "[mom]: Dropcap at line \\n[.c] does not fit on page \\n[pgnum].
-.       tm1 "       Shifting paragraph to page \\n+[pgnum].
-.       bp
+.       if \\n[#COLUMNS]=1 .ds col-num ", column \\n[#COL_NUM]
+.       tm1 \
+"[mom]: Dropcap at line \\n[.c] does not fit on page \\n[pgnum]\\*[col-num].
+.       tm1 \
+"       Shifting paragraph to next page or column.
+.       ie \\n[#COLUMNS] .COL_NEXT
+.       el .NEWPAGE
 .    \}
 .    ie \\n[#DC_COLOR]=1 \{\
 .       ie !'\\$3'' \{\
@@ -2673,7 +2692,7 @@ end
 .       \}
 .       el .PRINT \
 \\*[DOWN \\n[#DC_LINES]v]\
-\m[\\*[$DC_COLOR]]\\*[$DROPCAP]\m[]\\*[UP \\n[#DC_LINES]v]
+\\*[$DROPCAP]\\*[UP \\n[#DC_LINES]v]
 .    \}
 .    if '\\$3'COND' \E*[COND]
 .    if '\\$3'EXT' \E*[EXT]
@@ -2728,21 +2747,13 @@ end
 \#
 \# +++GRAPHICAL OBJECTS+++
 \#
-\# HORIZONTAL RULE - DRH
-\# ---------------------
-\# *Arguments:
-\#   <none> | <rule weight> <indent> <length> [ <color> ]
-\# *Function:
-\#   With no arg, draws a full measure rule.  With args, draws
-\#   described horizontal rule.
-\# *Notes:
-\#   Rules are drawn left-to-right, from the baseline down, and
-\#   return to their point of origin.  Color must be set in the
-\#   macro; otherwise the color will be black, regardless of current
-\#   .gcolor.  If no arg given, the rule weight is the one set by
-\#   RULE_WEIGHT.
+\# Set params for graphical objects.
 \#
-.MAC DRH END
+.MAC GRAPHICAL_OBJ END
+.    rr #FILLED
+.    rr #FILL_MODE
+.    rr #NOFILL
+.    rr #NOFILL_MODE
 .    if \\n[.vpt]=1 \{\
 .       vpt 0
 .       nr #RESTORE_TRAP 1
@@ -2764,17 +2775,35 @@ end
 .       rj 0
 .    \}
 .    nf
+.END
+\#
+\# HORIZONTAL RULE - DRH
+\# ---------------------
+\# *Arguments:
+\#   <none> | <rule weight> <indent> <length> [ <color> ]
+\# *Function:
+\#   With no arg, draws a full measure rule.  With args, draws
+\#   described horizontal rule.
+\# *Notes:
+\#   Rules are drawn left-to-right, from the baseline down, and
+\#   return to their point of origin.  Color must be set in the
+\#   macro; otherwise the color will be black, regardless of current
+\#   .gcolor.  If no arg given, the rule weight is the one set by
+\#   RULE_WEIGHT.
+\#
+.MAC DRH END
+.    GRAPHICAL_OBJ
 .    ds $RL_WEIGHT \\$1
 .    ds $RL_INDENT \\$2
 .    ds $RL_LENGTH \\$3
 .    ie !'\\$4'' .ds $RL_COLOR  \\$4
-.    el          .ds $RL_COLOR default
+.    el          .ds $RL_COLOR \\*[default]
 .    nr #SAVED_WEIGHT     \\n[#RULE_WEIGHT]
 .    nr #SAVED_WEIGHT_ADJ \\n[#RULE_WEIGHT_ADJ]
 .    di NULL
 .       if \\n[#NUM_ARGS]>=1 .RULE_WEIGHT \\*[$RL_WEIGHT]
 .    di
-.    gcolor \\*[$RL_COLOR]
+.    COLOR \\*[$RL_COLOR]
 .    ie \\n[#NUM_ARGS]=0 \{\
 .       ie \\n[#INDENT_ACTIVE] \{\
 .          nr #RESTORE_L_LENGTH \\n[.l]
@@ -2805,6 +2834,7 @@ end
 \D'l \\*[$RL_LENGTH] 0'\
 \v'-\\n[#RULE_WEIGHT_ADJ]u'\
 \D't \\n[#SAVED_RULE_WEIGHT]'
+.          rr #RESTORE_L_LENGTH
 .    \}
 .    if \\n[#FILLED]=1 \{\
 .       if \\n[#FILL_MODE]=0 .QUAD LEFT
@@ -2824,7 +2854,7 @@ end
 .    rr #SAVED_WEIGHT
 .    rr #SAVED_WEIGHT_ADJ
 .    if \\n[#RESTORE_TRAP]=1 \{\
-.       vpt 1
+.       vpt
 .       rr #RESTORE_TRAP
 .    \}
 .    if '\\n[.z]'FLOAT*DIV' \
@@ -2885,38 +2915,17 @@ end
 \#   .gcolor.
 \#
 .MAC DRV END
-.    if \\n[.vpt]=1 \{\
-.       vpt 0
-.       nr #RESTORE_TRAP 1
-.    \}
-.    ie !\\n[#NO_ADVANCE]=1 .br
-.    el \{\
-.       sp -1v
-.       rr #NO_ADVANCE
-.    \}
-.    ie \\n[.u]=1 \{\
-.       nr #FILLED 1
-.       nr #FILL_MODE \\n[.j]
-.    \}
-.    el \{\
-.       nr #NOFILL 1
-.       if \\n[.ce]>0 .nr #NOFILL_MODE 3
-.       if \\n[.rj]>0 .nr #NOFILL_MODE 5
-.       ce 0
-.       rj 0
-.    \}
-.    nf
+.    GRAPHICAL_OBJ
 .    ds $RL_WEIGHT \\$1
 .    ds $RL_INDENT \\$2
 .    ds $RL_DEPTH  \\$3
-.    ie !'\\$4'' \{\
+.    ie !'\\$4'' \
 .       ds $RL_COLOR  \\$4
-.    \}
-.    el .ds $RL_COLOR default
+.    el .ds $RL_COLOR \\*[default]
 .    nr #SAVED_WEIGHT     \\n[#RULE_WEIGHT]
 .    nr #SAVED_WEIGHT_ADJ \\n[#RULE_WEIGHT_ADJ]
 .    RULE_WEIGHT \\*[$RL_WEIGHT]
-.    gcolor \\*[$RL_COLOR]
+.    COLOR \\*[$RL_COLOR]
 \D't \\n[#RULE_WEIGHT]'\
 \h'\\*[$RL_INDENT]-\\n[#RULE_WEIGHT_ADJ]u'\
 \D'l 0 \\*[$RL_DEPTH]'\
@@ -2937,18 +2946,17 @@ end
 .    nr #RULE_WEIGHT     \\n[#SAVED_WEIGHT]
 .    nr #RULE_WEIGHT_ADJ \\n[#SAVED_WEIGHT_ADJ]
 .    if \\n[#RESTORE_TRAP]=1 \{\
-.       vpt 1
+.       vpt
 .       rr #RESTORE_TRAP
 .    \}
-.    if '\\n[.z]'FLOAT*DIV' \{\
+.    if '\\n[.z]'FLOAT*DIV' \
 .       if !(\\n[.d]+\\*[$RL_DEPTH])<\\n[D-float] .nr D-float \\n[.d]+\\*[$RL_DEPTH]
-.    \}
 .END
 \#
 \# BOXES - DBX
 \# -----------
 \# *Arguments:
-\#   <rule weight | SOLID> <indent> <length> <depth> [ <color> ]
+\#   <rule weight> | SOLID> <indent> <length> <depth> [ <color> ]
 \# *Function:
 \#   Draws described box.
 \# *Notes:
@@ -2959,27 +2967,7 @@ end
 \#   arg given, the rule weight is the one set by RULE_WEIGHT.
 \#
 .MAC DBX END
-.    if \\n[.vpt]=1 \{\
-.       vpt 0
-.       nr #RESTORE_TRAP 1
-.    \}
-.    ie !\\n[#NO_ADVANCE]=1 .br
-.    el \{\
-.       sp -1v
-.       rr #NO_ADVANCE
-.    \}
-.    ie \\n[.u]=1 \{\
-.       nr #FILLED 1
-.       nr #FILL_MODE \\n[.j]
-.    \}
-.    el \{\
-.       nr #NOFILL 1
-.       if \\n[.ce]>0 .nr #NOFILL_MODE 3
-.       if \\n[.rj]>0 .nr #NOFILL_MODE 5
-.       ce 0
-.       rj 0
-.    \}
-.    nf
+.    GRAPHICAL_OBJ
 .    ie '\\$1'SOLID' .nr #BX_SOLID 1
 .    el              .ds $BX_WEIGHT \\$1
 .    ds $BX_INDENT \\$2
@@ -2989,7 +2977,7 @@ end
 .       ie d$\\$5_FILL .ds $BX_COLOR \\*[$\\$5_FILL]
 .       el             .ds $BX_COLOR \\$5
 .    \}
-.    el .ds $BX_COLOR default
+.    el .ds $BX_COLOR \\*[default]
 .    nr #SAVED_WEIGHT     \\n[#RULE_WEIGHT]
 .    nr #SAVED_WEIGHT_ADJ \\n[#WEIGHT_ADJ]
 .    if !'\\$1'SOLID' .RULE_WEIGHT \\*[$BX_WEIGHT]
@@ -3002,7 +2990,7 @@ end
 .       rr #BX_SOLID
 .    \}
 .    el \{\
-.       gcolor \\*[$BX_COLOR]
+.       COLOR \\*[$BX_COLOR]
 \D't \\n[#RULE_WEIGHT]'\
 \h'\\*[$BX_INDENT]'\
 \v'\\n[#WEIGHT_ADJ]u'\
@@ -3017,7 +3005,6 @@ end
 .       if \\n[#FILL_MODE]=1 .JUSTIFY
 .       if \\n[#FILL_MODE]=3 .QUAD CENTER
 .       if \\n[#FILL_MODE]=5 .QUAD RIGHT
-.       rr #FILLED
 .    \}
 .    if \\n[#NOFILL]=1 \{\
 .       if \\n[#NOFILL_MODE]=3 .CENTER
@@ -3028,7 +3015,7 @@ end
 .    rr #SAVED_WEIGHT
 .    rr #SAVED_WEIGHT_ADJ
 .    if \\n[#RESTORE_TRAP]=1 \{\
-.       vpt 1
+.       vpt
 .       rr #RESTORE_TRAP
 .    \}
 .    if '\\n[.z]'FLOAT*DIV' \
@@ -3038,7 +3025,7 @@ end
 \# ELLIPSES - DCL
 \# --------------
 \# *Arguments:
-\#   <rule weight | SOLID> <indent> <width> <depth> [ <color> ]
+\#   <rule weight> | SOLID> <indent> <width> <depth> [ <color> ]
 \# *Function:
 \#   Draws described ellipses.
 \# *Notes:
@@ -3050,27 +3037,7 @@ end
 \#   RULE_WEIGHT.
 \#
 .MAC DCL END
-.    if \\n[.vpt]=1 \{\
-.       vpt 0
-.       nr #RESTORE_TRAP 1
-.    \}
-.    ie !\\n[#NO_ADVANCE]=1 .br
-.    el \{\
-.       sp -1v
-.       rr #NO_ADVANCE
-.    \}
-.    ie \\n[.u]=1 \{\
-.       nr #FILLED 1
-.       nr #FILL_MODE \\n[.j]
-.    \}
-.    el \{\
-.       nr #NOFILL 1
-.       if \\n[.ce]>0 .nr #NOFILL_MODE 3
-.       if \\n[.rj]>0 .nr #NOFILL_MODE 5
-.       ce 0
-.       rj 0
-.    \}
-.    nf
+.    GRAPHICAL_OBJ
 .    ie '\\$1'SOLID' .nr #CL_SOLID 1
 .    el              .ds $CL_WEIGHT \\$1
 .    ds $CL_INDENT \\$2
@@ -3080,7 +3047,7 @@ end
 .       ie d$\\$5_FILL .ds $CL_COLOR \\*[$\\$5_FILL]
 .       el             .ds $CL_COLOR \\$5
 .    \}
-.    el .ds $CL_COLOR default
+.    el .ds $CL_COLOR \\*[default]
 .    nr #SAVED_WEIGHT     \\n[#RULE_WEIGHT]
 .    nr #SAVED_WEIGHT_ADJ \\n[#WEIGHT_ADJ]
 .    if !'\\$1'SOLID' .RULE_WEIGHT \\*[$CL_WEIGHT]
@@ -3095,7 +3062,7 @@ end
 .       rr #CL_SOLID
 .    \}
 .    el \{\
-.       gcolor \\*[$CL_COLOR]
+.       COLOR \\*[$CL_COLOR]
 \D't \\n[#RULE_WEIGHT]'\
 \h'\\*[$CL_INDENT]'\
 \v'\\*[$CL_DEPTH]/2u'\
@@ -3121,7 +3088,7 @@ end
 .    rr #SAVED_WEIGHT
 .    rr #SAVED_WEIGHT_ADJ
 .    if \\n[#RESTORE_TRAP]=1 \{\
-.       vpt 1
+.       vpt
 .       rr #RESTORE_TRAP
 .    \}
 .    if '\\n[.z]'FLOAT*DIV' \
@@ -3144,7 +3111,7 @@ end
 .       substring $ARG -1
 .       if !\B'\\*[$ARG]' \{\
 .          tm1 "[mom]: The argument to \\$0 must not have a unit of measure appended.
-.          ab Aborting '\\n[.F]' at \\$0, line \\n[.c].
+.          ab   [mom]: Aborting '\\n[.F]' at \\$0, line \\n[.c].
 .       \}
 .       length #STR_LENGTH \\$1
 .       ds $ARG \\$1
@@ -3155,13 +3122,14 @@ end
 .          nr #WEIGHT \\*[$ARG]*100
 .          if (\\n[#WEIGHT]>=1000) \{\
 .              while (\\n[#WEIGHT]>=1000) \{\
-.                  nr #WEIGHT \\n[#WEIGHT]/10
+.                 nr #WEIGHT \\n[#WEIGHT]/10
 .              \}
 .          \}
 .       \}
 .       el \{\
 .          ds $ARG \\$1
-.          substring $ARG 1 1
+.          length #ARG_LENGTH \\*[$ARG]
+.          if \\n[#ARG_LENGTH]>1 .substring $ARG 1 1
 .          ie '\\*[$ARG]'.' \{\
 .             ds $LHS \\$1
 .             substring $LHS 0 0
@@ -3201,29 +3169,32 @@ end
 .          \}
 .       \}
 .       nr #WEIGHT_ADJ \\n[#WEIGHT]/2
-.       if '\\$0'BIBLIOGRAPHY_STRING_UNDERLINE_WEIGHT' \{\
-.          nr #BIB_STRING_UNDERLINE_WEIGHT     \\n[#WEIGHT]
-.          nr #BIB_STRING_UNDERLINE_WEIGHT_ADJ \\n[#WEIGHT_ADJ]
-.       \}
-.       if '\\$0'COVER_UNDERLINE_WEIGHT' \{\
-.          nr #COVER_UNDERLINE_WEIGHT     \\n[#WEIGHT]
-.          nr #COVER_UNDERLINE_WEIGHT_ADJ \\n[#WEIGHT_ADJ]
-.       \}
-.       if '\\$0'DOC_COVER_UNDERLINE_WEIGHT' \{\
-.          nr #DOC_COVER_UNDERLINE_WEIGHT     \\n[#WEIGHT]
-.          nr #DOC_COVER_UNDERLINE_WEIGHT_ADJ \\n[#WEIGHT_ADJ]
-.       \}
-.       if '\\$0'DOCTYPE_UNDERLINE_WEIGHT' \{\
-.          nr #DOCTYPE_UNDERLINE_WEIGHT     \\n[#WEIGHT]
-.          nr #DOCTYPE_UNDERLINE_WEIGHT_ADJ \\n[#WEIGHT_ADJ]
+.       if '\\$0'BIBLIOGRAPHY_STRING_UNDERLINE_WEIGHT' \
+.          ds $TITLE_TYPE BIB_STRING_
+.       if '\\$0'ENDNOTE_TITLE_UNDERLINE_WEIGHT' \
+.          ds $TITLE_TYPE EN_TITLE_
+.       if '\\$0'EN_HEADER_UNDERLINE_WEIGHT' \
+.          ds $TITLE_TYPE EN_STRING_
+.       if !'\\*[$TITLE_TYPE]'BIB_STRING' \
+.          if !'\\*[$TITLE_TYPE]'EN_TITLE' \
+.             if !'\\*[$TITLE_TYPE]'EN_STRING' \
+.                ds _TYPE \\$0
+.       length type-len _TYPE
+.       if \\n[type-len]>17 \{\
+.          substring _TYPE 0 -17
+.          ds $TITLE_TYPE \\*[_TYPE]
+.       \}
+.       if !'\\*[$TITLE_TYPE]'' \{\
+.          nr #\\*[$TITLE_TYPE]UNDERLINE_WEIGHT \\n[#WEIGHT]
+.          nr #\\*[$TITLE_TYPE]UNDERLINE_WEIGHT_ADJ \\n[#WEIGHT_ADJ]
 .       \}
-.       if '\\$0'ENDNOTE_STRING_UNDERLINE_WEIGHT' \{\
-.          nr #EN_STRING_UNDERLINE_WEIGHT     \\n[#WEIGHT]
-.          nr #EN_STRING_UNDERLINE_WEIGHT_ADJ \\n[#WEIGHT_ADJ]
+.       if '\\$0'RULE_WEIGHT' \{\
+.          nr #RULE_WEIGHT     \\n[#WEIGHT]
+.          nr #RULE_WEIGHT_ADJ \\n[#WEIGHT_ADJ]
 .       \}
-.       if '\\$0'ENDNOTE_TITLE_UNDERLINE_WEIGHT' \{\
-.          nr #EN_TITLE_UNDERLINE_WEIGHT     \\n[#WEIGHT]
-.          nr #EN_TITLE_UNDERLINE_WEIGHT_ADJ \\n[#WEIGHT_ADJ]
+.       if '\\$0'UNDERSCORE_WEIGHT' \{\
+.          nr #UNDERSCORE_WEIGHT     \\n[#WEIGHT]
+.          nr #UNDERSCORE_WEIGHT_ADJ \\n[#WEIGHT_ADJ]
 .       \}
 .       if '\\$0'FOOTER_RULE_WEIGHT' \{\
 .          nr #FOOTER_RULE_WEIGHT     \\n[#WEIGHT]
@@ -3237,35 +3208,26 @@ end
 .          nr #HEADER_RULE_WEIGHT     \\n[#WEIGHT]
 .          nr #HEADER_RULE_WEIGHT_ADJ \\n[#WEIGHT_ADJ]
 .       \}
-.       if '\\$0'RULE_WEIGHT' \{\
-.          nr #RULE_WEIGHT     \\n[#WEIGHT]
-.          nr #RULE_WEIGHT_ADJ \\n[#WEIGHT_ADJ]
-.       \}
-.       if '\\$0'UNDERSCORE_WEIGHT' \{\
-.          nr #UNDERSCORE_WEIGHT     \\n[#WEIGHT]
-.          nr #UNDERSCORE_WEIGHT_ADJ \\n[#WEIGHT_ADJ]
-.       \}
 .    di
 .END
 \#
-\# Aliases
+\# Aliases for RULE_WEIGHT
 \# 
-.ALIAS BIBLIOGRAPHY_STRING_UNDERLINE_WEIGHT RULE_WEIGHT
-.ALIAS COVER_UNDERLINE_WEIGHT               RULE_WEIGHT
-.ALIAS DOC_COVER_UNDERLINE_WEIGHT           RULE_WEIGHT
-.ALIAS DOCTYPE_UNDERLINE_WEIGHT             RULE_WEIGHT
-.ALIAS ENDNOTE_STRING_UNDERLINE_WEIGHT      RULE_WEIGHT
-.ALIAS ENDNOTE_TITLE_UNDERLINE_WEIGHT       RULE_WEIGHT
-.ALIAS FOOTER_RULE_WEIGHT                   RULE_WEIGHT
-.ALIAS FOOTNOTE_RULE_WEIGHT                 RULE_WEIGHT
-.ALIAS HEADER_RULE_WEIGHT                   RULE_WEIGHT
-.ALIAS UNDERSCORE_WEIGHT                    RULE_WEIGHT
+.ALIAS BIB_STRING_UNDERLINE_WEIGHT RULE_WEIGHT
+.ALIAS DOCTYPE_UNDERLINE_WEIGHT    RULE_WEIGHT
+.ALIAS EN_STRING_UNDERLINE_WEIGHT  RULE_WEIGHT
+.ALIAS EN_TITLE_UNDERLINE_WEIGHT   RULE_WEIGHT
+.ALIAS FN_RULE_WEIGHT              RULE_WEIGHT
+.ALIAS FOOTER_RULE_WEIGHT          RULE_WEIGHT
+.ALIAS FOOTNOTE_RULE_WEIGHT        RULE_WEIGHT
+.ALIAS HEADER_RULE_WEIGHT          RULE_WEIGHT
+.ALIAS RULE_WEIGHT                 RULE_WEIGHT
+.ALIAS TOC_HEADER_UNDERLINE_WEIGHT RULE_WEIGHT
+.ALIAS UNDERSCORE_WEIGHT           RULE_WEIGHT
 \#
 \# Default rule weights
-\# ~~~~~~~~~~~~~~~~~~~~
+\# 
 .nr #BIB_STRING_UNDERLINE_WEIGHT 500
-.nr #COVER_UNDERLINE_WEIGHT      500
-.nr #DOC_COVER_UNDERLINE_WEIGHT  500
 .nr #DOCTYPE_UNDERLINE_WEIGHT    500
 .nr #EN_STRING_UNDERLINE_WEIGHT  500
 .nr #EN_TITLE_UNDERLINE_WEIGHT   500
@@ -3273,20 +3235,38 @@ end
 .nr #FOOTER_RULE_WEIGHT          500
 .nr #HEADER_RULE_WEIGHT          500
 .nr #RULE_WEIGHT                 500
+.nr #TOC_HEADER_UNDERLINE_WEIGHT 500
 .nr #UNDERSCORE_WEIGHT           500
 \#
 .nr #BIB_STRING_UNDERLINE_WEIGHT_ADJ \n[#BIB_STRING_UNDERLINE_WEIGHT]/2
-.nr #COVER_UNDERLINE_WEIGHT_ADJ      \n[#DOCTYPE_UNDERLINE_WEIGHT]/2
-.nr #DOC_COVER_UNDERLINE_WEIGHT_ADJ  \n[#DOCTYPE_RULE_WEIGHT]/2
-.nr #DOCTYPE_UNDERLINE_WEIGHT_ADJ    \n[#DOCTYPE_RULE_WEIGHT]/2
+.nr #DOCTYPE_UNDERLINE_WEIGHT_ADJ    \n[#DOCTYPE_UNDERLINE_WEIGHT]/2
 .nr #EN_STRING_UNDERLINE_WEIGHT_ADJ  \n[#EN_STRING_UNDERLINE_WEIGHT]/2
-.nr #EN_TITLE_UNDERLINE_WEIGHT_ADJ   \n[#EN_STRING_UNDERLINE_WEIGHT]/2
-.nr #FOOTER_RULE_WEIGHT_ADJ          \n[#FOOTER_RULE_WEIGHT]/2
+.nr #EN_TITLE_UNDERLINE_WEIGHT_ADJ   \n[#EN_TITLE_UNDERLINE_WEIGHT]/2
 .nr #FN_RULE_WEIGHT_ADJ              \n[#FN_RULE_WEIGHT]/2
+.nr #FOOTER_RULE_WEIGHT_ADJ          \n[#FOOTER_RULE_WEIGHT]/2
 .nr #HEADER_RULE_WEIGHT_ADJ          \n[#HEADER_RULE_WEIGHT]/2
 .nr #RULE_WEIGHT_ADJ                 \n[#RULE_WEIGHT]/2
+.nr #TOC_HEADER_UNDERLINE_WEIGHT_ADJ \n[#TOC_HEADER_UNDERLINE_WEIGHT]/2
 .nr #UNDERSCORE_WEIGHT_ADJ           \n[#UNDERSCORE_WEIGHT]/2
 \#
+\# Read in remaining aliases and default rule weights
+\#
+.nr #LOOP 0 1
+.while \n+[#LOOP]<=14 \{\
+. ALIAS \*[TITLE_TYPE_\n[#LOOP]]_UNDERLINE_WEIGHT           RULE_WEIGHT
+. ALIAS COVER_\*[TITLE_TYPE_\n[#LOOP]]_UNDERLINE_WEIGHT     RULE_WEIGHT
+. ALIAS DOC_COVER_\*[TITLE_TYPE_\n[#LOOP]]_UNDERLINE_WEIGHT RULE_WEIGHT
+. nr #\*[TITLE_TYPE_\n[#LOOP]]_UNDERLINE_WEIGHT            500
+. nr #COVER_\*[TITLE_TYPE_\n[#LOOP]]_UNDERLINE_WEIGHT      500
+. nr #DOC_COVER_\*[TITLE_TYPE_\n[#LOOP]]_UNDERLINE_WEIGHT  500
+. nr #\*[TITLE_TYPE_\n[#LOOP]]_UNDERLINE_WEIGHT_ADJ \
+    \n[#\*[TITLE_TYPE_\n[#LOOP]]_UNDERLINE_WEIGHT]/2
+. nr #COVER_\*[TITLE_TYPE_\n[#LOOP]]_UNDERLINE_WEIGHT_ADJ \
+    \n[#COVER_\*[TITLE_TYPE_\n[#LOOP]]_UNDERLINE_WEIGHT]/2
+. nr #DOC_COVER_\*[TITLE_TYPE_\n[#LOOP]]_UNDERLINE_WEIGHT_ADJ \
+    \n[#DOC_COVER_\*[TITLE_TYPE_\n[#LOOP]]_UNDERLINE_WEIGHT]/2
+.\}
+\#
 \# Set default rule weight
 \#
 .di NULL
@@ -3316,10 +3296,10 @@ end
 .    ds $WS_VAR  \\$1
 .    ie '\\$1'DEFAULT' .ss 12 \\n[.sss]
 .    el \{\
-.       ds $WS (\\*[$WS_CURR]\\*[$WS_VAR])
+.       ds $WS (\\*[$WS_CURR]+\\*[$WS_VAR])
 .       ie \\n[.sss]=12 .ss \\*[$WS] 12
 .       el \{\
-.          ss \\*[$WS] (\\*[$WS]\\*[$SS_VAR])
+.          ss \\*[$WS] (\\*[$WS]+\\*[$SS_VAR])
 .          SS \\*[$SS_VAR]
 .      \}
 .    \}
@@ -3350,7 +3330,7 @@ end
 .    ie '\\$1'0' .ss \\n[.ss] (\\n[.ss]-\\n[.ss])
 .    el \{\
 .       ie '\\$1'DEFAULT' .ss \\n[.ss]
-.       el                .ss \\n[.ss] (0\\*[$SS_VAR])
+.       el                .ss \\n[.ss] (0+\\*[$SS_VAR])
 .    \}
 .END
 \#
@@ -3415,38 +3395,27 @@ end
 \# +++INDENT BOTH+++
 \#
 .MAC IB END
-.    if \\n[#INDENT_STYLE_LEFT] .ILX
+.    br
+.    if \\n[#INDENT_STYLE_LEFT]  .ILX
 .    if \\n[#INDENT_STYLE_RIGHT] .IRX
 .    nr #INDENT_STYLE_BOTH  1
 .    nr #INDENT_ACTIVE      1
 .    nr #INDENT_BOTH_ACTIVE 1
 .    ie '\\$1'' \{\
-.       br
+.       ie \\n[#DOCS] \
+.          ll \\n[#DOC_L_LENGTH]u-\\n[#BR_INDENT]u
+.       el .ll \\n[.l]u-\\n[#BR_INDENT]u
 .       in \\n[#BL_INDENT]u
-.       ie \\n[#TAB_ACTIVE] \{\
-.          ll \\n[.l]u-\\n[#BR_INDENT]u
-.          ta \\n[.l]u-\\n[#BR_INDENT]u
-.       \}
-.       el \{\
-.          ll \\n[.l]u-\\n[#BR_INDENT]u
-.          ta \\n[.l]u-\\n[#BR_INDENT]u
-.       \}
+.       ta \\n[.l]u
 .    \}
 .    el \{\
-.       br
 .       nr #BL_INDENT (\\n[#INDENT]+\\$1)
 .       ie \\n[#NUM_ARGS]=2 .nr #BR_INDENT +(\\$2)
 .       el .nr #BR_INDENT \\n[#BL_INDENT]
-.       ie \\n[#TAB_ACTIVE] \{\
-.          in \\n[#BL_INDENT]u
-.          ll \\n[.l]u-\\n[#BR_INDENT]u
-.          ta \\n[.l]u-\\n[#BL_INDENT]u
-.       \}
-.       el \{\
-.          in \\n[#BL_INDENT]u
-.          ll \\n[.l]u-\\n[#BR_INDENT]u
-.          ta \\n[.l]u-\\n[#BR_INDENT]u
-.       \}
+.       if '\\n[.z]'' .ll
+.       ll \\n[.l]u-\\n[#BR_INDENT]u
+.       in \\n[#BL_INDENT]u
+.       ta \\n[.l]u-\\n[#BR_INDENT]u
 .    \}
 .END
 \#
@@ -3483,10 +3452,13 @@ end
 .       br
 .       in 0
 .       rr #INDENT_LEFT_ACTIVE
+.       nr #L_INDENT_ILX \\n[#L_INDENT]
 .    \}
 .    if '\\$1'CLEAR' \{\
 .       rr #L_INDENT
 .       rr #INDENT_STYLE_LEFT
+.       rr #L_INDENT_ILX
+.       rr #INDENT_ACTIVE
 .    \}
 .END
 \#
@@ -3513,6 +3485,7 @@ end
 .MAC IBX END
 .    br
 .    in 0
+.    rr #INDENT_ACTIVE
 .    rr #INDENT_BOTH_ACTIVE
 .    ie \\n[#TAB_ACTIVE] .TAB\\n[#CURRENT_TAB]
 .    el \{\
@@ -3546,6 +3519,7 @@ end
 .    rr #INDENT_LEFT_ACTIVE
 .    rr #INDENT_RIGHT_ACTIVE
 .    rr #INDENT_BOTH_ACTIVE
+.    rr #INDENT_ACTIVE
 .    if \\n[#INDENT_STYLE_RIGHT] \{\
 .       ie \\n[#TAB_ACTIVE] .TAB\\n[#CURRENT_TAB]
 .       el \{\
@@ -3609,7 +3583,62 @@ end
 .       rr #INDENT_STYLE_RIGHT
 .       rr #INDENT_STYLE_BOTH
 .    \}
-.    rr #INDENT_ACTIVE
+.END
+\#
+\# =====================================================================
+\#
+\# +++HANGING CHARACTERS+++
+\#
+\#   LEFT_HANG hangs its argument to the left of the left margin.
+\#   If enclosed in double-quotes, the argument may contain local
+\#   horizontal motions.  Input text after LEFT_HANG must begin
+\#   by repeating the text of the argument including horizontal
+\#   motions.  If the hung character is a left double-quote,
+\#   \[lq] must be used in the argument and the usual keyboard
+\#   double-quote (") used for the input text (so as not to confuse
+\#   SMARTQUOTES).
+\#
+\#   HANG is called inline with \*[HANG <character>].  Hangs its
+\#   single-character argument, typically a punctuation mark, to the
+\#   right of the right margin in justified copy.  Unlike LEFT_HANG,
+\#   does not require repeating the character as part of input text.
+\#
+\#   Except for hung hyphens, HANG may be used mid-line in input
+\#   text.  Hung hyphens must come at the end of input lines.  If
+\#   the hung character is a right double-quote, "\[rq]" must be
+\#   used as the argument (that is, the rq character surrounded by
+\#   double-quotes).  The double-quotes are required for all special
+\#   characters that have the form \[c].
+\#
+.MAC LEFT_HANG END
+.    ie '\\$0'LEFT_HANG' \{\
+.       vpt 0
+.       sp -1
+.       nr #HANG \w'\\$1'
+.       in +\\n[#HANG]u
+.       ll +\\n[#HANG]u
+.       ie !\\n[.z] .po -\\n[#HANG]u
+.       el \!.po -\\n[#HANG]u
+.       ti -\\n[#HANG]u
+.       vpt
+.    \}
+.    el \{\
+.       vpt 0
+.       in
+.       ll
+.       po
+.       vpt
+.    \}
+.END
+\#
+.ALIAS NO_HANG LEFT_HANG
+\#
+.MAC HANG END
+\c
+.if '\\$1'\[rq]' .nr #OPEN_CLOSE 0
+\c
+\&\\$1\c
+\h'-\w'\\$1'u'\c
 .END
 \#
 \# =====================================================================
@@ -3635,9 +3664,9 @@ end
 \#   Returns to the top of a column set
 \#
 .MAC MCR END
-.    TRAP OFF
+.    vpt 0
 .    sp |\\n[c]u
-.    TRAP
+.    vpt
 .END
 \#
 \# MULTIPLE COLUMNS OFF
@@ -3654,8 +3683,9 @@ end
 \#   is zero, advances to the baseline of the deepest column.
 \#
 .MAC MCX END
-.    TRAP OFF
+.    vpt 0
 .    ie '\\$1'' \{\
+.       if '\\n[.z]'FLOAT*DIV' \!.TQ
 .       TQ
 .       sp |\\n[.h]u
 .    \}
@@ -3666,7 +3696,7 @@ end
 .       el .sp |\\n[.h]u+\\n[#MCX_ALD]u
 .       rr #MCX_ALD
 .    \}
-.    TRAP
+.    vpt
 .END
 \#
 \# =====================================================================
@@ -3684,10 +3714,10 @@ end
 \#   a trap (when they break the preceding line, they spring the
 \#   trap, and groff won't back up to the line preceding the trap).
 \#   TRAP is a kludge to get EL and TN work properly on last lines.
-\#   The user simply enloses the offending lines in TRAP OFF/TRAP.
+\#   The user simply encloses the offending lines in TRAP OFF/TRAP.
 \#
 .MAC TRAP END
-.    ie '\\$1'' .vpt 1
+.    ie '\\$1'' .vpt
 .    el         .vpt 0
 .END
 \#
@@ -3725,6 +3755,126 @@ end
 .    nop \\$*
 .END
 \#
+\# Numbered strings for while loop in SMALLCAPS.
+\#
+.ds $c1 a
+.ds $c2 b
+.ds $c3 c
+.ds $c4 d
+.ds $c5 e
+.ds $c6 f
+.ds $c7 g
+.ds $c8 h
+.ds $c9 i
+.ds $c10 j
+.ds $c11 k
+.ds $c12 l
+.ds $c13 m
+.ds $c14 n
+.ds $c15 o
+.ds $c16 p
+.ds $c17 q
+.ds $c18 r
+.ds $c19 s
+.ds $c20 t
+.ds $c21 u
+.ds $c22 v
+.ds $c23 w
+.ds $c24 x
+.ds $c25 y
+.ds $c26 z
+.ds $c27 \[`a]
+.ds $c28 \[^a]
+.ds $c29 \['a]
+.ds $c30 \[:a]
+.ds $c31 \[oa]
+.ds $c32 \[~a]
+.ds $c33 \[ae]
+.ds $c34 \[`e]
+.ds $c35 \[^e]
+.ds $c36 \['e]
+.ds $c37 \[:e]
+.ds $c38 \[`i]
+.ds $c39 \[^i]
+.ds $c40 \['i]
+.ds $c41 \[:i]
+.ds $c42 \[`o]
+.ds $c43 \[^o]
+.ds $c44 \['o]
+.ds $c45 \[:o]
+.ds $c46 \[~o]
+.ds $c47 \[/o]
+.ds $c48 \[`u]
+.ds $c49 \[^u]
+.ds $c50 \['u]
+.ds $c51 \[:u]
+.ds $c52 \[,c]
+.ds $c53 \[Sd]
+.ds $c54 \[~n]
+.ds $c55 \[Sd]
+.ds $c56 \[Tp]
+.ds $c57 \['y]
+.ds $c58 \[:y]
+\#
+.ds $C1 A
+.ds $C2 B
+.ds $C3 C
+.ds $C4 D
+.ds $C5 E
+.ds $C6 F
+.ds $C7 G
+.ds $C8 H
+.ds $C9 I
+.ds $C10 J
+.ds $C11 K
+.ds $C12 L
+.ds $C13 M
+.ds $C14 N
+.ds $C15 O
+.ds $C16 P
+.ds $C17 Q
+.ds $C18 R
+.ds $C19 S
+.ds $C20 T
+.ds $C21 U
+.ds $C22 V
+.ds $C23 W
+.ds $C24 X
+.ds $C25 Y
+.ds $C26 Z
+.ds $C27 \[`A]
+.ds $C28 \[^A]
+.ds $C29 \['A]
+.ds $C30 \[:A]
+.ds $C31 \[oA]
+.ds $C32 \[~A]
+.ds $C33 \[AE]
+.ds $C34 \[`E]
+.ds $C35 \[^E]
+.ds $C36 \['E]
+.ds $C37 \[:E]
+.ds $C38 \[`I]
+.ds $C39 \[^I]
+.ds $C40 \['I]
+.ds $C41 \[:I]
+.ds $C42 \[`O]
+.ds $C43 \[^O]
+.ds $C44 \['O]
+.ds $C45 \[:O]
+.ds $C46 \[~O]
+.ds $C47 \[/O]
+.ds $C48 \[`U]
+.ds $C49 \[^U]
+.ds $C50 \['U]
+.ds $C51 \[:U]
+.ds $C52 \[,C]
+.ds $C53 \[-D]
+.ds $C54 \[~N]
+.ds $C55 \[-D]
+.ds $C56 \[TP]
+.ds $C57 \['Y]
+.ds $C58 \[:Y]
+\#
 \# CAPS
 \# ----
 \# *Arguments:
@@ -3737,152 +3887,125 @@ end
 \#
 .MAC CAPS END
 .    ie '\\$1'' \{\
-.       tr aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ
-.       tr \[`a]\[`A]
-.       tr \[^a]\[^A]
-.       tr \['a]\['A]
-.       tr \[:a]\[:A]
-.       tr \[oa]\[oA]
-.       tr \[~a]\[~A]
-.       tr \[ae]\[AE]
-.       tr \[`e]\[`E]
-.       tr \[^e]\[^E]
-.       tr \['e]\['E]
-.       tr \[:e]\[:E]
-.       tr \[`i]\[`I]
-.       tr \[^i]\[^I]
-.       tr \['i]\['I]
-.       tr \[:i]\[:I]
-.       tr \[`o]\[`O]
-.       tr \[^o]\[^O]
-.       tr \['o]\['O]
-.       tr \[:o]\[:O]
-.       tr \[~o]\[~O]
-.       tr \[/o]\[/O]
-.       tr \[`u]\[`U]
-.       tr \[^u]\[^U]
-.       tr \['u]\['U]
-.       tr \[:u]\[:U]
-.       tr \[,c]\[,C]
-.       tr \[-d]\[-D]
-.       tr \[~n]\[~N]
-.       tr \[Sd]\[-D]
-.       tr \[Tp]\[TP]
-.       tr \['y]\['Y]
-.       tr \[:y]\[:Y]
+.       LC_TO_CAPS
 .       nr #CAPS_ON 1
 .    \}
 .    el \{\
-.       tr aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz
-.       tr \[`a]\[`a]
-.       tr \[^a]\[^a]
-.       tr \['a]\['a]
-.       tr \[:a]\[:a]
-.       tr \[oa]\[oa]
-.       tr \[~a]\[~a]
-.       tr \[ae]\[ae]
-.       tr \[`e]\[`e]
-.       tr \[^e]\[^e]
-.       tr \['e]\['e]
-.       tr \[:e]\[:e]
-.       tr \[`i]\[`i]
-.       tr \[^i]\[^i]
-.       tr \['i]\['i]
-.       tr \[:i]\[:i]
-.       tr \[`o]\[`o]
-.       tr \[^o]\[^o]
-.       tr \['o]\['o]
-.       tr \[:o]\[:o]
-.       tr \[~o]\[~o]
-.       tr \[/o]\[/o]
-.       tr \[`u]\[`u]
-.       tr \[^u]\[^u]
-.       tr \['u]\['u]
-.       tr \[:u]\[:u]
-.       tr \[,c]\[,c]
-.       tr \[Sd]\[Sd]
-.       tr \[~n]\[~n]
-.       tr \[Tp]\[Tp]
-.       tr \['y]\['y]
-.       tr \[:y]\[:y]
+.       CAPS_TO_LC
 .       rr #CAPS_ON
 .    \}
 .END
 \#
 .MAC UC END
 \c
-.    tr aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ
-.    tr \[`a]\[`A]
-.    tr \[^a]\[^A]
-.    tr \['a]\['A]
-.    tr \[:a]\[:A]
-.    tr \[oa]\[oA]
-.    tr \[~a]\[~A]
-.    tr \[ae]\[AE]
-.    tr \[`e]\[`E]
-.    tr \[^e]\[^E]
-.    tr \['e]\['E]
-.    tr \[:e]\[:E]
-.    tr \[`i]\[`I]
-.    tr \[^i]\[^I]
-.    tr \['i]\['I]
-.    tr \[:i]\[:I]
-.    tr \[`o]\[`O]
-.    tr \[^o]\[^O]
-.    tr \['o]\['O]
-.    tr \[:o]\[:O]
-.    tr \[~o]\[~O]
-.    tr \[/o]\[/O]
-.    tr \[`u]\[`U]
-.    tr \[^u]\[^U]
-.    tr \['u]\['U]
-.    tr \[:u]\[:U]
-.    tr \[,c]\[,C]
-.    tr \[Sd]\[-D]
-.    tr \[~n]\[~N]
-.    tr \[Tp]\[TP]
-.    tr \['y]\['Y]
-.    tr \[:y]\[:Y]
+.    LC_TO_CAPS
 .    nr #CAPS_ON 1
 .END
 \#
 .MAC LC END
 \c
-.    tr aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz
-.    tr \[`a]\[`a]
-.    tr \[^a]\[^a]
-.    tr \['a]\['a]
-.    tr \[:a]\[:a]
-.    tr \[oa]\[oa]
-.    tr \[~a]\[~a]
-.    tr \[ae]\[ae]
-.    tr \[`e]\[`e]
-.    tr \[^e]\[^e]
-.    tr \['e]\['e]
-.    tr \[:e]\[:e]
-.    tr \[`i]\[`i]
-.    tr \[^i]\[^i]
-.    tr \['i]\['i]
-.    tr \[:i]\[:i]
-.    tr \[`o]\[`o]
-.    tr \[^o]\[^o]
-.    tr \['o]\['o]
-.    tr \[:o]\[:o]
-.    tr \[~o]\[~o]
-.    tr \[/o]\[/o]
-.    tr \[`u]\[`u]
-.    tr \[^u]\[^u]
-.    tr \['u]\['u]
-.    tr \[:u]\[:u]
-.    tr \[,c]\[,c]
-.    tr \[Sd]\[Sd]
-.    tr \[~n]\[~n]
-.    tr \[Tp]\[Tp]
-.    tr \['y]\['y]
-.    tr \[:y]\[:y]
+.    CAPS_TO_LC
 .    rr #CAPS_ON
 .END
 \#
+\# Perform lowercase conversion to caps or revert to lowercase
+\#
+.MAC CONVERT_CASE END
+.    if '\\$0'LC_TO_CAPS' \{\
+.       nr #LOOP 0 1
+.       while \\n+[#LOOP]<=58 \{\
+.          tr \\*[$c\\n[#LOOP]]\\*[$C\\n[#LOOP]]  
+.       \}
+.    \}
+.    if '\\$0'CAPS_TO_LC' \{\
+.       nr #LOOP 0 1
+.       while \\n+[#LOOP]<=58 \{\
+.          tr \\*[$c\\n[#LOOP]]\\*[$c\\n[#LOOP]]  
+.       \}
+.    \}
+.END
+.
+.ALIAS LC_TO_CAPS CONVERT_CASE
+.ALIAS CAPS_TO_LC CONVERT_CASE
+.
+\#
+\# SMALLCAPS
+\# ---------
+\# *Arguments:
+\#   <none> | <anything>
+\# *Function:
+\#   Converts text to smallcaps, or, if <anything>, reverts to normal
+\#   caps/lc.
+\# *Notes:
+\#   SMALLCAPS has no inline escape eqiv. to \*[UC].
+\#
+.MAC SMALLCAPS END
+.    if \\n[.int] .nop \& \c
+.    nr sc*size \\n[.ps]*\\n[sc*factor]/1000
+.    if \\n[sc*wt-adj] .nr sc*wt-adj-factor \\n[sc*size]*\\n[sc*wt-adj]/1000
+.    if \\n[sc*extend] .nr sc*extend-factor \\n[sc*size]*\\n[sc*extend]/1000
+.    ie '\\$1'' \{\
+.       nr #SMALLCAPS_ON 1
+.       nr #LOOP 0 1
+.       while \\n+[#LOOP]<=58 \{\
+.          char \\*[$c\\n[#LOOP]] \
+\Z'\s[\\n[sc*size]u+\\n[sc*extend-factor]u]\H'-\\n[sc*extend-factor]u'\
+\\*[$C\\n[#LOOP]]'\
+\h'\\n[sc*wt-adj-factor]u'\\*[$C\\n[#LOOP]]\s[0]
+.       \}
+.    \}
+.    el \{\
+.       nr #LOOP 0 1
+.       while \\n+[#LOOP]<=58 \{\
+.          rchar \\*[$c\\n[#LOOP]]
+.      \}
+.      rr sc*wt-adj-factor
+.      rr sc*extend-factor
+.      rr #SMALLCAPS_ON
+.    \}
+.END
+\#
+\# SMALLCAPS_SIZE
+\# --------------
+\# *Arguments:
+\#   <size> [ <weight adjustment>
+\# *Function:
+\#   Sets registers 'sc*factor', 'sc*wt-adj', and sc*extend.
+\# *Notes:
+\#   Weight adjustment pseudo-emboldens small caps to visually match the
+\#   weight of the larger real caps.
+\#
+\#   Both sc*factor (size) and sc*wt-adj (weight adjustment) args are
+\#   expressed as percentages of type size.
+\#
+.MAC SMALLCAPS_STYLE END
+.    nr #LOOP 0 1
+.    while \\n+[#LOOP]<=\\n[#NUM_ARGS] \{\
+.       if '\\$1'SIZE' \{\
+.          shift
+.          nr sc*factor (z;\\$1)/100
+.          shift
+.       \}
+.       if '\\$1'WEIGHT_ADJ' \{\
+.          shift
+.          nr sc*wt-adj (z;\\$1)/100
+.          shift
+.       \}
+.       if '\\$1'EXTEND' \{\
+.          shift
+.          nr sc*extend (z;\\$1)/100
+.          shift
+.       \}
+.    \}
+.    if \\n[sc*wt-adj]=0 .rr sc*wt-adj
+.    if \\n[sc*extend]=0 .rr sc*extend
+.END
+.
+.SMALLCAPS_STYLE \
+SIZE 74 \
+WEIGHT_ADJ .3 \
+EXTEND 5
+\#
 \# SIZESPECS
 \# ---------
 \# Argument:
@@ -3913,32 +4036,30 @@ y\R'#DESCENDER \\n[.cdp]'
 \#
 \# +++TYPESETTING ALIASES+++
 \#
-.ALIAS    ADD_SPACE       ALD
-.ALIAS    CENTRE          CENTER
-.ALIAS    COLOUR          COLOR
-.ALIAS    COMMENT         SILENT
-.ALIAS    CONDENSE        CONDENSE_OR_EXTEND
-.ALIAS    EXTEND          CONDENSE_OR_EXTEND
-.ALIAS    FAM             FAMILY
-.ALIAS    FONT            FT
-.ALIAS    HYPHENATE       HY
-.ALIAS    HYPHENATION     HY
-.ALIAS    HYSET           HY_SET
-.ALIAS    IBQ             IBX
-.ALIAS    ILQ             ILX
-.ALIAS    IQ              IX
-.ALIAS    IRQ             IRX
-.ALIAS    LIG             LIGATURES
-.ALIAS    NEWCOLOUR       NEWCOLOR
-.ALIAS    PADMARKER       PAD_MARKER
-.ALIAS    SP              ALD
-.ALIAS    SPACE           ALD
-.ALIAS    TABSET          TAB_SET
-.ALIAS    TB              TAB
-.ALIAS    UNDERSCORE_2    UNDERSCORE2
-.ALIAS    XCOLOUR         XCOLOR
-.ALIAS    PDF_LINK_COLOUR PDF_LINK_COLOR
-.ALIAS    AUTO_TOC_RELOCATE AUTO_RELOCATE_TOC
+.ALIAS ADD_SPACE         ALD
+.ALIAS CENTRE            CENTER
+.ALIAS COLOUR            COLOR
+.ALIAS COMMENT           SILENT
+.ALIAS CONDENSE          CONDENSE_OR_EXTEND
+.ALIAS EXTEND            CONDENSE_OR_EXTEND
+.ALIAS FAM               FAMILY
+.ALIAS FONT              FT
+.ALIAS HYPHENATE         HY
+.ALIAS HYPHENATION       HY
+.ALIAS HYSET             HY_SET
+.ALIAS IBQ               IBX
+.ALIAS ILQ               ILX
+.ALIAS IQ                IX
+.ALIAS IRQ               IRX
+.ALIAS LIG               LIGATURES
+.ALIAS NEWCOLOUR         NEWCOLOR
+.ALIAS PADMARKER         PAD_MARKER
+.ALIAS SP                ALD
+.ALIAS SPACE             ALD
+.ALIAS TABSET            TAB_SET
+.ALIAS TB                TAB
+.ALIAS UNDERSCORE_2      UNDERSCORE2
+.ALIAS XCOLOUR           XCOLOR
 \#
 \# ====================================================================
 \#
@@ -3946,7 +4067,7 @@ y\R'#DESCENDER \\n[.cdp]'
 \# ===============================================
 \#
 \# DOC_MACRO_ERROR
-\# ----------
+\# ---------------
 \# *Arguments:
 \#   None.
 \# *Function:
@@ -3962,7 +4083,7 @@ y\R'#DESCENDER \\n[.cdp]'
 .    if '\\$1'DOC_QUAD'        .ds $REPLACEMENT QUAD
 .    tm1 "[mom]: \\$1 at line \\n[.c] of '\\n[.F]' should not be used before START.
 .    tm1 "       Use \\*[$REPLACEMENT] instead.
-.    ab  Aborting.
+.    ab   [mom]: Aborting.
 .END
 \#
 \# +++PAGE DIMENSIONS+++
@@ -4059,8 +4180,10 @@ y\R'#DESCENDER \\n[.cdp]'
 .       if !d$PAPER .PAPER LETTER
 .       if '\\$1'TYPEWRITE' \{\
 .          nr #PRINT_STYLE 1
-.          if !\\n[#DOC_TYPE]=4 .L_MARGIN 6P
-.          if !\\n[#DOC_TYPE]=4 .R_MARGIN 6P
+.          if !\\n[#DOC_TYPE]=4 \{\
+.             L_MARGIN 6P
+.             R_MARGIN 6P
+.          \}
 .          ds $TYPEWRITER_FAM C
 .          ds $TYPEWRITER_PS  12
 .          TYPEWRITER
@@ -4069,7 +4192,7 @@ y\R'#DESCENDER \\n[.cdp]'
 .             nr #SINGLE_SPACE 1
 .             vs 12
 .             ie \\n[#DOC_TYPE]=4 .nr #FOOTER_ADJ \\n[.v]
-.             el .nr #FOOTER_ADJ \\n[.v]*2
+.             el .nr #FOOTER_ADJ \\n[.v]
 .             nr #ORIGINAL_DOC_LEAD \\n[.v]
 .          \}
 .          el \{\
@@ -4103,8 +4226,12 @@ y\R'#DESCENDER \\n[.cdp]'
 .       \}
 .       if '\\$1'TYPESET' \{\
 .          nr #PRINT_STYLE 2
-.          if !\\n[#DOC_TYPE]=4 .L_MARGIN 6P
-.          if !\\n[#DOC_TYPE]=4 .R_MARGIN 6P
+.          if !\\n[#DOC_TYPE]=5 \{\
+.             if !\\n[#DOC_TYPE]=4 \{\
+.                L_MARGIN 6P
+.                R_MARGIN 6P
+.             \}
+.          \}
 .          FAMILY  T
 .          FT      R
 .          if !\\n[#DOC_TYPE]=4 .ps 12.5
@@ -4132,15 +4259,16 @@ y\R'#DESCENDER \\n[.cdp]'
 .       nr #LOOP 9       \" loop count
 .       while \\n+[#HD_LEVEL]<=\\n[#LOOP] \{\
 .           HEADING_STYLE \\n[#HD_LEVEL] \
-            FONT   B \
+            FONT   \
             SIZE  +0 \
-            QUAD   L \
-            COLOR  black
+            QUAD  L  \
+            NEEDS 1 \
+            COLOR black
 .\"  Set up default style for nine levels of TOC headings
 .           TOC_ENTRY_STYLE \\n[#HD_LEVEL] \
-            FONT   R \
+            FONT   \
             SIZE  +0 \
-            COLOR  black
+            COLOR black
 .       \}
 .\" Set up decreasing sizes for headings levels 1 - 3, starting at +3
 .       nr #HD_LEVEL 0 1 \" loop step
@@ -4161,7 +4289,7 @@ y\R'#DESCENDER \\n[.cdp]'
 .    \}
 .END
 \#
-\# PRINTSTYLE TYPEWRITE control.
+\# Set limited parameters to TYPEWRITE.
 \#
 .MAC TYPEWRITER_FAMILY END
 .    ds $TYPEWRITER_FAM \\$1
@@ -4187,7 +4315,7 @@ y\R'#DESCENDER \\n[.cdp]'
 \#   Instructs TYPEWRITE to treat italics as italics, whether
 \#   invoked via control lines or inline.
 \# *Notes:
-\#   ITALIC_MEANS_ITALIC and UNDERLINE_ITALIC are mututally exclusive,
+\#   ITALIC_MEANS_ITALIC and UNDERLINE_ITALIC are mutually exclusive,
 \#   hence invoking the one automatically turns off the other.
 \#
 .MAC ITALIC_MEANS_ITALIC END
@@ -4211,7 +4339,7 @@ y\R'#DESCENDER \\n[.cdp]'
 \#   Instructs TYPEWRITE to underline italics, whether invoked
 \#   via control lines or inline.
 \# *Notes:
-\#   UNDERLINE_ITALIC and ITALIC_MEANS_ITALIC are mututally exclusive,
+\#   UNDERLINE_ITALIC and ITALIC_MEANS_ITALIC are mutually exclusive,
 \#   hence invoking the one automatically turns off the other.
 \#
 \#   UNDERLINE_ITALIC is the default for TYPEWRITE.
@@ -4242,7 +4370,7 @@ y\R'#DESCENDER \\n[.cdp]'
 \#   italic but didn't have it, ergo the need to tell TYPEWRITE to
 \#   treat \*[SLANT] as italic (i.e. underlined).
 \#
-\#   UNDERLINE_SLANT and SLANT_MEANS_SLANT are mututally exclusive,
+\#   UNDERLINE_SLANT and SLANT_MEANS_SLANT are mutually exclusive,
 \#   hence invoking the one automatically turns off the other.
 \#
 \#   UNDERLINE_SLANT is the default for TYPEWRITE.
@@ -4525,24 +4653,34 @@ y\R'#DESCENDER \\n[.cdp]'
 \#
 \# ====================================================================
 \#
-\# +++COLLECT DOC INFO -- STRINGS AND REGISTERS FOR REFERENCE MACROS+++
+\# +++COLLECT DOC INFO (reference macros, metadata)+++
 \#
 \# *Arguments:
 \#   various string/register arguments
 \# *Function:
-\#   Collect information about documents.
+\#   Set strings and registers for covers, docheaders, page headers.
 \#
 .MAC DOCTITLE END
 .    rr #DOCTITLE_NUM
 .    nr #DOCTITLE_NUM 0 1
 .    while \\n[#NUM_ARGS]>\\n[#DOCTITLE_NUM] \{\
-.       ds $DOC_TITLE_\\n+[#DOCTITLE_NUM] \\$\\n[#DOCTITLE_NUM]
+.       ds $DOCTITLE_\\n+[#DOCTITLE_NUM] \\$\\n[#DOCTITLE_NUM]
 .    \}
-.    ds $DOC_TITLE \\$*
-.    PDF_TITLE \\*[$DOC_TITLE]
+.    ds $DOCTITLE \\$*
+.    PDF_TITLE \\*[$DOCTITLE]
 .END
 \#
 .MAC TITLE END \"Document title
+.    if '\\$1'DOC_COVER' \{\
+.       shift
+.       DOC_COVERTITLE \\$@
+.       return
+.    \}
+.    if '\\$1'COVER' \{\
+.       shift
+.       COVERTITLE \\$@
+.       return
+.    \}
 .    ie \\n[#NUM_ARGS]=0 \{\
 .       if \\n[#TITLE_NUM] \{\
 .          nr #ITEM 0 1
@@ -4563,47 +4701,47 @@ y\R'#DESCENDER \\n[.cdp]'
 \#
 .MAC SUBTITLE END \"Document sub-title
 .    ie \\n[#NUM_ARGS]=0 \{\
-.       if \\n[#SUBTITLE_NUM] \{\
+.       if \\n[#DOC_COVER_SUBTITLE_NUM] \
+.          ds COVER_ DOC_COVER_
+.       if \\n[#COVER_SUBTITLE_NUM] \
+.          ds COVER_ COVER_
+.       if \\n[#\\*[COVER_]SUBTITLE_NUM] \{\
 .          nr #ITEM 0 1
-.          while \\n[#SUBTITLE_NUM]>\\n[#ITEM] \{\
-.             rm $SUBTITLE_\\n+[#ITEM]
+.          while \\n[#\\*[COVER_]SUBTITLE_NUM]>\\n[#ITEM] \{\
+.             rm $\\*[COVER_]SUBTITLE_\\n+[#ITEM]
 .          \}
-.          rr #SUBTITLE_NUM
+.          rr #\\*[COVER_]SUBTITLE_NUM
 .          rm $SUBTITLE
 .       \}
 .    \}
 .    el \{\
 .       if '\\$1'DOC_COVER' \{\
+.          ds COVER_ DOC_COVER_
 .          shift
-.          nr #SUBTITLE_DOC_COVER_NUM 0 1
-.          while \\n[#NUM_ARGS]>\\n[#SUBTITLE_DOC_COVER_NUM] \{\
-.              ds $SUBTITLE_DOC_COVER_\\n+[#SUBTITLE_DOC_COVER_NUM] \
-\\$\\n[#SUBTITLE_DOC_COVER_NUM]
-.          \}
-.          return
 .       \}
 .       if '\\$1'COVER' \{\
+.          ds COVER_ COVER_
 .          shift
-.          nr #SUBTITLE_COVER_NUM 0 1
-.          while \\n[#NUM_ARGS]>\\n[#SUBTITLE_COVER_NUM] \{\
-.              ds $SUBTITLE_COVER_\\n+[#SUBTITLE_COVER_NUM] \
-\\$\\n[#SUBTITLE_COVER_NUM]
-.          \}
-.          return
 .       \}
-.       nr #SUBTITLE_NUM 0 1
-.       while \\n[#NUM_ARGS]>\\n[#SUBTITLE_NUM] \{\
-.          ds $SUBTITLE_\\n+[#SUBTITLE_NUM] \\$\\n[#SUBTITLE_NUM]
+.       nr #\\*[COVER_]SUBTITLE_NUM 0 1
+.       while \\n[#NUM_ARGS]>\\n[#\\*[COVER_]SUBTITLE_NUM] \{\
+.          ds $\\*[COVER_]SUBTITLE_\\n+[#\\*[COVER_]SUBTITLE_NUM] \
+\\$\\n[#\\*[COVER_]SUBTITLE_NUM]
 .       \}
-.          ds $SUBTITLE \\$*
+.       rm COVER_
+.       ds $SUBTITLE \\$*
 .    \}
 .END
 \#
 .MAC CHAPTER END \"If document is a chapter, the chapter number
 .    nr #CHAPTER_CALLED 1
 .    ds $CHAPTER \\$1
-.    if r #CH_NUM \
-.       if \B'\\*[$CHAPTER]' .nr #CH_NUM \\*[$CHAPTER]
+.    if \B'\\*[$CHAPTER]' .nr #CH_NUM \\*[$CHAPTER]
+.    if !r #CH_NUM .nr #CH_NUM 1
+.END
+.
+.MAC CHAPTER_NUMBER END
+.    nr #CH_NUM \\$1
 .END
 \#
 .MAC CHAPTER_TITLE END \" This defines what comes after Chapter #
@@ -4642,28 +4780,22 @@ y\R'#DESCENDER \\n[.cdp]'
 .END
 \#
 .MAC AUTHOR END \"Author.  Enclose all args fully in double quotes.
+.    rr #NO_PRINT_AUTHOR
 .    if '\\$1'DOC_COVER' \{\
+.       ds COVER_ DOC_COVER_
 .       shift
-.       nr #AUTHOR_DOCCOVER_NUM 0 1
-.       while \\n[#NUM_ARGS]>\\n[#AUTHOR_DOCCOVER_NUM] \{\
-.           ds $AUTHOR_DOCCOVER_\\n+[#AUTHOR_DOCCOVER_NUM] \
-\\$\\n[#AUTHOR_DOCCOVER_NUM]
-.       \}
-.       return
 .    \}
 .    if '\\$1'COVER' \{\
+.       ds COVER_ COVER_
 .       shift
-.       nr #AUTHOR_COVER_NUM 0 1
-.           while \\n[#NUM_ARGS]>\\n[#AUTHOR_COVER_NUM] \{\
-.              ds $AUTHOR_COVER_\\n+[#AUTHOR_COVER_NUM] \\$\\n[#AUTHOR_COVER_NUM]
-.           \}
-.       return
 .    \}
-.    nr #AUTHOR_NUM 0 1
-.    rm $AUTHORS
-.    while \\n[#NUM_ARGS]>\\n[#AUTHOR_NUM] \{\
-.       ds $AUTHOR_\\n+[#AUTHOR_NUM] \\$\\n[#AUTHOR_NUM]
-.       as $AUTHORS \\*[$AUTHOR_\\n[#AUTHOR_NUM]], \"
+.    nr #\\*[COVER_]AUTHOR_NUM 0 1
+.    while \\n[#NUM_ARGS]>\\n[#\\*[COVER_]AUTHOR_NUM] \{\
+.       ds $\\*[COVER_]AUTHOR_\\n+[#\\*[COVER_]AUTHOR_NUM] \
+\\$\\n[#\\*[COVER_]AUTHOR_NUM]
+.       if !'\\*[$\\*[COVER_]AUTHOR_\\n[#\\*[COVER_]AUTHOR_NUM]]'' \
+.          as $AUTHORS \
+"\\*[$\\*[COVER_]AUTHOR_\\n[#\\*[COVER_]AUTHOR_NUM]], \"
 .    \}
 .    ds $AUTHOR \\*[$AUTHOR_1]
 .    substring $AUTHORS 0 -2
@@ -4671,90 +4803,67 @@ y\R'#DESCENDER \\n[.cdp]'
 .    pdfmomclean PDF_AUTHORS
 .    nop \!x X ps:exec [/Author (\\*[PDF_AUTHORS]) /DOCINFO pdfmark
 .END
-\#
+.
 .ALIAS EDITOR AUTHOR
 \#
 .MAC COPYRIGHT END          \"For use on cover pages only
-.   ie \\n[#NUM_ARGS]=1 \{\
-.       ds $COPYRIGHT \[co]\\$1
-.       rm $COPYRIGHT_DOCCOVER
-.       rm $COPYRIGHT_COVER
-.    \}
-.    el \{\
-.       if '\\$1'DOC_COVER' .ds $COPYRIGHT_DOCCOVER \[co]\\$2
-.       if '\\$1'COVER'     .ds $COPYRIGHT_COVER \[co]\\$2
-.    \}
+.   ie \\n[#NUM_ARGS]=1 \
+.       ds $COVER_COPYRIGHT \[co]\\$1
+.    el \
+.       if '\\$1'DOC_COVER' .ds $DOC_COVER_COPYRIGHT \[co]\\$2
+.END
+\#
+.MAC COPYRIGHT_V_ADJUST END
+.    ds $COPYRIGHT_V_ADJ \\$1
 .END
 \#
-.MAC MISC END \"For use on cover pages only; enclose all args in double quotes
+.MAC MISC END \"Doc cover and cover pages only; enclose all args in double quotes
+.    rm COVER_
 .    ie \\n[#NUM_ARGS]=0 \{\
-.       if \\n[#MISC_NUM] \{\
-.          nr #ITEM 0 1
-.          while \\n[#MISC_NUM]>\\n[#ITEM] \{\
-.             rm $MISC_\\n+[#ITEM]
-.          \}
-.          rr #MISC_NUM
-.          rr #NUM_MISCS
-.       \}
-.       if \\n[#MISC_DOC_COVER_NUM] \{\
-.          nr #ITEM 0 1
-.          while \\n[#MISC_DOC_COVER_NUM]>\\n[#ITEM] \{\
-.             rm $MISC_DOC_COVER_\\n+[#ITEM]
+.       if \\n[#DOC_COVER_MISC_LINES] \
+.          ds COVER_ DOC_COVER_
+.       if \\n[#COVER_MISC_LINES] \
+.          ds COVER_ COVER_
+.       if \\n[#\\*[COVER_]MISC_LINES] \{\
+.          nr #LINE 0 1
+.          while \\n[#\\*[COVER_]MISC_LINES]>\\n[#LINE] \{\
+.             rm $\\*[COVER_]MISC_\\n+[#LINE]
 .          \}
-.          rr #MISC_DOC_COVER_NUM
-.          rr #NUM_MISCS
-.       \}
-.       if \\n[#MISC_COVER_NUM] \{\
-.          nr #ITEM 0 1
-.          while \\n[#MISC_COVER_NUM]>\\n[#ITEM] \{\
-.             rm $MISC_COVER_\\n+[#ITEM]
-.          \}
-.          rr #MISC_COVER_NUM
-.          rr #NUM_MISCS
+.          rr #\\*[COVER_]MISC_LINES
 .       \}
 .    \}
 .    el \{\
-.       if !'\\$1'DOC_COVER' \{\
-.         if !'\\$1'COVER' .nr #NEITHER 1
-.       \}
-.       if !'\\$1'COVER' \{\
-.          if !'\\$1'DOC_COVER' .nr #NEITHER 1
-.       \}
 .       if '\\$1'DOC_COVER' \{\
+.          ds COVER_ DOC_COVER_
 .          shift
-.          nr #MISC_DOC_COVER_NUM 0 1
-.          while \\n[#NUM_ARGS]>\\n[#MISC_DOC_COVER_NUM] \{\
-.             ds $MISC_DOC_COVER_\\n+[#MISC_DOC_COVER_NUM] \
-\\$[\\n[#MISC_DOC_COVER_NUM]]
-.          \}
-.          nr #NUM_MISCS_DOCCOVER \\n[#NUM_ARGS]
 .       \}
 .       if '\\$1'COVER' \{\
+.          ds COVER_ COVER_
 .          shift
-.          nr #MISC_COVER_NUM 0 1
-.          while \\n[#NUM_ARGS]>\\n[#MISC_COVER_NUM] \{\
-.             ds $MISC_COVER_\\n+[#MISC_COVER_NUM] \\$[\\n[#MISC_COVER_NUM]]
-.          \}
-.          nr #NUM_MISCS_COVER \\n[#NUM_ARGS]
 .       \}
-.       if \\n[#NEITHER]=1 \{\
-.          nr #MISC_NUM 0 1
-.          while \\n[#NUM_ARGS]>\\n[#MISC_NUM] \{\
-.             ds $MISC_\\n+[#MISC_NUM] \\$[\\n[#MISC_NUM]]
-.          \}
-.          nr #NUM_MISCS \\n[#NUM_ARGS]
-.          rr #NEITHER
+.       nr #\\*[COVER_]MISC_LINE 0 1
+.       while \\n[#NUM_ARGS]>\\n[#\\*[COVER_]MISC_LINE] \{\
+.          ds $\\*[COVER_]MISC_\\n+[#\\*[COVER_]MISC_LINE] \
+\\$[\\n[#\\*[COVER_]MISC_LINE]]
 .       \}
-.   \}
+.       nr #\\*[COVER_]MISC_LINES \\n[#NUM_ARGS]
+.       rm COVER_
+.    \}
 .END
 \#
-.MAC PAGENUMBER END \"Page # that appears on page one.
+\# Page number that appears on page one.
+.MAC PAGENUMBER END
 .    nr #n%_AT_PAGENUM_SET \\n%
 .    nr #PAGE_NUM_ADJ \\$1-\\n[#n%_AT_PAGENUM_SET]
 .    rr #n%_AT_PAGENUM_SET
 .    nr #PAGE_NUM_SET 1
 .END
 \#
+\# Replacement string for pagenumber.
+.MAC PAGENUMBER_STRING END
+.    ds $PAGENUM_STRING \\$1
+.END
+\#
 \# ====================================================================
 \#
 \# +++TYPE OF DOCUMENT+++
@@ -4772,6 +4881,7 @@ y\R'#DESCENDER \\n[.cdp]'
 .    if '\\$1'DEFAULT' .nr #DOC_TYPE 1
 .    if '\\$1'CHAPTER' .nr #DOC_TYPE 2
 .    if '\\$1'NAMED' \{\
+.       rr #NO_PRINT_DOCTYPE
 .       ds $DOC_TYPE \\$2
 .       nr #DOC_TYPE 3
 .    \}
@@ -4798,6 +4908,105 @@ y\R'#DESCENDER \\n[.cdp]'
 .       FOOTER_ON_FIRST_PAGE
 .       em ALL_DONE
 .    \}
+.    if '\\$1'SLIDES' \{\
+.       shift
+.       nr #DOC_TYPE 5
+.       PRINTSTYLE TYPESET
+.       FAMILY H
+.       QUAD CENTER
+.       QUOTE_STYLE QUAD CENTER
+.       BLOCKQUOTE_STYLE \
+          QUAD J \
+          INDENT \\n[.l]u/5u
+.       PARA_INDENT 0
+.       NO_SHIM
+.       NO_FLEX
+.       HEADING_STYLE 1 \
+          SIZE +8 \
+          QUAD CENTER
+.       HEADING_STYLE 2 \
+          SIZE +4 \
+          QUAD CENTER
+.       HEADING_STYLE 3 \
+          SIZE +2 \
+          QUAD CENTER
+.       DOCHEADER off
+.       PAGINATION off
+.       PAGENUM_HYPHENS off
+.       HEADERS off
+.       FOOTERS off
+.       HEADERS_PLAIN
+.       FOOTERS_PLAIN
+.       nr loop-count 0 1
+.       nr loop-counter \\n[#NUM_ARGS]
+.\" Default 16:9 setup if no ASPECT
+.       PAGE 11i 6.1875i 36p 36p 80p 72p
+.       PT_SIZE 14
+.       AUTOLEAD 4
+.       HEADER_SIZE  -2
+.       while \\n+[loop-count]<=\\n[loop-counter] \{\
+.          if '\\$1'ASPECT' \{\
+.             if '\\$2'4:3' \{\
+.                PAGE 11i 8.25i 36p 36p 90p 84p
+.                PT_SIZE 16
+.                AUTOLEAD 6
+.                HEADER_SIZE  -3
+.             \}
+.             if '\\$2'16:9' \{\
+.                PAGE 11i 6.1875i 36p 36p 80p 72p
+.                PT_SIZE 14
+.                AUTOLEAD 4
+.                HEADER_SIZE  -2
+.             \}
+.             shift 2
+.          \}
+.          if '\\$1'HEADER' \{\
+.             shift 1
+.             nr #SLIDE_HEADERS 1
+.             ds $SLIDE_HDR_L \\$1
+.             ds $SLIDE_HDR_C \\$2
+.             ds $SLIDE_HDR_R \\$3
+.             HEADER_MARGIN 45p
+.             shift 3
+.          \}
+.          if '\\$1'FOOTER' \{\
+.             shift 1
+.             nr #SLIDE_FOOTERS 1
+.             ds $SLIDE_FTR_L \\$1
+.             ds $SLIDE_FTR_C \\$2
+.             ds $SLIDE_FTR_R \\$3
+.             shift 3
+.          \}
+.          if '\\$1'TRANSITION' \{\
+.             shift 1
+.             ds $TRANS_TYPE \\$1
+.             shift 1
+.          \}
+.          if '\\$1'PAUSE' \{\
+.             shift 1
+.             ds $PAUSE_TYPE \\$1
+.             shift 1
+.          \}
+.       \}
+.       if d $TRANS_TYPE \
+.          pdftransition PAGE \\*[$TRANS_TYPE]
+.       if d $PAUSE_TYPE \
+.          pdftransition BLOCK \\*[$PAUSE_TYPE]
+.    \}
+.    ie \\n[#SLIDE_HEADERS]+\\n[#SLIDE_FOOTERS]=2 \{\
+.       HEADERS_AND_FOOTERS L "^\\*[$SLIDE_HDR_L]#\\*[$SLIDE_HDR_C]#\\*[$SLIDE_HDR_R]^" \
+                            L "^\\*[$SLIDE_FTR_L]#\\*[$SLIDE_FTR_C]#\\*[$SLIDE_FTR_R]^"
+.    \}
+.    el \{\
+.       if \\n[#SLIDE_HEADERS] \{\
+.          HEADERS
+.          HEADER_RECTO L "^\\*[$SLIDE_HDR_L]#\\*[$SLIDE_HDR_C]#\\*[$SLIDE_HDR_R]^" \
+.       \}
+.       if \\n[#SLIDE_FOOTERS] \{\
+.          FOOTERS
+.          FOOTER_RECTO L "^\\*[$SLIDE_FTR_L]#\\*[$SLIDE_FTR_C]#\\*[$SLIDE_FTR_R]^"
+.       \}
+.    \}
 .END
 \#
 \# +++LETTER MACROS+++
@@ -4877,11 +5086,14 @@ y\R'#DESCENDER \\n[.cdp]'
 .MAC CLOSING END
 .    if '\\*[$SIG_SPACE]'' .ds $SIG_SPACE 3v
 .    ie ( (2v+\\*[$SIG_SPACE]) > \\n[.t] ) \{\
-.       ch HEADER
-.       ch FOOTER
-.       br
-.       tm1 "[mom]: Insufficient room for \\$0 and signature line.
-.       ab Aborting '\\n[.F]'.
+.       ie !\\n[@TOP] \{\
+.          ch HEADER
+.          ch FOOTER
+.          br
+.          tm1 "[mom]: Insufficient room for \\$0 and signature line.
+.          ab   [mom]: Terminating '\\n[.F]' before closing.
+.       \}
+.       el .sp
 .    \}
 .    el .br
 .    nr #CLOSING 1
@@ -4924,530 +5136,641 @@ y\R'#DESCENDER \\n[.cdp]'
 \#
 \# ====================================================================
 \#
-\# +++DEFAULTS+++
+\# +++DEFAULTS FOR DOCUMENT PROCESSING+++
 \#
 \# TYPE-STYLE CONTROL MACROS
 \# -------------------------
-\# The control macros for family, font, size, quad and color are here
-\# grouped together.  Each (e.g. _FAMILY or _FONT) tests for a calling
-\# alias before performing the action(s) appropriate to the calling
-\# macro.  Defaults for all these guys are set in DEFAULTS, and listed
-\# in the "Control Macros" section of the documentation pertinent to
-\# the macro whose style is to be changed.
+\# The control macros for family, font, size, color and quad are
+\# here grouped together.  Each (e.g., _FAMILY) uses the calling alias
+\# to determine the document element to which the style parameter
+\# applies.  Defaults for all these guys are set in DEFAULTS, and
+\# listed in the "Control Macros" section of the documentation
+\# pertinent to the element whose style is to be changed.
 \#
 .MAC _FAMILY END
-.    if '\\$0'AUTHOR_FAMILY' \
-.       ds $AUTHOR_FAM \\$1
-.    if '\\$0'BIBLIOGRAPHY_FAMILY' \
-.       ds $BIB_FAM \\$1
-.    if '\\$0'BIBLIOGRAPHY_STRING_FAMILY' \
-.       ds $BIB_STRING_FAM \\$1
-.    if '\\$0'BLOCKQUOTE_FAMILY' \
-.       ds $BQUOTE_FAM \\$1
-.    if '\\$0'CITATION_FAMILY' \
-.       ds $BQUOTE_FAM \\$1
-.    if '\\$0'CITE_FAMILY' \
-.       ds $BQUOTE_FAM \\$1
-.    if '\\$0'CHAPTER_TITLE_FAMILY' \
-.       ds $CHAPTER_TITLE_FAM \\$1
-.    if '\\$0'COVER_AUTHOR_FAMILY' \
-.       ds $COVER_AUTHOR_FAM \\$1
-.    if '\\$0'COVER_CHAPTER_TITLE_FAMILY' \
-.       ds $COVER_CHAPTER_TITLE_FAM \\$1
-.    if '\\$0'COVER_COPYRIGHT_FAMILY' \
-.       ds $COVER_COPYRIGHT_FAM \\$1
-.    if '\\$0'COVER_DOCTYPE_FAMILY' \
-.       ds $COVER_DOCTYPE_FAM \\$1
-.    if '\\$0'COVER_FAMILY' \
-.       ds $COVER_FAM \\$1
-.    if '\\$0'COVER_MISC_FAMILY' \
-.       ds $COVER_MISC_FAM \\$1
-.    if '\\$0'COVER_SUBTITLE_FAMILY' \
-.       ds $COVER_SUBTITLE_FAM \\$1
-.    if '\\$0'COVER_TITLE_FAMILY' \
-.       ds $COVER_TITLE_FAM \\$1
-.    if '\\$0'DOC_COVER_AUTHOR_FAMILY' \
-.       ds $DOC_COVER_AUTHOR_FAM \\$1
-.    if '\\$0'DOC_COVER_CHAPTER_TITLE_FAMILY' \
-.       ds $DOC_COVER_CHAPTER_TITLE_FAM \\$1
-.    if '\\$0'DOC_COVER_COPYRIGHT_FAMILY' \
-.       ds $DOC_COVER_COPYRIGHT_FAM \\$1
-.    if '\\$0'DOC_COVER_DOCTYPE_FAMILY' \
-.       ds $DOC_COVER_DOCTYPE_FAM \\$1
-.    if '\\$0'DOC_COVER_FAMILY' \
-.       ds $DOC_COVER_FAM \\$1
-.    if '\\$0'DOC_COVER_MISC_FAMILY' \
-.       ds $DOC_COVER_MISC_FAM \\$1
-.    if '\\$0'DOC_COVER_SUBTITLE_FAMILY' \
-.       ds $DOC_COVER_SUBTITLE_FAM \\$1
-.    if '\\$0'DOC_COVER_TITLE_FAMILY' \
-.       ds $DOC_COVER_TITLE_FAM \\$1
-.    if '\\$0'DOCHEADER_FAMILY' \
-.       ds $DOCHEADER_FAM \\$1
-.    if '\\$0'DOCTYPE_FAMILY' \
-.       ds $DOCTYPE_FAM \\$1
-.    if '\\$0'ENDNOTE_FAMILY' \
-.       ds $EN_FAM \\$1
-.    if '\\$0'ENDNOTE_NUMBER_FAMILY' \
-.       ds $EN_NUMBER_FAM \\$1
-.    if '\\$0'ENDNOTE_LINENUMBER_FAMILY' \
-.       ds $EN_LN_FAM \\$1
-.    if '\\$0'ENDNOTE_STRING_FAMILY' \
-.       ds $EN_STRING_FAM \\$1
-.    if '\\$0'ENDNOTE_TITLE_FAMILY' \
-.       ds $EN_TITLE_FAM \\$1
-.    if '\\$0'EPIGRAPH_FAMILY' \
-.       ds $EPI_FAM \\$1
-.    if '\\$0'FOOTNOTE_FAMILY' \
-.       ds $FN_FAM \\$1
-.    if '\\$0'HDRFTR_CENTER_FAMILY' \
-.       ds $HDRFTR_CENTER_FAM \\$1
-.    if '\\$0'HDRFTR_FAMILY' \{\
-.       ds $HDRFTR_FAM        \\$1
-.       ds $HDRFTR_LEFT_FAM   \\$1
-.       ds $HDRFTR_CENTER_FAM \\$1
-.       ds $HDRFTR_RIGHT_FAM  \\$1
-.    \}
-.    if '\\$0'HDRFTR_LEFT_FAMILY' \
-.       ds $HDRFTR_LEFT_FAM \\$1
-.    if '\\$0'HDRFTR_RIGHT_FAMILY' \
-.       ds $HDRFTR_RIGHT_FAM \\$1
-.    if '\\$0'LINENUMBER_FAMILY' \
-.       ds $LN_FAM \\$1
-.    if '\\$0'PAGENUM_FAMILY' \
-.       ds $PAGE_NUM_FAM \\$1
-.    if '\\$0'QUOTE_FAMILY' \
-.       ds $QUOTE_FAM \\$1
-.    if '\\$0'SUBTITLE_FAMILY' \
-.       ds $SUBTITLE_FAM \\$1
-.    if '\\$0'TITLE_FAMILY' \
-.       ds $TITLE_FAM \\$1
-.    if '\\$0'TOC_FAMILY' \
-.       ds $TOC_FAM \\$1
-.    if '\\$0'TOC_FAM' \
-.       ds $TOC_FAM \\$1
-.    if '\\$0'TOC_HEADER_FAMILY' \
-.       ds $TOC_HEADER_FAM \\$1
-.    if '\\$0'TOC_PN_FAMILY' \
-.       ds $TOC_PN_FAM \\$1
+.    ds PARAM      FAM
+.    ds ELEMENT    \\$0
+.    if '\\$0'COPYRIGHT_FAMILY' \
+.       ds ELEMENT COVER_COPYRIGHT_FAMILY
+.    ds FROM_ALIAS \\$0
+.    substring ELEMENT 0 -4    \" Strip 'ILY' from FAMILY
+.    ASSIGN_ELEMENT \\$1
 .END
 \#
 .MAC _FONT END
-.    if '\\$0'AUTHOR_FONT' \
-.       ds $AUTHOR_FT \\$1
-.    if '\\$0'BIBLIOGRAPHY_FONT' \
-.       ds $BIB_FT \\$1
-.    if '\\$0'BIBLIOGRAPHY_STRING_FONT' \
-.       ds $BIB_STRING_FT \\$1
-.    if '\\$0'BLOCKQUOTE_FONT' \
-.       ds $BQUOTE_FT \\$1
-.    if '\\$0'CITATION_FONT' \
-.       ds $BQUOTE_FT \\$1
-.    if '\\$0'CITE_FONT' \
-.       ds $BQUOTE_FT \\$1
-.    if '\\$0'CHAPTER_TITLE_FONT' \
-.       ds $CHAPTER_TITLE_FT \\$1
-.    if '\\$0'COVER_AUTHOR_FONT' \
-.       ds $COVER_AUTHOR_FT \\$1
-.    if '\\$0'COVER_CHAPTER_TITLE_FONT' \
-.       ds $COVER_CHAPTER_TITLE_FT \\$1
-.    if '\\$0'COVER_COPYRIGHT_FONT' \
-.       ds $COVER_COPYRIGHT_FT \\$1
-.    if '\\$0'COVER_DOCTYPE_FONT' \
-.       ds $COVER_DOCTYPE_FT \\$1
-.    if '\\$0'COVER_MISC_FONT' \
-.       ds $COVER_MISC_FT \\$1
-.    if '\\$0'COVER_SUBTITLE_FONT' \
-.       ds $COVER_SUBTITLE_FT \\$1
-.    if '\\$0'COVER_TITLE_FONT' \
-.       ds $COVER_TITLE_FT \\$1
-.    if '\\$0'DOC_COVER_AUTHOR_FONT' \
-.       ds $DOC_COVER_AUTHOR_FT \\$1
-.    if '\\$0'DOC_COVER_CHAPTER_TITLE_FONT' \
-.       ds $DOC_COVER_CHAPTER_TITLE_FT \\$1
-.    if '\\$0'DOC_COVER_COPYRIGHT_FONT' \
-.       ds $DOC_COVER_COPYRIGHT_FT \\$1
-.    if '\\$0'DOC_COVER_DOCTYPE_FONT' \
-.       ds $DOC_COVER_DOCTYPE_FT \\$1
-.    if '\\$0'DOC_COVER_MISC_FONT' \
-.       ds $DOC_COVER_MISC_FT \\$1
-.    if '\\$0'DOC_COVER_SUBTITLE_FONT' \
-.       ds $DOC_COVER_SUBTITLE_FT \\$1
-.    if '\\$0'DOC_COVER_TITLE_FONT' \
-.       ds $DOC_COVER_TITLE_FT \\$1
-.    if '\\$0'DOCTYPE_FONT' \
-.       ds $DOCTYPE_FT \\$1
-.    if '\\$0'ENDNOTE_FONT' \
-.       ds $EN_FT \\$1
-.    if '\\$0'ENDNOTE_NUMBER_FONT' \
-.       ds $EN_NUMBER_FT \\$1
-.    if '\\$0'ENDNOTE_LINENUMBER_FONT' \
-.       ds $EN_LN_FT \\$1
-.    if '\\$0'ENDNOTE_STRING_FONT' \
-.       ds $EN_STRING_FT \\$1
-.    if '\\$0'ENDNOTE_TITLE_FONT' \
-.       ds $EN_TITLE_FT \\$1
-.    if '\\$0'EPIGRAPH_FONT' \
-.       ds $EPI_FT \\$1
-.    if '\\$0'FOOTNOTE_FONT' \
-.       ds $FN_FT \\$1
-.    if '\\$0'HDRFTR_CENTER_FONT' \
-.       ds $HDRFTR_CENTER_FT \\$1
-.    if '\\$0'HDRFTR_LEFT_FONT' \
-.       ds $HDRFTR_LEFT_FT \\$1
-.    if '\\$0'HDRFTR_RIGHT_FONT' \
-.       ds $HDRFTR_RIGHT_FT \\$1
-.    if '\\$0'LINENUMBER_FONT' \
-.       ds $LN_FT \\$1
-.    if '\\$0'PAGENUM_FONT' \
-.       ds $PAGE_NUM_FT \\$1
-.    if '\\$0'QUOTE_FONT' \
-.       ds $QUOTE_FT \\$1
-.    if '\\$0'SUBTITLE_FONT' \
-.       ds $SUBTITLE_FT \\$1
-.    if '\\$0'TITLE_FONT' \
-.       ds $TITLE_FT \\$1
-.    if '\\$0'TOC_HEADER_FONT' \
-.       ds $TOC_HEADER_FT \\$1
-.    if '\\$0'TOC_PN_FONT' \
-.       ds $TOC_PN_FT \\$1
+.    ds PARAM      FT
+.    ds ELEMENT    \\$0
+.    ds FROM_ALIAS \\$0
+.    if '\\$0'COPYRIGHT_FONT' \
+.       ds ELEMENT COVER_COPYRIGHT_FONT
+.    substring ELEMENT 0 -5
+.    ds ELEMENT \\*[ELEMENT]FT \" ELEMENT is now \\$0_FT
+.    ASSIGN_ELEMENT \\$1
 .END
 \#
 .MAC _SIZE END
-.    if '\\$0'AUTHOR_SIZE' \
-.       ds $AUTHOR_SIZE_CHANGE \\$1
-.    if '\\$0'BIBLIOGRAPHY_STRING_SIZE' \
-.       ds $BIB_STRING_SIZE_CHANGE \\$1
-.    if '\\$0'BLOCKQUOTE_SIZE' \
-.       ds $BQUOTE_SIZE_CHANGE \\$1
-.    if '\\$0'CITATION_SIZE' \
-.       ds $BQUOTE_SIZE_CHANGE \\$1
-.    if '\\$0'CITE_SIZE' \
-.       ds $BQUOTE_SIZE_CHANGE \\$1
-.    if '\\$0'CHAPTER_TITLE_SIZE' \
-.       ds $CHAPTER_TITLE_SIZE_CHANGE \\$1
-.    if '\\$0'COVER_AUTHOR_SIZE' \
-.       ds $COVER_AUTHOR_SIZE_CHANGE \\$1
-.    if '\\$0'COVER_CHAPTER_TITLE_SIZE' \
-.       ds $COVER_CHAPTER_TITLE_SIZE_CHANGE \\$1
-.    if '\\$0'COVER_COPYRIGHT_SIZE' \
-.       ds $COVER_COPYRIGHT_SIZE_CHANGE \\$1
-.    if '\\$0'COVER_DOCTYPE_SIZE' \
-.       ds $COVER_DOCTYPE_SIZE_CHANGE \\$1
-.    if '\\$0'COVER_MISC_SIZE' \
-.       ds $COVER_MISC_SIZE_CHANGE \\$1
-.    if '\\$0'COVER_SUBTITLE_SIZE' \
-.       ds $COVER_SUBTITLE_SIZE_CHANGE \\$1
-.    if '\\$0'COVER_TITLE_SIZE' \
-.       ds $COVER_TITLE_SIZE_CHANGE \\$1
-.    if '\\$0'DOC_COVER_AUTHOR_SIZE' \
-.       ds $DOC_COVER_AUTHOR_SIZE_CHANGE \\$1
-.    if '\\$0'DOC_COVER_CHAPTER_TITLE_SIZE' \
-.       ds $DOC_COVER_CHAPTER_TITLE_SIZE_CHANGE \\$1
-.    if '\\$0'DOC_COVER_COPYRIGHT_SIZE' \
-.       ds $DOC_COVER_COPYRIGHT_SIZE_CHANGE \\$1
-.    if '\\$0'DOC_COVER_DOCTYPE_SIZE' \
-.       ds $DOC_COVER_DOCTYPE_SIZE_CHANGE \\$1
-.    if '\\$0'DOC_COVER_MISC_SIZE' \
-.       ds $DOC_COVER_MISC_SIZE_CHANGE \\$1
-.    if '\\$0'DOC_COVER_SUBTITLE_SIZE' \
-.       ds $DOC_COVER_SUBTITLE_SIZE_CHANGE \\$1
-.    if '\\$0'DOC_COVER_TITLE_SIZE' \
-.       ds $DOC_COVER_TITLE_SIZE_CHANGE \\$1
-.    if '\\$0'DOCTYPE_SIZE' \
-.       ds $DOCTYPE_SIZE_CHANGE \\$1
-.    if '\\$0'ENDNOTE_NUMBER_SIZE' \
-.       ds $EN_NUMBER_SIZE_CHANGE \\$1
-.    if '\\$0'ENDNOTE_LINENUMBER_SIZE' \
-.       ds $EN_LN_SIZE_CHANGE \\$1
-.    if '\\$0'ENDNOTE_STRING_SIZE' \
-.       ds $EN_STRING_SIZE_CHANGE \\$1
-.    if '\\$0'ENDNOTE_TITLE_SIZE' \
-.       ds $EN_TITLE_SIZE_CHANGE \\$1
-.    if '\\$0'EPIGRAPH_SIZE' \
-.       ds $EPI_SIZE_CHANGE \\$1
-.    if '\\$0'FOOTNOTE_SIZE' \
-.       ds $FN_SIZE_CHANGE \\$1
-.    if '\\$0'HDRFTR_CENTER_SIZE' \
-.       ds $HDRFTR_CENTER_SIZE_CHANGE \\$1
-.    if '\\$0'HDRFTR_LEFT_SIZE' \
-.       ds $HDRFTR_LEFT_SIZE_CHANGE \\$1
-.    if '\\$0'HDRFTR_RIGHT_SIZE' \
-.       ds $HDRFTR_RIGHT_SIZE_CHANGE \\$1
-.    if '\\$0'HDRFTR_SIZE' \
-.       ds $HDRFTR_SIZE_CHANGE \\$1
-.    if '\\$0'LINENUMBER_SIZE' \
-.       ds $LN_SIZE_CHANGE \\$1
-.    if '\\$0'PAGENUM_SIZE' \
-.       ds $PAGE_NUM_SIZE_CHANGE \\$1
-.    if '\\$0'QUOTE_SIZE' \
-.       ds $QUOTE_SIZE_CHANGE \\$1
-.    if '\\$0'SUBTITLE_SIZE' \
-.       ds $SUBTITLE_SIZE_CHANGE \\$1
-.    if '\\$0'TITLE_SIZE' \
-.       ds $TITLE_SIZE_CHANGE \\$1
-.    if '\\$0'TOC_HEADER_SIZE' \
-.       ds $TOC_HEADER_SIZE_CHANGE \\$1
-.    if '\\$0'TOC_PN_SIZE' \
-.       ds $TOC_PN_SIZE_CHANGE \\$1
+.    ds PARAM       SIZE_CHANGE
+.    ds ELEMENT     \\$0_CHANGE
+.    if '\\$0'CODE_SIZE' \{\
+.       ds PARAM SIZE_ADJ
+.       ds ELEMENT \\$0_ADJ
+.    \}
+.    if '\\$0'COPYRIGHT_SIZE' \
+.       ds ELEMENT COVER_COPYRIGHT_SIZE_CHANGE
+.    ds FROM_ALIAS  \\$0
+.    ASSIGN_ELEMENT \\$1
 .END
 \#
 .MAC _COLOR END
 .    if \\n[#PRINT_STYLE]=1 .return
-.    if '\\$0'ATTRIBUTE_COLOR' \{\
-.       nr #ATTRIBUTE_COLOR 1
-.       ds $ATTRIBUTE_COLOR \\$1
-.    \}
-.    if '\\$0'AUTHOR_COLOR' \{\
-.       nr #AUTHOR_COLOR 1
-.       ds $AUTHOR_COLOR \\$1
-.    \}
-.    if '\\$0'BLOCKQUOTE_COLOR' \{\
-.       nr #BQUOTE_COLOR 1
-.       ds $BQUOTE_COLOR \\$1
-.    \}
-.    if '\\$0'CITATION_COLOR' \{\
-.       nr #BQUOTE_COLOR 1
-.       ds $BQUOTE_COLOR \\$1
-.    \}
-.    if '\\$0'CITE_COLOR' \{\
-.       nr #BQUOTE_COLOR 1
-.       ds $BQUOTE_COLOR \\$1
-.    \}
-.    if '\\$0'CHAPTER_TITLE_COLOR' \{\
-.       nr #CHAPTER_TITLE_COLOR 1
-.       ds $CHAPTER_TITLE_COLOR \\$1
-.    \}
-.    if '\\$0'CODE_COLOR' \{\
-.       nr #CODE_COLOR 1
-.       ds $CODE_COLOR \\$1
-.    \}
-.    if '\\$0'COVER_ATTRIBUTE_COLOR' \{\
-.       nr #COVER_ATTRIBUTE_COLOR 1
-.       ds $COVER_ATTRIBUTE_COLOR \\$1
-.    \}
-.    if '\\$0'COVER_AUTHOR_COLOR' \{\
-.       nr #COVER_AUTHOR_COLOR 1
-.       ds $COVER_AUTHOR_COLOR \\$1
-.    \}
-.    if '\\$0'COVER_CHAPTER_TITLE_COLOR' \{\
-.       nr #COVER_CHAPTER_TITLE_COLOR 1
-.       ds $COVER_CHAPTER_TITLE_COLOR \\$1
-.    \}
-.    if '\\$0'COVER_COLOR' \{\
-.       nr #COVER_COLOR 1
-.       ds $COVER_COLOR \\$1
-.    \}
-.    if '\\$0'COVER_COPYRIGHT_COLOR' \{\
-.       nr #COVER_COPYRIGHT_COLOR 1
-.       ds $COVER_COPYRIGHT_COLOR \\$1
-.    \}
-.    if '\\$0'COVER_MISC_COLOR' \{\
-.       nr #COVER_MISC_COLOR 1
-.       ds $COVER_MISC_COLOR \\$1
-.    \}
-.    if '\\$0'COVER_TITLE_COLOR' \{\
-.       nr #COVER_TITLE_COLOR 1
-.       ds $COVER_TITLE_COLOR \\$1
-.    \}
-.    if '\\$0'COVER_SUBTITLE_COLOR' \{\
-.       nr #COVER_SUBTITLE_COLOR 1
-.       ds $COVER_SUBTITLE_COLOR \\$1
-.    \}
-.    if '\\$0'COVER_DOCTYPE_COLOR' \{\
-.       nr #COVER_DOCTYPE_COLOR 1
-.       ds $COVER_DOCTYPE_COLOR \\$1
-.    \}
-.    if '\\$0'DOC_COVER_ATTRIBUTE_COLOR' \{\
-.       nr #DOC_COVER_ATTRIBUTE_COLOR 1
-.       ds $DOC_COVER_ATTRIBUTE_COLOR \\$1
-.    \}
-.    if '\\$0'DOC_COVER_AUTHOR_COLOR' \{\
-.       nr #DOC_COVER_AUTHOR_COLOR 1
-.       ds $DOC_COVER_AUTHOR_COLOR \\$1
-.    \}
-.    if '\\$0'DOC_COVER_CHAPTER_TITLE_COLOR' \{\
-.       nr #DOC_COVER_CHAPTER_TITLE_COLOR 1
-.       ds $DOC_COVER_CHAPTER_TITLE_COLOR \\$1
-.    \}
-.    if '\\$0'DOC_COVER_COLOR' \{\
-.       nr #DOC_COVER_COLOR 1
-.       ds $DOC_COVER_COLOR \\$1
-.    \}
-.    if '\\$0'DOC_COVER_COPYRIGHT_COLOR' \{\
-.       nr #DOC_COVER_COPYRIGHT_COLOR 1
-.       ds $DOC_COVER_COPYRIGHT_COLOR \\$1
-.    \}
-.    if '\\$0'DOC_COVER_MISC_COLOR' \{\
-.       nr #DOC_COVER_MISC_COLOR 1
-.       ds $DOC_COVER_MISC_COLOR \\$1
-.    \}
-.    if '\\$0'DOC_COVER_TITLE_COLOR' \{\
-.       nr #DOC_COVER_TITLE_COLOR 1
-.       ds $DOC_COVER_TITLE_COLOR \\$1
-.    \}
-.    if '\\$0'DOC_COVER_SUBTITLE_COLOR' \{\
-.       nr #DOC_COVER_SUBTITLE_COLOR 1
-.       ds $DOC_COVER_SUBTITLE_COLOR \\$1
-.    \}
-.    if '\\$0'DOC_COVER_DOCTYPE_COLOR' \{\
-.       nr #DOC_COVER_DOCTYPE_COLOR 1
-.       ds $DOC_COVER_DOCTYPE_COLOR \\$1
-.    \}
-.    if '\\$0'DOCHEADER_COLOR' \{\
-.       nr #DOCHEADER_COLOR 1
-.       ds $DOCHEADER_COLOR \\$1
-.    \}
-.    if '\\$0'DOCTYPE_COLOR' \{\
-.       nr #DOCTYPE_COLOR 1
-.       ds $DOCTYPE_COLOR \\$1
-.    \}
-.    if '\\$0'ENDNOTE_STRING_COLOR' \{\
-.       nr #ENDNOTE_STRING_COLOR 1
-.       ds $ENDNOTE_STRING_COLOR \\$1
-.    \}
-.    if '\\$0'EPIGRAPH_COLOR' \{\
-.       nr #EPI_COLOR 1
-.       ds $EPI_COLOR \\$1
-.    \}
-.    if '\\$0'FINIS_COLOR' \{\
-.       nr #FINIS_COLOR 1
-.       ds $FINIS_COLOR \\$1
-.    \}
-.    if '\\$0'FOOTNOTE_COLOR' \{\
-.       nr #FOOTNOTE_COLOR 1
-.       ds $FOOTNOTE_COLOR \\$1
-.    \}
-.    if '\\$0'HDRFTR_CENTER_COLOR' \{\
-.       nr #HDRFTR_CENTER_COLOR 1
-.       ds $HDRFTR_CENTER_COLOR \\$1
-.    \}
-.    if '\\$0'HDRFTR_COLOR' \{\
-.       nr #HDRFTR_COLOR 1
-.       ds $HDRFTR_COLOR \\$1
-.    \}
-.    if '\\$0'HDRFTR_LEFT_COLOR' \{\
-.       nr #HDRFTR_LEFT_COLOR 1
-.       ds $HDRFTR_LEFT_COLOR \\$1
-.    \}
-.    if '\\$0'HDRFTR_RIGHT_COLOR' \{\
-.       nr #HDRFTR_RIGHT_COLOR 1
-.       ds $HDRFTR_RIGHT_COLOR \\$1
-.    \}
-.    if '\\$0'HDRFTR_RULE_COLOR' \{\
-.       nr #HDRFTR_RULE_COLOR 1
-.       ds $HDRFTR_RULE_COLOR \\$1
-.    \}
-.    if '\\$0'LINEBREAK_COLOR' \{\
-.       nr #LINEBREAK_COLOR 1
-.       ds $LINEBREAK_COLOR \\$1
-.    \}
-.    if '\\$0'LINENUMBER_COLOR' \{\
-.       nr #LINENUMBER_COLOR 1
-.       ds $LN_COLOR \\$1
-.    \}
-.    if '\\$0'PAGENUM_COLOR' \{\
-.       nr #PAGE_NUM_COLOR 1
-.       ds $PAGENUM_COLOR \\$1
-.    \}
-.    if '\\$0'QUOTE_COLOR' \{\
-.       nr #QUOTE_COLOR 1
-.       ds $QUOTE_COLOR \\$1
+.    ds PARAM       COLOR
+.    ds ELEMENT     \\$0
+.    if '\\$0'COPYRIGHT_COLOR' \
+.       ds ELEMENT COVER_COPYRIGHT_COLOR
+.    ds FROM_ALIAS  \\$0
+.    ASSIGN_ELEMENT \\$1
+.END
+\#
+.MAC _CAPS END
+.    ds CAPS_TYPE \\$0
+.    substring CAPS_TYPE 0 7
+.    ds CALLED_AS \\$0
+.    substring CALLED_AS -7
+.    ie '\\*[CALLED_AS]'NO_CAPS' \{\
+.       ie '\\*[CAPS_TYPE]'BIBLIOGR' \{\
+.          if '\\$0'BIBLIOGRAPHY_HEADER_NO_CAPS' .rr #BIB_STRING_CAPS
+.          if '\\$0'BIBLIOGRAPHY_STRING_NO_CAPS' .rr #BIB_STRING_CAPS
+.       \}
+.       el \{\
+.          ie '\\*[CAPS_TYPE]'ENDNOTES' \{\
+.             if '\\$0'ENDNOTES_HEADER_NO_CAPS' .rr #EN_STRING_CAPS
+.             if '\\$0'ENDNOTES_STRING_NO_CAPS' .rr #EN_STRING_CAPS
+.          \}
+.          el \{\
+.             ie '\\$0'TOC_HEADER_NO_CAPS' .rr #TOC_STRING_CAPS
+.             el \{\
+.                ds REGISTER_TYPE \\$0
+.                substring REGISTER_TYPE 0 -8
+.                as REGISTER_TYPE CAPS
+.                rr #\\*[REGISTER_TYPE]
+.             \}
+.          \}
+.       \}
 .    \}
-.    if '\\$0'SECTION_COLOR' \{\
-.       nr #LINEBREAK_COLOR 1
-.       ds $LINEBREAK_COLOR \\$1
+.    el \{\
+.       ie '\\*[CAPS_TYPE]'BIBLIOGR' \{\
+.          if '\\$0'BIBLIOGRAPHY_HEADER_CAPS' .nr #BIB_STRING_CAPS 1
+.          if '\\$0'BIBLIOGRAPHY_STRING_CAPS' .nr #BIB_STRING_CAPS 1
+.       \}
+.       el .nr #\\$0 1
 .    \}
-.    if '\\$0'SUBTITLE_COLOR' \{\
-.       nr #SUBTITLE_COLOR 1
-.       ds $SUBTITLE_COLOR \\$1
+.END
+.
+.ALIAS _NO_CAPS _CAPS
+\#
+.MAC _SMALLCAPS END
+.    ds SMALLCAPS_TYPE \\$0
+.    substring SMALLCAPS_TYPE 0 7
+.    ds CALLED_AS \\$0
+.    substring CALLED_AS -12
+.    ie '\\*[CALLED_AS]'NO_SMALLCAPS' \{\
+.       ie '\\*[SMALLCAPS_TYPE]'BIBLIOGR' \{\
+.          if '\\$0'BIBLIOGRAPHY_HEADER_NO_SMALLCAPS' .rr #BIB_STRING_SMALLCAPS
+.          if '\\$0'BIBLIOGRAPHY_STRING_NO_SMALLCAPS' .rr #BIB_STRING_SMALLCAPS
+.       \}
+.       el \{\
+.          ie '\\*[SMALLCAPS_TYPE]'ENDNOTES' \{\
+.             if '\\$0'ENDNOTES_HEADER_NO_SMALLCAPS' .rr #EN_STRING_SMALLCAPS
+.             if '\\$0'ENDNOTES_STRING_NO_SMALLCAPS' .rr #EN_STRING_SMALLCAPS
+.          \}
+.          el \{\
+.             ie '\\$0'TOC_HEADER_NO_SMALLCAPS' .rr #TOC_STRING_SMALLCAPS
+.             el \{\
+.                ds REGISTER_TYPE \\$0
+.                substring REGISTER_TYPE 0 -13
+.                as REGISTER_TYPE SMALLCAPS
+.                rr #\\*[REGISTER_TYPE]
+.             \}
+.          \}
+.       \}
 .    \}
-.    if '\\$0'TITLE_COLOR' \{\
-.       nr #TITLE_COLOR 1
-.       ds $TITLE_COLOR \\$1
+.    el \{\
+.       ie '\\*[SMALLCAPS_TYPE]'BIBLIOGR' \{\
+.          if '\\$0'BIBLIOGRAPHY_HEADER_SMALLCAPS' .nr #BIB_STRING_SMALLCAPS 1
+.          if '\\$0'BIBLIOGRAPHY_STRING_SMALLCAPS' .nr #BIB_STRING_SMALLCAPS 1
+.       \}
+.       el .nr #\\$0 1
 .    \}
 .END
+.
+.ALIAS _NO_SMALLCAPS _SMALLCAPS
 \#
 .MAC _QUAD END
 .    if '\\$0'BIBLIOGRAPHY_QUAD' \{\
-.       ds $BIB_QUAD \\$1
-.       if '\\*[$BIB_QUAD]'R' \
-.ab \\$0 at line \\n[.c] must be set to either L or J.  Aborting \\n'[.F]'.
-.       if '\\*[$BIB_QUAD]'C' \
-.ab \\$0 at line \\n[.c] must be set to either L or J.  Aborting \\n'[.F]'.
-.    \}
-.    if '\\$0'BIBLIOGRAPHY_STRING_QUAD' \
-.       ds $BIB_STRING_QUAD \\$1
-.    if '\\$0'BLOCKQUOTE_QUAD' \
-.       ds $BQUOTE_QUAD \\$1
-.    if '\\$0'CITATION_QUAD' \
-.       ds $BQUOTE_QUAD \\$1
-.    if '\\$0'CITE_QUAD' \
-.       ds $BQUOTE_QUAD \\$1
-.    if '\\$0'COVER_COPYRIGHT_QUAD' \
-.       ds $COVER_COPYRIGHT_QUAD \\$1
-.    if '\\$0'COVER_MISC_QUAD' \
-.       ds $COVER_MISC_QUAD \\$1
-.    if '\\$0'COVER_QUAD' \
-.       ds $COVER_QUAD \\$1
-.    if '\\$0'DOC_COVER_COPYRIGHT_QUAD' \
-.       ds $DOC_COVER_COPYRIGHT_QUAD \\$1
-.    if '\\$0'DOC_COVER_MISC_QUAD' \
-.       ds $DOC_COVER_MISC_QUAD \\$1
-.    if '\\$0'DOC_COVER_QUAD' \
-.       ds $DOC_COVER_QUAD \\$1
-.    if '\\$0'DOCHEADER_QUAD' \
-.       ds $DOCHEADER_QUAD \\$1
-.    if '\\$0'DOC_QUAD' \{\
-.       if !\\n[DOCS] .DOC_MACRO_ERROR \\$0
-.        ds $DOC_QUAD \\$1
-.        QUAD \\*[$DOC_QUAD]
+.       if '\\$1'R' .QUAD-ERROR \\$0
+.       if '\\$1'C' .QUAD-ERROR \\$0
 .    \}
 .    if '\\$0'ENDNOTE_QUAD' \{\
-.       ds $EN_QUAD \\$1
-.       if '\\*[$EN_QUAD]'R' \
-.ab \\$0 at line \\n[.c] must be set to either L or J.  Aborting \\n'[.F]'.
-.       if '\\*[$EN_QUAD]'C' \
-.ab \\$0 at line \\n[.c] must be set to either L or J.  Aborting \\n'[.F]'.
-.    \}
-.    if '\\$0'ENDNOTE_STRING_QUAD' \
-.       ds $EN_STRING_QUAD \\$1
-.    if '\\$0'ENDNOTE_TITLE_QUAD' \
-.       ds $EN_TITLE_QUAD \\$1
-.    if '\\$0'EPIGRAPH_QUAD' \
-.       ds $EPI_QUAD \\$1
-.    if '\\$0'FOOTNOTE_QUAD' \
-.       ds $FN_QUAD \\$1
-.    if '\\$0'TOC_HEADER_QUAD' \
-.       ds $TOC_HEADER_QUAD \\$1
+.       if '\\$1'R' .QUAD-ERROR \\$0
+.       if '\\$1'C' .QUAD-ERROR \\$0
+.    \}
+.    if '\\$0'DOC_QUAD' \
+.       if !\\n[#DOCS] .DOC_MACRO_ERROR \\$0
+.    ds PARAM       QUAD
+.    ds ELEMENT     \\$0
+.    if '\\$0'COPYRIGHT_QUAD' \
+.       ds ELEMENT COVER_COPYRIGHT_QUAD
+.    ds FROM_ALIAS  \\$0
+.    ASSIGN_ELEMENT \\$1
 .END
 \#
-\# DEFAULTS
-\# --------
-\# *Arguments:
-\#   <none>
-\# *Function:
-\#   Sets up defaults if no values are entered prior to START.
-\# *Notes:
-\#   The defaults for $CHAPTER_STRING, $DRAFT_STRING, and
-\#   $REVISION_STRING are in the COPYSTYLE macro.
+\# Special handling for QUOTE quadding
 \#
-.MAC DEFAULTS END
-.    if !d $PAPER .PAPER LETTER
-.    if !\\n[#DOC_TYPE] .DOCTYPE DEFAULT
-.    ie \\n[#PAGENUM_STYLE_SET] .PAGENUM_STYLE \\*[$PAGENUM_STYLE]
-.    el \
-.       if !\\n[#COPY_STYLE]=1 .PAGENUM_STYLE DIGIT
-.    if !\\n[#COPY_STYLE] .COPYSTYLE FINAL
-.    if \\n[#DRAFT_WITH_PAGENUM] .COPYSTYLE \\*[$COPY_STYLE]
-.    if \\n[#DOC_TYPE]=4 \{\
-.       if !\\n[#USER_SET_L_LENGTH] \{\
-.          R_MARGIN \\n[#R_MARGIN]u
-.          rr #USER_SET_L_LENGTH
+.MAC QUOTE_QUAD END
+.    ds $Q_QUAD \\$0
+.    substring $Q_QUAD 6
+.END
+.
+.ALIAS QUOTE_LEFT   QUOTE_QUAD
+.ALIAS QUOTE_CENTER QUOTE_QUAD
+.ALIAS QUOTE_RIGHT  QUOTE_QUAD
+\#
+.MAC QUAD-ERROR END
+.    tm1 "[mom]: \\$1 at line \\n[.c] of '\\n[.F]' must be set to either L or J.
+.    ab   [mom]: Aborting.
+.END
+\#
+.MAC ASSIGN_ELEMENT END
+.    rm $\\*[ELEMENT] \" Clear this first
+.\" HDRFTR_<POSITION>_<PARAMETER> need special handling.
+.    ds hdrftr \\*[FROM_ALIAS]
+.    substring hdrftr 0 5
+.    if '\\*[hdrftr]'HDRFTR' \{\
+.       ds hdrftr-pos-element \\*[ELEMENT]
+.\" See if ELEMENT is of the form HDRFTR_<pos>_<param>
+.       substring hdrftr-pos-element 0 7
+.       substring hdrftr-pos-element -1
+.       if !'\\*[ELEMENT]'HDRFTR_COLOR' \{\
+.          if '\\*[hdrftr-pos-element]'L' .nr hdrftr-pos-element 1
+.          if '\\*[hdrftr-pos-element]'C' .nr hdrftr-pos-element 1
+.          if '\\*[hdrftr-pos-element]'R' .nr hdrftr-pos-element 1
+.       \}
+.    \}
+.    if !\\n[hdrftr-pos-element] \{\
+.       ds c1-c5 \\*[ELEMENT]
+.       substring c1-c5 0 4  \" Grab first five letters of the alias
+.    \}
+.\"  If none of the following, convert the substring of the
+.\"  calling alias, ie \*[ELEMENT], into the parameter string, e.g.,
+.\"  $TITLE_FAM, assign arg, and set register.
+.    if !'\\*[c1-c5]'BIBLI' \
+.    if !'\\*[c1-c5]'BLOCK' \
+.    if !'\\*[c1-c5]'CITAT' \
+.    if !'\\*[c1-c5]'ENDNO' \
+.    if !'\\*[c1-c5]'EPIGR' \
+.    if !'\\*[c1-c5]'FOOTN' \
+.    if !'\\*[c1-c5]'HDRFT' \
+.    if !'\\*[c1-c5]'LINEN' \
+.    if !'\\*[c1-c5]'PAGEN' \{\
+.       ie '\\*[ELEMENT]'CODE_SIZE_ADJ' .nr #\\*[ELEMENT] \\$1
+.       el \{\
+.          ds $\\*[ELEMENT] \\$1
+.          nr #\\*[ELEMENT] 1
+.       \}
+.    \}
+.    if '\\*[$\\*[ELEMENT]]'' \{\
+.       if '\\*[c1-c5]'BIBLI' .ASSIGN_PARAM BIB       \\$1
+.       if '\\*[c1-c5]'BLOCK' .ASSIGN_PARAM BQUOTE_   \\$1
+.       if '\\*[c1-c5]'CITAT' .ASSIGN_PARAM BQUOTE_   \\$1
+.       if '\\*[c1-c5]'ENDNO' .ASSIGN_PARAM EN        \\$1
+.       if '\\*[c1-c5]'EPIGR' .ASSIGN_PARAM EPI_      \\$1
+.       if '\\*[c1-c5]'FOOTN' .ASSIGN_PARAM FN_       \\$1
+.       if '\\*[c1-c5]'HDRFT' .ASSIGN_PARAM HDRFTR_   \\$1
+.       if '\\*[c1-c5]'LINEN' .ASSIGN_PARAM LN_       \\$1
+.       if '\\*[c1-c5]'PAGEN' .ASSIGN_PARAM PAGE_NUM_ \\$1
+.    \}
+.    if \\n[hdrftr-pos-element] \{\
+.       if '\\*[hdrftr-pos-element]'L' .ds hdrftr-pos-element LEFT
+.       if '\\*[hdrftr-pos-element]'C' .ds hdrftr-pos-element CENTER
+.       if '\\*[hdrftr-pos-element]'R' .ds hdrftr-pos-element RIGHT
+.       if '\\*[ELEMENT]'HDRFTR_\\*[hdrftr-pos-element]_FAM' \
+.          ds $HDRFTR_\\*[hdrftr-pos-element]_FAM \\$1
+.    \}
+.    rr hdrftr-pos-element
+.    rm hdrftr-pos-element
+.END
+\#
+.MAC ASSIGN_PARAM END
+.    if '\\*[PARAM]'FAM'         .nr substr-index -7
+.    if '\\*[PARAM]'FT'          .nr substr-index -5
+.    if '\\*[PARAM]'SIZE_CHANGE' .nr substr-index -5
+.    if '\\*[PARAM]'COLOR'       .nr substr-index -6
+.    if '\\*[PARAM]'QUAD'        .nr substr-index -5
+.    if '\\$1'BIB' \{\
+.       ds ELEMENT \\*[FROM_ALIAS]
+.       substring ELEMENT 12 \\n[substr-index]
+.       if '\\*[ELEMENT]'_HEADER_' \
+.          ds ELEMENT _STRING_
+.    \}
+.    if '\\$1'BQUOTE_' .rm ELEMENT
+.    if '\\$1'EN' \{\
+.       ds ELEMENT \\*[FROM_ALIAS]
+.       substring ELEMENT 7 \\n[substr-index]
+.       if '\\*[ELEMENT]'S_HEADER_' \
+.          ds ELEMENT _STRING_
+.       if '\\*[ELEMENT]'_LINENUMBER_' \
+.          ds ELEMENT _LN_
+.    \}
+.    if '\\$1'EPI_' .rm ELEMENT
+.    if '\\$1'FN_'  .rm ELEMENT
+.    if '\\$1'HDRFTR_' \{\
+.       if '\\*[ELEMENT]'HDRFTR_FAM' \{\
+.          nr #HDRFTR 1
+.          ds $HDRFTR_FAM        \\$2
+.          ds $HDRFTR_LEFT_FAM   \\$2
+.          ds $HDRFTR_CENTER_FAM \\$2
+.          ds $HDRFTR_RIGHT_FAM  \\$2
+.       \}
+.       if '\\*[ELEMENT]'HDRFTR_COLOR' \{\
+.          nr #HDRFTR 1
+.          nr #HDRFTR_COLOR 1
+.          ds $HDRFTR_COLOR \\$2
+.       \}
+.       if '\\*[ELEMENT]'HDRFTR_SIZE_CHANGE' \{\
+.          nr #HDRFTR 1
+.          ds $HDRFTR_SIZE_CHANGE \\$2
+.       \}
+.       if '\\*[PARAM]'SIZE_CHANGE' \{\
+.          nr #HDRFTR 1
+.          if '\\*[hdrftr-pos-element]'L' \
+.             ds $HDRFTR_LEFT_SIZE_CHANGE \\$2
+.          if '\\*[hdrftr-pos-element]'C' \
+.             ds $HDRFTR_CENTER_SIZE_CHANGE \\$2
+.          if '\\*[hdrftr-pos-element]'R' \
+.             ds $HDRFTR_RIGHT_SIZE_CHANGE \\$2
+.       \}
+.       if !r #HDRFTR \{\
+.          substring ELEMENT 7 \\n[substr-index]
+.          if '\\*[ELEMENT]'_LEFT' .ds ELEMENT _STRING_
+.       \}
+.    \}
+.    if '\\$1'LN_'       .rm ELEMENT
+.    if '\\$1'PAGE_NUM_' .rm ELEMENT
+.    if !r #HDRFTR \{\
+.       ds $\\$1\\*[ELEMENT]\\*[PARAM] \\$2
+.       nr #\\$1\\*[ELEMENT]\\*[PARAM] 1
+.    \}
+.    rr #HDRFTR
+.    rm hdrftr-pos-element
+.    rr substr-index
+.    rm FROM_ALIAS
+.    rm ELEMENT
+.END
+\#
+.MAC TITLE_LEAD END
+.    ds $TYPE \\$0
+.    substring $TYPE 0 2
+.    if '\\*[$TYPE]'DOC' .nr DOC_ 1
+.    ds $TYPE \\$0
+.    ie '\\*[$TYPE]'MISC_LEAD' .ds $TYPE COVER_MISC
+.    el .substring $TYPE -6 0
+.    ds $\\*[$TYPE]_LEAD \\$1
+.    nr #\\*[$TYPE]_LEAD 1
+.    rm $TYPE
+.END
+\#
+\# The _STYLE macro, called by various aliases, allows grouping
+\# style parameters for most document elements in a single macro
+\# using 'KEYWORD value' pairs.
+\#
+.MAC _STYLE END
+.    SILENT \" Some of the invoked macros cause unwanted breaks
+.    ds $STYLE_TYPE \\$0
+.    substring $STYLE_TYPE 0 -7
+.    ds $HDR_FTR \\*[$STYLE_TYPE]
+.    length #HDR_FTR_STRING $HDR_FTR
+.    if \\n[#HDR_FTR_STRING]<=5 .substring $HDR_FTR 0 5 \" HEADER or FOOTER
+.    if '\\*[$HDR_FTR]'HEADER' .ds $HDR_FTR HEADER
+.    if '\\*[$HDR_FTR]'FOOTER' .ds $HDR_FTR FOOTER
+.    ds $POS \\$0
+.    substring $POS 7 7
+.    if '\\*[$POS]'L' .ds $POS LEFT
+.    if '\\*[$POS]'C' .ds $POS CENTER
+.    if '\\*[$POS]'R' .ds $POS RIGHT
+.    if '\\*[$STYLE_TYPE]'\\*[$HDR_FTR]_\\*[$POS]' \{\
+.       ds $\\*[$HDR_FTR]_\\*[$POS] \\*[$HDR_FTR]_\\*[$POS]
+.       ds $STYLE_TYPE HDRFTR_\\*[$POS]
+.    \}
+.    if '\\*[$STYLE_TYPE]'ENDNOTES_HEADER' \
+.       ds $BIB-EN-TOC EN_STRING
+.    if '\\*[$STYLE_TYPE]'ENDNOTE_STRING' \
+.       ds $BIB-EN-TOC EN_STRING
+.    if '\\*[$STYLE_TYPE]'BIBLIOGRAPHY_HEADER' \
+.       ds $BIB-EN-TOC BIB_STRING
+.    if '\\*[$STYLE_TYPE]'BIBLIOGRAPHY_STRING' \
+.       ds $BIB-EN-TOC BIB_STRING
+.    if '\\*[$STYLE_TYPE]'TOC_HEADER' \
+.       ds $BIB-EN-TOC TOC_STRING
+.    if '\\*[$STYLE_TYPE]'PAGENUMBER' \
+.       ds $STYLE_TYPE PAGENUM
+.    nr #LOOP 0 1
+.    nr #STYLE_PARAMS \\n[#NUM_ARGS]
+.    while \\n+[#LOOP]<=\\n[#STYLE_PARAMS] \{\ 
+.       if '\\$1'FAMILY' \{\
+.          shift
+.          \\*[$STYLE_TYPE]_FAMILY \\$1
+.          shift
 .       \}
-.       if \\n[#PRINT_STYLE]=1 .PRINTSTYLE TYPEWRITE SINGLESPACE
-.    \}
-.    if \\n[#COPY_STYLE]=1 \{\
+.       if '\\$1'FONT' \{\
+.          shift
+.          \\*[$STYLE_TYPE]_FONT \\$1
+.          shift
+.       \}
+.       if '\\$1'SIZE' \{\
+.          shift
+.          \\*[$STYLE_TYPE]_SIZE \\$1
+.          shift
+.       \}
+.       if '\\$1'COLOR' \{\
+.          shift
+.          \\*[$STYLE_TYPE]_COLOR \\$1
+.          shift
+.       \}
+.       if '\\$1'CAPS' \{\
+.          if \\n[#\\*[$STYLE_TYPE]_SMALLCAPS] \{\
+.             tm1 \
+"[mom]: '\\*[$STYLE_TYPE]_STYLE' contains CAPS and SMALLCAPS. \
+CAPS takes precedence.
+.             rr #\\*[$STYLE_TYPE]_SMALLCAPS
+.          \}
+.          \\*[$STYLE_TYPE]_CAPS
+.          if d $\\*[$HDR_FTR]_LEFT   .HEADER_LEFT_CAPS
+.          if d $\\*[$HDR_FTR]_CENTER .HEADER_CENTER_CAPS
+.          if d $\\*[$HDR_FTR]_CENTRE .HEADER_CENTER_CAPS
+.          if d $\\*[$HDR_FTR]_RIGHT  .HEADER_RIGHT_CAPS
+.          shift
+.       \}
+.       if '\\$1'NO_CAPS' \{\
+.          nr #\\*[$STYLE_TYPE]_CAPS 0
+.          if !'\\*[$BIB-EN-TOC]'' \
+.             rr #\\*[$BIB-EN-TOC]_CAPS
+.          shift
+.       \}
+.       if '\\$1'SMALLCAPS' \{\
+.          if \\n[#\\*[$STYLE_TYPE]_CAPS] \{\
+.             tm1 \
+"[mom]: '\\*[$STYLE_TYPE]_STYLE' contains CAPS and SMALLCAPS. \
+SMALLCAPS takes precedence.
+.             rr #\\*[$STYLE_TYPE]_CAPS
+.          \}
+.          \\*[$STYLE_TYPE]_SMALLCAPS
+.          shift
+.       \}
+.       if '\\$1'NO_SMALLCAPS' \{\
+.          rr #\\*[$STYLE_TYPE]_SMALLCAPS
+.          if !'\\*[$BIB-EN-TOC]'' \
+.             rr #\\*[$BIB-EN-TOC]_SMALLCAPS
+.          shift
+.       \}
+.       if '\\$1'LEAD' \{\
+.          shift
+.          \\*[$STYLE_TYPE]_LEAD \\$1
+.          shift
+.       \}
+.       if '\\$1'AUTOLEAD' \{\
+.          shift
+.          \\*[$STYLE_TYPE]_AUTOLEAD \\$1
+.          shift
+.       \}
+.       if '\\$1'SPACE' \{\
+.          shift
+.          \\*[$STYLE_TYPE]_SPACE \\$1
+.          shift
+.       \}
+.       if '\\$1'QUAD' \{\
+.          shift
+.          ie '\\*[$STYLE_TYPE]'QUOTE' \{\
+.              ds $QUAD_TYPE \\$1
+.              substring $QUAD_TYPE 0 0
+.              if '\\*[$QUAD_TYPE]'L' .QUOTE_LEFT
+.              if '\\*[$QUAD_TYPE]'C' .QUOTE_CENTER
+.              if '\\*[$QUAD_TYPE]'R' .QUOTE_RIGHT
+.          \}
+.          el .\\*[$STYLE_TYPE]_QUAD \\$1
+.          shift
+.       \}
+.       if '\\$1'INDENT' \{\
+.          shift
+.          \\*[$STYLE_TYPE]_INDENT \\$1
+.          shift
+.       \}
+.\" UNDERLINE and UNDERSCORE are identical but we can't use : or &
+.\" in string comparisons.
+.       if '\\$1'UNDERLINE' \{\
+.          shift
+.          if '\\$1'DOUBLE' \{\
+.             as ul-args \\$1 \"
+.             shift
+.          \}
+.          nr #COUNT 0 1
+.          while \\n+[#COUNT]<=3 \{\
+.             if \B'\\$1' \{\
+.                as ul-args \\$1 \"
+.                shift
+.             \}
+.          \}
+.          \\*[$STYLE_TYPE]_UNDERSCORE \\*[ul-args]
+.       \}
+.       if '\\$1'UNDERSCORE' \{\
+.          shift
+.          if '\\$1'DOUBLE' \{\
+.             as ul-args \\$1 \"
+.             shift
+.          \}
+.          nr #COUNT 0 1
+.          while \\n+[#COUNT]<=3 \{\
+.             if \B'\\$1' \{\
+.                as ul-args \\$1 \"
+.                shift
+.             \}
+.          \}
+.          \\*[$STYLE_TYPE]_UNDERSCORE \\*[ul-args]
+.       \}
+.       if '\\$1'NO_UNDERSCORE' \{\
+.          rr #\\*[$STYLE_TYPE]_UNDERLINE
+.          if !'\\*[$BIB-EN-TOC]'' \
+.             rr #\\*[$BIB-EN-TOC]_UNDERLINE
+.          shift
+.       \}
+.       if '\\$1'NO_UNDERLINE' \{\
+.          rr #\\*[$STYLE_TYPE]_UNDERLINE
+.          if !'\\*[$BIB-EN-TOC]'' \
+.             rr #\\*[$BIB-EN-TOC]_UNDERLINE
+.          shift
+.       \}
+.       if '\\$1'V_ADJUST' \{\
+.          shift
+.          COPYRIGHT_V_ADJUST \\$1
+.          shift
+.       \}
+.    \}
+.    rm $STYLE_TYPE
+.    rm $HDR_FTR
+.    rm $POS
+.    rm $HEADER_LEFT
+.    rm $HEADER_CENTER
+.    rm $HEADER_RIGHT
+.    rm $BIB-EN-TOC
+.    rm ul-args
+.    SILENT off
+.END
+.
+.ds STYLE_TYPE_1  ATTRIBUTE
+.ds STYLE_TYPE_2  AUTHOR
+.ds STYLE_TYPE_3  BIBLIOGRAPHY_HEADER
+.ds STYLE_TYPE_4  BIBLIOGRAPHY_STRING
+.ds STYLE_TYPE_5  BLOCKQUOTE
+.ds STYLE_TYPE_6  CHAPTER
+.ds STYLE_TYPE_7  CHAPTER_TITLE
+.ds STYLE_TYPE_8  CODE
+.ds STYLE_TYPE_9  COPYRIGHT
+.ds STYLE_TYPE_10 COVER
+.ds STYLE_TYPE_11 COVERTITLE
+.ds STYLE_TYPE_12 DOC_COVERTITLE
+.ds STYLE_TYPE_13 DOCHEADER
+.ds STYLE_TYPE_14 DOCTITLE
+.ds STYLE_TYPE_15 DOCTYPE
+.ds STYLE_TYPE_16 ENDNOTE_TITLE
+.ds STYLE_TYPE_17 ENDNOTES_HEADER
+.ds STYLE_TYPE_18 ENDNOTE_STRING
+.ds STYLE_TYPE_19 EPIGRAPH
+.ds STYLE_TYPE_20 FINIS
+.ds STYLE_TYPE_21 FOOTER_LEFT
+.ds STYLE_TYPE_22 FOOTER_CENTER
+.ds STYLE_TYPE_23 FOOTER_CENTRE
+.ds STYLE_TYPE_24 FOOTER_RIGHT
+.ds STYLE_TYPE_25 FOOTNOTE
+.ds STYLE_TYPE_26 HEADER_LEFT
+.ds STYLE_TYPE_27 HEADER_CENTER
+.ds STYLE_TYPE_28 HEADER_CENTRE
+.ds STYLE_TYPE_29 HEADER_RIGHT
+.ds STYLE_TYPE_30 LEAD
+.ds STYLE_TYPE_31 LINENUMBER
+.ds STYLE_TYPE_32 MISC
+.ds STYLE_TYPE_33 QUOTE
+.ds STYLE_TYPE_34 PAGENUMBER
+.ds STYLE_TYPE_35 SUBTITLE
+.ds STYLE_TYPE_36 TITLE
+.ds STYLE_TYPE_37 TOC_HEADER
+.
+.
+.nr #LOOP 0 1
+.while \n+[#LOOP]<=37 \{\
+. ALIAS \*[STYLE_TYPE_\n[#LOOP]]_STYLE           _STYLE
+. ALIAS COVER_\*[STYLE_TYPE_\n[#LOOP]]_STYLE     _STYLE
+. ALIAS DOC_COVER_\*[STYLE_TYPE_\n[#LOOP]]_STYLE _STYLE
+.\}
+\#
+\# UNDERLINE CONTROL
+\# -----------------
+\# *Arguments:
+\#   [ DOUBLE ] [ <underline weight> [<underline gap>] ] | <none> | <anything>
+\# *Function:
+\#   Toggles underlining of the element indicated by the calling alias
+\#   on or off.  Uses #<element>_UNDERLINE_WEIGHT to set the weight,
+\#   and defines string $<element>_UNDERLINE_GAP.
+\#
+.MAC _UNDERLINE END
+.    ds $GET_TITLE_TYPE \\$0
+.    substring $GET_TITLE_TYPE -2
+.    ie '\\*[$GET_TITLE_TYPE]'NE' \{\
+.\" Called as _UNDERLINE
+.        ds $GET_TITLE_TYPE \\$0
+.        substring $GET_TITLE_TYPE 0 -10
+.        ds $TITLE_TYPE \\*[$GET_TITLE_TYPE]
+.    \}
+.    el \{\
+.\" Called as _UNDERSCORE
+.        ds $GET_TITLE_TYPE \\$0
+.        substring $GET_TITLE_TYPE 0 -11
+.        ds $TITLE_TYPE \\*[$GET_TITLE_TYPE]
+.    \}
+.    ds $GET_TITLE_TYPE \\$0
+.    substring $GET_TITLE_TYPE 0 2
+.    if '\\*[$GET_TITLE_TYPE]'BIB' .ds $TITLE_TYPE BIB_STRING_
+.    if '\\*[$GET_TITLE_TYPE]'SUB' .ds $TITLE_TYPE SUBTITLE_
+.    ds $GET_TITLE_TYPE \\$0
+.    substring $GET_TITLE_TYPE 0 7
+.    if '\\*[$GET_TITLE_TYPE]'ENDNOTES' .ds $TITLE_TYPE EN_STRING_
+.    ds $GET_TITLE_TYPE \\$0
+.    substring $GET_TITLE_TYPE 0 10
+.    if '\\*[$GET_TITLE_TYPE]'ENDNOTE_STR' .ds $TITLE_TYPE EN_STRING_
+.    if '\\*[$GET_TITLE_TYPE]'ENDNOTE_TIT' .ds $TITLE_TYPE EN_TITLE_
+.    ie '\\$1'' .nr #\\*[$TITLE_TYPE]UNDERLINE 1
+.    el \{\
+.       ie \\n[#NUM_ARGS]=1 \{\
+.          ie \B'\\$1' \{\
+.             if !\\n[#PRINT_STYLE]=1 \{\
+.                \\*[$TITLE_TYPE]UNDERLINE_WEIGHT \\$1
+.                nr #\\*[$TITLE_TYPE]UNDERLINE 1
+.             \}
+.          \}
+.          el \{\
+.             ie '\\$1'DOUBLE' .nr #\\*[$TITLE_TYPE]UNDERLINE 2
+.             el .nr #\\*[$TITLE_TYPE]UNDERLINE 0
+.          \}
+.       \}
+.       el \{\
+.          if !\\n[#PRINT_STYLE]=1 \{\
+.               nr #\\*[$TITLE_TYPE]UNDERLINE 1
+.               if '\\$1'DOUBLE' \{\
+.                  nr #\\*[$TITLE_TYPE]UNDERLINE 2
+.                  shift
+.               \}
+.               \\*[$TITLE_TYPE]UNDERLINE_WEIGHT \\$1
+.               if !'\\$2'' \
+.                  ds $\\*[$TITLE_TYPE]UNDERLINE_GAP \\$2
+.               if !'\\$3'' \
+.                  ds $\\*[$TITLE_TYPE]RULE_GAP \\$3
+.          \}
+.       \}
+.    \}
+.    rm $TITLE_TYPE
+.END
+.
+.ALIAS ENDNOTE_STRING_UNDERLINE _UNDERLINE
+.ALIAS ENDNOTE_STRING_UNDERSCORE _UNDERLINE
+\#
+\# DEFAULTS
+\# --------
+\# *Arguments:
+\#   <none>
+\# *Function:
+\#   Sets up defaults if no values are entered prior to START.
+\# *Notes:
+\#   The defaults for $CHAPTER_STRING, $DRAFT_STRING, and
+\#   $REVISION_STRING are in the COPYSTYLE macro.
+\#
+.MAC DEFAULTS END
+.    if !\\n[#DOC_TYPE]=5 \{\
+.       ie !d $PAPER .PAPER LETTER
+.       el .PAPER \\*[$PAPER]
+.    \}
+.    if !\\n[#DOC_TYPE] .DOCTYPE DEFAULT
+.    if !r #CH_NUM .nr #CH_NUM 1 
+.    ie \\n[#PAGENUM_STYLE_SET] .PAGENUM_STYLE \\*[$PAGENUM_STYLE]
+.    el \
+.       if !\\n[#COPY_STYLE]=1 .PAGENUM_STYLE DIGIT
+.    if !\\n[#COPY_STYLE] .COPYSTYLE FINAL
+.    if \\n[#DRAFT_WITH_PAGENUM] .COPYSTYLE \\*[$COPY_STYLE]
+.    if \\n[#DOC_TYPE]=4 \{\
+.       if !\\n[#USER_SET_L_LENGTH] \{\
+.          R_MARGIN \\n[#R_MARGIN]u
+.          rr #USER_SET_L_LENGTH
+.       \}
+.       if \\n[#PRINT_STYLE]=1 .PRINTSTYLE TYPEWRITE SINGLESPACE
+.    \}
+.    if \\n[#COPY_STYLE]=1 \{\
 .       COPYSTYLE DRAFT
 .       PAGENUMBER 1
 .    \}
@@ -5474,55 +5797,61 @@ y\R'#DESCENDER \\n[.cdp]'
 .          el .if !r #T_MARGIN .T_MARGIN 6P
 .       \}
 .    \}
-.    if !r #T_MARGIN          .T_MARGIN \\n[#HEADER_MARGIN]+\\n[#HEADER_GAP]
-.    if !r #DOCHEADER_ADVANCE .nr #DOCHEADER_ADVANCE \\n[#T_MARGIN]
-.    if !r #FOOTER_MARGIN     .FOOTER_MARGIN 3P
-.    if !r #FOOTER_GAP        .FOOTER_GAP 3P
-.    if !r #B_MARGIN          .B_MARGIN \\n[#FOOTER_MARGIN]u+\\n[#FOOTER_GAP]u
-.    if (\\n[#FOOTER_MARGIN]+\\n[.v]>=\\n[#B_MARGIN]) \{\
-.       tm1 "[mom]: Your chosen bottom margin for running text is too close to the footer margin.
-.       tm1 "       No footers or bottom-of-page page numbers will be printed.
-.       tm1 "       Please reset B_MARGIN or FOOTER_MARGIN to allow enough space.
-.       tm1 "       If no footers or bottom-of-page page numbers are required,
-.       tm1 "       invoke .FOOTER_MARGIN 0 before .START
-.    \}
-.    if !r #HEADER_RULE_GAP .HEADER_RULE_GAP 4p
-.    if !r #FOOTER_RULE_GAP .FOOTER_RULE_GAP 4p
+.    if !r #T_MARGIN \
+.       T_MARGIN \\n[#HEADER_MARGIN]+\\n[#HEADER_GAP]
+.    if !r #DOCHEADER_ADVANCE \
+.       nr #DOCHEADER_ADVANCE \\n[#T_MARGIN]
+.    if !r #FOOTER_MARGIN .FOOTER_MARGIN 3P
+.    if !r #FOOTER_GAP    .FOOTER_GAP 3P
+.    if !r #B_MARGIN \
+.       B_MARGIN \\n[#FOOTER_MARGIN]u+\\n[#FOOTER_GAP]u
+.    if !\\n[#HEADER_RULE_GAP] .HEADER_RULE_GAP 4p
+.    if !\\n[#FOOTER_RULE_GAP] .FOOTER_RULE_GAP 4p
 .    if !r #HDRFTR_RULE     .HDRFTR_RULE
 .    if !r #PAGE_NUM_SET    .PAGENUMBER 1
 .\" Read in number registers and strings for type parameters
 .    nr #DOC_L_MARGIN \\n[#L_MARGIN]
 .    nr #DOC_L_LENGTH \\n[#L_LENGTH]
 .    nr #DOC_R_MARGIN \\n[#PAGE_WIDTH]-(\\n[#DOC_L_MARGIN]+\\n[#L_LENGTH])
-.    i'\\*[$SAVED_DOC_FAM]'' \{\
-.       ds $DOC_FAM \\*[$FAMILY]
+.    ie !'\\*[$SAVED_DOC_FAM]'' \{\
+.       ds $DOC_FAM \\*[$SAVED_DOC_FAM]
 .       rm $SAVED_DOC_FAM
 .    \}
+.    el .ds $DOC_FAM \\*[$FAMILY]
 .    nr #DOC_PT_SIZE  \\n[#PT_SIZE]
-.\"
 .    if \\n[#TOC]          .nr #DOC_PT_SIZE \\n[#TOC_PS]
 .    if \\n[#ENDNOTES]     .nr #DOC_PT_SIZE \\n[#EN_PS]
 .    if \\n[#BIBLIOGRAPHY] .nr #DOC_PT_SIZE \\n[#BIB_PS]
-.\"
-.    nr #DOC_LEAD     \\n[.v]
-.    nr #DOC@LEAD     \\n[#DOC_LEAD]
+.    if \
+(\\n[#TOC]=0)&\
+(\\n[#LIST_OF_FIGURES]=0)&\
+(\\n[#LIST_OF_TABLES]=0)&\
+(\\n[#LIST_OF_EQUATIONS]=0) \
+.    nr #DOC_LEAD \\n[.v]
+.    nr #DOC@LEAD \\n[#DOC_LEAD]
 .    if \\n[#AUTO_LEAD] .nr #DOC_AUTOLEAD \\n[#AUTOLEAD_VALUE]
 .\" #SAVED_DOC_LEAD is set in COLLATE
 .    if \\n[#SAVED_DOC_LEAD] \{\
 .       if \
-(\\n[#TOC]=0):\
-(\\n[#LIST_OF_FIGURES]=0):\
-(\\n[#LIST_OF_TABLES]=0):\
-(\\n[#LIST_OF_EQUATIONS]=0) \
-.          if !\\n[#DOC_LEAD]=\\n[#SAVED_DOC_LEAD] .nr #RERUN_TRAPS 1
+(\\n[#TOC]=0)&\
+(\\n[#LIST_OF_FIGURES]=0)&\
+(\\n[#LIST_OF_TABLES]=0)&\
+(\\n[#LIST_OF_EQUATIONS]=0) \{\
+.          ie !\\n[#DOC_LEAD]=\\n[#SAVED_DOC_LEAD] .nr #RERUN_TRAPS 1
+.          el .nr #SKIP_TRAPS 1
+.       \}
 .    \}
 .    ie \\n[#ADJ_DOC_LEAD]=1 .
 .    el \
 .       if !\\n[#DOC_LEAD_ADJUST_OFF] .DOC_LEAD_ADJUST
-.    ds $DOC_QUAD \\*[$QUAD_VALUE]
+.    ie d$RESTORE_DOC_QUAD \{\
+.       ds $DOC_QUAD \\*[$RESTORE_DOC_QUAD]
+.       rm $RESTORE_DOC_QUAD
+.    \}
+.    el .ds $DOC_QUAD \\*[$QUAD_VALUE]
 .    if '\\*[$FONT]''   .FT R
 .    if '\\*[$PP_FT]''  .ds $PP_FT \\*[$FONT]
-.    if !'\\*[$PP_FT]'' .ds $PP_FT \\*[$FONT]
+.    FT \\*[$PP_FT]
 .\" Counters
 .    nr #PP                0
 .    nr #FN_NUMBER         0 1
@@ -5530,44 +5859,51 @@ y\R'#DESCENDER \\n[.cdp]'
 .    nr #FN_COUNT_FOR_COLS 0 1
 .    nr #DONE_ONCE         0 1
 .\" Enable shimming if user hasn't turned it off
-.    if \\n[#NO_SHIM]=2    .rr #NO_SHIM
+.   if \\n[#NO_SHIM]=2 \{\
+.      rr #NO_SHIM
+.      nr #NO_FLEX 1
+.   \}
 .\" General style defaults for both PRINTSTYLEs
 .    nr #PP_STYLE 1
 .    PARA_INDENT \\n[#PP_INDENT]u
-.    if !d $HDRFTR_FAM               .HDRFTR_FAMILY \\*[$DOC_FAM]
-.    if !d $HDRFTR_SIZE_CHANGE       .HDRFTR_SIZE +0
-.    if !d $PAGE_NUM_FAM             .PAGENUM_FAMILY \\*[$DOC_FAM]
-.    if !d $PAGE_NUM_FT              .PAGENUM_FONT R
-.    if !d $PAGE_NUM_SIZE_CHANGE     .PAGENUM_SIZE +0
-.    if !r #PAGE_NUM_POS_SET         .PAGENUM_POS BOTTOM CENTER
+.    if !d $HDRFTR_FAM           .ds $HDRFTR_FAM \\*[$DOC_FAM]
+.    if !d $HDRFTR_SIZE_CHANGE   .HDRFTR_SIZE +0
+.    if !d $PAGE_NUM_FAM         .PAGENUM_FAMILY \\*[$DOC_FAM]
+.    if !d $PAGE_NUM_FT          .PAGENUM_FONT R
+.    if !d $PAGE_NUM_SIZE_CHANGE .PAGENUM_SIZE +0
+.    if !r #PAGE_NUM_POS_SET     .PAGENUM_POS BOTTOM CENTER
 .    ie \\n[#PAGE_NUM_HYPHENS_SET] \{\
-.       if \\n[#PAGE_NUM_HYPHENS]=0  .PAGENUM_HYPHENS OFF
-.       if \\n[#PAGE_NUM_HYPHENS]=1  .PAGENUM_HYPHENS
-.    \}
-.    el .PAGENUM_HYPHENS
-.    if !r #HDRFTR_RIGHT_CAPS .HDRFTR_RIGHT_CAPS
-.    if \\n[#HDRFTR_RIGHT_CAPS]=0 \
-.       if !d $HDRFTR_RIGHT_SIZE_CHANGE .HDRFTR_RIGHT_SIZE +0
-.    if !d $FN_FAM        .FOOTNOTE_FAMILY \\*[$DOC_FAM]
-.    if !d $FN_FT         .FOOTNOTE_FONT R
-.    if !d $FN_QUAD       .FOOTNOTE_QUAD \\*[$DOC_QUAD]
-.    if !r #FN_RULE       .FOOTNOTE_RULE
-.    if !r #FN_MARKERS    .FOOTNOTE_MARKERS
+.       if \\n[#PAGE_NUM_HYPHENS]=0 .PAGENUM_HYPHENS OFF
+.       if \\n[#PAGE_NUM_HYPHENS]=1 .PAGENUM_HYPHENS
+.    \}
+.    el \
+.       if !d$PAGENUM_STRING .PAGENUM_HYPHENS
+.    if !d $FN_FAM     .FOOTNOTE_FAMILY \\*[$DOC_FAM]
+.    if !d $FN_FT      .FOOTNOTE_FONT R
+.    if !d $FN_QUAD    .FOOTNOTE_QUAD \\*[$DOC_QUAD]
+.    if !r #FN_RULE    .FOOTNOTE_RULE
+.    if !r #FN_MARKERS .FOOTNOTE_MARKERS
 .    if \\n[#FN_MARKERS]=1 \{\
 .       if \\n[#FN_REF]=1 \
 .          if !\\n[#FN_MARKER_STYLE] .FOOTNOTE_MARKER_STYLE NUMBER
 .       if !\\n[#FN_MARKER_STYLE] .FOOTNOTE_MARKER_STYLE STAR
 .    \}
-.    if !r #EN_MARKER_STYLE     .ENDNOTE_MARKER_STYLE SUPERSCRIPT
-.    if !d $EN_PN_STYLE         .ENDNOTES_PAGENUM_STYLE digit
-.    if !d $EN_FAM              .ENDNOTE_FAMILY \\*[$DOC_FAM]
-.    if !d $EN_FT               .ENDNOTE_FONT R
-.    if !d $EN_QUAD             .ENDNOTE_QUAD \\*[$DOC_QUAD]
-.    if !d $EN_STRING           .ENDNOTE_STRING "Endnotes"
-.    if !d $EN_STRING_FAM       .ENDNOTE_STRING_FAMILY \\*[$EN_FAM]
-.    if !d $EN_STRING_QUAD      .ENDNOTE_STRING_QUAD CENTER
-.    if !r #EN_STRING_UNDERLINE .nr #EN_STRING_UNDERLINE 2
-.    if !r #EN_STRING_CAPS      .ENDNOTE_STRING_CAPS
+.    if !r #EN_MARKER_STYLE .ENDNOTE_MARKER_STYLE SUPERSCRIPT
+.    if !d $EN_PN_STYLE     .ENDNOTES_PAGENUM_STYLE digit
+.    if !d $EN_FAM          .ENDNOTE_FAMILY \\*[$DOC_FAM]
+.    if !d $EN_FT           .ENDNOTE_FONT R
+.    if !d $EN_QUAD \{\
+.       ds quad-check \\*[$DOC_QUAD]
+.       substring quad-check 0 0
+.       if '\\*[$DOC_QUAD]'C' .nr quad-check 1
+.       if '\\*[$DOC_QUAD]'R' .nr quad-check 1
+.       ie \\n[quad-check] .ENDNOTE_QUAD J
+.       el .ENDNOTE_QUAD \\*[$DOC_QUAD]
+.       rr quad-check
+.    \}
+.    if !d $EN_STRING       .ENDNOTES_HEADER_STRING "Endnotes"
+.    if !d $EN_STRING_FAM   .ENDNOTES_HEADER_FAMILY \\*[$EN_FAM]
+.    if !d $EN_STRING_QUAD  .ENDNOTES_HEADER_QUAD CENTER
 .    if !d $EN_TITLE \{\
 .       ie \\n[#DOC_TYPE]=2 \{\
 .          ie !'\\*[$CHAPTER_TITLE_1]'' \{\
@@ -5582,11 +5918,10 @@ y\R'#DESCENDER \\n[.cdp]'
 .          \}
 .       el .ENDNOTE_TITLE "\\*[$TITLE]"
 .    \}
-.    if !d $EN_TITLE_FAM          .ENDNOTE_TITLE_FAMILY \\*[$EN_FAM]
-.    if !d $EN_TITLE_QUAD         .ENDNOTE_TITLE_QUAD LEFT
-.    if !r #EN_TITLE_UNDERLINE    .nr #EN_TITLE_UNDERLINE 1
-.    if !d $EN_NUMBER_FAM         .ENDNOTE_NUMBER_FAMILY \\*[$EN_FAM]
-.    if !d $EN_LN_FAM             .ENDNOTE_LINENUMBER_FAMILY \\*[$EN_FAM]
+.    if !d $EN_TITLE_FAM  .ENDNOTE_TITLE_FAMILY \\*[$EN_FAM]
+.    if !d $EN_TITLE_QUAD .ENDNOTE_TITLE_QUAD LEFT
+.    if !d $EN_NUMBER_FAM .ENDNOTE_NUMBER_FAMILY \\*[$EN_FAM]
+.    if !d $EN_LN_FAM     .ENDNOTE_LINENUMBER_FAMILY \\*[$EN_FAM]
 .    if !r #EN_NUMBERS_ALIGN_LEFT \{\
 .       if !r #EN_NUMBERS_ALIGN_RIGHT \{\
 .          ie !\\n[#EN_MARKER_STYLE]=2 .ENDNOTE_NUMBERS_ALIGN RIGHT 2
@@ -5598,12 +5933,18 @@ y\R'#DESCENDER \\n[.cdp]'
 .    if !d $BIB_PN_STYLE         .BIBLIOGRAPHY_PAGENUM_STYLE digit
 .    if !d $BIB_FAM              .BIBLIOGRAPHY_FAMILY \\*[$DOC_FAM]
 .    if !d $BIB_FT               .BIBLIOGRAPHY_FONT R
-.    if !d $BIB_QUAD             .BIBLIOGRAPHY_QUAD \\*[$DOC_QUAD]
+.    if !d $BIB_QUAD \{\
+.       ds quad-check \\*[$DOC_QUAD]
+.       substring quad-check 0 0
+.       if '\\*[$DOC_QUAD]'C' .nr quad-check 1
+.       if '\\*[$DOC_QUAD]'R' .nr quad-check 1
+.       ie \\n[quad-check] .BIBLIOGRAPHY_QUAD J
+.       el .BIBLIOGRAPHY_QUAD \\*[$DOC_QUAD]
+.       rr quad-check
+.    \}
 .    if !d $BIB_STRING           .BIBLIOGRAPHY_STRING "Bibliography"
 .    if !d $BIB_STRING_FAM       .BIBLIOGRAPHY_STRING_FAMILY \\*[$BIB_FAM]
 .    if !d $BIB_STRING_QUAD      .BIBLIOGRAPHY_STRING_QUAD CENTER
-.    if !r #BIB_STRING_UNDERLINE .nr #BIB_STRING_UNDERLINE 2
-.    if !r #BIB_STRING_CAPS      .BIBLIOGRAPHY_STRING_CAPS
 .    if !d $TOC_HEADER_STRING    .TOC_HEADER_STRING "Contents"
 .    if !d $TOC_HEADER_QUAD      .TOC_HEADER_QUAD LEFT
 .    if !d $TOC_PN_STYLE         .TOC_PAGENUM_STYLE roman
@@ -5624,11 +5965,12 @@ y\R'#DESCENDER \\n[.cdp]'
 .\" Captions, labels, sources
 .\" All at default doc specs except leading, which is autolead 2
 .   nr label-type-counter 0 1
-.   while \\n+[label-type-counter]<=4 \{\
+.   while \\n+[label-type-counter]<=5 \{\
 .      if \\n[label-type-counter]=1 .ds label-type eqn
 .      if \\n[label-type-counter]=2 .ds label-type pdf-img
 .      if \\n[label-type-counter]=3 .ds label-type pic
 .      if \\n[label-type-counter]=4 .ds label-type tbl
+.      if \\n[label-type-counter]=5 .ds label-type floating
 .      nr spec-type-counter 0 1
 .      while \\n+[spec-type-counter]<=3 \{\
 .         if \\n[spec-type-counter]=1 .ds spec-type label
@@ -5637,10 +5979,12 @@ y\R'#DESCENDER \\n[.cdp]'
 .         set-defaults
 .         set-inline-specs
 .      \}
+.      rm label-type
+.      rm spec-type
 .   \}
 .\" String defaults for both PRINTSTYLEs
 .    ie \\n[#DOC_TYPE]=1 \{\
-.       ie '\\*[$DOC_TITLE]'' \{\
+.       ie '\\*[$DOCTITLE]'' \{\
 .          if \\n[#USER_DEF_HDRFTR_LEFT]=0  .ds $HDRFTR_LEFT \\*[$AUTHOR_1]
 .          if \\n[#USER_DEF_HDRFTR_RIGHT]=0 .ds $HDRFTR_RIGHT \\*[$TITLE]
 .       \}
@@ -5648,54 +5992,68 @@ y\R'#DESCENDER \\n[.cdp]'
 .          if \\n[#COPY_STYLE]=1             .DRAFT_WITH_PAGENUMBER
 .          if \\n[#USER_DEF_HDRFTR_LEFT]=0   .ds $HDRFTR_LEFT \\*[$AUTHOR_1]
 .          if \\n[#USER_DEF_HDRFTR_CENTER]=0 .ds $HDRFTR_CENTER \\*[$TITLE]
-.          if \\n[#USER_DEF_HDRFTR_RIGHT]=0  .ds $HDRFTR_RIGHT \\*[$DOC_TITLE]
+.          if \\n[#USER_DEF_HDRFTR_RIGHT]=0  .ds $HDRFTR_RIGHT \\*[$DOCTITLE]
 .       \}
 .    \}
 .    el \{\
 .       if \\n[#USER_DEF_HDRFTR_LEFT]=0  .ds $HDRFTR_LEFT \\*[$AUTHOR_1]
 .       if \\n[#USER_DEF_HDRFTR_RIGHT]=0 .ds $HDRFTR_RIGHT \\*[$TITLE]
 .    \}
-.    if !d $ATTRIBUTE_STRING     .ds $ATTRIBUTE_STRING by
-.    if !d $FINIS_STRING         .FINIS_STRING "End"
-.    if !r #FINIS_STRING_CAPS    .nr #FINIS_STRING_CAPS 1
+.    if !d $ATTRIBUTE_STRING  .ds $ATTRIBUTE_STRING by
+.    if !d $FINIS_STRING      .FINIS_STRING "End"
+.    if !r #FINIS_STRING_CAPS .nr #FINIS_STRING_CAPS 1
 .\" Covers
 .    if !r #DOC_COVERS_OFF           .nr #DOC_COVERS 1
 .    if !r #COVERS_OFF               .nr #COVERS 1
 .    if !d $COVER_COPYRIGHT_QUAD     .COVER_COPYRIGHT_QUAD R
 .    if !d $COVER_MISC_QUAD          .COVER_MISC_QUAD L
+.    if !d $MISC_QUAD                .MISC_QUAD L
 .    if !d $DOC_COVER_COPYRIGHT_QUAD .DOC_COVER_COPYRIGHT_QUAD R
 .    if !d $DOC_COVER_MISC_QUAD      .DOC_COVER_MISC_QUAD L
-.    if !r #DOC_COVER_UNDERLINE      .DOC_COVER_UNDERLINE
-.    if !r #COVER_UNDERLINE          .COVER_UNDERLINE
 .\" Defaults for printstyle TYPEWRITE
 .    if \\n[#PRINT_STYLE]=1 \{\
 .       TYPEWRITER
 .       SS DEFAULT
 .       if \\n[#UNDERLINE_QUOTES]=1 .UNDERLINE_QUOTES
 .       if \\n[#UNDERLINE_QUOTES]=0 .UNDERLINE_QUOTES OFF
+.       if !\\n[#HDRFTR_PLAIN] \{\
+.          if !r #HDRFTR_RIGHT_CAPS .nr #HDRFTR_RIGHT_CAPS 1
+.          if \\n[#HDRFTR_RIGHT_CAPS]=0 \
+.             if !d $HDRFTR_RIGHT_SIZE_CHANGE .HDRFTR_RIGHT_SIZE +0
+.       \}
 .\" +Doctype underlining (if NAMED)
 .       if !r #DOCTYPE_UNDERLINE .nr #DOCTYPE_UNDERLINE 1
 .\" +Quotes and blockquotes
-.       if !r #Q_OFFSET_VALUE \{\
-.          if '\\*[$Q_OFFSET_VALUE]'' .QUOTE_INDENT 1
-.       \}
+.       if !r #Q_OFFSET_VALUE \
+.          if '\\*[$Q_OFFSET_VALUE]'' \
+.             QUOTE_INDENT \\n[#PP_INDENT]u+(\\n[#PP_INDENT]u/2u)
+.       if !d $Q_QUAD .QUOTE_LEFT
+.       if !d $BQUOTE_QUAD        .BLOCKQUOTE_QUAD LEFT
+.       if !r #BQ_OFFSET_VALUE \
+.          if '\\*[$BQ_OFFSET_VALUE]'' \
+.             BLOCKQUOTE_INDENT \\n[#PP_INDENT]u+(\\n[#PP_INDENT]u/2u)
 .\" +Epigraphs
 .       if !r #EPI_OFFSET_VALUE \
 .          if '\\*[$EPI_OFFSET_VALUE]'' .EPIGRAPH_INDENT 2
 .\" +Linebreaks
 .       if !d $LINEBREAK_CHAR .LINEBREAK_CHAR * 3 2p
 .\" +Footnotes
-.       if !d $FN_SIZE_CHANGE    .FOOTNOTE_SIZE +0
-.       if !r #FN_RULE_LENGTH    .FOOTNOTE_RULE_LENGTH 2i
+.       if !d $FN_SIZE_CHANGE .FOOTNOTE_SIZE +0
+.       if !r #FN_RULE_LENGTH .FOOTNOTE_RULE_LENGTH 2i
 .\" +Endnotes
 .       if !r #EN_PP_INDENT .ENDNOTE_PARA_INDENT \\n[#PP_INDENT]
+.       if !r #EN_STRING_CAPS .ENDNOTES_HEADER_CAPS
+.       if !r #EN_STRING_UNDERLINE .nr #EN_STRING_UNDERLINE 2
 .\" +Footnotes
-.       if !r #FN_RULE_ADJ  .FOOTNOTE_RULE_ADJ 6p
+.       if !r #FN_RULE_ADJ .FOOTNOTE_RULE_ADJ 6p
 .\" +Slant stuff
 .       if !r #SLANT_MEANS_SLANT \{\
 .          ie \\n[#UNDERLINE_SLANT]=1 .UNDERLINE_SLANT
 .          el .UNDERLINE_SLANT OFF
 .       \}
+.\" +Bibliography
+.       if !r #BIB_STRING_UNDERLINE .nr #BIB_STRING_UNDERLINE 2
+.       if !r #BIB_STRING_CAPS .BIBLIOGRAPHY_STRING_CAPS
 .    \}
 .\" Defaults for printstyle TYPESET
 .    if \\n[#PRINT_STYLE]=2 \{\
@@ -5710,6 +6068,34 @@ y\R'#DESCENDER \\n[.cdp]'
 .       \}
 .       if !d $COVER_TITLE_FT .COVER_TITLE_FONT B
 .       if !d $COVER_TITLE_SIZE_CHANGE .COVER_TITLE_SIZE +3.5
+.\" (doctitle)
+.       if !d $COVER_DOCTITLE_FAM \{\
+.          ie !d $DOC_COVER_FAM .COVER_DOCTITLE_FAMILY \\*[$DOC_FAM]
+.          el .COVER_DOCTITLE_FAMILY \\*[$COVER_FAM]
+.       \}
+.       if !d $COVER_DOCTITLE_FT          .COVER_DOCTITLE_FONT B
+.       if !d $COVER_DOCTITLE_SIZE_CHANGE .COVER_DOCTITLE_SIZE +3.5
+.\" (covertitle)
+.       if !d $COVER_COVERTITLE_FAM \{\
+.          ie !d $COVER_FAM .COVER_COVERTITLE_FAMILY \\*[$DOC_FAM]
+.          el .COVER_COVERTITLE_FAMILY \\*[$COVER_FAM]
+.       \}
+.       if !d $COVER_COVERTITLE_FT .COVER_COVERTITLE_FONT B
+.       if !d $COVER_COVERTITLE_SIZE_CHANGE .COVER_COVERTITLE_SIZE +3.5
+.\" (doc_covertitle)
+.       if !d $COVER_DOC_COVERTITLE_FAM \{\
+.          ie !d $COVER_FAM .COVER_DOC_COVERTITLE_FAMILY \\*[$DOC_FAM]
+.          el .COVER_DOC_COVERTITLE_FAMILY \\*[$COVER_FAM]
+.       \}
+.       if !d $COVER_DOC_COVERTITLE_FT .COVER_DOC_COVERTITLE_FONT B
+.       if !d $COVER_DOC_COVERTITLE_SIZE_CHANGE .COVER_DOC_COVERTITLE_SIZE +3.5
+.\" (chapter)
+.       if !d $COVER_CHAPTER_FAM \{\
+.          ie !d $COVER_FAM .COVER_CHAPTER_FAMILY \\*[$DOC_FAM]
+.          el .COVER_CHAPTER_FAMILY \\*[$COVER_FAM]
+.       \}
+.       if !d $COVER_CHAPTER_FT .COVER_CHAPTER_FONT B
+.       if !d $COVER_CHAPTER_SIZE_CHANGE .COVER_CHAPTER_SIZE +3.5
 .\" (chapter title)
 .       if !d $COVER_CHAPTER_TITLE_FAM \{\
 .          ie !d $COVER_FAM .COVER_CHAPTER_TITLE_FAMILY \\*[$DOC_FAM]
@@ -5725,6 +6111,12 @@ y\R'#DESCENDER \\n[.cdp]'
 .       if !d $COVER_SUBTITLE_FT .COVER_SUBTITLE_FONT R
 .       if !d $COVER_SUBTITLE_SIZE_CHANGE .COVER_SUBTITLE_SIZE +0
 .\" (attribution and author[s])
+.       if !d $COVER_ATTRIBUTE_FAM \{\
+.          ie !d $COVER_FAM .COVER_ATTRIBUTE_FAMILY \\*[$DOC_FAM]
+.          el .COVER_ATTRIBUTE_FAMILY \\*[$COVER_FAM]
+.       \}
+.       if !d $COVER_ATTRIBUTE_FT .COVER_ATTRIBUTE_FONT I
+.       if !d $COVER_ATTRIBUTE_SIZE_CHANGE .COVER_ATTRIBUTE_SIZE +0
 .       if !d $COVER_AUTHOR_FAM \{\
 .          ie !d $COVER_FAM .COVER_AUTHOR_FAMILY \\*[$DOC_FAM]
 .          el .COVER_AUTHOR_FAMILY \\*[$COVER_FAM]
@@ -5749,7 +6141,7 @@ y\R'#DESCENDER \\n[.cdp]'
 .       if !d $COVER_MISC_FAM         .COVER_MISC_FAMILY \\*[$DOC_FAM]
 .       if !d $COVER_MISC_FT          .COVER_MISC_FONT R
 .       if !d $COVER_MISC_SIZE_CHANGE .COVER_MISC_SIZE -2
-.       if !r #COVER_MISC_AUTOLEAD    .COVER_MISC_AUTOLEAD 2
+.       if !r #COVER_MISC_LEAD        .COVER_MISC_LEAD 14.5
 .\" +Doc cover
 .       if !d $DOC_COVER_LEAD_ADJ .DOC_COVER_LEAD +0
 .       if !d $DOC_COVER_FAM      .DOC_COVER_FAMILY \\*[$DOC_FAM]
@@ -5760,6 +6152,34 @@ y\R'#DESCENDER \\n[.cdp]'
 .       \}
 .       if !d $DOC_COVER_TITLE_FT          .DOC_COVER_TITLE_FONT B
 .       if !d $DOC_COVER_TITLE_SIZE_CHANGE .DOC_COVER_TITLE_SIZE +3.5
+.\" (doctitle)
+.       if !d $DOC_COVER_DOCTITLE_FAM \{\
+.          ie !d $DOC_COVER_FAM .DOC_COVER_DOCTITLE_FAMILY \\*[$DOC_FAM]
+.          el .DOC_COVER_DOCTITLE_FAMILY \\*[$DOC_COVER_FAM]
+.       \}
+.       if !d $DOC_COVER_DOCTITLE_FT          .DOC_COVER_DOCTITLE_FONT B
+.       if !d $DOC_COVER_DOCTITLE_SIZE_CHANGE .DOC_COVER_DOCTITLE_SIZE +3.5
+.\" (covertitle)
+.       if !d $DOC_COVER_COVERTITLE_FAM \{\
+.          ie !d $COVER_FAM .DOC_COVER_COVERTITLE_FAMILY \\*[$DOC_FAM]
+.          el .DOC_COVER_COVERTITLE_FAMILY \\*[$COVER_FAM]
+.       \}
+.       if !d $DOC_COVER_COVERTITLE_FT .DOC_COVER_COVERTITLE_FONT B
+.       if !d $DOC_COVER_COVERTITLE_SIZE_CHANGE .DOC_COVER_COVERTITLE_SIZE +3.5
+.\" (doc_covertitle)
+.       if !d $DOC_COVER_DOC_COVERTITLE_FAM \{\
+.          ie !d $COVER_FAM .DOC_COVER_DOC_COVERTITLE_FAMILY \\*[$DOC_FAM]
+.          el .DOC_COVER_DOC_COVERTITLE_FAMILY \\*[$COVER_FAM]
+.       \}
+.       if !d $DOC_COVER_DOC_COVERTITLE_FT .DOC_COVER_DOC_COVERTITLE_FONT B
+.       if !d $DOC_COVER_DOC_COVERTITLE_SIZE_CHANGE .DOC_COVER_DOC_COVERTITLE_SIZE +3.5
+.\" (chapter)
+.       if !d $DOC_COVER_CHAPTER_FAM \{\
+.          ie !d $DOC_COVER_FAM .DOC_COVER_CHAPTER_FAMILY \\*[$DOC_FAM]
+.          el .DOC_COVER_CHAPTER_FAMILY \\*[$DOC_COVER_FAM]
+.       \}
+.       if !d $DOC_COVER_CHAPTER_FT          .DOC_COVER_CHAPTER_FONT B
+.       if !d $DOC_COVER_CHAPTER_SIZE_CHANGE .DOC_COVER_CHAPTER_SIZE +3.5
 .\" (chapter title)
 .       if !d $DOC_COVER_CHAPTER_TITLE_FAM \{\
 .          ie !d $DOC_COVER_FAM .DOC_COVER_CHAPTER_TITLE_FAMILY \\*[$DOC_FAM]
@@ -5775,6 +6195,12 @@ y\R'#DESCENDER \\n[.cdp]'
 .       if !d $DOC_COVER_SUBTITLE_FT .DOC_COVER_SUBTITLE_FONT R
 .       if !d $DOC_COVER_SUBTITLE_SIZE_CHANGE .DOC_COVER_SUBTITLE_SIZE +0
 .\" (attribution and author[s])
+.       if !d $DOC_COVER_ATTRIBUTE_FAM \{\
+.          ie !d $DOC_COVER_FAM .DOC_COVER_ATTRIBUTE_FAMILY \\*[$DOC_FAM]
+.          el .DOC_COVER_ATTRIBUTE_FAMILY \\*[$DOC_COVER_FAM]
+.       \}
+.       if !d $DOC_COVER_ATTRIBUTE_FT .DOC_COVER_ATTRIBUTE_FONT I
+.       if !d $DOC_COVER_ATTRIBUTE_SIZE_CHANGE .DOC_COVER_ATTRIBUTE_SIZE +0
 .       if !d $DOC_COVER_AUTHOR_FAM \{\
 .          ie !d $DOC_COVER_FAM .DOC_COVER_AUTHOR_FAMILY \\*[$DOC_FAM]
 .          el .DOC_COVER_AUTHOR_FAMILY \\*[$DOC_COVER_FAM]
@@ -5799,7 +6225,7 @@ y\R'#DESCENDER \\n[.cdp]'
 .       if !d $DOC_COVER_MISC_FAM         .DOC_COVER_MISC_FAMILY \\*[$DOC_FAM]
 .       if !d $DOC_COVER_MISC_FT          .DOC_COVER_MISC_FONT R
 .       if !d $DOC_COVER_MISC_SIZE_CHANGE .DOC_COVER_MISC_SIZE -2
-.       if !r #DOC_COVER_MISC_AUTOLEAD    .DOC_COVER_MISC_AUTOLEAD 2
+.       if !r #DOC_COVER_MISC_LEAD        .DOC_COVER_MISC_LEAD 14.5
 .\" +Docheader
 .       if !d $DOCHEADER_FAM .DOCHEADER_FAMILY \\*[$DOC_FAM]
 .       if !d $TITLE_FAM \{\
@@ -5807,10 +6233,17 @@ y\R'#DESCENDER \\n[.cdp]'
 .          el .TITLE_FAMILY \\*[$DOCHEADER_FAM]
 .       \}
 .       if !d $TITLE_FT .TITLE_FONT B
+.\" Title size change
 .       if !d $TITLE_SIZE_CHANGE \{\
 .          ie \\n[#DOC_TYPE]=2 .TITLE_SIZE +4
 .          el .TITLE_SIZE +3.5
 .       \}
+.       if !d $CHAPTER_FAM \{\
+.          ie !d $DOCHEADER_FAM .CHAPTER_FAMILY \\*[$DOC_FAM]
+.          el .CHAPTER_FAMILY \\*[$DOCHEADER_FAM]
+.       \}
+.       if !d $CHAPTER_FT .CHAPTER_FONT B
+.       if !d $CHAPTER_SIZE_CHANGE .CHAPTER_SIZE +4
 .       if !d $CHAPTER_TITLE_FAM \{\
 .          ie !d $DOCHEADER_FAM .CHAPTER_TITLE_FAMILY \\*[$DOC_FAM]
 .          el .CHAPTER_TITLE_FAMILY \\*[$DOCHEADER_FAM]
@@ -5823,6 +6256,12 @@ y\R'#DESCENDER \\n[.cdp]'
 .       \}
 .       if !d $SUBTITLE_FT          .SUBTITLE_FONT R
 .       if !d $SUBTITLE_SIZE_CHANGE .SUBTITLE_SIZE +0
+.       if !d $ATTRIBUTE_FAM \{\
+.          ie !d $DOCHEADER_FAM .ATTRIBUTE_FAMILY \\*[$DOC_FAM]
+.          el .ATTRIBUTE_FAMILY \\*[$DOCHEADER_FAM]
+.       \}
+.       if !d $ATTRIBUTE_FT          .ATTRIBUTE_FONT I
+.       if !d $ATTRIBUTE_SIZE_CHANGE .ATTRIBUTE_SIZE +0
 .       if !d $AUTHOR_FAM \{\
 .          ie !d $DOCHEADER_FAM .AUTHOR_FAMILY \\*[$DOC_FAM]
 .          el .AUTHOR_FAMILY \\*[$DOCHEADER_FAM]
@@ -5833,37 +6272,66 @@ y\R'#DESCENDER \\n[.cdp]'
 .          ie !d $DOCHEADER_FAM .DOCTYPE_FAMILY \\*[$DOC_FAM]
 .          el .DOCTYPE_FAMILY \\*[$DOCHEADER_FAM]
 .       \}
-.       if !d $DOCTYPE_FT           .DOCTYPE_FONT BI
-.       if !d $DOCTYPE_SIZE_CHANGE  .DOCTYPE_SIZE +3
-.       if !r #DOCTYPE_UNDERLINE    .DOCTYPE_UNDERLINE
+.       if !d $DOCTYPE_FT          .DOCTYPE_FONT BI
+.       if !d $DOCTYPE_SIZE_CHANGE .DOCTYPE_SIZE +3
 .\" +Headers and footers
-.       if !d $HDRFTR_LEFT_FAM              .HDRFTR_LEFT_FAMILY \\*[$DOC_FAM]
-.       if !d $HDRFTR_LEFT_FT               .HDRFTR_LEFT_FONT R
-.       if \\n[#HDRFTR_LEFT_CAPS] \
-.          if !d $HDRFTR_LEFT_SIZE_CHANGE   .HDRFTR_LEFT_SIZE -2
-.       if !d $HDRFTR_LEFT_SIZE_CHANGE      .HDRFTR_LEFT_SIZE -.5
-.       if !d $HDRFTR_CENTER_FAM            .HDRFTR_CENTER_FAMILY \\*[$DOC_FAM]
-.       if !d $HDRFTR_CENTER_FT             .HDRFTR_CENTER_FONT I
-.       if \\n[#HDRFTR_CENTER_CAPS] \
-.          if !d $HDRFTR_CENTER_SIZE_CHANGE .HDRFTR_CENTER_SIZE -2
-.       if !d $HDRFTR_CENTER_SIZE_CHANGE    .HDRFTR_CENTER_SIZE -.5
-.       if !d $HDRFTR_RIGHT_FAM             .HDRFTR_RIGHT_FAMILY \\*[$DOC_FAM]
-.       if !d $HDRFTR_RIGHT_FT              .HDRFTR_RIGHT_FONT R
-.       if \\n[#HDRFTR_RIGHT_CAPS] \
-.          if !d $HDRFTR_RIGHT_SIZE_CHANGE  .HDRFTR_RIGHT_SIZE -2
-.       if !d $HDRFTR_RIGHT_SIZE_CHANGE     .HDRFTR_RIGHT_SIZE -.5
+.       if !\\n[#HDRFTR_PLAIN] \{\
+.          if !d $HDRFTR_LEFT_FAM \
+.             HDRFTR_LEFT_FAMILY \\*[$DOC_FAM]
+.          if !d $HDRFTR_LEFT_FT \
+.              HDRFTR_LEFT_FONT R
+.          if \\n[#HDRFTR_LEFT_CAPS] \
+.             if !d $HDRFTR_LEFT_SIZE_CHANGE \
+.                HDRFTR_LEFT_SIZE -2
+.          if !d $HDRFTR_LEFT_SIZE_CHANGE \
+.              HDRFTR_LEFT_SIZE -.5
+.          if !d $HDRFTR_CENTER_FAM \
+.              HDRFTR_CENTER_FAMILY \\*[$DOC_FAM]
+.          if !d $HDRFTR_CENTER_FT .HDRFTR_CENTER_FONT I
+.          if \\n[#HDRFTR_CENTER_CAPS] \
+.             if !d $HDRFTR_CENTER_SIZE_CHANGE \
+.                HDRFTR_CENTER_SIZE -2
+.          if !d $HDRFTR_CENTER_SIZE_CHANGE \
+.              HDRFTR_CENTER_SIZE -.5
+.          if !d $HDRFTR_RIGHT_FAM \
+.             HDRFTR_RIGHT_FAMILY \\*[$DOC_FAM]
+.          if !d $HDRFTR_RIGHT_FT .HDRFTR_RIGHT_FONT R
+.          ie !r #HDRFTR_RIGHT_CAPS \{\
+.             nr #HDRFTR_RIGHT_CAPS 1
+.             if !d $HDRFTR_RIGHT_SIZE_CHANGE \
+.                HDRFTR_RIGHT_SIZE -2
+.          \}
+.          el \{\
+.             if \\n[#HDRFTR_RIGHT_CAPS]=0 \
+.                if !d $HDRFTR_RIGHT_SIZE_CHANGE \
+.                   HDRFTR_RIGHT_SIZE -.5
+.          \}
+.          ie !\\n[#HDRFTR_RIGHT_SMALLCAPS] \{\
+.             if \\n[#HDRFTR_RIGHT_CAPS] \
+.                if !d $HDRFTR_RIGHT_SIZE_CHANGE \
+.                   HDRFTR_RIGHT_SIZE -2
+.          \}
+.          el \{\
+.             nr #SKIP_CAPS_SMALLCAPS_WARNING 1
+.             if \\n[#HDRFTR_RIGHT_CAPS] .HDRFTR_RIGHT_CAPS OFF
+.          \}
+.          if !d $HDRFTR_RIGHT_SIZE_CHANGE .HDRFTR_RIGHT_SIZE -.5
+.       \}
 .\" +Quotes
 .       if !d $QUOTE_FAM         .QUOTE_FAMILY \\*[$DOC_FAM]
 .       if !d $QUOTE_FT          .QUOTE_FONT I
-.       if !d $QUOTE_SIZE_CHANGE .QUOTE_SIZE+0
+.       if !d $QUOTE_SIZE_CHANGE .QUOTE_SIZE +0
 .       if !r #Q_OFFSET_VALUE \
 .          if '\\*[$Q_OFFSET_VALUE]'' .QUOTE_INDENT 3
+.       if !d $Q_QUAD .QUOTE_LEFT
 .\" +Blockquotes
 .\"  Note: the leading for quotes and blockquotes is set after .DEFAULTS in START
 .       if !d $BQUOTE_FAM         .BLOCKQUOTE_FAMILY \\*[$DOC_FAM]
 .       if !d $BQUOTE_FT          .BLOCKQUOTE_FONT R
 .       if !d $BQUOTE_SIZE_CHANGE .BLOCKQUOTE_SIZE -1
 .       if !d $BQUOTE_QUAD        .BLOCKQUOTE_QUAD LEFT
+.       if !r #BQ_OFFSET_VALUE \
+.          if '\\*[$BQ_OFFSET_VALUE]'' .BLOCKQUOTE_INDENT 3
 .\" +Epigraphs
 .       if !d $EPI_FAM         .EPIGRAPH_FAMILY \\*[$DOC_FAM]
 .       if !d $EPI_FT          .EPIGRAPH_FONT R
@@ -5882,8 +6350,8 @@ y\R'#DESCENDER \\n[.cdp]'
 .       if !r #FN_AUTOLEAD    .FOOTNOTE_AUTOLEAD 2
 .\" +Endnotes
 .       if !r #EN_PS                 .ENDNOTE_PT_SIZE (\\n[#DOC_PT_SIZE]u)
-.       if !d $EN_STRING_FT          .ENDNOTE_STRING_FONT B
-.       if !d $EN_STRING_SIZE_CHANGE .ENDNOTE_STRING_SIZE +1
+.       if !d $EN_STRING_FT          .ENDNOTES_HEADER_FONT B
+.       if !d $EN_STRING_SIZE_CHANGE .ENDNOTES_HEADER_SIZE +3.5
 .       if !d $EN_TITLE_FT           .ENDNOTE_TITLE_FONT B
 .       if !d $EN_TITLE_SIZE_CHANGE  .ENDNOTE_TITLE_SIZE +0
 .       if !d $EN_NUMBER_FT          .ENDNOTE_NUMBER_FONT B
@@ -5896,17 +6364,18 @@ y\R'#DESCENDER \\n[.cdp]'
 .       if !r #BIB_LIST               .BIBLIOGRAPHY_TYPE PLAIN
 .       if !r #BIB_PS                 .BIBLIOGRAPHY_PT_SIZE (\\n[#DOC_PT_SIZE]u)
 .       if !d $BIB_STRING_FT          .BIBLIOGRAPHY_STRING_FONT B
-.       if !d $BIB_STRING_SIZE_CHANGE .BIBLIOGRAPHY_STRING_SIZE +1
+.       if !d $BIB_STRING_SIZE_CHANGE .BIBLIOGRAPHY_STRING_SIZE +3.5
 .\" +Table of contents
 .       if !d $TOC_FAM                .TOC_FAMILY \\*[$DOC_FAM]
 .       if !r #TOC_PS                 .TOC_PT_SIZE (\\n[#DOC_PT_SIZE]u)
 .       if '\\*[$TOC_LEAD]''          .TOC_LEAD \\n[#DOC@LEAD]u ADJUST
 .       if !d $TOC_HEADER_FAM         .TOC_HEADER_FAMILY \\*[$TOC_FAM]
-.       if !d $TOC_HEADER_SIZE_CHANGE .TOC_HEADER_SIZE +4
+.       if !d $TOC_HEADER_SIZE_CHANGE .TOC_HEADER_SIZE +3.5
 .       if !d $TOC_HEADER_FT          .TOC_HEADER_FONT B
 .       if !d $TOC_PN_FAM             .TOC_PN_FAMILY \\*[$TOC_FAM]
 .       if !d $TOC_PN_FT              .TOC_PN_FONT R
 .       if !d $TOC_PN_SIZE_CHANGE     .TOC_PN_SIZE +0
+.       if !d $TOC_TITLE_FAM          .TOC_TITLE_FAMILY \\*[$TOC_FAM]
 .    \}
 .\" +Refer support
 .    if !r #EN_REF .nr #FN_REF 1
@@ -5951,53 +6420,55 @@ y\R'#DESCENDER \\n[.cdp]'
 .       nr #AUTO_LEAD 1
 .       nr #AUTOLEAD_VALUE  \\n[#SAVED_AUTOLEAD_VALUE]
 .    \}
-.    ie !\\n[#COLLATE] \{\
-.\" DOC_LEAD adjusted (or not) here
-.       TRAPS
-.       if \\n[#REMOVE_ADJ] .DOC_LEAD \\n[#DOC_LEAD]u-\\n[#DOC_LEAD_ADJ]u
+.    if !\\n[#SKIP_TRAPS] .TRAPS
+.    rr #SKIP_TRAPS
+.    if \\n[#REMOVE_ADJ] .DOC_LEAD \\n[#DOC_LEAD]u-\\n[#DOC_LEAD_ADJ]u
+.    if (\\n[#FOOTER_MARGIN]+\\n[.v]>=\\n[#B_MARGIN]) \{\
+.       tm1 "[mom]: Your chosen bottom margin for running text is too close to the footer margin.
+.       tm1 "       No footers or bottom-of-page page numbers will be printed.
+.       tm1 "       Please reset B_MARGIN or FOOTER_MARGIN to allow enough space.
+.       tm1 "       If no footers or bottom-of-page page numbers are required,
+.       tm1 "       invoke .FOOTER_MARGIN 0 before .START
+.       nr #SKIP_FOOTER 1
+.    \}
 .\" Endnote, bibliography and toc leading
-.       nr #OK_PROCESS_LEAD 1
-.       nr #RESTORE_DOC_LEAD \\n[.v]
-.       nr #RESTORE_B_MARGIN \\n[#B_MARGIN]
-.       if \\n[#PRINT_STYLE]=1 \{\
-.          ie \\n[#SINGLE_SPACE] \{\
-.             ENDNOTE_LEAD      12 ADJUST
-.             BIBLIOGRAPHY_LEAD 12 ADJUST
-.          \}
-.          el \{\
-.             ie \\n[#EN_SINGLESPACE] .ENDNOTE_LEAD 12 ADJUST
-.             el .ENDNOTE_LEAD 24 ADJUST
-.             ie \\n[#BIB_SINGLESPACE] .BIBLIOGRAPHY_LEAD 12 ADJUST
-.             el .BIBLIOGRAPHY_LEAD 24 ADJUST
-.          \}
+.    nr #OK_PROCESS_LEAD 1
+.    nr #RESTORE_DOC_LEAD \\n[.v]
+.    nr #RESTORE_B_MARGIN \\n[#B_MARGIN]
+.    if \\n[#PRINT_STYLE]=1 \{\
+.       ie \\n[#SINGLE_SPACE] \{\
+.          ENDNOTE_LEAD      12 ADJUST
+.          BIBLIOGRAPHY_LEAD 12 ADJUST
 .       \}
-.       if \\n[#PRINT_STYLE]=2 \{\
-.          ie !d $EN_LEAD  .ENDNOTE_LEAD \\n[#UNADJUSTED_DOC_LEAD]u ADJUST
-.          el .ENDNOTE_LEAD \\*[$EN_LEAD] \\*[$ADJUST_EN_LEAD]
-.          ie !d $BIB_LEAD .BIBLIOGRAPHY_LEAD \\n[#UNADJUSTED_DOC_LEAD]u ADJUST
-.          el .BIBLIOGRAPHY_LEAD \\*[$BIB_LEAD] \\*[$ADJUST_BIB_LEAD]
-.          ie !d $TOC_LEAD .TOC_LEAD \\n[#UNADJUSTED_DOC_LEAD]u \\*[$ADJUST_TOC_LEAD]
-.          el .TOC_LEAD \\*[$TOC_LEAD] \\*[$ADJUST_TOC_LEAD]
-.       \}
-.       ie !d $BIB_SPACE .BIBLIOGRAPHY_SPACING 0
 .       el \{\
-.          if \\n[#DEFER_BIB_SPACING]=1 \{\
-.             BIBLIOGRAPHY_SPACING \\*[$BIB_SPACE]
-.             rr #DEFER_BIB_SPACING
-.          \}
+.          ie \\n[#EN_SINGLESPACE] .ENDNOTE_LEAD 12 ADJUST
+.          el .ENDNOTE_LEAD 24 ADJUST
+.          ie \\n[#BIB_SINGLESPACE] .BIBLIOGRAPHY_LEAD 12 ADJUST
+.          el .BIBLIOGRAPHY_LEAD 24 ADJUST
 .       \}
-.       nr #DOC_LEAD \\n[#RESTORE_DOC_LEAD]u
-.       nr #B_MARGIN \\n[#RESTORE_B_MARGIN]
-.       vs \\n[#DOC_LEAD]u
 .    \}
+.    if \\n[#PRINT_STYLE]=2 \{\
+.       ie !d $EN_LEAD  .ENDNOTE_LEAD \\n[#UNADJUSTED_DOC_LEAD]u ADJUST
+.       el .ENDNOTE_LEAD \\*[$EN_LEAD] \\*[$ADJUST_EN_LEAD]
+.       ie !d $BIB_LEAD .BIBLIOGRAPHY_LEAD \\n[#UNADJUSTED_DOC_LEAD]u ADJUST
+.       el .BIBLIOGRAPHY_LEAD \\*[$BIB_LEAD] \\*[$ADJUST_BIB_LEAD]
+.       ie !d $TOC_LEAD .TOC_LEAD \\n[#UNADJUSTED_DOC_LEAD]u \\*[$ADJUST_TOC_LEAD]
+.       el .TOC_LEAD \\*[$TOC_LEAD] \\*[$ADJUST_TOC_LEAD]
+.    \}
+.    ie !d $BIB_SPACE .BIBLIOGRAPHY_SPACING 0
 .    el \{\
-.       if \\n[#COLLATE] \{\
-.          if !\\n[#PRINT_STYLE]=1 \{\
-.             if \\n[#RERUN_TRAPS] \{\
-.                TRAPS
-.                rr #RERUN_TRAPS
-.             \}
-.          \}
+.       if \\n[#DEFER_BIB_SPACING]=1 \{\
+.          BIBLIOGRAPHY_SPACING \\*[$BIB_SPACE]
+.          rr #DEFER_BIB_SPACING
+.       \}
+.    \}
+.    nr #DOC_LEAD \\n[#RESTORE_DOC_LEAD]u
+.    nr #B_MARGIN \\n[#RESTORE_B_MARGIN]
+.    vs \\n[#DOC_LEAD]u
+.    if !\\n[#PRINT_STYLE]=1 \{\
+.       if \\n[#RERUN_TRAPS] \{\
+.          TRAPS
+.          rr #RERUN_TRAPS
 .       \}
 .    \}
 .\" Set default heading and toc-entry family if not done already
@@ -6009,9 +6480,9 @@ y\R'#DESCENDER \\n[.cdp]'
 .       if '\\*[$HEAD_\\n[#HD_LEVEL]_BASELINE_ADJ]'' \
 .           ds $HEAD_\\n[#HD_LEVEL]_BASELINE_ADJ \\n[.v]/10
 .       if '\\*[$TOC_HEAD_\\n[#HD_LEVEL]_FAM]'' \
-.           ds $TOC_HEAD_\\n[#HD_LEVEL]_FAM \\*[$DOC_FAM]
+.           ds $TOC_HEAD_\\n[#HD_LEVEL]_FAM \\*[$TOC_FAM]
 .    \}
-.    if '\\*[$TOC_TITLE_FAM]'' .ds $TOC_TITLE_FAM \\*[$DOC_FAM]
+.    if '\\*[$TOC_TITLE_FAM]'' .TOC_TITLE_FAMILY \\*[$DOC_FAM]
 .\" Re-run MNinit to capture strings and registers set in DEFAULTS.
 .    if !'\\*[$MN-arg1]'' \{\
 .       MNinit \
@@ -6028,314 +6499,394 @@ y\R'#DESCENDER \\n[.cdp]'
 .    \}
 .END
 \#
-\# ====================================================================
-\#
-\# +++START THE DOCUMENT+++
-\#
-\# THE START MACRO
-\# ---------------
-\# *Arguments:
-\#   <none>
-\# *Function:
-\#   Reads in default document style parameters and any parameters
-\#   the user has changed before issuing START.
-\#   Using the information gathered in the opening macros,
-\#   prints appropriate title (or chapter #), subtitle, author
-\#   and document type (if appropriate).
-\# *Notes:
-\#   The .PRINT \& (zero-width character) is required to get the
-\#   subsequent .sp request to work as advertised.
-\#
-\#   The overall document line length, family, and point-size
-\#   are stored in #DOC_L_LENGTH, $DOC_FAM, and #DOC_PT_SIZE for
-\#   use in the HEADER and FOOTER macros.
+\# =================================================================
 \#
-\#  First, define some strings for point sizes
-\#
-\# Doc cover
-\#
-.ds $DOC_COVER_AUTHOR_PT_SIZE \
-    \\n[#DOC_PT_SIZE]u\\*[$DOC_COVER_AUTHOR_SIZE_CHANGE]
-.ds $DOC_COVER_CHAPTER_TITLE_PT_SIZE \
-    \\n[#DOC_PT_SIZE]u\\*[$DOC_COVER_CHAPTER_TITLE_SIZE_CHANGE]
-.ds $DOC_COVER_COPYRIGHT_PT_SIZE \
-    \\n[#DOC_PT_SIZE]u\\*[$DOC_COVER_COPYRIGHT_SIZE_CHANGE]
-.ds $DOC_COVER_DOCTYPE_PT_SIZE \
-    \\n[#DOC_PT_SIZE]u\\*[$DOC_COVER_DOCTYPE_SIZE_CHANGE]
-.ds $DOC_COVER_MISC_PT_SIZE \
-    \\n[#DOC_PT_SIZE]u\\*[$DOC_COVER_MISC_SIZE_CHANGE]
-.ds $DOC_COVER_SUBTITLE_PT_SIZE \
-    \\n[#DOC_PT_SIZE]u\\*[$DOC_COVER_SUBTITLE_SIZE_CHANGE]
-.ds $DOC_COVER_TITLE_PT_SIZE \
-    \\n[#DOC_PT_SIZE]u\\*[$DOC_COVER_TITLE_SIZE_CHANGE]
-\# Cover
-.ds $COVER_AUTHOR_PT_SIZE \
-    \\n[#DOC_PT_SIZE]u\\*[$COVER_AUTHOR_SIZE_CHANGE]
-.ds $COVER_CHAPTER_TITLE_PT_SIZE \
-    \\n[#DOC_PT_SIZE]u\\*[$COVER_CHAPTER_TITLE_SIZE_CHANGE]
-.ds $COVER_COPYRIGHT_PT_SIZE \
-    \\n[#DOC_PT_SIZE]u\\*[$COVER_COPYRIGHT_SIZE_CHANGE]
-.ds $COVER_DOCTYPE_PT_SIZE \
-    \\n[#DOC_PT_SIZE]u\\*[$COVER_DOCTYPE_SIZE_CHANGE]
-.ds $COVER_MISC_PT_SIZE \
-    \\n[#DOC_PT_SIZE]u\\*[$COVER_MISC_SIZE_CHANGE]
-.ds $COVER_SUBTITLE_PT_SIZE \
-    \\n[#DOC_PT_SIZE]u\\*[$COVER_SUBTITLE_SIZE_CHANGE]
-.ds $COVER_TITLE_PT_SIZE \
-    \\n[#DOC_PT_SIZE]u\\*[$COVER_TITLE_SIZE_CHANGE]
-\# Docheader
-.ds $AUTHOR_PT_SIZE \
-    \\n[#DOC_PT_SIZE]u\\*[$AUTHOR_SIZE_CHANGE]
-.ds $CHAPTER_TITLE_PT_SIZE \
-    \\n[#DOC_PT_SIZE]u\\*[$CHAPTER_TITLE_SIZE_CHANGE]
-.ds $COPYRIGHT_PT_SIZE \
-    \\n[#DOC_PT_SIZE]u\\*[$COPYRIGHT_SIZE_CHANGE]
-.ds $DOCTYPE_PT_SIZE \
-    \\n[#DOC_PT_SIZE]u\\*[$DOCTYPE_SIZE_CHANGE]
-.ds $SUBTITLE_PT_SIZE \
-    \\n[#DOC_PT_SIZE]u\\*[$SUBTITLE_SIZE_CHANGE]
-.ds $TITLE_PT_SIZE \
-    \\n[#DOC_PT_SIZE]u\\*[$TITLE_SIZE_CHANGE]
-\#
-\# Next, some utility macros for various routines to prevent repetition
+\# Macros and aliases needed for doccover, cover, and docheader in
+\# START.
 \#
 .MAC DOC_HEADER_QUAD END
 .    if '\\$0'DOC_HEADER_QUAD' .ds $CALLING_MACRO DOCHEADER
 .    if '\\$0'COVER_H_POS'     .ds $CALLING_MACRO COVER
 .    if '\\$0'DOC_COVER_H_POS' .ds $CALLING_MACRO DOC_COVER
+.    substring $\\*[$CALLING_MACRO]_QUAD 0 0
 .    ie !'\\*[$\\*[$CALLING_MACRO]_QUAD]'' \{\
-.       if '\\*[$\\*[$CALLING_MACRO]_QUAD]'L'      .LEFT
-.       if '\\*[$\\*[$CALLING_MACRO]_QUAD]'LEFT'   .LEFT
-.       if '\\*[$\\*[$CALLING_MACRO]_QUAD]'R'      .RIGHT
-.       if '\\*[$\\*[$CALLING_MACRO]_QUAD]'RIGHT'  .RIGHT
-.       if '\\*[$\\*[$CALLING_MACRO]_QUAD]'C'      .RIGHT
-.       if '\\*[$\\*[$CALLING_MACRO]_QUAD]'CENTER' .CENTER
-.       if '\\*[$\\*[$CALLING_MACRO]_QUAD]'CENTRE' .CENTER
+.       if '\\*[$\\*[$CALLING_MACRO]_QUAD]'L' .LEFT
+.       if '\\*[$\\*[$CALLING_MACRO]_QUAD]'C' .CENTER
+.       if '\\*[$\\*[$CALLING_MACRO]_QUAD]'C' .RIGHT
 .    \}
 .    el .CENTER
 .END
-\#
-\# Aliases for DOC_HEADER_QUAD
-\#
-.ALIAS COVER_H_POS      DOC_HEADER_QUAD
-.ALIAS DOC_COVER_H_POS  DOC_HEADER_QUAD
-\#
-.MAC PRINT_AUTHORS END
-.    ie r#DOING_COVER \{\
-.       if \\n[#DOC_COVER]=1 \{\
-.          ie !'\\*[$AUTHOR_DOCCOVER_1]'' \{\
-.             nr #AUTHORS \\n[#AUTHOR_DOCCOVER_NUM]
-.             nr #NEXT_AUTHOR 0 1
-.             while \\n[#AUTHORS]>\\n[#NEXT_AUTHOR] \{\
-.                ie \\n[#DOC_COVER_AUTHOR_COLOR]=1 \
-.                   PRINT \
-\m[\\*[$DOC_COVER_AUTHOR_COLOR]]\\*[$AUTHOR_DOCCOVER_\\n+[#NEXT_AUTHOR]]\m[]
-.                el .PRINT \\*[$AUTHOR_DOCCOVER_\\n+[#NEXT_AUTHOR]]
-.             \}
-.          \}
-.          el \{\
-.             nr #AUTHORS \\n[#AUTHOR_NUM]
-.             nr #NEXT_AUTHOR 0 1
-.             while \\n[#AUTHORS]>\\n[#NEXT_AUTHOR] \{\
-.                ie \\n[#DOC_COVER_AUTHOR_COLOR]=1 \
-.                   PRINT \
-\m[\\*[$DOC_COVER_AUTHOR_COLOR]]\\*[$AUTHOR_\\n+[#NEXT_AUTHOR]]\m[]
-.                el .PRINT \\*[$AUTHOR_\\n+[#NEXT_AUTHOR]]
-.             \}
-.          \}
-.          return
+.
+.ALIAS COVER_H_POS     DOC_HEADER_QUAD
+.ALIAS DOC_COVER_H_POS DOC_HEADER_QUAD
+\#
+.MAC DO_TITLE_OR_AUTHOR END
+.    ie '\\$0'DO_AUTHORS' .ds $TTL_AUTH AUTHOR
+.    el .ds $TTL_AUTH TITLE
+.    if !'\\*[$\\*[$PRFX]\\*[$TTL_AUTH]_1]'' \{\
+.       if '\\$0'DO_SUBTITLE' \{\
+.          if '\\*[$PRFX]'\\*[DOC_]COVER_SUB' \{\
+.             ds $PRFX SUB
+.             nr #\\*[DOC_]COVER_SUB 1
+.          \}
+.       \}
+.       if !\\n[#PRINT_STYLE]=1 \{\
+\#.          if (\\n[#COVER]=1):(\\n[#DOC_COVER]=1) \
+\#.             rn $PRFX $PRFX_SAVED
+.          fam  \\*[$\\*[$COVER_TYPE]\\*[$PRFX]\\*[$TTL_AUTH]_FAM]
+.          ft   \\*[$\\*[$COVER_TYPE]\\*[$PRFX]\\*[$TTL_AUTH]_FT]
+.          ps \
+\\n[#DOC_PT_SIZE]u\\*[$\\*[$COVER_TYPE]\\*[$PRFX]\\*[$TTL_AUTH]_SIZE_CHANGE]
+.          if '\\*[$COVER_TYPE]'' .vs \\n[#DOCHEADER_LEAD]u
+.          if !'\\*[$\\*[$COVER_TYPE]\\*[$PRFX]\\*[$TTL_AUTH]_LEAD]'' \{\
+.             vs \\*[$\\*[$COVER_TYPE]\\*[$PRFX]\\*[$TTL_AUTH]_LEAD]
+.             if \\n[#DOCHEADER] .sp |\\n[#T_MARGIN]u-1v
+.          \}
+.          if \\n[#CHAPTER+TITLE]=1 .ALD \\n[.v]u/4u \" A little space before the chapter title
+.          if \\n[#\\*[$COVER_TYPE]\\*[$PRFX]\\*[$TTL_AUTH]_COLOR]=1 \
+.             COLOR \\*[$\\*[$COVER_TYPE]\\*[$PRFX]\\*[$TTL_AUTH]_COLOR]
+.          if \\n[#\\*[$COVER_TYPE]\\*[$PRFX]\\*[$TTL_AUTH]_CAPS]=1 .CAPS
+.          if \\n[#\\*[$COVER_TYPE]\\*[$PRFX]\\*[$TTL_AUTH]_SMALLCAPS]=1 .SMALLCAPS
+\#.          if (\\n[#COVER]=1):(\\n[#DOC_COVER]=1) \
+\#.             rn $PRFX_SAVED $PRFX
+.       \}
+.       if \\n[#\\*[DOC_]COVER_SUB] \{\
+.          rr #\\*[DOC_]COVER_SUB
+.          ds $PRFX \\*[DOC_]COVER_SUB
+.          ds $SAVED_COVER_TYPE \\*[$COVER_TYPE]
+.          rm $COVER_TYPE
 .       \}
-.       if \\n[#COVER]=1 \{\
-.          ie !'\\*[$AUTHOR_COVER_1]'' \{\
-.             nr #AUTHORS \\n[#AUTHOR_COVER_NUM]
-.             nr #NEXT_AUTHOR 0 1
-.             while \\n[#AUTHORS]>\\n[#NEXT_AUTHOR] \{\
-.                ie \\n[#COVER_AUTHOR_COLOR]=1 \
-.                   PRINT \
-\m[\\*[$COVER_AUTHOR_COLOR]]\\*[$AUTHOR_COVER_\\n+[#NEXT_AUTHOR]]\m[]
-.                el .PRINT \\*[$AUTHOR_COVER_\\n+[#NEXT_AUTHOR]]
+.       nr #ARG_NUM 0 1
+.       while \\n[#\\*[$PRFX]\\*[$TTL_AUTH]_NUM]>=\\n+[#ARG_NUM] \{\
+.          ie \\n[#\\*[$COVER_TYPE]\\*[$PRFX]\\*[$TTL_AUTH]_UNDERLINE] \{\
+.             ds $TITLE_TYPE \\*[$COVER_TYPE]\\*[$PRFX]\\*[$TTL_AUTH]
+.             ie \\n[#\\*[$COVER_TYPE]\\*[$PRFX]\\*[$TTL_AUTH]_UNDERLINE]=2 \{\
+.                ie !\\n[#PRINT_STYLE]=1 \
+.                   UNDERSCORE2 \\*[$\\*[$PRFX]\\*[$TTL_AUTH]_UNDERLINE_GAP] \
+\\*[$\\*[$PRFX]\\*[$TTL_AUTH]_RULE_GAP] \
+"\\*[$\\*[$PRFX]\\*[$TTL_AUTH]_\\n[#ARG_NUM]]
+.                el .UNDERSCORE "\\*[$\\*[$PRFX]\\*[$TTL_AUTH]_\\n[#ARG_NUM]]
+.             \}
+.             el \{\
+.                ie !\\n[#PRINT_STYLE]=1 \
+.                   UNDERSCORE "\\*[$\\*[$PRFX]\\*[$TTL_AUTH]_\\n[#ARG_NUM]]
+.                el .PRINT "\\*[$\\*[$PRFX]\\*[$TTL_AUTH]_\\n[#ARG_NUM]]
 .             \}
 .          \}
 .          el \{\
-.             nr #AUTHORS \\n[#AUTHOR_NUM]
-.             nr #NEXT_AUTHOR 0 1
-.             while \\n[#AUTHORS]>\\n[#NEXT_AUTHOR] \{\
-.                ie \\n[#COVER_AUTHOR_COLOR]=1 \
-.                   PRINT \
-\m[\\*[$COVER_AUTHOR_COLOR]]\\*[$AUTHOR_\\n+[#NEXT_AUTHOR]]\m[]
-.                el .PRINT \\*[$AUTHOR_\\n+[#NEXT_AUTHOR]]
-.             \}
+.             PRINT "\\*[$\\*[$PRFX]\\*[$TTL_AUTH]_\\n[#ARG_NUM]]
 .          \}
-.          return
-.       \}
-.    \}
-.    el \{\
-.       nr #AUTHORS \\n[#AUTHOR_NUM]
-.       nr #NEXT_AUTHOR 0 1
-.       while \\n[#AUTHORS]>\\n[#NEXT_AUTHOR] \{\
-.          ie \\n[#AUTHOR_COLOR]=1 \
-.             PRINT \m[\\*[$AUTHOR_COLOR]]\\*[$AUTHOR_\\n+[#NEXT_AUTHOR]]\m[]
-.          el .PRINT \\*[$AUTHOR_\\n+[#NEXT_AUTHOR]]
+.          if \\n[#ARG_NUM]>1 .as PDF_BM " \"
+.          as PDF_BM \\*[$\\*[$PRFX]\\*[$TTL_AUTH]_\\n[#ARG_NUM]]
 .       \}
+.       rm $TITLE_TYPE
+.       if \\n[#PRINT_STYLE]=2 .vs
+.       if \\n[#\\*[$COVER_TYPE]\\*[$PRFX]\\*[$TTL_AUTH]_COLOR]=1 \
+.          gcolor
+.       SMALLCAPS off
+.       CAPS off
 .    \}
+.    if !'\\*[$SAVED_COVER_TYPE]'' \{\
+.      ds $COVER_TYPE \\*[$SAVED_COVER_TYPE]
+.      rm $SAVED_COVER_TYPE
+.   \}
+.END
+.
+.ALIAS DO_TITLE    DO_TITLE_OR_AUTHOR
+.ALIAS DO_SUBTITLE DO_TITLE_OR_AUTHOR
+.ALIAS DO_AUTHORS  DO_TITLE_OR_AUTHOR
+\#
+.MAC DO_CHAPTER END
+.    fam \\*[$\\*[DOC_]COVER_CHAPTER_FAM]
+.    ft     \\*[$\\*[DOC_]COVER_CHAPTER_FT]
+.    ps \\n[#DOC_PT_SIZE]u\\*[$\\*[DOC_]COVER_CHAPTER_SIZE_CHANGE]
+.    if \\n[#\\*[DOC_]COVER_CHAPTER_COLOR]=1 \
+.       COLOR \\*[$\\*[DOC_]COVER_CHAPTER_COLOR]
+.    if \\n[#\\*[DOC_]COVER_CHAPTER_CAPS]=1 .CAPS
+.    if \\n[#\\*[DOC_]COVER_CHAPTER_SMALLCAPS]=1 .SMALLCAPS
+.    ie \\n[#\\*[DOC_]COVER_CHAPTER_UNDERLINE] \{\
+.       ds $TITLE_TYPE \\*[$COVER_TYPE]CHAPTER
+.       ie \\n[#\\*[DOC_]COVER_CHAPTER_UNDERLINE]=2 \
+.          UNDERSCORE2 \\*[$\\*[DOC_]COVER_CHAPTER_UNDERLINE_GAP] \
+\\*[$\\*[DOC_]COVER_CHAPTER_RULE_GAP] "\\*[$CHAPTER_STRING] \\*[$CHAPTER]"
+.       el .UNDERSCORE "\\*[$CHAPTER_STRING] \\*[$CHAPTER]"
+.    \}
+.    el .PRINT "\\*[$CHAPTER_STRING] \\*[$CHAPTER]"
+.    gcolor
+.    SMALLCAPS off
+.    CAPS off
+.END
+.
+.ALIAS DO_TITLE    DO_TITLE_OR_AUTHOR
+.ALIAS DO_SUBTITLE DO_TITLE_OR_AUTHOR
+.ALIAS DO_AUTHORS  DO_TITLE_OR_AUTHOR
+\#
+.MAC DO_CHAPTER END
+.    fam \\*[$\\*[DOC_]COVER_CHAPTER_FAM]
+.    ft     \\*[$\\*[DOC_]COVER_CHAPTER_FT]
+.    ps \\n[#DOC_PT_SIZE]u\\*[$\\*[DOC_]COVER_CHAPTER_SIZE_CHANGE]
+.    if \\n[#\\*[DOC_]COVER_CHAPTER_COLOR]=1 \
+.       COLOR \\*[$\\*[DOC_]COVER_CHAPTER_COLOR]
+.    if \\n[#\\*[DOC_]COVER_CHAPTER_CAPS]=1 .CAPS
+.    if \\n[#\\*[DOC_]COVER_CHAPTER_SMALLCAPS]=1 .SMALLCAPS
+.    ie \\n[#\\*[DOC_]COVER_CHAPTER_UNDERLINE] \{\
+.       ds $TITLE_TYPE \\*[$COVER_TYPE]CHAPTER
+.       ie \\n[#\\*[DOC_]COVER_CHAPTER_UNDERLINE]=2 \
+.          UNDERSCORE2 \\*[$\\*[DOC_]COVER_CHAPTER_UNDERLINE_GAP] \
+\\*[$\\*[DOC_]COVER_CHAPTER_RULE_GAP] "\\*[$CHAPTER_STRING] \\*[$CHAPTER]"
+.       el .UNDERSCORE "\\*[$CHAPTER_STRING] \\*[$CHAPTER]"
+.    \}
+.    el .PRINT "\\*[$CHAPTER_STRING] \\*[$CHAPTER]"
+.    gcolor
+.    SMALLCAPS off
+.    CAPS off
+.END
+\#
+\# Spacing adjustments for (doc)cover and docheader elements
+\#
+.MAC _SPACE END
+.   ds $\\$0R \\$1
 .END
+.
+.ds SPACER_TYPE_1 SUBTITLE
+.ds SPACER_TYPE_2 ATTRIBUTE
+.ds SPACER_TYPE_3 AUTHOR
+.ds SPACER_TYPE_4 CHAPTER_TITLE
+.ds SPACER_TYPE_5 DOCTYPE
+.
+.nr #LOOP 0 1
+.while \n+[#LOOP]<=5 \{\
+.   ALIAS \*[SPACER_TYPE_\n[#LOOP]]_SPACE           _SPACE
+.   ALIAS COVER_\*[SPACER_TYPE_\n[#LOOP]]_SPACE     _SPACE
+.   ALIAS DOC_COVER_\*[SPACER_TYPE_\n[#LOOP]]_SPACE _SPACE
+.\}
 \#
 .MAC DEFAULT_DOCHEADER END
+.    nr #DOCHEADER 1
 .    DOC_HEADER_QUAD
-.    if !'\\*[$TITLE_1]'' \{\
-.       FAMILY  \\*[$TITLE_FAM]
-.       FT      \\*[$TITLE_FT]
-.       ps \\*[$TITLE_PT_SIZE]
-.       vs      \\n[#DOCHEADER_LEAD]u
-.       nr #ARG_NUM 0 1
-.       while \\n[#TITLE_NUM]>=\\n+[#ARG_NUM] \{\
-.          ie \\n[#TITLE_COLOR]=1 \
-.             PRINT "\m[\\*[$TITLE_COLOR]]\\*[$TITLE_\\n[#ARG_NUM]]\m[]
-.          el .PRINT "\\*[$TITLE_\\n[#ARG_NUM]]
-.       \}
-.    \}
+.    vs \\n[#DOCHEADER_LEAD]u
+.    if \\n[#PRINT_STYLE]=2 \
+.       if \\n[#DOCHEADER_COLOR]=1 \
+.          COLOR \\*[$DOCHEADER_COLOR]
+.    DO_TITLE
+.    rr #DOCHEADER
 .    if !'\\*[$SUBTITLE_1]'' \{\
-.       FAMILY  \\*[$SUBTITLE_FAM]
-.       FT      \\*[$SUBTITLE_FT]
-.       ps \\*[$SUBTITLE_PT_SIZE]
-.       nr #ARG_NUM 0 1
-.       while \\n[#SUBTITLE_NUM]>=\\n+[#ARG_NUM] \{\
-.          ie \\n[#SUBTITLE_COLOR]=1 \
-.             PRINT "\m[\\*[$SUBTITLE_COLOR]]\\*[$SUBTITLE_\\n[#ARG_NUM]]\m[]
-.          el .PRINT "\\*[$SUBTITLE_\\n[#ARG_NUM]]
+.       ds $PRFX SUB
+.       if !'\\*[$SUBTITLE_SPACER]'' .sp \\*[$SUBTITLE_SPACER]
+.       if \\n[#PRINT_STYLE]=2 \
+.          if \\n[#DOCHEADER_COLOR]=1 \
+.             COLOR \\*[$DOCHEADER_COLOR]
+.       DO_SUBTITLE
+.       rm $PRFX
+.    \}
+.    if !\\n[#NO_PRINT_AUTHOR] \{\
+.       if !'\\*[$AUTHOR_1]'' \{\
+.          ie \\n[#PRINT_STYLE]=1 \{\
+.             TYPEWRITER
+.             ie \\n[#SINGLE_SPACE]=1 .vs \\n[#DOC_LEAD]u
+.             el .vs \\n[#DOC_LEAD]u/2u
+.             sp
+.          \}
+.          el .vs \\n[#DOC_LEAD]u\\*[$DOCHEADER_LEAD_ADJ]
+.          if d$ATTRIBUTE_STRING \{\
+.             FAMILY \\*[$ATTRIBUTE_FAM]
+.             FT     \\*[$ATTRIBUTE_FT]
+.             ps \
+\\n[#DOC_PT_SIZE]u\\*[$ATTRIBUTE_SIZE_CHANGE]
+.             if \\n[#DOCHEADER_COLOR]=1 \
+.                COLOR \\*[$DOCHEADER_COLOR]
+.             if \\n[#ATTRIBUTE_COLOR]=1 \
+.                COLOR \\*[$ATTRIBUTE_COLOR]
+.             if \\n[#ATTRIBUTE_CAPS]=1 .CAPS
+.             if !'\\*[$ATTRIBUTE_SPACER]'' \
+.                sp \\*[$ATTRIBUTE_SPACER]
+.             ie \\n[#ATTRIBUTE_UNDERLINE] \{\
+.                ds $TITLE_TYPE ATTRIBUTE
+.                ie \\n[#ATTRIBUTE_UNDERLINE]=2 \
+.                   UNDERSCORE2 \\*[$ATTRIBUTE_UNDERLINE_GAP] \
+\\*[$ATTRIBUTE_RULE_GAP] "\\*[$ATTRIBUTE_STRING]"
+.                el .UNDERSCORE "\\*[$ATTRIBUTE_STRING]"
+.             \}
+.             el .PRINT "\\*[$ATTRIBUTE_STRING]"
+.             if \\n[#ATTRIBUTE_COLOR]=1 .gcolor
+.             CAPS off
+.          \}
+.          if !'\\*[$AUTHOR_SPACER]'' .sp \\*[$AUTHOR_SPACER]
+.          if \\n[#DOCHEADER_COLOR]=1 \
+.             COLOR \\*[$DOCHEADER_COLOR]
+.          DO_AUTHORS
 .       \}
 .    \}
-.    if !'\\*[$AUTHOR_1]'' \{\
-.       FAMILY  \\*[$AUTHOR_FAM]
-.       FT      \\*[$AUTHOR_FT]
-.       ps \\*[$AUTHOR_PT_SIZE]
-.       ie \\n[#ATTRIBUTE_COLOR]=1 \
-.          PRINT \&\m[\\*[$ATTRIBUTE_COLOR]]\\*[$ATTRIBUTE_STRING]\m[]
-.       el .PRINT \&\\*[$ATTRIBUTE_STRING]
-.       PRINT_AUTHORS
-.    \}
 .    FAMILY \\*[$DOC_FAM]
 .    FT R
 .END
 \#
-.MAC CHAPTER_DOCHEADER END
-.    DOC_HEADER_QUAD
-.    FAMILY  \\*[$TITLE_FAM]
-.    FT      \\*[$TITLE_FT]
-.    ps \\*[$TITLE_PT_SIZE]
-.    vs \\n[#DOCHEADER_LEAD]u
-.\" Chapter title only
-.    ie '\\*[$CHAPTER]'' \{\
-.       ie !'\\*[$CHAPTER_TITLE_1]'' \{\
-.          if \\n[#PRINT_STYLE]=2 \{\
-.             FAMILY  \\*[$CHAPTER_TITLE_FAM]
-.             FT      \\*[$CHAPTER_TITLE_FT]
-.             ps \\*[$CHAPTER_TITLE_PT_SIZE]
-.             vs \\n[#DOCHEADER_LEAD]u
-.          \}
-.          nr #ARG_NUM 0 1
-.          while \\n[#CHAPTER_TITLE_NUM]>=\\n+[#ARG_NUM] \{\
-.             ie \\n[#TITLE_COLOR]=1 \{\
-.                PRINT \
-\m[\\*[$TITLE_COLOR]]\\*[$CHAPTER_TITLE_\\n[#ARG_NUM]]\m[]
-.             \}
-.             el .PRINT \\*[$CHAPTER_TITLE_\\n[#ARG_NUM]]
-.          \}
+.MAC DEFAULT_DOCHEADER_TYPEWRITE END
+.    CENTER
+.    TYPEWRITER
+.    if !\\n[#SINGLE_SPACE] \{\
+.       vs \\n[#DOC_LEAD]u/2u
+.       sp |\\n[#T_MARGIN]u-1v
+.    \}
+.    if !'\\*[$TITLE_1]'' \{\
+.       ie \\n[#SINGLE_SPACE] \
+.          vs \\n[#DOC_LEAD]u+(\\n[#DOC_LEAD]u/4u)
+.       el .vs (\\n[#DOC_LEAD]u/2u)+(\\n[#DOC_LEAD]u/4u)
+.       CAPS
+.       DO_TITLE
+.       CAPS OFF
+.       vs
+.    \}
+.    if !'\\*[$SUBTITLE]'' \{\
+.       ds $PRFX SUB
+.       sp
+.       DO_SUBTITLE
+.       rm $PRFX
+.    \}
+.    if !\\n[#NO_PRINT_AUTHOR] \{\
+.       if !'\\*[$AUTHOR_1]'' \{\
+.          sp
+.          if d$ATTRIBUTE_STRING .PRINT "\\*[$ATTRIBUTE_STRING]
+.          sp
+.          DO_AUTHORS
 .       \}
-.       el \{\
-.          ie \\n[#TITLE_COLOR]=1 \{\
-.             PRINT \m[\\*[$TITLE_COLOR]]\\*[$CHAPTER_STRING]\m[]
-.          \}
-.          el .PRINT \\*[$CHAPTER_STRING]
+.    \}
+.END
+\#
+.MAC CHAPTER_DOCHEADER END
+.    DOC_HEADER_QUAD
+.    FAMILY  \\*[$CHAPTER_FAM]
+.    FT      \\*[$CHAPTER_FT]
+.    ps \\n[#DOC_PT_SIZE]u\\*[$CHAPTER_SIZE_CHANGE]
+.    vs \\n[#DOCHEADER_LEAD]u
+.\" Chapter title only
+.    ie '\\*[$CHAPTER]'' \{\
+.       if \\n[#PRINT_STYLE]=2 \
+.          if \\n[#DOCHEADER_COLOR]=1 \
+.             COLOR \\*[$DOCHEADER_COLOR]
+.       if !'\\*[$CHAPTER_TITLE_1]'' \{\
+.          ds $PRFX CHAPTER_
+.          nr #DOCHEADER 1
+.          DO_TITLE
+.          rr #DOCHEADER
+.          rm $PRFX
 .       \}
 .    \}
 .\" Chapter string, possibly with a chapter title
 .    el \{\
-.       ie \\n[#TITLE_COLOR]=1 \{\
-.          PRINT \m[\\*[$TITLE_COLOR]]\\*[$CHAPTER_STRING] \\*[$CHAPTER]\m[]
-.       \}
-.       el .PRINT \\*[$CHAPTER_STRING] \\*[$CHAPTER]
+.       if \\n[#PRINT_STYLE]=2 \{\
+.          if \\n[#DOCHEADER_COLOR]=1 \
+.             COLOR \\*[$DOCHEADER_COLOR]
+.          if \\n[#CHAPTER_COLOR]=1 \
+.             COLOR \\*[$CHAPTER_COLOR]
+.       \}
+.       if \\n[#CHAPTER_CAPS]=1 .CAPS
+.       ie \\n[#CHAPTER_UNDERLINE] \{\
+.          ds $TITLE_TYPE CHAPTER
+.          ie \\n[#CHAPTER_UNDERLINE]=2 \
+.             UNDERSCORE2 \\*[$CHAPTER_UNDERLINE_GAP] \
+\\*[$CHAPTER_RULE_GAP] "\\*[$CHAPTER_STRING] \\*[$CHAPTER]"
+.          el .UNDERSCORE "\\*[$CHAPTER_STRING] \\*[$CHAPTER]"
+.       \}
+.       el .PRINT "\\*[$CHAPTER_STRING] \\*[$CHAPTER]"
+.       rm $TITLE_TYPE
+.       if \\n[#PRINT_STYLE]=2 \
+.          if \\n[#CHAPTER_COLOR]=1 .gcolor
+.       CAPS off
 .       if !'\\*[$CHAPTER_TITLE_1]'' \{\
+.          ds $PRFX CHAPTER_
 .          if \\n[#PRINT_STYLE]=2 \{\
-.             FAMILY  \\*[$CHAPTER_TITLE_FAM]
-.             FT      \\*[$CHAPTER_TITLE_FT]
-.             ps \\*[$CHAPTER_TITLE_PT_SIZE]
-.             vs \\n[#DOCHEADER_LEAD]u
-.             ALD     \\n[.v]u/4u \" Put a little space before the chapter title
-.          \}
-.          nr #ARG_NUM 0 1
-.          while \\n[#CHAPTER_TITLE_NUM]>=\\n+[#ARG_NUM] \{\
-.             ie \\n[#CHAPTER_TITLE_COLOR]=1 \{\
-.                PRINT \
-\m[\\*[$CHAPTER_TITLE_COLOR]]\\*[$CHAPTER_TITLE_\\n[#ARG_NUM]]\m[]
-.             \}
-.             el .PRINT \\*[$CHAPTER_TITLE_\\n[#ARG_NUM]]
+.             nr #CHAPTER+TITLE 1
+.             if \\n[#DOCHEADER_COLOR]=1 \
+.                COLOR \\*[$DOCHEADER_COLOR]
 .          \}
-.          RLD \\n[#DOC_LEAD]u    \" Just looks better this way
+.          if !'\\*[$CHAPTER_TITLE_SPACER]'' \
+.             sp \\*[$CHAPTER_TITLE_SPACER]
+.          DO_TITLE
+.          rm $PRFX
+.          rr #CHAPTER+TITLE
+.          RLD \\n[#DOC_LEAD]u \" Just looks better this way
 .       \}
 .    \}
 .    FAMILY \\*[$DOC_FAM]
 .    FT R
 .END
 \#
-.MAC NAMED_DOCHEADER END
-.    DOC_HEADER_QUAD
-.    FAMILY  \\*[$TITLE_FAM]
-.    FT      \\*[$TITLE_FT]
-.    ps \\*[$TITLE_PT_SIZE]
-.    vs      \\n[#DOCHEADER_LEAD]u
-.    if !'\\*[$TITLE_1]'' \{\
-.       nr #ARG_NUM 0 1
-.       while \\n[#TITLE_NUM]>=\\n+[#ARG_NUM] \{\
-.          ie \\n[#TITLE_COLOR]=1 \{\
-.             PRINT "\m[\\*[$TITLE_COLOR]]\\*[$TITLE_\\n[#ARG_NUM]]\m[]
+.MAC CHAPTER_DOCHEADER_TYPEWRITE END
+.    CENTER
+.    TYPEWRITER
+.    if !\\n[#SINGLE_SPACE] \{\
+.       vs \\n[#DOC_LEAD]u/2u
+.       sp |\\n[#T_MARGIN]u-1v
+.    \}
+.    ie '\\*[$CHAPTER]'' \{\
+.       CAPS
+.       ie !'\\*[$CHAPTER_TITLE]'' \{\
+.          vs \\n[.v]u+(\\n[.v]u/3u)
+.          nr #ARG_NUM 0 1
+.          while \\n[#CHAPTER_TITLE_NUM]>=\\n+[#ARG_NUM] \{\
+.             UNDERSCORE 3p "\\*[$CHAPTER_TITLE_\\n[#ARG_NUM]]"
 .          \}
-.          el .PRINT "\\*[$TITLE_\\n[#ARG_NUM]]
+.          vs
+.       \}
+.       el \{\
+.          CAPS
+.          UNDERSCORE 3p "\\*[$CHAPTER_STRING]"
 .       \}
+.       CAPS OFF
+.       RLD 1v
 .    \}
-.    if !'\\*[$SUBTITLE]'' \{\
-.       FAMILY  \\*[$SUBTITLE_FAM]
-.       FT      \\*[$SUBTITLE_FT]
-.       ps \\*[$SUBTITLE_PT_SIZE]
-.       nr #ARG_NUM 0 1
-.       while \\n[#SUBTITLE_NUM]>=\\n+[#ARG_NUM] \{\
-.          ie \\n[#SUBTITLE_COLOR]=1 \{\
-.             PRINT "\m[\\*[$SUBTITLE_COLOR]]\\*[$SUBTITLE_\\n[#ARG_NUM]]\m[]
+.    el \{\
+.       CAPS
+.       UNDERSCORE 3p "\\*[$CHAPTER_STRING] \\*[$CHAPTER]
+.       CAPS OFF
+.       if !'\\*[$CHAPTER_TITLE]'' \{\
+.          sp
+.          nr #ARG_NUM 0 1
+.          while \\n[#CHAPTER_TITLE_NUM]>=\\n+[#ARG_NUM] \{\
+.             PRINT "\\*[$CHAPTER_TITLE_\\n[#ARG_NUM]]
 .          \}
-.          el .PRINT "\\*[$SUBTITLE_\\n[#ARG_NUM]]
 .       \}
+.       sp -1
 .    \}
-.    if !'\\*[$AUTHOR_1]'' \{\
-.       FAMILY  \\*[$AUTHOR_FAM]
-.       FT      \\*[$AUTHOR_FT]
-.       ps \\*[$AUTHOR_PT_SIZE]
-.       ie \\n[#ATTRIBUTE_COLOR]=1 \{\
-.          PRINT \&\m[\\*[$ATTRIBUTE_COLOR]]\\*[$ATTRIBUTE_STRING]\m[]
-.       \}
-.       el .PRINT \&\\*[$ATTRIBUTE_STRING]
-.       PRINT_AUTHORS
+.    vs \\n[#DOC_LEAD]u
+.    if \\n[#SINGLE_SPACE] .sp 2
+.END
+\#
+.MAC NAMED_DOCHEADER END
+.    DEFAULT_DOCHEADER
+.    if !\\n[#NO_PRINT_DOCTYPE] \{\
+.       FAMILY  \\*[$DOCTYPE_FAM]
+.       FT      \\*[$DOCTYPE_FT]
+.       ps \\n[#DOC_PT_SIZE]u\\*[$DOCTYPE_SIZE_CHANGE]
+.       vs \\n[#DOCHEADER_LEAD]u
+.       ALD     \\n[#DOCHEADER_LEAD]u
+.       if \\n[#DOCHEADER_COLOR]=1 \
+.          COLOR \\*[$DOCHEADER_COLOR]
+.       if \\n[#DOCTYPE_COLOR]=1 \
+.          COLOR \\*[$DOCTYPE_COLOR]
+.       if \\n[#DOCTYPE_CAPS]=1 .CAPS
+.       if !'\\*[$DOCTYPE_SPACER]'' .sp \\*[$DOCTYPE_SPACER]
+.       ie \\n[#DOCTYPE_UNDERLINE] \{\
+.          ds $TITLE_TYPE DOCTYPE
+.          ie \\n[#DOCTYPE_UNDERLINE]=2 \
+.              UNDERSCORE2 \\*[$DOCTYPE_UNDERLINE_GAP] \
+\\*[$DOCTYPE_RULE_GAP] "\\*[$DOC_TYPE]
+.          el .UNDERSCORE "\\*[$DOC_TYPE]
+.       \}
+.       el .PRINT "\\*[$DOC_TYPE]
+.       gcolor
+.       CAPS off
 .    \}
-.    FAMILY  \\*[$DOCTYPE_FAM]
-.    FT      \\*[$DOCTYPE_FT]
-.    ps \\*[$DOCTYPE_PT_SIZE]
-.    vs \\n[#DOCHEADER_LEAD]u
-.    ALD     \\n[#DOCHEADER_LEAD]u
-.    nr #FROM_DOCTYPE 1
-.    if \\n[#DOCTYPE_COLOR]=1 .COLOR \\*[$DOCTYPE_COLOR]
-.    ie \\n[#DOCTYPE_UNDERLINE]=1 \
-.       UNDERSCORE \\*[$DOCTYPE_UNDERLINE_GAP] "\\*[$DOC_TYPE]"
-.    el .PRINT "\\*[$DOC_TYPE]"
-.    COLOR black
 .    FAMILY \\*[$DOC_FAM]
 .    FT R
-.    rr #FROM_DOCTYPE
 .END
 \#
 \# COVER PAGE
 \# ----------
 \# *Arguments:
 \#   TITLE | DOCTITLE | CHAPTER | CHAPTER_TITLE | CHAPTER+TITLE | COVERTITLE \
-\#   [ SUBTITLE AUTHOR DOCTYPE COPYRIGHT MISC BLANKPAGE ]
+\#   [ SUBTITLE AUTHOR DOCTYPE COPYRIGHT MISC BLANKPAGE PDF_OUTLINE_LABEL ]
 \# *Function:
 \#   Toggles the number register for each cover page element
 \#   passed as an argument.
@@ -6349,6 +6900,7 @@ y\R'#DESCENDER \\n[.cdp]'
 \#   applies everything to a doc cover.
 \#
 .MAC COVER END
+.    rm DOC_
 .    ie '\\$0'DOC_COVER' \{\
 .       nr #DOC_COVER 1
 .       ds DOC_ DOC_
@@ -6356,15 +6908,22 @@ y\R'#DESCENDER \\n[.cdp]'
 .    el .nr #COVER 1
 .    nr #ARG_NUM 0 1
 .    nr #COVER_ITEM \\n[#NUM_ARGS]  \"loop count
+.    if \\n[#NUM_ARGS]=1 \
+.       if '\\$1'\\*[DOC_]COVERTEXT' \
+.          nr #\\*[DOC_]COVERTEXT_ONLY 1
 .    while \\n+[#ARG_NUM]<=\\n[#COVER_ITEM] \{\
-.       if '\\$1'TITLE' \{\
-.          nr #\\*[DOC_]COVER_TITLE 1
-.          shift
-.       \}
 .       if '\\$1'DOCTITLE' \{\
 .          nr #\\*[DOC_]COVER_TITLE 2
 .          shift
 .       \}
+.       if '\\$1'TITLE' \{\
+.          nr #\\*[DOC_]COVER_TITLE 1
+.          if \\n[#FROM_\\*[DOC_]COVERTITLE] \{\
+.             nr #\\*[DOC_]COVER_TITLE 7
+.             rr #FROM_\\*[DOC_]COVERTITLE
+.          \}
+.          shift
+.       \}
 .       if '\\$1'CHAPTER' \{\
 .          nr #\\*[DOC_]COVER_TITLE 3
 .          shift
@@ -6377,10 +6936,16 @@ y\R'#DESCENDER \\n[.cdp]'
 .          nr #\\*[DOC_]COVER_TITLE 5
 .          shift
 .       \}
-.       if '\\$1'\\*[DOC_]COVERTITLE' \{\
+.       if '\\$1'COVERTITLE' \{\
+.          nr #COVERTITLE 1
 .          nr #\\*[DOC_]COVER_TITLE 6
 .          shift
 .       \}
+.       if '\\$1'DOC_COVERTITLE' \{\
+.          nr #DOC_COVERTITLE 1
+.          nr #\\*[DOC_]COVER_TITLE 7
+.          shift
+.       \}
 .       if '\\$1'SUBTITLE' \{\
 .          nr #\\*[DOC_]COVER_SUBTITLE 1
 .          shift
@@ -6401,6 +6966,14 @@ y\R'#DESCENDER \\n[.cdp]'
 .          nr #\\*[DOC_]COVER_MISC 1
 .          shift
 .       \}
+.       if '\\$1'\\*[DOC_]COVERTEXT' \{\
+.          nr #\\*[DOC_]COVERTEXT 1
+.          shift
+.       \}
+.       if '\\$1'\\*[DOC_]COVER_IMAGE' \{\
+.          nr #\\*[DOC_]COVER_IMAGE 1
+.          shift
+.       \}
 .       if '\\$1'PDF_OUTLINE_LABEL' \{\
 .          shift
 .          ds $PDF_\\*[DOC_]COVER_LABEL \\$1
@@ -6414,48 +6987,178 @@ y\R'#DESCENDER \\n[.cdp]'
 .    if '\\$0'DOC_COVER' .rm DOC_
 .END
 \#
+\# COVER TITLE
+\# -----------
+\# *Arguments:
+\#   <covertitle>
+\# *Function:
+\#   Stores cover title in string(s) for output on cover pages.
+\#
 .MAC COVERTITLE END
-.    ie '\\$0'DOC_COVERTITLE' \{\
-.       ie \\n[#NUM_ARGS]=0 \{\
-.          if \\n[#DOC_COVER_TITLE_NUM] \{\
+.    rm DOC_
+.    if '\\$0'DOC_COVERTITLE' \{\
+.       ds DOC_ DOC_
+.       nr #FROM_\\*[DOC_]COVERTITLE 1
+.    \}
+.    ie \\n[#NUM_ARGS]=0 \{\
+.       nr argc 0 1
+.       while \\n+[argc]<=3 \{\
+.          if \\n[#\\*[DOC_]COVER_TITLE_NUM] \{\
 .             nr #ITEM 0 1
-.             while \\n[#DOC_COVER_TITLE_NUM]>\\n[#ITEM] \{\
-.                rm $DOC_COVER_TITLE_\\n+[#ITEM]
+.             while \\n[#\\*[DOC_]COVERTITLE_NUM]>\\n[#ITEM] \{\
+.                rm $\\*[DOC_]COVERTITLE_\\n+[#ITEM]
 .             \}
-.             rr #DOC_COVER_TITLE_NUM
-.             rm $DOC_COVER_TITLE
+.             rr #\\*[DOC_]COVERTITLE_NUM
+.             rm $\\*[DOC_]COVERTITLE
 .          \}
 .       \}
-.       el \{\
-.          nr #DOC_COVER_TITLE_NUM 0 1
-.          while \\n[#NUM_ARGS]>\\n[#DOC_COVER_TITLE_NUM] \{\
-.             ds \
-$DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
-.          \}
-.          ds $DOC_COVER_TITLE \\$*
-.       \}
 .    \}
 .    el \{\
-.       ie \\n[#NUM_ARGS]=0 \{\
-.          if \\n[#COVER_TITLE_NUM] \{\
-.             nr #ITEM 0 1
-.             while \\n[#COVER_TITLE_NUM]>\\n[#ITEM] \{\
-.                rm $COVER_TITLE_\\n+[#ITEM]
-.             \}
-.             rr #COVER_TITLE_NUM
-.             rm $COVER_TITLE
-.          \}
-.       \}
-.       el \{\
-.          nr #COVER_TITLE_NUM 0 1
-.          while \\n[#NUM_ARGS]>\\n[#COVER_TITLE_NUM] \{\
-.             ds $COVER_TITLE_\\n+[#COVER_TITLE_NUM] \\$\\n[#COVER_TITLE_NUM]
-.          \}
-.          ds $COVER_TITLE \\$*
-.\" .          if \\n[#DOCTITLE_NUM]=0 .PDF_TITLE \\*[$COVER_TITLE]
+.       nr #\\*[DOC_]COVERTITLE_NUM 0 1
+.       while \\n[#NUM_ARGS]>\\n[#\\*[DOC_]COVERTITLE_NUM] \{\
+.          ds \
+$\\*[DOC_]COVERTITLE_\\n+[#\\*[DOC_]COVERTITLE_NUM] \\$\\n[#\\*[DOC_]COVERTITLE_NUM]
+.          nr #\\*[DOC_]COVERTITLE_NUM \\n[#\\*[DOC_]COVERTITLE_NUM]
 .       \}
+.       ds $\\*[DOC_]COVERTITLE \\$*
+.    \}
+.END
+\#
+.MAC COVER_ATTRIBUTE_STRING END
+.    if '\\$0'DOC_COVER_ATTRIBUTE_STRING' \
+.       ds DOC_ DOC_
+.    ds $\\*[DOC_]COVER_ATTRIBUTE_STRING \\$1 
+.    rm DOC_
+.END
+.
+.ALIAS DOC_COVER_ATTRIBUTE_STRING COVER_ATTRIBUTE_STRING
+\#
+\# COVER TEXT
+\# ----------
+\# *Arguments:
+\#   [ START <vertical pos> ] | <anything>
+\# *Function:
+\#   With no arg, begins a diversion holding the cover text for
+\#   output on the cover page.  With START <pos>, sets a vertical
+\#   starting position relative to the top edge of the page.  With
+\#   any other arg, ends the diversion.
+\# *Notes:
+\#   Aliased as DOC_COVERTEXT.
+\#
+\#   If no other items assigned to cover pages, starts 1/3 of the
+\#   way down the cover page unless START pos is given, otherwise
+\#   starts underneath the last of title, subtitle, author(s) or
+\#   doctype, preceded by a blank line.
+\#
+\#   Does not persist.
+\#
+.MAC COVERTEXT END
+.    rm DOC_
+.    if '\\$0'DOC_COVERTEXT' .ds DOC_ DOC_
+.    if '\\$1'START' \{\
+.       shift
+.       nr #\\*[DOC_]COVERTEXT_START_POS (u;\\$1)
+.       shift
 .    \}
+.    ie '\\$1'' \{\
+.       nr #COVERTEXT_PP 1
+.       di \\*[DOC_]COVER_TEXT
+.       ev 1
+\!.     ie !\\n[#\\*[DOC_]COVERTEXT_START_POS] \{\
+\!.        sp |\\n[.p]u/3u-1v
+\!.     \}
+\!.     el \{\
+\!.        vs 0
+\!.        sp |0i
+\!.        vs \\\\n[#DOC_LEAD]u+\\\\*[$\\*[DOC_]COVER_LEAD_ADJ]
+\!.        sp |\\n[#\\*[DOC_]COVERTEXT_START_POS]u-1
+\!.     \}
+\!.     vpt
+.    \}
+.    el \{\
+.       br
+\!.     vpt 0
+.       ev
+.       di
+.       rm $FONT
+.       rr #COVERTEXT_PP
+.       IQ CLEAR
+.    \}
+.    rm DOC_
 .END
+.
+.ALIAS DOC_COVERTEXT COVERTEXT
+\#
+\# COVER IMAGE
+\# -----------
+\#*Arguments:
+\#  <image file> <width> <height> [ -L|-C|-R|-I <ind> Y-pos [ X-pos ] ]
+\#*Function:
+\#  Places an image on doccovers and covers.
+\#*Notes:
+\#  Aliased as DOC_COVER_IMAGE.
+\#
+\#  <width> and <height> are required.  With no further args, images
+\#  are set at 0,0 by default so that full page images fill the entire
+\#  printer sheet.
+\#  
+\#  Positioning args are the same as PDF_IMAGE.  -L, -R, -C and -I <ind>
+\#  observe the left and right margins.
+\#
+\#  Y-pos is required for all but full page images; without it, images
+\#  are flush with the top of the page.  X-pos is only needed if the
+\#  user prefers to give absolute X,Y positioning.
+\#
+\#  Note that Y-pos comes before X-pos in the args.
+\#
+.MAC COVER_IMAGE END
+. if '\\$0'DOC_COVER_IMAGE' .ds DOC_ DOC_
+. ds \\*[DOC_]COVER_IMG_FILE \\$1
+. nr \\*[DOC_]COVER_IMG_W (z;\\$2)
+. nr \\*[DOC_]COVER_IMG_H (z;\\$3)
+. if !'\\$4'' \{\
+.   ie !\B'\\$4' \{\
+.     if '\\$4'-L' .nr \\*[DOC_]COVER_IMG_IND \
+        \\n[#L_MARGIN]u
+.     if '\\$4'-C' .nr \\*[DOC_]COVER_IMG_IND \
+        \\n[#PAGE_WIDTH]u-\\n[\\*[DOC_]COVER_IMG_W]u/2
+.     if '\\$4'-R' .nr \\*[DOC_]COVER_IMG_IND \
+        \\n[#L_MARGIN]+\\n[.l]u-\\n[\\*[DOC_]COVER_IMG_W]u
+.     if '\\$4'-I' \{\
+.       nr \\*[DOC_]COVER_IMG_IND \\n[#L_MARGIN]+\\$5
+.       if !'\\$6'' .nr \\*[DOC_]COVER_IMG_Y (u;\\$6)
+.       shift \\n[#NUM_ARGS]
+.     \}
+.     if \B'\\$5' .nr \\*[DOC_]COVER_IMG_Y (u;\\$5)
+.   \}
+.   el \{\
+.     nr \\*[DOC_]COVER_IMG_Y (u;\\$4)
+.     if \B'\\$5' .nr \\*[DOC_]COVER_IMG_X (u;\\$5)
+.   \}
+. \}
+. rm DOC_
+.END
+.
+.ALIAS DOC_COVER_IMAGE COVER_IMAGE
+\#
+.MAC DO_COVER_IMAGE END
+.    ll \\n[#PAGE_WIDTH]u
+.    po 0
+.    vs 0
+.    sp |0i
+.    if \\n[\\*[DOC_]COVER_IMG_Y]   .sp \\n[\\*[DOC_]COVER_IMG_Y]u
+.    if \\n[\\*[DOC_]COVER_IMG_X]   .in \\n[\\*[DOC_]COVER_IMG_X]u
+.    if \\n[\\*[DOC_]COVER_IMG_IND] .in \\n[\\*[DOC_]COVER_IMG_IND]u
+.    if \\n[.u]=1 .nf
+.    nop \X'pdf: pdfpic \\*[\\*[DOC_]COVER_IMG_FILE] -L \
+\\n[\\*[DOC_]COVER_IMG_W]z \\n[\\*[DOC_]COVER_IMG_H]z'
+.    in
+.    vs
+.    po
+.    ll
+.END
+.
+.ALIAS DO_DOC_COVER_IMAGE DO_COVER_IMAGE
 \#
 \# COVER PAGE LEADING
 \# ------------------
@@ -6474,16 +7177,25 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .    el .ds $COVER_LEAD_ADJ \\$1
 .END
 \#
-\# MISCs get treated similarly to QUOTEs and BLOCKQUOTEs with respect to
-\# leading
+\# MISC_AUTOLEAD functionality has been removed.  Leading for MISCs
+\# is now entered as an absolute value.  The macro emits a warning.
 \#
 .MAC MISC_AUTOLEAD END
-.    if '\\$0'DOC_COVER_MISC_AUTOLEAD' .nr #DOC_COVER_MISC_AUTOLEAD (p;\\$1)
-.    if '\\$0'COVER_MISC_AUTOLEAD'     .nr #COVER_MISC_AUTOLEAD (p;\\$1)
+.    ds replacement \\$0
+.    substring replacement 0 -9
+.    ds replacement \\*[replacement]LEAD
+.    ds cover-type \\$0
+.    substring cover-type 0 2
+.    ie '\\*[cover-type]'COV' .ds cover-type cover
+.    el .ds cover-type doc-cover
+.    tm1 "[mom]: \\$0 at line \\n[.c] of '\\n[.F]' is no longer valid.
+.    tm1 "       Leading of \\*[cover-type] MISC items is now set with \\*[replacement], which
+.    tm1 "       takes an absolute leading value.  Please update your document.
+.    ab   [mom]: Aborting.
 .END
-\#
-.ALIAS DOC_COVER_MISC_AUTOLEAD  MISC_AUTOLEAD
-.ALIAS COVER_MISC_AUTOLEAD      MISC_AUTOLEAD
+.
+.ALIAS DOC_COVER_MISC_AUTOLEAD MISC_AUTOLEAD
+.ALIAS COVER_MISC_AUTOLEAD     MISC_AUTOLEAD
 \#
 \# COVER PAGE START POSITION
 \# -------------------------
@@ -6500,190 +7212,16 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 \#   down the page (setup in DO_COVER).
 \#
 .MAC COVER_ADVANCE END
-.    ie '\\$0'DOC_COVER_ADVANCE' .nr #DOC_COVER_START_POS (\\$1)
+.    ds COVER_TYPE \\$0
+.    substring COVER_TYPE 0 2
+.    ie 'COVER_TYPE'DOC' .nr #DOC_COVER_START_POS (\\$1)
 .    el .nr #COVER_START_POS (\\$1)
 .END
-\#
-\# UNDERLINE CONTROL
-\# -----------------
-\# *Arguments:
-\#   [ DOUBLE ] [ <underline weight> [<underline gap>] ] | <none> | <anything>
-\# *Function:
-\#   Toggles underlining of the element indicated by the calling alias
-\#   on or off.  Uses #<element>_UNDERLINE_WEIGHT to set the weight,
-\#   and defines string $<element>_UNDERLINE_GAP.
-\# *Notes:
-\#   Calling aliases COVER_ and DOCCOVER_ only apply if DOCTYPE is
-\#   NAMED and the DOCTYPE arg is passed to COVER or DOC_COVER.
-\#
-.MAC _UNDERLINE END
-.    ie '\\$1'' \{\
-.       if '\\$0'BIBLIOGRAPHY_STRING_UNDERLINE' \
-.          nr #BIB_STRING_UNDERLINE 1
-.       if '\\$0'BIBLIOGRAPHY_STRING_UNDERSCORE' \
-.          nr #BIB_STRING_UNDERLINE 1
-.       if '\\$0'COVER_UNDERLINE' \
-.          nr #COVER_UNDERLINE 1
-.       if '\\$0'DOC_COVER_UNDERLINE' \
-.          nr #DOC_COVER_UNDERLINE 1
-.       if '\\$0'DOCTYPE_UNDERLINE' \
-.          nr #DOCTYPE_UNDERLINE 1
-.       if '\\$0'ENDNOTE_STRING_UNDERLINE' \
-.          nr #EN_STRING_UNDERLINE 1
-.       if '\\$0'ENDNOTE_STRING_UNDERSCORE' \
-.          nr #EN_STRING_UNDERLINE 1
-.       if '\\$0'ENDNOTE_TITLE_UNDERLINE' \
-.          nr #EN_TITLE_UNDERLINE 1
-.       if '\\$0'ENDNOTE_TITLE_UNDERSCORE' \
-.          nr #EN_TITLE_UNDERLINE 1
-.    \}
-.    el \{\
-.       ie \\n[#NUM_ARGS]=1 \{\
-.          ds $ARG \\$1
-.          substring $ARG -1
-.          ie \B'\\*[$ARG]' \{\
-.             if !\\n[#PRINT_STYLE]=1 \{\
-.                if '\\$0'BIBLIOGRAPHY_STRING_UNDERLINE' \
-.                   BIBLIOGRAPHY_STRING_UNDERLINE_WEIGHT \\$1
-.                if '\\$0'BIBLIOGRAPHY_STRING_UNDERSCORE' \
-.                   BIBLIOGRAPHY_STRING_UNDERLINE_WEIGHT \\$1
-.                if '\\$0'COVER_UNDERLINE' \
-.                   COVER_UNDERLINE_WEIGHT \\$1
-.                if '\\$0'DOC_COVER_UNDERLINE' \
-.                   DOC_COVER_UNDERLINE_WEIGHT \\$1
-.                if '\\$0'DOCTYPE_UNDERLINE' \
-.                   DOCTYPE_UNDERLINE_WEIGHT \\$1
-.                if '\\$0'ENDNOTE_STRING_UNDERLINE' \{\
-.                   ENDNOTE_STRING_UNDERLINE_WEIGHT \\$1
-.                   nr #EN_STRING_UNDERLINE 1
-.                \}
-.                if '\\$0'ENDNOTE_STRING_UNDERSCORE' \{\
-.                   ENDNOTE_STRING_UNDERLINE_WEIGHT \\$1
-.                   nr #EN_STRING_UNDERLINE 1
-.                \}
-.                if '\\$0'ENDNOTE_TITLE_UNDERLINE' \
-.                   ENDNOTE_TITLE_UNDERLINE_WEIGHT \\$1
-.                if '\\$0'ENDNOTE_TITLE_UNDERSCORE' \
-.                   ENDNOTE_TITLE_UNDERLINE_WEIGHT \\$1
-.             \}
-.          \}
-.          el \{\
-.             if '\\$0'BIBLIOGRAPHY_STRING_UNDERLINE' \{\
-.                ie '\\$1'DOUBLE' .nr #BIB_STRING_UNDERLINE 2
-.                el .nr #BIB_STRING_UNDERLINE 0
-.             \}
-.             if '\\$0'BIBLIOGRAPHY_STRING_UNDERSCORE' \{\
-.                ie '\\$1'DOUBLE' .nr #BIB_STRING_UNDERLINE 2
-.                el .nr #BIB_STRING_UNDERLINE 0
-.             \}
-.             if '\\$0'COVER_UNDERLINE'     .nr #COVER_UNDERLINE 0
-.             if '\\$0'DOC_COVER_UNDERLINE' .nr #DOC_COVER_UNDERLINE 0
-.             if '\\$0'DOCTYPE_UNDERLINE'   .nr #DOCTYPE_UNDERLINE 0
-.             if '\\$0'ENDNOTE_STRING_UNDERLINE' \{\
-.                ie '\\$1'DOUBLE' .nr #EN_STRING_UNDERLINE 2
-.                el .nr #EN_STRING_UNDERLINE 0
-.             \}
-.             if '\\$0'ENDNOTE_STRING_UNDERSCORE' \{\
-.                ie '\\$1'DOUBLE' .nr #EN_STRING_UNDERLINE 2
-.                el .nr #EN_STRING_UNDERLINE 0
-.             \}
-.             if '\\$0'ENDNOTE_TITLE_UNDERLINE' \{\
-.                ie '\\$1'DOUBLE' .nr #EN_TITLE_UNDERLINE 2
-.                el .nr #EN_TITLE_UNDERLINE 0
-.             \}
-.             if '\\$0'ENDNOTE_TITLE_UNDERSCORE' \{\
-.                ie '\\$1'DOUBLE' .nr #EN_TITLE_UNDERLINE 2
-.                el .nr #EN_TITLE_UNDERLINE 0
-.             \}
-.          \}
-.       \}
-.       el \{\
-.          if !\\n[#PRINT_STYLE]=1 \{\
-.             if '\\$0'BIBLIOGRAPHY_STRING_UNDERLINE' \{\
-.                nr #BIB_STRING_UNDERLINE 1
-.                if '\\$1'DOUBLE' \{\
-.                   nr #BIB_STRING_UNDERLINE 2
-.                   shift
-.                \}
-.                BIBLIOGRAPHY_STRING_UNDERLINE_WEIGHT \\$1
-.                if !'\\$2'' \
-.                   ds $BIB_STRING_UNDERLINE_GAP \\$2
-.                if !'\\$3'' \
-.                   ds $BIB_STRING_RULE_GAP \\$3
-.             \}
-.             if '\\$0'BIBLIOGRAPHY_STRING_UNDERSCORE' \{\
-.                nr #BIB_STRING_UNDERLINE 1
-.                if '\\$1'DOUBLE' \{\
-.                   nr #BIB_STRING_UNDERLINE 2
-.                   shift
-.                \}
-.                BIBLIOGRAPHY_STRING_UNDERLINE_WEIGHT \\$1
-.                if !'\\$2'' .ds $BIB_STRING_UNDERLINE_GAP \\$2
-.                if !'\\$3'' .ds $BIB_STRING_RULE_GAP \\$3
-.             \}
-.             if '\\$0'COVER_UNDERLINE' \{\
-.                nr #COVER_UNDERLINE 1
-.                COVER_UNDERLINE_WEIGHT \\$1
-.                ds $COVER_UNDERLINE_GAP \\$2
-.             \}
-.             if '\\$0'DOC_COVER_UNDERLINE' \{\
-.                nr #DOC_COVER_UNDERLINE 1
-.                DOC_COVER_UNDERLINE_WEIGHT \\$1
-.                ds $DOC_COVER_UNDERLINE_GAP \\$2
-.             \}
-.             if '\\$0'DOCTYPE_UNDERLINE' \{\
-.                nr #DOCTYPE_UNDERLINE 1
-.                DOCTYPE_UNDERLINE_WEIGHT \\$1
-.                ds $DOCTYPE_UNDERLINE_GAP \\$2
-.             \}
-.\" ENDNOTE_STRING_UNDERLINE and ENDNOTE_STRING_UNDERSCORE are identical
-.\" _UNDERLINE left in for backward compatibility
-.             if '\\$0'ENDNOTE_STRING_UNDERLINE' \{\
-.                nr #EN_STRING_UNDERLINE 1
-.                if '\\$1'DOUBLE' \{\
-.                   nr #EN_STRING_UNDERLINE 2
-.                   shift
-.                \}
-.                ENDNOTE_STRING_UNDERLINE_WEIGHT \\$1
-.                if !'\\$2'' .ds $EN_STRING_UNDERLINE_GAP \\$2
-.                if !'\\$3'' .ds $EN_STRING_RULE_GAP \\$3
-.             \}
-.             if '\\$0'ENDNOTE_STRING_UNDERSCORE' \{\
-.                nr #EN_STRING_UNDERLINE 1
-.                if '\\$1'DOUBLE' \{\
-.                   nr #EN_STRING_UNDERLINE 2
-.                   shift
-.                \}
-.                ENDNOTE_STRING_UNDERLINE_WEIGHT \\$1
-.                if !'\\$2'' .ds $EN_STRING_UNDERLINE_GAP \\$2
-.                if !'\\$3'' .ds $EN_STRING_RULE_GAP \\$3
-.             \}
-.\" ENDNOTE_TITLE_UNDERLINE and ENDNOTE_TITLE_UNDERSCORE are identical
-.\" _UNDERLINE left in for backward compatibility
-.             if '\\$0'ENDNOTE_TITLE_UNDERLINE' \{\
-.                nr #EN_TITLE_UNDERLINE 1
-.                ENDNOTE_TITLE_UNDERLINE_WEIGHT \\$1
-.                ds $EN_TITLE_UNDERLINE_GAP \\$2
-.             \}
-.             if '\\$0'ENDNOTE_TITLE_UNDERSCORE' \{\
-.                nr #EN_TITLE_UNDERLINE 1
-.                ENDNOTE_TITLE_UNDERLINE_WEIGHT \\$1
-.                ds $EN_TITLE_UNDERLINE_GAP \\$2
-.             \}
-.          \}
-.       \}
-.    \}
-.END
-\#
-.ALIAS BIBLIOGRAPHY_STRING_UNDERSCORE _UNDERLINE
-.ALIAS BIBLIOGRAPHY_STRING_UNDERLINE  _UNDERLINE
-.ALIAS COVER_UNDERLINE                _UNDERLINE
-.ALIAS DOC_COVER_UNDERLINE            _UNDERLINE
-.ALIAS DOCTYPE_UNDERLINE              _UNDERLINE
-.ALIAS ENDNOTE_STRING_UNDERLINE       _UNDERLINE
-.ALIAS ENDNOTE_STRING_UNDERSCORE      _UNDERLINE
-.ALIAS ENDNOTE_TITLE_UNDERLINE        _UNDERLINE
-.ALIAS ENDNOTE_TITLE_UNDERSCORE       _UNDERLINE
+.
+.ALIAS DOC_COVER_ADVANCE   COVER_ADVANCE
+.ALIAS DOC_COVER_START_POS COVER_ADVANCE
+.ALIAS COVER_ADVANCE       COVER_ADVANCE
+.ALIAS COVER_START_POS     COVER_ADVANCE
 \#
 \# COVERS - WHETHER TO PRINT
 \# -------------------------
@@ -6742,7 +7280,7 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .    nr #DOING_COVER 1
 .    ev COVER
 .    evc 0
-.    TRAP OFF
+.    vpt 0
 .    if \\n[#PAGINATE]=1 \{\
 .       nr #PAGINATION_WAS_ON 1
 .       rr #PAGINATE
@@ -6766,53 +7304,51 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .       if '\\*[$PDF_DOC_COVER_LABEL]'' \
 .          ds $PDF_DOC_COVER_LABEL Cover:
 .    \}
-.    el \{\
-.       if '\\*[$PDF_COVER_LABEL]'' .ds $PDF_COVER_LABEL Title Page:
-.    \}
+.    el \
+.       if '\\*[$PDF_COVER_LABEL]'' \
+.          ds $PDF_COVER_LABEL Title Page:
+.    ds $COVER_TYPE \\*[DOC_]COVER_
 .    if !r#\\*[DOC_]COVER_START_POS \
 .       nr #\\*[DOC_]COVER_START_POS \\n[#PAGE_LENGTH]/3
-.    if \\n[#PRINT_STYLE]=1 \{\
-.       ie \\n[#SINGLE_SPACE]=1 .vs \\n[#DOC_LEAD]u*2u
-.       el .vs \\n[#DOC_LEAD]u
-.    \}
+.    if \\n[#PRINT_STYLE]=1 \
+.       if !\\n[#SINGLE_SPACE]=1 .vs \\n[#DOC_LEAD]u/2u
 .    if \\n[#PRINT_STYLE]=2 \{\
 .       vs \\n[#DOC_LEAD]u\\*[$\\*[DOC_]COVER_LEAD_ADJ]
-.       nr #\\*[DOC_]COVER_LEAD \\n[#LEAD]
+.       nr #\\*[DOC_]COVER_LEAD \\n[.v]
 .    \}
 .    if \\n[.ns] .rs
 .    if '\\$0'DO_COVER' \{\
-.       if \\n[TOC.RELOCATE]==5 \{\
+.       if \\n[TOC.RELOCATE]==5 \
 .          if !rTOC_BH .TOC_BEFORE_HERE
-.       \}
 .    \}
 .    if '\\$0'DO_DOC_COVER' \{\
-.       if \\n[TOC.RELOCATE]==3 \{\
+.       if \\n[TOC.RELOCATE]==3 \
 .          if !rTOC_BH .TOC_BEFORE_HERE
-.       \}
 .    \}
 .    RV_HARD_SET_MARGINS
-.    sp |\\n[#\\*[DOC_]COVER_START_POS]u-1v
-.    if \\n[#\\*[DOC_]COVER_COLOR]=1 \{\
-.       nf
-\m[\\*[$\\*[DOC_]COVER_COLOR]]
-.       EOL
+.\" Cover image
+.    if \\n[#\\*[DOC_]COVER_IMAGE]=1 \{\
+.       DO_\\*[DOC_]COVER_IMAGE
+.       rr #\\*[DOC_]COVER_IMAGE
 .    \}
+.\" Start cover
+.    sp |\\n[#\\*[DOC_]COVER_START_POS]u-1v
+.    if !\\n[#PRINT_STYLE]=1 \
+.       if \\n[#\\*[DOC_]COVER_COLOR]=1 \
+.          COLOR \\*[$\\*[DOC_]COVER_COLOR]
 .    \\*[DOC_]COVER_H_POS
-.    fam \\*[$\\*[DOC_]COVER_TITLE_FAM]
-.    ft  \\*[$\\*[DOC_]COVER_TITLE_FT]
-.    ps  \\*[$\\*[DOC_]COVER_TITLE_PT_SIZE]
-.    ie \\n[#PRINT_STYLE]=1 \{\
-.       ie \\n[#SINGLE_SPACE]=1 \{ .vs \\n[#DOC_LEAD]u*2u \}
-.       el \{ .vs \\n[#DOC_LEAD]u \}
-.    \}
+.    if \\n[#\\*[DOC_]COVER_TITLE]=2 .ds DOC DOC
+.    fam \\*[$\\*[DOC_]COVER_\\*[DOC]TITLE_FAM]
+.    ft  \\*[$\\*[DOC_]COVER_\\*[DOC]TITLE_FT]
+.    ps  \\*[$\\*[DOC_]COVER_\\*[DOC]TITLE_SIZE_CHANGE]
+.    ie \\n[#PRINT_STYLE]=1 .TYPEWRITER
 .    el .vs \\n[#\\*[DOC_]COVER_LEAD]u
-.    if \\n[#PRINT_STYLE]=1 .TYPEWRITER
-.    if \\n[#\\*[DOC_]COVER_TITLE] \{\
-.       nr PDFHREF.VIEW.LEADING.H \\n[PDFHREF.VIEW.LEADING]
-.       nr PDFHREF.VIEW.LEADING   \\n[nl]u-1v-1000u
-.    \}
-.    if \\n[#\\*[DOC_]COVER_TITLE]=1 \{\
+.    nr PDFHREF.VIEW.LEADING \\n[PDFHREF.VIEW.LEADING.C]
+.\" Title and/or doctitle
+.    if (\\n[#\\*[DOC_]COVER_TITLE]=1):(\\n[#\\*[DOC_]COVER_TITLE]=2) \{\
 .       ie \\n[#PRINT_STYLE]=1 \{\
+.          vs \\n[.v]u*2u
+.          sp -1.5
 .          CAPS
 .          nr #ARG_NUM 0 1
 .          while \\n[#TITLE_NUM]>=\\n+[#ARG_NUM] \{\
@@ -6821,109 +7357,56 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .             as PDF_BM \\*[$TITLE_\\n[#ARG_NUM]]
 .          \}
 .          CAPS OFF
+.          vs
 .       \}
 .       el \{\
-.          nr #ARG_NUM 0 1
-.          while \\n[#TITLE_NUM]>=\\n+[#ARG_NUM] \{\
-.             ie \\n[#\\*[DOC_]COVER_TITLE_COLOR]=1 \{\
-.                PRINT \
-\m[\\*[$\\*[DOC_]COVER_TITLE_COLOR]]\\*[$TITLE_\\n[#ARG_NUM]]\m[]
-.             \}
-.             el \
-.                PRINT "\\*[$TITLE_\\n[#ARG_NUM]]
-.             if \\n[#ARG_NUM]>1 .as PDF_BM " \"
-.             as PDF_BM \\*[$TITLE_\\n[#ARG_NUM]]
-.          \}
-.       \}
-.       PDF_BOOKMARK 1 \\*[$PDF_\\*[DOC_]COVER_LABEL] \\*[PDF_BM]
-.\" .          PDF_TITLE \\*[PDF_BM]
-.    \}
-.    if \\n[#\\*[DOC_]COVER_TITLE]=2 \{\
-.       ie \\n[#PRINT_STYLE]=1 \{\
-.          CAPS
-.          nr #ARG_NUM 0 1
-.          while \\n[#DOCTITLE_NUM]>=\\n+[#ARG_NUM] \{\
-.             UNDERSCORE "\\*[$\\*[DOC_]TITLE_\\n[#ARG_NUM]]"
-.             if \\n[#ARG_NUM]>1 .as PDF_BM " \"
-.             as PDF_BM \\*[$\\*[DOC_]TITLE_\\n[#ARG_NUM]]
-.          \}
-.          CAPS OFF
-.       \}
-.       el \{\
-.          nr #ARG_NUM 0 1
-.          while \\n[#DOCTITLE_NUM]>=\\n+[#ARG_NUM] \{\
-.             ie \\n[#\\*[DOC_]COVER_TITLE_COLOR]=1 \{\
-.                PRINT \
-\m[\\*[$\\*[DOC_]COVER_TITLE_COLOR]]\\*[$\\*[DOC_]TITLE_\\n[#ARG_NUM]]\m[]
-.             \}
-.             el .PRINT \\*[$\\*[DOC_]TITLE_\\n[#ARG_NUM]]
-.             if \\n[#ARG_NUM]>1 .as PDF_BM " \"
-.             as PDF_BM \\*[$\\*[DOC_]TITLE_\\n[#ARG_NUM]]
-.          \}
+.          DO_TITLE
+.          rm $PRFX
 .       \}
 .       PDF_BOOKMARK 1 \\*[$PDF_\\*[DOC_]COVER_LABEL] \\*[PDF_BM]
-.\" .          PDF_TITLE \\*[PDF_BM]
 .    \}
+.\" Chapter
 .    if \\n[#\\*[DOC_]COVER_TITLE]=3 \{\
 .       ie \\n[#PRINT_STYLE]=1 \{\
 .          CAPS
-.          PRINT \\*[$CHAPTER_STRING] \\*[$CHAPTER]
+.          UNDERSCORE "\\*[$CHAPTER_STRING] \\*[$CHAPTER]
 .          CAPS OFF
 .       \}
-.       el \{\
-.          ie \\n[#\\*[DOC_]COVER_TITLE_COLOR]=1 \{\
-.             PRINT \
-\m[\\*[$\\*[DOC_]COVER_TITLE_COLOR]]\\*[$CHAPTER_STRING] \\*[$CHAPTER]\m[]
-.          \}
-.          el .PRINT \\*[$CHAPTER_STRING] \\*[$CHAPTER]
-.       \}
+.       el .DO_CHAPTER
 .       PDF_BOOKMARK 1 \
 \\*[$PDF_\\*[DOC_]COVER_LABEL] \\*[$CHAPTER_STRING] \\*[$CHAPTER]
-.\" .          PDF_TITLE \\*[$CHAPTER_STRING] \\*[$CHAPTER]
+.       if \\n[#\\*[DOC_]COVER_CHAPTER_CAPS]=1 .CAPS off
 .    \}
+.\" Chapter title
 .    if \\n[#\\*[DOC_]COVER_TITLE]=4 \{\
 .       ie \\n[#PRINT_STYLE]=1 \{\
 .          CAPS
 .          nr #ARG_NUM 0 1
-.             ie \\n[#SINGLE_SPACE]=0 .vs \\n[#DOC_LEAD]u/2u
-.             el .vs \\n[#DOC_LEAD]u
-.             sp
-.          while \\n[#CHAPTER_TITLE_NUM]>=\\n+[#ARG_NUM] \{\
-.             UNDERSCORE "\\*[$CHAPTER_TITLE_\\n[#ARG_NUM]]"
-.             if \\n[#ARG_NUM]>1 .as PDF_BM " \"
-.             as PDF_BM \\*[$CHAPTER_TITLE_\\n[#ARG_NUM]]
-.          \}
+.          vs \\n[.v]u*2u
+.          sp -1.5
+.             while \\n[#CHAPTER_TITLE_NUM]>=\\n[#ARG_NUM] \{\
+.                UNDERSCORE "\\*[$CHAPTER_TITLE_\\n+[#ARG_NUM]]"
+.                if \\n[#ARG_NUM]>1 .as PDF_BM " \"
+.                as PDF_BM \\*[$CHAPTER_TITLE_\\n[#ARG_NUM]]
+.             \}
 .          CAPS OFF
-.          if \\n[#SINGLE_SPACE]=0 .vs \\n[#DOC_LEAD]u
+.          vs
 .       \}
 .       el \{\
-.          nr #ARG_NUM 0 1
-.          while \\n[#CHAPTER_TITLE_NUM]>=\\n+[#ARG_NUM] \{\
-.             ie \\n[#\\*[DOC_]COVER_TITLE_COLOR]=1 \{\
-.                PRINT \
-\m[\\*[$\\*[DOC_]COVER_TITLE_COLOR]]\\*[$CHAPTER_TITLE_\\n[#ARG_NUM]]\m[]
-.             \}
-.             el .PRINT \\*[$CHAPTER_TITLE_\\n[#ARG_NUM]]
-.             if \\n[#ARG_NUM]>1 .as PDF_BM " \"
-.             as PDF_BM \\*[$CHAPTER_TITLE_\\n[#ARG_NUM]]
-.          \}
+.          ds $PRFX CHAPTER_
+.          DO_TITLE
+.          rm $PRFX
 .       \}
 .       PDF_BOOKMARK 1 \\*[$PDF_\\*[DOC_]COVER_LABEL] \\*[PDF_BM]
-.\" .          PDF_TITLE \\*[PDF_BM]
 .    \}
+.\" Chapter + chapter title
 .    if \\n[#\\*[DOC_]COVER_TITLE]=5 \{\
 .       ie \\n[#PRINT_STYLE]=1 \{\
 .          CAPS
-.          PRINT \\*[$CHAPTER_STRING] \\*[$CHAPTER]
+.          UNDERSCORE "\\*[$CHAPTER_STRING] \\*[$CHAPTER]
 .          CAPS OFF
 .       \}
-.       el \{\
-.          ie \\n[#\\*[DOC_]COVER_TITLE_COLOR]=1 \{\
-.             PRINT \
-\m[\\*[$\\*[DOC_]COVER_TITLE_COLOR]]\\*[$CHAPTER_STRING] \\*[$CHAPTER]\m[]
-.          \}
-.          el .PRINT \\*[$CHAPTER_STRING] \\*[$CHAPTER]
-.       \}
+.       el .DO_CHAPTER
 .       if !'\\*[$CHAPTER_TITLE_1]'' \{\
 .          ie \\n[#PRINT_STYLE]=1 \{\
 .             ie \\n[#SINGLE_SPACE]=0 .vs \\n[#DOC_LEAD]u/2u
@@ -6931,255 +7414,269 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .             sp
 .             nr #ARG_NUM 0 1
 .             while \\n[#CHAPTER_TITLE_NUM]>=\\n+[#ARG_NUM] \{\
-.                UNDERSCORE "\\*[$CHAPTER_TITLE_\\n[#ARG_NUM]]"
+.                PRINT "\\*[$CHAPTER_TITLE_\\n[#ARG_NUM]]"
 .                if \\n[#ARG_NUM]>1 .as PDF_BM " \"
 .                as PDF_BM \\*[$CHAPTER_TITLE_\\n[#ARG_NUM]]
 .             \}
 .             if \\n[#SINGLE_SPACE]=0 .vs \\n[#DOC_LEAD]u
 .          \}
 .          el \{\
-.             fam \\*[$\\*[DOC_]COVER_CHAPTER_TITLE_FAM]
-.             ft  \\*[$\\*[DOC_]COVER_CHAPTER_TITLE_FT]
-.             ps  \\*[$\\*[DOC_]COVER_CHAPTER_TITLE_PT_SIZE]
-.             ALD \\n[.v]u/4u \"Put a little space before the chapter title
-.             nr #ARG_NUM 0 1
-.             while \\n[#CHAPTER_TITLE_NUM]>=\\n+[#ARG_NUM] \{\
-.                ie \\n[#\\*[DOC_]COVER_TITLE_COLOR]=1 \{\
-.                   PRINT \
-\m[\\*[$\\*[DOC_]COVER_TITLE_COLOR]]\\*[$CHAPTER_TITLE_\\n[#ARG_NUM]]\m[]
-.                \}
-.                el .PRINT \\*[$CHAPTER_TITLE_\\n[#ARG_NUM]]
-.                if \\n[#ARG_NUM]>1 .as PDF_BM " \"
-.                as PDF_BM \\*[$CHAPTER_TITLE_\\n[#ARG_NUM]]
-.             \}
+.             ds $PRFX CHAPTER_
+.             if \\n[#PRINT_STYLE]=2 .nr #CHAPTER+TITLE 1
+.             if !'\\*[$\\*[DOC_]COVER_CHAPTER_TITLE_SPACER]'' \
+.                sp \\*[$\\*[DOC_]COVER_CHAPTER_TITLE_SPACER]
+.             DO_TITLE
+.             rr #CHAPTER+TITLE
+.             rm $PRFX
 .          \}
 .       \}
 .       PDF_BOOKMARK 1 \\*[$PDF_\\*[DOC_]COVER_LABEL] \\*[PDF_BM]
-.\" .          PDF_TITLE \\*[PDF_BM]
 .    \}
-.    if \\n[#\\*[DOC_]COVER_TITLE]=6 \{\
+.\"  (Doc)covertitle
+.\"    Titles to (doc)covers that are entered with
+.\"      .TITLE DOC_COVER title
+.\"    and included in (DOC)COVER with TITLE get treated as
+.\"    (DOC_)COVERTITLEs, so we define the appropriate strings and
+.\"    registers from their (DOC_)COVER_TITLE equivalents.
+.\"
+.    if (\\n[#\\*[DOC_]COVER_TITLE]=6):(\\n[#\\*[DOC_]COVER_TITLE]=7) \{\
+.       ds $\\*[DOC_]COVER_\\*[DOC_]COVERTITLE_FAM \
+\\*[$\\*[DOC_]COVER_TITLE_FAM]
+.       ds $\\*[DOC_]COVER_\\*[DOC_]COVERTITLE_FT \
+\\*[$\\*[DOC_]COVER_TITLE_FT]
+.       ds $\\*[DOC_]COVER_\\*[DOC_]COVERTITLE_COLOR \
+\\*[$\\*[DOC_]COVER_TITLE_COLOR]
+.       nr #\\*[DOC_]COVER_\\*[DOC_]COVERTITLE_COLOR \
+\\n[#\\*[DOC_]COVER_TITLE_COLOR]
+.       nr #\\*[DOC_]COVER_\\*[DOC_]COVERTITLE_CAPS  \
+\\n[#\\*[DOC_]COVER_TITLE_CAPS]
+.       nr #\\*[DOC_]COVER_\\*[DOC_]COVERTITLE_SMALLCAPS  \
+\\n[#\\*[DOC_]COVER_TITLE_SMALLCAPS]
+.       ds $\\*[DOC_]COVER_\\*[DOC_]COVERTITLE_LEAD  \
+\\*[$\\*[DOC_]COVER_TITLE_LEAD]
+.       ds $\\*[DOC_]COVER_\\*[DOC_]COVERTITLE_SIZE_CHANGE \
+\\*[$\\*[DOC_]COVER_TITLE_SIZE_CHANGE]
+.       nr #\\*[DOC_]COVER_\\*[DOC_]COVERTITLE_UNDERLINE \
+\\n[#\\*[DOC_]COVER_TITLE_UNDERLINE]
+.       nr #\\*[DOC_]COVER_\\*[DOC_]COVERTITLE_UNDERLINE_WEIGHT \
+\\n[#\\*[DOC_]COVER_TITLE_UNDERLINE_WEIGHT]
+.       nr #\\*[DOC_]COVER_\\*[DOC_]COVERTITLE_UNDERLINE_WEIGHT_ADJ \
+\\n[#\\*[DOC_]COVER_TITLE_UNDERLINE_WEIGHT_ADJ]
+.       ds $\\*[DOC_]COVER_\\*[DOC_]COVERTITLE_UNDERLINE_GAP \
+\\*[$\\*[DOC_]COVER_TITLE_UNDERLINE_GAP]
+.       ds $\\*[DOC_]COVER_\\*[DOC_]COVERTITLE_RULE_GAP \
+\\*[$\\*[DOC_]COVER_TITLE_RULE_GAP]
 .       ie \\n[#PRINT_STYLE]=1 \{\
 .          CAPS
+.          vs \\n[.v]u*2u
 .          nr #ARG_NUM 0 1
-.          while \\n[#\\*[DOC_]COVER_TITLE_NUM]>=\\n+[#ARG_NUM] \{\
-.             UNDERSCORE "\\*[$\\*[DOC_]COVER_TITLE_\\n[#ARG_NUM]]"
+.          while \\n[#\\*[DOC_]COVERTITLE_NUM]>=\\n+[#ARG_NUM] \{\
+.             UNDERSCORE "\\*[$\\*[DOC_]COVERTITLE_\\n[#ARG_NUM]]"
 .                if \\n[#ARG_NUM]>1 .as PDF_BM " \"
-.                as PDF_BM \\*[$\\*[DOC_]COVER_TITLE_\\n[#ARG_NUM]]
-.          \}
-.          CAPS OFF
-.       \}
-.       el \{\
-.          nr #ARG_NUM 0 1
-.          while \\n[#\\*[DOC_]COVER_TITLE_NUM]>=\\n+[#ARG_NUM] \{\
-.             ie \\n[#\\*[DOC_]COVER_TITLE_COLOR]=1 \{\
-.                PRINT \
-\m[\\*[$\\*[DOC_]COVER_TITLE_COLOR]]\
-\\*[$\\*[DOC_]COVER_TITLE_\\n[#ARG_NUM]]\m[]
-.             \}
-.             el .PRINT \\*[$\\*[DOC_]COVER_TITLE_\\n[#ARG_NUM]]
-.             if \\n[#ARG_NUM]>1 .as PDF_BM " \"
-.             as PDF_BM \\*[$\\*[DOC_]COVER_TITLE_\\n[#ARG_NUM]]
+.                as PDF_BM \\*[$\\*[DOC_]COVERTITLE_\\n[#ARG_NUM]]
 .          \}
+.          vs
+.          CAPS OFF
+.       \}
+.       el \{\
+.          ds $PRFX \\*[DOC_]COVER
+.          DO_TITLE
+.          rm $PRFX
 .       \}
 .       PDF_BOOKMARK 1 \\*[$PDF_\\*[DOC_]COVER_LABEL] \\*[PDF_BM]
-.\" .          PDF_TITLE \\*[PDF_BM]
-.    \}
-.    if \\n[#\\*[DOC_]COVER_TITLE] \{\
-.      nr PDFHREF.VIEW.LEADING \\n[PDFHREF.VIEW.LEADING.H]
-.      rr PDFHREF.VIEW.LEADING.H
 .    \}
-.    if !\\n[#DOC_TYPE]=2 \{\
-.       if \\n[#\\*[DOC_]COVER_SUBTITLE]=1 \{\
-.          fam \\*[$\\*[DOC_]COVER_SUBTITLE_FAM]
-.          ft  \\*[$\\*[DOC_]COVER_SUBTITLE_FT]
-.          ps  \\*[$\\*[DOC_]COVER_SUBTITLE_PT_SIZE]
-.          if \\n[#PRINT_STYLE]=1 \{\
-.             TYPEWRITER
-.             ie \\n[#SINGLE_SPACE]=0 .vs \\n[#DOC_LEAD]u/2u
-.             el .vs \\n[#DOC_LEAD]u
-.             sp
-.          \}
-.          if \\n[#\\*[DOC_]COVER]=1 \{\
-.             ie !'\\*[$SUBTITLE_\\*[DOC_]COVER_1]'' \{\
-.                nr #SUBTITLES \\n[#SUBTITLE_\\*[DOC_]COVER_NUM]
-.                nr #NEXT_SUBTITLE 0 1
-.                while \\n[#SUBTITLES]>\\n[#NEXT_SUBTITLE] \{\
-.                   ie \\n[#\\*[DOC_]COVER_SUBTITLE_COLOR]=1 \{\
-.                      PRINT \
-\m[\\*[$\\*[DOC_]COVER_SUBTITLE_COLOR]]\
-\\*[$SUBTITLE_\\*[DOC_]COVER_\\n+[#NEXT_SUBTITLE]]\m[]
-.                   \}
-.                   el .PRINT \
-\\*[$SUBTITLE_\\*[DOC_]COVER_\\n+[#NEXT_SUBTITLE]]
-.                \}
-.             \}
-.             el \{\
-.                nr #SUBTITLES \\n[#SUBTITLE_NUM]
-.                nr #NEXT_SUBTITLE 0 1
-.                while \\n[#SUBTITLES]>\\n[#NEXT_SUBTITLE] \{\
-.                   ie \\n[#\\*[DOC_]COVER_SUBTITLE_COLOR]=1 \{\
-.                      PRINT \
-\m[\\*[$\\*[DOC_]COVER_SUBTITLE_COLOR]]\\*[$SUBTITLE_\\n+[#NEXT_SUBTITLE]]\m[]
-.                   \}
-.                   el .PRINT \\*[$SUBTITLE_\\n+[#NEXT_SUBTITLE]]
-.                \}
-.             \}
-.          \}
-.          if \\n[#PRINT_STYLE]=1 \{\
-.             if \\n[#SINGLE_SPACE]=0 .vs
+.    ie !'\\*[DOC_]'' \
+.       if !\\n[#DOC_COVER_TITLE] .PDF_BOOKMARK 1 Cover page
+.    el \
+.       if !\\n[#COVER_TITLE] .PDF_BOOKMARK 1 Title page
+.    rr #\\*[DOC_]COVER_TITLE
+.\" Subtitle
+.    if \\n[#\\*[DOC_]COVER_SUBTITLE]=1 \{\
+.       ie \\n[#PRINT_STYLE]=1 \{\
+.          if !'\\*[$\\*[DOC_]COVER_SUBTITLE_1]'' \
+.             ds $PRFX \\*[DOC_]COVER_
+.          sp 2
+.          nr #ARG_NUM 0 1
+.          while \\n[#\\*[$PRFX]SUBTITLE_NUM]>=\\n+[#ARG_NUM] \{\
+.             PRINT "\\*[$\\*[$PRFX]SUBTITLE_\\n[#ARG_NUM]]"
 .          \}
+.          rm $PRFX
 .       \}
-.       if \\n[#PRINT_STYLE]=1 \{\
-.          if !r#\\*[DOC_]COVER_SUBTITLE .sp
+.       el \{\
+.          ie !'\\*[$\\*[DOC_]COVER_SUBTITLE_1]'' .ds $PRFX \\*[DOC_]COVER_SUB
+.          el .ds $PRFX SUB
+.          if !'\\*[$\\*[DOC_]COVER_SUBTITLE_SPACER]'' \
+.             sp \\*[$\\*[DOC_]COVER_SUBTITLE_SPACER]
+.          DO_SUBTITLE
+.          rm $PRFX
 .       \}
 .    \}
+.    if \\n[#PRINT_STYLE]=1 \
+.       if !r#\\*[DOC_]COVER_SUBTITLE .sp
+.\" Author (plus attribution)
 .    if \\n[#\\*[DOC_]COVER_AUTHOR]=1 \{\
-.       fam \\*[$\\*[DOC_]COVER_AUTHOR_FAM]
-.       ft  \\*[$\\*[DOC_]COVER_AUTHOR_FT]
-.       ps  \\*[$\\*[DOC_]COVER_AUTHOR_PT_SIZE]
-.       if \\n[#PRINT_STYLE]=1 \{\
-.          TYPEWRITER
-.          ie \\n[#SINGLE_SPACE]=1 .vs \\n[#DOC_LEAD]u
-.          el .vs \\n[#DOC_LEAD]u/2u
+.       ie \\n[#PRINT_STYLE]=1 \
 .          sp
+.       el \{\
+.          ie !'\\*[$\\*[DOC_]COVER_AUTHOR_LEAD]'' \
+.             vs \\*[$\\*[DOC_]COVER_AUTHOR_LEAD]
+.          el .vs \\n[#\\*[DOC_]COVER_LEAD]u
+.       \}
+.       if '\\*[$\\*[DOC_]COVER_ATTRIBUTE_STRING]'' \
+.          ds $\\*[DOC_]COVER_ATTRIBUTE_STRING \
+              \\*[$ATTRIBUTE_STRING]
+.       ie !\\n[#PRINT_STYLE]=1 \{\
+.          fam \\*[$\\*[DOC_]COVER_ATTRIBUTE_FAM]
+.          ft  \\*[$\\*[DOC_]COVER_ATTRIBUTE_FT]
+.          ps \
+\\n[#DOC_PT_SIZE]u\\*[$\\*[DOC_]COVER_ATTRIBUTE_SIZE_CHANGE]
+.          if \\n[#\\*[DOC_]COVER_ATTRIBUTE_COLOR]=1 \
+.             COLOR \\*[$\\*[DOC_]COVER_ATTRIBUTE_COLOR]
+.          if \\n[#\\*[DOC_]COVER_ATTRIBUTE_CAPS]=1 .CAPS
+.          if \\n[#\\*[DOC_]COVER_ATTRIBUTE_SMALLCAPS]=1 .SMALLCAPS
+.          if !'\\*[$\\*[DOC_]COVER_ATTRIBUTE_SPACER]'' \
+.             sp \\*[$\\*[DOC_]COVER_ATTRIBUTE_SPACER]
+.          ie \\n[#\\*[DOC_]COVER_ATTRIBUTE_UNDERLINE] \{\
+.             ds $TITLE_TYPE \\*[DOC_]COVER_ATTRIBUTE
+.             ie \\n[#\\*[DOC_]COVER_ATTRIBUTE_UNDERLINE]=2 \
+.                UNDERSCORE2 \\*[$\\*[DOC_]COVER_ATTRIBUTE_UNDERLINE_GAP] \
+\\*[$\\*[DOC_]COVER_ATTRIBUTE_RULE_GAP] "\\*[$\\*[DOC_]COVER_ATTRIBUTE_STRING]"
+.             el .UNDERSCORE \\*[$\\*[DOC_]COVER_ATTRIBUTE_STRING] 
+.          \}
+.          el .PRINT "\\*[$\\*[DOC_]COVER_ATTRIBUTE_STRING]"
+.          SMALLCAPS off
+.          CAPS off
+.          if \\n[#\\*[DOC_]COVER_ATTRIBUTE_COLOR]=1 \
+.             gcolor
 .       \}
-.       ie d$ATTRIBUTE_STRING_DO_CCOVER \{\
-.          ie \\n[#\\*[DOC_]COVER_ATTRIBUTE_COLOR]=1 \{\
-.             PRINT \
-\&\m[\\*[$\\*[DOC_]COVER_ATTRIBUTE_COLOR]]\
-\\*[$ATTRIBUTE_STRING_\\*[DOC_]COVER]\m[]
-.          \}
-.          el .PRINT \&\\*[$ATTRIBUTE_STRING_\\*[DOC_]COVER]
-.       \}
+.       el \
+.          PRINT "\\*[$\\*[DOC_]COVER_ATTRIBUTE_STRING]"
+.       ie \\n[#PRINT_STYLE]=1 .sp
 .       el \{\
-.          if d$ATTRIBUTE_STRING \{\
-.             ie \\n[#\\*[DOC_]COVER_ATTRIBUTE_COLOR]=1 \{\
-.                PRINT \
-\&\m[\\*[$\\*[DOC_]COVER_ATTRIBUTE_COLOR]]\\*[$ATTRIBUTE_STRING]\m[]
-.             \}
-.             el .PRINT \&\\*[$ATTRIBUTE_STRING]
-.          \}
+.          if !'\\*[$\\*[DOC_]COVER_AUTHOR_SPACER]'' \
+.             sp \\*[$\\*[DOC_]COVER_AUTHOR_SPACER]
 .       \}
-.       PRINT_AUTHORS
+.       if '\\$0'COVER' \
+.          ds $PRFX COVER_
+.       if '\\$0'DOC_COVER' \
+.          ds $PRFX DOC_COVER_
+.       DO_AUTHORS
+.       rm $PRFX
 .    \}
-.    fam \\*[$\\*[DOC_]COVER_DOCTYPE_FAM]
-.    ft  \\*[$\\*[DOC_]COVER_DOCTYPE_FT]
-.    ps  \\*[$\\*[DOC_]COVER_DOCTYPE_PT_SIZE]
-.    sp
+.\" Named doctype string
 .    if \\n[#DOC_TYPE]=3 \{\
 .       if \\n[#\\*[DOC_]COVER_DOCTYPE]=1 \{\
 .          ie \\n[#PRINT_STYLE]=1 \{\
 .             TYPEWRITER
-.             vs \\n[#DOC_LEAD]u
-.             UNDERSCORE2 "\\*[$DOC_TYPE]"
+.             sp 1.5
+.             UNDERSCORE2 3p 2p "\\*[$DOC_TYPE]
 .          \}
 .          el \{\
-.             nr #FROM_\\*[DOC_]COVER 1
-.             ie \\n[#\\*[DOC_]COVER_DOCTYPE_COLOR]=1 \{\
+.             fam \\*[$\\*[DOC_]COVER_DOCTYPE_FAM]
+.             ft  \\*[$\\*[DOC_]COVER_DOCTYPE_FT]
+.             ps \
+\\n[#DOC_PT_SIZE]u\\*[$\\*[DOC_]COVER_DOCTYPE_SIZE_CHANGE]
+.             if \\n[#\\*[DOC_]COVER_DOCTYPE_COLOR]=1 \
 .                COLOR \\*[$\\*[DOC_]COVER_DOCTYPE_COLOR]
-.                ie \\n[#\\*[DOC_]COVER_UNDERLINE]=1 \
-.                   UNDERSCORE \\*[$\\*[DOC_]COVER_UNDERLINE_GAP] "\\*[$DOC_TYPE]"
-.                el .PRINT "\\*[$DOC_TYPE]"
-.             \}
-.             el \{\
-.                ie \\n[#\\*[DOC_]COVER_UNDERLINE]=1 \
-.                   UNDERSCORE \
-\\*[$\\*[DOC_]COVER_UNDERLINE_GAP] "\\*[$DOC_TYPE]"
-.                el .PRINT "\\*[$DOC_TYPE]"
-.             \}
-.             rr #FROM_\\*[DOC_]COVER
-.          \}
+.          sp
+.          if \\n[#\\*[DOC_]COVER_DOCTYPE_CAPS]=1 .CAPS
+.          if \\n[#\\*[DOC_]COVER_DOCTYPE_SMALLCAPS]=1 .SMALLCAPS
+.          if !'\\*[$\\*[DOC_]COVER_DOCTYPE_SPACER]'' \
+.             sp \\*[$\\*[DOC_]COVER_DOCTYPE_SPACER]
+.          ie \\n[#\\*[DOC_]COVER_DOCTYPE_UNDERLINE] \{\
+.             ds $TITLE_TYPE \\*[DOC_]COVER_DOCTYPE
+.             ie \\n[#\\*[DOC_]COVER_DOCTYPE_UNDERLINE]=2 \
+.                UNDERSCORE2 \\*[$\\*[DOC_]COVER_DOCTYPE_UNDERLINE_GAP] \
+\\*[$\\*[DOC_]COVER_DOCTYPE_RULE_GAP] "\\*[$DOC_TYPE]"
+.             el .UNDERSCORE "\\*[$DOC_TYPE]" 
+.          \}
+.          el .PRINT "\\*[$DOC_TYPE]"
+.          SMALLCAPS off
+.          CAPS off
+.          if \\n[#\\*[DOC_]COVER_DOCTYPE_COLOR]=1 \
+.             gcolor
+.          \}
+.       \}
+.    \}
+.\" Covertext
+.    if \\n[#\\*[DOC_]COVERTEXT]=1 \{\
+.       nr #DOING_COVERTEXT 1
+.       if !\\n[#\\*[DOC_]COVERTEXT_START_POS] .sp
+.       if \\n[#\\*[DOC_]COVERTEXT]=1 \{\
+.          ev \\*[DOC_]COVERTEXT
+.          nf
+.          \\*[DOC_]COVER_TEXT
+.          ev
 .       \}
+.       rr #\\*[DOC_]COVERTEXT
+.       rm \\*[DOC_]COVER_TEXT
+.       rr #DOING_COVERTEXT
+.       rr #\\*[DOC_]COVERTEXT_START_POS
 .    \}
 .    sp |\\n[#VISUAL_B_MARGIN]u
-.    ie \\n[#PRINT_STYLE]=1 \{\
-.       TYPEWRITER
-.       ie \\n[#SINGLE_SPACE]=1 .vs \\n[#DOC_LEAD]u
-.       el .vs \\n[#DOC_LEAD]u/2u
-.       sp
-.    \}
+.\" Copyright
+.    ie \\n[#PRINT_STYLE]=1 \
+.       if !\\n[#SINGLE_SPACE] .sp
 .    el \{\
 .       fam \\*[$\\*[DOC_]COVER_COPYRIGHT_FAM]
 .       ft  \\*[$\\*[DOC_]COVER_COPYRIGHT_FT]
-.       ps \\*[$\\*[DOC_]COVER_COPYRIGHT_PT_SIZE]
-.       vs \\n[.ps]u+\\n[#\\*[DOC_]COVER_MISC_AUTOLEAD]u
-.       nr #COPYRIGHT_V_ADJ \\n[#DOC_LEAD]-\\n[.v]
-.       sp \\n[#COPYRIGHT_V_ADJ]u
-.       rr #COPYRIGHT_V_ADJ
+.       ps \\n[#DOC_PT_SIZE]u\\*[$\\*[DOC_]COVER_COPYRIGHT_SIZE_CHANGE]
+.       nr #COPYRIGHT_V_POS \\n[#DOC_LEAD]-\\n[.v]
+.       sp \\n[#COPYRIGHT_V_POS]u
+.       rr #COPYRIGHT_V_POS
 .    \}
 .    if \\n[#\\*[DOC_]COVER_COPYRIGHT]=1 \{\
-.       if !'\\*[$COPYRIGHT_DOCCOVER]'' \{\
-.          ds $SAVED_COPYRIGHT \\*[$COPYRIGHT]
-.          ds $COPYRIGHT \\*[$COPYRIGHT_DOCCOVER]
-.       \}
 .       QUAD \\*[$\\*[DOC_]COVER_COPYRIGHT_QUAD]
-.       ie \\n[#\\*[DOC_]COVER_COPYRIGHT_COLOR]=1 \{\
-.          PRINT \m[\\*[$\\*[DOC_]COVER_COPYRIGHT_COLOR]]\\*[$COPYRIGHT]\m[]
-.       \}
-.       el .PRINT \\*[$COPYRIGHT]
-.       if d$SAVED_COPYRIGHT .ds $COPYRIGHT \\*[$SAVED_COPYRIGHT]
+.       if \\n[#\\*[DOC_]COVER_COPYRIGHT_COLOR]=1 \
+.          COLOR \\*[$\\*[DOC_]COVER_COPYRIGHT_COLOR]
+.       ie !'\\*[$COPYRIGHT_V_ADJ]'' \
+.          PRINT \v'\\*[$COPYRIGHT_V_ADJ]'\\*[$\\*[DOC_]COVER_COPYRIGHT]
+.       el \
+.          PRINT \\*[$\\*[DOC_]COVER_COPYRIGHT]
+.       if \\n[#\\*[DOC_]COVER_COPYRIGHT_COLOR]=1 \
+.          gcolor
 .    \}
-.    br
+.    sp |\\n[#VISUAL_B_MARGIN]u
+.\" Misc
 .    if \\n[#\\*[DOC_]COVER_MISC]=1 \{\
 .       if \\n[#PRINT_STYLE]=2 \{\
 .          fam \\*[$\\*[DOC_]COVER_MISC_FAM]
 .          ft  \\*[$\\*[DOC_]COVER_MISC_FT]
-.          ps \\*[$\\*[DOC_]COVER_MISC_PT_SIZE]
-.       \}
-.       QUAD \\*[$\\*[DOC_]COVER_MISC_QUAD]
-.       ie !'\\*[$MISC_\\*[DOC_]COVER_1]'' \{\
-.          nr #MISCS \\n[#MISC_\\*[DOC_]COVER_NUM]
+.          ps \\n[#DOC_PT_SIZE]u\\*[$\\*[DOC_]COVER_MISC_SIZE_CHANGE]
+.          vs \\*[$\\*[DOC_]COVER_MISC_LEAD]
+.          if \\n[#\\*[DOC_]COVER_MISC_COLOR]=1 \
+.             COLOR \\*[$\\*[DOC_]COVER_MISC_COLOR]
+.       \}
+.       ie !'\\*[$\\*[DOC_]COVER_MISC_1]'' \{\
+.          QUAD \\*[$\\*[DOC_]COVER_MISC_QUAD]
+.          da MISC_DIV
 .          nr #NEXT_MISC 0 1
-.          while \\n[#MISCS]>\\n[#NEXT_MISC] \{\
-.             ie \\n[#\\*[DOC_]COVER_MISC_COLOR]=1 \{\
-.                da MISC_DIV
-.                PRINT \
-\m[\\*[$\\*[DOC_]COVER_MISC_COLOR]]\\*[$MISC_\\*[DOC_]COVER_\\n+[#NEXT_MISC]]\m[]
-.                br
-.                da
-.                rm $MISC_\\*[DOC_]COVER_\\n[#NEXT_MISC]
-.                rm $MISC_\\n[#NEXT_MISC]
-.             \}
-.             el \{\
-.                da MISC_DIV
-.                PRINT \\*[$MISC_\\*[DOC_]COVER_\\n+[#NEXT_MISC]]
-.                br
-.                da
-.                rm $MISC_\\*[DOC_]COVER_\\n[#NEXT_MISC]
-.                rm $MISC_\\n[#NEXT_MISC]
-.             \}
+.          while \\n[#\\*[DOC_]COVER_MISC_LINES]>=\\n+[#NEXT_MISC] \{\
+.             nop \\*[$\\*[DOC_]COVER_MISC_\\n[#NEXT_MISC]]
+.             br
 .          \}
-.          rm $MISC_\\n+[#NEXT_MISC]
+.          da
 .       \}
 .       el \{\
-.          nr #MISCS \\n[#MISC_NUM]
+.          QUAD \\*[$MISC_QUAD]
+.          da MISC_DIV
 .          nr #NEXT_MISC 0 1
-.          while (\\n[#MISCS]>=\\n+[#NEXT_MISC]) \{\
-.             ie \\n[#\\*[DOC_]COVER_MISC_COLOR]=1 \{\
-.                da MISC_DIV
-.                PRINT \
-\m[\\*[$\\*[DOC_]COVER_MISC_COLOR]]\\*[$MISC_\\n[#NEXT_MISC]]\m[]
-.                br
-.                da
-.             \}
-.             el \{\
-.                da MISC_DIV
-.                PRINT \\*[$MISC_\\n[#NEXT_MISC]]
-.                br
-.                da
-.             \}
-.             nr #MISC_DEPTH +\\n[dn]
+.          while \\n[#MISC_LINES]>=\\n+[#NEXT_MISC] \{\
+.             nop \\*[$MISC_\\n[#NEXT_MISC]]
+.             br
 .          \}
+.          da
 .       \}
-.       nr #MISC_DEPTH -\\n[#DOC_LEAD]
-.       sp |\\n[#VISUAL_B_MARGIN]u-\\n[#MISC_DEPTH]u
+.       nr #MISC_V_ADJ \\n[#DOC_LEAD]-\\n[.v]
+.       sp \\n[#MISC_V_ADJ]u
+.       sp -\\n[dn]u+1
 .       nf
 .       MISC_DIV
+.       if \\n[#MISC_COLOR]=1 .gcolor
+.       if \\n[#\\*[DOC_]COVER_MISC_COLOR]=1 .gcolor
 .       rm MISC_DIV
 .       rr #MISC_DEPTH
 .    \}
-.    if '\\$0'DO_COVER'     .nr #COVER_END 1
-.    if '\\$0'DO_DOC_COVER' .nr #DOC_COVER_END 1
 .    if \\n[TOC.RELOCATE]==1 \{\
 .       if !\\n[#COVER_BLANKPAGE] \
 .          if !rTOC_BH .TOC_AFTER_HERE
@@ -7200,33 +7697,29 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 \#
 .MAC END_COVER END
 .    EOL
-.    TRAP
+.    vpt
+.    if '\\*[$COVER_TYPE]'DOC_COVER_' .ds DOC DOC
+.    rm $COVER_TYPE
+.    if \\n[#DOC_TYPE]=5 .nr #SKIP 1
+.    nr #END_COVER 1
 .    NEWPAGE
+.    rr #NEWPAGE
+.    rr #SKIP
 .    if \\n[#PAGINATION_WAS_ON]=1 .nr % +1
-.    if \\n[#DOC_COVER_END]=1 \{\
-.       ie \\n[#DOC_COVER_BLANKPAGE]=1 \{\
-.          if \\n[TOC.RELOCATE] \
-.             if !\\n[#TOC_BH] .TOC_AFTER_HERE
-.          NEWPAGE
-.          rr #DOC_COVER_BLANKPAGE
-.          if !\\n[#DOCCOVERS_COUNT]=1 .nr % -2
-.       \}
-.       el \
-.          if !\\n[#DOCCOVERS_COUNT]=1 .nr #PAGE_NUM_ADJ -1
-.       rr #DOC_COVER_END
-.    \}
-.    if \\n[#COVER_END]=1 \{\
-.       ie \\n[#COVER_BLANKPAGE]=1 \{\
-.          if \\n[TOC.RELOCATE] \
-.             if !\\n[TOC_BH] .TOC_AFTER_HERE
-.          NEWPAGE
-.          rr #COVER_BLANKPAGE
-.          if !\\n[#COVERS_COUNT]=1 .nr % -2
-.       \}
-.       el \
-.          if !\\n[#COVERS_COUNT]=1 .nr #PAGE_NUM_ADJ -1
-.       rr #COVER_END
+.    ie \\n[#\\*[DOC]COVER_BLANKPAGE]=1 \{\
+.       if \\n[TOC.RELOCATE] \
+.          if !\\n[#TOC_BH] .TOC_AFTER_HERE
+.\" Without the empty PDF_BOOKMARK, (doc)cover BLANKPAGE causes
+.\" the PDF outline to place the first doc or chapter before the TOC,
+.\" even though PDF output is correct.
+.       PDF_BOOKMARK 1
+.       nop \&
+.       bp
+.       rr #\\*[DOC]COVER_BLANKPAGE
+.       if !\\n[#\\*[DOC]COVERS_COUNT]=1 .nr % -2
 .    \}
+.    el \
+.       if !\\n[#\\*[DOC]COVERS_COUNT]=1 .nr #PAGE_NUM_ADJ -1
 .    if !'\\n[.ev]'0' .ev
 .    if \\n[#PAGINATION_WAS_ON] \{\
 .       rr #PAGINATION_WAS_ON
@@ -7250,13 +7743,30 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .    if \\n[#RECTO_VERSO] .nr #RV_POST_COVER 1
 .END
 \#
-\# Macro to begin document processing
+\# +++START THE DOCUMENT+++
+\#
+\# THE START MACRO
+\# ---------------
+\# *Arguments:
+\#   <none>
+\# *Function:
+\#   Macro to start document processing.  Reads in default document
+\#   style parameters and any parameters the user has changed before
+\#   issuing START.  Using the information gathered in the opening
+\#   macros, prints appropriate title (or chapter #), subtitle,
+\#   author and document type (if appropriate).
+\# *Notes:
+\#   The .PRINT \& (zero-width character) is required to get the
+\#   subsequent .sp request to work as advertised.
+\#
+\#   The overall document line length, family, and point-size
+\#   are stored in #DOC_L_LENGTH, $DOC_FAM, and #DOC_PT_SIZE for
+\#   use in the HEADER and FOOTER macros.
 \#
 .MAC START END
 .    nr #DOCS 1
-.    if \\n[TOC.RELOCATE]==2 \{\
+.    if \\n[TOC.RELOCATE]==2 \
 .       if !\\n[TOC_BH] .TOC_BEFORE_HERE
-.    \}
 .    if !n .nop \X'ps: exec 0 setlinejoin'\X'ps: exec 0 setlinecap'
 .    if !\\n[#PRINT_STYLE] \{\
 .       PRINTSTYLE TYPEWRITE
@@ -7266,12 +7776,11 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .       ta \\n[.l]u
 .       sp |1i-1v
 .       CENTER
-.       PRINT "You neglected to enter a PRINTSTYLE"
-.       fl
+.       PRINT "You neglected to enter a PRINTSTYLE."
 .       ab [mom]: PRINTSTYLE missing.  Aborting '\\n[.F]'.
 .    \}
 .    if \\n[#LINENUMBERS]=1 \{\
-.       nn
+.       nm
 .       NUMBER_LINES OFF
 .       nr #LINENUMBERS 2
 .    \}
@@ -7284,6 +7793,10 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .          PAGENUM_STYLE \\*[$RESTORE_PAGENUM_STYLE]
 .          rm $RESTORE_PAGENUM_STYLE
 .       \}
+.       if \\n[#PAGINATE_WAS_ON] \{\
+.          PAGINATE
+.          rr #PAGINATE_WAS_ON
+.       \}
 .    \}
 .    DEFAULTS
 .    nr #PAGE_TOP \\n[#T_MARGIN]u-\\n[#DOC_LEAD]u
@@ -7291,35 +7804,17 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .    if !r#EN_Q_AUTOLEAD  .nr #EN_Q_LEAD \\n[#EN_LEAD]
 .    if !r#EN_BQ_AUTOLEAD .nr #EN_BQ_LEAD \\n[#EN_LEAD]
 .\"  TOC/recto-verso stuff
-.    if !r@L_MARGIN .nr @L_MARGIN \\n[#DOC_L_MARGIN]
-.    if !r@R_MARGIN .nr @R_MARGIN \\n[#DOC_R_MARGIN]
+.    nr @L_MARGIN \\n[#DOC_L_MARGIN]
+.    nr @R_MARGIN \\n[#DOC_R_MARGIN]
 .\" Covers and doc covers
-.    if \\n[#DOC_COVERS]=1 \{\
-.       if \\n[#DOC_COVER]=1 \{\
-.          DO_DOC_COVER
-.          rr #DOC_COVER
-.          rr #DOC_COVER_TITLE
-.          rr #DOC_COVER_SUBTITLE
-.          rr #DOC_COVER_AUTHOR
-.          rr #DOC_COVER_DOCTYPE
-.          rr #DOC_COVER_COPYRIGHT
-.          rr #DOC_COVER_MISC
-.       \}
-.    \}
-.    if \\n[#COVERS]=1 \{\
-.       if \\n[#COVER]=1 \{\
-.          DO_COVER
-.          rr #COVER
-.          rr #COVER_TITLE
-.          rr #COVER_SUBTITLE
-.          rr #COVER_AUTHOR
-.          rr #COVER_DOCTYPE
-.          rr #COVER_COPYRIGHT
-.          rr #COVER_MISC
-.       \}
-.    \}
+.    if \\n[#DOC_COVERS]=1 \
+.       if \\n[#DOC_COVER]=1 .DO_DOC_COVER
+.    if \\n[#COVERS]=1 \
+.       if \\n[#COVER]=1 .DO_COVER
+.    nr PDFHREF.VIEW.LEADING \\n[PDFHREF.VIEW.LEADING.T]
 .    if !\\n[#TOC] .RV_HARD_SET_MARGINS
 .    if \\n[#COLUMNS] .COLUMNS \\n[#NUM_COLS] \\n[#GUTTER]u
+.    sp |\\n[#DOCHEADER_ADVANCE]u-\\n[#DOC_LEAD]u
 .\" Collect TITLE for TOC.
 .    if !\\n[#TOC]=1 \{\
 .       nr #TOC_ENTRY_PN \\n%+\\n[#PAGE_NUM_ADJ]
@@ -7352,27 +7847,53 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .             rm $TOC_AUTHORS
 .          \}
 .       \}
-.       sp |\\n[#DOCHEADER_ADVANCE]u-\\n[#DOC_LEAD]u
-.       PDF_BOOKMARK 1 \\*[$TOC_TITLE_ITEM]
 .       as $TOC_TITLE_ITEM \|
-.       if \\n[#PREFIX_CH_NUM] \{\
+.       if \\n[#PREFIX_CH_NUM] \
+.          ds $TOC_CH_NUM \
+              \\n[#CH_NUM].\[toc-hd-num-spacer]
+.       if \\n[#TOC_PREFIX_CH_NUM] \{\
 .          rn $TOC_TITLE_ITEM $TOC_TITLE_ITEM_OLD
-.          ds $TOC_CH_NUM \\n[#CH_NUM].\[toc-hd-num-spacer]
+.          ds $TOC_CH_NUM \
+              \\n[#CH_NUM].\[toc-hd-num-spacer]
+.          if (\\n[#PAD_TOC_CH_NUM]=2)&(\\n[#CH_NUM]<10) \
+.                ds $TOC_CH_NUM \h'\w'\0'u'\\*[$TOC_CH_NUM]
+.          if \\n[#PAD_TOC_CH_NUM]=3 \{\
+.             if \\n[#CH_NUM]<10 \
+.                ds $TOC_CH_NUM \h'\w'\0'u*2u'\\*[$TOC_CH_NUM]
+.             if (\\n[#CH_NUM]>=10)&(\\n[#CH_NUM]<100) \
+.                ds $TOC_CH_NUM \h'\w'\0'u'\\*[$TOC_CH_NUM]
+.          \}
+.          if \\n[#PAD_TOC_CH_NUM]=4 \{\
+.             if \\n[#CH_NUM]<10 \
+.                ds $TOC_CH_NUM \h'\w'\0'u*3u'\\*[$TOC_CH_NUM]
+.             if (\\n[#CH_NUM]>=10)&(\\n[#CH_NUM]<100) \
+.                ds $TOC_CH_NUM \h'\w'\0'u*2u'\\*[$TOC_CH_NUM]
+.             if (\\n[#CH_NUM]>=100)&(\\n[#CH_NUM]<1000) \
+.                ds $TOC_CH_NUM \h'\w'\0'u'\\*[$TOC_CH_NUM]
+.          \}
 .          ds $TOC_TITLE_ITEM \\*[$TOC_CH_NUM]\\*[$TOC_TITLE_ITEM_OLD]
 .          rm $TOC_TITLE_ITEM_OLD
 .       \}
-.       TITLE_TO_TOC
+.    \}
+.    if !\\n[#TOC] \{\
+.       if !'\\*[$TOC_TITLE_ITEM]'' \{\
+.          PDF_BOOKMARK 1 \\*[$TOC_TITLE_ITEM]
+.          TITLE_TO_TOC
+.       \}
 .    \}
 .    if !\\n[#TOC] .nr #POST_TOP 1
 .\" End TITLE collection
 .    if \\n[#PRINT_PAGENUM_ON_PAGE_1] \{\
-.       br
-.       sp |\\n[#HEADER_MARGIN]u
-.       PRINT_PAGE_NUMBER
+.       if \\n[#PAGE_NUM_V_POS]=1 \{\
+.          br
+.          sp |\\n[#HEADER_MARGIN]u
+.          PRINT_PAGE_NUMBER
+.       \}
 .    \}
 .    rr #COLLATE
 .    rr #PAGINATION_STATE
 .\" End collate stuff
+.    sp |\\n[#DOCHEADER_ADVANCE]u-\\n[#DOC_LEAD]u
 .    ie \\n[#DOC_HEADER]=0 \{\
 .       if \\n[.ns] .rs
 .       if \\n[#DOC_TYPE]=4 \
@@ -7385,7 +7906,8 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .       ie r#ADVANCE_FROM_TOP \{\
 .          br
 .          sp |\\n[#ADVANCE_FROM_TOP]u-1v
-.          if \\n[#ADJ_DOC_LEAD]=1 .SHIM
+.          if \\n[#ADJ_DOC_LEAD]=1 \
+.             if !\\n[#DOCHEADER_NO_SHIM] .SHIM_1
 .       \}
 .       el \{\
 .          br
@@ -7402,177 +7924,66 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .    \}
 .    el \{\
 .       if \\n[#AUTO_LEAD] .nr #RESTORE_AUTO_LEAD 1
+.       nr #CURRENT_LEAD \\n[.v]
 .       if \\n[#PRINT_STYLE]=2 .vs \\n[#DOC_LEAD]u\\*[$DOCHEADER_LEAD_ADJ]
+.       nr #DOCHEADER_LEAD_DIFF \\n[#CURRENT_LEAD]-\\n[.v]
+.       sp +\\n[#DOCHEADER_LEAD_DIFF]u
 .       if \\n[#RESTORE_AUTO_LEAD] \{\
 .          nr #AUTO_LEAD 1
 .          nr #AUTOLEAD_VALUE  \\n[#SAVED_AUTOLEAD_VALUE]
 .       \}
-.       nr #DOCHEADER_LEAD \\n[#LEAD]
+.       nr #DOCHEADER_LEAD \\n[.v]
+.       vpt 0
 .\" Default doctype
 .       if \\n[#DOC_TYPE]=1 \{\
-.          if \\n[.ns] .rs
-.          ev DOCHEADER
-.          if \\n[#DOCHEADER_COLOR]=1 \{\
-.             nf
-\m[\\*[$DOCHEADER_COLOR]]
-.             EOL
+.          if \\n[.ns] \{\
+.             rs
+.             nop \&
+.             sp -1
 .          \}
+.          ev DOCHEADER
+.          evc 0
 .          L_MARGIN \\n[#DOC_L_MARGIN]u
 .          LL       \\n[#DOC_L_LENGTH]u
 .          ta \\n[.l]u
-.          if \\n[#PRINT_STYLE]=1 \{\
-.             DOC_HEADER_QUAD
-.             TYPEWRITER
-.             if !\\n[#SINGLE_SPACE] \{\
-.                vs (\\n[#DOC_LEAD]u/2u)+(\\n[.v]u/3u)
-.                sp |\\n[#T_MARGIN]u-1v
-.             \}
-.             if !'\\*[$TITLE_1]'' \{\
-.                CAPS
-.                nr #ARG_NUM 0 1
-.                while \\n[#TITLE_NUM]>=\\n+[#ARG_NUM] \{\
-.                   UNDERSCORE 3p "\\*[$TITLE_\\n[#ARG_NUM]]"
-.                \}
-.                CAPS OFF
-.             \}
-.             if !'\\*[$SUBTITLE]'' \{\
-.                sp
-.                nr #ARG_NUM 0 1
-.                while \\n[#SUBTITLE_NUM]>=\\n+[#ARG_NUM] \{\
-.                   UNDERSCORE 3p "\\*[$SUBTITLE_\\n[#ARG_NUM]]"
-.                \}
-.             \}
-.             if !'\\*[$AUTHOR_1]'' \{\
-.                sp
-.                PRINT \&\\*[$ATTRIBUTE_STRING]
-.                nr #AUTHORS \\n[#AUTHOR_NUM]
-.                nr #NEXT_AUTHOR 0 1
-.                if !\\n[#SINGLE_SPACE] .vs (\\n[#DOC_LEAD]u/2u)+(\\n[.v]u/3u)
-.                while \\n[#AUTHORS]>\\n[#NEXT_AUTHOR] \{\
-.                   PRINT \\*[$AUTHOR_\\n+[#NEXT_AUTHOR]]
-.                \}
-.             \}
-.          \}
-.          if \\n[#PRINT_STYLE]=2 \{\
-.             DEFAULT_DOCHEADER
-.          \}
+.          if \\n[#PRINT_STYLE]=1 .DEFAULT_DOCHEADER_TYPEWRITE
+.          if \\n[#PRINT_STYLE]=2 .DEFAULT_DOCHEADER
 .          ev
 .       \}
 .\" Chapter doctype
 .       if \\n[#DOC_TYPE]=2 \{\
 .          if \\n[.ns] .rs
 .          ev DOCHEADER
-.          if \\n[#DOCHEADER_COLOR]=1 \{\
-.             nf
-\m[\\*[$DOCHEADER_COLOR]]
-.             EOL
-.          \}
+.          evc 0
+.          if \\n[#DOCHEADER_COLOR]=1 \
+.             COLOR \\*[$DOCHEADER_COLOR]
 .          L_MARGIN \\n[#DOC_L_MARGIN]u
 .          LL       \\n[#DOC_L_LENGTH]u
 .          ta \\n[.l]u
-.          if \\n[#PRINT_STYLE]=1 \{\
-.             CENTER
-.             TYPEWRITER
-.             if !\\n[#SINGLE_SPACE] \{\
-.                vs (\\n[#DOC_LEAD]u/2u)+(\\n[.v]u/3u)
-.                sp |\\n[#T_MARGIN]u-1v
-.             \}
-.             ie '\\*[$CHAPTER]'' \{\
-.                CAPS
-.                ie !'\\*[$CHAPTER_TITLE]'' \{\
-.                   nr #ARG_NUM 0 1
-.                   while \\n[#CHAPTER_TITLE_NUM]>=\\n+[#ARG_NUM] \{\
-.                      UNDERSCORE 3p "\\*[$CHAPTER_TITLE_\\n[#ARG_NUM]]"
-.                   \}
-.                \}
-.                el \{\
-.                   CAPS
-.                   UNDERSCORE 3p "\\*[$CHAPTER_STRING]"
-.                \}
-.                CAPS OFF
-.                RLD 1v
-.             \}
-.             el \{\
-.                CAPS
-.                PRINT \\*[$CHAPTER_STRING] \\*[$CHAPTER]
-.                CAPS OFF
-.                if !'\\*[$CHAPTER_TITLE]'' \{\
-.                   sp
-.                   nr #ARG_NUM 0 1
-.                   while \\n[#CHAPTER_TITLE_NUM]>=\\n+[#ARG_NUM] \{\
-.                      UNDERSCORE 3p "\\*[$CHAPTER_TITLE_\\n[#ARG_NUM]]"
-.                   \}
-.                \}
-.                RLD 1v
-.             \}
-.             vs \\n[#DOC_LEAD]u
-.             if \\n[#SINGLE_SPACE] .sp 2
-.          \}
-.          if \\n[#PRINT_STYLE]=2 \{\
-.             CHAPTER_DOCHEADER
-.             di DOCHEADER_DIVERSION \" This diversion is only
-.             br                     \" necessary to find the depth of the
-.             CHAPTER_DOCHEADER      \" docheader
-.             br
-.             di
-.             nr #DOCHEADER_DEPTH \\n[dn]-\\n[#DOCHEADER_LEAD] \" Storing the depth (height) of the diversion
-.                                                              \" in #DOCHEADER_DEPTH
-.             rm DOCHEADER_DIVERSION                           \" Removing the diversion macro
-.          \}
+.          if \\n[#PRINT_STYLE]=1 .CHAPTER_DOCHEADER_TYPEWRITE
+.          if \\n[#PRINT_STYLE]=2 .CHAPTER_DOCHEADER
 .          ev
 .       \}
 .\" Named
 .       if \\n[#DOC_TYPE]=3 \{\
-.          if \\n[.ns] .rs
-.          ev DOCHEADER
-.          if \\n[#DOCHEADER_COLOR]=1 \{\
-.             nf
-\m[\\*[$DOCHEADER_COLOR]]
-.             EOL
+.          if \\n[.ns] \{\
+.             rs
+.             nop \&
+.             sp -1
 .          \}
+.          ev DOCHEADER
+.          evc 0
+.          if \\n[#DOCHEADER_COLOR]=1 \
+.             COLOR \\*[$DOCHEADER_COLOR]
 .          L_MARGIN \\n[#DOC_L_MARGIN]u
 .          LL       \\n[#DOC_L_LENGTH]u
 .          ta \\n[.l]u
 .          if \\n[#PRINT_STYLE]=1 \{\
-.             CENTER
-.             TYPEWRITER
-.             if !\\n[#SINGLE_SPACE] \{\
-.                vs (\\n[#DOC_LEAD]u/2u)+(\\n[.v]u/3u)
-.                sp |\\n[#T_MARGIN]u-1v
-.             \}
-.             if !'\\*[$TITLE_1]'' \{\
-.                CAPS
-.                nr #ARG_NUM 0 1
-.                while \\n[#TITLE_NUM]>=\\n+[#ARG_NUM] \{\
-.                   UNDERSCORE 3p "\\*[$TITLE_\\n[#ARG_NUM]]"
-.                \}
-.                CAPS OFF
-.             \}
-.             if !'\\*[$SUBTITLE]'' \{\
-.                sp
-.                nr #ARG_NUM 0 1
-.                while \\n[#SUBTITLE_NUM]>=\\n+[#ARG_NUM] \{\
-.                   UNDERSCORE 3p "\\*[$SUBTITLE_\\n[#ARG_NUM]]"
-.                \}
-.             \}
-.             if !'\\*[$AUTHOR_1]'' \{\
+.             DEFAULT_DOCHEADER_TYPEWRITE
+.             if !\\n[#NO_PRINT_DOCTYPE] \{\
 .                sp
-.                PRINT \&\\*[$ATTRIBUTE_STRING]
-.                nr #AUTHORS \\n[#AUTHOR_NUM]
-.                nr #NEXT_AUTHOR 0 1
-.                if !\\n[#SINGLE_SPACE] .vs (\\n[#DOC_LEAD]u/2u)+(\\n[.v]u/3u)
-.                while \\n[#AUTHORS]>\\n[#NEXT_AUTHOR] \{\
-.                   PRINT \\*[$AUTHOR_\\n+[#NEXT_AUTHOR]]
-.                \}
-.             \}
-.             ie !\\n[#SINGLE_SPACE] .sp 2
-.             el .sp
-.             ie \\n[#DOCTYPE_UNDERLINE] \{\
-.             UNDERSCORE2 3p "\\*[$DOC_TYPE]"
+.                UNDERSCORE2 3p 2p "\\*[$DOC_TYPE]"
 .             \}
-.             el \
-.                PRINT "\\*[$DOC_TYPE]"
-.             if \\n[#SINGLE_SPACE]=1 .sp
 .          \}
 .          if \\n[#PRINT_STYLE]=2 .NAMED_DOCHEADER
 .          ev
@@ -7597,26 +8008,66 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .             ta \\n[.l]u
 .          \}
 .       \}
+.       nr #NO_PRINT_AUTHOR  1
+.       nr #NO_PRINT_DOCTYPE 1
 .    \}
 .    vs \\n[#DOC_LEAD]u
-.    if \\n[#ADJ_DOC_LEAD]=1 \{\
-.       ie \\n[#ADVANCE_FROM_TOP]=0 \
-.          if \\n[#DOC_HEADER]=1 .SHIM
-.       el .rr #ADVANCE_FROM_TOP
-.    \}
-.    mk dc
+.    if \\n[#PRINT_STYLE]=1 \
+.       if \\n[#SINGLE_SPACE]=1 .sp
+.    if \\n[#ADJ_DOC_LEAD]=1 \
+.       if \\n[#ADVANCE_FROM_TOP]=0 \
+.          if \\n[#DOC_HEADER]=1 \
+.             if !\\n[#DOCHEADER_NO_SHIM] .SHIM_1
+.    if \\n[#COLUMNS] .mk dc
+.    FAMILY \\*[$DOC_FAM]
 .    QUAD \\*[$DOC_QUAD]
 .    CLEANUP_DEFAULTS
 .    nr #START_FOR_FOOTERS 1
 .    if !\\n[#DOC_TYPE]=4 .em TERMINATE
 .    if \\n[#LINENUMBERS]=2 \{\
-.       NUMBER_LINES RESUME
+.       ie \\n[#PER_SECTION] .NUMBER_LINES 1
+.       el .NUMBER_LINES RESUME
 .       nr #LINENUMBERS 1
 .    \}
 .    if \\n[#RUN_ON]=1 \{\
 .       if \\n[#FN_MARKER_STYLE]=1 .RUNON_WARNING
 .       if \\n[#FN_MARKER_STYLE]=2 .RUNON_WARNING
 .    \}
+.    nr PDFHREF.VIEW.LEADING \\n[PDFHREF.VIEW.LEADING.H]
+.    vpt
+.    if !r flex .nr flex 1
+.    nr flex-spaces 0
+.\" If one-page, don't flex.
+.    if !dPDF.EXPORT \{\
+.       if \\n[#FLEX_ACTIVE] \{\
+.          if !\\n[#NO_FLEX] \{\
+.             if d pre-toc-\\n%@\\n[#COL_NUM] \
+.                nr #NO_FLEX 1
+.             if d pre-list-\\n%@\\n[#COL_NUM] \
+.                nr #NO_FLEX 1
+.             if d page-\\n%@\\n[#COL_NUM] \
+.                nr #NO_FLEX 1
+.             if '\\*[last-page]'\\n%@\\n[#COL_NUM]' \
+.                nr #NO_FLEX 1
+.          \}
+.       \}
+.    \}
+.    if \\n[#DOC_TYPE]=5 \{\
+.       if \\n[#HDRFTR_BOTH] \
+.          HEADER_RECTO \\*[$HDR_RECTO_QUAD] "\\*[$HDR_RECTO_STRING]"
+.       if \\n[#SLIDE_HEADERS] .HEADER
+.       if \\n[#HDRFTR_BOTH] \
+.          FOOTER_RECTO \\*[$FTR_RECTO_QUAD] "\\*[$FTR_RECTO_STRING]"
+.       if \\n[#SLIDE_FOOTERS] \
+.          PRINT_FOOTER
+.       sp |\\n[#T_MARGIN]u-\\n[#DOC_LEAD]u
+.       vpt
+.    \}
+.END
+\#
+.MAC RR_ADVANCE_FROM_TOP END
+.    rr #ADVANCE_FROM_TOP
+.    ch RR_ADVANCE_FROM_TOP
 .END
 \#
 .MAC CLEANUP_DEFAULTS END
@@ -7627,6 +8078,8 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .    rr #MISCS
 .    rr #NEXT_AUTHOR
 .    rr #NEXT_MISC
+.    wh \\n[nl]u+1u RR_ADVANCE_FROM_TOP
+.    rr #DOCHEADER_NO_SHIM
 .END
 \#
 \# ====================================================================
@@ -7636,7 +8089,7 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 \# DOCUMENT HEADER
 \# ---------------
 \# *Argument:
-\#   <none> | <anything> [distance to advance from top of page]
+\#   <none> | <anything> [distance to advance from top of page] [NO_SHIM]
 \# *Function:
 \#   Turns printing of document header on or off.  If a second
 \#   numeric argument with units of measure is given, advances that
@@ -7648,10 +8101,15 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 \#   (with a unit of measure).
 \#
 .MAC DOCHEADER END
-.    ie '\\$1'' .nr #DOC_HEADER 1
-.    el \{\
-.       if !'\\$2'' .nr #ADVANCE_FROM_TOP (\\$2)
+.    if \\n[#NUM_ARGS]=0 .nr #DOC_HEADER 1
+.    if \\n[#NUM_ARGS]=1 \{\
+.       ie '\\$1'NO_SHIM' .nr #DOCHEADER_NO_SHIM 1
+.       el .nr #DOC_HEADER 0
+.    \}
+.    if \\n[#NUM_ARGS]>1 \{\
 .       nr #DOC_HEADER 0
+.       if \B'\\$2' .nr #ADVANCE_FROM_TOP \\$2
+.       if '\\$3'NO_SHIM' .nr #DOCHEADER_NO_SHIM 1
 .    \}
 .END
 \#
@@ -7802,10 +8260,10 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .    nr #RESET_TRAPS 1
 .    if !\\n[#ADJ_DOC_LEAD] .nr #REMOVE_ADJ 1
 .    if !'\\$0'DOC_LEAD' \{\
-.       if '\\$0'EN_LEAD' .nr #DOC_LEAD \\n[#EN_LEAD]
+.       if '\\$0'EN_LEAD'  .nr #DOC_LEAD \\n[#EN_LEAD]
 .       if '\\$0'BIB_LEAD' .nr #DOC_LEAD \\n[#BIB_LEAD]
 .       if '\\$0'TOC_LEAD' .nr #DOC_LEAD \\n[#TOC_LEAD]
-.       if '\\$2'ADJUST' .TRAPS
+.       if '\\$2'ADJUST'   .TRAPS
 .       rr #RESET_TRAPS
 .    \}
 .END
@@ -7834,7 +8292,7 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 \# *Argument:
 \#   None
 \# *Function:
-\#   Advances to the next "valid" baseline.
+\#   Advances to the next valid baseline.
 \# *Notes:
 \#   If a user plays around with spacing in a doc (say, with ALD),
 \#   it isn't easy to get mom back on track so she can achieve
@@ -7844,37 +8302,161 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 \# First, a little convenience macro
 \#
 .MAC PROCESS_SHIM END
-.    while \\n+[#VALID_BASELINE]<\\n[#CURRENT_V_POS] \{\
-.
+.    if !\\n[nl]=\\n[#VALID_BASELINE] \{\
+.       while \\n+[#VALID_BASELINE]<\\n[#CURRENT_V_POS] .
+.       nr #SHIM \\n[#VALID_BASELINE]-\\n[#CURRENT_V_POS]
 .    \}
-.    nr #SHIM \\n[#VALID_BASELINE]-\\n[#CURRENT_V_POS]
 .END
 \#
 \# And a macro to disable SHIM
 \#
 .MAC NO_SHIM END
-.    ie '\\$1'' .nr #NO_SHIM 1
-.    el .rr #NO_SHIM
+.    ie '\\$1'' \{\
+.       nr #NO_SHIM 1
+.       nr #FLEX_ACTIVE 1
+.    \}
+.    el \{\
+.       rr #NO_SHIM
+.       rr #SHIM
+.       rr #FLEX_ACTIVE 1
+.   \}
 .END
 \#
 .nr #NO_SHIM 2 \" Restored to 1 in DEFAULTS.
 \#
 .MAC SHIM END
-.    ie \\n[#NO_SHIM] .return
-.    el \{\
-.       nr #VALID_BASELINE \\n[#T_MARGIN]-\\n[#DOC_LEAD] \\n[#DOC_LEAD]
-.       if !r#CURRENT_V_POS .nr #CURRENT_V_POS \\n[.d]
-.       ie \\n[#ADVANCE_FROM_TOP] \{\
-.          ie \\n[#CURRENT_V_POS]<(\\n[#T_MARGIN]-1v) \{\
-.             while \\n-[#VALID_BASELINE]>\\n[#CURRENT_V_POS] .
-.             nr #VALID_BASELINE +\\n[#DOC_LEAD]
-.             nr #SHIM \\n[#VALID_BASELINE]-\\n[#CURRENT_V_POS]
-.          \}
-.          el .PROCESS_SHIM
+.    if \\n[#NO_SHIM] \
+.       if !'\\$0'SHIM_1' .return
+.    if !\\n[#NO_FLEX] \{\
+.       if !'\\$0'SHIM_1' \{\
+.          tm1 "[mom]: 
+SHIM, line \\n[.c], is incompatible with flex-spacing, which is enabled.
+.          tm1 "       
+Flex-spacing must be disabled with NO_FLEX before using SHIM.
+.          ab [mom]: Aborting '\\n[.F]', line \\n[.c].
+.       \}
+.    \}
+.    nr #VALID_BASELINE \\n[#T_MARGIN]-\\n[#DOC_LEAD] \\n[#DOC_LEAD]
+.    if !r#CURRENT_V_POS .nr #CURRENT_V_POS \\n[.d]
+.    ie \\n[#ADVANCE_FROM_TOP] \{\
+.       ie \\n[#CURRENT_V_POS]<(\\n[#T_MARGIN]-1v) \{\
+.          while \\n-[#VALID_BASELINE]>\\n[#CURRENT_V_POS] .
+.          nr #VALID_BASELINE +\\n[#DOC_LEAD]
+.          nr #SHIM \\n[#VALID_BASELINE]-\\n[#CURRENT_V_POS]
 .       \}
 .       el .PROCESS_SHIM
-'       sp \\n[#SHIM]u
-.       rr #CURRENT_V_POS
+.    \}
+.    el .PROCESS_SHIM
+.    nr #SHIM_MAX \\n[#DOC_LEAD]*10/15
+.    if !\\n[#CALCULATE_ONLY] \{\
+.       if !\\n[defer-count] \
+.          if \\n[#SHIM]>\\n[#SHIM_MAX] .sp -1
+'          sp \\n[#SHIM]u
+.       \}
+.    rr #CURRENT_V_POS
+.END
+\#
+.ALIAS SHIM_1 SHIM
+\#
+\# ====================================================================
+\#
+\# +++FLEX SPACING+++
+\#
+\# INSERT FLEX SPACE
+\# -----------------
+\# *Arguments:
+\#   FORCE
+\# *Function:
+\#   Inserts flexible whitespace ("flex-space").
+\# *Notes:
+\#   FORCE restores flex-spacing if an .ns is preventing it.
+\#   Useful in conjunction with deferred floated material that
+\#   plants an .ns after outputting the last deferred float.
+\#
+.MAC FLEX END
+.    if !\\n[#NO_SHIM] \{\
+.       if \\n[#NO_FLEX] \{\
+.          tm1 "[mom]: \
+FLEX, line \\n[.c], is incompatible with shimming, which is presently enabled.
+.          tm1 "       \
+Shimming must be disabled with NO_SHIM before using FLEX.
+.          ab   [mom]: Aborting '\\n[.F]', line \\n[.c].
+.       \}
+.    \}
+.    if '\\$1'FORCE' \{\
+.       nr flex:force 1
+.       return
+.    \}
+.    if !\\n[#NO_FLEX] \{\
+.       if !\\n[.ns] \{\
+.          if !\\n[.t]<=\\n[.v] \{\
+.             nr flex-spaces +1
+.             if dflex-space:\\n[flex]@\\n[#COL_NUM] \{\
+.                sp \\*[flex-space:\\n[flex]@\\n[#COL_NUM]]
+.             \}
+.          \}
+.       \}
+.    \}
+.END
+\#
+.MAC NO_FLEX END
+.    rr flexed
+.    ie '\\$1'' \{\
+.       nr #NO_FLEX 1
+.       if \\n[#FLEX_ACTIVE] .rr #FLEX_ACTIVE
+.    \}
+.    el \
+.       if !\\n[#DOC_TYPE]=5 .rr #NO_FLEX
+.END
+\#
+\# CALCULATE FLEX SPACES
+\# ---------------------
+\# *Function:
+\#   Derives flex-space size by dividing the space remaining before
+\#   FOOTER by the number of times FLEX was used on the page/col.
+\# *Notes:
+\#   .h is reliable for determining space remaining, but can't be used
+\#   for columns because it can't be zeroed from one col to the
+\#   next.  Workaround is to use nl for columns and compensate for
+\#   .br's, .sp's, and .ne's.  Here be dragons.
+\#
+.MAC CALCULATE_FLEX END
+.    nr flex:target-pos \\n[.p]+\\n[#VARIABLE_FOOTER_POS]-1
+.    nr flex:current-pos \\n[.h]-\\n[.v]
+.    if \\n[#COLUMNS] \{\
+.       ie \\n[.trunc] \
+.          nr flex:current-pos \\n[nl]-\\n[.v]-(\\n[.trunc]-1)
+.       el .nr flex:current-pos \\n[nl]-\\n[.v]
+.       if '\\n[.ev]'tbl*end' \{\
+.          nr flex:current-pos \\n[nl]-(\\n[.trunc]-1)
+.          if \\n[tbl*boxed] .nr flex:current-pos -.65v
+.       \}
+.       ie \\n[nl-from-heading] \{\
+.          nr flex:current-pos \\n[nl-from-heading]-\\n[.v]
+.          rr nl-from-heading
+.       \}
+.       el \{\
+.          if !\\n[.pe] \{\
+.             if \\n[nl]=(\\n[.p]+(\\n[#VARIABLE_FOOTER_POS]-1)) \
+.                nr flex-spaces -1
+.          \}
+.       \}
+.    \}
+.    nr flex:space-remaining \
+        \\n[flex:target-pos]-\\n[flex:current-pos]
+.    if \\n[flex-spaces] \{\
+.       nr flex-space:\\n[flex]@\\n[#COL_NUM] \
+           \\n[flex:space-remaining]/\\n[flex-spaces]
+.       if dPDF.EXPORT \{\
+.          tm .ds flex-space:\\n[flex]@\\n[#COL_NUM] \
+              \\n[flex-space:\\n[flex]@\\n[#COL_NUM]]u
+.\" For debugging: catch edge-cases that result in negative
+.\" flex-spacing and don't apply flex to the page/column.
+.          if \\n[flex-space:\\n[flex]@\\n[#COL_NUM]]<0 \{\
+.             tm .ds flex-space:\\n[flex]@\\n[#COL_NUM] 0
+.             tm .ds Negative flex space \\n%@\\n[#COL_NUM] (\\n[flex-space:\\n[flex]@\\n[#COL_NUM]])
+.          \}
+.       \}
 .    \}
 .END
 \#
@@ -7897,10 +8479,16 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .       if !'\\$1'COVER' .nr #NEITHER 1
 .    if !'\\$1'COVER' \
 .       if !'\\$1'DOC_COVER' .nr #NEITHER 1
-.    if '\\$1'DOC_COVER' \
-.       ds $ATTRIBUTE_STRING_DOC_COVER \\$2
-.    if '\\$1'COVER' \
-.       ds $ATTRIBUTE_STRING_COVER \\$2
+.    if '\\$1'DOC_COVER' \{\
+.       ds $DOC_COVER_ATTRIBUTE_STRING \\$2
+.       if '\\*[$DOC_COVER_ATTRIBUTE_STRING]'' \
+.          ds $DOC_COVER_ATTRIBUTE_STRING \&
+.    \}
+.    if '\\$1'COVER' \{\
+.       ds $COVER_ATTRIBUTE_STRING \\$2
+.       if '\\*[$COVER_ATTRIBUTE_STRING]'' \
+.          ds $COVER_ATTRIBUTE_STRING \&
+.    \}
 .    if \\n[#NEITHER]=1 \{\
 .       ds $ATTRIBUTE_STRING \\$1
 .       rr #NEITHER
@@ -7959,11 +8547,6 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .    ds $FINIS_STRING \\$1
 .END
 \#
-.MAC FINIS_STRING_CAPS END
-.    ie '\\$1'' .nr #FINIS_STRING_CAPS 1
-.    el .nr #FINIS_STRING_CAPS 0
-.END
-\#
 \# ====================================================================
 \#
 \# +++RECTO/VERSO+++
@@ -7990,6 +8573,11 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 \# *Function:
 \#   Forces doccover and cover pages to recto
 \#
+.MAC FORCE_RECTO END
+.    ie '\\$1'' .nr #FORCE_RECTO 1
+.    el .rr #FORCE_RECTO
+.END
+\#
 .MAC RV_HARD_SET_MARGINS END
 .    DOC_LEFT_MARGIN  \\n[@L_MARGIN]u
 .    DOC_RIGHT_MARGIN \\n[@R_MARGIN]u
@@ -8220,7 +8808,7 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .    nr #EPI_DEPTH \\n[#DIVER_DEPTH]-\\n[#EPI_LEAD]
 .    nr #EPI_LINES \\n[#EPI_DEPTH]/\\n[#EPI_LEAD]
 .    ie \\n[#START] \{\
-.       RLD \\n[#SHIM]u
+.       if !\\n[#NO_SHIM] .RLD \\n[#SHIM]u
 .       nr #EPI_WHITESPACE (\\n[#DOC_LEAD]*\\n[#EPI_LINES])-\\n[#EPI_DEPTH]
 .       while \\n[#EPI_WHITESPACE]>\\n[#DOC_LEAD] \{\
 .          nr #EPI_WHITESPACE -\\n[#DOC_LEAD]
@@ -8286,18 +8874,22 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .       \}
 .    \}
 .    if \\n[#EPIGRAPH]=2 \{\
-.       ie \\n[#EPI_OFFSET_VALUE] \
+.       ie !\\n[#EPI_OFFSET_VALUE]=0 \
 .          nr #EPI_OFFSET \
 \\n[#L_MARGIN]+(\\n[#PP_INDENT]*\\n[#EPI_OFFSET_VALUE])
-.       el .nr #EPI_OFFSET \\n[#L_MARGIN]+\\*[$EPI_OFFSET_VALUE]
+.       el \
+.          if !'\\*[$EPI_OFFSET_VALUE]'' \
+.             nr #EPI_OFFSET \\n[#L_MARGIN]+\\*[$EPI_OFFSET_VALUE]
 .       if \\n[#COLUMNS] \{\
-.          ie r#EPI_OFFSET_VALUE \
+.          ie !\\n[#EPI_OFFSET_VALUE]=0 \
 .             nr #EPI_OFFSET \
 \\n[#COL_\\n[#COL_NUM]_L_MARGIN]+(\\n[#PP_INDENT]*\\n[#EPI_OFFSET_VALUE])
-.          el .nr #EPI_OFFSET \
+.          el \
+.             if !'\\*[$EPI_OFFSET_VALUE]'' \
+.                nr #EPI_OFFSET \
 \\n[#COL_\\n[#COL_NUM]_L_MARGIN]+\\*[$EPI_OFFSET_VALUE]
 .       \}
-.       po \\n[#EPI_OFFSET]u
+.       if !\\n[#EPI_OFFSET]=0 .po \\n[#EPI_OFFSET]u
 .    \}
 .    nf
 .    EPI_TEXT
@@ -8410,22 +9002,36 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .    ALD \\n[#DOC_LEAD]u
 .    CENTER
 .    if \\n[#FINIS_STRING_CAPS]=1 .CAPS
-.    if \\n[#PRINT_STYLE]=1 .PRINT "--\\*[$FINIS_STRING]--
+.    if \\n[#PRINT_STYLE]=1 \{\
+.       ie !\\n[#FINIS_NO_DASHES] .PRINT "--\\*[$FINIS_STRING]--
+.       el .PRINT "\\*[$FINIS_STRING]
+.    \}
 .    if \\n[#PRINT_STYLE]=2 \{\
-.       ie \\n[#FINIS_COLOR] \
-.          PRINT \
-\m[\\*[$FINIS_COLOR]]\v'-\\n[#EM_ADJUST]u'\[em]\v'+\\n[#EM_ADJUST]u'\
-\\*[$FINIS_STRING]\v'-\\n[#EM_ADJUST]u'\*[FU1]\[em]\m[]\c
-.       el .PRINT \
-\v'-\\n[#EM_ADJUST]u'\[em]\v'+\\n[#EM_ADJUST]u'\
-\\*[$FINIS_STRING]\v'-\\n[#EM_ADJUST]u'\*[FU1]\[em]\m[]\c
+.       if \\n[#FINIS_COLOR]=1 .COLOR \\*[$FINIS_COLOR]
+.       ie !\\n[#FINIS_NO_DASHES] .ds $FINIS_DASH \
+\v'-\\n[#EM_ADJUST]u'\[em]\v'+\\n[#EM_ADJUST]u'
+.       el .rm $FINIS_DASH
+.       PRINT \
+\\*[$FINIS_DASH]\\*[$FINIS_STRING]\\*[$FINIS_DASH]\c
 .    \}
 .    EL
+.    if \\n[#FINIS_COLOR]=1 .gcolor
 .    if \\n[#FINIS_STRING_CAPS]=1 .CAPS OFF
 .    ev
 .    pdfsync
 .END
 \#
+.MAC FINIS_STRING_CAPS END
+.    ie '\\$1'' .nr #FINIS_STRING_CAPS 1
+.    el .nr #FINIS_STRING_CAPS 0
+.END
+.
+.ALIAS FINIS_CAPS FINIS_STRING_CAPS
+\#
+.MAC FINIS_NO_DASHES END
+.    nr #FINIS_NO_DASHES 1
+.END
+\#
 \# ====================================================================
 \#
 \# +++HEADERS/FOOTERS+++
@@ -8435,14 +9041,24 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 \# not the same thing as using the shortform # in hdrftr strings.
 \#
 .ds PAGE# \En[#PAGENUMBER]
+.ALIAS SLIDE# PAGE#
 \#
 .MAC RESTORE_SPACE END
 .   vpt 0
+.   if \\n[@TOP] \{\
+.      ch RR_@TOP
+.      rr @TOP
+.   \}
+.   if \\n[#NEWPAGE] .rr #NEWPAGE
+.   if \\n[.u]=1 .nr #FILLED 1
+.   nf
 .   rs
 .   nop \&
 .   sp -1
-.   ch RR_@TOP
-.   rr @TOP
+.   if \\n[#FILLED] \{\
+.      fi
+.      rr #FILLED
+.   \}
 .   vpt
 .END
 \#
@@ -8458,14 +9074,10 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 \#
 .MAC HDRFTR_RULE_GAP END
 .    nr #HDRFTR_RULE_GAP (\\$1)
-.    if '\\$0'HEADER_RULE_GAP' \{\
+.    if '\\$0'HEADER_RULE_GAP' \
 .       nr #HEADER_RULE_GAP \\n[#HDRFTR_RULE_GAP]
-.       if r #FOOTER_RULE_GAP .nr #FOOTER_RULE_GAP \\n[#FOOTER_RULE_GAP]
-.    \}
-.    if '\\$0'FOOTER_RULE_GAP' \{\
+.    if '\\$0'FOOTER_RULE_GAP' \
 .       nr #FOOTER_RULE_GAP \\n[#HDRFTR_RULE_GAP]
-.       if r #HEADER_RULE_GAP .nr #HEADER_RULE_GAP \\n[#HEADER_RULE_GAP]
-.    \}
 .END
 \#
 \# HDRFTR LEFT
@@ -8487,7 +9099,7 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 \#
 \#   If the user wants to incorporate the page number into the string,
 \#   \*[PAGE#] must be used.  For example, if the user wants to put
-\#   an elipsis before the page number in the string, s/he should use
+\#   an ellipsis before the page number in the string, s/he should use
 \#   ...\*[PAGE#], not ...#
 \#
 .MAC HDRFTR_LEFT END
@@ -8495,23 +9107,51 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .    ds $HDRFTR_LEFT \\$1
 .END
 \#
-\# HDRFTR LEFT CAPS
-\# ----------------
+\# HDRFTR <POSITION> CAPS AND SMALLCAPS
+\# ------------------------------------
 \# *Argument:
 \#   <none> | <anything>
 \# *Function:
-\#   Turns capitalisation of $HDRFTR_LEFT (typically, the author of
-\#   the document) on or off.
+\#   Turns capitalisation of $HDRFTR_<POSITION> on or off.
 \# *Notes:
-\#   Default is on.
+\#   Default for RIGHT (ie AUTHOR) is on.
 \#
-.MAC HDRFTR_LEFT_CAPS END
-.    ie '\\$1'' .nr #HDRFTR_LEFT_CAPS 1
+.MAC CAPS_SMALLCAPS_WARNING END
+.    tm1 "[mom]: At line \\n[.c], both CAPS and SMALLCAPS have been enabled for HEADER_\\$1.
+.    tm1 "       CAPS takes precedence.
+.END
+.
+.MAC _HDRFTR_CAPS END
+.    ds $HDR_FTR \\$0
+.    substring $HDR_FTR 0 5 \" HEADER or FOOTER
+.    ds POSITION \\$0
+.    substring POSITION 7 7
+.    if '\\*[POSITION]'L' .ds POSITION LEFT
+.    if '\\*[POSITION]'C' .ds POSITION CENTER
+.    if '\\*[POSITION]'R' .ds POSITION RIGHT
+.    if \\n[#HDRFTR_\\*[POSITION]_SMALLCAPS]=1 \
+.       CAPS_SMALLCAPS_WARNING \\*[POSITION]
+.    ie '\\$1'' .nr #HDRFTR_\\*[POSITION]_CAPS 1
 .    el \{\
-.       nr #HDRFTR_LEFT_CAPS 0
-.       ds $HDRFTR_LEFT_SIZE_CHANGE +0
+.       nr #HDRFTR_\\*[POSITION]_CAPS 0
+.       ds $HDRFTR_\\*[POSITION]_SIZE_CHANGE +0
 .    \}
 .END
+.
+.MAC _HDRFTR_SMALLCAPS END
+.    ds $HDR_FTR \\$0
+.    substring $HDR_FTR 0 5 \" HEADER or FOOTER
+.    ds POSITION \\$0
+.    substring POSITION 7 7
+.    if '\\*[POSITION]'L' .ds POSITION LEFT
+.    if '\\*[POSITION]'C' .ds POSITION CENTER
+.    if '\\*[POSITION]'R' .ds POSITION RIGHT
+.    if \\n[#HDRFTR_\\*[POSITION]_CAPS]=1 \
+.       CAPS_SMALLCAPS_WARNING \\*[POSITION]
+.    ie '\\$1'' .nr #HDRFTR_\\*[POSITION]_SMALLCAPS 1
+.    el \
+.       nr #HDRFTR_\\*[POSITION]_SMALLCAPS 0
+.END
 \#
 \# HDRFTR CENTER
 \# -------------
@@ -8531,12 +9171,12 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 \#
 \#   If the user wants to incorporate the page number into the string,
 \#   \*[PAGE#] must be used.  For example, if the user wants to put
-\#   an elipsis before the page number in the string, s/he should use
+\#   an ellipsis before the page number in the string, s/he should use
 \#   ...\*[PAGE#], not ...#
 \#
 .MAC HDRFTR_CENTER END
 .    nr #USER_DEF_HDRFTR_CENTER 1
-.    if '\\$0'FOOTER_CENTER' \{\
+.    if '\\$0'HEADER_CENTER' \{\
 .       ds $HDRFTR_CENTER_OLD \\*[$HDRFTR_CENTER]
 .       ds $HDRFTR_CENTER_NEW \\$1
 .    \}
@@ -8544,11 +9184,12 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .       ds $HDRFTR_CENTER_OLD \\*[$HDRFTR_CENTER]
 .       ds $HDRFTR_CENTER_NEW \\$1
 .    \}
-.    ds $HDRFTR_CENTER \\$1
+.    ie '\\$1'TOC' .ds $TOC_HDRFTR_CENTER \\$2
+.    el .ds $HDRFTR_CENTER \\$1
 .END
 \#
-\# HDRFTR CENTER CAPS
-\# ------------------
+\# HDRFTR CENTER CAPS AND SMALLCAPS
+\# --------------------------------
 \# *Argument:
 \#   <none> | <anything>
 \# *Function:
@@ -8557,12 +9198,12 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 \# *Notes:
 \#   Default is on.
 \#
-.MAC HDRFTR_CENTER_CAPS END
-.    ie '\\$1'' .nr #HDRFTR_CENTER_CAPS 1
-.    el \{\
-.       nr #HDRFTR_CENTER_CAPS 0
-.       ds $HDRFTR_CENTER_SIZE_CHANGE +0
-.    \}
+.MAC HDRFTR_CENTER_SMALLCAPS END
+.    if \\n[#HDRFTR_CENTER_SMALLCAPS]=1 \
+.       CAPS_SMALLCAPS_WARNING CENTER
+.    ie '\\$1'' .nr #HDRFTR_CENTER_SMALLCAPS 1
+.    el \
+.       nr #HDRFTR_CENTER_SMALLCAPS 0
 .END
 \#
 \# HDRFTR CENTER PADDING
@@ -8583,12 +9224,12 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 \#   A unit of measure is required.
 \#
 .MAC HDRFTR_CENTER_PAD END
-.    if '\\$1'LEFT'  .nr #HDRFTR_CTR_PAD_LEFT (\\$2)
+.    if '\\$1'LEFT'  .nr #HDRFTR_CTR_PAD_LEFT  (\\$2)
 .    if '\\$1'RIGHT' .nr #HDRFTR_CTR_PAD_RIGHT (\\$2)
 .END
 \#
-\# SWITCH HDRFTR CENTER PADDING SIDE - support macro
-\# --------------------------------
+\# SWITCH HDRFTR CENTER PADDING SIDE (support macro)
+\# -------------------------------------------------
 \# *Argument:
 \#   <none>
 \# *Function:
@@ -8620,7 +9261,7 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 \#
 \#   If the user wants to incorporate the page number into the string,
 \#   \*[PAGE#] must be used.  For example, if the user wants to put
-\#   an elipsis before the page number in the string, s/he should use
+\#   an ellipsis before the page number in the string, s/he should use
 \#   ...\*[PAGE#], not ...#
 \#
 .MAC HDRFTR_RIGHT END
@@ -8628,8 +9269,8 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .    ds $HDRFTR_RIGHT \\$1
 .END
 \#
-\# HDRFTR RIGHT CAPS
-\# -----------------
+\# HDRFTR RIGHT CAPS AND SMALLCAPS
+\# -------------------------------
 \# *Argument:
 \#   <none> | <anything>
 \# *Function:
@@ -8638,12 +9279,12 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 \# *Notes:
 \#   Default is on.
 \#
-.MAC HDRFTR_RIGHT_CAPS END
-.    ie '\\$1'' .nr #HDRFTR_RIGHT_CAPS 1
-.    el \{\
-.       nr #HDRFTR_RIGHT_CAPS 0
-.       ds $HDRFTR_RIGHT_SIZE_CHANGE +0
-.    \}
+.MAC HDRFTR_RIGHT_SMALLCAPS END
+.    if \\n[#HDRFTR_RIGHT_SMALLCAPS]=1 \
+.       CAPS_SMALLCAPS_WARNING RIGHT
+.    ie '\\$1'' .nr #HDRFTR_RIGHT_SMALLCAPS 1
+.    el \
+.       nr #HDRFTR_RIGHT_SMALLCAPS 0
 .END
 \#
 \# HDRFTR RULE
@@ -8765,7 +9406,7 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .       el .nr #HDRFTR_RULE 0
 .    \}
 .END
-\#
+.
 .ALIAS HDRFTR_RULE_INTERNAL HDRFTR_RULE
 \#
 \# HDRFTR PLAIN
@@ -8778,20 +9419,28 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 \#   text.  Font for the header/footer becomes roman throughout.
 \#
 .MAC HDRFTR_PLAIN END
-.    HDRFTR_FAMILY        \\*[$DOC_FAM]
-.    HDRFTR_PT_SIZE       \\n[#DOC_PT_SIZE]
-.    HDRFTR_LEFT_FAMILY   \\*[$DOC_FAM]
-.    HDRFTR_LEFT_FONT     R
-.    HDRFTR_LEFT_SIZE     +0
-.    HDRFTR_LEFT_CAPS     OFF
-.    HDRFTR_CENTER_FAMILY \\*[$DOC_FAM]
-.    HDRFTR_CENTER_FONT   R
-.    HDRFTR_CENTER_SIZE   +0
-.    HDRFTR_CENTER_CAPS   OFF
-.    HDRFTR_RIGHT_FAMILY  \\*[$DOC_FAM]
-.    HDRFTR_RIGHT_FONT    R
-.    HDRFTR_RIGHT_SIZE    +0
-.    HDRFTR_RIGHT_CAPS    OFF
+.    nr #HDRFTR_PLAIN 1
+.    rm $HDRFTR_FAMILY
+.    rm #HDRFTR_PT_SIZE
+.    rm $HDRFTR_COLOR
+.    rm $HDRFTR_LEFT_FAMILY
+.    rm $HDRFTR_LEFT_FONT
+.    rm $HDRFTR_LEFT_SIZE_CHANGE
+.    rr #HDRFTR_LEFT_CAPS
+.    rr #HDRFTR_LEFT_SMALLCAPS
+.    rr #HDRFTR_LEFT_COLOR
+.    rm $HDRFTR_CENTER_FAMILY
+.    rm $HDRFTR_CENTER_FONT
+.    rm $HDRFTR_CENTER_SIZE_CHANGE
+.    rr #HDRFTR_CENTER_CAPS
+.    rr #HDRFTR_CENTER_SMALLCAPS
+.    rr #HDRFTR_CENTER_COLOR
+.    rm $HDRFTR_RIGHT_FAMILY
+.    rm $HDRFTR_RIGHT_FONT
+.    rm $HDRFTR_RIGHT_SIZE_CHANGE
+.    rr #HDRFTR_RIGHT_CAPS
+.    rr #HDRFTR_RIGHT_SMALLCAPS
+.    rr #HDRFTR_RIGHT_COLOR
 .END
 \#
 \# SWITCH HDRFTR
@@ -8833,18 +9482,16 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 \#   For use when users don't want 3-part headers/footers, but rather
 \#   want to design their own headers/footers and need different
 \#   headers/footers on recto and verso pages.  Using just
-\#   HEADER_RECTO, even when recto/verso is not on, allows users to
-\#   design their own headers/footers for doc pages.
+\#   HEADER_RECTO or FOOTER_RECTO, even when recto/verso is not on,
+\#   allows users to design their own headers/footers for doc pages.
 \#
 .MAC HDRFTR_RECTO END
 .    nr #USERDEF_HDRFTR 1
-.    if '\\$1'L'      .nr #USERDEF_HDRFTR_RECTO_QUAD 1
-.    if '\\$1'LEFT'   .nr #USERDEF_HDRFTR_RECTO_QUAD 1
-.    if '\\$1'C'      .nr #USERDEF_HDRFTR_RECTO_QUAD 2
-.    if '\\$1'CENTER' .nr #USERDEF_HDRFTR_RECTO_QUAD 2
-.    if '\\$1'CENTRE' .nr #USERDEF_HDRFTR_RECTO_QUAD 2
-.    if '\\$1'R'      .nr #USERDEF_HDRFTR_RECTO_QUAD 3
-.    if '\\$1'RIGHT'  .nr #USERDEF_HDRFTR_RECTO_QUAD 3
+.    ds $QUAD_TYPE \\$1
+.    substring $QUAD-TYPE 0 0
+.    if '\\*[$QUAD_TYPE]'L' .nr #USERDEF_HDRFTR_RECTO_QUAD 1
+.    if '\\*[$QUAD_TYPE]'C' .nr #USERDEF_HDRFTR_RECTO_QUAD 2
+.    if '\\*[$QUAD_TYPE]'R' .nr #USERDEF_HDRFTR_RECTO_QUAD 3
 .    shift
 .    ie '\\$1'CAPS' \{\
 .       nr #HDRFTR_RECTO_CAPS 1
@@ -8867,13 +9514,11 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 \#
 .MAC HDRFTR_VERSO END
 .    nr #USERDEF_HDRFTR 1
-.    if '\\$1'L'      .nr #USERDEF_HDRFTR_VERSO_QUAD 1
-.    if '\\$1'LEFT'   .nr #USERDEF_HDRFTR_VERSO_QUAD 1
-.    if '\\$1'C'      .nr #USERDEF_HDRFTR_VERSO_QUAD 2
-.    if '\\$1'CENTER' .nr #USERDEF_HDRFTR_VERSO_QUAD 2
-.    if '\\$1'CENTRE' .nr #USERDEF_HDRFTR_VERSO_QUAD 2
-.    if '\\$1'R'      .nr #USERDEF_HDRFTR_VERSO_QUAD 3
-.    if '\\$1'RIGHT'  .nr #USERDEF_HDRFTR_VERSO_QUAD 3
+.    ds $QUAD_TYPE \\$1
+.    substring $QUAD-TYPE 0 0
+.    if '\\*[$QUAD_TYPE]'L'     .nr #USERDEF_HDRFTR_VERSO_QUAD 1
+.    if '\\*[$QUAD_TYPE]\\$1'C' .nr #USERDEF_HDRFTR_VERSO_QUAD 2
+.    if '\\*[$QUAD_TYPE]\\$1'R' .nr #USERDEF_HDRFTR_VERSO_QUAD 3
 .    shift
 .    ie '\\$1'CAPS' \{\
 .       nr #HDRFTR_VERSO_CAPS 1
@@ -8928,11 +9573,15 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .    if \\n[#FOOTERS_ON] \{\
 .       if \\n[#START_FOR_FOOTERS] \{\
 .          rr #START_FOR_FOOTERS
+.          if \\n[#DOC_TYPE]=5 \{\
+.             if !\\n[#HDRFTR_BOTH] .PRINT_USERDEF_HDRFTR
+.             return
+.          \}
 .          if !\\n[#PRINT_FOOTER_ON_PAGE_1] \{\
 .             ie !\\n[#HDRFTR_BOTH] .return
 .             el \{\
 .                rr #FOOTERS_ON
-.                nr #HEADERS_ON 1
+.                if !\\n[#COLLATE] .nr #HEADERS_ON 1
 .                ie \\n[#HEADER_RULE]=1 .HEADER_RULE
 .                el .HEADER_RULE OFF
 .                ie \\n[#HDRFTR_BOTH] .HEADER_VERSO \\*[$HDR_VERSO_QUAD] "\\*[$HDR_VERSO_STRING]"
@@ -8955,6 +9604,8 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .       ds $HDRFTR_RIGHT_SIZE_CHANGE      \\*[$HDRFTR_TMP_SIZE_CHANGE_SWITCH]
 .       nr #HDRFTR_TMP_CAPS_SWITCH        \\n[#HDRFTR_LEFT_CAPS]
 .       nr #HDRFTR_LEFT_CAPS              \\n[#HDRFTR_RIGHT_CAPS]
+.       nr #HDRFTR_TMP_SMALLCAPS_SWITCH   \\n[#HDRFTR_LEFT_SMALLCAPS]
+.       nr #HDRFTR_LEFT_SMALLCAPS         \\n[#HDRFTR_RIGHT_SMALLCAPS]
 .       nr #HDRFTR_RIGHT_CAPS             \\n[#HDRFTR_TMP_CAPS_SWITCH]
 .       ds $HDRFTR_TMP_COLOR_SWITCH       \\*[$HDRFTR_LEFT_COLOR]
 .       ds $HDRFTR_LEFT_COLOR             \\*[$HDRFTR_RIGHT_COLOR]
@@ -8976,14 +9627,14 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .       \}
 .       if o .RIGHT
 .       if e .LEFT
-.       if \\n[#RECTO_VERSO]=0    .LEFT
+.       if \\n[#RECTO_VERSO]=0 .LEFT
 .       if \\n[#HDRFTR_LEFT_CAPS] .CAPS
 .       ie '\\*[$HDRFTR_LEFT]'#' .PRINT \\n[#PAGENUMBER]
 .       el \{\
 .          ie !'\\*[$HDRFTR_LEFT]'' .PRINT \\*[$HDRFTR_LEFT]
 .          el .PRINT \&
 .       \}
-.       if \\n[#HDRFTR_LEFT_CAPS]   .CAPS OFF
+.       if \\n[#HDRFTR_LEFT_CAPS] .CAPS OFF
 .       CENTER
 .       if \\n[#HDRFTR_CENTER_CAPS] .CAPS
 .       rt \\n[y]u
@@ -8997,7 +9648,7 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .       if \\n[#HDRFTR_CENTER_CAPS] .CAPS OFF
 .       if o .LEFT
 .       if e .RIGHT
-.       if \\n[#RECTO_VERSO]=0     .RIGHT
+.       if \\n[#RECTO_VERSO]=0 .RIGHT
 .       if \\n[#HDRFTR_RIGHT_CAPS] .CAPS
 .       rt \\n[y]u
 .       ie '\\*[$HDRFTR_RIGHT]'#' .PRINT \\n[#PAGENUMBER]
@@ -9024,6 +9675,7 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .       if o .LEFT
 .       if e .RIGHT
 .       if \\n[#RECTO_VERSO]=0 .LEFT
+.       if \\n[#HDRFTR_LEFT_SMALLCAPS] .SMALLCAPS
 .       if \\n[#HDRFTR_LEFT_CAPS] .CAPS
 .       ie '\\*[$HDRFTR_LEFT]'#' \{\
 .          ie \\n[#HDRFTR_LEFT_COLOR]=1 \
@@ -9041,6 +9693,7 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .          el .nop \&
 .       \}
 .       if \\n[#HDRFTR_LEFT_CAPS] .CAPS OFF
+.       if \\n[#HDRFTR_LEFT_SMALLCAPS] .SMALLCAPS OFF
 .       fam     \\*[$HDRFTR_CENTER_FAM]
 .       ft      \\*[$HDRFTR_CENTER_FT]
 .       ps      \\n[#HDRFTR_PT_SIZE]u\\*[$HDRFTR_CENTER_SIZE_CHANGE]
@@ -9051,6 +9704,7 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .          di
 .       \}
 .       CENTER
+.       if \\n[#HDRFTR_CENTER_SMALLCAPS] .SMALLCAPS
 .       if \\n[#HDRFTR_CENTER_CAPS] .CAPS
 .       rt \\n[y]u
 .       ie '\\*[$HDRFTR_CENTER]'#' \{\
@@ -9071,6 +9725,7 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .          el .PRINT \&
 .       \}
 .       if \\n[#HDRFTR_CENTER_CAPS] .CAPS OFF
+.       if \\n[#HDRFTR_CENTER_SMALLCAPS] .SMALLCAPS OFF
 .       fam \\*[$HDRFTR_RIGHT_FAM]
 .       ft  \\*[$HDRFTR_RIGHT_FT]
 .       ps  \\n[#HDRFTR_PT_SIZE]u\\*[$HDRFTR_RIGHT_SIZE_CHANGE]
@@ -9083,6 +9738,7 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .       if o .RIGHT
 .       if e .LEFT
 .       if \\n[#RECTO_VERSO]=0 .RIGHT
+.       if \\n[#HDRFTR_RIGHT_SMALLCAPS] .SMALLCAPS
 .       if \\n[#HDRFTR_RIGHT_CAPS] .CAPS
 .       rt \\n[y]u
 .       ie '\\*[$HDRFTR_RIGHT]'#' \{\
@@ -9101,6 +9757,7 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .          el .PRINT \&
 .       \}
 .       if \\n[#HDRFTR_RIGHT_CAPS] .CAPS OFF
+.       if \\n[#HDRFTR_RIGHT_SMALLCAPS] .SMALLCAPS OFF
 .    \}
 .    if \\n[#HDRFTR_RULE] .HDRFTR_RULE_INTERNAL
 .    br
@@ -9189,7 +9846,7 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .       if \\n[#USERDEF_HDRFTR_RECTO_QUAD]=3 .RIGHT
 .       if \\n[#HDRFTR_RECTO_CAPS]=1 .CAPS
 .       if '\\n[.ev]'FOOTER' .vs 0
-.       PRINT \\*[$USERDEF_HDRFTR_RECTO]
+.       if !r #SKIP .PRINT \\*[$USERDEF_HDRFTR_RECTO]
 .       if '\\n[.ev]'FOOTER' .vs
 .       if \\n[#HDRFTR_RECTO_CAPS]=1 .CAPS OFF
 .       EOL
@@ -9205,9 +9862,8 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .       ie \\n[#HDRFTR_COLOR]=1 \m[\\*[$HDRFTR_COLOR]]
 .       el \m[black]
 .    \}
-.    if \\n[#HDRFTR_RULE] \{\
+.    if \\n[#HDRFTR_RULE] \
 .       HDRFTR_RULE_INTERNAL
-.    \}
 .END
 \#
 \# +++HEADERS+++
@@ -9260,19 +9916,24 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 \# *Arguments:
 \#   <none>
 \# *Function:
-\#   Prints header appropriate to DOC_TYPE, PRINTSTYLE, and COPYSTYLE.
-\# *Notes:
-\#   In order to convert the title string to caps in the header
-\#   (in the event that the user enters .TITLE in caps/lc), I've
-\#   used quad left, quad centre, and quad right to arrange the
-\#   three bits of the header, rather than .tl.  This allows the
-\#   use of the CAPS macro.  The downside is that I have to add
-\#   \\v'-(\\n[#LEAD]u*<n>) in order for -Tlatin1 output to align
-\#   the header/footer strings on the baseline.  The console output
-\#   still isn't brilliant, but at least it's comprehensible.
+\#   Resets margin notes, processes footnote and margin note
+\#   leftover, takes care of recto-verso, prepares for columns after
+\#   first, determines whether to flex-space the page,,outputs
+\#   deferred floats, and does some tbl magic.  If headers are
+\#   enabled, prints header appropriate to DOC_TYPE, PRINTSTYLE, and
+\#   COPYSTYLE.
 \#
 .MAC HEADER END
 .    vpt 0
+.    if \\n[#DOC_TYPE]=5 \{\
+.       if \\n[#SLIDE_FOOTERS] \{\
+.          PRINT_FOOTER
+.       if \\n[#HDRFTR_BOTH] \
+.          HEADER_RECTO \\*[$HDR_RECTO_QUAD] "\\*[$HDR_RECTO_STRING]"
+.       \}
+.    \}
+.    nr flex-spaces 0
+.    nr flex +1
 .    if \\n[#NEW_DOC_PT_SIZE] .nr #DOC_PT_SIZE \\n[#NEW_DOC_PT_SIZE]
 .    rr #NEW_DOC_PT_SIZE
 .    if \\n[#RESET_TRAPS] \{\
@@ -9288,8 +9949,10 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .    if \\n[#FN_DEPTH] .PROCESS_FN_LEFTOVER
 .    rr #RULED
 .    if \\n[#RESET_FN_NUMBER] .nr #FN_NUMBER 0 1
+.    if !\\n[#DIVERTED] .rr #PREV_FN_DEFERRED
 .    po \\n[#DOC_L_MARGIN]u
 .    if \\n[#RECTO_VERSO] \{\
+.       if !\\n[#TOC_RV_SWITCH]=2 \{\
 .          nr #DOC_LR_MARGIN_TMP \\n[#DOC_L_MARGIN]
 .          DOC_LEFT_MARGIN  \\n[#DOC_R_MARGIN]u
 .          if \\n[#CROPS] .DOC_LEFT_MARGIN  \\n[#DOC_R_MARGIN]u+\\n[cropmarks]u
@@ -9321,7 +9984,7 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .    \}
 .    if \\n[#PRINT_STYLE]=1 \{\
 .       if \\n[#ENDNOTES]=1 \{\
-.\" Single-spaced endotes have a different lead
+.\" Single-spaced endnotes have a different lead
 .          if \\n[#EN_SINGLESPACE] \{\
 .             nr #RESTORE_DOC_LEAD \\n[#DOC_LEAD]
 .             nr #DOC_LEAD \\n[#EN_LEAD]u
@@ -9330,11 +9993,24 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .    \}
 .    if !n .nop \X'ps: exec 0 setlinejoin'\X'ps: exec 0 setlinecap'
 .    sp -1v
+.    if \\n[#DOC_TYPE]=5 \{\
+.       if \\n[#SLIDE_HEADERS] \{\
+.          HEADERS
+.          if \\n[#SLIDE_FOOTERS] \{\
+.             FOOTERS off
+.\" So rule prints after header on first page
+.             if !r #SKIP_RULE \{\
+.                sp
+.                if \\n[#HEADER_RULE] .HEADER_RULE
+.                nr #SKIP_RULE 1
+.             \}
+.          \}
+.       \}
+.    \}
 .    ie \\n[#HEADERS_ON] .PRINT_HDRFTR
 .    el \{\
-.       if \\n[#PAGE_NUM_V_POS]=1 \{\
+.       if \\n[#PAGE_NUM_V_POS]=1 \
 .          if \\n[#PAGINATE] .PRINT_PAGE_NUMBER
-.       \}
 .    \}
 .    sp |\\n[#T_MARGIN]u-\\n[#DOC_LEAD]u
 .    if \\n[#PRINT_STYLE]=1 \{\
@@ -9364,6 +10040,18 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .       \}
 .       if \\n[#PRINT_STYLE]=2 .sp \\n[#Q_LEAD_DIFF]u
 .    \}
+.    if \\n[#IN_LIST] \
+.       po +\\n[#LIST_OFFSET_VALUE]u
+.    if \\n[#RESET_FN_COUNTERS]=1 \{\
+.       rr #RESET_FN_COUNTERS
+.       PROCESS_FN_IN_DIVER
+.       nr #FN_COUNT \\n[#SAVED_FN_COUNT] 1
+.       if \\n[#COLUMNS]=1 .nr #FN_COUNT_FOR_COLS \\n[#SAVED_FN_COUNT_FOR_COLS] 1
+.       ie \\n[#RESET_FN_NUMBER]=1 .nr #FN_NUMBER \\n[#SAVED_FN_NUMBER] 1
+.       el .nr #FN_NUMBER \\n[#FN_NUMBER] 1
+.       rm FN_IN_DIVER
+.       if dRUNON_FN_IN_DIVER .rm RUNON_FN_IN_DIVER
+.    \}
 .    if \\n[#EPIGRAPH] \{\
 .       ie \\n[#TAB_ACTIVE] .TAB \\n[#CURRENT_TAB]
 .       el \{\
@@ -9398,10 +10086,10 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .       ll \\n[#COL_L_LENGTH]u
 .       ta \\n[.l]u
 .       if \\n[#QUOTE] \{\
-.          ie \\n[#Q_OFFSET_VALUE] \
-.             po +(\\n[#PP_INDENT]u*\\n[#Q_OFFSET_VALUE]u)
+.          ie \\n[#\\*[BQ]_OFFSET_VALUE] \
+.             po +(\\n[#PP_INDENT]u*\\n[#\\*[BQ]_OFFSET_VALUE]u)
 .          el \
-.             po +\\*[$Q_OFFSET_VALUE]
+.             po +\\*[$\\*[BQ]_OFFSET_VALUE]
 .       \}
 .       if \\n[#EPIGRAPH] \{\
 .          if \\n[#EPI_ACTIVE] \{\
@@ -9415,16 +10103,6 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .          el .po \\n[#COL_\\n[#COL_NUM]_L_MARGIN]u+\\*[$EPI_OFFSET_VALUE]
 .       \}
 .    \}
-.    if \\n[#RESET_FN_COUNTERS]=1 \{\
-.       rr #RESET_FN_COUNTERS
-.       PROCESS_FN_IN_DIVER
-.       nr #FN_COUNT \\n[#SAVED_FN_COUNT] 1
-.       if \\n[#COLUMNS]=1 .nr #FN_COUNT_FOR_COLS \\n[#SAVED_FN_COUNT_FOR_COLS] 1
-.       ie \\n[#RESET_FN_NUMBER]=1 .nr #FN_NUMBER \\n[#SAVED_FN_NUMBER] 1
-.       el .nr #FN_NUMBER \\n[#FN_NUMBER] 1
-.       rm FN_IN_DIVER
-.       if dRUNON_FN_IN_DIVER .rm RUNON_FN_IN_DIVER
-.    \}
 .    rr #FROM_HEADER
 .    rr #DEFER_SPACE_ADDED
 .    if !\\n[#FN_DEPTH] .if r #DIVERTED .rr #DIVERTED
@@ -9463,12 +10141,42 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .    ch RR_@TOP
 .    ie \\n[tbl*have-header] .rr @TOP
 .    el .wh \\n[nl]u+1u RR_@TOP
+.    if \\n[#FLEX_ACTIVE] \{\
+.       if \\n[#RESTORE_FLEX] \{\
+.          rr #NO_FLEX
+.          rr #RESTORE_FLEX
+.       \}
+.       if \\n[#RESTORE_COL_FLEX] \{\
+.          rr #NO_FLEX
+.          rr #RESTORE_COL_FLEX
+.       \}
+.    \}
+.\" Don't flex the last page/col, or the page/col before a COLLATE,
+.\" NEWPAGE, COL_NEXT, or BLANKPAGE.
+.    if !dPDF.EXPORT \{\
+.       if \\n[#FLEX_ACTIVE] \
+.          if !\\n[#NO_FLEX] \
+.             nr #RESTORE_FLEX 1
+.       if '\\*[last-page]'\\n%@\\n[#COL_NUM]' \
+.          if !\\n[#NO_FLEX] .nr #NO_FLEX 1
+.       if '\\*[pre-collate-\\n%]'\\n%@\\n[#COL_NUM]' \
+.          if !\\n[#NO_FLEX] .nr #NO_FLEX 1
+.       if '\\*[pre-newpage-\\n%]'\\n%@\\n[#COL_NUM]' \
+.          if !\\n[#NO_FLEX] .nr #NO_FLEX 1
+.       if d page-\\n%@\\n[#COL_NUM] .nr #NO_FLEX 1
+.    \}
 .    ie \\n[defer] .PROCESS_FLOATS
 .    el \{\
-.       if \\n[tbl*have-caption] \{\
-.          RESTORE_SPACE
-.          ie \\n[#MLA] .sp \n[tbl*label-lead-diff]u
-.          el .sp \n[tbl*caption-lead-diff]u
+.\" These two sets of conditions only occur if the .br in .TS causes
+.\" a page break.
+.       if !\\n[doing-tbl] \{\
+.          if (\\n[tbl*have-caption]=1)&(\\n[tbl*caption-after-label]=0) \{\
+.             RESTORE_SPACE
+.             if !\\n[span] \{\
+.                ie \\n[#MLA] .sp \\n[tbl*label-lead-diff]u
+.                el .sp \\n[tbl*caption-lead-diff]u
+.             \}
+.          \}
 .       \}
 .    \}
 .\" So tables without TH that don't fit don't overprint first row
@@ -9478,15 +10186,25 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .       nop \&
 .       vpt
 .       rr \\n[tbl*no-header]
-.       SHIM
+.       SHIM_1
 .    \}
 .    el .vpt
-.    if \\n[#NEWPAGE] .rr #NEWPAGE
-.    ie \\n[tbl*interrupted] \{\
-.       tbl*print-header
-.       rr tbl*interrupted
-.      \}
-.    el .tbl@top-hook
+.    if \\n[span] \{\
+.       ev FLOAT
+.       if \\n[#INDENT_LEFT_ACTIVE] .in \\n[#L_INDENT]u/2u
+.       nf
+.       RESTORE_SPACE
+.       if !\\n[tbl*no-top-hook] \
+.          if \\n[tbl*have-header:1] .tbl*print-header
+.       ch FOOTER \\n[#VARIABLE_FOOTER_POS]u
+.       ch FN_OVERFLOW_TRAP -\\n[#FN_OVERFLOW_TRAP_POS]u
+.    \}
+.    if !\\n[begin-tbl] \
+.       if !r tbl*no-top-hook .tbl@top-hook
+.    rr tbl*no-top-hook
+.    if r flex:force .rr flex:force
+.    rr ref*last
+.    if !\\n[float*defer] .ev 0
 .END
 \#
 \# ====================================================================
@@ -9550,18 +10268,27 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 \# *Arguments:
 \#   <none>
 \# *Function:
-\#   Places footer at bottom of page if #FOOTERS=1, otherwise
-\#   places page number at bottom of page (if #PAGINATE=1).
-\#   Page numbers are in arabic or roman according to COPYSTYLE.
-\#   DRAFT starts the document at page 1 regardless of PAGENUMBER.
-\#   FINAL respects PAGENUMBER.
+\#   Gathers strings for flex-spacing, processes margin notes and
+\#   footnotes, prepares for move to next column or page.  Places
+\#   footer at bottom of page if #FOOTERS=1, otherwise places page
+\#   number at bottom of page (if #PAGINATE=1).  Page numbers are
+\#   in arabic or roman according to COPYSTYLE.  DRAFT starts the
+\#   document at page 1 regardless of PAGENUMBER.  FINAL respects
+\#   PAGENUMBER.
 \#
 .MAC FOOTER END
+.    if r #START .rr #START
+.    CALCULATE_FLEX
+.    if \\n[#DOING_COVERTEXT] \{\
+.       tm1 "[mom]: COVERTEXT exceeds cover page depth.
+.       ab   [mom]: Aborting '\\n[.F]'.
+.    \}
 .    vpt 0
 .    rr #LB_4_HD
 .    rr #QUOTE_4_HD
 .    nr #SAVED_LEAD \\n[.v]
-.    ev PAGE_TRANSITION
+.    if !r pg-trans .nr pg-trans 0 1
+.    ev PAGE_TRANSITION\\n+[pg-trans]
 .    pdfmarksuspend
 .    ie !n .nop \X'ps: exec decornone'
 .    el .ul 0
@@ -9579,8 +10306,7 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .       \}
 .    \}
 .    if \\n[MN-right]>0 \{\
-.       if (\\n[MN-right] > 0) \
-.          if !\\n[#no-repeat-MN-right]=1 .MNbottom-right
+.       if !\\n[#no-repeat-MN-right]=1 .MNbottom-right
 .       if '\\n[.z]'MN_OVERFLOW_RIGHT' \{\
 .          di
 .          nr #MN_OVERFLOW_RIGHT 1
@@ -9599,7 +10325,7 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .          vpt 0
 .          sp \
 |\\n[#PAGE_LENGTH]u-(\\n[#B_MARGIN]u+\\n[#FN_DEPTH]u-\\n[#DOC_LEAD]u)
-.          vpt 1
+.          vpt
 .          po \\n[#DOC_L_MARGIN]u
 .          if \\n[#COLUMNS] \{\
 .             po \\n[#COL_\\n[#COL_NUM]_L_MARGIN]u
@@ -9607,14 +10333,15 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .             nr #FROM_FOOTER 1
 .          \}
 .          nf
+.          ch FN_OVERFLOW_TRAP -\\n[#FN_OVERFLOW_TRAP_POS]u
 .          FOOTNOTES
 .          rm FOOTNOTES
-.          if d RUNON_FOOTNOTES    .rm RUNON_FOOTNOTES
+.          if d RUNON_FOOTNOTES   .rm RUNON_FOOTNOTES
 .          if \\n[#PRINT_STYLE]=1 .vs \\n[#SAVED_LEAD]u
-.          if \\n[#PRINT_STYLE]=2 .LS \\n[#SAVED_LEAD]u
+.          if \\n[#PRINT_STYLE]=2 .vs \\n[#SAVED_LEAD]u
 .          if '\\n[.z]'FN_OVERFLOW' \{\
-.              di
-.              nr #FN_OVERFLOW_DEPTH \\n[#DIVER_DEPTH]
+.             di
+.             nr #FN_OVERFLOW_DEPTH \\n[#DIVER_DEPTH]
 .          \}
 .          nr #FN_COUNT_AT_FOOTER \\n[#FN_COUNT]
 .          nr #FN_COUNT 0
@@ -9627,7 +10354,7 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .    \}
 .    nr @TOP 1
 .    ie \\n[#COLUMNS]=1 \{\
-.       ie \\n[#COL_NUM]=\\n[#NUM_COLS] .DO_FOOTER
+.       ie (\\n[#COL_NUM]=\\n[#NUM_COLS]):(\\n[#NEWPAGE]=1) .DO_FOOTER
 .       el \{\
 .          ie (\\n[#ENDNOTES]=1):(\\n[#BIBLIOGRAPHY]=1) \{\
 .             if \\n[#ENDNOTES] .sp |\\n[ec]u-\\n[#EN_LEAD]u
@@ -9635,9 +10362,32 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .          \}
 .          el \{\
 .            vs \\n[#SAVED_LEAD]u
-.            sp |\\n[dc]u
+.            rt \\n[dc]u
+.            nr flex-spaces 0
+.          \}
+.          if d page-\\n%@\\n[#COL_NUM] \{\
+.             rr #NO_FLEX
+.             rr #RESTORE_COL_FLEX
 .          \}
 .          po \\n[#COL_\\n+[#COL_NUM]_L_MARGIN]u
+.          if !dPDF.EXPORT \{\
+.             if \\n[#FLEX_ACTIVE] \{\
+.                if !\\n[#NO_FLEX] \{\
+.                   if '\\*[last-page]'\\n%@\\n[#COL_NUM]' \
+.                       nr #NO_FLEX 1
+.                   if '\\*[pre-collate]'\\n%@\\n[#COL_NUM]' \
+.                       nr #NO_FLEX 1
+.                   if '\\*[pre-newpage-\\n%]'\\n%@\\n[#COL_NUM]' \{\
+.                      nr #NO_FLEX 1
+.                      nr #RESTORE_FLEX 1
+.                   \}
+.                   if d page-\\n%@\\n[#COL_NUM] \{\
+.                      nr #NO_FLEX 1
+.                      nr #RESTORE_COL_FLEX 1
+.                   \}
+.                \}
+.             \}
+.          \}
 .          nr #L_MARGIN \\n[.o]
 .          if \\n[#FN_DEPTH] .PROCESS_FN_LEFTOVER
 .          vs \\n[#SAVED_LEAD]u
@@ -9689,6 +10439,12 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .                po \\n[#EPI_OFFSET]u
 .             \}
 .          \}
+.          ie \\n[tbl*interrupted] \{\
+.             tbl*print-header
+.             rr tbl*interrupted
+.            \}
+.          el .if !r tbl*no-top-hook .tbl@top-hook
+.          rr tbl*no-top-hook
 .          ie \\n[#EPIGRAPH] \{\
 .             ie !\\n[#EPI_ACTIVE] \{\
 .                ns
@@ -9713,9 +10469,10 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .          nop \&
 .          vpt
 .          rr \\n[tbl*no-header]
-.          SHIM
+.          SHIM_1
 .       \}
 .       el .vpt
+.       if '\\n[.ev]'caption' .rs
 .       if \\n[tbl*interrupted] .tbl*print-header
 .       rr tbl*interrupted
 .    \}
@@ -9740,36 +10497,28 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .          nr ref*last 1
 .       \}
 .    \}
-.    PRINT_FOOTER
+.    ie !\\n[#DOC_TYPE]=5 .PRINT_FOOTER
+.    el .vpt
 .    if !\\n[ref*last] \{\
 .       ie \\n[defer]>0 \{\
 \c
-'       bp
+'          bp
 .       \}
 .       el 'bp
 .    \}
-.    if !'\\n[.ev]'0' .ev
-.    rr ref*last
-.    po \" Ensure reset to last value
 .END
 \#
 .MAC PRINT_FOOTER END
-.   br
-.\" Have to change position of FN_OVERFLOW_TRAP or it screws up the
-.\" placement of page numbers (or footers).  It's reset to its original
-.\" position at the end of the macro.
 .    if r #SAVED_FOOTER_POS .ch FOOTER \\n[#SAVED_FOOTER_POS]u
 .    rr #SAVED_FOOTER_POS
-.    ie (\\n[#FOOTER_MARGIN]+\\n[.v]>\\n[#B_MARGIN]) .nr #SKIP_FOOTER 1
-.    el \{\
-.       ev FOOTER
-.       vpt 0
-.       ie n \
-.          sp |\\n[#PAGE_LENGTH]u-\\n[#FOOTER_MARGIN]u
-.       el \
-.          sp |\\n[#PAGE_LENGTH]u-\\n[#FOOTER_MARGIN]u-\\n[#FOOTER_ADJ]u
-.       mk y
-.    \}
+.    vpt 0
+.    sp -1
+.    ev FOOTER
+.    ie n \
+.       sp |\\n[#PAGE_LENGTH]u-\\n[#FOOTER_MARGIN]u
+.    el \
+.       sp |\\n[#PAGE_LENGTH]u-\\n[#FOOTER_MARGIN]u-\\n[#FOOTER_ADJ]u
+.    mk y
 .    UNDERLINE OFF
 .    po \\n[#DOC_L_MARGIN]u
 .    ll \\n[#DOC_L_LENGTH]u
@@ -9777,7 +10526,7 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .    if \\n[#PRINT_STYLE]=1 .TYPEWRITER
 .    if \\n[#PRINT_STYLE]=2 \{\
 .       fam  \\*[$HDRFTR_FAM]
-.       ft      R
+.       ft   R
 .       ps \\n[#DOC_PT_SIZE]u\\*[$HDRFTR_SIZE_CHANGE]
 .    \}
 .    nr #HDRFTR_PT_SIZE \\n[#PT_SIZE]
@@ -9786,12 +10535,15 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .       CAPS OFF
 .    \}
 .    ie \\n[#FOOTERS_ON] \{\
-.       if !\\n[#SKIP_FOOTER]=1 .PRINT_HDRFTR
+.       if !\\n[#SKIP_FOOTER]>0 .PRINT_HDRFTR
+.       if \\n[#HDRFTR_BOTH] \
+.          HEADER_RECTO \\*[$HDR_RECTO_QUAD] "\\*[$HDR_RECTO_STRING]"
+.       if \\n[#DOC_TYPE]=5 .FOOTERS
 .    \}
 .    el \{\
 .       if \\n[#PAGINATE] \{\
 .          if \\n[#PAGE_NUM_V_POS]=2 \
-.             if !\\n[#SKIP_FOOTER]=1 .PRINT_PAGE_NUMBER
+.             if !\\n[#SKIP_FOOTER]>0 .PRINT_PAGE_NUMBER
 .       \}
 .    \}
 .    rr #SKIP_FOOTER
@@ -9800,7 +10552,7 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .       rr #CAPS_WAS_ON
 .    \}
 .    ev
-.    vpt 1
+.    vpt
 .END
 \#
 \# ====================================================================
@@ -9850,8 +10602,8 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .    ds $FTR_VERSO_STRING \\$8
 .am START DONE
 .   if \\\\n[#HDRFTR_BOTH]=1 \{\
-.      FOOTER_RECTO \\*[$FTR_RECTO_QUAD] "\\*[$FTR_RECTO_STRING]"
-.      FOOTER_VERSO \\*[$FTR_VERSO_QUAD] "\\*[$FTR_VERSO_STRING]"
+.      FOOTER_RECTO \\\\*[$FTR_RECTO_QUAD] "\\\\*[$FTR_RECTO_STRING]"
+.      FOOTER_VERSO \\\\*[$FTR_VERSO_QUAD] "\\\\*[$FTR_VERSO_STRING]"
 .      if \\\\n[#HEADER_RULE]=1 .HEADER_RULE
 .      ie \\\\n[#FOOTER_RULE]=1 .FOOTER_RULE
 .      el .FOOTER_RULE OFF
@@ -9908,7 +10660,7 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 \#
 \# ====================================================================
 \#
-\# +++HEADS+++
+\# +++HEADINGS+++
 \#
 .char \[hd-num-spacer]     \0
 .char \[parahead-spacer]   \~\~
@@ -9929,9 +10681,11 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 \#   If PARAHEAD given, HEADING must come after PP.
 \#
 .MAC HEADING END
+'    br
+.    if \\n[@TOP] .br
 .    if !\B'\\$1' \{\
 .       tm1 "[mom]: The first argument to \\$0 must be a numeric heading level.
-.       ab Aborting '\\n[.F]' at \\$0, line \\n[.c].
+.       ab   [mom]: Aborting '\\n[.F]' at \\$0, line \\n[.c].
 .    \}
 .    if r #QUOTE     .rr #QUOTE
 .    if r #END_QUOTE .rr #END_QUOTE
@@ -9940,7 +10694,7 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .    if \\$1<\\n[#LEVEL] \
 .       nr #ACTIVE_LEVELS \\n[#LEVEL] \" loop count for resetting numbering registers
 .    nr #LAST_LEVEL \\n[#LEVEL]       \" used during TOC collection, if SPACE_TOC_ITEMS
-.    nr #LEVEL \\$1                   \" reset #LEVEL to arg
+.    nr #LEVEL \\$1                   \" resets #LEVEL to arg
 .    shift
 .    nr #ARG_NUM 0 1
 .    while \\n+[#ARG_NUM]<=2 \{\
@@ -9954,19 +10708,25 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .      \}
 .    \}
 .\" Spacing
-.    if \\n[#Q_LEAD_DIFF_CHECK] .sp -1v
-.    ie \\n[#PARAHEAD] 'br
-.    el .br
+.    if \\n[#Q_LEAD_DIFF_CHECK] .sp -1
+.    if \\n[.t]<\\n[.v] .nr nl-from-heading \\n[nl]
 .    ie !\\n[#PARAHEAD] \{\
 .       if !\\n[@TOP] \{\
 .          nr #HEAD 1
-.          ie \\n[#HEAD_\\n[#LEVEL]_SPACE_AFTER] .ne \\n[#NUM_ARGS]+2
-.          el .ne \\n[#NUM_ARGS]+1
-.          vpt 0
-.          ie !\\n[#START] \
+.          ie !\\n[#START] \{\
+.             nr #HEADING_NEEDS \\n[#NUM_ARGS]v+\\*[$HEAD_\\n[#LEVEL]_NEEDS]v+1v
+.             if \\n[#HEAD_\\n[#LEVEL]_SPACE_AFTER] .nr #HEADING_NEEDS +1v
+.             if \\n[.t]<\\n[#HEADING_NEEDS] .sp \\n[.t]u
+.             vpt 0
 .             if !\\n[#SPACE_ADDED] .if !\\n[#LINEBREAK] .sp
+.          \}
 .          el \{\
-.             ie !\\n[#PP] .rr #START
+.             ie !\\n[#PP] \{\
+.                rr #START
+.                RESTORE_SPACE
+.                if !\\n[#SPACE_ADDED] \
+.                   if !\\n[#COLUMNS] .sp
+.             \}
 .             el .sp
 .          \}
 .          if \\n[#EPIGRAPH] \
@@ -9974,14 +10734,24 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .       \}
 .       if \\n[#PP_SPACE] \
 .          if \\n[#QUOTE_4_HD] .sp .5v
-.       if !\\n[#SPACE_ADDED] .SHIM
-.       if \\n[#SPACE_ADDED] .rr #SPACE_ADDED
+.       ie !\\n[#SPACE_ADDED] \{\
+.          if !\\n[.ns] \{\
+.             ie !\\n[#NO_SHIM] \
+.                if !\\n[#HEAD_\\n[#LEVEL]_NO_SHIM] .SHIM
+.             el \{\
+.                if !\\n[#NO_FLEX] \
+.                   if !\\n[#HEAD_\\n[#LEVEL]_NO_FLEX] .FLEX 
+.             \}
+.          \}
+.       \}
+.       el .rr #SPACE_ADDED
+.       vpt
 .    \}
 .    el \{\
 .       if \\n[#NUM_ARGS]>1 \{\
 .          tm1 "[mom]: Error at line \\n[.c], \\$0.
 .          tm1 "       PARAHEAD may not be given more than 1 line of text.
-.          ab  Aborting '\\n[.F]' at \\$0, line \\n[.c].
+.          ab   [mom]: Aborting '\\n[.F]' at \\$0, line \\n[.c].
 .       \}
 .       vpt 0
 .       if !(\\n[#PRINT_STYLE]=1)&(\\n[#SINGLE_SPACE]=1) .sp -1v
@@ -10001,7 +10771,7 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .    if \\n[#PRINT_STYLE]=2 \{\
 .       fam \\*[$HEAD_\\n[#LEVEL]_FAM]
 .       ft  \\*[$HEAD_\\n[#LEVEL]_FT]
-.       ps  \\n[#DOC_PT_SIZE]u+\\*[$HEAD_\\n[#LEVEL]_SIZE]
+.       ps  \\n[#DOC_PT_SIZE]u\\*[$HEAD_\\n[#LEVEL]_SIZE]
 .       nf
 .    \}
 .\" Numbering
@@ -10070,10 +10840,13 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .                ie !\\n[#FROM_STYLE_\\n[@LEVEL]] \{\
 .                   ie !\\n[#NUMBER_HEAD_\\n[@LEVEL]] \
 .                      nr #TOC_HEAD_\\n[@LEVEL]_INDENT \
-\\n[#TOC_HEAD_\\n-[@LEVEL]_INDENT]+\w'\\*[$TOC_HD_NUM]'+1.5m
+\\n[#TOC_HEAD_\\n-[@LEVEL]_INDENT]+\
+\w'\\*[$TOC_HD_NUM]'+\
+1.5m
 .                   el \
 .                      nr #TOC_HEAD_\\n[@LEVEL]_INDENT \
-\\n[#TOC_HEAD_\\n-[@LEVEL]_INDENT]+\w'\\*[$TOC_HD_NUM]'
+\\n[#TOC_HEAD_\\n-[@LEVEL]_INDENT]+\
+\w'\\*[$TOC_HD_NUM]'
 .                \}
 .                el \
 .                   nr #TOC_HEAD_\\n[@LEVEL]_INDENT \
@@ -10086,14 +10859,25 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .                   ie \\n[#NUMBER_HEAD_\\n-[@LEVEL]] \{\
 .                      ie !\\n[#NUMBER_HEAD_\\n+[@LEVEL]] \
 .                         nr #TOC_HEAD_\\n[@LEVEL]_INDENT \
-\\n[#TOC_HEAD_\\n-[@LEVEL]_INDENT]+\w'\\*[$TOC_HD_NUM_PREV]'+1.5m
-.                      el \
+\\n[#TOC_HEAD_\\n-[@LEVEL]_INDENT]+\
+\w'\\*[$TOC_HD_NUM_PREV]'+\
+1.5m
+.                      el \{\
+.\" Get the number of digits in the chapter number
+.                         ds ch-num-width \\n[#CH_NUM]
+.                         length ch-num-width \\*[ch-num-width]
+.                         nr ch-num-width -1
+.                         nr num-ch-digits \w'\0'*\\n[ch-num-width]
 .                         nr #TOC_HEAD_\\n[@LEVEL]_INDENT \
-\\n[#TOC_HEAD_\\n-[@LEVEL]_INDENT]+\w'.\[toc-hd-num-spacer]'
+\\n[#TOC_HEAD_\\n-[@LEVEL]_INDENT]+\
+\\n[num-ch-digits]+\
+\w'.\[toc-hd-num-spacer]'
+.                      \}
 .                   \}
 .                   el \
 .                      nr #TOC_HEAD_\\n[@LEVEL]_INDENT \
-\\n[#TOC_HEAD_\\n-[@LEVEL]_INDENT]+\w'\\n[#TOC_HD_NUM].'
+\\n[#TOC_HEAD_\\n-[@LEVEL]_INDENT]+\
+\w'\\n[#TOC_HD_NUM].'
 .                   ie \\n[#LEVEL]=1 \
 .                      nr #TOC_HEAD_\\n+[@LEVEL]_INDENT +\w'\0'
 .                   el \{\
@@ -10105,12 +10889,14 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .                \}
 .                el \
 .                   nr #TOC_HEAD_\\n[@LEVEL]_INDENT \
-\\n[#TOC_HEAD_\\n-[@LEVEL]_INDENT]+\\n[#TOC_HEAD_\\n+[@LEVEL]_INDENT]
+\\n[#TOC_HEAD_\\n-[@LEVEL]_INDENT]+\
+\\n[#TOC_HEAD_\\n+[@LEVEL]_INDENT]
 .             \}
 .             if \\n[#LEVEL]=1 \{\
 .                if \\n[#NUMBER_HEAD_\\n[@LEVEL]] \{\
 .                   if \\n[#PREFIX_CH_NUM] \
-.                      nr #TOC_HEAD_\\n[@LEVEL]_INDENT \w'\\*[$TOC_HD_NUM]'
+.                      nr #TOC_HEAD_\\n[@LEVEL]_INDENT \
+\w'\\*[$TOC_HD_NUM]'
 .                \}
 .             \}
 .          \}
@@ -10124,21 +10910,25 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .          el \{\
 .             if !\\n[#TOC_HEAD_\\n[@LEVEL]_INDENT_SET] \
 .                nr #TOC_HEAD_\\n[@LEVEL]_INDENT \
-\\n[#TOC_HEAD_\\n-[@LEVEL]_INDENT]+\\n[#TOC_HEAD_\\n+[@LEVEL]_INDENT]
+\\n[#TOC_HEAD_\\n-[@LEVEL]_INDENT]+\
+\\n[#TOC_HEAD_\\n+[@LEVEL]_INDENT]
 .          \}
 .       \}
 .    \}
 .\" Non-numbered heads
 .    el \{\
 .       nr @LEVEL \\n[#LEVEL] 1
-.       ie \\n[#FROM_STYLE_\\n+[@LEVEL]] \{\    \" increments @LEVEL even if false
+.\" increments @LEVEL even if false
+.       ie \\n[#FROM_STYLE_\\n+[@LEVEL]] \{\
 .          if !\\n[#TOC_HEAD_\\n[@LEVEL]_INDENT_SET] \{\
 .             nr #TOC_HEAD_\\n[@LEVEL]_INDENT \
-\\n[#TOC_HEAD_\\n[#LEVEL]_INDENT]+\\n[#TOC_HEAD_\\n[@LEVEL]_INDENT]
+\\n[#TOC_HEAD_\\n[#LEVEL]_INDENT]+\
+\\n[#TOC_HEAD_\\n[@LEVEL]_INDENT]
 .             if !\\n[#LEVEL]=\\n[#LAST_LEVEL] \{\
 .                if \\n[#NUMBER_HEAD_\\n[@LEVEL]] \
 .                   nr #TOC_HEAD_\\n[#LEVEL]_INDENT \
-\\n[#TOC_HEAD_\\n[@LEVEL]_INDENT]+\w'\\*[$TOC_HD_NUM_PREV]'
+\\n[#TOC_HEAD_\\n[@LEVEL]_INDENT]+\
+\w'\\*[$TOC_HD_NUM_PREV]'
 .             \}
 .          \}
 .       \}
@@ -10164,6 +10954,14 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .       CAPS 
 .       nr #CAPS_OFF 1
 .    \}
+.    if \\n[#SMALLCAPS_ON] \{\
+.       SMALLCAPS OFF
+.       nr #SMALLCAPS_RESTORE 1
+.    \}
+.    if \\n[#HEAD_\\n[#LEVEL]_SMALLCAPS] \{\
+.       SMALLCAPS 
+.       nr #SMALLCAPS_OFF 1
+.    \}
 .    if !'\\*[$HEAD_\\n[#LEVEL]_COLOR]'' \
 .       COLOR \\*[$HEAD_\\n[#LEVEL]_COLOR]
 .    nop \X'ps: exec decornone'\c
@@ -10283,9 +11081,8 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .       \}
 .       if !\\n[#HD_NUM_INDENT] .nr #HD_NUM_INDENT \w'\\*[$HD_NUM]'
 .    \}
-.    if !\\n[#PARAHEAD] \{\
+.    if !\\n[#PARAHEAD] \
 .       if \\n[#HEAD_\\n[#LEVEL]_SPACE_AFTER] .sp
-.    \}
 .    if \\n[#CAPS_OFF] \{\
 .       CAPS OFF
 .       rr #CAPS_OFF
@@ -10294,6 +11091,14 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .       CAPS
 .       rr #CAPS_RESTORE
 .    \}
+.    if \\n[#SMALLCAPS_OFF] \{\
+.       SMALLCAPS OFF
+.       rr #SMALLCAPS_OFF
+.    \}
+.    if \\n[#SMALLCAPS_RESTORE] \{\
+.       SMALLCAPS
+.       rr #SMALLCAPS_RESTORE
+.    \}
 .    ev
 .    rm $HD_NUM
 .    rr #HD_NUM_INDENT
@@ -10310,6 +11115,7 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .       sp -1
 .    \}
 .    vpt
+.    rr nl-from-heading
 .END
 \#
 \# HEADING_STYLE
@@ -10352,7 +11158,7 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .MAC HEADING_STYLE END
 .    if !\B'\\$1' \{\
 .       tm1 "[mom]: The first argument to \\$0 must be a numeric heading level.
-.       ab Aborting '\\n[.F]' at \\$0, line \\n[.c].
+.       ab   [mom]: Aborting '\\n[.F]' at \\$0, line \\n[.c].
 .    \}
 .    nr #LEVEL \\$1
 .    if \\n[#FROM_OLDSTYLE] .nr #LEVEL_\\n[#LEVEL]_SET 1
@@ -10367,15 +11173,15 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .          shift
 .          if '\\$1'' \{\
 .             tm1 "[mom]: The UNDERSCORE argument to \\$0 requires a rule weight.
-.             ab Aborting '\\n[.F]' at \\$0, line \\n[.c].
+.             ab   [mom]: Aborting '\\n[.F]' at \\$0, line \\n[.c].
 .          \}
 .          ds $HEAD_\\n[#LEVEL]_UL_WEIGHT \\$1
 .          shift
 .          if '\\$1'' \{\
 .             tm1 "[mom]: The UNDERSCORE argument to \\$0 requires a rule gap.
-.             ab Aborting '\\n[.F]' at \\$0, line \\n[.c].
+.             ab   [mom]: Aborting '\\n[.F]' at \\$0, line \\n[.c].
 .          \}
-.          ds $HEAD_\\n[#LEVEL]_UL_GAP    \\$1
+.          ds $HEAD_\\n[#LEVEL]_UL_GAP \\$1
 .          shift
 .       \}
 .       if '\\$1'NO_UNDERSCORE' \{\
@@ -10387,25 +11193,26 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .          shift
 .          if '\\$1'' \{\
 .             tm1 "[mom]: The UNDERSCORE2 argument to \\$0 requires a rule weight.
-.             ab Aborting '\\n[.F]' at \\$0, line \\n[.c].
+.             ab   [mom]: Aborting '\\n[.F]' at \\$0, line \\n[.c].
 .          \}
 .          ds $HEAD_\\n[#LEVEL]_UL2_WEIGHT \\$1
 .          shift
 .          if '\\$1'' \{\
 .             tm1 "[mom]: The UNDERSCORE2 argument to \\$0 requires a rule gap.
-.             ab Aborting '\\n[.F]' at \\$0, line \\n[.c].
+.             ab   [mom]: Aborting '\\n[.F]' at \\$0, line \\n[.c].
 .          \}
-.          ds $HEAD_\\n[#LEVEL]_UL2_GAP_1  \\$1
+.          ds $HEAD_\\n[#LEVEL]_UL2_GAP_1 \\$1
 .          shift
 .          if '\\$1'' \{\
 .             tm1 "[mom]: The UNDERSCORE2 argument to \\$0 requires an inter-rule gap.
-.             ab Aborting '\\n[.F]' at \\$0, line \\n[.c].
+.             ab   [mom]: Aborting '\\n[.F]' at \\$0, line \\n[.c].
 .          \}
 .          ds $HEAD_\\n[#LEVEL]_UL2_GAP_2  \\$1
 .          shift
 .       \}
 .       if '\\$1'NO_UNDERSCORE2' \{\
 .          rr #HEAD_\\n[#LEVEL]_UNDERSCORE2
+.          shift
 .       \}
 .       if '\\$1'SPACE_AFTER' \{\
 .          nr #HEAD_\\n[#LEVEL]_SPACE_AFTER 1
@@ -10432,13 +11239,11 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .       \}
 .       if '\\$1'QUAD' \{\
 .          shift
-.          if '\\$1'L'      .ds $HEAD_\\n[#LEVEL]_QUAD LEFT
-.          if '\\$1'LEFT'   .ds $HEAD_\\n[#LEVEL]_QUAD LEFT
-.          if '\\$1'C'      .ds $HEAD_\\n[#LEVEL]_QUAD CENTER
-.          if '\\$1'CENTRE' .ds $HEAD_\\n[#LEVEL]_QUAD CENTER
-.          if '\\$1'CENTER' .ds $HEAD_\\n[#LEVEL]_QUAD CENTER
-.          if '\\$1'R'      .ds $HEAD_\\n[#LEVEL]_QUAD RIGHT
-.          if '\\$1'RIGHT'  .ds $HEAD_\\n[#LEVEL]_QUAD RIGHT
+.          ds $QUAD_TYPE \\$1
+.          substring $QUAD_TYPE 0 0
+.          if '\\*[$QUAD_TYPE]'L' .ds $HEAD_\\n[#LEVEL]_QUAD LEFT
+.          if '\\*[$QUAD_TYPE]'C' .ds $HEAD_\\n[#LEVEL]_QUAD CENTER
+.          if '\\*[$QUAD_TYPE]'R' .ds $HEAD_\\n[#LEVEL]_QUAD RIGHT
 .          shift
 .       \}
 .       if '\\$1'COLOR' \{\
@@ -10459,6 +11264,14 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .          rr #HEAD_\\n[#LEVEL]_CAPS
 .          shift
 .       \}
+.       if '\\$1'SMALLCAPS' \{\
+.          nr #\\*[$TOC]HEAD_\\n[#LEVEL]_SMALLCAPS 1
+.          shift
+.       \}
+.       if '\\$1'NO_SMALLCAPS' \{\
+.          rr #HEAD_\\n[#LEVEL]_SMALLCAPS
+.          shift
+.       \}
 .       if '\\$1'NUMBER' \{\
 .          nr #NUMBER_HEAD_\\n[#LEVEL] 1
 .          nr #HEAD_\\n[#LEVEL]_NUM 0 1
@@ -10474,11 +11287,32 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .          nr #FROM_STYLE_\\n[#LEVEL] 1
 .          shift
 .       \}
+.       if '\\$1'NEEDS' \{\
+.          shift
+.          ds $HEAD_\\n[#LEVEL]_NEEDS \\$1
+.          shift
+.       \}
+.       if '\\$1'SHIM' \{\
+.          rr #HEAD_\\n[#LEVEL]_NO_SHIM
+.          shift
+.       \}
+.       if '\\$1'NO_SHIM' \{\
+.          nr #HEAD_\\n[#LEVEL]_NO_SHIM 1
+.          shift
+.       \}
+.       if '\\$1'FLEX' \{\
+.          rr #HEAD_\\n[#LEVEL]_NO_FLEX
+.          shift
+.       \}
+.       if '\\$1'NO_FLEX' \{\
+.          nr #HEAD_\\n[#LEVEL]_NO_FLEX 1
+.          shift
+.       \}
 .    \}
 .    rr #LEVEL
 .    if d$TOC .rm $TOC
 .END
-\#
+.
 .ALIAS TOC_ENTRY_STYLE HEADING_STYLE
 \#
 \# OLDSTYLE HEADINGS
@@ -10617,7 +11451,7 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .    tm1 "       Use 'HEADING <level> PARAHEAD <text>' instead.
 .    tm1 "       You will probably want to invoke HEADING_STYLE to set
 .    tm1 "       the type parameters for the parahead.  See docs.
-.    ab Aborting '\\n[.F]' at \\$0, line \\n[.c].
+.    ab   [mom]: Aborting '\\n[.F]' at \\$0, line \\n[.c].
 .END
 \#
 \# Wrapper macro for oldstyle NUMBER_HEADS, NUMBER_SUBHEADS...
@@ -10626,7 +11460,7 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .    if '\\$0'NUMBER_PARAHEADS' \{\
 .       tm1 "[mom]: \\$0 is no longer a valid macro.
 .       tm1 "       Use 'HEADING_STYLE <level> NUMBER' instead.  See docs.
-.       ab Aborting '\\n[.F]' at \\$0, line \\n[.c].
+.       ab   [mom]: Aborting '\\n[.F]' at \\$0, line \\n[.c].
 .       return
 .    \}
 .    if '\\$0'NUMBER_HEADS'       .nr level 1
@@ -10647,14 +11481,14 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .    rm $PARAM
 .    rm $SWITCH
 .END
-\#
+.
 .ALIAS NUMBER_HEADS       HEADING_NUMBERS
 .ALIAS NUMBER_SUBHEADS    HEADING_NUMBERS
 .ALIAS NUMBER_SUBSUBHEADS HEADING_NUMBERS
 .ALIAS NUMBER_PARAHEADS   HEADING_NUMBERS
 \#
 \# PREFIX CHAPTER NUMBERS TO HEADINGS/TOC ENTRIES
-\# ----------------------------------------------------------------
+\# ----------------------------------------------
 \# *Arguments:
 \#   <none> | <chapter number> | <anything>
 \# *Function:
@@ -10665,37 +11499,8 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 \#   Default is OFF.
 \#
 .MAC PREFIX_CHAPTER_NUMBER END
-.    ie '\\$1'' \{\
-.       ie r#CH_NUM \{\
-.          nr #PREFIX_CH_NUM 1
-.          if \\n[#CHAPTER_CALLED] \{\
-.             ie \B'\\*[$CHAPTER]' .nr #CH_NUM \\*[$CHAPTER]
-.             el .PREFIX_CH_NUM_WARNING
-.             rr #CHAPTER_CALLED
-.          \}
-.       \}
-.       el \{\
-.          ie \B'\\*[$CHAPTER]' \{\
-.             nr #PREFIX_CH_NUM 1
-.             nr #CH_NUM \\*[$CHAPTER]
-.          \}
-.          el .PREFIX_CH_NUM_WARNING
-.       \}
-.    \}
-.    el \{\
-.       ie \B'\\$1' \{\
-.          nr #CH_NUM \\$1
-.          nr #PREFIX_CH_NUM 1
-.       \}
-.       el .rr #PREFIX_CH_NUM
-.    \}
-.END
-\#
-.MAC PREFIX_CH_NUM_WARNING END
-.    tm1 "[mom]: PREFIX_CHAPTER_NUMBER cannot determine a chapter number.
-.    tm1 "       Enter the current chapter number as a digit after
-.    tm1 "       PREFIX_CHAPTER_NUMBER.
-.    ab Aborting '\\n[.F]', line \\n[.c].
+.    ie '\\$1'' .nr #PREFIX_CH_NUM 1
+.    el .rr #PREFIX_CH_NUM
 .END
 \#
 \# ====================================================================
@@ -10708,7 +11513,7 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 \#   [character] [iterations] [vertical adjustment]
 \# *Function:
 \#   Allows user to specify a line break character and the number
-\#   of times to repeat it horiontally.
+\#   of times to repeat it horizontally.
 \# *Notes:
 \#   Without an argument, LINEBREAK_CHAR will deposit a blank line.
 \#
@@ -10845,9 +11650,8 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 \#   PRINTSTYLE TYPEWRITE without SINGLESPACE.
 \#
 .MAC PARA_SPACE END
-.    ie '\\$1'' \{\
+.    ie '\\$1'' \
 .       nr #PP_SPACE 1
-.    \}
 .    el \{\
 .       ie \B'\\$1' \{\
 .          nr #PP_SPACE 1
@@ -10870,6 +11674,11 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 \#   PP_STYLE 1 = regular paras; 2 = blockquotes, epigraphs
 \#
 .MAC PP END
+.    if \\n[#COVERTEXT_PP] \{\
+.       ie \\n[#INDENT_ACTIVE] .ti \\n[#INDENT]u+\\n[#PP_INDENT]u
+.       el .ti \\n[#PP_INDENT]u
+.       return
+.    \}
 .    if \\n[#DOC_TYPE]=4 \{\
 .       if !'\\n[.z]'' .di
 .       nr #TOTAL_FIELDS \\n[#FIELD]
@@ -10911,9 +11720,8 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .          ie \\n[#ENDNOTE] .vs \\n[#EN_LEAD]u
 .          el .vs \\n[#DOC_LEAD]u
 .          QUAD \\*[$DOC_QUAD]
-.          if \\n[#SLANT_ON] \{\
+.          if \\n[#SLANT_ON] \
 .             if \\n[#UNDERLINE_SLANT] .UNDERLINE
-.          \}
 .          if '\\*[$PP_FT]'I' \
 .             if \\n[#ITALIC_MEANS_ITALIC] .FT I
 .       \}
@@ -10956,10 +11764,9 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .          \}
 .       \}
 .       el \{\
-\#.          br
 .          if \\n[#PP_SPACE] \{\
 .             ie \\n[#END_QUOTE] \{\
-.                ie !'\\*[$PP_SPACE_AMOUNT]'' .ALD \\*[$PP_SPACE_AMOUNT]
+.                ie !'\\*[$PP_SPACE_AMOUNT]'' .sp \\*[$PP_SPACE_AMOUNT]
 .                el .sp
 .                rr #END_QUOTE
 .                nr #NO_SPACE 1
@@ -10967,9 +11774,16 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .             \}
 .             el \{\
 .                if \\n[#NO_SPACE]=1 .rr #NO_SPACE
+.                if \\n[post-float] \{\
+.                   if (\\n[.t]-1)<\\*[$PP_SPACE_AMOUNT] \{\
+.                      ie \\n[#COLS] .COL_NEXT
+.                      el .NEWPAGE
+.                   \}
+.                   rr post-float
+.                \}
 .                if !\\n[nl]=\\n[#BASELINE_MARK] \{\
-.                ie !'\\*[$PP_SPACE_AMOUNT]'' .ALD \\*[$PP_SPACE_AMOUNT]
-.                el .sp
+.                   ie !'\\*[$PP_SPACE_AMOUNT]'' .sp \\*[$PP_SPACE_AMOUNT]
+.                   el .sp
 .                   rr #BASELINE_MARK
 .                \}
 .             \}
@@ -11001,11 +11815,6 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .    \}
 .    if \\n[#PP_STYLE]=2 \{\
 \!.     br
-.       if \\n[#BROKEN_QUOTE] \{\
-.          ie \\n[nl]=\\n[#PAGE_TOP] .nr #Q_PP 1
-.          el .nr #Q_PP 0
-.          rr #BROKEN_QUOTE
-.       \}
 .       ie \\n[#Q_PP]=0 \{\
 .          if \\n[#INDENT_FIRST_PARAS] \
 .             ti \\n[#PP_INDENT]u/2u
@@ -11075,14 +11884,18 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 \#  Default is 3 for typeset; 2 for typewrite.
 \#
 .MAC QUOTE_INDENT END
-.    rr #Q_OFFSET_VALUE
-.    rm $Q_OFFSET_VALUE
+.    if '\\$0'BLOCKQUOTE_INDENT' .ds BQ BQ
+.    if '\\$0'QUOTE_INDENT'      .ds BQ Q
+.    rr #\\*[BQ]_OFFSET_VALUE
+.    rm $\\*[BQ]_OFFSET_VALUE
 .    ds $EVAL_QI_ARG \\$1
 .    substring $EVAL_QI_ARG -1
-.    ie \B'\\*[$EVAL_QI_ARG]' .nr #Q_OFFSET_VALUE \\$1
-.    el .ds $Q_OFFSET_VALUE \\$1
-.    rm $EVAL_QI_ARG
+.    ie \B'\\*[$EVAL_QI_ARG]' .nr #\\*[BQ]_OFFSET_VALUE \\$1
+.    el .ds $\\*[BQ]_OFFSET_VALUE \\$1
+.    rm BQ
 .END
+.
+.ALIAS BLOCKQUOTE_INDENT QUOTE_INDENT
 \#
 \# QUOTE_AUTOLEAD
 \# --------------
@@ -11098,7 +11911,7 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .    if '\\$0'ENDNOTE_QUOTE_AUTOLEAD'      .nr #EN_Q_AUTOLEAD (p;\\$1)
 .    if '\\$0'ENDNOTE_BLOCKQUOTE_AUTOLEAD' .nr #EN_BQ_AUTOLEAD (p;\\$1)
 .END
-\#
+.
 .ALIAS BLOCKQUOTE_AUTOLEAD         QUOTE_AUTOLEAD
 .ALIAS ENDNOTE_QUOTE_AUTOLEAD      QUOTE_AUTOLEAD
 .ALIAS ENDNOTE_BLOCKQUOTE_AUTOLEAD QUOTE_AUTOLEAD
@@ -11129,36 +11942,33 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 \#   diverted so its depth can be measured (in DO_QUOTE) for determining
 \#   how much space to put before and after.
 \#
-\# QUOTE
-\# -----
-\# *Arguments:
-\#   <none> | <anything>
-\# *Function:
-\#   Indents quoted text on a line for line basis, or turns QUOTE off.
-\# *Notes:
-\#   Owing to the need to bottom align TYPESET pages, quoted text gets
-\#   diverted so its depth can be measured (in DO_QUOTE) for determining
-\#   how much space to put before and after.
-\#
 .MAC QUOTE END
-.    br
+.    ie \\n[@TOP] \
+.       br
+.    el 'br
 .    if \\n[#PP]>0 .rr #START
 .    if \\n[#LINENUMBERS]=1 \{\
 .       nr #LINENUMBERS 2
 .       nr #NEXT_LN \\n[ln]
 .       nm
 .    \}
+.    if '\\$1'ADJUST' \{\
+.       ds $Q_SPACE_ADJUST \\$2
+.       shift 2
+.    \}
 .    ie '\\$1'' \{\
 .       ev QUOTE
 .       evc 0
-.       if \\n[#LINENUMBERS]=2 \{\
+.       if \\n[.i] .in 0
+.       if \\n[#LINENUMBERS]=2 \
 .          if \\n[#SILENT_QUOTE_LN]=1 .nm \\n[#NEXT_LN] 1000 -4
-.       \}
 .       nr #IN_DIVER 1
 .       nr #QUOTE 1
 .       di P_QUOTE
-.       ie !'\\*[$Q_OFFSET_VALUE]'' .ll \\n[#L_LENGTH]u-(\\*[$Q_OFFSET_VALUE]*2u)
-.       el .ll \\n[#L_LENGTH]u-(\\n[#PP_INDENT]u*(\\n[#Q_OFFSET_VALUE]u*2u))
+.       if '\\*[$Q_QUAD]'LEFT' \{\
+.          ie !'\\*[$Q_OFFSET_VALUE]'' .ll \\n[#L_LENGTH]u-\\*[$Q_OFFSET_VALUE]
+.          el .ll \\n[#L_LENGTH]u-(\\n[#PP_INDENT]u*\\n[#Q_OFFSET_VALUE]u)
+.       \}
 .       ta \\n[.l]u
 .       if \\n[#COLUMNS] \{\
 .          ie \\n[#Q_OFFSET_VALUE] \
@@ -11184,17 +11994,16 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .             ps \\n[#EN_PS]u\\*[$QUOTE_SIZE_CHANGE]
 .             ie !r #EN_Q_AUTOLEAD .vs \\n[#EN_Q_LEAD]u
 .             el \{\
-.                vs \\n[.ps]u+\n[#EN_Q_AUTOLEAD]u
+.                vs \\n[.ps]u+\\n[#EN_Q_AUTOLEAD]u
 .                nr #EN_Q_LEAD \\n[.v]
 .             \}
 .          \}
 .          nr #Q_LEAD_REAL \\n[.v]
-.          LEFT
 .          if \\n[#QUOTE_COLOR]=1 \{\
 .             nf
-\m[\\*[$QUOTE_COLOR]]
-.             EOL
+.             COLOR \\*[$QUOTE_COLOR]
 .          \}
+.          \\*[$Q_QUAD]
 .       \}
 .       if \\n[#LINENUMBERS]=2 \{\
 .          ie \\n[#QUOTE_LN]=1 \{\
@@ -11203,9 +12012,8 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .             nm \\n[ln] "" \\n[#Q_LN_GUTTER] -3-\\n[#Q_LN_GUTTER]
 .             RESTORE_PARAMS
 .          \}
-.          el \{\
+.          el \
 .             if !\\n[#SILENT_QUOTE_LN] .NUMBER_LINES OFF
-.          \}
 .       \}
 .       nr #Q_TOP \\n[nl]
 .       if \\n[#PRINT_STYLE]=1 \
@@ -11226,18 +12034,18 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .MAC CODE END
 \c
 .    if '\\$1'BR' \{\
-.       br
-.       nr #BREAK_OR_SPREAD 1
+.       ie '\\n[.z]'FLOAT*DIV' 'br
+.       el .br
 .       shift
 .    \}
 .    if '\\$1'BREAK' \{\
-.       nr #BREAK_OR_SPREAD 1
-.       br
+.       ie '\\n[.z]'FLOAT*DIV' 'br
+.       el .br
 .       shift
 .    \}
 .    if '\\$1'SPREAD' \{\
-.       nr #BREAK_OR_SPREAD 2
-.       brp
+.       ie '\\n[.z]'FLOAT*DIV' 'brp
+.       el .brp
 .       shift
 .    \}
 .    ie '\\$1'' \{\
@@ -11271,7 +12079,10 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .          \}
 .          if \\n[#CODE_COLOR]=1 .COLOR \\*[$CODE_COLOR]
 .          char ' \[aq]
-.          if !\\n[#CODE_SIZE_ADJ]=0 .ps \\n[#PT_SIZE]u*\\n[#CODE_SIZE_ADJ]u/100u
+.          if !\\n[#CODE_SIZE_ADJ]=0 \{\
+.             nr #RESTORE_SIZE \\n[.s]
+.             ps \\n[#PT_SIZE]u*\\n[#CODE_SIZE_ADJ]u/100u
+.          \}
 .          if \\n[#SQ_ON] \{\
 .             nr #SQ_WAS_ON 1
 .             SMARTQUOTES OFF
@@ -11281,10 +12092,11 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .    el \{\
 .       fam \\*[#RESTORE_FAM]
 .       ft  \\*[#RESTORE_FT]
+.       if !\\n[#CODE_SIZE_ADJ]=0 .ps \\n[#RESTORE_SIZE]
 .       rm $RESTORE_FAM
 .       rm $RESTORE_FT
-.       if !\\n[#CODE_SIZE_ADJ]=0 .ps
-.       char ' \[aq]
+.       rm $RESTORE_SIZE
+.       if \\n[#PRINT_STYLE]=2 .char ' \[cq]
 .       if !'\\n[.z]'' \
 .          if \\n[#LINENUMBERS] .nn
 .       if \\n[#CODE_COLOR]=1 .gcolor
@@ -11296,46 +12108,10 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .          rr #SQ_WAS_ON
 .          SMARTQUOTES
 .       \}
-.       if \\n[#QUOTE] .sp 1v
+.       if \\n[#QUOTE] .sp -1
 .    \}
 .END
 \#
-\# CODE_FAMILY
-\# -----------
-\# *Arguments:
-\#   <family>
-\# *Function:
-\#   Creates register #CODE_FAM and string $CODE_FAM for use by CODE.
-\#
-.MAC CODE_FAMILY END
-.    nr #CODE_FAM 1
-.    ds $CODE_FAM \\$1
-.END
-\#
-\# CODE_FONT
-\# ---------
-\# *Arguments:
-\#   <font>
-\# *Function:
-\#   Creates register #CODE_FT and string $CODE_FT for use by CODE.
-\#
-.MAC CODE_FONT END
-.    nr #CODE_FT 1
-.    ds $CODE_FT \\$1
-.END
-\#
-\# CODE_SIZE
-\# ---------
-\# *Arguments:
-\#   <percentage to zoom code font>
-\# *Function:
-\#   Creates register #CODE_SIZE_ADJ, used in CODE to zoom the
-\#   CODE_FONT to a percentage of the current point size.
-\#
-.MAC CODE_SIZE END
-. nr #CODE_SIZE_ADJ \\$1
-.END
-\#
 \# ---Blockquotes---
 \#
 \# BLOCKQUOTE
@@ -11355,60 +12131,76 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 \#
 .MAC BLOCKQUOTE END
 .    br
+.    if \\n[#PP]>0 .rr #START
 .    if \\n[#LINENUMBERS]=1 \{\
 .       nr #LINENUMBERS 2
 .       nr #NEXT_LN \\n[ln]
 .       nm
 .    \}
+.    if '\\$1'ADJUST' \{\
+.       ds $BQ_SPACE_ADJUST \\$2
+.       shift 2
+.    \}
+.    if \\n[in-cutaround] .nr #PP_INDENT \\n[restore-pp-ind]/2
 .    ie '\\$1'' \{\
 .       ev BLOCKQUOTE
 .       evc 0
+.       if \\n[.i] .in 0
+.       if \\n[#LINENUMBERS]=2 \
+.          if \\n[#SILENT_BQUOTE_LN]=1 .nm \\n[#NEXT_LN] 1000 -4
 .       nr #IN_DIVER 1
 .       nr #QUOTE    2
 .       nr #PP_STYLE 2
 .       nr #Q_PP     0
+.       if \\n[in-cutaround] \{\
+.          if '\\*[cutaround-type]'RIGHT' \{\
+.             nr reset-ll 1
+.             nr #L_LENGTH \\n[#DOC_L_LENGTH]-\\n[cutaround-width]-1v\\*[width-adj]
+.          \}
+.       \}
 .       di B_QUOTE
-.       ie !'\\*[$Q_OFFSET_VALUE]'' .ll \\n[#L_LENGTH]u-(\\*[$Q_OFFSET_VALUE]*2u)
-.       el .ll \\n[#L_LENGTH]u-(\\n[#PP_INDENT]u*(\\n[#Q_OFFSET_VALUE]u*2u))
+.       ie !'\\*[$BQ_OFFSET_VALUE]'' .ll \\n[#L_LENGTH]u-(\\*[$BQ_OFFSET_VALUE]*2u)
+.       el .ll \\n[#L_LENGTH]u-(\\n[#PP_INDENT]u*(\\n[#BQ_OFFSET_VALUE]u*2u))
+.       if \\n[in-cutaround] .nr #PP_INDENT \\n[.i]+\\n[pp-ind-tmp]
 .       if \\n[#ENDNOTE] \{\
 .          if \\n[#EN_NUMBERS_ALIGN_RIGHT] \{\
-.             ie r#Q_OFFSET_VALUE \
+.             ie r#BQ_OFFSET_VALUE \
 .                ll \
-\\n[#RESET_L_LENGTH]u-\\n[#EN_TEXT_INDENT]u-(\\n[#EN_PP_INDENT]u*(\\n[#Q_OFFSET_VALUE]u*2u))
+\\n[#RESET_L_LENGTH]u-\\n[#EN_TEXT_INDENT]u-(\\n[#EN_PP_INDENT]u*(\\n[#BQ_OFFSET_VALUE]u*2u))
 .             el \
 .                ll \
-\\n[#RESET_L_LENGTH]u-\\n[#EN_TEXT_INDENT]u-(\\*[$Q_OFFSET_VALUE]*2u)
+\\n[#RESET_L_LENGTH]u-\\n[#EN_TEXT_INDENT]u-(\\*[$BQ_OFFSET_VALUE]*2u)
 .          \}
 .          if \\n[#EN_NUMBERS_ALIGN_LEFT] \{\
-.             ie r#Q_OFFSET_VALUE \
-.                ll \\n[#L_LENGTH]u-(\\n[#EN_PP_INDENT]u*(\\n[#Q_OFFSET_VALUE]u*2u))
+.             ie r#BQ_OFFSET_VALUE \
+.                ll \\n[#L_LENGTH]u-(\\n[#EN_PP_INDENT]u*(\\n[#BQ_OFFSET_VALUE]u*2u))
 .             el \
-.                ll \\n[#L_LENGTH]u-(\\*[$Q_OFFSET_VALUE]u*2u)
+.                ll \\n[#L_LENGTH]u-(\\*[$BQ_OFFSET_VALUE]u*2u)
 .          \}
 .       \}
 .       ta \\n[.l]u
 .       CHECK_INDENT
 .       if \\n[#COLUMNS] \{\
-.          ie r#Q_OFFSET_VALUE \
+.          ie r#BQ_OFFSET_VALUE \
 .             ll \
-\\n[#COL_L_LENGTH]u-(\\n[#PP_INDENT]u*(\\n[#Q_OFFSET_VALUE]u*2u))
+\\n[#COL_L_LENGTH]u-(\\n[#PP_INDENT]u*(\\n[#BQ_OFFSET_VALUE]u*2u))
 .          el \
-.             ll \\n[#COL_L_LENGTH]u-(\\*[$Q_OFFSET_VALUE]*2u)
+.             ll \\n[#COL_L_LENGTH]u-(\\*[$BQ_OFFSET_VALUE]*2u)
 .          if \\n[#ENDNOTE] \{\
 .             if \\n[#EN_NUMBERS_ALIGN_RIGHT] \{\
-.                ie r#Q_OFFSET_VALUE \
+.                ie r#BQ_OFFSET_VALUE \
 .                   ll \
-\\n[#RESET_L_LENGTH]u-\\n[#EN_TEXT_INDENT]u-(\\n[#EN_PP_INDENT]u*(\\n[#Q_OFFSET_VALUE]u*2u))
+\\n[#RESET_L_LENGTH]u-\\n[#EN_TEXT_INDENT]u-(\\n[#EN_PP_INDENT]u*(\\n[#BQ_OFFSET_VALUE]u*2u))
 .                el \
 .                   ll \
-\\n[#RESET_L_LENGTH]u-\\n[#EN_TEXT_INDENT]u-(\\*[$Q_OFFSET_VALUE]*2u)
+\\n[#RESET_L_LENGTH]u-\\n[#EN_TEXT_INDENT]u-(\\*[$BQ_OFFSET_VALUE]*2u)
 .             \}
 .             if \\n[#EN_NUMBERS_ALIGN_LEFT] \{\
-.                ie r#Q_OFFSET_VALUE \
+.                ie r#BQ_OFFSET_VALUE \
 .                   ll \
-\\n[#COL_L_LENGTH]u-(\\n[#EN_PP_INDENT]u*(\\n[#Q_OFFSET_VALUE]u*2u))
+\\n[#COL_L_LENGTH]u-(\\n[#EN_PP_INDENT]u*(\\n[#BQ_OFFSET_VALUE]u*2u))
 .                el \
-.                   ll \\n[#COL_L_LENGTH]u-(\\*[$Q_OFFSET_VALUE]*2u)
+.                   ll \\n[#COL_L_LENGTH]u-(\\*[$BQ_OFFSET_VALUE]*2u)
 .             \}
 .          \}
 .          ta \\n[.l]u
@@ -11436,11 +12228,10 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .                nr #EN_BQ_LEAD \\n[.v]
 .             \}
 .          \}
-.          nr #Q_LEAD_REAL \\n[.v]
+.          nr #BQ_LEAD_REAL \\n[.v]
 .          if \\n[#BQUOTE_COLOR]=1 \{\
 .             nf
-\m[\\*[$BQUOTE_COLOR]]
-.             EOL
+.             COLOR \\*[$BQUOTE_COLOR]
 .          \}
 .          QUAD \\*[$BQUOTE_QUAD]
 .          nr #DIVERSIONS_HY_MARGIN (p;\\n[.ps]u*2.75)/1000
@@ -11471,7 +12262,7 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .          \}
 .       \}
 .    \}
-.    el .DO_QUOTE
+.    el .DO_BLOCKQUOTE
 .END
 \#
 \# DO QUOTE
@@ -11484,7 +12275,7 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 \#   position.  TYPEWRITE treats spacing the same way in all circumstance
 \#   (viz. an extra line space).  TYPESET puts in only half
 \#   line spaces if the entire quote plus 1 line of body under the quote
-\#   fits on the the page; otherwise it puts in a full extra blank
+\#   fits on the page; otherwise it puts in a full extra blank
 \#   line.  (This is to ensure the page remains bottom aligned).
 \#
 .MAC DO_QUOTE END
@@ -11493,7 +12284,16 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 \!.     NUMBER_LINES OFF
 .       rr #DIVER_LN_OFF
 .    \}
+.    nr #Q_DEPTH \\n[.d]
 .    di
+.    if '\\$0'DO_BLOCKQUOTE' .ds BQ BQ
+.    if '\\$0'DO_QUOTE'      .ds BQ Q
+.    if \\n[in-cutaround] \{\
+.       if \\n[dn]>\\n[.t] \{\
+.          tm1 "[mom]: Blockquote depth exceeds cutaround depth."
+.          ab   [mom]: Aborting at line \\n[.c].
+.       \}
+.    \}
 .    rr #IN_DIVER
 .    if \\n[#RESET_FN_COUNTERS]=2 \{\
 .       if !\\n[#FN_COUNT]=1 \{\
@@ -11507,17 +12307,14 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .    nr #DONE_ONCE 0 1
 .    REMOVE_INDENT
 .    ev
-.    nr #Q_DEPTH (\\n[#DIVER_DEPTH]-\\n[#Q_LEAD_REAL])
-.    nr #Q_LEAD_DIFF \\n[#LEAD]-\\n[#Q_LEAD_REAL]
-.    if !\\n[.v]=\\n[#Q_LEAD_REAL] \{\
-.       SILENT
+.    nr #Q_LEAD_DIFF \\n[#LEAD]-\\n[#\\*[BQ]_LEAD_REAL]
+.    if !'\\n[.z]'FLOAT*DIV' \{\
 .       br
-.       nf
-.       nr #CURRENT_V_POS \
-\\n[nl]+\\n[#Q_LEAD_DIFF]+(\\n[#DIVER_DEPTH]-\\n[#Q_DEPTH_REAL])
+.       nr #CALCULATE_ONLY 1
+.       nr #CURRENT_V_POS \\n[nl]+\\n[#Q_DEPTH]
 .       SHIM
-.       SILENT OFF
-.       nr #Q_SPACE_ADJ \\n[#SHIM]/2
+.       rr #CALCULATE_ONLY
+.       nr #Q_SPACE_EQ (\\n[#SHIM]/2)
 .       nr #TRAP \\n[.t]-1
 .    \}
 .    if \\n[#ENDNOTE] \{\
@@ -11543,111 +12340,168 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .          \}
 .       \}
 .       el \{\
-.          ie \\n[#Q_DEPTH]<(\\n[#TRAP_DISTANCE]-1) \{\
-.             ie ((\\n[#TRAP_DISTANCE]-1)-\\n[#Q_DEPTH])<\\n[#DOC_LEAD] \
-.                Q_NOFIT
-.             el \{\
-.                ie (\\n[#TRAP_DISTANCE]-\\n[#DOC_LEAD])<\\n[#DOC_LEAD] .Q_NOFIT
-.                el \{\
-.                   ie (\\n[#Q_DEPTH]+\\n[.v])=(\\n[#TRAP_DISTANCE]-1) .Q_NOFIT
+.          if !\\n[nl]=\\n[#PAGE_TOP] \{\
+.             ie \\n[#Q_DEPTH]<(\\n[#TRAP_DISTANCE]-1) \{\
+.                ie ((\\n[#TRAP_DISTANCE]-1)-\\n[#Q_DEPTH])<\\n[#DOC_LEAD] \{\
+.                   ie !\\n[in-cutaround] .Q_NOFIT
 .                   el .Q_FITS
 .                \}
+.                el \{\
+.                   ie (\\n[#TRAP_DISTANCE]-\\n[#DOC_LEAD])<\\n[#DOC_LEAD] .Q_NOFIT
+.                   el \{\
+.                      ie (\\n[#Q_DEPTH]+\\n[.v])=(\\n[#TRAP_DISTANCE]-1) .Q_NOFIT
+.                      el .Q_FITS
+.                   \}
+.                \}
 .             \}
+.             el .Q_NOFIT
 .          \}
-.          el .Q_NOFIT
 .       \}
 .       if \\n[#LINEBREAK] \{\
-.          ie !\\n[@TOP] .RLD \\n[#DOC_LEAD]u
+.          vpt 0
+.          ie !\\n[@TOP] .sp -\\n[#DOC_LEAD]u
 .          el \{\
 .             nop
 .             sp |\\n[#T_MARGIN]u-\\n[#BQ_LEAD]u
 .          \}
+.         vpt
 .       \}
 .    \}
-.    ie !'\\*[$Q_OFFSET_VALUE]'' .nr #Q_OFFSET \\n[#L_MARGIN]+\\*[$Q_OFFSET_VALUE]
+.    ie !'\\*[$\\*[BQ]_OFFSET_VALUE]'' \
+.       nr #\\*[BQ]_OFFSET \\n[#L_MARGIN]+(\\*[$\\*[BQ]_OFFSET_VALUE])
 .    el \
-.       nr #Q_OFFSET \\n[#L_MARGIN]+(\\n[#PP_INDENT]*\\n[#Q_OFFSET_VALUE])
+.       nr #\\*[BQ]_OFFSET \
+\\n[#L_MARGIN]+(\\n[#PP_INDENT]*\\n[#\\*[BQ]_OFFSET_VALUE])
 .    if \\n[#COLUMNS] \{\
-.       ie r#Q_OFFSET_VALUE \
-.          nr #Q_OFFSET \
-\\n[#COL_\\n[#COL_NUM]_L_MARGIN]+(\\n[#PP_INDENT]*\\n[#Q_OFFSET_VALUE])
-.       el .nr #Q_OFFSET \\n[#COL_\\n[#COL_NUM]_L_MARGIN]+\\*[$Q_OFFSET_VALUE]
+.       ie r#\\*[BQ]_OFFSET_VALUE \
+.          nr #\\*[BQ]_OFFSET \
+\\n[#COL_\\n[#COL_NUM]_L_MARGIN]+(\\n[#PP_INDENT]*\\n[#\\*[BQ]_OFFSET_VALUE])
+.       el .nr #\\*[BQ]_OFFSET \
+\\n[#COL_\\n[#COL_NUM]_L_MARGIN]+\\*[$\\*[BQ]_OFFSET_VALUE]
 .    \}
 .    if !\\n[#ENDNOTE] \{\
-.       po \\n[#Q_OFFSET]u
-.       if '\\n[.z]'FLOAT*DIV' \!.po \\n[#Q_OFFSET]u
+.       ie '\\*[BQ]'Q' \{\
+.          if '\\*[$Q_QUAD]'LEFT' \{\
+.             po \\n[#Q_OFFSET]u
+.             if '\\n[.z]'FLOAT*DIV' \!.po \\n[#Q_OFFSET]u
+.          \}
+.       \}
+.       el \{\
+.          po \\n[#\\*[BQ]_OFFSET]u
+.          if '\\n[.z]'FLOAT*DIV' \!.po \\n[#\\*[BQ]_OFFSET]u
+.       \}
 .    \}
 .    if \\n[#ENDNOTE] \{\
-.       ie \\n[#Q_OFFSET_VALUE] .in +\\n[#EN_PP_INDENT]u*\\n[#Q_OFFSET_VALUE]u
-.       el .in +\\*[$Q_OFFSET_VALUE]
+.       ie \\n[#\\*[BQ]_OFFSET_VALUE] \
+.          in +\\n[#EN_PP_INDENT]u*\\n[#\\*[BQ]_OFFSET_VALUE]u
+.       el .in +\\*[$\\*[BQ]_OFFSET_VALUE]
 .    \}
 .    ie \\n[#START]=1 \{\
-.       ie !\\n[#Q_LEAD_DIFF]<0 .ALD \\n[#Q_SPACE_ADJ]u
+.       ie !\\n[#Q_LEAD_DIFF]<0 \
+.          if !\\n[#NO_SHIM] .sp \\n[#Q_SPACE_EQ]u
 .       el .RLD 0-\\n[#Q_LEAD_DIFF]u
 .    \}
 .    el \{\
-.       if \\n[#PRINT_STYLE]=2 \{\
-.           if !\\n[.v]=\\n[#Q_LEAD] .ALD \\n[#Q_SPACE_ADJ]u
-.       \}
+.       if \\n[#PRINT_STYLE]=2 \
+.          ie !\\n[#NO_SHIM] \
+.             sp \\n[#Q_SPACE_EQ]u+(\\n[#Q_LEAD_DIFF]u/2u)
+.          el .if !\\n[#NO_FLEX] .FLEX
 .    \}
 .    if \\n[#QUOTE]=1 \{\
+.       if !'\\*[$Q_SPACE_ADJUST]'' .sp +\\*[$Q_SPACE_ADJUST]
 .       nf
 .       P_QUOTE
-.       br
-.       if !\\n[#START] .rr #QUOTE
+.       if !'\\*[$Q_SPACE_ADJUST]'' \{\
+.          sp -\\*[$Q_SPACE_ADJUST]
+.          rm $Q_SPACE_ADJUST
+.       \}
 .    \}
 .    if \\n[#QUOTE]=2 \{\
+.       if !'\\*[$BQ_SPACE_ADJUST]'' .sp +\\*[$BQ_SPACE_ADJUST]
 .       nf
 .       B_QUOTE
-.       br
+.       if !'\\*[$BQ_SPACE_ADJUST]'' \{\
+.          sp -\\*[$BQ_SPACE_ADJUST]
+.          rm $BQ_SPACE_ADJUST
+.       \}
 .    \}
-.    if \\n[#PRINT_STYLE]=1 \
-.       if !\\n[.v]=\\n[#DOC_LEAD] .SHIM
-.    if \\n[#PRINT_STYLE]=2 \{\
-.       ie \\n[#START] \{\
-.          ie \\n[#PP_SPACE] .
-.          el \{\
-.             ALD \\n[#DOC_LEAD]u
-.             SHIM
-.          \}
+.    if !\\n[#START] .rr #QUOTE
+.    if \\n[in-cutaround] .nr #PP_INDENT \\n[pp-ind-tmp]
+\#.    if !\\n[ev-popped] .ev \" Needed once cutarounds are implemented
+.    rr delay-ev-pop
+.    if \\n[reset-ll] \{\
+.       if '\\*[cutaround-type]'RIGHT' \{\
+.          ll \\n[#DOC_L_LENGTH]u
+.          rr reset-ll
 .       \}
-.       el \{\
-.          ie \\n[#HEAD]=1 \{\
-.             ALD \\n[#DOC_LEAD]u
-.             SHIM
+.    \}
+.    if !'\\n[.z]'FLOAT*DIV' \{\
+.       if \\n[#PRINT_STYLE]=1 \
+.          if !\\n[.v]=\\n[#DOC_LEAD] \{\
+.             ie !\\n[#NO_SHIM] .SHIM
+.             el \
+.                if !\\n[#NO_FLEX] .FLEX
 .          \}
-.          el \{\
-.             ie \\n[#FULLSPACE_QUOTES] \{\
-.                ie \\n[#ENDNOTE] .ALD \\n[#EN_LEAD]u
-.                el .ALD \\n[#DOC_LEAD]u
+.       if \\n[#PRINT_STYLE]=2 \{\
+.          ie \\n[#START] \{\
+.             ie \\n[#PP_SPACE] .
+.             el \{\
+.                sp \\n[#DOC_LEAD]u
+.                ie !\\n[#NO_SHIM] .SHIM
+.                el \
+.                   if !\\n[#NO_FLEX] .FLEX
 .             \}
-.             el .ALD (\\n[#DOC_LEAD]/2)u
-.             ie \\n[#Q_FITS] \{\
-.                ie (\\n[#Q_TOP]=\\n[#PAGE_TOP]):(\\n[@TOP]=1) \{\
-.                   nr #Q_AT_TOP 1
-.                   nr #DELAY_SHIM 1
-.                \}
+.          \}
+.          el \{\
+.             ie \\n[#HEAD]=1 \{\
+.                sp \\n[#DOC_LEAD]u
+.                ie !\\n[#NO_SHIM] .SHIM
 .                el \
-.                   if !\\n[.v]=\\n[#Q_LEAD_REAL] .SHIM
+.                   if !\\n[#NO_FLEX] .FLEX
 .             \}
 .             el \{\
-.                SHIM
+.                ie \\n[#FULLSPACE_QUOTES] \{\
+.                   ie \\n[#ENDNOTE] .ALD \\n[#EN_LEAD]u
+.                   el !'\\n[.z]'FLOAT*DIV' .ALD \\n[#DOC_LEAD]u
+.                \}
+.                el \
+.                   if !'\\n[.z]'FLOAT*DIV' .ALD \\n[#DOC_LEAD]u/2u
+.                ie \\n[#Q_FITS] \{\
+.                   ie (\\n[#Q_TOP]=\\n[#PAGE_TOP]):(\\n[@TOP]=1) \{\
+.                      if \\n[has-label] .sp \\n[#DOC_LEAD]u/2u
+.                      if !'\\n[.z]'FLOAT*DIV' \{\
+.                         nr #Q_AT_TOP 1
+.                         nr #DELAY_SHIM 1
+.                      \}
+.                   \}
+.                   el \{\
+.                      ie !\\n[#NO_SHIM] .SHIM
+.                      el \
+.                         if !\\n[#NO_FLEX] .FLEX
+.                   \}
+.                \}
+.                el \{\
+.                   ie !\\n[#NO_SHIM] .SHIM
+.                   el \
+.                      if !\\n[#NO_FLEX] .FLEX
 .\" Make sure that Q_LEAD_DIFF is not added to the first line of
 .\" normal text at the top of any page following output of a quote
 .\" whose last line falls on B_MARGIN of the previous page.
-.                if \\n[#Q_LEAD_DIFF] \{\
-.                   if \\n[nl]=(\\n[#T_MARGIN]-\\n[#DOC_LEAD]+\\n[#Q_LEAD_DIFF]) \{\
-.                      PRINT \&
-.                      br
-.                      sp -1v-\\n[#Q_LEAD_DIFF]u
-.                      nr #Q_LEAD_DIFF_CHECK 1
+.                   if \\n[#Q_LEAD_DIFF] \{\
+.                      if \\n[nl]=(\\n[#T_MARGIN]-\\n[#DOC_LEAD]+\\n[#Q_LEAD_DIFF]) \{\
+.                         PRINT \&
+.                         br
+.                         sp -1v-\\n[#Q_LEAD_DIFF]u
+.                         nr #Q_LEAD_DIFF_CHECK 1
+.                      \}
 .                   \}
 .                \}
 .             \}
 .          \}
 .       \}
 .    \}
-.    rr #Q_SPACE_ADJ
+.    if \\n[#RESTORE_NO_SHIM] .nr #NO_SHIM 1
+.    rr #Q_SPACE_EQ
 .    if \\n[#LINENUMBERS]=2 \{\
 .       nr #LINENUMBERS 1
 .       if !\\n[#ENDNOTE] \{\
@@ -11663,17 +12517,16 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .          \}
 .       \}
 .    \}
-.    if \\n[#ENDNOTE] .nr #FULLSPACE_QUOTES \\n[#RESET_QUOTE_SPACING]
+.    if \\n[#ENDNOTE] \
+.       nr #FULLSPACE_QUOTES \\n[#RESET_QUOTE_SPACING]
 .    if r #HEAD .rr #HEAD
 .    if r #EPIGRAPH .rr #EPIGRAPH
 .    rr #Q_PP
 .    rr #LINEBREAK
 .    nr #PP_STYLE  1
 .    nr #END_QUOTE 1
-.    if !\\n[#ENDNOTE] \{\
+.    if !\\n[#ENDNOTE] \
 .       po \\n[#L_MARGIN]u
-.       if '\\n[.z]'FLOAT*DIV' \!.po \\n[#L_MARGIN]u
-.    \}
 .    if \\n[#ENDNOTE]  .in \\n[#EN_TEXT_INDENT]u
 .    if \\n[#COLUMNS] \{\
 .       if !\\n[#ENDNOTE] \{\
@@ -11685,13 +12538,21 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .    ie !\\n[#ENDNOTE] .QUAD \\*[$DOC_QUAD]
 .    el .QUAD \\*[EN_QUAD]
 .    if r #DELAY_SHIM \{\
-.       SHIM
+.       ie !\\n[#NO_SHIM] .SHIM
+.       el \
+.          if !\\n[#NO_FLEX] .FLEX
 .       rr #DELAY_SHIM
 .    \}
 .    if \\n[#PRINT_STYLE]=1 \
 .       if \\n[#UNDERLINE_QUOTES] .FT R
 .    nr #QUOTE_4_HD 1
+.    rr #\\*[BQ]_LEAD_REAL
+.    rm BQ
+.    if \\n[#DOC_TYPE]=5 .NO_SHIM
+.    if '\\n[.z]'FLOAT*DIV' \!.po \\n[#L_MARGIN]u
 .END
+.
+.ALIAS DO_BLOCKQUOTE DO_QUOTE
 \#
 \# Utility macros for DO_QUOTE
 \# ---------------------------
@@ -11711,58 +12572,79 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .\" start at the top of the page to fall on the first line of the
 .\" grid (ie. on the first valid baseline of the page).
 .             ie \\n[#Q_TOP]=\\n[#PAGE_TOP] \{\
-.                if \\n[#QUOTE]=1 \{\
-.                   rn P_QUOTE Q_TEMP
-.                   di P_QUOTE
-.                   nf
-.                   vs \\n[#Q_LEAD]u
-.                   PRINT \&
-.                   sp -1v+\\n[#Q_LEAD_DIFF]u
-.                   Q_TEMP
-.                   di
-.                \}
-.                if \\n[#QUOTE]=2 \{\
-.                   rn B_QUOTE Q_TEMP
-.                   di B_QUOTE
-.                   nf
-.                   vs \\n[#BQ_LEAD]u
-.                   PRINT \&
-.                   sp -1v+\\n[#Q_LEAD_DIFF]u
-.                   Q_TEMP
-.                   di
-.                \}
+.                if \\n[#QUOTE]=1 .ds $QUOTE_TYPE Q
+.                if \\n[#QUOTE]=2 .ds $QUOTE_TYPE B 
+.                rn \\*[$QUOTE_TYPE]_QUOTE Q_TEMP
+.                di \\*[$QUOTE_TYPE]_QUOTE
+.                nf
+.                if \\n[#QUOTE]=1 .vs \\n[#Q_LEAD]u
+.                if \\n[#QUOTE]=2 .vs \\n[#BQ_LEAD]u
+.                PRINT \&
+.                sp -1v+\\n[#Q_LEAD_DIFF]u
+.                Q_TEMP
+.                di
 .                rm Q_TEMP
+.                sp \\n[#DOC_LEAD]u/2u
 .             \}
-.             el .ALD (\\n[#DOC_LEAD]u/2u)+\\n[#Q_SPACE_ADJ]u
+.             el \
+.                sp \\n[#DOC_LEAD]u/2u
 .          \}
 .       \}
 .       if \\n[#DIVER_FN]=2 .rr #DIVER_FN
+.       if !\\n[#NO_FLEX] .FLEX
 .    \}
+.    rm $QUOTE_TYPE
 .END
 \#
 .MAC Q_NOFIT END
 .    rr #Q_FITS
+.    if \\n[#QUOTE]=1 \{\
+.       ds $QUOTE_TYPE Q
+.       ds quote-type quote
+.    \}
+.    if \\n[#QUOTE]=2 \{\
+.       ds $QUOTE_TYPE B 
+.       ds quote-type blockquote
+.    \}
+.    if \\n[has-caption] \{\
+.       if !\\n[@TOP] \
+.          if !\\n[nl]=\\n[#PAGE_TOP] \
+.             if (\\n[.t]-1)<\
+\\n[#DOC_LEAD]+(\\n[#DOC_LEAD]/4)\
++\\n[#\\*[QUOTE_TYPE]_LEAD] \{\
+.          tm1 "[mom]: Insufficient room for caption and at least one line of \\*[quote-type]
+.          tm1 "       on page \\n[%] (line \\n[.c]).  Moving quote to next page or column.
+.          ie \\n[#COLUMNS] .COL_NEXT
+.          el .NEWPAGE
+.       \}
+.    \}
 .    ie r#HEAD \
 .       if \\n[#HEAD]=1 .
 .    el \{\
 .       if \\n[#Q_DEPTH]=0 \
 .          if \\n[.ns] .rs
 .       ie \\n[#FULLSPACE_QUOTES] \{\
-.          ie \\n[#ENDNOTE] .ALD \\n[#EN_LEAD]u+\\n[#Q_LEAD_DIFF]u
-.          el .ALD \\n[#DOC_LEAD]u+\\n[#Q_LEAD_DIFF]u
+.          ie \\n[#ENDNOTE] .sp \\n[#EN_LEAD]u+\\n[#Q_LEAD_DIFF]u
+.          el .sp \\n[#DOC_LEAD]u+\\n[#Q_LEAD_DIFF]u
 .       \}
 .       el \{\
-.          ALD \\n[#DOC_LEAD]u+\\n[#Q_LEAD_DIFF]
+.          if '\\*[$QUOTE_TYPE]'Q' .sp \\n[#DOC_LEAD]u
 .          if \\n[@TOP] .rs
 .       \}
-.       nr #Q_PARTIAL_DEPTH 0 \\n[#Q_LEAD_REAL]
+.       ie \\n[#Q_LEAD_REAL] \
+.          nr #Q_PARTIAL_DEPTH 0 \\n[#Q_LEAD_REAL]
+.       el .nr #Q_PARTIAL_DEPTH 0 \\n[#BQ_LEAD_REAL]
 .       while \\n+[#Q_PARTIAL_DEPTH]<(\\n[#TRAP_DISTANCE]-1) \{\
 .
 .       \}
-.       nr #Q_PARTIAL_DEPTH -\\n[#Q_LEAD_REAL]
-.       nr #Q_SPACE_ADJ \
-(\\n[#TRAP_DISTANCE]-1)-\\n[#Q_PARTIAL_DEPTH]+\\n[#Q_LEAD_DIFF]u
-.       if \\n[#FN_COUNT]>0 .nr #Q_SPACE_ADJ (\\n[#Q_SPACE_ADJ] / 2u)
+.       if !\\n[#Q_LEAD_REAL]=\\n[#DOC_LEAD] \{\
+.          ie \\n[#Q_LEAD_REAL] \
+.             nr #Q_PARTIAL_DEPTH -\\n[#Q_LEAD_REAL]
+.          el .nr #Q_PARTIAL_DEPTH -\\n[#BQ_LEAD_REAL]
+.       \}
+.       nr #Q_SPACE_EQ \
+(\\n[#TRAP_DISTANCE]-1)-\\n[#Q_PARTIAL_DEPTH]+(\\n[#Q_LEAD_DIFF]u/2u)
+.       if \\n[#FN_COUNT]>0 .nr #Q_SPACE_EQ (\\n[#Q_SPACE_EQ] / 2u)
 .\" Hack to deal with the fact that even though the above routine
 .\" makes the bottom line of the quote fall exactly on the bottom
 .\" margin when traps are disabled, it refuses to do so when traps
@@ -11793,7 +12675,7 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .    ie '\\$1'' .nr #PAGINATE 1
 .    el \{\
 .      nr #PAGINATE 0
-.      if !\\n[#COLLATE] .rr #PAGE_NUM_V_POS
+.      rr #PAGE_NUM_V_POS
 .    \}
 .    if \\n[#HF_OFF]=1 \{\
 .       rr #PAGINATION_STATE
@@ -11910,7 +12792,7 @@ $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
 .    if '\\*[$PN_FOR_KN]'1' .ds $POST_HY_KN \*[BU3]
 .    if '\\*[$PN_FOR_KN]'7' .ds $POST_HY_KN \*[BU3]
 .    PRINT \
-\m[\\*[$PAGENUM_COLOR]]\
+\m[\\*[$PAGE_NUM_COLOR]]\
 \\*[$HYPHEN]\|\\*[$PRE_HY_KN]\\n[#PAGENUMBER]\\*[$POST_HY_KN]\|\\*[$HYPHEN]
 .    br
 .    rm $PRE_HY_KERN
@@ -11991,11 +12873,14 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .             PN_WITH_HYPHENS
 .          \}
 .          if '\\*[$PAGENUM_STYLE]'roman' \
-.             PRINT \m[\\*[$PAGENUM_COLOR]]-\|\\n[#PAGENUMBER]\|-
+.             PRINT \m[\\*[$PAGE_NUM_COLOR]]-\|\\n[#PAGENUMBER]\|-
 .          if '\\*[$PAGENUM_STYLE]'alpha' \
-.             PRINT \m[\\*[$PAGENUM_COLOR]]-\|\\n[#PAGENUMBER]\|-
+.             PRINT \m[\\*[$PAGE_NUM_COLOR]]-\|\\n[#PAGENUMBER]\|-
+.       \}
+.       el \{\
+.          ie !d$PAGENUM_STRING .PRINT \m[\\*[$PAGE_NUM_COLOR]]\\n[#PAGENUMBER]
+.          el .PRINT \m[\\*[$PAGE_NUM_COLOR]]\\*[$PAGENUM_STRING]
 .       \}
-.       el .PRINT \m[\\*[$PAGENUM_COLOR]]\\n[#PAGENUMBER]
 .    \}
 .    ev
 .    nr #DIVER_DEPTH 0
@@ -12266,6 +13151,19 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .    el .rm $FN_SPACE
 .END
 \#
+\# FOOTNOTE FIRST LINE INDENT
+\# --------------------------
+\# *Arguments:
+\#   <indent>
+\# *Function:
+\#   Indents first line of footnotes.
+\# *Notes:
+\#   Default is no indent.
+\#
+.MAC FOOTNOTE_INDENT END
+. nr #FN_INDENT \\$1
+.END
+\#
 \# RUN ON FOOTNOTES
 \# ----------------
 \# *Arguments:
@@ -12344,7 +13242,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .          if !\\n[#LINENUMBERS] \{\
 .             tm1 "[mom]: Line numbering must be enabled with NUMBER_LINES when
 .             tm1 "       FOOTNOTE_MARKER_STYLE is LINE.
-.             ab Aborting '\\n[.F]' at \\$0, line \\n[.c].
+.             ab   [mom]: Aborting '\\n[.F]' at \\$0, line \\n[.c].
 .          \}
 .          if \\n[#FN_MARK]=0 .nr #FN_MARK \\n[ln]
 .          nr #FN_MARK_2 \\n[ln]
@@ -12394,7 +13292,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .\" or EPIGRAPH isn't yet adjusted at this point, the last word on the
 .\" line may *seem* to belong to the final line of the page, but will,
 .\" in fact, become the first word of the subsequent page.  In such
-.\" circumstances, we want the the footnote to be treated as a "moved"
+.\" circumstances, we want the footnote to be treated as a "moved"
 .\" diversion footnote.
 .          if \\n[.k]>\\n[.l] .nr #DIVER_FN 1
 .          if r #DIVER_FN \{\
@@ -12612,9 +13510,8 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .\" FN_IN_DIVER is output into FOOTNOTE in PROCESS_FN_IN_DIVER).
 .          if !\\n[#DONT_RULE_ME]=1 \{\
 .             if !\\n[#FN_DEPTH] \{\
-.                if \\n[#PRINT_STYLE]=1 \{\
+.                if \\n[#PRINT_STYLE]=1 \
 .                   if !\\n[#RUN_ON] .sp \\n[#DOC_LEAD]u
-.                \}
 .                ie \\n[#FN_RULE]=1 \{\
 .                   if !\\n[#RUN_ON] \{\
 .                      if \\n[#SINGLE_SPACE] .sp \\n[#DOC_LEAD]u
@@ -12622,7 +13519,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .                      if !'\\*[$FN_SPACE]'' .sp -\\*[$FN_SPACE]
 .                   \}
 .                \}
-.                el .sp 1v
+.                el .sp
 .                nr #RULED 1
 .             \}
 .          \}
@@ -12632,9 +13529,8 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .       SS 0
 .\" Add footnote markers to footnote text...
 .       ie \\n[#FN_MARKERS] \{\
-.          if !'\\*[$FN_SPACE]'' \{\
+.          if !'\\*[$FN_SPACE]'' \
 .             if \\n[#FN_COUNT]>0 .ALD \\*[$FN_SPACE]
-.          \}
 .          if !\\n[#NO_FN_MARKER] \{\
 .\" ...but not if TERMINATE has been called.
 .             if !r#TERMINATE \{\
@@ -12645,36 +13541,35 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .                if \\n[#FN_MARKER_STYLE]=1 \{\
 .                   ie \\n[#COLUMNS]=1 \{\
 .                      \\n+[#FN_COUNT_FOR_COLS]
-.                      if \\n[#FN_COUNT_FOR_COLS]=1 .PRINT *\c
-.                      if \\n[#FN_COUNT_FOR_COLS]=2 .PRINT \[dg]\c
-.                      if \\n[#FN_COUNT_FOR_COLS]=3 .PRINT \[dd]\c
-.                      if \\n[#FN_COUNT_FOR_COLS]=4 .PRINT **\c
-.                      if \\n[#FN_COUNT_FOR_COLS]=5 .PRINT \[dg]\[dg]\c
-.                      if \\n[#FN_COUNT_FOR_COLS]=6 .PRINT \[dd]\[dd]\c
-.                      if \\n[#FN_COUNT_FOR_COLS]=7 .PRINT ***\c
-.                      if \\n[#FN_COUNT_FOR_COLS]=8 .PRINT \[dg]\[dg]\[dg]\c
-.                      if \\n[#FN_COUNT_FOR_COLS]=9 .PRINT \[dd]\[dd]\[dd]\c
-.                      if \\n[#FN_COUNT_FOR_COLS]=10 .PRINT ****\c
+.                      if \\n[#FN_COUNT_FOR_COLS]=1 .PRINT \h'0+\\n[#FN_INDENT]u'*\c
+.                      if \\n[#FN_COUNT_FOR_COLS]=2 .PRINT \h'0+\\n[#FN_INDENT]u'\[dg]\c
+.                      if \\n[#FN_COUNT_FOR_COLS]=3 .PRINT \h'0+\\n[#FN_INDENT]u'\[dd]\c
+.                      if \\n[#FN_COUNT_FOR_COLS]=4 .PRINT \h'0+\\n[#FN_INDENT]u'**\c
+.                      if \\n[#FN_COUNT_FOR_COLS]=5 .PRINT \h'0+\\n[#FN_INDENT]u'\[dg]\[dg]\c
+.                      if \\n[#FN_COUNT_FOR_COLS]=6 .PRINT \h'0+\\n[#FN_INDENT]u'\[dd]\[dd]\c
+.                      if \\n[#FN_COUNT_FOR_COLS]=7 .PRINT \h'0+\\n[#FN_INDENT]u'***\c
+.                      if \\n[#FN_COUNT_FOR_COLS]=8 .PRINT \h'0+\\n[#FN_INDENT]u'\[dg]\[dg]\[dg]\c
+.                      if \\n[#FN_COUNT_FOR_COLS]=9 .PRINT \h'0+\\n[#FN_INDENT]u'\[dd]\[dd]\[dd]\c
+.                      if \\n[#FN_COUNT_FOR_COLS]=10 .PRINT \h'0+\\n[#FN_INDENT]u'****\c
 .                   \}
 .                   el \{\
-.                      if \\n[#FN_COUNT]=1 .PRINT *\c
-.                      if \\n[#FN_COUNT]=2 .PRINT \[dg]\c
-.                      if \\n[#FN_COUNT]=3 .PRINT \[dd]\c
-.                      if \\n[#FN_COUNT]=4 .PRINT **\c
-.                      if \\n[#FN_COUNT]=5 .PRINT \[dg]\[dg]\c
-.                      if \\n[#FN_COUNT]=6 .PRINT \[dd]\[dd]\c
-.                      if \\n[#FN_COUNT]=7 .PRINT ***\c
-.                      if \\n[#FN_COUNT]=8 .PRINT \[dg]\[dg]\[dg]\c
-.                      if \\n[#FN_COUNT]=9 .PRINT \[dd]\[dd]\[dd]\c
-.                      if \\n[#FN_COUNT]=10 .PRINT ****\c
+.                      if \\n[#FN_COUNT]=1 .PRINT \h'0+\\n[#FN_INDENT]u'*\c
+.                      if \\n[#FN_COUNT]=2 .PRINT \h'0+\\n[#FN_INDENT]u'\[dg]\c
+.                      if \\n[#FN_COUNT]=3 .PRINT \h'0+\\n[#FN_INDENT]u'\[dd]\c
+.                      if \\n[#FN_COUNT]=4 .PRINT \h'0+\\n[#FN_INDENT]u'**\c
+.                      if \\n[#FN_COUNT]=5 .PRINT \h'0+\\n[#FN_INDENT]u'\[dg]\[dg]\c
+.                      if \\n[#FN_COUNT]=6 .PRINT \h'0+\\n[#FN_INDENT]u'\[dd]\[dd]\c
+.                      if \\n[#FN_COUNT]=7 .PRINT \h'0+\\n[#FN_INDENT]u'***\c
+.                      if \\n[#FN_COUNT]=8 .PRINT \h'0+\\n[#FN_INDENT]u'\[dg]\[dg]\[dg]\c
+.                      if \\n[#FN_COUNT]=9 .PRINT \h'0+\\n[#FN_INDENT]u'\[dd]\[dd]\[dd]\c
+.                      if \\n[#FN_COUNT]=10 .PRINT \h'0+\\n[#FN_INDENT]u'****\c
 .                   \}
 .                \}
 .                if \\n[#FN_MARKER_STYLE]=2 \{\
 .                   ds $FN_NUMBER \\n[#FN_NUMBER]
 .                   length #FN_NUMBER_LENGTH \\*[$FN_NUMBER]
-.                   if \\n[#COLUMNS]=1 \{\
+.                   if \\n[#COLUMNS]=1 \
 .                      \\n+[#FN_COUNT_FOR_COLS]
-.                   \}
 .                   if \\n[#NOT_YET_ADJUSTED]=1 \{\
 .                      nr #FN_NUMBER 1 1
 .                      rr #NOT_YET_ADJUSTED
@@ -12682,24 +13577,24 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .                   if \\n[#PRINT_STYLE]=1 \{\
 .                      ie \\n[#NO_SUPERSCRIPT] \{\
 .                         ie \\n[#FN_NUMBER_LENGTH]<\\n[#FN_NUMBER_PLACEHOLDERS] \
-.                            PRINT "\0(\\n[#FN_NUMBER])\|\c"
+.                            PRINT "\h'0+\\n[#FN_INDENT]u'\0(\\n[#FN_NUMBER])\|\c"
 .                         el \
-.                            PRINT "(\\n[#FN_NUMBER])\|\c"
+.                            PRINT "\h'0+\\n[#FN_INDENT]u'(\\n[#FN_NUMBER])\|\c"
 .                      \}
 .                      el \{\
 .                         ie \\n[#FN_NUMBER_LENGTH]<\\n[#FN_NUMBER_PLACEHOLDERS] \
 .                            PRINT \
-"\s-2\v'-\\n[.v]u/5u'\0\\n[#FN_NUMBER]\|\v'+\\n[.v]u/5u'\s+2\|\c"
+"\h'0+\\n[#FN_INDENT]u'\s-2\v'-\\n[.v]u/5u'\0\\n[#FN_NUMBER]\|\v'+\\n[.v]u/5u'\s+2\|\c"
 .                         el \
 .                            PRINT \
-"\s-2\v'-\\n[.v]u/5u'\\n[#FN_NUMBER]\|\v'+\\n[.v]u/5u'\s+2\|\c"
+"\h'0+\\n[#FN_INDENT]u'\s-2\v'-\\n[.v]u/5u'\\n[#FN_NUMBER]\|\v'+\\n[.v]u/5u'\s+2\|\c"
 .                      \}
 .                   \}
 .                   if \\n[#PRINT_STYLE]=2 \{\
 .                      ie \\n[#FN_NUMBER_LENGTH]<\\n[#FN_NUMBER_PLACEHOLDERS] \
-.                         PRINT "\*[SUP]\0\\n[#FN_NUMBER]\*[SUPX]\*[FU 3]\c"
+.                         PRINT "\h'0+\\n[#FN_INDENT]u'\*[SUP]\0\\n[#FN_NUMBER]\*[SUPX]\*[FU 3]\c"
 .                      el \
-.                         PRINT "\*[SUP]\\n[#FN_NUMBER]\*[SUPX]\*[FU 3]\c"
+.                         PRINT "\h'0+\\n[#FN_INDENT]u'\*[SUP]\\n[#FN_NUMBER]\*[SUPX]\*[FU 3]\c"
 .                   \}
 .                \}
 .             \}
@@ -12714,11 +13609,11 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .             \}
 .             if \\n[#REF]=1 \{\
 .                if !\\n[#RUN_ON]=1 \{\
-\!.                 ti +\\n[#REF_FN_INDENT]u
+\!.                 ti +\\n[#REF_FN_INDENT]uu
 .                \}
 .             \}
 .             ie \\n[#FN_LN_BRACKETS]=1 \{\
-.                ds $FN_LINENUMBER \v'-.085m'\\*[$FN_OPEN_BRACKET]\v'.085m'
+.                ds $FN_LINENUMBER \h'0+\\n[#FN_INDENT]u'\v'-.085m'\\*[$FN_OPEN_BRACKET]\v'.085m'
 .                ie \\n[#FN_MARK_2]=\\n[#FN_MARK] \
 .                   as $FN_LINENUMBER \
 \\n[#FN_MARK]\v'-.085m'\\*[$FN_CLOSE_BRACKET]\v'.085m'\h'.25m'
@@ -12732,14 +13627,13 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .                   ds $FN_LINENUMBER \\n[#FN_MARK]\\*[$FN_LN_SEP]
 .                el \
 .                   ds $FN_LINENUMBER \
-\\n[#FN_MARK]\v'-.1m'-\v'.1m'\\n[#FN_MARK_2]\\*[$FN_LN_SEP]
+\h'0+\\n[#FN_INDENT]u'\\n[#FN_MARK]\v'-.1m'-\v'.1m'\\n[#FN_MARK_2]\\*[$FN_LN_SEP]
 .                \}
 .             \}
-.             if !\\n[#NO_FN_MARKER] \
-.                PRINT \\*[$FN_LINENUMBER]\c
-.             rm $FN_LINENUMBER
-.             nr #FN_MARK 0
-.          \}
+.          if !\\n[#NO_FN_MARKER] \
+.             PRINT \\*[$FN_LINENUMBER]\c
+.          rm $FN_LINENUMBER
+.          nr #FN_MARK 0
 .       \}
 .    \}
 .    el \{\
@@ -12941,9 +13835,8 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .                         nr #VARIABLE_FOOTER_POS -\\n[#VFP_DIFF]
 .                         if \\n[#DIVERTED]=1 .nr #DIVERTED 3
 .                         if !\\n[#PREV_FN_DEFERRED]=1 \{\
-.                            ie \\n[#COLUMNS]=1 \{\
+.                            ie \\n[#COLUMNS]=1 \
 .                               if !\\n[#FROM_FOOTER] .
-.                            \}
 .                            el .nr #FN_DEPTH -\\n[#VFP_DIFF]
 .                         \}
 .                         if \\n[#DIVERTED]=3 \{\
@@ -13127,7 +14020,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .\" When #FROM_DIVERT_FN is 1, it signals to FOOTNOTE, when run from
 .\" within DIVERT_FN_LEFTOVER, to set #SPACE_REMAINING to the total
 .\" area allowable for running text.
-\#.    nr #FROM_DIVERT_FN 1
+.    nr #FROM_DIVERT_FN 1
 .END
 \#
 \# PROCESS_FN_LEFTOVER is called at the top of HEADER, and in
@@ -13146,7 +14039,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .       nr #VARIABLE_FOOTER_POS 0-\\n[#B_MARGIN]
 .    \}
 .    el \{\
-.       if \\n[#FN_DEFER]=1 .nr #VARIABLE_FOOTER_POS -\\n[#FN_DEPTH]
+.       if \\n[#FN_DEFER]=1 .nr #VARIABLE_FOOTER_POS 0-\\n[#B_MARGIN]
 .       if \\n[#FN_DEFER]=2 \{\
 .          nr #FN_DEPTH 0
 .          nr #VARIABLE_FOOTER_POS 0-\\n[#B_MARGIN]
@@ -13156,14 +14049,16 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .    ch FOOTER -\\n[#B_MARGIN]u
 .    if \\n[#FN_DEFER] \{\
 .       nr #NO_FN_MARKER 1
+.       rn FOOTNOTES DEFERRED-FOOTNOTE
+.       nr #FN_DEPTH 0
 .       FOOTNOTE
 .       nf
+.       DEFERRED-FOOTNOTE
 .       FOOTNOTE OFF
 .       ie \\n[#COLUMNS]=1 \{\
 .          if \\n[#COL_NUM]=\\n[#NUM_COLS] \{\
-.             if !\\n[#FROM_FOOTER] \{\
+.             if !\\n[#FROM_FOOTER] \
 .                if \\n[#FN_COUNT_FOR_COLS]=1 .nr #PREV_FN_DEFERRED 1
-.             \}
 .          \}
 .       \}
 .       el .nr #PREV_FN_DEFERRED 1
@@ -13268,47 +14163,6 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .    nr #EN_PS (p;\\$1)
 .END
 \#
-\# ENDNOTES, BIBLIOGRAPHY and TOC LEADING
-\# --------------------------------------
-\# *Argument:
-\#   <leading> [ ADJUST ]
-\# *Function:
-\#   Depending on the name by which it's called, creates or modifies
-\#   register #<type>_LEAD, where <type> is BIB, EN, or TOC.  Creates or removes
-\#   register #ADJ_<type>_LEAD.  Stores arguments in strings if BIB,
-\#   EN, or TOC leading are set before START.
-\# *Notes:
-\#   Default is same as doc lead for TYPESET, adjusted; 24 for TYPEWRITE.
-\#
-.MAC _LEAD END
-.    if '\\$0'BIBLIOGRAPHY_LEAD' .ds $SECTION BIB
-.    if '\\$0'ENDNOTE_LEAD' .ds $SECTION EN
-.    if '\\$0'TOC_LEAD' .ds $SECTION TOC
-.    ds $\\*[$SECTION]_LEAD \\$1
-.    ds $ADJUST_\\*[$SECTION]_LEAD \\$2
-.    if !\\n[#OK_PROCESS_LEAD] .return
-.    nr #\\*[$SECTION]_LEAD (p;\\$1)
-.    rr #ADJ_\\*[$SECTION]_LEAD
-.    als \\*[$SECTION]_LEAD DOC_LEAD
-.    if '\\$2'ADJUST' \{\
-.       nr #ORIG_DOC_LEAD \\n[#UNADJUSTED_DOC_LEAD]
-.       nr #RESTORE_ADJ_DOC_LEAD \\n[#ADJ_DOC_LEAD]
-.       nr #ADJ_DOC_LEAD 1
-.       nr #ADJ_\\*[$SECTION]_LEAD 1
-.       nr #NO_TRAP_RESET 1
-.       \\*[$SECTION]_LEAD \\n[#\\*[$SECTION]_LEAD]u ADJUST
-.       nr #\\*[$SECTION]_LEAD \\n[#DOC_LEAD]
-.       DOC_LEAD \\n[#ORIG_DOC_LEAD]u
-.       rr #NO_TRAP_RESET
-.       nr #ADJ_DOC_LEAD \\n[#RESTORE_ADJ_DOC_LEAD]
-.       rr #ORIG_DOC_LEAD
-.    \}
-.END
-\#
-.ALIAS BIBLIOGRAPHY_LEAD _LEAD
-.ALIAS ENDNOTE_LEAD _LEAD
-.ALIAS TOC_LEAD _LEAD
-\#
 \# ENDNOTE SPACING
 \# ----------------
 \# *Arguments:
@@ -13349,33 +14203,56 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 \# *Notes:
 \#   Default is "Endnotes"
 \#
-.MAC ENDNOTE_STRING END
+.MAC ENDNOTES_HEADER_STRING END
 .    ds $EN_STRING \\$1
 .END
+.
+.ALIAS ENDNOTE_STRING ENDNOTES_HEADER_STRING
+\#
+\# ENDNOTE STRING START POSITION
+\# ----------------------------
+\# *Argument:
+\#   <distance from page top>
+\# *Function:
+\#   Creates or modifies register #EN_STRING_V_POS
 \#
-.MAC ENDNOTE_STRING_ADVANCE END
-.    nr #EN_STRING_ADVANCE (\\$1)
+.MAC ENDNOTES_HEADER_V_POS END
+.    nr #EN_STRING_V_POS (\\$1)
 .END
+.
+.ALIAS ENDNOTE_STRING_ADVANCE  ENDNOTES_HEADER_V_POS
+.ALIAS ENDNOTE_STRING_V_POS    ENDNOTES_HEADER_V_POS
+.ALIAS ENDNOTES_HEADER_V_POS   ENDNOTES_HEADER_V_POS
 \#
-\# ENDNOTE STRING CAPS
-\# -------------------
+\# ENDNOTE HEADER CAPS and SMALLCAPS
+\# ---------------------------------
 \# *Arguments:
 \#   <none> | <anything>
 \# *Function:
-\#   Turns capitalization of the endnotes pages title string
-\#   "Endnotes" on or off.
+\#   Turns capitalization or smallcaps style of the endnotes pages
+\#   title string "Endnotes" on or off.
 \# *Notes:
-\#   Users may want the endnotes pages title string to be in caps,
-\#   but the toc entry for endnotes in lower case.  If the argument
-\#   to ENDNOTE_STRING is in lower case and ENDNOTE_STRING_CAPS is
-\#   turned on, this is exactly what will happen.
+\#   Users may want the endnotes pages title string to be in
+\#   caps, but the toc entry for endnotes in lower case.  If the
+\#   argument to ENDNOTES_HEADER_STRING is in lower case and
+\#   ENDNOTES_HEADER_CAPS is turned on, this is exactly what will
+\#   happen.  Ditto for smallcaps.
 \#
-\#   Default is on.
+\#   Default for CAPS is on.
 \#
-.MAC ENDNOTE_STRING_CAPS END
+.MAC ENDNOTES_HEADER_CAPS END
 .   ie '\\$1'' .nr #EN_STRING_CAPS 1
 .   el .nr #EN_STRING_CAPS 0
 .END
+.
+.ALIAS ENDNOTE_STRING_CAPS ENDNOTES_HEADER_CAPS
+.
+.MAC ENDNOTES_HEADER_SMALLCAPS END
+.   ie '\\$1'' .nr #EN_STRING_SMALLCAPS 1
+.   el .nr #EN_STRING_SMALLCAPS 0
+.END
+.
+.ALIAS ENDNOTE_STRING_SMALLCAPS ENDNOTES_HEADER_SMALLCAPS
 \#
 \# ENDNOTE TITLE
 \# -------------
@@ -13708,7 +14585,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .          if !\\n[#LINENUMBERS] \{\
 .             tm1 "[mom]: Line numbering must be enabled with NUMBER_LINES when
 .             tm1 "       ENDNOTE_MARKER_STYLE is LINE.
-.             ab Aborting '\\n[.F]' at \\$0, line \\n[.c].
+.             ab   [mom]: Aborting '\\n[.F]' at \\$0, line \\n[.c].
 .          \}
 .          if \\n[#EN_MARK]=0 .nr #EN_MARK \\n[ln]
 .          nr #EN_MARK_2 \\n[ln]
@@ -13733,30 +14610,39 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 \!.     if \\\\n[.vpt]=0 .vpt
 \!.     ne 3
 .       vs \\n[#EN_LEAD]u
-.\" Print identifying doc title (eg Chapter n)
+.\" Print identifying doc title (e.g., Chapter n)
 .       if \\n[#EN_NUMBER]=1 \{\
 .          if \\n[#PRINT_STYLE]=1 .TYPEWRITER
 .          if \\n[#PRINT_STYLE]=2 \{\
 .             FAMILY  \\*[$EN_TITLE_FAM]
 .             FT      \\*[$EN_TITLE_FT]
 .             ps \\n[#EN_PS]u\\*[$EN_TITLE_SIZE_CHANGE]
+.             if \\n[#EN_TITLE_COLOR] .COLOR \\*[$EN_TITLE_COLOR]
+.             if \\n[#ENDNOTE_TITLE_SMALLCAPS] .SMALLCAPS
+.             if \\n[#ENDNOTE_TITLE_CAPS] .CAPS
 .          \}
-.          sp
+.          ie \\n[#SINGLE_SPACE]=1 .sp 2
+.          el .sp
 .          if !'\\*[$EN_TITLE]'' \{\
-.             if '\\*[$EN_TITLE_QUAD]'L'      .LEFT
-.             if '\\*[$EN_TITLE_QUAD]'LEFT'   .LEFT
-.             if '\\*[$EN_TITLE_QUAD]'C'      .CENTER
-.             if '\\*[$EN_TITLE_QUAD]'CENTER' .CENTER
-.             if '\\*[$EN_TITLE_QUAD]'CENTRE' .CENTER
-.             if '\\*[$EN_TITLE_QUAD]'R'      .RIGHT
-.             if '\\*[$EN_TITLE_QUAD]'RIGHT'  .RIGHT
-.             ie \\n[#EN_TITLE_UNDERLINE] \{\
-.                nr #FROM_EN_TITLE 1
+.             substring $EN_TITLE_QUAD 0 0
+.             if '\\*[$EN_TITLE_QUAD]'L' .LEFT
+.             if '\\*[$EN_TITLE_QUAD]'C' .CENTER
+.             if '\\*[$EN_TITLE_QUAD]'R' .RIGHT
+\!.           vpt 0
+.             sp -.25v
+.             ie \\n[#EN_TITLE_UNDERLINE] \
 .                UNDERSCORE "\\*[$EN_TITLE]"
-.                rr #FROM_EN_TITLE
+.             el \{\
+.                ie \\n[#PRINT_STYLE]=1 \
+.                   UNDERSCORE "\\*[$EN_TITLE]"
+.                el .PRINT "\\*[$EN_TITLE]"
 .             \}
-.             el .PRINT "\\*[$EN_TITLE]"
+.             sp .25v
+\!.           vpt
 .          \}
+.          if \\n[#EN_TITLE_COLOR] .gcolor
+.          if \\n[#ENDNOTE_TITLE_SMALLCAPS] .SMALLCAPS OFF
+.          if \\n[#ENDNOTE_TITLE_CAPS] .CAPS OFF
 .       \}
 .\" Get indent from endnotes point size; convert string to reg in
 .\" case indent string is, e.g., m or n
@@ -13764,12 +14650,13 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .       nr #REF_EN_INDENT (u;\\*[$REF_EN_INDENT])
 .       if \\n[#PRINT_STYLE]=1 \{\
 .          TYPEWRITER
-.          if \\n[#EN_NUMBER]=1 .sp
+.          if \\n[#EN_NUMBER]=1 \{\
+.             ie \\n[#SINGLE_SPACE]=1 .sp
+.             el .sp .25
+.           \}
 .          if \\n[#EN_MARKER_STYLE]=3 .ps -2
 .       \}
 .       if \\n[#PRINT_STYLE]=2 \{\
-.          if \\n[#EN_NUMBER]=1 \
-.             if !'\\*[$EN_TITLE]'' .sp .5v
 .          if \\n[#EN_MARKER_STYLE]=1 \{\
 .             FAMILY  \\*[$EN_NUMBER_FAM]
 .             FT      \\*[$EN_NUMBER_FT]
@@ -13835,6 +14722,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .          rm $EN_LINENUMBER
 .       \}
 .       if \\n[#EN_MARKER_STYLE]=3 \{\
+\!.        vpt 0
 .          ps \" Reset ps changed to get width of s-script numbers
 .          ie \\n[#PRINT_STYLE]=1 \{\
 .\" Vertical raise amount here is less than when the same string is printed in
@@ -13846,6 +14734,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .       \}
 .       EOL
 .       ll
+\!.     vpt
 .       nr #EN_FIGURE_SPACE \w'\0'
 .       if \\n[#EN_MARKER_STYLE]=1 \{\
 .          ie \\n[#REF]=1 .ti \
@@ -13867,7 +14756,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .       \}
 .       nr #EN_TEXT_INDENT \\n[.i]
 .       QUAD \\*[$EN_QUAD]
-.       vpt 1
+.       vpt
 .       if \\n[#PRINT_STYLE]=1 .TYPEWRITER
 .       if \\n[#PRINT_STYLE]=2 \{\
 .          FAMILY  \\*[$EN_FAM]
@@ -13910,6 +14799,9 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .    \}
 .END
 \#
+\# Endnotes (user space macro)
+\# ---------------------------
+\#
 \# ENDNOTES
 \# --------
 \# *Arguments:
@@ -13924,6 +14816,34 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .    nr #LAST_EN \\n[#EN_NUMBER]
 .    nr #ENDNOTES 1
 .    nr #EN_FIRST_PAGE 1
+.    SETUP_ENDNOTES
+.    if !\\n[#PRINT_STYLE]=1 .chop END_NOTES
+.    nf
+.    END_NOTES
+.    rm END_NOTES
+.    ps \\n[#DOC_PT_SIZE]u
+.    if \\n[#PRINT_STYLE]=1 .vs \\n[#DOC_LEAD]u
+.    if \\n[#PRINT_STYLE]=2 \{\
+.       ie \\n[#ADJ_EN_LEAD] \
+.          nr #DOC_LEAD \\n[#RESTORE_DOC_LEAD]
+.       el .DOC_LEAD \\n[#RESTORE_DOC_LEAD]u
+.       rr #RESTORE_DOC_LEAD
+.    \}
+.    if \\n[#COLUMNS_WERE_ON] .nr #COLUMNS 1
+.    if \\n[#HEADER_STATE]=1 .HEADERS
+.    if \\n[#LINENUMBERS]=2 \{\
+.       NUMBER_LINES RESUME
+.       nr #LINENUMBERS 1
+.    \}
+.    rr #ENDNOTES
+.END
+\#
+\# Macros common to endnotes, bibliography, and toc
+\# ------------------------------------------------
+\#
+.MAC SETUP_BIB_EN END
+.    if '\\$0'SETUP_BIBLIOGRAPHY' .ds EN-OR-BIB BIB
+.    if '\\$0'SETUP_ENDNOTES'     .ds EN-OR-BIB EN
 .    nr #HEADER_STATE \\n[#HEADERS_ON]
 .    ds $RESTORE_PAGENUM_STYLE \\*[$PAGENUM_STYLE]
 .    if \\n[#LINENUMBERS]=1 \{\
@@ -13931,17 +14851,17 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .       nr #LINENUMBERS 2
 .    \}
 .    if \\n[#HEADERS_ON]=1 \
-.       if !\\n[#EN_ALLOWS_HEADERS_ALL] .HEADERS OFF
+.       if !\\n[#\\*[EN-OR-BIB]_ALLOWS_HEADERS_ALL] .HEADERS OFF
 .    if \\n[#HEADER_STATE]=1 \{\
-.       ie \\n[#EN_HDRFTR_CENTER]=1 .
+.       ie \\n[#\\*[EN-OR-BIB]_HDRFTR_CENTER]=1 .
 .       el .rm $HDRFTR_CENTER
 .    \}
 .    ie !\\n[#SUSPEND_PAGINATION] \{\
 .       if \\n[#PAGINATE]=1 \{\
 .          if \\n[#PAGE_NUM_V_POS]=1 \{\
-.             PAGENUM_STYLE \\*[$EN_PN_STYLE]
-.             if \\n[#EN_FIRST_PN] .PAGENUMBER \\n[#EN_FIRST_PN]-1
-.             if r #EN_NO_FIRST_PN .nr #PAGINATE 0
+.             PAGENUM_STYLE \\*[$\\*[EN-OR-BIB]_PN_STYLE]
+.             if \\n[#\\*[EN-OR-BIB]_FIRST_PN] .PAGENUMBER \\n[#\\*[EN-OR-BIB]_FIRST_PN]-1
+.             if r #\\*[EN-OR-BIB]_NO_FIRST_PN .nr #PAGINATE 0
 .          \}
 .       \}
 .    \}
@@ -13961,116 +14881,137 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .    \}
 .    ie !\\n[#SUSPEND_PAGINATION] \{\
 .       if \\n[#PAGE_NUM_V_POS]=1 \{\
-.          if r #EN_NO_FIRST_PN \
+.          if r #\\*[EN-OR-BIB]_NO_FIRST_PN \
 .             if \\n[#PAGINATION_STATE]=1 .nr #PAGINATE 1
 .       \}
 .    \}
 .    el \
 .       if \\n[#PAGE_NUM_V_POS]=2 .nr #PAGINATE 0
 .    rr #PAGINATION_STATE
-.    PAGENUM_STYLE \\*[$EN_PN_STYLE]
-.    if \\n[#EN_FIRST_PN] .PAGENUMBER \\n[#EN_FIRST_PN]
+.    PAGENUM_STYLE \\*[$\\*[EN-OR-BIB]_PN_STYLE]
+.    if \\n[#\\*[EN-OR-BIB]_FIRST_PN] .PAGENUMBER \\n[#\\*[EN-OR-BIB]_FIRST_PN]
 .    if \\n[#HEADER_STATE]=1 \
-.       if \\n[#EN_ALLOWS_HEADERS] .HEADERS
+.       if \\n[#\\*[EN-OR-BIB]_ALLOWS_HEADERS] .HEADERS
 .\" Collect endnotes title string for TOC
 .    nr #TOC_ENTRY_PN \\n%+\\n[#PAGE_NUM_ADJ]
 .    af #TOC_ENTRY_PN \\g[#PAGENUMBER]
-.    ds $TOC_TITLE_ITEM \\*[$EN_STRING]\|
-.    PDF_BOOKMARK 1 \\*[$EN_STRING]
+.    ds $TOC_TITLE_ITEM \\*[$\\*[EN-OR-BIB]_STRING]\|
+.    PDF_BOOKMARK 1 \\*[$\\*[EN-OR-BIB]_STRING]
 .    TITLE_TO_TOC
 .\" End collection of endnotes title string for TOC
 .\" Process endnotes
-.    if \\n[#PRINT_STYLE]=1 .vs \\n[#EN_LEAD]u
+.    if \\n[#PRINT_STYLE]=1 .vs \\n[#\\*[EN-OR-BIB]_LEAD]u
 .    if \\n[#PRINT_STYLE]=2 \{\
-.       if \\n[#EN_NO_COLS] \{\
+.       if \\n[#\\*[EN-OR-BIB]_NO_COLS] \{\
 .          if \\n[#COLUMNS] .nr #COLUMNS_WERE_ON 1
 .          nr #COLUMNS 0
 .       \}
 .       nr #RESTORE_DOC_LEAD \\n[#DOC_LEAD]
-.       ie \\n[#ADJ_EN_LEAD] .nr #DOC_LEAD \\n[#EN_LEAD]
-.       el .DOC_LEAD \\n[#EN_LEAD]u
+.       ie \\n[#ADJ_\\*[EN-OR-BIB]_LEAD] .nr #DOC_LEAD \\n[#\\*[EN-OR-BIB]_LEAD]
+.       el .DOC_LEAD \\n[#\\*[EN-OR-BIB]_LEAD]u
 .    \}
 .    vpt 0
-.    ie r#EN_STRING_ADVANCE .sp |\\n[#EN_STRING_ADVANCE]u-1v
-.    el .sp |\\n[#T_MARGIN]u-1v
-.    vpt 1
+.    RESTORE_SPACE
+.    ie r#\\*[EN-OR-BIB]_STRING_V_POS .sp |\\n[#\\*[EN-OR-BIB]_STRING_V_POS]u-1v
+.    el .sp |\\n[#T_MARGIN]u-\\n[#\\*[EN-OR-BIB]_LEAD]u
+.    vpt
 .    mk ec
 .    if \\n[#SLANT_ON] \{\
 \*[SLANTX]\c
 .    \}
 .    sp
-.    if !'\\*[$EN_STRING]'' \{\
+.    if !'\\*[$\\*[EN-OR-BIB]_STRING]'' \{\
 .       if \\n[#PRINT_STYLE]=1 \{\
 .          TYPEWRITER
-.          vs \\n[#EN_LEAD]u
+.          vs \\n[#\\*[EN-OR-BIB]_LEAD]u
 .       \}
 .       if \\n[#PRINT_STYLE]=2 \{\
 .          LL \\n[#DOC_L_LENGTH]u
 .          ta \\n[.l]u
 .          if \\n[#COLUMNS] \{\
-.             ie \\n[#EN_NO_COLS] .LL \\n[#DOC_L_LENGTH]u
+.             ie \\n[#\\*[EN-OR-BIB]_NO_COLS] .LL \\n[#DOC_L_LENGTH]u
 .             el .LL \\n[#COL_L_LENGTH]u
 .             ta \\n[.l]u
 .          \}
-.          FAMILY  \\*[$EN_STRING_FAM]
-.          FT      \\*[$EN_STRING_FT]
-.          ps \\n[#EN_PS]u\\*[$EN_STRING_SIZE_CHANGE]
-.          vs      \\n[#EN_LEAD]u
-.          if \\n[#ENDNOTE_STRING_COLOR]=1 \{\
-.             COLOR \\*[$ENDNOTE_STRING_COLOR]
-.             EOL
-.          \}
+.          FAMILY  \\*[$\\*[EN-OR-BIB]_STRING_FAM]
+.          FT      \\*[$\\*[EN-OR-BIB]_STRING_FT]
+.          ps \\n[#\\*[EN-OR-BIB]_PS]u\\*[$\\*[EN-OR-BIB]_STRING_SIZE_CHANGE]
+.          vs      \\n[#\\*[EN-OR-BIB]_LEAD]u
 .       \}
-.       if '\\*[$EN_STRING_QUAD]'L'      .LEFT
-.       if '\\*[$EN_STRING_QUAD]'LEFT'   .LEFT
-.       if '\\*[$EN_STRING_QUAD]'C'      .CENTER
-.       if '\\*[$EN_STRING_QUAD]'CENTER' .CENTER
-.       if '\\*[$EN_STRING_QUAD]'CENTRE' .CENTER
-.       if '\\*[$EN_STRING_QUAD]'R'      .RIGHT
-.       if '\\*[$EN_STRING_QUAD]'RIGHT'  .RIGHT
+.       substring $\\*[EN-OR-BIB]_STRING_QUAD 0 0
+.       if '\\*[$\\*[EN-OR-BIB]_STRING_QUAD]'L' .LEFT
+.       if '\\*[$\\*[EN-OR-BIB]_STRING_QUAD]'C' .CENTER
+.       if '\\*[$\\*[EN-OR-BIB]_STRING_QUAD]'R' .RIGHT
 .       EOL
-.       if \\n[#EN_STRING_CAPS] .CAPS
-.       ie \\n[#EN_STRING_UNDERLINE] \{\
-.          nr #FROM_EN_STRING 1
-.          ie \\n[#EN_STRING_UNDERLINE]=2 \
-.             UNDERSCORE2 \\*[$EN_UNDERLINE_GAP] \\*[$EN_RULE_GAP] "\\*[$EN_STRING]"
-.          el .UNDERSCORE "\\*[$EN_STRING]"
-.          rr #FROM_EN_STRING
+.       if \\n[#\\*[EN-OR-BIB]_STRING_COLOR]=1 .COLOR \\*[$\\*[EN-OR-BIB]_STRING_COLOR]
+.       if \\n[#\\*[EN-OR-BIB]_STRING_CAPS] .CAPS
+.       if \\n[#\\*[EN-OR-BIB]_STRING_SMALLCAPS] .SMALLCAPS
+.       ie \\n[#\\*[EN-OR-BIB]_STRING_UNDERLINE] \{\
+.          if \\n[#PRINT_STYLE]=2 .ds $TITLE_TYPE \\*[EN-OR-BIB]_STRING
+.          ie \\n[#PRINT_STYLE]=1 \
+.             UNDERSCORE2 3p 2p "\\*[$\\*[EN-OR-BIB]_STRING]"
+.          el \{\
+.             ie \\n[#\\*[EN-OR-BIB]_STRING_UNDERLINE]=2 \
+.                UNDERSCORE2 \\*[$\\*[EN-OR-BIB]_UNDERLINE_GAP] \\*[$\\*[EN-OR-BIB]_RULE_GAP] "\\*[$\\*[EN-OR-BIB]_STRING]"
+.             el .UNDERSCORE "\\*[$\\*[EN-OR-BIB]_STRING]"
+.          \}
 .       \}
-.       el .PRINT "\\*[$EN_STRING]
+.       el .PRINT "\\*[$\\*[EN-OR-BIB]_STRING]
 .    \}
+.    SMALLCAPS OFF
+.    if \\n[#\\*[EN-OR-BIB]_STRING_COLOR]=1 .gcolor
 .    CAPS OFF
-.    if \\n[#PRINT_STYLE]=1 \{\
+.    FAMILY \\*[$\\*[EN-OR-BIB]_FAMILY]
+.    FT \\*[$\\*[EN-OR-BIB]_FT]
+.    ps -\\*[$\\*[EN-OR-BIB]_STRING_SIZE_CHANGE]
+.    ie \\n[#PRINT_STYLE]=1 \{\
 .       ie \\n[#SINGLE_SPACE]=1 .sp
 .       el \{\
-.          ie \\n[#EN_SINGLESPACE]=1 .sp
+.          ie \\n[#\\*[EN-OR-BIB]_SINGLESPACE]=1 .sp
 .          el .
 .       \}
 .    \}
-.    if \\n[#PRINT_STYLE]=2 .ALD \\n[#EN_LEAD]u
-.    QUAD \\*[$EN_QUAD]
-.    chop END_NOTES
-.    nf
-.    END_NOTES
-.    rm END_NOTES
-.    ps \\n[#DOC_PT_SIZE]u
-.    if \\n[#PRINT_STYLE]=1 .vs \\n[#DOC_LEAD]u
-.    if \\n[#PRINT_STYLE]=2 \{\
-.       ie \\n[#ADJ_EN_LEAD] \
-.          nr #DOC_LEAD \\n[#RESTORE_DOC_LEAD]
-.       el .DOC_LEAD \\n[#RESTORE_DOC_LEAD]u
-.       rr #RESTORE_DOC_LEAD
-.    \}
-.    if \\n[#COLUMNS_WERE_ON] .nr #COLUMNS 1
-.    if \\n[#HEADER_STATE]=1 .HEADERS
-.    if \\n[#LINENUMBERS]=2 \{\
-.       NUMBER_LINES RESUME
-.       nr #LINENUMBERS 1
+.    el \{\
+.       ie '\\*[EN-OR-BIB]'BIB' .sp 2
+.       el .sp
 .    \}
+.    SHIM
+.    QUAD \\*[$\\*[EN-OR-BIB]_QUAD]
+.END
 .
-.    PRINT_FOOTER
-.    rr #ENDNOTES
+.ALIAS SETUP_BIBLIOGRAPHY SETUP_BIB_EN
+.ALIAS SETUP_ENDNOTES     SETUP_BIB_EN
+\#
+\# ENDNOTES, BIBLIOGRAPHY and TOC LEADING
+\# --------------------------------------
+\# *Argument:
+\#   <leading> [ ADJUST ]
+\# *Function:
+\#   Depending on the name by which it's called, creates or modifies
+\#   register #<type>_LEAD, where <type> is BIB, EN, or TOC.  Creates or removes
+\#   register #ADJ_<type>_LEAD.  Stores arguments in strings if BIB,
+\#   EN, or TOC leading are set before START.
+\# *Notes:
+\#   Default is same as doc lead for TYPESET, adjusted; 24 for TYPEWRITE.
+\#
+.MAC _LEAD END
+.    if '\\$0'BIBLIOGRAPHY_LEAD' .ds $SECTION BIB
+.    if '\\$0'ENDNOTE_LEAD' .ds $SECTION EN
+.    if '\\$0'TOC_LEAD' .ds $SECTION TOC
+.    rr #ADJ_\\*[$SECTION]_LEAD
+.    ds $\\*[$SECTION]_LEAD \\$1
+.    rm $ADJUST_\\*[$SECTION]_LEAD
+.    if '\\$2'ADJUST' \{\
+.       nr #ADJ_\\*[$SECTION]_LEAD 1
+.       ds $ADJUST_\\*[$SECTION]_LEAD ADJUST
+.    \}
+.    if !\\n[#OK_PROCESS_LEAD] .return
+.    nr #\\*[$SECTION]_LEAD (p;\\$1)
 .END
+.
+.ALIAS BIBLIOGRAPHY_LEAD _LEAD
+.ALIAS ENDNOTE_LEAD      _LEAD
+.ALIAS TOC_LEAD          _LEAD
 \#
 \# ====================================================================
 \#
@@ -14103,13 +15044,14 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .END
 \#
 .MAC BIBLIOGRAPHY_STRING_ADVANCE END
-.    nr #BIB_STRING_ADVANCE (\\$1)
+.    nr #BIB_STRING_V_POS (u;\\$1)
 .END
 \#
-.MAC BIBLIOGRAPHY_STRING_CAPS END
-.   ie '\\$1'' .nr #BIB_STRING_CAPS 1
-.   el .nr #BIB_STRING_CAPS 0
+.MAC BIBLIOGRAPHY_STRING_V_POS END
+.    nr #BIB_STRING_V_POS (u;\\$1)
 .END
+.
+.ALIAS BIBLIOGRAPHY_HEADER_V_POS BIBLIOGRAPHY_STRING_V_POS
 \#
 .MAC BIBLIOGRAPHY_NO_COLUMNS END
 .    ie '\\$1'' .nr #BIB_NO_COLS 1
@@ -14182,18 +15124,18 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 \#   Sets #BIB_LIST to 1 for numbered list style, 0 for plain output
 \# *Notes:
 \#   Technically, user is supposed to enter PLAIN if s/he wants an
-\#   unumbered bibliography, but the el clause says "any arg but
-\#   LIST means unumbered."  Effectively, any arg but LIST produces
+\#   unnumbered bibliography, but the el clause says "any arg but
+\#   LIST means unnumbered."  Effectively, any arg but LIST produces
 \#   a "plain" bibliographic list.
 \#
-\#   The 2nd and 3rd args have the same options as the 2nd arg to LIST.
+\# The 2nd and 3rd args have the same options as the 2nd and 3rd
+\# args to LIST.
 \#
 .MAC BIBLIOGRAPHY_TYPE END
 .    ie '\\$1'LIST' \{\
 .       nr #BIB_LIST 1
-.       ie '\\$2'' \{\
+.       ie '\\$2'' \
 .          if '\\*[$BIB_LIST_SEPARATOR]'' .ds $BIB_LIST_SEPARATOR .
-.       \}
 .       el .ds $BIB_LIST_SEPARATOR \\$2
 .       ie '\\$3'' .ds $BIB_LIST_PREFIX
 .       el .ds $BIB_LIST_PREFIX \\$3
@@ -14225,8 +15167,8 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .    el .nr #BIB_SPACE (\\$1)
 .END
 \#
-\# Set up bibliography page
-\# ------------------------
+\# Bibliography (user space macro)
+\# -------------------------------
 \# *Function:
 \#   Sets up a new page, with title, ready to accept the output
 \#   of refer's $LIST$ or .R1 bibliography .R2
@@ -14234,135 +15176,15 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 \#   Bibliography pages are set up almost identically to endnotes pages.
 \#
 .MAC BIBLIOGRAPHY END
+.    if \\n[defer] .NEWPAGE
 .    ie '\\$1'' \{\
 .       rr #FN_REF
 .       rr #EN_REF
 .       nr #BIBLIOGRAPHY 1
 .       nr #BIB_FIRST_PAGE 1
-.       nr #HEADER_STATE \\n[#HEADERS_ON]
-.       ds $RESTORE_PAGENUM_STYLE \\*[$PAGENUM_STYLE]
-.       if \\n[#LINENUMBERS]=1 \{\
-.          NUMBER_LINES OFF
-.          nr #LINENUMBERS 2
-.       \}
-.       if \\n[#HEADERS_ON]=1 \
-.          if !\\n[#BIB_ALLOWS_HEADERS_ALL] .HEADERS OFF
-.       if \\n[#HEADER_STATE]=1 \{\
-.          ie \\n[#BIB_HDRFTR_CENTER]=1 .
-.          el .rm $HDRFTR_CENTER
-.       \}
-.       ie !\\n[#SUSPEND_PAGINATION] \{\
-.          if \\n[#PAGINATE]=1 \{\
-.             if \\n[#PAGE_NUM_V_POS]=1 \{\
-.                PAGENUM_STYLE \\*[$BIB_PN_STYLE]
-.                if \\n[#BIB_FIRST_PN] .PAGENUMBER \\n[#BIB_FIRST_PN]-1
-.                if r #BIB_NO_FIRST_PN .nr #PAGINATE 0
-.             \}
-.          \}
-.       \}
-.       el \{\
-.          ie \\n[#PAGE_NUM_V_POS]=2 .nr #PAGINATE 1
-.          el .nr #PAGINATE 0
-.       \}
-.       if \\n[#FOOTERS_ON]=1 \{\
-.          if !'\\*[$HDRFTR_CENTER_OLD]'' \
-.             ds $HDRFTR_CENTER \\*[$HDRFTR_CENTER_OLD]
-.       \}
-.       NEWPAGE
-.       if \\n[#FOOTERS_ON]=1 \{\
-.          ds $HDRFTR_CENTER \\*[$HDRFTR_CENTER_NEW]
-.          rm $HDRFTR_CENTER_OLD
-.          rm $HDRFTR_CENTER_NEW
-.       \}
-.       ie !\\n[#SUSPEND_PAGINATION] \{\
-.          if \\n[#PAGE_NUM_V_POS]=1 \{\
-.             if r #BIB_NO_FIRST_PN \{\
-.                if \\n[#PAGINATION_STATE]=1 .nr #PAGINATE 1
-.             \}
-.          \}
-.       \}
-.       el \
-.          if \\n[#PAGE_NUM_V_POS]=2 .nr #PAGINATE 0
-.       rr #PAGINATION_STATE
-.       PAGENUM_STYLE \\*[$BIB_PN_STYLE]
-.       if \\n[#BIB_FIRST_PN] .PAGENUMBER \\n[#BIB_FIRST_PN]
-.       if \\n[#HEADER_STATE]=1 \
-.          if \\n[#BIB_ALLOWS_HEADERS] .HEADERS
-.\" Collect bibliography title string for TOC
-.       nr #TOC_ENTRY_PN \\n%+\\n[#PAGE_NUM_ADJ]
-.       af #TOC_ENTRY_PN \\g[#PAGENUMBER]
-.       ds $TOC_TITLE_ITEM \\*[$BIB_STRING]\\|
-.       PDF_BOOKMARK 1 \\*[$BIB_STRING]
-.       TITLE_TO_TOC
-.\" End collection of bibliography title string for TOC
-.\" Process bibliography
-.       if \\n[#PRINT_STYLE]=1 .vs \\n[#BIB_LEAD]u
-.       if \\n[#PRINT_STYLE]=2 \{\
-.          if \\n[#BIB_NO_COLS] \{\
-.             if \\n[#COLUMNS] .nr #COLUMNS_WERE_ON 1
-.             nr #COLUMNS 0
-.          \}
-.          nr #RESTORE_DOC_LEAD \\n[#DOC_LEAD]
-.          ie \\n[#ADJ_BIB_LEAD] .nr #DOC_LEAD \\n[#BIB_LEAD]
-.          el .DOC_LEAD \\n[#BIB_LEAD]u
-.       \}
-.       vpt 0
-.       ie r#BIB_STRING_ADVANCE .sp |\\n[#BIB_STRING_ADVANCE]u-1v
-.       el .sp |\\n[#T_MARGIN]u-1v
-.       vpt 1
-.       mk bc
-.       if \\n[#SLANT_ON] \{\
-\*[SLANTX]\c
-.       \}
-.       sp
-.       if !'\\*[$BIB_STRING]'' \{\
-.          if \\n[#PRINT_STYLE]=1 \{\
-.             TYPEWRITER
-.             vs \\n[#BIB_LEAD]u
-.          \}
-.          if \\n[#PRINT_STYLE]=2 \{\
-.             LL \\n[#DOC_L_LENGTH]u
-.             ta \\n[.l]u
-.             if \\n[#COLUMNS] \{\
-.                ie \\n[#BIB_NO_COLS] .LL \\n[#DOC_L_LENGTH]u
-.                el .LL \\n[#COL_L_LENGTH]u
-.                ta \\n[.l]u
-.             \}
-.             FAMILY  \\*[$BIB_STRING_FAM]
-.             FT      \\*[$BIB_STRING_FT]
-.             ps \\n[#BIB_PS]u\\*[$BIB_STRING_SIZE_CHANGE]
-.             vs      \\n[#BIB_LEAD]u
-.          \}
-.          if '\\*[$BIB_STRING_QUAD]'LEFT'   .LEFT
-.          if '\\*[$BIB_STRING_QUAD]'C'      .CENTER
-.          if '\\*[$BIB_STRING_QUAD]'CENTER' .CENTER
-.          if '\\*[$BIB_STRING_QUAD]'CENTRE' .CENTER
-.          if '\\*[$BIB_STRING_QUAD]'R'      .RIGHT
-.          if '\\*[$BIB_STRING_QUAD]'RIGHT'  .RIGHT
-.          EOL
-.          if \\n[#BIB_STRING_CAPS] .CAPS
-.          ie \\n[#BIB_STRING_UNDERLINE] \{\
-.             nr #FROM_BIB_STRING 1
-.             ie \\n[#BIB_STRING_UNDERLINE]=2 \
-.                UNDERSCORE2 "\\*[$BIB_STRING]"
-.             el .UNDERSCORE "\\*[$BIB_STRING]"
-.             rr #FROM_BIB_STRING
-.          \}
-.          el .PRINT "\\*[$BIB_STRING]"
-.       \}
-.       CAPS OFF
-.       FAMILY \\*[$BIB_FAMILY]
-.       FT \\*[$BIB_FT]
-.       ps -\\*[$BIB_STRING_SIZE_CHANGE]
-.       if \\n[#PRINT_STYLE]=1 \{\
-.          ie \\n[#SINGLE_SPACE]=1 .ALD \\n[#BIB_LEAD]*3u
-.          el \{\
-.             ie \\n[#BIB_SINGLESPACE]=1 .ALD \\n[#BIB_LEAD]u*3u
-.             el .ALD \\n[#BIB_LEAD]u
-.          \}
-.       \}
-.       if \\n[#PRINT_STYLE]=2 .ALD \\n[#BIB_LEAD]u*2u
-.       QUAD \\*[$BIB_QUAD]
+.       nr #SKIP_FOOTER +1
+.       SETUP_BIBLIOGRAPHY
+.       nr #SKIP_FOOTER -1
 .       if \\n[#PRINT_STYLE]=1 \{\
 .          ie \\n[#SINGLE_SPACE]=1 .vs \\n[#BIB_LEAD]u
 .          el \{\
@@ -14394,6 +15216,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .       chop BIB
 .       BIB
 .    \}
+.    rr #BIBLIOGRAPHY
 .END
 \#
 \# ====================================================================
@@ -14404,7 +15227,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 \#
 .ds $TOC_PN \\*[ST102]\F[\\*[$TOC_PN_FAM]]\f[\\*[$TOC_PN_FT]]\
 \s[\\n[#TOC_PS]u]^\\*[ST102X]\\*[ST103]\s[\\*[$TOC_PN_SIZE_CHANGE]]\
-\|\|\|\h'\w'0'u*\\n[#TOC_PN_PADDING]u'\\*[ST103X]
+\h'.2n'\h'\w'0'u*\\n[#TOC_PN_PADDING]u'\\*[ST103X]
 \#
 .ds $TOC_PN_TYPEWRITE \\*[ST102]^\\*[ST102X]\\*[ST103]\
 \h'\w'0'u*\\n[#TOC_PN_PADDING]u'\\*[ST103X]
@@ -14419,7 +15242,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .     rr #SKIP_ENTRY
 \!.  \}
 \!.  el \{\
-.       br
+.       TQ
 .       ie \\n[#PRINT_STYLE]=1 \{\
 \!.        fam \\*[$TYPEWRITER_FAM]
 \!.        ft  R
@@ -14431,8 +15254,8 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 \!.           ps \\n[#TOC_PS]u\\*[$TOC_HEAD_\\n[#LEVEL]_SIZE]
 .          \}
 .          el \{\
-\!.           FAMILY  \\*[$TOC_TITLE_FAM]
-\!.           FT      \\*[$TOC_TITLE_FT]
+\!.           FAMILY \\*[$TOC_TITLE_FAM]
+\!.           FT     \\*[$TOC_TITLE_FT]
 \!.           ps \\n[#TOC_PS]u\\*[$TOC_TITLE_SIZE]
 .          \}
 .       \}
@@ -14461,49 +15284,53 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .       \}
 \!.     vpt 0
 .       ie '\\$0'HD_TO_TOC' \{\
+.          if \\n[#PRINT_STYLE]=1 \{\
+.             ds $TOC_HEAD_\\n[#LEVEL]_FAM] \\*[$TYPEWRITER_FAM]
+.             ds $TOC_HEAD_\\n[#LEVEL]_FT]  R
+.          \}
 \!.        PAD \
-"\\f[\\*[$TOC_HEAD_\\n[#LEVEL]_FAM]\
+"\f[\\*[$TOC_HEAD_\\n[#LEVEL]_FAM]\
 \\*[$TOC_HEAD_\\n[#LEVEL]_FT]]\
 \h'\\\\n[#TOC_INDENT_ADJ]u'\h'\\n[#TOC_HEAD_\\n[#LEVEL]_INDENT]u'\
 \\*[$TOC_HD_NUM]\\*[$TOC_HEAD_\\n[#LEVEL]_ITEM]\\*[$TOC_PN\\*[_TYPEWRITE]]" \
 "\\*[PDFBOOKMARK.NAME]"
 .       \}
 .       el \{\
+.          if \\n[#PRINT_STYLE]=1 \{\
+.             ds $TOC_TITLE_FAM \\*[$TYPEWRITER_FAM]
+.             ds $TOC_TITLE_FT  R
+.          \}
 \!.        PAD \
-"\\f[\\*[$TOC_TITLE_FAM]\\*[$TOC_TITLE_FT]]\
+"\f[\\*[$TOC_TITLE_FAM]\\*[$TOC_TITLE_FT]]\
 \h'\\n[#TOC_TITLE_INDENT]u'\\*[$TOC_TITLE_ITEM]\\*[$TOC_PN\\*[_TYPEWRITE]]" \
 "\\*[PDFBOOKMARK.NAME]"
 .       \}
-.       if '\\$0'HD_TO_TOC' \{\
+.       ie '\\$0'HD_TO_TOC' \
 \!.        if \\n[#TOC_HEAD_\\n[#LEVEL]_CAPS]=1 .CAPS OFF
-.       \}
-.       if !'\\$0'HD_TO_TOC' \{\
+.       el \
 \!.        if \\n[#TOC_TITLE_CAPS]=1 .CAPS OFF
-.       \}
 \!.     PAD_MARKER #
 \!.     EOL
 \!.     ST 102 L
-\!.     ST 103 R
+\!.     ST 103 R QUAD
 .       if \\n[#PRINT_STYLE]=2 \{\
 \!.        FAMILY  \\*[$TOC_PN_FAM]
 \!.        FT      \\*[$TOC_PN_FT]
 \!.        ps \\n[#TOC_PS]u
 .       \}
 \!.     TAB 102
-\!.     PRINT \\*[LEADER]
+\!.     PRINT \fR\\*[LEADER]\f[]
 \!.     TN
 .       if \\n[#PRINT_STYLE]=2 \{\
-\!.        ps \\*[$TOC_PN_SIZE_CHANGE]u
+\!.        ps \\*[$TOC_PN_SIZE_CHANGE]
 .       \}
 \!.     PRINT \\n[#TOC_ENTRY_PN]
-\!.     TQ
-\!.     vpt
 \!. \}
 .   da
 .   ev
 .END
-\#
-.ALIAS HD_TO_TOC  TO_TOC
+.
+.ALIAS HD_TO_TOC    TO_TOC
 .ALIAS TITLE_TO_TOC TO_TOC
 \#
 \# Control macros for toc
@@ -14552,6 +15379,14 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .          rr #TOC_TITLE_CAPS
 .          shift
 .       \}
+.       if '\\$1'SMALLCAPS' \{\
+.          nr #TOC_TITLE_SMALLCAPS 1
+.          shift
+.       \}
+.       if '\\$1'NO_SMALLCAPS' \{\
+.          rr #TOC_TITLE_SMALLCAPS
+.          shift
+.       \}
 .       if '\\$1'INDENT' \{\
 .          shift
 .          nr #TOC_TITLE_INDENT \\$1
@@ -14573,6 +15408,45 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .    ds $TOC_HEADER_STRING \\$1
 .END
 \#
+\# TOC HEADER CAPS and SMALLCAPS
+\# -----------------------------
+\# *Arguments:
+\#   <none> | <anything>
+\# *Function:
+\#   Turns capitalization or smallcaps style of the toc title string
+\#   on or off.
+\# *Notes:
+\#   Users may want the toc title string to be in
+\#   caps, but the page header to be in lower case.  If the
+\#   argument to TOC_HEADER_STRING is in lower case and
+\#   TOC_HEADER_CAPS is turned on, this is exactly what will
+\#   happen.  Ditto for SMALLCAPS.
+\#
+.MAC TOC_HEADER_CAPS END
+.   ie '\\$1'' .nr #TOC_STRING_CAPS 1
+.   el .nr #TOC_STRING_CAPS 0
+.END
+.
+.MAC TOC_HEADER_SMALLCAPS END
+.   ie '\\$1'' .nr #TOC_STRING_SMALLCAPS 1
+.   el .nr #TOC_STRING_SMALLCAPS 0
+.END
+.
+\#
+\# TOC VERTICAL PLACEMENT
+\# ----------------------
+\# *Argument:
+\#   <distance from page top>
+\# *Function:
+\#   Creates register #TOC_HEADER_V_POS.
+\# *Notes:
+\#   Default is same as normal docheader position.
+\#
+.MAC TOC_HEADER_V_POS END
+.    nr #TOC_HEADER_V_POS (u;\\$1)
+.END
+\#
+\#
 \# TOC POINT SIZE
 \# --------------
 \# *Argument:
@@ -14669,8 +15543,43 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .    el .nr #SPACE_TOC_ITEMS 1
 .END
 \#
-\# NUMBERING OF TOC ENTRIES
-\# ------------------------
+\# NUMBERING OF TOC CHAPTER/SECTION ENTRIES
+\# ----------------------------------------
+\# *Arguments:
+\#   <none> | <anything>
+\# *Function:
+\#   Determines whether chapter numbers are prefixed to title
+\#   entries in the TOC (title here means chapter/chapter-title
+\#   or, if the doctype is DEFAULT or NAMED, the section title.
+\# *Notes:
+\#   Aliased as TOC_PREFIX_SECTION_NUMBER.
+\#
+.MAC TOC_PREFIX_CHAPTER_NUMBER END
+.    ie '\\$1'' .nr #TOC_PREFIX_CH_NUM 1
+.    el .rr #TOC_PREFIX_CH_NUM
+.END
+.
+.ALIAS TOC_PREFIX_SECTION_NUMBER TOC_PREFIX_CHAPTER_NUMBER
+\#
+\# PADDING OF TOC CHAPTER/SECTION NUMBERS
+\# --------------------------------------
+\# *Arguments:
+\#   <amount of padding> | <anything>
+\# *Function:
+\#   Insert figure spaces before toc chapter numbers so they
+\#   right align.
+\# *Notes:
+\#   Aliased as PAD_TOC_SECTION_NUMBERS.
+\#
+.MAC PAD_TOC_CHAPTER_NUMBERS END
+.    ie !'\\$1'' .nr #PAD_TOC_CH_NUM \\$1
+.    el .rr #PAD_TOC_CH_NUM
+.END
+.
+.ALIAS PAD_TOC_SECTION_NUMBERS PAD_TOC_CHAPTER_NUMBERS
+\#
+\# NUMBERING OF TOC HEAD ENTRIES
+\# -----------------------------
 \# *Arguments:
 \#   FULL | TRUNCATE | NONE
 \# *Function:
@@ -14724,6 +15633,27 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .    if !'\\$1'' .ds $TOC_AUTHORS \\$1
 .END
 \#
+\# TABLE OF CONTENTS PAGE SETUP
+\# ----------------------------
+\# *Arguments:
+\#   <none> | <anything>
+\# *Function:
+\#   Some changes to the TOC layout (e.g. margins and page headers)
+\#   are not covered by the TOC and endnotes control macros.  This
+\#   macro permits access to any and all page setup macros not so
+\#   covered.
+\# *Notes
+\#   Wraps a diversion that ends when the macro is invoked with an
+\#   argument.  The contained formatting macros must be preceded by
+\#   '\!'.  The diversion is output before START in TOC.
+\#
+.MAC TOC_PAGE_SETTINGS END
+.    nr #TOC_PAGE_PARAMS 1
+.    ie '\\$1'' \
+.       di TOC_PAGE_PARAMS
+.    el .di
+.END
+\#
 \# TABLE OF CONTENTS
 \# -----------------
 \# *Arguments:
@@ -14734,15 +15664,25 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 \#   diversion.
 \#
 .MAC TOC END
+.    ie (\\n[@TOP]=0)&(\\n[.t]<=\\n[.v]) \
+'       br  \" When last line of text is on or near b-margin.
+.    el .br \" All other cases
+.    if dPDF.EXPORT \
+.       if \\n[#FLEX_ACTIVE] \
+.          if !\\n[#NO_FLEX] \
+.             tm .ds pre-toc-\\n%@\\n[#COL_NUM] 1
+.    if \\n[#TOC_RV_SWITCH]=1 .nr #TOC_RV_SWITCH 2
 .    char \[leader] " .
 .    LEADER_CHARACTER \[leader]
-.    ie \\n[#COLLATED_DOC] \{\
+.    if !\\n[#TOC_HEAD_1_INDENT] \
 .       nr #TOC_INDENT_ADJ 1.5m
-.       if \\n[#PREFIX_CH_NUM] .nr #TOC_INDENT_ADJ \\n[#TOC_CH_NUM_INDENT]
-.    \}
-.    el \{\
-.       nr #SKIP_ENTRY 1
-.       nr #TOC_INDENT_ADJ 0
+.    if \\n[#TOC_PREFIX_CH_NUM] \
+.       nr #TOC_INDENT_ADJ \\n[#TOC_CH_NUM_INDENT]
+.    if !\\n[#DOC_TYPE]=2 \{\
+.       if !'\\$1'INCLUDE_TITLE' \{\
+.          if r #LEVEL .nr #SKIP_ENTRY 1
+.          nr #TOC_INDENT_ADJ 0
+.       \}
 .    \}
 .    nr #TOC 1
 .    nr TOC.RELOCATE 0
@@ -14757,7 +15697,8 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .          FOOTERS \" Have to turn FOOTERS on for next bit to work, so we can't skip this step
 .    \}
 .    if \\n[#FOOTERS_ON]=1 \{\
-.       if !'\\*[$HDRFTR_CENTER_OLD]'' .ds $HDRFTR_CENTER \\*[$HDRFTR_CENTER_OLD]
+.       if !'\\*[$HDRFTR_CENTER_OLD]'' \
+.          ds $HDRFTR_CENTER \\*[$HDRFTR_CENTER_OLD]
 .       ie \\n[#PAGINATE_TOC]=1 .PAGINATE
 .       el .PAGINATION OFF
 .    \}
@@ -14765,10 +15706,12 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .    rr #COLUMNS
 .    COLLATE
 .    if \\n[#PRINT_STYLE]=1 \{\
-.       if \\n[#SINGLE_SPACE] .vs 24
+.       rr #IGNORE
+.       if \\n[#SINGLE_SPACE] .DOC_LEAD 24
 .       DOC_LEAD_ADJUST
+.       TRAPS
+.       nr #IGNORE 1
 .    \}
-.    if \\n[#PRINT_STYLE]=2 .vs \\n[#TOC_LEAD]u
 .    if \\n[#FINIS] \{\
 .       if \\n[#FOOTERS_WERE_ON] .FOOTERS  \" Finally, turn footers on if they were on
 .       rr #FOOTERS_WERE_ON
@@ -14784,39 +15727,65 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .    rm $HDRFTR_CENTER_OLD
 .    rm $HDRFTR_CENTER_NEW
 .    rr #COLLATED_DOC
-.    DOCHEADER OFF \\n[#T_MARGIN]u-\\n[#DOC_LEAD]u
 .    if !r #TOC_START_PAGENUM .nr #TOC_START_PAGENUM 1
-.       PAGENUMBER \\n[#TOC_START_PAGENUM]
+.    PAGENUMBER \\n[#TOC_START_PAGENUM]
 .    if \\n[#LINENUMBERS]=2 .nr #LINENUMBERS 3
-.    L_MARGIN   \\n[#DOC_L_MARGIN]u
-.    LL         \\n[#DOC_L_LENGTH]u
+.    L_MARGIN \\n[#DOC_L_MARGIN]u
+.    LL       \\n[#DOC_L_LENGTH]u
 .    HEADER_CENTER "\\*[$TOC_HEADER_STRING]
 .    if \\n[#SLANT_ON] .nop \\*[SLANTX]
-.    START
 .    PAGENUM_STYLE \\*[$TOC_PN_STYLE]
+.    PAGENUM_FAMILY \\*[$TOC_PN_FAM]
+.    if r #TOC_PAGE_PARAMS .TOC_PAGE_PARAMS
+.    ie \\n[#ADJ_TOC_LEAD] \{\
+.       DOC_LEAD \\*[$TOC_LEAD] ADJUST
+.       TRAPS
+.    \}
+.    el .DOC_LEAD \\*[$TOC_LEAD]
+.    ie \\n[#TOC_HEADER_V_POS] \
+.      DOCHEADER OFF \\n[#TOC_HEADER_V_POS]u-\\n[#DOC_LEAD]u 
+.    el .DOCHEADER OFF \\n[#T_MARGIN]u-\\n[#DOC_LEAD]u
+.    if (\\n[#PRINT_STYLE]=1)&(\\n[#SINGLE_SPACE]=1) \
+.       DOCHEADER OFF \\n[#T_MARGIN]u-(\\n[#DOC_LEAD]u*2u)
+.    START
 .    PDF_BOOKMARK 1 \\*[$TOC_HEADER_STRING]
 .    if \\n[#PRINT_STYLE]=1 .TYPEWRITER
 .    if \\n[#PRINT_STYLE]=2 \{\
-.       FAMILY  \\*[$TOC_HEADER_FAM]
-.       FT      \\*[$TOC_HEADER_FT]
+.       FAMILY \\*[$TOC_HEADER_FAM]
+.       FT     \\*[$TOC_HEADER_FT]
 .       ps \\n[#TOC_PS]u\\*[$TOC_HEADER_SIZE_CHANGE]
+.       if \\n[#TOC_HEADER_COLOR]=1 \
+.          COLOR \\*[$TOC_HEADER_COLOR]
 .    \}
-.    ie \\n[#PRINT_STYLE]=1 \{\
-.       CAPS
+.    QUAD \\*[$TOC_HEADER_QUAD]
+.    if \\n[#TOC_STRING_CAPS] .CAPS
+.    if \\n[#TOC_STRING_SMALLCAPS] .SMALLCAPS
+.    if \\n[#PRINT_STYLE]=1 \
 .       UNDERSCORE 3p "\\*[$TOC_HEADER_STRING]"
-.       CAPS      OFF
+.    if \\n[#PRINT_STYLE]=2 \{\
+.       ie \\n[#TOC_HEADER_UNDERLINE] \{\
+.          ds $TITLE_TYPE TOC_HEADER
+.          ie \\n[#TOC_HEADER_UNDERLINE]=2 \
+.             UNDERSCORE2 \\*[$TOC_UNDERLINE_GAP] \\*[$TOC_RULE_GAP] "\\*[$TOC_HEADER_STRING]"
+.          el .UNDERSCORE "\\*[$TOC_HEADER_STRING]"
+.       \}
+.       el .PRINT \\*[$TOC_HEADER_STRING]
 .    \}
-.    el .PRINT \\*[$TOC_HEADER_STRING]
+.    SMALLCAPS OFF
+.    CAPS OFF
+.    if \\n[#TOC_HEADER_COLOR]=1 .gcolor
+.    br
 .    sp
+.    SHIM_1
 .    nf
 .    TOC_ENTRIES
-.    rr #TOC
 .    if \\n[#LINENUMBERS]=3 \{\
 .       NUMBER_LINES RESUME
 .       nr #LINENUMBERS 1
 .       nn 1
 .    \}
 .    rr #TOC
+.    rr #TOC_RV_SWITCH
 .    pdfsync
 .END
 \#
@@ -14878,12 +15847,20 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .MAC COL_NEXT END
 .    if \\n[#COLUMNS] \{\
 .       nr #COL_NEXT 1
+.       vpt 0
+.       if !'\\$1'internal' \
+.          if dPDF.EXPORT \
+.             if \\n[#FLEX_ACTIVE] \
+.                if !\\n[#NO_FLEX] \
+.                   if \\n[#COL_NUM]>1 \
+.                      tm .ds page-\\n%@\\n[#COL_NUM] 1
 .       ie '\\$0'COL_NEXT' .br
 .       el \{\
 .          brp
 .          RLD 1v
 .       \}
-.       ie \\n[#COL_NUM]=\\n[#NUM_COLS] .bp
+.       vpt
+.       ie \\n[#COL_NUM]=\\n[#NUM_COLS] .NEWPAGE
 .       el .FOOTER
 .    \}
 .END
@@ -14911,25 +15888,25 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 \#   completely if the level in which it's invoked is the first.
 \#
 .MAC LIST END
+.    br
 .    ds $1ST_LETTER \\$1
 .    if !'\\*[$1ST_LETTER]'' .substring $1ST_LETTER 0 0
 .    if '\\*[$1ST_LETTER]'r' .ds $1ST_LETTER R
 .    ie '\\*[$1ST_LETTER]'R' \{\
+.       if r #ROMAN_LIST .rr #ROMAN_LIST
+.       if '\\$1'ROMAN'  .nr #ROMAN_LIST 1
+.       if '\\$1'roman'  .nr #ROMAN_LIST 1
 .       ds $LAST_CHAR \\$1
 .       substring $LAST_CHAR -1
 .       if !\B'\\*[$LAST_CHAR]' \{\
-.          if !'\\$1'ROMAN' \{\
+.          if !r #ROMAN_LIST \{\
 .             LIST OFF
 .             return
 .          \}
-.          if !'\\$1'roman' \{\
-.             LIST OFF
-.             return
-.          \}
-.          tm1 "[mom]: You must append a number to the \\$1 argument to \\$0.
+.          tm1 "[mom]: You must append a number to the '\\$1' argument to \\$0.
 .          tm1 "       The number should be the total number of items in this list.
 .          tm1 "       See the documentation.
-.          ab Aborting '\\n[.F]' at \\$0, line \\n[.c].
+.          ab   [mom]: Aborting '\\n[.F]' at \\$0, line \\n[.c].
 .       \}
 .       ds $ROMAN_WIDTH \\$1
 .          substring $ROMAN_WIDTH 1
@@ -14942,52 +15919,85 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .    \}
 .    el .ds $LIST_ARG_1 \\$1
 .    if !r#DEPTH \{\
-.       nr #STORED_HL_INDENT \\n[#HL_INDENT]
-.       nr #STORED_T_INDENT  \\n[#T_INDENT]
+.       if \\n[#INDENT_ACTIVE] \{\
+.          nr #STORED_HL_INDENT \\n[#HL_INDENT]
+.          nr #STORED_T_INDENT  \\n[#T_INDENT]
+.          if \\n[#INDENT_STYLE_LEFT] \
+.             nr #STORED_L_INDENT \\n[#L_INDENT]
+.          if \\n[#INDENT_STYLE_RIGHT] \
+.             nr #STORED_R_INDENT \\n[#R_INDENT]
+.          if \\n[#INDENT_STYLE_BOTH] \{\
+.             nr #STORED_BL_INDENT \\n[#BL_INDENT]
+.             nr #STORED_BR_INDENT \\n[#BR_INDENT]
+.          \}
+.       \}
 .       nr #CURRENT_L_LENGTH \\n[.l]
 .       nr #DEPTH 0 1
 .       if \\n[#INDENT_ACTIVE]=1 \{\
-.          if \\n[#INDENT_LEFT_ACTIVE]=1 \{\
-.             nr #STORED_L_INDENT \\n[#L_INDENT]
+.          if \\n[#INDENT_LEFT_ACTIVE]=1 \
 .             nr #RESTORE_PREV_INDENT 1
-.          \}
 .          if \\n[#INDENT_BOTH_ACTIVE]=1 \{\
-.             nr #STORED_BL_INDENT \\n[#BL_INDENT]
-.             nr #STORED_BR_INDENT \\n[#BR_INDENT]
-.             IBX
+.             ie \\n[#DOC_TYPE]=5 .IBX CLEAR
+.             el .IBX
 .             nr #ORIG_L_LENGTH \\n[.l]
 .             IB
 .             nr #RESTORE_PREV_INDENT 2
 .          \}
 .          if \\n[#INDENT_RIGHT_ACTIVE]=1 \{\
-.             nr #STORED_R_INDENT \\n[#R_INDENT]
-.             IRX
+.             ie \\n[#DOC_TYPE]=5 .IRX CLEAR
+.             el .IRX
 .             nr #ORIG_L_LENGTH \\n[.l]
 .             IR
 .             nr #RESTORE_PREV_INDENT 3
-.             if \\n[#INDENT_LEFT_ACTIVE]=1 .nr #RESTORE_PREV_INDENT 4
+.             if \\n[#INDENT_LEFT_ACTIVE]=1 \
+.                nr #RESTORE_PREV_INDENT 4
 .          \}
 .       \}
 .    \}
-.    if \\n[#NUM_ARGS]=0 \{\
+.    ds pre-list-quad \\*[$QUAD_VALUE]
+.    substring pre-list-quad 0 0
+.    if '\\*[pre-list-quad]'C' \{\
+.       if !'\\n[.z]'LIST*DIV' \{\
+.          nr #PRE_LIST_QUAD \\n[.j]
+.          nr #LIST_CENTER 1
+.          if !'\\n[.z]'LIST*DIV' .di LIST*DIV
+\!.        nr #IN_LIST 1
+.          ad l
+.       \}
+.    \}
+.    if '\\*[pre-list-quad]'R' \{\
+.       if !'\\n[.z]'LIST*DIV' \{\
+.          nr #PRE_LIST_QUAD \\n[.j]
+.          nr #LIST_RIGHT 1
+.          if !'\\n[.z]'LIST*DIV' .di LIST*DIV
+\!.        nr #IN_LIST 1
+.          ad l
+.       \}
+.    \}
+.    ie \\n[#NUM_ARGS]=0 \{\
 .       nr #ARGS_TO_LIST 1 \" So default behaves as if LIST BULLET
 .       ds $ENUMERATOR\\n+[#DEPTH] \[bu]
 .       ds $ENUMERATOR_TYPE\\n[#DEPTH] other
 .       ds $SEPARATOR
+.       ds $PREFIX
+.       ds $SEPARATOR\\n[#DEPTH]
+.       ds $PREFIX\\n[#DEPTH]
 .    \}
-.    if \\n[#NUM_ARGS]>0 \{\
+.    el \{\
 .       rr #ARGS_TO_LIST \" Clear this before processing arg 1.
 .       if '\\*[$LIST_ARG_1]'DASH' \{\
 .          nr #ARGS_TO_LIST 1
 .          ds $ENUMERATOR\\n+[#DEPTH] \[en]
 .          ds $ENUMERATOR_TYPE\\n[#DEPTH] other
 .          ds $SEPARATOR\\n[#DEPTH]
+.          ds $PREFIX\\n[#DEPTH]
 .       \}
 .       if '\\*[$LIST_ARG_1]'BULLET' \{\
 .          nr #ARGS_TO_LIST 1
 .          ds $ENUMERATOR\\n+[#DEPTH] \[bu]
 .          ds $ENUMERATOR_TYPE\\n[#DEPTH] other
 .          ds $SEPARATOR\\n[#DEPTH]
+.          ds $PREFIX\\n[#DEPTH]
 .       \}
 .       if '\\*[$LIST_ARG_1]'DIGIT' \{\
 .          nr #ARGS_TO_LIST 1
@@ -15024,9 +16034,8 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .          if \\n[#NUM_ARGS]>=2 \{\
 .             ie '\\$2'NONE' .ds $SEPARATOR\\n[#DEPTH]
 .             el .ds $SEPARATOR\\n[#DEPTH] \\$2
-.             if \\n[#NUM_ARGS]=3 \{\
+.             if \\n[#NUM_ARGS]=3 \
 .                ds $PREFIX\\n[#DEPTH] \\$3
-.             \}
 .          \}
 .       \}
 .       if '\\*[$1ST_LETTER]'R' \{\
@@ -15050,6 +16059,26 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .          ds $SEPARATOR\\n[#DEPTH]
 .          ds $PREFIX\\n[#DEPTH]
 .       \}
+.       if '\\*[$LIST_ARG_1]'VARIABLE' \{\
+.          if \\n[#NUM_ARGS]<2 \{\
+.             tm1 "[mom]: You must follow the \\$1 argument to \\$0 with the widest
+.             tm1 "       enumerator to be used.  See the documentation.
+.             ab   [mom]: Aborting '\\n[.F]' at \\$0, line \\n[.c].
+.          \}
+.          nr #ARGS_TO_LIST 1
+.          ds $ENUMERATOR\\n+[#DEPTH]
+.          ds $ENUMERATOR_TYPE\\n[#DEPTH] variable
+.          ds $ENUMERATOR_WIDTH\\n[#DEPTH] \w'\\$2\ '
+.          ds $SEPARATOR\\n[#DEPTH]
+.          ds $PREFIX\\n[#DEPTH]
+.       \}
+.       if '\\*[$LIST_ARG_1]'PLAIN' \{\
+.          nr #ARGS_TO_LIST 1
+.          ds $ENUMERATOR\\n+[#DEPTH]
+.          ds $ENUMERATOR_TYPE\\n[#DEPTH] plain
+.          ds $SEPARATOR\\n[#DEPTH]
+.          ds $PREFIX\\n[#DEPTH]
+.       \}
 .       if \\n[#NUM_ARGS]=1 \{\
 .          if !r#ARGS_TO_LIST \{\
 .             ie \\n[#DEPTH]=1 \{\
@@ -15077,17 +16106,23 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .    if '\\*[$ENUMERATOR_TYPE\\n[#DEPTH]]'register' \{\
 .       nr #LIST_INDENT\\n[#DEPTH] \
 \w'\\*[$PREFIX\\n[#DEPTH]]m\\*[$SEPARATOR\\n[#DEPTH]]\ '
-.       if '\\*[$LIST_ARG_1]'ALPHA' nr #LIST_INDENT\\n[#DEPTH] \
+.       if '\\*[$LIST_ARG_1]'ALPHA' .nr #LIST_INDENT\\n[#DEPTH] \
 \w'\\*[$PREFIX\\n[#DEPTH]]M\\*[$SEPARATOR\\n[#DEPTH]]\ '
 .    \}
 .    if '\\*[$ENUMERATOR_TYPE\\n[#DEPTH]]'roman' \
 .       GET_ROMAN_INDENT
 .    if '\\*[$ENUMERATOR_TYPE\\n[#DEPTH]]'other' \
-.       nr #LIST_INDENT\\n[#DEPTH] \w'\\*[$ENUMERATOR\\n[#DEPTH]]\0'
+.       nr #LIST_INDENT\\n[#DEPTH] \w'\\*[$ENUMERATOR\\n[#DEPTH]]\ '
+.    if '\\*[$ENUMERATOR_TYPE\\n[#DEPTH]]'variable' \
+.       nr #LIST_INDENT\\n[#DEPTH] \\*[$ENUMERATOR_WIDTH\\n[#DEPTH]]
 .    ll \\n[#CURRENT_L_LENGTH]u
 .    ie \\n[#DEPTH]=1 \{\
 .       ie \\n[#INDENT_ACTIVE]=1 \{\
-.          if \\n[#INDENT_LEFT_ACTIVE]=1 \{\
+.          if \\n[#INDENT_STYLE_LEFT]=1 \{\
+.             if \\n[#L_INDENT_ILX] \{\
+.                rr #L_INDENT 
+.                rr #L_INDENT_ILX
+.             \}
 .             nr #L_INDENT \\n[#L_INDENT]+\\n[#LIST_INDENT\\n[#DEPTH]]
 .             nr #HL_INDENT\\n[#DEPTH] \\n[#LIST_INDENT\\n[#DEPTH]]
 .             nr #LIST_INDENT\\n[#DEPTH] \\n[#L_INDENT]
@@ -15121,12 +16156,16 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 \# ITEM
 \# ----
 \# *Arguments:
-\#   none
+\#   <none> | <space before item>
 \# *Function:
 \#   Prints enumerator for a given list depth and prepares mom to
 \#   receive the text of an item.
 \#
 .MAC ITEM END
+.    ie \\n[#NUM_ARGS]=2 .sp \\$2
+.    el \
+.       if \B'\\$1' .sp \\$1
+.    if '\\*[$ENUMERATOR_TYPE\\n[#DEPTH]]'plain' .nop 
 .    if !r#DEPTH .return
 .    if \\n[#LINENUMBERS]=1 \{\
 .       NUMBER_LINES OFF
@@ -15140,7 +16179,8 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .    IL
 .    nr #IN_ITEM 1
 .    ll \\n[#CURRENT_L_LENGTH]u \" Set ll again because IL turns IB off.
-.    TRAP OFF
+.    ie !'\\n[.z]'' \!.TRAP OFF
+.    el .TRAP OFF
 .    HI \\n[#HL_INDENT\\n[#DEPTH]]u
 .    if '\\*[$SEPARATOR\\n[#DEPTH]]')' .nr #SEP_TYPE 1
 .    if '\\*[$SEPARATOR\\n[#DEPTH]]']' .nr #SEP_TYPE 1
@@ -15242,6 +16282,8 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .       \}
 .       if '\\*[$ENUMERATOR_TYPE\\n[#DEPTH]]'other' \
 .          PRINT \\*[$ENUMERATOR\\n[#DEPTH]]\\*[$SEPARATOR\\n[#DEPTH]]
+.       if '\\*[$ENUMERATOR_TYPE\\n[#DEPTH]]'variable' \
+.          PRINT  \\$1
 .    \}
 .    rr #SEP_TYPE
 .    EOL
@@ -15249,7 +16291,8 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .       IL +\\n[#REF_BIB_INDENT]u
 .       ti \\n[#L_INDENT]u-\\n[#REF_BIB_INDENT]u
 .    \}
-.    TRAP
+.    ie !'\\n[.z]'' \!.TRAP
+.    el .TRAP
 .    if \\n[#KERN_WAS_ON]=1 \{\
 .       KERN
 .       rr #KERN_WAS_ON
@@ -15528,28 +16571,44 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 \#   effect prior to LIST.
 \#
 .MAC QUIT_LISTS END
+.   br
+.   if '\\n[.z]'LIST*DIV' \{\
+\!.    rr #IN_LIST
+.      di
+.   \}
 .   IQ CLEAR
 .   nr #HL_INDENT \\n[#STORED_HL_INDENT]
 .   nr #T_INDENT  \\n[#STORED_T_INDENT]
+.   nr #L_INDENT  \\n[#STORED_L_INDENT]
+.   nr #R_INDENT \\n[#STORED_R_INDENT]
+.   nr #BL_INDENT \\n[#STORED_BL_INDENT]
+.   nr #BR_INDENT \\n[#STORED_BR_INDENT]
 .   rr #STORED_HL_INDENT
-.   if \\n[#RESTORE_PREV_INDENT]=1 \{\
-.      nr #L_INDENT  \\n[#STORED_L_INDENT]
-.      IL
-.      rr #STORED_L_INDENT
+.   if \\n[#LIST_CENTER] \
+.      nr #LIST_OFFSET_VALUE \\n[.l]-\\n[dl]/2
+.   if \\n[#LIST_RIGHT] \
+.      nr #LIST_OFFSET_VALUE \\n[.l]-\\n[dl]
+.   po +\\n[#LIST_OFFSET_VALUE]u
+.   if \\n[.u] .nr #FILLED 1
+.   nf
+.   if dLIST*DIV \{\
+.      LIST*DIV
+.      rm LIST*DIV
 .   \}
+.   if \\n[#FILLED] .fi
+.   if !\\n[#PRE_LIST_QUAD]=\\n[.j] .ad \\n[#PRE_LIST_QUAD]
+.   rr #FILLED
+.   po
+.   rr #PRE_LIST_QUAD
+.   if \\n[#RESTORE_PREV_INDENT]=1 \
+.      IL
 .   if \\n[#RESTORE_PREV_INDENT]=2 \{\
-.      nr #BL_INDENT \\n[#STORED_BL_INDENT]
-.      nr #BR_INDENT \\n[#STORED_BR_INDENT]
 .      ll \\n[#ORIG_L_LENGTH]u
 .      IB
-.      rr #STORED_BL_INDENT
-.      rr #STORED_BR_INDENT
 .   \}
 .   if \\n[#RESTORE_PREV_INDENT]=3 \{\
-.      nr #R_INDENT \\n[#STORED_R_INDENT]
 .      ll \\n[#ORIG_L_LENGTH]u
 .      IR
-.      rr #STORED_R_INDENT
 .   \}
 .   if \\n[#RESTORE_PREV_INDENT]=4 \{\
 .      nr #R_INDENT \\n[#STORED_R_INDENT]
@@ -15557,8 +16616,6 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .      ll \\n[#ORIG_L_LENGTH]u
 .      IR
 .      IL
-.      rr #STORED_R_INDENT
-.      rr #STORED_L_INDENT
 .   \}
 .\" Clean up after exiting last depth of list
 .   nr #REMOVE 0 1
@@ -15569,7 +16626,13 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .      rm $SEPARATOR\\n[#REMOVE]
 .      rm $ENUMERATOR_TYPE\\n[#REMOVE]
 .      rr #PAD_LIST_DIGITS\\n[#REMOVE]
+.      rr #SHIFT_LIST\\n[#REMOVE]
 .   \}
+.   rr #STORED_L_INDENT
+.   rr #STORED_BL_INDENT
+.   rr #STORED_BR_INDENT
+.   rr #STORED_R_INDENT
+.   rr #STORED_R_INDENT
 .   rr #REMOVE
 .   rr #TOTAL_LISTS
 .   rr #QUIT
@@ -15595,6 +16658,24 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .    nr #NEXT_DEPTH_BACK \\n[#DEPTH]-1
 .    if \\n[#NEXT_DEPTH_BACK]=0 \{\
 .       nr #QUIT 1
+.       if \\n[#INDENT_ACTIVE]=1 \{\
+.          if \\n[#INDENT_STYLE_BOTH]=1 \{\
+.             ie \\n[#DOCS] \
+.                ll \\n[#DOC_L_LENGTH]u-\\n[#STORED_BR_INDENT]u
+.             el \
+.                ll \\n[#L_LENGTH]u-\\n[#STORED_BR_INDENT]u
+.             in \\n[#BL_INDENT]u
+.          \}
+.          if \\n[#INDENT_STYLE_LEFT] \{\
+.             in \\n[#STORED_L_INDENT]u
+.          \}
+.          if \\n[#INDENT_STYLE_RIGHT] \{\
+.             ie \\n[#DOCS] \
+.                ll \\n[#DOC_L_LENGTH]u-\\n[#STORED_R_INDENT]u
+.             el \
+.                ll \\n[#L_LENGTH]u-\\n[#STORED_R_INDENT]u
+.          \}
+.       \}
 .       return
 .    \}
 .    nr #L_INDENT -\\n[#LIST_INDENT\\n[#DEPTH]]+\\n[#SHIFT_LIST\\n[#DEPTH]]
@@ -15621,30 +16702,40 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 \#   N.B.--the START macro must be used after every COLLATE
 \#
 .MAC COLLATE END
+.    if dPDF.EXPORT .tm .ds pre-collate-\\n% \\n%@\\n[#COL_NUM]
+.    if \\n[defer] \{\
+.       nr #BLANKPAGE_AFTER_DEFER 1
+.       bp
+.    \}
+.    nr #HEADER_STATE \\n[#HEADERS_ON]
+.    if (\\n[defer]=0)&(\\n[float*defer]=0) .HEADERS OFF
+.    if \\n[#LINENUMBERS] \{\
+.       NUMBER_LINES off
+.       nr #LINENUMBERS 2
+.    \}
+.    if \\n[#BLANKPAGE] \{\
+.       if \\n[nl]=\\n[#PAGE_TOP] \{\
+.          nr #NO_NEWPAGE 1
+.          RESTORE_SPACE
+.       \}
+.       rr #BLANKPAGE
+.    \}
 .    if \\n[defer] \
 .       DO_FOOTER
 .    EOL
-.    nr #COLLATED_DOC 1
-.    if ( (\\n[.t]-1) <= \\n[.v] ) .nr #NO_BREAK 1
 .    ds $SAVED_DOC_FAM \\*[$DOC_FAM]
 .    ds $SAVED_PP_FT   \\*[$PP_FT]
 .    nr #COLLATE 1
 .    nr #PRE_COLLATE 1
-.    nr #HEADER_STATE \\n[#HEADERS_ON]
 .    nr #POST_TOP 1
-.    nr #ARG_NUM 0 1
-.    nr #LOOP \\n[#ACTIVE_LEVELS]      \" loop count                                   
 .    nr #HEAD_1_NUM 0 1
-.    nr eqn*label-width     (\\n[eqn*label-num] >? \\n[eqn*label-width])
-.    nr pdf-img*label-width (\\n[pdf-img*label-num] >? \\n[pdf-img*label-width])
-.    nr pic*label-width     (\\n[pic*label-num] >? \\n[pic*label-width])
-.    nr tbl*label-width     (\\n[tbl*label-num] >? \\n[tbl*label-width])
-.    nr fig*label-width     (\\n[pdf-img*label-width] >? \\n[pic*label-width])
-.    if \\n[eqn*label-with-chapter]=1     .nr eqn*label-num     0 1
-.    if \\n[pdf-img*label-with-chapter]=1 .nr pdf-img*label-num 0 1
-.    if \\n[pic*label-with-chapter]=1     .nr pic*label-num     0 1
-.    if \\n[tbl*label-with-chapter]=1     .nr tbl*label-num     0 1
-.    if (\\n[defer]=0)&(\\n[float*defer]=0) .HEADERS OFF
+.    if !\\n[#LISTS] \{\
+.       if \\n[eqn*label-with-chapter]=1     .nr eqn*label-num 0 1
+.       if \\n[float*label-with-chapter]=1   .nr fig*label-num 0 1
+.       if \\n[pdf-img*label-with-chapter]=1 .nr fig*label-num 0 1
+.       if \\n[pic*label-with-chapter]=1     .nr fig*label-num 0 1
+.       if \\n[tbl*label-with-chapter]=1     .nr tbl*label-num 0 1
+.    \}
 .    if \\n[#DOC_HEADER]=2 .nr #DOC_HEADER 1
 .    if \\n[#PAGE_NUM_V_POS]=1 \{\
 .       nr #PAGINATION_STATE \\n[#PAGINATE]
@@ -15655,6 +16746,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .    LL \\n[#DOC_L_LENGTH]u
 .    QUAD \\*[$DOC_QUAD]
 .    nr #SAVED_DOC_LEAD \\n[#DOC_LEAD]
+.    nr #COLLATED_DOC 1
 .    vs \\n[#DOC_LEAD]u
 \*[SLANTX]
 \*[CONDX]
@@ -15664,6 +16756,17 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .       if \\n[TOC_BH]=2 .pdfswitchtopage after MOM:TOC
 .    \}
 .    if !\\n[#NO_NEWPAGE] .NEWPAGE
+.    if !\\n[#TOC] \{\
+.       if \\n[#FORCE_RECTO] \{\
+.          ds $PN_FORMAT_CURR \\g[#PAGENUMBER]
+.          af #PAGENUMBER 1
+.          if \\n[#PAGENUMBER]%2=1 .nr #ODD_PAGENUM 1
+.          af #PAGENUMBER \\*[$PN_FORMAT_CURR]
+.          if \\n[#ODD_PAGENUM] .BLANKPAGE 1 DIVIDER
+.          rr #ODD_PAGENUM
+.          rr #BLANKPAGE_AFTER_DEFER
+.       \}
+.    \}
 .    rr #NO_NEWPAGE
 .    ch RR_@TOP
 .    rr @TOP
@@ -15671,7 +16774,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .      rs
 .      nop \&
 .    \}
-.    if '\\n[.ev]'PAGE_TRANSITION' .ev
+.    if '\\n[.ev]'PAGE_TRANSITION\\n[pg-trans]' .ev
 .    if \\n[#DEFER_PAGINATION] .PAGINATE
 .    if !'\\*[$RESTORE_PAGENUM_STYLE]'' \{\
 .       PAGENUM_STYLE \\*[$RESTORE_PAGENUM_STYLE]
@@ -15681,12 +16784,28 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .       if \\n[#TOC]=0 .nr #CH_NUM +1
 .    rm $EN_TITLE
 .    COVERTITLE
-.    DOCCOVERTITLE
-.    MISC
+.    DOC_COVERTITLE
 .    TITLE
-.    SUBTITLE
 .    CHAPTER
 .    CHAPTER_TITLE
+.    SUBTITLE
+.    MISC
+.    rr #COVER_TITLE
+.    rr #DOC_COVER_TITLE
+.    rr #MISC
+.    rr #COVER_MISC
+.    rr #DOC_COVER_MISC
+.    rr #COPYRIGHT
+.    rr #COVER_COPYRIGHT
+.    rr #DOC_COVER_COPYRIGHT
+.    rr #COVER_AUTHOR
+.    rr #DOC_COVER_AUTHOR
+.    rm COVER_TEXT
+.    rm DOC_COVER_TEXT
+.    rm $COPYRIGHT
+.    rm $COVER_COPYRIGHT
+.    rm $DOC_COVER_COPYRIGHT
+.    rr #END_QUOTE
 .    rr #PAGENUM_STYLE_SET
 .    rr #DOC_COVER
 .    rr #COVER
@@ -15696,6 +16815,10 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .       nr #PAGE_NUM_V_POS \\n[#RESTORE_PN_V_POS]
 .       rr #RESTORE_PN_V_POS
 .    \}
+.    nr #LOOP 0 1
+.    while \\n+[#LOOP]<=\\n[@LEVEL] \
+.       rr #TOC_HEAD_\\n[#LOOP]_INDENT_SET 1
+.    if \\n[#FLEX_ACTIVE] .rr #NO_FLEX
 .END
 \#
 \# NUMBER_LINES
@@ -15709,23 +16832,23 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 \#
 .MAC NUMBER_LINES END
 .    br
-.    if \\n[#QUOTE] \{\
-.       if \\n[#QUOTE]=1 .ds macro QUOTE
-.       if \\n[#QUOTE]=2 .ds macro BLOCKQUOTE
-.       tm1 "[mom]: \\$0 at line \\n[.c] may not be used inside \\*[macro].
-.       tm1 "       Please set NUMBER_LINES before \\*[macro], followed by
-.       tm1 "       NUMBER_\\*[macro]_LINES.
-.       ab Aborting '\\n[.F]' at \\$0, line \\n[.c].
-.    \}
 .    if '\\n[.z]'EPI_TEXT' .return
 .    if '\\$1'' \{\
 .       tm1 "[mom]: NUMBER_LINES at line \\n[.c] has no argument.
-.       tm1 "       Most likely, you have forgotten to give it a starting line number.
-.       ab Aborting '\\n[.F]' at \\$0, line \\n[.c].
+.       tm1 "       You have forgotten to give a starting line number or 'RESUME'.
+.       ab   [mom]: Aborting '\\n[.F]' at \\$0, line \\n[.c].
 .    \}
 .    if !\\n[#LINENUMBERS]=2 .nr #LINENUMBERS 1
 .\" Test whether the first arg is a digit.
 .    if \B'\\$1' \{\
+.       if \\n[#QUOTE] \{\
+.          if \\n[#QUOTE]=1 .ds macro QUOTE
+.          if \\n[#QUOTE]=2 .ds macro BLOCKQUOTE
+.          tm1 "[mom]: \\$0 at line \\n[.c] may not be used inside \\*[macro].
+.          tm1 "       Please set NUMBER_LINES before \\*[macro], followed by
+.          tm1 "       NUMBER_\\*[macro]_LINES.
+.          ab   [mom]: Aborting '\\n[.F]' at \\$0, line \\n[.c].
+.       \}
 .       nr #LN \\$1
 .       ds $LN_NUM \\$1
 .       if !'\\n[.z]'' .nr #RESTORE_LN_NUM 1
@@ -15746,8 +16869,9 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .       \}
 .       el \{\
 .          nm
-.\" register ln is still set and may confuse preprocessors like tbl
-.\" still, resuming line numbering must be possible, so save ln in $LN_NUM
+.\"  Register ln is still set and may confuse preprocessors like tbl.
+.\"  Still, resuming line numbering must be possible, so save ln in
+.\"  $LN_NUM
 .          ds $LN_NUM \\n[ln]
 .          if !\\n[#QUOTE] .nr ln 0
 .          if !\\n[#LINENUMBERS]=2 .rr #LINENUMBERS
@@ -15769,6 +16893,14 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 \# *Function:
 \#   LN_PARAMS sets parameters for line numbers.
 \#   RESTORE_PARAMS restores them after internal calls to .nm
+\# *Notes:
+\#   It's not documented, but groff's linenumbering is processed
+\#   in a unique environment reserved for the numbers, such that
+\#   whatever style params were in effect prior to the invocation
+\#   of .nm remain in effect for the numbers even if the running
+\#   text has different params.  Eg, If you set .gcolor to 'purple'
+\#   before .nm then set it back to what it was, the numbers will be
+\#   purple while the text remains at the default color.
 \#
 .MAC LN_PARAMS END
 .    ie d$LN_FAM .fam \\*[$LN_FAM]
@@ -15777,7 +16909,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .    el .ft \\n[.sty]
 .    ie d$LN_SIZE_CHANGE .ps \\*[$LN_SIZE_CHANGE]
 .    el .ps \\n[.s]
-.    ie d$LN_COLOR .gcolor \\*[$LN_COLOR]
+.    ie d$LN_COLOR .COLOR \\*[$LN_COLOR]
 .    el .gcolor \\n[.m]
 .END
 \#
@@ -15788,6 +16920,23 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .    gcolor
 .END
 \#
+\# Whether, at COLLATE, to reset line number to 1.
+\#
+\# NUMBER LINES PER SECTION
+\# ------------------------
+\# *Argument:
+\#   none
+\# *Function:
+\#   Sets register that determines whether, at COLLATE, to reset
+\#   line number to 1.
+\# *Notes:
+\#   The default is to continue the line numbering from where it
+\#   left off.
+\#
+.MAC NUMBER_LINES_PER_SECTION END
+.    nr #PER_SECTION 1
+.END
+\#
 \# NUMBER QUOTE AND BLOCKQUOTE LINES AS PART OF RUNNING TEXT
 \# ---------------------------------------------------------
 \# *Argument:
@@ -15849,7 +16998,9 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 \#   blank pages before endnotes, bibliographies, tocs, new chapters.
 \#
 .MAC BLANKPAGE END
+.    nr #BLANKPAGE 1
 .    nr #HOW_MANY \\$1
+.    shift
 .    nr #PAGES 0 1
 .    if \\n[#LINENUMBERS] \{\
 .       nr #LINENUMBERS_WERE_ON 1
@@ -15862,41 +17013,45 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .       \}
 .       if \\n[#PAGE_NUM_V_POS]=1 \{\
 .          if \\n[#PAGINATE]=1 .nr #PAGINATE_WAS_ON 1
+.          nr #RESTORE_PN_V_POS \\n[#PAGE_NUM_V_POS]
 .          PAGINATION OFF
 .       \}
-.       NEWPAGE
-.       PRINT \&
+.       NEWPAGE \" Break to blank page
+.       nop \&
+.       br
 .       if \\n[#FOOTERS_ON]=1 \{\
 .          nr #FOOTERS_WERE_ON 1
 .          FOOTERS OFF
 .       \}
 .       if \\n[#PAGE_NUM_V_POS]=2 \{\
 .          if \\n[#PAGINATE]=1 .nr #PAGINATE_WAS_ON 1
-.             nr #RESTORE_PN_V_POS \\n[#PAGE_NUM_V_POS]
+.          nr #RESTORE_PN_V_POS \\n[#PAGE_NUM_V_POS]
 .          PAGINATION OFF
 .       \}
-.       if \\n[#HEADERS_WERE_ON] .HEADERS
-.       if \\n[#PAGE_NUM_V_POS]=1 \
-.          if \\n[#PAGINATE_WAS_ON] .PAGINATE
+.       if !'\\$1'DIVIDER' .if \\n[#HEADERS_WERE_ON] .HEADERS
 .    \}
-.    shift
+.    NEWPAGE
 .    ie '\\$1'DIVIDER' \{\
+.       nop \&
+.       if \\n[#BLANKPAGE_AFTER_DEFER] .bp
 .       if \\n[#FOOTERS_WERE_ON] .FOOTERS
-.       if \\n[#RESTORE_PN_V_POS]=2 \{\
-.          if \\n[#PAGINATE_WAS_ON] .nr #RESTORE_PAGINATION 1
-.       \}
+.          if \\n[#RESTORE_PN_V_POS] \{\
+.             if \\n[#PAGINATE_WAS_ON] .PAGINATE
+.             nr #PAGE_NUM_V_POS \\n[#RESTORE_PN_V_POS]
+.          \}
+.       if \\n[#HEADERS_WERE_ON] .HEADERS
 .       shift
 .       if '\\$1'NULL' .nr #PAGE_NUM_ADJ -\\n[#HOW_MANY]
 .    \}
 .    el \{\
 .       if '\\$1'' \{\
-.          NEWPAGE
 .          if \\n[#FOOTERS_WERE_ON] .FOOTERS
-.          if \\n[#PAGE_NUM_V_POS]=2 \
+.          if \\n[#RESTORE_PN_V_POS] \{\
 .             if \\n[#PAGINATE_WAS_ON] .PAGINATE
+.             nr #PAGE_NUM_V_POS \\n[#RESTORE_PN_V_POS]
+.          \}
 .       \}
 .       if '\\$1'NULL' \{\
-.          NEWPAGE
 .          if \\n[#FOOTERS_WERE_ON] .FOOTERS
 .          if \\n[#PAGE_NUM_V_POS]=2 \
 .             if \\n[#PAGINATE_WAS_ON] .PAGINATE
@@ -15904,6 +17059,11 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .    \}
 .    if \\n[#PAGINATE]=1 \
 .       if '\\$1'NULL' .nr #PAGE_NUM_ADJ -\\n[#HOW_MANY]
+.       if \\n[#RESTORE_PN_V_POS]=1 \{\
+.          RESTORE_SPACE
+.          sp |\\n[#HEADER_MARGIN]u
+.          PRINT_PAGE_NUMBER
+.       \}
 .    if \\n[#LINENUMBERS_WERE_ON] .NUMBER_LINES RESUME
 .    rr #HOW_MANY
 .    rr #HEADERS_WERE_ON
@@ -15918,175 +17078,252 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .  vpt 0
 \h'(\\n[ps-offset]u + \\n[ps-deswid]u)'
 .  sp -1
-.  vpt 1
+.  vpt
 ..
 \#
 .MAC PROCESS_FLOATS END
-.    if (\\n[float*defer]>0):(\\n[defer]=0) \{\
-.        if !\\n[tbl*no-top-hook] .tbl@top-hook
-.        rr tbl*no-top-hook
+.    if \\n[#TAB_ACTIVE] \{\
+.       nr #RESTORE_TAB 1
+.       TQ
 .    \}
-.    if \\n[defer] \{\
-.       ev protect
-.       evc FLOAT
-.       nf
-.       rs
-.       nop \&
-.       sp |\\n[#T_MARGIN]u-\\n[#DOC_LEAD]u
-.       if '\\*[float*type:1]'boxed-tbl' \{\
-.          ch RR_@TOP
-.          if (\\n[.t] >= 1)&(\\n[float-depth:1] > \\n[.t]) \
-.             tbl*float-warning
-.          if \\n[#MLA] .sp \\n[tbl*label-lead-diff]u
-.          if (\\n[tbl*have-caption]=1)&(\\n[tbl*caption-after-label]=0) \
-.             sp \\n[tbl*caption-lead-diff]u
-.          if \\n[tbl*caption-after-label] .sp 1n+(\\n[tbl*caption-lead-diff]u*2u)
+.    if !\\n[tbl*no-top-hook] .tbl@top-hook
+.    rr tbl*no-top-hook
+.    sp |\\n[#T_MARGIN]u-\\n[#DOC_LEAD]u
+.    nr defer-count \\n[defer]
+.    nr #TMP_PAGE_OFFSET \\n[.o]
+.    po \\n[#L_MARGIN]u
+.    ev protect
+.    evc FLOAT
+.    nf
+.    RESTORE_SPACE
+.    if '\\*[float*type:\\n[defer]]'boxed-tbl:\\n[defer]' \{\
+.       ch RR_@TOP
+.\" Get depth of the first deferred float when there's more than one.
+.       if (\\n[.t] >= 1)&(\\n[float-depth:\\n[defer]] > (\\n[.t]+\\n[#DOC_LEAD])) \
+.          tbl*float-warning
+.       if \\n[#MLA] .sp \\n[tbl*label-lead-diff]u
+.       if (\\n[tbl*have-caption:\\n[defer]]=1)&(\\n[tbl*caption-after-label]=0) \
+.          sp \\n[tbl*caption-lead-diff]u
+.       if \\n[tbl*caption-after-label] \
+.          sp |\\n[#T_MARGIN]u-\\n[#DOC_LEAD]u
+.    \}
+.    if \\n[float*pic:1] \{\
+.       if (\\n[pic*have-caption]=1)&(\\n[pic*caption-after-label]=0) \{\
+.          ie \\n[#COLUMNS] \
+.             sp |\\n[dc]u+\\n[pic*caption-lead-diff]u
+.          el .sp |\\n[#T_MARGIN]u-\\n[#DOC_LEAD]u+\\n[pic*caption-lead-diff]u
 .       \}
-.       if \\n[float*pic] \{\
-.          if (\\n[pic*have-caption]=1)&(\\n[pic*caption-after-label]=0) \{\
-.             ie \\n[#COLUMNS] \{\
-.                sp |\\n[dc]u-.5v
-.             \}
-.             el \
-.                sp |\\n[#T_MARGIN]u-\\n[#DOC_LEAD]u-.5v
-.          \}
-.          rr pic*caption-lead-diff
-.          rr pic*top-lead-diff
-.          rr float*pic
+.       rr pic*caption-lead-diff
+.       rr pic*top-lead-diff
+.       rr float*pic
+.    \}
+.    if \\n[float*img] \{\
+.       ie \\n[#COLUMNS] \
+.          sp |\\n[dc]u
+.       el \
+.          sp |\\n[#T_MARGIN]u-\\n[#DOC_LEAD]u
+.       if \\n[pdf-img:frame] \{\
+.          sp -(\\*[pdf-img:frame-weight]p*2u)
+.          rr pdf-img:frame
 .       \}
-.       if \\n[float*img] \{\
-.             ie \\n[#COLUMNS] \
-.                sp |\\n[dc]u
-.             el \
-.                sp |\\n[#T_MARGIN]u-\\n[#DOC_LEAD]u
-.       \}
-.       nr defer-count \\n[defer]
-.       nr loop-count  0 1
-.       nr new-defer   0 1
-.       while \\n+[loop-count]<=\\n[defer-count] \{\
-.          nr tbl*no-top-hook 1
-.          if \\n[defer] .rnn defer float*defer \" So '.if \n[defer]' is skipped during float output
-.          vpt
-.          ch RR_@TOP
-.          rr @TOP
-.          if \\n[pdf-img*have-caption] \{\
-.             if !\\n[pdf-img*caption-after-label] .sp -.5v
-.          \}
-.          rr pdf-img*have-caption
-.          rr pic*have-caption
-.          if '\\*[float*type:\\n[loop-count]]'table' \{\
-.             ch FOOTER \\n[#VARIABLE_FOOTER_POS]u+\\n[#DOC_LEAD]u
-.             ch FN_OVERFLOW_TRAP -\\n[#FN_OVERFLOW_TRAP_POS]u+\\n[#DOC_LEAD]u
-.          \}
-.          ie !\\n[float-span:\\n[loop-count]] \{\
-.             ie ((\\n[float-depth:\\n[loop-count]]-\\n[.v])>\\n[.t]):(\\n[D-float:\\n[loop-count]]>\\n[.t]) \{\
+.    \}
+.    nr loop-count  0 1
+.    nr new-defer   0 1
+.    while \\n+[loop-count]<=\\n[defer-count] \{\
+.       nr tbl*no-top-hook 1
+.       rnn defer float*defer \" So '.if \n[defer]' is skipped during float output
+.       vpt
+.       ch RR_@TOP
+.       rr @TOP
+.       if \\n[pdf-img*have-caption] \
+.          if !\\n[pdf-img*caption-after-label] .sp -.5v
+.       rr pdf-img*have-caption
+.       rr pic*have-caption
+.       if '\\*[float*type:\\n[loop-count]]'table:\\n[loop-count]' \{\
+.          ch FOOTER \\n[#VARIABLE_FOOTER_POS]u
+.          ch FN_OVERFLOW_TRAP -\\n[#FN_OVERFLOW_TRAP_POS]u
+.       \}
+.       ie !\\n[float-span:\\n[loop-count]] \{\
+.          ie ((\\n[float-depth:\\n[loop-count]]-\\n[.v])>\\n[.t]):(\\n[D-float:\\n[loop-count]]>\\n[.t]) \{\
 .\" Insufficient space, defer to next page
-.                rn FLOAT*DIV:\\n[loop-count] NEW*FLOAT*DIV:\\n+[new-defer]
-.                rnn float-depth:\\n[loop-count] new-float-depth:\\n[new-defer]
-.                rnn D-float:\\n[loop-count] new-D-float:\\n[new-defer]
-.             \}
-.             el \{\
-.                output-float
-.             \}
+.             rn FLOAT*DIV:\\n[loop-count] NEW*FLOAT*DIV:\\n+[new-defer]
+.             rnn float-depth:\\n[loop-count] new-float-depth:\\n[new-defer]
+.             rnn D-float:\\n[loop-count] new-D-float:\\n[new-defer]
 .          \}
 .          el \{\
-.             rr tbl*no-top-hook
 .             output-float
+.             ie (\\n[.t]-1)<(\\n[#DOC_LEAD]u/2) .SHIM_1
+.             el .sp .5
 .          \}
 .       \}
-.       rm FLOAT*DIV:\\n[loop-count]
+.       el \{\
+.          rr tbl*no-top-hook
+.          if \\n[float-span:\\n[loop-count]] \
+.             rn tbl*header-div:\\n[loop-count] tbl*header-div:span
+.          output-float
+.          sp .5
+.       \}
+.       if !\\n[loop-count]=\\n[defer-count] .rr flexed
+.       rr float-span:\\n[loop-count]
+.       rr float*tbl:\\n[loop-count]
+.       rr tbl*have-caption:\\n[loop-count]
+.       rr float*tbl*center:\\n[loop-count]
+.       rr tbl*have-header:\\n[loop-count]
+.       rm float*div:\\n[loop-count]
 .       rr float-depth:\\n[loop-count]
 .       rm tbl*header-div:\\n[loop-count]
 .       rm float*type:\\n[loop-count]
+.    \}
+.    if !\\n[float*defer]=1 \{\
+.       if !(\\n[loop-count]-1)=1 \{\
+.          if !\\n[.t]=1 .sp -.5
+.       \}
+.    \}
+.    if !\\n[@no-shim] \
+.       if !\\n[q-float] \
+.          if !\\n[#NO_SHIM] .SHIM
 .\" FLOAT arrays are empty now
 .\" Rename new arrays (FLOATs deferred to next page) to proper names
-.       nr loop-count 0 1
-.       rnn new-defer defer
-.       while \\n+[loop-count]<=\\n[defer] \{\
-.          rn NEW*FLOAT*DIV:\\n[loop-count] FLOAT*DIV:\\n[loop-count]
-.          rnn new-float-depth:\\n[loop-count] float-depth:\\n[loop-count]
-.          rnn new-D-float:\\n[loop-count] D-float:\\n[loop-count]
-.       \}
-.       rr float*defer
-.       ch FOOTER \\n[#VARIABLE_FOOTER_POS]u
-.       ch FN_OVERFLOW_TRAP -\\n[#FN_OVERFLOW_TRAP_POS]u
-.       ev
-.       SHIM
-.       if \\n[#SHIM]>(\\n[#DOC_LEAD]-(\\n[#DOC_LEAD]/4)) 'sp -\\n[#DOC_LEAD]u
-.       nr tbl*have-header 0
-.       rr loop-count
-.       rr defer-count
-.       rr float*before-shim
-.       rr float*after-shim
-.       rm float-adj
-.       rm float-adj:top
-.       rm float-adj:bottom
-.       if \\n[#NEWPAGE] \{\
-.          vpt
-'          bp
-.          rr #NEWPAGE
-.       \}
+.    rr float*defer
+.    rnn new-defer defer
+.    nr loop-count 0 1
+.    while \\n+[loop-count]<=\\n[defer] \{\
+.       rn NEW*FLOAT*DIV:\\n[loop-count] FLOAT*DIV:\\n[loop-count]
+.       rnn new-float-depth:\\n[loop-count] float-depth:\\n[loop-count]
+.       rnn new-D-float:\\n[loop-count] D-float:\\n[loop-count]
+.    \}
+.    if !\\n[#TMP_PAGE_OFFSET]=\\n[.o] .po \\n[#TMP_PAGE_OFFSET]u
+.    rr #TMP_PAGE_OFFSET
+.    ch FOOTER \\n[#VARIABLE_FOOTER_POS]u
+.    ch FN_OVERFLOW_TRAP -\\n[#FN_OVERFLOW_TRAP_POS]u
+.    if !\\n[.t]=1 .if \\n[.t]<\\n[.v] .bp
+.    ie !\\n[#NO_SHIM] .SHIM
+.    el \{\
+.       if !\\n[#NO_FLEX] \
+.          if !\\n[flexed] .FLEX 
+.    \}
+.    if !\\n[#NO_SHIM] \
+.       if \\n[#SHIM]>(\\n[#DOC_LEAD]-(\\n[#DOC_LEAD]/4)) \
+'             sp -\\n[#DOC_LEAD]u
+.    ie !\\n[flex:force] .ns
+.    el \{\
+.       rr flex:force
+.       if !\\n[#NO_FLEX] .FLEX
+.    \}
+.    nr tbl*have-header 0
+.    rr tbl*have-caption
+.    rr loop-count
+.    rr defer-count
+.    rr float*before-shim
+.    rr float*after-shim
+.    rm float-adj
+.    rr check-indent
+.    if \\n[#NEWPAGE] \{\
+.       vpt
+'       bp
+.       rr #NEWPAGE
 .    \}
 .    rr float*img
 .    rr float*eqn
 .    rr float*tbl
 .    rr float*pic
+.    if \\n[#RESTORE_TAB] \{\
+.       TAB \\n[#CURRENT_TAB]
+.       rr #RESTORE_TAB
+.    \}
 .END
 \#
 .MAC output-float END
+.    if \\n[float*img] \{\
+.       nr no-top-space:1 1
+.    \}
 .    vpt 0
-.    nop \&
-.    sp -1
-.    if \\n[no-top-space] \{\
+.    if \\n[.ns] \{\
+.       rs
+.       nop \&
+.       sp -1
+.    \}
+.    if \\n[no-top-space:1] \{\
 .       ie !\\n[#COLUMNS] \{\
 .          sp |\\n[#T_MARGIN]u-\\n[#DOC_LEAD]u
 .          ns
 .       \}
 .       el .sp |\\n[dc]u
-.       if \\n[float*tbl] \{\
-.          rs
-.          if \\n[tbl*caption-top-lead-diff] \{\
+.       if \\n[float*tbl:1] \{\
+.          RESTORE_SPACE
+.          ie \\n[tbl*caption-top-lead-diff] \{\
 .             sp \\n[tbl*caption-top-lead-diff]u
 .             rr tbl*caption-top-lead-diff
 .          \}
-.          rr float*tbl
+.          el \{\
+.             if '\\*[float*type:1]'boxed-tbl:1' \{\
+.                ie (\\n[tbl*have-caption]=1)&(\\n[tbl*caption-after-label]=0) .sp .3n
+.                el .sp (\\n[#DOC_LEAD]u/2u)+.3n
+.             \}
+.          \}
+.          rr float*tbl:1
+.       \}
+.       if \\n[float*img:1] \{\
+.          RESTORE_SPACE
+.          if \\n[pdf-img*caption-top-lead-diff] \{\
+.             sp \\n[pdf-img*caption-top-lead-diff]u
+.             rr float*img:1
+.             rr pdf-img*caption-top-lead-diff
+.          \}
 .       \}
 .    \}
 .    if \\n[float*pic] \{\
 .       nr pic*top-space-adj \\n[#DOC_LEAD]-\\n[pic@text-lead]
-.       if (\\n[pic*have-caption]=0):(\\n[pic*caption-after-label]=1) \{\
+.       if (\\n[pic*have-caption]=0):(\\n[pic*caption-after-label]=1) \
 .          sp \\n[pic*top-space-adj]u
+.       if \\n[#COLUMNS] \
+.          if !'\\*[pic*space-adj:\\n[loop-count]]'' \
+.             sp \\*[pic*space-adj:\\n[loop-count]]
+.    \}
+.    nf
+.    if \\n[q-float] \
+.       if !\\n[has-caption] .sp \\n[#Q_LEAD_DIFF]u
+.    ns
+.    vpt
+.    if \\n[check-indent] \{\
+.       if \\n[#INDENT_LEFT_ACTIVE] \{\
+.          in \\n[#L_INDENT]u/2u
 .       \}
-.       if \\n[#COLUMNS] \{\
-.          if !'\\*[pic*space-adj]'' .sp \\*[pic*space-adj]
-.       \}
-.       rr float*pic
 .    \}
-.    if \\n[float*eqn] \{\
-.       sp -.5v
-.       rr float*eqn
+.    rr no-top-space:1
+.    if \\n[loop-count]>1 \{\
+.       if !'\\*[float-adj:\\n[loop-count]]'' \{\
+.          rs
+.          sp \\*[float-adj:\\n[loop-count]]
+.          ns
+.          nr restore-v-pos 1
+.       \}
 .    \}
+.    nr check-indent 1
 .    FLOAT*DIV:\\n[loop-count]
-.    if \\n[no-top-space] \{\
-.       rs
-.       nop \&
-.       sp -1
-.       rr no-top-space
+.    if \\n[no-top-space:1] \
+.       RESTORE_SPACE
+.    if \\n[restore-v-pos] \{\
+.       sp -\\*[float-adj:\\n[loop-count]]
+.       rm float-adj:\\n[loop-count]
+.       rr restore-v-pos
 .    \}
 .    if \\n[#COLUMNS] \
-.       if !'\\*[pic*space-adj]'' .sp -\\*[pic*space-adj]
-.    rm pic*space-adj
-.    if \\n[D-float:\\n[loop-count]] \{\
-.       sp \
--\\n[float-depth:\\n[loop-count]]u+\\n[D-float:\\n[loop-count]]u+\\n[#DOC_LEAD]u
-.       rr D-float:\\n[loop-count]
-.    \}
+.       if !'\\*[pic*space-adj:\\n[loop-count]]'' .sp -\\*[pic*space-adj:\\n[loop-count]]
+.    rm pic*space-adj:\\n[loop-count]
+.    if \\n[D-float:1] \
+.       rr D-float:1
+.    rr D-float
+.    rr @no-shim
+.    rr q-float
+.    rm B_QUOTE
+.    rm P_QUOTE
 .END
 \#
 \# FLOAT
 \# -----
 \# *Arguments:
-\#   [ ADJUST +|-<amount> ] [ FORCE] [ SPAN] [ NO_SHIM] | <anything>
+\#   [ ADJUST +|-<amount> ] [ FORCE] [ SPAN] [ NO_SHIM] | [ NO_FLEX ] [ TARGET ] | <anything>
 \# *Function:
 \#   Captures input in a diversion, which is output immediately if
 \#   there's room on the page; otherwise outputs diversion at top of
@@ -16097,23 +17334,9 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 \#   a new page immediately.
 \#
 .MAC FLOAT END
-.\"  Case where upcoming .br breaks to a new page, causing a defered float
-.\"  to be output by HEADER and the defer register to be cleared.
-.    nr pagenum \\n%+\\n[#PAGE_NUM_ADJ]
-.    br
-.\" Clear .ns when a single line of running text precededs float
-.\" at the top of the page.
-.    if \\n[nl]=\\n[#PAGE_TOP] \{\
-.       vpt 0
-.       sp -1v
-.       sp
-.       ch RR_@TOP
-.       rr @TOP
-.       vpt
-.    \}
 .    if \\n[#NUM_ARGS]>0 \{\
-.    nr loop-count 0 1
-.    nr loop-counter \\n[#NUM_ARGS]
+.       nr loop-count 0 1
+.       nr loop-counter \\n[#NUM_ARGS]
 .       while \\n+[loop-count]<=\\n[loop-counter] \{\
 .          if '\\$1'FORCE' \{\
 .             nr #FORCE 1
@@ -16128,103 +17351,289 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .             ds float-adj \\$1
 .             shift
 .          \}
+.          if '\\$1'CENTER' \{\
+.             nr center-float 1
+.             shift
+.          \}
+.          if '\\$1'CENTRE' \{\
+.             nr center-float 1
+.             shift
+.          \}
+.          if '\\$1'INDENT' \{\
+.             shift
+.             nr indent-float \\$1
+.             shift
+.          \}
+.          if '\\$1'RIGHT' \{\
+.             nr right-float 1
+.             shift
+.          \}
 .          if '\\$1'NO_SHIM' \{\
-.             nr float*no-shim 1
+.             nr @no-shim 1
+.             shift
+.          \}
+.          if '\\$1'NO_FLEX' \{\
+.             nr @no-flex 1
+.             shift 1
+.          \}
+.          if '\\$1'TARGET' \{\
 .             shift
+.             ds float*target "\\$1
+.             shift 1
 .          \}
 .       \}
 .    \}
+.    ie \\n[float*started] .rr float*started
+.    el \{\
+.       while !'\\$1'' .shift 1
+.       nr float*started 1
+.    \}
 .    ie '\\$1'' \{\
+.\" Harmonize floats treated as defers and floats proper to the top
+.\" of the next page between passes when flex is enabled.
+.\"
+.\" Without this, floats near the bottom of the page may be deferred
+.\" on the first pass, but when flex-spacing moves the line just
+.\" before the float to the bottom of the page, the upcoming .br
+.\" causes the float to be proper to the next page instead of
+.\" deferred to it.
+.       nr floatnum +1
+.       ie !\\n[#NO_FLEX] \{\
+.\" Only on 2nd pass
+.          if !dPDF.EXPORT \{\
+.             ie d float\\n[floatnum]:no-defer .br
+.             el \{\
+.\" .v in the following is arbitrary.  Groff rounds down decimal
+.\" fractions so flex-spacing may be slightly short.  Since there
+.\" are no conditions under which a .t-1 (bottom margin) < .v
+.\" on the 1st pass doesn't cause a float to be deferred, all floats
+.\" on the second pass that meet the condition are also, correctly,
+.\" deferred.
+.                if (\\n[.t]-1)<\\n[.v] \
+.                   if !\\n[@TOP] .nr no-break 1
+.             \}
+.          \}
+.\" Only on 1st pass
+.          ie !\\n[no-break] \{\
+.             ds pre-float:page@col \\n%@\\n[#COL_NUM]
+.             br
+.             ds post-float:page@col \\n%@\\n[#COL_NUM]
+.             if dPDF.EXPORT \{\
+.                if !'\\*[pre-float:page@col]'\\*[post-float:page@col]' \
+.                   tm .ds float\\n[floatnum]:no-defer 1
+.             \}
+.          \}
+.          el .rr no-break
+.       \}
+.       el .br
+.       if \\n[nl]=\\n[#PAGE_TOP] \
+.          RESTORE_SPACE
+.       ds ev-pre-float \\n[.ev]
 .       ev FLOAT
-.       evc 0
-.       nf
+.       evc \\*[ev-pre-float]
 .       di FLOAT*DIV
+.       if !'\\*[float*target]'' .PDF_TARGET "\\*[float*target]
+.       rm float*target
+.       nf
 .    \}
 .    el \{\
 .       br
+.\" So @no-shim persists if float output with output-float
+.       if r @no-shim .nr float*no-shim 1
+.       if \\n[float-span] \{\
+.          nr span 1
+\!.        rr span
+.       \}
+\!.     rm tbl*header-div:span
+\!.     nr tbl*no-print-header 1
 .       di
-.       if \\n[float*table] \
-.          if !\\n[tbl*have-header] .ev
-.       ev
+.       if \\n[float-span] \{\
+.          nr dn-save \\n[dn]
+.          da FLOAT*DIV
+\!.        rr float-span
+.          da
+.          nr dn \\n[dn-save]
+.          rr dn-save
+.       \}
+.       ie \\n[float*tbl] \
+.          if !\\n[tbl*have-header] .ev 0
+.       el .ev 0
 .       if \\n[tbl*boxed] \{\
+.          ch FOOTER \\n[#VARIABLE_FOOTER_POS]u+\\n[#DOC_LEAD]u
+.          ch FN_OVERFLOW_TRAP -\\n[#FN_OVERFLOW_TRAP_POS]u+\\n[#DOC_LEAD]u
 .          ie !\\n[#MLA] \{\
-.             ie (\\n[tbl@label]=1):(\\n[tbl@source]=1) .nr dn -.65v
+.             ie (\\n[tbl@label]=1):(\\n[tbl@source]=1):(\\n[tbl*autolabel]=1) .nr dn -.65v
 .             el .nr dn +.65v
+.             rr tbl@label
+.             rr tbl@source
 .          \}
-.          el \{\
-.             if !\\n[tbl@source] .nr dn -1.65v
-.          \}
+.          el .if !\\n[tbl@source] .nr dn -1.65v
 .       \}
-.       if (\\n[dn]>\\n[.t]):(\\n[D-float]>\\n[.t]) \{\
-.          ie \\n[@TOP] \
+.\" Defer float
+.       if (\\n[dn]>\\n[.t]):(\\n[D-float]>\\n[.t]):(\\n[defer]>0) \{\
+.          if !\\n[float-span] \{\
+.             if (\\n[dn]+(\\n[.v]*2)>(\\n[.p]-\\n[#TOP_MARGIN]-\\n[#DOC_LEAD]-\\n[#B_MARGIN])) \{\
+.                tm1 "[mom]: Floated element exceeds page depth.
+.                ab   [mom]: Aborting '\\n[.F]' at line \\n[.c].
+.             \}
+.          \}
+.\" Save depth of diversion here.  The .da zeroes it.
+.          nr dn-save \\n[dn]
+.          if \\n[#FLEX_ACTIVE] \{\
+.             if !\\n[@no-flex] \{\
+.                da FLOAT*DIV
+\!.              FLEX
+\!.              nr flexed 1
+.                da
+.             \}
+.          \}
+.          nr dn \\n[dn-save]
+.          rr dn-save
+.          ch FOOTER \\n[#VARIABLE_FOOTER_POS]u
+.          ch FN_OVERFLOW_TRAP -\\n[#FN_OVERFLOW_TRAP_POS]u
+.          ev 0
+.          ie \\n[@TOP] \{\
+.             br
 .             if \\n[tbl*boxed] .rs
+.             rr tbl*boxed
+.          \}
 .          el \{\
 .             if !\\n[defer] .nr defer 0 1
 .             rn FLOAT*DIV FLOAT*DIV:\\n+[defer]
+.             if !'\\*[float-adj]'' \
+.                rn float-adj float-adj:\\n[defer]
 .             if \\n[float-span] \
 .                if !\\n[tbl*boxed] .rnn float-span float-span:\\n[defer]
 .             if \\n[float*tbl] \{\
-.                if \\n[defer]=1 .nr no-top-space 1
-.                ie \\n[tbl*boxed] \{\
-.                   ds float*type:\\n[defer] boxed-tbl
-.                   rr float-span
+.                if \\n[defer]>0 \{\
+.                   nr no-top-space:\\n[defer] 1
+.                   nr float*tbl:\\n[defer] 1
+.                   if \\n[tbl*have-caption] \
+.                      nr tbl*have-caption:\\n[defer] 1
 .                \}
-.                el .ds float*type:\\n[defer] table
+.                ie \\n[tbl*boxed] \
+.                   ds float*type:\\n[defer] boxed-tbl:\\n[defer]
+.                el .ds float*type:\\n[defer] table:\\n[defer]
 .                if \\n[tbl*center] .nr float*tbl-center:\\n[defer] 1
+.                if \\n[tbl*have-header] .rnn tbl*have-header tbl*have-header:\\n[defer]
 .                rn tbl*header-div tbl*header-div:\\n[defer]
 .                rr tbl*center
 .             \}
 .             if \\n[float*eqn] \{\
-.                if \\n[defer]=1 .nr no-top-space 1
+.                if \\n[defer]=1 .nr no-top-space:\\n[defer] 1
 .                ds float*type:\\n[defer] eqn
 .             \}
 .             if \\n[float*pic] \{\
 .                ds float*type:\\n[defer] pic
+.                nr float*pic:\\n[defer] 1
+.                rn pic*space-adj pic*space-adj:\\n[defer]
 .             \}
 .             if \\n[float*img] \{\
 .                ds float*type:\\n[defer] img
+.                nr float*img:\\n[defer] 1
+.                nr no-top-space:\\n[defer] 1
 .             \}
 .             if \\n[D-float] .nr D-float:\\n[defer] \\n[D-float]
 .             nr float-depth:\\n[defer] \\n[dn]
 .             if \\n[#FORCE] \{\
-.                bp
+.                ie \\n[#COLUMNS] .COL_NEXT
+.                el .NEWPAGE
 .                rr #FORCE
 .             \}
+.             if \\n[tbl*boxed] .rr tbl*boxed
+.             if \\n[table] .rr table
+.             br
 .             return \" output div after header
 .          \}
 .       \}
+.       nr dn-save \\n[dn]
+.       if \\n[#FLEX_ACTIVE] \{\
+.          if !\\n[@no-flex] \{\
+.             da FLOAT*DIV
+\!.           FLEX
+\!.           nr flexed 1
+.             da
+.          \}
+.       \}
+.       nr dn \\n[dn-save]
+.       ch FOOTER \\n[#VARIABLE_FOOTER_POS]u
+.       ch FN_OVERFLOW_TRAP -\\n[#FN_OVERFLOW_TRAP_POS]u
+.       vpt 0
 .       if !'\\*[float-adj]'' .sp \\*[float-adj]
 .       if \\n[.u] .nr fill 1
 .       if \\n[@TOP] \{\
 .          nr no-adjust 1
 .          rr @TOP
 .       \}
-.       nf
-.       if \\n[float*tbl] \
+.       if \\n[float*tbl] \{\
 .          if (\\n[#MLA]=1)&(\\n[tbl@source]=0) \
 .             chop FLOAT*DIV
 .          if \\n[nl]=\\n[#PAGE_TOP] \{\
-.             if \\n[tbl*have-caption] \{\
+.             ie (\\n[tbl*have-caption]=1)&(\\n[tbl*caption-after-label]=0) \{\
 .                ie !\\n[#MLA] .sp \\n[tbl*caption-lead-diff]u
-.                el \{\
-.                ch RR_@TOP
-.                sp \\n[tbl*label-lead-diff]u-.5v
+.                el .ch RR_@TOP
+.             \}
+.             el \{\
+.                ev protect
+.                evc FLOAT
+.                nf
+.                rs
+.                ie \\n[tbl*boxed] .sp |\\n[#PAGE_TOP]u+.3n
+.                el .sp |\\n[#PAGE_TOP]u-.25v
 .             \}
 .          \}
 .       \}
+.       if \\n[float*img] \
+.          if \\n[pdf-img:frame] \
+.             sp -(\\*[pdf-img:frame-weight]p*2u)
+.       if !'\\n[.ev]'protect' \{\
+.          ev protect
+.          evc FLOAT
+'           nf
+.       \}
+.       if \\n[float*tbl] \{\
+.          if \\n[tbl*boxed] \
+.             if \\n[tbl*center] \
+.                if \\n[#L_INDENT] \
+.                   in -\\n[#L_INDENT]u/2u
+.       \}
+.       if \\n[center-float] \
+.          in (\\n[.l]u-\\n[dl]u)/2u
+.       if \\n[indent-float] \
+.          in \\n[indent-float]u
+.       if \\n[right-float] \
+.          in \\n[.l]u-\\n[dl]u
 .       FLOAT*DIV
+.       if (\\n[center-float]>0):(\\n[indent-float]>0):(\\n[right-float]>0) \
+.          in
+.       ev
 .       if \\n[float*tbl] \{\
+.          rr tbl*no-print-header
 .          ie \\n[tbl*boxed] \{\
-.             if \\n[dn]=\\n[bx-tbl-depth] .sp .35v
-.             if \\n[tbl*plain-boxed] .sp .5v
 .             ch FOOTER \\n[#VARIABLE_FOOTER_POS]u
 .             ch FN_OVERFLOW_TRAP -\\n[#FN_OVERFLOW_TRAP_POS]u
-.             rr tbl*boxed
-.             rr bx-tbl-depth
+.             ie \\n[nl]>(\\n[.p]+\\n[#VARIABLE_FOOTER_POS]) \{\
+.                ie \\n[#COLUMNS] .COL_NEXT
+.                el .NEWPAGE
+.             \}
+.             el \{\
+.                if \\n[dn-save]=\\n[bx-tbl-depth] .sp .35v
+.                rr dn-save
+.                ie \\n[tbl*plain-boxed] .sp .5v
+.                el \{\
+.                   if !\\n[tbl*autolabel] \{\
+.                      if !\\n[#MLA] \{\
+.                        if \\n[tbl@label]=1 .sp .5
+.                      \}
+.                   \}
+.                \}
+.                rr tbl*boxed
+.                rr bx-tbl-depth
+.             \}
 .          \}
 .          el \{\
-.             if '\\*[tbl*label]'' \
-.                if \\n[tbl*autolabel]=0 .sp
+.             if !'\\*[tbl*label]'' \
+.                if \\n[tbl*autolabel]=0 .sp .5
 .          \}
 .          rr float*tbl
 .          rr tbl*center
@@ -16236,8 +17645,19 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .          rm tbl*label
 .          rm tbl*source
 .       \}
-.       if \\n[D-float] \
-.          sp -\\n[dn]u+\\n[#DOC_LEAD]u+\\n[D-float]u
+.       if \\n[float*img] \
+.          if (\\n[.t]-1)>(\\n[#DOC_LEAD]u/2u) .sp .5
+.       if \\n[D-float] \{\
+.          ie \\n[dn]=0 .sp \\n[D-float]u+\\n[#DOC_LEAD]u
+.          el \
+.             if \\n[dn]<\\n[D-float] \
+.                sp \\n[D-float]u+\\n[#DOC_LEAD]u-\\n[dn]u
+.\" Flex won't grab .h of D-floats without a dummy text line.
+.          vpt 0
+.          nop \&
+.          sp -1
+.          vpt 1
+.       \}
 .       if \\n[fill] \{\
 .          fi
 .          rr fill
@@ -16245,14 +17665,29 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .       rm FLOAT*DIV
 .       if !'\\*[float-adj]'' \
 .          if !\\n[no-adjust] .sp -\\*[float-adj]
-.          if !\\n[float*no-shim] .SHIM
+.       vpt
+.       if !\\n[#NO_SHIM] \
+.          if !\\n[@no-shim] .SHIM
 .       rm float-adj
 .       rm no-adjust
-.       rm float-adj:top
-.       rm float-adj:bottom
+.       rr center-float
+.       rr indent-float
+.       rr right-float
 .       rr D-float
-.       rr float*no-shim
+.       rr @no-shim
+.       rr @no-flex
 .       rr #FORCE
+.       rm P_QUOTE
+.       rm B_QUOTE
+.       if \\n[float*img] .rr float*img
+.       if \\n[float*pic] .rr float*pic
+.       if \\n[float*eqn] .rr float*eqn
+.       rr float*target
+.       rm float*target
+.       if \\n[#NO_SHIM] \
+.          if !\\n[#NO_FLEX] .nr post-float 1
+.       ev \\*[ev-pre-float]
+.       rm ev-pre-float
 .    \}
 .END
 \#
@@ -16263,7 +17698,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 \# *Function:
 \#   Sets header/footer/footnotes/etc... traps.
 \#
-\#   Calculates the number of lines that actually fit on a
+\#   TRAPS calculates the number of lines that actually fit on a
 \#   page based on #B_MARGIN and resets page bottom trap to coincide
 \#   with the depth of that number of lines, or, if #ADJ_DOC_LEAD=1,
 \#   adjusts #DOC_LEAD so that the last line of text on a page falls
@@ -16279,12 +17714,13 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .       nop \&
 .       sp -1
 .       if \\n[fill] .fi
+.       if r #NEWPAGE .rr #NEWPAGE
 .    \}
 .    if \\n[.vpt]=0 .vpt
 .END
 \#
 .MAC TRAPS END
-.    if !\\n[#UNADJUSTED_DOC_LEAD]  .nr #UNADJUSTED_DOC_LEAD \\n[#DOC@LEAD]
+.    if !\\n[#UNADJUSTED_DOC_LEAD] .nr #UNADJUSTED_DOC_LEAD \\n[#DOC@LEAD]
 .\" Remove all header/footer traps
 .    if !\\n[#NO_TRAP_RESET] \{\
 .       ch DO_T_MARGIN
@@ -16345,7 +17781,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .    if \\n[#INDENT_LEFT_ACTIVE] \{\
 .       in \\n[#L_INDENT]u
 .       if \\n[#QUOTE] \{\
-.          in -\\n[#L_INDENT]u \"Because you added an indent in 2nd line of macro
+.          in -\\n[#L_INDENT]u \"Because we added an indent in 2nd line of macro
 .          ll -\\n[#L_INDENT]u
 .          ta \\n[.l]u
 .       \}
@@ -16403,10 +17839,11 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .END
 \#
 \# This .em (for all DOC_TYPEs, except 4 [LETTER]) ensures that
-\# deferred footnotes that happen on the 2nd to last page get
-\# output.
+\# deferred footnotes and floats that happen on the 2nd to last page
+\# get output, and the last page/col isn't flexed.
 \#
 .MAC TERMINATE END
+.    if dPDF.EXPORT .tm .ds last-page \\n%@\\n[#COL_NUM]
 .    ie \\n[#FN_DEPTH] \{\
 .       ie \\n[#FN_DEFER] \{\
 .          br
@@ -16418,13 +17855,16 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .       el \{\
 .          br
 .          ch FN_OVERFLOW_TRAP
-.          DO_FOOTER
+.          FOOTER
 .       \}
 .    \}
 .    el \{\
+.       br
 .       ch FN_OVERFLOW_TRAP
-.       DO_FOOTER
+.       FOOTER
 .    \}
+.    if \\n[defer] \
+'       bp
 .END
 \#
 \# END MACRO FOR LETTERS
@@ -16451,7 +17891,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .       LEFT
 .       ie !'\\*[$CLOSE_INDENT]'' .IL \\*[$CLOSE_INDENT]
 .       el .IL \\n[#DOC_L_LENGTH]u/2u
-.       SP
+.       sp
 .       if \\n[#CLOSING] \{\
 .          CLOSING_TEXT
 .          br
@@ -16468,49 +17908,33 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 \#
 \# +++DOCUMENT PROCESSING ALIASES+++
 \#
-\# Aliases to make life easier for users: synonyms, short forms
+\# Create aliases to make life easier for users: synonyms, short forms
 \# and alternate spellings.
 \#
-.ALIAS   BREAK_BLOCKQUOTE    BREAK_QUOTE
-.ALIAS   BREAK_CITATION      BREAK_QUOTE
-.ALIAS   BREAK_CITE          BREAK_QUOTE
-.ALIAS   BLOCKQUOTE_INDENT   QUOTE_INDENT
-.ALIAS   CITATION            BLOCKQUOTE
-.ALIAS   CITATION_FAMILY     BLOCKQUOTE_FAMILY
-.ALIAS   CITATION_FONT       BLOCKQUOTE_FONT
-.ALIAS   CITATION_SIZE       BLOCKQUOTE_SIZE
-.ALIAS   CITATION_COLOR      BLOCKQUOTE_COLOR
-.ALIAS   CITATION_QUAD       BLOCKQUOTE_QUAD
-.ALIAS   CITE                BLOCKQUOTE
-.ALIAS   CITE_FAMILY         BLOCKQUOTE_FAMILY
-.ALIAS   CITE_FONT           BLOCKQUOTE_FONT
-.ALIAS   CITE_SIZE           BLOCKQUOTE_SIZE
-.ALIAS   CITE_COLOR          BLOCKQUOTE_COLOR
-.ALIAS   CITE_QUAD           BLOCKQUOTE_QUAD
-.ALIAS   DOC_R_MARGIN        DOC_RIGHT_MARGIN
-.ALIAS   DOC_L_MARGIN        DOC_LEFT_MARGIN
-.ALIAS   DOC_L_LENGTH        DOC_LINE_LENGTH
-.ALIAS   DOC_RMARGIN         DOC_RIGHT_MARGIN
-.ALIAS   DOC_LMARGIN         DOC_LEFT_MARGIN
-.ALIAS   DOC_LLENGTH         DOC_LINE_LENGTH
-.ALIAS   DOC_FAM             DOC_FAMILY
-.ALIAS   DOC_LS              DOC_LEAD
-.ALIAS   DOC_PS              DOC_PT_SIZE
-.ALIAS   FILL                QUAD
-.ALIAS   PAGENUM             PAGENUMBER
-.ALIAS   PAGINATION          PAGINATE
-.ALIAS   PP_FT               PP_FONT
-.ALIAS   REF_INDENT          INDENT_REFS
-.ALIAS   TOC_PS              TOC_PT_SIZE
+.ALIAS CITATION            BLOCKQUOTE
+.ALIAS CITE                BLOCKQUOTE
+.ALIAS DOC_R_MARGIN        DOC_RIGHT_MARGIN
+.ALIAS DOC_L_MARGIN        DOC_LEFT_MARGIN
+.ALIAS DOC_L_LENGTH        DOC_LINE_LENGTH
+.ALIAS DOC_RMARGIN         DOC_RIGHT_MARGIN
+.ALIAS DOC_LMARGIN         DOC_LEFT_MARGIN
+.ALIAS DOC_LLENGTH         DOC_LINE_LENGTH
+.ALIAS DOC_FAM             DOC_FAMILY
+.ALIAS DOC_LS              DOC_LEAD
+.ALIAS DOC_PS              DOC_PT_SIZE
+.ALIAS FILL                QUAD
+.ALIAS PAGENUM             PAGENUMBER
+.ALIAS PAGINATION          PAGINATE
+.ALIAS PP_FT               PP_FONT
+.ALIAS TOC_PS              TOC_PT_SIZE
 \#
 \# HEADER and FOOTER macros
 \# ------------------------
 \# Because the type-style of headers and footers are managed
 \# identically, and the type-style macros (_<type parameter>) all
 \# require the correct name of the calling macro, it's necessary
-\# to create HEADER_ and FOOTER_ macros here.  They're basically
-\# aliases of HDRFTR_, but required because you can't alias an
-\# alias.
+\# to create HEADER_ and FOOTER_ macros here that are basically
+\# aliases with an argument.
 \#
 .MAC FOOTER_CENTER_COLOR END
 .    HDRFTR_CENTER_COLOR \\$1
@@ -16549,11 +17973,11 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .END
 \#
 .MAC FOOTER_CENTRE_COLOR END
-.    HDRFTR_CENTRE_COLOR \\$1
+.    HDRFTR_CENTER_COLOR \\$1
 .END
 \#
 .MAC FOOTER_CENTRE_COLOUR END
-.    HDRFTR_CENTRE_COLOR \\$1
+.    HDRFTR_CENTER_COLOR \\$1
 .END
 \#
 .MAC FOOTER_CENTRE_FAM END
@@ -16701,11 +18125,11 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .END
 \#
 .MAC HEADER_CENTRE_COLOR END
-.    HDRFTR_CENTRE_COLOR \\$1
+.    HDRFTR_CENTER_COLOR \\$1
 .END
 \#
 .MAC HEADER_CENTRE_COLOUR END
-.    HDRFTR_CENTRE_COLOR \\$1
+.    HDRFTR_CENTER_COLOR \\$1
 .END
 \#
 .MAC HEADER_CENTRE_FAM END
@@ -16820,238 +18244,277 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .    HDRFTR_SIZE \\$1
 .END
 \#
-\# HEADER and FOOTER aliases for HDRFTR macros.
-\#
-.ALIAS   BIBLIOGRAPHY_FOOTER_CENTER    BIBLIOGRAPHY_HDRFTR_CENTER
-.ALIAS   BIBLIOGRAPHY_FOOTER_CENTRE    BIBLIOGRAPHY_HDRFTR_CENTRE
-.ALIAS   BIBLIOGRAPHY_HEADER_CENTER    BIBLIOGRAPHY_HDRFTR_CENTER
-.ALIAS   BIBLIOGRAPHY_HEADER_CENTRE    BIBLIOGRAPHY_HDRFTR_CENTRE
-.ALIAS   ENDNOTES_FOOTER_CENTER    ENDNOTES_HDRFTR_CENTER
-.ALIAS   ENDNOTES_FOOTER_CENTRE    ENDNOTES_HDRFTR_CENTRE
-.ALIAS   ENDNOTES_HEADER_CENTER    ENDNOTES_HDRFTR_CENTER
-.ALIAS   ENDNOTES_HEADER_CENTRE    ENDNOTES_HDRFTR_CENTRE
-.ALIAS   FOOTER_CENTER_CAPS        HDRFTR_CENTER_CAPS
-.ALIAS   FOOTER_CENTER             HDRFTR_CENTER
-.ALIAS   FOOTER_CENTER_PAD         HDRFTR_CENTER_PAD
-.ALIAS   FOOTER_CENTRE             HDRFTR_CENTER
-.ALIAS   FOOTER_CENTRE_PAD         HDRFTR_CENTER_PAD
-.ALIAS   FOOTER_LEFT_CAPS          HDRFTR_LEFT_CAPS
-.ALIAS   FOOTER_LEFT               HDRFTR_LEFT
-.ALIAS   FOOTER_PLAIN              HDRFTR_PLAIN
-.ALIAS   FOOTER_RECTO              HDRFTR_RECTO
-.ALIAS   FOOTER_RIGHT_CAPS         HDRFTR_RIGHT_CAPS
-.ALIAS   FOOTER_RIGHT              HDRFTR_RIGHT
-.ALIAS   FOOTER_RULE_GAP           HDRFTR_RULE_GAP
-.ALIAS   FOOTER_RULE               HDRFTR_RULE
-.ALIAS   FOOTER_VERSO              HDRFTR_VERSO
-.ALIAS   HEADER_CENTER_CAPS        HDRFTR_CENTER_CAPS
-.ALIAS   HEADER_CENTER             HDRFTR_CENTER
-.ALIAS   HEADER_CENTER_PAD         HDRFTR_CENTER_PAD
-.ALIAS   HEADER_CENTRE_CAPS        HDRFTR_CENTER_CAPS
-.ALIAS   HEADER_CENTRE             HDRFTR_CENTER
-.ALIAS   HEADER_CENTRE_PAD         HDRFTR_CENTER_PAD
-.ALIAS   HEADER_LEFT_CAPS          HDRFTR_LEFT_CAPS
-.ALIAS   HEADER_LEFT               HDRFTR_LEFT
-.ALIAS   HEADER_PLAIN              HDRFTR_PLAIN
-.ALIAS   HEADER_RECTO              HDRFTR_RECTO
-.ALIAS   HEADER_RIGHT_CAPS         HDRFTR_RIGHT_CAPS
-.ALIAS   HEADER_RIGHT              HDRFTR_RIGHT
-.ALIAS   HEADER_RULE_GAP           HDRFTR_RULE_GAP
-.ALIAS   HEADER_RULE               HDRFTR_RULE
-.ALIAS   HEADER_VERSO              HDRFTR_VERSO
-.ALIAS   SWITCH_FOOTERS            SWITCH_HDRFTR
-.ALIAS   SWITCH_HEADERS            SWITCH_HDRFTR
-\#
-\# Type-style aliases
-\#
-.ALIAS   AUTHOR_FAMILY                    _FAMILY
-.ALIAS   BIBLIOGRAPHY_FAMILY              _FAMILY
-.ALIAS   BIBLIOGRAPHY_STRING_FAMILY       _FAMILY
-.ALIAS   BLOCKQUOTE_FAMILY                _FAMILY
-.ALIAS   CHAPTER_TITLE_FAMILY             _FAMILY
-.ALIAS   COVER_AUTHOR_FAMILY              _FAMILY
-.ALIAS   COVER_CHAPTER_TITLE_FAMILY       _FAMILY
-.ALIAS   COVER_COPYRIGHT_FAMILY           _FAMILY
-.ALIAS   COVER_DOCTYPE_FAMILY             _FAMILY
-.ALIAS   COVER_FAMILY                     _FAMILY
-.ALIAS   COVER_MISC_FAMILY                _FAMILY
-.ALIAS   COVER_SUBTITLE_FAMILY            _FAMILY
-.ALIAS   COVER_TITLE_FAMILY               _FAMILY
-.ALIAS   DOC_COVER_AUTHOR_FAMILY          _FAMILY
-.ALIAS   DOC_COVER_CHAPTER_TITLE_FAMILY   _FAMILY
-.ALIAS   DOC_COVER_COPYRIGHT_FAMILY       _FAMILY
-.ALIAS   DOC_COVER_DOCTYPE_FAMILY         _FAMILY
-.ALIAS   DOC_COVER_FAMILY                 _FAMILY
-.ALIAS   DOC_COVER_MISC_FAMILY            _FAMILY
-.ALIAS   DOC_COVER_SUBTITLE_FAMILY        _FAMILY
-.ALIAS   DOC_COVER_TITLE_FAMILY           _FAMILY
-.ALIAS   DOCHEADER_FAMILY                 _FAMILY
-.ALIAS   DOCTYPE_FAMILY                   _FAMILY
-.ALIAS   ENDNOTE_FAMILY                   _FAMILY
-.ALIAS   ENDNOTE_NUMBER_FAMILY            _FAMILY
-.ALIAS   ENDNOTE_LINENUMBER_FAMILY        _FAMILY
-.ALIAS   ENDNOTE_STRING_FAMILY            _FAMILY
-.ALIAS   ENDNOTE_TITLE_FAMILY             _FAMILY
-.ALIAS   EPIGRAPH_FAMILY                  _FAMILY
-.ALIAS   FOOTNOTE_FAMILY                  _FAMILY
-.ALIAS   HDRFTR_CENTER_FAMILY             _FAMILY
-.ALIAS   HDRFTR_FAMILY                    _FAMILY
-.ALIAS   HDRFTR_LEFT_FAMILY               _FAMILY
-.ALIAS   HDRFTR_RIGHT_FAMILY              _FAMILY
-.ALIAS   LINENUMBER_FAMILY                _FAMILY
-.ALIAS   PAGENUM_FAMILY                   _FAMILY
-.ALIAS   QUOTE_FAMILY                     _FAMILY
-.ALIAS   SUBTITLE_FAMILY                  _FAMILY
-.ALIAS   TITLE_FAMILY                     _FAMILY
-.ALIAS   TOC_FAM                          _FAMILY
-.ALIAS   TOC_FAMILY                       _FAMILY
-.ALIAS   TOC_HEADER_FAMILY                _FAMILY
-.ALIAS   TOC_PN_FAMILY                    _FAMILY
-\#
-.ALIAS   AUTHOR_FONT                    _FONT
-.ALIAS   BIBLIOGRAPHY_STRING_FONT       _FONT
-.ALIAS   BIBLIOGRAPHY_FONT              _FONT
-.ALIAS   BLOCKQUOTE_FONT                _FONT
-.ALIAS   CHAPTER_TITLE_FONT             _FONT
-.ALIAS   COVER_AUTHOR_FONT              _FONT
-.ALIAS   COVER_CHAPTER_TITLE_FONT       _FONT
-.ALIAS   COVER_COPYRIGHT_FONT           _FONT
-.ALIAS   COVER_DOCTYPE_FONT             _FONT
-.ALIAS   COVER_MISC_FONT                _FONT
-.ALIAS   COVER_SUBTITLE_FONT            _FONT
-.ALIAS   COVER_TITLE_FONT               _FONT
-.ALIAS   DOC_COVER_AUTHOR_FONT          _FONT
-.ALIAS   DOC_COVER_CHAPTER_TITLE_FONT   _FONT
-.ALIAS   DOC_COVER_COPYRIGHT_FONT       _FONT
-.ALIAS   DOC_COVER_DOCTYPE_FONT         _FONT
-.ALIAS   DOC_COVER_MISC_FONT            _FONT
-.ALIAS   DOC_COVER_SUBTITLE_FONT        _FONT
-.ALIAS   DOC_COVER_TITLE_FONT           _FONT
-.ALIAS   DOCTYPE_FONT                   _FONT
-.ALIAS   ENDNOTE_FONT                   _FONT
-.ALIAS   ENDNOTE_NUMBER_FONT            _FONT
-.ALIAS   ENDNOTE_LINENUMBER_FONT        _FONT
-.ALIAS   ENDNOTE_STRING_FONT            _FONT
-.ALIAS   ENDNOTE_TITLE_FONT             _FONT
-.ALIAS   EPIGRAPH_FONT                  _FONT
-.ALIAS   FOOTNOTE_FONT                  _FONT
-.ALIAS   HDRFTR_CENTER_FONT             _FONT
-.ALIAS   HDRFTR_LEFT_FONT               _FONT
-.ALIAS   HDRFTR_RIGHT_FONT              _FONT
-.ALIAS   LINENUMBER_FONT                _FONT
-.ALIAS   PAGENUM_FONT                   _FONT
-.ALIAS   QUOTE_FONT                     _FONT
-.ALIAS   SUBTITLE_FONT                  _FONT
-.ALIAS   TITLE_FONT                     _FONT
-.ALIAS   TOC_HEADER_FONT                _FONT
-.ALIAS   TOC_PN_FONT                    _FONT
-\#
-.ALIAS   AUTHOR_SIZE                    _SIZE
-.ALIAS   BIBLIOGRAPHY_STRING_SIZE       _SIZE
-.ALIAS   BLOCKQUOTE_SIZE                _SIZE
-.ALIAS   CHAPTER_TITLE_SIZE             _SIZE
-.ALIAS   COVER_AUTHOR_SIZE              _SIZE
-.ALIAS   COVER_CHAPTER_TITLE_SIZE       _SIZE
-.ALIAS   COVER_COPYRIGHT_SIZE           _SIZE
-.ALIAS   COVER_DOCTYPE_SIZE             _SIZE
-.ALIAS   COVER_MISC_SIZE                _SIZE
-.ALIAS   COVER_SUBTITLE_SIZE            _SIZE
-.ALIAS   COVER_TITLE_SIZE               _SIZE
-.ALIAS   DOC_COVER_AUTHOR_SIZE          _SIZE
-.ALIAS   DOC_COVER_CHAPTER_TITLE_SIZE   _SIZE
-.ALIAS   DOC_COVER_COPYRIGHT_SIZE       _SIZE
-.ALIAS   DOC_COVER_DOCTYPE_SIZE         _SIZE
-.ALIAS   DOC_COVER_MISC_SIZE            _SIZE
-.ALIAS   DOC_COVER_SUBTITLE_SIZE        _SIZE
-.ALIAS   DOC_COVER_TITLE_SIZE           _SIZE
-.ALIAS   DOCTYPE_SIZE                   _SIZE
-.ALIAS   ENDNOTE_NUMBER_SIZE            _SIZE
-.ALIAS   ENDNOTE_LINENUMBER_SIZE        _SIZE
-.ALIAS   ENDNOTE_STRING_SIZE            _SIZE
-.ALIAS   ENDNOTE_TITLE_SIZE             _SIZE
-.ALIAS   EPIGRAPH_SIZE                  _SIZE
-.ALIAS   FOOTNOTE_SIZE                  _SIZE
-.ALIAS   HDRFTR_CENTER_SIZE             _SIZE
-.ALIAS   HDRFTR_LEFT_SIZE               _SIZE
-.ALIAS   HDRFTR_RIGHT_SIZE              _SIZE
-.ALIAS   HDRFTR_SIZE                    _SIZE
-.ALIAS   LINENUMBER_SIZE                _SIZE
-.ALIAS   PAGENUM_SIZE                   _SIZE
-.ALIAS   QUOTE_SIZE                     _SIZE
-.ALIAS   SUBTITLE_SIZE                  _SIZE
-.ALIAS   TITLE_SIZE                     _SIZE
-.ALIAS   TOC_HEADER_SIZE                _SIZE
-.ALIAS   TOC_PN_SIZE                    _SIZE
-\#
-.ALIAS   ATTRIBUTE_COLOR                 _COLOR
-.ALIAS   AUTHOR_COLOR                    _COLOR
-.ALIAS   BLOCKQUOTE_COLOR                _COLOR
-.ALIAS   CHAPTER_TITLE_COLOR             _COLOR
-.ALIAS   CODE_COLOR                      _COLOR
-.ALIAS   COVER_ATTRIBUTE_COLOR           _COLOR
-.ALIAS   COVER_AUTHOR_COLOR              _COLOR
-.ALIAS   COVER_CHAPTER_TITLE_COLOR       _COLOR
-.ALIAS   COVER_COLOR                     _COLOR
-.ALIAS   COVER_COPYRIGHT_COLOR           _COLOR
-.ALIAS   COVER_DOCTYPE_COLOR             _COLOR
-.ALIAS   COVER_MISC_COLOR                _COLOR
-.ALIAS   COVER_SUBTITLE_COLOR            _COLOR
-.ALIAS   COVER_TITLE_COLOR               _COLOR
-.ALIAS   DOC_COVER_ATTRIBUTE_COLOR       _COLOR
-.ALIAS   DOC_COVER_AUTHOR_COLOR          _COLOR
-.ALIAS   DOC_COVER_CHAPTER_TITLE_COLOR   _COLOR
-.ALIAS   DOC_COVER_COLOR                 _COLOR
-.ALIAS   DOC_COVER_COPYRIGHT_COLOR       _COLOR
-.ALIAS   DOC_COVER_DOCTYPE_COLOR         _COLOR
-.ALIAS   DOC_COVER_MISC_COLOR            _COLOR
-.ALIAS   DOC_COVER_SUBTITLE_COLOR        _COLOR
-.ALIAS   DOC_COVER_TITLE_COLOR           _COLOR
-.ALIAS   DOCHEADER_COLOR                 _COLOR
-.ALIAS   DOCTYPE_COLOR                   _COLOR
-.ALIAS   ENDNOTE_STRING_COLOR            _COLOR
-.ALIAS   EPIGRAPH_COLOR                  _COLOR
-.ALIAS   FINIS_COLOR                     _COLOR
-.ALIAS   FOOTNOTE_COLOR                  _COLOR
-.ALIAS   HDRFTR_CENTER_COLOR             _COLOR
-.ALIAS   HDRFTR_COLOR                    _COLOR
-.ALIAS   HDRFTR_LEFT_COLOR               _COLOR
-.ALIAS   HDRFTR_RIGHT_COLOR              _COLOR
-.ALIAS   HDRFTR_RULE_COLOR               _COLOR
-.ALIAS   LINEBREAK_COLOR                 _COLOR
-.ALIAS   LINENUMBER_COLOR                _COLOR
-.ALIAS   PAGENUM_COLOR                   _COLOR
-.ALIAS   QUOTE_COLOR                     _COLOR
-.ALIAS   SECTION_COLOR                   _COLOR
-.ALIAS   SUBTITLE_COLOR                  _COLOR
-.ALIAS   TITLE_COLOR                     _COLOR
-\#
-.ALIAS   BIBLIOGRAPHY_QUAD          _QUAD
-.ALIAS   BIBLIOGRAPHY_STRING_QUAD   _QUAD
-.ALIAS   BLOCKQUOTE_QUAD            _QUAD
-.ALIAS   COVER_COPYRIGHT_QUAD       _QUAD
-.ALIAS   COVER_MISC_QUAD            _QUAD
-.ALIAS   COVER_QUAD                 _QUAD
-.ALIAS   DOC_COVER_COPYRIGHT_QUAD   _QUAD
-.ALIAS   DOC_COVER_MISC_QUAD        _QUAD
-.ALIAS   DOC_COVER_QUAD             _QUAD
-.ALIAS   DOCHEADER_QUAD             _QUAD
-.ALIAS   DOC_QUAD                   _QUAD
-.ALIAS   ENDNOTE_QUAD               _QUAD
-.ALIAS   ENDNOTE_STRING_QUAD        _QUAD
-.ALIAS   ENDNOTE_TITLE_QUAD         _QUAD
-.ALIAS   EPIGRAPH_QUAD              _QUAD
-.ALIAS   FOOTNOTE_QUAD              _QUAD
-.ALIAS   TOC_HEADER_QUAD            _QUAD
+\# Aliases for other HEADER and FOOTER macros.
+\#
+.ALIAS  BIBLIOGRAPHY_FOOTER_CENTER BIBLIOGRAPHY_HDRFTR_CENTER
+.ALIAS  BIBLIOGRAPHY_FOOTER_CENTRE BIBLIOGRAPHY_HDRFTR_CENTER
+.ALIAS  BIBLIOGRAPHY_HEADER_CENTER BIBLIOGRAPHY_HDRFTR_CENTER
+.ALIAS  BIBLIOGRAPHY_HEADER_CENTRE BIBLIOGRAPHY_HDRFTR_CENTER
+.
+.ALIAS  ENDNOTES_FOOTER_CENTER ENDNOTES_HDRFTR_CENTER
+.ALIAS  ENDNOTES_FOOTER_CENTRE ENDNOTES_HDRFTR_CENTER
+.ALIAS  ENDNOTES_HEADER_CENTER ENDNOTES_HDRFTR_CENTER
+.ALIAS  ENDNOTES_HEADER_CENTRE ENDNOTES_HDRFTR_CENTER
+.
+.ALIAS  FOOTER_CENTER           HDRFTR_CENTER
+.ALIAS  TOC_PAGEFOOTER_CENTER   HDRFTR_CENTER
+.ALIAS  TOC_PAGEFOOTER_CENTRE   HDRFTR_CENTER
+.ALIAS  FOOTER_CENTER_CAPS      _HDRFTR_CAPS
+.ALIAS  FOOTER_CENTER_PAD       HDRFTR_CENTER_PAD
+.ALIAS  FOOTER_CENTER_SMALLCAPS _HDRFTR_SMALLCAPS
+.ALIAS  FOOTER_CENTRE           HDRFTR_CENTER
+.ALIAS  FOOTER_CENTRE_CAPS      _HDRFTR_CAPS
+.ALIAS  FOOTER_CENTRE_PAD       HDRFTR_CENTER_PAD
+.ALIAS  FOOTER_CENTRE_SMALLCAPS _HDRFTR_SMALLCAPS
+.ALIAS  FOOTER_LEFT             HDRFTR_LEFT
+.ALIAS  FOOTER_LEFT_CAPS        _HDRFTR_CAPS
+.ALIAS  FOOTER_LEFT_SMALLCAPS   _HDRFTR_SMALLCAPS
+.ALIAS  FOOTER_PLAIN            HDRFTR_PLAIN
+.ALIAS  FOOTER_RECTO            HDRFTR_RECTO
+.ALIAS  FOOTER_RIGHT            HDRFTR_RIGHT
+.ALIAS  FOOTER_RIGHT_CAPS       _HDRFTR_CAPS
+.ALIAS  FOOTER_RIGHT_SMALLCAPS  _HDRFTR_SMALLCAPS
+.ALIAS  FOOTER_RULE             HDRFTR_RULE
+.ALIAS  FOOTER_RULE_GAP         HDRFTR_RULE_GAP
+.ALIAS  FOOTER_VERSO            HDRFTR_VERSO
+.
+.ALIAS  HEADER_CENTER           HDRFTR_CENTER
+.ALIAS  TOC_PAGEHEADER_CENTER   HDRFTR_CENTER
+.ALIAS  TOC_PAGEHEADER_CENTRE   HDRFTR_CENTER
+.ALIAS  HEADER_CENTER_CAPS      _HDRFTR_CAPS
+.ALIAS  HEADER_CENTER_PAD       HDRFTR_CENTER_PAD
+.ALIAS  HEADER_CENTER_SMALLCAPS _HDRFTR_SMALLCAPS
+.ALIAS  HEADER_CENTRE           HDRFTR_CENTER
+.ALIAS  HEADER_CENTRE_CAPS      _HDRFTR_CAPS
+.ALIAS  HEADER_CENTRE_PAD       HDRFTR_CENTER_PAD
+.ALIAS  HEADER_CENTRE_SMALLCAPS _HDRFTR_SMALLCAPS
+.ALIAS  HEADER_LEFT             HDRFTR_LEFT
+.ALIAS  HEADER_LEFT_CAPS        _HDRFTR_CAPS
+.ALIAS  HEADER_LEFT_SMALLCAPS   _HDRFTR_SMALLCAPS
+.ALIAS  HEADER_PLAIN            HDRFTR_PLAIN
+.ALIAS  HEADER_RECTO            HDRFTR_RECTO
+.ALIAS  HEADER_RIGHT            HDRFTR_RIGHT
+.ALIAS  HEADER_RIGHT_CAPS       _HDRFTR_CAPS
+.ALIAS  HEADER_RIGHT_SMALLCAPS  _HDRFTR_SMALLCAPS
+.ALIAS  HEADER_RULE             HDRFTR_RULE
+.ALIAS  HEADER_RULE_GAP         HDRFTR_RULE_GAP
+.ALIAS  HEADER_VERSO            HDRFTR_VERSO
+.
+.ALIAS  SWITCH_FOOTERS     SWITCH_HDRFTR
+.ALIAS  SWITCH_HEADERS     SWITCH_HDRFTR
+\#
+\# Create type-style aliases for tags, titles, and page elements
+\#
+\# These are used for creating aliases with while loops
+\#
+.ds ELEMENT_TYPE_1  BIBLIOGRAPHY_STRING
+.ds ELEMENT_TYPE_2  BIBLIOGRAPHY_HEADER
+.ds ELEMENT_TYPE_3  BLOCKQUOTE
+.ds ELEMENT_TYPE_4  CITATION
+.ds ELEMENT_TYPE_5  CITE
+.ds ELEMENT_TYPE_6  ENDNOTES_HEADER
+.ds ELEMENT_TYPE_7  ENDNOTE_STRING
+.ds ELEMENT_TYPE_8  EPIGRAPH
+.ds ELEMENT_TYPE_9  HDRFTR_CENTER
+.ds ELEMENT_TYPE_10 HDRFTR_LEFT
+.ds ELEMENT_TYPE_11 HDRFTR_RIGHT
+.ds ELEMENT_TYPE_12 LINENUMBER
+.ds ELEMENT_TYPE_13 PAGENUM
+.ds ELEMENT_TYPE_14 QUOTE
+.ds ELEMENT_TYPE_15 TOC_HEADER
+.ds ELEMENT_TYPE_16 CODE
+.ds ELEMENT_TYPE_17 FINIS
+.ds ELEMENT_TYPE_18 COPYRIGHT
+\#
+\# Create aliases for _FAMILY
+.ALIAS BIBLIOGRAPHY_FAMILY       _FAMILY
+.ALIAS COVER_FAMILY              _FAMILY
+.ALIAS DOCHEADER_FAMILY          _FAMILY
+.ALIAS DOC_COVER_FAMILY          _FAMILY
+.ALIAS ENDNOTE_FAMILY            _FAMILY
+.ALIAS ENDNOTE_LINENUMBER_FAMILY _FAMILY
+.ALIAS ENDNOTE_NUMBER_FAMILY     _FAMILY
+.ALIAS ENDNOTE_STRING_FAMILY     _FAMILY
+.ALIAS ENDNOTE_TITLE_FAMILY      _FAMILY
+.ALIAS FOOTNOTE_FAMILY           _FAMILY
+.ALIAS HDRFTR_FAMILY             _FAMILY
+.ALIAS PAGENUMBER_FAMILY         _FAMILY
+.ALIAS TOC_FAMILY                _FAMILY
+.ALIAS TOC_PAGENUMBER_FAMILY     _FAMILY
+.ALIAS TOC_PN_FAMILY             _FAMILY
+.ALIAS TOC_TITLE_FAMILY          _FAMILY
+\#
+.nr #LOOP 0 1
+.while \n+[#LOOP]<=18 \{\
+. ALIAS \*[ELEMENT_TYPE_\n[#LOOP]]_FAMILY _FAMILY
+.\}
+\# Covers, docheader
+.nr #LOOP 0 1
+.while \n+[#LOOP]<=12 \{\
+. ALIAS \*[TITLE_TYPE_\n[#LOOP]]_FAMILY           _FAMILY
+. ALIAS COVER_\*[TITLE_TYPE_\n[#LOOP]]_FAMILY     _FAMILY
+. ALIAS DOC_COVER_\*[TITLE_TYPE_\n[#LOOP]]_FAMILY _FAMILY
+.\}
+\#
+\# Create aliases for _FONT
+.ALIAS BIBLIOGRAPHY_FONT       _FONT
+.ALIAS ENDNOTE_FONT            _FONT
+.ALIAS ENDNOTE_LINENUMBER_FONT _FONT
+.ALIAS ENDNOTE_NUMBER_FONT     _FONT
+.ALIAS ENDNOTE_TITLE_FONT      _FONT
+.ALIAS FOOTNOTE_FONT           _FONT
+.ALIAS TOC_PN_FONT             _FONT
+\#
+.nr #LOOP 0 1
+.while \n+[#LOOP]<=18 \{\
+. ALIAS \*[ELEMENT_TYPE_\n[#LOOP]]_FONT _FONT
+.\}
+\# Covers, docheader
+.nr #LOOP 0 1
+.while \n+[#LOOP]<=12 \{\
+. ALIAS \*[TITLE_TYPE_\n[#LOOP]]_FONT           _FONT
+. ALIAS COVER_\*[TITLE_TYPE_\n[#LOOP]]_FONT     _FONT
+. ALIAS DOC_COVER_\*[TITLE_TYPE_\n[#LOOP]]_FONT _FONT
+.\}
+\#
+\# Create aliases for _SIZE
+.ALIAS   ENDNOTE_LINENUMBER_SIZE _SIZE
+.ALIAS   ENDNOTE_NUMBER_SIZE     _SIZE
+.ALIAS   ENDNOTE_TITLE_SIZE      _SIZE
+.ALIAS   FOOTNOTE_SIZE           _SIZE
+.ALIAS   HDRFTR_SIZE             _SIZE
+.ALIAS   TOC_PN_SIZE             _SIZE
+\#
+.nr #LOOP 0 1
+.while \n+[#LOOP]<=18 \{\
+. ALIAS \*[ELEMENT_TYPE_\n[#LOOP]]_SIZE _SIZE
+.\}
+\# Covers, docheader
+.nr #LOOP 0 1
+.while \n+[#LOOP]<=12 \{\
+. ALIAS \*[TITLE_TYPE_\n[#LOOP]]_SIZE           _SIZE
+. ALIAS COVER_\*[TITLE_TYPE_\n[#LOOP]]_SIZE     _SIZE
+. ALIAS DOC_COVER_\*[TITLE_TYPE_\n[#LOOP]]_SIZE _SIZE
+.\}
+\#
+\# Create aliases for TITLE_LEAD
+.nr #LOOP 0 1
+.while \n+[#LOOP]<=12 \{\
+. ALIAS \*[TITLE_TYPE_\n[#LOOP]]_LEAD           TITLE_LEAD
+. ALIAS COVER_\*[TITLE_TYPE_\n[#LOOP]]_LEAD     TITLE_LEAD
+. ALIAS DOC_COVER_\*[TITLE_TYPE_\n[#LOOP]]_LEAD TITLE_LEAD
+.\}
+\#
+\# Create aliases for _UNDERLINE
+.ALIAS BIBLIOGRAPHY_HEADER_UNDERLINE  _UNDERLINE
+.ALIAS BIBLIOGRAPHY_HEADER_UNDERSCORE _UNDERLINE
+.ALIAS BIBLIOGRAPHY_STRING_UNDERLINE  _UNDERLINE
+.ALIAS BIBLIOGRAPHY_STRING_UNDERSCORE _UNDERLINE
+.ALIAS BIB_STRING_UNDERLINE           _UNDERLINE
+.ALIAS ENDNOTES_HEADER_UNDERLINE      _UNDERLINE
+.ALIAS ENDNOTES_HEADER_UNDERSCORE     _UNDERLINE
+.ALIAS ENDNOTES_STRING_UNDERLINE      _UNDERLINE
+.ALIAS ENDNOTES_STRING_UNDERSCORE     _UNDERLINE
+.ALIAS ENDNOTE_TITLE_UNDERLINE        _UNDERLINE
+.ALIAS ENDNOTE_TITLE_UNDERSCORE       _UNDERLINE
+.ALIAS EN_STRING_UNDERLINE            _UNDERLINE
+.ALIAS EN_STRING_UNDERSCORE           _UNDERLINE
+.ALIAS TOC_HEADER_UNDERLINE           _UNDERLINE
+.ALIAS TOC_HEADER_UNDERSCORE          _UNDERLINE
+\#
+.nr #LOOP 0 1
+.while \n+[#LOOP]<=12 \{\
+. ALIAS \*[TITLE_TYPE_\n[#LOOP]]_UNDERLINE            _UNDERLINE
+. ALIAS \*[TITLE_TYPE_\n[#LOOP]]_UNDERSCORE           _UNDERLINE
+. ALIAS COVER_\*[TITLE_TYPE_\n[#LOOP]]_UNDERLINE      _UNDERLINE
+. ALIAS COVER_\*[TITLE_TYPE_\n[#LOOP]]_UNDERSCORE     _UNDERLINE
+. ALIAS DOC_COVER_\*[TITLE_TYPE_\n[#LOOP]]_UNDERLINE  _UNDERLINE
+. ALIAS DOC_COVER_\*[TITLE_TYPE_\n[#LOOP]]_UNDERSCORE _UNDERLINE
+.\}
+\#
+\# Create aliases for _COLOR
+.ALIAS BIBLIOGRAPHY_HEADER_COLOR _COLOR
+.ALIAS COVER_COLOR               _COLOR
+.ALIAS DOCHEADER_COLOR           _COLOR
+.ALIAS ENDNOTE_TITLE_COLOR       _COLOR
+.ALIAS FINIS_COLOR               _COLOR
+.ALIAS FOOTNOTE_COLOR            _COLOR
+.ALIAS HDRFTR_COLOR              _COLOR
+.ALIAS HDRFTR_RULE_COLOR         _COLOR
+.ALIAS LINEBREAK_COLOR           _COLOR
+.ALIAS SECTION_COLOR             _COLOR
+\#
+.nr #LOOP 0 1
+.while \n+[#LOOP]<=18 \{\
+. ALIAS \*[ELEMENT_TYPE_\n[#LOOP]]_COLOR _COLOR
+.\}
+\# Covers, docheader
+.nr #LOOP 0 1
+.while \n+[#LOOP]<=12 \{\
+. ALIAS \*[TITLE_TYPE_\n[#LOOP]]_COLOR           _COLOR
+. ALIAS COVER_\*[TITLE_TYPE_\n[#LOOP]]_COLOR     _COLOR
+. ALIAS DOC_COVER_\*[TITLE_TYPE_\n[#LOOP]]_COLOR _COLOR
+.\}
+\#
+\# Create aliases for _CAPS
+.ALIAS BIBLIOGRAPHY_HEADER_CAPS _CAPS
+.ALIAS BIBLIOGRAPHY_STRING_CAPS _CAPS
+.ALIAS ENDNOTE_TITLE_CAPS       _CAPS
+\#
+.nr #LOOP 0 1
+.while \n+[#LOOP]<=12 \{\
+. ALIAS \*[TITLE_TYPE_\n[#LOOP]]_CAPS           _CAPS
+. ALIAS COVER_\*[TITLE_TYPE_\n[#LOOP]]_CAPS     _CAPS
+. ALIAS DOC_COVER_\*[TITLE_TYPE_\n[#LOOP]]_CAPS _CAPS
+.\}
+\#
+\# Create aliases for _SMALLCAPS
+.ALIAS BIBLIOGRAPHY_HEADER_SMALLCAPS _SMALLCAPS
+.ALIAS BIBLIOGRAPHY_STRING_SMALLCAPS _SMALLCAPS
+.ALIAS ENDNOTE_TITLE_SMALLCAPS       _SMALLCAPS
+.ALIAS HDRFTR_CENTER_SMALLCAPS       _SMALLCAPS
+.ALIAS HDRFTR_LEFT_SMALLCAPS         _SMALLCAPS
+.ALIAS HDRFTR_RIGHT_SMALLCAPS        _SMALLCAPS
+\#
+.nr #LOOP 0 1
+.while \n+[#LOOP]<=12 \{\
+. ALIAS \*[TITLE_TYPE_\n[#LOOP]]_SMALLCAPS           _SMALLCAPS
+. ALIAS COVER_\*[TITLE_TYPE_\n[#LOOP]]_SMALLCAPS     _SMALLCAPS
+. ALIAS DOC_COVER_\*[TITLE_TYPE_\n[#LOOP]]_SMALLCAPS _SMALLCAPS
+.\}
+\#
+\# Create aliases for _QUAD
+.ALIAS  BIBLIOGRAPHY_HEADER_QUAD  _QUAD
+.ALIAS  BIBLIOGRAPHY_QUAD         _QUAD
+.ALIAS  BIBLIOGRAPHY_STRING_QUAD  _QUAD
+.ALIAS  BLOCKQUOTE_QUAD           _QUAD
+.ALIAS  COPYRIGHT_QUAD            _QUAD
+.ALIAS  COVER_COPYRIGHT_QUAD      _QUAD
+.ALIAS  COVER_MISC_QUAD           _QUAD
+.ALIAS  COVER_QUAD                _QUAD
+.ALIAS  DOCHEADER_QUAD            _QUAD
+.ALIAS  DOC_COVER_COPYRIGHT_QUAD  _QUAD
+.ALIAS  DOC_COVER_MISC_QUAD       _QUAD
+.ALIAS  DOC_COVER_QUAD            _QUAD
+.ALIAS  DOC_QUAD                  _QUAD
+.ALIAS  ENDNOTES_HEADER_QUAD      _QUAD
+.ALIAS  ENDNOTE_QUAD              _QUAD
+.ALIAS  ENDNOTE_STRING_QUAD       _QUAD
+.ALIAS  ENDNOTE_TITLE_QUAD        _QUAD
+.ALIAS  EPIGRAPH_QUAD             _QUAD
+.ALIAS  FOOTNOTE_QUAD             _QUAD
+.ALIAS  MISC_QUAD                 _QUAD
+.ALIAS  TOC_HEADER_QUAD           _QUAD
 \#
 \# Support aliases
 \#
 .ALIAS   COL_BREAK               COL_NEXT
-.ALIAS   DOC_COVER_ADVANCE       COVER_ADVANCE
 .ALIAS   DOC_COVER               COVER
-.ALIAS   DOC_COVER_COUNTS_PAGES  COVER_COUNTS_PAGES
 .ALIAS   DOC_COVERS              COVERS
-.ALIAS   DOC_COVER_LEAD          COVER_LEAD
 .ALIAS   DOC_COVERTITLE          COVERTITLE
+.ALIAS   DOC_COVER_COUNTS_PAGES  COVER_COUNTS_PAGES
+.ALIAS   DOC_COVER_LEAD          COVER_LEAD
+.ALIAS   DOC_DOC_COVERTITLE      COVERTITLE
 .ALIAS   DO_DOC_COVER            DO_COVER
 .ALIAS   PRINT_FOOTNOTE_RULE     FOOTNOTE_RULE
 \#
@@ -17080,7 +18543,6 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .    \}
 .END
 \#
-\#
 \# PREPROCESSOR SUPPORT
 \# ====================
 \#
@@ -17094,6 +18556,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .    if \\n[all]=2 .ds label-type pdf-img
 .    if \\n[all]=3 .ds label-type pic
 .    if \\n[all]=4 .ds label-type tbl
+.    if \\n[all]=5 .ds label-type floating
 .END
 \#
 .MAC set-defaults END
@@ -17105,6 +18568,8 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .       ds \\*[label-type]*\\*[spec-type]-size-change +0\"
 .    if !r \\*[label-type]*\\*[spec-type]-autolead \
 .       nr \\*[label-type]*\\*[spec-type]-autolead 2
+.    if '\\*[\\*[label-type]*\\*[spec-type]-space]'' \
+.       ds \\*[label-type]*\\*[spec-type]-space +0\"
 .    if '\\*[\\*[label-type]*\\*[spec-type]-color]'' \
 .       ds \\*[label-type]*\\*[spec-type]-color black\"
 .    if '\\*[\\*[label-type]*\\*[spec-type]-quad]'' \{\
@@ -17116,9 +18581,8 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .    \}
 .    if '\\n[\\*[label-type]*\\*[spec-type]-quad-on-ll]'' \
 .       nr \\*[label-type]*\\*[spec-type]-quad-on-ll 1
-.    if '\\*[spec-type]'caption' \{\
+.    if '\\*[spec-type]'caption' \
 .       nr default-left 1
-.    \}
 .END
 \#
 .MAC set-inline-specs END
@@ -17134,10 +18598,10 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .MAC SET_QUAD END
 .    ds label-type \\$0
 .    substring label-type 0 2
-.    if '\\*[label-type]'PDF'  .ds label-type pdf-img
-.    if '\\*[label-type]'TBL'  .ds label-type tbl
-.    if '\\*[label-type]'PIC'  .ds label-type pic
-.    if '\\*[label-type]'EQN'  .ds label-type eqn
+.    if '\\*[label-type]'PDF'   .ds label-type pdf-img
+.    if '\\*[label-type]'TBL'   .ds label-type tbl
+.    if '\\*[label-type]'PIC'   .ds label-type pic
+.    if '\\*[label-type]'EQN'   .ds label-type eqn
 .    ds spec-type \\$0
 .    substring spec-type -6 -10
 .    if '\\*[spec-type]'PTION' .ds spec-type caption
@@ -17210,15 +18674,56 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .       if !\\n[tbl*\\*[spec-type]-quad-on-ll] \{\
 .          ie \\n[tbl*center] \{\
 .             ie '\\*[spec-type]'label' \{\
-.                ll \\n[ll-pre-tbl]u-\\n[TW]u/2u+\\n[TW]u
-\!.                in \\n[ll-pre-tbl]u-\\n[TW]u/2u
+.\" Differentiate between a tbl label and a float label
+.                ie !'\\*[ev-current]'FLOAT' \{\
+.                   ll \\n[ll-pre-tbl]u-\\n[TW]u/2u+\\n[TW]u
+.                   if \\n[tbl*have-header] \
+.                      in (\\n[ll-pre-tbl]u-\\n[.i]u)-\\n[TW]u/2u+\\n[.i]u
+.                \}
+.                el \{\
+.                   in \\n[ll-pre-tbl]u+\\n[.i]u-\\n[TW]u/2u
+.                   ll \\n[.l]u-\\n[.i]u
+.                \}
 .             \}
 .             el \{\
-.                ll \\n[TW]u
-\!.              in \\n[ll-pre-tbl]u-\\n[TW]u/2u
+.                if '\\*[spec-type]'source' \{\
+.                    ie \\n[float*tbl] \{\
+.                       ll \\n[TW]u
+\!.                     in \\n[ll-pre-tbl]u-\\n[TW]u/2u+\\n[tmp-ind]u
+.                    \}
+.                    el \{\
+.                       ll \\n[TW]u+\\n[ind-pre-tbl]u
+.                       ie \\n[ind-pre-tbl] \
+\!.                        in \\n[ll-pre-tbl]u-\\n[TW]u/2u
+.                       el \
+\!.                        in \\n[ll-pre-tbl]u-\\n[TW]u/2u+\\n[tmp-ind]u
+.                    \}
+\!.                  ti -\\n[tmp-ind]u
+.                \}
+.                if '\\*[spec-type]'caption' \{\
+.                    ll \\n[ll-pre-tbl]u+\\n[.i]u-\\n[TW]u/2u+\\n[TW]u
+.                    in \\n[ll-pre-tbl]u+\\n[.i]u-\\n[TW]u/2u
+.                \}
+.             \}
+.          \}
+.          el \{\
+.             ll \\n[TW]u+\\n[.i]u
+.\" Check the effect of setting a source in non-MLA mode.
+.             if '\\*[spec-type]'source' \{\
+.                if \\n[#MLA] \{\
+.                   ie \\n[float*tbl] \{\
+\!.                    ll \\n[TW]u+\\n[ind-pre-tbl]u
+\!.                    in \\n[tmp-ind]u+\\n[ind-pre-tbl]u
+\!.                    ti -\\n[tmp-ind]u
+.                   \}
+.                   el \{\
+.                      ll \\n[TW]u+\\n[ind-pre-tbl]u
+\!.                      in \\n[tmp-ind]u
+\!.                      ti -\\n[tmp-ind]u
+.                   \}
+.                \}
 .             \}
 .          \}
-.          el .ll \\n[TW]u
 .       \}
 .    \}
 .END
@@ -17242,10 +18747,10 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .    if '\\*[spec-type]'cap' .ds spec-type caption
 .    if '\\*[spec-type]'lab' .ds spec-type label
 .    if '\\*[spec-type]'sou' .ds spec-type source
-.    fam \\*[\\*[label-type]*\\*[spec-type]-family]
-.    ft \\*[\\*[label-type]*\\*[spec-type]-font]
-.    ps \\n[#DOC_PT_SIZE]u\\*[\\*[label-type]*\\*[spec-type]-size-change]
-.    gcolor \\*[\\*[label-type]*\\*[spec-type]-color]
+'    fam \\*[\\*[label-type]*\\*[spec-type]-family]
+'    ft \\*[\\*[label-type]*\\*[spec-type]-font]
+'    ps \\n[#DOC_PT_SIZE]u\\*[\\*[label-type]*\\*[spec-type]-size-change]
+.    COLOR \\*[\\*[label-type]*\\*[spec-type]-color]
 .END
 \#
 .ALIAS tbl*caption-style style
@@ -17264,13 +18769,13 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 \# --------------------------------------------
 \#  Aliased as CAPTIONS and LABELS for eqn, pic, tbl, and pdf images.
 \# *Arguments:
-\#   EQN | IMG | PIC | TBL \
+\#   EQN | IMG | PIC | TBL | FLOATING \
 \#   Remaining arguments are optional
-\#   FAMILY fam \
-\#   FONT   sty \
-\#   SIZE   +|-size \
-\#   QUAD   LEFT | CENTRE | RIGHT [ ON_LL ] \
-\#   COLOR  color \
+\#   FAMILY   fam \
+\#   FONT     sty \
+\#   SIZE     +|-size \
+\#   QUAD     LEFT | CENTRE | RIGHT [ ON_LL ] \
+\#   COLOR    color \
 \#   AUTOLEAD n \
 \#   ADJUST   +|-n
 \# *Function:
@@ -17285,11 +18790,13 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .    if '\\$0'CAPTIONS' .ds spec-type caption
 .    if '\\$0'LABELS'   .ds spec-type label
 .    if '\\$0'SOURCES'  .ds spec-type source
-.    if '\\$1'EQN' .ds label-type eqn
-.    if '\\$1'IMG' .ds label-type pdf-img
-.    if '\\$1'PIC' .ds label-type pic
-.    if '\\$1'TBL' .ds label-type tbl
-.    if '\\$1'ALL' .nr all 1
+.    ds $LABEL-TYPE \\$1
+.    if '\\$1'EQN'      .ds label-type eqn
+.    if '\\$1'FLOATING' .ds label-type floating
+.    if '\\$1'IMG'      .ds label-type pdf-img
+.    if '\\$1'PIC'      .ds label-type pic
+.    if '\\$1'TBL'      .ds label-type tbl
+.    if '\\$1'ALL'      .nr all 1
 .    shift
 .    nr loop-counter \\n[#NUM_ARGS]
 .    nr loop-count 0 1
@@ -17298,7 +18805,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .          shift
 .          ie r all \{\
 .             nr all 0 1
-.             while \\n+[all]<=4 \{\
+.             while \\n+[all]<=5 \{\
 .                 get-label-type
 .                 ds \\*[label-type]*\\*[spec-type]-family \\$1
 .             \}
@@ -17312,7 +18819,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .          shift
 .          ie r all \{\
 .             nr all 0 1
-.             while \\n+[all]<=4 \{\
+.             while \\n+[all]<=5 \{\
 .                 get-label-type
 .                 ds \\*[label-type]*\\*[spec-type]-font \\$1
 .             \}
@@ -17326,7 +18833,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .          shift
 .          ie r all \{\
 .             nr all 0 1
-.             while \\n+[all]<=4 \{\
+.             while \\n+[all]<=5 \{\
 .                 get-label-type
 .                 ds \\*[label-type]*\\*[spec-type]-size-change \\$1
 .             \}
@@ -17340,7 +18847,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .          shift
 .          ie r all \{\
 .             nr all 0 1
-.             while \\n+[all]<=4 \{\
+.             while \\n+[all]<=5 \{\
 .                 get-label-type
 .                 nr \\*[label-type]*\\*[spec-type]-autolead (p;\\$1)
 .             \}
@@ -17352,10 +18859,12 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .          shift
 .          ie r all \{\
 .             nr all 0 1
-.             while \\n+[all]<=4 \{\
+.             while \\n+[all]<=5 \{\
 .                 get-label-type
 .                 ds \\*[label-type]*\\*[spec-type]-quad \\$1
 .                 substring \\*[label-type]*\\*[spec-type]-quad 0 0
+.                 if '\\$2'ON_LL' \
+.                    nr \\*[label-type]*\\*[spec-type]-quad-on-ll 1
 .             \}
 .          \}
 .          el \{\
@@ -17363,18 +18872,17 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .             substring \\*[label-type]*\\*[spec-type]-quad 0 0
 .             if \\n[\\*[label-type]*\\*[spec-type]-quad-on-ll] \
 .                rr \\*[label-type]*\\*[spec-type]-quad-on-ll 
+.             if '\\$2'ON_LL' \
+.                nr \\*[label-type]*\\*[spec-type]-quad-on-ll 1
 .          \}
-.          shift
-.          if '\\$1'ON_LL' \{\
-.             nr \\*[label-type]*\\*[spec-type]-quad-on-ll 1
-.             shift
-.          \}
+.          ie '\\$2'ON_LL' .shift 2
+.          el  .shift
 .       \}
 .       if '\\$1'COLOR' \{\
 .          shift
 .          ie r all \{\
 .             nr all 0 1
-.             while \\n+[all]<=4 \{\
+.             while \\n+[all]<=5 \{\
 .                 get-label-type
 .                 ds \\*[label-type]*\\*[spec-type]-color \\$1
 .             \}
@@ -17388,7 +18896,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .          shift
 .          ie r all \{\
 .             nr all 0 1
-.             while \\n+[all]<=4 \{\
+.             while \\n+[all]<=5 \{\
 .                 get-label-type
 .                 ds \\*[label-type]*\\*[spec-type]-space \\$1
 .             \}
@@ -17398,10 +18906,45 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .             ds \\*[label-type]*\\*[spec-type]-space +0
 .          shift
 .       \}
+.       if '\\$1'INDENT' \{\
+.          shift
+.          ie '\\*[label-type]'floating' \{\
+.             ie \B'\\$1' \{\
+.                nr \\*[label-type]*\\*[spec-type]-indent-l \\$1
+.                shift
+.             \}
+.             el \{\
+.                ie '\\$1'RIGHT' \{\
+.                   shift
+.                   nr \\*[label-type]*\\*[spec-type]-indent-r \\$1
+.                   shift
+.                \}
+.                el \{\
+.                   tm1 \
+"[mom]: Missing value for INDENT in macro '\\$0' at line \\n[.c].
+.                   ab \
+[mom]: Aborting '\\n[.F]' at \\$0, line \\n[.c].
+.                \}
+.             \}
+.          \}
+.          el \{\
+.             shift
+.             if !\\n[#SKIP_INDENT_WARNING] \{\
+.                tm1 \
+"[mom]: '\\$0 \\*[$LABEL-TYPE]' at line \\n[.c] does not take an indent.
+.                tm1 \
+"        No indent(s) will be applied.
+.                nr #SKIP_INDENT_WARNING 1
+.             \}
+.             if '\\$1'INDENT' .shift
+.             if '\\$1'RIGHT'  .shift
+.             if \B'\\$1'      .shift
+.          \}
+.       \}
 .    \}
 .    ie r all \{\
 .       nr all 0 1
-.       while \\n+[all]<=4 \{\
+.       while \\n+[all]<=5 \{\
 .          get-label-type
 .          set-defaults
 .          set-inline-specs
@@ -17412,13 +18955,261 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .       set-inline-specs
 .    \}
 .    ds revert-specs \f[]\s[0]\m[]
+.    rr #SKIP_INDENT_WARNING
 .    rr all
 .END
-\#
+.
 .ALIAS CAPTIONS CAPTION_LABEL_SPECS
 .ALIAS LABELS   CAPTION_LABEL_SPECS
 .ALIAS SOURCES  CAPTION_LABEL_SPECS
 \#
+\# LABELS and CAPTIONS (floats and [block]quotes)
+\# ----------------------------------------------
+\# *Arguments:
+\#   <text of label or caption> [ CAPTION <text of caption> ] \
+\#   [ TO_LIST FIGURES | EQUATIONS | TABLES ]
+\# *Function:
+\#   Add label/caption to float, quotes, and blockquotes
+\# *Notes:
+\#   Aliased as CAPTION.  If called as CAPTION, prints all
+\#   double-quoted text strings including ".br" or ".sp";
+\#   may come at top or bottom of labelled object, or both.
+\#   If called as LABEL, optional arg CAPTION attaches caption
+\#   text to the label; may only come at bottom of object and
+\#   can only take one double-quoted text string.
+\#
+\# These strings allow users to create labels of the form
+\# 'Fig. \*[chapter].\*[fig-label]', e.g. 'Fig. 1.1'
+\#
+.ds chapter   \\n[#CH_NUM]
+.ds fig-label \\n+[fig*label-num]
+.ds tbl-label \\n+[tbl*label-num]
+.ds eqn-label \\n+[eqn*label-num]
+\#
+\#
+.MAC LABEL END
+.    br
+.    if \\n[.ns] \{\
+.       vpt 0
+.       rs
+.       nop \&
+.       sp -1
+.       vpt
+.    \}
+.    if r chop-space .sp -1
+.    rr chop-space
+.    if \\n[#QUOTE] .nr q-float 1
+.    if '\\$0'CAPTION' \{\
+.       ds labelcap caption
+.       ds $FLOATING_CAPTION \\$*
+.    \}
+.    if '\\$0'LABEL' \{\
+.       ds labelcap label
+.       ds $FLOATING_LABEL \\$1
+.       shift
+.       nr loop-counter 0 1
+.       nr loop-count \\n[#NUM_ARGS]
+.       while \\n+[loop-counter]<=\\n[loop-count] \{\
+.          if '\\$1'CAPTION' \{\
+.             nr with-caption 1
+.             ds $FLOATING_CAPTION \\$2
+.             shift 2
+.          \}
+.          if '\\$1'SHORT_CAPTION' \{\
+.             ds $LIST_CAPTION \\$2
+.             shift 2
+.          \}
+.          if '\\$1'TO_LIST' \{\
+.             nr to-list 1
+.             if '\\$2'FIGURES'   .ds $LIST_OF FIGURES
+.             if '\\$2'EQUATIONS' .ds $LIST_OF EQUATIONS
+.             if '\\$2'TABLES'    .ds $LIST_OF TABLES
+.             shift 2
+.          \}
+.       \}
+.    \}
+.    if \\n[D-float] \
+.       if \\n[.d]>\\n[D-float] \
+.          sp \\n[.d]u-\\n[D-float]u
+.    rr has-\\*[labelcap]
+.    nr has-\\*[labelcap] 1
+.    rr @bottom
+.    if !\\n[.d]=0 .nr @bottom 1
+.    ds ev-current \\n[.ev]
+.    ev floating*labelcap
+.    evc \\*[ev-current]
+.    ps \\n[#DOC_PT_SIZE]u
+.    if \\n[floating*\\*[labelcap]-indent-l] \
+.       in \\n[floating*\\*[labelcap]-indent-l]u
+.    if \\n[floating*\\*[labelcap]-indent-r] \
+.       ll -\\n[floating*\\*[labelcap]-indent-r]u
+.    ds $QUAD_PREV \\*[$QUAD_VALUE]
+.    QUAD \\*[floating*\\*[labelcap]-quad]
+.\" 1/4 space before both captions and labels
+\!.  if \\\\n[nl]=\\\\n[#PAGE_TOP] .nr deferred-float 1
+.    if !\\n[deferred-float] \{\
+.       ie !\\n[@bottom] \{\
+.          ie '\\n[.z]'' \
+.            sp \\n[#DOC_LEAD]u/4u
+.          el \
+.            if '\\n[.z]'FLOAT*DIV' .sp \\n[#DOC_LEAD]u/4u
+.       \}
+.       el \{\
+.          sp \\n[#DOC_LEAD]u/4u
+.          rr @bottom
+.       \}
+.    \}
+\!.  if \\\\n[deferred-float] \{\
+.       if !\\n[#QUOTE] .sp -(\\n[#DOC_LEAD]u/4u)
+\!.  \}
+.    nr floating*\\*[labelcap]-lead-diff \\n[.v]
+.    vs \\n[.ps]u+\\n[floating*\\*[labelcap]-autolead]u
+.    nr floating*\\*[labelcap]-lead-diff \
+        \\n[floating*\\*[labelcap]-lead-diff]-\\n[.v]
+.    if !\\n[deferred-float] \
+.       RESTORE_SPACE
+.    ie '\\*[labelcap]'label' \{\
+.       if \\n[to-list] \{\
+.\" Strip prefix from label if list-type is being autolabelled
+.\" Becomes $LIST_LABEL
+.          if '\\*[$LIST_OF]'FIGURES' \
+.             if r fig*label-num .STRIP_PRFX_SFFX "\\*[$FLOATING_LABEL]"
+.          if '\\*[$LIST_OF]'TABLES' \
+.             if r tbl*label-num .STRIP_PRFX_SFFX "\\*[$FLOATING_LABEL]"
+.          if '\\*[$LIST_OF]'EQUATIONS' \
+.             if r eqn*label-num .STRIP_PRFX_SFFX "\\*[$FLOATING_LABEL]"
+.       \}
+.       ds $FLOATING_LABEL \
+\F[\\\\*[floating*label-family]]\
+\f[\\\\*[floating*label-font]]\
+\s[\\\\*[floating*label-size-change]]\
+\m[\\\\*[floating*label-color]]\
+\\*[$FLOATING_LABEL]
+.    \}
+.    el \{\
+.       if !\\n[deferred-float] \
+.          sp \\n[floating*caption-lead-diff]u
+.       if !'\\*[floating*caption-space]'' \
+.          sp \\*[floating*caption-space]
+.       while !'\\$1'' \{\
+.          nop \
+\F[\\*[floating*caption-family]]\
+\f[\\*[floating*caption-font]]\
+\s[\\*[floating*caption-size-change]]\
+\m[\\*[floating*caption-color]]\
+\\$1
+.          if \\n[.u]=1 .br
+.          shift
+.       \}
+.       if !'\\*[floating*caption-space]'' \
+.          sp -\\*[floating*caption-space]
+.    \}
+.    if \\n[with-caption] \{\
+.       nr width-label \w'\\*[$FLOATING_LABEL]'
+.       if !\\n[width-label]=0 \
+.         as $FLOATING_LABEL \0
+.       as $FLOATING_LABEL \
+\F[\\\\*[floating*caption-family]]\
+\f[\\\\*[floating*caption-font]]\
+\s[\\\\*[floating*caption-size-change]]\
+\m[\\\\*[floating*caption-color]]\
+\\*[$FLOATING_CAPTION]
+.       if '\\*[$LIST_CAPTION]'' \
+.          ds $LIST_CAPTION \\*[$FLOATING_CAPTION]
+.    \}
+.    if !'\\*[$FLOATING_LABEL]'' \{\
+.       sp \\n[floating*label-lead-diff]u
+.       if !'\\*[floating*label-space]'' \
+.          sp \\*[floating*label-space]
+.       nop \\*[$FLOATING_LABEL]
+.       if \\n[.u]=1 .br
+.       if !'\\*[floating*label-space]'' \
+.          sp -\\*[floating*label-space]
+.    \}
+.\" 1/4 space after captions and labels
+.    ie !\\n[@bottom] \
+.       sp \\n[#DOC_LEAD]u/4u
+.    el \{\
+.       if '\\n[.z]'FLOAT*DIV' \{\
+.          sp \\n[#DOC_LEAD]u/4u
+\!.        if \\\\n[deferred-float] \
+.             sp -(\\n[#DOC_LEAD]u/4u)
+.       \}
+.    \}
+\!.  rr deferred-float
+.    ll
+.    vs
+.    QUAD \\*[$QUAD_PREV]
+.    in
+.    ev
+.    if \\n[to-list] \{\
+.       nr loop-counter 0 1
+.       nr loop-count 2
+.       ds labelcap label
+.       while \\n+[loop-counter]<=\\n[loop-count] \{\
+.          ds \\*[labelcap]-family      \\*[floating*\\*[labelcap]-family]
+.          ds \\*[labelcap]-font        \\*[floating*\\*[labelcap]-font]
+.          ds \\*[labelcap]-size-change \\*[floating*\\*[labelcap]-size-change]
+.          ds \\*[labelcap]-color       \\*[floating*\\*[labelcap]-color]
+.          ie '\\*[$LISTS_FAM]'' \
+.             ds floating*\\*[labelcap]-family \\*[$DOC_FAM]
+.          el \
+.             ds floating*\\*[labelcap]-family \\*[$LISTS_FAM]
+.          if '\\*[$LISTS_FT]'' \
+.             ds floating*\\*[labelcap]-font R
+.          ds floating*\\*[labelcap]-size-change +0
+.          ds floating*\\*[labelcap]-color pdf:href.colour
+.          ds labelcap caption
+.       \}
+.       ie '\\*[$LIST_LABEL]'' .TO_\\*[$LIST_OF] "\\*[$FLOATING_LABEL]
+.       el .TO_\\*[$LIST_OF] "\\*[$LIST_LABEL]" "\\*[$LIST_CAPTION]
+.       rr to-list
+.       nr loop-counter 0 1
+.       nr loop-count 2
+.       ds labelcap label
+.       while \\n+[loop-counter]<=\\n[loop-count] \{\
+.          ds floating*\\*[labelcap]-family      \\*[\\*[labelcap]-family]
+.          ds floating*\\*[labelcap]-font        \\*[\\*[labelcap]-font]
+.          ds floating*\\*[labelcap]-size-change \\*[\\*[labelcap]-size-change]
+.          ds floating*\\*[labelcap]-color       \\*[\\*[labelcap]-color]
+.          ds labelcap caption
+.       \}
+.    \}
+.    rr with-caption
+.    rm $FLOATING_CAPTION
+.    rm $FLOATING_LABEL
+.    rm $LIST_LABEL
+.    rm $LIST_CAPTION
+.END
+.
+.ALIAS CAPTION LABEL
+.
+.MAC STRIP_PRFX_SFFX END
+.\" Strip suffix from label string
+.       ds suffix \\$1
+.       substring suffix -1
+.\" If suffix is '.' ',' ':' or ')', remove it.
+.       if '\\*[suffix]'.' .nr strip-suffix 1
+.       if '\\*[suffix]',' .nr strip-suffix 1
+.       if '\\*[suffix]':' .nr strip-suffix 1
+.       if '\\*[suffix]')' .nr strip-suffix 1
+.       if \\n[strip-suffix] \{\
+.          ds $LIST_LABEL \\$1
+.          substring $LIST_LABEL 0 -2
+.       \}
+.       rr strip-suffix
+.       if '\\*[$LIST_LABEL]'' .ds $LIST_LABEL \\$1
+.\" Remove prefix (e.g. "Fig. ") by looping through $LIST_LABEL
+.\" until a digit is encountered
+.       nr loop-counter 100 \" arbitrary
+.       nr loop-count 0 1
+.       while \\n+[loop-count]<=\\n[loop-counter] \{\
+.          substring $LIST_LABEL 1
+.          if \B'\\*[$LIST_LABEL]' .break
+.       \}
+.       substring $LIST_LABEL 1
+.END
+\#
 \# CAPTION_AFTER_LABEL
 \# -------------------
 \# *Arguments:
@@ -17433,9 +19224,9 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .    if !\\n[#MLA] \{\
 .       nr \\*[type]*caption-after-label 1
 .       if '\\$1'ALL' \{\
-.          if '\\$1'IMG' .nr pdf-img*caption-after-label 1
-.          if '\\$1'TBL' .nr tbl*caption-after-label 1
-.          if '\\$1'PIC' .nr pic*caption-after-label 1
+.          nr pdf-img*caption-after-label 1
+.          nr tbl*caption-after-label 1
+.          nr pic*caption-after-label 1
 .       \}
 .       if !'\\$2'' \{\
 .          ie !'\\$1'ALL' .rr \\*[type]*caption-after-label
@@ -17460,9 +19251,15 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 \#
 .MAC AUTOLABEL END
 .    if '\\$0'AUTOLABEL_EQUATIONS' .ds label-type eqn
-.    if '\\$0'AUTOLABEL_IMAGES'    .ds label-type pdf-img
-.    if '\\$0'AUTOLABEL_PIC'       .ds label-type pic
 .    if '\\$0'AUTOLABEL_TABLES'    .ds label-type tbl
+.    if '\\$0'AUTOLABEL_PIC' \{\
+.       ds label-type pic
+.       nr fig*autolabel 1
+.    \}
+.    if '\\$0'AUTOLABEL_IMAGES' \{\
+.        ds label-type pdf-img
+.        nr fig*autolabel 1
+.    \}
 .    if !'\\$1'' \{\
 .       ds \\*[label-type]-label-args \\$1
 .       substring \\*[label-type]-label-args -1 -3
@@ -17471,8 +19268,10 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .    if '\\*[\\*[label-type]-label-args]'TER' .nr \\*[label-type]-label-args 1
 .    if !\\n[\\*[label-type]*label-num] \
 .       nr \\*[label-type]*label-num 0 1
-.    if '\\*[label-type]'pdf-img' .nr fig*label-num 0 1
-.    if '\\*[label-type]'pic'     .nr fig*label-num 0 1
+.    if '\\*[label-type]'pdf-img' \
+.       if !\\n[fig*label-num] .nr fig*label-num 0 1
+.    if '\\*[label-type]'pic' \
+.       if !\\n[pic*label-num] .nr fig*label-num 0 1
 .    nr \\*[label-type]*autolabel 1
 .    nr loop-counter 0 1
 .    nr loop-count \\n[#NUM_ARGS]
@@ -17488,18 +19287,13 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .          shift 2
 .       \}
 .       if '\\$1'PREFIX_CHAPTER' \{\
+.          if \\n[fig*autolabel] .nr fig*label-with-chapter 1
 .          nr \\*[label-type]*label-with-chapter 1
-.          ie !'\\$2'' \{\
-.             ie \B'\\$2' .nr #CH_NUM \\$2
-.             el .autolabel@error
-.          \}
-.          el \{\
-.             ie \\n[#CHAPTER_CALLED] \
-.                ie \B'\\*[$CHAPTER]' .nr #CH_NUM \\*[$CHAPTER]
-.                el .autolabel@error \\$0
-.             el .autolabel@error \\$0
+.          shift 1
+.          if \B'\\$1' \{\
+.             nr #CH_NUM \\$1
+.             shift
 .          \}
-.          shift 2
 .       \}
 .    \}
 .    if '\\*[\\*[label-type]*label-prfx]'' \{\
@@ -17530,22 +19324,22 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .          if !\\n[\\*[label-type]*label-sffx-set] \
 .             ds \\*[label-type]*label-sffx .\"
 .    \}
-.    ie \\n[args]>0 \{\
+.    if \\n[\\*[label-type]-label-args]>0 \{\
 .       if \\n[\\*[label-type]*label-prfx-set]+\\n[\\*[label-type]*label-sffx-set]=1 \{\
 .          ie (\\n[\\*[label-type]*label-prfx-set]=1)&(\\n[\\*[label-type]*label-sffx-set]=0) \
 .             ds missing-arg SUFFIX
 .          el .ds missing-arg PREFIX
 .          tm1 "[mom]: You must supply a \\*[missing-arg] argument to \\$0.
 .          tm1 "       If you wish the \\*[missing-arg] to be blank, use \\*[missing-arg] "".
-.          ab Aborting '\\n[.F]' at \\$0, line \\n[.c].
-.       \}
-.       if !\\n[\\*[label-type]-label-args] \{\
-.          rr \\*[label-type]*autolabel
-.          rr \\*[label-type]*label-prfx-set
-.          rr \\*[label-type]*label-suffx-set
-.          rr \\*[label-type]-label-args
+.          ab   [mom]: Aborting '\\n[.F]' at \\$0, line \\n[.c].
 .       \}
 .    \}
+.    if \\n[#NUM_ARGS]=1 \{\
+.       rr fig*autolabel
+.       rr \\*[label-type]*autolabel
+.       rr \\*[label-type]*label-prfx-set
+.       rr \\*[label-type]*label-sffx-set
+.    \}
 .    rr \\*[label-type]-label-args
 .END
 \#
@@ -17554,11 +19348,24 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .ALIAS AUTOLABEL_PIC       AUTOLABEL
 .ALIAS AUTOLABEL_TABLES    AUTOLABEL
 \#
-.MAC autolabel@error END
-.    tm1 "[mom]: \\$1 cannot determine a chapter number.
-.    tm1 "       Enter the current chapter number as a digit after the
-.    tm1 "       PREFIX_CHAPTER argument at line \\n[.c].
-.    ab Aborting '\\n[.F]', line \\n[.c]. 
+\# SET AUTOLABEL NUMBER
+\# --------------------
+\# *Argument:
+\#   FIG | TBL | PIC | EQN <n>
+\# *Function:
+\#   Sets the autolabel number for the corresponding label type.
+\# *Notes:
+\#   Used to set autolabel number when manual labelling of floats
+\#   (in conjunction with TO_LIST) disrupts auto-incrementing.
+\#   
+.MAC SET_AUTOLABEL END
+.    rm labelnum-type
+.    if '\\$1'FIG' .ds labelnum-type fig
+.    if '\\$1'TBL' .ds labelnum-type tbl
+.    if '\\$1'PIC' .ds labelnum-type pic
+.    if '\\$1'EQN' .ds labelnum-type eqn
+.    nr labelnum \\$2-1
+.    nr \\*[labelnum-type]*label-num \\n[labelnum] 1
 .END
 \#
 \# MLA STYLE
@@ -17578,14 +19385,13 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .       nr pic*caption-after-label 1
 .       rr tbl*caption-after-label
 .    \}
-.    el \{\
+.    el \
 .       rr #MLA
-.    \}
 .END
 \#
 .MAC mla@error END
 .    tm1 "[mom]: MLA style enabled, but \\$1 has no corresponding \\$2.
-.    ab Aborting '\\$3' at \\$4, line \\$5.
+.    ab   [mom]: Aborting '\\$3' at \\$4, line \\$5.
 .END
 \#
 \# LISTS_OF
@@ -17595,7 +19401,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 \#   LIST_OF_FIGURES
 \#   LIST_OF_TABLES
 \# *Arguments:
-\#   TITLE_STRING <string> START_PAGENUM <pagenumber>
+\#   [ TITLE_STRING <string> ] [ START_PAGENUM <pagenumber> ]
 \# *Function:
 \#   Generates lists-of based on calling alias.
 \# *Notes:
@@ -17604,18 +19410,26 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 \#   relocated.  If called before, lists are output at end of file.
 \#
 .MAC LISTS_OF END
+.    EOL
 .    ds $LIST_TYPE \\$0
+.    nr #LISTS 1
 .    substring $LIST_TYPE -1 -4
 .    if '\\*[$LIST_TYPE]'URES' \{\
 .       ds $LIST_TYPE FIGURES
+.       ds list-type fig
+.       ds label-type fig
 .       ds \\*[$LIST_TYPE]_TITLE_STRING "List of Figures
 .    \}
 .    if '\\*[$LIST_TYPE]'BLES' \{\
 .       ds $LIST_TYPE TABLES
+.       ds list-type tbl
+.       ds label-type tbl
 .       ds \\*[$LIST_TYPE]_TITLE_STRING "List of Tables
 .    \}
 .    if '\\*[$LIST_TYPE]'IONS' \{\
 .       ds $LIST_TYPE EQUATIONS
+.       ds list-type eqn
+.       ds label-type eqn
 .       ds \\*[$LIST_TYPE]_TITLE_STRING "List of Equations
 .    \}
 .    nr #LIST_OF_\\*[$LIST_TYPE] 1
@@ -17631,6 +19445,10 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .          shift 2
 .       \}
 .    \}
+.    if dPDF.EXPORT \
+.       if \\n[#FLEX_ACTIVE] \
+.          if !\\n[#NO_FLEX] \
+.             tm .ds pre-list-\\n%@\\n[#COL_NUM] 1
 .    char \[leader] " .
 .    LEADER_CHARACTER \[leader]
 .    if \\n[#LINENUMBERS]=1 \{\
@@ -17643,10 +19461,11 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .    \}
 .    if \\n[#FOOTERS_ON]=1 \{\
 .       if !'\\*[$HDRFTR_CENTER_OLD]'' .ds $HDRFTR_CENTER \\*[$HDRFTR_CENTER_OLD]
-.       ie \\n[#LISTS_NO_PAGENUM]=1 .PAGINATION off
+.       ie \\n[#LISTS_NO_PAGENUM]=1 .PAGINATION OFF
 .       el .PAGINATE
 .    \}
-.    if \\n[#FOOTERS_WERE_ON] .FOOTERS OFF
+.    if \\n[#FOOTERS_WERE_ON] \
+.       if !\\n[#FINIS] .FOOTERS OFF
 .    rr #COLUMNS
 .    COLLATE
 .    if \\n[#PRINT_STYLE]=1 \{\
@@ -17668,6 +19487,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .    rr #COLLATED_DOC
 .    DOCTYPE DEFAULT
 .    DOCHEADER
+.    rr #DOCHEADER_ADVANCE
 .    TITLE "\\*[\\*[$LIST_TYPE]_TITLE_STRING]
 .    AUTHOR ""
 .    L_MARGIN \\n[#DOC_L_MARGIN]u
@@ -17683,19 +19503,18 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .       nr #LISTS_LEAD \\n[#TOC_LEAD]
 .    if \\n[#PRINT_STYLE]=2 \{\
 .       ie \\n[#LISTS_LEAD_ADJUST]=1 \{\
-.          vs \\n[#LISTS_LEAD]u
+.          nr #DOC_LEAD \\n[#LISTS_LEAD]
 .          DOC_LEAD_ADJUST
+.          TRAPS
 .       \}
 .       el \{\
-.          vs \\n[#LISTS_LEAD]u
+.          nr #DOC_LEAD \\n[#LISTS_LEAD]
 .          DOC_LEAD_ADJUST OFF
 .       \}
 .    \}
 .    ie !'\\*[$LISTS_TITLE_QUAD]'' \
 .       DOCHEADER_QUAD \\*[$LISTS_TITLE_QUAD]
 .    el .DOCHEADER_QUAD \\*[$TOC_HEADER_QUAD]
-.    if '\\*[$LISTS_TITLE_QUAD]'' \
-.       ds $LISTS_TITLE_QUAD \\*[$TOC_HEADER_QUAD]
 .    if !'\\*[$LISTS_TITLE_FAM]'' \
 .       TITLE_FAMILY \\*[$LISTS_TITLE_FAM]
 .    if !'\\*[$LISTS_TITLE_FT]'' \
@@ -17704,6 +19523,17 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .       TITLE_SIZE \\*[$LISTS_TITLE_SIZE]
 .    if !'\\*[$LISTS_TITLE_COLOR]'' \
 .       TITLE_COLOR \\*[$LISTS_TITLE_COLOR]
+.    if \\n[#LISTS_TITLE_CAPS] \
+.       TITLE_CAPS
+.    if \\n[#LISTS_TITLE_SMALLCAPS] \
+.       TITLE_SMALLCAPS
+.    if \\n[#LISTS_TITLE_UNDERSCORE] \{\
+.       TITLE_UNDERSCORE \
+\\*[DOUBLE] \
+\\*[$LISTS_OF_UL_WT] \
+\\*[$LISTS_OF_UL_GAP] \
+\\*[$LISTS_OF_RULE_GAP]
+.    \}
 .    if '\\*[$LISTS_PN_FAM]'' \
 .       ds $LISTS_PN_FAM \\*[$TOC_PN_FAM]
 .    if '\\*[$LISTS_PN_FT]'' \
@@ -17729,14 +19559,16 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .    if \\n[#LINENUMBERS]=2 .nr #LINENUMBERS 3
 .\" Get num placeholders for ch. num and label num.
 .    if \\n[\\*[list-type]*autolabel] \{\
-.       if \\n[#CH_NUM]<1000 .nr chapno-width 3
-.       if \\n[#CH_NUM]<100  .nr chapno-width 2
-.       if \\n[#CH_NUM]<10   .nr chapno-width 1
-.       if \\n[\\*[list-type]*label-width]<1000 .nr label-width 3
-.       if \\n[\\*[list-type]*label-width]<100  .nr label-width 2
-.       if \\n[\\*[list-type]*label-width]<10   .nr label-width 1
+.       if \\n[\\*[label-type]*label-with-chapter] \{\
+.          if \\n[#CH_NUM]<1000 .nr chapno-width 3
+.          if \\n[#CH_NUM]<100  .nr chapno-width 2
+.          if \\n[#CH_NUM]<10   .nr chapno-width 1
+.       \}
+.       if \\n[\\*[list-type]*label-num]<1000 .nr label-width 3
+.       if \\n[\\*[list-type]*label-num]<100  .nr label-width 2
+.       if \\n[\\*[list-type]*label-num]<10   .nr label-width 1
 .\" Calculate width of label-num tab
-.       nr label-width \w'\0'*(\\n[chapno-width]+\\n[label-width])+\w'.'
+.      nr label-width \\n[\\*[list-type]*label-width]
 .    \}
 .    if \\n[#SLANT_ON] .nop \\*[SLANTX]
 .    if \\n[#COLUMNS]=1 .nr #COLUMNS 0
@@ -17750,6 +19582,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .       nr #LINENUMBERS 1
 .       nn 1
 .    \}
+.    rr #LISTS
 .    pdfsync
 .END
 .\"
@@ -17760,20 +19593,25 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 \# LISTS-OF STYLE
 \# --------------
 \# *Arguments:
-\#   FAMILY        fam  /
-\#   FONT          sty /
-\#   PT_SIZE       size /
-\#   LEAD          leading [ADJUST] /
-\#   TITLE_FAMILY  fam /
-\#   TITLE_FONT    sty /
-\#   TITLE_SIZE    +|-size /
-\#   TITLE_QUAD    LEFT | CENTER | RIGHT /
-\#   TITLE_COLOR   color /
-\#   NO_PAGINATION /
-\#   PAGENUM_STYLE format /
-\#   PN_FAMILY     fam /
-\#   PN_FONT       sty /
-\#   PN_SIZE       +|-size /
+\#   FAMILY        fam \
+\#   FONT          sty \
+\#   PT_SIZE       size \
+\#   LEAD          leading [ADJUST] \
+\#   TITLE_FAMILY  fam \
+\#   TITLE_FONT    sty \
+\#   TITLE_SIZE    +|-size \
+\#   TITLE_QUAD    LEFT | CENTER | RIGHT \
+\#   TITLE_COLOR   color \
+\#   TITLE_CAPS    \
+\#   TITLE_NO_CAPS \
+\#   TITLE_SMALLCAPS \
+\#   TITLE_NO_SMALLCAPS \
+\#   TITLE_UNDERSCORE [ DOUBLE] <wt> <gap> (dbl-rule-gap) \
+\#   NO_PAGINATION \
+\#   PAGENUM_STYLE format \
+\#   PN_FAMILY     fam \
+\#   PN_FONT       sty \
+\#   PN_SIZE       +|-size \
 \#   PN_PADDING    n
 \# *Function:
 \#   Allows setting of all style parameters for lists-of.
@@ -17813,6 +19651,100 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .          ds $LISTS_TITLE_COLOR \\$2
 .          shift 2
 .       \}
+.       if '\\$1'TITLE_CAPS' \{\
+.          nr #LISTS_TITLE_CAPS 1
+.          shift 1
+.       \}
+.       if '\\$1'TITLE_NO_CAPS' \{\
+.          rr #LISTS_TITLE_CAPS
+.          shift 1
+.       \}
+.       if '\\$1'TITLE_SMALLCAPS' \{\
+.          nr #LISTS_TITLE_SMALLCAPS 1
+.          shift 1
+.       \}
+.       if '\\$1'TITLE_NO_SMALLCAPS' \{\
+.          rr #LISTS_TITLE_NO_SMALLCAPS
+.          shift 1
+.       \}
+.\" UNDERSCORE and UNDERLINE are identical, but we can't evaluate
+.\" the results of two string comparisons.
+.       if '\\$1'TITLE_UNDERSCORE' \{\
+.          nr #LISTS_TITLE_UNDERSCORE 1
+.          shift
+.          ie '\\$1'DOUBLE' \{\
+.             ds DOUBLE DOUBLE
+.             shift
+.             if \B'\\$1' \{\
+.                ds $LISTS_OF_UL_WT \\$1
+.                shift
+.             \}
+.             if \B'\\$1' \{\
+.                ds $LISTS_OF_UL_GAP \\$1
+.                shift
+.             \}
+.             if \B'\\$1' \{\
+.                ds $LISTS_OF_RULE_GAP \\$1
+.                shift
+.             \}
+.          \}
+.          el \{\
+.             if \B'\\$1' \{\
+.                ds $LISTS_OF_UL_WT \\$1
+.                shift
+.             \}
+.             if \B'\\$1' \{\
+.                ds $LISTS_OF_UL_GAP \\$1
+.                shift
+.             \}
+.          \}
+.       \}
+.       if '\\$1'TITLE_UNDERLINE' \{\
+.          nr #LISTS_TITLE_UNDERSCORE 1
+.          shift
+.          ie '\\$1'DOUBLE' \{\
+.             ds DOUBLE DOUBLE
+.             shift
+.             if \B'\\$1' \{\
+.                ds $LISTS_OF_UL_WT \\$1
+.                shift
+.             \}
+.             if \B'\\$1' \{\
+.                ds $LISTS_OF_UL_GAP \\$1
+.                shift
+.             \}
+.             if \B'\\$1' \{\
+.                ds $LISTS_OF_RULE_GAP \\$1
+.                shift
+.             \}
+.          \}
+.          el \{\
+.             if \B'\\$1' \{\
+.                ds $LISTS_OF_UL_WT \\$1
+.                shift
+.             \}
+.             if \B'\\$1' \{\
+.                ds $LISTS_OF_UL_GAP \\$1
+.                shift
+.             \}
+.          \}
+.       \}
+.       if '\\$1'TITLE_NO_UNDERSCORE' \{\
+.          rr #LISTS_TITLE_UNDERSCORE 1
+.          rm DOUBLE
+.          rm $LISTS_OF_UL_WT
+.          rm $LISTS_OF_UL_GAP
+.          rm $LISTS_OF_RULE_GAP
+.          shift
+.       \}
+.       if '\\$1'TITLE_NO_UNDERLINE' \{\
+.          rr #LISTS_TITLE_UNDERSCORE 1
+.          rm DOUBLE
+.          rm $LISTS_OF_UL_WT
+.          rm $LISTS_OF_UL_GAP
+.          rm $LISTS_OF_RULE_GAP
+.          shift
+.       \}
 .       if '\\$1'PT_SIZE' \{\
 .          nr #LISTS_PS (p;\\$2)
 .          shift 2
@@ -17868,32 +19800,40 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 \#
 .ds $LISTS_PN \\*[ST102]\F[\\*[$LISTS_PN_FAM]]\f[\\*[$LISTS_PN_FT]]\
 \s[\\n[#LISTS_PS]u]^\\*[ST102X]\\*[ST103]\s[\\\\*[$LISTS_PN_SIZE_CHANGE]]\
-\|\|\|\h'\w'0'u*\\\\n[#LISTS_PN_PADDING]u'\\*[ST103X]
+\h'.5m'\h'\w'0'u*\\\\n[#LISTS_PN_PADDING]u'\\*[ST103X]
 \#
 .ds $LISTS_PN_TYPEWRITE \\*[ST102]^\\*[ST102X]\\*[ST103]\|\
-\h'\w'0'u*\\\\n[#LISTS_PN_PADDING]u'\\*[ST103X]
+\h'\w'\0'u*\\\\n[#LISTS_PN_PADDING]u'\\*[ST103X]
 \#
 .MAC LISTS_COLLECTOR END
+.    nr #LISTS_ENTRY_PN \\n%+\\n[#PAGE_NUM_ADJ]
+.    if \\n[#KERN] .nr #RESTORE_KERN 1
+.    KERN OFF
 .    if '\\$0'TO_EQUATIONS' \{\
 .       ds list-type eqn
+.       ds label-type eqn
 .       da LIST_OF_EQN
-\!.       nr #LISTS_PN_PADDING \\\\n[#EQN_PN_PADDING]
-.       nr label-width \w'\\$1'
+\!.     nr #LISTS_PN_PADDING \\\\n[#EQN_PN_PADDING]
 .    \}
 .    if '\\$0'TO_FIGURES' \{\
 .       ds list-type fig
+.       ds label-type fig
+.       if (\\n[pdf-img*have-label]=1):(\\n[pdf-img*autolabel]=1):\
+(\\n[pic*autolabel]=1):(\\n[pic*have-label]=1) \{\
+.          nr \\*[label-type]*have-label 1
+.          if !'\\*[pdf-img*label]'' .rn pdf-img*label \\*[label-type]*label
+.          if !'\\*[pic*label]'' .rn pic*label \\*[label-type]*label
+.       \}
 .       da LIST_OF_FIG
-\!.       nr #LISTS_PN_PADDING \\\\n[#FIG_PN_PADDING]
-.       nr label-width \w'\\$1'
+\!.     nr #LISTS_PN_PADDING \\\\n[#FIG_PN_PADDING]
 .    \}
 .    if '\\$0'TO_TABLES' \{\
 .       ds list-type tbl
+.       ds label-type tbl
 .       da LIST_OF_TBL
-\!.       nr #LISTS_PN_PADDING \\\\n[#TBL_PN_PADDING]
-.       nr label-width \w'\\$1'
+\!.     nr #LISTS_PN_PADDING \\\\n[#TBL_PN_PADDING]
 .    \}
 .    br
-.    nr #LISTS_ENTRY_PN \\n%+\\n[#PAGE_NUM_ADJ]
 .    ie \\n[#PRINT_STYLE]=1 \{\
 \!.     fam \\*[$TYPEWRITER_FAM]
 \!.     ft  R
@@ -17908,9 +19848,23 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .    if \\n[#PRINT_STYLE]=2 .rm _TYPEWRITE
 \!.  PAD_MARKER ^
 \!.  vpt 0
-\!.  PAD \
-"\\*[ST100]\h'\\n[label-width]u'\\*[ST100X]\0\\*[ST101]\h'\w'\\$2'u'\\*[ST101X]\\\\*[$LISTS_PN\\*[_TYPEWRITE]]" \
-"\\*[PDFBOOKMARK.NAME]"
+.    ie !\\n[\\*[label-type]*autolabel] \{\
+.\" If there is a label...
+.       if !'\\*[\\*[label-type]*label]'' \
+\!.     PAD \
+"\\*[ST100]\h'\w'\\*[\\*[label-type]*label]'u'\\*[ST100X]\0\\*[ST101]\h'\w'\\$2'u'\\*[ST101X]\\\\*[$LISTS_PN\\*[_TYPEWRITE]]" \
+"\*[PDFBOOKMARK.NAME]"
+.\" If there is no label...
+.       if '\\*[\\*[label-type]*label]'' \
+\!.     PAD \
+"\\*[ST100]\\*[ST100X]\\*[ST101]\h'\w'\\$1'u'\0\\*[ST101X]\\\\*[$LISTS_PN\\*[_TYPEWRITE]]" \
+"\*[PDFBOOKMARK.NAME]"
+.    \}
+.\" If autolabelling...
+.    el \
+\!.     PAD \
+"\\*[ST100]\h'\\\\n[label-width]u'\\*[ST100X]\ \ \ \\*[ST101]\h'\w'\\$2'u'\\*[ST101X]\\\\*[$LISTS_PN\\*[_TYPEWRITE]]" \
+"\*[PDFBOOKMARK.NAME]"
 \!.  PAD_MARKER #
 \!.  EOL
 .    ie !\\n[\\*[label-type]*autolabel] \
@@ -17928,21 +19882,24 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 \!.  TAB 100
 \!.  PDF_LINK \\*[list-type]:\\n[lists*target] "\\$1"
 \!.  TN
+\!.  vpt 0
 \!.  PDF_LINK \\*[list-type]:\\n[lists*target] "\\$2"
 \!.  TN
-\!.  PRINT \\*[LEADER]
+\!.  vpt 0
+\!.  PRINT \fR\\*[LEADER]\f[]
 \!.  TN
 .    if \\n[#PRINT_STYLE]=2 \{\
 \!.     FAMILY  \\\\*[$LISTS_PN_FAM]
 \!.     FT      \\\\*[$LISTS_PN_FT]
-\!.     ps \\\\*[$LISTS_PN_SIZE_CHANGE]u
+\!.     ps \\\\*[$LISTS_PN_SIZE_CHANGE]
 .    \}
 \!.  PRINT \\n[#LISTS_ENTRY_PN]
 \!.  TQ
 \!.  vpt
 .    da
+.    if \\n[#RESTORE_KERN] .KERN
 .END
-\#
+.
 .ALIAS TO_EQUATIONS LISTS_COLLECTOR
 .ALIAS TO_FIGURES   LISTS_COLLECTOR
 .ALIAS TO_TABLES    LISTS_COLLECTOR
@@ -17957,26 +19914,34 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .ds T&
 \#
 .MAC TS END
-.    di NULL \" Set rule weight for boxed tables
-\D't 500'
-.    di
+.    if \\n[.t]<\\n[#DOC_LEAD] .nr begin-tbl 1
 .    br
-.    if !\\n[@TOP] \
-.       if \\n[.t]=1 .sp \\n[.t]u
+.    rr begin-tbl
+.    rm tbl*caption
+.    rm tbl*label
+.    rr tbl*have-caption
+.    rr tbl*have-label
 .    rr tbl*have-header
 .    rr float*tbl
+.    rr tbl*boxed
+.    nr ind-pre-tbl  \\n[.i]
+.    nr ll-pre-tbl   \\n[.l]
+.    nr lead-pre-tbl \\n[.v]
+.    nr tbl*needs 1
+.    nr doing-tbl 1
+.    if !'\\n[.z]'FLOAT*DIV' \{\
+.       if \\n[.u] .nr fill 1
+.       nf
+.    \}
 .    if '\\n[.z]'FLOAT*DIV' .nr float*tbl 1
 .    if !'\\n[.z]'FLOAT*DIV' \{\
 .       if \\n[.t]=1 \{\
 .          if !\\n[@TOP] \{\
-.             if \\n[#COL_NUM]=\\n[#NUM_COLS] \
-.                NEWPAGE
+.             ie \\n[#COLUMNS] .COL_NEXT internal
+.             el .NEWPAGE
 .          \}
 .       \}
 .    \}
-.    rr tbl*boxed
-.    rm tbl*label
-.    rm tbl*caption
 .    nr loop-count 0 1
 .    nr loop-counter \\n[#NUM_ARGS]
 .    while \\n+[loop-count]<=\\n[loop-counter] \{\
@@ -17990,6 +19955,18 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .          shift
 .       \}
 .       if '\\$1'CENTER' \{\
+.          if \\n[#INDENT_BOTH_ACTIVE] \{\
+.             IBX
+.             nr #RESTORE_INDENT_BOTH 1
+.          \}
+.          nr tbl*center 1
+.          shift
+.       \}
+.       if '\\$1'CENTRE' \{\
+.          if \\n[#INDENT_BOTH_ACTIVE] \{\
+.             IBX
+.             nr #RESTORE_INDENT_BOTH 1
+.          \}
 .          nr tbl*center 1
 .          shift
 .       \}
@@ -18001,6 +19978,10 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .          nr tbl*no-shim 1
 .          shift
 .       \}
+.       if '\\$1'NO_FLEX' \{\
+.          nr tbl*no-flex 1
+.          shift
+.       \}
 .       if '\\$1'ADJUST' \{\
 .          ds tbl*space-adj \\$2
 .          shift 2
@@ -18017,36 +19998,48 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .       if '\\$1'LABEL' \{\
 .          nr tbl*have-label 1
 .          ds tbl*label \\$2
-.          ds label-type tbl
+.          shift 2
+.       \}
+.       if '\\$1'TARGET' \{\
+.          ds target "\\$2
+.          PDF_TARGET "\\*[target]
 .          shift 2
 .       \}
 .    \}
+.    if (\\n[tbl*have-label]=1):(\\n[tbl*autolabel]=1) \
+.       ds label-type tbl
+.    if (\\n[tbl*have-caption]=1)&(\\n[tbl*have-header]=0) \
+.       tbl*caption-warning
 .    if \\n[tbl*boxed]=1 \{\
 .       if (\\n[tbl*have-label]=0)&(\\n[tbl*have-caption]=0)&\
 (\\n[tbl*autolabel]=0)&(\\n[tbl*have-source]=0) \
 .       nr tbl*plain-boxed 1
 .    \}
-.    if !\\n[tbl*needs] .nr tbl*needs 1
 .    if !\\n[tbl*have-header] .nr tbl*no-header 1
 .    ds tbl*label-sffx-tmp \\*[tbl*label-sffx]
-.    substring tbl*label-sffx-tmp -1
+.    if !'\\*[tbl*label-sffx-tmp]'' .substring tbl*label-sffx-tmp -1
 .    if '\\*[tbl*label-sffx-tmp]'.' \
 .       if (\\n[tbl*caption-after-label]=0):(\\n[#MLA]=1) .chop tbl*label-sffx
 .    if \\n[tbl*caption-after-label] \{\
 .       if !'\\*[tbl*label-sffx]'' \
 .          if '\\*[tbl*caption]'' .chop tbl*label-sffx
 .    \}
+.    if !'\\*[tbl*caption-short]'' .ds short -short
+.    if \\n[tbl*autolabel] \{\
+.       if \\n[tbl*label-with-chapter] \
+.          ds chapno \\n[#CH_NUM].
+.       ds tbl*label \
+\\*[tbl*label-prfx]\\*[chapno]\\n+[tbl*label-num]\\*[tbl*label-sffx]\"
+.         nr tbl*label-width \w'\\*[tbl*label]'
+.    \}
 .    ie \\n[@TOP] \{\
 .       if !'\\n[.z]'FLOAT*DIV' \{\
-.          vpt 0
-.          rr @TOP
-.          ch RR_@TOP
-.          rs
-.          nop \&
+.          RESTORE_SPACE
+.          nr @TOP 1
 .          if \\n[#COLUMNS] \
 .             if !'\\*[tbl*space-adj]'' \
 .                sp \\*[tbl*space-adj]-1v
-.          nr tbl*boxed 2
+.          if \\n[tbl*boxed] .nr tbl*boxed 2
 .          vpt
 .       \}
 .    \}
@@ -18055,20 +20048,25 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .    if !\\n[#MLA] \{\
 .      if (\\n[tbl*have-caption]=0):(\\n[tbl*caption-after-label]=1) \{\
 .         ie !'\\n[.z]'FLOAT*DIV' \{\
-.            sp .5v
-.            if \\n[tbl*boxed] .sp .25v
+.            ie !\\n[tbl*boxed]=2 \{\
+.               if \\n[tbl*have-header] .nr tbl*restore-header 1
+.               if !\\n[@TOP] .sp .5v
+.               if \\n[tbl*boxed] .sp .25v
+.               if \\n[tbl*restore-header]=1 .nr tbl*have-header 1
+.            \}
+.            el \{\
+.               if !\\n[tbl*boxed] .ns
+.               sp .25v
+.            \}
 .         \}
-.         el .sp 1n
+.         el .sp .5v
 .      \}
 .    \}
-.    if '\\n[.z]'FLOAT*DIV' \{\
+.    if \\n[nl]=\\n[#PAGE_TOP] .ns
+.    if '\\n[.z]'FLOAT*DIV' \
 .       if \\n[defer]>0 .sp .5v
-.    \}
-.    ds ev-current   \\n[.ev]
-.    nr ll-pre-tbl   \\n[.l]
-.    nr lead-pre-tbl \\n[.v]
-.    nr ind-pre-tbl  \\n[.i]
-.    ll \\n[.l]u-\\n[.i]u
+.    if \\n[@TOP] .rr @TOP
+.    ds ev-current \\n[.ev]
 .    if (\\n[nl]=\\n[#PAGE_TOP]):(\\n[nl]=\\n[dc]) \
 .       nr tbl*caption-lead-diff-adj 1
 .    if \\n[#MLA] \
@@ -18080,10 +20078,20 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .             sp 1n
 .    \}
 .    if \\n[tbl*have-header] \{\
+.       di tbl*header-div
 .       ev table-header
 .       evc \\*[ev-current]
-.       di tbl*header-div
-.       if !\\n[float-span] \!.in 0
+.       if !\\n[float-span] \{\
+.          ie '\\*[ev-current]'FLOAT' \{\
+.             ie !\\n[tbl*center] \
+.                in 0
+.             el \{\
+.                in 0
+\!.              in 0
+.             \}
+.          \}
+.          el \!.in 0
+.       \}
 .    \}
 .END
 \#
@@ -18093,50 +20101,80 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .       T#
 .       di
 .       ev
-.       PDF_TARGET tbl:\\n+[lists*target]
+.       if \\n[#PDF_BOOKMARKS] \{\
+.          ie !'\\n[.z]'' \{\
+.             if (\\n[float*img]=0)&(\\n[float*pic]=0)&(\\n[float*eqn]=0) \{\
+\!.              PDF_TARGET tbl:\\\\n+[lists*target]
+.                ie !'\\*[tbl*label]'' \
+\!.                 TO_TABLES "\\*[tbl*label]" "\\*[tbl*caption\\*[short]]"
+.                el \
+\!.                 TO_TABLES "\\*[tbl*caption\\*[short]]"
+.             \}
+.          \}
+.          el \{\
+.             if '\\n[.z]'' .PDF_TARGET tbl:\\n+[lists*target]
+.             ie !'\\*[tbl*label]'' \
+.                TO_TABLES "\\*[tbl*label]" "\\*[tbl*caption\\*[short]]"
+.             el \
+.                TO_TABLES "\\*[tbl*caption\\*[short]]"
+.          \}
+.       \}
+.       if \\n[#MLA] .if !\\n[tbl*have-caption] \
+.          mla@error label caption \\n[.F] \\$0 \\n[.c]
 .       if !'\\n[.z]'FLOAT*DIV' \{\
 .          ie !\\n[tbl*boxed] \{\
 .             nr th*needs (u;\\n[dn]+\\n[tbl*needs]v)
 .             if \\n[th*needs]>\\n[.t] \{\
-.                ne \\n[dn]u+\\n[tbl*needs]
+.                if dPDF.EXPORT \
+.                   if \\n[#FLEX_ACTIVE] \
+.                      if !\\n[#NO_FLEX] \
+.                         tm .ds pre-newpage-\\n% \\n%@\\n[#COL_NUM]
+.                ne \\n[dn]u+\\n[tbl*needs]v
 .                nr tbl@needs 1
 .             \}
 .          \}
 .          el \{\
-.             nr th*needs (u;\\n[dn]+2p+\\n[tbl*needs]v)
+.             nr th*needs (u;\\n[dn]+.3n+\\n[tbl*needs]v)
 .             if \\n[th*needs]>\\n[.t] \{\
-.                ne \\n[dn]u+2p+\\n[tbl*needs]
 .                if \\n[#COLUMNS] \
-.                   if !\\n[#COL_NUM]=\\n[#NUM_COLS] .nr tbl*no-top-hook 1
+.                   if !\\n[#COL_NUM]=\\n[#NUM_COLS] \
+.                      nr tbl*no-top-hook 1
+.                nr tbl*no-print-header 1
+.                if dPDF.EXPORT \
+.                   if \\n[#FLEX_ACTIVE] \
+.                      if !\\n[#NO_FLEX] \
+.                         tm .ds pre-newpage-\\n% \\n%@\\n[#COL_NUM]
+.                ne \\n[dn]u+\\n[tbl*needs]v
 .                nr tbl@needs 1
 .             \}
 .          \}
-.          if \\n[defer] .nr tbl*interrupted 1
 .       \}
 .       ie (\\n[dn]-\\n[.v])>\\n[.t] \{\
 .          if !\\n[@TOP] .@error ridiculously long table header
 .          if \\n[tbl@needs] \{\
 .             if \\n[tbl*boxed] \{\
-.                rs
-.                nop \&
+.                RESTORE_SPACE
 .                sp -1n
 .             \}
 .             rr tbl@needs
 .          \}
 .          if \\n[tbl*have-caption] .TBL*CAPTION
-.          tbl*print-header
 .       \}
 .       el \{\
 .          nr tbl*header-ht \\n[dn]
 .          if \\n[tbl@needs] \{\
 .             if \\n[tbl*boxed] \{\
-.                rs
-.                nop \&
-.                sp -1n
+.                RESTORE_SPACE
+.                if !\\n[#MLA] \{\
+.                   if (\\n[tbl*have-caption]=0):(\\n[tbl*caption-after-label]=1) \
+.                      nop \&
+.                   sp -1n
+.                \}
 .             \}
 .             rr tbl@needs
 .          \}
-.          if \\n[tbl*have-caption] .TBL*CAPTION
+.          if (\\n[tbl*have-caption]=1)&(\\n[tbl*caption-after-label]=0) \
+.             TBL*CAPTION
 .          vs
 .          tbl*print-header
 .       \}
@@ -18168,34 +20206,61 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .    nh
 .    nf
 .    rr tbl*no-header
-.    if !'\\n[.z]'FLOAT*DIV' \{\
-.       ie \\n[.t]<(\\n[.v]+(\\n[.v]/2u)) \{\
-.          rm tbl*header-div
-.          nr tbl*no-top-hook 1
-.          nr pgnum \\n%+\\n[#PAGE_NUM_ADJ]
-.          tm1 "[mom]: '\\n[.F]', macro \\$0, line \\n[.c]:
-.          tm1 "        Insufficient room for label, caption, and/or source after
-.          tm1 "        table on page \\n[pgnum].  Omitting, but continuing to process.
-.          NEWPAGE
-.          nr tbl*skip-source 1
-.          nr tbl*skip-label 1
-.          ch FN_OVERFLOW_TRAP -\\n[#FN_OVERFLOW_TRAP_POS]u
-.       \}
-.       el \{\
-.          ch FOOTER 0+\\n[pre-tbl-vfp]u
-.          ch FN_OVERFLOW_TRAP -\\n[#FN_OVERFLOW_TRAP_POS]u
-.       \}
-.    \}
 .    if !'\\$1'' \{\
 .       if '\\$1'SOURCE' \{\
-.          nr tbl*have-source 1
-.          shift
+.          ie !\\n[#MLA] \{\
+.             tm1 "[mom]: \\$1 argument to \\$0 at line \\n[.c], but MLA style not enabled.
+.             tm1 "       Ignoring \\$1, but continuing to process.
+.          \}
+.          el \{\
+.             nr tbl*have-source 1
+.             shift
+.          \}
+.       \}
+.    \}
+.    if (\\n[#MLA]=1)&(\\n[tbl*have-source]=0) .tbl*source-warning
+.    if !'\\n[.z]'FLOAT*DIV' \{\
+.       ch FOOTER \\n[#VARIABLE_FOOTER_POS]u
+.       ch FN_OVERFLOW_TRAP -\\n[#FN_OVERFLOW_TRAP_POS]u
+.       if \\n[.t]<(\\n[.v]/2u) \{\
+.          ie (\\n[tbl*have-label]=1):\
+(\\n[tbl*caption-after-label]=1):\
+(\\n[tbl*have-source]=1):\
+(\\n[tbl*autolabel]=1) \{\
+.             rm tbl*header-div
+.             nr tbl*no-top-hook 1
+.             ie \\n[tbl*autolabel] \
+.                if \\n[#MLA] \
+.                   if !\\n[tbl*have-source] .
+.             el \{\
+.                nr pgnum \\n%+\\n[#PAGE_NUM_ADJ]
+.                if \\n[#COLUMNS]=1 .ds col-num ", column \\n[#COL_NUM]
+.                tm1 "[mom]: '\\n[.F]', macro \\$0, line \\n[.c]:
+.                tm1 "        Insufficient room for label, caption, and/or source after
+.                tm1 "        table on page \\n[pgnum]\\*[col-num].  Omitting, but continuing to process table.
+.             \}
+.             nr tbl*skip-source 1
+.             nr tbl*skip-label 1
+.             rr tbl*have-caption
+.             ie \\n[#COLUMNS] \
+.                COL_NEXT internal
+.             el .NEWPAGE
+.          \}
+.          el \{\
+.\" Don't print tbl-header at top of next page or column if tbl
+.\" finishes without room for further input at bottom of page
+.             rm tbl*header-div
+.             nr tbl*no-print-header 1
+.             ie \\n[#COLUMNS] \
+.                COL_NEXT internal
+.             el .NEWPAGE
+.          \}
 .       \}
 .    \}
 .    if !\\n[#MLA] \{\
 .       if (\\n[tbl*have-label]=1):(\\n[tbl*autolabel]=1):(\\n[tbl*caption-after-label]=1) \{\
 .          ev label
-.          evc tbl*end
+.          if '\\*[ev-current]'FLOAT' .evc 0
 .          ie \\n[#PRINT_STYLE]=1 .TYPEWRITER
 .          el \{\
 .             tbl*label-style
@@ -18206,67 +20271,74 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .             ds chapno \\n[#CH_NUM].
 .          TBL*SET_LABEL_QUAD \\*[tbl*label-quad]
 .          di tbl*label-div
-\!.        in -\\n[ind-pre-tbl]u
 .          ie \\n[tbl*boxed] .sp \\n[#CAP_HEIGHT]u
 .          el .sp \\n[#DOC_LEAD]u/4u
 .          if (\\n[tbl*have-label]=1):(\\n[tbl*autolabel]=1) \{\
 .             if !'\\*[tbl*label-space]'' .sp \\*[tbl*label-space]
 .             ie \\n[tbl*autolabel] \{\
 .                ie !\\n[tbl*caption-after-label] .nop \
-\\*[tbl*label-prfx]\\*[chapno]\\n+[tbl*label-num]\\*[tbl*label-sffx]
+\\*[tbl*label-prfx]\\*[chapno]\\n[tbl*label-num]\\*[tbl*label-sffx]
 .                el \{\
-.                   nop \\*[tbl*label-prfx]\\*[chapno]\\n+[tbl*label-num]\\*[tbl*label-sffx]\|
+.                   nop \
+\\*[tbl*label-prfx]\\*[chapno]\\n+[tbl*label-num]\\*[tbl*label-sffx]\|
 .                   tbl*caption-style
 .                   vs \\n[.ps]u+\\n[tbl*caption-autolead]u
+.                   ds tbl*caption-old \\*[tbl*caption]
 .                   ds tbl*caption " \\*[tbl*caption]
 .                   nop \\*[tbl*caption]
+.                   ds tbl*caption \\*[tbl*caption-old]
 .                \}
 .             \}
 .             el \{\
-.                if !'\\*[tbl*label]'' \{\
-.                   ie !\\n[tbl*caption-after-label] .nop \\*[tbl*label]
-.                   el \{\
-.                      nop \\*[tbl*label]\ \|\c
-.                      tbl*caption-style
-.                      vs \\n[.ps]u+\\n[tbl*caption-autolead]u
-.                      ds tbl*caption " \\*[tbl*caption]
-.                      nop \\*[tbl*caption]
-.                   \}
+.                ie !\\n[tbl*caption-after-label] .nop \\*[tbl*label]
+.                el \{\
+.                   nop \\*[tbl*label]\ \|\c
+.                   tbl*caption-style
+.                   vs \\n[.ps]u+\\n[tbl*caption-autolead]u
+.                   ds tbl*caption " \\*[tbl*caption]
+.                   nop \\*[tbl*caption]
 .                \}
 .             \}
-.             if \\n[tbl*autolabel] \
-.                ds tbl*label \\*[chapno]\\n[tbl*label-num]
-.             br
 .          \}
+.          br
 .          di
+.          in 0
 .          ev
 .          nr pgnum \\n%+\\n[#PAGE_NUM_ADJ]
 .          ie !'\\n[.z]'FLOAT*DIV' \{\
-.             ie \\n[dn]>\\n[.t] \{\
+.             rr tbl*have-header
+.             rr tbl*have-caption
+.             ie (\\n[dn]-\\n[.v])>\\n[.t] \{\
+.                if \\n[#COLUMNS]=1 .ds col-num ", column \\n[#COL_NUM]
 .                tm1 "[mom]: '\\n[.F]', macro \\$0, line \\n[.c]:
 .                tm1 "        Insufficient room for label, caption, and/or source after
-.                tm1 "        table on page \\n[pgnum].  Omitting, but continuing to process.
+.                tm1 "        table on page \\n[pgnum]\\*[col-num].  Omitting, but continuing to process.
+.                ie \\n[#COLUMNS] \
+.                   COL_NEXT internal
+.                el .NEWPAGE
 .                if d tbl*header-div .rm tbl*header-div
 .                rr tbl*caption-top-lead-diff
-.                rr tbl*have-header
 .                nr tbl*skip-source 1
 .                nr tbl*skip-label 1
-.                NEWPAGE
 .             \}
 .             el .print-label
 .          \}
 .          el .print-label
 .       \}
 .    \}
-.    if !'\\*[tbl*caption-short]'' .ds short -short
-.    ie !'\\*[tbl*label]'' \
-.       TO_TABLES "\\*[tbl*label]" "\\*[tbl*caption\\*[short]]"
-.    el .TO_TABLES "\\*[tbl*caption]\\*[short]]"
+.    if \\n[tbl*autolabel] \{\
+.       ds tbl*label \\*[chapno]\\n[tbl*label-num]
+.       if dLABEL.REFS \
+.          tm .ds \\*[target] \\*[chapno]\\n[tbl*label-num]
+.       rm target
+.    \}
 .    if !\\n[tbl*skip-source] \{\
 .       if \\n[tbl*have-source] \{\
 .          ds tbl*source \\$1
 .          SIZESPECS
 .          ev source
+.          evc \\*[ev-current]
+.          nf
 .          nh
 .          ie \\n[#PRINT_STYLE]=1 \{\
 .             TYPEWRITER
@@ -18278,12 +20350,6 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .          \}
 .          di tbl*source-div
 .          TBL*SET_SOURCE_QUAD \\*[tbl*source-quad]
-.          if \\n[#MLA] \{\
-.             if '\\*[tbl*source-quad]'L' \{\
-.                in \\n[ind-pre-tbl]u+\\n[tmp-ind]u
-.                ti -\\n[tmp-ind]u
-.             \}
-.          \}
 .          if (\\n[tbl*have-label]=0)&(\\n[#MLA]=0) \
 .             if !\\n[tbl*autolabel] .sp \\n[#CAP_HEIGHT]u
 .          if \\n[#MLA] \
@@ -18291,7 +20357,6 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .          if !'\\*[tbl*source-space]'' .sp \\*[tbl*source-space]
 .          nop \\*[tbl*source]
 .          br
-.          if \\n[#MLA] .in
 .          di
 .          nf
 .          tbl*source-div
@@ -18305,169 +20370,240 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .    \}
 .    ev
 .    if !\\n[tbl*plain] \{\
-.       ie \\n[tbl*plain-boxed] .sp 1
-.       el .sp .5v
+.       ie \\n[tbl*plain-boxed] \{\
+.          ie \\n[#MLA] .if !\\n[tbl*have-source] .sp .5v
+.          el .sp .5v
+.       \}
+.       el \{\
+.          if !\\n[tbl*have-source] \{\
+.             if (\\n[tbl*have-label]=0)&\
+(\\n[tbl*caption-after-label]=0)&(\\n[tbl*autolabel]=0) \
+.                sp 1v
+.             if (\\n[tbl*have-label]=1):(\\n[tbl*autolabel]=1) \
+.                sp .5v
+.          \}
+.          if '\\n[.z]'FLOAT*DIV' .nr chop-space 1
+.       \}
 .    \}
 .    ll \\n[ll-pre-tbl]u
+.    if (\\n[nl]=\\n[dc]):(\\n[nl]=\\n[#PAGE_TOP]) .ns
 .    if !'\\*[tbl*space-adj]'' .sp -\\*[tbl*space-adj]u
-.    if !\\n[tbl*no-shim] .SHIM
+.    if \\n[#MLA] \
+.       sp .5v
+.    ie !\\n[tbl*no-shim] \{\
+.       ie !\\n[#NO_SHIM] \
+.          if !'\\n[.z]'FLOAT*DIV' .SHIM
+.       el \
+.          if !\\n[tbl*no-flex] \
+.             if !\\n[#NO_FLEX] \
+.                if !'\\n[.z]'FLOAT*DIV' .FLEX
+.    \}
+.    el \
+.       if !\\n[tbl*no-flex] \
+.          if !\\n[#NO_FLEX] \
+.             if !'\\n[.z]'FLOAT*DIV' .FLEX
 .    TBL*CLEANUP
 .END
 \#
 \# Utility macros for tbl
 \#
 .MAC TBL*CAPTION END
-.    if \\n[tbl*have-caption] \{\
-.       vs \\n[.ps]u+\\n[tbl*caption-autolead]u
-.       nr tbl*caption-lead-diff \\n[lead-pre-tbl]-\\n[.v]
-.       nr tbl*caption-top-lead-diff \\n[tbl*caption-lead-diff]
-.       ie !\\n[#MLA] \{\
-.          if !\\n[tbl*caption-after-label] \{\
-.             ie !'\\n[.z]'FLOAT*DIV' \{\
+.    ev caption
+.    evc \\*[ev-current]
+.    vs \\n[.ps]u+\\n[tbl*caption-autolead]u
+.    nr caption-lead \\n[.v]
+.    nr tbl*caption-lead-diff \\n[lead-pre-tbl]-\\n[.v]
+.    nr tbl*caption-top-lead-diff \\n[tbl*caption-lead-diff]
+.    ie !\\n[#MLA] \{\
+.       if \\n[tbl*have-caption] \{\
+.          ie !'\\n[.z]'FLOAT*DIV' \{\
+.             if !\\n[tbl*caption-after-label] \{\
 .                ie (\\n[nl]=\\n[#PAGE_TOP]):(\\n[nl]=\\n[dc]) \{\
+.                   RESTORE_SPACE
 .                   ie \\n[#COLUMNS] .sp |\\n[dc]u
 .                   el .sp |\\n[#T_MARGIN]u-\\n[#DOC_LEAD]u
 .                   sp \\n[tbl*caption-lead-diff]u
-.                \}
-.                el .sp .5v
+.                 \}
+.                 el \{\
+.                    if \\n[.ns] .if !(\\n[nl]=\\n[#PAGE_TOP]) .rs
+.                    sp \\n[#DOC_LEAD]u/2u
+.                 \}
 .             \}
-.             el .sp .5v
 .          \}
-.          ev caption
-.          evc \\*[ev-current]
 .          nh
 .       \}
-.       el \{\
-.          if !\\n[tbl*autolabel] \{\
-.             ie !\\n[tbl*have-label] \
-.                mla@error caption label \\n[.F] \\$0 \\n[.c]
-.             el .ev label
-.          \}
+.    \}
+.    el \{\
+.       if !\\n[tbl*autolabel] \{\
+.          ie !\\n[tbl*have-label] \
+.             mla@error caption label \\n[.F] \\$0 \\n[.c]
+.          el .ev label
 .       \}
-.       ie \\n[#PRINT_STYLE]=1 .nr tmp-ind 2m
-.       el .nr tmp-ind 1.25m
-.       ie \\n[#PRINT_STYLE]=1 .TYPEWRITER
-.       el \{\
-.          if !\\n[#MLA] \{\
-.             tbl*caption-style
-.             nr lead-current \\n[.v]
-.          \}
+.    \}
+.    ie \\n[#PRINT_STYLE]=1 .nr tmp-ind 2m
+.    el .nr tmp-ind 1.25m
+.    ie \\n[#PRINT_STYLE]=1 .TYPEWRITER
+.    el \{\
+.       if !\\n[#MLA] \{\
+.          tbl*caption-style
+.          nr lead-current \\n[.v]
 .       \}
-.       ie !\\n[#MLA] \{\
-.          ie !\\n[tbl*caption-after-label] \{\
-.             di tbl*caption-div
-\!.           in -\\n[ind-pre-tbl]u
-.             TBL*SET_CAPTION_QUAD \\*[tbl*caption-quad]
-.             nop \\*[tbl*caption]
-.             br
-.             di
-.             if !'\\n[.z]'FLOAT*DIV' \{\
-.                nr caption-needs 2
-.                if (\\n[dn]+(\\n[#DOC_LEAD]*(\\n[tbl*needs]*2)))>\\n[.t] \{\
-.                   nr pgnum \\n%+\\n[#PAGE_NUM_ADJ] 1
-.                   ie \\n[#COL_NUM]=\\n[#NUM_COLS] \{\
-.                      tm1 "[mom]: Table with caption at line \\n[.c] does not fit on page \\n[pgnum].
-.                      tm1 "       Shifting table to page \\n+[pgnum].
-.                      rr tbl*no-header
-.                      NEWPAGE
-.                   \}
-.                   el \{\
-.                      sp \\n[.t]u
-.                      sp |\\n[#PAGE_TOP]u+\\n[tbl*caption-lead-diff]u
-.                   \}
+.    \}
+.    ie !\\n[#MLA] \{\
+.       ie !\\n[tbl*caption-after-label] \{\
+.          di tbl*caption-div
+.          ie \\n[tbl*center] \!.in -\\n[ind-pre-tbl]u
+.          el \!.in 0
+.          TBL*SET_CAPTION_QUAD \\*[tbl*caption-quad]
+.          nop \\*[tbl*caption]
+.          br
+.          di
+.          evc 0
+.          if !'\\n[.z]'FLOAT*DIV' \{\
+.             ch FOOTER \\n[#VARIABLE_FOOTER_POS]u+\\n[#DOC_LEAD]u
+.             ch FN_OVERFLOW_TRAP -\\n[#FN_OVERFLOW_TRAP_POS]u+\\n[#DOC_LEAD]u
+.             nr caption-needs 2
+.             ie \\n[tbl*boxed] .nr tbl*lead \\n[.v]+3n
+.             el .nr tbl*lead \\n[.v]
+.             if \
+(\\n[dn]+(\\n[tbl*lead]*(\\n[tbl*needs]+1)))>=\\n[.t] \{\
+.                nr pgnum \\n%+\\n[#PAGE_NUM_ADJ]
+.                if \\n[#COLUMNS]=1 .ds col-num ", column \\n[#COL_NUM]
+.                tm1 \
+"[mom]: Table with caption at line \\n[.c] \
+does not fit on page \\n[pgnum]\\*[col-num].
+.                tm1 \
+"       Shifting table to next page or column.
+.                ie (\\n[#COLUMNS]=1)&(\\n[#COL_NUM]=\\n[#NUM_COLS]) \{\
+.                   rr tbl*no-header
+.                   NEWPAGE
 .                \}
-.             \}
-.             if \\n[.u] .nr fill 1
-.             nf
-.             if \\n[.ns] .RESTORE_SPACE
-.             tbl*caption-div
-.             if \\n[#PRINT_STYLE]=1 .sp .5v
-.             if !'\\*[tbl*caption-space]'' \
-.                sp \\*[tbl*caption-space]
-.             if \\n[tbl*caption-lead-diff-adj] \{\
-.                sp -\\n[tbl*caption-lead-diff]u
-.                rr tbl*label-lead-diff-adj
-.             \}
-.             if \\n[fill] .fi
-.             rr fill
-.          \}
-.          el \{\
-.             if (\\n[tbl*have-label]=0) \{\
-.                if !\\n[tbl*autolabel] \{\
-.                   tm1 "[mom]: CAPTION_AFTER_LABEL enabled, but no label given
-.                   tm1 "       for table at line \\n[.c].
-.                   tm1 "       Skipping caption but continuing to process.
+.                el \{\
+.                   nr tbl*no-top-hook -1
+.                   sp \\n[.t]u
+.                   ie \\n[#COLUMNS] \
+.                      sp |\\n[dc]u+\\n[tbl*caption-lead-diff]u
+.                   el .sp |\\n[#PAGE_TOP]u+\\n[tbl*caption-lead-diff]u
 .                \}
 .             \}
+.             ch FOOTER \\n[#VARIABLE_FOOTER_POS]u
+.             ch FN_OVERFLOW_TRAP -\\n[#FN_OVERFLOW_TRAP_POS]u
 .          \}
+.          if \\n[.u] .nr fill 1
+.          nf
+.          if \\n[.ns] .RESTORE_SPACE
+.          tbl*caption-div
+.          if \\n[#PRINT_STYLE]=1 .sp .5v
+.          if !'\\*[tbl*caption-space]'' \
+.             sp \\*[tbl*caption-space]
+.          if \\n[tbl*caption-lead-diff-adj] \{\
+.             sp -\\n[tbl*caption-lead-diff]u
+.             rr tbl*label-lead-diff-adj
+.          \}
+.          if \\n[fill] .fi
+.          rr fill
 .       \}
 .       el \{\
-.          if (\\n[tbl*have-label]=1):(\\n[tbl*autolabel]=1) \{\
-.             ie !\\n[tbl*have-caption] \
-.                mla@error label caption \\n[.F] \\$0 \\n[.c]
-.             el \{\
-.                ie !'\\n[.z]'FLOAT*DIV' \{\
-.                   ie (\\n[nl]=\\n[#PAGE_TOP]):(\\n[nl]=\\n[dc]) \{\
-.                      ie !\\n[#COLUMNS] .sp |\\n[#PAGE_TOP]u+\\n[tbl*caption-lead-diff]u
-.                      el .sp |\\n[dc]u+\\n[tbl*caption-lead-diff]u
-.                   \}
-.                   el .sp .5v
-.                \}
-.                el .sp .5v
-.             \}
-.             ev label
-.             evc \\*[ev-current]
-.             nh
-.             ie \\n[#PRINT_STYLE]=1 .TYPEWRITER
-.             el \{\
-.                tbl*label-style
-.                vs \\n[.ps]u+\\n[tbl*label-autolead]u
-.                nr tbl*label-lead-diff \\n[lead-pre-tbl]-\\n[.v]
-.             \}
-.             if \\n[tbl*label-with-chapter] \
-.                ds chapno \\n[#CH_NUM].
-.             TBL*SET_LABEL_QUAD \\*[tbl*label-quad]
-.             di tbl*mla-label-caption
-.             ie '\\*[tbl*label-quad]'L' \{\
-\!.              in -\\n[ind-pre-tbl]u
-\!.              in \\n[tmp-ind]u
-\!.              ti -\\n[tmp-ind]u
+.          if (\\n[tbl*have-label]=0) \{\
+.             if !\\n[tbl*autolabel] \{\
+.                tm1 "[mom]: CAPTION_AFTER_LABEL enabled, but no label given
+.                tm1 "       for table at line \\n[.c].
+.                tm1 "       Skipping caption but continuing to process.
 .             \}
-.             el \{\
-.                if \\n[tbl*label-quad-on-ll] \{\
-.                   if '\\n[tbl*label-quad]'L' \
-\!.                 in
+.          \}
+.       \}
+.    \}
+.    el \{\
+.       if (\\n[tbl*have-label]=1):(\\n[tbl*autolabel]=1) \{\
+.          ie !\\n[tbl*have-caption] \
+.             mla@error label caption \\n[.F] \\$0 \\n[.c]
+.          el \{\
+.             ie !'\\n[.z]'FLOAT*DIV' \{\
+.                ie (\\n[nl]=\\n[#PAGE_TOP]):(\\n[nl]=\\n[dc]) \{\
+.                   ie !\\n[#COLUMNS] \
+.                      sp |\\n[#PAGE_TOP]u+\\n[tbl*caption-lead-diff]u
+.                   el .sp |\\n[dc]u+\\n[tbl*caption-lead-diff]u
 .                \}
+.                el .sp .5v
 .             \}
-.             ie \\n[tbl*autolabel] \
-.                nop \
-\\*[tbl*label-prfx]\\*[chapno]\\n+[tbl*label-num]\\*[tbl*label-sffx]
-.             el .if !'\\*[tbl*label]'' .nop \\*[tbl*label]
-.             if \\n[tbl*autolabel] \
-.                ds tbl*label \\*[chapno]\\n[tbl*label-num]
-.             br
-.             di
+.             el .sp .5v
 .          \}
-.          da tbl*mla-label-caption
+.          ev label
+.          evc \\*[ev-current]
+.          nh
 .          ie \\n[#PRINT_STYLE]=1 .TYPEWRITER
-.          el .tbl*caption-style
-.          if '\\*[tbl*caption-quad]'L' \{\
-\!.           ti -\\n[tmp-ind]u
-\!.           fi
+.          el \{\
+.             tbl*label-style
+.             vs \\n[.ps]u+\\n[tbl*label-autolead]u
+.             nr tbl*label-lead-diff \\n[lead-pre-tbl]-\\n[.v]
 .          \}
-.          nop \\*[tbl*caption]
+.          if \\n[tbl*label-with-chapter] \
+.             ds chapno \\n[#CH_NUM].
+.          TBL*SET_LABEL_QUAD \\*[tbl*label-quad]
+.          di tbl*mla-label-caption
+\!.        in 0
+.          ie \\n[tbl*autolabel] \{\
+.             ds label \
+\\*[tbl*label-prfx]\\*[chapno]\\n[tbl*label-num]\\*[tbl*label-sffx]\"
+.             nop \\*[label]
+.             nr tbl*label-width \w'\\*[label]'
+.             rr label
+.          \}
+.          el \{\
+.             if !'\\*[tbl*label]'' \{\
+.                nop \\*[tbl*label]
+.                nr tbl*label-width \w'\\*[tbl*label]'
+.             \}
+.          \}
+.          if \\n[tbl*autolabel] \
+.             ds tbl*label \\*[chapno]\\n[tbl*label-num]
 .          br
-\!.        in
-.          da
+.          di
 .       \}
+.       da tbl*mla-label-caption
+.       ie \\n[#PRINT_STYLE]=1 .TYPEWRITER
+.       el .tbl*caption-style
+.       if '\\*[tbl*caption-quad]'L' \{\
+.           EOL
+.           ie \\n[float*tbl] \{\
+.              ie \\n[tbl*center] \
+.                 ll \\n[ll-pre-tbl]u-\\n[TW]u/2u+\\n[TW]u-\\n[tmp-ind]u
+.              el \
+.                 ll \\n[TW]u+\\n[.i]u-\\n[tmp-ind]u
+\!.            in \\n[tmp-ind]u
+.              ti -\\n[tmp-ind]u
+.           \}
+.           el \{\
+.              ie \\n[tbl*center] \{\
+.                 if '\\*[tbl*label-quad]'L' \{\
+.                    ll \\n[ll-pre-tbl]u-\\n[TW]u/2u+\\n[TW]u
+\!.                  in \\n[tmp-ind]u
+.                 \}
+.              \}
+.              el \
+.                 in \\n[tmp-ind]u+\\n[ind-pre-tbl]u
+.           \}
+.           ti -\\n[tmp-ind]u
+.       \}
+.       nop \\*[tbl*caption]
+.       br
+\!.     in
+.       da
 .       if !'\\n[.z]'FLOAT*DIV' \{\
+.          ch FOOTER \\n[#VARIABLE_FOOTER_POS]u+\\n[#DOC_LEAD]u
+.          ch FN_OVERFLOW_TRAP -\\n[#FN_OVERFLOW_TRAP_POS]u+\\n[#DOC_LEAD]u
 .          ie \\n[#MLA] .nr caption-needs 3
 .          el .nr caption-needs 2
-.          if (\\n[dn]+(\\n[#DOC_LEAD]*(\\n[tbl*needs]+\\n[caption-needs])))>\\n[.t] \{\
-.             nr pgnum \\n%+\\n[#PAGE_NUM_ADJ] 1
-.             ie \\n[#COL_NUM]=\\n[#NUM_COLS] \{\
-.                tm1 "[mom]: Table with caption at line \\n[.c] does not fit on page \\n[pgnum].
-.                tm1 "       Shifting table to page \\n+[pgnum].
+.          if \
+(\\n[dn]+(\\n[#DOC_LEAD]*\\n[tbl*needs])+(\\n[caption-needs]*\\n[caption-lead]))>\\n[.t] \{\
+.             nr pgnum \\n%+\\n[#PAGE_NUM_ADJ]
+.             if \\n[#COLUMNS] .ds col-num ", column \\n[#COL_NUM]
+.             tm1 \
+"[mom]: Table with caption at line \\n[.c] \
+does not fit on page \\n[pgnum]\\*[col-num].
+.             tm1 \
+"       Shifting table to next column or page.
+.             ie (\\n[#COLUMNS]=1)&(\\n[#COL_NUM]=\\n[#NUM_COLS]) \{\
 .                rr tbl*no-header
 .                if \\n[defer] .nr skip-th-warning 1
 .                NEWPAGE
@@ -18475,15 +20611,22 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .             el \{\
 .                nr tbl*no-top-hook 1
 .                sp \\n[.t]u
-.                if (\\n[tbl*caption-after-label]=1):(\\n[tbl*plain]) \
-.                   sp 1n-2p
+.                if (\\n[tbl*caption-after-label]=1):(\\n[tbl*plain]=1) \
+.                   sp 1n-.3n
 .             \}
 .          \}
+.          ch FOOTER \\n[#VARIABLE_FOOTER_POS]u
+.          ch FN_OVERFLOW_TRAP -\\n[#FN_OVERFLOW_TRAP_POS]u
 .       \}
 .       nf
 .       if (\\n[nl]=\\n[#PAGE_TOP]):(\\n[nl]=\\n[dc]) \
 .          nr tbl*label-lead-diff-adj 1
 .       ie (\\n[.t]>1)&(\\n[@TOP]=0) \{\
+.          if !\\n[#NO_FLEX] \{\
+.             NO_FLEX
+.             nr #RESTORE_FLEX 1
+.          \}
+.          if \\n[.ns] .rs
 .          sp \\n[tbl*label-lead-diff]u
 .       \}
 .       el \{\
@@ -18494,69 +20637,98 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .             el .sp .5v
 .       \}
 .       tbl*mla-label-caption
-.       ie \\n[#PRINT_STYLE]=1 .sp .5v
-.       el .sp .5n
-.       if \\n[tbl*label-lead-diff-adj] \{\
-.          sp -\\n[tbl*label-lead-diff]u
-.          rr tbl*label-lead-diff-adj
-.       \}
-.       br
-.       if !'\\*[tbl*caption-space]'' .sp \\*[tbl*caption-space]
 .    \}
-.    if !'\\n[.ev]'0' .ev
+.    ie \\n[#PRINT_STYLE]=1 .sp .5v
+.    el .sp .5n
+.    if \\n[tbl*label-lead-diff-adj] \{\
+.       sp -\\n[tbl*label-lead-diff]u
+.       rr tbl*label-lead-diff-adj
+.    \}
+.    br
+.    if !'\\*[tbl*caption-space]'' .sp \\*[tbl*caption-space]
+\!.  if \\\\n[float*tbl] .ev FLOAT
+.    ev \\*[ev-current]
 .END
 \#
 .MAC TBL*CLEANUP END
 .    if !'\\n[.z]'FLOAT*DIV' \{\
-.       rr tbl*center
 .       rm tbl*header-div
-.       rr tbl*caption-top-lead-diff
-.    \}
-.    rr tbl*have-header
-.    if !'\\n[.z]'FLOAT*DIV' \{\
-.       rr tbl*have-caption
-.       rr tbl*have-label
-.    \}
-.    rr tbl*label-warning
-.    rr tbl*no-shim
-.    rr tbl*skip-source
-.    if !'\\n[.z]'FLOAT*DIV' \{\
 .       rm short
 .       rm tbl*caption
 .       rm tbl*caption-short
 .       rm tbl*label
+.       rr tbl*center
+.       rr tbl*caption-top-lead-diff
+.       rr tbl*have-header
+.       rr tbl*no-print-header
+.       rr tbl*have-caption
+.       rr tbl*have-label
+.       rr tbl*plain-boxed
+.       rr tbl*boxed
 .    \}
+.    rr doing-tbl
 .    rm tbl*space-adj
+.    rr tbl*skip-label
+.    rr tbl*skip-source
+.    rr tbl*label-warning
+.    rr tbl*no-shim
+.    rr tbl*no-flex
+.    rr tbl*plain
+.    rr tbl*caption-top-lead-diff
 .    rnn tbl*have-label tbl@label
 .    rnn tbl*have-source tbl@source
-.    rr tbl*have-label
-.    rr tbl*plain
 .    if '\\*[tbl*label-sffx-tmp]'.' .ds tbl*label-sffx .
+.    if \\n[#RESTORE_INDENT_BOTH] \{\
+.       IB
+.       rr #RESTORE_INDENT_BOTH
+.    \}
+.    if \\n[#RESTORE_INDENT_LEFT] \{\
+.       IL
+.       rr #RESTORE_INDENT_LEFT
+.    \}
+.    if \\n[#RESTORE_FLEX] \{\
+.       NO_FLEX off
+.       rr #RESTORE_FLEX
+.    \}
 .END
 \#
 .MAC print-label END
 .    if \\n[.u] .nr fill 1
 .    nf
-.    if !\\n[tbl*skip-label] \{\
+.    if \\n[tbl*center] \{\
+.       if '\\n[.z]'' \{\
+.          ll \\n[.l]u-\\n[TW]u/2u+\\n[TW]u
+.          if \\n[ind-pre-tbl] \
+.             in \\n[ind-pre-tbl]u-(\\n[ind-pre-tbl]u/2u)
+.       \}
+.    \}
+.    if !\\n[tbl*skip-label] \
 .       tbl*label-div
+.    if \\n[tbl*center] \{\
+.       if '\\n[.z]'' \{\
+.          ll
+.          in 0
+.       \}
 .    \}
 .    if \\n[fill] .fi
 .    rr fill
 .END
 \#
 .MAC tbl@top-hook END
-.    if \\n[tbl*have-header] \{\
-.       nf
-.       rr @TOP
-.       ch RR_@TOP
-.       ev top-hook
-.       evc 0
-.       rs
-.       nop \&
-.       ie !\\n[tbl*boxed] .sp -1
-.       el .sp -1n
-.       tbl*print-header
-.       ev
+.    if (\\n[tbl*have-header:1]=1):(\\n[tbl*have-header]=1) \{\
+.       if !r tbl*no-print-header \{\
+.          nf
+.          rr @TOP
+.          ch RR_@TOP
+.          ev top-hook
+.          evc 0
+.          rs
+.          nop \&
+.          ie !\\n[tbl*boxed] .sp -1
+.          el .sp -1n
+.          tbl*print-header
+.          ev
+.       \}
 .    \}
 .END
 \#
@@ -18566,22 +20738,22 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .       nr fill 1
 .    \}
 .    if \\n[#COL_NUM]>1 \
-.       sp 2p
-.    ie d tbl*header-div:\\n[loop-count] \
-.       tbl*header-div:\\n[loop-count]
+.       if !\\n[tbl*have-caption] \
+.          if (\\n[@TOP]=1):(\\n[nl]=\\n[dc]) \
+.             sp .3n
+.    if \\n[tbl*center] \!.in \\n[ind-pre-tbl]u/2u
+.    ie d tbl*header-div:span .tbl*header-div:span
 .    el .tbl*header-div
 .    if '\\n[.z]'FLOAT*DIV' \
 .       if \\n[tbl*center] .ce 1000
 .    mk #T
 .    if !'\\n[.z]'FLOAT*DIV' \{\
-.       nr pre-tbl-vfp 0+\\n[#VARIABLE_FOOTER_POS]
 .       ch FOOTER \\n[#VARIABLE_FOOTER_POS]u+\\n[#DOC_LEAD]u
 .       ch FN_OVERFLOW_TRAP -\\n[#FN_OVERFLOW_TRAP_POS]u+\\n[#DOC_LEAD]u
 .    \}
 .END
 \#
 .MAC tbl@bottom-hook END
-.       if \\n[.ns] .rs
 .       rr #DIVERTED
 .       rr @TOP
 .       ch RR_@TOP
@@ -18590,7 +20762,19 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .MAC tbl*float-warning END
 .    tm1 "[mom]: Table in FLOAT, output page \\n[#PAGENUMBER], exceeds page vertical limits.
 .    tm1 "       Multipage boxed tables cannot be contained within floats.
-.    ab Aborting '\\n[.F]'.
+.    ab   [mom]: Aborting '\\n[.F]', approx. line \\n[.c].
+.END
+\#
+.MAC tbl*caption-warning END
+.    tm1 "[mom]: TS at line \\n[.c] has CAPTION but no H argument.
+.    tm1 "       CAPTION requires H with a corresponding .TH.
+.    ab   [mom]: Aborting '\\n[.F]'.
+.END
+\#
+.MAC tbl*source-warning END
+.    tm1 "[mom]: MLA enabled, but TE at line \\n[.c] has no SOURCE.
+.    tm1 "       MLA style for tables requires that a source be cited.
+.    ab   [mom]: Aborting '\\n[.F]'.
 .END
 \#
 .MAC ds@need END \" Move vertically until there is enough space for \$1
@@ -18625,6 +20809,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .       if !\\n[pgnum] .nr pgnum \\n%+\\n[#PAGE_NUM_ADJ]
 .       br
 .       if \\n[.u] .nr fill 1
+.       na
 .       rr float*eqn
 .       if '\\n[.z]'FLOAT*DIV' .nr float*eqn 1
 .       nr eqn*restore-adj \\n[.j]
@@ -18656,13 +20841,8 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .                ds eqn*space-adj \\$2
 .                shift 2
 .             \}
-.             if '\\$1'NO_SHIM' \{\
-.                nr eqn*no-shim 1
-.                shift 1
-.             \}
 .             if '\\$1'LABEL' \{\
 .                ds eqn*label \\$2
-.                ds label-type eqn
 .                shift 2
 .             \}
 .             if '\\$1'SHIFT_LABEL' \{\
@@ -18677,8 +20857,23 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .                ds eqn*caption-short \\$2
 .                shift 2
 .             \}
+.             if '\\$1'TARGET' \{\
+.                ds target "\\$2
+.                PDF_TARGET "\\*[target]
+.                shift 2
+.             \}
+.             if '\\$1'NO_SHIM' \{\
+.                nr @no-shim 1
+.                shift 1
+.             \}
+.             if '\\$1'NO_FLEX' \{\
+.                nr eqn*no-flex
+.                shift
+.             \}
 .          \}
 .       \}
+.       if (\\n[eqn*have-label]=1):(\\n[eqn*autolabel]=1) \
+.          ds label-type eqn
 .       if '\\*[eqn*shift-label]'' .ds eqn*shift-label 0
 .       if !\\n[eqn*type] \{\
 .          nr eqn*center 1
@@ -18691,6 +20886,35 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .             rr default-left
 .          \}
 .       \}
+.       if !\\n[continued] \{\
+.          if !'\\*[eqn*caption-short]'' .ds short -short
+.          if \\n[eqn*autolabel] \{\
+.             if \\n[eqn*label-with-chapter] \
+.                ds chapno \\n[#CH_NUM].
+.             ds eqn*label \\*[chapno]\\n+[eqn*label-num]
+.             nr eqn*label-width \w'\\*[eqn*label]'
+.             if dLABEL.REFS \
+.                tm .ds \\*[target] \\*[chapno]\\n[eqn*label-num]
+.             rm target
+.             nr eqn*label-num -1
+.          \}
+.          ie !'\\n[.z]'' \{\
+.             if (\\n[float*img]=0)&(\\n[float*pic]=0)&(\\n[float*tbl]=0) \{\
+\!.              PDF_TARGET eqn:\\\\n+[lists*target]
+.                ie !'\\*[eqn*label]'' \
+\!.                 TO_EQUATIONS "\\*[eqn*label]" "\\*[eqn*caption\\*[short]]"
+.                el \
+\!.                 TO_EQUATIONS "\\*[eqn*caption\\*[short]]"
+.             \}
+.          \}
+.          el \{\
+.             PDF_TARGET eqn:\\n+[lists*target]
+.             ie !'\\*[eqn*label]'' \
+.                TO_EQUATIONS "\\*[eqn*label]" "\\*[eqn*caption\\*[short]]"
+.             el \
+.                TO_EQUATIONS "\\*[eqn*caption\\*[short]]"
+.          \}
+.       \}
 .       if \\n[continued] \{\
 .          rm continued
 .          rr continued
@@ -18710,7 +20934,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .END
 \#
 .MAC EN END
-.    if !'\\n(.z'eqn*div' \{\
+.    if !'\\n[.z]'eqn*div' \{\
 .       @error mismatched EN
 .       return
 .    \}
@@ -18733,14 +20957,11 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .       el \{\
 .          tm1 "[mom]: Invalid argument \\$1 to \\$0.
 .          tm1 "       Must be 'CONTINUED', 'CONT', or '...'
-.          ab Aborting '\\n[.F]' at line \\n[.c].
+.          ab   [mom]: Aborting '\\n[.F]' at line \\n[.c].
 .       \}
 .    \}
 .    if \\n[dl]:\\n[eqn*have-label] \{\
 .       ds eqn*tabs \\n[.tabs]
-.       if \\n[eqn*label-with-chapter] \
-.          ds chapno \\n[#CH_NUM].
-.       nf
 .       ie \\n[dl] \{\
 .          if !'\\n[.z]'FLOAT*DIV' \{\
 .             ie \\n[eqn*have-caption] .ne \\n[dn]u-\\n[.V]
@@ -18897,17 +21118,23 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .       ta \\*[eqn*tabs]
 .\" if continuing (ie is a multi-line equation), don't space and SHIM
 .       if !\\n[continued] \{\
-.          sp \\*[DD]
+.          br
+.          if !\\n[@TOP] \
+.             if !\\n[.t]<(\\*[DD]+1) \
+.                sp \\*[DD]
 .          if !'\\*[eqn*space-adj]'' .sp -\\*[eqn*space-adj]u
-.          if !'\\n[.z]'FLOAT*DIV' \{\
-.             if !\\n[eqn*no-shim] .SHIM
+.          ie !\\n[eqn*no-shim] \{\
+.             ie !\\n[#NO_SHIM] \
+.                if !'\\n[.z]'FLOAT*DIV' .SHIM
+.             el \
+.                if !\\n[eqn*no-flex] \
+.                   if !\\n[#NO_FLEX] \
+.                      if !'\\n[.z]'FLOAT*DIV' .FLEX
 .          \}
-.          if !'\\*[eqn*caption-short]'' .ds short -short
-.          if \\n[eqn*autolabel] \
-.             ds eqn*label \\*[chapno]\\n[eqn*label-num]
-.          ie !'\\*[eqn*label]'' \
-.             TO_EQUATIONS "\\*[eqn*label]" "\\*[eqn*caption\\*[short]]"
-.          el .TO_EQUATIONS "\\*[eqn*caption\\*[short]]"
+.          el \
+.             if !\\n[eqn*no-flex] \
+.                if !\\n[#NO_FLEX] \
+.                   if !'\\n[.z]'FLOAT*DIV' .FLEX
 .          rm DD
 .          rm eqn*caption
 .          rm eqn*caption-short
@@ -18919,6 +21146,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .       rr eqn*center
 .       rr eqn@center*cont
 .       rr eqn*have-label
+.       rr eqn*have-caption
 .       rr eqn*ind
 .       rr eqn@ind*cont
 .       rr eqn*left
@@ -18926,25 +21154,25 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .       if !\\n[eqn-cutaround] .rm eqn*space-adj
 .    \}
 .    nr eqn*copy-in 1
-.    if \\n[fill] .fi
 .    ad \\n[eqn*restore-adj]
+.    if \\n[fill] .fi
 .    rr fill
 .END
 \#
 .MAC ADD_CAPTION END
 .    ie \\n[.t]<\\n[.v] \{\
 .       if !'\\n[.z]'FLOAT*DIV' \{\
-.          if \\n[#COL_NUM]=\\n[#NUM_COLS] \{\
-.             tm1 "[mom]: '\\n[.F]', macro EQ, line \\n[eqn-linenum]: Insufficient room for
-.             tm1 "        equation caption on page \\n[pgnum].
-.             tm1 "        Skipping caption, but continuing to process.
-.             if !\\n[@TOP] \{\
-.                if \\n[#COL_NUM]=\\n[#NUM_COLS] \
-.                   NEWPAGE
-.             \}
-.             rr eqn-linenum
-.             rr pgnum
+.          if \\n[#COLUMNS]=1 .ds col-num ", column \\n[#COL_NUM]
+.          tm1 "[mom]: '\\n[.F]', macro EQ, line \\n[eqn-linenum]:
+.          tm1 "       Insufficient room for equation caption on page \\n[pgnum]\\*[col-num].
+.          tm1 "       Skipping caption but continuing to process.
+.          if !\\n[@TOP] \{\
+.             ie \\n[#COLUMNS] \
+.                COL_NEXT internal
+.             el .NEWPAGE
 .          \}
+.          rr eqn-linenum
+.          rr pgnum
 .       \}
 .    \}
 .    el \{\
@@ -19048,12 +21276,13 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 \# Main macros
 \#
 .MAC PS END
+.    if !\\n[#PP] .nop
 .    br
 .    have-adjust \\$@ \" Adjusting is handled by FLOAT
-.    ds ev-current \\n[.ev]
-.    rr float*pic
 .    if !'\\n[.z]'FLOAT*DIV' .FLOAT ADJUST \\*[pic*space-adj]
 .    PDF_TARGET fig:\\n+[lists*target]
+.    ds ev-current \\n[.ev]
+.    rr float*pic
 .    nr float*pic 1
 .    nr ind-pre-pic  \\n[.i]
 .    nr ll-pre-pic   \\n[.l]
@@ -19070,19 +21299,15 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .          el .ds pic*scale-width \\$2
 .       \}
 .    \}
-. \" This is a bit confusing. pic is decorated with 2 args (width
-. \" and height), which are read during pre-processing but have to be
-. \" ignored when parsing args during main processing.  We shift pic's
-. \" args out of the way, then pop them off the arg stack because
-. \" they're not needed during macro processing.
+.\" This is a bit confusing. pic is decorated with 2 args (width
+.\" and height), which are read during pre-processing but have to be
+.\" ignored when parsing args during main processing.  We shift pic's
+.\" args out of the way, then pop them off the arg stack because
+.\" they're not needed during macro processing.
 .    while \B'\\$1' .shift
 .    nr loop-counter \\n[#NUM_ARGS]
 .    nr loop-count 0 1
 .    while \\n+[loop-count]<=\\n[loop-counter] \{\
-.       if '\\$1'NO_SHIM' \{\
-.          nr float*no-shim 1
-.          shift 1
-.       \}
 .       if '\\$1'LEFT' \{\
 .          nr pic*left 1
 .          shift 1
@@ -19099,12 +21324,31 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .       if '\\$1'LABEL' \{\
 .          nr pic*have-label 1
 .          ds pic*label \\$2
-.          ds label-type pic
 .          shift 2
 .       \}
+.       if '\\$1'TARGET' \{\
+.          ds target "\\$2
+.          PDF_TARGET "\\*[target]
+.          shift 2
+.       \}
+.       if '\\$1'NO_SHIM' \{\
+.          nr @no-shim 1
+.          shift 1
+.       \}
+.       if '\\$1'NO_FLEX' \{\
+.          nr @no-flex 1
+.          shift 1
+.       \}
+.       if '\\$1'GRAP' \{\
+.          nr grap 1
+.          shift 1
+.       \}
 .    \}
+.    if (\\n[pic*have-label]=1):(\\n[pic*autolabel]=1) \
+.       ds label-type pic
 .    ds pic*label-sffx-tmp \\*[pic*label-sffx]
-.    substring pic*label-sffx-tmp -1
+.    if !'\\*[pic*label-sffx-tmp]'' \
+.       substring pic*label-sffx-tmp -1
 .    if '\\*[pic*label-sffx-tmp]'.' \
 .       if \\n[pic*caption-after-label]=0 .chop pic*label-sffx
 .    if \\n[#MLA] \{\
@@ -19131,7 +21375,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .    el .vs \\n[.ps]u
 .    nr pic@text-lead \\n[.v]
 .    nr pic@text-size \\n[.ps]
-.    if !'\\*[pic*text-color]'' .gcolor \\*[pic*text-color]
+.    if !'\\*[pic*text-color]'' .COLOR \\*[pic*text-color]
 .    if \\n[@TOP] \{\
 .       RESTORE_SPACE
 .       nr pic*top-lead-adj 1
@@ -19142,7 +21386,20 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .          sp \\n[pic*top-lead-diff]u
 .          rr pic*top-lead-adj
 .       \}
-.       el .if (\\n[pic*caption-after-label]=0):(\\n[#MLA]=0) .sp \\n[lead-pre-pic]u/2u
+.       el .if (\\n[pic*caption-after-label]=0):(\\n[#MLA]=0) \
+.          sp \\n[lead-pre-pic]u/2u
+.    \}
+.    if \\n[pic*label-with-chapter] \
+.       ds chapno \\n[#CH_NUM].
+.    if \\n[pic*autolabel] \
+.       ds pic*label \\*[pic*label-prfx]\\*[chapno]\\n+[fig*label-num]\\*[pic*label-sffx]
+.    nr fig*label-width \w'\\*[pic*label]'
+.    if !'\\*[pic*caption-short]'' .ds short -short
+.    if \\n[#PDF_BOOKMARKS] \{\
+.       ie !'\\*[pic*label]'' \
+\!.        TO_FIGURES "\\*[pic*label]" "\\*[pic*caption\\*[short]]"
+.       el \
+\!.        TO_FIGURES "\\*[pic*caption\\*[short]]"
 .    \}
 .    di pic*div
 .END
@@ -19150,18 +21407,22 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .MAC PE END
 .    di
 .    nr pic*div-width \\n[dl]
-.    if \\n[@TOP] \{\
+.    if \\n[@TOP] \
 .       RESTORE_SPACE
-.    \}
-.    sp \\n[lead-pre-pic]u/2u
+.    if !\\n[nl]=\\n[#PAGE_TOP] .sp \\n[lead-pre-pic]u/2u
 .    if (\\n[pic*have-caption]=1)&(\\n[pic*caption-after-label]=0) \{\
-.       sp .5v
 .       ev caption
 .       evc \\*[ev-current]
 .       nh
 .       ie \\n[#PRINT_STYLE]=1 .TYPEWRITER
 .       el \{\
+.          if \\n[.u] \{\
+.             nr fill 1
+.             nf
+.          \}
 .          pic*caption-style
+.          if \\n[fill] .fi
+.          rr fill
 .          nr lead-current \\n[.v]
 .          vs \\n[.ps]u+\\n[pic*caption-autolead]u
 .          nr pic*caption-lead-diff \\n[lead-current]-\\n[.v]
@@ -19177,11 +21438,13 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .       if !'\\*[pic*caption-space]'' \
 .          sp \\*[pic*caption-space]
 .       br
+.       if \\n[grap] \!.sp -2v
 .       ev
 .    \}
-.    if !\\n[pic*left] .in \\n[ll-pre-pic]u-\\n[pic*div-width]u/2u
+.    if !\\n[pic*left] \!.in \\n[ll-pre-pic]u-\\n[pic*div-width]u/2u
+.    if (\\n[grap]=1)&(\\n[pic*caption-after-label]=1) \!.sp -2
 .    pic*div
-.    sp
+.    br
 .    if (\\n[pic*have-label]=1):(\\n[pic*autolabel]=1):(\\n[pic*caption-after-label]=1) \{\
 .       nr lead-pre-label \\n[.v]
 .       ev label
@@ -19194,19 +21457,23 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .          in \\n[ind-pre-pic]u
 .          sp \\n[lead-current]u-\\n[.v]u
 .       \}
-.       if \\n[pic*label-with-chapter] \
-.          ds chapno \\n[#CH_NUM].
 .       PIC*SET_LABEL_QUAD \\*[pic*label-quad]
 \!.     in -\\n[ind-pre-pic]u
 .       sp \\n[lead-pre-label]u-\\n[.v]u
 .       if !'\\*[pic*label-space]'' .sp \\*[pic*label-space]
 .       if \\n[#PRINT_STYLE]=1 .sp .5v
+.       if \\n[#PRINT_STYLE]=2 .sp .25v
 .       ie \\n[pic*autolabel] \
-.         nop \
-\\*[pic*label-prfx]\\*[chapno]\\n+[fig*label-num]\\*[pic*label-sffx]\|
-.       el .if !'\\*[pic*label]'' .nop \\*[pic*label]
-.       if \\n[pic*autolabel] \
-.          ds pic*label \\*[chapno]\\n[fig*label-num]
+.          nop \\*[pic*label-prfx]\\*[chapno]\\n[fig*label-num]\\*[pic*label-sffx]\|
+.       el \
+.          if !'\\*[pic*label]'' .nop \\*[pic*label]
+.       if dLABEL.REFS \{\
+.          if \\n[pic*autolabel] \
+.             tm .ds \\*[target] \\*[chapno]\\n[fig*label-num]
+.          if \\n[pic*have-label] \
+.             tm .ds \\*[target] \\*[pic*label]
+.       \}
+.       rm target
 .       fam
 .       ft
 .       ps
@@ -19224,17 +21491,13 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .    sp .5v
 .    FLOAT off
 .    in \\n[ind-pre-pic]u
-.    if !'\\*[pic*caption-short]'' .ds short -short
-.    ie !'\\*[pic*label]'' \
-.       TO_FIGURES "\\*[pic*label]" "\\*[pic*caption\\*[short]]"
-.    el .TO_FIGURES "\\*[pic*caption\\*[short]]"
 .    rm pic*caption
-.    rm pic*label
+.    if !\\n[defer] .rm pic*label
 .    rm pic*left
 .    rm short
 .    if !\\n[cutaround] .rm pic*space-adj
 .    if !\\n[defer] .rr pic*have-caption
-.    rr pic*have-label
+.    rr grap
 .    rr float*pic
 .    if '\\*[pic*label-sffx-tmp]'.' .ds pic*label-sffx .
 .END
@@ -19316,7 +21579,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .    tm1 "[mom]: \\$1 has been removed from mom.  See the mom documentation 'refer.html'
 .    tm1 "       for instructions on parenthetical insertions of references into text.
 .    ie '\\$1'REF_STYLE' .tm1 "       Continuing to process '\\n[.F]' from line \\n[.c].
-.    el .ab Aborting '\\n[.F]' at \\$1, line \\n[.c].
+.    el .ab   [mom]: Aborting '\\n[.F]' at \\$1, line \\n[.c].
 .END
 \#
 .MAC REF_BRACKETS_START END
@@ -19363,6 +21626,8 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .    if '\\$1'BIBLIO'   .ds $REF_BIB_INDENT \\$2
 .END
 \#
+.ALIAS REF_INDENT INDENT_REFS
+\#
 \# Hyphenation of references
 \# -------------------------
 \# *Argument:
@@ -19372,9 +21637,8 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 \#
 .MAC HYPHENATE_REFS END
 .    ie '\\$1'' .nr #REF_HY 1
-.    el \{\
+.    el \
 .       if r #REF_HY .rr #REF_HY
-.    \}
 .END
 \#
 \# The remainder of the definitions in this section are modified
@@ -19464,7 +21728,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .\}
 .ie d ref*spec!\\n[ref*type] .ref*build \\*[ref*spec!\\n[ref*type]]
 .el \{\
-.   @error unknown reference type `\\n[ref*type]'
+.   @error unknown reference type '\\n[ref*type]'
 .   ref*build \\*[ref*spec!0]
 .\}
 .if !\\n[.hy]=0 \{\
@@ -19577,11 +21841,10 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .de ref*add-A
 .ds eval*[A \\*([A
 .substring eval*[A -1
-.if '\\*[eval*[A]'.' \{\
+.if '\\*[eval*[A]'.' \
 .   if !'\\*[$REF_STYLE]'NOTE' .chop [A
-.\}
 .\" Per MLA, NOTE should not use idem, therefore if %i contains other than
-.\" idem (eg. ed., trans.), transpose it to after author's name
+.\" idem (e.g., ed., trans.), transpose it to after author's name
 .ie '\\*[$REF_STYLE]'NOTE' \{\
 .   ie !'\\*[idem]'' .ref*field A "" "" ", \\*[idem]"
 .   el .ref*field A
@@ -19626,7 +21889,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .\}
 .ref*field m ,
 ..
-\# %p Post-author string (eg. Preface, Foreword, etc)
+\# %p Post-author string (e.g., Preface, Foreword, etc)
 .de ref*add-p
 .\" Convert first letter to uppercase, per MLA, if BIBLIO
 .if '\\*[$REF_STYLE]'BIBLIO' \{\
@@ -19659,9 +21922,8 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 ..
 \# %T Title of a chapter or article
 .de ref*add-T2
-.ie '\\*[$REF_STYLE]'NOTE' \{\
+.ie '\\*[$REF_STYLE]'NOTE' \
 .   ref*field T , \[lq] "" \[rq]
-.\}
 .el \{\
 .   ie '\\*([A'' \{\
 .      ref*field T . \[lq] "" \[rq]
@@ -19744,7 +22006,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .while !'\\*[eval*[E]',' \{\
 .   ds eval*[E \\*([E
 .   substring eval*[E \\n+[position] \\n[position]
-.   if \\n+[counter]>30 .break \" 30 is abitrary
+.   if \\n+[counter]>30 .break \" 30 is arbitrary
 .\}
 .\" Check for " and"
 .if '\\*[eval*[E]',' \{\
@@ -19821,9 +22083,8 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 ..
 \# %V Volume (of a journal, or series of books); for journals, %N may be preferable
 .de ref*add-V
-.if \\n[ref*type]=1 \{\
+.if \\n[ref*type]=1 \
 .   ref*field V
-.\}
 .if \\n[ref*type]=2 \{\
 .   ie '\\*[$REF_STYLE]'NOTE' .ref*field V , "vol. "
 .   el \{\
@@ -19843,9 +22104,8 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 ..
 \# %S Series (books or journals)
 .de ref*add-S
-.if \\n[ref*type]=1 \{\
+.if \\n[ref*type]=1 \
 .   ref*field S
-.\}
 .if \\n[ref*type]=2 \{\
 .   ie '\\*[$REF_STYLE]'NOTE' \{\
 .      ie \\n([T .ref*field S
@@ -19875,9 +22135,8 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .      ref*field C
 .      rr [d
 .   \}
-.   el \{\
+.   el \
 .      ref*field C "" \*[FU 2](
-.   \}
 .   if \\n([T .nr ref*suppress-period \\n([T
 .\}
 .el \{\
@@ -19911,9 +22170,8 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .   ie '\\*[$REF_STYLE]'NOTE' .ref*field D ,
 .   el .ref*field D . " "
 .\}
-.if \\n[ref*type]=1 \{\
+.if \\n[ref*type]=1 \
 .   ref*field D "" "(" ")"
-.\}
 .if \\n[ref*type]=2 \{\
 .   ie '\\*[$REF_STYLE]'NOTE' .ref*field D , "" )
 .   el .ref*field D ,
@@ -19929,9 +22187,8 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .         substring eval*[D 0 -4
 .         ie '\\*[eval*[D]'1' .ds kern \*[BU3]
 .         el .ds kern \*[BU2]
-.         ie \\n[#PRINT_STYLE]=2 \{\
+.         ie \\n[#PRINT_STYLE]=2 \
 .           if '\\*[$REF_STYLE]'NOTE' .ref*field D "" (\\*[kern] )
-.         \}
 .         el .ref*field D
 .      \}
 .      rm eval*[D
@@ -19965,7 +22222,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .ie '\\*[$REF_STYLE]'NOTE' ref*field G ,
 .el .ref*field G . " "
 ..
-\# %O Other (info that goes after %T [or %B] but is hard to categorize; eg a dissertation)
+\# %O Other (info that goes after %T [or %B] but is hard to categorize; e.g., a dissertation)
 .de ref*add-O
 .ds eval*[O \\*([O
 .substring eval*[O -1
@@ -19974,9 +22231,8 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .substring initial*cap 0 0
 .ds [O*string \\*([O
 .substring [O*string 1
-.if '\\*[$REF_STYLE]'BIBLIO' \{\
+.if '\\*[$REF_STYLE]'BIBLIO' \
 .   ds [O \E*[UC]\\*[initial*cap]\E*[LC]\\*[[O*string]
-.\}
 .ie '\\*[$REF_STYLE]'NOTE' .ref*field O ,
 .el \{\
 .   if \\n([O=1 .chop [O
@@ -20011,7 +22267,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 \#
 \# Book reprints
 \# -------------
-\# %d date of publication (the orignal date of publication)
+\# %d date of publication (the original date of publication)
 .de ref*add-d
 .ie '\\*[$REF_STYLE]'NOTE' \{\
 .   ref*field d "" ( ;
@@ -20158,13 +22414,12 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .       tm1 "[mom]: 1.x-style \\$0 detected, but you are using v2.x.
 .       tm1 "       v2.x requires flags before arguments to \\$0.
 .       tm1 "       Please read docelement.html#mn-init and update your file.
-.       ab Aborting '\\n[.F]' at \\$0, line \\n[.c].
+.       ab   [mom]: Aborting '\\n[.F]' at \\$0, line \\n[.c].
 .    \}
 .    nr #ARGS  0 1
 .    nr #COUNT 9
-.    while \\n+[#ARGS]<=\\n[#COUNT] \{\
+.    while \\n+[#ARGS]<=\\n[#COUNT] \
 .      ds $MN-arg\\n[#ARGS] @
-.    \}
 .    nr #FLAG 0 1
 .    nr #COUNT \\n[#NUM_ARGS]
 .    while \\n+[#FLAG]<=\\n[#COUNT] \{\
@@ -20251,9 +22506,9 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 \#        color hyphenation-flags
 \#
 \# Initialize margin notes.  Empty arguments (denoted with "") set
-\# default values.  If the first argument is the string `ragged',
+\# default values.  If the first argument is the string 'ragged',
 \# left and right margin notes are printed ragged-right.  If it is
-\# `symmetric', left margin notes are printed ragged-left and right
+\# 'symmetric', left margin notes are printed ragged-left and right
 \# margin notes ragged-right.  If omitted, margin notes are left
 \# and right adjusted.
 \#
@@ -20292,18 +22547,16 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .    nr MN-right-width (n;\\$2)
 .    nr MN-right-start (\\n[.o] + \\n[.l] + \\n[MN-sep])
 .    if \\n[#COLUMNS]=1 \{\
-.      if !\\n[#NUM_COLS]=1 \{\
+.      if !\\n[#NUM_COLS]=1 \
 .        nr MN-right-start (\\n[#COL_2_L_MARGIN] + \\n[#COL_L_LENGTH] + \\n[MN-sep])
-.      \}
 .    \}
 .  \}
 .  el \{\
 .    nr MN-right-width \\n[MN-left-width]
 .    nr MN-right-start (\\n[.o] + \\n[.l] + \\n[MN-sep])
 .    if \\n[#COLUMNS]=1 \{\
-.      if !\\n[#NUM_COLS]=1 \{\
+.      if !\\n[#NUM_COLS]=1 \
 .        nr MN-right-start (\\n[#COL_2_L_MARGIN] + \\n[#COL_L_LENGTH] + \\n[MN-sep])
-.      \}
 .    \}
 .  \}
 .  ie \A'\\$4' \{\
@@ -20371,18 +22624,18 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 \#   MN
 \#
 \# With a parameter, start a margin note, otherwise end a margin note.
-\# If the parameter is the string `left', define a left margin note,
+\# If the parameter is the string 'left', define a left margin note,
 \# otherwise define a right margin note.
 \#
 .de MN
-.ds MN-dir \\$1
-.if !'\\$1'LEFT' \{\
-.  if !'\\$1'RIGHT' \{\
-.    MN_QUIT
-.    return
-.  \}
-.\}
-.if \\n[#COLUMNS]=1 \{\
+. ds MN-dir \\$1
+. if !'\\$1'LEFT' \{\
+.   if !'\\$1'RIGHT' \{\
+.     MN_QUIT
+.     return
+.   \}
+. \}
+. if \\n[#COLUMNS]=1 \{\
 .  if \\n[#NUM_COLS]>2 \{\
 .    tm [mom]: Macro MN: More than two columns.  Ignoring margin notes.
 .    return
@@ -20391,10 +22644,10 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .    ie \\n[#COL_NUM]=1 .ds MN-dir LEFT
 .    el .ds MN-dir RIGHT
 .  \}
-.\}
+. \}
 .  if !\\n[#MNinit]=1 \{\
-.    tm [mom]: Macro MN: You must set parameters with MN_INIT before using MN.
-.    ab Aborting '\\n[.F]' at MN, line \\n[.c].
+.    tm1 "[mom]: Macro MN: You must set parameters with MN_INIT before using MN.
+.    ab   [mom]: Aborting '\\n[.F]' at MN, line \\n[.c].
 .  \}
 .  ie !'\\$1'' \{\
 .    if \\n[MN-active] \{\
@@ -20444,120 +22697,85 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
 .  ch FOOTER \\n[#VARIABLE_FOOTER_POS]u
 ..
 \#
-\# MNbottom-left
-\# -------------
-\# The "left" half of Werner's original MNbottom.
-\#
-.de MNbottom-left
-.  nr MN-curr 0
-.  nr MN-last-pos 0
-.  nr MN-lead-adj \\n[#DOC_LEAD]-\\n[MN-spacing]
-.  vpt 0
-.  mk MN-curr-pos
-.  if \\n[MN-active] \{\
-.    di
-.    tm [mom]: Macro MN: Margin note finished by new page.  Ignored.
-.  \}
-.  po \\n[MN-left-start]u
-.  ev MNbottom-left-env
-.  nr #P \\n%+\\n[#PAGE_NUM_ADJ]
-.  while (\\n[MN-curr] < \\n[MN-left]) \{\
-.    nr MN-curr +1
-.    ie (\\n[MN-last-pos] < \\n[MN-mk-l-\\n[MN-curr]]) \
-.      sp |\\n[MN-mk-l-\\n[MN-curr]]u+\\n[MN-lead-adj]u
-.    el \{\
-.      nr MN-shifted 1
-.      sp 1v
-.      SHIM
-.      if \\n[#SHIM]>\\n[MN-spacing] .sp -(1v+\\n[MN-lead-adj]u)
-.      tm \
-[mom]: Macro MN: Warning: Left margin note #\\n[MN-curr] on page \\n[#P] shifted down.
-.    \}
-.\" If last margin note doesn't fit
-.    if ( (\\n[nl]+\\n[MN-div-l-\\n[MN-curr]-depth]) > (\\n[.p]+\\n[#VARIABLE_FOOTER_POS]-1) ) \{\
-.      if \\n[MN-shifted]=1 \{\
-.        sp -(1v+\\n[#SHIM]u)
-.        rm MN-div-l-\\n[MN-curr]
-.        tm1 "[mom]: No room to start left margin note #\\n[MN-curr] on page \\n[#P].
-.        tm1 "       Ignoring margin note.
-.        rr MN-shifted
-.      \}
-.      nr #no-repeat-MN-left 1
-.      nr #OVERFLOW_LEFT 1
-.      ie \\n[#FN_COUNT]=0 \{\
-.        ch FOOTER \\n[.p]u
-.        wh \\n[#VARIABLE_FOOTER_POS]u+\\n[MN-lead-adj]u+1u MN_OVERFLOW_TRAP
-.      \}
-.      el \
-.        wh \\n[.p]u+\\n[#VARIABLE_FOOTER_POS]u-1u MN_OVERFLOW_TRAP
-.      vpt 1
-.    \}
-.    nf
-.    MN-div-l-\\n[MN-curr]
-.    fi
-.    br
-.    nr MN-last-pos \\n[nl]
-.  \}
-.  ev
-.  po
-.  if !\\n[#no-repeat-MN-left]=1 \
-.     if \\n[MN-right]=0 .vpt 1
-..
-\#
-\# MNbottom-right
-\# --------------
-\# The "right" half of Werner's original MNbottom.
+\# MNbottom
+\# --------
+\# Executed in FOOTER.
 \#
-.de MNbottom-right
+.de MNbottom
+.   if '\\$0'MNbottom-left' \{\
+.      ds MN-pos left
+.      ds l-r l
+.      ds Left-Right Left
+.   \}
+.   if '\\$0'MNbottom-right' \{\
+.      ds MN-pos right
+.      ds l-r r
+.      ds Left-Right Right
+.   \}
 .   nr MN-curr 0
 .   nr MN-last-pos 0
 .   nr MN-lead-adj \\n[#DOC_LEAD]-\\n[MN-spacing]
 .   vpt 0
-.   po \\n[MN-right-start]u
-.   ev MNbottom-right-env
+.   if \\n[MN-active] \{\
+.     di
+.     tm [mom]: Macro MN: Margin note finished by new page.  Ignored.
+.   \}
+.   if \\n[#RECTO_VERSO] \{\
+.      if e \{\
+.         if '\\*[MN-pos]'right' \
+.            nr MN-\\*[MN-pos]-start (\\n[.o]+\\n[.l]+\\n[MN-sep])
+.         if '\\*[MN-pos]'left' \
+.            nr MN-\\*[MN-pos]-start (\\n[.o]-\\n[MN-sep]-\\n[MN-left-width])
+.      \}
+.   \}
+.   po \\n[MN-\\*[MN-pos]-start]u
+.   ev MNbottom-\\*[MN-pos]-env
 .   nr #P \\n%+\\n[#PAGE_NUM_ADJ]
-.   while (\\n[MN-curr] < \\n[MN-right]) \{\
+.   while (\\n[MN-curr] < \\n[MN-\\*[MN-pos]]) \{\
 .      nr MN-curr +1
-.      ie (\\n[MN-last-pos] < \\n[MN-mk-r-\\n[MN-curr]]) \
-.         sp |\\n[MN-mk-r-\\n[MN-curr]]u+\\n[MN-lead-adj]u
+.      ie (\\n[MN-last-pos] < \\n[MN-mk-\\*[l-r]-\\n[MN-curr]]) \
+.         sp |\\n[MN-mk-\\*[l-r]-\\n[MN-curr]]u+\\n[MN-lead-adj]u
 .      el \{\
 .         nr MN-shifted 1
 .         sp 1v
 .         SHIM
 .         if \\n[#SHIM]>\\n[MN-spacing] .sp -(1v+\\n[MN-lead-adj]u)
-.         tm [mom]: \
-Macro MN: Warning: Right margin note #\\n[MN-curr] on page \\n[#P] shifted down.
+.         tm [mom]: Macro MN: Warning: \\*[Left-Right] margin note #\\n[MN-curr] on page \\n[#P] shifted down.
 .      \}
 .\" If last margin note doesn't fit
-.      if ( (\\n[nl]+\\n[MN-div-r-\\n[MN-curr]-depth]) > (\\n[.p]+\\n[#VARIABLE_FOOTER_POS]-1) ) \{\
+.      if ( (\\n[nl]+\\n[MN-div-\\*[l-r]-\\n[MN-curr]-depth]) > (\\n[.p]+\\n[#VARIABLE_FOOTER_POS]-1) ) \{\
 .         if \\n[MN-shifted]=1 \{\
 .            sp -(1v+\\n[#SHIM]u)
-.            rm MN-div-r-\\n[MN-curr]
-.            tm1 \
-[mom]: No room to start right margin note #\\n[MN-curr] on page \\n[#P] on page \\n[#P].
-.            tm1 "       Ignoring margin note.
+.            rm MN-div-\\*[l-r]-\\n[MN-curr]
+.            tm1 "[mom]: \
+No room to start \\*[MN-pos] margin note #\\n[MN-curr] on page \\n[#P].
+.            tm1 "      Ignoring margin note.
 .            rr MN-shifted
 .         \}
-.         nr #no-repeat-MN-right 1
-.         nr #OVERFLOW_RIGHT 1
+.         nr #no-repeat-MN-\\*[MN-pos] 1
+.         if '\\*[MN-pos]'left'  .nr #OVERFLOW_LEFT 1
+.         if '\\*[MN-pos]'right' .nr #OVERFLOW_RIGHT 1
 .         ie \\n[#FN_COUNT]=0 \{\
 .            ch FOOTER \\n[.p]u
 .            wh \\n[#VARIABLE_FOOTER_POS]u+\\n[MN-lead-adj]u+1u MN_OVERFLOW_TRAP
 .         \}
 .         el \
 .            wh \\n[.p]u+\\n[#VARIABLE_FOOTER_POS]u-1u MN_OVERFLOW_TRAP
-.         vpt 1
+.         vpt
 .      \}
 .      nf
-.      MN-div-r-\\n[MN-curr]
+.      MN-div-\\*[l-r]-\\n[MN-curr]
 .      fi
 .      br
 .      nr MN-last-pos \\n[nl]
 .   \}
 .   ev
 .   po
-.   if !\\n[#no-repeat-MN-right]=1 .vpt 1
+.   if !\\n[#no-repeat-MN-\\*[MN-pos]]=1 .vpt
 ..
+.
+.ALIAS MNbottom-right MNbottom
+.ALIAS MNbottom-left  MNbottom
 \#
 \# PDF SUPPORT
 \# ===========
@@ -20629,11 +22847,12 @@ Macro MN: Warning: Right margin note #\\n[MN-curr] on page \\n[#P] shifted down.
 .          \}
 .       \}
 .    \}
-.    if !\\n[PDFHREF_COLOR_SET]=1 \{\
+.    if !\\n[PDFHREF_COLOR_SET]=1 \
 .       nr PDFHREF_COLOR_SET 1
-.    \}
 .END
 \#
+.ALIAS PDF_LINK_COLOUR PDF_LINK_COLOR
+\#
 \# AUTO_RELOCATE_TOC
 \# -----------------
 \#
@@ -20649,6 +22868,8 @@ Macro MN: Warning: Right margin note #\\n[MN-curr] on page \\n[#P] shifted down.
 .    if '\\$1'AFTER_COVER'     .nr TOC.RELOCATE 6
 .END
 \#
+.ALIAS AUTO_TOC_RELOCATE AUTO_RELOCATE_TOC
+\#
 \# PDF_BOOKMARK
 \# ------------
 \# *Argument:
@@ -20687,7 +22908,6 @@ Macro MN: Warning: Right margin note #\\n[MN-curr] on page \\n[#P] shifted down.
 .       \}
 .       ds PDF_TX \\$*
 .       pdfmomclean PDF_TX
-.\" .   ev protect
 .       nr PDF_LEV (\\n[LEVEL_REQ]*\\n[#PDF_BOOKMARKS_OPEN])
 .       ie '\\*[.T]'ps' \{\
 .           if !'\\*[PDF_NM]'' \{\
@@ -20697,7 +22917,6 @@ Macro MN: Warning: Right margin note #\\n[MN-curr] on page \\n[#P] shifted down.
 .           pdfbookmark \\n[PDF_LEV] \\*[PDF_TX]
 .       \}
 .       el .pdfbookmark \\*[PDF_NM] \\n[PDF_LEV] \\$*
-.\" .   ev
 .       nr CURRENT_LEVEL \\n[LEVEL_REQ]
 .       rr LEVEL_REQ
 .       rr PDF_LEV
@@ -20852,7 +23071,8 @@ Macro MN: Warning: Right margin note #\\n[MN-curr] on page \\n[#P] shifted down.
 .MAC PDF_TARGET END
 .    ds ARG_1 \\$1
 .    shift
-.    pdfhref M -N \\*[ARG_1] -- \\$*
+.    ie '\\$*'' .pdfhref M -N \\*[ARG_1] -- \\$*
+.    el .pdfhref M -N \\*[ARG_1] -E -- \\$*
 .    if '\\*[.T]'ps' .if !dpdf:href.map .tm gropdf-info:href \\*[ARG_1] \\$*
 .END
 \#
@@ -20861,7 +23081,8 @@ Macro MN: Warning: Right margin note #\\n[MN-curr] on page \\n[#P] shifted down.
 \# *Arguments:
 \#   [ -L -| -R | -C | -I <indent> ] \
 \#     <image file> <width> <height> \
-\#     [ SCALE <factor> ] [ ADJUST +|-<vertical shift> ]
+\#     [ SCALE <factor> ] [ ADJUST +|-<vertical shift> ] [ TARGET <pdf target> ] \
+\#     [ NO_SHIM ] [ NO_FLEX ]
 \# *Function:
 \#   Allows embedding of PDF images with the same arguments as PSPIC
 \#   plus SCALE and ADJUST options.
@@ -20869,8 +23090,11 @@ Macro MN: Warning: Right margin note #\\n[MN-curr] on page \\n[#P] shifted down.
 \#   <image file> <width> <height> are required.
 \#
 .MAC PDF_IMAGE END
-.    rr float*img
-.    if !'\\n[.z]'FLOAT*DIV' .FLOAT
+.    if !'\\n[.z]'FLOAT*DIV' \{\
+.       nr pdf-img:float 1
+.       FLOAT
+.       PDF_TARGET fig:\\n+[lists*target]
+.    \}
 .    nr float*img 1
 .    ds ev-current \\n[.ev]
 .    ev IMG
@@ -20895,7 +23119,7 @@ Macro MN: Warning: Right margin note #\\n[MN-curr] on page \\n[#P] shifted down.
 .    substring pdf-img@file -1 -3
 .    if !'\\*[pdf-img@file]'pdf' \{\
 .       tm1 "[mom]: Image file '\\*[pdf-img:file]' at line \\n[.c] not found, or not a PDF image.
-.       ab Aborting '\\n[.F]' at \\$0, line \\n[.c].
+.       ab   [mom]: Aborting '\\n[.F]' at \\$0, line \\n[.c].
 .    \}
 .    nr pdf-img:width \\$2
 .    nr pdf-img:depth \\$3
@@ -20935,19 +23159,50 @@ Macro MN: Warning: Right margin note #\\n[MN-curr] on page \\n[#P] shifted down.
 .          ds label-type pdf-img
 .          shift 2
 .       \}
+.       if '\\$1'TARGET' \{\
+.          ds target "\\$2
+.          PDF_TARGET "\\*[target]
+.          shift 2
+.       \}
 .       if '\\$1'NO_SHIM' \{\
-.          nr float*no-shim 1
+.          if !'\\n[.z]'FLOAT*DIV' .nr pdf-img*no-shim 1
+.          nr @no-shim 1
+.          shift 1
+.       \}
+.       if '\\$1'NO_FLEX' \{\
+.          nr pdf-img*no-flex 1
+.          nr @no-flex 1
+.          shift 1
 .       \}
 .    \}
-.    ds pdf-img*label-sffx-tmp \\*[pdf-img*label-sffx]
-.    substring pdf-img*label-sffx-tmp -1
-.    if '\\*[pdf-img*label-sffx-tmp]'.' \
-.       if \\n[pdf-img*caption-after-label]=0 .chop pdf-img*label-sffx
-.    PDF_TARGET fig:\\n+[lists*target]
+.    if (\\n[pdf-img*have-label]=1):(\\n[pdf-img*autolabel]=1) \
+.       ds label-type pdf-img
+.    if !'\\*[pdf-img*label-sffx]'' \{\
+.       ds pdf-img*label-sffx-tmp \\*[pdf-img*label-sffx]
+.       substring pdf-img*label-sffx-tmp -1
+.       if '\\*[pdf-img*label-sffx-tmp]'.' \
+.          if \\n[pdf-img*caption-after-label]=0 .chop pdf-img*label-sffx
+.    \}
 .    if '\\*[pdf-img:pos]'-C' \
 .       nr pdf-img:ind (\\n[.ll]-\\n[ind-pre-img]-\\n[pdf-img:width])/2
-.    if '\\*[pdf-img:pos]'-R' \{\
+.    if '\\*[pdf-img:pos]'-R' \
 .       nr pdf-img:ind \\n[.ll]-\\n[pdf-img:width]-\\n[ind-pre-img]
+.    if \\n[pdf-img*label-with-chapter] \
+.       ds chapno \\n[#CH_NUM].
+.    if \\n[pdf-img*autolabel] \{\
+.       ds pdf-img*label \\*[pdf-img*label-prfx]\\*[chapno]\\n+[fig*label-num]\\*[pdf-img*label-sffx]
+.       nr fig*label-width \w'\\*[pdf-img*label]'
+.       nr fig*label-num -1
+.    \}
+.    if !'\\*[pdf-img*caption-short]'' .ds short -short
+.    if \\n[#PDF_BOOKMARKS] \{\
+.       ie (\\n[pdf-img*have-label]=1):(\\n[pdf-img*autolabel]=1) \{\
+\!.        TO_FIGURES "\\*[pdf-img*label]" "\\*[pdf-img*caption\\*[short]]"
+.       \}
+.       el \{\
+\!.        if !'\\*[pdf-img*caption\\*[short]]'' \
+\!.           TO_FIGURES "\\*[pdf-img*caption\\*[short]]"
+.       \}
 .    \}
 .    di PDF*IMAGE
 .    if \\n[@TOP] \{\
@@ -20974,6 +23229,7 @@ Macro MN: Warning: Right margin note #\\n[MN-curr] on page \\n[#P] shifted down.
 .             vs \\n[.ps]u+\\n[pdf-img*caption-autolead]u
 .          \}
 .          PDF_IMG*SET_CAPTION_QUAD \\*[pdf-img*caption-quad]
+.          nr pdf-img*caption-top-lead-diff \\n[lead-pre-caption]-\\n[.v]
 .          sp \\n[lead-pre-caption]u-\\n[.v]u
 .          nop \\*[pdf-img*caption]
 .          br
@@ -21037,23 +23293,28 @@ Macro MN: Warning: Right margin note #\\n[MN-curr] on page \\n[#P] shifted down.
 .       PDF_IMG*SET_LABEL_QUAD \\*[pdf-img*label-quad]
 .       sp \\n[lead-pre-label]u-\\n[.v]u
 .       if !'\\*[pdf-img*label-space]'' .sp \\*[pdf-img*label-space]
-.       ie \\n[pdf-img*autolabel] \
+.       ie \\n[pdf-img*autolabel] \{\
 .          nop \
 \\*[pdf-img*label-prfx]\\*[chapno]\\n+[fig*label-num]\\*[pdf-img*label-sffx]\|
-.       el .if !'\\*[pdf-img*label]'' .nop \\*[pdf-img*label]
-.       if \\n[pdf-img*autolabel] \
 .          ds pdf-img*label \\*[chapno]\\n[fig*label-num]
+.          if dLABEL.REFS \
+.             tm .ds \\*[target] \\*[chapno]\\n[fig*label-num]
+.          rm target
+.       \}
+.       el .if !'\\*[pdf-img*label]'' .nop \\*[pdf-img*label]
 .       fam
 .       ft
 .       ps
 .       gcolor
 .       if !'\\*[pdf-img*caption]'' \{\
 .          if \\n[pdf-img*caption-after-label] \{\
+.             ds pdf-img*caption-old \\*[pdf-img*caption]
 .             ds pdf-img*caption " \\*[pdf-img*caption]
 .             nop \\*[pdf-img*caption-specs]\\*[pdf-img*caption]\\*[revert-specs]
+.             ds pdf-img*caption \\*[pdf-img*caption-old]
 .          \}
 .       \}
-.       sp .5v
+.       br
 .       ev
 .       in 0
 .    \}
@@ -21072,12 +23333,17 @@ Macro MN: Warning: Right margin note #\\n[MN-curr] on page \\n[#P] shifted down.
 .       if !\\n[@TOP] \!.sp -\\*[pdf-img:adj]
 .    vpt
 .    ev
-.    FLOAT off
-.    nr dl \\n[pdf-img:width]
-.    if !'\\*[pdf-img*caption-short]'' .ds short -short
-.    ie !'\\*[pdf-img*label]'' \
-.       TO_FIGURES "\\*[pdf-img*label]" "\\*[pdf-img*caption\\*[short]]"
-.    el .TO_FIGURES "\\*[pdf-img*caption\\*[short]]"
+.    if \\n[pdf-img:float] \{\
+.       FLOAT off
+.       nr dl \\n[pdf-img:width]
+.    \}
+.    if !\\n[pdf-img:float] \{\
+.       ie !\\n[#NO_SHIM] \
+.          if !\\n[pdf-img*no-shim] .SHIM
+.       el \
+.          if !\\n[#NO_FLEX] \
+.             if !\\n[pdf-img*no-flex] .FLEX
+.    \}
 .    PDF_IMAGE_CLEAN 
 .END
 \#
@@ -21092,7 +23358,7 @@ Macro MN: Warning: Right margin note #\\n[MN-curr] on page \\n[#P] shifted down.
 \#   must be entered as "".
 \#
 .MAC PDF_IMAGE_FRAME END
-.    if !'\\$1''\{\
+.    ie !'\\$1''\{\
 .       ds frame-arg \\$1
 .       substring frame-arg -1
 .       ie \B'\\*[frame-arg]' \{\
@@ -21100,10 +23366,13 @@ Macro MN: Warning: Right margin note #\\n[MN-curr] on page \\n[#P] shifted down.
 .          tm1 "       of '\\n[.F]' requires a unit of measure.
 .          tm1 "       Default 6 point inset will be used instead.
 .       \}
-.       el .nr pdf-img:frame-inset \\$1
+.       el \{\
+.          nr pdf-img:frame-inset \\$1
+.          shift
+.       \}
 .    \}
-.    shift
-.    if !'\\$1'' \{\
+.    el .shift
+.    ie !'\\$1'' \{\
 .       ds frame-arg \\$1
 .       substring frame-arg -1
 .       ie \B'\\*[frame-arg]' \{\
@@ -21122,6 +23391,7 @@ Macro MN: Warning: Right margin note #\\n[MN-curr] on page \\n[#P] shifted down.
 .          \}
 .       \}
 .    \}
+.    el .shift
 .    if !'\\$1'' \{\
 .       ie m \\$1 .ds pdf-img:frame-color \\$1
 .       el \{\
@@ -21137,18 +23407,18 @@ Macro MN: Warning: Right margin note #\\n[MN-curr] on page \\n[#P] shifted down.
 .    rm pdf-img:adj
 .    rm pdf-img*caption
 .    rm pdf-img*caption-short
-.    rm pdf-img*caption-space
 .    rm pdf-img:file
 .    rm pdf-img*label
-.    rm pdf-img*label-space
 .    rm pdf-img:pos
 .    rm short
 .    rr ind-pre-img
 .    rr pdf-img:depth
 .    rr pdf-img:float
-.    rr pdf-img:frame
+.    if !\\n[pdf-img:frame] \
+.       rr pdf-img:frame
 .    rr pdf-img:ind
 .    rr pdf-img:no-shim
+.    rr pdf-img:no-flex
 .    rr pdf-img:scale
 .\" Cutarounds not yet implemented
 .    if !\\n[defer] \
@@ -21180,4 +23450,28 @@ Macro MN: Warning: Right margin note #\\n[MN-curr] on page \\n[#P] shifted down.
 .    \}
 .    el .nop \!.pdfmomclean \\$@
 ..
-\# vim: ft=groff: encoding=latin1: fileencoding=latin1: nomodified:
+\#
+.MAC PAUSE END
+.    vpt 0
+.    br
+.    vpt
+.    ie !'\\n[.z]'' \{\
+\!.     pdfpause
+\!.     pdftransition BLOCK \\$1
+.    \}
+.    el \{\
+.       pdfpause
+.       pdftransition BLOCK \\$1
+.    \}
+.END
+\#
+.MAC TRANSITION END
+.    ie !'\\n[.z]'' \
+\!.     pdftransition PAGE \\$1
+.    el .pdftransition PAGE \\$1
+.END
+\#
+\# Local Variables:
+\# mode: nroff
+\# End:
+\# vim: filetype=groff:
index f49120f..145b621 100644 (file)
@@ -1,3 +1,25 @@
+2018-02-28  Werner LEMBERG  <wl@gnu.org>
+
+       * pdfmark.am (pdfmark.pdf): Use $(GROFF_V).
+
+2018-02-28  Werner LEMBERG  <wl@gnu.org>
+
+       * pdfmark.am (pdfroff): Use $(AM_V_GEN) to silence file generation.
+
+2015-08-22  Bernd Warken  <groff-bernd.warken-72@web.de>
+
+       * pdfroff.1.man: Rename `pdfroff.man'.
+
+       * pdfmark.am: Add `Last update'.  Setup Emacs mode.
+
+2015-08-05  Bernd Warken  <groff-bernd.warken-72@web.de>
+
+       * pdfmark.am: Add `Last update'.  Setup Emacs mode.
+
+2015-04-03  Werner LEMBERG  <wl@gnu.org>
+
+       * pdfroff.man: Make it work in compatibility mode.
+
 2014-10-14  Keith Marshall  <keith.d.marshall@ntlworld.com>
 
        Deduce "--no-toc-relocation" from input stream (revisited).
 
 ________________________________________________________________________
 
-Copyright (C) 2004-201 Free Software Foundation, Inc.
+Copyright (C) 2004-2018 Free Software Foundation, Inc.
 
 Copying and distribution of this file, with or without modification,
 are permitted in any medium without royalty provided the copyright
@@ -422,4 +444,5 @@ notice and this notice are preserved.
 Local Variables:
 version-control: never
 coding: latin-1
+mode: change-log
 End:
diff --git a/contrib/pdfmark/Makefile.sub b/contrib/pdfmark/Makefile.sub
deleted file mode 100644 (file)
index 01c6d8b..0000000
+++ /dev/null
@@ -1,126 +0,0 @@
-# Copyright (C) 2005-2014  Free Software Foundation, Inc.
-#      Written by Keith Marshall (keith.d.marshall@ntlworld.com)
-#
-# This file is part of groff.
-#
-# groff 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.
-#
-# groff 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 <http://www.gnu.org/licenses/>.
-
-MAN1=\
-  pdfroff.n
-
-CMDFILES=\
-  pdfroff
-
-TMACFILES=\
-  pdfmark.tmac \
-  spdf.tmac
-
-PDFDOCFILES=\
-  pdfmark.pdf
-
-MOSTLYCLEANDIRADD=\
-  pdfroff-*
-
-MOSTLYCLEANADD=\
-  gnu.eps \
-  $(PDFDOCFILES) \
-  $(CMDFILES) \
-  pdf[0-9]*
-
-GROFF_BIN_DIR=$(top_builddir)/src/roff/groff
-GROFF_OTHER_BIN_DIRS=\
-  $(top_builddir)/src/roff/troff \
-  $(top_builddir)/src/devices/grops
-GROFF_BIN_DIRS=$(GROFF_BIN_DIR) $(GROFF_OTHER_BIN_DIRS)
-GROFF_BIN_PATH=`echo $(GROFF_BIN_DIRS) | sed -e 's|  *|$(SH_SEP)|g'`
-
-FFLAG=-F$(top_builddir)/font -F$(top_srcdir)/font
-MFLAG=-M$(srcdir) -M$(top_builddir)/tmac -M$(top_srcdir)/tmac
-PFLAG=-dpaper=$(PAGE) -P-p$(PAGE)
-
-PDFROFF=\
-  GROFF_TMPDIR=. \
-  GROFF_COMMAND_PREFIX= \
-  GROFF_BIN_DIR="$(GROFF_BIN_DIR)" \
-  GROFF_BIN_PATH="$(GROFF_BIN_PATH)" \
-  ./pdfroff --keep-temporary-files $(FFLAG) $(MFLAG) $(PFLAG)
-
-RM=rm -f
-
-.SUFFIXES: .ms .pdf
-.ms.pdf:
-       $(PDFROFF) -mspdf --stylesheet=$(srcdir)/cover.ms $< >$@
-
-all: pdfroff $(make_pdfdoc)
-
-# The pdf files use the local script to generate.
-$(PDFDOCFILES): pdfroff
-
-pdfdoc: gnu.eps $(PDFDOCFILES)
-
-gnu.eps:
-       if test -f $(top_srcdir)/doc/gnu.eps; then \
-         cp $(top_srcdir)/doc/gnu.eps . ; \
-       elif test -f $(top_builddir)/doc/gnu.eps; then \
-         cp $(top_builddir)/doc/gnu.eps . ; \
-       else \
-         xpmtoppm $(top_srcdir)/doc/gnu.xpm | pnmdepth 15 \
-           | $(pnmtops_nosetpage) -noturn -rle >$@ ; \
-       fi
-
-pdfroff: pdfroff.sh $(SH_DEPS_SED_SCRIPT)
-       sed -f $(SH_DEPS_SED_SCRIPT) \
-           -e "s|@VERSION@|$(version)$(revision)|" \
-           -e "s|@GROFF_AWK_INTERPRETERS@|$(ALT_AWK_PROGS)|" \
-           -e "s|@GROFF_GHOSTSCRIPT_INTERPRETERS@|$(ALT_GHOSTSCRIPT_PROGS)|" \
-           -e "s|@GROFF_BIN_DIR@|$(bindir)|" $(srcdir)/pdfroff.sh >$@
-       chmod +x $@
-
-install_data: install_always $(make_install_pdfdoc)
-
-install_always:
-       -test -d $(DESTDIR)$(bindir) || $(mkinstalldirs) $(DESTDIR)$(bindir)
-       for f in $(CMDFILES); do \
-         $(RM) $(DESTDIR)$(bindir)/$$f; \
-         $(INSTALL_SCRIPT) $$f $(DESTDIR)$(bindir)/$$f; \
-       done
-       -test -d $(DESTDIR)$(tmacdir) || $(mkinstalldirs) $(DESTDIR)$(tmacdir)
-       for f in $(TMACFILES); do \
-         $(RM) $(DESTDIR)$(tmacdir)/$$f; \
-         $(INSTALL_DATA) $(srcdir)/$$f $(DESTDIR)$(tmacdir)/$$f; \
-       done
-
-install_pdfdoc: install_always
-       -test -d $(DESTDIR)$(pdfdocdir) \
-         || $(mkinstalldirs) $(DESTDIR)$(pdfdocdir)
-       for f in $(PDFDOCFILES); do \
-         $(RM) $(DESTDIR)$(pdfdocdir)/$$f; \
-         $(INSTALL_DATA) $$f $(DESTDIR)$(pdfdocdir)/$$f; \
-       done
-
-uninstall_sub: uninstall_always $(make_uninstall_pdfdoc)
-
-uninstall_always:
-       -for f in $(CMDFILES); do $(RM) $(DESTDIR)$(bindir)/$$f; done
-       -for f in $(TMACFILES); do $(RM) $(DESTDIR)$(tmacdir)/$$f; done
-
-uninstall_pdfdoc: uninstall_always
-       -for f in $(PDFDOCFILES); do $(RM) $(DESTDIR)$(pdfdocdir)/$$f; done
-
-# Emacs settings
-########################################################################
-#
-# Local Variables:
-# mode: makefile
-# End:
index b40c1eb..0ae544b 100644 (file)
@@ -1,5 +1,5 @@
     -*- text -*-
-    Copyright (C) 2004-201 Free Software Foundation, Inc.
+    Copyright (C) 2004-2018 Free Software Foundation, Inc.
 
     Copying and distribution of this file, with or without modification,
     are permitted in any medium without royalty provided the copyright
index 1000810..1b4b0f2 100644 (file)
@@ -1,5 +1,5 @@
     -*- text -*-
-    Copyright (C) 2004-201 Free Software Foundation, Inc.
+    Copyright (C) 2004-2018 Free Software Foundation, Inc.
 
     Copying and distribution of this file, with or without modification,
     are permitted in any medium without royalty provided the copyright
index a415482..de073b0 100644 (file)
@@ -1,5 +1,5 @@
     -*- text -*-
-    Copyright 2004-201 Free Software Foundation, Inc.
+    Copyright 2004-2018 Free Software Foundation, Inc.
 
     Copying and distribution of this file, with or without modification,
     are permitted in any medium without royalty provided the copyright
@@ -33,9 +33,9 @@ system dependencies.
 * Comment added 2005-02-26 by Keith Marshall <keith.d.marshall@ntlworld.com>
 
 If this refers to contrib/pdfmark/Makefile, then it is addressed by the new
-`pdfroff' script; the original Makefile may be considered redundant.  Local
-system dependencies are resolved by `configure', and applied to `pdfroff',
-when it is generated from `pdfroff.sh'.
+'pdfroff' script; the original Makefile may be considered redundant.  Local
+system dependencies are resolved by 'configure', and applied to 'pdfroff',
+when it is generated from 'pdfroff.sh'.
 
 --------
 
@@ -48,13 +48,13 @@ Completed.
 
 --------
 
-Provide a `pdfmark' script (or call it `groff2pdf'?) which
+Provide a 'pdfmark' script (or call it 'groff2pdf'?) which
 actually converts a groff input file to pdf, and which
 takes care of the necessary intermediate steps to handle
 PDF marks.
 
 * Comment added 2005-02-26 by Keith Marshall <keith.d.marshall@ntlworld.com>
 
-This facility now provided by `pdfroff' script; documented in `pdfroff.man'.
-Man page still requires an additional section, to describe use of `stylesheet'
+This facility now provided by 'pdfroff' script; documented in 'pdfroff.man'.
+Man page still requires an additional section, to describe use of 'stylesheet'
 feature.  Script also requires documentation in PDF and texinfo formats.
index fcf85b4..95f4cd2 100644 (file)
@@ -1,5 +1,4 @@
-.\" -*- nroff -*-
-.\" Copyright (C) 2004-2014  Free Software Foundation, Inc.
+.\" Copyright (C) 2004-2018 Free Software Foundation, Inc.
 .\"
 .\" Copying and distribution of this file, with or without modification,
 .\" are permitted in any medium without royalty provided the copyright
@@ -62,3 +61,7 @@
 .rr HM*SAVED
 .fam
 ..
+.\" Local Variables:
+.\" mode: nroff
+.\" End:
+.\" vim: filetype=groff:
diff --git a/contrib/pdfmark/pdfmark.am b/contrib/pdfmark/pdfmark.am
new file mode 100644 (file)
index 0000000..f392735
--- /dev/null
@@ -0,0 +1,106 @@
+# Copyright (C) 2005-2018 Free Software Foundation, Inc.
+#      Written by Keith Marshall (keith.d.marshall@ntlworld.com)
+#      Automake migration by Bertrand Garrigues
+#
+# Last update: 22 Aug 2015
+#
+# This file is part of groff.
+#
+# groff 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.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+
+pdfmark_srcdir = $(top_srcdir)/contrib/pdfmark
+pdfmark_builddir = $(top_builddir)/contrib/pdfmark
+
+man1_MANS += contrib/pdfmark/pdfroff.1
+
+bin_SCRIPTS += pdfroff
+
+# Files installed in $(tmacdir)
+TMACFILES = \
+  contrib/pdfmark/pdfmark.tmac \
+  contrib/pdfmark/spdf.tmac
+pdfmarktmacdir = $(tmacdir)
+dist_pdfmarktmac_DATA = $(TMACFILES)
+
+# Files installed in $(pdfdocdir)
+PDFDOCFILES = \
+  contrib/pdfmark/pdfmark.pdf
+if BUILD_PDFDOC
+pdfmarkpdfdocdir = $(pdfdocdir)
+nodist_pdfmarkpdfdoc_DATA = $(PDFDOCFILES)
+MOSTLYCLEANFILES += $(PDFDOCFILES)
+else
+EXTRA_DIST += $(PDFDOCFILES)
+endif
+
+EXTRA_DIST += \
+  contrib/pdfmark/cover.ms \
+  contrib/pdfmark/pdfmark.ms \
+  contrib/pdfmark/ChangeLog \
+  contrib/pdfmark/README \
+  contrib/pdfmark/PROBLEMS \
+  contrib/pdfmark/TODO \
+  contrib/pdfmark/pdfroff.1.man \
+  contrib/pdfmark/pdfroff.sh
+
+PDFMARK_PFLAG =-dpaper=$(PAGE) -P-p$(PAGE)
+PDFMARK_TFLAG = -M$(pdfmark_srcdir)
+PDFROFF=\
+  GROFF_TMPDIR=. \
+  GROFF_COMMAND_PREFIX= \
+  GROFF_BIN_DIR="$(GROFF_BIN_DIR)" \
+  GROFF_BIN_PATH="$(GROFF_BIN_PATH)" \
+  ./pdfroff --keep-temporary-files \
+  $(FFLAG) $(TFLAG) $(PDFMARK_TFLAG) $(PDFMARK_PFLAG)
+
+contrib/pdfmark/pdfmark.pdf: contrib/pdfmark/pdfmark.ms
+       $(GROFF_V)$(MKDIR_P) `dirname $@` \
+       && $(PDFROFF) -mspdf --stylesheet=$(pdfmark_srcdir)/cover.ms \
+            $(top_srcdir)/contrib/pdfmark/pdfmark.ms >$@
+
+# The pdf files use the local script to generate.
+$(PDFDOCFILES): pdfroff groff troff gropdf 
+$(PDFDOCFILES): $(dist_devpsfont_DATA) $(nodist_devpsfont_DATA) gnu.eps
+
+pdfroff: contrib/pdfmark/pdfroff.sh $(SH_DEPS_SED_SCRIPT)
+       $(AM_V_GEN)sed -f $(SH_DEPS_SED_SCRIPT) \
+           -e "s|[@]VERSION[@]|$(VERSION)|" \
+           -e "s|[@]GROFF_AWK_INTERPRETERS[@]|$(ALT_AWK_PROGS)|" \
+           -e "s|[@]GROFF_GHOSTSCRIPT_INTERPRETERS[@]|$(ALT_GHOSTSCRIPT_PROGS)|" \
+           -e "s|[@]GROFF_BIN_DIR[@]|$(bindir)|" $(pdfmark_srcdir)/pdfroff.sh \
+           >$@ \
+       && chmod +x $@
+
+mostlyclean-local: mostlyclean_pdfmark
+mostlyclean_pdfmark:
+       rm -rf $(top_builddir)/pdfroff-*
+
+uninstall_groffdirs: uninstall-pdfmark-hook
+uninstall-pdfmark-hook:
+if BUILD_PDFDOC
+       if test -d $(DESTDIR)$(pdfmarkpdfdocdir); then \
+         rmdir $(DESTDIR)$(pdfmarkpdfdocdir); \
+       fi
+endif
+
+
+########################################################################
+# Editor settings
+########################################################################
+#
+# Local Variables:
+# mode: makefile-automake
+# fill-column: 72
+# End:
+# vim: set filetype=automake textwidth=72:
index 154030e..62e0df8 100644 (file)
@@ -1,4 +1,3 @@
-.\" vim: ft=groff          -*- nroff -*-
 .ig
 pdfmark.ms
 
@@ -6,19 +5,14 @@ File position: <groff-source>/contrib/pdfmark/pdfmark.ms
 
 This file is part of groff, the GNU roff type-setting system.
 
-Copyright (C) 2004-201 Free Software Foundation, Inc.
+Copyright (C) 2004-2018 Free Software Foundation, Inc.
 written by Keith Marshall <keith.d.marshall@ntlworld.com>
 
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.3 or
 any later version published by the Free Software Foundation; with no
-Front-Cover Texts, no Back-Cover Texts, and the following Invariant
-Sections:--
-
-    a)  This "Legal Matters" section, extending from the start of
-        the document, to the end of the enclosing ".ig" section.
-
-    b)  The two lines below starting with `.AU' and `.AI'.
+Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
+Texts.
 
 A copy of the Free Documentation License is included as a file called
 FDL in the main directory of the groff source package.
@@ -32,14 +26,9 @@ Publishing with GNU Troff
 .CE
 .\"
 .\" Specify the Internet address for the groff web site.
-.\" Currently, there are two available addresses; a copy is maintained at ...
 .\"
 .ds GROFF-WEBSITE http://www.gnu.org/software/groff
 .\"
-.\" ... but the official home site is at ...
-.\"
-.ds GROFF-WEBSITE http://groff.ffii.org
-.\"
 .\" Set the PDF default document view attribute, to ensure that the document
 .\" outline is visible, each time the document is opened in Acrobat Reader.
 .\"
@@ -256,8 +245,7 @@ for information and availability.
 .FE
 Other tools employed, which should be readily available on
 .EM any
-.SM
-UNIX\(tm
+Unix\(tm
 .LG
 or GNU/Linux system, are
 .CW sed ,
@@ -285,8 +273,7 @@ but comprehensive
 POSIX
 .LG
 emulation environment and
-.SM
-UNIX\(tm
+Unix\(tm
 .LG
 toolkit for 32\(hybit Microsoft\*(rg Windows\(tm platforms; see
 .pdfhref W http://cygwin.com
@@ -295,8 +282,7 @@ for information and download.
 or MSYS.\**
 .FS
 Another free, but minimal suite of common
-.SM
-UNIX\(tm
+Unix\(tm
 .LG
 tools for 32\(hybit Microsoft\*(rg Windows\(tm, available for download from
 .pdfhref W -A ; http://www.mingw.org
@@ -1209,8 +1195,7 @@ be separated from the preceding option flag by one or more
 be used).
 It may be noted that this paradigm for specifying options
 is reminiscent of most
-.SM
-UNIX\(tm
+Unix\(tm
 .LG
 shells; however, in the case of the
 .CW pdfhref
@@ -1500,7 +1485,7 @@ option.
 .IP \*[= -UF\0 unix\(hyfile > <]
 Specifies the name of the file in which a link destination is defined,
 using the file naming semantics of the
-.CW UNIX \(tm
+.CW Unix \(tm
 operating system.
 When the PDF document is read on a machine
 where the operating system uses
@@ -2043,7 +2028,7 @@ for each of the
 .CW MS\(hyDOS \*(rg,
 .CW Apple \*(rg
 .CW Macintosh \*(rg,
-.CW UNIX \(tm
+.CW Unix \(tm
 and
 .CW MS\(hyWindows \*(rg
 operating systems, respectively; see the
@@ -2562,3 +2547,7 @@ macro.
 .NH 3
 .XN -N import-map -- Deploying a Document Reference Map
 .TC
+.\" Local Variables:
+.\" mode: nroff
+.\" End:
+.\" vim: filetype=groff:
index a6c5900..2006f45 100644 (file)
@@ -1,9 +1,8 @@
-.\" -*- nroff -*-
 .ig
 
 pdfmark.tmac
 
-Copyright (C) 2004-201 Free Software Foundation, Inc.
+Copyright (C) 2004-2018 Free Software Foundation, Inc.
      Written by Keith Marshall (keith.d.marshall@ntlworld.com)
 
 This file is part of groff.
@@ -19,7 +18,7 @@ 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 <http://www.gnu.org/licenses/>.
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 Author's Note
 =============
@@ -1821,7 +1820,7 @@ inspiration has come from discussion on the groff mailing list
 .      pdf*href.mark.emit 2
 .      \"
 .      \" Now, adjust the vertical "hot-spot" mapping reference,
-.      \" to identify the correct position for the the last line of
+.      \" to identify the correct position for the last line of
 .      \" text, over which the "hot-spot" extends.
 .      \"
 .      nr pdf:ury \\n[pdf:lly.end]-\\*[PDFHREF.HEIGHT]
@@ -1947,4 +1946,8 @@ inspiration has come from discussion on the groff mailing list
 .als pdf*href-W      pdf*href
 .ds  pdf*href-W.link /Action << /Subtype /URI /URI (\\\\*[pdf:href-D]) >>
 .\"
-.\" pdfmark.tmac: end of file / vim: ft=groff
+.\" Local Variables:
+.\" mode: nroff
+.\" End:
+.\" vim: filetype=groff:
+.\" pdfmark.tmac: end of file
similarity index 75%
rename from contrib/pdfmark/pdfroff.man
rename to contrib/pdfmark/pdfroff.1.man
index ec412bb..95d7807 100644 (file)
@@ -1,69 +1,47 @@
-.TH PDFROFF @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
+.TH PDFROFF @MAN1EXT@ "@MDATE@" "groff @VERSION@"
 .SH NAME
 pdfroff \- create PDF documents using groff
 .
 .
+.\" Save and disable compatibility mode (for, e.g., Solaris 10/11).
+.do nr pdfroff_C \n[.C]
+.cp 0
+.
+.
 .\" pdfroff.1
 .\" File position: <groff-source>/contrib/pdfmark/pdfroff.man
 .
-.\" --------------------------------------------------------------------
-.\" Legal Matters
-.\" --------------------------------------------------------------------
-.
-.de co
-Copyright \[co] 2005-2014 Free Software Foundation, Inc.
-
-This file is part of groff, the free GNU roff type-setting system.
-
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License (FDL), Version
-1.3 or any later version published by the Free Software Foundation;
-with no Front-Cover Texts, no Back-Cover Texts, and the following
-Invariant Sections:--
-
-    a)  This "Legal Matters" section, extending from the definition of
-        .co to the end of the enclosing .au definition.
-
-    b) The entire sections bearing the heading "COPYING" and
-       "AUTHORS".
-
-A copy of the Free Documentation License is included as a file called
-FDL in the main directory of the groff source package, it is also
-available in the internet at
-.UR http://\:www.gnu.org/\:copyleft/\:fdl.html
-the GNU copyleft site
-.UE .
-..
-.
-.de au
-It was originally written by
-.MT keith.d.marshall@\:ntlworld.com
-Keith Marshall
-.ME ,
-who also wrote the implementation of the
-.I pdfroff
-program, to which it relates.
-..
-.
-.\" --------------------------------------------------------------------
+.\" ====================================================================
+.\" Legal Terms
+.\" ====================================================================
+.\"
+.\" Copyright (C) 2005-2018 Free Software Foundation, Inc.
+.\"
+.\" This file is part of groff, the GNU roff type-setting system.
+.\"
+.\" Permission is granted to copy, distribute and/or modify this
+.\" document under the terms of the GNU Free Documentation License,
+.\" Version 1.3 or any later version published by the Free Software
+.\" Foundation; with no Invariant Sections, with no Front-Cover Texts,
+.\" and with no Back-Cover Texts.
+.\"
+.\" A copy of the Free Documentation License is included as a file
+.\" called FDL in the main directory of the groff source package.
+.
+.
+.\" ====================================================================
 .\" Local macro definitions
 .
 .hw pdfmark
 .
-.de NH
-.  hy 0
-\&\\$*
-.  hy
-..
-.
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH SYNOPSIS
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .SY pdfroff
 .OP \-abcegilpstzCEGNRSUVXZ
@@ -84,31 +62,40 @@ program, to which it relates.
 .OP \-\-emit\-ps
 .OP \-\-no\-toc\-relocation
 .OP \-\-no-kill\-null\-pages
-.OP \-\-stylesheet=\fIname\fP
+.RB [ \-\-stylesheet=\c
+.IR name ]
 .OP \-\-no\-pdf\-output
-.OP \-\-pdf\-output=\fIname\fP
+.RB [ \-\-pdf\-output=\c
+.IR name ]
 .OP \-\-no\-reference\-dictionary
-.OP \-\-reference\-dictionary=\fIname\fP
+.RB [ \-\-reference\-dictionary=\c
+.IR  name ]
 .OP \-\-report\-progress
 .OP \-\-keep\-temporary\-files
-.I file .\|.\|.
+.RI [ file
+\&.\|.\|.\&]
+.YS
 .
 .SY pdfroff
 .B \-h
-|
+.SY pdfroff
 .B \-\-help
+.YS
 .
 .SY pdfroff
 .B \-v
-|
+.RI [ groff-option
+\&.\|.\|.\&]
+.SY pdfroff
 .B \-\-version
-.RI [ option\ .\|.\|. ]
+.RI [ groff-option
+\&.\|.\|.\&]
 .YS
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH DESCRIPTION
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .B pdfroff
 is a wrapper program for the GNU text processing system,
@@ -153,7 +140,7 @@ macro package, should the user choose to employ it.
 Specifically, if the
 .I pdfhref
 macro, defined in the
-.B pdfmark.tmac
+.I pdfmark.tmac
 package, is used to define public reference marks, or dynamic links to
 such reference marks, then
 .B pdfroff
@@ -165,9 +152,9 @@ in order to compile a document reference dictionary, to resolve
 references, and to expand the dynamically defined content of links.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH USAGE
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The command line is parsed in accordance with normal GNU conventions,
 but with one exception \(em when specifying any short form option
@@ -209,13 +196,13 @@ Consequently,
 accepts all options and arguments, as specified in
 .BR groff (@MAN1EXT@),
 which may also be considered as the definitive reference for all standard
-.BR pdfroff
+.B pdfroff
 options and argument usage.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH OPTIONS
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .B pdfroff
 accepts all of the short form options (i.e., those introduced by a
@@ -273,7 +260,7 @@ See
 .BR groff (@MAN1EXT@)
 for a description of all other short form options, which are
 transparently passed through
-.BR pdfroff
+.B pdfroff
 to
 .BR groff .
 .
@@ -318,9 +305,8 @@ has completed PDF document formatting; this may be useful, when
 debugging formatting problems.
 .
 .IP
-See section
-.BR FILES ,
-for a description of the temporary files used by
+See section \[lq]Files\[rq] below for a description of the temporary
+files used by
 .BR pdfroff .
 .
 .TP
@@ -353,7 +339,7 @@ generated table of contents.
 .TP
 .B \-\-no\-kill\-null\-pages
 While preparing for simulation of the manual collation step,
-which is traditionally required to relocate of a
+which is traditionally required to relocate a
 .I "table of contents"
 to the start of a document,
 .B pdfroff
@@ -425,16 +411,16 @@ in order to display the associated
 version information, before exiting.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH ENVIRONMENT
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The following environment variables may be set, and exported,
 to modify the behaviour of
 .BR pdfroff .
 .
 .TP
-.B PDFROFF_COLLATE
+.I PDFROFF_COLLATE
 Specifies the program to be used
 for collation of the finished PDF document.
 .
@@ -446,7 +432,7 @@ when formatting with traditional macro packages,
 which print them at the end.
 .
 However, users should not normally need to specify
-.BR \%PDFROFF_COLLATE ,
+.IR \%PDFROFF_COLLATE ,
 (and indeed, are not encouraged to do so).  If unspecified,
 .B pdfroff
 uses
@@ -456,7 +442,7 @@ which normally suffices.
 .
 .IP
 If
-.B \%PDFROFF_COLLATE
+.I \%PDFROFF_COLLATE
 .I is
 specified,
 then it must act as a filter,
@@ -465,17 +451,17 @@ and write its output to the
 .I stdout
 stream,
 whence it is piped to the
-.BR \%PDFROFF_POSTPROCESSOR_COMMAND ,
+.IR \%PDFROFF_POSTPROCESSOR_COMMAND ,
 to produce the finished PDF output.
 .
 .IP
 When specifying
-.BR \%PDFROFF_COLLATE ,
+.IR \%PDFROFF_COLLATE ,
 it is normally necessary to also specify
-.BR \%PDFROFF_KILL_NULL_PAGES .
+.IR \%PDFROFF_KILL_NULL_PAGES .
 .
 .IP
-.B \%PDFROFF_COLLATE
+.I \%PDFROFF_COLLATE
 is ignored,
 if
 .B pdfroff
@@ -484,14 +470,14 @@ is invoked with the
 option.
 .
 .TP
-.B PDFROFF_KILL_NULL_PAGES
+.I PDFROFF_KILL_NULL_PAGES
 Specifies options to be passed to the
-.B \%PDFROFF_COLLATE
+.I \%PDFROFF_COLLATE
 program.
 .
 .IP
 It should not normally be necessary to specify
-.BR \%PDFROFF_KILL_NULL_PAGES .
+.IR \%PDFROFF_KILL_NULL_PAGES .
 .
 The internal default is a
 .BR sed (@MAN1EXT@)
@@ -505,15 +491,15 @@ However,
 if any alternative to
 .BR sed (@MAN1EXT@)
 is specified for
-.BR \%PDFROFF_COLLATE ,
+.IR \%PDFROFF_COLLATE ,
 then it is likely that a corresponding alternative specification for
-.B \%PDFROFF_KILL_NULL_PAGES
+.I \%PDFROFF_KILL_NULL_PAGES
 is required.
 .
 .IP
 As in the case of
-.BR \%PDFROFF_COLLATE ,
-.B \%PDFROFF_KILL_NULL_PAGES
+.IR \%PDFROFF_COLLATE ,
+.I \%PDFROFF_KILL_NULL_PAGES
 is ignored, if
 .B pdfroff
 is invoked with the
@@ -521,7 +507,7 @@ is invoked with the
 option.
 .
 .TP
-.B PDFROFF_POSTPROCESSOR_COMMAND
+.I PDFROFF_POSTPROCESSOR_COMMAND
 Specifies the command to be used for the final document conversion
 from PostScript intermediate output to PDF.
 .
@@ -540,38 +526,37 @@ stream.
 .
 .IP
 If unspecified,
-.B \%PDFROFF_POSTPROCESSOR_COMMAND
+.I \%PDFROFF_POSTPROCESSOR_COMMAND
 defaults to
 .
-.RS 2
-.IP
-.I
-.ad l
-.NH gs \-dBATCH \-dQUIET \-dNOPAUSE \-dSAFER \-sDEVICE=pdfwrite \-sOutputFile=\-
-.ad
+.RS 12n
+.EX
+gs \-dBATCH \-dQUIET \-dNOPAUSE \-dSAFER \-sDEVICE=pdfwrite \e
+       \-sOutputFile=\-
+.EE
 .RE
 .
 .TP
-.B GROFF_TMPDIR
+.I GROFF_TMPDIR
 Identifies the directory in which
 .B pdfroff
 should create temporary files.
 .
 If
-.B \%GROFF_TMPDIR
+.I \%GROFF_TMPDIR
 is
 .I not
 specified, then the variables
-.BR TMPDIR ,
-.B TMP
+.IR TMPDIR ,
+.I TMP
 and
-.B TEMP
+.I TEMP
 are considered in turn, as possible temporary file repositories.
 If none of these are set, then temporary files are created
 in the current directory.
 .
 .TP
-.B GROFF_GHOSTSCRIPT_INTERPRETER
+.I GROFF_GHOSTSCRIPT_INTERPRETER
 Specifies the program to be invoked, when
 .B pdfroff
 converts
@@ -579,20 +564,20 @@ converts
 PostScript output to PDF.
 .
 If
-.B \%PDFROFF_POSTPROCESSOR_COMMAND
+.I \%PDFROFF_POSTPROCESSOR_COMMAND
 is specified,
 then the command name it specifies is
 .I implicitly
 assigned to
-.BR \%GROFF_GHOSTSCRIPT_INTERPRETER ,
+.IR \%GROFF_GHOSTSCRIPT_INTERPRETER ,
 overriding any explicit setting specified in the environment.
 .
 If
-.B \%GROFF_GHOSTSCRIPT_INTERPRETER
+.I \%GROFF_GHOSTSCRIPT_INTERPRETER
 is not specified, then
 .B pdfroff
 searches the process
-.BR PATH ,
+.IR PATH ,
 looking for a program with any of the well known names
 for the GhostScript interpreter;
 if no GhostScript interpreter can be found,
@@ -600,7 +585,7 @@ if no GhostScript interpreter can be found,
 aborts.
 .
 .TP
-.B GROFF_AWK_INTERPRETER
+.I GROFF_AWK_INTERPRETER
 Specifies the program to be invoked, when
 .B pdfroff
 is extracting reference dictionary entries from a
@@ -608,46 +593,46 @@ is extracting reference dictionary entries from a
 intermediate message stream.
 .
 If
-.B \%GROFF_AWK_INTERPRETER
+.I \%GROFF_AWK_INTERPRETER
 is not specified, then
 .B pdfroff
 searches the process
-.BR PATH ,
+.IR PATH ,
 looking for any of the preferred programs, \[oq]gawk\[cq],
-\[oq]mawk\[cq], \[oq]nawk\[cq], and \[ok]awk\[cq], in this order; if
+\[oq]mawk\[cq], \[oq]nawk\[cq], and \[oq]awk\[cq], in this order; if
 none of these are found,
 .B pdfroff
 issues a warning message, and continue processing;
 however, in this case, no reference dictionary is created.
 .
 .TP
-.B OSTYPE
+.I OSTYPE
 Typically defined automatically by the operating system,
-.OSTYPE
+.I \%OSTYPE
 is used on Microsoft Win32/MS-DOS platforms
 .IR only ,
 to infer the default
-.B \%PATH_SEPARATOR
+.I \%PATH_SEPARATOR
 character,
 which is used when parsing the process
-.B PATH
+.I PATH
 to search for external helper programs.
 .
 .TP
-.B PATH_SEPARATOR
+.I PATH_SEPARATOR
 If set,
-.B \%PATH_SEPARATOR
+.I \%PATH_SEPARATOR
 overrides the default separator character,
-(\[oq]:\[cq] on POSIX/UNIX systems,
+(\[oq]:\[cq] on POSIX/Unix systems,
 inferred from
-.OSTYPE
+.I \%OSTYPE
 on Microsoft Win32/MS-DOS),
 which is used when parsing the process
-.B PATH
+.I PATH
 to search for external helper programs.
 .
 .TP
-.B SHOW_PROGRESS
+.I SHOW_PROGRESS
 If this is set to a non-empty value, then
 .B pdfroff
 always behaves as if the
@@ -655,23 +640,22 @@ always behaves as if the
 option is specified, on the command line.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH FILES
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 Input and output files for
 .B pdfroff
-may be named according to any convention of the user\[aq]s choice.
+may be named according to any convention of the user's choice.
 Typically, input files may be named according to the choice of the
 principal formatting macro package, e.g.,
-.IB file .ms
+.RI file .ms
 might be an input file for formatting using the
 .B ms
 macros
-.RB ( s.tmac );
+.RI ( s.tmac );
 normally, the final output file should be named
-.IB file .pdf\c
-\&.
+.RI file .pdf .
 .
 .
 .P
@@ -679,8 +663,7 @@ Temporary files, created by
 .BR pdfroff ,
 are placed in the file system hierarchy,
 in or below the directory specified by environment variables
-(see section
-.BR ENVIRONMENT ).
+(see section \[lq]Environment\[rq] above).
 .
 If
 .BR mktemp (@MAN1EXT@)
@@ -688,7 +671,7 @@ is available,
 it is invoked to create a private subdirectory of
 the nominated temporary files directory,
 (with subdirectory name derived from the template
-.BR pdfroff-XXXXXXXXXX );
+.IR pdfroff\-XXXXXXXXXX );
 if this subdirectory is successfully created,
 the temporary files will be placed within it,
 otherwise they will be placed directly in the directory
@@ -696,8 +679,8 @@ nominated in the environment.
 .P
 All temporary files themselves
 are named according to the convention
-.BI pdf $$ .*\c
-\&, where
+.IR pdf $$ . *,
+where
 .I $$
 is the standard shell variable representing the process ID of the
 .B pdfroff
@@ -708,7 +691,7 @@ represents any of the extensions used by
 to identify the following temporary and intermediate files.
 .
 .TP
-.BI pdf $$ .tmp
+.IR pdf $$ .tmp
 A scratch pad file,
 used to capture reference data emitted by
 .BR groff ,
@@ -717,7 +700,7 @@ during the
 compilation phase.
 .
 .TP
-.BI pdf $$ .ref
+.IR pdf $$ .ref
 The
 .IR "reference dictionary" ,
 as compiled in the last but one pass of the
@@ -740,11 +723,10 @@ this intermediate file becomes permanent,
 and is named
 .IR name ,
 rather than
-.BI pdf $$ .ref\c
-\&.
+.IR pdf $$ .ref .
 .
 .TP
-.BI pdf $$ .cmp
+.IR pdf $$ .cmp
 Used to collect
 .I reference dictionary
 entries during the active pass of the
@@ -753,10 +735,9 @@ compilation phase.
 .
 At the end of any pass,
 when the content of
-.BI pdf $$ .cmp
+.IR pdf $$ .cmp
 compares as identical to
-.BI pdf $$ .ref\c
-\&,
+.IR pdf $$ .ref ,
 (or the corresponding file named by the
 .BR \%\-\-reference\-dictionary =\c
 .I name
@@ -770,18 +751,18 @@ is appended to this intermediate file,
 for inclusion in the final formatting passes.
 .
 .TP
-.BI pdf $$ .tc
+.IR pdf $$ .tc
 An intermediate
 .I PostScript
 file,
-in which \*[lq]Table of Contents\*[rq] entries are collected,
+in which \[lq]Table of Contents\[rq] entries are collected,
 to facilitate relocation before the body text,
 on ultimate output to the
 .I GhostScript
 postprocessor.
 .
 .TP
-.BI pdf $$ .ps
+.IR pdf $$ .ps
 An intermediate
 .I PostScript
 file,
@@ -790,13 +771,22 @@ in which the body text is collected prior to ultimate output to the
 postprocessor,
 in the proper sequence,
 .I after
-.BI pdf $$ .tc\c
-\&.
+.IR pdf $$ .tc .
+.
+.
+.\" ====================================================================
+.SH AUTHORS
+.\" ====================================================================
+.B pdfroff
+was written by
+.MT keith.d.marshall@\:ntlworld.com
+Keith Marshall
+.ME .
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH SEE ALSO
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 See
 .BR groff (@MAN1EXT@)
@@ -814,7 +804,7 @@ may also be considered to be the definitive reference to all
 capabilities of
 .BR pdfroff ,
 with this document providing the reference to
-.BR pdfroff \[aq]s
+.BR pdfroff 's
 extended features.
 .
 .
@@ -826,27 +816,24 @@ the use of any specific
 .B groff
 macro package, a number of supplied macro packages,
 and in particular those associated with the package
-.BR pdfmark.tmac ,
+.IR pdfmark.tmac ,
 are best suited for use with
-.BR pdfroff
+.B pdfroff
 as the preferred formatter.
 .
 Detailed documentation on the use of these packages may be found,
 in PDF format, in the reference guide
 .BR "\*(lqPortable Document Format Publishing with GNU Troff\*(rq" ,
 included in the installed documentation set as
-.BR \%@PDFDOCDIR@/pdfmark.pdf .
+.IR @PDFDOCDIR@/pdfmark.pdf .
 .
 .
-.\" --------------------------------------------------------------------
-.SH COPYING
-.\" --------------------------------------------------------------------
-.co
-.\" --------------------------------------------------------------------
-.SH AUTHORS
-.\" --------------------------------------------------------------------
-.au
+.\" Restore compatibility mode (for, e.g., Solaris 10/11).
+.cp \n[pdfroff_C]
 .
 .
-.\" --------------------------------------------------------------------
-.\" EOF / vim: ft=groff / -*- nroff -*-
+.\" ====================================================================
+.\" Local Variables:
+.\" mode: nroff
+.\" End:
+.\" vim: filetype=groff:
index 9e19327..bc8e5eb 100644 (file)
@@ -3,7 +3,7 @@
 #
 # Function: Format PDF Output from groff Markup
 #
-# Copyright (C) 2005-201 Free Software Foundation, Inc.
+# Copyright (C) 2005-2018 Free Software Foundation, Inc.
 # Written by Keith Marshall (keith.d.marshall@ntlworld.com)
 # 
 # This file is part of groff.
@@ -19,7 +19,7 @@
 # for more details.
 # 
 # You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #
 # ------------------------------------------------------------------------------
 #
@@ -38,7 +38,7 @@
 #
 # To ensure that prerequisite helper programs are available, and are
 # executable, a [fairly] portable method of detecting such programs is
-# provided by function `searchpath'.
+# provided by function 'searchpath'.
 #
   searchpath(){
   #
@@ -49,8 +49,8 @@
     do
       for ext in '' '.exe'
       #
-      # try `progname' with all well known extensions
-      # (e.g. Win32 may require `progname.exe')
+      # try 'progname' with all well known extensions
+      # (e.g. Win32 may require 'progname.exe')
       #
       do
         try="$dir/$1$ext"
index 26e9a1a..875a011 100644 (file)
@@ -1,9 +1,8 @@
-.\" -*- nroff -*-
 .ig
 
 spdf.tmac
 
-Copyright (C) 2004-201 Free Software Foundation, Inc.
+Copyright (C) 2004-2018 Free Software Foundation, Inc.
      Written by Keith Marshall (keith.d.marshall@ntlworld.com)
 
 This file is part of groff.
@@ -19,7 +18,7 @@ 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 <http://www.gnu.org/licenses/>.
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 ..
 .\"
@@ -220,5 +219,8 @@ The content for this section is not yet available.
 .\" as an addendum to this macro.
 .
 .pdfhref I -PT pg@bottom
-.\"
-.\" spdf.tmac: end of file: vim: ft=groff
+.\" Local Variables:
+.\" mode: nroff
+.\" End:
+.\" vim: filetype=groff:
+.\" spdf.tmac: end of file
diff --git a/contrib/pic2graph/pic2graph.1.man b/contrib/pic2graph/pic2graph.1.man
new file mode 100644 (file)
index 0000000..a190627
--- /dev/null
@@ -0,0 +1,204 @@
+.TH PIC2GRAPH @MAN1EXT@ "@MDATE@" "groff @VERSION@"
+.SH NAME
+pic2graph \- convert a PIC diagram into a cropped image
+.
+.
+.\" ====================================================================
+.\" Legal Terms
+.\" ====================================================================
+.\"
+.\" This documentation is released to the public domain.
+.
+.
+.\" ====================================================================
+.SH SYNOPSIS
+.\" ====================================================================
+.
+.SY pic2graph
+.OP \-unsafe
+.OP \-format output-format
+.OP \-eqn delimiters
+.RI [ convert-arguments ]
+.YS
+.
+.SY pic2graph
+.B \-\-help
+.YS
+.
+.SY pic2graph
+.B \-v
+.SY pic2graph
+.B \-\-version
+.YS
+.
+.
+.\" ====================================================================
+.SH DESCRIPTION
+.\" ====================================================================
+.
+.I pic2graph
+reads a
+.IR @g@pic (@MAN1EXT@)
+program from the standard input and writes an image file,
+by default in Portable Network Graphics (PNG) format,
+to the standard output.
+.
+It furthermore translates
+.IR @g@eqn (@MAN1EXT@)
+constructs, so it can be used for generating images of mathematical
+formulae.
+.
+.
+.PP
+The input PIC code should
+.I not
+be wrapped with the
+.B \&.PS
+and
+.B \&.PE
+macros that normally guard it within
+.IR groff (@MAN1EXT@)
+documents.
+.
+.
+.\" FIXME: How old?  This text hasn't been touched since 2008 at latest.
+.\" Older versions of
+.\" .I \%convert
+.\" will produce a black-on-white graphic; newer ones may produce a
+.\" black-on-transparent graphic.
+.
+.PP
+Arguments not recognized by
+.I pic2graph
+are passed to the ImageMagick or GraphicsMagick program
+.IR \%convert (1).
+.
+.
+By specifying these, you can give your image a border,
+.\" Transparent backgrounds are the default in 2018.
+.\" force the background transparent,
+set the image's pixel density,
+or perform other useful transformations.
+.
+.
+.PP
+The output image is clipped using
+.IR \%convert 's
+.B \-trim
+option to the smallest possible bounding box that contains all the black
+pixels.
+.
+.
+.\" ====================================================================
+.SH OPTIONS
+.\" ====================================================================
+.
+.TP
+.BI "\-eqn " delimiters
+Use
+.I delimiters
+as the opening and closing
+characters that delimit
+.I @g@eqn
+directives;
+the default is \(lq$$\(rq.
+.
+The option argument
+.I delimiters
+should be a two-character string,
+but an empty string (\(dq\(dq) is accepted as a directive to disable
+.I @g@eqn
+processing.
+.
+.
+.TP
+.BI "\-format " output-format
+Write the image in
+.IR output-format ,
+which must be understood by
+.IR \%convert ;
+the default is PNG.
+.
+.
+.TP
+.B \-\-help
+Display a usage message and exit.
+.
+.
+.TP
+.B \-unsafe
+Run
+.I groff
+in
+.I unsafe
+mode, enabling the PIC command
+.B sh
+to execute arbitrary Unix shell commands.
+.
+The
+.I groff
+default is to forbid this.
+.
+.
+.TP
+.B \-v
+.TQ
+.B \-\-version
+Display version information and exit.
+.
+.
+.\" ====================================================================
+.SH ENVIRONMENT
+.\" ====================================================================
+.
+.TP
+.I \%GROFF_TMPDIR
+.TQ
+.I \%TMPDIR
+.TQ
+.I TMP
+.TQ
+.I TEMP
+These environment variables are searched in the given order to determine
+the directory where temporary files will be created.
+.
+If none are set,
+.I /tmp
+is used.
+.
+.
+.\" ====================================================================
+.SH AUTHORS
+.\" ====================================================================
+.
+.I pic2graph
+was written by
+.MT esr@\:thyrsus.com
+Eric S.\& Raymond
+.ME ,
+based on a recipe by W.\& Richard Stevens.
+.
+.
+.\" ====================================================================
+.SH "SEE ALSO"
+.\" ====================================================================
+.
+W.\& Richard Stevens,
+.UR http://\:www.kohala.com/\:start/\:troff/\:pic2html.html
+.I Turning PIC into HTML
+.UE
+.
+.
+.PP
+.IR eqn2graph (@MAN1EXT@),
+.IR grap2graph (@MAN1EXT@),
+.IR @g@pic (@MAN1EXT@),
+.IR @g@eqn (@MAN1EXT@),
+.IR groff (@MAN1EXT@),
+.IR \%convert (1)
+.
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" End:
+.\" vim: set filetype=groff:
similarity index 51%
rename from Makefile.man
rename to contrib/pic2graph/pic2graph.am
index 8761dab..502b756 100644 (file)
@@ -1,5 +1,6 @@
-# Copyright (C) 1992-2014 Free Software Foundation, Inc.
-#      Written by James Clark (jjc@jclark.com)
+# Copyright (C) 2001-2018 Free Software Foundation, Inc.
+#
+# Last update: 22 Aug 2015
 #
 # This file is part of groff.
 #
 # for more details.
 #
 # You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #
-# Makefile.man
+# pic2graph.am
 #
-all: $(MANPAGES)
-install_data: install_man
-install_man: $(MANPAGES)
-uninstall_sub: uninstall_man
-$(top_builddir)/stamp-h $(MANPAGES): $(top_srcdir)/VERSION \
-               $(top_srcdir)/REVISION
+
+pic2graph_srcdir = $(top_srcdir)/contrib/pic2graph
+man1_MANS += contrib/pic2graph/pic2graph.1
+bin_SCRIPTS += pic2graph
+EXTRA_DIST += \
+  contrib/pic2graph/pic2graph.sh \
+  contrib/pic2graph/pic2graph.1.man
+
+pic2graph: $(pic2graph_srcdir)/pic2graph.sh
+       $(AM_V_GEN)sed -e "s|[@]g[@]|$(g)|g" \
+           -e "s|[@]VERSION[@]|$(VERSION)|" \
+           -e $(SH_SCRIPT_SED_CMD) $(pic2graph_srcdir)/pic2graph.sh \
+           >$@ \
+       && chmod +x $@
+
 
 ########################################################################
-# Emacs settings
-########################################################################
-#
+### Emacs settings
 # Local Variables:
-# mode: makefile
+# mode: makefile-automake
 # End:
diff --git a/contrib/pic2graph/pic2graph.man b/contrib/pic2graph/pic2graph.man
deleted file mode 100644 (file)
index 4436e63..0000000
+++ /dev/null
@@ -1,238 +0,0 @@
-.TH PIC2GRAPH @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
-.SH NAME
-pic2graph \- convert a PIC diagram into a cropped image
-.
-.
-.\" --------------------------------------------------------------------
-.\" Legalese
-.\" --------------------------------------------------------------------
-.
-.de co
-This documentation is released to the public domain.
-..
-.
-.de au
-.ME esr@thyrsus.com
-Eric S.\& Raymond
-.UE ,
-based on a recipe by W.\& Richard Stevens.
-..
-.
-.\" --------------------------------------------------------------------
-.SH SYNOPSIS
-.\" --------------------------------------------------------------------
-.
-.B pic2graph
-[
-.B \-unsafe
-]
-[
-.BI "\-format " fmt
-]
-[
-.BI "\-eqn " delim
-]
-.
-.
-.\" --------------------------------------------------------------------
-.SH DESCRIPTION
-.\" --------------------------------------------------------------------
-.
-Reads a PIC program as input; produces an image file (by default in
-Portable Network Graphics format) suitable for the Web as output.
-.
-Also translates
-.BR @g@eqn (@MAN1EXT@)
-constructs, so it can be used for generating images of mathematical
-formulae.
-.
-.
-.P
-PIC is a rather expressive graphics minilanguage suitable for
-producing box-and-arrow diagrams of the kind frequently used in
-technical papers and textbooks.
-.
-The language is sufficiently flexible to be quite useful for state
-charts, Petri-net diagrams, flow charts, simple circuit schematics,
-jumper layouts, and other kinds of illustration involving repetitive
-uses of simple geometric forms and splines.
-.
-Because PIC descriptions are procedural and object-based, they are
-both compact and easy to modify.
-.
-.
-.P
-The PIC language is fully documented in
-.IR "Making Pictures With GNU PIC" ,
-a document which is part of the
-.BR groff (@MAN1EXT@)
-distribution.
-.
-.
-.P
-Your input PIC code should
-.I not
-be wrapped with the \&.PS and \&.PE macros that normally guard it within
-.BR groff (@MAN1EXT@)
-macros.
-.
-.
-.P
-The output image will be clipped to the smallest possible bounding box
-that contains all the black pixels.
-.
-Older versions of
-.BR \%convert (1)
-will produce a black-on-white graphic; newer ones may produce a
-black-on-transparent graphic.
-.
-By specifying command-line options to be passed to
-.BR \%convert (1)
-you can give it a border, force the background transparent, set the
-image\[aq]s pixel density, or perform other useful transformations.
-.
-.
-.P
-This program uses
-.BR @g@pic (@MAN1EXT@),
-.BR @g@eqn (@MAN1EXT@),
-.BR groff (@MAN1EXT@),
-.BR gs (1),
-and the ImageMagick
-.BR \%convert (1)
-program.
-These programs must be installed on your system and accessible on your
-$PATH for
-.B pic2graph
-to work.
-.
-.
-.\" --------------------------------------------------------------------
-.SH OPTIONS
-.\" --------------------------------------------------------------------
-.
-.TP
-.B \-unsafe
-Run
-.BR @g@pic (@MAN1EXT@)
-and
-.BR groff (@MAN1EXT@)
-in the \[oq]unsafe\[cq] mode enabling the PIC macro
-.B sh
-to execute arbitrary commands.
-.
-The default is to forbid this.
-.
-.TP
-.BI "\-format " fmt
-Specify an output format; the default is PNG (Portable Network Graphics).
-.
-Any format that
-.BR \%convert (1)
-can emit is supported.
-.
-.TP
-.BI "\-eqn " delim
-Change the fencepost characters that delimit
-.BR @g@eqn (@MAN1EXT@)
-directives
-.RB ( $
-and
-.BR $ ,
-by default).
-.
-This option requires an argument, but an empty string is accepted as a
-directive to disable
-.BR @g@eqn (@MAN1EXT@)
-processing.
-.
-.
-.PP
-Command-line switches and arguments not listed above are passed to
-.BR \%convert (1).
-.
-.
-.\" --------------------------------------------------------------------
-.SH FILES
-.\" --------------------------------------------------------------------
-.
-.TP \w'\fB@MACRODIR@/eqnrc'u+2n
-.B @MACRODIR@/eqnrc
-The
-.BR @g@eqn (@MAN1EXT@)
-initialization file.
-.
-.
-.\" --------------------------------------------------------------------
-.SH ENVIRONMENT
-.\" --------------------------------------------------------------------
-.
-.TP
-.B GROFF_TMPDIR
-The directory in which temporary files will be created.
-.
-If this is not set
-.B pic2graph
-searches the environment variables
-.BR \%TMPDIR ,
-.BR TMP ,
-and
-.B TEMP
-(in that order).
-.
-Otherwise, temporary files will be created in
-.BR /tmp .
-.
-.
-.\" --------------------------------------------------------------------
-.SH BUGS
-.\" --------------------------------------------------------------------
-.
-Due to changes in the behavior of ImageMagick
-.BR \%convert (1)
-that are both forward and backward-incompatible,
-mismatches between your
-.B pic2graph
-and
-.BR \%convert (1)
-versions may produce zero-sized or untrimmed output images.
-.
-For this version of
-.B pic2graph
-you will need a version of
-.BR \%convert (1)
-that supports the
-.B \-trim
-option; older versions of
-.B pic2graph
-used
-.BR \-crop\~0x0 ,
-which no longer has trimming behavior.
-.
-.
-.\" --------------------------------------------------------------------
-.SH "SEE ALSO"
-.\" --------------------------------------------------------------------
-.
-.BR eqn2graph (@MAN1EXT@),
-.BR grap2graph (@MAN1EXT@),
-.BR @g@pic (@MAN1EXT@),
-.BR @g@eqn (@MAN1EXT@),
-.BR groff (@MAN1EXT@),
-.BR gs (1),
-.BR \%convert (1).
-.
-.
-.\" --------------------------------------------------------------------
-.SH COPYING
-.\" --------------------------------------------------------------------
-.co
-.\" --------------------------------------------------------------------
-.SH AUTHORS
-.\" --------------------------------------------------------------------
-.au
-.
-.
-.\" Local Variables:
-.\" mode: nroff
-.\" End:
index 72c5477..b229914 100644 (file)
@@ -33,8 +33,8 @@
 # intended as a pic translator; we can live with eqn defaults. 
 #
 groffpic_opts=""
-gs_opts=""
 convert_opts=""
+convert_trim_arg="-trim"
 format="png"
 eqndelim='$$'
 
@@ -68,23 +68,45 @@ fi
 
 # create temporary directory
 tmp=
-for d in "$GROFF_TMPDIR" "$TMPDIR" "$TMP" "$TEMP" /tmp; do
-    test -z "$d" && continue
+for d in "$GROFF_TMPDIR" "$TMPDIR" "$TMP" "$TEMP" /tmp
+do
+    test -n "$d" && break
+done
 
-    tmp=`(umask 077 && mktemp -d -q "$d/pic2graph-XXXXXX") 2> /dev/null` \
-    && test -n "$tmp" && test -d "$tmp" \
-    && break
+if ! test -d "$d"
+then
+    echo "$0: error: temporary directory \"$d\" does not exist or is" \
+        "not a directory" >&2
+    exit 1
+fi
 
-    tmp=$d/pic2graph$$-$RANDOM
-    (umask 077 && mkdir $tmp) 2> /dev/null \
-    && break
-done;
-if test -z "$tmp"; then
-    echo "$0: cannot create temporary directory" >&2
-    { (exit 1); exit 1; }
+if ! tmp=`(umask 077 && mktemp -d -q "$d/pic2graph-XXXXXX") 2> /dev/null`
+then
+    # mktemp failed--not installed or is a version that doesn't support those
+    # flags?  Fall back to older method which uses more predictable naming.
+    #
+    # $RANDOM is a Bashism.  The fallback of $PPID is not good pseudorandomness,
+    # but is supported by the stripped-down dash shell, for instance.
+    tmp="$d/pic2graph$$-${RANDOM:-$PPID}"
+    (umask 077 && mkdir "$tmp") 2> /dev/null
+fi
+
+if ! test -d "$tmp"
+then
+    echo "$0: error: cannot create temporary directory \"$tmp\"" >&2
+    exit 1
+fi
+
+# See if the installed version of convert(1) is new enough to support the -trim
+# option.  Versions that didn't were described as "old" as early as 2008.
+is_convert_recent=`convert -help | grep -e -trim`
+if test -z "$is_convert_recent"
+then
+    echo "$0: warning: falling back to old '-crop 0x0' trim method" >&2
+    convert_trim_arg="-crop 0x0"
 fi
 
-trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' EXIT INT TERM
+trap 'exit_status=$?; rm -rf "$tmp" && exit $exit_status' EXIT INT TERM
 
 # Here goes:
 # 1. Wrap the input in dummy .PS/PE macros (and add possibly null .EQ/.EN)
@@ -92,8 +114,9 @@ trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' EXIT INT TERM
 # 3. Process through groff to emit Postscript.
 # 4. Use convert(1) to crop the PostScript and turn it into a bitmap.
 (echo ".EQ"; echo $eqndelim; echo ".EN"; echo ".PS"; cat; echo ".PE") | \
-    groff -e -p $groffpic_opts -Tps -P-pletter > $tmp/pic2graph.ps \
-    && convert -trim $convert_opts $tmp/pic2graph.ps $tmp/pic2graph.$format \
-    && cat $tmp/pic2graph.$format
+    groff -e -p $groffpic_opts -Tps -P-pletter > "$tmp"/pic2graph.ps \
+    && convert $convert_trim_arg $convert_opts "$tmp"/pic2graph.ps \
+       "$tmp"/pic2graph.$format \
+    && cat "$tmp"/pic2graph.$format
 
 # End
diff --git a/doc/Makefile.in b/doc/Makefile.in
deleted file mode 100644 (file)
index 759b4b2..0000000
+++ /dev/null
@@ -1,177 +0,0 @@
-# Copyright (C) 2002-2014  Free Software Foundation, Inc.
-#      Written by Werner Lemberg <wl@gnu.org>
-#
-# This file is part of groff.
-#
-# groff 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.
-#
-# groff 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 <http://www.gnu.org/licenses/>.
-
-
-# Use this file to produce documentation in various formats; e.g. you can
-# say
-#
-#   make groff.pdf
-#
-# to get the groff texinfo manual as a PDF file.
-#
-# Note that you have to compile the groff package first.
-
-
-srcdir=@srcdir@
-top_srcdir=@abs_top_srcdir@
-VPATH=@srcdir@
-top_builddir=@abs_top_builddir@
-pnmtops=@pnmtops_nosetpage@
-
-# These may be overridden if cross-compiling.
-TROFFBIN=$(top_builddir)/src/roff/troff/troff
-GROFFBIN=$(top_builddir)/src/roff/groff/groff
-GROFF_BIN_PATH=`echo $(groff_bin_dirs) \
-                | LANG=C LC_ALL=C sed -e 's|  *|:|g'`
-
-# info files are distributed with the groff package, so makeinfo is
-# usually not needed (however, to build from the repo you NEED it!)
-MAKEINFO=@MAKEINFO@
-
-# Users who want to print out the groff manual are expected to have a
-# working TeX installation.  Note that texi2dvi properly honours the
-# `MAKEINFO' environment variable.
-TEXI2DVI=texi2dvi
-
-groff_bin_dirs=\
-  $(top_builddir)/src/roff/groff \
-  $(top_builddir)/src/roff/troff \
-  $(top_builddir)/src/preproc/preconv \
-  $(top_builddir)/src/preproc/pic \
-  $(top_builddir)/src/preproc/eqn \
-  $(top_builddir)/src/preproc/tbl \
-  $(top_builddir)/src/preproc/grn \
-  $(top_builddir)/src/preproc/refer \
-  $(top_builddir)/src/preproc/soelim \
-  $(top_builddir)/src/preproc/html \
-  $(top_builddir)/src/devices/grops \
-  $(top_builddir)/src/devices/gropdf \
-  $(top_builddir)/src/devices/grodvi \
-  $(top_builddir)/src/devices/grotty \
-  $(top_builddir)/src/devices/grolj4 \
-  $(top_builddir)/src/devices/grolbp \
-  $(top_builddir)/src/devices/grohtml
-
-version=`cat $(top_srcdir)/VERSION`
-# No additional number if revision is zero.
-revision=`sed -e 's/^0$$//' -e 's/^[1-9].*$$/.&/' $(top_srcdir)/REVISION`
-
-FFLAG=-F$(top_builddir)/font -F$(top_srcdir)/font
-TFLAG=-M$(top_builddir)/tmac -M$(top_srcdir)/tmac
-
-TROFF=$(TROFFBIN) $(TFLAG) $(FFLAG) -ww
-GROFF=\
-  LANG=C \
-  LC_ALL=C \
-  sed -e "s;@VERSION@;$(version)$(revision);" $< \
-    | GROFF_COMMAND_PREFIX= \
-      GROFF_BIN_PATH="$(GROFF_BIN_PATH)" \
-      $(GROFFBIN) $(TFLAG) $(FFLAG) -Upet -ww
-
-imagedir=img
-
-.SUFFIXES: .me .ms .ps .html .txt .texinfo .dvi .pdf .xhtml
-.PHONY: all prepare_examples clean distclean realclean extraclean
-
-# For simplicity, we always call preconv, grn, and eqn.
-.me.txt:
-       $(GROFF) -k -Tutf8 -ge -me >$@
-.me.ps:
-       $(GROFF) -k -Tps -ge -me >$@
-
-.ms.html:
-       $(GROFF) -P-p -P-b -P-I`basename $< | sed -e 's|.ms$$||'` \
-                -P-D$(imagedir) -P-V -Thtml -ms >$@
-.ms.txt:
-       $(GROFF) -Tascii -ms -mwww >$@
-.ms.ps:
-       $(GROFF) -Tps -ms -mwww >$@
-
-.texinfo.txt:
-       LANG=C \
-       LC_ALL=C \
-       $(MAKEINFO) --enable-encoding -I$(srcdir) --plaintext -o $@ $<
-.texinfo.dvi:
-       LANG=C \
-       LC_ALL=C \
-       MAKEINFO=$(MAKEINFO) $(TEXI2DVI) -e $<
-.texinfo.pdf:
-       LANG=C \
-       LC_ALL=C \
-       MAKEINFO=$(MAKEINFO) $(TEXI2DVI) -e --pdf $<
-.texinfo.html:
-       LANG=C \
-       LC_ALL=C \
-       $(MAKEINFO) --enable-encoding -I$(srcdir) --html --no-split $< \
-         && $(SHELL) $(srcdir)/fixinfo.sh $@
-
-all: prepare_examples
-
-prepare_examples: grnexmpl.g groff.css
-       test -f grnexmpl.g || cp $(srcdir)/grnexmpl.g .
-       test -f groff.css || cp $(srcdir)/groff.css .
-
-groff.info: groff.texinfo
-       $(MAKEINFO) --enable-encoding -I$(srcdir) $(srcdir)/groff.texinfo
-
-gnu.eps: gnu.xpm
-       xpmtoppm $(srcdir)/gnu.xpm | pnmdepth 15 | $(pnmtops) -noturn >$@
-
-pic.html: pic.ms
-       $(GROFF) -P-p -P-I`basename $< | sed -e 's|.ms$$||'` \
-                -P-D$(imagedir) -P-j`basename $< | sed -e 's|.ms$$||'` \
-                -Thtml -P-V -ms >$@
-
-webpage.html: webpage.ms gnu.eps groff.css
-       $(GROFF) -P-j`basename $< | sed -e 's|.ms$$||'` \
-                -P-nrpb -P-I`basename $< | sed -e 's|.ms$$||'` \
-                -P-D$(imagedir) -Thtml -ms >$@
-
-webpage.ps: gnu.eps
-
-grnexmpl.ps: grnexmpl.me grnexmpl.g
-
-split-html:
-       LANG=C \
-       LC_ALL=C \
-       $(MAKEINFO) --enable-encoding -I$(srcdir) --html groff.texinfo \
-         && for f in groff/*; do $(SHELL) $(srcdir)/fixinfo.sh $$f; done
-
-clean:
-       rm -f *.ps *.html *.txt core
-       rm -f *.aux *.dvi *.pdf *.log *.toc texput.log
-       rm -f *.cp *.cps *.cv *.cn *.es *.ess *.fn *.fns *.ky *.kys \
-             *.ma *.mas *.op *.ops *.pg *.pgs *.rq *.rqs *.st *.sts \
-             *.tp *.tps *.tr *.vr *.vrs *.xhtml
-       -rm -rf img
-
-distclean: clean
-
-realclean: distclean
-       rm -f *.png *.eps
-
-extraclean: distclean
-       rm -f core *~ \#* junk temp grot
-
-########################################################################
-# Emacs settings
-########################################################################
-#
-# Local Variables:
-# mode: makefile
-# End:
diff --git a/doc/Makefile.sub b/doc/Makefile.sub
deleted file mode 100644 (file)
index b2325f9..0000000
+++ /dev/null
@@ -1,296 +0,0 @@
-# Copyright (C) 2002-2014  Free Software Foundation, Inc.
-#      Written by Werner Lemberg <wl@gnu.org>
-#
-# This file is part of groff.
-#
-# groff 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.
-#
-# groff 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 <http://www.gnu.org/licenses/>.
-
-# These may be overridden if cross-compiling.
-GROFFBIN=$(top_builddir)/src/roff/groff/groff
-GROFF_BIN_PATH=`echo $(groff_bin_dirs) | sed -e 's|  *|$(SH_SEP)|g'`
-
-groff_bin_dirs=\
-  $(top_builddir)/src/roff/groff \
-  $(top_builddir)/src/roff/troff \
-  $(top_builddir)/src/preproc/preconv \
-  $(top_builddir)/src/preproc/pic \
-  $(top_builddir)/src/preproc/eqn \
-  $(top_builddir)/src/preproc/tbl \
-  $(top_builddir)/src/preproc/grn \
-  $(top_builddir)/src/preproc/refer \
-  $(top_builddir)/src/preproc/soelim \
-  $(top_builddir)/src/preproc/html \
-  $(top_builddir)/src/devices/grops \
-  $(top_builddir)/src/devices/gropdf \
-  $(top_builddir)/src/devices/grohtml
-
-FFLAG=-F$(top_builddir)/font -F$(top_srcdir)/font
-TFLAG=-M$(top_builddir)/tmac -M$(top_srcdir)/tmac
-
-GROFF=\
-  sed -e "s;@VERSION@;$(version)$(revision);" $< \
-  | GROFF_COMMAND_PREFIX= \
-    GROFF_BIN_PATH="$(GROFF_BIN_PATH)" \
-    $(GROFFBIN) $(TFLAG) $(FFLAG) -Upet -ww
-
-DOCFILES=\
-  meref.me \
-  meintro.me \
-  meintro_fr.me \
-  pic.ms
-
-PROCESSEDDOCFILES=\
-  meref.ps \
-  meintro.ps \
-  meintro_fr.ps \
-  pic.ps
-
-HTMLDOCFILES=\
-  pic.html
-
-HTMLDOCFILESALL=\
-  pic*.html
-
-HTMLDOCIMAGEFILES=\
-  pic*
-
-EXAMPLEFILES=\
-  webpage.ms \
-  groff.css \
-  grnexmpl.g \
-  grnexmpl.me
-
-PROCESSEDEXAMPLEFILES=\
-  webpage.ps \
-  grnexmpl.ps
-
-HTMLEXAMPLEFILES=\
-  webpage.html
-
-HTMLEXAMPLEFILESALL=\
-  webpage*.html
-
-HTMLEXAMPLEIMAGEFILES=\
-  webpage*
-
-imagedir=img
-htmldocimagedir=$(htmldocdir)/$(imagedir)
-exampleimagedir=$(exampledir)/$(imagedir)
-
-MOSTLYCLEANADD=\
-  $(PROCESSEDDOCFILES) \
-  $(PROCESSEDEXAMPLEFILES) \
-  $(HTMLEXAMPLEFILESALL) \
-  $(HTMLDOCFILESALL) \
-  groff.aux groff.cp* groff.dvi groff.es* groff.fn* groff.html groff.ky* \
-  groff.log groff.ma* groff.op* groff.pdf groff.pg* groff.ps groff.rq* \
-  groff.st* groff.toc groff.tp groff.vr* \
-  examples.stamp
-
-MOSTLYCLEANDIRADD=\
-  $(imagedir)
-
-MOSTLYCLEANNOTSRCDIRADD=\
-  groff.css \
-  grnexmpl.g \
-  groff.info \
-  groff-*.info \
-  gnu.eps
-
-RM=rm -f
-
-.SUFFIXES: .me .ms .ps .html
-
-# For simplicity, we always call preconv, grn, and eqn.
-.me.ps:
-       $(GROFF) -k -Tps -ge -me >$@
-
-.ms.html:
-       $(GROFF) -P-p -P-b -P-I`basename $< | sed -e 's|.ms$$||'` \
-                -P-D$(imagedir) -P-V -Thtml -ms >$@
-.ms.ps:
-       $(GROFF) -Tps -ms -mwww >$@
-
-all: $(make_otherdoc) \
-     $(make_infodoc) \
-     $(make_htmldoc) \
-     $(make_examples) \
-     $(make_htmlexamples)
-
-otherdoc: $(PROCESSEDDOCFILES)
-infodoc: groff.info
-htmldoc: $(HTMLDOCFILES)
-
-examples: examples.stamp $(PROCESSEDEXAMPLEFILES)
-
-html_examples: $(HTMLEXAMPLEFILES)
-
-examples.stamp: grnexmpl.g groff.css gnu.eps
-       test -f grnexmpl.g || cp $(srcdir)/grnexmpl.g .
-       test -f groff.css || cp $(srcdir)/groff.css .
-       if test ! -f gnu.eps; then \
-         if test -f $(srcdir)/gnu.eps; then \
-           cp $(srcdir)/gnu.eps .; \
-         elif test -f $(top_builddir)/contrib/pdfmark/gnu.eps; then \
-           cp $(top_builddir)/contrib/pdfmark/gnu.eps .; \
-         fi; \
-       fi
-       echo timestamp > $@
-
-groff.info: groff.texinfo
-       $(MAKEINFO) --enable-encoding -I$(srcdir) $(srcdir)/groff.texinfo
-
-gnu.eps: gnu.xpm
-       xpmtoppm $(srcdir)/gnu.xpm | pnmdepth 15 \
-         | $(pnmtops_nosetpage) -noturn -rle >$@
-
-pic.html: pic.ms
-       $(GROFF) -P-p -P-I`basename $< | sed -e 's|.ms$$||'` \
-                -P-D$(imagedir) -P-j`basename $< | sed -e 's|.ms$$||'` \
-                -Thtml -P-V -ms >$@
-
-webpage.html: webpage.ms gnu.eps groff.css
-       $(GROFF) -P-j`basename $< | sed -e 's|.ms$$||'` \
-                -P-nrpb -P-I`basename $< | sed -e 's|.ms$$||'` \
-                -P-D$(imagedir) -Thtml -ms >$@
-
-webpage.ps: gnu.eps
-
-grnexmpl.ps: grnexmpl.me grnexmpl.g
-
-distfiles: groff.info gnu.eps
-
-install_data: install_always $(make_install_otherdoc) \
-             $(make_install_infodoc) $(make_install_htmldoc) \
-             $(make_install_examples)
-
-install_always:
-       -test -d $(DESTDIR)$(docdir) || $(mkinstalldirs) $(DESTDIR)$(docdir)
-
-install_otherdoc: install_always $(DOCFILES) $(PROCESSEDDOCFILES)
-       for f in $(DOCFILES); do \
-         $(RM) $(DESTDIR)$(docdir)/$$f; \
-         $(INSTALL_DATA) $(srcdir)/$$f $(DESTDIR)$(docdir)/$$f; \
-       done
-       for f in $(PROCESSEDDOCFILES); do \
-         $(RM) $(DESTDIR)$(docdir)/$$f; \
-         $(INSTALL_DATA) $$f $(DESTDIR)$(docdir)/$$f; \
-       done
-
-install_infodoc: install_always groff.info
-# Prefer info files in builddir over srcdir; we test for
-# the existence of `groff.info'.
-       -test -d $(DESTDIR)$(infodir) || $(mkinstalldirs) $(DESTDIR)$(infodir)
-       d=.; test -f "groff.info" || d=$(srcdir); \
-         for p in $$d/groff.info `ls $$d/groff.info*`; do \
-           f=`basename $$p`; \
-           $(RM) $(DESTDIR)$(infodir)/$$f; \
-           $(INSTALL_DATA) $$p $(DESTDIR)$(infodir)/$$f; \
-         done
-       $(INSTALL_INFO) --info-dir=$(DESTDIR)$(infodir) \
-         $(DESTDIR)$(infodir)/groff.info
-
-install_htmldoc: install_always $(HTMLDOCFILES)
-       -test -d $(DESTDIR)$(htmldocdir) \
-         || $(mkinstalldirs) $(DESTDIR)$(htmldocdir)
-       for f in `ls $(HTMLDOCFILESALL)`; do \
-         $(RM) $(DESTDIR)$(htmldocdir)/$$f; \
-         $(INSTALL_DATA) $$f $(DESTDIR)$(htmldocdir)/$$f; \
-       done
-       -test -d $(DESTDIR)$(htmldocimagedir) \
-         || $(mkinstalldirs) $(DESTDIR)$(htmldocimagedir)
-       $(RM) $(DESTDIR)$(htmldocimagedir)/$(HTMLDOCIMAGEFILES)
-       $(INSTALL_DATA) $(imagedir)/$(HTMLDOCIMAGEFILES) \
-         $(DESTDIR)$(htmldocimagedir)
-
-install_examples: install_always install_examples_always \
-                 $(make_install_htmlexamples)
-
-install_examples_always: gnu.eps $(EXAMPLEFILES) $(PROCESSEDEXAMPLEFILES)
-# Prefer gnu.eps in builddir over srcdir.
-       -test -d $(DESTDIR)$(exampledir) \
-         || $(mkinstalldirs) $(DESTDIR)$(exampledir)
-       d=.; test -f "gnu.eps" || d=$(srcdir); \
-         $(RM) $(DESTDIR)$(exampledir)/gnu.eps; \
-         $(INSTALL_DATA) $$d/gnu.eps $(DESTDIR)$(exampledir)/gnu.eps
-       for f in $(EXAMPLEFILES); do \
-         $(RM) $(DESTDIR)$(exampledir)/$$f; \
-         $(INSTALL_DATA) $(srcdir)/$$f $(DESTDIR)$(exampledir)/$$f; \
-       done
-       for f in $(PROCESSEDEXAMPLEFILES); do \
-         $(RM) $(DESTDIR)$(exampledir)/$$f; \
-         $(INSTALL_DATA) $$f $(DESTDIR)$(exampledir)/$$f; \
-       done
-
-install_htmlexamples: install_examples_always $(HTMLEXAMPLEFILES)
-       for f in `ls $(HTMLEXAMPLEFILESALL)`; do \
-         $(RM) $(DESTDIR)$(exampledir)/$$f; \
-         $(INSTALL_DATA) $$f $(DESTDIR)$(exampledir)/$$f; \
-       done
-       -test -d $(DESTDIR)$(exampleimagedir) \
-         || $(mkinstalldirs) $(DESTDIR)$(exampleimagedir)
-       $(RM) $(DESTDIR)$(exampleimagedir)/$(HTMLEXAMPLEIMAGEFILES)
-       $(INSTALL_DATA) $(imagedir)/$(HTMLEXAMPLEIMAGEFILES) \
-         $(DESTDIR)$(exampleimagedir)
-
-uninstall_sub: uninstall_always \
-               $(make_uninstall_infodoc) $(make_uninstall_htmldoc) \
-               $(make_uninstall_examples)
-
-uninstall_always:
-       -for f in $(DOCFILES) $(PROCESSEDDOCFILES); do \
-         $(RM) $(DESTDIR)$(docdir)/$$f; \
-       done
-
-uninstall_infodoc: uninstall_always
-       -$(INSTALL_INFO) --remove --info-dir=$(DESTDIR)$(infodir) \
-         $(DESTDIR)$(infodir)/groff.info
-       -for f in groff `ls groff.info*`; do \
-         $(RM) $(DESTDIR)$(infodir)/$$f; \
-       done
-
-uninstall_htmldoc: uninstall_always
-       -for f in `ls $(HTMLDOCFILESALL)`; do \
-         $(RM) $(DESTDIR)$(htmldocdir)/$$f; \
-       done
-       $(RM) $(DESTDIR)$(htmldocimagedir)/$(HTMLDOCIMAGEFILES)
-       -test -d $(DESTDIR)$(htmldocimagedir) && \
-         rmdir $(DESTDIR)$(htmldocimagedir)
-
-uninstall_examples: uninstall_always uninstall_examples_always \
-                   $(make_uninstall_htmlexamples)
-       -test -d $(DESTDIR)$(exampledir) && \
-         rmdir $(DESTDIR)$(exampledir)
-
-uninstall_examples_always:
-       -for f in $(EXAMPLEFILES) $(PROCESSEDEXAMPLEFILES); do \
-         $(RM) $(DESTDIR)$(exampledir)/$$f; \
-       done
-       $(RM) $(DESTDIR)$(exampledir)/gnu.eps
-
-uninstall_htmlexamples: uninstall_examples_always
-       -for f in `ls $(HTMLEXAMPLEFILESALL)`; do \
-         $(RM) $(DESTDIR)$(exampledir)/$$f; \
-       done
-       $(RM) $(DESTDIR)$(exampleimagedir)/$(HTMLEXAMPLEIMAGEFILES)
-       -test -d $(DESTDIR)$(exampleimagedir) && \
-         rmdir $(DESTDIR)$(exampleimagedir)
-
-########################################################################
-# Emacs settings
-########################################################################
-#
-# Local Variables:
-# mode: makefile
-# End:
diff --git a/doc/automake.mom b/doc/automake.mom
new file mode 100644 (file)
index 0000000..ed30b15
--- /dev/null
@@ -0,0 +1,785 @@
+.\" -*- mode: text; coding: utf-8; -*-
+.\"
+.\" Copyright ©2014, 2017 Free Software Foundation
+.\" 51 Franklin St, Fifth Floor, Boston, MA 02110, USA
+.\"
+.\" Permission is hereby granted, free of charge, to any person
+.\" obtaining a copy of this software and associated documentation
+.\" files (the "Software"), to deal in the Software without restriction,
+.\" including, without limitation, the rights to use, copy, modify,
+.\" merge, publish, distribute, sublicense, and sell copies of
+.\" the Software, and to permit persons to whom the Software is
+.\" furnished to do so, subject to the following conditions:
+.\" 
+.\" The above copyright notice and this permission notice shall be
+.\" included in all copies, or substantial portions, of the Software;
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS," WITHOUT WARRANTY OF ANY KIND,
+.\" EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+.\" OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND
+.\" NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+.\" HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES, OR OTHER LIABILITY,
+.\" WHETHER IN AN ACTION OF CONTRACT, TORT, OR OTHERWISE, ARISING
+.\" FROM, OUT OF, OR IN CONNECTION WITH, THE SOFTWARE, OR THE USE OF,
+.\" OR OTHER DEALINGS IN, THE SOFTWARE.
+.\"
+.\"  Formatted with the mom macros
+.\" .RW (reduce) and .EW (expand) control track kerning
+.\" .WS controls word spacing
+.\"  Hanging punctuation and hyphens are inserted manually
+.\"
+.TITLE     "Using Automake in the Groff project"
+.AUTHOR    "Bertrand Garrigues"
+.COPYRIGHT "2014, 2017 Free Software Foundation"
+.COVER     TITLE AUTHOR DOCTYPE COPYRIGHT
+.
+.PAPER      LETTER
+.PRINTSTYLE TYPESET
+.
+.HEADING_STYLE 1 NUMBER
+.HEADING_STYLE 2 NUMBER
+.HEADING_STYLE 3 NUMBER
+.HEADING_STYLE 4 NUMBER
+.
+.QUOTE_INDENT 2m
+.CODE_FONT CB
+.
+\# Table of contents
+.TOC_PADDING 2
+.SPACE_TOC_ITEMS
+.AUTO_RELOCATE_TOC
+.TOC_ENTRY_STYLE 2 FONT I
+.TOC_LEAD 14
+.
+.NO_SHIM \" Flex-spaced
+.
+.START
+.
+.PP
+This is a quick overview of how to use `automake' in the groff
+project, and is intended to help the developers and contributors
+find their way when they have to make changes to the sources files
+or to the data that are installed.  If you need more details on
+`automake', here are some reading suggestions:
+.
+.LEFT
+.SP 3p
+.
+.LIST
+.SHIFT_LIST 1m
+.ITEM
+The Automake Manual:
+\*[FWD 1m]\c
+.PDF_WWW_LINK https://www.gnu.org/software/automake/manual/automake.html
+.SP 3p
+.ITEM
+A book by John Calcote, with good practical examples:
+\*[FWD 1m]\c
+.PDF_WWW_LINK http://fsmsh.com/2753
+.SP 3p
+.ITEM
+This site, by Diego Petteno, with good practical examples too:
+\*[FWD 1m]\c
+.PDF_WWW_LINK https://autotools.io/index.html
+.LIST OFF
+.
+.JUSTIFY
+.HY DEFAULT
+.
+.HEADING 1 "Overview, the initial build"
+.
+.HEADING 2 "First build"
+.
+.PP
+Groff integrates the `gnulib' and uses its `bootstrap' script.  When
+compiling from the git repository, you should first invoke this
+script:
+.QUOTE
+.CODE
+$ ./bootstrap
+.CODE OFF
+.QUOTE OFF
+This will:
+.
+.QUAD LEFT
+.HY OFF
+.
+.LIST
+.SHIFT_LIST 1m
+.ITEM
+.SP 3p
+Clone the gnulib repository as a git submodule in 'gnulib',
+add the needed gnulib sources files in `lib', 
+add the needed gnulib m4 macros in `gnulib_m4'.
+.SP 3p
+.ITEM
+Invoke autoreconf that will call all the `GNU autotools' (`aclocal',
+`autoheader', `autoconf', `automake') in the right order for
+creating the following files:
+.LIST DASH
+.SHIFT_LIST .5m
+.SP 3p
+.ITEM
+INSTALL (a symlink to gnulib's INSTALL file)
+.ITEM
+Makefile.in
+.ITEM
+aclocal.m4
+.ITEM
+autom4te.cache/
+.ITEM
+build-aux/ (that contains all the helper scripts) 
+.ITEM
+configure
+.ITEM
+src/include/config.hin
+.LIST BACK
+.LIST OFF
+.
+.SP 3p
+.JUSTIFY
+.HY DEFAULT
+.
+.WS +2
+.EW .5
+Note that aclocal.m4 is generated and the groff m4 macros are
+included via the acinclude.m4 file.
+.WS DEFAULT
+.EW 0
+.
+.PP  
+At this point you can invoke the `configure' script and call `make'
+to build the groff project.  You can do it in the source tree:
+.QUOTE
+.CODE
+$ ./configure
+$ make
+.CODE OFF
+.QUOTE OFF
+You can also build groff in an out-of-source build tree, which is
+cleaner:
+.QUOTE
+.CODE
+$ mkdir build
+$ cd build
+$ ../configure
+$ make
+.CODE OFF
+.QUOTE OFF
+Note that parallel build is also supported and `make' can be invoked
+with the -j option, which will greatly speed up the build.
+.
+.HEADING 2 "Automake in the autotools process"
+.
+.PP
+Automake's main job is to generate a Makefile.in file (this file is
+maintained manually on projects using only autoconf).  The main file
+processed by `automake' is the Makefile.am file, which eventually
+generates a Makefile.  The (simplified) process is:
+.
+.SP 3p
+.QUAD LEFT
+.HY OFF
+.
+.LIST
+.SHIFT_LIST 1m
+.ITEM
+`aclocal' generates the `aclocal.m4' file from `configure.ac' and
+the user-defined macros in `acinclude.m4'.
+.ITEM
+`autoheader' generates config.h.in.
+.ITEM
+`autoconf' generates the `configure' script from `aclocal.m4' and `configure.ac'
+.ITEM
+`automake' generates Makefile.in from Makefile.am and the
+`configure.ac' file.  It also generates some helper scripts, on the
+groff project they are located in build-aux.
+.ITEM
+`configure' generates `config.status'
+.ITEM
+`config.status' generates the Makefile and config.h.
+.LIST OFF
+.
+.SP 3p
+.JUSTIFY
+.HY DEFAULT
+.
+.WS -2
+.RW .16
+Finally, `autoreconf' is the program that can be used to call these
+various tools in the correct order.
+.RW 0
+.WS DEFAULT
+.
+.PP
+Automake defines a set of special variables that are used to
+generate various build rules in the final Makefile.  Note however
+that if Automake's pre-defined rules are not enough, you still have
+the possibility of adding handwritten standard `make' rules in a
+Makefile.am; these rules will be copied verbatim in the Makefile.in
+and then in the final Makefile.
+.
+.HEADING 2 "Modification of autotools files"
+.
+.PP
+Previously, when groff used `autoconf' only and not `automake',
+you had to invoke manually the autotools, depending on what you
+modified.  For example, to change the file `aclocal.m4', you had
+to run the shell command 'aclocal -I m4'; to recreate the files
+`configure' and `Makefile', you had to use the command 'autoreconf
+- I m4'.
+.PP
+Now, as groff uses `automake', you don't need to run `autoreconf'.
+If you make some changes in Makefile.am or configure.ac, all the
+files that need to be updated will be regenerated when you execute
+`make'.
+.
+.HEADING 1 "Building a program"
+.
+.HEADING 2 "A program and its source files"
+.
+.PP
+Generally speaking, when using `automake' you will have to write a
+Makefile.am file and use the variable \*[CODE]bin_PROGRAMS\*[CODE OFF]
+to declare a program that should be built, and then list the
+sources of this program in a variable that starts with the name of
+your program and ends with \*[CODE]_SOURCES\*[CODE OFF]\&.  In the
+groff project we have only 1 top-level Makefile.am that includes
+several .am files.
+.PP
+Take for example the build of grolbp, in src/devices/grolbp/grolbp.am. 
+The file starts with:
+.QUOTE ADJUST -4p
+.CODE
+bin_PROGRAMS += grolbp
+.CODE OFF
+.QUOTE OFF
+This says that a program named `grolbp' is added to the list of the
+programs that should be built.  Note that \*[CODE]bin_PROGRAMS\*[CODE OFF]
+is initialized to an empty string in the top-level Makefile.am,
+which includes grolbp.am.  (We will see later why we don't write
+directly
+\*[CODE]bin_PROGRAMS\~=\~grolbp\*[CODE OFF] in a Makefile.am in the
+grolbp directory.)
+.PP
+Then, we list the sources of grolbp like this:
+.QUOTE ADJUST -4p
+.IL 1m
+.HI 1m
+.CODE
+grolbp_SOURCES = \\
+src/devices/grolbp/lbp.cpp \\
+src/devices/grolbp/lbp.h \\
+src/devices/grolbp/charset.h
+.CODE OFF
+.QUOTE OFF
+.ILQ
+As you added `grolbp' to \*[CODE]bin_PROGRAMS\*[CODE OFF],
+you need to define the sources of grolbp in the variable
+\*[CODE]grolbp_SOURCES\*[CODE OFF]\&.  If you write in another file
+\*[CODE]bin_PROGRAMS += foo\*[CODE OFF] you will list the sources
+of `foo' in \*[CODE]foo_SOURCES\*[CODE OFF]\&.
+.PP
+With these two statements, the resulting generated Makefile
+will contain everything that is needed to build, clean,
+install and uninstall the `grolbp' binary when invoking the
+adequate `make' command.  Also, the source files listed in
+\*[CODE]grolbp_SOURCES\*[CODE OFF] will automatically be included in
+the distribution tarball.  That is why the headers are also listed
+in \*[CODE]grolbp_SOURCES\*[CODE OFF]: it is not necessary to add
+them in order to correctly build `grolbp', but this way the headers
+will be distributed.  Note that:
+.
+.SP 3p
+.QUAD LEFT
+.HY OFF
+.
+.LIST
+.SHIFT_LIST 1m
+.ITEM
+The path to the files are relative to the top-level directory.
+.ITEM
+The binaries are generated in the top-level build directory.
+.ITEM
+The .o files are generated in the directory where the source files
+are located, or, in the case of an out-of-source build tree, in a
+directory that is the replication of the source tree directory.
+For example if you built groff in a `build' directory, lbp.o
+(object file from src/devices/grolbp/lbp.cpp) will be located in
+build/src/devices/grolbp/lbp.o.
+.LIST OFF
+.
+.SP 3p
+.JUSTIFY
+.HY DEFAULT
+.
+We will also see later the reasons; this is due to the non-recursive
+make design.
+.
+.HEADING 2 "Linking against a library"
+.
+.PP
+To list which libraries grolbp needs to link against, we just write:
+.QUOTE
+.IL
+.HI
+.CODE
+grolbp_LDADD = $(LIBM) \\
+libdriver.a \\
+libgroff.a \\
+lib/libgnu.a
+.CODE OFF
+.QUOTE OFF
+.ILQ
+Again, we use the variable \*[CODE]grolbp_LDADD\*[CODE OFF] because
+we added a program named `grolbp'.  This will also automatically
+set build dependencies between `grolbp' and the libraries it needs:
+`libdriver.a' and `libgroff.a', that are convenience libraries built
+within the groff project, will be compiled before grolbp.
+.
+.HEADING 2 "Preprocessor flags"
+.
+.PP
+Preprocessor flags that are common to all the binaries are listed
+in the variable \*[CODE]AM_CPPFLAGS\*[CODE OFF] in the top-level
+Makefile.am.  If a `foo' binary needs specific preprocessor
+flags, use \*[CODE]foo_CPPFLAGS\*[CODE OFF], for example, in
+src/devices/xditview/xditview.am, extra flags are needed to build
+gxditview and are added like this:
+.QUOTE
+.IL
+.HI
+.CODE
+gxditview_CPPFLAGS = $(AM_CPPFLAGS) $(X_CFLAGS) -Dlint \\
+-I$(top_builddir)/src/devices/xditview
+.CODE OFF
+.QUOTE OFF
+.ILQ
+.PP
+The use of specific CPPFLAGS changes the name of the generated objects:
+the .o object files are prefixed with the name of the program.
+For example, the .o file corresponding to src/devices/xditview/device.c
+will be src/devices/xditview/gxditview-device.o.
+.
+.HEADING 2 "Cleaning"
+.
+.PP
+You don't need to write rules to clean the programs listed in
+\*[CODE]bin_PROGRAMS\*[CODE OFF], `automake' will write them for
+you.  However, some programs might have generated sources that
+should be cleaned.  In this case, you have mainly two special
+variables to list extra files that should be cleaned:
+.
+.SP 3p
+.QUAD LEFT
+.HY OFF
+.
+.LIST
+.SHIFT_LIST 1m
+.ITEM
+\*[CODE]MOSTLYCLEANFILES\*[CODE OFF] for files that should be
+cleaned by `make mostlyclean'
+.ITEM
+\*[CODE]CLEANFILES\*[CODE OFF ] for files that should be cleaned by
+`make clean'
+.LIST OFF
+.
+.JUSTIFY
+.HY DEFAULT
+.SP 3p
+.
+There is also the possibility of writing custom rules.  We will see
+that later.
+.
+.HEADING 2 "Dependencies"
+.
+.PP
+We have already seen that when linking against a convenience
+library, the dependencies are already created by `automake'.
+However, some dependencies still need to be manually added, for
+example when a source file includes a generated header.  In this
+case, the easiest way is to add a plain-make dependency.  For
+example, src/roff/groff/groff.cpp includes defs.h, which is a
+generated header.  We just add in src/roff/groff/groff.am:
+.QUOTE
+.CODE
+src/roff/groff/groff.$(OBJEXT): defs.h
+.CODE OFF
+.QUOTE OFF
+.
+.HEADING 2 "Scripts"
+.
+.PP
+Apart from \*[CODE]bin_PROGRAMS\*[CODE OFF], there is another
+similar special variable for scripts:  \*[CODE]bin_SCRIPTS\*[CODE OFF]\&.
+The scripts listed in this variable will automatically be
+built (of course you have to provide your custom rule to build the
+script), installed and uninstalled when invoking 'make', 'make
+install' and 'make uninstall'.  The main difference is that unlike
+the programs listed in \*[CODE]bin_PROGRAMS\*[CODE OFF], the scripts
+will not be cleaned by default.  They are not distributed by default
+either.  In the groff project, \*[CODE]bin_SCRIPTS\*[CODE OFF] are
+cleaned because they are added to \*[CODE]MOSTLYCLEANFILES\*[CODE OFF]
+in the top-level Makefile.am.
+.PP
+A simple example are the gropdf and pdfmom scripts in
+src/devices/gropdf/gropdf.am:
+.CODE_SIZE 84
+.QUOTE_INDENT 1
+.QUOTE
+.CODE
+bin_SCRIPTS += gropdf pdfmom
+  [...]
+gropdf: $(gropdf_dir)/gropdf.pl $(SH_DEPS_SED_SCRIPT)
+        rm -f $@
+        sed -f $(SH_DEPS_SED_SCRIPT) \\
+            -e "s|[@]VERSION[@]|$(VERSION)|" \\
+            -e "s|[@]PERL[@]|$(PERL)|" \\
+            -e "s|[@]GROFF_FONT_DIR[@]|$(fontpath)|" \\
+            -e "s|[@]RT_SEP[@]|$(RT_SEP)|" $(gropdf_dir)/gropdf.pl >$@
+        chmod +x $@
+
+pdfmom: $(gropdf_dir)/pdfmom.pl $(SH_DEPS_SED_SCRIPT)
+        rm -f $@
+        sed -f $(SH_DEPS_SED_SCRIPT) \\
+            -e "s|[@]VERSION[@]|$(VERSION)|" \\
+            -e "s|[@]PERL[@]|$(PERL)|" $(gropdf_dir)/pdfmom.pl >$@
+        chmod +x $@
+.QUOTE OFF
+.QUOTE_INDENT 2m
+.CODE_SIZE 100
+Note that in this example the '@' symbol is protected by square
+brackets to prevent the substitution of the variable by `automake'.
+.
+.HEADING 1 "Non-recursive make schema"
+.
+.PP
+There are two possibilities for organizing the Makefile.am of a
+large project, using a recusive or a non-recursive `make'.
+.
+.HEADING 2 "1st possibility: make recursion"
+.
+.PP
+A top level Makefile.am includes another Makefile.am, using the
+\*[CODE]SUBDIRS\*[CODE OFF] directive, and the Makefile.am of each
+sub-directory lists the programs that should be built.  If we had
+chosen this type of organization, we would have a Makefile.am in
+src/devices/grolbp and in each directory that contain sources to
+build a program (tbl, eqn, troff etc ...).  We would write in the
+top-level Makefile.am:
+.QUOTE
+.IL
+.HI
+.CODE
+SUBDIRS = src/devices/grolbp \\
+\&... (and all the dir that build a program or a script)
+.CODE OFF
+.QUOTE OFF
+and in src/devices/grolbp, we would have a file Makefile.am that
+contains:
+.QUOTE
+.CODE
+bin_PROGRAMS = grolbp
+grolbp_SOURCES = lbp.cpp lbp.h charset.h
+.CODE OFF
+.QUOTE OFF
+.PP
+Only `grolbp' is affected to the variable \*[CODE]bin_PROGRAMS\*[CODE OFF]\&.
+It would be the same in, say, src/roff/troff: you would have a Makefile.am
+with \*[CODE]bin_PROGRAMS = troff\*[CODE OFF]\&.  We would have
+one generated Makefile per Makefile.am file: in the build tree
+you will have the top-level Makefile, grolbp's Makefile in
+src/devices/grolbp, troff's Makefile in src/roff/troff, and so on.
+When calling `make' to build everything, `make' will be recursively
+called in all the directories that have a Makefile.  Thus, the
+paths are logically relative to the directory that contains the
+Makefile.am.
+.PP
+This approach has the disadvantage of making dependencies harder
+to resolve: each Makefile does not know the targets of the other
+Makfiles.  It also makes the build slower.
+.
+.HEADING 2 "Non-recursive make used by the Groff project"
+.
+.PP
+The second possibility, which was chosen for the groff project, is to use
+a non-recursive make schema.  It is described in paragraph 7.3 of
+the Automake manual ("An Alternative Approach to Subdirectories"),
+based on the following paper from Peter Miller:
+.PDF_WWW_LINK http://miller.emu.id.au/pmiller/books/rmch/ \
+  SUFFIX . "\*[IT]Recursive Make Considered Harmful\*[PREV]"
+.PP
+The idea is to have a single Makefile that contains all the rules.
+That is why we have only a single Makefile.am in the top-level
+directory which includes all the .am files that define rules
+to build the various programs.  The inclusion is done with the
+\*[CODE]include\*[CODE OFF] directive, not \*[CODE]SUBDIRS\*[CODE OFF]\&.
+Using 'include' is like copying the contents of the included
+file into the top-level Makefile.am, and will not generate other
+Makefile.
+.PP
+We first say in this top-level Makefile.am:
+.QUOTE
+.CODE 
+bin_PROGAMS = 
+.CODE OFF
+.QUOTE OFF
+and then all the .am files that define a program to be built (e.g.
+src/devices/grolbp/grolbp.am, src/roff/troff/troff.am, and so on)
+overload this variable, so that at the end, all the programs that
+should be built are listed in this \*[CODE]bin_PROGRAMS\*[CODE OFF]
+variable.  This is the reason why all the paths in the various .am
+files are relative to the top-level directory: at the end we will
+have only one Makefile in the top-level directory of the build tree.
+.PP
+As the resulting single Makefile knows all the targets, the
+dependencies are easier to manage.  The build is also faster,
+particularly when compiling a single file: `make' is called once only
+and the file will be instantly rebuilt, while on a recursive make
+system, `make' will have to be invoked in all the sub-directories.
+.PP
+Note also that in order to make `gnulib' work with this
+non-recursive schema, the `non-recursive-gnulib-prefix-hack'
+configuration should be selected in bootstrap.conf.
+.
+.HEADING 1 "Installing data"
+.
+.PP
+Variables that end with \*[CODE]_DATA\*[CODE OFF] are special
+variables used to list files that should be installed in a
+particular location.  The prefix of the variables should refer to
+another previously defined variable that ends with a `dir' suffix.
+This varibale that ends with `dir' defines where the files should be
+installed.
+.
+.HEADING 2 "A simple case"
+.
+.PP
+For example, in font/devX100/devX100.am, we can see this:
+.QUOTE
+.CODE
+if !WITHOUT_X11
+devX100fontdir = $(fontdir)/devX100
+devX100font_DATA = $(DEVX100FONTS)
+endif
+.SP
+EXTRA_DIST += $(DEVX100FONTS)
+.CODE OFF
+.QUOTE OFF
+.WS -4
+\*[CODE]DEVX100FONTS\*[CODE OFF] is just a list of font files,
+defined at the begining of devX100.am.  \*[CODE]fontdir\*[CODE OFF]
+is where all the font directories are installed, it is defined
+in the top-level Makefile.am.  The conditional
+\*[CODE]if\~!WITHOUT_X11\*[CODE OFF]
+is used to prevent the installation of
+these files if X11 is not available.
+.WS DEFAULT
+.PP
+We first define where we wants to install the devX100 fonts with:
+.QUOTE
+.CODE
+devX100fontdir = $(fontdir)/devX100
+.CODE OFF
+.QUOTE OFF
+Because we declared a variable ending with `dir', we are allowed
+to define \*[CODE]devX100font_DATA\*[CODE OFF] (you remove the
+`dir' suffix and add \*[CODE]_DATA\*[CODE OFF]).  Note that
+wildcards are not supported in the special variable that end with
+\*[CODE]_DATA\*[CODE OFF]\&.
+.PP
+With these two lines, `make install' will install the files
+listed in \*[CODE]DEVX100FONTS\*[CODE OFF] and `make uninstall'
+will uninstall them.  \*[CODE]devX100fontdir\*[CODE OFF] will be
+automatically created if missing during the installation
+process, but not removed during the uninstall.  The complete
+\*[CODE]fontdir\*[CODE OFF] is removed by a custom uninstall rule
+(uninstall_groffdirs in Makefile.am).
+.PP
+Because the files listed in \*[CODE]devX100font_DATA\*[CODE OFF]
+are not distributed by default, we explicitely added them to the
+\*[CODE]EXTRA_DIST\*[CODE OFF] variable, which lists all the files
+that should be distributed and that are not taken into account by
+the default automake rules.
+.QUOTE
+.CODE
+  EXTRA_DIST += $(DEVX100FONTS)
+.CODE OFF
+.QUOTE OFF
+Another possibility would have been to add a `dist' prefix to the
+\*[CODE]devX100font_DATA\*[CODE OFF] variable, in this case the use
+of \*[CODE]EXTRA_DIST\*[CODE OFF] is useless (except of course if
+\*[CODE]WITHOUT_X11\*[CODE OFF] is true, in this case we don't
+install the files but we still have to distribute them):
+.QUOTE
+.CODE
+if !WITHOUT_X11
+devX100fontdir = $(fontdir)/devX100
+dist_devX100font_DATA = $(DEVX100FONTS)
+else
+EXTRA_DIST += $(DEVX100FONTS)
+endif
+.CODE OFF
+.QUOTE OFF
+.
+.HEADING 2 "Dealing with generated files"
+.
+.PP
+In the previous example, all the font files that must be installed
+were already present in the source tree.  But in some cases,
+you need to generate the files you intend to install.  In this
+case, the files should be installed but not distributed.  A
+simple way to deal with this is to add a `nodist' prefix to your
+\*[CODE]xxx_DATA\*[CODE OFF] variable.
+.PP
+For example in font/devps/devps.am, we have a list of
+font files already present in the source tree, defined
+by \*[CODE]DEVPSFONTFILES\*[CODE OFF], and another list
+of font files that are generated, listed in the variable
+\*[CODE]DEVPSFONTFILES_GENERATED\*[CODE OFF]\&.  They should all
+by installed in a `devps' directory under the fontdir.  Thus
+the following three lines, where we use the `dist' and `nodist'
+prefixes:
+.QUOTE
+.CODE
+devpsfontdir = $(fontdir)/devps
+dist_devpsfont_DATA = $(DEVPSFONTFILES) 
+nodist_devpsfont_DATA = $(DEVPSFONTFILES_GENERATED)
+.CODE OFF
+.QUOTE OFF
+The generated files are not cleaned by default, thus we add:
+.QUOTE
+.CODE
+MOSTLYCLEANFILES += $(DEVPSFONTFILES_GENERATED)
+.CODE OFF
+.QUOTE OFF
+.
+.HEADING 1 "Extending Automake's rules"
+.
+.HEADING 2 "Local clean rules"
+.
+.PP
+In most of the cases, the files that need to be cleaned are
+automatically determined by `automake', or were added to the
+\*[CODE]MOSTCLEANFILES\*[CODE OFF] or \*[CODE]CLEANFILES\*[CODE OFF]
+variables.  However, you might need to define a specific rule
+to clean some files that were not added to any list.  Automake
+defines a set of targets to extend the clean targets with your
+own rules: clean-local, mostlyclean-local, distclean-local or
+maintainerclean-local.  An example of such extension exists in
+font/devpdf/devpdf.am: because some fonts are not explicitely listed
+in a \*[CODE]xxx_DATA\*[CODE OFF] variable but generated by a custom
+rule, we define an extra rule to extend the `mostlyclean' target:
+.CODE_SIZE 92
+.QUOTE
+.CODE
+mostlyclean-local: mostlyclean_devpdf_extra
+mostlyclean_devpdf_extra:
+        @echo Cleaning font/devpdf
+        rm -rf $(top_builddir)/font/devpdf/enc \\
+          $(top_builddir)/font/devpdf/map;
+        if test -d $(top_builddir)/font/devpdf; then \\
+          for f in $(GROFF_FONT_FILES); do \\
+            rm -f $(top_builddir)/font/devpdf/$$f; \\
+          done; \\
+        fi
+.CODE OFF
+.QUOTE OFF
+.
+.NO_FLEX OFF \" Prevent upcoming NEWPAGE from disabling flex-spacing.
+.HEADING 2 "Local install/uninstall rules and hooks"
+.
+.PP
+Similarly to the clean rules, there are extensions to install and
+uninstall rules.  They come with two flavous, local rules and hooks.
+.
+.SP 3p
+.QUAD LEFT
+.HY OFF
+.
+.LIST
+.SHIFT_LIST 1m
+.ITEM
+There are 2 rules to extend install commands: `install-exec-local'
+for binaries and `install-data-local' for data.
+.ITEM
+There is 1 uninstall local rule: `uninstall-local'.
+.LIST OFF
+.
+.SP 3p
+.JUSTIFY
+.HY DEFAULT
+.
+There are no garantees on the order of execution of these local
+rules.  An example of local rule is the installation of GXditview.ad
+and GXditview-color.ad files in src/devices/xditview/xditview.am: if
+theses files are already installed, the old files are first saved.
+Also, the final file that is installed is stripped from its .ad
+suffix.  Thus the usage of a custom rule rather than the definition
+of a \*[CODE]xxx_DATA\*[CODE OFF] variable:
+.FLEX
+.QUOTE
+.CODE
+# Custom installation of GXditview.ad and GXditview-color.ad
+install-data-local: install_xditview
+uninstall-local: uninstall_xditview
+.SP
+[...]
+install_xditview: $(xditview_srcdir)/GXditview.ad
+        -test -d $(DESTDIR)$(appresdir) \\
+          || $(mkinstalldirs) $(DESTDIR)$(appresdir)
+        if test -f $(DESTDIR)$(appresdir)/GXditview; then \\
+          mv $(DESTDIR)$(appresdir)/GXditview \\
+            $(DESTDIR)$(appresdir)/GXditview.old; \\
+        fi
+        [...]
+        $(INSTALL_DATA) $(xditview_srcdir)/GXditview.ad \\
+          $(DESTDIR)$(appresdir)/GXditview
+.CODE OFF
+.QUOTE OFF
+.PP
+Hooks, on the other hand, are garanteed to be executed after all the
+standard targets have been executed.
+.BR
+.SP 3p
+.QUAD LEFT
+.HY OFF
+.
+.LIST
+.SHIFT_LIST 1m
+.SP 3p
+.ITEM
+There are 2 install hooks: `install-exec-hook' and
+`install-data-hook'.
+.ITEM
+There is 1 uninstall hook: `unintall-hook'
+.LIST OFF
+.
+.SP 3p
+.JUSTIFY
+.HY DEFAULT
+.
+.PP
+An example of hook is the `uninstall_groffdirs' rule in the
+top-level Makefile.am.  This hook is used to remove all the
+directories specific to groff introduced by the installation
+process.  Obviously it could not be a local extension of `uninstall'
+because the order of execution is not guaranteed.
+.QUOTE
+.CODE
+# directories specific to groff
+uninstall-hook: uninstall_groffdirs
+uninstall_groffdirs:
+        if test -d $(DESTDIR)$(datasubdir); then \\
+          rm -rf $(DESTDIR)$(fontdir); \\
+          rm -rf $(DESTDIR)$(oldfontdir); \\
+          rmdir $(DESTDIR)$(datasubdir); \\
+        fi
+        [...]
+.CODE OFF
+.QUOTE OFF
+.TOC
+.\" Local Variables:
+.\" mode: nroff
+.\" End:
+.\" vim: filetype=groff:
diff --git a/doc/doc.am b/doc/doc.am
new file mode 100644 (file)
index 0000000..a3a2ff0
--- /dev/null
@@ -0,0 +1,487 @@
+# Copyright (C) 2002-2018 Free Software Foundation, Inc.
+#      Original Makefile.sub written by Werner Lemberg <wl@gnu.org>
+#      Automake migration by 
+#      Bertrand Garrigues <bertrand.garrigues@laposte.net>
+#
+#
+# This file is part of groff.
+#
+# groff 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.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+
+doc_srcdir = $(abs_top_srcdir)/doc
+doc_builddir = $(abs_top_builddir)/doc
+
+DOC_SED = $(SED) -e "s;[@]VERSION[@];$(VERSION);"
+
+DOC_GROFF_ONLY=\
+  GROFF_COMMAND_PREFIX= \
+  GROFF_BIN_PATH="$(GROFF_BIN_PATH)" \
+  $(GROFFBIN) -I$(abs_top_builddir) -M $(doc_srcdir) \
+       $(TFLAG) $(FFLAG) -Upet -ww 
+
+DOC_GROFF = $(DOC_SED) $< | $(DOC_GROFF_ONLY)
+
+# Other doc, installed in $(docdir)
+if BUILD_OTHERDOC
+# Files located in the source tree
+DOCFILES= \
+  doc/meref.me \
+  doc/meintro.me \
+  doc/meintro_fr.me \
+  doc/pic.ms
+# Files generated in the build tree
+PROCESSEDDOCFILES = \
+  doc/meref.ps \
+  doc/meintro.ps \
+  doc/meintro_fr.ps \
+  doc/pic.ps
+
+otherdocdir = $(docdir)
+dist_otherdoc_DATA = $(DOCFILES)
+nodist_otherdoc_DATA = $(PROCESSEDDOCFILES)
+MOSTLYCLEANFILES += $(PROCESSEDDOCFILES)
+else
+EXTRA_DIST += $(DOCFILES)
+endif
+
+# pdf doc, written in mom and therefore using contrib/mom/mom.am
+# definitions
+EXTRA_DIST += doc/automake.mom
+if BUILD_PDFDOC
+docpdfdocdir = $(pdfdocdir)
+nodist_docpdfdoc_DATA = doc/automake.pdf
+MOSTLYCLEANFILES += doc/automake.pdf
+endif
+doc/automake.pdf: doc/automake.mom \
+  groff troff gropdf pdfmom font/devpdf/build_font_files \
+  contrib/mom/om.tmac
+
+# GNU PIC html documentation, installed in $(htmldocdir)
+# Other pic*.html files are installed by the local rule
+if BUILD_HTML
+HTMLDOCFILES = \
+  doc/pic.html
+htmlpicdir = $(htmldocdir)
+htmlpic_DATA = $(HTMLDOCFILES)
+HTMLDOCFILESALL = pic*.html
+HTMLDOCIMAGEFILES = pic*
+endif
+
+# Examples files, installed in $(exampledir)
+
+# source tree files
+EXAMPLEFILES = \
+  doc/webpage.ms \
+  doc/groff.css \
+  doc/grnexmpl.g \
+  doc/grnexmpl.me
+
+if BUILD_EXAMPLES
+# Generated in the build tree
+PROCESSEDEXAMPLEFILES = \
+  doc/webpage.ps \
+  doc/grnexmpl.ps
+docexamplesdir = $(exampledir)
+dist_docexamples_DATA = $(EXAMPLEFILES)
+nodist_docexamples_DATA = $(PROCESSEDEXAMPLEFILES)
+MOSTLYCLEANFILES += $(PROCESSEDEXAMPLEFILES)
+else
+EXTRA_DIST += $(EXAMPLEFILES)
+endif
+
+if BUILD_HTMLEXAMPLES
+# webpage.html is generated, webpage*.html files are installed by the local rule.
+HTMLEXAMPLEFILES = doc/webpage.html
+HTMLEXAMPLEFILESALL = webpage*.html
+HTMLEXAMPLEIMAGEFILES = webpage*
+htmlexamplesdir = $(exampledir)
+nodist_htmlexamples_DATA = $(HTMLEXAMPLEFILES)
+endif
+
+imagedir = img
+htmldocimagedir = $(htmldocdir)/img
+exampleimagedir = $(exampledir)/img
+
+MOSTLYCLEANFILES += doc/examples.stamp
+
+EXTRA_DIST += \
+  doc/gnu.xpm \
+  doc/fixinfo.sh \
+  doc/txi-en.tex
+
+SUFFIXES += .me .ms .ps .html .txt .texi .dvi .pdf .xhtml
+
+# For simplicity, we always call preconv, grn, and eqn.
+.me.txt:
+       $(GROFF_V)$(MKDIR_P) `dirname $@` \
+       && $(DOC_GROFF) -k -Tutf8 -ge -me >$@
+.me.ps:
+       $(GROFF_V)$(MKDIR_P) `dirname $@` \
+       && $(DOC_GROFF) -k -Tps -ge -me >$@
+
+.ms.html:
+       $(GROFF_V)$(MKDIR_P) `dirname $@` \
+       && $(DOC_GROFF) -P-p -P-b -P-I`basename $< | sed -e 's|.ms$$||'` \
+                       -P-D$(imagedir) -Thtml -ms >$@
+.ms.txt:
+       $(GROFF_V)$(MKDIR_P) `dirname $@` \
+       && $(DOC_GROFF) -Tascii -ms -mwww >$@
+.ms.ps:
+       $(GROFF_V)$(MKDIR_P) `dirname $@` \
+       && $(DOC_GROFF) -Tps -ms -mwww >$@
+
+$(PROCESSEDEXAMPLEFILES): $(bin_PROGRAMS) $(prefixexecbin_PROGRAMS) gnu.eps
+$(PROCESSEDEXAMPLEFILES): $(dist_devpsfont_DATA) $(nodist_devpsfont_DATA) $(hdtbltmac_DATA)
+$(PROCESSEDEXAMPLEFILES): $(dist_tmac_DATA) $(nodist_tmac_DATA)
+$(PROCESSEDDOCFILES): $(bin_PROGRAMS) $(prefixexecbin_PROGRAMS) gnu.eps
+
+doc/pic.html: tmac/www.tmac
+doc/pic.html: $(bin_PROGRAMS) $(prefixexecbin_PROGRAMS)
+doc/pic.html: doc/examples.stamp
+doc/pic.html: $(dist_devpsfont_DATA) $(nodist_devpsfont_DATA)
+doc/pic.html: $(doc_srcdir)/pic.ms $(devhtmlfont_DATA)
+       $(GROFF_V)$(MKDIR_P) $(doc_builddir) \
+       && cd $(doc_builddir) \
+       && $(DOC_SED) $(doc_srcdir)/pic.ms \
+          | $(DOC_GROFF_ONLY) -P-p -P-Ipic -P-D$(imagedir) -P-jpic \
+                              -Thtml -ms > pic.html
+
+doc/examples.stamp: doc/groff.css
+       @$(MKDIR_P) $(doc_builddir)
+       test -f $(doc_builddir)/groff.css || cp $(doc_srcdir)/groff.css $(doc_builddir)
+       echo timestamp > $@
+
+doc/webpage.html: $(bin_PROGRAMS) $(prefixexecbin_PROGRAMS)
+doc/webpage.html: doc/examples.stamp $(devhtmlfont_DATA)
+doc/webpage.html: $(dist_devpsfont_DATA) $(nodist_devpsfont_DATA) 
+doc/webpage.html: $(doc_srcdir)/webpage.ms gnu.eps $(doc_srcdir)/groff.css
+       $(GROFF_V)$(MKDIR_P) doc \
+       && cd $(doc_builddir) \
+       && $(DOC_SED) $(doc_srcdir)/webpage.ms \
+          | $(DOC_GROFF_ONLY) -P-jwebpage -P-nrpb -P-Iwebpage \
+                              -P-D$(imagedir) -Thtml -ms > webpage.html
+
+doc/grnexmpl.ps: doc/grnexmpl.me doc/grnexmpl.g
+
+# Note that we remove groff.css only if out-of-source build tree
+mostlyclean-local: mostlyclean_doc
+mostlyclean_doc:
+if BUILD_HTML
+       if test -d $(doc_builddir); then \
+         cd $(doc_builddir) && \
+         for f in $(HTMLDOCFILESALL); do \
+           $(RM) $$f; \
+         done; \
+       fi
+       if test -d $(doc_builddir)/$(imagedir); then \
+         cd $(doc_builddir)/$(imagedir) && \
+         for f in $(HTMLDOCIMAGEFILES); do \
+           $(RM) $$f; \
+         done; \
+       fi
+endif
+       if test $(top_builddir) != $(top_srcdir); then \
+         $(RM) $(top_builddir)/doc/groff.css; \
+       fi
+
+if BUILD_HTMLEXAMPLES
+       if test -d $(doc_builddir); then \
+         cd $(doc_builddir) && \
+         for f in $(HTMLEXAMPLEFILESALL); do \
+           $(RM) $$f; \
+         done; \
+       fi
+       if test -d $(doc_builddir)/$(imagedir); then \
+         cd $(doc_builddir)/$(imagedir) && \
+         for f in $(HTMLEXAMPLEIMAGEFILES); do \
+           $(RM) $$f; \
+         done; \
+       fi
+endif
+
+install-data-hook: install_doc_htmldoc
+install_doc_htmldoc:
+if BUILD_HTML
+       cd $(doc_builddir) && \
+       for f in `ls $(HTMLDOCFILESALL)`; do \
+         $(RM) $(DESTDIR)$(htmldocdir)/$$f; \
+         $(INSTALL_DATA) $$f $(DESTDIR)$(htmldocdir)/$$f; \
+       done
+       -test -d $(DESTDIR)$(htmldocimagedir) \
+         || $(mkinstalldirs) $(DESTDIR)$(htmldocimagedir)
+       $(RM) $(DESTDIR)$(htmldocimagedir)/$(HTMLDOCIMAGEFILES)
+       $(INSTALL_DATA) $(doc_builddir)/$(imagedir)/$(HTMLDOCIMAGEFILES) \
+         $(DESTDIR)$(htmldocimagedir)
+endif
+
+install-data-hook: install_doc_examples
+install_doc_examples: gnu.eps
+if BUILD_EXAMPLES
+# Prefer gnu.eps in builddir over srcdir.
+       d=.; test -f "gnu.eps" || d=$(doc_srcdir); \
+         $(RM) $(DESTDIR)$(exampledir)/gnu.eps; \
+         $(INSTALL_DATA) $$d/gnu.eps $(DESTDIR)$(exampledir)/gnu.eps
+endif
+if BUILD_HTMLEXAMPLES
+       cd $(doc_builddir) && \
+       for f in `ls $(HTMLEXAMPLEFILESALL)`; do \
+         $(RM) $(DESTDIR)$(exampledir)/$$f; \
+         $(INSTALL_DATA) $$f $(DESTDIR)$(exampledir)/$$f; \
+       done
+       -test -d $(DESTDIR)$(exampleimagedir) \
+         || $(mkinstalldirs) $(DESTDIR)$(exampleimagedir)
+       $(RM) $(DESTDIR)$(exampleimagedir)/$(HTMLEXAMPLEIMAGEFILES)
+       $(INSTALL_DATA) $(doc_builddir)/$(imagedir)/$(HTMLEXAMPLEIMAGEFILES) \
+         $(DESTDIR)$(exampleimagedir)
+endif
+
+uninstall-hook: uninstall_doc_examples uninstall_doc_htmldoc uninstall_mom
+uninstall_doc_examples:
+if BUILD_EXAMPLES
+       $(RM) -f $(DESTDIR)$(exampledir)/gnu.eps
+endif
+if BUILD_HTMLEXAMPLES
+       -test -d $(DESTDIR)$(docexamplesdir) && \
+       cd $(DESTDIR)$(docexamplesdir) && \
+       for f in $(HTMLEXAMPLEFILESALL); do \
+         $(RM) $$f; \
+       done
+       -test -d $(DESTDIR)$(docexamplesdir)/$(imagedir) && \
+       cd $(DESTDIR)$(docexamplesdir)/$(imagedir) && \
+       for f in $(HTMLEXAMPLEIMAGEFILES); do \
+         $(RM) $$f; \
+       done
+       -rmdir $(DESTDIR)$(docexamplesdir)/$(imagedir)
+       -rmdir $(DESTDIR)$(docexamplesdir)
+endif
+
+uninstall_doc_htmldoc:
+if BUILD_HTML
+       -test -d $(DESTDIR)$(htmldocdir) && \
+       cd $(DESTDIR)$(htmldocdir) && \
+       for f in $(HTMLDOCFILESALL); do \
+         $(RM) $$f; \
+       done
+       -test -d $(DESTDIR)$(htmldocdir)/$(imagedir) && \
+       cd $(DESTDIR)$(htmldocdir)/$(imagedir) && \
+       for f in $(HTMLDOCIMAGEFILES); do \
+         $(RM) $$f; \
+       done
+       -rmdir $(DESTDIR)$(htmldocdir)/$(imagedir)
+       -rmdir $(DESTDIR)$(htmldocdir)
+endif
+
+# Texinfo doc
+#
+# Users who want to print out the groff manual are expected to have a
+# working TeX installation.  Note that texi2dvi properly honours the
+# `MAKEINFO' environment variable.
+#
+# We can't use automake's facilities because the make dist target attempts to 
+# generate a pdf version of groff.texi by invoking texi2dvi without the -e 
+# option, which is needed to build this file.
+# info_TEXINFOS = doc/groff.texi
+# doc_groff_TEXINFOS = doc/fdl.texi
+#
+# Note that GNU standards require to install only info doc. Info doc
+# can still be disabled by passing 
+# --with-doc=<something else than info or yes> 
+# to configure
+
+all: build_infodoc
+if BUILD_INFODOC
+build_infodoc: doc/groff.info
+groffinfodir = $(infodir)
+groffpdfdir = $(infodir)
+MOSTLYCLEANFILES += doc/groff.info doc/groff.info-2 doc/groff.info-2
+doc/groff.info: $(doc_srcdir)/groff.texi
+       @$(MKDIR_P) $(doc_builddir)
+       LANG=C \
+       LC_ALL=C \
+       $(MAKEINFO) -o doc/groff.info --enable-encoding -I$(doc_srcdir) $(doc_srcdir)/groff.texi
+else
+build_infodoc:
+endif
+EXTRA_DIST += doc/groff.texi doc/fdl.texi
+
+# GNU Make has a built-in variable TEXI2DVI but it is not the case of
+# all 'make' implementation.  As it default to 'texi2dvi' we simply
+# redefine it here.
+
+TEXI2DVI = texi2dvi
+texi2dvi_missing = no
+# Rules to generate various doc files from .texi files.
+.texi.txt:
+       @$(MKDIR_P) $(doc_builddir)
+       LANG=C \
+       LC_ALL=C \
+       $(MAKEINFO) --enable-encoding -I$(doc_srcdir) --plaintext -o $@ $<
+
+.texi.dvi:
+if HAVE_TEXI2DVI
+       @$(MKDIR_P) $(doc_builddir)
+       LANG=C \
+       LC_ALL=C \
+       TEXINPUTS="$(top_srcdir)/build-aux:$(TEXINPUTS)" \
+       MAKEINFO='$(MAKEINFO) -I $(doc_srcdir)' \
+       $(TEXI2DVI) -e --batch --build-dir=doc/`basename $@`.t2d -o $@ $<
+else
+       @echo "Program texi2dvi is missing, cannot generate dvi doc"; \
+       exit 1
+endif
+
+.texi.pdf:
+if HAVE_TEXI2DVI
+       @$(MKDIR_P) $(doc_builddir)
+       LANG=C \
+       LC_ALL=C \
+       TEXINPUTS="$(top_srcdir)/build-aux:$(TEXINPUTS)" \
+       MAKEINFO='$(MAKEINFO) -I $(doc_srcdir)' \
+       $(TEXI2DVI) -e --batch --pdf --build-dir=doc/`basename $@`.t2p -o $@ $<
+else
+       @echo "Program texi2dvi is missing, cannot generate pdf doc"; \
+       exit 1
+endif
+
+# This will generate both html split into several files and html doc
+# in a single file. If texinfo version < 5.0, we process the resulting
+# (mono) .html file with fixinfo.sh du to a problem with blockquote
+# closing (for example 5.6.1 Setting Registers, the 'Request'
+# blockquote is not properly closed, see fixinfo.sh for more details
+.texi.html:
+       @$(MKDIR_P) $(doc_builddir)/
+       LANG=C \
+       LC_ALL=C \
+       $(MAKEINFO) --html -I $(doc_srcdir) \
+         -o doc/`basename $@`.node $<
+       LANG=C \
+       LC_ALL=C \
+       $(MAKEINFO) --html -I $(doc_srcdir) --no-split \
+         -o $@ $<
+       if test "$(makeinfo_version_numeric)" -lt 5000; then \
+         echo "patching $@ with fixinfo.sh"; \
+         $(SHELL) $(doc_srcdir)/fixinfo.sh \
+           doc/`basename $@`.mono/`basename $@`; \
+       fi
+
+# Targets to make all the doc in all formats. These doc are not built
+# by default. pdf, dvi, ps, html and their install equivalent
+# install-pdf, install-dvi, install-ps, install-html are standard
+# Automake targets.
+
+if BUILD_INFODOC
+doc: doc_all
+doc_all: doc_txt dvi pdf html
+doc_txt: doc/groff.txt
+dvi: doc_dvi
+doc_dvi: doc/groff.dvi
+pdf: doc_pdf
+doc_pdf: doc/groff.pdf
+html: doc_html
+doc_html: doc/groff.html
+install-doc: install-pdf install-html
+endif
+
+distclean-local: clean_infodoc clean_otherdoc
+maintainer-clean-local: clean_infodoc clean_otherdoc
+clean_infodoc:
+       -$(RM) $(doc_builddir)/groff.info*
+       -$(RM) $(doc_builddir)/groff.pdf
+       -$(RM) $(doc_builddir)/groff.dvi
+       -$(RM) -r $(doc_builddir)/groff.html.*
+clean_otherdoc:
+       -cd $(doc_builddir) && \
+         $(RM) -r *.pdf *.html *.txt *.dvi *.t2p *.t2d
+
+install-data-local: install_infodoc
+if BUILD_INFODOC
+install_infodoc: doc/groff.info
+       -test -d $(DESTDIR)$(infodir) || $(mkinstalldirs) $(DESTDIR)$(infodir)
+         for p in doc/groff.info `ls doc/groff.info*`; do \
+           f=`basename $$p`; \
+           $(RM) $(DESTDIR)$(infodir)/$$f; \
+           $(INSTALL_DATA) $$p $(DESTDIR)$(infodir)/$$f; \
+         done
+       $(INSTALL_INFO) --info-dir=$(DESTDIR)$(infodir) \
+         $(DESTDIR)$(infodir)/groff.info
+install-pdf-local: doc/groff.pdf
+       -test -d $(DESTDIR)$(pdfdocdir) || $(mkinstalldirs) $(DESTDIR)$(pdfdocdir)
+       cp $(top_builddir)/doc/groff.pdf $(DESTDIR)$(pdfdocdir)
+install-html-local: doc/groff.html
+       -test -d $(DESTDIR)$(htmldocdir)/groff.html.mono || $(mkinstalldirs) $(DESTDIR)$(htmldocdir)/groff.html.mono
+       cp -r $(top_builddir)/doc/groff.html $(DESTDIR)$(htmldocdir)/groff.html.mono
+       cp -r $(top_builddir)/doc/groff.html.node $(DESTDIR)$(htmldocdir)
+else
+install_infodoc:
+endif
+
+uninstall-local: uninstall_infodoc uninstall-pdf uninstall-html
+uninstall_doc: uninstall-local
+uninstall-doc: uninstall-local
+uninstall_infodoc:
+if BUILD_INFODOC
+       -$(INSTALL_INFO) --remove --info-dir=$(DESTDIR)$(infodir) \
+         $(DESTDIR)$(infodir)/groff.info
+       -for f in `ls $(DESTDIR)$(infodir)/groff.info*`; do \
+         $(RM) $$f; \
+       done
+endif
+uninstall-pdf:
+if BUILD_INFODOC
+       -$(RM) -f $(DESTDIR)$(pdfdocdir)/groff.pdf 
+endif
+uninstall-html:
+if BUILD_INFODOC
+       -$(RM) -r $(DESTDIR)$(htmldocdir)/groff.html.*
+endif
+
+# File used by contrib/hdtbl and contrib/pdfmark. It is distributed in
+# doc.eps. We try in priority to use the file in 'doc'.
+EXTRA_DIST += doc/gnu.xpm
+MOSTLYCLEANFILES += gnu.eps
+gnu.eps:
+       echo $(XPMTOPPM)
+       if test -f $(top_srcdir)/doc/gnu.eps; then \
+         cp $(top_srcdir)/doc/gnu.eps . ; \
+       elif test -f $(top_builddir)/doc/gnu.eps; then \
+         cp $(top_builddir)/doc/gnu.eps . ; \
+       else \
+         if test ""$(XPMTOPPM) != "found"; then \
+           echo "Program xpmtoppm is missing, can't generate gnu.eps" ; \
+           exit 1; \
+         fi; \
+         if test ""$(pnmtops) != "found"; then \
+           echo "Program pnmtops is missing, can't generate gnu.eps" ; \
+           exit 1; \
+         fi; \
+         if test "$(pnmtops_nosetpage)" != "pnmtops -nosetpage"; then \
+           echo "Program pnmtops can't handle -nosetpage, can't generate gnu.eps" ; \
+           exit 1; \
+         fi; \
+         xpmtoppm $(top_srcdir)/doc/gnu.xpm | pnmdepth 15 \
+           | $(pnmtops_nosetpage) -noturn -rle >$@ ; \
+       fi
+
+# Copy gnu.eps in 'doc' directory
+dist-hook: dist-gnueps
+dist-gnueps:
+       chmod u+w $(distdir)/doc
+       cp -f gnu.eps $(distdir)/doc
+
+
+########################################################################
+### Emacs settings
+# Local Variables:
+# mode: makefile-automake
+# End:
index 9c3bbe5..46f6b81 100644 (file)
@@ -5,7 +5,7 @@
 @c hence no sectioning command or @node.
 
 @display
-Copyright @copyright{} 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
+Copyright @copyright{} 2000-2018 Free Software Foundation, Inc.
 @uref{http://fsf.org/}
 
 Everyone is permitted to copy and distribute verbatim copies
index 2c853f8..47127f8 100644 (file)
@@ -3,7 +3,7 @@
 # Fix a problem with HTML output produced by makeinfo
 #   (tested with versions 4.8 and 4.13).
 #
-# groff.texinfo uses (after macro expansion) something like
+# groff.texi uses (after macro expansion) something like
 #
 #   @deffn ...
 #   @XXindex ...
 # @deffn and @deffnx.
 #
 # Note that this script is a quick hack and tightly bound to the current
-# groff.texinfo macro code.  Hopefully, a new texinfo version makes it
+# groff.texi macro code.  Hopefully, a new texinfo version makes it
 # unnecessary.
-
+#
+# 09-2014: no more problem with texinfo 5.0 or higher
+#
 t=${TMPDIR-.}/gro$$.tmp
 
 cat $1 | sed '
index 3dc8ef6..6a836c7 100644 (file)
@@ -69,20 +69,20 @@ daff0afc869cfdcfa9fedaa988dfecff00f0f3ff159bffd5ae84534554454c74b444474444944566
 5549effdff00fee2ff0ce8977adb8874764564444aee99ecff00f0f3ff159bffd5ae84534554454c
 74b4444744449445665549effdff00fee2ff0ce8977adb8874764564444aee99ecff00f0f3ff159b
 ffd5ae84534554454c74b4444744449445665549effdff00fee2ff0ce8977adb8874764564444aee
-99ecff00f0f5ff1dfee8defd9975ca4535454445c47844455444554456444558bfffffff76afe4ff
-0ee8448baa56654444444535797efc8bedff00f0f5ff1dfee8defd9975ca4535454445c478444554
-44554456444558bfffffff76afe4ff0ee8448baa56654444444535797efc8bedff00f0f5ff1dfee8
-defd9975ca4535454445c47844455444554456444558bfffffff76afe4ff0ee8448baa5665444444
-4535797efc8bedff00f0f5ff1de7cef97cd76758a454545456754b4454545446455463855caaacdd
-a7bdafedff01fdbefbff10fd77a86754454445444444896446effc9eeeff00f0f5ff1de7cef97cd7
-6758a454545456754b4454545446455463855caaacdda7bdafedff01fdbefbff10fd77a867544544
-45444444896446effc9eeeff00f0f5ff1de7cef97cd76758a454545456754b445454544645546385
-5caaacdda7bdafedff01fdbefbff10fd77a86754454445444444896446effc9eeeff00f0f6ff1efe
-8e758a849ec65488444467c8646794564644444454555757efca78bffaefedff19d675affffffffe
-ed976666844443444343444455677898affbaeefff00f0f6ff1efe8e758a849ec65488444467c864
-6794564644444454555757efca78bffaefedff19d675affffffffeed976666844443444343444455
-677898affbaeefff00f0f6ff1efe8e758a849ec65488444467c8646794564644444454555757efca
-78bffaefedff19d675affffffffeed976666844443444343444455677898affbaeefff00f0f6ff1d
+99ecff00f0f5ff18fee8defd9975ca4535454445c47844455444554456444558bffeff0176afe4ff
+05e8448baa5665fe44054535797efc8bedff00f0f5ff18fee8defd9975ca4535454445c478444554
+44554456444558bffeff0176afe4ff05e8448baa5665fe44054535797efc8bedff00f0f5ff18fee8
+defd9975ca4535454445c47844455444554456444558bffeff0176afe4ff05e8448baa5665fe4405
+4535797efc8bedff00f0f5ff07e7cef97cd76758a4fe540356754b44fe540b46455463855caaacdd
+a7bdafedff01fdbefbff07fd77a86754454445fe4405896446effc9eeeff00f0f5ff07e7cef97cd7
+6758a4fe540356754b44fe540b46455463855caaacdda7bdafedff01fdbefbff07fd77a867544544
+45fe4405896446effc9eeeff00f0f5ff07e7cef97cd76758a4fe540356754b44fe540b4645546385
+5caaacdda7bdafedff01fdbefbff07fd77a86754454445fe4405896446effc9eeeff00f0f6ff11fe
+8e758a849ec65488444467c86467945646fe440954555757efca78bffaefedff02d675affeff13fe
+ed976666844443444343444455677898affbaeefff00f0f6ff11fe8e758a849ec65488444467c864
+67945646fe440954555757efca78bffaefedff02d675affeff13feed976666844443444343444455
+677898affbaeefff00f0f6ff11fe8e758a849ec65488444467c86467945646fe440954555757efca
+78bffaefedff02d675affeff13feed976666844443444343444455677898affbaeefff00f0f6ff1d
 c79889555655afc64664457efd75b594485445455445494674eefddeefdaecff039efb6466fd4412
 466558444334563454434555434459cfffe9eff0ff00f0f6ff1dc79889555655afc64664457efd75
 b594485445455445494674eefddeefdaecff039efb6466fd44124665584443345634544345554344
@@ -119,18 +119,18 @@ fd74469cb646bdb63459eeffd8efc9ff0dc7cd33334444588754334457dfccf2ff00f0faff0dfd74
 469cb646bdb63459eeffd8efc9ff0dc7cd33334444588754334457dfccf2ff00f0faff0cf8964444
 5885457dc436cefb8ec7ff028ab445fd3305345676654debf2ff00f0faff0cf89644445885457dc4
 36cefb8ec7ff028ab445fd3305345676654debf2ff00f0faff0cf89644445885457dc436cefb8ec7
-ff028ab445fd3305345676654debf2ff00f0faff0bc8ffeb7444455444895befb9c6ff0cfb8c9543
-3334444444577769faf2ff00f0faff0bc8ffeb7444455444895befb9c6ff0cfb8c95433334444444
-577769faf2ff00f0faff0bc8ffeb7444455444895befb9c6ff0cfb8c95433334444444577769faf2
+ff028ab445fd3305345676654debf2ff00f0faff0bc8ffeb7444455444895befb9c6ff05fb8c9543
+3334fe4403577769faf2ff00f0faff0bc8ffeb7444455444895befb9c6ff05fb8c95433334fe4403
+577769faf2ff00f0faff0bc8ffeb7444455444895befb9c6ff05fb8c95433334fe4403577769faf2
 ff00f0fbff0cfe7cbbcacdb6444455666ffb9fc5ff02b8fc43fd330444455568caf2ff00f0fbff0c
 fe7cbbcacdb6444455666ffb9fc5ff02b8fc43fd330444455568caf2ff00f0fbff0cfe7cbbcacdb6
 444455666ffb9fc5ff02b8fc43fd330444455568caf2ff00f0fbff0be7e555444569a7444558dfd8
 c4ff0cfa7fb53334433333457abbebeff3ff00f0fbff0be7e555444569a7444558dfd8c4ff0cfa7f
 b53334433333457abbebeff3ff00f0fbff0be7e555444569a7444558dfd8c4ff0cfa7fb533344333
-33457abbebeff3ff00f0fbff0b9bfc9cea7544568855da8b8eedff05edbbaaaabcefddff0b97e633
-333334578865569dcff3ff00f0fbff0b9bfc9cea7544568855da8b8eedff05edbbaaaabcefddff0b
-97e633333334578865569dcff3ff00f0fbff0b9bfc9cea7544568855da8b8eedff05edbbaaaabcef
-ddff0b97e633333334578865569dcff3ff00f0fcff0cfe7ffffeefffd9445776eff7dfefff09eb86
+33457abbebeff3ff00f0fbff0b9bfc9cea7544568855da8b8eedff05edbbaaaabcefddff0197e6fe
+330634578865569dcff3ff00f0fbff0b9bfc9cea7544568855da8b8eedff05edbbaaaabcefddff01
+97e6fe330634578865569dcff3ff00f0fbff0b9bfc9cea7544568855da8b8eedff05edbbaaaabcef
+ddff0197e6fe330634578865569dcff3ff00f0fcff0cfe7ffffeefffd9445776eff7dfefff09eb86
 7789998778778adff7ff02cbcdefecff0bfaa5333433433469dfffffbff3ff00f0fcff0cfe7ffffe
 efffd9445776eff7dfefff09eb867789998778778adff7ff02cbcdefecff0bfaa5333433433469df
 ffffbff3ff00f0fcff0cfe7ffffeefffd9445776eff7dfefff09eb867789998778778adff7ff02cb
@@ -143,36 +143,36 @@ a9abba88cffaff05fea8998889adecff0a77344555455444467cffaff3ff00f0fcff0be8ff944433
 55544433344458ffbff3ff00f0fcff0be8ff94443344446afb9efc8ff0ff0dfc69a899abdefeecba
 8668aa78cffcff07fb9aba988abdfcbdedff0ac87455544433344458ffbff3ff00f0fcff0be8ff94
 443344446afb9efc8ff0ff0dfc69a899abdefeecba8668aa78cffcff07fb9aba988abdfcbdedff0a
-c87455544433344458ffbff3ff00f0fcff0a9dc856789a987544dfffe7f0ff03fd747adffaff11ec
-877667dfffffffe978879bcedba98aecbfeeff0af7da53333333344456efbff3ff00f0fcff0a9dc8
-56789a987544dfffe7f0ff03fd747adffaff11ec877667dfffffffe978879bcedba98aecbfeeff0a
-f7da53333333344456efbff3ff00f0fcff0a9dc856789a987544dfffe7f0ff03fd747adffaff11ec
-877667dfffffffe978879bcedba98aecbfeeff0af7da53333333344456efbff3ff00f0fcff0a8f99
-8887765567977bffadf0ff1ca58efffffffdcfefffceffffffeb8549ffffd9968ceffb5becfffc89
-efeeff0af9c85333333443344679cef3ff00f0fcff0a8f998887765567977bffadf0ff1ca58effff
-fffdcfefffceffffffeb8549ffffd9968ceffb5becfffc89efeeff0af9c85333333443344679cef3
-ff00f0fcff0a8f998887765567977bffadf0ff1ca58efffffffdcfefffceffffffeb8549ffffd996
-8ceffb5becfffc89efeeff0af9c85333333443344679cef3ff00f0fdff0bfaad444444568aa86576
+c87455544433344458ffbff3ff00f0fcff0a9dc856789a987544dfffe7f0ff03fd747adffaff04ec
+877667dffeff09e978879bcedba98aecbfeeff02f7da53fe3304344456efbff3ff00f0fcff0a9dc8
+56789a987544dfffe7f0ff03fd747adffaff04ec877667dffeff09e978879bcedba98aecbfeeff02
+f7da53fe3304344456efbff3ff00f0fcff0a9dc856789a987544dfffe7f0ff03fd747adffaff04ec
+877667dffeff09e978879bcedba98aecbfeeff02f7da53fe3304344456efbff3ff00f0fcff0a8f99
+8887765567977bffadf0ff01a58efeff04fdcfefffcefeff0feb8549ffffd9968ceffb5becfffc89
+efeeff0af9c85333333443344679cef3ff00f0fcff0a8f998887765567977bffadf0ff01a58efeff
+04fdcfefffcefeff0feb8549ffffd9968ceffb5becfffc89efeeff0af9c85333333443344679cef3
+ff00f0fcff0a8f998887765567977bffadf0ff01a58efeff04fdcfefffcefeff0feb8549ffffd996
+8ceffb5becfffc89efeeff0af9c85333333443344679cef3ff00f0fdff01faadfe4406568aa86576
 df9ff1ff1dfa8efffffeffff9c885de67cffec9bfd848ddab98effffe754547ffffe89eeff0afd9f
-645aa6434696445ecef3ff00f0fdff0bfaad444444568aa86576df9ff1ff1dfa8efffffeffff9c88
+645aa6434696445ecef3ff00f0fdff01faadfe4406568aa86576df9ff1ff1dfa8efffffeffff9c88
 5de67cffec9bfd848ddab98effffe754547ffffe89eeff0afd9f645aa6434696445ecef3ff00f0fd
-ff0bfaad444444568aa86576df9ff1ff1dfa8efffffeffff9c885de67cffec9bfd848ddab98effff
+ff01faadfe4406568aa86576df9ff1ff1dfa8efffffeffff9c885de67cffec9bfd848ddab98effff
 e754547ffffe89eeff0afd9f645aa6434696445ecef3ff00f0fdff0bf666544565654458dec9bf9f
-f1ff1e9bfffffff9c8d99aa9485967ee6766cf9c65be88befdca8d4447349aeffd8ceeff097d4433
-47984348684eddf3ff00f0fdff0bf666544565654458dec9bf9ff1ff1e9bfffffff9c8d99aa94859
+f1ff009bfeff1af9c8d99aa9485967ee6766cf9c65be88befdca8d4447349aeffd8ceeff097d4433
+47984348684eddf3ff00f0fdff0bf666544565654458dec9bf9ff1ff009bfeff1af9c8d99aa94859
 67ee6766cf9c65be88befdca8d4447349aeffd8ceeff097d443347984348684eddf3ff00f0fdff0b
-f666544565654458dec9bf9ff1ff1e9bfffffff9c8d99aa9485967ee6766cf9c65be88befdca8d44
+f666544565654458dec9bf9ff1ff009bfeff1af9c8d99aa9485967ee6766cf9c65be88befdca8d44
 47349aeffd8ceeff097d443347984348684eddf3ff00f0fdff0bb888aaa8877655554ceffdbff2ff
 20e8cfffffc9b9aaab69b74b69586865565ba6d786b7559c5d644945a3465da9ea8eefff09786443
 3434685345bfbcf3ff00f0fdff0bb888aaa8877655554ceffdbff2ff20e8cfffffc9b9aaab69b74b
 69586865565ba6d786b7559c5d644945a3465da9ea8eefff097864433434685345bfbcf3ff00f0fd
 ff0bb888aaa8877655554ceffdbff2ff20e8cfffffc9b9aaab69b74b69586865565ba6d786b7559c
 5d644945a3465da9ea8eefff097864433434685345bfbcf3ff00f0fdff0b6efddb9865554445569f
-faeff2ff218effffff887b8a8c57c668874758754764655a869e644566d548a3943333335bd7dff0
-ff099a44333344447944bfbaf3ff00f0fdff0b6efddb9865554445569ffaeff2ff218effffff887b
-8a8c57c668874758754764655a869e644566d548a3943333335bd7dff0ff099a44333344447944bf
-baf3ff00f0fdff0b6efddb9865554445569ffaeff2ff218effffff887b8a8c57c668874758754764
-655a869e644566d548a3943333335bd7dff0ff099a44333344447944bfbaf3ff00f0feff0bfe7ffc
+faeff2ff008efeff17887b8a8c57c668874758754764655a869e644566d548a394fe33025bd7dff0
+ff099a44333344447944bfbaf3ff00f0fdff0b6efddb9865554445569ffaeff2ff008efeff17887b
+8a8c57c668874758754764655a869e644566d548a394fe33025bd7dff0ff099a44333344447944bf
+baf3ff00f0fdff0b6efddb9865554445569ffaeff2ff008efeff17887b8a8c57c668874758754764
+655a869e644566d548a394fe33025bd7dff0ff099a44333344447944bfbaf3ff00f0feff0bfe7ffc
 544444555556666df8f2ff22f8cfbea86ea55d697e56d575a546458546554355a64ba454439b34c4
 54334333345a7bf0ff099d544555433445b65dbaf3ff00f0feff0bfe7ffc544444555556666df8f2
 ff22f8cfbea86ea55d697e56d575a546458546554355a64ba454439b34c454334333345a7bf0ff09
@@ -194,17 +194,17 @@ ef8ff3ff25bce9fa56f648f659956f55d474944444a65784563455945b6594b4546c354363854333
 fa56f648f659956f55d474944444a65784563455945b6594b4546c354363854333349b9ff2ff09ab
 a433345533344346e9f3ff00f0feff0bf7fb59bba8754444458def8ff3ff25bce9fa56f648f65995
 6f55d474944444a65784563455945b6594b4546c354363854333349b9ff2ff09aba4333455333443
-46e9f3ff00f0feff0bf7ffb854346788787569ce9ff4ff26fe8ff77655f645f756a46e55a4747445
-44b566a4754554a446846479864a45435375434343499cf2ff098d7643333568634446daf3ff00f0
-feff0bf7ffb854346788787569ce9ff4ff26fe8ff77655f645f756a46e55a474744544b566a47545
-54a446846479864a45435375434343499cf2ff098d7643333568634446daf3ff00f0feff0bf7ffb8
-54346788787569ce9ff4ff26fe8ff77655f645f756a46e55a474744544b566a4754554a446846479
-864a45435375434343499cf2ff098d7643333568634446daf3ff00f0feff0bf8ff84589876555676
-6acd9ff4ff27e7ee99b445e754e945945f54c584654544b577c46454548566458a5d5c3864446545
-4343434486eff3ff0a7f8ac7333334774446faeff4ff00f0feff0bf8ff845898765556766acd9ff4
-ff27e7ee99b445e754e945945f54c584654544b577c46454548566458a5d5c386444654543434344
-86eff3ff0a7f8ac7333334774446faeff4ff00f0feff0bf8ff845898765556766acd9ff4ff27e7ee
-99b445e754e945945f54c584654544b577c46454548566458a5d5c38644465454343434486eff3ff
+46e9f3ff00f0feff0bf7ffb854346788787569ce9ff4ff21fe8ff77655f645f756a46e55a4747445
+44b566a4754554a446846479864a45435375fe4301499cf2ff098d7643333568634446daf3ff00f0
+feff0bf7ffb854346788787569ce9ff4ff21fe8ff77655f645f756a46e55a474744544b566a47545
+54a446846479864a45435375fe4301499cf2ff098d7643333568634446daf3ff00f0feff0bf7ffb8
+54346788787569ce9ff4ff21fe8ff77655f645f756a46e55a474744544b566a4754554a446846479
+864a45435375fe4301499cf2ff098d7643333568634446daf3ff00f0feff0bf8ff84589876555676
+6acd9ff4ff21e7ee99b445e754e945945f54c584654544b577c46454548566458a5d5c3864446545
+fe43024486eff3ff0a7f8ac7333334774446faeff4ff00f0feff0bf8ff845898765556766acd9ff4
+ff21e7ee99b445e754e945945f54c584654544b577c46454548566458a5d5c3864446545fe430244
+86eff3ff0a7f8ac7333334774446faeff4ff00f0feff0bf8ff845898765556766acd9ff4ff21e7ee
+99b445e754e945945f54c584654544b577c46454548566458a5d5c3864446545fe43024486eff3ff
 0a7f8ac7333334774446faeff4ff00f0feff0bf8fe576544455666567ace9ff4ff278dbb6a9544d8
 54da45a46f64d584554644c576c4858554655788fe8b84478445464444534344467df4ff0bfe8e55
 44333334557554cbdff4ff00f0feff0bf8fe576544455666567ace9ff4ff278dbb6a9544d854da45
@@ -224,11 +224,11 @@ ff0bfdf9a44578adb985445bff8ff5ff299afff6488a34c954ad54d66e44d494444655b679d4a5c5
 fdf9a44578adb985445bff8ff5ff299afff6488a34c954ad54d66e44d494444655b679d4a5c59666
 c9c445bfb343b54555364465443444456ef5ff03f8efd543fd330355a4cbeff4ff00f0fdff0af67b
 dfea6546988655cf8ff6ff2afaadff55487c34c9549d44c76c44b4a5445546975bc4a5d4a55dfdc3
-334543437735553444564434443446f5ff0bf7ffa43453333333347cebeff4ff00f0fdff0af67bdf
+334543437735553444564434443446f5ff04f7ffa43453fe3303347cebeff4ff00f0fdff0af67bdf
 ea6546988655cf8ff6ff2afaadff55487c34c9549d44c76c44b4a5445546975bc4a5d4a55dfdc333
-4543437735553444564434443446f5ff0bf7ffa43453333333347cebeff4ff00f0fdff0af67bdfea
+4543437735553444564434443446f5ff04f7ffa43453fe3303347cebeff4ff00f0fdff0af67bdfea
 6546988655cf8ff6ff2afaadff55487c34c9549d44c76c44b4a5445546975bc4a5d4a55dfdc33345
-43437735553444564434443446f5ff0bf7ffa43453333333347cebeff4ff00f0feff0bfcf9fb8545
+43437735553444564434443446f5ff04f7ffa43453fe3303347cebeff4ff00f0feff0bfcf9fb8545
 6875543345cf8ff6ff2ba8fb9d44486e34a7549c45d66a4594a4444446685ca47694844ae5e53465
 554368345434445545454433446ef6ff0bf7fd533346334333345dfbeff4ff00f0feff0bfcf9fb85
 456875543345cf8ff6ff2ba8fb9d44486e34a7549c45d66a4594a4444446685ca47694844ae5e534
@@ -248,12 +248,12 @@ ff00f0feff0bfaee887544459b85448cfd9cf7ff2d9affff5b54565e5486547847d4644866844535
 faf3ff00f0feff0bfaee887544459b85448cfd9cf7ff2d9affff5b54565e5486547847d464486684
 4535457a4959fe9a6544d5affb4486866834443444644544643744468ef7ff0a958b433333364334
 347ffaf3ff00f0feff0bfadc985459da534784578ad8f8ff2ff8bffbbf7844566f54855455488444
-464853543646696fedcdc84a46555effa543545b444443447446445547645ad7acf8ff0a74d54333
-3333543343affbf3ff00f0feff0bfadc985459da534784578ad8f8ff2ff8bffbbf7844566f548554
-55488444464853543646696fedcdc84a46555effa543545b444443447446445547645ad7acf8ff0a
-74d543333333543343affbf3ff00f0feff0bfadc985459da534784578ad8f8ff2ff8bffbbf784456
+464853543646696fedcdc84a46555effa543545b444443447446445547645ad7acf8ff0274d543fe
+3304543343affbf3ff00f0feff0bfadc985459da534784578ad8f8ff2ff8bffbbf7844566f548554
+55488444464853543646696fedcdc84a46555effa543545b444443447446445547645ad7acf8ff02
+74d543fe3304543343affbf3ff00f0feff0bfadc985459da534784578ad8f8ff2ff8bffbbf784456
 6f54855455488444464853543646696fedcdc84a46555effa543545b444443447446445547645ad7
-acf8ff0a74d543333333543343affbf3ff00f0feff0bfb9ba56ce9534775444598f7f9ff30fe7cff
+acf8ff0274d543fe3304543343affbf3ff00f0feff0bfb9ba56ce9534775444598f7f9ff30fe7cff
 fc5f9654556f655455445846a7577a556577bf777855547a7b683836acee63455c54454444645743
 65448457ed9af9ff02fb8663fd33043433436ffaf3ff00f0feff0bfb9ba56ce9534775444598f7f9
 ff30fe7cfffc5f9654556f655455445846a7577a556577bf777855547a7b683836acee63455c5445
@@ -273,43 +273,43 @@ ff0be7e834334334333343343afbf3ff00f0fdff0b7eec56b6434654445566ce9ffbff32fe7dffff
 8c73445534556644444334544cfe69faff0b7bd44334333343333334dfbef3ff00f0fdff0b7eec56
 b6434654445566ce9ffbff32fe7dffff7c7ba5565566487884963466556778887666789beffff65d
 9358c585455954ad8c73445534556644444334544cfe69faff0b7bd44334333343333334dfbef3ff
-00f0fdff0b7c94774445544454445bef8cfbff0ee8dfffffa887b46644886ec7458aeffaff1deeff
-fffffe48ec535948437958f9566ab87dbefecaa967675574578de69ffcff02f87b63fa330234ef9f
-f3ff00f0fdff0b7c94774445544454445bef8cfbff0ee8dfffffa887b46644886ec7458aeffaff1d
-eefffffffe48ec535948437958f9566ab87dbefecaa967675574578de69ffcff02f87b63fa330234
+00f0fdff0b7c94774445544454445bef8cfbff0ee8dfffffa887b46644886ec7458aeffaff00eefe
+ff19fe48ec535948437958f9566ab87dbefecaa967675574578de69ffcff02f87b63fa330234ef9f
+f3ff00f0fdff0b7c94774445544454445bef8cfbff0ee8dfffffa887b46644886ec7458aeffaff00
+eefeff19fe48ec535948437958f9566ab87dbefecaa967675574578de69ffcff02f87b63fa330234
 ef9ff3ff00f0fdff0b7c94774445544454445bef8cfbff0ee8dfffffa887b46644886ec7458aeffa
-ff1deefffffffe48ec535948437958f9566ab87dbefecaa967675574578de69ffcff02f87b63fa33
-0234ef9ff3ff00f0fdff0ca97bb6444444585446449ff8bffdff0dfe7effffaec7b6c46545bd7579
-cff3ff2ac57dc6335364543a58efffffb79ffffffffdcb86557455cf97cffddeffea556494333433
-333334334afdaff3ff00f0fdff0ca97bb6444444585446449ff8bffdff0dfe7effffaec7b6c46545
-bd7579cff3ff2ac57dc6335364543a58efffffb79ffffffffdcb86557455cf97cffddeffea556494
-333433333334334afdaff3ff00f0fdff0ca97bb6444444585446449ff8bffdff0dfe7effffaec7b6
-c46545bd7579cff3ff2ac57dc6335364543a58efffffb79ffffffffdcb86557455cf97cffddeffea
-556494333433333334334afdaff3ff00f0fdff0cc9ec64444448754475345fff89fdff0bc8efffea
-6bc6b484959866aef1ff08fe745885443334549ffdff01b6effdff17fdb685554bfc654456b847e7
-e633433343333333436ff9eff3ff00f0fdff0cc9ec64444448754475345fff89fdff0bc8efffea6b
-c6b484959866aef1ff08fe745885443334549ffdff01b6effdff17fdb685554bfc654456b847e7e6
-33433343333333436ff9eff3ff00f0fdff0cc9ec64444448754475345fff89fdff0bc8efffea6bc6
-b484959866aef1ff08fe745885443334549ffdff01b6effdff17fdb685554bfc654456b847e7e633
-433343333333436ff9eff3ff00f0fdff1be7a644654595644853464cfff88dffffd99fffffc969e5
+ff00eefeff19fe48ec535948437958f9566ab87dbefecaa967675574578de69ffcff02f87b63fa33
+0234ef9ff3ff00f0fdff02a97bb6fe4406585446449ff8bffdff0dfe7effffaec7b6c46545bd7579
+cff3ff0dc57dc6335364543a58efffffb79ffeff11fdcb86557455cf97cffddeffea5564943334fe
+330434334afdaff3ff00f0fdff02a97bb6fe4406585446449ff8bffdff0dfe7effffaec7b6c46545
+bd7579cff3ff0dc57dc6335364543a58efffffb79ffeff11fdcb86557455cf97cffddeffea556494
+3334fe330434334afdaff3ff00f0fdff02a97bb6fe4406585446449ff8bffdff0dfe7effffaec7b6
+c46545bd7579cff3ff0dc57dc6335364543a58efffffb79ffeff11fdcb86557455cf97cffddeffea
+5564943334fe330434334afdaff3ff00f0fdff0cc9ec64444448754475345fff89fdff0bc8efffea
+6bc6b484959866aef1ff08fe745885443334549ffdff01b6effdff10fdb685554bfc654456b847e7
+e633433343fe3303436ff9eff3ff00f0fdff0cc9ec64444448754475345fff89fdff0bc8efffea6b
+c6b484959866aef1ff08fe745885443334549ffdff01b6effdff10fdb685554bfc654456b847e7e6
+33433343fe3303436ff9eff3ff00f0fdff0cc9ec64444448754475345fff89fdff0bc8efffea6bc6
+b484959866aef1ff08fe745885443334549ffdff01b6effdff10fdb685554bfc654456b847e7e633
+433343fe3303436ff9eff3ff00f0fdff1be7a644654595644853464cfff88dffffd99fffffc969e5
 9595746aeff8ff00eff9ff0dea454589333684dffffdeffffc6ffbff0ea555635cfec8668aeff764
 54233334fd33014bf9f2ff00f0fdff1be7a644654595644853464cfff88dffffd99fffffc969e595
 95746aeff8ff00eff9ff0dea454589333684dffffdeffffc6ffbff0ea555635cfec8668aeff76454
 233334fd33014bf9f2ff00f0fdff1be7a644654595644853464cfff88dffffd99fffffc969e59595
 746aeff8ff00eff9ff0dea454589333684dffffdeffffc6ffbff0ea555635cfec8668aeff7645423
-3334fd33014bf9f2ff00f0fdff19f7d6585468574476447445efffb988889dffffff8957e564459e
+3334fd33014bf9f2ff00f0fdff10f7d6585468574476447445efffb988889dfeff058957e564459e
 f9ff03fea9568ff9ff0dfeedb845339d75bfffc57fffffb7fbff0cfee644338ebdfb99eac5333553
-fc33023467ccf2ff00f0fdff19f7d6585468574476447445efffb988889dffffff8957e564459ef9
+fc33023467ccf2ff00f0fdff10f7d6585468574476447445efffb988889dfeff058957e564459ef9
 ff03fea9568ff9ff0dfeedb845339d75bfffc57fffffb7fbff0cfee644338ebdfb99eac5333553fc
-33023467ccf2ff00f0fdff19f7d6585468574476447445efffb988889dffffff8957e564459ef9ff
+33023467ccf2ff00f0fdff10f7d6585468574476447445efffb988889dfeff058957e564459ef9ff
 03fea9568ff9ff0dfeedb845339d75bfffc57fffffb7fbff0cfee644338ebdfb99eac5333553fc33
 023467ccf2ff00f0fdff0cfab7a54674655764477544b9cffdff07fdecda5d56e437dffaff05feca
-aada35effbff10eeefffeedeb436e7487ff9a87efffff9affbff13cd554334448543443333334333
+aada35effbff10eeefffeedeb436e7487ff9a87efffff9affbff07cd55433444854344fe33084333
 43333334447a9ff2ff00f0fdff0cfab7a54674655764477544b9cffdff07fdecda5d56e437dffaff
-05fecaaada35effbff10eeefffeedeb436e7487ff9a87efffff9affbff13cd554334448543443333
-33433343333334447a9ff2ff00f0fdff0cfab7a54674655764477544b9cffdff07fdecda5d56e437
-dffaff05fecaaada35effbff10eeefffeedeb436e7487ff9a87efffff9affbff13cd554334448543
-44333333433343333334447a9ff2ff00f0fdff0cfc9e94664655764458473455cefdff06f99b875d
+05fecaaada35effbff10eeefffeedeb436e7487ff9a87efffff9affbff07cd55433444854344fe33
+08433343333334447a9ff2ff00f0fdff0cfab7a54674655764477544b9cffdff07fdecda5d56e437
+dffaff05fecaaada35effbff10eeefffeedeb436e7487ff9a87efffff9affbff07cd554334448543
+44fe3308433343333334447a9ff2ff00f0fdff0cfc9e94664655764458473455cefdff06f99b875d
 75838ff9ff04c446655339fbff11fe7445effffef955b3346ec8646effffef6dfbff02db9443fd33
 0034f8330248fe9ff2ff00f0fdff0cfc9e94664655764458473455cefdff06f99b875d75838ff9ff
 04c446655339fbff11fe7445effffef955b3346ec8646effffef6dfbff02db9443fd330034f83302
@@ -328,450 +328,457 @@ de6434dffffebff6fbff02fe9944f633044233343ceaf1ff00f0fcff158deb457866437655733543
 459b67ffffa947584b8357f9ff05e433344336effaff10fea46cffeffc644358de6434dffffebff6
 fbff02fe9944f633044233343ceaf1ff00f0fcff15bbfb669694455548434634554865faedb64559
 4a639ef9ff04934334338ffcff14d7558dfffaaacffffb4368adfe6338dfffffcff7effbff01c844
-fd33013434fd3305433333335e9ef1ff00f0fcff15bbfb669694455548434634554865faedb64559
-4a639ef9ff04934334338ffcff14d7558dfffaaacffffb4368adfe6338dfffffcff7effbff01c844
-fd33013434fd3305433333335e9ef1ff00f0fcff15bbfb669694455548434634554865faedb64559
-4a639ef9ff04934334338ffcff14d7558dfffaaacffffb4368adfe6338dfffffcff7effbff01c844
-fd33013434fd3305433333335e9ef1ff00f0fcff14e9fb5d6b54465455444534544685f77e764567
-4545f9ff04fd4335337cfcff15b5335646fffffc8bbffea8aeffed733aabaadedff8effbff01f854
-fb330043fc330334447bbff1ff00f0fcff14e9fb5d6b54465455444534544685f77e7645674545f9
+fd33ff34fd330043fe33015e9ef1ff00f0fcff15bbfb669694455548434634554865faedb645594a
+639ef9ff04934334338ffcff14d7558dfffaaacffffb4368adfe6338dfffffcff7effbff01c844fd
+33ff34fd330043fe33015e9ef1ff00f0fcff15bbfb669694455548434634554865faedb645594a63
+9ef9ff04934334338ffcff14d7558dfffaaacffffb4368adfe6338dfffffcff7effbff01c844fd33
+ff34fd330043fe33015e9ef1ff00f0fcff14e9fb5d6b54465455444534544685f77e7645674545f9
 ff04fd4335337cfcff15b5335646fffffc8bbffea8aeffed733aabaadedff8effbff01f854fb3300
 43fc330334447bbff1ff00f0fcff14e9fb5d6b54465455444534544685f77e7645674545f9ff04fd
 4335337cfcff15b5335646fffffc8bbffea8aeffed733aabaadedff8effbff01f854fb330043fc33
-0334447bbff1ff00f0fcff14f8c5d896547544644444344555a5f75c6654664489f9ff04f6335438
-bffdff15f946aeff74efffffd58ffffefffffa94368dfc8ccff7faff01fb44f533024475a9f0ff00
-f0fcff14f8c5d896547544644444344555a5f75c6654664489f9ff04f6335438bffdff15f946aeff
-74efffffd58ffffefffffa94368dfc8ccff7faff01fb44f533024475a9f0ff00f0fcff14f8c5d896
-547544644444344555a5f75c6654664489f9ff04f6335438bffdff15f946aeff74efffffd58ffffe
-fffffa94368dfc8ccff7faff01fb44f533024475a9f0ff00f0fcff14fa6de8756574564454544436
-54b6f56a6754543bdff9ff12b4367469bffffffffc65cfffff849fffffb69ffdff07f883357cfeeb
-ffe6faff09fd654333333334443334fd330253adccf0ff00f0fcff14fa6de8756574564454544436
-54b6f56a6754543bdff9ff12b4367469bffffffffc65cfffff849fffffb69ffdff07f883357cfeeb
-ffe6faff09fd654333333334443334fd330253adccf0ff00f0fcff14fa6de8756574564454544436
-54b6f56a6754543bdff9ff12b4367469bffffffffc65cfffff849fffffb69ffdff07f883357cfeeb
-ffe6faff09fd654333333334443334fd330253adccf0ff00f0fcff13fe8ffa756856554464634445
-55a5e56a7845535ff9ff04fc537fdaf5fdff0aa38fffffffd44efffffaaefdff07f98334bfffffff
-b7faff10fb64334333333344333433333343566e9ff0ff00f0fcff13fe8ffa756856554464634445
-55a5e56a7845535ff9ff04fc537fdaf5fdff0aa38fffffffd44efffffaaefdff07f98334bfffffff
-b7faff10fb64334333333344333433333343566e9ff0ff00f0fcff13fe8ffa756856554464634445
-55a5e56a7845535ff9ff04fc537fdaf5fdff0aa38fffffffd44efffffaaefdff07f98334bfffffff
-b7faff10fb64334333333344333433333343566e9ff0ff00f0fbff129ef759685457455443544555
-75b45a765443bff9ff04c57affffc6fdff0057fdff11f93dfffffc58effffffffa53339efeffff8b
-f9ff0f84334333333344333334333433bf78cff0ff00f0fbff129ef75968545745544354455575b4
-5a765443bff9ff04c57affffc6fdff0057fdff11f93dfffffc58effffffffa53339efeffff8bf9ff
-0f84334333333344333334333433bf78cff0ff00f0fbff129ef75968545745544354455575b45a76
-5443bff9ff04c57affffc6fdff0057fdff11f93dfffffc58effffffffa53339efeffff8bf9ff0f84
-334333333344333334333433bf78cff0ff00f0fbff11cbfb57954568484444444555548559675434
-f9ff20fd9bafffff6afffffffc5dfffcb9876639fffffe54bffffffffc533356779bff8df9ff0efc
-443533333344443333443646fe8aefff00f0fbff11cbfb57954568484444444555548559675434f9
-ff20fd9bafffff6afffffffc5dfffcb9876639fffffe54bffffffffc533356779bff8df9ff0efc44
-3533333344443333443646fe8aefff00f0fbff11cbfb57954568484444444555548559675434f9ff
-20fd9bafffff6afffffffc5dfffcb9876639fffffe54bffffffffc533356779bff8df9ff0efc4435
-33333344443333443646fe8aefff00f0fbff11f8fea9945895584534444956457459664437f8ff19
-e8effffe4dfffffffa38fb5333433335cfffffc4bffffffffe93fd3301597bf8ff0d743534333334
-443343535559fe8fefff00f0fbff11f8fea9945895584534444956457459664437f8ff19e8effffe
-4dfffffffa38fb5333433335cfffffc4bffffffffe93fd3301597bf8ff0d74353433333444334353
-5559fe8fefff00f0fbff11f8fea9945895584534444956457459664437f8ff19e8effffe4dffffff
-fa38fb5333433335cfffffc4bffffffffe93fd3301597bf8ff0d743534333334443343535559fe8f
-efff00f0fbff11fbafff8678c4644434445c5645544b66644bf8ff14eefffffa6ffffffffd345333
-34333894bffffff6bffdff06d4354456875449f8ff0dc43433333334444543537cbfd8efefff00f0
-fbff11fbafff8678c4644434445c5645544b66644bf8ff14eefffffa6ffffffffd34533334333894
-bffffff6bffdff06d4354456875449f8ff0dc43433333334444543537cbfd8efefff00f0fbff11fb
-afff8678c4644434445c5645544b66644bf8ff14eefffffa6ffffffffd34533334333894bffffff6
-bffdff06d4354456875449f8ff0dc43433333334444543537cbfd8efefff00f0faff108efff6c894
-744444446b5645555b67544ef5ff11f7affffffffe533334333338b97ffffffeadfdff07f6464545
-557744eff9ff0cf5333433334333453356fffb6eeeff00f0faff108efff6c894744444446b564555
-5b67544ef5ff11f7affffffffe533334333338b97ffffffeadfdff07f6464545557744eff9ff0cf5
-333433334333453356fffb6eeeff00f0faff108efff6c894744444446b5645555b67544ef5ff11f7
-affffffffe533334333338b97ffffffeadfdff07f6464545557744eff9ff0cf53334333343334533
-56fffb6eeeff00f0faff10e8eff8ea7544734454886544555b56648ff5ff01f4effdff0b53358433
-45338a7dffffff79fdff07fe469333435777cff9ff0cf644453333334466659efa77dfeeff00f0fa
-ff10e8eff8ea7544734454886544555b56648ff5ff01f4effdff0b5335843345338a7dffffff79fd
-ff07fe469333435777cff9ff0cf644453333334466659efa77dfeeff00f0faff10e8eff8ea754473
-4454886544555b56648ff5ff01f4effdff0b5335843345338a7dffffff79fdff07fe469333435777
-cff9ff0cf644453333334466659efa77dfeeff00f0faff10fd9dfceb6559533844a59554565a5554
-eff5ff00e6fdff0cfe45bdc43344436edeffffff67fdff07fe747334334789eff9ff0bfb44463333
-44458e66b758efedff00f0faff10fd9dfceb6559533844a59554565a5554eff5ff00e6fdff0cfe45
-bdc43344436edeffffff67fdff07fe747334334789eff9ff0bfb4446333344458e66b758efedff00
-f0faff10fd9dfceb6559533844a59554565a5554eff5ff00e6fdff0cfe45bdc43344436edeffffff
-67fdff07fe747334334789eff9ff0bfb4446333344458e66b758efedff00f0f9ff0ef8efee669a43
-484585b4657649453cf4ff009afcff0b4cffd33333435daefffffe5dfdff06eec533333336bff8ff
-09fd69b643345874bd636bebff00f0f9ff0ef8efee669a43484585b4657649453cf4ff009afcff0b
-4cffd33333435daefffffe5dfdff06eec533333336bff8ff09fd69b643345874bd636bebff00f0f9
-ff0ef8efee669a43484585b4657649453cf4ff009afcff0b4cffd33333435daefffffe5dfdff06ee
-c533333336bff8ff09fd69b643345874bd636bebff00f0f9ff0efe9fffa9b634a54768a5b5555954
-9ff4ff007efcff0b88fef5333334775ffffff8affdff07feeb43333356768ff8ff07c9fb87dcfed8
-76adeaff00f0f9ff0efe9fffa9b634a54768a5b55559549ff4ff007efcff0b88fef5333334775fff
-fff8affdff07feeb43333356768ff8ff07c9fb87dcfed876adeaff00f0f9ff0efe9fffa9b634a547
-68a5b55559549ff4ff007efcff0b88fef5333334775ffffff8affdff07feeb43333356768ff8ff07
-c9fb87dcfed876adeaff00f0f8ff0ccbffbae86594775d6684547655f3ff006ffcff07e77cdc4333
-46a56ff7ff0583333377845ff8ff06f5668877778bdffcff07feffdfdffffffffef6ff00f0f8ff0c
-cbffbae86594775d6684547655f3ff006ffcff07e77cdc433346a56ff7ff0583333377845ff8ff06
-f5668877778bdffcff07feffdfdffffffffef6ff00f0f8ff0ccbffbae86594775d6684547655f3ff
-006ffcff07e77cdc433346a56ff7ff0583333377845ff8ff06f5668877778bdffcff07feffdfdfff
-fffffef6ff00f0f8ff0cfdaeefffda55b4ab586554954bf4ff01fc4efdff08feeda49fd88989b59f
-f7ff05d445569c94cff8ff03fbdedeeffcff0ddeffe58bff6e6ffffebde597bdbef9ff00f0f8ff0c
-fdaeefffda55b4ab586554954bf4ff01fc4efdff08feeda49fd88989b59ff7ff05d445569c94cff8
-ff03fbdedeeffcff0ddeffe58bff6e6ffffebde597bdbef9ff00f0f8ff0cfdaeefffda55b4ab5865
-54954bf4ff01fc4efdff08feeda49fd88989b59ff7ff05d445569c94cff8ff03fbdedeeffcff0dde
-ffe58bff6e6ffffebde597bdbef9ff00f0f7ff0bfabdfffcbb49e6bf7654854ff4ff01f95efbff05
-fd67aab75558f6ff05f945669859dff7ff008ffaff0fa4cff738fe579fcbfe76db549b6577affbff
-00f0f7ff0bfabdfffcbb49e6bf7654854ff4ff01f95efbff05fd67aab75558f6ff05f945669859df
-f7ff008ffaff0fa4cff738fe579fcbfe76db549b6577affbff00f0f7ff0bfabdfffcbb49e6bf7654
-854ff4ff01f95efbff05fd67aab75558f6ff05f945669859dff7ff008ffaff0fa4cff738fe579fcb
-fe76db549b6577affbff00f0f6ff0afcacfc94aa79fd6855578ff4ff01f59efbff05eefd989abdef
-f5ff03947757daf6ff009dfaff0ffb5dff56fd45eb48dfa55d849b46b6effbff00f0f6ff0afcacfc
-94aa79fd6855578ff4ff01f59efbff05eefd989abdeff5ff03947757daf6ff009dfaff0ffb5dff56
-fd45eb48dfa55d849b46b6effbff00f0f6ff0afcacfc94aa79fd6855578ff4ff01f59efbff05eefd
-989abdeff5ff03947757daf6ff009dfaff0ffb5dff56fd45eb48dfa55d849b46b6effbff00f0f5ff
-09febabefecffcde8cd5dff4ff01e6aefaff03feefffeef4ff03f64dfffcf6ff00e8f9ff0dd6efd8
-ee5dd436bff846d48c4c6efaff00f0f5ff09febabefecffcde8cd5dff4ff01e6aefaff03feefffee
-f4ff03f64dfffcf6ff00e8f9ff0dd6efd8ee5dd436bff846d48c4c6efaff00f0f5ff09febabefecf
-fcde8cd5dff4ff01e6aefaff03feefffeef4ff03f64dfffcf6ff00e8f9ff0dd6efd8ee5dd436bff8
-46d48c4c6efaff00f0f3ff06bbbbceffffffe5f3ff0198ccf8ff01efdff4ff04fd58fff97ff7ff00
-f8f9ff0efa6fffffec59358876446467558aeffbff00f0f3ff06bbbbceffffffe5f3ff0198ccf8ff
-01efdff4ff04fd58fff97ff7ff00f8f9ff0efa6fffffec59358876446467558aeffbff00f0f3ff06
-bbbbceffffffe5f3ff0198ccf8ff01efdff4ff04fd58fff97ff7ff00f8f9ff0efa6fffffec593588
-76446467558aeffbff00f0f1ff04ecbcceff69f3ff025cfacee9ff03a4cffb58f7ff01fbcffbff0f
-caa957766664678889bdeff9fffffebffbff00f0f1ff04ecbcceff69f3ff025cfacee9ff03a4cffb
-58f7ff01fbcffbff0fcaa957766664678889bdeff9fffffebffbff00f0f1ff04ecbcceff69f3ff02
-5cfacee9ff03a4cffb58f7ff01fbcffbff0fcaa957766664678889bdeff9fffffebffbff00f0efff
-02fdc94ef4ff03fd3efbcde9ff04f77ffe46dff7ff009ffbff047bcc89bceffbff04faffffffbffb
-ff00f0efff02fdc94ef4ff03fd3efbcde9ff04f77ffe46dff7ff009ffbff047bcc89bceffbff04fa
-ffffffbffbff00f0efff02fdc94ef4ff03fd3efbcde9ff04f77ffe46dff7ff009ffbff047bcc89bc
-effbff04faffffffbffbff00f0eeff01f96ff4ff03f73cfedde9ff04fb4dffa78ef7ff00dafbff02
-8fffcff9ff04fafffffebffbff00f0eeff01f96ff4ff03f73cfedde9ff04fb4dffa78ef7ff00dafb
-ff028fffcff9ff04fafffffebffbff00f0eeff01f96ff4ff03f73cfedde9ff04fb4dffa78ef7ff00
-dafbff028fffcff9ff04fafffffebffbff00f0eeff01f4cff4ff03d54efffee8ff0498fff5d7eef8
-ff01f9effcff029ffeaffdff08eddbba9997ab79adbffbff00f0eeff01f4cff4ff03d54efffee8ff
-0498fff5d7eef8ff01f9effcff029ffeaffdff08eddbba9997ab79adbffbff00f0eeff01f4cff4ff
-03d54efffee8ff0498fff5d7eef8ff01f9effcff029ffeaffdff08eddbba9997ab79adbffbff00f0
-eeff00c6f3ff027956dfe7ff04e5eff78e7df8ff01fe9ffdff10fd787658a987765445785796a8dd
-55a9cffbff00f0eeff00c6f3ff027956dfe7ff04e5eff78e7df8ff01fe9ffdff10fd787658a98776
-5445785796a8dd55a9cffbff00f0eeff00c6f3ff027956dfe7ff04e5eff78e7df8ff01fe9ffdff10
-fd787658a987765445785796a8dd55a9cffbff00f0eeff007af4ff02fc5fb7e6ff05f56ff95fe9cf
-f8ff00dbfdff0ffe9a7684bbb968d74bff78f9fedf97dffaff00f0eeff007af4ff02fc5fb7e6ff05
-f56ff95fe9cff8ff00dbfdff0ffe9a7684bbb968d74bff78f9fedf97dffaff00f0eeff007af4ff02
-fc5fb7e6ff05f56ff95fe9cff8ff00dbfdff0ffe9a7684bbb968d74bff78f9fedf97dffaff00f0ef
-ff01fe4ef4ff02f78f95f1ff00edf7ff06fd5dfa4effaaeff9ff01fbdffcff0d9bd5fffe6af94aff
-77f9ffefe7dffaff00f0efff01fe4ef4ff02f78f95f1ff00edf7ff06fd5dfa4effaaeff9ff01fbdf
-fcff0d9bd5fffe6af94aff77f9ffefe7dffaff00f0efff01fe4ef4ff02f78f95f1ff00edf7ff06fd
-5dfa4effaaeff9ff01fbdffcff0d9bd5fffe6af94aff77f9ffefe7dffaff00f0efff01fb6ff4ff03
-c4efb68ef4ff05feeeb4aeffecf9ff0688fc4afffe89eff9ff00aefcff0d8bb5ffff6afa49ff77f9
-fffff7dffaff00f0efff01fb6ff4ff03c4efb68ef4ff05feeeb4aeffecf9ff0688fc4afffe89eff9
-ff00aefcff0d8bb5ffff6afa49ff77f9fffff7dffaff00f0efff01fb6ff4ff03c4efb68ef4ff05fe
-eeb4aeffecf9ff0688fc4afffe89eff9ff00aefcff0d8bb5ffff6afa49ff77f9fffff7dffaff00f0
-efff01f7aff5ff05fe59ffd85eeff5ff0596678959ddddf9ff07e6bd59fffffd99aefaff01f98efd
-ff0d6bc5ffff5afa48ff86f8ffeff7dffaff00f0efff01f7aff5ff05fe59ffd85eeff5ff05966789
-59ddddf9ff07e6bd59fffffd99aefaff01f98efdff0d6bc5ffff5afa48ff86f8ffeff7dffaff00f0
-efff01f7aff5ff05fe59ffd85eeff5ff0596678959ddddf9ff07e6bd59fffffd99aefaff01f98efd
-ff0d6bc5ffff5afa48ff86f8ffeff7dffaff00f0efff01f4eff5ff05f77ffffc668ff2ff05c86678
-78888bfcff02fb6c59fdff02d98beffbff12e8efffffff7ad6fffe5afb49ff75f8fffff7dffaff00
-f0efff01f4eff5ff05f77ffffc668ff2ff05c8667878888bfcff02fb6c59fdff02d98beffbff12e8
-efffffff7ad6fffe5afb49ff75f8fffff7dffaff00f0efff01f4eff5ff05f77ffffc668ff2ff05c8
-667878888bfcff02fb6c59fdff02d98beffbff12e8efffffff7ad6fffe5afb49ff75f8fffff7dffa
-ff00f0efff00c5f4ff05a6efffff754df3ff05ecbcccddeeeffaff01685afcff1afb78adefffffff
-ebaaefffffff7bd6ffff4bfb4aff75f8fffff7dffaff00f0efff00c5f4ff05a6efffff754df3ff05
-ecbcccddeeeffaff01685afcff1afb78adefffffffebaaefffffff7bd6ffff4bfb4aff75f8fffff7
-dffaff00f0efff00c5f4ff05a6efffff754df3ff05ecbcccddeeeffaff01685afcff1afb78adefff
-ffffebaaefffffff7bd6ffff4bfb4aff75f8fffff7dffaff00f0efff0089f5ff06e76ffffffffb6b
-f5ff06fd66787765458df9ff01a46cfaff05c988999989befcff0d7bc7ffff5afc59ff76f8fffff6
-dffaff00f0efff0089f5ff06e76ffffffffb6bf5ff06fd66787765458df9ff01a46cfaff05c98899
-9989befcff0d7bc7ffff5afc59ff76f8fffff6dffaff00f0efff0089f5ff06e76ffffffffb6bf5ff
-06fd66787765458df9ff01a46cfaff05c988999989befcff0d7bc7ffff5afc59ff76f8fffff6dffa
-ff00f0efff005ef6ff02fe55dffdff00abf5ff08f5affffffffeb858effbff01d54eefff0d8bc7ff
-fe4afc5aff77f8fffff6effaff00f0efff005ef6ff02fe55dffdff00abf5ff08f5affffffffeb858
-effbff01d54eefff0d8bc7fffe4afc5aff77f8fffff6effaff00f0efff005ef6ff02fe55dffdff00
-abf5ff08f5affffffffeb858effbff01d54eefff0d8bc7fffe4afc5aff77f8fffff6effaff00f0f0
-ff01fb5ff6ff01c44dfcff00eff5ff0098fbff01d74bfbff02fc4beff0ff0d7bb7fffe4afd4aff87
-f8fffff6effaff00f0f0ff01fb5ff6ff01c44dfcff00eff5ff0098fbff01d74bfbff02fc4beff0ff
-0d7bb7fffe4afd4aff87f8fffff6effaff00f0f0ff01fb5ff6ff01c44dfcff00eff5ff0098fbff01
-d74bfbff02fc4beff0ff0d7bb7fffe4afd4aff87f8fffff6effaff00f0f0ff01f6bff7ff02fd44cf
-f0ff01fc4dfaff01b58efbff0474dfedc88af3ff0d7bb7fffe49fe4bff78f7fffff6effaff00f0f0
-ff01f6bff7ff02fd44cff0ff01fc4dfaff01b58efbff0474dfedc88af3ff0d7bb7fffe49fe4bff78
-f7fffff6effaff00f0f0ff01f6bff7ff02fd44cff0ff01fc4dfaff01b58efbff0474dfedc88af3ff
-0d7bb7fffe49fe4bff78f7fffff6effaff00f0f0ff00b5f6ff01b55cefff04f6cfb6448efcff01a5
-affcff0596544557776df4ff0d7bb7fffe49fe4cff78f8fffff6effaff00f0f0ff00b5f6ff01b55c
-efff04f6cfb6448efcff01a5affcff0596544557776df4ff0d7bb7fffe49fe4cff78f8fffff6effa
-ff00f0f0ff00b5f6ff01b55cefff04f6cfb6448efcff01a5affcff0596544557776df4ff0d7bb7ff
-fe49fe4cff78f8fffff6effaff00f0f1ff01fe5cf8ff03fea658efefff05e6f8357755dffdff02fd
-66bffcff05feffffffd5eff5ff0d7ba8fffe49fe4cff88f7fffff6effaff00f0f1ff01fe5cf8ff03
-fea658efefff05e6f8357755dffdff02fd66bffcff05feffffffd5eff5ff0d7ba8fffe49fe4cff88
-f7fffff6effaff00f0f1ff01fe5cf8ff03fea658efefff05e6f8357755dffdff02fd66bffcff05fe
-ffffffd5eff5ff0d7ba8fffe49fe4cff88f7fffff6effaff00f0f1ff01f59ff9ff03eb7457afeeff
-05a8a37ffffceffcff02fa57dff9ff01fa8ff5ff0d7bb8fffd4afe4dff89f7fffff6effaff00f0f1
-ff01f59ff9ff03eb7457afeeff05a8a37ffffceffcff02fa57dff9ff01fa8ff5ff0d7bb8fffd4afe
-4dff89f7fffff6effaff00f0f1ff01f59ff9ff03eb7457afeeff05a8a37ffffceffcff02fa57dff9
-ff01fa8ff5ff0d7bb8fffd4afe4dff89f7fffff6effaff00f0f1ff0086fbff05eca876678ccdedff
-027d53bff8ff01e75bf8ff005ff5ff0c7cb8fffd4afe4cffacf8fffff6f9ff00f0f1ff0086fbff05
-eca876678ccdedff027d53bff8ff01e75bf8ff005ff5ff0c7cb8fffd4afe4cffacf8fffff6f9ff00
-f0f1ff0086fbff05eca876678ccdedff027d53bff8ff01e75bf8ff005ff5ff0c7cb8fffd4afe4cff
-acf8fffff6f9ff00f0f2ff01fa4efdff08fb75468beffe9db9efeeff026d84eff7ff0185aff9ff00
-6df5ff0c6cb8fffc4bfb4dff8cf7fffff5f9ff00f0f2ff01fa4efdff08fb75468beffe9db9efeeff
-026d84eff7ff0185aff9ff006df5ff0c6cb8fffc4bfb4dff8cf7fffff5f9ff00f0f2ff01fa4efdff
-08fb75468beffe9db9efeeff026d84eff7ff0185aff9ff006df5ff0c6cb8fffc4bfb4dff8cf7ffff
-f5f9ff00f0f2ff0ea4dffffffff95799bffffffffa8abfeeff076dc5ffffc74579effcff00faf8ff
-008bf5ff0c6ca9fffc4bfb4cff8cf7fffff5f9ff00f0f2ff0ea4dffffffff95799bffffffffa8abf
-eeff076dc5ffffc74579effcff00faf8ff008bf5ff0c6ca9fffc4bfb4cff8cf7fffff5f9ff00f0f2
-ff0ea4dffffffff95799bffffffffa8abfeeff076dc5ffffc74579effcff00faf8ff008bf5ff0c6c
-a9fffc4bfb4cff8cf7fffff5f9ff00f0f3ff01fa4cfdff0284efe9fdff02fe87bfeeff07befdffff
-75dca65ef2ff00a9f5ff0c6da9fffc4bfb4cff8bf7fffff5f9ff00f0f3ff01fa4cfdff0284efe9fd
-ff02fe87bfeeff07befdffff75dca65ef2ff00a9f5ff0c6da9fffc4bfb4cff8bf7fffff5f9ff00f0
-f3ff01fa4cfdff0284efe9fdff02fe87bfeeff07befdffff75dca65ef2ff00a9f5ff0c6da9fffc4b
-fb4cff8bf7fffff5f9ff00f0f3ff0873bffffffffd4bff9dfcff01c4efeeff07dcfffffe43643567
-f2ff00a9f5ff0c6c99fffb4bfb4cff8cf7fffff5f9ff00f0f3ff0873bffffffffd4bff9dfcff01c4
-efeeff07dcfffffe43643567f2ff00a9f5ff0c6c99fffb4bfb4cff8cf7fffff5f9ff00f0f3ff0873
-bffffffffd4bff9dfcff01c4efeeff07dcfffffe43643567f2ff00a9f5ff0c6c99fffb4bfb4cff8c
-f7fffff5f9ff00f0f4ff01f939fdff03f66fff7ffcff00f6f2ff00cefaff06fe433333569adff5ff
-01db7cf5ff0c5d99fffb4aa539ff7cf7fffff5f9ff00f0f4ff01f939fdff03f66fff7ffcff00f6f2
-ff00cefaff06fe433333569adff5ff01db7cf5ff0c5d99fffb4aa539ff7cf7fffff5f9ff00f0f4ff
-01f939fdff03f66fff7ffcff00f6f2ff00cefaff06fe433333569adff5ff01db7cf5ff0c5d99fffb
-4aa539ff7cf7fffff5f9ff00f0f4ff01f57ffdff03b4bfff7ffcff01f7bff4ff01edeffaff06fe63
-33333b546ef6ff02fe875ff5ff0c6da9fffb479dc6bf6cf7fffff5f9ff00f0f4ff01f57ffdff03b4
-bfff7ffcff01f7bff4ff01edeffaff06fe6333333b546ef6ff02fe875ff5ff0c6da9fffb479dc6bf
-6cf7fffff5f9ff00f0f4ff01f57ffdff03b4bfff7ffcff01f7bff4ff01edeffaff06fe6333333b54
-6ef6ff02fe875ff5ff0c6da9fffb479dc6bf6cf7fffff5f9ff00f0f4ff09f4effea69ec849fffe8f
-fcff01f85ff6ff02fe866df8ff05e633334d553af6ff02f7577ff5ff0c5db8fffb46ffec5e6cf7ff
-fff5f9ff00f0f4ff09f4effea69ec849fffe8ffcff01f85ff6ff02fe866df8ff05e633334d553af6
-ff02f7577ff5ff0c5db8fffb46ffec5e6cf7fffff5f9ff00f0f4ff09f4effea69ec849fffe8ffcff
-01f85ff6ff02fe866df8ff05e633334d553af6ff02f7577ff5ff0c5db8fffb46ffec5e6cf7fffff5
-f9ff00f0f4ff09f77863577347dffffb9ffcff01f95bf6ff01d6aef6ff04b8aeff5b46f6ff028344
-7ff5ff0c6ec8fffb4afff9344497ffffe5f9ff00f0f4ff09f77863577347dffffb9ffcff01f95bf6
-ff01d6aef6ff04b8aeff5b46f6ff0283447ff5ff0c6ec8fffb4afff9344497ffffe5f9ff00f0f4ff
-09f77863577347dffffb9ffcff01f95bf6ff01d6aef6ff04b8aeff5b46f6ff0283447ff5ff0c6ec8
-fffb4afff9344497ffffe5f9ff00f0f4ff09fe99abfffedffffffabffcff01f8c9f6ff005df2ff02
-6cb3eff8ff03f84334cff5ff0c5eb9fffb38ffe46745a7fffeb6f9ff00f0f4ff09fe99abfffedfff
-fffabffcff01f8c9f6ff005df2ff026cb3eff8ff03f84334cff5ff0c5eb9fffb38ffe46745a7fffe
-b6f9ff00f0f4ff09fe99abfffedffffffabffcff01f8c9f6ff005df2ff026cb3eff8ff03f84334cf
-f5ff0c5eb9fffb38ffe46745a7fffeb6f9ff00f0ecff01f9dffcff01f8f8f2ff01baeff7ff025ce4
-aff9ff03fe743337f4ff0c5eb8fffa45ffe5ff6cf7eadda6f9ff00f0ecff01f9dffcff01f8f8f2ff
-01baeff7ff025ce4aff9ff03fe743337f4ff0c5eb8fffa45ffe5ff6cf7eadda6f9ff00f0ecff01f9
-dffcff01f8f8f2ff01baeff7ff025ce4aff9ff03fe743337f4ff0c5eb8fffa45ffe5ff6cf7eadda6
-f9ff00f0ecff01f8dffcff01f8f8f3ff05c5464afffffefbff03fe6ff57ffaff04feb643345ef4ff
-0c4eb8fff944cf88ff5bf7a37ba6f9ff00f0ecff01f8dffcff01f8f8f3ff05c5464afffffefbff03
-fe6ff57ffaff04feb643345ef4ff0c4eb8fff944cf88ff5bf7a37ba6f9ff00f0ecff01f8dffcff01
-f8f8f3ff05c5464afffffefbff03fe6ff57ffaff04feb643345ef4ff0c4eb8fff944cf88ff5bf7a3
-7ba6f9ff00f0ecff01f9cffcff01f9e7f3ff05aedfe5bffdeff9ff01f99ffbff05eed7433346bff4
-ff0c4db9fff846df59ff6bf7a35ca7f9ff00f0ecff01f9cffcff01f9e7f3ff05aedfe5bffdeff9ff
-01f99ffbff05eed7433346bff4ff0c4db9fff846df59ff6bf7a35ca7f9ff00f0ecff01f9cffcff01
-f9e7f3ff05aedfe5bffdeff9ff01f99ffbff05eed7433346bff4ff0c4db9fff846df59ff6bf7a35c
-a7f9ff00f0ecff01f9cffcff02fac8dff2ff02fc4df8f0ff04fc64333378f3ff0c4ca9fff639ee84
-af5bf7834b97f9ff00f0ecff01f9cffcff02fac8dff2ff02fc4df8f0ff04fc64333378f3ff0c4ca9
-fff639ee84af5bf7834b97f9ff00f0ecff01f9cffcff02fac8dff2ff02fc4df8f0ff04fc64333378
-f3ff0c4ca9fff639ee84af5bf7834b97f9ff00f0ecff01fabffbff01a85ef1ff0179e8f1ff05fe85
-3333356ef3ff0c4da5585445759a5a5bf7c69b97f9ff00f0ecff01fabffbff01a85ef1ff0179e8f1
-ff05fe853333356ef3ff0c4da5585445759a5a5bf7c69b97f9ff00f0ecff01fabffbff01a85ef1ff
-0179e8f1ff05fe853333356ef3ff0c4da5585445759a5a5bf7c69b97f9ff00f0ecff01fb9ffaff00
-97f1ff01d6aaf1ff05e743433346dff3ff0c4da85eedba8654444bf7edfb97f9ff00f0ecff01fb9f
-faff0097f1ff01d6aaf1ff05e743433346dff3ff0c4da85eedba8654444bf7edfb97f9ff00f0ecff
-01fb9ffaff0097f1ff01d6aaf1ff05e743433346dff3ff0c4da85eedba8654444bf7edfb97f9ff00
-f0ecff01fd8ffaff01e6cff2ff01f96af2ff05fe743433346ef2ff0c5d8668aceffffffe5bf7effc
-97f9ff00f0ecff01fd8ffaff01e6cff2ff01f96af2ff05fe743433346ef2ff0c5d8668aceffffffe
-5bf7effc97f9ff00f0ecff01fd8ffaff01e6cff2ff01f96af2ff05fe743433346ef2ff0c5d8668ac
-effffffe5bf7effc97f9ff00f0ecff01fe7ffaff01f89ff2ff01fe58f4ff07feede744443346dff2
-ff0c7d746456555666685bf7fffd98f9ff00f0ecff01fe7ffaff01f89ff2ff01fe58f4ff07feede7
-44443346dff2ff0c7d746456555666685bf7fffd98f9ff00f0ecff01fe7ffaff01f89ff2ff01fe58
-f4ff07feede744443346dff2ff0c7d746456555666685bf7fffd98f9ff00f0ebff007ffaff01eb8f
-f1ff00b5f2ff05c889755459eff2ff0c6c8555bfffffec585bf7fffda8f9ff00f0ebff007ffaff01
-eb8ff1ff00b5f2ff05c889755459eff2ff0c6c8555bfffffec585bf7fffda8f9ff00f0ebff007ffa
-ff01eb8ff1ff00b5f2ff05c889755459eff2ff0c6c8555bfffffec585bf7fffda8f9ff00f0ebff00
-7ffaff01bd8ff1ff01f6cff3ff09eeffedbafd8efffeeedff7ff0dfe696597feffffffd55bf6fffe
-a9f9ff00f0ebff007ffaff01bd8ff1ff01f6cff3ff09eeffedbafd8efffeeedff7ff0dfe696597fe
-ffffffd55bf6fffea9f9ff00f0ebff007ffaff01bd8ff1ff01f6cff3ff09eeffedbafd8efffeeedf
-f7ff0dfe696597feffffffd55bf6fffea9f9ff00f0ebff007efaff01db9cf1ff01fb8feeff06fb67
-656764666dfaff0efd84434658abceeeecb64af6fffea8f9ff00f0ebff007efaff01db9cf1ff01fb
-8feeff06fb67656764666dfaff0efd84434658abceeeecb64af6fffea8f9ff00f0ebff007efaff01
-db9cf1ff01fb8feeff06fb67656764666dfaff0efd84434658abceeeecb64af6fffea8f9ff00f0eb
-ff009bfaff01f9c8f0ff007eedff05ccfffebefe7afaff0ef86aa98999a8764444364af6fffea9f9
-ff00f0ebff009bfaff01f9c8f0ff007eedff05ccfffebefe7afaff0ef86aa98999a8764444364af6
-fffea9f9ff00f0ebff009bfaff01f9c8f0ff007eedff05ccfffebefe7afaff0ef86aa98999a87644
-44364af6fffea9f9ff00f0ebff00bafaff02fe95acf1ff00d8edff06fbdf97cceee6effbff0eb865
-44665567594666444ae6fffd9af9ff00f0ebff00bafaff02fe95acf1ff00d8edff06fbdf97cceee6
-effbff0eb86544665567594666444ae6fffd9af9ff00f0ebff00bafaff02fe95acf1ff00d8edff06
-fbdf97cceee6effbff0eb86544665567594666444ae6fffd9af9ff00f0ebff00d8f9ff03fbcb88ef
-f3ff01fd8feeff06fe9eb4386efc7ffbff0efeb764957acb5756544649d5fffd8af9ff00f0ebff00
-d8f9ff03fbcb88eff3ff01fd8feeff06fe9eb4386efc7ffbff0efeb764957acb5756544649d5fffd
-8af9ff00f0ebff00d8f9ff03fbcb88eff3ff01fd8feeff06fe9eb4386efc7ffbff0efeb764957acb
-5756544649d5fffd8af9ff00f0ebff00f7f9ff04fcbffd88eff3ff00c9eeff06fd7ed5439eff8af9
-ff0ce5f7aefe6ecdbddc58d6fffc8af9ff00f0ebff00f7f9ff04fcbffd88eff3ff00c9eeff06fd7e
-d5439eff8af9ff0ce5f7aefe6ecdbddc58d6fffc8af9ff00f0ebff00f7f9ff04fcbffd88eff3ff00
-c9eeff06fd7ed5439eff8af9ff0ce5f7aefe6ecdbddc58d6fffc8af9ff00f0ebff00f7f8ff03baac
-fd7cf3ff01fc9ff2ff0aeffebaa638e8547fffd5dffaff0ce5f6adec58deebba57e6fffb8af9ff00
-f0ebff00f7f8ff03baacfd7cf3ff01fc9ff2ff0aeffebaa638e8547fffd5dffaff0ce5f6adec58de
-ebba57e6fffb8af9ff00f0ebff00f7f8ff03baacfd7cf3ff01fc9ff2ff0aeffebaa638e8547fffd5
-dffaff0ce5f6adec58deebba57e6fffb8af9ff00f0ebff01facff8ff03eb9cf7dff3ff0186cff7ff
-0ec96655556798674a54ba555cfffc6dfbff10feb5b76554445569a738f6fffa88ccccdffcff00f0
-ebff01facff8ff03eb9cf7dff3ff0186cff7ff0ec96655556798674a54ba555cfffc6dfbff10feb5
-b76554445569a738f6fffa88ccccdffcff00f0ebff01facff8ff03eb9cf7dff3ff0186cff7ff0ec9
-6655556798674a54ba555cfffc6dfbff10feb5b76554445569a738f6fffa88ccccdffcff00f0ebff
-01fd9ff7ff02fab86af3ff1be749effecbceefffeed996543344444333334bdeb36a454779bec68e
-fcff00b6fc440b5444564ae6fffd855554456dfdff00f0ebff01fd9ff7ff02fab86af3ff1be749ef
-fecbceefffeed996543344444333334bdeb36a454779bec68efcff00b6fc440b5444564ae6fffd85
-5554456dfdff00f0ebff01fd9ff7ff02fab86af3ff1be749effecbceefffeed99654334444433333
-4bdeb36a454779bec68efcff00b6fc440b5444564ae6fffd855554456dfdff00f0eaff006ff7ff02
-fe99e7f2ff08a455533469cdcdb643fa3326349ffff7343546976677468889889999644445555545
-5555454af6ffff86454444489afffffff0eaff006ff7ff02fe99e7f2ff08a455533469cdcdb643fa
-3326349ffff73435469766774688898899996444455555455555454af6ffff86454444489affffff
-f0eaff006ff7ff02fe99e7f2ff08a455533469cdcdb643fa3326349ffff734354697667746888988
-99996444455555455555454af6ffff86454444489afffffff0eaff008df7ff02f9e8f8f2ff06fc44
-5bdcdb9754fc33143444334438fffffd455844678bdfdacebaabababa8fb990f98775cf5efff78bb
-cbaaaab77ffffff0eaff008df7ff02f9e8f8f2ff06fc445bdcdb9754fc33143444334438fffffd45
-5844678bdfdacebaabababa8fb990f98775cf5efff78bbcbaaaab77ffffff0eaff008df7ff02f9e8
-f8f2ff06fc445bdcdb9754fc33143444334438fffffd455844678bdfdacebaabababa8fb990f9877
-5cf5efff78bbcbaaaab77ffffff0eaff00d8f7ff02f8d9acf1ff04e534444343fd332c4433456655
-437ffffffe466857eca37be8788767888888778799998aaabbba5bc5efff7899866658869ffffff0
-eaff00d8f7ff02f8d9acf1ff04e534444343fd332c4433456655437ffffffe466857eca37be87887
-67888888778799998aaabbba5bc5efff7899866658869ffffff0eaff00d8f7ff02f8d9acf1ff04e5
-34444343fd332c4433456655437ffffffe466857eca37be8788767888888778799998aaabbba5bc5
-efff7899866658869ffffff0eaff00f7f7ff02f98e8ef1ff35fc74333334688887abcbaaefefded9
-afffffff488666fed347c49ddcbbaabbba75a469c85cccdccb7db5cffe7cfff8bd6ff9cffffff0ea
-ff00f7f7ff02f98e8ef1ff35fc74333334688887abcbaaefefded9afffffff488666fed347c49ddc
-bbaabbba75a469c85cccdccb7db5cffe7cfff8bd6ff9cffffff0eaff00f7f7ff02f98e8ef1ff35fc
-74333334688887abcbaaefefded9afffffff488666fed347c49ddcbbaabbba75a469c85cccdccb7d
-b5cffe7cfff8bd6ff9cffffff0eaff00f7f7ff02f78f8fefff03edcdddeff9ff0cfd8fffffff57b5
-85dfe447c4bffcff1586e49efa7fffffff8ee5cffd7dfff8ce6ff9dffffff0eaff00f7f7ff02f78f
-8fefff03edcdddeff9ff0cfd8fffffff57b585dfe447c4bffcff1586e49efa7fffffff8ee5cffd7d
-fff8ce6ff9dffffff0eaff00f7f7ff02f78f8fefff03edcdddeff9ff0cfd8fffffff57b585dfe447
-c4bffcff1586e49efa7fffffff8ee5cffd7dfff8ce6ff9dffffff0eaff01f8dff8ff02f78cafedff
-00fcf8ff0cfe7ffffffe58c6949fe559b4dffcff15a7f48fe99fffffff8ff5dffe6dfff9ce6ff9df
-fffff0eaff01f8dff8ff02f78cafedff00fcf8ff0cfe7ffffffe58c6949fe559b4dffcff15a7f48f
-e99fffffff8ff5dffe6dfff9ce6ff9dffffff0eaff01f8dff8ff02f78cafedff00fcf8ff0cfe7fff
-fffe58c6949fe559b4dffcff15a7f48fe99fffffff8ff5dffe6dfff9ce6ff9dffffff0eaff01fbaf
-f8ff02f96cafe3ff0bfb8ffffffe58d8955ff65cb6fbff1596e58ff88ffffffd7ee5dfff6dfff8cd
-7ff9effffff0eaff01fbaff8ff02f96cafe3ff0bfb8ffffffe58d8955ff65cb6fbff1596e58ff88f
-fffffd7ee5dfff6dfff8cd7ff9effffff0eaff01fbaff8ff02f96cafe3ff0bfb8ffffffe58d8955f
-f65cb6fbff1596e58ff88ffffffd7ee5dfff6dfff8cd7ff9effffff0e9ff007ff7ff01798fe3ff0b
+0334447bbff1ff00f0fcff14e9fb5d6b54465455444534544685f77e7645674545f9ff04fd433533
+7cfcff15b5335646fffffc8bbffea8aeffed733aabaadedff8effbff01f854fb330043fc33033444
+7bbff1ff00f0fcff14f8c5d896547544644444344555a5f75c6654664489f9ff04f6335438bffdff
+15f946aeff74efffffd58ffffefffffa94368dfc8ccff7faff01fb44f533024475a9f0ff00f0fcff
+14f8c5d896547544644444344555a5f75c6654664489f9ff04f6335438bffdff15f946aeff74efff
+ffd58ffffefffffa94368dfc8ccff7faff01fb44f533024475a9f0ff00f0fcff14f8c5d896547544
+644444344555a5f75c6654664489f9ff04f6335438bffdff15f946aeff74efffffd58ffffefffffa
+94368dfc8ccff7faff01fb44f533024475a9f0ff00f0fcff14fa6de875657456445454443654b6f5
+6a6754543bdff9ff04b4367469bffeff0afc65cfffff849fffffb69ffdff07f883357cfeebffe6fa
+ff02fd6543fe330334443334fd330253adccf0ff00f0fcff14fa6de875657456445454443654b6f5
+6a6754543bdff9ff04b4367469bffeff0afc65cfffff849fffffb69ffdff07f883357cfeebffe6fa
+ff02fd6543fe330334443334fd330253adccf0ff00f0fcff14fa6de875657456445454443654b6f5
+6a6754543bdff9ff04b4367469bffeff0afc65cfffff849fffffb69ffdff07f883357cfeebffe6fa
+ff02fd6543fe330334443334fd330253adccf0ff00f0fcff13fe8ffa75685655446463444555a5e5
+6a7845535ff9ff04fc537fdaf5fdff01a38ffeff05d44efffffaaefdff03f98334bffeff00b7faff
+03fb643343fe3302443334fe330343566e9ff0ff00f0fcff13fe8ffa75685655446463444555a5e5
+6a7845535ff9ff04fc537fdaf5fdff01a38ffeff05d44efffffaaefdff03f98334bffeff00b7faff
+03fb643343fe3302443334fe330343566e9ff0ff00f0fcff13fe8ffa75685655446463444555a5e5
+6a7845535ff9ff04fc537fdaf5fdff01a38ffeff05d44efffffaaefdff03f98334bffeff00b7faff
+03fb643343fe3302443334fe330343566e9ff0ff00f0fbff129ef75968545745544354455575b45a
+765443bff9ff04c57affffc6fdff0057fdff06f93dfffffc58effeff07fa53339efeffff8bf9ff02
+843343fe330944333334333433bf78cff0ff00f0fbff129ef75968545745544354455575b45a7654
+43bff9ff04c57affffc6fdff0057fdff06f93dfffffc58effeff07fa53339efeffff8bf9ff028433
+43fe330944333334333433bf78cff0ff00f0fbff129ef75968545745544354455575b45a765443bf
+f9ff04c57affffc6fdff0057fdff06f93dfffffc58effeff07fa53339efeffff8bf9ff02843343fe
+330944333334333433bf78cff0ff00f0fbff06cbfb5795456848fe44074555548559675434f9ff05
+fd9bafffff6afeff0cfc5dfffcb9876639fffffe54bffeff07fc533356779bff8df9ff02fc4435fe
+33ff44ff3304443646fe8aefff00f0fbff06cbfb5795456848fe44074555548559675434f9ff05fd
+9bafffff6afeff0cfc5dfffcb9876639fffffe54bffeff07fc533356779bff8df9ff02fc4435fe33
+ff44ff3304443646fe8aefff00f0fbff06cbfb5795456848fe44074555548559675434f9ff05fd9b
+afffff6afeff0cfc5dfffcb9876639fffffe54bffeff07fc533356779bff8df9ff02fc4435fe33ff
+44ff3304443646fe8aefff00f0fbff11f8fea9945895584534444956457459664437f8ff04e8efff
+fe4dfeff0cfa38fb5333433335cfffffc4bffeff01fe93fd3301597bf8ff0d743534333334443343
+535559fe8fefff00f0fbff11f8fea9945895584534444956457459664437f8ff04e8effffe4dfeff
+0cfa38fb5333433335cfffffc4bffeff01fe93fd3301597bf8ff0d743534333334443343535559fe
+8fefff00f0fbff11f8fea9945895584534444956457459664437f8ff04e8effffe4dfeff0cfa38fb
+5333433335cfffffc4bffeff01fe93fd3301597bf8ff0d743534333334443343535559fe8fefff00
+f0fbff11fbafff8678c4644434445c5645544b66644bf8ff04eefffffa6ffeff0cfd345333343338
+94bffffff6bffdff06d4354456875449f8ff01c434fe330834444543537cbfd8efefff00f0fbff11
+fbafff8678c4644434445c5645544b66644bf8ff04eefffffa6ffeff0cfd34533334333894bfffff
+f6bffdff06d4354456875449f8ff01c434fe330834444543537cbfd8efefff00f0fbff11fbafff86
+78c4644434445c5645544b66644bf8ff04eefffffa6ffeff0cfd34533334333894bffffff6bffdff
+06d4354456875449f8ff01c434fe330834444543537cbfd8efefff00f0faff058efff6c89474fe44
+076b5645555b67544ef5ff01f7affeff0cfe533334333338b97ffffffeadfdff07f6464545557744
+eff9ff0cf5333433334333453356fffb6eeeff00f0faff058efff6c89474fe44076b5645555b6754
+4ef5ff01f7affeff0cfe533334333338b97ffffffeadfdff07f6464545557744eff9ff0cf5333433
+334333453356fffb6eeeff00f0faff058efff6c89474fe44076b5645555b67544ef5ff01f7affeff
+0cfe533334333338b97ffffffeadfdff07f6464545557744eff9ff0cf5333433334333453356fffb
+6eeeff00f0faff10e8eff8ea7544734454886544555b56648ff5ff01f4effdff075335843345338a
+7dfeff0079fdff07fe469333435777cff9ff02f64445fe33064466659efa77dfeeff00f0faff10e8
+eff8ea7544734454886544555b56648ff5ff01f4effdff075335843345338a7dfeff0079fdff07fe
+469333435777cff9ff02f64445fe33064466659efa77dfeeff00f0faff10e8eff8ea754473445488
+6544555b56648ff5ff01f4effdff075335843345338a7dfeff0079fdff07fe469333435777cff9ff
+02f64445fe33064466659efa77dfeeff00f0faff10fd9dfceb6559533844a59554565a5554eff5ff
+00e6fdff08fe45bdc43344436edefeff0067fdff07fe747334334789eff9ff0bfb4446333344458e
+66b758efedff00f0faff10fd9dfceb6559533844a59554565a5554eff5ff00e6fdff08fe45bdc433
+44436edefeff0067fdff07fe747334334789eff9ff0bfb4446333344458e66b758efedff00f0faff
+10fd9dfceb6559533844a59554565a5554eff5ff00e6fdff08fe45bdc43344436edefeff0067fdff
+07fe747334334789eff9ff0bfb4446333344458e66b758efedff00f0f9ff0ef8efee669a43484585
+b4657649453cf4ff009afcff0b4cffd33333435daefffffe5dfdff01eec5fe330136bff8ff09fd69
+b643345874bd636bebff00f0f9ff0ef8efee669a43484585b4657649453cf4ff009afcff0b4cffd3
+3333435daefffffe5dfdff01eec5fe330136bff8ff09fd69b643345874bd636bebff00f0f9ff0ef8
+efee669a43484585b4657649453cf4ff009afcff0b4cffd33333435daefffffe5dfdff01eec5fe33
+0136bff8ff09fd69b643345874bd636bebff00f0f9ff0efe9fffa9b634a54768a5b55559549ff4ff
+007efcff0b88fef5333334775ffffff8affdff07feeb43333356768ff8ff07c9fb87dcfed876adea
+ff00f0f9ff0efe9fffa9b634a54768a5b55559549ff4ff007efcff0b88fef5333334775ffffff8af
+fdff07feeb43333356768ff8ff07c9fb87dcfed876adeaff00f0f9ff0efe9fffa9b634a54768a5b5
+5559549ff4ff007efcff0b88fef5333334775ffffff8affdff07feeb43333356768ff8ff07c9fb87
+dcfed876adeaff00f0f8ff0ccbffbae86594775d6684547655f3ff006ffcff07e77cdc433346a56f
+f7ff0583333377845ff8ff06f5668877778bdffcff03feffdfdffeff00fef6ff00f0f8ff0ccbffba
+e86594775d6684547655f3ff006ffcff07e77cdc433346a56ff7ff0583333377845ff8ff06f56688
+77778bdffcff03feffdfdffeff00fef6ff00f0f8ff0ccbffbae86594775d6684547655f3ff006ffc
+ff07e77cdc433346a56ff7ff0583333377845ff8ff06f5668877778bdffcff03feffdfdffeff00fe
+f6ff00f0f8ff0cfdaeefffda55b4ab586554954bf4ff01fc4efdff08feeda49fd88989b59ff7ff05
+d445569c94cff8ff03fbdedeeffcff0ddeffe58bff6e6ffffebde597bdbef9ff00f0f8ff0cfdaeef
+ffda55b4ab586554954bf4ff01fc4efdff08feeda49fd88989b59ff7ff05d445569c94cff8ff03fb
+dedeeffcff0ddeffe58bff6e6ffffebde597bdbef9ff00f0f8ff0cfdaeefffda55b4ab586554954b
+f4ff01fc4efdff08feeda49fd88989b59ff7ff05d445569c94cff8ff03fbdedeeffcff0ddeffe58b
+ff6e6ffffebde597bdbef9ff00f0f7ff0bfabdfffcbb49e6bf7654854ff4ff01f95efbff05fd67aa
+b75558f6ff05f945669859dff7ff008ffaff0fa4cff738fe579fcbfe76db549b6577affbff00f0f7
+ff0bfabdfffcbb49e6bf7654854ff4ff01f95efbff05fd67aab75558f6ff05f945669859dff7ff00
+8ffaff0fa4cff738fe579fcbfe76db549b6577affbff00f0f7ff0bfabdfffcbb49e6bf7654854ff4
+ff01f95efbff05fd67aab75558f6ff05f945669859dff7ff008ffaff0fa4cff738fe579fcbfe76db
+549b6577affbff00f0f6ff0afcacfc94aa79fd6855578ff4ff01f59efbff05eefd989abdeff5ff03
+947757daf6ff009dfaff0ffb5dff56fd45eb48dfa55d849b46b6effbff00f0f6ff0afcacfc94aa79
+fd6855578ff4ff01f59efbff05eefd989abdeff5ff03947757daf6ff009dfaff0ffb5dff56fd45eb
+48dfa55d849b46b6effbff00f0f6ff0afcacfc94aa79fd6855578ff4ff01f59efbff05eefd989abd
+eff5ff03947757daf6ff009dfaff0ffb5dff56fd45eb48dfa55d849b46b6effbff00f0f5ff09feba
+befecffcde8cd5dff4ff01e6aefaff03feefffeef4ff03f64dfffcf6ff00e8f9ff0dd6efd8ee5dd4
+36bff846d48c4c6efaff00f0f5ff09febabefecffcde8cd5dff4ff01e6aefaff03feefffeef4ff03
+f64dfffcf6ff00e8f9ff0dd6efd8ee5dd436bff846d48c4c6efaff00f0f5ff09febabefecffcde8c
+d5dff4ff01e6aefaff03feefffeef4ff03f64dfffcf6ff00e8f9ff0dd6efd8ee5dd436bff846d48c
+4c6efaff00f0f3ffffbb00cefeff00e5f3ff0198ccf8ff01efdff4ff04fd58fff97ff7ff00f8f9ff
+0efa6fffffec59358876446467558aeffbff00f0f3ffffbb00cefeff00e5f3ff0198ccf8ff01efdf
+f4ff04fd58fff97ff7ff00f8f9ff0efa6fffffec59358876446467558aeffbff00f0f3ffffbb00ce
+feff00e5f3ff0198ccf8ff01efdff4ff04fd58fff97ff7ff00f8f9ff0efa6fffffec593588764464
+67558aeffbff00f0f1ff04ecbcceff69f3ff025cfacee9ff03a4cffb58f7ff01fbcffbff0fcaa957
+766664678889bdeff9fffffebffbff00f0f1ff04ecbcceff69f3ff025cfacee9ff03a4cffb58f7ff
+01fbcffbff0fcaa957766664678889bdeff9fffffebffbff00f0f1ff04ecbcceff69f3ff025cface
+e9ff03a4cffb58f7ff01fbcffbff0fcaa957766664678889bdeff9fffffebffbff00f0efff02fdc9
+4ef4ff03fd3efbcde9ff04f77ffe46dff7ff009ffbff047bcc89bceffbff00fafeff00bffbff00f0
+efff02fdc94ef4ff03fd3efbcde9ff04f77ffe46dff7ff009ffbff047bcc89bceffbff00fafeff00
+bffbff00f0efff02fdc94ef4ff03fd3efbcde9ff04f77ffe46dff7ff009ffbff047bcc89bceffbff
+00fafeff00bffbff00f0eeff01f96ff4ff03f73cfedde9ff04fb4dffa78ef7ff00dafbff028fffcf
+f9ff04fafffffebffbff00f0eeff01f96ff4ff03f73cfedde9ff04fb4dffa78ef7ff00dafbff028f
+ffcff9ff04fafffffebffbff00f0eeff01f96ff4ff03f73cfedde9ff04fb4dffa78ef7ff00dafbff
+028fffcff9ff04fafffffebffbff00f0eeff01f4cff4ff03d54efffee8ff0498fff5d7eef8ff01f9
+effcff029ffeaffdff08eddbba9997ab79adbffbff00f0eeff01f4cff4ff03d54efffee8ff0498ff
+f5d7eef8ff01f9effcff029ffeaffdff08eddbba9997ab79adbffbff00f0eeff01f4cff4ff03d54e
+fffee8ff0498fff5d7eef8ff01f9effcff029ffeaffdff08eddbba9997ab79adbffbff00f0eeff00
+c6f3ff027956dfe7ff04e5eff78e7df8ff01fe9ffdff10fd787658a987765445785796a8dd55a9cf
+fbff00f0eeff00c6f3ff027956dfe7ff04e5eff78e7df8ff01fe9ffdff10fd787658a98776544578
+5796a8dd55a9cffbff00f0eeff00c6f3ff027956dfe7ff04e5eff78e7df8ff01fe9ffdff10fd7876
+58a987765445785796a8dd55a9cffbff00f0eeff007af4ff02fc5fb7e6ff05f56ff95fe9cff8ff00
+dbfdff0ffe9a7684bbb968d74bff78f9fedf97dffaff00f0eeff007af4ff02fc5fb7e6ff05f56ff9
+5fe9cff8ff00dbfdff0ffe9a7684bbb968d74bff78f9fedf97dffaff00f0eeff007af4ff02fc5fb7
+e6ff05f56ff95fe9cff8ff00dbfdff0ffe9a7684bbb968d74bff78f9fedf97dffaff00f0efff01fe
+4ef4ff02f78f95f1ff00edf7ff06fd5dfa4effaaeff9ff01fbdffcff0d9bd5fffe6af94aff77f9ff
+efe7dffaff00f0efff01fe4ef4ff02f78f95f1ff00edf7ff06fd5dfa4effaaeff9ff01fbdffcff0d
+9bd5fffe6af94aff77f9ffefe7dffaff00f0efff01fe4ef4ff02f78f95f1ff00edf7ff06fd5dfa4e
+ffaaeff9ff01fbdffcff0d9bd5fffe6af94aff77f9ffefe7dffaff00f0efff01fb6ff4ff03c4efb6
+8ef4ff05feeeb4aeffecf9ff0688fc4afffe89eff9ff00aefcff0d8bb5ffff6afa49ff77f9fffff7
+dffaff00f0efff01fb6ff4ff03c4efb68ef4ff05feeeb4aeffecf9ff0688fc4afffe89eff9ff00ae
+fcff0d8bb5ffff6afa49ff77f9fffff7dffaff00f0efff01fb6ff4ff03c4efb68ef4ff05feeeb4ae
+ffecf9ff0688fc4afffe89eff9ff00aefcff0d8bb5ffff6afa49ff77f9fffff7dffaff00f0efff01
+f7aff5ff05fe59ffd85eeff5ff0596678959ddddf9ff07e6bd59fffffd99aefaff01f98efdff0d6b
+c5ffff5afa48ff86f8ffeff7dffaff00f0efff01f7aff5ff05fe59ffd85eeff5ff0596678959dddd
+f9ff07e6bd59fffffd99aefaff01f98efdff0d6bc5ffff5afa48ff86f8ffeff7dffaff00f0efff01
+f7aff5ff05fe59ffd85eeff5ff0596678959ddddf9ff07e6bd59fffffd99aefaff01f98efdff0d6b
+c5ffff5afa48ff86f8ffeff7dffaff00f0efff01f4eff5ff05f77ffffc668ff2ff05c8667878888b
+fcff02fb6c59fdff02d98beffbff01e8effeff0d7ad6fffe5afb49ff75f8fffff7dffaff00f0efff
+01f4eff5ff05f77ffffc668ff2ff05c8667878888bfcff02fb6c59fdff02d98beffbff01e8effeff
+0d7ad6fffe5afb49ff75f8fffff7dffaff00f0efff01f4eff5ff05f77ffffc668ff2ff05c8667878
+888bfcff02fb6c59fdff02d98beffbff01e8effeff0d7ad6fffe5afb49ff75f8fffff7dffaff00f0
+efff00c5f4ff05a6efffff754df3ff05ecbcccddeeeffaff01685afcff03fb78adeffeff02ebaaef
+feff0d7bd6ffff4bfb4aff75f8fffff7dffaff00f0efff00c5f4ff05a6efffff754df3ff05ecbccc
+ddeeeffaff01685afcff03fb78adeffeff02ebaaeffeff0d7bd6ffff4bfb4aff75f8fffff7dffaff
+00f0efff00c5f4ff05a6efffff754df3ff05ecbcccddeeeffaff01685afcff03fb78adeffeff02eb
+aaeffeff0d7bd6ffff4bfb4aff75f8fffff7dffaff00f0efff0089f5ff01e76ffeff01fb6bf5ff06
+fd66787765458df9ff01a46cfaff05c988999989befcff0d7bc7ffff5afc59ff76f8fffff6dffaff
+00f0efff0089f5ff01e76ffeff01fb6bf5ff06fd66787765458df9ff01a46cfaff05c988999989be
+fcff0d7bc7ffff5afc59ff76f8fffff6dffaff00f0efff0089f5ff01e76ffeff01fb6bf5ff06fd66
+787765458df9ff01a46cfaff05c988999989befcff0d7bc7ffff5afc59ff76f8fffff6dffaff00f0
+efff005ef6ff02fe55dffdff00abf5ff01f5affeff03feb858effbff01d54eefff0d8bc7fffe4afc
+5aff77f8fffff6effaff00f0efff005ef6ff02fe55dffdff00abf5ff01f5affeff03feb858effbff
+01d54eefff0d8bc7fffe4afc5aff77f8fffff6effaff00f0efff005ef6ff02fe55dffdff00abf5ff
+01f5affeff03feb858effbff01d54eefff0d8bc7fffe4afc5aff77f8fffff6effaff00f0f0ff01fb
+5ff6ff01c44dfcff00eff5ff0098fbff01d74bfbff02fc4beff0ff0d7bb7fffe4afd4aff87f8ffff
+f6effaff00f0f0ff01fb5ff6ff01c44dfcff00eff5ff0098fbff01d74bfbff02fc4beff0ff0d7bb7
+fffe4afd4aff87f8fffff6effaff00f0f0ff01fb5ff6ff01c44dfcff00eff5ff0098fbff01d74bfb
+ff02fc4beff0ff0d7bb7fffe4afd4aff87f8fffff6effaff00f0f0ff01f6bff7ff02fd44cff0ff01
+fc4dfaff01b58efbff0474dfedc88af3ff0d7bb7fffe49fe4bff78f7fffff6effaff00f0f0ff01f6
+bff7ff02fd44cff0ff01fc4dfaff01b58efbff0474dfedc88af3ff0d7bb7fffe49fe4bff78f7ffff
+f6effaff00f0f0ff01f6bff7ff02fd44cff0ff01fc4dfaff01b58efbff0474dfedc88af3ff0d7bb7
+fffe49fe4bff78f7fffff6effaff00f0f0ff00b5f6ff01b55cefff04f6cfb6448efcff01a5affcff
+0596544557776df4ff0d7bb7fffe49fe4cff78f8fffff6effaff00f0f0ff00b5f6ff01b55cefff04
+f6cfb6448efcff01a5affcff0596544557776df4ff0d7bb7fffe49fe4cff78f8fffff6effaff00f0
+f0ff00b5f6ff01b55cefff04f6cfb6448efcff01a5affcff0596544557776df4ff0d7bb7fffe49fe
+4cff78f8fffff6effaff00f0f1ff01fe5cf8ff03fea658efefff05e6f8357755dffdff02fd66bffc
+ff00fefeff01d5eff5ff0d7ba8fffe49fe4cff88f7fffff6effaff00f0f1ff01fe5cf8ff03fea658
+efefff05e6f8357755dffdff02fd66bffcff00fefeff01d5eff5ff0d7ba8fffe49fe4cff88f7ffff
+f6effaff00f0f1ff01fe5cf8ff03fea658efefff05e6f8357755dffdff02fd66bffcff00fefeff01
+d5eff5ff0d7ba8fffe49fe4cff88f7fffff6effaff00f0f1ff01f59ff9ff03eb7457afeeff05a8a3
+7ffffceffcff02fa57dff9ff01fa8ff5ff0d7bb8fffd4afe4dff89f7fffff6effaff00f0f1ff01f5
+9ff9ff03eb7457afeeff05a8a37ffffceffcff02fa57dff9ff01fa8ff5ff0d7bb8fffd4afe4dff89
+f7fffff6effaff00f0f1ff01f59ff9ff03eb7457afeeff05a8a37ffffceffcff02fa57dff9ff01fa
+8ff5ff0d7bb8fffd4afe4dff89f7fffff6effaff00f0f1ff0086fbff05eca876678ccdedff027d53
+bff8ff01e75bf8ff005ff5ff0c7cb8fffd4afe4cffacf8fffff6f9ff00f0f1ff0086fbff05eca876
+678ccdedff027d53bff8ff01e75bf8ff005ff5ff0c7cb8fffd4afe4cffacf8fffff6f9ff00f0f1ff
+0086fbff05eca876678ccdedff027d53bff8ff01e75bf8ff005ff5ff0c7cb8fffd4afe4cffacf8ff
+fff6f9ff00f0f2ff01fa4efdff08fb75468beffe9db9efeeff026d84eff7ff0185aff9ff006df5ff
+0c6cb8fffc4bfb4dff8cf7fffff5f9ff00f0f2ff01fa4efdff08fb75468beffe9db9efeeff026d84
+eff7ff0185aff9ff006df5ff0c6cb8fffc4bfb4dff8cf7fffff5f9ff00f0f2ff01fa4efdff08fb75
+468beffe9db9efeeff026d84eff7ff0185aff9ff006df5ff0c6cb8fffc4bfb4dff8cf7fffff5f9ff
+00f0f2ff01a4dffeff03f95799bffeff02fa8abfeeff076dc5ffffc74579effcff00faf8ff008bf5
+ff0c6ca9fffc4bfb4cff8cf7fffff5f9ff00f0f2ff01a4dffeff03f95799bffeff02fa8abfeeff07
+6dc5ffffc74579effcff00faf8ff008bf5ff0c6ca9fffc4bfb4cff8cf7fffff5f9ff00f0f2ff01a4
+dffeff03f95799bffeff02fa8abfeeff076dc5ffffc74579effcff00faf8ff008bf5ff0c6ca9fffc
+4bfb4cff8cf7fffff5f9ff00f0f3ff01fa4cfdff0284efe9fdff02fe87bfeeff07befdffff75dca6
+5ef2ff00a9f5ff0c6da9fffc4bfb4cff8bf7fffff5f9ff00f0f3ff01fa4cfdff0284efe9fdff02fe
+87bfeeff07befdffff75dca65ef2ff00a9f5ff0c6da9fffc4bfb4cff8bf7fffff5f9ff00f0f3ff01
+fa4cfdff0284efe9fdff02fe87bfeeff07befdffff75dca65ef2ff00a9f5ff0c6da9fffc4bfb4cff
+8bf7fffff5f9ff00f0f3ff0173bffeff03fd4bff9dfcff01c4efeeff07dcfffffe43643567f2ff00
+a9f5ff0c6c99fffb4bfb4cff8cf7fffff5f9ff00f0f3ff0173bffeff03fd4bff9dfcff01c4efeeff
+07dcfffffe43643567f2ff00a9f5ff0c6c99fffb4bfb4cff8cf7fffff5f9ff00f0f3ff0173bffeff
+03fd4bff9dfcff01c4efeeff07dcfffffe43643567f2ff00a9f5ff0c6c99fffb4bfb4cff8cf7ffff
+f5f9ff00f0f4ff01f939fdff03f66fff7ffcff00f6f2ff00cefaff06fe433333569adff5ff01db7c
+f5ff0c5d99fffb4aa539ff7cf7fffff5f9ff00f0f4ff01f939fdff03f66fff7ffcff00f6f2ff00ce
+faff06fe433333569adff5ff01db7cf5ff0c5d99fffb4aa539ff7cf7fffff5f9ff00f0f4ff01f939
+fdff03f66fff7ffcff00f6f2ff00cefaff06fe433333569adff5ff01db7cf5ff0c5d99fffb4aa539
+ff7cf7fffff5f9ff00f0f4ff01f57ffdff03b4bfff7ffcff01f7bff4ff01edeffaff06fe6333333b
+546ef6ff02fe875ff5ff0c6da9fffb479dc6bf6cf7fffff5f9ff00f0f4ff01f57ffdff03b4bfff7f
+fcff01f7bff4ff01edeffaff06fe6333333b546ef6ff02fe875ff5ff0c6da9fffb479dc6bf6cf7ff
+fff5f9ff00f0f4ff01f57ffdff03b4bfff7ffcff01f7bff4ff01edeffaff06fe6333333b546ef6ff
+02fe875ff5ff0c6da9fffb479dc6bf6cf7fffff5f9ff00f0f4ff09f4effea69ec849fffe8ffcff01
+f85ff6ff02fe866df8ff05e633334d553af6ff02f7577ff5ff0c5db8fffb46ffec5e6cf7fffff5f9
+ff00f0f4ff09f4effea69ec849fffe8ffcff01f85ff6ff02fe866df8ff05e633334d553af6ff02f7
+577ff5ff0c5db8fffb46ffec5e6cf7fffff5f9ff00f0f4ff09f4effea69ec849fffe8ffcff01f85f
+f6ff02fe866df8ff05e633334d553af6ff02f7577ff5ff0c5db8fffb46ffec5e6cf7fffff5f9ff00
+f0f4ff09f77863577347dffffb9ffcff01f95bf6ff01d6aef6ff04b8aeff5b46f6ff0283447ff5ff
+0c6ec8fffb4afff9344497ffffe5f9ff00f0f4ff09f77863577347dffffb9ffcff01f95bf6ff01d6
+aef6ff04b8aeff5b46f6ff0283447ff5ff0c6ec8fffb4afff9344497ffffe5f9ff00f0f4ff09f778
+63577347dffffb9ffcff01f95bf6ff01d6aef6ff04b8aeff5b46f6ff0283447ff5ff0c6ec8fffb4a
+fff9344497ffffe5f9ff00f0f4ff09fe99abfffedffffffabffcff01f8c9f6ff005df2ff026cb3ef
+f8ff03f84334cff5ff0c5eb9fffb38ffe46745a7fffeb6f9ff00f0f4ff09fe99abfffedffffffabf
+fcff01f8c9f6ff005df2ff026cb3eff8ff03f84334cff5ff0c5eb9fffb38ffe46745a7fffeb6f9ff
+00f0f4ff09fe99abfffedffffffabffcff01f8c9f6ff005df2ff026cb3eff8ff03f84334cff5ff0c
+5eb9fffb38ffe46745a7fffeb6f9ff00f0ecff01f9dffcfffff8f2ff01baeff7ff025ce4aff9ff03
+fe743337f4ff0c5eb8fffa45ffe5ff6cf7eadda6f9ff00f0ecff01f9dffcfffff8f2ff01baeff7ff
+025ce4aff9ff03fe743337f4ff0c5eb8fffa45ffe5ff6cf7eadda6f9ff00f0ecff01f9dffcfffff8
+f2ff01baeff7ff025ce4aff9ff03fe743337f4ff0c5eb8fffa45ffe5ff6cf7eadda6f9ff00f0ecff
+01f8dffcfffff8f3ff05c5464afffffefbff03fe6ff57ffaff04feb643345ef4ff0c4eb8fff944cf
+88ff5bf7a37ba6f9ff00f0ecff01f8dffcfffff8f3ff05c5464afffffefbff03fe6ff57ffaff04fe
+b643345ef4ff0c4eb8fff944cf88ff5bf7a37ba6f9ff00f0ecff01f8dffcfffff8f3ff05c5464aff
+fffefbff03fe6ff57ffaff04feb643345ef4ff0c4eb8fff944cf88ff5bf7a37ba6f9ff00f0ecff01
+f9cffcff01f9e7f3ff05aedfe5bffdeff9ff01f99ffbff05eed7433346bff4ff0c4db9fff846df59
+ff6bf7a35ca7f9ff00f0ecff01f9cffcff01f9e7f3ff05aedfe5bffdeff9ff01f99ffbff05eed743
+3346bff4ff0c4db9fff846df59ff6bf7a35ca7f9ff00f0ecff01f9cffcff01f9e7f3ff05aedfe5bf
+fdeff9ff01f99ffbff05eed7433346bff4ff0c4db9fff846df59ff6bf7a35ca7f9ff00f0ecff01f9
+cffcff02fac8dff2ff02fc4df8f0ff04fc64333378f3ff0c4ca9fff639ee84af5bf7834b97f9ff00
+f0ecff01f9cffcff02fac8dff2ff02fc4df8f0ff04fc64333378f3ff0c4ca9fff639ee84af5bf783
+4b97f9ff00f0ecff01f9cffcff02fac8dff2ff02fc4df8f0ff04fc64333378f3ff0c4ca9fff639ee
+84af5bf7834b97f9ff00f0ecff01fabffbff01a85ef1ff0179e8f1ff05fe853333356ef3ff0c4da5
+585445759a5a5bf7c69b97f9ff00f0ecff01fabffbff01a85ef1ff0179e8f1ff05fe853333356ef3
+ff0c4da5585445759a5a5bf7c69b97f9ff00f0ecff01fabffbff01a85ef1ff0179e8f1ff05fe8533
+33356ef3ff0c4da5585445759a5a5bf7c69b97f9ff00f0ecff01fb9ffaff0097f1ff01d6aaf1ff05
+e743433346dff3ff0c4da85eedba8654444bf7edfb97f9ff00f0ecff01fb9ffaff0097f1ff01d6aa
+f1ff05e743433346dff3ff0c4da85eedba8654444bf7edfb97f9ff00f0ecff01fb9ffaff0097f1ff
+01d6aaf1ff05e743433346dff3ff0c4da85eedba8654444bf7edfb97f9ff00f0ecff01fd8ffaff01
+e6cff2ff01f96af2ff05fe743433346ef2ff0c5d8668aceffffffe5bf7effc97f9ff00f0ecff01fd
+8ffaff01e6cff2ff01f96af2ff05fe743433346ef2ff0c5d8668aceffffffe5bf7effc97f9ff00f0
+ecff01fd8ffaff01e6cff2ff01f96af2ff05fe743433346ef2ff0c5d8668aceffffffe5bf7effc97
+f9ff00f0ecff01fe7ffaff01f89ff2ff01fe58f4ff07feede744443346dff2ff0c7d746456555666
+685bf7fffd98f9ff00f0ecff01fe7ffaff01f89ff2ff01fe58f4ff07feede744443346dff2ff0c7d
+746456555666685bf7fffd98f9ff00f0ecff01fe7ffaff01f89ff2ff01fe58f4ff07feede7444433
+46dff2ff0c7d746456555666685bf7fffd98f9ff00f0ebff007ffaff01eb8ff1ff00b5f2ff05c889
+755459eff2ff0c6c8555bfffffec585bf7fffda8f9ff00f0ebff007ffaff01eb8ff1ff00b5f2ff05
+c889755459eff2ff0c6c8555bfffffec585bf7fffda8f9ff00f0ebff007ffaff01eb8ff1ff00b5f2
+ff05c889755459eff2ff0c6c8555bfffffec585bf7fffda8f9ff00f0ebff007ffaff01bd8ff1ff01
+f6cff3ff09eeffedbafd8efffeeedff7ff04fe696597fefeff05d55bf6fffea9f9ff00f0ebff007f
+faff01bd8ff1ff01f6cff3ff09eeffedbafd8efffeeedff7ff04fe696597fefeff05d55bf6fffea9
+f9ff00f0ebff007ffaff01bd8ff1ff01f6cff3ff09eeffedbafd8efffeeedff7ff04fe696597fefe
+ff05d55bf6fffea9f9ff00f0ebff007efaff01db9cf1ff01fb8feeff06fb67656764666dfaff0efd
+84434658abceeeecb64af6fffea8f9ff00f0ebff007efaff01db9cf1ff01fb8feeff06fb67656764
+666dfaff0efd84434658abceeeecb64af6fffea8f9ff00f0ebff007efaff01db9cf1ff01fb8feeff
+06fb67656764666dfaff0efd84434658abceeeecb64af6fffea8f9ff00f0ebff009bfaff01f9c8f0
+ff007eedff05ccfffebefe7afaff0ef86aa98999a8764444364af6fffea9f9ff00f0ebff009bfaff
+01f9c8f0ff007eedff05ccfffebefe7afaff0ef86aa98999a8764444364af6fffea9f9ff00f0ebff
+009bfaff01f9c8f0ff007eedff05ccfffebefe7afaff0ef86aa98999a8764444364af6fffea9f9ff
+00f0ebff00bafaff02fe95acf1ff00d8edff06fbdf97cceee6effbff0eb86544665567594666444a
+e6fffd9af9ff00f0ebff00bafaff02fe95acf1ff00d8edff06fbdf97cceee6effbff0eb865446655
+67594666444ae6fffd9af9ff00f0ebff00bafaff02fe95acf1ff00d8edff06fbdf97cceee6effbff
+0eb86544665567594666444ae6fffd9af9ff00f0ebff00d8f9ff03fbcb88eff3ff01fd8feeff06fe
+9eb4386efc7ffbff0efeb764957acb5756544649d5fffd8af9ff00f0ebff00d8f9ff03fbcb88eff3
+ff01fd8feeff06fe9eb4386efc7ffbff0efeb764957acb5756544649d5fffd8af9ff00f0ebff00d8
+f9ff03fbcb88eff3ff01fd8feeff06fe9eb4386efc7ffbff0efeb764957acb5756544649d5fffd8a
+f9ff00f0ebff00f7f9ff04fcbffd88eff3ff00c9eeff06fd7ed5439eff8af9ff0ce5f7aefe6ecdbd
+dc58d6fffc8af9ff00f0ebff00f7f9ff04fcbffd88eff3ff00c9eeff06fd7ed5439eff8af9ff0ce5
+f7aefe6ecdbddc58d6fffc8af9ff00f0ebff00f7f9ff04fcbffd88eff3ff00c9eeff06fd7ed5439e
+ff8af9ff0ce5f7aefe6ecdbddc58d6fffc8af9ff00f0ebff00f7f8ff03baacfd7cf3ff01fc9ff2ff
+0aeffebaa638e8547fffd5dffaff0ce5f6adec58deebba57e6fffb8af9ff00f0ebff00f7f8ff03ba
+acfd7cf3ff01fc9ff2ff0aeffebaa638e8547fffd5dffaff0ce5f6adec58deebba57e6fffb8af9ff
+00f0ebff00f7f8ff03baacfd7cf3ff01fc9ff2ff0aeffebaa638e8547fffd5dffaff0ce5f6adec58
+deebba57e6fffb8af9ff00f0ebff01facff8ff03eb9cf7dff3ff0186cff7ff0ec96655556798674a
+54ba555cfffc6dfbff10feb5b76554445569a738f6fffa88ccccdffcff00f0ebff01facff8ff03eb
+9cf7dff3ff0186cff7ff0ec96655556798674a54ba555cfffc6dfbff10feb5b76554445569a738f6
+fffa88ccccdffcff00f0ebff01facff8ff03eb9cf7dff3ff0186cff7ff0ec96655556798674a54ba
+555cfffc6dfbff10feb5b76554445569a738f6fffa88ccccdffcff00f0ebff01fd9ff7ff02fab86a
+f3ff1be749effecbceefffeed996543344444333334bdeb36a454779bec68efcff00b6fc440b5444
+564ae6fffd855554456dfdff00f0ebff01fd9ff7ff02fab86af3ff1be749effecbceefffeed99654
+3344444333334bdeb36a454779bec68efcff00b6fc440b5444564ae6fffd855554456dfdff00f0eb
+ff01fd9ff7ff02fab86af3ff1be749effecbceefffeed996543344444333334bdeb36a454779bec6
+8efcff00b6fc440b5444564ae6fffd855554456dfdff00f0eaff006ff7ff02fe99e7f2ff08a45553
+3469cdcdb643fa3322349ffff73435469766774688898899996444455555455555454af6ffff8645
+4444489afeff00f0eaff006ff7ff02fe99e7f2ff08a455533469cdcdb643fa3322349ffff7343546
+9766774688898899996444455555455555454af6ffff86454444489afeff00f0eaff006ff7ff02fe
+99e7f2ff08a455533469cdcdb643fa3322349ffff734354697667746888988999964444555554555
+55454af6ffff86454444489afeff00f0eaff008df7ff02f9e8f8f2ff06fc445bdcdb9754fc331034
+44334438fffffd455844678bdfdacebafeab00a8fb990f98775cf5efff78bbcbaaaab77ffffff0ea
+ff008df7ff02f9e8f8f2ff06fc445bdcdb9754fc33103444334438fffffd455844678bdfdacebafe
+ab00a8fb990f98775cf5efff78bbcbaaaab77ffffff0eaff008df7ff02f9e8f8f2ff06fc445bdcdb
+9754fc33103444334438fffffd455844678bdfdacebafeab00a8fb990f98775cf5efff78bbcbaaaa
+b77ffffff0eaff00d8f7ff02f8d9acf1ff04e534444343fd33134433456655437ffffffe466857ec
+a37be8788767fe8815778799998aaabbba5bc5efff7899866658869ffffff0eaff00d8f7ff02f8d9
+acf1ff04e534444343fd33134433456655437ffffffe466857eca37be8788767fe8815778799998a
+aabbba5bc5efff7899866658869ffffff0eaff00d8f7ff02f8d9acf1ff04e534444343fd33134433
+456655437ffffffe466857eca37be8788767fe8815778799998aaabbba5bc5efff7899866658869f
+fffff0eaff00f7f7ff02f98e8ef1ff0ffc74333334688887abcbaaefefded9affeff22488666fed3
+47c49ddcbbaabbba75a469c85cccdccb7db5cffe7cfff8bd6ff9cffffff0eaff00f7f7ff02f98e8e
+f1ff0ffc74333334688887abcbaaefefded9affeff22488666fed347c49ddcbbaabbba75a469c85c
+ccdccb7db5cffe7cfff8bd6ff9cffffff0eaff00f7f7ff02f98e8ef1ff0ffc74333334688887abcb
+aaefefded9affeff22488666fed347c49ddcbbaabbba75a469c85cccdccb7db5cffe7cfff8bd6ff9
+cffffff0eaff00f7f7ff02f78f8fefff03edcdddeff9ff01fd8ffeff0757b585dfe447c4bffcff04
+86e49efa7ffeff0d8ee5cffd7dfff8ce6ff9dffffff0eaff00f7f7ff02f78f8fefff03edcdddeff9
+ff01fd8ffeff0757b585dfe447c4bffcff0486e49efa7ffeff0d8ee5cffd7dfff8ce6ff9dffffff0
+eaff00f7f7ff02f78f8fefff03edcdddeff9ff01fd8ffeff0757b585dfe447c4bffcff0486e49efa
+7ffeff0d8ee5cffd7dfff8ce6ff9dffffff0eaff01f8dff8ff02f78cafedff00fcf8ff0cfe7fffff
+fe58c6949fe559b4dffcff04a7f48fe99ffeff0d8ff5dffe6dfff9ce6ff9dffffff0eaff01f8dff8
+ff02f78cafedff00fcf8ff0cfe7ffffffe58c6949fe559b4dffcff04a7f48fe99ffeff0d8ff5dffe
+6dfff9ce6ff9dffffff0eaff01f8dff8ff02f78cafedff00fcf8ff0cfe7ffffffe58c6949fe559b4
+dffcff04a7f48fe99ffeff0d8ff5dffe6dfff9ce6ff9dffffff0eaff01fbaff8ff02f96cafe3ff0b
+fb8ffffffe58d8955ff65cb6fbff1596e58ff88ffffffd7ee5dfff6dfff8cd7ff9effffff0eaff01
+fbaff8ff02f96cafe3ff0bfb8ffffffe58d8955ff65cb6fbff1596e58ff88ffffffd7ee5dfff6dff
+f8cd7ff9effffff0eaff01fbaff8ff02f96cafe3ff0bfb8ffffffe58d8955ff65cb6fbff1596e58f
+f88ffffffd7ee5dfff6dfff8cd7ff9effffff0e9ff007ff7ff01798fe3ff0bf6dffffffd58e7765e
+f66e97fbff1596f57ff98ffffffd7ff5efff6dfff8dd8ff8effffff0e9ff007ff7ff01798fe3ff0b
 f6dffffffd58e7765ef66e97fbff1596f57ff98ffffffd7ff5efff6dfff8dd8ff8effffff0e9ff00
 7ff7ff01798fe3ff0bf6dffffffd58e7765ef66e97fbff1596f57ff98ffffffd7ff5efff6dfff8dd
-8ff8effffff0e9ff007ff7ff01798fe3ff0bf6dffffffd58e7765ef66e97fbff1596f57ff98fffff
-fd7ff5efff6dfff8dd8ff8effffff0e9ff00baf7ff01f66ce3ff0bc6fffffffd69e6685be66f88fb
-ff1596f59ff99ffffffe8fe6ffff5efff8ec9ff7fffffff0e9ff00baf7ff01f66ce3ff0bc6ffffff
-fd69e6685be66f88fbff1596f59ff99ffffffe8fe6ffff5efff8ec9ff7fffffff0e9ff00baf7ff01
-f66ce3ff0bc6fffffffd69e6685be66f88fbff1596f59ff99ffffffe8fe6ffff5efff8ec9ff7ffff
-fff0e9ff00f7f7ff03fe87fffde6ff0cfe7dfffffffc5af67938d67f6afbff15a5d59ff89fffffff
-9fe7ffff5efff8fbaff7fffffff0e9ff00f7f7ff03fe87fffde6ff0cfe7dfffffffc5af67938d67f
-6afbff15a5d59ff89fffffff9fe7ffff5efff8fbaff7fffffff0e9ff00f7f7ff03fe87fffde6ff0c
-fe7dfffffffc5af67938d67f6afbff15a5d59ff89fffffff9fe7ffff5efff8fbaff7fffffff0e9ff
-01f9cff7ff02fbbff7e7ff0dfd88effffffffb5ce67935d78e5efbff1595c49ff89fffffff9fe7ff
-ff5efff8fabff6fffffff0e9ff01f9cff7ff02fbbff7e7ff0dfd88effffffffb5ce67935d78e5efb
-ff1595c49ff89fffffff9fe7ffff5efff8fabff6fffffff0e9ff01f9cff7ff02fbbff7e7ff0dfd88
-effffffffb5ce67935d78e5efbff1595c49ff89fffffff9fe7ffff5efff8fabff6fffffff0e9ff01
-fd8ff6ff01aee8eaff04fefeb88aeffdff07fb4ec8a944b7ad5ffbff1596c49ff7afffffff9fe7ff
-ff5ffff8f9dff7fffffff0e9ff01fd8ff6ff01aee8eaff04fefeb88aeffdff07fb4ec8a944b7ad5f
-fbff1596c49ff7afffffff9fe7ffff5ffff8f9dff7fffffff0e9ff01fd8ff6ff01aee8eaff04fefe
-b88aeffdff07fb4ec8a944b7ad5ffbff1596c49ff7afffffff9fe7ffff5ffff8f9dff7fffffff0e8
-ff007ef6ff03fac9ffdff1ff07db967665555788cffbff07fb4eb8d67587c97ffbff1586d49fe7af
-ffffff9fe7ffff6ffff8f8efe6fffffff0e8ff007ef6ff03fac9ffdff1ff07db967665555788cffb
-ff07fb4eb8d67587c97ffbff1586d49fe7afffffff9fe7ffff6ffff8f8efe6fffffff0e8ff007ef6
-ff03fac9ffdff1ff07db967665555788cffbff07fb4eb8d67587c97ffbff1586d49fe7afffffff9f
-e7ffff6ffff8f8efe6fffffff0e8ff00b8f6ff03fac9ffdff2ff06b643333343334ef9ff07f95faa
-e6a566d79ffbff1586d49fe6affffffe8fe8ffff6ffff8f8ffd5fffffff0e8ff00b8f6ff03fac9ff
-dff2ff06b643333343334ef9ff07f95faae6a566d79ffbff1586d49fe6affffffe8fe8ffff6ffff8
-f8ffd5fffffff0e8ff00b8f6ff03fac9ffdff2ff06b643333343334ef9ff07f95faae6a566d79ffb
-ff1586d49fe6affffffe8fe8ffff6ffff8f8ffd5fffffff0e8ff01f9bff7ff03cbb9fe8ff4ff01fe
-94fb33007ff9ff07f86f8af7d655d5dffbff1586d4aff5affffffe7fe8ffff7ffff7f7ffb5ffffff
-f0e8ff01f9bff7ff03cbb9fe8ff4ff01fe94fb33007ff9ff07f86f8af7d655d5dffbff1586d4aff5
-affffffe7fe8ffff7ffff7f7ffb5fffffff0e8ff01f9bff7ff03cbb9fe8ff4ff01fe94fb33007ff9
-ff07f86f8af7d655d5dffbff1586d4aff5affffffe7fe8ffff7ffff7f7ffb5fffffff0e7ff007ef7
-ff03adc9fadff4ff08b544333334333434dff9ff06f76f7bf97656e5faff1596e3bff4cfffffff9f
-e8ffff7fffe8f7ffc8fffffff0e7ff007ef7ff03adc9fadff4ff08b544333334333434dff9ff06f7
-6f7bf97656e5faff1596e3bff4cfffffff9fe8ffff7fffe8f7ffc8fffffff0e7ff007ef7ff03adc9
-fadff4ff08b544333334333434dff9ff06f76f7bf97656e5faff1596e3bff4cfffffff9fe8ffff7f
-ffe8f7ffc8fffffff0e7ff00d9f7ff03cae7f8fef4ff0083fc33014339f8ff06f68f6dfc5947c5fa
-ff15a5e3cff4aaa978998fd8fffc49ffe8f7ffcbfffffff0e7ff00d9f7ff03cae7f8fef4ff0083fc
-33014339f8ff06f68f6dfc5947c5faff15a5e3cff4aaa978998fd8fffc49ffe8f7ffcbfffffff0e7
-ff00d9f7ff03cae7f8fef4ff0083fc33014339f8ff06f68f6dfc5947c5faff15a5e3cff4aaa97899
-8fd8fffc49ffe8f7ffcbfffffff0e7ff01facff8ff02f7e8c7f3ff079c665655469de63af8ff23f5
-9f6ffe4b48c46667776678776656d4cff49bbba9978fc7fffe546db8f7ffcafffffff0e7ff01facf
-f8ff02f7e8c7f3ff079c665655469de63af8ff23f59f6ffe4b48c46667776678776656d4cff49bbb
-a9978fc7fffe546db8f7ffcafffffff0e7ff01facff8ff02f7e8c7f3ff079c665655469de63af8ff
-23f59f6ffe4b48c46667776678776656d4cff49bbba9978fc7fffe546db8f7ffcafffffff0e6ff00
-8ef8ff04fe8977fffcf4ff07c58e7ad9cfe864cff9ff23e59f6ffe7769c6eeeedddeddeeffc5e4cf
-d4dffffffb9fd7ffffac6478e8ffcafffffff0e6ff008ef8ff04fe8977fffcf4ff07c58e7ad9cfe8
-64cff9ff23e59f6ffe7769c6eeeedddeddeeffc5e4cfd4dffffffb9fd7ffffac6478e8ffcaffffff
-f0e6ff008ef8ff04fe8977fffcf4ff07c58e7ad9cfe864cff9ff23e59f6ffe7769c6eeeedddeddee
-ffc5e4cfd4dffffffb9fd7ffffac6478e8ffcafffffff0e6ff01e7eff8ff0afa45dffcfffdbefdff
-faeffbff07f7cd6ffcbffbf86ff9ff07b69e6fffd46bd49efbff15c6f3cfe4effffffccfe9fffe9f
-fc67d9ffbbfffffff0e6ff01e7eff8ff0afa45dffcfffdbefdfffaeffbff07f7cd6ffcbffbf86ff9
-ff07b69e6fffd46bd49efbff15c6f3cfe4effffffccfe9fffe9ffc67d9ffbbfffffff0e6ff01e7ef
-f8ff0afa45dffcfffdbefdfffaeffbff07f7cd6ffcbffbf86ff9ff07b69e6fffd46bd49efbff15c6
-f3cfe4effffffccfe9fffe9ffc67d9ffbbfffffff0e6ff01fe7cf8ff09fe74affcfcfe8cefffb6fa
-ff07fa9a8efe9ffffd4df9ff08b6cd7ffff55da877dffcff15b6d4dfd4effffffddff9fffe9fffa9
-caffadfffffff0e6ff01fe7cf8ff09fe74affcfcfe8cefffb6faff07fa9a8efe9ffffd4df9ff08b6
-cd7ffff55da877dffcff15b6d4dfd4effffffddff9fffe9fffa9caffadfffffff0e6ff01fe7cf8ff
-09fe74affcfcfe8cefffb6faff07fa9a8efe9ffffd4df9ff08b6cd7ffff55da877dffcff15b6d4df
-d4effffffddff9fffe9fffa9caffadfffffff0e5ff01f9bff9ff09fe946ffbfbfbcebfff5cfaff07
-fe8e8afe9fcdff76f9ff0985e99ffff85e5adc69effdff15d6435554fffffffebff8fffe8fff8aab
-efaffffffff0e5ff01f9bff9ff09fe946ffbfbfbcebfff5cfaff07fe8e8afe9fcdff76f9ff0985e9
-9ffff85e5adc69effdff15d6435554fffffffebff8fffe8fff8aabefaffffffff0e5ff01f9bff9ff
-09fe946ffbfbfbcebfff5cfaff07fe8e8afe9fcdff76f9ff0985e99ffff85e5adc69effdff15d643
-5554fffffffebff8fffe8fff8aabefaffffffff0e4ff00a9f8ff08f94dfbfce8df9ffbaaf9ff06df
-8a9bbfd8ffb7f9ff09d565cffff86d658ee749fcff14ecbacefffffffe8fe5fffe9fff6656896cff
-fffff0e4ff00a9f8ff08f94dfbfce8df9ffbaaf9ff06df8a9bbfd8ffb7f9ff09d565cffff86d658e
-e749fcff14ecbacefffffffe8fe5fffe9fff6656896cfffffff0e4ff00a9f8ff08f94dfbfce8df9f
-fbaaf9ff06df8a9bbfd8ffb7f9ff09d565cffff86d658ee749fcff14ecbacefffffffe8fe5fffe9f
-ff6656896cfffffff0e4ff01fc7df9ff08fd46ebfdd9cb8ef8ccf9ff06fedf97fff7ff98f8ff09fa
-efffe89e6e859fd75bf6ff0d56a8fffebfffcdfedd648dfffff0e4ff01fc7df9ff08fd46ebfdd9cb
-8ef8ccf9ff06fedf97fff7ff98f8ff09faefffe89e6e859fd75bf6ff0d56a8fffebfffcdfedd648d
-fffff0e4ff01fc7df9ff08fd46ebfdd9cb8ef8ccf9ff06fedf97fff7ff98f8ff09faefffe89e6e85
-9fd75bf6ff0d56a8fffebfffcdfedd648dfffff0e3ff01e8cff9ff0797c8febc69caf8fbf7ff04a6
-ffe7ff6cf5ff1fc5ae7ffc54bfe767777665555567988899aa86455557aaaaababbbb969fffff0e3
-ff01e8cff9ff0797c8febc69caf8fbf7ff04a6ffe7ff6cf5ff1fc5ae7ffc54bfe767777665555567
-988899aa86455557aaaaababbbb969fffff0e3ff01e8cff9ff0797c8febc69caf8fbf7ff04a6ffe7
-ff6cf5ff1fc5ae7ffc54bfe767777665555567988899aa86455557aaaaababbbb969fffff0e2ff00
-8ef9ff07f999aeae56e8f8fbf8ff05fd89bfbafb8ff5ff1fa5ac9fffd536ce4cedeeeecb99aa9cdd
-ccbbbbaa99a98aaaaaaaa98989fffff0e2ff008ef9ff07f999aeae56e8f8fbf8ff05fd89bfbafb8f
-f5ff1fa5ac9fffd536ce4cedeeeecb99aa9cddccbbbbaa99a98aaaaaaaa98989fffff0e2ff008ef9
-ff07f999aeae56e8f8fbf8ff05fd89bfbafb8ff5ff1fa5ac9fffd536ce4cedeeeecb99aa9cddccbb
-bbaa99a98aaaaaaaa98989fffff0e2ff00edf8ff0796eaaf859ba7fcdff9ff05ebfcbf7ef6eff5ff
-079478affffe95344eedff03d8fffff0e2ff00edf8ff0796eaaf859ba7fcdff9ff05ebfcbf7ef6ef
-f5ff079478affffe95344eedff03d8fffff0e2ff00edf8ff0796eaaf859ba7fcdff9ff05ebfcbf7e
-f6eff5ff079478affffe95344eedff03d8fffff0d8ff07fdbb9fd85da6bfaff8ff03e9ec8f7cf4ff
-1ffc75bfffffffd53899abccccccbbabbabaaabcdeedcb98888999a9987afffff0d8ff07fdbb9fd8
-5da6bfaff8ff03e9ec8f7cf4ff1ffc75bfffffffd53899abccccccbbabbabaaabcdeedcb98888999
-a9987afffff0d8ff07fdbb9fd85da6bfaff8ff03e9ec8f7cf4ff1ffc75bfffffffd53899abcccccc
-bbabbabaaabcdeedcb98888999a9987afffff0d7ff06aad9ff96e86edcf8ff039dd7e8cff3ff00fe
-fdff19fed787666556677788888999987667789bcccccccdeefffffff0d7ff06aad9ff96e86edcf8
-ff039dd7e8cff3ff00fefdff19fed787666556677788888999987667789bcccccccdeefffffff0d7
-ff06aad9ff96e86edcf8ff039dd7e8cff3ff00fefdff19fed787666556677788888999987667789b
-cccccccdeefffffff0d8ff07fddbfd98e67e77faf9ff03f9cd7ebdd4ff00f0d8ff07fddbfd98e67e
-77faf9ff03f9cd7ebdd4ff00f0d8ff07fddbfd98e67e77faf9ff03f9cd7ebdd4ff00f0d8ff08fbaf
-fffecd8ba9adbffbff04fe9bc7ebbfd4ff00f0d8ff08fbaffffecd8ba9adbffbff04fe9bc7ebbfd4
-ff00f0d8ff08fbaffffecd8ba9adbffbff04fe9bc7ebbfd4ff00f0d8ff08bcdfffffefb7e88fbefc
-ff04edcbee7eacd3ff00f0d8ff08bcdfffffefb7e88fbefcff04edcbee7eacd3ff00f0d8ff08bcdf
-ffffefb7e88fbefcff04edcbee7eacd3ff00f0d9ff09feb9fffffeecd7e98ffafdff09f857dfe7e9
-efffeca99ed7ff00f0d9ff09feb9fffffeecd7e98ffafdff09f857dfe7e9efffeca99ed7ff00f0d9
-ff09feb9fffffeecd7e98ffafdff09f857dfe7e9efffeca99ed7ff00f0d9ff18faf8ffffffc9e8e8
-9efe9fffffffe76cff8d8cfd98adfbb8ced8ff00f0d9ff18faf8ffffffc9e8e89efe9fffffffe76c
-ff8d8cfd98adfbb8ced8ff00f0d9ff18faf8ffffffc9e8e89efe9fffffffe76cff8d8cfd98adfbb8
-ced8ff00f0d9ff19f9f8ffffdbe7ca9caeff8fffffff8a6ff9c8ce875effeeff8bdfd9ff00f0d9ff
-19f9f8ffffdbe7ca9caeff8fffffff8a6ff9c8ce875effeeff8bdfd9ff00f0d9ff19f9f8ffffdbe7
-ca9caeff8fffffff8a6ff9c8ce875effeeff8bdfd9ff00f0d9ff19f9f9ffeacf9e9e7eadfbbfffff
-ff6a7fc99cf7c746ca47bfe8bfd9ff00f0d9ff19f9f9ffeacf9e9e7eadfbbfffffff6a7fc99cf7c7
-46ca47bfe8bfd9ff00f0d9ff19f9f9ffeacf9e9e7eadfbbfffffff6a7fc99cf7c746ca47bfe8bfd9
-ff00f0d9ff09faebfdbfeadf8e8f9ef9fdff0b6a8f89afe77444b8498ff7bfd9ff00f0d9ff09faeb
-fdbfeadf8e8f9ef9fdff0b6a8f89afe77444b8498ff7bfd9ff00f0d9ff09faebfdbfeadf8e8f9ef9
-fdff0b6a8f89afe77444b8498ff7bfd9ff00f0d9ff09fdddfbfb9eff8b9f8fdbfdff0b5c8e68ff95
-433386447865afd9ff00f0d9ff09fdddfbfb9eff8b9f8fdbfdff0b5c8e68ff95433386447865afd9
-ff00f0d9ff09fdddfbfb9eff8b9f8fdbfdff0b5c8e68ff95433386447865afd9ff00f0d7ff17ce9e
-ffff9c8f9fbdfffffeff6f7b5eff643343453543688fd9ff00f0d7ff17ce9effff9c8f9fbdfffffe
+8ff8effffff0e9ff00baf7ff01f66ce3ff00c6feff07fd69e6685be66f88fbff1196f59ff99fffff
+fe8fe6ffff5efff8ec9ff7feff00f0e9ff00baf7ff01f66ce3ff00c6feff07fd69e6685be66f88fb
+ff1196f59ff99ffffffe8fe6ffff5efff8ec9ff7feff00f0e9ff00baf7ff01f66ce3ff00c6feff07
+fd69e6685be66f88fbff1196f59ff99ffffffe8fe6ffff5efff8ec9ff7feff00f0e9ff00f7f7ff03
+fe87fffde6ff01fe7dfeff07fc5af67938d67f6afbff04a5d59ff89ffeff099fe7ffff5efff8fbaf
+f7feff00f0e9ff00f7f7ff03fe87fffde6ff01fe7dfeff07fc5af67938d67f6afbff04a5d59ff89f
+feff099fe7ffff5efff8fbaff7feff00f0e9ff00f7f7ff03fe87fffde6ff01fe7dfeff07fc5af679
+38d67f6afbff04a5d59ff89ffeff099fe7ffff5efff8fbaff7feff00f0e9ff01f9cff7ff02fbbff7
+e7ff02fd88effeff07fb5ce67935d78e5efbff0495c49ff89ffeff099fe7ffff5efff8fabff6feff
+00f0e9ff01f9cff7ff02fbbff7e7ff02fd88effeff07fb5ce67935d78e5efbff0495c49ff89ffeff
+099fe7ffff5efff8fabff6feff00f0e9ff01f9cff7ff02fbbff7e7ff02fd88effeff07fb5ce67935
+d78e5efbff0495c49ff89ffeff099fe7ffff5efff8fabff6feff00f0e9ff01fd8ff6ff01aee8eaff
+fffe02b88aeffdff07fb4ec8a944b7ad5ffbff0496c49ff7affeff099fe7ffff5ffff8f9dff7feff
+00f0e9ff01fd8ff6ff01aee8eafffffe02b88aeffdff07fb4ec8a944b7ad5ffbff0496c49ff7affe
+ff099fe7ffff5ffff8f9dff7feff00f0e9ff01fd8ff6ff01aee8eafffffe02b88aeffdff07fb4ec8
+a944b7ad5ffbff0496c49ff7affeff099fe7ffff5ffff8f9dff7feff00f0e8ff007ef6ff03fac9ff
+dff1ff07db967665555788cffbff07fb4eb8d67587c97ffbff0486d49fe7affeff099fe7ffff6fff
+f8f8efe6feff00f0e8ff007ef6ff03fac9ffdff1ff07db967665555788cffbff07fb4eb8d67587c9
+7ffbff0486d49fe7affeff099fe7ffff6ffff8f8efe6feff00f0e8ff007ef6ff03fac9ffdff1ff07
+db967665555788cffbff07fb4eb8d67587c97ffbff0486d49fe7affeff099fe7ffff6ffff8f8efe6
+feff00f0e8ff00b8f6ff03fac9ffdff2ff06b643333343334ef9ff07f95faae6a566d79ffbff1186
+d49fe6affffffe8fe8ffff6ffff8f8ffd5feff00f0e8ff00b8f6ff03fac9ffdff2ff06b643333343
+334ef9ff07f95faae6a566d79ffbff1186d49fe6affffffe8fe8ffff6ffff8f8ffd5feff00f0e8ff
+00b8f6ff03fac9ffdff2ff06b643333343334ef9ff07f95faae6a566d79ffbff1186d49fe6afffff
+fe8fe8ffff6ffff8f8ffd5feff00f0e8ff01f9bff7ff03cbb9fe8ff4ff01fe94fb33007ff9ff07f8
+6f8af7d655d5dffbff1186d4aff5affffffe7fe8ffff7ffff7f7ffb5feff00f0e8ff01f9bff7ff03
+cbb9fe8ff4ff01fe94fb33007ff9ff07f86f8af7d655d5dffbff1186d4aff5affffffe7fe8ffff7f
+fff7f7ffb5feff00f0e8ff01f9bff7ff03cbb9fe8ff4ff01fe94fb33007ff9ff07f86f8af7d655d5
+dffbff1186d4aff5affffffe7fe8ffff7ffff7f7ffb5feff00f0e7ff007ef7ff03adc9fadff4ff08
+b544333334333434dff9ff06f76f7bf97656e5faff0496e3bff4cffeff099fe8ffff7fffe8f7ffc8
+feff00f0e7ff007ef7ff03adc9fadff4ff08b544333334333434dff9ff06f76f7bf97656e5faff04
+96e3bff4cffeff099fe8ffff7fffe8f7ffc8feff00f0e7ff007ef7ff03adc9fadff4ff08b5443333
+34333434dff9ff06f76f7bf97656e5faff0496e3bff4cffeff099fe8ffff7fffe8f7ffc8feff00f0
+e7ff00d9f7ff03cae7f8fef4ff0083fc33014339f8ff06f68f6dfc5947c5faff11a5e3cff4aaa978
+998fd8fffc49ffe8f7ffcbfeff00f0e7ff00d9f7ff03cae7f8fef4ff0083fc33014339f8ff06f68f
+6dfc5947c5faff11a5e3cff4aaa978998fd8fffc49ffe8f7ffcbfeff00f0e7ff00d9f7ff03cae7f8
+fef4ff0083fc33014339f8ff06f68f6dfc5947c5faff11a5e3cff4aaa978998fd8fffc49ffe8f7ff
+cbfeff00f0e7ff01facff8ff02f7e8c7f3ff079c665655469de63af8ff1ff59f6ffe4b48c4666777
+6678776656d4cff49bbba9978fc7fffe546db8f7ffcafeff00f0e7ff01facff8ff02f7e8c7f3ff07
+9c665655469de63af8ff1ff59f6ffe4b48c46667776678776656d4cff49bbba9978fc7fffe546db8
+f7ffcafeff00f0e7ff01facff8ff02f7e8c7f3ff079c665655469de63af8ff1ff59f6ffe4b48c466
+67776678776656d4cff49bbba9978fc7fffe546db8f7ffcafeff00f0e6ff008ef8ff04fe8977fffc
+f4ff07c58e7ad9cfe864cff9ff1fe59f6ffe7769c6eeeedddeddeeffc5e4cfd4dffffffb9fd7ffff
+ac6478e8ffcafeff00f0e6ff008ef8ff04fe8977fffcf4ff07c58e7ad9cfe864cff9ff1fe59f6ffe
+7769c6eeeedddeddeeffc5e4cfd4dffffffb9fd7ffffac6478e8ffcafeff00f0e6ff008ef8ff04fe
+8977fffcf4ff07c58e7ad9cfe864cff9ff1fe59f6ffe7769c6eeeedddeddeeffc5e4cfd4dffffffb
+9fd7ffffac6478e8ffcafeff00f0e6ff01e7eff8ff0afa45dffcfffdbefdfffaeffbff07f7cd6ffc
+bffbf86ff9ff07b69e6fffd46bd49efbff11c6f3cfe4effffffccfe9fffe9ffc67d9ffbbfeff00f0
+e6ff01e7eff8ff0afa45dffcfffdbefdfffaeffbff07f7cd6ffcbffbf86ff9ff07b69e6fffd46bd4
+9efbff11c6f3cfe4effffffccfe9fffe9ffc67d9ffbbfeff00f0e6ff01e7eff8ff0afa45dffcfffd
+befdfffaeffbff07f7cd6ffcbffbf86ff9ff07b69e6fffd46bd49efbff11c6f3cfe4effffffccfe9
+fffe9ffc67d9ffbbfeff00f0e6ff01fe7cf8ff09fe74affcfcfe8cefffb6faff07fa9a8efe9ffffd
+4df9ff08b6cd7ffff55da877dffcff11b6d4dfd4effffffddff9fffe9fffa9caffadfeff00f0e6ff
+01fe7cf8ff09fe74affcfcfe8cefffb6faff07fa9a8efe9ffffd4df9ff08b6cd7ffff55da877dffc
+ff11b6d4dfd4effffffddff9fffe9fffa9caffadfeff00f0e6ff01fe7cf8ff09fe74affcfcfe8cef
+ffb6faff07fa9a8efe9ffffd4df9ff08b6cd7ffff55da877dffcff11b6d4dfd4effffffddff9fffe
+9fffa9caffadfeff00f0e5ff01f9bff9ff02fe946ffefb03cebfff5cfaff07fe8e8afe9fcdff76f9
+ff0985e99ffff85e5adc69effdff03d6435554feff0afebff8fffe8fff8aabefaffeff00f0e5ff01
+f9bff9ff02fe946ffefb03cebfff5cfaff07fe8e8afe9fcdff76f9ff0985e99ffff85e5adc69effd
+ff03d6435554feff0afebff8fffe8fff8aabefaffeff00f0e5ff01f9bff9ff02fe946ffefb03cebf
+ff5cfaff07fe8e8afe9fcdff76f9ff0985e99ffff85e5adc69effdff03d6435554feff0afebff8ff
+fe8fff8aabefaffeff00f0e4ff00a9f8ff08f94dfbfce8df9ffbaaf9ff06df8a9bbfd8ffb7f9ff09
+d565cffff86d658ee749fcff02ecbacefeff0afe8fe5fffe9fff6656896cfeff00f0e4ff00a9f8ff
+08f94dfbfce8df9ffbaaf9ff06df8a9bbfd8ffb7f9ff09d565cffff86d658ee749fcff02ecbacefe
+ff0afe8fe5fffe9fff6656896cfeff00f0e4ff00a9f8ff08f94dfbfce8df9ffbaaf9ff06df8a9bbf
+d8ffb7f9ff09d565cffff86d658ee749fcff02ecbacefeff0afe8fe5fffe9fff6656896cfeff00f0
+e4ff01fc7df9ff08fd46ebfdd9cb8ef8ccf9ff06fedf97fff7ff98f8ff09faefffe89e6e859fd75b
+f6ff0d56a8fffebfffcdfedd648dfffff0e4ff01fc7df9ff08fd46ebfdd9cb8ef8ccf9ff06fedf97
+fff7ff98f8ff09faefffe89e6e859fd75bf6ff0d56a8fffebfffcdfedd648dfffff0e4ff01fc7df9
+ff08fd46ebfdd9cb8ef8ccf9ff06fedf97fff7ff98f8ff09faefffe89e6e859fd75bf6ff0d56a8ff
+febfffcdfedd648dfffff0e3ff01e8cff9ff0797c8febc69caf8fbf7ff04a6ffe7ff6cf5ff1fc5ae
+7ffc54bfe767777665555567988899aa86455557aaaaababbbb969fffff0e3ff01e8cff9ff0797c8
+febc69caf8fbf7ff04a6ffe7ff6cf5ff1fc5ae7ffc54bfe767777665555567988899aa86455557aa
+aaababbbb969fffff0e3ff01e8cff9ff0797c8febc69caf8fbf7ff04a6ffe7ff6cf5ff1fc5ae7ffc
+54bfe767777665555567988899aa86455557aaaaababbbb969fffff0e2ff008ef9ff07f999aeae56
+e8f8fbf8ff05fd89bfbafb8ff5ff16a5ac9fffd536ce4cedeeeecb99aa9cddccbbbbaa99a98afeaa
+05a98989fffff0e2ff008ef9ff07f999aeae56e8f8fbf8ff05fd89bfbafb8ff5ff16a5ac9fffd536
+ce4cedeeeecb99aa9cddccbbbbaa99a98afeaa05a98989fffff0e2ff008ef9ff07f999aeae56e8f8
+fbf8ff05fd89bfbafb8ff5ff16a5ac9fffd536ce4cedeeeecb99aa9cddccbbbbaa99a98afeaa05a9
+8989fffff0e2ff00edf8ff0796eaaf859ba7fcdff9ff05ebfcbf7ef6eff5ff079478affffe95344e
+edff03d8fffff0e2ff00edf8ff0796eaaf859ba7fcdff9ff05ebfcbf7ef6eff5ff079478affffe95
+344eedff03d8fffff0e2ff00edf8ff0796eaaf859ba7fcdff9ff05ebfcbf7ef6eff5ff079478afff
+fe95344eedff03d8fffff0d8ff07fdbb9fd85da6bfaff8ff03e9ec8f7cf4ff02fc75bffeff03d538
+99abfecc12bbabbabaaabcdeedcb98888999a9987afffff0d8ff07fdbb9fd85da6bfaff8ff03e9ec
+8f7cf4ff02fc75bffeff03d53899abfecc12bbabbabaaabcdeedcb98888999a9987afffff0d8ff07
+fdbb9fd85da6bfaff8ff03e9ec8f7cf4ff02fc75bffeff03d53899abfecc12bbabbabaaabcdeedcb
+98888999a9987afffff0d7ff06aad9ff96e86edcf8ff039dd7e8cff3ff00fefdff10fed787666556
+677788888999987667789bfecc01cdeefeff00f0d7ff06aad9ff96e86edcf8ff039dd7e8cff3ff00
+fefdff10fed787666556677788888999987667789bfecc01cdeefeff00f0d7ff06aad9ff96e86edc
+f8ff039dd7e8cff3ff00fefdff10fed787666556677788888999987667789bfecc01cdeefeff00f0
+d8ff07fddbfd98e67e77faf9ff03f9cd7ebdd4ff00f0d8ff07fddbfd98e67e77faf9ff03f9cd7ebd
+d4ff00f0d8ff07fddbfd98e67e77faf9ff03f9cd7ebdd4ff00f0d8ff08fbaffffecd8ba9adbffbff
+04fe9bc7ebbfd4ff00f0d8ff08fbaffffecd8ba9adbffbff04fe9bc7ebbfd4ff00f0d8ff08fbafff
+fecd8ba9adbffbff04fe9bc7ebbfd4ff00f0d8ff08bcdfffffefb7e88fbefcff04edcbee7eacd3ff
+00f0d8ff08bcdfffffefb7e88fbefcff04edcbee7eacd3ff00f0d8ff08bcdfffffefb7e88fbefcff
+04edcbee7eacd3ff00f0d9ff09feb9fffffeecd7e98ffafdff09f857dfe7e9efffeca99ed7ff00f0
+d9ff09feb9fffffeecd7e98ffafdff09f857dfe7e9efffeca99ed7ff00f0d9ff09feb9fffffeecd7
+e98ffafdff09f857dfe7e9efffeca99ed7ff00f0d9ff01faf8feff05c9e8e89efe9ffeff0ae76cff
+8d8cfd98adfbb8ced8ff00f0d9ff01faf8feff05c9e8e89efe9ffeff0ae76cff8d8cfd98adfbb8ce
+d8ff00f0d9ff01faf8feff05c9e8e89efe9ffeff0ae76cff8d8cfd98adfbb8ced8ff00f0d9ff0af9
+f8ffffdbe7ca9caeff8ffeff0b8a6ff9c8ce875effeeff8bdfd9ff00f0d9ff0af9f8ffffdbe7ca9c
+aeff8ffeff0b8a6ff9c8ce875effeeff8bdfd9ff00f0d9ff0af9f8ffffdbe7ca9caeff8ffeff0b8a
+6ff9c8ce875effeeff8bdfd9ff00f0d9fffff908ffeacf9e9e7eadfbbffeff0b6a7fc99cf7c746ca
+47bfe8bfd9ff00f0d9fffff908ffeacf9e9e7eadfbbffeff0b6a7fc99cf7c746ca47bfe8bfd9ff00
+f0d9fffff908ffeacf9e9e7eadfbbffeff0b6a7fc99cf7c746ca47bfe8bfd9ff00f0d9ff09faebfd
+bfeadf8e8f9ef9fdff0b6a8f89afe77444b8498ff7bfd9ff00f0d9ff09faebfdbfeadf8e8f9ef9fd
+ff0b6a8f89afe77444b8498ff7bfd9ff00f0d9ff09faebfdbfeadf8e8f9ef9fdff0b6a8f89afe774
+44b8498ff7bfd9ff00f0d9ff09fdddfbfb9eff8b9f8fdbfdff0b5c8e68ff95433386447865afd9ff
+00f0d9ff09fdddfbfb9eff8b9f8fdbfdff0b5c8e68ff95433386447865afd9ff00f0d9ff09fdddfb
+fb9eff8b9f8fdbfdff0b5c8e68ff95433386447865afd9ff00f0d7ff17ce9effff9c8f9fbdfffffe
 ff6f7b5eff643343453543688fd9ff00f0d7ff17ce9effff9c8f9fbdfffffeff6f7b5eff64334345
-3543688fd9ff00f0d7ff17e9efffffab6cdb9efffffdff6f8b4fff64434437443345bfd9ff00f0d7
+3543688fd9ff00f0d7ff17ce9effff9c8f9fbdfffffeff6f7b5eff643343453543688fd9ff00f0d7
 ff17e9efffffab6cdb9efffffdff6f8b4fff64434437443345bfd9ff00f0d7ff17e9efffffab6cdb
-9efffffdff6f8b4fff64434437443345bfd9ff00f0d7ff16dbffffffe89afabdfffffddf8bca7bff
-83436434433466d8ff00f0d7ff16dbffffffe89afabdfffffddf8bca7bff83436434433466d8ff00
-f0d7ff16dbffffffe89afabdfffffddf8bca7bff83436434433466d8ff00f0d7ff16befffffff9b6
-cbeafeffffafb5fef9bfc359d834433598d8ff00f0d7ff16befffffff9b6cbeafeffffafb5fef9bf
-c359d834433598d8ff00f0d7ff16befffffff9b6cbeafeffffafb5fef9bfc359d834433598d8ff00
-f0d2ff119c8ffbffefff8ee58fff99e548784433455ed8ff00f0d2ff119c8ffbffefff8ee58fff99
-e548784433455ed8ff00f0d2ff119c8ffbffefff8ee58fff99e548784433455ed8ff00f0d2ff01fc
-cffdff0bb9fa8afffb7743333333548ed8ff00f0d2ff01fccffdff0bb9fa8afffb7743333333548e
-d8ff00f0d2ff01fccffdff0bb9fa8afffb7743333333548ed8ff00f0d2ff00fafcff0cfa68858eff
-fc87433333356549d9ff00f0d2ff00fafcff0cfa68858efffc87433333356549d9ff00f0d2ff00fa
-fcff0cfa68858efffc87433333356549d9ff00f0d2ff00ebfbff0cb99a769effffdca7568effe69a
-daff00f0d2ff00ebfbff0cb99a769effffdca7568effe69adaff00f0d2ff00ebfbff0cb99a769eff
-ffdca7568effe69adaff00f0d2ff00cffaff03feffc7effdff03efffb68adaff00f0d2ff00cffaff
-03feffc7effdff03efffb68adaff00f0d2ff00cffaff03feffc7effdff03efffb68adaff00f0c8ff
-01fedffcff02fe645adaff00f0c8ff01fedffcff02fe645adaff00f0c8ff01fedffcff02fe645ada
-ff00f097ff00f097ff00f097ff00f097ff00f097ff00f097ff00f097ff00f097ff00f097ff00f0
-
+9efffffdff6f8b4fff64434437443345bfd9ff00f0d7ff17e9efffffab6cdb9efffffdff6f8b4fff
+64434437443345bfd9ff00f0d7ff00dbfeff12e89afabdfffffddf8bca7bff83436434433466d8ff
+00f0d7ff00dbfeff12e89afabdfffffddf8bca7bff83436434433466d8ff00f0d7ff00dbfeff12e8
+9afabdfffffddf8bca7bff83436434433466d8ff00f0d7ff00befeff12f9b6cbeafeffffafb5fef9
+bfc359d834433598d8ff00f0d7ff00befeff12f9b6cbeafeffffafb5fef9bfc359d834433598d8ff
+00f0d7ff00befeff12f9b6cbeafeffffafb5fef9bfc359d834433598d8ff00f0d2ff119c8ffbffef
+ff8ee58fff99e548784433455ed8ff00f0d2ff119c8ffbffefff8ee58fff99e548784433455ed8ff
+00f0d2ff119c8ffbffefff8ee58fff99e548784433455ed8ff00f0d2ff01fccffdff06b9fa8afffb
+7743fe3301548ed8ff00f0d2ff01fccffdff06b9fa8afffb7743fe3301548ed8ff00f0d2ff01fccf
+fdff06b9fa8afffb7743fe3301548ed8ff00f0d2ff00fafcff0cfa68858efffc87433333356549d9
+ff00f0d2ff00fafcff0cfa68858efffc87433333356549d9ff00f0d2ff00fafcff0cfa68858efffc
+87433333356549d9ff00f0d2ff00ebfbff0cb99a769effffdca7568effe69adaff00f0d2ff00ebfb
+ff0cb99a769effffdca7568effe69adaff00f0d2ff00ebfbff0cb99a769effffdca7568effe69ada
+ff00f0d2ff00cffaff03feffc7effdff03efffb68adaff00f0d2ff00cffaff03feffc7effdff03ef
+ffb68adaff00f0d2ff00cffaff03feffc7effdff03efffb68adaff00f0c8ff01fedffcff02fe645a
+daff00f0c8ff01fedffcff02fe645adaff00f0c8ff01fedffcff02fe645adaff00f097ff00f097ff
+00f097ff00f097ff00f097ff00f097ff00f097ff00f097ff00f097ff00f0
+currentdict /inputf undef
+currentdict /picstr undef
+currentdict /rpicstr undef
+currentdict /gpicstr undef
+currentdict /bpicstr undef
+grestore
+showpage
+%%Trailer
index 54dbb18..641d15c 100644 (file)
@@ -82,3 +82,7 @@ every fast clock cycle. The dynamic common-mode feedback
 arrangement operates synchronously with the reset time slot and
 its configuration is equivalent to that in the differential
 feedback path.
+.\" Local Variables:
+.\" mode: nroff
+.\" End:
+.\" vim: filetype=groff:
diff --git a/doc/groff.info b/doc/groff.info
deleted file mode 100644 (file)
index f76f914..0000000
+++ /dev/null
@@ -1,315 +0,0 @@
-This is groff.info, produced by makeinfo version 5.2dev from
-groff.texinfo.
-
-This manual documents GNU 'troff' version 1.22.3.
-
-   Copyright © 1994-2014 Free Software Foundation, Inc.
-
-     Permission is granted to copy, distribute and/or modify this
-     document under the terms of the GNU Free Documentation License,
-     Version 1.3 or any later version published by the Free Software
-     Foundation; with no Invariant Sections, with the Front-Cover texts
-     being "A GNU Manual," and with the Back-Cover Texts as in (a)
-     below.  A copy of the license is included in the section entitled
-     "GNU Free Documentation License."
-
-     (a) The FSF's Back-Cover Text is: "You have the freedom to copy and
-     modify this GNU manual.  Buying copies from the FSF supports it in
-     developing GNU and promoting software freedom."
-INFO-DIR-SECTION Typesetting
-START-INFO-DIR-ENTRY
-* Groff: (groff).               The GNU troff document formatting system.
-END-INFO-DIR-ENTRY
-
-\1f
-Indirect:
-groff.info-1: 981
-groff.info-2: 305458
-\1f
-Tag Table:
-(Indirect)
-Node: Top\7f981
-Node: Introduction\7f2252
-Node: What Is groff?\7f2705
-Node: What Is groff?-Footnotes\7f4161
-Ref: What Is groff?-Footnote-1\7f4235
-Node: History\7f4272
-Node: History-Footnotes\7f9245
-Ref: History-Footnote-1\7f9305
-Node: groff Capabilities\7f9513
-Node: Macro Package Intro\7f10709
-Node: Preprocessor Intro\7f11341
-Node: Output device intro\7f12968
-Node: Credits\7f13454
-Node: Invoking groff\7f13968
-Node: Groff Options\7f15266
-Node: Environment\7f26087
-Node: Macro Directories\7f28435
-Node: Font Directories\7f29770
-Node: Paper Size\7f31418
-Node: Invocation Examples\7f32774
-Node: Invocation Examples-Footnotes\7f33972
-Ref: Invocation Examples-Footnote-1\7f34056
-Node: grog\7f34289
-Node: Tutorial for Macro Users\7f35570
-Node: Basics\7f35996
-Node: Basics-Footnotes\7f40816
-Ref: Basics-Footnote-1\7f40874
-Ref: Basics-Footnote-2\7f40968
-Node: Common Features\7f41082
-Node: Paragraphs\7f41874
-Node: Sections and Chapters\7f43383
-Node: Headers and Footers\7f43889
-Node: Page Layout Adjustment\7f44776
-Node: Displays\7f45057
-Node: Footnotes and Annotations\7f46326
-Node: Table of Contents\7f46998
-Node: Indices\7f47527
-Node: Paper Formats\7f47943
-Node: Multiple Columns\7f48330
-Node: Font and Size Changes\7f48594
-Node: Predefined Strings\7f48912
-Node: Preprocessor Support\7f49264
-Node: Configuration and Customization\7f49834
-Node: Macro Packages\7f50217
-Node: man\7f50785
-Node: Man options\7f51227
-Node: Man options-Footnotes\7f53925
-Ref: Man options-Footnote-1\7f53993
-Node: Man usage\7f54713
-Node: Man font macros\7f60777
-Node: Miscellaneous man macros\7f62613
-Node: Predefined man strings\7f64358
-Node: Preprocessors in man pages\7f64930
-Node: Optional man extensions\7f65557
-Node: mdoc\7f69553
-Node: ms\7f69732
-Node: ms Intro\7f70241
-Node: General ms Structure\7f70924
-Node: General ms Structure-Footnotes\7f73379
-Ref: General ms Structure-Footnote-1\7f73465
-Node: ms Document Control Registers\7f73511
-Node: ms Cover Page Macros\7f80162
-Node: ms Body Text\7f83182
-Node: Paragraphs in ms\7f83675
-Node: Headings in ms\7f85448
-Node: Highlighting in ms\7f88227
-Node: Lists in ms\7f90821
-Node: Indentation values in ms\7f94221
-Node: Tabstops in ms\7f94855
-Node: ms Displays and Keeps\7f95282
-Node: ms Insertions\7f99239
-Node: Example multi-page table\7f100811
-Node: ms Footnotes\7f101271
-Node: ms Page Layout\7f102541
-Node: ms Headers and Footers\7f103072
-Node: ms Margins\7f104527
-Node: ms Multiple Columns\7f104786
-Node: ms TOC\7f105606
-Node: ms Strings and Special Characters\7f108340
-Node: ms Strings and Special Characters-Footnotes\7f111152
-Ref: ms Strings and Special Characters-Footnote-1\7f111264
-Node: Differences from AT&T ms\7f111351
-Node: Missing ms Macros\7f114432
-Node: Additional ms Macros\7f115207
-Node: Naming Conventions\7f116480
-Node: me\7f117516
-Node: mm\7f117684
-Node: mom\7f117853
-Node: gtroff Reference\7f118102
-Node: Text\7f119026
-Node: Filling and Adjusting\7f119595
-Node: Hyphenation\7f120323
-Node: Sentences\7f121120
-Node: Tab Stops\7f122285
-Node: Implicit Line Breaks\7f123193
-Node: Input Conventions\7f124335
-Node: Input Encodings\7f125141
-Node: Measurements\7f127273
-Node: Measurements-Footnotes\7f129477
-Ref: Measurements-Footnote-1\7f129547
-Node: Default Units\7f129619
-Node: Expressions\7f130679
-Node: Expressions-Footnotes\7f134090
-Ref: Expressions-Footnote-1\7f134158
-Node: Identifiers\7f134285
-Node: Embedded Commands\7f138146
-Node: Requests\7f138901
-Node: Request and Macro Arguments\7f141146
-Node: Request and Macro Arguments-Footnotes\7f143638
-Ref: Request and Macro Arguments-Footnote-1\7f143738
-Ref: Request and Macro Arguments-Footnote-2\7f143866
-Node: Macros\7f144221
-Node: Escapes\7f144611
-Node: Comments\7f147479
-Node: Comments-Footnotes\7f150055
-Ref: Comments-Footnote-1\7f150117
-Node: Registers\7f150216
-Node: Setting Registers\7f150729
-Node: Interpolating Registers\7f154641
-Node: Auto-increment\7f155460
-Node: Assigning Formats\7f157013
-Node: Built-in Registers\7f159874
-Node: Manipulating Filling and Adjusting\7f163697
-Node: Manipulating Hyphenation\7f172782
-Node: Manipulating Hyphenation-Footnotes\7f184331
-Ref: Manipulating Hyphenation-Footnote-1\7f184425
-Node: Manipulating Spacing\7f184500
-Node: Tabs and Fields\7f189041
-Node: Tabs and Fields-Footnotes\7f195024
-Ref: Tabs and Fields-Footnote-1\7f195100
-Node: Leaders\7f195178
-Node: Leaders-Footnotes\7f196782
-Ref: Leaders-Footnote-1\7f196842
-Node: Fields\7f196923
-Node: Character Translations\7f198352
-Node: Troff and Nroff Mode\7f207579
-Node: Line Layout\7f209580
-Node: Line Control\7f215436
-Node: Page Layout\7f218089
-Node: Page Control\7f221950
-Node: Fonts and Symbols\7f225687
-Node: Changing Fonts\7f226293
-Node: Font Families\7f229824
-Node: Font Positions\7f234384
-Node: Using Symbols\7f237532
-Node: Using Symbols-Footnotes\7f254537
-Ref: Using Symbols-Footnote-1\7f254609
-Ref: Using Symbols-Footnote-2\7f255062
-Ref: Using Symbols-Footnote-3\7f255133
-Ref: Using Symbols-Footnote-4\7f255372
-Node: Character Classes\7f255435
-Node: Special Fonts\7f258152
-Node: Artificial Fonts\7f259345
-Node: Ligatures and Kerning\7f264878
-Node: Sizes\7f270903
-Node: Sizes-Footnotes\7f271744
-Ref: Sizes-Footnote-1\7f271800
-Node: Changing Type Sizes\7f272212
-Node: Fractional Type Sizes\7f277734
-Node: Strings\7f280813
-Ref: als\7f288636
-Node: Conditionals and Loops\7f290518
-Node: Operators in Conditionals\7f290750
-Node: Operators in Conditionals-Footnotes\7f294494
-Ref: Operators in Conditionals-Footnote-1\7f294590
-Ref: Operators in Conditionals-Footnote-2\7f294669
-Node: if-else\7f294768
-Node: while\7f296287
-Node: Writing Macros\7f298672
-Node: Writing Macros-Footnotes\7f304106
-Ref: Writing Macros-Footnote-1\7f304180
-Node: Copy-in Mode\7f305458
-Node: Parameters\7f306357
-Node: Page Motions\7f309556
-Node: Drawing Requests\7f317240
-Node: Traps\7f327649
-Node: Page Location Traps\7f328290
-Node: Diversion Traps\7f334488
-Node: Input Line Traps\7f335108
-Node: Blank Line Traps\7f336139
-Node: Leading Spaces Traps\7f336433
-Node: End-of-input Traps\7f338012
-Node: Diversions\7f341555
-Node: Environments\7f349170
-Node: Suppressing output\7f353043
-Node: Colors\7f355085
-Node: I/O\7f358655
-Node: Postprocessor Access\7f367180
-Node: Miscellaneous\7f368884
-Node: Miscellaneous-Footnotes\7f374360
-Ref: Miscellaneous-Footnote-1\7f374432
-Node: Gtroff Internals\7f374502
-Node: Gtroff Internals-Footnotes\7f378849
-Ref: Gtroff Internals-Footnote-1\7f378927
-Node: Debugging\7f379062
-Node: Warnings\7f385038
-Node: Warnings-Footnotes\7f388135
-Ref: Warnings-Footnote-1\7f388197
-Node: Implementation Differences\7f388318
-Node: Implementation Differences-Footnotes\7f393145
-Ref: Implementation Differences-Footnote-1\7f393243
-Node: Preprocessors\7f393379
-Node: geqn\7f393708
-Node: Invoking geqn\7f393847
-Node: gtbl\7f393958
-Node: Invoking gtbl\7f394088
-Node: gpic\7f394199
-Node: Invoking gpic\7f394329
-Node: ggrn\7f394440
-Node: Invoking ggrn\7f394570
-Node: grap\7f394681
-Node: gchem\7f394961
-Node: Invoking gchem\7f395097
-Node: grefer\7f395213
-Node: Invoking grefer\7f395355
-Node: gsoelim\7f395476
-Node: Invoking gsoelim\7f395623
-Node: preconv\7f395749
-Node: Invoking preconv\7f395881
-Node: Output Devices\7f396007
-Node: Special Characters\7f396262
-Node: grotty\7f396436
-Node: Invoking grotty\7f396764
-Node: grops\7f398556
-Node: Invoking grops\7f398893
-Node: Embedding PostScript\7f400394
-Node: gropdf\7f401075
-Node: Invoking gropdf\7f401403
-Node: Embedding PDF\7f402843
-Node: grodvi\7f403458
-Node: Invoking grodvi\7f403809
-Node: grolj4\7f404598
-Node: Invoking grolj4\7f404947
-Node: grolbp\7f405803
-Node: Invoking grolbp\7f406148
-Node: grohtml\7f406941
-Node: Invoking grohtml\7f408372
-Node: grohtml specific registers and strings\7f410189
-Node: gxditview\7f411198
-Node: Invoking gxditview\7f411339
-Node: File formats\7f411475
-Node: gtroff Output\7f411751
-Node: gtroff Output-Footnotes\7f413597
-Ref: gtroff Output-Footnote-1\7f413669
-Node: Language Concepts\7f413804
-Node: Separation\7f414555
-Node: Argument Units\7f416808
-Node: Document Parts\7f417961
-Node: Command Reference\7f419367
-Node: Comment Command\7f419783
-Node: Simple Commands\7f420281
-Node: Simple Commands-Footnotes\7f426211
-Ref: Simple Commands-Footnote-1\7f426287
-Node: Graphics Commands\7f426348
-Node: Device Control Commands\7f433679
-Node: Obsolete Command\7f437734
-Node: Intermediate Output Examples\7f439020
-Node: Output Language Compatibility\7f441819
-Node: Font Files\7f443879
-Node: Font Files-Footnotes\7f444500
-Ref: Font Files-Footnote-1\7f444566
-Node: DESC File Format\7f444627
-Node: Font File Format\7f450498
-Node: Font File Format-Footnotes\7f456735
-Ref: Font File Format-Footnote-1\7f456813
-Ref: Font File Format-Footnote-2\7f456904
-Node: Installation\7f457123
-Node: Copying This Manual\7f457254
-Node: Request Index\7f482372
-Node: Escape Index\7f498963
-Node: Operator Index\7f505531
-Node: Register Index\7f507163
-Node: Macro Index\7f521532
-Node: String Index\7f535787
-Node: Glyph Name Index\7f544476
-Node: Font File Keyword Index\7f544786
-Node: Program and File Index\7f548199
-Node: Concept Index\7f554571
-\1f
-End Tag Table
-
-\1f
-Local Variables:
-coding: iso-8859-1
-End:
diff --git a/doc/groff.info-1 b/doc/groff.info-1
deleted file mode 100644 (file)
index dde424a..0000000
+++ /dev/null
@@ -1,8596 +0,0 @@
-This is groff.info, produced by makeinfo version 5.2dev from
-groff.texinfo.
-
-This manual documents GNU 'troff' version 1.22.3.
-
-   Copyright © 1994-2014 Free Software Foundation, Inc.
-
-     Permission is granted to copy, distribute and/or modify this
-     document under the terms of the GNU Free Documentation License,
-     Version 1.3 or any later version published by the Free Software
-     Foundation; with no Invariant Sections, with the Front-Cover texts
-     being "A GNU Manual," and with the Back-Cover Texts as in (a)
-     below.  A copy of the license is included in the section entitled
-     "GNU Free Documentation License."
-
-     (a) The FSF's Back-Cover Text is: "You have the freedom to copy and
-     modify this GNU manual.  Buying copies from the FSF supports it in
-     developing GNU and promoting software freedom."
-INFO-DIR-SECTION Typesetting
-START-INFO-DIR-ENTRY
-* Groff: (groff).               The GNU troff document formatting system.
-END-INFO-DIR-ENTRY
-
-\1f
-File: groff.info,  Node: Top,  Next: Introduction,  Prev: (dir),  Up: (dir)
-
-GNU troff
-*********
-
-* Menu:
-
-* Introduction::
-* Invoking groff::
-* Tutorial for Macro Users::
-* Macro Packages::
-* gtroff Reference::
-* Preprocessors::
-* Output Devices::
-* File formats::
-* Installation::
-* Copying This Manual::
-* Request Index::
-* Escape Index::
-* Operator Index::
-* Register Index::
-* Macro Index::
-* String Index::
-* Glyph Name Index::
-* Font File Keyword Index::
-* Program and File Index::
-* Concept Index::
-
-This manual documents GNU 'troff' version 1.22.3.
-
-   Copyright © 1994-2014 Free Software Foundation, Inc.
-
-     Permission is granted to copy, distribute and/or modify this
-     document under the terms of the GNU Free Documentation License,
-     Version 1.3 or any later version published by the Free Software
-     Foundation; with no Invariant Sections, with the Front-Cover texts
-     being "A GNU Manual," and with the Back-Cover Texts as in (a)
-     below.  A copy of the license is included in the section entitled
-     "GNU Free Documentation License."
-
-     (a) The FSF's Back-Cover Text is: "You have the freedom to copy and
-     modify this GNU manual.  Buying copies from the FSF supports it in
-     developing GNU and promoting software freedom."
-
-\1f
-File: groff.info,  Node: Introduction,  Next: Invoking groff,  Prev: Top,  Up: Top
-
-1 Introduction
-**************
-
-GNU 'troff' (or 'groff') is a system for typesetting documents.  'troff'
-is very flexible and has been used extensively for some thirty years.
-It is well entrenched in the UNIX community.
-
-* Menu:
-
-* What Is groff?::
-* History::
-* groff Capabilities::
-* Macro Package Intro::
-* Preprocessor Intro::
-* Output device intro::
-* Credits::
-
-\1f
-File: groff.info,  Node: What Is groff?,  Next: History,  Prev: Introduction,  Up: Introduction
-
-1.1 What Is 'groff'?
-====================
-
-'groff' belongs to an older generation of document preparation systems,
-which operate more like compilers than the more recent interactive
-WYSIWYG(1) (*note What Is groff?-Footnote-1::) systems.  'groff' and its
-contemporary counterpart, TeX, both work using a "batch" paradigm: The
-input (or "source") files are normal text files with embedded formatting
-commands.  These files can then be processed by 'groff' to produce a
-typeset document on a variety of devices.
-
-   'groff' should not be confused with a "word processor", an integrated
-system of editor and text formatter.  Also, many word processors follow
-the WYSIWYG paradigm discussed earlier.
-
-   Although WYSIWYG systems may be easier to use, they have a number of
-disadvantages compared to 'troff':
-
-   * They must be used on a graphics display to work on a document.
-
-   * Most of the WYSIWYG systems are either non-free or are not very
-     portable.
-
-   * 'troff' is firmly entrenched in all UNIX systems.
-
-   * It is difficult to have a wide range of capabilities within the
-     confines of a GUI/window system.
-
-   * It is more difficult to make global changes to a document.
-
-     "GUIs normally make it simple to accomplish simple actions and
-     impossible to accomplish complex actions."  -Doug Gwyn (22/Jun/91
-     in 'comp.unix.wizards')
-
-\1f
-File: groff.info,  Node: What Is groff?-Footnotes,  Up: What Is groff?
-
-   (1) What You See Is What You Get
-
-\1f
-File: groff.info,  Node: History,  Next: groff Capabilities,  Prev: What Is groff?,  Up: Introduction
-
-1.2 History
-===========
-
-'troff' can trace its origins back to a formatting program called
-'RUNOFF', written by Jerry Saltzer, which ran on the CTSS (_Compatible
-Time Sharing System_, a project of MIT, the Massachusetts Institute of
-Technology) in the mid-sixties.(1)  (*note History-Footnote-1::) The
-name came from the use of the phrase "run off a document", meaning to
-print it out.  Bob Morris ported it to the 635 architecture and called
-the program 'roff' (an abbreviation of 'runoff').  It was rewritten as
-'rf' for the PDP-7 (before having UNIX), and at the same time (1969),
-Doug McIllroy rewrote an extended and simplified version of 'roff' in
-the BCPL programming language.
-
-   In 1971, the UNIX developers wanted to get a PDP-11, and to justify
-the cost, proposed the development of a document formatting system for
-the AT&T patents division.  This first formatting program was a
-reimplementation of McIllroy's 'roff', written by J. F. Ossanna.
-
-   When they needed a more flexible language, a new version of 'roff'
-called 'nroff' ("Newer 'roff'") was written.  It had a much more
-complicated syntax, but provided the basis for all future versions.
-When they got a Graphic Systems CAT Phototypesetter, Ossanna wrote a
-version of 'nroff' that would drive it.  It was dubbed 'troff', for
-"typesetter 'roff'", although many people have speculated that it
-actually means "Times 'roff'" because of the use of the Times font
-family in 'troff' by default.  As such, the name 'troff' is pronounced
-'t-roff' rather than 'trough'.
-
-   With 'troff' came 'nroff' (they were actually the same program except
-for some '#ifdef's), which was for producing output for line printers
-and character terminals.  It understood everything 'troff' did, and
-ignored the commands that were not applicable (e.g. font changes).
-
-   Since there are several things that cannot be done easily in 'troff',
-work on several preprocessors began.  These programs would transform
-certain parts of a document into 'troff', which made a very natural use
-of pipes in UNIX.
-
-   The 'eqn' preprocessor allowed mathematical formulæ to be specified
-in a much simpler and more intuitive manner.  'tbl' is a preprocessor
-for formatting tables.  The 'refer' preprocessor (and the similar
-program, 'bib') processes citations in a document according to a
-bibliographic database.
-
-   Unfortunately, Ossanna's 'troff' was written in PDP-11 assembly
-language and produced output specifically for the CAT phototypesetter.
-He rewrote it in C, although it was now 7000 lines of uncommented code
-and still dependent on the CAT.  As the CAT became less common, and was
-no longer supported by the manufacturer, the need to make it support
-other devices became a priority.  However, before this could be done,
-Ossanna died by a severe heart attack in a hospital while recovering
-from a previous one.
-
-   So, Brian Kernighan took on the task of rewriting 'troff'.  The newly
-rewritten version produced device independent code that was very easy
-for postprocessors to read and translate to the appropriate printer
-codes.  Also, this new version of 'troff' (called 'ditroff' for "device
-independent 'troff'") had several extensions, which included drawing
-functions.
-
-   Due to the additional abilities of the new version of 'troff',
-several new preprocessors appeared.  The 'pic' preprocessor provides a
-wide range of drawing functions.  Likewise the 'ideal' preprocessor did
-the same, although via a much different paradigm.  The 'grap'
-preprocessor took specifications for graphs, but, unlike other
-preprocessors, produced 'pic' code.
-
-   James Clark began work on a GNU implementation of 'ditroff' in
-early 1989.  The first version, 'groff' 0.3.1, was released June 1990.
-'groff' included:
-
-   * A replacement for 'ditroff' with many extensions.
-
-   * The 'soelim', 'pic', 'tbl', and 'eqn' preprocessors.
-
-   * Postprocessors for character devices, POSTSCRIPT, TeX DVI, and
-     X Windows.  GNU 'troff' also eliminated the need for a separate
-     'nroff' program with a postprocessor that would produce ASCII
-     output.
-
-   * A version of the 'me' macros and an implementation of the 'man'
-     macros.
-
-   Also, a front-end was included that could construct the, sometimes
-painfully long, pipelines required for all the post- and preprocessors.
-
-   Development of GNU 'troff' progressed rapidly, and saw the additions
-of a replacement for 'refer', an implementation of the 'ms' and 'mm'
-macros, and a program to deduce how to format a document ('grog').
-
-   It was declared a stable (i.e. non-beta) package with the release of
-version 1.04 around November 1991.
-
-   Beginning in 1999, 'groff' has new maintainers (the package was an
-orphan for a few years).  As a result, new features and programs like
-'grn', a preprocessor for gremlin images, and an output device to
-produce HTML and XHTML have been added.
-
-\1f
-File: groff.info,  Node: History-Footnotes,  Up: History
-
-   (1) Jerome H. Saltzer, a grad student then, later a Professor of
-Electrical Engineering, now retired.  Saltzer's PhD thesis was the first
-application for 'RUNOFF' and is available from the MIT Libraries.
-
-\1f
-File: groff.info,  Node: groff Capabilities,  Next: Macro Package Intro,  Prev: History,  Up: Introduction
-
-1.3 'groff' Capabilities
-========================
-
-So what exactly is 'groff' capable of doing?  'groff' provides a wide
-range of low-level text formatting operations.  Using these, it is
-possible to perform a wide range of formatting tasks, such as footnotes,
-table of contents, multiple columns, etc.  Here's a list of the most
-important operations supported by 'groff':
-
-   * text filling, adjusting, and centering
-
-   * hyphenation
-
-   * page control
-
-   * font and glyph size control
-
-   * vertical spacing (e.g. double-spacing)
-
-   * line length and indenting
-
-   * macros, strings, diversions, and traps
-
-   * number registers
-
-   * tabs, leaders, and fields
-
-   * input and output conventions and character translation
-
-   * overstrike, bracket, line drawing, and zero-width functions
-
-   * local horizontal and vertical motions and the width function
-
-   * three-part titles
-
-   * output line numbering
-
-   * conditional acceptance of input
-
-   * environment switching
-
-   * insertions from the standard input
-
-   * input/output file switching
-
-   * output and error messages
-
-\1f
-File: groff.info,  Node: Macro Package Intro,  Next: Preprocessor Intro,  Prev: groff Capabilities,  Up: Introduction
-
-1.4 Macro Packages
-==================
-
-Since 'groff' provides such low-level facilities, it can be quite
-difficult to use by itself.  However, 'groff' provides a "macro"
-facility to specify how certain routine operations (e.g. starting
-paragraphs, printing headers and footers, etc.) should be done.  These
-macros can be collected together into a "macro package".  There are a
-number of macro packages available; the most common (and the ones
-described in this manual) are 'man', 'mdoc', 'me', 'ms', and 'mm'.
-
-\1f
-File: groff.info,  Node: Preprocessor Intro,  Next: Output device intro,  Prev: Macro Package Intro,  Up: Introduction
-
-1.5 Preprocessors
-=================
-
-Although 'groff' provides most functions needed to format a document,
-some operations would be unwieldy (e.g. to draw pictures).  Therefore,
-programs called "preprocessors" were written that understand their own
-language and produce the necessary 'groff' operations.  These
-preprocessors are able to differentiate their own input from the rest of
-the document via markers.
-
-   To use a preprocessor, UNIX pipes are used to feed the output from
-the preprocessor into 'groff'.  Any number of preprocessors may be used
-on a given document; in this case, the preprocessors are linked together
-into one pipeline.  However, with 'groff', the user does not need to
-construct the pipe, but only tell 'groff' what preprocessors to use.
-
-   'groff' currently has preprocessors for producing tables ('tbl'),
-typesetting equations ('eqn'), drawing pictures ('pic' and 'grn'),
-processing bibliographies ('refer'), and drawing chemical structures
-('chem').  An associated program that is useful when dealing with
-preprocessors is 'soelim'.
-
-   A free implementation of 'grap', a preprocessor for drawing graphs,
-can be obtained as an extra package; 'groff' can use 'grap' also.
-
-   Unique to 'groff' is the 'preconv' preprocessor that enables 'groff'
-to handle documents in various input encodings.
-
-   There are other preprocessors in existence, but, unfortunately, no
-free implementations are available.  Among them is a preprocessor for
-drawing mathematical pictures ('ideal').
-
-\1f
-File: groff.info,  Node: Output device intro,  Next: Credits,  Prev: Preprocessor Intro,  Up: Introduction
-
-1.6 Output Devices
-==================
-
-'groff' actually produces device independent code that may be fed into a
-postprocessor to produce output for a particular device.  Currently,
-'groff' has postprocessors for POSTSCRIPT devices, character terminals,
-X Windows (for previewing), TeX DVI format, HP LaserJet 4 and Canon LBP
-printers (which use CAPSL), HTML, XHTML, and PDF.
-
-\1f
-File: groff.info,  Node: Credits,  Prev: Output device intro,  Up: Introduction
-
-1.7 Credits
-===========
-
-Large portions of this manual were taken from existing documents, most
-notably, the manual pages for the 'groff' package by James Clark, and
-Eric Allman's papers on the 'me' macro package.
-
-   The section on the 'man' macro package is partly based on Susan G.
-Kleinmann's 'groff_man' manual page written for the Debian GNU/Linux
-system.
-
-   Larry Kollar contributed the section in the 'ms' macro package.
-
-\1f
-File: groff.info,  Node: Invoking groff,  Next: Tutorial for Macro Users,  Prev: Introduction,  Up: Top
-
-2 Invoking 'groff'
-******************
-
-This section focuses on how to invoke the 'groff' front end.  This front
-end takes care of the details of constructing the pipeline among the
-preprocessors, 'gtroff' and the postprocessor.
-
-   It has become a tradition that GNU programs get the prefix 'g' to
-distinguish it from its original counterparts provided by the host (see
-*note Environment::, for more details).  Thus, for example, 'geqn' is
-GNU 'eqn'.  On operating systems like GNU/Linux or the Hurd, which don't
-contain proprietary versions of 'troff', and on MS-DOS/MS-Windows, where
-'troff' and associated programs are not available at all, this prefix is
-omitted since GNU 'troff' is the only used incarnation of 'troff'.
-Exception: 'groff' is never replaced by 'roff'.
-
-   In this document, we consequently say 'gtroff' when talking about the
-GNU 'troff' program.  All other implementations of 'troff' are called
-AT&T 'troff', which is the common origin of all 'troff' derivates (with
-more or less compatible changes).  Similarly, we say 'gpic', 'geqn',
-etc.
-
-* Menu:
-
-* Groff Options::
-* Environment::
-* Macro Directories::
-* Font Directories::
-* Paper Size::
-* Invocation Examples::
-
-\1f
-File: groff.info,  Node: Groff Options,  Next: Environment,  Prev: Invoking groff,  Up: Invoking groff
-
-2.1 Options
-===========
-
-'groff' normally runs the 'gtroff' program and a postprocessor
-appropriate for the selected device.  The default device is 'ps' (but it
-can be changed when 'groff' is configured and built).  It can optionally
-preprocess with any of 'gpic', 'geqn', 'gtbl', 'ggrn', 'grap', 'gchem',
-'grefer', 'gsoelim', or 'preconv'.
-
-   This section only documents options to the 'groff' front end.  Many
-of the arguments to 'groff' are passed on to 'gtroff', therefore those
-are also included.  Arguments to pre- or postprocessors can be found in
-*note Invoking gpic::, *note Invoking geqn::, *note Invoking gtbl::,
-*note Invoking ggrn::, *note Invoking grefer::, *note Invoking gchem::,
-*note Invoking gsoelim::, *note Invoking preconv::, *note Invoking
-grotty::, *note Invoking grops::, *note Invoking gropdf::, *note
-Invoking grohtml::, *note Invoking grodvi::, *note Invoking grolj4::,
-*note Invoking grolbp::, and *note Invoking gxditview::.
-
-   The command line format for 'groff' is:
-
-     groff [ -abceghijklpstvzCEGNRSUVXZ ] [ -dCS ] [ -DARG ]
-           [ -fFAM ] [ -FDIR ] [ -IDIR ] [ -KARG ]
-           [ -LARG ] [ -mNAME ] [ -MDIR ] [ -nNUM ]
-           [ -oLIST ] [ -PARG ] [ -rCN ] [ -TDEV ]
-           [ -wNAME ] [ -WNAME ] [ FILES... ]
-
-   The command line format for 'gtroff' is as follows.
-
-     gtroff [ -abcivzCERU ] [ -dCS ] [ -fFAM ] [ -FDIR ]
-            [ -mNAME ] [ -MDIR ] [ -nNUM ] [ -oLIST ]
-            [ -rCN ] [ -TNAME ] [ -wNAME ] [ -WNAME ]
-            [ FILES... ]
-
-Obviously, many of the options to 'groff' are actually passed on to
-'gtroff'.
-
-   Options without an argument can be grouped behind a single '-'.  A
-filename of '-' denotes the standard input.  It is possible to have
-whitespace between an option and its parameter.
-
-   The 'grog' command can be used to guess the correct 'groff' command
-to format a file.
-
-   Here's the description of the command-line options:
-
-'-a'
-     Generate an ASCII approximation of the typeset output.  The
-     read-only register '.A' is then set to 1.  *Note Built-in
-     Registers::.  A typical example is
-
-          groff -a -man -Tdvi troff.man | less
-
-     which shows how lines are broken for the DVI device.  Note that
-     this option is rather useless today since graphic output devices
-     are available virtually everywhere.
-
-'-b'
-     Print a backtrace with each warning or error message.  This
-     backtrace should help track down the cause of the error.  The line
-     numbers given in the backtrace may not always be correct: 'gtroff'
-     can get confused by 'as' or 'am' requests while counting line
-     numbers.
-
-'-c'
-     Suppress color output.
-
-'-C'
-     Enable compatibility mode.  *Note Implementation Differences::, for
-     the list of incompatibilities between 'groff' and AT&T 'troff'.
-
-'-dCS'
-'-dNAME=S'
-     Define C or NAME to be a string S.  C must be a one-letter name;
-     NAME can be of arbitrary length.  All string assignments happen
-     before loading any macro file (including the start-up file).
-
-'-DARG'
-     Set default input encoding used by 'preconv' to ARG.  Implies '-k'.
-
-'-e'
-     Preprocess with 'geqn'.
-
-'-E'
-     Inhibit all error messages.
-
-'-fFAM'
-     Use FAM as the default font family.  *Note Font Families::.
-
-'-FDIR'
-     Search 'DIR' for subdirectories 'devNAME' (NAME is the name of the
-     device), for the 'DESC' file, and for font files before looking in
-     the standard directories (*note Font Directories::).  This option
-     is passed to all pre- and postprocessors using the
-     'GROFF_FONT_PATH' environment variable.
-
-'-g'
-     Preprocess with 'ggrn'.
-
-'-G'
-     Preprocess with 'grap'.  Implies '-p'.
-
-'-h'
-     Print a help message.
-
-'-i'
-     Read the standard input after all the named input files have been
-     processed.
-
-'-IDIR'
-     This option may be used to specify a directory to search for files.
-     It is passed to the following programs:
-
-        * 'gsoelim' (see *note gsoelim:: for more details); it also
-          implies 'groff''s '-s' option.
-
-        * 'gtroff'; it is used to search files named in the 'psbb' and
-          'so' requests.
-
-        * 'grops'; it is used to search files named in the
-          '\X'ps: import' and '\X'ps: file' escapes.
-
-     The current directory is always searched first.  This option may be
-     specified more than once; the directories are searched in the order
-     specified.  No directory search is performed for files specified
-     using an absolute path.
-
-'-j'
-     Preprocess with 'gchem'.  Implies '-p'.
-
-'-k'
-     Preprocess with 'preconv'.  This is run before any other
-     preprocessor.  Please refer to 'preconv''s manual page for its
-     behaviour if no '-K' (or '-D') option is specified.
-
-'-KARG'
-     Set input encoding used by preconv to ARG.  Implies '-k'.
-
-'-l'
-     Send the output to a spooler for printing.  The command used for
-     this is specified by the 'print' command in the device description
-     file (see *note Font Files::, for more info).  If not present, '-l'
-     is ignored.
-
-'-LARG'
-     Pass ARG to the spooler.  Each argument should be passed with a
-     separate '-L' option.  Note that 'groff' does not prepend a '-' to
-     ARG before passing it to the postprocessor.  If the 'print' keyword
-     in the device description file is missing, '-L' is ignored.
-
-'-mNAME'
-     Read in the file 'NAME.tmac'.  Normally 'groff' searches for this
-     in its macro directories.  If it isn't found, it tries 'tmac.NAME'
-     (searching in the same directories).
-
-'-MDIR'
-     Search directory 'DIR' for macro files before the standard
-     directories (*note Macro Directories::).
-
-'-nNUM'
-     Number the first page NUM.
-
-'-N'
-     Don't allow newlines with 'eqn' delimiters.  This is the same as
-     the '-N' option in 'geqn'.
-
-'-oLIST'
-     Output only pages in LIST, which is a comma-separated list of page
-     ranges; 'N' means print page N, 'M-N' means print every page
-     between M and N, '-N' means print every page up to N, 'N-' means
-     print every page beginning with N.  'gtroff' exits after printing
-     the last page in the list.  All the ranges are inclusive on both
-     ends.
-
-     Within 'gtroff', this information can be extracted with the '.P'
-     register.  *Note Built-in Registers::.
-
-     If your document restarts page numbering at the beginning of each
-     chapter, then 'gtroff' prints the specified page range for each
-     chapter.
-
-'-p'
-     Preprocess with 'gpic'.
-
-'-PARG'
-     Pass ARG to the postprocessor.  Each argument should be passed with
-     a separate '-P' option.  Note that 'groff' does not prepend '-' to
-     ARG before passing it to the postprocessor.
-
-'-rCN'
-'-rNAME=N'
-     Set number register C or NAME to the value N.  C must be a
-     one-letter name; NAME can be of arbitrary length.  N can be any
-     'gtroff' numeric expression.  All register assignments happen
-     before loading any macro file (including the start-up file).
-
-'-R'
-     Preprocess with 'grefer'.  No mechanism is provided for passing
-     arguments to 'grefer' because most 'grefer' options have equivalent
-     commands that can be included in the file.  *Note grefer::, for
-     more details.
-
-     Note that 'gtroff' also accepts a '-R' option, which is not
-     accessible via 'groff'.  This option prevents the loading of the
-     'troffrc' and 'troffrc-end' files.
-
-'-s'
-     Preprocess with 'gsoelim'.
-
-'-S'
-     Safer mode.  Pass the '-S' option to 'gpic' and disable the 'open',
-     'opena', 'pso', 'sy', and 'pi' requests.  For security reasons,
-     this is enabled by default.
-
-'-t'
-     Preprocess with 'gtbl'.
-
-'-TDEV'
-     Prepare output for device DEV.  The default device is 'ps', unless
-     changed when 'groff' was configured and built.  The following are
-     the output devices currently available:
-
-     'ps'
-          For POSTSCRIPT printers and previewers.
-
-     'pdf'
-          For PDF viewers or printers.
-
-     'dvi'
-          For TeX DVI format.
-
-     'X75'
-          For a 75dpi X11 previewer.
-
-     'X75-12'
-          For a 75dpi X11 previewer with a 12pt base font in the
-          document.
-
-     'X100'
-          For a 100dpi X11 previewer.
-
-     'X100-12'
-          For a 100dpi X11 previewer with a 12pt base font in the
-          document.
-
-     'ascii'
-          For typewriter-like devices using the (7-bit) ASCII character
-          set.
-
-     'latin1'
-          For typewriter-like devices that support the Latin-1
-          (ISO 8859-1) character set.
-
-     'utf8'
-          For typewriter-like devices that use the Unicode (ISO 10646)
-          character set with UTF-8 encoding.
-
-     'cp1047'
-          For typewriter-like devices that use the EBCDIC encoding IBM
-          cp1047.
-
-     'lj4'
-          For HP LaserJet4-compatible (or other PCL5-compatible)
-          printers.
-
-     'lbp'
-          For Canon CAPSL printers (LBP-4 and LBP-8 series laser
-          printers).
-
-     'html'
-     'xhtml'
-          To produce HTML and XHTML output, respectively.  Note that
-          this driver consists of two parts, a preprocessor
-          ('pre-grohtml') and a postprocessor ('post-grohtml').
-
-     The predefined 'gtroff' string register '.T' contains the current
-     output device; the read-only number register '.T' is set to 1 if
-     this option is used (which is always true if 'groff' is used to
-     call 'gtroff').  *Note Built-in Registers::.
-
-     The postprocessor to be used for a device is specified by the
-     'postpro' command in the device description file.  (*Note Font
-     Files::, for more info.)  This can be overridden with the '-X'
-     option.
-
-'-U'
-     Unsafe mode.  This enables the 'open', 'opena', 'pso', 'sy', and
-     'pi' requests.
-
-'-wNAME'
-     Enable warning NAME.  Available warnings are described in *note
-     Debugging::.  Multiple '-w' options are allowed.
-
-'-WNAME'
-     Inhibit warning NAME.  Multiple '-W' options are allowed.
-
-'-v'
-     Make programs run by 'groff' print out their version number.
-
-'-V'
-     Print the pipeline on 'stdout' instead of executing it.  If
-     specified more than once, print the pipeline on 'stderr' and
-     execute it.
-
-'-X'
-     Preview with 'gxditview' instead of using the usual postprocessor.
-     This is unlikely to produce good results except with '-Tps'.
-
-     Note that this is not the same as using '-TX75' or '-TX100' to view
-     a document with 'gxditview': The former uses the metrics of the
-     specified device, whereas the latter uses X-specific fonts and
-     metrics.
-
-'-z'
-     Suppress output from 'gtroff'.  Only error messages are printed.
-
-'-Z'
-     Do not postprocess the output of 'gtroff'.  Normally 'groff'
-     automatically runs the appropriate postprocessor.
-
-\1f
-File: groff.info,  Node: Environment,  Next: Macro Directories,  Prev: Groff Options,  Up: Invoking groff
-
-2.2 Environment
-===============
-
-There are also several environment variables (of the operating system,
-not within 'gtroff') that can modify the behavior of 'groff'.
-
-'GROFF_BIN_PATH'
-     This search path, followed by 'PATH', is used for commands executed
-     by 'groff'.
-
-'GROFF_COMMAND_PREFIX'
-     If this is set to X, then 'groff' runs 'Xtroff' instead of
-     'gtroff'.  This also applies to 'tbl', 'pic', 'eqn', 'grn', 'chem',
-     'refer', and 'soelim'.  It does not apply to 'grops', 'grodvi',
-     'grotty', 'pre-grohtml', 'post-grohtml', 'preconv', 'grolj4',
-     'gropdf', and 'gxditview'.
-
-     The default command prefix is determined during the installation
-     process.  If a non-GNU troff system is found, prefix 'g' is used,
-     none otherwise.
-
-'GROFF_ENCODING'
-     The value of this environment value is passed to the 'preconv'
-     preprocessor to select the encoding of input files.  Setting this
-     option implies 'groff''s command line option '-k' (this is, 'groff'
-     actually always calls 'preconv').  If set without a value, 'groff'
-     calls 'preconv' without arguments.  An explicit '-K' command line
-     option overrides the value of 'GROFF_ENCODING'.  See the manual
-     page of 'preconv' for details.
-
-'GROFF_FONT_PATH'
-     A colon-separated list of directories in which to search for the
-     'dev'NAME directory (before the default directories are tried).
-     *Note Font Directories::.
-
-'GROFF_TMAC_PATH'
-     A colon-separated list of directories in which to search for macro
-     files (before the default directories are tried).  *Note Macro
-     Directories::.
-
-'GROFF_TMPDIR'
-     The directory in which 'groff' creates temporary files.  If this is
-     not set and 'TMPDIR' is set, temporary files are created in that
-     directory.  Otherwise temporary files are created in a
-     system-dependent default directory (on Unix and GNU/Linux systems,
-     this is usually '/tmp').  'grops', 'grefer', 'pre-grohtml', and
-     'post-grohtml' can create temporary files in this directory.
-
-'GROFF_TYPESETTER'
-     The default output device.
-
-   Note that MS-DOS and MS-Windows ports of 'groff' use semi-colons,
-rather than colons, to separate the directories in the lists described
-above.
-
-\1f
-File: groff.info,  Node: Macro Directories,  Next: Font Directories,  Prev: Environment,  Up: Invoking groff
-
-2.3 Macro Directories
-=====================
-
-All macro file names must be named 'NAME.tmac' or 'tmac.NAME' to make
-the '-mNAME' command line option work.  The 'mso' request doesn't have
-this restriction; any file name can be used, and 'gtroff' won't try to
-append or prepend the 'tmac' string.
-
-   Macro files are kept in the "tmac directories", all of which
-constitute the "tmac path".  The elements of the search path for macro
-files are (in that order):
-
-   * The directories specified with 'gtroff''s or 'groff''s '-M' command
-     line option.
-
-   * The directories given in the 'GROFF_TMAC_PATH' environment
-     variable.
-
-   * The current directory (only if in unsafe mode using the '-U'
-     command line switch).
-
-   * The home directory.
-
-   * A platform-dependent directory, a site-specific
-     (platform-independent) directory, and the main tmac directory; the
-     default locations are
-
-          /usr/local/lib/groff/site-tmac
-          /usr/local/share/groff/site-tmac
-          /usr/local/share/groff/1.22.3/tmac
-
-     assuming that the version of 'groff' is 1.22.3, and the
-     installation prefix was '/usr/local'.  It is possible to fine-tune
-     those directories during the installation process.
-
-\1f
-File: groff.info,  Node: Font Directories,  Next: Paper Size,  Prev: Macro Directories,  Up: Invoking groff
-
-2.4 Font Directories
-====================
-
-Basically, there is no restriction how font files for 'groff' are named
-and how long font names are; however, to make the font family mechanism
-work (*note Font Families::), fonts within a family should start with
-the family name, followed by the shape.  For example, the Times family
-uses 'T' for the family name and 'R', 'B', 'I', and 'BI' to indicate the
-shapes 'roman', 'bold', 'italic', and 'bold italic', respectively.  Thus
-the final font names are 'TR', 'TB', 'TI', and 'TBI'.
-
-   All font files are kept in the "font directories", which constitute
-the "font path".  The file search functions always append the directory
-'dev'NAME, where NAME is the name of the output device.  Assuming, say,
-DVI output, and '/foo/bar' as a font directory, the font files for
-'grodvi' must be in '/foo/bar/devdvi'.
-
-   The elements of the search path for font files are (in that order):
-
-   * The directories specified with 'gtroff''s or 'groff''s '-F' command
-     line option.  All device drivers and some preprocessors also have
-     this option.
-
-   * The directories given in the 'GROFF_FONT_PATH' environment
-     variable.
-
-   * A site-specific directory and the main font directory; the default
-     locations are
-
-          /usr/local/share/groff/site-font
-          /usr/local/share/groff/1.22.3/font
-
-     assuming that the version of 'groff' is 1.22.3, and the
-     installation prefix was '/usr/local'.  It is possible to fine-tune
-     those directories during the installation process.
-
-\1f
-File: groff.info,  Node: Paper Size,  Next: Invocation Examples,  Prev: Font Directories,  Up: Invoking groff
-
-2.5 Paper Size
-==============
-
-In groff, the page size for 'gtroff' and for output devices are handled
-separately.  *Note Page Layout::, for vertical manipulation of the page
-size.  *Note Line Layout::, for horizontal changes.
-
-   A default paper size can be set in the device's 'DESC' file.  Most
-output devices also have a command line option '-p' to override the
-default paper size and option '-l' to use landscape orientation.  *Note
-DESC File Format::, for a description of the 'papersize' keyword, which
-takes the same argument as '-p'.
-
-   A convenient shorthand to set a particular paper size for 'gtroff' is
-command line option '-dpaper=SIZE'.  This defines string 'paper', which
-is processed in file 'papersize.tmac' (loaded in the start-up file
-'troffrc' by default).  Possible values for SIZE are the same as the
-predefined values for the 'papersize' keyword (but only in lowercase)
-except 'a7'-'d7'.  An appended 'l' (ell) character denotes landscape
-orientation.
-
-   For example, use the following for PS output on A4 paper in landscape
-orientation:
-
-     groff -Tps -dpaper=a4l -P-pa4 -P-l -ms foo.ms > foo.ps
-
-   Note that it is up to the particular macro package to respect default
-page dimensions set in this way (most do).
-
-\1f
-File: groff.info,  Node: Invocation Examples,  Prev: Paper Size,  Up: Invoking groff
-
-2.6 Invocation Examples
-=======================
-
-This section lists several common uses of 'groff' and the corresponding
-command lines.
-
-     groff file
-
-This command processes 'file' without a macro package or a preprocessor.
-The output device is the default, 'ps', and the output is sent to
-'stdout'.
-
-     groff -t -mandoc -Tascii file | less
-
-This is basically what a call to the 'man' program does.  'gtroff'
-processes the manual page 'file' with the 'mandoc' macro file (which in
-turn either calls the 'man' or the 'mdoc' macro package), using the
-'tbl' preprocessor and the ASCII output device.  Finally, the 'less'
-pager displays the result.
-
-     groff -X -m me file
-
-Preview 'file' with 'gxditview', using the 'me' macro package.  Since no
-'-T' option is specified, use the default device ('ps').  Note that you
-can either say '-m me' or '-me'; the latter is an anachronism from the
-early days of UNIX.(1)  (*note Invocation Examples-Footnote-1::)
-
-     groff -man -rD1 -z file
-
-Check 'file' with the 'man' macro package, forcing double-sided printing
-- don't produce any output.
-
-* Menu:
-
-* grog::
-
-\1f
-File: groff.info,  Node: Invocation Examples-Footnotes,  Up: Invocation Examples
-
-   (1) The same is true for the other main macro packages that come with
-'groff': 'man', 'mdoc', 'ms', 'mm', and 'mandoc'.  This won't work in
-general; for example, to load 'trace.tmac', either '-mtrace' or
-'-m trace' must be used.
-
-\1f
-File: groff.info,  Node: grog,  Prev: Invocation Examples,  Up: Invocation Examples
-
-2.6.1 'grog'
-------------
-
-'grog' reads files, guesses which of the 'groff' preprocessors and/or
-macro packages are required for formatting them, and prints the 'groff'
-command including those options on the standard output.  It generates
-one or more of the options '-e', '-man', '-me', '-mm', '-mom', '-ms',
-'-mdoc', '-mdoc-old', '-p', '-R', '-g', '-G', '-s', and '-t'.
-
-   A special file name '-' refers to the standard input.  Specifying no
-files also means to read the standard input.  Any specified options are
-included in the printed command.  No space is allowed between options
-and their arguments.  The only options recognized are '-C' (which is
-also passed on) to enable compatibility mode, and '-v' to print the
-version number and exit.
-
-   For example,
-
-     grog -Tdvi paper.ms
-
-guesses the appropriate command to print 'paper.ms' and then prints it
-to the command line after adding the '-Tdvi' option.  For direct
-execution, enclose the call to 'grog' in backquotes at the UNIX shell
-prompt:
-
-     `grog -Tdvi paper.ms` > paper.dvi
-
-As seen in the example, it is still necessary to redirect the output to
-something meaningful (i.e. either a file or a pager program like
-'less').
-
-\1f
-File: groff.info,  Node: Tutorial for Macro Users,  Next: Macro Packages,  Prev: Invoking groff,  Up: Top
-
-3 Tutorial for Macro Users
-**************************
-
-Most users tend to use a macro package to format their papers.  This
-means that the whole breadth of 'groff' is not necessary for most
-people.  This chapter covers the material needed to efficiently use a
-macro package.
-
-* Menu:
-
-* Basics::
-* Common Features::
-
-\1f
-File: groff.info,  Node: Basics,  Next: Common Features,  Prev: Tutorial for Macro Users,  Up: Tutorial for Macro Users
-
-3.1 Basics
-==========
-
-This section covers some of the basic concepts necessary to understand
-how to use a macro package.(1)  (*note Basics-Footnote-1::) References
-are made throughout to more detailed information, if desired.
-
-   'gtroff' reads an input file prepared by the user and outputs a
-formatted document suitable for publication or framing.  The input
-consists of text, or words to be printed, and embedded commands
-("requests" and "escapes"), which tell 'gtroff' how to format the
-output.  For more detail on this, see *note Embedded Commands::.
-
-   The word "argument" is used in this chapter to mean a word or number
-that appears on the same line as a request, and which modifies the
-meaning of that request.  For example, the request
-
-     .sp
-
-spaces one line, but
-
-     .sp 4
-
-spaces four lines.  The number 4 is an argument to the 'sp' request,
-which says to space four lines instead of one.  Arguments are separated
-from the request and from each other by spaces (_no_ tabs).  More
-details on this can be found in *note Request and Macro Arguments::.
-
-   The primary function of 'gtroff' is to collect words from input
-lines, fill output lines with those words, justify the right-hand margin
-by inserting extra spaces in the line, and output the result.  For
-example, the input:
-
-     Now is the time
-     for all good men
-     to come to the aid
-     of their party.
-     Four score and seven
-     years ago, etc.
-
-is read, packed onto output lines, and justified to produce:
-
-     Now is the time for all good men to come to the aid of their party.
-     Four score and seven years ago, etc.
-
-   Sometimes a new output line should be started even though the current
-line is not yet full; for example, at the end of a paragraph.  To do
-this it is possible to cause a "break", which starts a new output line.
-Some requests cause a break automatically, as normally do blank input
-lines and input lines beginning with a space.
-
-   Not all input lines are text to be formatted.  Some input lines are
-requests that describe how to format the text.  Requests always have a
-period ('.') or an apostrophe (''') as the first character of the input
-line.
-
-   The text formatter also does more complex things, such as
-automatically numbering pages, skipping over page boundaries, putting
-footnotes in the correct place, and so forth.
-
-   Here are a few hints for preparing text for input to 'gtroff'.
-
-   * First, keep the input lines short.  Short input lines are easier to
-     edit, and 'gtroff' packs words onto longer lines anyhow.
-
-   * In keeping with this, it is helpful to begin a new line after every
-     comma or phrase, since common corrections are to add or delete
-     sentences or phrases.
-
-   * End each sentence with two spaces - or better, start each sentence
-     on a new line.  'gtroff' recognizes characters that usually end a
-     sentence, and inserts sentence space accordingly.
-
-   * Do not hyphenate words at the end of lines - 'gtroff' is smart
-     enough to hyphenate words as needed, but is not smart enough to
-     take hyphens out and join a word back together.  Also, words such
-     as "mother-in-law" should not be broken over a line, since then a
-     space can occur where not wanted, such as "mother- in-law".
-
-   'gtroff' double-spaces output text automatically if you use the
-request '.ls 2'.  Reactivate single-spaced mode by typing '.ls 1'.(2)
-(*note Basics-Footnote-2::)
-
-   A number of requests allow to change the way the output looks,
-sometimes called the "layout" of the output page.  Most of these
-requests adjust the placing of "whitespace" (blank lines or spaces).
-
-   The 'bp' request starts a new page, causing a line break.
-
-   The request '.sp N' leaves N lines of blank space.  N can be omitted
-(meaning skip a single line) or can be of the form Ni (for N inches) or
-Nc (for N centimeters).  For example, the input:
-
-     .sp 1.5i
-     My thoughts on the subject
-     .sp
-
-leaves one and a half inches of space, followed by the line "My thoughts
-on the subject", followed by a single blank line (more measurement units
-are available, see *note Measurements::).
-
-   Text lines can be centered by using the 'ce' request.  The line after
-'ce' is centered (horizontally) on the page.  To center more than one
-line, use '.ce N' (where N is the number of lines to center), followed
-by the N lines.  To center many lines without counting them, type:
-
-     .ce 1000
-     lines to center
-     .ce 0
-
-The '.ce 0' request tells 'groff' to center zero more lines, in other
-words, stop centering.
-
-   All of these requests cause a break; that is, they always start a new
-line.  To start a new line without performing any other action, use
-'br'.
-
-\1f
-File: groff.info,  Node: Basics-Footnotes,  Up: Basics
-
-   (1) This section is derived from 'Writing Papers with nroff using
--me' by Eric P. Allman.
-
-   (2) If you need finer granularity of the vertical space, use the
-'pvs' request (*note Changing Type Sizes::).
-
-\1f
-File: groff.info,  Node: Common Features,  Prev: Basics,  Up: Tutorial for Macro Users
-
-3.2 Common Features
-===================
-
-'gtroff' provides very low-level operations for formatting a document.
-There are many common routine operations that are done in all documents.
-These common operations are written into "macros" and collected into a
-"macro package".
-
-   All macro packages provide certain common capabilities that fall into
-the following categories.
-
-* Menu:
-
-* Paragraphs::
-* Sections and Chapters::
-* Headers and Footers::
-* Page Layout Adjustment::
-* Displays::
-* Footnotes and Annotations::
-* Table of Contents::
-* Indices::
-* Paper Formats::
-* Multiple Columns::
-* Font and Size Changes::
-* Predefined Strings::
-* Preprocessor Support::
-* Configuration and Customization::
-
-\1f
-File: groff.info,  Node: Paragraphs,  Next: Sections and Chapters,  Prev: Common Features,  Up: Common Features
-
-3.2.1 Paragraphs
-----------------
-
-One of the most common and most used capability is starting a paragraph.
-There are a number of different types of paragraphs, any of which can be
-initiated with macros supplied by the macro package.  Normally,
-paragraphs start with a blank line and the first line indented, like the
-text in this manual.  There are also block style paragraphs, which omit
-the indentation:
-
-     Some   men  look   at  constitutions   with  sanctimonious
-     reverence, and deem them like the ark of the covenant, too
-     sacred to be touched.
-
-And there are also indented paragraphs, which begin with a tag or label
-at the margin and the remaining text indented.
-
-     one   This is  the first paragraph.  Notice  how the first
-           line of  the resulting  paragraph lines up  with the
-           other lines in the paragraph.
-
-     longlabel
-           This  paragraph   had  a  long   label.   The  first
-           character of text on the first line does not line up
-           with  the  text  on  second  and  subsequent  lines,
-           although they line up with each other.
-
-   A variation of this is a bulleted list.
-
-     .     Bulleted lists start with a bullet.   It is possible
-           to use other glyphs instead of the bullet.  In nroff
-           mode using the ASCII character set for output, a dot
-           is used instead of a real bullet.
-
-\1f
-File: groff.info,  Node: Sections and Chapters,  Next: Headers and Footers,  Prev: Paragraphs,  Up: Common Features
-
-3.2.2 Sections and Chapters
----------------------------
-
-Most macro packages supply some form of section headers.  The simplest
-kind is simply the heading on a line by itself in bold type.  Others
-supply automatically numbered section heading or different heading
-styles at different levels.  Some, more sophisticated, macro packages
-supply macros for starting chapters and appendices.
-
-\1f
-File: groff.info,  Node: Headers and Footers,  Next: Page Layout Adjustment,  Prev: Sections and Chapters,  Up: Common Features
-
-3.2.3 Headers and Footers
--------------------------
-
-Every macro package gives some way to manipulate the "headers" and
-"footers" (also called "titles") on each page.  This is text put at the
-top and bottom of each page, respectively, which contain data like the
-current page number, the current chapter title, and so on.  Its
-appearance is not affected by the running text.  Some packages allow for
-different ones on the even and odd pages (for material printed in a book
-form).
-
-   The titles are called "three-part titles", that is, there is a
-left-justified part, a centered part, and a right-justified part.  An
-automatically generated page number may be put in any of these fields
-with the '%' character (see *note Page Layout::, for more details).
-
-\1f
-File: groff.info,  Node: Page Layout Adjustment,  Next: Displays,  Prev: Headers and Footers,  Up: Common Features
-
-3.2.4 Page Layout
------------------
-
-Most macro packages let the user specify top and bottom margins and
-other details about the appearance of the printed pages.
-
-\1f
-File: groff.info,  Node: Displays,  Next: Footnotes and Annotations,  Prev: Page Layout Adjustment,  Up: Common Features
-
-3.2.5 Displays
---------------
-
-"Displays" are sections of text to be set off from the body of the
-paper.  Major quotes, tables, and figures are types of displays, as are
-all the examples used in this document.
-
-   "Major quotes" are quotes that are several lines long, and hence are
-set in from the rest of the text without quote marks around them.
-
-   A "list" is an indented, single-spaced, unfilled display.  Lists
-should be used when the material to be printed should not be filled and
-justified like normal text, such as columns of figures or the examples
-used in this paper.
-
-   A "keep" is a display of lines that are kept on a single page if
-possible.  An example for a keep might be a diagram.  Keeps differ from
-lists in that lists may be broken over a page boundary whereas keeps are
-not.
-
-   "Floating keeps" move relative to the text.  Hence, they are good for
-things that are referred to by name, such as "See figure 3".  A floating
-keep appears at the bottom of the current page if it fits; otherwise, it
-appears at the top of the next page.  Meanwhile, the surrounding text
-'flows' around the keep, thus leaving no blank areas.
-
-\1f
-File: groff.info,  Node: Footnotes and Annotations,  Next: Table of Contents,  Prev: Displays,  Up: Common Features
-
-3.2.6 Footnotes and Annotations
--------------------------------
-
-There are a number of requests to save text for later printing.
-
-   "Footnotes" are printed at the bottom of the current page.
-
-   "Delayed text" is very similar to a footnote except that it is
-printed when called for explicitly.  This allows a list of references to
-appear (for example) at the end of each chapter, as is the convention in
-some disciplines.
-
-   Most macro packages that supply this functionality also supply a
-means of automatically numbering either type of annotation.
-
-\1f
-File: groff.info,  Node: Table of Contents,  Next: Indices,  Prev: Footnotes and Annotations,  Up: Common Features
-
-3.2.7 Table of Contents
------------------------
-
-"Tables of contents" are a type of delayed text having a tag (usually
-the page number) attached to each entry after a row of dots.  The table
-accumulates throughout the paper until printed, usually after the paper
-has ended.  Many macro packages provide the ability to have several
-tables of contents (e.g. a standard table of contents, a list of tables,
-etc).
-
-\1f
-File: groff.info,  Node: Indices,  Next: Paper Formats,  Prev: Table of Contents,  Up: Common Features
-
-3.2.8 Indices
--------------
-
-While some macro packages use the term "index", none actually provide
-that functionality.  The facilities they call indices are actually more
-appropriate for tables of contents.
-
-   To produce a real index in a document, external tools like the
-'makeindex' program are necessary.
-
-\1f
-File: groff.info,  Node: Paper Formats,  Next: Multiple Columns,  Prev: Indices,  Up: Common Features
-
-3.2.9 Paper Formats
--------------------
-
-Some macro packages provide stock formats for various kinds of
-documents.  Many of them provide a common format for the title and
-opening pages of a technical paper.  The 'mm' macros in particular
-provide formats for letters and memoranda.
-
-\1f
-File: groff.info,  Node: Multiple Columns,  Next: Font and Size Changes,  Prev: Paper Formats,  Up: Common Features
-
-3.2.10 Multiple Columns
------------------------
-
-Some macro packages (but not 'man') provide the ability to have two or
-more columns on a page.
-
-\1f
-File: groff.info,  Node: Font and Size Changes,  Next: Predefined Strings,  Prev: Multiple Columns,  Up: Common Features
-
-3.2.11 Font and Size Changes
-----------------------------
-
-The built-in font and size functions are not always intuitive, so all
-macro packages provide macros to make these operations simpler.
-
-\1f
-File: groff.info,  Node: Predefined Strings,  Next: Preprocessor Support,  Prev: Font and Size Changes,  Up: Common Features
-
-3.2.12 Predefined Strings
--------------------------
-
-Most macro packages provide various predefined strings for a variety of
-uses; examples are sub- and superscripts, printable dates, quotes and
-various special characters.
-
-\1f
-File: groff.info,  Node: Preprocessor Support,  Next: Configuration and Customization,  Prev: Predefined Strings,  Up: Common Features
-
-3.2.13 Preprocessor Support
----------------------------
-
-All macro packages provide support for various preprocessors and may
-extend their functionality.
-
-   For example, all macro packages mark tables (which are processed with
-'gtbl') by placing them between 'TS' and 'TE' macros.  The 'ms' macro
-package has an option, '.TS H', that prints a caption at the top of a
-new page (when the table is too long to fit on a single page).
-
-\1f
-File: groff.info,  Node: Configuration and Customization,  Prev: Preprocessor Support,  Up: Common Features
-
-3.2.14 Configuration and Customization
---------------------------------------
-
-Some macro packages provide means of customizing many of the details of
-how the package behaves.  This ranges from setting the default type size
-to changing the appearance of section headers.
-
-\1f
-File: groff.info,  Node: Macro Packages,  Next: gtroff Reference,  Prev: Tutorial for Macro Users,  Up: Top
-
-4 Macro Packages
-****************
-
-This chapter documents the main macro packages that come with 'groff'.
-
-   Different main macro packages can't be used at the same time; for
-example
-
-     groff -m man foo.man -m ms bar.doc
-
-doesn't work.  Note that option arguments are processed before
-non-option arguments; the above (failing) sample is thus reordered to
-
-     groff -m man -m ms foo.man bar.doc
-
-* Menu:
-
-* man::
-* mdoc::
-* ms::
-* me::
-* mm::
-* mom::
-
-\1f
-File: groff.info,  Node: man,  Next: mdoc,  Prev: Macro Packages,  Up: Macro Packages
-
-4.1 'man'
-=========
-
-This is the most popular and probably the most important macro package
-of 'groff'.  It is easy to use, and a vast majority of manual pages are
-based on it.
-
-* Menu:
-
-* Man options::
-* Man usage::
-* Man font macros::
-* Miscellaneous man macros::
-* Predefined man strings::
-* Preprocessors in man pages::
-* Optional man extensions::
-
-\1f
-File: groff.info,  Node: Man options,  Next: Man usage,  Prev: man,  Up: man
-
-4.1.1 Options
--------------
-
-The command line format for using the 'man' macros with 'groff' is:
-
-     groff -m man [ -rLL=LENGTH ] [ -rLT=LENGTH ] [ -rFT=DIST ]
-           [ -rcR=1 ] [ -rC1 ] [ -rD1 ] [-rHY=FLAGS ]
-           [ -rPNNN ] [ -rSXX ] [ -rXNNN ]
-           [ -rIN=LENGTH ] [ -rSN=LENGTH ] [ FILES... ]
-
-It is possible to use '-man' instead of '-m man'.
-
-'-rcR=1'
-     This option (the default if a TTY output device is used) creates a
-     single, very long page instead of multiple pages.  Use '-rcR=0' to
-     disable it.
-
-'-rC1'
-     If more than one manual page is given on the command line, number
-     the pages continuously, rather than starting each at 1.
-
-'-rD1'
-     Double-sided printing.  Footers for even and odd pages are
-     formatted differently.
-
-'-rFT=DIST'
-     Set the position of the footer text to DIST.  If positive, the
-     distance is measured relative to the top of the page, otherwise it
-     is relative to the bottom.  The default is -0.5i.
-
-'-rHY=FLAGS'
-     Set hyphenation flags.  Possible values are 1 to hyphenate without
-     restrictions, 2 to not hyphenate the last word on a page, 4 to not
-     hyphenate the last two characters of a word, and 8 to not hyphenate
-     the first two characters of a word.  These values are additive; the
-     default is 14.
-
-'-rIN=LENGTH'
-     Set the body text indentation to LENGTH.  If not specified, the
-     indentation defaults to 7n (7 characters) in nroff mode and 7.2n
-     otherwise.  For nroff, this value should always be an integer
-     multiple of unit 'n' to get consistent indentation.
-
-'-rLL=LENGTH'
-     Set line length to LENGTH.  If not specified, the line length is
-     set to respect any value set by a prior 'll' request (which _must_
-     be in effect when the 'TH' macro is invoked), if this differs from
-     the built-in default for the formatter; otherwise it defaults to
-     78n in nroff mode (this is 78 characters per line) and 6.5i in
-     troff mode.(1)  (*note Man options-Footnote-1::)
-
-'-rLT=LENGTH'
-     Set title length to LENGTH.  If not specified, the title length
-     defaults to the line length.
-
-'-rPNNN'
-     Page numbering starts with NNN rather than with 1.
-
-'-rSXX'
-     Use XX (which can be 10, 11, or 12pt) as the base document font
-     size instead of the default value of 10pt.
-
-'-rSN=LENGTH'
-     Set the indentation for sub-subheadings to LENGTH.  If not
-     specified, the indentation defaults to 3n.
-
-'-rXNNN'
-     After page NNN, number pages as NNNa, NNNb, NNNc, etc.  For
-     example, the option '-rX2' produces the following page numbers: 1,
-     2, 2a, 2b, 2c, etc.
-
-\1f
-File: groff.info,  Node: Man options-Footnotes,  Up: Man options
-
-   (1) Note that the use of a '.ll LENGTH' request to initialize the
-line length, prior to use of the 'TH' macro, is supported for backward
-compatibility with some versions of the 'man' program.  _Always_ use the
-'-rLL=LENGTH' option, or an equivalent '.nr LL LENGTH' request, in
-preference to such a '.ll LENGTH' request.  In particular, note that in
-nroff mode, the request '.ll 65n', (with any LENGTH expression that
-evaluates equal to 65n, i.e., the formatter's default line length in
-nroff mode), does _not_ set the line length to 65n (it is adjusted to
-the 'man' macro package's default setting of 78n), whereas the use of
-the '-rLL=65n' option, or the '.nr LL 65n' request _does_ establish a
-line length of 65n.
-
-\1f
-File: groff.info,  Node: Man usage,  Next: Man font macros,  Prev: Man options,  Up: man
-
-4.1.2 Usage
------------
-
-This section describes the available macros for manual pages.  For
-further customization, put additional macros and requests into the file
-'man.local', which is loaded immediately after the 'man' package.
-
- -- Macro: .TH title section [extra1 [extra2 [extra3]]]
-     Set the title of the man page to TITLE and the section to SECTION,
-     which must have a value between 1 and 8.  The value of SECTION may
-     also have a string appended, e.g. '.pm', to indicate a specific
-     subsection of the man pages.
-
-     Both TITLE and SECTION are positioned at the left and right in the
-     header line (with SECTION in parentheses immediately appended to
-     TITLE.  EXTRA1 is positioned in the middle of the footer line.
-     EXTRA2 is positioned at the left in the footer line (or at the left
-     on even pages and at the right on odd pages if double-sided
-     printing is active).  EXTRA3 is centered in the header line.
-
-     For HTML and XHTML output, headers and footers are completely
-     suppressed.
-
-     Additionally, this macro starts a new page; the new line number
-     is 1 again (except if the '-rC1' option is given on the command
-     line) - this feature is intended only for formatting multiple man
-     pages; a single man page should contain exactly one 'TH' macro at
-     the beginning of the file.
-
- -- Macro: .SH [heading]
-     Set up an unnumbered section heading sticking out to the left.
-     Prints out all the text following 'SH' up to the end of the line
-     (or the text in the next line if there is no argument to 'SH') in
-     bold face (or the font specified by the string 'HF'), one size
-     larger than the base document size.  Additionally, the left margin
-     and the indentation for the following text is reset to its default
-     value.
-
- -- Macro: .SS [heading]
-     Set up an unnumbered (sub)section heading.  Prints out all the text
-     following 'SS' up to the end of the line (or the text in the next
-     line if there is no argument to 'SS') in bold face (or the font
-     specified by the string 'HF'), at the same size as the base
-     document size.  Additionally, the left margin and the indentation
-     for the following text is reset to its default value.
-
- -- Macro: .TP [nnn]
-     Set up an indented paragraph with label.  The indentation is set to
-     NNN if that argument is supplied (the default unit is 'n' if
-     omitted), otherwise it is set to the previous indentation value
-     specified with 'TP', 'IP', or 'HP' (or to the default value if none
-     of them have been used yet).
-
-     The first line of text following this macro is interpreted as a
-     string to be printed flush-left, as it is appropriate for a label.
-     It is not interpreted as part of a paragraph, so there is no
-     attempt to fill the first line with text from the following input
-     lines.  Nevertheless, if the label is not as wide as the
-     indentation the paragraph starts at the same line (but indented),
-     continuing on the following lines.  If the label is wider than the
-     indentation the descriptive part of the paragraph begins on the
-     line following the label, entirely indented.  Note that neither
-     font shape nor font size of the label is set to a default value; on
-     the other hand, the rest of the text has default font settings.
-
- -- Macro: .LP
- -- Macro: .PP
- -- Macro: .P
-     These macros are mutual aliases.  Any of them causes a line break
-     at the current position, followed by a vertical space downwards by
-     the amount specified by the 'PD' macro.  The font size and shape
-     are reset to the default value (10pt roman if no '-rS' option is
-     given on the command line).  Finally, the current left margin and
-     the indentation is restored.
-
- -- Macro: .IP [designator [nnn]]
-     Set up an indented paragraph, using DESIGNATOR as a tag to mark its
-     beginning.  The indentation is set to NNN if that argument is
-     supplied (default unit is 'n'), otherwise it is set to the previous
-     indentation value specified with 'TP', 'IP', or 'HP' (or the
-     default value if none of them have been used yet).  Font size and
-     face of the paragraph (but not the designator) are reset to their
-     default values.
-
-     To start an indented paragraph with a particular indentation but
-     without a designator, use '""' (two double quotes) as the first
-     argument of 'IP'.
-
-     For example, to start a paragraph with bullets as the designator
-     and 4 en indentation, write
-
-          .IP \(bu 4
-
- -- Macro: .HP [nnn]
-     Set up a paragraph with hanging left indentation.  The indentation
-     is set to NNN if that argument is supplied (default unit is 'n'),
-     otherwise it is set to the previous indentation value specified
-     with 'TP', 'IP', or 'HP' (or the default value if non of them have
-     been used yet).  Font size and face are reset to their default
-     values.
-
- -- Macro: .RS [nnn]
-     Move the left margin to the right by the value NNN if specified
-     (default unit is 'n'); otherwise it is set to the previous
-     indentation value specified with 'TP', 'IP', or 'HP' (or to the
-     default value if none of them have been used yet).  The indentation
-     value is then set to the default.
-
-     Calls to the 'RS' macro can be nested.
-
- -- Macro: .RE [nnn]
-     Move the left margin back to level NNN, restoring the previous left
-     margin.  If no argument is given, it moves one level back.  The
-     first level (i.e., no call to 'RS' yet) has number 1, and each call
-     to 'RS' increases the level by 1.
-
-   To summarize, the following macros cause a line break with the
-insertion of vertical space (which amount can be changed with the 'PD'
-macro): 'SH', 'SS', 'TP', 'LP' ('PP', 'P'), 'IP', and 'HP'.
-
-   The macros 'RS' and 'RE' also cause a break but do not insert
-vertical space.
-
-   Finally, the macros 'SH', 'SS', 'LP' ('PP', 'P'), and 'RS' reset the
-indentation to its default value.
-
-\1f
-File: groff.info,  Node: Man font macros,  Next: Miscellaneous man macros,  Prev: Man usage,  Up: man
-
-4.1.3 Macros to set fonts
--------------------------
-
-The standard font is roman; the default text size is 10 point.  If
-command line option '-rS=N' is given, use Npt as the default text size.
-
- -- Macro: .SM [text]
-     Set the text on the same line or the text on the next line in a
-     font that is one point size smaller than the default font.
-
- -- Macro: .SB [text]
-     Set the text on the same line or the text on the next line in bold
-     face font, one point size smaller than the default font.
-
- -- Macro: .BI text
-     Set its arguments alternately in bold face and italic, without a
-     space between the arguments.  Thus,
-
-          .BI this "word and" that
-
-     produces "thisword andthat" with "this" and "that" in bold face,
-     and "word and" in italics.
-
- -- Macro: .IB text
-     Set its arguments alternately in italic and bold face, without a
-     space between the arguments.
-
- -- Macro: .RI text
-     Set its arguments alternately in roman and italic, without a space
-     between the arguments.
-
- -- Macro: .IR text
-     Set its arguments alternately in italic and roman, without a space
-     between the arguments.
-
- -- Macro: .BR text
-     Set its arguments alternately in bold face and roman, without a
-     space between the arguments.
-
- -- Macro: .RB text
-     Set its arguments alternately in roman and bold face, without a
-     space between the arguments.
-
- -- Macro: .B [text]
-     Set TEXT in bold face.  If no text is present on the line where the
-     macro is called, then the text of the next line appears in bold
-     face.
-
- -- Macro: .I [text]
-     Set TEXT in italic.  If no text is present on the line where the
-     macro is called, then the text of the next line appears in italic.
-
-\1f
-File: groff.info,  Node: Miscellaneous man macros,  Next: Predefined man strings,  Prev: Man font macros,  Up: man
-
-4.1.4 Miscellaneous macros
---------------------------
-
-The default indentation is 7.2n in troff mode and 7n in nroff mode
-except for 'grohtml', which ignores indentation.
-
- -- Macro: .DT
-     Set tabs every 0.5 inches.  Since this macro is always executed
-     during a call to the 'TH' macro, it makes sense to call it only if
-     the tab positions have been changed.
-
- -- Macro: .PD [nnn]
-     Adjust the empty space before a new paragraph (or section).  The
-     optional argument gives the amount of space (default unit is 'v');
-     without parameter, the value is reset to its default value (1 line
-     in nroff mode, 0.4v otherwise).
-
-     This affects the macros 'SH', 'SS', 'TP', 'LP' (as well as 'PP' and
-     'P'), 'IP', and 'HP'.
-
-   The following two macros are included for BSD compatibility.
-
- -- Macro: .AT [system [release]]
-     Alter the footer for use with AT&T manpages.  This command exists
-     only for compatibility; don't use it.  The first argument SYSTEM
-     can be:
-
-     '3'
-          7th Edition (the default)
-
-     '4'
-          System III
-
-     '5'
-          System V
-
-     An optional second argument RELEASE to 'AT' specifies the release
-     number (such as "System V Release 3").
-
- -- Macro: .UC [version]
-     Alters the footer for use with BSD manpages.  This command exists
-     only for compatibility; don't use it.  The argument can be:
-
-     '3'
-          3rd Berkeley Distribution (the default)
-
-     '4'
-          4th Berkeley Distribution
-
-     '5'
-          4.2 Berkeley Distribution
-
-     '6'
-          4.3 Berkeley Distribution
-
-     '7'
-          4.4 Berkeley Distribution
-
-\1f
-File: groff.info,  Node: Predefined man strings,  Next: Preprocessors in man pages,  Prev: Miscellaneous man macros,  Up: man
-
-4.1.5 Predefined strings
-------------------------
-
-The following strings are defined:
-
- -- String: \*[S]
-     Switch back to the default font size.
-
- -- String: \*[HF]
-     The typeface used for headings.  The default is 'B'.
-
- -- String: \*[R]
-     The 'registered' sign.
-
- -- String: \*[Tm]
-     The 'trademark' sign.
-
- -- String: \*[lq]
- -- String: \*[rq]
-     Left and right quote.  This is equal to '\(lq' and '\(rq',
-     respectively.
-
-\1f
-File: groff.info,  Node: Preprocessors in man pages,  Next: Optional man extensions,  Prev: Predefined man strings,  Up: man
-
-4.1.6 Preprocessors in 'man' pages
-----------------------------------
-
-If a preprocessor like 'gtbl' or 'geqn' is needed, it has become common
-usage to make the first line of the man page look like this:
-
-     '\" WORD
-
-Note the single space character after the double quote.  WORD consists
-of letters for the needed preprocessors: 'e' for 'geqn', 'r' for
-'grefer', 't' for 'gtbl'.  Modern implementations of the 'man' program
-read this first line and automatically call the right preprocessor(s).
-
-\1f
-File: groff.info,  Node: Optional man extensions,  Prev: Preprocessors in man pages,  Up: man
-
-4.1.7 Optional 'man' extensions
--------------------------------
-
-Use the file 'man.local' for local extensions to the 'man' macros or for
-style changes.
-
-Custom headers and footers
-..........................
-
-In groff versions 1.18.2 and later, you can specify custom headers and
-footers by redefining the following macros in 'man.local'.
-
- -- Macro: .PT
-     Control the content of the headers.  Normally, the header prints
-     the command name and section number on either side, and the
-     optional fifth argument to 'TH' in the center.
-
- -- Macro: .BT
-     Control the content of the footers.  Normally, the footer prints
-     the page number and the third and fourth arguments to 'TH'.
-
-     Use the 'FT' number register to specify the footer position.  The
-     default is -0.5i.
-
-Ultrix-specific man macros
-..........................
-
-The 'groff' source distribution includes a file named 'man.ultrix',
-containing macros compatible with the Ultrix variant of 'man'.  Copy
-this file into 'man.local' (or use the 'mso' request to load it) to
-enable the following macros.
-
- -- Macro: .CT key
-     Print '<CTRL/KEY>'.
-
- -- Macro: .CW
-     Print subsequent text using the constant width (Courier) typeface.
-
- -- Macro: .Ds
-     Begin a non-filled display.
-
- -- Macro: .De
-     End a non-filled display started with 'Ds'.
-
- -- Macro: .EX [indent]
-     Begin a non-filled display using the constant width (Courier)
-     typeface.  Use the optional INDENT argument to indent the display.
-
- -- Macro: .EE
-     End a non-filled display started with 'EX'.
-
- -- Macro: .G [text]
-     Set TEXT in Helvetica.  If no text is present on the line where the
-     macro is called, then the text of the next line appears in
-     Helvetica.
-
- -- Macro: .GL [text]
-     Set TEXT in Helvetica Oblique.  If no text is present on the line
-     where the macro is called, then the text of the next line appears
-     in Helvetica Oblique.
-
- -- Macro: .HB [text]
-     Set TEXT in Helvetica Bold.  If no text is present on the line
-     where the macro is called, then all text up to the next 'HB'
-     appears in Helvetica Bold.
-
- -- Macro: .TB [text]
-     Identical to 'HB'.
-
- -- Macro: .MS title sect [punct]
-     Set a manpage reference in Ultrix format.  The TITLE is in Courier
-     instead of italic.  Optional punctuation follows the section number
-     without an intervening space.
-
- -- Macro: .NT ['C'] [title]
-     Begin a note.  Print the optional title, or the word "Note",
-     centered on the page.  Text following the macro makes up the body
-     of the note, and is indented on both sides.  If the first argument
-     is 'C', the body of the note is printed centered (the second
-     argument replaces the word "Note" if specified).
-
- -- Macro: .NE
-     End a note begun with 'NT'.
-
- -- Macro: .PN path [punct]
-     Set the path name in constant width (Courier), followed by optional
-     punctuation.
-
- -- Macro: .Pn [punct] path [punct]
-     If called with two arguments, identical to 'PN'.  If called with
-     three arguments, set the second argument in constant width
-     (Courier), bracketed by the first and third arguments in the
-     current font.
-
- -- Macro: .R
-     Switch to roman font and turn off any underlining in effect.
-
- -- Macro: .RN
-     Print the string '<RETURN>'.
-
- -- Macro: .VS ['4']
-     Start printing a change bar in the margin if the number '4' is
-     specified.  Otherwise, this macro does nothing.
-
- -- Macro: .VE
-     End printing the change bar begun by 'VS'.
-
-Simple example
-..............
-
-The following example 'man.local' file alters the 'SH' macro to add some
-extra vertical space before printing the heading.  Headings are printed
-in Helvetica Bold.
-
-     .\" Make the heading fonts Helvetica
-     .ds HF HB
-     .
-     .\" Put more whitespace in front of headings.
-     .rn SH SH-orig
-     .de SH
-     .  if t .sp (u;\\n[PD]*2)
-     .  SH-orig \\$*
-     ..
-
-\1f
-File: groff.info,  Node: mdoc,  Next: ms,  Prev: man,  Up: Macro Packages
-
-4.2 'mdoc'
-==========
-
-See the 'groff_mdoc(7)' man page (type 'man groff_mdoc' at the command
-line).
-
-\1f
-File: groff.info,  Node: ms,  Next: me,  Prev: mdoc,  Up: Macro Packages
-
-4.3 'ms'
-========
-
-The '-ms' macros are suitable for reports, letters, books, user manuals,
-and so forth.  The package provides macros for cover pages, section
-headings, paragraphs, lists, footnotes, pagination, and a table of
-contents.
-
-* Menu:
-
-* ms Intro::
-* General ms Structure::
-* ms Document Control Registers::
-* ms Cover Page Macros::
-* ms Body Text::
-* ms Page Layout::
-* Differences from AT&T ms::
-* Naming Conventions::
-
-\1f
-File: groff.info,  Node: ms Intro,  Next: General ms Structure,  Prev: ms,  Up: ms
-
-4.3.1 Introduction to 'ms'
---------------------------
-
-The original '-ms' macros were included with AT&T 'troff' as well as the
-'man' macros.  While the 'man' package is intended for brief documents
-that can be read on-line as well as printed, the 'ms' macros are
-suitable for longer documents that are meant to be printed rather than
-read on-line.
-
-   The 'ms' macro package included with 'groff' is a complete, bottom-up
-re-implementation.  Several macros (specific to AT&T or Berkeley) are
-not included, while several new commands are.  *Note Differences from
-AT&T ms::, for more information.
-
-\1f
-File: groff.info,  Node: General ms Structure,  Next: ms Document Control Registers,  Prev: ms Intro,  Up: ms
-
-4.3.2 General structure of an 'ms' document
--------------------------------------------
-
-The 'ms' macro package expects a certain amount of structure, but not as
-much as packages such as 'man' or 'mdoc'.
-
-   The simplest documents can begin with a paragraph macro (such as 'LP'
-or 'PP'), and consist of text separated by paragraph macros or even
-blank lines.  Longer documents have a structure as follows:
-
-*Document type*
-     If you invoke the 'RP' (report) macro on the first line of the
-     document, 'groff' prints the cover page information on its own
-     page; otherwise it prints the information on the first page with
-     your document text immediately following.  Other document formats
-     found in AT&T 'troff' are specific to AT&T or Berkeley, and are not
-     supported in 'groff'.
-
-*Format and layout*
-     By setting number registers, you can change your document's type
-     (font and size), margins, spacing, headers and footers, and
-     footnotes.  *Note ms Document Control Registers::, for more
-     details.
-
-*Cover page*
-     A cover page consists of a title, the author's name and
-     institution, an abstract, and the date.(1)  (*note General ms
-     Structure-Footnote-1::) *Note ms Cover Page Macros::, for more
-     details.
-
-*Body*
-     Following the cover page is your document.  You can use the 'ms'
-     macros to write reports, letters, books, and so forth.  The package
-     is designed for structured documents, consisting of paragraphs
-     interspersed with headings and augmented by lists, footnotes,
-     tables, and other common constructs.  *Note ms Body Text::, for
-     more details.
-
-*Table of contents*
-     Longer documents usually include a table of contents, which you can
-     invoke by placing the 'TC' macro at the end of your document.  The
-     'ms' macros have minimal indexing facilities, consisting of the
-     'IX' macro, which prints an entry on standard error.  Printing the
-     table of contents at the end is necessary since 'groff' is a
-     single-pass text formatter, thus it cannot determine the page
-     number of each section until that section has actually been set and
-     printed.  Since 'ms' output is intended for hardcopy, you can
-     manually relocate the pages containing the table of contents
-     between the cover page and the body text after printing.
-
-\1f
-File: groff.info,  Node: General ms Structure-Footnotes,  Up: General ms Structure
-
-   (1) Actually, only the title is required.
-
-\1f
-File: groff.info,  Node: ms Document Control Registers,  Next: ms Cover Page Macros,  Prev: General ms Structure,  Up: ms
-
-4.3.3 Document control registers
---------------------------------
-
-The following is a list of document control number registers.  For the
-sake of consistency, set registers related to margins at the beginning
-of your document, or just after the 'RP' macro.  You can set other
-registers later in your document, but you should keep them together at
-the beginning to make them easy to find and edit as necessary.
-
-Margin Settings
-...............
-
- -- Register: \n[PO]
-     Defines the page offset (i.e., the left margin).  There is no
-     explicit right margin setting; the combination of the 'PO' and 'LL'
-     registers implicitly define the right margin width.
-
-     Effective: next page.
-
-     Default value: 1i.
-
- -- Register: \n[LL]
-     Defines the line length (i.e., the width of the body text).
-
-     Effective: next paragraph.
-
-     Default: 6i.
-
- -- Register: \n[LT]
-     Defines the title length (i.e., the header and footer width).  This
-     is usually the same as 'LL', but not necessarily.
-
-     Effective: next paragraph.
-
-     Default: 6i.
-
- -- Register: \n[HM]
-     Defines the header margin height at the top of the page.
-
-     Effective: next page.
-
-     Default: 1i.
-
- -- Register: \n[FM]
-     Defines the footer margin height at the bottom of the page.
-
-     Effective: next page.
-
-     Default: 1i.
-
-Text Settings
-.............
-
- -- Register: \n[PS]
-     Defines the point size of the body text.  If the value is larger
-     than or equal to 1000, divide it by 1000 to get a fractional point
-     size.  For example, '.nr PS 10250' sets the document's point size
-     to 10.25p.
-
-     Effective: next paragraph.
-
-     Default: 10p.
-
- -- Register: \n[VS]
-     Defines the space between lines (line height plus leading).  If the
-     value is larger than or equal to 1000, divide it by 1000 to get a
-     fractional point size.  Due to backwards compatibility, 'VS' must
-     be smaller than 40000 (this is 40.0p).
-
-     Effective: next paragraph.
-
-     Default: 12p.
-
- -- Register: \n[PSINCR]
-     Defines an increment in point size, which is applied to section
-     headings at nesting levels below the value specified in 'GROWPS'.
-     The value of 'PSINCR' should be specified in points, with the p
-     scaling factor, and may include a fractional component; for
-     example, '.nr PSINCR 1.5p' sets a point size increment of 1.5p.
-
-     Effective: next section heading.
-
-     Default: 1p.
-
- -- Register: \n[GROWPS]
-     Defines the heading level below which the point size increment set
-     by 'PSINCR' becomes effective.  Section headings at and above the
-     level specified by 'GROWPS' are printed at the point size set by
-     'PS'; for each level below the value of 'GROWPS', the point size is
-     increased in steps equal to the value of 'PSINCR'.  Setting
-     'GROWPS' to any value less than 2 disables the incremental heading
-     size feature.
-
-     Effective: next section heading.
-
-     Default: 0.
-
- -- Register: \n[HY]
-     Defines the hyphenation level.  'HY' sets safely the value of the
-     low-level 'hy' register.  Setting the value of 'HY' to 0 is
-     equivalent to using the 'nh' request.
-
-     Effective: next paragraph.
-
-     Default: 14.
-
- -- Register: \n[FAM]
-     Defines the font family used to typeset the document.
-
-     Effective: next paragraph.
-
-     Default: as defined in the output device.
-
-Paragraph Settings
-..................
-
- -- Register: \n[PI]
-     Defines the initial indentation of a ('PP' macro) paragraph.
-
-     Effective: next paragraph.
-
-     Default: 5n.
-
- -- Register: \n[PD]
-     Defines the space between paragraphs.
-
-     Effective: next paragraph.
-
-     Default: 0.3v.
-
- -- Register: \n[QI]
-     Defines the indentation on both sides of a quoted ('QP' macro)
-     paragraph.
-
-     Effective: next paragraph.
-
-     Default: 5n.
-
- -- Register: \n[PORPHANS]
-     Defines the minimum number of initial lines of any paragraph that
-     should be kept together, to avoid orphan lines at the bottom of a
-     page.  If a new paragraph is started close to the bottom of a page,
-     and there is insufficient space to accommodate 'PORPHANS' lines
-     before an automatic page break, then the page break is forced,
-     before the start of the paragraph.
-
-     Effective: next paragraph.
-
-     Default: 1.
-
- -- Register: \n[HORPHANS]
-     Defines the minimum number of lines of the following paragraph that
-     should be kept together with any section heading introduced by the
-     'NH' or 'SH' macros.  If a section heading is placed close to the
-     bottom of a page, and there is insufficient space to accommodate
-     both the heading and at least 'HORPHANS' lines of the following
-     paragraph, before an automatic page break, then the page break is
-     forced before the heading.
-
-     Effective: next paragraph.
-
-     Default: 1.
-
-Footnote Settings
-.................
-
- -- Register: \n[FL]
-     Defines the length of a footnote.
-
-     Effective: next footnote.
-
-     Default: '\n[LL]' * 5 / 6.
-
- -- Register: \n[FI]
-     Defines the footnote indentation.
-
-     Effective: next footnote.
-
-     Default: 2n.
-
- -- Register: \n[FF]
-     The footnote format:
-     '0'
-          Print the footnote number as a superscript; indent the
-          footnote (default).
-
-     '1'
-          Print the number followed by a period (like 1.) and indent the
-          footnote.
-
-     '2'
-          Like 1, without an indentation.
-
-     '3'
-          Like 1, but print the footnote number as a hanging paragraph.
-
-     Effective: next footnote.
-
-     Default: 0.
-
- -- Register: \n[FPS]
-     Defines the footnote point size.  If the value is larger than or
-     equal to 1000, divide it by 1000 to get a fractional point size.
-
-     Effective: next footnote.
-
-     Default: '\n[PS]' - 2.
-
- -- Register: \n[FVS]
-     Defines the footnote vertical spacing.  If the value is larger than
-     or equal to 1000, divide it by 1000 to get a fractional point size.
-
-     Effective: next footnote.
-
-     Default: '\n[FPS]' + 2.
-
- -- Register: \n[FPD]
-     Defines the footnote paragraph spacing.
-
-     Effective: next footnote.
-
-     Default: '\n[PD]' / 2.
-
-Miscellaneous Number Registers
-..............................
-
- -- Register: \n[MINGW]
-     Defines the minimum width between columns in a multi-column
-     document.
-
-     Effective: next page.
-
-     Default: 2n.
-
- -- Register: \n[DD]
-     Sets the vertical spacing before and after a display, a 'tbl'
-     table, an 'eqn' equation, or a 'pic' image.
-
-     Effective: next paragraph.
-
-     Default: 0.5v.
-
-\1f
-File: groff.info,  Node: ms Cover Page Macros,  Next: ms Body Text,  Prev: ms Document Control Registers,  Up: ms
-
-4.3.4 Cover page macros
------------------------
-
-Use the following macros to create a cover page for your document in the
-order shown.
-
- -- Macro: .RP ['no']
-     Specifies the report format for your document.  The report format
-     creates a separate cover page.  The default action (no 'RP' macro)
-     is to print a subset of the cover page on page 1 of your document.
-
-     If you use the word 'no' as an optional argument, 'groff' prints a
-     title page but does not repeat any of the title page information
-     (title, author, abstract, etc.) on page 1 of the document.
-
- -- Macro: .P1
-     (P-one) Prints the header on page 1.  The default is to suppress
-     the header.
-
- -- Macro: .DA [...]
-     (optional) Prints the current date, or the arguments to the macro
-     if any, on the title page (if specified) and in the footers.  This
-     is the default for 'nroff'.
-
- -- Macro: .ND [...]
-     (optional) Prints the current date, or the arguments to the macro
-     if any, on the title page (if specified) but not in the footers.
-     This is the default for 'troff'.
-
- -- Macro: .TL
-     Specifies the document title.  'groff' collects text following the
-     'TL' macro into the title, until reaching the author name or
-     abstract.
-
- -- Macro: .AU
-     Specifies the author's name, which appears on the line (or lines)
-     immediately following.  You can specify multiple authors as
-     follows:
-
-          .AU
-          John Doe
-          .AI
-          University of West Bumblefuzz
-          .AU
-          Martha Buck
-          .AI
-          Monolithic Corporation
-
-          ...
-
- -- Macro: .AI
-     Specifies the author's institution.  You can specify multiple
-     institutions in the same way that you specify multiple authors.
-
- -- Macro: .AB ['no']
-     Begins the abstract.  The default is to print the word ABSTRACT,
-     centered and in italics, above the text of the abstract.  The word
-     'no' as an optional argument suppresses this heading.
-
- -- Macro: .AE
-     Ends the abstract.
-
-   The following is example mark-up for a title page.
-
-     .RP
-     .TL
-     The Inevitability of Code Bloat
-     in Commercial and Free Software
-     .AU
-     J. Random Luser
-     .AI
-     University of West Bumblefuzz
-     .AB
-     This report examines the long-term growth
-     of the code bases in two large, popular software
-     packages; the free Emacs and the commercial
-     Microsoft Word.
-     While differences appear in the type or order
-     of features added, due to the different
-     methodologies used, the results are the same
-     in the end.
-     .PP
-     The free software approach is shown to be
-     superior in that while free software can
-     become as bloated as commercial offerings,
-     free software tends to have fewer serious
-     bugs and the added features are in line with
-     user demand.
-     .AE
-
-     ... the rest of the paper follows ...
-
-\1f
-File: groff.info,  Node: ms Body Text,  Next: ms Page Layout,  Prev: ms Cover Page Macros,  Up: ms
-
-4.3.5 Body text
----------------
-
-This section describes macros used to mark up the body of your document.
-Examples include paragraphs, sections, and other groups.
-
-* Menu:
-
-* Paragraphs in ms::
-* Headings in ms::
-* Highlighting in ms::
-* Lists in ms::
-* Indentation values in ms::
-* Tabstops in ms::
-* ms Displays and Keeps::
-* ms Insertions::
-* Example multi-page table::
-* ms Footnotes::
-
-\1f
-File: groff.info,  Node: Paragraphs in ms,  Next: Headings in ms,  Prev: ms Body Text,  Up: ms Body Text
-
-4.3.5.1 Paragraphs
-..................
-
-The following paragraph types are available.
-
- -- Macro: .PP
-     Sets a paragraph with an initial indentation.
-
- -- Macro: .LP
-     Sets a paragraph without an initial indentation.
-
- -- Macro: .QP
-     Sets a paragraph that is indented at both left and right margins.
-     The effect is identical to the HTML '<BLOCKQUOTE>' element.  The
-     next paragraph or heading returns margins to normal.
-
- -- Macro: .XP
-     Sets a paragraph whose lines are indented, except for the first
-     line.  This is a Berkeley extension.
-
-   The following markup uses all four paragraph macros.
-
-     .NH 2
-     Cases used in the study
-     .LP
-     The following software and versions were
-     considered for this report.
-     .PP
-     For commercial software, we chose
-     .B "Microsoft Word for Windows" ,
-     starting with version 1.0 through the
-     current version (Word 2000).
-     .PP
-     For free software, we chose
-     .B Emacs ,
-     from its first appearance as a standalone
-     editor through the current version (v20).
-     See [Bloggs 2002] for details.
-     .QP
-     Franklin's Law applied to software:
-     software expands to outgrow both
-     RAM and disk space over time.
-     .LP
-     Bibliography:
-     .XP
-     Bloggs, Joseph R.,
-     .I "Everyone's a Critic" ,
-     Underground Press, March 2002.
-     A definitive work that answers all questions
-     and criticisms about the quality and usability of
-     free software.
-
-   The 'PORPHANS' register (*note ms Document Control Registers::)
-operates in conjunction with each of these macros, to inhibit the
-printing of orphan lines at the bottom of any page.
-
-\1f
-File: groff.info,  Node: Headings in ms,  Next: Highlighting in ms,  Prev: Paragraphs in ms,  Up: ms Body Text
-
-4.3.5.2 Headings
-................
-
-Use headings to create a hierarchical structure for your document.  The
-'ms' macros print headings in *bold*, using the same font family and
-point size as the body text.
-
-   The following describes the heading macros:
-
- -- Macro: .NH curr-level
- -- Macro: .NH S level0 ...
-     Numbered heading.  The argument is either a numeric argument to
-     indicate the level of the heading, or the letter 'S' followed by
-     numeric arguments to set the heading level explicitly.
-
-     If you specify heading levels out of sequence, such as invoking
-     '.NH 3' after '.NH 1', 'groff' prints a warning on standard error.
-
- -- String: \*[SN]
- -- String: \*[SN-DOT]
- -- String: \*[SN-NO-DOT]
-     After invocation of 'NH', the assigned section number is made
-     available in the strings 'SN-DOT' (as it appears in a printed
-     section heading with default formatting, followed by a terminating
-     period), and 'SN-NO-DOT' (with the terminating period omitted).
-     The string 'SN' is also defined, as an alias for 'SN-DOT'; if
-     preferred, you may redefine it as an alias for 'SN-NO-DOT', by
-     including the initialization
-          .als SN SN-NO-DOT
-
-     at any time *before* you would like the change to take effect.
-
- -- String: \*[SN-STYLE]
-     You may control the style used to print section numbers, within
-     numbered section headings, by defining an appropriate alias for the
-     string 'SN-STYLE'.  The default style, in which the printed section
-     number is followed by a terminating period, is obtained by defining
-     the alias
-
-          .als SN-STYLE SN-DOT
-
-     If you prefer to omit the terminating period, from section numbers
-     appearing in numbered section headings, you may define the alias
-
-          .als SN-STYLE SN-NO-DOT
-
-     Any such change in section numbering style becomes effective from
-     the next use of '.NH', following redefinition of the alias for
-     'SN-STYLE'.
-
- -- Macro: .SH [match-level]
-     Unnumbered subheading.
-
-     The optional MATCH-LEVEL argument is a GNU extension.  It is a
-     number indicating the level of the heading, in a manner analogous
-     to the CURR-LEVEL argument to '.NH'.  Its purpose is to match the
-     point size, at which the heading is printed, to the size of a
-     numbered heading at the same level, when the 'GROWPS' and 'PSINCR'
-     heading size adjustment mechanism is in effect.  *Note ms Document
-     Control Registers::.
-
-   The 'HORPHANS' register (*note ms Document Control Registers::)
-operates in conjunction with the 'NH' and 'SH' macros, to inhibit the
-printing of orphaned section headings at the bottom of any page.
-
-\1f
-File: groff.info,  Node: Highlighting in ms,  Next: Lists in ms,  Prev: Headings in ms,  Up: ms Body Text
-
-4.3.5.3 Highlighting
-....................
-
-The 'ms' macros provide a variety of methods to highlight or emphasize
-text:
-
- -- Macro: .B [txt [post [pre]]]
-     Sets its first argument in *bold type*.  If you specify a second
-     argument, 'groff' prints it in the previous font after the bold
-     text, with no intervening space (this allows you to set punctuation
-     after the highlighted text without highlighting the punctuation).
-     Similarly, it prints the third argument (if any) in the previous
-     font *before* the first argument.  For example,
-
-          .B foo ) (
-
-     prints (*foo*).
-
-     If you give this macro no arguments, 'groff' prints all text
-     following in bold until the next highlighting, paragraph, or
-     heading macro.
-
- -- Macro: .R [txt [post [pre]]]
-     Sets its first argument in roman (or regular) type.  It operates
-     similarly to the 'B' macro otherwise.
-
- -- Macro: .I [txt [post [pre]]]
-     Sets its first argument in _italic type_.  It operates similarly to
-     the 'B' macro otherwise.
-
- -- Macro: .CW [txt [post [pre]]]
-     Sets its first argument in a 'constant width face'.  It operates
-     similarly to the 'B' macro otherwise.
-
- -- Macro: .BI [txt [post [pre]]]
-     Sets its first argument in bold italic type.  It operates similarly
-     to the 'B' macro otherwise.
-
- -- Macro: .BX [txt]
-     Prints its argument and draws a box around it.  If you want to box
-     a string that contains spaces, use a digit-width space ('\0').
-
- -- Macro: .UL [txt [post]]
-     Prints its first argument with an underline.  If you specify a
-     second argument, 'groff' prints it in the previous font after the
-     underlined text, with no intervening space.
-
- -- Macro: .LG
-     Prints all text following in larger type (two points larger than
-     the current point size) until the next font size, highlighting,
-     paragraph, or heading macro.  You can specify this macro multiple
-     times to enlarge the point size as needed.
-
- -- Macro: .SM
-     Prints all text following in smaller type (two points smaller than
-     the current point size) until the next type size, highlighting,
-     paragraph, or heading macro.  You can specify this macro multiple
-     times to reduce the point size as needed.
-
- -- Macro: .NL
-     Prints all text following in the normal point size (that is, the
-     value of the 'PS' register).
-
- -- String: \*[{]
- -- String: \*[}]
-     Text enclosed with '\*{' and '\*}' is printed as a superscript.
-
-\1f
-File: groff.info,  Node: Lists in ms,  Next: Indentation values in ms,  Prev: Highlighting in ms,  Up: ms Body Text
-
-4.3.5.4 Lists
-.............
-
-The 'IP' macro handles duties for all lists.
-
- -- Macro: .IP [marker [width]]
-     The MARKER is usually a bullet glyph ('\[bu]') for unordered lists,
-     a number (or auto-incrementing number register) for numbered lists,
-     or a word or phrase for indented (glossary-style) lists.
-
-     The WIDTH specifies the indentation for the body of each list item;
-     its default unit is 'n'.  Once specified, the indentation remains
-     the same for all list items in the document until specified again.
-
-     The 'PORPHANS' register (*note ms Document Control Registers::)
-     operates in conjunction with the 'IP' macro, to inhibit the
-     printing of orphaned list markers at the bottom of any page.
-
-   The following is an example of a bulleted list.
-
-     A bulleted list:
-     .IP \[bu] 2
-     lawyers
-     .IP \[bu]
-     guns
-     .IP \[bu]
-     money
-
-   Produces:
-
-     A bulleted list:
-
-     o lawyers
-
-     o guns
-
-     o money
-
-   The following is an example of a numbered list.
-
-     .nr step 1 1
-     A numbered list:
-     .IP \n[step] 3
-     lawyers
-     .IP \n+[step]
-     guns
-     .IP \n+[step]
-     money
-
-   Produces:
-
-     A numbered list:
-
-     1. lawyers
-
-     2. guns
-
-     3. money
-
-   Note the use of the auto-incrementing number register in this
-example.
-
-   The following is an example of a glossary-style list.
-
-     A glossary-style list:
-     .IP lawyers 0.4i
-     Two or more attorneys.
-     .IP guns
-     Firearms, preferably
-     large-caliber.
-     .IP money
-     Gotta pay for those
-     lawyers and guns!
-
-   Produces:
-
-     A glossary-style list:
-
-     lawyers
-           Two or more attorneys.
-
-     guns  Firearms, preferably large-caliber.
-
-     money
-           Gotta pay for those lawyers and guns!
-
-   In the last example, the 'IP' macro places the definition on the same
-line as the term if it has enough space; otherwise, it breaks to the
-next line and starts the definition below the term.  This may or may not
-be the effect you want, especially if some of the definitions break and
-some do not.  The following examples show two possible ways to force a
-break.
-
-   The first workaround uses the 'br' request to force a break after
-printing the term or label.
-
-     A glossary-style list:
-     .IP lawyers 0.4i
-     Two or more attorneys.
-     .IP guns
-     .br
-     Firearms, preferably large-caliber.
-     .IP money
-     Gotta pay for those lawyers and guns!
-
-   The second workaround uses the '\p' escape to force the break.  Note
-the space following the escape; this is important.  If you omit the
-space, 'groff' prints the first word on the same line as the term or
-label (if it fits) *then* breaks the line.
-
-     A glossary-style list:
-     .IP lawyers 0.4i
-     Two or more attorneys.
-     .IP guns
-     \p Firearms, preferably large-caliber.
-     .IP money
-     Gotta pay for those lawyers and guns!
-
-   To set nested lists, use the 'RS' and 'RE' macros.  *Note Indentation
-values in ms::, for more information.
-
-   For example:
-
-     .IP \[bu] 2
-     Lawyers:
-     .RS
-     .IP \[bu]
-     Dewey,
-     .IP \[bu]
-     Cheatham,
-     .IP \[bu]
-     and Howe.
-     .RE
-     .IP \[bu]
-     Guns
-
-   Produces:
-
-     o Lawyers:
-
-       o  Dewey,
-
-       o  Cheatham,
-
-       o  and Howe.
-
-     o Guns
-
-\1f
-File: groff.info,  Node: Indentation values in ms,  Next: Tabstops in ms,  Prev: Lists in ms,  Up: ms Body Text
-
-4.3.5.5 Indentation values
-..........................
-
-In many situations, you may need to indentation a section of text while
-still wrapping and filling.  *Note Lists in ms::, for an example of
-nested lists.
-
- -- Macro: .RS
- -- Macro: .RE
-     These macros begin and end an indented section.  The 'PI' register
-     controls the amount of indentation, allowing the indented text to
-     line up under hanging and indented paragraphs.
-
-   *Note ms Displays and Keeps::, for macros to indentation and turn off
-filling.
-
-\1f
-File: groff.info,  Node: Tabstops in ms,  Next: ms Displays and Keeps,  Prev: Indentation values in ms,  Up: ms Body Text
-
-4.3.5.6 Tab Stops
-.................
-
-Use the 'ta' request to define tab stops as needed.  *Note Tabs and
-Fields::.
-
- -- Macro: .TA
-     Use this macro to reset the tab stops to the default for 'ms'
-     (every 5n).  You can redefine the 'TA' macro to create a different
-     set of default tab stops.
-
-\1f
-File: groff.info,  Node: ms Displays and Keeps,  Next: ms Insertions,  Prev: Tabstops in ms,  Up: ms Body Text
-
-4.3.5.7 Displays and keeps
-..........................
-
-Use displays to show text-based examples or figures (such as code
-listings).
-
-   Displays turn off filling, so lines of code are displayed as-is
-without inserting 'br' requests in between each line.  Displays can be
-"kept" on a single page, or allowed to break across pages.
-
- -- Macro: .DS L
- -- Macro: .LD
- -- Macro: .DE
-     Left-justified display.  The '.DS L' call generates a page break,
-     if necessary, to keep the entire display on one page.  The 'LD'
-     macro allows the display to break across pages.  The 'DE' macro
-     ends the display.
-
- -- Macro: .DS I
- -- Macro: .ID
- -- Macro: .DE
-     Indents the display as defined by the 'DI' register.  The '.DS I'
-     call generates a page break, if necessary, to keep the entire
-     display on one page.  The 'ID' macro allows the display to break
-     across pages.  The 'DE' macro ends the display.
-
- -- Macro: .DS B
- -- Macro: .BD
- -- Macro: .DE
-     Sets a block-centered display: the entire display is
-     left-justified, but indented so that the longest line in the
-     display is centered on the page.  The '.DS B' call generates a page
-     break, if necessary, to keep the entire display on one page.  The
-     'BD' macro allows the display to break across pages.  The 'DE'
-     macro ends the display.
-
- -- Macro: .DS C
- -- Macro: .CD
- -- Macro: .DE
-     Sets a centered display: each line in the display is centered.  The
-     '.DS C' call generates a page break, if necessary, to keep the
-     entire display on one page.  The 'CD' macro allows the display to
-     break across pages.  The 'DE' macro ends the display.
-
- -- Macro: .DS R
- -- Macro: .RD
- -- Macro: .DE
-     Right-justifies each line in the display.  The '.DS R' call
-     generates a page break, if necessary, to keep the entire display on
-     one page.  The 'RD' macro allows the display to break across pages.
-     The 'DE' macro ends the display.
-
- -- Macro: .Ds
- -- Macro: .De
-     These two macros were formerly provided as aliases for 'DS' and
-     'DE', respectively.  They have been removed, and should no longer
-     be used.  The original implementations of 'DS' and 'DE' are
-     retained, and should be used instead.  X11 documents that actually
-     use 'Ds' and 'De' always load a specific macro file from the X11
-     distribution ('macros.t') that provides proper definitions for the
-     two macros.
-
-   On occasion, you may want to "keep" other text together on a page.
-For example, you may want to keep two paragraphs together, or a
-paragraph that refers to a table (or list, or other item) immediately
-following.  The 'ms' macros provide the 'KS' and 'KE' macros for this
-purpose.
-
- -- Macro: .KS
- -- Macro: .KE
-     The 'KS' macro begins a block of text to be kept on a single page,
-     and the 'KE' macro ends the block.
-
- -- Macro: .KF
- -- Macro: .KE
-     Specifies a "floating keep"; if the keep cannot fit on the current
-     page, 'groff' holds the contents of the keep and allows text
-     following the keep (in the source file) to fill in the remainder of
-     the current page.  When the page breaks, whether by an explicit
-     'bp' request or by reaching the end of the page, 'groff' prints the
-     floating keep at the top of the new page.  This is useful for
-     printing large graphics or tables that do not need to appear
-     exactly where specified.
-
-   You can also use the 'ne' request to force a page break if there is
-not enough vertical space remaining on the page.
-
-   Use the following macros to draw a box around a section of text (such
-as a display).
-
- -- Macro: .B1
- -- Macro: .B2
-     Marks the beginning and ending of text that is to have a box drawn
-     around it.  The 'B1' macro begins the box; the 'B2' macro ends it.
-     Text in the box is automatically placed in a diversion (keep).
-
-\1f
-File: groff.info,  Node: ms Insertions,  Next: Example multi-page table,  Prev: ms Displays and Keeps,  Up: ms Body Text
-
-4.3.5.8 Tables, figures, equations, and references
-..................................................
-
-The 'ms' macros support the standard 'groff' preprocessors: 'tbl',
-'pic', 'eqn', and 'refer'.  You mark text meant for preprocessors by
-enclosing it in pairs of tags as follows.
-
- -- Macro: .TS ['H']
- -- Macro: .TE
-     Denotes a table, to be processed by the 'tbl' preprocessor.  The
-     optional argument 'H' to 'TS' instructs 'groff' to create a running
-     header with the information up to the 'TH' macro.  'groff' prints
-     the header at the beginning of the table; if the table runs onto
-     another page, 'groff' prints the header on the next page as well.
-
- -- Macro: .PS
- -- Macro: .PE
-     Denotes a graphic, to be processed by the 'pic' preprocessor.  You
-     can create a 'pic' file by hand, using the AT&T 'pic' manual
-     available on the Web as a reference, or by using a graphics program
-     such as 'xfig'.
-
- -- Macro: .EQ [align]
- -- Macro: .EN
-     Denotes an equation, to be processed by the 'eqn' preprocessor.
-     The optional ALIGN argument can be 'C', 'L', or 'I' to center (the
-     default), left-justify, or indent the equation.
-
- -- Macro: .[
- -- Macro: .]
-     Denotes a reference, to be processed by the 'refer' preprocessor.
-     The GNU 'refer(1)' man page provides a comprehensive reference to
-     the preprocessor and the format of the bibliographic database.
-
-* Menu:
-
-* Example multi-page table::
-
-\1f
-File: groff.info,  Node: Example multi-page table,  Next: ms Footnotes,  Prev: ms Insertions,  Up: ms Body Text
-
-4.3.5.9 An example multi-page table
-...................................
-
-The following is an example of how to set up a table that may print
-across two or more pages.
-
-     .TS H
-     allbox expand;
-     cb | cb .
-     Text      ...of heading...
-     _
-     .TH
-     .T&
-     l | l .
-     ... the rest of the table follows...
-     .CW
-     .TE
-
-\1f
-File: groff.info,  Node: ms Footnotes,  Prev: Example multi-page table,  Up: ms Body Text
-
-4.3.5.10 Footnotes
-..................
-
-The 'ms' macro package has a flexible footnote system.  You can specify
-either numbered footnotes or symbolic footnotes (that is, using a marker
-such as a dagger symbol).
-
- -- String: \*[*]
-     Specifies the location of a numbered footnote marker in the text.
-
- -- Macro: .FS
- -- Macro: .FE
-     Specifies the text of the footnote.  The default action is to
-     create a numbered footnote; you can create a symbolic footnote by
-     specifying a "mark" glyph (such as '\[dg]' for the dagger glyph) in
-     the body text and as an argument to the 'FS' macro, followed by the
-     text of the footnote and the 'FE' macro.
-
-   You can control how 'groff' prints footnote numbers by changing the
-value of the 'FF' register.  *Note ms Document Control Registers::.
-
-   Footnotes can be safely used within keeps and displays, but you
-should avoid using numbered footnotes within floating keeps.  You can
-set a second '\**' marker between a '\**' and its corresponding '.FS'
-entry; as long as each 'FS' macro occurs _after_ the corresponding '\**'
-and the occurrences of '.FS' are in the same order as the corresponding
-occurrences of '\**'.
-
-\1f
-File: groff.info,  Node: ms Page Layout,  Next: Differences from AT&T ms,  Prev: ms Body Text,  Up: ms
-
-4.3.6 Page layout
------------------
-
-The default output from the 'ms' macros provides a minimalist page
-layout: it prints a single column, with the page number centered at the
-top of each page.  It prints no footers.
-
-   You can change the layout by setting the proper number registers and
-strings.
-
-* Menu:
-
-* ms Headers and Footers::
-* ms Margins::
-* ms Multiple Columns::
-* ms TOC::
-* ms Strings and Special Characters::
-
-\1f
-File: groff.info,  Node: ms Headers and Footers,  Next: ms Margins,  Prev: ms Page Layout,  Up: ms Page Layout
-
-4.3.6.1 Headers and footers
-...........................
-
-For documents that do not distinguish between odd and even pages, set
-the following strings:
-
- -- String: \*[LH]
- -- String: \*[CH]
- -- String: \*[RH]
-     Sets the left, center, and right headers.
-
- -- String: \*[LF]
- -- String: \*[CF]
- -- String: \*[RF]
-     Sets the left, center, and right footers.
-
-   For documents that need different information printed in the even and
-odd pages, use the following macros:
-
- -- Macro: .OH 'left'center'right'
- -- Macro: .EH 'left'center'right'
- -- Macro: .OF 'left'center'right'
- -- Macro: .EF 'left'center'right'
-     The 'OH' and 'EH' macros define headers for the odd and even pages;
-     the 'OF' and 'EF' macros define footers for the odd and even pages.
-     This is more flexible than defining the individual strings.
-
-     You can replace the quote (''') marks with any character not
-     appearing in the header or footer text.
-
-   To specify custom header and footer processing, redefine the
-following macros:
-
- -- Macro: .PT
- -- Macro: .HD
- -- Macro: .BT
-     The 'PT' macro defines a custom header; the 'BT' macro defines a
-     custom footer.  These macros must handle odd/even/first page
-     differences if necessary.
-
-     The 'HD' macro defines additional header processing to take place
-     after executing the 'PT' macro.
-
-\1f
-File: groff.info,  Node: ms Margins,  Next: ms Multiple Columns,  Prev: ms Headers and Footers,  Up: ms Page Layout
-
-4.3.6.2 Margins
-...............
-
-You control margins using a set of number registers.  *Note ms Document
-Control Registers::, for details.
-
-\1f
-File: groff.info,  Node: ms Multiple Columns,  Next: ms TOC,  Prev: ms Margins,  Up: ms Page Layout
-
-4.3.6.3 Multiple columns
-........................
-
-The 'ms' macros can set text in as many columns as do reasonably fit on
-the page.  The following macros are available; all of them force a page
-break if a multi-column mode is already set.  However, if the current
-mode is single-column, starting a multi-column mode does _not_ force a
-page break.
-
- -- Macro: .1C
-     Single-column mode.
-
- -- Macro: .2C
-     Two-column mode.
-
- -- Macro: .MC [width [gutter]]
-     Multi-column mode.  If you specify no arguments, it is equivalent
-     to the '2C' macro.  Otherwise, WIDTH is the width of each column
-     and GUTTER is the space between columns.  The 'MINGW' number
-     register controls the default gutter width.
-
-\1f
-File: groff.info,  Node: ms TOC,  Next: ms Strings and Special Characters,  Prev: ms Multiple Columns,  Up: ms Page Layout
-
-4.3.6.4 Creating a table of contents
-....................................
-
-The facilities in the 'ms' macro package for creating a table of
-contents are semi-automated at best.  Assuming that you want the table
-of contents to consist of the document's headings, you need to repeat
-those headings wrapped in 'XS' and 'XE' macros.
-
- -- Macro: .XS [page]
- -- Macro: .XA [page]
- -- Macro: .XE
-     These macros define a table of contents or an individual entry in
-     the table of contents, depending on their use.  The macros are very
-     simple; they cannot indent a heading based on its level.  The
-     easiest way to work around this is to add tabs to the table of
-     contents string.  The following is an example:
-
-          .NH 1
-          Introduction
-          .XS
-          Introduction
-          .XE
-          .LP
-          ...
-          .CW
-          .NH 2
-          Methodology
-          .XS
-          Methodology
-          .XE
-          .LP
-          ...
-
-     You can manually create a table of contents by beginning with the
-     'XS' macro for the first entry, specifying the page number for that
-     entry as the argument to 'XS'.  Add subsequent entries using the
-     'XA' macro, specifying the page number for that entry as the
-     argument to 'XA'.  The following is an example:
-
-          .XS 1
-          Introduction
-          .XA 2
-          A Brief History of the Universe
-          .XA 729
-          Details of Galactic Formation
-          ...
-          .XE
-
- -- Macro: .TC ['no']
-     Prints the table of contents on a new page, setting the page number
-     to *i* (Roman lowercase numeral one).  You should usually place
-     this macro at the end of the file, since 'groff' is a single-pass
-     formatter and can only print what has been collected up to the
-     point that the 'TC' macro appears.
-
-     The optional argument 'no' suppresses printing the title specified
-     by the string register 'TOC'.
-
- -- Macro: .PX ['no']
-     Prints the table of contents on a new page, using the current page
-     numbering sequence.  Use this macro to print a manually-generated
-     table of contents at the beginning of your document.
-
-     The optional argument 'no' suppresses printing the title specified
-     by the string register 'TOC'.
-
-   The 'Groff and Friends HOWTO' includes a 'sed' script that
-automatically inserts 'XS' and 'XE' macro entries after each heading in
-a document.
-
-   Altering the 'NH' macro to automatically build the table of contents
-is perhaps initially more difficult, but would save a great deal of time
-in the long run if you use 'ms' regularly.
-
-\1f
-File: groff.info,  Node: ms Strings and Special Characters,  Prev: ms TOC,  Up: ms Page Layout
-
-4.3.6.5 Strings and Special Characters
-......................................
-
-The 'ms' macros provide the following predefined strings.  You can
-change the string definitions to help in creating documents in languages
-other than English.
-
- -- String: \*[REFERENCES]
-     Contains the string printed at the beginning of the references
-     (bibliography) page.  The default is 'References'.
-
- -- String: \*[ABSTRACT]
-     Contains the string printed at the beginning of the abstract.  The
-     default is 'ABSTRACT'.
-
- -- String: \*[TOC]
-     Contains the string printed at the beginning of the table of
-     contents.
-
- -- String: \*[MONTH1]
- -- String: \*[MONTH2]
- -- String: \*[MONTH3]
- -- String: \*[MONTH4]
- -- String: \*[MONTH5]
- -- String: \*[MONTH6]
- -- String: \*[MONTH7]
- -- String: \*[MONTH8]
- -- String: \*[MONTH9]
- -- String: \*[MONTH10]
- -- String: \*[MONTH11]
- -- String: \*[MONTH12]
-     Prints the full name of the month in dates.  The default is
-     'January', 'February', etc.
-
-   The following special characters are available(1) (*note ms Strings
-and Special Characters-Footnote-1::):
-
- -- String: \*[-]
-     Prints an em dash.
-
- -- String: \*[Q]
- -- String: \*[U]
-     Prints typographer's quotes in troff, and plain quotes in nroff.
-     '\*Q' is the left quote and '\*U' is the right quote.
-
-   Improved accent marks are available in the 'ms' macros.
-
- -- Macro: .AM
-     Specify this macro at the beginning of your document to enable
-     extended accent marks and special characters.  This is a Berkeley
-     extension.
-
-     To use the accent marks, place them *after* the character being
-     accented.
-
-     Note that groff's native support for accents is superior to the
-     following definitions.
-
-   The following accent marks are available after invoking the 'AM'
-macro:
-
- -- String: \*[']
-     Acute accent.
-
- -- String: \*[`]
-     Grave accent.
-
- -- String: \*[^]
-     Circumflex.
-
- -- String: \*[,]
-     Cedilla.
-
- -- String: \*[~]
-     Tilde.
-
- -- String: \*[:]
-     Umlaut.
-
- -- String: \*[v]
-     Hacek.
-
- -- String: \*[_]
-     Macron (overbar).
-
- -- String: \*[.]
-     Underdot.
-
- -- String: \*[o]
-     Ring above.
-
-   The following are standalone characters available after invoking the
-'AM' macro:
-
- -- String: \*[?]
-     Upside-down question mark.
-
- -- String: \*[!]
-     Upside-down exclamation point.
-
- -- String: \*[8]
-     German ß ligature.
-
- -- String: \*[3]
-     Yogh.
-
- -- String: \*[Th]
-     Uppercase thorn.
-
- -- String: \*[th]
-     Lowercase thorn.
-
- -- String: \*[D-]
-     Uppercase eth.
-
- -- String: \*[d-]
-     Lowercase eth.
-
- -- String: \*[q]
-     Hooked o.
-
- -- String: \*[ae]
-     Lowercase æ ligature.
-
- -- String: \*[Ae]
-     Uppercase Æ ligature.
-
-\1f
-File: groff.info,  Node: ms Strings and Special Characters-Footnotes,  Up: ms Strings and Special Characters
-
-   (1) For an explanation what special characters are see *note Special
-Characters::.
-
-\1f
-File: groff.info,  Node: Differences from AT&T ms,  Next: Naming Conventions,  Prev: ms Page Layout,  Up: ms
-
-4.3.7 Differences from AT&T 'ms'
---------------------------------
-
-This section lists the (minor) differences between the 'groff -ms'
-macros and AT&T 'troff -ms' macros.
-
-   * The internals of 'groff -ms' differ from the internals of AT&T
-     'troff -ms'.  Documents that depend upon implementation details of
-     AT&T 'troff -ms' may not format properly with 'groff -ms'.
-
-   * The general error-handling policy of 'groff -ms' is to detect and
-     report errors, rather than silently to ignore them.
-
-   * 'groff -ms' does not work in compatibility mode (this is, with the
-     '-C' option).
-
-   * There is no special support for typewriter-like devices.
-
-   * 'groff -ms' does not provide cut marks.
-
-   * Multiple line spacing is not supported.  Use a larger vertical
-     spacing instead.
-
-   * Some UNIX 'ms' documentation says that the 'CW' and 'GW' number
-     registers can be used to control the column width and gutter width,
-     respectively.  These number registers are not used in 'groff -ms'.
-
-   * Macros that cause a reset (paragraphs, headings, etc.) may change
-     the indentation.  Macros that change the indentation do not
-     increment or decrement the indentation, but rather set it
-     absolutely.  This can cause problems for documents that define
-     additional macros of their own.  The solution is to use not the
-     'in' request but instead the 'RS' and 'RE' macros.
-
-   * To make 'groff -ms' use the default page offset (which also
-     specifies the left margin), the 'PO' register must stay undefined
-     until the first '-ms' macro is evaluated.  This implies that 'PO'
-     should not be used early in the document, unless it is changed
-     also: Remember that accessing an undefined register automatically
-     defines it.
-
- -- Register: \n[GS]
-     This number register is set to 1 by the 'groff -ms' macros, but it
-     is not used by the 'AT&T' 'troff -ms' macros.  Documents that need
-     to determine whether they are being formatted with 'AT&T' 'troff
-     -ms' or 'groff -ms' should use this number register.
-
-   Emulations of a few ancient Bell Labs macros can be re-enabled by
-calling the otherwise undocumented 'SC' section-header macro.  Calling
-'SC' enables 'UC' for marking up a product or application name, and the
-pair 'P1'/'P2' for surrounding code example displays.
-
-   These are not enabled by default because (a) they were not
-documented, in the original 'ms' manual, and (b) the 'P1' and 'UC'
-macros collide with different macros with the same names in the Berkeley
-version of 'ms'.
-
-   These 'groff' emulations are sufficient to give back the 1976
-Kernighan & Cherry paper 'Typsetting Mathematics - User's Guide' its
-section headings, and restore some text that had gone missing as
-arguments of undefined macros.  No warranty express or implied is given
-as to how well the typographic details these produce match the original
-Bell Labs macros.
-
-* Menu:
-
-* Missing ms Macros::
-* Additional ms Macros::
-
-\1f
-File: groff.info,  Node: Missing ms Macros,  Next: Additional ms Macros,  Prev: Differences from AT&T ms,  Up: Differences from AT&T ms
-
-4.3.7.1 'troff' macros not appearing in 'groff'
-...............................................
-
-Macros missing from 'groff -ms' are cover page macros specific to Bell
-Labs and Berkeley.  The macros known to be missing are:
-
-'.TM'
-     Technical memorandum; a cover sheet style
-
-'.IM'
-     Internal memorandum; a cover sheet style
-
-'.MR'
-     Memo for record; a cover sheet style
-
-'.MF'
-     Memo for file; a cover sheet style
-
-'.EG'
-     Engineer's notes; a cover sheet style
-
-'.TR'
-     Computing Science Tech Report; a cover sheet style
-
-'.OK'
-     Other keywords
-
-'.CS'
-     Cover sheet information
-
-'.MH'
-     A cover sheet macro
-
-\1f
-File: groff.info,  Node: Additional ms Macros,  Prev: Missing ms Macros,  Up: Differences from AT&T ms
-
-4.3.7.2 'groff' macros not appearing in AT&T 'troff'
-....................................................
-
-The 'groff -ms' macros have a few minor extensions compared to the AT&T
-'troff -ms' macros.
-
- -- Macro: .AM
-     Improved accent marks.  *Note ms Strings and Special Characters::,
-     for details.
-
- -- Macro: .DS I
-     Indented display.  The default behavior of AT&T 'troff -ms' was to
-     indent; the 'groff' default prints displays flush left with the
-     body text.
-
- -- Macro: .CW
-     Print text in 'constant width' (Courier) font.
-
- -- Macro: .IX
-     Indexing term (printed on standard error).  You can write a script
-     to capture and process an index generated in this manner.
-
-   The following additional number registers appear in 'groff -ms':
-
- -- Register: \n[MINGW]
-     Specifies a minimum space between columns (for multi-column
-     output); this takes the place of the 'GW' register that was
-     documented but apparently not implemented in AT&T 'troff'.
-
-   Several new string registers are available as well.  You can change
-these to handle (for example) the local language.  *Note ms Strings and
-Special Characters::, for details.
-
-\1f
-File: groff.info,  Node: Naming Conventions,  Prev: Differences from AT&T ms,  Up: ms
-
-4.3.8 Naming Conventions
-------------------------
-
-The following conventions are used for names of macros, strings and
-number registers.  External names available to documents that use the
-'groff -ms' macros contain only uppercase letters and digits.
-
-   Internally the macros are divided into modules; naming conventions
-are as follows:
-
-   * Names used only within one module are of the form MODULE'*'NAME.
-
-   * Names used outside the module in which they are defined are of the
-     form MODULE'@'NAME.
-
-   * Names associated with a particular environment are of the form
-     ENVIRONMENT':'NAME; these are used only within the 'par' module.
-
-   * NAME does not have a module prefix.
-
-   * Constructed names used to implement arrays are of the form
-     ARRAY'!'INDEX.
-
-   Thus the groff ms macros reserve the following names:
-
-   * Names containing the characters '*', '@', and ':'.
-
-   * Names containing only uppercase letters and digits.
-
-\1f
-File: groff.info,  Node: me,  Next: mm,  Prev: ms,  Up: Macro Packages
-
-4.4 'me'
-========
-
-See the 'meintro.me' and 'meref.me' documents in groff's 'doc'
-directory.
-
-\1f
-File: groff.info,  Node: mm,  Next: mom,  Prev: me,  Up: Macro Packages
-
-4.5 'mm'
-========
-
-See the 'groff_mm(7)' man page (type 'man groff_mm' at the command
-line).
-
-\1f
-File: groff.info,  Node: mom,  Prev: mm,  Up: Macro Packages
-
-4.6 'mom'
-=========
-
-See the 'groff_mom(7)' man page (type 'man groff_mom' at the command
-line), which gives a short overview and a link to its extensive
-documentation in HTML format.
-
-\1f
-File: groff.info,  Node: gtroff Reference,  Next: Preprocessors,  Prev: Macro Packages,  Up: Top
-
-5 'gtroff' Reference
-********************
-
-This chapter covers *all* of the facilities of 'gtroff'.  Users of macro
-packages may skip it if not interested in details.
-
-* Menu:
-
-* Text::
-* Measurements::
-* Expressions::
-* Identifiers::
-* Embedded Commands::
-* Registers::
-* Manipulating Filling and Adjusting::
-* Manipulating Hyphenation::
-* Manipulating Spacing::
-* Tabs and Fields::
-* Character Translations::
-* Troff and Nroff Mode::
-* Line Layout::
-* Line Control::
-* Page Layout::
-* Page Control::
-* Fonts and Symbols::
-* Sizes::
-* Strings::
-* Conditionals and Loops::
-* Writing Macros::
-* Page Motions::
-* Drawing Requests::
-* Traps::
-* Diversions::
-* Environments::
-* Suppressing output::
-* Colors::
-* I/O::
-* Postprocessor Access::
-* Miscellaneous::
-* Gtroff Internals::
-* Debugging::
-* Implementation Differences::
-
-\1f
-File: groff.info,  Node: Text,  Next: Measurements,  Prev: gtroff Reference,  Up: gtroff Reference
-
-5.1 Text
-========
-
-'gtroff' input files contain text with control commands interspersed
-throughout.  But, even without control codes, 'gtroff' still does
-several things with the input text:
-
-   * filling and adjusting
-
-   * adding additional space after sentences
-
-   * hyphenating
-
-   * inserting implicit line breaks
-
-* Menu:
-
-* Filling and Adjusting::
-* Hyphenation::
-* Sentences::
-* Tab Stops::
-* Implicit Line Breaks::
-* Input Conventions::
-* Input Encodings::
-
-\1f
-File: groff.info,  Node: Filling and Adjusting,  Next: Hyphenation,  Prev: Text,  Up: Text
-
-5.1.1 Filling and Adjusting
----------------------------
-
-When 'gtroff' reads text, it collects words from the input and fits as
-many of them together on one output line as it can.  This is known as
-"filling".
-
-   Once 'gtroff' has a "filled" line, it tries to "adjust" it.  This
-means it widens the spacing between words until the text reaches the
-right margin (in the default adjustment mode).  Extra spaces between
-words are preserved, but spaces at the end of lines are ignored.  Spaces
-at the front of a line cause a "break" (breaks are explained in *note
-Implicit Line Breaks::).
-
-   *Note Manipulating Filling and Adjusting::.
-
-\1f
-File: groff.info,  Node: Hyphenation,  Next: Sentences,  Prev: Filling and Adjusting,  Up: Text
-
-5.1.2 Hyphenation
------------------
-
-Since the odds are not great for finding a set of words, for every
-output line, which fit nicely on a line without inserting excessive
-amounts of space between words, 'gtroff' hyphenates words so that it can
-justify lines without inserting too much space between words.  It uses
-an internal hyphenation algorithm (a simplified version of the algorithm
-used within TeX) to indicate which words can be hyphenated and how to do
-so.  When a word is hyphenated, the first part of the word is added to
-the current filled line being output (with an attached hyphen), and the
-other portion is added to the next line to be filled.
-
-   *Note Manipulating Hyphenation::.
-
-\1f
-File: groff.info,  Node: Sentences,  Next: Tab Stops,  Prev: Hyphenation,  Up: Text
-
-5.1.3 Sentences
----------------
-
-Although it is often debated, some typesetting rules say there should be
-different amounts of space after various punctuation marks.  For
-example, the 'Chicago typsetting manual' says that a period at the end
-of a sentence should have twice as much space following it as would a
-comma or a period as part of an abbreviation.
-
-   'gtroff' does this by flagging certain characters (normally '!', '?',
-and '.') as "end-of-sentence" characters.  When 'gtroff' encounters one
-of these characters at the end of a line, it appends a normal space
-followed by a "sentence space" in the formatted output.  (This justifies
-one of the conventions mentioned in *note Input Conventions::.)
-
-   In addition, the following characters and symbols are treated
-transparently while handling end-of-sentence characters: '"', ''', ')',
-']', '*', '\[dg]', '\[rq]', and '\[cq]'.
-
-   See the 'cflags' request in *note Using Symbols::, for more details.
-
-   To prevent the insertion of extra space after an end-of-sentence
-character (at the end of a line), append '\&'.
-
-\1f
-File: groff.info,  Node: Tab Stops,  Next: Implicit Line Breaks,  Prev: Sentences,  Up: Text
-
-5.1.4 Tab Stops
----------------
-
-'gtroff' translates "tabulator characters", also called "tabs" (normally
-code point ASCII '0x09' or EBCDIC '0x05'), in the input into movements
-to the next tabulator stop.  These tab stops are initially located every
-half inch across the page.  Using this, simple tables can be made
-easily.  However, it can often be deceptive as the appearance (and
-width) of the text on a terminal and the results from 'gtroff' can vary
-greatly.
-
-   Also, a possible sticking point is that lines beginning with tab
-characters are still filled, again producing unexpected results.  For
-example, the following input
-
-           1          2          3
-                      4          5
-
-produces
-
-           1          2          3                     4          5
-
-   *Note Tabs and Fields::.
-
-\1f
-File: groff.info,  Node: Implicit Line Breaks,  Next: Input Conventions,  Prev: Tab Stops,  Up: Text
-
-5.1.5 Implicit Line Breaks
---------------------------
-
-An important concept in 'gtroff' is the "break".  When a break occurs,
-'gtroff' outputs the partially filled line (unjustified), and resumes
-collecting and filling text on the next output line.
-
-   There are several ways to cause a break in 'gtroff'.  A blank line
-not only causes a break, but it also outputs a one-line vertical space
-(effectively a blank line).  Note that this behaviour can be modified
-with the blank line macro request 'blm'.  *Note Blank Line Traps::.
-
-   A line that begins with a space causes a break and the space is
-output at the beginning of the next line.  Note that this space isn't
-adjusted, even in fill mode; however, the behaviour can be modified with
-the leading spaces macro request 'lsm'.  *Note Leading Spaces Traps::.
-
-   The end of file also causes a break - otherwise the last line of the
-document may vanish!
-
-   Certain requests also cause breaks, implicitly or explicitly.  This
-is discussed in *note Manipulating Filling and Adjusting::.
-
-\1f
-File: groff.info,  Node: Input Conventions,  Next: Input Encodings,  Prev: Implicit Line Breaks,  Up: Text
-
-5.1.6 Input Conventions
------------------------
-
-Since 'gtroff' does filling automatically, it is traditional in 'groff'
-not to try and type things in as nicely formatted paragraphs.  These are
-some conventions commonly used when typing 'gtroff' text:
-
-   * Break lines after punctuation, particularly at the end of a
-     sentence and in other logical places.  Keep separate phrases on
-     lines by themselves, as entire phrases are often added or deleted
-     when editing.
-
-   * Try to keep lines less than 40-60 characters, to allow space for
-     inserting more text.
-
-   * Do not try to do any formatting in a WYSIWYG manner (i.e., don't
-     try using spaces to get proper indentation).
-
-\1f
-File: groff.info,  Node: Input Encodings,  Prev: Input Conventions,  Up: Text
-
-5.1.7 Input Encodings
----------------------
-
-Currently, the following input encodings are available.
-
-cp1047
-     This input encoding works only on EBCDIC platforms (and vice versa,
-     the other input encodings don't work with EBCDIC); the file
-     'cp1047.tmac' is by default loaded at start-up.
-
-latin-1
-     This is the default input encoding on non-EBCDIC platforms; the
-     file 'latin1.tmac' is loaded at start-up.
-
-latin-2
-     To use this encoding, either say '.mso latin2.tmac' at the very
-     beginning of your document or use '-mlatin2' as a command line
-     argument for 'groff'.
-
-latin-5
-     For Turkish.  Either say '.mso latin9.tmac' at the very beginning
-     of your document or use '-mlatin9' as a command line argument for
-     'groff'.
-
-latin-9 (latin-0)
-     This encoding is intended (at least in Europe) to replace latin-1
-     encoding.  The main difference to latin-1 is that latin-9 contains
-     the Euro character.  To use this encoding, either say
-     '.mso latin9.tmac' at the very beginning of your document or use
-     '-mlatin9' as a command line argument for 'groff'.
-
-   Note that it can happen that some input encoding characters are not
-available for a particular output device.  For example, saying
-
-     groff -Tlatin1 -mlatin9 ...
-
-fails if you use the Euro character in the input.  Usually, this
-limitation is present only for devices that have a limited set of output
-glyphs (e.g. '-Tascii' and '-Tlatin1'); for other devices it is usually
-sufficient to install proper fonts that contain the necessary glyphs.
-
-   Due to the importance of the Euro glyph in Europe, the groff package
-now comes with a POSTSCRIPT font called 'freeeuro.pfa', which provides
-various glyph shapes for the Euro.  In other words, latin-9 encoding is
-supported for the '-Tps' device out of the box (latin-2 isn't).
-
-   By its very nature, '-Tutf8' supports all input encodings; '-Tdvi'
-has support for both latin-2 and latin-9 if the command line '-mec' is
-used also to load the file 'ec.tmac' (which flips to the EC fonts).
-
-\1f
-File: groff.info,  Node: Measurements,  Next: Expressions,  Prev: Text,  Up: gtroff Reference
-
-5.2 Measurements
-================
-
-'gtroff' (like many other programs) requires numeric parameters to
-specify various measurements.  Most numeric parameters(1) (*note
-Measurements-Footnote-1::) may have a "measurement unit" attached.
-These units are specified as a single character that immediately follows
-the number or expression.  Each of these units are understood, by
-'gtroff', to be a multiple of its "basic unit".  So, whenever a
-different measurement unit is specified 'gtroff' converts this into its
-"basic units".  This basic unit, represented by a 'u', is a device
-dependent measurement, which is quite small, ranging from 1/75th to
-1/72000th of an inch.  The values may be given as fractional numbers;
-however, fractional basic units are always rounded to integers.
-
-   Some of the measurement units are completely independent of any of
-the current settings (e.g. type size) of 'gtroff'.
-
-'i'
-     Inches.  An antiquated measurement unit still in use in certain
-     backwards countries with incredibly low-cost computer equipment.
-     One inch is equal to 2.54cm.
-
-'c'
-     Centimeters.  One centimeter is equal to 0.3937in.
-
-'p'
-     Points.  This is a typesetter's measurement used for measure type
-     size.  It is 72 points to an inch.
-
-'P'
-     Pica.  Another typesetting measurement.  6 Picas to an inch (and
-     12 points to a pica).
-
-'s'
-'z'
-     *Note Fractional Type Sizes::, for a discussion of these units.
-
-'f'
-     Fractions.  Value is 65536.  *Note Colors::, for usage.
-
-   The other measurements understood by 'gtroff' depend on settings
-currently in effect in 'gtroff'.  These are very useful for specifying
-measurements that should look proper with any size of text.
-
-'m'
-     Ems.  This unit is equal to the current font size in points.  So
-     called because it is _approximately_ the width of the letter 'm' in
-     the current font.
-
-'n'
-     Ens.  In 'groff', this is half of an em.
-
-'v'
-     Vertical space.  This is equivalent to the current line spacing.
-     *Note Sizes::, for more information about this.
-
-'M'
-     100ths of an em.
-
-* Menu:
-
-* Default Units::
-
-\1f
-File: groff.info,  Node: Measurements-Footnotes,  Up: Measurements
-
-   (1) those that specify vertical or horizontal motion or a type size
-
-\1f
-File: groff.info,  Node: Default Units,  Prev: Measurements,  Up: Measurements
-
-5.2.1 Default Units
--------------------
-
-Many requests take a default unit.  While this can be helpful at times,
-it can cause strange errors in some expressions.  For example, the line
-length request expects em units.  Here are several attempts to get a
-line length of 3.5 inches and their results:
-
-     3.5i      =>   3.5i
-     7/2       =>   0i
-     7/2i      =>   0i
-     (7 / 2)u  =>   0i
-     7i/2      =>   0.1i
-     7i/2u     =>   3.5i
-
-Everything is converted to basic units first.  In the above example it
-is assumed that 1i equals 240u, and 1m equals 10p (thus 1m equals 33u).
-The value 7i/2 is first handled as 7i/2m, then converted to 1680u/66u,
-which is 25u, and this is approximately 0.1i.  As can be seen, a scaling
-indicator after a closing parenthesis is simply ignored.
-
-   Thus, the safest way to specify measurements is to always attach a
-scaling indicator.  If you want to multiply or divide by a certain
-scalar value, use 'u' as the unit for that value.
-
-\1f
-File: groff.info,  Node: Expressions,  Next: Identifiers,  Prev: Measurements,  Up: gtroff Reference
-
-5.3 Expressions
-===============
-
-'gtroff' has most arithmetic operators common to other languages:
-
-   * Arithmetic: '+' (addition), '-' (subtraction), '/' (division), '*'
-     (multiplication), '%' (modulo).
-
-     'gtroff' only provides integer arithmetic.  The internal type used
-     for computing results is 'int', which is usually a 32bit signed
-     integer.
-
-   * Comparison: '<' (less than), '>' (greater than), '<=' (less than or
-     equal), '>=' (greater than or equal), '=' (equal), '==' (the same
-     as '=').
-
-   * Logical: '&' (logical and), ':' (logical or).
-
-   * Unary operators: '-' (negating, i.e. changing the sign), '+' (just
-     for completeness; does nothing in expressions), '!' (logical not;
-     this works only within 'if' and 'while' requests).(1)  (*note
-     Expressions-Footnote-1::) See below for the use of unary operators
-     in motion requests.
-
-     The logical not operator, as described above, works only within
-     'if' and 'while' requests.  Furthermore, it may appear only at the
-     beginning of an expression, and negates the entire expression.
-     Attempting to insert the '!' operator within the expression results
-     in a 'numeric expression expected' warning.  This maintains
-     compatibility with old versions of 'troff'.
-
-     Example:
-
-          .nr X 1
-          .nr Y 0
-          .\" This does not work as expected
-          .if (\n[X])&(!\n[Y]) .nop X only
-          .
-          .\" Use this construct instead
-          .if (\n[X]=1)&(\n[Y]=0) .nop X only
-
-   * Extrema: '>?' (maximum), '<?' (minimum).
-
-     Example:
-
-          .nr x 5
-          .nr y 3
-          .nr z (\n[x] >? \n[y])
-
-     The register 'z' now contains 5.
-
-   * Scaling: '(C;E)'.  Evaluate E using C as the default scaling
-     indicator.  If C is missing, ignore scaling indicators in the
-     evaluation of E.
-
-   Parentheses may be used as in any other language.  However, in
-'gtroff' they are necessary to ensure order of evaluation.  'gtroff' has
-no operator precedence; expressions are evaluated left to right.  This
-means that 'gtroff' evaluates '3+5*4' as if it were parenthesized like
-'(3+5)*4', not as '3+(5*4)', as might be expected.
-
-   For many requests that cause a motion on the page, the unary
-operators '+' and '-' work differently if leading an expression.  They
-then indicate a motion relative to the current position (down or up,
-respectively).
-
-   Similarly, a leading '|' operator indicates an absolute position.
-For vertical movements, it specifies the distance from the top of the
-page; for horizontal movements, it gives the distance from the beginning
-of the _input_ line.
-
-   '+' and '-' are also treated differently by the following requests
-and escapes: 'bp', 'in', 'll', 'lt', 'nm', 'nr', 'pl', 'pn', 'po', 'ps',
-'pvs', 'rt', 'ti', '\H', '\R', and '\s'.  Here, leading plus and minus
-signs indicate increments and decrements.
-
-   *Note Setting Registers::, for some examples.
-
- -- Escape: \B'anything'
-     Return 1 if ANYTHING is a valid numeric expression; or 0 if
-     ANYTHING is empty or not a valid numeric expression.
-
-   Due to the way arguments are parsed, spaces are not allowed in
-expressions, unless the entire expression is surrounded by parentheses.
-
-   *Note Request and Macro Arguments::, and *note Conditionals and
-Loops::.
-
-\1f
-File: groff.info,  Node: Expressions-Footnotes,  Up: Expressions
-
-   (1) Note that, for example, '!(-1)' evaluates to 'true' because
-'gtroff' treats both negative numbers and zero as 'false'.
-
-\1f
-File: groff.info,  Node: Identifiers,  Next: Embedded Commands,  Prev: Expressions,  Up: gtroff Reference
-
-5.4 Identifiers
-===============
-
-Like any other language, 'gtroff' has rules for properly formed
-"identifiers".  In 'gtroff', an identifier can be made up of almost any
-printable character, with the exception of the following characters:
-
-   * Whitespace characters (spaces, tabs, and newlines).
-
-   * Backspace (ASCII '0x08' or EBCDIC '0x16') and character code
-     '0x01'.
-
-   * The following input characters are invalid and are ignored if
-     'groff' runs on a machine based on ASCII, causing a warning message
-     of type 'input' (see *note Debugging::, for more details): '0x00',
-     '0x0B', '0x0D'-'0x1F', '0x80'-'0x9F'.
-
-     And here are the invalid input characters if 'groff' runs on an
-     EBCDIC host: '0x00', '0x08', '0x09', '0x0B', '0x0D'-'0x14',
-     '0x17'-'0x1F', '0x30'-'0x3F'.
-
-     Currently, some of these reserved codepoints are used internally,
-     thus making it non-trivial to extend 'gtroff' to cover Unicode or
-     other character sets and encodings that use characters of these
-     ranges.
-
-     Note that invalid characters are removed before parsing; an
-     identifier 'foo', followed by an invalid character, followed by
-     'bar' is treated as 'foobar'.
-
-   For example, any of the following is valid.
-
-     br
-     PP
-     (l
-     end-list
-     @_
-
-Note that identifiers longer than two characters with a closing bracket
-(']') in its name can't be accessed with escape sequences that expect an
-identifier as a parameter.  For example, '\[foo]]' accesses the glyph
-'foo', followed by ']', whereas '\C'foo]'' really asks for glyph 'foo]'.
-
-   To avoid problems with the 'refer' preprocessor, macro names should
-not start with '[' or ']'.  Due to backwards compatibility, everything
-after '.[' and '.]' is handled as a special argument to 'refer'.  For
-example, '.[foo' makes 'refer' to start a reference, using 'foo' as a
-parameter.
-
- -- Escape: \A'ident'
-     Test whether an identifier IDENT is valid in 'gtroff'.  It expands
-     to the character 1 or 0 according to whether its argument (usually
-     delimited by quotes) is or is not acceptable as the name of a
-     string, macro, diversion, number register, environment, or font.
-     It returns 0 if no argument is given.  This is useful for looking
-     up user input in some sort of associative table.
-
-          \A'end-list'
-              => 1
-
-   *Note Escapes::, for details on parameter delimiting characters.
-
-   Identifiers in 'gtroff' can be any length, but, in some contexts,
-'gtroff' needs to be told where identifiers end and text begins (and in
-different ways depending on their length):
-
-   * Single character.
-
-   * Two characters.  Must be prefixed with '(' in some situations.
-
-   * Arbitrary length ('gtroff' only).  Must be bracketed with '['
-     and ']' in some situations.  Any length identifier can be put in
-     brackets.
-
-   Unlike many other programming languages, undefined identifiers are
-silently ignored or expanded to nothing.  When 'gtroff' finds an
-undefined identifier, it emits a warning, doing the following:
-
-   * If the identifier is a string, macro, or diversion, 'gtroff'
-     defines it as empty.
-
-   * If the identifier is a number register, 'gtroff' defines it with a
-     value of 0.
-
-   *Note Warnings::., *note Interpolating Registers::, and *note
-Strings::.
-
-   Note that macros, strings, and diversions share the same name space.
-
-     .de xxx
-     .  nop foo
-     ..
-     .
-     .di xxx
-     bar
-     .br
-     .di
-     .
-     .xxx
-         => bar
-
-As can be seen in the previous example, 'gtroff' reuses the identifier
-'xxx', changing it from a macro to a diversion.  No warning is emitted!
-The contents of the first macro definition is lost.
-
-   *Note Interpolating Registers::, and *note Strings::.
-
-\1f
-File: groff.info,  Node: Embedded Commands,  Next: Registers,  Prev: Identifiers,  Up: gtroff Reference
-
-5.5 Embedded Commands
-=====================
-
-Most documents need more functionality beyond filling, adjusting and
-implicit line breaking.  In order to gain further functionality,
-'gtroff' allows commands to be embedded into the text, in two ways.
-
-   The first is a "request" that takes up an entire line, and does some
-large-scale operation (e.g. break lines, start new pages).
-
-   The other is an "escape" that can be usually embedded anywhere in the
-text; most requests can accept it even as an argument.  Escapes
-generally do more minor operations like sub- and superscripts, print a
-symbol, etc.
-
-* Menu:
-
-* Requests::
-* Macros::
-* Escapes::
-
-\1f
-File: groff.info,  Node: Requests,  Next: Macros,  Prev: Embedded Commands,  Up: Embedded Commands
-
-5.5.1 Requests
---------------
-
-A request line begins with a control character, which is either a single
-quote (''', the "no-break control character") or a period ('.', the
-normal "control character").  These can be changed; see *note Character
-Translations::, for details.  After this there may be optional tabs or
-spaces followed by an identifier, which is the name of the request.
-This may be followed by any number of space-separated arguments (_no_
-tabs here).
-
-   Since a control character followed by whitespace only is ignored, it
-is common practice to use this feature for structuring the source code
-of documents or macro packages.
-
-     .de foo
-     .  tm This is foo.
-     ..
-     .
-     .
-     .de bar
-     .  tm This is bar.
-     ..
-
-   Another possibility is to use the blank line macro request 'blm' by
-assigning an empty macro to it.
-
-     .de do-nothing
-     ..
-     .blm do-nothing  \" activate blank line macro
-
-     .de foo
-     .  tm This is foo.
-     ..
-
-
-     .de bar
-     .  tm This is bar.
-     ..
-
-     .blm             \" deactivate blank line macro
-
-   *Note Blank Line Traps::.
-
-   To begin a line with a control character without it being
-interpreted, precede it with '\&'.  This represents a zero width space,
-which means it does not affect the output.
-
-   In most cases the period is used as a control character.  Several
-requests cause a break implicitly; using the single quote control
-character prevents this.
-
- -- Register: \n[.br]
-     A read-only number register, which is set to 1 if a macro is called
-     with the normal control character (as defined with the 'cc'
-     request), and set to 0 otherwise.
-
-     This allows to reliably modify requests.
-
-          .als bp*orig bp
-          .de bp
-          .  tm before bp
-          .  ie \\n[.br] .bp*orig
-          .  el 'bp*orig
-          .  tm after bp
-          ..
-
-     Using this register outside of a macro makes no sense (it always
-     returns zero in such cases).
-
-     If a macro is called as a string (this is, using '\*'), the value
-     of the '.br' register is inherited from the calling macro.
-
-* Menu:
-
-* Request and Macro Arguments::
-
-\1f
-File: groff.info,  Node: Request and Macro Arguments,  Prev: Requests,  Up: Requests
-
-5.5.1.1 Request and Macro Arguments
-...................................
-
-Arguments to requests and macros are processed much like the shell: The
-line is split into arguments according to spaces.(1)  (*note Request and
-Macro Arguments-Footnote-1::)
-
-   An argument to a macro that is intended to contain spaces can either
-be enclosed in double quotes, or have the spaces "escaped" with
-backslashes.  This is _not_ true for requests.
-
-   Here are a few examples for a hypothetical macro 'uh':
-
-     .uh The Mouse Problem
-     .uh "The Mouse Problem"
-     .uh The\ Mouse\ Problem
-
-The first line is the 'uh' macro being called with 3 arguments, 'The',
-'Mouse', and 'Problem'.  The latter two have the same effect of calling
-the 'uh' macro with one argument, 'The Mouse Problem'.(2)  (*note
-Request and Macro Arguments-Footnote-2::)
-
-   A double quote that isn't preceded by a space doesn't start a macro
-argument.  If not closing a string, it is printed literally.
-
-   For example,
-
-     .xxx a" "b c" "de"fg"
-
-has the arguments 'a"', 'b c', 'de', and 'fg"'.  Don't rely on this
-obscure behaviour!
-
-   There are two possibilities to get a double quote reliably.
-
-   * Enclose the whole argument with double quotes and use two
-     consecutive double quotes to represent a single one.  This
-     traditional solution has the disadvantage that double quotes don't
-     survive argument expansion again if called in compatibility mode
-     (using the '-C' option of 'groff'):
-
-          .de xx
-          .  tm xx: `\\$1' `\\$2' `\\$3'
-          .
-          .  yy "\\$1" "\\$2" "\\$3"
-          ..
-          .de yy
-          .  tm yy: `\\$1' `\\$2' `\\$3'
-          ..
-          .xx A "test with ""quotes""" .
-              => xx: `A' `test with "quotes"' `.'
-              => yy: `A' `test with ' `quotes""'
-
-     If not in compatibility mode, you get the expected result
-
-          xx: `A' `test with "quotes"' `.'
-          yy: `A' `test with "quotes"' `.'
-
-     since 'gtroff' preserves the input level.
-
-   * Use the double quote glyph '\(dq'.  This works with and without
-     compatibility mode enabled since 'gtroff' doesn't convert '\(dq'
-     back to a double quote input character.
-
-     Note that this method won't work with UNIX 'troff' in general since
-     the glyph 'dq' isn't defined normally.
-
-   Double quotes in the 'ds' request are handled differently.  *Note
-Strings::, for more details.
-
-\1f
-File: groff.info,  Node: Request and Macro Arguments-Footnotes,  Up: Request and Macro Arguments
-
-   (1) Plan 9's 'troff' implementation also allows tabs for argument
-separation - 'gtroff' intentionally doesn't support this.
-
-   (2) The last solution, i.e., using escaped spaces, is "classical" in
-the sense that it can be found in most 'troff' documents.  Nevertheless,
-it is not optimal in all situations, since '\ ' inserts a fixed-width,
-non-breaking space character that can't stretch.  'gtroff' provides a
-different command '\~' to insert a stretchable, non-breaking space.
-
-\1f
-File: groff.info,  Node: Macros,  Next: Escapes,  Prev: Requests,  Up: Embedded Commands
-
-5.5.2 Macros
-------------
-
-'gtroff' has a "macro" facility for defining a series of lines that can
-be invoked by name.  They are called in the same manner as requests -
-arguments also may be passed basically in the same manner.
-
-   *Note Writing Macros::, and *note Request and Macro Arguments::.
-
-\1f
-File: groff.info,  Node: Escapes,  Prev: Macros,  Up: Embedded Commands
-
-5.5.3 Escapes
--------------
-
-Escapes may occur anywhere in the input to 'gtroff'.  They usually begin
-with a backslash and are followed by a single character, which indicates
-the function to be performed.  The escape character can be changed; see
-*note Character Translations::.
-
-   Escape sequences that require an identifier as a parameter accept
-three possible syntax forms.
-
-   * The next single character is the identifier.
-
-   * If this single character is an opening parenthesis, take the
-     following two characters as the identifier.  Note that there is no
-     closing parenthesis after the identifier.
-
-   * If this single character is an opening bracket, take all characters
-     until a closing bracket as the identifier.
-
-Examples:
-
-     \fB
-     \n(XX
-     \*[TeX]
-
-   Other escapes may require several arguments and/or some special
-format.  In such cases the argument is traditionally enclosed in single
-quotes (and quotes are always used in this manual for the definitions of
-escape sequences).  The enclosed text is then processed according to
-what that escape expects.  Example:
-
-     \l'1.5i\(bu'
-
-   Note that the quote character can be replaced with any other
-character that does not occur in the argument (even a newline or a space
-character) in the following escapes: '\o', '\b', and '\X'.  This makes
-e.g.
-
-     A caf
-     \o
-     e\'
-
-
-     in Paris
-       => A café in Paris
-
-possible, but it is better not to use this feature to avoid confusion.
-
-   The following escapes sequences (which are handled similarly to
-characters since they don't take a parameter) are also allowed as
-delimiters: '\%', '\ ', '\|', '\^', '\{', '\}', '\'', '\`', '\-', '\_',
-'\!', '\?', '\)', '\/', '\,', '\&', '\:', '\~', '\0', '\a', '\c', '\d',
-'\e', '\E', '\p', '\r', '\t', and '\u'.  Again, don't use these if
-possible.
-
-   No newline characters as delimiters are allowed in the following
-escapes: '\A', '\B', '\Z', '\C', and '\w'.
-
-   Finally, the escapes '\D', '\h', '\H', '\l', '\L', '\N', '\R', '\s',
-'\S', '\v', and '\x' can't use the following characters as delimiters:
-
-   * The digits '0'-'9'.
-
-   * The (single-character) operators '+-/*%<>=&:().'.
-
-   * The space, tab, and newline characters.
-
-   * All escape sequences except '\%', '\:', '\{', '\}', '\'', '\`',
-     '\-', '\_', '\!', '\/', '\c', '\e', and '\p'.
-
-   To have a backslash (actually, the current escape character) appear
-in the output several escapes are defined: '\\', '\e' or '\E'.  These
-are very similar, and only differ with respect to being used in macros
-or diversions.  *Note Character Translations::, for an exact description
-of those escapes.
-
-   *Note Implementation Differences::, *note Copy-in Mode::, and *note
-Diversions::, *note Identifiers::, for more information.
-
-* Menu:
-
-* Comments::
-
-\1f
-File: groff.info,  Node: Comments,  Prev: Escapes,  Up: Escapes
-
-5.5.3.1 Comments
-................
-
-Probably one of the most(1) (*note Comments-Footnote-1::) common forms
-of escapes is the comment.
-
- -- Escape: \"
-     Start a comment.  Everything to the end of the input line is
-     ignored.
-
-     This may sound simple, but it can be tricky to keep the comments
-     from interfering with the appearance of the final output.
-
-     If the escape is to the right of some text or a request, that
-     portion of the line is ignored, but the space leading up to it is
-     noticed by 'gtroff'.  This only affects the 'ds' and 'as' request
-     and its variants.
-
-     One possibly irritating idiosyncracy is that tabs must not be used
-     to line up comments.  Tabs are not treated as whitespace between
-     the request and macro arguments.
-
-     A comment on a line by itself is treated as a blank line, because
-     after eliminating the comment, that is all that remains:
-
-          Test
-          \" comment
-          Test
-
-     produces
-
-          Test
-
-          Test
-
-     To avoid this, it is common to start the line with '.\"', which
-     causes the line to be treated as an undefined request and thus
-     ignored completely.
-
-     Another commenting scheme seen sometimes is three consecutive
-     single quotes (''''') at the beginning of a line.  This works, but
-     'gtroff' gives a warning about an undefined macro (namely ''''),
-     which is harmless, but irritating.
-
- -- Escape: \#
-     To avoid all this, 'gtroff' has a new comment mechanism using the
-     '\#' escape.  This escape works the same as '\"' except that the
-     newline is also ignored:
-
-          Test
-          \# comment
-          Test
-
-     produces
-
-          Test Test
-
-     as expected.
-
- -- Request: .ig [end]
-     Ignore all input until 'gtroff' encounters the macro named '.'END
-     on a line by itself (or '..' if END is not specified).  This is
-     useful for commenting out large blocks of text:
-
-          text text text...
-          .ig
-          This is part of a large block
-          of text that has been
-          temporarily(?) commented out.
-
-          We can restore it simply by removing
-          the .ig request and the ".." at the
-          end of the block.
-          ..
-          More text text text...
-
-     produces
-
-          text text text...  More text text text...
-
-     Note that the commented-out block of text does not cause a break.
-
-     The input is read in copy-mode; auto-incremented registers _are_
-     affected (*note Auto-increment::).
-
-\1f
-File: groff.info,  Node: Comments-Footnotes,  Up: Comments
-
-   (1) Unfortunately, this is a lie.  But hopefully future 'gtroff'
-hackers will believe it ':-)'
-
-\1f
-File: groff.info,  Node: Registers,  Next: Manipulating Filling and Adjusting,  Prev: Embedded Commands,  Up: gtroff Reference
-
-5.6 Registers
-=============
-
-Numeric variables in 'gtroff' are called "registers".  There are a
-number of built-in registers, supplying anything from the date to
-details of formatting parameters.
-
-   *Note Identifiers::, for details on register identifiers.
-
-* Menu:
-
-* Setting Registers::
-* Interpolating Registers::
-* Auto-increment::
-* Assigning Formats::
-* Built-in Registers::
-
-\1f
-File: groff.info,  Node: Setting Registers,  Next: Interpolating Registers,  Prev: Registers,  Up: Registers
-
-5.6.1 Setting Registers
------------------------
-
-Define or set registers using the 'nr' request or the '\R' escape.
-
-   Although the following requests and escapes can be used to create
-registers, simply using an undefined register will cause it to be set to
-zero.
-
- -- Request: .nr ident value
- -- Escape: \R'ident value'
-     Set number register IDENT to VALUE.  If IDENT doesn't exist,
-     'gtroff' creates it.
-
-     The argument to '\R' usually has to be enclosed in quotes.  *Note
-     Escapes::, for details on parameter delimiting characters.
-
-     The '\R' escape doesn't produce an input token in 'gtroff'; in
-     other words, it vanishes completely after 'gtroff' has processed
-     it.
-
-     For example, the following two lines are equivalent:
-
-          .nr a (((17 + (3 * 4))) % 4)
-          \R'a (((17 + (3 * 4))) % 4)'
-              => 1
-
-     Note that the complete transparency of '\R' can cause surprising
-     effects if you use number registers like '.k', which get evaluated
-     at the time they are accessed.
-
-          .ll 1.6i
-          .
-          aaa bbb ccc ddd eee fff ggg hhh\R':k \n[.k]'
-          .tm :k == \n[:k]
-              => :k == 126950
-          .
-          .br
-          .
-          aaa bbb ccc ddd eee fff ggg hhh\h'0'\R':k \n[.k]'
-          .tm :k == \n[:k]
-              => :k == 15000
-
-     If you process this with the POSTSCRIPT device ('-Tps'), there will
-     be a line break eventually after 'ggg' in both input lines.
-     However, after processing the space after 'ggg', the partially
-     collected line is not overfull yet, so 'troff' continues to collect
-     input until it sees the space (or in this case, the newline) after
-     'hhh'.  At this point, the line is longer than the line length, and
-     the line gets broken.
-
-     In the first input line, since the '\R' escape leaves no traces,
-     the check for the overfull line hasn't been done yet at the point
-     where '\R' gets handled, and you get a value for the '.k' number
-     register that is even greater than the current line length.
-
-     In the second input line, the insertion of '\h'0'' to emit an
-     invisible zero-width space forces 'troff' to check the line length,
-     which in turn causes the start of a new output line.  Now '.k'
-     returns the expected value.
-
-   Both 'nr' and '\R' have two additional special forms to increment or
-decrement a register.
-
- -- Request: .nr ident +value
- -- Request: .nr ident -value
- -- Escape: \R'ident +value'
- -- Escape: \R'ident -value'
-     Increment (decrement) register IDENT by VALUE.
-
-          .nr a 1
-          .nr a +1
-          \na
-              => 2
-
-     To assign the negated value of a register to another register, some
-     care must be taken to get the desired result:
-
-          .nr a 7
-          .nr b 3
-          .nr a -\nb
-          \na
-              => 4
-          .nr a (-\nb)
-          \na
-              => -3
-
-     The surrounding parentheses prevent the interpretation of the minus
-     sign as a decrementing operator.  An alternative is to start the
-     assignment with a '0':
-
-          .nr a 7
-          .nr b -3
-          .nr a \nb
-          \na
-              => 4
-          .nr a 0\nb
-          \na
-              => -3
-
- -- Request: .rr ident
-     Remove number register IDENT.  If IDENT doesn't exist, the request
-     is ignored.
-
- -- Request: .rnn ident1 ident2
-     Rename number register IDENT1 to IDENT2.  If either IDENT1 or
-     IDENT2 doesn't exist, the request is ignored.
-
- -- Request: .aln ident1 ident2
-     Create an alias IDENT1 for a number register IDENT2.  The new name
-     and the old name are exactly equivalent.  If IDENT1 is undefined, a
-     warning of type 'reg' is generated, and the request is ignored.
-     *Note Debugging::, for information about warnings.
-
-\1f
-File: groff.info,  Node: Interpolating Registers,  Next: Auto-increment,  Prev: Setting Registers,  Up: Registers
-
-5.6.2 Interpolating Registers
------------------------------
-
-Numeric registers can be accessed via the '\n' escape.
-
- -- Escape: \ni
- -- Escape: \n(id
- -- Escape: \n[ident]
-     Interpolate number register with name IDENT (one-character name I,
-     two-character name ID).  This means that the value of the register
-     is expanded in-place while 'gtroff' is parsing the input line.
-     Nested assignments (also called indirect assignments) are possible.
-
-          .nr a 5
-          .nr as \na+\na
-          \n(as
-              => 10
-
-          .nr a1 5
-          .nr ab 6
-          .ds str b
-          .ds num 1
-          \n[a\n[num]]
-              => 5
-          \n[a\*[str]]
-              => 6
-
-\1f
-File: groff.info,  Node: Auto-increment,  Next: Assigning Formats,  Prev: Interpolating Registers,  Up: Registers
-
-5.6.3 Auto-increment
---------------------
-
-Number registers can also be auto-incremented and auto-decremented.  The
-increment or decrement value can be specified with a third argument to
-the 'nr' request or '\R' escape.
-
- -- Request: .nr ident value incr
-     Set number register IDENT to VALUE; the increment for
-     auto-incrementing is set to INCR.  Note that the '\R' escape
-     doesn't support this notation.
-
-   To activate auto-incrementing, the escape '\n' has a special syntax
-form.
-
- -- Escape: \n+i
- -- Escape: \n-i
- -- Escape: \n(+id
- -- Escape: \n(-id
- -- Escape: \n+(id
- -- Escape: \n-(id
- -- Escape: \n[+ident]
- -- Escape: \n[-ident]
- -- Escape: \n+[ident]
- -- Escape: \n-[ident]
-     Before interpolating, increment or decrement IDENT (one-character
-     name I, two-character name ID) by the auto-increment value as
-     specified with the 'nr' request (or the '\R' escape).  If no
-     auto-increment value has been specified, these syntax forms are
-     identical to '\n'.
-
-   For example,
-
-     .nr a 0 1
-     .nr xx 0 5
-     .nr foo 0 -2
-     \n+a, \n+a, \n+a, \n+a, \n+a
-     .br
-     \n-(xx, \n-(xx, \n-(xx, \n-(xx, \n-(xx
-     .br
-     \n+[foo], \n+[foo], \n+[foo], \n+[foo], \n+[foo]
-
-produces
-
-     1, 2, 3, 4, 5
-     -5, -10, -15, -20, -25
-     -2, -4, -6, -8, -10
-
-   To change the increment value without changing the value of a
-register (A in the example), the following can be used:
-
-     .nr a \na 10
-
-\1f
-File: groff.info,  Node: Assigning Formats,  Next: Built-in Registers,  Prev: Auto-increment,  Up: Registers
-
-5.6.4 Assigning Formats
------------------------
-
-When a register is used, it is always textually replaced (or
-interpolated) with a representation of that number.  This output format
-can be changed to a variety of formats (numbers, Roman numerals, etc.).
-This is done using the 'af' request.
-
- -- Request: .af ident format
-     Change the output format of a number register.  The first argument
-     IDENT is the name of the number register to be changed, and the
-     second argument FORMAT is the output format.  The following output
-     formats are available:
-
-     '1'
-          Decimal arabic numbers.  This is the default format: 0, 1, 2,
-          3, ...
-
-     '0...0'
-          Decimal numbers with as many digits as specified.  So, '00'
-          would result in printing numbers as 01, 02, 03, ...
-
-          In fact, any digit instead of zero does work; 'gtroff' only
-          counts how many digits are specified.  As a consequence,
-          'af''s default format '1' could be specified as '0' also (and
-          exactly this is returned by the '\g' escape, see below).
-
-     'I'
-          Upper-case Roman numerals: 0, I, II, III, IV, ...
-
-     'i'
-          Lower-case Roman numerals: 0, i, ii, iii, iv, ...
-
-     'A'
-          Upper-case letters: 0, A, B, C, ..., Z, AA, AB, ...
-
-     'a'
-          Lower-case letters: 0, a, b, c, ..., z, aa, ab, ...
-
-     Omitting the number register format causes a warning of type
-     'missing'.  *Note Debugging::, for more details.  Specifying a
-     nonexistent format causes an error.
-
-     The following example produces '10, X, j, 010':
-
-          .nr a 10
-          .af a 1           \" the default format
-          \na,
-          .af a I
-          \na,
-          .af a a
-          \na,
-          .af a 001
-          \na
-
-     The largest number representable for the 'i' and 'I' formats is
-     39999 (or -39999); UNIX 'troff' uses 'z' and 'w' to represent 10000
-     and 5000 in Roman numerals, and so does 'gtroff'.  Currently, the
-     correct glyphs of Roman numeral five thousand and Roman numeral ten
-     thousand (Unicode code points 'U+2182' and 'U+2181', respectively)
-     are not available.
-
-     If IDENT doesn't exist, it is created.
-
-     Changing the output format of a read-only register causes an error.
-     It is necessary to first copy the register's value to a writeable
-     register, then apply the 'af' request to this other register.
-
- -- Escape: \gi
- -- Escape: \g(id
- -- Escape: \g[ident]
-     Return the current format of the specified register IDENT
-     (one-character name I, two-character name ID).  For example, '\ga'
-     after the previous example would produce the string '000'.  If the
-     register hasn't been defined yet, nothing is returned.
-
-\1f
-File: groff.info,  Node: Built-in Registers,  Prev: Assigning Formats,  Up: Registers
-
-5.6.5 Built-in Registers
-------------------------
-
-The following lists some built-in registers that are not described
-elsewhere in this manual.  Any register that begins with a '.' is
-read-only.  A complete listing of all built-in registers can be found in
-*note Register Index::.
-
-'\n[.F]'
-     This string-valued register returns the current input file name.
-
-'\n[.H]'
-     Horizontal resolution in basic units.
-
-'\n[.R]'
-     The number of number registers available.  This is always 10000 in
-     GNU 'troff'; it exists for backward compatibility.
-
-'\n[.U]'
-     If 'gtroff' is called with the '-U' command line option to activate
-     unsafe mode, the number register '.U' is set to 1, and to zero
-     otherwise.  *Note Groff Options::.
-
-'\n[.V]'
-     Vertical resolution in basic units.
-
-'\n[seconds]'
-     The number of seconds after the minute, normally in the range 0
-     to 59, but can be up to 61 to allow for leap seconds.  Initialized
-     at start-up of 'gtroff'.
-
-'\n[minutes]'
-     The number of minutes after the hour, in the range 0 to 59.
-     Initialized at start-up of 'gtroff'.
-
-'\n[hours]'
-     The number of hours past midnight, in the range 0 to 23.
-     Initialized at start-up of 'gtroff'.
-
-'\n[dw]'
-     Day of the week (1-7).
-
-'\n[dy]'
-     Day of the month (1-31).
-
-'\n[mo]'
-     Current month (1-12).
-
-'\n[year]'
-     The current year.
-
-'\n[yr]'
-     The current year minus 1900.  Unfortunately, the documentation of
-     UNIX Version 7's 'troff' had a year 2000 bug: It incorrectly
-     claimed that 'yr' contains the last two digits of the year.  That
-     claim has never been true of either AT&T 'troff' or GNU 'troff'.
-     Old 'troff' input that looks like this:
-
-          '\" The following line stopped working after 1999
-          This document was formatted in 19\n(yr.
-
-     can be corrected as follows:
-
-          This document was formatted in \n[year].
-
-     or, to be portable to older 'troff' versions, as follows:
-
-          .nr y4 1900+\n(yr
-          This document was formatted in \n(y4.
-
-'\n[.c]'
-'\n[c.]'
-     The current _input_ line number.  Register '.c' is read-only,
-     whereas 'c.' (a 'gtroff' extension) is writable also, affecting
-     both '.c' and 'c.'.
-
-'\n[ln]'
-     The current _output_ line number after a call to the 'nm' request
-     to activate line numbering.
-
-     *Note Miscellaneous::, for more information about line numbering.
-
-'\n[.x]'
-     The major version number.  For example, if the version number is
-     1.03 then '.x' contains '1'.
-
-'\n[.y]'
-     The minor version number.  For example, if the version number is
-     1.03 then '.y' contains '03'.
-
-'\n[.Y]'
-     The revision number of 'groff'.
-
-'\n[$$]'
-     The process ID of 'gtroff'.
-
-'\n[.g]'
-     Always 1.  Macros should use this to determine whether they are
-     running under GNU 'troff'.
-
-'\n[.A]'
-     If the command line option '-a' is used to produce an ASCII
-     approximation of the output, this is set to 1, zero otherwise.
-     *Note Groff Options::.
-
-'\n[.O]'
-     This read-only register is set to the suppression nesting level
-     (see escapes '\O').  *Note Suppressing output::.
-
-'\n[.P]'
-     This register is set to 1 (and to 0 otherwise) if the current page
-     is actually being printed, i.e., if the '-o' option is being used
-     to only print selected pages.  *Note Groff Options::, for more
-     information.
-
-'\n[.T]'
-     If 'gtroff' is called with the '-T' command line option, the number
-     register '.T' is set to 1, and zero otherwise.  *Note Groff
-     Options::.
-
-'\*[.T]'
-     A single read-write string register that contains the current
-     output device (for example, 'latin1' or 'ps').  This is the only
-     string register defined by 'gtroff'.
-
-\1f
-File: groff.info,  Node: Manipulating Filling and Adjusting,  Next: Manipulating Hyphenation,  Prev: Registers,  Up: gtroff Reference
-
-5.7 Manipulating Filling and Adjusting
-======================================
-
-Various ways of causing "breaks" were given in *note Implicit Line
-Breaks::.  The 'br' request likewise causes a break.  Several other
-requests also cause breaks, but implicitly.  These are 'bp', 'ce', 'cf',
-'fi', 'fl', 'in', 'nf', 'rj', 'sp', 'ti', and 'trf'.
-
- -- Request: .br
-     Break the current line, i.e., the input collected so far is emitted
-     without adjustment.
-
-     If the no-break control character is used, 'gtroff' suppresses the
-     break:
-
-          a
-          'br
-          b
-              => a b
-
-   Initially, 'gtroff' fills and adjusts text to both margins.  Filling
-can be disabled via the 'nf' request and re-enabled with the 'fi'
-request.
-
- -- Request: .fi
- -- Register: \n[.u]
-     Activate fill mode (which is the default).  This request implicitly
-     enables adjusting; it also inserts a break in the text currently
-     being filled.  The read-only number register '.u' is set to 1.
-
-     The fill mode status is associated with the current environment
-     (*note Environments::).
-
-     See *note Line Control::, for interaction with the '\c' escape.
-
- -- Request: .nf
-     Activate no-fill mode.  Input lines are output as-is, retaining
-     line breaks and ignoring the current line length.  This command
-     implicitly disables adjusting; it also causes a break.  The number
-     register '.u' is set to 0.
-
-     The fill mode status is associated with the current environment
-     (*note Environments::).
-
-     See *note Line Control::, for interaction with the '\c' escape.
-
- -- Request: .ad [mode]
- -- Register: \n[.j]
-     Set adjusting mode.
-
-     Activation and deactivation of adjusting is done implicitly with
-     calls to the 'fi' or 'nf' requests.
-
-     MODE can have one of the following values:
-
-     'l'
-          Adjust text to the left margin.  This produces what is
-          traditionally called ragged-right text.
-
-     'r'
-          Adjust text to the right margin, producing ragged-left text.
-
-     'c'
-          Center filled text.  This is different to the 'ce' request,
-          which only centers text without filling.
-
-     'b'
-     'n'
-          Justify to both margins.  This is the default used by
-          'gtroff'.
-
-     Finally, MODE can be the numeric argument returned by the '.j'
-     register.
-
-     Using 'ad' without argument is the same as saying '.ad \[.j]'.  In
-     particular, 'gtroff' adjusts lines in the same way it did before
-     adjusting was deactivated (with a call to 'na', say).  For example,
-     this input code
-
-          .de AD
-          .  br
-          .  ad \\$1
-          ..
-          .
-          .de NA
-          .  br
-          .  na
-          ..
-          .
-          textA
-          .AD r
-          .nr ad \n[.j]
-          textB
-          .AD c
-          textC
-          .NA
-          textD
-          .AD         \" back to centering
-          textE
-          .AD \n[ad]  \" back to right justifying
-          textF
-
-     produces the following output:
-
-          textA
-                                                              textB
-                                    textC
-          textD
-                                    textE
-                                                              textF
-
-     As just demonstrated, the current adjustment mode is available in
-     the read-only number register '.j'; it can be stored and
-     subsequently used to set adjustment.
-
-     The adjustment mode status is associated with the current
-     environment (*note Environments::).
-
- -- Request: .na
-     Disable adjusting.  This request won't change the current
-     adjustment mode: A subsequent call to 'ad' uses the previous
-     adjustment setting.
-
-     The adjustment mode status is associated with the current
-     environment (*note Environments::).
-
- -- Request: .brp
- -- Escape: \p
-     Adjust the current line and cause a break.
-
-     In most cases this produces very ugly results since 'gtroff'
-     doesn't have a sophisticated paragraph building algorithm (as TeX
-     have, for example); instead, 'gtroff' fills and adjusts a paragraph
-     line by line:
-
-          This is an uninteresting sentence.
-          This is an uninteresting sentence.\p
-          This is an uninteresting sentence.
-
-     is formatted as
-
-          This is  an uninteresting  sentence.   This  is an
-          uninteresting                            sentence.
-          This is an uninteresting sentence.
-
- -- Request: .ss word_space_size [sentence_space_size]
- -- Register: \n[.ss]
- -- Register: \n[.sss]
-     Change the size of a space between words.  It takes its units as
-     one twelfth of the space width parameter for the current font.
-     Initially both the WORD_SPACE_SIZE and SENTENCE_SPACE_SIZE are 12.
-     In fill mode, the values specify the minimum distance.
-
-     If two arguments are given to the 'ss' request, the second argument
-     sets the sentence space size.  If the second argument is not given,
-     sentence space size is set to WORD_SPACE_SIZE.  The sentence space
-     size is used in two circumstances: If the end of a sentence occurs
-     at the end of a line in fill mode, then both an inter-word space
-     and a sentence space are added; if two spaces follow the end of a
-     sentence in the middle of a line, then the second space is a
-     sentence space.  If a second argument is never given to the 'ss'
-     request, the behaviour of UNIX 'troff' is the same as that
-     exhibited by GNU 'troff'.  In GNU 'troff', as in UNIX 'troff', a
-     sentence should always be followed by either a newline or two
-     spaces.
-
-     The read-only number registers '.ss' and '.sss' hold the values of
-     the parameters set by the first and second arguments of the 'ss'
-     request.
-
-     The word space and sentence space values are associated with the
-     current environment (*note Environments::).
-
-     Contrary to AT&T 'troff', this request is _not_ ignored if a TTY
-     output device is used; the given values are then rounded down to a
-     multiple of 12 (*note Implementation Differences::).
-
-     The request is ignored if there is no parameter.
-
-     Another useful application of the 'ss' request is to insert
-     discardable horizontal space, i.e., space that is discarded at a
-     line break.  For example, paragraph-style footnotes could be
-     separated this way:
-
-          .ll 4.5i
-          1.\ This is the first footnote.\c
-          .ss 48
-          .nop
-          .ss 12
-          2.\ This is the second footnote.
-
-     The result:
-
-          1. This is the first footnote.        2. This
-          is the second footnote.
-
-     Note that the '\h' escape produces unbreakable space.
-
- -- Request: .ce [nnn]
- -- Register: \n[.ce]
-     Center text.  While the '.ad c' request also centers text, it fills
-     the text as well.  'ce' does not fill the text it affects.  This
-     request causes a break.  The number of lines still to be centered
-     is associated with the current environment (*note Environments::).
-
-     The following example demonstrates the differences.  Here the
-     input:
-
-          .ll 4i
-          .ce 1000
-          This is a small text fragment that shows the differences
-          between the `.ce' and the `.ad c' request.
-          .ce 0
-
-          .ad c
-          This is a small text fragment that shows the differences
-          between the `.ce' and the `.ad c' request.
-
-     And here the result:
-
-            This is a small text fragment that
-                   shows the differences
-          between the `.ce' and the `.ad c' request.
-
-            This is a small text fragment that
-          shows the differences between the `.ce'
-                  and the `.ad c' request.
-
-     With no arguments, 'ce' centers the next line of text.  NNN
-     specifies the number of lines to be centered.  If the argument is
-     zero or negative, centering is disabled.
-
-     The basic length for centering text is the line length (as set with
-     the 'll' request) minus the indentation (as set with the 'in'
-     request).  Temporary indentation is ignored.
-
-     As can be seen in the previous example, it is a common idiom to
-     turn on centering for a large number of lines, and to turn off
-     centering after text to be centered.  This is useful for any
-     request that takes a number of lines as an argument.
-
-     The '.ce' read-only number register contains the number of lines
-     remaining to be centered, as set by the 'ce' request.
-
- -- Request: .rj [nnn]
- -- Register: \n[.rj]
-     Justify unfilled text to the right margin.  Arguments are identical
-     to the 'ce' request.  The '.rj' read-only number register is the
-     number of lines to be right-justified as set by the 'rj' request.
-     This request causes a break.  The number of lines still to be
-     right-justified is associated with the current environment (*note
-     Environments::).
-
-\1f
-File: groff.info,  Node: Manipulating Hyphenation,  Next: Manipulating Spacing,  Prev: Manipulating Filling and Adjusting,  Up: gtroff Reference
-
-5.8 Manipulating Hyphenation
-============================
-
-Here a description of requests that influence hyphenation.
-
- -- Request: .hy [mode]
- -- Register: \n[.hy]
-     Enable hyphenation.  The request has an optional numeric argument,
-     MODE, to restrict hyphenation if necessary:
-
-     '1'
-          The default argument if MODE is omitted.  Hyphenate without
-          restrictions.  This is also the start-up value of 'gtroff'.
-
-     '2'
-          Do not hyphenate the last word on a page or column.
-
-     '4'
-          Do not hyphenate the last two characters of a word.
-
-     '8'
-          Do not hyphenate the first two characters of a word.
-
-     Values in the previous table are additive.  For example, the
-     value 12 causes 'gtroff' to neither hyphenate the last two nor the
-     first two characters of a word.
-
-     The current hyphenation restrictions can be found in the read-only
-     number register '.hy'.
-
-     The hyphenation mode is associated with the current environment
-     (*note Environments::).
-
- -- Request: .nh
-     Disable hyphenation (i.e., set the hyphenation mode to zero).  Note
-     that the hyphenation mode of the last call to 'hy' is not
-     remembered.
-
-     The hyphenation mode is associated with the current environment
-     (*note Environments::).
-
- -- Request: .hlm [nnn]
- -- Register: \n[.hlm]
- -- Register: \n[.hlc]
-     Set the maximum number of consecutive hyphenated lines to NNN.  If
-     this number is negative, there is no maximum.  The default value
-     is -1 if NNN is omitted.  This value is associated with the current
-     environment (*note Environments::).  Only lines output from a given
-     environment count towards the maximum associated with that
-     environment.  Hyphens resulting from '\%' are counted; explicit
-     hyphens are not.
-
-     The current setting of 'hlm' is available in the '.hlm' read-only
-     number register.  Also the number of immediately preceding
-     consecutive hyphenated lines are available in the read-only number
-     register '.hlc'.
-
- -- Request: .hw word1 word2 ...
-     Define how WORD1, WORD2, etc. are to be hyphenated.  The words must
-     be given with hyphens at the hyphenation points.  For example:
-
-          .hw in-sa-lub-rious
-
-     Besides the space character, any character whose hyphenation code
-     value is zero can be used to separate the arguments of 'hw' (see
-     the documentation for the 'hcode' request below for more
-     information).  In addition, this request can be used more than
-     once.
-
-     Hyphenation exceptions specified with the 'hw' request are
-     associated with the current hyphenation language; it causes an
-     error if there is no current hyphenation language.
-
-     This request is ignored if there is no parameter.
-
-     In old versions of 'troff' there was a limited amount of space to
-     store such information; fortunately, with 'gtroff', this is no
-     longer a restriction.
-
- -- Escape: \%
- -- Escape: \:
-     To tell 'gtroff' how to hyphenate words on the fly, use the '\%'
-     escape, also known as the "hyphenation character".  Preceding a
-     word with this character prevents it from being hyphenated; putting
-     it inside a word indicates to 'gtroff' that the word may be
-     hyphenated at that point.  Note that this mechanism only affects
-     that one occurrence of the word; to change the hyphenation of a
-     word for the entire document, use the 'hw' request.
-
-     The '\:' escape inserts a zero-width break point (that is, the word
-     breaks but without adding a hyphen).
-
-          ... check the /var/log/\:httpd/\:access_log file ...
-
-     Note that '\X' and '\Y' start a word, that is, the '\%' escape in
-     (say) '\X'...'\%foobar' and '\Y'...'\%foobar' no longer prevents
-     hyphenation but inserts a hyphenation point at the beginning of
-     'foobar'; most likely this isn't what you want to do.
-
- -- Request: .hc [char]
-     Change the hyphenation character to CHAR.  This character then
-     works the same as the '\%' escape, and thus, no longer appears in
-     the output.  Without an argument, 'hc' resets the hyphenation
-     character to be '\%' (the default) only.
-
-     The hyphenation character is associated with the current
-     environment (*note Environments::).
-
- -- Request: .hpf pattern_file
- -- Request: .hpfa pattern_file
- -- Request: .hpfcode a b [c d ...]
-     Read in a file of hyphenation patterns.  This file is searched for
-     in the same way as 'NAME.tmac' (or 'tmac.NAME') is searched for if
-     the '-mNAME' option is specified.
-
-     It should have the same format as (simple) TeX patterns files.
-     More specifically, the following scanning rules are implemented.
-
-        * A percent sign starts a comment (up to the end of the line)
-          even if preceded by a backslash.
-
-        * No support for 'digraphs' like '\$'.
-
-        * '^^XX' (X is 0-9 or a-f) and '^^X' (character code of X in the
-          range 0-127) are recognized; other use of '^' causes an error.
-
-        * No macro expansion.
-
-        * 'hpf' checks for the expression '\patterns{...}' (possibly
-          with whitespace before and after the braces).  Everything
-          between the braces is taken as hyphenation patterns.
-          Consequently, '{' and '}' are not allowed in patterns.
-
-        * Similarly, '\hyphenation{...}' gives a list of hyphenation
-          exceptions.
-
-        * '\endinput' is recognized also.
-
-        * For backwards compatibility, if '\patterns' is missing, the
-          whole file is treated as a list of hyphenation patterns (only
-          recognizing the '%' character as the start of a comment).
-
-     If no 'hpf' request is specified (either in the document or in a
-     macro package), 'gtroff' won't hyphenate at all.
-
-     The 'hpfa' request appends a file of patterns to the current list.
-
-     The 'hpfcode' request defines mapping values for character codes in
-     hyphenation patterns.  'hpf' or 'hpfa' then apply the mapping
-     (after reading the patterns) before replacing or appending them to
-     the current list of patterns.  Its arguments are pairs of character
-     codes - integers from 0 to 255.  The request maps character code A
-     to code B, code C to code D, and so on.  You can use character
-     codes that would be invalid otherwise.  By default, everything maps
-     to itself except letters 'A' to 'Z', which map to 'a' to 'z'.
-
-     The set of hyphenation patterns is associated with the current
-     language set by the 'hla' request.  The 'hpf' request is usually
-     invoked by the 'troffrc' or 'troffrc-end' file; by default,
-     'troffrc' loads hyphenation patterns and exceptions for American
-     English (in files 'hyphen.us' and 'hyphenex.us').
-
-     A second call to 'hpf' (for the same language) replaces the
-     hyphenation patterns with the new ones.
-
-     Invoking 'hpf' causes an error if there is no current hyphenation
-     language.
-
- -- Request: .hcode c1 code1 [c2 code2 ...]
-     Set the hyphenation code of character C1 to CODE1, that of C2 to
-     CODE2, etc.  A hyphenation code must be a single input character
-     (not a special character) other than a digit or a space.
-
-     To make hyphenation work, hyphenation codes must be set up.  At
-     start-up, groff only assigns hyphenation codes to the letters
-     'a'-'z' (mapped to themselves) and to the letters 'A'-'Z' (mapped
-     to 'a'-'z'); all other hyphenation codes are set to zero.
-     Normally, hyphenation patterns contain only lowercase letters,
-     which should be applied regardless of case.  In other words, the
-     words 'FOO' and 'Foo' should be hyphenated exactly the same way as
-     the word 'foo' is hyphenated, and this is what 'hcode' is good for.
-     Words that contain other letters won't be hyphenated properly if
-     the corresponding hyphenation patterns actually do contain them.
-     For example, the following 'hcode' requests are necessary to assign
-     hyphenation codes to the letters 'ÄäÖöÜüß' (this is needed for
-     German):
-
-          .hcode ä ä  Ä ä
-          .hcode ö ö  Ö ö
-          .hcode ü ü  Ü ü
-          .hcode ß ß
-
-     Without those assignments, groff treats German words like
-     'Kindergärten' (the plural form of 'kindergarten') as two
-     substrings 'kinderg' and 'rten' because the hyphenation code of the
-     umlaut a is zero by default.  There is a German hyphenation pattern
-     that covers 'kinder', so groff finds the hyphenation 'kin-der'.
-     The other two hyphenation points ('kin-der-gär-ten') are missed.
-
-     This request is ignored if it has no parameter.
-
- -- Request: .hym [length]
- -- Register: \n[.hym]
-     Set the (right) hyphenation margin to LENGTH.  If the current
-     adjustment mode is not 'b' or 'n', the line is not hyphenated if it
-     is shorter than LENGTH.  Without an argument, the hyphenation
-     margin is reset to its default value, which is 0.  The default
-     scaling indicator for this request is 'm'.  The hyphenation margin
-     is associated with the current environment (*note Environments::).
-
-     A negative argument resets the hyphenation margin to zero, emitting
-     a warning of type 'range'.
-
-     The current hyphenation margin is available in the '.hym' read-only
-     number register.
-
- -- Request: .hys [hyphenation_space]
- -- Register: \n[.hys]
-     Set the hyphenation space to HYPHENATION_SPACE.  If the current
-     adjustment mode is 'b' or 'n', don't hyphenate the line if it can
-     be justified by adding no more than HYPHENATION_SPACE extra space
-     to each word space.  Without argument, the hyphenation space is set
-     to its default value, which is 0.  The default scaling indicator
-     for this request is 'm'.  The hyphenation space is associated with
-     the current environment (*note Environments::).
-
-     A negative argument resets the hyphenation space to zero, emitting
-     a warning of type 'range'.
-
-     The current hyphenation space is available in the '.hys' read-only
-     number register.
-
- -- Request: .shc [glyph]
-     Set the "soft hyphen character" to GLYPH.(1)  (*note Manipulating
-     Hyphenation-Footnote-1::) If the argument is omitted, the soft
-     hyphen character is set to the default glyph '\(hy' (this is the
-     start-up value of 'gtroff' also).  The soft hyphen character is the
-     glyph that is inserted when a word is hyphenated at a line break.
-     If the soft hyphen character does not exist in the font of the
-     character immediately preceding a potential break point, then the
-     line is not broken at that point.  Neither definitions (specified
-     with the 'char' request) nor translations (specified with the 'tr'
-     request) are considered when finding the soft hyphen character.
-
- -- Request: .hla language
- -- Register: \n[.hla]
-     Set the current hyphenation language to the string LANGUAGE.
-     Hyphenation exceptions specified with the 'hw' request and
-     hyphenation patterns specified with the 'hpf' and 'hpfa' requests
-     are both associated with the current hyphenation language.  The
-     'hla' request is usually invoked by the 'troffrc' or the
-     'troffrc-end' files; 'troffrc' sets the default language to 'us'.
-
-     The current hyphenation language is available as a string in the
-     read-only number register '.hla'.
-
-          .ds curr_language \n[.hla]
-          \*[curr_language]
-              => us
-
-\1f
-File: groff.info,  Node: Manipulating Hyphenation-Footnotes,  Up: Manipulating Hyphenation
-
-   (1) "Soft hyphen character" is a misnomer since it is an output
-glyph.
-
-\1f
-File: groff.info,  Node: Manipulating Spacing,  Next: Tabs and Fields,  Prev: Manipulating Hyphenation,  Up: gtroff Reference
-
-5.9 Manipulating Spacing
-========================
-
- -- Request: .sp [distance]
-     Space downwards DISTANCE.  With no argument it advances 1 line.  A
-     negative argument causes 'gtroff' to move up the page the specified
-     distance.  If the argument is preceded by a '|' then 'gtroff' moves
-     that distance from the top of the page.  This request causes a line
-     break, and that adds the current line spacing to the space you have
-     just specified.  The default scaling indicator is 'v'.
-
-     For convenience you may wish to use the following macros to set the
-     height of the next line at a given distance from the top or the
-     bottom of the page:
-
-          .de y-from-top-down
-          .  sp |\\$1-\\n[.v]u
-          ..
-          .
-          .de y-from-bot-up
-          .  sp |\\n[.p]u-\\$1-\\n[.v]u
-          ..
-
-     A call to '.y-from-bot-up 10c' means that the bottom of the next
-     line will be at 10cm from the paper edge at the bottom.
-
-     If a vertical trap is sprung during execution of 'sp', the amount
-     of vertical space after the trap is discarded.  For example, this
-
-          .de xxx
-          ..
-          .
-          .wh 0 xxx
-          .
-          .pl 5v
-          foo
-          .sp 2
-          bar
-          .sp 50
-          baz
-
-     results in
-
-          foo
-
-
-          bar
-
-          baz
-
-     The amount of discarded space is available in the number register
-     '.trunc'.
-
-     To protect 'sp' against vertical traps, use the 'vpt' request:
-
-          .vpt 0
-          .sp -3
-          .vpt 1
-
- -- Request: .ls [nnn]
- -- Register: \n[.L]
-     Output NNN-1 blank lines after each line of text.  With no
-     argument, 'gtroff' uses the previous value before the last 'ls'
-     call.
-
-          .ls 2    \" This causes double-spaced output
-          .ls 3    \" This causes triple-spaced output
-          .ls      \" Again double-spaced
-
-     The line spacing is associated with the current environment (*note
-     Environments::).
-
-     The read-only number register '.L' contains the current line
-     spacing setting.
-
-   *Note Changing Type Sizes::, for the requests 'vs' and 'pvs' as
-alternatives to 'ls'.
-
- -- Escape: \x'spacing'
- -- Register: \n[.a]
-     Sometimes, extra vertical spacing is only needed occasionally, e.g.
-     to allow space for a tall construct (like an equation).  The '\x'
-     escape does this.  The escape is given a numerical argument,
-     usually enclosed in quotes (like '\x'3p''); the default scaling
-     indicator is 'v'.  If this number is positive extra vertical space
-     is inserted below the current line.  A negative number adds space
-     above.  If this escape is used multiple times on the same line, the
-     maximum of the values is used.
-
-     *Note Escapes::, for details on parameter delimiting characters.
-
-     The '.a' read-only number register contains the most recent
-     (nonnegative) extra vertical line space.
-
-     Using '\x' can be necessary in combination with the '\b' escape, as
-     the following example shows.
-
-          This is a test with the \[rs]b escape.
-          .br
-          This is a test with the \[rs]b escape.
-          .br
-          This is a test with \b'xyz'\x'-1m'\x'1m'.
-          .br
-          This is a test with the \[rs]b escape.
-          .br
-          This is a test with the \[rs]b escape.
-
-     produces
-
-          This is a test with the \b escape.
-          This is a test with the \b escape.
-                              x
-          This is a test with y.
-                              z
-          This is a test with the \b escape.
-          This is a test with the \b escape.
-
- -- Request: .ns
- -- Request: .rs
- -- Register: \n[.ns]
-     Enable "no-space mode".  In this mode, spacing (either via 'sp' or
-     via blank lines) is disabled.  The 'bp' request to advance to the
-     next page is also disabled, except if it is accompanied by a page
-     number (see *note Page Control::, for more information).  This mode
-     ends when actual text is output or the 'rs' request is encountered,
-     which ends no-space mode.  The read-only number register '.ns' is
-     set to 1 as long as no-space mode is active.
-
-     This request is useful for macros that conditionally insert
-     vertical space before the text starts (for example, a paragraph
-     macro could insert some space except when it is the first paragraph
-     after a section header).
-
-\1f
-File: groff.info,  Node: Tabs and Fields,  Next: Character Translations,  Prev: Manipulating Spacing,  Up: gtroff Reference
-
-5.10 Tabs and Fields
-====================
-
-A tab character (ASCII char 9, EBCDIC char 5) causes a horizontal
-movement to the next tab stop (much like it did on a typewriter).
-
- -- Escape: \t
-     This escape is a non-interpreted tab character.  In copy mode
-     (*note Copy-in Mode::), '\t' is the same as a real tab character.
-
- -- Request: .ta [n1 n2 ... nn T r1 r2 ... rn]
- -- Register: \n[.tabs]
-     Change tab stop positions.  This request takes a series of tab
-     specifiers as arguments (optionally divided into two groups with
-     the letter 'T') that indicate where each tab stop is to be
-     (overriding any previous settings).
-
-     Tab stops can be specified absolutely, i.e., as the distance from
-     the left margin.  For example, the following sets 6 tab stops every
-     one inch.
-
-          .ta 1i 2i 3i 4i 5i 6i
-
-     Tab stops can also be specified using a leading '+', which means
-     that the specified tab stop is set relative to the previous tab
-     stop.  For example, the following is equivalent to the previous
-     example.
-
-          .ta 1i +1i +1i +1i +1i +1i
-
-     'gtroff' supports an extended syntax to specify repeat values after
-     the 'T' mark (these values are always taken as relative) - this is
-     the usual way to specify tabs set at equal intervals.  The
-     following is, yet again, the same as the previous examples.  It
-     does even more since it defines an infinite number of tab stops
-     separated by one inch.
-
-          .ta T 1i
-
-     Now we are ready to interpret the full syntax given at the
-     beginning: Set tabs at positions N1, N2, ..., NN and then set tabs
-     at NN+R1, NN+R2, ..., NN+RN and then at NN+RN+R1, NN+RN+R2, ...,
-     NN+RN+RN, and so on.
-
-     Example: '4c +6c T 3c 5c 2c' is equivalent to '4c 10c 13c 18c 20c
-     23c 28c 30c ...'.
-
-     The material in each tab column (i.e., the column between two tab
-     stops) may be justified to the right or left or centered in the
-     column.  This is specified by appending 'R', 'L', or 'C' to the tab
-     specifier.  The default justification is 'L'.  Example:
-
-          .ta 1i 2iC 3iR
-
-     Some notes:
-
-        * The default unit of the 'ta' request is 'm'.
-
-        * A tab stop is converted into a non-breakable horizontal
-          movement that can be neither stretched nor squeezed.  For
-          example,
-
-               .ds foo a\tb\tc
-               .ta T 5i
-               \*[foo]
-
-          creates a single line, which is a bit longer than 10 inches (a
-          string is used to show exactly where the tab characters are).
-          Now consider the following:
-
-               .ds bar a\tb b\tc
-               .ta T 5i
-               \*[bar]
-
-          'gtroff' first converts the tab stops of the line into
-          unbreakable horizontal movements, then splits the line after
-          the second 'b' (assuming a sufficiently short line length).
-          Usually, this isn't what the user wants.
-
-        * Superfluous tabs (i.e., tab characters that do not correspond
-          to a tab stop) are ignored except the first one, which
-          delimits the characters belonging to the last tab stop for
-          right-justifying or centering.  Consider the following example
-
-               .ds Z   foo\tbar\tfoo
-               .ds ZZ  foo\tbar\tfoobar
-               .ds ZZZ foo\tbar\tfoo\tbar
-               .ta 2i 4iR
-               \*[Z]
-               .br
-               \*[ZZ]
-               .br
-               \*[ZZZ]
-               .br
-
-          which produces the following output:
-
-               foo                 bar              foo
-               foo                 bar           foobar
-               foo                 bar              foobar
-
-          The first line right-justifies the second 'foo' relative to
-          the tab stop.  The second line right-justifies 'foobar'.  The
-          third line finally right-justifies only 'foo' because of the
-          additional tab character, which marks the end of the string
-          belonging to the last defined tab stop.
-
-        * Tab stops are associated with the current environment (*note
-          Environments::).
-
-        * Calling 'ta' without an argument removes all tab stops.
-
-        * The start-up value of 'gtroff' is 'T 0.8i'.
-
-     The read-only number register '.tabs' contains a string
-     representation of the current tab settings suitable for use as an
-     argument to the 'ta' request.
-
-          .ds tab-string \n[.tabs]
-          \*[tab-string]
-              => T120u
-
-     The 'troff' version of the Plan 9 operating system uses register
-     '.S' for the same purpose.
-
- -- Request: .tc [fill-glyph]
-     Normally 'gtroff' fills the space to the next tab stop with
-     whitespace.  This can be changed with the 'tc' request.  With no
-     argument 'gtroff' reverts to using whitespace, which is the
-     default.  The value of this "tab repetition character" is
-     associated with the current environment (*note Environments::).(1)
-     (*note Tabs and Fields-Footnote-1::)
-
- -- Request: .linetabs n
- -- Register: \n[.linetabs]
-     If N is missing or not zero, enable "line-tabs" mode, or disable it
-     otherwise (the default).  In line-tabs mode, 'gtroff' computes tab
-     distances relative to the (current) output line instead of the
-     input line.
-
-     For example, the following code:
-
-          .ds x a\t\c
-          .ds y b\t\c
-          .ds z c
-          .ta 1i 3i
-          \*x
-          \*y
-          \*z
-
-     in normal mode, results in the output
-
-          a         b         c
-
-     in line-tabs mode, the same code outputs
-
-          a         b                   c
-
-     Line-tabs mode is associated with the current environment.  The
-     read-only register '.linetabs' is set to 1 if in line-tabs mode,
-     and 0 in normal mode.
-
-* Menu:
-
-* Leaders::
-* Fields::
-
-\1f
-File: groff.info,  Node: Tabs and Fields-Footnotes,  Up: Tabs and Fields
-
-   (1) "Tab repetition character" is a misnomer since it is an output
-glyph.
-
-\1f
-File: groff.info,  Node: Leaders,  Next: Fields,  Prev: Tabs and Fields,  Up: Tabs and Fields
-
-5.10.1 Leaders
---------------
-
-Sometimes it may may be desirable to use the 'tc' request to fill a
-particular tab stop with a given glyph (for example dots in a table of
-contents), but also normal tab stops on the rest of the line.  For this
-'gtroff' provides an alternate tab mechanism, called "leaders", which
-does just that.
-
-   A leader character (character code 1) behaves similarly to a tab
-character: It moves to the next tab stop.  The only difference is that
-for this movement, the fill glyph defaults to a period character and not
-to space.
-
- -- Escape: \a
-     This escape is a non-interpreted leader character.  In copy mode
-     (*note Copy-in Mode::), '\a' is the same as a real leader
-     character.
-
- -- Request: .lc [fill-glyph]
-     Declare the "leader repetition character".(1)  (*note
-     Leaders-Footnote-1::) Without an argument, leaders act the same as
-     tabs (i.e., using whitespace for filling).  'gtroff''s start-up
-     value is a dot ('.').  The value of the leader repetition character
-     is associated with the current environment (*note Environments::).
-
-   For a table of contents, to name an example, tab stops may be defined
-so that the section number is one tab stop, the title is the second with
-the remaining space being filled with a line of dots, and then the page
-number slightly separated from the dots.
-
-     .ds entry 1.1\tFoo\a\t12
-     .lc .
-     .ta 1i 5i +.25i
-     \*[entry]
-
-This produces
-
-     1.1  Foo..........................................  12
-
-\1f
-File: groff.info,  Node: Leaders-Footnotes,  Up: Leaders
-
-   (1) "Leader repetition character" is a misnomer since it is an output
-glyph.
-
-\1f
-File: groff.info,  Node: Fields,  Prev: Leaders,  Up: Tabs and Fields
-
-5.10.2 Fields
--------------
-
-"Fields" are a more general way of laying out tabular data.  A field is
-defined as the data between a pair of "delimiting characters".  It
-contains substrings that are separated by "padding characters".  The
-width of a field is the distance on the _input_ line from the position
-where the field starts to the next tab stop.  A padding character
-inserts stretchable space similar to TeX's '\hss' command (thus it can
-even be negative) to make the sum of all substring lengths plus the
-stretchable space equal to the field width.  If more than one padding
-character is inserted, the available space is evenly distributed among
-them.
-
- -- Request: .fc [delim-char [padding-char]]
-     Define a delimiting and a padding character for fields.  If the
-     latter is missing, the padding character defaults to a space
-     character.  If there is no argument at all, the field mechanism is
-     disabled (which is the default).  Note that contrary to e.g. the
-     tab repetition character, delimiting and padding characters are
-     _not_ associated to the current environment (*note Environments::).
-
-     Example:
-
-          .fc # ^
-          .ta T 3i
-          #foo^bar^smurf#
-          .br
-          #foo^^bar^smurf#
-
-     and here the result:
-
-          foo         bar          smurf
-          foo            bar       smurf
-
-\1f
-File: groff.info,  Node: Character Translations,  Next: Troff and Nroff Mode,  Prev: Tabs and Fields,  Up: gtroff Reference
-
-5.11 Character Translations
-===========================
-
-The control character ('.') and the no-break control character (''') can
-be changed with the 'cc' and 'c2' requests, respectively.
-
- -- Request: .cc [c]
-     Set the control character to C.  With no argument the default
-     control character '.' is restored.  The value of the control
-     character is associated with the current environment (*note
-     Environments::).
-
- -- Request: .c2 [c]
-     Set the no-break control character to C.  With no argument the
-     default control character ''' is restored.  The value of the
-     no-break control character is associated with the current
-     environment (*note Environments::).
-
-   *Note Requests::.
-
- -- Request: .eo
-     Disable the escape mechanism completely.  After executing this
-     request, the backslash character '\' no longer starts an escape
-     sequence.
-
-     This request can be very helpful in writing macros since it is not
-     necessary then to double the escape character.  Here an example:
-
-          .\" This is a simplified version of the
-          .\" .BR request from the man macro package
-          .eo
-          .de BR
-          .  ds result \&
-          .  while (\n[.$] >= 2) \{\
-          .    as result \fB\$1\fR\$2
-          .    shift 2
-          .  \}
-          .  if \n[.$] .as result \fB\$1
-          \*[result]
-          .  ft R
-          ..
-          .ec
-
- -- Request: .ec [c]
-     Set the escape character to C.  With no argument the default escape
-     character '\' is restored.  It can be also used to re-enable the
-     escape mechanism after an 'eo' request.
-
-     Note that changing the escape character globally likely breaks
-     macro packages since 'gtroff' has no mechanism to 'intern' macros,
-     i.e., to convert a macro definition into an internal form that is
-     independent of its representation (TeX has this mechanism).  If a
-     macro is called, it is executed literally.
-
- -- Request: .ecs
- -- Request: .ecr
-     The 'ecs' request saves the current escape character in an internal
-     register.  Use this request in combination with the 'ec' request to
-     temporarily change the escape character.
-
-     The 'ecr' request restores the escape character saved with 'ecs'.
-     Without a previous call to 'ecs', this request sets the escape
-     character to '\'.
-
- -- Escape: \\
- -- Escape: \e
- -- Escape: \E
-     Print the current escape character (which is the backslash
-     character '\' by default).
-
-     '\\' is a 'delayed' backslash; more precisely, it is the default
-     escape character followed by a backslash, which no longer has
-     special meaning due to the leading escape character.  It is _not_
-     an escape sequence in the usual sense!  In any unknown escape
-     sequence '\X' the escape character is ignored and X is printed.
-     But if X is equal to the current escape character, no warning is
-     emitted.
-
-     As a consequence, only at top-level or in a diversion a backslash
-     glyph is printed; in copy-in mode, it expands to a single
-     backslash, which then combines with the following character to an
-     escape sequence.
-
-     The '\E' escape differs from '\e' by printing an escape character
-     that is not interpreted in copy mode.  Use this to define strings
-     with escapes that work when used in copy mode (for example, as a
-     macro argument).  The following example defines strings to begin
-     and end a superscript:
-
-          .ds { \v'-.3m'\s'\En[.s]*60/100'
-          .ds } \s0\v'.3m'
-
-     Another example to demonstrate the differences between the various
-     escape sequences, using a strange escape character, '-'.
-
-          .ec -
-          .de xxx
-          --A'123'
-          ..
-          .xxx
-              => -A'foo'
-
-     The result is surprising for most users, expecting '1' since 'foo'
-     is a valid identifier.  What has happened?  As mentioned above, the
-     leading escape character makes the following character ordinary.
-     Written with the default escape character the sequence '--' becomes
-     '\-' - this is the minus sign.
-
-     If the escape character followed by itself is a valid escape
-     sequence, only '\E' yields the expected result:
-
-          .ec -
-          .de xxx
-          -EA'123'
-          ..
-          .xxx
-              => 1
-
- -- Escape: \.
-     Similar to '\\', the sequence '\.' isn't a real escape sequence.
-     As before, a warning message is suppressed if the escape character
-     is followed by a dot, and the dot itself is printed.
-
-          .de foo
-          .  nop foo
-          .
-          .  de bar
-          .    nop bar
-          \\..
-          .
-          ..
-          .foo
-          .bar
-              => foo bar
-
-     The first backslash is consumed while the macro is read, and the
-     second is swallowed while executing macro 'foo'.
-
-   A "translation" is a mapping of an input character to an output
-glyph.  The mapping occurs at output time, i.e., the input character
-gets assigned the metric information of the mapped output character
-right before input tokens are converted to nodes (*note Gtroff
-Internals::, for more on this process).
-
- -- Request: .tr abcd...
- -- Request: .trin abcd...
-     Translate character A to glyph B, character C to glyph D, etc.  If
-     there is an odd number of arguments, the last one is translated to
-     an unstretchable space ('\ ').
-
-     The 'trin' request is identical to 'tr', but when you unformat a
-     diversion with 'asciify' it ignores the translation.  *Note
-     Diversions::, for details about the 'asciify' request.
-
-     Some notes:
-
-        * Special characters ('\(XX', '\[XXX]', '\C'XXX'', '\'', '\`',
-          '\-', '\_'), glyphs defined with the 'char' request, and
-          numbered glyphs ('\N'XXX'') can be translated also.
-
-        * The '\e' escape can be translated also.
-
-        * Characters can be mapped onto the '\%' and '\~' escapes (but
-          '\%' and '\~' can't be mapped onto another glyph).
-
-        * The following characters can't be translated: space (with one
-          exception, see below), backspace, newline, leader (and '\a'),
-          tab (and '\t').
-
-        * Translations are not considered for finding the soft hyphen
-          character set with the 'shc' request.
-
-        * The pair 'C\&' (this is an arbitrary character C followed by
-          the zero width space character) maps this character to
-          nothing.
-
-               .tr a\&
-               foo bar
-                   => foo br
-
-          It is even possible to map the space character to nothing:
-
-               .tr aa \&
-               foo bar
-                   => foobar
-
-          As shown in the example, the space character can't be the
-          first character/glyph pair as an argument of 'tr'.
-          Additionally, it is not possible to map the space character to
-          any other glyph; requests like '.tr aa x' undo '.tr aa \&'
-          instead.
-
-          If justification is active, lines are justified in spite of
-          the 'empty' space character (but there is no minimal distance,
-          i.e. the space character, between words).
-
-        * After an output glyph has been constructed (this happens at
-          the moment immediately before the glyph is appended to an
-          output glyph list, either by direct output, in a macro,
-          diversion, or string), it is no longer affected by 'tr'.
-
-        * Translating character to glyphs where one of them or both are
-          undefined is possible also; 'tr' does not check whether the
-          entities in its argument do exist.
-
-          *Note Gtroff Internals::.
-
-        * 'troff' no longer has a hard-coded dependency on Latin-1; all
-          'charXXX' entities have been removed from the font description
-          files.  This has a notable consequence that shows up in
-          warnings like 'can't find character with input code XXX' if
-          the 'tr' request isn't handled properly.
-
-          Consider the following translation:
-
-               .tr éÉ
-
-          This maps input character 'é' onto glyph 'É', which is
-          identical to glyph 'char201'.  But this glyph intentionally
-          doesn't exist!  Instead, '\[char201]' is treated as an input
-          character entity and is by default mapped onto '\['E]', and
-          'gtroff' doesn't handle translations of translations.
-
-          The right way to write the above translation is
-
-               .tr é\['E]
-
-          In other words, the first argument of 'tr' should be an input
-          character or entity, and the second one a glyph entity.
-
-        * Without an argument, the 'tr' request is ignored.
-
- -- Request: .trnt abcd...
-     'trnt' is the same as the 'tr' request except that the translations
-     do not apply to text that is transparently throughput into a
-     diversion with '\!'.  *Note Diversions::, for more information.
-
-     For example,
-
-          .tr ab
-          .di x
-          \!.tm a
-          .di
-          .x
-
-     prints 'b' to the standard error stream; if 'trnt' is used instead
-     of 'tr' it prints 'a'.
-
-\1f
-File: groff.info,  Node: Troff and Nroff Mode,  Next: Line Layout,  Prev: Character Translations,  Up: gtroff Reference
-
-5.12 Troff and Nroff Mode
-=========================
-
-Originally, 'nroff' and 'troff' were two separate programs, the former
-for TTY output, the latter for everything else.  With GNU 'troff', both
-programs are merged into one executable, sending its output to a device
-driver ('grotty' for TTY devices, 'grops' for POSTSCRIPT, etc.) which
-interprets the intermediate output of 'gtroff'.  For UNIX 'troff' it
-makes sense to talk about "Nroff mode" and "Troff mode" since the
-differences are hardcoded.  For GNU 'troff', this distinction is not
-appropriate because 'gtroff' simply takes the information given in the
-font files for a particular device without handling requests specially
-if a TTY output device is used.
-
-   Usually, a macro package can be used with all output devices.
-Nevertheless, it is sometimes necessary to make a distinction between
-TTY and non-TTY devices: 'gtroff' provides two built-in conditions 'n'
-and 't' for the 'if', 'ie', and 'while' requests to decide whether
-'gtroff' shall behave like 'nroff' or like 'troff'.
-
- -- Request: .troff
-     Make the 't' built-in condition true (and the 'n' built-in
-     condition false) for 'if', 'ie', and 'while' conditional requests.
-     This is the default if 'gtroff' (_not_ 'groff') is started with the
-     '-R' switch to avoid loading of the start-up files 'troffrc' and
-     'troffrc-end'.  Without '-R', 'gtroff' stays in troff mode if the
-     output device is not a TTY (e.g. 'ps').
-
- -- Request: .nroff
-     Make the 'n' built-in condition true (and the 't' built-in
-     condition false) for 'if', 'ie', and 'while' conditional requests.
-     This is the default if 'gtroff' uses a TTY output device; the code
-     for switching to nroff mode is in the file 'tty.tmac', which is
-     loaded by the start-up file 'troffrc'.
-
-   *Note Conditionals and Loops::, for more details on built-in
-conditions.
-
-\1f
-File: groff.info,  Node: Line Layout,  Next: Line Control,  Prev: Troff and Nroff Mode,  Up: gtroff Reference
-
-5.13 Line Layout
-================
-
-The following drawing shows the dimensions that 'gtroff' uses for
-placing a line of output onto the page.  They are labeled with the
-request that manipulates each dimension.
-
-          -->| in |<--
-             |<-----------ll------------>|
-        +----+----+----------------------+----+
-        |    :    :                      :    |
-        +----+----+----------------------+----+
-     -->| po |<--
-        |<--------paper width---------------->|
-
-These dimensions are:
-
-'po'
-     "Page offset" - this is the leftmost position of text on the final
-     output, defining the "left margin".
-
-'in'
-     "Indentation" - this is the distance from the left margin where
-     text is printed.
-
-'ll'
-     "Line length" - this is the distance from the left margin to right
-     margin.
-
-   A simple demonstration:
-
-     .ll 3i
-     This is text without indentation.
-     The line length has been set to 3\~inch.
-     .in +.5i
-     .ll -.5i
-     Now the left and right margins are both increased.
-     .in
-     .ll
-     Calling .in and .ll without parameters restore
-     the previous values.
-
-   Result:
-
-     This  is text without indenta-
-     tion.   The  line  length  has
-     been set to 3 inch.
-          Now   the  left  and
-          right  margins   are
-          both increased.
-     Calling  .in  and  .ll without
-     parameters restore the  previ-
-     ous values.
-
- -- Request: .po [offset]
- -- Request: .po +offset
- -- Request: .po -offset
- -- Register: \n[.o]
-     Set horizontal page offset to OFFSET (or increment or decrement the
-     current value by OFFSET).  Note that this request does not cause a
-     break, so changing the page offset in the middle of text being
-     filled may not yield the expected result.  The initial value is 1i.
-     For TTY output devices, it is set to 0 in the startup file
-     'troffrc'; the default scaling indicator is 'm' (and not 'v' as
-     incorrectly documented in the original UNIX troff manual).
-
-     The current page offset can be found in the read-only number
-     register '.o'.
-
-     If 'po' is called without an argument, the page offset is reset to
-     the previous value before the last call to 'po'.
-
-          .po 3i
-          \n[.o]
-              => 720
-          .po -1i
-          \n[.o]
-              => 480
-          .po
-          \n[.o]
-              => 720
-
- -- Request: .in [indent]
- -- Request: .in +indent
- -- Request: .in -indent
- -- Register: \n[.i]
-     Set indentation to INDENT (or increment or decrement the current
-     value by INDENT).  This request causes a break.  Initially, there
-     is no indentation.
-
-     If 'in' is called without an argument, the indentation is reset to
-     the previous value before the last call to 'in'.  The default
-     scaling indicator is 'm'.
-
-     The indentation is associated with the current environment (*note
-     Environments::).
-
-     If a negative indentation value is specified (which is not
-     allowed), 'gtroff' emits a warning of type 'range' and sets the
-     indentation to zero.
-
-     The effect of 'in' is delayed until a partially collected line (if
-     it exists) is output.  A temporary indentation value is reset to
-     zero also.
-
-     The current indentation (as set by 'in') can be found in the
-     read-only number register '.i'.
-
- -- Request: .ti offset
- -- Request: .ti +offset
- -- Request: .ti -offset
- -- Register: \n[.in]
-     Temporarily indent the next output line by OFFSET.  If an increment
-     or decrement value is specified, adjust the temporary indentation
-     relative to the value set by the 'in' request.
-
-     This request causes a break; its value is associated with the
-     current environment (*note Environments::).  The default scaling
-     indicator is 'm'.  A call of 'ti' without an argument is ignored.
-
-     If the total indentation value is negative (which is not allowed),
-     'gtroff' emits a warning of type 'range' and sets the temporary
-     indentation to zero.  'Total indentation' is either OFFSET if
-     specified as an absolute value, or the temporary plus normal
-     indentation, if OFFSET is given as a relative value.
-
-     The effect of 'ti' is delayed until a partially collected line (if
-     it exists) is output.
-
-     The read-only number register '.in' is the indentation that applies
-     to the current output line.
-
-     The difference between '.i' and '.in' is that the latter takes into
-     account whether a partially collected line still uses the old
-     indentation value or a temporary indentation value is active.
-
- -- Request: .ll [length]
- -- Request: .ll +length
- -- Request: .ll -length
- -- Register: \n[.l]
- -- Register: \n[.ll]
-     Set the line length to LENGTH (or increment or decrement the
-     current value by LENGTH).  Initially, the line length is set to
-     6.5i.  The effect of 'll' is delayed until a partially collected
-     line (if it exists) is output.  The default scaling indicator is
-     'm'.
-
-     If 'll' is called without an argument, the line length is reset to
-     the previous value before the last call to 'll'.  If a negative
-     line length is specified (which is not allowed), 'gtroff' emits a
-     warning of type 'range' and sets the line length to zero.
-
-     The line length is associated with the current environment (*note
-     Environments::).
-
-     The current line length (as set by 'll') can be found in the
-     read-only number register '.l'.  The read-only number register
-     '.ll' is the line length that applies to the current output line.
-
-     Similar to '.i' and '.in', the difference between '.l' and '.ll' is
-     that the latter takes into account whether a partially collected
-     line still uses the old line length value.
-
-\1f
-File: groff.info,  Node: Line Control,  Next: Page Layout,  Prev: Line Layout,  Up: gtroff Reference
-
-5.14 Line Control
-=================
-
-It is important to understand how 'gtroff' handles input and output
-lines.
-
-   Many escapes use positioning relative to the input line.  For
-example, this
-
-     This is a \h'|1.2i'test.
-
-     This is a
-     \h'|1.2i'test.
-
-produces
-
-     This is a   test.
-
-     This is a             test.
-
-   The main usage of this feature is to define macros that act exactly
-at the place where called.
-
-     .\" A simple macro to underline a word
-     .de underline
-     .  nop \\$1\l'|0\[ul]'
-     ..
-
-In the above example, '|0' specifies a negative distance from the
-current position (at the end of the just emitted argument '\$1') back to
-the beginning of the input line.  Thus, the '\l' escape draws a line
-from right to left.
-
-   'gtroff' makes a difference between input and output line
-continuation; the latter is also called "interrupting" a line.
-
- -- Escape: \<RET>
- -- Escape: \c
- -- Register: \n[.int]
-     Continue a line.  '\<RET>' (this is a backslash at the end of a
-     line immediately followed by a newline) works on the input level,
-     suppressing the effects of the following newline in the input.
-
-          This is a \
-          .test
-              => This is a .test
-
-     The '|' operator is also affected.
-
-     '\c' works on the output level.  Anything after this escape on the
-     same line is ignored except '\R', which works as usual.  Anything
-     before '\c' on the same line is appended to the current partial
-     output line.  The next non-command line after an interrupted line
-     counts as a new input line.
-
-     The visual results depend on whether no-fill mode is active.
-
-        * If no-fill mode is active (using the 'nf' request), the next
-          input text line after '\c' is handled as a continuation of the
-          same input text line.
-
-               .nf
-               This is a \c
-               test.
-                   => This is a test.
-
-        * If fill mode is active (using the 'fi' request), a word
-          interrupted with '\c' is continued with the text on the next
-          input text line, without an intervening space.
-
-               This is a te\c
-               st.
-                   => This is a test.
-
-     Note that an intervening control line that causes a break is
-     stronger than '\c', flushing out the current partial line in the
-     usual way.
-
-     The '.int' register contains a positive value if the last output
-     line was interrupted with '\c'; this is associated with the current
-     environment (*note Environments::).
-
-\1f
-File: groff.info,  Node: Page Layout,  Next: Page Control,  Prev: Line Control,  Up: gtroff Reference
-
-5.15 Page Layout
-================
-
-'gtroff' provides some very primitive operations for controlling page
-layout.
-
- -- Request: .pl [length]
- -- Request: .pl +length
- -- Request: .pl -length
- -- Register: \n[.p]
-     Set the "page length" to LENGTH (or increment or decrement the
-     current value by LENGTH).  This is the length of the physical
-     output page.  The default scaling indicator is 'v'.
-
-     The current setting can be found in the read-only number register
-     '.p'.
-
-     Note that this only specifies the size of the page, not the top and
-     bottom margins.  Those are not set by 'gtroff' directly.  *Note
-     Traps::, for further information on how to do this.
-
-     Negative 'pl' values are possible also, but not very useful: No
-     trap is sprung, and each line is output on a single page (thus
-     suppressing all vertical spacing).
-
-     If no argument or an invalid argument is given, 'pl' sets the page
-     length to 11i.
-
-   'gtroff' provides several operations that help in setting up top and
-bottom titles (or headers and footers).
-
- -- Request: .tl 'left'center'right'
-     Print a "title line".  It consists of three parts: a left justified
-     portion, a centered portion, and a right justified portion.  The
-     argument separator ''' can be replaced with any character not
-     occurring in the title line.  The '%' character is replaced with
-     the current page number.  This character can be changed with the
-     'pc' request (see below).
-
-     Without argument, 'tl' is ignored.
-
-     Some notes:
-
-        * The line length set by the 'll' request is not honoured by
-          'tl'; use the 'lt' request (described below) instead, to
-          control line length for text set by 'tl'.
-
-        * A title line is not restricted to the top or bottom of a page.
-
-        * 'tl' prints the title line immediately, ignoring a partially
-          filled line (which stays untouched).
-
-        * It is not an error to omit closing delimiters.  For example,
-          '.tl /foo' is equivalent to '.tl /foo///': It prints a title
-          line with the left justified word 'foo'; the centered and
-          right justfied parts are empty.
-
-        * 'tl' accepts the same parameter delimiting characters as the
-          '\A' escape; see *note Escapes::.
-
- -- Request: .lt [length]
- -- Request: .lt +length
- -- Request: .lt -length
- -- Register: \n[.lt]
-     The title line is printed using its own line length, which is
-     specified (or incremented or decremented) with the 'lt' request.
-     Initially, the title line length is set to 6.5i.  If a negative
-     line length is specified (which is not allowed), 'gtroff' emits a
-     warning of type 'range' and sets the title line length to zero.
-     The default scaling indicator is 'm'.  If 'lt' is called without an
-     argument, the title length is reset to the previous value before
-     the last call to 'lt'.
-
-     The current setting of this is available in the '.lt' read-only
-     number register; it is associated with the current environment
-     (*note Environments::).
-
- -- Request: .pn page
- -- Request: .pn +page
- -- Request: .pn -page
- -- Register: \n[.pn]
-     Change (increase or decrease) the page number of the _next_ page.
-     The only argument is the page number; the request is ignored
-     without a parameter.
-
-     The read-only number register '.pn' contains the number of the next
-     page: either the value set by a 'pn' request, or the number of the
-     current page plus 1.
-
- -- Request: .pc [char]
-     Change the page number character (used by the 'tl' request) to a
-     different character.  With no argument, this mechanism is disabled.
-     Note that this doesn't affect the number register '%'.
-
-   *Note Traps::.
-
-\1f
-File: groff.info,  Node: Page Control,  Next: Fonts and Symbols,  Prev: Page Layout,  Up: gtroff Reference
-
-5.16 Page Control
-=================
-
- -- Request: .bp [page]
- -- Request: .bp +page
- -- Request: .bp -page
- -- Register: \n[%]
-     Stop processing the current page and move to the next page.  This
-     request causes a break.  It can also take an argument to set
-     (increase, decrease) the page number of the next page (which
-     actually becomes the current page after 'bp' has finished).  The
-     difference between 'bp' and 'pn' is that 'pn' does not cause a
-     break or actually eject a page.  *Note Page Layout::.
-
-          .de newpage                         \" define macro
-          'bp                                 \" begin page
-          'sp .5i                             \" vertical space
-          .tl 'left top'center top'right top' \" title
-          'sp .3i                             \" vertical space
-          ..                                  \" end macro
-
-     'bp' has no effect if not called within the top-level diversion
-     (*note Diversions::).
-
-     The read-write register '%' holds the current page number.
-
-     The number register '.pe' is set to 1 while 'bp' is active.  *Note
-     Page Location Traps::.
-
- -- Request: .ne [space]
-     It is often necessary to force a certain amount of space before a
-     new page occurs.  This is most useful to make sure that there is
-     not a single "orphan" line left at the bottom of a page.  The 'ne'
-     request ensures that there is a certain distance, specified by the
-     first argument, before the next page is triggered (see *note
-     Traps::, for further information).  The default scaling indicator
-     for 'ne' is 'v'; the default value of SPACE is 1v if no argument is
-     given.
-
-     For example, to make sure that no fewer than 2 lines get orphaned,
-     do the following before each paragraph:
-
-          .ne 2
-          text text text
-
-     'ne' then automatically causes a page break if there is space for
-     one line only.
-
- -- Request: .sv [space]
- -- Request: .os
-     'sv' is similar to the 'ne' request; it reserves the specified
-     amount of vertical space.  If the desired amount of space exists
-     before the next trap (or the bottom page boundary if no trap is
-     set), the space is output immediately (ignoring a partially filled
-     line, which stays untouched).  If there is not enough space, it is
-     stored for later output via the 'os' request.  The default value
-     is 1v if no argument is given; the default scaling indicator is
-     'v'.
-
-     Both 'sv' and 'os' ignore no-space mode.  While the 'sv' request
-     allows negative values for SPACE, 'os' ignores them.
-
- -- Register: \n[nl]
-     This register contains the current vertical position.  If the
-     vertical position is zero and the top of page transition hasn't
-     happened yet, 'nl' is set to negative value.  'gtroff' itself does
-     this at the very beginning of a document before anything has been
-     printed, but the main usage is to plant a header trap on a page if
-     this page has already started.
-
-     Consider the following:
-
-          .de xxx
-          .  sp
-          .  tl ''Header''
-          .  sp
-          ..
-          .
-          First page.
-          .bp
-          .wh 0 xxx
-          .nr nl (-1)
-          Second page.
-
-     Result:
-
-          First page.
-
-          ...
-
-                                       Header
-
-          Second page.
-
-          ...
-
-     Without resetting 'nl' to a negative value, the just planted trap
-     would be active beginning with the _next_ page, not the current
-     one.
-
-     *Note Diversions::, for a comparison with the '.h' and '.d'
-     registers.
-
-\1f
-File: groff.info,  Node: Fonts and Symbols,  Next: Sizes,  Prev: Page Control,  Up: gtroff Reference
-
-5.17 Fonts and Symbols
-======================
-
-'gtroff' can switch fonts at any point in the text.
-
-   The basic set of fonts is 'R', 'I', 'B', and 'BI'.  These are Times
-Roman, Italic, Bold, and Bold Italic.  For non-TTY devices, there is
-also at least one symbol font that contains various special symbols
-(Greek, mathematics).
-
-* Menu:
-
-* Changing Fonts::
-* Font Families::
-* Font Positions::
-* Using Symbols::
-* Character Classes::
-* Special Fonts::
-* Artificial Fonts::
-* Ligatures and Kerning::
-
-\1f
-File: groff.info,  Node: Changing Fonts,  Next: Font Families,  Prev: Fonts and Symbols,  Up: Fonts and Symbols
-
-5.17.1 Changing Fonts
----------------------
-
- -- Request: .ft [font]
- -- Escape: \ff
- -- Escape: \f(fn
- -- Escape: \f[font]
- -- Register: \n[.sty]
-     The 'ft' request and the '\f' escape change the current font to
-     FONT (one-character name F, two-character name FN).
-
-     If FONT is a style name (as set with the 'sty' request or with the
-     'styles' command in the 'DESC' file), use it within the current
-     font family (as set with the 'fam' request, '\F' escape, or with
-     the 'family' command in the 'DESC' file).
-
-     It is not possible to switch to a font with the name 'DESC'
-     (whereas this name could be used as a style name; however, this is
-     not recommended).
-
-     With no argument or using 'P' as an argument, '.ft' switches to the
-     previous font.  Use '\f[]' to do this with the escape.  The old
-     syntax forms '\fP' or '\f[P]' are also supported.
-
-     Fonts are generally specified as upper-case strings, which are
-     usually 1 to 4 characters representing an abbreviation or acronym
-     of the font name.  This is no limitation, just a convention.
-
-     The example below produces two identical lines.
-
-          eggs, bacon,
-          .ft B
-          spam
-          .ft
-          and sausage.
-
-          eggs, bacon, \fBspam\fP and sausage.
-
-     Note that '\f' doesn't produce an input token in 'gtroff'.  As a
-     consequence, it can be used in requests like 'mc' (which expects a
-     single character as an argument) to change the font on the fly:
-
-          .mc \f[I]x\f[]
-
-     The current style name is available in the read-only number
-     register '.sty' (this is a string-valued register); if the current
-     font isn't a style, the empty string is returned.  It is associated
-     with the current environment.
-
-     *Note Font Positions::, for an alternative syntax.
-
- -- Request: .ftr f [g]
-     Translate font F to font G.  Whenever a font named F is referred to
-     in a '\f' escape sequence, in the 'F' and 'S' conditional
-     operators, or in the 'ft', 'ul', 'bd', 'cs', 'tkf', 'special',
-     'fspecial', 'fp', or 'sty' requests, font G is used.  If G is
-     missing or equal to F the translation is undone.
-
-     Note that it is not possible to chain font translations.  Example:
-
-          .ftr XXX TR
-          .ftr XXX YYY
-          .ft XXX
-              => warning: can't find font `XXX'
-
- -- Request: .fzoom f [zoom]
- -- Register: \n[.zoom]
-     Set magnification of font F to factor ZOOM, which must be a
-     non-negative integer multiple of 1/1000th.  This request is useful
-     to adjust the optical size of a font in relation to the others.  In
-     the example below, font 'CR' is magnified by 10% (the zoom factor
-     is thus 1.1).
-
-          .fam P
-          .fzoom CR 1100
-          .ps 12
-          Palatino and \f[CR]Courier\f[]
-
-     A missing or zero value of ZOOM is the same as a value of 1000,
-     which means no magnification.  F must be a real font name, not a
-     style.
-
-     Note that the magnification of a font is completely transparent to
-     troff; a change of the zoom factor doesn't cause any effect except
-     that the dimensions of glyphs, (word) spaces, kerns, etc., of the
-     affected font are adjusted accordingly.
-
-     The zoom factor of the current font is available in the read-only
-     number register '.zoom', in multiples of 1/1000th.  It returns zero
-     if there is no magnification.
-
-\1f
-File: groff.info,  Node: Font Families,  Next: Font Positions,  Prev: Changing Fonts,  Up: Fonts and Symbols
-
-5.17.2 Font Families
---------------------
-
-Due to the variety of fonts available, 'gtroff' has added the concept of
-"font families" and "font styles".  The fonts are specified as the
-concatenation of the font family and style.  Specifying a font without
-the family part causes 'gtroff' to use that style of the current family.
-
-   Currently, fonts for the devices '-Tps', '-Tpdf', '-Tdvi', '-Tlj4',
-'-Tlbp', and the X11 fonts are set up to this mechanism.  By default,
-'gtroff' uses the Times family with the four styles 'R', 'I', 'B', and
-'BI'.
-
-   This way, it is possible to use the basic four fonts and to select a
-different font family on the command line (*note Groff Options::).
-
- -- Request: .fam [family]
- -- Register: \n[.fam]
- -- Escape: \Ff
- -- Escape: \F(fm
- -- Escape: \F[family]
- -- Register: \n[.fn]
-     Switch font family to FAMILY (one-character name F, two-character
-     name FM).  If no argument is given, switch back to the previous
-     font family.  Use '\F[]' to do this with the escape.  Note that
-     '\FP' doesn't work; it selects font family 'P' instead.
-
-     The value at start-up is 'T'.  The current font family is available
-     in the read-only number register '.fam' (this is a string-valued
-     register); it is associated with the current environment.
-
-          spam,
-          .fam H    \" helvetica family
-          spam,     \" used font is family H + style R = HR
-          .ft B     \" family H + style B = font HB
-          spam,
-          .fam T    \" times family
-          spam,     \" used font is family T + style B = TB
-          .ft AR    \" font AR (not a style)
-          baked beans,
-          .ft R     \" family T + style R = font TR
-          and spam.
-
-     Note that '\F' doesn't produce an input token in 'gtroff'.  As a
-     consequence, it can be used in requests like 'mc' (which expects a
-     single character as an argument) to change the font family on the
-     fly:
-
-          .mc \F[P]x\F[]
-
-     The '.fn' register contains the current "real font name" of the
-     current font.  This is a string-valued register.  If the current
-     font is a style, the value of '\n[.fn]' is the proper concatenation
-     of family and style name.
-
- -- Request: .sty n style
-     Associate STYLE with font position N.  A font position can be
-     associated either with a font or with a style.  The current font is
-     the index of a font position and so is also either a font or a
-     style.  If it is a style, the font that is actually used is the
-     font which name is the concatenation of the name of the current
-     family and the name of the current style.  For example, if the
-     current font is 1 and font position 1 is associated with style 'R'
-     and the current font family is 'T', then font 'TR' is used.  If the
-     current font is not a style, then the current family is ignored.
-     If the requests 'cs', 'bd', 'tkf', 'uf', or 'fspecial' are applied
-     to a style, they are instead applied to the member of the current
-     family corresponding to that style.
-
-     N must be a non-negative integer value.
-
-     The default family can be set with the '-f' option (*note Groff
-     Options::).  The 'styles' command in the 'DESC' file controls which
-     font positions (if any) are initially associated with styles rather
-     than fonts.  For example, the default setting for POSTSCRIPT fonts
-
-          styles R I B BI
-
-     is equivalent to
-
-          .sty 1 R
-          .sty 2 I
-          .sty 3 B
-          .sty 4 BI
-
-     'fam' and '\F' always check whether the current font position is
-     valid; this can give surprising results if the current font
-     position is associated with a style.
-
-     In the following example, we want to access the POSTSCRIPT font
-     'FooBar' from the font family 'Foo':
-
-          .sty \n[.fp] Bar
-          .fam Foo
-              => warning: can't find font `FooR'
-
-     The default font position at start-up is 1; for the POSTSCRIPT
-     device, this is associated with style 'R', so 'gtroff' tries to
-     open 'FooR'.
-
-     A solution to this problem is to use a dummy font like the
-     following:
-
-          .fp 0 dummy TR    \" set up dummy font at position 0
-          .sty \n[.fp] Bar  \" register style `Bar'
-          .ft 0             \" switch to font at position 0
-          .fam Foo          \" activate family `Foo'
-          .ft Bar           \" switch to font `FooBar'
-
-     *Note Font Positions::.
-
-\1f
-File: groff.info,  Node: Font Positions,  Next: Using Symbols,  Prev: Font Families,  Up: Fonts and Symbols
-
-5.17.3 Font Positions
----------------------
-
-For the sake of old phototypesetters and compatibility with old versions
-of 'troff', 'gtroff' has the concept of font "positions", on which
-various fonts are mounted.
-
- -- Request: .fp pos font [external-name]
- -- Register: \n[.f]
- -- Register: \n[.fp]
-     Mount font FONT at position POS (which must be a non-negative
-     integer).  This numeric position can then be referred to with font
-     changing commands.  When 'gtroff' starts it is using font
-     position 1 (which must exist; position 0 is unused usually at
-     start-up).
-
-     The current font in use, as a font position, is available in the
-     read-only number register '.f'.  This can be useful to remember the
-     current font for later recall.  It is associated with the current
-     environment (*note Environments::).
-
-          .nr save-font \n[.f]
-          .ft B
-          ... text text text ...
-          .ft \n[save-font]
-
-     The number of the next free font position is available in the
-     read-only number register '.fp'.  This is useful when mounting a
-     new font, like so:
-
-          .fp \n[.fp] NEATOFONT
-
-     Fonts not listed in the 'DESC' file are automatically mounted on
-     the next available font position when they are referenced.  If a
-     font is to be mounted explicitly with the 'fp' request on an unused
-     font position, it should be mounted on the first unused font
-     position, which can be found in the '.fp' register.  Although
-     'gtroff' does not enforce this strictly, it is not allowed to mount
-     a font at a position whose number is much greater (approx. 1000
-     positions) than that of any currently used position.
-
-     The 'fp' request has an optional third argument.  This argument
-     gives the external name of the font, which is used for finding the
-     font description file.  The second argument gives the internal name
-     of the font, which is used to refer to the font in 'gtroff' after
-     it has been mounted.  If there is no third argument then the
-     internal name is used as the external name.  This feature makes it
-     possible to use fonts with long names in compatibility mode.
-
-   Both the 'ft' request and the '\f' escape have alternative syntax
-forms to access font positions.
-
- -- Request: .ft nnn
- -- Escape: \fn
- -- Escape: \f(nn
- -- Escape: \f[nnn]
-     Change the current font position to NNN (one-digit position N,
-     two-digit position NN), which must be a non-negative integer.
-
-     If NNN is associated with a style (as set with the 'sty' request or
-     with the 'styles' command in the 'DESC' file), use it within the
-     current font family (as set with the 'fam' request, the '\F'
-     escape, or with the 'family' command in the 'DESC' file).
-
-          this is font 1
-          .ft 2
-          this is font 2
-          .ft                   \" switch back to font 1
-          .ft 3
-          this is font 3
-          .ft
-          this is font 1 again
-
-     *Note Changing Fonts::, for the standard syntax form.
-
-\1f
-File: groff.info,  Node: Using Symbols,  Next: Character Classes,  Prev: Font Positions,  Up: Fonts and Symbols
-
-5.17.4 Using Symbols
---------------------
-
-A "glyph" is a graphical representation of a "character".  While a
-character is an abstract entity containing semantic information, a glyph
-is something that can be actually seen on screen or paper.  It is
-possible that a character has multiple glyph representation forms (for
-example, the character 'A' can be either written in a roman or an italic
-font, yielding two different glyphs); sometimes more than one character
-maps to a single glyph (this is a "ligature" - the most common is 'fi').
-
-   A "symbol" is simply a named glyph.  Within 'gtroff', all glyph names
-of a particular font are defined in its font file.  If the user requests
-a glyph not available in this font, 'gtroff' looks up an ordered list of
-"special fonts".  By default, the POSTSCRIPT output device supports the
-two special fonts 'SS' (slanted symbols) and 'S' (symbols) (the former
-is looked up before the latter).  Other output devices use different
-names for special fonts.  Fonts mounted with the 'fonts' keyword in the
-'DESC' file are globally available.  To install additional special fonts
-locally (i.e. for a particular font), use the 'fspecial' request.
-
-   Here the exact rules how 'gtroff' searches a given symbol:
-
-   * If the symbol has been defined with the 'char' request, use it.
-     This hides a symbol with the same name in the current font.
-
-   * Check the current font.
-
-   * If the symbol has been defined with the 'fchar' request, use it.
-
-   * Check whether the current font has a font-specific list of special
-     fonts; test all fonts in the order of appearance in the last
-     'fspecial' call if appropriate.
-
-   * If the symbol has been defined with the 'fschar' request for the
-     current font, use it.
-
-   * Check all fonts in the order of appearance in the last 'special'
-     call.
-
-   * If the symbol has been defined with the 'schar' request, use it.
-
-   * As a last resort, consult all fonts loaded up to now for special
-     fonts and check them, starting with the lowest font number.  Note
-     that this can sometimes lead to surprising results since the
-     'fonts' line in the 'DESC' file often contains empty positions,
-     which are filled later on.  For example, consider the following:
-
-          fonts 3 0 0 FOO
-
-     This mounts font 'foo' at font position 3.  We assume that 'FOO' is
-     a special font, containing glyph 'foo', and that no font has been
-     loaded yet.  The line
-
-          .fspecial BAR BAZ
-
-     makes font 'BAZ' special only if font 'BAR' is active.  We further
-     assume that 'BAZ' is really a special font, i.e., the font
-     description file contains the 'special' keyword, and that it also
-     contains glyph 'foo' with a special shape fitting to font 'BAR'.
-     After executing 'fspecial', font 'BAR' is loaded at font
-     position 1, and 'BAZ' at position 2.
-
-     We now switch to a new font 'XXX', trying to access glyph 'foo'
-     that is assumed to be missing.  There are neither font-specific
-     special fonts for 'XXX' nor any other fonts made special with the
-     'special' request, so 'gtroff' starts the search for special fonts
-     in the list of already mounted fonts, with increasing font
-     positions.  Consequently, it finds 'BAZ' before 'FOO' even for
-     'XXX', which is not the intended behaviour.
-
-   *Note Font Files::, and *note Special Fonts::, for more details.
-
-   The list of available symbols is device dependent; see the
-'groff_char(7)' man page for a complete list of all glyphs.  For
-example, say
-
-     man -Tdvi groff_char > groff_char.dvi
-
-for a list using the default DVI fonts (not all versions of the 'man'
-program support the '-T' option).  If you want to use an additional
-macro package to change the used fonts, 'groff' must be called directly:
-
-     groff -Tdvi -mec -man groff_char.7 > groff_char.dvi
-
-   Glyph names not listed in groff_char(7) are derived algorithmically,
-using a simplified version of the Adobe Glyph List (AGL) algorithm,
-which is described in
-<http://partners.adobe.com/public/developer/opentype/index_glyph.html>.
-The (frozen) set of glyph names that can't be derived algorithmically is
-called "groff glyph list (GGL)".
-
-   * A glyph for Unicode character U+XXXX[X[X]], which is not a
-     composite character is named 'uXXXX[X[X]]'.  X must be an uppercase
-     hexadecimal digit.  Examples: 'u1234', 'u008E', 'u12DB8'.  The
-     largest Unicode value is 0x10FFFF. There must be at least four 'X'
-     digits; if necessary, add leading zeroes (after the 'u').  No zero
-     padding is allowed for character codes greater than 0xFFFF.
-     Surrogates (i.e., Unicode values greater than 0xFFFF represented
-     with character codes from the surrogate area U+D800-U+DFFF) are not
-     allowed too.
-
-   * A glyph representing more than a single input character is named
-
-          'u' COMPONENT1 '_' COMPONENT2 '_' COMPONENT3 ...
-
-     Example: 'u0045_0302_0301'.
-
-     For simplicity, all Unicode characters that are composites must be
-     decomposed maximally (this is normalization form D in the Unicode
-     standard); for example, 'u00CA_0301' is not a valid glyph name
-     since U+00CA (LATIN CAPITAL LETTER E WITH CIRCUMFLEX) can be
-     further decomposed into U+0045 (LATIN CAPITAL LETTER E) and U+0302
-     (COMBINING CIRCUMFLEX ACCENT).  'u0045_0302_0301' is thus the glyph
-     name for U+1EBE, LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE.
-
-   * groff maintains a table to decompose all algorithmically derived
-     glyph names that are composites itself.  For example, 'u0100'
-     (LATIN LETTER A WITH MACRON) is automatically decomposed into
-     'u0041_0304'.  Additionally, a glyph name of the GGL is preferred
-     to an algorithmically derived glyph name; groff also automatically
-     does the mapping.  Example: The glyph 'u0045_0302' is mapped to
-     '^E'.
-
-   * glyph names of the GGL can't be used in composite glyph names; for
-     example, '^E_u0301' is invalid.
-
- -- Escape: \(nm
- -- Escape: \[name]
- -- Escape: \[component1 component2 ...]
-     Insert a symbol NAME (two-character name NM) or a composite glyph
-     with component glyphs COMPONENT1, COMPONENT2, ...  There is no
-     special syntax for one-character names - the natural form '\N'
-     would collide with escapes.(1)  (*note Using Symbols-Footnote-1::)
-
-     If NAME is undefined, a warning of type 'char' is generated, and
-     the escape is ignored.  *Note Debugging::, for information about
-     warnings.
-
-     groff resolves '\[...]' with more than a single component as
-     follows:
-
-        * Any component that is found in the GGL is converted to the
-          'uXXXX' form.
-
-        * Any component 'uXXXX' that is found in the list of
-          decomposable glyphs is decomposed.
-
-        * The resulting elements are then concatenated with '_' in
-          between, dropping the leading 'u' in all elements but the
-          first.
-
-     No check for the existence of any component (similar to 'tr'
-     request) is done.
-
-     Examples:
-
-     '\[A ho]'
-          'A' maps to 'u0041', 'ho' maps to 'u02DB', thus the final
-          glyph name would be 'u0041_02DB'.  Note this is not the
-          expected result: The ogonek glyph 'ho' is a spacing ogonek,
-          but for a proper composite a non-spacing ogonek (U+0328) is
-          necessary.  Looking into the file 'composite.tmac' one can
-          find '.composite ho u0328', which changes the mapping of 'ho'
-          while a composite glyph name is constructed, causing the final
-          glyph name to be 'u0041_0328'.
-
-     '\[^E u0301]'
-     '\[^E aa]'
-     '\[E a^ aa]'
-     '\[E ^ ']'
-          '^E' maps to 'u0045_0302', thus the final glyph name is
-          'u0045_0302_0301' in all forms (assuming proper calls of the
-          'composite' request).
-
-     It is not possible to define glyphs with names like 'A ho' within a
-     groff font file.  This is not really a limitation; instead, you
-     have to define 'u0041_0328'.
-
- -- Escape: \C'xxx'
-     Typeset the glyph named XXX.(2)  (*note Using Symbols-Footnote-2::)
-     Normally it is more convenient to use '\[XXX]', but '\C' has the
-     advantage that it is compatible with newer versions of AT&T 'troff'
-     and is available in compatibility mode.
-
- -- Request: .composite from to
-     Map glyph name FROM to glyph name TO if it is used in '\[...]' with
-     more than one component.  See above for examples.
-
-     This mapping is based on glyph names only; no check for the
-     existence of either glyph is done.
-
-     A set of default mappings for many accents can be found in the file
-     'composite.tmac', which is loaded at start-up.
-
- -- Escape: \N'n'
-     Typeset the glyph with code N in the current font ('n' is *not* the
-     input character code).  The number N can be any non-negative
-     decimal integer.  Most devices only have glyphs with codes between
-     0 and 255; the Unicode output device uses codes in the range
-     0-65535.  If the current font does not contain a glyph with that
-     code, special fonts are _not_ searched.  The '\N' escape sequence
-     can be conveniently used in conjunction with the 'char' request:
-
-          .char \[phone] \f[ZD]\N'37'
-
-     The code of each glyph is given in the fourth column in the font
-     description file after the 'charset' command.  It is possible to
-     include unnamed glyphs in the font description file by using a name
-     of '---'; the '\N' escape sequence is the only way to use these.
-
-     No kerning is applied to glyphs accessed with '\N'.
-
-   Some escape sequences directly map onto special glyphs.
-
- -- Escape: \'
-     This is a backslash followed by the apostrophe character, ASCII
-     character '0x27' (EBCDIC character '0x7D').  The same as '\[aa]',
-     the acute accent.
-
- -- Escape: \`
-     This is a backslash followed by ASCII character '0x60' (EBCDIC
-     character '0x79' usually).  The same as '\[ga]', the grave accent.
-
- -- Escape: \-
-     This is the same as '\[-]', the minus sign in the current font.
-
- -- Escape: \_
-     This is the same as '\[ul]', the underline character.
-
- -- Request: .cflags n c1 c2 ...
-     Input characters and symbols have certain properties associated
-     with it.(3)  (*note Using Symbols-Footnote-3::) These properties
-     can be modified with the 'cflags' request.  The first argument is
-     the sum of the desired flags and the remaining arguments are the
-     characters or symbols to have those properties.  It is possible to
-     omit the spaces between the characters or symbols.  Instead of
-     single characters or symbols you can also use character classes
-     (see *note Character Classes:: for more details).
-
-     '1'
-          The character ends sentences (initially characters '.?!' have
-          this property).
-
-     '2'
-          Lines can be broken before the character (initially no
-          characters have this property).  This only works if both the
-          characters before and after have non-zero hyphenation codes
-          (as set with the 'hcode' request).  Use value 64 to override
-          this behaviour.
-
-     '4'
-          Lines can be broken after the character (initially the
-          character '-' and the symbols '\[hy]' and '\[em]' have this
-          property).  This only works if both the characters before and
-          after have non-zero hyphenation codes (as set with the 'hcode'
-          request).  Use value 64 to override this behaviour.
-
-     '8'
-          The character overlaps horizontally if used as a horizontal
-          line building element.  Initially the symbols '\[ul]',
-          '\[rn]', '\[ru]', '\[radicalex]', and '\[sqrtex]' have this
-          property.
-
-     '16'
-          The character overlaps vertically if used as vertical line
-          building element.  Initially symbol '\[br]' has this property.
-
-     '32'
-          An end-of-sentence character followed by any number of
-          characters with this property is treated as the end of a
-          sentence if followed by a newline or two spaces; in other
-          words the character is "transparent" for the purposes of
-          end-of-sentence recognition - this is the same as having a
-          zero space factor in TeX (initially characters '"')]*' and the
-          symbols '\[dg]', '\[rq]', and '\[cq]' have this property).
-
-     '64'
-          Ignore hyphenation code values of the surrounding characters.
-          Use this in combination with values 2 and 4 (initially no
-          characters have this property).  For example, if you need an
-          automatic break point after the hyphen in number ranges like
-          '3000-5000', insert
-
-               .cflags 68 -
-
-          into your document.  Note, however, that this can lead to bad
-          layout if done without thinking; in most situations, a better
-          solution instead of changing the 'cflags' value is to insert
-          '\:' right after the hyphen at the places that really need a
-          break point.
-
-     '128'
-          Prohibit a line break before the character, but allow a line
-          break after the character.  This works only in combination
-          with flags 256 and 512 (see below) and has no effect
-          otherwise.
-
-     '256'
-          Prohibit a line break after the character, but allow a line
-          break before the character.  This works only in combination
-          with flags 128 and 512 (see below) and has no effect
-          otherwise.
-
-     '512'
-          Allow line break before or after the character.  This works
-          only in combination with flags 128 and 256 and has no effect
-          otherwise.
-
-          Contrary to flag values 2 and 4, the flags 128, 256, and 512
-          work pairwise.  If, for example, the left character has value
-          512, and the right character 128, no line break gets inserted.
-          If we use value 6 instead for the left character, a line break
-          after the character can't be suppressed since the right
-          neighbour character doesn't get examined.
-
- -- Request: .char g [string]
- -- Request: .fchar g [string]
- -- Request: .fschar f g [string]
- -- Request: .schar g [string]
-     Define a new glyph G to be STRING (which can be empty).(4)  (*note
-     Using Symbols-Footnote-4::) Every time glyph G needs to be printed,
-     STRING is processed in a temporary environment and the result is
-     wrapped up into a single object.  Compatibility mode is turned off
-     and the escape character is set to '\' while STRING is being
-     processed.  Any emboldening, constant spacing or track kerning is
-     applied to this object rather than to individual characters in
-     STRING.
-
-     A glyph defined by these requests can be used just like a normal
-     glyph provided by the output device.  In particular, other
-     characters can be translated to it with the 'tr' or 'trin'
-     requests; it can be made the leader character by the 'lc' request;
-     repeated patterns can be drawn with the glyph using the '\l' and
-     '\L' escape sequences; words containing the glyph can be hyphenated
-     correctly if the 'hcode' request is used to give the glyph's symbol
-     a hyphenation code.
-
-     There is a special anti-recursion feature: Use of 'g' within the
-     glyph's definition is handled like normal characters and symbols
-     not defined with 'char'.
-
-     Note that the 'tr' and 'trin' requests take precedence if 'char'
-     accesses the same symbol.
-
-          .tr XY
-          X
-              => Y
-          .char X Z
-          X
-              => Y
-          .tr XX
-          X
-              => Z
-
-     The 'fchar' request defines a fallback glyph: 'gtroff' only checks
-     for glyphs defined with 'fchar' if it cannot find the glyph in the
-     current font.  'gtroff' carries out this test before checking
-     special fonts.
-
-     'fschar' defines a fallback glyph for font F: 'gtroff' checks for
-     glyphs defined with 'fschar' after the list of fonts declared as
-     font-specific special fonts with the 'fspecial' request, but before
-     the list of fonts declared as global special fonts with the
-     'special' request.
-
-     Finally, the 'schar' request defines a global fallback glyph:
-     'gtroff' checks for glyphs defined with 'schar' after the list of
-     fonts declared as global special fonts with the 'special' request,
-     but before the already mounted special fonts.
-
-     *Note Using Symbols::, for a detailed description of the glyph
-     searching mechanism in 'gtroff'.
-
- -- Request: .rchar c1 c2 ...
- -- Request: .rfschar f c1 c2 ...
-     Remove the definitions of glyphs C1, C2, ...  This undoes the
-     effect of a 'char', 'fchar', or 'schar' request.
-
-     It is possible to omit the whitespace between arguments.
-
-     The request 'rfschar' removes glyph definitions defined with
-     'fschar' for glyph f.
-
-   *Note Special Characters::.
-
-\1f
-File: groff.info,  Node: Using Symbols-Footnotes,  Up: Using Symbols
-
-   (1) Note that a one-character symbol is not the same as an input
-character, i.e., the character 'a' is not the same as '\[a]'.  By
-default, 'groff' defines only a single one-character symbol, '\[-]'; it
-is usually accessed as '\-'.  On the other hand, 'gtroff' has the
-special feature that '\[charXXX]' is the same as the input character
-with character code XXX.  For example, '\[char97]' is identical to the
-letter 'a' if ASCII encoding is active.
-
-   (2) '\C' is actually a misnomer since it accesses an output glyph.
-
-   (3) Note that the output glyphs themselves don't have such
-properties.  For 'gtroff', a glyph is a numbered box with a given width,
-depth, and height, nothing else.  All manipulations with the 'cflags'
-request work on the input level.
-
-   (4) 'char' is a misnomer since an output glyph is defined.
-
-\1f
-File: groff.info,  Node: Character Classes,  Next: Special Fonts,  Prev: Using Symbols,  Up: Fonts and Symbols
-
-5.17.5 Character Classes
-------------------------
-
-Classes are particularly useful for East Asian languages such as
-Chinese, Japanese, and Korean, where the number of needed characters is
-much larger than in European languages, and where large sets of
-characters share the same properties.
-
- -- Request: .class n c1 c2 ...
-     In 'groff', a "character class" (or simply "class") is a set of
-     characters, grouped by some user aspect.  The 'class' request
-     defines such classes so that other requests can refer to all
-     characters belonging to this set with a single class name.
-     Currently, only the 'cflags' request can handle character classes.
-
-     A 'class' request takes a class name followed by a list of
-     entities.  In its simplest form, the entities are characters or
-     symbols:
-
-          .class [prepunct] , : ; > }
-
-     Since class and glyph names share the same namespace, it is
-     recommended to start and end the class name with '[' and ']',
-     respectively, to avoid collisions with normal 'groff' symbols (and
-     symbols defined by the user).  In particular, the presence of ']'
-     in the symbol name intentionally prevents the usage of '\[...]',
-     thus you must use the '\C' escape to access a class with such a
-     name.
-
-     You can also use a special character range notation, consisting of
-     a start character or symbol, followed by '-', and an end character
-     or symbol.  Internally, 'gtroff' converts these two symbol names to
-     Unicode values (according to the groff glyph gist), which then give
-     the start and end value of the range.  If that fails, the class
-     definition is skipped.
-
-     Finally, classes can be nested, too.
-
-     Here is a more complex example:
-
-          .class [prepunctx] \C'[prepunct]' \[u2013]-\[u2016]
-
-     The class 'prepunctx' now contains the contents of the class
-     'prepunct' as defined above (the set ', : ; > }'), and characters
-     in the range between 'U+2013' and 'U+2016'.
-
-     If you want to add '-' to a class, it must be the first character
-     value in the argument list, otherwise it gets misinterpreted as a
-     range.
-
-     Note that it is not possible to use class names within range
-     definitions.
-
-     Typical use of the 'class' request is to control line-breaking and
-     hyphenation rules as defined by the 'cflags' request.  For example,
-     to inhibit line breaks before the characters belonging to the
-     'prepunctx' class, you can write:
-
-          .cflags 2 \C'[prepunctx]'
-
-     See the 'cflags' request in *note Using Symbols::, for more
-     details.
-
-\1f
-File: groff.info,  Node: Special Fonts,  Next: Artificial Fonts,  Prev: Character Classes,  Up: Fonts and Symbols
-
-5.17.6 Special Fonts
---------------------
-
-Special fonts are those that 'gtroff' searches when it cannot find the
-requested glyph in the current font.  The Symbol font is usually a
-special font.
-
-   'gtroff' provides the following two requests to add more special
-fonts.  *Note Using Symbols::, for a detailed description of the glyph
-searching mechanism in 'gtroff'.
-
-   Usually, only non-TTY devices have special fonts.
-
- -- Request: .special [s1 s2 ...]
- -- Request: .fspecial f [s1 s2 ...]
-     Use the 'special' request to define special fonts.  Initially, this
-     list is empty.
-
-     Use the 'fspecial' request to designate special fonts only when
-     font F is active.  Initially, this list is empty.
-
-     Previous calls to 'special' or 'fspecial' are overwritten; without
-     arguments, the particular list of special fonts is set to empty.
-     Special fonts are searched in the order they appear as arguments.
-
-     All fonts that appear in a call to 'special' or 'fspecial' are
-     loaded.
-
-     *Note Using Symbols::, for the exact search order of glyphs.
-
-\1f
-File: groff.info,  Node: Artificial Fonts,  Next: Ligatures and Kerning,  Prev: Special Fonts,  Up: Fonts and Symbols
-
-5.17.7 Artificial Fonts
------------------------
-
-There are a number of requests and escapes for artificially creating
-fonts.  These are largely vestiges of the days when output devices did
-not have a wide variety of fonts, and when 'nroff' and 'troff' were
-separate programs.  Most of them are no longer necessary in GNU 'troff'.
-Nevertheless, they are supported.
-
- -- Escape: \H'height'
- -- Escape: \H'+height'
- -- Escape: \H'-height'
- -- Register: \n[.height]
-     Change (increment, decrement) the height of the current font, but
-     not the width.  If HEIGHT is zero, restore the original height.
-     Default scaling indicator is 'z'.
-
-     The read-only number register '.height' contains the font height as
-     set by '\H'.
-
-     Currently, only the '-Tps' and '-Tpdf' devices support this
-     feature.
-
-     Note that '\H' doesn't produce an input token in 'gtroff'.  As a
-     consequence, it can be used in requests like 'mc' (which expects a
-     single character as an argument) to change the font on the fly:
-
-          .mc \H'+5z'x\H'0'
-
-     In compatibility mode, 'gtroff' behaves differently: If an
-     increment or decrement is used, it is always taken relative to the
-     current point size and not relative to the previously selected font
-     height.  Thus,
-
-          .cp 1
-          \H'+5'test \H'+5'test
-
-     prints the word 'test' twice with the same font height (five points
-     larger than the current font size).
-
- -- Escape: \S'slant'
- -- Register: \n[.slant]
-     Slant the current font by SLANT degrees.  Positive values slant to
-     the right.  Only integer values are possible.
-
-     The read-only number register '.slant' contains the font slant as
-     set by '\S'.
-
-     Currently, only the '-Tps' and '-Tpdf' devices support this
-     feature.
-
-     Note that '\S' doesn't produce an input token in 'gtroff'.  As a
-     consequence, it can be used in requests like 'mc' (which expects a
-     single character as an argument) to change the font on the fly:
-
-          .mc \S'20'x\S'0'
-
-     This request is incorrectly documented in the original UNIX troff
-     manual; the slant is always set to an absolute value.
-
- -- Request: .ul [lines]
-     The 'ul' request normally underlines subsequent lines if a TTY
-     output device is used.  Otherwise, the lines are printed in italics
-     (only the term 'underlined' is used in the following).  The single
-     argument is the number of input lines to be underlined; with no
-     argument, the next line is underlined.  If LINES is zero or
-     negative, stop the effects of 'ul' (if it was active).  Requests
-     and empty lines do not count for computing the number of underlined
-     input lines, even if they produce some output like 'tl'.  Lines
-     inserted by macros (e.g. invoked by a trap) do count.
-
-     At the beginning of 'ul', the current font is stored and the
-     underline font is activated.  Within the span of a 'ul' request, it
-     is possible to change fonts, but after the last line affected by
-     'ul' the saved font is restored.
-
-     This number of lines still to be underlined is associated with the
-     current environment (*note Environments::).  The underline font can
-     be changed with the 'uf' request.
-
-     The 'ul' request does not underline spaces.
-
- -- Request: .cu [lines]
-     The 'cu' request is similar to 'ul' but underlines spaces as well
-     (if a TTY output device is used).
-
- -- Request: .uf font
-     Set the underline font (globally) used by 'ul' and 'cu'.  By
-     default, this is the font at position 2.  FONT can be either a
-     non-negative font position or the name of a font.
-
- -- Request: .bd font [offset]
- -- Request: .bd font1 font2 [offset]
- -- Register: \n[.b]
-     Artificially create a bold font by printing each glyph twice,
-     slightly offset.
-
-     Two syntax forms are available.
-
-        * Imitate a bold font unconditionally.  The first argument
-          specifies the font to embolden, and the second is the number
-          of basic units, minus one, by which the two glyphs are offset.
-          If the second argument is missing, emboldening is turned off.
-
-          FONT can be either a non-negative font position or the name of
-          a font.
-
-          OFFSET is available in the '.b' read-only register if a
-          special font is active; in the 'bd' request, its default unit
-          is 'u'.
-
-        * Imitate a bold form conditionally.  Embolden FONT1 by OFFSET
-          only if font FONT2 is the current font.  This command can be
-          issued repeatedly to set up different emboldening values for
-          different current fonts.  If the second argument is missing,
-          emboldening is turned off for this particular current font.
-
-          This affects special fonts only (either set up with the
-          'special' command in font files or with the 'fspecial'
-          request).
-
- -- Request: .cs font [width [em-size]]
-     Switch to and from "constant glyph space mode".  If activated, the
-     width of every glyph is WIDTH/36 ems.  The em size is given
-     absolutely by EM-SIZE; if this argument is missing, the em value is
-     taken from the current font size (as set with the 'ps' request)
-     when the font is effectively in use.  Without second and third
-     argument, constant glyph space mode is deactivated.
-
-     Default scaling indicator for EM-SIZE is 'z'; WIDTH is an integer.
-
-\1f
-File: groff.info,  Node: Ligatures and Kerning,  Prev: Artificial Fonts,  Up: Fonts and Symbols
-
-5.17.8 Ligatures and Kerning
-----------------------------
-
-Ligatures are groups of characters that are run together, i.e, producing
-a single glyph.  For example, the letters 'f' and 'i' can form a
-ligature 'fi' as in the word 'file'.  This produces a cleaner look
-(albeit subtle) to the printed output.  Usually, ligatures are not
-available in fonts for TTY output devices.
-
-   Most POSTSCRIPT fonts support the fi and fl ligatures.  The C/A/T
-typesetter that was the target of AT&T 'troff' also supported 'ff',
-'ffi', and 'ffl' ligatures.  Advanced typesetters or 'expert' fonts may
-include ligatures for 'ft' and 'ct', although GNU 'troff' does not
-support these (yet).
-
-   Only the current font is checked for ligatures and kerns; neither
-special fonts nor entities defined with the 'char' request (and its
-siblings) are taken into account.
-
- -- Request: .lg [flag]
- -- Register: \n[.lg]
-     Switch the ligature mechanism on or off; if the parameter is
-     non-zero or missing, ligatures are enabled, otherwise disabled.
-     Default is on.  The current ligature mode can be found in the
-     read-only number register '.lg' (set to 1 or 2 if ligatures are
-     enabled, 0 otherwise).
-
-     Setting the ligature mode to 2 enables the two-character ligatures
-     (fi, fl, and ff) and disables the three-character ligatures (ffi
-     and ffl).
-
-   "Pairwise kerning" is another subtle typesetting mechanism that
-modifies the distance between a glyph pair to improve readability.  In
-most cases (but not always) the distance is decreased.  Typewriter-like
-fonts and fonts for terminals where all glyphs have the same width don't
-use kerning.
-
- -- Request: .kern [flag]
- -- Register: \n[.kern]
-     Switch kerning on or off.  If the parameter is non-zero or missing,
-     enable pairwise kerning, otherwise disable it.  The read-only
-     number register '.kern' is set to 1 if pairwise kerning is enabled,
-     0 otherwise.
-
-     If the font description file contains pairwise kerning information,
-     glyphs from that font are kerned.  Kerning between two glyphs can
-     be inhibited by placing '\&' between them: 'V\&A'.
-
-     *Note Font File Format::.
-
-   "Track kerning" expands or reduces the space between glyphs.  This
-can be handy, for example, if you need to squeeze a long word onto a
-single line or spread some text to fill a narrow column.  It must be
-used with great care since it is usually considered bad typography if
-the reader notices the effect.
-
- -- Request: .tkf f s1 n1 s2 n2
-     Enable track kerning for font F.  If the current font is F the
-     width of every glyph is increased by an amount between N1 and N2
-     (N1, N2 can be negative); if the current point size is less than or
-     equal to S1 the width is increased by N1; if it is greater than or
-     equal to S2 the width is increased by N2; if the point size is
-     greater than or equal to S1 and less than or equal to S2 the
-     increase in width is a linear function of the point size.
-
-     The default scaling indicator is 'z' for S1 and S2, 'p' for N1 and
-     N2.
-
-     Note that the track kerning amount is added even to the rightmost
-     glyph in a line; for large values it is thus recommended to
-     increase the line length by the same amount to compensate it.
-
-   Sometimes, when typesetting letters of different fonts, more or less
-space at such boundaries are needed.  There are two escapes to help with
-this.
-
- -- Escape: \/
-     Increase the width of the preceding glyph so that the spacing
-     between that glyph and the following glyph is correct if the
-     following glyph is a roman glyph.  For example, if an italic 'f' is
-     immediately followed by a roman right parenthesis, then in many
-     fonts the top right portion of the 'f' overlaps the top left of the
-     right parenthesis.  Use this escape sequence whenever an italic
-     glyph is immediately followed by a roman glyph without any
-     intervening space.  This small amount of space is also called
-     "italic correction".
-
- -- Escape: \,
-     Modify the spacing of the following glyph so that the spacing
-     between that glyph and the preceding glyph is correct if the
-     preceding glyph is a roman glyph.  Use this escape sequence
-     whenever a roman glyph is immediately followed by an italic glyph
-     without any intervening space.  In analogy to above, this space
-     could be called "left italic correction", but this term isn't used
-     widely.
-
- -- Escape: \&
-     Insert a zero-width character, which is invisible.  Its intended
-     use is to stop interaction of a character with its surrounding.
-
-        * It prevents the insertion of extra space after an
-          end-of-sentence character.
-
-               Test.
-               Test.
-                   => Test.  Test.
-               Test.\&
-               Test.
-                   => Test. Test.
-
-        * It prevents interpretation of a control character at the
-          beginning of an input line.
-
-               .Test
-                   => warning: `Test' not defined
-               \&.Test
-                   => .Test
-
-        * It prevents kerning between two glyphs.
-
-        * It is needed to map an arbitrary character to nothing in the
-          'tr' request (*note Character Translations::).
-
- -- Escape: \)
-     This escape is similar to '\&' except that it behaves like a
-     character declared with the 'cflags' request to be transparent for
-     the purposes of an end-of-sentence character.
-
-     Its main usage is in macro definitions to protect against arguments
-     starting with a control character.
-
-          .de xxx
-          \)\\$1
-          ..
-          .de yyy
-          \&\\$1
-          ..
-          This is a test.\c
-          .xxx '
-          This is a test.
-              =>This is a test.'  This is a test.
-          This is a test.\c
-          .yyy '
-          This is a test.
-              =>This is a test.' This is a test.
-
-\1f
-File: groff.info,  Node: Sizes,  Next: Strings,  Prev: Fonts and Symbols,  Up: gtroff Reference
-
-5.18 Sizes
-==========
-
-'gtroff' uses two dimensions with each line of text, type size and
-vertical spacing.  The "type size" is approximately the height of the
-tallest glyph.(1)  (*note Sizes-Footnote-1::) "Vertical spacing" is the
-amount of space 'gtroff' allows for a line of text; normally, this is
-about 20% larger than the current type size.  Ratios smaller than this
-can result in hard-to-read text; larger than this, it spreads the text
-out more vertically (useful for term papers).  By default, 'gtroff' uses
-10 point type on 12 point spacing.
-
-   The difference between type size and vertical spacing is known, by
-typesetters, as "leading" (this is pronounced 'ledding').
-
-* Menu:
-
-* Changing Type Sizes::
-* Fractional Type Sizes::
-
-\1f
-File: groff.info,  Node: Sizes-Footnotes,  Up: Sizes
-
-   (1) This is usually the parenthesis.  Note that in most cases the
-real dimensions of the glyphs in a font are _not_ related to its type
-size!  For example, the standard POSTSCRIPT font families 'Times Roman',
-'Helvetica', and 'Courier' can't be used together at 10pt; to get
-acceptable output, the size of 'Helvetica' has to be reduced by one
-point, and the size of 'Courier' must be increased by one point.
-
-\1f
-File: groff.info,  Node: Changing Type Sizes,  Next: Fractional Type Sizes,  Prev: Sizes,  Up: Sizes
-
-5.18.1 Changing Type Sizes
---------------------------
-
- -- Request: .ps [size]
- -- Request: .ps +size
- -- Request: .ps -size
- -- Escape: \ssize
- -- Register: \n[.s]
-     Use the 'ps' request or the '\s' escape to change (increase,
-     decrease) the type size (in points).  Specify SIZE as either an
-     absolute point size, or as a relative change from the current size.
-     The size 0 (for both '.ps' and '\s'), or no argument (for '.ps'
-     only), goes back to the previous size.
-
-     Default scaling indicator of 'size' is 'z'.  If 'size' is negative,
-     it is set to 1u.
-
-     The read-only number register '.s' returns the point size in points
-     as a decimal fraction.  This is a string.  To get the point size in
-     scaled points, use the '.ps' register instead.
-
-     '.s' is associated with the current environment (*note
-     Environments::).
-
-          snap, snap,
-          .ps +2
-          grin, grin,
-          .ps +2
-          wink, wink, \s+2nudge, nudge,\s+8 say no more!
-          .ps 10
-
-     The '\s' escape may be called in a variety of ways.  Much like
-     other escapes there must be a way to determine where the argument
-     ends and the text begins.  Any of the following forms are valid:
-
-     '\sN'
-          Set the point size to N points.  N must be either 0 or in the
-          range 4 to 39.
-
-     '\s+N'
-     '\s-N'
-          Increase or decrease the point size by N points.  N must be
-          exactly one digit.
-
-     '\s(NN'
-          Set the point size to NN points.  NN must be exactly two
-          digits.
-
-     '\s+(NN'
-     '\s-(NN'
-     '\s(+NN'
-     '\s(-NN'
-          Increase or decrease the point size by NN points.  NN must be
-          exactly two digits.
-
-     Note that '\s' doesn't produce an input token in 'gtroff'.  As a
-     consequence, it can be used in requests like 'mc' (which expects a
-     single character as an argument) to change the font on the fly:
-
-          .mc \s[20]x\s[0]
-
-     *Note Fractional Type Sizes::, for yet another syntactical form of
-     using the '\s' escape.
-
- -- Request: .sizes s1 s2 ... sn [0]
-     Some devices may only have certain permissible sizes, in which case
-     'gtroff' rounds to the nearest permissible size.  The 'DESC' file
-     specifies which sizes are permissible for the device.
-
-     Use the 'sizes' request to change the permissible sizes for the
-     current output device.  Arguments are in scaled points; the
-     'sizescale' line in the 'DESC' file for the output device provides
-     the scaling factor.  For example, if the scaling factor is 1000,
-     then the value 12000 is 12 points.
-
-     Each argument can be a single point size (such as '12000'), or a
-     range of sizes (such as '4000-72000').  You can optionally end the
-     list with a zero.
-
- -- Request: .vs [space]
- -- Request: .vs +space
- -- Request: .vs -space
- -- Register: \n[.v]
-     Change (increase, decrease) the vertical spacing by SPACE.  The
-     default scaling indicator is 'p'.
-
-     If 'vs' is called without an argument, the vertical spacing is
-     reset to the previous value before the last call to 'vs'.
-
-     'gtroff' creates a warning of type 'range' if SPACE is negative;
-     the vertical spacing is then set to smallest positive value, the
-     vertical resolution (as given in the '.V' register).
-
-     Note that '.vs 0' isn't saved in a diversion since it doesn't
-     result in a vertical motion.  You explicitly have to repeat this
-     command before inserting the diversion.
-
-     The read-only number register '.v' contains the current vertical
-     spacing; it is associated with the current environment (*note
-     Environments::).
-
-   The effective vertical line spacing consists of four components.
-Breaking a line causes the following actions (in the given order).
-
-   * Move the current point vertically by the "extra pre-vertical line
-     space".  This is the minimum value of all '\x' escapes with a
-     negative argument in the current output line.
-
-   * Move the current point vertically by the vertical line spacing as
-     set with the 'vs' request.
-
-   * Output the current line.
-
-   * Move the current point vertically by the "extra post-vertical line
-     space".  This is the maximum value of all '\x' escapes with a
-     positive argument in the line that has just been output.
-
-   * Move the current point vertically by the "post-vertical line
-     spacing" as set with the 'pvs' request.
-
-   It is usually better to use 'vs' or 'pvs' instead of 'ls' to produce
-double-spaced documents: 'vs' and 'pvs' have a finer granularity for the
-inserted vertical space compared to 'ls'; furthermore, certain
-preprocessors assume single-spacing.
-
-   *Note Manipulating Spacing::, for more details on the '\x' escape and
-the 'ls' request.
-
- -- Request: .pvs [space]
- -- Request: .pvs +space
- -- Request: .pvs -space
- -- Register: \n[.pvs]
-     Change (increase, decrease) the post-vertical spacing by SPACE.
-     The default scaling indicator is 'p'.
-
-     If 'pvs' is called without an argument, the post-vertical spacing
-     is reset to the previous value before the last call to 'pvs'.
-
-     'gtroff' creates a warning of type 'range' if SPACE is zero or
-     negative; the vertical spacing is then set to zero.
-
-     The read-only number register '.pvs' contains the current
-     post-vertical spacing; it is associated with the current
-     environment (*note Environments::).
-
-\1f
-File: groff.info,  Node: Fractional Type Sizes,  Prev: Changing Type Sizes,  Up: Sizes
-
-5.18.2 Fractional Type Sizes
-----------------------------
-
-A "scaled point" is equal to 1/SIZESCALE points, where SIZESCALE is
-specified in the 'DESC' file (1 by default).  There is a new scale
-indicator 'z', which has the effect of multiplying by SIZESCALE.
-Requests and escape sequences in 'gtroff' interpret arguments that
-represent a point size as being in units of scaled points, but they
-evaluate each such argument using a default scale indicator of 'z'.
-Arguments treated in this way are the argument to the 'ps' request, the
-third argument to the 'cs' request, the second and fourth arguments to
-the 'tkf' request, the argument to the '\H' escape sequence, and those
-variants of the '\s' escape sequence that take a numeric expression as
-their argument (see below).
-
-   For example, suppose SIZESCALE is 1000; then a scaled point is
-equivalent to a millipoint; the request '.ps 10.25' is equivalent to
-'.ps 10.25z' and thus sets the point size to 10250 scaled points, which
-is equal to 10.25 points.
-
-   'gtroff' disallows the use of the 'z' scale indicator in instances
-where it would make no sense, such as a numeric expression whose default
-scale indicator was neither 'u' nor 'z'.  Similarly it would make no
-sense to use a scaling indicator other than 'z' or 'u' in a numeric
-expression whose default scale indicator was 'z', and so 'gtroff'
-disallows this as well.
-
-   There is also new scale indicator 's', which multiplies by the number
-of units in a scaled point.  So, for example, '\n[.ps]s' is equal to
-'1m'.  Be sure not to confuse the 's' and 'z' scale indicators.
-
- -- Register: \n[.ps]
-     A read-only number register returning the point size in scaled
-     points.
-
-     '.ps' is associated with the current environment (*note
-     Environments::).
-
- -- Register: \n[.psr]
- -- Register: \n[.sr]
-     The last-requested point size in scaled points is contained in the
-     '.psr' read-only number register.  The last requested point size in
-     points as a decimal fraction can be found in '.sr'.  This is a
-     string-valued read-only number register.
-
-     Note that the requested point sizes are device-independent, whereas
-     the values returned by the '.ps' and '.s' registers are not.  For
-     example, if a point size of 11pt is requested, and a 'sizes'
-     request (or a 'sizescale' line in a 'DESC' file) specifies 10.95pt
-     instead, this value is actually used.
-
-     Both registers are associated with the current environment (*note
-     Environments::).
-
-   The '\s' escape has the following syntax for working with fractional
-type sizes:
-
-'\s[N]'
-'\s'N''
-     Set the point size to N scaled points; N is a numeric expression
-     with a default scale indicator of 'z'.
-
-'\s[+N]'
-'\s[-N]'
-'\s+[N]'
-'\s-[N]'
-'\s'+N''
-'\s'-N''
-'\s+'N''
-'\s-'N''
-     Increase or or decrease the point size by N scaled points; N is a
-     numeric expression (which may start with a minus sign) with a
-     default scale indicator of 'z'.
-
-   *Note Font Files::.
-
-\1f
-File: groff.info,  Node: Strings,  Next: Conditionals and Loops,  Prev: Sizes,  Up: gtroff Reference
-
-5.19 Strings
-============
-
-'gtroff' has string variables, which are entirely for user convenience
-(i.e. there are no built-in strings exept '.T', but even this is a
-read-write string variable).
-
-   Although the following requests can be used to create strings, simply
-using an undefined string will cause it to be defined as empty.  *Note
-Identifiers::.
-
- -- Request: .ds name [string]
- -- Request: .ds1 name [string]
- -- Escape: \*n
- -- Escape: \*(nm
- -- Escape: \*[name arg1 arg2 ...]
-     Define and access a string variable NAME (one-character name N,
-     two-character name NM).  If NAME already exists, 'ds' overwrites
-     the previous definition.  Only the syntax form using brackets can
-     take arguments that are handled identically to macro arguments; the
-     single exception is that a closing bracket as an argument must be
-     enclosed in double quotes.  *Note Request and Macro Arguments::,
-     and *note Parameters::.
-
-     Example:
-
-          .ds foo a \\$1 test
-          .
-          This is \*[foo nice].
-              => This is a nice test.
-
-     The '\*' escape "interpolates" (expands in-place) a
-     previously-defined string variable.  To be more precise, the stored
-     string is pushed onto the input stack, which is then parsed by
-     'gtroff'.  Similar to number registers, it is possible to nest
-     strings, i.e., string variables can be called within string
-     variables.
-
-     If the string named by the '\*' escape does not exist, it is
-     defined as empty, and a warning of type 'mac' is emitted (see *note
-     Debugging::, for more details).
-
-     *Caution:* Unlike other requests, the second argument to the 'ds'
-     request takes up the entire line including trailing spaces.  This
-     means that comments on a line with such a request can introduce
-     unwanted space into a string.
-
-          .ds UX \s-1UNIX\s0\u\s-3tm\s0\d \" UNIX trademark
-
-     Instead the comment should be put on another line or have the
-     comment escape adjacent with the end of the string.
-
-          .ds UX \s-1UNIX\s0\u\s-3tm\s0\d\"  UNIX trademark
-
-     To produce leading space the string can be started with a double
-     quote.  No trailing quote is needed; in fact, any trailing quote is
-     included in your string.
-
-          .ds sign "           Yours in a white wine sauce,
-
-     Strings are not limited to a single line of text.  A string can
-     span several lines by escaping the newlines with a backslash.  The
-     resulting string is stored _without_ the newlines.
-
-          .ds foo lots and lots \
-          of text are on these \
-          next several lines
-
-     It is not possible to have real newlines in a string.  To put a
-     single double quote character into a string, use two consecutive
-     double quote characters.
-
-     The 'ds1' request turns off compatibility mode while interpreting a
-     string.  To be more precise, a "compatibility save" input token is
-     inserted at the beginning of the string, and a "compatibility
-     restore" input token at the end.
-
-          .nr xxx 12345
-          .ds aa The value of xxx is \\n[xxx].
-          .ds1 bb The value of xxx ix \\n[xxx].
-          .
-          .cp 1
-          .
-          \*(aa
-              => warning: number register `[' not defined
-              => The value of xxx is 0xxx].
-          \*(bb
-              => The value of xxx ix 12345.
-
-     Strings, macros, and diversions (and boxes) share the same name
-     space.  Internally, even the same mechanism is used to store them.
-     This has some interesting consequences.  For example, it is
-     possible to call a macro with string syntax and vice versa.
-
-          .de xxx
-          a funny test.
-          ..
-          This is \*[xxx]
-              => This is a funny test.
-
-          .ds yyy a funny test
-          This is
-          .yyy
-              => This is a funny test.
-
-     In particular, interpolating a string does not hide existing macro
-     arguments.  Thus in a macro, a more efficient way of doing
-
-          .xx \\$@
-
-     is
-
-          \\*[xx]\\
-
-     Note that the latter calling syntax doesn't change the value of
-     '\$0', which is then inherited from the calling macro.
-
-     Diversions and boxes can be also called with string syntax.
-
-     Another consequence is that you can copy one-line diversions or
-     boxes to a string.
-
-          .di xxx
-          a \fItest\fR
-          .br
-          .di
-          .ds yyy This is \*[xxx]\c
-          \*[yyy].
-              => This is a test.
-
-     As the previous example shows, it is possible to store formatted
-     output in strings.  The '\c' escape prevents the insertion of an
-     additional blank line in the output.
-
-     Copying diversions longer than a single output line produces
-     unexpected results.
-
-          .di xxx
-          a funny
-          .br
-          test
-          .br
-          .di
-          .ds yyy This is \*[xxx]\c
-          \*[yyy].
-              => test This is a funny.
-
-     Usually, it is not predictable whether a diversion contains one or
-     more output lines, so this mechanism should be avoided.  With UNIX
-     'troff', this was the only solution to strip off a final newline
-     from a diversion.  Another disadvantage is that the spaces in the
-     copied string are already formatted, making them unstretchable.
-     This can cause ugly results.
-
-     A clean solution to this problem is available in GNU 'troff', using
-     the requests 'chop' to remove the final newline of a diversion, and
-     'unformat' to make the horizontal spaces stretchable again.
-
-          .box xxx
-          a funny
-          .br
-          test
-          .br
-          .box
-          .chop xxx
-          .unformat xxx
-          This is \*[xxx].
-              => This is a funny test.
-
-     *Note Gtroff Internals::, for more information.
-
- -- Request: .as name [string]
- -- Request: .as1 name [string]
-     The 'as' request is similar to 'ds' but appends STRING to the
-     string stored as NAME instead of redefining it.  If NAME doesn't
-     exist yet, it is created.
-
-          .as sign " with shallots, onions and garlic,
-
-     The 'as1' request is similar to 'as', but compatibility mode is
-     switched off while the appended string is interpreted.  To be more
-     precise, a "compatibility save" input token is inserted at the
-     beginning of the appended string, and a "compatibility restore"
-     input token at the end.
-
-   Rudimentary string manipulation routines are given with the next two
-requests.
-
- -- Request: .substring str n1 [n2]
-     Replace the string named STR with the substring defined by the
-     indices N1 and N2.  The first character in the string has index 0.
-     If N2 is omitted, it is implicitly set to the largest valid value
-     (the string length minus one).  If the index value N1 or N2 is
-     negative, it is counted from the end of the string, going
-     backwards: The last character has index -1, the character before
-     the last character has index -2, etc.
-
-          .ds xxx abcdefgh
-          .substring xxx 1 -4
-          \*[xxx]
-              => bcde
-          .substring xxx 2
-          \*[xxx]
-              => de
-
- -- Request: .length reg str
-     Compute the number of characters of STR and return it in the number
-     register REG.  If REG doesn't exist, it is created.  'str' is read
-     in copy mode.
-
-          .ds xxx abcd\h'3i'efgh
-          .length yyy \*[xxx]
-          \n[yyy]
-              => 14
-
- -- Request: .rn xx yy
-     Rename the request, macro, diversion, or string XX to YY.
-
- -- Request: .rm xx
-     Remove the request, macro, diversion, or string XX.  'gtroff'
-     treats subsequent invocations as if the object had never been
-     defined.
-
- -- Request: .als new old
-     Create an alias named NEW for the request, string, macro, or
-     diversion object named OLD.  The new name and the old name are
-     exactly equivalent (it is similar to a hard rather than a soft
-     link).  If OLD is undefined, 'gtroff' generates a warning of type
-     'mac' and ignores the request.
-
-     To understand how the 'als' request works it is probably best to
-     think of two different pools: one pool for objects (macros,
-     strings, etc.), and another one for names.  As soon as an object is
-     defined, 'gtroff' adds it to the object pool, adds its name to the
-     name pool, and creates a link between them.  When 'als' creates an
-     alias, it adds a new name to the name pool that gets linked to the
-     same object as the old name.
-
-     Now consider this example.
-
-          .de foo
-          ..
-          .
-          .als bar foo
-          .
-          .de bar
-          .  foo
-          ..
-          .
-          .bar
-              => input stack limit exceeded
-
-     The definition of macro 'bar' replaces the old object this name is
-     linked to.  However, the alias to 'foo' is still active!  In other
-     words, 'foo' is still linked to the same object as 'bar', and the
-     result of calling 'bar' is an infinite, recursive loop that finally
-     leads to an error.
-
-     To undo an alias, simply call 'rm' on the aliased name.  The object
-     itself is not destroyed until there are no more aliases.
-
- -- Request: .chop xx
-     Remove (chop) the last character from the macro, string, or
-     diversion named XX.  This is useful for removing the newline from
-     the end of diversions that are to be interpolated as strings.  This
-     command can be used repeatedly; see *note Gtroff Internals::, for
-     details on nodes inserted additionally by 'gtroff'.
-
-   *Note Identifiers::, and *note Comments::.
-
-\1f
-File: groff.info,  Node: Conditionals and Loops,  Next: Writing Macros,  Prev: Strings,  Up: gtroff Reference
-
-5.20 Conditionals and Loops
-===========================
-
-* Menu:
-
-* Operators in Conditionals::
-* if-else::
-* while::
-
-\1f
-File: groff.info,  Node: Operators in Conditionals,  Next: if-else,  Prev: Conditionals and Loops,  Up: Conditionals and Loops
-
-5.20.1 Operators in Conditionals
---------------------------------
-
-In 'if', 'ie', and 'while' requests, in addition to ordinary *note
-Expressions::, there are several more operators available:
-
-'e'
-'o'
-     True if the current page is even or odd numbered (respectively).
-
-'n'
-     True if the document is being processed in nroff mode (i.e., the
-     '.nroff' command has been issued).  *Note Troff and Nroff Mode::.
-
-'t'
-     True if the document is being processed in troff mode (i.e., the
-     '.troff' command has been issued).  *Note Troff and Nroff Mode::.
-
-'v'
-     Always false.  This condition is for compatibility with other
-     'troff' versions only (identifying a '-Tversatec' device).
-
-''XXX'YYY''
-     True if the output produced by XXX is equal to the output produced
-     by YYY.  Other characters can be used in place of the single
-     quotes; the same set of delimiters as for the '\D' escape is used
-     (*note Escapes::).  'gtroff' formats XXX and YYY in separate
-     environments; after the comparison the resulting data is discarded.
-
-          .ie "|"\fR|\fP" \
-          true
-          .el \
-          false
-              => true
-
-     The resulting motions, glyph sizes, and fonts have to match,(1)
-     (*note Operators in Conditionals-Footnote-1::) and not the
-     individual motion, size, and font requests.  In the previous
-     example, '|' and '\fR|\fP' both result in a roman '|' glyph with
-     the same point size and at the same location on the page, so the
-     strings are equal.  If '.ft I' had been added before the '.ie', the
-     result would be "false" because (the first) '|' produces an italic
-     '|' rather than a roman one.
-
-     To compare strings without processing, surround the data with '\?'.
-
-          .ie "\?|\?"\?\fR|\fP\?" \
-          true
-          .el \
-          false
-              => false
-
-     Since data protected with '\?' is read in copy-in mode it is even
-     possible to use incomplete input without causing an error.
-
-          .ds a \[
-          .ds b \[
-          .ie '\?\*a\?'\?\*b\?' \
-          true
-          .el \
-          false
-              => true
-
-'r XXX'
-     True if there is a number register named XXX.
-
-'d XXX'
-     True if there is a string, macro, diversion, or request named XXX.
-
-'m XXX'
-     True if there is a color named XXX.
-
-'c G'
-     True if there is a glyph G available(2) (*note Operators in
-     Conditionals-Footnote-2::); G is either an ASCII character or a
-     special character ('\N'XXX'', '\(GG' or '\[GGG]'); the condition is
-     also true if G has been defined by the 'char' request.
-
-'F FONT'
-     True if a font named FONT exists.  FONT is handled as if it was
-     opened with the 'ft' request (this is, font translation and styles
-     are applied), without actually mounting it.
-
-     This test doesn't load the complete font but only its header to
-     verify its validity.
-
-'S STYLE'
-     True if style STYLE has been registered.  Font translation is
-     applied.
-
-   Note that these operators can't be combined with other operators like
-':' or '&'; only a leading '!' (without whitespace between the
-exclamation mark and the operator) can be used to negate the result.
-
-     .nr xxx 1
-     .ie !r xxx \
-     true
-     .el \
-     false
-         => false
-
-   A whitespace after '!' always evaluates to zero (this bizarre
-behaviour is due to compatibility with UNIX 'troff').
-
-     .nr xxx 1
-     .ie ! r xxx \
-     true
-     .el \
-     false
-         => r xxx true
-
-   It is possible to omit the whitespace before the argument to the 'r',
-'d', and 'c' operators.
-
-   *Note Expressions::.
-
-\1f
-File: groff.info,  Node: Operators in Conditionals-Footnotes,  Up: Operators in Conditionals
-
-   (1) The created output nodes must be identical.  *Note Gtroff
-Internals::.
-
-   (2) The name of this conditional operator is a misnomer since it
-tests names of output glyphs.
-
-\1f
-File: groff.info,  Node: if-else,  Next: while,  Prev: Operators in Conditionals,  Up: Conditionals and Loops
-
-5.20.2 if-else
---------------
-
-'gtroff' has if-then-else constructs like other languages, although the
-formatting can be painful.
-
- -- Request: .if expr anything
-
-     Evaluate the expression EXPR, and executes ANYTHING (the remainder
-     of the line) if EXPR evaluates to a value greater than zero (true).
-     ANYTHING is interpreted as though it was on a line by itself
-     (except that leading spaces are swallowed).  *Note Operators in
-     Conditionals::, for more info.
-
-          .nr xxx 1
-          .nr yyy 2
-          .if ((\n[xxx] == 1) & (\n[yyy] == 2)) true
-              => true
-
- -- Request: .nop anything
-     Executes ANYTHING.  This is similar to '.if 1'.
-
- -- Request: .ie expr anything
- -- Request: .el anything
-     Use the 'ie' and 'el' requests to write an if-then-else.  The first
-     request is the 'if' part and the latter is the 'else' part.
-
-          .ie n .ls 2 \" double-spacing in nroff
-          .el   .ls 1 \" single-spacing in troff
-
- -- Escape: \{
- -- Escape: \}
-     In many cases, an if (or if-else) construct needs to execute more
-     than one request.  This can be done using the escapes '\{' (which
-     must start the first line) and '\}' (which must end the last line).
-
-          .ie t \{\
-          .    ds lq ``
-          .    ds rq ''
-          .\}
-          .el \{\
-          .    ds lq ""
-          .    ds rq ""
-          .\}
-
-   *Note Expressions::.
-
-\1f
-File: groff.info,  Node: while,  Prev: if-else,  Up: Conditionals and Loops
-
-5.20.3 while
-------------
-
-'gtroff' provides a looping construct using the 'while' request, which
-is used much like the 'if' (and related) requests.
-
- -- Request: .while expr anything
-     Evaluate the expression EXPR, and repeatedly execute ANYTHING (the
-     remainder of the line) until EXPR evaluates to 0.
-
-          .nr a 0 1
-          .while (\na < 9) \{\
-          \n+a,
-          .\}
-          \n+a
-              => 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
-
-     Some remarks.
-
-        * The body of a 'while' request is treated like the body of a
-          'de' request: 'gtroff' temporarily stores it in a macro that
-          is deleted after the loop has been exited.  It can
-          considerably slow down a macro if the body of the 'while'
-          request (within the macro) is large.  Each time the macro is
-          executed, the 'while' body is parsed and stored again as a
-          temporary macro.
-
-               .de xxx
-               .  nr num 10
-               .  while (\\n[num] > 0) \{\
-               .    \" many lines of code
-               .    nr num -1
-               .  \}
-               ..
-
-          The traditional and ofter better solution (UNIX 'troff'
-          doesn't have the 'while' request) is to use a recursive macro
-          instead that is parsed only once during its definition.
-
-               .de yyy
-               .  if (\\n[num] > 0) \{\
-               .    \" many lines of code
-               .    nr num -1
-               .    yyy
-               .  \}
-               ..
-               .
-               .de xxx
-               .  nr num 10
-               .  yyy
-               ..
-
-          Note that the number of available recursion levels is set
-          to 1000 (this is a compile-time constant value of 'gtroff').
-
-        * The closing brace of a 'while' body must end a line.
-
-               .if 1 \{\
-               .  nr a 0 1
-               .  while (\n[a] < 10) \{\
-               .    nop \n+[a]
-               .\}\}
-                   => unbalanced \{ \}
-
- -- Request: .break
-     Break out of a 'while' loop.  Be sure not to confuse this with the
-     'br' request (causing a line break).
-
- -- Request: .continue
-     Finish the current iteration of a 'while' loop, immediately
-     restarting the next iteration.
-
-   *Note Expressions::.
-
-\1f
-File: groff.info,  Node: Writing Macros,  Next: Page Motions,  Prev: Conditionals and Loops,  Up: gtroff Reference
-
-5.21 Writing Macros
-===================
-
-A "macro" is a collection of text and embedded commands that can be
-invoked multiple times.  Use macros to define common operations.  *Note
-Strings::, for a (limited) alternative syntax to call macros.
-
-   Although the following requests can be used to create macros, simply
-using an undefined macro will cause it to be defined as empty.  *Note
-Identifiers::.
-
- -- Request: .de name [end]
- -- Request: .de1 name [end]
- -- Request: .dei name [end]
- -- Request: .dei1 name [end]
-     Define a new macro named NAME.  'gtroff' copies subsequent lines
-     (starting with the next one) into an internal buffer until it
-     encounters the line '..' (two dots).  If the optional second
-     argument to 'de' is present it is used as the macro closure request
-     instead of '..'.
-
-     There can be whitespace after the first dot in the line containing
-     the ending token (either '.' or macro 'END').  Don't insert a tab
-     character immediately after the '..', otherwise it isn't recognized
-     as the end-of-macro symbol.(1)  (*note Writing Macros-Footnote-1::)
-
-     Here a small example macro called 'P' that causes a break and
-     inserts some vertical space.  It could be used to separate
-     paragraphs.
-
-          .de P
-          .  br
-          .  sp .8v
-          ..
-
-     The following example defines a macro within another.  Remember
-     that expansion must be protected twice; once for reading the macro
-     and once for executing.
-
-          \# a dummy macro to avoid a warning
-          .de end
-          ..
-          .
-          .de foo
-          .  de bar end
-          .    nop \f[B]Hallo \\\\$1!\f[]
-          .  end
-          ..
-          .
-          .foo
-          .bar Joe
-              => Hallo Joe!
-
-     Since '\f' has no expansion, it isn't necessary to protect its
-     backslash.  Had we defined another macro within 'bar' that takes a
-     parameter, eight backslashes would be necessary before '$1'.
-
-     The 'de1' request turns off compatibility mode while executing the
-     macro.  On entry, the current compatibility mode is saved and
-     restored at exit.
-
-          .nr xxx 12345
-          .
-          .de aa
-          The value of xxx is \\n[xxx].
-          ..
-          .de1 bb
-          The value of xxx ix \\n[xxx].
-          ..
-          .
-          .cp 1
-          .
-          .aa
-              => warning: number register `[' not defined
-              => The value of xxx is 0xxx].
-          .bb
-              => The value of xxx ix 12345.
-
-     The 'dei' request defines a macro indirectly.  That is, it expands
-     strings whose names are NAME or END before performing the append.
-
-     This:
-
-          .ds xx aa
-          .ds yy bb
-          .dei xx yy
-
-     is equivalent to:
-
-          .de aa bb
-
-     The 'dei1' request is similar to 'dei' but with compatibility mode
-     switched off during execution of the defined macro.
-
-     If compatibility mode is on, 'de' (and 'dei') behave similar to
-     'de1' (and 'dei1'): A 'compatibility save' token is inserted at the
-     beginning, and a 'compatibility restore' token at the end, with
-     compatibility mode switched on during execution.  *Note Gtroff
-     Internals::, for more information on switching compatibility mode
-     on and off in a single document.
-
-     Using 'trace.tmac', you can trace calls to 'de' and 'de1'.
-
-     Note that macro identifiers are shared with identifiers for strings
-     and diversions.
-
-     *Note the description of the 'als' request: als, for possible
-     pitfalls if redefining a macro that has been aliased.
-
- -- Request: .am name [end]
- -- Request: .am1 name [end]
- -- Request: .ami name [end]
- -- Request: .ami1 name [end]
-     Works similarly to 'de' except it appends onto the macro named
-     NAME.  So, to make the previously defined 'P' macro actually do
-     indented instead of block paragraphs, add the necessary code to the
-     existing macro like this:
-
-          .am P
-          .ti +5n
-          ..
-
-     The 'am1' request turns off compatibility mode while executing the
-     appended macro piece.  To be more precise, a "compatibility save"
-     input token is inserted at the beginning of the appended code, and
-     a "compatibility restore" input token at the end.
-
-     The 'ami' request appends indirectly, meaning that 'gtroff' expands
-     strings whose names are NAME or END before performing the append.
-
-     The 'ami1' request is similar to 'ami' but compatibility mode is
-     switched off during execution of the defined macro.
-
-     Using 'trace.tmac', you can trace calls to 'am' and 'am1'.
-
-   *Note Strings::, for the 'als' and 'rn' request to create an alias
-and rename a macro, respectively.
-
-   The 'de', 'am', 'di', 'da', 'ds', and 'as' requests (together with
-its variants) only create a new object if the name of the macro,
-diversion or string diversion is currently undefined or if it is defined
-to be a request; normally they modify the value of an existing object.
-
- -- Request: .return [anything]
-     Exit a macro, immediately returning to the caller.
-
-     If called with an argument, exit twice, namely the current macro
-     and the macro one level higher.  This is used to define a wrapper
-     macro for 'return' in 'trace.tmac'.
-
-* Menu:
-
-* Copy-in Mode::
-* Parameters::
-
-\1f
-File: groff.info,  Node: Writing Macros-Footnotes,  Up: Writing Macros
-
-   (1) While it is possible to define and call a macro '.' with
-
-     .de .
-     .  tm foo
-     ..
-     .
-     ..    \" This calls macro `.'!
-
-you can't use this as the end-of-macro macro: during a macro definition,
-'..' is never handled as a call to '.', even if you say '.de foo .'
-explicitly.
-
diff --git a/doc/groff.info-2 b/doc/groff.info-2
deleted file mode 100644 (file)
index a6c9348..0000000
+++ /dev/null
@@ -1,8155 +0,0 @@
-This is groff.info, produced by makeinfo version 5.2dev from
-groff.texinfo.
-
-This manual documents GNU 'troff' version 1.22.3.
-
-   Copyright © 1994-2014 Free Software Foundation, Inc.
-
-     Permission is granted to copy, distribute and/or modify this
-     document under the terms of the GNU Free Documentation License,
-     Version 1.3 or any later version published by the Free Software
-     Foundation; with no Invariant Sections, with the Front-Cover texts
-     being "A GNU Manual," and with the Back-Cover Texts as in (a)
-     below.  A copy of the license is included in the section entitled
-     "GNU Free Documentation License."
-
-     (a) The FSF's Back-Cover Text is: "You have the freedom to copy and
-     modify this GNU manual.  Buying copies from the FSF supports it in
-     developing GNU and promoting software freedom."
-INFO-DIR-SECTION Typesetting
-START-INFO-DIR-ENTRY
-* Groff: (groff).               The GNU troff document formatting system.
-END-INFO-DIR-ENTRY
-
-\1f
-File: groff.info,  Node: Copy-in Mode,  Next: Parameters,  Prev: Writing Macros,  Up: Writing Macros
-
-5.21.1 Copy-in Mode
--------------------
-
-When 'gtroff' reads in the text for a macro, string, or diversion, it
-copies the text (including request lines, but excluding escapes) into an
-internal buffer.  Escapes are converted into an internal form, except
-for '\n', '\$', '\*', '\\' and '\<RET>', which are evaluated and
-inserted into the text where the escape was located.  This is known as
-"copy-in" mode or "copy" mode.
-
-   What this means is that you can specify when these escapes are to be
-evaluated (either at copy-in time or at the time of use) by insulating
-the escapes with an extra backslash.  Compare this to the '\def' and
-'\edef' commands in TeX.
-
-   The following example prints the numbers 20 and 10:
-
-     .nr x 20
-     .de y
-     .nr x 10
-     \&\nx
-     \&\\nx
-     ..
-     .y
-
-\1f
-File: groff.info,  Node: Parameters,  Prev: Copy-in Mode,  Up: Writing Macros
-
-5.21.2 Parameters
------------------
-
-The arguments to a macro or string can be examined using a variety of
-escapes.
-
- -- Register: \n[.$]
-     The number of arguments passed to a macro or string.  This is a
-     read-only number register.
-
-     Note that the 'shift' request can change its value.
-
-   Any individual argument can be retrieved with one of the following
-escapes:
-
- -- Escape: \$n
- -- Escape: \$(nn
- -- Escape: \$[nnn]
-     Retrieve the Nth, NNth or NNNth argument.  As usual, the first form
-     only accepts a single number (larger than zero), the second a
-     two-digit number (larger or equal to 10), and the third any
-     positive integer value (larger than zero).  Macros and strings can
-     have an unlimited number of arguments.  Note that due to copy-in
-     mode, use two backslashes on these in actual use to prevent
-     interpolation until the macro is actually invoked.
-
- -- Request: .shift [n]
-     Shift the arguments 1 position, or as many positions as specified
-     by its argument.  After executing this request, argument I becomes
-     argument I-N; arguments 1 to N are no longer available.  Shifting
-     by negative amounts is currently undefined.
-
-     The register '.$' is adjusted accordingly.
-
- -- Escape: \$*
- -- Escape: \$@
-     In some cases it is convenient to use all of the arguments at once
-     (for example, to pass the arguments along to another macro).  The
-     '\$*' escape concatenates all the arguments separated by spaces.  A
-     similar escape is '\$@', which concatenates all the arguments with
-     each surrounded by double quotes, and separated by spaces.  If not
-     in compatibility mode, the input level of double quotes is
-     preserved (see *note Request and Macro Arguments::).
-
- -- Escape: \$^
-     Handle the parameters of a macro as if they were an argument to the
-     'ds' or similar requests.
-
-          .de foo
-          .  tm $1=`\\$1'
-          .  tm $2=`\\$2'
-          .  tm $*=`\\$*'
-          .  tm $@=`\\$@'
-          .  tm $^=`\\$^'
-          ..
-          .foo " This is a "test"
-              => $1=` This is a '
-              => $2=`test"'
-              => $*=` This is a  test"'
-              => $@=`" This is a " "test""'
-              => $^=`" This is a "test"'
-
-     This escape is useful mainly for macro packages like 'trace.tmac',
-     which redefines some requests and macros for debugging purposes.
-
- -- Escape: \$0
-     The name used to invoke the current macro.  The 'als' request can
-     make a macro have more than one name.
-
-     If a macro is called as a string (within another macro), the value
-     of '\$0' isn't changed.
-
-          .de foo
-          .  tm \\$0
-          ..
-          .als foo bar
-          .
-          .de aaa
-          .  foo
-          ..
-          .de bbb
-          .  bar
-          ..
-          .de ccc
-          \\*[foo]\\
-          ..
-          .de ddd
-          \\*[bar]\\
-          ..
-          .
-          .aaa
-              => foo
-          .bbb
-              => bar
-          .ccc
-              => ccc
-          .ddd
-              => ddd
-
-   *Note Request and Macro Arguments::.
-
-\1f
-File: groff.info,  Node: Page Motions,  Next: Drawing Requests,  Prev: Writing Macros,  Up: gtroff Reference
-
-5.22 Page Motions
-=================
-
-*Note Manipulating Spacing::, for a discussion of the main request for
-vertical motion, 'sp'.
-
- -- Request: .mk [reg]
- -- Request: .rt [dist]
-     The request 'mk' can be used to mark a location on a page, for
-     movement to later.  This request takes a register name as an
-     argument in which to store the current page location.  With no
-     argument it stores the location in an internal register.  The
-     results of this can be used later by the 'rt' or the 'sp' request
-     (or the '\v' escape).
-
-     The 'rt' request returns _upwards_ to the location marked with the
-     last 'mk' request.  If used with an argument, return to a position
-     which distance from the top of the page is DIST (no previous call
-     to 'mk' is necessary in this case).  Default scaling indicator is
-     'v'.
-
-     Here a primitive solution for a two-column macro.
-
-          .nr column-length 1.5i
-          .nr column-gap 4m
-          .nr bottom-margin 1m
-          .
-          .de 2c
-          .  br
-          .  mk
-          .  ll \\n[column-length]u
-          .  wh -\\n[bottom-margin]u 2c-trap
-          .  nr right-side 0
-          ..
-          .
-          .de 2c-trap
-          .  ie \\n[right-side] \{\
-          .    nr right-side 0
-          .    po -(\\n[column-length]u + \\n[column-gap]u)
-          .    \" remove trap
-          .    wh -\\n[bottom-margin]u
-          .  \}
-          .  el \{\
-          .    \" switch to right side
-          .    nr right-side 1
-          .    po +(\\n[column-length]u + \\n[column-gap]u)
-          .    rt
-          .  \}
-          ..
-          .
-          .pl 1.5i
-          .ll 4i
-          This is a small test that shows how the
-          rt request works in combination with mk.
-
-          .2c
-          Starting here, text is typeset in two columns.
-          Note that this implementation isn't robust
-          and thus not suited for a real two-column
-          macro.
-
-     Result:
-
-          This is a small test that shows how the
-          rt request works in combination with mk.
-
-          Starting  here,    isn't    robust
-          text is typeset    and   thus  not
-          in two columns.    suited  for   a
-          Note that  this    real two-column
-          implementation     macro.
-
-   The following escapes give fine control of movements about the page.
-
- -- Escape: \v'e'
-     Move vertically, usually from the current location on the page (if
-     no absolute position operator '|' is used).  The argument E
-     specifies the distance to move; positive is downwards and negative
-     upwards.  The default scaling indicator for this escape is 'v'.
-     Beware, however, that 'gtroff' continues text processing at the
-     point where the motion ends, so you should always balance motions
-     to avoid interference with text processing.
-
-     '\v' doesn't trigger a trap.  This can be quite useful; for
-     example, consider a page bottom trap macro that prints a marker in
-     the margin to indicate continuation of a footnote or something
-     similar.
-
-   There are some special-case escapes for vertical motion.
-
- -- Escape: \r
-     Move upwards 1v.
-
- -- Escape: \u
-     Move upwards .5v.
-
- -- Escape: \d
-     Move down .5v.
-
- -- Escape: \h'e'
-     Move horizontally, usually from the current location (if no
-     absolute position operator '|' is used).  The expression E
-     indicates how far to move: positive is rightwards and negative
-     leftwards.  The default scaling indicator for this escape is 'm'.
-
-     This horizontal space is not discarded at the end of a line.  To
-     insert discardable space of a certain length use the 'ss' request.
-
-   There are a number of special-case escapes for horizontal motion.
-
- -- Escape: \<SP>
-     An unbreakable and unpaddable (i.e. not expanded during filling)
-     space.  (Note: This is a backslash followed by a space.)
-
- -- Escape: \~
-     An unbreakable space that stretches like a normal inter-word space
-     when a line is adjusted.
-
- -- Escape: \|
-     A 1/6th em space.  Ignored for TTY output devices (rounded to
-     zero).
-
-     However, if there is a glyph defined in the current font file with
-     name '\|' (note the leading backslash), the width of this glyph is
-     used instead (even for TTYs).
-
- -- Escape: \^
-     A 1/12th em space.  Ignored for TTY output devices (rounded to
-     zero).
-
-     However, if there is a glyph defined in the current font file with
-     name '\^' (note the leading backslash), the width of this glyph is
-     used instead (even for TTYs).
-
- -- Escape: \0
-     A space the size of a digit.
-
-   The following string sets the TeX logo:
-
-     .ds TeX T\h'-.1667m'\v'.224m'E\v'-.224m'\h'-.125m'X
-
- -- Escape: \w'text'
- -- Register: \n[st]
- -- Register: \n[sb]
- -- Register: \n[rst]
- -- Register: \n[rsb]
- -- Register: \n[ct]
- -- Register: \n[ssc]
- -- Register: \n[skw]
-     Return the width of the specified TEXT in basic units.  This allows
-     horizontal movement based on the width of some arbitrary text (e.g.
-     given as an argument to a macro).
-
-          The length of the string `abc' is \w'abc'u.
-              => The length of the string `abc' is 72u.
-
-     Font changes may occur in TEXT, which don't affect current
-     settings.
-
-     After use, '\w' sets several registers:
-
-     'st'
-     'sb'
-          The highest and lowest point of the baseline, respectively, in
-          TEXT.
-
-     'rst'
-     'rsb'
-          Like the 'st' and 'sb' registers, but takes account of the
-          heights and depths of glyphs.  In other words, this gives the
-          highest and lowest point of TEXT.  Values below the baseline
-          are negative.
-
-     'ct'
-          Defines the kinds of glyphs occurring in TEXT:
-
-          0
-               only short glyphs, no descenders or tall glyphs.
-
-          1
-               at least one descender.
-
-          2
-               at least one tall glyph.
-
-          3
-               at least one each of a descender and a tall glyph.
-
-     'ssc'
-          The amount of horizontal space (possibly negative) that should
-          be added to the last glyph before a subscript.
-
-     'skw'
-          How far to right of the center of the last glyph in the '\w'
-          argument, the center of an accent from a roman font should be
-          placed over that glyph.
-
- -- Escape: \kp
- -- Escape: \k(ps
- -- Escape: \k[position]
-     Store the current horizontal position in the _input_ line in number
-     register with name POSITION (one-character name P, two-character
-     name PS).  Use this, for example, to return to the beginning of a
-     string for highlighting or other decoration.
-
- -- Register: \n[hp]
-     The current horizontal position at the input line.
-
- -- Register: \n[.k]
-     A read-only number register containing the current horizontal
-     output position (relative to the current indentation).
-
- -- Escape: \o'abc'
-     Overstrike glyphs A, B, C, ...; the glyphs are centered, and the
-     resulting spacing is the largest width of the affected glyphs.
-
- -- Escape: \zg
-     Print glyph G with zero width, i.e., without spacing.  Use this to
-     overstrike glyphs left-aligned.
-
- -- Escape: \Z'anything'
-     Print ANYTHING, then restore the horizontal and vertical position.
-     The argument may not contain tabs or leaders.
-
-     The following is an example of a strike-through macro:
-
-          .de ST
-          .nr ww \w'\\$1'
-          \Z@\v'-.25m'\l'\\n[ww]u'@\\$1
-          ..
-          .
-          This is
-          .ST "a test"
-          an actual emergency!
-
-\1f
-File: groff.info,  Node: Drawing Requests,  Next: Traps,  Prev: Page Motions,  Up: gtroff Reference
-
-5.23 Drawing Requests
-=====================
-
-'gtroff' provides a number of ways to draw lines and other figures on
-the page.  Used in combination with the page motion commands (see *note
-Page Motions::, for more info), a wide variety of figures can be drawn.
-However, for complex drawings these operations can be quite cumbersome,
-and it may be wise to use graphic preprocessors like 'gpic' or 'ggrn'.
-*Note gpic::, and *note ggrn::, for more information.
-
-   All drawing is done via escapes.
-
- -- Escape: \l'l'
- -- Escape: \l'lg'
-     Draw a line horizontally.  L is the length of the line to be drawn.
-     If it is positive, start the line at the current location and draw
-     to the right; its end point is the new current location.  Negative
-     values are handled differently: The line starts at the current
-     location and draws to the left, but the current location doesn't
-     move.
-
-     L can also be specified absolutely (i.e. with a leading '|'), which
-     draws back to the beginning of the input line.  Default scaling
-     indicator is 'm'.
-
-     The optional second parameter G is a glyph to draw the line with.
-     If this second argument is not specified, 'gtroff' uses the
-     underscore glyph, '\[ru]'.
-
-     To separate the two arguments (to prevent 'gtroff' from
-     interpreting a drawing glyph as a scaling indicator if the glyph is
-     represented by a single character) use '\&'.
-
-     Here a small useful example:
-
-          .de box
-          \[br]\\$*\[br]\l'|0\[rn]'\l'|0\[ul]'
-          ..
-
-     Note that this works by outputting a box rule (a vertical line),
-     then the text given as an argument and then another box rule.
-     Finally, the line drawing escapes both draw from the current
-     location to the beginning of the _input_ line - this works because
-     the line length is negative, not moving the current point.
-
- -- Escape: \L'l'
- -- Escape: \L'lg'
-     Draw vertical lines.  Its parameters are similar to the '\l'
-     escape, except that the default scaling indicator is 'v'.  The
-     movement is downwards for positive values, and upwards for negative
-     values.  The default glyph is the box rule glyph, '\[br]'.  As with
-     the vertical motion escapes, text processing blindly continues
-     where the line ends.
-
-          This is a \L'3v'test.
-
-     Here the result, produced with 'grotty'.
-
-          This is a
-                    |
-                    |
-                    |test.
-
- -- Escape: \D'command arg ...'
-     The '\D' escape provides a variety of drawing functions.  Note that
-     on character devices, only vertical and horizontal lines are
-     supported within 'grotty'; other devices may only support a subset
-     of the available drawing functions.
-
-     The default scaling indicator for all subcommands of '\D' is 'm'
-     for horizontal distances and 'v' for vertical ones.  Exceptions are
-     '\D'f ...'' and '\D't ...'', which use 'u' as the default, and
-     '\D'FX ...'', which arguments are treated similar to the 'defcolor'
-     request.
-
-     '\D'l DX DY''
-          Draw a line from the current location to the relative point
-          specified by (DX,DY), where positive values mean down and
-          right, respectively.  The end point of the line is the new
-          current location.
-
-          The following example is a macro for creating a box around a
-          text string; for simplicity, the box margin is taken as a
-          fixed value, 0.2m.
-
-               .de BOX
-               .  nr @wd \w'\\$1'
-               \h'.2m'\
-               \h'-.2m'\v'(.2m - \\n[rsb]u)'\
-               \D'l 0 -(\\n[rst]u - \\n[rsb]u + .4m)'\
-               \D'l (\\n[@wd]u + .4m) 0'\
-               \D'l 0 (\\n[rst]u - \\n[rsb]u + .4m)'\
-               \D'l -(\\n[@wd]u + .4m) 0'\
-               \h'.2m'\v'-(.2m - \\n[rsb]u)'\
-               \\$1\
-               \h'.2m'
-               ..
-
-          First, the width of the string is stored in register '@wd'.
-          Then, four lines are drawn to form a box, properly offset by
-          the box margin.  The registers 'rst' and 'rsb' are set by the
-          '\w' escape, containing the largest height and depth of the
-          whole string.
-
-     '\D'c D''
-          Draw a circle with a diameter of D with the leftmost point at
-          the current position.  After drawing, the current location is
-          positioned at the rightmost point of the circle.
-
-     '\D'C D''
-          Draw a solid circle with the same parameters and behaviour as
-          an outlined circle.  No outline is drawn.
-
-     '\D'e X Y''
-          Draw an ellipse with a horizontal diameter of X and a vertical
-          diameter of Y with the leftmost point at the current position.
-          After drawing, the current location is positioned at the
-          rightmost point of the ellipse.
-
-     '\D'E X Y''
-          Draw a solid ellipse with the same parameters and behaviour as
-          an outlined ellipse.  No outline is drawn.
-
-     '\D'a DX1 DY1 DX2 DY2''
-          Draw an arc clockwise from the current location through the
-          two specified relative locations (DX1,DY1) and (DX2,DY2).  The
-          coordinates of the first point are relative to the current
-          position, and the coordinates of the second point are relative
-          to the first point.  After drawing, the current position is
-          moved to the final point of the arc.
-
-     '\D'~ DX1 DY1 DX2 DY2 ...''
-          Draw a spline from the current location to the relative point
-          (DX1,DY1) and then to (DX2,DY2), and so on.  The current
-          position is moved to the terminal point of the drawn curve.
-
-     '\D'f N''
-          Set the shade of gray to be used for filling solid objects
-          to N; N must be an integer between 0 and 1000, where 0
-          corresponds solid white and 1000 to solid black, and values in
-          between correspond to intermediate shades of gray.  This
-          applies only to solid circles, solid ellipses, and solid
-          polygons.  By default, a level of 1000 is used.
-
-          Despite of being silly, the current point is moved
-          horizontally to the right by N.
-
-          Don't use this command!  It has the serious drawback that it
-          is always rounded to the next integer multiple of the
-          horizontal resolution (the value of the 'hor' keyword in the
-          'DESC' file).  Use '\M' (*note Colors::) or '\D'Fg ...''
-          instead.
-
-     '\D'p DX1 DY1 DX2 DY2 ...''
-          Draw a polygon from the current location to the relative
-          position (DX1,DY1) and then to (DX2,DY2) and so on.  When the
-          specified data points are exhausted, a line is drawn back to
-          the starting point.  The current position is changed by adding
-          the sum of all arguments with odd index to the actual
-          horizontal position and the even ones to the vertical
-          position.
-
-     '\D'P DX1 DY1 DX2 DY2 ...''
-          Draw a solid polygon with the same parameters and behaviour as
-          an outlined polygon.  No outline is drawn.
-
-          Here a better variant of the box macro to fill the box with
-          some color.  Note that the box must be drawn before the text
-          since colors in 'gtroff' are not transparent; the filled
-          polygon would hide the text completely.
-
-               .de BOX
-               .  nr @wd \w'\\$1'
-               \h'.2m'\
-               \h'-.2m'\v'(.2m - \\n[rsb]u)'\
-               \M[lightcyan]\
-               \D'P 0 -(\\n[rst]u - \\n[rsb]u + .4m) \
-                    (\\n[@wd]u + .4m) 0 \
-                    0 (\\n[rst]u - \\n[rsb]u + .4m) \
-                    -(\\n[@wd]u + .4m) 0'\
-               \h'.2m'\v'-(.2m - \\n[rsb]u)'\
-               \M[]\
-               \\$1\
-               \h'.2m'
-               ..
-
-          If you want a filled polygon that has exactly the same size as
-          an unfilled one, you must draw both an unfilled and a filled
-          polygon.  A filled polygon is always smaller than an unfilled
-          one because the latter uses straight lines with a given line
-          thickness to connect the polygon's corners, while the former
-          simply fills the area defined by the coordinates.
-
-               \h'1i'\v'1i'\
-               \# increase line thickness
-               \Z'\D't 5p''\
-               \# draw unfilled polygon
-               \Z'\D'p 3 3 -6 0''\
-               \# draw filled polygon
-               \Z'\D'P 3 3 -6 0''
-
-     '\D't N''
-          Set the current line thickness to N machine units.  A value of
-          zero selects the smallest available line thickness.  A
-          negative value makes the line thickness proportional to the
-          current point size (this is the default behaviour of AT&T
-          'troff').
-
-          Despite of being silly, the current point is moved
-          horizontally to the right by N.
-
-     '\D'FSCHEME COLOR_COMPONENTS''
-          Change current fill color.  SCHEME is a single letter denoting
-          the color scheme: 'r' (rgb), 'c' (cmy), 'k' (cmyk), 'g'
-          (gray), or 'd' (default color).  The color components use
-          exactly the same syntax as in the 'defcolor' request (*note
-          Colors::); the command '\D'Fd'' doesn't take an argument.
-
-          _No_ position changing!
-
-          Examples:
-
-               \D'Fg .3'      \" same gray as \D'f 700'
-               \D'Fr #0000ff' \" blue
-
-   *Note Graphics Commands::.
-
- -- Escape: \b'string'
-     "Pile" a sequence of glyphs vertically, and center it vertically on
-     the current line.  Use it to build large brackets and braces.
-
-     Here an example how to create a large opening brace:
-
-          \b'\[lt]\[bv]\[lk]\[bv]\[lb]'
-
-     The first glyph is on the top, the last glyph in STRING is at the
-     bottom.  Note that 'gtroff' separates the glyphs vertically by 1m,
-     and the whole object is centered 0.5m above the current baseline;
-     the largest glyph width is used as the width for the whole object.
-     This rather unflexible positioning algorithm doesn't work with
-     '-Tdvi' since the bracket pieces vary in height for this device.
-     Instead, use the 'eqn' preprocessor.
-
-     *Note Manipulating Spacing::, how to adjust the vertical spacing
-     with the '\x' escape.
-
-\1f
-File: groff.info,  Node: Traps,  Next: Diversions,  Prev: Drawing Requests,  Up: gtroff Reference
-
-5.24 Traps
-==========
-
-"Traps" are locations that, when reached, call a specified macro.  These
-traps can occur at a given location on the page, at a given location in
-the current diversion, at a blank line, after a certain number of input
-lines, or at the end of input.
-
-   Setting a trap is also called "planting".  It is also said that a
-trap is "sprung" if the associated macro is executed.
-
-* Menu:
-
-* Page Location Traps::
-* Diversion Traps::
-* Input Line Traps::
-* Blank Line Traps::
-* Leading Spaces Traps::
-* End-of-input Traps::
-
-\1f
-File: groff.info,  Node: Page Location Traps,  Next: Diversion Traps,  Prev: Traps,  Up: Traps
-
-5.24.1 Page Location Traps
---------------------------
-
-"Page location traps" perform an action when 'gtroff' reaches or passes
-a certain vertical location on the page.  Page location traps have a
-variety of purposes, including:
-
-   * setting headers and footers
-
-   * setting body text in multiple columns
-
-   * setting footnotes
-
- -- Request: .vpt flag
- -- Register: \n[.vpt]
-     Enable vertical position traps if FLAG is non-zero, or disables
-     them otherwise.  Vertical position traps are traps set by the 'wh'
-     or 'dt' requests.  Traps set by the 'it' request are not vertical
-     position traps.  The parameter that controls whether vertical
-     position traps are enabled is global.  Initially vertical position
-     traps are enabled.  The current setting of this is available in the
-     '.vpt' read-only number register.
-
-     Note that a page can't be ejected if 'vpt' is set to zero.
-
- -- Request: .wh dist [macro]
-     Set a page location trap.  Non-negative values for DIST set the
-     trap relative to the top of the page; negative values set the trap
-     relative to the bottom of the page.  Default scaling indicator is
-     'v'; values of DIST are always rounded to be multiples of the
-     vertical resolution (as given in register '.V').
-
-     MACRO is the name of the macro to execute when the trap is sprung.
-     If MACRO is missing, remove the first trap (if any) at DIST.
-
-     The following is a simple example of how many macro packages set
-     headers and footers.
-
-          .de hd                \" Page header
-          '  sp .5i
-          .  tl 'Title''date'
-          '  sp .3i
-          ..
-          .
-          .de fo                \" Page footer
-          '  sp 1v
-          .  tl ''%''
-          '  bp
-          ..
-          .
-          .wh 0   hd            \" trap at top of the page
-          .wh -1i fo            \" trap one inch from bottom
-
-     A trap at or below the bottom of the page is ignored; it can be
-     made active by either moving it up or increasing the page length so
-     that the trap is on the page.
-
-     Negative trap values always use the _current_ page length; they are
-     not converted to an absolute vertical position:
-
-          .pl 5i
-          .wh -1i xx
-          .ptr
-              => xx      -240
-          .pl 100i
-          .ptr
-              => xx      -240
-
-     It is possible to have more than one trap at the same location; to
-     do so, the traps must be defined at different locations, then moved
-     together with the 'ch' request; otherwise the second trap would
-     replace the first one.  Earlier defined traps hide later defined
-     traps if moved to the same position (the many empty lines caused by
-     the 'bp' request are omitted in the following example):
-
-          .de a
-          .  nop a
-          ..
-          .de b
-          .  nop b
-          ..
-          .de c
-          .  nop c
-          ..
-          .
-          .wh 1i a
-          .wh 2i b
-          .wh 3i c
-          .bp
-              => a b c
-          .ch b 1i
-          .ch c 1i
-          .bp
-              => a
-          .ch a 0.5i
-          .bp
-              => a b
-
- -- Register: \n[.t]
-     A read-only number register holding the distance to the next trap.
-
-     If there are no traps between the current position and the bottom
-     of the page, it contains the distance to the page bottom.  In a
-     diversion, the distance to the page bottom is infinite (the
-     returned value is the biggest integer that can be represented in
-     'groff') if there are no diversion traps.
-
- -- Request: .ch macro [dist]
-     Change the location of a trap.  The first argument is the name of
-     the macro to be invoked at the trap, and the second argument is the
-     new location for the trap (note that the parameters are specified
-     in opposite order as in the 'wh' request).  This is useful for
-     building up footnotes in a diversion to allow more space at the
-     bottom of the page for them.
-
-     Default scaling indicator for DIST is 'v'.  If DIST is missing, the
-     trap is removed.
-
- -- Register: \n[.ne]
-     The read-only number register '.ne' contains the amount of space
-     that was needed in the last 'ne' request that caused a trap to be
-     sprung.  Useful in conjunction with the '.trunc' register.  *Note
-     Page Control::, for more information.
-
-     Since the '.ne' register is only set by traps it doesn't make much
-     sense to use it outside of trap macros.
-
- -- Register: \n[.trunc]
-     A read-only register containing the amount of vertical space
-     truncated by the most recently sprung vertical position trap, or,
-     if the trap was sprung by an 'ne' request, minus the amount of
-     vertical motion produced by the 'ne' request.  In other words, at
-     the point a trap is sprung, it represents the difference of what
-     the vertical position would have been but for the trap, and what
-     the vertical position actually is.
-
-     Since the '.trunc' register is only set by traps it doesn't make
-     much sense to use it outside of trap macros.
-
- -- Register: \n[.pe]
-     A read-only register that is set to 1 while a page is ejected with
-     the 'bp' request (or by the end of input).
-
-     Outside of traps this register is always zero.  In the following
-     example, only the second call to 'x' is caused by 'bp'.
-
-          .de x
-          \&.pe=\\n[.pe]
-          .br
-          ..
-          .wh 1v x
-          .wh 4v x
-          A line.
-          .br
-          Another line.
-          .br
-              => A line.
-                 .pe=0
-                 Another line.
-
-                 .pe=1
-
-   An important fact to consider while designing macros is that
-diversions and traps do not interact normally.  For example, if a trap
-invokes a header macro (while outputting a diversion) that tries to
-change the font on the current page, the effect is not visible before
-the diversion has completely been printed (except for input protected
-with '\!' or '\?') since the data in the diversion is already formatted.
-In most cases, this is not the expected behaviour.
-
-\1f
-File: groff.info,  Node: Diversion Traps,  Next: Input Line Traps,  Prev: Page Location Traps,  Up: Traps
-
-5.24.2 Diversion Traps
-----------------------
-
- -- Request: .dt [dist macro]
-     Set a trap _within_ a diversion.  DIST is the location of the trap
-     (identical to the 'wh' request; default scaling indicator is 'v')
-     and MACRO is the name of the macro to be invoked.  If called
-     without arguments, the diversion trap is removed.
-
-     Note that there exists only a single diversion trap.
-
-     The number register '.t' still works within diversions.  *Note
-     Diversions::, for more information.
-
-\1f
-File: groff.info,  Node: Input Line Traps,  Next: Blank Line Traps,  Prev: Diversion Traps,  Up: Traps
-
-5.24.3 Input Line Traps
------------------------
-
- -- Request: .it n macro
- -- Request: .itc n macro
-     Set an input line trap.  N is the number of lines of input that may
-     be read before springing the trap, MACRO is the macro to be
-     invoked.  Request lines are not counted as input lines.
-
-     For example, one possible use is to have a macro that prints the
-     next N lines in a bold font.
-
-          .de B
-          .  it \\$1 B-end
-          .  ft B
-          ..
-          .
-          .de B-end
-          .  ft R
-          ..
-
-     The 'itc' request is identical except that an interrupted text line
-     (ending with '\c') is not counted as a separate line.
-
-     Both requests are associated with the current environment (*note
-     Environments::); switching to another environment disables the
-     current input trap, and going back reactivates it, restoring the
-     number of already processed lines.
-
-\1f
-File: groff.info,  Node: Blank Line Traps,  Next: Leading Spaces Traps,  Prev: Input Line Traps,  Up: Traps
-
-5.24.4 Blank Line Traps
------------------------
-
- -- Request: .blm macro
-     Set a blank line trap.  'gtroff' executes MACRO when it encounters
-     a blank line in the input file.
-
-\1f
-File: groff.info,  Node: Leading Spaces Traps,  Next: End-of-input Traps,  Prev: Blank Line Traps,  Up: Traps
-
-5.24.5 Leading Spaces Traps
----------------------------
-
- -- Request: .lsm macro
- -- Register: \n[lsn]
- -- Register: \n[lss]
-     Set a leading spaces trap.  'gtroff' executes MACRO when it
-     encounters leading spaces in an input line; the implicit line break
-     that normally happens in this case is suppressed.  A line
-     consisting of spaces only, however, is treated as an empty line,
-     possibly subject to an empty line macro set with the 'blm' request.
-
-     Leading spaces are removed from the input line before calling the
-     leading spaces macro.  The number of removed spaces is stored in
-     register 'lsn'; the horizontal space that would be emitted if there
-     was no leading space macro is stored in register 'lss'.  Note that
-     'lsn' and 'lss' are available even if no leading space macro has
-     been set.
-
-     The first thing a leading space macro sees is a token.  However,
-     some escapes like '\f' or '\m' are handled on the fly (see *note
-     Gtroff Internals::, for a complete list) without creating a token
-     at all.  Consider that a line starts with two spaces followed by
-     '\fIfoo'.  While skipping the spaces '\fI' is handled too so that
-     groff's current font is properly set to 'I', but the leading space
-     macro only sees 'foo', without the preceding '\fI'.  If the macro
-     should see the font escape you have to 'protect' it with something
-     that creates a token, for example with '\&\fIfoo'.
-
-\1f
-File: groff.info,  Node: End-of-input Traps,  Prev: Leading Spaces Traps,  Up: Traps
-
-5.24.6 End-of-input Traps
--------------------------
-
- -- Request: .em macro
-     Set a trap at the end of input.  MACRO is executed after the last
-     line of the input file has been processed.
-
-     For example, if the document had to have a section at the bottom of
-     the last page for someone to approve it, the 'em' request could be
-     used.
-
-          .de approval
-          \c
-          .  ne 3v
-          .  sp (\\n[.t]u - 3v)
-          .  in +4i
-          .  lc _
-          .  br
-          Approved:\t\a
-          .  sp
-          Date:\t\t\a
-          ..
-          .
-          .em approval
-
-     The '\c' in the above example needs explanation.  For historical
-     reasons (and for compatibility with AT&T 'troff'), the end macro
-     exits as soon as it causes a page break and no remaining data is in
-     the partially collected line.
-
-     Let us assume that there is no '\c' in the above 'approval' macro,
-     and that the page is full and has been ended with, say, a 'br'
-     request.  The 'ne' request now causes the start of a new page,
-     which in turn makes 'troff' exit immediately for the reasons just
-     described.  In most situations this is not intended.
-
-     To always force processing the whole end macro independently of
-     this behaviour it is thus advisable to insert something that starts
-     an empty partially filled line ('\c') whenever there is a chance
-     that a page break can happen.  In the above example, the call of
-     the 'ne' request assures that the remaining code stays on the same
-     page, so we have to insert '\c' only once.
-
-     The next example shows how to append three lines, then starting a
-     new page unconditionally.  Since '.ne 1' doesn't give the desired
-     effect - there is always one line available or we are already at
-     the beginning of the next page - we temporarily increase the page
-     length by one line so that we can use '.ne 2'.
-
-          .de EM
-          .pl +1v
-          \c
-          .ne 2
-          line one
-          .br
-          \c
-          .ne 2
-          line two
-          .br
-          \c
-          .ne 2
-          line three
-          .br
-          .pl -1v
-          \c
-          'bp
-          ..
-          .em EM
-
-     Note that this specific feature affects only the first potential
-     page break caused by the end macro; further page breaks emitted by
-     the end macro are handled normally.
-
-     Another possible use of the 'em' request is to make 'gtroff' emit a
-     single large page instead of multiple pages.  For example, one may
-     want to produce a long plain-text file for reading on-screen.  The
-     idea is to set the page length at the beginning of the document to
-     a very large value to hold all the text, and automatically adjust
-     it to the exact height of the document after the text has been
-     output.
-
-          .de adjust-page-length
-          .  br
-          .  pl \\n[nl]u   \" \n[nl] holds the current page length
-          ..
-          .
-          .de single-page-mode
-          .  pl 99999
-          .  em adjust-page-length
-          ..
-          .
-          .\" activate the above code
-          .single-page-mode
-
-     Since only one end-of-input trap does exist and other macro
-     packages may already use it, care must be taken not to break the
-     mechanism.  A simple solution would be to append the above macro to
-     the macro package's end-of-input macro using the '.am' request.
-
-\1f
-File: groff.info,  Node: Diversions,  Next: Environments,  Prev: Traps,  Up: gtroff Reference
-
-5.25 Diversions
-===============
-
-In 'gtroff' it is possible to "divert" text into a named storage area.
-Due to the similarity to defining macros it is sometimes said to be
-stored in a macro.  This is used for saving text for output at a later
-time, which is useful for keeping blocks of text on the same page,
-footnotes, tables of contents, and indices.
-
-   For orthogonality it is said that 'gtroff' is in the "top-level
-diversion" if no diversion is active (i.e., the data is diverted to the
-output device).
-
-   Although the following requests can be used to create diversions,
-simply using an undefined diversion will cause it to be defined as
-empty.  *Note Identifiers::.
-
- -- Request: .di macro
- -- Request: .da macro
-     Begin a diversion.  Like the 'de' request, it takes an argument of
-     a macro name to divert subsequent text into.  The 'da' macro
-     appends to an existing diversion.
-
-     'di' or 'da' without an argument ends the diversion.
-
-     The current partially-filled line is included into the diversion.
-     See the 'box' request below for an example.  Note that switching to
-     another (empty) environment (with the 'ev' request) avoids the
-     inclusion of the current partially-filled line.
-
- -- Request: .box macro
- -- Request: .boxa macro
-     Begin (or append to) a diversion like the 'di' and 'da' requests.
-     The difference is that 'box' and 'boxa' do not include a
-     partially-filled line in the diversion.
-
-     Compare this:
-
-          Before the box.
-          .box xxx
-          In the box.
-          .br
-          .box
-          After the box.
-          .br
-              => Before the box.  After the box.
-          .xxx
-              => In the box.
-
-     with this:
-
-          Before the diversion.
-          .di yyy
-          In the diversion.
-          .br
-          .di
-          After the diversion.
-          .br
-              => After the diversion.
-          .yyy
-              => Before the diversion.  In the diversion.
-
-     'box' or 'boxa' without an argument ends the diversion.
-
- -- Register: \n[.z]
- -- Register: \n[.d]
-     Diversions may be nested.  The read-only number register '.z'
-     contains the name of the current diversion (this is a string-valued
-     register).  The read-only number register '.d' contains the current
-     vertical place in the diversion.  If not in a diversion it is the
-     same as register 'nl'.
-
- -- Register: \n[.h]
-     The "high-water mark" on the current page.  It corresponds to the
-     text baseline of the lowest line on the page.  This is a read-only
-     register.
-
-          .tm .h==\n[.h], nl==\n[nl]
-              => .h==0, nl==-1
-          This is a test.
-          .br
-          .sp 2
-          .tm .h==\n[.h], nl==\n[nl]
-              => .h==40, nl==120
-
-     As can be seen in the previous example, empty lines are not
-     considered in the return value of the '.h' register.
-
- -- Register: \n[dn]
- -- Register: \n[dl]
-     After completing a diversion, the read-write number registers 'dn'
-     and 'dl' contain the vertical and horizontal size of the diversion.
-     Note that only the just processed lines are counted: For the
-     computation of 'dn' and 'dl', the requests 'da' and 'boxa' are
-     handled as if 'di' and 'box' had been used - lines that have been
-     already stored in a macro are not taken into account.
-
-          .\" Center text both horizontally & vertically
-          .
-          .\" Enclose macro definitions in .eo and .ec
-          .\" to avoid the doubling of the backslash
-          .eo
-          .\" macro .(c starts centering mode
-          .de (c
-          .  br
-          .  ev (c
-          .  evc 0
-          .  in 0
-          .  nf
-          .  di @c
-          ..
-          .\" macro .)c terminates centering mode
-          .de )c
-          .  br
-          .  ev
-          .  di
-          .  nr @s (((\n[.t]u - \n[dn]u) / 2u) - 1v)
-          .  sp \n[@s]u
-          .  ce 1000
-          .  @c
-          .  ce 0
-          .  sp \n[@s]u
-          .  br
-          .  fi
-          .  rr @s
-          .  rm @s
-          .  rm @c
-          ..
-          .\" End of macro definitions, restore escape mechanism
-          .ec
-
- -- Escape: \!
- -- Escape: \?anything\?
-     Prevent requests, macros, and escapes from being interpreted when
-     read into a diversion.  Both escapes take the given text and
-     "transparently" embed it into the diversion.  This is useful for
-     macros that shouldn't be invoked until the diverted text is
-     actually output.
-
-     The '\!' escape transparently embeds text up to and including the
-     end of the line.  The '\?' escape transparently embeds text until
-     the next occurrence of the '\?' escape.  Example:
-
-          \?ANYTHING\?
-
-     ANYTHING may not contain newlines; use '\!' to embed newlines in a
-     diversion.  The escape sequence '\?' is also recognized in copy
-     mode and turned into a single internal code; it is this code that
-     terminates ANYTHING.  Thus the following example prints 4.
-
-          .nr x 1
-          .nf
-          .di d
-          \?\\?\\\\?\\\\\\\\nx\\\\?\\?\?
-          .di
-          .nr x 2
-          .di e
-          .d
-          .di
-          .nr x 3
-          .di f
-          .e
-          .di
-          .nr x 4
-          .f
-
-     Both escapes read the data in copy mode.
-
-     If '\!' is used in the top-level diversion, its argument is
-     directly embedded into the 'gtroff' intermediate output.  This can
-     be used for example to control a postprocessor that processes the
-     data before it is sent to the device driver.
-
-     The '\?' escape used in the top-level diversion produces no output
-     at all; its argument is simply ignored.
-
- -- Request: .output string
-     Emit STRING directly to the 'gtroff' intermediate output (subject
-     to copy mode interpretation); this is similar to '\!' used at the
-     top level.  An initial double quote in STRING is stripped off to
-     allow initial blanks.
-
-     This request can't be used before the first page has started - if
-     you get an error, simply insert '.br' before the 'output' request.
-
-     Without argument, 'output' is ignored.
-
-     Use with caution!  It is normally only needed for mark-up used by a
-     postprocessor that does something with the output before sending it
-     to the output device, filtering out STRING again.
-
- -- Request: .asciify div
-     "Unformat" the diversion specified by DIV in such a way that ASCII
-     characters, characters translated with the 'trin' request, space
-     characters, and some escape sequences that were formatted and
-     diverted are treated like ordinary input characters when the
-     diversion is reread.  It can be also used for gross hacks; for
-     example, the following sets register 'n' to 1.
-
-          .tr @.
-          .di x
-          @nr n 1
-          .br
-          .di
-          .tr @@
-          .asciify x
-          .x
-
-     Note that 'asciify' cannot return all items in a diversion back to
-     their source equivalent, nodes such as '\N[...]' will still remain
-     as nodes, so the result cannot be guaranteed to be a pure string.
-
-     *Note Copy-in Mode::.
-
- -- Request: .unformat div
-     Like 'asciify', unformat the specified diversion.  However,
-     'unformat' only unformats spaces and tabs between words.
-     Unformatted tabs are treated as input tokens, and spaces are
-     stretchable again.
-
-     The vertical size of lines is not preserved; glyph information
-     (font, font size, space width, etc.) is retained.
-
-\1f
-File: groff.info,  Node: Environments,  Next: Suppressing output,  Prev: Diversions,  Up: gtroff Reference
-
-5.26 Environments
-=================
-
-It happens frequently that some text should be printed in a certain
-format regardless of what may be in effect at the time, for example, in
-a trap invoked macro to print headers and footers.  To solve this
-'gtroff' processes text in "environments".  An environment contains most
-of the parameters that control text processing.  It is possible to
-switch amongst these environments; by default 'gtroff' processes text in
-environment 0.  The following is the information kept in an environment.
-
-   * font parameters (size, family, style, glyph height and slant, space
-     and sentence space size)
-
-   * page parameters (line length, title length, vertical spacing, line
-     spacing, indentation, line numbering, centering, right-justifying,
-     underlining, hyphenation data)
-
-   * fill and adjust mode
-
-   * tab stops, tab and leader characters, escape character, no-break
-     and hyphen indicators, margin character data
-
-   * partially collected lines
-
-   * input traps
-
-   * drawing and fill colours
-
-   These environments may be given arbitrary names (see *note
-Identifiers::, for more info).  Old versions of 'troff' only had
-environments named '0', '1', and '2'.
-
- -- Request: .ev [env]
- -- Register: \n[.ev]
-     Switch to another environment.  The argument ENV is the name of the
-     environment to switch to.  With no argument, 'gtroff' switches back
-     to the previous environment.  There is no limit on the number of
-     named environments; they are created the first time that they are
-     referenced.  The '.ev' read-only register contains the name or
-     number of the current environment.  This is a string-valued
-     register.
-
-     Note that a call to 'ev' (with argument) pushes the previously
-     active environment onto a stack.  If, say, environments 'foo',
-     'bar', and 'zap' are called (in that order), the first 'ev' request
-     without parameter switches back to environment 'bar' (which is
-     popped off the stack), and a second call switches back to
-     environment 'foo'.
-
-     Here is an example:
-
-          .ev footnote-env
-          .fam N
-          .ps 6
-          .vs 8
-          .ll -.5i
-          .ev
-
-          ...
-
-          .ev footnote-env
-          \(dg Note the large, friendly letters.
-          .ev
-
- -- Request: .evc env
-     Copy the environment ENV into the current environment.
-
-     The following environment data is not copied:
-
-        * Partially filled lines.
-
-        * The status whether the previous line was interrupted.
-
-        * The number of lines still to center, or to right-justify, or
-          to underline (with or without underlined spaces); they are set
-          to zero.
-
-        * The status whether a temporary indentation is active.
-
-        * Input traps and its associated data.
-
-        * Line numbering mode is disabled; it can be reactivated with
-          '.nm +0'.
-
-        * The number of consecutive hyphenated lines (set to zero).
-
- -- Register: \n[.w]
- -- Register: \n[.cht]
- -- Register: \n[.cdp]
- -- Register: \n[.csk]
-     The '\n[.w]' register contains the width of the last glyph added to
-     the current environment.
-
-     The '\n[.cht]' register contains the height of the last glyph added
-     to the current environment.
-
-     The '\n[.cdp]' register contains the depth of the last glyph added
-     to the current environment.  It is positive for glyphs extending
-     below the baseline.
-
-     The '\n[.csk]' register contains the "skew" (how far to the right
-     of the glyph's center that 'gtroff' should place an accent) of the
-     last glyph added to the current environment.
-
- -- Register: \n[.n]
-     The '\n[.n]' register contains the length of the previous output
-     line in the current environment.
-
-\1f
-File: groff.info,  Node: Suppressing output,  Next: Colors,  Prev: Environments,  Up: gtroff Reference
-
-5.27 Suppressing output
-=======================
-
- -- Escape: \Onum
-     Disable or enable output depending on the value of NUM:
-
-     '\O0'
-          Disable any glyphs from being emitted to the device driver,
-          provided that the escape occurs at the outer level (see
-          '\O[3]' and '\O[4]').  Motion is not suppressed so effectively
-          '\O[0]' means _pen up_.
-
-     '\O1'
-          Enable output of glyphs, provided that the escape occurs at
-          the outer level.
-
-     '\O0' and '\O1' also reset the four registers 'opminx', 'opminy',
-     'opmaxx', and 'opmaxy' to -1.  *Note Register Index::.  These four
-     registers mark the top left and bottom right hand corners of a box
-     that encompasses all written glyphs.
-
-     For example the input text:
-
-          Hello \O[0]world \O[1]this is a test.
-
-     produces the following output:
-
-          Hello       this is a test.
-
-     '\O2'
-          Provided that the escape occurs at the outer level, enable
-          output of glyphs and also write out to 'stderr' the page
-          number and four registers encompassing the glyphs previously
-          written since the last call to '\O'.
-
-     '\O3'
-          Begin a nesting level.  At start-up, 'gtroff' is at outer
-          level.  The current level is contained within the read-only
-          register '.O'.  *Note Built-in Registers::.
-
-     '\O4'
-          End a nesting level.  The current level is contained within
-          the read-only register '.O'.  *Note Built-in Registers::.
-
-     '\O[5PFILENAME]'
-          This escape is 'grohtml' specific.  Provided that this escape
-          occurs at the outer nesting level write the 'filename' to
-          'stderr'.  The position of the image, P, must be specified and
-          must be one of 'l', 'r', 'c', or 'i' (left, right, centered,
-          inline).  FILENAME is associated with the production of the
-          next inline image.
-
-\1f
-File: groff.info,  Node: Colors,  Next: I/O,  Prev: Suppressing output,  Up: gtroff Reference
-
-5.28 Colors
-===========
-
- -- Request: .color [n]
- -- Register: \n[.color]
-     If N is missing or non-zero, activate colors (this is the default);
-     otherwise, turn it off.
-
-     The read-only number register '.color' is 1 if colors are active,
-     0 otherwise.
-
-     Internally, 'color' sets a global flag; it does not produce a
-     token.  Similar to the 'cp' request, you should use it at the
-     beginning of your document to control color output.
-
-     Colors can be also turned off with the '-c' command line option.
-
- -- Request: .defcolor ident scheme color_components
-     Define color with name IDENT.  SCHEME can be one of the following
-     values: 'rgb' (three components), 'cmy' (three components), 'cmyk'
-     (four components), and 'gray' or 'grey' (one component).
-
-     Color components can be given either as a hexadecimal string or as
-     positive decimal integers in the range 0-65535.  A hexadecimal
-     string contains all color components concatenated.  It must start
-     with either '#' or '##'; the former specifies hex values in the
-     range 0-255 (which are internally multiplied by 257), the latter in
-     the range 0-65535.  Examples: '#FFC0CB' (pink), '##ffff0000ffff'
-     (magenta).  The default color name value is device-specific
-     (usually black).  It is possible that the default color for '\m'
-     and '\M' is not identical.
-
-     A new scaling indicator 'f' has been introduced, which multiplies
-     its value by 65536; this makes it convenient to specify color
-     components as fractions in the range 0 to 1 (1f equals 65536u).
-     Example:
-
-          .defcolor darkgreen rgb 0.1f 0.5f 0.2f
-
-     Note that 'f' is the default scaling indicator for the 'defcolor'
-     request, thus the above statement is equivalent to
-
-          .defcolor darkgreen rgb 0.1 0.5 0.2
-
- -- Request: .gcolor [color]
- -- Escape: \mc
- -- Escape: \m(co
- -- Escape: \m[color]
- -- Register: \n[.m]
-     Set (glyph) drawing color.  The following examples show how to turn
-     the next four words red.
-
-          .gcolor red
-          these are in red
-          .gcolor
-          and these words are in black.
-
-          \m[red]these are in red\m[] and these words are in black.
-
-     The escape '\m[]' returns to the previous color, as does a call to
-     'gcolor' without an argument.
-
-     The name of the current drawing color is available in the
-     read-only, string-valued number register '.m'.
-
-     The drawing color is associated with the current environment (*note
-     Environments::).
-
-     Note that '\m' doesn't produce an input token in 'gtroff'.  As a
-     consequence, it can be used in requests like 'mc' (which expects a
-     single character as an argument) to change the color on the fly:
-
-          .mc \m[red]x\m[]
-
- -- Request: .fcolor [color]
- -- Escape: \Mc
- -- Escape: \M(co
- -- Escape: \M[color]
- -- Register: \n[.M]
-     Set fill (background) color for filled objects drawn with the
-     '\D'...'' commands.
-
-     A red ellipse can be created with the following code:
-
-          \M[red]\h'0.5i'\D'E 2i 1i'\M[]
-
-     The escape '\M[]' returns to the previous fill color, as does a
-     call to 'fcolor' without an argument.
-
-     The name of the current fill (background) color is available in the
-     read-only, string-valued number register '.M'.
-
-     The fill color is associated with the current environment (*note
-     Environments::).
-
-     Note that '\M' doesn't produce an input token in 'gtroff'.
-
-\1f
-File: groff.info,  Node: I/O,  Next: Postprocessor Access,  Prev: Colors,  Up: gtroff Reference
-
-5.29 I/O
-========
-
-'gtroff' has several requests for including files:
-
- -- Request: .so file
-     Read in the specified FILE and includes it in place of the 'so'
-     request.  This is quite useful for large documents, e.g. keeping
-     each chapter in a separate file.  *Note gsoelim::, for more
-     information.
-
-     Since 'gtroff' replaces the 'so' request with the contents of
-     'file', it makes a difference whether the data is terminated with a
-     newline or not: Assuming that file 'xxx' contains the word 'foo'
-     without a final newline, this
-
-          This is
-          .so xxx
-          bar
-
-     yields 'This is foobar'.
-
-     The search path for FILE can be controlled with the '-I' command
-     line option.
-
- -- Request: .pso command
-     Read the standard output from the specified COMMAND and includes it
-     in place of the 'pso' request.
-
-     This request causes an error if used in safer mode (which is the
-     default).  Use 'groff''s or 'troff''s '-U' option to activate
-     unsafe mode.
-
-     The comment regarding a final newline for the 'so' request is valid
-     for 'pso' also.
-
- -- Request: .mso file
-     Identical to the 'so' request except that 'gtroff' searches for the
-     specified FILE in the same directories as macro files for the the
-     '-m' command line option.  If the file name to be included has the
-     form 'NAME.tmac' and it isn't found, 'mso' tries to include
-     'tmac.NAME' and vice versa.  If the file does not exist, a warning
-     of type 'file' is emitted.  *Note Debugging::, for information
-     about warnings.
-
- -- Request: .trf file
- -- Request: .cf file
-     Transparently output the contents of FILE.  Each line is output as
-     if it were preceded by '\!'; however, the lines are _not_ subject
-     to copy mode interpretation.  If the file does not end with a
-     newline, then a newline is added ('trf' only).  For example, to
-     define a macro 'x' containing the contents of file 'f', use
-
-          .ev 1
-          .di x
-          .trf f
-          .di
-          .ev
-
-     The calls to 'ev' prevent that the current partial input line
-     becomes part of the diversion.
-
-     Both 'trf' and 'cf', when used in a diversion, embeds an object in
-     the diversion which, when reread, causes the contents of FILE to be
-     transparently copied through to the output.  In UNIX 'troff', the
-     contents of FILE is immediately copied through to the output
-     regardless of whether there is a current diversion; this behaviour
-     is so anomalous that it must be considered a bug.
-
-     While 'cf' copies the contents of FILE completely unprocessed,
-     'trf' disallows characters such as NUL that are not valid 'gtroff'
-     input characters (*note Identifiers::).
-
-     For 'cf', within a diversion, 'completely unprocessed' means that
-     each line of a file to be inserted is handled as if it were
-     preceded by '\!\\!'.
-
-     Both requests cause a line break.
-
- -- Request: .nx [file]
-     Force 'gtroff' to continue processing of the file specified as an
-     argument.  If no argument is given, immediately jump to the end of
-     file.
-
- -- Request: .rd [prompt [arg1 arg2 ...]]
-     Read from standard input, and include what is read as though it
-     were part of the input file.  Text is read until a blank line is
-     encountered.
-
-     If standard input is a TTY input device (keyboard), write PROMPT to
-     standard error, followed by a colon (or send BEL for a beep if no
-     argument is given).
-
-     Arguments after PROMPT are available for the input.  For example,
-     the line
-
-          .rd data foo bar
-
-     with the input 'This is \$2.' prints
-
-          This is bar.
-
-   Using the 'nx' and 'rd' requests, it is easy to set up form letters.
-The form letter template is constructed like this, putting the following
-lines into a file called 'repeat.let':
-
-     .ce
-     \*(td
-     .sp 2
-     .nf
-     .rd
-     .sp
-     .rd
-     .fi
-     Body of letter.
-     .bp
-     .nx repeat.let
-
-When this is run, a file containing the following lines should be
-redirected in.  Note that requests included in this file are executed as
-though they were part of the form letter.  The last block of input is
-the 'ex' request, which tells 'groff' to stop processing.  If this was
-not there, 'groff' would not know when to stop.
-
-     Trent A. Fisher
-     708 NW 19th Av., #202
-     Portland, OR  97209
-
-     Dear Trent,
-
-     Len Adollar
-     4315 Sierra Vista
-     San Diego, CA  92103
-
-     Dear Mr. Adollar,
-
-     .ex
-
- -- Request: .pi pipe
-     Pipe the output of 'gtroff' to the shell command(s) specified by
-     PIPE.  This request must occur before 'gtroff' has a chance to
-     print anything.
-
-     'pi' causes an error if used in safer mode (which is the default).
-     Use 'groff''s or 'troff''s '-U' option to activate unsafe mode.
-
-     Multiple calls to 'pi' are allowed, acting as a chain.  For
-     example,
-
-          .pi foo
-          .pi bar
-          ...
-
-     is the same as '.pi foo | bar'.
-
-     Note that the intermediate output format of 'gtroff' is piped to
-     the specified commands.  Consequently, calling 'groff' without the
-     '-Z' option normally causes a fatal error.
-
- -- Request: .sy cmds
- -- Register: \n[systat]
-     Execute the shell command(s) specified by CMDS.  The output is not
-     saved anyplace, so it is up to the user to do so.
-
-     This request causes an error if used in safer mode (which is the
-     default).  Use 'groff''s or 'troff''s '-U' option to activate
-     unsafe mode.
-
-     For example, the following code fragment introduces the current
-     time into a document:
-
-          .sy perl -e 'printf ".nr H %d\\n.nr M %d\\n.nr S %d\\n",\
-                       (localtime(time))[2,1,0]' > /tmp/x\n[$$]
-          .so /tmp/x\n[$$]
-          .sy rm /tmp/x\n[$$]
-          \nH:\nM:\nS
-
-     Note that this works by having the 'perl' script (run by 'sy')
-     print out the 'nr' requests that set the number registers 'H', 'M',
-     and 'S', and then reads those commands in with the 'so' request.
-
-     For most practical purposes, the number registers 'seconds',
-     'minutes', and 'hours', which are initialized at start-up of
-     'gtroff', should be sufficient.  Use the 'af' request to get a
-     formatted output:
-
-          .af hours 00
-          .af minutes 00
-          .af seconds 00
-          \n[hours]:\n[minutes]:\n[seconds]
-
-     The 'systat' read-write number register contains the return value
-     of the 'system()' function executed by the last 'sy' request.
-
- -- Request: .open stream file
- -- Request: .opena stream file
-     Open the specified FILE for writing and associates the specified
-     STREAM with it.
-
-     The 'opena' request is like 'open', but if the file exists, append
-     to it instead of truncating it.
-
-     Both 'open' and 'opena' cause an error if used in safer mode (which
-     is the default).  Use 'groff''s or 'troff''s '-U' option to
-     activate unsafe mode.
-
- -- Request: .write stream data
- -- Request: .writec stream data
-     Write to the file associated with the specified STREAM.  The stream
-     must previously have been the subject of an open request.  The
-     remainder of the line is interpreted as the 'ds' request reads its
-     second argument: A leading '"' is stripped, and it is read in
-     copy-in mode.
-
-     The 'writec' request is like 'write', but only 'write' appends a
-     newline to the data.
-
- -- Request: .writem stream xx
-     Write the contents of the macro or string XX to the file associated
-     with the specified STREAM.
-
-     XX is read in copy mode, i.e., already formatted elements are
-     ignored.  Consequently, diversions must be unformatted with the
-     'asciify' request before calling 'writem'.  Usually, this means a
-     loss of information.
-
- -- Request: .close stream
-     Close the specified STREAM; the stream is no longer an acceptable
-     argument to the 'write' request.
-
-     Here a simple macro to write an index entry.
-
-          .open idx test.idx
-          .
-          .de IX
-          .  write idx \\n[%] \\$*
-          ..
-          .
-          .IX test entry
-          .
-          .close idx
-
- -- Escape: \Ve
- -- Escape: \V(ev
- -- Escape: \V[env]
-     Interpolate the contents of the specified environment variable ENV
-     (one-character name E, two-character name EV) as returned by the
-     function 'getenv'.  '\V' is interpreted in copy-in mode.
-
-\1f
-File: groff.info,  Node: Postprocessor Access,  Next: Miscellaneous,  Prev: I/O,  Up: gtroff Reference
-
-5.30 Postprocessor Access
-=========================
-
-There are two escapes that give information directly to the
-postprocessor.  This is particularly useful for embedding POSTSCRIPT
-into the final document.
-
- -- Request: .device xxx
- -- Escape: \X'xxx'
-     Embeds its argument into the 'gtroff' output preceded with 'x X'.
-
-     The escapes '\&', '\)', '\%', and '\:' are ignored within '\X',
-     '\ ' and '\~' are converted to single space characters.  All other
-     escapes (except '\\', which produces a backslash) cause an error.
-
-     Contrary to '\X', the 'device' request simply processes its
-     argument in copy mode (*note Copy-in Mode::).
-
-     If the 'use_charnames_in_special' keyword is set in the 'DESC'
-     file, special characters no longer cause an error; they are simply
-     output verbatim.  Additionally, the backslash is represented as
-     '\\'.
-
-     'use_charnames_in_special' is currently used by 'grohtml' only.
-
- -- Request: .devicem xx
- -- Escape: \Yn
- -- Escape: \Y(nm
- -- Escape: \Y[name]
-     This is approximately equivalent to '\X'\*[NAME]'' (one-character
-     name N, two-character name NM).  However, the contents of the
-     string or macro NAME are not interpreted; also it is permitted for
-     NAME to have been defined as a macro and thus contain newlines (it
-     is not permitted for the argument to '\X' to contain newlines).
-     The inclusion of newlines requires an extension to the UNIX 'troff'
-     output format, and confuses drivers that do not know about this
-     extension (*note Device Control Commands::).
-
-   *Note Output Devices::.
-
-\1f
-File: groff.info,  Node: Miscellaneous,  Next: Gtroff Internals,  Prev: Postprocessor Access,  Up: gtroff Reference
-
-5.31 Miscellaneous
-==================
-
-This section documents parts of 'gtroff' that cannot (yet) be
-categorized elsewhere in this manual.
-
- -- Request: .nm [start [inc [space [indent]]]]
-     Print line numbers.  START is the line number of the _next_ output
-     line.  INC indicates which line numbers are printed.  For example,
-     the value 5 means to emit only line numbers that are multiples
-     of 5; this defaults to 1.  SPACE is the space to be left between
-     the number and the text; this defaults to one digit space.  The
-     fourth argument is the indentation of the line numbers, defaulting
-     to zero.  Both SPACE and INDENT are given as multiples of digit
-     spaces; they can be negative also.  Without any arguments, line
-     numbers are turned off.
-
-     'gtroff' reserves three digit spaces for the line number (which is
-     printed right-justified) plus the amount given by INDENT; the
-     output lines are concatenated to the line numbers, separated by
-     SPACE, and _without_ reducing the line length.  Depending on the
-     value of the horizontal page offset (as set with the 'po' request),
-     line numbers that are longer than the reserved space stick out to
-     the left, or the whole line is moved to the right.
-
-     Parameters corresponding to missing arguments are not changed; any
-     non-digit argument (to be more precise, any argument starting with
-     a character valid as a delimiter for identifiers) is also treated
-     as missing.
-
-     If line numbering has been disabled with a call to 'nm' without an
-     argument, it can be reactivated with '.nm +0', using the previously
-     active line numbering parameters.
-
-     The parameters of 'nm' are associated with the current environment
-     (*note Environments::).  The current output line number is
-     available in the number register 'ln'.
-
-          .po 1m
-          .ll 2i
-          This test shows how line numbering works with groff.
-          .nm 999
-          This test shows how line numbering works with groff.
-          .br
-          .nm xxx 3 2
-          .ll -\w'0'u
-          This test shows how line numbering works with groff.
-          .nn 2
-          This test shows how line numbering works with groff.
-
-     And here the result:
-
-           This  test shows how
-           line numbering works
-           999 with   groff.   This
-          1000 test shows how  line
-          1001 numbering works with
-          1002 groff.
-                This test shows how
-                line      numbering
-           works  with  groff.
-           This test shows how
-          1005  line      numbering
-                works with groff.
-
- -- Request: .nn [skip]
-     Temporarily turn off line numbering.  The argument is the number of
-     lines not to be numbered; this defaults to 1.
-
- -- Request: .mc glyph [dist]
-     Print a "margin character" to the right of the text.(1)  (*note
-     Miscellaneous-Footnote-1::) The first argument is the glyph to be
-     printed.  The second argument is the distance away from the right
-     margin.  If missing, the previously set value is used; default is
-     10pt).  For text lines that are too long (that is, longer than the
-     text length plus DIST), the margin character is directly appended
-     to the lines.
-
-     With no arguments the margin character is turned off.  If this
-     occurs before a break, no margin character is printed.
-
-     For compatibility with AT&T 'troff', a call to 'mc' to set the
-     margin character can't be undone immediately; at least one line
-     gets a margin character.  Thus
-
-          .ll 1i
-          .mc \[br]
-          .mc
-          xxx
-          .br
-          xxx
-
-     produces
-
-          xxx        |
-          xxx
-
-     For empty lines and lines produced by the 'tl' request no margin
-     character is emitted.
-
-     The margin character is associated with the current environment
-     (*note Environments::).
-
-     This is quite useful for indicating text that has changed, and, in
-     fact, there are programs available for doing this (they are called
-     'nrchbar' and 'changebar' and can be found in any
-     'comp.sources.unix' archive).
-
-          .ll 3i
-          .mc |
-          This paragraph is highlighted with a margin
-          character.
-          .sp
-          Note that vertical space isn't marked.
-          .br
-          \&
-          .br
-          But we can fake it with `\&'.
-
-     Result:
-
-          This  paragraph is highlighted |
-          with a margin character.       |
-
-          Note that vertical space isn't |
-          marked.                        |
-                                         |
-          But we can fake it with `\&'.  |
-
- -- Request: .psbb filename
- -- Register: \n[llx]
- -- Register: \n[lly]
- -- Register: \n[urx]
- -- Register: \n[ury]
-     Retrieve the bounding box of the POSTSCRIPT image found in
-     FILENAME.  The file must conform to Adobe's "Document Structuring
-     Conventions" (DSC); the command searches for a '%%BoundingBox'
-     comment and extracts the bounding box values into the number
-     registers 'llx', 'lly', 'urx', and 'ury'.  If an error occurs (for
-     example, 'psbb' cannot find the '%%BoundingBox' comment), it sets
-     the four number registers to zero.
-
-     The search path for FILENAME can be controlled with the '-I'
-     command line option.
-
-\1f
-File: groff.info,  Node: Miscellaneous-Footnotes,  Up: Miscellaneous
-
-   (1) "Margin character" is a misnomer since it is an output glyph.
-
-\1f
-File: groff.info,  Node: Gtroff Internals,  Next: Debugging,  Prev: Miscellaneous,  Up: gtroff Reference
-
-5.32 'gtroff' Internals
-=======================
-
-'gtroff' processes input in three steps.  One or more input characters
-are converted to an "input token".(1)  (*note Gtroff
-Internals-Footnote-1::) Then, one or more input tokens are converted to
-an "output node".  Finally, output nodes are converted to the
-intermediate output language understood by all output devices.
-
-   Actually, before step one happens, 'gtroff' converts certain escape
-sequences into reserved input characters (not accessible by the user);
-such reserved characters are used for other internal processing also -
-this is the very reason why not all characters are valid input.  *Note
-Identifiers::, for more on this topic.
-
-   For example, the input string 'fi\[:u]' is converted into a character
-token 'f', a character token 'i', and a special token ':u' (representing
-u umlaut).  Later on, the character tokens 'f' and 'i' are merged to a
-single output node representing the ligature glyph 'fi' (provided the
-current font has a glyph for this ligature); the same happens with ':u'.
-All output glyph nodes are 'processed', which means that they are
-invariably associated with a given font, font size, advance width, etc.
-During the formatting process, 'gtroff' itself adds various nodes to
-control the data flow.
-
-   Macros, diversions, and strings collect elements in two chained
-lists: a list of input tokens that have been passed unprocessed, and a
-list of output nodes.  Consider the following the diversion.
-
-     .di xxx
-     a
-     \!b
-     c
-     .br
-     .di
-
-It contains these elements.
-
-node list            token list   element number
-                                  
-line start node      --           1
-glyph node 'a'       --           2
-word space node      --           3
---                   'b'          4
---                   '\n'         5
-glyph node 'c'       --           6
-vertical size node   --           7
-vertical size node   --           8
---                   '\n'         9
-
-Elements 1, 7, and 8 are inserted by 'gtroff'; the latter two (which are
-always present) specify the vertical extent of the last line, possibly
-modified by '\x'.  The 'br' request finishes the current partial line,
-inserting a newline input token, which is subsequently converted to a
-space when the diversion is reread.  Note that the word space node has a
-fixed width that isn't stretchable anymore.  To convert horizontal space
-nodes back to input tokens, use the 'unformat' request.
-
-   Macros only contain elements in the token list (and the node list is
-empty); diversions and strings can contain elements in both lists.
-
-   Note that the 'chop' request simply reduces the number of elements in
-a macro, string, or diversion by one.  Exceptions are "compatibility
-save" and "compatibility ignore" input tokens, which are ignored.  The
-'substring' request also ignores those input tokens.
-
-   Some requests like 'tr' or 'cflags' work on glyph identifiers only;
-this means that the associated glyph can be changed without destroying
-this association.  This can be very helpful for substituting glyphs.  In
-the following example, we assume that glyph 'foo' isn't available by
-default, so we provide a substitution using the 'fchar' request and map
-it to input character 'x'.
-
-     .fchar \[foo] foo
-     .tr x \[foo]
-
-Now let us assume that we install an additional special font 'bar' that
-has glyph 'foo'.
-
-     .special bar
-     .rchar \[foo]
-
-Since glyphs defined with 'fchar' are searched before glyphs in special
-fonts, we must call 'rchar' to remove the definition of the fallback
-glyph.  Anyway, the translation is still active; 'x' now maps to the
-real glyph 'foo'.
-
-   Macro and request arguments preserve the compatibility mode:
-
-     .cp 1     \" switch to compatibility mode
-     .de xx
-     \\$1
-     ..
-     .cp 0     \" switch compatibility mode off
-     .xx caf\['e]
-         => café
-
-Since compatibility mode is on while 'de' is called, the macro 'xx'
-activates compatibility mode while executing.  Argument '$1' can still
-be handled properly because it inherits the compatibility mode status
-which was active at the point where 'xx' is called.
-
-   After expansion of the parameters, the compatibility save and restore
-tokens are removed.
-
-\1f
-File: groff.info,  Node: Gtroff Internals-Footnotes,  Up: Gtroff Internals
-
-   (1) Except the escapes '\f', '\F', '\H', '\m', '\M', '\R', '\s', and
-'\S', which are processed immediately if not in copy-in mode.
-
-\1f
-File: groff.info,  Node: Debugging,  Next: Implementation Differences,  Prev: Gtroff Internals,  Up: gtroff Reference
-
-5.33 Debugging
-==============
-
-'gtroff' is not easy to debug, but there are some useful features and
-strategies for debugging.
-
- -- Request: .lf line [filename]
-     Change the line number and optionally the file name 'gtroff' shall
-     use for error and warning messages.  LINE is the input line number
-     of the _next_ line.
-
-     Without argument, the request is ignored.
-
-     This is a debugging aid for documents that are split into many
-     files, then put together with 'soelim' and other preprocessors.
-     Usually, it isn't invoked manually.
-
-     Note that other 'troff' implementations (including the original
-     AT&T version) handle 'lf' differently.  For them, LINE changes the
-     line number of the _current_ line.
-
- -- Request: .tm string
- -- Request: .tm1 string
- -- Request: .tmc string
-     Send STRING to the standard error output; this is very useful for
-     printing debugging messages among other things.
-
-     STRING is read in copy mode.
-
-     The 'tm' request ignores leading spaces of STRING; 'tm1' handles
-     its argument similar to the 'ds' request: a leading double quote in
-     STRING is stripped to allow initial blanks.
-
-     The 'tmc' request is similar to 'tm1' but does not append a newline
-     (as is done in 'tm' and 'tm1').
-
- -- Request: .ab [string]
-     Similar to the 'tm' request, except that it causes 'gtroff' to stop
-     processing.  With no argument it prints 'User Abort.' to standard
-     error.
-
- -- Request: .ex
-     The 'ex' request also causes 'gtroff' to stop processing; see also
-     *note I/O::.
-
-   When doing something involved it is useful to leave the debugging
-statements in the code and have them turned on by a command line flag.
-
-     .if \n(DB .tm debugging output
-
-To activate these statements say
-
-     groff -rDB=1 file
-
-   If it is known in advance that there are many errors and no useful
-output, 'gtroff' can be forced to suppress formatted output with the
-'-z' flag.
-
- -- Request: .pev
-     Print the contents of the current environment and all the currently
-     defined environments (both named and numbered) on 'stderr'.
-
- -- Request: .pm
-     Print the entire symbol table on 'stderr'.  Names of all defined
-     macros, strings, and diversions are print together with their size
-     in bytes.  Since 'gtroff' sometimes adds nodes by itself, the
-     returned size can be larger than expected.
-
-     This request differs from UNIX 'troff': 'gtroff' reports the sizes
-     of diversions, ignores an additional argument to print only the
-     total of the sizes, and the size isn't returned in blocks of 128
-     characters.
-
- -- Request: .pnr
-     Print the names and contents of all currently defined number
-     registers on 'stderr'.
-
- -- Request: .ptr
-     Print the names and positions of all traps (not including input
-     line traps and diversion traps) on 'stderr'.  Empty slots in the
-     page trap list are printed as well, because they can affect the
-     priority of subsequently planted traps.
-
- -- Request: .fl
-     Instruct 'gtroff' to flush its output immediately.  The intent is
-     for interactive use, but this behaviour is currently not
-     implemented in 'gtroff'.  Contrary to UNIX 'troff', TTY output is
-     sent to a device driver also ('grotty'), making it non-trivial to
-     communicate interactively.
-
-     This request causes a line break.
-
- -- Request: .backtrace
-     Print a backtrace of the input stack to the standard error stream.
-
-     Consider the following in file 'test':
-
-          .de xxx
-          .  backtrace
-          ..
-          .de yyy
-          .  xxx
-          ..
-          .
-          .yyy
-
-     On execution, 'gtroff' prints the following:
-
-          test:2: backtrace: macro `xxx'
-          test:5: backtrace: macro `yyy'
-          test:8: backtrace: file `test'
-
-     The option '-b' of 'gtroff' internally calls a variant of this
-     request on each error and warning.
-
- -- Register: \n[slimit]
-     Use the 'slimit' number register to set the maximum number of
-     objects on the input stack.  If 'slimit' is less than or equal
-     to 0, there is no limit set.  With no limit, a buggy recursive
-     macro can exhaust virtual memory.
-
-     The default value is 1000; this is a compile-time constant.
-
- -- Request: .warnscale si
-     Set the scaling indicator used in warnings to SI.  Valid values for
-     SI are 'u', 'i', 'c', 'p', and 'P'.  At startup, it is set to 'i'.
-
- -- Request: .spreadwarn [limit]
-     Make 'gtroff' emit a warning if the additional space inserted for
-     each space between words in an output line is larger or equal to
-     LIMIT.  A negative value is changed to zero; no argument toggles
-     the warning on and off without changing LIMIT.  The default scaling
-     indicator is 'm'.  At startup, 'spreadwarn' is deactivated, and
-     LIMIT is set to 3m.
-
-     For example,
-
-          .spreadwarn 0.2m
-
-     causes a warning if 'gtroff' must add 0.2m or more for each
-     interword space in a line.
-
-     This request is active only if text is justified to both margins
-     (using '.ad b').
-
-   'gtroff' has command line options for printing out more warnings
-('-w') and for printing backtraces ('-b') when a warning or an error
-occurs.  The most verbose level of warnings is '-ww'.
-
- -- Request: .warn [flags]
- -- Register: \n[.warn]
-     Control the level of warnings checked for.  The FLAGS are the sum
-     of the numbers associated with each warning that is to be enabled;
-     all other warnings are disabled.  The number associated with each
-     warning is listed below.  For example, '.warn 0' disables all
-     warnings, and '.warn 1' disables all warnings except that about
-     missing glyphs.  If no argument is given, all warnings are enabled.
-
-     The read-only number register '.warn' contains the current warning
-     level.
-
-* Menu:
-
-* Warnings::
-
-\1f
-File: groff.info,  Node: Warnings,  Prev: Debugging,  Up: Debugging
-
-5.33.1 Warnings
----------------
-
-The warnings that can be given to 'gtroff' are divided into the
-following categories.  The name associated with each warning is used by
-the '-w' and '-W' options; the number is used by the 'warn' request and
-by the '.warn' register.
-
-'char'
-'1'
-     Non-existent glyphs.(1)  (*note Warnings-Footnote-1::) This is
-     enabled by default.
-
-'number'
-'2'
-     Invalid numeric expressions.  This is enabled by default.  *Note
-     Expressions::.
-
-'break'
-'4'
-     In fill mode, lines that could not be broken so that their length
-     was less than the line length.  This is enabled by default.
-
-'delim'
-'8'
-     Missing or mismatched closing delimiters.
-
-'el'
-'16'
-     Use of the 'el' request with no matching 'ie' request.  *Note
-     if-else::.
-
-'scale'
-'32'
-     Meaningless scaling indicators.
-
-'range'
-'64'
-     Out of range arguments.
-
-'syntax'
-'128'
-     Dubious syntax in numeric expressions.
-
-'di'
-'256'
-     Use of 'di' or 'da' without an argument when there is no current
-     diversion.
-
-'mac'
-'512'
-     Use of undefined strings, macros and diversions.  When an undefined
-     string, macro, or diversion is used, that string is automatically
-     defined as empty.  So, in most cases, at most one warning is given
-     for each name.
-
-'reg'
-'1024'
-     Use of undefined number registers.  When an undefined number
-     register is used, that register is automatically defined to have a
-     value of 0.  So, in most cases, at most one warning is given for
-     use of a particular name.
-
-'tab'
-'2048'
-     Use of a tab character where a number was expected.
-
-'right-brace'
-'4096'
-     Use of '\}' where a number was expected.
-
-'missing'
-'8192'
-     Requests that are missing non-optional arguments.
-
-'input'
-'16384'
-     Invalid input characters.
-
-'escape'
-'32768'
-     Unrecognized escape sequences.  When an unrecognized escape
-     sequence '\X' is encountered, the escape character is ignored, and
-     X is printed.
-
-'space'
-'65536'
-     Missing space between a request or macro and its argument.  This
-     warning is given when an undefined name longer than two characters
-     is encountered, and the first two characters of the name make a
-     defined name.  The request or macro is not invoked.  When this
-     warning is given, no macro is automatically defined.  This is
-     enabled by default.  This warning never occurs in compatibility
-     mode.
-
-'font'
-'131072'
-     Non-existent fonts.  This is enabled by default.
-
-'ig'
-'262144'
-     Invalid escapes in text ignored with the 'ig' request.  These are
-     conditions that are errors when they do not occur in ignored text.
-
-'color'
-'524288'
-     Color related warnings.
-
-'file'
-'1048576'
-     Missing files.  The 'mso' request gives this warning when the
-     requested macro file does not exist.  This is enabled by default.
-
-'all'
-     All warnings except 'di', 'mac' and 'reg'.  It is intended that
-     this covers all warnings that are useful with traditional macro
-     packages.
-
-'w'
-     All warnings.
-
-\1f
-File: groff.info,  Node: Warnings-Footnotes,  Up: Warnings
-
-   (1) 'char' is a misnomer since it reports missing glyphs - there
-aren't missing input characters, only invalid ones.
-
-\1f
-File: groff.info,  Node: Implementation Differences,  Prev: Debugging,  Up: gtroff Reference
-
-5.34 Implementation Differences
-===============================
-
-GNU 'troff' has a number of features that cause incompatibilities with
-documents written with old versions of 'troff'.
-
-   Long names cause some incompatibilities.  UNIX 'troff' interprets
-
-     .dsabcd
-
-as defining a string 'ab' with contents 'cd'.  Normally, GNU 'troff'
-interprets this as a call of a macro named 'dsabcd'.  Also UNIX 'troff'
-interprets '\*[' or '\n[' as references to a string or number register
-called '['.  In GNU 'troff', however, this is normally interpreted as
-the start of a long name.  In compatibility mode GNU 'troff' interprets
-long names in the traditional way (which means that they are not
-recognized as names).
-
- -- Request: .cp [n]
- -- Request: .do cmd
- -- Register: \n[.C]
-     If N is missing or non-zero, turn on compatibility mode; otherwise,
-     turn it off.
-
-     The read-only number register '.C' is 1 if compatibility mode is
-     on, 0 otherwise.
-
-     Compatibility mode can be also turned on with the '-C' command line
-     option.
-
-     The 'do' request turns off compatibility mode while executing its
-     arguments as a 'gtroff' command.  However, it does not turn off
-     compatibility mode while processing the macro itself.  To do that,
-     use the 'de1' request (or manipulate the '.C' register manually).
-     *Note Writing Macros::.
-
-          .do fam T
-
-     executes the 'fam' request when compatibility mode is enabled.
-
-     'gtroff' restores the previous compatibility setting before
-     interpreting any files sourced by the CMD.
-
-   Two other features are controlled by '-C'.  If not in compatibility
-mode, GNU 'troff' preserves the input level in delimited arguments:
-
-     .ds xx '
-     \w'abc\*(xxdef'
-
-In compatibility mode, the string '72def'' is returned; without '-C' the
-resulting string is '168' (assuming a TTY output device).
-
-   Finally, the escapes '\f', '\H', '\m', '\M', '\R', '\s', and '\S' are
-transparent for recognizing the beginning of a line only in
-compatibility mode (this is a rather obscure feature).  For example, the
-code
-
-     .de xx
-     Hallo!
-     ..
-     \fB.xx\fP
-
-prints 'Hallo!' in bold face if in compatibility mode, and '.xx' in bold
-face otherwise.
-
-   GNU 'troff' does not allow the use of the escape sequences '\|',
-'\^', '\&', '\{', '\}', '\<SP>', '\'', '\`', '\-', '\_', '\!', '\%', and
-'\c' in names of strings, macros, diversions, number registers, fonts or
-environments; UNIX 'troff' does.  The '\A' escape sequence (*note
-Identifiers::) may be helpful in avoiding use of these escape sequences
-in names.
-
-   Fractional point sizes cause one noteworthy incompatibility.  In UNIX
-'troff' the 'ps' request ignores scale indicators and thus
-
-     .ps 10u
-
-sets the point size to 10 points, whereas in GNU 'troff' it sets the
-point size to 10 scaled points.  *Note Fractional Type Sizes::, for more
-information.
-
-   In GNU 'troff' there is a fundamental difference between
-(unformatted) input characters and (formatted) output glyphs.
-Everything that affects how a glyph is output is stored with the glyph
-node; once a glyph node has been constructed it is unaffected by any
-subsequent requests that are executed, including 'bd', 'cs', 'tkf',
-'tr', or 'fp' requests.  Normally glyphs are constructed from input
-characters at the moment immediately before the glyph is added to the
-current output line.  Macros, diversions and strings are all, in fact,
-the same type of object; they contain lists of input characters and
-glyph nodes in any combination.  A glyph node does not behave like an
-input character for the purposes of macro processing; it does not
-inherit any of the special properties that the input character from
-which it was constructed might have had.  For example,
-
-     .di x
-     \\\\
-     .br
-     .di
-     .x
-
-prints '\\' in GNU 'troff'; each pair of input backslashes is turned
-into one output backslash and the resulting output backslashes are not
-interpreted as escape characters when they are reread.  UNIX 'troff'
-would interpret them as escape characters when they were reread and
-would end up printing one '\'.  The correct way to obtain a printable
-backslash is to use the '\e' escape sequence: This always prints a
-single instance of the current escape character, regardless of whether
-or not it is used in a diversion; it also works in both GNU 'troff' and
-UNIX 'troff'.(1)  (*note Implementation Differences-Footnote-1::) To
-store, for some reason, an escape sequence in a diversion that is
-interpreted when the diversion is reread, either use the traditional
-'\!' transparent output facility, or, if this is unsuitable, the new
-'\?' escape sequence.
-
-   *Note Diversions::, and *note Gtroff Internals::, for more
-information.
-
-\1f
-File: groff.info,  Node: Implementation Differences-Footnotes,  Up: Implementation Differences
-
-   (1) To be completely independent of the current escape character, use
-'\(rs', which represents a reverse solidus (backslash) glyph.
-
-\1f
-File: groff.info,  Node: Preprocessors,  Next: Output Devices,  Prev: gtroff Reference,  Up: Top
-
-6 Preprocessors
-***************
-
-This chapter describes all preprocessors that come with 'groff' or which
-are freely available.
-
-* Menu:
-
-* geqn::
-* gtbl::
-* gpic::
-* ggrn::
-* grap::
-* gchem::
-* grefer::
-* gsoelim::
-* preconv::
-
-\1f
-File: groff.info,  Node: geqn,  Next: gtbl,  Prev: Preprocessors,  Up: Preprocessors
-
-6.1 'geqn'
-==========
-
-* Menu:
-
-* Invoking geqn::
-
-\1f
-File: groff.info,  Node: Invoking geqn,  Prev: geqn,  Up: geqn
-
-6.1.1 Invoking 'geqn'
----------------------
-
-\1f
-File: groff.info,  Node: gtbl,  Next: gpic,  Prev: geqn,  Up: Preprocessors
-
-6.2 'gtbl'
-==========
-
-* Menu:
-
-* Invoking gtbl::
-
-\1f
-File: groff.info,  Node: Invoking gtbl,  Prev: gtbl,  Up: gtbl
-
-6.2.1 Invoking 'gtbl'
----------------------
-
-\1f
-File: groff.info,  Node: gpic,  Next: ggrn,  Prev: gtbl,  Up: Preprocessors
-
-6.3 'gpic'
-==========
-
-* Menu:
-
-* Invoking gpic::
-
-\1f
-File: groff.info,  Node: Invoking gpic,  Prev: gpic,  Up: gpic
-
-6.3.1 Invoking 'gpic'
----------------------
-
-\1f
-File: groff.info,  Node: ggrn,  Next: grap,  Prev: gpic,  Up: Preprocessors
-
-6.4 'ggrn'
-==========
-
-* Menu:
-
-* Invoking ggrn::
-
-\1f
-File: groff.info,  Node: Invoking ggrn,  Prev: ggrn,  Up: ggrn
-
-6.4.1 Invoking 'ggrn'
----------------------
-
-\1f
-File: groff.info,  Node: grap,  Next: gchem,  Prev: ggrn,  Up: Preprocessors
-
-6.5 'grap'
-==========
-
-A free implementation of 'grap', written by Ted Faber, is available as
-an extra package from the following address:
-
-     <http://www.lunabase.org/~faber/Vault/software/grap/>
-
-\1f
-File: groff.info,  Node: gchem,  Next: grefer,  Prev: grap,  Up: Preprocessors
-
-6.6 'gchem'
-===========
-
-* Menu:
-
-* Invoking gchem::
-
-\1f
-File: groff.info,  Node: Invoking gchem,  Prev: gchem,  Up: gchem
-
-6.6.1 Invoking 'gchem'
-----------------------
-
-\1f
-File: groff.info,  Node: grefer,  Next: gsoelim,  Prev: gchem,  Up: Preprocessors
-
-6.7 'grefer'
-============
-
-* Menu:
-
-* Invoking grefer::
-
-\1f
-File: groff.info,  Node: Invoking grefer,  Prev: grefer,  Up: grefer
-
-6.7.1 Invoking 'grefer'
------------------------
-
-\1f
-File: groff.info,  Node: gsoelim,  Next: preconv,  Prev: grefer,  Up: Preprocessors
-
-6.8 'gsoelim'
-=============
-
-* Menu:
-
-* Invoking gsoelim::
-
-\1f
-File: groff.info,  Node: Invoking gsoelim,  Prev: gsoelim,  Up: gsoelim
-
-6.8.1 Invoking 'gsoelim'
-------------------------
-
-\1f
-File: groff.info,  Node: preconv,  Prev: gsoelim,  Up: Preprocessors
-
-6.9 'preconv'
-=============
-
-* Menu:
-
-* Invoking preconv::
-
-\1f
-File: groff.info,  Node: Invoking preconv,  Prev: preconv,  Up: preconv
-
-6.9.1 Invoking 'preconv'
-------------------------
-
-\1f
-File: groff.info,  Node: Output Devices,  Next: File formats,  Prev: Preprocessors,  Up: Top
-
-7 Output Devices
-****************
-
-* Menu:
-
-* Special Characters::
-* grotty::
-* grops::
-* gropdf::
-* grodvi::
-* grolj4::
-* grolbp::
-* grohtml::
-* gxditview::
-
-\1f
-File: groff.info,  Node: Special Characters,  Next: grotty,  Prev: Output Devices,  Up: Output Devices
-
-7.1 Special Characters
-======================
-
-*Note Font Files::.
-
-\1f
-File: groff.info,  Node: grotty,  Next: grops,  Prev: Special Characters,  Up: Output Devices
-
-7.2 'grotty'
-============
-
-The postprocessor 'grotty' translates the output from GNU 'troff' into a
-form suitable for typewriter-like devices.  It is fully documented on
-its manual page, 'grotty(1)'.
-
-* Menu:
-
-* Invoking grotty::
-
-\1f
-File: groff.info,  Node: Invoking grotty,  Prev: grotty,  Up: grotty
-
-7.2.1 Invoking 'grotty'
------------------------
-
-The postprocessor 'grotty' accepts the following command-line options:
-
-'-b'
-     Do not overstrike bold glyphs.  Ignored if '-c' isn't used.
-
-'-B'
-     Do not underline bold-italic glyphs.  Ignored if '-c' isn't used.
-
-'-c'
-     Use overprint and disable colours for printing on legacy Teletype
-     printers (see below).
-
-'-d'
-     Do not render lines (this is, ignore all '\D' escapes).
-
-'-f'
-     Use form feed control characters in the output.
-
-'-FDIR'
-     Put the directory 'DIR/devNAME' in front of the search path for the
-     font and device description files, given the target device NAME.
-
-'-h'
-     Use horizontal tabs for sequences of 8 space characters.
-
-'-i'
-     Request italic glyphs from the terminal.  Ignored if '-c' is
-     active.
-
-'-o'
-     Do not overstrike.
-
-'-r'
-     Highlight italic glyphs.  Ignored if '-c' is active.
-
-'-u'
-     Do not underline italic glyphs.  Ignored if '-c' isn't used.
-
-'-U'
-     Do not overstrike bold-italic glyphs.  Ignored if '-c' isn't used.
-
-'-v'
-     Print the version number.
-
-   The '-c' mode for TTY output devices means that underlining is done
-by emitting sequences of '_' and '^H' (the backspace character) before
-the actual character.  Literally, this is printing an underline
-character, then moving the caret back one character position, and
-printing the actual character at the same position as the underline
-character (similar to a typewriter).  Usually, a modern terminal can't
-interpret this (and the original Teletype machines for which this
-sequence was appropriate are no longer in use).  You need a pager
-program like 'less' that translates this into ISO 6429 SGR sequences to
-control terminals.
-
-\1f
-File: groff.info,  Node: grops,  Next: gropdf,  Prev: grotty,  Up: Output Devices
-
-7.3 'grops'
-===========
-
-The postprocessor 'grops' translates the output from GNU 'troff' into a
-form suitable for Adobe POSTSCRIPT devices.  It is fully documented on
-its manual page, 'grops(1)'.
-
-* Menu:
-
-* Invoking grops::
-* Embedding PostScript::
-
-\1f
-File: groff.info,  Node: Invoking grops,  Next: Embedding PostScript,  Prev: grops,  Up: grops
-
-7.3.1 Invoking 'grops'
-----------------------
-
-The postprocessor 'grops' accepts the following command-line options:
-
-'-bFLAGS'
-     Use backward compatibility settings given by FLAGS as documented in
-     the 'grops(1)' manual page.  Overrides the command 'broken' in the
-     'DESC' file.
-
-'-cN'
-     Print N copies of each page.
-
-'-FDIR'
-     Put the directory 'DIR/devNAME' in front of the search path for the
-     font, prologue and device description files, given the target
-     device NAME, usually *ps*.
-
-'-g'
-     Tell the printer to guess the page length.  Useful for printing
-     vertically centered pages when the paper dimensions are determined
-     at print time.
-
-'-IPATH ...'
-     Consider the directory 'PATH' for searching included files
-     specified with relative paths.  The current directory is searched
-     as fallback.
-
-'-l'
-     Use landscape orientation.
-
-'-m'
-     Use manual feed.
-
-'-pPAPERSIZE'
-     Set the page dimensions.  Overrides the commands 'papersize',
-     'paperlength', and 'paperwidth' in the 'DESC' file.  See the
-     'groff_font(5)' manual page for details.
-
-'-PPROLOGUE'
-     Use the PROLOGUE in the font path as the prologue instead of the
-     default 'prologue'.  Overrides the environment variable
-     'GROPS_PROLOGUE'.
-
-'-wN'
-     Set the line thickness to N/1000em.  Overrides the default value N
-     = 40.
-
-'-v'
-     Print the version number.
-
-\1f
-File: groff.info,  Node: Embedding PostScript,  Prev: Invoking grops,  Up: grops
-
-7.3.2 Embedding POSTSCRIPT
---------------------------
-
-The escape sequence
-
-   '\X'ps: import FILE LLX LLY URX URY WIDTH [HEIGHT]''
-
-places a rectangle of the specified WIDTH containing the POSTSCRIPT
-drawing from file FILE bound by the box from LLX LLY to URX URY (in
-POSTSCRIPT coordinates) at the insertion point.  If HEIGHT is not
-specified, the embedded drawing is scaled proportionally.
-
-   *Note Miscellaneous::, for the 'psbb' request, which automatically
-generates the bounding box.
-
-   This escape sequence is used internally by the macro 'PSPIC' (see the
-'groff_tmac(5)' manual page).
-
-\1f
-File: groff.info,  Node: gropdf,  Next: grodvi,  Prev: grops,  Up: Output Devices
-
-7.4 'gropdf'
-============
-
-The postprocessor 'gropdf' translates the output from GNU 'troff' into a
-form suitable for Adobe PDF devices.  It is fully documented on its
-manual page, 'gropdf(1)'.
-
-* Menu:
-
-* Invoking gropdf::
-* Embedding PDF::
-
-\1f
-File: groff.info,  Node: Invoking gropdf,  Next: Embedding PDF,  Prev: gropdf,  Up: gropdf
-
-7.4.1 Invoking 'gropdf'
------------------------
-
-The postprocessor 'gropdf' accepts the following command-line options:
-
-'-d'
-     Produce uncompressed PDFs that include debugging comments.
-
-'-e'
-     This forces 'gropdf' to embed all used fonts in the PDF, even if
-     they are one of the 14 base Adobe fonts.
-
-'-FDIR'
-     Put the directory 'DIR/devNAME' in front of the search path for the
-     font, prologue and device description files, given the target
-     device NAME, usually *pdf*.
-
-'-yFOUNDRY'
-     This forces the use of a different font foundry.
-
-'-l'
-     Use landscape orientation.
-
-'-pPAPERSIZE'
-     Set the page dimensions.  Overrides the commands 'papersize',
-     'paperlength', and 'paperwidth' in the 'DESC' file.  See the
-     'groff_font(5)' manual page for details.
-
-'-v'
-     Print the version number.
-
-'-s'
-     Append a comment line to end of PDF showing statistics, i.e.
-     number of pages in document.  Ghostscript's 'ps2pdf(1)' complains
-     about this line if it is included, but works anyway.
-
-'-uFILENAME'
-     'gropdf' normally includes a ToUnicode CMap with any font created
-     using 'text.enc' as the encoding file, this makes it easier to
-     search for words that contain ligatures.  You can include your own
-     CMap by specifying a FILENAME or have no CMap at all by omitting
-     the FILENAME.
-
-\1f
-File: groff.info,  Node: Embedding PDF,  Prev: Invoking gropdf,  Up: gropdf
-
-7.4.2 Embedding PDF
--------------------
-
-The escape sequence
-
-   '\X'pdf: pdfpic FILE ALIGNMENT WIDTH [HEIGHT] [LINELENGTH]''
-
-places a rectangle of the specified WIDTH containing the PDF drawing
-from file FILE of desired WIDTH and HEIGHT (if HEIGHT is missing or zero
-then it is scaled proportionally).  If ALIGNMENT is '-L' the drawing is
-left aligned.  If it is '-C' or '-R' a LINELENGTH greater than the width
-of the drawing is required as well.  If WIDTH is specified as zero then
-the width is scaled in proportion to the height.
-
-\1f
-File: groff.info,  Node: grodvi,  Next: grolj4,  Prev: gropdf,  Up: Output Devices
-
-7.5 'grodvi'
-============
-
-The postprocessor 'grodvi' translates the output from GNU 'troff' into
-the *DVI* output format compatible with the *TeX* document preparation
-system.  It is fully documented on its manual page, 'grodvi(1)'.
-
-* Menu:
-
-* Invoking grodvi::
-
-\1f
-File: groff.info,  Node: Invoking grodvi,  Prev: grodvi,  Up: grodvi
-
-7.5.1 Invoking 'grodvi'
------------------------
-
-The postprocessor 'grodvi' accepts the following command-line options:
-
-'-d'
-     Do not use *tpic* specials to implement drawing commands.
-
-'-FDIR'
-     Put the directory 'DIR/devNAME' in front of the search path for the
-     font and device description files, given the target device NAME,
-     usually *dvi*.
-
-'-l'
-     Use landscape orientation.
-
-'-pPAPERSIZE'
-     Set the page dimensions.  Overrides the commands 'papersize',
-     'paperlength', and 'paperwidth' in the 'DESC' file.  See
-     'groff_font(5)' manual page for details.
-
-'-v'
-     Print the version number.
-
-'-wN'
-     Set the line thickness to N/1000em.  Overrides the default value N
-     = 40.
-
-\1f
-File: groff.info,  Node: grolj4,  Next: grolbp,  Prev: grodvi,  Up: Output Devices
-
-7.6 'grolj4'
-============
-
-The postprocessor 'grolj4' translates the output from GNU 'troff' into
-the *PCL5* output format suitable for printing on a *HP LaserJet 4*
-printer.  It is fully documented on its manual page, 'grolj4(1)'.
-
-* Menu:
-
-* Invoking grolj4::
-
-\1f
-File: groff.info,  Node: Invoking grolj4,  Prev: grolj4,  Up: grolj4
-
-7.6.1 Invoking 'grolj4'
------------------------
-
-The postprocessor 'grolj4' accepts the following command-line options:
-
-'-cN'
-     Print N copies of each page.
-
-'-FDIR'
-     Put the directory 'DIR/devNAME' in front of the search path for the
-     font and device description files, given the target device NAME,
-     usually *lj4*.
-
-'-l'
-     Use landscape orientation.
-
-'-pSIZE'
-     Set the page dimensions.  Valid values for SIZE are: 'letter',
-     'legal', 'executive', 'a4', 'com10', 'monarch', 'c5', 'b5', 'd1'.
-
-'-v'
-     Print the version number.
-
-'-wN'
-     Set the line thickness to N/1000em.  Overrides the default value N
-     = 40.
-
-   The special drawing command '\D'R DH DV'' draws a horizontal
-rectangle from the current position to the position at offset (DH,DV).
-
-\1f
-File: groff.info,  Node: grolbp,  Next: grohtml,  Prev: grolj4,  Up: Output Devices
-
-7.7 'grolbp'
-============
-
-The postprocessor 'grolbp' translates the output from GNU 'troff' into
-the *LBP* output format suitable for printing on *Canon CAPSL* printers.
-It is fully documented on its manual page, 'grolbp(1)'.
-
-* Menu:
-
-* Invoking grolbp::
-
-\1f
-File: groff.info,  Node: Invoking grolbp,  Prev: grolbp,  Up: grolbp
-
-7.7.1 Invoking 'grolbp'
------------------------
-
-The postprocessor 'grolbp' accepts the following command-line options:
-
-'-cN'
-     Print N copies of each page.
-
-'-FDIR'
-     Put the directory 'DIR/devNAME' in front of the search path for the
-     font, prologue and device description files, given the target
-     device NAME, usually *lbp*.
-
-'-l'
-     Use landscape orientation.
-
-'-oORIENTATION'
-     Use the ORIENTATION specified: 'portrait' or 'landscape'.
-
-'-pPAPERSIZE'
-     Set the page dimensions.  See 'groff_font(5)' manual page for
-     details.
-
-'-wN'
-     Set the line thickness to N/1000em.  Overrides the default value N
-     = 40.
-
-'-v'
-     Print the version number.
-
-'-h'
-     Print command-line help.
-
-\1f
-File: groff.info,  Node: grohtml,  Next: gxditview,  Prev: grolbp,  Up: Output Devices
-
-7.8 'grohtml'
-=============
-
-The 'grohtml' front end (which consists of a preprocessor,
-'pre-grohtml', and a device driver, 'post-grohtml') translates the
-output of GNU 'troff' to HTML.  Users should always invoke 'grohtml' via
-the 'groff' command with a '\-Thtml' option.  If no files are given,
-'grohtml' will read the standard input.  A filename of '-' will also
-cause 'grohtml' to read the standard input.  HTML output is written to
-the standard output.  When 'grohtml' is run by 'groff', options can be
-passed to 'grohtml' using 'groff''s '-P' option.
-
-   'grohtml' invokes 'groff' twice.  In the first pass, pictures,
-equations, and tables are rendered using the 'ps' device, and in the
-second pass HTML output is generated by the 'html' device.
-
-   'grohtml' always writes output in 'UTF-8' encoding and has built-in
-entities for all non-composite unicode characters.  In spite of this,
-'groff' may issue warnings about unknown special characters if they
-can't be found during the first pass.  Such warnings can be safely
-ignored unless the special characters appear inside a table or equation,
-in which case glyphs for these characters must be defined for the 'ps'
-device as well.
-
-   This output device is fully documented on its manual page,
-'grohtml(1)'.
-
-* Menu:
-
-* Invoking grohtml::
-* grohtml specific registers and strings::
-
-\1f
-File: groff.info,  Node: Invoking grohtml,  Next: grohtml specific registers and strings,  Prev: grohtml,  Up: grohtml
-
-7.8.1 Invoking 'grohtml'
-------------------------
-
-The postprocessor 'grohtml' accepts the following command-line options:
-
-'-aBITS'
-     Use this number of BITS (= 1, 2 or 4) for text antialiasing.
-     Default: BITS = 4.
-
-'-a0'
-     Do not use text antialiasing.
-
-'-b'
-     Use white background.
-
-'-DDIR'
-     Store rendered images in the directory 'DIR'.
-
-'-FDIR'
-     Put the directory 'DIR/devNAME' in front of the search path for the
-     font, prologue and device description files, given the target
-     device NAME, usually *html*.
-
-'-gBITS'
-     Use this number of BITS (= 1, 2 or 4) for antialiasing of drawings.
-     Default: BITS = 4.
-
-'-g0'
-     Do not use antialiasing for drawings.
-
-'-h'
-     Use the 'B' element for section headings.
-
-'-iRESOLUTION'
-     Use the RESOLUTION for rendered images.  Default: RESOLUTION =
-     100dpi.
-
-'-ISTEM'
-     Set the images' STEM NAME.  Default: STEM = 'grohtml-XXX' (XXX is
-     the process ID).
-
-'-jSTEM'
-     Place each section in a separate file called 'STEM-N.html' (where N
-     is a generated section number).
-
-'-l'
-     Do not generate the table of contents.
-
-'-n'
-     Generate simple fragment identifiers.
-
-'-oOFFSET'
-     Use vertical paddding OFFSET for images.
-
-'-p'
-     Display the page rendering progress to 'stderr'.
-
-'-r'
-     Do not use horizontal rules to separate headers and footers.
-
-'-sSIZE'
-     Set the base font size, to be modified using the elements 'BIG' and
-     'SMALL'.
-
-'-SLEVEL'
-     Generate separate files for sections at level LEVEL.
-
-'-v'
-     Print the version number.
-
-'-V'
-     Generate a validator button at the bottom.
-
-'-y'
-     Generate a signature of groff after the validator button, if any.
-
-\1f
-File: groff.info,  Node: grohtml specific registers and strings,  Prev: Invoking grohtml,  Up: grohtml
-
-7.8.2 'grohtml' specific registers and strings
-----------------------------------------------
-
- -- Register: \n[ps4html]
- -- String: \*[www-image-template]
-     The registers 'ps4html' and 'www-image-template' are defined by the
-     'pre-grohtml' preprocessor.  'pre-grohtml' reads in the 'troff'
-     input, marks up the inline equations and passes the result firstly
-     to
-
-          troff -Tps -rps4html=1 -dwww-image-template=TEMPLATE
-
-     and secondly to
-
-          troff -Thtml
-
-     or
-
-          troff -Txhtml
-
-     The POSTSCRIPT device is used to create all the image files (for
-     '-Thtml'; if '-Txhtml' is used, all equations are passed to 'geqn'
-     to produce MathML, and the register 'ps4html' enables the macro
-     sets to ignore floating keeps, footers, and headings.
-
-     The register 'www-image-template' is set to the user specified
-     template name or the default name.
-
-\1f
-File: groff.info,  Node: gxditview,  Prev: grohtml,  Up: Output Devices
-
-7.9 'gxditview'
-===============
-
-* Menu:
-
-* Invoking gxditview::
-
-\1f
-File: groff.info,  Node: Invoking gxditview,  Prev: gxditview,  Up: gxditview
-
-7.9.1 Invoking 'gxditview'
---------------------------
-
-\1f
-File: groff.info,  Node: File formats,  Next: Installation,  Prev: Output Devices,  Up: Top
-
-8 File formats
-**************
-
-All files read and written by 'gtroff' are text files.  The following
-two sections describe their format.
-
-* Menu:
-
-* gtroff Output::
-* Font Files::
-
-\1f
-File: groff.info,  Node: gtroff Output,  Next: Font Files,  Prev: File formats,  Up: File formats
-
-8.1 'gtroff' Output
-===================
-
-This section describes the intermediate output format of GNU 'troff'.
-This output is produced by a run of 'gtroff' before it is fed into a
-device postprocessor program.
-
-   As 'groff' is a wrapper program around 'gtroff' that automatically
-calls a postprocessor, this output does not show up normally.  This is
-why it is called "intermediate".  'groff' provides the option '-Z' to
-inhibit postprocessing, such that the produced intermediate output is
-sent to standard output just like calling 'gtroff' manually.
-
-   Here, the term "troff output" describes what is output by 'gtroff',
-while "intermediate output" refers to the language that is accepted by
-the parser that prepares this output for the postprocessors.  This
-parser is smarter on whitespace and implements obsolete elements for
-compatibility, otherwise both formats are the same.(1)  (*note gtroff
-Output-Footnote-1::)
-
-   The main purpose of the intermediate output concept is to facilitate
-the development of postprocessors by providing a common programming
-interface for all devices.  It has a language of its own that is
-completely different from the 'gtroff' language.  While the 'gtroff'
-language is a high-level programming language for text processing, the
-intermediate output language is a kind of low-level assembler language
-by specifying all positions on the page for writing and drawing.
-
-   The intermediate output produced by 'gtroff' is fairly readable,
-while output from AT&T 'troff' is rather hard to understand because of
-strange habits that are still supported, but not used any longer by
-'gtroff'.
-
-* Menu:
-
-* Language Concepts::
-* Command Reference::
-* Intermediate Output Examples::
-* Output Language Compatibility::
-
-\1f
-File: groff.info,  Node: gtroff Output-Footnotes,  Up: gtroff Output
-
-   (1) The parser and postprocessor for intermediate output can be found
-in the file
-'GROFF-SOURCE-DIR/src/libs/libdriver/input.cpp'.
-
-\1f
-File: groff.info,  Node: Language Concepts,  Next: Command Reference,  Prev: gtroff Output,  Up: gtroff Output
-
-8.1.1 Language Concepts
------------------------
-
-During the run of 'gtroff', the input data is cracked down to the
-information on what has to be printed at what position on the intended
-device.  So the language of the intermediate output format can be quite
-small.  Its only elements are commands with and without arguments.  In
-this section, the term "command" always refers to the intermediate
-output language, and never to the 'gtroff' language used for document
-formatting.  There are commands for positioning and text writing, for
-drawing, and for device controlling.
-
-* Menu:
-
-* Separation::
-* Argument Units::
-* Document Parts::
-
-\1f
-File: groff.info,  Node: Separation,  Next: Argument Units,  Prev: Language Concepts,  Up: Language Concepts
-
-8.1.1.1 Separation
-..................
-
-AT&T 'troff' output has strange requirements on whitespace.  The
-'gtroff' output parser, however, is smart about whitespace by making it
-maximally optional.  The whitespace characters, i.e., the tab, space,
-and newline characters, always have a syntactical meaning.  They are
-never printable because spacing within the output is always done by
-positioning commands.
-
-   Any sequence of space or tab characters is treated as a single
-"syntactical space".  It separates commands and arguments, but is only
-required when there would occur a clashing between the command code and
-the arguments without the space.  Most often, this happens when
-variable-length command names, arguments, argument lists, or command
-clusters meet.  Commands and arguments with a known, fixed length need
-not be separated by syntactical space.
-
-   A line break is a syntactical element, too.  Every command argument
-can be followed by whitespace, a comment, or a newline character.  Thus
-a "syntactical line break" is defined to consist of optional syntactical
-space that is optionally followed by a comment, and a newline character.
-
-   The normal commands, those for positioning and text, consist of a
-single letter taking a fixed number of arguments.  For historical
-reasons, the parser allows to stack such commands on the same line, but
-fortunately, in 'gtroff''s intermediate output, every command with at
-least one argument is followed by a line break, thus providing excellent
-readability.
-
-   The other commands - those for drawing and device controlling - have
-a more complicated structure; some recognize long command names, and
-some take a variable number of arguments.  So all 'D' and 'x' commands
-were designed to request a syntactical line break after their last
-argument.  Only one command, 'x X', has an argument that can stretch
-over several lines; all other commands must have all of their arguments
-on the same line as the command, i.e., the arguments may not be split by
-a line break.
-
-   Empty lines (these are lines containing only space and/or a comment),
-can occur everywhere.  They are just ignored.
-
-\1f
-File: groff.info,  Node: Argument Units,  Next: Document Parts,  Prev: Separation,  Up: Language Concepts
-
-8.1.1.2 Argument Units
-......................
-
-Some commands take integer arguments that are assumed to represent
-values in a measurement unit, but the letter for the corresponding scale
-indicator is not written with the output command arguments.  Most
-commands assume the scale indicator 'u', the basic unit of the device,
-some use 'z', the scaled point unit of the device, while others, such as
-the color commands, expect plain integers.
-
-   Note that single characters can have the eighth bit set, as can the
-names of fonts and special characters.  The names of characters and
-fonts can be of arbitrary length.  A character that is to be printed is
-always in the current font.
-
-   A string argument is always terminated by the next whitespace
-character (space, tab, or newline); an embedded '#' character is
-regarded as part of the argument, not as the beginning of a comment
-command.  An integer argument is already terminated by the next
-non-digit character, which then is regarded as the first character of
-the next argument or command.
-
-\1f
-File: groff.info,  Node: Document Parts,  Prev: Argument Units,  Up: Language Concepts
-
-8.1.1.3 Document Parts
-......................
-
-A correct intermediate output document consists of two parts, the
-"prologue" and the "body".
-
-   The task of the prologue is to set the general device parameters
-using three exactly specified commands.  'gtroff''s prologue is
-guaranteed to consist of the following three lines (in that order):
-
-     x T DEVICE
-     x res N H V
-     x init
-
-with the arguments set as outlined in *note Device Control Commands::.
-Note that the parser for the intermediate output format is able to
-swallow additional whitespace and comments as well even in the prologue.
-
-   The body is the main section for processing the document data.
-Syntactically, it is a sequence of any commands different from the ones
-used in the prologue.  Processing is terminated as soon as the first
-'x stop' command is encountered; the last line of any 'gtroff'
-intermediate output always contains such a command.
-
-   Semantically, the body is page oriented.  A new page is started by a
-'p' command.  Positioning, writing, and drawing commands are always done
-within the current page, so they cannot occur before the first 'p'
-command.  Absolute positioning (by the 'H' and 'V' commands) is done
-relative to the current page; all other positioning is done relative to
-the current location within this page.
-
-\1f
-File: groff.info,  Node: Command Reference,  Next: Intermediate Output Examples,  Prev: Language Concepts,  Up: gtroff Output
-
-8.1.2 Command Reference
------------------------
-
-This section describes all intermediate output commands, both from AT&T
-'troff' as well as the 'gtroff' extensions.
-
-* Menu:
-
-* Comment Command::
-* Simple Commands::
-* Graphics Commands::
-* Device Control Commands::
-* Obsolete Command::
-
-\1f
-File: groff.info,  Node: Comment Command,  Next: Simple Commands,  Prev: Command Reference,  Up: Command Reference
-
-8.1.2.1 Comment Command
-.......................
-
-'#ANYTHING<end of line>'
-     A comment.  Ignore any characters from the '#' character up to the
-     next newline character.
-
-     This command is the only possibility for commenting in the
-     intermediate output.  Each comment can be preceded by arbitrary
-     syntactical space; every command can be terminated by a comment.
-
-\1f
-File: groff.info,  Node: Simple Commands,  Next: Graphics Commands,  Prev: Comment Command,  Up: Command Reference
-
-8.1.2.2 Simple Commands
-.......................
-
-The commands in this subsection have a command code consisting of a
-single character, taking a fixed number of arguments.  Most of them are
-commands for positioning and text writing.  These commands are smart
-about whitespace.  Optionally, syntactical space can be inserted before,
-after, and between the command letter and its arguments.  All of these
-commands are stackable, i.e., they can be preceded by other simple
-commands or followed by arbitrary other commands on the same line.  A
-separating syntactical space is only necessary when two integer
-arguments would clash or if the preceding argument ends with a string
-argument.
-
-'C XXX<whitespace>'
-     Print a special character named XXX.  The trailing syntactical
-     space or line break is necessary to allow glyph names of arbitrary
-     length.  The glyph is printed at the current print position; the
-     glyph's size is read from the font file.  The print position is not
-     changed.
-
-'c G'
-     Print glyph G at the current print position;(1) (*note Simple
-     Commands-Footnote-1::) the glyph's size is read from the font file.
-     The print position is not changed.
-
-'f N'
-     Set font to font number N (a non-negative integer).
-
-'H N'
-     Move right to the absolute vertical position N (a non-negative
-     integer in basic units 'u' relative to left edge of current page.
-
-'h N'
-     Move N (a non-negative integer) basic units 'u' horizontally to the
-     right.  The original UNIX troff manual allows negative values for N
-     also, but 'gtroff' doesn't use this.
-
-'m COLOR-SCHEME [COMPONENT ...]'
-     Set the color for text (glyphs), line drawing, and the outline of
-     graphic objects using different color schemes; the analoguous
-     command for the filling color of graphic objects is 'DF'.  The
-     color components are specified as integer arguments between 0 and
-     65536.  The number of color components and their meaning vary for
-     the different color schemes.  These commands are generated by
-     'gtroff''s escape sequence '\m'.  No position changing.  These
-     commands are a 'gtroff' extension.
-
-     'mc CYAN MAGENTA YELLOW'
-          Set color using the CMY color scheme, having the 3 color
-          components CYAN, MAGENTA, and YELLOW.
-
-     'md'
-          Set color to the default color value (black in most cases).
-          No component arguments.
-
-     'mg GRAY'
-          Set color to the shade of gray given by the argument, an
-          integer between 0 (black) and 65536 (white).
-
-     'mk CYAN MAGENTA YELLOW BLACK'
-          Set color using the CMYK color scheme, having the 4 color
-          components CYAN, MAGENTA, YELLOW, and BLACK.
-
-     'mr RED GREEN BLUE'
-          Set color using the RGB color scheme, having the 3 color
-          components RED, GREEN, and BLUE.
-
-'N N'
-     Print glyph with index N (a non-negative integer) of the current
-     font.  This command is a 'gtroff' extension.
-
-'n B A'
-     Inform the device about a line break, but no positioning is done by
-     this command.  In AT&T 'troff', the integer arguments B and A
-     informed about the space before and after the current line to make
-     the intermediate output more human readable without performing any
-     action.  In 'groff', they are just ignored, but they must be
-     provided for compatibility reasons.
-
-'p N'
-     Begin a new page in the outprint.  The page number is set to N.
-     This page is completely independent of pages formerly processed
-     even if those have the same page number.  The vertical position on
-     the outprint is automatically set to 0.  All positioning, writing,
-     and drawing is always done relative to a page, so a 'p' command
-     must be issued before any of these commands.
-
-'s N'
-     Set point size to N scaled points (this is unit 'z').  AT&T 'troff'
-     used the unit points ('p') instead.  *Note Output Language
-     Compatibility::.
-
-'t XXX<whitespace>'
-'t XXX DUMMY-ARG<whitespace>'
-     Print a word, i.e., a sequence of characters XXX representing
-     output glyphs which names are single characters, terminated by a
-     space character or a line break; an optional second integer
-     argument is ignored (this allows the formatter to generate an even
-     number of arguments).  The first glyph should be printed at the
-     current position, the current horizontal position should then be
-     increased by the width of the first glyph, and so on for each
-     glyph.  The widths of the glyphs are read from the font file,
-     scaled for the current point size, and rounded to a multiple of the
-     horizontal resolution.  Special characters cannot be printed using
-     this command (use the 'C' command for special characters).  This
-     command is a 'gtroff' extension; it is only used for devices whose
-     'DESC' file contains the 'tcommand' keyword (*note DESC File
-     Format::).
-
-'u N XXX<whitespace>'
-     Print word with track kerning.  This is the same as the 't' command
-     except that after printing each glyph, the current horizontal
-     position is increased by the sum of the width of that glyph and N
-     (an integer in basic units 'u').  This command is a 'gtroff'
-     extension; it is only used for devices whose 'DESC' file contains
-     the 'tcommand' keyword (*note DESC File Format::).
-
-'V N'
-     Move down to the absolute vertical position N (a non-negative
-     integer in basic units 'u') relative to upper edge of current page.
-
-'v N'
-     Move N basic units 'u' down (N is a non-negative integer).  The
-     original UNIX troff manual allows negative values for N also, but
-     'gtroff' doesn't use this.
-
-'w'
-     Informs about a paddable white space to increase readability.  The
-     spacing itself must be performed explicitly by a move command.
-
-\1f
-File: groff.info,  Node: Simple Commands-Footnotes,  Up: Simple Commands
-
-   (1) 'c' is actually a misnomer since it outputs a glyph.
-
-\1f
-File: groff.info,  Node: Graphics Commands,  Next: Device Control Commands,  Prev: Simple Commands,  Up: Command Reference
-
-8.1.2.3 Graphics Commands
-.........................
-
-Each graphics or drawing command in the intermediate output starts with
-the letter 'D', followed by one or two characters that specify a
-subcommand; this is followed by a fixed or variable number of integer
-arguments that are separated by a single space character.  A 'D' command
-may not be followed by another command on the same line (apart from a
-comment), so each 'D' command is terminated by a syntactical line break.
-
-   'gtroff' output follows the classical spacing rules (no space between
-command and subcommand, all arguments are preceded by a single space
-character), but the parser allows optional space between the command
-letters and makes the space before the first argument optional.  As
-usual, each space can be any sequence of tab and space characters.
-
-   Some graphics commands can take a variable number of arguments.  In
-this case, they are integers representing a size measured in basic units
-'u'.  The arguments called H1, H2, ..., HN stand for horizontal
-distances where positive means right, negative left.  The arguments
-called V1, V2, ..., VN stand for vertical distances where positive means
-down, negative up.  All these distances are offsets relative to the
-current location.
-
-   Each graphics command directly corresponds to a similar 'gtroff' '\D'
-escape sequence.  *Note Drawing Requests::.
-
-   Unknown 'D' commands are assumed to be device-specific.  Its
-arguments are parsed as strings; the whole information is then sent to
-the postprocessor.
-
-   In the following command reference, the syntax element <line break>
-means a syntactical line break as defined above.
-
-'D~ H1 V1 H2 V2 ... HN VN<line break>'
-     Draw B-spline from current position to offset (H1,V1), then to
-     offset (H2,V2), if given, etc. up to (HN,VN).  This command takes a
-     variable number of argument pairs; the current position is moved to
-     the terminal point of the drawn curve.
-
-'Da H1 V1 H2 V2<line break>'
-     Draw arc from current position to (H1,V1)+(H2,V2) with center at
-     (H1,V1); then move the current position to the final point of the
-     arc.
-
-'DC D<line break>'
-'DC D DUMMY-ARG<line break>'
-     Draw a solid circle using the current fill color with diameter D
-     (integer in basic units 'u') with leftmost point at the current
-     position; then move the current position to the rightmost point of
-     the circle.  An optional second integer argument is ignored (this
-     allows the formatter to generate an even number of arguments).
-     This command is a 'gtroff' extension.
-
-'Dc D<line break>'
-     Draw circle line with diameter D (integer in basic units 'u') with
-     leftmost point at the current position; then move the current
-     position to the rightmost point of the circle.
-
-'DE H V<line break>'
-     Draw a solid ellipse in the current fill color with a horizontal
-     diameter of H and a vertical diameter of V (both integers in basic
-     units 'u') with the leftmost point at the current position; then
-     move to the rightmost point of the ellipse.  This command is a
-     'gtroff' extension.
-
-'De H V<line break>'
-     Draw an outlined ellipse with a horizontal diameter of H and a
-     vertical diameter of V (both integers in basic units 'u') with the
-     leftmost point at current position; then move to the rightmost
-     point of the ellipse.
-
-'DF COLOR-SCHEME [COMPONENT ...]<line break>'
-     Set fill color for solid drawing objects using different color
-     schemes; the analoguous command for setting the color of text, line
-     graphics, and the outline of graphic objects is 'm'.  The color
-     components are specified as integer arguments between 0 and 65536.
-     The number of color components and their meaning vary for the
-     different color schemes.  These commands are generated by
-     'gtroff''s escape sequences '\D'F ...'' and '\M' (with no other
-     corresponding graphics commands).  No position changing.  This
-     command is a 'gtroff' extension.
-
-     'DFc CYAN MAGENTA YELLOW<line break>'
-          Set fill color for solid drawing objects using the CMY color
-          scheme, having the 3 color components CYAN, MAGENTA, and
-          YELLOW.
-
-     'DFd<line break>'
-          Set fill color for solid drawing objects to the default fill
-          color value (black in most cases).  No component arguments.
-
-     'DFg GRAY<line break>'
-          Set fill color for solid drawing objects to the shade of gray
-          given by the argument, an integer between 0 (black) and 65536
-          (white).
-
-     'DFk CYAN MAGENTA YELLOW BLACK<line break>'
-          Set fill color for solid drawing objects using the CMYK color
-          scheme, having the 4 color components CYAN, MAGENTA, YELLOW,
-          and BLACK.
-
-     'DFr RED GREEN BLUE<line break>'
-          Set fill color for solid drawing objects using the RGB color
-          scheme, having the 3 color components RED, GREEN, and BLUE.
-
-'Df N<line break>'
-     The argument N must be an integer in the range -32767 to 32767.
-
-     0 <= N <= 1000
-          Set the color for filling solid drawing objects to a shade of
-          gray, where 0 corresponds to solid white, 1000 (the default)
-          to solid black, and values in between to intermediate shades
-          of gray; this is obsoleted by command 'DFg'.
-
-     N < 0 or N > 1000
-          Set the filling color to the color that is currently being
-          used for the text and the outline, see command 'm'.  For
-          example, the command sequence
-
-               mg 0 0 65536
-               Df -1
-
-          sets all colors to blue.
-
-     No position changing.  This command is a 'gtroff' extension.
-
-'Dl H V<line break>'
-     Draw line from current position to offset (H,V) (integers in basic
-     units 'u'); then set current position to the end of the drawn line.
-
-'Dp H1 V1 H2 V2 ... HN VN<line break>'
-     Draw a polygon line from current position to offset (H1,V1), from
-     there to offset (H2,V2), etc. up to offset (HN,VN), and from there
-     back to the starting position.  For historical reasons, the
-     position is changed by adding the sum of all arguments with odd
-     index to the actual horizontal position and the even ones to the
-     vertical position.  Although this doesn't make sense it is kept for
-     compatibility.  This command is a 'gtroff' extension.
-
-'Dp H1 V1 H2 V2 ... HN VN<line break>'
-     Draw a solid polygon in the current fill color rather than an
-     outlined polygon, using the same arguments and positioning as the
-     corresponding 'Dp' command.  This command is a 'gtroff' extension.
-
-'Dt N<line break>'
-     Set the current line thickness to N (an integer in basic units 'u')
-     if N>0; if N=0 select the smallest available line thickness; if N<0
-     set the line thickness proportional to the point size (this is the
-     default before the first 'Dt' command was specified).  For
-     historical reasons, the horizontal position is changed by adding
-     the argument to the actual horizontal position, while the vertical
-     position is not changed.  Although this doesn't make sense it is
-     kept for compatibility.  This command is a 'gtroff' extension.
-
-\1f
-File: groff.info,  Node: Device Control Commands,  Next: Obsolete Command,  Prev: Graphics Commands,  Up: Command Reference
-
-8.1.2.4 Device Control Commands
-...............................
-
-Each device control command starts with the letter 'x', followed by a
-space character (optional or arbitrary space or tab in 'gtroff') and a
-subcommand letter or word; each argument (if any) must be preceded by a
-syntactical space.  All 'x' commands are terminated by a syntactical
-line break; no device control command can be followed by another command
-on the same line (except a comment).
-
-   The subcommand is basically a single letter, but to increase
-readability, it can be written as a word, i.e., an arbitrary sequence of
-characters terminated by the next tab, space, or newline character.  All
-characters of the subcommand word but the first are simply ignored.  For
-example, 'gtroff' outputs the initialization command 'x i' as 'x init'
-and the resolution command 'x r' as 'x res'.
-
-   In the following, the syntax element <line break> means a syntactical
-line break (*note Separation::).
-
-'xF NAME<line break>'
-     The 'F' stands for FILENAME.
-
-     Use NAME as the intended name for the current file in error
-     reports.  This is useful for remembering the original file name
-     when 'gtroff' uses an internal piping mechanism.  The input file is
-     not changed by this command.  This command is a 'gtroff' extension.
-
-'xf N S<line break>'
-     The 'f' stands for FONT.
-
-     Mount font position N (a non-negative integer) with font named S (a
-     text word).  *Note Font Positions::.
-
-'xH N<line break>'
-     The 'H' stands for HEIGHT.
-
-     Set glyph height to N (a positive integer in scaled points 'z').
-     AT&T 'troff' uses the unit points ('p') instead.  *Note Output
-     Language Compatibility::.
-
-'xi<line break>'
-     The 'i' stands for INIT.
-
-     Initialize device.  This is the third command of the prologue.
-
-'xp<line break>'
-     The 'p' stands for PAUSE.
-
-     Parsed but ignored.  The original UNIX troff manual writes
-
-          pause device, can be restarted
-
-'xr N H V<line break>'
-     The 'r' stands for RESOLUTION.
-
-     Resolution is N, while H is the minimal horizontal motion, and V
-     the minimal vertical motion possible with this device; all
-     arguments are positive integers in basic units 'u' per inch.  This
-     is the second command of the prologue.
-
-'xS N<line break>'
-     The 'S' stands for SLANT.
-
-     Set slant to N (an integer in basic units 'u').
-
-'xs<line break>'
-     The 's' stands for STOP.
-
-     Terminates the processing of the current file; issued as the last
-     command of any intermediate troff output.
-
-'xt<line break>'
-     The 't' stands for TRAILER.
-
-     Generate trailer information, if any.  In GTROFF, this is actually
-     just ignored.
-
-'xT XXX<line break>'
-     The 'T' stands for TYPESETTER.
-
-     Set name of device to word XXX, a sequence of characters ended by
-     the next white space character.  The possible device names coincide
-     with those from the 'groff' '-T' option.  This is the first command
-     of the prologue.
-
-'xu N<line break>'
-     The 'u' stands for UNDERLINE.
-
-     Configure underlining of spaces.  If N is 1, start underlining of
-     spaces; if N is 0, stop underlining of spaces.  This is needed for
-     the 'cu' request in nroff mode and is ignored otherwise.  This
-     command is a 'gtroff' extension.
-
-'xX ANYTHING<line break>'
-     The 'x' stands for X-ESCAPE.
-
-     Send string ANYTHING uninterpreted to the device.  If the line
-     following this command starts with a '+' character this line is
-     interpreted as a continuation line in the following sense.  The '+'
-     is ignored, but a newline character is sent instead to the device,
-     the rest of the line is sent uninterpreted.  The same applies to
-     all following lines until the first character of a line is not a
-     '+' character.  This command is generated by the 'gtroff' escape
-     sequence '\X'.  The line-continuing feature is a 'gtroff'
-     extension.
-
-\1f
-File: groff.info,  Node: Obsolete Command,  Prev: Device Control Commands,  Up: Command Reference
-
-8.1.2.5 Obsolete Command
-........................
-
-In AT&T 'troff' output, the writing of a single glyph is mostly done by
-a very strange command that combines a horizontal move and a single
-character giving the glyph name.  It doesn't have a command code, but is
-represented by a 3-character argument consisting of exactly 2 digits and
-a character.
-
-DDG
-     Move right DD (exactly two decimal digits) basic units 'u', then
-     print glyph G (represented as a single character).
-
-     In 'gtroff', arbitrary syntactical space around and within this
-     command is allowed to be added.  Only when a preceding command on
-     the same line ends with an argument of variable length a separating
-     space is obligatory.  In AT&T 'troff', large clusters of these and
-     other commands are used, mostly without spaces; this made such
-     output almost unreadable.
-
-   For modern high-resolution devices, this command does not make sense
-because the width of the glyphs can become much larger than two decimal
-digits.  In 'gtroff', this is only used for the devices 'X75', 'X75-12',
-'X100', and 'X100-12'.  For other devices, the commands 't' and 'u'
-provide a better functionality.
-
-\1f
-File: groff.info,  Node: Intermediate Output Examples,  Next: Output Language Compatibility,  Prev: Command Reference,  Up: gtroff Output
-
-8.1.3 Intermediate Output Examples
-----------------------------------
-
-This section presents the intermediate output generated from the same
-input for three different devices.  The input is the sentence 'hell
-world' fed into 'gtroff' on the command line.
-
-High-resolution device 'ps'
-
-     This is the standard output of 'gtroff' if no '-T' option is given.
-
-          shell> echo "hell world" | groff -Z -T ps
-
-          x T ps
-          x res 72000 1 1
-          x init
-          p1
-          x font 5 TR
-          f5
-          s10000
-          V12000
-          H72000
-          thell
-          wh2500
-          tw
-          H96620
-          torld
-          n12000 0
-          x trailer
-          V792000
-          x stop
-
-     This output can be fed into 'grops' to get its representation as a
-     POSTSCRIPT file.
-
-Low-resolution device 'latin1'
-
-     This is similar to the high-resolution device except that the
-     positioning is done at a minor scale.  Some comments (lines
-     starting with '#') were added for clarification; they were not
-     generated by the formatter.
-
-          shell> echo "hell world" | groff -Z -T latin1
-
-          # prologue
-          x T latin1
-          x res 240 24 40
-          x init
-          # begin a new page
-          p1
-          # font setup
-          x font 1 R
-          f1
-          s10
-          # initial positioning on the page
-          V40
-          H0
-          # write text `hell'
-          thell
-          # inform about space, and issue a horizontal jump
-          wh24
-          # write text `world'
-          tworld
-          # announce line break, but do nothing because ...
-          n40 0
-          # ... the end of the document has been reached
-          x trailer
-          V2640
-          x stop
-
-     This output can be fed into 'grotty' to get a formatted text
-     document.
-
-AT&T 'troff' output
-     Since a computer monitor has a very low resolution compared to
-     modern printers the intermediate output for the X Window devices
-     can use the jump-and-write command with its 2-digit displacements.
-
-          shell> echo "hell world" | groff -Z -T X100
-
-          x T X100
-          x res 100 1 1
-          x init
-          p1
-          x font 5 TR
-          f5
-          s10
-          V16
-          H100
-          # write text with jump-and-write commands
-          ch07e07l03lw06w11o07r05l03dh7
-          n16 0
-          x trailer
-          V1100
-          x stop
-
-     This output can be fed into 'xditview' or 'gxditview' for
-     displaying in X.
-
-     Due to the obsolete jump-and-write command, the text clusters in
-     the AT&T 'troff' output are almost unreadable.
-
-\1f
-File: groff.info,  Node: Output Language Compatibility,  Prev: Intermediate Output Examples,  Up: gtroff Output
-
-8.1.4 Output Language Compatibility
------------------------------------
-
-The intermediate output language of AT&T 'troff' was first documented in
-the UNIX troff manual, with later additions documented in 'A
-Typesetter-indenpendent TROFF', written by Brian Kernighan.
-
-   The 'gtroff' intermediate output format is compatible with this
-specification except for the following features.
-
-   * The classical quasi device independence is not yet implemented.
-
-   * The old hardware was very different from what we use today.  So the
-     'groff' devices are also fundamentally different from the ones in
-     AT&T 'troff'.  For example, the AT&T POSTSCRIPT device is called
-     'post' and has a resolution of only 720 units per inch, suitable
-     for printers 20 years ago, while 'groff''s 'ps' device has a
-     resolution of 72000 units per inch.  Maybe, by implementing some
-     rescaling mechanism similar to the classical quasi device
-     independence, 'groff' could emulate AT&T's 'post' device.
-
-   * The B-spline command 'D~' is correctly handled by the intermediate
-     output parser, but the drawing routines aren't implemented in some
-     of the postprocessor programs.
-
-   * The argument of the commands 's' and 'x H' has the implicit unit
-     scaled point 'z' in 'gtroff', while AT&T 'troff' has point ('p').
-     This isn't an incompatibility but a compatible extension, for both
-     units coincide for all devices without a 'sizescale' parameter in
-     the 'DESC' file, including all postprocessors from AT&T and
-     'groff''s text devices.  The few 'groff' devices with a 'sizescale'
-     parameter either do not exist for AT&T 'troff', have a different
-     name, or seem to have a different resolution.  So conflicts are
-     very unlikely.
-
-   * The position changing after the commands 'Dp', 'DP', and 'Dt' is
-     illogical, but as old versions of 'gtroff' used this feature it is
-     kept for compatibility reasons.
-
-\1f
-File: groff.info,  Node: Font Files,  Prev: gtroff Output,  Up: File formats
-
-8.2 Font Files
-==============
-
-The 'gtroff' font format is roughly a superset of the 'ditroff' font
-format (as used in later versions of AT&T 'troff' and its descendants).
-Unlike the 'ditroff' font format, there is no associated binary format;
-all files are text files.(1)  (*note Font Files-Footnote-1::) The font
-files for device NAME are stored in a directory 'devNAME'.  There are
-two types of file: a device description file called 'DESC' and for each
-font F a font file called 'F'.
-
-* Menu:
-
-* DESC File Format::
-* Font File Format::
-
-\1f
-File: groff.info,  Node: Font Files-Footnotes,  Up: Font Files
-
-   (1) Plan 9 'troff' has also abandoned the binary format.
-
-\1f
-File: groff.info,  Node: DESC File Format,  Next: Font File Format,  Prev: Font Files,  Up: Font Files
-
-8.2.1 'DESC' File Format
-------------------------
-
-The 'DESC' file can contain the following types of line.  Except for the
-'charset' keyword, which must comes last (if at all), the order of the
-lines is not important.  Later entries in the file, however, override
-previous values.
-
-'charset'
-     This line and everything following in the file are ignored.  It is
-     allowed for the sake of backwards compatibility.
-
-'family FAM'
-     The default font family is FAM.
-
-'fonts N F1 F2 F3 ... FN'
-     Fonts F1 ... FN are mounted in the font positions M+1, ..., M+N
-     where M is the number of styles.  This command may extend over more
-     than one line.  A font name of 0 means no font is mounted on the
-     corresponding font position.
-
-'hor N'
-     The horizontal resolution is N machine units.  All horizontal
-     quantities are rounded to be multiples of this value.
-
-'image_generator STRING'
-     Needed for 'grohtml' only.  It specifies the program to generate
-     PNG images from POSTSCRIPT input.  Under GNU/Linux this is usually
-     'gs' but under other systems (notably cygwin) it might be set to
-     another name.
-
-'paperlength N'
-     The physical vertical dimension of the output medium in machine
-     units.  This isn't used by 'troff' itself but by output devices.
-     Deprecated.  Use 'papersize' instead.
-
-'papersize STRING ...'
-     Select a paper size.  Valid values for STRING are the ISO paper
-     types 'A0'-'A7', 'B0'-'B7', 'C0'-'C7', 'D0'-'D7', 'DL', and the US
-     paper types 'letter', 'legal', 'tabloid', 'ledger', 'statement',
-     'executive', 'com10', and 'monarch'.  Case is not significant for
-     STRING if it holds predefined paper types.  Alternatively, STRING
-     can be a file name (e.g. '/etc/papersize'); if the file can be
-     opened, 'groff' reads the first line and tests for the above paper
-     sizes.  Finally, STRING can be a custom paper size in the format
-     'LENGTH,WIDTH' (no spaces before and after the comma).  Both LENGTH
-     and WIDTH must have a unit appended; valid values are 'i' for
-     inches, 'C' for centimeters, 'p' for points, and 'P' for picas.
-     Example: '12c,235p'.  An argument that starts with a digit is
-     always treated as a custom paper format.  'papersize' sets both the
-     vertical and horizontal dimension of the output medium.
-
-     More than one argument can be specified; 'groff' scans from left to
-     right and uses the first valid paper specification.
-
-'paperwidth N'
-     The physical horizontal dimension of the output medium in machine
-     units.  This isn't used by 'troff' itself but by output devices.
-     Deprecated.  Use 'papersize' instead.
-
-'pass_filenames'
-     Tell 'gtroff' to emit the name of the source file currently being
-     processed.  This is achieved by the intermediate output command
-     'F'.  Currently, this is only used by the 'grohtml' output device.
-
-'postpro PROGRAM'
-     Call PROGRAM as a postprocessor.  For example, the line
-
-          postpro grodvi
-
-     in the file 'devdvi/DESC' makes 'groff' call 'grodvi' if option
-     '-Tdvi' is given (and '-Z' isn't used).
-
-'prepro PROGRAM'
-     Call PROGRAM as a preprocessor.  Currently, this keyword is used by
-     'groff' with option '-Thtml' or '-Txhtml' only.
-
-'print PROGRAM'
-     Use PROGRAM as a spooler program for printing.  If omitted, the
-     '-l' and '-L' options of 'groff' are ignored.
-
-'res N'
-     There are N machine units per inch.
-
-'sizes S1 S2 ... SN 0'
-     This means that the device has fonts at S1, S2, ... SN scaled
-     points.  The list of sizes must be terminated by 0 (this is digit
-     zero).  Each SI can also be a range of sizes M-N.  The list can
-     extend over more than one line.
-
-'sizescale N'
-     The scale factor for point sizes.  By default this has a value
-     of 1.  One scaled point is equal to one point/N.  The arguments to
-     the 'unitwidth' and 'sizes' commands are given in scaled points.
-     *Note Fractional Type Sizes::, for more information.
-
-'styles S1 S2 ... SM'
-     The first M font positions are associated with styles S1 ... SM.
-
-'tcommand'
-     This means that the postprocessor can handle the 't' and 'u'
-     intermediate output commands.
-
-'unicode'
-     Indicate that the output device supports the complete Unicode
-     repertoire.  Useful only for devices that produce _character
-     entities_ instead of glyphs.
-
-     If 'unicode' is present, no 'charset' section is required in the
-     font description files since the Unicode handling built into
-     'groff' is used.  However, if there are entries in a 'charset'
-     section, they either override the default mappings for those
-     particular characters or add new mappings (normally for composite
-     characters).
-
-     This is used for '-Tutf8', '-Thtml', and '-Txhtml'.
-
-'unitwidth N'
-     Quantities in the font files are given in machine units for fonts
-     whose point size is N scaled points.
-
-'unscaled_charwidths'
-     Make the font handling module always return unscaled character
-     widths.  Needed for the 'grohtml' device.
-
-'use_charnames_in_special'
-     This command indicates that 'gtroff' should encode special
-     characters inside special commands.  Currently, this is only used
-     by the 'grohtml' output device.  *Note Postprocessor Access::.
-
-'vert N'
-     The vertical resolution is N machine units.  All vertical
-     quantities are rounded to be multiples of this value.
-
-   The 'res', 'unitwidth', 'fonts', and 'sizes' lines are mandatory.
-Other commands are ignored by 'gtroff' but may be used by postprocessors
-to store arbitrary information about the device in the 'DESC' file.
-
-   Here a list of obsolete keywords that are recognized by 'groff' but
-completely ignored: 'spare1', 'spare2', 'biggestfont'.
-
-\1f
-File: groff.info,  Node: Font File Format,  Prev: DESC File Format,  Up: Font Files
-
-8.2.2 Font File Format
-----------------------
-
-A "font file", also (and probably better) called a "font description
-file", has two sections.  The first section is a sequence of lines each
-containing a sequence of blank delimited words; the first word in the
-line is a key, and subsequent words give a value for that key.
-
-'name F'
-     The name of the font is F.
-
-'spacewidth N'
-     The normal width of a space is N.
-
-'slant N'
-     The glyphs of the font have a slant of N degrees.  (Positive means
-     forward.)
-
-'ligatures LIG1 LIG2 ... LIGN [0]'
-     Glyphs LIG1, LIG2, ..., LIGN are ligatures; possible ligatures are
-     'ff', 'fi', 'fl', 'ffi' and 'ffl'.  For backwards compatibility,
-     the list of ligatures may be terminated with a 0.  The list of
-     ligatures may not extend over more than one line.
-
-'special'
-     The font is "special"; this means that when a glyph is requested
-     that is not present in the current font, it is searched for in any
-     special fonts that are mounted.
-
-   Other commands are ignored by 'gtroff' but may be used by
-postprocessors to store arbitrary information about the font in the font
-file.
-
-   The first section can contain comments, which start with the '#'
-character and extend to the end of a line.
-
-   The second section contains one or two subsections.  It must contain
-a 'charset' subsection and it may also contain a 'kernpairs' subsection.
-These subsections can appear in any order.  Each subsection starts with
-a word on a line by itself.
-
-   The word 'charset' starts the character set subsection.(1)  (*note
-Font File Format-Footnote-1::) The 'charset' line is followed by a
-sequence of lines.  Each line gives information for one glyph.  A line
-comprises a number of fields separated by blanks or tabs.  The format is
-
-     NAME METRICS TYPE CODE [ENTITY-NAME] ['--' COMMENT]
-
-NAME identifies the glyph name(2) (*note Font File Format-Footnote-2::):
-If NAME is a single character C then it corresponds to the 'gtroff'
-input character C; if it is of the form '\C' where C is a single
-character, then it corresponds to the special character '\[C]';
-otherwise it corresponds to the special character '\[NAME]'.  If it is
-exactly two characters XX it can be entered as '\(XX'.  Note that
-single-letter special characters can't be accessed as '\C'; the only
-exception is '\-', which is identical to '\[-]'.
-
-   'gtroff' supports 8-bit input characters; however some utilities have
-difficulties with eight-bit characters.  For this reason, there is a
-convention that the entity name 'charN' is equivalent to the single
-input character whose code is N.  For example, 'char163' would be
-equivalent to the character with code 163, which is the pounds sterling
-sign in the ISO Latin-1 character set.  You shouldn't use 'charN'
-entities in font description files since they are related to input, not
-output.  Otherwise, you get hard-coded connections between input and
-output encoding, which prevents use of different (input) character sets.
-
-   The name '---' is special and indicates that the glyph is unnamed;
-such glyphs can only be used by means of the '\N' escape sequence in
-'gtroff'.
-
-   The TYPE field gives the glyph type:
-
-'1'
-     the glyph has a descender, for example, 'p';
-
-'2'
-     the glyph has an ascender, for example, 'b';
-
-'3'
-     the glyph has both an ascender and a descender, for example, '('.
-
-   The CODE field gives the code that the postprocessor uses to print
-the glyph.  The glyph can also be input to 'gtroff' using this code by
-means of the '\N' escape sequence.  CODE can be any integer.  If it
-starts with '0' it is interpreted as octal; if it starts with '0x' or
-'0X' it is interpreted as hexadecimal.  Note, however, that the '\N'
-escape sequence only accepts a decimal integer.
-
-   The ENTITY-NAME field gives an ASCII string identifying the glyph
-that the postprocessor uses to print the 'gtroff' glyph NAME.  This
-field is optional and has been introduced so that the 'grohtml' device
-driver can encode its character set.  For example, the glyph '\[Po]' is
-represented as '&pound;' in HTML 4.0.
-
-   Anything on the line after the ENTITY-NAME field resp. after '--' is
-ignored.
-
-   The METRICS field has the form:
-
-     WIDTH[','HEIGHT[','DEPTH[','ITALIC-CORRECTION
-       [','LEFT-ITALIC-CORRECTION[','SUBSCRIPT-CORRECTION]]]]]
-
-There must not be any spaces between these subfields (it has been split
-here into two lines for better legibility only).  Missing subfields are
-assumed to be 0.  The subfields are all decimal integers.  Since there
-is no associated binary format, these values are not required to fit
-into a variable of type 'char' as they are in 'ditroff'.  The WIDTH
-subfield gives the width of the glyph.  The HEIGHT subfield gives the
-height of the glyph (upwards is positive); if a glyph does not extend
-above the baseline, it should be given a zero height, rather than a
-negative height.  The DEPTH subfield gives the depth of the glyph, that
-is, the distance from the baseline to the lowest point below the
-baseline to which the glyph extends (downwards is positive); if a glyph
-does not extend below the baseline, it should be given a zero depth,
-rather than a negative depth.  The ITALIC-CORRECTION subfield gives the
-amount of space that should be added after the glyph when it is
-immediately to be followed by a glyph from a roman font.  The
-LEFT-ITALIC-CORRECTION subfield gives the amount of space that should be
-added before the glyph when it is immediately to be preceded by a glyph
-from a roman font.  The SUBSCRIPT-CORRECTION gives the amount of space
-that should be added after a glyph before adding a subscript.  This
-should be less than the italic correction.
-
-   A line in the 'charset' section can also have the format
-
-     NAME "
-
-This indicates that NAME is just another name for the glyph mentioned in
-the preceding line.
-
-   The word 'kernpairs' starts the kernpairs section.  This contains a
-sequence of lines of the form:
-
-     C1 C2 N
-
-This means that when glyph C1 appears next to glyph C2 the space between
-them should be increased by N.  Most entries in the kernpairs section
-have a negative value for N.
-
-\1f
-File: groff.info,  Node: Font File Format-Footnotes,  Up: Font File Format
-
-   (1) This keyword is misnamed since it starts a list of ordered
-glyphs, not characters.
-
-   (2) The distinction between input, characters, and output, glyphs, is
-not clearly separated in the terminology of 'groff'; for example, the
-'char' request should be called 'glyph' since it defines an output
-entity.
-
-\1f
-File: groff.info,  Node: Installation,  Next: Copying This Manual,  Prev: File formats,  Up: Top
-
-9 Installation
-**************
-
-\1f
-File: groff.info,  Node: Copying This Manual,  Next: Request Index,  Prev: Installation,  Up: Top
-
-Appendix A Copying This Manual
-******************************
-
-                     Version 1.3, 3 November 2008
-
-     Copyright © 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
-     <http://fsf.org/>
-
-     Everyone is permitted to copy and distribute verbatim copies
-     of this license document, but changing it is not allowed.
-
-  0. PREAMBLE
-
-     The purpose of this License is to make a manual, textbook, or other
-     functional and useful document "free" in the sense of freedom: to
-     assure everyone the effective freedom to copy and redistribute it,
-     with or without modifying it, either commercially or
-     noncommercially.  Secondarily, this License preserves for the
-     author and publisher a way to get credit for their work, while not
-     being considered responsible for modifications made by others.
-
-     This License is a kind of "copyleft", which means that derivative
-     works of the document must themselves be free in the same sense.
-     It complements the GNU General Public License, which is a copyleft
-     license designed for free software.
-
-     We have designed this License in order to use it for manuals for
-     free software, because free software needs free documentation: a
-     free program should come with manuals providing the same freedoms
-     that the software does.  But this License is not limited to
-     software manuals; it can be used for any textual work, regardless
-     of subject matter or whether it is published as a printed book.  We
-     recommend this License principally for works whose purpose is
-     instruction or reference.
-
-  1. APPLICABILITY AND DEFINITIONS
-
-     This License applies to any manual or other work, in any medium,
-     that contains a notice placed by the copyright holder saying it can
-     be distributed under the terms of this License.  Such a notice
-     grants a world-wide, royalty-free license, unlimited in duration,
-     to use that work under the conditions stated herein.  The
-     "Document", below, refers to any such manual or work.  Any member
-     of the public is a licensee, and is addressed as "you".  You accept
-     the license if you copy, modify or distribute the work in a way
-     requiring permission under copyright law.
-
-     A "Modified Version" of the Document means any work containing the
-     Document or a portion of it, either copied verbatim, or with
-     modifications and/or translated into another language.
-
-     A "Secondary Section" is a named appendix or a front-matter section
-     of the Document that deals exclusively with the relationship of the
-     publishers or authors of the Document to the Document's overall
-     subject (or to related matters) and contains nothing that could
-     fall directly within that overall subject.  (Thus, if the Document
-     is in part a textbook of mathematics, a Secondary Section may not
-     explain any mathematics.)  The relationship could be a matter of
-     historical connection with the subject or with related matters, or
-     of legal, commercial, philosophical, ethical or political position
-     regarding them.
-
-     The "Invariant Sections" are certain Secondary Sections whose
-     titles are designated, as being those of Invariant Sections, in the
-     notice that says that the Document is released under this License.
-     If a section does not fit the above definition of Secondary then it
-     is not allowed to be designated as Invariant.  The Document may
-     contain zero Invariant Sections.  If the Document does not identify
-     any Invariant Sections then there are none.
-
-     The "Cover Texts" are certain short passages of text that are
-     listed, as Front-Cover Texts or Back-Cover Texts, in the notice
-     that says that the Document is released under this License.  A
-     Front-Cover Text may be at most 5 words, and a Back-Cover Text may
-     be at most 25 words.
-
-     A "Transparent" copy of the Document means a machine-readable copy,
-     represented in a format whose specification is available to the
-     general public, that is suitable for revising the document
-     straightforwardly with generic text editors or (for images composed
-     of pixels) generic paint programs or (for drawings) some widely
-     available drawing editor, and that is suitable for input to text
-     formatters or for automatic translation to a variety of formats
-     suitable for input to text formatters.  A copy made in an otherwise
-     Transparent file format whose markup, or absence of markup, has
-     been arranged to thwart or discourage subsequent modification by
-     readers is not Transparent.  An image format is not Transparent if
-     used for any substantial amount of text.  A copy that is not
-     "Transparent" is called "Opaque".
-
-     Examples of suitable formats for Transparent copies include plain
-     ASCII without markup, Texinfo input format, LaTeX input format,
-     SGML or XML using a publicly available DTD, and standard-conforming
-     simple HTML, PostScript or PDF designed for human modification.
-     Examples of transparent image formats include PNG, XCF and JPG.
-     Opaque formats include proprietary formats that can be read and
-     edited only by proprietary word processors, SGML or XML for which
-     the DTD and/or processing tools are not generally available, and
-     the machine-generated HTML, PostScript or PDF produced by some word
-     processors for output purposes only.
-
-     The "Title Page" means, for a printed book, the title page itself,
-     plus such following pages as are needed to hold, legibly, the
-     material this License requires to appear in the title page.  For
-     works in formats which do not have any title page as such, "Title
-     Page" means the text near the most prominent appearance of the
-     work's title, preceding the beginning of the body of the text.
-
-     The "publisher" means any person or entity that distributes copies
-     of the Document to the public.
-
-     A section "Entitled XYZ" means a named subunit of the Document
-     whose title either is precisely XYZ or contains XYZ in parentheses
-     following text that translates XYZ in another language.  (Here XYZ
-     stands for a specific section name mentioned below, such as
-     "Acknowledgements", "Dedications", "Endorsements", or "History".)
-     To "Preserve the Title" of such a section when you modify the
-     Document means that it remains a section "Entitled XYZ" according
-     to this definition.
-
-     The Document may include Warranty Disclaimers next to the notice
-     which states that this License applies to the Document.  These
-     Warranty Disclaimers are considered to be included by reference in
-     this License, but only as regards disclaiming warranties: any other
-     implication that these Warranty Disclaimers may have is void and
-     has no effect on the meaning of this License.
-
-  2. VERBATIM COPYING
-
-     You may copy and distribute the Document in any medium, either
-     commercially or noncommercially, provided that this License, the
-     copyright notices, and the license notice saying this License
-     applies to the Document are reproduced in all copies, and that you
-     add no other conditions whatsoever to those of this License.  You
-     may not use technical measures to obstruct or control the reading
-     or further copying of the copies you make or distribute.  However,
-     you may accept compensation in exchange for copies.  If you
-     distribute a large enough number of copies you must also follow the
-     conditions in section 3.
-
-     You may also lend copies, under the same conditions stated above,
-     and you may publicly display copies.
-
-  3. COPYING IN QUANTITY
-
-     If you publish printed copies (or copies in media that commonly
-     have printed covers) of the Document, numbering more than 100, and
-     the Document's license notice requires Cover Texts, you must
-     enclose the copies in covers that carry, clearly and legibly, all
-     these Cover Texts: Front-Cover Texts on the front cover, and
-     Back-Cover Texts on the back cover.  Both covers must also clearly
-     and legibly identify you as the publisher of these copies.  The
-     front cover must present the full title with all words of the title
-     equally prominent and visible.  You may add other material on the
-     covers in addition.  Copying with changes limited to the covers, as
-     long as they preserve the title of the Document and satisfy these
-     conditions, can be treated as verbatim copying in other respects.
-
-     If the required texts for either cover are too voluminous to fit
-     legibly, you should put the first ones listed (as many as fit
-     reasonably) on the actual cover, and continue the rest onto
-     adjacent pages.
-
-     If you publish or distribute Opaque copies of the Document
-     numbering more than 100, you must either include a machine-readable
-     Transparent copy along with each Opaque copy, or state in or with
-     each Opaque copy a computer-network location from which the general
-     network-using public has access to download using public-standard
-     network protocols a complete Transparent copy of the Document, free
-     of added material.  If you use the latter option, you must take
-     reasonably prudent steps, when you begin distribution of Opaque
-     copies in quantity, to ensure that this Transparent copy will
-     remain thus accessible at the stated location until at least one
-     year after the last time you distribute an Opaque copy (directly or
-     through your agents or retailers) of that edition to the public.
-
-     It is requested, but not required, that you contact the authors of
-     the Document well before redistributing any large number of copies,
-     to give them a chance to provide you with an updated version of the
-     Document.
-
-  4. MODIFICATIONS
-
-     You may copy and distribute a Modified Version of the Document
-     under the conditions of sections 2 and 3 above, provided that you
-     release the Modified Version under precisely this License, with the
-     Modified Version filling the role of the Document, thus licensing
-     distribution and modification of the Modified Version to whoever
-     possesses a copy of it.  In addition, you must do these things in
-     the Modified Version:
-
-       A. Use in the Title Page (and on the covers, if any) a title
-          distinct from that of the Document, and from those of previous
-          versions (which should, if there were any, be listed in the
-          History section of the Document).  You may use the same title
-          as a previous version if the original publisher of that
-          version gives permission.
-
-       B. List on the Title Page, as authors, one or more persons or
-          entities responsible for authorship of the modifications in
-          the Modified Version, together with at least five of the
-          principal authors of the Document (all of its principal
-          authors, if it has fewer than five), unless they release you
-          from this requirement.
-
-       C. State on the Title page the name of the publisher of the
-          Modified Version, as the publisher.
-
-       D. Preserve all the copyright notices of the Document.
-
-       E. Add an appropriate copyright notice for your modifications
-          adjacent to the other copyright notices.
-
-       F. Include, immediately after the copyright notices, a license
-          notice giving the public permission to use the Modified
-          Version under the terms of this License, in the form shown in
-          the Addendum below.
-
-       G. Preserve in that license notice the full lists of Invariant
-          Sections and required Cover Texts given in the Document's
-          license notice.
-
-       H. Include an unaltered copy of this License.
-
-       I. Preserve the section Entitled "History", Preserve its Title,
-          and add to it an item stating at least the title, year, new
-          authors, and publisher of the Modified Version as given on the
-          Title Page.  If there is no section Entitled "History" in the
-          Document, create one stating the title, year, authors, and
-          publisher of the Document as given on its Title Page, then add
-          an item describing the Modified Version as stated in the
-          previous sentence.
-
-       J. Preserve the network location, if any, given in the Document
-          for public access to a Transparent copy of the Document, and
-          likewise the network locations given in the Document for
-          previous versions it was based on.  These may be placed in the
-          "History" section.  You may omit a network location for a work
-          that was published at least four years before the Document
-          itself, or if the original publisher of the version it refers
-          to gives permission.
-
-       K. For any section Entitled "Acknowledgements" or "Dedications",
-          Preserve the Title of the section, and preserve in the section
-          all the substance and tone of each of the contributor
-          acknowledgements and/or dedications given therein.
-
-       L. Preserve all the Invariant Sections of the Document, unaltered
-          in their text and in their titles.  Section numbers or the
-          equivalent are not considered part of the section titles.
-
-       M. Delete any section Entitled "Endorsements".  Such a section
-          may not be included in the Modified Version.
-
-       N. Do not retitle any existing section to be Entitled
-          "Endorsements" or to conflict in title with any Invariant
-          Section.
-
-       O. Preserve any Warranty Disclaimers.
-
-     If the Modified Version includes new front-matter sections or
-     appendices that qualify as Secondary Sections and contain no
-     material copied from the Document, you may at your option designate
-     some or all of these sections as invariant.  To do this, add their
-     titles to the list of Invariant Sections in the Modified Version's
-     license notice.  These titles must be distinct from any other
-     section titles.
-
-     You may add a section Entitled "Endorsements", provided it contains
-     nothing but endorsements of your Modified Version by various
-     parties--for example, statements of peer review or that the text
-     has been approved by an organization as the authoritative
-     definition of a standard.
-
-     You may add a passage of up to five words as a Front-Cover Text,
-     and a passage of up to 25 words as a Back-Cover Text, to the end of
-     the list of Cover Texts in the Modified Version.  Only one passage
-     of Front-Cover Text and one of Back-Cover Text may be added by (or
-     through arrangements made by) any one entity.  If the Document
-     already includes a cover text for the same cover, previously added
-     by you or by arrangement made by the same entity you are acting on
-     behalf of, you may not add another; but you may replace the old
-     one, on explicit permission from the previous publisher that added
-     the old one.
-
-     The author(s) and publisher(s) of the Document do not by this
-     License give permission to use their names for publicity for or to
-     assert or imply endorsement of any Modified Version.
-
-  5. COMBINING DOCUMENTS
-
-     You may combine the Document with other documents released under
-     this License, under the terms defined in section 4 above for
-     modified versions, provided that you include in the combination all
-     of the Invariant Sections of all of the original documents,
-     unmodified, and list them all as Invariant Sections of your
-     combined work in its license notice, and that you preserve all
-     their Warranty Disclaimers.
-
-     The combined work need only contain one copy of this License, and
-     multiple identical Invariant Sections may be replaced with a single
-     copy.  If there are multiple Invariant Sections with the same name
-     but different contents, make the title of each such section unique
-     by adding at the end of it, in parentheses, the name of the
-     original author or publisher of that section if known, or else a
-     unique number.  Make the same adjustment to the section titles in
-     the list of Invariant Sections in the license notice of the
-     combined work.
-
-     In the combination, you must combine any sections Entitled
-     "History" in the various original documents, forming one section
-     Entitled "History"; likewise combine any sections Entitled
-     "Acknowledgements", and any sections Entitled "Dedications".  You
-     must delete all sections Entitled "Endorsements."
-
-  6. COLLECTIONS OF DOCUMENTS
-
-     You may make a collection consisting of the Document and other
-     documents released under this License, and replace the individual
-     copies of this License in the various documents with a single copy
-     that is included in the collection, provided that you follow the
-     rules of this License for verbatim copying of each of the documents
-     in all other respects.
-
-     You may extract a single document from such a collection, and
-     distribute it individually under this License, provided you insert
-     a copy of this License into the extracted document, and follow this
-     License in all other respects regarding verbatim copying of that
-     document.
-
-  7. AGGREGATION WITH INDEPENDENT WORKS
-
-     A compilation of the Document or its derivatives with other
-     separate and independent documents or works, in or on a volume of a
-     storage or distribution medium, is called an "aggregate" if the
-     copyright resulting from the compilation is not used to limit the
-     legal rights of the compilation's users beyond what the individual
-     works permit.  When the Document is included in an aggregate, this
-     License does not apply to the other works in the aggregate which
-     are not themselves derivative works of the Document.
-
-     If the Cover Text requirement of section 3 is applicable to these
-     copies of the Document, then if the Document is less than one half
-     of the entire aggregate, the Document's Cover Texts may be placed
-     on covers that bracket the Document within the aggregate, or the
-     electronic equivalent of covers if the Document is in electronic
-     form.  Otherwise they must appear on printed covers that bracket
-     the whole aggregate.
-
-  8. TRANSLATION
-
-     Translation is considered a kind of modification, so you may
-     distribute translations of the Document under the terms of section
-     4.  Replacing Invariant Sections with translations requires special
-     permission from their copyright holders, but you may include
-     translations of some or all Invariant Sections in addition to the
-     original versions of these Invariant Sections.  You may include a
-     translation of this License, and all the license notices in the
-     Document, and any Warranty Disclaimers, provided that you also
-     include the original English version of this License and the
-     original versions of those notices and disclaimers.  In case of a
-     disagreement between the translation and the original version of
-     this License or a notice or disclaimer, the original version will
-     prevail.
-
-     If a section in the Document is Entitled "Acknowledgements",
-     "Dedications", or "History", the requirement (section 4) to
-     Preserve its Title (section 1) will typically require changing the
-     actual title.
-
-  9. TERMINATION
-
-     You may not copy, modify, sublicense, or distribute the Document
-     except as expressly provided under this License.  Any attempt
-     otherwise to copy, modify, sublicense, or distribute it is void,
-     and will automatically terminate your rights under this License.
-
-     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, receipt of a copy of some or all of the
-     same material does not give you any rights to use it.
-
-  10. FUTURE REVISIONS OF THIS LICENSE
-
-     The Free Software Foundation may publish new, revised versions of
-     the GNU Free Documentation 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.  See
-     <http://www.gnu.org/copyleft/>.
-
-     Each version of the License is given a distinguishing version
-     number.  If the Document specifies that a particular numbered
-     version of this License "or any later version" applies to it, you
-     have the option of following the terms and conditions either of
-     that specified version or of any later version that has been
-     published (not as a draft) by the Free Software Foundation.  If the
-     Document does not specify a version number of this License, you may
-     choose any version ever published (not as a draft) by the Free
-     Software Foundation.  If the Document specifies that a proxy can
-     decide which future versions of this License can be used, that
-     proxy's public statement of acceptance of a version permanently
-     authorizes you to choose that version for the Document.
-
-  11. RELICENSING
-
-     "Massive Multiauthor Collaboration Site" (or "MMC Site") means any
-     World Wide Web server that publishes copyrightable works and also
-     provides prominent facilities for anybody to edit those works.  A
-     public wiki that anybody can edit is an example of such a server.
-     A "Massive Multiauthor Collaboration" (or "MMC") contained in the
-     site means any set of copyrightable works thus published on the MMC
-     site.
-
-     "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
-     license published by Creative Commons Corporation, a not-for-profit
-     corporation with a principal place of business in San Francisco,
-     California, as well as future copyleft versions of that license
-     published by that same organization.
-
-     "Incorporate" means to publish or republish a Document, in whole or
-     in part, as part of another Document.
-
-     An MMC is "eligible for relicensing" if it is licensed under this
-     License, and if all works that were first published under this
-     License somewhere other than this MMC, and subsequently
-     incorporated in whole or in part into the MMC, (1) had no cover
-     texts or invariant sections, and (2) were thus incorporated prior
-     to November 1, 2008.
-
-     The operator of an MMC Site may republish an MMC contained in the
-     site under CC-BY-SA on the same site at any time before August 1,
-     2009, provided the MMC is eligible for relicensing.
-
-ADDENDUM: How to use this License for your documents
-====================================================
-
-To use this License in a document you have written, include a copy of
-the License in the document and put the following copyright and license
-notices just after the title page:
-
-       Copyright (C)  YEAR  YOUR NAME.
-       Permission is granted to copy, distribute and/or modify this document
-       under the terms of the GNU Free Documentation License, Version 1.3
-       or any later version published by the Free Software Foundation;
-       with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
-       Texts.  A copy of the license is included in the section entitled ``GNU
-       Free Documentation License''.
-
-   If you have Invariant Sections, Front-Cover Texts and Back-Cover
-Texts, replace the "with...Texts." line with this:
-
-         with the Invariant Sections being LIST THEIR TITLES, with
-         the Front-Cover Texts being LIST, and with the Back-Cover Texts
-         being LIST.
-
-   If you have Invariant Sections without Cover Texts, or some other
-combination of the three, merge those two alternatives to suit the
-situation.
-
-   If your document contains nontrivial examples of program code, we
-recommend releasing these examples in parallel under your choice of free
-software license, such as the GNU General Public License, to permit
-their use in free software.
-
-\1f
-File: groff.info,  Node: Request Index,  Next: Escape Index,  Prev: Copying This Manual,  Up: Top
-
-Appendix B Request Index
-************************
-
-Requests appear without the leading control character (normally either
-'.' or ''').
-
-\0\b[index\0\b]
-* Menu:
-
-* ab:                                    Debugging.           (line  40)
-* ad:                                    Manipulating Filling and Adjusting.
-                                                              (line  50)
-* af:                                    Assigning Formats.   (line  12)
-* aln:                                   Setting Registers.   (line 112)
-* als:                                   Strings.             (line 229)
-* am:                                    Writing Macros.      (line 113)
-* am1:                                   Writing Macros.      (line 114)
-* ami:                                   Writing Macros.      (line 115)
-* ami1:                                  Writing Macros.      (line 116)
-* as:                                    Strings.             (line 175)
-* as1:                                   Strings.             (line 176)
-* asciify:                               Diversions.          (line 195)
-* backtrace:                             Debugging.           (line  96)
-* bd:                                    Artificial Fonts.    (line  96)
-* blm:                                   Blank Line Traps.    (line   7)
-* box:                                   Diversions.          (line  34)
-* boxa:                                  Diversions.          (line  35)
-* bp:                                    Page Control.        (line   7)
-* br:                                    Manipulating Filling and Adjusting.
-                                                              (line  12)
-* break:                                 while.               (line  68)
-* brp:                                   Manipulating Filling and Adjusting.
-                                                              (line 130)
-* c2:                                    Character Translations.
-                                                              (line  16)
-* cc:                                    Character Translations.
-                                                              (line  10)
-* ce:                                    Manipulating Filling and Adjusting.
-                                                              (line 203)
-* cf:                                    I/O.                 (line  50)
-* cflags:                                Using Symbols.       (line 237)
-* ch:                                    Page Location Traps. (line 111)
-* char:                                  Using Symbols.       (line 323)
-* chop:                                  Strings.             (line 267)
-* class:                                 Character Classes.   (line  12)
-* close:                                 I/O.                 (line 231)
-* color:                                 Colors.              (line   7)
-* composite:                             Using Symbols.       (line 191)
-* continue:                              while.               (line  72)
-* cp:                                    Implementation Differences.
-                                                              (line  22)
-* cs:                                    Artificial Fonts.    (line 126)
-* cu:                                    Artificial Fonts.    (line  86)
-* da:                                    Diversions.          (line  22)
-* de:                                    Writing Macros.      (line  15)
-* de1:                                   Writing Macros.      (line  16)
-* defcolor:                              Colors.              (line  22)
-* dei:                                   Writing Macros.      (line  17)
-* dei1:                                  Writing Macros.      (line  18)
-* device:                                Postprocessor Access.
-                                                              (line  11)
-* devicem:                               Postprocessor Access.
-                                                              (line  30)
-* di:                                    Diversions.          (line  21)
-* do:                                    Implementation Differences.
-                                                              (line  23)
-* ds:                                    Strings.             (line  15)
-* ds1:                                   Strings.             (line  16)
-* dt:                                    Diversion Traps.     (line   7)
-* ec:                                    Character Translations.
-                                                              (line  47)
-* ecr:                                   Character Translations.
-                                                              (line  59)
-* ecs:                                   Character Translations.
-                                                              (line  58)
-* el:                                    if-else.             (line  27)
-* em:                                    End-of-input Traps.  (line   7)
-* eo:                                    Character Translations.
-                                                              (line  24)
-* ev:                                    Environments.        (line  38)
-* evc:                                   Environments.        (line  70)
-* ex:                                    Debugging.           (line  45)
-* fam:                                   Font Families.       (line  20)
-* fc:                                    Fields.              (line  18)
-* fchar:                                 Using Symbols.       (line 324)
-* fcolor:                                Colors.              (line  80)
-* fi:                                    Manipulating Filling and Adjusting.
-                                                              (line  28)
-* fl:                                    Debugging.           (line  87)
-* fp:                                    Font Positions.      (line  11)
-* fschar:                                Using Symbols.       (line 325)
-* fspecial:                              Special Fonts.       (line  18)
-* ft:                                    Changing Fonts.      (line   7)
-* ft <1>:                                Font Positions.      (line  57)
-* ftr:                                   Changing Fonts.      (line  55)
-* fzoom:                                 Changing Fonts.      (line  70)
-* gcolor:                                Colors.              (line  50)
-* hc:                                    Manipulating Hyphenation.
-                                                              (line 105)
-* hcode:                                 Manipulating Hyphenation.
-                                                              (line 175)
-* hla:                                   Manipulating Hyphenation.
-                                                              (line 255)
-* hlm:                                   Manipulating Hyphenation.
-                                                              (line  45)
-* hpf:                                   Manipulating Hyphenation.
-                                                              (line 114)
-* hpfa:                                  Manipulating Hyphenation.
-                                                              (line 115)
-* hpfcode:                               Manipulating Hyphenation.
-                                                              (line 116)
-* hw:                                    Manipulating Hyphenation.
-                                                              (line  62)
-* hy:                                    Manipulating Hyphenation.
-                                                              (line   9)
-* hym:                                   Manipulating Hyphenation.
-                                                              (line 210)
-* hys:                                   Manipulating Hyphenation.
-                                                              (line 226)
-* ie:                                    if-else.             (line  26)
-* if:                                    if-else.             (line  10)
-* ig:                                    Comments.            (line  63)
-* in:                                    Line Layout.         (line  86)
-* it:                                    Input Line Traps.    (line   7)
-* itc:                                   Input Line Traps.    (line   8)
-* kern:                                  Ligatures and Kerning.
-                                                              (line  41)
-* lc:                                    Leaders.             (line  23)
-* length:                                Strings.             (line 211)
-* lf:                                    Debugging.           (line  10)
-* lg:                                    Ligatures and Kerning.
-                                                              (line  23)
-* linetabs:                              Tabs and Fields.     (line 137)
-* ll:                                    Line Layout.         (line 140)
-* ls:                                    Manipulating Spacing.
-                                                              (line  63)
-* lsm:                                   Leading Spaces Traps.
-                                                              (line   7)
-* lt:                                    Page Layout.         (line  64)
-* mc:                                    Miscellaneous.       (line  75)
-* mk:                                    Page Motions.        (line  10)
-* mso:                                   I/O.                 (line  40)
-* na:                                    Manipulating Filling and Adjusting.
-                                                              (line 122)
-* ne:                                    Page Control.        (line  33)
-* nf:                                    Manipulating Filling and Adjusting.
-                                                              (line  39)
-* nh:                                    Manipulating Hyphenation.
-                                                              (line  37)
-* nm:                                    Miscellaneous.       (line  10)
-* nn:                                    Miscellaneous.       (line  71)
-* nop:                                   if-else.             (line  23)
-* nr:                                    Setting Registers.   (line  13)
-* nr <1>:                                Setting Registers.   (line  68)
-* nr <2>:                                Auto-increment.      (line  11)
-* nroff:                                 Troff and Nroff Mode.
-                                                              (line  32)
-* ns:                                    Manipulating Spacing.
-                                                              (line 121)
-* nx:                                    I/O.                 (line  84)
-* open:                                  I/O.                 (line 199)
-* opena:                                 I/O.                 (line 200)
-* os:                                    Page Control.        (line  53)
-* output:                                Diversions.          (line 180)
-* pc:                                    Page Layout.         (line  94)
-* pev:                                   Debugging.           (line  62)
-* pi:                                    I/O.                 (line 143)
-* pl:                                    Page Layout.         (line  10)
-* pm:                                    Debugging.           (line  66)
-* pn:                                    Page Layout.         (line  81)
-* pnr:                                   Debugging.           (line  77)
-* po:                                    Line Layout.         (line  58)
-* ps:                                    Changing Type Sizes. (line   7)
-* psbb:                                  Miscellaneous.       (line 135)
-* pso:                                   I/O.                 (line  29)
-* ptr:                                   Debugging.           (line  81)
-* pvs:                                   Changing Type Sizes. (line 134)
-* rchar:                                 Using Symbols.       (line 381)
-* rd:                                    I/O.                 (line  89)
-* return:                                Writing Macros.      (line 147)
-* rfschar:                               Using Symbols.       (line 382)
-* rj:                                    Manipulating Filling and Adjusting.
-                                                              (line 249)
-* rm:                                    Strings.             (line 224)
-* rn:                                    Strings.             (line 221)
-* rnn:                                   Setting Registers.   (line 108)
-* rr:                                    Setting Registers.   (line 104)
-* rs:                                    Manipulating Spacing.
-                                                              (line 122)
-* rt:                                    Page Motions.        (line  11)
-* schar:                                 Using Symbols.       (line 326)
-* shc:                                   Manipulating Hyphenation.
-                                                              (line 243)
-* shift:                                 Parameters.          (line  31)
-* sizes:                                 Changing Type Sizes. (line  69)
-* so:                                    I/O.                 (line   9)
-* sp:                                    Manipulating Spacing.
-                                                              (line   7)
-* special:                               Special Fonts.       (line  17)
-* spreadwarn:                            Debugging.           (line 131)
-* ss:                                    Manipulating Filling and Adjusting.
-                                                              (line 149)
-* sty:                                   Font Families.       (line  59)
-* substring:                             Strings.             (line 192)
-* sv:                                    Page Control.        (line  52)
-* sy:                                    I/O.                 (line 164)
-* ta:                                    Tabs and Fields.     (line  14)
-* tc:                                    Tabs and Fields.     (line 129)
-* ti:                                    Line Layout.         (line 112)
-* tkf:                                   Ligatures and Kerning.
-                                                              (line  60)
-* tl:                                    Page Layout.         (line  35)
-* tm:                                    Debugging.           (line  25)
-* tm1:                                   Debugging.           (line  26)
-* tmc:                                   Debugging.           (line  27)
-* tr:                                    Character Translations.
-                                                              (line 148)
-* trf:                                   I/O.                 (line  49)
-* trin:                                  Character Translations.
-                                                              (line 149)
-* trnt:                                  Character Translations.
-                                                              (line 237)
-* troff:                                 Troff and Nroff Mode.
-                                                              (line  24)
-* uf:                                    Artificial Fonts.    (line  90)
-* ul:                                    Artificial Fonts.    (line  64)
-* unformat:                              Diversions.          (line 218)
-* vpt:                                   Page Location Traps. (line  17)
-* vs:                                    Changing Type Sizes. (line  85)
-* warn:                                  Debugging.           (line 154)
-* warnscale:                             Debugging.           (line 127)
-* wh:                                    Page Location Traps. (line  29)
-* while:                                 while.               (line  10)
-* write:                                 I/O.                 (line 211)
-* writec:                                I/O.                 (line 212)
-* writem:                                I/O.                 (line 222)
-
-\1f
-File: groff.info,  Node: Escape Index,  Next: Operator Index,  Prev: Request Index,  Up: Top
-
-Appendix C Escape Index
-***********************
-
-Any escape sequence '\X' with X not in the list below emits a warning,
-printing glyph X.
-
-\0\b[index\0\b]
-* Menu:
-
-* \:                                     Using Symbols.       (line 132)
-* \!:                                    Diversions.          (line 135)
-* \":                                    Comments.            (line  10)
-* \#:                                    Comments.            (line  48)
-* \$:                                    Parameters.          (line  19)
-* \$*:                                   Parameters.          (line  40)
-* \$0:                                   Parameters.          (line  71)
-* \$@:                                   Parameters.          (line  41)
-* \$^:                                   Parameters.          (line  50)
-* \%:                                    Manipulating Hyphenation.
-                                                              (line  84)
-* \&:                                    Ligatures and Kerning.
-                                                              (line 100)
-* \':                                    Using Symbols.       (line 222)
-* \):                                    Ligatures and Kerning.
-                                                              (line 127)
-* \*:                                    Strings.             (line  17)
-* \,:                                    Ligatures and Kerning.
-                                                              (line  91)
-* \-:                                    Using Symbols.       (line 231)
-* \.:                                    Character Translations.
-                                                              (line 122)
-* \/:                                    Ligatures and Kerning.
-                                                              (line  80)
-* \0:                                    Page Motions.        (line 138)
-* \<colon>:                              Manipulating Hyphenation.
-                                                              (line  85)
-* \?:                                    Diversions.          (line 136)
-* \A:                                    Identifiers.         (line  53)
-* \a:                                    Leaders.             (line  18)
-* \B:                                    Expressions.         (line  83)
-* \b:                                    Drawing Requests.    (line 232)
-* \c:                                    Line Control.        (line  41)
-* \C:                                    Using Symbols.       (line 185)
-* \d:                                    Page Motions.        (line 100)
-* \D:                                    Drawing Requests.    (line  67)
-* \e:                                    Character Translations.
-                                                              (line  69)
-* \E:                                    Character Translations.
-                                                              (line  70)
-* \f:                                    Changing Fonts.      (line   8)
-* \F:                                    Font Families.       (line  22)
-* \f <1>:                                Font Positions.      (line  58)
-* \g:                                    Assigning Formats.   (line  73)
-* \H:                                    Artificial Fonts.    (line  13)
-* \h:                                    Page Motions.        (line 103)
-* \k:                                    Page Motions.        (line 201)
-* \l:                                    Drawing Requests.    (line  16)
-* \L:                                    Drawing Requests.    (line  49)
-* \m:                                    Colors.              (line  51)
-* \M:                                    Colors.              (line  81)
-* \n:                                    Interpolating Registers.
-                                                              (line   9)
-* \n <1>:                                Auto-increment.      (line  19)
-* \N:                                    Using Symbols.       (line 201)
-* \o:                                    Page Motions.        (line 216)
-* \O:                                    Suppressing output.  (line   7)
-* \p:                                    Manipulating Filling and Adjusting.
-                                                              (line 131)
-* \R:                                    Setting Registers.   (line  14)
-* \R <1>:                                Setting Registers.   (line  70)
-* \r:                                    Page Motions.        (line  94)
-* \<RET>:                                Line Control.        (line  40)
-* \S:                                    Artificial Fonts.    (line  44)
-* \s:                                    Changing Type Sizes. (line  10)
-* \<SP>:                                 Page Motions.        (line 114)
-* \t:                                    Tabs and Fields.     (line  10)
-* \u:                                    Page Motions.        (line  97)
-* \v:                                    Page Motions.        (line  78)
-* \V:                                    I/O.                 (line 247)
-* \w:                                    Page Motions.        (line 145)
-* \x:                                    Manipulating Spacing.
-                                                              (line  82)
-* \X:                                    Postprocessor Access.
-                                                              (line  12)
-* \Y:                                    Postprocessor Access.
-                                                              (line  31)
-* \z:                                    Page Motions.        (line 220)
-* \Z:                                    Page Motions.        (line 224)
-* \\:                                    Character Translations.
-                                                              (line  68)
-* \^:                                    Page Motions.        (line 130)
-* \_:                                    Using Symbols.       (line 234)
-* \`:                                    Using Symbols.       (line 227)
-* \{:                                    if-else.             (line  35)
-* \|:                                    Page Motions.        (line 122)
-* \}:                                    if-else.             (line  35)
-* \~:                                    Page Motions.        (line 118)
-
-\1f
-File: groff.info,  Node: Operator Index,  Next: Register Index,  Prev: Escape Index,  Up: Top
-
-Appendix D Operator Index
-*************************
-
-\0\b[index\0\b]
-* Menu:
-
-* !:                                     Expressions.          (line 21)
-* %:                                     Expressions.          (line  8)
-* &:                                     Expressions.          (line 19)
-* (:                                     Expressions.          (line 59)
-* ):                                     Expressions.          (line 59)
-* *:                                     Expressions.          (line  8)
-* +:                                     Expressions.          (line  8)
-* + <1>:                                 Expressions.          (line 21)
-* -:                                     Expressions.          (line  8)
-* - <1>:                                 Expressions.          (line 21)
-* /:                                     Expressions.          (line  8)
-* <:                                     Expressions.          (line 15)
-* <=:                                    Expressions.          (line 15)
-* <?:                                    Expressions.          (line 44)
-* <colon>:                               Expressions.          (line 19)
-* =:                                     Expressions.          (line 15)
-* ==:                                    Expressions.          (line 15)
-* >:                                     Expressions.          (line 15)
-* >=:                                    Expressions.          (line 15)
-* >?:                                    Expressions.          (line 44)
-
-\1f
-File: groff.info,  Node: Register Index,  Next: Macro Index,  Prev: Operator Index,  Up: Top
-
-Appendix E Register Index
-*************************
-
-The macro package or program a specific register belongs to is appended
-in brackets.
-
-   A register name 'x' consisting of exactly one character can be
-accessed as '\nx'.  A register name 'xx' consisting of exactly two
-characters can be accessed as '\n(xx'.  Register names 'xxx' of any
-length can be accessed as '\n[xxx]'.
-
-\0\b[index\0\b]
-* Menu:
-
-* $$:                                    Built-in Registers.  (line  99)
-* %:                                     Page Layout.         (line  94)
-* % <1>:                                 Page Control.        (line  10)
-* .$:                                    Parameters.          (line  10)
-* .A:                                    Built-in Registers.  (line 106)
-* .a:                                    Manipulating Spacing.
-                                                              (line  83)
-* .b:                                    Artificial Fonts.    (line  98)
-* .br:                                   Requests.            (line  56)
-* .c:                                    Built-in Registers.  (line  76)
-* .C:                                    Implementation Differences.
-                                                              (line  24)
-* .cdp:                                  Environments.        (line  94)
-* .ce:                                   Manipulating Filling and Adjusting.
-                                                              (line 204)
-* .cht:                                  Environments.        (line  93)
-* .color:                                Colors.              (line   8)
-* .csk:                                  Environments.        (line  95)
-* .d:                                    Diversions.          (line  69)
-* .ev:                                   Environments.        (line  39)
-* .F:                                    Built-in Registers.  (line  12)
-* .f:                                    Font Positions.      (line  12)
-* .fam:                                  Font Families.       (line  21)
-* .fn:                                   Font Families.       (line  25)
-* .fp:                                   Font Positions.      (line  13)
-* .g:                                    Built-in Registers.  (line 102)
-* .H:                                    Built-in Registers.  (line  15)
-* .h:                                    Diversions.          (line  76)
-* .height:                               Artificial Fonts.    (line  16)
-* .hla:                                  Manipulating Hyphenation.
-                                                              (line 256)
-* .hlc:                                  Manipulating Hyphenation.
-                                                              (line  47)
-* .hlm:                                  Manipulating Hyphenation.
-                                                              (line  46)
-* .hy:                                   Manipulating Hyphenation.
-                                                              (line  10)
-* .hym:                                  Manipulating Hyphenation.
-                                                              (line 211)
-* .hys:                                  Manipulating Hyphenation.
-                                                              (line 227)
-* .i:                                    Line Layout.         (line  89)
-* .in:                                   Line Layout.         (line 115)
-* .int:                                  Line Control.        (line  42)
-* .j:                                    Manipulating Filling and Adjusting.
-                                                              (line  51)
-* .k:                                    Page Motions.        (line 212)
-* .kern:                                 Ligatures and Kerning.
-                                                              (line  42)
-* .L:                                    Manipulating Spacing.
-                                                              (line  64)
-* .l:                                    Line Layout.         (line 143)
-* .lg:                                   Ligatures and Kerning.
-                                                              (line  24)
-* .linetabs:                             Tabs and Fields.     (line 138)
-* .ll:                                   Line Layout.         (line 144)
-* .lt:                                   Page Layout.         (line  67)
-* .m:                                    Colors.              (line  54)
-* .M:                                    Colors.              (line  84)
-* .n:                                    Environments.        (line 110)
-* .ne:                                   Page Location Traps. (line 122)
-* .ns:                                   Manipulating Spacing.
-                                                              (line 123)
-* .O:                                    Built-in Registers.  (line 112)
-* .o:                                    Line Layout.         (line  61)
-* .P:                                    Built-in Registers.  (line 116)
-* .p:                                    Page Layout.         (line  13)
-* .pe:                                   Page Location Traps. (line 143)
-* .pn:                                   Page Layout.         (line  84)
-* .ps:                                   Fractional Type Sizes.
-                                                              (line  37)
-* .psr:                                  Fractional Type Sizes.
-                                                              (line  44)
-* .pvs:                                  Changing Type Sizes. (line 137)
-* .R:                                    Built-in Registers.  (line  18)
-* .rj:                                   Manipulating Filling and Adjusting.
-                                                              (line 250)
-* .s:                                    Changing Type Sizes. (line  11)
-* .slant:                                Artificial Fonts.    (line  45)
-* .sr:                                   Fractional Type Sizes.
-                                                              (line  45)
-* .ss:                                   Manipulating Filling and Adjusting.
-                                                              (line 150)
-* .sss:                                  Manipulating Filling and Adjusting.
-                                                              (line 151)
-* .sty:                                  Changing Fonts.      (line  11)
-* .T:                                    Built-in Registers.  (line 122)
-* .t:                                    Page Location Traps. (line 102)
-* .tabs:                                 Tabs and Fields.     (line  15)
-* .trunc:                                Page Location Traps. (line 131)
-* .U:                                    Built-in Registers.  (line  23)
-* .u:                                    Manipulating Filling and Adjusting.
-                                                              (line  29)
-* .V:                                    Built-in Registers.  (line  28)
-* .v:                                    Changing Type Sizes. (line  88)
-* .vpt:                                  Page Location Traps. (line  18)
-* .w:                                    Environments.        (line  92)
-* .warn:                                 Debugging.           (line 155)
-* .x:                                    Built-in Registers.  (line  88)
-* .y:                                    Built-in Registers.  (line  92)
-* .Y:                                    Built-in Registers.  (line  96)
-* .z:                                    Diversions.          (line  68)
-* .zoom:                                 Changing Fonts.      (line  71)
-* c.:                                    Built-in Registers.  (line  77)
-* ct:                                    Page Motions.        (line 150)
-* DD [ms]:                               ms Document Control Registers.
-                                                              (line 239)
-* dl:                                    Diversions.          (line  93)
-* dn:                                    Diversions.          (line  92)
-* dw:                                    Built-in Registers.  (line  45)
-* dy:                                    Built-in Registers.  (line  48)
-* FAM [ms]:                              ms Document Control Registers.
-                                                              (line 111)
-* FF [ms]:                               ms Document Control Registers.
-                                                              (line 185)
-* FI [ms]:                               ms Document Control Registers.
-                                                              (line 178)
-* FL [ms]:                               ms Document Control Registers.
-                                                              (line 171)
-* FM [ms]:                               ms Document Control Registers.
-                                                              (line  47)
-* FPD [ms]:                              ms Document Control Registers.
-                                                              (line 221)
-* FPS [ms]:                              ms Document Control Registers.
-                                                              (line 205)
-* FVS [ms]:                              ms Document Control Registers.
-                                                              (line 213)
-* GROWPS [ms]:                           ms Document Control Registers.
-                                                              (line  89)
-* GS [ms]:                               Differences from AT&T ms.
-                                                              (line  45)
-* HM [ms]:                               ms Document Control Registers.
-                                                              (line  40)
-* HORPHANS [ms]:                         ms Document Control Registers.
-                                                              (line 155)
-* hours:                                 Built-in Registers.  (line  41)
-* hp:                                    Page Motions.        (line 209)
-* HY [ms]:                               ms Document Control Registers.
-                                                              (line 102)
-* LL [ms]:                               ms Document Control Registers.
-                                                              (line  25)
-* llx:                                   Miscellaneous.       (line 136)
-* lly:                                   Miscellaneous.       (line 137)
-* ln:                                    Built-in Registers.  (line  82)
-* lsn:                                   Leading Spaces Traps.
-                                                              (line   8)
-* lss:                                   Leading Spaces Traps.
-                                                              (line   9)
-* LT [ms]:                               ms Document Control Registers.
-                                                              (line  32)
-* MINGW [ms]:                            ms Document Control Registers.
-                                                              (line 231)
-* MINGW [ms] <1>:                        Additional ms Macros.
-                                                              (line  28)
-* minutes:                               Built-in Registers.  (line  37)
-* mo:                                    Built-in Registers.  (line  51)
-* nl:                                    Page Control.        (line  67)
-* opmaxx:                                Suppressing output.  (line  19)
-* opmaxy:                                Suppressing output.  (line  19)
-* opminx:                                Suppressing output.  (line  19)
-* opminy:                                Suppressing output.  (line  19)
-* PD [ms]:                               ms Document Control Registers.
-                                                              (line 128)
-* PI [ms]:                               ms Document Control Registers.
-                                                              (line 121)
-* PO [ms]:                               ms Document Control Registers.
-                                                              (line  16)
-* PORPHANS [ms]:                         ms Document Control Registers.
-                                                              (line 143)
-* PS [ms]:                               ms Document Control Registers.
-                                                              (line  57)
-* ps4html [grohtml]:                     grohtml specific registers and strings.
-                                                              (line   7)
-* PSINCR [ms]:                           ms Document Control Registers.
-                                                              (line  77)
-* QI [ms]:                               ms Document Control Registers.
-                                                              (line 135)
-* rsb:                                   Page Motions.        (line 149)
-* rst:                                   Page Motions.        (line 148)
-* sb:                                    Page Motions.        (line 147)
-* seconds:                               Built-in Registers.  (line  31)
-* skw:                                   Page Motions.        (line 152)
-* slimit:                                Debugging.           (line 119)
-* ssc:                                   Page Motions.        (line 151)
-* st:                                    Page Motions.        (line 146)
-* systat:                                I/O.                 (line 165)
-* urx:                                   Miscellaneous.       (line 138)
-* ury:                                   Miscellaneous.       (line 139)
-* VS [ms]:                               ms Document Control Registers.
-                                                              (line  67)
-* year:                                  Built-in Registers.  (line  54)
-* yr:                                    Built-in Registers.  (line  57)
-
-\1f
-File: groff.info,  Node: Macro Index,  Next: String Index,  Prev: Register Index,  Up: Top
-
-Appendix F Macro Index
-**********************
-
-The macro package a specific macro belongs to is appended in brackets.
-They appear without the leading control character (normally '.').
-
-\0\b[index\0\b]
-* Menu:
-
-* 1C [ms]:                               ms Multiple Columns. (line  13)
-* 2C [ms]:                               ms Multiple Columns. (line  16)
-* [ [ms]:                                ms Insertions.       (line  33)
-* ] [ms]:                                ms Insertions.       (line  34)
-* AB [ms]:                               ms Cover Page Macros.
-                                                              (line  59)
-* AE [ms]:                               ms Cover Page Macros.
-                                                              (line  64)
-* AI [ms]:                               ms Cover Page Macros.
-                                                              (line  55)
-* AM [ms]:                               ms Strings and Special Characters.
-                                                              (line  51)
-* AM [ms] <1>:                           Additional ms Macros.
-                                                              (line  10)
-* AT [man]:                              Miscellaneous man macros.
-                                                              (line  27)
-* AU [ms]:                               ms Cover Page Macros.
-                                                              (line  39)
-* B [man]:                               Man font macros.     (line  47)
-* B [ms]:                                Highlighting in ms.  (line  10)
-* B1 [ms]:                               ms Displays and Keeps.
-                                                              (line  94)
-* B2 [ms]:                               ms Displays and Keeps.
-                                                              (line  95)
-* BD [ms]:                               ms Displays and Keeps.
-                                                              (line  31)
-* BI [man]:                              Man font macros.     (line  18)
-* BI [ms]:                               Highlighting in ms.  (line  38)
-* BR [man]:                              Man font macros.     (line  39)
-* BT [man]:                              Optional man extensions.
-                                                              (line  21)
-* BT [ms]:                               ms Headers and Footers.
-                                                              (line  39)
-* BX [ms]:                               Highlighting in ms.  (line  42)
-* CD [ms]:                               ms Displays and Keeps.
-                                                              (line  41)
-* CT [man]:                              Optional man extensions.
-                                                              (line  36)
-* CW [man]:                              Optional man extensions.
-                                                              (line  39)
-* CW [ms]:                               Highlighting in ms.  (line  34)
-* CW [ms] <1>:                           Additional ms Macros.
-                                                              (line  19)
-* DA [ms]:                               ms Cover Page Macros.
-                                                              (line  24)
-* De [man]:                              Optional man extensions.
-                                                              (line  45)
-* DE [ms]:                               ms Displays and Keeps.
-                                                              (line  16)
-* DE [ms] <1>:                           ms Displays and Keeps.
-                                                              (line  24)
-* DE [ms] <2>:                           ms Displays and Keeps.
-                                                              (line  32)
-* DE [ms] <3>:                           ms Displays and Keeps.
-                                                              (line  42)
-* DE [ms] <4>:                           ms Displays and Keeps.
-                                                              (line  50)
-* De [ms]:                               ms Displays and Keeps.
-                                                              (line  57)
-* Ds [man]:                              Optional man extensions.
-                                                              (line  42)
-* DS [ms]:                               ms Displays and Keeps.
-                                                              (line  14)
-* DS [ms] <1>:                           ms Displays and Keeps.
-                                                              (line  22)
-* DS [ms] <2>:                           ms Displays and Keeps.
-                                                              (line  30)
-* DS [ms] <3>:                           ms Displays and Keeps.
-                                                              (line  40)
-* DS [ms] <4>:                           ms Displays and Keeps.
-                                                              (line  48)
-* Ds [ms]:                               ms Displays and Keeps.
-                                                              (line  56)
-* DS [ms] <5>:                           Additional ms Macros.
-                                                              (line  14)
-* DT [man]:                              Miscellaneous man macros.
-                                                              (line  10)
-* EE [man]:                              Optional man extensions.
-                                                              (line  52)
-* EF [ms]:                               ms Headers and Footers.
-                                                              (line  26)
-* EH [ms]:                               ms Headers and Footers.
-                                                              (line  24)
-* EN [ms]:                               ms Insertions.       (line  28)
-* EQ [ms]:                               ms Insertions.       (line  27)
-* EX [man]:                              Optional man extensions.
-                                                              (line  48)
-* FE [ms]:                               ms Footnotes.        (line  15)
-* FS [ms]:                               ms Footnotes.        (line  14)
-* G [man]:                               Optional man extensions.
-                                                              (line  55)
-* GL [man]:                              Optional man extensions.
-                                                              (line  60)
-* HB [man]:                              Optional man extensions.
-                                                              (line  65)
-* HD [ms]:                               ms Headers and Footers.
-                                                              (line  38)
-* HP [man]:                              Man usage.           (line  98)
-* I [man]:                               Man font macros.     (line  52)
-* I [ms]:                                Highlighting in ms.  (line  30)
-* IB [man]:                              Man font macros.     (line  27)
-* ID [ms]:                               ms Displays and Keeps.
-                                                              (line  23)
-* IP [man]:                              Man usage.           (line  80)
-* IP [ms]:                               Lists in ms.         (line   9)
-* IR [man]:                              Man font macros.     (line  35)
-* IX [ms]:                               Additional ms Macros.
-                                                              (line  22)
-* KE [ms]:                               ms Displays and Keeps.
-                                                              (line  73)
-* KE [ms] <1>:                           ms Displays and Keeps.
-                                                              (line  78)
-* KF [ms]:                               ms Displays and Keeps.
-                                                              (line  77)
-* KS [ms]:                               ms Displays and Keeps.
-                                                              (line  72)
-* LD [ms]:                               ms Displays and Keeps.
-                                                              (line  15)
-* LG [ms]:                               Highlighting in ms.  (line  51)
-* LP [man]:                              Man usage.           (line  70)
-* LP [ms]:                               Paragraphs in ms.    (line  12)
-* MC [ms]:                               ms Multiple Columns. (line  19)
-* MS [man]:                              Optional man extensions.
-                                                              (line  73)
-* ND [ms]:                               ms Cover Page Macros.
-                                                              (line  29)
-* NE [man]:                              Optional man extensions.
-                                                              (line  85)
-* NH [ms]:                               Headings in ms.      (line  13)
-* NL [ms]:                               Highlighting in ms.  (line  63)
-* NT [man]:                              Optional man extensions.
-                                                              (line  78)
-* OF [ms]:                               ms Headers and Footers.
-                                                              (line  25)
-* OH [ms]:                               ms Headers and Footers.
-                                                              (line  23)
-* P [man]:                               Man usage.           (line  72)
-* P1 [ms]:                               ms Cover Page Macros.
-                                                              (line  20)
-* PD [man]:                              Miscellaneous man macros.
-                                                              (line  15)
-* PE [ms]:                               ms Insertions.       (line  21)
-* PN [man]:                              Optional man extensions.
-                                                              (line  88)
-* Pn [man]:                              Optional man extensions.
-                                                              (line  92)
-* PP [man]:                              Man usage.           (line  71)
-* PP [ms]:                               Paragraphs in ms.    (line   9)
-* PS [ms]:                               ms Insertions.       (line  20)
-* PT [man]:                              Optional man extensions.
-                                                              (line  16)
-* PT [ms]:                               ms Headers and Footers.
-                                                              (line  37)
-* PX [ms]:                               ms TOC.              (line  62)
-* QP [ms]:                               Paragraphs in ms.    (line  15)
-* R [man]:                               Optional man extensions.
-                                                              (line  98)
-* R [ms]:                                Highlighting in ms.  (line  26)
-* RB [man]:                              Man font macros.     (line  43)
-* RD [ms]:                               ms Displays and Keeps.
-                                                              (line  49)
-* RE [man]:                              Man usage.           (line 115)
-* RE [ms]:                               Indentation values in ms.
-                                                              (line  12)
-* RI [man]:                              Man font macros.     (line  31)
-* RN [man]:                              Optional man extensions.
-                                                              (line 101)
-* RP [ms]:                               ms Cover Page Macros.
-                                                              (line  10)
-* RS [man]:                              Man usage.           (line 106)
-* RS [ms]:                               Indentation values in ms.
-                                                              (line  11)
-* SB [man]:                              Man font macros.     (line  14)
-* SH [man]:                              Man usage.           (line  34)
-* SH [ms]:                               Headings in ms.      (line  54)
-* SM [man]:                              Man font macros.     (line  10)
-* SM [ms]:                               Highlighting in ms.  (line  57)
-* SS [man]:                              Man usage.           (line  43)
-* TA [ms]:                               Tabstops in ms.      (line  10)
-* TB [man]:                              Optional man extensions.
-                                                              (line  70)
-* TC [ms]:                               ms TOC.              (line  52)
-* TE [ms]:                               ms Insertions.       (line  12)
-* TH [man]:                              Man usage.           (line  11)
-* TL [ms]:                               ms Cover Page Macros.
-                                                              (line  34)
-* TP [man]:                              Man usage.           (line  51)
-* TS [ms]:                               ms Insertions.       (line  11)
-* UC [man]:                              Miscellaneous man macros.
-                                                              (line  44)
-* UL [ms]:                               Highlighting in ms.  (line  46)
-* VE [man]:                              Optional man extensions.
-                                                              (line 108)
-* VS [man]:                              Optional man extensions.
-                                                              (line 104)
-* XA [ms]:                               ms TOC.              (line  13)
-* XE [ms]:                               ms TOC.              (line  14)
-* XP [ms]:                               Paragraphs in ms.    (line  20)
-* XS [ms]:                               ms TOC.              (line  12)
-
-\1f
-File: groff.info,  Node: String Index,  Next: Glyph Name Index,  Prev: Macro Index,  Up: Top
-
-Appendix G String Index
-***********************
-
-The macro package or program a specific string belongs to is appended in
-brackets.
-
-   A string name 'x' consisting of exactly one character can be accessed
-as '\*x'.  A string name 'xx' consisting of exactly two characters can
-be accessed as '\*(xx'.  String names 'xxx' of any length can be
-accessed as '\*[xxx]'.
-
-\0\b[index\0\b]
-* Menu:
-
-* ! [ms]:                                ms Strings and Special Characters.
-                                                              (line 101)
-* ' [ms]:                                ms Strings and Special Characters.
-                                                              (line  65)
-* * [ms]:                                ms Footnotes.        (line  11)
-* , [ms]:                                ms Strings and Special Characters.
-                                                              (line  74)
-* - [ms]:                                ms Strings and Special Characters.
-                                                              (line  41)
-* . [ms]:                                ms Strings and Special Characters.
-                                                              (line  89)
-* .T:                                    Built-in Registers.  (line 127)
-* 3 [ms]:                                ms Strings and Special Characters.
-                                                              (line 107)
-* 8 [ms]:                                ms Strings and Special Characters.
-                                                              (line 104)
-* ? [ms]:                                ms Strings and Special Characters.
-                                                              (line  98)
-* \*[<colon>] [ms]:                      ms Strings and Special Characters.
-                                                              (line  80)
-* ^ [ms]:                                ms Strings and Special Characters.
-                                                              (line  71)
-* _ [ms]:                                ms Strings and Special Characters.
-                                                              (line  86)
-* ` [ms]:                                ms Strings and Special Characters.
-                                                              (line  68)
-* { [ms]:                                Highlighting in ms.  (line  67)
-* } [ms]:                                Highlighting in ms.  (line  68)
-* ~ [ms]:                                ms Strings and Special Characters.
-                                                              (line  77)
-* ABSTRACT [ms]:                         ms Strings and Special Characters.
-                                                              (line  15)
-* ae [ms]:                               ms Strings and Special Characters.
-                                                              (line 125)
-* Ae [ms]:                               ms Strings and Special Characters.
-                                                              (line 128)
-* CF [ms]:                               ms Headers and Footers.
-                                                              (line  16)
-* CH [ms]:                               ms Headers and Footers.
-                                                              (line  11)
-* D- [ms]:                               ms Strings and Special Characters.
-                                                              (line 116)
-* d- [ms]:                               ms Strings and Special Characters.
-                                                              (line 119)
-* HF [man]:                              Predefined man strings.
-                                                              (line  12)
-* LF [ms]:                               ms Headers and Footers.
-                                                              (line  15)
-* LH [ms]:                               ms Headers and Footers.
-                                                              (line  10)
-* lq [man]:                              Predefined man strings.
-                                                              (line  21)
-* MONTH1 [ms]:                           ms Strings and Special Characters.
-                                                              (line  23)
-* MONTH10 [ms]:                          ms Strings and Special Characters.
-                                                              (line  32)
-* MONTH11 [ms]:                          ms Strings and Special Characters.
-                                                              (line  33)
-* MONTH12 [ms]:                          ms Strings and Special Characters.
-                                                              (line  34)
-* MONTH2 [ms]:                           ms Strings and Special Characters.
-                                                              (line  24)
-* MONTH3 [ms]:                           ms Strings and Special Characters.
-                                                              (line  25)
-* MONTH4 [ms]:                           ms Strings and Special Characters.
-                                                              (line  26)
-* MONTH5 [ms]:                           ms Strings and Special Characters.
-                                                              (line  27)
-* MONTH6 [ms]:                           ms Strings and Special Characters.
-                                                              (line  28)
-* MONTH7 [ms]:                           ms Strings and Special Characters.
-                                                              (line  29)
-* MONTH8 [ms]:                           ms Strings and Special Characters.
-                                                              (line  30)
-* MONTH9 [ms]:                           ms Strings and Special Characters.
-                                                              (line  31)
-* o [ms]:                                ms Strings and Special Characters.
-                                                              (line  92)
-* Q [ms]:                                ms Strings and Special Characters.
-                                                              (line  44)
-* q [ms]:                                ms Strings and Special Characters.
-                                                              (line 122)
-* R [man]:                               Predefined man strings.
-                                                              (line  15)
-* REFERENCES [ms]:                       ms Strings and Special Characters.
-                                                              (line  11)
-* RF [ms]:                               ms Headers and Footers.
-                                                              (line  17)
-* RH [ms]:                               ms Headers and Footers.
-                                                              (line  12)
-* rq [man]:                              Predefined man strings.
-                                                              (line  22)
-* S [man]:                               Predefined man strings.
-                                                              (line   9)
-* SN [ms]:                               Headings in ms.      (line  22)
-* SN-DOT [ms]:                           Headings in ms.      (line  23)
-* SN-NO-DOT [ms]:                        Headings in ms.      (line  24)
-* SN-STYLE [ms]:                         Headings in ms.      (line  36)
-* Th [ms]:                               ms Strings and Special Characters.
-                                                              (line 110)
-* th [ms]:                               ms Strings and Special Characters.
-                                                              (line 113)
-* Tm [man]:                              Predefined man strings.
-                                                              (line  18)
-* TOC [ms]:                              ms Strings and Special Characters.
-                                                              (line  19)
-* U [ms]:                                ms Strings and Special Characters.
-                                                              (line  45)
-* v [ms]:                                ms Strings and Special Characters.
-                                                              (line  83)
-* www-image-template [grohtml]:          grohtml specific registers and strings.
-                                                              (line   8)
-
-\1f
-File: groff.info,  Node: Glyph Name Index,  Next: Font File Keyword Index,  Prev: String Index,  Up: Top
-
-Appendix H Glyph Name Index
-***************************
-
-A glyph name 'xx' consisting of exactly two characters can be accessed
-as '\(xx'.  Glyph names 'xxx' of any length can be accessed as '\[xxx]'.
-
-\1f
-File: groff.info,  Node: Font File Keyword Index,  Next: Program and File Index,  Prev: Glyph Name Index,  Up: Top
-
-Appendix I Font File Keyword Index
-**********************************
-
-\0\b[index\0\b]
-* Menu:
-
-* #:                                     Font File Format.    (line  36)
-* ---:                                   Font File Format.    (line  51)
-* biggestfont:                           DESC File Format.    (line 142)
-* charset:                               DESC File Format.    (line  12)
-* charset <1>:                           Font File Format.    (line  44)
-* family:                                Changing Fonts.      (line  11)
-* family <1>:                            Font Positions.      (line  60)
-* family <2>:                            DESC File Format.    (line  16)
-* fonts:                                 Using Symbols.       (line  14)
-* fonts <1>:                             Special Fonts.       (line  18)
-* fonts <2>:                             DESC File Format.    (line  19)
-* hor:                                   DESC File Format.    (line  25)
-* image_generator:                       DESC File Format.    (line  29)
-* kernpairs:                             Font File Format.    (line 139)
-* ligatures:                             Font File Format.    (line  22)
-* name:                                  Font File Format.    (line  12)
-* paperlength:                           DESC File Format.    (line  35)
-* papersize:                             DESC File Format.    (line  40)
-* paperwidth:                            DESC File Format.    (line  59)
-* pass_filenames:                        DESC File Format.    (line  64)
-* postpro:                               DESC File Format.    (line  69)
-* prepro:                                DESC File Format.    (line  77)
-* print:                                 DESC File Format.    (line  81)
-* res:                                   DESC File Format.    (line  85)
-* sizes:                                 DESC File Format.    (line  88)
-* sizescale:                             DESC File Format.    (line  95)
-* slant:                                 Font File Format.    (line  18)
-* spacewidth:                            Font File Format.    (line  15)
-* spare1:                                DESC File Format.    (line 142)
-* spare2:                                DESC File Format.    (line 142)
-* special:                               Artificial Fonts.    (line 115)
-* special <1>:                           Font File Format.    (line  28)
-* styles:                                Changing Fonts.      (line  11)
-* styles <1>:                            Font Families.       (line  75)
-* styles <2>:                            Font Positions.      (line  60)
-* styles <3>:                            DESC File Format.    (line 101)
-* tcommand:                              DESC File Format.    (line 104)
-* unicode:                               DESC File Format.    (line 108)
-* unitwidth:                             DESC File Format.    (line 122)
-* unscaled_charwidths:                   DESC File Format.    (line 126)
-* use_charnames_in_special:              Postprocessor Access.
-                                                              (line  22)
-* use_charnames_in_special <1>:          DESC File Format.    (line 130)
-* vert:                                  DESC File Format.    (line 135)
-
-\1f
-File: groff.info,  Node: Program and File Index,  Next: Concept Index,  Prev: Font File Keyword Index,  Up: Top
-
-Appendix J Program and File Index
-*********************************
-
-\0\b[index\0\b]
-* Menu:
-
-* an.tmac:                               man.                 (line   6)
-* changebar:                             Miscellaneous.       (line 108)
-* composite.tmac:                        Using Symbols.       (line 191)
-* cp1047.tmac:                           Input Encodings.     (line   9)
-* DESC:                                  Changing Fonts.      (line  11)
-* DESC <1>:                              Font Families.       (line  75)
-* DESC <2>:                              Font Positions.      (line  60)
-* DESC <3>:                              Using Symbols.       (line  14)
-* DESC <4>:                              Using Symbols.       (line 212)
-* DESC <5>:                              Special Fonts.       (line  18)
-* DESC file format:                      DESC File Format.    (line   6)
-* DESC, and font mounting:               Font Positions.      (line  36)
-* DESC, and 'use_charnames_in_special':  Postprocessor Access.
-                                                              (line  22)
-* ditroff:                               History.             (line  59)
-* ec.tmac:                               Input Encodings.     (line  46)
-* eqn:                                   ms Insertions.       (line   7)
-* freeeuro.pfa:                          Input Encodings.     (line  46)
-* gchem:                                 Groff Options.       (line   6)
-* geqn:                                  Groff Options.       (line   6)
-* geqn, invocation in manual pages:      Preprocessors in man pages.
-                                                              (line  11)
-* ggrn:                                  Groff Options.       (line   6)
-* gpic:                                  Groff Options.       (line   6)
-* grap:                                  Groff Options.       (line   6)
-* grefer:                                Groff Options.       (line   6)
-* grefer, invocation in manual pages:    Preprocessors in man pages.
-                                                              (line  11)
-* groff:                                 Groff Options.       (line   6)
-* grog:                                  grog.                (line   6)
-* grohtml:                               Miscellaneous man macros.
-                                                              (line   6)
-* gsoelim:                               Groff Options.       (line   6)
-* gtbl:                                  Groff Options.       (line   6)
-* gtbl, invocation in manual pages:      Preprocessors in man pages.
-                                                              (line  11)
-* gtroff:                                Groff Options.       (line   6)
-* hyphen.us:                             Manipulating Hyphenation.
-                                                              (line 162)
-* hyphenex.us:                           Manipulating Hyphenation.
-                                                              (line 162)
-* latin1.tmac:                           Input Encodings.     (line  14)
-* latin2.tmac:                           Input Encodings.     (line  18)
-* latin2.tmac <1>:                       Input Encodings.     (line  23)
-* latin9.tmac:                           Input Encodings.     (line  28)
-* less:                                  Invoking grotty.     (line  50)
-* makeindex:                             Indices.             (line  10)
-* man, invocation of preprocessors:      Preprocessors in man pages.
-                                                              (line  11)
-* man-old.tmac:                          man.                 (line   6)
-* man.local:                             Man usage.           (line   6)
-* man.local <1>:                         Optional man extensions.
-                                                              (line   6)
-* man.tmac:                              man.                 (line   6)
-* man.ultrix:                            Optional man extensions.
-                                                              (line  30)
-* nrchbar:                               Miscellaneous.       (line 108)
-* papersize.tmac:                        Paper Size.          (line  16)
-* perl:                                  I/O.                 (line 175)
-* pic:                                   ms Insertions.       (line   7)
-* post-grohtml:                          Groff Options.       (line 275)
-* pre-grohtml:                           Groff Options.       (line 275)
-* preconv:                               Groff Options.       (line   6)
-* refer:                                 ms Insertions.       (line   7)
-* soelim:                                Debugging.           (line  10)
-* tbl:                                   ms Insertions.       (line   7)
-* trace.tmac:                            Writing Macros.      (line 104)
-* trace.tmac <1>:                        Writing Macros.      (line 136)
-* troffrc:                               Groff Options.       (line 206)
-* troffrc <1>:                           Paper Size.          (line  16)
-* troffrc <2>:                           Manipulating Hyphenation.
-                                                              (line 162)
-* troffrc <3>:                           Manipulating Hyphenation.
-                                                              (line 256)
-* troffrc <4>:                           Troff and Nroff Mode.
-                                                              (line  24)
-* troffrc <5>:                           Line Layout.         (line  61)
-* troffrc-end:                           Groff Options.       (line 206)
-* troffrc-end <1>:                       Manipulating Hyphenation.
-                                                              (line 162)
-* troffrc-end <2>:                       Manipulating Hyphenation.
-                                                              (line 256)
-* troffrc-end <3>:                       Troff and Nroff Mode.
-                                                              (line  24)
-* tty.tmac:                              Troff and Nroff Mode.
-                                                              (line  32)
-
-\1f
-File: groff.info,  Node: Concept Index,  Prev: Program and File Index,  Up: Top
-
-Appendix K Concept Index
-************************
-
-\0\b[index\0\b]
-* Menu:
-
-* '"', at end of sentence:               Sentences.           (line  18)
-* '"', at end of sentence <1>:           Using Symbols.       (line 275)
-* '"', in a macro argument:              Request and Macro Arguments.
-                                                              (line  25)
-* '%', as delimiter:                     Escapes.             (line  67)
-* '&', as delimiter:                     Escapes.             (line  67)
-* ''', as a comment:                     Comments.            (line  42)
-* ''', at end of sentence:               Sentences.           (line  18)
-* ''', at end of sentence <1>:           Using Symbols.       (line 275)
-* ''', delimiting arguments:             Escapes.             (line  29)
-* '(', as delimiter:                     Escapes.             (line  67)
-* '(', starting a two-character identifier: Identifiers.      (line  73)
-* '(', starting a two-character identifier <1>: Escapes.      (line  16)
-* ')', as delimiter:                     Escapes.             (line  67)
-* ')', at end of sentence:               Sentences.           (line  18)
-* ')', at end of sentence <1>:           Using Symbols.       (line 275)
-* '*', as delimiter:                     Escapes.             (line  67)
-* '*', at end of sentence:               Sentences.           (line  18)
-* '*', at end of sentence <1>:           Using Symbols.       (line 275)
-* '+', and page motion:                  Expressions.         (line  65)
-* '+', as delimiter:                     Escapes.             (line  67)
-* '-', and page motion:                  Expressions.         (line  65)
-* '-', as delimiter:                     Escapes.             (line  67)
-* '.', as delimiter:                     Escapes.             (line  67)
-* '.h' register, difference to 'nl':     Diversions.          (line  88)
-* '.ps' register, in comparison with '.psr': Fractional Type Sizes.
-                                                              (line  45)
-* '.s' register, in comparison with '.sr': Fractional Type Sizes.
-                                                              (line  45)
-* '.S' register, Plan 9 alias for '.tabs': Tabs and Fields.   (line 125)
-* '.t' register, and diversions:         Diversion Traps.     (line   7)
-* '.tabs' register, Plan 9 alias ('.S'): Tabs and Fields.     (line 125)
-* '.V' register, and 'vs':               Changing Type Sizes. (line  94)
-* '/', as delimiter:                     Escapes.             (line  67)
-* 8-bit input:                           Font File Format.    (line  51)
-* '<', as delimiter:                     Escapes.             (line  67)
-* <colon>, as delimiter:                 Escapes.             (line  67)
-* '=', as delimiter:                     Escapes.             (line  67)
-* '>', as delimiter:                     Escapes.             (line  67)
-* '[', macro names starting with, and 'refer': Identifiers.   (line  46)
-* '[', starting an identifier:           Identifiers.         (line  75)
-* '[', starting an identifier <1>:       Escapes.             (line  20)
-* '\!', and copy-in mode:                Diversions.          (line 148)
-* '\!', and 'output' request:            Diversions.          (line 179)
-* '\!', and 'trnt':                      Character Translations.
-                                                              (line 237)
-* '\!', in top-level diversion:          Diversions.          (line 171)
-* '\!', incompatibilities with AT&T 'troff': Implementation Differences.
-                                                              (line  69)
-* '\!', incompatibilities with AT&T 'troff' <1>: Implementation Differences.
-                                                              (line 106)
-* '\!', used as delimiter:               Escapes.             (line  52)
-* '\!', used as delimiter <1>:           Escapes.             (line  71)
-* '\$', when reading text for a macro:   Copy-in Mode.        (line   6)
-* '\%', and translations:                Character Translations.
-                                                              (line 166)
-* '\%', following '\X' or '\Y':          Manipulating Hyphenation.
-                                                              (line  98)
-* '\%', in '\X':                         Postprocessor Access.
-                                                              (line  14)
-* '\%', incompatibilities with AT&T 'troff': Implementation Differences.
-                                                              (line  69)
-* '\%', used as delimiter:               Escapes.             (line  52)
-* '\%', used as delimiter <1>:           Escapes.             (line  71)
-* '\&', and glyph definitions:           Using Symbols.       (line 326)
-* '\&', and translations:                Character Translations.
-                                                              (line 176)
-* '\&', at end of sentence:              Sentences.           (line  24)
-* '\&', escaping control characters:     Requests.            (line  47)
-* '\&', in '\X':                         Postprocessor Access.
-                                                              (line  14)
-* '\&', incompatibilities with AT&T 'troff': Implementation Differences.
-                                                              (line  69)
-* '\&', used as delimiter:               Escapes.             (line  52)
-* '\'', and translations:                Character Translations.
-                                                              (line 160)
-* '\'', incompatibilities with AT&T 'troff': Implementation Differences.
-                                                              (line  69)
-* '\'', used as delimiter:               Escapes.             (line  52)
-* '\'', used as delimiter <1>:           Escapes.             (line  71)
-* '\(', and translations:                Character Translations.
-                                                              (line 160)
-* '\)', in '\X':                         Postprocessor Access.
-                                                              (line  14)
-* '\)', used as delimiter:               Escapes.             (line  52)
-* '\*', and warnings:                    Warnings.            (line  54)
-* '\*', incompatibilities with AT&T 'troff': Implementation Differences.
-                                                              (line  13)
-* '\*', when reading text for a macro:   Copy-in Mode.        (line   6)
-* '\', disabling ('eo'):                 Character Translations.
-                                                              (line  24)
-* '\,', used as delimiter:               Escapes.             (line  52)
-* '\-', and translations:                Character Translations.
-                                                              (line 160)
-* '\-', incompatibilities with AT&T 'troff': Implementation Differences.
-                                                              (line  69)
-* '\-', used as delimiter:               Escapes.             (line  52)
-* '\-', used as delimiter <1>:           Escapes.             (line  71)
-* '\/', used as delimiter:               Escapes.             (line  52)
-* '\/', used as delimiter <1>:           Escapes.             (line  71)
-* '\0', used as delimiter:               Escapes.             (line  52)
-* '\<colon>', in '\X':                   Postprocessor Access.
-                                                              (line  14)
-* '\<colon>', used as delimiter:         Escapes.             (line  52)
-* '\<colon>', used as delimiter <1>:     Escapes.             (line  71)
-* '\?', and copy-in mode:                Operators in Conditionals.
-                                                              (line  55)
-* '\?', and copy-in mode <1>:            Diversions.          (line 148)
-* '\?', in top-level diversion:          Diversions.          (line 176)
-* '\?', incompatibilities with AT&T 'troff': Implementation Differences.
-                                                              (line 106)
-* '\?', used as delimiter:               Escapes.             (line  52)
-* '\A', allowed delimiters:              Escapes.             (line  59)
-* '\a', and copy-in mode:                Leaders.             (line  18)
-* '\a', and translations:                Character Translations.
-                                                              (line 169)
-* '\A', incompatibilities with AT&T 'troff': Implementation Differences.
-                                                              (line  69)
-* '\a', used as delimiter:               Escapes.             (line  52)
-* '\B', allowed delimiters:              Escapes.             (line  59)
-* '\b', limitations:                     Drawing Requests.    (line 239)
-* '\b', possible quote characters:       Escapes.             (line  37)
-* '\C', allowed delimiters:              Escapes.             (line  59)
-* '\c', and fill mode:                   Line Control.        (line  69)
-* '\c', and no-fill mode:                Line Control.        (line  60)
-* '\C', and translations:                Character Translations.
-                                                              (line 160)
-* '\c', incompatibilities with AT&T 'troff': Implementation Differences.
-                                                              (line  69)
-* '\c', used as delimiter:               Escapes.             (line  52)
-* '\c', used as delimiter <1>:           Escapes.             (line  71)
-* '\D'f ...'' and horizontal resolution: Drawing Requests.    (line 151)
-* '\D', allowed delimiters:              Escapes.             (line  62)
-* '\d', used as delimiter:               Escapes.             (line  52)
-* '\E', and copy-in mode:                Character Translations.
-                                                              (line  81)
-* '\e', and glyph definitions:           Using Symbols.       (line 326)
-* '\e', and translations:                Character Translations.
-                                                              (line 164)
-* '\e', incompatibilities with AT&T 'troff': Implementation Differences.
-                                                              (line 106)
-* '\e', used as delimiter:               Escapes.             (line  52)
-* '\E', used as delimiter:               Escapes.             (line  52)
-* '\e', used as delimiter <1>:           Escapes.             (line  71)
-* '\F', and changing fonts:              Changing Fonts.      (line  11)
-* '\F', and font positions:              Font Positions.      (line  60)
-* '\f', and font translations:           Changing Fonts.      (line  55)
-* '\f', incompatibilities with AT&T 'troff': Implementation Differences.
-                                                              (line  56)
-* '\h', allowed delimiters:              Escapes.             (line  62)
-* '\H', allowed delimiters:              Escapes.             (line  62)
-* '\H', incompatibilities with AT&T 'troff': Implementation Differences.
-                                                              (line  56)
-* '\H', using '+' and '-':               Expressions.         (line  75)
-* '\H', with fractional type sizes:      Fractional Type Sizes.
-                                                              (line   6)
-* '\l', allowed delimiters:              Escapes.             (line  62)
-* '\L', allowed delimiters:              Escapes.             (line  62)
-* '\l', and glyph definitions:           Using Symbols.       (line 326)
-* '\L', and glyph definitions:           Using Symbols.       (line 326)
-* '\N', allowed delimiters:              Escapes.             (line  62)
-* '\N', and translations:                Character Translations.
-                                                              (line 160)
-* '\n', and warnings:                    Warnings.            (line  61)
-* '\n', incompatibilities with AT&T 'troff': Implementation Differences.
-                                                              (line  13)
-* '\n', when reading text for a macro:   Copy-in Mode.        (line   6)
-* '\o', possible quote characters:       Escapes.             (line  37)
-* '\p', used as delimiter:               Escapes.             (line  52)
-* '\p', used as delimiter <1>:           Escapes.             (line  71)
-* '\R', after '\c':                      Line Control.        (line  52)
-* '\R', allowed delimiters:              Escapes.             (line  62)
-* '\R', and warnings:                    Warnings.            (line  61)
-* '\R', difference to 'nr':              Auto-increment.      (line  11)
-* '\r', used as delimiter:               Escapes.             (line  52)
-* '\R', using '+' and '-':               Expressions.         (line  75)
-* \<RET>, when reading text for a macro: Copy-in Mode.        (line   6)
-* '\s', allowed delimiters:              Escapes.             (line  62)
-* '\S', allowed delimiters:              Escapes.             (line  62)
-* '\s', incompatibilities with AT&T 'troff': Implementation Differences.
-                                                              (line  56)
-* '\S', incompatibilities with AT&T 'troff': Implementation Differences.
-                                                              (line  56)
-* '\s', using '+' and '-':               Expressions.         (line  75)
-* '\s', with fractional type sizes:      Fractional Type Sizes.
-                                                              (line   6)
-* '\<SP>', difference to '\~':           Request and Macro Arguments.
-                                                              (line  20)
-* '\<SP>', incompatibilities with AT&T 'troff': Implementation Differences.
-                                                              (line  69)
-* '\<SP>', used as delimiter:            Escapes.             (line  52)
-* '\t', and copy-in mode:                Tabs and Fields.     (line  10)
-* '\t', and translations:                Character Translations.
-                                                              (line 169)
-* '\t', and warnings:                    Warnings.            (line  69)
-* '\t', used as delimiter:               Escapes.             (line  52)
-* '\u', used as delimiter:               Escapes.             (line  52)
-* '\v', allowed delimiters:              Escapes.             (line  62)
-* '\V', and copy-in mode:                I/O.                 (line 249)
-* '\v', internal representation:         Gtroff Internals.    (line  54)
-* '\w', allowed delimiters:              Escapes.             (line  59)
-* '\x', allowed delimiters:              Escapes.             (line  62)
-* '\X', and special characters:          Postprocessor Access.
-                                                              (line  22)
-* '\X', followed by '\%':                Manipulating Hyphenation.
-                                                              (line  98)
-* '\X', possible quote characters:       Escapes.             (line  37)
-* '\Y', followed by '\%':                Manipulating Hyphenation.
-                                                              (line  98)
-* '\Z', allowed delimiters:              Escapes.             (line  59)
-* '\[', and translations:                Character Translations.
-                                                              (line 160)
-* '\\', when reading text for a macro:   Copy-in Mode.        (line   6)
-* '\^', incompatibilities with AT&T 'troff': Implementation Differences.
-                                                              (line  69)
-* '\^', used as delimiter:               Escapes.             (line  52)
-* '\_', and translations:                Character Translations.
-                                                              (line 160)
-* '\_', incompatibilities with AT&T 'troff': Implementation Differences.
-                                                              (line  69)
-* '\_', used as delimiter:               Escapes.             (line  52)
-* '\_', used as delimiter <1>:           Escapes.             (line  71)
-* '\`', and translations:                Character Translations.
-                                                              (line 160)
-* '\`', incompatibilities with AT&T 'troff': Implementation Differences.
-                                                              (line  69)
-* '\`', used as delimiter:               Escapes.             (line  52)
-* '\`', used as delimiter <1>:           Escapes.             (line  71)
-* '\{', incompatibilities with AT&T 'troff': Implementation Differences.
-                                                              (line  69)
-* '\{', used as delimiter:               Escapes.             (line  52)
-* '\{', used as delimiter <1>:           Escapes.             (line  71)
-* '\|', incompatibilities with AT&T 'troff': Implementation Differences.
-                                                              (line  69)
-* '\|', used as delimiter:               Escapes.             (line  52)
-* '\}', and warnings:                    Warnings.            (line  73)
-* '\}', incompatibilities with AT&T 'troff': Implementation Differences.
-                                                              (line  69)
-* '\}', used as delimiter:               Escapes.             (line  52)
-* '\}', used as delimiter <1>:           Escapes.             (line  71)
-* '\~', and translations:                Character Translations.
-                                                              (line 166)
-* '\~', difference to '\<SP>':           Request and Macro Arguments.
-                                                              (line  20)
-* '\~', used as delimiter:               Escapes.             (line  52)
-* ']', as part of an identifier:         Identifiers.         (line  41)
-* ']', at end of sentence:               Sentences.           (line  18)
-* ']', at end of sentence <1>:           Using Symbols.       (line 275)
-* ']', ending an identifier:             Identifiers.         (line  75)
-* ']', ending an identifier <1>:         Escapes.             (line  20)
-* ']', macro names starting with, and 'refer': Identifiers.   (line  46)
-* '|', and page motion:                  Expressions.         (line  70)
-* aborting ('ab'):                       Debugging.           (line  40)
-* absolute position operator ('|'):      Expressions.         (line  70)
-* accent marks ['ms']:                   ms Strings and Special Characters.
-                                                              (line   6)
-* access of postprocessor:               Postprocessor Access.
-                                                              (line   6)
-* accessing unnamed glyphs with '\N':    Font File Format.    (line  51)
-* activating kerning ('kern'):           Ligatures and Kerning.
-                                                              (line  42)
-* activating ligatures ('lg'):           Ligatures and Kerning.
-                                                              (line  24)
-* activating track kerning ('tkf'):      Ligatures and Kerning.
-                                                              (line  60)
-* 'ad' request, and hyphenation margin:  Manipulating Hyphenation.
-                                                              (line 211)
-* 'ad' request, and hyphenation space:   Manipulating Hyphenation.
-                                                              (line 227)
-* adjusting:                             Filling and Adjusting.
-                                                              (line   6)
-* adjusting and filling, manipulating:   Manipulating Filling and Adjusting.
-                                                              (line   6)
-* adjustment mode register ('.j'):       Manipulating Filling and Adjusting.
-                                                              (line 114)
-* adobe glyph list (AGL):                Using Symbols.       (line  88)
-* AGL (adobe glyph list):                Using Symbols.       (line  88)
-* alias, diversion, creating ('als'):    Strings.             (line 229)
-* alias, diversion, removing ('rm'):     Strings.             (line 263)
-* alias, macro, creating ('als'):        Strings.             (line 229)
-* alias, macro, removing ('rm'):         Strings.             (line 263)
-* alias, number register, creating ('aln'): Setting Registers.
-                                                              (line 112)
-* alias, string, creating ('als'):       Strings.             (line 229)
-* alias, string, removing ('rm'):        Strings.             (line 263)
-* 'als' request, and '\$0':              Parameters.          (line  71)
-* 'am', 'am1', 'ami' requests, and warnings: Warnings.        (line  54)
-* annotations:                           Footnotes and Annotations.
-                                                              (line   6)
-* appending to a diversion ('da'):       Diversions.          (line  22)
-* appending to a file ('opena'):         I/O.                 (line 200)
-* appending to a macro ('am'):           Writing Macros.      (line 116)
-* appending to a string ('as'):          Strings.             (line 176)
-* arc, drawing ('\D'a ...''):            Drawing Requests.    (line 128)
-* argument delimiting characters:        Escapes.             (line  29)
-* arguments to macros, and tabs:         Request and Macro Arguments.
-                                                              (line   6)
-* arguments to requests and macros:      Request and Macro Arguments.
-                                                              (line   6)
-* arguments, and compatibility mode:     Gtroff Internals.    (line  91)
-* arguments, macro ('\$'):               Parameters.          (line  21)
-* arguments, of strings:                 Strings.             (line  19)
-* arithmetic operators:                  Expressions.         (line   8)
-* artificial fonts:                      Artificial Fonts.    (line   6)
-* 'as', 'as1' requests, and comments:    Comments.            (line  16)
-* 'as', 'as1' requests, and warnings:    Warnings.            (line  54)
-* ASCII approximation output register ('.A'): Groff Options.  (line  51)
-* ASCII approximation output register ('.A') <1>: Built-in Registers.
-                                                              (line 106)
-* ASCII, output encoding:                Groff Options.       (line 250)
-* 'asciify' request, and 'writem':       I/O.                 (line 222)
-* assigning formats ('af'):              Assigning Formats.   (line   6)
-* assignments, indirect:                 Interpolating Registers.
-                                                              (line  11)
-* assignments, nested:                   Interpolating Registers.
-                                                              (line  11)
-* AT&T 'troff', 'ms' macro package differences: Differences from AT&T ms.
-                                                              (line   6)
-* auto-increment:                        Auto-increment.      (line   6)
-* auto-increment, and 'ig' request:      Comments.            (line  85)
-* available glyphs, list ('groff_char(7)' man page): Using Symbols.
-                                                              (line  76)
-* background color name register ('.M'): Colors.              (line  94)
-* backslash, printing ('\\', '\e', '\E', '\[rs]'): Escapes.   (line  74)
-* backslash, printing ('\\', '\e', '\E', '\[rs]') <1>: Implementation Differences.
-                                                              (line 106)
-* backspace character:                   Identifiers.         (line  12)
-* backspace character, and translations: Character Translations.
-                                                              (line 169)
-* backtrace of input stack ('backtrace'): Debugging.          (line  96)
-* baseline:                              Sizes.               (line   6)
-* basic unit ('u'):                      Measurements.        (line   6)
-* basics of macros:                      Basics.              (line   6)
-* 'bd' request, and font styles:         Font Families.       (line  59)
-* 'bd' request, and font translations:   Changing Fonts.      (line  55)
-* 'bd' request, incompatibilities with AT&T 'troff': Implementation Differences.
-                                                              (line  86)
-* begin of conditional block ('\{'):     if-else.             (line  35)
-* beginning diversion ('di'):            Diversions.          (line  22)
-* blank line:                            Implicit Line Breaks.
-                                                              (line  10)
-* blank line <1>:                        Requests.            (line  27)
-* blank line ('sp'):                     Basics.              (line  93)
-* blank line macro ('blm'):              Implicit Line Breaks.
-                                                              (line  10)
-* blank line macro ('blm') <1>:          Requests.            (line  27)
-* blank line macro ('blm') <2>:          Blank Line Traps.    (line   7)
-* blank line traps:                      Blank Line Traps.    (line   6)
-* blank lines, disabling:                Manipulating Spacing.
-                                                              (line 123)
-* block, conditional, begin ('\{'):      if-else.             (line  35)
-* block, condititional, end ('\}'):      if-else.             (line  35)
-* bold face ['man']:                     Man font macros.     (line  14)
-* bold face, imitating ('bd'):           Artificial Fonts.    (line  98)
-* bottom margin:                         Page Layout.         (line  20)
-* bounding box:                          Miscellaneous.       (line 139)
-* box rule glyph ('\[br]'):              Drawing Requests.    (line  50)
-* 'box', 'boxa' requests, and warnings:  Warnings.            (line  54)
-* 'boxa' request, and 'dn' ('dl'):       Diversions.          (line  93)
-* 'bp' request, and top-level diversion: Page Control.        (line  24)
-* 'bp' request, and traps ('.pe'):       Page Location Traps. (line 143)
-* 'bp' request, causing implicit linebreak: Manipulating Filling and Adjusting.
-                                                              (line   6)
-* 'bp' request, using '+' and '-':       Expressions.         (line  75)
-* 'br' glyph, and 'cflags':              Using Symbols.       (line 271)
-* break:                                 Basics.              (line  48)
-* break <1>:                             Manipulating Filling and Adjusting.
-                                                              (line   6)
-* break ('br'):                          Basics.              (line 118)
-* 'break' request, in a 'while' loop:    while.               (line  68)
-* break, implicit:                       Implicit Line Breaks.
-                                                              (line   6)
-* built-in registers:                    Built-in Registers.  (line   6)
-* bulleted list, example markup ['ms']:  Lists in ms.         (line  21)
-* 'c' unit:                              Measurements.        (line  27)
-* calling convention of preprocessors:   Preprocessors in man pages.
-                                                              (line   6)
-* capabilities of 'groff':               groff Capabilities.  (line   6)
-* 'ce' request, causing implicit linebreak: Manipulating Filling and Adjusting.
-                                                              (line   6)
-* 'ce' request, difference to '.ad c':   Manipulating Filling and Adjusting.
-                                                              (line  66)
-* centered text:                         Manipulating Filling and Adjusting.
-                                                              (line  66)
-* centering lines ('ce'):                Basics.              (line 105)
-* centering lines ('ce') <1>:            Manipulating Filling and Adjusting.
-                                                              (line 204)
-* centimeter unit ('c'):                 Measurements.        (line  27)
-* 'cf' request, and copy-in mode:        I/O.                 (line  50)
-* 'cf' request, causing implicit linebreak: Manipulating Filling and Adjusting.
-                                                              (line   6)
-* changing font family ('fam', '\F'):    Font Families.       (line  25)
-* changing font position ('\f'):         Font Positions.      (line  60)
-* changing font style ('sty'):           Font Families.       (line  59)
-* changing fonts ('ft', '\f'):           Changing Fonts.      (line  11)
-* changing format, and read-only registers: Assigning Formats.
-                                                              (line  68)
-* changing the font height ('\H'):       Artificial Fonts.    (line  16)
-* changing the font slant ('\S'):        Artificial Fonts.    (line  45)
-* changing the page number character ('pc'): Page Layout.     (line  94)
-* changing trap location ('ch'):         Page Location Traps. (line 111)
-* changing type sizes ('ps', '\s'):      Changing Type Sizes. (line  11)
-* changing vertical line spacing ('vs'): Changing Type Sizes. (line  88)
-* 'char' request, and soft hyphen character: Manipulating Hyphenation.
-                                                              (line 243)
-* 'char' request, and translations:      Character Translations.
-                                                              (line 160)
-* 'char' request, used with '\N':        Using Symbols.       (line 201)
-* character:                             Using Symbols.       (line   6)
-* character class ('class'):             Character Classes.   (line  12)
-* character classes:                     Character Classes.   (line   6)
-* character properties ('cflags'):       Using Symbols.       (line 237)
-* character translations:                Character Translations.
-                                                              (line   6)
-* character, backspace:                  Identifiers.         (line  12)
-* character, backspace, and translations: Character Translations.
-                                                              (line 169)
-* character, control ('.'):              Requests.            (line   6)
-* character, control, changing ('cc'):   Character Translations.
-                                                              (line   6)
-* character, defining ('char'):          Using Symbols.       (line 326)
-* character, defining fallback ('fchar', 'fschar', 'schar'): Using Symbols.
-                                                              (line 326)
-* character, escape, changing ('ec'):    Character Translations.
-                                                              (line  47)
-* character, escape, while defining glyph: Using Symbols.     (line 326)
-* character, field delimiting ('fc'):    Fields.              (line   6)
-* character, field padding ('fc'):       Fields.              (line   6)
-* character, hyphenation ('\%'):         Manipulating Hyphenation.
-                                                              (line  85)
-* character, leader repetition ('lc'):   Leaders.             (line  23)
-* character, leader, and translations:   Character Translations.
-                                                              (line 169)
-* character, leader, non-interpreted ('\a'): Leaders.         (line  18)
-* character, named ('\C'):               Using Symbols.       (line 185)
-* character, newline:                    Escapes.             (line  69)
-* character, newline, and translations:  Character Translations.
-                                                              (line 169)
-* character, no-break control ('''):     Requests.            (line   6)
-* character, no-break control, changing ('c2'): Character Translations.
-                                                              (line   6)
-* character, soft hyphen, setting ('shc'): Manipulating Hyphenation.
-                                                              (line 243)
-* character, space:                      Escapes.             (line  69)
-* character, special:                    Character Translations.
-                                                              (line 160)
-* character, tab:                        Escapes.             (line  69)
-* character, tab repetition ('tc'):      Tabs and Fields.     (line 129)
-* character, tab, and translations:      Character Translations.
-                                                              (line 169)
-* character, tab, non-interpreted ('\t'): Tabs and Fields.    (line  10)
-* character, tabulator:                  Tab Stops.           (line   6)
-* character, transparent:                Sentences.           (line  18)
-* character, transparent <1>:            Using Symbols.       (line 275)
-* character, whitespace:                 Identifiers.         (line  10)
-* character, zero width space ('\&'):    Requests.            (line  47)
-* character, zero width space ('\&') <1>: Ligatures and Kerning.
-                                                              (line  47)
-* character, zero width space ('\&') <2>: Drawing Requests.   (line  32)
-* characters, argument delimiting:       Escapes.             (line  29)
-* characters, end-of-sentence:           Using Symbols.       (line 247)
-* characters, hyphenation:               Using Symbols.       (line 251)
-* characters, input, and output glyphs, compatibility with AT&T 'troff': Implementation Differences.
-                                                              (line  86)
-* characters, invalid for 'trf' request: I/O.                 (line  73)
-* characters, invalid input:             Identifiers.         (line  15)
-* characters, overlapping:               Using Symbols.       (line 265)
-* characters, special:                   Special Characters.  (line   6)
-* characters, unnamed, accessing with '\N': Font File Format. (line  51)
-* 'chem', the program:                   gchem.               (line   6)
-* circle, drawing ('\D'c ...''):         Drawing Requests.    (line 109)
-* circle, solid, drawing ('\D'C ...''):  Drawing Requests.    (line 114)
-* class of characters ('class'):         Character Classes.   (line  12)
-* classes, character:                    Character Classes.   (line   6)
-* closing file ('close'):                I/O.                 (line 231)
-* code, hyphenation ('hcode'):           Manipulating Hyphenation.
-                                                              (line 175)
-* color name, background, register ('.M'): Colors.            (line  94)
-* color name, drawing, register ('.m'):  Colors.              (line  67)
-* color name, fill, register ('.M'):     Colors.              (line  94)
-* color, default:                        Colors.              (line  26)
-* colors:                                Colors.              (line   6)
-* colors, fill, unnamed ('\D'F...''):    Drawing Requests.    (line 216)
-* command prefix:                        Environment.         (line  14)
-* command-line options:                  Groff Options.       (line  50)
-* commands, embedded:                    Embedded Commands.   (line   6)
-* comments:                              Comments.            (line   6)
-* comments in font files:                Font File Format.    (line  36)
-* comments, lining up with tabs:         Comments.            (line  21)
-* comments, with 'ds':                   Strings.             (line  45)
-* common features:                       Common Features.     (line   6)
-* common name space of macros, diversions, and strings: Strings.
-                                                              (line  92)
-* comparison of strings:                 Operators in Conditionals.
-                                                              (line  47)
-* comparison operators:                  Expressions.         (line  15)
-* compatibility mode:                    Warnings.            (line  91)
-* compatibility mode <1>:                Implementation Differences.
-                                                              (line   6)
-* compatibility mode, and parameters:    Gtroff Internals.    (line  91)
-* composite glyph names:                 Using Symbols.       (line  88)
-* conditional block, begin ('\{'):       if-else.             (line  35)
-* conditional block, end ('\}'):         if-else.             (line  35)
-* conditional output for terminal (TTY): Operators in Conditionals.
-                                                              (line  14)
-* conditional page break ('ne'):         Page Control.        (line  33)
-* conditionals and loops:                Conditionals and Loops.
-                                                              (line   6)
-* consecutive hyphenated lines ('hlm'):  Manipulating Hyphenation.
-                                                              (line  47)
-* constant glyph space mode ('cs'):      Artificial Fonts.    (line 126)
-* contents, table of:                    Table of Contents.   (line   6)
-* contents, table of <1>:                Leaders.             (line  29)
-* continuation, input line ('\'):        Line Control.        (line  36)
-* continuation, output line ('\c'):      Line Control.        (line  36)
-* 'continue' request, in a 'while' loop: while.               (line  68)
-* continuous underlining ('cu'):         Artificial Fonts.    (line  86)
-* control character ('.'):               Requests.            (line   6)
-* control character, changing ('cc'):    Character Translations.
-                                                              (line   6)
-* control character, no-break ('''):     Requests.            (line   6)
-* control character, no-break, changing ('c2'): Character Translations.
-                                                              (line   6)
-* control sequences, for terminals:      Invoking grotty.     (line  50)
-* control, line:                         Line Control.        (line   6)
-* control, page:                         Page Control.        (line   6)
-* conventions for input:                 Input Conventions.   (line   6)
-* copy mode:                             Copy-in Mode.        (line   6)
-* copy-in mode:                          Copy-in Mode.        (line   6)
-* copy-in mode, and 'cf' request:        I/O.                 (line  50)
-* copy-in mode, and 'device' request:    Postprocessor Access.
-                                                              (line  19)
-* copy-in mode, and 'ig' request:        Comments.            (line  85)
-* copy-in mode, and 'length' request:    Strings.             (line 211)
-* copy-in mode, and macro arguments:     Parameters.          (line  21)
-* copy-in mode, and 'output' request:    Diversions.          (line 179)
-* copy-in mode, and 'tm' request:        Debugging.           (line  30)
-* copy-in mode, and 'tm1' request:       Debugging.           (line  30)
-* copy-in mode, and 'tmc' request:       Debugging.           (line  30)
-* copy-in mode, and 'trf' request:       I/O.                 (line  50)
-* copy-in mode, and 'write' request:     I/O.                 (line 212)
-* copy-in mode, and 'writec' request:    I/O.                 (line 212)
-* copy-in mode, and 'writem' request:    I/O.                 (line 225)
-* copy-in mode, and '\!':                Diversions.          (line 148)
-* copy-in mode, and '\?':                Operators in Conditionals.
-                                                              (line  55)
-* copy-in mode, and '\?' <1>:            Diversions.          (line 148)
-* copy-in mode, and '\a':                Leaders.             (line  18)
-* copy-in mode, and '\E':                Character Translations.
-                                                              (line  81)
-* copy-in mode, and '\t':                Tabs and Fields.     (line  10)
-* copy-in mode, and '\V':                I/O.                 (line 249)
-* copying environment ('evc'):           Environments.        (line  70)
-* correction between italic and roman glyph ('\/', '\,'): Ligatures and Kerning.
-                                                              (line  80)
-* correction, italic ('\/'):             Ligatures and Kerning.
-                                                              (line  80)
-* correction, left italic ('\,'):        Ligatures and Kerning.
-                                                              (line  91)
-* cover page macros, ['ms']:             ms Cover Page Macros.
-                                                              (line   6)
-* 'cp' request, and glyph definitions:   Using Symbols.       (line 326)
-* cp1047, input encoding:                Input Encodings.     (line   9)
-* cp1047, output encoding:               Groff Options.       (line 264)
-* 'cq' glyph, at end of sentence:        Sentences.           (line  18)
-* 'cq' glyph, at end of sentence <1>:    Using Symbols.       (line 275)
-* creating alias, for diversion ('als'): Strings.             (line 229)
-* creating alias, for macro ('als'):     Strings.             (line 229)
-* creating alias, for number register ('aln'): Setting Registers.
-                                                              (line 112)
-* creating alias, for string ('als'):    Strings.             (line 229)
-* creating new characters ('char'):      Using Symbols.       (line 326)
-* credits:                               Credits.             (line   6)
-* 'cs' request, and font styles:         Font Families.       (line  59)
-* 'cs' request, and font translations:   Changing Fonts.      (line  55)
-* 'cs' request, incompatibilities with AT&T 'troff': Implementation Differences.
-                                                              (line  86)
-* 'cs' request, with fractional type sizes: Fractional Type Sizes.
-                                                              (line   6)
-* current directory:                     Macro Directories.   (line  21)
-* current input file name register ('.F'): Built-in Registers.
-                                                              (line  12)
-* current page number ('%'):             Page Control.        (line  27)
-* current time:                          I/O.                 (line 175)
-* current time, hours ('hours'):         Built-in Registers.  (line  41)
-* current time, minutes ('minutes'):     Built-in Registers.  (line  37)
-* current time, seconds ('seconds'):     Built-in Registers.  (line  31)
-* current vertical position ('nl'):      Page Control.        (line  67)
-* 'da' request, and 'dn' ('dl'):         Diversions.          (line  93)
-* 'da' request, and warnings:            Warnings.            (line  49)
-* 'da' request, and warnings <1>:        Warnings.            (line  54)
-* date, day of the month register ('dy'): Built-in Registers. (line  48)
-* date, day of the week register ('dw'): Built-in Registers.  (line  45)
-* date, month of the year register ('mo'): Built-in Registers.
-                                                              (line  51)
-* date, year register ('year', 'yr'):    Built-in Registers.  (line  54)
-* day of the month register ('dy'):      Built-in Registers.  (line  48)
-* day of the week register ('dw'):       Built-in Registers.  (line  45)
-* 'de' request, and 'while':             while.               (line  22)
-* 'de', 'de1', 'dei' requests, and warnings: Warnings.        (line  54)
-* debugging:                             Debugging.           (line   6)
-* default color:                         Colors.              (line  26)
-* default indentation ['man']:           Miscellaneous man macros.
-                                                              (line   6)
-* default indentation, resetting ['man']: Man usage.          (line 127)
-* default units:                         Default Units.       (line   6)
-* defining character ('char'):           Using Symbols.       (line 326)
-* defining character class ('class'):    Character Classes.   (line  12)
-* defining fallback character ('fchar', 'fschar', 'schar'): Using Symbols.
-                                                              (line 326)
-* defining glyph ('char'):               Using Symbols.       (line 326)
-* defining symbol ('char'):              Using Symbols.       (line 326)
-* delayed text:                          Footnotes and Annotations.
-                                                              (line  10)
-* delimited arguments, incompatibilities with AT&T 'troff': Implementation Differences.
-                                                              (line  47)
-* delimiting character, for fields ('fc'): Fields.            (line   6)
-* delimiting characters for arguments:   Escapes.             (line  29)
-* depth, of last glyph ('.cdp'):         Environments.        (line  95)
-* 'DESC' file, format:                   DESC File Format.    (line   6)
-* 'device' request, and copy-in mode:    Postprocessor Access.
-                                                              (line  19)
-* device resolution:                     DESC File Format.    (line  85)
-* devices for output:                    Output device intro. (line   6)
-* devices for output <1>:                Output Devices.      (line   6)
-* 'dg' glyph, at end of sentence:        Sentences.           (line  18)
-* 'dg' glyph, at end of sentence <1>:    Using Symbols.       (line 275)
-* 'di' request, and warnings:            Warnings.            (line  49)
-* 'di' request, and warnings <1>:        Warnings.            (line  54)
-* differences in implementation:         Implementation Differences.
-                                                              (line   6)
-* digit width space ('\0'):              Page Motions.        (line 138)
-* digits, and delimiters:                Escapes.             (line  65)
-* dimensions, line:                      Line Layout.         (line   6)
-* directories for fonts:                 Font Directories.    (line   6)
-* directories for macros:                Macro Directories.   (line   6)
-* directory, current:                    Macro Directories.   (line  21)
-* directory, for tmac files:             Macro Directories.   (line  11)
-* directory, home:                       Macro Directories.   (line  24)
-* directory, platform-specific:          Macro Directories.   (line  26)
-* directory, site-specific:              Macro Directories.   (line  26)
-* directory, site-specific <1>:          Font Directories.    (line  29)
-* disabling hyphenation ('\%'):          Manipulating Hyphenation.
-                                                              (line  85)
-* disabling '\' ('eo'):                  Character Translations.
-                                                              (line  24)
-* discardable horizontal space:          Manipulating Filling and Adjusting.
-                                                              (line 183)
-* discarded space in traps:              Manipulating Spacing.
-                                                              (line  53)
-* displays:                              Displays.            (line   6)
-* displays ['ms']:                       ms Displays and Keeps.
-                                                              (line   6)
-* displays, and footnotes ['ms']:        ms Footnotes.        (line  24)
-* distance to next trap register ('.t'): Page Location Traps. (line 102)
-* 'ditroff', the program:                History.             (line  59)
-* diversion name register ('.z'):        Diversions.          (line  69)
-* diversion trap, setting ('dt'):        Diversion Traps.     (line   7)
-* diversion traps:                       Diversion Traps.     (line   6)
-* diversion, appending ('da'):           Diversions.          (line  22)
-* diversion, beginning ('di'):           Diversions.          (line  22)
-* diversion, creating alias ('als'):     Strings.             (line 229)
-* diversion, ending ('di'):              Diversions.          (line  22)
-* diversion, nested:                     Diversions.          (line  69)
-* diversion, removing ('rm'):            Strings.             (line 224)
-* diversion, removing alias ('rm'):      Strings.             (line 263)
-* diversion, renaming ('rn'):            Strings.             (line 221)
-* diversion, stripping final newline:    Strings.             (line 157)
-* diversion, top-level:                  Diversions.          (line  12)
-* diversion, top-level, and 'bp':        Page Control.        (line  24)
-* diversion, top-level, and '\!':        Diversions.          (line 171)
-* diversion, top-level, and '\?':        Diversions.          (line 176)
-* diversion, unformatting ('asciify'):   Diversions.          (line 195)
-* diversion, vertical position in, register ('.d'): Diversions.
-                                                              (line  69)
-* diversions:                            Diversions.          (line   6)
-* diversions, and traps:                 Page Location Traps. (line 166)
-* diversions, shared name space with macros and strings: Strings.
-                                                              (line  92)
-* 'dl' register, and 'da' ('boxa'):      Diversions.          (line  93)
-* 'dn' register, and 'da' ('boxa'):      Diversions.          (line  93)
-* documents, multi-file:                 Debugging.           (line  10)
-* documents, structuring the source code: Requests.           (line  14)
-* double quote, in a macro argument:     Request and Macro Arguments.
-                                                              (line  25)
-* double-spacing ('ls'):                 Basics.              (line  82)
-* double-spacing ('ls') <1>:             Manipulating Spacing.
-                                                              (line  64)
-* double-spacing ('vs', 'pvs'):          Changing Type Sizes. (line 125)
-* drawing a circle ('\D'c ...''):        Drawing Requests.    (line 109)
-* drawing a line ('\D'l ...''):          Drawing Requests.    (line  80)
-* drawing a polygon ('\D'p ...''):       Drawing Requests.    (line 158)
-* drawing a solid circle ('\D'C ...''):  Drawing Requests.    (line 114)
-* drawing a solid ellipse ('\D'E ...''): Drawing Requests.    (line 124)
-* drawing a solid polygon ('\D'P ...''): Drawing Requests.    (line 167)
-* drawing a spline ('\D'~ ...''):        Drawing Requests.    (line 136)
-* drawing an arc ('\D'a ...''):          Drawing Requests.    (line 128)
-* drawing an ellipse ('\D'e ...''):      Drawing Requests.    (line 118)
-* drawing color name register ('.m'):    Colors.              (line  67)
-* drawing horizontal lines ('\l'):       Drawing Requests.    (line  17)
-* drawing requests:                      Drawing Requests.    (line   6)
-* drawing vertical lines ('\L'):         Drawing Requests.    (line  50)
-* 'ds' request, and comments:            Strings.             (line  45)
-* 'ds' request, and double quotes:       Request and Macro Arguments.
-                                                              (line  69)
-* 'ds' request, and leading spaces:      Strings.             (line  57)
-* 'ds', 'ds1' requests, and comments:    Comments.            (line  16)
-* 'ds', 'ds1' requests, and warnings:    Warnings.            (line  54)
-* dumping environments ('pev'):          Debugging.           (line  62)
-* dumping number registers ('pnr'):      Debugging.           (line  77)
-* dumping symbol table ('pm'):           Debugging.           (line  66)
-* dumping traps ('ptr'):                 Debugging.           (line  81)
-* EBCDIC encoding:                       Tab Stops.           (line   6)
-* EBCDIC encoding of a tab:              Tabs and Fields.     (line   6)
-* EBCDIC encoding of backspace:          Identifiers.         (line  12)
-* EBCDIC, input encoding:                Input Encodings.     (line   9)
-* EBCDIC, output encoding:               Groff Options.       (line 264)
-* 'el' request, and warnings:            Warnings.            (line  32)
-* ellipse, drawing ('\D'e ...''):        Drawing Requests.    (line 118)
-* ellipse, solid, drawing ('\D'E ...''): Drawing Requests.    (line 124)
-* 'em' glyph, and 'cflags':              Using Symbols.       (line 258)
-* em unit ('m'):                         Measurements.        (line  50)
-* embedded commands:                     Embedded Commands.   (line   6)
-* embedding PDF:                         Embedding PDF.       (line   6)
-* embedding PostScript:                  Embedding PostScript.
-                                                              (line   6)
-* embolding of special fonts:            Artificial Fonts.    (line 115)
-* empty line:                            Implicit Line Breaks.
-                                                              (line  10)
-* empty line ('sp'):                     Basics.              (line  93)
-* empty space before a paragraph ['man']: Miscellaneous man macros.
-                                                              (line  15)
-* en unit ('n'):                         Measurements.        (line  55)
-* enabling vertical position traps ('vpt'): Page Location Traps.
-                                                              (line  18)
-* encoding, EBCDIC:                      Tab Stops.           (line   6)
-* encoding, input, cp1047:               Input Encodings.     (line   9)
-* encoding, input, EBCDIC:               Input Encodings.     (line   9)
-* encoding, input, latin-1 (ISO 8859-1): Input Encodings.     (line  14)
-* encoding, input, latin-2 (ISO 8859-2): Input Encodings.     (line  18)
-* encoding, input, latin-5 (ISO 8859-9): Input Encodings.     (line  23)
-* encoding, input, latin-9 (latin-0, ISO 8859-15): Input Encodings.
-                                                              (line  28)
-* encoding, output, ASCII:               Groff Options.       (line 250)
-* encoding, output, cp1047:              Groff Options.       (line 264)
-* encoding, output, EBCDIC:              Groff Options.       (line 264)
-* encoding, output, latin-1 (ISO 8859-1): Groff Options.      (line 254)
-* encoding, output, utf-8:               Groff Options.       (line 259)
-* end of conditional block ('\}'):       if-else.             (line  35)
-* end-of-input macro ('em'):             End-of-input Traps.  (line   7)
-* end-of-input trap, setting ('em'):     End-of-input Traps.  (line   7)
-* end-of-input traps:                    End-of-input Traps.  (line   6)
-* end-of-sentence characters:            Using Symbols.       (line 247)
-* ending diversion ('di'):               Diversions.          (line  22)
-* environment number/name register ('.ev'): Environments.     (line  39)
-* environment variables:                 Environment.         (line   6)
-* environment, copying ('evc'):          Environments.        (line  70)
-* environment, dimensions of last glyph ('.w', '.cht', '.cdp', '.csk'): Environments.
-                                                              (line  95)
-* environment, previous line length ('.n'): Environments.     (line 110)
-* environment, switching ('ev'):         Environments.        (line  39)
-* environments:                          Environments.        (line   6)
-* environments, dumping ('pev'):         Debugging.           (line  62)
-* 'eqn', the program:                    geqn.                (line   6)
-* equations ['ms']:                      ms Insertions.       (line   6)
-* escape character, changing ('ec'):     Character Translations.
-                                                              (line  47)
-* escape character, while defining glyph: Using Symbols.      (line 326)
-* escapes:                               Escapes.             (line   6)
-* escaping newline characters, in strings: Strings.           (line  63)
-* 'ex' request, use in debugging:        Debugging.           (line  45)
-* 'ex' request, used with 'nx' and 'rd': I/O.                 (line 122)
-* example markup, bulleted list ['ms']:  Lists in ms.         (line  21)
-* example markup, glossary-style list ['ms']: Lists in ms.    (line  65)
-* example markup, multi-page table ['ms']: Example multi-page table.
-                                                              (line   6)
-* example markup, numbered list ['ms']:  Lists in ms.         (line  41)
-* example markup, title page:            ms Cover Page Macros.
-                                                              (line  66)
-* examples of invocation:                Invocation Examples. (line   6)
-* exiting ('ex'):                        Debugging.           (line  45)
-* expansion of strings ('\*'):           Strings.             (line  19)
-* explicit hyphen ('\%'):                Manipulating Hyphenation.
-                                                              (line  47)
-* expression, limitation of logical not in: Expressions.      (line  27)
-* expression, order of evaluation:       Expressions.         (line  59)
-* expressions:                           Expressions.         (line   6)
-* expressions, and space characters:     Expressions.         (line  86)
-* extra post-vertical line space ('\x'): Changing Type Sizes. (line 118)
-* extra post-vertical line space register ('.a'): Manipulating Spacing.
-                                                              (line  94)
-* extra pre-vertical line space ('\x'):  Changing Type Sizes. (line 109)
-* extra spaces:                          Filling and Adjusting.
-                                                              (line  10)
-* extremum operators ('>?', '<?'):       Expressions.         (line  44)
-* 'f' unit:                              Measurements.        (line  43)
-* 'f' unit, and colors:                  Colors.              (line  36)
-* factor, zoom, of a font ('fzoom'):     Changing Fonts.      (line  71)
-* fallback character, defining ('fchar', 'fschar', 'schar'): Using Symbols.
-                                                              (line 326)
-* fallback glyph, removing definition ('rchar', 'rfschar'): Using Symbols.
-                                                              (line 382)
-* 'fam' request, and changing fonts:     Changing Fonts.      (line  11)
-* 'fam' request, and font positions:     Font Positions.      (line  60)
-* families, font:                        Font Families.       (line   6)
-* features, common:                      Common Features.     (line   6)
-* 'fi' request, causing implicit linebreak: Manipulating Filling and Adjusting.
-                                                              (line   6)
-* field delimiting character ('fc'):     Fields.              (line   6)
-* field padding character ('fc'):        Fields.              (line   6)
-* fields:                                Fields.              (line   6)
-* fields, and tabs:                      Tabs and Fields.     (line   6)
-* figures ['ms']:                        ms Insertions.       (line   6)
-* file formats:                          File formats.        (line   6)
-* file, appending to ('opena'):          I/O.                 (line 200)
-* file, closing ('close'):               I/O.                 (line 231)
-* file, inclusion ('so'):                I/O.                 (line   9)
-* file, opening ('open'):                I/O.                 (line 200)
-* file, processing next ('nx'):          I/O.                 (line  84)
-* file, writing to ('write', 'writec'):  I/O.                 (line 212)
-* files, font:                           Font Files.          (line   6)
-* files, macro, searching:               Macro Directories.   (line  11)
-* fill color name register ('.M'):       Colors.              (line  94)
-* fill colors, unnamed ('\D'F...''):     Drawing Requests.    (line 216)
-* fill mode:                             Implicit Line Breaks.
-                                                              (line  15)
-* fill mode <1>:                         Manipulating Filling and Adjusting.
-                                                              (line 156)
-* fill mode <2>:                         Warnings.            (line  23)
-* fill mode ('fi'):                      Manipulating Filling and Adjusting.
-                                                              (line  29)
-* fill mode, and '\c':                   Line Control.        (line  69)
-* filling:                               Filling and Adjusting.
-                                                              (line   6)
-* filling and adjusting, manipulating:   Manipulating Filling and Adjusting.
-                                                              (line   6)
-* final newline, stripping in diversions: Strings.            (line 157)
-* 'fl' request, causing implicit linebreak: Manipulating Filling and Adjusting.
-                                                              (line   6)
-* floating keep:                         Displays.            (line  23)
-* flush output ('fl'):                   Debugging.           (line  87)
-* font description file, format:         DESC File Format.    (line   6)
-* font description file, format <1>:     Font File Format.    (line   6)
-* font directories:                      Font Directories.    (line   6)
-* font families:                         Font Families.       (line   6)
-* font family, changing ('fam', '\F'):   Font Families.       (line  25)
-* font file, format:                     Font File Format.    (line   6)
-* font files:                            Font Files.          (line   6)
-* font files, comments:                  Font File Format.    (line  36)
-* font for underlining ('uf'):           Artificial Fonts.    (line  90)
-* font height, changing ('\H'):          Artificial Fonts.    (line  16)
-* font path:                             Font Directories.    (line  14)
-* font position register ('.f'):         Font Positions.      (line  20)
-* font position, changing ('\f'):        Font Positions.      (line  60)
-* font positions:                        Font Positions.      (line   6)
-* font selection ['man']:                Man font macros.     (line   6)
-* font slant, changing ('\S'):           Artificial Fonts.    (line  45)
-* font style, changing ('sty'):          Font Families.       (line  59)
-* font styles:                           Font Families.       (line   6)
-* font translation ('ftr'):              Changing Fonts.      (line  55)
-* font, magnification ('fzoom'):         Changing Fonts.      (line  71)
-* font, mounting ('fp'):                 Font Positions.      (line  13)
-* font, optical size:                    Changing Fonts.      (line  71)
-* font, previous ('ft', '\f[]', '\fP'):  Changing Fonts.      (line  23)
-* font, zoom factor ('fzoom'):           Changing Fonts.      (line  71)
-* fonts:                                 Fonts and Symbols.   (line   6)
-* fonts <1>:                             Changing Fonts.      (line   6)
-* fonts, artificial:                     Artificial Fonts.    (line   6)
-* fonts, changing ('ft', '\f'):          Changing Fonts.      (line  11)
-* fonts, PostScript:                     Font Families.       (line  11)
-* fonts, searching:                      Font Directories.    (line   6)
-* fonts, special:                        Special Fonts.       (line   6)
-* footers:                               Page Layout.         (line  31)
-* footers <1>:                           Page Location Traps. (line  38)
-* footers ['ms']:                        ms Headers and Footers.
-                                                              (line   6)
-* footnotes:                             Footnotes and Annotations.
-                                                              (line   6)
-* footnotes ['ms']:                      ms Footnotes.        (line   6)
-* footnotes, and displays ['ms']:        ms Footnotes.        (line  24)
-* footnotes, and keeps ['ms']:           ms Footnotes.        (line  24)
-* form letters:                          I/O.                 (line 106)
-* format of font description file:       DESC File Format.    (line   6)
-* format of font description files:      Font File Format.    (line   6)
-* format of font files:                  Font File Format.    (line   6)
-* format of register ('\g'):             Assigning Formats.   (line  75)
-* formats, assigning ('af'):             Assigning Formats.   (line   6)
-* formats, file:                         File formats.        (line   6)
-* 'fp' request, and font translations:   Changing Fonts.      (line  55)
-* 'fp' request, incompatibilities with AT&T 'troff': Implementation Differences.
-                                                              (line  86)
-* fractional point sizes:                Fractional Type Sizes.
-                                                              (line   6)
-* fractional point sizes <1>:            Implementation Differences.
-                                                              (line  76)
-* fractional type sizes:                 Fractional Type Sizes.
-                                                              (line   6)
-* fractional type sizes <1>:             Implementation Differences.
-                                                              (line  76)
-* french-spacing:                        Sentences.           (line  12)
-* 'fspecial' request, and font styles:   Font Families.       (line  59)
-* 'fspecial' request, and font translations: Changing Fonts.  (line  55)
-* 'fspecial' request, and glyph search order: Using Symbols.  (line  14)
-* 'fspecial' request, and imitating bold: Artificial Fonts.   (line 115)
-* 'ft' request, and font translations:   Changing Fonts.      (line  55)
-* 'gchem', invoking:                     Invoking gchem.      (line   5)
-* 'gchem', the program:                  gchem.               (line   6)
-* 'geqn', invoking:                      Invoking geqn.       (line   5)
-* 'geqn', the program:                   geqn.                (line   6)
-* GGL (groff glyph list):                Using Symbols.       (line  88)
-* GGL (groff glyph list) <1>:            Character Classes.   (line  32)
-* 'ggrn', invoking:                      Invoking ggrn.       (line   5)
-* 'ggrn', the program:                   ggrn.                (line   6)
-* glossary-style list, example markup ['ms']: Lists in ms.    (line  65)
-* glyph:                                 Using Symbols.       (line   6)
-* glyph for line drawing:                Drawing Requests.    (line  50)
-* glyph names, composite:                Using Symbols.       (line  88)
-* glyph pile ('\b'):                     Drawing Requests.    (line 232)
-* glyph properties ('cflags'):           Using Symbols.       (line 237)
-* glyph, box rule ('\[br]'):             Drawing Requests.    (line  50)
-* glyph, constant space:                 Artificial Fonts.    (line 126)
-* glyph, defining ('char'):              Using Symbols.       (line 326)
-* glyph, for line drawing:               Drawing Requests.    (line  28)
-* glyph, for margins ('mc'):             Miscellaneous.       (line  75)
-* glyph, italic correction ('\/'):       Ligatures and Kerning.
-                                                              (line  80)
-* glyph, last, dimensions ('.w', '.cht', '.cdp', '.csk'): Environments.
-                                                              (line  95)
-* glyph, leader repetition ('lc'):       Leaders.             (line  23)
-* glyph, left italic correction ('\,'):  Ligatures and Kerning.
-                                                              (line  91)
-* glyph, numbered ('\N'):                Character Translations.
-                                                              (line 160)
-* glyph, numbered ('\N') <1>:            Using Symbols.       (line 201)
-* glyph, removing definition ('rchar', 'rfschar'): Using Symbols.
-                                                              (line 382)
-* glyph, soft hyphen ('hy'):             Manipulating Hyphenation.
-                                                              (line 243)
-* glyph, tab repetition ('tc'):          Tabs and Fields.     (line 129)
-* glyph, underscore ('\[ru]'):           Drawing Requests.    (line  28)
-* glyphs, available, list ('groff_char(7)' man page): Using Symbols.
-                                                              (line  76)
-* glyphs, output, and input characters, compatibility with AT&T 'troff': Implementation Differences.
-                                                              (line  86)
-* glyphs, overstriking ('\o'):           Page Motions.        (line 216)
-* glyphs, unnamed:                       Using Symbols.       (line 212)
-* glyphs, unnamed, accessing with '\N':  Font File Format.    (line  51)
-* GNU-specific register ('.g'):          Built-in Registers.  (line 102)
-* 'gpic', invoking:                      Invoking gpic.       (line   5)
-* 'gpic', the program:                   gpic.                (line   6)
-* 'grap', the program:                   grap.                (line   6)
-* gray shading ('\D'f ...''):            Drawing Requests.    (line 141)
-* 'grefer', invoking:                    Invoking grefer.     (line   5)
-* 'grefer', the program:                 grefer.              (line   6)
-* 'grn', the program:                    ggrn.                (line   6)
-* 'grodvi', invoking:                    Invoking grodvi.     (line   6)
-* 'grodvi', the program:                 grodvi.              (line   6)
-* 'groff' - what is it?:                 What Is groff?.      (line   6)
-* 'groff' capabilities:                  groff Capabilities.  (line   6)
-* groff glyph list (GGL):                Using Symbols.       (line  88)
-* groff glyph list (GGL) <1>:            Character Classes.   (line  32)
-* 'groff' invocation:                    Invoking groff.      (line   6)
-* 'groff', and 'pi' request:             I/O.                 (line 159)
-* GROFF_BIN_PATH, environment variable:  Environment.         (line  10)
-* GROFF_COMMAND_PREFIX, environment variable: Environment.    (line  14)
-* GROFF_ENCODING, environment variable:  Environment.         (line  25)
-* GROFF_FONT_PATH, environment variable: Environment.         (line  34)
-* GROFF_FONT_PATH, environment variable <1>: Font Directories.
-                                                              (line  26)
-* GROFF_TMAC_PATH, environment variable: Environment.         (line  39)
-* GROFF_TMAC_PATH, environment variable <1>: Macro Directories.
-                                                              (line  18)
-* GROFF_TMPDIR, environment variable:    Environment.         (line  44)
-* GROFF_TYPESETTER, environment variable: Environment.        (line  52)
-* 'grohtml', invoking:                   Invoking grohtml.    (line   6)
-* 'grohtml', registers and strings:      grohtml specific registers and strings.
-                                                              (line   6)
-* 'grohtml', the program:                Groff Options.       (line 275)
-* 'grohtml', the program <1>:            grohtml.             (line   6)
-* 'grolbp', invoking:                    Invoking grolbp.     (line   6)
-* 'grolbp', the program:                 grolbp.              (line   6)
-* 'grolj4', invoking:                    Invoking grolj4.     (line   6)
-* 'grolj4', the program:                 grolj4.              (line   6)
-* 'gropdf', invoking:                    Invoking gropdf.     (line   6)
-* 'gropdf', the program:                 gropdf.              (line   6)
-* 'grops', invoking:                     Invoking grops.      (line   6)
-* 'grops', the program:                  grops.               (line   6)
-* 'grotty', invoking:                    Invoking grotty.     (line   6)
-* 'grotty', the program:                 grotty.              (line   6)
-* 'gsoelim', invoking:                   Invoking gsoelim.    (line   5)
-* 'gsoelim', the program:                gsoelim.             (line   6)
-* 'gtbl', invoking:                      Invoking gtbl.       (line   5)
-* 'gtbl', the program:                   gtbl.                (line   6)
-* 'gtroff', identification register ('.g'): Built-in Registers.
-                                                              (line 102)
-* 'gtroff', interactive use:             Debugging.           (line  87)
-* 'gtroff', output:                      gtroff Output.       (line   6)
-* 'gtroff', process ID register ('$$'):  Built-in Registers.  (line  99)
-* 'gtroff', reference:                   gtroff Reference.    (line   6)
-* 'gxditview', invoking:                 Invoking gxditview.  (line   5)
-* 'gxditview', the program:              gxditview.           (line   6)
-* hanging indentation ['man']:           Man usage.           (line  98)
-* 'hcode' request, and glyph definitions: Using Symbols.      (line 326)
-* headers:                               Page Layout.         (line  31)
-* headers <1>:                           Page Location Traps. (line  38)
-* headers ['ms']:                        ms Headers and Footers.
-                                                              (line   6)
-* height, font, changing ('\H'):         Artificial Fonts.    (line  16)
-* height, of last glyph ('.cht'):        Environments.        (line  95)
-* high-water mark register ('.h'):       Diversions.          (line  76)
-* history:                               History.             (line   6)
-* home directory:                        Macro Directories.   (line  24)
-* horizontal discardable space:          Manipulating Filling and Adjusting.
-                                                              (line 183)
-* horizontal input line position register ('hp'): Page Motions.
-                                                              (line 209)
-* horizontal input line position, saving ('\k'): Page Motions.
-                                                              (line 203)
-* horizontal line, drawing ('\l'):       Drawing Requests.    (line  17)
-* horizontal motion ('\h'):              Page Motions.        (line 103)
-* horizontal output line position register ('.k'): Page Motions.
-                                                              (line 212)
-* horizontal resolution:                 DESC File Format.    (line  25)
-* horizontal resolution register ('.H'): Built-in Registers.  (line  15)
-* horizontal space ('\h'):               Page Motions.        (line 103)
-* horizontal space, unformatting:        Strings.             (line 157)
-* hours, current time ('hours'):         Built-in Registers.  (line  41)
-* 'hpf' request, and hyphenation language: Manipulating Hyphenation.
-                                                              (line 256)
-* 'hw' request, and hyphenation language: Manipulating Hyphenation.
-                                                              (line 256)
-* 'hy' glyph, and 'cflags':              Using Symbols.       (line 258)
-* hyphen, explicit ('\%'):               Manipulating Hyphenation.
-                                                              (line  47)
-* hyphenated lines, consecutive ('hlm'): Manipulating Hyphenation.
-                                                              (line  47)
-* hyphenating characters:                Using Symbols.       (line 251)
-* hyphenation:                           Hyphenation.         (line   6)
-* hyphenation character ('\%'):          Manipulating Hyphenation.
-                                                              (line  85)
-* hyphenation code ('hcode'):            Manipulating Hyphenation.
-                                                              (line 175)
-* hyphenation language register ('.hla'): Manipulating Hyphenation.
-                                                              (line 263)
-* hyphenation margin ('hym'):            Manipulating Hyphenation.
-                                                              (line 211)
-* hyphenation margin register ('.hym'):  Manipulating Hyphenation.
-                                                              (line 222)
-* hyphenation patterns ('hpf'):          Manipulating Hyphenation.
-                                                              (line 116)
-* hyphenation restrictions register ('.hy'): Manipulating Hyphenation.
-                                                              (line  30)
-* hyphenation space ('hys'):             Manipulating Hyphenation.
-                                                              (line 227)
-* hyphenation space register ('.hys'):   Manipulating Hyphenation.
-                                                              (line 239)
-* hyphenation, disabling ('\%'):         Manipulating Hyphenation.
-                                                              (line  85)
-* hyphenation, manipulating:             Manipulating Hyphenation.
-                                                              (line   6)
-* 'i' unit:                              Measurements.        (line  22)
-* i/o:                                   I/O.                 (line   6)
-* IBM cp1047 input encoding:             Input Encodings.     (line   9)
-* IBM cp1047 output encoding:            Groff Options.       (line 264)
-* identifiers:                           Identifiers.         (line   6)
-* identifiers, undefined:                Identifiers.         (line  79)
-* 'ie' request, and font translations:   Changing Fonts.      (line  55)
-* 'ie' request, and warnings:            Warnings.            (line  32)
-* 'ie' request, operators to use with:   Operators in Conditionals.
-                                                              (line   6)
-* 'if' request, and font translations:   Changing Fonts.      (line  55)
-* 'if' request, and the '!' operator:    Expressions.         (line  21)
-* 'if' request, operators to use with:   Operators in Conditionals.
-                                                              (line   6)
-* if-else:                               if-else.             (line   6)
-* 'ig' request, and auto-increment:      Comments.            (line  85)
-* 'ig' request, and copy-in mode:        Comments.            (line  85)
-* imitating bold face ('bd'):            Artificial Fonts.    (line  98)
-* implementation differences:            Implementation Differences.
-                                                              (line   6)
-* implicit breaks of lines:              Implicit Line Breaks.
-                                                              (line   6)
-* implicit line breaks:                  Implicit Line Breaks.
-                                                              (line   6)
-* 'in' request, causing implicit linebreak: Manipulating Filling and Adjusting.
-                                                              (line   6)
-* 'in' request, using '+' and '-':       Expressions.         (line  75)
-* inch unit ('i'):                       Measurements.        (line  22)
-* including a file ('so'):               I/O.                 (line   9)
-* incompatibilities with AT&T 'troff':   Implementation Differences.
-                                                              (line   6)
-* increment value without changing the register: Auto-increment.
-                                                              (line  52)
-* increment, automatic:                  Auto-increment.      (line   6)
-* indentaion, resetting to default ['man']: Man usage.        (line 127)
-* indentation ('in'):                    Line Layout.         (line  25)
-* index, in macro package:               Indices.             (line   6)
-* indicator, scaling:                    Measurements.        (line   6)
-* indirect assignments:                  Interpolating Registers.
-                                                              (line  11)
-* input and output requests:             I/O.                 (line   6)
-* input characters and output glyphs, compatibility with AT&T 'troff': Implementation Differences.
-                                                              (line  86)
-* input characters, invalid:             Identifiers.         (line  15)
-* input conventions:                     Input Conventions.   (line   6)
-* input encoding, cp1047:                Input Encodings.     (line   9)
-* input encoding, EBCDIC:                Input Encodings.     (line   9)
-* input encoding, latin-1 (ISO 8859-1):  Input Encodings.     (line  14)
-* input encoding, latin-2 (ISO 8859-2):  Input Encodings.     (line  18)
-* input encoding, latin-2 (ISO 8859-9):  Input Encodings.     (line  23)
-* input encoding, latin-9 (latin-9, ISO 8859-15): Input Encodings.
-                                                              (line  28)
-* input file name, current, register ('.F'): Built-in Registers.
-                                                              (line  12)
-* input level in delimited arguments:    Implementation Differences.
-                                                              (line  47)
-* input line continuation ('\'):         Line Control.        (line  36)
-* input line number register ('.c', 'c.'): Built-in Registers.
-                                                              (line  77)
-* input line number, setting ('lf'):     Debugging.           (line  10)
-* input line position, horizontal, saving ('\k'): Page Motions.
-                                                              (line 203)
-* input line trap, setting ('it'):       Input Line Traps.    (line   8)
-* input line traps:                      Input Line Traps.    (line   6)
-* input line traps and interrupted lines ('itc'): Input Line Traps.
-                                                              (line  24)
-* input line, horizontal position, register ('hp'): Page Motions.
-                                                              (line 209)
-* input stack, backtrace ('backtrace'):  Debugging.           (line  96)
-* input stack, setting limit:            Debugging.           (line 119)
-* input token:                           Gtroff Internals.    (line   6)
-* input, 8-bit:                          Font File Format.    (line  51)
-* input, standard, reading from ('rd'):  I/O.                 (line  89)
-* inserting horizontal space ('\h'):     Page Motions.        (line 103)
-* installation:                          Installation.        (line   5)
-* interactive use of 'gtroff':           Debugging.           (line  87)
-* intermediate output:                   gtroff Output.       (line  16)
-* interpolating registers ('\n'):        Interpolating Registers.
-                                                              (line   6)
-* interpolation of strings ('\*'):       Strings.             (line  19)
-* interrupted line:                      Line Control.        (line  36)
-* interrupted line register ('.int'):    Line Control.        (line  81)
-* interrupted lines and input line traps ('itc'): Input Line Traps.
-                                                              (line  24)
-* introduction:                          Introduction.        (line   6)
-* invalid characters for 'trf' request:  I/O.                 (line  73)
-* invalid input characters:              Identifiers.         (line  15)
-* invocation examples:                   Invocation Examples. (line   6)
-* invoking 'gchem':                      Invoking gchem.      (line   6)
-* invoking 'geqn':                       Invoking geqn.       (line   6)
-* invoking 'ggrn':                       Invoking ggrn.       (line   6)
-* invoking 'gpic':                       Invoking gpic.       (line   6)
-* invoking 'grefer':                     Invoking grefer.     (line   6)
-* invoking 'grodvi':                     Invoking grodvi.     (line   6)
-* invoking 'groff':                      Invoking groff.      (line   6)
-* invoking 'grohtml':                    Invoking grohtml.    (line   6)
-* invoking 'grolbp':                     Invoking grolbp.     (line   6)
-* invoking 'grolj4':                     Invoking grolj4.     (line   6)
-* invoking 'gropdf':                     Invoking gropdf.     (line   6)
-* invoking 'grops':                      Invoking grops.      (line   6)
-* invoking 'grotty':                     Invoking grotty.     (line   6)
-* invoking 'gsoelim':                    Invoking gsoelim.    (line   6)
-* invoking 'gtbl':                       Invoking gtbl.       (line   6)
-* invoking 'gxditview':                  Invoking gxditview.  (line   6)
-* invoking 'preconv':                    Invoking preconv.    (line   6)
-* ISO 6249 SGR:                          Invoking grotty.     (line  50)
-* ISO 8859-1 (latin-1), input encoding:  Input Encodings.     (line  14)
-* ISO 8859-1 (latin-1), output encoding: Groff Options.       (line 254)
-* ISO 8859-15 (latin-9, latin-0), input encoding: Input Encodings.
-                                                              (line  28)
-* ISO 8859-2 (latin-2), input encoding:  Input Encodings.     (line  18)
-* ISO 8859-9 (latin-2), input encoding:  Input Encodings.     (line  23)
-* italic correction ('\/'):              Ligatures and Kerning.
-                                                              (line  80)
-* italic fonts ['man']:                  Man font macros.     (line  52)
-* italic glyph, correction after roman glyph ('\,'): Ligatures and Kerning.
-                                                              (line  91)
-* italic glyph, correction before roman glyph ('\/'): Ligatures and Kerning.
-                                                              (line  80)
-* justifying text:                       Manipulating Filling and Adjusting.
-                                                              (line   6)
-* justifying text ('rj'):                Manipulating Filling and Adjusting.
-                                                              (line 250)
-* keep:                                  Displays.            (line  18)
-* keep, floating:                        Displays.            (line  23)
-* keeps ['ms']:                          ms Displays and Keeps.
-                                                              (line   6)
-* keeps, and footnotes ['ms']:           ms Footnotes.        (line  24)
-* kerning and ligatures:                 Ligatures and Kerning.
-                                                              (line   6)
-* kerning enabled register ('.kern'):    Ligatures and Kerning.
-                                                              (line  42)
-* kerning, activating ('kern'):          Ligatures and Kerning.
-                                                              (line  42)
-* kerning, track:                        Ligatures and Kerning.
-                                                              (line  53)
-* landscape page orientation:            Paper Size.          (line   6)
-* last glyph, dimensions ('.w', '.cht', '.cdp', '.csk'): Environments.
-                                                              (line  95)
-* last-requested point size registers ('.psr', '.sr'): Fractional Type Sizes.
-                                                              (line  45)
-* latin-1 (ISO 8859-1), input encoding:  Input Encodings.     (line  14)
-* latin-1 (ISO 8859-1), output encoding: Groff Options.       (line 254)
-* latin-2 (ISO 8859-2), input encoding:  Input Encodings.     (line  18)
-* latin-2 (ISO 8859-9), input encoding:  Input Encodings.     (line  23)
-* latin-9 (latin-0, ISO 8859-15), input encoding: Input Encodings.
-                                                              (line  28)
-* layout, line:                          Line Layout.         (line   6)
-* layout, page:                          Page Layout.         (line   6)
-* 'lc' request, and glyph definitions:   Using Symbols.       (line 326)
-* leader character:                      Leaders.             (line  12)
-* leader character, and translations:    Character Translations.
-                                                              (line 169)
-* leader character, non-interpreted ('\a'): Leaders.          (line  18)
-* leader repetition character ('lc'):    Leaders.             (line  23)
-* leaders:                               Leaders.             (line   6)
-* leading:                               Sizes.               (line  17)
-* leading spaces:                        Filling and Adjusting.
-                                                              (line  10)
-* leading spaces macro ('lsm'):          Implicit Line Breaks.
-                                                              (line  15)
-* leading spaces macro ('lsm') <1>:      Leading Spaces Traps.
-                                                              (line   9)
-* leading spaces traps:                  Leading Spaces Traps.
-                                                              (line   6)
-* leading spaces with 'ds':              Strings.             (line  57)
-* left italic correction ('\,'):         Ligatures and Kerning.
-                                                              (line  91)
-* left margin ('po'):                    Line Layout.         (line  21)
-* left margin, how to move ['man']:      Man usage.           (line 106)
-* length of a string ('length'):         Strings.             (line 211)
-* length of line ('ll'):                 Line Layout.         (line  29)
-* length of page ('pl'):                 Page Layout.         (line  13)
-* length of previous line ('.n'):        Environments.        (line 110)
-* length of title line ('lt'):           Page Layout.         (line  67)
-* 'length' request, and copy-in mode:    Strings.             (line 211)
-* letters, form:                         I/O.                 (line 106)
-* level of warnings ('warn'):            Debugging.           (line 155)
-* ligature:                              Using Symbols.       (line   6)
-* ligatures and kerning:                 Ligatures and Kerning.
-                                                              (line   6)
-* ligatures enabled register ('.lg'):    Ligatures and Kerning.
-                                                              (line  24)
-* ligatures, activating ('lg'):          Ligatures and Kerning.
-                                                              (line  24)
-* limitations of '\b' escape:            Drawing Requests.    (line 239)
-* line break:                            Basics.              (line  48)
-* line break <1>:                        Implicit Line Breaks.
-                                                              (line   6)
-* line break <2>:                        Manipulating Filling and Adjusting.
-                                                              (line   6)
-* line break ('br'):                     Basics.              (line 118)
-* line breaks, with vertical space ['man']: Man usage.        (line 120)
-* line breaks, without vertical space ['man']: Man usage.     (line 124)
-* line control:                          Line Control.        (line   6)
-* line dimensions:                       Line Layout.         (line   6)
-* line drawing glyph:                    Drawing Requests.    (line  28)
-* line drawing glyph <1>:                Drawing Requests.    (line  50)
-* line indentation ('in'):               Line Layout.         (line  25)
-* line layout:                           Line Layout.         (line   6)
-* line length ('ll'):                    Line Layout.         (line  29)
-* line length register ('.l'):           Line Layout.         (line 158)
-* line length, previous ('.n'):          Environments.        (line 110)
-* line number, input, register ('.c', 'c.'): Built-in Registers.
-                                                              (line  77)
-* line number, output, register ('ln'):  Built-in Registers.  (line  82)
-* line numbers, printing ('nm'):         Miscellaneous.       (line  10)
-* line space, extra post-vertical ('\x'): Changing Type Sizes.
-                                                              (line 118)
-* line space, extra pre-vertical ('\x'): Changing Type Sizes. (line 109)
-* line spacing register ('.L'):          Manipulating Spacing.
-                                                              (line  75)
-* line spacing, post-vertical ('pvs'):   Changing Type Sizes. (line 122)
-* line thickness ('\D't ...''):          Drawing Requests.    (line 206)
-* line, blank:                           Implicit Line Breaks.
-                                                              (line  10)
-* line, drawing ('\D'l ...''):           Drawing Requests.    (line  80)
-* line, empty ('sp'):                    Basics.              (line  93)
-* line, horizontal, drawing ('\l'):      Drawing Requests.    (line  17)
-* line, implicit breaks:                 Implicit Line Breaks.
-                                                              (line   6)
-* line, input, continuation ('\'):       Line Control.        (line  36)
-* line, input, horizontal position, register ('hp'): Page Motions.
-                                                              (line 209)
-* line, input, horizontal position, saving ('\k'): Page Motions.
-                                                              (line 203)
-* line, interrupted:                     Line Control.        (line  36)
-* line, output, continuation ('\c'):     Line Control.        (line  36)
-* line, output, horizontal position, register ('.k'): Page Motions.
-                                                              (line 212)
-* line, vertical, drawing ('\L'):        Drawing Requests.    (line  50)
-* line-tabs mode:                        Tabs and Fields.     (line 138)
-* lines, blank, disabling:               Manipulating Spacing.
-                                                              (line 123)
-* lines, centering ('ce'):               Basics.              (line 105)
-* lines, centering ('ce') <1>:           Manipulating Filling and Adjusting.
-                                                              (line 204)
-* lines, consecutive hyphenated ('hlm'): Manipulating Hyphenation.
-                                                              (line  47)
-* lines, interrupted, and input line traps ('itc'): Input Line Traps.
-                                                              (line  24)
-* list:                                  Displays.            (line  13)
-* list of available glyphs ('groff_char(7)' man page): Using Symbols.
-                                                              (line  76)
-* 'll' request, using '+' and '-':       Expressions.         (line  75)
-* location, vertical, page, marking ('mk'): Page Motions.     (line  11)
-* location, vertical, page, returning to marked ('rt'): Page Motions.
-                                                              (line  11)
-* logical not, limitation in expression: Expressions.         (line  27)
-* logical operators:                     Expressions.         (line  19)
-* long names:                            Implementation Differences.
-                                                              (line   9)
-* loops and conditionals:                Conditionals and Loops.
-                                                              (line   6)
-* 'lq' glyph, and 'lq' string ['man']:   Predefined man strings.
-                                                              (line  22)
-* 'ls' request, alternative to ('pvs'):  Changing Type Sizes. (line 137)
-* 'lt' request, using '+' and '-':       Expressions.         (line  75)
-* 'm' unit:                              Measurements.        (line  50)
-* 'M' unit:                              Measurements.        (line  62)
-* machine unit ('u'):                    Measurements.        (line   6)
-* macro arguments:                       Request and Macro Arguments.
-                                                              (line   6)
-* macro arguments, and compatibility mode: Gtroff Internals.  (line  91)
-* macro arguments, and tabs:             Request and Macro Arguments.
-                                                              (line   6)
-* macro basics:                          Basics.              (line   6)
-* macro directories:                     Macro Directories.   (line   6)
-* macro files, searching:                Macro Directories.   (line  11)
-* macro name register ('\$0'):           Parameters.          (line  71)
-* macro names, starting with '[' or ']', and 'refer': Identifiers.
-                                                              (line  46)
-* macro packages:                        Macro Package Intro. (line   6)
-* macro packages <1>:                    Macro Packages.      (line   6)
-* macro packages, structuring the source code: Requests.      (line  14)
-* macro, appending ('am'):               Writing Macros.      (line 116)
-* macro, arguments ('\$'):               Parameters.          (line  21)
-* macro, creating alias ('als'):         Strings.             (line 229)
-* macro, end-of-input ('em'):            End-of-input Traps.  (line   7)
-* macro, removing ('rm'):                Strings.             (line 224)
-* macro, removing alias ('rm'):          Strings.             (line 263)
-* macro, renaming ('rn'):                Strings.             (line 221)
-* macros:                                Macros.              (line   6)
-* macros for manual pages ['man']:       Man usage.           (line   6)
-* macros, recursive:                     while.               (line  38)
-* macros, searching:                     Macro Directories.   (line   6)
-* macros, shared name space with strings and diversions: Strings.
-                                                              (line  92)
-* macros, tutorial for users:            Tutorial for Macro Users.
-                                                              (line   6)
-* macros, writing:                       Writing Macros.      (line   6)
-* magnification of a font ('fzoom'):     Changing Fonts.      (line  71)
-* major quotes:                          Displays.            (line  10)
-* major version number register ('.x'):  Built-in Registers.  (line  88)
-* 'man' macros:                          Man usage.           (line   6)
-* 'man' macros, bold face:               Man font macros.     (line  14)
-* 'man' macros, custom headers and footers: Optional man extensions.
-                                                              (line  12)
-* 'man' macros, default indentation:     Miscellaneous man macros.
-                                                              (line   6)
-* 'man' macros, empty space before a paragraph: Miscellaneous man macros.
-                                                              (line  15)
-* 'man' macros, hanging indentation:     Man usage.           (line  98)
-* 'man' macros, how to set fonts:        Man font macros.     (line   6)
-* 'man' macros, italic fonts:            Man font macros.     (line  52)
-* 'man' macros, line breaks with vertical space: Man usage.   (line 120)
-* 'man' macros, line breaks without vertical space: Man usage.
-                                                              (line 124)
-* 'man' macros, moving left margin:      Man usage.           (line 106)
-* 'man' macros, resetting default indentation: Man usage.     (line 127)
-* 'man' macros, tab stops:               Miscellaneous man macros.
-                                                              (line  10)
-* 'man' macros, Ultrix-specific:         Optional man extensions.
-                                                              (line  30)
-* man pages:                             man.                 (line   6)
-* manipulating filling and adjusting:    Manipulating Filling and Adjusting.
-                                                              (line   6)
-* manipulating hyphenation:              Manipulating Hyphenation.
-                                                              (line   6)
-* manipulating spacing:                  Manipulating Spacing.
-                                                              (line   6)
-* 'man'macros, BSD compatibility:        Miscellaneous man macros.
-                                                              (line  27)
-* 'man'macros, BSD compatibility <1>:    Miscellaneous man macros.
-                                                              (line  44)
-* manual pages:                          man.                 (line   6)
-* margin for hyphenation ('hym'):        Manipulating Hyphenation.
-                                                              (line 211)
-* margin glyph ('mc'):                   Miscellaneous.       (line  75)
-* margin, bottom:                        Page Layout.         (line  20)
-* margin, left ('po'):                   Line Layout.         (line  21)
-* margin, top:                           Page Layout.         (line  20)
-* mark, high-water, register ('.h'):     Diversions.          (line  76)
-* marking vertical page location ('mk'): Page Motions.        (line  11)
-* MathML:                                grohtml specific registers and strings.
-                                                              (line  23)
-* maximum values of Roman numerals:      Assigning Formats.   (line  59)
-* 'mdoc' macros:                         mdoc.                (line   6)
-* 'me' macro package:                    me.                  (line   6)
-* measurement unit:                      Measurements.        (line   6)
-* measurements:                          Measurements.        (line   6)
-* measurements, specifying safely:       Default Units.       (line  25)
-* minimum values of Roman numerals:      Assigning Formats.   (line  59)
-* minor version number register ('.y'):  Built-in Registers.  (line  92)
-* minutes, current time ('minutes'):     Built-in Registers.  (line  37)
-* 'mm' macro package:                    mm.                  (line   6)
-* mode for constant glyph space ('cs'):  Artificial Fonts.    (line 126)
-* mode, compatibility:                   Implementation Differences.
-                                                              (line   6)
-* mode, compatibility, and parameters:   Gtroff Internals.    (line  91)
-* mode, copy:                            Copy-in Mode.        (line   6)
-* mode, copy-in:                         Copy-in Mode.        (line   6)
-* mode, copy-in, and 'cf' request:       I/O.                 (line  50)
-* mode, copy-in, and 'device' request:   Postprocessor Access.
-                                                              (line  19)
-* mode, copy-in, and 'ig' request:       Comments.            (line  85)
-* mode, copy-in, and 'length' request:   Strings.             (line 211)
-* mode, copy-in, and macro arguments:    Parameters.          (line  21)
-* mode, copy-in, and 'output' request:   Diversions.          (line 179)
-* mode, copy-in, and 'tm' request:       Debugging.           (line  30)
-* mode, copy-in, and 'tm1' request:      Debugging.           (line  30)
-* mode, copy-in, and 'tmc' request:      Debugging.           (line  30)
-* mode, copy-in, and 'trf' request:      I/O.                 (line  50)
-* mode, copy-in, and 'write' request:    I/O.                 (line 212)
-* mode, copy-in, and 'writec' request:   I/O.                 (line 212)
-* mode, copy-in, and 'writem' request:   I/O.                 (line 225)
-* mode, copy-in, and '\!':               Diversions.          (line 148)
-* mode, copy-in, and '\?':               Operators in Conditionals.
-                                                              (line  55)
-* mode, copy-in, and '\?' <1>:           Diversions.          (line 148)
-* mode, copy-in, and '\a':               Leaders.             (line  18)
-* mode, copy-in, and '\E':               Character Translations.
-                                                              (line  81)
-* mode, copy-in, and '\t':               Tabs and Fields.     (line  10)
-* mode, copy-in, and '\V':               I/O.                 (line 249)
-* mode, fill:                            Implicit Line Breaks.
-                                                              (line  15)
-* mode, fill <1>:                        Manipulating Filling and Adjusting.
-                                                              (line 156)
-* mode, fill <2>:                        Warnings.            (line  23)
-* mode, fill ('fi'):                     Manipulating Filling and Adjusting.
-                                                              (line  29)
-* mode, fill, and '\c':                  Line Control.        (line  69)
-* mode, line-tabs:                       Tabs and Fields.     (line 138)
-* mode, no-fill ('nf'):                  Manipulating Filling and Adjusting.
-                                                              (line  39)
-* mode, no-fill, and '\c':               Line Control.        (line  60)
-* mode, no-space ('ns'):                 Manipulating Spacing.
-                                                              (line 123)
-* mode, nroff:                           Troff and Nroff Mode.
-                                                              (line   6)
-* mode, safer:                           Groff Options.       (line 214)
-* mode, safer <1>:                       Macro Directories.   (line  21)
-* mode, safer <2>:                       Built-in Registers.  (line  23)
-* mode, safer <3>:                       I/O.                 (line  32)
-* mode, safer <4>:                       I/O.                 (line 147)
-* mode, safer <5>:                       I/O.                 (line 168)
-* mode, safer <6>:                       I/O.                 (line 206)
-* mode, troff:                           Troff and Nroff Mode.
-                                                              (line   6)
-* mode, unsafe:                          Groff Options.       (line 292)
-* mode, unsafe <1>:                      Macro Directories.   (line  21)
-* mode, unsafe <2>:                      Built-in Registers.  (line  23)
-* mode, unsafe <3>:                      I/O.                 (line  32)
-* mode, unsafe <4>:                      I/O.                 (line 147)
-* mode, unsafe <5>:                      I/O.                 (line 168)
-* mode, unsafe <6>:                      I/O.                 (line 206)
-* modifying requests:                    Requests.            (line  61)
-* 'mom' macro package:                   mom.                 (line   6)
-* month of the year register ('mo'):     Built-in Registers.  (line  51)
-* motion operators:                      Expressions.         (line  65)
-* motion, horizontal ('\h'):             Page Motions.        (line 103)
-* motion, vertical ('\v'):               Page Motions.        (line  78)
-* motions, page:                         Page Motions.        (line   6)
-* mounting font ('fp'):                  Font Positions.      (line  13)
-* 'ms' macros:                           ms.                  (line   6)
-* 'ms' macros, accent marks:             ms Strings and Special Characters.
-                                                              (line   6)
-* 'ms' macros, body text:                ms Body Text.        (line   6)
-* 'ms' macros, cover page:               ms Cover Page Macros.
-                                                              (line   6)
-* 'ms' macros, creating table of contents: ms TOC.            (line   6)
-* 'ms' macros, differences from AT&T:    Differences from AT&T ms.
-                                                              (line   6)
-* 'ms' macros, displays:                 ms Displays and Keeps.
-                                                              (line   6)
-* 'ms' macros, document control registers: ms Document Control Registers.
-                                                              (line   6)
-* 'ms' macros, equations:                ms Insertions.       (line   6)
-* 'ms' macros, figures:                  ms Insertions.       (line   6)
-* 'ms' macros, footers:                  ms Headers and Footers.
-                                                              (line   6)
-* 'ms' macros, footnotes:                ms Footnotes.        (line   6)
-* 'ms' macros, general structure:        General ms Structure.
-                                                              (line   6)
-* 'ms' macros, headers:                  ms Headers and Footers.
-                                                              (line   6)
-* 'ms' macros, headings:                 Headings in ms.      (line   6)
-* 'ms' macros, highlighting:             Highlighting in ms.  (line   6)
-* 'ms' macros, keeps:                    ms Displays and Keeps.
-                                                              (line   6)
-* 'ms' macros, lists:                    Lists in ms.         (line   6)
-* 'ms' macros, margins:                  ms Margins.          (line   6)
-* 'ms' macros, multiple columns:         ms Multiple Columns. (line   6)
-* 'ms' macros, naming conventions:       Naming Conventions.  (line   6)
-* 'ms' macros, nested lists:             Lists in ms.         (line 122)
-* 'ms' macros, page layout:              ms Page Layout.      (line   6)
-* 'ms' macros, paragraph handling:       Paragraphs in ms.    (line   6)
-* 'ms' macros, references:               ms Insertions.       (line   6)
-* 'ms' macros, special characters:       ms Strings and Special Characters.
-                                                              (line   6)
-* 'ms' macros, strings:                  ms Strings and Special Characters.
-                                                              (line   6)
-* 'ms' macros, tables:                   ms Insertions.       (line   6)
-* multi-file documents:                  Debugging.           (line  10)
-* multi-line strings:                    Strings.             (line  63)
-* multi-page table, example markup ['ms']: Example multi-page table.
-                                                              (line   6)
-* multiple columns ['ms']:               ms Multiple Columns. (line   6)
-* 'n' unit:                              Measurements.        (line  55)
-* name space, common, of macros, diversions, and strings: Strings.
-                                                              (line  92)
-* name, background color, register ('.M'): Colors.            (line  94)
-* name, drawing color, register ('.m'):  Colors.              (line  67)
-* name, fill color, register ('.M'):     Colors.              (line  94)
-* named character ('\C'):                Using Symbols.       (line 185)
-* names, long:                           Implementation Differences.
-                                                              (line   9)
-* naming conventions, 'ms' macros:       Naming Conventions.  (line   6)
-* 'ne' request, and the '.trunc' register: Page Location Traps.
-                                                              (line 131)
-* 'ne' request, comparison with 'sv':    Page Control.        (line  53)
-* negating register values:              Setting Registers.   (line  78)
-* nested assignments:                    Interpolating Registers.
-                                                              (line  11)
-* nested diversions:                     Diversions.          (line  69)
-* nested lists ['ms']:                   Lists in ms.         (line 122)
-* new page ('bp'):                       Basics.              (line  91)
-* new page ('bp') <1>:                   Page Control.        (line  10)
-* newline character:                     Identifiers.         (line  10)
-* newline character <1>:                 Escapes.             (line  69)
-* newline character, and translations:   Character Translations.
-                                                              (line 169)
-* newline character, in strings, escaping: Strings.           (line  63)
-* newline, final, stripping in diversions: Strings.           (line 157)
-* next file, processing ('nx'):          I/O.                 (line  84)
-* next free font position register ('.fp'): Font Positions.   (line  30)
-* 'nf' request, causing implicit linebreak: Manipulating Filling and Adjusting.
-                                                              (line   6)
-* 'nl' register, and '.d':               Diversions.          (line  69)
-* 'nl' register, difference to '.h':     Diversions.          (line  88)
-* 'nm' request, using '+' and '-':       Expressions.         (line  75)
-* no-break control character ('''):      Requests.            (line   6)
-* no-break control character, changing ('c2'): Character Translations.
-                                                              (line   6)
-* no-fill mode ('nf'):                   Manipulating Filling and Adjusting.
-                                                              (line  39)
-* no-fill mode, and '\c':                Line Control.        (line  60)
-* no-space mode ('ns'):                  Manipulating Spacing.
-                                                              (line 123)
-* node, output:                          Gtroff Internals.    (line   6)
-* 'nr' request, and warnings:            Warnings.            (line  61)
-* 'nr' request, using '+' and '-':       Expressions.         (line  75)
-* nroff mode:                            Troff and Nroff Mode.
-                                                              (line   6)
-* 'nroff', the program:                  History.             (line  22)
-* number of arguments register ('.$'):   Parameters.          (line  10)
-* number of registers register ('.R'):   Built-in Registers.  (line  18)
-* number register, creating alias ('aln'): Setting Registers. (line 112)
-* number register, removing ('rr'):      Setting Registers.   (line 104)
-* number register, renaming ('rnn'):     Setting Registers.   (line 108)
-* number registers, dumping ('pnr'):     Debugging.           (line  77)
-* number, input line, setting ('lf'):    Debugging.           (line  10)
-* number, page ('pn'):                   Page Layout.         (line  84)
-* numbered glyph ('\N'):                 Character Translations.
-                                                              (line 160)
-* numbered glyph ('\N') <1>:             Using Symbols.       (line 201)
-* numbered list, example markup ['ms']:  Lists in ms.         (line  41)
-* numbers, and delimiters:               Escapes.             (line  65)
-* numbers, line, printing ('nm'):        Miscellaneous.       (line  10)
-* numerals, Roman:                       Assigning Formats.   (line  32)
-* numeric expression, valid:             Expressions.         (line  83)
-* offset, page ('po'):                   Line Layout.         (line  21)
-* 'open' request, and safer mode:        Groff Options.       (line 214)
-* 'opena' request, and safer mode:       Groff Options.       (line 214)
-* opening file ('open'):                 I/O.                 (line 200)
-* operator, scaling:                     Expressions.         (line  54)
-* operators, arithmetic:                 Expressions.         (line   8)
-* operators, as delimiters:              Escapes.             (line  67)
-* operators, comparison:                 Expressions.         (line  15)
-* operators, extremum ('>?', '<?'):      Expressions.         (line  44)
-* operators, logical:                    Expressions.         (line  19)
-* operators, motion:                     Expressions.         (line  65)
-* operators, unary:                      Expressions.         (line  21)
-* optical size of a font:                Changing Fonts.      (line  71)
-* options:                               Groff Options.       (line   6)
-* order of evaluation in expressions:    Expressions.         (line  59)
-* orientation, landscape:                Paper Size.          (line   6)
-* orphan lines, preventing with 'ne':    Page Control.        (line  33)
-* 'os' request, and no-space mode:       Page Control.        (line  63)
-* output and input requests:             I/O.                 (line   6)
-* output device name string register ('.T'): Groff Options.   (line 281)
-* output device name string register ('.T') <1>: Built-in Registers.
-                                                              (line 127)
-* output device usage number register ('.T'): Groff Options.  (line 281)
-* output devices:                        Output device intro. (line   6)
-* output devices <1>:                    Output Devices.      (line   6)
-* output encoding, ASCII:                Groff Options.       (line 250)
-* output encoding, cp1047:               Groff Options.       (line 264)
-* output encoding, EBCDIC:               Groff Options.       (line 264)
-* output encoding, latin-1 (ISO 8859-1): Groff Options.       (line 254)
-* output encoding, utf-8:                Groff Options.       (line 259)
-* output glyphs, and input characters,compatibility with AT&T 'troff': Implementation Differences.
-                                                              (line  86)
-* output line number register ('ln'):    Built-in Registers.  (line  82)
-* output line, continuation ('\c'):      Line Control.        (line  36)
-* output line, horizontal position, register ('.k'): Page Motions.
-                                                              (line 212)
-* output node:                           Gtroff Internals.    (line   6)
-* 'output' request, and copy-in mode:    Diversions.          (line 179)
-* 'output' request, and '\!':            Diversions.          (line 179)
-* output, flush ('fl'):                  Debugging.           (line  87)
-* output, 'gtroff':                      gtroff Output.       (line   6)
-* output, intermediate:                  gtroff Output.       (line  16)
-* output, suppressing ('\O'):            Suppressing output.  (line   7)
-* output, transparent ('cf', 'trf'):     I/O.                 (line  50)
-* output, transparent ('\!', '\?'):      Diversions.          (line 136)
-* output, transparent, incompatibilities with AT&T 'troff': Implementation Differences.
-                                                              (line 106)
-* output, troff:                         gtroff Output.       (line  16)
-* overlapping characters:                Using Symbols.       (line 265)
-* overstriking glyphs ('\o'):            Page Motions.        (line 216)
-* 'p' unit:                              Measurements.        (line  30)
-* 'P' unit:                              Measurements.        (line  34)
-* packages, macros:                      Macro Packages.      (line   6)
-* padding character, for fields ('fc'):  Fields.              (line   6)
-* page break, conditional ('ne'):        Page Control.        (line  33)
-* page control:                          Page Control.        (line   6)
-* page ejecting register ('.pe'):        Page Location Traps. (line 143)
-* page footers:                          Page Location Traps. (line  38)
-* page headers:                          Page Location Traps. (line  38)
-* page layout:                           Page Layout.         (line   6)
-* page layout ['ms']:                    ms Page Layout.      (line   6)
-* page length ('pl'):                    Page Layout.         (line  13)
-* page length register ('.p'):           Page Layout.         (line  17)
-* page location traps:                   Page Location Traps. (line   6)
-* page location, vertical, marking ('mk'): Page Motions.      (line  11)
-* page location, vertical, returning to marked ('rt'): Page Motions.
-                                                              (line  11)
-* page motions:                          Page Motions.        (line   6)
-* page number ('pn'):                    Page Layout.         (line  84)
-* page number character ('%'):           Page Layout.         (line  35)
-* page number character, changing ('pc'): Page Layout.        (line  94)
-* page number register ('%'):            Page Control.        (line  27)
-* page offset ('po'):                    Line Layout.         (line  21)
-* page orientation, landscape:           Paper Size.          (line   6)
-* page, new ('bp'):                      Page Control.        (line  10)
-* paper formats:                         Paper Formats.       (line   6)
-* paper size:                            Paper Size.          (line   6)
-* paragraphs:                            Paragraphs.          (line   6)
-* parameters:                            Parameters.          (line   6)
-* parameters, and compatibility mode:    Gtroff Internals.    (line  91)
-* parentheses:                           Expressions.         (line  59)
-* path, for font files:                  Font Directories.    (line  14)
-* path, for tmac files:                  Macro Directories.   (line  11)
-* patterns for hyphenation ('hpf'):      Manipulating Hyphenation.
-                                                              (line 116)
-* PDF, embedding:                        Embedding PDF.       (line   6)
-* 'pi' request, and 'groff':             I/O.                 (line 159)
-* 'pi' request, and safer mode:          Groff Options.       (line 214)
-* 'pic', the program:                    gpic.                (line   6)
-* pica unit ('P'):                       Measurements.        (line  34)
-* pile, glyph ('\b'):                    Drawing Requests.    (line 232)
-* 'pl' request, using '+' and '-':       Expressions.         (line  75)
-* planting a trap:                       Traps.               (line  11)
-* platform-specific directory:           Macro Directories.   (line  26)
-* 'pn' request, using '+' and '-':       Expressions.         (line  75)
-* PNG image generation from PostScript:  DESC File Format.    (line  29)
-* 'po' request, using '+' and '-':       Expressions.         (line  75)
-* point size registers ('.s', '.ps'):    Changing Type Sizes. (line  20)
-* point size registers, last-requested ('.psr', '.sr'): Fractional Type Sizes.
-                                                              (line  45)
-* point sizes, changing ('ps', '\s'):    Changing Type Sizes. (line  11)
-* point sizes, fractional:               Fractional Type Sizes.
-                                                              (line   6)
-* point sizes, fractional <1>:           Implementation Differences.
-                                                              (line  76)
-* point unit ('p'):                      Measurements.        (line  30)
-* polygon, drawing ('\D'p ...''):        Drawing Requests.    (line 158)
-* polygon, solid, drawing ('\D'P ...''): Drawing Requests.    (line 167)
-* position of lowest text line ('.h'):   Diversions.          (line  76)
-* position, absolute, operator ('|'):    Expressions.         (line  70)
-* position, horizontal input line, saving ('\k'): Page Motions.
-                                                              (line 203)
-* position, horizontal, in input line, register ('hp'): Page Motions.
-                                                              (line 209)
-* position, horizontal, in output line, register ('.k'): Page Motions.
-                                                              (line 212)
-* position, vertical, current ('nl'):    Page Control.        (line  67)
-* position, vertical, in diversion, register ('.d'): Diversions.
-                                                              (line  69)
-* positions, font:                       Font Positions.      (line   6)
-* post-vertical line spacing:            Changing Type Sizes. (line 122)
-* post-vertical line spacing register ('.pvs'): Changing Type Sizes.
-                                                              (line 137)
-* post-vertical line spacing, changing ('pvs'): Changing Type Sizes.
-                                                              (line 137)
-* postprocessor access:                  Postprocessor Access.
-                                                              (line   6)
-* postprocessors:                        Output device intro. (line   6)
-* PostScript fonts:                      Font Families.       (line  11)
-* PostScript, bounding box:              Miscellaneous.       (line 139)
-* PostScript, embedding:                 Embedding PostScript.
-                                                              (line   6)
-* PostScript, PNG image generation:      DESC File Format.    (line  29)
-* 'preconv', invoking:                   Invoking preconv.    (line   5)
-* 'preconv', the program:                preconv.             (line   6)
-* prefix, for commands:                  Environment.         (line  14)
-* preprocessor, calling convention:      Preprocessors in man pages.
-                                                              (line   6)
-* preprocessors:                         Preprocessor Intro.  (line   6)
-* preprocessors <1>:                     Preprocessors.       (line   6)
-* previous font ('ft', '\f[]', '\fP'):   Changing Fonts.      (line  23)
-* previous line length ('.n'):           Environments.        (line 110)
-* print current page register ('.P'):    Groff Options.       (line 171)
-* printing backslash ('\\', '\e', '\E', '\[rs]'): Escapes.    (line  74)
-* printing backslash ('\\', '\e', '\E', '\[rs]') <1>: Implementation Differences.
-                                                              (line 106)
-* printing line numbers ('nm'):          Miscellaneous.       (line  10)
-* printing to stderr ('tm', 'tm1', 'tmc'): Debugging.         (line  27)
-* printing, zero-width ('\z', '\Z'):     Page Motions.        (line 220)
-* printing, zero-width ('\z', '\Z') <1>: Page Motions.        (line 224)
-* process ID of 'gtroff' register ('$$'): Built-in Registers. (line  99)
-* processing next file ('nx'):           I/O.                 (line  84)
-* properties of characters ('cflags'):   Using Symbols.       (line 237)
-* properties of glyphs ('cflags'):       Using Symbols.       (line 237)
-* 'ps' request, and constant glyph space mode: Artificial Fonts.
-                                                              (line 126)
-* 'ps' request, incompatibilities with AT&T 'troff': Implementation Differences.
-                                                              (line  76)
-* 'ps' request, using '+' and '-':       Expressions.         (line  75)
-* 'ps' request, with fractional type sizes: Fractional Type Sizes.
-                                                              (line   6)
-* 'pso' request, and safer mode:         Groff Options.       (line 214)
-* 'pvs' request, using '+' and '-':      Expressions.         (line  75)
-* quotes, major:                         Displays.            (line  10)
-* quotes, trailing:                      Strings.             (line  57)
-* 'radicalex' glyph, and 'cflags':       Using Symbols.       (line 265)
-* ragged-left:                           Manipulating Filling and Adjusting.
-                                                              (line  63)
-* ragged-right:                          Manipulating Filling and Adjusting.
-                                                              (line  59)
-* 'rc' request, and glyph definitions:   Using Symbols.       (line 326)
-* read-only register, changing format:   Assigning Formats.   (line  68)
-* reading from standard input ('rd'):    I/O.                 (line  89)
-* recursive macros:                      while.               (line  38)
-* 'refer', and macro names starting with '[' or ']': Identifiers.
-                                                              (line  46)
-* 'refer', the program:                  grefer.              (line   6)
-* reference, 'gtroff':                   gtroff Reference.    (line   6)
-* references ['ms']:                     ms Insertions.       (line   6)
-* register, creating alias ('aln'):      Setting Registers.   (line 112)
-* register, format ('\g'):               Assigning Formats.   (line  75)
-* register, removing ('rr'):             Setting Registers.   (line 104)
-* register, renaming ('rnn'):            Setting Registers.   (line 108)
-* registers:                             Registers.           (line   6)
-* registers specific to 'grohtml':       grohtml specific registers and strings.
-                                                              (line   6)
-* registers, built-in:                   Built-in Registers.  (line   6)
-* registers, interpolating ('\n'):       Interpolating Registers.
-                                                              (line   6)
-* registers, number of, register ('.R'): Built-in Registers.  (line  18)
-* registers, setting ('nr', '\R'):       Setting Registers.   (line   6)
-* removing alias, for diversion ('rm'):  Strings.             (line 263)
-* removing alias, for macro ('rm'):      Strings.             (line 263)
-* removing alias, for string ('rm'):     Strings.             (line 263)
-* removing diversion ('rm'):             Strings.             (line 224)
-* removing glyph definition ('rchar', 'rfschar'): Using Symbols.
-                                                              (line 382)
-* removing macro ('rm'):                 Strings.             (line 224)
-* removing number register ('rr'):       Setting Registers.   (line 104)
-* removing request ('rm'):               Strings.             (line 224)
-* removing string ('rm'):                Strings.             (line 224)
-* renaming diversion ('rn'):             Strings.             (line 221)
-* renaming macro ('rn'):                 Strings.             (line 221)
-* renaming number register ('rnn'):      Setting Registers.   (line 108)
-* renaming request ('rn'):               Strings.             (line 221)
-* renaming string ('rn'):                Strings.             (line 221)
-* request arguments:                     Request and Macro Arguments.
-                                                              (line   6)
-* request arguments, and compatibility mode: Gtroff Internals.
-                                                              (line  91)
-* request, removing ('rm'):              Strings.             (line 224)
-* request, renaming ('rn'):              Strings.             (line 221)
-* request, undefined:                    Comments.            (line  25)
-* requests:                              Requests.            (line   6)
-* requests for drawing:                  Drawing Requests.    (line   6)
-* requests for input and output:         I/O.                 (line   6)
-* requests, modifying:                   Requests.            (line  61)
-* resolution, device:                    DESC File Format.    (line  85)
-* resolution, horizontal:                DESC File Format.    (line  25)
-* resolution, horizontal, register ('.H'): Built-in Registers.
-                                                              (line  15)
-* resolution, vertical:                  DESC File Format.    (line 135)
-* resolution, vertical, register ('.V'): Built-in Registers.  (line  28)
-* returning to marked vertical page location ('rt'): Page Motions.
-                                                              (line  11)
-* revision number register ('.Y'):       Built-in Registers.  (line  96)
-* 'rf', the program:                     History.             (line   6)
-* right-justifying ('rj'):               Manipulating Filling and Adjusting.
-                                                              (line 250)
-* 'rj' request, causing implicit linebreak: Manipulating Filling and Adjusting.
-                                                              (line   6)
-* 'rn' glyph, and 'cflags':              Using Symbols.       (line 265)
-* 'roff', the program:                   History.             (line  17)
-* roman glyph, correction after italic glyph ('\/'): Ligatures and Kerning.
-                                                              (line  80)
-* roman glyph, correction before italic glyph ('\,'): Ligatures and Kerning.
-                                                              (line  91)
-* Roman numerals:                        Assigning Formats.   (line  32)
-* Roman numerals, maximum and minimum:   Assigning Formats.   (line  59)
-* 'rq' glyph, and 'rq' string ['man']:   Predefined man strings.
-                                                              (line  22)
-* 'rq' glyph, at end of sentence:        Sentences.           (line  18)
-* 'rq' glyph, at end of sentence <1>:    Using Symbols.       (line 275)
-* 'rt' request, using '+' and '-':       Expressions.         (line  75)
-* 'ru' glyph, and 'cflags':              Using Symbols.       (line 265)
-* 'RUNOFF', the program:                 History.             (line   6)
-* 's' unit:                              Measurements.        (line  40)
-* 's' unit <1>:                          Fractional Type Sizes.
-                                                              (line   6)
-* safer mode:                            Groff Options.       (line 214)
-* safer mode <1>:                        Macro Directories.   (line  21)
-* safer mode <2>:                        Built-in Registers.  (line  23)
-* safer mode <3>:                        I/O.                 (line  32)
-* safer mode <4>:                        I/O.                 (line 147)
-* safer mode <5>:                        I/O.                 (line 168)
-* safer mode <6>:                        I/O.                 (line 206)
-* saving horizontal input line position ('\k'): Page Motions. (line 203)
-* scaling indicator:                     Measurements.        (line   6)
-* scaling operator:                      Expressions.         (line  54)
-* searching fonts:                       Font Directories.    (line   6)
-* searching macro files:                 Macro Directories.   (line  11)
-* searching macros:                      Macro Directories.   (line   6)
-* seconds, current time ('seconds'):     Built-in Registers.  (line  31)
-* sentence space:                        Sentences.           (line  12)
-* sentence space size register ('.sss'): Manipulating Filling and Adjusting.
-                                                              (line 151)
-* sentences:                             Sentences.           (line   6)
-* setting diversion trap ('dt'):         Diversion Traps.     (line   7)
-* setting end-of-input trap ('em'):      End-of-input Traps.  (line   7)
-* setting input line number ('lf'):      Debugging.           (line  10)
-* setting input line trap ('it'):        Input Line Traps.    (line   8)
-* setting registers ('nr', '\R'):        Setting Registers.   (line   6)
-* shading filled objects ('\D'f ...''):  Drawing Requests.    (line 141)
-* 'shc' request, and translations:       Character Translations.
-                                                              (line 173)
-* site-specific directory:               Macro Directories.   (line  26)
-* site-specific directory <1>:           Font Directories.    (line  29)
-* size of sentence space register ('.sss'): Manipulating Filling and Adjusting.
-                                                              (line 151)
-* size of type:                          Sizes.               (line   6)
-* size of word space register ('.ss'):   Manipulating Filling and Adjusting.
-                                                              (line 151)
-* size, optical, of a font:              Changing Fonts.      (line  71)
-* size, paper:                           Paper Size.          (line   6)
-* sizes:                                 Sizes.               (line   6)
-* sizes, fractional:                     Fractional Type Sizes.
-                                                              (line   6)
-* sizes, fractional <1>:                 Implementation Differences.
-                                                              (line  76)
-* skew, of last glyph ('.csk'):          Environments.        (line  95)
-* slant, font, changing ('\S'):          Artificial Fonts.    (line  45)
-* 'soelim', the program:                 gsoelim.             (line   6)
-* soft hyphen character, setting ('shc'): Manipulating Hyphenation.
-                                                              (line 243)
-* soft hyphen glyph ('hy'):              Manipulating Hyphenation.
-                                                              (line 243)
-* solid circle, drawing ('\D'C ...''):   Drawing Requests.    (line 114)
-* solid ellipse, drawing ('\D'E ...''):  Drawing Requests.    (line 124)
-* solid polygon, drawing ('\D'P ...''):  Drawing Requests.    (line 167)
-* 'sp' request, and no-space mode:       Manipulating Spacing.
-                                                              (line 123)
-* 'sp' request, and traps:               Manipulating Spacing.
-                                                              (line  53)
-* 'sp' request, causing implicit linebreak: Manipulating Filling and Adjusting.
-                                                              (line   6)
-* space between sentences:               Sentences.           (line  12)
-* space between sentences register ('.sss'): Manipulating Filling and Adjusting.
-                                                              (line 151)
-* space between words register ('.ss'):  Manipulating Filling and Adjusting.
-                                                              (line 151)
-* space character:                       Escapes.             (line  69)
-* space character, zero width ('\&'):    Requests.            (line  47)
-* space character, zero width ('\&') <1>: Ligatures and Kerning.
-                                                              (line  47)
-* space character, zero width ('\&') <2>: Drawing Requests.   (line  32)
-* space characters, in expressions:      Expressions.         (line  86)
-* space, discardable, horizontal:        Manipulating Filling and Adjusting.
-                                                              (line 183)
-* space, discarded, in traps:            Manipulating Spacing.
-                                                              (line  53)
-* space, horizontal ('\h'):              Page Motions.        (line 103)
-* space, horizontal, unformatting:       Strings.             (line 157)
-* space, unbreakable:                    Page Motions.        (line 114)
-* space, vertical, unit ('v'):           Measurements.        (line  58)
-* space, width of a digit ('\0'):        Page Motions.        (line 138)
-* spaces with 'ds':                      Strings.             (line  57)
-* spaces, in a macro argument:           Request and Macro Arguments.
-                                                              (line  10)
-* spaces, leading and trailing:          Filling and Adjusting.
-                                                              (line  10)
-* spacing:                               Basics.              (line  82)
-* spacing, manipulating:                 Manipulating Spacing.
-                                                              (line   6)
-* spacing, vertical:                     Sizes.               (line   6)
-* special characters:                    Character Translations.
-                                                              (line 160)
-* special characters <1>:                Special Characters.  (line   6)
-* special characters ['ms']:             ms Strings and Special Characters.
-                                                              (line   6)
-* special fonts:                         Using Symbols.       (line  14)
-* special fonts <1>:                     Special Fonts.       (line   6)
-* special fonts <2>:                     Font File Format.    (line  28)
-* special fonts, emboldening:            Artificial Fonts.    (line 115)
-* 'special' request, and font translations: Changing Fonts.   (line  55)
-* 'special' request, and glyph search order: Using Symbols.   (line  14)
-* spline, drawing ('\D'~ ...''):         Drawing Requests.    (line 136)
-* springing a trap:                      Traps.               (line  11)
-* 'sqrtex' glyph, and 'cflags':          Using Symbols.       (line 265)
-* stacking glyphs ('\b'):                Drawing Requests.    (line 232)
-* standard input, reading from ('rd'):   I/O.                 (line  89)
-* stderr, printing to ('tm', 'tm1', 'tmc'): Debugging.        (line  27)
-* stops, tabulator:                      Tab Stops.           (line   6)
-* string arguments:                      Strings.             (line  19)
-* string comparison:                     Operators in Conditionals.
-                                                              (line  47)
-* string expansion ('\*'):               Strings.             (line  19)
-* string interpolation ('\*'):           Strings.             (line  19)
-* string, appending ('as'):              Strings.             (line 176)
-* string, creating alias ('als'):        Strings.             (line 229)
-* string, length of ('length'):          Strings.             (line 211)
-* string, removing ('rm'):               Strings.             (line 224)
-* string, removing alias ('rm'):         Strings.             (line 263)
-* string, renaming ('rn'):               Strings.             (line 221)
-* strings:                               Strings.             (line   6)
-* strings specific to 'grohtml':         grohtml specific registers and strings.
-                                                              (line   6)
-* strings ['ms']:                        ms Strings and Special Characters.
-                                                              (line   6)
-* strings, multi-line:                   Strings.             (line  63)
-* strings, shared name space with macros and diversions: Strings.
-                                                              (line  92)
-* stripping final newline in diversions: Strings.             (line 157)
-* structuring source code of documents or macro packages: Requests.
-                                                              (line  14)
-* 'sty' request, and changing fonts:     Changing Fonts.      (line  11)
-* 'sty' request, and font positions:     Font Positions.      (line  60)
-* 'sty' request, and font translations:  Changing Fonts.      (line  55)
-* styles, font:                          Font Families.       (line   6)
-* substring ('substring'):               Strings.             (line 192)
-* suppressing output ('\O'):             Suppressing output.  (line   7)
-* 'sv' request, and no-space mode:       Page Control.        (line  63)
-* switching environments ('ev'):         Environments.        (line  39)
-* 'sy' request, and safer mode:          Groff Options.       (line 214)
-* symbol:                                Using Symbols.       (line  14)
-* symbol table, dumping ('pm'):          Debugging.           (line  66)
-* symbol, defining ('char'):             Using Symbols.       (line 326)
-* symbols, using:                        Using Symbols.       (line   6)
-* 'system()' return value register ('systat'): I/O.           (line 195)
-* tab character:                         Tab Stops.           (line   6)
-* tab character <1>:                     Escapes.             (line  69)
-* tab character, and translations:       Character Translations.
-                                                              (line 169)
-* tab character, non-interpreted ('\t'): Tabs and Fields.     (line  10)
-* tab repetition character ('tc'):       Tabs and Fields.     (line 129)
-* tab settings register ('.tabs'):       Tabs and Fields.     (line 117)
-* tab stops:                             Tab Stops.           (line   6)
-* tab stops ['man']:                     Miscellaneous man macros.
-                                                              (line  10)
-* tab stops, for TTY output devices:     Tabs and Fields.     (line 115)
-* tab, line-tabs mode:                   Tabs and Fields.     (line 138)
-* table of contents:                     Table of Contents.   (line   6)
-* table of contents <1>:                 Leaders.             (line  29)
-* table of contents, creating ['ms']:    ms TOC.              (line   6)
-* tables ['ms']:                         ms Insertions.       (line   6)
-* tabs, and fields:                      Tabs and Fields.     (line   6)
-* tabs, and macro arguments:             Request and Macro Arguments.
-                                                              (line   6)
-* tabs, before comments:                 Comments.            (line  21)
-* 'tbl', the program:                    gtbl.                (line   6)
-* Teletype:                              Invoking grotty.     (line  50)
-* terminal control sequences:            Invoking grotty.     (line  50)
-* terminal, conditional output for:      Operators in Conditionals.
-                                                              (line  14)
-* text line, position of lowest ('.h'):  Diversions.          (line  76)
-* text, 'gtroff' processing:             Text.                (line   6)
-* text, justifying:                      Manipulating Filling and Adjusting.
-                                                              (line   6)
-* text, justifying ('rj'):               Manipulating Filling and Adjusting.
-                                                              (line 250)
-* thickness of lines ('\D't ...''):      Drawing Requests.    (line 206)
-* three-part title ('tl'):               Page Layout.         (line  35)
-* 'ti' request, causing implicit linebreak: Manipulating Filling and Adjusting.
-                                                              (line   6)
-* 'ti' request, using '+' and '-':       Expressions.         (line  75)
-* time, current:                         I/O.                 (line 175)
-* time, current, hours ('hours'):        Built-in Registers.  (line  41)
-* time, current, minutes ('minutes'):    Built-in Registers.  (line  37)
-* time, current, seconds ('seconds'):    Built-in Registers.  (line  31)
-* title line ('tl'):                     Page Layout.         (line  35)
-* title line length register ('.lt'):    Page Layout.         (line  67)
-* title line, length ('lt'):             Page Layout.         (line  67)
-* title page, example markup:            ms Cover Page Macros.
-                                                              (line  66)
-* titles:                                Page Layout.         (line  31)
-* 'tkf' request, and font styles:        Font Families.       (line  59)
-* 'tkf' request, and font translations:  Changing Fonts.      (line  55)
-* 'tkf' request, with fractional type sizes: Fractional Type Sizes.
-                                                              (line   6)
-* 'tl' request, and 'mc':                Miscellaneous.       (line 102)
-* 'tm' request, and copy-in mode:        Debugging.           (line  30)
-* 'tm1' request, and copy-in mode:       Debugging.           (line  30)
-* tmac, directory:                       Macro Directories.   (line  11)
-* tmac, path:                            Macro Directories.   (line  11)
-* 'tmc' request, and copy-in mode:       Debugging.           (line  30)
-* TMPDIR, environment variable:          Environment.         (line  44)
-* token, input:                          Gtroff Internals.    (line   6)
-* top margin:                            Page Layout.         (line  20)
-* top-level diversion:                   Diversions.          (line  12)
-* top-level diversion, and 'bp':         Page Control.        (line  24)
-* top-level diversion, and '\!':         Diversions.          (line 171)
-* top-level diversion, and '\?':         Diversions.          (line 176)
-* 'tr' request, and glyph definitions:   Using Symbols.       (line 326)
-* 'tr' request, and soft hyphen character: Manipulating Hyphenation.
-                                                              (line 243)
-* 'tr' request, incompatibilities with AT&T 'troff': Implementation Differences.
-                                                              (line  86)
-* track kerning:                         Ligatures and Kerning.
-                                                              (line  53)
-* track kerning, activating ('tkf'):     Ligatures and Kerning.
-                                                              (line  60)
-* trailing quotes:                       Strings.             (line  57)
-* trailing spaces:                       Filling and Adjusting.
-                                                              (line  10)
-* translations of characters:            Character Translations.
-                                                              (line   6)
-* transparent characters:                Sentences.           (line  18)
-* transparent characters <1>:            Using Symbols.       (line 275)
-* transparent output ('cf', 'trf'):      I/O.                 (line  50)
-* transparent output ('\!', '\?'):       Diversions.          (line 136)
-* transparent output, incompatibilities with AT&T 'troff': Implementation Differences.
-                                                              (line 106)
-* trap, changing location ('ch'):        Page Location Traps. (line 111)
-* trap, distance, register ('.t'):       Page Location Traps. (line 102)
-* trap, diversion, setting ('dt'):       Diversion Traps.     (line   7)
-* trap, end-of-input, setting ('em'):    End-of-input Traps.  (line   7)
-* trap, input line, setting ('it'):      Input Line Traps.    (line   8)
-* trap, planting:                        Traps.               (line  11)
-* trap, springing:                       Traps.               (line  11)
-* traps:                                 Traps.               (line   6)
-* traps, and discarded space:            Manipulating Spacing.
-                                                              (line  53)
-* traps, and diversions:                 Page Location Traps. (line 166)
-* traps, blank line:                     Blank Line Traps.    (line   6)
-* traps, diversion:                      Diversion Traps.     (line   6)
-* traps, dumping ('ptr'):                Debugging.           (line  81)
-* traps, end-of-input:                   End-of-input Traps.  (line   6)
-* traps, input line:                     Input Line Traps.    (line   6)
-* traps, input line, and interrupted lines ('itc'): Input Line Traps.
-                                                              (line  24)
-* traps, leading spaces:                 Leading Spaces Traps.
-                                                              (line   6)
-* traps, page location:                  Page Location Traps. (line   6)
-* traps, sprung by 'bp' request ('.pe'): Page Location Traps. (line 143)
-* 'trf' request, and copy-in mode:       I/O.                 (line  50)
-* 'trf' request, and invalid characters: I/O.                 (line  73)
-* 'trf' request, causing implicit linebreak: Manipulating Filling and Adjusting.
-                                                              (line   6)
-* 'trin' request, and 'asciify':         Diversions.          (line 195)
-* troff mode:                            Troff and Nroff Mode.
-                                                              (line   6)
-* troff output:                          gtroff Output.       (line  16)
-* truncated vertical space register ('.trunc'): Page Location Traps.
-                                                              (line 131)
-* TTY, conditional output for:           Operators in Conditionals.
-                                                              (line  14)
-* tutorial for macro users:              Tutorial for Macro Users.
-                                                              (line   6)
-* type size:                             Sizes.               (line   6)
-* type size registers ('.s', '.ps'):     Changing Type Sizes. (line  20)
-* type sizes, changing ('ps', '\s'):     Changing Type Sizes. (line  11)
-* type sizes, fractional:                Fractional Type Sizes.
-                                                              (line   6)
-* type sizes, fractional <1>:            Implementation Differences.
-                                                              (line  76)
-* 'u' unit:                              Measurements.        (line   6)
-* 'uf' request, and font styles:         Font Families.       (line  59)
-* 'ul' glyph, and 'cflags':              Using Symbols.       (line 265)
-* 'ul' request, and font translations:   Changing Fonts.      (line  55)
-* Ultrix-specific 'man' macros:          Optional man extensions.
-                                                              (line  30)
-* unary operators:                       Expressions.         (line  21)
-* unbreakable space:                     Page Motions.        (line 114)
-* undefined identifiers:                 Identifiers.         (line  79)
-* undefined request:                     Comments.            (line  25)
-* underline font ('uf'):                 Artificial Fonts.    (line  90)
-* underlining ('ul'):                    Artificial Fonts.    (line  64)
-* underlining, continuous ('cu'):        Artificial Fonts.    (line  86)
-* underscore glyph ('\[ru]'):            Drawing Requests.    (line  28)
-* unformatting diversions ('asciify'):   Diversions.          (line 195)
-* unformatting horizontal space:         Strings.             (line 157)
-* Unicode:                               Identifiers.         (line  15)
-* Unicode <1>:                           Using Symbols.       (line 201)
-* unit, 'c':                             Measurements.        (line  27)
-* unit, 'f':                             Measurements.        (line  43)
-* unit, 'f', and colors:                 Colors.              (line  36)
-* unit, 'i':                             Measurements.        (line  22)
-* unit, 'm':                             Measurements.        (line  50)
-* unit, 'M':                             Measurements.        (line  62)
-* unit, 'n':                             Measurements.        (line  55)
-* unit, 'p':                             Measurements.        (line  30)
-* unit, 'P':                             Measurements.        (line  34)
-* unit, 's':                             Measurements.        (line  40)
-* unit, 's' <1>:                         Fractional Type Sizes.
-                                                              (line   6)
-* unit, 'u':                             Measurements.        (line   6)
-* unit, 'v':                             Measurements.        (line  58)
-* unit, 'z':                             Measurements.        (line  40)
-* unit, 'z' <1>:                         Fractional Type Sizes.
-                                                              (line   6)
-* units of measurement:                  Measurements.        (line   6)
-* units, default:                        Default Units.       (line   6)
-* unnamed fill colors ('\D'F...''):      Drawing Requests.    (line 216)
-* unnamed glyphs:                        Using Symbols.       (line 212)
-* unnamed glyphs, accessing with '\N':   Font File Format.    (line  51)
-* unsafe mode:                           Groff Options.       (line 292)
-* unsafe mode <1>:                       Macro Directories.   (line  21)
-* unsafe mode <2>:                       Built-in Registers.  (line  23)
-* unsafe mode <3>:                       I/O.                 (line  32)
-* unsafe mode <4>:                       I/O.                 (line 147)
-* unsafe mode <5>:                       I/O.                 (line 168)
-* unsafe mode <6>:                       I/O.                 (line 206)
-* user's macro tutorial:                 Tutorial for Macro Users.
-                                                              (line   6)
-* user's tutorial for macros:            Tutorial for Macro Users.
-                                                              (line   6)
-* using symbols:                         Using Symbols.       (line   6)
-* utf-8, output encoding:                Groff Options.       (line 259)
-* 'v' unit:                              Measurements.        (line  58)
-* valid numeric expression:              Expressions.         (line  83)
-* value, incrementing without changing the register: Auto-increment.
-                                                              (line  52)
-* variables in environment:              Environment.         (line   6)
-* version number, major, register ('.x'): Built-in Registers. (line  88)
-* version number, minor, register ('.y'): Built-in Registers. (line  92)
-* vertical line drawing ('\L'):          Drawing Requests.    (line  50)
-* vertical line spacing register ('.v'): Changing Type Sizes. (line  88)
-* vertical line spacing, changing ('vs'): Changing Type Sizes.
-                                                              (line  88)
-* vertical line spacing, effective value: Changing Type Sizes.
-                                                              (line 106)
-* vertical motion ('\v'):                Page Motions.        (line  78)
-* vertical page location, marking ('mk'): Page Motions.       (line  11)
-* vertical page location, returning to marked ('rt'): Page Motions.
-                                                              (line  11)
-* vertical position in diversion register ('.d'): Diversions. (line  69)
-* vertical position trap enable register ('.vpt'): Page Location Traps.
-                                                              (line  18)
-* vertical position traps, enabling ('vpt'): Page Location Traps.
-                                                              (line  18)
-* vertical position, current ('nl'):     Page Control.        (line  67)
-* vertical resolution:                   DESC File Format.    (line 135)
-* vertical resolution register ('.V'):   Built-in Registers.  (line  28)
-* vertical space unit ('v'):             Measurements.        (line  58)
-* vertical spacing:                      Sizes.               (line   6)
-* warnings:                              Debugging.           (line 149)
-* warnings <1>:                          Warnings.            (line   6)
-* warnings, level ('warn'):              Debugging.           (line 155)
-* what is 'groff'?:                      What Is groff?.      (line   6)
-* while:                                 while.               (line   6)
-* 'while' request, and font translations: Changing Fonts.     (line  55)
-* 'while' request, and the '!' operator: Expressions.         (line  21)
-* 'while' request, confusing with 'br':  while.               (line  68)
-* 'while' request, operators to use with: Operators in Conditionals.
-                                                              (line   6)
-* whitespace characters:                 Identifiers.         (line  10)
-* width escape ('\w'):                   Page Motions.        (line 152)
-* width, of last glyph ('.w'):           Environments.        (line  95)
-* word space size register ('.ss'):      Manipulating Filling and Adjusting.
-                                                              (line 151)
-* 'write' request, and copy-in mode:     I/O.                 (line 212)
-* 'writec' request, and copy-in mode:    I/O.                 (line 212)
-* 'writem' request, and copy-in mode:    I/O.                 (line 225)
-* writing macros:                        Writing Macros.      (line   6)
-* writing to file ('write', 'writec'):   I/O.                 (line 212)
-* year, current, register ('year', 'yr'): Built-in Registers. (line  54)
-* 'z' unit:                              Measurements.        (line  40)
-* 'z' unit <1>:                          Fractional Type Sizes.
-                                                              (line   6)
-* zero width space character ('\&'):     Requests.            (line  47)
-* zero width space character ('\&') <1>: Ligatures and Kerning.
-                                                              (line  47)
-* zero width space character ('\&') <2>: Drawing Requests.    (line  32)
-* zero-width printing ('\z', '\Z'):      Page Motions.        (line 220)
-* zero-width printing ('\z', '\Z') <1>:  Page Motions.        (line 224)
-* zoom factor of a font ('fzoom'):       Changing Fonts.      (line  71)
-
similarity index 96%
rename from doc/groff.texinfo
rename to doc/groff.texi
index 066b527..e7fe4aa 100644 (file)
@@ -1,7 +1,7 @@
 \input texinfo
 
 @c
-@c Please convert this manual with `texi2dvi -e groff.texinfo' due to
+@c Please convert this manual with `texi2dvi -e groff.texi' due to
 @c problems in texinfo regarding expansion of user-defined macros.
 @c
 @c You need texinfo 4.8 or newer to format this document!
@@ -24,9 +24,9 @@
 
 
 @copying
-This manual documents GNU @code{troff} version 1.22.3.
+This manual documents GNU @code{troff} version 1.22.4.
 
-Copyright @copyright{} 1994-2014 Free Software Foundation, Inc.
+Copyright @copyright{} 1994--2018 Free Software Foundation, Inc.
 
 @quotation
 Permission is granted to copy, distribute and/or modify this document
@@ -544,10 +544,10 @@ developing GNU and promoting software freedom.''
 @titlepage
 @title groff
 @subtitle The GNU implementation of @code{troff}
-@subtitle Edition 1.22.3
-@subtitle Autumn 2014
+@subtitle Edition 1.22.4
+@subtitle Autumn 2018
 @author by Trent A.@tie{}Fisher
-@author and Werner Lemberg (@email{bug-groff@@gnu.org})
+@author and Werner Lemberg
 
 @page
 @vskip 0pt plus 1filll
@@ -599,8 +599,7 @@ developing GNU and promoting software freedom.''
 
 GNU @code{troff} (or @code{groff}) is a system for typesetting
 documents.  @code{troff} is very flexible and has been used extensively
-for some thirty years.  It is well entrenched in the @acronym{UNIX}
-community.
+for some thirty years.  It is well entrenched in the Unix community.
 
 @menu
 * What Is groff?::
@@ -645,7 +644,7 @@ Most of the @acronym{WYSIWYG} systems are either non-free or are not
 very portable.
 
 @item
-@code{troff} is firmly entrenched in all @acronym{UNIX} systems.
+@code{troff} is firmly entrenched in all Unix systems.
 
 @item
 It is difficult to have a wide range of capabilities within the confines
@@ -691,15 +690,15 @@ document'', meaning to print it out.
 @c
 Bob Morris ported it to the 635 architecture and called the program
 @code{roff} (an abbreviation of @code{runoff}).  It was rewritten as
-@code{rf} for the @w{PDP-7} (before having @acronym{UNIX}), and at the
-same time (1969), Doug McIllroy rewrote an extended and simplified
+@code{rf} for the @w{PDP-7} (before having Unix), and at the
+same time (1969), Doug McIlroy rewrote an extended and simplified
 version of @code{roff} in the @acronym{BCPL} programming language.
 
 @cindex @code{roff}, the program
-In 1971, the UNIX developers wanted to get a @w{PDP-11}, and to justify
+In 1971, the Unix developers wanted to get a @w{PDP-11}, and to justify
 the cost, proposed the development of a document formatting system for
 the @acronym{AT&T} patents division.  This first formatting program was
-a reimplementation of McIllroy's @code{roff}, written by J.@tie{}F.@:
+a reimplementation of McIlroy's @code{roff}, written by J.@tie{}F.@:
 Ossanna.
 
 @cindex @code{nroff}, the program
@@ -722,9 +721,9 @@ changes).
 Since there are several things that cannot be done easily in
 @code{troff}, work on several preprocessors began.  These programs would
 transform certain parts of a document into @code{troff}, which made a
-very natural use of pipes in @acronym{UNIX}.
+very natural use of pipes in Unix.
 
-The @code{eqn} preprocessor allowed mathematical formulæ to be specified
+The @code{eqn} preprocessor allowed mathematical formulae to be specified
 in a much simpler and more intuitive manner.  @code{tbl} is a
 preprocessor for formatting tables.  The @code{refer} preprocessor (and
 the similar program, @code{bib}) processes citations in a document
@@ -896,12 +895,12 @@ understand their own language and produce the necessary @code{groff}
 operations.  These preprocessors are able to differentiate their own
 input from the rest of the document via markers.
 
-To use a preprocessor, @acronym{UNIX} pipes are used to feed the output
-from the preprocessor into @code{groff}.  Any number of preprocessors
-may be used on a given document; in this case, the preprocessors are
-linked together into one pipeline.  However, with @code{groff}, the user
-does not need to construct the pipe, but only tell @code{groff} what
-preprocessors to use.
+To use a preprocessor, Unix pipes are used to feed the output from the
+preprocessor into @code{groff}.  Any number of preprocessors may be used
+on a given document; in this case, the preprocessors are linked together
+into one pipeline.  However, with @code{groff}, the user does not need
+to construct the pipe, but only tell @code{groff} what preprocessors to
+use.
 
 @code{groff} currently has preprocessors for producing tables
 (@code{tbl}), typesetting equations (@code{eqn}), drawing pictures
@@ -952,7 +951,7 @@ The section on the @file{man} macro package is partly based on
 Susan@tie{}G.@: Kleinmann's @file{groff_man} manual page written for the
 Debian GNU/Linux system.
 
-Larry Kollar contributed the section in the @file{ms} macro package.
+Larry Kollar contributed the section on the @file{ms} macro package.
 
 
 
@@ -1028,7 +1027,7 @@ gtbl}, @ref{Invoking ggrn}, @ref{Invoking grefer}, @ref{Invoking gchem},
 @ref{Invoking grodvi}, @ref{Invoking grolj4}, @ref{Invoking grolbp}, and
 @ref{Invoking gxditview}.
 
-The command line format for @code{groff} is:
+The command-line format for @code{groff} is:
 
 @Example
 groff [ -abceghijklpstvzCEGNRSUVXZ ] [ -d@var{cs} ] [ -D@var{arg} ]
@@ -1038,7 +1037,7 @@ groff [ -abceghijklpstvzCEGNRSUVXZ ] [ -d@var{cs} ] [ -D@var{arg} ]
       [ -w@var{name} ] [ -W@var{name} ] [ @var{files}@dots{} ]
 @endExample
 
-The command line format for @code{gtroff} is as follows.
+The command-line format for @code{gtroff} is as follows.
 
 @Example
 gtroff [ -abcivzCERU ] [ -d@var{cs} ] [ -f@var{fam} ] [ -F@var{dir} ]
@@ -1423,10 +1422,10 @@ none otherwise.
 @tindex GROFF_ENCODING@r{, environment variable}
 The value of this environment value is passed to the @code{preconv}
 preprocessor to select the encoding of input files.  Setting this option
-implies @code{groff}'s command line option @option{-k} (this is,
+implies @code{groff}'s command-line option @option{-k} (that is,
 @code{groff} actually always calls @code{preconv}).  If set without a
 value, @code{groff} calls @code{preconv} without arguments.  An explicit
-@option{-K} command line option overrides the value of
+@option{-K} command-line option overrides the value of
 @env{GROFF_ENCODING}.  See the manual page of @code{preconv} for details.
 
 @item GROFF_FONT_PATH
@@ -1453,6 +1452,12 @@ default directory (on Unix and GNU/Linux systems, this is usually
 @item GROFF_TYPESETTER
 @tindex GROFF_TYPESETTER@r{, environment variable}
 The default output device.
+
+@item SOURCE_DATE_EPOCH
+@tindex SOURCE_DATE_EPOCH@r{, environment variable}
+A timestamp (expressed as seconds since the Unix epoch) to use in place of
+the current time when initializing time-based built-in registers such as
+@code{\n[seconds]}.
 @end table
 
 Note that MS-DOS and MS-Windows ports of @code{groff} use semi-colons,
@@ -1470,7 +1475,7 @@ above.
 @cindex macros, searching
 
 All macro file names must be named @code{@var{name}.tmac} or
-@code{tmac.@var{name}} to make the @option{-m@var{name}} command line
+@code{tmac.@var{name}} to make the @option{-m@var{name}} command-line
 option work.  The @code{mso} request doesn't have this restriction; any
 file name can be used, and @code{gtroff} won't try to append or prepend
 the @samp{tmac} string.
@@ -1489,7 +1494,7 @@ macro files are (in that order):
 @itemize @bullet
 @item
 The directories specified with @code{gtroff}'s or @code{groff}'s
-@option{-M} command line option.
+@option{-M} command-line option.
 
 @item
 @tindex GROFF_TMAC_PATH@r{, environment variable}
@@ -1503,7 +1508,7 @@ The directories given in the @env{GROFF_TMAC_PATH} environment variable.
 @cindex current directory
 @cindex directory, current
 The current directory (only if in unsafe mode using the @option{-U}
-command line switch).
+command-line switch).
 
 @item
 @cindex home directory
@@ -1563,7 +1568,7 @@ The elements of the search path for font files are (in that order):
 @itemize @bullet
 @item
 The directories specified with @code{gtroff}'s or @code{groff}'s
-@option{-F} command line option.  All device drivers and some
+@option{-F} command-line option.  All device drivers and some
 preprocessors also have this option.
 
 @item
@@ -1603,7 +1608,7 @@ handled separately.  @xref{Page Layout}, for vertical manipulation of
 the page size.  @xref{Line Layout}, for horizontal changes.
 
 A default paper size can be set in the device's @file{DESC} file.  Most
-output devices also have a command line option @option{-p} to override
+output devices also have a command-line option @option{-p} to override
 the default paper size and option @option{-l} to use landscape
 orientation.  @xref{DESC File Format}, for a description of the
 @code{papersize} keyword, which takes the same argument as @option{-p}.
@@ -1611,12 +1616,12 @@ orientation.  @xref{DESC File Format}, for a description of the
 @pindex papersize.tmac
 @pindex troffrc
 A convenient shorthand to set a particular paper size for @code{gtroff}
-is command line option @option{-dpaper=@var{size}}.  This defines string
+is command-line option @option{-dpaper=@var{size}}.  This defines string
 @code{paper}, which is processed in file @file{papersize.tmac} (loaded in
 the start-up file @file{troffrc} by default).  Possible values for
 @var{size} are the same as the predefined values for the
 @code{papersize} keyword (but only in lowercase) except
-@code{a7}-@code{d7}.  An appended @samp{l} (ell) character denotes
+@code{a7}--@code{d7}.  An appended @samp{l} (ell) character denotes
 landscape orientation.
 
 For example, use the following for PS output on A4 paper in landscape
@@ -1670,11 +1675,11 @@ Preview @file{file} with @code{gxditview}, using the @file{me} macro
 package.  Since no @option{-T} option is specified, use the default
 device (@samp{ps}).  Note that you can either say @w{@samp{-m me}} or
 @w{@samp{-me}}; the latter is an anachronism from the early days of
-@acronym{UNIX}.@footnote{The same is true for the other main macro
-packages that come with @code{groff}: @file{man}, @file{mdoc},
-@file{ms}, @file{mm}, and @file{mandoc}.  This won't work in general;
-for example, to load @file{trace.tmac}, either @samp{-mtrace} or
-@w{@samp{-m trace}} must be used.}
+Unix.@footnote{The same is true for the other main macro packages that
+come with @code{groff}: @file{man}, @file{mdoc}, @file{ms}, @file{mm},
+and @file{mandoc}.  This won't work in general; for example, to load
+@file{trace.tmac}, either @samp{-mtrace} or @w{@samp{-m trace}} must be
+used.}
 
 @Example
 groff -man -rD1 -z file
@@ -1720,7 +1725,7 @@ grog -Tdvi paper.ms
 guesses the appropriate command to print @file{paper.ms} and then prints
 it to the command line after adding the @option{-Tdvi} option.  For
 direct execution, enclose the call to @code{grog} in backquotes at the
-@acronym{UNIX} shell prompt:
+Unix shell prompt:
 
 @Example
 `grog -Tdvi paper.ms` > paper.dvi
@@ -2241,7 +2246,7 @@ are based on it.
 @node Man options, Man usage, man, man
 @subsection Options
 
-The command line format for using the @file{man} macros with
+The command-line format for using the @file{man} macros with
 @code{groff} is:
 
 @Example
@@ -2278,7 +2283,7 @@ Set hyphenation flags.  Possible values are 1@tie{}to hyphenate without
 restrictions, 2@tie{}to not hyphenate the last word on a page, 4@tie{}to
 not hyphenate the last two characters of a word, and 8@tie{}to not
 hyphenate the first two characters of a word.  These values are
-additive; the default is@tie{}14.
+additive; the default is@tie{}8.
 
 @item -rIN=@var{length}
 Set the body text indentation to @var{length}.  If not specified, the
@@ -2477,7 +2482,7 @@ The macros @code{RS} and @code{RE} also cause a break but do not insert
 vertical space.
 
 @cindex default indentation, resetting [@code{man}]
-@cindex indentaion, resetting to default [@code{man}]
+@cindex indentation, resetting to default [@code{man}]
 @cindex @code{man} macros, resetting default indentation
 Finally, the macros @code{SH}, @code{SS}, @code{LP} (@code{PP},
 @code{P}), and @code{RS} reset the indentation to its default value.
@@ -2489,9 +2494,9 @@ Finally, the macros @code{SH}, @code{SS}, @code{LP} (@code{PP},
 @cindex font selection [@code{man}]
 @cindex @code{man} macros, how to set fonts
 
-The standard font is roman; the default text size is 10@tie{}point.  If
-command line option @option{-rS=@var{n}} is given, use @var{n}@dmn{pt}
-as the default text size.
+The standard font is roman; the default text size is 10@tie{}points.  If
+command-line option @option{-rS=@var{n}} is given, use
+@var{n}@tie{}points as the default text size.
 
 @Defmac {SM, [@Var{text}], man}
 Set the text on the same line or the text on the next line in a font
@@ -3059,7 +3064,7 @@ is equivalent to using the @code{nh} request.
 
 Effective: next paragraph.
 
-Default: 14.
+Default: 6.
 @endDefmpreg
 
 @Defmpreg {FAM, ms}
@@ -3089,7 +3094,8 @@ Default: 0.3@dmn{v}.
 @endDefmpreg
 
 @Defmpreg {QI, ms}
-Defines the indentation on both sides of a quoted (@code{QP} macro)
+Defines the indentation on both sides of a quoted (@code{QP},
+@code{QS}, and @code{QE} macros)
 paragraph.
 
 Effective: next paragraph.
@@ -3361,9 +3367,23 @@ Sets a paragraph without an initial indentation.
 @endDefmac
 
 @Defmac {QP, , ms}
-Sets a paragraph that is indented at both left and right margins.  The
-effect is identical to the @acronym{HTML} @code{<BLOCKQUOTE>} element.
+Sets a paragraph that is indented at both left and right margins
+by the amount of the register @code{QI}.
+The effect is identical to the @acronym{HTML} @code{<BLOCKQUOTE>} element.
 The next paragraph or heading returns margins to normal.
+@code{QP} inserts vertical space of amount set by register @code{PD}
+before the paragraph.
+@endDefmac
+
+@DefmacList {QS, , ms}
+@DefmacListEndx {QE, , ms}
+These macros begin and end a quoted section.
+The @code{QI} register
+controls the amount of indentation.
+Both @code{QS} and @code{QE} insert inter-paragraph vertical space
+set by register @code{PD}.
+The text between @code{QS} and @code{QE} can be structured further
+by use of the macros @code{LP} or @code{PP}.
 @endDefmac
 
 @Defmac {XP, , ms}
@@ -4201,7 +4221,7 @@ by the string register @code{TOC}.
 
 @Defmac {PX, [@code{no}], ms}
 Prints the table of contents on a new page, using the current page
-numbering sequence.  Use this macro to print a manually-generated table
+numbering sequence.  Use this macro to print a manually generated table
 of contents at the beginning of your document.
 
 The optional argument @code{no} suppresses printing the title specified
@@ -4405,7 +4425,7 @@ The general error-handling policy of @code{groff -ms} is to detect and
 report errors, rather than silently to ignore them.
 
 @item
-@code{groff -ms} does not work in compatibility mode (this is, with the
+@code{groff -ms} does not work in compatibility mode (that is, with the
 @option{-C} option).
 
 @item
@@ -4419,10 +4439,10 @@ Multiple line spacing is not supported.  Use a larger vertical spacing
 instead.
 
 @item
-Some @acronym{UNIX} @code{ms} documentation says that the @code{CW} and
-@code{GW} number registers can be used to control the column width and
-gutter width, respectively.  These number registers are not used in
-@code{groff -ms}.
+Some Unix @code{ms} documentation says that the @code{CW} and @code{GW}
+number registers can be used to control the column width and gutter
+width, respectively.  These number registers are not used in @code{groff
+-ms}.
 
 @item
 Macros that cause a reset (paragraphs, headings, etc.@:) may change the
@@ -4461,7 +4481,7 @@ and @code{UC} macros collide with different macros with the same names
 in the Berkeley version of @code{ms}.
 
 These @code{groff} emulations are sufficient to give back the 1976
-Kernighan@tie{}& Cherry paper @cite{Typsetting Mathematics -- User's
+Kernighan@tie{}& Cherry paper @cite{Typesetting Mathematics -- User's
 Guide} its section headings, and restore some text that had gone missing
 as arguments of undefined macros.  No warranty express or implied is
 given as to how well the typographic details these produce match the
@@ -4629,11 +4649,36 @@ command line).
 
 @c XXX documentation
 @c XXX this is a placeholder until we get stuff knocked into shape
-See the @cite{groff_mom(7)} man page (type @command{man groff_mom} at
-the command line), which gives a short overview and a link to its
-extensive documentation in HTML format.
+The main documentation files for the @file{mom} macros are in
+@acronym{HTML} format.  Additional, useful documentation is in PDF
+format.  See the @cite{groff(1)} man page, section ``Installation
+Directories'', for their location.
+
+@itemize @bullet
+@item
+@file{toc.html}
+@noindent
+Entry point to the full mom manual.
+
+@item
+@file{macrolist.html}
+@noindent
+Hyperlinked index of macros with brief descriptions, arranged by
+category.
+
+@item
+@file{mom-pdf.pdf}
+@noindent
+PDF features and usage.
+@end itemize
 
+The mom macros are in active development between groff releases.
+The most recent version, along with up-to-date documentation, is
+available at @uref{http://www.schaffter.ca/mom/mom-05.html}.
 
+The @cite{groff_mom(7)} man page (type @command{man groff_mom} at the
+command line) contains a partial list of available macros, however their
+usage is best understood by consulting the @acronym{HTML} documentation.
 
 @c =====================================================================
 @c =====================================================================
@@ -4769,7 +4814,7 @@ hyphen), and the other portion is added to the next line to be filled.
 
 Although it is often debated, some typesetting rules say there should be
 different amounts of space after various punctuation marks.  For
-example, the @cite{Chicago typsetting manual} says that a period at the
+example, the @cite{Chicago typesetting manual} says that a period at the
 end of a sentence should have twice as much space following it as would
 a comma or a period as part of an abbreviation.
 
@@ -4902,7 +4947,7 @@ in other logical places.  Keep separate phrases on lines by themselves,
 as entire phrases are often added or deleted when editing.
 
 @item
-Try to keep lines less than 40-60@tie{}characters, to allow space for
+Try to keep lines less than 40--60@tie{}characters, to allow space for
 inserting more text.
 
 @item
@@ -4947,17 +4992,17 @@ the file @file{latin1.tmac} is loaded at start-up.
 @cindex input encoding, @w{latin-2} (ISO @w{8859-2})
 @pindex latin2.tmac
 To use this encoding, either say @w{@samp{.mso latin2.tmac}} at the very
-beginning of your document or use @samp{-mlatin2} as a command line
+beginning of your document or use @samp{-mlatin2} as a command-line
 argument for @code{groff}.
 
 @item latin-5
 @cindex encoding, input, @w{latin-5} (ISO @w{8859-9})
-@cindex @w{latin-2} (ISO @w{8859-9}), input encoding
-@cindex ISO @w{8859-9} (@w{latin-2}), input encoding
-@cindex input encoding, @w{latin-2} (ISO @w{8859-9})
-@pindex latin2.tmac
-For Turkish.  Either say @w{@samp{.mso latin9.tmac}} at the very
-beginning of your document or use @samp{-mlatin9} as a command line
+@cindex @w{latin-5} (ISO @w{8859-9}), input encoding
+@cindex ISO @w{8859-9} (@w{latin-5}), input encoding
+@cindex input encoding, @w{latin-5} (ISO @w{8859-9})
+@pindex latin5.tmac
+For Turkish.  Either say @w{@samp{.mso latin5.tmac}} at the very
+beginning of your document or use @samp{-mlatin5} as a command-line
 argument for @code{groff}.
 
 @item latin-9 (latin-0)
@@ -4970,7 +5015,7 @@ This encoding is intended (at least in Europe) to replace @w{latin-1}
 encoding.  The main difference to @w{latin-1} is that @w{latin-9}
 contains the Euro character.  To use this encoding, either say
 @w{@samp{.mso latin9.tmac}} at the very beginning of your document or
-use @samp{-mlatin9} as a command line argument for @code{groff}.
+use @samp{-mlatin9} as a command-line argument for @code{groff}.
 @end table
 
 Note that it can happen that some input encoding characters are not
@@ -4997,7 +5042,7 @@ the box (@w{latin-2} isn't).
 
 By its very nature, @option{-Tutf8} supports all input encodings;
 @option{-Tdvi} has support for both @w{latin-2} and @w{latin-9} if the
-command line @option{-mec} is used also to load the file @file{ec.tmac}
+command-line @option{-mec} is used also to load the file @file{ec.tmac}
 (which flips to the EC fonts).
 
 
@@ -5031,6 +5076,12 @@ fractional basic units are always rounded to integers.
 Some of the measurement units are completely independent of any of the
 current settings (e.g.@: type size) of @code{gtroff}.
 
+Although groff's basic unit is device-dependent, it may still be smaller
+than the smallest unit the device is capable of producing.  The register
+@code{.H} specifies how many groff basic units constitute the current
+device's basic unit horizontally, and the register @code{.V} specifies
+this value vertically.
+
 @table @code
 @item i
 @cindex inch unit (@code{i})
@@ -5038,13 +5089,13 @@ current settings (e.g.@: type size) of @code{gtroff}.
 @cindex unit, @code{i}
 Inches.  An antiquated measurement unit still in use in certain
 backwards countries with incredibly low-cost computer equipment.  One
-inch is equal to@tie{}2.54@dmn{cm}.
+inch is defined to be 2.54@tie{}cm (worldwide since 1964).
 
 @item c
 @cindex centimeter unit (@code{c})
 @cindex @code{c} unit
 @cindex unit, @code{c}
-Centimeters.  One centimeter is equal to@tie{}0.3937@dmn{in}.
+Centimeters.  One centimeter is about 0.3937@tie{}in.
 
 @item p
 @cindex point unit (@code{p})
@@ -5057,7 +5108,7 @@ It is 72@tie{}points to an inch.
 @cindex pica unit (@code{P})
 @cindex @code{P} unit
 @cindex unit, @code{P}
-Pica.  Another typesetting measurement.  6@tie{}Picas to an inch (and
+Pica.  Another typesetting measurement.  6@tie{}picas to an inch (and
 12@tie{}points to a pica).
 
 @item s
@@ -5169,8 +5220,8 @@ Arithmetic: @samp{+} (addition), @samp{-} (subtraction), @samp{/}
 (division), @samp{*} (multiplication), @samp{%} (modulo).
 
 @code{gtroff} only provides integer arithmetic.  The internal type used
-for computing results is @samp{int}, which is usually a 32@dmn{bit}
-signed integer.
+for computing results is @samp{int}, which is usually a 32-bit signed
+integer.
 
 @item
 @cindex comparison operators
@@ -5365,13 +5416,13 @@ Backspace (@acronym{ASCII}@tie{}@code{0x08} or
 The following input characters are invalid and are ignored if
 @code{groff} runs on a machine based on @acronym{ASCII}, causing a
 warning message of type @samp{input} (see @ref{Debugging}, for more
-details): @code{0x00}, @code{0x0B}, @code{0x0D}-@code{0x1F},
-@code{0x80}-@code{0x9F}.
+details): @code{0x00}, @code{0x0B}, @code{0x0D}--@code{0x1F},
+@code{0x80}--@code{0x9F}.
 
 And here are the invalid input characters if @code{groff} runs on an
 @acronym{EBCDIC} host: @code{0x00}, @code{0x08}, @code{0x09},
-@code{0x0B}, @code{0x0D}-@code{0x14}, @code{0x17}-@code{0x1F},
-@code{0x30}-@code{0x3F}.
+@code{0x0B}, @code{0x0D}--@code{0x14}, @code{0x17}--@code{0x1F},
+@code{0x30}--@code{0x3F}.
 
 Currently, some of these reserved codepoints are used internally, thus
 making it non-trivial to extend @code{gtroff} to cover Unicode or other
@@ -5593,7 +5644,7 @@ request), and set to@tie{}0 otherwise.
 
 @cindex modifying requests
 @cindex requests, modifying
-This allows to reliably modify requests.
+This allows reliable modification of requests.
 
 @Example
 .als bp*orig bp
@@ -5608,8 +5659,8 @@ This allows to reliably modify requests.
 Using this register outside of a macro makes no sense (it always returns
 zero in such cases).
 
-If a macro is called as a string (this is, using @code{\*}), the value
-of the @code{.br} register is inherited from the calling macro.
+If a macro is called as a string (that is, using @code{\*}), the value
+of the @code{.br} register is inherited from the caller.
 @endDefreg
 
 @menu
@@ -5712,8 +5763,8 @@ Use the double quote glyph @code{\(dq}.  This works with and without
 compatibility mode enabled since @code{gtroff} doesn't convert
 @code{\(dq} back to a double quote input character.
 
-Note that this method won't work with @acronym{UNIX} @code{troff} in
-general since the glyph `dq' isn't defined normally.
+Note that this method won't work with Unix @code{troff} in general since
+the glyph `dq' isn't defined normally.
 @end itemize
 
 @cindex @code{ds} request, and double quotes
@@ -5840,7 +5891,7 @@ possible, but it is better not to use this feature to avoid confusion.
 @cindex @code{\r}, used as delimiter
 @cindex @code{\t}, used as delimiter
 @cindex @code{\u}, used as delimiter
-The following escapes sequences (which are handled similarly to
+The following escape sequences (which are handled similarly to
 characters since they don't take a parameter) are also allowed as
 delimiters: @code{\%}, @w{@samp{\ }}, @code{\|}, @code{\^}, @code{\@{},
 @code{\@}}, @code{\'}, @code{\`}, @code{\-}, @code{\_}, @code{\!},
@@ -6297,12 +6348,8 @@ form.
 
 @DefescList {\\n, +, i, }
 @DefescItem {\\n, -, i, }
-@DefescItem {\\n, @Lparen{}+, id, }
-@DefescItem {\\n, @Lparen{}-, id, }
 @DefescItem {\\n, +@Lparen{}, id, }
 @DefescItem {\\n, -@Lparen{}, id, }
-@DefescItem {\\n, @Lbrack{}+, ident, @Rbrack{}}
-@DefescItem {\\n, @Lbrack{}-, ident, @Rbrack{}}
 @DefescItem {\\n, +@Lbrack{}, ident, @Rbrack{}}
 @DefescListEnd {\\n, -@Lbrack{}, ident, @Rbrack{}}
 Before interpolating, increment or decrement @var{ident} (one-character
@@ -6412,8 +6459,8 @@ The following example produces @samp{10, X, j, 010}:
 @cindex maximum values of Roman numerals
 @cindex minimum values of Roman numerals
 The largest number representable for the @samp{i} and @samp{I} formats
-is 39999 (or @minus{}39999); @acronym{UNIX} @code{troff} uses @samp{z}
-and @samp{w} to represent 10000 and 5000 in Roman numerals, and so does
+is 39999 (or @minus{}39999); Unix @code{troff} uses @samp{z} and
+@samp{w} to represent 10000 and 5000 in Roman numerals, and so does
 @code{gtroff}.  Currently, the correct glyphs of Roman numeral five
 thousand and Roman numeral ten thousand (Unicode code points
 @code{U+2182} and @code{U+2181}, respectively) are not available.
@@ -6462,7 +6509,8 @@ This string-valued register returns the current input file name.
 @cindex horizontal resolution register (@code{.H})
 @cindex resolution, horizontal, register (@code{.H})
 @vindex .H
-Horizontal resolution in basic units.
+Number of basic units per horizontal unit of output device resolution.
+@xref{Measurements}.
 
 @item \n[.R]
 @cindex number of registers register (@code{.R})
@@ -6477,7 +6525,7 @@ GNU@tie{}@code{troff}; it exists for backward compatibility.
 @cindex unsafe mode
 @cindex mode, unsafe
 @vindex .U
-If @code{gtroff} is called with the @option{-U} command line option to
+If @code{gtroff} is called with the @option{-U} command-line option to
 activate unsafe mode, the number register @code{.U} is set to@tie{}1,
 and to zero otherwise.  @xref{Groff Options}.
 
@@ -6485,7 +6533,8 @@ and to zero otherwise.  @xref{Groff Options}.
 @cindex vertical resolution register (@code{.V})
 @cindex resolution, vertical, register (@code{.V})
 @vindex .V
-Vertical resolution in basic units.
+Number of basic units per vertical unit of output device resolution.
+@xref{Measurements}.
 
 @item \n[seconds]
 @cindex seconds, current time (@code{seconds})
@@ -6516,19 +6565,19 @@ Initialized at start-up of @code{gtroff}.
 @cindex day of the week register (@code{dw})
 @cindex date, day of the week register (@code{dw})
 @vindex dw
-Day of the week (1-7).
+Day of the week (1--7).
 
 @item \n[dy]
 @cindex day of the month register (@code{dy})
 @cindex date, day of the month register (@code{dy})
 @vindex dy
-Day of the month (1-31).
+Day of the month (1--31).
 
 @item \n[mo]
 @cindex month of the year register (@code{mo})
 @cindex date, month of the year register (@code{mo})
 @vindex mo
-Current month (1-12).
+Current month (1--12).
 
 @item \n[year]
 @cindex date, year register (@code{year}, @code{yr})
@@ -6539,9 +6588,9 @@ The current year.
 @item \n[yr]
 @vindex yr
 The current year minus@tie{}1900.  Unfortunately, the documentation of
-@acronym{UNIX} Version@tie{}7's @code{troff} had a year@tie{}2000 bug:
-It incorrectly claimed that @code{yr} contains the last two digits of
-the year.  That claim has never been true of either @acronym{AT&T}
+Unix Version@tie{}7's @code{troff} had a year@tie{}2000 bug: It
+incorrectly claimed that @code{yr} contains the last two digits of the
+year.  That claim has never been true of either @acronym{AT&T}
 @code{troff} or GNU @code{troff}.  Old @code{troff} input that looks
 like this:
 
@@ -6619,7 +6668,7 @@ running under GNU @code{troff}.
 @item \n[.A]
 @vindex .A
 @cindex @acronym{ASCII} approximation output register (@code{.A})
-If the command line option @option{-a} is used to produce an
+If the command-line option @option{-a} is used to produce an
 @acronym{ASCII} approximation of the output, this is set to@tie{}1, zero
 otherwise.  @xref{Groff Options}.
 
@@ -6637,7 +6686,7 @@ information.
 
 @item \n[.T]
 @vindex .T
-If @code{gtroff} is called with the @option{-T} command line option, the
+If @code{gtroff} is called with the @option{-T} command-line option, the
 number register @code{.T} is set to@tie{}1, and zero otherwise.
 @xref{Groff Options}.
 
@@ -6821,11 +6870,16 @@ The adjustment mode status is associated with the current environment
 
 @DefreqList {brp, }
 @DefescListEndx {\\p, , , }
-Adjust the current line and cause a break.
+Break, adjusting the current line per the current adjustment mode.
+
+With @code{\p}, this break will happen at the next word boundary.  The
+@code{\p} itself is removed entirely, adding neither a break nor a space
+where it appears in input; it can thus be placed in the middle of a word
+to cause a break at the end of that word.
 
 In most cases this produces very ugly results since @code{gtroff}
 doesn't have a sophisticated paragraph building algorithm (as @TeX{}
-have, for example); instead, @code{gtroff} fills and adjusts a paragraph
+has, for example); instead, @code{gtroff} fills and adjusts a paragraph
 line by line:
 
 @Example
@@ -6868,9 +6922,9 @@ the end of a line in fill mode, then both an inter-word space and a
 sentence space are added; if two spaces follow the end of a sentence in
 the middle of a line, then the second space is a sentence space.  If a
 second argument is never given to the @code{ss} request, the behaviour
-of @acronym{UNIX} @code{troff} is the same as that exhibited by GNU
-@code{troff}.  In GNU @code{troff}, as in @acronym{UNIX} @code{troff}, a
-sentence should always be followed by either a newline or two spaces.
+of Unix @code{troff} is the same as that exhibited by GNU @code{troff}.
+In GNU @code{troff}, as in Unix @code{troff}, a sentence should always
+be followed by either a newline or two spaces.
 
 The read-only number registers @code{.ss} and @code{.sss} hold the
 values of the parameters set by the first and second arguments of the
@@ -6924,7 +6978,7 @@ fills the text as well.  @code{ce} does not fill the text it affects.
 This request causes a break.  The number of lines still to be centered
 is associated with the current environment (@pxref{Environments}).
 
-The following example demonstrates the differences.  Here the input:
+The following example demonstrates the differences.  Here is the input:
 
 @Example
 .ll 4i
@@ -6998,8 +7052,9 @@ Enable hyphenation.  The request has an optional numeric argument,
 
 @table @code
 @item 1
-The default argument if @var{mode} is omitted.  Hyphenate without
-restrictions.  This is also the start-up value of @code{gtroff}.
+The default argument if @var{mode} is omitted: hyphenation is enabled,
+and the first and the last characters of a word are not hyphenated.
+This is also the start-up value of @code{gtroff}.
 
 @item 2
 Do not hyphenate the last word on a page or column.
@@ -7009,11 +7064,71 @@ Do not hyphenate the last two characters of a word.
 
 @item 8
 Do not hyphenate the first two characters of a word.
+
+@item 16
+Allow hyphenation before the last character of a word.
+
+@item 32
+Allow hyphenation after the first character of a word.
 @end table
 
-Values in the previous table are additive.  For example, the
+The values in the previous table are additive.  For example,
 value@tie{}12 causes @code{gtroff} to neither hyphenate the last two nor
-the first two characters of a word.
+the first two characters of a word.  Note that value@tie{}13 would do
+exactly the same; in other words, value@tie{}1 need not be added if the
+value is larger than@tie{}1.
+
+Some values cannot be used together because they contradict; for
+instance, values 4 and@tie{}16, and values 8 and@tie{}32.
+
+The number of characters at the beginning of a word after which the
+first hyphenation point should be inserted is determined by the patterns
+themselves; it can't be reduced further without introducing additional,
+invalid hyphenation points (unfortunately, this information is not part
+of a pattern file, you have to know it in advance).  The same is true
+for the number of characters at the end of word before the last
+hyphenation point should be inserted.  For example, the code
+
+@Example
+.ll 1
+.hy 48
+splitting
+@endExample
+
+returns
+
+@Example
+s-
+plit-
+t-
+in-
+g
+@endExample
+
+instead of the correct `split-ting'.  US-English patterns as distributed
+with groff need two characters at the beginning and three characters at
+the end; this means that value@tie{}4 of @code{hy} is mandatory.
+Value@tie{}8 is possible as an additional restriction, but values@tie{}1
+(the default!), 16, and@tie{}32 should be avoided.
+
+Here is a table of left and right minimum values for hyphenation as needed
+by the patterns distributed with groff; see the @cite{groff_tmac(5) man
+page} (type @command{man groff_tmac} at the command line) for more
+information on groff's language macro files.
+
+@multitable {German traditional}    {pattern name}    {left min}    {right min}
+@headitem    language           @tab pattern name @tab left min @tab right min
+@item        Czech              @tab cs           @tab 2        @tab 2
+@item        US English         @tab us           @tab 2        @tab 3
+@item        French             @tab fr           @tab 2        @tab 3
+@item        German traditional @tab det          @tab 2        @tab 2
+@item        German reformed    @tab den          @tab 2        @tab 2
+@item        Swedish            @tab sv           @tab 1        @tab 2
+@end multitable
+
+Hyphenation exceptions within pattern files (i.e., the words within a
+@code{\hyphenation} group) also obey the hyphenation restrictions given
+by @code{hy}.  However, exceptions specified with the @code{hw} do not.
 
 @cindex hyphenation restrictions register (@code{.hy})
 The current hyphenation restrictions can be found in the read-only
@@ -7068,6 +7183,10 @@ is zero can be used to separate the arguments of @code{hw} (see the
 documentation for the @code{hcode} request below for more information).
 In addition, this request can be used more than once.
 
+@cindex @code{hw} request, and @code{hy} restrictions
+Hyphenation points specified with @code{hw} are not subject to the
+restrictions given by the @code{hy} request.
+
 Hyphenation exceptions specified with the @code{hw} request are
 associated with the current hyphenation language; it causes an error if
 there is no current hyphenation language.
@@ -7148,8 +7267,8 @@ preceded by a backslash.
 No support for `digraphs' like @code{\$}.
 
 @item
-@code{^^@var{xx}} (@var{x} is 0-9 or a-f) and @code{^^@var{x}}
-(character code of @var{x} in the range 0-127) are recognized; other use
+@code{^^@var{xx}} (@var{x} is 0--9 or a--f) and @code{^^@var{x}}
+(character code of @var{x} in the range 0--127) are recognized; other use
 of @code{^} causes an error.
 
 @item
@@ -7216,8 +7335,8 @@ character (not a special character) other than a digit or a space.
 
 To make hyphenation work, hyphenation codes must be set up.  At
 start-up, groff only assigns hyphenation codes to the letters
-@samp{a}-@samp{z} (mapped to themselves) and to the letters
-@samp{A}-@samp{Z} (mapped to @samp{a}-@samp{z}); all other hyphenation
+@samp{a}--@samp{z} (mapped to themselves) and to the letters
+@samp{A}--@samp{Z} (mapped to @samp{a}--@samp{z}); all other hyphenation
 codes are set to zero.  Normally, hyphenation patterns contain only
 lowercase letters, which should be applied regardless of case.  In
 other words, the words `FOO' and `Foo' should be hyphenated exactly the
@@ -7364,7 +7483,7 @@ of the page:
 
 @noindent
 A call to @samp{.y-from-bot-up 10c} means that the bottom of the next
-line will be at 10@dmn{cm} from the paper edge at the bottom.
+line will be at 10@tie{}cm from the paper edge at the bottom.
 
 If a vertical trap is sprung during execution of @code{sp}, the amount
 of vertical space after the trap is discarded.  For example, this
@@ -7450,7 +7569,7 @@ the values is used.
 
 @cindex extra post-vertical line space register (@code{.a})
 The @code{.a} read-only number register contains the most recent
-(nonnegative) extra vertical line space.
+(non-negative) extra vertical line space.
 
 Using @code{\x} can be necessary in combination with the @code{\b}
 escape, as the following example shows.
@@ -7653,7 +7772,7 @@ Calling @code{ta} without an argument removes all tab stops.
 
 @item
 @cindex tab stops, for TTY output devices
-The start-up value of @code{gtroff} is @w{@samp{T 0.8i}}.
+The start-up value of @code{gtroff} is @w{@samp{T 0.5i}}.
 @end itemize
 
 @cindex tab settings register (@code{.tabs})
@@ -7737,11 +7856,11 @@ mode, and 0 in normal mode.
 @subsection Leaders
 @cindex leaders
 
-Sometimes it may may be desirable to use the @code{tc} request to fill a
+Sometimes it may be desirable to use the @code{tc} request to fill a
 particular tab stop with a given glyph (for example dots in a table of
-contents), but also normal tab stops on the rest of the line.  For this
-@code{gtroff} provides an alternate tab mechanism, called @dfn{leaders},
-which does just that.
+contents), but also normal tab stops on the rest of the line.
+For this @code{gtroff} provides an alternate tab mechanism, called
+@dfn{leaders}, which does just that.
 
 @cindex leader character
 A leader character (character code@tie{}1) behaves similarly to a tab
@@ -7966,7 +8085,7 @@ escape sequences, using a strange escape character, @samp{-}.
 @Example
 .ec -
 .de xxx
---A'123'
+--A'foo'
 ..
 .xxx
     @result{} -A'foo'
@@ -7985,7 +8104,7 @@ only @code{\E} yields the expected result:
 @Example
 .ec -
 .de xxx
--EA'123'
+-EA'foo'
 ..
 .xxx
     @result{} 1
@@ -8199,8 +8318,8 @@ the former for TTY output, the latter for everything else.  With GNU
 @code{troff}, both programs are merged into one executable, sending its
 output to a device driver (@code{grotty} for TTY devices, @code{grops}
 for @sc{PostScript}, etc.)@: which interprets the intermediate output of
-@code{gtroff}.  For @acronym{UNIX} @code{troff} it makes sense to talk
-about @dfn{Nroff mode} and @dfn{Troff mode} since the differences are
+@code{gtroff}.  For Unix @code{troff} it makes sense to talk about
+@dfn{Nroff mode} and @dfn{Troff mode} since the differences are
 hardcoded.  For GNU @code{troff}, this distinction is not appropriate
 because @code{gtroff} simply takes the information given in the font
 files for a particular device without handling requests specially if a
@@ -8325,8 +8444,7 @@ cause a break, so changing the page offset in the middle of text being
 filled may not yield the expected result.  The initial value is
 1@dmn{i}.  For TTY output devices, it is set to 0 in the startup file
 @file{troffrc}; the default scaling indicator is @samp{m} (and not
-@samp{v} as incorrectly documented in the original @acronym{UNIX} troff
-manual).
+@samp{v} as incorrectly documented in the original Unix troff manual).
 
 The current page offset can be found in the read-only number register
 @samp{.o}.
@@ -8632,7 +8750,7 @@ line (which stays untouched).
 It is not an error to omit closing delimiters.  For example,
 @w{@samp{.tl /foo}} is equivalent to @w{@samp{.tl /foo///}}: It prints a
 title line with the left justified word @samp{foo}; the centered and
-right justfied parts are empty.
+right justified parts are empty.
 
 @item
 @code{tl} accepts the same parameter delimiting characters as the
@@ -8874,8 +8992,8 @@ to @var{font} (one-character name@tie{}@var{f}, two-character name
 
 If @var{font} is a style name (as set with the @code{sty} request or
 with the @code{styles} command in the @file{DESC} file), use it within
-the current font family (as set with the @code{fam} request, @code{\F}
-escape, or with the @code{family} command in the @file{DESC} file).
+the current font family (as set with the @code{fam} request, the
+@code{\F} escape, or the @code{family} command in the @file{DESC} file).
 
 It is not possible to switch to a font with the name @samp{DESC}
 (whereas this name could be used as a style name; however, this is not
@@ -9221,7 +9339,7 @@ non-negative integer.
 If @var{nnn} is associated with a style (as set with the @code{sty}
 request or with the @code{styles} command in the @file{DESC} file), use
 it within the current font family (as set with the @code{fam} request,
-the @code{\F} escape, or with the @code{family} command in the
+the @code{\F} escape, or the @code{family} command in the
 @file{DESC} file).
 
 @Example
@@ -9274,7 +9392,7 @@ mounted with the @code{fonts} keyword in the @file{DESC} file are
 globally available.  To install additional special fonts locally (i.e.@:
 for a particular font), use the @code{fspecial} request.
 
-Here the exact rules how @code{gtroff} searches a given symbol:
+Here are the exact rules how @code{gtroff} searches a given symbol:
 
 @itemize @bullet
 @item
@@ -9371,8 +9489,7 @@ groff -Tdvi -mec -man groff_char.7 > groff_char.dvi
 @cindex AGL (adobe glyph list)
 Glyph names not listed in groff_char(7) are derived algorithmically,
 using a simplified version of the Adobe Glyph List (AGL) algorithm, which
-is described in
-@uref{http://partners.adobe.com@//public@//developer@//opentype@//index_glyph.html}.
+is described in @uref{https://github.com@//adobe-type-tools@//agl-aglfn}.
 The (frozen) set of glyph names that can't be derived algorithmically
 is called @dfn{groff glyph list (GGL)}.
 
@@ -9645,10 +9762,10 @@ property).
 Ignore hyphenation code values of the surrounding characters.  Use this
 in combination with values 2 and@tie{}4 (initially no characters have
 this property).  For example, if you need an automatic break point after
-the hyphen in number ranges like `3000-5000', insert
+the en-dash in number ranges like `3000--5000', insert
 
 @Example
-.cflags 68 -
+.cflags 68 \(en
 @endExample
 
 @noindent
@@ -9968,8 +10085,8 @@ a single character as an argument) to change the font on the fly:
 .mc \S'20'x\S'0'
 @endExample
 
-This request is incorrectly documented in the original @acronym{UNIX}
-troff manual; the slant is always set to an absolute value.
+This request is incorrectly documented in the original Unix troff
+manual; the slant is always set to an absolute value.
 @endDefesc
 
 @Defreq {ul, [@Var{lines}]}
@@ -10170,7 +10287,7 @@ length by the same amount to compensate it.
 @endDefreq
 
 Sometimes, when typesetting letters of different fonts, more or less
-space at such boundaries are needed.  There are two escapes to help with
+space at such boundaries is needed.  There are two escapes to help with
 this.
 
 @Defesc {\\/, , , }
@@ -10230,7 +10347,7 @@ q\,\f[I]f
 
 @Defesc {\\&, , , }
 Insert a zero-width character, which is invisible.  Its intended use is
-to stop interaction of a character with its surrounding.
+to stop interaction of a character with its surroundings.
 
 @itemize @bullet
 @item
@@ -10618,7 +10735,7 @@ numeric expression with a default scale indicator of @samp{z}.
 @itemx \s'-@var{n}'
 @itemx \s+'@var{n}'
 @itemx \s-'@var{n}'
-Increase or or decrease the point size by @var{n}@tie{}scaled points;
+Increase or decrease the point size by @var{n}@tie{}scaled points;
 @var{n}@tie{}is a numeric expression (which may start with a minus sign)
 with a default scale indicator of @samp{z}.
 @end table
@@ -10633,7 +10750,7 @@ with a default scale indicator of @samp{z}.
 @cindex strings
 
 @code{gtroff} has string variables, which are entirely for user
-convenience (i.e.@: there are no built-in strings exept @code{.T}, but
+convenience (i.e.@: there are no built-in strings except @code{.T}, but
 even this is a read-write string variable).
 
 Although the following requests can be used to create strings,
@@ -10669,7 +10786,7 @@ This is \*[foo nice].
 @endExample
 
 The @code{\*} escape @dfn{interpolates} (expands in-place) a
-previously-defined string variable.  To be more precise, the stored
+previously defined string variable.  To be more precise, the stored
 string is pushed onto the input stack, which is then parsed by
 @code{gtroff}.  Similar to number registers, it is possible to nest
 strings, i.e., string variables can be called within string variables.
@@ -10686,7 +10803,7 @@ This means that comments on a line with such a request can introduce
 unwanted space into a string.
 
 @Example
-.ds UX \s-1UNIX\s0\u\s-3tm\s0\d \" UNIX trademark
+.ds TeX T\h'-.2m'\v'.2m'E\v'-.2m'\h'-.1m'X \" Knuth's TeX
 @endExample
 
 @noindent
@@ -10694,7 +10811,7 @@ Instead the comment should be put on another line or have the comment
 escape adjacent with the end of the string.
 
 @Example
-.ds UX \s-1UNIX\s0\u\s-3tm\s0\d\"  UNIX trademark
+.ds TeX T\h'-.2m'\v'.2m'E\v'-.2m'\h'-.1m'X\" Knuth's TeX
 @endExample
 
 @cindex trailing quotes
@@ -10736,7 +10853,7 @@ restore} input token at the end.
 @Example
 .nr xxx 12345
 .ds aa The value of xxx is \\n[xxx].
-.ds1 bb The value of xxx ix \\n[xxx].
+.ds1 bb The value of xxx is \\n[xxx].
 .
 .cp 1
 .
@@ -10744,7 +10861,7 @@ restore} input token at the end.
     @result{} warning: number register `[' not defined
     @result{} The value of xxx is 0xxx].
 \*(bb
-    @result{} The value of xxx ix 12345.
+    @result{} The value of xxx is 12345.
 @endExample
 
 @cindex name space, common, of macros, diversions, and strings
@@ -10824,7 +10941,7 @@ test
 @endExample
 
 Usually, it is not predictable whether a diversion contains one or more
-output lines, so this mechanism should be avoided.  With @acronym{UNIX}
+output lines, so this mechanism should be avoided.  With Unix
 @code{troff}, this was the only solution to strip off a final newline
 from a diversion.  Another disadvantage is that the spaces in the copied
 string are already formatted, making them unstretchable.  This can cause
@@ -11134,7 +11251,7 @@ defined by the @code{char} request.
 
 @item F @var{font}
 True if a font named @var{font} exists.  @var{font} is handled as if it
-was opened with the @code{ft} request (this is, font translation and
+was opened with the @code{ft} request (that is, font translation and
 styles are applied), without actually mounting it.
 
 This test doesn't load the complete font but only its header to verify
@@ -11160,7 +11277,7 @@ false
 @endExample
 
 A whitespace after @samp{!} always evaluates to zero (this bizarre
-behaviour is due to compatibility with @acronym{UNIX} @code{troff}).
+behaviour is due to compatibility with Unix @code{troff}).
 
 @Example
 .nr xxx 1
@@ -11232,7 +11349,7 @@ first request is the `if' part and the latter is the `else' part.
 @cindex conditional block, begin (@code{\@{})
 @cindex conditional block, end (@code{\@}})
 @cindex block, conditional, begin (@code{\@{})
-@cindex block, condititional, end (@code{\@}})
+@cindex block, conditional, end (@code{\@}})
 In many cases, an if (or if-else) construct needs to execute more than
 one request.  This can be done using the escapes @code{\@{} (which must
 start the first line) and @code{\@}} (which must end the last line).
@@ -11300,9 +11417,9 @@ parsed and stored again as a temporary macro.
 @cindex recursive macros
 @cindex macros, recursive
 @noindent
-The traditional and ofter better solution (@acronym{UNIX} @code{troff}
-doesn't have the @code{while} request) is to use a recursive macro
-instead that is parsed only once during its definition.
+The traditional and often better solution (Unix @code{troff} doesn't
+have the @code{while} request) is to use a recursive macro instead that
+is parsed only once during its definition.
 
 @Example
 .de yyy
@@ -11418,13 +11535,13 @@ for executing.
 .
 .de foo
 .  de bar end
-.    nop \f[B]Hallo \\\\$1!\f[]
+.    nop \f[B]Hello \\\\$1!\f[]
 .  end
 ..
 .
 .foo
 .bar Joe
-    @result{} @b{Hallo Joe!}
+    @result{} @b{Hello Joe!}
 @endExample
 
 @noindent
@@ -11443,7 +11560,7 @@ at exit.
 The value of xxx is \\n[xxx].
 ..
 .de1 bb
-The value of xxx ix \\n[xxx].
+The value of xxx is \\n[xxx].
 ..
 .
 .cp 1
@@ -11452,7 +11569,7 @@ The value of xxx ix \\n[xxx].
     @result{} warning: number register `[' not defined
     @result{} The value of xxx is 0xxx].
 .bb
-    @result{} The value of xxx ix 12345.
+    @result{} The value of xxx is 12345.
 @endExample
 
 The @code{dei} request defines a macro indirectly.  That is, it expands
@@ -11533,8 +11650,8 @@ Using @file{trace.tmac}, you can trace calls to @code{am} and
 alias and rename a macro, respectively.
 
 The @code{de}, @code{am}, @code{di}, @code{da}, @code{ds}, and @code{as}
-requests (together with its variants) only create a new object if the
-name of the macro, diversion or string diversion is currently undefined
+requests (together with their variants) only create a new object if the
+name of the macro, diversion or string is currently undefined
 or if it is defined to be a request; normally they modify the value of
 an existing object.
 
@@ -11567,10 +11684,11 @@ macro one level higher.  This is used to define a wrapper macro for
 @cindex \@key{RET}, when reading text for a macro
 When @code{gtroff} reads in the text for a macro, string, or diversion,
 it copies the text (including request lines, but excluding escapes) into
-an internal buffer.  Escapes are converted into an internal form, except
-for @code{\n}, @code{\$}, @code{\*}, @code{\\} and @code{\@key{RET}},
-which are evaluated and inserted into the text where the escape was
-located.  This is known as @dfn{copy-in} mode or @dfn{copy} mode.
+an internal buffer.
+Escapes are converted into an internal form, except for @code{\n},
+@code{\$}, @code{\*}, @code{\\} and @code{\@key{RET}}, which are evaluated
+and inserted into the text where the escape was located.
+This is known as @dfn{copy-in} mode or @dfn{copy} mode.
 
 What this means is that you can specify when these escapes are to be
 evaluated (either at copy-in time or at the time of use) by insulating
@@ -11749,6 +11867,9 @@ position which distance from the top of the page is @var{dist} (no
 previous call to @code{mk} is necessary in this case).  Default scaling
 indicator is @samp{v}.
 
+If a page break occurs between a @code{mk} request and its
+matching @code{rt} request, the @code{rt} is silently ignored.
+
 Here a primitive solution for a two-column macro.
 
 @Example
@@ -12116,7 +12237,7 @@ This is a \L'3v'test.
 @endExample
 
 @noindent
-Here the result, produced with @code{grotty}.
+Here is the result, produced with @code{grotty}.
 
 @Example
 This is a
@@ -12143,7 +12264,7 @@ which arguments are treated similar to the @code{defcolor} request.
 @cindex line, drawing (@w{@code{\D'l @dots{}'}})
 @cindex drawing a line (@w{@code{\D'l @dots{}'}})
 Draw a line from the current location to the relative point specified by
-(@var{dx},@var{dy}), where positive values mean down and right,
+(@var{dx},@var{dy}), where positive values mean right and down,
 respectively.  The end point of the line is the new current location.
 
 The following example is a macro for creating a box around a text
@@ -12556,12 +12677,12 @@ sense to use it outside of trap macros.
 @cindex @code{ne} request, and the @code{.trunc} register
 @cindex truncated vertical space register (@code{.trunc})
 A read-only register containing the amount of vertical space truncated
-by the most recently sprung vertical position trap, or, if the trap was
-sprung by an @code{ne} request, minus the amount of vertical motion
-produced by the @code{ne} request.  In other words, at the point a trap
-is sprung, it represents the difference of what the vertical position
-would have been but for the trap, and what the vertical position
-actually is.
+from an @code{sp} request by the most recently sprung vertical
+position trap, or, if the trap was sprung by an @code{ne} request,
+minus the amount of vertical motion produced by the @code{ne}
+request.  In other words, at the point a trap is sprung, it
+represents the difference of what the vertical position would have
+been but for the trap, and what the vertical position actually is.
 
 Since the @code{.trunc} register is only set by traps it doesn't make
 much sense to use it outside of trap macros.
@@ -12816,7 +12937,7 @@ the exact height of the document after the text has been output.
 @Example
 .de adjust-page-length
 .  br
-.  pl \\n[nl]u   \" \n[nl] holds the current page length
+.  pl \\n[nl]u \" \n[nl] holds the current vert. position
 ..
 .
 .de single-page-mode
@@ -12871,17 +12992,17 @@ appends to an existing diversion.
 
 @code{di} or @code{da} without an argument ends the diversion.
 
-The current partially-filled line is included into the diversion.  See
+The current partially filled line is included into the diversion.  See
 the @code{box} request below for an example.  Note that switching to
 another (empty) environment (with the @code{ev} request) avoids the
-inclusion of the current partially-filled line.
+inclusion of the current partially filled line.
 @endDefreq
 
 @DefreqList {box, macro}
 @DefreqListEndx {boxa, macro}
 Begin (or append to) a diversion like the @code{di} and @code{da}
 requests.  The difference is that @code{box} and @code{boxa} do not
-include a partially-filled line in the diversion.
+include a partially filled line in the diversion.
 
 Compare this:
 
@@ -12938,9 +13059,9 @@ as register @code{nl}.
 @cindex mark, high-water, register (@code{.h})
 @cindex position of lowest text line (@code{.h})
 @cindex text line, position of lowest (@code{.h})
-The @dfn{high-water mark} on the current page.  It corresponds to the
-text baseline of the lowest line on the page.  This is a read-only
-register.
+The @dfn{high-water mark} on the current page or in the current
+diversion.  It corresponds to the text baseline of the lowest line
+on the page.  This is a read-only register.
 
 @Example
 .tm .h==\n[.h], nl==\n[nl]
@@ -13003,7 +13124,6 @@ been already stored in a macro are not taken into account.
 .  br
 .  fi
 .  rr @@s
-.  rm @@s
 .  rm @@c
 ..
 .\" End of macro definitions, restore escape mechanism
@@ -13379,7 +13499,7 @@ Internally, @code{color} sets a global flag; it does not produce a
 token.  Similar to the @code{cp} request, you should use it at the
 beginning of your document to control color output.
 
-Colors can be also turned off with the @option{-c} command line option.
+Colors can be also turned off with the @option{-c} command-line option.
 @endDefreq
 
 @Defreq {defcolor, ident scheme color_components}
@@ -13526,7 +13646,7 @@ bar
 yields @samp{This is foobar}.
 
 The search path for @var{file} can be controlled with the @option{-I}
-command line option.
+command-line option.
 @endDefreq
 
 @Defreq {pso, command}
@@ -13548,9 +13668,10 @@ for @code{pso} also.
 @Defreq {mso, file}
 Identical to the @code{so} request except that @code{gtroff} searches
 for the specified @var{file} in the same directories as macro files for
-the the @option{-m} command line option.  If the file name to be
-included has the form @file{@var{name}.tmac} and it isn't found,
-@code{mso} tries to include @file{tmac.@var{name}} and vice versa.
+the @option{-m} command-line option.
+If the file name to be included has the form @file{@var{name}.tmac} and it
+isn't found, @code{mso} tries to include @file{tmac.@var{name}} and vice
+versa.
 If the file does not exist, a warning of type @samp{file} is emitted.
 @xref{Debugging}, for information about warnings.
 @endDefreq
@@ -13587,8 +13708,8 @@ becomes part of the diversion.
 Both @code{trf} and @code{cf}, when used in a diversion, embeds an
 object in the diversion which, when reread, causes the contents of
 @var{file} to be transparently copied through to the output.  In
-@acronym{UNIX} @code{troff}, the contents of @var{file} is immediately
-copied through to the output regardless of whether there is a current
+Unix @code{troff}, the contents of @var{file} is immediately copied
+through to the output regardless of whether there is a current
 diversion; this behaviour is so anomalous that it must be considered a
 bug.
 
@@ -13912,9 +14033,9 @@ However, the contents of the string or macro @var{name} are not
 interpreted; also it is permitted for @var{name} to have been defined as
 a macro and thus contain newlines (it is not permitted for the argument
 to @code{\X} to contain newlines).  The inclusion of newlines requires
-an extension to the @acronym{UNIX} @code{troff} output format, and
-confuses drivers that do not know about this extension (@pxref{Device
-Control Commands}).
+an extension to the Unix @code{troff} output format, and confuses
+drivers that do not know about this extension (@pxref{Device Control
+Commands}).
 @endDefesc
 
 @xref{Output Devices}.
@@ -14093,7 +14214,7 @@ If an error occurs (for example, @code{psbb} cannot find the
 zero.
 
 The search path for @var{filename} can be controlled with the
-@option{-I} command line option.
+@option{-I} command-line option.
 @endDefreq
 
 
@@ -14310,7 +14431,7 @@ also @ref{I/O}.
 @endDefreq
 
 When doing something involved it is useful to leave the debugging
-statements in the code and have them turned on by a command line flag.
+statements in the code and have them turned on by a command-line flag.
 
 @Example
 .if \n(DB .tm debugging output
@@ -14342,10 +14463,10 @@ macros, strings, and diversions are print together with their size in
 bytes.  Since @code{gtroff} sometimes adds nodes by itself, the returned
 size can be larger than expected.
 
-This request differs from @acronym{UNIX} @code{troff}: @code{gtroff}
-reports the sizes of diversions, ignores an additional argument to print
-only the total of the sizes, and the size isn't returned in blocks of
-128 characters.
+This request differs from Unix @code{troff}: @code{gtroff} reports the
+sizes of diversions, ignores an additional argument to print only the
+total of the sizes, and the size isn't returned in blocks of 128
+characters.
 @endDefreq
 
 @Defreq {pnr, }
@@ -14371,9 +14492,9 @@ subsequently planted traps.
 @cindex @code{gtroff}, interactive use
 Instruct @code{gtroff} to flush its output immediately.  The intent is
 for interactive use, but this behaviour is currently not implemented in
-@code{gtroff}.  Contrary to @acronym{UNIX} @code{troff}, TTY output is
-sent to a device driver also (@code{grotty}), making it non-trivial to
-communicate interactively.
+@code{gtroff}.  Contrary to Unix @code{troff}, TTY output is sent to a
+device driver also (@code{grotty}), making it non-trivial to communicate
+interactively.
 
 This request causes a line break.
 @endDefreq
@@ -14448,7 +14569,7 @@ This request is active only if text is justified to both margins (using
 @endDefreq
 
 @cindex warnings
-@code{gtroff} has command line options for printing out more warnings
+@code{gtroff} has command-line options for printing out more warnings
 (@option{-w}) and for printing backtraces (@option{-b}) when a warning
 or an error occurs.  The most verbose level of warnings is @option{-ww}.
 
@@ -14633,8 +14754,7 @@ with documents written with old versions of @code{troff}.
 
 @cindex long names
 @cindex names, long
-Long names cause some incompatibilities.  @acronym{UNIX} @code{troff}
-interprets
+Long names cause some incompatibilities.  Unix @code{troff} interprets
 
 @Example
 .dsabcd
@@ -14645,12 +14765,11 @@ interprets
 @noindent
 as defining a string @samp{ab} with contents @samp{cd}.  Normally, GNU
 @code{troff} interprets this as a call of a macro named @code{dsabcd}.
-Also @acronym{UNIX} @code{troff} interprets @code{\*[} or @code{\n[} as
-references to a string or number register called @samp{[}.  In GNU
-@code{troff}, however, this is normally interpreted as the start of a
-long name.  In compatibility mode GNU @code{troff} interprets long names
-in the traditional way (which means that they are not recognized as
-names).
+Also Unix @code{troff} interprets @code{\*[} or @code{\n[} as references
+to a string or number register called @samp{[}.  In GNU @code{troff},
+however, this is normally interpreted as the start of a long name.  In
+compatibility mode GNU @code{troff} interprets long names in the
+traditional way (which means that they are not recognized as names).
 
 @DefreqList {cp, [@Var{n}]}
 @DefreqItemx {do, cmd}
@@ -14661,8 +14780,8 @@ otherwise, turn it off.
 The read-only number register @code{.C} is@tie{}1 if compatibility mode
 is on, 0@tie{}otherwise.
 
-Compatibility mode can be also turned on with the @option{-C} command
-line option.
+Compatibility mode can be also turned on with the @option{-C}
+command-line option.
 
 The @code{do} request turns off compatibility mode while executing its
 arguments as a @code{gtroff} command.  However, it does not turn off
@@ -14708,13 +14827,13 @@ feature).  For example, the code
 
 @Example
 .de xx
-Hallo!
+Hello!
 ..
 \fB.xx\fP
 @endExample
 
 @noindent
-prints @samp{Hallo!} in bold face if in compatibility mode, and
+prints @samp{Hello!} in bold face if in compatibility mode, and
 @samp{.xx} in bold face otherwise.
 
 @cindex @code{\A}, incompatibilities with @acronym{AT&T} @code{troff}
@@ -14735,9 +14854,9 @@ GNU @code{troff} does not allow the use of the escape sequences
 @code{\|}, @code{\^}, @code{\&}, @code{\@{}, @code{\@}},
 @code{\@key{SP}}, @code{\'}, @code{\`}, @code{\-}, @code{\_}, @code{\!},
 @code{\%}, and @code{\c} in names of strings, macros, diversions, number
-registers, fonts or environments; @acronym{UNIX} @code{troff} does.  The
-@code{\A} escape sequence (@pxref{Identifiers}) may be helpful in
-avoiding use of these escape sequences in names.
+registers, fonts or environments; Unix @code{troff} does.  The @code{\A}
+escape sequence (@pxref{Identifiers}) may be helpful in avoiding use of
+these escape sequences in names.
 
 @cindex fractional point sizes
 @cindex fractional type sizes
@@ -14746,8 +14865,8 @@ avoiding use of these escape sequences in names.
 @cindex sizes, fractional
 @cindex @code{ps} request, incompatibilities with @acronym{AT&T} @code{troff}
 Fractional point sizes cause one noteworthy incompatibility.  In
-@acronym{UNIX} @code{troff} the @code{ps} request ignores scale
-indicators and thus
+Unix @code{troff} the @code{ps} request ignores scale indicators and
+thus
 
 @Example
 .ps 10u
@@ -14799,18 +14918,18 @@ character from which it was constructed might have had.  For example,
 prints @samp{\\} in GNU @code{troff}; each pair of input backslashes is
 turned into one output backslash and the resulting output backslashes
 are not interpreted as escape characters when they are reread.
-@acronym{UNIX} @code{troff} would interpret them as escape characters
-when they were reread and would end up printing one @samp{\}.  The
-correct way to obtain a printable backslash is to use the @code{\e}
-escape sequence: This always prints a single instance of the current
-escape character, regardless of whether or not it is used in a
-diversion; it also works in both GNU @code{troff} and @acronym{UNIX}
-@code{troff}.@footnote{To be completely independent of the current
-escape character, use @code{\(rs}, which represents a reverse solidus
-(backslash) glyph.}  To store, for some reason, an escape sequence in a
-diversion that is interpreted when the diversion is reread, either use
-the traditional @code{\!} transparent output facility, or, if this is
-unsuitable, the new @code{\?} escape sequence.
+Unix @code{troff} would interpret them as escape characters when they
+were reread and would end up printing one @samp{\}.  The correct way to
+obtain a printable backslash is to use the @code{\e} escape sequence:
+This always prints a single instance of the current escape character,
+regardless of whether or not it is used in a diversion; it also works in
+both GNU @code{troff} and Unix @code{troff}.@footnote{To be completely
+independent of the current escape character, use @code{\(rs}, which
+represents a reverse solidus (backslash) glyph.}  To store, for some
+reason, an escape sequence in a diversion that is interpreted when the
+diversion is reread, either use the traditional @code{\!} transparent
+output facility, or, if this is unsuitable, the new @code{\?} escape
+sequence.
 
 @xref{Diversions}, and @ref{Gtroff Internals}, for more information.
 
@@ -15108,7 +15227,7 @@ Use overprint and disable colours for printing on legacy Teletype
 printers (see below).
 
 @item -d
-Do not render lines (this is, ignore all @code{\D} escapes).
+Do not render lines (that is, ignore all @code{\D} escapes).
 
 @item -f
 Use form feed control characters in the output.
@@ -15605,7 +15724,7 @@ Do not generate the table of contents.
 Generate simple fragment identifiers.
 
 @item -o@var{offset}
-Use vertical paddding @var{offset} for images.
+Use vertical padding @var{offset} for images.
 
 @item -p
 Display the page rendering progress to @code{stderr}.
@@ -15815,10 +15934,10 @@ newline character.
 
 The normal commands, those for positioning and text, consist of a single
 letter taking a fixed number of arguments.  For historical reasons, the
-parser allows to stack such commands on the same line, but fortunately,
-in @code{gtroff}'s intermediate output, every command with at least one
-argument is followed by a line break, thus providing excellent
-readability.
+parser allows stacking of such commands on the same line, but
+fortunately, in @code{gtroff}'s intermediate output, every command with
+at least one argument is followed by a line break, thus providing
+excellent readability.
 
 The other commands -- those for drawing and device controlling -- have a
 more complicated structure; some recognize long command names, and some
@@ -15973,12 +16092,12 @@ current page.
 
 @item h @var{n}
 Move @var{n} (a non-negative integer) basic units @samp{u} horizontally
-to the right.  The original @acronym{UNIX} troff manual allows negative
+to the right.  The original Unix troff manual allows negative
 values for @var{n} also, but @code{gtroff} doesn't use this.
 
 @item m @var{color-scheme} @r{[}@var{component} @dots{}@r{]}
 Set the color for text (glyphs), line drawing, and the outline of
-graphic objects using different color schemes; the analoguous command
+graphic objects using different color schemes; the analogous command
 for the filling color of graphic objects is @samp{DF}.  The color
 components are specified as integer arguments between 0 and 65536.  The
 number of color components and their meaning vary for the different
@@ -16063,8 +16182,8 @@ integer in basic units @samp{u}) relative to upper edge of current page.
 
 @item v @var{n}
 Move @var{n}@tie{}basic units @samp{u} down (@var{n} is a non-negative
-integer).  The original @acronym{UNIX} troff manual allows negative
-values for @var{n} also, but @code{gtroff} doesn't use this.
+integer).  The original Unix troff manual allows negative values for
+@var{n} also, but @code{gtroff} doesn't use this.
 
 @item w
 Informs about a paddable white space to increase readability.  The
@@ -16149,7 +16268,7 @@ rightmost point of the ellipse.
 
 @item DF @var{color-scheme} @r{[}@var{component} @dots{}@r{]}@angles{line break}
 Set fill color for solid drawing objects using different color schemes;
-the analoguous command for setting the color of text, line graphics, and
+the analogous command for setting the color of text, line graphics, and
 the outline of graphic objects is @samp{m}.  The color components are
 specified as integer arguments between 0 and 65536.  The number of color
 components and their meaning vary for the different color schemes.
@@ -16230,7 +16349,7 @@ the position doesn't change.
 @end ignore
 This command is a @code{gtroff} extension.
 
-@item Dp @var{h1} @var{v1} @var{h2} @var{v2} @dots{} @var{hn} @var{vn}@angles{line break}
+@item DP @var{h1} @var{v1} @var{h2} @var{v2} @dots{} @var{hn} @var{vn}@angles{line break}
 Draw a solid polygon in the current fill color rather than an outlined
 polygon, using the same arguments and positioning as the corresponding
 @samp{Dp} command.
@@ -16305,7 +16424,7 @@ Initialize device.  This is the third command of the prologue.
 @item xp@angles{line break}
 The @samp{p} stands for @var{pause}.
 
-Parsed but ignored.  The original @acronym{UNIX} troff manual writes
+Parsed but ignored.  The original Unix troff manual writes
 
 @display
 pause device, can be restarted
@@ -16527,9 +16646,9 @@ Due to the obsolete jump-and-write command, the text clusters in the
 @subsection Output Language Compatibility
 
 The intermediate output language of @acronym{AT&T} @code{troff} was
-first documented in the @acronym{UNIX} troff manual, with later
-additions documented in @cite{A Typesetter-indenpendent TROFF}, written
-by Brian Kernighan.
+first documented in the Unix troff manual, with later additions
+documented in @cite{A Typesetter-independent TROFF}, written by Brian
+Kernighan.
 
 The @code{gtroff} intermediate output format is compatible with this
 specification except for the following features.
@@ -16622,7 +16741,7 @@ called@tie{}@file{@var{f}}.
 @pindex DESC@r{ file format}
 
 The @file{DESC} file can contain the following types of line.  Except
-for the @code{charset} keyword, which must comes last (if at all), the
+for the @code{charset} keyword, which must come last (if at all), the
 order of the lines is not important.  Later entries in the file,
 however, override previous values.
 
@@ -16668,8 +16787,8 @@ Deprecated.  Use @code{papersize} instead.
 @item papersize @var{string} @dots{}
 @kindex papersize
 Select a paper size.  Valid values for @var{string} are the ISO paper
-types @code{A0}-@code{A7}, @code{B0}-@code{B7}, @code{C0}-@code{C7},
-@code{D0}-@code{D7}, @code{DL}, and the US paper types @code{letter},
+types @code{A0}--@code{A7}, @code{B0}--@code{B7}, @code{C0}--@code{C7},
+@code{D0}--@code{D7}, @code{DL}, and the US paper types @code{letter},
 @code{legal}, @code{tabloid}, @code{ledger}, @code{statement},
 @code{executive}, @code{com10}, and @code{monarch}.  Case is not
 significant for @var{string} if it holds predefined paper types.
@@ -16679,7 +16798,7 @@ the first line and tests for the above paper sizes.  Finally,
 @var{string} can be a custom paper size in the format
 @code{@var{length},@var{width}} (no spaces before and after the comma).
 Both @var{length} and @var{width} must have a unit appended; valid
-values are @samp{i} for inches, @samp{C} for centimeters, @samp{p} for
+values are @samp{i} for inches, @samp{c} for centimeters, @samp{p} for
 points, and @samp{P} for picas.  Example: @code{12c,235p}.  An argument
 that starts with a digit is always treated as a custom paper format.
 @code{papersize} sets both the vertical and horizontal dimension of the
@@ -16734,7 +16853,7 @@ There are @var{n}@tie{}machine units per inch.
 This means that the device has fonts at @var{s1}, @var{s2}, @dots{}
 @var{sn} scaled points.  The list of sizes must be terminated by@tie{}0
 (this is digit zero).  Each @var{si} can also be a range of sizes
-@var{m}-@var{n}.  The list can extend over more than one line.
+@var{m}--@var{n}.  The list can extend over more than one line.
 
 @item sizescale @var{n}
 @kindex sizescale
@@ -17154,4 +17273,6 @@ accessed as @samp{\[xxx]}.
 @c Local Variables:
 @c mode: texinfo
 @c coding: latin-1
+@c fill-column: 72
 @c End:
+@c vim: set textwidth=72:
index 0e245e8..2a02780 100644 (file)
@@ -456,6 +456,14 @@ followed by the line
 .q "My thoughts on the subject" ,
 followed by a single blank line.
 .pp
+This request will not leave space at the top of a page.
+If you need the requested space to appear regardless of page position,
+use the
+.b .bl
+macro, which has the same syntax as
+.b .sp
+but always leaves the requested space, even at the top of a page.
+.pp
 The
 .b .in \ \c
 .i +N
@@ -2164,14 +2172,16 @@ prints as
 .sm UNIX
 rather than
 UNIX.
-.pp
-Warning:
-changing point sizes
-on the phototypesetter
-is a slow mechanical operation.
-On laser printers it may require loading new fonts.
-Size changes
-should be considered carefully.
+.\" Dave Kemper notes that the following probably has not been true
+.\" since 1986; keeping (but commented) for historical interest.
+.\" .pp
+.\" Warning:
+.\" changing point sizes
+.\" on the phototypesetter
+.\" is a slow mechanical operation.
+.\" On laser printers it may require loading new fonts.
+.\" Size changes
+.\" should be considered carefully.
 .sh 2 "Quotes"
 .pp
 It is conventional when using
@@ -2241,3 +2251,7 @@ and have given support for the project.
 .sp 1i
 This document applies to the version of the \-me macros
 included with \*G version \*(MO.
+.\" Local Variables:
+.\" mode: nroff
+.\" End:
+.\" vim: filetype=groff:
index b405f88..cc765f0 100644 (file)
@@ -1,4 +1,4 @@
-.\" -*- mode: nroff; coding: utf-8; -*-
+.\" -*- coding: utf-8 -*- (for preconv; for Emacs, see end of file)
 .\"
 .\" Copyright (c) 1986 The Regents of the University of California.
 .\" All rights reserved.
@@ -389,6 +389,14 @@ suivis de la ligne
 .q "Mes pensées sur le sujet" ,
 suivie elle-même d'un espacement vertical.
 .pp
+Cette requête ne laissera pas d'espacement vertical en haut d'une page.
+Si vous avez besoin que l'espacement apparaisse quelque soit la position sur la page,
+utilisez la macro
+.b .bl
+, qui a la même syntaxe que
+.b .sp
+mais qui ajoutera toujours l'espacement demandé, même en haut d'une page.
+.pp
 La requête
 .b .in \ \c
 .i +N
@@ -2130,13 +2138,17 @@ Par exemple:
 s'imprime
 .sm UNIX , 
 ce qui est plus joli que UNIX.
-.pp
-Avertissement:
-changer les tailles de caractères
-sur le photocompositeur
-est une opération mécanique lente.
-Sur les imprimantes laser, il faudra peut-être recharger de nouvelles polices.
-Dès lors les changements de tailles de caractères devraient être utilisés avec prudence.
+.\" Dave Kemper notes that the following probably has not been true
+.\" since 1986; keeping (but commented) for historical interest.
+.\" .pp
+.\" Avertissement:
+.\" changer les tailles de caractères
+.\" sur le photocompositeur
+.\" est une opération mécanique lente.
+.\" Sur les imprimantes laser, il faudra peut-être recharger de
+.\" nouvelles polices.
+.\" Dès lors les changements de tailles de caractères devraient être
+.\" utilisés avec prudence.
 .sh 2 "Guillemets"
 .pp
 En typographie,
@@ -2266,3 +2278,8 @@ l l l .
 \&.q|quoted|entre guillemets
 .TE
 .)b
+.\" Local Variables:
+.\" mode: nroff
+.\" coding: utf-8
+.\" End:
+.\" vim: filetype=groff:
index 1685561..43e93e3 100644 (file)
@@ -213,7 +213,7 @@ defined in this section
 or the
 .b .sh
 macro
-(defined in the next session),
+(defined in the next section),
 the effects of changing parameters
 which will have a global effect
 on the format of the page
@@ -714,11 +714,12 @@ at the top of each page
 (after putting out
 the header,
 initial saved floating keeps,
-etc.);
+etc.),
+or of each column when in two-column mode;
 in other words,
 this macro is called immediately before
 printing text
-on a page.
+on a page or in a column.
 It can be used for column headings
 and the like.
 .sh 1 "Displays"
@@ -1298,7 +1299,7 @@ Leave
 contiguous white space,
 on the next page if not enough room
 on this page.
-Equivalent to a
+Equivalent to putting a
 .b .sp
 .i N
 inside a block.
@@ -1790,7 +1791,7 @@ Footnote number, actually
 .ST [ \c
 .NR ($f \c
 .ST ] .
-This macro is incremented
+The number in this string is incremented
 after each call to
 .b .)f .
 .TL
@@ -2088,7 +2089,7 @@ NAME      TYPE    DESCRIPTION
 \&.bc  M       begin new column
 \&.bi  M       bold italic
 \en(bi R       display (block) indent
-\&.bl  M       blank lines (even at top of page)
+\&.bl  M       blank lines (even at top of page, in contrast to .sp)
 \en(bm R       bottom title margin
 \&.bp  M\(sc   begin page
 \&.br  M\(sc   break (start new line)
@@ -2198,7 +2199,7 @@ NAME      TYPE    DESCRIPTION
 \&.sm  M       set argument in a smaller pointsize
 \&.so  M\(sc   source input file
 \en(so R       additional section title offset
-\&.sp  M\(sc   vertical space
+\&.sp  M\(sc   vertical space (except at top of page, in contrast to .bl)
 \en(sp R       section title pointsize
 \en(ss R       section prespace
 \&.sx  M       change section depth
@@ -2234,3 +2235,7 @@ NAME      TYPE    DESCRIPTION
 \en(_M R       section type (as set with .++ macro)
 .)l
 .rm $H
+.\" Local Variables:
+.\" mode: nroff
+.\" End:
+.\" vim: filetype=groff:
index b46119d..6d581ba 100644 (file)
@@ -1,4 +1,4 @@
-.\" Copyright (C) 2006-201 Free Software Foundation, Inc.
+.\" Copyright (C) 2006-2018 Free Software Foundation, Inc.
 .\"      Written by Eric S. Raymond <esr@thyrsus.com>
 .\"
 .\" This file is part of groff.
@@ -14,7 +14,7 @@
 .\" for more details.
 .\"
 .\" You should have received a copy of the GNU General Public License
-.\" along with this program. If not, see <http://www.gnu.org/licenses/>.
+.\" along with this program.  If not, see <http://www.gnu.org/licenses/>.
 .\"
 .\" For tolerably obvious reason, this needs to be processed through PIC.
 .\" It also needs to be processed through TBL and EQN.  Use "groff -p -e -t".
@@ -61,10 +61,12 @@ Eric S. Raymond
 .AB
 The \fBpic\fP language is a \fBtroff\fP extension that makes it easy
 to create and alter box-and-arrow diagrams of the kind frequently used
-in technical papers and textbooks.  This paper is both an introduction
-to and reference for \fIgpic\/\fP(1), the implementation distributed by
-the Free Software Foundation for use with \fIgroff\/\fP(1).  It also
-catalogs other implementations and explains the differences among them.
+in technical papers and textbooks.
+This paper is both an introduction to and reference for \fIgpic\/\fP(1),
+the implementation distributed by the Free Software Foundation for use
+with \fIgroff\/\fP(1).
+It also catalogs other implementations and explains the differences
+among them.
 .AE
 .\"%%TUTORIAL%%
 .
@@ -76,44 +78,49 @@ Introduction to PIC
 Why PIC?
 .PP
 The \fBpic\fP language provides an easy way to write procedural
-box-and-arrow diagrams to be included in \fBtroff\fP documents.  The
-language is sufficiently flexible to be quite useful for state charts,
-Petri-net diagrams, flow charts, simple circuit schematics, jumper
-layouts, and other kinds of illustration involving repetitive uses of
-simple geometric forms and splines.  Because these descriptions are
-procedural and object-based, they are both compact and easy to modify.
+box-and-arrow diagrams to be included in \fBtroff\fP documents.
+The language is sufficiently flexible to be quite useful for state
+charts, Petri-net diagrams, flow charts, simple circuit schematics,
+jumper layouts, and other kinds of illustration involving repetitive
+uses of simple geometric forms and splines.
+Because these descriptions are procedural and object-based, they are
+both compact and easy to modify.
 .PP
 The phrase \[lq]GNU pic\[rq] may refer to either of two \fBpic\fP
 implementations distributed by the Free Software Foundation and
-intended to accept the same input language.  The \fIgpic\/\fP(1)
-implementation is for use with the \fIgroff\/\fP(1) implementation of
-\fBtroff\fP.  The \fIpic2plot\/\fP(1) implementation runs standalone
-and is part of the \fBplotutils\fR package. Because both
-implementations are widely available in source form for free, they are
-good bets for writing very portable documentation.
+intended to accept the same input language.
+The \fIgpic\/\fP(1) implementation is for use with the \fIgroff\/\fP(1)
+implementation of \fBtroff\fP.
+The \fIpic2plot\/\fP(1) implementation runs standalone and is part of
+the \fBplotutils\fR package.
+Because both implementations are widely available in source form for
+free, they are good bets for writing very portable documentation.
 .
 .NH 2
 PIC Versions
 .PP
 The original 1984 pre-\fIditroff\/\fP(1) version of \fBpic\fP is long
-obsolete.  The rewritten 1991 version is still available as part of
-the Documenter's Work Bench module of System V.
+obsolete.
+The rewritten 1991 version is still available as part of the
+Documenter's Work Bench module of System V.
 .PP
 Where differences between Documenter's Work Bench (1991) \fBpic\fP and GNU
 \fBpic\fP need to be described, original \fBpic\fP is referred to as
-\[lq]DWB pic\[rq].  Details on the history of the program are given at the
-end of this document.
+\[lq]DWB pic\[rq].
+Details on the history of the program are given at the end of this
+document.
 .PP
 The \fBpic2plot\fR program does not require the rest of the
-\fIgroff\/\fP(1) toolchain to render graphics.  It can display
-\fBpic\fR diagrams in a X\~window, or generate output plots in a large
-number of other formats.  These formats include: PNG, PBM, PGM, PPM, GIF,
-SVG, Adobe Illustrator format, idraw-editable Postscript, the WebCGM
-format for Web-based vector graphics, the format used by the \fBxfig\fP
-drawing editor, the Hewlett-Packard PCL\~5 printer language, the
-Hewlett-Packard Graphics Language (by default, HP-GL/2), the ReGIS
-(remote graphics instruction set) format developed by DEC, Tektronix
-format, and device-independent GNU graphics metafile format.
+\fIgroff\/\fP(1) toolchain to render graphics.
+It can display \fBpic\fR diagrams in an X\~window, or generate output
+plots in a large number of other formats.
+These formats include: PNG, PBM, PGM, PPM, GIF, SVG, Adobe Illustrator
+format, idraw-editable Postscript, the WebCGM format for Web-based
+vector graphics, the format used by the \fBxfig\fP drawing editor, the
+Hewlett-Packard PCL\~5 printer language, the Hewlett-Packard Graphics
+Language (by default, HP-GL/2), the ReGIS (remote graphics instruction
+set) format developed by DEC, Tektronix format, and device-independent
+GNU graphics metafile format.
 .PP
 In this document, \fIgpic\/\fP(1) and \fIpic2plot\/\fP(1) extensions are
 marked as such.
@@ -123,25 +130,26 @@ marked as such.
 Invoking PIC
 .PP
 Every \fBpic\fP description is a little program describing drawing
-actions.  The \fB[gtn]roff\fP-dependent versions compile the program
-by \fIpic\/\fP(1) into \fIgtroff\/\fP(1) macros; the
-\fIpic2plot\/\fP(1) implementation uses a plotting library to draw the
-picture directly.  Programs that process or display
+actions.
+The \fB[gtn]roff\fP-dependent versions compile the program by
+\fIpic\/\fP(1) into \fIgtroff\/\fP(1) macros; the \fIpic2plot\/\fP(1)
+implementation uses a plotting library to draw the picture directly.
+Programs that process or display
 \fIgtroff\/\fP(1) output need not know or care that parts of the image
 began life as \fBpic\fP descriptions.
 .PP
 The \fIpic\/\fP(1) program tries to translate anything between \fB.PS\fP
-and \fB.PE\fP markers, and passes through everything else.  The normal
-definitions of \fB.PS\fP and \fB.PE\fP in the \fIms\fP macro package
-and elsewhere have also the side-effect of centering the \fBpic\fP output
-on the page.
+and \fB.PE\fP markers, and passes through everything else.
+The normal definitions of \fB.PS\fP and \fB.PE\fP in the \fIms\fP macro
+package and elsewhere have also the side-effect of centering the
+\fBpic\fP output on the page.
 .
 .NH 2
 PIC Error Messages
 .PP
 If you make a \fBpic\fP syntax error, \fIgpic\/\fP(1) issues an
-error message in the standard \fIgcc\/\fP(1)-like syntax.  A typical
-error message looks like this,
+error message in the standard \fIgcc\/\fP(1)-like syntax.
+A typical error message looks like this
 .KS
 .DS
 .CW
@@ -159,10 +167,12 @@ just after) the error location.
 Basic PIC Concepts
 .PP
 Pictures are described procedurally, as collections of objects
-connected by motions.  Normally, \fBpic\fP tries to string together
-objects left-to-right in the sequence they are described, joining them
-at visually natural points.  Here is an example illustrating the
-flow of data in \fBpic\fP processing:
+connected by motions.
+Normally, \fBpic\fP tries to string together objects left-to-right in
+the sequence they are described, joining them at visually natural
+points.
+Here is an example illustrating the flow of data in \fBpic\fP
+processing:
 .KS
 .PS
 ellipse "document";
@@ -198,20 +208,23 @@ ellipse "PostScript"
 .R
 .KE
 .LP
-This little program illustrates several \fBpic\fP basics.  Firstly, we
-see how to invoke three object types; ellipses, arrows, and boxes.  We
-see how to declare text lines to go within an object (and that text
-can have font changes in it).  We see how to change the line style of
-an object from solid to dashed.  And we see that a box can be made
-wider than its default size to accommodate more text (we'll discuss
-this facility in detail in the next section).
-.PP
-We also get to see \fBpic\fP's simple syntax.  Statements are ended by
-newlines or semicolons.  String quotes are required around all text
-arguments, whether or not they contain spaces.  In general, the order
-of command arguments and modifiers like \[lq]width 1.2\[rq] or
-\[lq]dashed\[rq] doesn't matter, except that the order of text arguments
-is significant.
+This little program illustrates several \fBpic\fP basics.
+Firstly, we see how to invoke three object types; ellipses, arrows, and
+boxes.
+We see how to declare text lines to go within an object (and that text
+can have font changes in it).
+We see how to change the line style of an object from solid to dashed.
+And we see that a box can be made wider than its default size to
+accommodate more text (we'll discuss this facility in detail in the next
+section).
+.PP
+We also get to see \fBpic\fP's simple syntax.
+Statements are ended by newlines or semicolons.
+String quotes are required around all text arguments, whether or not
+they contain spaces.
+In general, the order of command arguments and modifiers like \[lq]width
+1.2\[rq] or \[lq]dashed\[rq] doesn't matter, except that the order of
+text arguments is significant.
 .PP
 Here are all but one of the basic \fBpic\fP objects at their default sizes:
 .KS
@@ -230,14 +243,15 @@ arc; down; move; "arc"
 .PE
 .CE "2: Basic \fBpic\fP objects"
 .PP
-The missing simple object type is a \fIspline\fP.  There is also a way
-to collect objects into \fIblock composites\fP which allows you to
-treat the whole group as a single object (resembling a box) for many
-purposes.  We'll describe both of these later on.
+The missing simple object type is a \fIspline\fP.
+There is also a way to collect objects into \fIblock composites\fP which
+allows you to treat the whole group as a single object (resembling a
+box) for many purposes.
+We'll describe both of these later on.
 .PP
 The box, ellipse, circle, and block composite objects are \fIclosed\/\fR;
-lines, arrows, arcs and splines are \fIopen\fP.  This distinction
-is often important in explaining command modifiers.
+lines, arrows, arcs and splines are \fIopen\fP.
+This distinction is often important in explaining command modifiers.
 .PP
 Figure \n[H1]-2 was produced by the following \fBpic\fP program,
 which introduces some more basic concepts:
@@ -266,8 +280,9 @@ default distance (1/2 inch) in the current movement direction.
 .PP
 Secondly, see how we can also decorate lines and arrows with text.
 The line and arrow commands each take two arguments here, specifying
-text to go above and below the object.  If you wonder why one argument
-would not do, contemplate the output of \fBarrow "ow!"\fP:
+text to go above and below the object.
+If you wonder why one argument would not do, contemplate the output of
+\fBarrow "ow!"\fP:
 .KS
 .PS
 arrow "ow!"
@@ -275,8 +290,10 @@ arrow "ow!"
 .CE "3: Text centered on an arrow"
 .PP
 When a command takes one text string, \fBpic\fP tries to place it at
-the object's geometric center.  As you add more strings, \fBpic\fP
-treats them as a vertical block to be centered.  The program
+the object's geometric center.
+As you add more strings, \fBpic\fP treats them as a vertical block to be
+centered.
+The program
 .KS
 .DS
 .CW
@@ -302,12 +319,12 @@ line "1" "2" "3" "4" "5";
 .sp 2
 .CE "4: Effects of multiple text arguments"
 .PP
-The last line of Figure 3.2's program, `\fBarc; down; move;
+The last line of Figure 3-2's program, `\fBarc; down; move;
 "arc"\fP', describing the captioned arc, introduces several new ideas.
 Firstly, we see how to change the direction in which objects are
-joined.  Had we written \fBarc; move; "arc"\fP,
-omitting \fBdown\fP the caption would have been joined to the top
-of the arc, like this:
+joined.
+Had we written \fBarc; move; "arc"\fP, omitting \fBdown\fP the caption
+would have been joined to the top of the arc, like this:
 .KS
 .PS
 arc; move; "arc";
@@ -315,7 +332,8 @@ arc; move; "arc";
 .CE "5: Result of \fBarc; move; \"arc\"\fP"
 .PP
 This is because drawing an arc changes the default direction to the
-one its exit end points at.  To reinforce this point, consider:
+one its exit end points at.
+To reinforce this point, consider:
 .KS
 .PS
 arc cw; move; "arc";
@@ -348,18 +366,18 @@ joined to the end of the first.
 Finally, observe that a string, alone, is treated as text to be
 surrounded by an invisible box of a size either specified by width
 and height attributes or by the defaults \fBtextwid\fR and
-\fBtextht\fR.  Both are initially zero (because we don't know the
-default font size).
+\fBtextht\fR.
+Both are initially zero (because we don't know the default font size).
 .
 .
 .NH 1
 Sizes and Spacing
 .PP
-Sizes are specified in inches.  If you don't like inches, it's
-possible to set a global style variable \fBscale\fP that changes the
-unit.  Setting \fBscale = 2.54\fP effectively changes the internal
-unit to centimeters (all other size variable values are scaled
-correspondingly).
+Sizes are specified in inches.
+If you don't like inches, it's possible to set a global style variable
+\fBscale\fP that changes the unit.
+Setting \fBscale = 2.54\fP effectively changes the internal unit to
+centimeters (all other size variable values are scaled correspondingly).
 .
 .NH 2
 Default Sizes of Objects
@@ -389,22 +407,24 @@ The simplest way to think about these defaults is that they make the
 other basic objects fit snugly into a default-sized box.
 .PP
 \fIpic2plot\/\fP(1) does not necessarily emit a physical inch for
-each virtual inch in its drawing coordinate system.  Instead, it draws
-on a canvas 8\~virtual inches by 8\~virtual inches wide.  If its
-output page size is \[lq]letter\[rq], these virtual inches will map to
-real ones.  Specifying a different page size (such as, say,
-\[lq]a4\[rq]) will scale virtual inches so they are output as one
-eighth of the page width.  Also, \fIpic2plot\/\fP(1) centers all
-images by default, though the \fB\-n\fP option can be used to prevent
-this.
+each virtual inch in its drawing coordinate system.
+Instead, it draws on a canvas 8\~virtual inches by 8\~virtual inches
+wide.
+If its output page size is \[lq]letter\[rq], these virtual inches will
+map to real ones.
+Specifying a different page size (such as, say, \[lq]a4\[rq]) will scale
+virtual inches so they are output as one eighth of the page width.
+Also, \fIpic2plot\/\fP(1) centers all images by default, though the
+\fB\-n\fP option can be used to prevent this.
 .
 .NH 2
 Objects Do Not Stretch!
 .PP
 Text is rendered in the current font with normal troff line spacing.
 Boxes, circles, and ellipses do \fInot\fP automatically resize to fit
-enclosed text.  Thus, if you say \fBbox "this text far too long for a
-default box"\fP you'll get this:
+enclosed text.
+Thus, if you say \fBbox "this text far too long for a default box"\fP
+you'll get this:
 .KS
 .PS
 box "this text is far too long for a default box"
@@ -424,9 +444,10 @@ box width 3 "this text is far too long for a default box"
 .PE
 .CE "2: Result of \fBbox width 3 \"text far too long\"\fP"
 .PP
-This modifier takes a dimension in inches.  There is also a \[lq]height\[rq]
-modifier that changes a box's height.  The \fBwidth\fP keyword may
-be abbreviated to \fBwid\fP; the \fBheight\fP keyword to \fBht\fP.
+This modifier takes a dimension in inches.
+There is also a \[lq]height\[rq] modifier that changes a box's height.
+The \fBwidth\fP keyword may be abbreviated to \fBwid\fP; the
+\fBheight\fP keyword to \fBht\fP.
 .
 .NH 2
 Resizing Other Object Types
@@ -467,8 +488,10 @@ the radius also increases the size of the arc's bounding box.
 The `same' Keyword
 .PP
 In place of a dimension specification, you can use the keyword
-\fBsame\fR.  This gives the object the same size as the previous one
-of its type.  As an example, the program
+\fBsame\fR.
+This gives the object the same size as the previous one
+of its type.
+As an example, the program
 .KS
 .DS
 .CW
@@ -495,14 +518,15 @@ Diagonal Lines
 .PP
 It is possible to specify diagonal lines or arrows by adding multiple \fBup\fP,
 \fBdown\fP, \fBleft\fP, and \fBright\fP modifiers to the line object.
-Any of these can have a multiplier.  To understand the effects, think
-of the drawing area as being gridded with standard-sized boxes.
+Any of these can have a multiplier.
+To understand the effects, think of the drawing area as being gridded
+with standard-sized boxes.
 .KS
 .PS
 # Draw a demonstration up left arrow with grid box overlay
 define gridarrow
 {
-       move right 0.1
+       move right 0.5
        [
                {arrow up left $1;}
                box wid 0.5 ht 0.5 dotted with .nw at last arrow .end;
@@ -511,11 +535,7 @@ define gridarrow
                }
                move down from last arrow .center;
                [
-                       if ( $1 == boxht ) then {
-                               "\fBline up left\fP"
-                       } else {
-                               sprintf("\fBarrow up left %g\fP", $1)
-                       }
+                       sprintf("\fBarrow up left %g\fP", $1)
                ]
        ]
        move right 0.1 from last [] .e;
@@ -571,7 +591,8 @@ undef zigzag;
 .CE "3: \fBspline right 1 then down .5 left 1 then right 1\fP"
 .PP
 You can describe many natural-looking but irregular curves this
-way.  For example:
+way.
+For example:
 .KS
 .PS
 [spline right then up then left then down ->;]
@@ -584,9 +605,10 @@ move up 0.2;
 .PE
 .CE "4: Two more spline examples"
 .LP
-Note the arrow decorations.  Arrowheads can be applied naturally to
-any path-based object, line or spline.  We'll see how in the next
-section.
+Note the arrow decorations.
+Arrowheads can be applied naturally to any path-based object, line or
+spline.
+We'll see how in the next section.
 .
 .
 .NH 1
@@ -609,25 +631,27 @@ Revert to previous style; only works one level deep, does not stack.
 In the \fBpic\fP implementations that are preprocessors for a
 toolchain that include \fB[gtn]roff\fP, text objects may also contain
 \fB[gtn]roff\fP vertical- and horizontal-motion escapes such as \eh or \ev.
-Troff special glyphs are also available.  All \e-escapes will be
-passed through to the postprocessing stage and have their normal
-effects.  The base font family is set by the \fB[gtn]roff\fP
-environment at the time the picture is rendered.
+Troff special glyphs are also available.
+All \e-escapes will be passed through to the postprocessing stage and
+have their normal effects.
+The base font family is set by the \fB[gtn]roff\fP environment at the
+time the picture is rendered.
 .PP
 \fBpic2plot\fP replaces \fB[gtn]roff\fP horizontal- and vertical-motion
-escapes with \e-escapes of its own.  Troff special glyphs are not
-available, but in most back ends Latin-1 special characters and a
-square-root radical will be.  See the \fBpic2plot\fP documentation for
-full details.
+escapes with \e-escapes of its own.
+Troff special glyphs are not available, but in most back ends Latin-1
+special characters and a square-root radical will be.
+See the \fBpic2plot\fP documentation for full details.
 .
 .NH 2
 Dashed Objects
 .PP
 We've already seen that the modifier \fBdashed\fP can change the line
-style of an object from solid to dashed.  GNU \fBgpic\fP permits you to
-dot or dash ellipses, circles, and arcs (and splines in \*[tx] mode
-only); some versions of DWB may only permit dashing of lines and
-boxes.  It's possible to change the dash interval by specifying a
+style of an object from solid to dashed.
+GNU \fBgpic\fP permits you to dot or dash ellipses, circles, and arcs
+(and splines in \*[tx] mode only); some versions of DWB may only permit
+dashing of lines and boxes.
+It's possible to change the dash interval by specifying a
 number after the modifier.
 .PP
 .KS
@@ -647,11 +671,12 @@ box dashed 0.2 "0.2";
 .NH 2
 Dotted Objects
 .PP
-Another available qualifier is \fBdotted\fP.  GNU \fBgpic\fP permits
-you to dot or dash ellipses, circles, and arcs (and splines in \*[tx]
-mode only); some versions of DWB may only permit dashing of lines and
-boxes.  It too can be suffixed with a number to specify the interval
-between dots:
+Another available qualifier is \fBdotted\fP.
+GNU \fBgpic\fP permits you to dot or dash ellipses, circles, and arcs
+(and splines in \*[tx] mode only); some versions of DWB may only permit
+dashing of lines and boxes.
+It too can be suffixed with a number to specify the interval between
+dots:
 .KS
 .PS
 box dotted "default";
@@ -709,29 +734,30 @@ position.
 .NH 2
 Arrowheads
 .PP
-Lines and arcs can be decorated as well.  Any line or arc (and any
-spline as well) can be decorated with arrowheads by adding one or more
-as modifiers:
+Lines and arcs can be decorated as well.
+Any line or arc (and any spline as well) can be decorated with
+arrowheads by adding one or more as modifiers:
 .KS
 .PS
 line <- ->
 .PE
 .CE "5: Double-headed line made with  \fBline <- ->\fP"
 .PP
-In fact, the \fBarrow\fP command is just shorthand for \fBline ->\fP.  And
-there is a double-head modifier <->, so the figure above could have been made
-with \fBline <->\fP.
+In fact, the \fBarrow\fP command is just shorthand for \fBline ->\fP.
+And there is a double-head modifier <->, so the figure above could have
+been made with \fBline <->\fP.
 .PP
 Arrowheads have a \fBwidth\fP attribute, the distance across the rear;
 and a \fBheight\fP attribute, the length of the arrowhead along the shaft.
 .PP
 Arrowhead style is controlled by the style variable \fBarrowhead\fP.
-The DWB and GNU versions interpret it differently.  DWB defaults to
-open arrowheads and an \fBarrowhead\fP value of\~2; the Kernighan
-paper says a value of\~7 makes solid arrowheads.  GNU \fBgpic\fP
-defaults to solid arrowheads and an \fBarrowhead\fP value of\~1; a
-value of\~0 produces open arrowheads.  Note that solid arrowheads are
-always filled with the current outline color.
+The DWB and GNU versions interpret it differently.
+DWB defaults to open arrowheads and an \fBarrowhead\fP value of\~2; the
+Kernighan paper says a value of\~7 makes solid arrowheads.
+GNU \fBgpic\fP defaults to solid arrowheads and an \fBarrowhead\fP value
+of\~1; a value of\~0 produces open arrowheads.
+Note that solid arrowheads are always filled with the current outline
+color.
 .
 .NH 2
 Line Thickness
@@ -749,12 +775,15 @@ in \*[tx] output mode with the
 option, this means use the line thickness specified by
 .B .ps
 lines; in troff output mode, this means use a thickness proportional
-to the pointsize.  A zero value means draw the thinnest possible line
-supported by the output device.  Initially it has a value of -1.
+to the pointsize.
+A zero value means draw the thinnest possible line supported by the
+output device.
+Initially it has a value of -1.
 There is also a \fBthickness\fP attribute (which can be abbreviated to
-\fBthick\fP).  For example, \fBcircle thickness 1.5\fP would draw a
-circle using a line with a thickness of 1.5 points.  The thickness of
-lines is not affected by the value of the
+\fBthick\fP).
+For example, \fBcircle thickness 1.5\fP would draw a circle using a line
+with a thickness of 1.5 points.
+The thickness of lines is not affected by the value of the
 .B scale
 variable, nor by any width or height given in the
 .B .PS
@@ -763,34 +792,38 @@ line.
 .NH 2
 Invisible Objects
 .PP
-The modifier \fBinvis[ible]\fP makes an object entirely invisible.  This
-used to be useful for positioning text in an invisible object that is
-properly joined to neighboring ones.  Newer DWB versions and GNU
-\fBpic\fP treat stand-alone text in exactly this way.
+The modifier \fBinvis[ible]\fP makes an object entirely invisible.
+This used to be useful for positioning text in an invisible object that
+is properly joined to neighboring ones.
+Newer DWB versions and GNU \fBpic\fP treat stand-alone text in exactly
+this way.
 .
 .NH 2
 Filled Objects
 .PP
-It is possible to fill boxes, circles, and ellipses.  The
-modifier \fBfill[ed]\fP accomplishes this.  You can suffix it with a fill
-value; the default is given by the style variable \fBfillval\fP.
+It is possible to fill boxes, circles, and ellipses.
+The modifier \fBfill[ed]\fP accomplishes this.
+You can suffix it with a fill value; the default is given by the style
+variable \fBfillval\fP.
 .PP
 DWB \fBpic\fP and \fBgpic\fP have opposite conventions for fill values
-and different defaults.  DWB \fBfillval\fP defaults to 0.3 and smaller
-values are darker; GNU \fBfillval\fP uses 0 for white and 1 for black.
+and different defaults.
+DWB \fBfillval\fP defaults to 0.3 and smaller values are darker; GNU
+\fBfillval\fP uses 0 for white and 1 for black.
 .KS
 .PS
 circle fill; move; circle fill 0.4; move; circle fill 0.9;
 .PE
 .CE "6: \fBcircle fill; move; circle fill 0.4; move; circle fill 0.9;\fR"
 .PP
-GNU \fBgpic\fP makes some additional guarantees.  A fill value greater
-than 1 can also be used: this means fill with the shade of gray that
-is currently being used for text and lines.  Normally this is
-black, but output devices may provide a mechanism for changing this.
-The invisible attribute does not affect the filling of objects.  Any
-text associated with a filled object is added after the object
-has been filled, so that the text is not obscured by the filling.
+GNU \fBgpic\fP makes some additional guarantees.
+A fill value greater than 1 can also be used: this means fill with the
+shade of gray that is currently being used for text and lines.
+Normally this is black, but output devices may provide a mechanism for
+changing this.
+The invisible attribute does not affect the filling of objects.
+Any text associated with a filled object is added after the object has
+been filled, so that the text is not obscured by the filling.
 .PP
 The closed-object modifier \fBsolid\fP is equivalent to \fBfill\fP
 with the darkest fill value (DWB \fBpic\fP had this capability but
@@ -800,9 +833,11 @@ mentioned it only in a reference section).
 Colored Objects
 .PP
 As a GNU extension, three additional modifiers are available to specify
-colored objects.  \fBoutline\fP sets the color of the outline, \fBshaded\fP
-the fill color, and \fBcolor\fP sets both.  All three keywords expect a
-suffix specifying the color.  Example:
+colored objects.
+\fBoutline\fP sets the color of the outline, \fBshaded\fP the fill
+color, and \fBcolor\fP sets both.
+All three keywords expect a suffix specifying the color.
+Example:
 .KS
 .PS
 box color "yellow"; arrow color "cyan"; circle shaded "green" outline "black";
@@ -817,8 +852,8 @@ Predefined color names for \fI[gtn]roff\/\fP-based \fBpic\fP
 implementations are defined in the device macro files, for example
 \f(CWps.tmac\fP; additional colors can be defined with the
 \fB.defcolor\fP request (see the manual page of GNU \fItroff\/\fP(1)
-for more details).  Currently, color support is not available at all
-in \*[tx] mode.
+for more details).
+Currently, color support is not available at all in \*[tx] mode.
 .PP
 The \fIpic2plot\/\fP(1) carries with its own set of color names,
 essentially those recognized by the X\~window system with \[lq]grey\[rq]
@@ -832,11 +867,12 @@ color are set to the default value.
 More About Text Placement
 .PP
 By default, text is centered at the geometric center of the object it is
-associated with.  The modifier \fBljust\fP causes the left end to be
-at the specified point (which means that the text lies to the right of
-the specified place!), the modifier \fBrjust\fP puts the right end at
-the place.  The modifiers \fBabove\fP and \fBbelow\fP center the text
-one half line space in the given direction.
+associated with.
+The modifier \fBljust\fP causes the left end to be at the specified
+point (which means that the text lies to the right of the specified
+place!), the modifier \fBrjust\fP puts the right end at the place.
+The modifiers \fBabove\fP and \fBbelow\fP center the text one half line
+space in the given direction.
 .PP
 Text attributes can be combined:
 .KS
@@ -852,9 +888,9 @@ move;
 .CE "1: Text attributes"
 .PP
 What actually happens is that \fIn\fP text strings are centered in a box
-that is \fBtextwid\fP wide by \fBtextht\fP high.  Both these variables
-are initially zero (that is \fBpic\fR's way of not making assumptions
-about \fI[tg]roff\/\fP(1)'s default point size).
+that is \fBtextwid\fP wide by \fBtextht\fP high.
+Both these variables are initially zero (that is \fBpic\fR's way of not
+making assumptions about \fI[tg]roff\/\fP(1)'s default point size).
 .PP
 In GNU \fBgpic\fR, objects can have an
 .B aligned
@@ -874,8 +910,8 @@ end points are coincident.
 More About Direction Changes
 .PP
 We've already seen how to change the direction in which objects are
-composed from rightwards to downwards.  Here are some more
-illustrative examples:
+composed from rightwards to downwards.
+Here are some more illustrative examples:
 .KS
 .PS
 down;
@@ -947,9 +983,11 @@ ellipse
 .DE
 .KE
 .LP
-Why is this?  Because the exit point for the current direction is
-already set when you draw the object.  The second arrow in Figure
-\*[SN]2 dropped downwards from the circle's attachment point for an
+Why is this?
+Because the exit point for the current direction is already set when you
+draw the object.
+The second arrow in Figure \*[SN]2 dropped downwards from the circle's
+attachment point for an
 object to be joined to the right.
 .PP
 The meaning of the command \fBmove to last circle .s\fP should be obvious.
@@ -961,33 +999,38 @@ important topics; locations and object names.
 Naming Objects
 .PP
 The most natural way to name locations in \fBpic\fP is relative to
-objects.  In order to do this, you have to be able you have to be able
-to name objects.  The \fBpic\fP language has rich facilities for this
-that try to emulate the syntax of English.
+objects.
+In order to do this, you have to be able to name
+objects.
+The \fBpic\fP language has rich facilities for this that try to emulate
+the syntax of English.
 .
 .NH 2
 Naming Objects By Order Of Drawing
 .PP
 The simplest (and generally the most useful) way to name an object is
-with a \fBlast\fP clause.  It needs to be followed by an object type
-name; \fBbox\fP, \fBcircle\fP, \fBellipse\fP, \fBline\fP, \fBarrow\fP,
-\fBspline\fP, \fB""\fP, or \fB[]\fP (the last type refers to a \fIcomposite
-object\fP which we'll discuss later).  So, for example, the \fBlast
-circle\fP clause in the program attached to Figure \*[SN]3 refers to the
-last circle drawn.
+with a \fBlast\fP clause.
+It needs to be followed by an object type name; \fBbox\fP, \fBcircle\fP,
+\fBellipse\fP, \fBline\fP, \fBarrow\fP, \fBspline\fP, \fB""\fP, or
+\fB[]\fP (the last type refers to a \fIcomposite object\fP which we'll
+discuss later).
+So, for example, the \fBlast circle\fP clause in the program attached to
+Figure \*[SN]3 refers to the last circle drawn.
 .PP
 More generally, objects of a given type are implicitly numbered
-(starting from\~1).  You can refer to (say) the third ellipse in the
-current picture with \fB3rd ellipse\fP, or to the first box as \fB1st
-box\fP, or to the fifth text string (which isn't an attribute to another
-object) as \fB5th ""\fP.
+(starting from\~1).
+You can refer to (say) the third ellipse in the current picture with
+\fB3rd ellipse\fP, or to the first box as \fB1st box\fP, or to the fifth
+text string (which isn't an attribute to another object) as \fB5th
+""\fP.
 .PP
 Objects are also numbered backwards by type from the last one.
 You can say \fB2nd last box\fP to get the second-to-last box, or
 \fB3rd last ellipse\fP to get the third-to-last ellipse.
 .PP
 In places where \fIn\/\fBth\fR is allowed, \fB`\fIexpr\/\fB'th\fR is
-also allowed.  Note that
+also allowed.
+Note that
 .B 'th
 is a single token: no space is allowed between the
 .B '
@@ -1007,9 +1050,10 @@ for i = 1 to 4 do {
 .NH 2
 Naming Objects With Labels
 .PP
-You can also specify an object by referring to a label.  A label is a
-word (which must begin with a capital letter) followed by a colon;
-you declare it by placing it immediately before the object drawing command.
+You can also specify an object by referring to a label.
+A label is a word (which must begin with a capital letter) followed by a
+colon; you declare it by placing it immediately before the object
+drawing command.
 For example, the program
 .KS
 .DS
@@ -1037,23 +1081,24 @@ arrow right at A .r;
 .PE
 .CE "1: Example of label use"
 The \fBat\fP statement in the fourth line uses the label \fBA\fP (the
-behavior of \fBat\fP is explained in the next section).  We'll
-see later on that labels are most useful for referring to block composite
-objects.
+behavior of \fBat\fP is explained in the next section).
+We'll see later on that labels are most useful for referring to block
+composite objects.
 .PP
 Labels are not constants but variables (you can view colon as a sort
-of assignment).  You can say something like \fBA: A + (1,0);\fP
-and the effect is to reassign the label \fBA\fR to designate a
-position one inch to the right of its old value.
+of assignment).
+You can say something like \fBA: A + (1,0);\fP and the effect is to
+reassign the label \fBA\fR to designate a position one inch to the right
+of its old value.
 .
 .
 .NH 1
 Describing locations
 .PP
-The location of points can be described in many different ways.  All these
-forms are interchangeable as for as the \fBpic\fP language syntax is
-concerned; where you can use one, any of the others that would make
-semantic sense are allowed.
+The location of points can be described in many different ways.
+All these forms are interchangeable as for as the \fBpic\fP language
+syntax is concerned; where you can use one, any of the others that would
+make semantic sense are allowed.
 .PP
 The special label \fBHere\fR always refers to the current position.
 .
@@ -1063,24 +1108,27 @@ Absolute Coordinates
 The simplest is absolute coordinates in inches; \fBpic\fP uses a
 Cartesian system with (0,0) at the lower left corner of the virtual
 drawing surface for each picture (that is, X\~increases to the right
-and Y\~increases upwards).  An absolute location may always be written in the
-conventional form as two comma-separated numbers surrounded by
-parentheses (and this is recommended for clarity).  In contexts where
-it creates no ambiguity, the pair of X and Y\~coordinates suffices
-without parentheses.
-.PP
-It is a good idea to avoid absolute coordinates, however.  They tend
-to make picture descriptions difficult to understand and modify.
+and Y\~increases upwards).
+An absolute location may always be written in the conventional form as
+two comma-separated numbers surrounded by parentheses (and this is
+recommended for clarity).
+In contexts where it creates no ambiguity, the pair of X and
+Y\~coordinates suffices without parentheses.
+.PP
+It is a good idea to avoid absolute coordinates, however.
+They tend to make picture descriptions difficult to understand and
+modify.
 Instead, there are quite a number of ways to specify locations
 relative to \fBpic\fP objects and previous locations.
 .PP
 Another possibility of surprise is the fact that \fBpic\fP crops the
-picture to the smallest bounding box before writing it out.  For
-example, if you have a picture consisting of a small box with its lower
-left corner at (2,2) and another small box with its upper right corner
-at (5,5), the width and height of the image are both 3\~units and
-not\~5.  To get the origin at (0,0) included, simply add an invisible
-object to the picture, positioning the object's left corner at (0,0).
+picture to the smallest bounding box before writing it out.
+For example, if you have a picture consisting of a small box with its
+lower left corner at (2,2) and another small box with its upper right
+corner at (5,5), the width and height of the image are both 3\~units and
+not\~5.
+To get the origin at (0,0) included, simply add an invisible object to
+the picture, positioning the object's left corner at (0,0).
 .
 .NH 2
 Locations Relative to Objects
@@ -1090,12 +1138,14 @@ drawn or the destination of the last \fBmove\fP.
 .PP
 Alone and unqualified, a \fBlast circle\fP or any other way of
 specifying a closed-object or arc location refers as a position to the
-geometric center of the object.  Unqualified, the name of a line or
-spline object refers to the position of the object start.
+geometric center of the object.
+Unqualified, the name of a line or spline object refers to the position
+of the object start.
 .PP
 Also, \fBpic\fP objects have quite a few named locations
-associated with them.  One of these is the object center, which can be
-indicated (redundantly) with the suffix \fB.center\fP (or just \fB.c\fP).
+associated with them.
+One of these is the object center, which can be indicated (redundantly)
+with the suffix \fB.center\fP (or just \fB.c\fP).
 Thus, \fBlast circle \&.center\fP is equivalent to \fBlast
 circle\fP.
 .NH 3
@@ -1128,9 +1178,10 @@ compass(ellipse wid 1.5 ht 1);
 .CE "1: Compass points"
 .LP
 these are the locations where eight compass rays from the geometric center
-would intersect the figure.  So when we say \fBlast circle .s\fP we are
-referring to the south compass point of the last circle drawn.  The
-explanation of Figure 7.3's program is now complete.
+would intersect the figure.
+So when we say \fBlast circle .s\fP we are referring to the south
+compass point of the last circle drawn.
+The explanation of Figure 8-3's program is now complete.
 .PP
 (In case you dislike compass points, the names \fB.top\fP,
 \&\fB.bottom\fP, \fB.left\fP and \fB.right\fP are synonyms for \fB.n\fP,
@@ -1141,22 +1192,23 @@ The names \fBcenter\fP, \fBtop\fP, \fBbottom\fP, \fBleft\fP, \fBright\fP,
 \fBnorth\fP, \fBsouth\fP, \fBeast\fP, and \fBwest\fP can also be used
 (without the leading dot) in a prefix form marked by \fBof\fP; thus,
 \fBcenter of last circle\fP and \fBtop of 2nd last ellipse\fP are both
-valid object references.  Finally, the names \fBleft\fP and \fBright\fP
-can be prefixed with \fBupper\fP and \fBlower\fP which both have the
-obvious meaning.
+valid object references.
+Finally, the names \fBleft\fP and \fBright\fP can be prefixed with
+\fBupper\fP and \fBlower\fP which both have the obvious meaning.
 .PP
 Arc objects also have compass points; they are the compass points of
 the implied circle.
 .PP
 Non-closed objects (line, arrow, or spline) have compass points too, but
-the locations of them are completely arbitrary.  In particular, different
-\fBpic\fP implementations return different locations.
+the locations of them are completely arbitrary.
+In particular, different \fBpic\fP implementations return different
+locations.
 .NH 3
 Locations Relative to Open Objects
 .PP
 Every open object (line, arrow, arc, or spline) has three named
-points: \fB.start\fP, \fB.center\fP (or \fB.c\fP), and \fB.end\fP.  They
-can also be used without leading dots in the \fBof\fP prefix form.
+points: \fB.start\fP, \fB.center\fP (or \fB.c\fP), and \fB.end\fP.
+They can also be used without leading dots in the \fBof\fP prefix form.
 The center of an arc is the center of its circle, but the center of
 a line, path, or spline is halfway between its endpoints.
 .KS
@@ -1191,21 +1243,22 @@ Positions may be added or subtracted to yield a new position (to be
 more precise, you can only add a position and an expression pair; the
 latter must be on the right side of the addition or subtraction sign).
 The result is the conventional vector sum or difference of coordinates.
-For example, \fBlast box .ne + (0.1, 0)\fP is a valid position.  This
-example illustrates a common use, to define a position slightly offset
-from a named one (say, for captioning purposes).
+For example, \fBlast box .ne + (0.1, 0)\fP is a valid position.
+This example illustrates a common use, to define a position slightly
+offset from a named one (say, for captioning purposes).
 .NH 3
 Interpolation Between Positions
 .PP
-A position may be interpolated between any two positions.  The syntax
-is `\fIfraction\fP \fBof the way between\fP \fIposition1\fP \fBand\fP
-\fIposition2\fP'.  For example, you can say \fB1/3 of the way between
-Here and last ellipse .ne\fP.  The fraction may be in
-numerator/denominator form or may be an ordinary number (values are
-\fInot\fP restricted to [0,1]).  As an alternative to this verbose
-syntax, you can say `\fIfraction\fP  \fB<\,\fP\fIposition1\fP \fB,\fP
-\fIposition2\/\fP\fB>\fP'; thus, the example could also be written as
-\fB1/3 <Here, last ellipse>\fP.
+A position may be interpolated between any two positions.
+The syntax is `\fIfraction\fP \fBof the way between\fP \fIposition1\fP
+\fBand\fP \fIposition2\fP'.
+For example, you can say \fB1/3 of the way between Here and last ellipse
+\&.ne\fP.
+The fraction may be in numerator/denominator form or may be an ordinary
+number (values are \fInot\fP restricted to [0,1]).
+As an alternative to this verbose syntax, you can say `\fIfraction\fP
+\fB<\,\fP\fIposition1\fP \fB,\fP \fIposition2\/\fP\fB>\fP'; thus, the
+example could also be written as \fB1/3 <Here, last ellipse>\fP.
 .KS
 .PS
 arrow up right;
@@ -1244,9 +1297,9 @@ Projections of Points
 .PP
 Given two positions \fIp\fP and \fIq\fP, the position
 \fB(\,\fP\fIp\fP\fB,\fP \fIq\fP\fB)\fP has the X\~coordinate of \fIp\fP
-and the Y coordinate of \fIq\fP.  This can be helpful in placing an
-object at one of the corners of the virtual box defined by two other
-objects.
+and the Y coordinate of \fIq\fP.
+This can be helpful in placing an object at one of the corners of the
+virtual box defined by two other objects.
 .KS
 .PS
 box invis wid 2 height 1;
@@ -1261,8 +1314,9 @@ dot(last box .nw); "A" ljust at last circle + (-0.1, 0.1)
 Using Locations
 .PP
 There are four ways to use locations; \fBat\fP, \fBfrom\fP, \fBto\fP,
-and \fBwith\fP.  All four are object modifiers; that is, you use them
-as suffixes to a drawing command.
+and \fBwith\fP.
+All four are object modifiers; that is, you use them as suffixes to a
+drawing command.
 .PP
 The \fBat\fP modifier says to draw a closed object or arc with its
 center at the following location, or to draw a line/spline/arrow
@@ -1272,9 +1326,10 @@ The \fBto\fP modifier can be used alone to specify a move destination.
 The \fBfrom\fP modifier can be used alone in the same way as \fBat\fP.
 .PP
 The \fBfrom\fP and \fBto\fP modifiers can be used with a \fBline\fR or
-\fBarc\fR command to specify start and end points of the object.  In
-conjunction with named locations, this offers a very flexible
-mechanism for connecting objects.  For example, the following program
+\fBarc\fR command to specify start and end points of the object.
+In conjunction with named locations, this offers a very flexible
+mechanism for connecting objects.
+For example, the following program
 .KS
 .DS
 .CW
@@ -1302,8 +1357,8 @@ arc cw from 1/3 of the way \
 .PP
 The \fBwith\fP modifier allows you to identify a named attachment
 point of an object (or a position within the object) with another point.
-This is very useful for connecting objects in a natural way.  For an
-example, consider these two programs:
+This is very useful for connecting objects in a natural way.
+For an example, consider these two programs:
 .KS
 .PS
 [
@@ -1311,7 +1366,7 @@ example, consider these two programs:
                box wid 0.5 ht 0.5;
                box wid 0.75 ht 0.75;
        ]
-       move down 0.3 from last [] .s 0.1;
+       move 0.1 down 0.3 from last [] .s;
        "\fBbox wid 0.5 ht 0.5; box wid 0.75 ht 0.75\fP"
 ]
 move from last [].e 1.5
@@ -1320,7 +1375,7 @@ move from last [].e 1.5
                box wid 0.5 ht 0.5;
                box wid 0.75 ht 0.75 with .sw at last box .se;
        ]
-       move down 0.3 from last [] .s 0.1;
+       move 0.1 down 0.3 from last [] .s;
        box invisible "\fBbox wid 0.5 ht 0.5;\fP" \
          "\fBbox wid 0.75 ht 0.75 with .sw at last box .se;\fP"
 ]
@@ -1332,7 +1387,8 @@ The `chop' Modifier
 .PP
 When drawing lines between circles that don't intersect them at a
 compass point, it is useful to be able to shorten a line by the radius
-of the circle at either or both ends.  Consider the following program:
+of the circle at either or both ends.
+Consider the following program:
 .KS
 .DS
 .CW
@@ -1361,14 +1417,16 @@ arrow from 3rd circle to 1st circle chop
 .CE "8: The \fBchop\fR modifier"
 .LP
 Notice that the \fBchop\fR attribute moves arrowheads rather than
-stepping on them.  By default, the \fBchop\fR modifier shortens both
-ends of the line by \fBcirclerad\fR.  By suffixing it with a number
-you can change the amount of chopping.
+stepping on them.
+By default, the \fBchop\fR modifier shortens both ends of the line by
+\fBcirclerad\fR.
+By suffixing it with a number you can change the amount of chopping.
 .PP
 If you say \fBline .\|.\|.\& chop \fIr1\fP chop \fIr2\fP\fR with \fIr1\fP
 and \fIr2\fP both numbers, you can vary the amount of chopping at both
-ends.  You can use this in combination with trigonometric functions
-to write code that deals with more complex intersections.
+ends.
+You can use this in combination with trigonometric functions to write
+code that deals with more complex intersections.
 .
 .
 .NH 1
@@ -1381,17 +1439,19 @@ grouping\fP and \fIblock composites\fP.
 Brace Grouping
 .PP
 The simpler method is simply to group a set of objects within curly
-bracket or brace characters.  On exit from this grouping, the current
-position and direction are restored to their value when the opening
-brace was encountered.
+bracket or brace characters.
+On exit from this grouping, the current position and direction are
+restored to their value when the opening brace was encountered.
 .
 .NH 2
 Block Composites
 .PP
 A block composite object is created a series of commands enclosed by
-square brackets.  The composite can be treated for most purposes like
-a single closed object, with the size and shape of its bounding box.
-Here is an example.  The program fragment
+square brackets.
+The composite can be treated for most purposes like a single closed
+object, with the size and shape of its bounding box.
+Here is an example.
+The program fragment
 .KS
 .DS
 .CW
@@ -1409,8 +1469,8 @@ A: [
 .KE
 .LP
 yields the block in figure \n[H1]-1, which we show both with and
-without its attachment points.  The block's location becomes the
-value of \fBA\fP.
+without its attachment points.
+The block's location becomes the value of \fBA\fP.
 .KS
 .PS
 define junction {
@@ -1429,20 +1489,24 @@ compass([junction()]);
 .CE "1: A sample composite object"
 .LP
 To refer to one of the composite's attachment points, you can say
-(for example) \fBA .s\fP.  For purposes of object naming, composites
-are a class.  You could write \fBlast [] .s\fP as an equivalent
-reference, usable anywhere a location is needed.  This construction is
-very important for putting together large, multi-part diagrams.
+(for example) \fBA .s\fP.
+For purposes of object naming, composites are a class.
+You could write \fBlast [] .s\fP as an equivalent reference, usable
+anywhere a location is needed.
+This construction is very important for putting together large,
+multi-part diagrams.
 .PP
 Blocks are also a variable-scoping mechanism, like a \fIgroff\/\fP(1)
-environment.  All variable assignments done inside a block are undone
-at the end of it.  To get at values within a block, write a name of
-the block followed by a dot, followed by the label you
-want.  For example, we could refer the the center of the box in the
-above composite as \fBlast [] .Caption\fP or \fBA.Caption\fP.
+environment.
+All variable assignments done inside a block are undone at the end of it.
+To get at values within a block, write a name of the block followed by a
+dot, followed by the label you want.
+For example, we could refer the center of the box in the above composite as
+\fBlast [] \&.Caption\fP or \fBA.Caption\fP.
 .PP
 This kind of reference to a label can be used in any way any other
-location can be.  For example, if we added \fB"Hi!" at A.Caption\fP
+location can be.
+For example, if we added \fB"Hi!" at A.Caption\fP
 the result would look like this:
 .KS
 .PS
@@ -1452,9 +1516,9 @@ A: [junction();]
 .CE "2: Adding a caption using interior labeling"
 .PP
 You can also use interior labels in either part of a \fBwith\fR
-modifier.  This means that the example composite could be placed
-relative to its caption box by a command containing \fBwith A.Caption
-at\fP.
+modifier.
+This means that the example composite could be placed relative to its
+caption box by a command containing \fBwith A.Caption at\fP.
 .PP
 Note that both width and height of the block composite object are always
 positive:
@@ -1465,7 +1529,7 @@ positive:
                box wid -0.5 ht 0.5
                box wid 0.75 ht 0.75
        ]
-       move down 0.3 from last [].s 0.1
+       move 0.1 down 0.3 from last [].s
        "\fBbox wid -0.5 ht 0.5; box wid 0.75 ht 0.75\fP"
 ]
 move from last [].e 2
@@ -1474,14 +1538,15 @@ move from last [].e 2
                [ box wid -0.5 ht 0.5 ]
                box wid 0.75 ht 0.75
        ]
-       move down 0.3 from last [].s 0.1
+       move 0.1 down 0.3 from last [].s
        "\fB[box wid -0.5 ht 0.5]; box wid 0.75 ht 0.75\fP"
 ]
 .PE
 .CE "3: Composite block objects always have positive width and height"
 .PP
-Blocks may be nested.  This means you can use block attachment points
-to build up complex diagrams hierarchically, from the inside out.
+Blocks may be nested.
+This means you can use block attachment points to build up complex
+diagrams hierarchically, from the inside out.
 Note that \fBlast\fP and the other sequential naming mechanisms
 don't look inside blocks, so if you have a program that looks
 like
@@ -1504,7 +1569,8 @@ the arrow in the last line is attached to object \fBP\fP, not
 object \fBQ\fP.
 .PP
 In DWB \fBpic\fP, only references one level deep into enclosed blocks
-were permitted.  GNU \fBgpic\fP removes this restriction.
+were permitted.
+GNU \fBgpic\fP removes this restriction.
 .PP
 The combination of block variable scoping, assignability of labels and
 the macro facility that we'll describe later on can be used to
@@ -1516,9 +1582,10 @@ block braces).
 Style Variables
 .PP
 There are a number of global style variables in \fBpic\fR that can be used to
-change its overall behavior.  We've mentioned several of them in
-previous sections.  They're all described here.  For each variable,
-the default is given.
+change its overall behavior.
+We've mentioned several of them in previous sections.
+They're all described here.
+For each variable, the default is given.
 .TS H
 center, tab(@), linesize(2);
 lb | lb | lb
@@ -1576,21 +1643,23 @@ State variables retain their values across pictures until reset.
 Expressions, Variables, and Assignment
 .PP
 A number is a valid expression, of course (all numbers are stored
-internally as floating-point).  Decimal-point notation is acceptable;
+internally as floating-point).
+Decimal-point notation is acceptable;
 in GNU \fBgpic\fR, scientific notation in C's `e' format (like
 \f(CW5e-2\fP) is accepted.
 .PP
 Anywhere a number is expected, the language also accepts a
-variable.  Variables may be the built-in style variable described in
-the last section, or new variables created by assignment.
+variable.
+Variables may be the built-in style variable described in the last
+section, or new variables created by assignment.
 .PP
 DWB \fBpic\fP supports only the ordinary assignment via \fB=\fP, which
 defines the variable (on the left side of the equal sign) in the current
 block if it is not already defined there, and then changes the value (on
-the right side) in the current block.  The variable is not visible outside
-of the block.  This is similar to the C\~programming language where a
-variable within a block shadows a variable with the same name outside of
-the block.
+the right side) in the current block.
+The variable is not visible outside of the block.
+This is similar to the C\~programming language where a variable within a
+block shadows a variable with the same name outside of the block.
 .PP
 GNU \fBgpic\fP supports an alternate form of assignment using \fB:=\fP.
 The variable must already be defined, and the value is assigned to
@@ -1612,8 +1681,8 @@ print x " " y
 prints \fB3 5\fP.
 .PP
 You can use the height, width, radius, and x and y coordinates of any
-object or corner in expressions.  If \fBA\fP is an object label or name,
-all the following are valid:
+object or corner in expressions.
+If \fBA\fP is an object label or name, all the following are valid:
 .KS
 .DS
 .CW
@@ -1629,11 +1698,12 @@ A.ht                 # and its height
 Note the second expression, showing how to extract a corner coordinate.
 .PP
 Basic arithmetic resembling those of C operators are available; \fB+\fP,
-\fB*\fP, \fB-\fP, \fB/\fP, and \fB%\fP.  So is \fB^\fP for exponentiation.
-Grouping is permitted in the usual way using parentheses.  GNU \fBgpic\fP
-allows logical operators to appear in expressions; \fB!\&\fP (logical
-negation, not factorial), \fB&&\fP, \fB|\||\fP, \fB==\fP, \fB!=\fP,
-\fB>=\fP, \fB<=\fP, \fB<\fP, \fB>\fP.
+\fB*\fP, \fB-\fP, \fB/\fP, and \fB%\fP.
+So is \fB^\fP for exponentiation.
+Grouping is permitted in the usual way using parentheses.
+GNU \fBgpic\fP allows logical operators to appear in expressions;
+\fB!\&\fP (logical negation, not factorial), \fB&&\fP, \fB|\||\fP,
+\fB==\fP, \fB!=\fP, \fB>=\fP, \fB<=\fP, \fB<\fP, \fB>\fP.
 .PP
 Various built-in functions are supported: \fBsin(\fIx\fB)\fR,
 \fBcos(\fIx\fB)\fR, \fBlog(\fIx\fB)\fR, \fBexp(\fIx\fB)\fR,
@@ -1659,9 +1729,10 @@ function that only takes %, %e, %f, and %g format strings.
 Macros
 .PP
 You can define macros in \fBpic\fP, with up to 32 arguments (up to 16
-on EBCDIC platforms).  This is useful for diagrams with
-repetitive parts.  In conjunction with the scope rules for block
-composites, it effectively gives you the ability to write functions.
+on EBCDIC platforms).
+This is useful for diagrams with repetitive parts.
+In conjunction with the scope rules for block composites, it effectively
+gives you the ability to write functions.
 .PP
 The syntax is
 .DS
@@ -1671,7 +1742,8 @@ The syntax is
 .DE
 .LP
 This defines \fIname\fR as a macro to be replaced by the replacement
-text (not including the braces).  The macro may be called as
+text (not including the braces).
+The macro may be called as
 .DS
 .CW
 \fIname\fB(\fIarg1, arg2, \|.\|.\|.\& argn\fB)\fR
@@ -1778,16 +1850,16 @@ This macro example illustrates how you can combine [], brace grouping,
 and variable assignment to write true functions.
 .PP
 One detail the example above does not illustrate is the fact that
-macro argument parsing is not token-oriented.  If you call
-\fBjumper(\ 1\ )\fP, the value of $1 is \fB"\ 1\ "\fP.  You could
-even call \fBjumper(big\ string)\fP to give $1 the value
+macro argument parsing is not token-oriented.
+If you call \fBjumper(\ 1\ )\fP, the value of $1 is \fB"\ 1\ "\fP.
+You could even call \fBjumper(big\ string)\fP to give $1 the value
 \fB"big\ string"\fP.
 .PP
 If you want to pass in a coordinate pair, you can avoid getting
 tripped up by the comma by wrapping the pair in parentheses.
 .PP
-Macros persist through pictures.  To undefine a macro, say \fBundef\fP
-\fIname\fR; for example,
+Macros persist through pictures.
+To undefine a macro, say \fBundef\fP \fIname\fR; for example,
 .DS
 \f(CWundef jumper\fP
 \f(CWundef jumperblock\fP
@@ -1811,20 +1883,22 @@ The statement
 .DE
 .LP
 inserts the contents of \fIfilename\fR in the \fBpic\fP input stream.
-Any \fB.PS\fP/\fB.PE\fP pair in the file is ignored.  You
-can use this to include pre-generated images.
+Any \fB.PS\fP/\fB.PE\fP pair in the file is ignored.
+You can use this to include pre-generated images.
 .PP
 A variant of this statement replicates the \fBcopy thru\fP feature of
-\fIgrap\/\fP(1).  The call
+\fIgrap\/\fP(1).
+The call
 .DS
 \f(CWcopy\fP \fIfilename\fR \f(CWthru\fP \fImacro\fP
 .DE
 .LP
 calls \fImacro\fP (which may be either a name or replacement text)
 on the arguments obtained by breaking each line of the file into
-blank-separated fields.  The macro may have up to 9\~arguments.  The
-replacement text may be delimited by braces or by a pair of instances
-of any character not appearing in the rest of the text.
+blank-separated fields.
+The macro may have up to 9\~arguments.
+The replacement text may be delimited by braces or by a pair of
+instances of any character not appearing in the rest of the text.
 .PP
 If you write
 .DS
@@ -1879,8 +1953,8 @@ box
 Debug Messages
 .PP
 The command \fBprint\fR accepts any number of arguments, concatenates
-their output forms, and writes the result to standard error.  Each
-argument must be an expression, a position, or a text string.
+their output forms, and writes the result to standard error.
+Each argument must be an expression, a position, or a text string.
 .
 .NH 2
 Escape to Post-Processor
@@ -1891,7 +1965,8 @@ If you write
 .DE
 .LP
 \fBpic\fP concatenates the arguments and pass them through as a line
-to troff or \*[tx].  Each
+to troff or \*[tx].
+Each
 .I arg
 must be an expression, a position, or text.
 This has a similar effect to a line beginning with
@@ -1931,17 +2006,19 @@ The command
 .LP
 macro-expands the text in braces, then executes it as a shell command.
 This could be used to generate images or data tables for later
-inclusion.  The delimiters shown as {} here may also be two copies of
-any one character not present in the shell command text.  In either
-case, the body may contain balanced {} pairs.  Strings in the body
-may contain balanced or unbalanced braces in any case.
+inclusion.
+The delimiters shown as {} here may also be two copies of any one
+character not present in the shell command text.
+In either case, the body may contain balanced {} pairs.
+Strings in the body may contain balanced or unbalanced braces in any
+case.
 .
 .
 .NH 1
 Control-flow constructs
 .PP
-The \fBpic\fP language provides conditionals and looping.  For
-example,
+The \fBpic\fP language provides conditionals and looping.
+For example,
 .KS
 .DS
 .CW
@@ -2036,25 +2113,26 @@ Eithe or both of the
 or
 .I Y
 pairs may instead be balanced pairs of
-braces ({ and\~}) as in the \fBsh\fR command.  In either case, the
-\fIif-true\fR may contain balanced pairs of braces.  None of these
-delimiters are seen inside strings.
+braces ({ and\~}) as in the \fBsh\fR command.
+In either case, the \fIif-true\fR may contain balanced pairs of braces.
+None of these delimiters are seen inside strings.
 .PP
 All the usual relational operators my be used in conditional expressions;
 \fB!\&\fP (logical negation, not factorial), \fB&&\fP, \fB|\||\fP, \fB==\fP,
 \fB!=\fP, \fB>=\fP, \fB<=\fP, \fB<\fP, \fB>\fP.
 .PP
-String comparison is also supported using \fB==\fP and \fB!=\fP.  String
-comparisons may need to be parenthesized to avoid syntactic
+String comparison is also supported using \fB==\fP and \fB!=\fP.
+String comparisons may need to be parenthesized to avoid syntactic
 ambiguities.
 .
 .
 .NH 1
 Interface To [gt]roff
 .PP
-The output of \fBpic\fP is \fB[gt]roff\fP drawing commands.  The GNU
-\fIgpic\/\fP(1) command warns that it relies on drawing extensions
-present in \fIgroff\/\fP(1) that are not present in \fItroff\/\fP(1).
+The output of \fBpic\fP is \fB[gt]roff\fP drawing commands.
+The GNU \fIgpic\/\fP(1) command warns that it relies on drawing
+extensions present in \fIgroff\/\fP(1) that are not present in
+\fItroff\/\fP(1).
 .
 .NH 2
 Scaling Arguments
@@ -2062,22 +2140,23 @@ Scaling Arguments
 The DWB \fIpic\/\fP(1) program accepts one or two arguments to
 \&\fB.PS\fP, which is interpreted as a width and height in inches to
 which the results of \fIpic\/\fP(1) should be scaled (width and height
-scale independently).  If there is only one argument, it is
-interpreted as a width to scale the picture to, and height is
-scaled by the same proportion.
+scale independently).
+If there is only one argument, it is interpreted as a width to scale the
+picture to, and height is scaled by the same proportion.
 .PP
 GNU \fBgpic\fP is less general; it accepts a single width to scale
-to, or a zero width and a maximum height to scale to.  With
-two non-zero arguments, it scales to the maximum height.
+to, or a zero width and a maximum height to scale to.
+With two non-zero arguments, it scales to the maximum height.
 .
 .NH 2
 How Scaling is Handled
 .PP
 When \fBpic\fP processes a picture description on input, it passes
-\fB.PS\fP and \fB.PE\fP through to the postprocessor.  The \fB.PS\fP
-gets decorated with two numeric arguments which are the X and
-Y\~dimensions of the picture in inches.  The post-processor can use
-these to reserve space for the picture and center it.
+\fB.PS\fP and \fB.PE\fP through to the postprocessor.
+The \fB.PS\fP gets decorated with two numeric arguments which are the X
+and Y\~dimensions of the picture in inches.
+The post-processor can use these to reserve space for the picture and
+center it.
 .PP
 The GNU incarnation of the \fBms\fP macro package, for example, includes
 the following definitions:
@@ -2118,8 +2197,8 @@ The invocation
 \&\fB.PS <\,\fP\fIfile\fP
 .DE
 .LP
-causes the contents of \fIfile\fP to replace the \fB.PS\fP line.  This
-feature is deprecated; use `\fBcopy\fP \fIfile\fR' instead).
+causes the contents of \fIfile\fP to replace the \fB.PS\fP line.
+This feature is deprecated; use `\fBcopy\fP \fIfile\fR' instead).
 .
 .NH 2
 PIC and [gt]roff commands
@@ -2142,7 +2221,8 @@ complicated equations inside \fBpic\fR pictures; they come out wrong if
 \fIeqn\/\fP(1) has to leave extra vertical space for the equation.
 If your equation involves more than subscripts and superscripts, you
 must add to the beginning of each equation the extra information
-\fBspace\~0\fP.  He gives the following example:
+\fBspace\~0\fP.
+He gives the following example:
 .KS
 .DS
 .CW
@@ -2167,11 +2247,13 @@ arrow
 Absolute Positioning of Pictures
 .PP
 A \fBpic\fP picture is positioned vertically by troff at the current
-position.  The topmost position possible on a page is not the paper edge
+position.
+The topmost position possible on a page is not the paper edge
 but a position which is one baseline lower so that the first row of glyphs
-is visible.  To make a picture really start at the paper edge you have
-to make the baseline-to-baseline distance zero, this is, you must set the
-vertical spacing to\~0 (using \fB.vs\fP) before starting the picture.
+is visible.
+To make a picture really start at the paper edge you have to make the
+baseline-to-baseline distance zero, this is, you must set the vertical
+spacing to\~0 (using \fB.vs\fP) before starting the picture.
 .
 .
 .NH 1
@@ -2311,9 +2393,7 @@ define gridarrow
         }
         move down from last arrow .center;
         [
-            if ( $1 == boxht ) \e
-            then { "\efBline up left\efP" } \e
-            else { sprintf("\efBarrow up left %g\efP", $1) };
+            sprintf("\efBarrow up left %g\efP", $1)
         ]
     ]
     move right 0.1 from last [] .e;
@@ -2334,19 +2414,16 @@ undef gridarrow
 # Draw a demonstration up left arrow with grid box overlay
 define gridarrow
 {
-       move right 0.1
+       move right 0.5
        [
                {arrow up left $1;}
                box wid 0.5 ht 0.5 dotted with .nw at last arrow .end;
-               for i = 2 to ($1 / 0.5) do
-               {
+               for i = 2 to ($1 / 0.5) do {
                        box wid 0.5 ht 0.5 dotted with .sw at last box .se;
                }
                move down from last arrow .center;
                [
-                       if ( $1 == boxht ) \
-                       then { "\fBline up left\fP" } \
-                       else { sprintf("\fBarrow up left %g\fP", $1) };
+                       sprintf("\fBarrow up left %g\fP", $1)
                ]
        ]
        move right 0.1 from last [] .e;
@@ -2568,27 +2645,31 @@ This is an annotated grammar of \fBpic\fP.
 Lexical Items
 .PP
 In general, \fBpic\fP is a free-format, token-oriented language that
-ignores whitespace outside strings.  But certain lines and contructs
-are specially interpreted at the lexical level:
+ignores whitespace outside strings.
+But certain lines and contructs are specially interpreted at the lexical
+level:
 .PP
 A comment begins with \fB#\fP and continues to \fB\en\fP (comments may
-also follow text in a line).  A line beginning with a period or
-backslash may be interpreted as text to be passed through to the
-post-processor, depending on command-line options.  An end-of-line
-backslash is interpreted as a request to continue the line; the
-backslash and following newline are ignored.
+also follow text in a line).
+A line beginning with a period or backslash may be interpreted as text
+to be passed through to the post-processor, depending on command-line
+options.
+An end-of-line backslash is interpreted as a request to continue the
+line; the backslash and following newline are ignored.
 .PP
 .RS
 Here are the grammar terminals:
 .IP \s[-1]INT\s[0]
 A positive integer.
 .IP \s[-1]NUMBER\s[0]
-A floating point numeric constant.  May contain a decimal point or be
-expressed in scientific notation in the style of \fIprintf\/\fP(3)'s %e
-escape.  A trailing `i' or `I' (indicating the unit `inch') is ignored.
+A floating point numeric constant.
+May contain a decimal point or be expressed in scientific notation in
+the style of \fIprintf\/\fP(3)'s %e escape.
+A trailing `i' or `I' (indicating the unit `inch') is ignored.
 .IP \s[-1]TEXT\s[0]
-A string enclosed in double quotes.  A double quote within \s[-1]TEXT\s[0]
-must be preceded by a backslash.  Instead of \s[-1]TEXT\s[0] you can use
+A string enclosed in double quotes.
+A double quote within \s[-1]TEXT\s[0] must be preceded by a backslash.
+Instead of \s[-1]TEXT\s[0] you can use
 .DS
 .CW
 sprintf ( TEXT [, <expr> ...] )
@@ -2614,7 +2695,8 @@ where \fIX\fP doesn't occur in the string.
 Delimiters as in \s[-1]BALANCED-TEXT\s[0]; the body is interpreted as
 `\fB\[la]command\[ra].\|.\|.\fP'.
 .IP \s[-1]FILENAME\s[0]
-The name of a file.  This has the same semantics as \s[-1]TEXT\s[0].
+The name of a file.
+This has the same semantics as \s[-1]TEXT\s[0].
 .IP \s[-1]MACRONAME\s[0]
 Either \s[-1]VARIABLE\s[0] or \s[-1]LABEL\s[0].
 .RE
@@ -2632,8 +2714,8 @@ of the preceding element(s).
 An enclosure in square brackets has its usual meaning of `this clause is
 optional'.
 .IP 4.
-Square-bracket-enclosed portions within tokens are optional.  Thus,
-`h\^[eigh]\^t' matches either `height' or `ht'.
+Square-bracket-enclosed portions within tokens are optional.
+Thus, `h\^[eigh]\^t' matches either `height' or `ht'.
 .LP
 If one of these special tokens has to be referred to literally, it is
 surrounded with single quotes.
@@ -2650,15 +2732,16 @@ The top-level \fBpic\fP object is a picture.
 .PP
 The arguments, if present, represent the width and height of the picture,
 causing \fBpic\fR to attempt to scale it to the given dimensions in
-inches.  In no case, however, the X and Y\~dimensions of the
-picture exceed the values of the style variables \fBmaxpswid\fP and
-\fBmaxpsheight\fP (which default to the normal 8.5\^i by 11\^i page size).
+inches.
+In no case, however, the X and Y\~dimensions of the picture exceed the
+values of the style variables \fBmaxpswid\fP and \fBmaxpsheight\fP
+(which default to the normal 8.5\^i by 11\^i page size).
 .PP
 If the ending `.PE' is replaced by `.PF', the page vertical position is
-restored to its value at the time `.PS' was encountered.  Another
-alternate form of invocation is `.PS\ <\s[-1]FILENAME\s[0]', which
-replaces the `.PS' line with a file to be interpreted by \fBpic\fR (but
-this feature is deprecated).
+restored to its value at the time `.PS' was encountered.
+Another alternate form of invocation is `.PS\ <\s[-1]FILENAME\s[0]',
+which replaces the `.PS' line with a file to be interpreted by \fBpic\fR
+(but this feature is deprecated).
 .PP
 The `.PS', `.PE', and `.PF' macros to perform centering and scaling are
 normally supplied by the post-processor.
@@ -2706,7 +2789,8 @@ The current position and direction are saved on entry to a `{\ .\|.\|.\ }'
 construction and restored on exit from it.
 .PP
 Note that in `if' constructions, newlines can only occur in
-\s[-1]BALANCED-BODY\s[0].  This means that
+\s[-1]BALANCED-BODY\s[0].
+This means that
 .DS
 .CW
 if
@@ -2716,7 +2800,8 @@ else
 .R
 .DE
 .PP
-fails.  You have to use the braces on the same line as the keywords:
+fails.
+You have to use the braces on the same line as the keywords:
 .DS
 .CW
 if {
@@ -2731,11 +2816,11 @@ This restriction doesn't hold for the body after the `do' in a `for'
 construction.
 .PP
 At the beginning of each picture, `figname' is reset to the vbox name
-`graph'; this command has only a meaning in \*[tx] mode.  While the grammar
-rules allow digits and the underscore in the value of `figname', \*[tx]
-normally accepts uppercase and lowercase letters only as box names
-(you have to use `\ecsname' if you really need to circumvent this
-limitation).
+`graph'; this command has only a meaning in \*[tx] mode.
+While the grammar rules allow digits and the underscore in the value of
+`figname', \*[tx] normally accepts uppercase and lowercase letters only
+as box names (you have to use `\ecsname' if you really need to
+circumvent this limitation).
 .DS
 .CW
 <any-expr> ::=
@@ -2760,9 +2845,9 @@ limitation).
 .DE
 .PP
 Logical operators are handled specially by \fBpic\fP since they can
-deal with text strings also.  \fBpic\fP uses \%\fIstrcmp\/\fP(3) to test
-for equality of strings; an empty string is considered as `false' for
-`&&' and `|\||'.
+deal with text strings also.
+\fBpic\fP uses \%\fIstrcmp\/\fP(3) to test for equality of strings; an
+empty string is considered as `false' for `&&' and `|\||'.
 .DS
 .CW
 <primitive> ::=
@@ -2782,9 +2867,11 @@ for equality of strings; an empty string is considered as `false' for
 .PP
 Drawn objects within `[\ .\|.\|.\ ]' are treated as a single composite
 object with a rectangular shape (that of the bounding box of all the
-elements).  Variable and label assignments within a block are local to
-the block.  Current direction of motion is restored to the value at start
-of block upon exit.  Position is \fInot\fR restored (unlike `{\ }');
+elements).
+Variable and label assignments within a block are local to the block.
+Current direction of motion is restored to the value at start of block
+upon exit.
+Position is \fInot\fR restored (unlike `{\ }');
 instead, the current position becomes the exit position for the current
 direction on the block's bounding box.
 .DS
@@ -2829,13 +2916,13 @@ direction on the block's bounding box.
 .DE
 .PP
 Missing attributes are supplied from defaults; inappropriate ones are
-silently ignored.  For lines, splines, and arcs, height and width
-refer to arrowhead size.
+silently ignored.
+For lines, splines, and arcs, height and width refer to arrowhead size.
 .PP
-The `at' primitive sets the center of the current object.  The
-`with' attribute fixes the specified feature of the given object
-to a specified location.  (Note that `with' is incorrectly described
-in the Kernighan paper.)
+The `at' primitive sets the center of the current object.
+The `with' attribute fixes the specified feature of the given object to
+a specified location.
+(Note that `with' is incorrectly described in the Kernighan paper.)
 .PP
 The `by' primitive is not documented in the tutorial portion of
 the Kernighan paper, and should probably be considered unreliable.
@@ -2844,14 +2931,15 @@ The primitive `arrow' is a synonym for `line\ ->'.
 .PP
 Text is normally an attribute of some object, in which case successive
 strings are vertically stacked and centered on the object's center by
-default.  Standalone text is treated as though placed in an invisible
-box.
+default.
+Standalone text is treated as though placed in an invisible box.
 .PP
 A text item consists of a string or sprintf-expression, optionally
-followed by positioning information.  Text (or strings specified with
-`sprintf') may contain font changes, size changes, and local
-motions, provided those changes are undone before the end of the current
-item.  Text may also contain \e-escapes denoting special characters.
+followed by positioning information.
+Text (or strings specified with `sprintf') may contain font changes,
+size changes, and local motions, provided those changes are undone
+before the end of the current item.
+Text may also contain \e-escapes denoting special characters.
 The base font and specific set of escapes supported is implementation
 dependent, but supported escapes always include the following:
 .IP "\efR, \ef1"
@@ -2867,8 +2955,8 @@ Color names are dependent on the \gBpic\fR implementation, but in
 all modern versions color names recognized by the X\~window system are
 supported.
 .PP
-A position is an (x,y) coordinate pair.  There are lots of different
-ways to specify positions:
+A position is an (x,y) coordinate pair.
+There are lots of different ways to specify positions:
 .DS
 .CW
 <position> ::=
@@ -2971,8 +3059,8 @@ an expression, as opposed to a numeric literal) is not documented in DWB's
 .PP
 The \[la]\,\fIxxx\/\fP-of\|\[ra] rule is special: The lexical parser checks whether
 \fIxxx\fP is followed by the token `of' without eliminating it so that
-the grammar parser can still see `of'.  Valid examples of specifying a
-place with corner and label are thus
+the grammar parser can still see `of'.
+Valid examples of specifying a place with corner and label are thus
 .DS
 .CW
 A .n
@@ -2989,8 +3077,8 @@ north A
 A north
 .R
 .DE
-both cause a syntax error.  (DWB \fBpic\fP also allows the weird form
-`A\ north\ of'.)
+both cause a syntax error.
+(DWB \fBpic\fP also allows the weird form `A\ north\ of'.)
 .PP
 Here the special rules for the `with' keyword using a path:
 .DS
@@ -3043,14 +3131,16 @@ fillval@0.5@Default fill value
 _
 .TE
 Any of these can be set by assignment, or reset using the \fBreset\fP
-statement.  Style variables assigned within `[\ ]' blocks are restored to
-their beginning-of-block value on exit; top-level assignments persist
-across pictures.  Dimensions are divided by \fBscale\fR on output.
+statement.
+Style variables assigned within `[\ ]' blocks are restored to their
+beginning-of-block value on exit; top-level assignments persist across
+pictures.
+Dimensions are divided by \fBscale\fR on output.
 .PP
 All \fBpic\fP expressions are evaluated in floating point; units
-are always inches (a trailing `i' or `I' is ignored).  Expressions have
-the following simple grammar, with semantics very similar to
-C\~expressions:
+are always inches (a trailing `i' or `I' is ignored).
+Expressions have the following simple grammar, with semantics very
+similar to C\~expressions:
 .DS
 .CW
 <expr> ::=
@@ -3104,7 +3194,8 @@ These may be used to define pseudo-functions.
 .DE
 .LP
 This defines \fIname\fR as a macro to be replaced by the replacement
-text (not including the braces).  The macro may be called as
+text (not including the braces).
+The macro may be called as
 .DS
 .CW
 \fIname\/\fB(\,\fIarg1, arg2, .\|.\|., argn\fB\/)\fR
@@ -3112,8 +3203,9 @@ text (not including the braces).  The macro may be called as
 .DE
 .LP
 The arguments (if any) are substituted for tokens $1, $2 .\|.\|.\& $n
-appearing in the replacement text.  To undefine a macro, say \fBundef\fP
-\fIname\fR, specifying the name to be undefined.
+appearing in the replacement text.
+To undefine a macro, say \fBundef\fP \fIname\fR, specifying the name to
+be undefined.
 .\"%%POSTLUDE%%
 .
 .
@@ -3127,8 +3219,9 @@ with substantial enhancements (apparently as part of the evolution of
 device-independent output).
 .PP
 The language had been inspired by some earlier graphics languages
-including \fBideal\fP and \fBgrap\fP.  Kernighan credits Chris van Wyk
-(the designer of \fBideal\fP) with many of the ideas that went into
+including \fBideal\fP and \fBgrap\fP.
+Kernighan credits Chris van Wyk (the designer of \fBideal\fP) with many
+of the ideas that went into
 \fBpic\fP.
 .PP
 .\" the original definitions of EQ and EN cause insertion of vertical
@@ -3144,7 +3237,8 @@ The \fBpic\fP language was originally described by Brian Kernighan in
 Bell Labs Computing Science Technical Report #116 (you can obtain a
 PostScript copy of the revised version, [1], by sending a mail message to
 \fInetlib@research.att.com\fP with a body of `send 116 from
-research/cstr').  There have been two revisions, in 1984 and 1991.
+research/cstr').
+There have been two revisions, in 1984 and 1991.
 .PP
 The document you are reading effectively subsumes Kernighan's
 description; it was written to fill in lacun\[ae] in the exposition and
@@ -3152,8 +3246,7 @@ integrate in descriptions of the GNU \fIgpic\/\fP(1) and
 \fIpic2plot\/\fP(1) features.
 .PP
 The GNU \fBgpic\fR implementation was written by James Clark
-\[la]\,\fIjjc@jclark.com\/\fP\[ra].  It is currently maintained by Werner
-Lemberg \[la]\,\fIwl@gnu.org\/\fP\[ra].
+\[la]\,\fIjjc@jclark.com\/\fP\[ra].
 .PP
 The GNU \fBpic2plot\fR implementation is based on James Clark's parser
 code and maintained by Robert Maier, principal author of \fBplotutils\fP.
@@ -3162,11 +3255,16 @@ code and maintained by Robert Maier, principal author of \fBplotutils\fP.
 .NH 1
 Bibliography
 .IP 1.
-Kernighan, B. W.  \fBPIC \[em] A Graphics Language for Typesetting
-(Revised User Manual)\fP.  Bell Labs Computing Science Technical Report
-#116, December 1991.
+Kernighan, B. W.
+\fBPIC \[em] A Graphics Language for Typesetting
+(Revised User Manual)\fP.
+Bell Labs Computing Science Technical Report #116, December 1991.
 .IP 2.
-Van Wyk, C. J.  \fBA high-level language for specifying pictures\fP.
+Van Wyk, C. J.
+\fBA high-level language for specifying pictures\fP.
 \fIACM Transactions On Graphics\fP 1,2 (1982) 163-182.
 .
-.\" end of pic.ms
+.\" Local Variables:
+.\" mode: nroff
+.\" End:
+.\" vim: filetype=groff:
diff --git a/doc/texinfo.tex b/doc/texinfo.tex
deleted file mode 100644 (file)
index 72c8cf4..0000000
+++ /dev/null
@@ -1,10183 +0,0 @@
-% texinfo.tex -- TeX macros to handle Texinfo files.
-% 
-% Load plain if necessary, i.e., if running under initex.
-\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
-%
-\def\texinfoversion{2014-10-29.10}
-%
-% Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
-% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-% 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 Free Software Foundation, Inc.
-%
-% This texinfo.tex file is free software: you can redistribute it and/or
-% modify it under the terms of the GNU General Public License as
-% published by the Free Software Foundation, either version 3 of the
-% License, or (at your option) any later version.
-%
-% This texinfo.tex file is distributed in the hope that it will be
-% useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-% of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-% General Public License for more details.
-%
-% You should have received a copy of the GNU General Public License
-% along with this program.  If not, see <http://www.gnu.org/licenses/>.
-%
-% As a special exception, when this file is read by TeX when processing
-% a Texinfo source document, you may use the result without
-% restriction. This Exception is an additional permission under section 7
-% of the GNU General Public License, version 3 ("GPLv3").
-%
-% Please try the latest version of texinfo.tex before submitting bug
-% reports; you can get the latest version from:
-%   http://ftp.gnu.org/gnu/texinfo/ (the Texinfo release area), or
-%   http://ftpmirror.gnu.org/texinfo/ (same, via a mirror), or
-%   http://www.gnu.org/software/texinfo/ (the Texinfo home page)
-% The texinfo.tex in any given distribution could well be out
-% of date, so if that's what you're using, please check.
-%
-% Send bug reports to bug-texinfo@gnu.org.  Please include including a
-% complete document in each bug report with which we can reproduce the
-% problem.  Patches are, of course, greatly appreciated.
-%
-% To process a Texinfo manual with TeX, it's most reliable to use the
-% texi2dvi shell script that comes with the distribution.  For a simple
-% manual foo.texi, however, you can get away with this:
-%   tex foo.texi
-%   texindex foo.??
-%   tex foo.texi
-%   tex foo.texi
-%   dvips foo.dvi -o  # or whatever; this makes foo.ps.
-% The extra TeX runs get the cross-reference information correct.
-% Sometimes one run after texindex suffices, and sometimes you need more
-% than two; texi2dvi does it as many times as necessary.
-%
-% It is possible to adapt texinfo.tex for other languages, to some
-% extent.  You can get the existing language-specific files from the
-% full Texinfo distribution.
-%
-% The GNU Texinfo home page is http://www.gnu.org/software/texinfo.
-
-
-\message{Loading texinfo [version \texinfoversion]:}
-
-% If in a .fmt file, print the version number
-% and turn on active characters that we couldn't do earlier because
-% they might have appeared in the input file name.
-\everyjob{\message{[Texinfo version \texinfoversion]}%
-  \catcode`+=\active \catcode`\_=\active}
-
-\chardef\other=12
-
-% We never want plain's \outer definition of \+ in Texinfo.
-% For @tex, we can use \tabalign.
-\let\+ = \relax
-
-% Save some plain tex macros whose names we will redefine.
-\let\ptexb=\b
-\let\ptexbullet=\bullet
-\let\ptexc=\c
-\let\ptexcomma=\,
-\let\ptexdot=\.
-\let\ptexdots=\dots
-\let\ptexend=\end
-\let\ptexequiv=\equiv
-\let\ptexexclam=\!
-\let\ptexfootnote=\footnote
-\let\ptexgtr=>
-\let\ptexhat=^
-\let\ptexi=\i
-\let\ptexindent=\indent
-\let\ptexinsert=\insert
-\let\ptexlbrace=\{
-\let\ptexless=<
-\let\ptexnewwrite\newwrite
-\let\ptexnoindent=\noindent
-\let\ptexplus=+
-\let\ptexraggedright=\raggedright
-\let\ptexrbrace=\}
-\let\ptexslash=\/
-\let\ptexstar=\*
-\let\ptext=\t
-\let\ptextop=\top
-{\catcode`\'=\active \global\let\ptexquoteright'}% active in plain's math mode
-
-% If this character appears in an error message or help string, it
-% starts a new line in the output.
-\newlinechar = `^^J
-
-% Use TeX 3.0's \inputlineno to get the line number, for better error
-% messages, but if we're using an old version of TeX, don't do anything.
-%
-\ifx\inputlineno\thisisundefined
-  \let\linenumber = \empty % Pre-3.0.
-\else
-  \def\linenumber{l.\the\inputlineno:\space}
-\fi
-
-% Set up fixed words for English if not already set.
-\ifx\putwordAppendix\undefined  \gdef\putwordAppendix{Appendix}\fi
-\ifx\putwordChapter\undefined   \gdef\putwordChapter{Chapter}\fi
-\ifx\putworderror\undefined     \gdef\putworderror{error}\fi
-\ifx\putwordfile\undefined      \gdef\putwordfile{file}\fi
-\ifx\putwordin\undefined        \gdef\putwordin{in}\fi
-\ifx\putwordIndexIsEmpty\undefined       \gdef\putwordIndexIsEmpty{(Index is empty)}\fi
-\ifx\putwordIndexNonexistent\undefined   \gdef\putwordIndexNonexistent{(Index is nonexistent)}\fi
-\ifx\putwordInfo\undefined      \gdef\putwordInfo{Info}\fi
-\ifx\putwordInstanceVariableof\undefined \gdef\putwordInstanceVariableof{Instance Variable of}\fi
-\ifx\putwordMethodon\undefined  \gdef\putwordMethodon{Method on}\fi
-\ifx\putwordNoTitle\undefined   \gdef\putwordNoTitle{No Title}\fi
-\ifx\putwordof\undefined        \gdef\putwordof{of}\fi
-\ifx\putwordon\undefined        \gdef\putwordon{on}\fi
-\ifx\putwordpage\undefined      \gdef\putwordpage{page}\fi
-\ifx\putwordsection\undefined   \gdef\putwordsection{section}\fi
-\ifx\putwordSection\undefined   \gdef\putwordSection{Section}\fi
-\ifx\putwordsee\undefined       \gdef\putwordsee{see}\fi
-\ifx\putwordSee\undefined       \gdef\putwordSee{See}\fi
-\ifx\putwordShortTOC\undefined  \gdef\putwordShortTOC{Short Contents}\fi
-\ifx\putwordTOC\undefined       \gdef\putwordTOC{Table of Contents}\fi
-%
-\ifx\putwordMJan\undefined \gdef\putwordMJan{January}\fi
-\ifx\putwordMFeb\undefined \gdef\putwordMFeb{February}\fi
-\ifx\putwordMMar\undefined \gdef\putwordMMar{March}\fi
-\ifx\putwordMApr\undefined \gdef\putwordMApr{April}\fi
-\ifx\putwordMMay\undefined \gdef\putwordMMay{May}\fi
-\ifx\putwordMJun\undefined \gdef\putwordMJun{June}\fi
-\ifx\putwordMJul\undefined \gdef\putwordMJul{July}\fi
-\ifx\putwordMAug\undefined \gdef\putwordMAug{August}\fi
-\ifx\putwordMSep\undefined \gdef\putwordMSep{September}\fi
-\ifx\putwordMOct\undefined \gdef\putwordMOct{October}\fi
-\ifx\putwordMNov\undefined \gdef\putwordMNov{November}\fi
-\ifx\putwordMDec\undefined \gdef\putwordMDec{December}\fi
-%
-\ifx\putwordDefmac\undefined    \gdef\putwordDefmac{Macro}\fi
-\ifx\putwordDefspec\undefined   \gdef\putwordDefspec{Special Form}\fi
-\ifx\putwordDefvar\undefined    \gdef\putwordDefvar{Variable}\fi
-\ifx\putwordDefopt\undefined    \gdef\putwordDefopt{User Option}\fi
-\ifx\putwordDeffunc\undefined   \gdef\putwordDeffunc{Function}\fi
-
-% Since the category of space is not known, we have to be careful.
-\chardef\spacecat = 10
-\def\spaceisspace{\catcode`\ =\spacecat}
-
-% sometimes characters are active, so we need control sequences.
-\chardef\ampChar   = `\&
-\chardef\colonChar = `\:
-\chardef\commaChar = `\,
-\chardef\dashChar  = `\-
-\chardef\dotChar   = `\.
-\chardef\exclamChar= `\!
-\chardef\hashChar  = `\#
-\chardef\lquoteChar= `\`
-\chardef\questChar = `\?
-\chardef\rquoteChar= `\'
-\chardef\semiChar  = `\;
-\chardef\slashChar = `\/
-\chardef\underChar = `\_
-
-% Ignore a token.
-%
-\def\gobble#1{}
-
-% The following is used inside several \edef's.
-\def\makecsname#1{\expandafter\noexpand\csname#1\endcsname}
-
-% Hyphenation fixes.
-\hyphenation{
-  Flor-i-da Ghost-script Ghost-view Mac-OS Post-Script
-  ap-pen-dix bit-map bit-maps
-  data-base data-bases eshell fall-ing half-way long-est man-u-script
-  man-u-scripts mini-buf-fer mini-buf-fers over-view par-a-digm
-  par-a-digms rath-er rec-tan-gu-lar ro-bot-ics se-vere-ly set-up spa-ces
-  spell-ing spell-ings
-  stand-alone strong-est time-stamp time-stamps which-ever white-space
-  wide-spread wrap-around
-}
-
-% Margin to add to right of even pages, to left of odd pages.
-\newdimen\bindingoffset
-\newdimen\normaloffset
-\newdimen\pagewidth \newdimen\pageheight
-
-% For a final copy, take out the rectangles
-% that mark overfull boxes (in case you have decided
-% that the text looks ok even though it passes the margin).
-%
-\def\finalout{\overfullrule=0pt }
-
-% Sometimes it is convenient to have everything in the transcript file
-% and nothing on the terminal.  We don't just call \tracingall here,
-% since that produces some useless output on the terminal.  We also make
-% some effort to order the tracing commands to reduce output in the log
-% file; cf. trace.sty in LaTeX.
-%
-\def\gloggingall{\begingroup \globaldefs = 1 \loggingall \endgroup}%
-\def\loggingall{%
-  \tracingstats2
-  \tracingpages1
-  \tracinglostchars2  % 2 gives us more in etex
-  \tracingparagraphs1
-  \tracingoutput1
-  \tracingmacros2
-  \tracingrestores1
-  \showboxbreadth\maxdimen \showboxdepth\maxdimen
-  \ifx\eTeXversion\thisisundefined\else % etex gives us more logging
-    \tracingscantokens1
-    \tracingifs1
-    \tracinggroups1
-    \tracingnesting2
-    \tracingassigns1
-  \fi
-  \tracingcommands3  % 3 gives us more in etex
-  \errorcontextlines16
-}%
-
-% @errormsg{MSG}.  Do the index-like expansions on MSG, but if things
-% aren't perfect, it's not the end of the world, being an error message,
-% after all.
-% 
-\def\errormsg{\begingroup \indexnofonts \doerrormsg}
-\def\doerrormsg#1{\errmessage{#1}}
-
-% add check for \lastpenalty to plain's definitions.  If the last thing
-% we did was a \nobreak, we don't want to insert more space.
-%
-\def\smallbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\smallskipamount
-  \removelastskip\penalty-50\smallskip\fi\fi}
-\def\medbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\medskipamount
-  \removelastskip\penalty-100\medskip\fi\fi}
-\def\bigbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\bigskipamount
-  \removelastskip\penalty-200\bigskip\fi\fi}
-
-% Do @cropmarks to get crop marks.
-%
-\newif\ifcropmarks
-\let\cropmarks = \cropmarkstrue
-%
-% Dimensions to add cropmarks at corners.
-% Added by P. A. MacKay, 12 Nov. 1986
-%
-\newdimen\outerhsize \newdimen\outervsize % set by the paper size routines
-\newdimen\cornerlong  \cornerlong=1pc
-\newdimen\cornerthick \cornerthick=.3pt
-\newdimen\topandbottommargin \topandbottommargin=.75in
-
-% Output a mark which sets \thischapter, \thissection and \thiscolor.
-% We dump everything together because we only have one kind of mark.
-% This works because we only use \botmark / \topmark, not \firstmark.
-%
-% A mark contains a subexpression of the \ifcase ... \fi construct.
-% \get*marks macros below extract the needed part using \ifcase.
-%
-% Another complication is to let the user choose whether \thischapter
-% (\thissection) refers to the chapter (section) in effect at the top
-% of a page, or that at the bottom of a page.  The solution is
-% described on page 260 of The TeXbook.  It involves outputting two
-% marks for the sectioning macros, one before the section break, and
-% one after.  I won't pretend I can describe this better than DEK...
-\def\domark{%
-  \toks0=\expandafter{\lastchapterdefs}%
-  \toks2=\expandafter{\lastsectiondefs}%
-  \toks4=\expandafter{\prevchapterdefs}%
-  \toks6=\expandafter{\prevsectiondefs}%
-  \toks8=\expandafter{\lastcolordefs}%
-  \mark{%
-                   \the\toks0 \the\toks2  % 0: top marks (\last...)
-      \noexpand\or \the\toks4 \the\toks6  % 1: bottom marks (default, \prev...)
-    \noexpand\else \the\toks8             % 2: color marks
-  }%
-}
-% \topmark doesn't work for the very first chapter (after the title
-% page or the contents), so we use \firstmark there -- this gets us
-% the mark with the chapter defs, unless the user sneaks in, e.g.,
-% @setcolor (or @url, or @link, etc.) between @contents and the very
-% first @chapter.
-\def\gettopheadingmarks{%
-  \ifcase0\topmark\fi
-  \ifx\thischapter\empty \ifcase0\firstmark\fi \fi
-}
-\def\getbottomheadingmarks{\ifcase1\botmark\fi}
-\def\getcolormarks{\ifcase2\topmark\fi}
-
-% Avoid "undefined control sequence" errors.
-\def\lastchapterdefs{}
-\def\lastsectiondefs{}
-\def\prevchapterdefs{}
-\def\prevsectiondefs{}
-\def\lastcolordefs{}
-
-% Main output routine.
-\chardef\PAGE = 255
-\output = {\onepageout{\pagecontents\PAGE}}
-
-\newbox\headlinebox
-\newbox\footlinebox
-
-% \onepageout takes a vbox as an argument.  Note that \pagecontents
-% does insertions, but you have to call it yourself.
-\def\onepageout#1{%
-  \ifcropmarks \hoffset=0pt \else \hoffset=\normaloffset \fi
-  %
-  \ifodd\pageno  \advance\hoffset by \bindingoffset
-  \else \advance\hoffset by -\bindingoffset\fi
-  %
-  % Do this outside of the \shipout so @code etc. will be expanded in
-  % the headline as they should be, not taken literally (outputting ''code).
-  \def\commmonheadfootline{\let\hsize=\pagewidth \texinfochars}
-  %
-  \ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi
-  \global\setbox\headlinebox = \vbox{\commmonheadfootline \makeheadline}%
-  %
-  \ifodd\pageno \getoddfootingmarks \else \getevenfootingmarks \fi
-  \global\setbox\footlinebox = \vbox{\commmonheadfootline \makefootline}%
-  %
-  {%
-    % Have to do this stuff outside the \shipout because we want it to
-    % take effect in \write's, yet the group defined by the \vbox ends
-    % before the \shipout runs.
-    %
-    \indexdummies         % don't expand commands in the output.
-    \normalturnoffactive  % \ in index entries must not stay \, e.g., if
-               % the page break happens to be in the middle of an example.
-               % We don't want .vr (or whatever) entries like this:
-               % \entry{{\tt \indexbackslash }acronym}{32}{\code {\acronym}}
-               % "\acronym" won't work when it's read back in;
-               % it needs to be
-               % {\code {{\tt \backslashcurfont }acronym}
-    \shipout\vbox{%
-      % Do this early so pdf references go to the beginning of the page.
-      \ifpdfmakepagedest \pdfdest name{\the\pageno} xyz\fi
-      %
-      \ifcropmarks \vbox to \outervsize\bgroup
-        \hsize = \outerhsize
-        \vskip-\topandbottommargin
-        \vtop to0pt{%
-          \line{\ewtop\hfil\ewtop}%
-          \nointerlineskip
-          \line{%
-            \vbox{\moveleft\cornerthick\nstop}%
-            \hfill
-            \vbox{\moveright\cornerthick\nstop}%
-          }%
-          \vss}%
-        \vskip\topandbottommargin
-        \line\bgroup
-          \hfil % center the page within the outer (page) hsize.
-          \ifodd\pageno\hskip\bindingoffset\fi
-          \vbox\bgroup
-      \fi
-      %
-      \unvbox\headlinebox
-      \pagebody{#1}%
-      \ifdim\ht\footlinebox > 0pt
-        % Only leave this space if the footline is nonempty.
-        % (We lessened \vsize for it in \oddfootingyyy.)
-        % The \baselineskip=24pt in plain's \makefootline has no effect.
-        \vskip 24pt
-        \unvbox\footlinebox
-      \fi
-      %
-      \ifcropmarks
-          \egroup % end of \vbox\bgroup
-        \hfil\egroup % end of (centering) \line\bgroup
-        \vskip\topandbottommargin plus1fill minus1fill
-        \boxmaxdepth = \cornerthick
-        \vbox to0pt{\vss
-          \line{%
-            \vbox{\moveleft\cornerthick\nsbot}%
-            \hfill
-            \vbox{\moveright\cornerthick\nsbot}%
-          }%
-          \nointerlineskip
-          \line{\ewbot\hfil\ewbot}%
-        }%
-      \egroup % \vbox from first cropmarks clause
-      \fi
-    }% end of \shipout\vbox
-  }% end of group with \indexdummies
-  \advancepageno
-  \ifnum\outputpenalty>-20000 \else\dosupereject\fi
-}
-
-\newinsert\margin \dimen\margin=\maxdimen
-
-\def\pagebody#1{\vbox to\pageheight{\boxmaxdepth=\maxdepth #1}}
-{\catcode`\@ =11
-\gdef\pagecontents#1{\ifvoid\topins\else\unvbox\topins\fi
-% marginal hacks, juha@viisa.uucp (Juha Takala)
-\ifvoid\margin\else % marginal info is present
-  \rlap{\kern\hsize\vbox to\z@{\kern1pt\box\margin \vss}}\fi
-\dimen@=\dp#1\relax \unvbox#1\relax
-\ifvoid\footins\else\vskip\skip\footins\footnoterule \unvbox\footins\fi
-\ifr@ggedbottom \kern-\dimen@ \vfil \fi}
-}
-
-% Here are the rules for the cropmarks.  Note that they are
-% offset so that the space between them is truly \outerhsize or \outervsize
-% (P. A. MacKay, 12 November, 1986)
-%
-\def\ewtop{\vrule height\cornerthick depth0pt width\cornerlong}
-\def\nstop{\vbox
-  {\hrule height\cornerthick depth\cornerlong width\cornerthick}}
-\def\ewbot{\vrule height0pt depth\cornerthick width\cornerlong}
-\def\nsbot{\vbox
-  {\hrule height\cornerlong depth\cornerthick width\cornerthick}}
-
-% Parse an argument, then pass it to #1.  The argument is the rest of
-% the input line (except we remove a trailing comment).  #1 should be a
-% macro which expects an ordinary undelimited TeX argument.
-%
-\def\parsearg{\parseargusing{}}
-\def\parseargusing#1#2{%
-  \def\argtorun{#2}%
-  \begingroup
-    \obeylines
-    \spaceisspace
-    #1%
-    \parseargline\empty% Insert the \empty token, see \finishparsearg below.
-}
-
-{\obeylines %
-  \gdef\parseargline#1^^M{%
-    \endgroup % End of the group started in \parsearg.
-    \argremovecomment #1\comment\ArgTerm%
-  }%
-}
-
-% First remove any @comment, then any @c comment.
-\def\argremovecomment#1\comment#2\ArgTerm{\argremovec #1\c\ArgTerm}
-\def\argremovec#1\c#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm}
-
-% Each occurrence of `\^^M' or `<space>\^^M' is replaced by a single space.
-%
-% \argremovec might leave us with trailing space, e.g.,
-%    @end itemize  @c foo
-% This space token undergoes the same procedure and is eventually removed
-% by \finishparsearg.
-%
-\def\argcheckspaces#1\^^M{\argcheckspacesX#1\^^M \^^M}
-\def\argcheckspacesX#1 \^^M{\argcheckspacesY#1\^^M}
-\def\argcheckspacesY#1\^^M#2\^^M#3\ArgTerm{%
-  \def\temp{#3}%
-  \ifx\temp\empty
-    % Do not use \next, perhaps the caller of \parsearg uses it; reuse \temp:
-    \let\temp\finishparsearg
-  \else
-    \let\temp\argcheckspaces
-  \fi
-  % Put the space token in:
-  \temp#1 #3\ArgTerm
-}
-
-% If a _delimited_ argument is enclosed in braces, they get stripped; so
-% to get _exactly_ the rest of the line, we had to prevent such situation.
-% We prepended an \empty token at the very beginning and we expand it now,
-% just before passing the control to \argtorun.
-% (Similarly, we have to think about #3 of \argcheckspacesY above: it is
-% either the null string, or it ends with \^^M---thus there is no danger
-% that a pair of braces would be stripped.
-%
-% But first, we have to remove the trailing space token.
-%
-\def\finishparsearg#1 \ArgTerm{\expandafter\argtorun\expandafter{#1}}
-
-% \parseargdef\foo{...}
-%      is roughly equivalent to
-% \def\foo{\parsearg\Xfoo}
-% \def\Xfoo#1{...}
-%
-% Actually, I use \csname\string\foo\endcsname, ie. \\foo, as it is my
-% favourite TeX trick.  --kasal, 16nov03
-
-\def\parseargdef#1{%
-  \expandafter \doparseargdef \csname\string#1\endcsname #1%
-}
-\def\doparseargdef#1#2{%
-  \def#2{\parsearg#1}%
-  \def#1##1%
-}
-
-% Several utility definitions with active space:
-{
-  \obeyspaces
-  \gdef\obeyedspace{ }
-
-  % Make each space character in the input produce a normal interword
-  % space in the output.  Don't allow a line break at this space, as this
-  % is used only in environments like @example, where each line of input
-  % should produce a line of output anyway.
-  %
-  \gdef\sepspaces{\obeyspaces\let =\tie}
-
-  % If an index command is used in an @example environment, any spaces
-  % therein should become regular spaces in the raw index file, not the
-  % expansion of \tie (\leavevmode \penalty \@M \ ).
-  \gdef\unsepspaces{\let =\space}
-}
-
-
-\def\flushcr{\ifx\par\lisppar \def\next##1{}\else \let\next=\relax \fi \next}
-
-% Define the framework for environments in texinfo.tex.  It's used like this:
-%
-%   \envdef\foo{...}
-%   \def\Efoo{...}
-%
-% It's the responsibility of \envdef to insert \begingroup before the
-% actual body; @end closes the group after calling \Efoo.  \envdef also
-% defines \thisenv, so the current environment is known; @end checks
-% whether the environment name matches.  The \checkenv macro can also be
-% used to check whether the current environment is the one expected.
-%
-% Non-false conditionals (@iftex, @ifset) don't fit into this, so they
-% are not treated as environments; they don't open a group.  (The
-% implementation of @end takes care not to call \endgroup in this
-% special case.)
-
-
-% At run-time, environments start with this:
-\def\startenvironment#1{\begingroup\def\thisenv{#1}}
-% initialize
-\let\thisenv\empty
-
-% ... but they get defined via ``\envdef\foo{...}'':
-\long\def\envdef#1#2{\def#1{\startenvironment#1#2}}
-\def\envparseargdef#1#2{\parseargdef#1{\startenvironment#1#2}}
-
-% Check whether we're in the right environment:
-\def\checkenv#1{%
-  \def\temp{#1}%
-  \ifx\thisenv\temp
-  \else
-    \badenverr
-  \fi
-}
-
-% Environment mismatch, #1 expected:
-\def\badenverr{%
-  \errhelp = \EMsimple
-  \errmessage{This command can appear only \inenvironment\temp,
-    not \inenvironment\thisenv}%
-}
-\def\inenvironment#1{%
-  \ifx#1\empty
-    outside of any environment%
-  \else
-    in environment \expandafter\string#1%
-  \fi
-}
-
-% @end foo executes the definition of \Efoo.
-% But first, it executes a specialized version of \checkenv
-%
-\parseargdef\end{%
-  \if 1\csname iscond.#1\endcsname
-  \else
-    % The general wording of \badenverr may not be ideal.
-    \expandafter\checkenv\csname#1\endcsname
-    \csname E#1\endcsname
-    \endgroup
-  \fi
-}
-
-\newhelp\EMsimple{Press RETURN to continue.}
-
-
-% Be sure we're in horizontal mode when doing a tie, since we make space
-% equivalent to this in @example-like environments. Otherwise, a space
-% at the beginning of a line will start with \penalty -- and
-% since \penalty is valid in vertical mode, we'd end up putting the
-% penalty on the vertical list instead of in the new paragraph.
-{\catcode`@ = 11
- % Avoid using \@M directly, because that causes trouble
- % if the definition is written into an index file.
- \global\let\tiepenalty = \@M
- \gdef\tie{\leavevmode\penalty\tiepenalty\ }
-}
-
-% @: forces normal size whitespace following.
-\def\:{\spacefactor=1000 }
-
-% @* forces a line break.
-\def\*{\unskip\hfil\break\hbox{}\ignorespaces}
-
-% @/ allows a line break.
-\let\/=\allowbreak
-
-% @. is an end-of-sentence period.
-\def\.{.\spacefactor=\endofsentencespacefactor\space}
-
-% @! is an end-of-sentence bang.
-\def\!{!\spacefactor=\endofsentencespacefactor\space}
-
-% @? is an end-of-sentence query.
-\def\?{?\spacefactor=\endofsentencespacefactor\space}
-
-% @frenchspacing on|off  says whether to put extra space after punctuation.
-%
-\def\onword{on}
-\def\offword{off}
-%
-\parseargdef\frenchspacing{%
-  \def\temp{#1}%
-  \ifx\temp\onword \plainfrenchspacing
-  \else\ifx\temp\offword \plainnonfrenchspacing
-  \else
-    \errhelp = \EMsimple
-    \errmessage{Unknown @frenchspacing option `\temp', must be on|off}%
-  \fi\fi
-}
-
-% @w prevents a word break.  Without the \leavevmode, @w at the
-% beginning of a paragraph, when TeX is still in vertical mode, would
-% produce a whole line of output instead of starting the paragraph.
-\def\w#1{\leavevmode\hbox{#1}}
-
-% @group ... @end group forces ... to be all on one page, by enclosing
-% it in a TeX vbox.  We use \vtop instead of \vbox to construct the box
-% to keep its height that of a normal line.  According to the rules for
-% \topskip (p.114 of the TeXbook), the glue inserted is
-% max (\topskip - \ht (first item), 0).  If that height is large,
-% therefore, no glue is inserted, and the space between the headline and
-% the text is small, which looks bad.
-%
-% Another complication is that the group might be very large.  This can
-% cause the glue on the previous page to be unduly stretched, because it
-% does not have much material.  In this case, it's better to add an
-% explicit \vfill so that the extra space is at the bottom.  The
-% threshold for doing this is if the group is more than \vfilllimit
-% percent of a page (\vfilllimit can be changed inside of @tex).
-%
-\newbox\groupbox
-\def\vfilllimit{0.7}
-%
-\envdef\group{%
-  \ifnum\catcode`\^^M=\active \else
-    \errhelp = \groupinvalidhelp
-    \errmessage{@group invalid in context where filling is enabled}%
-  \fi
-  \startsavinginserts
-  %
-  \setbox\groupbox = \vtop\bgroup
-    % Do @comment since we are called inside an environment such as
-    % @example, where each end-of-line in the input causes an
-    % end-of-line in the output.  We don't want the end-of-line after
-    % the `@group' to put extra space in the output.  Since @group
-    % should appear on a line by itself (according to the Texinfo
-    % manual), we don't worry about eating any user text.
-    \comment
-}
-%
-% The \vtop produces a box with normal height and large depth; thus, TeX puts
-% \baselineskip glue before it, and (when the next line of text is done)
-% \lineskip glue after it.  Thus, space below is not quite equal to space
-% above.  But it's pretty close.
-\def\Egroup{%
-    % To get correct interline space between the last line of the group
-    % and the first line afterwards, we have to propagate \prevdepth.
-    \endgraf % Not \par, as it may have been set to \lisppar.
-    \global\dimen1 = \prevdepth
-  \egroup           % End the \vtop.
-  % \dimen0 is the vertical size of the group's box.
-  \dimen0 = \ht\groupbox  \advance\dimen0 by \dp\groupbox
-  % \dimen2 is how much space is left on the page (more or less).
-  \dimen2 = \pageheight   \advance\dimen2 by -\pagetotal
-  % if the group doesn't fit on the current page, and it's a big big
-  % group, force a page break.
-  \ifdim \dimen0 > \dimen2
-    \ifdim \pagetotal < \vfilllimit\pageheight
-      \page
-    \fi
-  \fi
-  \box\groupbox
-  \prevdepth = \dimen1
-  \checkinserts
-}
-%
-% TeX puts in an \escapechar (i.e., `@') at the beginning of the help
-% message, so this ends up printing `@group can only ...'.
-%
-\newhelp\groupinvalidhelp{%
-group can only be used in environments such as @example,^^J%
-where each line of input produces a line of output.}
-
-% @need space-in-mils
-% forces a page break if there is not space-in-mils remaining.
-
-\newdimen\mil  \mil=0.001in
-
-\parseargdef\need{%
-  % Ensure vertical mode, so we don't make a big box in the middle of a
-  % paragraph.
-  \par
-  %
-  % If the @need value is less than one line space, it's useless.
-  \dimen0 = #1\mil
-  \dimen2 = \ht\strutbox
-  \advance\dimen2 by \dp\strutbox
-  \ifdim\dimen0 > \dimen2
-    %
-    % Do a \strut just to make the height of this box be normal, so the
-    % normal leading is inserted relative to the preceding line.
-    % And a page break here is fine.
-    \vtop to #1\mil{\strut\vfil}%
-    %
-    % TeX does not even consider page breaks if a penalty added to the
-    % main vertical list is 10000 or more.  But in order to see if the
-    % empty box we just added fits on the page, we must make it consider
-    % page breaks.  On the other hand, we don't want to actually break the
-    % page after the empty box.  So we use a penalty of 9999.
-    %
-    % There is an extremely small chance that TeX will actually break the
-    % page at this \penalty, if there are no other feasible breakpoints in
-    % sight.  (If the user is using lots of big @group commands, which
-    % almost-but-not-quite fill up a page, TeX will have a hard time doing
-    % good page breaking, for example.)  However, I could not construct an
-    % example where a page broke at this \penalty; if it happens in a real
-    % document, then we can reconsider our strategy.
-    \penalty9999
-    %
-    % Back up by the size of the box, whether we did a page break or not.
-    \kern -#1\mil
-    %
-    % Do not allow a page break right after this kern.
-    \nobreak
-  \fi
-}
-
-% @br   forces paragraph break (and is undocumented).
-
-\let\br = \par
-
-% @page forces the start of a new page.
-%
-\def\page{\par\vfill\supereject}
-
-% @exdent text....
-% outputs text on separate line in roman font, starting at standard page margin
-
-% This records the amount of indent in the innermost environment.
-% That's how much \exdent should take out.
-\newskip\exdentamount
-
-% This defn is used inside fill environments such as @defun.
-\parseargdef\exdent{\hfil\break\hbox{\kern -\exdentamount{\rm#1}}\hfil\break}
-
-% This defn is used inside nofill environments such as @example.
-\parseargdef\nofillexdent{{\advance \leftskip by -\exdentamount
-  \leftline{\hskip\leftskip{\rm#1}}}}
-
-% @inmargin{WHICH}{TEXT} puts TEXT in the WHICH margin next to the current
-% paragraph.  For more general purposes, use the \margin insertion
-% class.  WHICH is `l' or `r'.  Not documented, written for gawk manual.
-%
-\newskip\inmarginspacing \inmarginspacing=1cm
-\def\strutdepth{\dp\strutbox}
-%
-\def\doinmargin#1#2{\strut\vadjust{%
-  \nobreak
-  \kern-\strutdepth
-  \vtop to \strutdepth{%
-    \baselineskip=\strutdepth
-    \vss
-    % if you have multiple lines of stuff to put here, you'll need to
-    % make the vbox yourself of the appropriate size.
-    \ifx#1l%
-      \llap{\ignorespaces #2\hskip\inmarginspacing}%
-    \else
-      \rlap{\hskip\hsize \hskip\inmarginspacing \ignorespaces #2}%
-    \fi
-    \null
-  }%
-}}
-\def\inleftmargin{\doinmargin l}
-\def\inrightmargin{\doinmargin r}
-%
-% @inmargin{TEXT [, RIGHT-TEXT]}
-% (if RIGHT-TEXT is given, use TEXT for left page, RIGHT-TEXT for right;
-% else use TEXT for both).
-%
-\def\inmargin#1{\parseinmargin #1,,\finish}
-\def\parseinmargin#1,#2,#3\finish{% not perfect, but better than nothing.
-  \setbox0 = \hbox{\ignorespaces #2}%
-  \ifdim\wd0 > 0pt
-    \def\lefttext{#1}%  have both texts
-    \def\righttext{#2}%
-  \else
-    \def\lefttext{#1}%  have only one text
-    \def\righttext{#1}%
-  \fi
-  %
-  \ifodd\pageno
-    \def\temp{\inrightmargin\righttext}% odd page -> outside is right margin
-  \else
-    \def\temp{\inleftmargin\lefttext}%
-  \fi
-  \temp
-}
-
-% @| inserts a changebar to the left of the current line.  It should
-% surround any changed text.  This approach does *not* work if the
-% change spans more than two lines of output.  To handle that, we would
-% have adopt a much more difficult approach (putting marks into the main
-% vertical list for the beginning and end of each change).  This command
-% is not documented, not supported, and doesn't work.
-%
-\def\|{%
-  % \vadjust can only be used in horizontal mode.
-  \leavevmode
-  %
-  % Append this vertical mode material after the current line in the output.
-  \vadjust{%
-    % We want to insert a rule with the height and depth of the current
-    % leading; that is exactly what \strutbox is supposed to record.
-    \vskip-\baselineskip
-    %
-    % \vadjust-items are inserted at the left edge of the type.  So
-    % the \llap here moves out into the left-hand margin.
-    \llap{%
-      %
-      % For a thicker or thinner bar, change the `1pt'.
-      \vrule height\baselineskip width1pt
-      %
-      % This is the space between the bar and the text.
-      \hskip 12pt
-    }%
-  }%
-}
-
-% @include FILE -- \input text of FILE.
-%
-\def\include{\parseargusing\filenamecatcodes\includezzz}
-\def\includezzz#1{%
-  \pushthisfilestack
-  \def\thisfile{#1}%
-  {%
-    \makevalueexpandable  % we want to expand any @value in FILE.
-    \turnoffactive        % and allow special characters in the expansion
-    \indexnofonts         % Allow `@@' and other weird things in file names.
-    \wlog{texinfo.tex: doing @include of #1^^J}%
-    \edef\temp{\noexpand\input #1 }%
-    %
-    % This trickery is to read FILE outside of a group, in case it makes
-    % definitions, etc.
-    \expandafter
-  }\temp
-  \popthisfilestack
-}
-\def\filenamecatcodes{%
-  \catcode`\\=\other
-  \catcode`~=\other
-  \catcode`^=\other
-  \catcode`_=\other
-  \catcode`|=\other
-  \catcode`<=\other
-  \catcode`>=\other
-  \catcode`+=\other
-  \catcode`-=\other
-  \catcode`\`=\other
-  \catcode`\'=\other
-}
-
-\def\pushthisfilestack{%
-  \expandafter\pushthisfilestackX\popthisfilestack\StackTerm
-}
-\def\pushthisfilestackX{%
-  \expandafter\pushthisfilestackY\thisfile\StackTerm
-}
-\def\pushthisfilestackY #1\StackTerm #2\StackTerm {%
-  \gdef\popthisfilestack{\gdef\thisfile{#1}\gdef\popthisfilestack{#2}}%
-}
-
-\def\popthisfilestack{\errthisfilestackempty}
-\def\errthisfilestackempty{\errmessage{Internal error:
-  the stack of filenames is empty.}}
-%
-\def\thisfile{}
-
-% @center line
-% outputs that line, centered.
-%
-\parseargdef\center{%
-  \ifhmode
-    \let\centersub\centerH
-  \else
-    \let\centersub\centerV
-  \fi
-  \centersub{\hfil \ignorespaces#1\unskip \hfil}%
-  \let\centersub\relax % don't let the definition persist, just in case
-}
-\def\centerH#1{{%
-  \hfil\break
-  \advance\hsize by -\leftskip
-  \advance\hsize by -\rightskip
-  \line{#1}%
-  \break
-}}
-%
-\newcount\centerpenalty
-\def\centerV#1{%
-  % The idea here is the same as in \startdefun, \cartouche, etc.: if
-  % @center is the first thing after a section heading, we need to wipe
-  % out the negative parskip inserted by \sectionheading, but still
-  % prevent a page break here.
-  \centerpenalty = \lastpenalty
-  \ifnum\centerpenalty>10000 \vskip\parskip \fi
-  \ifnum\centerpenalty>9999 \penalty\centerpenalty \fi
-  \line{\kern\leftskip #1\kern\rightskip}%
-}
-
-% @sp n   outputs n lines of vertical space
-%
-\parseargdef\sp{\vskip #1\baselineskip}
-
-% @comment ...line which is ignored...
-% @c is the same as @comment
-% @ignore ... @end ignore  is another way to write a comment
-%
-\def\comment{\begingroup \catcode`\^^M=\other%
-\catcode`\@=\other \catcode`\{=\other \catcode`\}=\other%
-\commentxxx}
-{\catcode`\^^M=\other \gdef\commentxxx#1^^M{\endgroup}}
-%
-\let\c=\comment
-
-% @paragraphindent NCHARS
-% We'll use ems for NCHARS, close enough.
-% NCHARS can also be the word `asis' or `none'.
-% We cannot feasibly implement @paragraphindent asis, though.
-%
-\def\asisword{asis} % no translation, these are keywords
-\def\noneword{none}
-%
-\parseargdef\paragraphindent{%
-  \def\temp{#1}%
-  \ifx\temp\asisword
-  \else
-    \ifx\temp\noneword
-      \defaultparindent = 0pt
-    \else
-      \defaultparindent = #1em
-    \fi
-  \fi
-  \parindent = \defaultparindent
-}
-
-% @exampleindent NCHARS
-% We'll use ems for NCHARS like @paragraphindent.
-% It seems @exampleindent asis isn't necessary, but
-% I preserve it to make it similar to @paragraphindent.
-\parseargdef\exampleindent{%
-  \def\temp{#1}%
-  \ifx\temp\asisword
-  \else
-    \ifx\temp\noneword
-      \lispnarrowing = 0pt
-    \else
-      \lispnarrowing = #1em
-    \fi
-  \fi
-}
-
-% @firstparagraphindent WORD
-% If WORD is `none', then suppress indentation of the first paragraph
-% after a section heading.  If WORD is `insert', then do indent at such
-% paragraphs.
-%
-% The paragraph indentation is suppressed or not by calling
-% \suppressfirstparagraphindent, which the sectioning commands do.
-% We switch the definition of this back and forth according to WORD.
-% By default, we suppress indentation.
-%
-\def\suppressfirstparagraphindent{\dosuppressfirstparagraphindent}
-\def\insertword{insert}
-%
-\parseargdef\firstparagraphindent{%
-  \def\temp{#1}%
-  \ifx\temp\noneword
-    \let\suppressfirstparagraphindent = \dosuppressfirstparagraphindent
-  \else\ifx\temp\insertword
-    \let\suppressfirstparagraphindent = \relax
-  \else
-    \errhelp = \EMsimple
-    \errmessage{Unknown @firstparagraphindent option `\temp'}%
-  \fi\fi
-}
-
-% Here is how we actually suppress indentation.  Redefine \everypar to
-% \kern backwards by \parindent, and then reset itself to empty.
-%
-% We also make \indent itself not actually do anything until the next
-% paragraph.
-%
-\gdef\dosuppressfirstparagraphindent{%
-  \gdef\indent{%
-    \restorefirstparagraphindent
-    \indent
-  }%
-  \gdef\noindent{%
-    \restorefirstparagraphindent
-    \noindent
-  }%
-  \global\everypar = {%
-    \kern -\parindent
-    \restorefirstparagraphindent
-  }%
-}
-
-\gdef\restorefirstparagraphindent{%
-  \global \let \indent = \ptexindent
-  \global \let \noindent = \ptexnoindent
-  \global \everypar = {}%
-}
-
-
-% @refill is a no-op.
-\let\refill=\relax
-
-% If working on a large document in chapters, it is convenient to
-% be able to disable indexing, cross-referencing, and contents, for test runs.
-% This is done with @novalidate (before @setfilename).
-%
-\newif\iflinks \linkstrue % by default we want the aux files.
-\let\novalidate = \linksfalse
-
-% @setfilename is done at the beginning of every texinfo file.
-% So open here the files we need to have open while reading the input.
-% This makes it possible to make a .fmt file for texinfo.
-\def\setfilename{%
-   \fixbackslash  % Turn off hack to swallow `\input texinfo'.
-   \iflinks
-     \tryauxfile
-     % Open the new aux file.  TeX will close it automatically at exit.
-     \immediate\openout\auxfile=\jobname.aux
-   \fi % \openindices needs to do some work in any case.
-   \openindices
-   \let\setfilename=\comment % Ignore extra @setfilename cmds.
-   %
-   % If texinfo.cnf is present on the system, read it.
-   % Useful for site-wide @afourpaper, etc.
-   \openin 1 texinfo.cnf
-   \ifeof 1 \else \input texinfo.cnf \fi
-   \closein 1
-   %
-   \comment % Ignore the actual filename.
-}
-
-% Called from \setfilename.
-%
-\def\openindices{%
-  \newindex{cp}%
-  \newcodeindex{fn}%
-  \newcodeindex{vr}%
-  \newcodeindex{tp}%
-  \newcodeindex{ky}%
-  \newcodeindex{pg}%
-}
-
-% @bye.
-\outer\def\bye{\pagealignmacro\tracingstats=1\ptexend}
-
-
-\message{pdf,}
-% adobe `portable' document format
-\newcount\tempnum
-\newcount\lnkcount
-\newtoks\filename
-\newcount\filenamelength
-\newcount\pgn
-\newtoks\toksA
-\newtoks\toksB
-\newtoks\toksC
-\newtoks\toksD
-\newbox\boxA
-\newcount\countA
-\newif\ifpdf
-\newif\ifpdfmakepagedest
-
-% when pdftex is run in dvi mode, \pdfoutput is defined (so \pdfoutput=1
-% can be set).  So we test for \relax and 0 as well as being undefined.
-\ifx\pdfoutput\thisisundefined
-\else
-  \ifx\pdfoutput\relax
-  \else
-    \ifcase\pdfoutput
-    \else
-      \pdftrue
-    \fi
-  \fi
-\fi
-
-% PDF uses PostScript string constants for the names of xref targets,
-% for display in the outlines, and in other places.  Thus, we have to
-% double any backslashes.  Otherwise, a name like "\node" will be
-% interpreted as a newline (\n), followed by o, d, e.  Not good.
-% 
-% See http://www.ntg.nl/pipermail/ntg-pdftex/2004-July/000654.html and
-% related messages.  The final outcome is that it is up to the TeX user
-% to double the backslashes and otherwise make the string valid, so
-% that's what we do.  pdftex 1.30.0 (ca.2005) introduced a primitive to
-% do this reliably, so we use it.
-
-% #1 is a control sequence in which to do the replacements,
-% which we \xdef.
-\def\txiescapepdf#1{%
-  \ifx\pdfescapestring\thisisundefined
-    % No primitive available; should we give a warning or log?
-    % Many times it won't matter.
-  \else
-    % The expandable \pdfescapestring primitive escapes parentheses,
-    % backslashes, and other special chars.
-    \xdef#1{\pdfescapestring{#1}}%
-  \fi
-}
-
-\newhelp\nopdfimagehelp{Texinfo supports .png, .jpg, .jpeg, and .pdf images
-with PDF output, and none of those formats could be found.  (.eps cannot
-be supported due to the design of the PDF format; use regular TeX (DVI
-output) for that.)}
-
-\ifpdf
-  %
-  % Color manipulation macros using ideas from pdfcolor.tex,
-  % except using rgb instead of cmyk; the latter is said to render as a
-  % very dark gray on-screen and a very dark halftone in print, instead
-  % of actual black. The dark red here is dark enough to print on paper as
-  % nearly black, but still distinguishable for online viewing.  We use
-  % black by default, though.
-  \def\rgbDarkRed{0.50 0.09 0.12}
-  \def\rgbBlack{0 0 0}
-  %
-  % k sets the color for filling (usual text, etc.);
-  % K sets the color for stroking (thin rules, e.g., normal _'s).
-  \def\pdfsetcolor#1{\pdfliteral{#1 rg  #1 RG}}
-  %
-  % Set color, and create a mark which defines \thiscolor accordingly,
-  % so that \makeheadline knows which color to restore.
-  \def\setcolor#1{%
-    \xdef\lastcolordefs{\gdef\noexpand\thiscolor{#1}}%
-    \domark
-    \pdfsetcolor{#1}%
-  }
-  %
-  \def\maincolor{\rgbBlack}
-  \pdfsetcolor{\maincolor}
-  \edef\thiscolor{\maincolor}
-  \def\lastcolordefs{}
-  %
-  \def\makefootline{%
-    \baselineskip24pt
-    \line{\pdfsetcolor{\maincolor}\the\footline}%
-  }
-  %
-  \def\makeheadline{%
-    \vbox to 0pt{%
-      \vskip-22.5pt
-      \line{%
-        \vbox to8.5pt{}%
-        % Extract \thiscolor definition from the marks.
-        \getcolormarks
-        % Typeset the headline with \maincolor, then restore the color.
-        \pdfsetcolor{\maincolor}\the\headline\pdfsetcolor{\thiscolor}%
-      }%
-      \vss
-    }%
-    \nointerlineskip
-  }
-  %
-  %
-  \pdfcatalog{/PageMode /UseOutlines}
-  %
-  % #1 is image name, #2 width (might be empty/whitespace), #3 height (ditto).
-  \def\dopdfimage#1#2#3{%
-    \def\pdfimagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}%
-    \def\pdfimageheight{#3}\setbox2 = \hbox{\ignorespaces #3}%
-    %
-    % pdftex (and the PDF format) support .pdf, .png, .jpg (among
-    % others).  Let's try in that order, PDF first since if
-    % someone has a scalable image, presumably better to use that than a
-    % bitmap.
-    \let\pdfimgext=\empty
-    \begingroup
-      \openin 1 #1.pdf \ifeof 1
-        \openin 1 #1.PDF \ifeof 1
-          \openin 1 #1.png \ifeof 1
-            \openin 1 #1.jpg \ifeof 1
-              \openin 1 #1.jpeg \ifeof 1
-                \openin 1 #1.JPG \ifeof 1
-                  \errhelp = \nopdfimagehelp
-                  \errmessage{Could not find image file #1 for pdf}%
-                \else \gdef\pdfimgext{JPG}%
-                \fi
-              \else \gdef\pdfimgext{jpeg}%
-              \fi
-            \else \gdef\pdfimgext{jpg}%
-            \fi
-          \else \gdef\pdfimgext{png}%
-          \fi
-        \else \gdef\pdfimgext{PDF}%
-        \fi
-      \else \gdef\pdfimgext{pdf}%
-      \fi
-      \closein 1
-    \endgroup
-    %
-    % without \immediate, ancient pdftex seg faults when the same image is
-    % included twice.  (Version 3.14159-pre-1.0-unofficial-20010704.)
-    \ifnum\pdftexversion < 14
-      \immediate\pdfimage
-    \else
-      \immediate\pdfximage
-    \fi
-      \ifdim \wd0 >0pt width \pdfimagewidth \fi
-      \ifdim \wd2 >0pt height \pdfimageheight \fi
-      \ifnum\pdftexversion<13
-         #1.\pdfimgext
-       \else
-         {#1.\pdfimgext}%
-       \fi
-    \ifnum\pdftexversion < 14 \else
-      \pdfrefximage \pdflastximage
-    \fi}
-  %
-  \def\pdfmkdest#1{{%
-    % We have to set dummies so commands such as @code, and characters
-    % such as \, aren't expanded when present in a section title.
-    \indexnofonts
-    \turnoffactive
-    \makevalueexpandable
-    \def\pdfdestname{#1}%
-    \txiescapepdf\pdfdestname
-    \safewhatsit{\pdfdest name{\pdfdestname} xyz}%
-  }}
-  %
-  % used to mark target names; must be expandable.
-  \def\pdfmkpgn#1{#1}
-  %
-  % by default, use black for everything.
-  \def\urlcolor{\rgbBlack}
-  \def\linkcolor{\rgbBlack}
-  \def\endlink{\setcolor{\maincolor}\pdfendlink}
-  %
-  % Adding outlines to PDF; macros for calculating structure of outlines
-  % come from Petr Olsak
-  \def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0%
-    \else \csname#1\endcsname \fi}
-  \def\advancenumber#1{\tempnum=\expnumber{#1}\relax
-    \advance\tempnum by 1
-    \expandafter\xdef\csname#1\endcsname{\the\tempnum}}
-  %
-  % #1 is the section text, which is what will be displayed in the
-  % outline by the pdf viewer.  #2 is the pdf expression for the number
-  % of subentries (or empty, for subsubsections).  #3 is the node text,
-  % which might be empty if this toc entry had no corresponding node.
-  % #4 is the page number
-  %
-  \def\dopdfoutline#1#2#3#4{%
-    % Generate a link to the node text if that exists; else, use the
-    % page number.  We could generate a destination for the section
-    % text in the case where a section has no node, but it doesn't
-    % seem worth the trouble, since most documents are normally structured.
-    \edef\pdfoutlinedest{#3}%
-    \ifx\pdfoutlinedest\empty
-      \def\pdfoutlinedest{#4}%
-    \else
-      \txiescapepdf\pdfoutlinedest
-    \fi
-    %
-    % Also escape PDF chars in the display string.
-    \edef\pdfoutlinetext{#1}%
-    \txiescapepdf\pdfoutlinetext
-    %
-    \pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{\pdfoutlinetext}%
-  }
-  %
-  \def\pdfmakeoutlines{%
-    \begingroup
-      % Read toc silently, to get counts of subentries for \pdfoutline.
-      \def\partentry##1##2##3##4{}% ignore parts in the outlines
-      \def\numchapentry##1##2##3##4{%
-       \def\thischapnum{##2}%
-       \def\thissecnum{0}%
-       \def\thissubsecnum{0}%
-      }%
-      \def\numsecentry##1##2##3##4{%
-       \advancenumber{chap\thischapnum}%
-       \def\thissecnum{##2}%
-       \def\thissubsecnum{0}%
-      }%
-      \def\numsubsecentry##1##2##3##4{%
-       \advancenumber{sec\thissecnum}%
-       \def\thissubsecnum{##2}%
-      }%
-      \def\numsubsubsecentry##1##2##3##4{%
-       \advancenumber{subsec\thissubsecnum}%
-      }%
-      \def\thischapnum{0}%
-      \def\thissecnum{0}%
-      \def\thissubsecnum{0}%
-      %
-      % use \def rather than \let here because we redefine \chapentry et
-      % al. a second time, below.
-      \def\appentry{\numchapentry}%
-      \def\appsecentry{\numsecentry}%
-      \def\appsubsecentry{\numsubsecentry}%
-      \def\appsubsubsecentry{\numsubsubsecentry}%
-      \def\unnchapentry{\numchapentry}%
-      \def\unnsecentry{\numsecentry}%
-      \def\unnsubsecentry{\numsubsecentry}%
-      \def\unnsubsubsecentry{\numsubsubsecentry}%
-      \readdatafile{toc}%
-      %
-      % Read toc second time, this time actually producing the outlines.
-      % The `-' means take the \expnumber as the absolute number of
-      % subentries, which we calculated on our first read of the .toc above.
-      %
-      % We use the node names as the destinations.
-      \def\numchapentry##1##2##3##4{%
-        \dopdfoutline{##1}{count-\expnumber{chap##2}}{##3}{##4}}%
-      \def\numsecentry##1##2##3##4{%
-        \dopdfoutline{##1}{count-\expnumber{sec##2}}{##3}{##4}}%
-      \def\numsubsecentry##1##2##3##4{%
-        \dopdfoutline{##1}{count-\expnumber{subsec##2}}{##3}{##4}}%
-      \def\numsubsubsecentry##1##2##3##4{% count is always zero
-        \dopdfoutline{##1}{}{##3}{##4}}%
-      %
-      % PDF outlines are displayed using system fonts, instead of
-      % document fonts.  Therefore we cannot use special characters,
-      % since the encoding is unknown.  For example, the eogonek from
-      % Latin 2 (0xea) gets translated to a | character.  Info from
-      % Staszek Wawrykiewicz, 19 Jan 2004 04:09:24 +0100.
-      %
-      % TODO this right, we have to translate 8-bit characters to
-      % their "best" equivalent, based on the @documentencoding.  Too
-      % much work for too little return.  Just use the ASCII equivalents
-      % we use for the index sort strings.
-      % 
-      \indexnofonts
-      \setupdatafile
-      % We can have normal brace characters in the PDF outlines, unlike
-      % Texinfo index files.  So set that up.
-      \def\{{\lbracecharliteral}%
-      \def\}{\rbracecharliteral}%
-      \catcode`\\=\active \otherbackslash
-      \input \tocreadfilename
-    \endgroup
-  }
-  {\catcode`[=1 \catcode`]=2
-   \catcode`{=\other \catcode`}=\other
-   \gdef\lbracecharliteral[{]%
-   \gdef\rbracecharliteral[}]%
-  ]
-  %
-  \def\skipspaces#1{\def\PP{#1}\def\D{|}%
-    \ifx\PP\D\let\nextsp\relax
-    \else\let\nextsp\skipspaces
-      \addtokens{\filename}{\PP}%
-      \advance\filenamelength by 1
-    \fi
-    \nextsp}
-  \def\getfilename#1{%
-    \filenamelength=0
-    % If we don't expand the argument now, \skipspaces will get
-    % snagged on things like "@value{foo}".
-    \edef\temp{#1}%
-    \expandafter\skipspaces\temp|\relax
-  }
-  \ifnum\pdftexversion < 14
-    \let \startlink \pdfannotlink
-  \else
-    \let \startlink \pdfstartlink
-  \fi
-  % make a live url in pdf output.
-  \def\pdfurl#1{%
-    \begingroup
-      % it seems we really need yet another set of dummies; have not
-      % tried to figure out what each command should do in the context
-      % of @url.  for now, just make @/ a no-op, that's the only one
-      % people have actually reported a problem with.
-      %
-      \normalturnoffactive
-      \def\@{@}%
-      \let\/=\empty
-      \makevalueexpandable
-      % do we want to go so far as to use \indexnofonts instead of just
-      % special-casing \var here?
-      \def\var##1{##1}%
-      %
-      \leavevmode\setcolor{\urlcolor}%
-      \startlink attr{/Border [0 0 0]}%
-        user{/Subtype /Link /A << /S /URI /URI (#1) >>}%
-    \endgroup}
-  \def\pdfgettoks#1.{\setbox\boxA=\hbox{\toksA={#1.}\toksB={}\maketoks}}
-  \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks}
-  \def\adn#1{\addtokens{\toksC}{#1}\global\countA=1\let\next=\maketoks}
-  \def\poptoks#1#2|ENDTOKS|{\let\first=#1\toksD={#1}\toksA={#2}}
-  \def\maketoks{%
-    \expandafter\poptoks\the\toksA|ENDTOKS|\relax
-    \ifx\first0\adn0
-    \else\ifx\first1\adn1 \else\ifx\first2\adn2 \else\ifx\first3\adn3
-    \else\ifx\first4\adn4 \else\ifx\first5\adn5 \else\ifx\first6\adn6
-    \else\ifx\first7\adn7 \else\ifx\first8\adn8 \else\ifx\first9\adn9
-    \else
-      \ifnum0=\countA\else\makelink\fi
-      \ifx\first.\let\next=\done\else
-        \let\next=\maketoks
-        \addtokens{\toksB}{\the\toksD}
-        \ifx\first,\addtokens{\toksB}{\space}\fi
-      \fi
-    \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
-    \next}
-  \def\makelink{\addtokens{\toksB}%
-    {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0}
-  \def\pdflink#1{%
-    \startlink attr{/Border [0 0 0]} goto name{\pdfmkpgn{#1}}
-    \setcolor{\linkcolor}#1\endlink}
-  \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st}
-\else
-  % non-pdf mode
-  \let\pdfmkdest = \gobble
-  \let\pdfurl = \gobble
-  \let\endlink = \relax
-  \let\setcolor = \gobble
-  \let\pdfsetcolor = \gobble
-  \let\pdfmakeoutlines = \relax
-\fi  % \ifx\pdfoutput
-
-
-\message{fonts,}
-
-% Change the current font style to #1, remembering it in \curfontstyle.
-% For now, we do not accumulate font styles: @b{@i{foo}} prints foo in
-% italics, not bold italics.
-%
-\def\setfontstyle#1{%
-  \def\curfontstyle{#1}% not as a control sequence, because we are \edef'd.
-  \csname ten#1\endcsname  % change the current font
-}
-
-% Select #1 fonts with the current style.
-%
-\def\selectfonts#1{\csname #1fonts\endcsname \csname\curfontstyle\endcsname}
-
-\def\rm{\fam=0 \setfontstyle{rm}}
-\def\it{\fam=\itfam \setfontstyle{it}}
-\def\sl{\fam=\slfam \setfontstyle{sl}}
-\def\bf{\fam=\bffam \setfontstyle{bf}}\def\bfstylename{bf}
-\def\tt{\fam=\ttfam \setfontstyle{tt}}
-
-% Unfortunately, we have to override this for titles and the like, since
-% in those cases "rm" is bold.  Sigh.
-\def\rmisbold{\rm\def\curfontstyle{bf}}
-
-% Texinfo sort of supports the sans serif font style, which plain TeX does not.
-% So we set up a \sf.
-\newfam\sffam
-\def\sf{\fam=\sffam \setfontstyle{sf}}
-\let\li = \sf % Sometimes we call it \li, not \sf.
-
-% We don't need math for this font style.
-\def\ttsl{\setfontstyle{ttsl}}
-
-
-% Set the baselineskip to #1, and the lineskip and strut size
-% correspondingly.  There is no deep meaning behind these magic numbers
-% used as factors; they just match (closely enough) what Knuth defined.
-%
-\def\lineskipfactor{.08333}
-\def\strutheightpercent{.70833}
-\def\strutdepthpercent {.29167}
-%
-% can get a sort of poor man's double spacing by redefining this.
-\def\baselinefactor{1}
-%
-\newdimen\textleading
-\def\setleading#1{%
-  \dimen0 = #1\relax
-  \normalbaselineskip = \baselinefactor\dimen0
-  \normallineskip = \lineskipfactor\normalbaselineskip
-  \normalbaselines
-  \setbox\strutbox =\hbox{%
-    \vrule width0pt height\strutheightpercent\baselineskip
-                    depth \strutdepthpercent \baselineskip
-  }%
-}
-
-% PDF CMaps.  See also LaTeX's t1.cmap.
-%
-% do nothing with this by default.
-\expandafter\let\csname cmapOT1\endcsname\gobble
-\expandafter\let\csname cmapOT1IT\endcsname\gobble
-\expandafter\let\csname cmapOT1TT\endcsname\gobble
-
-% if we are producing pdf, and we have \pdffontattr, then define cmaps.
-% (\pdffontattr was introduced many years ago, but people still run
-% older pdftex's; it's easy to conditionalize, so we do.)
-\ifpdf \ifx\pdffontattr\thisisundefined \else
-  \begingroup
-    \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char.
-    \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap
-%%DocumentNeededResources: ProcSet (CIDInit)
-%%IncludeResource: ProcSet (CIDInit)
-%%BeginResource: CMap (TeX-OT1-0)
-%%Title: (TeX-OT1-0 TeX OT1 0)
-%%Version: 1.000
-%%EndComments
-/CIDInit /ProcSet findresource begin
-12 dict begin
-begincmap
-/CIDSystemInfo
-<< /Registry (TeX)
-/Ordering (OT1)
-/Supplement 0
->> def
-/CMapName /TeX-OT1-0 def
-/CMapType 2 def
-1 begincodespacerange
-<00> <7F>
-endcodespacerange
-8 beginbfrange
-<00> <01> <0393>
-<09> <0A> <03A8>
-<23> <26> <0023>
-<28> <3B> <0028>
-<3F> <5B> <003F>
-<5D> <5E> <005D>
-<61> <7A> <0061>
-<7B> <7C> <2013>
-endbfrange
-40 beginbfchar
-<02> <0398>
-<03> <039B>
-<04> <039E>
-<05> <03A0>
-<06> <03A3>
-<07> <03D2>
-<08> <03A6>
-<0B> <00660066>
-<0C> <00660069>
-<0D> <0066006C>
-<0E> <006600660069>
-<0F> <00660066006C>
-<10> <0131>
-<11> <0237>
-<12> <0060>
-<13> <00B4>
-<14> <02C7>
-<15> <02D8>
-<16> <00AF>
-<17> <02DA>
-<18> <00B8>
-<19> <00DF>
-<1A> <00E6>
-<1B> <0153>
-<1C> <00F8>
-<1D> <00C6>
-<1E> <0152>
-<1F> <00D8>
-<21> <0021>
-<22> <201D>
-<27> <2019>
-<3C> <00A1>
-<3D> <003D>
-<3E> <00BF>
-<5C> <201C>
-<5F> <02D9>
-<60> <2018>
-<7D> <02DD>
-<7E> <007E>
-<7F> <00A8>
-endbfchar
-endcmap
-CMapName currentdict /CMap defineresource pop
-end
-end
-%%EndResource
-%%EOF
-    }\endgroup
-  \expandafter\edef\csname cmapOT1\endcsname#1{%
-    \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}%
-  }%
-%
-% \cmapOT1IT
-  \begingroup
-    \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char.
-    \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap
-%%DocumentNeededResources: ProcSet (CIDInit)
-%%IncludeResource: ProcSet (CIDInit)
-%%BeginResource: CMap (TeX-OT1IT-0)
-%%Title: (TeX-OT1IT-0 TeX OT1IT 0)
-%%Version: 1.000
-%%EndComments
-/CIDInit /ProcSet findresource begin
-12 dict begin
-begincmap
-/CIDSystemInfo
-<< /Registry (TeX)
-/Ordering (OT1IT)
-/Supplement 0
->> def
-/CMapName /TeX-OT1IT-0 def
-/CMapType 2 def
-1 begincodespacerange
-<00> <7F>
-endcodespacerange
-8 beginbfrange
-<00> <01> <0393>
-<09> <0A> <03A8>
-<25> <26> <0025>
-<28> <3B> <0028>
-<3F> <5B> <003F>
-<5D> <5E> <005D>
-<61> <7A> <0061>
-<7B> <7C> <2013>
-endbfrange
-42 beginbfchar
-<02> <0398>
-<03> <039B>
-<04> <039E>
-<05> <03A0>
-<06> <03A3>
-<07> <03D2>
-<08> <03A6>
-<0B> <00660066>
-<0C> <00660069>
-<0D> <0066006C>
-<0E> <006600660069>
-<0F> <00660066006C>
-<10> <0131>
-<11> <0237>
-<12> <0060>
-<13> <00B4>
-<14> <02C7>
-<15> <02D8>
-<16> <00AF>
-<17> <02DA>
-<18> <00B8>
-<19> <00DF>
-<1A> <00E6>
-<1B> <0153>
-<1C> <00F8>
-<1D> <00C6>
-<1E> <0152>
-<1F> <00D8>
-<21> <0021>
-<22> <201D>
-<23> <0023>
-<24> <00A3>
-<27> <2019>
-<3C> <00A1>
-<3D> <003D>
-<3E> <00BF>
-<5C> <201C>
-<5F> <02D9>
-<60> <2018>
-<7D> <02DD>
-<7E> <007E>
-<7F> <00A8>
-endbfchar
-endcmap
-CMapName currentdict /CMap defineresource pop
-end
-end
-%%EndResource
-%%EOF
-    }\endgroup
-  \expandafter\edef\csname cmapOT1IT\endcsname#1{%
-    \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}%
-  }%
-%
-% \cmapOT1TT
-  \begingroup
-    \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char.
-    \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap
-%%DocumentNeededResources: ProcSet (CIDInit)
-%%IncludeResource: ProcSet (CIDInit)
-%%BeginResource: CMap (TeX-OT1TT-0)
-%%Title: (TeX-OT1TT-0 TeX OT1TT 0)
-%%Version: 1.000
-%%EndComments
-/CIDInit /ProcSet findresource begin
-12 dict begin
-begincmap
-/CIDSystemInfo
-<< /Registry (TeX)
-/Ordering (OT1TT)
-/Supplement 0
->> def
-/CMapName /TeX-OT1TT-0 def
-/CMapType 2 def
-1 begincodespacerange
-<00> <7F>
-endcodespacerange
-5 beginbfrange
-<00> <01> <0393>
-<09> <0A> <03A8>
-<21> <26> <0021>
-<28> <5F> <0028>
-<61> <7E> <0061>
-endbfrange
-32 beginbfchar
-<02> <0398>
-<03> <039B>
-<04> <039E>
-<05> <03A0>
-<06> <03A3>
-<07> <03D2>
-<08> <03A6>
-<0B> <2191>
-<0C> <2193>
-<0D> <0027>
-<0E> <00A1>
-<0F> <00BF>
-<10> <0131>
-<11> <0237>
-<12> <0060>
-<13> <00B4>
-<14> <02C7>
-<15> <02D8>
-<16> <00AF>
-<17> <02DA>
-<18> <00B8>
-<19> <00DF>
-<1A> <00E6>
-<1B> <0153>
-<1C> <00F8>
-<1D> <00C6>
-<1E> <0152>
-<1F> <00D8>
-<20> <2423>
-<27> <2019>
-<60> <2018>
-<7F> <00A8>
-endbfchar
-endcmap
-CMapName currentdict /CMap defineresource pop
-end
-end
-%%EndResource
-%%EOF
-    }\endgroup
-  \expandafter\edef\csname cmapOT1TT\endcsname#1{%
-    \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}%
-  }%
-\fi\fi
-
-
-% Set the font macro #1 to the font named \fontprefix#2.
-% #3 is the font's design size, #4 is a scale factor, #5 is the CMap
-% encoding (only OT1, OT1IT and OT1TT are allowed, or empty to omit).
-% Example:
-% #1 = \textrm
-% #2 = \rmshape
-% #3 = 10
-% #4 = \mainmagstep
-% #5 = OT1
-%
-\def\setfont#1#2#3#4#5{%
-  \font#1=\fontprefix#2#3 scaled #4
-  \csname cmap#5\endcsname#1%
-}
-% This is what gets called when #5 of \setfont is empty.
-\let\cmap\gobble
-%
-% (end of cmaps)
-
-% Use cm as the default font prefix.
-% To specify the font prefix, you must define \fontprefix
-% before you read in texinfo.tex.
-\ifx\fontprefix\thisisundefined
-\def\fontprefix{cm}
-\fi
-% Support font families that don't use the same naming scheme as CM.
-\def\rmshape{r}
-\def\rmbshape{bx}               % where the normal face is bold
-\def\bfshape{b}
-\def\bxshape{bx}
-\def\ttshape{tt}
-\def\ttbshape{tt}
-\def\ttslshape{sltt}
-\def\itshape{ti}
-\def\itbshape{bxti}
-\def\slshape{sl}
-\def\slbshape{bxsl}
-\def\sfshape{ss}
-\def\sfbshape{ss}
-\def\scshape{csc}
-\def\scbshape{csc}
-
-% Definitions for a main text size of 11pt.  (The default in Texinfo.)
-%
-\def\definetextfontsizexi{%
-% Text fonts (11.2pt, magstep1).
-\def\textnominalsize{11pt}
-\edef\mainmagstep{\magstephalf}
-\setfont\textrm\rmshape{10}{\mainmagstep}{OT1}
-\setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT}
-\setfont\textbf\bfshape{10}{\mainmagstep}{OT1}
-\setfont\textit\itshape{10}{\mainmagstep}{OT1IT}
-\setfont\textsl\slshape{10}{\mainmagstep}{OT1}
-\setfont\textsf\sfshape{10}{\mainmagstep}{OT1}
-\setfont\textsc\scshape{10}{\mainmagstep}{OT1}
-\setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT}
-\font\texti=cmmi10 scaled \mainmagstep
-\font\textsy=cmsy10 scaled \mainmagstep
-\def\textecsize{1095}
-
-% A few fonts for @defun names and args.
-\setfont\defbf\bfshape{10}{\magstep1}{OT1}
-\setfont\deftt\ttshape{10}{\magstep1}{OT1TT}
-\setfont\defttsl\ttslshape{10}{\magstep1}{OT1TT}
-\def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf}
-
-% Fonts for indices, footnotes, small examples (9pt).
-\def\smallnominalsize{9pt}
-\setfont\smallrm\rmshape{9}{1000}{OT1}
-\setfont\smalltt\ttshape{9}{1000}{OT1TT}
-\setfont\smallbf\bfshape{10}{900}{OT1}
-\setfont\smallit\itshape{9}{1000}{OT1IT}
-\setfont\smallsl\slshape{9}{1000}{OT1}
-\setfont\smallsf\sfshape{9}{1000}{OT1}
-\setfont\smallsc\scshape{10}{900}{OT1}
-\setfont\smallttsl\ttslshape{10}{900}{OT1TT}
-\font\smalli=cmmi9
-\font\smallsy=cmsy9
-\def\smallecsize{0900}
-
-% Fonts for small examples (8pt).
-\def\smallernominalsize{8pt}
-\setfont\smallerrm\rmshape{8}{1000}{OT1}
-\setfont\smallertt\ttshape{8}{1000}{OT1TT}
-\setfont\smallerbf\bfshape{10}{800}{OT1}
-\setfont\smallerit\itshape{8}{1000}{OT1IT}
-\setfont\smallersl\slshape{8}{1000}{OT1}
-\setfont\smallersf\sfshape{8}{1000}{OT1}
-\setfont\smallersc\scshape{10}{800}{OT1}
-\setfont\smallerttsl\ttslshape{10}{800}{OT1TT}
-\font\smalleri=cmmi8
-\font\smallersy=cmsy8
-\def\smallerecsize{0800}
-
-% Fonts for title page (20.4pt):
-\def\titlenominalsize{20pt}
-\setfont\titlerm\rmbshape{12}{\magstep3}{OT1}
-\setfont\titleit\itbshape{10}{\magstep4}{OT1IT}
-\setfont\titlesl\slbshape{10}{\magstep4}{OT1}
-\setfont\titlett\ttbshape{12}{\magstep3}{OT1TT}
-\setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT}
-\setfont\titlesf\sfbshape{17}{\magstep1}{OT1}
-\let\titlebf=\titlerm
-\setfont\titlesc\scbshape{10}{\magstep4}{OT1}
-\font\titlei=cmmi12 scaled \magstep3
-\font\titlesy=cmsy10 scaled \magstep4
-\def\titleecsize{2074}
-
-% Chapter (and unnumbered) fonts (17.28pt).
-\def\chapnominalsize{17pt}
-\setfont\chaprm\rmbshape{12}{\magstep2}{OT1}
-\setfont\chapit\itbshape{10}{\magstep3}{OT1IT}
-\setfont\chapsl\slbshape{10}{\magstep3}{OT1}
-\setfont\chaptt\ttbshape{12}{\magstep2}{OT1TT}
-\setfont\chapttsl\ttslshape{10}{\magstep3}{OT1TT}
-\setfont\chapsf\sfbshape{17}{1000}{OT1}
-\let\chapbf=\chaprm
-\setfont\chapsc\scbshape{10}{\magstep3}{OT1}
-\font\chapi=cmmi12 scaled \magstep2
-\font\chapsy=cmsy10 scaled \magstep3
-\def\chapecsize{1728}
-
-% Section fonts (14.4pt).
-\def\secnominalsize{14pt}
-\setfont\secrm\rmbshape{12}{\magstep1}{OT1}
-\setfont\secit\itbshape{10}{\magstep2}{OT1IT}
-\setfont\secsl\slbshape{10}{\magstep2}{OT1}
-\setfont\sectt\ttbshape{12}{\magstep1}{OT1TT}
-\setfont\secttsl\ttslshape{10}{\magstep2}{OT1TT}
-\setfont\secsf\sfbshape{12}{\magstep1}{OT1}
-\let\secbf\secrm
-\setfont\secsc\scbshape{10}{\magstep2}{OT1}
-\font\seci=cmmi12 scaled \magstep1
-\font\secsy=cmsy10 scaled \magstep2
-\def\sececsize{1440}
-
-% Subsection fonts (13.15pt).
-\def\ssecnominalsize{13pt}
-\setfont\ssecrm\rmbshape{12}{\magstephalf}{OT1}
-\setfont\ssecit\itbshape{10}{1315}{OT1IT}
-\setfont\ssecsl\slbshape{10}{1315}{OT1}
-\setfont\ssectt\ttbshape{12}{\magstephalf}{OT1TT}
-\setfont\ssecttsl\ttslshape{10}{1315}{OT1TT}
-\setfont\ssecsf\sfbshape{12}{\magstephalf}{OT1}
-\let\ssecbf\ssecrm
-\setfont\ssecsc\scbshape{10}{1315}{OT1}
-\font\sseci=cmmi12 scaled \magstephalf
-\font\ssecsy=cmsy10 scaled 1315
-\def\ssececsize{1200}
-
-% Reduced fonts for @acro in text (10pt).
-\def\reducednominalsize{10pt}
-\setfont\reducedrm\rmshape{10}{1000}{OT1}
-\setfont\reducedtt\ttshape{10}{1000}{OT1TT}
-\setfont\reducedbf\bfshape{10}{1000}{OT1}
-\setfont\reducedit\itshape{10}{1000}{OT1IT}
-\setfont\reducedsl\slshape{10}{1000}{OT1}
-\setfont\reducedsf\sfshape{10}{1000}{OT1}
-\setfont\reducedsc\scshape{10}{1000}{OT1}
-\setfont\reducedttsl\ttslshape{10}{1000}{OT1TT}
-\font\reducedi=cmmi10
-\font\reducedsy=cmsy10
-\def\reducedecsize{1000}
-
-\textleading = 13.2pt % line spacing for 11pt CM
-\textfonts            % reset the current fonts
-\rm
-} % end of 11pt text font size definitions, \definetextfontsizexi
-
-
-% Definitions to make the main text be 10pt Computer Modern, with
-% section, chapter, etc., sizes following suit.  This is for the GNU
-% Press printing of the Emacs 22 manual.  Maybe other manuals in the
-% future.  Used with @smallbook, which sets the leading to 12pt.
-%
-\def\definetextfontsizex{%
-% Text fonts (10pt).
-\def\textnominalsize{10pt}
-\edef\mainmagstep{1000}
-\setfont\textrm\rmshape{10}{\mainmagstep}{OT1}
-\setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT}
-\setfont\textbf\bfshape{10}{\mainmagstep}{OT1}
-\setfont\textit\itshape{10}{\mainmagstep}{OT1IT}
-\setfont\textsl\slshape{10}{\mainmagstep}{OT1}
-\setfont\textsf\sfshape{10}{\mainmagstep}{OT1}
-\setfont\textsc\scshape{10}{\mainmagstep}{OT1}
-\setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT}
-\font\texti=cmmi10 scaled \mainmagstep
-\font\textsy=cmsy10 scaled \mainmagstep
-\def\textecsize{1000}
-
-% A few fonts for @defun names and args.
-\setfont\defbf\bfshape{10}{\magstephalf}{OT1}
-\setfont\deftt\ttshape{10}{\magstephalf}{OT1TT}
-\setfont\defttsl\ttslshape{10}{\magstephalf}{OT1TT}
-\def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf}
-
-% Fonts for indices, footnotes, small examples (9pt).
-\def\smallnominalsize{9pt}
-\setfont\smallrm\rmshape{9}{1000}{OT1}
-\setfont\smalltt\ttshape{9}{1000}{OT1TT}
-\setfont\smallbf\bfshape{10}{900}{OT1}
-\setfont\smallit\itshape{9}{1000}{OT1IT}
-\setfont\smallsl\slshape{9}{1000}{OT1}
-\setfont\smallsf\sfshape{9}{1000}{OT1}
-\setfont\smallsc\scshape{10}{900}{OT1}
-\setfont\smallttsl\ttslshape{10}{900}{OT1TT}
-\font\smalli=cmmi9
-\font\smallsy=cmsy9
-\def\smallecsize{0900}
-
-% Fonts for small examples (8pt).
-\def\smallernominalsize{8pt}
-\setfont\smallerrm\rmshape{8}{1000}{OT1}
-\setfont\smallertt\ttshape{8}{1000}{OT1TT}
-\setfont\smallerbf\bfshape{10}{800}{OT1}
-\setfont\smallerit\itshape{8}{1000}{OT1IT}
-\setfont\smallersl\slshape{8}{1000}{OT1}
-\setfont\smallersf\sfshape{8}{1000}{OT1}
-\setfont\smallersc\scshape{10}{800}{OT1}
-\setfont\smallerttsl\ttslshape{10}{800}{OT1TT}
-\font\smalleri=cmmi8
-\font\smallersy=cmsy8
-\def\smallerecsize{0800}
-
-% Fonts for title page (20.4pt):
-\def\titlenominalsize{20pt}
-\setfont\titlerm\rmbshape{12}{\magstep3}{OT1}
-\setfont\titleit\itbshape{10}{\magstep4}{OT1IT}
-\setfont\titlesl\slbshape{10}{\magstep4}{OT1}
-\setfont\titlett\ttbshape{12}{\magstep3}{OT1TT}
-\setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT}
-\setfont\titlesf\sfbshape{17}{\magstep1}{OT1}
-\let\titlebf=\titlerm
-\setfont\titlesc\scbshape{10}{\magstep4}{OT1}
-\font\titlei=cmmi12 scaled \magstep3
-\font\titlesy=cmsy10 scaled \magstep4
-\def\titleecsize{2074}
-
-% Chapter fonts (14.4pt).
-\def\chapnominalsize{14pt}
-\setfont\chaprm\rmbshape{12}{\magstep1}{OT1}
-\setfont\chapit\itbshape{10}{\magstep2}{OT1IT}
-\setfont\chapsl\slbshape{10}{\magstep2}{OT1}
-\setfont\chaptt\ttbshape{12}{\magstep1}{OT1TT}
-\setfont\chapttsl\ttslshape{10}{\magstep2}{OT1TT}
-\setfont\chapsf\sfbshape{12}{\magstep1}{OT1}
-\let\chapbf\chaprm
-\setfont\chapsc\scbshape{10}{\magstep2}{OT1}
-\font\chapi=cmmi12 scaled \magstep1
-\font\chapsy=cmsy10 scaled \magstep2
-\def\chapecsize{1440}
-
-% Section fonts (12pt).
-\def\secnominalsize{12pt}
-\setfont\secrm\rmbshape{12}{1000}{OT1}
-\setfont\secit\itbshape{10}{\magstep1}{OT1IT}
-\setfont\secsl\slbshape{10}{\magstep1}{OT1}
-\setfont\sectt\ttbshape{12}{1000}{OT1TT}
-\setfont\secttsl\ttslshape{10}{\magstep1}{OT1TT}
-\setfont\secsf\sfbshape{12}{1000}{OT1}
-\let\secbf\secrm
-\setfont\secsc\scbshape{10}{\magstep1}{OT1}
-\font\seci=cmmi12
-\font\secsy=cmsy10 scaled \magstep1
-\def\sececsize{1200}
-
-% Subsection fonts (10pt).
-\def\ssecnominalsize{10pt}
-\setfont\ssecrm\rmbshape{10}{1000}{OT1}
-\setfont\ssecit\itbshape{10}{1000}{OT1IT}
-\setfont\ssecsl\slbshape{10}{1000}{OT1}
-\setfont\ssectt\ttbshape{10}{1000}{OT1TT}
-\setfont\ssecttsl\ttslshape{10}{1000}{OT1TT}
-\setfont\ssecsf\sfbshape{10}{1000}{OT1}
-\let\ssecbf\ssecrm
-\setfont\ssecsc\scbshape{10}{1000}{OT1}
-\font\sseci=cmmi10
-\font\ssecsy=cmsy10
-\def\ssececsize{1000}
-
-% Reduced fonts for @acro in text (9pt).
-\def\reducednominalsize{9pt}
-\setfont\reducedrm\rmshape{9}{1000}{OT1}
-\setfont\reducedtt\ttshape{9}{1000}{OT1TT}
-\setfont\reducedbf\bfshape{10}{900}{OT1}
-\setfont\reducedit\itshape{9}{1000}{OT1IT}
-\setfont\reducedsl\slshape{9}{1000}{OT1}
-\setfont\reducedsf\sfshape{9}{1000}{OT1}
-\setfont\reducedsc\scshape{10}{900}{OT1}
-\setfont\reducedttsl\ttslshape{10}{900}{OT1TT}
-\font\reducedi=cmmi9
-\font\reducedsy=cmsy9
-\def\reducedecsize{0900}
-
-\divide\parskip by 2  % reduce space between paragraphs
-\textleading = 12pt   % line spacing for 10pt CM
-\textfonts            % reset the current fonts
-\rm
-} % end of 10pt text font size definitions, \definetextfontsizex
-
-
-% We provide the user-level command
-%   @fonttextsize 10
-% (or 11) to redefine the text font size.  pt is assumed.
-%
-\def\xiword{11}
-\def\xword{10}
-\def\xwordpt{10pt}
-%
-\parseargdef\fonttextsize{%
-  \def\textsizearg{#1}%
-  %\wlog{doing @fonttextsize \textsizearg}%
-  %
-  % Set \globaldefs so that documents can use this inside @tex, since
-  % makeinfo 4.8 does not support it, but we need it nonetheless.
-  %
- \begingroup \globaldefs=1
-  \ifx\textsizearg\xword \definetextfontsizex
-  \else \ifx\textsizearg\xiword \definetextfontsizexi
-  \else
-    \errhelp=\EMsimple
-    \errmessage{@fonttextsize only supports `10' or `11', not `\textsizearg'}
-  \fi\fi
- \endgroup
-}
-
-
-% In order for the font changes to affect most math symbols and letters,
-% we have to define the \textfont of the standard families.  Since
-% texinfo doesn't allow for producing subscripts and superscripts except
-% in the main text, we don't bother to reset \scriptfont and
-% \scriptscriptfont (which would also require loading a lot more fonts).
-%
-\def\resetmathfonts{%
-  \textfont0=\tenrm \textfont1=\teni \textfont2=\tensy
-  \textfont\itfam=\tenit \textfont\slfam=\tensl \textfont\bffam=\tenbf
-  \textfont\ttfam=\tentt \textfont\sffam=\tensf
-}
-
-% The font-changing commands redefine the meanings of \tenSTYLE, instead
-% of just \STYLE.  We do this because \STYLE needs to also set the
-% current \fam for math mode.  Our \STYLE (e.g., \rm) commands hardwire
-% \tenSTYLE to set the current font.
-%
-% Each font-changing command also sets the names \lsize (one size lower)
-% and \lllsize (three sizes lower).  These relative commands are used in
-% the LaTeX logo and acronyms.
-%
-% This all needs generalizing, badly.
-%
-\def\textfonts{%
-  \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl
-  \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc
-  \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy
-  \let\tenttsl=\textttsl
-  \def\curfontsize{text}%
-  \def\lsize{reduced}\def\lllsize{smaller}%
-  \resetmathfonts \setleading{\textleading}}
-\def\titlefonts{%
-  \let\tenrm=\titlerm \let\tenit=\titleit \let\tensl=\titlesl
-  \let\tenbf=\titlebf \let\tentt=\titlett \let\smallcaps=\titlesc
-  \let\tensf=\titlesf \let\teni=\titlei \let\tensy=\titlesy
-  \let\tenttsl=\titlettsl
-  \def\curfontsize{title}%
-  \def\lsize{chap}\def\lllsize{subsec}%
-  \resetmathfonts \setleading{27pt}}
-\def\titlefont#1{{\titlefonts\rmisbold #1}}
-\def\chapfonts{%
-  \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl
-  \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc
-  \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy
-  \let\tenttsl=\chapttsl
-  \def\curfontsize{chap}%
-  \def\lsize{sec}\def\lllsize{text}%
-  \resetmathfonts \setleading{19pt}}
-\def\secfonts{%
-  \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl
-  \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc
-  \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy
-  \let\tenttsl=\secttsl
-  \def\curfontsize{sec}%
-  \def\lsize{subsec}\def\lllsize{reduced}%
-  \resetmathfonts \setleading{17pt}}
-\def\subsecfonts{%
-  \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl
-  \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc
-  \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy
-  \let\tenttsl=\ssecttsl
-  \def\curfontsize{ssec}%
-  \def\lsize{text}\def\lllsize{small}%
-  \resetmathfonts \setleading{15pt}}
-\let\subsubsecfonts = \subsecfonts
-\def\reducedfonts{%
-  \let\tenrm=\reducedrm \let\tenit=\reducedit \let\tensl=\reducedsl
-  \let\tenbf=\reducedbf \let\tentt=\reducedtt \let\reducedcaps=\reducedsc
-  \let\tensf=\reducedsf \let\teni=\reducedi \let\tensy=\reducedsy
-  \let\tenttsl=\reducedttsl
-  \def\curfontsize{reduced}%
-  \def\lsize{small}\def\lllsize{smaller}%
-  \resetmathfonts \setleading{10.5pt}}
-\def\smallfonts{%
-  \let\tenrm=\smallrm \let\tenit=\smallit \let\tensl=\smallsl
-  \let\tenbf=\smallbf \let\tentt=\smalltt \let\smallcaps=\smallsc
-  \let\tensf=\smallsf \let\teni=\smalli \let\tensy=\smallsy
-  \let\tenttsl=\smallttsl
-  \def\curfontsize{small}%
-  \def\lsize{smaller}\def\lllsize{smaller}%
-  \resetmathfonts \setleading{10.5pt}}
-\def\smallerfonts{%
-  \let\tenrm=\smallerrm \let\tenit=\smallerit \let\tensl=\smallersl
-  \let\tenbf=\smallerbf \let\tentt=\smallertt \let\smallcaps=\smallersc
-  \let\tensf=\smallersf \let\teni=\smalleri \let\tensy=\smallersy
-  \let\tenttsl=\smallerttsl
-  \def\curfontsize{smaller}%
-  \def\lsize{smaller}\def\lllsize{smaller}%
-  \resetmathfonts \setleading{9.5pt}}
-
-% Fonts for short table of contents.
-\setfont\shortcontrm\rmshape{12}{1000}{OT1}
-\setfont\shortcontbf\bfshape{10}{\magstep1}{OT1}  % no cmb12
-\setfont\shortcontsl\slshape{12}{1000}{OT1}
-\setfont\shortconttt\ttshape{12}{1000}{OT1TT}
-
-% Define these just so they can be easily changed for other fonts.
-\def\angleleft{$\langle$}
-\def\angleright{$\rangle$}
-
-% Set the fonts to use with the @small... environments.
-\let\smallexamplefonts = \smallfonts
-
-% About \smallexamplefonts.  If we use \smallfonts (9pt), @smallexample
-% can fit this many characters:
-%   8.5x11=86   smallbook=72  a4=90  a5=69
-% If we use \scriptfonts (8pt), then we can fit this many characters:
-%   8.5x11=90+  smallbook=80  a4=90+  a5=77
-% For me, subjectively, the few extra characters that fit aren't worth
-% the additional smallness of 8pt.  So I'm making the default 9pt.
-%
-% By the way, for comparison, here's what fits with @example (10pt):
-%   8.5x11=71  smallbook=60  a4=75  a5=58
-% --karl, 24jan03.
-
-% Set up the default fonts, so we can use them for creating boxes.
-%
-\definetextfontsizexi
-
-
-\message{markup,}
-
-% Check if we are currently using a typewriter font.  Since all the
-% Computer Modern typewriter fonts have zero interword stretch (and
-% shrink), and it is reasonable to expect all typewriter fonts to have
-% this property, we can check that font parameter.
-%
-\def\ifmonospace{\ifdim\fontdimen3\font=0pt }
-
-% Markup style infrastructure.  \defmarkupstylesetup\INITMACRO will
-% define and register \INITMACRO to be called on markup style changes.
-% \INITMACRO can check \currentmarkupstyle for the innermost
-% style and the set of \ifmarkupSTYLE switches for all styles
-% currently in effect.
-\newif\ifmarkupvar
-\newif\ifmarkupsamp
-\newif\ifmarkupkey
-%\newif\ifmarkupfile % @file == @samp.
-%\newif\ifmarkupoption % @option == @samp.
-\newif\ifmarkupcode
-\newif\ifmarkupkbd
-%\newif\ifmarkupenv % @env == @code.
-%\newif\ifmarkupcommand % @command == @code.
-\newif\ifmarkuptex % @tex (and part of @math, for now).
-\newif\ifmarkupexample
-\newif\ifmarkupverb
-\newif\ifmarkupverbatim
-
-\let\currentmarkupstyle\empty
-
-\def\setupmarkupstyle#1{%
-  \csname markup#1true\endcsname
-  \def\currentmarkupstyle{#1}%
-  \markupstylesetup
-}
-
-\let\markupstylesetup\empty
-
-\def\defmarkupstylesetup#1{%
-  \expandafter\def\expandafter\markupstylesetup
-    \expandafter{\markupstylesetup #1}%
-  \def#1%
-}
-
-% Markup style setup for left and right quotes.
-\defmarkupstylesetup\markupsetuplq{%
-  \expandafter\let\expandafter \temp
-    \csname markupsetuplq\currentmarkupstyle\endcsname
-  \ifx\temp\relax \markupsetuplqdefault \else \temp \fi
-}
-
-\defmarkupstylesetup\markupsetuprq{%
-  \expandafter\let\expandafter \temp
-    \csname markupsetuprq\currentmarkupstyle\endcsname
-  \ifx\temp\relax \markupsetuprqdefault \else \temp \fi
-}
-
-{
-\catcode`\'=\active
-\catcode`\`=\active
-
-\gdef\markupsetuplqdefault{\let`\lq}
-\gdef\markupsetuprqdefault{\let'\rq}
-
-\gdef\markupsetcodequoteleft{\let`\codequoteleft}
-\gdef\markupsetcodequoteright{\let'\codequoteright}
-}
-
-\let\markupsetuplqcode \markupsetcodequoteleft
-\let\markupsetuprqcode \markupsetcodequoteright
-%
-\let\markupsetuplqexample \markupsetcodequoteleft
-\let\markupsetuprqexample \markupsetcodequoteright
-%
-\let\markupsetuplqkbd     \markupsetcodequoteleft
-\let\markupsetuprqkbd     \markupsetcodequoteright
-%
-\let\markupsetuplqsamp \markupsetcodequoteleft
-\let\markupsetuprqsamp \markupsetcodequoteright
-%
-\let\markupsetuplqverb \markupsetcodequoteleft
-\let\markupsetuprqverb \markupsetcodequoteright
-%
-\let\markupsetuplqverbatim \markupsetcodequoteleft
-\let\markupsetuprqverbatim \markupsetcodequoteright
-
-% Allow an option to not use regular directed right quote/apostrophe
-% (char 0x27), but instead the undirected quote from cmtt (char 0x0d).
-% The undirected quote is ugly, so don't make it the default, but it
-% works for pasting with more pdf viewers (at least evince), the
-% lilypond developers report.  xpdf does work with the regular 0x27.
-%
-\def\codequoteright{%
-  \expandafter\ifx\csname SETtxicodequoteundirected\endcsname\relax
-    \expandafter\ifx\csname SETcodequoteundirected\endcsname\relax
-      '%
-    \else \char'15 \fi
-  \else \char'15 \fi
-}
-%
-% and a similar option for the left quote char vs. a grave accent.
-% Modern fonts display ASCII 0x60 as a grave accent, so some people like
-% the code environments to do likewise.
-%
-\def\codequoteleft{%
-  \expandafter\ifx\csname SETtxicodequotebacktick\endcsname\relax
-    \expandafter\ifx\csname SETcodequotebacktick\endcsname\relax
-      % [Knuth] pp. 380,381,391
-      % \relax disables Spanish ligatures ?` and !` of \tt font.
-      \relax`%
-    \else \char'22 \fi
-  \else \char'22 \fi
-}
-
-% Commands to set the quote options.
-% 
-\parseargdef\codequoteundirected{%
-  \def\temp{#1}%
-  \ifx\temp\onword
-    \expandafter\let\csname SETtxicodequoteundirected\endcsname
-      = t%
-  \else\ifx\temp\offword
-    \expandafter\let\csname SETtxicodequoteundirected\endcsname
-      = \relax
-  \else
-    \errhelp = \EMsimple
-    \errmessage{Unknown @codequoteundirected value `\temp', must be on|off}%
-  \fi\fi
-}
-%
-\parseargdef\codequotebacktick{%
-  \def\temp{#1}%
-  \ifx\temp\onword
-    \expandafter\let\csname SETtxicodequotebacktick\endcsname
-      = t%
-  \else\ifx\temp\offword
-    \expandafter\let\csname SETtxicodequotebacktick\endcsname
-      = \relax
-  \else
-    \errhelp = \EMsimple
-    \errmessage{Unknown @codequotebacktick value `\temp', must be on|off}%
-  \fi\fi
-}
-
-% [Knuth] pp. 380,381,391, disable Spanish ligatures ?` and !` of \tt font.
-\def\noligaturesquoteleft{\relax\lq}
-
-% Count depth in font-changes, for error checks
-\newcount\fontdepth \fontdepth=0
-
-% Font commands.
-
-% #1 is the font command (\sl or \it), #2 is the text to slant.
-% If we are in a monospaced environment, however, 1) always use \ttsl,
-% and 2) do not add an italic correction.
-\def\dosmartslant#1#2{%
-  \ifusingtt 
-    {{\ttsl #2}\let\next=\relax}%
-    {\def\next{{#1#2}\futurelet\next\smartitaliccorrection}}%
-  \next
-}
-\def\smartslanted{\dosmartslant\sl}
-\def\smartitalic{\dosmartslant\it}
-
-% Output an italic correction unless \next (presumed to be the following
-% character) is such as not to need one.
-\def\smartitaliccorrection{%
-  \ifx\next,%
-  \else\ifx\next-%
-  \else\ifx\next.%
-  \else\ifx\next\.%
-  \else\ifx\next\comma%
-  \else\ptexslash
-  \fi\fi\fi\fi\fi
-  \aftersmartic
-}
-
-% Unconditional use \ttsl, and no ic.  @var is set to this for defuns.
-\def\ttslanted#1{{\ttsl #1}}
-
-% @cite is like \smartslanted except unconditionally use \sl.  We never want
-% ttsl for book titles, do we?
-\def\cite#1{{\sl #1}\futurelet\next\smartitaliccorrection}
-
-\def\aftersmartic{}
-\def\var#1{%
-  \let\saveaftersmartic = \aftersmartic
-  \def\aftersmartic{\null\let\aftersmartic=\saveaftersmartic}%
-  \smartslanted{#1}%
-}
-
-\let\i=\smartitalic
-\let\slanted=\smartslanted
-\let\dfn=\smartslanted
-\let\emph=\smartitalic
-
-% Explicit font changes: @r, @sc, undocumented @ii.
-\def\r#1{{\rm #1}}              % roman font
-\def\sc#1{{\smallcaps#1}}       % smallcaps font
-\def\ii#1{{\it #1}}             % italic font
-
-% @b, explicit bold.  Also @strong.
-\def\b#1{{\bf #1}}
-\let\strong=\b
-
-% @sansserif, explicit sans.
-\def\sansserif#1{{\sf #1}}
-
-% We can't just use \exhyphenpenalty, because that only has effect at
-% the end of a paragraph.  Restore normal hyphenation at the end of the
-% group within which \nohyphenation is presumably called.
-%
-\def\nohyphenation{\hyphenchar\font = -1  \aftergroup\restorehyphenation}
-\def\restorehyphenation{\hyphenchar\font = `- }
-
-% Set sfcode to normal for the chars that usually have another value.
-% Can't use plain's \frenchspacing because it uses the `\x notation, and
-% sometimes \x has an active definition that messes things up.
-%
-\catcode`@=11
-  \def\plainfrenchspacing{%
-    \sfcode\dotChar  =\@m \sfcode\questChar=\@m \sfcode\exclamChar=\@m
-    \sfcode\colonChar=\@m \sfcode\semiChar =\@m \sfcode\commaChar =\@m
-    \def\endofsentencespacefactor{1000}% for @. and friends
-  }
-  \def\plainnonfrenchspacing{%
-    \sfcode`\.3000\sfcode`\?3000\sfcode`\!3000
-    \sfcode`\:2000\sfcode`\;1500\sfcode`\,1250
-    \def\endofsentencespacefactor{3000}% for @. and friends
-  }
-\catcode`@=\other
-\def\endofsentencespacefactor{3000}% default
-
-% @t, explicit typewriter.
-\def\t#1{%
-  {\tt \rawbackslash \plainfrenchspacing #1}%
-  \null
-}
-
-% @samp.
-\def\samp#1{{\setupmarkupstyle{samp}\lq\tclose{#1}\rq\null}}
-
-% @indicateurl is \samp, that is, with quotes.
-\let\indicateurl=\samp
-
-% @code (and similar) prints in typewriter, but with spaces the same
-% size as normal in the surrounding text, without hyphenation, etc.
-% This is a subroutine for that.
-\def\tclose#1{%
-  {%
-    % Change normal interword space to be same as for the current font.
-    \spaceskip = \fontdimen2\font
-    %
-    % Switch to typewriter.
-    \tt
-    %
-    % But `\ ' produces the large typewriter interword space.
-    \def\ {{\spaceskip = 0pt{} }}%
-    %
-    % Turn off hyphenation.
-    \nohyphenation
-    %
-    \rawbackslash
-    \plainfrenchspacing
-    #1%
-  }%
-  \null % reset spacefactor to 1000
-}
-
-% We *must* turn on hyphenation at `-' and `_' in @code.
-% (But see \codedashfinish below.)
-% Otherwise, it is too hard to avoid overfull hboxes
-% in the Emacs manual, the Library manual, etc.
-%
-% Unfortunately, TeX uses one parameter (\hyphenchar) to control
-% both hyphenation at - and hyphenation within words.
-% We must therefore turn them both off (\tclose does that)
-% and arrange explicitly to hyphenate at a dash. -- rms.
-{
-  \catcode`\-=\active \catcode`\_=\active
-  \catcode`\'=\active \catcode`\`=\active
-  \global\let'=\rq \global\let`=\lq  % default definitions
-  %
-  \global\def\code{\begingroup
-    \setupmarkupstyle{code}%
-    % The following should really be moved into \setupmarkupstyle handlers.
-    \catcode\dashChar=\active  \catcode\underChar=\active
-    \ifallowcodebreaks
-     \let-\codedash
-     \let_\codeunder
-    \else
-     \let-\normaldash
-     \let_\realunder
-    \fi
-    % Given -foo (with a single dash), we do not want to allow a break
-    % after the hyphen.
-    \global\let\codedashprev=\codedash
-    %
-    \codex
-  }
-  %
-  \gdef\codedash{\futurelet\next\codedashfinish}
-  \gdef\codedashfinish{%
-    \normaldash % always output the dash character itself.
-    % 
-    % Now, output a discretionary to allow a line break, unless
-    % (a) the next character is a -, or
-    % (b) the preceding character is a -.
-    % E.g., given --posix, we do not want to allow a break after either -.
-    % Given --foo-bar, we do want to allow a break between the - and the b.
-    \ifx\next\codedash \else
-      \ifx\codedashprev\codedash 
-      \else \discretionary{}{}{}\fi
-    \fi
-    % we need the space after the = for the case when \next itself is a
-    % space token; it would get swallowed otherwise.  As in @code{- a}.
-    \global\let\codedashprev= \next
-  }
-}
-\def\normaldash{-}
-%
-\def\codex #1{\tclose{#1}\endgroup}
-
-\def\codeunder{%
-  % this is all so @math{@code{var_name}+1} can work.  In math mode, _
-  % is "active" (mathcode"8000) and \normalunderscore (or \char95, etc.)
-  % will therefore expand the active definition of _, which is us
-  % (inside @code that is), therefore an endless loop.
-  \ifusingtt{\ifmmode
-               \mathchar"075F % class 0=ordinary, family 7=ttfam, pos 0x5F=_.
-             \else\normalunderscore \fi
-             \discretionary{}{}{}}%
-            {\_}%
-}
-
-% An additional complication: the above will allow breaks after, e.g.,
-% each of the four underscores in __typeof__.  This is bad.
-% @allowcodebreaks provides a document-level way to turn breaking at -
-% and _ on and off.
-%
-\newif\ifallowcodebreaks  \allowcodebreakstrue
-
-\def\keywordtrue{true}
-\def\keywordfalse{false}
-
-\parseargdef\allowcodebreaks{%
-  \def\txiarg{#1}%
-  \ifx\txiarg\keywordtrue
-    \allowcodebreakstrue
-  \else\ifx\txiarg\keywordfalse
-    \allowcodebreaksfalse
-  \else
-    \errhelp = \EMsimple
-    \errmessage{Unknown @allowcodebreaks option `\txiarg', must be true|false}%
-  \fi\fi
-}
-
-% For @command, @env, @file, @option quotes seem unnecessary,
-% so use \code rather than \samp.
-\let\command=\code
-\let\env=\code
-\let\file=\code
-\let\option=\code
-
-% @uref (abbreviation for `urlref') aka @url takes an optional
-% (comma-separated) second argument specifying the text to display and
-% an optional third arg as text to display instead of (rather than in
-% addition to) the url itself.  First (mandatory) arg is the url.
-
-% TeX-only option to allow changing PDF output to show only the second
-% arg (if given), and not the url (which is then just the link target).
-\newif\ifurefurlonlylink
-
-% The main macro is \urefbreak, which allows breaking at expected
-% places within the url.  (There used to be another version, which
-% didn't support automatic breaking.)
-\def\urefbreak{\begingroup \urefcatcodes \dourefbreak}
-\let\uref=\urefbreak
-%
-\def\dourefbreak#1{\urefbreakfinish #1,,,\finish}
-\def\urefbreakfinish#1,#2,#3,#4\finish{% doesn't work in @example
-  \unsepspaces
-  \pdfurl{#1}%
-  \setbox0 = \hbox{\ignorespaces #3}%
-  \ifdim\wd0 > 0pt
-    \unhbox0 % third arg given, show only that
-  \else
-    \setbox0 = \hbox{\ignorespaces #2}% look for second arg
-    \ifdim\wd0 > 0pt
-      \ifpdf
-        \ifurefurlonlylink
-          % PDF plus option to not display url, show just arg
-          \unhbox0             
-        \else
-          % PDF, normally display both arg and url for consistency,
-          % visibility, if the pdf is eventually used to print, etc.
-          \unhbox0\ (\urefcode{#1})%
-        \fi
-      \else
-        \unhbox0\ (\urefcode{#1})% DVI, always show arg and url
-      \fi
-    \else
-      \urefcode{#1}% only url given, so show it
-    \fi
-  \fi
-  \endlink
-\endgroup}
-
-% Allow line breaks around only a few characters (only).
-\def\urefcatcodes{%
-  \catcode\ampChar=\active   \catcode\dotChar=\active
-  \catcode\hashChar=\active  \catcode\questChar=\active
-  \catcode\slashChar=\active
-}
-{
-  \urefcatcodes
-  %
-  \global\def\urefcode{\begingroup
-    \setupmarkupstyle{code}%
-    \urefcatcodes
-    \let&\urefcodeamp
-    \let.\urefcodedot
-    \let#\urefcodehash
-    \let?\urefcodequest
-    \let/\urefcodeslash
-    \codex
-  }
-  %
-  % By default, they are just regular characters.
-  \global\def&{\normalamp}
-  \global\def.{\normaldot}
-  \global\def#{\normalhash}
-  \global\def?{\normalquest}
-  \global\def/{\normalslash}
-}
-
-% we put a little stretch before and after the breakable chars, to help
-% line breaking of long url's.  The unequal skips make look better in
-% cmtt at least, especially for dots.
-\def\urefprestretchamount{.13em}
-\def\urefpoststretchamount{.1em}
-\def\urefprestretch{\urefprebreak \hskip0pt plus\urefprestretchamount\relax}
-\def\urefpoststretch{\urefpostbreak \hskip0pt plus\urefprestretchamount\relax}
-%
-\def\urefcodeamp{\urefprestretch \&\urefpoststretch}
-\def\urefcodedot{\urefprestretch .\urefpoststretch}
-\def\urefcodehash{\urefprestretch \#\urefpoststretch}
-\def\urefcodequest{\urefprestretch ?\urefpoststretch}
-\def\urefcodeslash{\futurelet\next\urefcodeslashfinish}
-{
-  \catcode`\/=\active
-  \global\def\urefcodeslashfinish{%
-    \urefprestretch \slashChar
-    % Allow line break only after the final / in a sequence of
-    % slashes, to avoid line break between the slashes in http://.
-    \ifx\next/\else \urefpoststretch \fi
-  }
-}
-
-% One more complication: by default we'll break after the special
-% characters, but some people like to break before the special chars, so
-% allow that.  Also allow no breaking at all, for manual control.
-% 
-\parseargdef\urefbreakstyle{%
-  \def\txiarg{#1}%
-  \ifx\txiarg\wordnone
-    \def\urefprebreak{\nobreak}\def\urefpostbreak{\nobreak}
-  \else\ifx\txiarg\wordbefore
-    \def\urefprebreak{\allowbreak}\def\urefpostbreak{\nobreak}
-  \else\ifx\txiarg\wordafter
-    \def\urefprebreak{\nobreak}\def\urefpostbreak{\allowbreak}
-  \else
-    \errhelp = \EMsimple
-    \errmessage{Unknown @urefbreakstyle setting `\txiarg'}%
-  \fi\fi\fi
-}
-\def\wordafter{after}
-\def\wordbefore{before}
-\def\wordnone{none}
-
-\urefbreakstyle after
-
-% @url synonym for @uref, since that's how everyone uses it.
-%
-\let\url=\uref
-
-% rms does not like angle brackets --karl, 17may97.
-% So now @email is just like @uref, unless we are pdf.
-%
-%\def\email#1{\angleleft{\tt #1}\angleright}
-\ifpdf
-  \def\email#1{\doemail#1,,\finish}
-  \def\doemail#1,#2,#3\finish{\begingroup
-    \unsepspaces
-    \pdfurl{mailto:#1}%
-    \setbox0 = \hbox{\ignorespaces #2}%
-    \ifdim\wd0>0pt\unhbox0\else\code{#1}\fi
-    \endlink
-  \endgroup}
-\else
-  \let\email=\uref
-\fi
-
-% @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always),
-%   `example' (@kbd uses ttsl only inside of @example and friends),
-%   or `code' (@kbd uses normal tty font always).
-\parseargdef\kbdinputstyle{%
-  \def\txiarg{#1}%
-  \ifx\txiarg\worddistinct
-    \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}%
-  \else\ifx\txiarg\wordexample
-    \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}%
-  \else\ifx\txiarg\wordcode
-    \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}%
-  \else
-    \errhelp = \EMsimple
-    \errmessage{Unknown @kbdinputstyle setting `\txiarg'}%
-  \fi\fi\fi
-}
-\def\worddistinct{distinct}
-\def\wordexample{example}
-\def\wordcode{code}
-
-% Default is `distinct'.
-\kbdinputstyle distinct
-
-% @kbd is like @code, except that if the argument is just one @key command,
-% then @kbd has no effect.
-\def\kbd#1{{\def\look{#1}\expandafter\kbdsub\look??\par}}
-
-\def\xkey{\key}
-\def\kbdsub#1#2#3\par{%
-  \def\one{#1}\def\three{#3}\def\threex{??}%
-  \ifx\one\xkey\ifx\threex\three \key{#2}%
-  \else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi
-  \else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi
-}
-
-% definition of @key that produces a lozenge.  Doesn't adjust to text size.
-%\setfont\keyrm\rmshape{8}{1000}{OT1}
-%\font\keysy=cmsy9
-%\def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{%
-%  \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{%
-%    \vbox{\hrule\kern-0.4pt
-%     \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}%
-%    \kern-0.4pt\hrule}%
-%  \kern-.06em\raise0.4pt\hbox{\angleright}}}}
-
-% definition of @key with no lozenge.  If the current font is already
-% monospace, don't change it; that way, we respect @kbdinputstyle.  But
-% if it isn't monospace, then use \tt.
-%
-\def\key#1{{\setupmarkupstyle{key}%
-  \nohyphenation
-  \ifmonospace\else\tt\fi
-  #1}\null}
-
-% @clicksequence{File @click{} Open ...}
-\def\clicksequence#1{\begingroup #1\endgroup}
-
-% @clickstyle @arrow   (by default)
-\parseargdef\clickstyle{\def\click{#1}}
-\def\click{\arrow}
-
-% Typeset a dimension, e.g., `in' or `pt'.  The only reason for the
-% argument is to make the input look right: @dmn{pt} instead of @dmn{}pt.
-%
-\def\dmn#1{\thinspace #1}
-
-% @l was never documented to mean ``switch to the Lisp font'',
-% and it is not used as such in any manual I can find.  We need it for
-% Polish suppressed-l.  --karl, 22sep96.
-%\def\l#1{{\li #1}\null}
-
-% @acronym for "FBI", "NATO", and the like.
-% We print this one point size smaller, since it's intended for
-% all-uppercase.
-%
-\def\acronym#1{\doacronym #1,,\finish}
-\def\doacronym#1,#2,#3\finish{%
-  {\selectfonts\lsize #1}%
-  \def\temp{#2}%
-  \ifx\temp\empty \else
-    \space ({\unsepspaces \ignorespaces \temp \unskip})%
-  \fi
-  \null % reset \spacefactor=1000
-}
-
-% @abbr for "Comput. J." and the like.
-% No font change, but don't do end-of-sentence spacing.
-%
-\def\abbr#1{\doabbr #1,,\finish}
-\def\doabbr#1,#2,#3\finish{%
-  {\plainfrenchspacing #1}%
-  \def\temp{#2}%
-  \ifx\temp\empty \else
-    \space ({\unsepspaces \ignorespaces \temp \unskip})%
-  \fi
-  \null % reset \spacefactor=1000
-}
-
-% @asis just yields its argument.  Used with @table, for example.
-%
-\def\asis#1{#1}
-
-% @math outputs its argument in math mode.
-%
-% One complication: _ usually means subscripts, but it could also mean
-% an actual _ character, as in @math{@var{some_variable} + 1}.  So make
-% _ active, and distinguish by seeing if the current family is \slfam,
-% which is what @var uses.
-{
-  \catcode`\_ = \active
-  \gdef\mathunderscore{%
-    \catcode`\_=\active
-    \def_{\ifnum\fam=\slfam \_\else\sb\fi}%
-  }
-}
-% Another complication: we want \\ (and @\) to output a math (or tt) \.
-% FYI, plain.tex uses \\ as a temporary control sequence (for no
-% particular reason), but this is not advertised and we don't care.
-%
-% The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\.
-\def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi}
-%
-\def\math{%
-  \tex
-  \mathunderscore
-  \let\\ = \mathbackslash
-  \mathactive
-  % make the texinfo accent commands work in math mode
-  \let\"=\ddot
-  \let\'=\acute
-  \let\==\bar
-  \let\^=\hat
-  \let\`=\grave
-  \let\u=\breve
-  \let\v=\check
-  \let\~=\tilde
-  \let\dotaccent=\dot
-  $\finishmath
-}
-\def\finishmath#1{#1$\endgroup}  % Close the group opened by \tex.
-
-% Some active characters (such as <) are spaced differently in math.
-% We have to reset their definitions in case the @math was an argument
-% to a command which sets the catcodes (such as @item or @section).
-%
-{
-  \catcode`^ = \active
-  \catcode`< = \active
-  \catcode`> = \active
-  \catcode`+ = \active
-  \catcode`' = \active
-  \gdef\mathactive{%
-    \let^ = \ptexhat
-    \let< = \ptexless
-    \let> = \ptexgtr
-    \let+ = \ptexplus
-    \let' = \ptexquoteright
-  }
-}
-
-% ctrl is no longer a Texinfo command, but leave this definition for fun.
-\def\ctrl #1{{\tt \rawbackslash \hat}#1}
-
-% @inlinefmt{FMTNAME,PROCESSED-TEXT} and @inlineraw{FMTNAME,RAW-TEXT}.
-% Ignore unless FMTNAME == tex; then it is like @iftex and @tex,
-% except specified as a normal braced arg, so no newlines to worry about.
-% 
-\def\outfmtnametex{tex}
-%
-\long\def\inlinefmt#1{\doinlinefmt #1,\finish}
-\long\def\doinlinefmt#1,#2,\finish{%
-  \def\inlinefmtname{#1}%
-  \ifx\inlinefmtname\outfmtnametex \ignorespaces #2\fi
-}
-% 
-% @inlinefmtifelse{FMTNAME,THEN-TEXT,ELSE-TEXT} expands THEN-TEXT if
-% FMTNAME is tex, else ELSE-TEXT.
-\long\def\inlinefmtifelse#1{\doinlinefmtifelse #1,,,\finish}
-\long\def\doinlinefmtifelse#1,#2,#3,#4,\finish{%
-  \def\inlinefmtname{#1}%
-  \ifx\inlinefmtname\outfmtnametex \ignorespaces #2\else \ignorespaces #3\fi
-}
-%
-% For raw, must switch into @tex before parsing the argument, to avoid
-% setting catcodes prematurely.  Doing it this way means that, for
-% example, @inlineraw{html, foo{bar} gets a parse error instead of being
-% ignored.  But this isn't important because if people want a literal
-% *right* brace they would have to use a command anyway, so they may as
-% well use a command to get a left brace too.  We could re-use the
-% delimiter character idea from \verb, but it seems like overkill.
-% 
-\long\def\inlineraw{\tex \doinlineraw}
-\long\def\doinlineraw#1{\doinlinerawtwo #1,\finish}
-\def\doinlinerawtwo#1,#2,\finish{%
-  \def\inlinerawname{#1}%
-  \ifx\inlinerawname\outfmtnametex \ignorespaces #2\fi
-  \endgroup % close group opened by \tex.
-}
-
-% @inlineifset{VAR, TEXT} expands TEXT if VAR is @set.
-%
-\long\def\inlineifset#1{\doinlineifset #1,\finish}
-\long\def\doinlineifset#1,#2,\finish{%
-  \def\inlinevarname{#1}%
-  \expandafter\ifx\csname SET\inlinevarname\endcsname\relax
-  \else\ignorespaces#2\fi
-}
-
-% @inlineifclear{VAR, TEXT} expands TEXT if VAR is not @set.
-%
-\long\def\inlineifclear#1{\doinlineifclear #1,\finish}
-\long\def\doinlineifclear#1,#2,\finish{%
-  \def\inlinevarname{#1}%
-  \expandafter\ifx\csname SET\inlinevarname\endcsname\relax \ignorespaces#2\fi
-}
-
-
-\message{glyphs,}
-% and logos.
-
-% @@ prints an @, as does @atchar{}.
-\def\@{\char64 }
-\let\atchar=\@
-
-% @{ @} @lbracechar{} @rbracechar{} all generate brace characters.
-% Unless we're in typewriter, use \ecfont because the CM text fonts do
-% not have braces, and we don't want to switch into math.
-\def\mylbrace{{\ifmonospace\else\ecfont\fi \char123}}
-\def\myrbrace{{\ifmonospace\else\ecfont\fi \char125}}
-\let\{=\mylbrace \let\lbracechar=\{
-\let\}=\myrbrace \let\rbracechar=\}
-\begingroup
-  % Definitions to produce \{ and \} commands for indices,
-  % and @{ and @} for the aux/toc files.
-  \catcode`\{ = \other \catcode`\} = \other
-  \catcode`\[ = 1 \catcode`\] = 2
-  \catcode`\! = 0 \catcode`\\ = \other
-  !gdef!lbracecmd[\{]%
-  !gdef!rbracecmd[\}]%
-  !gdef!lbraceatcmd[@{]%
-  !gdef!rbraceatcmd[@}]%
-!endgroup
-
-% @comma{} to avoid , parsing problems.
-\let\comma = ,
-
-% Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent
-% Others are defined by plain TeX: @` @' @" @^ @~ @= @u @v @H.
-\let\, = \ptexc
-\let\dotaccent = \ptexdot
-\def\ringaccent#1{{\accent23 #1}}
-\let\tieaccent = \ptext
-\let\ubaraccent = \ptexb
-\let\udotaccent = \d
-
-% Other special characters: @questiondown @exclamdown @ordf @ordm
-% Plain TeX defines: @AA @AE @O @OE @L (plus lowercase versions) @ss.
-\def\questiondown{?`}
-\def\exclamdown{!`}
-\def\ordf{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{a}}}
-\def\ordm{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{o}}}
-
-% Dotless i and dotless j, used for accents.
-\def\imacro{i}
-\def\jmacro{j}
-\def\dotless#1{%
-  \def\temp{#1}%
-  \ifx\temp\imacro \ifmmode\imath \else\ptexi \fi
-  \else\ifx\temp\jmacro \ifmmode\jmath \else\j \fi
-  \else \errmessage{@dotless can be used only with i or j}%
-  \fi\fi
-}
-
-% The \TeX{} logo, as in plain, but resetting the spacing so that a
-% period following counts as ending a sentence.  (Idea found in latex.)
-%
-\edef\TeX{\TeX \spacefactor=1000 }
-
-% @LaTeX{} logo.  Not quite the same results as the definition in
-% latex.ltx, since we use a different font for the raised A; it's most
-% convenient for us to use an explicitly smaller font, rather than using
-% the \scriptstyle font (since we don't reset \scriptstyle and
-% \scriptscriptstyle).
-%
-\def\LaTeX{%
-  L\kern-.36em
-  {\setbox0=\hbox{T}%
-   \vbox to \ht0{\hbox{%
-     \ifx\textnominalsize\xwordpt
-       % for 10pt running text, \lllsize (8pt) is too small for the A in LaTeX.
-       % Revert to plain's \scriptsize, which is 7pt.
-       \count255=\the\fam $\fam\count255 \scriptstyle A$%
-     \else
-       % For 11pt, we can use our lllsize.
-       \selectfonts\lllsize A%
-     \fi
-     }%
-     \vss
-  }}%
-  \kern-.15em
-  \TeX
-}
-
-% Some math mode symbols.
-\def\bullet{$\ptexbullet$}
-\def\geq{\ifmmode \ge\else $\ge$\fi}
-\def\leq{\ifmmode \le\else $\le$\fi}
-\def\minus{\ifmmode -\else $-$\fi}
-
-% @dots{} outputs an ellipsis using the current font.
-% We do .5em per period so that it has the same spacing in the cm
-% typewriter fonts as three actual period characters; on the other hand,
-% in other typewriter fonts three periods are wider than 1.5em.  So do
-% whichever is larger.
-%
-\def\dots{%
-  \leavevmode
-  \setbox0=\hbox{...}% get width of three periods
-  \ifdim\wd0 > 1.5em
-    \dimen0 = \wd0
-  \else
-    \dimen0 = 1.5em
-  \fi
-  \hbox to \dimen0{%
-    \hskip 0pt plus.25fil
-    .\hskip 0pt plus1fil
-    .\hskip 0pt plus1fil
-    .\hskip 0pt plus.5fil
-  }%
-}
-
-% @enddots{} is an end-of-sentence ellipsis.
-%
-\def\enddots{%
-  \dots
-  \spacefactor=\endofsentencespacefactor
-}
-
-% @point{}, @result{}, @expansion{}, @print{}, @equiv{}.
-%
-% Since these characters are used in examples, they should be an even number of
-% \tt widths. Each \tt character is 1en, so two makes it 1em.
-%
-\def\point{$\star$}
-\def\arrow{\leavevmode\raise.05ex\hbox to 1em{\hfil$\rightarrow$\hfil}}
-\def\result{\leavevmode\raise.05ex\hbox to 1em{\hfil$\Rightarrow$\hfil}}
-\def\expansion{\leavevmode\hbox to 1em{\hfil$\mapsto$\hfil}}
-\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}}
-\def\equiv{\leavevmode\hbox to 1em{\hfil$\ptexequiv$\hfil}}
-
-% The @error{} command.
-% Adapted from the TeXbook's \boxit.
-%
-\newbox\errorbox
-%
-{\tentt \global\dimen0 = 3em}% Width of the box.
-\dimen2 = .55pt % Thickness of rules
-% The text. (`r' is open on the right, `e' somewhat less so on the left.)
-\setbox0 = \hbox{\kern-.75pt \reducedsf \putworderror\kern-1.5pt}
-%
-\setbox\errorbox=\hbox to \dimen0{\hfil
-   \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right.
-   \advance\hsize by -2\dimen2 % Rules.
-   \vbox{%
-      \hrule height\dimen2
-      \hbox{\vrule width\dimen2 \kern3pt          % Space to left of text.
-         \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below.
-         \kern3pt\vrule width\dimen2}% Space to right.
-      \hrule height\dimen2}
-    \hfil}
-%
-\def\error{\leavevmode\lower.7ex\copy\errorbox}
-
-% @pounds{} is a sterling sign, which Knuth put in the CM italic font.
-%
-\def\pounds{{\it\$}}
-
-% @euro{} comes from a separate font, depending on the current style.
-% We use the free feym* fonts from the eurosym package by Henrik
-% Theiling, which support regular, slanted, bold and bold slanted (and
-% "outlined" (blackboard board, sort of) versions, which we don't need).
-% It is available from http://www.ctan.org/tex-archive/fonts/eurosym.
-%
-% Although only regular is the truly official Euro symbol, we ignore
-% that.  The Euro is designed to be slightly taller than the regular
-% font height.
-%
-% feymr - regular
-% feymo - slanted
-% feybr - bold
-% feybo - bold slanted
-%
-% There is no good (free) typewriter version, to my knowledge.
-% A feymr10 euro is ~7.3pt wide, while a normal cmtt10 char is ~5.25pt wide.
-% Hmm.
-%
-% Also doesn't work in math.  Do we need to do math with euro symbols?
-% Hope not.
-%
-%
-\def\euro{{\eurofont e}}
-\def\eurofont{%
-  % We set the font at each command, rather than predefining it in
-  % \textfonts and the other font-switching commands, so that
-  % installations which never need the symbol don't have to have the
-  % font installed.
-  %
-  % There is only one designed size (nominal 10pt), so we always scale
-  % that to the current nominal size.
-  %
-  % By the way, simply using "at 1em" works for cmr10 and the like, but
-  % does not work for cmbx10 and other extended/shrunken fonts.
-  %
-  \def\eurosize{\csname\curfontsize nominalsize\endcsname}%
-  %
-  \ifx\curfontstyle\bfstylename
-    % bold:
-    \font\thiseurofont = \ifusingit{feybo10}{feybr10} at \eurosize
-  \else
-    % regular:
-    \font\thiseurofont = \ifusingit{feymo10}{feymr10} at \eurosize
-  \fi
-  \thiseurofont
-}
-
-% Glyphs from the EC fonts.  We don't use \let for the aliases, because
-% sometimes we redefine the original macro, and the alias should reflect
-% the redefinition.
-%
-% Use LaTeX names for the Icelandic letters.
-\def\DH{{\ecfont \char"D0}} % Eth
-\def\dh{{\ecfont \char"F0}} % eth
-\def\TH{{\ecfont \char"DE}} % Thorn
-\def\th{{\ecfont \char"FE}} % thorn
-%
-\def\guillemetleft{{\ecfont \char"13}}
-\def\guillemotleft{\guillemetleft}
-\def\guillemetright{{\ecfont \char"14}}
-\def\guillemotright{\guillemetright}
-\def\guilsinglleft{{\ecfont \char"0E}}
-\def\guilsinglright{{\ecfont \char"0F}}
-\def\quotedblbase{{\ecfont \char"12}}
-\def\quotesinglbase{{\ecfont \char"0D}}
-%
-% This positioning is not perfect (see the ogonek LaTeX package), but
-% we have the precomposed glyphs for the most common cases.  We put the
-% tests to use those glyphs in the single \ogonek macro so we have fewer
-% dummy definitions to worry about for index entries, etc.
-%
-% ogonek is also used with other letters in Lithuanian (IOU), but using
-% the precomposed glyphs for those is not so easy since they aren't in
-% the same EC font.
-\def\ogonek#1{{%
-  \def\temp{#1}%
-  \ifx\temp\macrocharA\Aogonek
-  \else\ifx\temp\macrochara\aogonek
-  \else\ifx\temp\macrocharE\Eogonek
-  \else\ifx\temp\macrochare\eogonek
-  \else
-    \ecfont \setbox0=\hbox{#1}%
-    \ifdim\ht0=1ex\accent"0C #1%
-    \else\ooalign{\unhbox0\crcr\hidewidth\char"0C \hidewidth}%
-    \fi
-  \fi\fi\fi\fi
-  }%
-}
-\def\Aogonek{{\ecfont \char"81}}\def\macrocharA{A}
-\def\aogonek{{\ecfont \char"A1}}\def\macrochara{a}
-\def\Eogonek{{\ecfont \char"86}}\def\macrocharE{E}
-\def\eogonek{{\ecfont \char"A6}}\def\macrochare{e}
-%
-% Use the ec* fonts (cm-super in outline format) for non-CM glyphs.
-\def\ecfont{%
-  % We can't distinguish serif/sans and italic/slanted, but this
-  % is used for crude hacks anyway (like adding French and German
-  % quotes to documents typeset with CM, where we lose kerning), so
-  % hopefully nobody will notice/care.
-  \edef\ecsize{\csname\curfontsize ecsize\endcsname}%
-  \edef\nominalsize{\csname\curfontsize nominalsize\endcsname}%
-  \ifmonospace
-    % typewriter:
-    \font\thisecfont = ectt\ecsize \space at \nominalsize
-  \else
-    \ifx\curfontstyle\bfstylename
-      % bold:
-      \font\thisecfont = ecb\ifusingit{i}{x}\ecsize \space at \nominalsize
-    \else
-      % regular:
-      \font\thisecfont = ec\ifusingit{ti}{rm}\ecsize \space at \nominalsize
-    \fi
-  \fi
-  \thisecfont
-}
-
-% @registeredsymbol - R in a circle.  The font for the R should really
-% be smaller yet, but lllsize is the best we can do for now.
-% Adapted from the plain.tex definition of \copyright.
-%
-\def\registeredsymbol{%
-  $^{{\ooalign{\hfil\raise.07ex\hbox{\selectfonts\lllsize R}%
-               \hfil\crcr\Orb}}%
-    }$%
-}
-
-% @textdegree - the normal degrees sign.
-%
-\def\textdegree{$^\circ$}
-
-% Laurent Siebenmann reports \Orb undefined with:
-%  Textures 1.7.7 (preloaded format=plain 93.10.14)  (68K)  16 APR 2004 02:38
-% so we'll define it if necessary.
-%
-\ifx\Orb\thisisundefined
-\def\Orb{\mathhexbox20D}
-\fi
-
-% Quotes.
-\chardef\quotedblleft="5C
-\chardef\quotedblright=`\"
-\chardef\quoteleft=`\`
-\chardef\quoteright=`\'
-
-
-\message{page headings,}
-
-\newskip\titlepagetopglue \titlepagetopglue = 1.5in
-\newskip\titlepagebottomglue \titlepagebottomglue = 2pc
-
-% First the title page.  Must do @settitle before @titlepage.
-\newif\ifseenauthor
-\newif\iffinishedtitlepage
-
-% Do an implicit @contents or @shortcontents after @end titlepage if the
-% user says @setcontentsaftertitlepage or @setshortcontentsaftertitlepage.
-%
-\newif\ifsetcontentsaftertitlepage
- \let\setcontentsaftertitlepage = \setcontentsaftertitlepagetrue
-\newif\ifsetshortcontentsaftertitlepage
- \let\setshortcontentsaftertitlepage = \setshortcontentsaftertitlepagetrue
-
-\parseargdef\shorttitlepage{%
-  \begingroup \hbox{}\vskip 1.5in \chaprm \centerline{#1}%
-  \endgroup\page\hbox{}\page}
-
-\envdef\titlepage{%
-  % Open one extra group, as we want to close it in the middle of \Etitlepage.
-  \begingroup
-    \parindent=0pt \textfonts
-    % Leave some space at the very top of the page.
-    \vglue\titlepagetopglue
-    % No rule at page bottom unless we print one at the top with @title.
-    \finishedtitlepagetrue
-    %
-    % Most title ``pages'' are actually two pages long, with space
-    % at the top of the second.  We don't want the ragged left on the second.
-    \let\oldpage = \page
-    \def\page{%
-      \iffinishedtitlepage\else
-        \finishtitlepage
-      \fi
-      \let\page = \oldpage
-      \page
-      \null
-    }%
-}
-
-\def\Etitlepage{%
-    \iffinishedtitlepage\else
-       \finishtitlepage
-    \fi
-    % It is important to do the page break before ending the group,
-    % because the headline and footline are only empty inside the group.
-    % If we use the new definition of \page, we always get a blank page
-    % after the title page, which we certainly don't want.
-    \oldpage
-  \endgroup
-  %
-  % Need this before the \...aftertitlepage checks so that if they are
-  % in effect the toc pages will come out with page numbers.
-  \HEADINGSon
-  %
-  % If they want short, they certainly want long too.
-  \ifsetshortcontentsaftertitlepage
-    \shortcontents
-    \contents
-    \global\let\shortcontents = \relax
-    \global\let\contents = \relax
-  \fi
-  %
-  \ifsetcontentsaftertitlepage
-    \contents
-    \global\let\contents = \relax
-    \global\let\shortcontents = \relax
-  \fi
-}
-
-\def\finishtitlepage{%
-  \vskip4pt \hrule height 2pt width \hsize
-  \vskip\titlepagebottomglue
-  \finishedtitlepagetrue
-}
-
-% Settings used for typesetting titles: no hyphenation, no indentation,
-% don't worry much about spacing, ragged right.  This should be used
-% inside a \vbox, and fonts need to be set appropriately first.  Because
-% it is always used for titles, nothing else, we call \rmisbold.  \par
-% should be specified before the end of the \vbox, since a vbox is a group.
-% 
-\def\raggedtitlesettings{%
-  \rmisbold
-  \hyphenpenalty=10000
-  \parindent=0pt
-  \tolerance=5000
-  \ptexraggedright
-}
-
-% Macros to be used within @titlepage:
-
-\let\subtitlerm=\tenrm
-\def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines}
-
-\parseargdef\title{%
-  \checkenv\titlepage
-  \vbox{\titlefonts \raggedtitlesettings #1\par}%
-  % print a rule at the page bottom also.
-  \finishedtitlepagefalse
-  \vskip4pt \hrule height 4pt width \hsize \vskip4pt
-}
-
-\parseargdef\subtitle{%
-  \checkenv\titlepage
-  {\subtitlefont \rightline{#1}}%
-}
-
-% @author should come last, but may come many times.
-% It can also be used inside @quotation.
-%
-\parseargdef\author{%
-  \def\temp{\quotation}%
-  \ifx\thisenv\temp
-    \def\quotationauthor{#1}% printed in \Equotation.
-  \else
-    \checkenv\titlepage
-    \ifseenauthor\else \vskip 0pt plus 1filll \seenauthortrue \fi
-    {\secfonts\rmisbold \leftline{#1}}%
-  \fi
-}
-
-
-% Set up page headings and footings.
-
-\let\thispage=\folio
-
-\newtoks\evenheadline    % headline on even pages
-\newtoks\oddheadline     % headline on odd pages
-\newtoks\evenfootline    % footline on even pages
-\newtoks\oddfootline     % footline on odd pages
-
-% Now make TeX use those variables
-\headline={{\textfonts\rm \ifodd\pageno \the\oddheadline
-                            \else \the\evenheadline \fi}}
-\footline={{\textfonts\rm \ifodd\pageno \the\oddfootline
-                            \else \the\evenfootline \fi}\HEADINGShook}
-\let\HEADINGShook=\relax
-
-% Commands to set those variables.
-% For example, this is what  @headings on  does
-% @evenheading @thistitle|@thispage|@thischapter
-% @oddheading @thischapter|@thispage|@thistitle
-% @evenfooting @thisfile||
-% @oddfooting ||@thisfile
-
-
-\def\evenheading{\parsearg\evenheadingxxx}
-\def\evenheadingxxx #1{\evenheadingyyy #1\|\|\|\|\finish}
-\def\evenheadingyyy #1\|#2\|#3\|#4\finish{%
-\global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
-
-\def\oddheading{\parsearg\oddheadingxxx}
-\def\oddheadingxxx #1{\oddheadingyyy #1\|\|\|\|\finish}
-\def\oddheadingyyy #1\|#2\|#3\|#4\finish{%
-\global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
-
-\parseargdef\everyheading{\oddheadingxxx{#1}\evenheadingxxx{#1}}%
-
-\def\evenfooting{\parsearg\evenfootingxxx}
-\def\evenfootingxxx #1{\evenfootingyyy #1\|\|\|\|\finish}
-\def\evenfootingyyy #1\|#2\|#3\|#4\finish{%
-\global\evenfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
-
-\def\oddfooting{\parsearg\oddfootingxxx}
-\def\oddfootingxxx #1{\oddfootingyyy #1\|\|\|\|\finish}
-\def\oddfootingyyy #1\|#2\|#3\|#4\finish{%
-  \global\oddfootline = {\rlap{\centerline{#2}}\line{#1\hfil#3}}%
-  %
-  % Leave some space for the footline.  Hopefully ok to assume
-  % @evenfooting will not be used by itself.
-  \global\advance\pageheight by -12pt
-  \global\advance\vsize by -12pt
-}
-
-\parseargdef\everyfooting{\oddfootingxxx{#1}\evenfootingxxx{#1}}
-
-% @evenheadingmarks top     \thischapter <- chapter at the top of a page
-% @evenheadingmarks bottom  \thischapter <- chapter at the bottom of a page
-%
-% The same set of arguments for:
-%
-% @oddheadingmarks
-% @evenfootingmarks
-% @oddfootingmarks
-% @everyheadingmarks
-% @everyfootingmarks
-
-\def\evenheadingmarks{\headingmarks{even}{heading}}
-\def\oddheadingmarks{\headingmarks{odd}{heading}}
-\def\evenfootingmarks{\headingmarks{even}{footing}}
-\def\oddfootingmarks{\headingmarks{odd}{footing}}
-\def\everyheadingmarks#1 {\headingmarks{even}{heading}{#1}
-                          \headingmarks{odd}{heading}{#1} }
-\def\everyfootingmarks#1 {\headingmarks{even}{footing}{#1}
-                          \headingmarks{odd}{footing}{#1} }
-% #1 = even/odd, #2 = heading/footing, #3 = top/bottom.
-\def\headingmarks#1#2#3 {%
-  \expandafter\let\expandafter\temp \csname get#3headingmarks\endcsname
-  \global\expandafter\let\csname get#1#2marks\endcsname \temp
-}
-
-\everyheadingmarks bottom
-\everyfootingmarks bottom
-
-% @headings double      turns headings on for double-sided printing.
-% @headings single      turns headings on for single-sided printing.
-% @headings off         turns them off.
-% @headings on          same as @headings double, retained for compatibility.
-% @headings after       turns on double-sided headings after this page.
-% @headings doubleafter turns on double-sided headings after this page.
-% @headings singleafter turns on single-sided headings after this page.
-% By default, they are off at the start of a document,
-% and turned `on' after @end titlepage.
-
-\def\headings #1 {\csname HEADINGS#1\endcsname}
-
-\def\headingsoff{% non-global headings elimination
-  \evenheadline={\hfil}\evenfootline={\hfil}%
-   \oddheadline={\hfil}\oddfootline={\hfil}%
-}
-
-\def\HEADINGSoff{{\globaldefs=1 \headingsoff}} % global setting
-\HEADINGSoff  % it's the default
-
-% When we turn headings on, set the page number to 1.
-% For double-sided printing, put current file name in lower left corner,
-% chapter name on inside top of right hand pages, document
-% title on inside top of left hand pages, and page numbers on outside top
-% edge of all pages.
-\def\HEADINGSdouble{%
-\global\pageno=1
-\global\evenfootline={\hfil}
-\global\oddfootline={\hfil}
-\global\evenheadline={\line{\folio\hfil\thistitle}}
-\global\oddheadline={\line{\thischapter\hfil\folio}}
-\global\let\contentsalignmacro = \chapoddpage
-}
-\let\contentsalignmacro = \chappager
-
-% For single-sided printing, chapter title goes across top left of page,
-% page number on top right.
-\def\HEADINGSsingle{%
-\global\pageno=1
-\global\evenfootline={\hfil}
-\global\oddfootline={\hfil}
-\global\evenheadline={\line{\thischapter\hfil\folio}}
-\global\oddheadline={\line{\thischapter\hfil\folio}}
-\global\let\contentsalignmacro = \chappager
-}
-\def\HEADINGSon{\HEADINGSdouble}
-
-\def\HEADINGSafter{\let\HEADINGShook=\HEADINGSdoublex}
-\let\HEADINGSdoubleafter=\HEADINGSafter
-\def\HEADINGSdoublex{%
-\global\evenfootline={\hfil}
-\global\oddfootline={\hfil}
-\global\evenheadline={\line{\folio\hfil\thistitle}}
-\global\oddheadline={\line{\thischapter\hfil\folio}}
-\global\let\contentsalignmacro = \chapoddpage
-}
-
-\def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsinglex}
-\def\HEADINGSsinglex{%
-\global\evenfootline={\hfil}
-\global\oddfootline={\hfil}
-\global\evenheadline={\line{\thischapter\hfil\folio}}
-\global\oddheadline={\line{\thischapter\hfil\folio}}
-\global\let\contentsalignmacro = \chappager
-}
-
-% Subroutines used in generating headings
-% This produces Day Month Year style of output.
-% Only define if not already defined, in case a txi-??.tex file has set
-% up a different format (e.g., txi-cs.tex does this).
-\ifx\today\thisisundefined
-\def\today{%
-  \number\day\space
-  \ifcase\month
-  \or\putwordMJan\or\putwordMFeb\or\putwordMMar\or\putwordMApr
-  \or\putwordMMay\or\putwordMJun\or\putwordMJul\or\putwordMAug
-  \or\putwordMSep\or\putwordMOct\or\putwordMNov\or\putwordMDec
-  \fi
-  \space\number\year}
-\fi
-
-% @settitle line...  specifies the title of the document, for headings.
-% It generates no output of its own.
-\def\thistitle{\putwordNoTitle}
-\def\settitle{\parsearg{\gdef\thistitle}}
-
-
-\message{tables,}
-% Tables -- @table, @ftable, @vtable, @item(x).
-
-% default indentation of table text
-\newdimen\tableindent \tableindent=.8in
-% default indentation of @itemize and @enumerate text
-\newdimen\itemindent  \itemindent=.3in
-% margin between end of table item and start of table text.
-\newdimen\itemmargin  \itemmargin=.1in
-
-% used internally for \itemindent minus \itemmargin
-\newdimen\itemmax
-
-% Note @table, @ftable, and @vtable define @item, @itemx, etc., with
-% these defs.
-% They also define \itemindex
-% to index the item name in whatever manner is desired (perhaps none).
-
-\newif\ifitemxneedsnegativevskip
-
-\def\itemxpar{\par\ifitemxneedsnegativevskip\nobreak\vskip-\parskip\nobreak\fi}
-
-\def\internalBitem{\smallbreak \parsearg\itemzzz}
-\def\internalBitemx{\itemxpar \parsearg\itemzzz}
-
-\def\itemzzz #1{\begingroup %
-  \advance\hsize by -\rightskip
-  \advance\hsize by -\tableindent
-  \setbox0=\hbox{\itemindicate{#1}}%
-  \itemindex{#1}%
-  \nobreak % This prevents a break before @itemx.
-  %
-  % If the item text does not fit in the space we have, put it on a line
-  % by itself, and do not allow a page break either before or after that
-  % line.  We do not start a paragraph here because then if the next
-  % command is, e.g., @kindex, the whatsit would get put into the
-  % horizontal list on a line by itself, resulting in extra blank space.
-  \ifdim \wd0>\itemmax
-    %
-    % Make this a paragraph so we get the \parskip glue and wrapping,
-    % but leave it ragged-right.
-    \begingroup
-      \advance\leftskip by-\tableindent
-      \advance\hsize by\tableindent
-      \advance\rightskip by0pt plus1fil\relax
-      \leavevmode\unhbox0\par
-    \endgroup
-    %
-    % We're going to be starting a paragraph, but we don't want the
-    % \parskip glue -- logically it's part of the @item we just started.
-    \nobreak \vskip-\parskip
-    %
-    % Stop a page break at the \parskip glue coming up.  However, if
-    % what follows is an environment such as @example, there will be no
-    % \parskip glue; then the negative vskip we just inserted would
-    % cause the example and the item to crash together.  So we use this
-    % bizarre value of 10001 as a signal to \aboveenvbreak to insert
-    % \parskip glue after all.  Section titles are handled this way also.
-    %
-    \penalty 10001
-    \endgroup
-    \itemxneedsnegativevskipfalse
-  \else
-    % The item text fits into the space.  Start a paragraph, so that the
-    % following text (if any) will end up on the same line.
-    \noindent
-    % Do this with kerns and \unhbox so that if there is a footnote in
-    % the item text, it can migrate to the main vertical list and
-    % eventually be printed.
-    \nobreak\kern-\tableindent
-    \dimen0 = \itemmax  \advance\dimen0 by \itemmargin \advance\dimen0 by -\wd0
-    \unhbox0
-    \nobreak\kern\dimen0
-    \endgroup
-    \itemxneedsnegativevskiptrue
-  \fi
-}
-
-\def\item{\errmessage{@item while not in a list environment}}
-\def\itemx{\errmessage{@itemx while not in a list environment}}
-
-% @table, @ftable, @vtable.
-\envdef\table{%
-  \let\itemindex\gobble
-  \tablecheck{table}%
-}
-\envdef\ftable{%
-  \def\itemindex ##1{\doind {fn}{\code{##1}}}%
-  \tablecheck{ftable}%
-}
-\envdef\vtable{%
-  \def\itemindex ##1{\doind {vr}{\code{##1}}}%
-  \tablecheck{vtable}%
-}
-\def\tablecheck#1{%
-  \ifnum \the\catcode`\^^M=\active
-    \endgroup
-    \errmessage{This command won't work in this context; perhaps the problem is
-      that we are \inenvironment\thisenv}%
-    \def\next{\doignore{#1}}%
-  \else
-    \let\next\tablex
-  \fi
-  \next
-}
-\def\tablex#1{%
-  \def\itemindicate{#1}%
-  \parsearg\tabley
-}
-\def\tabley#1{%
-  {%
-    \makevalueexpandable
-    \edef\temp{\noexpand\tablez #1\space\space\space}%
-    \expandafter
-  }\temp \endtablez
-}
-\def\tablez #1 #2 #3 #4\endtablez{%
-  \aboveenvbreak
-  \ifnum 0#1>0 \advance \leftskip by #1\mil \fi
-  \ifnum 0#2>0 \tableindent=#2\mil \fi
-  \ifnum 0#3>0 \advance \rightskip by #3\mil \fi
-  \itemmax=\tableindent
-  \advance \itemmax by -\itemmargin
-  \advance \leftskip by \tableindent
-  \exdentamount=\tableindent
-  \parindent = 0pt
-  \parskip = \smallskipamount
-  \ifdim \parskip=0pt \parskip=2pt \fi
-  \let\item = \internalBitem
-  \let\itemx = \internalBitemx
-}
-\def\Etable{\endgraf\afterenvbreak}
-\let\Eftable\Etable
-\let\Evtable\Etable
-\let\Eitemize\Etable
-\let\Eenumerate\Etable
-
-% This is the counter used by @enumerate, which is really @itemize
-
-\newcount \itemno
-
-\envdef\itemize{\parsearg\doitemize}
-
-\def\doitemize#1{%
-  \aboveenvbreak
-  \itemmax=\itemindent
-  \advance\itemmax by -\itemmargin
-  \advance\leftskip by \itemindent
-  \exdentamount=\itemindent
-  \parindent=0pt
-  \parskip=\smallskipamount
-  \ifdim\parskip=0pt \parskip=2pt \fi
-  %
-  % Try typesetting the item mark so that if the document erroneously says
-  % something like @itemize @samp (intending @table), there's an error
-  % right away at the @itemize.  It's not the best error message in the
-  % world, but it's better than leaving it to the @item.  This means if
-  % the user wants an empty mark, they have to say @w{} not just @w.
-  \def\itemcontents{#1}%
-  \setbox0 = \hbox{\itemcontents}%
-  %
-  % @itemize with no arg is equivalent to @itemize @bullet.
-  \ifx\itemcontents\empty\def\itemcontents{\bullet}\fi
-  %
-  \let\item=\itemizeitem
-}
-
-% Definition of @item while inside @itemize and @enumerate.
-%
-\def\itemizeitem{%
-  \advance\itemno by 1  % for enumerations
-  {\let\par=\endgraf \smallbreak}% reasonable place to break
-  {%
-   % If the document has an @itemize directly after a section title, a
-   % \nobreak will be last on the list, and \sectionheading will have
-   % done a \vskip-\parskip.  In that case, we don't want to zero
-   % parskip, or the item text will crash with the heading.  On the
-   % other hand, when there is normal text preceding the item (as there
-   % usually is), we do want to zero parskip, or there would be too much
-   % space.  In that case, we won't have a \nobreak before.  At least
-   % that's the theory.
-   \ifnum\lastpenalty<10000 \parskip=0in \fi
-   \noindent
-   \hbox to 0pt{\hss \itemcontents \kern\itemmargin}%
-   %
-   \vadjust{\penalty 1200}}% not good to break after first line of item.
-  \flushcr
-}
-
-% \splitoff TOKENS\endmark defines \first to be the first token in
-% TOKENS, and \rest to be the remainder.
-%
-\def\splitoff#1#2\endmark{\def\first{#1}\def\rest{#2}}%
-
-% Allow an optional argument of an uppercase letter, lowercase letter,
-% or number, to specify the first label in the enumerated list.  No
-% argument is the same as `1'.
-%
-\envparseargdef\enumerate{\enumeratey #1  \endenumeratey}
-\def\enumeratey #1 #2\endenumeratey{%
-  % If we were given no argument, pretend we were given `1'.
-  \def\thearg{#1}%
-  \ifx\thearg\empty \def\thearg{1}\fi
-  %
-  % Detect if the argument is a single token.  If so, it might be a
-  % letter.  Otherwise, the only valid thing it can be is a number.
-  % (We will always have one token, because of the test we just made.
-  % This is a good thing, since \splitoff doesn't work given nothing at
-  % all -- the first parameter is undelimited.)
-  \expandafter\splitoff\thearg\endmark
-  \ifx\rest\empty
-    % Only one token in the argument.  It could still be anything.
-    % A ``lowercase letter'' is one whose \lccode is nonzero.
-    % An ``uppercase letter'' is one whose \lccode is both nonzero, and
-    %   not equal to itself.
-    % Otherwise, we assume it's a number.
-    %
-    % We need the \relax at the end of the \ifnum lines to stop TeX from
-    % continuing to look for a <number>.
-    %
-    \ifnum\lccode\expandafter`\thearg=0\relax
-      \numericenumerate % a number (we hope)
-    \else
-      % It's a letter.
-      \ifnum\lccode\expandafter`\thearg=\expandafter`\thearg\relax
-        \lowercaseenumerate % lowercase letter
-      \else
-        \uppercaseenumerate % uppercase letter
-      \fi
-    \fi
-  \else
-    % Multiple tokens in the argument.  We hope it's a number.
-    \numericenumerate
-  \fi
-}
-
-% An @enumerate whose labels are integers.  The starting integer is
-% given in \thearg.
-%
-\def\numericenumerate{%
-  \itemno = \thearg
-  \startenumeration{\the\itemno}%
-}
-
-% The starting (lowercase) letter is in \thearg.
-\def\lowercaseenumerate{%
-  \itemno = \expandafter`\thearg
-  \startenumeration{%
-    % Be sure we're not beyond the end of the alphabet.
-    \ifnum\itemno=0
-      \errmessage{No more lowercase letters in @enumerate; get a bigger
-                  alphabet}%
-    \fi
-    \char\lccode\itemno
-  }%
-}
-
-% The starting (uppercase) letter is in \thearg.
-\def\uppercaseenumerate{%
-  \itemno = \expandafter`\thearg
-  \startenumeration{%
-    % Be sure we're not beyond the end of the alphabet.
-    \ifnum\itemno=0
-      \errmessage{No more uppercase letters in @enumerate; get a bigger
-                  alphabet}
-    \fi
-    \char\uccode\itemno
-  }%
-}
-
-% Call \doitemize, adding a period to the first argument and supplying the
-% common last two arguments.  Also subtract one from the initial value in
-% \itemno, since @item increments \itemno.
-%
-\def\startenumeration#1{%
-  \advance\itemno by -1
-  \doitemize{#1.}\flushcr
-}
-
-% @alphaenumerate and @capsenumerate are abbreviations for giving an arg
-% to @enumerate.
-%
-\def\alphaenumerate{\enumerate{a}}
-\def\capsenumerate{\enumerate{A}}
-\def\Ealphaenumerate{\Eenumerate}
-\def\Ecapsenumerate{\Eenumerate}
-
-
-% @multitable macros
-% Amy Hendrickson, 8/18/94, 3/6/96
-%
-% @multitable ... @end multitable will make as many columns as desired.
-% Contents of each column will wrap at width given in preamble.  Width
-% can be specified either with sample text given in a template line,
-% or in percent of \hsize, the current width of text on page.
-
-% Table can continue over pages but will only break between lines.
-
-% To make preamble:
-%
-% Either define widths of columns in terms of percent of \hsize:
-%   @multitable @columnfractions .25 .3 .45
-%   @item ...
-%
-%   Numbers following @columnfractions are the percent of the total
-%   current hsize to be used for each column. You may use as many
-%   columns as desired.
-
-
-% Or use a template:
-%   @multitable {Column 1 template} {Column 2 template} {Column 3 template}
-%   @item ...
-%   using the widest term desired in each column.
-
-% Each new table line starts with @item, each subsequent new column
-% starts with @tab. Empty columns may be produced by supplying @tab's
-% with nothing between them for as many times as empty columns are needed,
-% ie, @tab@tab@tab will produce two empty columns.
-
-% @item, @tab do not need to be on their own lines, but it will not hurt
-% if they are.
-
-% Sample multitable:
-
-%   @multitable {Column 1 template} {Column 2 template} {Column 3 template}
-%   @item first col stuff @tab second col stuff @tab third col
-%   @item
-%   first col stuff
-%   @tab
-%   second col stuff
-%   @tab
-%   third col
-%   @item first col stuff @tab second col stuff
-%   @tab Many paragraphs of text may be used in any column.
-%
-%         They will wrap at the width determined by the template.
-%   @item@tab@tab This will be in third column.
-%   @end multitable
-
-% Default dimensions may be reset by user.
-% @multitableparskip is vertical space between paragraphs in table.
-% @multitableparindent is paragraph indent in table.
-% @multitablecolmargin is horizontal space to be left between columns.
-% @multitablelinespace is space to leave between table items, baseline
-%                                                            to baseline.
-%   0pt means it depends on current normal line spacing.
-%
-\newskip\multitableparskip
-\newskip\multitableparindent
-\newdimen\multitablecolspace
-\newskip\multitablelinespace
-\multitableparskip=0pt
-\multitableparindent=6pt
-\multitablecolspace=12pt
-\multitablelinespace=0pt
-
-% Macros used to set up halign preamble:
-%
-\let\endsetuptable\relax
-\def\xendsetuptable{\endsetuptable}
-\let\columnfractions\relax
-\def\xcolumnfractions{\columnfractions}
-\newif\ifsetpercent
-
-% #1 is the @columnfraction, usually a decimal number like .5, but might
-% be just 1.  We just use it, whatever it is.
-%
-\def\pickupwholefraction#1 {%
-  \global\advance\colcount by 1
-  \expandafter\xdef\csname col\the\colcount\endcsname{#1\hsize}%
-  \setuptable
-}
-
-\newcount\colcount
-\def\setuptable#1{%
-  \def\firstarg{#1}%
-  \ifx\firstarg\xendsetuptable
-    \let\go = \relax
-  \else
-    \ifx\firstarg\xcolumnfractions
-      \global\setpercenttrue
-    \else
-      \ifsetpercent
-         \let\go\pickupwholefraction
-      \else
-         \global\advance\colcount by 1
-         \setbox0=\hbox{#1\unskip\space}% Add a normal word space as a
-                   % separator; typically that is always in the input, anyway.
-         \expandafter\xdef\csname col\the\colcount\endcsname{\the\wd0}%
-      \fi
-    \fi
-    \ifx\go\pickupwholefraction
-      % Put the argument back for the \pickupwholefraction call, so
-      % we'll always have a period there to be parsed.
-      \def\go{\pickupwholefraction#1}%
-    \else
-      \let\go = \setuptable
-    \fi%
-  \fi
-  \go
-}
-
-% multitable-only commands.
-% 
-% @headitem starts a heading row, which we typeset in bold.  Assignments
-% have to be global since we are inside the implicit group of an
-% alignment entry.  \everycr below resets \everytab so we don't have to
-% undo it ourselves.
-\def\headitemfont{\b}% for people to use in the template row; not changeable
-\def\headitem{%
-  \checkenv\multitable
-  \crcr
-  \gdef\headitemcrhook{\nobreak}% attempt to avoid page break after headings
-  \global\everytab={\bf}% can't use \headitemfont since the parsing differs
-  \the\everytab % for the first item
-}%
-%
-% default for tables with no headings.
-\let\headitemcrhook=\relax
-%
-% A \tab used to include \hskip1sp.  But then the space in a template
-% line is not enough.  That is bad.  So let's go back to just `&' until
-% we again encounter the problem the 1sp was intended to solve.
-%                                      --karl, nathan@acm.org, 20apr99.
-\def\tab{\checkenv\multitable &\the\everytab}%
-
-% @multitable ... @end multitable definitions:
-%
-\newtoks\everytab  % insert after every tab.
-%
-\envdef\multitable{%
-  \vskip\parskip
-  \startsavinginserts
-  %
-  % @item within a multitable starts a normal row.
-  % We use \def instead of \let so that if one of the multitable entries
-  % contains an @itemize, we don't choke on the \item (seen as \crcr aka
-  % \endtemplate) expanding \doitemize.
-  \def\item{\crcr}%
-  %
-  \tolerance=9500
-  \hbadness=9500
-  \setmultitablespacing
-  \parskip=\multitableparskip
-  \parindent=\multitableparindent
-  \overfullrule=0pt
-  \global\colcount=0
-  %
-  \everycr = {%
-    \noalign{%
-      \global\everytab={}% Reset from possible headitem.
-      \global\colcount=0 % Reset the column counter.
-      %
-      % Check for saved footnotes, etc.:
-      \checkinserts
-      %
-      % Perhaps a \nobreak, then reset:
-      \headitemcrhook
-      \global\let\headitemcrhook=\relax
-    }%
-  }%
-  %
-  \parsearg\domultitable
-}
-\def\domultitable#1{%
-  % To parse everything between @multitable and @item:
-  \setuptable#1 \endsetuptable
-  %
-  % This preamble sets up a generic column definition, which will
-  % be used as many times as user calls for columns.
-  % \vtop will set a single line and will also let text wrap and
-  % continue for many paragraphs if desired.
-  \halign\bgroup &%
-    \global\advance\colcount by 1
-    \multistrut
-    \vtop{%
-      % Use the current \colcount to find the correct column width:
-      \hsize=\expandafter\csname col\the\colcount\endcsname
-      %
-      % In order to keep entries from bumping into each other
-      % we will add a \leftskip of \multitablecolspace to all columns after
-      % the first one.
-      %
-      % If a template has been used, we will add \multitablecolspace
-      % to the width of each template entry.
-      %
-      % If the user has set preamble in terms of percent of \hsize we will
-      % use that dimension as the width of the column, and the \leftskip
-      % will keep entries from bumping into each other.  Table will start at
-      % left margin and final column will justify at right margin.
-      %
-      % Make sure we don't inherit \rightskip from the outer environment.
-      \rightskip=0pt
-      \ifnum\colcount=1
-       % The first column will be indented with the surrounding text.
-       \advance\hsize by\leftskip
-      \else
-       \ifsetpercent \else
-         % If user has not set preamble in terms of percent of \hsize
-         % we will advance \hsize by \multitablecolspace.
-         \advance\hsize by \multitablecolspace
-       \fi
-       % In either case we will make \leftskip=\multitablecolspace:
-      \leftskip=\multitablecolspace
-      \fi
-      % Ignoring space at the beginning and end avoids an occasional spurious
-      % blank line, when TeX decides to break the line at the space before the
-      % box from the multistrut, so the strut ends up on a line by itself.
-      % For example:
-      % @multitable @columnfractions .11 .89
-      % @item @code{#}
-      % @tab Legal holiday which is valid in major parts of the whole country.
-      % Is automatically provided with highlighting sequences respectively
-      % marking characters.
-      \noindent\ignorespaces##\unskip\multistrut
-    }\cr
-}
-\def\Emultitable{%
-  \crcr
-  \egroup % end the \halign
-  \global\setpercentfalse
-}
-
-\def\setmultitablespacing{%
-  \def\multistrut{\strut}% just use the standard line spacing
-  %
-  % Compute \multitablelinespace (if not defined by user) for use in
-  % \multitableparskip calculation.  We used define \multistrut based on
-  % this, but (ironically) that caused the spacing to be off.
-  % See bug-texinfo report from Werner Lemberg, 31 Oct 2004 12:52:20 +0100.
-\ifdim\multitablelinespace=0pt
-\setbox0=\vbox{X}\global\multitablelinespace=\the\baselineskip
-\global\advance\multitablelinespace by-\ht0
-\fi
-% Test to see if parskip is larger than space between lines of
-% table. If not, do nothing.
-%        If so, set to same dimension as multitablelinespace.
-\ifdim\multitableparskip>\multitablelinespace
-\global\multitableparskip=\multitablelinespace
-\global\advance\multitableparskip-7pt % to keep parskip somewhat smaller
-                                      % than skip between lines in the table.
-\fi%
-\ifdim\multitableparskip=0pt
-\global\multitableparskip=\multitablelinespace
-\global\advance\multitableparskip-7pt % to keep parskip somewhat smaller
-                                      % than skip between lines in the table.
-\fi}
-
-
-\message{conditionals,}
-
-% @iftex, @ifnotdocbook, @ifnothtml, @ifnotinfo, @ifnotplaintext,
-% @ifnotxml always succeed.  They currently do nothing; we don't
-% attempt to check whether the conditionals are properly nested.  But we
-% have to remember that they are conditionals, so that @end doesn't
-% attempt to close an environment group.
-%
-\def\makecond#1{%
-  \expandafter\let\csname #1\endcsname = \relax
-  \expandafter\let\csname iscond.#1\endcsname = 1
-}
-\makecond{iftex}
-\makecond{ifnotdocbook}
-\makecond{ifnothtml}
-\makecond{ifnotinfo}
-\makecond{ifnotplaintext}
-\makecond{ifnotxml}
-
-% Ignore @ignore, @ifhtml, @ifinfo, and the like.
-%
-\def\direntry{\doignore{direntry}}
-\def\documentdescription{\doignore{documentdescription}}
-\def\docbook{\doignore{docbook}}
-\def\html{\doignore{html}}
-\def\ifdocbook{\doignore{ifdocbook}}
-\def\ifhtml{\doignore{ifhtml}}
-\def\ifinfo{\doignore{ifinfo}}
-\def\ifnottex{\doignore{ifnottex}}
-\def\ifplaintext{\doignore{ifplaintext}}
-\def\ifxml{\doignore{ifxml}}
-\def\ignore{\doignore{ignore}}
-\def\menu{\doignore{menu}}
-\def\xml{\doignore{xml}}
-
-% Ignore text until a line `@end #1', keeping track of nested conditionals.
-%
-% A count to remember the depth of nesting.
-\newcount\doignorecount
-
-\def\doignore#1{\begingroup
-  % Scan in ``verbatim'' mode:
-  \obeylines
-  \catcode`\@ = \other
-  \catcode`\{ = \other
-  \catcode`\} = \other
-  %
-  % Make sure that spaces turn into tokens that match what \doignoretext wants.
-  \spaceisspace
-  %
-  % Count number of #1's that we've seen.
-  \doignorecount = 0
-  %
-  % Swallow text until we reach the matching `@end #1'.
-  \dodoignore{#1}%
-}
-
-{ \catcode`_=11 % We want to use \_STOP_ which cannot appear in texinfo source.
-  \obeylines %
-  %
-  \gdef\dodoignore#1{%
-    % #1 contains the command name as a string, e.g., `ifinfo'.
-    %
-    % Define a command to find the next `@end #1'.
-    \long\def\doignoretext##1^^M@end #1{%
-      \doignoretextyyy##1^^M@#1\_STOP_}%
-    %
-    % And this command to find another #1 command, at the beginning of a
-    % line.  (Otherwise, we would consider a line `@c @ifset', for
-    % example, to count as an @ifset for nesting.)
-    \long\def\doignoretextyyy##1^^M@#1##2\_STOP_{\doignoreyyy{##2}\_STOP_}%
-    %
-    % And now expand that command.
-    \doignoretext ^^M%
-  }%
-}
-
-\def\doignoreyyy#1{%
-  \def\temp{#1}%
-  \ifx\temp\empty                      % Nothing found.
-    \let\next\doignoretextzzz
-  \else                                        % Found a nested condition, ...
-    \advance\doignorecount by 1
-    \let\next\doignoretextyyy          % ..., look for another.
-    % If we're here, #1 ends with ^^M\ifinfo (for example).
-  \fi
-  \next #1% the token \_STOP_ is present just after this macro.
-}
-
-% We have to swallow the remaining "\_STOP_".
-%
-\def\doignoretextzzz#1{%
-  \ifnum\doignorecount = 0     % We have just found the outermost @end.
-    \let\next\enddoignore
-  \else                                % Still inside a nested condition.
-    \advance\doignorecount by -1
-    \let\next\doignoretext      % Look for the next @end.
-  \fi
-  \next
-}
-
-% Finish off ignored text.
-{ \obeylines%
-  % Ignore anything after the last `@end #1'; this matters in verbatim
-  % environments, where otherwise the newline after an ignored conditional
-  % would result in a blank line in the output.
-  \gdef\enddoignore#1^^M{\endgroup\ignorespaces}%
-}
-
-
-% @set VAR sets the variable VAR to an empty value.
-% @set VAR REST-OF-LINE sets VAR to the value REST-OF-LINE.
-%
-% Since we want to separate VAR from REST-OF-LINE (which might be
-% empty), we can't just use \parsearg; we have to insert a space of our
-% own to delimit the rest of the line, and then take it out again if we
-% didn't need it.
-% We rely on the fact that \parsearg sets \catcode`\ =10.
-%
-\parseargdef\set{\setyyy#1 \endsetyyy}
-\def\setyyy#1 #2\endsetyyy{%
-  {%
-    \makevalueexpandable
-    \def\temp{#2}%
-    \edef\next{\gdef\makecsname{SET#1}}%
-    \ifx\temp\empty
-      \next{}%
-    \else
-      \setzzz#2\endsetzzz
-    \fi
-  }%
-}
-% Remove the trailing space \setxxx inserted.
-\def\setzzz#1 \endsetzzz{\next{#1}}
-
-% @clear VAR clears (i.e., unsets) the variable VAR.
-%
-\parseargdef\clear{%
-  {%
-    \makevalueexpandable
-    \global\expandafter\let\csname SET#1\endcsname=\relax
-  }%
-}
-
-% @value{foo} gets the text saved in variable foo.
-\def\value{\begingroup\makevalueexpandable\valuexxx}
-\def\valuexxx#1{\expandablevalue{#1}\endgroup}
-{
-  \catcode`\-=\active \catcode`\_=\active
-  %
-  \gdef\makevalueexpandable{%
-    \let\value = \expandablevalue
-    % We don't want these characters active, ...
-    \catcode`\-=\other \catcode`\_=\other
-    % ..., but we might end up with active ones in the argument if
-    % we're called from @code, as @code{@value{foo-bar_}}, though.
-    % So \let them to their normal equivalents.
-    \let-\normaldash \let_\normalunderscore
-  }
-}
-
-% We have this subroutine so that we can handle at least some @value's
-% properly in indexes (we call \makevalueexpandable in \indexdummies).
-% The command has to be fully expandable (if the variable is set), since
-% the result winds up in the index file.  This means that if the
-% variable's value contains other Texinfo commands, it's almost certain
-% it will fail (although perhaps we could fix that with sufficient work
-% to do a one-level expansion on the result, instead of complete).
-% 
-% Unfortunately, this has the consequence that when _ is in the *value*
-% of an @set, it does not print properly in the roman fonts (get the cmr
-% dot accent at position 126 instead).  No fix comes to mind, and it's
-% been this way since 2003 or earlier, so just ignore it.
-% 
-\def\expandablevalue#1{%
-  \expandafter\ifx\csname SET#1\endcsname\relax
-    {[No value for ``#1'']}%
-    \message{Variable `#1', used in @value, is not set.}%
-  \else
-    \csname SET#1\endcsname
-  \fi
-}
-
-% @ifset VAR ... @end ifset reads the `...' iff VAR has been defined
-% with @set.
-% 
-% To get the special treatment we need for `@end ifset,' we call
-% \makecond and then redefine.
-%
-\makecond{ifset}
-\def\ifset{\parsearg{\doifset{\let\next=\ifsetfail}}}
-\def\doifset#1#2{%
-  {%
-    \makevalueexpandable
-    \let\next=\empty
-    \expandafter\ifx\csname SET#2\endcsname\relax
-      #1% If not set, redefine \next.
-    \fi
-    \expandafter
-  }\next
-}
-\def\ifsetfail{\doignore{ifset}}
-
-% @ifclear VAR ... @end executes the `...' iff VAR has never been
-% defined with @set, or has been undefined with @clear.
-%
-% The `\else' inside the `\doifset' parameter is a trick to reuse the
-% above code: if the variable is not set, do nothing, if it is set,
-% then redefine \next to \ifclearfail.
-%
-\makecond{ifclear}
-\def\ifclear{\parsearg{\doifset{\else \let\next=\ifclearfail}}}
-\def\ifclearfail{\doignore{ifclear}}
-
-% @ifcommandisdefined CMD ... @end executes the `...' if CMD (written
-% without the @) is in fact defined.  We can only feasibly check at the
-% TeX level, so something like `mathcode' is going to considered
-% defined even though it is not a Texinfo command.
-% 
-\makecond{ifcommanddefined}
-\def\ifcommanddefined{\parsearg{\doifcmddefined{\let\next=\ifcmddefinedfail}}}
-%
-\def\doifcmddefined#1#2{{%
-    \makevalueexpandable
-    \let\next=\empty
-    \expandafter\ifx\csname #2\endcsname\relax
-      #1% If not defined, \let\next as above.
-    \fi
-    \expandafter
-  }\next
-}
-\def\ifcmddefinedfail{\doignore{ifcommanddefined}}
-
-% @ifcommandnotdefined CMD ... handled similar to @ifclear above.
-\makecond{ifcommandnotdefined}
-\def\ifcommandnotdefined{%
-  \parsearg{\doifcmddefined{\else \let\next=\ifcmdnotdefinedfail}}}
-\def\ifcmdnotdefinedfail{\doignore{ifcommandnotdefined}}
-
-% Set the `txicommandconditionals' variable, so documents have a way to
-% test if the @ifcommand...defined conditionals are available.
-\set txicommandconditionals
-
-% @dircategory CATEGORY  -- specify a category of the dir file
-% which this file should belong to.  Ignore this in TeX.
-\let\dircategory=\comment
-
-% @defininfoenclose.
-\let\definfoenclose=\comment
-
-
-\message{indexing,}
-% Index generation facilities
-
-% Define \newwrite to be identical to plain tex's \newwrite
-% except not \outer, so it can be used within macros and \if's.
-\edef\newwrite{\makecsname{ptexnewwrite}}
-
-% \newindex {foo} defines an index named foo.
-% It automatically defines \fooindex such that
-% \fooindex ...rest of line... puts an entry in the index foo.
-% It also defines \fooindfile to be the number of the output channel for
-% the file that accumulates this index.  The file's extension is foo.
-% The name of an index should be no more than 2 characters long
-% for the sake of vms.
-%
-\def\newindex#1{%
-  \iflinks
-    \expandafter\newwrite \csname#1indfile\endcsname
-    \openout \csname#1indfile\endcsname \jobname.#1 % Open the file
-  \fi
-  \expandafter\xdef\csname#1index\endcsname{%     % Define @#1index
-    \noexpand\doindex{#1}}
-}
-
-% @defindex foo  ==  \newindex{foo}
-%
-\def\defindex{\parsearg\newindex}
-
-% Define @defcodeindex, like @defindex except put all entries in @code.
-%
-\def\defcodeindex{\parsearg\newcodeindex}
-%
-\def\newcodeindex#1{%
-  \iflinks
-    \expandafter\newwrite \csname#1indfile\endcsname
-    \openout \csname#1indfile\endcsname \jobname.#1
-  \fi
-  \expandafter\xdef\csname#1index\endcsname{%
-    \noexpand\docodeindex{#1}}%
-}
-
-
-% @synindex foo bar    makes index foo feed into index bar.
-% Do this instead of @defindex foo if you don't want it as a separate index.
-%
-% @syncodeindex foo bar   similar, but put all entries made for index foo
-% inside @code.
-%
-\def\synindex#1 #2 {\dosynindex\doindex{#1}{#2}}
-\def\syncodeindex#1 #2 {\dosynindex\docodeindex{#1}{#2}}
-
-% #1 is \doindex or \docodeindex, #2 the index getting redefined (foo),
-% #3 the target index (bar).
-\def\dosynindex#1#2#3{%
-  % Only do \closeout if we haven't already done it, else we'll end up
-  % closing the target index.
-  \expandafter \ifx\csname donesynindex#2\endcsname \relax
-    % The \closeout helps reduce unnecessary open files; the limit on the
-    % Acorn RISC OS is a mere 16 files.
-    \expandafter\closeout\csname#2indfile\endcsname
-    \expandafter\let\csname donesynindex#2\endcsname = 1
-  \fi
-  % redefine \fooindfile:
-  \expandafter\let\expandafter\temp\expandafter=\csname#3indfile\endcsname
-  \expandafter\let\csname#2indfile\endcsname=\temp
-  % redefine \fooindex:
-  \expandafter\xdef\csname#2index\endcsname{\noexpand#1{#3}}%
-}
-
-% Define \doindex, the driver for all \fooindex macros.
-% Argument #1 is generated by the calling \fooindex macro,
-%  and it is "foo", the name of the index.
-
-% \doindex just uses \parsearg; it calls \doind for the actual work.
-% This is because \doind is more useful to call from other macros.
-
-% There is also \dosubind {index}{topic}{subtopic}
-% which makes an entry in a two-level index such as the operation index.
-
-\def\doindex#1{\edef\indexname{#1}\parsearg\singleindexer}
-\def\singleindexer #1{\doind{\indexname}{#1}}
-
-% like the previous two, but they put @code around the argument.
-\def\docodeindex#1{\edef\indexname{#1}\parsearg\singlecodeindexer}
-\def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}}
-
-% Take care of Texinfo commands that can appear in an index entry.
-% Since there are some commands we want to expand, and others we don't,
-% we have to laboriously prevent expansion for those that we don't.
-%
-\def\indexdummies{%
-  \escapechar = `\\     % use backslash in output files.
-  \def\@{@}% change to @@ when we switch to @ as escape char in index files.
-  \def\ {\realbackslash\space }%
-  %
-  % Need these unexpandable (because we define \tt as a dummy)
-  % definitions when @{ or @} appear in index entry text.  Also, more
-  % complicated, when \tex is in effect and \{ is a \delimiter again.
-  % We can't use \lbracecmd and \rbracecmd because texindex assumes
-  % braces and backslashes are used only as delimiters.  Perhaps we
-  % should use @lbracechar and @rbracechar?
-  \def\{{{\tt\char123}}%
-  \def\}{{\tt\char125}}%
-  %
-  % I don't entirely understand this, but when an index entry is
-  % generated from a macro call, the \endinput which \scanmacro inserts
-  % causes processing to be prematurely terminated.  This is,
-  % apparently, because \indexsorttmp is fully expanded, and \endinput
-  % is an expandable command.  The redefinition below makes \endinput
-  % disappear altogether for that purpose -- although logging shows that
-  % processing continues to some further point.  On the other hand, it
-  % seems \endinput does not hurt in the printed index arg, since that
-  % is still getting written without apparent harm.
-  %
-  % Sample source (mac-idx3.tex, reported by Graham Percival to
-  % help-texinfo, 22may06):
-  % @macro funindex {WORD}
-  % @findex xyz
-  % @end macro
-  % ...
-  % @funindex commtest
-  % This is not enough to reproduce the bug, but it gives the flavor.
-  %
-  % Sample whatsit resulting:
-  % .@write3{\entry{xyz}{@folio }{@code {xyz@endinput }}}
-  %
-  % So:
-  \let\endinput = \empty
-  %
-  % Do the redefinitions.
-  \commondummies
-}
-
-% For the aux and toc files, @ is the escape character.  So we want to
-% redefine everything using @ as the escape character (instead of
-% \realbackslash, still used for index files).  When everything uses @,
-% this will be simpler.
-%
-\def\atdummies{%
-  \def\@{@@}%
-  \def\ {@ }%
-  \let\{ = \lbraceatcmd
-  \let\} = \rbraceatcmd
-  %
-  % Do the redefinitions.
-  \commondummies
-  \otherbackslash
-}
-
-% Called from \indexdummies and \atdummies.
-%
-\def\commondummies{%
-  %
-  % \definedummyword defines \#1 as \string\#1\space, thus effectively
-  % preventing its expansion.  This is used only for control words,
-  % not control letters, because the \space would be incorrect for
-  % control characters, but is needed to separate the control word
-  % from whatever follows.
-  %
-  % For control letters, we have \definedummyletter, which omits the
-  % space.
-  %
-  % These can be used both for control words that take an argument and
-  % those that do not.  If it is followed by {arg} in the input, then
-  % that will dutifully get written to the index (or wherever).
-  %
-  \def\definedummyword  ##1{\def##1{\string##1\space}}%
-  \def\definedummyletter##1{\def##1{\string##1}}%
-  \let\definedummyaccent\definedummyletter
-  %
-  \commondummiesnofonts
-  %
-  \definedummyletter\_%
-  \definedummyletter\-%
-  %
-  % Non-English letters.
-  \definedummyword\AA
-  \definedummyword\AE
-  \definedummyword\DH
-  \definedummyword\L
-  \definedummyword\O
-  \definedummyword\OE
-  \definedummyword\TH
-  \definedummyword\aa
-  \definedummyword\ae
-  \definedummyword\dh
-  \definedummyword\exclamdown
-  \definedummyword\l
-  \definedummyword\o
-  \definedummyword\oe
-  \definedummyword\ordf
-  \definedummyword\ordm
-  \definedummyword\questiondown
-  \definedummyword\ss
-  \definedummyword\th
-  %
-  % Although these internal commands shouldn't show up, sometimes they do.
-  \definedummyword\bf
-  \definedummyword\gtr
-  \definedummyword\hat
-  \definedummyword\less
-  \definedummyword\sf
-  \definedummyword\sl
-  \definedummyword\tclose
-  \definedummyword\tt
-  %
-  \definedummyword\LaTeX
-  \definedummyword\TeX
-  %
-  % Assorted special characters.
-  \definedummyword\arrow
-  \definedummyword\bullet
-  \definedummyword\comma
-  \definedummyword\copyright
-  \definedummyword\registeredsymbol
-  \definedummyword\dots
-  \definedummyword\enddots
-  \definedummyword\entrybreak
-  \definedummyword\equiv
-  \definedummyword\error
-  \definedummyword\euro
-  \definedummyword\expansion
-  \definedummyword\geq
-  \definedummyword\guillemetleft
-  \definedummyword\guillemetright
-  \definedummyword\guilsinglleft
-  \definedummyword\guilsinglright
-  \definedummyword\lbracechar
-  \definedummyword\leq
-  \definedummyword\minus
-  \definedummyword\ogonek
-  \definedummyword\pounds
-  \definedummyword\point
-  \definedummyword\print
-  \definedummyword\quotedblbase
-  \definedummyword\quotedblleft
-  \definedummyword\quotedblright
-  \definedummyword\quoteleft
-  \definedummyword\quoteright
-  \definedummyword\quotesinglbase
-  \definedummyword\rbracechar
-  \definedummyword\result
-  \definedummyword\textdegree
-  %
-  % We want to disable all macros so that they are not expanded by \write.
-  \macrolist
-  %
-  \normalturnoffactive
-  %
-  % Handle some cases of @value -- where it does not contain any
-  % (non-fully-expandable) commands.
-  \makevalueexpandable
-}
-
-% \commondummiesnofonts: common to \commondummies and \indexnofonts.
-%
-\def\commondummiesnofonts{%
-  % Control letters and accents.
-  \definedummyletter\!%
-  \definedummyaccent\"%
-  \definedummyaccent\'%
-  \definedummyletter\*%
-  \definedummyaccent\,%
-  \definedummyletter\.%
-  \definedummyletter\/%
-  \definedummyletter\:%
-  \definedummyaccent\=%
-  \definedummyletter\?%
-  \definedummyaccent\^%
-  \definedummyaccent\`%
-  \definedummyaccent\~%
-  \definedummyword\u
-  \definedummyword\v
-  \definedummyword\H
-  \definedummyword\dotaccent
-  \definedummyword\ogonek
-  \definedummyword\ringaccent
-  \definedummyword\tieaccent
-  \definedummyword\ubaraccent
-  \definedummyword\udotaccent
-  \definedummyword\dotless
-  %
-  % Texinfo font commands.
-  \definedummyword\b
-  \definedummyword\i
-  \definedummyword\r
-  \definedummyword\sansserif
-  \definedummyword\sc
-  \definedummyword\slanted
-  \definedummyword\t
-  %
-  % Commands that take arguments.
-  \definedummyword\abbr
-  \definedummyword\acronym
-  \definedummyword\anchor
-  \definedummyword\cite
-  \definedummyword\code
-  \definedummyword\command
-  \definedummyword\dfn
-  \definedummyword\dmn
-  \definedummyword\email
-  \definedummyword\emph
-  \definedummyword\env
-  \definedummyword\file
-  \definedummyword\image
-  \definedummyword\indicateurl
-  \definedummyword\inforef
-  \definedummyword\kbd
-  \definedummyword\key
-  \definedummyword\math
-  \definedummyword\option
-  \definedummyword\pxref
-  \definedummyword\ref
-  \definedummyword\samp
-  \definedummyword\strong
-  \definedummyword\tie
-  \definedummyword\uref
-  \definedummyword\url
-  \definedummyword\var
-  \definedummyword\verb
-  \definedummyword\w
-  \definedummyword\xref
-  %
-  % Consider:
-  %   @macro mkind{arg1,arg2}
-  %   @cindex \arg2\
-  %   @end macro
-  %   @mkind{foo, bar}
-  % The space after the comma will end up in the temporary definition
-  % that we make for arg2 (see \parsemargdef ff.).  We want all this to be
-  % expanded for the sake of the index, so we end up just seeing "bar".
-  \let\xeatspaces = \eatspaces
-}
-
-% For testing: output @{ and @} in index sort strings as \{ and \}.
-\newif\ifusebracesinindexes
-
-% \indexnofonts is used when outputting the strings to sort the index
-% by, and when constructing control sequence names.  It eliminates all
-% control sequences and just writes whatever the best ASCII sort string
-% would be for a given command (usually its argument).
-%
-\def\indexnofonts{%
-  % Accent commands should become @asis.
-  \def\definedummyaccent##1{\let##1\asis}%
-  % We can just ignore other control letters.
-  \def\definedummyletter##1{\let##1\empty}%
-  % All control words become @asis by default; overrides below.
-  \let\definedummyword\definedummyaccent
-  %
-  \commondummiesnofonts
-  %
-  % Don't no-op \tt, since it isn't a user-level command
-  % and is used in the definitions of the active chars like <, >, |, etc.
-  % Likewise with the other plain tex font commands.
-  %\let\tt=\asis
-  %
-  \def\ { }%
-  \def\@{@}%
-  \def\_{\normalunderscore}%
-  \def\-{}% @- shouldn't affect sorting
-  %
-  % Unfortunately, texindex is not prepared to handle braces in the
-  % content at all.  So for index sorting, we map @{ and @} to strings
-  % starting with |, since that ASCII character is between ASCII { and }.
-  \ifusebracesinindexes
-    \def\lbracechar{\lbracecmd}%
-    \def\rbracechar{\rbracecmd}%
-  \else
-    \def\lbracechar{|a}%
-    \def\rbracechar{|b}%
-  \fi
-  \let\{=\lbracechar
-  \let\}=\rbracechar
-  %
-  %
-  % Non-English letters.
-  \def\AA{AA}%
-  \def\AE{AE}%
-  \def\DH{DZZ}%
-  \def\L{L}%
-  \def\OE{OE}%
-  \def\O{O}%
-  \def\TH{ZZZ}%
-  \def\aa{aa}%
-  \def\ae{ae}%
-  \def\dh{dzz}%
-  \def\exclamdown{!}%
-  \def\l{l}%
-  \def\oe{oe}%
-  \def\ordf{a}%
-  \def\ordm{o}%
-  \def\o{o}%
-  \def\questiondown{?}%
-  \def\ss{ss}%
-  \def\th{zzz}%
-  %
-  \def\LaTeX{LaTeX}%
-  \def\TeX{TeX}%
-  %
-  % Assorted special characters.
-  % (The following {} will end up in the sort string, but that's ok.)
-  \def\arrow{->}%
-  \def\bullet{bullet}%
-  \def\comma{,}%
-  \def\copyright{copyright}%
-  \def\dots{...}%
-  \def\enddots{...}%
-  \def\equiv{==}%
-  \def\error{error}%
-  \def\euro{euro}%
-  \def\expansion{==>}%
-  \def\geq{>=}%
-  \def\guillemetleft{<<}%
-  \def\guillemetright{>>}%
-  \def\guilsinglleft{<}%
-  \def\guilsinglright{>}%
-  \def\leq{<=}%
-  \def\minus{-}%
-  \def\point{.}%
-  \def\pounds{pounds}%
-  \def\print{-|}%
-  \def\quotedblbase{"}%
-  \def\quotedblleft{"}%
-  \def\quotedblright{"}%
-  \def\quoteleft{`}%
-  \def\quoteright{'}%
-  \def\quotesinglbase{,}%
-  \def\registeredsymbol{R}%
-  \def\result{=>}%
-  \def\textdegree{o}%
-  %
-  \expandafter\ifx\csname SETtxiindexlquoteignore\endcsname\relax
-  \else \indexlquoteignore \fi
-  %
-  % We need to get rid of all macros, leaving only the arguments (if present).
-  % Of course this is not nearly correct, but it is the best we can do for now.
-  % makeinfo does not expand macros in the argument to @deffn, which ends up
-  % writing an index entry, and texindex isn't prepared for an index sort entry
-  % that starts with \.
-  %
-  % Since macro invocations are followed by braces, we can just redefine them
-  % to take a single TeX argument.  The case of a macro invocation that
-  % goes to end-of-line is not handled.
-  %
-  \macrolist
-}
-
-% Undocumented (for FSFS 2nd ed.): @set txiindexlquoteignore makes us
-% ignore left quotes in the sort term.
-{\catcode`\`=\active
- \gdef\indexlquoteignore{\let`=\empty}}
-
-\let\indexbackslash=0  %overridden during \printindex.
-\let\SETmarginindex=\relax % put index entries in margin (undocumented)?
-
-% Most index entries go through here, but \dosubind is the general case.
-% #1 is the index name, #2 is the entry text.
-\def\doind#1#2{\dosubind{#1}{#2}{}}
-
-% Workhorse for all \fooindexes.
-% #1 is name of index, #2 is stuff to put there, #3 is subentry --
-% empty if called from \doind, as we usually are (the main exception
-% is with most defuns, which call us directly).
-%
-\def\dosubind#1#2#3{%
-  \iflinks
-  {%
-    % Store the main index entry text (including the third arg).
-    \toks0 = {#2}%
-    % If third arg is present, precede it with a space.
-    \def\thirdarg{#3}%
-    \ifx\thirdarg\empty \else
-      \toks0 = \expandafter{\the\toks0 \space #3}%
-    \fi
-    %
-    \edef\writeto{\csname#1indfile\endcsname}%
-    %
-    \safewhatsit\dosubindwrite
-  }%
-  \fi
-}
-
-% Write the entry in \toks0 to the index file:
-%
-\def\dosubindwrite{%
-  % Put the index entry in the margin if desired.
-  \ifx\SETmarginindex\relax\else
-    \insert\margin{\hbox{\vrule height8pt depth3pt width0pt \the\toks0}}%
-  \fi
-  %
-  % Remember, we are within a group.
-  \indexdummies % Must do this here, since \bf, etc expand at this stage
-  \def\backslashcurfont{\indexbackslash}% \indexbackslash isn't defined now
-      % so it will be output as is; and it will print as backslash.
-  %
-  % Process the index entry with all font commands turned off, to
-  % get the string to sort by.
-  {\indexnofonts
-   \edef\temp{\the\toks0}% need full expansion
-   \xdef\indexsorttmp{\temp}%
-  }%
-  %
-  % Set up the complete index entry, with both the sort key and
-  % the original text, including any font commands.  We write
-  % three arguments to \entry to the .?? file (four in the
-  % subentry case), texindex reduces to two when writing the .??s
-  % sorted result.
-  \edef\temp{%
-    \write\writeto{%
-      \string\entry{\indexsorttmp}{\noexpand\folio}{\the\toks0}}%
-  }%
-  \temp
-}
-
-% Take care of unwanted page breaks/skips around a whatsit:
-%
-% If a skip is the last thing on the list now, preserve it
-% by backing up by \lastskip, doing the \write, then inserting
-% the skip again.  Otherwise, the whatsit generated by the
-% \write or \pdfdest will make \lastskip zero.  The result is that
-% sequences like this:
-% @end defun
-% @tindex whatever
-% @defun ...
-% will have extra space inserted, because the \medbreak in the
-% start of the @defun won't see the skip inserted by the @end of
-% the previous defun.
-%
-% But don't do any of this if we're not in vertical mode.  We
-% don't want to do a \vskip and prematurely end a paragraph.
-%
-% Avoid page breaks due to these extra skips, too.
-%
-% But wait, there is a catch there:
-% We'll have to check whether \lastskip is zero skip.  \ifdim is not
-% sufficient for this purpose, as it ignores stretch and shrink parts
-% of the skip.  The only way seems to be to check the textual
-% representation of the skip.
-%
-% The following is almost like \def\zeroskipmacro{0.0pt} except that
-% the ``p'' and ``t'' characters have catcode \other, not 11 (letter).
-%
-\edef\zeroskipmacro{\expandafter\the\csname z@skip\endcsname}
-%
-\newskip\whatsitskip
-\newcount\whatsitpenalty
-%
-% ..., ready, GO:
-%
-\def\safewhatsit#1{\ifhmode
-  #1%
- \else
-  % \lastskip and \lastpenalty cannot both be nonzero simultaneously.
-  \whatsitskip = \lastskip
-  \edef\lastskipmacro{\the\lastskip}%
-  \whatsitpenalty = \lastpenalty
-  %
-  % If \lastskip is nonzero, that means the last item was a
-  % skip.  And since a skip is discardable, that means this
-  % -\whatsitskip glue we're inserting is preceded by a
-  % non-discardable item, therefore it is not a potential
-  % breakpoint, therefore no \nobreak needed.
-  \ifx\lastskipmacro\zeroskipmacro
-  \else
-    \vskip-\whatsitskip
-  \fi
-  %
-  #1%
-  %
-  \ifx\lastskipmacro\zeroskipmacro
-    % If \lastskip was zero, perhaps the last item was a penalty, and
-    % perhaps it was >=10000, e.g., a \nobreak.  In that case, we want
-    % to re-insert the same penalty (values >10000 are used for various
-    % signals); since we just inserted a non-discardable item, any
-    % following glue (such as a \parskip) would be a breakpoint.  For example:
-    %   @deffn deffn-whatever
-    %   @vindex index-whatever
-    %   Description.
-    % would allow a break between the index-whatever whatsit
-    % and the "Description." paragraph.
-    \ifnum\whatsitpenalty>9999 \penalty\whatsitpenalty \fi
-  \else
-    % On the other hand, if we had a nonzero \lastskip,
-    % this make-up glue would be preceded by a non-discardable item
-    % (the whatsit from the \write), so we must insert a \nobreak.
-    \nobreak\vskip\whatsitskip
-  \fi
-\fi}
-
-% The index entry written in the file actually looks like
-%  \entry {sortstring}{page}{topic}
-% or
-%  \entry {sortstring}{page}{topic}{subtopic}
-% The texindex program reads in these files and writes files
-% containing these kinds of lines:
-%  \initial {c}
-%     before the first topic whose initial is c
-%  \entry {topic}{pagelist}
-%     for a topic that is used without subtopics
-%  \primary {topic}
-%     for the beginning of a topic that is used with subtopics
-%  \secondary {subtopic}{pagelist}
-%     for each subtopic.
-
-% Define the user-accessible indexing commands
-% @findex, @vindex, @kindex, @cindex.
-
-\def\findex {\fnindex}
-\def\kindex {\kyindex}
-\def\cindex {\cpindex}
-\def\vindex {\vrindex}
-\def\tindex {\tpindex}
-\def\pindex {\pgindex}
-
-\def\cindexsub {\begingroup\obeylines\cindexsub}
-{\obeylines %
-\gdef\cindexsub "#1" #2^^M{\endgroup %
-\dosubind{cp}{#2}{#1}}}
-
-% Define the macros used in formatting output of the sorted index material.
-
-% @printindex causes a particular index (the ??s file) to get printed.
-% It does not print any chapter heading (usually an @unnumbered).
-%
-\parseargdef\printindex{\begingroup
-  \dobreak \chapheadingskip{10000}%
-  %
-  \smallfonts \rm
-  \tolerance = 9500
-  \plainfrenchspacing
-  \everypar = {}% don't want the \kern\-parindent from indentation suppression.
-  %
-  % See if the index file exists and is nonempty.
-  % Change catcode of @ here so that if the index file contains
-  % \initial {@}
-  % as its first line, TeX doesn't complain about mismatched braces
-  % (because it thinks @} is a control sequence).
-  \catcode`\@ = 11
-  \openin 1 \jobname.#1s
-  \ifeof 1
-    % \enddoublecolumns gets confused if there is no text in the index,
-    % and it loses the chapter title and the aux file entries for the
-    % index.  The easiest way to prevent this problem is to make sure
-    % there is some text.
-    \putwordIndexNonexistent
-  \else
-    %
-    % If the index file exists but is empty, then \openin leaves \ifeof
-    % false.  We have to make TeX try to read something from the file, so
-    % it can discover if there is anything in it.
-    \read 1 to \temp
-    \ifeof 1
-      \putwordIndexIsEmpty
-    \else
-      % Index files are almost Texinfo source, but we use \ as the escape
-      % character.  It would be better to use @, but that's too big a change
-      % to make right now.
-      \def\indexbackslash{\backslashcurfont}%
-      \catcode`\\ = 0
-      \escapechar = `\\
-      \begindoublecolumns
-      \input \jobname.#1s
-      \enddoublecolumns
-    \fi
-  \fi
-  \closein 1
-\endgroup}
-
-% These macros are used by the sorted index file itself.
-% Change them to control the appearance of the index.
-
-\def\initial#1{{%
-  % Some minor font changes for the special characters.
-  \let\tentt=\sectt \let\tt=\sectt \let\sf=\sectt
-  %
-  % Remove any glue we may have, we'll be inserting our own.
-  \removelastskip
-  %
-  % We like breaks before the index initials, so insert a bonus.
-  \nobreak
-  \vskip 0pt plus 3\baselineskip
-  \penalty 0
-  \vskip 0pt plus -3\baselineskip
-  %
-  % Typeset the initial.  Making this add up to a whole number of
-  % baselineskips increases the chance of the dots lining up from column
-  % to column.  It still won't often be perfect, because of the stretch
-  % we need before each entry, but it's better.
-  %
-  % No shrink because it confuses \balancecolumns.
-  \vskip 1.67\baselineskip plus .5\baselineskip
-  \leftline{\secbf #1}%
-  % Do our best not to break after the initial.
-  \nobreak
-  \vskip .33\baselineskip plus .1\baselineskip
-}}
-
-% \entry typesets a paragraph consisting of the text (#1), dot leaders, and
-% then page number (#2) flushed to the right margin.  It is used for index
-% and table of contents entries.  The paragraph is indented by \leftskip.
-%
-% A straightforward implementation would start like this:
-%      \def\entry#1#2{...
-% But this freezes the catcodes in the argument, and can cause problems to
-% @code, which sets - active.  This problem was fixed by a kludge---
-% ``-'' was active throughout whole index, but this isn't really right.
-% The right solution is to prevent \entry from swallowing the whole text.
-%                                 --kasal, 21nov03
-\def\entry{%
-  \begingroup
-    %
-    % Start a new paragraph if necessary, so our assignments below can't
-    % affect previous text.
-    \par
-    %
-    % Do not fill out the last line with white space.
-    \parfillskip = 0in
-    %
-    % No extra space above this paragraph.
-    \parskip = 0in
-    %
-    % Do not prefer a separate line ending with a hyphen to fewer lines.
-    \finalhyphendemerits = 0
-    %
-    % \hangindent is only relevant when the entry text and page number
-    % don't both fit on one line.  In that case, bob suggests starting the
-    % dots pretty far over on the line.  Unfortunately, a large
-    % indentation looks wrong when the entry text itself is broken across
-    % lines.  So we use a small indentation and put up with long leaders.
-    %
-    % \hangafter is reset to 1 (which is the value we want) at the start
-    % of each paragraph, so we need not do anything with that.
-    \hangindent = 2em
-    %
-    % When the entry text needs to be broken, just fill out the first line
-    % with blank space.
-    \rightskip = 0pt plus1fil
-    %
-    % A bit of stretch before each entry for the benefit of balancing
-    % columns.
-    \vskip 0pt plus1pt
-    %
-    % When reading the text of entry, convert explicit line breaks
-    % from @* into spaces.  The user might give these in long section
-    % titles, for instance.
-    \def\*{\unskip\space\ignorespaces}%
-    \def\entrybreak{\hfil\break}%
-    %
-    % Swallow the left brace of the text (first parameter):
-    \afterassignment\doentry
-    \let\temp =
-}
-\def\entrybreak{\unskip\space\ignorespaces}%
-\def\doentry{%
-    \bgroup % Instead of the swallowed brace.
-      \noindent
-      \aftergroup\finishentry
-      % And now comes the text of the entry.
-}
-\def\finishentry#1{%
-    % #1 is the page number.
-    %
-    % The following is kludged to not output a line of dots in the index if
-    % there are no page numbers.  The next person who breaks this will be
-    % cursed by a Unix daemon.
-    \setbox\boxA = \hbox{#1}%
-    \ifdim\wd\boxA = 0pt
-      \ %
-    \else
-      %
-      % If we must, put the page number on a line of its own, and fill out
-      % this line with blank space.  (The \hfil is overwhelmed with the
-      % fill leaders glue in \indexdotfill if the page number does fit.)
-      \hfil\penalty50
-      \null\nobreak\indexdotfill % Have leaders before the page number.
-      %
-      % The `\ ' here is removed by the implicit \unskip that TeX does as
-      % part of (the primitive) \par.  Without it, a spurious underfull
-      % \hbox ensues.
-      \ifpdf
-       \pdfgettoks#1.%
-       \ \the\toksA
-      \else
-       \ #1%
-      \fi
-    \fi
-    \par
-  \endgroup
-}
-
-% Like plain.tex's \dotfill, except uses up at least 1 em.
-\def\indexdotfill{\cleaders
-  \hbox{$\mathsurround=0pt \mkern1.5mu.\mkern1.5mu$}\hskip 1em plus 1fill}
-
-\def\primary #1{\line{#1\hfil}}
-
-\newskip\secondaryindent \secondaryindent=0.5cm
-\def\secondary#1#2{{%
-  \parfillskip=0in
-  \parskip=0in
-  \hangindent=1in
-  \hangafter=1
-  \noindent\hskip\secondaryindent\hbox{#1}\indexdotfill
-  \ifpdf
-    \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph.
-  \else
-    #2
-  \fi
-  \par
-}}
-
-% Define two-column mode, which we use to typeset indexes.
-% Adapted from the TeXbook, page 416, which is to say,
-% the manmac.tex format used to print the TeXbook itself.
-\catcode`\@=11
-
-\newbox\partialpage
-\newdimen\doublecolumnhsize
-
-\def\begindoublecolumns{\begingroup % ended by \enddoublecolumns
-  % Grab any single-column material above us.
-  \output = {%
-    %
-    % Here is a possibility not foreseen in manmac: if we accumulate a
-    % whole lot of material, we might end up calling this \output
-    % routine twice in a row (see the doublecol-lose test, which is
-    % essentially a couple of indexes with @setchapternewpage off).  In
-    % that case we just ship out what is in \partialpage with the normal
-    % output routine.  Generally, \partialpage will be empty when this
-    % runs and this will be a no-op.  See the indexspread.tex test case.
-    \ifvoid\partialpage \else
-      \onepageout{\pagecontents\partialpage}%
-    \fi
-    %
-    \global\setbox\partialpage = \vbox{%
-      % Unvbox the main output page.
-      \unvbox\PAGE
-      \kern-\topskip \kern\baselineskip
-    }%
-  }%
-  \eject % run that output routine to set \partialpage
-  %
-  % Use the double-column output routine for subsequent pages.
-  \output = {\doublecolumnout}%
-  %
-  % Change the page size parameters.  We could do this once outside this
-  % routine, in each of @smallbook, @afourpaper, and the default 8.5x11
-  % format, but then we repeat the same computation.  Repeating a couple
-  % of assignments once per index is clearly meaningless for the
-  % execution time, so we may as well do it in one place.
-  %
-  % First we halve the line length, less a little for the gutter between
-  % the columns.  We compute the gutter based on the line length, so it
-  % changes automatically with the paper format.  The magic constant
-  % below is chosen so that the gutter has the same value (well, +-<1pt)
-  % as it did when we hard-coded it.
-  %
-  % We put the result in a separate register, \doublecolumhsize, so we
-  % can restore it in \pagesofar, after \hsize itself has (potentially)
-  % been clobbered.
-  %
-  \doublecolumnhsize = \hsize
-    \advance\doublecolumnhsize by -.04154\hsize
-    \divide\doublecolumnhsize by 2
-  \hsize = \doublecolumnhsize
-  %
-  % Double the \vsize as well.  (We don't need a separate register here,
-  % since nobody clobbers \vsize.)
-  \vsize = 2\vsize
-}
-
-% The double-column output routine for all double-column pages except
-% the last.
-%
-\def\doublecolumnout{%
-  \splittopskip=\topskip \splitmaxdepth=\maxdepth
-  % Get the available space for the double columns -- the normal
-  % (undoubled) page height minus any material left over from the
-  % previous page.
-  \dimen@ = \vsize
-  \divide\dimen@ by 2
-  \advance\dimen@ by -\ht\partialpage
-  %
-  % box0 will be the left-hand column, box2 the right.
-  \setbox0=\vsplit255 to\dimen@ \setbox2=\vsplit255 to\dimen@
-  \onepageout\pagesofar
-  \unvbox255
-  \penalty\outputpenalty
-}
-%
-% Re-output the contents of the output page -- any previous material,
-% followed by the two boxes we just split, in box0 and box2.
-\def\pagesofar{%
-  \unvbox\partialpage
-  %
-  \hsize = \doublecolumnhsize
-  \wd0=\hsize \wd2=\hsize
-  \hbox to\pagewidth{\box0\hfil\box2}%
-}
-%
-% All done with double columns.
-\def\enddoublecolumns{%
-  % The following penalty ensures that the page builder is exercised
-  % _before_ we change the output routine.  This is necessary in the
-  % following situation:
-  %
-  % The last section of the index consists only of a single entry.
-  % Before this section, \pagetotal is less than \pagegoal, so no
-  % break occurs before the last section starts.  However, the last
-  % section, consisting of \initial and the single \entry, does not
-  % fit on the page and has to be broken off.  Without the following
-  % penalty the page builder will not be exercised until \eject
-  % below, and by that time we'll already have changed the output
-  % routine to the \balancecolumns version, so the next-to-last
-  % double-column page will be processed with \balancecolumns, which
-  % is wrong:  The two columns will go to the main vertical list, with
-  % the broken-off section in the recent contributions.  As soon as
-  % the output routine finishes, TeX starts reconsidering the page
-  % break.  The two columns and the broken-off section both fit on the
-  % page, because the two columns now take up only half of the page
-  % goal.  When TeX sees \eject from below which follows the final
-  % section, it invokes the new output routine that we've set after
-  % \balancecolumns below; \onepageout will try to fit the two columns
-  % and the final section into the vbox of \pageheight (see
-  % \pagebody), causing an overfull box.
-  %
-  % Note that glue won't work here, because glue does not exercise the
-  % page builder, unlike penalties (see The TeXbook, pp. 280-281).
-  \penalty0
-  %
-  \output = {%
-    % Split the last of the double-column material.  Leave it on the
-    % current page, no automatic page break.
-    \balancecolumns
-    %
-    % If we end up splitting too much material for the current page,
-    % though, there will be another page break right after this \output
-    % invocation ends.  Having called \balancecolumns once, we do not
-    % want to call it again.  Therefore, reset \output to its normal
-    % definition right away.  (We hope \balancecolumns will never be
-    % called on to balance too much material, but if it is, this makes
-    % the output somewhat more palatable.)
-    \global\output = {\onepageout{\pagecontents\PAGE}}%
-  }%
-  \eject
-  \endgroup % started in \begindoublecolumns
-  %
-  % \pagegoal was set to the doubled \vsize above, since we restarted
-  % the current page.  We're now back to normal single-column
-  % typesetting, so reset \pagegoal to the normal \vsize (after the
-  % \endgroup where \vsize got restored).
-  \pagegoal = \vsize
-}
-%
-% Called at the end of the double column material.
-\def\balancecolumns{%
-  \setbox0 = \vbox{\unvbox255}% like \box255 but more efficient, see p.120.
-  \dimen@ = \ht0
-  \advance\dimen@ by \topskip
-  \advance\dimen@ by-\baselineskip
-  \divide\dimen@ by 2 % target to split to
-  %debug\message{final 2-column material height=\the\ht0, target=\the\dimen@.}%
-  \splittopskip = \topskip
-  % Loop until we get a decent breakpoint.
-  {%
-    \vbadness = 10000
-    \loop
-      \global\setbox3 = \copy0
-      \global\setbox1 = \vsplit3 to \dimen@
-    \ifdim\ht3>\dimen@
-      \global\advance\dimen@ by 1pt
-    \repeat
-  }%
-  %debug\message{split to \the\dimen@, column heights: \the\ht1, \the\ht3.}%
-  \setbox0=\vbox to\dimen@{\unvbox1}%
-  \setbox2=\vbox to\dimen@{\unvbox3}%
-  %
-  \pagesofar
-}
-\catcode`\@ = \other
-
-
-\message{sectioning,}
-% Chapters, sections, etc.
-
-% Let's start with @part.
-\outer\parseargdef\part{\partzzz{#1}}
-\def\partzzz#1{%
-  \chapoddpage
-  \null
-  \vskip.3\vsize  % move it down on the page a bit
-  \begingroup
-    \noindent \titlefonts\rmisbold #1\par % the text
-    \let\lastnode=\empty      % no node to associate with
-    \writetocentry{part}{#1}{}% but put it in the toc
-    \headingsoff              % no headline or footline on the part page
-    \chapoddpage
-  \endgroup
-}
-
-% \unnumberedno is an oxymoron.  But we count the unnumbered
-% sections so that we can refer to them unambiguously in the pdf
-% outlines by their "section number".  We avoid collisions with chapter
-% numbers by starting them at 10000.  (If a document ever has 10000
-% chapters, we're in trouble anyway, I'm sure.)
-\newcount\unnumberedno \unnumberedno = 10000
-\newcount\chapno
-\newcount\secno        \secno=0
-\newcount\subsecno     \subsecno=0
-\newcount\subsubsecno  \subsubsecno=0
-
-% This counter is funny since it counts through charcodes of letters A, B, ...
-\newcount\appendixno  \appendixno = `\@
-%
-% \def\appendixletter{\char\the\appendixno}
-% We do the following ugly conditional instead of the above simple
-% construct for the sake of pdftex, which needs the actual
-% letter in the expansion, not just typeset.
-%
-\def\appendixletter{%
-  \ifnum\appendixno=`A A%
-  \else\ifnum\appendixno=`B B%
-  \else\ifnum\appendixno=`C C%
-  \else\ifnum\appendixno=`D D%
-  \else\ifnum\appendixno=`E E%
-  \else\ifnum\appendixno=`F F%
-  \else\ifnum\appendixno=`G G%
-  \else\ifnum\appendixno=`H H%
-  \else\ifnum\appendixno=`I I%
-  \else\ifnum\appendixno=`J J%
-  \else\ifnum\appendixno=`K K%
-  \else\ifnum\appendixno=`L L%
-  \else\ifnum\appendixno=`M M%
-  \else\ifnum\appendixno=`N N%
-  \else\ifnum\appendixno=`O O%
-  \else\ifnum\appendixno=`P P%
-  \else\ifnum\appendixno=`Q Q%
-  \else\ifnum\appendixno=`R R%
-  \else\ifnum\appendixno=`S S%
-  \else\ifnum\appendixno=`T T%
-  \else\ifnum\appendixno=`U U%
-  \else\ifnum\appendixno=`V V%
-  \else\ifnum\appendixno=`W W%
-  \else\ifnum\appendixno=`X X%
-  \else\ifnum\appendixno=`Y Y%
-  \else\ifnum\appendixno=`Z Z%
-  % The \the is necessary, despite appearances, because \appendixletter is
-  % expanded while writing the .toc file.  \char\appendixno is not
-  % expandable, thus it is written literally, thus all appendixes come out
-  % with the same letter (or @) in the toc without it.
-  \else\char\the\appendixno
-  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
-  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}
-
-% Each @chapter defines these (using marks) as the number+name, number
-% and name of the chapter.  Page headings and footings can use
-% these.  @section does likewise.
-\def\thischapter{}
-\def\thischapternum{}
-\def\thischaptername{}
-\def\thissection{}
-\def\thissectionnum{}
-\def\thissectionname{}
-
-\newcount\absseclevel % used to calculate proper heading level
-\newcount\secbase\secbase=0 % @raisesections/@lowersections modify this count
-
-% @raisesections: treat @section as chapter, @subsection as section, etc.
-\def\raisesections{\global\advance\secbase by -1}
-\let\up=\raisesections % original BFox name
-
-% @lowersections: treat @chapter as section, @section as subsection, etc.
-\def\lowersections{\global\advance\secbase by 1}
-\let\down=\lowersections % original BFox name
-
-% we only have subsub.
-\chardef\maxseclevel = 3
-%
-% A numbered section within an unnumbered changes to unnumbered too.
-% To achieve this, remember the "biggest" unnum. sec. we are currently in:
-\chardef\unnlevel = \maxseclevel
-%
-% Trace whether the current chapter is an appendix or not:
-% \chapheadtype is "N" or "A", unnumbered chapters are ignored.
-\def\chapheadtype{N}
-
-% Choose a heading macro
-% #1 is heading type
-% #2 is heading level
-% #3 is text for heading
-\def\genhead#1#2#3{%
-  % Compute the abs. sec. level:
-  \absseclevel=#2
-  \advance\absseclevel by \secbase
-  % Make sure \absseclevel doesn't fall outside the range:
-  \ifnum \absseclevel < 0
-    \absseclevel = 0
-  \else
-    \ifnum \absseclevel > 3
-      \absseclevel = 3
-    \fi
-  \fi
-  % The heading type:
-  \def\headtype{#1}%
-  \if \headtype U%
-    \ifnum \absseclevel < \unnlevel
-      \chardef\unnlevel = \absseclevel
-    \fi
-  \else
-    % Check for appendix sections:
-    \ifnum \absseclevel = 0
-      \edef\chapheadtype{\headtype}%
-    \else
-      \if \headtype A\if \chapheadtype N%
-       \errmessage{@appendix... within a non-appendix chapter}%
-      \fi\fi
-    \fi
-    % Check for numbered within unnumbered:
-    \ifnum \absseclevel > \unnlevel
-      \def\headtype{U}%
-    \else
-      \chardef\unnlevel = 3
-    \fi
-  \fi
-  % Now print the heading:
-  \if \headtype U%
-    \ifcase\absseclevel
-       \unnumberedzzz{#3}%
-    \or \unnumberedseczzz{#3}%
-    \or \unnumberedsubseczzz{#3}%
-    \or \unnumberedsubsubseczzz{#3}%
-    \fi
-  \else
-    \if \headtype A%
-      \ifcase\absseclevel
-         \appendixzzz{#3}%
-      \or \appendixsectionzzz{#3}%
-      \or \appendixsubseczzz{#3}%
-      \or \appendixsubsubseczzz{#3}%
-      \fi
-    \else
-      \ifcase\absseclevel
-         \chapterzzz{#3}%
-      \or \seczzz{#3}%
-      \or \numberedsubseczzz{#3}%
-      \or \numberedsubsubseczzz{#3}%
-      \fi
-    \fi
-  \fi
-  \suppressfirstparagraphindent
-}
-
-% an interface:
-\def\numhead{\genhead N}
-\def\apphead{\genhead A}
-\def\unnmhead{\genhead U}
-
-% @chapter, @appendix, @unnumbered.  Increment top-level counter, reset
-% all lower-level sectioning counters to zero.
-%
-% Also set \chaplevelprefix, which we prepend to @float sequence numbers
-% (e.g., figures), q.v.  By default (before any chapter), that is empty.
-\let\chaplevelprefix = \empty
-%
-\outer\parseargdef\chapter{\numhead0{#1}} % normally numhead0 calls chapterzzz
-\def\chapterzzz#1{%
-  % section resetting is \global in case the chapter is in a group, such
-  % as an @include file.
-  \global\secno=0 \global\subsecno=0 \global\subsubsecno=0
-    \global\advance\chapno by 1
-  %
-  % Used for \float.
-  \gdef\chaplevelprefix{\the\chapno.}%
-  \resetallfloatnos
-  %
-  % \putwordChapter can contain complex things in translations.
-  \toks0=\expandafter{\putwordChapter}%
-  \message{\the\toks0 \space \the\chapno}%
-  %
-  % Write the actual heading.
-  \chapmacro{#1}{Ynumbered}{\the\chapno}%
-  %
-  % So @section and the like are numbered underneath this chapter.
-  \global\let\section = \numberedsec
-  \global\let\subsection = \numberedsubsec
-  \global\let\subsubsection = \numberedsubsubsec
-}
-
-\outer\parseargdef\appendix{\apphead0{#1}} % normally calls appendixzzz
-%
-\def\appendixzzz#1{%
-  \global\secno=0 \global\subsecno=0 \global\subsubsecno=0
-    \global\advance\appendixno by 1
-  \gdef\chaplevelprefix{\appendixletter.}%
-  \resetallfloatnos
-  %
-  % \putwordAppendix can contain complex things in translations.
-  \toks0=\expandafter{\putwordAppendix}%
-  \message{\the\toks0 \space \appendixletter}%
-  %
-  \chapmacro{#1}{Yappendix}{\appendixletter}%
-  %
-  \global\let\section = \appendixsec
-  \global\let\subsection = \appendixsubsec
-  \global\let\subsubsection = \appendixsubsubsec
-}
-
-% normally unnmhead0 calls unnumberedzzz:
-\outer\parseargdef\unnumbered{\unnmhead0{#1}}
-\def\unnumberedzzz#1{%
-  \global\secno=0 \global\subsecno=0 \global\subsubsecno=0
-    \global\advance\unnumberedno by 1
-  %
-  % Since an unnumbered has no number, no prefix for figures.
-  \global\let\chaplevelprefix = \empty
-  \resetallfloatnos
-  %
-  % This used to be simply \message{#1}, but TeX fully expands the
-  % argument to \message.  Therefore, if #1 contained @-commands, TeX
-  % expanded them.  For example, in `@unnumbered The @cite{Book}', TeX
-  % expanded @cite (which turns out to cause errors because \cite is meant
-  % to be executed, not expanded).
-  %
-  % Anyway, we don't want the fully-expanded definition of @cite to appear
-  % as a result of the \message, we just want `@cite' itself.  We use
-  % \the<toks register> to achieve this: TeX expands \the<toks> only once,
-  % simply yielding the contents of <toks register>.  (We also do this for
-  % the toc entries.)
-  \toks0 = {#1}%
-  \message{(\the\toks0)}%
-  %
-  \chapmacro{#1}{Ynothing}{\the\unnumberedno}%
-  %
-  \global\let\section = \unnumberedsec
-  \global\let\subsection = \unnumberedsubsec
-  \global\let\subsubsection = \unnumberedsubsubsec
-}
-
-% @centerchap is like @unnumbered, but the heading is centered.
-\outer\parseargdef\centerchap{%
-  % Well, we could do the following in a group, but that would break
-  % an assumption that \chapmacro is called at the outermost level.
-  % Thus we are safer this way:                --kasal, 24feb04
-  \let\centerparametersmaybe = \centerparameters
-  \unnmhead0{#1}%
-  \let\centerparametersmaybe = \relax
-}
-
-% @top is like @unnumbered.
-\let\top\unnumbered
-
-% Sections.
-% 
-\outer\parseargdef\numberedsec{\numhead1{#1}} % normally calls seczzz
-\def\seczzz#1{%
-  \global\subsecno=0 \global\subsubsecno=0  \global\advance\secno by 1
-  \sectionheading{#1}{sec}{Ynumbered}{\the\chapno.\the\secno}%
-}
-
-% normally calls appendixsectionzzz:
-\outer\parseargdef\appendixsection{\apphead1{#1}}
-\def\appendixsectionzzz#1{%
-  \global\subsecno=0 \global\subsubsecno=0  \global\advance\secno by 1
-  \sectionheading{#1}{sec}{Yappendix}{\appendixletter.\the\secno}%
-}
-\let\appendixsec\appendixsection
-
-% normally calls unnumberedseczzz:
-\outer\parseargdef\unnumberedsec{\unnmhead1{#1}}
-\def\unnumberedseczzz#1{%
-  \global\subsecno=0 \global\subsubsecno=0  \global\advance\secno by 1
-  \sectionheading{#1}{sec}{Ynothing}{\the\unnumberedno.\the\secno}%
-}
-
-% Subsections.
-% 
-% normally calls numberedsubseczzz:
-\outer\parseargdef\numberedsubsec{\numhead2{#1}}
-\def\numberedsubseczzz#1{%
-  \global\subsubsecno=0  \global\advance\subsecno by 1
-  \sectionheading{#1}{subsec}{Ynumbered}{\the\chapno.\the\secno.\the\subsecno}%
-}
-
-% normally calls appendixsubseczzz:
-\outer\parseargdef\appendixsubsec{\apphead2{#1}}
-\def\appendixsubseczzz#1{%
-  \global\subsubsecno=0  \global\advance\subsecno by 1
-  \sectionheading{#1}{subsec}{Yappendix}%
-                 {\appendixletter.\the\secno.\the\subsecno}%
-}
-
-% normally calls unnumberedsubseczzz:
-\outer\parseargdef\unnumberedsubsec{\unnmhead2{#1}}
-\def\unnumberedsubseczzz#1{%
-  \global\subsubsecno=0  \global\advance\subsecno by 1
-  \sectionheading{#1}{subsec}{Ynothing}%
-                 {\the\unnumberedno.\the\secno.\the\subsecno}%
-}
-
-% Subsubsections.
-% 
-% normally numberedsubsubseczzz:
-\outer\parseargdef\numberedsubsubsec{\numhead3{#1}}
-\def\numberedsubsubseczzz#1{%
-  \global\advance\subsubsecno by 1
-  \sectionheading{#1}{subsubsec}{Ynumbered}%
-                 {\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno}%
-}
-
-% normally appendixsubsubseczzz:
-\outer\parseargdef\appendixsubsubsec{\apphead3{#1}}
-\def\appendixsubsubseczzz#1{%
-  \global\advance\subsubsecno by 1
-  \sectionheading{#1}{subsubsec}{Yappendix}%
-                 {\appendixletter.\the\secno.\the\subsecno.\the\subsubsecno}%
-}
-
-% normally unnumberedsubsubseczzz:
-\outer\parseargdef\unnumberedsubsubsec{\unnmhead3{#1}}
-\def\unnumberedsubsubseczzz#1{%
-  \global\advance\subsubsecno by 1
-  \sectionheading{#1}{subsubsec}{Ynothing}%
-                 {\the\unnumberedno.\the\secno.\the\subsecno.\the\subsubsecno}%
-}
-
-% These macros control what the section commands do, according
-% to what kind of chapter we are in (ordinary, appendix, or unnumbered).
-% Define them by default for a numbered chapter.
-\let\section = \numberedsec
-\let\subsection = \numberedsubsec
-\let\subsubsection = \numberedsubsubsec
-
-% Define @majorheading, @heading and @subheading
-
-\def\majorheading{%
-  {\advance\chapheadingskip by 10pt \chapbreak }%
-  \parsearg\chapheadingzzz
-}
-
-\def\chapheading{\chapbreak \parsearg\chapheadingzzz}
-\def\chapheadingzzz#1{%
-  \vbox{\chapfonts \raggedtitlesettings #1\par}%
-  \nobreak\bigskip \nobreak
-  \suppressfirstparagraphindent
-}
-
-% @heading, @subheading, @subsubheading.
-\parseargdef\heading{\sectionheading{#1}{sec}{Yomitfromtoc}{}
-  \suppressfirstparagraphindent}
-\parseargdef\subheading{\sectionheading{#1}{subsec}{Yomitfromtoc}{}
-  \suppressfirstparagraphindent}
-\parseargdef\subsubheading{\sectionheading{#1}{subsubsec}{Yomitfromtoc}{}
-  \suppressfirstparagraphindent}
-
-% These macros generate a chapter, section, etc. heading only
-% (including whitespace, linebreaking, etc. around it),
-% given all the information in convenient, parsed form.
-
-% Args are the skip and penalty (usually negative)
-\def\dobreak#1#2{\par\ifdim\lastskip<#1\removelastskip\penalty#2\vskip#1\fi}
-
-% Parameter controlling skip before chapter headings (if needed)
-\newskip\chapheadingskip
-
-% Define plain chapter starts, and page on/off switching for it.
-\def\chapbreak{\dobreak \chapheadingskip {-4000}}
-\def\chappager{\par\vfill\supereject}
-% Because \domark is called before \chapoddpage, the filler page will
-% get the headings for the next chapter, which is wrong.  But we don't
-% care -- we just disable all headings on the filler page.
-\def\chapoddpage{%
-  \chappager
-  \ifodd\pageno \else
-    \begingroup
-      \headingsoff
-      \null
-      \chappager
-    \endgroup
-  \fi
-}
-
-\def\setchapternewpage #1 {\csname CHAPPAG#1\endcsname}
-
-\def\CHAPPAGoff{%
-\global\let\contentsalignmacro = \chappager
-\global\let\pchapsepmacro=\chapbreak
-\global\let\pagealignmacro=\chappager}
-
-\def\CHAPPAGon{%
-\global\let\contentsalignmacro = \chappager
-\global\let\pchapsepmacro=\chappager
-\global\let\pagealignmacro=\chappager
-\global\def\HEADINGSon{\HEADINGSsingle}}
-
-\def\CHAPPAGodd{%
-\global\let\contentsalignmacro = \chapoddpage
-\global\let\pchapsepmacro=\chapoddpage
-\global\let\pagealignmacro=\chapoddpage
-\global\def\HEADINGSon{\HEADINGSdouble}}
-
-\CHAPPAGon
-
-% Chapter opening.
-%
-% #1 is the text, #2 is the section type (Ynumbered, Ynothing,
-% Yappendix, Yomitfromtoc), #3 the chapter number.
-% Not used for @heading series.
-%
-% To test against our argument.
-\def\Ynothingkeyword{Ynothing}
-\def\Yappendixkeyword{Yappendix}
-\def\Yomitfromtockeyword{Yomitfromtoc}
-%
-\def\chapmacro#1#2#3{%
-  \checkenv{}% chapters, etc., should not start inside an environment.
-  %
-  % Insert the first mark before the heading break (see notes for \domark).
-  \let\prevchapterdefs=\lastchapterdefs
-  \let\prevsectiondefs=\lastsectiondefs
-  \gdef\lastsectiondefs{\gdef\thissectionname{}\gdef\thissectionnum{}%
-                        \gdef\thissection{}}%
-  %
-  \def\temptype{#2}%
-  \ifx\temptype\Ynothingkeyword
-    \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}%
-                          \gdef\thischapter{\thischaptername}}%
-  \else\ifx\temptype\Yomitfromtockeyword
-    \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}%
-                          \gdef\thischapter{}}%
-  \else\ifx\temptype\Yappendixkeyword
-    \toks0={#1}%
-    \xdef\lastchapterdefs{%
-      \gdef\noexpand\thischaptername{\the\toks0}%
-      \gdef\noexpand\thischapternum{\appendixletter}%
-      % \noexpand\putwordAppendix avoids expanding indigestible
-      % commands in some of the translations.
-      \gdef\noexpand\thischapter{\noexpand\putwordAppendix{}
-                                 \noexpand\thischapternum:
-                                 \noexpand\thischaptername}%
-    }%
-  \else
-    \toks0={#1}%
-    \xdef\lastchapterdefs{%
-      \gdef\noexpand\thischaptername{\the\toks0}%
-      \gdef\noexpand\thischapternum{\the\chapno}%
-      % \noexpand\putwordChapter avoids expanding indigestible
-      % commands in some of the translations.
-      \gdef\noexpand\thischapter{\noexpand\putwordChapter{}
-                                 \noexpand\thischapternum:
-                                 \noexpand\thischaptername}%
-    }%
-  \fi\fi\fi
-  %
-  % Output the mark.  Pass it through \safewhatsit, to take care of
-  % the preceding space.
-  \safewhatsit\domark
-  %
-  % Insert the chapter heading break.
-  \pchapsepmacro
-  %
-  % Now the second mark, after the heading break.  No break points
-  % between here and the heading.
-  \let\prevchapterdefs=\lastchapterdefs
-  \let\prevsectiondefs=\lastsectiondefs
-  \domark
-  %
-  {%
-    \chapfonts \rmisbold
-    %
-    % Have to define \lastsection before calling \donoderef, because the
-    % xref code eventually uses it.  On the other hand, it has to be called
-    % after \pchapsepmacro, or the headline will change too soon.
-    \gdef\lastsection{#1}%
-    %
-    % Only insert the separating space if we have a chapter/appendix
-    % number, and don't print the unnumbered ``number''.
-    \ifx\temptype\Ynothingkeyword
-      \setbox0 = \hbox{}%
-      \def\toctype{unnchap}%
-    \else\ifx\temptype\Yomitfromtockeyword
-      \setbox0 = \hbox{}% contents like unnumbered, but no toc entry
-      \def\toctype{omit}%
-    \else\ifx\temptype\Yappendixkeyword
-      \setbox0 = \hbox{\putwordAppendix{} #3\enspace}%
-      \def\toctype{app}%
-    \else
-      \setbox0 = \hbox{#3\enspace}%
-      \def\toctype{numchap}%
-    \fi\fi\fi
-    %
-    % Write the toc entry for this chapter.  Must come before the
-    % \donoderef, because we include the current node name in the toc
-    % entry, and \donoderef resets it to empty.
-    \writetocentry{\toctype}{#1}{#3}%
-    %
-    % For pdftex, we have to write out the node definition (aka, make
-    % the pdfdest) after any page break, but before the actual text has
-    % been typeset.  If the destination for the pdf outline is after the
-    % text, then jumping from the outline may wind up with the text not
-    % being visible, for instance under high magnification.
-    \donoderef{#2}%
-    %
-    % Typeset the actual heading.
-    \nobreak % Avoid page breaks at the interline glue.
-    \vbox{\raggedtitlesettings \hangindent=\wd0 \centerparametersmaybe
-          \unhbox0 #1\par}%
-  }%
-  \nobreak\bigskip % no page break after a chapter title
-  \nobreak
-}
-
-% @centerchap -- centered and unnumbered.
-\let\centerparametersmaybe = \relax
-\def\centerparameters{%
-  \advance\rightskip by 3\rightskip
-  \leftskip = \rightskip
-  \parfillskip = 0pt
-}
-
-
-% I don't think this chapter style is supported any more, so I'm not
-% updating it with the new noderef stuff.  We'll see.  --karl, 11aug03.
-%
-\def\setchapterstyle #1 {\csname CHAPF#1\endcsname}
-%
-\def\unnchfopen #1{%
-  \chapoddpage
-  \vbox{\chapfonts \raggedtitlesettings #1\par}%
-  \nobreak\bigskip\nobreak
-}
-\def\chfopen #1#2{\chapoddpage {\chapfonts
-\vbox to 3in{\vfil \hbox to\hsize{\hfil #2} \hbox to\hsize{\hfil #1} \vfil}}%
-\par\penalty 5000 %
-}
-\def\centerchfopen #1{%
-  \chapoddpage
-  \vbox{\chapfonts \raggedtitlesettings \hfill #1\hfill}%
-  \nobreak\bigskip \nobreak
-}
-\def\CHAPFopen{%
-  \global\let\chapmacro=\chfopen
-  \global\let\centerchapmacro=\centerchfopen}
-
-
-% Section titles.  These macros combine the section number parts and
-% call the generic \sectionheading to do the printing.
-%
-\newskip\secheadingskip
-\def\secheadingbreak{\dobreak \secheadingskip{-1000}}
-
-% Subsection titles.
-\newskip\subsecheadingskip
-\def\subsecheadingbreak{\dobreak \subsecheadingskip{-500}}
-
-% Subsubsection titles.
-\def\subsubsecheadingskip{\subsecheadingskip}
-\def\subsubsecheadingbreak{\subsecheadingbreak}
-
-
-% Print any size, any type, section title.
-%
-% #1 is the text of the title,
-% #2 is the section level (sec/subsec/subsubsec),
-% #3 is the section type (Ynumbered, Ynothing, Yappendix, Yomitfromtoc),
-% #4 is the section number.
-%
-\def\seckeyword{sec}
-%
-\def\sectionheading#1#2#3#4{%
-  {%
-    \def\sectionlevel{#2}%
-    \def\temptype{#3}%
-    %
-    % It is ok for the @heading series commands to appear inside an
-    % environment (it's been historically allowed, though the logic is
-    % dubious), but not the others.
-    \ifx\temptype\Yomitfromtockeyword\else
-      \checkenv{}% non-@*heading should not be in an environment.
-    \fi
-    %
-    % Switch to the right set of fonts.
-    \csname #2fonts\endcsname \rmisbold
-    %
-    % Insert first mark before the heading break (see notes for \domark).
-    \let\prevsectiondefs=\lastsectiondefs
-    \ifx\temptype\Ynothingkeyword
-      \ifx\sectionlevel\seckeyword
-        \gdef\lastsectiondefs{\gdef\thissectionname{#1}\gdef\thissectionnum{}%
-                              \gdef\thissection{\thissectionname}}%
-      \fi
-    \else\ifx\temptype\Yomitfromtockeyword
-      % Don't redefine \thissection.
-    \else\ifx\temptype\Yappendixkeyword
-      \ifx\sectionlevel\seckeyword
-        \toks0={#1}%
-        \xdef\lastsectiondefs{%
-          \gdef\noexpand\thissectionname{\the\toks0}%
-          \gdef\noexpand\thissectionnum{#4}%
-          % \noexpand\putwordSection avoids expanding indigestible
-          % commands in some of the translations.
-          \gdef\noexpand\thissection{\noexpand\putwordSection{}
-                                     \noexpand\thissectionnum:
-                                     \noexpand\thissectionname}%
-        }%
-      \fi
-    \else
-      \ifx\sectionlevel\seckeyword
-        \toks0={#1}%
-        \xdef\lastsectiondefs{%
-          \gdef\noexpand\thissectionname{\the\toks0}%
-          \gdef\noexpand\thissectionnum{#4}%
-          % \noexpand\putwordSection avoids expanding indigestible
-          % commands in some of the translations.
-          \gdef\noexpand\thissection{\noexpand\putwordSection{}
-                                     \noexpand\thissectionnum:
-                                     \noexpand\thissectionname}%
-        }%
-      \fi
-    \fi\fi\fi
-    %
-    % Go into vertical mode.  Usually we'll already be there, but we
-    % don't want the following whatsit to end up in a preceding paragraph
-    % if the document didn't happen to have a blank line.
-    \par
-    %
-    % Output the mark.  Pass it through \safewhatsit, to take care of
-    % the preceding space.
-    \safewhatsit\domark
-    %
-    % Insert space above the heading.
-    \csname #2headingbreak\endcsname
-    %
-    % Now the second mark, after the heading break.  No break points
-    % between here and the heading.
-    \global\let\prevsectiondefs=\lastsectiondefs
-    \domark
-    %
-    % Only insert the space after the number if we have a section number.
-    \ifx\temptype\Ynothingkeyword
-      \setbox0 = \hbox{}%
-      \def\toctype{unn}%
-      \gdef\lastsection{#1}%
-    \else\ifx\temptype\Yomitfromtockeyword
-      % for @headings -- no section number, don't include in toc,
-      % and don't redefine \lastsection.
-      \setbox0 = \hbox{}%
-      \def\toctype{omit}%
-      \let\sectionlevel=\empty
-    \else\ifx\temptype\Yappendixkeyword
-      \setbox0 = \hbox{#4\enspace}%
-      \def\toctype{app}%
-      \gdef\lastsection{#1}%
-    \else
-      \setbox0 = \hbox{#4\enspace}%
-      \def\toctype{num}%
-      \gdef\lastsection{#1}%
-    \fi\fi\fi
-    %
-    % Write the toc entry (before \donoderef).  See comments in \chapmacro.
-    \writetocentry{\toctype\sectionlevel}{#1}{#4}%
-    %
-    % Write the node reference (= pdf destination for pdftex).
-    % Again, see comments in \chapmacro.
-    \donoderef{#3}%
-    %
-    % Interline glue will be inserted when the vbox is completed.
-    % That glue will be a valid breakpoint for the page, since it'll be
-    % preceded by a whatsit (usually from the \donoderef, or from the
-    % \writetocentry if there was no node).  We don't want to allow that
-    % break, since then the whatsits could end up on page n while the
-    % section is on page n+1, thus toc/etc. are wrong.  Debian bug 276000.
-    \nobreak
-    %
-    % Output the actual section heading.
-    \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \ptexraggedright
-          \hangindent=\wd0  % zero if no section number
-          \unhbox0 #1}%
-  }%
-  % Add extra space after the heading -- half of whatever came above it.
-  % Don't allow stretch, though.
-  \kern .5 \csname #2headingskip\endcsname
-  %
-  % Do not let the kern be a potential breakpoint, as it would be if it
-  % was followed by glue.
-  \nobreak
-  %
-  % We'll almost certainly start a paragraph next, so don't let that
-  % glue accumulate.  (Not a breakpoint because it's preceded by a
-  % discardable item.)  However, when a paragraph is not started next
-  % (\startdefun, \cartouche, \center, etc.), this needs to be wiped out
-  % or the negative glue will cause weirdly wrong output, typically
-  % obscuring the section heading with something else.
-  \vskip-\parskip
-  %
-  % This is so the last item on the main vertical list is a known
-  % \penalty > 10000, so \startdefun, etc., can recognize the situation
-  % and do the needful.
-  \penalty 10001
-}
-
-
-\message{toc,}
-% Table of contents.
-\newwrite\tocfile
-
-% Write an entry to the toc file, opening it if necessary.
-% Called from @chapter, etc.
-%
-% Example usage: \writetocentry{sec}{Section Name}{\the\chapno.\the\secno}
-% We append the current node name (if any) and page number as additional
-% arguments for the \{chap,sec,...}entry macros which will eventually
-% read this.  The node name is used in the pdf outlines as the
-% destination to jump to.
-%
-% We open the .toc file for writing here instead of at @setfilename (or
-% any other fixed time) so that @contents can be anywhere in the document.
-% But if #1 is `omit', then we don't do anything.  This is used for the
-% table of contents chapter openings themselves.
-%
-\newif\iftocfileopened
-\def\omitkeyword{omit}%
-%
-\def\writetocentry#1#2#3{%
-  \edef\writetoctype{#1}%
-  \ifx\writetoctype\omitkeyword \else
-    \iftocfileopened\else
-      \immediate\openout\tocfile = \jobname.toc
-      \global\tocfileopenedtrue
-    \fi
-    %
-    \iflinks
-      {\atdummies
-       \edef\temp{%
-         \write\tocfile{@#1entry{#2}{#3}{\lastnode}{\noexpand\folio}}}%
-       \temp
-      }%
-    \fi
-  \fi
-  %
-  % Tell \shipout to create a pdf destination on each page, if we're
-  % writing pdf.  These are used in the table of contents.  We can't
-  % just write one on every page because the title pages are numbered
-  % 1 and 2 (the page numbers aren't printed), and so are the first
-  % two pages of the document.  Thus, we'd have two destinations named
-  % `1', and two named `2'.
-  \ifpdf \global\pdfmakepagedesttrue \fi
-}
-
-
-% These characters do not print properly in the Computer Modern roman
-% fonts, so we must take special care.  This is more or less redundant
-% with the Texinfo input format setup at the end of this file.
-%
-\def\activecatcodes{%
-  \catcode`\"=\active
-  \catcode`\$=\active
-  \catcode`\<=\active
-  \catcode`\>=\active
-  \catcode`\\=\active
-  \catcode`\^=\active
-  \catcode`\_=\active
-  \catcode`\|=\active
-  \catcode`\~=\active
-}
-
-
-% Read the toc file, which is essentially Texinfo input.
-\def\readtocfile{%
-  \setupdatafile
-  \activecatcodes
-  \input \tocreadfilename
-}
-
-\newskip\contentsrightmargin \contentsrightmargin=1in
-\newcount\savepageno
-\newcount\lastnegativepageno \lastnegativepageno = -1
-
-% Prepare to read what we've written to \tocfile.
-%
-\def\startcontents#1{%
-  % If @setchapternewpage on, and @headings double, the contents should
-  % start on an odd page, unlike chapters.  Thus, we maintain
-  % \contentsalignmacro in parallel with \pagealignmacro.
-  % From: Torbjorn Granlund <tege@matematik.su.se>
-  \contentsalignmacro
-  \immediate\closeout\tocfile
-  %
-  % Don't need to put `Contents' or `Short Contents' in the headline.
-  % It is abundantly clear what they are.
-  \chapmacro{#1}{Yomitfromtoc}{}%
-  %
-  \savepageno = \pageno
-  \begingroup                  % Set up to handle contents files properly.
-    \raggedbottom              % Worry more about breakpoints than the bottom.
-    \advance\hsize by -\contentsrightmargin % Don't use the full line length.
-    %
-    % Roman numerals for page numbers.
-    \ifnum \pageno>0 \global\pageno = \lastnegativepageno \fi
-}
-
-% redefined for the two-volume lispref.  We always output on
-% \jobname.toc even if this is redefined.
-%
-\def\tocreadfilename{\jobname.toc}
-
-% Normal (long) toc.
-%
-\def\contents{%
-  \startcontents{\putwordTOC}%
-    \openin 1 \tocreadfilename\space
-    \ifeof 1 \else
-      \readtocfile
-    \fi
-    \vfill \eject
-    \contentsalignmacro % in case @setchapternewpage odd is in effect
-    \ifeof 1 \else
-      \pdfmakeoutlines
-    \fi
-    \closein 1
-  \endgroup
-  \lastnegativepageno = \pageno
-  \global\pageno = \savepageno
-}
-
-% And just the chapters.
-\def\summarycontents{%
-  \startcontents{\putwordShortTOC}%
-    %
-    \let\partentry = \shortpartentry
-    \let\numchapentry = \shortchapentry
-    \let\appentry = \shortchapentry
-    \let\unnchapentry = \shortunnchapentry
-    % We want a true roman here for the page numbers.
-    \secfonts
-    \let\rm=\shortcontrm \let\bf=\shortcontbf
-    \let\sl=\shortcontsl \let\tt=\shortconttt
-    \rm
-    \hyphenpenalty = 10000
-    \advance\baselineskip by 1pt % Open it up a little.
-    \def\numsecentry##1##2##3##4{}
-    \let\appsecentry = \numsecentry
-    \let\unnsecentry = \numsecentry
-    \let\numsubsecentry = \numsecentry
-    \let\appsubsecentry = \numsecentry
-    \let\unnsubsecentry = \numsecentry
-    \let\numsubsubsecentry = \numsecentry
-    \let\appsubsubsecentry = \numsecentry
-    \let\unnsubsubsecentry = \numsecentry
-    \openin 1 \tocreadfilename\space
-    \ifeof 1 \else
-      \readtocfile
-    \fi
-    \closein 1
-    \vfill \eject
-    \contentsalignmacro % in case @setchapternewpage odd is in effect
-  \endgroup
-  \lastnegativepageno = \pageno
-  \global\pageno = \savepageno
-}
-\let\shortcontents = \summarycontents
-
-% Typeset the label for a chapter or appendix for the short contents.
-% The arg is, e.g., `A' for an appendix, or `3' for a chapter.
-%
-\def\shortchaplabel#1{%
-  % This space should be enough, since a single number is .5em, and the
-  % widest letter (M) is 1em, at least in the Computer Modern fonts.
-  % But use \hss just in case.
-  % (This space doesn't include the extra space that gets added after
-  % the label; that gets put in by \shortchapentry above.)
-  %
-  % We'd like to right-justify chapter numbers, but that looks strange
-  % with appendix letters.  And right-justifying numbers and
-  % left-justifying letters looks strange when there is less than 10
-  % chapters.  Have to read the whole toc once to know how many chapters
-  % there are before deciding ...
-  \hbox to 1em{#1\hss}%
-}
-
-% These macros generate individual entries in the table of contents.
-% The first argument is the chapter or section name.
-% The last argument is the page number.
-% The arguments in between are the chapter number, section number, ...
-
-% Parts, in the main contents.  Replace the part number, which doesn't
-% exist, with an empty box.  Let's hope all the numbers have the same width.
-% Also ignore the page number, which is conventionally not printed.
-\def\numeralbox{\setbox0=\hbox{8}\hbox to \wd0{\hfil}}
-\def\partentry#1#2#3#4{\dochapentry{\numeralbox\labelspace#1}{}}
-%
-% Parts, in the short toc.
-\def\shortpartentry#1#2#3#4{%
-  \penalty-300
-  \vskip.5\baselineskip plus.15\baselineskip minus.1\baselineskip
-  \shortchapentry{{\bf #1}}{\numeralbox}{}{}%
-}
-
-% Chapters, in the main contents.
-\def\numchapentry#1#2#3#4{\dochapentry{#2\labelspace#1}{#4}}
-%
-% Chapters, in the short toc.
-% See comments in \dochapentry re vbox and related settings.
-\def\shortchapentry#1#2#3#4{%
-  \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#4\egroup}%
-}
-
-% Appendices, in the main contents.
-% Need the word Appendix, and a fixed-size box.
-%
-\def\appendixbox#1{%
-  % We use M since it's probably the widest letter.
-  \setbox0 = \hbox{\putwordAppendix{} M}%
-  \hbox to \wd0{\putwordAppendix{} #1\hss}}
-%
-\def\appentry#1#2#3#4{\dochapentry{\appendixbox{#2}\labelspace#1}{#4}}
-
-% Unnumbered chapters.
-\def\unnchapentry#1#2#3#4{\dochapentry{#1}{#4}}
-\def\shortunnchapentry#1#2#3#4{\tocentry{#1}{\doshortpageno\bgroup#4\egroup}}
-
-% Sections.
-\def\numsecentry#1#2#3#4{\dosecentry{#2\labelspace#1}{#4}}
-\let\appsecentry=\numsecentry
-\def\unnsecentry#1#2#3#4{\dosecentry{#1}{#4}}
-
-% Subsections.
-\def\numsubsecentry#1#2#3#4{\dosubsecentry{#2\labelspace#1}{#4}}
-\let\appsubsecentry=\numsubsecentry
-\def\unnsubsecentry#1#2#3#4{\dosubsecentry{#1}{#4}}
-
-% And subsubsections.
-\def\numsubsubsecentry#1#2#3#4{\dosubsubsecentry{#2\labelspace#1}{#4}}
-\let\appsubsubsecentry=\numsubsubsecentry
-\def\unnsubsubsecentry#1#2#3#4{\dosubsubsecentry{#1}{#4}}
-
-% This parameter controls the indentation of the various levels.
-% Same as \defaultparindent.
-\newdimen\tocindent \tocindent = 15pt
-
-% Now for the actual typesetting. In all these, #1 is the text and #2 is the
-% page number.
-%
-% If the toc has to be broken over pages, we want it to be at chapters
-% if at all possible; hence the \penalty.
-\def\dochapentry#1#2{%
-   \penalty-300 \vskip1\baselineskip plus.33\baselineskip minus.25\baselineskip
-   \begingroup
-     \chapentryfonts
-     \tocentry{#1}{\dopageno\bgroup#2\egroup}%
-   \endgroup
-   \nobreak\vskip .25\baselineskip plus.1\baselineskip
-}
-
-\def\dosecentry#1#2{\begingroup
-  \secentryfonts \leftskip=\tocindent
-  \tocentry{#1}{\dopageno\bgroup#2\egroup}%
-\endgroup}
-
-\def\dosubsecentry#1#2{\begingroup
-  \subsecentryfonts \leftskip=2\tocindent
-  \tocentry{#1}{\dopageno\bgroup#2\egroup}%
-\endgroup}
-
-\def\dosubsubsecentry#1#2{\begingroup
-  \subsubsecentryfonts \leftskip=3\tocindent
-  \tocentry{#1}{\dopageno\bgroup#2\egroup}%
-\endgroup}
-
-% We use the same \entry macro as for the index entries.
-\let\tocentry = \entry
-
-% Space between chapter (or whatever) number and the title.
-\def\labelspace{\hskip1em \relax}
-
-\def\dopageno#1{{\rm #1}}
-\def\doshortpageno#1{{\rm #1}}
-
-\def\chapentryfonts{\secfonts \rm}
-\def\secentryfonts{\textfonts}
-\def\subsecentryfonts{\textfonts}
-\def\subsubsecentryfonts{\textfonts}
-
-
-\message{environments,}
-% @foo ... @end foo.
-
-% @tex ... @end tex    escapes into raw TeX temporarily.
-% One exception: @ is still an escape character, so that @end tex works.
-% But \@ or @@ will get a plain @ character.
-
-\envdef\tex{%
-  \setupmarkupstyle{tex}%
-  \catcode `\\=0 \catcode `\{=1 \catcode `\}=2
-  \catcode `\$=3 \catcode `\&=4 \catcode `\#=6
-  \catcode `\^=7 \catcode `\_=8 \catcode `\~=\active \let~=\tie
-  \catcode `\%=14
-  \catcode `\+=\other
-  \catcode `\"=\other
-  \catcode `\|=\other
-  \catcode `\<=\other
-  \catcode `\>=\other
-  \catcode `\`=\other
-  \catcode `\'=\other
-  \escapechar=`\\
-  %
-  % ' is active in math mode (mathcode"8000).  So reset it, and all our
-  % other math active characters (just in case), to plain's definitions.
-  \mathactive
-  %
-  \let\b=\ptexb
-  \let\bullet=\ptexbullet
-  \let\c=\ptexc
-  \let\,=\ptexcomma
-  \let\.=\ptexdot
-  \let\dots=\ptexdots
-  \let\equiv=\ptexequiv
-  \let\!=\ptexexclam
-  \let\i=\ptexi
-  \let\indent=\ptexindent
-  \let\noindent=\ptexnoindent
-  \let\{=\ptexlbrace
-  \let\+=\tabalign
-  \let\}=\ptexrbrace
-  \let\/=\ptexslash
-  \let\*=\ptexstar
-  \let\t=\ptext
-  \expandafter \let\csname top\endcsname=\ptextop  % we've made it outer
-  \let\frenchspacing=\plainfrenchspacing
-  %
-  \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}%
-  \def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}%
-  \def\@{@}%
-}
-% There is no need to define \Etex.
-
-% Define @lisp ... @end lisp.
-% @lisp environment forms a group so it can rebind things,
-% including the definition of @end lisp (which normally is erroneous).
-
-% Amount to narrow the margins by for @lisp.
-\newskip\lispnarrowing \lispnarrowing=0.4in
-
-% This is the definition that ^^M gets inside @lisp, @example, and other
-% such environments.  \null is better than a space, since it doesn't
-% have any width.
-\def\lisppar{\null\endgraf}
-
-% This space is always present above and below environments.
-\newskip\envskipamount \envskipamount = 0pt
-
-% Make spacing and below environment symmetrical.  We use \parskip here
-% to help in doing that, since in @example-like environments \parskip
-% is reset to zero; thus the \afterenvbreak inserts no space -- but the
-% start of the next paragraph will insert \parskip.
-%
-\def\aboveenvbreak{{%
-  % =10000 instead of <10000 because of a special case in \itemzzz and
-  % \sectionheading, q.v.
-  \ifnum \lastpenalty=10000 \else
-    \advance\envskipamount by \parskip
-    \endgraf
-    \ifdim\lastskip<\envskipamount
-      \removelastskip
-      % it's not a good place to break if the last penalty was \nobreak
-      % or better ...
-      \ifnum\lastpenalty<10000 \penalty-50 \fi
-      \vskip\envskipamount
-    \fi
-  \fi
-}}
-
-\let\afterenvbreak = \aboveenvbreak
-
-% \nonarrowing is a flag.  If "set", @lisp etc don't narrow margins; it will
-% also clear it, so that its embedded environments do the narrowing again.
-\let\nonarrowing=\relax
-
-% @cartouche ... @end cartouche: draw rectangle w/rounded corners around
-% environment contents.
-\font\circle=lcircle10
-\newdimen\circthick
-\newdimen\cartouter\newdimen\cartinner
-\newskip\normbskip\newskip\normpskip\newskip\normlskip
-\circthick=\fontdimen8\circle
-%
-\def\ctl{{\circle\char'013\hskip -6pt}}% 6pt from pl file: 1/2charwidth
-\def\ctr{{\hskip 6pt\circle\char'010}}
-\def\cbl{{\circle\char'012\hskip -6pt}}
-\def\cbr{{\hskip 6pt\circle\char'011}}
-\def\carttop{\hbox to \cartouter{\hskip\lskip
-        \ctl\leaders\hrule height\circthick\hfil\ctr
-        \hskip\rskip}}
-\def\cartbot{\hbox to \cartouter{\hskip\lskip
-        \cbl\leaders\hrule height\circthick\hfil\cbr
-        \hskip\rskip}}
-%
-\newskip\lskip\newskip\rskip
-
-\envdef\cartouche{%
-  \ifhmode\par\fi  % can't be in the midst of a paragraph.
-  \startsavinginserts
-  \lskip=\leftskip \rskip=\rightskip
-  \leftskip=0pt\rightskip=0pt % we want these *outside*.
-  \cartinner=\hsize \advance\cartinner by-\lskip
-  \advance\cartinner by-\rskip
-  \cartouter=\hsize
-  \advance\cartouter by 18.4pt % allow for 3pt kerns on either
-                               % side, and for 6pt waste from
-                               % each corner char, and rule thickness
-  \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip
-  %
-  % If this cartouche directly follows a sectioning command, we need the
-  % \parskip glue (backspaced over by default) or the cartouche can
-  % collide with the section heading.
-  \ifnum\lastpenalty>10000 \vskip\parskip \penalty\lastpenalty \fi
-  %
-  \vbox\bgroup
-      \baselineskip=0pt\parskip=0pt\lineskip=0pt
-      \carttop
-      \hbox\bgroup
-         \hskip\lskip
-         \vrule\kern3pt
-         \vbox\bgroup
-             \kern3pt
-             \hsize=\cartinner
-             \baselineskip=\normbskip
-             \lineskip=\normlskip
-             \parskip=\normpskip
-             \vskip -\parskip
-             \comment % For explanation, see the end of def\group.
-}
-\def\Ecartouche{%
-              \ifhmode\par\fi
-             \kern3pt
-         \egroup
-         \kern3pt\vrule
-         \hskip\rskip
-      \egroup
-      \cartbot
-  \egroup
-  \checkinserts
-}
-
-
-% This macro is called at the beginning of all the @example variants,
-% inside a group.
-\newdimen\nonfillparindent
-\def\nonfillstart{%
-  \aboveenvbreak
-  \ifdim\hfuzz < 12pt \hfuzz = 12pt \fi % Don't be fussy
-  \sepspaces % Make spaces be word-separators rather than space tokens.
-  \let\par = \lisppar % don't ignore blank lines
-  \obeylines % each line of input is a line of output
-  \parskip = 0pt
-  % Turn off paragraph indentation but redefine \indent to emulate
-  % the normal \indent.
-  \nonfillparindent=\parindent
-  \parindent = 0pt
-  \let\indent\nonfillindent
-  %
-  \emergencystretch = 0pt % don't try to avoid overfull boxes
-  \ifx\nonarrowing\relax
-    \advance \leftskip by \lispnarrowing
-    \exdentamount=\lispnarrowing
-  \else
-    \let\nonarrowing = \relax
-  \fi
-  \let\exdent=\nofillexdent
-}
-
-\begingroup
-\obeyspaces
-% We want to swallow spaces (but not other tokens) after the fake
-% @indent in our nonfill-environments, where spaces are normally
-% active and set to @tie, resulting in them not being ignored after
-% @indent.
-\gdef\nonfillindent{\futurelet\temp\nonfillindentcheck}%
-\gdef\nonfillindentcheck{%
-\ifx\temp %
-\expandafter\nonfillindentgobble%
-\else%
-\leavevmode\nonfillindentbox%
-\fi%
-}%
-\endgroup
-\def\nonfillindentgobble#1{\nonfillindent}
-\def\nonfillindentbox{\hbox to \nonfillparindent{\hss}}
-
-% If you want all examples etc. small: @set dispenvsize small.
-% If you want even small examples the full size: @set dispenvsize nosmall.
-% This affects the following displayed environments:
-%    @example, @display, @format, @lisp
-%
-\def\smallword{small}
-\def\nosmallword{nosmall}
-\let\SETdispenvsize\relax
-\def\setnormaldispenv{%
-  \ifx\SETdispenvsize\smallword
-    % end paragraph for sake of leading, in case document has no blank
-    % line.  This is redundant with what happens in \aboveenvbreak, but
-    % we need to do it before changing the fonts, and it's inconvenient
-    % to change the fonts afterward.
-    \ifnum \lastpenalty=10000 \else \endgraf \fi
-    \smallexamplefonts \rm
-  \fi
-}
-\def\setsmalldispenv{%
-  \ifx\SETdispenvsize\nosmallword
-  \else
-    \ifnum \lastpenalty=10000 \else \endgraf \fi
-    \smallexamplefonts \rm
-  \fi
-}
-
-% We often define two environments, @foo and @smallfoo.
-% Let's do it in one command.  #1 is the env name, #2 the definition.
-\def\makedispenvdef#1#2{%
-  \expandafter\envdef\csname#1\endcsname {\setnormaldispenv #2}%
-  \expandafter\envdef\csname small#1\endcsname {\setsmalldispenv #2}%
-  \expandafter\let\csname E#1\endcsname \afterenvbreak
-  \expandafter\let\csname Esmall#1\endcsname \afterenvbreak
-}
-
-% Define two environment synonyms (#1 and #2) for an environment.
-\def\maketwodispenvdef#1#2#3{%
-  \makedispenvdef{#1}{#3}%
-  \makedispenvdef{#2}{#3}%
-}
-%
-% @lisp: indented, narrowed, typewriter font;
-% @example: same as @lisp.
-%
-% @smallexample and @smalllisp: use smaller fonts.
-% Originally contributed by Pavel@xerox.
-%
-\maketwodispenvdef{lisp}{example}{%
-  \nonfillstart
-  \tt\setupmarkupstyle{example}%
-  \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special.
-  \gobble % eat return
-}
-% @display/@smalldisplay: same as @lisp except keep current font.
-%
-\makedispenvdef{display}{%
-  \nonfillstart
-  \gobble
-}
-
-% @format/@smallformat: same as @display except don't narrow margins.
-%
-\makedispenvdef{format}{%
-  \let\nonarrowing = t%
-  \nonfillstart
-  \gobble
-}
-
-% @flushleft: same as @format, but doesn't obey \SETdispenvsize.
-\envdef\flushleft{%
-  \let\nonarrowing = t%
-  \nonfillstart
-  \gobble
-}
-\let\Eflushleft = \afterenvbreak
-
-% @flushright.
-%
-\envdef\flushright{%
-  \let\nonarrowing = t%
-  \nonfillstart
-  \advance\leftskip by 0pt plus 1fill\relax
-  \gobble
-}
-\let\Eflushright = \afterenvbreak
-
-
-% @raggedright does more-or-less normal line breaking but no right
-% justification.  From plain.tex.  Don't stretch around special
-% characters in urls in this environment, since the stretch at the right
-% should be enough.
-\envdef\raggedright{%
-  \rightskip0pt plus2.4em \spaceskip.3333em \xspaceskip.5em\relax
-  \def\urefprestretchamount{0pt}%
-  \def\urefpoststretchamount{0pt}%
-}
-\let\Eraggedright\par
-
-\envdef\raggedleft{%
-  \parindent=0pt \leftskip0pt plus2em
-  \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt
-  \hbadness=10000 % Last line will usually be underfull, so turn off
-                  % badness reporting.
-}
-\let\Eraggedleft\par
-
-\envdef\raggedcenter{%
-  \parindent=0pt \rightskip0pt plus1em \leftskip0pt plus1em
-  \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt
-  \hbadness=10000 % Last line will usually be underfull, so turn off
-                  % badness reporting.
-}
-\let\Eraggedcenter\par
-
-
-% @quotation does normal linebreaking (hence we can't use \nonfillstart)
-% and narrows the margins.  We keep \parskip nonzero in general, since
-% we're doing normal filling.  So, when using \aboveenvbreak and
-% \afterenvbreak, temporarily make \parskip 0.
-%
-\makedispenvdef{quotation}{\quotationstart}
-%
-\def\quotationstart{%
-  \indentedblockstart % same as \indentedblock, but increase right margin too.
-  \ifx\nonarrowing\relax
-    \advance\rightskip by \lispnarrowing
-  \fi
-  \parsearg\quotationlabel
-}
-
-% We have retained a nonzero parskip for the environment, since we're
-% doing normal filling.
-%
-\def\Equotation{%
-  \par
-  \ifx\quotationauthor\thisisundefined\else
-    % indent a bit.
-    \leftline{\kern 2\leftskip \sl ---\quotationauthor}%
-  \fi
-  {\parskip=0pt \afterenvbreak}%
-}
-\def\Esmallquotation{\Equotation}
-
-% If we're given an argument, typeset it in bold with a colon after.
-\def\quotationlabel#1{%
-  \def\temp{#1}%
-  \ifx\temp\empty \else
-    {\bf #1: }%
-  \fi
-}
-
-% @indentedblock is like @quotation, but indents only on the left and
-% has no optional argument.
-% 
-\makedispenvdef{indentedblock}{\indentedblockstart}
-%
-\def\indentedblockstart{%
-  {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip
-  \parindent=0pt
-  %
-  % @cartouche defines \nonarrowing to inhibit narrowing at next level down.
-  \ifx\nonarrowing\relax
-    \advance\leftskip by \lispnarrowing
-    \exdentamount = \lispnarrowing
-  \else
-    \let\nonarrowing = \relax
-  \fi
-}
-
-% Keep a nonzero parskip for the environment, since we're doing normal filling.
-%
-\def\Eindentedblock{%
-  \par
-  {\parskip=0pt \afterenvbreak}%
-}
-\def\Esmallindentedblock{\Eindentedblock}
-
-
-% LaTeX-like @verbatim...@end verbatim and @verb{<char>...<char>}
-% If we want to allow any <char> as delimiter,
-% we need the curly braces so that makeinfo sees the @verb command, eg:
-% `@verbx...x' would look like the '@verbx' command.  --janneke@gnu.org
-%
-% [Knuth]: Donald Ervin Knuth, 1996.  The TeXbook.
-%
-% [Knuth] p.344; only we need to do the other characters Texinfo sets
-% active too.  Otherwise, they get lost as the first character on a
-% verbatim line.
-\def\dospecials{%
-  \do\ \do\\\do\{\do\}\do\$\do\&%
-  \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~%
-  \do\<\do\>\do\|\do\@\do+\do\"%
-  % Don't do the quotes -- if we do, @set txicodequoteundirected and
-  % @set txicodequotebacktick will not have effect on @verb and
-  % @verbatim, and ?` and !` ligatures won't get disabled.
-  %\do\`\do\'%
-}
-%
-% [Knuth] p. 380
-\def\uncatcodespecials{%
-  \def\do##1{\catcode`##1=\other}\dospecials}
-%
-% Setup for the @verb command.
-%
-% Eight spaces for a tab
-\begingroup
-  \catcode`\^^I=\active
-  \gdef\tabeightspaces{\catcode`\^^I=\active\def^^I{\ \ \ \ \ \ \ \ }}
-\endgroup
-%
-\def\setupverb{%
-  \tt  % easiest (and conventionally used) font for verbatim
-  \def\par{\leavevmode\endgraf}%
-  \setupmarkupstyle{verb}%
-  \tabeightspaces
-  % Respect line breaks,
-  % print special symbols as themselves, and
-  % make each space count
-  % must do in this order:
-  \obeylines \uncatcodespecials \sepspaces
-}
-
-% Setup for the @verbatim environment
-%
-% Real tab expansion.
-\newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount
-%
-% We typeset each line of the verbatim in an \hbox, so we can handle
-% tabs.  The \global is in case the verbatim line starts with an accent,
-% or some other command that starts with a begin-group.  Otherwise, the
-% entire \verbbox would disappear at the corresponding end-group, before
-% it is typeset.  Meanwhile, we can't have nested verbatim commands
-% (can we?), so the \global won't be overwriting itself.
-\newbox\verbbox
-\def\starttabbox{\global\setbox\verbbox=\hbox\bgroup}
-%
-\begingroup
-  \catcode`\^^I=\active
-  \gdef\tabexpand{%
-    \catcode`\^^I=\active
-    \def^^I{\leavevmode\egroup
-      \dimen\verbbox=\wd\verbbox % the width so far, or since the previous tab
-      \divide\dimen\verbbox by\tabw
-      \multiply\dimen\verbbox by\tabw % compute previous multiple of \tabw
-      \advance\dimen\verbbox by\tabw  % advance to next multiple of \tabw
-      \wd\verbbox=\dimen\verbbox \box\verbbox \starttabbox
-    }%
-  }
-\endgroup
-
-% start the verbatim environment.
-\def\setupverbatim{%
-  \let\nonarrowing = t%
-  \nonfillstart
-  \tt % easiest (and conventionally used) font for verbatim
-  % The \leavevmode here is for blank lines.  Otherwise, we would
-  % never \starttabox and the \egroup would end verbatim mode.
-  \def\par{\leavevmode\egroup\box\verbbox\endgraf}%
-  \tabexpand
-  \setupmarkupstyle{verbatim}%
-  % Respect line breaks,
-  % print special symbols as themselves, and
-  % make each space count.
-  % Must do in this order:
-  \obeylines \uncatcodespecials \sepspaces
-  \everypar{\starttabbox}%
-}
-
-% Do the @verb magic: verbatim text is quoted by unique
-% delimiter characters.  Before first delimiter expect a
-% right brace, after last delimiter expect closing brace:
-%
-%    \def\doverb'{'<char>#1<char>'}'{#1}
-%
-% [Knuth] p. 382; only eat outer {}
-\begingroup
-  \catcode`[=1\catcode`]=2\catcode`\{=\other\catcode`\}=\other
-  \gdef\doverb{#1[\def\next##1#1}[##1\endgroup]\next]
-\endgroup
-%
-\def\verb{\begingroup\setupverb\doverb}
-%
-%
-% Do the @verbatim magic: define the macro \doverbatim so that
-% the (first) argument ends when '@end verbatim' is reached, ie:
-%
-%     \def\doverbatim#1@end verbatim{#1}
-%
-% For Texinfo it's a lot easier than for LaTeX,
-% because texinfo's \verbatim doesn't stop at '\end{verbatim}':
-% we need not redefine '\', '{' and '}'.
-%
-% Inspired by LaTeX's verbatim command set [latex.ltx]
-%
-\begingroup
-  \catcode`\ =\active
-  \obeylines %
-  % ignore everything up to the first ^^M, that's the newline at the end
-  % of the @verbatim input line itself.  Otherwise we get an extra blank
-  % line in the output.
-  \xdef\doverbatim#1^^M#2@end verbatim{#2\noexpand\end\gobble verbatim}%
-  % We really want {...\end verbatim} in the body of the macro, but
-  % without the active space; thus we have to use \xdef and \gobble.
-\endgroup
-%
-\envdef\verbatim{%
-    \setupverbatim\doverbatim
-}
-\let\Everbatim = \afterenvbreak
-
-
-% @verbatiminclude FILE - insert text of file in verbatim environment.
-%
-\def\verbatiminclude{\parseargusing\filenamecatcodes\doverbatiminclude}
-%
-\def\doverbatiminclude#1{%
-  {%
-    \makevalueexpandable
-    \setupverbatim
-    \indexnofonts       % Allow `@@' and other weird things in file names.
-    \wlog{texinfo.tex: doing @verbatiminclude of #1^^J}%
-    \input #1
-    \afterenvbreak
-  }%
-}
-
-% @copying ... @end copying.
-% Save the text away for @insertcopying later.
-%
-% We save the uninterpreted tokens, rather than creating a box.
-% Saving the text in a box would be much easier, but then all the
-% typesetting commands (@smallbook, font changes, etc.) have to be done
-% beforehand -- and a) we want @copying to be done first in the source
-% file; b) letting users define the frontmatter in as flexible order as
-% possible is very desirable.
-%
-\def\copying{\checkenv{}\begingroup\scanargctxt\docopying}
-\def\docopying#1@end copying{\endgroup\def\copyingtext{#1}}
-%
-\def\insertcopying{%
-  \begingroup
-    \parindent = 0pt  % paragraph indentation looks wrong on title page
-    \scanexp\copyingtext
-  \endgroup
-}
-
-
-\message{defuns,}
-% @defun etc.
-
-\newskip\defbodyindent \defbodyindent=.4in
-\newskip\defargsindent \defargsindent=50pt
-\newskip\deflastargmargin \deflastargmargin=18pt
-\newcount\defunpenalty
-
-% Start the processing of @deffn:
-\def\startdefun{%
-  \ifnum\lastpenalty<10000
-    \medbreak
-    \defunpenalty=10003 % Will keep this @deffn together with the
-                        % following @def command, see below.
-  \else
-    % If there are two @def commands in a row, we'll have a \nobreak,
-    % which is there to keep the function description together with its
-    % header.  But if there's nothing but headers, we need to allow a
-    % break somewhere.  Check specifically for penalty 10002, inserted
-    % by \printdefunline, instead of 10000, since the sectioning
-    % commands also insert a nobreak penalty, and we don't want to allow
-    % a break between a section heading and a defun.
-    %
-    % As a further refinement, we avoid "club" headers by signalling
-    % with penalty of 10003 after the very first @deffn in the
-    % sequence (see above), and penalty of 10002 after any following
-    % @def command.
-    \ifnum\lastpenalty=10002 \penalty2000 \else \defunpenalty=10002 \fi
-    %
-    % Similarly, after a section heading, do not allow a break.
-    % But do insert the glue.
-    \medskip  % preceded by discardable penalty, so not a breakpoint
-  \fi
-  %
-  \parindent=0in
-  \advance\leftskip by \defbodyindent
-  \exdentamount=\defbodyindent
-}
-
-\def\dodefunx#1{%
-  % First, check whether we are in the right environment:
-  \checkenv#1%
-  %
-  % As above, allow line break if we have multiple x headers in a row.
-  % It's not a great place, though.
-  \ifnum\lastpenalty=10002 \penalty3000 \else \defunpenalty=10002 \fi
-  %
-  % And now, it's time to reuse the body of the original defun:
-  \expandafter\gobbledefun#1%
-}
-\def\gobbledefun#1\startdefun{}
-
-% \printdefunline \deffnheader{text}
-%
-\def\printdefunline#1#2{%
-  \begingroup
-    % call \deffnheader:
-    #1#2 \endheader
-    % common ending:
-    \interlinepenalty = 10000
-    \advance\rightskip by 0pt plus 1fil\relax
-    \endgraf
-    \nobreak\vskip -\parskip
-    \penalty\defunpenalty  % signal to \startdefun and \dodefunx
-    % Some of the @defun-type tags do not enable magic parentheses,
-    % rendering the following check redundant.  But we don't optimize.
-    \checkparencounts
-  \endgroup
-}
-
-\def\Edefun{\endgraf\medbreak}
-
-% \makedefun{deffn} creates \deffn, \deffnx and \Edeffn;
-% the only thing remaining is to define \deffnheader.
-%
-\def\makedefun#1{%
-  \expandafter\let\csname E#1\endcsname = \Edefun
-  \edef\temp{\noexpand\domakedefun
-    \makecsname{#1}\makecsname{#1x}\makecsname{#1header}}%
-  \temp
-}
-
-% \domakedefun \deffn \deffnx \deffnheader
-%
-% Define \deffn and \deffnx, without parameters.
-% \deffnheader has to be defined explicitly.
-%
-\def\domakedefun#1#2#3{%
-  \envdef#1{%
-    \startdefun
-    \doingtypefnfalse    % distinguish typed functions from all else
-    \parseargusing\activeparens{\printdefunline#3}%
-  }%
-  \def#2{\dodefunx#1}%
-  \def#3%
-}
-
-\newif\ifdoingtypefn       % doing typed function?
-\newif\ifrettypeownline    % typeset return type on its own line?
-
-% @deftypefnnewline on|off says whether the return type of typed functions
-% are printed on their own line.  This affects @deftypefn, @deftypefun,
-% @deftypeop, and @deftypemethod.
-% 
-\parseargdef\deftypefnnewline{%
-  \def\temp{#1}%
-  \ifx\temp\onword
-    \expandafter\let\csname SETtxideftypefnnl\endcsname
-      = \empty
-  \else\ifx\temp\offword
-    \expandafter\let\csname SETtxideftypefnnl\endcsname
-      = \relax
-  \else
-    \errhelp = \EMsimple
-    \errmessage{Unknown @txideftypefnnl value `\temp',
-                must be on|off}%
-  \fi\fi
-}
-
-% Untyped functions:
-
-% @deffn category name args
-\makedefun{deffn}{\deffngeneral{}}
-
-% @deffn category class name args
-\makedefun{defop}#1 {\defopon{#1\ \putwordon}}
-
-% \defopon {category on}class name args
-\def\defopon#1#2 {\deffngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} }
-
-% \deffngeneral {subind}category name args
-%
-\def\deffngeneral#1#2 #3 #4\endheader{%
-  % Remember that \dosubind{fn}{foo}{} is equivalent to \doind{fn}{foo}.
-  \dosubind{fn}{\code{#3}}{#1}%
-  \defname{#2}{}{#3}\magicamp\defunargs{#4\unskip}%
-}
-
-% Typed functions:
-
-% @deftypefn category type name args
-\makedefun{deftypefn}{\deftypefngeneral{}}
-
-% @deftypeop category class type name args
-\makedefun{deftypeop}#1 {\deftypeopon{#1\ \putwordon}}
-
-% \deftypeopon {category on}class type name args
-\def\deftypeopon#1#2 {\deftypefngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} }
-
-% \deftypefngeneral {subind}category type name args
-%
-\def\deftypefngeneral#1#2 #3 #4 #5\endheader{%
-  \dosubind{fn}{\code{#4}}{#1}%
-  \doingtypefntrue
-  \defname{#2}{#3}{#4}\defunargs{#5\unskip}%
-}
-
-% Typed variables:
-
-% @deftypevr category type var args
-\makedefun{deftypevr}{\deftypecvgeneral{}}
-
-% @deftypecv category class type var args
-\makedefun{deftypecv}#1 {\deftypecvof{#1\ \putwordof}}
-
-% \deftypecvof {category of}class type var args
-\def\deftypecvof#1#2 {\deftypecvgeneral{\putwordof\ \code{#2}}{#1\ \code{#2}} }
-
-% \deftypecvgeneral {subind}category type var args
-%
-\def\deftypecvgeneral#1#2 #3 #4 #5\endheader{%
-  \dosubind{vr}{\code{#4}}{#1}%
-  \defname{#2}{#3}{#4}\defunargs{#5\unskip}%
-}
-
-% Untyped variables:
-
-% @defvr category var args
-\makedefun{defvr}#1 {\deftypevrheader{#1} {} }
-
-% @defcv category class var args
-\makedefun{defcv}#1 {\defcvof{#1\ \putwordof}}
-
-% \defcvof {category of}class var args
-\def\defcvof#1#2 {\deftypecvof{#1}#2 {} }
-
-% Types:
-
-% @deftp category name args
-\makedefun{deftp}#1 #2 #3\endheader{%
-  \doind{tp}{\code{#2}}%
-  \defname{#1}{}{#2}\defunargs{#3\unskip}%
-}
-
-% Remaining @defun-like shortcuts:
-\makedefun{defun}{\deffnheader{\putwordDeffunc} }
-\makedefun{defmac}{\deffnheader{\putwordDefmac} }
-\makedefun{defspec}{\deffnheader{\putwordDefspec} }
-\makedefun{deftypefun}{\deftypefnheader{\putwordDeffunc} }
-\makedefun{defvar}{\defvrheader{\putwordDefvar} }
-\makedefun{defopt}{\defvrheader{\putwordDefopt} }
-\makedefun{deftypevar}{\deftypevrheader{\putwordDefvar} }
-\makedefun{defmethod}{\defopon\putwordMethodon}
-\makedefun{deftypemethod}{\deftypeopon\putwordMethodon}
-\makedefun{defivar}{\defcvof\putwordInstanceVariableof}
-\makedefun{deftypeivar}{\deftypecvof\putwordInstanceVariableof}
-
-% \defname, which formats the name of the @def (not the args).
-% #1 is the category, such as "Function".
-% #2 is the return type, if any.
-% #3 is the function name.
-%
-% We are followed by (but not passed) the arguments, if any.
-%
-\def\defname#1#2#3{%
-  \par
-  % Get the values of \leftskip and \rightskip as they were outside the @def...
-  \advance\leftskip by -\defbodyindent
-  %
-  % Determine if we are typesetting the return type of a typed function
-  % on a line by itself.
-  \rettypeownlinefalse
-  \ifdoingtypefn  % doing a typed function specifically?
-    % then check user option for putting return type on its own line:
-    \expandafter\ifx\csname SETtxideftypefnnl\endcsname\relax \else
-      \rettypeownlinetrue
-    \fi
-  \fi
-  %
-  % How we'll format the category name.  Putting it in brackets helps
-  % distinguish it from the body text that may end up on the next line
-  % just below it.
-  \def\temp{#1}%
-  \setbox0=\hbox{\kern\deflastargmargin \ifx\temp\empty\else [\rm\temp]\fi}
-  %
-  % Figure out line sizes for the paragraph shape.  We'll always have at
-  % least two.
-  \tempnum = 2
-  %
-  % The first line needs space for \box0; but if \rightskip is nonzero,
-  % we need only space for the part of \box0 which exceeds it:
-  \dimen0=\hsize  \advance\dimen0 by -\wd0  \advance\dimen0 by \rightskip
-  %
-  % If doing a return type on its own line, we'll have another line.
-  \ifrettypeownline
-    \advance\tempnum by 1
-    \def\maybeshapeline{0in \hsize}%
-  \else
-    \def\maybeshapeline{}%
-  \fi
-  %
-  % The continuations:
-  \dimen2=\hsize  \advance\dimen2 by -\defargsindent
-  %
-  % The final paragraph shape:
-  \parshape \tempnum  0in \dimen0  \maybeshapeline  \defargsindent \dimen2
-  %
-  % Put the category name at the right margin.
-  \noindent
-  \hbox to 0pt{%
-    \hfil\box0 \kern-\hsize
-    % \hsize has to be shortened this way:
-    \kern\leftskip
-    % Intentionally do not respect \rightskip, since we need the space.
-  }%
-  %
-  % Allow all lines to be underfull without complaint:
-  \tolerance=10000 \hbadness=10000
-  \exdentamount=\defbodyindent
-  {%
-    % defun fonts. We use typewriter by default (used to be bold) because:
-    % . we're printing identifiers, they should be in tt in principle.
-    % . in languages with many accents, such as Czech or French, it's
-    %   common to leave accents off identifiers.  The result looks ok in
-    %   tt, but exceedingly strange in rm.
-    % . we don't want -- and --- to be treated as ligatures.
-    % . this still does not fix the ?` and !` ligatures, but so far no
-    %   one has made identifiers using them :).
-    \df \tt
-    \def\temp{#2}% text of the return type
-    \ifx\temp\empty\else
-      \tclose{\temp}% typeset the return type
-      \ifrettypeownline
-        % put return type on its own line; prohibit line break following:
-        \hfil\vadjust{\nobreak}\break  
-      \else
-        \space  % type on same line, so just followed by a space
-      \fi
-    \fi           % no return type
-    #3% output function name
-  }%
-  {\rm\enskip}% hskip 0.5 em of \tenrm
-  %
-  \boldbrax
-  % arguments will be output next, if any.
-}
-
-% Print arguments in slanted roman (not ttsl), inconsistently with using
-% tt for the name.  This is because literal text is sometimes needed in
-% the argument list (groff manual), and ttsl and tt are not very
-% distinguishable.  Prevent hyphenation at `-' chars.
-%
-\def\defunargs#1{%
-  % use sl by default (not ttsl),
-  % tt for the names.
-  \df \sl \hyphenchar\font=0
-  %
-  % On the other hand, if an argument has two dashes (for instance), we
-  % want a way to get ttsl.  We used to recommend @var for that, so
-  % leave the code in, but it's strange for @var to lead to typewriter.
-  % Nowadays we recommend @code, since the difference between a ttsl hyphen
-  % and a tt hyphen is pretty tiny.  @code also disables ?` !`.
-  \def\var##1{{\setupmarkupstyle{var}\ttslanted{##1}}}%
-  #1%
-  \sl\hyphenchar\font=45
-}
-
-% We want ()&[] to print specially on the defun line.
-%
-\def\activeparens{%
-  \catcode`\(=\active \catcode`\)=\active
-  \catcode`\[=\active \catcode`\]=\active
-  \catcode`\&=\active
-}
-
-% Make control sequences which act like normal parenthesis chars.
-\let\lparen = ( \let\rparen = )
-
-% Be sure that we always have a definition for `(', etc.  For example,
-% if the fn name has parens in it, \boldbrax will not be in effect yet,
-% so TeX would otherwise complain about undefined control sequence.
-{
-  \activeparens
-  \global\let(=\lparen \global\let)=\rparen
-  \global\let[=\lbrack \global\let]=\rbrack
-  \global\let& = \&
-
-  \gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb}
-  \gdef\magicamp{\let&=\amprm}
-}
-
-\newcount\parencount
-
-% If we encounter &foo, then turn on ()-hacking afterwards
-\newif\ifampseen
-\def\amprm#1 {\ampseentrue{\bf\&#1 }}
-
-\def\parenfont{%
-  \ifampseen
-    % At the first level, print parens in roman,
-    % otherwise use the default font.
-    \ifnum \parencount=1 \rm \fi
-  \else
-    % The \sf parens (in \boldbrax) actually are a little bolder than
-    % the contained text.  This is especially needed for [ and ] .
-    \sf
-  \fi
-}
-\def\infirstlevel#1{%
-  \ifampseen
-    \ifnum\parencount=1
-      #1%
-    \fi
-  \fi
-}
-\def\bfafterword#1 {#1 \bf}
-
-\def\opnr{%
-  \global\advance\parencount by 1
-  {\parenfont(}%
-  \infirstlevel \bfafterword
-}
-\def\clnr{%
-  {\parenfont)}%
-  \infirstlevel \sl
-  \global\advance\parencount by -1
-}
-
-\newcount\brackcount
-\def\lbrb{%
-  \global\advance\brackcount by 1
-  {\bf[}%
-}
-\def\rbrb{%
-  {\bf]}%
-  \global\advance\brackcount by -1
-}
-
-\def\checkparencounts{%
-  \ifnum\parencount=0 \else \badparencount \fi
-  \ifnum\brackcount=0 \else \badbrackcount \fi
-}
-% these should not use \errmessage; the glibc manual, at least, actually
-% has such constructs (when documenting function pointers).
-\def\badparencount{%
-  \message{Warning: unbalanced parentheses in @def...}%
-  \global\parencount=0
-}
-\def\badbrackcount{%
-  \message{Warning: unbalanced square brackets in @def...}%
-  \global\brackcount=0
-}
-
-
-\message{macros,}
-% @macro.
-
-% To do this right we need a feature of e-TeX, \scantokens,
-% which we arrange to emulate with a temporary file in ordinary TeX.
-\ifx\eTeXversion\thisisundefined
-  \newwrite\macscribble
-  \def\scantokens#1{%
-    \toks0={#1}%
-    \immediate\openout\macscribble=\jobname.tmp
-    \immediate\write\macscribble{\the\toks0}%
-    \immediate\closeout\macscribble
-    \input \jobname.tmp
-  }
-\fi
-
-\def\scanmacro#1{\begingroup
-  \newlinechar`\^^M
-  \let\xeatspaces\eatspaces
-  %
-  % Undo catcode changes of \startcontents and \doprintindex
-  % When called from @insertcopying or (short)caption, we need active
-  % backslash to get it printed correctly.  Previously, we had
-  % \catcode`\\=\other instead.  We'll see whether a problem appears
-  % with macro expansion.                              --kasal, 19aug04
-  \catcode`\@=0 \catcode`\\=\active \escapechar=`\@
-  %
-  % ... and for \example:
-  \spaceisspace
-  %
-  % The \empty here causes a following catcode 5 newline to be eaten as
-  % part of reading whitespace after a control sequence.  It does not
-  % eat a catcode 13 newline.  There's no good way to handle the two
-  % cases (untried: maybe e-TeX's \everyeof could help, though plain TeX
-  % would then have different behavior).  See the Macro Details node in
-  % the manual for the workaround we recommend for macros and
-  % line-oriented commands.
-  % 
-  \scantokens{#1\empty}%
-\endgroup}
-
-\def\scanexp#1{%
-  \edef\temp{\noexpand\scanmacro{#1}}%
-  \temp
-}
-
-\newcount\paramno   % Count of parameters
-\newtoks\macname    % Macro name
-\newif\ifrecursive  % Is it recursive?
-
-% List of all defined macros in the form
-%    \definedummyword\macro1\definedummyword\macro2...
-% Currently is also contains all @aliases; the list can be split
-% if there is a need.
-\def\macrolist{}
-
-% Add the macro to \macrolist
-\def\addtomacrolist#1{\expandafter \addtomacrolistxxx \csname#1\endcsname}
-\def\addtomacrolistxxx#1{%
-     \toks0 = \expandafter{\macrolist\definedummyword#1}%
-     \xdef\macrolist{\the\toks0}%
-}
-
-% Utility routines.
-% This does \let #1 = #2, with \csnames; that is,
-%   \let \csname#1\endcsname = \csname#2\endcsname
-% (except of course we have to play expansion games).
-%
-\def\cslet#1#2{%
-  \expandafter\let
-  \csname#1\expandafter\endcsname
-  \csname#2\endcsname
-}
-
-% Trim leading and trailing spaces off a string.
-% Concepts from aro-bend problem 15 (see CTAN).
-{\catcode`\@=11
-\gdef\eatspaces #1{\expandafter\trim@\expandafter{#1 }}
-\gdef\trim@ #1{\trim@@ @#1 @ #1 @ @@}
-\gdef\trim@@ #1@ #2@ #3@@{\trim@@@\empty #2 @}
-\def\unbrace#1{#1}
-\unbrace{\gdef\trim@@@ #1 } #2@{#1}
-}
-
-% Trim a single trailing ^^M off a string.
-{\catcode`\^^M=\other \catcode`\Q=3%
-\gdef\eatcr #1{\eatcra #1Q^^MQ}%
-\gdef\eatcra#1^^MQ{\eatcrb#1Q}%
-\gdef\eatcrb#1Q#2Q{#1}%
-}
-
-% Macro bodies are absorbed as an argument in a context where
-% all characters are catcode 10, 11 or 12, except \ which is active
-% (as in normal texinfo). It is necessary to change the definition of \
-% to recognize macro arguments; this is the job of \mbodybackslash.
-%
-% Non-ASCII encodings make 8-bit characters active, so un-activate
-% them to avoid their expansion.  Must do this non-globally, to
-% confine the change to the current group.
-%
-% It's necessary to have hard CRs when the macro is executed. This is
-% done by making ^^M (\endlinechar) catcode 12 when reading the macro
-% body, and then making it the \newlinechar in \scanmacro.
-%
-\def\scanctxt{% used as subroutine
-  \catcode`\"=\other
-  \catcode`\+=\other
-  \catcode`\<=\other
-  \catcode`\>=\other
-  \catcode`\@=\other
-  \catcode`\^=\other
-  \catcode`\_=\other
-  \catcode`\|=\other
-  \catcode`\~=\other
-  \ifx\declaredencoding\ascii \else \setnonasciicharscatcodenonglobal\other \fi
-}
-
-\def\scanargctxt{% used for copying and captions, not macros.
-  \scanctxt
-  \catcode`\\=\other
-  \catcode`\^^M=\other
-}
-
-\def\macrobodyctxt{% used for @macro definitions
-  \scanctxt
-  \catcode`\{=\other
-  \catcode`\}=\other
-  \catcode`\^^M=\other
-  \usembodybackslash
-}
-
-\def\macroargctxt{% used when scanning invocations
-  \scanctxt
-  \catcode`\\=0
-}
-% why catcode 0 for \ in the above?  To recognize \\ \{ \} as "escapes"
-% for the single characters \ { }.  Thus, we end up with the "commands"
-% that would be written @\ @{ @} in a Texinfo document.
-% 
-% We already have @{ and @}.  For @\, we define it here, and only for
-% this purpose, to produce a typewriter backslash (so, the @\ that we
-% define for @math can't be used with @macro calls):
-%
-\def\\{\normalbackslash}%
-% 
-% We would like to do this for \, too, since that is what makeinfo does.
-% But it is not possible, because Texinfo already has a command @, for a
-% cedilla accent.  Documents must use @comma{} instead.
-%
-% \anythingelse will almost certainly be an error of some kind.
-
-
-% \mbodybackslash is the definition of \ in @macro bodies.
-% It maps \foo\ => \csname macarg.foo\endcsname => #N
-% where N is the macro parameter number.
-% We define \csname macarg.\endcsname to be \realbackslash, so
-% \\ in macro replacement text gets you a backslash.
-%
-{\catcode`@=0 @catcode`@\=@active
- @gdef@usembodybackslash{@let\=@mbodybackslash}
- @gdef@mbodybackslash#1\{@csname macarg.#1@endcsname}
-}
-\expandafter\def\csname macarg.\endcsname{\realbackslash}
-
-\def\margbackslash#1{\char`\#1 }
-
-\def\macro{\recursivefalse\parsearg\macroxxx}
-\def\rmacro{\recursivetrue\parsearg\macroxxx}
-
-\def\macroxxx#1{%
-  \getargs{#1}% now \macname is the macname and \argl the arglist
-  \ifx\argl\empty       % no arguments
-     \paramno=0\relax
-  \else
-     \expandafter\parsemargdef \argl;%
-     \if\paramno>256\relax
-       \ifx\eTeXversion\thisisundefined
-         \errhelp = \EMsimple
-         \errmessage{You need eTeX to compile a file with macros with more than 256 arguments}
-       \fi
-     \fi
-  \fi
-  \if1\csname ismacro.\the\macname\endcsname
-     \message{Warning: redefining \the\macname}%
-  \else
-     \expandafter\ifx\csname \the\macname\endcsname \relax
-     \else \errmessage{Macro name \the\macname\space already defined}\fi
-     \global\cslet{macsave.\the\macname}{\the\macname}%
-     \global\expandafter\let\csname ismacro.\the\macname\endcsname=1%
-     \addtomacrolist{\the\macname}%
-  \fi
-  \begingroup \macrobodyctxt
-  \ifrecursive \expandafter\parsermacbody
-  \else \expandafter\parsemacbody
-  \fi}
-
-\parseargdef\unmacro{%
-  \if1\csname ismacro.#1\endcsname
-    \global\cslet{#1}{macsave.#1}%
-    \global\expandafter\let \csname ismacro.#1\endcsname=0%
-    % Remove the macro name from \macrolist:
-    \begingroup
-      \expandafter\let\csname#1\endcsname \relax
-      \let\definedummyword\unmacrodo
-      \xdef\macrolist{\macrolist}%
-    \endgroup
-  \else
-    \errmessage{Macro #1 not defined}%
-  \fi
-}
-
-% Called by \do from \dounmacro on each macro.  The idea is to omit any
-% macro definitions that have been changed to \relax.
-%
-\def\unmacrodo#1{%
-  \ifx #1\relax
-    % remove this
-  \else
-    \noexpand\definedummyword \noexpand#1%
-  \fi
-}
-
-% This makes use of the obscure feature that if the last token of a
-% <parameter list> is #, then the preceding argument is delimited by
-% an opening brace, and that opening brace is not consumed.
-\def\getargs#1{\getargsxxx#1{}}
-\def\getargsxxx#1#{\getmacname #1 \relax\getmacargs}
-\def\getmacname#1 #2\relax{\macname={#1}}
-\def\getmacargs#1{\def\argl{#1}}
-
-% For macro processing make @ a letter so that we can make Texinfo private macro names.
-\edef\texiatcatcode{\the\catcode`\@}
-\catcode `@=11\relax
-
-% Parse the optional {params} list.  Set up \paramno and \paramlist
-% so \defmacro knows what to do.  Define \macarg.BLAH for each BLAH
-% in the params list to some hook where the argument is to be expanded.  If
-% there are less than 10 arguments that hook is to be replaced by ##N where N
-% is the position in that list, that is to say the macro arguments are to be
-% defined `a la TeX in the macro body.  
-%
-% That gets used by \mbodybackslash (above).
-%
-% We need to get `macro parameter char #' into several definitions.
-% The technique used is stolen from LaTeX: let \hash be something
-% unexpandable, insert that wherever you need a #, and then redefine
-% it to # just before using the token list produced.
-%
-% The same technique is used to protect \eatspaces till just before
-% the macro is used.
-%
-% If there are 10 or more arguments, a different technique is used, where the
-% hook remains in the body, and when macro is to be expanded the body is
-% processed again to replace the arguments.
-%
-% In that case, the hook is \the\toks N-1, and we simply set \toks N-1 to the
-% argument N value and then \edef  the body (nothing else will expand because of
-% the catcode regime underwhich the body was input).
-%
-% If you compile with TeX (not eTeX), and you have macros with 10 or more
-% arguments, you need that no macro has more than 256 arguments, otherwise an
-% error is produced.
-\def\parsemargdef#1;{%
-  \paramno=0\def\paramlist{}%
-  \let\hash\relax
-  \let\xeatspaces\relax
-  \parsemargdefxxx#1,;,%
-  % In case that there are 10 or more arguments we parse again the arguments
-  % list to set new definitions for the \macarg.BLAH macros corresponding to
-  % each BLAH argument. It was anyhow needed to parse already once this list
-  % in order to count the arguments, and as macros with at most 9 arguments
-  % are by far more frequent than macro with 10 or more arguments, defining
-  % twice the \macarg.BLAH macros does not cost too much processing power.
-  \ifnum\paramno<10\relax\else
-    \paramno0\relax
-    \parsemmanyargdef@@#1,;,% 10 or more arguments
-  \fi
-}
-\def\parsemargdefxxx#1,{%
-  \if#1;\let\next=\relax
-  \else \let\next=\parsemargdefxxx
-    \advance\paramno by 1
-    \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname
-        {\xeatspaces{\hash\the\paramno}}%
-    \edef\paramlist{\paramlist\hash\the\paramno,}%
-  \fi\next}
-
-\def\parsemmanyargdef@@#1,{%
-  \if#1;\let\next=\relax
-  \else 
-    \let\next=\parsemmanyargdef@@
-    \edef\tempb{\eatspaces{#1}}%
-    \expandafter\def\expandafter\tempa
-       \expandafter{\csname macarg.\tempb\endcsname}%
-    % Note that we need some extra \noexpand\noexpand, this is because we
-    % don't want \the  to be expanded in the \parsermacbody  as it uses an
-    % \xdef .
-    \expandafter\edef\tempa
-      {\noexpand\noexpand\noexpand\the\toks\the\paramno}%
-    \advance\paramno by 1\relax
-  \fi\next}
-
-% These two commands read recursive and nonrecursive macro bodies.
-% (They're different since rec and nonrec macros end differently.)
-%
-
-\catcode `\@\texiatcatcode
-\long\def\parsemacbody#1@end macro%
-{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}%
-\long\def\parsermacbody#1@end rmacro%
-{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}%
-\catcode `\@=11\relax
-
-\let\endargs@\relax
-\let\nil@\relax
-\def\nilm@{\nil@}%
-\long\def\nillm@{\nil@}%
-
-% This macro is expanded during the Texinfo macro expansion, not during its
-% definition.  It gets all the arguments values and assigns them to macros
-% macarg.ARGNAME
-%
-% #1 is the macro name
-% #2 is the list of argument names
-% #3 is the list of argument values
-\def\getargvals@#1#2#3{%
-  \def\macargdeflist@{}%
-  \def\saveparamlist@{#2}% Need to keep a copy for parameter expansion.
-  \def\paramlist{#2,\nil@}%
-  \def\macroname{#1}%
-  \begingroup
-  \macroargctxt
-  \def\argvaluelist{#3,\nil@}%
-  \def\@tempa{#3}%
-  \ifx\@tempa\empty
-    \setemptyargvalues@
-  \else
-    \getargvals@@
-  \fi
-}
-
-% 
-\def\getargvals@@{%
-  \ifx\paramlist\nilm@
-      % Some sanity check needed here that \argvaluelist is also empty.
-      \ifx\argvaluelist\nillm@
-      \else
-        \errhelp = \EMsimple
-        \errmessage{Too many arguments in macro `\macroname'!}%
-      \fi
-      \let\next\macargexpandinbody@
-  \else
-    \ifx\argvaluelist\nillm@
-       % No more arguments values passed to macro.  Set remaining named-arg
-       % macros to empty.
-       \let\next\setemptyargvalues@
-    \else
-      % pop current arg name into \@tempb
-      \def\@tempa##1{\pop@{\@tempb}{\paramlist}##1\endargs@}%
-      \expandafter\@tempa\expandafter{\paramlist}%
-       % pop current argument value into \@tempc
-      \def\@tempa##1{\longpop@{\@tempc}{\argvaluelist}##1\endargs@}%
-      \expandafter\@tempa\expandafter{\argvaluelist}%
-       % Here \@tempb is the current arg name and \@tempc is the current arg value.
-       % First place the new argument macro definition into \@tempd
-       \expandafter\macname\expandafter{\@tempc}%
-       \expandafter\let\csname macarg.\@tempb\endcsname\relax
-       \expandafter\def\expandafter\@tempe\expandafter{%
-         \csname macarg.\@tempb\endcsname}%
-       \edef\@tempd{\long\def\@tempe{\the\macname}}%
-       \push@\@tempd\macargdeflist@
-       \let\next\getargvals@@
-    \fi
-  \fi
-  \next
-}
-
-\def\push@#1#2{%
-  \expandafter\expandafter\expandafter\def
-  \expandafter\expandafter\expandafter#2%
-  \expandafter\expandafter\expandafter{%
-  \expandafter#1#2}%
-}
-
-% Replace arguments by their values in the macro body, and place the result
-% in macro \@tempa
-\def\macvalstoargs@{%
-  %  To do this we use the property that token registers that are \the'ed
-  % within an \edef  expand only once. So we are going to place all argument
-  % values into respective token registers.
-  %
-  % First we save the token context, and initialize argument numbering.
-  \begingroup
-    \paramno0\relax
-    % Then, for each argument number #N, we place the corresponding argument
-    % value into a new token list register \toks#N
-    \expandafter\putargsintokens@\saveparamlist@,;,%
-    % Then, we expand the body so that argument are replaced by their
-    % values. The trick for values not to be expanded themselves is that they
-    % are within tokens and that tokens expand only once in an \edef .
-    \edef\@tempc{\csname mac.\macroname .body\endcsname}%
-    % Now we restore the token stack pointer to free the token list registers
-    % which we have used, but we make sure that expanded body is saved after
-    % group.
-    \expandafter
-  \endgroup
-  \expandafter\def\expandafter\@tempa\expandafter{\@tempc}%
-  }
-
-\def\macargexpandinbody@{% 
-  %% Define the named-macro outside of this group and then close this group. 
-  \expandafter
-  \endgroup
-  \macargdeflist@
-  % First the replace in body the macro arguments by their values, the result
-  % is in \@tempa .
-  \macvalstoargs@
-  % Then we point at the \norecurse or \gobble (for recursive) macro value
-  % with \@tempb .
-  \expandafter\let\expandafter\@tempb\csname mac.\macroname .recurse\endcsname
-  % Depending on whether it is recursive or not, we need some tailing
-  % \egroup .
-  \ifx\@tempb\gobble
-     \let\@tempc\relax
-  \else
-     \let\@tempc\egroup
-  \fi
-  % And now we do the real job:
-  \edef\@tempd{\noexpand\@tempb{\macroname}\noexpand\scanmacro{\@tempa}\@tempc}%
-  \@tempd
-}
-
-\def\putargsintokens@#1,{%
-  \if#1;\let\next\relax
-  \else
-    \let\next\putargsintokens@
-    % First we allocate the new token list register, and give it a temporary
-    % alias \@tempb .
-    \toksdef\@tempb\the\paramno
-    % Then we place the argument value into that token list register.
-    \expandafter\let\expandafter\@tempa\csname macarg.#1\endcsname
-    \expandafter\@tempb\expandafter{\@tempa}%
-    \advance\paramno by 1\relax
-  \fi
-  \next
-}
-
-% Save the token stack pointer into macro #1
-\def\texisavetoksstackpoint#1{\edef#1{\the\@cclvi}}
-% Restore the token stack pointer from number in macro #1
-\def\texirestoretoksstackpoint#1{\expandafter\mathchardef\expandafter\@cclvi#1\relax}
-% newtoks that can be used non \outer .
-\def\texinonouternewtoks{\alloc@ 5\toks \toksdef \@cclvi}
-
-% Tailing missing arguments are set to empty
-\def\setemptyargvalues@{%
-  \ifx\paramlist\nilm@
-    \let\next\macargexpandinbody@
-  \else
-    \expandafter\setemptyargvaluesparser@\paramlist\endargs@
-    \let\next\setemptyargvalues@
-  \fi
-  \next
-}
-
-\def\setemptyargvaluesparser@#1,#2\endargs@{%
-  \expandafter\def\expandafter\@tempa\expandafter{%
-    \expandafter\def\csname macarg.#1\endcsname{}}%
-  \push@\@tempa\macargdeflist@
-  \def\paramlist{#2}%
-}
-
-% #1 is the element target macro
-% #2 is the list macro
-% #3,#4\endargs@ is the list value
-\def\pop@#1#2#3,#4\endargs@{%
-   \def#1{#3}%
-   \def#2{#4}%
-}
-\long\def\longpop@#1#2#3,#4\endargs@{%
-   \long\def#1{#3}%
-   \long\def#2{#4}%
-}
-
-% This defines a Texinfo @macro. There are eight cases: recursive and
-% nonrecursive macros of zero, one, up to nine, and many arguments.
-% Much magic with \expandafter here.
-% \xdef is used so that macro definitions will survive the file
-% they're defined in; @include reads the file inside a group.
-%
-\def\defmacro{%
-  \let\hash=##% convert placeholders to macro parameter chars
-  \ifrecursive
-    \ifcase\paramno
-    % 0
-      \expandafter\xdef\csname\the\macname\endcsname{%
-        \noexpand\scanmacro{\temp}}%
-    \or % 1
-      \expandafter\xdef\csname\the\macname\endcsname{%
-         \bgroup\noexpand\macroargctxt
-         \noexpand\braceorline
-         \expandafter\noexpand\csname\the\macname xxx\endcsname}%
-      \expandafter\xdef\csname\the\macname xxx\endcsname##1{%
-         \egroup\noexpand\scanmacro{\temp}}%
-    \else
-      \ifnum\paramno<10\relax % at most 9
-        \expandafter\xdef\csname\the\macname\endcsname{%
-           \bgroup\noexpand\macroargctxt
-           \noexpand\csname\the\macname xx\endcsname}%
-        \expandafter\xdef\csname\the\macname xx\endcsname##1{%
-            \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
-        \expandafter\expandafter
-        \expandafter\xdef
-        \expandafter\expandafter
-          \csname\the\macname xxx\endcsname
-            \paramlist{\egroup\noexpand\scanmacro{\temp}}%
-      \else % 10 or more
-        \expandafter\xdef\csname\the\macname\endcsname{%
-          \noexpand\getargvals@{\the\macname}{\argl}%
-        }%    
-        \global\expandafter\let\csname mac.\the\macname .body\endcsname\temp
-        \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\gobble
-      \fi
-    \fi
-  \else
-    \ifcase\paramno
-    % 0
-      \expandafter\xdef\csname\the\macname\endcsname{%
-        \noexpand\norecurse{\the\macname}%
-        \noexpand\scanmacro{\temp}\egroup}%
-    \or % 1
-      \expandafter\xdef\csname\the\macname\endcsname{%
-         \bgroup\noexpand\macroargctxt
-         \noexpand\braceorline
-         \expandafter\noexpand\csname\the\macname xxx\endcsname}%
-      \expandafter\xdef\csname\the\macname xxx\endcsname##1{%
-        \egroup
-        \noexpand\norecurse{\the\macname}%
-        \noexpand\scanmacro{\temp}\egroup}%
-    \else % at most 9
-      \ifnum\paramno<10\relax
-        \expandafter\xdef\csname\the\macname\endcsname{%
-           \bgroup\noexpand\macroargctxt
-           \expandafter\noexpand\csname\the\macname xx\endcsname}%
-        \expandafter\xdef\csname\the\macname xx\endcsname##1{%
-            \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
-        \expandafter\expandafter
-        \expandafter\xdef
-        \expandafter\expandafter
-        \csname\the\macname xxx\endcsname
-        \paramlist{%
-            \egroup
-            \noexpand\norecurse{\the\macname}%
-            \noexpand\scanmacro{\temp}\egroup}%
-      \else % 10 or more:
-        \expandafter\xdef\csname\the\macname\endcsname{%
-          \noexpand\getargvals@{\the\macname}{\argl}%
-        }%
-        \global\expandafter\let\csname mac.\the\macname .body\endcsname\temp
-        \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\norecurse
-      \fi
-    \fi
-  \fi}
-
-\catcode `\@\texiatcatcode\relax
-
-\def\norecurse#1{\bgroup\cslet{#1}{macsave.#1}}
-
-% \braceorline decides whether the next nonwhitespace character is a
-% {.  If so it reads up to the closing }, if not, it reads the whole
-% line.  Whatever was read is then fed to the next control sequence
-% as an argument (by \parsebrace or \parsearg).
-% 
-\def\braceorline#1{\let\macnamexxx=#1\futurelet\nchar\braceorlinexxx}
-\def\braceorlinexxx{%
-  \ifx\nchar\bgroup\else
-    \expandafter\parsearg
-  \fi \macnamexxx}
-
-
-% @alias.
-% We need some trickery to remove the optional spaces around the equal
-% sign.  Make them active and then expand them all to nothing.
-%
-\def\alias{\parseargusing\obeyspaces\aliasxxx}
-\def\aliasxxx #1{\aliasyyy#1\relax}
-\def\aliasyyy #1=#2\relax{%
-  {%
-    \expandafter\let\obeyedspace=\empty
-    \addtomacrolist{#1}%
-    \xdef\next{\global\let\makecsname{#1}=\makecsname{#2}}%
-  }%
-  \next
-}
-
-
-\message{cross references,}
-
-\newwrite\auxfile
-\newif\ifhavexrefs    % True if xref values are known.
-\newif\ifwarnedxrefs  % True if we warned once that they aren't known.
-
-% @inforef is relatively simple.
-\def\inforef #1{\inforefzzz #1,,,,**}
-\def\inforefzzz #1,#2,#3,#4**{%
-  \putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}},
-  node \samp{\ignorespaces#1{}}}
-
-% @node's only job in TeX is to define \lastnode, which is used in
-% cross-references.  The @node line might or might not have commas, and
-% might or might not have spaces before the first comma, like:
-% @node foo , bar , ...
-% We don't want such trailing spaces in the node name.
-%
-\parseargdef\node{\checkenv{}\donode #1 ,\finishnodeparse}
-%
-% also remove a trailing comma, in case of something like this:
-% @node Help-Cross,  ,  , Cross-refs
-\def\donode#1 ,#2\finishnodeparse{\dodonode #1,\finishnodeparse}
-\def\dodonode#1,#2\finishnodeparse{\gdef\lastnode{#1}}
-
-\let\nwnode=\node
-\let\lastnode=\empty
-
-% Write a cross-reference definition for the current node.  #1 is the
-% type (Ynumbered, Yappendix, Ynothing).
-%
-\def\donoderef#1{%
-  \ifx\lastnode\empty\else
-    \setref{\lastnode}{#1}%
-    \global\let\lastnode=\empty
-  \fi
-}
-
-% @anchor{NAME} -- define xref target at arbitrary point.
-%
-\newcount\savesfregister
-%
-\def\savesf{\relax \ifhmode \savesfregister=\spacefactor \fi}
-\def\restoresf{\relax \ifhmode \spacefactor=\savesfregister \fi}
-\def\anchor#1{\savesf \setref{#1}{Ynothing}\restoresf \ignorespaces}
-
-% \setref{NAME}{SNT} defines a cross-reference point NAME (a node or an
-% anchor), which consists of three parts:
-% 1) NAME-title - the current sectioning name taken from \lastsection,
-%                 or the anchor name.
-% 2) NAME-snt   - section number and type, passed as the SNT arg, or
-%                 empty for anchors.
-% 3) NAME-pg    - the page number.
-%
-% This is called from \donoderef, \anchor, and \dofloat.  In the case of
-% floats, there is an additional part, which is not written here:
-% 4) NAME-lof   - the text as it should appear in a @listoffloats.
-%
-\def\setref#1#2{%
-  \pdfmkdest{#1}%
-  \iflinks
-    {%
-      \atdummies  % preserve commands, but don't expand them
-      \edef\writexrdef##1##2{%
-       \write\auxfile{@xrdef{#1-% #1 of \setref, expanded by the \edef
-         ##1}{##2}}% these are parameters of \writexrdef
-      }%
-      \toks0 = \expandafter{\lastsection}%
-      \immediate \writexrdef{title}{\the\toks0 }%
-      \immediate \writexrdef{snt}{\csname #2\endcsname}% \Ynumbered etc.
-      \safewhatsit{\writexrdef{pg}{\folio}}% will be written later, at \shipout
-    }%
-  \fi
-}
-
-% @xrefautosectiontitle on|off says whether @section(ing) names are used
-% automatically in xrefs, if the third arg is not explicitly specified.
-% This was provided as a "secret" @set xref-automatic-section-title
-% variable, now it's official.
-% 
-\parseargdef\xrefautomaticsectiontitle{%
-  \def\temp{#1}%
-  \ifx\temp\onword
-    \expandafter\let\csname SETxref-automatic-section-title\endcsname
-      = \empty
-  \else\ifx\temp\offword
-    \expandafter\let\csname SETxref-automatic-section-title\endcsname
-      = \relax
-  \else
-    \errhelp = \EMsimple
-    \errmessage{Unknown @xrefautomaticsectiontitle value `\temp',
-                must be on|off}%
-  \fi\fi
-}
-
-% \f
-% @xref, @pxref, and @ref generate cross-references.  For \xrefX, #1 is
-% the node name, #2 the name of the Info cross-reference, #3 the printed
-% node name, #4 the name of the Info file, #5 the name of the printed
-% manual.  All but the node name can be omitted.
-%
-\def\pxref#1{\putwordsee{} \xrefX[#1,,,,,,,]}
-\def\xref#1{\putwordSee{} \xrefX[#1,,,,,,,]}
-\def\ref#1{\xrefX[#1,,,,,,,]}
-%
-\newbox\toprefbox
-\newbox\printedrefnamebox
-\newbox\infofilenamebox
-\newbox\printedmanualbox
-%
-\def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup
-  \unsepspaces
-  %
-  % Get args without leading/trailing spaces.
-  \def\printedrefname{\ignorespaces #3}%
-  \setbox\printedrefnamebox = \hbox{\printedrefname\unskip}%
-  %
-  \def\infofilename{\ignorespaces #4}%
-  \setbox\infofilenamebox = \hbox{\infofilename\unskip}%
-  %
-  \def\printedmanual{\ignorespaces #5}%
-  \setbox\printedmanualbox  = \hbox{\printedmanual\unskip}%
-  %
-  % If the printed reference name (arg #3) was not explicitly given in
-  % the @xref, figure out what we want to use.
-  \ifdim \wd\printedrefnamebox = 0pt
-    % No printed node name was explicitly given.
-    \expandafter\ifx\csname SETxref-automatic-section-title\endcsname \relax
-      % Not auto section-title: use node name inside the square brackets.
-      \def\printedrefname{\ignorespaces #1}%
-    \else
-      % Auto section-title: use chapter/section title inside
-      % the square brackets if we have it.
-      \ifdim \wd\printedmanualbox > 0pt
-        % It is in another manual, so we don't have it; use node name.
-        \def\printedrefname{\ignorespaces #1}%
-      \else
-        \ifhavexrefs
-          % We (should) know the real title if we have the xref values.
-          \def\printedrefname{\refx{#1-title}{}}%
-        \else
-          % Otherwise just copy the Info node name.
-          \def\printedrefname{\ignorespaces #1}%
-        \fi%
-      \fi
-    \fi
-  \fi
-  %
-  % Make link in pdf output.
-  \ifpdf
-    {\indexnofonts
-     \turnoffactive
-     \makevalueexpandable
-     % This expands tokens, so do it after making catcode changes, so _
-     % etc. don't get their TeX definitions.  This ignores all spaces in
-     % #4, including (wrongly) those in the middle of the filename.
-     \getfilename{#4}%
-     %
-     % This (wrongly) does not take account of leading or trailing
-     % spaces in #1, which should be ignored.
-     \edef\pdfxrefdest{#1}%
-     \ifx\pdfxrefdest\empty
-       \def\pdfxrefdest{Top}% no empty targets
-     \else
-       \txiescapepdf\pdfxrefdest  % escape PDF special chars
-     \fi
-     %
-     \leavevmode
-     \startlink attr{/Border [0 0 0]}%
-     \ifnum\filenamelength>0
-       goto file{\the\filename.pdf} name{\pdfxrefdest}%
-     \else
-       goto name{\pdfmkpgn{\pdfxrefdest}}%
-     \fi
-    }%
-    \setcolor{\linkcolor}%
-  \fi
-  %
-  % Float references are printed completely differently: "Figure 1.2"
-  % instead of "[somenode], p.3".  We distinguish them by the
-  % LABEL-title being set to a magic string.
-  {%
-    % Have to otherify everything special to allow the \csname to
-    % include an _ in the xref name, etc.
-    \indexnofonts
-    \turnoffactive
-    \expandafter\global\expandafter\let\expandafter\Xthisreftitle
-      \csname XR#1-title\endcsname
-  }%
-  \iffloat\Xthisreftitle
-    % If the user specified the print name (third arg) to the ref,
-    % print it instead of our usual "Figure 1.2".
-    \ifdim\wd\printedrefnamebox = 0pt
-      \refx{#1-snt}{}%
-    \else
-      \printedrefname
-    \fi
-    %
-    % If the user also gave the printed manual name (fifth arg), append
-    % "in MANUALNAME".
-    \ifdim \wd\printedmanualbox > 0pt
-      \space \putwordin{} \cite{\printedmanual}%
-    \fi
-  \else
-    % node/anchor (non-float) references.
-    % 
-    % If we use \unhbox to print the node names, TeX does not insert
-    % empty discretionaries after hyphens, which means that it will not
-    % find a line break at a hyphen in a node names.  Since some manuals
-    % are best written with fairly long node names, containing hyphens,
-    % this is a loss.  Therefore, we give the text of the node name
-    % again, so it is as if TeX is seeing it for the first time.
-    % 
-    \ifdim \wd\printedmanualbox > 0pt
-      % Cross-manual reference with a printed manual name.
-      % 
-      \crossmanualxref{\cite{\printedmanual\unskip}}%
-    %
-    \else\ifdim \wd\infofilenamebox > 0pt
-      % Cross-manual reference with only an info filename (arg 4), no
-      % printed manual name (arg 5).  This is essentially the same as
-      % the case above; we output the filename, since we have nothing else.
-      % 
-      \crossmanualxref{\code{\infofilename\unskip}}%
-    %
-    \else
-      % Reference within this manual.
-      %
-      % _ (for example) has to be the character _ for the purposes of the
-      % control sequence corresponding to the node, but it has to expand
-      % into the usual \leavevmode...\vrule stuff for purposes of
-      % printing. So we \turnoffactive for the \refx-snt, back on for the
-      % printing, back off for the \refx-pg.
-      {\turnoffactive
-       % Only output a following space if the -snt ref is nonempty; for
-       % @unnumbered and @anchor, it won't be.
-       \setbox2 = \hbox{\ignorespaces \refx{#1-snt}{}}%
-       \ifdim \wd2 > 0pt \refx{#1-snt}\space\fi
-      }%
-      % output the `[mynode]' via the macro below so it can be overridden.
-      \xrefprintnodename\printedrefname
-      %
-      % But we always want a comma and a space:
-      ,\space
-      %
-      % output the `page 3'.
-      \turnoffactive \putwordpage\tie\refx{#1-pg}{}%
-    \fi\fi
-  \fi
-  \endlink
-\endgroup}
-
-% Output a cross-manual xref to #1.  Used just above (twice).
-% 
-% Only include the text "Section ``foo'' in" if the foo is neither
-% missing or Top.  Thus, @xref{,,,foo,The Foo Manual} outputs simply
-% "see The Foo Manual", the idea being to refer to the whole manual.
-% 
-% But, this being TeX, we can't easily compare our node name against the
-% string "Top" while ignoring the possible spaces before and after in
-% the input.  By adding the arbitrary 7sp below, we make it much less
-% likely that a real node name would have the same width as "Top" (e.g.,
-% in a monospaced font).  Hopefully it will never happen in practice.
-% 
-% For the same basic reason, we retypeset the "Top" at every
-% reference, since the current font is indeterminate.
-% 
-\def\crossmanualxref#1{%
-  \setbox\toprefbox = \hbox{Top\kern7sp}%
-  \setbox2 = \hbox{\ignorespaces \printedrefname \unskip \kern7sp}%
-  \ifdim \wd2 > 7sp  % nonempty?
-    \ifdim \wd2 = \wd\toprefbox \else  % same as Top?
-      \putwordSection{} ``\printedrefname'' \putwordin{}\space
-    \fi
-  \fi
-  #1%
-}
-
-% This macro is called from \xrefX for the `[nodename]' part of xref
-% output.  It's a separate macro only so it can be changed more easily,
-% since square brackets don't work well in some documents.  Particularly
-% one that Bob is working on :).
-%
-\def\xrefprintnodename#1{[#1]}
-
-% Things referred to by \setref.
-%
-\def\Ynothing{}
-\def\Yomitfromtoc{}
-\def\Ynumbered{%
-  \ifnum\secno=0
-    \putwordChapter@tie \the\chapno
-  \else \ifnum\subsecno=0
-    \putwordSection@tie \the\chapno.\the\secno
-  \else \ifnum\subsubsecno=0
-    \putwordSection@tie \the\chapno.\the\secno.\the\subsecno
-  \else
-    \putwordSection@tie \the\chapno.\the\secno.\the\subsecno.\the\subsubsecno
-  \fi\fi\fi
-}
-\def\Yappendix{%
-  \ifnum\secno=0
-     \putwordAppendix@tie @char\the\appendixno{}%
-  \else \ifnum\subsecno=0
-     \putwordSection@tie @char\the\appendixno.\the\secno
-  \else \ifnum\subsubsecno=0
-    \putwordSection@tie @char\the\appendixno.\the\secno.\the\subsecno
-  \else
-    \putwordSection@tie
-      @char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno
-  \fi\fi\fi
-}
-
-% Define \refx{NAME}{SUFFIX} to reference a cross-reference string named NAME.
-% If its value is nonempty, SUFFIX is output afterward.
-%
-\def\refx#1#2{%
-  {%
-    \indexnofonts
-    \otherbackslash
-    \expandafter\global\expandafter\let\expandafter\thisrefX
-      \csname XR#1\endcsname
-  }%
-  \ifx\thisrefX\relax
-    % If not defined, say something at least.
-    \angleleft un\-de\-fined\angleright
-    \iflinks
-      \ifhavexrefs
-        {\toks0 = {#1}% avoid expansion of possibly-complex value
-         \message{\linenumber Undefined cross reference `\the\toks0'.}}%
-      \else
-        \ifwarnedxrefs\else
-          \global\warnedxrefstrue
-          \message{Cross reference values unknown; you must run TeX again.}%
-        \fi
-      \fi
-    \fi
-  \else
-    % It's defined, so just use it.
-    \thisrefX
-  \fi
-  #2% Output the suffix in any case.
-}
-
-% This is the macro invoked by entries in the aux file.  Usually it's
-% just a \def (we prepend XR to the control sequence name to avoid
-% collisions).  But if this is a float type, we have more work to do.
-%
-\def\xrdef#1#2{%
-  {% The node name might contain 8-bit characters, which in our current
-   % implementation are changed to commands like @'e.  Don't let these
-   % mess up the control sequence name.
-    \indexnofonts
-    \turnoffactive
-    \xdef\safexrefname{#1}%
-  }%
-  %
-  \expandafter\gdef\csname XR\safexrefname\endcsname{#2}% remember this xref
-  %
-  % Was that xref control sequence that we just defined for a float?
-  \expandafter\iffloat\csname XR\safexrefname\endcsname
-    % it was a float, and we have the (safe) float type in \iffloattype.
-    \expandafter\let\expandafter\floatlist
-      \csname floatlist\iffloattype\endcsname
-    %
-    % Is this the first time we've seen this float type?
-    \expandafter\ifx\floatlist\relax
-      \toks0 = {\do}% yes, so just \do
-    \else
-      % had it before, so preserve previous elements in list.
-      \toks0 = \expandafter{\floatlist\do}%
-    \fi
-    %
-    % Remember this xref in the control sequence \floatlistFLOATTYPE,
-    % for later use in \listoffloats.
-    \expandafter\xdef\csname floatlist\iffloattype\endcsname{\the\toks0
-      {\safexrefname}}%
-  \fi
-}
-
-% Read the last existing aux file, if any.  No error if none exists.
-%
-\def\tryauxfile{%
-  \openin 1 \jobname.aux
-  \ifeof 1 \else
-    \readdatafile{aux}%
-    \global\havexrefstrue
-  \fi
-  \closein 1
-}
-
-\def\setupdatafile{%
-  \catcode`\^^@=\other
-  \catcode`\^^A=\other
-  \catcode`\^^B=\other
-  \catcode`\^^C=\other
-  \catcode`\^^D=\other
-  \catcode`\^^E=\other
-  \catcode`\^^F=\other
-  \catcode`\^^G=\other
-  \catcode`\^^H=\other
-  \catcode`\^^K=\other
-  \catcode`\^^L=\other
-  \catcode`\^^N=\other
-  \catcode`\^^P=\other
-  \catcode`\^^Q=\other
-  \catcode`\^^R=\other
-  \catcode`\^^S=\other
-  \catcode`\^^T=\other
-  \catcode`\^^U=\other
-  \catcode`\^^V=\other
-  \catcode`\^^W=\other
-  \catcode`\^^X=\other
-  \catcode`\^^Z=\other
-  \catcode`\^^[=\other
-  \catcode`\^^\=\other
-  \catcode`\^^]=\other
-  \catcode`\^^^=\other
-  \catcode`\^^_=\other
-  % It was suggested to set the catcode of ^ to 7, which would allow ^^e4 etc.
-  % in xref tags, i.e., node names.  But since ^^e4 notation isn't
-  % supported in the main text, it doesn't seem desirable.  Furthermore,
-  % that is not enough: for node names that actually contain a ^
-  % character, we would end up writing a line like this: 'xrdef {'hat
-  % b-title}{'hat b} and \xrdef does a \csname...\endcsname on the first
-  % argument, and \hat is not an expandable control sequence.  It could
-  % all be worked out, but why?  Either we support ^^ or we don't.
-  %
-  % The other change necessary for this was to define \auxhat:
-  % \def\auxhat{\def^{'hat }}% extra space so ok if followed by letter
-  % and then to call \auxhat in \setq.
-  %
-  \catcode`\^=\other
-  %
-  % Special characters.  Should be turned off anyway, but...
-  \catcode`\~=\other
-  \catcode`\[=\other
-  \catcode`\]=\other
-  \catcode`\"=\other
-  \catcode`\_=\other
-  \catcode`\|=\other
-  \catcode`\<=\other
-  \catcode`\>=\other
-  \catcode`\$=\other
-  \catcode`\#=\other
-  \catcode`\&=\other
-  \catcode`\%=\other
-  \catcode`+=\other % avoid \+ for paranoia even though we've turned it off
-  %
-  % This is to support \ in node names and titles, since the \
-  % characters end up in a \csname.  It's easier than
-  % leaving it active and making its active definition an actual \
-  % character.  What I don't understand is why it works in the *value*
-  % of the xrdef.  Seems like it should be a catcode12 \, and that
-  % should not typeset properly.  But it works, so I'm moving on for
-  % now.  --karl, 15jan04.
-  \catcode`\\=\other
-  %
-  % Make the characters 128-255 be printing characters.
-  {%
-    \count1=128
-    \def\loop{%
-      \catcode\count1=\other
-      \advance\count1 by 1
-      \ifnum \count1<256 \loop \fi
-    }%
-  }%
-  %
-  % @ is our escape character in .aux files, and we need braces.
-  \catcode`\{=1
-  \catcode`\}=2
-  \catcode`\@=0
-}
-
-\def\readdatafile#1{%
-\begingroup
-  \setupdatafile
-  \input\jobname.#1
-\endgroup}
-
-
-\message{insertions,}
-% including footnotes.
-
-\newcount \footnoteno
-
-% The trailing space in the following definition for supereject is
-% vital for proper filling; pages come out unaligned when you do a
-% pagealignmacro call if that space before the closing brace is
-% removed. (Generally, numeric constants should always be followed by a
-% space to prevent strange expansion errors.)
-\def\supereject{\par\penalty -20000\footnoteno =0 }
-
-% @footnotestyle is meaningful for Info output only.
-\let\footnotestyle=\comment
-
-{\catcode `\@=11
-%
-% Auto-number footnotes.  Otherwise like plain.
-\gdef\footnote{%
-  \let\indent=\ptexindent
-  \let\noindent=\ptexnoindent
-  %
-  \global\advance\footnoteno by \@ne
-  \edef\thisfootno{$^{\the\footnoteno}$}%
-  %
-  % In case the footnote comes at the end of a sentence, preserve the
-  % extra spacing after we do the footnote number.
-  \let\@sf\empty
-  \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\ptexslash\fi
-  %
-  % Remove inadvertent blank space before typesetting the footnote number.
-  \unskip
-  \thisfootno\@sf
-  \dofootnote
-}%
-
-% Don't bother with the trickery in plain.tex to not require the
-% footnote text as a parameter.  Our footnotes don't need to be so general.
-%
-% Oh yes, they do; otherwise, @ifset (and anything else that uses
-% \parseargline) fails inside footnotes because the tokens are fixed when
-% the footnote is read.  --karl, 16nov96.
-%
-\gdef\dofootnote{%
-  \insert\footins\bgroup
-  %
-  % Nested footnotes are not supported in TeX, that would take a lot
-  % more work.  (\startsavinginserts does not suffice.)
-  \let\footnote=\errfootnote
-  %
-  % We want to typeset this text as a normal paragraph, even if the
-  % footnote reference occurs in (for example) a display environment.
-  % So reset some parameters.
-  \hsize=\pagewidth
-  \interlinepenalty\interfootnotelinepenalty
-  \splittopskip\ht\strutbox % top baseline for broken footnotes
-  \splitmaxdepth\dp\strutbox
-  \floatingpenalty\@MM
-  \leftskip\z@skip
-  \rightskip\z@skip
-  \spaceskip\z@skip
-  \xspaceskip\z@skip
-  \parindent\defaultparindent
-  %
-  \smallfonts \rm
-  %
-  % Because we use hanging indentation in footnotes, a @noindent appears
-  % to exdent this text, so make it be a no-op.  makeinfo does not use
-  % hanging indentation so @noindent can still be needed within footnote
-  % text after an @example or the like (not that this is good style).
-  \let\noindent = \relax
-  %
-  % Hang the footnote text off the number.  Use \everypar in case the
-  % footnote extends for more than one paragraph.
-  \everypar = {\hang}%
-  \textindent{\thisfootno}%
-  %
-  % Don't crash into the line above the footnote text.  Since this
-  % expands into a box, it must come within the paragraph, lest it
-  % provide a place where TeX can split the footnote.
-  \footstrut
-  %
-  % Invoke rest of plain TeX footnote routine.
-  \futurelet\next\fo@t
-}
-}%end \catcode `\@=11
-
-\def\errfootnote{%
-  \errhelp=\EMsimple
-  \errmessage{Nested footnotes not supported in texinfo.tex,
-    even though they work in makeinfo; sorry}
-}
-
-% In case a @footnote appears in a vbox, save the footnote text and create
-% the real \insert just after the vbox finished.  Otherwise, the insertion
-% would be lost.
-% Similarly, if a @footnote appears inside an alignment, save the footnote
-% text to a box and make the \insert when a row of the table is finished.
-% And the same can be done for other insert classes.  --kasal, 16nov03.
-%
-% Replace the \insert primitive by a cheating macro.
-% Deeper inside, just make sure that the saved insertions are not spilled
-% out prematurely.
-%
-\def\startsavinginserts{%
-  \ifx \insert\ptexinsert
-    \let\insert\saveinsert
-  \else
-    \let\checkinserts\relax
-  \fi
-}
-
-% This \insert replacement works for both \insert\footins{foo} and
-% \insert\footins\bgroup foo\egroup, but it doesn't work for \insert27{foo}.
-%
-\def\saveinsert#1{%
-  \edef\next{\noexpand\savetobox \makeSAVEname#1}%
-  \afterassignment\next
-  % swallow the left brace
-  \let\temp =
-}
-\def\makeSAVEname#1{\makecsname{SAVE\expandafter\gobble\string#1}}
-\def\savetobox#1{\global\setbox#1 = \vbox\bgroup \unvbox#1}
-
-\def\checksaveins#1{\ifvoid#1\else \placesaveins#1\fi}
-
-\def\placesaveins#1{%
-  \ptexinsert \csname\expandafter\gobblesave\string#1\endcsname
-    {\box#1}%
-}
-
-% eat @SAVE -- beware, all of them have catcode \other:
-{
-  \def\dospecials{\do S\do A\do V\do E} \uncatcodespecials  %  ;-)
-  \gdef\gobblesave @SAVE{}
-}
-
-% initialization:
-\def\newsaveins #1{%
-  \edef\next{\noexpand\newsaveinsX \makeSAVEname#1}%
-  \next
-}
-\def\newsaveinsX #1{%
-  \csname newbox\endcsname #1%
-  \expandafter\def\expandafter\checkinserts\expandafter{\checkinserts
-    \checksaveins #1}%
-}
-
-% initialize:
-\let\checkinserts\empty
-\newsaveins\footins
-\newsaveins\margin
-
-
-% @image.  We use the macros from epsf.tex to support this.
-% If epsf.tex is not installed and @image is used, we complain.
-%
-% Check for and read epsf.tex up front.  If we read it only at @image
-% time, we might be inside a group, and then its definitions would get
-% undone and the next image would fail.
-\openin 1 = epsf.tex
-\ifeof 1 \else
-  % Do not bother showing banner with epsf.tex v2.7k (available in
-  % doc/epsf.tex and on ctan).
-  \def\epsfannounce{\toks0 = }%
-  \input epsf.tex
-\fi
-\closein 1
-%
-% We will only complain once about lack of epsf.tex.
-\newif\ifwarnednoepsf
-\newhelp\noepsfhelp{epsf.tex must be installed for images to
-  work.  It is also included in the Texinfo distribution, or you can get
-  it from ftp://tug.org/tex/epsf.tex.}
-%
-\def\image#1{%
-  \ifx\epsfbox\thisisundefined
-    \ifwarnednoepsf \else
-      \errhelp = \noepsfhelp
-      \errmessage{epsf.tex not found, images will be ignored}%
-      \global\warnednoepsftrue
-    \fi
-  \else
-    \imagexxx #1,,,,,\finish
-  \fi
-}
-%
-% Arguments to @image:
-% #1 is (mandatory) image filename; we tack on .eps extension.
-% #2 is (optional) width, #3 is (optional) height.
-% #4 is (ignored optional) html alt text.
-% #5 is (ignored optional) extension.
-% #6 is just the usual extra ignored arg for parsing stuff.
-\newif\ifimagevmode
-\def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup
-  \catcode`\^^M = 5     % in case we're inside an example
-  \normalturnoffactive  % allow _ et al. in names
-  % If the image is by itself, center it.
-  \ifvmode
-    \imagevmodetrue
-  \else \ifx\centersub\centerV
-    % for @center @image, we need a vbox so we can have our vertical space
-    \imagevmodetrue
-    \vbox\bgroup % vbox has better behavior than vtop herev
-  \fi\fi
-  %
-  \ifimagevmode
-    \nobreak\medskip
-    % Usually we'll have text after the image which will insert
-    % \parskip glue, so insert it here too to equalize the space
-    % above and below.
-    \nobreak\vskip\parskip
-    \nobreak
-  \fi
-  %
-  % Leave vertical mode so that indentation from an enclosing
-  %  environment such as @quotation is respected.
-  % However, if we're at the top level, we don't want the
-  %  normal paragraph indentation.
-  % On the other hand, if we are in the case of @center @image, we don't
-  %  want to start a paragraph, which will create a hsize-width box and
-  %  eradicate the centering.
-  \ifx\centersub\centerV\else \noindent \fi
-  %
-  % Output the image.
-  \ifpdf
-    \dopdfimage{#1}{#2}{#3}%
-  \else
-    % \epsfbox itself resets \epsf?size at each figure.
-    \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi
-    \setbox0 = \hbox{\ignorespaces #3}\ifdim\wd0 > 0pt \epsfysize=#3\relax \fi
-    \epsfbox{#1.eps}%
-  \fi
-  %
-  \ifimagevmode
-    \medskip  % space after a standalone image
-  \fi  
-  \ifx\centersub\centerV \egroup \fi
-\endgroup}
-
-
-% @float FLOATTYPE,LABEL,LOC ... @end float for displayed figures, tables,
-% etc.  We don't actually implement floating yet, we always include the
-% float "here".  But it seemed the best name for the future.
-%
-\envparseargdef\float{\eatcommaspace\eatcommaspace\dofloat#1, , ,\finish}
-
-% There may be a space before second and/or third parameter; delete it.
-\def\eatcommaspace#1, {#1,}
-
-% #1 is the optional FLOATTYPE, the text label for this float, typically
-% "Figure", "Table", "Example", etc.  Can't contain commas.  If omitted,
-% this float will not be numbered and cannot be referred to.
-%
-% #2 is the optional xref label.  Also must be present for the float to
-% be referable.
-%
-% #3 is the optional positioning argument; for now, it is ignored.  It
-% will somehow specify the positions allowed to float to (here, top, bottom).
-%
-% We keep a separate counter for each FLOATTYPE, which we reset at each
-% chapter-level command.
-\let\resetallfloatnos=\empty
-%
-\def\dofloat#1,#2,#3,#4\finish{%
-  \let\thiscaption=\empty
-  \let\thisshortcaption=\empty
-  %
-  % don't lose footnotes inside @float.
-  %
-  % BEWARE: when the floats start float, we have to issue warning whenever an
-  % insert appears inside a float which could possibly float. --kasal, 26may04
-  %
-  \startsavinginserts
-  %
-  % We can't be used inside a paragraph.
-  \par
-  %
-  \vtop\bgroup
-    \def\floattype{#1}%
-    \def\floatlabel{#2}%
-    \def\floatloc{#3}% we do nothing with this yet.
-    %
-    \ifx\floattype\empty
-      \let\safefloattype=\empty
-    \else
-      {%
-        % the floattype might have accents or other special characters,
-        % but we need to use it in a control sequence name.
-        \indexnofonts
-        \turnoffactive
-        \xdef\safefloattype{\floattype}%
-      }%
-    \fi
-    %
-    % If label is given but no type, we handle that as the empty type.
-    \ifx\floatlabel\empty \else
-      % We want each FLOATTYPE to be numbered separately (Figure 1,
-      % Table 1, Figure 2, ...).  (And if no label, no number.)
-      %
-      \expandafter\getfloatno\csname\safefloattype floatno\endcsname
-      \global\advance\floatno by 1
-      %
-      {%
-        % This magic value for \lastsection is output by \setref as the
-        % XREFLABEL-title value.  \xrefX uses it to distinguish float
-        % labels (which have a completely different output format) from
-        % node and anchor labels.  And \xrdef uses it to construct the
-        % lists of floats.
-        %
-        \edef\lastsection{\floatmagic=\safefloattype}%
-        \setref{\floatlabel}{Yfloat}%
-      }%
-    \fi
-    %
-    % start with \parskip glue, I guess.
-    \vskip\parskip
-    %
-    % Don't suppress indentation if a float happens to start a section.
-    \restorefirstparagraphindent
-}
-
-% we have these possibilities:
-% @float Foo,lbl & @caption{Cap}: Foo 1.1: Cap
-% @float Foo,lbl & no caption:    Foo 1.1
-% @float Foo & @caption{Cap}:     Foo: Cap
-% @float Foo & no caption:        Foo
-% @float ,lbl & Caption{Cap}:     1.1: Cap
-% @float ,lbl & no caption:       1.1
-% @float & @caption{Cap}:         Cap
-% @float & no caption:
-%
-\def\Efloat{%
-    \let\floatident = \empty
-    %
-    % In all cases, if we have a float type, it comes first.
-    \ifx\floattype\empty \else \def\floatident{\floattype}\fi
-    %
-    % If we have an xref label, the number comes next.
-    \ifx\floatlabel\empty \else
-      \ifx\floattype\empty \else % if also had float type, need tie first.
-        \appendtomacro\floatident{\tie}%
-      \fi
-      % the number.
-      \appendtomacro\floatident{\chaplevelprefix\the\floatno}%
-    \fi
-    %
-    % Start the printed caption with what we've constructed in
-    % \floatident, but keep it separate; we need \floatident again.
-    \let\captionline = \floatident
-    %
-    \ifx\thiscaption\empty \else
-      \ifx\floatident\empty \else
-       \appendtomacro\captionline{: }% had ident, so need a colon between
-      \fi
-      %
-      % caption text.
-      \appendtomacro\captionline{\scanexp\thiscaption}%
-    \fi
-    %
-    % If we have anything to print, print it, with space before.
-    % Eventually this needs to become an \insert.
-    \ifx\captionline\empty \else
-      \vskip.5\parskip
-      \captionline
-      %
-      % Space below caption.
-      \vskip\parskip
-    \fi
-    %
-    % If have an xref label, write the list of floats info.  Do this
-    % after the caption, to avoid chance of it being a breakpoint.
-    \ifx\floatlabel\empty \else
-      % Write the text that goes in the lof to the aux file as
-      % \floatlabel-lof.  Besides \floatident, we include the short
-      % caption if specified, else the full caption if specified, else nothing.
-      {%
-        \atdummies
-        %
-        % since we read the caption text in the macro world, where ^^M
-        % is turned into a normal character, we have to scan it back, so
-        % we don't write the literal three characters "^^M" into the aux file.
-       \scanexp{%
-         \xdef\noexpand\gtemp{%
-           \ifx\thisshortcaption\empty
-             \thiscaption
-           \else
-             \thisshortcaption
-           \fi
-         }%
-       }%
-        \immediate\write\auxfile{@xrdef{\floatlabel-lof}{\floatident
-         \ifx\gtemp\empty \else : \gtemp \fi}}%
-      }%
-    \fi
-  \egroup  % end of \vtop
-  %
-  % place the captured inserts
-  %
-  % BEWARE: when the floats start floating, we have to issue warning
-  % whenever an insert appears inside a float which could possibly
-  % float. --kasal, 26may04
-  %
-  \checkinserts
-}
-
-% Append the tokens #2 to the definition of macro #1, not expanding either.
-%
-\def\appendtomacro#1#2{%
-  \expandafter\def\expandafter#1\expandafter{#1#2}%
-}
-
-% @caption, @shortcaption
-%
-\def\caption{\docaption\thiscaption}
-\def\shortcaption{\docaption\thisshortcaption}
-\def\docaption{\checkenv\float \bgroup\scanargctxt\defcaption}
-\def\defcaption#1#2{\egroup \def#1{#2}}
-
-% The parameter is the control sequence identifying the counter we are
-% going to use.  Create it if it doesn't exist and assign it to \floatno.
-\def\getfloatno#1{%
-  \ifx#1\relax
-      % Haven't seen this figure type before.
-      \csname newcount\endcsname #1%
-      %
-      % Remember to reset this floatno at the next chap.
-      \expandafter\gdef\expandafter\resetallfloatnos
-        \expandafter{\resetallfloatnos #1=0 }%
-  \fi
-  \let\floatno#1%
-}
-
-% \setref calls this to get the XREFLABEL-snt value.  We want an @xref
-% to the FLOATLABEL to expand to "Figure 3.1".  We call \setref when we
-% first read the @float command.
-%
-\def\Yfloat{\floattype@tie \chaplevelprefix\the\floatno}%
-
-% Magic string used for the XREFLABEL-title value, so \xrefX can
-% distinguish floats from other xref types.
-\def\floatmagic{!!float!!}
-
-% #1 is the control sequence we are passed; we expand into a conditional
-% which is true if #1 represents a float ref.  That is, the magic
-% \lastsection value which we \setref above.
-%
-\def\iffloat#1{\expandafter\doiffloat#1==\finish}
-%
-% #1 is (maybe) the \floatmagic string.  If so, #2 will be the
-% (safe) float type for this float.  We set \iffloattype to #2.
-%
-\def\doiffloat#1=#2=#3\finish{%
-  \def\temp{#1}%
-  \def\iffloattype{#2}%
-  \ifx\temp\floatmagic
-}
-
-% @listoffloats FLOATTYPE - print a list of floats like a table of contents.
-%
-\parseargdef\listoffloats{%
-  \def\floattype{#1}% floattype
-  {%
-    % the floattype might have accents or other special characters,
-    % but we need to use it in a control sequence name.
-    \indexnofonts
-    \turnoffactive
-    \xdef\safefloattype{\floattype}%
-  }%
-  %
-  % \xrdef saves the floats as a \do-list in \floatlistSAFEFLOATTYPE.
-  \expandafter\ifx\csname floatlist\safefloattype\endcsname \relax
-    \ifhavexrefs
-      % if the user said @listoffloats foo but never @float foo.
-      \message{\linenumber No `\safefloattype' floats to list.}%
-    \fi
-  \else
-    \begingroup
-      \leftskip=\tocindent  % indent these entries like a toc
-      \let\do=\listoffloatsdo
-      \csname floatlist\safefloattype\endcsname
-    \endgroup
-  \fi
-}
-
-% This is called on each entry in a list of floats.  We're passed the
-% xref label, in the form LABEL-title, which is how we save it in the
-% aux file.  We strip off the -title and look up \XRLABEL-lof, which
-% has the text we're supposed to typeset here.
-%
-% Figures without xref labels will not be included in the list (since
-% they won't appear in the aux file).
-%
-\def\listoffloatsdo#1{\listoffloatsdoentry#1\finish}
-\def\listoffloatsdoentry#1-title\finish{{%
-  % Can't fully expand XR#1-lof because it can contain anything.  Just
-  % pass the control sequence.  On the other hand, XR#1-pg is just the
-  % page number, and we want to fully expand that so we can get a link
-  % in pdf output.
-  \toksA = \expandafter{\csname XR#1-lof\endcsname}%
-  %
-  % use the same \entry macro we use to generate the TOC and index.
-  \edef\writeentry{\noexpand\entry{\the\toksA}{\csname XR#1-pg\endcsname}}%
-  \writeentry
-}}
-
-
-\message{localization,}
-
-% For single-language documents, @documentlanguage is usually given very
-% early, just after @documentencoding.  Single argument is the language
-% (de) or locale (de_DE) abbreviation.
-%
-{
-  \catcode`\_ = \active
-  \globaldefs=1
-\parseargdef\documentlanguage{%
-  \tex % read txi-??.tex file in plain TeX.
-    % Read the file by the name they passed if it exists.
-    \let_ = \normalunderscore  % normal _ character for filename test
-    \openin 1 txi-#1.tex
-    \ifeof 1
-      \documentlanguagetrywithoutunderscore #1_\finish
-    \else
-      \globaldefs = 1  % everything in the txi-LL files needs to persist
-      \input txi-#1.tex
-    \fi
-    \closein 1
-  \endgroup % end raw TeX
-}
-%
-% If they passed de_DE, and txi-de_DE.tex doesn't exist,
-% try txi-de.tex.
-%
-\gdef\documentlanguagetrywithoutunderscore#1_#2\finish{%
-  \openin 1 txi-#1.tex
-  \ifeof 1
-    \errhelp = \nolanghelp
-    \errmessage{Cannot read language file txi-#1.tex}%
-  \else
-    \globaldefs = 1  % everything in the txi-LL files needs to persist
-    \input txi-#1.tex
-  \fi
-  \closein 1
-}
-}% end of special _ catcode
-%
-\newhelp\nolanghelp{The given language definition file cannot be found or
-is empty.  Maybe you need to install it?  Putting it in the current
-directory should work if nowhere else does.}
-
-% This macro is called from txi-??.tex files; the first argument is the
-% \language name to set (without the "\lang@" prefix), the second and
-% third args are \{left,right}hyphenmin.
-%
-% The language names to pass are determined when the format is built.
-% See the etex.log file created at that time, e.g.,
-% /usr/local/texlive/2008/texmf-var/web2c/pdftex/etex.log.
-%
-% With TeX Live 2008, etex now includes hyphenation patterns for all
-% available languages.  This means we can support hyphenation in
-% Texinfo, at least to some extent.  (This still doesn't solve the
-% accented characters problem.)
-%
-\catcode`@=11
-\def\txisetlanguage#1#2#3{%
-  % do not set the language if the name is undefined in the current TeX.
-  \expandafter\ifx\csname lang@#1\endcsname \relax
-    \message{no patterns for #1}%
-  \else
-    \global\language = \csname lang@#1\endcsname
-  \fi
-  % but there is no harm in adjusting the hyphenmin values regardless.
-  \global\lefthyphenmin = #2\relax
-  \global\righthyphenmin = #3\relax
-}
-
-% Helpers for encodings.
-% Set the catcode of characters 128 through 255 to the specified number.
-%
-\def\setnonasciicharscatcode#1{%
-   \count255=128
-   \loop\ifnum\count255<256
-      \global\catcode\count255=#1\relax
-      \advance\count255 by 1
-   \repeat
-}
-
-\def\setnonasciicharscatcodenonglobal#1{%
-   \count255=128
-   \loop\ifnum\count255<256
-      \catcode\count255=#1\relax
-      \advance\count255 by 1
-   \repeat
-}
-
-% @documentencoding sets the definition of non-ASCII characters
-% according to the specified encoding.
-%
-\parseargdef\documentencoding{%
-  % Encoding being declared for the document.
-  \def\declaredencoding{\csname #1.enc\endcsname}%
-  %
-  % Supported encodings: names converted to tokens in order to be able
-  % to compare them with \ifx.
-  \def\ascii{\csname US-ASCII.enc\endcsname}%
-  \def\latnine{\csname ISO-8859-15.enc\endcsname}%
-  \def\latone{\csname ISO-8859-1.enc\endcsname}%
-  \def\lattwo{\csname ISO-8859-2.enc\endcsname}%
-  \def\utfeight{\csname UTF-8.enc\endcsname}%
-  %
-  \ifx \declaredencoding \ascii
-     \asciichardefs
-  %
-  \else \ifx \declaredencoding \lattwo
-     \setnonasciicharscatcode\active
-     \lattwochardefs
-  %
-  \else \ifx \declaredencoding \latone
-     \setnonasciicharscatcode\active
-     \latonechardefs
-  %
-  \else \ifx \declaredencoding \latnine
-     \setnonasciicharscatcode\active
-     \latninechardefs
-  %
-  \else \ifx \declaredencoding \utfeight
-     \setnonasciicharscatcode\active
-     \utfeightchardefs
-  %
-  \else
-    \message{Unknown document encoding #1, ignoring.}%
-  %
-  \fi % utfeight
-  \fi % latnine
-  \fi % latone
-  \fi % lattwo
-  \fi % ascii
-}
-
-% A message to be logged when using a character that isn't available
-% the default font encoding (OT1).
-%
-\def\missingcharmsg#1{\message{Character missing in OT1 encoding: #1.}}
-
-% Take account of \c (plain) vs. \, (Texinfo) difference.
-\def\cedilla#1{\ifx\c\ptexc\c{#1}\else\,{#1}\fi}
-
-% First, make active non-ASCII characters in order for them to be
-% correctly categorized when TeX reads the replacement text of
-% macros containing the character definitions.
-\setnonasciicharscatcode\active
-%
-% Latin1 (ISO-8859-1) character definitions.
-\def\latonechardefs{%
-  \gdef^^a0{\tie}
-  \gdef^^a1{\exclamdown}
-  \gdef^^a2{\missingcharmsg{CENT SIGN}}
-  \gdef^^a3{{\pounds}}
-  \gdef^^a4{\missingcharmsg{CURRENCY SIGN}}
-  \gdef^^a5{\missingcharmsg{YEN SIGN}}
-  \gdef^^a6{\missingcharmsg{BROKEN BAR}}
-  \gdef^^a7{\S}
-  \gdef^^a8{\"{}}
-  \gdef^^a9{\copyright}
-  \gdef^^aa{\ordf}
-  \gdef^^ab{\guillemetleft}
-  \gdef^^ac{$\lnot$}
-  \gdef^^ad{\-}
-  \gdef^^ae{\registeredsymbol}
-  \gdef^^af{\={}}
-  %
-  \gdef^^b0{\textdegree}
-  \gdef^^b1{$\pm$}
-  \gdef^^b2{$^2$}
-  \gdef^^b3{$^3$}
-  \gdef^^b4{\'{}}
-  \gdef^^b5{$\mu$}
-  \gdef^^b6{\P}
-  %
-  \gdef^^b7{$^.$}
-  \gdef^^b8{\cedilla\ }
-  \gdef^^b9{$^1$}
-  \gdef^^ba{\ordm}
-  %
-  \gdef^^bb{\guillemetright}
-  \gdef^^bc{$1\over4$}
-  \gdef^^bd{$1\over2$}
-  \gdef^^be{$3\over4$}
-  \gdef^^bf{\questiondown}
-  %
-  \gdef^^c0{\`A}
-  \gdef^^c1{\'A}
-  \gdef^^c2{\^A}
-  \gdef^^c3{\~A}
-  \gdef^^c4{\"A}
-  \gdef^^c5{\ringaccent A}
-  \gdef^^c6{\AE}
-  \gdef^^c7{\cedilla C}
-  \gdef^^c8{\`E}
-  \gdef^^c9{\'E}
-  \gdef^^ca{\^E}
-  \gdef^^cb{\"E}
-  \gdef^^cc{\`I}
-  \gdef^^cd{\'I}
-  \gdef^^ce{\^I}
-  \gdef^^cf{\"I}
-  %
-  \gdef^^d0{\DH}
-  \gdef^^d1{\~N}
-  \gdef^^d2{\`O}
-  \gdef^^d3{\'O}
-  \gdef^^d4{\^O}
-  \gdef^^d5{\~O}
-  \gdef^^d6{\"O}
-  \gdef^^d7{$\times$}
-  \gdef^^d8{\O}
-  \gdef^^d9{\`U}
-  \gdef^^da{\'U}
-  \gdef^^db{\^U}
-  \gdef^^dc{\"U}
-  \gdef^^dd{\'Y}
-  \gdef^^de{\TH}
-  \gdef^^df{\ss}
-  %
-  \gdef^^e0{\`a}
-  \gdef^^e1{\'a}
-  \gdef^^e2{\^a}
-  \gdef^^e3{\~a}
-  \gdef^^e4{\"a}
-  \gdef^^e5{\ringaccent a}
-  \gdef^^e6{\ae}
-  \gdef^^e7{\cedilla c}
-  \gdef^^e8{\`e}
-  \gdef^^e9{\'e}
-  \gdef^^ea{\^e}
-  \gdef^^eb{\"e}
-  \gdef^^ec{\`{\dotless i}}
-  \gdef^^ed{\'{\dotless i}}
-  \gdef^^ee{\^{\dotless i}}
-  \gdef^^ef{\"{\dotless i}}
-  %
-  \gdef^^f0{\dh}
-  \gdef^^f1{\~n}
-  \gdef^^f2{\`o}
-  \gdef^^f3{\'o}
-  \gdef^^f4{\^o}
-  \gdef^^f5{\~o}
-  \gdef^^f6{\"o}
-  \gdef^^f7{$\div$}
-  \gdef^^f8{\o}
-  \gdef^^f9{\`u}
-  \gdef^^fa{\'u}
-  \gdef^^fb{\^u}
-  \gdef^^fc{\"u}
-  \gdef^^fd{\'y}
-  \gdef^^fe{\th}
-  \gdef^^ff{\"y}
-}
-
-% Latin9 (ISO-8859-15) encoding character definitions.
-\def\latninechardefs{%
-  % Encoding is almost identical to Latin1.
-  \latonechardefs
-  %
-  \gdef^^a4{\euro}
-  \gdef^^a6{\v S}
-  \gdef^^a8{\v s}
-  \gdef^^b4{\v Z}
-  \gdef^^b8{\v z}
-  \gdef^^bc{\OE}
-  \gdef^^bd{\oe}
-  \gdef^^be{\"Y}
-}
-
-% Latin2 (ISO-8859-2) character definitions.
-\def\lattwochardefs{%
-  \gdef^^a0{\tie}
-  \gdef^^a1{\ogonek{A}}
-  \gdef^^a2{\u{}}
-  \gdef^^a3{\L}
-  \gdef^^a4{\missingcharmsg{CURRENCY SIGN}}
-  \gdef^^a5{\v L}
-  \gdef^^a6{\'S}
-  \gdef^^a7{\S}
-  \gdef^^a8{\"{}}
-  \gdef^^a9{\v S}
-  \gdef^^aa{\cedilla S}
-  \gdef^^ab{\v T}
-  \gdef^^ac{\'Z}
-  \gdef^^ad{\-}
-  \gdef^^ae{\v Z}
-  \gdef^^af{\dotaccent Z}
-  %
-  \gdef^^b0{\textdegree}
-  \gdef^^b1{\ogonek{a}}
-  \gdef^^b2{\ogonek{ }}
-  \gdef^^b3{\l}
-  \gdef^^b4{\'{}}
-  \gdef^^b5{\v l}
-  \gdef^^b6{\'s}
-  \gdef^^b7{\v{}}
-  \gdef^^b8{\cedilla\ }
-  \gdef^^b9{\v s}
-  \gdef^^ba{\cedilla s}
-  \gdef^^bb{\v t}
-  \gdef^^bc{\'z}
-  \gdef^^bd{\H{}}
-  \gdef^^be{\v z}
-  \gdef^^bf{\dotaccent z}
-  %
-  \gdef^^c0{\'R}
-  \gdef^^c1{\'A}
-  \gdef^^c2{\^A}
-  \gdef^^c3{\u A}
-  \gdef^^c4{\"A}
-  \gdef^^c5{\'L}
-  \gdef^^c6{\'C}
-  \gdef^^c7{\cedilla C}
-  \gdef^^c8{\v C}
-  \gdef^^c9{\'E}
-  \gdef^^ca{\ogonek{E}}
-  \gdef^^cb{\"E}
-  \gdef^^cc{\v E}
-  \gdef^^cd{\'I}
-  \gdef^^ce{\^I}
-  \gdef^^cf{\v D}
-  %
-  \gdef^^d0{\DH}
-  \gdef^^d1{\'N}
-  \gdef^^d2{\v N}
-  \gdef^^d3{\'O}
-  \gdef^^d4{\^O}
-  \gdef^^d5{\H O}
-  \gdef^^d6{\"O}
-  \gdef^^d7{$\times$}
-  \gdef^^d8{\v R}
-  \gdef^^d9{\ringaccent U}
-  \gdef^^da{\'U}
-  \gdef^^db{\H U}
-  \gdef^^dc{\"U}
-  \gdef^^dd{\'Y}
-  \gdef^^de{\cedilla T}
-  \gdef^^df{\ss}
-  %
-  \gdef^^e0{\'r}
-  \gdef^^e1{\'a}
-  \gdef^^e2{\^a}
-  \gdef^^e3{\u a}
-  \gdef^^e4{\"a}
-  \gdef^^e5{\'l}
-  \gdef^^e6{\'c}
-  \gdef^^e7{\cedilla c}
-  \gdef^^e8{\v c}
-  \gdef^^e9{\'e}
-  \gdef^^ea{\ogonek{e}}
-  \gdef^^eb{\"e}
-  \gdef^^ec{\v e}
-  \gdef^^ed{\'{\dotless{i}}}
-  \gdef^^ee{\^{\dotless{i}}}
-  \gdef^^ef{\v d}
-  %
-  \gdef^^f0{\dh}
-  \gdef^^f1{\'n}
-  \gdef^^f2{\v n}
-  \gdef^^f3{\'o}
-  \gdef^^f4{\^o}
-  \gdef^^f5{\H o}
-  \gdef^^f6{\"o}
-  \gdef^^f7{$\div$}
-  \gdef^^f8{\v r}
-  \gdef^^f9{\ringaccent u}
-  \gdef^^fa{\'u}
-  \gdef^^fb{\H u}
-  \gdef^^fc{\"u}
-  \gdef^^fd{\'y}
-  \gdef^^fe{\cedilla t}
-  \gdef^^ff{\dotaccent{}}
-}
-
-% UTF-8 character definitions.
-%
-% This code to support UTF-8 is based on LaTeX's utf8.def, with some
-% changes for Texinfo conventions.  It is included here under the GPL by
-% permission from Frank Mittelbach and the LaTeX team.
-%
-\newcount\countUTFx
-\newcount\countUTFy
-\newcount\countUTFz
-
-\gdef\UTFviiiTwoOctets#1#2{\expandafter
-   \UTFviiiDefined\csname u8:#1\string #2\endcsname}
-%
-\gdef\UTFviiiThreeOctets#1#2#3{\expandafter
-   \UTFviiiDefined\csname u8:#1\string #2\string #3\endcsname}
-%
-\gdef\UTFviiiFourOctets#1#2#3#4{\expandafter
-   \UTFviiiDefined\csname u8:#1\string #2\string #3\string #4\endcsname}
-
-\gdef\UTFviiiDefined#1{%
-  \ifx #1\relax
-    \message{\linenumber Unicode char \string #1 not defined for Texinfo}%
-  \else
-    \expandafter #1%
-  \fi
-}
-
-\begingroup
-  \catcode`\~13
-  \catcode`\"12
-
-  \def\UTFviiiLoop{%
-    \global\catcode\countUTFx\active
-    \uccode`\~\countUTFx
-    \uppercase\expandafter{\UTFviiiTmp}%
-    \advance\countUTFx by 1
-    \ifnum\countUTFx < \countUTFy
-      \expandafter\UTFviiiLoop
-    \fi}
-
-  \countUTFx = "C2
-  \countUTFy = "E0
-  \def\UTFviiiTmp{%
-    \xdef~{\noexpand\UTFviiiTwoOctets\string~}}
-  \UTFviiiLoop
-
-  \countUTFx = "E0
-  \countUTFy = "F0
-  \def\UTFviiiTmp{%
-    \xdef~{\noexpand\UTFviiiThreeOctets\string~}}
-  \UTFviiiLoop
-
-  \countUTFx = "F0
-  \countUTFy = "F4
-  \def\UTFviiiTmp{%
-    \xdef~{\noexpand\UTFviiiFourOctets\string~}}
-  \UTFviiiLoop
-\endgroup
-
-\begingroup
-  \catcode`\"=12
-  \catcode`\<=12
-  \catcode`\.=12
-  \catcode`\,=12
-  \catcode`\;=12
-  \catcode`\!=12
-  \catcode`\~=13
-
-  \gdef\DeclareUnicodeCharacter#1#2{%
-    \countUTFz = "#1\relax
-    %\wlog{\space\space defining Unicode char U+#1 (decimal \the\countUTFz)}%
-    \begingroup
-      \parseXMLCharref
-      \def\UTFviiiTwoOctets##1##2{%
-        \csname u8:##1\string ##2\endcsname}%
-      \def\UTFviiiThreeOctets##1##2##3{%
-        \csname u8:##1\string ##2\string ##3\endcsname}%
-      \def\UTFviiiFourOctets##1##2##3##4{%
-        \csname u8:##1\string ##2\string ##3\string ##4\endcsname}%
-      \expandafter\expandafter\expandafter\expandafter
-       \expandafter\expandafter\expandafter
-       \gdef\UTFviiiTmp{#2}%
-    \endgroup}
-
-  \gdef\parseXMLCharref{%
-    \ifnum\countUTFz < "A0\relax
-      \errhelp = \EMsimple
-      \errmessage{Cannot define Unicode char value < 00A0}%
-    \else\ifnum\countUTFz < "800\relax
-      \parseUTFviiiA,%
-      \parseUTFviiiB C\UTFviiiTwoOctets.,%
-    \else\ifnum\countUTFz < "10000\relax
-      \parseUTFviiiA;%
-      \parseUTFviiiA,%
-      \parseUTFviiiB E\UTFviiiThreeOctets.{,;}%
-    \else
-      \parseUTFviiiA;%
-      \parseUTFviiiA,%
-      \parseUTFviiiA!%
-      \parseUTFviiiB F\UTFviiiFourOctets.{!,;}%
-    \fi\fi\fi
-  }
-
-  \gdef\parseUTFviiiA#1{%
-    \countUTFx = \countUTFz
-    \divide\countUTFz by 64
-    \countUTFy = \countUTFz
-    \multiply\countUTFz by 64
-    \advance\countUTFx by -\countUTFz
-    \advance\countUTFx by 128
-    \uccode `#1\countUTFx
-    \countUTFz = \countUTFy}
-
-  \gdef\parseUTFviiiB#1#2#3#4{%
-    \advance\countUTFz by "#10\relax
-    \uccode `#3\countUTFz
-    \uppercase{\gdef\UTFviiiTmp{#2#3#4}}}
-\endgroup
-
-\def\utfeightchardefs{%
-  \DeclareUnicodeCharacter{00A0}{\tie}
-  \DeclareUnicodeCharacter{00A1}{\exclamdown}
-  \DeclareUnicodeCharacter{00A3}{\pounds}
-  \DeclareUnicodeCharacter{00A8}{\"{ }}
-  \DeclareUnicodeCharacter{00A9}{\copyright}
-  \DeclareUnicodeCharacter{00AA}{\ordf}
-  \DeclareUnicodeCharacter{00AB}{\guillemetleft}
-  \DeclareUnicodeCharacter{00AD}{\-}
-  \DeclareUnicodeCharacter{00AE}{\registeredsymbol}
-  \DeclareUnicodeCharacter{00AF}{\={ }}
-
-  \DeclareUnicodeCharacter{00B0}{\ringaccent{ }}
-  \DeclareUnicodeCharacter{00B4}{\'{ }}
-  \DeclareUnicodeCharacter{00B8}{\cedilla{ }}
-  \DeclareUnicodeCharacter{00BA}{\ordm}
-  \DeclareUnicodeCharacter{00BB}{\guillemetright}
-  \DeclareUnicodeCharacter{00BF}{\questiondown}
-
-  \DeclareUnicodeCharacter{00C0}{\`A}
-  \DeclareUnicodeCharacter{00C1}{\'A}
-  \DeclareUnicodeCharacter{00C2}{\^A}
-  \DeclareUnicodeCharacter{00C3}{\~A}
-  \DeclareUnicodeCharacter{00C4}{\"A}
-  \DeclareUnicodeCharacter{00C5}{\AA}
-  \DeclareUnicodeCharacter{00C6}{\AE}
-  \DeclareUnicodeCharacter{00C7}{\cedilla{C}}
-  \DeclareUnicodeCharacter{00C8}{\`E}
-  \DeclareUnicodeCharacter{00C9}{\'E}
-  \DeclareUnicodeCharacter{00CA}{\^E}
-  \DeclareUnicodeCharacter{00CB}{\"E}
-  \DeclareUnicodeCharacter{00CC}{\`I}
-  \DeclareUnicodeCharacter{00CD}{\'I}
-  \DeclareUnicodeCharacter{00CE}{\^I}
-  \DeclareUnicodeCharacter{00CF}{\"I}
-
-  \DeclareUnicodeCharacter{00D0}{\DH}
-  \DeclareUnicodeCharacter{00D1}{\~N}
-  \DeclareUnicodeCharacter{00D2}{\`O}
-  \DeclareUnicodeCharacter{00D3}{\'O}
-  \DeclareUnicodeCharacter{00D4}{\^O}
-  \DeclareUnicodeCharacter{00D5}{\~O}
-  \DeclareUnicodeCharacter{00D6}{\"O}
-  \DeclareUnicodeCharacter{00D8}{\O}
-  \DeclareUnicodeCharacter{00D9}{\`U}
-  \DeclareUnicodeCharacter{00DA}{\'U}
-  \DeclareUnicodeCharacter{00DB}{\^U}
-  \DeclareUnicodeCharacter{00DC}{\"U}
-  \DeclareUnicodeCharacter{00DD}{\'Y}
-  \DeclareUnicodeCharacter{00DE}{\TH}
-  \DeclareUnicodeCharacter{00DF}{\ss}
-
-  \DeclareUnicodeCharacter{00E0}{\`a}
-  \DeclareUnicodeCharacter{00E1}{\'a}
-  \DeclareUnicodeCharacter{00E2}{\^a}
-  \DeclareUnicodeCharacter{00E3}{\~a}
-  \DeclareUnicodeCharacter{00E4}{\"a}
-  \DeclareUnicodeCharacter{00E5}{\aa}
-  \DeclareUnicodeCharacter{00E6}{\ae}
-  \DeclareUnicodeCharacter{00E7}{\cedilla{c}}
-  \DeclareUnicodeCharacter{00E8}{\`e}
-  \DeclareUnicodeCharacter{00E9}{\'e}
-  \DeclareUnicodeCharacter{00EA}{\^e}
-  \DeclareUnicodeCharacter{00EB}{\"e}
-  \DeclareUnicodeCharacter{00EC}{\`{\dotless{i}}}
-  \DeclareUnicodeCharacter{00ED}{\'{\dotless{i}}}
-  \DeclareUnicodeCharacter{00EE}{\^{\dotless{i}}}
-  \DeclareUnicodeCharacter{00EF}{\"{\dotless{i}}}
-
-  \DeclareUnicodeCharacter{00F0}{\dh}
-  \DeclareUnicodeCharacter{00F1}{\~n}
-  \DeclareUnicodeCharacter{00F2}{\`o}
-  \DeclareUnicodeCharacter{00F3}{\'o}
-  \DeclareUnicodeCharacter{00F4}{\^o}
-  \DeclareUnicodeCharacter{00F5}{\~o}
-  \DeclareUnicodeCharacter{00F6}{\"o}
-  \DeclareUnicodeCharacter{00F8}{\o}
-  \DeclareUnicodeCharacter{00F9}{\`u}
-  \DeclareUnicodeCharacter{00FA}{\'u}
-  \DeclareUnicodeCharacter{00FB}{\^u}
-  \DeclareUnicodeCharacter{00FC}{\"u}
-  \DeclareUnicodeCharacter{00FD}{\'y}
-  \DeclareUnicodeCharacter{00FE}{\th}
-  \DeclareUnicodeCharacter{00FF}{\"y}
-
-  \DeclareUnicodeCharacter{0100}{\=A}
-  \DeclareUnicodeCharacter{0101}{\=a}
-  \DeclareUnicodeCharacter{0102}{\u{A}}
-  \DeclareUnicodeCharacter{0103}{\u{a}}
-  \DeclareUnicodeCharacter{0104}{\ogonek{A}}
-  \DeclareUnicodeCharacter{0105}{\ogonek{a}}
-  \DeclareUnicodeCharacter{0106}{\'C}
-  \DeclareUnicodeCharacter{0107}{\'c}
-  \DeclareUnicodeCharacter{0108}{\^C}
-  \DeclareUnicodeCharacter{0109}{\^c}
-  \DeclareUnicodeCharacter{0118}{\ogonek{E}}
-  \DeclareUnicodeCharacter{0119}{\ogonek{e}}
-  \DeclareUnicodeCharacter{010A}{\dotaccent{C}}
-  \DeclareUnicodeCharacter{010B}{\dotaccent{c}}
-  \DeclareUnicodeCharacter{010C}{\v{C}}
-  \DeclareUnicodeCharacter{010D}{\v{c}}
-  \DeclareUnicodeCharacter{010E}{\v{D}}
-
-  \DeclareUnicodeCharacter{0112}{\=E}
-  \DeclareUnicodeCharacter{0113}{\=e}
-  \DeclareUnicodeCharacter{0114}{\u{E}}
-  \DeclareUnicodeCharacter{0115}{\u{e}}
-  \DeclareUnicodeCharacter{0116}{\dotaccent{E}}
-  \DeclareUnicodeCharacter{0117}{\dotaccent{e}}
-  \DeclareUnicodeCharacter{011A}{\v{E}}
-  \DeclareUnicodeCharacter{011B}{\v{e}}
-  \DeclareUnicodeCharacter{011C}{\^G}
-  \DeclareUnicodeCharacter{011D}{\^g}
-  \DeclareUnicodeCharacter{011E}{\u{G}}
-  \DeclareUnicodeCharacter{011F}{\u{g}}
-
-  \DeclareUnicodeCharacter{0120}{\dotaccent{G}}
-  \DeclareUnicodeCharacter{0121}{\dotaccent{g}}
-  \DeclareUnicodeCharacter{0124}{\^H}
-  \DeclareUnicodeCharacter{0125}{\^h}
-  \DeclareUnicodeCharacter{0128}{\~I}
-  \DeclareUnicodeCharacter{0129}{\~{\dotless{i}}}
-  \DeclareUnicodeCharacter{012A}{\=I}
-  \DeclareUnicodeCharacter{012B}{\={\dotless{i}}}
-  \DeclareUnicodeCharacter{012C}{\u{I}}
-  \DeclareUnicodeCharacter{012D}{\u{\dotless{i}}}
-
-  \DeclareUnicodeCharacter{0130}{\dotaccent{I}}
-  \DeclareUnicodeCharacter{0131}{\dotless{i}}
-  \DeclareUnicodeCharacter{0132}{IJ}
-  \DeclareUnicodeCharacter{0133}{ij}
-  \DeclareUnicodeCharacter{0134}{\^J}
-  \DeclareUnicodeCharacter{0135}{\^{\dotless{j}}}
-  \DeclareUnicodeCharacter{0139}{\'L}
-  \DeclareUnicodeCharacter{013A}{\'l}
-
-  \DeclareUnicodeCharacter{0141}{\L}
-  \DeclareUnicodeCharacter{0142}{\l}
-  \DeclareUnicodeCharacter{0143}{\'N}
-  \DeclareUnicodeCharacter{0144}{\'n}
-  \DeclareUnicodeCharacter{0147}{\v{N}}
-  \DeclareUnicodeCharacter{0148}{\v{n}}
-  \DeclareUnicodeCharacter{014C}{\=O}
-  \DeclareUnicodeCharacter{014D}{\=o}
-  \DeclareUnicodeCharacter{014E}{\u{O}}
-  \DeclareUnicodeCharacter{014F}{\u{o}}
-
-  \DeclareUnicodeCharacter{0150}{\H{O}}
-  \DeclareUnicodeCharacter{0151}{\H{o}}
-  \DeclareUnicodeCharacter{0152}{\OE}
-  \DeclareUnicodeCharacter{0153}{\oe}
-  \DeclareUnicodeCharacter{0154}{\'R}
-  \DeclareUnicodeCharacter{0155}{\'r}
-  \DeclareUnicodeCharacter{0158}{\v{R}}
-  \DeclareUnicodeCharacter{0159}{\v{r}}
-  \DeclareUnicodeCharacter{015A}{\'S}
-  \DeclareUnicodeCharacter{015B}{\'s}
-  \DeclareUnicodeCharacter{015C}{\^S}
-  \DeclareUnicodeCharacter{015D}{\^s}
-  \DeclareUnicodeCharacter{015E}{\cedilla{S}}
-  \DeclareUnicodeCharacter{015F}{\cedilla{s}}
-
-  \DeclareUnicodeCharacter{0160}{\v{S}}
-  \DeclareUnicodeCharacter{0161}{\v{s}}
-  \DeclareUnicodeCharacter{0162}{\cedilla{t}}
-  \DeclareUnicodeCharacter{0163}{\cedilla{T}}
-  \DeclareUnicodeCharacter{0164}{\v{T}}
-
-  \DeclareUnicodeCharacter{0168}{\~U}
-  \DeclareUnicodeCharacter{0169}{\~u}
-  \DeclareUnicodeCharacter{016A}{\=U}
-  \DeclareUnicodeCharacter{016B}{\=u}
-  \DeclareUnicodeCharacter{016C}{\u{U}}
-  \DeclareUnicodeCharacter{016D}{\u{u}}
-  \DeclareUnicodeCharacter{016E}{\ringaccent{U}}
-  \DeclareUnicodeCharacter{016F}{\ringaccent{u}}
-
-  \DeclareUnicodeCharacter{0170}{\H{U}}
-  \DeclareUnicodeCharacter{0171}{\H{u}}
-  \DeclareUnicodeCharacter{0174}{\^W}
-  \DeclareUnicodeCharacter{0175}{\^w}
-  \DeclareUnicodeCharacter{0176}{\^Y}
-  \DeclareUnicodeCharacter{0177}{\^y}
-  \DeclareUnicodeCharacter{0178}{\"Y}
-  \DeclareUnicodeCharacter{0179}{\'Z}
-  \DeclareUnicodeCharacter{017A}{\'z}
-  \DeclareUnicodeCharacter{017B}{\dotaccent{Z}}
-  \DeclareUnicodeCharacter{017C}{\dotaccent{z}}
-  \DeclareUnicodeCharacter{017D}{\v{Z}}
-  \DeclareUnicodeCharacter{017E}{\v{z}}
-
-  \DeclareUnicodeCharacter{01C4}{D\v{Z}}
-  \DeclareUnicodeCharacter{01C5}{D\v{z}}
-  \DeclareUnicodeCharacter{01C6}{d\v{z}}
-  \DeclareUnicodeCharacter{01C7}{LJ}
-  \DeclareUnicodeCharacter{01C8}{Lj}
-  \DeclareUnicodeCharacter{01C9}{lj}
-  \DeclareUnicodeCharacter{01CA}{NJ}
-  \DeclareUnicodeCharacter{01CB}{Nj}
-  \DeclareUnicodeCharacter{01CC}{nj}
-  \DeclareUnicodeCharacter{01CD}{\v{A}}
-  \DeclareUnicodeCharacter{01CE}{\v{a}}
-  \DeclareUnicodeCharacter{01CF}{\v{I}}
-
-  \DeclareUnicodeCharacter{01D0}{\v{\dotless{i}}}
-  \DeclareUnicodeCharacter{01D1}{\v{O}}
-  \DeclareUnicodeCharacter{01D2}{\v{o}}
-  \DeclareUnicodeCharacter{01D3}{\v{U}}
-  \DeclareUnicodeCharacter{01D4}{\v{u}}
-
-  \DeclareUnicodeCharacter{01E2}{\={\AE}}
-  \DeclareUnicodeCharacter{01E3}{\={\ae}}
-  \DeclareUnicodeCharacter{01E6}{\v{G}}
-  \DeclareUnicodeCharacter{01E7}{\v{g}}
-  \DeclareUnicodeCharacter{01E8}{\v{K}}
-  \DeclareUnicodeCharacter{01E9}{\v{k}}
-
-  \DeclareUnicodeCharacter{01F0}{\v{\dotless{j}}}
-  \DeclareUnicodeCharacter{01F1}{DZ}
-  \DeclareUnicodeCharacter{01F2}{Dz}
-  \DeclareUnicodeCharacter{01F3}{dz}
-  \DeclareUnicodeCharacter{01F4}{\'G}
-  \DeclareUnicodeCharacter{01F5}{\'g}
-  \DeclareUnicodeCharacter{01F8}{\`N}
-  \DeclareUnicodeCharacter{01F9}{\`n}
-  \DeclareUnicodeCharacter{01FC}{\'{\AE}}
-  \DeclareUnicodeCharacter{01FD}{\'{\ae}}
-  \DeclareUnicodeCharacter{01FE}{\'{\O}}
-  \DeclareUnicodeCharacter{01FF}{\'{\o}}
-
-  \DeclareUnicodeCharacter{021E}{\v{H}}
-  \DeclareUnicodeCharacter{021F}{\v{h}}
-
-  \DeclareUnicodeCharacter{0226}{\dotaccent{A}}
-  \DeclareUnicodeCharacter{0227}{\dotaccent{a}}
-  \DeclareUnicodeCharacter{0228}{\cedilla{E}}
-  \DeclareUnicodeCharacter{0229}{\cedilla{e}}
-  \DeclareUnicodeCharacter{022E}{\dotaccent{O}}
-  \DeclareUnicodeCharacter{022F}{\dotaccent{o}}
-
-  \DeclareUnicodeCharacter{0232}{\=Y}
-  \DeclareUnicodeCharacter{0233}{\=y}
-  \DeclareUnicodeCharacter{0237}{\dotless{j}}
-
-  \DeclareUnicodeCharacter{02DB}{\ogonek{ }}
-
-  \DeclareUnicodeCharacter{1E02}{\dotaccent{B}}
-  \DeclareUnicodeCharacter{1E03}{\dotaccent{b}}
-  \DeclareUnicodeCharacter{1E04}{\udotaccent{B}}
-  \DeclareUnicodeCharacter{1E05}{\udotaccent{b}}
-  \DeclareUnicodeCharacter{1E06}{\ubaraccent{B}}
-  \DeclareUnicodeCharacter{1E07}{\ubaraccent{b}}
-  \DeclareUnicodeCharacter{1E0A}{\dotaccent{D}}
-  \DeclareUnicodeCharacter{1E0B}{\dotaccent{d}}
-  \DeclareUnicodeCharacter{1E0C}{\udotaccent{D}}
-  \DeclareUnicodeCharacter{1E0D}{\udotaccent{d}}
-  \DeclareUnicodeCharacter{1E0E}{\ubaraccent{D}}
-  \DeclareUnicodeCharacter{1E0F}{\ubaraccent{d}}
-
-  \DeclareUnicodeCharacter{1E1E}{\dotaccent{F}}
-  \DeclareUnicodeCharacter{1E1F}{\dotaccent{f}}
-
-  \DeclareUnicodeCharacter{1E20}{\=G}
-  \DeclareUnicodeCharacter{1E21}{\=g}
-  \DeclareUnicodeCharacter{1E22}{\dotaccent{H}}
-  \DeclareUnicodeCharacter{1E23}{\dotaccent{h}}
-  \DeclareUnicodeCharacter{1E24}{\udotaccent{H}}
-  \DeclareUnicodeCharacter{1E25}{\udotaccent{h}}
-  \DeclareUnicodeCharacter{1E26}{\"H}
-  \DeclareUnicodeCharacter{1E27}{\"h}
-
-  \DeclareUnicodeCharacter{1E30}{\'K}
-  \DeclareUnicodeCharacter{1E31}{\'k}
-  \DeclareUnicodeCharacter{1E32}{\udotaccent{K}}
-  \DeclareUnicodeCharacter{1E33}{\udotaccent{k}}
-  \DeclareUnicodeCharacter{1E34}{\ubaraccent{K}}
-  \DeclareUnicodeCharacter{1E35}{\ubaraccent{k}}
-  \DeclareUnicodeCharacter{1E36}{\udotaccent{L}}
-  \DeclareUnicodeCharacter{1E37}{\udotaccent{l}}
-  \DeclareUnicodeCharacter{1E3A}{\ubaraccent{L}}
-  \DeclareUnicodeCharacter{1E3B}{\ubaraccent{l}}
-  \DeclareUnicodeCharacter{1E3E}{\'M}
-  \DeclareUnicodeCharacter{1E3F}{\'m}
-
-  \DeclareUnicodeCharacter{1E40}{\dotaccent{M}}
-  \DeclareUnicodeCharacter{1E41}{\dotaccent{m}}
-  \DeclareUnicodeCharacter{1E42}{\udotaccent{M}}
-  \DeclareUnicodeCharacter{1E43}{\udotaccent{m}}
-  \DeclareUnicodeCharacter{1E44}{\dotaccent{N}}
-  \DeclareUnicodeCharacter{1E45}{\dotaccent{n}}
-  \DeclareUnicodeCharacter{1E46}{\udotaccent{N}}
-  \DeclareUnicodeCharacter{1E47}{\udotaccent{n}}
-  \DeclareUnicodeCharacter{1E48}{\ubaraccent{N}}
-  \DeclareUnicodeCharacter{1E49}{\ubaraccent{n}}
-
-  \DeclareUnicodeCharacter{1E54}{\'P}
-  \DeclareUnicodeCharacter{1E55}{\'p}
-  \DeclareUnicodeCharacter{1E56}{\dotaccent{P}}
-  \DeclareUnicodeCharacter{1E57}{\dotaccent{p}}
-  \DeclareUnicodeCharacter{1E58}{\dotaccent{R}}
-  \DeclareUnicodeCharacter{1E59}{\dotaccent{r}}
-  \DeclareUnicodeCharacter{1E5A}{\udotaccent{R}}
-  \DeclareUnicodeCharacter{1E5B}{\udotaccent{r}}
-  \DeclareUnicodeCharacter{1E5E}{\ubaraccent{R}}
-  \DeclareUnicodeCharacter{1E5F}{\ubaraccent{r}}
-
-  \DeclareUnicodeCharacter{1E60}{\dotaccent{S}}
-  \DeclareUnicodeCharacter{1E61}{\dotaccent{s}}
-  \DeclareUnicodeCharacter{1E62}{\udotaccent{S}}
-  \DeclareUnicodeCharacter{1E63}{\udotaccent{s}}
-  \DeclareUnicodeCharacter{1E6A}{\dotaccent{T}}
-  \DeclareUnicodeCharacter{1E6B}{\dotaccent{t}}
-  \DeclareUnicodeCharacter{1E6C}{\udotaccent{T}}
-  \DeclareUnicodeCharacter{1E6D}{\udotaccent{t}}
-  \DeclareUnicodeCharacter{1E6E}{\ubaraccent{T}}
-  \DeclareUnicodeCharacter{1E6F}{\ubaraccent{t}}
-
-  \DeclareUnicodeCharacter{1E7C}{\~V}
-  \DeclareUnicodeCharacter{1E7D}{\~v}
-  \DeclareUnicodeCharacter{1E7E}{\udotaccent{V}}
-  \DeclareUnicodeCharacter{1E7F}{\udotaccent{v}}
-
-  \DeclareUnicodeCharacter{1E80}{\`W}
-  \DeclareUnicodeCharacter{1E81}{\`w}
-  \DeclareUnicodeCharacter{1E82}{\'W}
-  \DeclareUnicodeCharacter{1E83}{\'w}
-  \DeclareUnicodeCharacter{1E84}{\"W}
-  \DeclareUnicodeCharacter{1E85}{\"w}
-  \DeclareUnicodeCharacter{1E86}{\dotaccent{W}}
-  \DeclareUnicodeCharacter{1E87}{\dotaccent{w}}
-  \DeclareUnicodeCharacter{1E88}{\udotaccent{W}}
-  \DeclareUnicodeCharacter{1E89}{\udotaccent{w}}
-  \DeclareUnicodeCharacter{1E8A}{\dotaccent{X}}
-  \DeclareUnicodeCharacter{1E8B}{\dotaccent{x}}
-  \DeclareUnicodeCharacter{1E8C}{\"X}
-  \DeclareUnicodeCharacter{1E8D}{\"x}
-  \DeclareUnicodeCharacter{1E8E}{\dotaccent{Y}}
-  \DeclareUnicodeCharacter{1E8F}{\dotaccent{y}}
-
-  \DeclareUnicodeCharacter{1E90}{\^Z}
-  \DeclareUnicodeCharacter{1E91}{\^z}
-  \DeclareUnicodeCharacter{1E92}{\udotaccent{Z}}
-  \DeclareUnicodeCharacter{1E93}{\udotaccent{z}}
-  \DeclareUnicodeCharacter{1E94}{\ubaraccent{Z}}
-  \DeclareUnicodeCharacter{1E95}{\ubaraccent{z}}
-  \DeclareUnicodeCharacter{1E96}{\ubaraccent{h}}
-  \DeclareUnicodeCharacter{1E97}{\"t}
-  \DeclareUnicodeCharacter{1E98}{\ringaccent{w}}
-  \DeclareUnicodeCharacter{1E99}{\ringaccent{y}}
-
-  \DeclareUnicodeCharacter{1EA0}{\udotaccent{A}}
-  \DeclareUnicodeCharacter{1EA1}{\udotaccent{a}}
-
-  \DeclareUnicodeCharacter{1EB8}{\udotaccent{E}}
-  \DeclareUnicodeCharacter{1EB9}{\udotaccent{e}}
-  \DeclareUnicodeCharacter{1EBC}{\~E}
-  \DeclareUnicodeCharacter{1EBD}{\~e}
-
-  \DeclareUnicodeCharacter{1ECA}{\udotaccent{I}}
-  \DeclareUnicodeCharacter{1ECB}{\udotaccent{i}}
-  \DeclareUnicodeCharacter{1ECC}{\udotaccent{O}}
-  \DeclareUnicodeCharacter{1ECD}{\udotaccent{o}}
-
-  \DeclareUnicodeCharacter{1EE4}{\udotaccent{U}}
-  \DeclareUnicodeCharacter{1EE5}{\udotaccent{u}}
-
-  \DeclareUnicodeCharacter{1EF2}{\`Y}
-  \DeclareUnicodeCharacter{1EF3}{\`y}
-  \DeclareUnicodeCharacter{1EF4}{\udotaccent{Y}}
-
-  \DeclareUnicodeCharacter{1EF8}{\~Y}
-  \DeclareUnicodeCharacter{1EF9}{\~y}
-
-  \DeclareUnicodeCharacter{2013}{--}
-  \DeclareUnicodeCharacter{2014}{---}
-  \DeclareUnicodeCharacter{2018}{\quoteleft}
-  \DeclareUnicodeCharacter{2019}{\quoteright}
-  \DeclareUnicodeCharacter{201A}{\quotesinglbase}
-  \DeclareUnicodeCharacter{201C}{\quotedblleft}
-  \DeclareUnicodeCharacter{201D}{\quotedblright}
-  \DeclareUnicodeCharacter{201E}{\quotedblbase}
-  \DeclareUnicodeCharacter{2022}{\bullet}
-  \DeclareUnicodeCharacter{2026}{\dots}
-  \DeclareUnicodeCharacter{2039}{\guilsinglleft}
-  \DeclareUnicodeCharacter{203A}{\guilsinglright}
-  \DeclareUnicodeCharacter{20AC}{\euro}
-
-  \DeclareUnicodeCharacter{2192}{\expansion}
-  \DeclareUnicodeCharacter{21D2}{\result}
-
-  \DeclareUnicodeCharacter{2212}{\minus}
-  \DeclareUnicodeCharacter{2217}{\point}
-  \DeclareUnicodeCharacter{2261}{\equiv}
-}% end of \utfeightchardefs
-
-
-% US-ASCII character definitions.
-\def\asciichardefs{% nothing need be done
-   \relax
-}
-
-% Make non-ASCII characters printable again for compatibility with
-% existing Texinfo documents that may use them, even without declaring a
-% document encoding.
-%
-\setnonasciicharscatcode \other
-
-
-\message{formatting,}
-
-\newdimen\defaultparindent \defaultparindent = 15pt
-
-\chapheadingskip = 15pt plus 4pt minus 2pt
-\secheadingskip = 12pt plus 3pt minus 2pt
-\subsecheadingskip = 9pt plus 2pt minus 2pt
-
-% Prevent underfull vbox error messages.
-\vbadness = 10000
-
-% Don't be very finicky about underfull hboxes, either.
-\hbadness = 6666
-
-% Following George Bush, get rid of widows and orphans.
-\widowpenalty=10000
-\clubpenalty=10000
-
-% Use TeX 3.0's \emergencystretch to help line breaking, but if we're
-% using an old version of TeX, don't do anything.  We want the amount of
-% stretch added to depend on the line length, hence the dependence on
-% \hsize.  We call this whenever the paper size is set.
-%
-\def\setemergencystretch{%
-  \ifx\emergencystretch\thisisundefined
-    % Allow us to assign to \emergencystretch anyway.
-    \def\emergencystretch{\dimen0}%
-  \else
-    \emergencystretch = .15\hsize
-  \fi
-}
-
-% Parameters in order: 1) textheight; 2) textwidth;
-% 3) voffset; 4) hoffset; 5) binding offset; 6) topskip;
-% 7) physical page height; 8) physical page width.
-%
-% We also call \setleading{\textleading}, so the caller should define
-% \textleading.  The caller should also set \parskip.
-%
-\def\internalpagesizes#1#2#3#4#5#6#7#8{%
-  \voffset = #3\relax
-  \topskip = #6\relax
-  \splittopskip = \topskip
-  %
-  \vsize = #1\relax
-  \advance\vsize by \topskip
-  \outervsize = \vsize
-  \advance\outervsize by 2\topandbottommargin
-  \pageheight = \vsize
-  %
-  \hsize = #2\relax
-  \outerhsize = \hsize
-  \advance\outerhsize by 0.5in
-  \pagewidth = \hsize
-  %
-  \normaloffset = #4\relax
-  \bindingoffset = #5\relax
-  %
-  \ifpdf
-    \pdfpageheight #7\relax
-    \pdfpagewidth #8\relax
-    % if we don't reset these, they will remain at "1 true in" of
-    % whatever layout pdftex was dumped with.
-    \pdfhorigin = 1 true in
-    \pdfvorigin = 1 true in
-  \fi
-  %
-  \setleading{\textleading}
-  %
-  \parindent = \defaultparindent
-  \setemergencystretch
-}
-
-% @letterpaper (the default).
-\def\letterpaper{{\globaldefs = 1
-  \parskip = 3pt plus 2pt minus 1pt
-  \textleading = 13.2pt
-  %
-  % If page is nothing but text, make it come out even.
-  \internalpagesizes{607.2pt}{6in}% that's 46 lines
-                    {\voffset}{.25in}%
-                    {\bindingoffset}{36pt}%
-                    {11in}{8.5in}%
-}}
-
-% Use @smallbook to reset parameters for 7x9.25 trim size.
-\def\smallbook{{\globaldefs = 1
-  \parskip = 2pt plus 1pt
-  \textleading = 12pt
-  %
-  \internalpagesizes{7.5in}{5in}%
-                    {-.2in}{0in}%
-                    {\bindingoffset}{16pt}%
-                    {9.25in}{7in}%
-  %
-  \lispnarrowing = 0.3in
-  \tolerance = 700
-  \hfuzz = 1pt
-  \contentsrightmargin = 0pt
-  \defbodyindent = .5cm
-}}
-
-% Use @smallerbook to reset parameters for 6x9 trim size.
-% (Just testing, parameters still in flux.)
-\def\smallerbook{{\globaldefs = 1
-  \parskip = 1.5pt plus 1pt
-  \textleading = 12pt
-  %
-  \internalpagesizes{7.4in}{4.8in}%
-                    {-.2in}{-.4in}%
-                    {0pt}{14pt}%
-                    {9in}{6in}%
-  %
-  \lispnarrowing = 0.25in
-  \tolerance = 700
-  \hfuzz = 1pt
-  \contentsrightmargin = 0pt
-  \defbodyindent = .4cm
-}}
-
-% Use @afourpaper to print on European A4 paper.
-\def\afourpaper{{\globaldefs = 1
-  \parskip = 3pt plus 2pt minus 1pt
-  \textleading = 13.2pt
-  %
-  % Double-side printing via postscript on Laserjet 4050
-  % prints double-sided nicely when \bindingoffset=10mm and \hoffset=-6mm.
-  % To change the settings for a different printer or situation, adjust
-  % \normaloffset until the front-side and back-side texts align.  Then
-  % do the same for \bindingoffset.  You can set these for testing in
-  % your texinfo source file like this:
-  % @tex
-  % \global\normaloffset = -6mm
-  % \global\bindingoffset = 10mm
-  % @end tex
-  \internalpagesizes{673.2pt}{160mm}% that's 51 lines
-                    {\voffset}{\hoffset}%
-                    {\bindingoffset}{44pt}%
-                    {297mm}{210mm}%
-  %
-  \tolerance = 700
-  \hfuzz = 1pt
-  \contentsrightmargin = 0pt
-  \defbodyindent = 5mm
-}}
-
-% Use @afivepaper to print on European A5 paper.
-% From romildo@urano.iceb.ufop.br, 2 July 2000.
-% He also recommends making @example and @lisp be small.
-\def\afivepaper{{\globaldefs = 1
-  \parskip = 2pt plus 1pt minus 0.1pt
-  \textleading = 12.5pt
-  %
-  \internalpagesizes{160mm}{120mm}%
-                    {\voffset}{\hoffset}%
-                    {\bindingoffset}{8pt}%
-                    {210mm}{148mm}%
-  %
-  \lispnarrowing = 0.2in
-  \tolerance = 800
-  \hfuzz = 1.2pt
-  \contentsrightmargin = 0pt
-  \defbodyindent = 2mm
-  \tableindent = 12mm
-}}
-
-% A specific text layout, 24x15cm overall, intended for A4 paper.
-\def\afourlatex{{\globaldefs = 1
-  \afourpaper
-  \internalpagesizes{237mm}{150mm}%
-                    {\voffset}{4.6mm}%
-                    {\bindingoffset}{7mm}%
-                    {297mm}{210mm}%
-  %
-  % Must explicitly reset to 0 because we call \afourpaper.
-  \globaldefs = 0
-}}
-
-% Use @afourwide to print on A4 paper in landscape format.
-\def\afourwide{{\globaldefs = 1
-  \afourpaper
-  \internalpagesizes{241mm}{165mm}%
-                    {\voffset}{-2.95mm}%
-                    {\bindingoffset}{7mm}%
-                    {297mm}{210mm}%
-  \globaldefs = 0
-}}
-
-% @pagesizes TEXTHEIGHT[,TEXTWIDTH]
-% Perhaps we should allow setting the margins, \topskip, \parskip,
-% and/or leading, also. Or perhaps we should compute them somehow.
-%
-\parseargdef\pagesizes{\pagesizesyyy #1,,\finish}
-\def\pagesizesyyy#1,#2,#3\finish{{%
-  \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \hsize=#2\relax \fi
-  \globaldefs = 1
-  %
-  \parskip = 3pt plus 2pt minus 1pt
-  \setleading{\textleading}%
-  %
-  \dimen0 = #1\relax
-  \advance\dimen0 by \voffset
-  %
-  \dimen2 = \hsize
-  \advance\dimen2 by \normaloffset
-  %
-  \internalpagesizes{#1}{\hsize}%
-                    {\voffset}{\normaloffset}%
-                    {\bindingoffset}{44pt}%
-                    {\dimen0}{\dimen2}%
-}}
-
-% Set default to letter.
-%
-\letterpaper
-
-
-\message{and turning on texinfo input format.}
-
-\def^^L{\par} % remove \outer, so ^L can appear in an @comment
-
-% DEL is a comment character, in case @c does not suffice.
-\catcode`\^^? = 14
-
-% Define macros to output various characters with catcode for normal text.
-\catcode`\"=\other \def\normaldoublequote{"}
-\catcode`\$=\other \def\normaldollar{$}%$ font-lock fix
-\catcode`\+=\other \def\normalplus{+}
-\catcode`\<=\other \def\normalless{<}
-\catcode`\>=\other \def\normalgreater{>}
-\catcode`\^=\other \def\normalcaret{^}
-\catcode`\_=\other \def\normalunderscore{_}
-\catcode`\|=\other \def\normalverticalbar{|}
-\catcode`\~=\other \def\normaltilde{~}
-
-% This macro is used to make a character print one way in \tt
-% (where it can probably be output as-is), and another way in other fonts,
-% where something hairier probably needs to be done.
-%
-% #1 is what to print if we are indeed using \tt; #2 is what to print
-% otherwise.  Since all the Computer Modern typewriter fonts have zero
-% interword stretch (and shrink), and it is reasonable to expect all
-% typewriter fonts to have this, we can check that font parameter.
-%
-\def\ifusingtt#1#2{\ifdim \fontdimen3\font=0pt #1\else #2\fi}
-
-% Same as above, but check for italic font.  Actually this also catches
-% non-italic slanted fonts since it is impossible to distinguish them from
-% italic fonts.  But since this is only used by $ and it uses \sl anyway
-% this is not a problem.
-\def\ifusingit#1#2{\ifdim \fontdimen1\font>0pt #1\else #2\fi}
-
-% Turn off all special characters except @
-% (and those which the user can use as if they were ordinary).
-% Most of these we simply print from the \tt font, but for some, we can
-% use math or other variants that look better in normal text.
-
-\catcode`\"=\active
-\def\activedoublequote{{\tt\char34}}
-\let"=\activedoublequote
-\catcode`\~=\active \def\activetilde{{\tt\char126}} \let~ = \activetilde
-\chardef\hat=`\^
-\catcode`\^=\active \def\activehat{{\tt \hat}} \let^ = \activehat
-
-\catcode`\_=\active
-\def_{\ifusingtt\normalunderscore\_}
-\let\realunder=_
-% Subroutine for the previous macro.
-\def\_{\leavevmode \kern.07em \vbox{\hrule width.3em height.1ex}\kern .07em }
-
-\catcode`\|=\active
-\def|{{\tt\char124}}
-
-\chardef \less=`\<
-\catcode`\<=\active \def\activeless{{\tt \less}}\let< = \activeless
-\chardef \gtr=`\>
-\catcode`\>=\active \def\activegtr{{\tt \gtr}}\let> = \activegtr
-\catcode`\+=\active \def+{{\tt \char 43}}
-\catcode`\$=\active \def${\ifusingit{{\sl\$}}\normaldollar}%$ font-lock fix
-
-% used for headline/footline in the output routine, in case the page
-% breaks in the middle of an @tex block.
-\def\texinfochars{%
-  \let< = \activeless
-  \let> = \activegtr
-  \let~ = \activetilde 
-  \let^ = \activehat
-  \markupsetuplqdefault \markupsetuprqdefault 
-  \let\b = \strong
-  \let\i = \smartitalic
-  % in principle, all other definitions in \tex have to be undone too.
-}
-
-% If a .fmt file is being used, characters that might appear in a file
-% name cannot be active until we have parsed the command line.
-% So turn them off again, and have \everyjob (or @setfilename) turn them on.
-% \otherifyactive is called near the end of this file.
-\def\otherifyactive{\catcode`+=\other \catcode`\_=\other}
-
-% Used sometimes to turn off (effectively) the active characters even after
-% parsing them.
-\def\turnoffactive{%
-  \normalturnoffactive
-  \otherbackslash
-}
-
-\catcode`\@=0
-
-% \backslashcurfont outputs one backslash character in current font,
-% as in \char`\\.
-\global\chardef\backslashcurfont=`\\
-\global\let\rawbackslashxx=\backslashcurfont  % let existing .??s files work
-
-% \realbackslash is an actual character `\' with catcode other, and
-% \doublebackslash is two of them (for the pdf outlines).
-{\catcode`\\=\other @gdef@realbackslash{\} @gdef@doublebackslash{\\}}
-
-% In texinfo, backslash is an active character; it prints the backslash
-% in fixed width font.
-\catcode`\\=\active  % @ for escape char from now on.
-
-% The story here is that in math mode, the \char of \backslashcurfont
-% ends up printing the roman \ from the math symbol font (because \char
-% in math mode uses the \mathcode, and plain.tex sets
-% \mathcode`\\="026E).  It seems better for @backslashchar{} to always
-% print a typewriter backslash, hence we use an explicit \mathchar,
-% which is the decimal equivalent of "715c (class 7, e.g., use \fam;
-% ignored family value; char position "5C).  We can't use " for the
-% usual hex value because it has already been made active.
-@def@normalbackslash{{@tt @ifmmode @mathchar29020 @else @backslashcurfont @fi}}
-@let@backslashchar = @normalbackslash % @backslashchar{} is for user documents.
-
-% On startup, @fixbackslash assigns:
-%  @let \ = @normalbackslash
-% \rawbackslash defines an active \ to do \backslashcurfont.
-% \otherbackslash defines an active \ to be a literal `\' character with
-% catcode other.  We switch back and forth between these.
-@gdef@rawbackslash{@let\=@backslashcurfont}
-@gdef@otherbackslash{@let\=@realbackslash}
-
-% Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of
-% the literal character `\'.  Also revert - to its normal character, in
-% case the active - from code has slipped in.
-%
-{@catcode`- = @active
- @gdef@normalturnoffactive{%
-   @let-=@normaldash
-   @let"=@normaldoublequote
-   @let$=@normaldollar %$ font-lock fix
-   @let+=@normalplus
-   @let<=@normalless
-   @let>=@normalgreater
-   @let\=@normalbackslash
-   @let^=@normalcaret
-   @let_=@normalunderscore
-   @let|=@normalverticalbar
-   @let~=@normaltilde
-   @markupsetuplqdefault
-   @markupsetuprqdefault
-   @unsepspaces
- }
-}
-
-% Make _ and + \other characters, temporarily.
-% This is canceled by @fixbackslash.
-@otherifyactive
-
-% If a .fmt file is being used, we don't want the `\input texinfo' to show up.
-% That is what \eatinput is for; after that, the `\' should revert to printing
-% a backslash.
-%
-@gdef@eatinput input texinfo{@fixbackslash}
-@global@let\ = @eatinput
-
-% On the other hand, perhaps the file did not have a `\input texinfo'. Then
-% the first `\' in the file would cause an error. This macro tries to fix
-% that, assuming it is called before the first `\' could plausibly occur.
-% Also turn back on active characters that might appear in the input
-% file name, in case not using a pre-dumped format.
-%
-@gdef@fixbackslash{%
-  @ifx\@eatinput @let\ = @normalbackslash @fi
-  @catcode`+=@active
-  @catcode`@_=@active
-}
-
-% Say @foo, not \foo, in error messages.
-@escapechar = `@@
-
-% These (along with & and #) are made active for url-breaking, so need
-% active definitions as the normal characters.
-@def@normaldot{.}
-@def@normalquest{?}
-@def@normalslash{/}
-
-% These look ok in all fonts, so just make them not special.
-% @hashchar{} gets its own user-level command, because of #line.
-@catcode`@& = @other @def@normalamp{&}
-@catcode`@# = @other @def@normalhash{#}
-@catcode`@% = @other @def@normalpercent{%}
-
-@let @hashchar = @normalhash
-
-@c Finally, make ` and ' active, so that txicodequoteundirected and
-@c txicodequotebacktick work right in, e.g., @w{@code{`foo'}}.  If we
-@c don't make ` and ' active, @code will not get them as active chars.
-@c Do this last of all since we use ` in the previous @catcode assignments.
-@catcode`@'=@active
-@catcode`@`=@active
-@markupsetuplqdefault
-@markupsetuprqdefault
-
-@c Local variables:
-@c eval: (add-hook 'write-file-hooks 'time-stamp)
-@c page-delimiter: "^\\\\message"
-@c time-stamp-start: "def\\\\texinfoversion{"
-@c time-stamp-format: "%:y-%02m-%02d.%02H"
-@c time-stamp-end: "}"
-@c End:
-
-@c vim:sw=2:
-
-@ignore
-   arch-tag: e1b36e32-c96e-4135-a41a-0b2efa2ea115
-@end ignore
index 2c75858..ee4f440 100644 (file)
@@ -71,7 +71,7 @@ Users may also write their own macros.
 All three may be combined.
 
 Present on most Unix systems owing to its long association
-with Unix manuals (manpages),
+with Unix manuals (man pages),
 groff is capable of producing typographically sophisticated documents
 while consuming only minimal system resources.
 
@@ -82,7 +82,7 @@ and its mirrors;
 the current development version is available from a
 .URL "https://\:savannah.gnu.org/\:git/\:?group=groff" "git repository" .
 .
-The current version is 1.22.3 (04-Nov-2014).
+The current version is 1.22.4 (Spring 2018).
 
 To view the git repository in your browser, use
 .URL "http://\:git.savannah.gnu.org/\:cgit/\:groff.git" \
@@ -100,10 +100,8 @@ For a special version of groff on the Microsoft operating systems, see
 (version 1.21).
 
 Groff was originally written and maintained by James Clark; it
-is now maintained by
-.MTO Ted.Harding@\:nessie.mcc.ac.uk "Ted Harding"
-and
-.MTO wl@\:gnu.org "Werner Lemberg" .
+is now maintained by the team at
+.MTO groff@\:gnu.org "" .
 .
 .HR
 .
@@ -134,10 +132,10 @@ Included in this release are implementations of `troff', `pic', `eqn',
 `tbl', `grn', `refer', `\-man', `\-mdoc', `\-mom', and `\-ms' macros, and
 drivers for `PostScript', `PDF', `TeX DVI' format, `HP LaserJet\~4'
 printers, `Canon CAPSL' printers, `HTML' and `XHTML' formats (beta status),
-and typewriter-like devices.  Also included is a modified version of the
-Berkeley `\-me' macros, the enhanced version `gxditview' of the X11
-`xditview' previewer, and an implementation of the `\-mm' macros contributed
-by J\[:o]rgen H\[:a]gg.
+and typewriter-like devices.
+Also included is a modified version of the Berkeley `\-me' macros, the
+enhanced version `gxditview' of the X11 `xditview' previewer, and an
+implementation of the `\-mm' macros contributed by J\[:o]rgen H\[:a]gg.
 
 See the file `INSTALL' for installation instructions on how to install from
 a release.
@@ -209,10 +207,6 @@ Additionally, producing `PDF' output directly with the `gropdf' device needs
 a working installation of `perl'.
 The same is true for some other preprocessors like `chem'.
 
-In Linux Debian, the installation of `texinfo' is dangerous, for it creates
-a file `install-info' that blocks the system installation.
-So the created `/usr/local/bin/install-info' must be renamed.
-
 The `groff' configure script searches for the X11 headers and libraries
 `Xaw' and `Xmu'.
 So the corresponding developer packages of your system must be installed,
@@ -226,14 +220,12 @@ Bug reports
 Please report bugs using the project's
 .URL https://\:savannah.gnu.org/\:projects/\:groff "bug tracker" .
 
-Alternatively, but less preferable, you may use the form in the file
-`BUG-REPORT'; the idea of this is to make sure that FSF has all the
-information it needs to fix the bug.
+You may use the form in the file `BUG-REPORT'; the idea of this is to
+make sure that FSF has all the information it needs to fix the bug.
 At the very least, read the `BUG-REPORT' form and make sure that you supply
 all the information that it asks for.
-Even if you are not sure that something is a bug, report it using
-`BUG-REPORT': this enables us to determine whether it really is a bug or
-not.
+Even if you are not sure that something is a bug, report it:
+this enables us to determine whether it really is a bug.
 .
 .
 .SH
@@ -243,21 +235,21 @@ Three mailing lists are available:
 
 .ULS
 .LI
-.MTO bug-groff@gnu.org bug-groff@gnu.org
-for reporting bugs and following bug reports
+.MTO bug\-groff@\:gnu.org
+for following bug reports;
 
 .LI
-.MTO groff@gnu.org groff@gnu.org
-for general discussion of groff
+.MTO groff@\:gnu.org
+for general discussion of groff; and
 
 .LI
-.MTO groff-commit@gnu.org groff-commit@gnu.org
-a read-only list showing commits to the git repository
+.MTO groff\-commit@\:gnu.org "" ,
+a read-only list showing commits to the git repository.
 .ULE
 
 To subscribe, send a mail to \[la]list\[ra]-request@\[la]domain\[ra]
 (example:
-.MTO groff-request@\:gnu.org groff-request@\:gnu.org
+.MTO groff\-request@\:gnu.org
 for the `groff' list) with the word `subscribe' in either the
 subject or body of the e-mail (don't include the quotes).
 Alternatively, you may subscribe by visiting the web pages at
@@ -480,9 +472,9 @@ gropdf
 .ULS
 .LI
 A new driver for generating PDF output directly, contributed by
-.MTO deri@chuzzlewit.myzen.co.uk "Deri James" .
+.MTO deri@\:chuzzlewit.myzen.co.uk "Deri James" .
 
-Note that this driver is written in Perl, thus you need a working Perl
+Note that this driver is written in Perl; you need a working Perl
 installation to run this output device.
 .ULE
 .
@@ -618,7 +610,7 @@ equivalents to the \eX and \eY escapes, respectively.
 .LI
 A new read-only number register `.br' is available which is set to\~1
 if a macro is called as .foo and to\~0 if called as 'foo.
-This allows to reliably modify requests.
+This allows reliable modification of requests.
 
 .in 2m
 .nf
@@ -694,7 +686,7 @@ nroff
 
 .ULS
 .LI
-Two new command line options `\-w' and `\-W' are accepted and passed to
+Two new command-line options `\-w' and `\-W' are accepted and passed to
 groff to enable and disable warning messages, respectively.
 .ULE
 .
@@ -726,9 +718,9 @@ Pic now supports up to 32 macro arguments (and up to 16 on EBCDIC
 platforms).
 
 .LI
-Heinz-Jürgen Örtel contributed code for two new keywords, `xslanted' and
-`yslanted', which can change the shape of boxes into arbitrary
-parallelograms.
+Heinz-J\[:u]rgen \[:O]rtel contributed code for two new keywords,
+`xslanted' and `yslanted', which can change the shape of boxes into
+arbitrary parallelograms.
 .ULE
 .
 .
@@ -804,11 +796,11 @@ grohtml
 XHTML support has been added.
 
 .LI
-New command line option `\-V' (to be used in XHTML mode) to produce an
+New command-line option `\-V' (to be used in XHTML mode) to produce an
 XHTML validator button.
 
 .LI
-New command line option `\-y' to produce a right-justified groff signature
+New command-line option `\-y' to produce a right-justified groff signature
 at the end of the document (in combination with option `\-V').
 .ULE
 .
@@ -897,7 +889,7 @@ This package currently works with `\-Tps' only.
 \-mandoc now supports multiple man pages (in either man or mdoc format).
 
 .LI
-Fabrice Ménard contributed locales support.
+Fabrice M\['e]nard contributed locales support.
 In particular, it is now possible to get French localization of the main
 macro packages (\-ms, \-mm, \-me, and \-mom, but not \-man and \-mdoc
 which are localized differently) by appending `-mfr' to the list of macro
@@ -933,7 +925,7 @@ DragonFly OS.
 
 .LI
 If mdoc is used to print multiple man pages (together with the \-rcR=0
-command line option), each man page now starts a new page.
+command-line option), each man page now starts a new page.
 
 .LI
 \-mtrace has been considerably improved, now showing number and string
@@ -1030,8 +1022,8 @@ The following macros aren't new but haven't been documented previously:
 .in
 
 .LI
-The following keywords have been extended.  Again, this isn't new but
-hasn't been documented previously:
+The following keywords have been extended.
+Again, this isn't new but hasn't been documented previously:
 
 .in 2m
 .ft B
@@ -1064,10 +1056,10 @@ This device driver has been raised to beta stage; its set of tags should
 be stable now.
 
 .LI
-New command line option `\-s' to set the base point size.
+New command-line option `\-s' to set the base point size.
 
 .LI
-New command line option `\-S' to set the split level while generating
+New command-line option `\-S' to set the split level while generating
 multiple files.
 .ULE
 .
@@ -1234,7 +1226,7 @@ groff
 
 .ULS
 .LI
-The argument of the command line option `\-I' is now also passed to troff
+The argument of the command-line option `\-I' is now also passed to troff
 and grops, specifying a directory to search for files on the command line,
 files named in `so' and `psbb' requests, and files named in \eX'ps:\~file'
 and \eX'ps:\~import' escapes.
@@ -1281,7 +1273,7 @@ They are equivalent to `dei' and `ami', respectively, but the macros
 are executed with compatibility mode off (similar to `de1' and `am1').
 
 .LI
-New command line option `\-I' to specify a directory for files (both
+New command-line option `\-I' to specify a directory for files (both
 those on the command line and those named in `psbb' requests).
 This is also handled by the groff wrapper program.
 
@@ -1322,7 +1314,7 @@ grap2graph
 .ULS
 .LI
 A new script contributed by
-.MTO esr@\:thyrsus.com "Eric S. Raymond" .
+.MTO esr@\:thyrsus.com "Eric S.\& Raymond" .
 It converts a grap diagram into a cropped image.
 Since it uses gs and the PNM library, virtually all graphics formats
 are available for output.
@@ -1345,7 +1337,7 @@ grops
 
 .ULS
 .LI
-New command line option `\-I' to specify a directory to search for files
+New command-line option `\-I' to specify a directory to search for files
 on the command line and files named in \eX'ps:\~import' and \eX'ps:\~file'
 escapes.
 This is also handled by the groff wrapper program.
@@ -1634,8 +1626,8 @@ The glyphs \e[*e] and \e[+e] have been exchanged to be in sync with
 all other devices.
 
 .LI
-The glyph \e[~=] is now called \e[|=].  Similar to other devices, \e[~=]
-is now another name for glyph \e[~~].
+The glyph \e[~=] is now called \e[|=].
+Similar to other devices, \e[~=] is now another name for glyph \e[~~].
 .ULE
 .
 .
@@ -1711,12 +1703,12 @@ and others made the man macros more customizable.
 
 .ULS
 .LI
-New command line options \-rFT, \-rIN, and \-rSN to set the vertical
+New command-line options \-rFT, \-rIN, and \-rSN to set the vertical
 location of the footer line, the body text indentation, and the
 sub-subheading indentation.
 
 .LI
-New command line option \-rHY (similar to the ms macros) to control
+New command-line option \-rHY (similar to the ms macros) to control
 hyphenation.
 
 .LI
@@ -1734,7 +1726,7 @@ explicitly specified on the command line.
 
 .LI
 troff's start-up file `troffrc' now includes `papersize.tmac' to set
-the paper size with the command line option `-dpaper=<size>'.
+the paper size with the command-line option `-dpaper=<size>'.
 
 Possible values for `<size>' are the same as the predefined `papersize'
 values in the DESC file (only lowercase; see the groff_font man page)
@@ -1742,7 +1734,7 @@ except \%a7-d7.
 An appended `l' (ell) character denotes landscape orientation.
 Examples: `a4', `c3l', `letterl'.
 
-Most output drivers need additional command line switches `\-p' and
+Most output drivers need additional command-line switches `\-p' and
 `\-l' to override the default paper length and orientation as set in
 the driver specific DESC file.
 
@@ -1855,9 +1847,9 @@ papersize /etc/papersize a4
 
 .LI
 A local font directory has been prepended to the default font path; it
-defaults to /usr/local/share/groff/site-font.  Similar to the normal
-font searching process, files must be placed into a dev\f[I]XXX\f[]
-subdirectory, e.g.
+defaults to /usr/local/share/groff/site-font.
+Similar to the normal font searching process, files must be placed into
+a dev\f[I]XXX\f[] subdirectory, e.g.
 
 .in 2m
 .ft C
@@ -2078,7 +2070,8 @@ a
 .fi
 .in
 
-The result is `x\~a'.  Using `tr', the result would be `x\~x'.
+The result is `x\~a'.
+Using `tr', the result would be `x\~x'.
 
 .LI
 The request `pvs' isn't new, but hasn't been documented before.
@@ -2121,7 +2114,7 @@ Additionally `\e\ ' and `\e~' are converted to single space characters.
 
 .LI
 The default tab distance in nroff mode is now 0.8i to be compatible
-with UNIX troff.
+with Unix troff.
 
 .LI
 Using the latin-1 input character 0xAD (soft hyphen) for the `shc'
@@ -2164,8 +2157,9 @@ A new macro `Ex' has been added to the mdoc macro package to document an
 exit status.
 
 .LI
-`troff.man' has been split.  Differences to UNIX troff are now documented
-in the new man page `groff_diff.man'.
+`troff.man' has been split.
+Differences to Unix troff are now documented in the new man page
+`groff_diff.man'.
 
 .LI
 The PSPIC macro has been extended to work with DVI output (`pspic.tmac' is
@@ -2178,7 +2172,7 @@ Additionally, it works in compatibility mode.
 
 .LI
 `troff.1' has been split.
-Differences to UNIX troff are now documented in the new man page
+Differences to Unix troff are now documented in the new man page
 `groff_diff.7'.
 
 .LI
@@ -2266,8 +2260,8 @@ groff
 
 .ULS
 .LI
-The new command line `\-c' disables color output (which is always disabled
-in compatibility mode).
+The new command-line option `\-c' disables color output (which is always
+disabled in compatibility mode).
 .ULE
 .
 .
@@ -2276,7 +2270,7 @@ Nroff
 
 .ULS
 .LI
-Two new command line options `\-c' and `\-C'; the former passes `\-c' to
+Two new command-line options `\-c' and `\-C'; the former passes `\-c' to
 grotty (switching to the old output scheme); the latter passes `\-C' to
 groff (enabling compatibility mode).
 .ULE
@@ -2311,7 +2305,7 @@ Pic2graph
 .ULS
 .LI
 A new script contributed by
-.MTO esr@\:thyrsus.com "Eric S.\~Raymond" .
+.MTO esr@\:thyrsus.com "Eric S.\Raymond" .
 It converts a PIC diagram into a cropped image.
 Since it uses gs and the PNM library, virtually all graphics formats
 are available for output.
@@ -2324,7 +2318,7 @@ Eqn2graph
 .ULS
 .LI
 A new script contributed by
-.MTO esr@\:thyrsus.com "Eric S.\~Raymond" .
+.MTO esr@\:thyrsus.com "Eric S.\Raymond" .
 It converts an EQN diagram into a cropped image.
 Since it uses gs and the PNM library, virtually all graphics formats
 are available for output.
@@ -2337,7 +2331,7 @@ Groffer
 .ULS
 .LI
 A new script contributed by
-.MTO groff-bernd.warken-72@web.de "Bernd Warken" .
+.MTO groff\-bernd.warken\-72@web.de "Bernd Warken" .
 It displays groff files and man pages on X and tty, taking care of most
 parameters automatically.
 .ULE
@@ -2522,3 +2516,7 @@ troff completely ignores it.
 .LNE
 .
 .\" EOF
+.\" Local Variables:
+.\" mode: nroff
+.\" End:
+.\" vim: filetype=groff:
diff --git a/font/devX100-12/Makefile.sub b/font/devX100-12/Makefile.sub
deleted file mode 100644 (file)
index afc4107..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-# Makefile.sub for `font devX100-12'
-#
-# File position: <groff-source>/font/devX100-12/Makefile.sub
-#
-# Copyright (C) 2014
-#   Free Software Foundation, Inc.
-#
-# Last update: 2 Sep 2014
-#
-# This file is part of `font utf8' which is part of `groff'.
-#
-# `groff' is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 2 of the License, or
-# (at your option) any later version.
-#
-# `groff' 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
-# <http://www.gnu.org/licenses/gpl-2.0.html>.
-#
-########################################################################
-
-DEV=X100-12
-DEVFILES=DESC TR TI TB TBI CR CI CB CBI HR HI HB HBI NR NI NB NBI S
-
-########################################################################
-# Emacs settings
-########################################################################
-#
-# Local Variables:
-# mode: makefile
-# End:
diff --git a/font/devX100-12/devX100-12.am b/font/devX100-12/devX100-12.am
new file mode 100644 (file)
index 0000000..10dfa91
--- /dev/null
@@ -0,0 +1,56 @@
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Last update: 13 Aug 2015
+#
+# This file is part of 'groff'.
+#
+# 'groff' 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.
+#
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+
+DEVX10012FONTS = \
+  font/devX100-12/DESC \
+  font/devX100-12/TR \
+  font/devX100-12/TI \
+  font/devX100-12/TB \
+  font/devX100-12/TBI \
+  font/devX100-12/CR \
+  font/devX100-12/CI \
+  font/devX100-12/CB \
+  font/devX100-12/CBI \
+  font/devX100-12/HR \
+  font/devX100-12/HI \
+  font/devX100-12/HB \
+  font/devX100-12/HBI \
+  font/devX100-12/NR \
+  font/devX100-12/NI \
+  font/devX100-12/NB \
+  font/devX100-12/NBI \
+  font/devX100-12/S
+
+if !WITHOUT_X11
+devX10012fontdir = $(fontdir)/devX100-12
+devX10012font_DATA = $(DEVX10012FONTS)
+endif
+
+EXTRA_DIST += $(DEVX10012FONTS)
+
+
+########################################################################
+# Editor settings
+########################################################################
+#
+# Local Variables:
+# mode: makefile-automake
+# fill-column: 72
+# End:
+# vim: set filetype=automake textwidth=72:
diff --git a/font/devX100/devX100.am b/font/devX100/devX100.am
new file mode 100644 (file)
index 0000000..daa6756
--- /dev/null
@@ -0,0 +1,56 @@
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Last update: 13 Aug 2015
+#
+# This file is part of 'groff'.
+#
+# 'groff' 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.
+#
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+
+DEVX100FONTS = \
+  font/devX100/DESC \
+  font/devX100/TR \
+  font/devX100/TI \
+  font/devX100/TB \
+  font/devX100/TBI \
+  font/devX100/CR \
+  font/devX100/CI \
+  font/devX100/CB \
+  font/devX100/CBI \
+  font/devX100/HR \
+  font/devX100/HI \
+  font/devX100/HB \
+  font/devX100/HBI \
+  font/devX100/NR \
+  font/devX100/NI \
+  font/devX100/NB \
+  font/devX100/NBI \
+  font/devX100/S
+
+if !WITHOUT_X11
+devX100fontdir = $(fontdir)/devX100
+devX100font_DATA = $(DEVX100FONTS)
+endif
+
+EXTRA_DIST += $(DEVX100FONTS)
+
+
+########################################################################
+# Editor settings
+########################################################################
+#
+# Local Variables:
+# mode: makefile-automake
+# fill-column: 72
+# End:
+# vim: set filetype=automake textwidth=72:
diff --git a/font/devX75-12/Makefile.sub b/font/devX75-12/Makefile.sub
deleted file mode 100644 (file)
index 5b359f4..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-# Makefile.sub for `font devX75-12'
-#
-# File position: <groff-source>/font/devX75-12/Makefile.sub
-#
-# Copyright (C) 2014
-#   Free Software Foundation, Inc.
-#
-# Last update: 2 Sep 2014
-#
-# This file is part of `font utf8' which is part of `groff'.
-#
-# `groff' is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 2 of the License, or
-# (at your option) any later version.
-#
-# `groff' 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
-# <http://www.gnu.org/licenses/gpl-2.0.html>.
-#
-########################################################################
-
-DEV=X75-12
-DEVFILES=DESC TR TI TB TBI CR CI CB CBI HR HI HB HBI NR NI NB NBI S
-
-########################################################################
-# Emacs settings
-########################################################################
-#
-# Local Variables:
-# mode: makefile
-# End:
diff --git a/font/devX75-12/devX75-12.am b/font/devX75-12/devX75-12.am
new file mode 100644 (file)
index 0000000..fe751ce
--- /dev/null
@@ -0,0 +1,54 @@
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Last update: 13 Aug 2015
+#
+# This file is part of 'groff'.
+#
+# 'groff' 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.
+#
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+
+DEVX7512FONTS = \
+  font/devX75-12/DESC \
+  font/devX75-12/TR \
+  font/devX75-12/TI \
+  font/devX75-12/TB \
+  font/devX75-12/TBI \
+  font/devX75-12/CR \
+  font/devX75-12/CI \
+  font/devX75-12/CB \
+  font/devX75-12/CBI \
+  font/devX75-12/HR \
+  font/devX75-12/HI \
+  font/devX75-12/HB \
+  font/devX75-12/HBI \
+  font/devX75-12/NR \
+  font/devX75-12/NI \
+  font/devX75-12/NB \
+  font/devX75-12/NBI \
+  font/devX75-12/S
+if !WITHOUT_X11
+devX7512fontdir = $(fontdir)/devX75-12
+devX7512font_DATA = $(DEVX7512FONTS)
+endif
+EXTRA_DIST += $(DEVX7512FONTS)
+
+
+########################################################################
+# Editor settings
+########################################################################
+#
+# Local Variables:
+# mode: makefile-automake
+# fill-column: 72
+# End:
+# vim: set filetype=automake textwidth=72:
diff --git a/font/devX75/devX75.am b/font/devX75/devX75.am
new file mode 100644 (file)
index 0000000..0d2507e
--- /dev/null
@@ -0,0 +1,56 @@
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Last update: 13 Aug 2015
+#
+# This file is part of 'groff'.
+#
+# 'groff' 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.
+#
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+
+DEVX75FONTS = \
+  font/devX75/DESC \
+  font/devX75/TR \
+  font/devX75/TI \
+  font/devX75/TB \
+  font/devX75/TBI \
+  font/devX75/CR \
+  font/devX75/CI \
+  font/devX75/CB \
+  font/devX75/CBI \
+  font/devX75/HR \
+  font/devX75/HI \
+  font/devX75/HB \
+  font/devX75/HBI \
+  font/devX75/NR \
+  font/devX75/NI \
+  font/devX75/NB \
+  font/devX75/NBI \
+  font/devX75/S
+
+if !WITHOUT_X11
+devX75fontdir = $(fontdir)/devX75
+devX75font_DATA = $(DEVX75FONTS)
+endif
+
+EXTRA_DIST += $(DEVX75FONTS)
+
+
+########################################################################
+# Editor settings
+########################################################################
+#
+# Local Variables:
+# mode: makefile-automake
+# fill-column: 72
+# End:
+# vim: set filetype=automake textwidth=72:
diff --git a/font/devascii/Makefile.sub b/font/devascii/Makefile.sub
deleted file mode 100644 (file)
index 93b0ebd..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-# Makefile.sub for `font devascii'
-#
-# File position: <groff-source>/font/devascii/Makefile.sub
-#
-# Copyright (C) 2014
-#   Free Software Foundation, Inc.
-#
-# Last update: 2 Sep 2014
-#
-# This file is part of `font utf8' which is part of `groff'.
-#
-# `groff' is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 2 of the License, or
-# (at your option) any later version.
-#
-# `groff' 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
-# <http://www.gnu.org/licenses/gpl-2.0.html>.
-#
-########################################################################
-
-DEV=ascii
-FONTS=R I B BI
-DEVFILES=$(FONTS) DESC
-MOSTLYCLEANADD=$(FONTS) DESC
-
-RES=240
-CPI=10
-LPI=6
-
-RM=rm -f
-
-$(FONTS): R.proto
-       @echo Making $@
-       @$(RM) $@
-       @charwidth=`expr $(RES) / $(CPI)` ; \
-        sed -e "s/^name [A-Z]*$$/name $@/" \
-            -e \
-             "s/^\\([^ ]*\\)   [0-9][0-9]*     /\\1    $$charwidth     /" \
-            -e "s/^spacewidth [0-9][0-9]*$$/spacewidth $$charwidth/" \
-            -e "s/^internalname .*$$/internalname $@/" \
-            -e "/^internalname/s/BI/3/" \
-            -e "/^internalname/s/B/2/" \
-            -e "/^internalname/s/I/1/" \
-            -e "/^internalname .*[^ 0-9]/d" \
-            $(srcdir)/R.proto >$@
-
-DESC: DESC.proto
-       @echo Making $@
-       @sed -e "s/^res .*$$/res $(RES)/" \
-            -e "s/^hor .*$$/hor `expr $(RES) / $(CPI)`/" \
-            -e "s/^vert .*$$/vert `expr $(RES) / $(LPI)`/" \
-            -e "s/^fonts .*$$/fonts `set $(FONTS); echo $$#` $(FONTS)/" \
-            $(srcdir)/DESC.proto >$@
-
-########################################################################
-# Emacs settings
-########################################################################
-#
-# Local Variables:
-# mode: makefile
-# End:
diff --git a/font/devascii/devascii.am b/font/devascii/devascii.am
new file mode 100644 (file)
index 0000000..d195841
--- /dev/null
@@ -0,0 +1,57 @@
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Last update: 13 Aug 2015
+#
+# This file is part of 'groff'.
+#
+# 'groff' 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.
+#
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+
+devascii_srcdir = $(top_srcdir)/font/devascii
+DEVASCIIFONTS = R I B BI
+DEVASCIIFONTSFILES = \
+  font/devascii/R font/devascii/I font/devascii/B font/devascii/BI
+
+DEVASCIIRES = 240
+DEVASCIICPI = 10
+DEVASCIILPI = 6
+
+devasciifontdir = $(fontdir)/devascii
+devasciifont_DATA = $(DEVASCIIFONTSFILES) font/devascii/DESC
+MOSTLYCLEANFILES += $(DEVASCIIFONTSFILES) font/devascii/DESC
+EXTRA_DIST += \
+  font/devascii/R.proto \
+  font/devascii/DESC.proto
+
+$(DEVASCIIFONTSFILES): $(devascii_srcdir)/R.proto
+       $(AM_V_GEN)$(MKDIR_P) `dirname $@` \
+       && $(RM) $@ \
+       && $(SHELL) $(GENFONTSSH) $(devascii_srcdir)/R.proto \
+            $(DEVASCIIRES) $(DEVASCIICPI) `basename $@` > $@
+
+font/devascii/DESC: $(devascii_srcdir)/DESC.proto
+       $(AM_V_GEN)$(MKDIR_P) `dirname $@` \
+       && $(SHELL) $(GENDESCSH) $(devascii_srcdir)/DESC.proto \
+            $(DEVASCIIRES) $(DEVASCIICPI) $(DEVASCIILPI) \
+            $(DEVASCIIFONTS) > $@
+
+
+########################################################################
+# Editor settings
+########################################################################
+#
+# Local Variables:
+# mode: makefile-automake
+# fill-column: 72
+# End:
+# vim: set filetype=automake textwidth=72:
diff --git a/font/devcp1047/Makefile.sub b/font/devcp1047/Makefile.sub
deleted file mode 100644 (file)
index eac7306..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-# Makefile.sub for `font devcp1047'
-#
-# File position: <groff-source>/font/devcp1047/Makefile.sub
-#
-# Copyright (C) 2014
-#   Free Software Foundation, Inc.
-#
-# Last update: 2 Sep 2014
-#
-# This file is part of `font utf8' which is part of `groff'.
-#
-# `groff' is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 2 of the License, or
-# (at your option) any later version.
-#
-# `groff' 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
-# <http://www.gnu.org/licenses/gpl-2.0.html>.
-#
-########################################################################
-
-DEV=cp1047
-FONTS=R I B BI
-DEVFILES=$(FONTS) DESC
-MOSTLYCLEANADD=$(FONTS) DESC
-
-RES=240
-CPI=10
-LPI=6
-
-RM=rm -f
-
-$(FONTS): R.proto
-       @echo Making $@
-       @$(RM) $@
-       @charwidth=`expr $(RES) / $(CPI)` ; \
-        sed -e "s/^name [A-Z]*$$/name $@/" \
-            -e \
-             "s/^\\([^ ]*\\)   [0-9][0-9]*     /\\1    $$charwidth     /" \
-            -e "s/^spacewidth [0-9][0-9]*$$/spacewidth $$charwidth/" \
-            -e "s/^internalname .*$$/internalname $@/" \
-            -e "/^internalname/s/BI/3/" \
-            -e "/^internalname/s/B/2/" \
-            -e "/^internalname/s/I/1/" \
-            -e "/^internalname .*[^ 0-9]/d" \
-            $(srcdir)/R.proto >$@
-
-DESC: DESC.proto
-       @echo Making $@
-       @sed -e "s/^res .*$$/res $(RES)/" \
-            -e "s/^hor .*$$/hor `expr $(RES) / $(CPI)`/" \
-            -e "s/^vert .*$$/vert `expr $(RES) / $(LPI)`/" \
-            -e "s/^fonts .*$$/fonts `set $(FONTS); echo $$#` $(FONTS)/" \
-            $(srcdir)/DESC.proto >$@
-
-########################################################################
-# Emacs settings
-########################################################################
-#
-# Local Variables:
-# mode: makefile
-# End:
diff --git a/font/devcp1047/devcp1047.am b/font/devcp1047/devcp1047.am
new file mode 100644 (file)
index 0000000..34cc8c3
--- /dev/null
@@ -0,0 +1,55 @@
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Last update: 13 Aug 2015
+#
+# This file is part of 'groff'.
+#
+# 'groff' 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.
+#
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+
+devcp1047_srcdir = $(top_srcdir)/font/devcp1047
+DEVCP1047FONTS = R I B BI
+DEVCP1047FONTSFILES = \
+  font/devcp1047/R font/devcp1047/I font/devcp1047/B font/devcp1047/BI
+
+DEVCP1047RES = 240
+DEVCP1047CPI = 10
+DEVCP1047LPI = 6
+
+devcp1047fontdir = $(fontdir)/devcp1047
+devcp1047font_DATA = $(DEVCP1047FONTSFILES) font/devcp1047/DESC
+MOSTLYCLEANFILES += $(DEVCP1047FONTSFILES) font/devcp1047/DESC
+EXTRA_DIST += font/devcp1047/R.proto font/devcp1047/DESC.proto
+
+$(DEVCP1047FONTSFILES): $(devcp1047_srcdir)/R.proto
+       $(AM_V_GEN)$(MKDIR_P) `dirname $@` \
+       && $(RM) $@ \
+       && $(SHELL) $(GENFONTSSH) $(devcp1047_srcdir)/R.proto \
+            $(DEVCP1047RES) $(DEVCP1047CPI) `basename $@` > $@
+
+font/devcp1047/DESC: $(devcp1047_srcdir)/DESC.proto
+       $(AM_V_GEN)$(MKDIR_P) `dirname $@` \
+       && $(SHELL) $(GENDESCSH) $(devcp1047_srcdir)/DESC.proto \
+            $(DEVCP1047RES) $(DEVCP1047CPI) $(DEVCP1047LPI) \
+            $(DEVCP1047FONTS) > $@
+
+
+########################################################################
+# Editor settings
+########################################################################
+#
+# Local Variables:
+# mode: makefile-automake
+# fill-column: 72
+# End:
+# vim: set filetype=automake textwidth=72:
index e39575d..8db0518 100644 (file)
@@ -43,8 +43,7 @@ dq    550498,640797,0,182045  2       0042
 "      "
 sh     550498,640797,0,182045  2       0043
 #      "
-Do     550498,640797,0,182045  2       0044
-$      "
+Po     550498,640797,0,182045  2       0044
 %      550498,728178,87381,182045      3       0045
 &      550498,640797,0,182045  2       0046
 cq     550498,640797,0,182045  2       0047
diff --git a/font/devdvi/Makefile.sub b/font/devdvi/Makefile.sub
deleted file mode 100644 (file)
index 8e1384d..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-# Makefile.sub for `font devdvi'
-#
-# File position: <groff-source>/font/devdvi/Makefile.sub
-#
-# Copyright (C) 2014
-#   Free Software Foundation, Inc.
-#
-# Last update: 2 Sep 2014
-#
-# This file is part of `font utf8' which is part of `groff'.
-#
-# `groff' is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 2 of the License, or
-# (at your option) any later version.
-#
-# `groff' 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
-# <http://www.gnu.org/licenses/gpl-2.0.html>.
-#
-########################################################################
-
-DEV=dvi
-DEVFILES=DESC \
-  TR TI TB TBI CW CWI HR HI HB HBI \
-  TREC TIEC TBEC TBIEC CWEC CWIEC HREC HIEC HBEC HBIEC \
-  TRTC TITC TBTC TBITC CWTC CWITC HRTC HITC HBTC HBITC \
-  MI S EX SA SB SC \
-  generate/Makefile \
-  generate/msam.map generate/msbm.map \
-  generate/texb.map generate/texex.map generate/texi.map generate/texmi.map \
-  generate/texr.map generate/texsy.map generate/textt.map generate/textex.map \
-  generate/ec.map generate/tc.map
-DEVSCRIPTS=generate/CompileFonts
-
-MOSTLYCLEANADD=DESC
-
-DESC: DESC.in
-       cat $(srcdir)/DESC.in >DESC
-       if test "$(PAGE)" = A4; then \
-         echo "papersize a4" >>DESC; \
-       else \
-         echo "papersize letter" >>DESC; \
-       fi
-       test -z '$(DVIPRINT)' || echo print '$(DVIPRINT)' >>DESC
-
-########################################################################
-# Emacs settings
-########################################################################
-#
-# Local Variables:
-# mode: makefile
-# End:
diff --git a/font/devdvi/devdvi.am b/font/devdvi/devdvi.am
new file mode 100644 (file)
index 0000000..a5b5f11
--- /dev/null
@@ -0,0 +1,102 @@
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Last update: 13 Aug 2015
+#
+# This file is part of 'groff'.
+#
+# 'groff' 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.
+#
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+
+devdvi_srcdir = $(top_srcdir)/font/devdvi
+DEVDVIFONTFILES = \
+  font/devdvi/TR \
+  font/devdvi/TI \
+  font/devdvi/TB \
+  font/devdvi/TBI \
+  font/devdvi/CW \
+  font/devdvi/CWI \
+  font/devdvi/HR \
+  font/devdvi/HI \
+  font/devdvi/HB \
+  font/devdvi/HBI \
+  font/devdvi/TREC \
+  font/devdvi/TIEC \
+  font/devdvi/TBEC \
+  font/devdvi/TBIEC \
+  font/devdvi/CWEC \
+  font/devdvi/CWIEC \
+  font/devdvi/HREC \
+  font/devdvi/HIEC \
+  font/devdvi/HBEC \
+  font/devdvi/HBIEC \
+  font/devdvi/TRTC \
+  font/devdvi/TITC \
+  font/devdvi/TBTC \
+  font/devdvi/TBITC \
+  font/devdvi/CWTC \
+  font/devdvi/CWITC \
+  font/devdvi/HRTC \
+  font/devdvi/HITC \
+  font/devdvi/HBTC \
+  font/devdvi/HBITC \
+  font/devdvi/MI \
+  font/devdvi/S \
+  font/devdvi/EX \
+  font/devdvi/SA \
+  font/devdvi/SB \
+  font/devdvi/SC
+devdvifontdir = $(fontdir)/devdvi
+devdvifont_DATA = $(DEVDVIFONTFILES) font/devdvi/DESC
+
+DEVDVIGENFILES = \
+  font/devdvi/generate/Makefile \
+  font/devdvi/generate/msam.map \
+  font/devdvi/generate/msbm.map \
+  font/devdvi/generate/texb.map \
+  font/devdvi/generate/texex.map \
+  font/devdvi/generate/texi.map \
+  font/devdvi/generate/texmi.map \
+  font/devdvi/generate/texr.map \
+  font/devdvi/generate/texsy.map \
+  font/devdvi/generate/textt.map \
+  font/devdvi/generate/textex.map \
+  font/devdvi/generate/ec.map \
+  font/devdvi/generate/tc.map \
+  font/devdvi/generate/CompileFonts
+devdvigendir = $(fontdir)/devdvi/generate
+devdvigen_DATA = $(DEVDVIGENFILES)
+
+EXTRA_DIST += $(DEVDVIFONTFILES) $(DEVDVIGENFILES) font/devdvi/DESC.in
+MOSTLYCLEANFILES += font/devdvi/DESC
+
+font/devdvi/DESC: $(devdvi_srcdir)/DESC.in
+       $(AM_V_GEN)$(MKDIR_P) `dirname $@` \
+       && cat $(devdvi_srcdir)/DESC.in >$@ \
+       && if test "$(PAGE)" = A4; then \
+            echo "papersize a4" >>$@; \
+          else \
+            echo "papersize letter" >>$@; \
+          fi \
+       && (test -z '$(DVIPRINT)' \
+           || echo print '$(DVIPRINT)' >>$@)
+
+
+########################################################################
+# Editor settings
+########################################################################
+#
+# Local Variables:
+# mode: makefile-automake
+# fill-column: 72
+# End:
+# vim: set filetype=automake textwidth=72:
index cea9ee5..706e43e 100644 (file)
@@ -1,8 +1,8 @@
-# Makefile for `font devdvi/generate'
+# Makefile for 'font devdvi/generate'
 #
 # File position: <groff-source>/font/devdvi/generate/Makefile
 #
-# Copyright (C) 1989-2002, 2009 Free Software Foundation, Inc.
+# Copyright (C) 1989-2018 Free Software Foundation, Inc.
 #      Written by James Clark (jjc@jclark.com)
 #
 # This file is part of groff.
 # Software Foundation, either version 3 of the License, or
 # (at your option) any later version.
 #
-# groff is distributed in the hope that it will be useful, but WITHOUT ANY
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# groff 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 <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # This is set up so you can do:
 #   make -f generate/Makefile
 # in the parent directory of the directory containing this file.
 
-# Note that the following font files have manually added kerning values for
-# `` and '': B, BI, I, R.
+# Note manually-added kerning values for `` and '' in the font files:
+#   B, BI, I, R.
 
 srcdir=generate
 tfmdir=/usr/local/lib/groff-tfm
@@ -70,9 +70,9 @@ CW: $(srcdir)/textt.map
        $(TFMTODIT) $(SPECIALFLAG) \
          $(tfmdir)/cmtt10.tfm $(srcdir)/textt.map $@
 
-CWI: $(srcdir)/textt.map
+CWI: $(srcdir)/texitt.map
        $(TFMTODIT) \
-         $(tfmdir)/cmitt10.tfm $(srcdir)/textt.map $@
+         $(tfmdir)/cmitt10.tfm $(srcdir)/texitt.map $@
 
 MI: $(srcdir)/texmi.map
        $(TFMTODIT) $(SPECIALFLAG) -k 0177 \
diff --git a/font/devhtml/Makefile.sub b/font/devhtml/Makefile.sub
deleted file mode 100644 (file)
index e2b2e1e..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-# Makefile.sub for `font devhtml'
-#
-# File position: <groff-source>/font/devhtml/Makefile.sub
-#
-# Copyright (C) 2014
-#   Free Software Foundation, Inc.
-#
-# Last update: 2 Sep 2014
-#
-# This file is part of `font utf8' which is part of `groff'.
-#
-# `groff' is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 2 of the License, or
-# (at your option) any later version.
-#
-# `groff' 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
-# <http://www.gnu.org/licenses/gpl-2.0.html>.
-#
-########################################################################
-
-DEV=html
-PROTOFONTS=R I B BI CR CI CB CBI
-FONTS=$(PROTOFONTS) S
-DEVFILES=$(FONTS) DESC
-MOSTLYCLEANADD=$(FONTS) DESC
-
-RES=240
-CPI=10
-LPI=6
-
-RM=rm -f
-
-$(FONTS): R.proto
-       @echo Making $@
-       @$(RM) $@
-       @charwidth=`expr $(RES) / $(CPI)` ; \
-        sed -e "s/^name [A-Z]*$$/name $@/" \
-            -e \
-             "s/^\\([^ ]*\\)   [0-9][0-9]*     /\\1    $$charwidth     /" \
-            -e "s/^spacewidth [0-9][0-9]*$$/spacewidth $$charwidth/" \
-            -e "s/^internalname .*$$/internalname $@/" \
-            -e "/^internalname/s/CR/4/" \
-            -e "/^internalname/s/BI/3/" \
-            -e "/^internalname/s/B/2/" \
-            -e "/^internalname/s/I/1/" \
-            -e "/^internalname .*[^ 0-9]/d" \
-            $(srcdir)/R.proto >$@
-
-DESC: DESC.proto
-       @echo Making $@
-       @sed -e "s/^res .*$$/res $(RES)/" \
-            -e "s/^hor .*$$/hor `expr $(RES) / $(CPI)`/" \
-            -e "s/^vert .*$$/vert `expr $(RES) / $(LPI)`/" \
-            -e "s/^fonts .*$$/fonts `set $(FONTS); echo $$#` $(FONTS)/" \
-            $(srcdir)/DESC.proto >$@
-       @echo "image_generator $(GHOSTSCRIPT)" >> $@
-
-########################################################################
-# Emacs settings
-########################################################################
-#
-# Local Variables:
-# mode: makefile
-# End:
diff --git a/font/devhtml/devhtml.am b/font/devhtml/devhtml.am
new file mode 100644 (file)
index 0000000..617e146
--- /dev/null
@@ -0,0 +1,66 @@
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Last update: 13 Aug 2015
+#
+# This file is part of 'groff'.
+#
+# 'groff' 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.
+#
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+
+devhtml_srcdir = $(top_srcdir)/font/devhtml
+DEVHTMLFONTS = R I B BI CR CI CB CBI S
+DEVHTMLFONTSFILES = \
+  font/devhtml/R \
+  font/devhtml/I \
+  font/devhtml/B \
+  font/devhtml/BI \
+  font/devhtml/CR \
+  font/devhtml/CI \
+  font/devhtml/CB \
+  font/devhtml/CBI \
+  font/devhtml/S
+
+DEVHTMLRES = 240
+DEVHTMLCPI = 10
+DEVHTMLLPI = 6
+
+devhtmlfontdir = $(fontdir)/devhtml
+devhtmlfont_DATA = $(DEVHTMLFONTSFILES) font/devhtml/DESC
+MOSTLYCLEANFILES += $(DEVHTMLFONTSFILES) font/devhtml/DESC
+EXTRA_DIST += \
+  font/devhtml/R.proto \
+  font/devhtml/DESC.proto \
+  font/devhtml/R.in
+
+$(DEVHTMLFONTSFILES): $(devhtml_srcdir)/R.proto
+       $(AM_V_GEN)$(MKDIR_P) `dirname $@` \
+       && $(RM) $@ \
+       && $(SHELL) $(GENFONTSSH) $(devhtml_srcdir)/R.proto \
+            $(DEVHTMLRES) $(DEVHTMLCPI) `basename $@` > $@
+
+font/devhtml/DESC: $(devhtml_srcdir)/DESC.proto
+       $(AM_V_GEN)$(MKDIR_P) `dirname $@` \
+       && $(SHELL) $(GENDESCSH) $(devhtml_srcdir)/DESC.proto \
+            $(DEVHTMLRES) $(DEVHTMLCPI) $(DEVHTMLLPI) $(DEVHTMLFONTS) > $@ \
+       && echo "image_generator $(GHOSTSCRIPT)" >> $@
+
+
+########################################################################
+# Editor settings
+########################################################################
+#
+# Local Variables:
+# mode: makefile-automake
+# fill-column: 72
+# End:
+# vim: set filetype=automake textwidth=72:
diff --git a/font/devlatin1/Makefile.sub b/font/devlatin1/Makefile.sub
deleted file mode 100644 (file)
index ae8eb28..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-# Makefile.sub for `font devlatin1'
-#
-# File position: <groff-source>/font/devlatin1/Makefile.sub
-#
-# Copyright (C) 2014 Free Software Foundation, Inc.
-#
-# This file is part of `font utf8' which is part of `groff'.
-#
-# `groff' is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 2 of the License, or
-# (at your option) any later version.
-#
-# `groff' 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
-# <http://www.gnu.org/licenses/gpl-2.0.html>.
-#
-########################################################################
-
-DEV=latin1
-FONTS=R I B BI
-DEVFILES=$(FONTS) DESC
-MOSTLYCLEANADD=$(FONTS) DESC
-
-RES=240
-CPI=10
-LPI=6
-
-RM=rm -f
-
-$(FONTS): R.proto
-       @echo Making $@
-       @$(RM) $@
-       @charwidth=`expr $(RES) / $(CPI)` ; \
-        sed -e "s/^name [A-Z]*$$/name $@/" \
-            -e \
-             "s/^\\([^ ]*\\)   [0-9][0-9]*     /\\1    $$charwidth     /" \
-            -e "s/^spacewidth [0-9][0-9]*$$/spacewidth $$charwidth/" \
-            -e "s/^internalname .*$$/internalname $@/" \
-            -e "/^internalname/s/BI/3/" \
-            -e "/^internalname/s/B/2/" \
-            -e "/^internalname/s/I/1/" \
-            -e "/^internalname .*[^ 0-9]/d" \
-            $(srcdir)/R.proto >$@
-
-DESC: DESC.proto
-       @echo Making $@
-       @sed -e "s/^res .*$$/res $(RES)/" \
-            -e "s/^hor .*$$/hor `expr $(RES) / $(CPI)`/" \
-            -e "s/^vert .*$$/vert `expr $(RES) / $(LPI)`/" \
-            -e "s/^fonts .*$$/fonts `set $(FONTS); echo $$#` $(FONTS)/" \
-            $(srcdir)/DESC.proto >$@
-
-########################################################################
-# Emacs settings
-########################################################################
-#
-# Local Variables:
-# mode: makefile
-# End:
diff --git a/font/devlatin1/devlatin1.am b/font/devlatin1/devlatin1.am
new file mode 100644 (file)
index 0000000..6f00e01
--- /dev/null
@@ -0,0 +1,55 @@
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Last update: 13 Aug 2015
+#
+# This file is part of 'groff'.
+#
+# 'groff' 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.
+#
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+
+devlatin1_srcdir = $(top_srcdir)/font/devlatin1
+DEVLATIN1FONTS = R I B BI
+DEVLATIN1FONTSFILES = \
+  font/devlatin1/R font/devlatin1/I font/devlatin1/B font/devlatin1/BI
+
+DEVLATIN1RES = 240
+DEVLATIN1CPI = 10
+DEVLATIN1LPI = 6
+
+devlatin1fontdir = $(fontdir)/devlatin1
+devlatin1font_DATA = $(DEVLATIN1FONTSFILES) font/devlatin1/DESC
+MOSTLYCLEANFILES += $(DEVLATIN1FONTSFILES) font/devlatin1/DESC
+EXTRA_DIST += font/devlatin1/R.proto font/devlatin1/DESC.proto
+
+$(DEVLATIN1FONTSFILES): $(devlatin1_srcdir)/R.proto
+       $(AM_V_GEN)$(MKDIR_P) `dirname $@` \
+       && $(RM) $@ \
+       && $(SHELL) $(GENFONTSSH) $(devlatin1_srcdir)/R.proto \
+            $(DEVLATIN1RES) $(DEVLATIN1CPI) `basename $@` > $@
+
+font/devlatin1/DESC: $(devlatin1_srcdir)/DESC.proto
+       $(AM_V_GEN)$(MKDIR_P) `dirname $@` \
+       && $(SHELL) $(GENDESCSH) $(devlatin1_srcdir)/DESC.proto \
+            $(DEVLATIN1RES) $(DEVLATIN1CPI) $(DEVLATIN1LPI) \
+            $(DEVLATIN1FONTS) > $@
+
+
+########################################################################
+# Editor settings
+########################################################################
+#
+# Local Variables:
+# mode: makefile-automake
+# fill-column: 72
+# End:
+# vim: set filetype=automake textwidth=72:
diff --git a/font/devlbp/Makefile.sub b/font/devlbp/Makefile.sub
deleted file mode 100644 (file)
index c015c8e..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-# Makefile.sub for `font devlbp'
-#
-# File position: <groff-source>/font/devlbp/Makefile.sub
-#
-# Copyright (C) 2014
-#   Free Software Foundation, Inc.
-#
-# Last update: 2 Sep 2014
-#
-# This file is part of `font utf8' which is part of `groff'.
-#
-# `groff' is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 2 of the License, or
-# (at your option) any later version.
-#
-# `groff' 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
-# <http://www.gnu.org/licenses/gpl-2.0.html>.
-#
-########################################################################
-
-DEV=lbp
-LBPPRINT=$(PSPRINT)
-DEVFILES=DESC \
-  HB HBI HI HR \
-  HNB HNBI HNI HNR \
-  TB TBI TI TR \
-  CR CB CI \
-  ER EB EI
-
-MOSTLYCLEANADD=DESC
-
-DESC: DESC.in
-       cat $(srcdir)/DESC.in >DESC
-       if test "$(PAGE)" = A4; then \
-         echo "papersize a4" >>DESC; \
-       else \
-         echo "papersize letter" >>DESC; \
-       fi
-       test -z '$(LBPPRINT)' || echo print '$(LBPPRINT)' >>DESC
-
-########################################################################
-# Emacs settings
-########################################################################
-#
-# Local Variables:
-# mode: makefile
-# End:
diff --git a/font/devlbp/devlbp.am b/font/devlbp/devlbp.am
new file mode 100644 (file)
index 0000000..30002f8
--- /dev/null
@@ -0,0 +1,66 @@
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Last update: 13 Aug 2015
+#
+# This file is part of 'groff'.
+#
+# 'groff' 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.
+#
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+
+LBPPRINT=$(PSPRINT)
+devlbp_srcdir = $(top_srcdir)/font/devlbp
+DEVLBPFONTFILES = \
+  font/devlbp/HB \
+  font/devlbp/HBI \
+  font/devlbp/HI \
+  font/devlbp/HR \
+  font/devlbp/HNB \
+  font/devlbp/HNBI \
+  font/devlbp/HNI \
+  font/devlbp/HNR \
+  font/devlbp/TB \
+  font/devlbp/TBI \
+  font/devlbp/TI \
+  font/devlbp/TR \
+  font/devlbp/CR \
+  font/devlbp/CB \
+  font/devlbp/CI \
+  font/devlbp/ER \
+  font/devlbp/EB \
+  font/devlbp/EI
+devlbpfontdir = $(fontdir)/devlbp
+devlbpfont_DATA = $(DEVLBPFONTFILES) font/devlbp/DESC
+EXTRA_DIST += $(DEVLBPFONTFILES) font/devlbp/DESC.in
+MOSTLYCLEANFILES += font/devlbp/DESC
+
+font/devlbp/DESC: $(devlbp_srcdir)/DESC.in
+       $(AM_V_GEN)$(MKDIR_P) `dirname $@` \
+       && cat $(devlbp_srcdir)/DESC.in >$@ \
+       && if test "$(PAGE)" = A4; then \
+            echo "papersize a4" >>$@; \
+          else \
+            echo "papersize letter" >>$@; \
+          fi \
+       && (test -z '$(LBPPRINT)' \
+           || echo print '$(LBPPRINT)' >>$@)
+
+
+########################################################################
+# Editor settings
+########################################################################
+#
+# Local Variables:
+# mode: makefile-automake
+# fill-column: 72
+# End:
+# vim: set filetype=automake textwidth=72:
diff --git a/font/devlj4/Makefile.sub b/font/devlj4/Makefile.sub
deleted file mode 100644 (file)
index 6d499db..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-# Makefile.sub for `font devlj4'
-#
-# File position: <groff-source>/font/devlj4/Makefile.sub
-#
-# Copyright (C) 2014
-#   Free Software Foundation, Inc.
-#   Written by Werner Lemberg <wl@gnu.org> and
-#   Bernd Warken <groff-bernd.warken-72@web.de>.
-#
-# Last update: 2 Sep 2014
-#
-# This file is part of `groffer' which is part of `groff'.
-#
-# `groff' is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 2 of the License, or
-# (at your option) any later version.
-#
-# `groff' 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
-# <http://www.gnu.org/licenses/gpl-2.0.html>.
-#
-########################################################################
-
-DEV=lj4
-LJ4RES=1200
-LJ4PRINT=$(PSPRINT)
-DEVFILES=DESC \
-  AB ABI AI AR \
-  ALBB ALBR \
-  AOB AOI AOR \
-  CB CBI CI CR \
-  GB GBI GI GR \
-  LGB LGI LGR \
-  OB OBI OI OR \
-  TB TBI TI TR \
-  TNRB TNRBI TNRI TNRR \
-  UB UBI UI UR \
-  UCB UCBI UCI UCR \
-  CLARENDON CORONET MARIGOLD S \
-  SYMBOL WINGDINGS \
-  generate/Makefile \
-  generate/special.map \
-  generate/symbol.map \
-  generate/text.map \
-  generate/wingdings.map \
-  generate/special.awk
-
-MOSTLYCLEANADD=DESC
-
-DESC: DESC.in
-       echo "res $(LJ4RES)" >DESC
-       echo "unitwidth `expr 7620000 / $(LJ4RES)`" >>DESC
-       cat $(srcdir)/DESC.in >>DESC
-       if test "$(PAGE)" = A4; then \
-         echo "papersize a4" >>DESC; \
-       else \
-         echo "papersize letter" >>DESC; \
-       fi
-       test -z '$(LJ4PRINT)' || echo print '$(LJ4PRINT)' >>DESC
-
-fonts:
-       $(MAKE) -f $(srcdir)/generate/Makefile srcdir=$(srcdir)/generate \
-         HPFTODIT=$(top_builddir)/src/utils/hpftodit/hpftodit
-
-########################################################################
-# Emacs settings
-########################################################################
-#
-# Local Variables:
-# mode: makefile
-# End:
diff --git a/font/devlj4/devlj4.am b/font/devlj4/devlj4.am
new file mode 100644 (file)
index 0000000..f9aaa36
--- /dev/null
@@ -0,0 +1,117 @@
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Last update: 13 Aug 2015
+#
+# This file is part of 'groff'.
+#
+# 'groff' 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.
+#
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+
+devlj4_srcdir = $(top_srcdir)/font/devlj4
+LJ4RES = 1200
+LJ4PRINT = $(PSPRINT)
+DEVLJ4FONTFILES = \
+  font/devlj4/AB \
+  font/devlj4/ABI \
+  font/devlj4/AI \
+  font/devlj4/AR \
+  font/devlj4/ALBB \
+  font/devlj4/ALBR \
+  font/devlj4/AOB \
+  font/devlj4/AOI \
+  font/devlj4/AOR \
+  font/devlj4/CB \
+  font/devlj4/CBI \
+  font/devlj4/CI \
+  font/devlj4/CR \
+  font/devlj4/GB \
+  font/devlj4/GBI \
+  font/devlj4/GI \
+  font/devlj4/GR \
+  font/devlj4/LGB \
+  font/devlj4/LGI \
+  font/devlj4/LGR \
+  font/devlj4/OB \
+  font/devlj4/OBI \
+  font/devlj4/OI \
+  font/devlj4/OR \
+  font/devlj4/TB \
+  font/devlj4/TBI \
+  font/devlj4/TI \
+  font/devlj4/TR \
+  font/devlj4/TNRB \
+  font/devlj4/TNRBI \
+  font/devlj4/TNRI \
+  font/devlj4/TNRR \
+  font/devlj4/UB \
+  font/devlj4/UBI \
+  font/devlj4/UI \
+  font/devlj4/UR \
+  font/devlj4/UCB \
+  font/devlj4/UCBI \
+  font/devlj4/UCI \
+  font/devlj4/UCR \
+  font/devlj4/CLARENDON \
+  font/devlj4/CORONET \
+  font/devlj4/MARIGOLD \
+  font/devlj4/S \
+  font/devlj4/SYMBOL \
+  font/devlj4/WINGDINGS
+
+devlj4fontdir = $(fontdir)/devlj4
+dist_devlj4font_DATA = $(DEVLJ4FONTFILES)
+nodist_devlj4font_DATA = font/devlj4/DESC
+
+DEVLJ4GENFILES = \
+  font/devlj4/generate/Makefile \
+  font/devlj4/generate/special.map \
+  font/devlj4/generate/symbol.map \
+  font/devlj4/generate/text.map \
+  font/devlj4/generate/wingdings.map \
+  font/devlj4/generate/special.awk
+devlj4fontgendir = $(devlj4fontdir)/generate
+dist_devlj4fontgen_DATA = $(DEVLJ4GENFILES)
+
+EXTRA_DIST += font/devlj4/DESC.in
+
+MOSTLYCLEANFILES += font/devlj4/DESC
+
+font/devlj4/DESC: $(devlj4_srcdir)/DESC.in
+       $(AM_V_GEN)$(MKDIR_P) `dirname $@` \
+       && echo "res $(LJ4RES)" >$@ \
+       && echo "unitwidth `expr 7620000 / $(LJ4RES)`" >>$@ \
+       && cat $(devlj4_srcdir)/DESC.in >>$@ \
+       && if test "$(PAGE)" = A4; then \
+            echo "papersize a4" >>$@; \
+          else \
+            echo "papersize letter" >>$@; \
+          fi \
+       && (test -z '$(LJ4PRINT)' \
+           || echo print '$(LJ4PRINT)' >>$@)
+
+fonts: devlj4_fonts
+devlj4_fonts: hpftodit font/devlj4/DESC
+       $(MAKE) -f $(devlj4_srcdir)/generate/Makefile \
+         srcdir=$(devlj4_srcdir)/generate \
+         HPFTODIT=$(top_builddir)/hpftodit
+
+
+########################################################################
+# Editor settings
+########################################################################
+#
+# Local Variables:
+# mode: makefile-automake
+# fill-column: 72
+# End:
+# vim: set filetype=automake textwidth=72:
index 6c5c6c8..163a311 100644 (file)
@@ -1,24 +1,24 @@
-# Makefile for `font devlj4 generate'
+# Makefile for 'font devlj4 generate'
 #
 # File position: <groff-source>/font/devlj4/generate/Makefile
 #
-# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+# Copyright (C) 1994-2018 Free Software Foundation, Inc.
 #   Written by James Clark (jjc@jclark.com)
 #
 # This file is part of groff.
 #
 # groff 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.
+# Software Foundation, either version 3 of the License, or (at your
+# option) any later version.
 #
-# groff is distributed in the hope that it will be useful, but WITHOUT ANY
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# groff 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 <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Directory containing Autofont TFM files.
 # The TFM files used are available for ftp as
index 26e8b92..8e3c702 100644 (file)
@@ -1,5 +1,3 @@
-#! /bin/awk -f
-
 # Correct Intellifont-based height metrics for several glyphs in
 # special font for TrueType CG Times (LaserJet 4000 and later).
 
index 42b8f4f..18170ff 100644 (file)
@@ -2,7 +2,7 @@
 #
 # Created 30 December 2003 -- you need hpftodit from groff 1.19.1 or newer!
 #
-# Glyphs marked with an asterisk have (also) an entry in `special.umap'.
+# Glyphs marked with an asterisk have (also) an entry in 'special.umap'.
 # Unknown MSL numbers are marked with a question mark; glyphs with an
 # uncertain Unicode mapping are tagged also with a question mark.
 
 # 225 down arrow *
 # 226 right arrow *
 # 227 left arrow *
-# 228 tick up at left (`logicalnotflopped') *
+# 228 tick up at left ('logicalnotflopped') *
 # 229 left/right arrow *
 
 # 230 up solid arrowhead *
 342    0111    u0111
 # 343-369 ?
 
-# 370 `lira' ?
+# 370 'lira' ?
 # 371-374 ?
-# 375 `asciigrave' ?
+# 375 'asciigrave' ?
 
 # 376-399 ?
 
 # 1110 medium open bullet *
 # 1111 large solid bullet ?
 # 1112 visible carriage return *
-# 1113 visible tab (`arrowtab') ?
+# 1113 visible tab ('arrowtab') ?
 # 1114 visible space *
 # 1115 visible soft hyphen -- unused
-# 1116 visible end-of-file (`embox')?
-# 1117 `enspacereverse' ?
-# 1118 `emspacereverse' ?
+# 1116 visible end-of-file ('embox')?
+# 1117 'enspacereverse' ?
+# 1118 'emspacereverse' ?
 # 1119 ?
 
 # 1120-1399 ?
index a6e968f..93e9b66 100644 (file)
@@ -1,6 +1,6 @@
 # Foundry file
 
-# Copyright (C) 2011 Free Software Foundation, Inc.
+# Copyright (C) 2011-2018 Free Software Foundation, Inc.
 #      Written by Deri James <deri@chuzzlewit.demon.co.uk>
 #
 # This file is part of groff.
@@ -16,7 +16,7 @@
 # for more details.
 #
 # You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 #=====================================================================
 #Foundry|Name|Searchpath
@@ -25,47 +25,47 @@ foundry||(gs)
 # These are just copies of the grops fonts so MUST not have any flags etc set
 
 #Font|IsBase14|Flags|Map|Encoding|File(!file...)
-AB|N||||URWGothicL-Demi!a010015l.pfb
-ABI|N||||URWGothicL-DemiObli!a010035l.pfb
-AI|N||||URWGothicL-BookObli!a010033l.pfb
-AR|N||||URWGothicL-Book!a010013l.pfb
-BMB|N||||URWBookmanL-DemiBold!b018015l.pfb
-BMBI|N||||URWBookmanL-DemiBoldItal!b018035l.pfb
-BMI|N||||URWBookmanL-LighItal!b018032l.pfb
-BMR|N||||URWBookmanL-Ligh!b018012l.pfb
-CB|Y||||NimbusMonL-Bold!n022004l.pfb
-CBI|Y||||NimbusMonL-BoldObli!n022024l.pfb
-CI|Y||||NimbusMonL-ReguObli!n022023l.pfb
-CR|Y||||NimbusMonL-Regu!n022003l.pfb
+AB|N||||URWGothic-Demi!URWGothicL-Demi!a010015l.pfb
+ABI|N||||URWGothic-DemiOblique!URWGothicL-DemiObli!a010035l.pfb
+AI|N||||URWGothic-BookOblique!URWGothicL-BookObli!a010033l.pfb
+AR|N||||URWGothic-Book!URWGothicL-Book!a010013l.pfb
+BMB|N||||URWBookman-Demi!URWBookmanL-DemiBold!b018015l.pfb
+BMBI|N||||URWBookman-DemiItalic!URWBookmanL-DemiBoldItal!b018035l.pfb
+BMI|N||||URWBookman-Light!URWBookmanL-LighItal!b018032l.pfb
+BMR|N||||URWBookman-LightItalic!URWBookmanL-Ligh!b018012l.pfb
+CB|Y||||NimbusMonoPS-Bold!NimbusMonL-Bold!n022004l.pfb
+CBI|Y||||NimbusMonoPS-BoldItalic!NimbusMonL-BoldObli!n022024l.pfb
+CI|Y||||NimbusMonoPS-Italic!NimbusMonL-ReguObli!n022023l.pfb
+CR|Y||||NimbusMonoPS-Regular!NimbusMonL-Regu!n022003l.pfb
 EURO|N||||*../devps/freeeuro.pfa
-HB|Y||||NimbusSanL-Bold!n019004l.pfb
-HBI|Y||||NimbusSanL-BoldItal!n019024l.pfb
-HI|Y||||NimbusSanL-ReguItal!n019023l.pfb
-HNB|N||||NimbusSanL-BoldCond!n019044l.pfb
-HNBI|N||||NimbusSanL-BoldCondItal!n019064l.pfb
-HNI|N||||NimbusSanL-ReguCondItal!n019063l.pfb
-HNR|N||||NimbusSanL-ReguCond!n019043l.pfb
-HR|Y||||NimbusSanL-Regu!n019003l.pfb
-NB|N||||CenturySchL-Bold!c059016l.pfb
-NBI|N||||CenturySchL-BoldItal!c059036l.pfb
-NI|N||||CenturySchL-Ital!c059033l.pfb
-NR|N||||CenturySchL-Roma!c059013l.pfb
-PB|N||||URWPalladioL-Bold!p052004l.pfb
-PBI|N||||URWPalladioL-BoldItal!p052024l.pfb
-PI|N||||URWPalladioL-Ital!p052023l.pfb
-PR|N||||URWPalladioL-Roma!p052003l.pfb
-S|Y||||StandardSymL!s050000l.pfb
-TB|Y||||NimbusRomNo9L-Medi!n021004l.pfb
-TBI|Y||||NimbusRomNo9L-MediItal!n021024l.pfb
-TI|Y||||NimbusRomNo9L-ReguItal!n021023l.pfb
-TR|Y||||NimbusRomNo9L-Regu!n021003l.pfb
-ZCMI|N||||URWChanceryL-MediItal!z003034l.pfb
+HB|Y||||NimbusSans-Bold!NimbusSanL-Bold!n019004l.pfb
+HBI|Y||||NimbusSans-BoldOblique!NimbusSanL-BoldItal!n019024l.pfb
+HI|Y||||NimbusSans-Oblique!NimbusSanL-ReguItal!n019023l.pfb
+HNB|N||||NimbusSansNarrow-Bold!NimbusSanL-BoldCond!n019044l.pfb
+HNBI|N||||NimbusSansNarrow-BoldOblique!NimbusSansNarrow-BdOblique!NimbusSanL-BoldCondItal!n019064l.pfb
+HNI|N||||NimbusSansNarrow-Oblique!NimbusSanL-ReguCondItal!n019063l.pfb
+HNR|N||||NimbusSansNarrow-Regular!NimbusSanL-ReguCond!n019043l.pfb
+HR|Y||||NimbusSans-Regular!NimbusSans-Regular!NimbusSanL-Regu!n019003l.pfb
+NB|N||||C059-Bold!CenturySchL-Bold!c059016l.pfb
+NBI|N||||C059-BdIta!CenturySchL-BoldItal!c059036l.pfb
+NI|N||||C059-Italic!CenturySchL-Ital!c059033l.pfb
+NR|N||||C059-Roman!CenturySchL-Roma!c059013l.pfb
+PB|N||||P052-Bold!URWPalladioL-Bold!p052004l.pfb
+PBI|N||||P052-BoldItalic!URWPalladioL-BoldItal!p052024l.pfb
+PI|N||||P052-Italic!URWPalladioL-Ital!p052023l.pfb
+PR|N||||P052-Roman!URWPalladioL-Roma!p052003l.pfb
+S|Y||||StandardSymbolsPS!StandardSymL!s050000l.pfb
+TB|Y||||NimbusRoman-Bold!NimbusRomNo9L-Medi!n021004l.pfb
+TBI|Y||||NimbusRoman-BoldItalic!NimbusRomNo9L-MediItal!n021024l.pfb
+TI|Y||||NimbusRoman-Italic!NimbusRomNo9L-ReguItal!n021023l.pfb
+TR|Y||||NimbusRoman-Regular!NimbusRomNo9L-Regu!n021003l.pfb
+ZCMI|N||||Z003-MediumItalic!URWChanceryL-MediItal!z003034l.pfb
 ZD|Y||||Dingbats!d050000l.pfb
 
 #======================================================================
 
 #Foundry|Name|Searchpath
-foundry|U|(gs):/usr/share/fonts/type1/gsfonts :/opt/local/share/fonts/urw-fonts # the URW fonts delivered with ghostscript (may be different)
+foundry|U|(gs):@urwfontsdir@ :/usr/share/fonts/type1/gsfonts :/opt/local/share/fonts/urw-fonts # the URW fonts delivered with ghostscript (may be different)
 #Define Flags for afmtodit
 
 r=-i 0 -m
diff --git a/font/devpdf/Makefile.sub b/font/devpdf/Makefile.sub
deleted file mode 100644 (file)
index e367a34..0000000
+++ /dev/null
@@ -1,139 +0,0 @@
-# Makefile.sub for `font devpdf'
-#
-# File position: <groff-source>/font/devpdf/Makefile.sub
-#
-# Copyright (C) 2011-2014 Free Software Foundation, Inc.
-#      Written by Deri James <deri@chuzzlewit.demon.co.uk>
-#
-# This file is part of groff.
-#
-# groff 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.
-#
-# groff 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 <http://www.gnu.org/licenses/>.
-
-DEV=pdf
-GROFF_FONT_FILES=`cd $(top_builddir)/font/devpdf \
-                  && find * -maxdepth 0 -type f ! -name 'Makefile.sub*' \
-                            -exec grep -l internalname {} \;`
-ENC_FILES=`cd $(top_builddir)/font/devpdf; ls enc/*`
-MAP_FILES=`cd $(top_builddir)/font/devpdf; ls map/*`
-
-MOSTLYCLEANADD=\
-  download \
-  DESC \
-  Foundry \
-  util/BuildFoundries \
-  $(GROFF_FONT_FILES) \
-  $(ENC_FILES) \
-  $(MAP_FILES)
-
-MOSTLYCLEANDIRADD=enc map
-
-DEVFILES=\
-  Foundry
-
-#DEVSCRIPTS=util/BuildFoundries
-
-DISTFILES=\
-  $(DEVFILES) \
-  $(DEVSCRIPTS)
-
-RM=rm -f
-
-all: DESC
-
-DESC: DESC.in
-       $(RM) DESC
-       cat $(srcdir)/DESC.in >$(top_builddir)/font/devpdf/DESC
-       if test "$(PAGE)" = A4; then \
-         echo "papersize a4" >>$(top_builddir)/font/devpdf/DESC; \
-       else \
-         echo "papersize letter" >>$(top_builddir)/font/devpdf/DESC; \
-       fi
-       $(RM) Foundry
-       cat $(srcdir)/Foundry.in >$(top_builddir)/font/devpdf/Foundry
-       -test -d $(top_builddir)/font/devpdf/enc \
-         || $(mkinstalldirs) $(top_builddir)/font/devpdf/enc
-       -test -d $(top_builddir)/font/devpdf/map \
-         || $(mkinstalldirs) $(top_builddir)/font/devpdf/map
-       cp -f $(top_srcdir)/font/devps/text.enc \
-         $(top_builddir)/font/devpdf/enc
-       cp -f $(top_srcdir)/font/devps/symbolmap \
-         $(top_builddir)/font/devpdf/map
-       cp -f $(top_srcdir)/font/devps/generate/dingbats.map \
-         $(top_builddir)/font/devpdf/map
-       cp -f $(top_srcdir)/font/devps/generate/textmap \
-         $(top_builddir)/font/devpdf/map
-       cp -f $(top_srcdir)/font/devps/generate/symbolchars \
-         $(top_builddir)/font/devpdf/map
-       -test -d util || $(mkinstalldirs) util
-       $(RM) util/BuildFoundries
-       if test -n "$(PERL)"; then \
-         sed -f $(SH_DEPS_SED_SCRIPT) \
-             -e "s|/usr/bin/perl|$(PERL)|" \
-             -e "s|@GROFF_GHOSTSCRIPT_INTERPRETERS@|$(GHOSTSCRIPT)|" \
-             -e "s|@VERSION@|$(version)$(revision)|" \
-             -e "s|@GROFF_FONT_DIR@|$(fontdir)|" \
-             $(srcdir)/util/BuildFoundries.pl \
-         >$(top_builddir)/font/devpdf/util/BuildFoundries ;\
-       else \
-         sed -f $(SH_DEPS_SED_SCRIPT) \
-             -e "s|@VERSION@|$(version)$(revision)|" \
-             -e "s|@GROFF_FONT_DIR@|$(fontdir)|" \
-             $(srcdir)/util/BuildFoundries.pl \
-         >$(top_builddir)/font/devpdf/util/BuildFoundries ;\
-       fi
-       chmod +x util/BuildFoundries
-       echo "# foundry ps name psfile" > $(top_builddir)/font/devpdf/download
-       PATH="$(top_builddir)/src/utils/afmtodit:$(GROFF_PATH_SEPARATOR)$(PATH)" \
-         util/BuildFoundries $(top_builddir)/font/devpdf \
-           '$(top_srcdir)/font/devps : $(top_builddir)/font/devps' \
-          >> $(top_builddir)/font/devpdf/download
-
-install_data:
-       -test -d $(DESTDIR)$(fontsubdir) \
-         || $(mkinstalldirs) $(DESTDIR)$(fontsubdir)
-       -test -d $(DESTDIR)$(fontsubdir)/enc \
-         || $(mkinstalldirs) $(DESTDIR)$(fontsubdir)/enc
-       -test -d $(DESTDIR)$(fontsubdir)/map \
-         || $(mkinstalldirs) $(DESTDIR)$(fontsubdir)/map
-       -test -d $(DESTDIR)$(fontsubdir)/util \
-         || $(mkinstalldirs) $(DESTDIR)$(fontsubdir)/util
-       for f in $(MOSTLYCLEANADD); do \
-         $(RM) $(DESTDIR)$(fontsubdir)/$$f; \
-         if test -f $$f; then \
-           $(INSTALL_DATA) $$f $(DESTDIR)$(fontsubdir)/$$f; \
-         else \
-           $(INSTALL_DATA) $(srcdir)/$$f $(DESTDIR)$(fontsubdir)/$$f; \
-         fi; \
-       done
-
-uninstall_sub:
-       -for f in $(MOSTLYCLEANADD); do \
-         $(RM) $(DESTDIR)$(fontsubdir)/$$f; \
-       done
-       -d=$(DESTDIR)$(fontsubdir)/enc; \
-         if test -d $$d; then rmdir $$d; fi
-       -d=$(DESTDIR)$(fontsubdir)/map; \
-         if test -d $$d; then rmdir $$d; fi
-       -d=$(DESTDIR)$(fontsubdir)/util; \
-         if test -d $$d; then rmdir $$d; fi
-       -d=$(DESTDIR)$(fontsubdir); \
-         if test -d $$d; then rmdir $$d; fi
-
-########################################################################
-# Emacs settings
-########################################################################
-#
-# Local Variables:
-# mode: makefile
-# End:
diff --git a/font/devpdf/devpdf.am b/font/devpdf/devpdf.am
new file mode 100644 (file)
index 0000000..2864333
--- /dev/null
@@ -0,0 +1,184 @@
+# Copyright (C) 2011-2018 Free Software Foundation, Inc.
+#      Original Makefile.sub written
+#      by Deri James <deri@chuzzlewit.demon.co.uk>
+#      Automake migration by Bertrand Garrigues
+#
+# Last update: 2017-11-02
+#
+# This file is part of groff.
+#
+# groff 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.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+
+devpdf_srcdir = $(top_srcdir)/font/devpdf
+GROFF_FONT_FILES=`cd $(top_builddir)/font/devpdf \
+  && grep -ls internalname [A-CEG-Z]*`
+ENC_FILES=`cd $(top_builddir)/font/devpdf; ls enc/*`
+MAP_FILES=`cd $(top_builddir)/font/devpdf; ls map/*`
+
+MOSTLYCLEANFILES += \
+  font/devpdf/download \
+  font/devpdf/DESC \
+  font/devpdf/Foundry \
+  font/devpdf/build_font_files \
+  font/devpdf/util/BuildFoundries
+
+devpdffontdir = $(fontdir)/devpdf
+devpdffont_DATA = \
+  font/devpdf/DESC \
+  font/devpdf/Foundry
+
+devpdffontencdir = $(devpdffontdir)/enc
+devpdffontenc_DATA = font/devpdf/enc/text.enc
+
+devpdffontmapdir = $(devpdffontdir)/map
+DEVPDFFONTMAP_1 = \
+  font/devpdf/map/dingbats.map \
+  font/devpdf/map/symbolchars \
+  font/devpdf/map/textmap
+DEVPDFFONTMAP_2 = font/devpdf/map/symbolmap
+devpdffontmap_DATA = $(DEVPDFFONTMAP_1) $(DEVPDFFONTMAP_2)
+
+EXTRA_DIST += \
+  font/devpdf/DESC.in \
+  font/devpdf/Foundry.in \
+  font/devpdf/util/BuildFoundries.pl
+
+font/devpdf/enc/text.enc:
+       @$(MKDIR_P) $(top_builddir)/font/devpdf/enc
+       cp -f $(top_srcdir)/font/devps/text.enc \
+         $(top_builddir)/font/devpdf/enc
+
+font/devpdf/map/symbolmap:
+       @$(MKDIR_P) $(top_builddir)/font/devpdf/map
+       @cp -f $(top_srcdir)/font/devps/symbolmap \
+         $(top_builddir)/font/devpdf/map
+
+$(DEVPDFFONTMAP_1):
+       @$(MKDIR_P) $(top_builddir)/font/devpdf/map
+       @cp -f $(top_srcdir)/font/devps/generate/`basename $@` \
+         $(top_builddir)/font/devpdf/map
+
+font/devpdf/util/BuildFoundries: shdeps.sed \
+  $(devpdf_srcdir)/util/BuildFoundries.pl
+       $(AM_V_GEN)$(MKDIR_P) $(top_builddir)/font/devpdf/util \
+       && $(RM) $(top_builddir)/font/devpdf/util/BuildFoundries \
+       && if test -n "$(PERL)"; then \
+            sed -f $(SH_DEPS_SED_SCRIPT) \
+                -e "s|/usr/bin/perl|$(PERL)|" \
+                -e "s|[@]GROFF_GHOSTSCRIPT_INTERPRETERS[@]|$(GHOSTSCRIPT)|" \
+                -e "s|[@]VERSION[@]|$(VERSION)|" \
+                -e "s|[@]GROFF_FONT_DIR[@]|$(fontdir)|" \
+                $(devpdf_srcdir)/util/BuildFoundries.pl \
+                >$(top_builddir)/font/devpdf/util/BuildFoundries; \
+          else \
+            sed -f $(SH_DEPS_SED_SCRIPT) \
+                -e "s|[@]VERSION[@]|$(VERSION)|" \
+                -e "s|[@]GROFF_FONT_DIR[@]|$(fontdir)|" \
+                $(devpdf_srcdir)/util/BuildFoundries.pl \
+                >$(top_builddir)/font/devpdf/util/BuildFoundries; \
+          fi \
+       && chmod +x $(top_builddir)/font/devpdf/util/BuildFoundries
+
+font/devpdf/DESC: $(devpdf_srcdir)/DESC.in
+       $(AM_V_GEN)$(MKDIR_P) $(top_builddir)/font/devpdf \
+       && $(RM) $(top_builddir)/font/devpdf/DESC \
+       && cat $(devpdf_srcdir)/DESC.in >$(top_builddir)/font/devpdf/DESC \
+       && if test "$(PAGE)" = A4; then \
+            echo "papersize a4" >>$(top_builddir)/font/devpdf/DESC; \
+          else \
+            echo "papersize letter" >>$(top_builddir)/font/devpdf/DESC; \
+          fi
+
+font/devpdf/Foundry:
+       $(AM_V_GEN)$(RM) $(top_builddir)/font/devpdf/Foundry \
+       && sed "s|[@]urwfontsdir[@]|$(urwfontsdir)|" \
+              $(devpdf_srcdir)/Foundry.in >$(top_builddir)/$@
+
+all: font/devpdf/build_font_files
+
+# PATH: path to find afmtodit. We add $(abs_top_builddir) because
+# afmtodit is built in the top builddir.
+font/devpdf/build_font_files: afmtodit font/devpdf/DESC \
+  $(devpdffontenc_DATA) $(devpdffontmap_DATA) $(devpdffont_DATA) \
+  font/devpdf/util/BuildFoundries
+       @if $(AM_V_P); then \
+         set -x; \
+       else \
+         echo "  GEN      $(top_builddir)/font/devpdf/download"; \
+       fi \
+       && $(RM) $@ \
+       && $(MKDIR_P) $(top_builddir)/font/devpdf \
+       && echo "# foundry      ps name psfile" > $(top_builddir)/font/devpdf/download \
+       && PATH="$(abs_top_builddir)$(GROFF_PATH_SEPARATOR)$(abs_top_builddir)/build-aux$(GROFF_PATH_SEPARATOR)$(PATH)" \
+            $(abs_top_builddir)/font/devpdf/util/BuildFoundries \
+              $(abs_top_builddir)/font/devpdf \
+              '$(abs_top_srcdir)/font/devps : $(abs_top_builddir)/font/devps' \
+              >> $(top_builddir)/font/devpdf/download \
+       && touch $@
+
+mostlyclean-local: mostlyclean_devpdf_extra
+mostlyclean_devpdf_extra:
+       @echo Cleaning font/devpdf
+       rm -rf $(top_builddir)/font/devpdf/enc \
+         $(top_builddir)/font/devpdf/map;
+       if test -d $(top_builddir)/font/devpdf; then \
+         for f in $(GROFF_FONT_FILES); do \
+           rm -f $(top_builddir)/font/devpdf/$$f; \
+         done; \
+       fi
+
+install-data-local: install_devpdf
+install_devpdf:
+       @echo Installing devpdf files
+       -@test -d $(DESTDIR)$(devpdffontdir) \
+         || $(mkinstalldirs) $(DESTDIR)$(devpdffontdir)
+       @for f in $(GROFF_FONT_FILES); do \
+         $(RM) $(DESTDIR)$(devpdffontdir)/$$f; \
+         if test -f $$f; then \
+           $(INSTALL_DATA) $$f $(DESTDIR)$(devpdffontdir)/$$f; \
+         else \
+           $(INSTALL_DATA) $(top_builddir)/font/devpdf/$$f \
+             $(DESTDIR)$(devpdffontdir)/$$f; \
+         fi; \
+       done
+       $(INSTALL_DATA) $(top_builddir)/font/devpdf/download \
+         $(DESTDIR)$(devpdffontdir)/
+
+uninstall_groffdirs: uninstall_devpdf
+uninstall_devpdf:
+       @echo Uninstalling devpdf files
+       if test -d $(DESTDIR)$(devpdffontdir); then \
+         for f in $(GROFF_FONT_FILES); do \
+           rm -f $(DESTDIR)$(devpdffontdir)/$$f; \
+         done; \
+         if test -d $(DESTDIR)$(devpdffontencdir); then \
+           rmdir $(DESTDIR)$(devpdffontencdir); \
+         fi; \
+         if test -d $(DESTDIR)$(devpdffontmapdir); then \
+           rmdir $(DESTDIR)$(devpdffontmapdir); \
+         fi; \
+         rm -f $(DESTDIR)$(devpdffontdir)/download; \
+         rmdir $(DESTDIR)$(devpdffontdir); \
+       fi
+
+
+########################################################################
+# Editor settings
+########################################################################
+#
+# Local Variables:
+# mode: makefile-automake
+# fill-column: 72
+# End:
+# vim: set filetype=automake textwidth=72:
index 39f2f0d..f8af826 100644 (file)
@@ -3,7 +3,7 @@
 #   BuildFoundries   : Given a Foundry file generate groff and download files
 #   Deri James       : Monday 07 Feb 2011
 
-# Copyright (C) 2011 Free Software Foundation, Inc.
+# Copyright (C) 2011-2018 Free Software Foundation, Inc.
 #      Written by Deri James <deri@chuzzlewit.demon.co.uk>
 #
 # This file is part of groff.
 # for more details.
 #
 # You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 use strict;
 
+(my $progname = $0) =~s @.*/@@;
 my $where=shift||'';
 my $devps=shift||'../devps';
 chdir $where if $where ne '';
@@ -44,8 +45,9 @@ sub LoadFoundry
 {
     my $fn=shift;
     my $foundrypath='';
+    my $notFoundFont=0;
 
-    open(F,"<$fn") or die "No $fn file found";
+    open(F,"<$fn") or Die("No $fn file found");
 
     while (<F>)
     {
@@ -68,9 +70,11 @@ sub LoadFoundry
 
        if (lc($r[0]) eq 'foundry')
        {
+           Warn("\nThe path(s) used for searching:\n$foundrypath\n") if $notFoundFont;
            $foundry=uc($r[1]);
            $foundrypath=$r[2].' : '.$devps;
            $foundrypath=~s/\(gs\)/$GSpath /;
+           $notFoundFont=0;
        }
        else
        {
@@ -106,16 +110,17 @@ sub LoadFoundry
                        {
                            $gotf=0;
                            my $fns=join(',',split('!',$r[5]));
-                           Msg(0,"Unable to locate font(s) $fns on the given path(s)");
+                           Warn("Unable to locate font(s) $fns");
+                           $notFoundFont=1;
                            unlink $gfont;      # Unable to find the postscript file for the font just created by afmtodit
                        }
                    }
-                   print STDERR "Copied grops font $gfont...\n" if $gotf;
+                   Notice("Copied grops font $gfont...") if $gotf;
 
                }
                else
                {
-                   Msg(0,"Can't read grops font '$r[0]' for Foundry '$foundry'");
+                   Warn("Can't read grops font '$r[0]' for Foundry '$foundry'");
                }
            }
            else
@@ -131,18 +136,20 @@ sub LoadFoundry
                    }
                    else
                    {
-                       print STDERR "Generated $gfont...\n";
+                       Notice("Generated $gfont...");
                    }
                }
                else
                {
-                   Msg(0,"Failed to create groff font '$gfont' by running afmtodit");
+                   Warn("Failed to create groff font '$gfont' by running afmtodit");
+                   $notFoundFont=1;
                }
            }
        }
     }
 
     close();
+    Warn("\nThe path(s) used for searching:\n$foundrypath\n") if $notFoundFont;
 }
 
 sub RunAfmtodit
@@ -163,7 +170,7 @@ sub RunAfmtodit
     {
        if (!exists($flg{$f}))
        {
-           Msg(0,"Can't use undefined flag '$f' in calling afmtodit for groff font '$gfont'");
+           Warn("Can't use undefined flag '$f' in calling afmtodit for groff font '$gfont'");
            return('');
        }
 
@@ -189,7 +196,7 @@ sub RunAfmtodit
        }
        else
        {
-           Msg(0,"Unexpected format for grops font '$gfont' for Foundry '$foundry' - ignoring");
+           Warn("Unexpected format for grops font '$gfont' for Foundry '$foundry' - ignoring");
        }
 
        close(GF);
@@ -329,7 +336,7 @@ sub UseGropsVersion
        }
        else
        {
-           Msg(0,"Unexpected format for grops font '$gfont' for Foundry '$foundry' - ignoring");
+           Warn("Unexpected format for grops font '$gfont' for Foundry '$foundry' - ignoring");
        }
 
        close(GF);
@@ -345,19 +352,19 @@ sub UseGropsVersion
            else
            {
                $psfont='';
-               Msg(0,"Failed to create new font '$gfont' for Foundry '$foundry'");
+               Warn("Failed to create new font '$gfont' for Foundry '$foundry'");
            }
        }
        else
        {
-           Msg(0,"Failed to locate postscript internalname in grops font '$gfont' for Foundry '$foundry'");
+           Warn("Failed to locate postscript internalname in grops font '$gfont' for Foundry '$foundry'");
        }
 
        close(GF);
     }
     else
     {
-       Msg(0,"Failed to open grops font '$gfont' for Foundry '$foundry'");
+       Warn("Failed to open grops font '$gfont' for Foundry '$foundry'");
     }
 
     return($psfont);
@@ -417,7 +424,7 @@ sub WriteDownload
     my $fn=shift;
     my $top=1;
 
-    open(F,">$fn") or die "Can't Create new file '$fn'";
+    open(F,">$fn") or Die("Can't Create new file '$fn'");
 
     print F join("\n",@downloadpreamble),"\n";
 
@@ -430,19 +437,24 @@ sub WriteDownload
     close(F);
 }
 
-sub Msg
-{
-    my $sev=shift;
+sub Notice {
     my $msg=shift;
+    Msg("notice: $msg");
+}
 
-    if ($sev)
-    {
-       print STDERR "Error: line $lct: $msg\n";
-       exit 2;
-    }
-    else
-    {
-       print STDERR "Warning: line $lct: $msg\n";
-       $warn=1;
-    }
+sub Warn {
+    my $msg=shift;
+    Msg("warning: line $lct: $msg");
+    $warn=1;
+}
+
+sub Die {
+    my $msg=shift;
+    Msg("error: line $lct: $msg");
+    exit 2;
+}
+
+sub Msg {
+    my $msg=shift;
+    print STDERR "$progname: $msg\n";
 }
diff --git a/font/devps/Makefile.sub b/font/devps/Makefile.sub
deleted file mode 100644 (file)
index 3258486..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-# Makefile.sub for `font devps'
-
-# File position: <groff-source>/font/devps/Makefile.sub
-
-# Copyright (C) 2014 Free Software Foundation, Inc.
-
-# This file is part of `groffer' which is part of `groff'.
-
-# `groff' is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 2 of the License, or
-# (at your option) any later version.
-
-# `groff' 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
-# <http://www.gnu.org/licenses/gpl-2.0.html>.
-
-########################################################################
-
-DEV=ps
-DISTFILES=\
-  S SS \
-  ZD ZDR ZCMI \
-  AB ABI AI AR \
-  BMB BMBI BMI BMR \
-  CB CBI CI CR \
-  HB HBI HI HR \
-  HNB HNBI HNI HNR \
-  NB NBI NI NR \
-  PB PBI PI PR \
-  TB TBI TI TR \
-  EURO freeeuro.pfa freeeuro.afm \
-  text.enc download
-# these files must be in a subdirectory called `old'
-OLDDISTFILES=\
-  S SS \
-  CB CBI CI CR \
-  HB HBI HI HR \
-  HNB HNBI HNI HNR \
-  NB NBI NI NR \
-  PB PBI PI PR \
-  TB TBI TI TR \
-  symbol.afm symbolsl.afm \
-  zapfdr.afm zapfdr.ps
-
-PSFILES=prologue symbolsl.pfa zapfdr.pfa
-DEVGENFILES=generate/Makefile generate/dingbats.map \
-  generate/dingbats.rmap generate/lgreekmap \
-  generate/symbolchars generate/symbolsl.afm generate/textmap
-DEVGENSCRIPTS=generate/afmname generate/symbol.sed
-DEVFILES=DESC $(PSFILES) $(DISTFILES) $(DEVGENFILES)
-OLDDEVFILES=$(OLDDISTFILES)
-DEVSCRIPTS=$(DEVGENSCRIPTS)
-
-MOSTLYCLEANADD=DESC $(PSFILES)
-
-RM=rm -f
-
-DESC: DESC.in
-       cat $(srcdir)/DESC.in >DESC
-       echo broken $(BROKEN_SPOOLER_FLAGS) >>DESC
-       if test "$(PAGE)" = A4; then \
-         echo "papersize a4" >>DESC; \
-       else \
-         echo "papersize letter" >>DESC; \
-       fi
-       test -z '$(PSPRINT)' || echo print '$(PSPRINT)' >>DESC
-
-fonts: DESC
-       $(MAKE) -f $(srcdir)/generate/Makefile \
-         srcdir=$(srcdir)/generate DESC=$(srcdir)/DESC.in
-
-prologue: prologue.ps
-zapfdr.pfa: zapfdr.ps
-symbolsl.pfa: symbolsl.ps
-
-$(PSFILES):
-       $(RM) $@
-       sed -f $(srcdir)/psstrip.sed $? >$@
-
-########################################################################
-# Emacs settings
-########################################################################
-#
-# Local Variables:
-# mode: makefile
-# End:
diff --git a/font/devps/devps.am b/font/devps/devps.am
new file mode 100644 (file)
index 0000000..3205e3b
--- /dev/null
@@ -0,0 +1,183 @@
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Last update: 13 Aug 2015
+#
+# This file is part of 'groff'.
+#
+# 'groff' 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.
+#
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+
+devps_srcdir = $(top_srcdir)/font/devps
+devps_builddir = $(top_builddir)/font/devps
+DEVPSFONTFILES = \
+  font/devps/S \
+  font/devps/SS \
+  font/devps/ZD \
+  font/devps/ZDR \
+  font/devps/ZCMI \
+  font/devps/AB \
+  font/devps/ABI \
+  font/devps/AI \
+  font/devps/AR \
+  font/devps/BMB \
+  font/devps/BMBI \
+  font/devps/BMI \
+  font/devps/BMR \
+  font/devps/CB \
+  font/devps/CBI \
+  font/devps/CI \
+  font/devps/CR \
+  font/devps/HB \
+  font/devps/HBI \
+  font/devps/HI \
+  font/devps/HR \
+  font/devps/HNB \
+  font/devps/HNBI \
+  font/devps/HNI \
+  font/devps/HNR \
+  font/devps/NB \
+  font/devps/NBI \
+  font/devps/NI \
+  font/devps/NR \
+  font/devps/PB \
+  font/devps/PBI \
+  font/devps/PI \
+  font/devps/PR \
+  font/devps/TB \
+  font/devps/TBI \
+  font/devps/TI \
+  font/devps/TR \
+  font/devps/EURO \
+  font/devps/freeeuro.pfa \
+  font/devps/freeeuro.afm \
+  font/devps/text.enc \
+  font/devps/download
+
+DEVPSFONTFILES_GENERATED = \
+  font/devps/DESC \
+  font/devps/prologue \
+  font/devps/zapfdr.pfa \
+  font/devps/symbolsl.pfa
+devpsfontdir = $(fontdir)/devps
+dist_devpsfont_DATA = $(DEVPSFONTFILES) 
+nodist_devpsfont_DATA = $(DEVPSFONTFILES_GENERATED)
+
+# these files will be installed in oldfontdir
+OLDDEVPSFONTFILES = \
+  font/devps/old/S \
+  font/devps/old/SS \
+  font/devps/old/CB \
+  font/devps/old/CBI \
+  font/devps/old/CI \
+  font/devps/old/CR \
+  font/devps/old/HB \
+  font/devps/old/HBI \
+  font/devps/old/HI \
+  font/devps/old/HR \
+  font/devps/old/HNB \
+  font/devps/old/HNBI \
+  font/devps/old/HNI \
+  font/devps/old/HNR \
+  font/devps/old/NB \
+  font/devps/old/NBI \
+  font/devps/old/NI \
+  font/devps/old/NR \
+  font/devps/old/PB \
+  font/devps/old/PBI \
+  font/devps/old/PI \
+  font/devps/old/PR \
+  font/devps/old/TB \
+  font/devps/old/TBI \
+  font/devps/old/TI \
+  font/devps/old/TR \
+  font/devps/old/symbol.afm \
+  font/devps/old/symbolsl.afm \
+  font/devps/old/zapfdr.afm \
+  font/devps/old/zapfdr.ps
+olddevpsfontdir = $(oldfontdir)/devps
+dist_olddevpsfont_DATA = $(OLDDEVPSFONTFILES)
+
+# Files installed in $(devfontdir)/generate
+DEVPSGENFILES = \
+  font/devps/generate/Makefile \
+  font/devps/generate/dingbats.map \
+  font/devps/generate/dingbats.rmap \
+  font/devps/generate/lgreekmap \
+  font/devps/generate/symbolchars \
+  font/devps/generate/symbolsl.afm \
+  font/devps/generate/textmap
+DEVPSGENSCRIPTS = \
+  font/devps/generate/afmname \
+  font/devps/generate/symbol.sed
+devpsgendir = $(devpsfontdir)/generate
+dist_devpsgen_DATA = $(DEVPSGENFILES) $(DEVPSGENSCRIPTS)
+
+MOSTLYCLEANFILES += $(DEVPSFONTFILES_GENERATED)
+EXTRA_DIST += \
+  font/devps/symbolmap \
+  font/devps/DESC.in  \
+  font/devps/prologue.ps \
+  font/devps/psstrip.sed \
+  font/devps/symbol.afm \
+  font/devps/symbolsl.ps \
+  font/devps/zapfdr.afm \
+  font/devps/zapfdr.ps \
+  font/devps/generate/freeeuro.sfd \
+  font/devps/generate/make-zapfdr \
+  font/devps/generate/symbolsl.awk \
+  font/devps/generate/sfdtopfa.pe \
+  font/devps/generate/zapfdr.sed
+
+font/devps/DESC: $(devps_srcdir)/DESC.in
+       $(AM_V_GEN)$(MKDIR_P) font/devps \
+       && cat $(devps_srcdir)/DESC.in >$@ \
+       && echo broken $(BROKEN_SPOOLER_FLAGS) >>$@ \
+       && if test "$(PAGE)" = A4; then \
+            echo "papersize a4" >>$@; \
+          else \
+            echo "papersize letter" >>$@; \
+          fi \
+       && (test -z '$(PSPRINT)' \
+           || echo print '$(PSPRINT)' >>$@)
+
+fonts: devps_fonts
+# We add top_builddir to the PATH in case the only afmtodit available is
+# the one in the current build.
+devps_fonts: afmtodit font/devps/DESC
+       PATH=$(top_builddir)$(GROFF_PATH_SEPARATOR)$(PATH) \
+         $(MAKE) -f $(devps_srcdir)/generate/Makefile \
+         srcdir=$(devps_srcdir)/generate DESC=$(devps_srcdir)/DESC.in
+
+font/devps/prologue: $(devps_srcdir)/prologue.ps
+       $(AM_V_GEN)$(MKDIR_P) font/devps \
+       && $(RM) $@ \
+       && sed -f $(devps_srcdir)/psstrip.sed $? >$@
+font/devps/zapfdr.pfa: $(devps_srcdir)/zapfdr.ps
+       $(AM_V_GEN)$(MKDIR_P) font/devps \
+       && $(RM) $@ \
+       && sed -f $(devps_srcdir)/psstrip.sed $? >$@
+font/devps/symbolsl.pfa: $(devps_srcdir)/symbolsl.ps
+       $(AM_V_GEN)$(MKDIR_P) font/devps \
+       && $(RM) $@ \
+       && sed -f $(devps_srcdir)/psstrip.sed $? >$@
+
+
+########################################################################
+# Editor settings
+########################################################################
+#
+# Local Variables:
+# mode: makefile-automake
+# fill-column: 72
+# End:
+# vim: set filetype=automake textwidth=72:
index 2cf67d2..534519f 100644 (file)
@@ -1,6 +1,6 @@
 # Location: <groff-source>/font/devps/generate/Makefile
 #
-# Copyright (C) 1989-2014 Free Software Foundation, Inc.
+# Copyright (C) 1989-2018 Free Software Foundation, Inc.
 #      Written by James Clark (jjc@jclark.com)
 #
 # This file is part of groff.
 # Software Foundation, either version 3 of the License, or
 # (at your option) any later version.
 #
-# groff is distributed in the hope that it will be useful, but WITHOUT ANY
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# groff 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 <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # This is set up so you can do
 #   make -f generate/Makefile
 SHELL = /bin/sh
 
 # Directory containing AFM files.  Must not be current directory.
-# Either long names (eg Times-Roman.afm) or short names (eg timesr.afm)
-# may be used. See the afmname script.
+# Either long names (e.g., Times-Roman.afm) or short names (e.g.,
+# timesr.afm) may be used. See the afmname script.
 afmdir=/usr/local/lib/afm
 
-# The symbol font which fits to `Symbol.afm'.  For the creation of
-# `symbolsl.afm' we need the `printafm' script from ghostscript.
+# The symbol font which fits to 'Symbol.afm'.  For the creation of
+# 'symbolsl.afm' we need the 'printafm' script from ghostscript.
 symbolfont=/usr/local/lib/fonts/Symbol.pfb
 
 PRINTAFM=printafm
@@ -42,8 +42,15 @@ srcdir=generate
 SPECIALFONTS=S
 DINGBATSFONTS=ZD ZDR
 GREEKFONTS=SS
-TEXTFONTS=AB ABI AI AR BMB BMBI BMI BMR CB CBI CI CR HB HBI HI HR HNB HNBI \
-  HNI HNR NB NBI NI NR PB PBI PI PR TB TBI TI TR ZCMI
+TEXTFONTS=AB ABI AI AR \
+       BMB BMBI BMI BMR \
+       CB CBI CI CR \
+       HB HBI HI HR \
+       HNB HNBI HNI HNR \
+       NB NBI NI NR \
+       PB PBI PI PR \
+       TB TBI TI TR \
+       ZCMI
 
 FONTS=$(TEXTFONTS) $(SPECIALFONTS) $(GREEKFONTS) $(DINGBATSFONTS) EURO
 
@@ -63,139 +70,173 @@ all: $(FONTS)
 
 TR:
        $(AFMTODIT) $(EFLAG) $(RFLAG) \
-         `$(AFMNAME) $(afmdir)/Times-Roman.afm` $(TEXTMAP) $@
+         `$(AFMNAME) $(afmdir)/Times-Roman.afm` \
+         $(TEXTMAP) $@
 
 TB:
        $(AFMTODIT) $(EFLAG) $(RFLAG) \
-         `$(AFMNAME) $(afmdir)/Times-Bold.afm` $(TEXTMAP) $@
+         `$(AFMNAME) $(afmdir)/Times-Bold.afm` \
+         $(TEXTMAP) $@
 
 TI:
        $(AFMTODIT) $(EFLAG) $(IFLAG) -a 7 \
-         `$(AFMNAME) $(afmdir)/Times-Italic.afm` $(TEXTMAP) $@
+         `$(AFMNAME) $(afmdir)/Times-Italic.afm` \
+         $(TEXTMAP) $@
 
 TBI:
        $(AFMTODIT) $(EFLAG) $(IFLAG) \
-         `$(AFMNAME) $(afmdir)/Times-BoldItalic.afm` $(TEXTMAP) $@
+         `$(AFMNAME) $(afmdir)/Times-BoldItalic.afm` \
+         $(TEXTMAP) $@
 
 HR:
        $(AFMTODIT) $(EFLAG) $(RFLAG) \
-         `$(AFMNAME) $(afmdir)/Helvetica.afm` $(TEXTMAP) $@
+         `$(AFMNAME) $(afmdir)/Helvetica.afm` \
+         $(TEXTMAP) $@
 
 HB:
        $(AFMTODIT) $(EFLAG) $(RFLAG) \
-         `$(AFMNAME) $(afmdir)/Helvetica-Bold.afm` $(TEXTMAP) $@
+         `$(AFMNAME) $(afmdir)/Helvetica-Bold.afm` \
+         $(TEXTMAP) $@
 
 HI:
        $(AFMTODIT) $(EFLAG) $(IFLAG) \
-         `$(AFMNAME) $(afmdir)/Helvetica-Oblique.afm` $(TEXTMAP) $@
+         `$(AFMNAME) $(afmdir)/Helvetica-Oblique.afm` \
+         $(TEXTMAP) $@
 
 HBI:
        $(AFMTODIT) $(EFLAG) $(IFLAG) \
-         `$(AFMNAME) $(afmdir)/Helvetica-BoldOblique.afm` $(TEXTMAP) $@
+         `$(AFMNAME) $(afmdir)/Helvetica-BoldOblique.afm` \
+         $(TEXTMAP) $@
 
 CR:
        $(AFMTODIT) $(NOLIGFLAG) $(EFLAG) $(RFLAG) \
-         `$(AFMNAME) $(afmdir)/Courier.afm` $(TEXTMAP) $@
+         `$(AFMNAME) $(afmdir)/Courier.afm` \
+         $(TEXTMAP) $@
 
 CB:
        $(AFMTODIT) $(NOLIGFLAG) $(EFLAG) $(RFLAG) \
-         `$(AFMNAME) $(afmdir)/Courier-Bold.afm` $(TEXTMAP) $@
+         `$(AFMNAME) $(afmdir)/Courier-Bold.afm` \
+         $(TEXTMAP) $@
 
 CI:
        $(AFMTODIT) $(NOLIGFLAG) $(EFLAG) $(IFLAG) \
-         `$(AFMNAME) $(afmdir)/Courier-Oblique.afm` $(TEXTMAP) $@
+         `$(AFMNAME) $(afmdir)/Courier-Oblique.afm` \
+         $(TEXTMAP) $@
 
 CBI:
        $(AFMTODIT) $(NOLIGFLAG) $(EFLAG) $(IFLAG) \
-         `$(AFMNAME) $(afmdir)/Courier-BoldOblique.afm` $(TEXTMAP) $@
+         `$(AFMNAME) $(afmdir)/Courier-BoldOblique.afm` \
+         $(TEXTMAP) $@
 
 PR:
        $(AFMTODIT) $(EFLAG) $(RFLAG) \
-         `$(AFMNAME) $(afmdir)/Palatino-Roman.afm` $(TEXTMAP) $@
+         `$(AFMNAME) $(afmdir)/Palatino-Roman.afm` \
+         $(TEXTMAP) $@
 
 PB:
        $(AFMTODIT) $(EFLAG) $(RFLAG) \
-         `$(AFMNAME) $(afmdir)/Palatino-Bold.afm` $(TEXTMAP) $@
+         `$(AFMNAME) $(afmdir)/Palatino-Bold.afm` \
+         $(TEXTMAP) $@
 
 PI:
        $(AFMTODIT) $(EFLAG) $(IFLAG) \
-         `$(AFMNAME) $(afmdir)/Palatino-Italic.afm` $(TEXTMAP) $@
+         `$(AFMNAME) $(afmdir)/Palatino-Italic.afm` \
+         $(TEXTMAP) $@
 
 PBI:
        $(AFMTODIT) $(EFLAG) $(IFLAG) \
-         `$(AFMNAME) $(afmdir)/Palatino-BoldItalic.afm` $(TEXTMAP) $@
+         `$(AFMNAME) $(afmdir)/Palatino-BoldItalic.afm` \
+         $(TEXTMAP) $@
 
 NR:
        $(AFMTODIT) $(EFLAG) $(RFLAG) \
-         `$(AFMNAME) $(afmdir)/NewCenturySchlbk-Roman.afm` $(TEXTMAP) $@
+         `$(AFMNAME) $(afmdir)/NewCenturySchlbk-Roman.afm` \
+         $(TEXTMAP) $@
 
 NB:
        $(AFMTODIT) $(EFLAG) $(RFLAG) \
-         `$(AFMNAME) $(afmdir)/NewCenturySchlbk-Bold.afm` $(TEXTMAP) $@
+         `$(AFMNAME) $(afmdir)/NewCenturySchlbk-Bold.afm` \
+         $(TEXTMAP) $@
 
 NI:
        $(AFMTODIT) $(EFLAG) $(IFLAG) \
-         `$(AFMNAME) $(afmdir)/NewCenturySchlbk-Italic.afm` $(TEXTMAP) $@
+         `$(AFMNAME) $(afmdir)/NewCenturySchlbk-Italic.afm` \
+         $(TEXTMAP) $@
 
 NBI:
        $(AFMTODIT) $(EFLAG) $(IFLAG) \
-         `$(AFMNAME) $(afmdir)/NewCenturySchlbk-BoldItalic.afm` $(TEXTMAP) $@
+         `$(AFMNAME) $(afmdir)/NewCenturySchlbk-BoldItalic.afm` \
+         $(TEXTMAP) $@
 
 BMR:
        $(AFMTODIT) $(EFLAG) $(RFLAG) \
-         `$(AFMNAME) $(afmdir)/Bookman-Light.afm` $(TEXTMAP) $@
+         `$(AFMNAME) $(afmdir)/Bookman-Light.afm` \
+         $(TEXTMAP) $@
 
 BMB:
        $(AFMTODIT) $(EFLAG) $(RFLAG) \
-         `$(AFMNAME) $(afmdir)/Bookman-Demi.afm` $(TEXTMAP) $@
+         `$(AFMNAME) $(afmdir)/Bookman-Demi.afm` \
+         $(TEXTMAP) $@
 
 BMI:
        $(AFMTODIT) $(EFLAG) $(IFLAG) \
-         `$(AFMNAME) $(afmdir)/Bookman-LightItalic.afm` $(TEXTMAP) $@
+         `$(AFMNAME) $(afmdir)/Bookman-LightItalic.afm` \
+         $(TEXTMAP) $@
 
 BMBI:
        $(AFMTODIT) $(EFLAG) $(IFLAG) \
-         `$(AFMNAME) $(afmdir)/Bookman-DemiItalic.afm` $(TEXTMAP) $@
+         `$(AFMNAME) $(afmdir)/Bookman-DemiItalic.afm` \
+         $(TEXTMAP) $@
 
 AR:
        $(AFMTODIT) $(EFLAG) $(RFLAG) \
-         `$(AFMNAME) $(afmdir)/AvantGarde-Book.afm` $(TEXTMAP) $@
+         `$(AFMNAME) $(afmdir)/AvantGarde-Book.afm` \
+         $(TEXTMAP) $@
 
 AB:
        $(AFMTODIT) $(EFLAG) $(RFLAG) \
-         `$(AFMNAME) $(afmdir)/AvantGarde-Demi.afm` $(TEXTMAP) $@
+         `$(AFMNAME) $(afmdir)/AvantGarde-Demi.afm` \
+         $(TEXTMAP) $@
 
 AI:
        $(AFMTODIT) $(EFLAG) $(IFLAG) \
-         `$(AFMNAME) $(afmdir)/AvantGarde-BookOblique.afm` $(TEXTMAP) $@
+         `$(AFMNAME) $(afmdir)/AvantGarde-BookOblique.afm` \
+         $(TEXTMAP) $@
 
 ABI:
        $(AFMTODIT) $(EFLAG) $(IFLAG) \
-         `$(AFMNAME) $(afmdir)/AvantGarde-DemiOblique.afm` $(TEXTMAP) $@
+         `$(AFMNAME) $(afmdir)/AvantGarde-DemiOblique.afm` \
+         $(TEXTMAP) $@
 
 HNR:
        $(AFMTODIT) $(EFLAG) $(RFLAG) \
-         `$(AFMNAME) $(afmdir)/Helvetica-Narrow.afm` $(TEXTMAP) $@
+         `$(AFMNAME) $(afmdir)/Helvetica-Narrow.afm` \
+         $(TEXTMAP) $@
 
 HNB:
        $(AFMTODIT) $(EFLAG) $(RFLAG) \
-         `$(AFMNAME) $(afmdir)/Helvetica-Narrow-Bold.afm` $(TEXTMAP) $@
+         `$(AFMNAME) $(afmdir)/Helvetica-Narrow-Bold.afm` \
+         $(TEXTMAP) $@
 
 HNI:
        $(AFMTODIT) $(EFLAG) $(IFLAG) \
-         `$(AFMNAME) $(afmdir)/Helvetica-Narrow-Oblique.afm` $(TEXTMAP) $@
+         `$(AFMNAME) $(afmdir)/Helvetica-Narrow-Oblique.afm` \
+         $(TEXTMAP) $@
 
 HNBI:
        $(AFMTODIT) $(EFLAG) $(IFLAG) \
-         `$(AFMNAME) $(afmdir)/Helvetica-Narrow-BoldOblique.afm` $(TEXTMAP) $@
+         `$(AFMNAME) $(afmdir)/Helvetica-Narrow-BoldOblique.afm` \
+         $(TEXTMAP) $@
 
 ZCMI:
        $(AFMTODIT) $(EFLAG) $(IFLAG) \
-         `$(AFMNAME) $(afmdir)/ZapfChancery-MediumItalic.afm` $(TEXTMAP) $@
+         `$(AFMNAME) $(afmdir)/ZapfChancery-MediumItalic.afm` \
+         $(TEXTMAP) $@
 
 ZD:
        $(AFMTODIT) -s $(RFLAG) \
-         `$(AFMNAME) $(afmdir)/ZapfDingbats.afm` $(srcdir)/dingbats.map $@
+         `$(AFMNAME) $(afmdir)/ZapfDingbats.afm` \
+         $(srcdir)/dingbats.map $@
 
 SS: symbolsl.afm
        $(AFMTODIT) -s -x $(IFLAG) \
@@ -219,7 +260,8 @@ freeeuro.afm freeeuro.pfa: $(srcdir)/freeeuro.sfd
 
 symbol.afm: $(srcdir)/symbol.sed
        $(RM) $@
-       sed -f $(srcdir)/symbol.sed `$(AFMNAME) $(afmdir)/Symbol.afm` >$@
+       sed -f $(srcdir)/symbol.sed `$(AFMNAME) $(afmdir)/Symbol.afm` \
+         >$@
 
 symbolsl.afm: $(srcdir)/symbolsl.awk $(srcdir)/../symbolsl.ps
        $(RM) $@ Fontmap
@@ -260,9 +302,11 @@ extraclean: realclean
 .PHONY: all clean realclean extraclean
 
 ########################################################################
-# Emacs settings
+# Editor settings
 ########################################################################
 #
 # Local Variables:
 # mode: makefile
+# fill-column: 72
 # End:
+# vim: set textwidth=72:
index b653802..9ad3add 100755 (executable)
@@ -2,8 +2,7 @@
 #
 # make-zapfdr -- script for creating the file zapfdr.ps
 #
-# Copyright (C) 2006, 2009
-# Free Software Foundation, Inc.
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
 #      Written by Werner Lemberg <wl@gnu.org>
 #
 # This file is part of groff.
@@ -19,7 +18,7 @@
 # for more details.
 #
 # You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 #
 # usage:
index 153e631..0bc4fb9 100644 (file)
@@ -1,4 +1,3 @@
-#! /bin/sed -f
 # Set up uniform vertical dimensions for extensible glyphs (needed by eqn).
 /^C .*[ ;]N bracketlefttp[ ;]/bx
 /^C .*[ ;]N bracketleftex[ ;]/bx
index c2cbd1e..a69a15a 100644 (file)
        setgray fill
 } bind def
 
-% fill with the ``current color''
+% fill with the "current color"
 
 /FL /fill load def
 
diff --git a/font/devutf8/Makefile.sub b/font/devutf8/Makefile.sub
deleted file mode 100644 (file)
index 4f2da52..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-# Makefile.sub for `font devutf8'
-#
-# File position: <groff-source>/font/devutf8/Makefile.sub
-#
-# Copyright (C) 2014 Free Software Foundation, Inc.
-#
-# This file is part of `font utf8' which is part of `groff'.
-#
-# `groff' is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 2 of the License, or
-# (at your option) any later version.
-#
-# `groff' 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
-# <http://www.gnu.org/licenses/gpl-2.0.html>.
-#
-########################################################################
-
-DEV=utf8
-FONTS=R I B BI
-DEVFILES=$(FONTS) DESC
-MOSTLYCLEANADD=$(FONTS) DESC
-
-RES=240
-CPI=10
-LPI=6
-
-RM=rm -f
-
-$(FONTS): R.proto
-       @echo Making $@
-       @$(RM) $@
-       @charwidth=`expr $(RES) / $(CPI)` ; \
-        sed -e "s/^name [A-Z]*$$/name $@/" \
-            -e \
-             "s/^\\([^ ]*\\)   [0-9][0-9]*     /\\1    $$charwidth     /" \
-            -e "s/^spacewidth [0-9][0-9]*$$/spacewidth $$charwidth/" \
-            -e "s/^internalname .*$$/internalname $@/" \
-            -e "/^internalname/s/BI/3/" \
-            -e "/^internalname/s/B/2/" \
-            -e "/^internalname/s/I/1/" \
-            -e "/^internalname .*[^ 0-9]/d" \
-            $(srcdir)/R.proto >$@
-
-DESC: DESC.proto
-       @echo Making $@
-       @sed -e "s/^res .*$$/res $(RES)/" \
-            -e "s/^hor .*$$/hor `expr $(RES) / $(CPI)`/" \
-            -e "s/^vert .*$$/vert `expr $(RES) / $(LPI)`/" \
-            -e "s/^fonts .*$$/fonts `set $(FONTS); echo $$#` $(FONTS)/" \
-            $(srcdir)/DESC.proto >$@
-
-########################################################################
-# Emacs settings
-########################################################################
-#
-# Local Variables:
-# mode: makefile
-# End:
index 8e72470..e8fe251 100644 (file)
@@ -11,8 +11,8 @@ HYPHEN-MINUS is so ambiguous that it is unusable for serious typographic
 use.
 
 \[wp] has been mapped to 0x2118, because according to Unicode 4.1's
-NamesList.txt, U+2118 SCRIPT CAPITAL P is really a Weierstrass `p',
-neither SCRIPT not CAPITAL.
+NamesList.txt, U+2118 SCRIPT CAPITAL P is really a Weierstrass 'p',
+neither SCRIPT nor CAPITAL.
 
 The following line could be added; \[space] is known to devps but is not
 documented and not known to devdvi (actually, there is no space glyph within
@@ -20,19 +20,19 @@ the TeX system).
 
   space   24   0   0x0020
 
-devps maps \[a~] and `~' to `asciitilde', which is equivalent to 0x02DC, but
+devps maps \[a~] and '~' to 'asciitilde', which is equivalent to 0x02DC, but
 this glyph is just too small.  We map them to 0x007E instead.
 
-devps maps \[a^] and `^' to `circumflex', which is equivalent to 0x02C6, but
+devps maps \[a^] and '^' to 'circumflex', which is equivalent to 0x02C6, but
 this glyph is just too small.  We map them to 0x005E instead.
 
-devps maps \[*U] to `Upsilon1', which is equivalent to 0x03D2.  We map it to
+devps maps \[*U] to 'Upsilon1', which is equivalent to 0x03D2.  We map it to
 0x03A5 instead.
 
-devps maps \[*W] to `Omega', which is equivalent to either 0x2126 or 0x03A9.
+devps maps \[*W] to 'Omega', which is equivalent to either 0x2126 or 0x03A9.
 We map it to 0x03A9.
 
-devps maps \[*D] to `Delta', which is equivalent to either 0x2206 or 0x0394.
+devps maps \[*D] to 'Delta', which is equivalent to either 0x2206 or 0x0394.
 We map it to 0x0394.
 
 
diff --git a/font/devutf8/devutf8.am b/font/devutf8/devutf8.am
new file mode 100644 (file)
index 0000000..fce120f
--- /dev/null
@@ -0,0 +1,58 @@
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Last update: 13 Aug 2015
+#
+# This file is part of 'groff'.
+#
+# 'groff' 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.
+#
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+
+devutf8_srcdir = $(top_srcdir)/font/devutf8
+DEVUTF8FONTS = R I B BI
+DEVUTF8FONTSFILES = \
+  font/devutf8/R font/devutf8/I font/devutf8/B font/devutf8/BI
+
+DEVUTF8RES = 240
+DEVUTF8CPI = 10
+DEVUTF8LPI = 6
+
+devutf8fontdir = $(fontdir)/devutf8
+devutf8font_DATA = $(DEVUTF8FONTSFILES) font/devutf8/DESC
+MOSTLYCLEANFILES += $(DEVUTF8FONTSFILES) font/devutf8/DESC
+EXTRA_DIST += \
+  font/devutf8/R.proto \
+  font/devutf8/DESC.proto \
+  font/devutf8/NOTES \
+  font/devutf8/R.in
+
+$(DEVUTF8FONTSFILES): $(devutf8_srcdir)/R.proto
+       $(AM_V_GEN)$(MKDIR_P) `dirname $@` \
+       && $(RM) $@ \
+       && $(SHELL) $(GENFONTSSH) $(devutf8_srcdir)/R.proto \
+            $(DEVUTF8RES) $(DEVUTF8CPI) `basename $@` > $@
+
+font/devutf8/DESC: $(devutf8_srcdir)/DESC.proto
+       $(AM_V_GEN)$(MKDIR_P) `dirname $@` \
+       && $(SHELL) $(GENDESCSH) $(devutf8_srcdir)/DESC.proto \
+            $(DEVUTF8RES) $(DEVUTF8CPI) $(DEVUTF8LPI) $(DEVUTF8FONTS) > $@
+
+
+########################################################################
+# Editor settings
+########################################################################
+#
+# Local Variables:
+# mode: makefile-automake
+# fill-column: 72
+# End:
+# vim: set filetype=automake textwidth=72:
diff --git a/font/scripts/gendesc.sh b/font/scripts/gendesc.sh
new file mode 100755 (executable)
index 0000000..5bf5376
--- /dev/null
@@ -0,0 +1,18 @@
+#!/bin/sh
+# Usage: gendesc.sh <input .proto> <RES> <CPI> <LPI> <list of fonts>
+if test -z "$1" || test -z "$2" || test -z "$3" || test -z "$4" || \
+    test -z "$5"; then
+    echo "genfonts.sh: missing parameter"; exit 255;
+fi
+INPUT=$1
+RES=$2
+CPI=$3
+LPI=$4
+shift 4
+NBFONTS=`echo $#`
+FONTS=`echo $*`
+sed -e "s/^res .*$/res $RES/" \
+    -e "s/^hor .*$/hor `expr $RES / $CPI`/" \
+    -e "s/^vert .*$/vert `expr $RES / $LPI`/" \
+    -e "s/^fonts .*$/fonts $NBFONTS $FONTS/" \
+    $INPUT
diff --git a/font/scripts/genfonts.sh b/font/scripts/genfonts.sh
new file mode 100755 (executable)
index 0000000..ad45612
--- /dev/null
@@ -0,0 +1,23 @@
+#!/bin/sh -xv
+# Usage:
+# genfonts.sh <input .proto file> <RES> <CPI> <FONT name>
+if test -z "$1" || test -z "$2" || test -z "$3" || test -z "$4"; then
+    echo "genfonts.sh: missing parameter"; exit 255;
+fi
+
+INPUT=$1
+RES=$2
+CPI=$3
+FONT=$4
+charwidth=`expr $RES / $CPI` ;
+sed -e "s|^name [A-Z]*$|name $FONT|" \
+    -e \
+    "s/^\\([^  ]*\\)   [0-9][0-9]*     /\\1    $charwidth      /" \
+    -e "s/^spacewidth [0-9][0-9]*$/spacewidth $charwidth/" \
+    -e "s|^internalname .*$|internalname $FONT|" \
+    -e "/^internalname/s/CR/4/" \
+    -e "/^internalname/s/BI/3/" \
+    -e "/^internalname/s/B/2/" \
+    -e "/^internalname/s/I/1/" \
+    -e "/^internalname .*[^ 0-9]/d" \
+    $INPUT
diff --git a/font/scripts/scripts.am b/font/scripts/scripts.am
new file mode 100644 (file)
index 0000000..251dcea
--- /dev/null
@@ -0,0 +1,33 @@
+# Copyright (C) 2015-2018 Free Software Foundation, Inc.
+#
+# Last update: 13 Aug 2015
+#
+# This file is part of groff.
+#
+# groff is free software; you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free
+# Software Foundation, either version 2 of the License, or (at your
+# option) any later version.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+
+# Scripts for font files generation
+GENFONTSSH=$(top_srcdir)/font/scripts/genfonts.sh
+GENDESCSH = $(top_srcdir)/font/scripts/gendesc.sh
+EXTRA_DIST += $(GENFONTSSH) $(GENDESCSH)
+
+########################################################################
+# Editor settings
+########################################################################
+#
+# Local Variables:
+# mode: makefile-automake
+# fill-column: 72
+# End:
+# vim: set filetype=automake textwidth=72:
index 4e24705..f495356 100755 (executable)
@@ -2,34 +2,33 @@
 #
 # make-Rproto -- script for creating an R.proto file
 #
-# Copyright (C) 2006, 2009
-# Free Software Foundation, Inc.
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
 #      Written by Werner Lemberg <wl@gnu.org>
 #
 # This file is part of groff.
 #
 # groff 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.
+# Software Foundation, either version 3 of the License, or (at your
+# option) any later version.
 #
-# groff is distributed in the hope that it will be useful, but WITHOUT ANY
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# groff 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 <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 #
 # usage:
 #
 #   make-Rproto R.proto.in < uniuni.cpp > R.proto
 #
-# `R.proto.in' contains the device specific part of the R.proto file; it
-# should end with a line containing the word `charset'.
+# 'R.proto.in' contains the device specific part of the R.proto file; it
+# should end with a line containing the word 'charset'.
 #
-# `uniuni.cpp' is located in directory `src/libs/libgroff'.
+# 'uniuni.cpp' is located in directory 'src/libs/libgroff'.
 
 prog="$0"
 
index 41a511b..be41dbe 100644 (file)
--- a/gendef.sh
+++ b/gendef.sh
@@ -1,6 +1,6 @@
 #! /bin/sh
 #
-# Copyright (C) 1991-2014 Free Software Foundation, Inc.
+# Copyright (C) 1991-2018 Free Software Foundation, Inc.
 # 
 # This file is part of groff.
 # 
@@ -15,7 +15,7 @@
 # for more details.
 # 
 # You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #
 #
 # gendef filename var=val var=val ...
similarity index 97%
rename from src/libs/gnulib/m4/00gnulib.m4
rename to gnulib_m4/00gnulib.m4
index 8eca551..bd24796 100644 (file)
@@ -1,5 +1,5 @@
 # 00gnulib.m4 serial 3
-dnl Copyright (C) 2009-2014 Free Software Foundation, Inc.
+dnl Copyright (C) 2009-2018 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
 dnl with or without modifications, as long as this notice is preserved.
diff --git a/gnulib_m4/absolute-header.m4 b/gnulib_m4/absolute-header.m4
new file mode 100644 (file)
index 0000000..4e67e5f
--- /dev/null
@@ -0,0 +1,102 @@
+# absolute-header.m4 serial 16
+dnl Copyright (C) 2006-2018 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Derek Price.
+
+# gl_ABSOLUTE_HEADER(HEADER1 HEADER2 ...)
+# ---------------------------------------
+# Find the absolute name of a header file, testing first if the header exists.
+# If the header were sys/inttypes.h, this macro would define
+# ABSOLUTE_SYS_INTTYPES_H to the '""' quoted absolute name of sys/inttypes.h
+# in config.h
+# (e.g. '#define ABSOLUTE_SYS_INTTYPES_H "///usr/include/sys/inttypes.h"').
+# The three "///" are to pacify Sun C 5.8, which otherwise would say
+# "warning: #include of /usr/include/... may be non-portable".
+# Use '""', not '<>', so that the /// cannot be confused with a C99 comment.
+# Note: This macro assumes that the header file is not empty after
+# preprocessing, i.e. it does not only define preprocessor macros but also
+# provides some type/enum definitions or function/variable declarations.
+AC_DEFUN([gl_ABSOLUTE_HEADER],
+[AC_REQUIRE([AC_CANONICAL_HOST])
+AC_LANG_PREPROC_REQUIRE()dnl
+dnl FIXME: gl_absolute_header and ac_header_exists must be used unquoted
+dnl until we can assume autoconf 2.64 or newer.
+m4_foreach_w([gl_HEADER_NAME], [$1],
+  [AS_VAR_PUSHDEF([gl_absolute_header],
+                  [gl_cv_absolute_]m4_defn([gl_HEADER_NAME]))dnl
+  AC_CACHE_CHECK([absolute name of <]m4_defn([gl_HEADER_NAME])[>],
+    m4_defn([gl_absolute_header]),
+    [AS_VAR_PUSHDEF([ac_header_exists],
+                    [ac_cv_header_]m4_defn([gl_HEADER_NAME]))dnl
+    AC_CHECK_HEADERS_ONCE(m4_defn([gl_HEADER_NAME]))dnl
+    if test AS_VAR_GET(ac_header_exists) = yes; then
+      gl_ABSOLUTE_HEADER_ONE(m4_defn([gl_HEADER_NAME]))
+    fi
+    AS_VAR_POPDEF([ac_header_exists])dnl
+    ])dnl
+  AC_DEFINE_UNQUOTED(AS_TR_CPP([ABSOLUTE_]m4_defn([gl_HEADER_NAME])),
+                     ["AS_VAR_GET(gl_absolute_header)"],
+                     [Define this to an absolute name of <]m4_defn([gl_HEADER_NAME])[>.])
+  AS_VAR_POPDEF([gl_absolute_header])dnl
+])dnl
+])# gl_ABSOLUTE_HEADER
+
+# gl_ABSOLUTE_HEADER_ONE(HEADER)
+# ------------------------------
+# Like gl_ABSOLUTE_HEADER, except that:
+#   - it assumes that the header exists,
+#   - it uses the current CPPFLAGS,
+#   - it does not cache the result,
+#   - it is silent.
+AC_DEFUN([gl_ABSOLUTE_HEADER_ONE],
+[
+  AC_REQUIRE([AC_CANONICAL_HOST])
+  AC_LANG_CONFTEST([AC_LANG_SOURCE([[#include <]]m4_dquote([$1])[[>]])])
+  dnl AIX "xlc -E" and "cc -E" omit #line directives for header files
+  dnl that contain only a #include of other header files and no
+  dnl non-comment tokens of their own. This leads to a failure to
+  dnl detect the absolute name of <dirent.h>, <signal.h>, <poll.h>
+  dnl and others. The workaround is to force preservation of comments
+  dnl through option -C. This ensures all necessary #line directives
+  dnl are present. GCC supports option -C as well.
+  case "$host_os" in
+    aix*) gl_absname_cpp="$ac_cpp -C" ;;
+    *)    gl_absname_cpp="$ac_cpp" ;;
+  esac
+changequote(,)
+  case "$host_os" in
+    mingw*)
+      dnl For the sake of native Windows compilers (excluding gcc),
+      dnl treat backslash as a directory separator, like /.
+      dnl Actually, these compilers use a double-backslash as
+      dnl directory separator, inside the
+      dnl   # line "filename"
+      dnl directives.
+      gl_dirsep_regex='[/\\]'
+      ;;
+    *)
+      gl_dirsep_regex='\/'
+      ;;
+  esac
+  dnl A sed expression that turns a string into a basic regular
+  dnl expression, for use within "/.../".
+  gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g'
+  gl_header_literal_regex=`echo '$1' \
+                           | sed -e "$gl_make_literal_regex_sed"`
+  gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{
+      s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/
+      s|^/[^/]|//&|
+      p
+      q
+    }'
+changequote([,])
+  dnl eval is necessary to expand gl_absname_cpp.
+  dnl Ultrix and Pyramid sh refuse to redirect output of eval,
+  dnl so use subshell.
+  AS_VAR_SET([gl_cv_absolute_]AS_TR_SH([[$1]]),
+[`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&AS_MESSAGE_LOG_FD |
+  sed -n "$gl_absolute_header_sed"`])
+])
diff --git a/gnulib_m4/alloca.m4 b/gnulib_m4/alloca.m4
new file mode 100644 (file)
index 0000000..b9d94e8
--- /dev/null
@@ -0,0 +1,121 @@
+# alloca.m4 serial 14
+dnl Copyright (C) 2002-2004, 2006-2007, 2009-2018 Free Software Foundation,
+dnl Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_ALLOCA],
+[
+  AC_REQUIRE([AC_FUNC_ALLOCA])
+  if test $ac_cv_func_alloca_works = no; then
+    gl_PREREQ_ALLOCA
+  fi
+
+  # Define an additional variable used in the Makefile substitution.
+  if test $ac_cv_working_alloca_h = yes; then
+    AC_CACHE_CHECK([for alloca as a compiler built-in], [gl_cv_rpl_alloca], [
+      AC_EGREP_CPP([Need own alloca], [
+#if defined __GNUC__ || defined _AIX || defined _MSC_VER
+        Need own alloca
+#endif
+        ], [gl_cv_rpl_alloca=yes], [gl_cv_rpl_alloca=no])
+    ])
+    if test $gl_cv_rpl_alloca = yes; then
+      dnl OK, alloca can be implemented through a compiler built-in.
+      AC_DEFINE([HAVE_ALLOCA], [1],
+        [Define to 1 if you have 'alloca' after including <alloca.h>,
+         a header that may be supplied by this distribution.])
+      ALLOCA_H=alloca.h
+    else
+      dnl alloca exists as a library function, i.e. it is slow and probably
+      dnl a memory leak. Don't define HAVE_ALLOCA in this case.
+      ALLOCA_H=
+    fi
+  else
+    ALLOCA_H=alloca.h
+  fi
+  AC_SUBST([ALLOCA_H])
+  AM_CONDITIONAL([GL_GENERATE_ALLOCA_H], [test -n "$ALLOCA_H"])
+])
+
+# Prerequisites of lib/alloca.c.
+# STACK_DIRECTION is already handled by AC_FUNC_ALLOCA.
+AC_DEFUN([gl_PREREQ_ALLOCA], [:])
+
+# This works around a bug in autoconf <= 2.68.
+# See <https://lists.gnu.org/r/bug-gnulib/2011-06/msg00277.html>.
+
+m4_version_prereq([2.69], [] ,[
+
+# This is taken from the following Autoconf patch:
+# https://git.savannah.gnu.org/gitweb/?p=autoconf.git;a=commitdiff;h=6cd9f12520b0d6f76d3230d7565feba1ecf29497
+
+# _AC_LIBOBJ_ALLOCA
+# -----------------
+# Set up the LIBOBJ replacement of 'alloca'.  Well, not exactly
+# AC_LIBOBJ since we actually set the output variable 'ALLOCA'.
+# Nevertheless, for Automake, AC_LIBSOURCES it.
+m4_define([_AC_LIBOBJ_ALLOCA],
+[# The SVR3 libPW and SVR4 libucb both contain incompatible functions
+# that cause trouble.  Some versions do not even contain alloca or
+# contain a buggy version.  If you still want to use their alloca,
+# use ar to extract alloca.o from them instead of compiling alloca.c.
+AC_LIBSOURCES(alloca.c)
+AC_SUBST([ALLOCA], [\${LIBOBJDIR}alloca.$ac_objext])dnl
+AC_DEFINE(C_ALLOCA, 1, [Define to 1 if using 'alloca.c'.])
+
+AC_CACHE_CHECK(whether 'alloca.c' needs Cray hooks, ac_cv_os_cray,
+[AC_EGREP_CPP(webecray,
+[#if defined CRAY && ! defined CRAY2
+webecray
+#else
+wenotbecray
+#endif
+], ac_cv_os_cray=yes, ac_cv_os_cray=no)])
+if test $ac_cv_os_cray = yes; then
+  for ac_func in _getb67 GETB67 getb67; do
+    AC_CHECK_FUNC($ac_func,
+                  [AC_DEFINE_UNQUOTED(CRAY_STACKSEG_END, $ac_func,
+                                      [Define to one of '_getb67', 'GETB67',
+                                       'getb67' for Cray-2 and Cray-YMP
+                                       systems. This function is required for
+                                       'alloca.c' support on those systems.])
+    break])
+  done
+fi
+
+AC_CACHE_CHECK([stack direction for C alloca],
+               [ac_cv_c_stack_direction],
+[AC_RUN_IFELSE([AC_LANG_SOURCE(
+[AC_INCLUDES_DEFAULT
+int
+find_stack_direction (int *addr, int depth)
+{
+  int dir, dummy = 0;
+  if (! addr)
+    addr = &dummy;
+  *addr = addr < &dummy ? 1 : addr == &dummy ? 0 : -1;
+  dir = depth ? find_stack_direction (addr, depth - 1) : 0;
+  return dir + dummy;
+}
+
+int
+main (int argc, char **argv)
+{
+  return find_stack_direction (0, argc + !argv + 20) < 0;
+}])],
+               [ac_cv_c_stack_direction=1],
+               [ac_cv_c_stack_direction=-1],
+               [ac_cv_c_stack_direction=0])])
+AH_VERBATIM([STACK_DIRECTION],
+[/* If using the C implementation of alloca, define if you know the
+   direction of stack growth for your system; otherwise it will be
+   automatically deduced at runtime.
+        STACK_DIRECTION > 0 => grows toward higher addresses
+        STACK_DIRECTION < 0 => grows toward lower addresses
+        STACK_DIRECTION = 0 => direction of growth unknown */
+@%:@undef STACK_DIRECTION])dnl
+AC_DEFINE_UNQUOTED(STACK_DIRECTION, $ac_cv_c_stack_direction)
+])# _AC_LIBOBJ_ALLOCA
+])
diff --git a/gnulib_m4/asm-underscore.m4 b/gnulib_m4/asm-underscore.m4
new file mode 100644 (file)
index 0000000..58a5299
--- /dev/null
@@ -0,0 +1,72 @@
+# asm-underscore.m4 serial 4
+dnl Copyright (C) 2010-2018 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible. Based on as-underscore.m4 in GNU clisp.
+
+# gl_ASM_SYMBOL_PREFIX
+# Tests for the prefix of C symbols at the assembly language level and the
+# linker level. This prefix is either an underscore or empty. Defines the
+# C macro USER_LABEL_PREFIX to this prefix, and sets ASM_SYMBOL_PREFIX to
+# a stringified variant of this prefix.
+
+AC_DEFUN([gl_ASM_SYMBOL_PREFIX],
+[
+  AC_REQUIRE([AC_PROG_EGREP])
+  dnl We don't use GCC's __USER_LABEL_PREFIX__ here, because
+  dnl 1. It works only for GCC.
+  dnl 2. It is incorrectly defined on some platforms, in some GCC versions.
+  AC_REQUIRE([gl_C_ASM])
+  AC_CACHE_CHECK(
+    [whether C symbols are prefixed with underscore at the linker level],
+    [gl_cv_prog_as_underscore],
+    [cat > conftest.c <<EOF
+#ifdef __cplusplus
+extern "C" int foo (void);
+#endif
+int foo(void) { return 0; }
+EOF
+     # Look for the assembly language name in the .s file.
+     AC_TRY_COMMAND(${CC-cc} $CFLAGS $CPPFLAGS $gl_c_asm_opt conftest.c) >/dev/null 2>&1
+     if LC_ALL=C $EGREP '(^|[[^a-zA-Z0-9_]])_foo([[^a-zA-Z0-9_]]|$)' conftest.$gl_asmext >/dev/null; then
+       gl_cv_prog_as_underscore=yes
+     else
+       gl_cv_prog_as_underscore=no
+     fi
+     rm -f conftest*
+    ])
+  if test $gl_cv_prog_as_underscore = yes; then
+    USER_LABEL_PREFIX=_
+  else
+    USER_LABEL_PREFIX=
+  fi
+  AC_DEFINE_UNQUOTED([USER_LABEL_PREFIX], [$USER_LABEL_PREFIX],
+    [Define to the prefix of C symbols at the assembler and linker level,
+     either an underscore or empty.])
+  ASM_SYMBOL_PREFIX='"'${USER_LABEL_PREFIX}'"'
+  AC_SUBST([ASM_SYMBOL_PREFIX])
+])
+
+# gl_C_ASM
+# Determines how to produce an assembly language file from C source code.
+# Sets the variables:
+#   gl_asmext - the extension of assembly language output,
+#   gl_c_asm_opt - the C compiler option that produces assembly language output.
+
+AC_DEFUN([gl_C_ASM],
+[
+  AC_EGREP_CPP([MicrosoftCompiler],
+    [
+#ifdef _MSC_VER
+MicrosoftCompiler
+#endif
+    ],
+    [gl_asmext='asm'
+     gl_c_asm_opt='-c -Fa'
+    ],
+    [gl_asmext='s'
+     gl_c_asm_opt='-S'
+    ])
+])
diff --git a/gnulib_m4/errno_h.m4 b/gnulib_m4/errno_h.m4
new file mode 100644 (file)
index 0000000..9dbdedd
--- /dev/null
@@ -0,0 +1,137 @@
+# errno_h.m4 serial 12
+dnl Copyright (C) 2004, 2006, 2008-2018 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN_ONCE([gl_HEADER_ERRNO_H],
+[
+  AC_REQUIRE([AC_PROG_CC])
+  AC_CACHE_CHECK([for complete errno.h], [gl_cv_header_errno_h_complete], [
+    AC_EGREP_CPP([booboo],[
+#include <errno.h>
+#if !defined ETXTBSY
+booboo
+#endif
+#if !defined ENOMSG
+booboo
+#endif
+#if !defined EIDRM
+booboo
+#endif
+#if !defined ENOLINK
+booboo
+#endif
+#if !defined EPROTO
+booboo
+#endif
+#if !defined EMULTIHOP
+booboo
+#endif
+#if !defined EBADMSG
+booboo
+#endif
+#if !defined EOVERFLOW
+booboo
+#endif
+#if !defined ENOTSUP
+booboo
+#endif
+#if !defined ENETRESET
+booboo
+#endif
+#if !defined ECONNABORTED
+booboo
+#endif
+#if !defined ESTALE
+booboo
+#endif
+#if !defined EDQUOT
+booboo
+#endif
+#if !defined ECANCELED
+booboo
+#endif
+#if !defined EOWNERDEAD
+booboo
+#endif
+#if !defined ENOTRECOVERABLE
+booboo
+#endif
+#if !defined EILSEQ
+booboo
+#endif
+      ],
+      [gl_cv_header_errno_h_complete=no],
+      [gl_cv_header_errno_h_complete=yes])
+  ])
+  if test $gl_cv_header_errno_h_complete = yes; then
+    ERRNO_H=''
+  else
+    gl_NEXT_HEADERS([errno.h])
+    ERRNO_H='errno.h'
+  fi
+  AC_SUBST([ERRNO_H])
+  AM_CONDITIONAL([GL_GENERATE_ERRNO_H], [test -n "$ERRNO_H"])
+  gl_REPLACE_ERRNO_VALUE([EMULTIHOP])
+  gl_REPLACE_ERRNO_VALUE([ENOLINK])
+  gl_REPLACE_ERRNO_VALUE([EOVERFLOW])
+])
+
+# Assuming $1 = EOVERFLOW.
+# The EOVERFLOW errno value ought to be defined in <errno.h>, according to
+# POSIX.  But some systems (like OpenBSD 4.0 or AIX 3) don't define it, and
+# some systems (like OSF/1) define it when _XOPEN_SOURCE_EXTENDED is defined.
+# Check for the value of EOVERFLOW.
+# Set the variables EOVERFLOW_HIDDEN and EOVERFLOW_VALUE.
+AC_DEFUN([gl_REPLACE_ERRNO_VALUE],
+[
+  if test -n "$ERRNO_H"; then
+    AC_CACHE_CHECK([for ]$1[ value], [gl_cv_header_errno_h_]$1, [
+      AC_EGREP_CPP([yes],[
+#include <errno.h>
+#ifdef ]$1[
+yes
+#endif
+      ],
+      [gl_cv_header_errno_h_]$1[=yes],
+      [gl_cv_header_errno_h_]$1[=no])
+      if test $gl_cv_header_errno_h_]$1[ = no; then
+        AC_EGREP_CPP([yes],[
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+#ifdef ]$1[
+yes
+#endif
+          ], [gl_cv_header_errno_h_]$1[=hidden])
+        if test $gl_cv_header_errno_h_]$1[ = hidden; then
+          dnl The macro exists but is hidden.
+          dnl Define it to the same value.
+          AC_COMPUTE_INT([gl_cv_header_errno_h_]$1, $1, [
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+/* The following two lines are a workaround against an autoconf-2.52 bug.  */
+#include <stdio.h>
+#include <stdlib.h>
+])
+        fi
+      fi
+    ])
+    case $gl_cv_header_errno_h_]$1[ in
+      yes | no)
+        ]$1[_HIDDEN=0; ]$1[_VALUE=
+        ;;
+      *)
+        ]$1[_HIDDEN=1; ]$1[_VALUE="$gl_cv_header_errno_h_]$1["
+        ;;
+    esac
+    AC_SUBST($1[_HIDDEN])
+    AC_SUBST($1[_VALUE])
+  fi
+])
+
+dnl Autoconf >= 2.61 has AC_COMPUTE_INT built-in.
+dnl Remove this when we can assume autoconf >= 2.61.
+m4_ifdef([AC_COMPUTE_INT], [], [
+  AC_DEFUN([AC_COMPUTE_INT], [_AC_COMPUTE_INT([$2],[$1],[$3],[$4])])
+])
diff --git a/gnulib_m4/exponentd.m4 b/gnulib_m4/exponentd.m4
new file mode 100644 (file)
index 0000000..7b02a4c
--- /dev/null
@@ -0,0 +1,116 @@
+# exponentd.m4 serial 3
+dnl Copyright (C) 2007-2008, 2010-2018 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+AC_DEFUN([gl_DOUBLE_EXPONENT_LOCATION],
+[
+  AC_CACHE_CHECK([where to find the exponent in a 'double'],
+    [gl_cv_cc_double_expbit0],
+    [
+      AC_RUN_IFELSE(
+        [AC_LANG_SOURCE([[
+#include <float.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <string.h>
+#define NWORDS \
+  ((sizeof (double) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
+typedef union { double value; unsigned int word[NWORDS]; } memory_double;
+static unsigned int ored_words[NWORDS];
+static unsigned int anded_words[NWORDS];
+static void add_to_ored_words (double x)
+{
+  memory_double m;
+  size_t i;
+  /* Clear it first, in case sizeof (double) < sizeof (memory_double).  */
+  memset (&m, 0, sizeof (memory_double));
+  m.value = x;
+  for (i = 0; i < NWORDS; i++)
+    {
+      ored_words[i] |= m.word[i];
+      anded_words[i] &= m.word[i];
+    }
+}
+int main ()
+{
+  size_t j;
+  FILE *fp = fopen ("conftest.out", "w");
+  if (fp == NULL)
+    return 1;
+  for (j = 0; j < NWORDS; j++)
+    anded_words[j] = ~ (unsigned int) 0;
+  add_to_ored_words (0.25);
+  add_to_ored_words (0.5);
+  add_to_ored_words (1.0);
+  add_to_ored_words (2.0);
+  add_to_ored_words (4.0);
+  /* Remove bits that are common (e.g. if representation of the first mantissa
+     bit is explicit).  */
+  for (j = 0; j < NWORDS; j++)
+    ored_words[j] &= ~anded_words[j];
+  /* Now find the nonzero word.  */
+  for (j = 0; j < NWORDS; j++)
+    if (ored_words[j] != 0)
+      break;
+  if (j < NWORDS)
+    {
+      size_t i;
+      for (i = j + 1; i < NWORDS; i++)
+        if (ored_words[i] != 0)
+          {
+            fprintf (fp, "unknown");
+            return (fclose (fp) != 0);
+          }
+      for (i = 0; ; i++)
+        if ((ored_words[j] >> i) & 1)
+          {
+            fprintf (fp, "word %d bit %d", (int) j, (int) i);
+            return (fclose (fp) != 0);
+          }
+    }
+  fprintf (fp, "unknown");
+  return (fclose (fp) != 0);
+}
+        ]])],
+        [gl_cv_cc_double_expbit0=`cat conftest.out`],
+        [gl_cv_cc_double_expbit0="unknown"],
+        [
+          dnl On ARM, there are two 'double' floating-point formats, used by
+          dnl different sets of instructions: The older FPA instructions assume
+          dnl that they are stored in big-endian word order, while the words
+          dnl (like integer types) are stored in little-endian byte order.
+          dnl The newer VFP instructions assume little-endian order
+          dnl consistently.
+          AC_EGREP_CPP([mixed_endianness], [
+#if defined arm || defined __arm || defined __arm__
+  mixed_endianness
+#endif
+            ],
+            [gl_cv_cc_double_expbit0="unknown"],
+            [
+              pushdef([AC_MSG_CHECKING],[:])dnl
+              pushdef([AC_MSG_RESULT],[:])dnl
+              pushdef([AC_MSG_RESULT_UNQUOTED],[:])dnl
+              AC_C_BIGENDIAN(
+                [gl_cv_cc_double_expbit0="word 0 bit 20"],
+                [gl_cv_cc_double_expbit0="word 1 bit 20"],
+                [gl_cv_cc_double_expbit0="unknown"])
+              popdef([AC_MSG_RESULT_UNQUOTED])dnl
+              popdef([AC_MSG_RESULT])dnl
+              popdef([AC_MSG_CHECKING])dnl
+            ])
+        ])
+      rm -f conftest.out
+    ])
+  case "$gl_cv_cc_double_expbit0" in
+    word*bit*)
+      word=`echo "$gl_cv_cc_double_expbit0" | sed -e 's/word //' -e 's/ bit.*//'`
+      bit=`echo "$gl_cv_cc_double_expbit0" | sed -e 's/word.*bit //'`
+      AC_DEFINE_UNQUOTED([DBL_EXPBIT0_WORD], [$word],
+        [Define as the word index where to find the exponent of 'double'.])
+      AC_DEFINE_UNQUOTED([DBL_EXPBIT0_BIT], [$bit],
+        [Define as the bit index in the word where to find bit 0 of the exponent of 'double'.])
+      ;;
+  esac
+])
diff --git a/gnulib_m4/exponentf.m4 b/gnulib_m4/exponentf.m4
new file mode 100644 (file)
index 0000000..b259b91
--- /dev/null
@@ -0,0 +1,92 @@
+# exponentf.m4 serial 2
+dnl Copyright (C) 2007-2008, 2010-2018 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+AC_DEFUN([gl_FLOAT_EXPONENT_LOCATION],
+[
+  AC_CACHE_CHECK([where to find the exponent in a 'float'],
+    [gl_cv_cc_float_expbit0],
+    [
+      AC_RUN_IFELSE(
+        [AC_LANG_SOURCE([[
+#include <float.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <string.h>
+#define NWORDS \
+  ((sizeof (float) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
+typedef union { float value; unsigned int word[NWORDS]; } memory_float;
+static unsigned int ored_words[NWORDS];
+static unsigned int anded_words[NWORDS];
+static void add_to_ored_words (float x)
+{
+  memory_float m;
+  size_t i;
+  /* Clear it first, in case
+     sizeof (float) < sizeof (memory_float).  */
+  memset (&m, 0, sizeof (memory_float));
+  m.value = x;
+  for (i = 0; i < NWORDS; i++)
+    {
+      ored_words[i] |= m.word[i];
+      anded_words[i] &= m.word[i];
+    }
+}
+int main ()
+{
+  size_t j;
+  FILE *fp = fopen ("conftest.out", "w");
+  if (fp == NULL)
+    return 1;
+  for (j = 0; j < NWORDS; j++)
+    anded_words[j] = ~ (unsigned int) 0;
+  add_to_ored_words (0.25f);
+  add_to_ored_words (0.5f);
+  add_to_ored_words (1.0f);
+  add_to_ored_words (2.0f);
+  add_to_ored_words (4.0f);
+  /* Remove bits that are common (e.g. if representation of the first mantissa
+     bit is explicit).  */
+  for (j = 0; j < NWORDS; j++)
+    ored_words[j] &= ~anded_words[j];
+  /* Now find the nonzero word.  */
+  for (j = 0; j < NWORDS; j++)
+    if (ored_words[j] != 0)
+      break;
+  if (j < NWORDS)
+    {
+      size_t i;
+      for (i = j + 1; i < NWORDS; i++)
+        if (ored_words[i] != 0)
+          {
+            fprintf (fp, "unknown");
+            return (fclose (fp) != 0);
+          }
+      for (i = 0; ; i++)
+        if ((ored_words[j] >> i) & 1)
+          {
+            fprintf (fp, "word %d bit %d", (int) j, (int) i);
+            return (fclose (fp) != 0);
+          }
+    }
+  fprintf (fp, "unknown");
+  return (fclose (fp) != 0);
+}
+        ]])],
+        [gl_cv_cc_float_expbit0=`cat conftest.out`],
+        [gl_cv_cc_float_expbit0="unknown"],
+        [gl_cv_cc_float_expbit0="word 0 bit 23"])
+      rm -f conftest.out
+    ])
+  case "$gl_cv_cc_float_expbit0" in
+    word*bit*)
+      word=`echo "$gl_cv_cc_float_expbit0" | sed -e 's/word //' -e 's/ bit.*//'`
+      bit=`echo "$gl_cv_cc_float_expbit0" | sed -e 's/word.*bit //'`
+      AC_DEFINE_UNQUOTED([FLT_EXPBIT0_WORD], [$word],
+        [Define as the word index where to find the exponent of 'float'.])
+      AC_DEFINE_UNQUOTED([FLT_EXPBIT0_BIT], [$bit],
+        [Define as the bit index in the word where to find bit 0 of the exponent of 'float'.])
+      ;;
+  esac
+])
diff --git a/gnulib_m4/exponentl.m4 b/gnulib_m4/exponentl.m4
new file mode 100644 (file)
index 0000000..136fa61
--- /dev/null
@@ -0,0 +1,114 @@
+# exponentl.m4 serial 4
+dnl Copyright (C) 2007-2018 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+AC_DEFUN([gl_LONG_DOUBLE_EXPONENT_LOCATION],
+[
+  AC_REQUIRE([gl_BIGENDIAN])
+  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+  AC_CACHE_CHECK([where to find the exponent in a 'long double'],
+    [gl_cv_cc_long_double_expbit0],
+    [
+      AC_RUN_IFELSE(
+        [AC_LANG_SOURCE([[
+#include <float.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <string.h>
+#define NWORDS \
+  ((sizeof (long double) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
+typedef union { long double value; unsigned int word[NWORDS]; }
+        memory_long_double;
+static unsigned int ored_words[NWORDS];
+static unsigned int anded_words[NWORDS];
+static void add_to_ored_words (long double x)
+{
+  memory_long_double m;
+  size_t i;
+  /* Clear it first, in case
+     sizeof (long double) < sizeof (memory_long_double).  */
+  memset (&m, 0, sizeof (memory_long_double));
+  m.value = x;
+  for (i = 0; i < NWORDS; i++)
+    {
+      ored_words[i] |= m.word[i];
+      anded_words[i] &= m.word[i];
+    }
+}
+int main ()
+{
+  size_t j;
+  FILE *fp = fopen ("conftest.out", "w");
+  if (fp == NULL)
+    return 1;
+  for (j = 0; j < NWORDS; j++)
+    anded_words[j] = ~ (unsigned int) 0;
+  add_to_ored_words (0.25L);
+  add_to_ored_words (0.5L);
+  add_to_ored_words (1.0L);
+  add_to_ored_words (2.0L);
+  add_to_ored_words (4.0L);
+  /* Remove bits that are common (e.g. if representation of the first mantissa
+     bit is explicit).  */
+  for (j = 0; j < NWORDS; j++)
+    ored_words[j] &= ~anded_words[j];
+  /* Now find the nonzero word.  */
+  for (j = 0; j < NWORDS; j++)
+    if (ored_words[j] != 0)
+      break;
+  if (j < NWORDS)
+    {
+      size_t i;
+      for (i = j + 1; i < NWORDS; i++)
+        if (ored_words[i] != 0)
+          {
+            fprintf (fp, "unknown");
+            return (fclose (fp) != 0);
+          }
+      for (i = 0; ; i++)
+        if ((ored_words[j] >> i) & 1)
+          {
+            fprintf (fp, "word %d bit %d", (int) j, (int) i);
+            return (fclose (fp) != 0);
+          }
+    }
+  fprintf (fp, "unknown");
+  return (fclose (fp) != 0);
+}
+        ]])],
+        [gl_cv_cc_long_double_expbit0=`cat conftest.out`],
+        [gl_cv_cc_long_double_expbit0="unknown"],
+        [
+          dnl When cross-compiling, in general we don't know. It depends on the
+          dnl ABI and compiler version. There are too many cases.
+          gl_cv_cc_long_double_expbit0="unknown"
+          case "$host_os" in
+            mingw*) # On native Windows (little-endian), we know the result
+                    # in two cases: mingw, MSVC.
+              AC_EGREP_CPP([Known], [
+#ifdef __MINGW32__
+ Known
+#endif
+                ], [gl_cv_cc_long_double_expbit0="word 2 bit 0"])
+              AC_EGREP_CPP([Known], [
+#ifdef _MSC_VER
+ Known
+#endif
+                ], [gl_cv_cc_long_double_expbit0="word 1 bit 20"])
+              ;;
+          esac
+        ])
+      rm -f conftest.out
+    ])
+  case "$gl_cv_cc_long_double_expbit0" in
+    word*bit*)
+      word=`echo "$gl_cv_cc_long_double_expbit0" | sed -e 's/word //' -e 's/ bit.*//'`
+      bit=`echo "$gl_cv_cc_long_double_expbit0" | sed -e 's/word.*bit //'`
+      AC_DEFINE_UNQUOTED([LDBL_EXPBIT0_WORD], [$word],
+        [Define as the word index where to find the exponent of 'long double'.])
+      AC_DEFINE_UNQUOTED([LDBL_EXPBIT0_BIT], [$bit],
+        [Define as the bit index in the word where to find bit 0 of the exponent of 'long double'.])
+      ;;
+  esac
+])
similarity index 72%
rename from src/libs/gnulib/m4/extensions.m4
rename to gnulib_m4/extensions.m4
index 37f55ca..71a854f 100644 (file)
@@ -1,7 +1,7 @@
-# serial 13  -*- Autoconf -*-
+# serial 18  -*- Autoconf -*-
 # Enable extensions on systems that normally disable them.
 
-# Copyright (C) 2003, 2006-2014 Free Software Foundation, Inc.
+# Copyright (C) 2003, 2006-2018 Free Software Foundation, Inc.
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -60,7 +60,7 @@ dnl configure.ac when using autoheader 2.62.
 #ifndef _ALL_SOURCE
 # undef _ALL_SOURCE
 #endif
-/* Enable general extensions on OS X.  */
+/* Enable general extensions on macOS.  */
 #ifndef _DARWIN_C_SOURCE
 # undef _DARWIN_C_SOURCE
 #endif
@@ -68,10 +68,46 @@ dnl configure.ac when using autoheader 2.62.
 #ifndef _GNU_SOURCE
 # undef _GNU_SOURCE
 #endif
+/* Enable NetBSD extensions on NetBSD.  */
+#ifndef _NETBSD_SOURCE
+# undef _NETBSD_SOURCE
+#endif
+/* Enable OpenBSD extensions on NetBSD.  */
+#ifndef _OPENBSD_SOURCE
+# undef _OPENBSD_SOURCE
+#endif
 /* Enable threading extensions on Solaris.  */
 #ifndef _POSIX_PTHREAD_SEMANTICS
 # undef _POSIX_PTHREAD_SEMANTICS
 #endif
+/* Enable extensions specified by ISO/IEC TS 18661-5:2014.  */
+#ifndef __STDC_WANT_IEC_60559_ATTRIBS_EXT__
+# undef __STDC_WANT_IEC_60559_ATTRIBS_EXT__
+#endif
+/* Enable extensions specified by ISO/IEC TS 18661-1:2014.  */
+#ifndef __STDC_WANT_IEC_60559_BFP_EXT__
+# undef __STDC_WANT_IEC_60559_BFP_EXT__
+#endif
+/* Enable extensions specified by ISO/IEC TS 18661-2:2015.  */
+#ifndef __STDC_WANT_IEC_60559_DFP_EXT__
+# undef __STDC_WANT_IEC_60559_DFP_EXT__
+#endif
+/* Enable extensions specified by ISO/IEC TS 18661-4:2015.  */
+#ifndef __STDC_WANT_IEC_60559_FUNCS_EXT__
+# undef __STDC_WANT_IEC_60559_FUNCS_EXT__
+#endif
+/* Enable extensions specified by ISO/IEC TS 18661-3:2015.  */
+#ifndef __STDC_WANT_IEC_60559_TYPES_EXT__
+# undef __STDC_WANT_IEC_60559_TYPES_EXT__
+#endif
+/* Enable extensions specified by ISO/IEC TR 24731-2:2010.  */
+#ifndef __STDC_WANT_LIB_EXT2__
+# undef __STDC_WANT_LIB_EXT2__
+#endif
+/* Enable extensions specified by ISO/IEC 24747:2009.  */
+#ifndef __STDC_WANT_MATH_SPEC_FUNCS__
+# undef __STDC_WANT_MATH_SPEC_FUNCS__
+#endif
 /* Enable extensions on HP NonStop.  */
 #ifndef _TANDEM_SOURCE
 # undef _TANDEM_SOURCE
@@ -82,6 +118,11 @@ dnl configure.ac when using autoheader 2.62.
 #ifndef _XOPEN_SOURCE
 # undef _XOPEN_SOURCE
 #endif
+/* Enable X/Open compliant socket functions that do not require linking
+   with -lxnet on HP-UX 11.11.  */
+#ifndef _HPUX_ALT_XOPEN_SOCKET_API
+# undef _HPUX_ALT_XOPEN_SOCKET_API
+#endif
 /* Enable general extensions on Solaris.  */
 #ifndef __EXTENSIONS__
 # undef __EXTENSIONS__
@@ -100,7 +141,16 @@ dnl configure.ac when using autoheader 2.62.
   AC_DEFINE([_ALL_SOURCE])
   AC_DEFINE([_DARWIN_C_SOURCE])
   AC_DEFINE([_GNU_SOURCE])
+  AC_DEFINE([_NETBSD_SOURCE])
+  AC_DEFINE([_OPENBSD_SOURCE])
   AC_DEFINE([_POSIX_PTHREAD_SEMANTICS])
+  AC_DEFINE([__STDC_WANT_IEC_60559_ATTRIBS_EXT__])
+  AC_DEFINE([__STDC_WANT_IEC_60559_BFP_EXT__])
+  AC_DEFINE([__STDC_WANT_IEC_60559_DFP_EXT__])
+  AC_DEFINE([__STDC_WANT_IEC_60559_FUNCS_EXT__])
+  AC_DEFINE([__STDC_WANT_IEC_60559_TYPES_EXT__])
+  AC_DEFINE([__STDC_WANT_LIB_EXT2__])
+  AC_DEFINE([__STDC_WANT_MATH_SPEC_FUNCS__])
   AC_DEFINE([_TANDEM_SOURCE])
   AC_CACHE_CHECK([whether _XOPEN_SOURCE should be defined],
     [ac_cv_should_define__xopen_source],
@@ -118,6 +168,7 @@ dnl configure.ac when using autoheader 2.62.
           [ac_cv_should_define__xopen_source=yes])])])
   test $ac_cv_should_define__xopen_source = yes &&
     AC_DEFINE([_XOPEN_SOURCE], [500])
+  AC_DEFINE([_HPUX_ALT_XOPEN_SOCKET_API])
 ])# AC_USE_SYSTEM_EXTENSIONS
 
 # gl_USE_SYSTEM_EXTENSIONS
diff --git a/gnulib_m4/extern-inline.m4 b/gnulib_m4/extern-inline.m4
new file mode 100644 (file)
index 0000000..3661cbd
--- /dev/null
@@ -0,0 +1,114 @@
+dnl 'extern inline' a la ISO C99.
+
+dnl Copyright 2012-2018 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_EXTERN_INLINE],
+[
+  AH_VERBATIM([extern_inline],
+[/* Please see the Gnulib manual for how to use these macros.
+
+   Suppress extern inline with HP-UX cc, as it appears to be broken; see
+   <https://lists.gnu.org/r/bug-texinfo/2013-02/msg00030.html>.
+
+   Suppress extern inline with Sun C in standards-conformance mode, as it
+   mishandles inline functions that call each other.  E.g., for 'inline void f
+   (void) { } inline void g (void) { f (); }', c99 incorrectly complains
+   'reference to static identifier "f" in extern inline function'.
+   This bug was observed with Sun C 5.12 SunOS_i386 2011/11/16.
+
+   Suppress extern inline (with or without __attribute__ ((__gnu_inline__)))
+   on configurations that mistakenly use 'static inline' to implement
+   functions or macros in standard C headers like <ctype.h>.  For example,
+   if isdigit is mistakenly implemented via a static inline function,
+   a program containing an extern inline function that calls isdigit
+   may not work since the C standard prohibits extern inline functions
+   from calling static functions (ISO C 99 section 6.7.4.(3).
+   This bug is known to occur on:
+
+     OS X 10.8 and earlier; see:
+     https://lists.gnu.org/r/bug-gnulib/2012-12/msg00023.html
+
+     DragonFly; see
+     http://muscles.dragonflybsd.org/bulk/bleeding-edge-potential/latest-per-pkg/ah-tty-0.3.12.log
+
+     FreeBSD; see:
+     https://lists.gnu.org/r/bug-gnulib/2014-07/msg00104.html
+
+   OS X 10.9 has a macro __header_inline indicating the bug is fixed for C and
+   for clang but remains for g++; see <https://trac.macports.org/ticket/41033>.
+   Assume DragonFly and FreeBSD will be similar.
+
+   GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99
+   inline semantics, unless -fgnu89-inline is used.  It defines a macro
+   __GNUC_STDC_INLINE__ to indicate this situation or a macro
+   __GNUC_GNU_INLINE__ to indicate the opposite situation.
+   GCC 4.2 with -std=c99 or -std=gnu99 implements the GNU C inline
+   semantics but warns, unless -fgnu89-inline is used:
+     warning: C99 inline functions are not supported; using GNU89
+     warning: to disable this warning use -fgnu89-inline or the gnu_inline function attribute
+   It defines a macro __GNUC_GNU_INLINE__ to indicate this situation.
+ */
+#if (((defined __APPLE__ && defined __MACH__) \
+      || defined __DragonFly__ || defined __FreeBSD__) \
+     && (defined __header_inline \
+         ? (defined __cplusplus && defined __GNUC_STDC_INLINE__ \
+            && ! defined __clang__) \
+         : ((! defined _DONT_USE_CTYPE_INLINE_ \
+             && (defined __GNUC__ || defined __cplusplus)) \
+            || (defined _FORTIFY_SOURCE && 0 < _FORTIFY_SOURCE \
+                && defined __GNUC__ && ! defined __cplusplus))))
+# define _GL_EXTERN_INLINE_STDHEADER_BUG
+#endif
+#if ((__GNUC__ \
+      ? defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ \
+      : (199901L <= __STDC_VERSION__ \
+         && !defined __HP_cc \
+         && !defined __PGI \
+         && !(defined __SUNPRO_C && __STDC__))) \
+     && !defined _GL_EXTERN_INLINE_STDHEADER_BUG)
+# define _GL_INLINE inline
+# define _GL_EXTERN_INLINE extern inline
+# define _GL_EXTERN_INLINE_IN_USE
+#elif (2 < __GNUC__ + (7 <= __GNUC_MINOR__) && !defined __STRICT_ANSI__ \
+       && !defined _GL_EXTERN_INLINE_STDHEADER_BUG)
+# if defined __GNUC_GNU_INLINE__ && __GNUC_GNU_INLINE__
+   /* __gnu_inline__ suppresses a GCC 4.2 diagnostic.  */
+#  define _GL_INLINE extern inline __attribute__ ((__gnu_inline__))
+# else
+#  define _GL_INLINE extern inline
+# endif
+# define _GL_EXTERN_INLINE extern
+# define _GL_EXTERN_INLINE_IN_USE
+#else
+# define _GL_INLINE static _GL_UNUSED
+# define _GL_EXTERN_INLINE static _GL_UNUSED
+#endif
+
+/* In GCC 4.6 (inclusive) to 5.1 (exclusive),
+   suppress bogus "no previous prototype for 'FOO'"
+   and "no previous declaration for 'FOO'" diagnostics,
+   when FOO is an inline function in the header; see
+   <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=54113> and
+   <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63877>.  */
+#if __GNUC__ == 4 && 6 <= __GNUC_MINOR__
+# if defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__
+#  define _GL_INLINE_HEADER_CONST_PRAGMA
+# else
+#  define _GL_INLINE_HEADER_CONST_PRAGMA \
+     _Pragma ("GCC diagnostic ignored \"-Wsuggest-attribute=const\"")
+# endif
+# define _GL_INLINE_HEADER_BEGIN \
+    _Pragma ("GCC diagnostic push") \
+    _Pragma ("GCC diagnostic ignored \"-Wmissing-prototypes\"") \
+    _Pragma ("GCC diagnostic ignored \"-Wmissing-declarations\"") \
+    _GL_INLINE_HEADER_CONST_PRAGMA
+# define _GL_INLINE_HEADER_END \
+    _Pragma ("GCC diagnostic pop")
+#else
+# define _GL_INLINE_HEADER_BEGIN
+# define _GL_INLINE_HEADER_END
+#endif])
+])
diff --git a/gnulib_m4/float_h.m4 b/gnulib_m4/float_h.m4
new file mode 100644 (file)
index 0000000..02beb85
--- /dev/null
@@ -0,0 +1,108 @@
+# float_h.m4 serial 12
+dnl Copyright (C) 2007, 2009-2018 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FLOAT_H],
+[
+  AC_REQUIRE([AC_PROG_CC])
+  AC_REQUIRE([AC_CANONICAL_HOST])
+  FLOAT_H=
+  REPLACE_FLOAT_LDBL=0
+  case "$host_os" in
+    aix* | beos* | openbsd* | mirbsd* | irix*)
+      FLOAT_H=float.h
+      ;;
+    freebsd* | dragonfly*)
+      case "$host_cpu" in
+changequote(,)dnl
+        i[34567]86 )
+changequote([,])dnl
+          FLOAT_H=float.h
+          ;;
+        x86_64 )
+          # On x86_64 systems, the C compiler may still be generating
+          # 32-bit code.
+          AC_COMPILE_IFELSE(
+            [AC_LANG_SOURCE(
+               [[#if defined __LP64__ || defined __x86_64__ || defined __amd64__
+                  int ok;
+                 #else
+                  error fail
+                 #endif
+               ]])],
+            [],
+            [FLOAT_H=float.h])
+          ;;
+      esac
+      ;;
+    linux*)
+      case "$host_cpu" in
+        powerpc*)
+          FLOAT_H=float.h
+          ;;
+      esac
+      ;;
+  esac
+  case "$host_os" in
+    aix* | freebsd* | dragonfly* | linux*)
+      if test -n "$FLOAT_H"; then
+        REPLACE_FLOAT_LDBL=1
+      fi
+      ;;
+  esac
+
+  dnl Test against glibc-2.7 Linux/SPARC64 bug.
+  REPLACE_ITOLD=0
+  AC_CACHE_CHECK([whether conversion from 'int' to 'long double' works],
+    [gl_cv_func_itold_works],
+    [
+      AC_RUN_IFELSE(
+        [AC_LANG_SOURCE([[
+int i = -1;
+volatile long double ld;
+int main ()
+{
+  ld += i * 1.0L;
+  if (ld > 0)
+    return 1;
+  return 0;
+}]])],
+        [gl_cv_func_itold_works=yes],
+        [gl_cv_func_itold_works=no],
+        [case "$host" in
+           sparc*-*-linux*)
+             AC_COMPILE_IFELSE(
+               [AC_LANG_SOURCE(
+                 [[#if defined __LP64__ || defined __arch64__
+                    int ok;
+                   #else
+                    error fail
+                   #endif
+                 ]])],
+               [gl_cv_func_itold_works="guessing no"],
+               [gl_cv_func_itold_works="guessing yes"])
+             ;;
+                   # Guess yes on native Windows.
+           mingw*) gl_cv_func_itold_works="guessing yes" ;;
+           *)      gl_cv_func_itold_works="guessing yes" ;;
+         esac
+        ])
+    ])
+  case "$gl_cv_func_itold_works" in
+    *no)
+      REPLACE_ITOLD=1
+      dnl We add the workaround to <float.h> but also to <math.h>,
+      dnl to increase the chances that the fix function gets pulled in.
+      FLOAT_H=float.h
+      ;;
+  esac
+
+  if test -n "$FLOAT_H"; then
+    gl_NEXT_HEADERS([float.h])
+  fi
+  AC_SUBST([FLOAT_H])
+  AM_CONDITIONAL([GL_GENERATE_FLOAT_H], [test -n "$FLOAT_H"])
+  AC_SUBST([REPLACE_ITOLD])
+])
diff --git a/gnulib_m4/fpieee.m4 b/gnulib_m4/fpieee.m4
new file mode 100644 (file)
index 0000000..b58840f
--- /dev/null
@@ -0,0 +1,54 @@
+# fpieee.m4 serial 2  -*- coding: utf-8 -*-
+dnl Copyright (C) 2007, 2009-2018 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl IEEE 754 standardized three items:
+dnl - The formats of single-float and double-float - nowadays commonly
+dnl   available as 'float' and 'double' in C and C++.
+dnl   No autoconf test needed.
+dnl - The overflow and division by zero behaviour: The result are values
+dnl   '±Inf' and 'NaN', rather than exceptions as it was before.
+dnl   This file provides an autoconf macro for ensuring this behaviour of
+dnl   floating-point operations.
+dnl - A set of conditions (overflow, underflow, inexact, etc.) which can
+dnl   be configured to trigger an exception.
+dnl   This cannot be done in a portable way: it depends on the compiler,
+dnl   libc, kernel, and CPU.  No autoconf macro is provided for this.
+
+dnl Ensure non-trapping behaviour of floating-point overflow and
+dnl floating-point division by zero.
+dnl (For integer overflow, see gcc's -ftrapv option; for integer division by
+dnl zero, see the autoconf macro in intdiv0.m4.)
+
+AC_DEFUN([gl_FP_IEEE],
+[
+  AC_REQUIRE([AC_PROG_CC])
+  AC_REQUIRE([AC_CANONICAL_HOST])
+  # IEEE behaviour is the default on all CPUs except Alpha and SH
+  # (according to the test results of Bruno Haible's ieeefp/fenv_default.m4
+  # and the GCC 4.1.2 manual).
+  case "$host_cpu" in
+    alpha*)
+      # On Alpha systems, a compiler option provides the behaviour.
+      # See the ieee(3) manual page, also available at
+      # <https://backdrift.org/man/tru64/man3/ieee.3.html>
+      if test -n "$GCC"; then
+        # GCC has the option -mieee.
+        # For full IEEE compliance (rarely needed), use option -mieee-with-inexact.
+        CPPFLAGS="$CPPFLAGS -mieee"
+      else
+        # Compaq (ex-DEC) C has the option -ieee, equivalent to -ieee_with_no_inexact.
+        # For full IEEE compliance (rarely needed), use option -ieee_with_inexact.
+        CPPFLAGS="$CPPFLAGS -ieee"
+      fi
+      ;;
+    sh*)
+      if test -n "$GCC"; then
+        # GCC has the option -mieee.
+        CPPFLAGS="$CPPFLAGS -mieee"
+      fi
+      ;;
+  esac
+])
diff --git a/gnulib_m4/fprintf-posix.m4 b/gnulib_m4/fprintf-posix.m4
new file mode 100644 (file)
index 0000000..b865a7c
--- /dev/null
@@ -0,0 +1,110 @@
+# fprintf-posix.m4 serial 14
+dnl Copyright (C) 2007-2018 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_FPRINTF_POSIX],
+[
+  AC_REQUIRE([gl_PRINTF_SIZES_C99])
+  AC_REQUIRE([gl_PRINTF_LONG_DOUBLE])
+  AC_REQUIRE([gl_PRINTF_INFINITE])
+  AC_REQUIRE([gl_PRINTF_INFINITE_LONG_DOUBLE])
+  AC_REQUIRE([gl_PRINTF_DIRECTIVE_A])
+  AC_REQUIRE([gl_PRINTF_DIRECTIVE_F])
+  AC_REQUIRE([gl_PRINTF_DIRECTIVE_N])
+  AC_REQUIRE([gl_PRINTF_DIRECTIVE_LS])
+  AC_REQUIRE([gl_PRINTF_POSITIONS])
+  AC_REQUIRE([gl_PRINTF_FLAG_GROUPING])
+  AC_REQUIRE([gl_PRINTF_FLAG_LEFTADJUST])
+  AC_REQUIRE([gl_PRINTF_FLAG_ZERO])
+  AC_REQUIRE([gl_PRINTF_PRECISION])
+  AC_REQUIRE([gl_PRINTF_ENOMEM])
+  gl_cv_func_fprintf_posix=no
+  case "$gl_cv_func_printf_sizes_c99" in
+    *yes)
+      case "$gl_cv_func_printf_long_double" in
+        *yes)
+          case "$gl_cv_func_printf_infinite" in
+            *yes)
+              case "$gl_cv_func_printf_infinite_long_double" in
+                *yes)
+                  case "$gl_cv_func_printf_directive_a" in
+                    *yes)
+                      case "$gl_cv_func_printf_directive_f" in
+                        *yes)
+                          case "$gl_cv_func_printf_directive_n" in
+                            *yes)
+                              case "$gl_cv_func_printf_directive_ls" in
+                                *yes)
+                                  case "$gl_cv_func_printf_positions" in
+                                    *yes)
+                                      case "$gl_cv_func_printf_flag_grouping" in
+                                        *yes)
+                                          case "$gl_cv_func_printf_flag_leftadjust" in
+                                            *yes)
+                                              case "$gl_cv_func_printf_flag_zero" in
+                                                *yes)
+                                                  case "$gl_cv_func_printf_precision" in
+                                                    *yes)
+                                                      case "$gl_cv_func_printf_enomem" in
+                                                        *yes)
+                                                          # fprintf exists and is
+                                                          # already POSIX compliant.
+                                                          gl_cv_func_fprintf_posix=yes
+                                                          ;;
+                                                      esac
+                                                      ;;
+                                                  esac
+                                                  ;;
+                                              esac
+                                              ;;
+                                          esac
+                                          ;;
+                                      esac
+                                      ;;
+                                  esac
+                                  ;;
+                              esac
+                              ;;
+                          esac
+                          ;;
+                      esac
+                      ;;
+                  esac
+                  ;;
+              esac
+              ;;
+          esac
+          ;;
+      esac
+      ;;
+  esac
+  if test $gl_cv_func_fprintf_posix = no; then
+    gl_PREREQ_VASNPRINTF_LONG_DOUBLE
+    gl_PREREQ_VASNPRINTF_INFINITE_DOUBLE
+    gl_PREREQ_VASNPRINTF_INFINITE_LONG_DOUBLE
+    gl_PREREQ_VASNPRINTF_DIRECTIVE_A
+    gl_PREREQ_VASNPRINTF_DIRECTIVE_F
+    gl_PREREQ_VASNPRINTF_DIRECTIVE_LS
+    gl_PREREQ_VASNPRINTF_FLAG_GROUPING
+    gl_PREREQ_VASNPRINTF_FLAG_LEFTADJUST
+    gl_PREREQ_VASNPRINTF_FLAG_ZERO
+    gl_PREREQ_VASNPRINTF_PRECISION
+    gl_PREREQ_VASNPRINTF_ENOMEM
+    gl_REPLACE_VASNPRINTF
+    gl_REPLACE_FPRINTF
+  fi
+])
+
+AC_DEFUN([gl_REPLACE_FPRINTF],
+[
+  AC_REQUIRE([gl_STDIO_H_DEFAULTS])
+  AC_LIBOBJ([fprintf])
+  REPLACE_FPRINTF=1
+  AC_DEFINE([REPLACE_FPRINTF_POSIX], [1],
+    [Define if fprintf is overridden by a POSIX compliant gnulib implementation.])
+  gl_PREREQ_FPRINTF
+])
+
+AC_DEFUN([gl_PREREQ_FPRINTF], [:])
diff --git a/gnulib_m4/frexp.m4 b/gnulib_m4/frexp.m4
new file mode 100644 (file)
index 0000000..33e07f5
--- /dev/null
@@ -0,0 +1,181 @@
+# frexp.m4 serial 16
+dnl Copyright (C) 2007-2018 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_FREXP],
+[
+  AC_REQUIRE([gl_MATH_H_DEFAULTS])
+  AC_REQUIRE([gl_CHECK_FREXP_NO_LIBM])
+  FREXP_LIBM=
+  if test $gl_cv_func_frexp_no_libm = no; then
+    AC_CACHE_CHECK([whether frexp() can be used with libm],
+      [gl_cv_func_frexp_in_libm],
+      [
+        save_LIBS="$LIBS"
+        LIBS="$LIBS -lm"
+        AC_LINK_IFELSE(
+          [AC_LANG_PROGRAM(
+             [[#include <math.h>
+               double x;]],
+             [[int e; return frexp (x, &e) > 0;]])],
+          [gl_cv_func_frexp_in_libm=yes],
+          [gl_cv_func_frexp_in_libm=no])
+        LIBS="$save_LIBS"
+      ])
+    if test $gl_cv_func_frexp_in_libm = yes; then
+      FREXP_LIBM=-lm
+    fi
+  fi
+  if test $gl_cv_func_frexp_no_libm = yes \
+     || test $gl_cv_func_frexp_in_libm = yes; then
+    save_LIBS="$LIBS"
+    LIBS="$LIBS $FREXP_LIBM"
+    gl_FUNC_FREXP_WORKS
+    LIBS="$save_LIBS"
+    case "$gl_cv_func_frexp_works" in
+      *yes) gl_func_frexp=yes ;;
+      *)    gl_func_frexp=no; REPLACE_FREXP=1; FREXP_LIBM= ;;
+    esac
+  else
+    gl_func_frexp=no
+  fi
+  if test $gl_func_frexp = yes; then
+    AC_DEFINE([HAVE_FREXP], [1],
+      [Define if the frexp() function is available and works.])
+  fi
+  AC_SUBST([FREXP_LIBM])
+])
+
+AC_DEFUN([gl_FUNC_FREXP_NO_LIBM],
+[
+  AC_REQUIRE([gl_MATH_H_DEFAULTS])
+  AC_REQUIRE([gl_CHECK_FREXP_NO_LIBM])
+  if test $gl_cv_func_frexp_no_libm = yes; then
+    gl_FUNC_FREXP_WORKS
+    case "$gl_cv_func_frexp_works" in
+      *yes) gl_func_frexp_no_libm=yes ;;
+      *)    gl_func_frexp_no_libm=no; REPLACE_FREXP=1 ;;
+    esac
+  else
+    gl_func_frexp_no_libm=no
+    dnl Set REPLACE_FREXP here because the system may have frexp in libm.
+    REPLACE_FREXP=1
+  fi
+  if test $gl_func_frexp_no_libm = yes; then
+    AC_DEFINE([HAVE_FREXP_IN_LIBC], [1],
+      [Define if the frexp() function is available in libc.])
+  fi
+])
+
+dnl Test whether frexp() can be used without linking with libm.
+dnl Set gl_cv_func_frexp_no_libm to 'yes' or 'no' accordingly.
+AC_DEFUN([gl_CHECK_FREXP_NO_LIBM],
+[
+  AC_CACHE_CHECK([whether frexp() can be used without linking with libm],
+    [gl_cv_func_frexp_no_libm],
+    [
+      AC_LINK_IFELSE(
+        [AC_LANG_PROGRAM(
+           [[#include <math.h>
+             double x;]],
+           [[int e; return frexp (x, &e) > 0;]])],
+        [gl_cv_func_frexp_no_libm=yes],
+        [gl_cv_func_frexp_no_libm=no])
+    ])
+])
+
+dnl Test whether frexp() works also on denormalized numbers (this fails e.g. on
+dnl NetBSD 3.0), on infinite numbers (this fails e.g. on IRIX 6.5 and mingw),
+dnl and on negative zero (this fails e.g. on NetBSD 4.99 and mingw).
+AC_DEFUN([gl_FUNC_FREXP_WORKS],
+[
+  AC_REQUIRE([AC_PROG_CC])
+  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+  AC_CHECK_DECLS_ONCE([alarm])
+  AC_CACHE_CHECK([whether frexp works], [gl_cv_func_frexp_works],
+    [
+      AC_RUN_IFELSE(
+        [AC_LANG_SOURCE([[
+#include <float.h>
+#include <math.h>
+#include <string.h>
+#if HAVE_DECL_ALARM
+# include <signal.h>
+# include <unistd.h>
+#endif
+/* HP cc on HP-UX 10.20 has a bug with the constant expression -0.0.
+   ICC 10.0 has a bug when optimizing the expression -zero.
+   The expression -DBL_MIN * DBL_MIN does not work when cross-compiling
+   to PowerPC on Mac OS X 10.5.  */
+#if defined __hpux || defined __sgi || defined __ICC
+static double
+compute_minus_zero (void)
+{
+  return -DBL_MIN * DBL_MIN;
+}
+# define minus_zero compute_minus_zero ()
+#else
+double minus_zero = -0.0;
+#endif
+int main()
+{
+  int result = 0;
+  int i;
+  volatile double x;
+  double zero = 0.0;
+#if HAVE_DECL_ALARM
+  /* NeXTstep 3.3 frexp() runs into an endless loop when called on an infinite
+     number.  Let the test fail in this case.  */
+  signal (SIGALRM, SIG_DFL);
+  alarm (5);
+#endif
+  /* Test on denormalized numbers.  */
+  for (i = 1, x = 1.0; i >= DBL_MIN_EXP; i--, x *= 0.5)
+    ;
+  if (x > 0.0)
+    {
+      int exp;
+      double y = frexp (x, &exp);
+      /* On machines with IEEE754 arithmetic: x = 1.11254e-308, exp = -1022.
+         On NetBSD: y = 0.75. Correct: y = 0.5.  */
+      if (y != 0.5)
+        result |= 1;
+    }
+  /* Test on infinite numbers.  */
+  x = 1.0 / zero;
+  {
+    int exp;
+    double y = frexp (x, &exp);
+    if (y != x)
+      result |= 2;
+  }
+  /* Test on negative zero.  */
+  x = minus_zero;
+  {
+    int exp;
+    double y = frexp (x, &exp);
+    if (memcmp (&y, &x, sizeof x))
+      result |= 4;
+  }
+  return result;
+}]])],
+        [gl_cv_func_frexp_works=yes],
+        [gl_cv_func_frexp_works=no],
+        [case "$host_os" in
+           netbsd* | irix*) gl_cv_func_frexp_works="guessing no" ;;
+           mingw*) # Guess yes with MSVC, no with mingw.
+             AC_EGREP_CPP([Good], [
+#ifdef _MSC_VER
+ Good
+#endif
+               ],
+               [gl_cv_func_frexp_works="guessing yes"],
+               [gl_cv_func_frexp_works="guessing no"])
+             ;;
+           *) gl_cv_func_frexp_works="guessing yes" ;;
+         esac
+        ])
+    ])
+])
diff --git a/gnulib_m4/frexpl.m4 b/gnulib_m4/frexpl.m4
new file mode 100644 (file)
index 0000000..d7845d1
--- /dev/null
@@ -0,0 +1,231 @@
+# frexpl.m4 serial 21
+dnl Copyright (C) 2007-2018 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_FREXPL],
+[
+  AC_REQUIRE([gl_MATH_H_DEFAULTS])
+  AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE])
+
+  dnl Persuade glibc <math.h> to declare frexpl().
+  AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+
+  dnl Check whether it's declared.
+  dnl Mac OS X 10.3 has frexpl() in libc but doesn't declare it in <math.h>.
+  AC_CHECK_DECL([frexpl], , [HAVE_DECL_FREXPL=0], [[#include <math.h>]])
+
+  FREXPL_LIBM=
+  if test $HAVE_DECL_FREXPL = 1; then
+    gl_CHECK_FREXPL_NO_LIBM
+    if test $gl_cv_func_frexpl_no_libm = no; then
+      AC_CACHE_CHECK([whether frexpl() can be used with libm],
+        [gl_cv_func_frexpl_in_libm],
+        [
+          save_LIBS="$LIBS"
+          LIBS="$LIBS -lm"
+          AC_LINK_IFELSE(
+            [AC_LANG_PROGRAM(
+               [[#include <math.h>
+                 long double x;]],
+               [[int e; return frexpl (x, &e) > 0;]])],
+            [gl_cv_func_frexpl_in_libm=yes],
+            [gl_cv_func_frexpl_in_libm=no])
+          LIBS="$save_LIBS"
+        ])
+      if test $gl_cv_func_frexpl_in_libm = yes; then
+        FREXPL_LIBM=-lm
+      fi
+    fi
+    if test $gl_cv_func_frexpl_no_libm = yes \
+       || test $gl_cv_func_frexpl_in_libm = yes; then
+      save_LIBS="$LIBS"
+      LIBS="$LIBS $FREXPL_LIBM"
+      gl_FUNC_FREXPL_WORKS
+      LIBS="$save_LIBS"
+      case "$gl_cv_func_frexpl_works" in
+        *yes) gl_func_frexpl=yes ;;
+        *)    gl_func_frexpl=no; REPLACE_FREXPL=1 ;;
+      esac
+    else
+      gl_func_frexpl=no
+    fi
+    if test $gl_func_frexpl = yes; then
+      AC_DEFINE([HAVE_FREXPL], [1],
+        [Define if the frexpl() function is available.])
+    fi
+  fi
+  if test $HAVE_DECL_FREXPL = 0 || test $gl_func_frexpl = no; then
+    dnl Find libraries needed to link lib/frexpl.c.
+    if test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 1; then
+      AC_REQUIRE([gl_FUNC_FREXP])
+      FREXPL_LIBM="$FREXP_LIBM"
+    else
+      FREXPL_LIBM=
+    fi
+  fi
+  AC_SUBST([FREXPL_LIBM])
+])
+
+AC_DEFUN([gl_FUNC_FREXPL_NO_LIBM],
+[
+  AC_REQUIRE([gl_MATH_H_DEFAULTS])
+  AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE])
+  dnl Check whether it's declared.
+  dnl Mac OS X 10.3 has frexpl() in libc but doesn't declare it in <math.h>.
+  AC_CHECK_DECL([frexpl], , [HAVE_DECL_FREXPL=0], [[#include <math.h>]])
+  if test $HAVE_DECL_FREXPL = 1; then
+    gl_CHECK_FREXPL_NO_LIBM
+    if test $gl_cv_func_frexpl_no_libm = yes; then
+      gl_FUNC_FREXPL_WORKS
+      case "$gl_cv_func_frexpl_works" in
+        *yes) gl_func_frexpl_no_libm=yes ;;
+        *)    gl_func_frexpl_no_libm=no; REPLACE_FREXPL=1 ;;
+      esac
+    else
+      gl_func_frexpl_no_libm=no
+      dnl Set REPLACE_FREXPL here because the system may have frexpl in libm.
+      REPLACE_FREXPL=1
+    fi
+    if test $gl_func_frexpl_no_libm = yes; then
+      AC_DEFINE([HAVE_FREXPL_IN_LIBC], [1],
+        [Define if the frexpl() function is available in libc.])
+    fi
+  fi
+])
+
+dnl Test whether frexpl() can be used without linking with libm.
+dnl Set gl_cv_func_frexpl_no_libm to 'yes' or 'no' accordingly.
+AC_DEFUN([gl_CHECK_FREXPL_NO_LIBM],
+[
+  AC_CACHE_CHECK([whether frexpl() can be used without linking with libm],
+    [gl_cv_func_frexpl_no_libm],
+    [
+      AC_LINK_IFELSE(
+        [AC_LANG_PROGRAM(
+           [[#include <math.h>
+             long double x;]],
+           [[int e; return frexpl (x, &e) > 0;]])],
+        [gl_cv_func_frexpl_no_libm=yes],
+        [gl_cv_func_frexpl_no_libm=no])
+    ])
+])
+
+dnl Test whether frexpl() works on finite numbers (this fails on
+dnl Mac OS X 10.4/PowerPC, on AIX 5.1, and on BeOS), on denormalized numbers
+dnl (this fails on Mac OS X 10.5/i386), and also on infinite numbers (this
+dnl fails e.g. on IRIX 6.5 and mingw).
+AC_DEFUN([gl_FUNC_FREXPL_WORKS],
+[
+  AC_REQUIRE([AC_PROG_CC])
+  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+  AC_CACHE_CHECK([whether frexpl works], [gl_cv_func_frexpl_works],
+    [
+      AC_RUN_IFELSE(
+        [AC_LANG_SOURCE([[
+#include <float.h>
+#include <math.h>
+/* Override the values of <float.h>, like done in float.in.h.  */
+#if defined __i386__ && (defined __BEOS__ || defined __OpenBSD__)
+# undef LDBL_MIN_EXP
+# define LDBL_MIN_EXP    (-16381)
+#endif
+#if defined __i386__ && (defined __FreeBSD__ || defined __DragonFly__)
+# undef LDBL_MIN_EXP
+# define LDBL_MIN_EXP    (-16381)
+#endif
+#if (defined _ARCH_PPC || defined _POWER) && defined _AIX && (LDBL_MANT_DIG == 106) && defined __GNUC__
+# undef LDBL_MIN_EXP
+# define LDBL_MIN_EXP DBL_MIN_EXP
+#endif
+#if defined __sgi && (LDBL_MANT_DIG >= 106)
+# if defined __GNUC__
+#  undef LDBL_MIN_EXP
+#  define LDBL_MIN_EXP DBL_MIN_EXP
+# endif
+#endif
+extern
+#ifdef __cplusplus
+"C"
+#endif
+long double frexpl (long double, int *);
+int main()
+{
+  int result = 0;
+  volatile long double x;
+  /* Test on finite numbers that fails on AIX 5.1.  */
+  x = 16.0L;
+  {
+    int exp = -9999;
+    frexpl (x, &exp);
+    if (exp != 5)
+      result |= 1;
+  }
+  /* Test on finite numbers that fails on Mac OS X 10.4, because its frexpl
+     function returns an invalid (incorrectly normalized) value: it returns
+               y = { 0x3fe028f5, 0xc28f5c28, 0x3c9eb851, 0xeb851eb8 }
+     but the correct result is
+          0.505L = { 0x3fe028f5, 0xc28f5c29, 0xbc547ae1, 0x47ae1480 }  */
+  x = 1.01L;
+  {
+    int exp = -9999;
+    long double y = frexpl (x, &exp);
+    if (!(exp == 1 && y == 0.505L))
+      result |= 2;
+  }
+  /* Test on large finite numbers.  This fails on BeOS at i = 16322, while
+     LDBL_MAX_EXP = 16384.
+     In the loop end test, we test x against Infinity, rather than comparing
+     i with LDBL_MAX_EXP, because BeOS <float.h> has a wrong LDBL_MAX_EXP.  */
+  {
+    int i;
+    for (i = 1, x = 1.0L; x != x + x; i++, x *= 2.0L)
+      {
+        int exp = -9999;
+        frexpl (x, &exp);
+        if (exp != i)
+          {
+            result |= 4;
+            break;
+          }
+      }
+  }
+  /* Test on denormalized numbers.  */
+  {
+    int i;
+    for (i = 1, x = 1.0L; i >= LDBL_MIN_EXP; i--, x *= 0.5L)
+      ;
+    if (x > 0.0L)
+      {
+        int exp;
+        long double y = frexpl (x, &exp);
+        /* On machines with IEEE854 arithmetic: x = 1.68105e-4932,
+           exp = -16382, y = 0.5.  On Mac OS X 10.5: exp = -16384, y = 0.5.  */
+        if (exp != LDBL_MIN_EXP - 1)
+          result |= 8;
+      }
+  }
+  /* Test on infinite numbers.  */
+  x = 1.0L / 0.0L;
+  {
+    int exp;
+    long double y = frexpl (x, &exp);
+    if (y != x)
+      result |= 16;
+  }
+  return result;
+}]])],
+        [gl_cv_func_frexpl_works=yes],
+        [gl_cv_func_frexpl_works=no],
+        [
+changequote(,)dnl
+         case "$host_os" in
+           aix | aix[3-6]* | beos* | darwin* | irix* | mingw* | pw*)
+              gl_cv_func_frexpl_works="guessing no";;
+           *) gl_cv_func_frexpl_works="guessing yes";;
+         esac
+changequote([,])dnl
+        ])
+    ])
+])
diff --git a/gnulib_m4/fseterr.m4 b/gnulib_m4/fseterr.m4
new file mode 100644 (file)
index 0000000..ca920c4
--- /dev/null
@@ -0,0 +1,10 @@
+# fseterr.m4 serial 1
+dnl Copyright (C) 2012-2018 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_FSETERR],
+[
+  AC_CHECK_FUNCS_ONCE([__fseterr])
+])
similarity index 66%
rename from src/libs/gnulib/m4/gnulib-cache.m4
rename to gnulib_m4/gnulib-cache.m4
index 3be3a1d..b9e7622 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2014 Free Software Foundation, Inc.
+# Copyright (C) 2002-2018 Free Software Foundation, Inc.
 #
 # This file is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -11,7 +11,7 @@
 # GNU General Public License for more details.
 #
 # You should have received a copy of the GNU General Public License
-# along with this file.  If not, see <http://www.gnu.org/licenses/>.
+# along with this file.  If not, see <https://www.gnu.org/licenses/>.
 #
 # As a special exception to the GNU General Public License,
 # this file may be distributed as part of a program that
 
 
 # Specification in the form of a command-line invocation:
-#   gnulib-tool --import --dir=src/libs/gnulib --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --no-conditional-dependencies --no-libtool --macro-prefix=gl wcwidth
+# gnulib-tool --import --local-dir=gl \
+#  --lib=libgnu \
+#  --source-base=lib \
+#  --m4-base=gnulib_m4 \
+#  --doc-base=doc \
+#  --tests-base=tests \
+#  --aux-dir=build-aux \
+#  --makefile-name=gnulib.mk \
+#  --no-conditional-dependencies \
+#  --no-libtool \
+#  --macro-prefix=gl \
+#  fprintf-posix \
+#  git-version-gen \
+#  havelib \
+#  non-recursive-gnulib-prefix-hack \
+#  snprintf \
+#  vsnprintf \
+#  wcwidth
 
 # Specification in the form of a few gnulib-tool.m4 macro invocations:
-gl_LOCAL_DIR([])
+gl_LOCAL_DIR([gl])
 gl_MODULES([
+  fprintf-posix
+  git-version-gen
+  havelib
+  non-recursive-gnulib-prefix-hack
+  snprintf
+  vsnprintf
   wcwidth
 ])
 gl_AVOID([])
 gl_SOURCE_BASE([lib])
-gl_M4_BASE([m4])
+gl_M4_BASE([gnulib_m4])
 gl_PO_BASE([])
 gl_DOC_BASE([doc])
 gl_TESTS_BASE([tests])
 gl_LIB([libgnu])
-gl_MAKEFILE_NAME([])
+gl_MAKEFILE_NAME([gnulib.mk])
 gl_MACRO_PREFIX([gl])
 gl_PO_DOMAIN([])
 gl_WITNESS_C_MACRO([])
similarity index 68%
rename from src/libs/gnulib/m4/gnulib-common.m4
rename to gnulib_m4/gnulib-common.m4
index ae31e80..5f07855 100644 (file)
@@ -1,5 +1,5 @@
-# gnulib-common.m4 serial 33
-dnl Copyright (C) 2007-2014 Free Software Foundation, Inc.
+# gnulib-common.m4 serial 39
+dnl Copyright (C) 2007-2018 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
 dnl with or without modifications, as long as this notice is preserved.
@@ -49,6 +49,16 @@ AC_DEFUN([gl_COMMON_BODY], [
    is a misnomer outside of parameter lists.  */
 #define _UNUSED_PARAMETER_ _GL_UNUSED
 
+/* gcc supports the "unused" attribute on possibly unused labels, and
+   g++ has since version 4.5.  Note to support C++ as well as C,
+   _GL_UNUSED_LABEL should be used with a trailing ;  */
+#if !defined __cplusplus || __GNUC__ > 4 \
+    || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5)
+# define _GL_UNUSED_LABEL _GL_UNUSED
+#else
+# define _GL_UNUSED_LABEL
+#endif
+
 /* The __pure__ attribute was added in gcc 2.96.  */
 #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
 # define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__))
@@ -62,6 +72,13 @@ AC_DEFUN([gl_COMMON_BODY], [
 #else
 # define _GL_ATTRIBUTE_CONST /* empty */
 #endif
+
+/* The __malloc__ attribute was added in gcc 3.  */
+#if 3 <= __GNUC__
+# define _GL_ATTRIBUTE_MALLOC __attribute__ ((__malloc__))
+#else
+# define _GL_ATTRIBUTE_MALLOC /* empty */
+#endif
 ])
   dnl Preparation for running test programs:
   dnl Tell glibc to write diagnostics from -D_FORTIFY_SOURCE=2 to stderr, not
@@ -218,13 +235,13 @@ m4_ifndef([AS_VAR_IF],
 # This is like AC_PROG_CC_C99, except that
 # - AC_PROG_CC_C99 did not exist in Autoconf versions < 2.60,
 # - AC_PROG_CC_C99 does not mix well with AC_PROG_CC_STDC
-#   <http://lists.gnu.org/archive/html/bug-gnulib/2011-09/msg00367.html>,
+#   <https://lists.gnu.org/r/bug-gnulib/2011-09/msg00367.html>,
 #   but many more packages use AC_PROG_CC_STDC than AC_PROG_CC_C99
-#   <http://lists.gnu.org/archive/html/bug-gnulib/2011-09/msg00441.html>.
+#   <https://lists.gnu.org/r/bug-gnulib/2011-09/msg00441.html>.
 # Remaining problems:
 # - When AC_PROG_CC_STDC is invoked twice, it adds the C99 enabling options
 #   to CC twice
-#   <http://lists.gnu.org/archive/html/bug-gnulib/2011-09/msg00431.html>.
+#   <https://lists.gnu.org/r/bug-gnulib/2011-09/msg00431.html>.
 # - AC_PROG_CC_STDC is likely to change now that C11 is an ISO standard.
 AC_DEFUN([gl_PROG_CC_C99],
 [
@@ -243,9 +260,11 @@ AC_DEFUN([gl_PROG_AR_RANLIB],
 [
   dnl Minix 3 comes with two toolchains: The Amsterdam Compiler Kit compiler
   dnl as "cc", and GCC as "gcc". They have different object file formats and
-  dnl library formats. In particular, the GNU binutils programs ar, ranlib
+  dnl library formats. In particular, the GNU binutils programs ar and ranlib
   dnl produce libraries that work only with gcc, not with cc.
   AC_REQUIRE([AC_PROG_CC])
+  dnl The '][' hides this use from 'aclocal'.
+  AC_BEFORE([$0], [A][M_PROG_AR])
   AC_CACHE_CHECK([for Minix Amsterdam compiler], [gl_cv_c_amsterdam_compiler],
     [
       AC_EGREP_CPP([Amsterdam],
@@ -257,25 +276,39 @@ Amsterdam
         [gl_cv_c_amsterdam_compiler=yes],
         [gl_cv_c_amsterdam_compiler=no])
     ])
-  if test -z "$AR"; then
-    if test $gl_cv_c_amsterdam_compiler = yes; then
+
+  dnl Don't compete with AM_PROG_AR's decision about AR/ARFLAGS if we are not
+  dnl building with __ACK__.
+  if test $gl_cv_c_amsterdam_compiler = yes; then
+    if test -z "$AR"; then
       AR='cc -c.a'
-      if test -z "$ARFLAGS"; then
-        ARFLAGS='-o'
-      fi
-    else
-      dnl Use the Automake-documented default values for AR and ARFLAGS,
-      dnl but prefer ${host}-ar over ar (useful for cross-compiling).
-      AC_CHECK_TOOL([AR], [ar], [ar])
-      if test -z "$ARFLAGS"; then
-        ARFLAGS='cru'
-      fi
     fi
-  else
     if test -z "$ARFLAGS"; then
-      ARFLAGS='cru'
+      ARFLAGS='-o'
     fi
+  else
+    dnl AM_PROG_AR was added in automake v1.11.2.  AM_PROG_AR does not AC_SUBST
+    dnl ARFLAGS variable (it is filed into Makefile.in directly by automake
+    dnl script on-demand, if not specified by ./configure of course).
+    dnl Don't AC_REQUIRE the AM_PROG_AR otherwise the code for __ACK__ above
+    dnl will be ignored.  Also, pay attention to call AM_PROG_AR in else block
+    dnl because AM_PROG_AR is written so it could re-set AR variable even for
+    dnl __ACK__.  It may seem like its easier to avoid calling the macro here,
+    dnl but we need to AC_SUBST both AR/ARFLAGS (thus those must have some good
+    dnl default value and automake should usually know them).
+    dnl
+    dnl The '][' hides this use from 'aclocal'.
+    m4_ifdef([A][M_PROG_AR], [A][M_PROG_AR], [:])
   fi
+
+  dnl In case the code above has not helped with setting AR/ARFLAGS, use
+  dnl Automake-documented default values for AR and ARFLAGS, but prefer
+  dnl ${host}-ar over ar (useful for cross-compiling).
+  AC_CHECK_TOOL([AR], [ar], [ar])
+  if test -z "$ARFLAGS"; then
+    ARFLAGS='cr'
+  fi
+
   AC_SUBST([AR])
   AC_SUBST([ARFLAGS])
   if test -z "$RANLIB"; then
@@ -309,26 +342,28 @@ m4_ifdef([AC_PROG_MKDIR_P], [
 ])
 
 # AC_C_RESTRICT
-# This definition overrides the AC_C_RESTRICT macro from autoconf 2.60..2.61,
-# so that mixed use of GNU C and GNU C++ and mixed use of Sun C and Sun C++
-# works.
-# This definition can be removed once autoconf >= 2.62 can be assumed.
-# AC_AUTOCONF_VERSION was introduced in 2.62, so use that as the witness.
-m4_ifndef([AC_AUTOCONF_VERSION],[
+# This definition is copied from post-2.69 Autoconf and overrides the
+# AC_C_RESTRICT macro from autoconf 2.60..2.69.  It can be removed
+# once autoconf >= 2.70 can be assumed.  It's painful to check version
+# numbers, and in practice this macro is more up-to-date than Autoconf
+# is, so override Autoconf unconditionally.
 AC_DEFUN([AC_C_RESTRICT],
 [AC_CACHE_CHECK([for C/C++ restrict keyword], [ac_cv_c_restrict],
   [ac_cv_c_restrict=no
    # The order here caters to the fact that C++ does not require restrict.
    for ac_kw in __restrict __restrict__ _Restrict restrict; do
-     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
-      [[typedef int * int_ptr;
-        int foo (int_ptr $ac_kw ip) {
-        return ip[0];
-       }]],
-      [[int s[1];
-        int * $ac_kw t = s;
-        t[0] = 0;
-        return foo(t)]])],
+     AC_COMPILE_IFELSE(
+      [AC_LANG_PROGRAM(
+         [[typedef int *int_ptr;
+           int foo (int_ptr $ac_kw ip) { return ip[0]; }
+           int bar (int [$ac_kw]); /* Catch GCC bug 14050.  */
+           int bar (int ip[$ac_kw]) { return ip[0]; }
+         ]],
+         [[int s[1];
+           int *$ac_kw t = s;
+           t[0] = 0;
+           return foo (t) + bar (t);
+         ]])],
       [ac_cv_c_restrict=$ac_kw])
      test "$ac_cv_c_restrict" != no && break
    done
@@ -338,21 +373,21 @@ AC_DEFUN([AC_C_RESTRICT],
    nothing if this is not supported.  Do not define if restrict is
    supported directly.  */
 #undef restrict
-/* Work around a bug in Sun C++: it does not support _Restrict, even
-   though the corresponding Sun C compiler does, which causes
-   "#define restrict _Restrict" in the previous line.  Perhaps some future
-   version of Sun C++ will work with _Restrict; if so, it'll probably
-   define __RESTRICT, just as Sun C does.  */
+/* Work around a bug in Sun C++: it does not support _Restrict or
+   __restrict__, even though the corresponding Sun C compiler ends up with
+   "#define restrict _Restrict" or "#define restrict __restrict__" in the
+   previous line.  Perhaps some future version of Sun C++ will work with
+   restrict; if so, hopefully it defines __RESTRICT like Sun C does.  */
 #if defined __SUNPRO_CC && !defined __RESTRICT
 # define _Restrict
+# define __restrict__
 #endif])
  case $ac_cv_c_restrict in
    restrict) ;;
    no) AC_DEFINE([restrict], []) ;;
    *)  AC_DEFINE_UNQUOTED([restrict], [$ac_cv_c_restrict]) ;;
  esac
-])
-])
+])# AC_C_RESTRICT
 
 # gl_BIGENDIAN
 # is like AC_C_BIGENDIAN, except that it can be AC_REQUIREd.
@@ -375,3 +410,65 @@ AC_DEFUN([gl_CACHE_VAL_SILENT],
   AC_CACHE_VAL([$1], [$2])
   as_echo_n="$saved_as_echo_n"
 ])
+
+# AS_VAR_COPY was added in autoconf 2.63b
+m4_define_default([AS_VAR_COPY],
+[AS_LITERAL_IF([$1[]$2], [$1=$$2], [eval $1=\$$2])])
+
+# AC_PROG_SED was added in autoconf 2.59b
+m4_ifndef([AC_PROG_SED],
+[AC_DEFUN([AC_PROG_SED],
+[AC_CACHE_CHECK([for a sed that does not truncate output], ac_cv_path_SED,
+    [dnl ac_script should not contain more than 99 commands (for HP-UX sed),
+     dnl but more than about 7000 bytes, to catch a limit in Solaris 8 /usr/ucb/sed.
+     ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
+     for ac_i in 1 2 3 4 5 6 7; do
+       ac_script="$ac_script$as_nl$ac_script"
+     done
+     echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
+     AS_UNSET([ac_script])
+     if test -z "$SED"; then
+       ac_path_SED_found=false
+       _AS_PATH_WALK([], [
+         for ac_prog in sed gsed; do
+           for ac_exec_ext in '' $ac_executable_extensions; do
+             ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
+             AS_EXECUTABLE_P(["$ac_path_SED"]) || continue
+             case `"$ac_path_SED" --version 2>&1` in
+               *GNU*) ac_cv_path_SED=$ac_path_SED ac_path_SED_found=:;;
+               *)
+                 ac_count=0
+                 _AS_ECHO_N([0123456789]) >conftest.in
+                 while :
+                 do
+                   cat conftest.in conftest.in >conftest.tmp
+                   mv conftest.tmp conftest.in
+                   cp conftest.in conftest.nl
+                   echo >> conftest.nl
+                   "$ac_path_SED" -f conftest.sed <conftest.nl >conftest.out 2>/dev/null || break
+                   diff conftest.out conftest.nl >/dev/null 2>&1 || break
+                   ac_count=`expr $ac_count + 1`
+                   if test $ac_count -gt ${ac_path_SED_max-0}; then
+                     # Best so far, but keep looking for better
+                     ac_cv_path_SED=$ac_path_SED
+                     ac_path_SED_max=$ac_count
+                   fi
+                   test $ac_count -gt 10 && break
+                 done
+                 rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+             esac
+             $ac_path_SED_found && break 3
+           done
+         done])
+       if test -z "$ac_cv_path_SED"; then
+         AC_ERROR([no acceptable sed could be found in \$PATH])
+       fi
+     else
+       ac_cv_path_SED=$SED
+     fi
+    ])
+ SED="$ac_cv_path_SED"
+ AC_SUBST([SED])dnl
+ rm -f conftest.sed
+])
+])
similarity index 60%
rename from src/libs/gnulib/m4/gnulib-comp.m4
rename to gnulib_m4/gnulib-comp.m4
index 4c779a0..6797461 100644 (file)
@@ -1,5 +1,5 @@
 # DO NOT EDIT! GENERATED AUTOMATICALLY!
-# Copyright (C) 2002-201 Free Software Foundation, Inc.
+# Copyright (C) 2002-2018 Free Software Foundation, Inc.
 #
 # This file is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -12,7 +12,7 @@
 # GNU General Public License for more details.
 #
 # You should have received a copy of the GNU General Public License
-# along with this file.  If not, see <http://www.gnu.org/licenses/>.
+# along with this file.  If not, see <https://www.gnu.org/licenses/>.
 #
 # As a special exception to the GNU General Public License,
 # this file may be distributed as part of a program that
@@ -28,7 +28,7 @@
 # other built files.
 
 
-# This macro should be invoked from src/libs/gnulib/configure.ac, in the section
+# This macro should be invoked from ./configure.ac, in the section
 # "Checks for programs", right after AC_PROG_CC, and certainly before
 # any checks for libraries, header files, types and library functions.
 AC_DEFUN([gl_EARLY],
@@ -37,30 +37,68 @@ AC_DEFUN([gl_EARLY],
   m4_pattern_allow([^gl_ES$])dnl a valid locale name
   m4_pattern_allow([^gl_LIBOBJS$])dnl a variable
   m4_pattern_allow([^gl_LTLIBOBJS$])dnl a variable
+
+  # Pre-early section.
+  AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
   AC_REQUIRE([gl_PROG_AR_RANLIB])
+
   AC_REQUIRE([AM_PROG_CC_C_O])
-  # Code from module configmake:
+  # Code from module absolute-header:
+  # Code from module alloca-opt:
+  # Code from module errno:
   # Code from module extensions:
-  AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
   # Code from module extern-inline:
+  # Code from module float:
+  # Code from module fpieee:
+  AC_REQUIRE([gl_FP_IEEE])
+  # Code from module fprintf-posix:
+  # Code from module fpucw:
+  # Code from module frexp-nolibm:
+  # Code from module frexpl-nolibm:
+  # Code from module fseterr:
+  # Code from module git-version-gen:
+  # Code from module havelib:
+  # Code from module host-cpu-c-abi:
   # Code from module include_next:
+  # Code from module isnand-nolibm:
+  # Code from module isnanf-nolibm:
+  # Code from module isnanl-nolibm:
+  # Code from module limits-h:
   # Code from module localcharset:
+  # Code from module math:
+  # Code from module memchr:
   # Code from module multiarch:
+  # Code from module nocrash:
+  # Code from module non-recursive-gnulib-prefix-hack:
+  # Code from module printf-frexp:
+  # Code from module printf-frexpl:
+  # Code from module printf-safe:
+  # Code from module signbit:
+  # Code from module size_max:
   # Code from module snippet/arg-nonnull:
   # Code from module snippet/c++defs:
   # Code from module snippet/warn-on-use:
+  # Code from module snprintf:
+  # Code from module ssize_t:
   # Code from module stddef:
   # Code from module stdint:
+  # Code from module stdio:
   # Code from module streq:
+  # Code from module string:
+  # Code from module sys_types:
   # Code from module unitypes:
   # Code from module uniwidth/base:
   # Code from module uniwidth/width:
+  # Code from module vasnprintf:
+  # Code from module verify:
+  # Code from module vsnprintf:
   # Code from module wchar:
   # Code from module wctype-h:
   # Code from module wcwidth:
+  # Code from module xsize:
 ])
 
-# This macro should be invoked from src/libs/gnulib/configure.ac, in the section
+# This macro should be invoked from ./configure.ac, in the section
 # "Check for header files, types and library functions".
 AC_DEFUN([gl_INIT],
 [
@@ -68,7 +106,7 @@ AC_DEFUN([gl_INIT],
   gl_cond_libtool=false
   gl_libdeps=
   gl_ltlibdeps=
-  gl_m4_base='m4'
+  gl_m4_base='gnulib_m4'
   m4_pushdef([AC_LIBOBJ], m4_defn([gl_LIBOBJ]))
   m4_pushdef([AC_REPLACE_FUNCS], m4_defn([gl_REPLACE_FUNCS]))
   m4_pushdef([AC_LIBSOURCES], m4_defn([gl_LIBSOURCES]))
@@ -76,24 +114,105 @@ AC_DEFUN([gl_INIT],
   m4_pushdef([gl_LIBSOURCES_DIR], [])
   gl_COMMON
   gl_source_base='lib'
-  gl_CONFIGMAKE_PREP
+  gl_FUNC_ALLOCA
+  gl_HEADER_ERRNO_H
   AC_REQUIRE([gl_EXTERN_INLINE])
+  gl_FLOAT_H
+  if test $REPLACE_FLOAT_LDBL = 1; then
+    AC_LIBOBJ([float])
+  fi
+  if test $REPLACE_ITOLD = 1; then
+    AC_LIBOBJ([itold])
+  fi
+  gl_FUNC_FPRINTF_POSIX
+  gl_STDIO_MODULE_INDICATOR([fprintf-posix])
+  gl_FUNC_FREXP_NO_LIBM
+  if test $gl_func_frexp_no_libm != yes; then
+    AC_LIBOBJ([frexp])
+  fi
+  gl_MATH_MODULE_INDICATOR([frexp])
+  gl_FUNC_FREXPL_NO_LIBM
+  if test $HAVE_DECL_FREXPL = 0 || test $gl_func_frexpl_no_libm = no; then
+    AC_LIBOBJ([frexpl])
+  fi
+  gl_MATH_MODULE_INDICATOR([frexpl])
+  gl_FUNC_FSETERR
+  if test $ac_cv_func___fseterr = no; then
+    AC_LIBOBJ([fseterr])
+  fi
+  AC_REQUIRE([gl_HOST_CPU_C_ABI])
+  gl_FUNC_ISNAND_NO_LIBM
+  if test $gl_func_isnand_no_libm != yes; then
+    AC_LIBOBJ([isnand])
+    gl_PREREQ_ISNAND
+  fi
+  gl_FUNC_ISNANF_NO_LIBM
+  if test $gl_func_isnanf_no_libm != yes; then
+    AC_LIBOBJ([isnanf])
+    gl_PREREQ_ISNANF
+  fi
+  gl_FUNC_ISNANL_NO_LIBM
+  if test $gl_func_isnanl_no_libm != yes; then
+    AC_LIBOBJ([isnanl])
+    gl_PREREQ_ISNANL
+  fi
+  gl_LIMITS_H
   gl_LOCALCHARSET
-  LOCALCHARSET_TESTS_ENVIRONMENT="CHARSETALIASDIR=\"\$(abs_top_builddir)/$gl_source_base\""
+  dnl For backward compatibility. Some packages still use this.
+  LOCALCHARSET_TESTS_ENVIRONMENT=
   AC_SUBST([LOCALCHARSET_TESTS_ENVIRONMENT])
+  gl_MATH_H
+  gl_FUNC_MEMCHR
+  if test $HAVE_MEMCHR = 0 || test $REPLACE_MEMCHR = 1; then
+    AC_LIBOBJ([memchr])
+    gl_PREREQ_MEMCHR
+  fi
+  gl_STRING_MODULE_INDICATOR([memchr])
   gl_MULTIARCH
+  dnl Run our hack near the end, just before config.status creation.
+  dnl It must happen late, i.e., after gl_LIBOBJS has been finalized.
+  AC_CONFIG_COMMANDS_PRE([
+    dnl Note we can't currently pass $gl_source_base instead of 'lib',
+    dnl because $gl_source_base is unset or the wrong value in the references
+    dnl generated in m4/non-recursive-gnulib-prefix-hack.m4
+    gl_NON_RECURSIVE_GNULIB_PREFIX_HACK([lib])
+    ])
+  gl_FUNC_PRINTF_FREXP
+  gl_FUNC_PRINTF_FREXPL
+  m4_divert_text([INIT_PREPARE], [gl_printf_safe=yes])
+  gl_SIGNBIT
+  if test $REPLACE_SIGNBIT = 1; then
+    AC_LIBOBJ([signbitf])
+    AC_LIBOBJ([signbitd])
+    AC_LIBOBJ([signbitl])
+  fi
+  gl_MATH_MODULE_INDICATOR([signbit])
+  gl_SIZE_MAX
+  gl_FUNC_SNPRINTF
+  gl_STDIO_MODULE_INDICATOR([snprintf])
+  gl_MODULE_INDICATOR([snprintf])
+  gt_TYPE_SSIZE_T
   gl_STDDEF_H
   gl_STDINT_H
-  gl_LIBUNISTRING_LIBHEADER([0.9], [unitypes.h])
-  gl_LIBUNISTRING_LIBHEADER([0.9], [uniwidth.h])
-  gl_LIBUNISTRING_MODULE([0.9.4], [uniwidth/width])
+  gl_STDIO_H
+  gl_HEADER_STRING_H
+  gl_SYS_TYPES_H
+  AC_PROG_MKDIR_P
+  gl_LIBUNISTRING_LIBHEADER([0.9.4], [unitypes.h])
+  gl_LIBUNISTRING_LIBHEADER([0.9.4], [uniwidth.h])
+  gl_LIBUNISTRING_MODULE([0.9.8], [uniwidth/width])
+  gl_FUNC_VASNPRINTF
+  gl_FUNC_VSNPRINTF
+  gl_STDIO_MODULE_INDICATOR([vsnprintf])
   gl_WCHAR_H
   gl_WCTYPE_H
   gl_FUNC_WCWIDTH
   if test $HAVE_WCWIDTH = 0 || test $REPLACE_WCWIDTH = 1; then
     AC_LIBOBJ([wcwidth])
+    gl_PREREQ_WCWIDTH
   fi
   gl_WCHAR_MODULE_INDICATOR([wcwidth])
+  gl_XSIZE
   # End of code from modules
   m4_ifval(gl_LIBSOURCES_LIST, [
     m4_syscmd([test ! -d ]m4_defn([gl_LIBSOURCES_DIR])[ ||
@@ -234,45 +353,133 @@ AC_DEFUN([gltests_LIBSOURCES], [
 # This macro records the list of files which have been installed by
 # gnulib-tool and may be removed by future gnulib-tool invocations.
 AC_DEFUN([gl_FILE_LIST], [
-  build-aux/snippet/arg-nonnull.h
-  build-aux/snippet/c++defs.h
-  build-aux/snippet/warn-on-use.h
-  lib/config.charset
+  build-aux/config.rpath
+  build-aux/git-version-gen
+  build-aux/prefix-gnulib-mk
+  lib/alloca.in.h
+  lib/arg-nonnull.h
+  lib/asnprintf.c
+  lib/c++defs.h
+  lib/errno.in.h
+  lib/float+.h
+  lib/float.c
+  lib/float.in.h
+  lib/fprintf.c
+  lib/fpucw.h
+  lib/frexp.c
+  lib/frexpl.c
+  lib/fseterr.c
+  lib/fseterr.h
+  lib/isnan.c
+  lib/isnand-nolibm.h
+  lib/isnand.c
+  lib/isnanf-nolibm.h
+  lib/isnanf.c
+  lib/isnanl-nolibm.h
+  lib/isnanl.c
+  lib/itold.c
+  lib/limits.in.h
   lib/localcharset.c
   lib/localcharset.h
-  lib/ref-add.sin
-  lib/ref-del.sin
+  lib/math.c
+  lib/math.in.h
+  lib/memchr.c
+  lib/memchr.valgrind
+  lib/printf-args.c
+  lib/printf-args.h
+  lib/printf-frexp.c
+  lib/printf-frexp.h
+  lib/printf-frexpl.c
+  lib/printf-frexpl.h
+  lib/printf-parse.c
+  lib/printf-parse.h
+  lib/signbitd.c
+  lib/signbitf.c
+  lib/signbitl.c
+  lib/size_max.h
+  lib/snprintf.c
   lib/stddef.in.h
   lib/stdint.in.h
+  lib/stdio-impl.h
+  lib/stdio.in.h
   lib/streq.h
+  lib/string.in.h
+  lib/sys_types.in.h
   lib/unitypes.in.h
   lib/uniwidth.in.h
   lib/uniwidth/cjk.h
   lib/uniwidth/width.c
+  lib/vasnprintf.c
+  lib/vasnprintf.h
+  lib/verify.h
+  lib/vsnprintf.c
+  lib/warn-on-use.h
   lib/wchar.in.h
   lib/wctype-h.c
   lib/wctype.in.h
   lib/wcwidth.c
+  lib/xsize.c
+  lib/xsize.h
   m4/00gnulib.m4
+  m4/absolute-header.m4
+  m4/alloca.m4
+  m4/asm-underscore.m4
   m4/codeset.m4
-  m4/configmake.m4
+  m4/errno_h.m4
+  m4/exponentd.m4
+  m4/exponentf.m4
+  m4/exponentl.m4
   m4/extensions.m4
   m4/extern-inline.m4
-  m4/fcntl-o.m4
-  m4/glibc21.m4
+  m4/float_h.m4
+  m4/fpieee.m4
+  m4/fprintf-posix.m4
+  m4/frexp.m4
+  m4/frexpl.m4
+  m4/fseterr.m4
   m4/gnulib-common.m4
+  m4/host-cpu-c-abi.m4
   m4/include_next.m4
+  m4/intmax_t.m4
+  m4/inttypes_h.m4
+  m4/isnand.m4
+  m4/isnanf.m4
+  m4/isnanl.m4
+  m4/ldexpl.m4
+  m4/lib-ld.m4
+  m4/lib-link.m4
+  m4/lib-prefix.m4
   m4/libunistring-base.m4
+  m4/limits-h.m4
   m4/localcharset.m4
   m4/longlong.m4
+  m4/math_h.m4
+  m4/memchr.m4
+  m4/mmap-anon.m4
   m4/multiarch.m4
-  m4/onceonly.m4
+  m4/nocrash.m4
+  m4/non-recursive-gnulib-prefix-hack.m4
+  m4/off_t.m4
+  m4/printf-frexp.m4
+  m4/printf-frexpl.m4
+  m4/printf.m4
+  m4/signbit.m4
+  m4/size_max.m4
+  m4/snprintf.m4
+  m4/ssize_t.m4
   m4/stddef_h.m4
   m4/stdint.m4
+  m4/stdint_h.m4
+  m4/stdio_h.m4
+  m4/string_h.m4
+  m4/sys_types_h.m4
+  m4/vasnprintf.m4
+  m4/vsnprintf.m4
   m4/warn-on-use.m4
   m4/wchar_h.m4
   m4/wchar_t.m4
   m4/wctype_h.m4
   m4/wcwidth.m4
   m4/wint_t.m4
+  m4/xsize.m4
 ])
diff --git a/gnulib_m4/host-cpu-c-abi.m4 b/gnulib_m4/host-cpu-c-abi.m4
new file mode 100644 (file)
index 0000000..3fac6f7
--- /dev/null
@@ -0,0 +1,456 @@
+# host-cpu-c-abi.m4 serial 10
+dnl Copyright (C) 2002-2018 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible and Sam Steingold.
+
+dnl Sets the HOST_CPU variable to the canonical name of the CPU.
+dnl Sets the HOST_CPU_C_ABI variable to the canonical name of the CPU with its
+dnl C language ABI (application binary interface).
+dnl Also defines __${HOST_CPU}__ and __${HOST_CPU_C_ABI}__ as C macros in
+dnl config.h.
+dnl
+dnl This canonical name can be used to select a particular assembly language
+dnl source file that will interoperate with C code on the given host.
+dnl
+dnl For example:
+dnl * 'i386' and 'sparc' are different canonical names, because code for i386
+dnl   will not run on SPARC CPUs and vice versa. They have different
+dnl   instruction sets.
+dnl * 'sparc' and 'sparc64' are different canonical names, because code for
+dnl   'sparc' and code for 'sparc64' cannot be linked together: 'sparc' code
+dnl   contains 32-bit instructions, whereas 'sparc64' code contains 64-bit
+dnl   instructions. A process on a SPARC CPU can be in 32-bit mode or in 64-bit
+dnl   mode, but not both.
+dnl * 'mips' and 'mipsn32' are different canonical names, because they use
+dnl   different argument passing and return conventions for C functions, and
+dnl   although the instruction set of 'mips' is a large subset of the
+dnl   instruction set of 'mipsn32'.
+dnl * 'mipsn32' and 'mips64' are different canonical names, because they use
+dnl   different sizes for the C types like 'int' and 'void *', and although
+dnl   the instruction sets of 'mipsn32' and 'mips64' are the same.
+dnl * The same canonical name is used for different endiannesses. You can
+dnl   determine the endianness through preprocessor symbols:
+dnl   - 'arm': test __ARMEL__.
+dnl   - 'mips', 'mipsn32', 'mips64': test _MIPSEB vs. _MIPSEL.
+dnl   - 'powerpc64': test _BIG_ENDIAN vs. _LITTLE_ENDIAN.
+dnl * The same name 'i386' is used for CPUs of type i386, i486, i586
+dnl   (Pentium), AMD K7, Pentium II, Pentium IV, etc., because
+dnl   - Instructions that do not exist on all of these CPUs (cmpxchg,
+dnl     MMX, SSE, SSE2, 3DNow! etc.) are not frequently used. If your
+dnl     assembly language source files use such instructions, you will
+dnl     need to make the distinction.
+dnl   - Speed of execution of the common instruction set is reasonable across
+dnl     the entire family of CPUs. If you have assembly language source files
+dnl     that are optimized for particular CPU types (like GNU gmp has), you
+dnl     will need to make the distinction.
+dnl   See <https://en.wikipedia.org/wiki/X86_instruction_listings>.
+AC_DEFUN([gl_HOST_CPU_C_ABI],
+[
+  AC_REQUIRE([AC_CANONICAL_HOST])
+  AC_REQUIRE([gl_C_ASM])
+  AC_CACHE_CHECK([host CPU and C ABI], [gl_cv_host_cpu_c_abi],
+    [case "$host_cpu" in
+
+changequote(,)dnl
+       i[4567]86 )
+changequote([,])dnl
+         gl_cv_host_cpu_c_abi=i386
+         ;;
+
+       x86_64 )
+         # On x86_64 systems, the C compiler may be generating code in one of
+         # these ABIs:
+         # - 64-bit instruction set, 64-bit pointers, 64-bit 'long': x86_64.
+         # - 64-bit instruction set, 64-bit pointers, 32-bit 'long': x86_64
+         #   with native Windows (mingw, MSVC).
+         # - 64-bit instruction set, 32-bit pointers, 32-bit 'long': x86_64-x32.
+         # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': i386.
+         AC_COMPILE_IFELSE(
+           [AC_LANG_SOURCE(
+              [[#if (defined __x86_64__ || defined __amd64__ \
+                     || defined _M_X64 || defined _M_AMD64)
+                 int ok;
+                #else
+                 error fail
+                #endif
+              ]])],
+           [AC_COMPILE_IFELSE(
+              [AC_LANG_SOURCE(
+                 [[#if defined __ILP32__ || defined _ILP32
+                    int ok;
+                   #else
+                    error fail
+                   #endif
+                 ]])],
+              [gl_cv_host_cpu_c_abi=x86_64-x32],
+              [gl_cv_host_cpu_c_abi=x86_64])],
+           [gl_cv_host_cpu_c_abi=i386])
+         ;;
+
+changequote(,)dnl
+       alphaev[4-8] | alphaev56 | alphapca5[67] | alphaev6[78] )
+changequote([,])dnl
+         gl_cv_host_cpu_c_abi=alpha
+         ;;
+
+       arm* | aarch64 )
+         # Assume arm with EABI.
+         # On arm64 systems, the C compiler may be generating code in one of
+         # these ABIs:
+         # - aarch64 instruction set, 64-bit pointers, 64-bit 'long': arm64.
+         # - aarch64 instruction set, 32-bit pointers, 32-bit 'long': arm64-ilp32.
+         # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': arm or armhf.
+         AC_COMPILE_IFELSE(
+           [AC_LANG_SOURCE(
+              [[#ifdef __aarch64__
+                 int ok;
+                #else
+                 error fail
+                #endif
+              ]])],
+           [AC_COMPILE_IFELSE(
+              [AC_LANG_SOURCE(
+                [[#if defined __ILP32__ || defined _ILP32
+                   int ok;
+                  #else
+                   error fail
+                  #endif
+                ]])],
+              [gl_cv_host_cpu_c_abi=arm64-ilp32],
+              [gl_cv_host_cpu_c_abi=arm64])],
+           [# Don't distinguish little-endian and big-endian arm, since they
+            # don't require different machine code for simple operations and
+            # since the user can distinguish them through the preprocessor
+            # defines __ARMEL__ vs. __ARMEB__.
+            # But distinguish arm which passes floating-point arguments and
+            # return values in integer registers (r0, r1, ...) - this is
+            # gcc -mfloat-abi=soft or gcc -mfloat-abi=softfp - from arm which
+            # passes them in float registers (s0, s1, ...) and double registers
+            # (d0, d1, ...) - this is gcc -mfloat-abi=hard. GCC 4.6 or newer
+            # sets the preprocessor defines __ARM_PCS (for the first case) and
+            # __ARM_PCS_VFP (for the second case), but older GCC does not.
+            echo 'double ddd; void func (double dd) { ddd = dd; }' > conftest.c
+            # Look for a reference to the register d0 in the .s file.
+            AC_TRY_COMMAND(${CC-cc} $CFLAGS $CPPFLAGS $gl_c_asm_opt conftest.c) >/dev/null 2>&1
+            if LC_ALL=C grep 'd0,' conftest.$gl_asmext >/dev/null; then
+              gl_cv_host_cpu_c_abi=armhf
+            else
+              gl_cv_host_cpu_c_abi=arm
+            fi
+            rm -f conftest*
+           ])
+         ;;
+
+       hppa1.0 | hppa1.1 | hppa2.0* | hppa64 )
+         # On hppa, the C compiler may be generating 32-bit code or 64-bit
+         # code. In the latter case, it defines _LP64 and __LP64__.
+         AC_COMPILE_IFELSE(
+           [AC_LANG_SOURCE(
+              [[#ifdef __LP64__
+                 int ok;
+                #else
+                 error fail
+                #endif
+              ]])],
+           [gl_cv_host_cpu_c_abi=hppa64],
+           [gl_cv_host_cpu_c_abi=hppa])
+         ;;
+
+       ia64* )
+         # On ia64 on HP-UX, the C compiler may be generating 64-bit code or
+         # 32-bit code. In the latter case, it defines _ILP32.
+         AC_COMPILE_IFELSE(
+           [AC_LANG_SOURCE(
+              [[#ifdef _ILP32
+                 int ok;
+                #else
+                 error fail
+                #endif
+              ]])],
+           [gl_cv_host_cpu_c_abi=ia64-ilp32],
+           [gl_cv_host_cpu_c_abi=ia64])
+         ;;
+
+       mips* )
+         # We should also check for (_MIPS_SZPTR == 64), but gcc keeps this
+         # at 32.
+         AC_COMPILE_IFELSE(
+           [AC_LANG_SOURCE(
+              [[#if defined _MIPS_SZLONG && (_MIPS_SZLONG == 64)
+                 int ok;
+                #else
+                 error fail
+                #endif
+              ]])],
+           [gl_cv_host_cpu_c_abi=mips64],
+           [# In the n32 ABI, _ABIN32 is defined, _ABIO32 is not defined (but
+            # may later get defined by <sgidefs.h>), and _MIPS_SIM == _ABIN32.
+            # In the 32 ABI, _ABIO32 is defined, _ABIN32 is not defined (but
+            # may later get defined by <sgidefs.h>), and _MIPS_SIM == _ABIO32.
+            AC_COMPILE_IFELSE(
+              [AC_LANG_SOURCE(
+                 [[#if (_MIPS_SIM == _ABIN32)
+                    int ok;
+                   #else
+                    error fail
+                   #endif
+                 ]])],
+              [gl_cv_host_cpu_c_abi=mipsn32],
+              [gl_cv_host_cpu_c_abi=mips])])
+         ;;
+
+       powerpc* )
+         # Different ABIs are in use on AIX vs. Mac OS X vs. Linux,*BSD.
+         # No need to distinguish them here; the caller may distinguish
+         # them based on the OS.
+         # On powerpc64 systems, the C compiler may still be generating
+         # 32-bit code. And on powerpc-ibm-aix systems, the C compiler may
+         # be generating 64-bit code.
+         AC_COMPILE_IFELSE(
+           [AC_LANG_SOURCE(
+              [[#if defined __powerpc64__ || defined _ARCH_PPC64
+                 int ok;
+                #else
+                 error fail
+                #endif
+              ]])],
+           [# On powerpc64, there are two ABIs on Linux: The AIX compatible
+            # one and the ELFv2 one. The latter defines _CALL_ELF=2.
+            AC_COMPILE_IFELSE(
+              [AC_LANG_SOURCE(
+                 [[#if defined _CALL_ELF && _CALL_ELF == 2
+                    int ok;
+                   #else
+                    error fail
+                   #endif
+                 ]])],
+              [gl_cv_host_cpu_c_abi=powerpc64-elfv2],
+              [gl_cv_host_cpu_c_abi=powerpc64])
+           ],
+           [gl_cv_host_cpu_c_abi=powerpc])
+         ;;
+
+       rs6000 )
+         gl_cv_host_cpu_c_abi=powerpc
+         ;;
+
+       riscv32 | riscv64 )
+         # There are 2 architectures (with variants): rv32* and rv64*.
+         AC_COMPILE_IFELSE(
+           [AC_LANG_SOURCE(
+              [[#if __riscv_xlen == 64
+                  int ok;
+                #else
+                  error fail
+                #endif
+              ]])],
+           [cpu=riscv64],
+           [cpu=riscv32])
+         # There are 6 ABIs: ilp32, ilp32f, ilp32d, lp64, lp64f, lp64d.
+         # Size of 'long' and 'void *':
+         AC_COMPILE_IFELSE(
+           [AC_LANG_SOURCE(
+              [[#if defined __LP64__
+                  int ok;
+                #else
+                  error fail
+                #endif
+              ]])],
+           [main_abi=lp64],
+           [main_abi=ilp32])
+         # Float ABIs:
+         # __riscv_float_abi_double:
+         #   'float' and 'double' are passed in floating-point registers.
+         # __riscv_float_abi_single:
+         #   'float' are passed in floating-point registers.
+         # __riscv_float_abi_soft:
+         #   No values are passed in floating-point registers.
+         AC_COMPILE_IFELSE(
+           [AC_LANG_SOURCE(
+              [[#if defined __riscv_float_abi_double
+                  int ok;
+                #else
+                  error fail
+                #endif
+              ]])],
+           [float_abi=d],
+           [AC_COMPILE_IFELSE(
+              [AC_LANG_SOURCE(
+                 [[#if defined __riscv_float_abi_single
+                     int ok;
+                   #else
+                     error fail
+                   #endif
+                 ]])],
+              [float_abi=f],
+              [float_abi=''])
+           ])
+         gl_cv_host_cpu_c_abi="${cpu}-${main_abi}${float_abi}"
+         ;;
+
+       s390* )
+         # On s390x, the C compiler may be generating 64-bit (= s390x) code
+         # or 31-bit (= s390) code.
+         AC_COMPILE_IFELSE(
+           [AC_LANG_SOURCE(
+              [[#if defined __LP64__ || defined __s390x__
+                  int ok;
+                #else
+                  error fail
+                #endif
+              ]])],
+           [gl_cv_host_cpu_c_abi=s390x],
+           [gl_cv_host_cpu_c_abi=s390])
+         ;;
+
+       sparc | sparc64 )
+         # UltraSPARCs running Linux have `uname -m` = "sparc64", but the
+         # C compiler still generates 32-bit code.
+         AC_COMPILE_IFELSE(
+           [AC_LANG_SOURCE(
+              [[#if defined __sparcv9 || defined __arch64__
+                 int ok;
+                #else
+                 error fail
+                #endif
+              ]])],
+           [gl_cv_host_cpu_c_abi=sparc64],
+           [gl_cv_host_cpu_c_abi=sparc])
+         ;;
+
+       *)
+         gl_cv_host_cpu_c_abi="$host_cpu"
+         ;;
+     esac
+    ])
+
+  dnl In most cases, $HOST_CPU and $HOST_CPU_C_ABI are the same.
+  HOST_CPU=`echo "$gl_cv_host_cpu_c_abi" | sed -e 's/-.*//'`
+  HOST_CPU_C_ABI="$gl_cv_host_cpu_c_abi"
+  AC_SUBST([HOST_CPU])
+  AC_SUBST([HOST_CPU_C_ABI])
+
+  # This was
+  #   AC_DEFINE_UNQUOTED([__${HOST_CPU}__])
+  #   AC_DEFINE_UNQUOTED([__${HOST_CPU_C_ABI}__])
+  # earlier, but KAI C++ 3.2d doesn't like this.
+  sed -e 's/-/_/g' >> confdefs.h <<EOF
+#ifndef __${HOST_CPU}__
+#define __${HOST_CPU}__ 1
+#endif
+#ifndef __${HOST_CPU_C_ABI}__
+#define __${HOST_CPU_C_ABI}__ 1
+#endif
+EOF
+  AH_TOP([/* CPU and C ABI indicator */
+#ifndef __i386__
+#undef __i386__
+#endif
+#ifndef __x86_64_x32__
+#undef __x86_64_x32__
+#endif
+#ifndef __x86_64__
+#undef __x86_64__
+#endif
+#ifndef __alpha__
+#undef __alpha__
+#endif
+#ifndef __arm__
+#undef __arm__
+#endif
+#ifndef __armhf__
+#undef __armhf__
+#endif
+#ifndef __arm64_ilp32__
+#undef __arm64_ilp32__
+#endif
+#ifndef __arm64__
+#undef __arm64__
+#endif
+#ifndef __hppa__
+#undef __hppa__
+#endif
+#ifndef __hppa64__
+#undef __hppa64__
+#endif
+#ifndef __ia64_ilp32__
+#undef __ia64_ilp32__
+#endif
+#ifndef __ia64__
+#undef __ia64__
+#endif
+#ifndef __m68k__
+#undef __m68k__
+#endif
+#ifndef __mips__
+#undef __mips__
+#endif
+#ifndef __mipsn32__
+#undef __mipsn32__
+#endif
+#ifndef __mips64__
+#undef __mips64__
+#endif
+#ifndef __powerpc__
+#undef __powerpc__
+#endif
+#ifndef __powerpc64__
+#undef __powerpc64__
+#endif
+#ifndef __powerpc64_elfv2__
+#undef __powerpc64_elfv2__
+#endif
+#ifndef __riscv32__
+#undef __riscv32__
+#endif
+#ifndef __riscv64__
+#undef __riscv64__
+#endif
+#ifndef __riscv32_ilp32__
+#undef __riscv32_ilp32__
+#endif
+#ifndef __riscv32_ilp32f__
+#undef __riscv32_ilp32f__
+#endif
+#ifndef __riscv32_ilp32d__
+#undef __riscv32_ilp32d__
+#endif
+#ifndef __riscv64_ilp32__
+#undef __riscv64_ilp32__
+#endif
+#ifndef __riscv64_ilp32f__
+#undef __riscv64_ilp32f__
+#endif
+#ifndef __riscv64_ilp32d__
+#undef __riscv64_ilp32d__
+#endif
+#ifndef __riscv64_lp64__
+#undef __riscv64_lp64__
+#endif
+#ifndef __riscv64_lp64f__
+#undef __riscv64_lp64f__
+#endif
+#ifndef __riscv64_lp64d__
+#undef __riscv64_lp64d__
+#endif
+#ifndef __s390__
+#undef __s390__
+#endif
+#ifndef __s390x__
+#undef __s390x__
+#endif
+#ifndef __sh__
+#undef __sh__
+#endif
+#ifndef __sparc__
+#undef __sparc__
+#endif
+#ifndef __sparc64__
+#undef __sparc64__
+#endif
+])
+
+])
similarity index 75%
rename from src/libs/gnulib/m4/include_next.m4
rename to gnulib_m4/include_next.m4
index 7c4c5ef..a363cb0 100644 (file)
@@ -1,12 +1,13 @@
-# include_next.m4 serial 23
-dnl Copyright (C) 2006-2014 Free Software Foundation, Inc.
+# include_next.m4 serial 24
+dnl Copyright (C) 2006-2018 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
 dnl with or without modifications, as long as this notice is preserved.
 
 dnl From Paul Eggert and Derek Price.
 
-dnl Sets INCLUDE_NEXT and PRAGMA_SYSTEM_HEADER.
+dnl Sets INCLUDE_NEXT, INCLUDE_NEXT_AS_FIRST_DIRECTIVE, PRAGMA_SYSTEM_HEADER,
+dnl and PRAGMA_COLUMNS.
 dnl
 dnl INCLUDE_NEXT expands to 'include_next' if the compiler supports it, or to
 dnl 'include' otherwise.
@@ -192,56 +193,9 @@ dnl until we can assume autoconf 2.64 or newer.
              if test AS_VAR_GET(gl_header_exists) = yes; then
              AS_VAR_POPDEF([gl_header_exists])
             ])
-               AC_LANG_CONFTEST(
-                 [AC_LANG_SOURCE(
-                    [[#include <]]m4_dquote(m4_defn([gl_HEADER_NAME]))[[>]]
-                  )])
-               dnl AIX "xlc -E" and "cc -E" omit #line directives for header
-               dnl files that contain only a #include of other header files and
-               dnl no non-comment tokens of their own. This leads to a failure
-               dnl to detect the absolute name of <dirent.h>, <signal.h>,
-               dnl <poll.h> and others. The workaround is to force preservation
-               dnl of comments through option -C. This ensures all necessary
-               dnl #line directives are present. GCC supports option -C as well.
-               case "$host_os" in
-                 aix*) gl_absname_cpp="$ac_cpp -C" ;;
-                 *)    gl_absname_cpp="$ac_cpp" ;;
-               esac
-changequote(,)
-               case "$host_os" in
-                 mingw*)
-                   dnl For the sake of native Windows compilers (excluding gcc),
-                   dnl treat backslash as a directory separator, like /.
-                   dnl Actually, these compilers use a double-backslash as
-                   dnl directory separator, inside the
-                   dnl   # line "filename"
-                   dnl directives.
-                   gl_dirsep_regex='[/\\]'
-                   ;;
-                 *)
-                   gl_dirsep_regex='\/'
-                   ;;
-               esac
-               dnl A sed expression that turns a string into a basic regular
-               dnl expression, for use within "/.../".
-               gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g'
-changequote([,])
-               gl_header_literal_regex=`echo ']m4_defn([gl_HEADER_NAME])[' \
-                                        | sed -e "$gl_make_literal_regex_sed"`
-               gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{
-                   s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/
-changequote(,)dnl
-                   s|^/[^/]|//&|
-changequote([,])dnl
-                   p
-                   q
-                 }'
-               dnl eval is necessary to expand gl_absname_cpp.
-               dnl Ultrix and Pyramid sh refuse to redirect output of eval,
-               dnl so use subshell.
-               AS_VAR_SET(gl_next_header,
-                 ['"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&AS_MESSAGE_LOG_FD |
-                      sed -n "$gl_absolute_header_sed"`'"'])
+           gl_ABSOLUTE_HEADER_ONE(gl_HEADER_NAME)
+           AS_VAR_COPY([gl_header], [gl_cv_absolute_]AS_TR_SH(gl_HEADER_NAME))
+           AS_VAR_SET(gl_next_header, ['"'$gl_header'"'])
           m4_if([$2], [check],
             [else
                AS_VAR_SET(gl_next_header, ['<'gl_HEADER_NAME'>'])
diff --git a/gnulib_m4/intmax_t.m4 b/gnulib_m4/intmax_t.m4
new file mode 100644 (file)
index 0000000..7ab676e
--- /dev/null
@@ -0,0 +1,67 @@
+# intmax_t.m4 serial 8
+dnl Copyright (C) 1997-2004, 2006-2007, 2009-2018 Free Software Foundation,
+dnl Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Paul Eggert.
+
+AC_PREREQ([2.53])
+
+# Define intmax_t to 'long' or 'long long'
+# if it is not already defined in <stdint.h> or <inttypes.h>.
+
+AC_DEFUN([gl_AC_TYPE_INTMAX_T],
+[
+  dnl For simplicity, we assume that a header file defines 'intmax_t' if and
+  dnl only if it defines 'uintmax_t'.
+  AC_REQUIRE([gl_AC_HEADER_INTTYPES_H])
+  AC_REQUIRE([gl_AC_HEADER_STDINT_H])
+  if test $gl_cv_header_inttypes_h = no && test $gl_cv_header_stdint_h = no; then
+    AC_REQUIRE([AC_TYPE_LONG_LONG_INT])
+    test $ac_cv_type_long_long_int = yes \
+      && ac_type='long long' \
+      || ac_type='long'
+    AC_DEFINE_UNQUOTED([intmax_t], [$ac_type],
+     [Define to long or long long if <inttypes.h> and <stdint.h> don't define.])
+  else
+    AC_DEFINE([HAVE_INTMAX_T], [1],
+      [Define if you have the 'intmax_t' type in <stdint.h> or <inttypes.h>.])
+  fi
+])
+
+dnl An alternative would be to explicitly test for 'intmax_t'.
+
+AC_DEFUN([gt_AC_TYPE_INTMAX_T],
+[
+  AC_REQUIRE([gl_AC_HEADER_INTTYPES_H])
+  AC_REQUIRE([gl_AC_HEADER_STDINT_H])
+  AC_CACHE_CHECK([for intmax_t], [gt_cv_c_intmax_t],
+    [AC_COMPILE_IFELSE(
+       [AC_LANG_PROGRAM(
+          [[
+#include <stddef.h>
+#include <stdlib.h>
+#if HAVE_STDINT_H_WITH_UINTMAX
+#include <stdint.h>
+#endif
+#if HAVE_INTTYPES_H_WITH_UINTMAX
+#include <inttypes.h>
+#endif
+          ]],
+          [[intmax_t x = -1; return !x;]])],
+       [gt_cv_c_intmax_t=yes],
+       [gt_cv_c_intmax_t=no])])
+  if test $gt_cv_c_intmax_t = yes; then
+    AC_DEFINE([HAVE_INTMAX_T], [1],
+      [Define if you have the 'intmax_t' type in <stdint.h> or <inttypes.h>.])
+  else
+    AC_REQUIRE([AC_TYPE_LONG_LONG_INT])
+    test $ac_cv_type_long_long_int = yes \
+      && ac_type='long long' \
+      || ac_type='long'
+    AC_DEFINE_UNQUOTED([intmax_t], [$ac_type],
+     [Define to long or long long if <stdint.h> and <inttypes.h> don't define.])
+  fi
+])
diff --git a/gnulib_m4/inttypes_h.m4 b/gnulib_m4/inttypes_h.m4
new file mode 100644 (file)
index 0000000..954848b
--- /dev/null
@@ -0,0 +1,29 @@
+# inttypes_h.m4 serial 10
+dnl Copyright (C) 1997-2004, 2006, 2008-2018 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Paul Eggert.
+
+# Define HAVE_INTTYPES_H_WITH_UINTMAX if <inttypes.h> exists,
+# doesn't clash with <sys/types.h>, and declares uintmax_t.
+
+AC_DEFUN([gl_AC_HEADER_INTTYPES_H],
+[
+  AC_CACHE_CHECK([for inttypes.h], [gl_cv_header_inttypes_h],
+    [AC_COMPILE_IFELSE(
+       [AC_LANG_PROGRAM(
+          [[
+#include <sys/types.h>
+#include <inttypes.h>
+          ]],
+          [[uintmax_t i = (uintmax_t) -1; return !i;]])],
+       [gl_cv_header_inttypes_h=yes],
+       [gl_cv_header_inttypes_h=no])])
+  if test $gl_cv_header_inttypes_h = yes; then
+    AC_DEFINE_UNQUOTED([HAVE_INTTYPES_H_WITH_UINTMAX], [1],
+      [Define if <inttypes.h> exists, doesn't clash with <sys/types.h>,
+       and declares uintmax_t. ])
+  fi
+])
diff --git a/gnulib_m4/isnand.m4 b/gnulib_m4/isnand.m4
new file mode 100644 (file)
index 0000000..03da55d
--- /dev/null
@@ -0,0 +1,96 @@
+# isnand.m4 serial 11
+dnl Copyright (C) 2007-2018 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl Check how to get or define isnand().
+
+AC_DEFUN([gl_FUNC_ISNAND],
+[
+  AC_REQUIRE([gl_MATH_H_DEFAULTS])
+  ISNAND_LIBM=
+  gl_HAVE_ISNAND_NO_LIBM
+  if test $gl_cv_func_isnand_no_libm = no; then
+    gl_HAVE_ISNAND_IN_LIBM
+    if test $gl_cv_func_isnand_in_libm = yes; then
+      ISNAND_LIBM=-lm
+    fi
+  fi
+  dnl The variable gl_func_isnand set here is used by isnan.m4.
+  if test $gl_cv_func_isnand_no_libm = yes \
+     || test $gl_cv_func_isnand_in_libm = yes; then
+    gl_func_isnand=yes
+  else
+    gl_func_isnand=no
+    HAVE_ISNAND=0
+  fi
+  AC_SUBST([ISNAND_LIBM])
+])
+
+dnl Check how to get or define isnand() without linking with libm.
+
+AC_DEFUN([gl_FUNC_ISNAND_NO_LIBM],
+[
+  gl_HAVE_ISNAND_NO_LIBM
+  gl_func_isnand_no_libm=$gl_cv_func_isnand_no_libm
+  if test $gl_cv_func_isnand_no_libm = yes; then
+    AC_DEFINE([HAVE_ISNAND_IN_LIBC], [1],
+      [Define if the isnan(double) function is available in libc.])
+  fi
+])
+
+dnl Prerequisites of replacement isnand definition. It does not need -lm.
+AC_DEFUN([gl_PREREQ_ISNAND],
+[
+  AC_REQUIRE([gl_DOUBLE_EXPONENT_LOCATION])
+])
+
+dnl Test whether isnand() can be used with libm.
+
+AC_DEFUN([gl_HAVE_ISNAND_IN_LIBM],
+[
+  AC_CACHE_CHECK([whether isnan(double) can be used with libm],
+    [gl_cv_func_isnand_in_libm],
+    [
+      save_LIBS="$LIBS"
+      LIBS="$LIBS -lm"
+      AC_LINK_IFELSE(
+        [AC_LANG_PROGRAM(
+           [[#include <math.h>
+             #if __GNUC__ >= 4
+             # undef isnand
+             # define isnand(x) __builtin_isnan ((double)(x))
+             #elif defined isnan
+             # undef isnand
+             # define isnand(x) isnan ((double)(x))
+             #endif
+             double x;]],
+           [[return isnand (x);]])],
+        [gl_cv_func_isnand_in_libm=yes],
+        [gl_cv_func_isnand_in_libm=no])
+      LIBS="$save_LIBS"
+    ])
+])
+
+AC_DEFUN([gl_HAVE_ISNAND_NO_LIBM],
+[
+  AC_CACHE_CHECK([whether isnan(double) can be used without linking with libm],
+    [gl_cv_func_isnand_no_libm],
+    [
+      AC_LINK_IFELSE(
+        [AC_LANG_PROGRAM(
+           [[#include <math.h>
+             #if __GNUC__ >= 4
+             # undef isnand
+             # define isnand(x) __builtin_isnan ((double)(x))
+             #else
+             # undef isnand
+             # define isnand(x) isnan ((double)(x))
+             #endif
+             double x;]],
+           [[return isnand (x);]])],
+        [gl_cv_func_isnand_no_libm=yes],
+        [gl_cv_func_isnand_no_libm=no])
+    ])
+])
diff --git a/gnulib_m4/isnanf.m4 b/gnulib_m4/isnanf.m4
new file mode 100644 (file)
index 0000000..c0dcdb7
--- /dev/null
@@ -0,0 +1,197 @@
+# isnanf.m4 serial 15
+dnl Copyright (C) 2007-2018 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl Check how to get or define isnanf().
+
+AC_DEFUN([gl_FUNC_ISNANF],
+[
+  AC_REQUIRE([gl_MATH_H_DEFAULTS])
+  ISNANF_LIBM=
+  gl_HAVE_ISNANF_NO_LIBM
+  if test $gl_cv_func_isnanf_no_libm = no; then
+    gl_HAVE_ISNANF_IN_LIBM
+    if test $gl_cv_func_isnanf_in_libm = yes; then
+      ISNANF_LIBM=-lm
+    fi
+  fi
+  dnl The variable gl_func_isnanf set here is used by isnan.m4.
+  if test $gl_cv_func_isnanf_no_libm = yes \
+     || test $gl_cv_func_isnanf_in_libm = yes; then
+    save_LIBS="$LIBS"
+    LIBS="$LIBS $ISNANF_LIBM"
+    gl_ISNANF_WORKS
+    LIBS="$save_LIBS"
+    case "$gl_cv_func_isnanf_works" in
+      *yes) gl_func_isnanf=yes ;;
+      *)    gl_func_isnanf=no; ISNANF_LIBM= ;;
+    esac
+  else
+    gl_func_isnanf=no
+  fi
+  if test $gl_func_isnanf != yes; then
+    HAVE_ISNANF=0
+  fi
+  AC_SUBST([ISNANF_LIBM])
+])
+
+dnl Check how to get or define isnanf() without linking with libm.
+
+AC_DEFUN([gl_FUNC_ISNANF_NO_LIBM],
+[
+  gl_HAVE_ISNANF_NO_LIBM
+  if test $gl_cv_func_isnanf_no_libm = yes; then
+    gl_ISNANF_WORKS
+  fi
+  if test $gl_cv_func_isnanf_no_libm = yes \
+     && { case "$gl_cv_func_isnanf_works" in
+            *yes) true;;
+            *) false;;
+          esac
+        }; then
+    gl_func_isnanf_no_libm=yes
+    AC_DEFINE([HAVE_ISNANF_IN_LIBC], [1],
+      [Define if the isnan(float) function is available in libc.])
+  else
+    gl_func_isnanf_no_libm=no
+  fi
+])
+
+dnl Prerequisites of replacement isnanf definition. It does not need -lm.
+AC_DEFUN([gl_PREREQ_ISNANF],
+[
+  gl_FLOAT_EXPONENT_LOCATION
+])
+
+dnl Test whether isnanf() can be used without libm.
+AC_DEFUN([gl_HAVE_ISNANF_NO_LIBM],
+[
+  AC_CACHE_CHECK([whether isnan(float) can be used without linking with libm],
+    [gl_cv_func_isnanf_no_libm],
+    [
+      AC_LINK_IFELSE(
+        [AC_LANG_PROGRAM(
+           [[#include <math.h>
+             #if __GNUC__ >= 4
+             # undef isnanf
+             # define isnanf(x) __builtin_isnanf ((float)(x))
+             #elif defined isnan
+             # undef isnanf
+             # define isnanf(x) isnan ((float)(x))
+             #endif
+             float x;]],
+           [[return isnanf (x);]])],
+        [gl_cv_func_isnanf_no_libm=yes],
+        [gl_cv_func_isnanf_no_libm=no])
+    ])
+])
+
+dnl Test whether isnanf() can be used with libm.
+AC_DEFUN([gl_HAVE_ISNANF_IN_LIBM],
+[
+  AC_CACHE_CHECK([whether isnan(float) can be used with libm],
+    [gl_cv_func_isnanf_in_libm],
+    [
+      save_LIBS="$LIBS"
+      LIBS="$LIBS -lm"
+      AC_LINK_IFELSE(
+        [AC_LANG_PROGRAM(
+           [[#include <math.h>
+             #if __GNUC__ >= 4
+             # undef isnanf
+             # define isnanf(x) __builtin_isnanf ((float)(x))
+             #elif defined isnan
+             # undef isnanf
+             # define isnanf(x) isnan ((float)(x))
+             #endif
+             float x;]],
+           [[return isnanf (x);]])],
+        [gl_cv_func_isnanf_in_libm=yes],
+        [gl_cv_func_isnanf_in_libm=no])
+      LIBS="$save_LIBS"
+    ])
+])
+
+dnl Test whether isnanf() rejects Infinity (this fails on Solaris 2.5.1),
+dnl recognizes a NaN (this fails on IRIX 6.5 with cc), and recognizes a NaN
+dnl with in-memory representation 0x7fbfffff (this fails on IRIX 6.5).
+AC_DEFUN([gl_ISNANF_WORKS],
+[
+  AC_REQUIRE([AC_PROG_CC])
+  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+  AC_REQUIRE([gl_FLOAT_EXPONENT_LOCATION])
+  AC_CACHE_CHECK([whether isnan(float) works], [gl_cv_func_isnanf_works],
+    [
+      AC_RUN_IFELSE(
+        [AC_LANG_SOURCE([[
+#include <math.h>
+#if __GNUC__ >= 4
+# undef isnanf
+# define isnanf(x) __builtin_isnanf ((float)(x))
+#elif defined isnan
+# undef isnanf
+# define isnanf(x) isnan ((float)(x))
+#endif
+/* The Compaq (ex-DEC) C 6.4 compiler chokes on the expression 0.0 / 0.0.  */
+#ifdef __DECC
+static float
+NaN ()
+{
+  static float zero = 0.0f;
+  return zero / zero;
+}
+#else
+# define NaN() (0.0f / 0.0f)
+#endif
+#define NWORDS \
+  ((sizeof (float) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
+typedef union { unsigned int word[NWORDS]; float value; } memory_float;
+int main()
+{
+  int result = 0;
+
+  if (isnanf (1.0f / 0.0f))
+    result |= 1;
+
+  if (!isnanf (NaN ()))
+    result |= 2;
+
+#if defined FLT_EXPBIT0_WORD && defined FLT_EXPBIT0_BIT
+  /* The isnanf function should be immune against changes in the sign bit and
+     in the mantissa bits.  The xor operation twiddles a bit that can only be
+     a sign bit or a mantissa bit.  */
+  if (FLT_EXPBIT0_WORD == 0 && FLT_EXPBIT0_BIT > 0)
+    {
+      memory_float m;
+
+      m.value = NaN ();
+      /* Set the bits below the exponent to 01111...111.  */
+      m.word[0] &= -1U << FLT_EXPBIT0_BIT;
+      m.word[0] |= 1U << (FLT_EXPBIT0_BIT - 1) - 1;
+      if (!isnanf (m.value))
+        result |= 4;
+    }
+#endif
+
+  return result;
+}]])],
+        [gl_cv_func_isnanf_works=yes],
+        [gl_cv_func_isnanf_works=no],
+        [case "$host_os" in
+           irix* | solaris*) gl_cv_func_isnanf_works="guessing no" ;;
+           mingw*) # Guess yes on mingw, no on MSVC.
+             AC_EGREP_CPP([Known], [
+#ifdef __MINGW32__
+ Known
+#endif
+               ],
+               [gl_cv_func_isnanf_works="guessing yes"],
+               [gl_cv_func_isnanf_works="guessing no"])
+             ;;
+           *) gl_cv_func_isnanf_works="guessing yes" ;;
+         esac
+        ])
+    ])
+])
diff --git a/gnulib_m4/isnanl.m4 b/gnulib_m4/isnanl.m4
new file mode 100644 (file)
index 0000000..74014d6
--- /dev/null
@@ -0,0 +1,248 @@
+# isnanl.m4 serial 20
+dnl Copyright (C) 2007-2018 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_ISNANL],
+[
+  AC_REQUIRE([gl_MATH_H_DEFAULTS])
+  ISNANL_LIBM=
+  gl_HAVE_ISNANL_NO_LIBM
+  if test $gl_cv_func_isnanl_no_libm = no; then
+    gl_HAVE_ISNANL_IN_LIBM
+    if test $gl_cv_func_isnanl_in_libm = yes; then
+      ISNANL_LIBM=-lm
+    fi
+  fi
+  dnl The variable gl_func_isnanl set here is used by isnan.m4.
+  if test $gl_cv_func_isnanl_no_libm = yes \
+     || test $gl_cv_func_isnanl_in_libm = yes; then
+    save_LIBS="$LIBS"
+    LIBS="$LIBS $ISNANL_LIBM"
+    gl_FUNC_ISNANL_WORKS
+    LIBS="$save_LIBS"
+    case "$gl_cv_func_isnanl_works" in
+      *yes) gl_func_isnanl=yes ;;
+      *)    gl_func_isnanl=no; ISNANL_LIBM= ;;
+    esac
+  else
+    gl_func_isnanl=no
+  fi
+  if test $gl_func_isnanl != yes; then
+    HAVE_ISNANL=0
+  fi
+  AC_SUBST([ISNANL_LIBM])
+])
+
+AC_DEFUN([gl_FUNC_ISNANL_NO_LIBM],
+[
+  gl_HAVE_ISNANL_NO_LIBM
+  gl_func_isnanl_no_libm=$gl_cv_func_isnanl_no_libm
+  if test $gl_func_isnanl_no_libm = yes; then
+    gl_FUNC_ISNANL_WORKS
+    case "$gl_cv_func_isnanl_works" in
+      *yes) ;;
+      *)    gl_func_isnanl_no_libm=no ;;
+    esac
+  fi
+  if test $gl_func_isnanl_no_libm = yes; then
+    AC_DEFINE([HAVE_ISNANL_IN_LIBC], [1],
+      [Define if the isnan(long double) function is available in libc.])
+  fi
+])
+
+dnl Prerequisites of replacement isnanl definition. It does not need -lm.
+AC_DEFUN([gl_PREREQ_ISNANL],
+[
+  gl_LONG_DOUBLE_EXPONENT_LOCATION
+  AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE])
+])
+
+dnl Test whether isnanl() can be used without libm.
+AC_DEFUN([gl_HAVE_ISNANL_NO_LIBM],
+[
+  AC_CACHE_CHECK([whether isnan(long double) can be used without linking with libm],
+    [gl_cv_func_isnanl_no_libm],
+    [
+      AC_LINK_IFELSE(
+        [AC_LANG_PROGRAM(
+           [[#include <math.h>
+             #if __GNUC__ >= 4
+             # undef isnanl
+             # define isnanl(x) __builtin_isnanl ((long double)(x))
+             #elif defined isnan
+             # undef isnanl
+             # define isnanl(x) isnan ((long double)(x))
+             #endif
+             long double x;]],
+           [[return isnanl (x);]])],
+        [gl_cv_func_isnanl_no_libm=yes],
+        [gl_cv_func_isnanl_no_libm=no])
+    ])
+])
+
+dnl Test whether isnanl() can be used with libm.
+AC_DEFUN([gl_HAVE_ISNANL_IN_LIBM],
+[
+  AC_CACHE_CHECK([whether isnan(long double) can be used with libm],
+    [gl_cv_func_isnanl_in_libm],
+    [
+      save_LIBS="$LIBS"
+      LIBS="$LIBS -lm"
+      AC_LINK_IFELSE(
+        [AC_LANG_PROGRAM(
+           [[#include <math.h>
+             #if __GNUC__ >= 4
+             # undef isnanl
+             # define isnanl(x) __builtin_isnanl ((long double)(x))
+             #elif defined isnan
+             # undef isnanl
+             # define isnanl(x) isnan ((long double)(x))
+             #endif
+             long double x;]],
+           [[return isnanl (x);]])],
+        [gl_cv_func_isnanl_in_libm=yes],
+        [gl_cv_func_isnanl_in_libm=no])
+      LIBS="$save_LIBS"
+    ])
+])
+
+dnl Test whether isnanl() recognizes all canonical numbers which are neither
+dnl finite nor infinite.
+AC_DEFUN([gl_FUNC_ISNANL_WORKS],
+[
+  AC_REQUIRE([AC_PROG_CC])
+  AC_REQUIRE([gl_BIGENDIAN])
+  AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE])
+  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+  AC_CACHE_CHECK([whether isnanl works], [gl_cv_func_isnanl_works],
+    [
+      AC_RUN_IFELSE(
+        [AC_LANG_SOURCE([[
+#include <float.h>
+#include <limits.h>
+#include <math.h>
+#if __GNUC__ >= 4
+# undef isnanl
+# define isnanl(x) __builtin_isnanl ((long double)(x))
+#elif defined isnan
+# undef isnanl
+# define isnanl(x) isnan ((long double)(x))
+#endif
+#define NWORDS \
+  ((sizeof (long double) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
+typedef union { unsigned int word[NWORDS]; long double value; }
+        memory_long_double;
+/* On Irix 6.5, gcc 3.4.3 can't compute compile-time NaN, and needs the
+   runtime type conversion.  */
+#ifdef __sgi
+static long double NaNl ()
+{
+  double zero = 0.0;
+  return zero / zero;
+}
+#else
+# define NaNl() (0.0L / 0.0L)
+#endif
+int main ()
+{
+  int result = 0;
+
+  if (!isnanl (NaNl ()))
+    result |= 1;
+
+  {
+    memory_long_double m;
+    unsigned int i;
+
+    /* The isnanl function should be immune against changes in the sign bit and
+       in the mantissa bits.  The xor operation twiddles a bit that can only be
+       a sign bit or a mantissa bit (since the exponent never extends to
+       bit 31).  */
+    m.value = NaNl ();
+    m.word[NWORDS / 2] ^= (unsigned int) 1 << (sizeof (unsigned int) * CHAR_BIT - 1);
+    for (i = 0; i < NWORDS; i++)
+      m.word[i] |= 1;
+    if (!isnanl (m.value))
+      result |= 1;
+  }
+
+#if ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) && !HAVE_SAME_LONG_DOUBLE_AS_DOUBLE
+/* Representation of an 80-bit 'long double' as an initializer for a sequence
+   of 'unsigned int' words.  */
+# ifdef WORDS_BIGENDIAN
+#  define LDBL80_WORDS(exponent,manthi,mantlo) \
+     { ((unsigned int) (exponent) << 16) | ((unsigned int) (manthi) >> 16), \
+       ((unsigned int) (manthi) << 16) | ((unsigned int) (mantlo) >> 16),   \
+       (unsigned int) (mantlo) << 16                                        \
+     }
+# else
+#  define LDBL80_WORDS(exponent,manthi,mantlo) \
+     { mantlo, manthi, exponent }
+# endif
+  { /* Quiet NaN.  */
+    static memory_long_double x =
+      { LDBL80_WORDS (0xFFFF, 0xC3333333, 0x00000000) };
+    if (!isnanl (x.value))
+      result |= 2;
+  }
+  {
+    /* Signalling NaN.  */
+    static memory_long_double x =
+      { LDBL80_WORDS (0xFFFF, 0x83333333, 0x00000000) };
+    if (!isnanl (x.value))
+      result |= 2;
+  }
+  /* isnanl should return something even for noncanonical values.  */
+  { /* Pseudo-NaN.  */
+    static memory_long_double x =
+      { LDBL80_WORDS (0xFFFF, 0x40000001, 0x00000000) };
+    if (isnanl (x.value) && !isnanl (x.value))
+      result |= 4;
+  }
+  { /* Pseudo-Infinity.  */
+    static memory_long_double x =
+      { LDBL80_WORDS (0xFFFF, 0x00000000, 0x00000000) };
+    if (isnanl (x.value) && !isnanl (x.value))
+      result |= 8;
+  }
+  { /* Pseudo-Zero.  */
+    static memory_long_double x =
+      { LDBL80_WORDS (0x4004, 0x00000000, 0x00000000) };
+    if (isnanl (x.value) && !isnanl (x.value))
+      result |= 16;
+  }
+  { /* Unnormalized number.  */
+    static memory_long_double x =
+      { LDBL80_WORDS (0x4000, 0x63333333, 0x00000000) };
+    if (isnanl (x.value) && !isnanl (x.value))
+      result |= 32;
+  }
+  { /* Pseudo-Denormal.  */
+    static memory_long_double x =
+      { LDBL80_WORDS (0x0000, 0x83333333, 0x00000000) };
+    if (isnanl (x.value) && !isnanl (x.value))
+      result |= 64;
+  }
+#endif
+
+  return result;
+}]])],
+        [gl_cv_func_isnanl_works=yes],
+        [gl_cv_func_isnanl_works=no],
+        [case "$host_os" in
+           mingw*) # Guess yes on mingw, no on MSVC.
+             AC_EGREP_CPP([Known], [
+#ifdef __MINGW32__
+ Known
+#endif
+               ],
+               [gl_cv_func_isnanl_works="guessing yes"],
+               [gl_cv_func_isnanl_works="guessing no"])
+             ;;
+           *) gl_cv_func_isnanl_works="guessing yes" ;;
+         esac
+        ])
+    ])
+])
diff --git a/gnulib_m4/ldexpl.m4 b/gnulib_m4/ldexpl.m4
new file mode 100644 (file)
index 0000000..744dede
--- /dev/null
@@ -0,0 +1,135 @@
+# ldexpl.m4 serial 17
+dnl Copyright (C) 2007-2018 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_LDEXPL],
+[
+  AC_REQUIRE([gl_MATH_H_DEFAULTS])
+  AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE])
+  AC_REQUIRE([gl_FUNC_ISNANL]) dnl for ISNANL_LIBM
+
+  dnl Persuade glibc <math.h> to declare ldexpl().
+  AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+
+  dnl Check whether it's declared.
+  dnl Mac OS X 10.3 has ldexpl() in libc but doesn't declare it in <math.h>.
+  AC_CHECK_DECL([ldexpl], , [HAVE_DECL_LDEXPL=0], [[#include <math.h>]])
+
+  LDEXPL_LIBM=
+  if test $HAVE_DECL_LDEXPL = 1; then
+    gl_CHECK_LDEXPL_NO_LIBM
+    if test $gl_cv_func_ldexpl_no_libm = no; then
+      AC_CACHE_CHECK([whether ldexpl() can be used with libm],
+        [gl_cv_func_ldexpl_in_libm],
+        [
+          save_LIBS="$LIBS"
+          LIBS="$LIBS -lm"
+          AC_LINK_IFELSE(
+            [AC_LANG_PROGRAM(
+               [[#include <math.h>
+                 long double x;]],
+               [[return ldexpl (x, -1) > 0;]])],
+            [gl_cv_func_ldexpl_in_libm=yes],
+            [gl_cv_func_ldexpl_in_libm=no])
+          LIBS="$save_LIBS"
+        ])
+      if test $gl_cv_func_ldexpl_in_libm = yes; then
+        LDEXPL_LIBM=-lm
+      fi
+    fi
+    if test $gl_cv_func_ldexpl_no_libm = yes \
+       || test $gl_cv_func_ldexpl_in_libm = yes; then
+      save_LIBS="$LIBS"
+      LIBS="$LIBS $LDEXPL_LIBM"
+      gl_FUNC_LDEXPL_WORKS
+      LIBS="$save_LIBS"
+      case "$gl_cv_func_ldexpl_works" in
+        *yes) gl_func_ldexpl=yes ;;
+        *)    gl_func_ldexpl=no; REPLACE_LDEXPL=1 ;;
+      esac
+    else
+      gl_func_ldexpl=no
+    fi
+    if test $gl_func_ldexpl = yes; then
+      AC_DEFINE([HAVE_LDEXPL], [1],
+        [Define if the ldexpl() function is available.])
+    fi
+  fi
+  if test $HAVE_DECL_LDEXPL = 0 || test $gl_func_ldexpl = no; then
+    dnl Find libraries needed to link lib/ldexpl.c.
+    if test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 1; then
+      AC_REQUIRE([gl_FUNC_LDEXP])
+      LDEXPL_LIBM="$LDEXP_LIBM"
+    else
+      LDEXPL_LIBM="$ISNANL_LIBM"
+    fi
+  fi
+  AC_SUBST([LDEXPL_LIBM])
+])
+
+dnl Test whether ldexpl() can be used without linking with libm.
+dnl Set gl_cv_func_ldexpl_no_libm to 'yes' or 'no' accordingly.
+AC_DEFUN([gl_CHECK_LDEXPL_NO_LIBM],
+[
+  AC_CACHE_CHECK([whether ldexpl() can be used without linking with libm],
+    [gl_cv_func_ldexpl_no_libm],
+    [
+      AC_LINK_IFELSE(
+        [AC_LANG_PROGRAM(
+           [[#include <math.h>
+             long double x;]],
+           [[return ldexpl (x, -1) > 0;]])],
+        [gl_cv_func_ldexpl_no_libm=yes],
+        [gl_cv_func_ldexpl_no_libm=no])
+    ])
+])
+
+dnl Test whether ldexpl() works on finite numbers (this fails on AIX 5.1
+dnl and Mac OS X 10.4/PowerPC).
+AC_DEFUN([gl_FUNC_LDEXPL_WORKS],
+[
+  AC_REQUIRE([AC_PROG_CC])
+  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+  AC_CACHE_CHECK([whether ldexpl works], [gl_cv_func_ldexpl_works],
+    [
+      AC_RUN_IFELSE(
+        [AC_LANG_SOURCE([[
+#include <math.h>
+extern
+#ifdef __cplusplus
+"C"
+#endif
+long double ldexpl (long double, int);
+int main()
+{
+  int result = 0;
+  {
+    volatile long double x = 1.0;
+    volatile long double y = ldexpl (x, -1);
+    if (y != 0.5L)
+      result |= 1;
+  }
+  {
+    volatile long double x = 1.73205L;
+    volatile long double y = ldexpl (x, 0);
+    if (y != x)
+      result |= 2;
+  }
+  return result;
+}]])],
+        [gl_cv_func_ldexpl_works=yes],
+        [gl_cv_func_ldexpl_works=no],
+        [
+changequote(,)dnl
+         case "$host_os" in
+           aix | aix[3-6]*) gl_cv_func_ldexpl_works="guessing no" ;;
+                            # Guess yes on native Windows.
+           mingw*)          gl_cv_func_ldexpl_works="guessing yes" ;;
+           *)               gl_cv_func_ldexpl_works="guessing yes" ;;
+         esac
+changequote([,])dnl
+        ])
+    ])
+])
similarity index 99%
rename from src/libs/gnulib/m4/libunistring-base.m4
rename to gnulib_m4/libunistring-base.m4
index d003267..1587f36 100644 (file)
@@ -1,5 +1,5 @@
 # libunistring-base.m4 serial 5
-dnl Copyright (C) 2010-2014 Free Software Foundation, Inc.
+dnl Copyright (C) 2010-2018 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
 dnl with or without modifications, as long as this notice is preserved.
diff --git a/gnulib_m4/limits-h.m4 b/gnulib_m4/limits-h.m4
new file mode 100644 (file)
index 0000000..3a2cd91
--- /dev/null
@@ -0,0 +1,43 @@
+dnl Check whether limits.h has needed features.
+
+dnl Copyright 2016-2018 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Paul Eggert.
+
+AC_DEFUN_ONCE([gl_LIMITS_H],
+[
+  gl_CHECK_NEXT_HEADERS([limits.h])
+
+  AC_CACHE_CHECK([whether limits.h has LLONG_MAX, WORD_BIT, ULLONG_WIDTH etc.],
+    [gl_cv_header_limits_width],
+    [AC_COMPILE_IFELSE(
+       [AC_LANG_PROGRAM(
+          [[#ifndef __STDC_WANT_IEC_60559_BFP_EXT__
+             #define __STDC_WANT_IEC_60559_BFP_EXT__ 1
+            #endif
+            #include <limits.h>
+            long long llm = LLONG_MAX;
+            int wb = WORD_BIT;
+            int ullw = ULLONG_WIDTH;
+          ]])],
+       [gl_cv_header_limits_width=yes],
+       [gl_cv_header_limits_width=no])])
+  if test "$gl_cv_header_limits_width" = yes; then
+    LIMITS_H=
+  else
+    LIMITS_H=limits.h
+  fi
+  AC_SUBST([LIMITS_H])
+  AM_CONDITIONAL([GL_GENERATE_LIMITS_H], [test -n "$LIMITS_H"])
+])
+
+dnl Unconditionally enables the replacement of <limits.h>.
+AC_DEFUN([gl_REPLACE_LIMITS_H],
+[
+  AC_REQUIRE([gl_LIMITS_H])
+  LIMITS_H='limits.h'
+  AM_CONDITIONAL([GL_GENERATE_LIMITS_H], [test -n "$LIMITS_H"])
+])
similarity index 98%
rename from src/libs/gnulib/m4/longlong.m4
rename to gnulib_m4/longlong.m4
index eefb37c..27e6326 100644 (file)
@@ -1,5 +1,5 @@
 # longlong.m4 serial 17
-dnl Copyright (C) 1999-2007, 2009-2014 Free Software Foundation, Inc.
+dnl Copyright (C) 1999-2007, 2009-2018 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
 dnl with or without modifications, as long as this notice is preserved.
diff --git a/gnulib_m4/math_h.m4 b/gnulib_m4/math_h.m4
new file mode 100644 (file)
index 0000000..d0c7ed1
--- /dev/null
@@ -0,0 +1,366 @@
+# math_h.m4 serial 116
+dnl Copyright (C) 2007-2018 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_MATH_H],
+[
+  AC_REQUIRE([gl_MATH_H_DEFAULTS])
+  gl_CHECK_NEXT_HEADERS([math.h])
+
+  AC_CACHE_CHECK([whether NAN macro works], [gl_cv_header_math_nan_works],
+    [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include <math.h>]],
+      [[/* Solaris 10 has a broken definition of NAN.  Other platforms
+        fail to provide NAN, or provide it only in C99 mode; this
+        test only needs to fail when NAN is provided but wrong.  */
+         float f = 1.0f;
+#ifdef NAN
+         f = NAN;
+#endif
+         return f == 0;]])],
+      [gl_cv_header_math_nan_works=yes],
+      [gl_cv_header_math_nan_works=no])])
+  if test $gl_cv_header_math_nan_works = no; then
+    REPLACE_NAN=1
+  fi
+  AC_CACHE_CHECK([whether HUGE_VAL works], [gl_cv_header_math_huge_val_works],
+    [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include <math.h>]],
+      [[/* Solaris 10 has a broken definition of HUGE_VAL.  */
+         double d = HUGE_VAL;
+         return d == 0;]])],
+      [gl_cv_header_math_huge_val_works=yes],
+      [gl_cv_header_math_huge_val_works=no])])
+  if test $gl_cv_header_math_huge_val_works = no; then
+    REPLACE_HUGE_VAL=1
+  fi
+
+  dnl Check for declarations of anything we want to poison if the
+  dnl corresponding gnulib module is not in use.
+  gl_WARN_ON_USE_PREPARE([[#include <math.h>]],
+    [acosf acosl asinf asinl atanf atanl
+     cbrt cbrtf cbrtl ceilf ceill copysign copysignf copysignl cosf cosl coshf
+     expf expl exp2 exp2f exp2l expm1 expm1f expm1l
+     fabsf fabsl floorf floorl fma fmaf fmal
+     fmod fmodf fmodl frexpf frexpl hypotf hypotl
+     ilogb ilogbf ilogbl
+     ldexpf ldexpl
+     log logf logl log10 log10f log10l log1p log1pf log1pl log2 log2f log2l
+     logb logbf logbl
+     modf modff modfl powf
+     remainder remainderf remainderl
+     rint rintf rintl round roundf roundl sinf sinl sinhf sqrtf sqrtl
+     tanf tanl tanhf trunc truncf truncl])
+])
+
+AC_DEFUN([gl_MATH_MODULE_INDICATOR],
+[
+  dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+  AC_REQUIRE([gl_MATH_H_DEFAULTS])
+  gl_MODULE_INDICATOR_SET_VARIABLE([$1])
+  dnl Define it also as a C macro, for the benefit of the unit tests.
+  gl_MODULE_INDICATOR_FOR_TESTS([$1])
+])
+
+AC_DEFUN([gl_MATH_H_DEFAULTS],
+[
+  GNULIB_ACOSF=0;      AC_SUBST([GNULIB_ACOSF])
+  GNULIB_ACOSL=0;      AC_SUBST([GNULIB_ACOSL])
+  GNULIB_ASINF=0;      AC_SUBST([GNULIB_ASINF])
+  GNULIB_ASINL=0;      AC_SUBST([GNULIB_ASINL])
+  GNULIB_ATANF=0;      AC_SUBST([GNULIB_ATANF])
+  GNULIB_ATANL=0;      AC_SUBST([GNULIB_ATANL])
+  GNULIB_ATAN2F=0;     AC_SUBST([GNULIB_ATAN2F])
+  GNULIB_CBRT=0;       AC_SUBST([GNULIB_CBRT])
+  GNULIB_CBRTF=0;      AC_SUBST([GNULIB_CBRTF])
+  GNULIB_CBRTL=0;      AC_SUBST([GNULIB_CBRTL])
+  GNULIB_CEIL=0;       AC_SUBST([GNULIB_CEIL])
+  GNULIB_CEILF=0;      AC_SUBST([GNULIB_CEILF])
+  GNULIB_CEILL=0;      AC_SUBST([GNULIB_CEILL])
+  GNULIB_COPYSIGN=0;   AC_SUBST([GNULIB_COPYSIGN])
+  GNULIB_COPYSIGNF=0;  AC_SUBST([GNULIB_COPYSIGNF])
+  GNULIB_COPYSIGNL=0;  AC_SUBST([GNULIB_COPYSIGNL])
+  GNULIB_COSF=0;       AC_SUBST([GNULIB_COSF])
+  GNULIB_COSL=0;       AC_SUBST([GNULIB_COSL])
+  GNULIB_COSHF=0;      AC_SUBST([GNULIB_COSHF])
+  GNULIB_EXPF=0;       AC_SUBST([GNULIB_EXPF])
+  GNULIB_EXPL=0;       AC_SUBST([GNULIB_EXPL])
+  GNULIB_EXP2=0;       AC_SUBST([GNULIB_EXP2])
+  GNULIB_EXP2F=0;      AC_SUBST([GNULIB_EXP2F])
+  GNULIB_EXP2L=0;      AC_SUBST([GNULIB_EXP2L])
+  GNULIB_EXPM1=0;      AC_SUBST([GNULIB_EXPM1])
+  GNULIB_EXPM1F=0;     AC_SUBST([GNULIB_EXPM1F])
+  GNULIB_EXPM1L=0;     AC_SUBST([GNULIB_EXPM1L])
+  GNULIB_FABSF=0;      AC_SUBST([GNULIB_FABSF])
+  GNULIB_FABSL=0;      AC_SUBST([GNULIB_FABSL])
+  GNULIB_FLOOR=0;      AC_SUBST([GNULIB_FLOOR])
+  GNULIB_FLOORF=0;     AC_SUBST([GNULIB_FLOORF])
+  GNULIB_FLOORL=0;     AC_SUBST([GNULIB_FLOORL])
+  GNULIB_FMA=0;        AC_SUBST([GNULIB_FMA])
+  GNULIB_FMAF=0;       AC_SUBST([GNULIB_FMAF])
+  GNULIB_FMAL=0;       AC_SUBST([GNULIB_FMAL])
+  GNULIB_FMOD=0;       AC_SUBST([GNULIB_FMOD])
+  GNULIB_FMODF=0;      AC_SUBST([GNULIB_FMODF])
+  GNULIB_FMODL=0;      AC_SUBST([GNULIB_FMODL])
+  GNULIB_FREXPF=0;     AC_SUBST([GNULIB_FREXPF])
+  GNULIB_FREXP=0;      AC_SUBST([GNULIB_FREXP])
+  GNULIB_FREXPL=0;     AC_SUBST([GNULIB_FREXPL])
+  GNULIB_HYPOT=0;      AC_SUBST([GNULIB_HYPOT])
+  GNULIB_HYPOTF=0;     AC_SUBST([GNULIB_HYPOTF])
+  GNULIB_HYPOTL=0;     AC_SUBST([GNULIB_HYPOTL])
+  GNULIB_ILOGB=0;      AC_SUBST([GNULIB_ILOGB])
+  GNULIB_ILOGBF=0;     AC_SUBST([GNULIB_ILOGBF])
+  GNULIB_ILOGBL=0;     AC_SUBST([GNULIB_ILOGBL])
+  GNULIB_ISFINITE=0;   AC_SUBST([GNULIB_ISFINITE])
+  GNULIB_ISINF=0;      AC_SUBST([GNULIB_ISINF])
+  GNULIB_ISNAN=0;      AC_SUBST([GNULIB_ISNAN])
+  GNULIB_ISNANF=0;     AC_SUBST([GNULIB_ISNANF])
+  GNULIB_ISNAND=0;     AC_SUBST([GNULIB_ISNAND])
+  GNULIB_ISNANL=0;     AC_SUBST([GNULIB_ISNANL])
+  GNULIB_LDEXPF=0;     AC_SUBST([GNULIB_LDEXPF])
+  GNULIB_LDEXPL=0;     AC_SUBST([GNULIB_LDEXPL])
+  GNULIB_LOG=0;        AC_SUBST([GNULIB_LOG])
+  GNULIB_LOGF=0;       AC_SUBST([GNULIB_LOGF])
+  GNULIB_LOGL=0;       AC_SUBST([GNULIB_LOGL])
+  GNULIB_LOG10=0;      AC_SUBST([GNULIB_LOG10])
+  GNULIB_LOG10F=0;     AC_SUBST([GNULIB_LOG10F])
+  GNULIB_LOG10L=0;     AC_SUBST([GNULIB_LOG10L])
+  GNULIB_LOG1P=0;      AC_SUBST([GNULIB_LOG1P])
+  GNULIB_LOG1PF=0;     AC_SUBST([GNULIB_LOG1PF])
+  GNULIB_LOG1PL=0;     AC_SUBST([GNULIB_LOG1PL])
+  GNULIB_LOG2=0;       AC_SUBST([GNULIB_LOG2])
+  GNULIB_LOG2F=0;      AC_SUBST([GNULIB_LOG2F])
+  GNULIB_LOG2L=0;      AC_SUBST([GNULIB_LOG2L])
+  GNULIB_LOGB=0;       AC_SUBST([GNULIB_LOGB])
+  GNULIB_LOGBF=0;      AC_SUBST([GNULIB_LOGBF])
+  GNULIB_LOGBL=0;      AC_SUBST([GNULIB_LOGBL])
+  GNULIB_MODF=0;       AC_SUBST([GNULIB_MODF])
+  GNULIB_MODFF=0;      AC_SUBST([GNULIB_MODFF])
+  GNULIB_MODFL=0;      AC_SUBST([GNULIB_MODFL])
+  GNULIB_POWF=0;       AC_SUBST([GNULIB_POWF])
+  GNULIB_REMAINDER=0;  AC_SUBST([GNULIB_REMAINDER])
+  GNULIB_REMAINDERF=0; AC_SUBST([GNULIB_REMAINDERF])
+  GNULIB_REMAINDERL=0; AC_SUBST([GNULIB_REMAINDERL])
+  GNULIB_RINT=0;       AC_SUBST([GNULIB_RINT])
+  GNULIB_RINTF=0;      AC_SUBST([GNULIB_RINTF])
+  GNULIB_RINTL=0;      AC_SUBST([GNULIB_RINTL])
+  GNULIB_ROUND=0;      AC_SUBST([GNULIB_ROUND])
+  GNULIB_ROUNDF=0;     AC_SUBST([GNULIB_ROUNDF])
+  GNULIB_ROUNDL=0;     AC_SUBST([GNULIB_ROUNDL])
+  GNULIB_SIGNBIT=0;    AC_SUBST([GNULIB_SIGNBIT])
+  GNULIB_SINF=0;       AC_SUBST([GNULIB_SINF])
+  GNULIB_SINL=0;       AC_SUBST([GNULIB_SINL])
+  GNULIB_SINHF=0;      AC_SUBST([GNULIB_SINHF])
+  GNULIB_SQRTF=0;      AC_SUBST([GNULIB_SQRTF])
+  GNULIB_SQRTL=0;      AC_SUBST([GNULIB_SQRTL])
+  GNULIB_TANF=0;       AC_SUBST([GNULIB_TANF])
+  GNULIB_TANL=0;       AC_SUBST([GNULIB_TANL])
+  GNULIB_TANHF=0;      AC_SUBST([GNULIB_TANHF])
+  GNULIB_TRUNC=0;      AC_SUBST([GNULIB_TRUNC])
+  GNULIB_TRUNCF=0;     AC_SUBST([GNULIB_TRUNCF])
+  GNULIB_TRUNCL=0;     AC_SUBST([GNULIB_TRUNCL])
+  dnl Assume proper GNU behavior unless another module says otherwise.
+  HAVE_ACOSF=1;                AC_SUBST([HAVE_ACOSF])
+  HAVE_ACOSL=1;                AC_SUBST([HAVE_ACOSL])
+  HAVE_ASINF=1;                AC_SUBST([HAVE_ASINF])
+  HAVE_ASINL=1;                AC_SUBST([HAVE_ASINL])
+  HAVE_ATANF=1;                AC_SUBST([HAVE_ATANF])
+  HAVE_ATANL=1;                AC_SUBST([HAVE_ATANL])
+  HAVE_ATAN2F=1;               AC_SUBST([HAVE_ATAN2F])
+  HAVE_CBRT=1;                 AC_SUBST([HAVE_CBRT])
+  HAVE_CBRTF=1;                AC_SUBST([HAVE_CBRTF])
+  HAVE_CBRTL=1;                AC_SUBST([HAVE_CBRTL])
+  HAVE_COPYSIGN=1;             AC_SUBST([HAVE_COPYSIGN])
+  HAVE_COPYSIGNL=1;            AC_SUBST([HAVE_COPYSIGNL])
+  HAVE_COSF=1;                 AC_SUBST([HAVE_COSF])
+  HAVE_COSL=1;                 AC_SUBST([HAVE_COSL])
+  HAVE_COSHF=1;                AC_SUBST([HAVE_COSHF])
+  HAVE_EXPF=1;                 AC_SUBST([HAVE_EXPF])
+  HAVE_EXPL=1;                 AC_SUBST([HAVE_EXPL])
+  HAVE_EXPM1=1;                AC_SUBST([HAVE_EXPM1])
+  HAVE_EXPM1F=1;               AC_SUBST([HAVE_EXPM1F])
+  HAVE_FABSF=1;                AC_SUBST([HAVE_FABSF])
+  HAVE_FABSL=1;                AC_SUBST([HAVE_FABSL])
+  HAVE_FMA=1;                  AC_SUBST([HAVE_FMA])
+  HAVE_FMAF=1;                 AC_SUBST([HAVE_FMAF])
+  HAVE_FMAL=1;                 AC_SUBST([HAVE_FMAL])
+  HAVE_FMODF=1;                AC_SUBST([HAVE_FMODF])
+  HAVE_FMODL=1;                AC_SUBST([HAVE_FMODL])
+  HAVE_FREXPF=1;               AC_SUBST([HAVE_FREXPF])
+  HAVE_HYPOTF=1;               AC_SUBST([HAVE_HYPOTF])
+  HAVE_HYPOTL=1;               AC_SUBST([HAVE_HYPOTL])
+  HAVE_ILOGB=1;                AC_SUBST([HAVE_ILOGB])
+  HAVE_ILOGBF=1;               AC_SUBST([HAVE_ILOGBF])
+  HAVE_ILOGBL=1;               AC_SUBST([HAVE_ILOGBL])
+  HAVE_ISNANF=1;               AC_SUBST([HAVE_ISNANF])
+  HAVE_ISNAND=1;               AC_SUBST([HAVE_ISNAND])
+  HAVE_ISNANL=1;               AC_SUBST([HAVE_ISNANL])
+  HAVE_LDEXPF=1;               AC_SUBST([HAVE_LDEXPF])
+  HAVE_LOGF=1;                 AC_SUBST([HAVE_LOGF])
+  HAVE_LOGL=1;                 AC_SUBST([HAVE_LOGL])
+  HAVE_LOG10F=1;               AC_SUBST([HAVE_LOG10F])
+  HAVE_LOG10L=1;               AC_SUBST([HAVE_LOG10L])
+  HAVE_LOG1P=1;                AC_SUBST([HAVE_LOG1P])
+  HAVE_LOG1PF=1;               AC_SUBST([HAVE_LOG1PF])
+  HAVE_LOG1PL=1;               AC_SUBST([HAVE_LOG1PL])
+  HAVE_LOGBF=1;                AC_SUBST([HAVE_LOGBF])
+  HAVE_LOGBL=1;                AC_SUBST([HAVE_LOGBL])
+  HAVE_MODFF=1;                AC_SUBST([HAVE_MODFF])
+  HAVE_MODFL=1;                AC_SUBST([HAVE_MODFL])
+  HAVE_POWF=1;                 AC_SUBST([HAVE_POWF])
+  HAVE_REMAINDER=1;            AC_SUBST([HAVE_REMAINDER])
+  HAVE_REMAINDERF=1;           AC_SUBST([HAVE_REMAINDERF])
+  HAVE_RINT=1;                 AC_SUBST([HAVE_RINT])
+  HAVE_RINTL=1;                AC_SUBST([HAVE_RINTL])
+  HAVE_SINF=1;                 AC_SUBST([HAVE_SINF])
+  HAVE_SINL=1;                 AC_SUBST([HAVE_SINL])
+  HAVE_SINHF=1;                AC_SUBST([HAVE_SINHF])
+  HAVE_SQRTF=1;                AC_SUBST([HAVE_SQRTF])
+  HAVE_SQRTL=1;                AC_SUBST([HAVE_SQRTL])
+  HAVE_TANF=1;                 AC_SUBST([HAVE_TANF])
+  HAVE_TANL=1;                 AC_SUBST([HAVE_TANL])
+  HAVE_TANHF=1;                AC_SUBST([HAVE_TANHF])
+  HAVE_DECL_ACOSL=1;           AC_SUBST([HAVE_DECL_ACOSL])
+  HAVE_DECL_ASINL=1;           AC_SUBST([HAVE_DECL_ASINL])
+  HAVE_DECL_ATANL=1;           AC_SUBST([HAVE_DECL_ATANL])
+  HAVE_DECL_CBRTF=1;           AC_SUBST([HAVE_DECL_CBRTF])
+  HAVE_DECL_CBRTL=1;           AC_SUBST([HAVE_DECL_CBRTL])
+  HAVE_DECL_CEILF=1;           AC_SUBST([HAVE_DECL_CEILF])
+  HAVE_DECL_CEILL=1;           AC_SUBST([HAVE_DECL_CEILL])
+  HAVE_DECL_COPYSIGNF=1;       AC_SUBST([HAVE_DECL_COPYSIGNF])
+  HAVE_DECL_COSL=1;            AC_SUBST([HAVE_DECL_COSL])
+  HAVE_DECL_EXPL=1;            AC_SUBST([HAVE_DECL_EXPL])
+  HAVE_DECL_EXP2=1;            AC_SUBST([HAVE_DECL_EXP2])
+  HAVE_DECL_EXP2F=1;           AC_SUBST([HAVE_DECL_EXP2F])
+  HAVE_DECL_EXP2L=1;           AC_SUBST([HAVE_DECL_EXP2L])
+  HAVE_DECL_EXPM1L=1;          AC_SUBST([HAVE_DECL_EXPM1L])
+  HAVE_DECL_FLOORF=1;          AC_SUBST([HAVE_DECL_FLOORF])
+  HAVE_DECL_FLOORL=1;          AC_SUBST([HAVE_DECL_FLOORL])
+  HAVE_DECL_FREXPL=1;          AC_SUBST([HAVE_DECL_FREXPL])
+  HAVE_DECL_LDEXPL=1;          AC_SUBST([HAVE_DECL_LDEXPL])
+  HAVE_DECL_LOGL=1;            AC_SUBST([HAVE_DECL_LOGL])
+  HAVE_DECL_LOG10L=1;          AC_SUBST([HAVE_DECL_LOG10L])
+  HAVE_DECL_LOG2=1;            AC_SUBST([HAVE_DECL_LOG2])
+  HAVE_DECL_LOG2F=1;           AC_SUBST([HAVE_DECL_LOG2F])
+  HAVE_DECL_LOG2L=1;           AC_SUBST([HAVE_DECL_LOG2L])
+  HAVE_DECL_LOGB=1;            AC_SUBST([HAVE_DECL_LOGB])
+  HAVE_DECL_REMAINDER=1;       AC_SUBST([HAVE_DECL_REMAINDER])
+  HAVE_DECL_REMAINDERL=1;      AC_SUBST([HAVE_DECL_REMAINDERL])
+  HAVE_DECL_RINTF=1;           AC_SUBST([HAVE_DECL_RINTF])
+  HAVE_DECL_ROUND=1;           AC_SUBST([HAVE_DECL_ROUND])
+  HAVE_DECL_ROUNDF=1;          AC_SUBST([HAVE_DECL_ROUNDF])
+  HAVE_DECL_ROUNDL=1;          AC_SUBST([HAVE_DECL_ROUNDL])
+  HAVE_DECL_SINL=1;            AC_SUBST([HAVE_DECL_SINL])
+  HAVE_DECL_SQRTL=1;           AC_SUBST([HAVE_DECL_SQRTL])
+  HAVE_DECL_TANL=1;            AC_SUBST([HAVE_DECL_TANL])
+  HAVE_DECL_TRUNC=1;           AC_SUBST([HAVE_DECL_TRUNC])
+  HAVE_DECL_TRUNCF=1;          AC_SUBST([HAVE_DECL_TRUNCF])
+  HAVE_DECL_TRUNCL=1;          AC_SUBST([HAVE_DECL_TRUNCL])
+  REPLACE_ACOSF=0;             AC_SUBST([REPLACE_ACOSF])
+  REPLACE_ASINF=0;             AC_SUBST([REPLACE_ASINF])
+  REPLACE_ATANF=0;             AC_SUBST([REPLACE_ATANF])
+  REPLACE_ATAN2F=0;            AC_SUBST([REPLACE_ATAN2F])
+  REPLACE_CBRTF=0;             AC_SUBST([REPLACE_CBRTF])
+  REPLACE_CBRTL=0;             AC_SUBST([REPLACE_CBRTL])
+  REPLACE_CEIL=0;              AC_SUBST([REPLACE_CEIL])
+  REPLACE_CEILF=0;             AC_SUBST([REPLACE_CEILF])
+  REPLACE_CEILL=0;             AC_SUBST([REPLACE_CEILL])
+  REPLACE_COSF=0;              AC_SUBST([REPLACE_COSF])
+  REPLACE_COSHF=0;             AC_SUBST([REPLACE_COSHF])
+  REPLACE_EXPF=0;              AC_SUBST([REPLACE_EXPF])
+  REPLACE_EXPM1=0;             AC_SUBST([REPLACE_EXPM1])
+  REPLACE_EXPM1F=0;            AC_SUBST([REPLACE_EXPM1F])
+  REPLACE_EXP2=0;              AC_SUBST([REPLACE_EXP2])
+  REPLACE_EXP2L=0;             AC_SUBST([REPLACE_EXP2L])
+  REPLACE_FABSL=0;             AC_SUBST([REPLACE_FABSL])
+  REPLACE_FLOOR=0;             AC_SUBST([REPLACE_FLOOR])
+  REPLACE_FLOORF=0;            AC_SUBST([REPLACE_FLOORF])
+  REPLACE_FLOORL=0;            AC_SUBST([REPLACE_FLOORL])
+  REPLACE_FMA=0;               AC_SUBST([REPLACE_FMA])
+  REPLACE_FMAF=0;              AC_SUBST([REPLACE_FMAF])
+  REPLACE_FMAL=0;              AC_SUBST([REPLACE_FMAL])
+  REPLACE_FMOD=0;              AC_SUBST([REPLACE_FMOD])
+  REPLACE_FMODF=0;             AC_SUBST([REPLACE_FMODF])
+  REPLACE_FMODL=0;             AC_SUBST([REPLACE_FMODL])
+  REPLACE_FREXPF=0;            AC_SUBST([REPLACE_FREXPF])
+  REPLACE_FREXP=0;             AC_SUBST([REPLACE_FREXP])
+  REPLACE_FREXPL=0;            AC_SUBST([REPLACE_FREXPL])
+  REPLACE_HUGE_VAL=0;          AC_SUBST([REPLACE_HUGE_VAL])
+  REPLACE_HYPOT=0;             AC_SUBST([REPLACE_HYPOT])
+  REPLACE_HYPOTF=0;            AC_SUBST([REPLACE_HYPOTF])
+  REPLACE_HYPOTL=0;            AC_SUBST([REPLACE_HYPOTL])
+  REPLACE_ILOGB=0;             AC_SUBST([REPLACE_ILOGB])
+  REPLACE_ILOGBF=0;            AC_SUBST([REPLACE_ILOGBF])
+  REPLACE_ILOGBL=0;            AC_SUBST([REPLACE_ILOGBL])
+  REPLACE_ISFINITE=0;          AC_SUBST([REPLACE_ISFINITE])
+  REPLACE_ISINF=0;             AC_SUBST([REPLACE_ISINF])
+  REPLACE_ISNAN=0;             AC_SUBST([REPLACE_ISNAN])
+  REPLACE_LDEXPL=0;            AC_SUBST([REPLACE_LDEXPL])
+  REPLACE_LOG=0;               AC_SUBST([REPLACE_LOG])
+  REPLACE_LOGF=0;              AC_SUBST([REPLACE_LOGF])
+  REPLACE_LOGL=0;              AC_SUBST([REPLACE_LOGL])
+  REPLACE_LOG10=0;             AC_SUBST([REPLACE_LOG10])
+  REPLACE_LOG10F=0;            AC_SUBST([REPLACE_LOG10F])
+  REPLACE_LOG10L=0;            AC_SUBST([REPLACE_LOG10L])
+  REPLACE_LOG1P=0;             AC_SUBST([REPLACE_LOG1P])
+  REPLACE_LOG1PF=0;            AC_SUBST([REPLACE_LOG1PF])
+  REPLACE_LOG1PL=0;            AC_SUBST([REPLACE_LOG1PL])
+  REPLACE_LOG2=0;              AC_SUBST([REPLACE_LOG2])
+  REPLACE_LOG2F=0;             AC_SUBST([REPLACE_LOG2F])
+  REPLACE_LOG2L=0;             AC_SUBST([REPLACE_LOG2L])
+  REPLACE_LOGB=0;              AC_SUBST([REPLACE_LOGB])
+  REPLACE_LOGBF=0;             AC_SUBST([REPLACE_LOGBF])
+  REPLACE_LOGBL=0;             AC_SUBST([REPLACE_LOGBL])
+  REPLACE_MODF=0;              AC_SUBST([REPLACE_MODF])
+  REPLACE_MODFF=0;             AC_SUBST([REPLACE_MODFF])
+  REPLACE_MODFL=0;             AC_SUBST([REPLACE_MODFL])
+  REPLACE_NAN=0;               AC_SUBST([REPLACE_NAN])
+  REPLACE_REMAINDER=0;         AC_SUBST([REPLACE_REMAINDER])
+  REPLACE_REMAINDERF=0;        AC_SUBST([REPLACE_REMAINDERF])
+  REPLACE_REMAINDERL=0;        AC_SUBST([REPLACE_REMAINDERL])
+  REPLACE_ROUND=0;             AC_SUBST([REPLACE_ROUND])
+  REPLACE_ROUNDF=0;            AC_SUBST([REPLACE_ROUNDF])
+  REPLACE_ROUNDL=0;            AC_SUBST([REPLACE_ROUNDL])
+  REPLACE_SIGNBIT=0;           AC_SUBST([REPLACE_SIGNBIT])
+  REPLACE_SIGNBIT_USING_GCC=0; AC_SUBST([REPLACE_SIGNBIT_USING_GCC])
+  REPLACE_SINF=0;              AC_SUBST([REPLACE_SINF])
+  REPLACE_SINHF=0;             AC_SUBST([REPLACE_SINHF])
+  REPLACE_SQRTF=0;             AC_SUBST([REPLACE_SQRTF])
+  REPLACE_SQRTL=0;             AC_SUBST([REPLACE_SQRTL])
+  REPLACE_TANF=0;              AC_SUBST([REPLACE_TANF])
+  REPLACE_TANHF=0;             AC_SUBST([REPLACE_TANHF])
+  REPLACE_TRUNC=0;             AC_SUBST([REPLACE_TRUNC])
+  REPLACE_TRUNCF=0;            AC_SUBST([REPLACE_TRUNCF])
+  REPLACE_TRUNCL=0;            AC_SUBST([REPLACE_TRUNCL])
+])
+
+# gl_LONG_DOUBLE_VS_DOUBLE
+# determines whether 'long double' and 'double' have the same representation.
+# Sets variable HAVE_SAME_LONG_DOUBLE_AS_DOUBLE to 0 or 1, and defines
+# HAVE_SAME_LONG_DOUBLE_AS_DOUBLE accordingly.
+# The currently known platforms where this is the case are:
+# Linux/HPPA, Minix 3.1.8, AIX 5, AIX 6 and 7 with xlc, MSVC 9.
+AC_DEFUN([gl_LONG_DOUBLE_VS_DOUBLE],
+[
+  AC_CACHE_CHECK([whether long double and double are the same],
+    [gl_cv_long_double_equals_double],
+    [AC_COMPILE_IFELSE(
+       [AC_LANG_PROGRAM([[#include <float.h>]],
+          [[typedef int check[sizeof (long double) == sizeof (double)
+                              && LDBL_MANT_DIG == DBL_MANT_DIG
+                              && LDBL_MAX_EXP == DBL_MAX_EXP
+                              && LDBL_MIN_EXP == DBL_MIN_EXP
+                              ? 1 : -1];
+          ]])],
+       [gl_cv_long_double_equals_double=yes],
+       [gl_cv_long_double_equals_double=no])
+    ])
+  if test $gl_cv_long_double_equals_double = yes; then
+    AC_DEFINE([HAVE_SAME_LONG_DOUBLE_AS_DOUBLE], [1],
+      [Define to 1 if 'long double' and 'double' have the same representation.])
+    HAVE_SAME_LONG_DOUBLE_AS_DOUBLE=1
+  else
+    HAVE_SAME_LONG_DOUBLE_AS_DOUBLE=0
+  fi
+  AC_SUBST([HAVE_SAME_LONG_DOUBLE_AS_DOUBLE])
+])
diff --git a/gnulib_m4/memchr.m4 b/gnulib_m4/memchr.m4
new file mode 100644 (file)
index 0000000..83c65c1
--- /dev/null
@@ -0,0 +1,99 @@
+# memchr.m4 serial 13
+dnl Copyright (C) 2002-2004, 2009-2018 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN_ONCE([gl_FUNC_MEMCHR],
+[
+  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+
+  dnl Check for prerequisites for memory fence checks.
+  gl_FUNC_MMAP_ANON
+  AC_CHECK_HEADERS_ONCE([sys/mman.h])
+  AC_CHECK_FUNCS_ONCE([mprotect])
+
+  AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
+  m4_ifdef([gl_FUNC_MEMCHR_OBSOLETE], [
+    dnl These days, we assume memchr is present.  But if support for old
+    dnl platforms is desired:
+    AC_CHECK_FUNCS_ONCE([memchr])
+    if test $ac_cv_func_memchr = no; then
+      HAVE_MEMCHR=0
+    fi
+  ])
+  if test $HAVE_MEMCHR = 1; then
+    # Detect platform-specific bugs in some versions of glibc:
+    # memchr should not dereference anything with length 0
+    #   https://bugzilla.redhat.com/show_bug.cgi?id=499689
+    # memchr should not dereference overestimated length after a match
+    #   https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=521737
+    #   https://sourceware.org/bugzilla/show_bug.cgi?id=10162
+    # Assume that memchr works on platforms that lack mprotect.
+    AC_CACHE_CHECK([whether memchr works], [gl_cv_func_memchr_works],
+      [AC_RUN_IFELSE([AC_LANG_PROGRAM([[
+#include <string.h>
+#if HAVE_SYS_MMAN_H
+# include <fcntl.h>
+# include <unistd.h>
+# include <sys/types.h>
+# include <sys/mman.h>
+# ifndef MAP_FILE
+#  define MAP_FILE 0
+# endif
+#endif
+]], [[
+  int result = 0;
+  char *fence = NULL;
+#if HAVE_SYS_MMAN_H && HAVE_MPROTECT
+# if HAVE_MAP_ANONYMOUS
+  const int flags = MAP_ANONYMOUS | MAP_PRIVATE;
+  const int fd = -1;
+# else /* !HAVE_MAP_ANONYMOUS */
+  const int flags = MAP_FILE | MAP_PRIVATE;
+  int fd = open ("/dev/zero", O_RDONLY, 0666);
+  if (fd >= 0)
+# endif
+    {
+      int pagesize = getpagesize ();
+      char *two_pages =
+        (char *) mmap (NULL, 2 * pagesize, PROT_READ | PROT_WRITE,
+                       flags, fd, 0);
+      if (two_pages != (char *)(-1)
+          && mprotect (two_pages + pagesize, pagesize, PROT_NONE) == 0)
+        fence = two_pages + pagesize;
+    }
+#endif
+  if (fence)
+    {
+      if (memchr (fence, 0, 0))
+        result |= 1;
+      strcpy (fence - 9, "12345678");
+      if (memchr (fence - 9, 0, 79) != fence - 1)
+        result |= 2;
+      if (memchr (fence - 1, 0, 3) != fence - 1)
+        result |= 4;
+    }
+  return result;
+]])],
+         [gl_cv_func_memchr_works=yes],
+         [gl_cv_func_memchr_works=no],
+         [case "$host_os" in
+                    # Guess yes on native Windows.
+            mingw*) gl_cv_func_memchr_works="guessing yes" ;;
+                    # Be pessimistic for now.
+            *)      gl_cv_func_memchr_works="guessing no" ;;
+          esac
+         ])
+      ])
+    case "$gl_cv_func_memchr_works" in
+      *yes) ;;
+      *) REPLACE_MEMCHR=1 ;;
+    esac
+  fi
+])
+
+# Prerequisites of lib/memchr.c.
+AC_DEFUN([gl_PREREQ_MEMCHR], [
+  AC_CHECK_HEADERS([bp-sym.h])
+])
diff --git a/gnulib_m4/mmap-anon.m4 b/gnulib_m4/mmap-anon.m4
new file mode 100644 (file)
index 0000000..55fea82
--- /dev/null
@@ -0,0 +1,55 @@
+# mmap-anon.m4 serial 10
+dnl Copyright (C) 2005, 2007, 2009-2018 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# Detect how mmap can be used to create anonymous (not file-backed) memory
+# mappings.
+# - On Linux, AIX, OSF/1, Solaris, Cygwin, Interix, Haiku, both MAP_ANONYMOUS
+#   and MAP_ANON exist and have the same value.
+# - On HP-UX, only MAP_ANONYMOUS exists.
+# - On Mac OS X, FreeBSD, NetBSD, OpenBSD, only MAP_ANON exists.
+# - On IRIX, neither exists, and a file descriptor opened to /dev/zero must be
+#   used.
+
+AC_DEFUN([gl_FUNC_MMAP_ANON],
+[
+  dnl Persuade glibc <sys/mman.h> to define MAP_ANONYMOUS.
+  AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+
+  # Check for mmap(). Don't use AC_FUNC_MMAP, because it checks too much: it
+  # fails on HP-UX 11, because MAP_FIXED mappings do not work. But this is
+  # irrelevant for anonymous mappings.
+  AC_CHECK_FUNC([mmap], [gl_have_mmap=yes], [gl_have_mmap=no])
+
+  # Try to allow MAP_ANONYMOUS.
+  gl_have_mmap_anonymous=no
+  if test $gl_have_mmap = yes; then
+    AC_MSG_CHECKING([for MAP_ANONYMOUS])
+    AC_EGREP_CPP([I cannot identify this map], [
+#include <sys/mman.h>
+#ifdef MAP_ANONYMOUS
+    I cannot identify this map
+#endif
+],
+      [gl_have_mmap_anonymous=yes])
+    if test $gl_have_mmap_anonymous != yes; then
+      AC_EGREP_CPP([I cannot identify this map], [
+#include <sys/mman.h>
+#ifdef MAP_ANON
+    I cannot identify this map
+#endif
+],
+        [AC_DEFINE([MAP_ANONYMOUS], [MAP_ANON],
+          [Define to a substitute value for mmap()'s MAP_ANONYMOUS flag.])
+         gl_have_mmap_anonymous=yes])
+    fi
+    AC_MSG_RESULT([$gl_have_mmap_anonymous])
+    if test $gl_have_mmap_anonymous = yes; then
+      AC_DEFINE([HAVE_MAP_ANONYMOUS], [1],
+        [Define to 1 if mmap()'s MAP_ANONYMOUS flag is available after including
+         config.h and <sys/mman.h>.])
+    fi
+  fi
+])
similarity index 97%
rename from src/libs/gnulib/m4/multiarch.m4
rename to gnulib_m4/multiarch.m4
index 2cb956d..38a11cc 100644 (file)
@@ -1,5 +1,5 @@
 # multiarch.m4 serial 7
-dnl Copyright (C) 2008-2014 Free Software Foundation, Inc.
+dnl Copyright (C) 2008-2018 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
 dnl with or without modifications, as long as this notice is preserved.
diff --git a/gnulib_m4/nocrash.m4 b/gnulib_m4/nocrash.m4
new file mode 100644 (file)
index 0000000..4914007
--- /dev/null
@@ -0,0 +1,131 @@
+# nocrash.m4 serial 5
+dnl Copyright (C) 2005, 2009-2018 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl Based on libsigsegv, from Bruno Haible and Paolo Bonzini.
+
+AC_PREREQ([2.13])
+
+dnl Expands to some code for use in .c programs that will cause the configure
+dnl test to exit instead of crashing. This is useful to avoid triggering
+dnl action from a background debugger and to avoid core dumps.
+dnl Usage:   ...
+dnl          ]GL_NOCRASH[
+dnl          ...
+dnl          int main() { nocrash_init(); ... }
+AC_DEFUN([GL_NOCRASH],[[
+#include <stdlib.h>
+#if defined __MACH__ && defined __APPLE__
+/* Avoid a crash on Mac OS X.  */
+#include <mach/mach.h>
+#include <mach/mach_error.h>
+#include <mach/thread_status.h>
+#include <mach/exception.h>
+#include <mach/task.h>
+#include <pthread.h>
+/* The exception port on which our thread listens.  */
+static mach_port_t our_exception_port;
+/* The main function of the thread listening for exceptions of type
+   EXC_BAD_ACCESS.  */
+static void *
+mach_exception_thread (void *arg)
+{
+  /* Buffer for a message to be received.  */
+  struct {
+    mach_msg_header_t head;
+    mach_msg_body_t msgh_body;
+    char data[1024];
+  } msg;
+  mach_msg_return_t retval;
+  /* Wait for a message on the exception port.  */
+  retval = mach_msg (&msg.head, MACH_RCV_MSG | MACH_RCV_LARGE, 0, sizeof (msg),
+                     our_exception_port, MACH_MSG_TIMEOUT_NONE, MACH_PORT_NULL);
+  if (retval != MACH_MSG_SUCCESS)
+    abort ();
+  exit (1);
+}
+static void
+nocrash_init (void)
+{
+  mach_port_t self = mach_task_self ();
+  /* Allocate a port on which the thread shall listen for exceptions.  */
+  if (mach_port_allocate (self, MACH_PORT_RIGHT_RECEIVE, &our_exception_port)
+      == KERN_SUCCESS) {
+    /* See http://web.mit.edu/darwin/src/modules/xnu/osfmk/man/mach_port_insert_right.html.  */
+    if (mach_port_insert_right (self, our_exception_port, our_exception_port,
+                                MACH_MSG_TYPE_MAKE_SEND)
+        == KERN_SUCCESS) {
+      /* The exceptions we want to catch.  Only EXC_BAD_ACCESS is interesting
+         for us.  */
+      exception_mask_t mask = EXC_MASK_BAD_ACCESS;
+      /* Create the thread listening on the exception port.  */
+      pthread_attr_t attr;
+      pthread_t thread;
+      if (pthread_attr_init (&attr) == 0
+          && pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED) == 0
+          && pthread_create (&thread, &attr, mach_exception_thread, NULL) == 0) {
+        pthread_attr_destroy (&attr);
+        /* Replace the exception port info for these exceptions with our own.
+           Note that we replace the exception port for the entire task, not only
+           for a particular thread.  This has the effect that when our exception
+           port gets the message, the thread specific exception port has already
+           been asked, and we don't need to bother about it.
+           See http://web.mit.edu/darwin/src/modules/xnu/osfmk/man/task_set_exception_ports.html.  */
+        task_set_exception_ports (self, mask, our_exception_port,
+                                  EXCEPTION_DEFAULT, MACHINE_THREAD_STATE);
+      }
+    }
+  }
+}
+#elif defined _WIN32 && ! defined __CYGWIN__
+/* Avoid a crash on native Windows.  */
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#include <winerror.h>
+static LONG WINAPI
+exception_filter (EXCEPTION_POINTERS *ExceptionInfo)
+{
+  switch (ExceptionInfo->ExceptionRecord->ExceptionCode)
+    {
+    case EXCEPTION_ACCESS_VIOLATION:
+    case EXCEPTION_IN_PAGE_ERROR:
+    case EXCEPTION_STACK_OVERFLOW:
+    case EXCEPTION_GUARD_PAGE:
+    case EXCEPTION_PRIV_INSTRUCTION:
+    case EXCEPTION_ILLEGAL_INSTRUCTION:
+    case EXCEPTION_DATATYPE_MISALIGNMENT:
+    case EXCEPTION_ARRAY_BOUNDS_EXCEEDED:
+    case EXCEPTION_NONCONTINUABLE_EXCEPTION:
+      exit (1);
+    }
+  return EXCEPTION_CONTINUE_SEARCH;
+}
+static void
+nocrash_init (void)
+{
+  SetUnhandledExceptionFilter ((LPTOP_LEVEL_EXCEPTION_FILTER) exception_filter);
+}
+#else
+/* Avoid a crash on POSIX systems.  */
+#include <signal.h>
+#include <unistd.h>
+/* A POSIX signal handler.  */
+static void
+exception_handler (int sig)
+{
+  _exit (1);
+}
+static void
+nocrash_init (void)
+{
+#ifdef SIGSEGV
+  signal (SIGSEGV, exception_handler);
+#endif
+#ifdef SIGBUS
+  signal (SIGBUS, exception_handler);
+#endif
+}
+#endif
+]])
diff --git a/gnulib_m4/non-recursive-gnulib-prefix-hack.m4 b/gnulib_m4/non-recursive-gnulib-prefix-hack.m4
new file mode 100644 (file)
index 0000000..d2cb9e7
--- /dev/null
@@ -0,0 +1,32 @@
+dnl Copyright (C) 2012-2018 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl gl_NON_RECURSIVE_GNULIB_PREFIX_HACK LIB_DIR
+dnl Adjust configure-set $gl_LIBOBJS and each AC_SUBST'd *_H variable
+dnl with a value ending in ".h" to reflect that these files are located
+dnl in the directory specified by LIB_DIR.
+AC_DEFUN([gl_NON_RECURSIVE_GNULIB_PREFIX_HACK],
+[
+  # Tell AC_LIBSOURCES where to find source files like alloca.c.
+  AC_CONFIG_LIBOBJ_DIR([$1])
+
+  # This hack originated in bison.  It is required when using non-recursive
+  # automake rules to build from gnulib-provided lib/ sources.  Hence, LIB_DIR
+  # is usually simply "lib".  Those rules use the list of names like "fchdir.o"
+  # and "strstr.o" in gl_LIBOBJS.  With non-recursive make, we must prefix each
+  # such file name with the "lib/" prefix.  See also build-aux/prefix-gnulib-mk.
+  gl_LIBOBJS=`echo "$gl_LIBOBJS" | sed -e 's, , $1/,g'`
+
+  # Listing the names of the variables to prefix is error-prone.
+  # Rather, adjust each AC_SUBST'd variable whose name ends in '_H'
+  # and whose value ends in '.h'.
+  for ac_var in $ac_subst_vars
+  do
+    eval "ac_val=\$$ac_var"
+    case $ac_var:$ac_val in
+      *_H:*.h) eval "$ac_var=$1/\$$ac_var";;
+    esac
+  done
+])
diff --git a/gnulib_m4/off_t.m4 b/gnulib_m4/off_t.m4
new file mode 100644 (file)
index 0000000..f4d5787
--- /dev/null
@@ -0,0 +1,18 @@
+# off_t.m4 serial 1
+dnl Copyright (C) 2012-2018 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl Check whether to override the 'off_t' type.
+dnl Set WINDOWS_64_BIT_OFF_T.
+
+AC_DEFUN([gl_TYPE_OFF_T],
+[
+  m4_ifdef([gl_LARGEFILE], [
+    AC_REQUIRE([gl_LARGEFILE])
+  ], [
+    WINDOWS_64_BIT_OFF_T=0
+  ])
+  AC_SUBST([WINDOWS_64_BIT_OFF_T])
+])
diff --git a/gnulib_m4/printf-frexp.m4 b/gnulib_m4/printf-frexp.m4
new file mode 100644 (file)
index 0000000..e730825
--- /dev/null
@@ -0,0 +1,38 @@
+# printf-frexp.m4 serial 5
+dnl Copyright (C) 2007, 2009-2018 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl Check how to define printf_frexp() without linking with libm.
+
+AC_DEFUN([gl_FUNC_PRINTF_FREXP],
+[
+  AC_REQUIRE([gl_CHECK_FREXP_NO_LIBM])
+  if test $gl_cv_func_frexp_no_libm = yes; then
+    gl_FUNC_FREXP_WORKS
+    case "$gl_cv_func_frexp_works" in
+      *yes)
+        AC_DEFINE([HAVE_FREXP_IN_LIBC], [1],
+          [Define if the frexp function is available in libc.])
+        ;;
+    esac
+  fi
+
+  AC_CACHE_CHECK([whether ldexp can be used without linking with libm],
+    [gl_cv_func_ldexp_no_libm],
+    [
+      AC_LINK_IFELSE(
+        [AC_LANG_PROGRAM(
+           [[#include <math.h>
+             double x;
+             int y;]],
+           [[return ldexp (x, y) < 1;]])],
+        [gl_cv_func_ldexp_no_libm=yes],
+        [gl_cv_func_ldexp_no_libm=no])
+    ])
+  if test $gl_cv_func_ldexp_no_libm = yes; then
+    AC_DEFINE([HAVE_LDEXP_IN_LIBC], [1],
+      [Define if the ldexp function is available in libc.])
+  fi
+])
diff --git a/gnulib_m4/printf-frexpl.m4 b/gnulib_m4/printf-frexpl.m4
new file mode 100644 (file)
index 0000000..cb8ac45
--- /dev/null
@@ -0,0 +1,48 @@
+# printf-frexpl.m4 serial 10
+dnl Copyright (C) 2007, 2009-2018 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl Check how to define printf_frexpl() without linking with libm.
+
+AC_DEFUN([gl_FUNC_PRINTF_FREXPL],
+[
+  AC_REQUIRE([gl_MATH_H_DEFAULTS])
+  AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE])
+
+  dnl Subset of gl_FUNC_FREXPL_NO_LIBM.
+  gl_CHECK_FREXPL_NO_LIBM
+  if test $gl_cv_func_frexpl_no_libm = yes; then
+    gl_FUNC_FREXPL_WORKS
+    case "$gl_cv_func_frexpl_works" in
+      *yes) gl_func_frexpl_no_libm=yes ;;
+      *)    gl_func_frexpl_no_libm=no; REPLACE_FREXPL=1 ;;
+    esac
+  else
+    gl_func_frexpl_no_libm=no
+    dnl Set REPLACE_FREXPL here because the system may have frexpl in libm.
+    REPLACE_FREXPL=1
+  fi
+  if test $gl_func_frexpl_no_libm = yes; then
+    AC_DEFINE([HAVE_FREXPL_IN_LIBC], [1],
+      [Define if the frexpl function is available in libc.])
+    dnl Also check whether it's declared.
+    dnl Mac OS X 10.3 has frexpl() in libc but doesn't declare it in <math.h>.
+    AC_CHECK_DECL([frexpl], , [HAVE_DECL_FREXPL=0], [[#include <math.h>]])
+  fi
+
+  gl_CHECK_LDEXPL_NO_LIBM
+  if test $gl_cv_func_ldexpl_no_libm = yes; then
+    gl_FUNC_LDEXPL_WORKS
+    case "$gl_cv_func_ldexpl_works" in
+      *yes)
+        AC_DEFINE([HAVE_LDEXPL_IN_LIBC], [1],
+          [Define if the ldexpl function is available in libc.])
+        dnl Also check whether it's declared.
+        dnl Mac OS X 10.3 has ldexpl() in libc but doesn't declare it in <math.h>.
+        AC_CHECK_DECL([ldexpl], , [HAVE_DECL_LDEXPL=0], [[#include <math.h>]])
+        ;;
+    esac
+  fi
+])
diff --git a/gnulib_m4/printf.m4 b/gnulib_m4/printf.m4
new file mode 100644 (file)
index 0000000..82f48bf
--- /dev/null
@@ -0,0 +1,1631 @@
+# printf.m4 serial 58
+dnl Copyright (C) 2003, 2007-2018 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl Test whether the *printf family of functions supports the 'j', 'z', 't',
+dnl 'L' size specifiers. (ISO C99, POSIX:2001)
+dnl Result is gl_cv_func_printf_sizes_c99.
+
+AC_DEFUN([gl_PRINTF_SIZES_C99],
+[
+  AC_REQUIRE([AC_PROG_CC])
+  AC_REQUIRE([gl_AC_HEADER_STDINT_H])
+  AC_REQUIRE([gl_AC_HEADER_INTTYPES_H])
+  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+  AC_CACHE_CHECK([whether printf supports size specifiers as in C99],
+    [gl_cv_func_printf_sizes_c99],
+    [
+      AC_RUN_IFELSE(
+        [AC_LANG_SOURCE([[
+#include <stddef.h>
+#include <stdio.h>
+#include <string.h>
+#include <sys/types.h>
+#if HAVE_STDINT_H_WITH_UINTMAX
+# include <stdint.h>
+#endif
+#if HAVE_INTTYPES_H_WITH_UINTMAX
+# include <inttypes.h>
+#endif
+static char buf[100];
+int main ()
+{
+  int result = 0;
+#if HAVE_STDINT_H_WITH_UINTMAX || HAVE_INTTYPES_H_WITH_UINTMAX
+  buf[0] = '\0';
+  if (sprintf (buf, "%ju %d", (uintmax_t) 12345671, 33, 44, 55) < 0
+      || strcmp (buf, "12345671 33") != 0)
+    result |= 1;
+#else
+  result |= 1;
+#endif
+  buf[0] = '\0';
+  if (sprintf (buf, "%zu %d", (size_t) 12345672, 33, 44, 55) < 0
+      || strcmp (buf, "12345672 33") != 0)
+    result |= 2;
+  buf[0] = '\0';
+  if (sprintf (buf, "%tu %d", (ptrdiff_t) 12345673, 33, 44, 55) < 0
+      || strcmp (buf, "12345673 33") != 0)
+    result |= 4;
+  buf[0] = '\0';
+  if (sprintf (buf, "%Lg %d", (long double) 1.5, 33, 44, 55) < 0
+      || strcmp (buf, "1.5 33") != 0)
+    result |= 8;
+  return result;
+}]])],
+        [gl_cv_func_printf_sizes_c99=yes],
+        [gl_cv_func_printf_sizes_c99=no],
+        [
+         case "$host_os" in
+changequote(,)dnl
+                                 # Guess yes on glibc systems.
+           *-gnu* | gnu*)        gl_cv_func_printf_sizes_c99="guessing yes";;
+                                 # Guess yes on FreeBSD >= 5.
+           freebsd[1-4].*)       gl_cv_func_printf_sizes_c99="guessing no";;
+           freebsd* | kfreebsd*) gl_cv_func_printf_sizes_c99="guessing yes";;
+                                 # Guess yes on Mac OS X >= 10.3.
+           darwin[1-6].*)        gl_cv_func_printf_sizes_c99="guessing no";;
+           darwin*)              gl_cv_func_printf_sizes_c99="guessing yes";;
+                                 # Guess yes on OpenBSD >= 3.9.
+           openbsd[1-2].* | openbsd3.[0-8] | openbsd3.[0-8].*)
+                                 gl_cv_func_printf_sizes_c99="guessing no";;
+           openbsd*)             gl_cv_func_printf_sizes_c99="guessing yes";;
+                                 # Guess yes on Solaris >= 2.10.
+           solaris2.[1-9][0-9]*) gl_cv_func_printf_sizes_c99="guessing yes";;
+           solaris*)             gl_cv_func_printf_sizes_c99="guessing no";;
+                                 # Guess yes on NetBSD >= 3.
+           netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*)
+                                 gl_cv_func_printf_sizes_c99="guessing no";;
+           netbsd*)              gl_cv_func_printf_sizes_c99="guessing yes";;
+changequote([,])dnl
+                                 # Guess yes on MSVC, no on mingw.
+           mingw*)               AC_EGREP_CPP([Known], [
+#ifdef _MSC_VER
+ Known
+#endif
+                                   ],
+                                   [gl_cv_func_printf_sizes_c99="guessing yes"],
+                                   [gl_cv_func_printf_sizes_c99="guessing no"])
+                                 ;;
+                                 # If we don't know, assume the worst.
+           *)                    gl_cv_func_printf_sizes_c99="guessing no";;
+         esac
+        ])
+    ])
+])
+
+dnl Test whether the *printf family of functions supports 'long double'
+dnl arguments together with the 'L' size specifier. (ISO C99, POSIX:2001)
+dnl Result is gl_cv_func_printf_long_double.
+
+AC_DEFUN([gl_PRINTF_LONG_DOUBLE],
+[
+  AC_REQUIRE([AC_PROG_CC])
+  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+  AC_CACHE_CHECK([whether printf supports 'long double' arguments],
+    [gl_cv_func_printf_long_double],
+    [
+      AC_RUN_IFELSE(
+        [AC_LANG_SOURCE([[
+#include <stdio.h>
+#include <string.h>
+static char buf[10000];
+int main ()
+{
+  int result = 0;
+  buf[0] = '\0';
+  if (sprintf (buf, "%Lf %d", 1.75L, 33, 44, 55) < 0
+      || strcmp (buf, "1.750000 33") != 0)
+    result |= 1;
+  buf[0] = '\0';
+  if (sprintf (buf, "%Le %d", 1.75L, 33, 44, 55) < 0
+      || strcmp (buf, "1.750000e+00 33") != 0)
+    result |= 2;
+  buf[0] = '\0';
+  if (sprintf (buf, "%Lg %d", 1.75L, 33, 44, 55) < 0
+      || strcmp (buf, "1.75 33") != 0)
+    result |= 4;
+  return result;
+}]])],
+        [gl_cv_func_printf_long_double=yes],
+        [gl_cv_func_printf_long_double=no],
+        [case "$host_os" in
+           beos*)  gl_cv_func_printf_long_double="guessing no";;
+                   # Guess yes on MSVC, no on mingw.
+           mingw*) AC_EGREP_CPP([Known], [
+#ifdef _MSC_VER
+ Known
+#endif
+                     ],
+                     [gl_cv_func_printf_long_double="guessing yes"],
+                     [gl_cv_func_printf_long_double="guessing no"])
+                   ;;
+           *)      gl_cv_func_printf_long_double="guessing yes";;
+         esac
+        ])
+    ])
+])
+
+dnl Test whether the *printf family of functions supports infinite and NaN
+dnl 'double' arguments and negative zero arguments in the %f, %e, %g
+dnl directives. (ISO C99, POSIX:2001)
+dnl Result is gl_cv_func_printf_infinite.
+
+AC_DEFUN([gl_PRINTF_INFINITE],
+[
+  AC_REQUIRE([AC_PROG_CC])
+  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+  AC_CACHE_CHECK([whether printf supports infinite 'double' arguments],
+    [gl_cv_func_printf_infinite],
+    [
+      AC_RUN_IFELSE(
+        [AC_LANG_SOURCE([[
+#include <stdio.h>
+#include <string.h>
+static int
+strisnan (const char *string, size_t start_index, size_t end_index)
+{
+  if (start_index < end_index)
+    {
+      if (string[start_index] == '-')
+        start_index++;
+      if (start_index + 3 <= end_index
+          && memcmp (string + start_index, "nan", 3) == 0)
+        {
+          start_index += 3;
+          if (start_index == end_index
+              || (string[start_index] == '(' && string[end_index - 1] == ')'))
+            return 1;
+        }
+    }
+  return 0;
+}
+static int
+have_minus_zero ()
+{
+  static double plus_zero = 0.0;
+  double minus_zero = - plus_zero;
+  return memcmp (&plus_zero, &minus_zero, sizeof (double)) != 0;
+}
+static char buf[10000];
+static double zero = 0.0;
+int main ()
+{
+  int result = 0;
+  if (sprintf (buf, "%f", 1.0 / zero) < 0
+      || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0))
+    result |= 1;
+  if (sprintf (buf, "%f", -1.0 / zero) < 0
+      || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0))
+    result |= 1;
+  if (sprintf (buf, "%f", zero / zero) < 0
+      || !strisnan (buf, 0, strlen (buf)))
+    result |= 2;
+  if (sprintf (buf, "%e", 1.0 / zero) < 0
+      || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0))
+    result |= 4;
+  if (sprintf (buf, "%e", -1.0 / zero) < 0
+      || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0))
+    result |= 4;
+  if (sprintf (buf, "%e", zero / zero) < 0
+      || !strisnan (buf, 0, strlen (buf)))
+    result |= 8;
+  if (sprintf (buf, "%g", 1.0 / zero) < 0
+      || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0))
+    result |= 16;
+  if (sprintf (buf, "%g", -1.0 / zero) < 0
+      || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0))
+    result |= 16;
+  if (sprintf (buf, "%g", zero / zero) < 0
+      || !strisnan (buf, 0, strlen (buf)))
+    result |= 32;
+  /* This test fails on HP-UX 10.20.  */
+  if (have_minus_zero ())
+    if (sprintf (buf, "%g", - zero) < 0
+        || strcmp (buf, "-0") != 0)
+    result |= 64;
+  return result;
+}]])],
+        [gl_cv_func_printf_infinite=yes],
+        [gl_cv_func_printf_infinite=no],
+        [
+         case "$host_os" in
+changequote(,)dnl
+                                 # Guess yes on glibc systems.
+           *-gnu* | gnu*)        gl_cv_func_printf_infinite="guessing yes";;
+                                 # Guess yes on FreeBSD >= 6.
+           freebsd[1-5].*)       gl_cv_func_printf_infinite="guessing no";;
+           freebsd* | kfreebsd*) gl_cv_func_printf_infinite="guessing yes";;
+                                 # Guess yes on Mac OS X >= 10.3.
+           darwin[1-6].*)        gl_cv_func_printf_infinite="guessing no";;
+           darwin*)              gl_cv_func_printf_infinite="guessing yes";;
+                                 # Guess yes on HP-UX >= 11.
+           hpux[7-9]* | hpux10*) gl_cv_func_printf_infinite="guessing no";;
+           hpux*)                gl_cv_func_printf_infinite="guessing yes";;
+                                 # Guess yes on NetBSD >= 3.
+           netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*)
+                                 gl_cv_func_printf_infinite="guessing no";;
+           netbsd*)              gl_cv_func_printf_infinite="guessing yes";;
+                                 # Guess yes on BeOS.
+           beos*)                gl_cv_func_printf_infinite="guessing yes";;
+changequote([,])dnl
+                                 # Guess yes on MSVC, no on mingw.
+           mingw*)               AC_EGREP_CPP([Known], [
+#ifdef _MSC_VER
+ Known
+#endif
+                                   ],
+                                   [gl_cv_func_printf_infinite="guessing yes"],
+                                   [gl_cv_func_printf_infinite="guessing no"])
+                                 ;;
+                                 # If we don't know, assume the worst.
+           *)                    gl_cv_func_printf_infinite="guessing no";;
+         esac
+        ])
+    ])
+])
+
+dnl Test whether the *printf family of functions supports infinite and NaN
+dnl 'long double' arguments in the %f, %e, %g directives. (ISO C99, POSIX:2001)
+dnl Result is gl_cv_func_printf_infinite_long_double.
+
+AC_DEFUN([gl_PRINTF_INFINITE_LONG_DOUBLE],
+[
+  AC_REQUIRE([gl_PRINTF_LONG_DOUBLE])
+  AC_REQUIRE([AC_PROG_CC])
+  AC_REQUIRE([gl_BIGENDIAN])
+  AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE])
+  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+  dnl The user can set or unset the variable gl_printf_safe to indicate
+  dnl that he wishes a safe handling of non-IEEE-754 'long double' values.
+  if test -n "$gl_printf_safe"; then
+    AC_DEFINE([CHECK_PRINTF_SAFE], [1],
+      [Define if you wish *printf() functions that have a safe handling of
+       non-IEEE-754 'long double' values.])
+  fi
+  case "$gl_cv_func_printf_long_double" in
+    *yes)
+      AC_CACHE_CHECK([whether printf supports infinite 'long double' arguments],
+        [gl_cv_func_printf_infinite_long_double],
+        [
+          AC_RUN_IFELSE(
+            [AC_LANG_SOURCE([[
+]GL_NOCRASH[
+#include <float.h>
+#include <stdio.h>
+#include <string.h>
+static int
+strisnan (const char *string, size_t start_index, size_t end_index)
+{
+  if (start_index < end_index)
+    {
+      if (string[start_index] == '-')
+        start_index++;
+      if (start_index + 3 <= end_index
+          && memcmp (string + start_index, "nan", 3) == 0)
+        {
+          start_index += 3;
+          if (start_index == end_index
+              || (string[start_index] == '(' && string[end_index - 1] == ')'))
+            return 1;
+        }
+    }
+  return 0;
+}
+static char buf[10000];
+static long double zeroL = 0.0L;
+int main ()
+{
+  int result = 0;
+  nocrash_init();
+  if (sprintf (buf, "%Lf", 1.0L / zeroL) < 0
+      || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0))
+    result |= 1;
+  if (sprintf (buf, "%Lf", -1.0L / zeroL) < 0
+      || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0))
+    result |= 1;
+  if (sprintf (buf, "%Lf", zeroL / zeroL) < 0
+      || !strisnan (buf, 0, strlen (buf)))
+    result |= 1;
+  if (sprintf (buf, "%Le", 1.0L / zeroL) < 0
+      || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0))
+    result |= 1;
+  if (sprintf (buf, "%Le", -1.0L / zeroL) < 0
+      || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0))
+    result |= 1;
+  if (sprintf (buf, "%Le", zeroL / zeroL) < 0
+      || !strisnan (buf, 0, strlen (buf)))
+    result |= 1;
+  if (sprintf (buf, "%Lg", 1.0L / zeroL) < 0
+      || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0))
+    result |= 1;
+  if (sprintf (buf, "%Lg", -1.0L / zeroL) < 0
+      || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0))
+    result |= 1;
+  if (sprintf (buf, "%Lg", zeroL / zeroL) < 0
+      || !strisnan (buf, 0, strlen (buf)))
+    result |= 1;
+#if CHECK_PRINTF_SAFE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) && !HAVE_SAME_LONG_DOUBLE_AS_DOUBLE
+/* Representation of an 80-bit 'long double' as an initializer for a sequence
+   of 'unsigned int' words.  */
+# ifdef WORDS_BIGENDIAN
+#  define LDBL80_WORDS(exponent,manthi,mantlo) \
+     { ((unsigned int) (exponent) << 16) | ((unsigned int) (manthi) >> 16), \
+       ((unsigned int) (manthi) << 16) | ((unsigned int) (mantlo) >> 16),   \
+       (unsigned int) (mantlo) << 16                                        \
+     }
+# else
+#  define LDBL80_WORDS(exponent,manthi,mantlo) \
+     { mantlo, manthi, exponent }
+# endif
+  { /* Quiet NaN.  */
+    static union { unsigned int word[4]; long double value; } x =
+      { LDBL80_WORDS (0xFFFF, 0xC3333333, 0x00000000) };
+    if (sprintf (buf, "%Lf", x.value) < 0
+        || !strisnan (buf, 0, strlen (buf)))
+      result |= 2;
+    if (sprintf (buf, "%Le", x.value) < 0
+        || !strisnan (buf, 0, strlen (buf)))
+      result |= 2;
+    if (sprintf (buf, "%Lg", x.value) < 0
+        || !strisnan (buf, 0, strlen (buf)))
+      result |= 2;
+  }
+  {
+    /* Signalling NaN.  */
+    static union { unsigned int word[4]; long double value; } x =
+      { LDBL80_WORDS (0xFFFF, 0x83333333, 0x00000000) };
+    if (sprintf (buf, "%Lf", x.value) < 0
+        || !strisnan (buf, 0, strlen (buf)))
+      result |= 2;
+    if (sprintf (buf, "%Le", x.value) < 0
+        || !strisnan (buf, 0, strlen (buf)))
+      result |= 2;
+    if (sprintf (buf, "%Lg", x.value) < 0
+        || !strisnan (buf, 0, strlen (buf)))
+      result |= 2;
+  }
+  { /* Pseudo-NaN.  */
+    static union { unsigned int word[4]; long double value; } x =
+      { LDBL80_WORDS (0xFFFF, 0x40000001, 0x00000000) };
+    if (sprintf (buf, "%Lf", x.value) <= 0)
+      result |= 4;
+    if (sprintf (buf, "%Le", x.value) <= 0)
+      result |= 4;
+    if (sprintf (buf, "%Lg", x.value) <= 0)
+      result |= 4;
+  }
+  { /* Pseudo-Infinity.  */
+    static union { unsigned int word[4]; long double value; } x =
+      { LDBL80_WORDS (0xFFFF, 0x00000000, 0x00000000) };
+    if (sprintf (buf, "%Lf", x.value) <= 0)
+      result |= 8;
+    if (sprintf (buf, "%Le", x.value) <= 0)
+      result |= 8;
+    if (sprintf (buf, "%Lg", x.value) <= 0)
+      result |= 8;
+  }
+  { /* Pseudo-Zero.  */
+    static union { unsigned int word[4]; long double value; } x =
+      { LDBL80_WORDS (0x4004, 0x00000000, 0x00000000) };
+    if (sprintf (buf, "%Lf", x.value) <= 0)
+      result |= 16;
+    if (sprintf (buf, "%Le", x.value) <= 0)
+      result |= 16;
+    if (sprintf (buf, "%Lg", x.value) <= 0)
+      result |= 16;
+  }
+  { /* Unnormalized number.  */
+    static union { unsigned int word[4]; long double value; } x =
+      { LDBL80_WORDS (0x4000, 0x63333333, 0x00000000) };
+    if (sprintf (buf, "%Lf", x.value) <= 0)
+      result |= 32;
+    if (sprintf (buf, "%Le", x.value) <= 0)
+      result |= 32;
+    if (sprintf (buf, "%Lg", x.value) <= 0)
+      result |= 32;
+  }
+  { /* Pseudo-Denormal.  */
+    static union { unsigned int word[4]; long double value; } x =
+      { LDBL80_WORDS (0x0000, 0x83333333, 0x00000000) };
+    if (sprintf (buf, "%Lf", x.value) <= 0)
+      result |= 64;
+    if (sprintf (buf, "%Le", x.value) <= 0)
+      result |= 64;
+    if (sprintf (buf, "%Lg", x.value) <= 0)
+      result |= 64;
+  }
+#endif
+  return result;
+}]])],
+            [gl_cv_func_printf_infinite_long_double=yes],
+            [gl_cv_func_printf_infinite_long_double=no],
+            [case "$host_cpu" in
+                                     # Guess no on ia64, x86_64, i386.
+               ia64 | x86_64 | i*86) gl_cv_func_printf_infinite_long_double="guessing no";;
+               *)
+                 case "$host_os" in
+changequote(,)dnl
+                                         # Guess yes on glibc systems.
+                   *-gnu* | gnu*)        gl_cv_func_printf_infinite_long_double="guessing yes";;
+                                         # Guess yes on FreeBSD >= 6.
+                   freebsd[1-5].*)       gl_cv_func_printf_infinite_long_double="guessing no";;
+                   freebsd* | kfreebsd*) gl_cv_func_printf_infinite_long_double="guessing yes";;
+                                         # Guess yes on HP-UX >= 11.
+                   hpux[7-9]* | hpux10*) gl_cv_func_printf_infinite_long_double="guessing no";;
+                   hpux*)                gl_cv_func_printf_infinite_long_double="guessing yes";;
+changequote([,])dnl
+                                         # Guess yes on MSVC, no on mingw.
+                   mingw*)               AC_EGREP_CPP([Known], [
+#ifdef _MSC_VER
+ Known
+#endif
+                                           ],
+                                           [gl_cv_func_printf_infinite_long_double="guessing yes"],
+                                           [gl_cv_func_printf_infinite_long_double="guessing no"])
+                                         ;;
+                                         # If we don't know, assume the worst.
+                   *)                    gl_cv_func_printf_infinite_long_double="guessing no";;
+                 esac
+                 ;;
+             esac
+            ])
+        ])
+      ;;
+    *)
+      gl_cv_func_printf_infinite_long_double="irrelevant"
+      ;;
+  esac
+])
+
+dnl Test whether the *printf family of functions supports the 'a' and 'A'
+dnl conversion specifier for hexadecimal output of floating-point numbers.
+dnl (ISO C99, POSIX:2001)
+dnl Result is gl_cv_func_printf_directive_a.
+
+AC_DEFUN([gl_PRINTF_DIRECTIVE_A],
+[
+  AC_REQUIRE([AC_PROG_CC])
+  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+  AC_CACHE_CHECK([whether printf supports the 'a' and 'A' directives],
+    [gl_cv_func_printf_directive_a],
+    [
+      AC_RUN_IFELSE(
+        [AC_LANG_SOURCE([[
+#include <stdio.h>
+#include <string.h>
+static char buf[100];
+static double zero = 0.0;
+int main ()
+{
+  int result = 0;
+  if (sprintf (buf, "%a %d", 3.1416015625, 33, 44, 55) < 0
+      || (strcmp (buf, "0x1.922p+1 33") != 0
+          && strcmp (buf, "0x3.244p+0 33") != 0
+          && strcmp (buf, "0x6.488p-1 33") != 0
+          && strcmp (buf, "0xc.91p-2 33") != 0))
+    result |= 1;
+  if (sprintf (buf, "%A %d", -3.1416015625, 33, 44, 55) < 0
+      || (strcmp (buf, "-0X1.922P+1 33") != 0
+          && strcmp (buf, "-0X3.244P+0 33") != 0
+          && strcmp (buf, "-0X6.488P-1 33") != 0
+          && strcmp (buf, "-0XC.91P-2 33") != 0))
+    result |= 2;
+  /* This catches a FreeBSD 6.1 bug: it doesn't round.  */
+  if (sprintf (buf, "%.2a %d", 1.51, 33, 44, 55) < 0
+      || (strcmp (buf, "0x1.83p+0 33") != 0
+          && strcmp (buf, "0x3.05p-1 33") != 0
+          && strcmp (buf, "0x6.0ap-2 33") != 0
+          && strcmp (buf, "0xc.14p-3 33") != 0))
+    result |= 4;
+  /* This catches a Mac OS X 10.12.4 (Darwin 16.5) bug: it doesn't round.  */
+  if (sprintf (buf, "%.0a %d", 1.51, 33, 44, 55) < 0
+      || (strcmp (buf, "0x2p+0 33") != 0
+          && strcmp (buf, "0x3p-1 33") != 0
+          && strcmp (buf, "0x6p-2 33") != 0
+          && strcmp (buf, "0xcp-3 33") != 0))
+    result |= 4;
+  /* This catches a FreeBSD 6.1 bug.  See
+     <https://lists.gnu.org/r/bug-gnulib/2007-04/msg00107.html> */
+  if (sprintf (buf, "%010a %d", 1.0 / zero, 33, 44, 55) < 0
+      || buf[0] == '0')
+    result |= 8;
+  /* This catches a Mac OS X 10.3.9 (Darwin 7.9) bug.  */
+  if (sprintf (buf, "%.1a", 1.999) < 0
+      || (strcmp (buf, "0x1.0p+1") != 0
+          && strcmp (buf, "0x2.0p+0") != 0
+          && strcmp (buf, "0x4.0p-1") != 0
+          && strcmp (buf, "0x8.0p-2") != 0))
+    result |= 16;
+  /* This catches the same Mac OS X 10.3.9 (Darwin 7.9) bug and also a
+     glibc 2.4 bug <https://sourceware.org/bugzilla/show_bug.cgi?id=2908>.  */
+  if (sprintf (buf, "%.1La", 1.999L) < 0
+      || (strcmp (buf, "0x1.0p+1") != 0
+          && strcmp (buf, "0x2.0p+0") != 0
+          && strcmp (buf, "0x4.0p-1") != 0
+          && strcmp (buf, "0x8.0p-2") != 0))
+    result |= 32;
+  return result;
+}]])],
+        [gl_cv_func_printf_directive_a=yes],
+        [gl_cv_func_printf_directive_a=no],
+        [
+         case "$host_os" in
+                                 # Guess yes on glibc >= 2.5 systems.
+           *-gnu* | gnu*)
+             AC_EGREP_CPP([BZ2908], [
+               #include <features.h>
+               #ifdef __GNU_LIBRARY__
+                #if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 5) || (__GLIBC__ > 2)) && !defined __UCLIBC__
+                 BZ2908
+                #endif
+               #endif
+               ],
+               [gl_cv_func_printf_directive_a="guessing yes"],
+               [gl_cv_func_printf_directive_a="guessing no"])
+             ;;
+                                 # Guess no on native Windows.
+           mingw*)               gl_cv_func_printf_directive_a="guessing no";;
+                                 # If we don't know, assume the worst.
+           *)                    gl_cv_func_printf_directive_a="guessing no";;
+         esac
+        ])
+    ])
+])
+
+dnl Test whether the *printf family of functions supports the %F format
+dnl directive. (ISO C99, POSIX:2001)
+dnl Result is gl_cv_func_printf_directive_f.
+
+AC_DEFUN([gl_PRINTF_DIRECTIVE_F],
+[
+  AC_REQUIRE([AC_PROG_CC])
+  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+  AC_CACHE_CHECK([whether printf supports the 'F' directive],
+    [gl_cv_func_printf_directive_f],
+    [
+      AC_RUN_IFELSE(
+        [AC_LANG_SOURCE([[
+#include <stdio.h>
+#include <string.h>
+static char buf[100];
+static double zero = 0.0;
+int main ()
+{
+  int result = 0;
+  if (sprintf (buf, "%F %d", 1234567.0, 33, 44, 55) < 0
+      || strcmp (buf, "1234567.000000 33") != 0)
+    result |= 1;
+  if (sprintf (buf, "%F", 1.0 / zero) < 0
+      || (strcmp (buf, "INF") != 0 && strcmp (buf, "INFINITY") != 0))
+    result |= 2;
+  /* This catches a Cygwin 1.5.x bug.  */
+  if (sprintf (buf, "%.F", 1234.0) < 0
+      || strcmp (buf, "1234") != 0)
+    result |= 4;
+  return result;
+}]])],
+        [gl_cv_func_printf_directive_f=yes],
+        [gl_cv_func_printf_directive_f=no],
+        [
+         case "$host_os" in
+changequote(,)dnl
+                                 # Guess yes on glibc systems.
+           *-gnu* | gnu*)        gl_cv_func_printf_directive_f="guessing yes";;
+                                 # Guess yes on FreeBSD >= 6.
+           freebsd[1-5].*)       gl_cv_func_printf_directive_f="guessing no";;
+           freebsd* | kfreebsd*) gl_cv_func_printf_directive_f="guessing yes";;
+                                 # Guess yes on Mac OS X >= 10.3.
+           darwin[1-6].*)        gl_cv_func_printf_directive_f="guessing no";;
+           darwin*)              gl_cv_func_printf_directive_f="guessing yes";;
+                                 # Guess yes on Solaris >= 2.10.
+           solaris2.[1-9][0-9]*) gl_cv_func_printf_directive_f="guessing yes";;
+           solaris*)             gl_cv_func_printf_directive_f="guessing no";;
+changequote([,])dnl
+                                 # Guess yes on MSVC, no on mingw.
+           mingw*)               AC_EGREP_CPP([Known], [
+#ifdef _MSC_VER
+ Known
+#endif
+                                   ],
+                                   [gl_cv_func_printf_directive_f="guessing yes"],
+                                   [gl_cv_func_printf_directive_f="guessing no"])
+                                 ;;
+                                 # If we don't know, assume the worst.
+           *)                    gl_cv_func_printf_directive_f="guessing no";;
+         esac
+        ])
+    ])
+])
+
+dnl Test whether the *printf family of functions supports the %n format
+dnl directive. (ISO C99, POSIX:2001)
+dnl Result is gl_cv_func_printf_directive_n.
+
+AC_DEFUN([gl_PRINTF_DIRECTIVE_N],
+[
+  AC_REQUIRE([AC_PROG_CC])
+  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+  AC_CACHE_CHECK([whether printf supports the 'n' directive],
+    [gl_cv_func_printf_directive_n],
+    [
+      AC_RUN_IFELSE(
+        [AC_LANG_SOURCE([[
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#ifdef _MSC_VER
+/* See page about "Parameter Validation" on msdn.microsoft.com.  */
+static void cdecl
+invalid_parameter_handler (const wchar_t *expression,
+                           const wchar_t *function,
+                           const wchar_t *file, unsigned int line,
+                           uintptr_t dummy)
+{
+  exit (1);
+}
+#endif
+static char fmtstring[10];
+static char buf[100];
+int main ()
+{
+  int count = -1;
+#ifdef _MSC_VER
+  _set_invalid_parameter_handler (invalid_parameter_handler);
+#endif
+  /* Copy the format string.  Some systems (glibc with _FORTIFY_SOURCE=2)
+     support %n in format strings in read-only memory but not in writable
+     memory.  */
+  strcpy (fmtstring, "%d %n");
+  if (sprintf (buf, fmtstring, 123, &count, 33, 44, 55) < 0
+      || strcmp (buf, "123 ") != 0
+      || count != 4)
+    return 1;
+  return 0;
+}]])],
+        [gl_cv_func_printf_directive_n=yes],
+        [gl_cv_func_printf_directive_n=no],
+        [case "$host_os" in
+                   # Guess no on native Windows.
+           mingw*) gl_cv_func_printf_directive_n="guessing no";;
+           *)      gl_cv_func_printf_directive_n="guessing yes";;
+         esac
+        ])
+    ])
+])
+
+dnl Test whether the *printf family of functions supports the %ls format
+dnl directive and in particular, when a precision is specified, whether
+dnl the functions stop converting the wide string argument when the number
+dnl of bytes that have been produced by this conversion equals or exceeds
+dnl the precision.
+dnl Result is gl_cv_func_printf_directive_ls.
+
+AC_DEFUN([gl_PRINTF_DIRECTIVE_LS],
+[
+  AC_REQUIRE([AC_PROG_CC])
+  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+  AC_CACHE_CHECK([whether printf supports the 'ls' directive],
+    [gl_cv_func_printf_directive_ls],
+    [
+      AC_RUN_IFELSE(
+        [AC_LANG_SOURCE([[
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+   <wchar.h>.
+   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+   included before <wchar.h>.  */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+#include <string.h>
+int main ()
+{
+  int result = 0;
+  char buf[100];
+  /* Test whether %ls works at all.
+     This test fails on OpenBSD 4.0, IRIX 6.5, Solaris 2.6, Haiku, but not on
+     Cygwin 1.5.  */
+  {
+    static const wchar_t wstring[] = { 'a', 'b', 'c', 0 };
+    buf[0] = '\0';
+    if (sprintf (buf, "%ls", wstring) < 0
+        || strcmp (buf, "abc") != 0)
+      result |= 1;
+  }
+  /* This test fails on IRIX 6.5, Solaris 2.6, Cygwin 1.5, Haiku (with an
+     assertion failure inside libc), but not on OpenBSD 4.0.  */
+  {
+    static const wchar_t wstring[] = { 'a', 0 };
+    buf[0] = '\0';
+    if (sprintf (buf, "%ls", wstring) < 0
+        || strcmp (buf, "a") != 0)
+      result |= 2;
+  }
+  /* Test whether precisions in %ls are supported as specified in ISO C 99
+     section 7.19.6.1:
+       "If a precision is specified, no more than that many bytes are written
+        (including shift sequences, if any), and the array shall contain a
+        null wide character if, to equal the multibyte character sequence
+        length given by the precision, the function would need to access a
+        wide character one past the end of the array."
+     This test fails on Solaris 10.  */
+  {
+    static const wchar_t wstring[] = { 'a', 'b', (wchar_t) 0xfdfdfdfd, 0 };
+    buf[0] = '\0';
+    if (sprintf (buf, "%.2ls", wstring) < 0
+        || strcmp (buf, "ab") != 0)
+      result |= 8;
+  }
+  return result;
+}]])],
+        [gl_cv_func_printf_directive_ls=yes],
+        [gl_cv_func_printf_directive_ls=no],
+        [
+changequote(,)dnl
+         case "$host_os" in
+           openbsd*)       gl_cv_func_printf_directive_ls="guessing no";;
+           irix*)          gl_cv_func_printf_directive_ls="guessing no";;
+           solaris*)       gl_cv_func_printf_directive_ls="guessing no";;
+           cygwin*)        gl_cv_func_printf_directive_ls="guessing no";;
+           beos* | haiku*) gl_cv_func_printf_directive_ls="guessing no";;
+                           # Guess yes on native Windows.
+           mingw*)         gl_cv_func_printf_directive_ls="guessing yes";;
+           *)              gl_cv_func_printf_directive_ls="guessing yes";;
+         esac
+changequote([,])dnl
+        ])
+    ])
+])
+
+dnl Test whether the *printf family of functions supports POSIX/XSI format
+dnl strings with positions. (POSIX:2001)
+dnl Result is gl_cv_func_printf_positions.
+
+AC_DEFUN([gl_PRINTF_POSITIONS],
+[
+  AC_REQUIRE([AC_PROG_CC])
+  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+  AC_CACHE_CHECK([whether printf supports POSIX/XSI format strings with positions],
+    [gl_cv_func_printf_positions],
+    [
+      AC_RUN_IFELSE(
+        [AC_LANG_SOURCE([[
+#include <stdio.h>
+#include <string.h>
+/* The string "%2$d %1$d", with dollar characters protected from the shell's
+   dollar expansion (possibly an autoconf bug).  */
+static char format[] = { '%', '2', '$', 'd', ' ', '%', '1', '$', 'd', '\0' };
+static char buf[100];
+int main ()
+{
+  sprintf (buf, format, 33, 55);
+  return (strcmp (buf, "55 33") != 0);
+}]])],
+        [gl_cv_func_printf_positions=yes],
+        [gl_cv_func_printf_positions=no],
+        [
+changequote(,)dnl
+         case "$host_os" in
+           netbsd[1-3]* | netbsdelf[1-3]* | netbsdaout[1-3]* | netbsdcoff[1-3]*)
+                         gl_cv_func_printf_positions="guessing no";;
+           beos*)        gl_cv_func_printf_positions="guessing no";;
+                         # Guess no on native Windows.
+           mingw* | pw*) gl_cv_func_printf_positions="guessing no";;
+           *)            gl_cv_func_printf_positions="guessing yes";;
+         esac
+changequote([,])dnl
+        ])
+    ])
+])
+
+dnl Test whether the *printf family of functions supports POSIX/XSI format
+dnl strings with the ' flag for grouping of decimal digits. (POSIX:2001)
+dnl Result is gl_cv_func_printf_flag_grouping.
+
+AC_DEFUN([gl_PRINTF_FLAG_GROUPING],
+[
+  AC_REQUIRE([AC_PROG_CC])
+  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+  AC_CACHE_CHECK([whether printf supports the grouping flag],
+    [gl_cv_func_printf_flag_grouping],
+    [
+      AC_RUN_IFELSE(
+        [AC_LANG_SOURCE([[
+#include <stdio.h>
+#include <string.h>
+static char buf[100];
+int main ()
+{
+  if (sprintf (buf, "%'d %d", 1234567, 99) < 0
+      || buf[strlen (buf) - 1] != '9')
+    return 1;
+  return 0;
+}]])],
+        [gl_cv_func_printf_flag_grouping=yes],
+        [gl_cv_func_printf_flag_grouping=no],
+        [
+changequote(,)dnl
+         case "$host_os" in
+           cygwin*)      gl_cv_func_printf_flag_grouping="guessing no";;
+           netbsd*)      gl_cv_func_printf_flag_grouping="guessing no";;
+                         # Guess no on native Windows.
+           mingw* | pw*) gl_cv_func_printf_flag_grouping="guessing no";;
+           *)            gl_cv_func_printf_flag_grouping="guessing yes";;
+         esac
+changequote([,])dnl
+        ])
+    ])
+])
+
+dnl Test whether the *printf family of functions supports the - flag correctly.
+dnl (ISO C99.) See
+dnl <https://lists.gnu.org/r/bug-coreutils/2008-02/msg00035.html>
+dnl Result is gl_cv_func_printf_flag_leftadjust.
+
+AC_DEFUN([gl_PRINTF_FLAG_LEFTADJUST],
+[
+  AC_REQUIRE([AC_PROG_CC])
+  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+  AC_CACHE_CHECK([whether printf supports the left-adjust flag correctly],
+    [gl_cv_func_printf_flag_leftadjust],
+    [
+      AC_RUN_IFELSE(
+        [AC_LANG_SOURCE([[
+#include <stdio.h>
+#include <string.h>
+static char buf[100];
+int main ()
+{
+  /* Check that a '-' flag is not annihilated by a negative width.  */
+  if (sprintf (buf, "a%-*sc", -3, "b") < 0
+      || strcmp (buf, "ab  c") != 0)
+    return 1;
+  return 0;
+}]])],
+        [gl_cv_func_printf_flag_leftadjust=yes],
+        [gl_cv_func_printf_flag_leftadjust=no],
+        [
+changequote(,)dnl
+         case "$host_os" in
+                    # Guess yes on HP-UX 11.
+           hpux11*) gl_cv_func_printf_flag_leftadjust="guessing yes";;
+                    # Guess no on HP-UX 10 and older.
+           hpux*)   gl_cv_func_printf_flag_leftadjust="guessing no";;
+                    # Guess yes on native Windows.
+           mingw*)  gl_cv_func_printf_flag_leftadjust="guessing yes";;
+                    # Guess yes otherwise.
+           *)       gl_cv_func_printf_flag_leftadjust="guessing yes";;
+         esac
+changequote([,])dnl
+        ])
+    ])
+])
+
+dnl Test whether the *printf family of functions supports padding of non-finite
+dnl values with the 0 flag correctly. (ISO C99 + TC1 + TC2.) See
+dnl <https://lists.gnu.org/r/bug-gnulib/2007-04/msg00107.html>
+dnl Result is gl_cv_func_printf_flag_zero.
+
+AC_DEFUN([gl_PRINTF_FLAG_ZERO],
+[
+  AC_REQUIRE([AC_PROG_CC])
+  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+  AC_CACHE_CHECK([whether printf supports the zero flag correctly],
+    [gl_cv_func_printf_flag_zero],
+    [
+      AC_RUN_IFELSE(
+        [AC_LANG_SOURCE([[
+#include <stdio.h>
+#include <string.h>
+static char buf[100];
+static double zero = 0.0;
+int main ()
+{
+  if (sprintf (buf, "%010f", 1.0 / zero, 33, 44, 55) < 0
+      || (strcmp (buf, "       inf") != 0
+          && strcmp (buf, "  infinity") != 0))
+    return 1;
+  return 0;
+}]])],
+        [gl_cv_func_printf_flag_zero=yes],
+        [gl_cv_func_printf_flag_zero=no],
+        [
+changequote(,)dnl
+         case "$host_os" in
+                          # Guess yes on glibc systems.
+           *-gnu* | gnu*) gl_cv_func_printf_flag_zero="guessing yes";;
+                          # Guess yes on BeOS.
+           beos*)         gl_cv_func_printf_flag_zero="guessing yes";;
+                          # Guess no on native Windows.
+           mingw*)        gl_cv_func_printf_flag_zero="guessing no";;
+                          # If we don't know, assume the worst.
+           *)             gl_cv_func_printf_flag_zero="guessing no";;
+         esac
+changequote([,])dnl
+        ])
+    ])
+])
+
+dnl Test whether the *printf family of functions supports large precisions.
+dnl On mingw, precisions larger than 512 are treated like 512, in integer,
+dnl floating-point or pointer output. On Solaris 10/x86, precisions larger
+dnl than 510 in floating-point output crash the program. On Solaris 10/SPARC,
+dnl precisions larger than 510 in floating-point output yield wrong results.
+dnl On AIX 7.1, precisions larger than 998 in floating-point output yield
+dnl wrong results. On BeOS, precisions larger than 1044 crash the program.
+dnl Result is gl_cv_func_printf_precision.
+
+AC_DEFUN([gl_PRINTF_PRECISION],
+[
+  AC_REQUIRE([AC_PROG_CC])
+  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+  AC_CACHE_CHECK([whether printf supports large precisions],
+    [gl_cv_func_printf_precision],
+    [
+      AC_RUN_IFELSE(
+        [AC_LANG_SOURCE([[
+#include <stdio.h>
+#include <string.h>
+static char buf[5000];
+int main ()
+{
+  int result = 0;
+#ifdef __BEOS__
+  /* On BeOS, this would crash and show a dialog box.  Avoid the crash.  */
+  return 1;
+#endif
+  if (sprintf (buf, "%.4000d %d", 1, 33, 44) < 4000 + 3)
+    result |= 1;
+  if (sprintf (buf, "%.4000f %d", 1.0, 33, 44) < 4000 + 5)
+    result |= 2;
+  if (sprintf (buf, "%.511f %d", 1.0, 33, 44) < 511 + 5
+      || buf[0] != '1')
+    result |= 4;
+  if (sprintf (buf, "%.999f %d", 1.0, 33, 44) < 999 + 5
+      || buf[0] != '1')
+    result |= 4;
+  return result;
+}]])],
+        [gl_cv_func_printf_precision=yes],
+        [gl_cv_func_printf_precision=no],
+        [
+changequote(,)dnl
+         case "$host_os" in
+           # Guess no only on Solaris, native Windows, and BeOS systems.
+           solaris*)     gl_cv_func_printf_precision="guessing no" ;;
+           mingw* | pw*) gl_cv_func_printf_precision="guessing no" ;;
+           beos*)        gl_cv_func_printf_precision="guessing no" ;;
+           *)            gl_cv_func_printf_precision="guessing yes" ;;
+         esac
+changequote([,])dnl
+        ])
+    ])
+])
+
+dnl Test whether the *printf family of functions recovers gracefully in case
+dnl of an out-of-memory condition, or whether it crashes the entire program.
+dnl Result is gl_cv_func_printf_enomem.
+
+AC_DEFUN([gl_PRINTF_ENOMEM],
+[
+  AC_REQUIRE([AC_PROG_CC])
+  AC_REQUIRE([gl_MULTIARCH])
+  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+  AC_CACHE_CHECK([whether printf survives out-of-memory conditions],
+    [gl_cv_func_printf_enomem],
+    [
+      gl_cv_func_printf_enomem="guessing no"
+      if test "$cross_compiling" = no; then
+        if test $APPLE_UNIVERSAL_BUILD = 0; then
+          AC_LANG_CONFTEST([AC_LANG_SOURCE([
+]GL_NOCRASH[
+changequote(,)dnl
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/time.h>
+#include <sys/resource.h>
+#include <errno.h>
+int main()
+{
+  struct rlimit limit;
+  int ret;
+  nocrash_init ();
+  /* Some printf implementations allocate temporary space with malloc.  */
+  /* On BSD systems, malloc() is limited by RLIMIT_DATA.  */
+#ifdef RLIMIT_DATA
+  if (getrlimit (RLIMIT_DATA, &limit) < 0)
+    return 77;
+  if (limit.rlim_max == RLIM_INFINITY || limit.rlim_max > 5000000)
+    limit.rlim_max = 5000000;
+  limit.rlim_cur = limit.rlim_max;
+  if (setrlimit (RLIMIT_DATA, &limit) < 0)
+    return 77;
+#endif
+  /* On Linux systems, malloc() is limited by RLIMIT_AS.  */
+#ifdef RLIMIT_AS
+  if (getrlimit (RLIMIT_AS, &limit) < 0)
+    return 77;
+  if (limit.rlim_max == RLIM_INFINITY || limit.rlim_max > 5000000)
+    limit.rlim_max = 5000000;
+  limit.rlim_cur = limit.rlim_max;
+  if (setrlimit (RLIMIT_AS, &limit) < 0)
+    return 77;
+#endif
+  /* Some printf implementations allocate temporary space on the stack.  */
+#ifdef RLIMIT_STACK
+  if (getrlimit (RLIMIT_STACK, &limit) < 0)
+    return 77;
+  if (limit.rlim_max == RLIM_INFINITY || limit.rlim_max > 5000000)
+    limit.rlim_max = 5000000;
+  limit.rlim_cur = limit.rlim_max;
+  if (setrlimit (RLIMIT_STACK, &limit) < 0)
+    return 77;
+#endif
+  ret = printf ("%.5000000f", 1.0);
+  return !(ret == 5000002 || (ret < 0 && errno == ENOMEM));
+}
+changequote([,])dnl
+          ])])
+          if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then
+            (./conftest 2>&AS_MESSAGE_LOG_FD
+             result=$?
+             _AS_ECHO_LOG([\$? = $result])
+             if test $result != 0 && test $result != 77; then result=1; fi
+             exit $result
+            ) >/dev/null 2>/dev/null
+            case $? in
+              0) gl_cv_func_printf_enomem="yes" ;;
+              77) gl_cv_func_printf_enomem="guessing no" ;;
+              *) gl_cv_func_printf_enomem="no" ;;
+            esac
+          else
+            gl_cv_func_printf_enomem="guessing no"
+          fi
+          rm -fr conftest*
+        else
+          dnl A universal build on Apple Mac OS X platforms.
+          dnl The result would be 'no' in 32-bit mode and 'yes' in 64-bit mode.
+          dnl But we need a configuration result that is valid in both modes.
+          gl_cv_func_printf_enomem="guessing no"
+        fi
+      fi
+      if test "$gl_cv_func_printf_enomem" = "guessing no"; then
+changequote(,)dnl
+        case "$host_os" in
+                         # Guess yes on glibc systems.
+          *-gnu* | gnu*) gl_cv_func_printf_enomem="guessing yes";;
+                         # Guess yes on Solaris.
+          solaris*)      gl_cv_func_printf_enomem="guessing yes";;
+                         # Guess yes on AIX.
+          aix*)          gl_cv_func_printf_enomem="guessing yes";;
+                         # Guess yes on HP-UX/hppa.
+          hpux*)         case "$host_cpu" in
+                           hppa*) gl_cv_func_printf_enomem="guessing yes";;
+                           *)     gl_cv_func_printf_enomem="guessing no";;
+                         esac
+                         ;;
+                         # Guess yes on IRIX.
+          irix*)         gl_cv_func_printf_enomem="guessing yes";;
+                         # Guess yes on OSF/1.
+          osf*)          gl_cv_func_printf_enomem="guessing yes";;
+                         # Guess yes on BeOS.
+          beos*)         gl_cv_func_printf_enomem="guessing yes";;
+                         # Guess yes on Haiku.
+          haiku*)        gl_cv_func_printf_enomem="guessing yes";;
+                         # If we don't know, assume the worst.
+          *)             gl_cv_func_printf_enomem="guessing no";;
+        esac
+changequote([,])dnl
+      fi
+    ])
+])
+
+dnl Test whether the snprintf function exists. (ISO C99, POSIX:2001)
+dnl Result is ac_cv_func_snprintf.
+
+AC_DEFUN([gl_SNPRINTF_PRESENCE],
+[
+  AC_CHECK_FUNCS_ONCE([snprintf])
+])
+
+dnl Test whether the string produced by the snprintf function is always NUL
+dnl terminated. (ISO C99, POSIX:2001)
+dnl Result is gl_cv_func_snprintf_truncation_c99.
+
+AC_DEFUN([gl_SNPRINTF_TRUNCATION_C99],
+[
+  AC_REQUIRE([AC_PROG_CC])
+  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+  AC_REQUIRE([gl_SNPRINTF_PRESENCE])
+  AC_CACHE_CHECK([whether snprintf truncates the result as in C99],
+    [gl_cv_func_snprintf_truncation_c99],
+    [
+      AC_RUN_IFELSE(
+        [AC_LANG_SOURCE([[
+#include <stdio.h>
+#include <string.h>
+#if HAVE_SNPRINTF
+# define my_snprintf snprintf
+#else
+# include <stdarg.h>
+static int my_snprintf (char *buf, int size, const char *format, ...)
+{
+  va_list args;
+  int ret;
+  va_start (args, format);
+  ret = vsnprintf (buf, size, format, args);
+  va_end (args);
+  return ret;
+}
+#endif
+static char buf[100];
+int main ()
+{
+  strcpy (buf, "ABCDEF");
+  my_snprintf (buf, 3, "%d %d", 4567, 89);
+  if (memcmp (buf, "45\0DEF", 6) != 0)
+    return 1;
+  return 0;
+}]])],
+        [gl_cv_func_snprintf_truncation_c99=yes],
+        [gl_cv_func_snprintf_truncation_c99=no],
+        [
+changequote(,)dnl
+         case "$host_os" in
+                                 # Guess yes on glibc systems.
+           *-gnu* | gnu*)        gl_cv_func_snprintf_truncation_c99="guessing yes";;
+                                 # Guess yes on FreeBSD >= 5.
+           freebsd[1-4].*)       gl_cv_func_snprintf_truncation_c99="guessing no";;
+           freebsd* | kfreebsd*) gl_cv_func_snprintf_truncation_c99="guessing yes";;
+                                 # Guess yes on Mac OS X >= 10.3.
+           darwin[1-6].*)        gl_cv_func_snprintf_truncation_c99="guessing no";;
+           darwin*)              gl_cv_func_snprintf_truncation_c99="guessing yes";;
+                                 # Guess yes on OpenBSD >= 3.9.
+           openbsd[1-2].* | openbsd3.[0-8] | openbsd3.[0-8].*)
+                                 gl_cv_func_snprintf_truncation_c99="guessing no";;
+           openbsd*)             gl_cv_func_snprintf_truncation_c99="guessing yes";;
+                                 # Guess yes on Solaris >= 2.6.
+           solaris2.[0-5] | solaris2.[0-5].*)
+                                 gl_cv_func_snprintf_truncation_c99="guessing no";;
+           solaris*)             gl_cv_func_snprintf_truncation_c99="guessing yes";;
+                                 # Guess yes on AIX >= 4.
+           aix[1-3]*)            gl_cv_func_snprintf_truncation_c99="guessing no";;
+           aix*)                 gl_cv_func_snprintf_truncation_c99="guessing yes";;
+                                 # Guess yes on HP-UX >= 11.
+           hpux[7-9]* | hpux10*) gl_cv_func_snprintf_truncation_c99="guessing no";;
+           hpux*)                gl_cv_func_snprintf_truncation_c99="guessing yes";;
+                                 # Guess yes on IRIX >= 6.5.
+           irix6.5)              gl_cv_func_snprintf_truncation_c99="guessing yes";;
+                                 # Guess yes on OSF/1 >= 5.
+           osf[3-4]*)            gl_cv_func_snprintf_truncation_c99="guessing no";;
+           osf*)                 gl_cv_func_snprintf_truncation_c99="guessing yes";;
+                                 # Guess yes on NetBSD >= 3.
+           netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*)
+                                 gl_cv_func_snprintf_truncation_c99="guessing no";;
+           netbsd*)              gl_cv_func_snprintf_truncation_c99="guessing yes";;
+                                 # Guess yes on BeOS.
+           beos*)                gl_cv_func_snprintf_truncation_c99="guessing yes";;
+                                 # Guess no on native Windows.
+           mingw*)               gl_cv_func_snprintf_truncation_c99="guessing no";;
+                                 # If we don't know, assume the worst.
+           *)                    gl_cv_func_snprintf_truncation_c99="guessing no";;
+         esac
+changequote([,])dnl
+        ])
+    ])
+])
+
+dnl Test whether the return value of the snprintf function is the number
+dnl of bytes (excluding the terminating NUL) that would have been produced
+dnl if the buffer had been large enough. (ISO C99, POSIX:2001)
+dnl For example, this test program fails on IRIX 6.5:
+dnl     ---------------------------------------------------------------------
+dnl     #include <stdio.h>
+dnl     int main()
+dnl     {
+dnl       static char buf[8];
+dnl       int retval = snprintf (buf, 3, "%d", 12345);
+dnl       return retval >= 0 && retval < 3;
+dnl     }
+dnl     ---------------------------------------------------------------------
+dnl Result is gl_cv_func_snprintf_retval_c99.
+
+AC_DEFUN_ONCE([gl_SNPRINTF_RETVAL_C99],
+[
+  AC_REQUIRE([AC_PROG_CC])
+  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+  AC_REQUIRE([gl_SNPRINTF_PRESENCE])
+  AC_CACHE_CHECK([whether snprintf returns a byte count as in C99],
+    [gl_cv_func_snprintf_retval_c99],
+    [
+      AC_RUN_IFELSE(
+        [AC_LANG_SOURCE([[
+#include <stdio.h>
+#include <string.h>
+#if HAVE_SNPRINTF
+# define my_snprintf snprintf
+#else
+# include <stdarg.h>
+static int my_snprintf (char *buf, int size, const char *format, ...)
+{
+  va_list args;
+  int ret;
+  va_start (args, format);
+  ret = vsnprintf (buf, size, format, args);
+  va_end (args);
+  return ret;
+}
+#endif
+static char buf[100];
+int main ()
+{
+  strcpy (buf, "ABCDEF");
+  if (my_snprintf (buf, 3, "%d %d", 4567, 89) != 7)
+    return 1;
+  if (my_snprintf (buf, 0, "%d %d", 4567, 89) != 7)
+    return 2;
+  if (my_snprintf (NULL, 0, "%d %d", 4567, 89) != 7)
+    return 3;
+  return 0;
+}]])],
+        [gl_cv_func_snprintf_retval_c99=yes],
+        [gl_cv_func_snprintf_retval_c99=no],
+        [case "$host_os" in
+changequote(,)dnl
+                                 # Guess yes on glibc systems.
+           *-gnu* | gnu*)        gl_cv_func_snprintf_retval_c99="guessing yes";;
+                                 # Guess yes on FreeBSD >= 5.
+           freebsd[1-4].*)       gl_cv_func_snprintf_retval_c99="guessing no";;
+           freebsd* | kfreebsd*) gl_cv_func_snprintf_retval_c99="guessing yes";;
+                                 # Guess yes on Mac OS X >= 10.3.
+           darwin[1-6].*)        gl_cv_func_snprintf_retval_c99="guessing no";;
+           darwin*)              gl_cv_func_snprintf_retval_c99="guessing yes";;
+                                 # Guess yes on OpenBSD >= 3.9.
+           openbsd[1-2].* | openbsd3.[0-8] | openbsd3.[0-8].*)
+                                 gl_cv_func_snprintf_retval_c99="guessing no";;
+           openbsd*)             gl_cv_func_snprintf_retval_c99="guessing yes";;
+                                 # Guess yes on Solaris >= 2.10.
+           solaris2.[1-9][0-9]*) gl_cv_func_printf_sizes_c99="guessing yes";;
+           solaris*)             gl_cv_func_printf_sizes_c99="guessing no";;
+                                 # Guess yes on AIX >= 4.
+           aix[1-3]*)            gl_cv_func_snprintf_retval_c99="guessing no";;
+           aix*)                 gl_cv_func_snprintf_retval_c99="guessing yes";;
+                                 # Guess yes on NetBSD >= 3.
+           netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*)
+                                 gl_cv_func_snprintf_retval_c99="guessing no";;
+           netbsd*)              gl_cv_func_snprintf_retval_c99="guessing yes";;
+                                 # Guess yes on BeOS.
+           beos*)                gl_cv_func_snprintf_retval_c99="guessing yes";;
+changequote([,])dnl
+                                 # Guess yes on MSVC, no on mingw.
+           mingw*)               AC_EGREP_CPP([Known], [
+#ifdef _MSC_VER
+ Known
+#endif
+                                   ],
+                                   [gl_cv_func_snprintf_retval_c99="guessing yes"],
+                                   [gl_cv_func_snprintf_retval_c99="guessing no"])
+                                 ;;
+                                 # If we don't know, assume the worst.
+           *)                    gl_cv_func_snprintf_retval_c99="guessing no";;
+         esac
+        ])
+    ])
+])
+
+dnl Test whether the snprintf function supports the %n format directive
+dnl also in truncated portions of the format string. (ISO C99, POSIX:2001)
+dnl Result is gl_cv_func_snprintf_directive_n.
+
+AC_DEFUN([gl_SNPRINTF_DIRECTIVE_N],
+[
+  AC_REQUIRE([AC_PROG_CC])
+  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+  AC_REQUIRE([gl_SNPRINTF_PRESENCE])
+  AC_CACHE_CHECK([whether snprintf fully supports the 'n' directive],
+    [gl_cv_func_snprintf_directive_n],
+    [
+      AC_RUN_IFELSE(
+        [AC_LANG_SOURCE([[
+#include <stdio.h>
+#include <string.h>
+#if HAVE_SNPRINTF
+# define my_snprintf snprintf
+#else
+# include <stdarg.h>
+static int my_snprintf (char *buf, int size, const char *format, ...)
+{
+  va_list args;
+  int ret;
+  va_start (args, format);
+  ret = vsnprintf (buf, size, format, args);
+  va_end (args);
+  return ret;
+}
+#endif
+static char fmtstring[10];
+static char buf[100];
+int main ()
+{
+  int count = -1;
+  /* Copy the format string.  Some systems (glibc with _FORTIFY_SOURCE=2)
+     support %n in format strings in read-only memory but not in writable
+     memory.  */
+  strcpy (fmtstring, "%d %n");
+  my_snprintf (buf, 4, fmtstring, 12345, &count, 33, 44, 55);
+  if (count != 6)
+    return 1;
+  return 0;
+}]])],
+        [gl_cv_func_snprintf_directive_n=yes],
+        [gl_cv_func_snprintf_directive_n=no],
+        [
+changequote(,)dnl
+         case "$host_os" in
+                                 # Guess yes on glibc systems.
+           *-gnu* | gnu*)        gl_cv_func_snprintf_directive_n="guessing yes";;
+                                 # Guess yes on FreeBSD >= 5.
+           freebsd[1-4].*)       gl_cv_func_snprintf_directive_n="guessing no";;
+           freebsd* | kfreebsd*) gl_cv_func_snprintf_directive_n="guessing yes";;
+                                 # Guess yes on Mac OS X >= 10.3.
+           darwin[1-6].*)        gl_cv_func_snprintf_directive_n="guessing no";;
+           darwin*)              gl_cv_func_snprintf_directive_n="guessing yes";;
+                                 # Guess yes on Solaris >= 2.6.
+           solaris2.[0-5] | solaris2.[0-5].*)
+                                 gl_cv_func_snprintf_directive_n="guessing no";;
+           solaris*)             gl_cv_func_snprintf_directive_n="guessing yes";;
+                                 # Guess yes on AIX >= 4.
+           aix[1-3]*)            gl_cv_func_snprintf_directive_n="guessing no";;
+           aix*)                 gl_cv_func_snprintf_directive_n="guessing yes";;
+                                 # Guess yes on IRIX >= 6.5.
+           irix6.5)              gl_cv_func_snprintf_directive_n="guessing yes";;
+                                 # Guess yes on OSF/1 >= 5.
+           osf[3-4]*)            gl_cv_func_snprintf_directive_n="guessing no";;
+           osf*)                 gl_cv_func_snprintf_directive_n="guessing yes";;
+                                 # Guess yes on NetBSD >= 3.
+           netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*)
+                                 gl_cv_func_snprintf_directive_n="guessing no";;
+           netbsd*)              gl_cv_func_snprintf_directive_n="guessing yes";;
+                                 # Guess yes on BeOS.
+           beos*)                gl_cv_func_snprintf_directive_n="guessing yes";;
+                                 # Guess no on native Windows.
+           mingw*)               gl_cv_func_snprintf_directive_n="guessing no";;
+                                 # If we don't know, assume the worst.
+           *)                    gl_cv_func_snprintf_directive_n="guessing no";;
+         esac
+changequote([,])dnl
+        ])
+    ])
+])
+
+dnl Test whether the snprintf function, when passed a size = 1, writes any
+dnl output without bounds in this case, behaving like sprintf. This is the
+dnl case on Linux libc5.
+dnl Result is gl_cv_func_snprintf_size1.
+
+AC_DEFUN([gl_SNPRINTF_SIZE1],
+[
+  AC_REQUIRE([AC_PROG_CC])
+  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+  AC_REQUIRE([gl_SNPRINTF_PRESENCE])
+  AC_CACHE_CHECK([whether snprintf respects a size of 1],
+    [gl_cv_func_snprintf_size1],
+    [
+      AC_RUN_IFELSE(
+        [AC_LANG_SOURCE([[
+#include <stdio.h>
+#if HAVE_SNPRINTF
+# define my_snprintf snprintf
+#else
+# include <stdarg.h>
+static int my_snprintf (char *buf, int size, const char *format, ...)
+{
+  va_list args;
+  int ret;
+  va_start (args, format);
+  ret = vsnprintf (buf, size, format, args);
+  va_end (args);
+  return ret;
+}
+#endif
+int main()
+{
+  static char buf[8] = { 'D', 'E', 'A', 'D', 'B', 'E', 'E', 'F' };
+  my_snprintf (buf, 1, "%d", 12345);
+  return buf[1] != 'E';
+}]])],
+        [gl_cv_func_snprintf_size1=yes],
+        [gl_cv_func_snprintf_size1=no],
+        [case "$host_os" in
+                   # Guess yes on native Windows.
+           mingw*) gl_cv_func_snprintf_size1="guessing yes" ;;
+           *)      gl_cv_func_snprintf_size1="guessing yes" ;;
+         esac
+        ])
+    ])
+])
+
+dnl Test whether the vsnprintf function, when passed a zero size, produces no
+dnl output. (ISO C99, POSIX:2001)
+dnl For example, snprintf nevertheless writes a NUL byte in this case
+dnl on OSF/1 5.1:
+dnl     ---------------------------------------------------------------------
+dnl     #include <stdio.h>
+dnl     int main()
+dnl     {
+dnl       static char buf[8] = { 'D', 'E', 'A', 'D', 'B', 'E', 'E', 'F' };
+dnl       snprintf (buf, 0, "%d", 12345);
+dnl       return buf[0] != 'D';
+dnl     }
+dnl     ---------------------------------------------------------------------
+dnl And vsnprintf writes any output without bounds in this case, behaving like
+dnl vsprintf, on HP-UX 11 and OSF/1 5.1:
+dnl     ---------------------------------------------------------------------
+dnl     #include <stdarg.h>
+dnl     #include <stdio.h>
+dnl     static int my_snprintf (char *buf, int size, const char *format, ...)
+dnl     {
+dnl       va_list args;
+dnl       int ret;
+dnl       va_start (args, format);
+dnl       ret = vsnprintf (buf, size, format, args);
+dnl       va_end (args);
+dnl       return ret;
+dnl     }
+dnl     int main()
+dnl     {
+dnl       static char buf[8] = { 'D', 'E', 'A', 'D', 'B', 'E', 'E', 'F' };
+dnl       my_snprintf (buf, 0, "%d", 12345);
+dnl       return buf[0] != 'D';
+dnl     }
+dnl     ---------------------------------------------------------------------
+dnl Result is gl_cv_func_vsnprintf_zerosize_c99.
+
+AC_DEFUN([gl_VSNPRINTF_ZEROSIZE_C99],
+[
+  AC_REQUIRE([AC_PROG_CC])
+  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+  AC_CACHE_CHECK([whether vsnprintf respects a zero size as in C99],
+    [gl_cv_func_vsnprintf_zerosize_c99],
+    [
+      AC_RUN_IFELSE(
+        [AC_LANG_SOURCE([[
+#include <stdarg.h>
+#include <stdio.h>
+static int my_snprintf (char *buf, int size, const char *format, ...)
+{
+  va_list args;
+  int ret;
+  va_start (args, format);
+  ret = vsnprintf (buf, size, format, args);
+  va_end (args);
+  return ret;
+}
+int main()
+{
+  static char buf[8] = { 'D', 'E', 'A', 'D', 'B', 'E', 'E', 'F' };
+  my_snprintf (buf, 0, "%d", 12345);
+  return buf[0] != 'D';
+}]])],
+        [gl_cv_func_vsnprintf_zerosize_c99=yes],
+        [gl_cv_func_vsnprintf_zerosize_c99=no],
+        [
+changequote(,)dnl
+         case "$host_os" in
+                                 # Guess yes on glibc systems.
+           *-gnu* | gnu*)        gl_cv_func_vsnprintf_zerosize_c99="guessing yes";;
+                                 # Guess yes on FreeBSD >= 5.
+           freebsd[1-4].*)       gl_cv_func_vsnprintf_zerosize_c99="guessing no";;
+           freebsd* | kfreebsd*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";;
+                                 # Guess yes on Mac OS X >= 10.3.
+           darwin[1-6].*)        gl_cv_func_vsnprintf_zerosize_c99="guessing no";;
+           darwin*)              gl_cv_func_vsnprintf_zerosize_c99="guessing yes";;
+                                 # Guess yes on Cygwin.
+           cygwin*)              gl_cv_func_vsnprintf_zerosize_c99="guessing yes";;
+                                 # Guess yes on Solaris >= 2.6.
+           solaris2.[0-5] | solaris2.[0-5].*)
+                                 gl_cv_func_vsnprintf_zerosize_c99="guessing no";;
+           solaris*)             gl_cv_func_vsnprintf_zerosize_c99="guessing yes";;
+                                 # Guess yes on AIX >= 4.
+           aix[1-3]*)            gl_cv_func_vsnprintf_zerosize_c99="guessing no";;
+           aix*)                 gl_cv_func_vsnprintf_zerosize_c99="guessing yes";;
+                                 # Guess yes on IRIX >= 6.5.
+           irix6.5)              gl_cv_func_vsnprintf_zerosize_c99="guessing yes";;
+                                 # Guess yes on NetBSD >= 3.
+           netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*)
+                                 gl_cv_func_vsnprintf_zerosize_c99="guessing no";;
+           netbsd*)              gl_cv_func_vsnprintf_zerosize_c99="guessing yes";;
+                                 # Guess yes on BeOS.
+           beos*)                gl_cv_func_vsnprintf_zerosize_c99="guessing yes";;
+                                 # Guess yes on native Windows.
+           mingw* | pw*)         gl_cv_func_vsnprintf_zerosize_c99="guessing yes";;
+                                 # If we don't know, assume the worst.
+           *)                    gl_cv_func_vsnprintf_zerosize_c99="guessing no";;
+         esac
+changequote([,])dnl
+        ])
+    ])
+])
+
+dnl The results of these tests on various platforms are:
+dnl
+dnl 1 = gl_PRINTF_SIZES_C99
+dnl 2 = gl_PRINTF_LONG_DOUBLE
+dnl 3 = gl_PRINTF_INFINITE
+dnl 4 = gl_PRINTF_INFINITE_LONG_DOUBLE
+dnl 5 = gl_PRINTF_DIRECTIVE_A
+dnl 6 = gl_PRINTF_DIRECTIVE_F
+dnl 7 = gl_PRINTF_DIRECTIVE_N
+dnl 8 = gl_PRINTF_DIRECTIVE_LS
+dnl 9 = gl_PRINTF_POSITIONS
+dnl 10 = gl_PRINTF_FLAG_GROUPING
+dnl 11 = gl_PRINTF_FLAG_LEFTADJUST
+dnl 12 = gl_PRINTF_FLAG_ZERO
+dnl 13 = gl_PRINTF_PRECISION
+dnl 14 = gl_PRINTF_ENOMEM
+dnl 15 = gl_SNPRINTF_PRESENCE
+dnl 16 = gl_SNPRINTF_TRUNCATION_C99
+dnl 17 = gl_SNPRINTF_RETVAL_C99
+dnl 18 = gl_SNPRINTF_DIRECTIVE_N
+dnl 19 = gl_SNPRINTF_SIZE1
+dnl 20 = gl_VSNPRINTF_ZEROSIZE_C99
+dnl
+dnl 1 = checking whether printf supports size specifiers as in C99...
+dnl 2 = checking whether printf supports 'long double' arguments...
+dnl 3 = checking whether printf supports infinite 'double' arguments...
+dnl 4 = checking whether printf supports infinite 'long double' arguments...
+dnl 5 = checking whether printf supports the 'a' and 'A' directives...
+dnl 6 = checking whether printf supports the 'F' directive...
+dnl 7 = checking whether printf supports the 'n' directive...
+dnl 8 = checking whether printf supports the 'ls' directive...
+dnl 9 = checking whether printf supports POSIX/XSI format strings with positions...
+dnl 10 = checking whether printf supports the grouping flag...
+dnl 11 = checking whether printf supports the left-adjust flag correctly...
+dnl 12 = checking whether printf supports the zero flag correctly...
+dnl 13 = checking whether printf supports large precisions...
+dnl 14 = checking whether printf survives out-of-memory conditions...
+dnl 15 = checking for snprintf...
+dnl 16 = checking whether snprintf truncates the result as in C99...
+dnl 17 = checking whether snprintf returns a byte count as in C99...
+dnl 18 = checking whether snprintf fully supports the 'n' directive...
+dnl 19 = checking whether snprintf respects a size of 1...
+dnl 20 = checking whether vsnprintf respects a zero size as in C99...
+dnl
+dnl . = yes, # = no.
+dnl
+dnl                                  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20
+dnl   glibc 2.5                      .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
+dnl   glibc 2.3.6                    .  .  .  .  #  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
+dnl   FreeBSD 5.4, 6.1               .  .  .  .  #  .  .  .  .  .  .  #  .  #  .  .  .  .  .  .
+dnl   Mac OS X 10.5.8                .  .  .  #  #  .  .  .  .  .  .  #  .  .  .  .  .  .  .  .
+dnl   Mac OS X 10.3.9                .  .  .  .  #  .  .  .  .  .  .  #  .  #  .  .  .  .  .  .
+dnl   OpenBSD 3.9, 4.0               .  .  #  #  #  #  .  #  .  #  .  #  .  #  .  .  .  .  .  .
+dnl   Cygwin 1.7.0 (2009)            .  .  .  #  .  .  .  ?  .  .  .  .  .  ?  .  .  .  .  .  .
+dnl   Cygwin 1.5.25 (2008)           .  .  .  #  #  .  .  #  .  .  .  .  .  #  .  .  .  .  .  .
+dnl   Cygwin 1.5.19 (2006)           #  .  .  #  #  #  .  #  .  #  .  #  #  #  .  .  .  .  .  .
+dnl   Solaris 11.3                   .  .  .  .  #  .  .  #  .  .  .  .  .  .  .  .  .  .  .  .
+dnl   Solaris 11.0                   .  .  #  #  #  .  .  #  .  .  .  #  .  .  .  .  .  .  .  .
+dnl   Solaris 10                     .  .  #  #  #  .  .  #  .  .  .  #  #  .  .  .  .  .  .  .
+dnl   Solaris 2.6 ... 9              #  .  #  #  #  #  .  #  .  .  .  #  #  .  .  .  #  .  .  .
+dnl   Solaris 2.5.1                  #  .  #  #  #  #  .  #  .  .  .  #  .  .  #  #  #  #  #  #
+dnl   AIX 7.1                        .  .  #  #  #  .  .  .  .  .  .  #  #  .  .  .  .  .  .  .
+dnl   AIX 5.2                        .  .  #  #  #  .  .  .  .  .  .  #  .  .  .  .  .  .  .  .
+dnl   AIX 4.3.2, 5.1                 #  .  #  #  #  #  .  .  .  .  .  #  .  .  .  .  #  .  .  .
+dnl   HP-UX 11.31                    .  .  .  .  #  .  .  .  .  .  .  #  .  .  .  .  #  #  .  .
+dnl   HP-UX 11.{00,11,23}            #  .  .  .  #  #  .  .  .  .  .  #  .  .  .  .  #  #  .  #
+dnl   HP-UX 10.20                    #  .  #  .  #  #  .  ?  .  .  #  #  .  .  .  .  #  #  ?  #
+dnl   IRIX 6.5                       #  .  #  #  #  #  .  #  .  .  .  #  .  .  .  .  #  .  .  .
+dnl   OSF/1 5.1                      #  .  #  #  #  #  .  .  .  .  .  #  .  .  .  .  #  .  .  #
+dnl   OSF/1 4.0d                     #  .  #  #  #  #  .  .  .  .  .  #  .  .  #  #  #  #  #  #
+dnl   NetBSD 5.0                     .  .  .  #  #  .  .  .  .  .  .  #  .  #  .  .  .  .  .  .
+dnl   NetBSD 4.0                     .  ?  ?  ?  ?  ?  .  ?  .  ?  ?  ?  ?  ?  .  .  .  ?  ?  ?
+dnl   NetBSD 3.0                     .  .  .  .  #  #  .  ?  #  #  ?  #  .  #  .  .  .  .  .  .
+dnl   Haiku                          .  .  .  #  #  #  .  #  .  .  .  .  .  ?  .  .  ?  .  .  .
+dnl   BeOS                           #  #  .  #  #  #  .  ?  #  .  ?  .  #  ?  .  .  ?  .  .  .
+dnl   old mingw / msvcrt             #  #  #  #  #  #  .  .  #  #  .  #  #  ?  .  #  #  #  .  .
+dnl   MSVC 9                         #  #  #  #  #  #  #  .  #  #  .  #  #  ?  #  #  #  #  .  .
+dnl   mingw 2009-2011                .  #  .  #  .  .  .  .  #  #  .  .  .  ?  .  .  .  .  .  .
+dnl   mingw-w64 2011                 #  #  #  #  #  #  .  .  #  #  .  #  #  ?  .  #  #  #  .  .
diff --git a/gnulib_m4/signbit.m4 b/gnulib_m4/signbit.m4
new file mode 100644 (file)
index 0000000..9e7884d
--- /dev/null
@@ -0,0 +1,377 @@
+# signbit.m4 serial 16
+dnl Copyright (C) 2007-2018 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_SIGNBIT],
+[
+  AC_REQUIRE([gl_MATH_H_DEFAULTS])
+  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+  AC_CACHE_CHECK([for signbit macro], [gl_cv_func_signbit],
+    [
+      AC_RUN_IFELSE(
+        [AC_LANG_SOURCE([[
+#include <math.h>
+/* If signbit is defined as a function, don't use it, since calling it for
+   'float' or 'long double' arguments would involve conversions.
+   If signbit is not declared at all but exists as a library function, don't
+   use it, since the prototype may not match.
+   If signbit is not declared at all but exists as a compiler built-in, don't
+   use it, since it's preferable to use __builtin_signbit* (no warnings,
+   no conversions).  */
+#ifndef signbit
+# error "signbit should be a macro"
+#endif
+#include <string.h>
+]gl_SIGNBIT_TEST_PROGRAM
+])],
+        [gl_cv_func_signbit=yes],
+        [gl_cv_func_signbit=no],
+        [case "$host_os" in
+                          # Guess yes on glibc systems.
+           *-gnu* | gnu*) gl_cv_func_signbit="guessing yes" ;;
+                          # Guess yes on native Windows.
+           mingw*)        gl_cv_func_signbit="guessing yes" ;;
+                          # If we don't know, assume the worst.
+           *)             gl_cv_func_signbit="guessing no" ;;
+         esac
+        ])
+    ])
+  dnl GCC 4.0 and newer provides three built-ins for signbit.
+  dnl They can be used without warnings, also in C++, regardless of <math.h>.
+  dnl But they may expand to calls to functions, which may or may not be in
+  dnl libc.
+  AC_CACHE_CHECK([for signbit compiler built-ins], [gl_cv_func_signbit_gcc],
+    [
+      AC_RUN_IFELSE(
+        [AC_LANG_SOURCE([[
+#if __GNUC__ >= 4
+# define signbit(x) \
+   (sizeof (x) == sizeof (long double) ? __builtin_signbitl (x) : \
+    sizeof (x) == sizeof (double) ? __builtin_signbit (x) : \
+    __builtin_signbitf (x))
+#else
+# error "signbit should be three compiler built-ins"
+#endif
+#include <string.h>
+]gl_SIGNBIT_TEST_PROGRAM
+])],
+        [gl_cv_func_signbit_gcc=yes],
+        [gl_cv_func_signbit_gcc=no],
+        [case "$host_os" in
+                          # Guess yes on glibc systems.
+           *-gnu* | gnu*) gl_cv_func_signbit_gcc="guessing yes" ;;
+                          # Guess yes on mingw, no on MSVC.
+           mingw*)        if test -n "$GCC"; then
+                            gl_cv_func_signbit_gcc="guessing yes"
+                          else
+                            gl_cv_func_signbit_gcc="guessing no"
+                          fi
+                          ;;
+                          # If we don't know, assume the worst.
+           *)             gl_cv_func_signbit_gcc="guessing no" ;;
+         esac
+        ])
+    ])
+  dnl Use the compiler built-ins whenever possible, because they are more
+  dnl efficient than the system library functions (if they exist).
+  case "$gl_cv_func_signbit_gcc" in
+    *yes)
+      REPLACE_SIGNBIT_USING_GCC=1
+      ;;
+    *)
+      case "$gl_cv_func_signbit" in
+        *yes) ;;
+        *)
+          dnl REPLACE_SIGNBIT=1 makes sure the signbit[fdl] functions get built.
+          REPLACE_SIGNBIT=1
+          gl_FLOAT_SIGN_LOCATION
+          gl_DOUBLE_SIGN_LOCATION
+          gl_LONG_DOUBLE_SIGN_LOCATION
+          if test "$gl_cv_cc_float_signbit" = unknown; then
+            dnl Test whether copysignf() is declared.
+            AC_CHECK_DECLS([copysignf], , , [[#include <math.h>]])
+            if test "$ac_cv_have_decl_copysignf" = yes; then
+              dnl Test whether copysignf() can be used without libm.
+              AC_CACHE_CHECK([whether copysignf can be used without linking with libm],
+                [gl_cv_func_copysignf_no_libm],
+                [
+                  AC_LINK_IFELSE(
+                    [AC_LANG_PROGRAM(
+                       [[#include <math.h>
+                         float x, y;]],
+                       [[return copysignf (x, y) < 0;]])],
+                    [gl_cv_func_copysignf_no_libm=yes],
+                    [gl_cv_func_copysignf_no_libm=no])
+                ])
+              if test $gl_cv_func_copysignf_no_libm = yes; then
+                AC_DEFINE([HAVE_COPYSIGNF_IN_LIBC], [1],
+                  [Define if the copysignf function is declared in <math.h> and available in libc.])
+              fi
+            fi
+          fi
+          if test "$gl_cv_cc_double_signbit" = unknown; then
+            dnl Test whether copysign() is declared.
+            AC_CHECK_DECLS([copysign], , , [[#include <math.h>]])
+            if test "$ac_cv_have_decl_copysign" = yes; then
+              dnl Test whether copysign() can be used without libm.
+              AC_CACHE_CHECK([whether copysign can be used without linking with libm],
+                [gl_cv_func_copysign_no_libm],
+                [
+                  AC_LINK_IFELSE(
+                    [AC_LANG_PROGRAM(
+                       [[#include <math.h>
+                         double x, y;]],
+                       [[return copysign (x, y) < 0;]])],
+                    [gl_cv_func_copysign_no_libm=yes],
+                    [gl_cv_func_copysign_no_libm=no])
+                ])
+              if test $gl_cv_func_copysign_no_libm = yes; then
+                AC_DEFINE([HAVE_COPYSIGN_IN_LIBC], [1],
+                  [Define if the copysign function is declared in <math.h> and available in libc.])
+              fi
+            fi
+          fi
+          if test "$gl_cv_cc_long_double_signbit" = unknown; then
+            dnl Test whether copysignl() is declared.
+            AC_CHECK_DECLS([copysignl], , , [[#include <math.h>]])
+            if test "$ac_cv_have_decl_copysignl" = yes; then
+              dnl Test whether copysignl() can be used without libm.
+              AC_CACHE_CHECK([whether copysignl can be used without linking with libm],
+                [gl_cv_func_copysignl_no_libm],
+                [
+                  AC_LINK_IFELSE(
+                    [AC_LANG_PROGRAM(
+                       [[#include <math.h>
+                         long double x, y;]],
+                       [[return copysignl (x, y) < 0;]])],
+                    [gl_cv_func_copysignl_no_libm=yes],
+                    [gl_cv_func_copysignl_no_libm=no])
+                ])
+              if test $gl_cv_func_copysignl_no_libm = yes; then
+                AC_DEFINE([HAVE_COPYSIGNL_IN_LIBC], [1],
+                  [Define if the copysignl function is declared in <math.h> and available in libc.])
+              fi
+            fi
+          fi
+          ;;
+      esac
+      ;;
+  esac
+])
+
+AC_DEFUN([gl_SIGNBIT_TEST_PROGRAM], [[
+/* Global variables.
+   Needed because GCC 4 constant-folds __builtin_signbitl (literal)
+   but cannot constant-fold            __builtin_signbitl (variable).  */
+float vf;
+double vd;
+long double vl;
+int main ()
+{
+/* HP cc on HP-UX 10.20 has a bug with the constant expression -0.0.
+   So we use -p0f and -p0d instead.  */
+float p0f = 0.0f;
+float m0f = -p0f;
+double p0d = 0.0;
+double m0d = -p0d;
+/* On HP-UX 10.20, negating 0.0L does not yield -0.0L.
+   So we use another constant expression instead.
+   But that expression does not work on other platforms, such as when
+   cross-compiling to PowerPC on Mac OS X 10.5.  */
+long double p0l = 0.0L;
+#if defined __hpux || defined __sgi
+long double m0l = -LDBL_MIN * LDBL_MIN;
+#else
+long double m0l = -p0l;
+#endif
+  int result = 0;
+  if (signbit (vf)) /* link check */
+    vf++;
+  {
+    float plus_inf = 1.0f / p0f;
+    float minus_inf = -1.0f / p0f;
+    if (!(!signbit (255.0f)
+          && signbit (-255.0f)
+          && !signbit (p0f)
+          && (memcmp (&m0f, &p0f, sizeof (float)) == 0 || signbit (m0f))
+          && !signbit (plus_inf)
+          && signbit (minus_inf)))
+      result |= 1;
+  }
+  if (signbit (vd)) /* link check */
+    vd++;
+  {
+    double plus_inf = 1.0 / p0d;
+    double minus_inf = -1.0 / p0d;
+    if (!(!signbit (255.0)
+          && signbit (-255.0)
+          && !signbit (p0d)
+          && (memcmp (&m0d, &p0d, sizeof (double)) == 0 || signbit (m0d))
+          && !signbit (plus_inf)
+          && signbit (minus_inf)))
+      result |= 2;
+  }
+  if (signbit (vl)) /* link check */
+    vl++;
+  {
+    long double plus_inf = 1.0L / p0l;
+    long double minus_inf = -1.0L / p0l;
+    if (signbit (255.0L))
+      result |= 4;
+    if (!signbit (-255.0L))
+      result |= 4;
+    if (signbit (p0l))
+      result |= 8;
+    if (!(memcmp (&m0l, &p0l, sizeof (long double)) == 0 || signbit (m0l)))
+      result |= 16;
+    if (signbit (plus_inf))
+      result |= 32;
+    if (!signbit (minus_inf))
+      result |= 64;
+  }
+  return result;
+}
+]])
+
+AC_DEFUN([gl_FLOAT_SIGN_LOCATION],
+[
+  gl_FLOATTYPE_SIGN_LOCATION([float], [gl_cv_cc_float_signbit], [f], [FLT])
+])
+
+AC_DEFUN([gl_DOUBLE_SIGN_LOCATION],
+[
+  gl_FLOATTYPE_SIGN_LOCATION([double], [gl_cv_cc_double_signbit], [], [DBL])
+])
+
+AC_DEFUN([gl_LONG_DOUBLE_SIGN_LOCATION],
+[
+  gl_FLOATTYPE_SIGN_LOCATION([long double], [gl_cv_cc_long_double_signbit], [L], [LDBL])
+])
+
+AC_DEFUN([gl_FLOATTYPE_SIGN_LOCATION],
+[
+  AC_CACHE_CHECK([where to find the sign bit in a '$1'],
+    [$2],
+    [
+      AC_RUN_IFELSE(
+        [AC_LANG_SOURCE([[
+#include <stddef.h>
+#include <stdio.h>
+#define NWORDS \
+  ((sizeof ($1) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
+typedef union { $1 value; unsigned int word[NWORDS]; }
+        memory_float;
+static memory_float plus = { 1.0$3 };
+static memory_float minus = { -1.0$3 };
+int main ()
+{
+  size_t j, k, i;
+  unsigned int m;
+  FILE *fp = fopen ("conftest.out", "w");
+  if (fp == NULL)
+    return 1;
+  /* Find the different bit.  */
+  k = 0; m = 0;
+  for (j = 0; j < NWORDS; j++)
+    {
+      unsigned int x = plus.word[j] ^ minus.word[j];
+      if ((x & (x - 1)) || (x && m))
+        {
+          /* More than one bit difference.  */
+          fprintf (fp, "unknown");
+          fclose (fp);
+          return 2;
+        }
+      if (x)
+        {
+          k = j;
+          m = x;
+        }
+    }
+  if (m == 0)
+    {
+      /* No difference.  */
+      fprintf (fp, "unknown");
+      fclose (fp);
+      return 3;
+    }
+  /* Now m = plus.word[k] ^ ~minus.word[k].  */
+  if (plus.word[k] & ~minus.word[k])
+    {
+      /* Oh? The sign bit is set in the positive and cleared in the negative
+         numbers?  */
+      fprintf (fp, "unknown");
+      fclose (fp);
+      return 4;
+    }
+  for (i = 0; ; i++)
+    if ((m >> i) & 1)
+      break;
+  fprintf (fp, "word %d bit %d", (int) k, (int) i);
+  if (fclose (fp) != 0)
+    return 5;
+  return 0;
+}
+        ]])],
+        [$2=`cat conftest.out`],
+        [$2="unknown"],
+        [
+          dnl When cross-compiling, we don't know. It depends on the
+          dnl ABI and compiler version. There are too many cases.
+          $2="unknown"
+        ])
+      rm -f conftest.out
+    ])
+  case "$]$2[" in
+    word*bit*)
+      word=`echo "$]$2[" | sed -e 's/word //' -e 's/ bit.*//'`
+      bit=`echo "$]$2[" | sed -e 's/word.*bit //'`
+      AC_DEFINE_UNQUOTED([$4][_SIGNBIT_WORD], [$word],
+        [Define as the word index where to find the sign of '$1'.])
+      AC_DEFINE_UNQUOTED([$4][_SIGNBIT_BIT], [$bit],
+        [Define as the bit index in the word where to find the sign of '$1'.])
+      ;;
+  esac
+])
+
+# Expands to code that defines a function signbitf(float).
+# It extracts the sign bit of a non-NaN value.
+AC_DEFUN([gl_FLOAT_SIGNBIT_CODE],
+[
+  gl_FLOATTYPE_SIGNBIT_CODE([float], [f], [f])
+])
+
+# Expands to code that defines a function signbitd(double).
+# It extracts the sign bit of a non-NaN value.
+AC_DEFUN([gl_DOUBLE_SIGNBIT_CODE],
+[
+  gl_FLOATTYPE_SIGNBIT_CODE([double], [d], [])
+])
+
+# Expands to code that defines a function signbitl(long double).
+# It extracts the sign bit of a non-NaN value.
+AC_DEFUN([gl_LONG_DOUBLE_SIGNBIT_CODE],
+[
+  gl_FLOATTYPE_SIGNBIT_CODE([long double], [l], [L])
+])
+
+AC_DEFUN([gl_FLOATTYPE_SIGNBIT_CODE],
+[[
+static int
+signbit$2 ($1 value)
+{
+  typedef union { $1 f; unsigned char b[sizeof ($1)]; } float_union;
+  static float_union plus_one = { 1.0$3 };   /* unused bits are zero here */
+  static float_union minus_one = { -1.0$3 }; /* unused bits are zero here */
+  /* Compute the sign bit mask as the XOR of plus_one and minus_one.  */
+  float_union u;
+  unsigned int i;
+  u.f = value;
+  for (i = 0; i < sizeof ($1); i++)
+    if (u.b[i] & (plus_one.b[i] ^ minus_one.b[i]))
+      return 1;
+  return 0;
+}
+]])
diff --git a/gnulib_m4/size_max.m4 b/gnulib_m4/size_max.m4
new file mode 100644 (file)
index 0000000..2b770e6
--- /dev/null
@@ -0,0 +1,79 @@
+# size_max.m4 serial 10
+dnl Copyright (C) 2003, 2005-2006, 2008-2018 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+
+AC_DEFUN([gl_SIZE_MAX],
+[
+  AC_CHECK_HEADERS([stdint.h])
+  dnl First test whether the system already has SIZE_MAX.
+  AC_CACHE_CHECK([for SIZE_MAX], [gl_cv_size_max], [
+    gl_cv_size_max=
+    AC_EGREP_CPP([Found it], [
+#include <limits.h>
+#if HAVE_STDINT_H
+#include <stdint.h>
+#endif
+#ifdef SIZE_MAX
+Found it
+#endif
+], [gl_cv_size_max=yes])
+    if test -z "$gl_cv_size_max"; then
+      dnl Define it ourselves. Here we assume that the type 'size_t' is not wider
+      dnl than the type 'unsigned long'. Try hard to find a definition that can
+      dnl be used in a preprocessor #if, i.e. doesn't contain a cast.
+      AC_COMPUTE_INT([size_t_bits_minus_1], [sizeof (size_t) * CHAR_BIT - 1],
+        [#include <stddef.h>
+#include <limits.h>], [size_t_bits_minus_1=])
+      AC_COMPUTE_INT([fits_in_uint], [sizeof (size_t) <= sizeof (unsigned int)],
+        [#include <stddef.h>], [fits_in_uint=])
+      if test -n "$size_t_bits_minus_1" && test -n "$fits_in_uint"; then
+        if test $fits_in_uint = 1; then
+          dnl Even though SIZE_MAX fits in an unsigned int, it must be of type
+          dnl 'unsigned long' if the type 'size_t' is the same as 'unsigned long'.
+          AC_COMPILE_IFELSE(
+            [AC_LANG_PROGRAM(
+               [[#include <stddef.h>
+                 extern size_t foo;
+                 extern unsigned long foo;
+               ]],
+               [[]])],
+            [fits_in_uint=0])
+        fi
+        dnl We cannot use 'expr' to simplify this expression, because 'expr'
+        dnl works only with 'long' integers in the host environment, while we
+        dnl might be cross-compiling from a 32-bit platform to a 64-bit platform.
+        if test $fits_in_uint = 1; then
+          gl_cv_size_max="(((1U << $size_t_bits_minus_1) - 1) * 2 + 1)"
+        else
+          gl_cv_size_max="(((1UL << $size_t_bits_minus_1) - 1) * 2 + 1)"
+        fi
+      else
+        dnl Shouldn't happen, but who knows...
+        gl_cv_size_max='((size_t)~(size_t)0)'
+      fi
+    fi
+  ])
+  if test "$gl_cv_size_max" != yes; then
+    AC_DEFINE_UNQUOTED([SIZE_MAX], [$gl_cv_size_max],
+      [Define as the maximum value of type 'size_t', if the system doesn't define it.])
+  fi
+  dnl Don't redefine SIZE_MAX in config.h if config.h is re-included after
+  dnl <stdint.h>. Remember that the #undef in AH_VERBATIM gets replaced with
+  dnl #define by AC_DEFINE_UNQUOTED.
+  AH_VERBATIM([SIZE_MAX],
+[/* Define as the maximum value of type 'size_t', if the system doesn't define
+   it. */
+#ifndef SIZE_MAX
+# undef SIZE_MAX
+#endif])
+])
+
+dnl Autoconf >= 2.61 has AC_COMPUTE_INT built-in.
+dnl Remove this when we can assume autoconf >= 2.61.
+m4_ifdef([AC_COMPUTE_INT], [], [
+  AC_DEFUN([AC_COMPUTE_INT], [_AC_COMPUTE_INT([$2],[$1],[$3],[$4])])
+])
diff --git a/gnulib_m4/snprintf.m4 b/gnulib_m4/snprintf.m4
new file mode 100644 (file)
index 0000000..decc8e5
--- /dev/null
@@ -0,0 +1,62 @@
+# snprintf.m4 serial 7
+dnl Copyright (C) 2002-2004, 2007-2018 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl Libintl 0.17 will replace snprintf only if it does not support %1$s,
+dnl but defers to any gnulib snprintf replacements.  Therefore, gnulib
+dnl must guarantee that the decision for replacing snprintf is a superset
+dnl of the reasons checked by libintl.
+AC_DEFUN([gl_FUNC_SNPRINTF],
+[
+  AC_REQUIRE([gl_STDIO_H_DEFAULTS])
+  gl_cv_func_snprintf_usable=no
+  AC_CHECK_FUNCS([snprintf])
+  if test $ac_cv_func_snprintf = yes; then
+    gl_SNPRINTF_SIZE1
+    case "$gl_cv_func_snprintf_size1" in
+      *yes)
+        gl_SNPRINTF_RETVAL_C99
+        case "$gl_cv_func_snprintf_retval_c99" in
+          *yes)
+            gl_PRINTF_POSITIONS
+            case "$gl_cv_func_printf_positions" in
+              *yes)
+                gl_cv_func_snprintf_usable=yes
+                ;;
+            esac
+            ;;
+        esac
+        ;;
+    esac
+  fi
+  if test $gl_cv_func_snprintf_usable = no; then
+    gl_REPLACE_SNPRINTF
+  fi
+  AC_CHECK_DECLS_ONCE([snprintf])
+  if test $ac_cv_have_decl_snprintf = no; then
+    HAVE_DECL_SNPRINTF=0
+  fi
+])
+
+AC_DEFUN([gl_REPLACE_SNPRINTF],
+[
+  AC_REQUIRE([gl_STDIO_H_DEFAULTS])
+  AC_LIBOBJ([snprintf])
+  if test $ac_cv_func_snprintf = yes; then
+    REPLACE_SNPRINTF=1
+  else
+    AC_CHECK_DECLS_ONCE([snprintf])
+    if test $ac_cv_have_decl_snprintf = yes; then
+      dnl If the function is declared but does not appear to exist, it may be
+      dnl defined as an inline function. In order to avoid a conflict, we have
+      dnl to define rpl_snprintf, not snprintf.
+      REPLACE_SNPRINTF=1
+    fi
+  fi
+  gl_PREREQ_SNPRINTF
+])
+
+# Prerequisites of lib/snprintf.c.
+AC_DEFUN([gl_PREREQ_SNPRINTF], [:])
diff --git a/gnulib_m4/ssize_t.m4 b/gnulib_m4/ssize_t.m4
new file mode 100644 (file)
index 0000000..0977f20
--- /dev/null
@@ -0,0 +1,23 @@
+# ssize_t.m4 serial 5 (gettext-0.18.2)
+dnl Copyright (C) 2001-2003, 2006, 2010-2018 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+dnl Test whether ssize_t is defined.
+
+AC_DEFUN([gt_TYPE_SSIZE_T],
+[
+  AC_CACHE_CHECK([for ssize_t], [gt_cv_ssize_t],
+    [AC_COMPILE_IFELSE(
+       [AC_LANG_PROGRAM(
+          [[#include <sys/types.h>]],
+          [[int x = sizeof (ssize_t *) + sizeof (ssize_t);
+            return !x;]])],
+       [gt_cv_ssize_t=yes], [gt_cv_ssize_t=no])])
+  if test $gt_cv_ssize_t = no; then
+    AC_DEFINE([ssize_t], [int],
+              [Define as a signed type of the same size as size_t.])
+  fi
+])
similarity index 57%
rename from src/libs/gnulib/m4/stddef_h.m4
rename to gnulib_m4/stddef_h.m4
index c555e29..07b040a 100644 (file)
@@ -1,6 +1,6 @@
-dnl A placeholder for POSIX 2008 <stddef.h>, for platforms that have issues.
-# stddef_h.m4 serial 4
-dnl Copyright (C) 2009-2014 Free Software Foundation, Inc.
+dnl A placeholder for <stddef.h>, for platforms that have issues.
+# stddef_h.m4 serial 6
+dnl Copyright (C) 2009-2018 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
 dnl with or without modifications, as long as this notice is preserved.
@@ -10,10 +10,33 @@ AC_DEFUN([gl_STDDEF_H],
   AC_REQUIRE([gl_STDDEF_H_DEFAULTS])
   AC_REQUIRE([gt_TYPE_WCHAR_T])
   STDDEF_H=
+
+  dnl Test whether the type max_align_t exists and whether its alignment
+  dnl "is as great as is supported by the implementation in all contexts".
+  AC_CACHE_CHECK([for good max_align_t],
+    [gl_cv_type_max_align_t],
+    [AC_COMPILE_IFELSE(
+       [AC_LANG_PROGRAM(
+          [[#include <stddef.h>
+            unsigned int s = sizeof (max_align_t);
+            #if defined __GNUC__ || defined __IBM__ALIGNOF__
+            int check1[2 * (__alignof__ (double) <= __alignof__ (max_align_t)) - 1];
+            int check2[2 * (__alignof__ (long double) <= __alignof__ (max_align_t)) - 1];
+            #endif
+          ]])],
+       [gl_cv_type_max_align_t=yes],
+       [gl_cv_type_max_align_t=no])
+    ])
+  if test $gl_cv_type_max_align_t = no; then
+    HAVE_MAX_ALIGN_T=0
+    STDDEF_H=stddef.h
+  fi
+
   if test $gt_cv_c_wchar_t = no; then
     HAVE_WCHAR_T=0
     STDDEF_H=stddef.h
   fi
+
   AC_CACHE_CHECK([whether NULL can be used in arbitrary expressions],
     [gl_cv_decl_null_works],
     [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stddef.h>
@@ -25,6 +48,7 @@ AC_DEFUN([gl_STDDEF_H],
     REPLACE_NULL=1
     STDDEF_H=stddef.h
   fi
+
   AC_SUBST([STDDEF_H])
   AM_CONDITIONAL([GL_GENERATE_STDDEF_H], [test -n "$STDDEF_H"])
   if test -n "$STDDEF_H"; then
@@ -43,5 +67,6 @@ AC_DEFUN([gl_STDDEF_H_DEFAULTS],
 [
   dnl Assume proper GNU behavior unless another module says otherwise.
   REPLACE_NULL=0;                AC_SUBST([REPLACE_NULL])
+  HAVE_MAX_ALIGN_T=1;            AC_SUBST([HAVE_MAX_ALIGN_T])
   HAVE_WCHAR_T=1;                AC_SUBST([HAVE_WCHAR_T])
 ])
similarity index 81%
rename from src/libs/gnulib/m4/stdint.m4
rename to gnulib_m4/stdint.m4
index 1981d9d..38dbbed 100644 (file)
@@ -1,5 +1,5 @@
-# stdint.m4 serial 43
-dnl Copyright (C) 2001-2014 Free Software Foundation, Inc.
+# stdint.m4 serial 52
+dnl Copyright (C) 2001-2018 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
 dnl with or without modifications, as long as this notice is preserved.
@@ -10,6 +10,10 @@ dnl Test whether <stdint.h> is supported or must be substituted.
 AC_DEFUN_ONCE([gl_STDINT_H],
 [
   AC_PREREQ([2.59])dnl
+  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+
+  AC_REQUIRE([gl_LIMITS_H])
+  AC_REQUIRE([gt_TYPE_WINT_T])
 
   dnl Check for long long int and unsigned long long int.
   AC_REQUIRE([AC_TYPE_LONG_LONG_INT])
@@ -70,6 +74,8 @@ AC_DEFUN_ONCE([gl_STDINT_H],
        AC_COMPILE_IFELSE([
          AC_LANG_PROGRAM([[
 #define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */
+#define __STDC_CONSTANT_MACROS 1
+#define __STDC_LIMIT_MACROS 1
 #include <stdint.h>
 /* Dragonfly defines WCHAR_MIN, WCHAR_MAX only in <wchar.h>.  */
 #if !(defined WCHAR_MIN && defined WCHAR_MAX)
@@ -150,6 +156,15 @@ uintptr_t h = UINTPTR_MAX;
 intmax_t i = INTMAX_MAX;
 uintmax_t j = UINTMAX_MAX;
 
+/* Check that SIZE_MAX has the correct type, if possible.  */
+#if 201112 <= __STDC_VERSION__
+int k = _Generic (SIZE_MAX, size_t: 0);
+#elif (2 <= __GNUC__ || defined __IBM__TYPEOF__ \
+       || (0x5110 <= __SUNPRO_C && !__STDC__))
+extern size_t k;
+extern __typeof__ (SIZE_MAX) k;
+#endif
+
 #include <limits.h> /* for CHAR_BIT */
 #define TYPE_MINIMUM(t) \
   ((t) ((t) 0 < (t) -1 ? (t) 0 : ~ TYPE_MAXIMUM (t)))
@@ -218,6 +233,8 @@ struct s {
           AC_RUN_IFELSE([
             AC_LANG_PROGRAM([[
 #define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */
+#define __STDC_CONSTANT_MACROS 1
+#define __STDC_LIMIT_MACROS 1
 #include <stdint.h>
 ]
 gl_STDINT_INCLUDES
@@ -272,34 +289,86 @@ static const char *macro_values[] =
 ]])],
               [gl_cv_header_working_stdint_h=yes],
               [],
-              [dnl When cross-compiling, assume it works.
-               gl_cv_header_working_stdint_h=yes
+              [case "$host_os" in
+                         # Guess yes on native Windows.
+                 mingw*) gl_cv_header_working_stdint_h="guessing yes" ;;
+                         # In general, assume it works.
+                 *)      gl_cv_header_working_stdint_h="guessing yes" ;;
+               esac
               ])
          ])
       ])
   fi
-  if test "$gl_cv_header_working_stdint_h" = yes; then
-    STDINT_H=
-  else
-    dnl Check for <sys/inttypes.h>, and for
-    dnl <sys/bitypes.h> (used in Linux libc4 >= 4.6.7 and libc5).
-    AC_CHECK_HEADERS([sys/inttypes.h sys/bitypes.h])
-    if test $ac_cv_header_sys_inttypes_h = yes; then
-      HAVE_SYS_INTTYPES_H=1
-    else
-      HAVE_SYS_INTTYPES_H=0
-    fi
-    AC_SUBST([HAVE_SYS_INTTYPES_H])
-    if test $ac_cv_header_sys_bitypes_h = yes; then
-      HAVE_SYS_BITYPES_H=1
-    else
-      HAVE_SYS_BITYPES_H=0
-    fi
-    AC_SUBST([HAVE_SYS_BITYPES_H])
 
-    gl_STDINT_TYPE_PROPERTIES
-    STDINT_H=stdint.h
-  fi
+  HAVE_C99_STDINT_H=0
+  HAVE_SYS_BITYPES_H=0
+  HAVE_SYS_INTTYPES_H=0
+  STDINT_H=stdint.h
+  case "$gl_cv_header_working_stdint_h" in
+    *yes)
+      HAVE_C99_STDINT_H=1
+      dnl Now see whether the system <stdint.h> works without
+      dnl __STDC_CONSTANT_MACROS/__STDC_LIMIT_MACROS defined.
+      AC_CACHE_CHECK([whether stdint.h predates C++11],
+        [gl_cv_header_stdint_predates_cxx11_h],
+        [gl_cv_header_stdint_predates_cxx11_h=yes
+         AC_COMPILE_IFELSE([
+           AC_LANG_PROGRAM([[
+#define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */
+#include <stdint.h>
+]
+gl_STDINT_INCLUDES
+[
+intmax_t im = INTMAX_MAX;
+int32_t i32 = INT32_C (0x7fffffff);
+           ]])],
+           [gl_cv_header_stdint_predates_cxx11_h=no])])
+
+      if test "$gl_cv_header_stdint_predates_cxx11_h" = yes; then
+        AC_DEFINE([__STDC_CONSTANT_MACROS], [1],
+                  [Define to 1 if the system <stdint.h> predates C++11.])
+        AC_DEFINE([__STDC_LIMIT_MACROS], [1],
+                  [Define to 1 if the system <stdint.h> predates C++11.])
+      fi
+      AC_CACHE_CHECK([whether stdint.h has UINTMAX_WIDTH etc.],
+        [gl_cv_header_stdint_width],
+        [gl_cv_header_stdint_width=no
+         AC_COMPILE_IFELSE(
+           [AC_LANG_PROGRAM([[
+              /* Work if build is not clean.  */
+              #define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1
+              #ifndef __STDC_WANT_IEC_60559_BFP_EXT__
+               #define __STDC_WANT_IEC_60559_BFP_EXT__ 1
+              #endif
+              #include <stdint.h>
+              ]gl_STDINT_INCLUDES[
+              int iw = UINTMAX_WIDTH;
+              ]])],
+           [gl_cv_header_stdint_width=yes])])
+      if test "$gl_cv_header_stdint_width" = yes; then
+        STDINT_H=
+      fi
+      ;;
+    *)
+      dnl Check for <sys/inttypes.h>, and for
+      dnl <sys/bitypes.h> (used in Linux libc4 >= 4.6.7 and libc5).
+      AC_CHECK_HEADERS([sys/inttypes.h sys/bitypes.h])
+      if test $ac_cv_header_sys_inttypes_h = yes; then
+        HAVE_SYS_INTTYPES_H=1
+      fi
+      if test $ac_cv_header_sys_bitypes_h = yes; then
+        HAVE_SYS_BITYPES_H=1
+      fi
+      gl_STDINT_TYPE_PROPERTIES
+      ;;
+  esac
+
+  dnl The substitute stdint.h needs the substitute limit.h's _GL_INTEGER_WIDTH.
+  gl_REPLACE_LIMITS_H
+
+  AC_SUBST([HAVE_C99_STDINT_H])
+  AC_SUBST([HAVE_SYS_BITYPES_H])
+  AC_SUBST([HAVE_SYS_INTTYPES_H])
   AC_SUBST([STDINT_H])
   AM_CONDITIONAL([GL_GENERATE_STDINT_H], [test -n "$STDINT_H"])
 ])
@@ -467,7 +536,7 @@ AC_DEFUN([gl_STDINT_TYPE_PROPERTIES],
   dnl requirement that wint_t is "unchanged by default argument promotions".
   dnl In this case gnulib's <wchar.h> and <wctype.h> override wint_t.
   dnl Set the variable BITSIZEOF_WINT_T accordingly.
-  if test $BITSIZEOF_WINT_T -lt 32; then
+  if test $GNULIB_OVERRIDES_WINT_T = 1; then
     BITSIZEOF_WINT_T=32
   fi
 ])
@@ -477,8 +546,3 @@ dnl Remove this when we can assume autoconf >= 2.61.
 m4_ifdef([AC_COMPUTE_INT], [], [
   AC_DEFUN([AC_COMPUTE_INT], [_AC_COMPUTE_INT([$2],[$1],[$3],[$4])])
 ])
-
-# Hey Emacs!
-# Local Variables:
-# indent-tabs-mode: nil
-# End:
diff --git a/gnulib_m4/stdint_h.m4 b/gnulib_m4/stdint_h.m4
new file mode 100644 (file)
index 0000000..2d2a33c
--- /dev/null
@@ -0,0 +1,27 @@
+# stdint_h.m4 serial 9
+dnl Copyright (C) 1997-2004, 2006, 2008-2018 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Paul Eggert.
+
+# Define HAVE_STDINT_H_WITH_UINTMAX if <stdint.h> exists,
+# doesn't clash with <sys/types.h>, and declares uintmax_t.
+
+AC_DEFUN([gl_AC_HEADER_STDINT_H],
+[
+  AC_CACHE_CHECK([for stdint.h], [gl_cv_header_stdint_h],
+    [AC_COMPILE_IFELSE(
+       [AC_LANG_PROGRAM(
+          [[#include <sys/types.h>
+            #include <stdint.h>]],
+          [[uintmax_t i = (uintmax_t) -1; return !i;]])],
+       [gl_cv_header_stdint_h=yes],
+       [gl_cv_header_stdint_h=no])])
+  if test $gl_cv_header_stdint_h = yes; then
+    AC_DEFINE_UNQUOTED([HAVE_STDINT_H_WITH_UINTMAX], [1],
+      [Define if <stdint.h> exists, doesn't clash with <sys/types.h>,
+       and declares uintmax_t. ])
+  fi
+])
diff --git a/gnulib_m4/stdio_h.m4 b/gnulib_m4/stdio_h.m4
new file mode 100644 (file)
index 0000000..0debe69
--- /dev/null
@@ -0,0 +1,225 @@
+# stdio_h.m4 serial 49
+dnl Copyright (C) 2007-2018 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_STDIO_H],
+[
+  AH_VERBATIM([MINGW_ANSI_STDIO],
+[/* Use GNU style printf and scanf.  */
+#ifndef __USE_MINGW_ANSI_STDIO
+# undef __USE_MINGW_ANSI_STDIO
+#endif
+])
+  AC_DEFINE([__USE_MINGW_ANSI_STDIO])
+  AC_REQUIRE([gl_STDIO_H_DEFAULTS])
+  gl_NEXT_HEADERS([stdio.h])
+
+  dnl Determine whether __USE_MINGW_ANSI_STDIO makes printf and
+  dnl inttypes.h behave like gnu instead of system; we must give our
+  dnl printf wrapper the right attribute to match.
+  AC_CACHE_CHECK([which flavor of printf attribute matches inttypes macros],
+    [gl_cv_func_printf_attribute_flavor],
+    [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+       #define __STDC_FORMAT_MACROS 1
+       #include <stdio.h>
+       #include <inttypes.h>
+       /* For non-mingw systems, compilation will trivially succeed.
+          For mingw, compilation will succeed for older mingw (system
+          printf, "I64d") and fail for newer mingw (gnu printf, "lld"). */
+       #if (defined _WIN32 && ! defined __CYGWIN__) && \
+         (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
+       extern char PRIdMAX_probe[sizeof PRIdMAX == sizeof "I64d" ? 1 : -1];
+       #endif
+      ]])], [gl_cv_func_printf_attribute_flavor=system],
+      [gl_cv_func_printf_attribute_flavor=gnu])])
+  if test "$gl_cv_func_printf_attribute_flavor" = gnu; then
+    AC_DEFINE([GNULIB_PRINTF_ATTRIBUTE_FLAVOR_GNU], [1],
+      [Define to 1 if printf and friends should be labeled with
+       attribute "__gnu_printf__" instead of "__printf__"])
+  fi
+
+  dnl No need to create extra modules for these functions. Everyone who uses
+  dnl <stdio.h> likely needs them.
+  GNULIB_FSCANF=1
+  gl_MODULE_INDICATOR([fscanf])
+  GNULIB_SCANF=1
+  gl_MODULE_INDICATOR([scanf])
+  GNULIB_FGETC=1
+  GNULIB_GETC=1
+  GNULIB_GETCHAR=1
+  GNULIB_FGETS=1
+  GNULIB_FREAD=1
+  dnl This ifdef is necessary to avoid an error "missing file lib/stdio-read.c"
+  dnl "expected source file, required through AC_LIBSOURCES, not found". It is
+  dnl also an optimization, to avoid performing a configure check whose result
+  dnl is not used. But it does not make the test of GNULIB_STDIO_H_NONBLOCKING
+  dnl or GNULIB_NONBLOCKING redundant.
+  m4_ifdef([gl_NONBLOCKING_IO], [
+    gl_NONBLOCKING_IO
+    if test $gl_cv_have_nonblocking != yes; then
+      REPLACE_STDIO_READ_FUNCS=1
+      AC_LIBOBJ([stdio-read])
+    fi
+  ])
+
+  dnl No need to create extra modules for these functions. Everyone who uses
+  dnl <stdio.h> likely needs them.
+  GNULIB_FPRINTF=1
+  GNULIB_PRINTF=1
+  GNULIB_VFPRINTF=1
+  GNULIB_VPRINTF=1
+  GNULIB_FPUTC=1
+  GNULIB_PUTC=1
+  GNULIB_PUTCHAR=1
+  GNULIB_FPUTS=1
+  GNULIB_PUTS=1
+  GNULIB_FWRITE=1
+  dnl This ifdef is necessary to avoid an error "missing file lib/stdio-write.c"
+  dnl "expected source file, required through AC_LIBSOURCES, not found". It is
+  dnl also an optimization, to avoid performing a configure check whose result
+  dnl is not used. But it does not make the test of GNULIB_STDIO_H_SIGPIPE or
+  dnl GNULIB_SIGPIPE redundant.
+  m4_ifdef([gl_SIGNAL_SIGPIPE], [
+    gl_SIGNAL_SIGPIPE
+    if test $gl_cv_header_signal_h_SIGPIPE != yes; then
+      REPLACE_STDIO_WRITE_FUNCS=1
+      AC_LIBOBJ([stdio-write])
+    fi
+  ])
+  dnl This ifdef is necessary to avoid an error "missing file lib/stdio-write.c"
+  dnl "expected source file, required through AC_LIBSOURCES, not found". It is
+  dnl also an optimization, to avoid performing a configure check whose result
+  dnl is not used. But it does not make the test of GNULIB_STDIO_H_NONBLOCKING
+  dnl or GNULIB_NONBLOCKING redundant.
+  m4_ifdef([gl_NONBLOCKING_IO], [
+    gl_NONBLOCKING_IO
+    if test $gl_cv_have_nonblocking != yes; then
+      REPLACE_STDIO_WRITE_FUNCS=1
+      AC_LIBOBJ([stdio-write])
+    fi
+  ])
+
+  dnl Check for declarations of anything we want to poison if the
+  dnl corresponding gnulib module is not in use, and which is not
+  dnl guaranteed by both C89 and C11.
+  gl_WARN_ON_USE_PREPARE([[#include <stdio.h>
+    ]], [dprintf fpurge fseeko ftello getdelim getline gets pclose popen
+    renameat snprintf tmpfile vdprintf vsnprintf])
+])
+
+AC_DEFUN([gl_STDIO_MODULE_INDICATOR],
+[
+  dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+  AC_REQUIRE([gl_STDIO_H_DEFAULTS])
+  gl_MODULE_INDICATOR_SET_VARIABLE([$1])
+  dnl Define it also as a C macro, for the benefit of the unit tests.
+  gl_MODULE_INDICATOR_FOR_TESTS([$1])
+])
+
+AC_DEFUN([gl_STDIO_H_DEFAULTS],
+[
+  GNULIB_DPRINTF=0;              AC_SUBST([GNULIB_DPRINTF])
+  GNULIB_FCLOSE=0;               AC_SUBST([GNULIB_FCLOSE])
+  GNULIB_FDOPEN=0;               AC_SUBST([GNULIB_FDOPEN])
+  GNULIB_FFLUSH=0;               AC_SUBST([GNULIB_FFLUSH])
+  GNULIB_FGETC=0;                AC_SUBST([GNULIB_FGETC])
+  GNULIB_FGETS=0;                AC_SUBST([GNULIB_FGETS])
+  GNULIB_FOPEN=0;                AC_SUBST([GNULIB_FOPEN])
+  GNULIB_FPRINTF=0;              AC_SUBST([GNULIB_FPRINTF])
+  GNULIB_FPRINTF_POSIX=0;        AC_SUBST([GNULIB_FPRINTF_POSIX])
+  GNULIB_FPURGE=0;               AC_SUBST([GNULIB_FPURGE])
+  GNULIB_FPUTC=0;                AC_SUBST([GNULIB_FPUTC])
+  GNULIB_FPUTS=0;                AC_SUBST([GNULIB_FPUTS])
+  GNULIB_FREAD=0;                AC_SUBST([GNULIB_FREAD])
+  GNULIB_FREOPEN=0;              AC_SUBST([GNULIB_FREOPEN])
+  GNULIB_FSCANF=0;               AC_SUBST([GNULIB_FSCANF])
+  GNULIB_FSEEK=0;                AC_SUBST([GNULIB_FSEEK])
+  GNULIB_FSEEKO=0;               AC_SUBST([GNULIB_FSEEKO])
+  GNULIB_FTELL=0;                AC_SUBST([GNULIB_FTELL])
+  GNULIB_FTELLO=0;               AC_SUBST([GNULIB_FTELLO])
+  GNULIB_FWRITE=0;               AC_SUBST([GNULIB_FWRITE])
+  GNULIB_GETC=0;                 AC_SUBST([GNULIB_GETC])
+  GNULIB_GETCHAR=0;              AC_SUBST([GNULIB_GETCHAR])
+  GNULIB_GETDELIM=0;             AC_SUBST([GNULIB_GETDELIM])
+  GNULIB_GETLINE=0;              AC_SUBST([GNULIB_GETLINE])
+  GNULIB_OBSTACK_PRINTF=0;       AC_SUBST([GNULIB_OBSTACK_PRINTF])
+  GNULIB_OBSTACK_PRINTF_POSIX=0; AC_SUBST([GNULIB_OBSTACK_PRINTF_POSIX])
+  GNULIB_PCLOSE=0;               AC_SUBST([GNULIB_PCLOSE])
+  GNULIB_PERROR=0;               AC_SUBST([GNULIB_PERROR])
+  GNULIB_POPEN=0;                AC_SUBST([GNULIB_POPEN])
+  GNULIB_PRINTF=0;               AC_SUBST([GNULIB_PRINTF])
+  GNULIB_PRINTF_POSIX=0;         AC_SUBST([GNULIB_PRINTF_POSIX])
+  GNULIB_PUTC=0;                 AC_SUBST([GNULIB_PUTC])
+  GNULIB_PUTCHAR=0;              AC_SUBST([GNULIB_PUTCHAR])
+  GNULIB_PUTS=0;                 AC_SUBST([GNULIB_PUTS])
+  GNULIB_REMOVE=0;               AC_SUBST([GNULIB_REMOVE])
+  GNULIB_RENAME=0;               AC_SUBST([GNULIB_RENAME])
+  GNULIB_RENAMEAT=0;             AC_SUBST([GNULIB_RENAMEAT])
+  GNULIB_SCANF=0;                AC_SUBST([GNULIB_SCANF])
+  GNULIB_SNPRINTF=0;             AC_SUBST([GNULIB_SNPRINTF])
+  GNULIB_SPRINTF_POSIX=0;        AC_SUBST([GNULIB_SPRINTF_POSIX])
+  GNULIB_STDIO_H_NONBLOCKING=0;  AC_SUBST([GNULIB_STDIO_H_NONBLOCKING])
+  GNULIB_STDIO_H_SIGPIPE=0;      AC_SUBST([GNULIB_STDIO_H_SIGPIPE])
+  GNULIB_TMPFILE=0;              AC_SUBST([GNULIB_TMPFILE])
+  GNULIB_VASPRINTF=0;            AC_SUBST([GNULIB_VASPRINTF])
+  GNULIB_VFSCANF=0;              AC_SUBST([GNULIB_VFSCANF])
+  GNULIB_VSCANF=0;               AC_SUBST([GNULIB_VSCANF])
+  GNULIB_VDPRINTF=0;             AC_SUBST([GNULIB_VDPRINTF])
+  GNULIB_VFPRINTF=0;             AC_SUBST([GNULIB_VFPRINTF])
+  GNULIB_VFPRINTF_POSIX=0;       AC_SUBST([GNULIB_VFPRINTF_POSIX])
+  GNULIB_VPRINTF=0;              AC_SUBST([GNULIB_VPRINTF])
+  GNULIB_VPRINTF_POSIX=0;        AC_SUBST([GNULIB_VPRINTF_POSIX])
+  GNULIB_VSNPRINTF=0;            AC_SUBST([GNULIB_VSNPRINTF])
+  GNULIB_VSPRINTF_POSIX=0;       AC_SUBST([GNULIB_VSPRINTF_POSIX])
+  dnl Assume proper GNU behavior unless another module says otherwise.
+  HAVE_DECL_FPURGE=1;            AC_SUBST([HAVE_DECL_FPURGE])
+  HAVE_DECL_FSEEKO=1;            AC_SUBST([HAVE_DECL_FSEEKO])
+  HAVE_DECL_FTELLO=1;            AC_SUBST([HAVE_DECL_FTELLO])
+  HAVE_DECL_GETDELIM=1;          AC_SUBST([HAVE_DECL_GETDELIM])
+  HAVE_DECL_GETLINE=1;           AC_SUBST([HAVE_DECL_GETLINE])
+  HAVE_DECL_OBSTACK_PRINTF=1;    AC_SUBST([HAVE_DECL_OBSTACK_PRINTF])
+  HAVE_DECL_SNPRINTF=1;          AC_SUBST([HAVE_DECL_SNPRINTF])
+  HAVE_DECL_VSNPRINTF=1;         AC_SUBST([HAVE_DECL_VSNPRINTF])
+  HAVE_DPRINTF=1;                AC_SUBST([HAVE_DPRINTF])
+  HAVE_FSEEKO=1;                 AC_SUBST([HAVE_FSEEKO])
+  HAVE_FTELLO=1;                 AC_SUBST([HAVE_FTELLO])
+  HAVE_PCLOSE=1;                 AC_SUBST([HAVE_PCLOSE])
+  HAVE_POPEN=1;                  AC_SUBST([HAVE_POPEN])
+  HAVE_RENAMEAT=1;               AC_SUBST([HAVE_RENAMEAT])
+  HAVE_VASPRINTF=1;              AC_SUBST([HAVE_VASPRINTF])
+  HAVE_VDPRINTF=1;               AC_SUBST([HAVE_VDPRINTF])
+  REPLACE_DPRINTF=0;             AC_SUBST([REPLACE_DPRINTF])
+  REPLACE_FCLOSE=0;              AC_SUBST([REPLACE_FCLOSE])
+  REPLACE_FDOPEN=0;              AC_SUBST([REPLACE_FDOPEN])
+  REPLACE_FFLUSH=0;              AC_SUBST([REPLACE_FFLUSH])
+  REPLACE_FOPEN=0;               AC_SUBST([REPLACE_FOPEN])
+  REPLACE_FPRINTF=0;             AC_SUBST([REPLACE_FPRINTF])
+  REPLACE_FPURGE=0;              AC_SUBST([REPLACE_FPURGE])
+  REPLACE_FREOPEN=0;             AC_SUBST([REPLACE_FREOPEN])
+  REPLACE_FSEEK=0;               AC_SUBST([REPLACE_FSEEK])
+  REPLACE_FSEEKO=0;              AC_SUBST([REPLACE_FSEEKO])
+  REPLACE_FTELL=0;               AC_SUBST([REPLACE_FTELL])
+  REPLACE_FTELLO=0;              AC_SUBST([REPLACE_FTELLO])
+  REPLACE_GETDELIM=0;            AC_SUBST([REPLACE_GETDELIM])
+  REPLACE_GETLINE=0;             AC_SUBST([REPLACE_GETLINE])
+  REPLACE_OBSTACK_PRINTF=0;      AC_SUBST([REPLACE_OBSTACK_PRINTF])
+  REPLACE_PERROR=0;              AC_SUBST([REPLACE_PERROR])
+  REPLACE_POPEN=0;               AC_SUBST([REPLACE_POPEN])
+  REPLACE_PRINTF=0;              AC_SUBST([REPLACE_PRINTF])
+  REPLACE_REMOVE=0;              AC_SUBST([REPLACE_REMOVE])
+  REPLACE_RENAME=0;              AC_SUBST([REPLACE_RENAME])
+  REPLACE_RENAMEAT=0;            AC_SUBST([REPLACE_RENAMEAT])
+  REPLACE_SNPRINTF=0;            AC_SUBST([REPLACE_SNPRINTF])
+  REPLACE_SPRINTF=0;             AC_SUBST([REPLACE_SPRINTF])
+  REPLACE_STDIO_READ_FUNCS=0;    AC_SUBST([REPLACE_STDIO_READ_FUNCS])
+  REPLACE_STDIO_WRITE_FUNCS=0;   AC_SUBST([REPLACE_STDIO_WRITE_FUNCS])
+  REPLACE_TMPFILE=0;             AC_SUBST([REPLACE_TMPFILE])
+  REPLACE_VASPRINTF=0;           AC_SUBST([REPLACE_VASPRINTF])
+  REPLACE_VDPRINTF=0;            AC_SUBST([REPLACE_VDPRINTF])
+  REPLACE_VFPRINTF=0;            AC_SUBST([REPLACE_VFPRINTF])
+  REPLACE_VPRINTF=0;             AC_SUBST([REPLACE_VPRINTF])
+  REPLACE_VSNPRINTF=0;           AC_SUBST([REPLACE_VSNPRINTF])
+  REPLACE_VSPRINTF=0;            AC_SUBST([REPLACE_VSPRINTF])
+])
diff --git a/gnulib_m4/string_h.m4 b/gnulib_m4/string_h.m4
new file mode 100644 (file)
index 0000000..97c80dc
--- /dev/null
@@ -0,0 +1,122 @@
+# Configure a GNU-like replacement for <string.h>.
+
+# Copyright (C) 2007-2018 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 22
+
+# Written by Paul Eggert.
+
+AC_DEFUN([gl_HEADER_STRING_H],
+[
+  dnl Use AC_REQUIRE here, so that the default behavior below is expanded
+  dnl once only, before all statements that occur in other macros.
+  AC_REQUIRE([gl_HEADER_STRING_H_BODY])
+])
+
+AC_DEFUN([gl_HEADER_STRING_H_BODY],
+[
+  AC_REQUIRE([AC_C_RESTRICT])
+  AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
+  gl_NEXT_HEADERS([string.h])
+
+  dnl Check for declarations of anything we want to poison if the
+  dnl corresponding gnulib module is not in use, and which is not
+  dnl guaranteed by C89.
+  gl_WARN_ON_USE_PREPARE([[#include <string.h>
+    ]],
+    [ffsl ffsll memmem mempcpy memrchr rawmemchr stpcpy stpncpy strchrnul
+     strdup strncat strndup strnlen strpbrk strsep strcasestr strtok_r
+     strerror_r strsignal strverscmp])
+])
+
+AC_DEFUN([gl_STRING_MODULE_INDICATOR],
+[
+  dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+  AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
+  gl_MODULE_INDICATOR_SET_VARIABLE([$1])
+  dnl Define it also as a C macro, for the benefit of the unit tests.
+  gl_MODULE_INDICATOR_FOR_TESTS([$1])
+])
+
+AC_DEFUN([gl_HEADER_STRING_H_DEFAULTS],
+[
+  GNULIB_EXPLICIT_BZERO=0; AC_SUBST([GNULIB_EXPLICIT_BZERO])
+  GNULIB_FFSL=0;        AC_SUBST([GNULIB_FFSL])
+  GNULIB_FFSLL=0;       AC_SUBST([GNULIB_FFSLL])
+  GNULIB_MEMCHR=0;      AC_SUBST([GNULIB_MEMCHR])
+  GNULIB_MEMMEM=0;      AC_SUBST([GNULIB_MEMMEM])
+  GNULIB_MEMPCPY=0;     AC_SUBST([GNULIB_MEMPCPY])
+  GNULIB_MEMRCHR=0;     AC_SUBST([GNULIB_MEMRCHR])
+  GNULIB_RAWMEMCHR=0;   AC_SUBST([GNULIB_RAWMEMCHR])
+  GNULIB_STPCPY=0;      AC_SUBST([GNULIB_STPCPY])
+  GNULIB_STPNCPY=0;     AC_SUBST([GNULIB_STPNCPY])
+  GNULIB_STRCHRNUL=0;   AC_SUBST([GNULIB_STRCHRNUL])
+  GNULIB_STRDUP=0;      AC_SUBST([GNULIB_STRDUP])
+  GNULIB_STRNCAT=0;     AC_SUBST([GNULIB_STRNCAT])
+  GNULIB_STRNDUP=0;     AC_SUBST([GNULIB_STRNDUP])
+  GNULIB_STRNLEN=0;     AC_SUBST([GNULIB_STRNLEN])
+  GNULIB_STRPBRK=0;     AC_SUBST([GNULIB_STRPBRK])
+  GNULIB_STRSEP=0;      AC_SUBST([GNULIB_STRSEP])
+  GNULIB_STRSTR=0;      AC_SUBST([GNULIB_STRSTR])
+  GNULIB_STRCASESTR=0;  AC_SUBST([GNULIB_STRCASESTR])
+  GNULIB_STRTOK_R=0;    AC_SUBST([GNULIB_STRTOK_R])
+  GNULIB_MBSLEN=0;      AC_SUBST([GNULIB_MBSLEN])
+  GNULIB_MBSNLEN=0;     AC_SUBST([GNULIB_MBSNLEN])
+  GNULIB_MBSCHR=0;      AC_SUBST([GNULIB_MBSCHR])
+  GNULIB_MBSRCHR=0;     AC_SUBST([GNULIB_MBSRCHR])
+  GNULIB_MBSSTR=0;      AC_SUBST([GNULIB_MBSSTR])
+  GNULIB_MBSCASECMP=0;  AC_SUBST([GNULIB_MBSCASECMP])
+  GNULIB_MBSNCASECMP=0; AC_SUBST([GNULIB_MBSNCASECMP])
+  GNULIB_MBSPCASECMP=0; AC_SUBST([GNULIB_MBSPCASECMP])
+  GNULIB_MBSCASESTR=0;  AC_SUBST([GNULIB_MBSCASESTR])
+  GNULIB_MBSCSPN=0;     AC_SUBST([GNULIB_MBSCSPN])
+  GNULIB_MBSPBRK=0;     AC_SUBST([GNULIB_MBSPBRK])
+  GNULIB_MBSSPN=0;      AC_SUBST([GNULIB_MBSSPN])
+  GNULIB_MBSSEP=0;      AC_SUBST([GNULIB_MBSSEP])
+  GNULIB_MBSTOK_R=0;    AC_SUBST([GNULIB_MBSTOK_R])
+  GNULIB_STRERROR=0;    AC_SUBST([GNULIB_STRERROR])
+  GNULIB_STRERROR_R=0;  AC_SUBST([GNULIB_STRERROR_R])
+  GNULIB_STRSIGNAL=0;   AC_SUBST([GNULIB_STRSIGNAL])
+  GNULIB_STRVERSCMP=0;  AC_SUBST([GNULIB_STRVERSCMP])
+  HAVE_MBSLEN=0;        AC_SUBST([HAVE_MBSLEN])
+  dnl Assume proper GNU behavior unless another module says otherwise.
+  HAVE_EXPLICIT_BZERO=1;        AC_SUBST([HAVE_EXPLICIT_BZERO])
+  HAVE_FFSL=1;                  AC_SUBST([HAVE_FFSL])
+  HAVE_FFSLL=1;                 AC_SUBST([HAVE_FFSLL])
+  HAVE_MEMCHR=1;                AC_SUBST([HAVE_MEMCHR])
+  HAVE_DECL_MEMMEM=1;           AC_SUBST([HAVE_DECL_MEMMEM])
+  HAVE_MEMPCPY=1;               AC_SUBST([HAVE_MEMPCPY])
+  HAVE_DECL_MEMRCHR=1;          AC_SUBST([HAVE_DECL_MEMRCHR])
+  HAVE_RAWMEMCHR=1;             AC_SUBST([HAVE_RAWMEMCHR])
+  HAVE_STPCPY=1;                AC_SUBST([HAVE_STPCPY])
+  HAVE_STPNCPY=1;               AC_SUBST([HAVE_STPNCPY])
+  HAVE_STRCHRNUL=1;             AC_SUBST([HAVE_STRCHRNUL])
+  HAVE_DECL_STRDUP=1;           AC_SUBST([HAVE_DECL_STRDUP])
+  HAVE_DECL_STRNDUP=1;          AC_SUBST([HAVE_DECL_STRNDUP])
+  HAVE_DECL_STRNLEN=1;          AC_SUBST([HAVE_DECL_STRNLEN])
+  HAVE_STRPBRK=1;               AC_SUBST([HAVE_STRPBRK])
+  HAVE_STRSEP=1;                AC_SUBST([HAVE_STRSEP])
+  HAVE_STRCASESTR=1;            AC_SUBST([HAVE_STRCASESTR])
+  HAVE_DECL_STRTOK_R=1;         AC_SUBST([HAVE_DECL_STRTOK_R])
+  HAVE_DECL_STRERROR_R=1;       AC_SUBST([HAVE_DECL_STRERROR_R])
+  HAVE_DECL_STRSIGNAL=1;        AC_SUBST([HAVE_DECL_STRSIGNAL])
+  HAVE_STRVERSCMP=1;            AC_SUBST([HAVE_STRVERSCMP])
+  REPLACE_MEMCHR=0;             AC_SUBST([REPLACE_MEMCHR])
+  REPLACE_MEMMEM=0;             AC_SUBST([REPLACE_MEMMEM])
+  REPLACE_STPNCPY=0;            AC_SUBST([REPLACE_STPNCPY])
+  REPLACE_STRCHRNUL=0;          AC_SUBST([REPLACE_STRCHRNUL])
+  REPLACE_STRDUP=0;             AC_SUBST([REPLACE_STRDUP])
+  REPLACE_STRNCAT=0;            AC_SUBST([REPLACE_STRNCAT])
+  REPLACE_STRNDUP=0;            AC_SUBST([REPLACE_STRNDUP])
+  REPLACE_STRNLEN=0;            AC_SUBST([REPLACE_STRNLEN])
+  REPLACE_STRSTR=0;             AC_SUBST([REPLACE_STRSTR])
+  REPLACE_STRCASESTR=0;         AC_SUBST([REPLACE_STRCASESTR])
+  REPLACE_STRTOK_R=0;           AC_SUBST([REPLACE_STRTOK_R])
+  REPLACE_STRERROR=0;           AC_SUBST([REPLACE_STRERROR])
+  REPLACE_STRERROR_R=0;         AC_SUBST([REPLACE_STRERROR_R])
+  REPLACE_STRSIGNAL=0;          AC_SUBST([REPLACE_STRSIGNAL])
+  UNDEFINE_STRTOK_R=0;          AC_SUBST([UNDEFINE_STRTOK_R])
+])
diff --git a/gnulib_m4/sys_types_h.m4 b/gnulib_m4/sys_types_h.m4
new file mode 100644 (file)
index 0000000..2debfb0
--- /dev/null
@@ -0,0 +1,60 @@
+# sys_types_h.m4 serial 9
+dnl Copyright (C) 2011-2018 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN_ONCE([gl_SYS_TYPES_H],
+[
+  dnl Use sane struct stat types in OpenVMS 8.2 and later.
+  AC_DEFINE([_USE_STD_STAT], 1, [For standard stat data types on VMS.])
+
+  AC_REQUIRE([gl_SYS_TYPES_H_DEFAULTS])
+  gl_NEXT_HEADERS([sys/types.h])
+
+  dnl Ensure the type pid_t gets defined.
+  AC_REQUIRE([AC_TYPE_PID_T])
+
+  dnl Ensure the type mode_t gets defined.
+  AC_REQUIRE([AC_TYPE_MODE_T])
+
+  dnl Whether to override the 'off_t' type.
+  AC_REQUIRE([gl_TYPE_OFF_T])
+
+  dnl Whether to override the 'dev_t' and 'ino_t' types.
+  m4_ifdef([gl_WINDOWS_STAT_INODES], [
+    AC_REQUIRE([gl_WINDOWS_STAT_INODES])
+  ], [
+    WINDOWS_STAT_INODES=0
+  ])
+  AC_SUBST([WINDOWS_STAT_INODES])
+])
+
+AC_DEFUN([gl_SYS_TYPES_H_DEFAULTS],
+[
+])
+
+# This works around a buggy version in autoconf <= 2.69.
+# See <https://lists.gnu.org/r/autoconf/2016-08/msg00014.html>
+
+m4_version_prereq([2.70], [], [
+
+# This is taken from the following Autoconf patch:
+# https://git.savannah.gnu.org/cgit/autoconf.git/commit/?id=e17a30e987d7ee695fb4294a82d987ec3dc9b974
+
+m4_undefine([AC_HEADER_MAJOR])
+AC_DEFUN([AC_HEADER_MAJOR],
+[AC_CHECK_HEADERS_ONCE([sys/types.h])
+AC_CHECK_HEADER([sys/mkdev.h],
+  [AC_DEFINE([MAJOR_IN_MKDEV], [1],
+    [Define to 1 if `major', `minor', and `makedev' are declared in
+     <mkdev.h>.])])
+if test $ac_cv_header_sys_mkdev_h = no; then
+  AC_CHECK_HEADER([sys/sysmacros.h],
+    [AC_DEFINE([MAJOR_IN_SYSMACROS], [1],
+      [Define to 1 if `major', `minor', and `makedev' are declared in
+       <sysmacros.h>.])])
+fi
+])
+
+])
diff --git a/gnulib_m4/vasnprintf.m4 b/gnulib_m4/vasnprintf.m4
new file mode 100644 (file)
index 0000000..b3fda27
--- /dev/null
@@ -0,0 +1,291 @@
+# vasnprintf.m4 serial 36
+dnl Copyright (C) 2002-2004, 2006-2018 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_VASNPRINTF],
+[
+  AC_CHECK_FUNCS_ONCE([vasnprintf])
+  if test $ac_cv_func_vasnprintf = no; then
+    gl_REPLACE_VASNPRINTF
+  fi
+])
+
+AC_DEFUN([gl_REPLACE_VASNPRINTF],
+[
+  AC_CHECK_FUNCS_ONCE([vasnprintf])
+  AC_LIBOBJ([vasnprintf])
+  AC_LIBOBJ([printf-args])
+  AC_LIBOBJ([printf-parse])
+  AC_LIBOBJ([asnprintf])
+  if test $ac_cv_func_vasnprintf = yes; then
+    AC_DEFINE([REPLACE_VASNPRINTF], [1],
+      [Define if vasnprintf exists but is overridden by gnulib.])
+  fi
+  gl_PREREQ_PRINTF_ARGS
+  gl_PREREQ_PRINTF_PARSE
+  gl_PREREQ_VASNPRINTF
+  gl_PREREQ_ASNPRINTF
+])
+
+# Prerequisites of lib/printf-args.h, lib/printf-args.c.
+AC_DEFUN([gl_PREREQ_PRINTF_ARGS],
+[
+  AC_REQUIRE([AC_TYPE_LONG_LONG_INT])
+  AC_REQUIRE([gt_TYPE_WCHAR_T])
+  AC_REQUIRE([gt_TYPE_WINT_T])
+])
+
+# Prerequisites of lib/printf-parse.h, lib/printf-parse.c.
+AC_DEFUN([gl_PREREQ_PRINTF_PARSE],
+[
+  AC_REQUIRE([gl_FEATURES_H])
+  AC_REQUIRE([AC_TYPE_LONG_LONG_INT])
+  AC_REQUIRE([gt_TYPE_WCHAR_T])
+  AC_REQUIRE([gt_TYPE_WINT_T])
+  AC_REQUIRE([AC_TYPE_SIZE_T])
+  AC_CHECK_TYPE([ptrdiff_t], ,
+    [AC_DEFINE([ptrdiff_t], [long],
+       [Define as the type of the result of subtracting two pointers, if the system doesn't define it.])
+    ])
+  AC_REQUIRE([gt_AC_TYPE_INTMAX_T])
+])
+
+# Prerequisites of lib/vasnprintf.c.
+AC_DEFUN_ONCE([gl_PREREQ_VASNPRINTF],
+[
+  AC_REQUIRE([AC_FUNC_ALLOCA])
+  AC_REQUIRE([AC_TYPE_LONG_LONG_INT])
+  AC_REQUIRE([gt_TYPE_WCHAR_T])
+  AC_REQUIRE([gt_TYPE_WINT_T])
+  AC_CHECK_FUNCS([snprintf strnlen wcslen wcsnlen mbrtowc wcrtomb])
+  dnl Use the _snprintf function only if it is declared (because on NetBSD it
+  dnl is defined as a weak alias of snprintf; we prefer to use the latter).
+  AC_CHECK_DECLS([_snprintf], , , [[#include <stdio.h>]])
+  dnl Knowing DBL_EXPBIT0_WORD and DBL_EXPBIT0_BIT enables an optimization
+  dnl in the code for NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_DOUBLE.
+  AC_REQUIRE([gl_DOUBLE_EXPONENT_LOCATION])
+  dnl We can avoid a lot of code by assuming that snprintf's return value
+  dnl conforms to ISO C99. So check that.
+  AC_REQUIRE([gl_SNPRINTF_RETVAL_C99])
+  case "$gl_cv_func_snprintf_retval_c99" in
+    *yes)
+      AC_DEFINE([HAVE_SNPRINTF_RETVAL_C99], [1],
+        [Define if the return value of the snprintf function is the number of
+         of bytes (excluding the terminating NUL) that would have been produced
+         if the buffer had been large enough.])
+      ;;
+  esac
+])
+
+# Extra prerequisites of lib/vasnprintf.c for supporting 'long double'
+# arguments.
+AC_DEFUN_ONCE([gl_PREREQ_VASNPRINTF_LONG_DOUBLE],
+[
+  AC_REQUIRE([gl_PRINTF_LONG_DOUBLE])
+  case "$gl_cv_func_printf_long_double" in
+    *yes)
+      ;;
+    *)
+      AC_DEFINE([NEED_PRINTF_LONG_DOUBLE], [1],
+        [Define if the vasnprintf implementation needs special code for
+         'long double' arguments.])
+      ;;
+  esac
+])
+
+# Extra prerequisites of lib/vasnprintf.c for supporting infinite 'double'
+# arguments.
+AC_DEFUN([gl_PREREQ_VASNPRINTF_INFINITE_DOUBLE],
+[
+  AC_REQUIRE([gl_PRINTF_INFINITE])
+  case "$gl_cv_func_printf_infinite" in
+    *yes)
+      ;;
+    *)
+      AC_DEFINE([NEED_PRINTF_INFINITE_DOUBLE], [1],
+        [Define if the vasnprintf implementation needs special code for
+         infinite 'double' arguments.])
+      ;;
+  esac
+])
+
+# Extra prerequisites of lib/vasnprintf.c for supporting infinite 'long double'
+# arguments.
+AC_DEFUN([gl_PREREQ_VASNPRINTF_INFINITE_LONG_DOUBLE],
+[
+  AC_REQUIRE([gl_PRINTF_INFINITE_LONG_DOUBLE])
+  dnl There is no need to set NEED_PRINTF_INFINITE_LONG_DOUBLE if
+  dnl NEED_PRINTF_LONG_DOUBLE is already set.
+  AC_REQUIRE([gl_PREREQ_VASNPRINTF_LONG_DOUBLE])
+  case "$gl_cv_func_printf_long_double" in
+    *yes)
+      case "$gl_cv_func_printf_infinite_long_double" in
+        *yes)
+          ;;
+        *)
+          AC_DEFINE([NEED_PRINTF_INFINITE_LONG_DOUBLE], [1],
+            [Define if the vasnprintf implementation needs special code for
+             infinite 'long double' arguments.])
+          ;;
+      esac
+      ;;
+  esac
+])
+
+# Extra prerequisites of lib/vasnprintf.c for supporting the 'a' directive.
+AC_DEFUN([gl_PREREQ_VASNPRINTF_DIRECTIVE_A],
+[
+  AC_REQUIRE([gl_PRINTF_DIRECTIVE_A])
+  case "$gl_cv_func_printf_directive_a" in
+    *yes)
+      ;;
+    *)
+      AC_DEFINE([NEED_PRINTF_DIRECTIVE_A], [1],
+        [Define if the vasnprintf implementation needs special code for
+         the 'a' and 'A' directives.])
+      AC_CHECK_FUNCS([nl_langinfo])
+      ;;
+  esac
+])
+
+# Extra prerequisites of lib/vasnprintf.c for supporting the 'F' directive.
+AC_DEFUN([gl_PREREQ_VASNPRINTF_DIRECTIVE_F],
+[
+  AC_REQUIRE([gl_PRINTF_DIRECTIVE_F])
+  case "$gl_cv_func_printf_directive_f" in
+    *yes)
+      ;;
+    *)
+      AC_DEFINE([NEED_PRINTF_DIRECTIVE_F], [1],
+        [Define if the vasnprintf implementation needs special code for
+         the 'F' directive.])
+      ;;
+  esac
+])
+
+# Extra prerequisites of lib/vasnprintf.c for supporting the 'ls' directive.
+AC_DEFUN([gl_PREREQ_VASNPRINTF_DIRECTIVE_LS],
+[
+  AC_REQUIRE([gl_PRINTF_DIRECTIVE_LS])
+  case "$gl_cv_func_printf_directive_ls" in
+    *yes)
+      ;;
+    *)
+      AC_DEFINE([NEED_PRINTF_DIRECTIVE_LS], [1],
+        [Define if the vasnprintf implementation needs special code for
+         the 'ls' directive.])
+      ;;
+  esac
+])
+
+# Extra prerequisites of lib/vasnprintf.c for supporting the ' flag.
+AC_DEFUN([gl_PREREQ_VASNPRINTF_FLAG_GROUPING],
+[
+  AC_REQUIRE([gl_PRINTF_FLAG_GROUPING])
+  case "$gl_cv_func_printf_flag_grouping" in
+    *yes)
+      ;;
+    *)
+      AC_DEFINE([NEED_PRINTF_FLAG_GROUPING], [1],
+        [Define if the vasnprintf implementation needs special code for the
+         ' flag.])
+      ;;
+  esac
+])
+
+# Extra prerequisites of lib/vasnprintf.c for supporting the '-' flag.
+AC_DEFUN([gl_PREREQ_VASNPRINTF_FLAG_LEFTADJUST],
+[
+  AC_REQUIRE([gl_PRINTF_FLAG_LEFTADJUST])
+  case "$gl_cv_func_printf_flag_leftadjust" in
+    *yes)
+      ;;
+    *)
+      AC_DEFINE([NEED_PRINTF_FLAG_LEFTADJUST], [1],
+        [Define if the vasnprintf implementation needs special code for the
+         '-' flag.])
+      ;;
+  esac
+])
+
+# Extra prerequisites of lib/vasnprintf.c for supporting the 0 flag.
+AC_DEFUN([gl_PREREQ_VASNPRINTF_FLAG_ZERO],
+[
+  AC_REQUIRE([gl_PRINTF_FLAG_ZERO])
+  case "$gl_cv_func_printf_flag_zero" in
+    *yes)
+      ;;
+    *)
+      AC_DEFINE([NEED_PRINTF_FLAG_ZERO], [1],
+        [Define if the vasnprintf implementation needs special code for the
+         0 flag.])
+      ;;
+  esac
+])
+
+# Extra prerequisites of lib/vasnprintf.c for supporting large precisions.
+AC_DEFUN([gl_PREREQ_VASNPRINTF_PRECISION],
+[
+  AC_REQUIRE([gl_PRINTF_PRECISION])
+  case "$gl_cv_func_printf_precision" in
+    *yes)
+      ;;
+    *)
+      AC_DEFINE([NEED_PRINTF_UNBOUNDED_PRECISION], [1],
+        [Define if the vasnprintf implementation needs special code for
+         supporting large precisions without arbitrary bounds.])
+      AC_DEFINE([NEED_PRINTF_DOUBLE], [1],
+        [Define if the vasnprintf implementation needs special code for
+         'double' arguments.])
+      AC_DEFINE([NEED_PRINTF_LONG_DOUBLE], [1],
+        [Define if the vasnprintf implementation needs special code for
+         'long double' arguments.])
+      ;;
+  esac
+])
+
+# Extra prerequisites of lib/vasnprintf.c for surviving out-of-memory
+# conditions.
+AC_DEFUN([gl_PREREQ_VASNPRINTF_ENOMEM],
+[
+  AC_REQUIRE([gl_PRINTF_ENOMEM])
+  case "$gl_cv_func_printf_enomem" in
+    *yes)
+      ;;
+    *)
+      AC_DEFINE([NEED_PRINTF_ENOMEM], [1],
+        [Define if the vasnprintf implementation needs special code for
+         surviving out-of-memory conditions.])
+      AC_DEFINE([NEED_PRINTF_DOUBLE], [1],
+        [Define if the vasnprintf implementation needs special code for
+         'double' arguments.])
+      AC_DEFINE([NEED_PRINTF_LONG_DOUBLE], [1],
+        [Define if the vasnprintf implementation needs special code for
+         'long double' arguments.])
+      ;;
+  esac
+])
+
+# Prerequisites of lib/vasnprintf.c including all extras for POSIX compliance.
+AC_DEFUN([gl_PREREQ_VASNPRINTF_WITH_EXTRAS],
+[
+  AC_REQUIRE([gl_PREREQ_VASNPRINTF])
+  gl_PREREQ_VASNPRINTF_LONG_DOUBLE
+  gl_PREREQ_VASNPRINTF_INFINITE_DOUBLE
+  gl_PREREQ_VASNPRINTF_INFINITE_LONG_DOUBLE
+  gl_PREREQ_VASNPRINTF_DIRECTIVE_A
+  gl_PREREQ_VASNPRINTF_DIRECTIVE_F
+  gl_PREREQ_VASNPRINTF_DIRECTIVE_LS
+  gl_PREREQ_VASNPRINTF_FLAG_GROUPING
+  gl_PREREQ_VASNPRINTF_FLAG_LEFTADJUST
+  gl_PREREQ_VASNPRINTF_FLAG_ZERO
+  gl_PREREQ_VASNPRINTF_PRECISION
+  gl_PREREQ_VASNPRINTF_ENOMEM
+])
+
+# Prerequisites of lib/asnprintf.c.
+AC_DEFUN([gl_PREREQ_ASNPRINTF],
+[
+])
diff --git a/gnulib_m4/vsnprintf.m4 b/gnulib_m4/vsnprintf.m4
new file mode 100644 (file)
index 0000000..1ebadda
--- /dev/null
@@ -0,0 +1,62 @@
+# vsnprintf.m4 serial 7
+dnl Copyright (C) 2002-2004, 2007-2018 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl Libintl 0.17 will replace vsnprintf only if it does not support %1$s,
+dnl but defers to any gnulib vsnprintf replacements.  Therefore, gnulib
+dnl must guarantee that the decision for replacing vsnprintf is a superset
+dnl of the reasons checked by libintl.
+AC_DEFUN([gl_FUNC_VSNPRINTF],
+[
+  AC_REQUIRE([gl_STDIO_H_DEFAULTS])
+  gl_cv_func_vsnprintf_usable=no
+  AC_CHECK_FUNCS([vsnprintf])
+  if test $ac_cv_func_vsnprintf = yes; then
+    gl_SNPRINTF_SIZE1
+    case "$gl_cv_func_snprintf_size1" in
+      *yes)
+        gl_SNPRINTF_RETVAL_C99
+        case "$gl_cv_func_snprintf_retval_c99" in
+          *yes)
+            gl_PRINTF_POSITIONS
+            case "$gl_cv_func_printf_positions" in
+              *yes)
+                gl_cv_func_vsnprintf_usable=yes
+                ;;
+            esac
+            ;;
+        esac
+        ;;
+    esac
+  fi
+  if test $gl_cv_func_vsnprintf_usable = no; then
+    gl_REPLACE_VSNPRINTF
+  fi
+  AC_CHECK_DECLS_ONCE([vsnprintf])
+  if test $ac_cv_have_decl_vsnprintf = no; then
+    HAVE_DECL_VSNPRINTF=0
+  fi
+])
+
+AC_DEFUN([gl_REPLACE_VSNPRINTF],
+[
+  AC_REQUIRE([gl_STDIO_H_DEFAULTS])
+  AC_LIBOBJ([vsnprintf])
+  if test $ac_cv_func_vsnprintf = yes; then
+    REPLACE_VSNPRINTF=1
+  else
+    AC_CHECK_DECLS_ONCE([vsnprintf])
+    if test $ac_cv_have_decl_vsnprintf = yes; then
+      dnl If the function is declared but does not appear to exist, it may be
+      dnl defined as an inline function. In order to avoid a conflict, we have
+      dnl to define rpl_vsnprintf, not vsnprintf.
+      REPLACE_VSNPRINTF=1
+    fi
+  fi
+  gl_PREREQ_VSNPRINTF
+])
+
+# Prerequisites of lib/vsnprintf.c.
+AC_DEFUN([gl_PREREQ_VSNPRINTF], [:])
similarity index 54%
rename from src/libs/gnulib/m4/warn-on-use.m4
rename to gnulib_m4/warn-on-use.m4
index cc690f8..8e270cf 100644 (file)
@@ -1,11 +1,13 @@
-# warn-on-use.m4 serial 5
-dnl Copyright (C) 2010-2014 Free Software Foundation, Inc.
+# warn-on-use.m4 serial 6
+dnl Copyright (C) 2010-2018 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
 dnl with or without modifications, as long as this notice is preserved.
 
 # gl_WARN_ON_USE_PREPARE(INCLUDES, NAMES)
 # ---------------------------------------
+# If the module 'posixcheck' is in use:
+#
 # For each whitespace-separated element in the list of NAMES, define
 # HAVE_RAW_DECL_name if the function has a declaration among INCLUDES
 # even after being undefined as a macro.
@@ -23,25 +25,27 @@ dnl with or without modifications, as long as this notice is preserved.
 # needing gl_WARN_ON_USE_PREPARE.
 AC_DEFUN([gl_WARN_ON_USE_PREPARE],
 [
-  m4_foreach_w([gl_decl], [$2],
-    [AH_TEMPLATE([HAVE_RAW_DECL_]AS_TR_CPP(m4_defn([gl_decl])),
-      [Define to 1 if ]m4_defn([gl_decl])[ is declared even after
-       undefining macros.])])dnl
+  m4_ifdef([gl_POSIXCHECK],
+    [m4_foreach_w([gl_decl], [$2],
+       [AH_TEMPLATE([HAVE_RAW_DECL_]AS_TR_CPP(m4_defn([gl_decl])),
+         [Define to 1 if ]m4_defn([gl_decl])[ is declared even after
+          undefining macros.])])dnl
 dnl FIXME: gl_Symbol must be used unquoted until we can assume
 dnl autoconf 2.64 or newer.
-  for gl_func in m4_flatten([$2]); do
-    AS_VAR_PUSHDEF([gl_Symbol], [gl_cv_have_raw_decl_$gl_func])dnl
-    AC_CACHE_CHECK([whether $gl_func is declared without a macro],
-      gl_Symbol,
-      [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([$1],
+     for gl_func in m4_flatten([$2]); do
+       AS_VAR_PUSHDEF([gl_Symbol], [gl_cv_have_raw_decl_$gl_func])dnl
+       AC_CACHE_CHECK([whether $gl_func is declared without a macro],
+         gl_Symbol,
+         [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([$1],
 [@%:@undef $gl_func
   (void) $gl_func;])],
-        [AS_VAR_SET(gl_Symbol, [yes])], [AS_VAR_SET(gl_Symbol, [no])])])
-    AS_VAR_IF(gl_Symbol, [yes],
-      [AC_DEFINE_UNQUOTED(AS_TR_CPP([HAVE_RAW_DECL_$gl_func]), [1])
-       dnl shortcut - if the raw declaration exists, then set a cache
-       dnl variable to allow skipping any later AC_CHECK_DECL efforts
-       eval ac_cv_have_decl_$gl_func=yes])
-    AS_VAR_POPDEF([gl_Symbol])dnl
-  done
+           [AS_VAR_SET(gl_Symbol, [yes])], [AS_VAR_SET(gl_Symbol, [no])])])
+       AS_VAR_IF(gl_Symbol, [yes],
+         [AC_DEFINE_UNQUOTED(AS_TR_CPP([HAVE_RAW_DECL_$gl_func]), [1])
+          dnl shortcut - if the raw declaration exists, then set a cache
+          dnl variable to allow skipping any later AC_CHECK_DECL efforts
+          eval ac_cv_have_decl_$gl_func=yes])
+       AS_VAR_POPDEF([gl_Symbol])dnl
+     done
+    ])
 ])
similarity index 85%
rename from src/libs/gnulib/m4/wchar_h.m4
rename to gnulib_m4/wchar_h.m4
index 85db952..a062ca9 100644 (file)
@@ -1,13 +1,13 @@
 dnl A placeholder for ISO C99 <wchar.h>, for platforms that have issues.
 
-dnl Copyright (C) 2007-2014 Free Software Foundation, Inc.
+dnl Copyright (C) 2007-2018 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
 dnl with or without modifications, as long as this notice is preserved.
 
 dnl Written by Eric Blake.
 
-# wchar_h.m4 serial 39
+# wchar_h.m4 serial 43
 
 AC_DEFUN([gl_WCHAR_H],
 [
@@ -35,6 +35,8 @@ AC_DEFUN([gl_WCHAR_H],
   fi
   AC_SUBST([HAVE_WINT_T])
 
+  AC_REQUIRE([gl_TYPE_WINT_T_PREREQ])
+
   dnl Check for declarations of anything we want to poison if the
   dnl corresponding gnulib module is not in use.
   gl_WARN_ON_USE_PREPARE([[
@@ -53,7 +55,7 @@ AC_DEFUN([gl_WCHAR_H],
      wcsrtombs wcsnrtombs wcwidth wmemchr wmemcmp wmemcpy wmemmove wmemset
      wcslen wcsnlen wcscpy wcpcpy wcsncpy wcpncpy wcscat wcsncat wcscmp
      wcsncmp wcscasecmp wcsncasecmp wcscoll wcsxfrm wcsdup wcschr wcsrchr
-     wcscspn wcsspn wcspbrk wcsstr wcstok wcswidth
+     wcscspn wcsspn wcspbrk wcsstr wcstok wcswidth wcsftime
     ])
 ])
 
@@ -61,8 +63,8 @@ dnl Check whether <wchar.h> is usable at all.
 AC_DEFUN([gl_WCHAR_H_INLINE_OK],
 [
   dnl Test whether <wchar.h> suffers due to the transition from '__inline' to
-  dnl 'gnu_inline'. See <http://sourceware.org/bugzilla/show_bug.cgi?id=4022>
-  dnl and <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42440>. In summary,
+  dnl 'gnu_inline'. See <https://sourceware.org/bugzilla/show_bug.cgi?id=4022>
+  dnl and <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=42440>. In summary,
   dnl glibc version 2.5 or older, together with gcc version 4.3 or newer and
   dnl the option -std=c99 or -std=gnu99, leads to a broken <wchar.h>.
   AC_CACHE_CHECK([whether <wchar.h> uses 'inline' correctly],
@@ -81,8 +83,15 @@ AC_DEFUN([gl_WCHAR_H_INLINE_OK],
 extern int zero (void);
 int main () { return zero(); }
 ]])])
-     if AC_TRY_EVAL([ac_compile]); then
-       mv conftest.$ac_objext conftest1.$ac_objext
+     dnl Do not rename the object file from conftest.$ac_objext to
+     dnl conftest1.$ac_objext, as this will cause the link to fail on
+     dnl z/OS when using the XPLINK object format (due to duplicate
+     dnl CSECT names). Instead, temporarily redefine $ac_compile so
+     dnl that the object file has the latter name from the start.
+     save_ac_compile="$ac_compile"
+     ac_compile=`echo "$save_ac_compile" | sed s/conftest/conftest1/`
+     if echo '#include "conftest.c"' >conftest1.c &&
+        AC_TRY_EVAL([ac_compile]); then
        AC_LANG_CONFTEST([
          AC_LANG_SOURCE([[#define wcstod renamed_wcstod
 /* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
@@ -95,8 +104,10 @@ int main () { return zero(); }
 #include <wchar.h>
 int zero (void) { return 0; }
 ]])])
-       if AC_TRY_EVAL([ac_compile]); then
-         mv conftest.$ac_objext conftest2.$ac_objext
+       dnl See note above about renaming object files.
+       ac_compile=`echo "$save_ac_compile" | sed s/conftest/conftest2/`
+       if echo '#include "conftest.c"' >conftest2.c &&
+          AC_TRY_EVAL([ac_compile]); then
          if $CC -o conftest$ac_exeext $CFLAGS $LDFLAGS conftest1.$ac_objext conftest2.$ac_objext $LIBS >&AS_MESSAGE_LOG_FD 2>&1; then
            :
          else
@@ -104,7 +115,8 @@ int zero (void) { return 0; }
          fi
        fi
      fi
-     rm -f conftest1.$ac_objext conftest2.$ac_objext conftest$ac_exeext
+     ac_compile="$save_ac_compile"
+     rm -f conftest[12].c conftest[12].$ac_objext conftest$ac_exeext
     ])
   if test $gl_cv_header_wchar_h_correct_inline = no; then
     AC_MSG_ERROR([<wchar.h> cannot be used with this compiler ($CC $CFLAGS $CPPFLAGS).
@@ -112,7 +124,7 @@ This is a known interoperability problem of glibc <= 2.5 with gcc >= 4.3 in
 C99 mode. You have four options:
   - Add the flag -fgnu89-inline to CC and reconfigure, or
   - Fix your include files, using parts of
-    <http://sourceware.org/git/?p=glibc.git;a=commitdiff;h=b037a293a48718af30d706c2e18c929d0e69a621>, or
+    <https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=b037a293a48718af30d706c2e18c929d0e69a621>, or
   - Use a gcc version older than 4.3, or
   - Don't use the flags -std=c99 or -std=gnu99.
 Configuration aborted.])
@@ -169,6 +181,7 @@ AC_DEFUN([gl_WCHAR_H_DEFAULTS],
   GNULIB_WCSSTR=0;      AC_SUBST([GNULIB_WCSSTR])
   GNULIB_WCSTOK=0;      AC_SUBST([GNULIB_WCSTOK])
   GNULIB_WCSWIDTH=0;    AC_SUBST([GNULIB_WCSWIDTH])
+  GNULIB_WCSFTIME=0;    AC_SUBST([GNULIB_WCSFTIME])
   dnl Assume proper GNU behavior unless another module says otherwise.
   HAVE_BTOWC=1;         AC_SUBST([HAVE_BTOWC])
   HAVE_MBSINIT=1;       AC_SUBST([HAVE_MBSINIT])
@@ -207,6 +220,7 @@ AC_DEFUN([gl_WCHAR_H_DEFAULTS],
   HAVE_WCSSTR=1;        AC_SUBST([HAVE_WCSSTR])
   HAVE_WCSTOK=1;        AC_SUBST([HAVE_WCSTOK])
   HAVE_WCSWIDTH=1;      AC_SUBST([HAVE_WCSWIDTH])
+  HAVE_WCSFTIME=1;      AC_SUBST([HAVE_WCSFTIME])
   HAVE_DECL_WCTOB=1;    AC_SUBST([HAVE_DECL_WCTOB])
   HAVE_DECL_WCWIDTH=1;  AC_SUBST([HAVE_DECL_WCWIDTH])
   REPLACE_MBSTATE_T=0;  AC_SUBST([REPLACE_MBSTATE_T])
@@ -222,4 +236,5 @@ AC_DEFUN([gl_WCHAR_H_DEFAULTS],
   REPLACE_WCSNRTOMBS=0; AC_SUBST([REPLACE_WCSNRTOMBS])
   REPLACE_WCWIDTH=0;    AC_SUBST([REPLACE_WCWIDTH])
   REPLACE_WCSWIDTH=0;   AC_SUBST([REPLACE_WCSWIDTH])
+  REPLACE_WCSFTIME=0;   AC_SUBST([REPLACE_WCSFTIME])
 ])
similarity index 92%
rename from src/libs/gnulib/m4/wchar_t.m4
rename to gnulib_m4/wchar_t.m4
index 839a04c..83bc3d5 100644 (file)
@@ -1,5 +1,5 @@
 # wchar_t.m4 serial 4 (gettext-0.18.2)
-dnl Copyright (C) 2002-2003, 2008-2014 Free Software Foundation, Inc.
+dnl Copyright (C) 2002-2003, 2008-2018 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
 dnl with or without modifications, as long as this notice is preserved.
similarity index 96%
rename from src/libs/gnulib/m4/wctype_h.m4
rename to gnulib_m4/wctype_h.m4
index 3fac0ee..15d1ef3 100644 (file)
@@ -1,8 +1,8 @@
-# wctype_h.m4 serial 18
+# wctype_h.m4 serial 21
 
 dnl A placeholder for ISO C99 <wctype.h>, for platforms that lack it.
 
-dnl Copyright (C) 2006-2014 Free Software Foundation, Inc.
+dnl Copyright (C) 2006-2018 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
 dnl with or without modifications, as long as this notice is preserved.
@@ -30,6 +30,8 @@ AC_DEFUN([gl_WCTYPE_H],
   fi
   AC_SUBST([HAVE_WINT_T])
 
+  AC_REQUIRE([gl_TYPE_WINT_T_PREREQ])
+
   gl_CHECK_NEXT_HEADERS([wctype.h])
   if test $ac_cv_header_wctype_h = yes; then
     if test $ac_cv_func_iswcntrl = yes; then
@@ -51,7 +53,8 @@ AC_DEFUN([gl_WCTYPE_H],
                int main () { return iswprint ('x') == 0; }
             ]])],
             [gl_cv_func_iswcntrl_works=yes], [gl_cv_func_iswcntrl_works=no],
-            [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stdlib.h>
+            [dnl Guess no on Linux libc5, yes otherwise.
+             AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stdlib.h>
                           #if __GNU_LIBRARY__ == 1
                           Linux libc5 i18n is broken.
                           #endif]], [])],
similarity index 72%
rename from src/libs/gnulib/m4/wcwidth.m4
rename to gnulib_m4/wcwidth.m4
index f00a6cc..1cd489b 100644 (file)
@@ -1,5 +1,5 @@
-# wcwidth.m4 serial 23
-dnl Copyright (C) 2006-2014 Free Software Foundation, Inc.
+# wcwidth.m4 serial 27
+dnl Copyright (C) 2006-2018 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
 dnl with or without modifications, as long as this notice is preserved.
@@ -34,11 +34,25 @@ AC_DEFUN([gl_FUNC_WCWIDTH],
     HAVE_DECL_WCWIDTH=0
   fi
 
-  if test $ac_cv_func_wcwidth = yes; then
+  if test $ac_cv_func_wcwidth != yes; then
+    AC_CACHE_CHECK([whether wcwidth is a macro],
+      [gl_cv_func_wcwidth_macro],
+      [AC_EGREP_CPP([wchar_header_defines_wcwidth], [
+#include <wchar.h>
+#ifdef wcwidth
+ wchar_header_defines_wcwidth
+#endif],
+         [gl_cv_func_wcwidth_macro=yes],
+         [gl_cv_func_wcwidth_macro=no])
+      ])
+  fi
+
+  if test $ac_cv_func_wcwidth = yes || test $gl_cv_func_wcwidth_macro = yes; then
     HAVE_WCWIDTH=1
     dnl On Mac OS X 10.3, wcwidth(0x0301) (COMBINING ACUTE ACCENT) returns 1.
     dnl On OpenBSD 5.0, wcwidth(0x05B0) (HEBREW POINT SHEVA) returns 1.
     dnl On OSF/1 5.1, wcwidth(0x200B) (ZERO WIDTH SPACE) returns 1.
+    dnl On OpenBSD 5.8, wcwidth(0xFF1A) (FULLWIDTH COLON) returns 0.
     dnl This leads to bugs in 'ls' (coreutils).
     AC_CACHE_CHECK([whether wcwidth works reasonably in UTF-8 locales],
       [gl_cv_func_wcwidth_works],
@@ -74,6 +88,8 @@ int main ()
         result |= 2;
       if (wcwidth (0x200B) > 0)
         result |= 4;
+      if (wcwidth (0xFF1A) == 0)
+        result |= 8;
     }
   return result;
 }]])],
@@ -82,9 +98,9 @@ int main ()
           [
 changequote(,)dnl
            case "$host_os" in
-                     # Guess yes on glibc and AIX 7 systems.
-             *-gnu* | aix[7-9]*) gl_cv_func_wcwidth_works="guessing yes";;
-             *)                  gl_cv_func_wcwidth_works="guessing no";;
+                                        # Guess yes on glibc and AIX 7 systems.
+             *-gnu* | gnu* | aix[7-9]*) gl_cv_func_wcwidth_works="guessing yes";;
+             *)                         gl_cv_func_wcwidth_works="guessing no";;
            esac
 changequote([,])dnl
           ])
@@ -99,3 +115,9 @@ changequote([,])dnl
   dnl We don't substitute HAVE_WCWIDTH. We assume that if the system does not
   dnl have the wcwidth function, then it does not declare it.
 ])
+
+# Prerequisites of lib/wcwidth.c.
+AC_DEFUN([gl_PREREQ_WCWIDTH], [
+  AC_REQUIRE([AC_C_INLINE])
+  :
+])
diff --git a/gnulib_m4/wint_t.m4 b/gnulib_m4/wint_t.m4
new file mode 100644 (file)
index 0000000..95f6854
--- /dev/null
@@ -0,0 +1,74 @@
+# wint_t.m4 serial 7
+dnl Copyright (C) 2003, 2007-2018 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+dnl Test whether <wchar.h> has the 'wint_t' type and whether gnulib's
+dnl <wchar.h> or <wctype.h> would, if present, override 'wint_t'.
+dnl Prerequisite: AC_PROG_CC
+
+AC_DEFUN([gt_TYPE_WINT_T],
+[
+  AC_CACHE_CHECK([for wint_t], [gt_cv_c_wint_t],
+    [AC_COMPILE_IFELSE(
+       [AC_LANG_PROGRAM(
+          [[
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+   <wchar.h>.
+   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included
+   before <wchar.h>.  */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+            wint_t foo = (wchar_t)'\0';]],
+          [[]])],
+       [gt_cv_c_wint_t=yes],
+       [gt_cv_c_wint_t=no])])
+  if test $gt_cv_c_wint_t = yes; then
+    AC_DEFINE([HAVE_WINT_T], [1], [Define if you have the 'wint_t' type.])
+
+    dnl Determine whether gnulib's <wchar.h> or <wctype.h> would, if present,
+    dnl override 'wint_t'.
+    AC_CACHE_CHECK([whether wint_t is too small],
+      [gl_cv_type_wint_t_too_small],
+      [AC_COMPILE_IFELSE(
+           [AC_LANG_PROGRAM([[
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+   <wchar.h>.
+   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+   included before <wchar.h>.  */
+#if !(defined __GLIBC__ && !defined __UCLIBC__)
+# include <stddef.h>
+# include <stdio.h>
+# include <time.h>
+#endif
+#include <wchar.h>
+              int verify[sizeof (wint_t) < sizeof (int) ? -1 : 1];
+              ]])],
+           [gl_cv_type_wint_t_too_small=no],
+           [gl_cv_type_wint_t_too_small=yes])])
+    if test $gl_cv_type_wint_t_too_small = yes; then
+      GNULIB_OVERRIDES_WINT_T=1
+    else
+      GNULIB_OVERRIDES_WINT_T=0
+    fi
+  else
+    GNULIB_OVERRIDES_WINT_T=0
+  fi
+  AC_SUBST([GNULIB_OVERRIDES_WINT_T])
+])
+
+dnl Prerequisites of the 'wint_t' override.
+AC_DEFUN([gl_TYPE_WINT_T_PREREQ],
+[
+  AC_CHECK_HEADERS_ONCE([crtdefs.h])
+  if test $ac_cv_header_crtdefs_h = yes; then
+    HAVE_CRTDEFS_H=1
+  else
+    HAVE_CRTDEFS_H=0
+  fi
+  AC_SUBST([HAVE_CRTDEFS_H])
+])
diff --git a/gnulib_m4/xsize.m4 b/gnulib_m4/xsize.m4
new file mode 100644 (file)
index 0000000..fc7c1ab
--- /dev/null
@@ -0,0 +1,12 @@
+# xsize.m4 serial 5
+dnl Copyright (C) 2003-2004, 2008-2018 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_XSIZE],
+[
+  dnl Prerequisites of lib/xsize.h.
+  AC_REQUIRE([gl_SIZE_MAX])
+  AC_CHECK_HEADERS([stdint.h])
+])
diff --git a/lib/alloca.in.h b/lib/alloca.in.h
new file mode 100644 (file)
index 0000000..5ad8af8
--- /dev/null
@@ -0,0 +1,65 @@
+/* Memory allocation on the stack.
+
+   Copyright (C) 1995, 1999, 2001-2004, 2006-2018 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, 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
+   <https://www.gnu.org/licenses/>.
+  */
+
+/* Avoid using the symbol _ALLOCA_H here, as Bison assumes _ALLOCA_H
+   means there is a real alloca function.  */
+#ifndef _GL_ALLOCA_H
+#define _GL_ALLOCA_H
+
+/* alloca (N) returns a pointer to N bytes of memory
+   allocated on the stack, which will last until the function returns.
+   Use of alloca should be avoided:
+     - inside arguments of function calls - undefined behaviour,
+     - in inline functions - the allocation may actually last until the
+       calling function returns,
+     - for huge N (say, N >= 65536) - you never know how large (or small)
+       the stack is, and when the stack cannot fulfill the memory allocation
+       request, the program just crashes.
+ */
+
+#ifndef alloca
+# ifdef __GNUC__
+#  define alloca __builtin_alloca
+# elif defined _AIX
+#  define alloca __alloca
+# elif defined _MSC_VER
+#  include <malloc.h>
+#  define alloca _alloca
+# elif defined __DECC && defined __VMS
+#  define alloca __ALLOCA
+# elif defined __TANDEM && defined _TNS_E_TARGET
+#  ifdef  __cplusplus
+extern "C"
+#  endif
+void *_alloca (unsigned short);
+#  pragma intrinsic (_alloca)
+#  define alloca _alloca
+# elif defined __MVS__
+#  include <stdlib.h>
+# else
+#  include <stddef.h>
+#  ifdef  __cplusplus
+extern "C"
+#  endif
+void *alloca (size_t);
+# endif
+#endif
+
+#endif /* _GL_ALLOCA_H */
similarity index 67%
rename from src/libs/gnulib/build-aux/snippet/arg-nonnull.h
rename to lib/arg-nonnull.h
index 48742df..5f03408 100644 (file)
@@ -1,18 +1,18 @@
 /* A C macro for declaring that specific arguments must not be NULL.
-   Copyright (C) 2009-2014 Free Software Foundation, Inc.
+   Copyright (C) 2009-2018 Free Software Foundation, Inc.
 
    This program is free software: you can redistribute it and/or modify it
-   under the terms of the GNU Lesser General Public License as published
-   by the Free Software Foundation; either version 2 of the License, or
+   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
-   Lesser General Public License for more details.
+   General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
 
 /* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools
    that the values passed as arguments n, ..., m must be non-NULL pointers.
diff --git a/lib/asnprintf.c b/lib/asnprintf.c
new file mode 100644 (file)
index 0000000..2298455
--- /dev/null
@@ -0,0 +1,34 @@
+/* Formatted output to strings.
+   Copyright (C) 1999, 2002, 2006, 2009-2018 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, 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 <https://www.gnu.org/licenses/>.  */
+
+#include <config.h>
+
+/* Specification.  */
+#include "vasnprintf.h"
+
+#include <stdarg.h>
+
+char *
+asnprintf (char *resultbuf, size_t *lengthp, const char *format, ...)
+{
+  va_list args;
+  char *result;
+
+  va_start (args, format);
+  result = vasnprintf (resultbuf, lengthp, format, args);
+  va_end (args);
+  return result;
+}
similarity index 69%
rename from src/libs/gnulib/build-aux/snippet/c++defs.h
rename to lib/c++defs.h
index 254498a..72ff1ff 100644 (file)
@@ -1,22 +1,31 @@
 /* C++ compatible function declaration macros.
-   Copyright (C) 2010-2014 Free Software Foundation, Inc.
+   Copyright (C) 2010-2018 Free Software Foundation, Inc.
 
    This program is free software: you can redistribute it and/or modify it
-   under the terms of the GNU Lesser General Public License as published
-   by the Free Software Foundation; either version 2 of the License, or
+   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
-   Lesser General Public License for more details.
+   General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
 
 #ifndef _GL_CXXDEFS_H
 #define _GL_CXXDEFS_H
 
+/* Begin/end the GNULIB_NAMESPACE namespace.  */
+#if defined __cplusplus && defined GNULIB_NAMESPACE
+# define _GL_BEGIN_NAMESPACE namespace GNULIB_NAMESPACE {
+# define _GL_END_NAMESPACE }
+#else
+# define _GL_BEGIN_NAMESPACE
+# define _GL_END_NAMESPACE
+#endif
+
 /* The three most frequent use cases of these macros are:
 
    * For providing a substitute for a function that is missing on some
    that redirects to rpl_func, if GNULIB_NAMESPACE is defined.
    Example:
      _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...));
- */
+
+   Wrapping rpl_func in an object with an inline conversion operator
+   avoids a reference to rpl_func unless GNULIB_NAMESPACE::func is
+   actually used in the program.  */
 #define _GL_CXXALIAS_RPL(func,rettype,parameters) \
   _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters)
 #if defined __cplusplus && defined GNULIB_NAMESPACE
 # define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \
     namespace GNULIB_NAMESPACE                                \
     {                                                         \
-      rettype (*const func) parameters = ::rpl_func;          \
+      static const struct _gl_ ## func ## _wrapper            \
+      {                                                       \
+        typedef rettype (*type) parameters;                   \
+                                                              \
+        inline operator type () const                         \
+        {                                                     \
+          return ::rpl_func;                                  \
+        }                                                     \
+      } func = {};                                            \
     }                                                         \
     _GL_EXTERN_C int _gl_cxxalias_dummy
 #else
 # define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \
     namespace GNULIB_NAMESPACE                                     \
     {                                                              \
-      rettype (*const func) parameters =                           \
-        reinterpret_cast<rettype(*)parameters>(::rpl_func);        \
+      static const struct _gl_ ## func ## _wrapper                 \
+      {                                                            \
+        typedef rettype (*type) parameters;                        \
+                                                                   \
+        inline operator type () const                              \
+        {                                                          \
+          return reinterpret_cast<type>(::rpl_func);               \
+        }                                                          \
+      } func = {};                                                 \
     }                                                              \
     _GL_EXTERN_C int _gl_cxxalias_dummy
 #else
    is defined.
    Example:
      _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...));
- */
+
+   Wrapping func in an object with an inline conversion operator
+   avoids a reference to func unless GNULIB_NAMESPACE::func is
+   actually used in the program.  */
 #if defined __cplusplus && defined GNULIB_NAMESPACE
-  /* If we were to write
-       rettype (*const func) parameters = ::func;
-     like above in _GL_CXXALIAS_RPL_1, the compiler could optimize calls
-     better (remove an indirection through a 'static' pointer variable),
-     but then the _GL_CXXALIASWARN macro below would cause a warning not only
-     for uses of ::func but also for uses of GNULIB_NAMESPACE::func.  */
-# define _GL_CXXALIAS_SYS(func,rettype,parameters) \
-    namespace GNULIB_NAMESPACE                     \
-    {                                              \
-      static rettype (*func) parameters = ::func;  \
-    }                                              \
+# define _GL_CXXALIAS_SYS(func,rettype,parameters)            \
+    namespace GNULIB_NAMESPACE                                \
+    {                                                         \
+      static const struct _gl_ ## func ## _wrapper            \
+      {                                                       \
+        typedef rettype (*type) parameters;                   \
+                                                              \
+        inline operator type () const                         \
+        {                                                     \
+          return ::func;                                      \
+        }                                                     \
+      } func = {};                                            \
+    }                                                         \
     _GL_EXTERN_C int _gl_cxxalias_dummy
 #else
 # define _GL_CXXALIAS_SYS(func,rettype,parameters) \
 # define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \
     namespace GNULIB_NAMESPACE                          \
     {                                                   \
-      static rettype (*func) parameters =               \
-        reinterpret_cast<rettype(*)parameters>(::func); \
+      static const struct _gl_ ## func ## _wrapper      \
+      {                                                 \
+        typedef rettype (*type) parameters;             \
+                                                        \
+        inline operator type () const                   \
+        {                                               \
+          return reinterpret_cast<type>(::func);        \
+        }                                               \
+      } func = {};                                      \
     }                                                   \
     _GL_EXTERN_C int _gl_cxxalias_dummy
 #else
 # define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \
     namespace GNULIB_NAMESPACE                                                \
     {                                                                         \
-      static rettype (*func) parameters =                                     \
-        reinterpret_cast<rettype(*)parameters>(                               \
-          (rettype2(*)parameters2)(::func));                                  \
+      static const struct _gl_ ## func ## _wrapper                            \
+      {                                                                       \
+        typedef rettype (*type) parameters;                                   \
+                                                                              \
+        inline operator type () const                                         \
+        {                                                                     \
+          return reinterpret_cast<type>((rettype2 (*) parameters2)(::func));  \
+        }                                                                     \
+      } func = {};                                                            \
     }                                                                         \
     _GL_EXTERN_C int _gl_cxxalias_dummy
 #else
    _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE)
 # define _GL_CXXALIASWARN_1(func,namespace) \
    _GL_CXXALIASWARN_2 (func, namespace)
-/* To work around GCC bug <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43881>,
+/* To work around GCC bug <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43881>,
    we enable the warning only when not optimizing.  */
 # if !__OPTIMIZE__
 #  define _GL_CXXALIASWARN_2(func,namespace) \
                         GNULIB_NAMESPACE)
 # define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \
    _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace)
-/* To work around GCC bug <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43881>,
+/* To work around GCC bug <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43881>,
    we enable the warning only when not optimizing.  */
 # if !__OPTIMIZE__
 #  define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \
diff --git a/lib/errno.in.h b/lib/errno.in.h
new file mode 100644 (file)
index 0000000..b95c4e9
--- /dev/null
@@ -0,0 +1,279 @@
+/* A POSIX-like <errno.h>.
+
+   Copyright (C) 2008-2018 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, 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 <https://www.gnu.org/licenses/>.  */
+
+#ifndef _@GUARD_PREFIX@_ERRNO_H
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+@PRAGMA_COLUMNS@
+
+/* The include_next requires a split double-inclusion guard.  */
+#@INCLUDE_NEXT@ @NEXT_ERRNO_H@
+
+#ifndef _@GUARD_PREFIX@_ERRNO_H
+#define _@GUARD_PREFIX@_ERRNO_H
+
+
+/* On native Windows platforms, many macros are not defined.  */
+# if defined _WIN32 && ! defined __CYGWIN__
+
+/* These are the same values as defined by MSVC 10, for interoperability.  */
+
+#  ifndef ENOMSG
+#   define ENOMSG    122
+#   define GNULIB_defined_ENOMSG 1
+#  endif
+
+#  ifndef EIDRM
+#   define EIDRM     111
+#   define GNULIB_defined_EIDRM 1
+#  endif
+
+#  ifndef ENOLINK
+#   define ENOLINK   121
+#   define GNULIB_defined_ENOLINK 1
+#  endif
+
+#  ifndef EPROTO
+#   define EPROTO    134
+#   define GNULIB_defined_EPROTO 1
+#  endif
+
+#  ifndef EBADMSG
+#   define EBADMSG   104
+#   define GNULIB_defined_EBADMSG 1
+#  endif
+
+#  ifndef EOVERFLOW
+#   define EOVERFLOW 132
+#   define GNULIB_defined_EOVERFLOW 1
+#  endif
+
+#  ifndef ENOTSUP
+#   define ENOTSUP   129
+#   define GNULIB_defined_ENOTSUP 1
+#  endif
+
+#  ifndef ENETRESET
+#   define ENETRESET 117
+#   define GNULIB_defined_ENETRESET 1
+#  endif
+
+#  ifndef ECONNABORTED
+#   define ECONNABORTED 106
+#   define GNULIB_defined_ECONNABORTED 1
+#  endif
+
+#  ifndef ECANCELED
+#   define ECANCELED 105
+#   define GNULIB_defined_ECANCELED 1
+#  endif
+
+#  ifndef EOWNERDEAD
+#   define EOWNERDEAD 133
+#   define GNULIB_defined_EOWNERDEAD 1
+#  endif
+
+#  ifndef ENOTRECOVERABLE
+#   define ENOTRECOVERABLE 127
+#   define GNULIB_defined_ENOTRECOVERABLE 1
+#  endif
+
+#  ifndef EINPROGRESS
+#   define EINPROGRESS     112
+#   define EALREADY        103
+#   define ENOTSOCK        128
+#   define EDESTADDRREQ    109
+#   define EMSGSIZE        115
+#   define EPROTOTYPE      136
+#   define ENOPROTOOPT     123
+#   define EPROTONOSUPPORT 135
+#   define EOPNOTSUPP      130
+#   define EAFNOSUPPORT    102
+#   define EADDRINUSE      100
+#   define EADDRNOTAVAIL   101
+#   define ENETDOWN        116
+#   define ENETUNREACH     118
+#   define ECONNRESET      108
+#   define ENOBUFS         119
+#   define EISCONN         113
+#   define ENOTCONN        126
+#   define ETIMEDOUT       138
+#   define ECONNREFUSED    107
+#   define ELOOP           114
+#   define EHOSTUNREACH    110
+#   define EWOULDBLOCK     140
+#   define GNULIB_defined_ESOCK 1
+#  endif
+
+#  ifndef ETXTBSY
+#   define ETXTBSY         139
+#   define ENODATA         120  /* not required by POSIX */
+#   define ENOSR           124  /* not required by POSIX */
+#   define ENOSTR          125  /* not required by POSIX */
+#   define ETIME           137  /* not required by POSIX */
+#   define EOTHER          131  /* not required by POSIX */
+#   define GNULIB_defined_ESTREAMS 1
+#  endif
+
+/* These are intentionally the same values as the WSA* error numbers, defined
+   in <winsock2.h>.  */
+#  define ESOCKTNOSUPPORT 10044  /* not required by POSIX */
+#  define EPFNOSUPPORT    10046  /* not required by POSIX */
+#  define ESHUTDOWN       10058  /* not required by POSIX */
+#  define ETOOMANYREFS    10059  /* not required by POSIX */
+#  define EHOSTDOWN       10064  /* not required by POSIX */
+#  define EPROCLIM        10067  /* not required by POSIX */
+#  define EUSERS          10068  /* not required by POSIX */
+#  define EDQUOT          10069
+#  define ESTALE          10070
+#  define EREMOTE         10071  /* not required by POSIX */
+#  define GNULIB_defined_EWINSOCK 1
+
+# endif
+
+
+/* On OSF/1 5.1, when _XOPEN_SOURCE_EXTENDED is not defined, the macros
+   EMULTIHOP, ENOLINK, EOVERFLOW are not defined.  */
+# if @EMULTIHOP_HIDDEN@
+#  define EMULTIHOP @EMULTIHOP_VALUE@
+#  define GNULIB_defined_EMULTIHOP 1
+# endif
+# if @ENOLINK_HIDDEN@
+#  define ENOLINK   @ENOLINK_VALUE@
+#  define GNULIB_defined_ENOLINK 1
+# endif
+# if @EOVERFLOW_HIDDEN@
+#  define EOVERFLOW @EOVERFLOW_VALUE@
+#  define GNULIB_defined_EOVERFLOW 1
+# endif
+
+
+/* On OpenBSD 4.0 and on native Windows, the macros ENOMSG, EIDRM, ENOLINK,
+   EPROTO, EMULTIHOP, EBADMSG, EOVERFLOW, ENOTSUP, ECANCELED are not defined.
+   Likewise, on NonStop Kernel, EDQUOT is not defined.
+   Define them here.  Values >= 2000 seem safe to use: Solaris ESTALE = 151,
+   HP-UX EWOULDBLOCK = 246, IRIX EDQUOT = 1133.
+
+   Note: When one of these systems defines some of these macros some day,
+   binaries will have to be recompiled so that they recognizes the new
+   errno values from the system.  */
+
+# ifndef ENOMSG
+#  define ENOMSG    2000
+#  define GNULIB_defined_ENOMSG 1
+# endif
+
+# ifndef EIDRM
+#  define EIDRM     2001
+#  define GNULIB_defined_EIDRM 1
+# endif
+
+# ifndef ENOLINK
+#  define ENOLINK   2002
+#  define GNULIB_defined_ENOLINK 1
+# endif
+
+# ifndef EPROTO
+#  define EPROTO    2003
+#  define GNULIB_defined_EPROTO 1
+# endif
+
+# ifndef EMULTIHOP
+#  define EMULTIHOP 2004
+#  define GNULIB_defined_EMULTIHOP 1
+# endif
+
+# ifndef EBADMSG
+#  define EBADMSG   2005
+#  define GNULIB_defined_EBADMSG 1
+# endif
+
+# ifndef EOVERFLOW
+#  define EOVERFLOW 2006
+#  define GNULIB_defined_EOVERFLOW 1
+# endif
+
+# ifndef ENOTSUP
+#  define ENOTSUP   2007
+#  define GNULIB_defined_ENOTSUP 1
+# endif
+
+# ifndef ENETRESET
+#  define ENETRESET 2011
+#  define GNULIB_defined_ENETRESET 1
+# endif
+
+# ifndef ECONNABORTED
+#  define ECONNABORTED 2012
+#  define GNULIB_defined_ECONNABORTED 1
+# endif
+
+# ifndef ESTALE
+#  define ESTALE    2009
+#  define GNULIB_defined_ESTALE 1
+# endif
+
+# ifndef EDQUOT
+#  define EDQUOT 2010
+#  define GNULIB_defined_EDQUOT 1
+# endif
+
+# ifndef ECANCELED
+#  define ECANCELED 2008
+#  define GNULIB_defined_ECANCELED 1
+# endif
+
+/* On many platforms, the macros EOWNERDEAD and ENOTRECOVERABLE are not
+   defined.  */
+
+# ifndef EOWNERDEAD
+#  if defined __sun
+    /* Use the same values as defined for Solaris >= 8, for
+       interoperability.  */
+#   define EOWNERDEAD      58
+#   define ENOTRECOVERABLE 59
+#  elif defined _WIN32 && ! defined __CYGWIN__
+    /* We have a conflict here: pthreads-win32 defines these values
+       differently than MSVC 10.  It's hairy to decide which one to use.  */
+#   if defined __MINGW32__ && !defined USE_WINDOWS_THREADS
+     /* Use the same values as defined by pthreads-win32, for
+        interoperability.  */
+#    define EOWNERDEAD      43
+#    define ENOTRECOVERABLE 44
+#   else
+     /* Use the same values as defined by MSVC 10, for
+        interoperability.  */
+#    define EOWNERDEAD      133
+#    define ENOTRECOVERABLE 127
+#   endif
+#  else
+#   define EOWNERDEAD      2013
+#   define ENOTRECOVERABLE 2014
+#  endif
+#  define GNULIB_defined_EOWNERDEAD 1
+#  define GNULIB_defined_ENOTRECOVERABLE 1
+# endif
+
+# ifndef EILSEQ
+#  define EILSEQ 2015
+#  define GNULIB_defined_EILSEQ 1
+# endif
+
+#endif /* _@GUARD_PREFIX@_ERRNO_H */
+#endif /* _@GUARD_PREFIX@_ERRNO_H */
diff --git a/lib/float+.h b/lib/float+.h
new file mode 100644 (file)
index 0000000..2cb858f
--- /dev/null
@@ -0,0 +1,147 @@
+/* Supplemental information about the floating-point formats.
+   Copyright (C) 2007, 2009-2018 Free Software Foundation, Inc.
+   Written by Bruno Haible <bruno@clisp.org>, 2007.
+
+   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, 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 <https://www.gnu.org/licenses/>.  */
+
+#ifndef _FLOATPLUS_H
+#define _FLOATPLUS_H
+
+#include <float.h>
+#include <limits.h>
+
+/* Number of bits in the mantissa of a floating-point number, including the
+   "hidden bit".  */
+#if FLT_RADIX == 2
+# define FLT_MANT_BIT FLT_MANT_DIG
+# define DBL_MANT_BIT DBL_MANT_DIG
+# define LDBL_MANT_BIT LDBL_MANT_DIG
+#elif FLT_RADIX == 4
+# define FLT_MANT_BIT (FLT_MANT_DIG * 2)
+# define DBL_MANT_BIT (DBL_MANT_DIG * 2)
+# define LDBL_MANT_BIT (LDBL_MANT_DIG * 2)
+#elif FLT_RADIX == 16
+# define FLT_MANT_BIT (FLT_MANT_DIG * 4)
+# define DBL_MANT_BIT (DBL_MANT_DIG * 4)
+# define LDBL_MANT_BIT (LDBL_MANT_DIG * 4)
+#endif
+
+/* Bit mask that can be used to mask the exponent, as an unsigned number.  */
+#define FLT_EXP_MASK ((FLT_MAX_EXP - FLT_MIN_EXP) | 7)
+#define DBL_EXP_MASK ((DBL_MAX_EXP - DBL_MIN_EXP) | 7)
+#define LDBL_EXP_MASK ((LDBL_MAX_EXP - LDBL_MIN_EXP) | 7)
+
+/* Number of bits used for the exponent of a floating-point number, including
+   the exponent's sign.  */
+#define FLT_EXP_BIT \
+  (FLT_EXP_MASK < 0x100 ? 8 : \
+   FLT_EXP_MASK < 0x200 ? 9 : \
+   FLT_EXP_MASK < 0x400 ? 10 : \
+   FLT_EXP_MASK < 0x800 ? 11 : \
+   FLT_EXP_MASK < 0x1000 ? 12 : \
+   FLT_EXP_MASK < 0x2000 ? 13 : \
+   FLT_EXP_MASK < 0x4000 ? 14 : \
+   FLT_EXP_MASK < 0x8000 ? 15 : \
+   FLT_EXP_MASK < 0x10000 ? 16 : \
+   FLT_EXP_MASK < 0x20000 ? 17 : \
+   FLT_EXP_MASK < 0x40000 ? 18 : \
+   FLT_EXP_MASK < 0x80000 ? 19 : \
+   FLT_EXP_MASK < 0x100000 ? 20 : \
+   FLT_EXP_MASK < 0x200000 ? 21 : \
+   FLT_EXP_MASK < 0x400000 ? 22 : \
+   FLT_EXP_MASK < 0x800000 ? 23 : \
+   FLT_EXP_MASK < 0x1000000 ? 24 : \
+   FLT_EXP_MASK < 0x2000000 ? 25 : \
+   FLT_EXP_MASK < 0x4000000 ? 26 : \
+   FLT_EXP_MASK < 0x8000000 ? 27 : \
+   FLT_EXP_MASK < 0x10000000 ? 28 : \
+   FLT_EXP_MASK < 0x20000000 ? 29 : \
+   FLT_EXP_MASK < 0x40000000 ? 30 : \
+   FLT_EXP_MASK <= 0x7fffffff ? 31 : \
+   32)
+#define DBL_EXP_BIT \
+  (DBL_EXP_MASK < 0x100 ? 8 : \
+   DBL_EXP_MASK < 0x200 ? 9 : \
+   DBL_EXP_MASK < 0x400 ? 10 : \
+   DBL_EXP_MASK < 0x800 ? 11 : \
+   DBL_EXP_MASK < 0x1000 ? 12 : \
+   DBL_EXP_MASK < 0x2000 ? 13 : \
+   DBL_EXP_MASK < 0x4000 ? 14 : \
+   DBL_EXP_MASK < 0x8000 ? 15 : \
+   DBL_EXP_MASK < 0x10000 ? 16 : \
+   DBL_EXP_MASK < 0x20000 ? 17 : \
+   DBL_EXP_MASK < 0x40000 ? 18 : \
+   DBL_EXP_MASK < 0x80000 ? 19 : \
+   DBL_EXP_MASK < 0x100000 ? 20 : \
+   DBL_EXP_MASK < 0x200000 ? 21 : \
+   DBL_EXP_MASK < 0x400000 ? 22 : \
+   DBL_EXP_MASK < 0x800000 ? 23 : \
+   DBL_EXP_MASK < 0x1000000 ? 24 : \
+   DBL_EXP_MASK < 0x2000000 ? 25 : \
+   DBL_EXP_MASK < 0x4000000 ? 26 : \
+   DBL_EXP_MASK < 0x8000000 ? 27 : \
+   DBL_EXP_MASK < 0x10000000 ? 28 : \
+   DBL_EXP_MASK < 0x20000000 ? 29 : \
+   DBL_EXP_MASK < 0x40000000 ? 30 : \
+   DBL_EXP_MASK <= 0x7fffffff ? 31 : \
+   32)
+#define LDBL_EXP_BIT \
+  (LDBL_EXP_MASK < 0x100 ? 8 : \
+   LDBL_EXP_MASK < 0x200 ? 9 : \
+   LDBL_EXP_MASK < 0x400 ? 10 : \
+   LDBL_EXP_MASK < 0x800 ? 11 : \
+   LDBL_EXP_MASK < 0x1000 ? 12 : \
+   LDBL_EXP_MASK < 0x2000 ? 13 : \
+   LDBL_EXP_MASK < 0x4000 ? 14 : \
+   LDBL_EXP_MASK < 0x8000 ? 15 : \
+   LDBL_EXP_MASK < 0x10000 ? 16 : \
+   LDBL_EXP_MASK < 0x20000 ? 17 : \
+   LDBL_EXP_MASK < 0x40000 ? 18 : \
+   LDBL_EXP_MASK < 0x80000 ? 19 : \
+   LDBL_EXP_MASK < 0x100000 ? 20 : \
+   LDBL_EXP_MASK < 0x200000 ? 21 : \
+   LDBL_EXP_MASK < 0x400000 ? 22 : \
+   LDBL_EXP_MASK < 0x800000 ? 23 : \
+   LDBL_EXP_MASK < 0x1000000 ? 24 : \
+   LDBL_EXP_MASK < 0x2000000 ? 25 : \
+   LDBL_EXP_MASK < 0x4000000 ? 26 : \
+   LDBL_EXP_MASK < 0x8000000 ? 27 : \
+   LDBL_EXP_MASK < 0x10000000 ? 28 : \
+   LDBL_EXP_MASK < 0x20000000 ? 29 : \
+   LDBL_EXP_MASK < 0x40000000 ? 30 : \
+   LDBL_EXP_MASK <= 0x7fffffff ? 31 : \
+   32)
+
+/* Number of bits used for a floating-point number: the mantissa (not
+   counting the "hidden bit", since it may or may not be explicit), the
+   exponent, and the sign.  */
+#define FLT_TOTAL_BIT ((FLT_MANT_BIT - 1) + FLT_EXP_BIT + 1)
+#define DBL_TOTAL_BIT ((DBL_MANT_BIT - 1) + DBL_EXP_BIT + 1)
+#define LDBL_TOTAL_BIT ((LDBL_MANT_BIT - 1) + LDBL_EXP_BIT + 1)
+
+/* Number of bytes used for a floating-point number.
+   This can be smaller than the 'sizeof'.  For example, on i386 systems,
+   'long double' most often have LDBL_MANT_BIT = 64, LDBL_EXP_BIT = 16, hence
+   LDBL_TOTAL_BIT = 80 bits, i.e. 10 bytes of consecutive memory, but
+   sizeof (long double) = 12 or = 16.  */
+#define SIZEOF_FLT ((FLT_TOTAL_BIT + CHAR_BIT - 1) / CHAR_BIT)
+#define SIZEOF_DBL ((DBL_TOTAL_BIT + CHAR_BIT - 1) / CHAR_BIT)
+#define SIZEOF_LDBL ((LDBL_TOTAL_BIT + CHAR_BIT - 1) / CHAR_BIT)
+
+/* Verify that SIZEOF_FLT <= sizeof (float) etc.  */
+typedef int verify_sizeof_flt[SIZEOF_FLT <= sizeof (float) ? 1 : -1];
+typedef int verify_sizeof_dbl[SIZEOF_DBL <= sizeof (double) ? 1 : - 1];
+typedef int verify_sizeof_ldbl[SIZEOF_LDBL <= sizeof (long double) ? 1 : - 1];
+
+#endif /* _FLOATPLUS_H */
diff --git a/lib/float.c b/lib/float.c
new file mode 100644 (file)
index 0000000..7caca83
--- /dev/null
@@ -0,0 +1,33 @@
+/* Auxiliary definitions for <float.h>.
+   Copyright (C) 2011-2018 Free Software Foundation, Inc.
+   Written by Bruno Haible <bruno@clisp.org>, 2011.
+
+   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 <https://www.gnu.org/licenses/>.  */
+
+#include <config.h>
+
+/* Specification.  */
+#include <float.h>
+
+#if (defined _ARCH_PPC || defined _POWER) && (defined _AIX || defined __linux__) && (LDBL_MANT_DIG == 106) && defined __GNUC__
+const union gl_long_double_union gl_LDBL_MAX =
+  { { DBL_MAX, DBL_MAX / (double)134217728UL / (double)134217728UL } };
+#elif defined __i386__
+const union gl_long_double_union gl_LDBL_MAX =
+  { { 0xFFFFFFFF, 0xFFFFFFFF, 32766 } };
+#else
+/* This declaration is solely to ensure that after preprocessing
+   this file is never empty.  */
+typedef int dummy;
+#endif
diff --git a/lib/float.in.h b/lib/float.in.h
new file mode 100644 (file)
index 0000000..2cdbd12
--- /dev/null
@@ -0,0 +1,188 @@
+/* A correct <float.h>.
+
+   Copyright (C) 2007-2018 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 <https://www.gnu.org/licenses/>.  */
+
+#ifndef _@GUARD_PREFIX@_FLOAT_H
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+@PRAGMA_COLUMNS@
+
+/* The include_next requires a split double-inclusion guard.  */
+#@INCLUDE_NEXT@ @NEXT_FLOAT_H@
+
+#ifndef _@GUARD_PREFIX@_FLOAT_H
+#define _@GUARD_PREFIX@_FLOAT_H
+
+/* 'long double' properties.  */
+
+#if defined __i386__ && (defined __BEOS__ || defined __OpenBSD__)
+/* Number of mantissa units, in base FLT_RADIX.  */
+# undef LDBL_MANT_DIG
+# define LDBL_MANT_DIG   64
+/* Number of decimal digits that is sufficient for representing a number.  */
+# undef LDBL_DIG
+# define LDBL_DIG        18
+/* x-1 where x is the smallest representable number > 1.  */
+# undef LDBL_EPSILON
+# define LDBL_EPSILON    1.0842021724855044340E-19L
+/* Minimum e such that FLT_RADIX^(e-1) is a normalized number.  */
+# undef LDBL_MIN_EXP
+# define LDBL_MIN_EXP    (-16381)
+/* Maximum e such that FLT_RADIX^(e-1) is a representable finite number.  */
+# undef LDBL_MAX_EXP
+# define LDBL_MAX_EXP    16384
+/* Minimum positive normalized number.  */
+# undef LDBL_MIN
+# define LDBL_MIN        3.3621031431120935063E-4932L
+/* Maximum representable finite number.  */
+# undef LDBL_MAX
+# define LDBL_MAX        1.1897314953572317650E+4932L
+/* Minimum e such that 10^e is in the range of normalized numbers.  */
+# undef LDBL_MIN_10_EXP
+# define LDBL_MIN_10_EXP (-4931)
+/* Maximum e such that 10^e is in the range of representable finite numbers.  */
+# undef LDBL_MAX_10_EXP
+# define LDBL_MAX_10_EXP 4932
+#endif
+
+/* On FreeBSD/x86 6.4, the 'long double' type really has only 53 bits of
+   precision in the compiler but 64 bits of precision at runtime.  See
+   <https://lists.gnu.org/r/bug-gnulib/2008-07/msg00063.html>.  */
+#if defined __i386__ && (defined __FreeBSD__ || defined __DragonFly__)
+/* Number of mantissa units, in base FLT_RADIX.  */
+# undef LDBL_MANT_DIG
+# define LDBL_MANT_DIG   64
+/* Number of decimal digits that is sufficient for representing a number.  */
+# undef LDBL_DIG
+# define LDBL_DIG        18
+/* x-1 where x is the smallest representable number > 1.  */
+# undef LDBL_EPSILON
+# define LDBL_EPSILON 1.084202172485504434007452800869941711426e-19L /* 2^-63 */
+/* Minimum e such that FLT_RADIX^(e-1) is a normalized number.  */
+# undef LDBL_MIN_EXP
+# define LDBL_MIN_EXP    (-16381)
+/* Maximum e such that FLT_RADIX^(e-1) is a representable finite number.  */
+# undef LDBL_MAX_EXP
+# define LDBL_MAX_EXP    16384
+/* Minimum positive normalized number.  */
+# undef LDBL_MIN
+# define LDBL_MIN        3.362103143112093506262677817321752E-4932L /* = 0x1p-16382L */
+/* Maximum representable finite number.  */
+# undef LDBL_MAX
+/* LDBL_MAX is represented as { 0xFFFFFFFF, 0xFFFFFFFF, 32766 }.
+   But the largest literal that GCC allows us to write is
+   0x0.fffffffffffff8p16384L = { 0xFFFFF800, 0xFFFFFFFF, 32766 }.
+   So, define it like this through a reference to an external variable
+
+     const unsigned int LDBL_MAX[3] = { 0xFFFFFFFF, 0xFFFFFFFF, 32766 };
+     extern const long double LDBL_MAX;
+
+   Unfortunately, this is not a constant expression.  */
+union gl_long_double_union
+  {
+    struct { unsigned int lo; unsigned int hi; unsigned int exponent; } xd;
+    long double ld;
+  };
+extern const union gl_long_double_union gl_LDBL_MAX;
+# define LDBL_MAX (gl_LDBL_MAX.ld)
+/* Minimum e such that 10^e is in the range of normalized numbers.  */
+# undef LDBL_MIN_10_EXP
+# define LDBL_MIN_10_EXP (-4931)
+/* Maximum e such that 10^e is in the range of representable finite numbers.  */
+# undef LDBL_MAX_10_EXP
+# define LDBL_MAX_10_EXP 4932
+#endif
+
+/* On AIX 7.1 with gcc 4.2, the values of LDBL_MIN_EXP, LDBL_MIN, LDBL_MAX are
+   wrong.
+   On Linux/PowerPC with gcc 4.4, the value of LDBL_MAX is wrong.  */
+#if (defined _ARCH_PPC || defined _POWER) && defined _AIX && (LDBL_MANT_DIG == 106) && defined __GNUC__
+# undef LDBL_MIN_EXP
+# define LDBL_MIN_EXP DBL_MIN_EXP
+# undef LDBL_MIN_10_EXP
+# define LDBL_MIN_10_EXP DBL_MIN_10_EXP
+# undef LDBL_MIN
+# define LDBL_MIN 2.22507385850720138309023271733240406422e-308L /* DBL_MIN = 2^-1022 */
+#endif
+#if (defined _ARCH_PPC || defined _POWER) && (defined _AIX || defined __linux__) && (LDBL_MANT_DIG == 106) && defined __GNUC__
+# undef LDBL_MAX
+/* LDBL_MAX is represented as { 0x7FEFFFFF, 0xFFFFFFFF, 0x7C8FFFFF, 0xFFFFFFFF }.
+   It is not easy to define:
+     #define LDBL_MAX 1.79769313486231580793728971405302307166e308L
+   is too small, whereas
+     #define LDBL_MAX 1.79769313486231580793728971405302307167e308L
+   is too large.  Apparently a bug in GCC decimal-to-binary conversion.
+   Also, I can't get values larger than
+     #define LDBL63 ((long double) (1ULL << 63))
+     #define LDBL882 (LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63)
+     #define LDBL945 (LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63)
+     #define LDBL1008 (LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63)
+     #define LDBL_MAX (LDBL1008 * 65535.0L + LDBL945 * (long double) 9223372036821221375ULL + LDBL882 * (long double) 4611686018427387904ULL)
+   which is represented as { 0x7FEFFFFF, 0xFFFFFFFF, 0x7C8FFFFF, 0xF8000000 }.
+   So, define it like this through a reference to an external variable
+
+     const double LDBL_MAX[2] = { DBL_MAX, DBL_MAX / (double)134217728UL / (double)134217728UL };
+     extern const long double LDBL_MAX;
+
+   or through a pointer cast
+
+     #define LDBL_MAX \
+       (*(const long double *) (double[]) { DBL_MAX, DBL_MAX / (double)134217728UL / (double)134217728UL })
+
+   Unfortunately, this is not a constant expression, and the latter expression
+   does not work well when GCC is optimizing..  */
+union gl_long_double_union
+  {
+    struct { double hi; double lo; } dd;
+    long double ld;
+  };
+extern const union gl_long_double_union gl_LDBL_MAX;
+# define LDBL_MAX (gl_LDBL_MAX.ld)
+#endif
+
+/* On IRIX 6.5, with cc, the value of LDBL_MANT_DIG is wrong.
+   On IRIX 6.5, with gcc 4.2, the values of LDBL_MIN_EXP, LDBL_MIN, LDBL_EPSILON
+   are wrong.  */
+#if defined __sgi && (LDBL_MANT_DIG >= 106)
+# undef LDBL_MANT_DIG
+# define LDBL_MANT_DIG 106
+# if defined __GNUC__
+#  undef LDBL_MIN_EXP
+#  define LDBL_MIN_EXP DBL_MIN_EXP
+#  undef LDBL_MIN_10_EXP
+#  define LDBL_MIN_10_EXP DBL_MIN_10_EXP
+#  undef LDBL_MIN
+#  define LDBL_MIN 2.22507385850720138309023271733240406422e-308L /* DBL_MIN = 2^-1022 */
+#  undef LDBL_EPSILON
+#  define LDBL_EPSILON 2.46519032881566189191165176650870696773e-32L /* 2^-105 */
+# endif
+#endif
+
+#if @REPLACE_ITOLD@
+/* Pull in a function that fixes the 'int' to 'long double' conversion
+   of glibc 2.7.  */
+extern
+# ifdef __cplusplus
+"C"
+# endif
+void _Qp_itoq (long double *, int);
+static void (*_gl_float_fix_itold) (long double *, int) = _Qp_itoq;
+#endif
+
+#endif /* _@GUARD_PREFIX@_FLOAT_H */
+#endif /* _@GUARD_PREFIX@_FLOAT_H */
diff --git a/lib/fprintf.c b/lib/fprintf.c
new file mode 100644 (file)
index 0000000..4ac9fbd
--- /dev/null
@@ -0,0 +1,77 @@
+/* Formatted output to a stream.
+   Copyright (C) 2004, 2006-2018 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 <https://www.gnu.org/licenses/>.  */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+/* Specification.  */
+#include <stdio.h>
+
+#include <errno.h>
+#include <limits.h>
+#include <stdarg.h>
+#include <stdlib.h>
+
+#include "fseterr.h"
+#include "vasnprintf.h"
+
+/* Print formatted output to the stream FP.
+   Return string length of formatted string.  On error, return a negative
+   value.  */
+int
+fprintf (FILE *fp, const char *format, ...)
+{
+  char buf[2000];
+  char *output;
+  size_t len;
+  size_t lenbuf = sizeof (buf);
+  va_list args;
+
+  va_start (args, format);
+  output = vasnprintf (buf, &lenbuf, format, args);
+  len = lenbuf;
+  va_end (args);
+
+  if (!output)
+    {
+      fseterr (fp);
+      return -1;
+    }
+
+  if (fwrite (output, 1, len, fp) < len)
+    {
+      if (output != buf)
+        {
+          int saved_errno = errno;
+          free (output);
+          errno = saved_errno;
+        }
+      return -1;
+    }
+
+  if (output != buf)
+    free (output);
+
+  if (len > INT_MAX)
+    {
+      errno = EOVERFLOW;
+      fseterr (fp);
+      return -1;
+    }
+
+  return len;
+}
diff --git a/lib/fpucw.h b/lib/fpucw.h
new file mode 100644 (file)
index 0000000..0c04800
--- /dev/null
@@ -0,0 +1,108 @@
+/* Manipulating the FPU control word.  -*- coding: utf-8 -*-
+   Copyright (C) 2007-2018 Free Software Foundation, Inc.
+   Written by Bruno Haible <bruno@clisp.org>, 2007.
+
+   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 <https://www.gnu.org/licenses/>.  */
+
+#ifndef _FPUCW_H
+#define _FPUCW_H
+
+/* The i386 floating point hardware (the 387 compatible FPU, not the modern
+   SSE/SSE2 hardware) has a controllable rounding precision.  It is specified
+   through the 'PC' bits in the FPU control word ('fctrl' register).  (See
+   the GNU libc i386 <fpu_control.h> header for details.)
+
+   On some platforms, such as Linux or Solaris, the default precision setting
+   is set to "extended precision".  This means that 'long double' instructions
+   operate correctly, but 'double' computations often produce slightly
+   different results as on strictly IEEE 754 conforming systems.
+
+   On some platforms, such as NetBSD, the default precision is set to
+   "double precision".  This means that 'long double' instructions will operate
+   only as 'double', i.e. lead to wrong results.  Similarly on FreeBSD 6.4, at
+   least for the division of 'long double' numbers.
+
+   The FPU control word is under control of the application, i.e. it is
+   not required to be set either way by the ABI.  (In fact, the i386 ABI
+   https://www.linux-mips.org/pub/linux/mips/doc/ABI/abi386-4.pdf page 3-12 = page 38
+   is not clear about it.  But in any case, gcc treats the control word
+   like a "preserved" register: it emits code that assumes that the control
+   word is preserved across calls, and it restores the control word at the
+   end of functions that modify it.)
+
+   See Vincent Lefèvre's page https://www.vinc17.net/research/extended.en.html
+   for a good explanation.
+   See http://www.uwsg.iu.edu/hypermail/linux/kernel/0103.0/0453.html for
+   some argumentation which setting should be the default.  */
+
+/* This header file provides the following facilities:
+     fpucw_t                        integral type holding the value of 'fctrl'
+     FPU_PC_MASK                    bit mask denoting the precision control
+     FPU_PC_DOUBLE                  precision control for 53 bits mantissa
+     FPU_PC_EXTENDED                precision control for 64 bits mantissa
+     GET_FPUCW ()                   yields the current FPU control word
+     SET_FPUCW (word)               sets the FPU control word
+     DECL_LONG_DOUBLE_ROUNDING      variable declaration for
+                                    BEGIN/END_LONG_DOUBLE_ROUNDING
+     BEGIN_LONG_DOUBLE_ROUNDING ()  starts a sequence of instructions with
+                                    'long double' safe operation precision
+     END_LONG_DOUBLE_ROUNDING ()    ends a sequence of instructions with
+                                    'long double' safe operation precision
+ */
+
+/* Inline assembler like this works only with GNU C.  */
+#if (defined __i386__ || defined __x86_64__) && defined __GNUC__
+
+typedef unsigned short fpucw_t; /* glibc calls this fpu_control_t */
+
+# define FPU_PC_MASK 0x0300
+# define FPU_PC_DOUBLE 0x200    /* glibc calls this _FPU_DOUBLE */
+# define FPU_PC_EXTENDED 0x300  /* glibc calls this _FPU_EXTENDED */
+
+# define GET_FPUCW() \
+  ({ fpucw_t _cw;                                               \
+     __asm__ __volatile__ ("fnstcw %0" : "=m" (*&_cw));         \
+     _cw;                                                       \
+   })
+# define SET_FPUCW(word) \
+  (void)({ fpucw_t _ncw = (word);                               \
+           __asm__ __volatile__ ("fldcw %0" : : "m" (*&_ncw));  \
+         })
+
+# define DECL_LONG_DOUBLE_ROUNDING \
+  fpucw_t oldcw;
+# define BEGIN_LONG_DOUBLE_ROUNDING() \
+  (void)(oldcw = GET_FPUCW (),                                  \
+         SET_FPUCW ((oldcw & ~FPU_PC_MASK) | FPU_PC_EXTENDED))
+# define END_LONG_DOUBLE_ROUNDING() \
+  SET_FPUCW (oldcw)
+
+#else
+
+typedef unsigned int fpucw_t;
+
+# define FPU_PC_MASK 0
+# define FPU_PC_DOUBLE 0
+# define FPU_PC_EXTENDED 0
+
+# define GET_FPUCW() 0
+# define SET_FPUCW(word) (void)(word)
+
+# define DECL_LONG_DOUBLE_ROUNDING
+# define BEGIN_LONG_DOUBLE_ROUNDING()
+# define END_LONG_DOUBLE_ROUNDING()
+
+#endif
+
+#endif /* _FPUCW_H */
diff --git a/lib/frexp.c b/lib/frexp.c
new file mode 100644 (file)
index 0000000..37ea13a
--- /dev/null
@@ -0,0 +1,168 @@
+/* Split a double into fraction and mantissa.
+   Copyright (C) 2007-2018 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 <https://www.gnu.org/licenses/>.  */
+
+/* Written by Paolo Bonzini <bonzini@gnu.org>, 2003, and
+   Bruno Haible <bruno@clisp.org>, 2007.  */
+
+#if ! defined USE_LONG_DOUBLE
+# include <config.h>
+#endif
+
+/* Specification.  */
+#include <math.h>
+
+#include <float.h>
+#ifdef USE_LONG_DOUBLE
+# include "isnanl-nolibm.h"
+# include "fpucw.h"
+#else
+# include "isnand-nolibm.h"
+#endif
+
+/* This file assumes FLT_RADIX = 2.  If FLT_RADIX is a power of 2 greater
+   than 2, or not even a power of 2, some rounding errors can occur, so that
+   then the returned mantissa is only guaranteed to be <= 1.0, not < 1.0.  */
+
+#ifdef USE_LONG_DOUBLE
+# define FUNC frexpl
+# define DOUBLE long double
+# define ISNAN isnanl
+# define DECL_ROUNDING DECL_LONG_DOUBLE_ROUNDING
+# define BEGIN_ROUNDING() BEGIN_LONG_DOUBLE_ROUNDING ()
+# define END_ROUNDING() END_LONG_DOUBLE_ROUNDING ()
+# define L_(literal) literal##L
+#else
+# define FUNC frexp
+# define DOUBLE double
+# define ISNAN isnand
+# define DECL_ROUNDING
+# define BEGIN_ROUNDING()
+# define END_ROUNDING()
+# define L_(literal) literal
+#endif
+
+DOUBLE
+FUNC (DOUBLE x, int *expptr)
+{
+  int sign;
+  int exponent;
+  DECL_ROUNDING
+
+  /* Test for NaN, infinity, and zero.  */
+  if (ISNAN (x) || x + x == x)
+    {
+      *expptr = 0;
+      return x;
+    }
+
+  sign = 0;
+  if (x < 0)
+    {
+      x = - x;
+      sign = -1;
+    }
+
+  BEGIN_ROUNDING ();
+
+  {
+    /* Since the exponent is an 'int', it fits in 64 bits.  Therefore the
+       loops are executed no more than 64 times.  */
+    DOUBLE pow2[64]; /* pow2[i] = 2^2^i */
+    DOUBLE powh[64]; /* powh[i] = 2^-2^i */
+    int i;
+
+    exponent = 0;
+    if (x >= L_(1.0))
+      {
+        /* A positive exponent.  */
+        DOUBLE pow2_i; /* = pow2[i] */
+        DOUBLE powh_i; /* = powh[i] */
+
+        /* Invariants: pow2_i = 2^2^i, powh_i = 2^-2^i,
+           x * 2^exponent = argument, x >= 1.0.  */
+        for (i = 0, pow2_i = L_(2.0), powh_i = L_(0.5);
+             ;
+             i++, pow2_i = pow2_i * pow2_i, powh_i = powh_i * powh_i)
+          {
+            if (x >= pow2_i)
+              {
+                exponent += (1 << i);
+                x *= powh_i;
+              }
+            else
+              break;
+
+            pow2[i] = pow2_i;
+            powh[i] = powh_i;
+          }
+        /* Avoid making x too small, as it could become a denormalized
+           number and thus lose precision.  */
+        while (i > 0 && x < pow2[i - 1])
+          {
+            i--;
+            powh_i = powh[i];
+          }
+        exponent += (1 << i);
+        x *= powh_i;
+        /* Here 2^-2^i <= x < 1.0.  */
+      }
+    else
+      {
+        /* A negative or zero exponent.  */
+        DOUBLE pow2_i; /* = pow2[i] */
+        DOUBLE powh_i; /* = powh[i] */
+
+        /* Invariants: pow2_i = 2^2^i, powh_i = 2^-2^i,
+           x * 2^exponent = argument, x < 1.0.  */
+        for (i = 0, pow2_i = L_(2.0), powh_i = L_(0.5);
+             ;
+             i++, pow2_i = pow2_i * pow2_i, powh_i = powh_i * powh_i)
+          {
+            if (x < powh_i)
+              {
+                exponent -= (1 << i);
+                x *= pow2_i;
+              }
+            else
+              break;
+
+            pow2[i] = pow2_i;
+            powh[i] = powh_i;
+          }
+        /* Here 2^-2^i <= x < 1.0.  */
+      }
+
+    /* Invariants: x * 2^exponent = argument, and 2^-2^i <= x < 1.0.  */
+    while (i > 0)
+      {
+        i--;
+        if (x < powh[i])
+          {
+            exponent -= (1 << i);
+            x *= pow2[i];
+          }
+      }
+    /* Here 0.5 <= x < 1.0.  */
+  }
+
+  if (sign < 0)
+    x = - x;
+
+  END_ROUNDING ();
+
+  *expptr = exponent;
+  return x;
+}
diff --git a/lib/frexpl.c b/lib/frexpl.c
new file mode 100644 (file)
index 0000000..2ac0c03
--- /dev/null
@@ -0,0 +1,35 @@
+/* Split a 'long double' into fraction and mantissa.
+   Copyright (C) 2007, 2009-2018 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 <https://www.gnu.org/licenses/>.  */
+
+#include <config.h>
+
+#if HAVE_SAME_LONG_DOUBLE_AS_DOUBLE
+
+/* Specification.  */
+# include <math.h>
+
+long double
+frexpl (long double x, int *expptr)
+{
+  return frexp (x, expptr);
+}
+
+#else
+
+# define USE_LONG_DOUBLE
+# include "frexp.c"
+
+#endif
diff --git a/lib/fseterr.c b/lib/fseterr.c
new file mode 100644 (file)
index 0000000..81f51ed
--- /dev/null
@@ -0,0 +1,84 @@
+/* Set the error indicator of a stream.
+   Copyright (C) 2007-2018 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 <https://www.gnu.org/licenses/>.  */
+
+#include <config.h>
+
+/* Specification.  */
+#include "fseterr.h"
+
+#include <errno.h>
+
+#include "stdio-impl.h"
+
+/* This file is not used on systems that have the __fseterr function,
+   namely musl libc.  */
+
+void
+fseterr (FILE *fp)
+{
+  /* Most systems provide FILE as a struct and the necessary bitmask in
+     <stdio.h>, because they need it for implementing getc() and putc() as
+     fast macros.  */
+#if defined _IO_EOF_SEEN || defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1
+  /* GNU libc, BeOS, Haiku, Linux libc5 */
+  fp->_flags |= _IO_ERR_SEEN;
+#elif defined __sferror || defined __DragonFly__ || defined __ANDROID__
+  /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Minix 3, Android */
+  fp_->_flags |= __SERR;
+#elif defined __EMX__               /* emx+gcc */
+  fp->_flags |= _IOERR;
+#elif defined __minix               /* Minix */
+  fp->_flags |= _IOERR;
+#elif defined _IOERR                /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw, MSVC, NonStop Kernel, OpenVMS */
+  fp_->_flag |= _IOERR;
+#elif defined __UCLIBC__            /* uClibc */
+  fp->__modeflags |= __FLAG_ERROR;
+#elif defined __QNX__               /* QNX */
+  fp->_Mode |= 0x200 /* _MERR */;
+#elif defined __MINT__              /* Atari FreeMiNT */
+  fp->__error = 1;
+#elif defined EPLAN9                /* Plan9 */
+  if (fp->state != 0 /* CLOSED */)
+    fp->state = 5 /* ERR */;
+#elif 0                             /* unknown  */
+  /* Portable fallback, based on an idea by Rich Felker.
+     Wow! 6 system calls for something that is just a bit operation!
+     Not activated on any system, because there is no way to repair FP when
+     the sequence of system calls fails, and library code should not call
+     abort().  */
+  int saved_errno;
+  int fd;
+  int fd2;
+
+  saved_errno = errno;
+  fflush (fp);
+  fd = fileno (fp);
+  fd2 = dup (fd);
+  if (fd2 >= 0)
+    {
+      close (fd);
+      fputc ('\0', fp); /* This should set the error indicator.  */
+      fflush (fp);      /* Or this.  */
+      if (dup2 (fd2, fd) < 0)
+        /* Whee... we botched the stream and now cannot restore it!  */
+        abort ();
+      close (fd2);
+    }
+  errno = saved_errno;
+#else
+ #error "Please port gnulib fseterr.c to your platform! Look at the definitions of ferror and clearerr on your system, then report this to bug-gnulib."
+#endif
+}
diff --git a/lib/fseterr.h b/lib/fseterr.h
new file mode 100644 (file)
index 0000000..d616433
--- /dev/null
@@ -0,0 +1,45 @@
+/* Set the error indicator of a stream.
+   Copyright (C) 2007, 2009-2018 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 <https://www.gnu.org/licenses/>.  */
+
+#ifndef _FSETERR_H
+#define _FSETERR_H
+
+#include <stdio.h>
+
+/* Set the error indicator of the stream FP.
+   The "error indicator" is set when an I/O operation on the stream fails, and
+   is cleared (together with the "end-of-file" indicator) by clearerr (FP).  */
+
+#if HAVE___FSETERR /* musl libc */
+
+# include <stdio_ext.h>
+# define fseterr(fp) __fseterr (fp)
+
+#else
+
+# ifdef __cplusplus
+extern "C" {
+# endif
+
+extern void fseterr (FILE *fp);
+
+# ifdef __cplusplus
+}
+# endif
+
+#endif
+
+#endif /* _FSETERR_H */
diff --git a/lib/gnulib.mk b/lib/gnulib.mk
new file mode 100644 (file)
index 0000000..66518b8
--- /dev/null
@@ -0,0 +1,1266 @@
+## DO NOT EDIT! GENERATED AUTOMATICALLY!
+## Process this file with automake to produce Makefile.in.
+# Copyright (C) 2002-2018 Free Software Foundation, Inc.
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This file is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this file.  If not, see <https://www.gnu.org/licenses/>.
+#
+# As a special exception to the GNU General Public License,
+# this file may be distributed as part of a program that
+# contains a configuration script generated by Autoconf, under
+# the same distribution terms as the rest of that program.
+#
+# Generated by gnulib-tool.
+# Reproduce by:
+# gnulib-tool --import --local-dir=gl \
+#  --lib=libgnu \
+#  --source-base=lib \
+#  --m4-base=gnulib_m4 \
+#  --doc-base=doc \
+#  --tests-base=tests \
+#  --aux-dir=build-aux \
+#  --makefile-name=gnulib.mk \
+#  --no-conditional-dependencies \
+#  --no-libtool \
+#  --macro-prefix=gl \
+#  fprintf-posix \
+#  git-version-gen \
+#  havelib \
+#  non-recursive-gnulib-prefix-hack \
+#  snprintf \
+#  vsnprintf \
+#  wcwidth
+
+
+MOSTLYCLEANFILES += lib/core lib/*.stackdump
+# No GNU Make output.
+
+noinst_LIBRARIES += lib/libgnu.a
+
+lib_libgnu_a_SOURCES =
+lib_libgnu_a_LIBADD = $(gl_LIBOBJS)
+lib_libgnu_a_DEPENDENCIES = $(gl_LIBOBJS)
+EXTRA_lib_libgnu_a_SOURCES =
+
+## begin gnulib module absolute-header
+
+# Use this preprocessor expression to decide whether #include_next works.
+# Do not rely on a 'configure'-time test for this, since the expression
+# might appear in an installed header, which is used by some other compiler.
+HAVE_INCLUDE_NEXT = lib/(__GNUC__ lib/|| lib/60000000 lib/<= lib/__DECC_VER)
+
+## end   gnulib module absolute-header
+
+## begin gnulib module alloca-opt
+
+BUILT_SOURCES += $(ALLOCA_H)
+
+# We need the following in order to create <alloca.h> when the system
+# doesn't have one that works with the given compiler.
+if GL_GENERATE_ALLOCA_H
+lib/alloca.h: lib/alloca.in.h $(top_builddir)/config.status
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+         cat $(top_srcdir)/lib/alloca.in.h; \
+       } > $@-t && \
+       mv -f $@-t $@
+else
+lib/alloca.h: $(top_builddir)/config.status
+       rm -f $@
+endif
+MOSTLYCLEANFILES += lib/alloca.h lib/alloca.h-t
+
+EXTRA_DIST += lib/alloca.in.h
+
+## end   gnulib module alloca-opt
+
+## begin gnulib module errno
+
+BUILT_SOURCES += $(ERRNO_H)
+
+# We need the following in order to create <errno.h> when the system
+# doesn't have one that is POSIX compliant.
+if GL_GENERATE_ERRNO_H
+lib/errno.h: lib/errno.in.h $(top_builddir)/config.status
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+         sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+             -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+             -e 's|@''NEXT_ERRNO_H''@|$(NEXT_ERRNO_H)|g' \
+             -e 's|@''EMULTIHOP_HIDDEN''@|$(EMULTIHOP_HIDDEN)|g' \
+             -e 's|@''EMULTIHOP_VALUE''@|$(EMULTIHOP_VALUE)|g' \
+             -e 's|@''ENOLINK_HIDDEN''@|$(ENOLINK_HIDDEN)|g' \
+             -e 's|@''ENOLINK_VALUE''@|$(ENOLINK_VALUE)|g' \
+             -e 's|@''EOVERFLOW_HIDDEN''@|$(EOVERFLOW_HIDDEN)|g' \
+             -e 's|@''EOVERFLOW_VALUE''@|$(EOVERFLOW_VALUE)|g' \
+             < $(top_srcdir)/lib/errno.in.h; \
+       } > $@-t && \
+       mv $@-t $@
+else
+lib/errno.h: $(top_builddir)/config.status
+       rm -f $@
+endif
+MOSTLYCLEANFILES += lib/errno.h lib/errno.h-t
+
+EXTRA_DIST += lib/errno.in.h
+
+## end   gnulib module errno
+
+## begin gnulib module float
+
+BUILT_SOURCES += $(FLOAT_H)
+
+# We need the following in order to create <float.h> when the system
+# doesn't have one that works with the given compiler.
+if GL_GENERATE_FLOAT_H
+lib/float.h: lib/float.in.h $(top_builddir)/config.status
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+         sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+             -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+             -e 's|@''NEXT_FLOAT_H''@|$(NEXT_FLOAT_H)|g' \
+             -e 's|@''REPLACE_ITOLD''@|$(REPLACE_ITOLD)|g' \
+             < $(top_srcdir)/lib/float.in.h; \
+       } > $@-t && \
+       mv $@-t $@
+else
+lib/float.h: $(top_builddir)/config.status
+       rm -f $@
+endif
+MOSTLYCLEANFILES += lib/float.h lib/float.h-t
+
+EXTRA_DIST += lib/float.c lib/float.in.h lib/itold.c
+
+EXTRA_lib_libgnu_a_SOURCES += lib/float.c lib/itold.c
+
+## end   gnulib module float
+
+## begin gnulib module fprintf-posix
+
+
+EXTRA_DIST += lib/fprintf.c
+
+EXTRA_lib_libgnu_a_SOURCES += lib/fprintf.c
+
+## end   gnulib module fprintf-posix
+
+## begin gnulib module fpucw
+
+
+EXTRA_DIST += lib/fpucw.h
+
+## end   gnulib module fpucw
+
+## begin gnulib module frexp-nolibm
+
+
+EXTRA_DIST += lib/frexp.c
+
+EXTRA_lib_libgnu_a_SOURCES += lib/frexp.c
+
+## end   gnulib module frexp-nolibm
+
+## begin gnulib module frexpl-nolibm
+
+
+EXTRA_DIST += lib/frexp.c lib/frexpl.c
+
+EXTRA_lib_libgnu_a_SOURCES += lib/frexp.c lib/frexpl.c
+
+## end   gnulib module frexpl-nolibm
+
+## begin gnulib module fseterr
+
+
+EXTRA_DIST += lib/fseterr.c lib/fseterr.h lib/stdio-impl.h
+
+EXTRA_lib_libgnu_a_SOURCES += lib/fseterr.c
+
+## end   gnulib module fseterr
+
+## begin gnulib module git-version-gen
+
+
+EXTRA_DIST += $(top_srcdir)/build-aux/git-version-gen
+
+## end   gnulib module git-version-gen
+
+## begin gnulib module havelib
+
+
+EXTRA_DIST += $(top_srcdir)/build-aux/config.rpath
+
+## end   gnulib module havelib
+
+## begin gnulib module isnand-nolibm
+
+
+EXTRA_DIST += lib/float+.h lib/isnan.c lib/isnand-nolibm.h lib/isnand.c
+
+EXTRA_lib_libgnu_a_SOURCES += lib/isnan.c lib/isnand.c
+
+## end   gnulib module isnand-nolibm
+
+## begin gnulib module isnanf-nolibm
+
+
+EXTRA_DIST += lib/float+.h lib/isnan.c lib/isnanf-nolibm.h lib/isnanf.c
+
+EXTRA_lib_libgnu_a_SOURCES += lib/isnan.c lib/isnanf.c
+
+## end   gnulib module isnanf-nolibm
+
+## begin gnulib module isnanl-nolibm
+
+
+EXTRA_DIST += lib/float+.h lib/isnan.c lib/isnanl-nolibm.h lib/isnanl.c
+
+EXTRA_lib_libgnu_a_SOURCES += lib/isnan.c lib/isnanl.c
+
+## end   gnulib module isnanl-nolibm
+
+## begin gnulib module limits-h
+
+BUILT_SOURCES += $(LIMITS_H)
+
+# We need the following in order to create <limits.h> when the system
+# doesn't have one that is compatible with GNU.
+if GL_GENERATE_LIMITS_H
+lib/limits.h: lib/limits.in.h $(top_builddir)/config.status
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+         sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+             -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+             -e 's|@''NEXT_LIMITS_H''@|$(NEXT_LIMITS_H)|g' \
+             < $(top_srcdir)/lib/limits.in.h; \
+       } > $@-t && \
+       mv $@-t $@
+else
+lib/limits.h: $(top_builddir)/config.status
+       rm -f $@
+endif
+MOSTLYCLEANFILES += lib/limits.h lib/limits.h-t
+
+EXTRA_DIST += lib/limits.in.h
+
+## end   gnulib module limits-h
+
+## begin gnulib module localcharset
+
+lib_libgnu_a_SOURCES += lib/localcharset.c
+
+EXTRA_DIST += lib/localcharset.h
+
+## end   gnulib module localcharset
+
+## begin gnulib module math
+
+BUILT_SOURCES += lib/math.h
+lib_libgnu_a_SOURCES += lib/math.c
+
+# We need the following in order to create <math.h> when the system
+# doesn't have one that works with the given compiler.
+lib/math.h: lib/math.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+         sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+             -e 's|@''INCLUDE_NEXT_AS_FIRST_DIRECTIVE''@|$(INCLUDE_NEXT_AS_FIRST_DIRECTIVE)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+             -e 's|@''NEXT_AS_FIRST_DIRECTIVE_MATH_H''@|$(NEXT_AS_FIRST_DIRECTIVE_MATH_H)|g' \
+             -e 's/@''GNULIB_ACOSF''@/$(GNULIB_ACOSF)/g' \
+             -e 's/@''GNULIB_ACOSL''@/$(GNULIB_ACOSL)/g' \
+             -e 's/@''GNULIB_ASINF''@/$(GNULIB_ASINF)/g' \
+             -e 's/@''GNULIB_ASINL''@/$(GNULIB_ASINL)/g' \
+             -e 's/@''GNULIB_ATANF''@/$(GNULIB_ATANF)/g' \
+             -e 's/@''GNULIB_ATANL''@/$(GNULIB_ATANL)/g' \
+             -e 's/@''GNULIB_ATAN2F''@/$(GNULIB_ATAN2F)/g' \
+             -e 's/@''GNULIB_CBRT''@/$(GNULIB_CBRT)/g' \
+             -e 's/@''GNULIB_CBRTF''@/$(GNULIB_CBRTF)/g' \
+             -e 's/@''GNULIB_CBRTL''@/$(GNULIB_CBRTL)/g' \
+             -e 's/@''GNULIB_CEIL''@/$(GNULIB_CEIL)/g' \
+             -e 's/@''GNULIB_CEILF''@/$(GNULIB_CEILF)/g' \
+             -e 's/@''GNULIB_CEILL''@/$(GNULIB_CEILL)/g' \
+             -e 's/@''GNULIB_COPYSIGN''@/$(GNULIB_COPYSIGN)/g' \
+             -e 's/@''GNULIB_COPYSIGNF''@/$(GNULIB_COPYSIGNF)/g' \
+             -e 's/@''GNULIB_COPYSIGNL''@/$(GNULIB_COPYSIGNL)/g' \
+             -e 's/@''GNULIB_COSF''@/$(GNULIB_COSF)/g' \
+             -e 's/@''GNULIB_COSL''@/$(GNULIB_COSL)/g' \
+             -e 's/@''GNULIB_COSHF''@/$(GNULIB_COSHF)/g' \
+             -e 's/@''GNULIB_EXPF''@/$(GNULIB_EXPF)/g' \
+             -e 's/@''GNULIB_EXPL''@/$(GNULIB_EXPL)/g' \
+             -e 's/@''GNULIB_EXP2''@/$(GNULIB_EXP2)/g' \
+             -e 's/@''GNULIB_EXP2F''@/$(GNULIB_EXP2F)/g' \
+             -e 's/@''GNULIB_EXP2L''@/$(GNULIB_EXP2L)/g' \
+             -e 's/@''GNULIB_EXPM1''@/$(GNULIB_EXPM1)/g' \
+             -e 's/@''GNULIB_EXPM1F''@/$(GNULIB_EXPM1F)/g' \
+             -e 's/@''GNULIB_EXPM1L''@/$(GNULIB_EXPM1L)/g' \
+             -e 's/@''GNULIB_FABSF''@/$(GNULIB_FABSF)/g' \
+             -e 's/@''GNULIB_FABSL''@/$(GNULIB_FABSL)/g' \
+             -e 's/@''GNULIB_FLOOR''@/$(GNULIB_FLOOR)/g' \
+             -e 's/@''GNULIB_FLOORF''@/$(GNULIB_FLOORF)/g' \
+             -e 's/@''GNULIB_FLOORL''@/$(GNULIB_FLOORL)/g' \
+             -e 's/@''GNULIB_FMA''@/$(GNULIB_FMA)/g' \
+             -e 's/@''GNULIB_FMAF''@/$(GNULIB_FMAF)/g' \
+             -e 's/@''GNULIB_FMAL''@/$(GNULIB_FMAL)/g' \
+             -e 's/@''GNULIB_FMOD''@/$(GNULIB_FMOD)/g' \
+             -e 's/@''GNULIB_FMODF''@/$(GNULIB_FMODF)/g' \
+             -e 's/@''GNULIB_FMODL''@/$(GNULIB_FMODL)/g' \
+             -e 's/@''GNULIB_FREXPF''@/$(GNULIB_FREXPF)/g' \
+             -e 's/@''GNULIB_FREXP''@/$(GNULIB_FREXP)/g' \
+             -e 's/@''GNULIB_FREXPL''@/$(GNULIB_FREXPL)/g' \
+             -e 's/@''GNULIB_HYPOT''@/$(GNULIB_HYPOT)/g' \
+             -e 's/@''GNULIB_HYPOTF''@/$(GNULIB_HYPOTF)/g' \
+             -e 's/@''GNULIB_HYPOTL''@/$(GNULIB_HYPOTL)/g' \
+             < $(top_srcdir)/lib/math.in.h | \
+         sed -e 's/@''GNULIB_ILOGB''@/$(GNULIB_ILOGB)/g' \
+             -e 's/@''GNULIB_ILOGBF''@/$(GNULIB_ILOGBF)/g' \
+             -e 's/@''GNULIB_ILOGBL''@/$(GNULIB_ILOGBL)/g' \
+             -e 's/@''GNULIB_ISFINITE''@/$(GNULIB_ISFINITE)/g' \
+             -e 's/@''GNULIB_ISINF''@/$(GNULIB_ISINF)/g' \
+             -e 's/@''GNULIB_ISNAN''@/$(GNULIB_ISNAN)/g' \
+             -e 's/@''GNULIB_ISNANF''@/$(GNULIB_ISNANF)/g' \
+             -e 's/@''GNULIB_ISNAND''@/$(GNULIB_ISNAND)/g' \
+             -e 's/@''GNULIB_ISNANL''@/$(GNULIB_ISNANL)/g' \
+             -e 's/@''GNULIB_LDEXPF''@/$(GNULIB_LDEXPF)/g' \
+             -e 's/@''GNULIB_LDEXPL''@/$(GNULIB_LDEXPL)/g' \
+             -e 's/@''GNULIB_LOG''@/$(GNULIB_LOG)/g' \
+             -e 's/@''GNULIB_LOGF''@/$(GNULIB_LOGF)/g' \
+             -e 's/@''GNULIB_LOGL''@/$(GNULIB_LOGL)/g' \
+             -e 's/@''GNULIB_LOG10''@/$(GNULIB_LOG10)/g' \
+             -e 's/@''GNULIB_LOG10F''@/$(GNULIB_LOG10F)/g' \
+             -e 's/@''GNULIB_LOG10L''@/$(GNULIB_LOG10L)/g' \
+             -e 's/@''GNULIB_LOG1P''@/$(GNULIB_LOG1P)/g' \
+             -e 's/@''GNULIB_LOG1PF''@/$(GNULIB_LOG1PF)/g' \
+             -e 's/@''GNULIB_LOG1PL''@/$(GNULIB_LOG1PL)/g' \
+             -e 's/@''GNULIB_LOG2''@/$(GNULIB_LOG2)/g' \
+             -e 's/@''GNULIB_LOG2F''@/$(GNULIB_LOG2F)/g' \
+             -e 's/@''GNULIB_LOG2L''@/$(GNULIB_LOG2L)/g' \
+             -e 's/@''GNULIB_LOGB''@/$(GNULIB_LOGB)/g' \
+             -e 's/@''GNULIB_LOGBF''@/$(GNULIB_LOGBF)/g' \
+             -e 's/@''GNULIB_LOGBL''@/$(GNULIB_LOGBL)/g' \
+             -e 's/@''GNULIB_MODF''@/$(GNULIB_MODF)/g' \
+             -e 's/@''GNULIB_MODFF''@/$(GNULIB_MODFF)/g' \
+             -e 's/@''GNULIB_MODFL''@/$(GNULIB_MODFL)/g' \
+             -e 's/@''GNULIB_POWF''@/$(GNULIB_POWF)/g' \
+             -e 's/@''GNULIB_REMAINDER''@/$(GNULIB_REMAINDER)/g' \
+             -e 's/@''GNULIB_REMAINDERF''@/$(GNULIB_REMAINDERF)/g' \
+             -e 's/@''GNULIB_REMAINDERL''@/$(GNULIB_REMAINDERL)/g' \
+             -e 's/@''GNULIB_RINT''@/$(GNULIB_RINT)/g' \
+             -e 's/@''GNULIB_RINTF''@/$(GNULIB_RINTF)/g' \
+             -e 's/@''GNULIB_RINTL''@/$(GNULIB_RINTL)/g' \
+             -e 's/@''GNULIB_ROUND''@/$(GNULIB_ROUND)/g' \
+             -e 's/@''GNULIB_ROUNDF''@/$(GNULIB_ROUNDF)/g' \
+             -e 's/@''GNULIB_ROUNDL''@/$(GNULIB_ROUNDL)/g' \
+             -e 's/@''GNULIB_SIGNBIT''@/$(GNULIB_SIGNBIT)/g' \
+             -e 's/@''GNULIB_SINF''@/$(GNULIB_SINF)/g' \
+             -e 's/@''GNULIB_SINL''@/$(GNULIB_SINL)/g' \
+             -e 's/@''GNULIB_SINHF''@/$(GNULIB_SINHF)/g' \
+             -e 's/@''GNULIB_SQRTF''@/$(GNULIB_SQRTF)/g' \
+             -e 's/@''GNULIB_SQRTL''@/$(GNULIB_SQRTL)/g' \
+             -e 's/@''GNULIB_TANF''@/$(GNULIB_TANF)/g' \
+             -e 's/@''GNULIB_TANL''@/$(GNULIB_TANL)/g' \
+             -e 's/@''GNULIB_TANHF''@/$(GNULIB_TANHF)/g' \
+             -e 's/@''GNULIB_TRUNC''@/$(GNULIB_TRUNC)/g' \
+             -e 's/@''GNULIB_TRUNCF''@/$(GNULIB_TRUNCF)/g' \
+             -e 's/@''GNULIB_TRUNCL''@/$(GNULIB_TRUNCL)/g' \
+         | \
+         sed -e 's|@''HAVE_ACOSF''@|$(HAVE_ACOSF)|g' \
+             -e 's|@''HAVE_ACOSL''@|$(HAVE_ACOSL)|g' \
+             -e 's|@''HAVE_ASINF''@|$(HAVE_ASINF)|g' \
+             -e 's|@''HAVE_ASINL''@|$(HAVE_ASINL)|g' \
+             -e 's|@''HAVE_ATANF''@|$(HAVE_ATANF)|g' \
+             -e 's|@''HAVE_ATANL''@|$(HAVE_ATANL)|g' \
+             -e 's|@''HAVE_ATAN2F''@|$(HAVE_ATAN2F)|g' \
+             -e 's|@''HAVE_CBRT''@|$(HAVE_CBRT)|g' \
+             -e 's|@''HAVE_CBRTF''@|$(HAVE_CBRTF)|g' \
+             -e 's|@''HAVE_CBRTL''@|$(HAVE_CBRTL)|g' \
+             -e 's|@''HAVE_COPYSIGN''@|$(HAVE_COPYSIGN)|g' \
+             -e 's|@''HAVE_COPYSIGNL''@|$(HAVE_COPYSIGNL)|g' \
+             -e 's|@''HAVE_COSF''@|$(HAVE_COSF)|g' \
+             -e 's|@''HAVE_COSL''@|$(HAVE_COSL)|g' \
+             -e 's|@''HAVE_COSHF''@|$(HAVE_COSHF)|g' \
+             -e 's|@''HAVE_EXPF''@|$(HAVE_EXPF)|g' \
+             -e 's|@''HAVE_EXPL''@|$(HAVE_EXPL)|g' \
+             -e 's|@''HAVE_EXPM1''@|$(HAVE_EXPM1)|g' \
+             -e 's|@''HAVE_EXPM1F''@|$(HAVE_EXPM1F)|g' \
+             -e 's|@''HAVE_FABSF''@|$(HAVE_FABSF)|g' \
+             -e 's|@''HAVE_FABSL''@|$(HAVE_FABSL)|g' \
+             -e 's|@''HAVE_FMA''@|$(HAVE_FMA)|g' \
+             -e 's|@''HAVE_FMAF''@|$(HAVE_FMAF)|g' \
+             -e 's|@''HAVE_FMAL''@|$(HAVE_FMAL)|g' \
+             -e 's|@''HAVE_FMODF''@|$(HAVE_FMODF)|g' \
+             -e 's|@''HAVE_FMODL''@|$(HAVE_FMODL)|g' \
+             -e 's|@''HAVE_FREXPF''@|$(HAVE_FREXPF)|g' \
+             -e 's|@''HAVE_HYPOTF''@|$(HAVE_HYPOTF)|g' \
+             -e 's|@''HAVE_HYPOTL''@|$(HAVE_HYPOTL)|g' \
+             -e 's|@''HAVE_ILOGB''@|$(HAVE_ILOGB)|g' \
+             -e 's|@''HAVE_ILOGBF''@|$(HAVE_ILOGBF)|g' \
+             -e 's|@''HAVE_ILOGBL''@|$(HAVE_ILOGBL)|g' \
+             -e 's|@''HAVE_ISNANF''@|$(HAVE_ISNANF)|g' \
+             -e 's|@''HAVE_ISNAND''@|$(HAVE_ISNAND)|g' \
+             -e 's|@''HAVE_ISNANL''@|$(HAVE_ISNANL)|g' \
+             -e 's|@''HAVE_LDEXPF''@|$(HAVE_LDEXPF)|g' \
+             -e 's|@''HAVE_LOGF''@|$(HAVE_LOGF)|g' \
+             -e 's|@''HAVE_LOGL''@|$(HAVE_LOGL)|g' \
+             -e 's|@''HAVE_LOG10F''@|$(HAVE_LOG10F)|g' \
+             -e 's|@''HAVE_LOG10L''@|$(HAVE_LOG10L)|g' \
+             -e 's|@''HAVE_LOG1P''@|$(HAVE_LOG1P)|g' \
+             -e 's|@''HAVE_LOG1PF''@|$(HAVE_LOG1PF)|g' \
+             -e 's|@''HAVE_LOG1PL''@|$(HAVE_LOG1PL)|g' \
+             -e 's|@''HAVE_LOGBF''@|$(HAVE_LOGBF)|g' \
+             -e 's|@''HAVE_LOGBL''@|$(HAVE_LOGBL)|g' \
+             -e 's|@''HAVE_MODFF''@|$(HAVE_MODFF)|g' \
+             -e 's|@''HAVE_MODFL''@|$(HAVE_MODFL)|g' \
+             -e 's|@''HAVE_POWF''@|$(HAVE_POWF)|g' \
+             -e 's|@''HAVE_REMAINDER''@|$(HAVE_REMAINDER)|g' \
+             -e 's|@''HAVE_REMAINDERF''@|$(HAVE_REMAINDERF)|g' \
+             -e 's|@''HAVE_RINT''@|$(HAVE_RINT)|g' \
+             -e 's|@''HAVE_RINTL''@|$(HAVE_RINTL)|g' \
+             -e 's|@''HAVE_SINF''@|$(HAVE_SINF)|g' \
+             -e 's|@''HAVE_SINL''@|$(HAVE_SINL)|g' \
+             -e 's|@''HAVE_SINHF''@|$(HAVE_SINHF)|g' \
+             -e 's|@''HAVE_SQRTF''@|$(HAVE_SQRTF)|g' \
+             -e 's|@''HAVE_SQRTL''@|$(HAVE_SQRTL)|g' \
+             -e 's|@''HAVE_TANF''@|$(HAVE_TANF)|g' \
+             -e 's|@''HAVE_TANL''@|$(HAVE_TANL)|g' \
+             -e 's|@''HAVE_TANHF''@|$(HAVE_TANHF)|g' \
+             -e 's|@''HAVE_DECL_ACOSL''@|$(HAVE_DECL_ACOSL)|g' \
+             -e 's|@''HAVE_DECL_ASINL''@|$(HAVE_DECL_ASINL)|g' \
+             -e 's|@''HAVE_DECL_ATANL''@|$(HAVE_DECL_ATANL)|g' \
+             -e 's|@''HAVE_DECL_CBRTF''@|$(HAVE_DECL_CBRTF)|g' \
+             -e 's|@''HAVE_DECL_CBRTL''@|$(HAVE_DECL_CBRTL)|g' \
+             -e 's|@''HAVE_DECL_CEILF''@|$(HAVE_DECL_CEILF)|g' \
+             -e 's|@''HAVE_DECL_CEILL''@|$(HAVE_DECL_CEILL)|g' \
+             -e 's|@''HAVE_DECL_COPYSIGNF''@|$(HAVE_DECL_COPYSIGNF)|g' \
+             -e 's|@''HAVE_DECL_COSL''@|$(HAVE_DECL_COSL)|g' \
+             -e 's|@''HAVE_DECL_EXPL''@|$(HAVE_DECL_EXPL)|g' \
+             -e 's|@''HAVE_DECL_EXP2''@|$(HAVE_DECL_EXP2)|g' \
+             -e 's|@''HAVE_DECL_EXP2F''@|$(HAVE_DECL_EXP2F)|g' \
+             -e 's|@''HAVE_DECL_EXP2L''@|$(HAVE_DECL_EXP2L)|g' \
+             -e 's|@''HAVE_DECL_EXPM1L''@|$(HAVE_DECL_EXPM1L)|g' \
+             -e 's|@''HAVE_DECL_FLOORF''@|$(HAVE_DECL_FLOORF)|g' \
+             -e 's|@''HAVE_DECL_FLOORL''@|$(HAVE_DECL_FLOORL)|g' \
+             -e 's|@''HAVE_DECL_FREXPL''@|$(HAVE_DECL_FREXPL)|g' \
+             -e 's|@''HAVE_DECL_LDEXPL''@|$(HAVE_DECL_LDEXPL)|g' \
+             -e 's|@''HAVE_DECL_LOGL''@|$(HAVE_DECL_LOGL)|g' \
+             -e 's|@''HAVE_DECL_LOG10L''@|$(HAVE_DECL_LOG10L)|g' \
+             -e 's|@''HAVE_DECL_LOG2''@|$(HAVE_DECL_LOG2)|g' \
+             -e 's|@''HAVE_DECL_LOG2F''@|$(HAVE_DECL_LOG2F)|g' \
+             -e 's|@''HAVE_DECL_LOG2L''@|$(HAVE_DECL_LOG2L)|g' \
+             -e 's|@''HAVE_DECL_LOGB''@|$(HAVE_DECL_LOGB)|g' \
+             -e 's|@''HAVE_DECL_REMAINDER''@|$(HAVE_DECL_REMAINDER)|g' \
+             -e 's|@''HAVE_DECL_REMAINDERL''@|$(HAVE_DECL_REMAINDERL)|g' \
+             -e 's|@''HAVE_DECL_RINTF''@|$(HAVE_DECL_RINTF)|g' \
+             -e 's|@''HAVE_DECL_ROUND''@|$(HAVE_DECL_ROUND)|g' \
+             -e 's|@''HAVE_DECL_ROUNDF''@|$(HAVE_DECL_ROUNDF)|g' \
+             -e 's|@''HAVE_DECL_ROUNDL''@|$(HAVE_DECL_ROUNDL)|g' \
+             -e 's|@''HAVE_DECL_SINL''@|$(HAVE_DECL_SINL)|g' \
+             -e 's|@''HAVE_DECL_SQRTL''@|$(HAVE_DECL_SQRTL)|g' \
+             -e 's|@''HAVE_DECL_TANL''@|$(HAVE_DECL_TANL)|g' \
+             -e 's|@''HAVE_DECL_TRUNC''@|$(HAVE_DECL_TRUNC)|g' \
+             -e 's|@''HAVE_DECL_TRUNCF''@|$(HAVE_DECL_TRUNCF)|g' \
+             -e 's|@''HAVE_DECL_TRUNCL''@|$(HAVE_DECL_TRUNCL)|g' \
+         | \
+         sed -e 's|@''REPLACE_ACOSF''@|$(REPLACE_ACOSF)|g' \
+             -e 's|@''REPLACE_ASINF''@|$(REPLACE_ASINF)|g' \
+             -e 's|@''REPLACE_ATANF''@|$(REPLACE_ATANF)|g' \
+             -e 's|@''REPLACE_ATAN2F''@|$(REPLACE_ATAN2F)|g' \
+             -e 's|@''REPLACE_CBRTF''@|$(REPLACE_CBRTF)|g' \
+             -e 's|@''REPLACE_CBRTL''@|$(REPLACE_CBRTL)|g' \
+             -e 's|@''REPLACE_CEIL''@|$(REPLACE_CEIL)|g' \
+             -e 's|@''REPLACE_CEILF''@|$(REPLACE_CEILF)|g' \
+             -e 's|@''REPLACE_CEILL''@|$(REPLACE_CEILL)|g' \
+             -e 's|@''REPLACE_COSF''@|$(REPLACE_COSF)|g' \
+             -e 's|@''REPLACE_COSHF''@|$(REPLACE_COSHF)|g' \
+             -e 's|@''REPLACE_EXPF''@|$(REPLACE_EXPF)|g' \
+             -e 's|@''REPLACE_EXPM1''@|$(REPLACE_EXPM1)|g' \
+             -e 's|@''REPLACE_EXPM1F''@|$(REPLACE_EXPM1F)|g' \
+             -e 's|@''REPLACE_EXP2''@|$(REPLACE_EXP2)|g' \
+             -e 's|@''REPLACE_EXP2L''@|$(REPLACE_EXP2L)|g' \
+             -e 's|@''REPLACE_FABSL''@|$(REPLACE_FABSL)|g' \
+             -e 's|@''REPLACE_FLOOR''@|$(REPLACE_FLOOR)|g' \
+             -e 's|@''REPLACE_FLOORF''@|$(REPLACE_FLOORF)|g' \
+             -e 's|@''REPLACE_FLOORL''@|$(REPLACE_FLOORL)|g' \
+             -e 's|@''REPLACE_FMA''@|$(REPLACE_FMA)|g' \
+             -e 's|@''REPLACE_FMAF''@|$(REPLACE_FMAF)|g' \
+             -e 's|@''REPLACE_FMAL''@|$(REPLACE_FMAL)|g' \
+             -e 's|@''REPLACE_FMOD''@|$(REPLACE_FMOD)|g' \
+             -e 's|@''REPLACE_FMODF''@|$(REPLACE_FMODF)|g' \
+             -e 's|@''REPLACE_FMODL''@|$(REPLACE_FMODL)|g' \
+             -e 's|@''REPLACE_FREXPF''@|$(REPLACE_FREXPF)|g' \
+             -e 's|@''REPLACE_FREXP''@|$(REPLACE_FREXP)|g' \
+             -e 's|@''REPLACE_FREXPL''@|$(REPLACE_FREXPL)|g' \
+             -e 's|@''REPLACE_HUGE_VAL''@|$(REPLACE_HUGE_VAL)|g' \
+             -e 's|@''REPLACE_HYPOT''@|$(REPLACE_HYPOT)|g' \
+             -e 's|@''REPLACE_HYPOTF''@|$(REPLACE_HYPOTF)|g' \
+             -e 's|@''REPLACE_HYPOTL''@|$(REPLACE_HYPOTL)|g' \
+             -e 's|@''REPLACE_ILOGB''@|$(REPLACE_ILOGB)|g' \
+             -e 's|@''REPLACE_ILOGBF''@|$(REPLACE_ILOGBF)|g' \
+             -e 's|@''REPLACE_ILOGBL''@|$(REPLACE_ILOGBL)|g' \
+             -e 's|@''REPLACE_ISFINITE''@|$(REPLACE_ISFINITE)|g' \
+             -e 's|@''REPLACE_ISINF''@|$(REPLACE_ISINF)|g' \
+             -e 's|@''REPLACE_ISNAN''@|$(REPLACE_ISNAN)|g' \
+             -e 's|@''REPLACE_ITOLD''@|$(REPLACE_ITOLD)|g' \
+             -e 's|@''REPLACE_LDEXPL''@|$(REPLACE_LDEXPL)|g' \
+             -e 's|@''REPLACE_LOG''@|$(REPLACE_LOG)|g' \
+             -e 's|@''REPLACE_LOGF''@|$(REPLACE_LOGF)|g' \
+             -e 's|@''REPLACE_LOGL''@|$(REPLACE_LOGL)|g' \
+             -e 's|@''REPLACE_LOG10''@|$(REPLACE_LOG10)|g' \
+             -e 's|@''REPLACE_LOG10F''@|$(REPLACE_LOG10F)|g' \
+             -e 's|@''REPLACE_LOG10L''@|$(REPLACE_LOG10L)|g' \
+             -e 's|@''REPLACE_LOG1P''@|$(REPLACE_LOG1P)|g' \
+             -e 's|@''REPLACE_LOG1PF''@|$(REPLACE_LOG1PF)|g' \
+             -e 's|@''REPLACE_LOG1PL''@|$(REPLACE_LOG1PL)|g' \
+             -e 's|@''REPLACE_LOG2''@|$(REPLACE_LOG2)|g' \
+             -e 's|@''REPLACE_LOG2F''@|$(REPLACE_LOG2F)|g' \
+             -e 's|@''REPLACE_LOG2L''@|$(REPLACE_LOG2L)|g' \
+             -e 's|@''REPLACE_LOGB''@|$(REPLACE_LOGB)|g' \
+             -e 's|@''REPLACE_LOGBF''@|$(REPLACE_LOGBF)|g' \
+             -e 's|@''REPLACE_LOGBL''@|$(REPLACE_LOGBL)|g' \
+             -e 's|@''REPLACE_MODF''@|$(REPLACE_MODF)|g' \
+             -e 's|@''REPLACE_MODFF''@|$(REPLACE_MODFF)|g' \
+             -e 's|@''REPLACE_MODFL''@|$(REPLACE_MODFL)|g' \
+             -e 's|@''REPLACE_NAN''@|$(REPLACE_NAN)|g' \
+             -e 's|@''REPLACE_REMAINDER''@|$(REPLACE_REMAINDER)|g' \
+             -e 's|@''REPLACE_REMAINDERF''@|$(REPLACE_REMAINDERF)|g' \
+             -e 's|@''REPLACE_REMAINDERL''@|$(REPLACE_REMAINDERL)|g' \
+             -e 's|@''REPLACE_ROUND''@|$(REPLACE_ROUND)|g' \
+             -e 's|@''REPLACE_ROUNDF''@|$(REPLACE_ROUNDF)|g' \
+             -e 's|@''REPLACE_ROUNDL''@|$(REPLACE_ROUNDL)|g' \
+             -e 's|@''REPLACE_SIGNBIT''@|$(REPLACE_SIGNBIT)|g' \
+             -e 's|@''REPLACE_SIGNBIT_USING_GCC''@|$(REPLACE_SIGNBIT_USING_GCC)|g' \
+             -e 's|@''REPLACE_SINF''@|$(REPLACE_SINF)|g' \
+             -e 's|@''REPLACE_SINHF''@|$(REPLACE_SINHF)|g' \
+             -e 's|@''REPLACE_SQRTF''@|$(REPLACE_SQRTF)|g' \
+             -e 's|@''REPLACE_SQRTL''@|$(REPLACE_SQRTL)|g' \
+             -e 's|@''REPLACE_TANF''@|$(REPLACE_TANF)|g' \
+             -e 's|@''REPLACE_TANHF''@|$(REPLACE_TANHF)|g' \
+             -e 's|@''REPLACE_TRUNC''@|$(REPLACE_TRUNC)|g' \
+             -e 's|@''REPLACE_TRUNCF''@|$(REPLACE_TRUNCF)|g' \
+             -e 's|@''REPLACE_TRUNCL''@|$(REPLACE_TRUNCL)|g' \
+             -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
+             -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
+             -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \
+       } > $@-t && \
+       mv $@-t $@
+MOSTLYCLEANFILES += lib/math.h lib/math.h-t
+
+EXTRA_DIST += lib/math.in.h
+
+## end   gnulib module math
+
+## begin gnulib module memchr
+
+
+EXTRA_DIST += lib/memchr.c lib/memchr.valgrind
+
+EXTRA_lib_libgnu_a_SOURCES += lib/memchr.c
+
+## end   gnulib module memchr
+
+## begin gnulib module non-recursive-gnulib-prefix-hack
+
+
+EXTRA_DIST += $(top_srcdir)/build-aux/prefix-gnulib-mk
+
+## end   gnulib module non-recursive-gnulib-prefix-hack
+
+## begin gnulib module printf-frexp
+
+lib_libgnu_a_SOURCES += lib/printf-frexp.c
+
+EXTRA_DIST += lib/printf-frexp.h
+
+## end   gnulib module printf-frexp
+
+## begin gnulib module printf-frexpl
+
+lib_libgnu_a_SOURCES += lib/printf-frexpl.c
+
+EXTRA_DIST += lib/printf-frexp.c lib/printf-frexpl.h
+
+EXTRA_lib_libgnu_a_SOURCES += lib/printf-frexp.c
+
+## end   gnulib module printf-frexpl
+
+## begin gnulib module signbit
+
+
+EXTRA_DIST += lib/float+.h lib/signbitd.c lib/signbitf.c lib/signbitl.c
+
+EXTRA_lib_libgnu_a_SOURCES += lib/signbitd.c lib/signbitf.c lib/signbitl.c
+
+## end   gnulib module signbit
+
+## begin gnulib module size_max
+
+lib_libgnu_a_SOURCES += lib/size_max.h
+
+## end   gnulib module size_max
+
+## begin gnulib module snippet/arg-nonnull
+
+# Because this Makefile snippet defines a variable used by other
+# gnulib Makefile snippets, it must be present in all makefiles that
+# need it. This is ensured by the applicability 'all' defined above.
+
+ARG_NONNULL_H=$(top_srcdir)/lib/arg-nonnull.h
+
+EXTRA_DIST += lib/arg-nonnull.h
+
+## end   gnulib module snippet/arg-nonnull
+
+## begin gnulib module snippet/c++defs
+
+# Because this Makefile snippet defines a variable used by other
+# gnulib Makefile snippets, it must be present in all makefiles that
+# need it. This is ensured by the applicability 'all' defined above.
+
+CXXDEFS_H=$(top_srcdir)/lib/c++defs.h
+
+EXTRA_DIST += lib/c++defs.h
+
+## end   gnulib module snippet/c++defs
+
+## begin gnulib module snippet/warn-on-use
+
+# Because this Makefile snippet defines a variable used by other
+# gnulib Makefile snippets, it must be present in all makefiles that
+# need it. This is ensured by the applicability 'all' defined above.
+
+WARN_ON_USE_H=$(top_srcdir)/lib/warn-on-use.h
+
+EXTRA_DIST += lib/warn-on-use.h
+
+## end   gnulib module snippet/warn-on-use
+
+## begin gnulib module snprintf
+
+
+EXTRA_DIST += lib/snprintf.c
+
+EXTRA_lib_libgnu_a_SOURCES += lib/snprintf.c
+
+## end   gnulib module snprintf
+
+## begin gnulib module stddef
+
+BUILT_SOURCES += $(STDDEF_H)
+
+# We need the following in order to create <stddef.h> when the system
+# doesn't have one that works with the given compiler.
+if GL_GENERATE_STDDEF_H
+lib/stddef.h: lib/stddef.in.h $(top_builddir)/config.status
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+         sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+             -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+             -e 's|@''NEXT_STDDEF_H''@|$(NEXT_STDDEF_H)|g' \
+             -e 's|@''HAVE_MAX_ALIGN_T''@|$(HAVE_MAX_ALIGN_T)|g' \
+             -e 's|@''HAVE_WCHAR_T''@|$(HAVE_WCHAR_T)|g' \
+             -e 's|@''REPLACE_NULL''@|$(REPLACE_NULL)|g' \
+             < $(top_srcdir)/lib/stddef.in.h; \
+       } > $@-t && \
+       mv $@-t $@
+else
+lib/stddef.h: $(top_builddir)/config.status
+       rm -f $@
+endif
+MOSTLYCLEANFILES += lib/stddef.h lib/stddef.h-t
+
+EXTRA_DIST += lib/stddef.in.h
+
+## end   gnulib module stddef
+
+## begin gnulib module stdint
+
+BUILT_SOURCES += $(STDINT_H)
+
+# We need the following in order to create <stdint.h> when the system
+# doesn't have one that works with the given compiler.
+if GL_GENERATE_STDINT_H
+lib/stdint.h: lib/stdint.in.h $(top_builddir)/config.status
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+         sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+             -e 's/@''HAVE_STDINT_H''@/$(HAVE_STDINT_H)/g' \
+             -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+             -e 's|@''NEXT_STDINT_H''@|$(NEXT_STDINT_H)|g' \
+             -e 's/@''HAVE_C99_STDINT_H''@/$(HAVE_C99_STDINT_H)/g' \
+             -e 's/@''HAVE_SYS_TYPES_H''@/$(HAVE_SYS_TYPES_H)/g' \
+             -e 's/@''HAVE_INTTYPES_H''@/$(HAVE_INTTYPES_H)/g' \
+             -e 's/@''HAVE_SYS_INTTYPES_H''@/$(HAVE_SYS_INTTYPES_H)/g' \
+             -e 's/@''HAVE_SYS_BITYPES_H''@/$(HAVE_SYS_BITYPES_H)/g' \
+             -e 's/@''HAVE_WCHAR_H''@/$(HAVE_WCHAR_H)/g' \
+             -e 's/@''HAVE_LONG_LONG_INT''@/$(HAVE_LONG_LONG_INT)/g' \
+             -e 's/@''HAVE_UNSIGNED_LONG_LONG_INT''@/$(HAVE_UNSIGNED_LONG_LONG_INT)/g' \
+             -e 's/@''APPLE_UNIVERSAL_BUILD''@/$(APPLE_UNIVERSAL_BUILD)/g' \
+             -e 's/@''BITSIZEOF_PTRDIFF_T''@/$(BITSIZEOF_PTRDIFF_T)/g' \
+             -e 's/@''PTRDIFF_T_SUFFIX''@/$(PTRDIFF_T_SUFFIX)/g' \
+             -e 's/@''BITSIZEOF_SIG_ATOMIC_T''@/$(BITSIZEOF_SIG_ATOMIC_T)/g' \
+             -e 's/@''HAVE_SIGNED_SIG_ATOMIC_T''@/$(HAVE_SIGNED_SIG_ATOMIC_T)/g' \
+             -e 's/@''SIG_ATOMIC_T_SUFFIX''@/$(SIG_ATOMIC_T_SUFFIX)/g' \
+             -e 's/@''BITSIZEOF_SIZE_T''@/$(BITSIZEOF_SIZE_T)/g' \
+             -e 's/@''SIZE_T_SUFFIX''@/$(SIZE_T_SUFFIX)/g' \
+             -e 's/@''BITSIZEOF_WCHAR_T''@/$(BITSIZEOF_WCHAR_T)/g' \
+             -e 's/@''HAVE_SIGNED_WCHAR_T''@/$(HAVE_SIGNED_WCHAR_T)/g' \
+             -e 's/@''WCHAR_T_SUFFIX''@/$(WCHAR_T_SUFFIX)/g' \
+             -e 's/@''BITSIZEOF_WINT_T''@/$(BITSIZEOF_WINT_T)/g' \
+             -e 's/@''HAVE_SIGNED_WINT_T''@/$(HAVE_SIGNED_WINT_T)/g' \
+             -e 's/@''WINT_T_SUFFIX''@/$(WINT_T_SUFFIX)/g' \
+             -e 's/@''GNULIB_OVERRIDES_WINT_T''@/$(GNULIB_OVERRIDES_WINT_T)/g' \
+             < $(top_srcdir)/lib/stdint.in.h; \
+       } > $@-t && \
+       mv $@-t $@
+else
+lib/stdint.h: $(top_builddir)/config.status
+       rm -f $@
+endif
+MOSTLYCLEANFILES += lib/stdint.h lib/stdint.h-t
+
+EXTRA_DIST += lib/stdint.in.h
+
+## end   gnulib module stdint
+
+## begin gnulib module stdio
+
+BUILT_SOURCES += lib/stdio.h
+
+# We need the following in order to create <stdio.h> when the system
+# doesn't have one that works with the given compiler.
+lib/stdio.h: lib/stdio.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+         sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+             -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+             -e 's|@''NEXT_STDIO_H''@|$(NEXT_STDIO_H)|g' \
+             -e 's/@''GNULIB_DPRINTF''@/$(GNULIB_DPRINTF)/g' \
+             -e 's/@''GNULIB_FCLOSE''@/$(GNULIB_FCLOSE)/g' \
+             -e 's/@''GNULIB_FDOPEN''@/$(GNULIB_FDOPEN)/g' \
+             -e 's/@''GNULIB_FFLUSH''@/$(GNULIB_FFLUSH)/g' \
+             -e 's/@''GNULIB_FGETC''@/$(GNULIB_FGETC)/g' \
+             -e 's/@''GNULIB_FGETS''@/$(GNULIB_FGETS)/g' \
+             -e 's/@''GNULIB_FOPEN''@/$(GNULIB_FOPEN)/g' \
+             -e 's/@''GNULIB_FPRINTF''@/$(GNULIB_FPRINTF)/g' \
+             -e 's/@''GNULIB_FPRINTF_POSIX''@/$(GNULIB_FPRINTF_POSIX)/g' \
+             -e 's/@''GNULIB_FPURGE''@/$(GNULIB_FPURGE)/g' \
+             -e 's/@''GNULIB_FPUTC''@/$(GNULIB_FPUTC)/g' \
+             -e 's/@''GNULIB_FPUTS''@/$(GNULIB_FPUTS)/g' \
+             -e 's/@''GNULIB_FREAD''@/$(GNULIB_FREAD)/g' \
+             -e 's/@''GNULIB_FREOPEN''@/$(GNULIB_FREOPEN)/g' \
+             -e 's/@''GNULIB_FSCANF''@/$(GNULIB_FSCANF)/g' \
+             -e 's/@''GNULIB_FSEEK''@/$(GNULIB_FSEEK)/g' \
+             -e 's/@''GNULIB_FSEEKO''@/$(GNULIB_FSEEKO)/g' \
+             -e 's/@''GNULIB_FTELL''@/$(GNULIB_FTELL)/g' \
+             -e 's/@''GNULIB_FTELLO''@/$(GNULIB_FTELLO)/g' \
+             -e 's/@''GNULIB_FWRITE''@/$(GNULIB_FWRITE)/g' \
+             -e 's/@''GNULIB_GETC''@/$(GNULIB_GETC)/g' \
+             -e 's/@''GNULIB_GETCHAR''@/$(GNULIB_GETCHAR)/g' \
+             -e 's/@''GNULIB_GETDELIM''@/$(GNULIB_GETDELIM)/g' \
+             -e 's/@''GNULIB_GETLINE''@/$(GNULIB_GETLINE)/g' \
+             -e 's/@''GNULIB_OBSTACK_PRINTF''@/$(GNULIB_OBSTACK_PRINTF)/g' \
+             -e 's/@''GNULIB_OBSTACK_PRINTF_POSIX''@/$(GNULIB_OBSTACK_PRINTF_POSIX)/g' \
+             -e 's/@''GNULIB_PCLOSE''@/$(GNULIB_PCLOSE)/g' \
+             -e 's/@''GNULIB_PERROR''@/$(GNULIB_PERROR)/g' \
+             -e 's/@''GNULIB_POPEN''@/$(GNULIB_POPEN)/g' \
+             -e 's/@''GNULIB_PRINTF''@/$(GNULIB_PRINTF)/g' \
+             -e 's/@''GNULIB_PRINTF_POSIX''@/$(GNULIB_PRINTF_POSIX)/g' \
+             -e 's/@''GNULIB_PUTC''@/$(GNULIB_PUTC)/g' \
+             -e 's/@''GNULIB_PUTCHAR''@/$(GNULIB_PUTCHAR)/g' \
+             -e 's/@''GNULIB_PUTS''@/$(GNULIB_PUTS)/g' \
+             -e 's/@''GNULIB_REMOVE''@/$(GNULIB_REMOVE)/g' \
+             -e 's/@''GNULIB_RENAME''@/$(GNULIB_RENAME)/g' \
+             -e 's/@''GNULIB_RENAMEAT''@/$(GNULIB_RENAMEAT)/g' \
+             -e 's/@''GNULIB_SCANF''@/$(GNULIB_SCANF)/g' \
+             -e 's/@''GNULIB_SNPRINTF''@/$(GNULIB_SNPRINTF)/g' \
+             -e 's/@''GNULIB_SPRINTF_POSIX''@/$(GNULIB_SPRINTF_POSIX)/g' \
+             -e 's/@''GNULIB_STDIO_H_NONBLOCKING''@/$(GNULIB_STDIO_H_NONBLOCKING)/g' \
+             -e 's/@''GNULIB_STDIO_H_SIGPIPE''@/$(GNULIB_STDIO_H_SIGPIPE)/g' \
+             -e 's/@''GNULIB_TMPFILE''@/$(GNULIB_TMPFILE)/g' \
+             -e 's/@''GNULIB_VASPRINTF''@/$(GNULIB_VASPRINTF)/g' \
+             -e 's/@''GNULIB_VDPRINTF''@/$(GNULIB_VDPRINTF)/g' \
+             -e 's/@''GNULIB_VFPRINTF''@/$(GNULIB_VFPRINTF)/g' \
+             -e 's/@''GNULIB_VFPRINTF_POSIX''@/$(GNULIB_VFPRINTF_POSIX)/g' \
+             -e 's/@''GNULIB_VFSCANF''@/$(GNULIB_VFSCANF)/g' \
+             -e 's/@''GNULIB_VSCANF''@/$(GNULIB_VSCANF)/g' \
+             -e 's/@''GNULIB_VPRINTF''@/$(GNULIB_VPRINTF)/g' \
+             -e 's/@''GNULIB_VPRINTF_POSIX''@/$(GNULIB_VPRINTF_POSIX)/g' \
+             -e 's/@''GNULIB_VSNPRINTF''@/$(GNULIB_VSNPRINTF)/g' \
+             -e 's/@''GNULIB_VSPRINTF_POSIX''@/$(GNULIB_VSPRINTF_POSIX)/g' \
+             < $(top_srcdir)/lib/stdio.in.h | \
+         sed -e 's|@''HAVE_DECL_FPURGE''@|$(HAVE_DECL_FPURGE)|g' \
+             -e 's|@''HAVE_DECL_FSEEKO''@|$(HAVE_DECL_FSEEKO)|g' \
+             -e 's|@''HAVE_DECL_FTELLO''@|$(HAVE_DECL_FTELLO)|g' \
+             -e 's|@''HAVE_DECL_GETDELIM''@|$(HAVE_DECL_GETDELIM)|g' \
+             -e 's|@''HAVE_DECL_GETLINE''@|$(HAVE_DECL_GETLINE)|g' \
+             -e 's|@''HAVE_DECL_OBSTACK_PRINTF''@|$(HAVE_DECL_OBSTACK_PRINTF)|g' \
+             -e 's|@''HAVE_DECL_SNPRINTF''@|$(HAVE_DECL_SNPRINTF)|g' \
+             -e 's|@''HAVE_DECL_VSNPRINTF''@|$(HAVE_DECL_VSNPRINTF)|g' \
+             -e 's|@''HAVE_DPRINTF''@|$(HAVE_DPRINTF)|g' \
+             -e 's|@''HAVE_FSEEKO''@|$(HAVE_FSEEKO)|g' \
+             -e 's|@''HAVE_FTELLO''@|$(HAVE_FTELLO)|g' \
+             -e 's|@''HAVE_PCLOSE''@|$(HAVE_PCLOSE)|g' \
+             -e 's|@''HAVE_POPEN''@|$(HAVE_POPEN)|g' \
+             -e 's|@''HAVE_RENAMEAT''@|$(HAVE_RENAMEAT)|g' \
+             -e 's|@''HAVE_VASPRINTF''@|$(HAVE_VASPRINTF)|g' \
+             -e 's|@''HAVE_VDPRINTF''@|$(HAVE_VDPRINTF)|g' \
+             -e 's|@''REPLACE_DPRINTF''@|$(REPLACE_DPRINTF)|g' \
+             -e 's|@''REPLACE_FCLOSE''@|$(REPLACE_FCLOSE)|g' \
+             -e 's|@''REPLACE_FDOPEN''@|$(REPLACE_FDOPEN)|g' \
+             -e 's|@''REPLACE_FFLUSH''@|$(REPLACE_FFLUSH)|g' \
+             -e 's|@''REPLACE_FOPEN''@|$(REPLACE_FOPEN)|g' \
+             -e 's|@''REPLACE_FPRINTF''@|$(REPLACE_FPRINTF)|g' \
+             -e 's|@''REPLACE_FPURGE''@|$(REPLACE_FPURGE)|g' \
+             -e 's|@''REPLACE_FREOPEN''@|$(REPLACE_FREOPEN)|g' \
+             -e 's|@''REPLACE_FSEEK''@|$(REPLACE_FSEEK)|g' \
+             -e 's|@''REPLACE_FSEEKO''@|$(REPLACE_FSEEKO)|g' \
+             -e 's|@''REPLACE_FTELL''@|$(REPLACE_FTELL)|g' \
+             -e 's|@''REPLACE_FTELLO''@|$(REPLACE_FTELLO)|g' \
+             -e 's|@''REPLACE_GETDELIM''@|$(REPLACE_GETDELIM)|g' \
+             -e 's|@''REPLACE_GETLINE''@|$(REPLACE_GETLINE)|g' \
+             -e 's|@''REPLACE_OBSTACK_PRINTF''@|$(REPLACE_OBSTACK_PRINTF)|g' \
+             -e 's|@''REPLACE_PERROR''@|$(REPLACE_PERROR)|g' \
+             -e 's|@''REPLACE_POPEN''@|$(REPLACE_POPEN)|g' \
+             -e 's|@''REPLACE_PRINTF''@|$(REPLACE_PRINTF)|g' \
+             -e 's|@''REPLACE_REMOVE''@|$(REPLACE_REMOVE)|g' \
+             -e 's|@''REPLACE_RENAME''@|$(REPLACE_RENAME)|g' \
+             -e 's|@''REPLACE_RENAMEAT''@|$(REPLACE_RENAMEAT)|g' \
+             -e 's|@''REPLACE_SNPRINTF''@|$(REPLACE_SNPRINTF)|g' \
+             -e 's|@''REPLACE_SPRINTF''@|$(REPLACE_SPRINTF)|g' \
+             -e 's|@''REPLACE_STDIO_READ_FUNCS''@|$(REPLACE_STDIO_READ_FUNCS)|g' \
+             -e 's|@''REPLACE_STDIO_WRITE_FUNCS''@|$(REPLACE_STDIO_WRITE_FUNCS)|g' \
+             -e 's|@''REPLACE_TMPFILE''@|$(REPLACE_TMPFILE)|g' \
+             -e 's|@''REPLACE_VASPRINTF''@|$(REPLACE_VASPRINTF)|g' \
+             -e 's|@''REPLACE_VDPRINTF''@|$(REPLACE_VDPRINTF)|g' \
+             -e 's|@''REPLACE_VFPRINTF''@|$(REPLACE_VFPRINTF)|g' \
+             -e 's|@''REPLACE_VPRINTF''@|$(REPLACE_VPRINTF)|g' \
+             -e 's|@''REPLACE_VSNPRINTF''@|$(REPLACE_VSNPRINTF)|g' \
+             -e 's|@''REPLACE_VSPRINTF''@|$(REPLACE_VSPRINTF)|g' \
+             -e 's|@''ASM_SYMBOL_PREFIX''@|$(ASM_SYMBOL_PREFIX)|g' \
+             -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
+             -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
+             -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \
+       } > $@-t && \
+       mv $@-t $@
+MOSTLYCLEANFILES += lib/stdio.h lib/stdio.h-t
+
+EXTRA_DIST += lib/stdio.in.h
+
+## end   gnulib module stdio
+
+## begin gnulib module streq
+
+
+EXTRA_DIST += lib/streq.h
+
+## end   gnulib module streq
+
+## begin gnulib module string
+
+BUILT_SOURCES += lib/string.h
+
+# We need the following in order to create <string.h> when the system
+# doesn't have one that works with the given compiler.
+lib/string.h: lib/string.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+         sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+             -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+             -e 's|@''NEXT_STRING_H''@|$(NEXT_STRING_H)|g' \
+             -e 's/@''GNULIB_EXPLICIT_BZERO''@/$(GNULIB_EXPLICIT_BZERO)/g' \
+             -e 's/@''GNULIB_FFSL''@/$(GNULIB_FFSL)/g' \
+             -e 's/@''GNULIB_FFSLL''@/$(GNULIB_FFSLL)/g' \
+             -e 's/@''GNULIB_MBSLEN''@/$(GNULIB_MBSLEN)/g' \
+             -e 's/@''GNULIB_MBSNLEN''@/$(GNULIB_MBSNLEN)/g' \
+             -e 's/@''GNULIB_MBSCHR''@/$(GNULIB_MBSCHR)/g' \
+             -e 's/@''GNULIB_MBSRCHR''@/$(GNULIB_MBSRCHR)/g' \
+             -e 's/@''GNULIB_MBSSTR''@/$(GNULIB_MBSSTR)/g' \
+             -e 's/@''GNULIB_MBSCASECMP''@/$(GNULIB_MBSCASECMP)/g' \
+             -e 's/@''GNULIB_MBSNCASECMP''@/$(GNULIB_MBSNCASECMP)/g' \
+             -e 's/@''GNULIB_MBSPCASECMP''@/$(GNULIB_MBSPCASECMP)/g' \
+             -e 's/@''GNULIB_MBSCASESTR''@/$(GNULIB_MBSCASESTR)/g' \
+             -e 's/@''GNULIB_MBSCSPN''@/$(GNULIB_MBSCSPN)/g' \
+             -e 's/@''GNULIB_MBSPBRK''@/$(GNULIB_MBSPBRK)/g' \
+             -e 's/@''GNULIB_MBSSPN''@/$(GNULIB_MBSSPN)/g' \
+             -e 's/@''GNULIB_MBSSEP''@/$(GNULIB_MBSSEP)/g' \
+             -e 's/@''GNULIB_MBSTOK_R''@/$(GNULIB_MBSTOK_R)/g' \
+             -e 's/@''GNULIB_MEMCHR''@/$(GNULIB_MEMCHR)/g' \
+             -e 's/@''GNULIB_MEMMEM''@/$(GNULIB_MEMMEM)/g' \
+             -e 's/@''GNULIB_MEMPCPY''@/$(GNULIB_MEMPCPY)/g' \
+             -e 's/@''GNULIB_MEMRCHR''@/$(GNULIB_MEMRCHR)/g' \
+             -e 's/@''GNULIB_RAWMEMCHR''@/$(GNULIB_RAWMEMCHR)/g' \
+             -e 's/@''GNULIB_STPCPY''@/$(GNULIB_STPCPY)/g' \
+             -e 's/@''GNULIB_STPNCPY''@/$(GNULIB_STPNCPY)/g' \
+             -e 's/@''GNULIB_STRCHRNUL''@/$(GNULIB_STRCHRNUL)/g' \
+             -e 's/@''GNULIB_STRDUP''@/$(GNULIB_STRDUP)/g' \
+             -e 's/@''GNULIB_STRNCAT''@/$(GNULIB_STRNCAT)/g' \
+             -e 's/@''GNULIB_STRNDUP''@/$(GNULIB_STRNDUP)/g' \
+             -e 's/@''GNULIB_STRNLEN''@/$(GNULIB_STRNLEN)/g' \
+             -e 's/@''GNULIB_STRPBRK''@/$(GNULIB_STRPBRK)/g' \
+             -e 's/@''GNULIB_STRSEP''@/$(GNULIB_STRSEP)/g' \
+             -e 's/@''GNULIB_STRSTR''@/$(GNULIB_STRSTR)/g' \
+             -e 's/@''GNULIB_STRCASESTR''@/$(GNULIB_STRCASESTR)/g' \
+             -e 's/@''GNULIB_STRTOK_R''@/$(GNULIB_STRTOK_R)/g' \
+             -e 's/@''GNULIB_STRERROR''@/$(GNULIB_STRERROR)/g' \
+             -e 's/@''GNULIB_STRERROR_R''@/$(GNULIB_STRERROR_R)/g' \
+             -e 's/@''GNULIB_STRSIGNAL''@/$(GNULIB_STRSIGNAL)/g' \
+             -e 's/@''GNULIB_STRVERSCMP''@/$(GNULIB_STRVERSCMP)/g' \
+             < $(top_srcdir)/lib/string.in.h | \
+         sed -e 's|@''HAVE_EXPLICIT_BZERO''@|$(HAVE_EXPLICIT_BZERO)|g' \
+             -e 's|@''HAVE_FFSL''@|$(HAVE_FFSL)|g' \
+             -e 's|@''HAVE_FFSLL''@|$(HAVE_FFSLL)|g' \
+             -e 's|@''HAVE_MBSLEN''@|$(HAVE_MBSLEN)|g' \
+             -e 's|@''HAVE_MEMCHR''@|$(HAVE_MEMCHR)|g' \
+             -e 's|@''HAVE_DECL_MEMMEM''@|$(HAVE_DECL_MEMMEM)|g' \
+             -e 's|@''HAVE_MEMPCPY''@|$(HAVE_MEMPCPY)|g' \
+             -e 's|@''HAVE_DECL_MEMRCHR''@|$(HAVE_DECL_MEMRCHR)|g' \
+             -e 's|@''HAVE_RAWMEMCHR''@|$(HAVE_RAWMEMCHR)|g' \
+             -e 's|@''HAVE_STPCPY''@|$(HAVE_STPCPY)|g' \
+             -e 's|@''HAVE_STPNCPY''@|$(HAVE_STPNCPY)|g' \
+             -e 's|@''HAVE_STRCHRNUL''@|$(HAVE_STRCHRNUL)|g' \
+             -e 's|@''HAVE_DECL_STRDUP''@|$(HAVE_DECL_STRDUP)|g' \
+             -e 's|@''HAVE_DECL_STRNDUP''@|$(HAVE_DECL_STRNDUP)|g' \
+             -e 's|@''HAVE_DECL_STRNLEN''@|$(HAVE_DECL_STRNLEN)|g' \
+             -e 's|@''HAVE_STRPBRK''@|$(HAVE_STRPBRK)|g' \
+             -e 's|@''HAVE_STRSEP''@|$(HAVE_STRSEP)|g' \
+             -e 's|@''HAVE_STRCASESTR''@|$(HAVE_STRCASESTR)|g' \
+             -e 's|@''HAVE_DECL_STRTOK_R''@|$(HAVE_DECL_STRTOK_R)|g' \
+             -e 's|@''HAVE_DECL_STRERROR_R''@|$(HAVE_DECL_STRERROR_R)|g' \
+             -e 's|@''HAVE_DECL_STRSIGNAL''@|$(HAVE_DECL_STRSIGNAL)|g' \
+             -e 's|@''HAVE_STRVERSCMP''@|$(HAVE_STRVERSCMP)|g' \
+             -e 's|@''REPLACE_MEMCHR''@|$(REPLACE_MEMCHR)|g' \
+             -e 's|@''REPLACE_MEMMEM''@|$(REPLACE_MEMMEM)|g' \
+             -e 's|@''REPLACE_STPNCPY''@|$(REPLACE_STPNCPY)|g' \
+             -e 's|@''REPLACE_STRCHRNUL''@|$(REPLACE_STRCHRNUL)|g' \
+             -e 's|@''REPLACE_STRDUP''@|$(REPLACE_STRDUP)|g' \
+             -e 's|@''REPLACE_STRNCAT''@|$(REPLACE_STRNCAT)|g' \
+             -e 's|@''REPLACE_STRNDUP''@|$(REPLACE_STRNDUP)|g' \
+             -e 's|@''REPLACE_STRNLEN''@|$(REPLACE_STRNLEN)|g' \
+             -e 's|@''REPLACE_STRSTR''@|$(REPLACE_STRSTR)|g' \
+             -e 's|@''REPLACE_STRCASESTR''@|$(REPLACE_STRCASESTR)|g' \
+             -e 's|@''REPLACE_STRTOK_R''@|$(REPLACE_STRTOK_R)|g' \
+             -e 's|@''REPLACE_STRERROR''@|$(REPLACE_STRERROR)|g' \
+             -e 's|@''REPLACE_STRERROR_R''@|$(REPLACE_STRERROR_R)|g' \
+             -e 's|@''REPLACE_STRSIGNAL''@|$(REPLACE_STRSIGNAL)|g' \
+             -e 's|@''UNDEFINE_STRTOK_R''@|$(UNDEFINE_STRTOK_R)|g' \
+             -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
+             -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
+             -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \
+             < $(top_srcdir)/lib/string.in.h; \
+       } > $@-t && \
+       mv $@-t $@
+MOSTLYCLEANFILES += lib/string.h lib/string.h-t
+
+EXTRA_DIST += lib/string.in.h
+
+## end   gnulib module string
+
+## begin gnulib module sys_types
+
+BUILT_SOURCES += lib/sys/types.h
+
+# We need the following in order to create <sys/types.h> when the system
+# doesn't have one that works with the given compiler.
+lib/sys/types.h: lib/sys_types.in.h $(top_builddir)/config.status
+       $(AM_V_at)$(MKDIR_P) lib/sys
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+         sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+             -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+             -e 's|@''NEXT_SYS_TYPES_H''@|$(NEXT_SYS_TYPES_H)|g' \
+             -e 's|@''WINDOWS_64_BIT_OFF_T''@|$(WINDOWS_64_BIT_OFF_T)|g' \
+             -e 's|@''WINDOWS_STAT_INODES''@|$(WINDOWS_STAT_INODES)|g' \
+             < $(top_srcdir)/lib/sys_types.in.h; \
+       } > $@-t && \
+       mv $@-t $@
+MOSTLYCLEANFILES += lib/sys/types.h lib/sys/types.h-t
+
+EXTRA_DIST += lib/sys_types.in.h
+
+## end   gnulib module sys_types
+
+## begin gnulib module unitypes
+
+BUILT_SOURCES += $(LIBUNISTRING_UNITYPES_H)
+
+lib/unitypes.h: lib/unitypes.in.h
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+         cat $(top_srcdir)/lib/unitypes.in.h; \
+       } > $@-t && \
+       mv -f $@-t $@
+MOSTLYCLEANFILES += lib/unitypes.h lib/unitypes.h-t
+
+EXTRA_DIST += lib/unitypes.in.h
+
+## end   gnulib module unitypes
+
+## begin gnulib module uniwidth/base
+
+BUILT_SOURCES += $(LIBUNISTRING_UNIWIDTH_H)
+
+lib/uniwidth.h: lib/uniwidth.in.h
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+         cat $(top_srcdir)/lib/uniwidth.in.h; \
+       } > $@-t && \
+       mv -f $@-t $@
+MOSTLYCLEANFILES += lib/uniwidth.h lib/uniwidth.h-t
+
+EXTRA_DIST += lib/localcharset.h lib/uniwidth.in.h
+
+## end   gnulib module uniwidth/base
+
+## begin gnulib module uniwidth/width
+
+if LIBUNISTRING_COMPILE_UNIWIDTH_WIDTH
+lib_libgnu_a_SOURCES += lib/uniwidth/width.c
+endif
+
+EXTRA_DIST += lib/uniwidth/cjk.h
+
+## end   gnulib module uniwidth/width
+
+## begin gnulib module vasnprintf
+
+
+EXTRA_DIST += lib/asnprintf.c lib/float+.h lib/printf-args.c lib/printf-args.h lib/printf-parse.c lib/printf-parse.h lib/vasnprintf.c lib/vasnprintf.h
+
+EXTRA_lib_libgnu_a_SOURCES += lib/asnprintf.c lib/printf-args.c lib/printf-parse.c lib/vasnprintf.c
+
+## end   gnulib module vasnprintf
+
+## begin gnulib module verify
+
+
+EXTRA_DIST += lib/verify.h
+
+## end   gnulib module verify
+
+## begin gnulib module vsnprintf
+
+
+EXTRA_DIST += lib/vsnprintf.c
+
+EXTRA_lib_libgnu_a_SOURCES += lib/vsnprintf.c
+
+## end   gnulib module vsnprintf
+
+## begin gnulib module wchar
+
+BUILT_SOURCES += lib/wchar.h
+
+# We need the following in order to create <wchar.h> when the system
+# version does not work standalone.
+lib/wchar.h: lib/wchar.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+         sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+             -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+             -e 's|@''HAVE_FEATURES_H''@|$(HAVE_FEATURES_H)|g' \
+             -e 's|@''NEXT_WCHAR_H''@|$(NEXT_WCHAR_H)|g' \
+             -e 's|@''HAVE_WCHAR_H''@|$(HAVE_WCHAR_H)|g' \
+             -e 's/@''HAVE_CRTDEFS_H''@/$(HAVE_CRTDEFS_H)/g' \
+             -e 's/@''GNULIB_OVERRIDES_WINT_T''@/$(GNULIB_OVERRIDES_WINT_T)/g' \
+             -e 's/@''GNULIB_BTOWC''@/$(GNULIB_BTOWC)/g' \
+             -e 's/@''GNULIB_WCTOB''@/$(GNULIB_WCTOB)/g' \
+             -e 's/@''GNULIB_MBSINIT''@/$(GNULIB_MBSINIT)/g' \
+             -e 's/@''GNULIB_MBRTOWC''@/$(GNULIB_MBRTOWC)/g' \
+             -e 's/@''GNULIB_MBRLEN''@/$(GNULIB_MBRLEN)/g' \
+             -e 's/@''GNULIB_MBSRTOWCS''@/$(GNULIB_MBSRTOWCS)/g' \
+             -e 's/@''GNULIB_MBSNRTOWCS''@/$(GNULIB_MBSNRTOWCS)/g' \
+             -e 's/@''GNULIB_WCRTOMB''@/$(GNULIB_WCRTOMB)/g' \
+             -e 's/@''GNULIB_WCSRTOMBS''@/$(GNULIB_WCSRTOMBS)/g' \
+             -e 's/@''GNULIB_WCSNRTOMBS''@/$(GNULIB_WCSNRTOMBS)/g' \
+             -e 's/@''GNULIB_WCWIDTH''@/$(GNULIB_WCWIDTH)/g' \
+             -e 's/@''GNULIB_WMEMCHR''@/$(GNULIB_WMEMCHR)/g' \
+             -e 's/@''GNULIB_WMEMCMP''@/$(GNULIB_WMEMCMP)/g' \
+             -e 's/@''GNULIB_WMEMCPY''@/$(GNULIB_WMEMCPY)/g' \
+             -e 's/@''GNULIB_WMEMMOVE''@/$(GNULIB_WMEMMOVE)/g' \
+             -e 's/@''GNULIB_WMEMSET''@/$(GNULIB_WMEMSET)/g' \
+             -e 's/@''GNULIB_WCSLEN''@/$(GNULIB_WCSLEN)/g' \
+             -e 's/@''GNULIB_WCSNLEN''@/$(GNULIB_WCSNLEN)/g' \
+             -e 's/@''GNULIB_WCSCPY''@/$(GNULIB_WCSCPY)/g' \
+             -e 's/@''GNULIB_WCPCPY''@/$(GNULIB_WCPCPY)/g' \
+             -e 's/@''GNULIB_WCSNCPY''@/$(GNULIB_WCSNCPY)/g' \
+             -e 's/@''GNULIB_WCPNCPY''@/$(GNULIB_WCPNCPY)/g' \
+             -e 's/@''GNULIB_WCSCAT''@/$(GNULIB_WCSCAT)/g' \
+             -e 's/@''GNULIB_WCSNCAT''@/$(GNULIB_WCSNCAT)/g' \
+             -e 's/@''GNULIB_WCSCMP''@/$(GNULIB_WCSCMP)/g' \
+             -e 's/@''GNULIB_WCSNCMP''@/$(GNULIB_WCSNCMP)/g' \
+             -e 's/@''GNULIB_WCSCASECMP''@/$(GNULIB_WCSCASECMP)/g' \
+             -e 's/@''GNULIB_WCSNCASECMP''@/$(GNULIB_WCSNCASECMP)/g' \
+             -e 's/@''GNULIB_WCSCOLL''@/$(GNULIB_WCSCOLL)/g' \
+             -e 's/@''GNULIB_WCSXFRM''@/$(GNULIB_WCSXFRM)/g' \
+             -e 's/@''GNULIB_WCSDUP''@/$(GNULIB_WCSDUP)/g' \
+             -e 's/@''GNULIB_WCSCHR''@/$(GNULIB_WCSCHR)/g' \
+             -e 's/@''GNULIB_WCSRCHR''@/$(GNULIB_WCSRCHR)/g' \
+             -e 's/@''GNULIB_WCSCSPN''@/$(GNULIB_WCSCSPN)/g' \
+             -e 's/@''GNULIB_WCSSPN''@/$(GNULIB_WCSSPN)/g' \
+             -e 's/@''GNULIB_WCSPBRK''@/$(GNULIB_WCSPBRK)/g' \
+             -e 's/@''GNULIB_WCSSTR''@/$(GNULIB_WCSSTR)/g' \
+             -e 's/@''GNULIB_WCSTOK''@/$(GNULIB_WCSTOK)/g' \
+             -e 's/@''GNULIB_WCSWIDTH''@/$(GNULIB_WCSWIDTH)/g' \
+             -e 's/@''GNULIB_WCSFTIME''@/$(GNULIB_WCSFTIME)/g' \
+             < $(top_srcdir)/lib/wchar.in.h | \
+         sed -e 's|@''HAVE_WINT_T''@|$(HAVE_WINT_T)|g' \
+             -e 's|@''HAVE_BTOWC''@|$(HAVE_BTOWC)|g' \
+             -e 's|@''HAVE_MBSINIT''@|$(HAVE_MBSINIT)|g' \
+             -e 's|@''HAVE_MBRTOWC''@|$(HAVE_MBRTOWC)|g' \
+             -e 's|@''HAVE_MBRLEN''@|$(HAVE_MBRLEN)|g' \
+             -e 's|@''HAVE_MBSRTOWCS''@|$(HAVE_MBSRTOWCS)|g' \
+             -e 's|@''HAVE_MBSNRTOWCS''@|$(HAVE_MBSNRTOWCS)|g' \
+             -e 's|@''HAVE_WCRTOMB''@|$(HAVE_WCRTOMB)|g' \
+             -e 's|@''HAVE_WCSRTOMBS''@|$(HAVE_WCSRTOMBS)|g' \
+             -e 's|@''HAVE_WCSNRTOMBS''@|$(HAVE_WCSNRTOMBS)|g' \
+             -e 's|@''HAVE_WMEMCHR''@|$(HAVE_WMEMCHR)|g' \
+             -e 's|@''HAVE_WMEMCMP''@|$(HAVE_WMEMCMP)|g' \
+             -e 's|@''HAVE_WMEMCPY''@|$(HAVE_WMEMCPY)|g' \
+             -e 's|@''HAVE_WMEMMOVE''@|$(HAVE_WMEMMOVE)|g' \
+             -e 's|@''HAVE_WMEMSET''@|$(HAVE_WMEMSET)|g' \
+             -e 's|@''HAVE_WCSLEN''@|$(HAVE_WCSLEN)|g' \
+             -e 's|@''HAVE_WCSNLEN''@|$(HAVE_WCSNLEN)|g' \
+             -e 's|@''HAVE_WCSCPY''@|$(HAVE_WCSCPY)|g' \
+             -e 's|@''HAVE_WCPCPY''@|$(HAVE_WCPCPY)|g' \
+             -e 's|@''HAVE_WCSNCPY''@|$(HAVE_WCSNCPY)|g' \
+             -e 's|@''HAVE_WCPNCPY''@|$(HAVE_WCPNCPY)|g' \
+             -e 's|@''HAVE_WCSCAT''@|$(HAVE_WCSCAT)|g' \
+             -e 's|@''HAVE_WCSNCAT''@|$(HAVE_WCSNCAT)|g' \
+             -e 's|@''HAVE_WCSCMP''@|$(HAVE_WCSCMP)|g' \
+             -e 's|@''HAVE_WCSNCMP''@|$(HAVE_WCSNCMP)|g' \
+             -e 's|@''HAVE_WCSCASECMP''@|$(HAVE_WCSCASECMP)|g' \
+             -e 's|@''HAVE_WCSNCASECMP''@|$(HAVE_WCSNCASECMP)|g' \
+             -e 's|@''HAVE_WCSCOLL''@|$(HAVE_WCSCOLL)|g' \
+             -e 's|@''HAVE_WCSXFRM''@|$(HAVE_WCSXFRM)|g' \
+             -e 's|@''HAVE_WCSDUP''@|$(HAVE_WCSDUP)|g' \
+             -e 's|@''HAVE_WCSCHR''@|$(HAVE_WCSCHR)|g' \
+             -e 's|@''HAVE_WCSRCHR''@|$(HAVE_WCSRCHR)|g' \
+             -e 's|@''HAVE_WCSCSPN''@|$(HAVE_WCSCSPN)|g' \
+             -e 's|@''HAVE_WCSSPN''@|$(HAVE_WCSSPN)|g' \
+             -e 's|@''HAVE_WCSPBRK''@|$(HAVE_WCSPBRK)|g' \
+             -e 's|@''HAVE_WCSSTR''@|$(HAVE_WCSSTR)|g' \
+             -e 's|@''HAVE_WCSTOK''@|$(HAVE_WCSTOK)|g' \
+             -e 's|@''HAVE_WCSWIDTH''@|$(HAVE_WCSWIDTH)|g' \
+             -e 's|@''HAVE_WCSFTIME''@|$(HAVE_WCSFTIME)|g' \
+             -e 's|@''HAVE_DECL_WCTOB''@|$(HAVE_DECL_WCTOB)|g' \
+             -e 's|@''HAVE_DECL_WCWIDTH''@|$(HAVE_DECL_WCWIDTH)|g' \
+         | \
+         sed -e 's|@''REPLACE_MBSTATE_T''@|$(REPLACE_MBSTATE_T)|g' \
+             -e 's|@''REPLACE_BTOWC''@|$(REPLACE_BTOWC)|g' \
+             -e 's|@''REPLACE_WCTOB''@|$(REPLACE_WCTOB)|g' \
+             -e 's|@''REPLACE_MBSINIT''@|$(REPLACE_MBSINIT)|g' \
+             -e 's|@''REPLACE_MBRTOWC''@|$(REPLACE_MBRTOWC)|g' \
+             -e 's|@''REPLACE_MBRLEN''@|$(REPLACE_MBRLEN)|g' \
+             -e 's|@''REPLACE_MBSRTOWCS''@|$(REPLACE_MBSRTOWCS)|g' \
+             -e 's|@''REPLACE_MBSNRTOWCS''@|$(REPLACE_MBSNRTOWCS)|g' \
+             -e 's|@''REPLACE_WCRTOMB''@|$(REPLACE_WCRTOMB)|g' \
+             -e 's|@''REPLACE_WCSRTOMBS''@|$(REPLACE_WCSRTOMBS)|g' \
+             -e 's|@''REPLACE_WCSNRTOMBS''@|$(REPLACE_WCSNRTOMBS)|g' \
+             -e 's|@''REPLACE_WCWIDTH''@|$(REPLACE_WCWIDTH)|g' \
+             -e 's|@''REPLACE_WCSWIDTH''@|$(REPLACE_WCSWIDTH)|g' \
+             -e 's|@''REPLACE_WCSFTIME''@|$(REPLACE_WCSFTIME)|g' \
+             -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
+             -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
+             -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \
+       } > $@-t && \
+       mv $@-t $@
+MOSTLYCLEANFILES += lib/wchar.h lib/wchar.h-t
+
+EXTRA_DIST += lib/wchar.in.h
+
+## end   gnulib module wchar
+
+## begin gnulib module wctype-h
+
+BUILT_SOURCES += lib/wctype.h
+lib_libgnu_a_SOURCES += lib/wctype-h.c
+
+# We need the following in order to create <wctype.h> when the system
+# doesn't have one that works with the given compiler.
+lib/wctype.h: lib/wctype.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(WARN_ON_USE_H)
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+         sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+             -e 's/@''HAVE_WCTYPE_H''@/$(HAVE_WCTYPE_H)/g' \
+             -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+             -e 's|@''NEXT_WCTYPE_H''@|$(NEXT_WCTYPE_H)|g' \
+             -e 's/@''HAVE_CRTDEFS_H''@/$(HAVE_CRTDEFS_H)/g' \
+             -e 's/@''GNULIB_OVERRIDES_WINT_T''@/$(GNULIB_OVERRIDES_WINT_T)/g' \
+             -e 's/@''GNULIB_ISWBLANK''@/$(GNULIB_ISWBLANK)/g' \
+             -e 's/@''GNULIB_WCTYPE''@/$(GNULIB_WCTYPE)/g' \
+             -e 's/@''GNULIB_ISWCTYPE''@/$(GNULIB_ISWCTYPE)/g' \
+             -e 's/@''GNULIB_WCTRANS''@/$(GNULIB_WCTRANS)/g' \
+             -e 's/@''GNULIB_TOWCTRANS''@/$(GNULIB_TOWCTRANS)/g' \
+             -e 's/@''HAVE_ISWBLANK''@/$(HAVE_ISWBLANK)/g' \
+             -e 's/@''HAVE_ISWCNTRL''@/$(HAVE_ISWCNTRL)/g' \
+             -e 's/@''HAVE_WCTYPE_T''@/$(HAVE_WCTYPE_T)/g' \
+             -e 's/@''HAVE_WCTRANS_T''@/$(HAVE_WCTRANS_T)/g' \
+             -e 's/@''HAVE_WINT_T''@/$(HAVE_WINT_T)/g' \
+             -e 's/@''REPLACE_ISWBLANK''@/$(REPLACE_ISWBLANK)/g' \
+             -e 's/@''REPLACE_ISWCNTRL''@/$(REPLACE_ISWCNTRL)/g' \
+             -e 's/@''REPLACE_TOWLOWER''@/$(REPLACE_TOWLOWER)/g' \
+             -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
+             -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \
+             < $(top_srcdir)/lib/wctype.in.h; \
+       } > $@-t && \
+       mv $@-t $@
+MOSTLYCLEANFILES += lib/wctype.h lib/wctype.h-t
+
+EXTRA_DIST += lib/wctype.in.h
+
+## end   gnulib module wctype-h
+
+## begin gnulib module wcwidth
+
+
+EXTRA_DIST += lib/wcwidth.c
+
+EXTRA_lib_libgnu_a_SOURCES += lib/wcwidth.c
+
+## end   gnulib module wcwidth
+
+## begin gnulib module xsize
+
+lib_libgnu_a_SOURCES += lib/xsize.h lib/xsize.c
+
+## end   gnulib module xsize
+
+
+mostlyclean-local: mostlyclean-generic
+       @for dir in '' $(MOSTLYCLEANDIRS); do \
+         if test -n "$$dir" && test -d $$dir; then \
+           echo "rmdir $$dir"; rmdir $$dir; \
+         fi; \
+       done; \
+       :
diff --git a/lib/isnan.c b/lib/isnan.c
new file mode 100644 (file)
index 0000000..a25c882
--- /dev/null
@@ -0,0 +1,189 @@
+/* Test for NaN that does not need libm.
+   Copyright (C) 2007-2018 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 <https://www.gnu.org/licenses/>.  */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007.  */
+
+#include <config.h>
+
+/* Specification.  */
+#ifdef USE_LONG_DOUBLE
+/* Specification found in math.h or isnanl-nolibm.h.  */
+extern int rpl_isnanl (long double x) _GL_ATTRIBUTE_CONST;
+#elif ! defined USE_FLOAT
+/* Specification found in math.h or isnand-nolibm.h.  */
+extern int rpl_isnand (double x);
+#else /* defined USE_FLOAT */
+/* Specification found in math.h or isnanf-nolibm.h.  */
+extern int rpl_isnanf (float x);
+#endif
+
+#include <float.h>
+#include <string.h>
+
+#include "float+.h"
+
+#ifdef USE_LONG_DOUBLE
+# define FUNC rpl_isnanl
+# define DOUBLE long double
+# define MAX_EXP LDBL_MAX_EXP
+# define MIN_EXP LDBL_MIN_EXP
+# if defined LDBL_EXPBIT0_WORD && defined LDBL_EXPBIT0_BIT
+#  define KNOWN_EXPBIT0_LOCATION
+#  define EXPBIT0_WORD LDBL_EXPBIT0_WORD
+#  define EXPBIT0_BIT LDBL_EXPBIT0_BIT
+# endif
+# define SIZE SIZEOF_LDBL
+# define L_(literal) literal##L
+#elif ! defined USE_FLOAT
+# define FUNC rpl_isnand
+# define DOUBLE double
+# define MAX_EXP DBL_MAX_EXP
+# define MIN_EXP DBL_MIN_EXP
+# if defined DBL_EXPBIT0_WORD && defined DBL_EXPBIT0_BIT
+#  define KNOWN_EXPBIT0_LOCATION
+#  define EXPBIT0_WORD DBL_EXPBIT0_WORD
+#  define EXPBIT0_BIT DBL_EXPBIT0_BIT
+# endif
+# define SIZE SIZEOF_DBL
+# define L_(literal) literal
+#else /* defined USE_FLOAT */
+# define FUNC rpl_isnanf
+# define DOUBLE float
+# define MAX_EXP FLT_MAX_EXP
+# define MIN_EXP FLT_MIN_EXP
+# if defined FLT_EXPBIT0_WORD && defined FLT_EXPBIT0_BIT
+#  define KNOWN_EXPBIT0_LOCATION
+#  define EXPBIT0_WORD FLT_EXPBIT0_WORD
+#  define EXPBIT0_BIT FLT_EXPBIT0_BIT
+# endif
+# define SIZE SIZEOF_FLT
+# define L_(literal) literal##f
+#endif
+
+#define EXP_MASK ((MAX_EXP - MIN_EXP) | 7)
+
+#define NWORDS \
+  ((sizeof (DOUBLE) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
+typedef union { DOUBLE value; unsigned int word[NWORDS]; } memory_double;
+
+/* Most hosts nowadays use IEEE floating point, so they use IEC 60559
+   representations, have infinities and NaNs, and do not trap on
+   exceptions.  Define IEEE_FLOATING_POINT if this host is one of the
+   typical ones.  The C11 macro __STDC_IEC_559__ is close to what is
+   wanted here, but is not quite right because this file does not require
+   all the features of C11 Annex F (and does not require C11 at all,
+   for that matter).  */
+
+#define IEEE_FLOATING_POINT (FLT_RADIX == 2 && FLT_MANT_DIG == 24 \
+                             && FLT_MIN_EXP == -125 && FLT_MAX_EXP == 128)
+
+int
+FUNC (DOUBLE x)
+{
+#if defined KNOWN_EXPBIT0_LOCATION && IEEE_FLOATING_POINT
+# if defined USE_LONG_DOUBLE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) && !HAVE_SAME_LONG_DOUBLE_AS_DOUBLE
+  /* Special CPU dependent code is needed to treat bit patterns outside the
+     IEEE 754 specification (such as Pseudo-NaNs, Pseudo-Infinities,
+     Pseudo-Zeroes, Unnormalized Numbers, and Pseudo-Denormals) as NaNs.
+     These bit patterns are:
+       - exponent = 0x0001..0x7FFF, mantissa bit 63 = 0,
+       - exponent = 0x0000, mantissa bit 63 = 1.
+     The NaN bit pattern is:
+       - exponent = 0x7FFF, mantissa >= 0x8000000000000001.  */
+  memory_double m;
+  unsigned int exponent;
+
+  m.value = x;
+  exponent = (m.word[EXPBIT0_WORD] >> EXPBIT0_BIT) & EXP_MASK;
+#  ifdef WORDS_BIGENDIAN
+  /* Big endian: EXPBIT0_WORD = 0, EXPBIT0_BIT = 16.  */
+  if (exponent == 0)
+    return 1 & (m.word[0] >> 15);
+  else if (exponent == EXP_MASK)
+    return (((m.word[0] ^ 0x8000U) << 16) | m.word[1] | (m.word[2] >> 16)) != 0;
+  else
+    return 1 & ~(m.word[0] >> 15);
+#  else
+  /* Little endian: EXPBIT0_WORD = 2, EXPBIT0_BIT = 0.  */
+  if (exponent == 0)
+    return (m.word[1] >> 31);
+  else if (exponent == EXP_MASK)
+    return ((m.word[1] ^ 0x80000000U) | m.word[0]) != 0;
+  else
+    return (m.word[1] >> 31) ^ 1;
+#  endif
+# else
+  /* Be careful to not do any floating-point operation on x, such as x == x,
+     because x may be a signaling NaN.  */
+#  if defined __SUNPRO_C || defined __ICC || defined _MSC_VER \
+      || defined __DECC || defined __TINYC__ \
+      || (defined __sgi && !defined __GNUC__)
+  /* The Sun C 5.0, Intel ICC 10.0, Microsoft Visual C/C++ 9.0, Compaq (ex-DEC)
+     6.4, and TinyCC compilers don't recognize the initializers as constant
+     expressions.  The Compaq compiler also fails when constant-folding
+     0.0 / 0.0 even when constant-folding is not required.  The Microsoft
+     Visual C/C++ compiler also fails when constant-folding 1.0 / 0.0 even
+     when constant-folding is not required. The SGI MIPSpro C compiler
+     complains about "floating-point operation result is out of range".  */
+  static DOUBLE zero = L_(0.0);
+  memory_double nan;
+  DOUBLE plus_inf = L_(1.0) / zero;
+  DOUBLE minus_inf = -L_(1.0) / zero;
+  nan.value = zero / zero;
+#  else
+  static memory_double nan = { L_(0.0) / L_(0.0) };
+  static DOUBLE plus_inf = L_(1.0) / L_(0.0);
+  static DOUBLE minus_inf = -L_(1.0) / L_(0.0);
+#  endif
+  {
+    memory_double m;
+
+    /* A NaN can be recognized through its exponent.  But exclude +Infinity and
+       -Infinity, which have the same exponent.  */
+    m.value = x;
+    if (((m.word[EXPBIT0_WORD] ^ nan.word[EXPBIT0_WORD])
+         & (EXP_MASK << EXPBIT0_BIT))
+        == 0)
+      return (memcmp (&m.value, &plus_inf, SIZE) != 0
+              && memcmp (&m.value, &minus_inf, SIZE) != 0);
+    else
+      return 0;
+  }
+# endif
+#else
+  /* The configuration did not find sufficient information, or does
+     not use IEEE floating point.  Give up about the signaling NaNs;
+     handle only the quiet NaNs.  */
+  if (x == x)
+    {
+# if defined USE_LONG_DOUBLE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) && !HAVE_SAME_LONG_DOUBLE_AS_DOUBLE
+      /* Detect any special bit patterns that pass ==; see comment above.  */
+      memory_double m1;
+      memory_double m2;
+
+      memset (&m1.value, 0, SIZE);
+      memset (&m2.value, 0, SIZE);
+      m1.value = x;
+      m2.value = x + (x ? 0.0L : -0.0L);
+      if (memcmp (&m1.value, &m2.value, SIZE) != 0)
+        return 1;
+# endif
+      return 0;
+    }
+  else
+    return 1;
+#endif
+}
diff --git a/lib/isnand-nolibm.h b/lib/isnand-nolibm.h
new file mode 100644 (file)
index 0000000..7be4573
--- /dev/null
@@ -0,0 +1,33 @@
+/* Test for NaN that does not need libm.
+   Copyright (C) 2007-2018 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 <https://www.gnu.org/licenses/>.  */
+
+#if HAVE_ISNAND_IN_LIBC
+/* Get declaration of isnan macro.  */
+# include <math.h>
+# if __GNUC__ >= 4
+   /* GCC 4.0 and newer provides three built-ins for isnan.  */
+#  undef isnand
+#  define isnand(x) __builtin_isnan ((double)(x))
+# else
+#  undef isnand
+#  define isnand(x) isnan ((double)(x))
+# endif
+#else
+/* Test whether X is a NaN.  */
+# undef isnand
+# define isnand rpl_isnand
+extern int isnand (double x);
+#endif
diff --git a/lib/isnand.c b/lib/isnand.c
new file mode 100644 (file)
index 0000000..4871a5c
--- /dev/null
@@ -0,0 +1,19 @@
+/* Test for NaN that does not need libm.
+   Copyright (C) 2008-2018 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 <https://www.gnu.org/licenses/>.  */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2008.  */
+
+#include "isnan.c"
diff --git a/lib/isnanf-nolibm.h b/lib/isnanf-nolibm.h
new file mode 100644 (file)
index 0000000..8e3764c
--- /dev/null
@@ -0,0 +1,40 @@
+/* Test for NaN that does not need libm.
+   Copyright (C) 2007-2018 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 <https://www.gnu.org/licenses/>.  */
+
+#if HAVE_ISNANF_IN_LIBC
+/* Get declaration of isnan macro or (older) isnanf function.  */
+# include <math.h>
+# if __GNUC__ >= 4
+   /* GCC 4.0 and newer provides three built-ins for isnan.  */
+#  undef isnanf
+#  define isnanf(x) __builtin_isnanf ((float)(x))
+# elif defined isnan
+#  undef isnanf
+#  define isnanf(x) isnan ((float)(x))
+# else
+   /* Get declaration of isnanf(), if not declared in <math.h>.  */
+#  if defined __sgi
+   /* We can't include <ieeefp.h>, because it conflicts with our definition of
+      isnand.  Therefore declare isnanf separately.  */
+extern int isnanf (float x);
+#  endif
+# endif
+#else
+/* Test whether X is a NaN.  */
+# undef isnanf
+# define isnanf rpl_isnanf
+extern int isnanf (float x);
+#endif
diff --git a/lib/isnanf.c b/lib/isnanf.c
new file mode 100644 (file)
index 0000000..786c530
--- /dev/null
@@ -0,0 +1,20 @@
+/* Test for NaN that does not need libm.
+   Copyright (C) 2007, 2009-2018 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 <https://www.gnu.org/licenses/>.  */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007.  */
+
+#define USE_FLOAT
+#include "isnan.c"
diff --git a/lib/isnanl-nolibm.h b/lib/isnanl-nolibm.h
new file mode 100644 (file)
index 0000000..ddd12f0
--- /dev/null
@@ -0,0 +1,33 @@
+/* Test for NaN that does not need libm.
+   Copyright (C) 2007-2018 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 <https://www.gnu.org/licenses/>.  */
+
+#if HAVE_ISNANL_IN_LIBC
+/* Get declaration of isnan macro or (older) isnanl function.  */
+# include <math.h>
+# if __GNUC__ >= 4
+   /* GCC 4.0 and newer provides three built-ins for isnan.  */
+#  undef isnanl
+#  define isnanl(x) __builtin_isnanl ((long double)(x))
+# elif defined isnan
+#  undef isnanl
+#  define isnanl(x) isnan ((long double)(x))
+# endif
+#else
+/* Test whether X is a NaN.  */
+# undef isnanl
+# define isnanl rpl_isnanl
+extern int isnanl (long double x);
+#endif
diff --git a/lib/isnanl.c b/lib/isnanl.c
new file mode 100644 (file)
index 0000000..f45d1f2
--- /dev/null
@@ -0,0 +1,20 @@
+/* Test for NaN that does not need libm.
+   Copyright (C) 2007, 2009-2018 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 <https://www.gnu.org/licenses/>.  */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007.  */
+
+#define USE_LONG_DOUBLE
+#include "isnan.c"
diff --git a/lib/itold.c b/lib/itold.c
new file mode 100644 (file)
index 0000000..6a43bd8
--- /dev/null
@@ -0,0 +1,28 @@
+/* Replacement for 'int' to 'long double' conversion routine.
+   Copyright (C) 2011-2018 Free Software Foundation, Inc.
+   Written by Bruno Haible <bruno@clisp.org>, 2011.
+
+   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 <https://www.gnu.org/licenses/>.  */
+
+#include <config.h>
+
+/* Specification.  */
+#include <float.h>
+
+void
+_Qp_itoq (long double *result, int a)
+{
+  /* Convert from 'int' to 'double', then from 'double' to 'long double'.  */
+  *result = (double) a;
+}
diff --git a/lib/limits.in.h b/lib/limits.in.h
new file mode 100644 (file)
index 0000000..89d7195
--- /dev/null
@@ -0,0 +1,104 @@
+/* A GNU-like <limits.h>.
+
+   Copyright 2016-2018 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, 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 <https://www.gnu.org/licenses/>.  */
+
+#ifndef _@GUARD_PREFIX@_LIMITS_H
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+@PRAGMA_COLUMNS@
+
+/* The include_next requires a split double-inclusion guard.  */
+#@INCLUDE_NEXT@ @NEXT_LIMITS_H@
+
+#ifndef _@GUARD_PREFIX@_LIMITS_H
+#define _@GUARD_PREFIX@_LIMITS_H
+
+#ifndef LLONG_MIN
+# if defined LONG_LONG_MIN /* HP-UX 11.31 */
+#  define LLONG_MIN LONG_LONG_MIN
+# elif defined LONGLONG_MIN /* IRIX 6.5 */
+#  define LLONG_MIN LONGLONG_MIN
+# elif defined __GNUC__
+#  define LLONG_MIN (- __LONG_LONG_MAX__ - 1LL)
+# endif
+#endif
+#ifndef LLONG_MAX
+# if defined LONG_LONG_MAX /* HP-UX 11.31 */
+#  define LLONG_MAX LONG_LONG_MAX
+# elif defined LONGLONG_MAX /* IRIX 6.5 */
+#  define LLONG_MAX LONGLONG_MAX
+# elif defined __GNUC__
+#  define LLONG_MAX __LONG_LONG_MAX__
+# endif
+#endif
+#ifndef ULLONG_MAX
+# if defined ULONG_LONG_MAX /* HP-UX 11.31 */
+#  define ULLONG_MAX ULONG_LONG_MAX
+# elif defined ULONGLONG_MAX /* IRIX 6.5 */
+#  define ULLONG_MAX ULONGLONG_MAX
+# elif defined __GNUC__
+#  define ULLONG_MAX (__LONG_LONG_MAX__ * 2ULL + 1ULL)
+# endif
+#endif
+
+/* The number of usable bits in an unsigned or signed integer type
+   with minimum value MIN and maximum value MAX, as an int expression
+   suitable in #if.  Cover all known practical hosts.  This
+   implementation exploits the fact that MAX is 1 less than a power of
+   2, and merely counts the number of 1 bits in MAX; "COBn" means
+   "count the number of 1 bits in the low-order n bits").  */
+#define _GL_INTEGER_WIDTH(min, max) (((min) < 0) + _GL_COB128 (max))
+#define _GL_COB128(n) (_GL_COB64 ((n) >> 31 >> 31 >> 2) + _GL_COB64 (n))
+#define _GL_COB64(n) (_GL_COB32 ((n) >> 31 >> 1) + _GL_COB32 (n))
+#define _GL_COB32(n) (_GL_COB16 ((n) >> 16) + _GL_COB16 (n))
+#define _GL_COB16(n) (_GL_COB8 ((n) >> 8) + _GL_COB8 (n))
+#define _GL_COB8(n) (_GL_COB4 ((n) >> 4) + _GL_COB4 (n))
+#define _GL_COB4(n) (!!((n) & 8) + !!((n) & 4) + !!((n) & 2) + !!((n) & 1))
+
+#ifndef WORD_BIT
+/* Assume 'int' is 32 bits wide.  */
+# define WORD_BIT 32
+#endif
+#ifndef LONG_BIT
+/* Assume 'long' is 32 or 64 bits wide.  */
+# if LONG_MAX == INT_MAX
+#  define LONG_BIT 32
+# else
+#  define LONG_BIT 64
+# endif
+#endif
+
+/* Macros specified by ISO/IEC TS 18661-1:2014.  */
+
+#if (! defined ULLONG_WIDTH                                             \
+     && (defined _GNU_SOURCE || defined __STDC_WANT_IEC_60559_BFP_EXT__))
+# define CHAR_WIDTH _GL_INTEGER_WIDTH (CHAR_MIN, CHAR_MAX)
+# define SCHAR_WIDTH _GL_INTEGER_WIDTH (SCHAR_MIN, SCHAR_MAX)
+# define UCHAR_WIDTH _GL_INTEGER_WIDTH (0, UCHAR_MAX)
+# define SHRT_WIDTH _GL_INTEGER_WIDTH (SHRT_MIN, SHRT_MAX)
+# define USHRT_WIDTH _GL_INTEGER_WIDTH (0, USHRT_MAX)
+# define INT_WIDTH _GL_INTEGER_WIDTH (INT_MIN, INT_MAX)
+# define UINT_WIDTH _GL_INTEGER_WIDTH (0, UINT_MAX)
+# define LONG_WIDTH _GL_INTEGER_WIDTH (LONG_MIN, LONG_MAX)
+# define ULONG_WIDTH _GL_INTEGER_WIDTH (0, ULONG_MAX)
+# define LLONG_WIDTH _GL_INTEGER_WIDTH (LLONG_MIN, LLONG_MAX)
+# define ULLONG_WIDTH _GL_INTEGER_WIDTH (0, ULLONG_MAX)
+#endif /* !ULLONG_WIDTH && (_GNU_SOURCE || __STDC_WANT_IEC_60559_BFP_EXT__) */
+
+#endif /* _@GUARD_PREFIX@_LIMITS_H */
+#endif /* _@GUARD_PREFIX@_LIMITS_H */
diff --git a/lib/localcharset.c b/lib/localcharset.c
new file mode 100644 (file)
index 0000000..58c5718
--- /dev/null
@@ -0,0 +1,996 @@
+/* Determine a canonical name for the current locale's character encoding.
+
+   Copyright (C) 2000-2006, 2008-2018 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, 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 <https://www.gnu.org/licenses/>.  */
+
+/* Written by Bruno Haible <bruno@clisp.org>.  */
+
+#include <config.h>
+
+/* Specification.  */
+#include "localcharset.h"
+
+#include <stddef.h>
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+
+#if defined __APPLE__ && defined __MACH__ && HAVE_LANGINFO_CODESET
+# define DARWIN7 /* Darwin 7 or newer, i.e. Mac OS X 10.3 or newer */
+#endif
+
+#if defined _WIN32 && !defined __CYGWIN__
+# define WINDOWS_NATIVE
+# include <locale.h>
+#endif
+
+#if defined __EMX__
+/* Assume EMX program runs on OS/2, even if compiled under DOS.  */
+# ifndef OS2
+#  define OS2
+# endif
+#endif
+
+#if !defined WINDOWS_NATIVE
+# if HAVE_LANGINFO_CODESET
+#  include <langinfo.h>
+# else
+#  if 0 /* see comment regarding use of setlocale(), below */
+#   include <locale.h>
+#  endif
+# endif
+# ifdef __CYGWIN__
+#  define WIN32_LEAN_AND_MEAN
+#  include <windows.h>
+# endif
+#elif defined WINDOWS_NATIVE
+# define WIN32_LEAN_AND_MEAN
+# include <windows.h>
+#endif
+#if defined OS2
+# define INCL_DOS
+# include <os2.h>
+#endif
+
+/* For MB_CUR_MAX_L */
+#if defined DARWIN7
+# include <xlocale.h>
+#endif
+
+
+#if HAVE_LANGINFO_CODESET || defined WINDOWS_NATIVE || defined OS2
+
+/* On these platforms, we use a mapping from non-canonical encoding name
+   to GNU canonical encoding name.  */
+
+/* With glibc-2.1 or newer, we don't need any canonicalization,
+   because glibc has iconv and both glibc and libiconv support all
+   GNU canonical names directly.  */
+# if !((defined __GNU_LIBRARY__ && __GLIBC__ >= 2) || defined __UCLIBC__)
+
+struct table_entry
+{
+  const char alias[11+1];
+  const char canonical[11+1];
+};
+
+/* Table of platform-dependent mappings, sorted in ascending order.  */
+static const struct table_entry alias_table[] =
+  {
+#  if defined __FreeBSD__                                   /* FreeBSD */
+  /*{ "ARMSCII-8",  "ARMSCII-8" },*/
+    { "Big5",       "BIG5" },
+    { "C",          "ASCII" },
+  /*{ "CP1131",     "CP1131" },*/
+  /*{ "CP1251",     "CP1251" },*/
+  /*{ "CP866",      "CP866" },*/
+  /*{ "GB18030",    "GB18030" },*/
+  /*{ "GB2312",     "GB2312" },*/
+  /*{ "GBK",        "GBK" },*/
+  /*{ "ISCII-DEV",  "?" },*/
+    { "ISO8859-1",  "ISO-8859-1" },
+    { "ISO8859-13", "ISO-8859-13" },
+    { "ISO8859-15", "ISO-8859-15" },
+    { "ISO8859-2",  "ISO-8859-2" },
+    { "ISO8859-5",  "ISO-8859-5" },
+    { "ISO8859-7",  "ISO-8859-7" },
+    { "ISO8859-9",  "ISO-8859-9" },
+  /*{ "KOI8-R",     "KOI8-R" },*/
+  /*{ "KOI8-U",     "KOI8-U" },*/
+    { "SJIS",       "SHIFT_JIS" },
+    { "US-ASCII",   "ASCII" },
+    { "eucCN",      "GB2312" },
+    { "eucJP",      "EUC-JP" },
+    { "eucKR",      "EUC-KR" }
+#   define alias_table_defined
+#  endif
+#  if defined __NetBSD__                                    /* NetBSD */
+    { "646",        "ASCII" },
+  /*{ "ARMSCII-8",  "ARMSCII-8" },*/
+  /*{ "BIG5",       "BIG5" },*/
+    { "Big5-HKSCS", "BIG5-HKSCS" },
+  /*{ "CP1251",     "CP1251" },*/
+  /*{ "CP866",      "CP866" },*/
+  /*{ "GB18030",    "GB18030" },*/
+  /*{ "GB2312",     "GB2312" },*/
+    { "ISO8859-1",  "ISO-8859-1" },
+    { "ISO8859-13", "ISO-8859-13" },
+    { "ISO8859-15", "ISO-8859-15" },
+    { "ISO8859-2",  "ISO-8859-2" },
+    { "ISO8859-4",  "ISO-8859-4" },
+    { "ISO8859-5",  "ISO-8859-5" },
+    { "ISO8859-7",  "ISO-8859-7" },
+  /*{ "KOI8-R",     "KOI8-R" },*/
+  /*{ "KOI8-U",     "KOI8-U" },*/
+  /*{ "PT154",      "PT154" },*/
+    { "SJIS",       "SHIFT_JIS" },
+    { "eucCN",      "GB2312" },
+    { "eucJP",      "EUC-JP" },
+    { "eucKR",      "EUC-KR" },
+    { "eucTW",      "EUC-TW" }
+#   define alias_table_defined
+#  endif
+#  if defined __OpenBSD__                                   /* OpenBSD */
+    { "646",        "ASCII" },
+    { "ISO8859-1",  "ISO-8859-1" },
+    { "ISO8859-13", "ISO-8859-13" },
+    { "ISO8859-15", "ISO-8859-15" },
+    { "ISO8859-2",  "ISO-8859-2" },
+    { "ISO8859-4",  "ISO-8859-4" },
+    { "ISO8859-5",  "ISO-8859-5" },
+    { "ISO8859-7",  "ISO-8859-7" }
+#   define alias_table_defined
+#  endif
+#  if defined __APPLE__ && defined __MACH__                 /* Mac OS X */
+    /* Darwin 7.5 has nl_langinfo(CODESET), but sometimes its value is
+       useless:
+       - It returns the empty string when LANG is set to a locale of the
+         form ll_CC, although ll_CC/LC_CTYPE is a symlink to an UTF-8
+         LC_CTYPE file.
+       - The environment variables LANG, LC_CTYPE, LC_ALL are not set by
+         the system; nl_langinfo(CODESET) returns "US-ASCII" in this case.
+       - The documentation says:
+           "... all code that calls BSD system routines should ensure
+            that the const *char parameters of these routines are in UTF-8
+            encoding. All BSD system functions expect their string
+            parameters to be in UTF-8 encoding and nothing else."
+         It also says
+           "An additional caveat is that string parameters for files,
+            paths, and other file-system entities must be in canonical
+            UTF-8. In a canonical UTF-8 Unicode string, all decomposable
+            characters are decomposed ..."
+         but this is not true: You can pass non-decomposed UTF-8 strings
+         to file system functions, and it is the OS which will convert
+         them to decomposed UTF-8 before accessing the file system.
+       - The Apple Terminal application displays UTF-8 by default.
+       - However, other applications are free to use different encodings:
+         - xterm uses ISO-8859-1 by default.
+         - TextEdit uses MacRoman by default.
+       We prefer UTF-8 over decomposed UTF-8-MAC because one should
+       minimize the use of decomposed Unicode. Unfortunately, through the
+       Darwin file system, decomposed UTF-8 strings are leaked into user
+       space nevertheless.
+       Then there are also the locales with encodings other than US-ASCII
+       and UTF-8. These locales can be occasionally useful to users (e.g.
+       when grepping through ISO-8859-1 encoded text files), when all their
+       file names are in US-ASCII.
+     */
+    { "ARMSCII-8",  "ARMSCII-8" },
+    { "Big5",       "BIG5" },
+    { "Big5HKSCS",  "BIG5-HKSCS" },
+    { "CP1131",     "CP1131" },
+    { "CP1251",     "CP1251" },
+    { "CP866",      "CP866" },
+    { "CP949",      "CP949" },
+    { "GB18030",    "GB18030" },
+    { "GB2312",     "GB2312" },
+    { "GBK",        "GBK" },
+  /*{ "ISCII-DEV",  "?" },*/
+    { "ISO8859-1",  "ISO-8859-1" },
+    { "ISO8859-13", "ISO-8859-13" },
+    { "ISO8859-15", "ISO-8859-15" },
+    { "ISO8859-2",  "ISO-8859-2" },
+    { "ISO8859-4",  "ISO-8859-4" },
+    { "ISO8859-5",  "ISO-8859-5" },
+    { "ISO8859-7",  "ISO-8859-7" },
+    { "ISO8859-9",  "ISO-8859-9" },
+    { "KOI8-R",     "KOI8-R" },
+    { "KOI8-U",     "KOI8-U" },
+    { "PT154",      "PT154" },
+    { "SJIS",       "SHIFT_JIS" },
+    { "eucCN",      "GB2312" },
+    { "eucJP",      "EUC-JP" },
+    { "eucKR",      "EUC-KR" }
+#   define alias_table_defined
+#  endif
+#  if defined _AIX                                          /* AIX */
+  /*{ "GBK",        "GBK" },*/
+    { "IBM-1046",   "CP1046" },
+    { "IBM-1124",   "CP1124" },
+    { "IBM-1129",   "CP1129" },
+    { "IBM-1252",   "CP1252" },
+    { "IBM-850",    "CP850" },
+    { "IBM-856",    "CP856" },
+    { "IBM-921",    "ISO-8859-13" },
+    { "IBM-922",    "CP922" },
+    { "IBM-932",    "CP932" },
+    { "IBM-943",    "CP943" },
+    { "IBM-eucCN",  "GB2312" },
+    { "IBM-eucJP",  "EUC-JP" },
+    { "IBM-eucKR",  "EUC-KR" },
+    { "IBM-eucTW",  "EUC-TW" },
+    { "ISO8859-1",  "ISO-8859-1" },
+    { "ISO8859-15", "ISO-8859-15" },
+    { "ISO8859-2",  "ISO-8859-2" },
+    { "ISO8859-5",  "ISO-8859-5" },
+    { "ISO8859-6",  "ISO-8859-6" },
+    { "ISO8859-7",  "ISO-8859-7" },
+    { "ISO8859-8",  "ISO-8859-8" },
+    { "ISO8859-9",  "ISO-8859-9" },
+    { "TIS-620",    "TIS-620" },
+  /*{ "UTF-8",      "UTF-8" },*/
+    { "big5",       "BIG5" }
+#   define alias_table_defined
+#  endif
+#  if defined __hpux                                        /* HP-UX */
+    { "SJIS",      "SHIFT_JIS" },
+    { "arabic8",   "HP-ARABIC8" },
+    { "big5",      "BIG5" },
+    { "cp1251",    "CP1251" },
+    { "eucJP",     "EUC-JP" },
+    { "eucKR",     "EUC-KR" },
+    { "eucTW",     "EUC-TW" },
+    { "gb18030",   "GB18030" },
+    { "greek8",    "HP-GREEK8" },
+    { "hebrew8",   "HP-HEBREW8" },
+    { "hkbig5",    "BIG5-HKSCS" },
+    { "hp15CN",    "GB2312" },
+    { "iso88591",  "ISO-8859-1" },
+    { "iso885913", "ISO-8859-13" },
+    { "iso885915", "ISO-8859-15" },
+    { "iso88592",  "ISO-8859-2" },
+    { "iso88594",  "ISO-8859-4" },
+    { "iso88595",  "ISO-8859-5" },
+    { "iso88596",  "ISO-8859-6" },
+    { "iso88597",  "ISO-8859-7" },
+    { "iso88598",  "ISO-8859-8" },
+    { "iso88599",  "ISO-8859-9" },
+    { "kana8",     "HP-KANA8" },
+    { "koi8r",     "KOI8-R" },
+    { "roman8",    "HP-ROMAN8" },
+    { "tis620",    "TIS-620" },
+    { "turkish8",  "HP-TURKISH8" },
+    { "utf8",      "UTF-8" }
+#   define alias_table_defined
+#  endif
+#  if defined __sgi                                         /* IRIX */
+    { "ISO8859-1",  "ISO-8859-1" },
+    { "ISO8859-15", "ISO-8859-15" },
+    { "ISO8859-2",  "ISO-8859-2" },
+    { "ISO8859-5",  "ISO-8859-5" },
+    { "ISO8859-7",  "ISO-8859-7" },
+    { "ISO8859-9",  "ISO-8859-9" },
+    { "eucCN",      "GB2312" },
+    { "eucJP",      "EUC-JP" },
+    { "eucKR",      "EUC-KR" },
+    { "eucTW",      "EUC-TW" }
+#   define alias_table_defined
+#  endif
+#  if defined __osf__                                       /* OSF/1 */
+  /*{ "GBK",        "GBK" },*/
+    { "ISO8859-1",  "ISO-8859-1" },
+    { "ISO8859-15", "ISO-8859-15" },
+    { "ISO8859-2",  "ISO-8859-2" },
+    { "ISO8859-4",  "ISO-8859-4" },
+    { "ISO8859-5",  "ISO-8859-5" },
+    { "ISO8859-7",  "ISO-8859-7" },
+    { "ISO8859-8",  "ISO-8859-8" },
+    { "ISO8859-9",  "ISO-8859-9" },
+    { "KSC5601",    "CP949" },
+    { "SJIS",       "SHIFT_JIS" },
+    { "TACTIS",     "TIS-620" },
+  /*{ "UTF-8",      "UTF-8" },*/
+    { "big5",       "BIG5" },
+    { "cp850",      "CP850" },
+    { "dechanyu",   "DEC-HANYU" },
+    { "dechanzi",   "GB2312" },
+    { "deckanji",   "DEC-KANJI" },
+    { "deckorean",  "EUC-KR" },
+    { "eucJP",      "EUC-JP" },
+    { "eucKR",      "EUC-KR" },
+    { "eucTW",      "EUC-TW" },
+    { "sdeckanji",  "EUC-JP" }
+#   define alias_table_defined
+#  endif
+#  if defined __sun                                         /* Solaris */
+    { "5601",        "EUC-KR" },
+    { "646",         "ASCII" },
+  /*{ "BIG5",        "BIG5" },*/
+    { "Big5-HKSCS",  "BIG5-HKSCS" },
+    { "GB18030",     "GB18030" },
+  /*{ "GBK",         "GBK" },*/
+    { "ISO8859-1",   "ISO-8859-1" },
+    { "ISO8859-11",  "TIS-620" },
+    { "ISO8859-13",  "ISO-8859-13" },
+    { "ISO8859-15",  "ISO-8859-15" },
+    { "ISO8859-2",   "ISO-8859-2" },
+    { "ISO8859-3",   "ISO-8859-3" },
+    { "ISO8859-4",   "ISO-8859-4" },
+    { "ISO8859-5",   "ISO-8859-5" },
+    { "ISO8859-6",   "ISO-8859-6" },
+    { "ISO8859-7",   "ISO-8859-7" },
+    { "ISO8859-8",   "ISO-8859-8" },
+    { "ISO8859-9",   "ISO-8859-9" },
+    { "PCK",         "SHIFT_JIS" },
+    { "TIS620.2533", "TIS-620" },
+  /*{ "UTF-8",       "UTF-8" },*/
+    { "ansi-1251",   "CP1251" },
+    { "cns11643",    "EUC-TW" },
+    { "eucJP",       "EUC-JP" },
+    { "gb2312",      "GB2312" },
+    { "koi8-r",      "KOI8-R" }
+#   define alias_table_defined
+#  endif
+#  if defined __minix                                       /* Minix */
+    { "646", "ASCII" }
+#   define alias_table_defined
+#  endif
+#  if defined WINDOWS_NATIVE || defined __CYGWIN__          /* Windows */
+    { "CP1361",  "JOHAB" },
+    { "CP20127", "ASCII" },
+    { "CP20866", "KOI8-R" },
+    { "CP20936", "GB2312" },
+    { "CP21866", "KOI8-RU" },
+    { "CP28591", "ISO-8859-1" },
+    { "CP28592", "ISO-8859-2" },
+    { "CP28593", "ISO-8859-3" },
+    { "CP28594", "ISO-8859-4" },
+    { "CP28595", "ISO-8859-5" },
+    { "CP28596", "ISO-8859-6" },
+    { "CP28597", "ISO-8859-7" },
+    { "CP28598", "ISO-8859-8" },
+    { "CP28599", "ISO-8859-9" },
+    { "CP28605", "ISO-8859-15" },
+    { "CP38598", "ISO-8859-8" },
+    { "CP51932", "EUC-JP" },
+    { "CP51936", "GB2312" },
+    { "CP51949", "EUC-KR" },
+    { "CP51950", "EUC-TW" },
+    { "CP54936", "GB18030" },
+    { "CP65001", "UTF-8" },
+    { "CP936",   "GBK" }
+#   define alias_table_defined
+#  endif
+#  if defined OS2                                           /* OS/2 */
+    /* The list of encodings is taken from "List of OS/2 Codepages"
+       by Alex Taylor:
+       <http://altsan.org/os2/toolkits/uls/index.html#codepages>.
+       See also "IBM Globalization - Code page identifiers":
+       <https://www-01.ibm.com/software/globalization/cp/cp_cpgid.html>.  */
+    { "CP1089", "ISO-8859-6" },
+    { "CP1208", "UTF-8" },
+    { "CP1381", "GB2312" },
+    { "CP1386", "GBK" },
+    { "CP3372", "EUC-JP" },
+    { "CP813",  "ISO-8859-7" },
+    { "CP819",  "ISO-8859-1" },
+    { "CP878",  "KOI8-R" },
+    { "CP912",  "ISO-8859-2" },
+    { "CP913",  "ISO-8859-3" },
+    { "CP914",  "ISO-8859-4" },
+    { "CP915",  "ISO-8859-5" },
+    { "CP916",  "ISO-8859-8" },
+    { "CP920",  "ISO-8859-9" },
+    { "CP921",  "ISO-8859-13" },
+    { "CP923",  "ISO-8859-15" },
+    { "CP954",  "EUC-JP" },
+    { "CP964",  "EUC-TW" },
+    { "CP970",  "EUC-KR" }
+#   define alias_table_defined
+#  endif
+#  if defined VMS                                           /* OpenVMS */
+    /* The list of encodings is taken from the OpenVMS 7.3-1 documentation
+       "Compaq C Run-Time Library Reference Manual for OpenVMS systems"
+       section 10.7 "Handling Different Character Sets".  */
+    { "DECHANYU",  "DEC-HANYU" },
+    { "DECHANZI",  "GB2312" },
+    { "DECKANJI",  "DEC-KANJI" },
+    { "DECKOREAN", "EUC-KR" },
+    { "ISO8859-1", "ISO-8859-1" },
+    { "ISO8859-2", "ISO-8859-2" },
+    { "ISO8859-5", "ISO-8859-5" },
+    { "ISO8859-7", "ISO-8859-7" },
+    { "ISO8859-8", "ISO-8859-8" },
+    { "ISO8859-9", "ISO-8859-9" },
+    { "SDECKANJI", "EUC-JP" },
+    { "SJIS",      "SHIFT_JIS" },
+    { "eucJP",     "EUC-JP" },
+    { "eucTW",     "EUC-TW" }
+#   define alias_table_defined
+#  endif
+#  ifndef alias_table_defined
+    /* Just a dummy entry, to avoid a C syntax error.  */
+    { "", "" }
+#  endif
+  };
+
+# endif
+
+#else
+
+/* On these platforms, we use a mapping from locale name to GNU canonical
+   encoding name.  */
+
+struct table_entry
+{
+  const char locale[17+1];
+  const char canonical[11+1];
+};
+
+/* Table of platform-dependent mappings, sorted in ascending order.  */
+static const struct table_entry locale_table[] =
+  {
+# if defined __FreeBSD__                                    /* FreeBSD 4.2 */
+    { "cs_CZ.ISO_8859-2",  "ISO-8859-2" },
+    { "da_DK.DIS_8859-15", "ISO-8859-15" },
+    { "da_DK.ISO_8859-1",  "ISO-8859-1" },
+    { "de_AT.DIS_8859-15", "ISO-8859-15" },
+    { "de_AT.ISO_8859-1",  "ISO-8859-1" },
+    { "de_CH.DIS_8859-15", "ISO-8859-15" },
+    { "de_CH.ISO_8859-1",  "ISO-8859-1" },
+    { "de_DE.DIS_8859-15", "ISO-8859-15" },
+    { "de_DE.ISO_8859-1",  "ISO-8859-1" },
+    { "en_AU.DIS_8859-15", "ISO-8859-15" },
+    { "en_AU.ISO_8859-1",  "ISO-8859-1" },
+    { "en_CA.DIS_8859-15", "ISO-8859-15" },
+    { "en_CA.ISO_8859-1",  "ISO-8859-1" },
+    { "en_GB.DIS_8859-15", "ISO-8859-15" },
+    { "en_GB.ISO_8859-1",  "ISO-8859-1" },
+    { "en_US.DIS_8859-15", "ISO-8859-15" },
+    { "en_US.ISO_8859-1",  "ISO-8859-1" },
+    { "es_ES.DIS_8859-15", "ISO-8859-15" },
+    { "es_ES.ISO_8859-1",  "ISO-8859-1" },
+    { "fi_FI.DIS_8859-15", "ISO-8859-15" },
+    { "fi_FI.ISO_8859-1",  "ISO-8859-1" },
+    { "fr_BE.DIS_8859-15", "ISO-8859-15" },
+    { "fr_BE.ISO_8859-1",  "ISO-8859-1" },
+    { "fr_CA.DIS_8859-15", "ISO-8859-15" },
+    { "fr_CA.ISO_8859-1",  "ISO-8859-1" },
+    { "fr_CH.DIS_8859-15", "ISO-8859-15" },
+    { "fr_CH.ISO_8859-1",  "ISO-8859-1" },
+    { "fr_FR.DIS_8859-15", "ISO-8859-15" },
+    { "fr_FR.ISO_8859-1",  "ISO-8859-1" },
+    { "hr_HR.ISO_8859-2",  "ISO-8859-2" },
+    { "hu_HU.ISO_8859-2",  "ISO-8859-2" },
+    { "is_IS.DIS_8859-15", "ISO-8859-15" },
+    { "is_IS.ISO_8859-1",  "ISO-8859-1" },
+    { "it_CH.DIS_8859-15", "ISO-8859-15" },
+    { "it_CH.ISO_8859-1",  "ISO-8859-1" },
+    { "it_IT.DIS_8859-15", "ISO-8859-15" },
+    { "it_IT.ISO_8859-1",  "ISO-8859-1" },
+    { "ja_JP.EUC",         "EUC-JP" },
+    { "ja_JP.SJIS",        "SHIFT_JIS" },
+    { "ja_JP.Shift_JIS",   "SHIFT_JIS" },
+    { "ko_KR.EUC",         "EUC-KR" },
+    { "la_LN.ASCII",       "ASCII" },
+    { "la_LN.DIS_8859-15", "ISO-8859-15" },
+    { "la_LN.ISO_8859-1",  "ISO-8859-1" },
+    { "la_LN.ISO_8859-2",  "ISO-8859-2" },
+    { "la_LN.ISO_8859-4",  "ISO-8859-4" },
+    { "lt_LN.ASCII",       "ASCII" },
+    { "lt_LN.DIS_8859-15", "ISO-8859-15" },
+    { "lt_LN.ISO_8859-1",  "ISO-8859-1" },
+    { "lt_LN.ISO_8859-2",  "ISO-8859-2" },
+    { "lt_LT.ISO_8859-4",  "ISO-8859-4" },
+    { "nl_BE.DIS_8859-15", "ISO-8859-15" },
+    { "nl_BE.ISO_8859-1",  "ISO-8859-1" },
+    { "nl_NL.DIS_8859-15", "ISO-8859-15" },
+    { "nl_NL.ISO_8859-1",  "ISO-8859-1" },
+    { "no_NO.DIS_8859-15", "ISO-8859-15" },
+    { "no_NO.ISO_8859-1",  "ISO-8859-1" },
+    { "pl_PL.ISO_8859-2",  "ISO-8859-2" },
+    { "pt_PT.DIS_8859-15", "ISO-8859-15" },
+    { "pt_PT.ISO_8859-1",  "ISO-8859-1" },
+    { "ru_RU.CP866",       "CP866" },
+    { "ru_RU.ISO_8859-5",  "ISO-8859-5" },
+    { "ru_RU.KOI8-R",      "KOI8-R" },
+    { "ru_SU.CP866",       "CP866" },
+    { "ru_SU.ISO_8859-5",  "ISO-8859-5" },
+    { "ru_SU.KOI8-R",      "KOI8-R" },
+    { "sl_SI.ISO_8859-2",  "ISO-8859-2" },
+    { "sv_SE.DIS_8859-15", "ISO-8859-15" },
+    { "sv_SE.ISO_8859-1",  "ISO-8859-1" },
+    { "uk_UA.KOI8-U",      "KOI8-U" },
+    { "zh_CN.EUC",         "GB2312" },
+    { "zh_TW.BIG5",        "BIG5" },
+    { "zh_TW.Big5",        "BIG5" }
+#  define locale_table_defined
+# endif
+# if defined __DJGPP__                                      /* DOS / DJGPP 2.03 */
+    /* The encodings given here may not all be correct.
+       If you find that the encoding given for your language and
+       country is not the one your DOS machine actually uses, just
+       correct it in this file, and send a mail to
+       Juan Manuel Guerrero <juan.guerrero@gmx.de>
+       and <bug-gnulib@gnu.org>.  */
+    { "C",     "ASCII" },
+    { "ar",    "CP864" },
+    { "ar_AE", "CP864" },
+    { "ar_DZ", "CP864" },
+    { "ar_EG", "CP864" },
+    { "ar_IQ", "CP864" },
+    { "ar_IR", "CP864" },
+    { "ar_JO", "CP864" },
+    { "ar_KW", "CP864" },
+    { "ar_MA", "CP864" },
+    { "ar_OM", "CP864" },
+    { "ar_QA", "CP864" },
+    { "ar_SA", "CP864" },
+    { "ar_SY", "CP864" },
+    { "be",    "CP866" },
+    { "be_BE", "CP866" },
+    { "bg",    "CP866" }, /* not CP855 ?? */
+    { "bg_BG", "CP866" }, /* not CP855 ?? */
+    { "ca",    "CP850" },
+    { "ca_ES", "CP850" },
+    { "cs",    "CP852" },
+    { "cs_CZ", "CP852" },
+    { "da",    "CP865" }, /* not CP850 ?? */
+    { "da_DK", "CP865" }, /* not CP850 ?? */
+    { "de",    "CP850" },
+    { "de_AT", "CP850" },
+    { "de_CH", "CP850" },
+    { "de_DE", "CP850" },
+    { "el",    "CP869" },
+    { "el_GR", "CP869" },
+    { "en",    "CP850" },
+    { "en_AU", "CP850" }, /* not CP437 ?? */
+    { "en_CA", "CP850" },
+    { "en_GB", "CP850" },
+    { "en_NZ", "CP437" },
+    { "en_US", "CP437" },
+    { "en_ZA", "CP850" }, /* not CP437 ?? */
+    { "eo",    "CP850" },
+    { "eo_EO", "CP850" },
+    { "es",    "CP850" },
+    { "es_AR", "CP850" },
+    { "es_BO", "CP850" },
+    { "es_CL", "CP850" },
+    { "es_CO", "CP850" },
+    { "es_CR", "CP850" },
+    { "es_CU", "CP850" },
+    { "es_DO", "CP850" },
+    { "es_EC", "CP850" },
+    { "es_ES", "CP850" },
+    { "es_GT", "CP850" },
+    { "es_HN", "CP850" },
+    { "es_MX", "CP850" },
+    { "es_NI", "CP850" },
+    { "es_PA", "CP850" },
+    { "es_PE", "CP850" },
+    { "es_PY", "CP850" },
+    { "es_SV", "CP850" },
+    { "es_UY", "CP850" },
+    { "es_VE", "CP850" },
+    { "et",    "CP850" },
+    { "et_EE", "CP850" },
+    { "eu",    "CP850" },
+    { "eu_ES", "CP850" },
+    { "fi",    "CP850" },
+    { "fi_FI", "CP850" },
+    { "fr",    "CP850" },
+    { "fr_BE", "CP850" },
+    { "fr_CA", "CP850" },
+    { "fr_CH", "CP850" },
+    { "fr_FR", "CP850" },
+    { "ga",    "CP850" },
+    { "ga_IE", "CP850" },
+    { "gd",    "CP850" },
+    { "gd_GB", "CP850" },
+    { "gl",    "CP850" },
+    { "gl_ES", "CP850" },
+    { "he",    "CP862" },
+    { "he_IL", "CP862" },
+    { "hr",    "CP852" },
+    { "hr_HR", "CP852" },
+    { "hu",    "CP852" },
+    { "hu_HU", "CP852" },
+    { "id",    "CP850" }, /* not CP437 ?? */
+    { "id_ID", "CP850" }, /* not CP437 ?? */
+    { "is",    "CP861" }, /* not CP850 ?? */
+    { "is_IS", "CP861" }, /* not CP850 ?? */
+    { "it",    "CP850" },
+    { "it_CH", "CP850" },
+    { "it_IT", "CP850" },
+    { "ja",    "CP932" },
+    { "ja_JP", "CP932" },
+    { "kr",    "CP949" }, /* not CP934 ?? */
+    { "kr_KR", "CP949" }, /* not CP934 ?? */
+    { "lt",    "CP775" },
+    { "lt_LT", "CP775" },
+    { "lv",    "CP775" },
+    { "lv_LV", "CP775" },
+    { "mk",    "CP866" }, /* not CP855 ?? */
+    { "mk_MK", "CP866" }, /* not CP855 ?? */
+    { "mt",    "CP850" },
+    { "mt_MT", "CP850" },
+    { "nb",    "CP865" }, /* not CP850 ?? */
+    { "nb_NO", "CP865" }, /* not CP850 ?? */
+    { "nl",    "CP850" },
+    { "nl_BE", "CP850" },
+    { "nl_NL", "CP850" },
+    { "nn",    "CP865" }, /* not CP850 ?? */
+    { "nn_NO", "CP865" }, /* not CP850 ?? */
+    { "no",    "CP865" }, /* not CP850 ?? */
+    { "no_NO", "CP865" }, /* not CP850 ?? */
+    { "pl",    "CP852" },
+    { "pl_PL", "CP852" },
+    { "pt",    "CP850" },
+    { "pt_BR", "CP850" },
+    { "pt_PT", "CP850" },
+    { "ro",    "CP852" },
+    { "ro_RO", "CP852" },
+    { "ru",    "CP866" },
+    { "ru_RU", "CP866" },
+    { "sk",    "CP852" },
+    { "sk_SK", "CP852" },
+    { "sl",    "CP852" },
+    { "sl_SI", "CP852" },
+    { "sq",    "CP852" },
+    { "sq_AL", "CP852" },
+    { "sr",    "CP852" }, /* CP852 or CP866 or CP855 ?? */
+    { "sr_CS", "CP852" }, /* CP852 or CP866 or CP855 ?? */
+    { "sr_YU", "CP852" }, /* CP852 or CP866 or CP855 ?? */
+    { "sv",    "CP850" },
+    { "sv_SE", "CP850" },
+    { "th",    "CP874" },
+    { "th_TH", "CP874" },
+    { "tr",    "CP857" },
+    { "tr_TR", "CP857" },
+    { "uk",    "CP1125" },
+    { "uk_UA", "CP1125" },
+    { "zh_CN", "GBK" },
+    { "zh_TW", "CP950" } /* not CP938 ?? */
+#  define locale_table_defined
+# endif
+# ifndef locale_table_defined
+    /* Just a dummy entry, to avoid a C syntax error.  */
+    { "", "" }
+# endif
+  };
+
+#endif
+
+
+/* Determine the current locale's character encoding, and canonicalize it
+   into one of the canonical names listed in localcharset.h.
+   The result must not be freed; it is statically allocated.
+   If the canonical name cannot be determined, the result is a non-canonical
+   name.  */
+
+#ifdef STATIC
+STATIC
+#endif
+const char *
+locale_charset (void)
+{
+  const char *codeset;
+
+#if HAVE_LANGINFO_CODESET || defined WINDOWS_NATIVE || defined OS2
+
+# if HAVE_LANGINFO_CODESET
+
+  /* Most systems support nl_langinfo (CODESET) nowadays.  */
+  codeset = nl_langinfo (CODESET);
+
+#  ifdef __CYGWIN__
+  /* Cygwin < 1.7 does not have locales.  nl_langinfo (CODESET) always
+     returns "US-ASCII".  Return the suffix of the locale name from the
+     environment variables (if present) or the codepage as a number.  */
+  if (codeset != NULL && strcmp (codeset, "US-ASCII") == 0)
+    {
+      const char *locale;
+      static char buf[2 + 10 + 1];
+
+      locale = getenv ("LC_ALL");
+      if (locale == NULL || locale[0] == '\0')
+        {
+          locale = getenv ("LC_CTYPE");
+          if (locale == NULL || locale[0] == '\0')
+            locale = getenv ("LANG");
+        }
+      if (locale != NULL && locale[0] != '\0')
+        {
+          /* If the locale name contains an encoding after the dot, return
+             it.  */
+          const char *dot = strchr (locale, '.');
+
+          if (dot != NULL)
+            {
+              const char *modifier;
+
+              dot++;
+              /* Look for the possible @... trailer and remove it, if any.  */
+              modifier = strchr (dot, '@');
+              if (modifier == NULL)
+                return dot;
+              if (modifier - dot < sizeof (buf))
+                {
+                  memcpy (buf, dot, modifier - dot);
+                  buf [modifier - dot] = '\0';
+                  return buf;
+                }
+            }
+        }
+
+      /* The Windows API has a function returning the locale's codepage as a
+         number: GetACP().  This encoding is used by Cygwin, unless the user
+         has set the environment variable CYGWIN=codepage:oem (which very few
+         people do).
+         Output directed to console windows needs to be converted (to
+         GetOEMCP() if the console is using a raster font, or to
+         GetConsoleOutputCP() if it is using a TrueType font).  Cygwin does
+         this conversion transparently (see winsup/cygwin/fhandler_console.cc),
+         converting to GetConsoleOutputCP().  This leads to correct results,
+         except when SetConsoleOutputCP has been called and a raster font is
+         in use.  */
+      sprintf (buf, "CP%u", GetACP ());
+      codeset = buf;
+    }
+#  endif
+
+  if (codeset == NULL)
+    /* The canonical name cannot be determined.  */
+    codeset = "";
+
+# elif defined WINDOWS_NATIVE
+
+  static char buf[2 + 10 + 1];
+
+  /* The Windows API has a function returning the locale's codepage as
+     a number, but the value doesn't change according to what the
+     'setlocale' call specified.  So we use it as a last resort, in
+     case the string returned by 'setlocale' doesn't specify the
+     codepage.  */
+  char *current_locale = setlocale (LC_ALL, NULL);
+  char *pdot;
+
+  /* If they set different locales for different categories,
+     'setlocale' will return a semi-colon separated list of locale
+     values.  To make sure we use the correct one, we choose LC_CTYPE.  */
+  if (strchr (current_locale, ';'))
+    current_locale = setlocale (LC_CTYPE, NULL);
+
+  pdot = strrchr (current_locale, '.');
+  if (pdot && 2 + strlen (pdot + 1) + 1 <= sizeof (buf))
+    sprintf (buf, "CP%s", pdot + 1);
+  else
+    {
+      /* The Windows API has a function returning the locale's codepage as a
+        number: GetACP().
+        When the output goes to a console window, it needs to be provided in
+        GetOEMCP() encoding if the console is using a raster font, or in
+        GetConsoleOutputCP() encoding if it is using a TrueType font.
+        But in GUI programs and for output sent to files and pipes, GetACP()
+        encoding is the best bet.  */
+      sprintf (buf, "CP%u", GetACP ());
+    }
+  codeset = buf;
+
+# elif defined OS2
+
+  const char *locale;
+  static char buf[2 + 10 + 1];
+  ULONG cp[3];
+  ULONG cplen;
+
+  codeset = NULL;
+
+  /* Allow user to override the codeset, as set in the operating system,
+     with standard language environment variables.  */
+  locale = getenv ("LC_ALL");
+  if (locale == NULL || locale[0] == '\0')
+    {
+      locale = getenv ("LC_CTYPE");
+      if (locale == NULL || locale[0] == '\0')
+        locale = getenv ("LANG");
+    }
+  if (locale != NULL && locale[0] != '\0')
+    {
+      /* If the locale name contains an encoding after the dot, return it.  */
+      const char *dot = strchr (locale, '.');
+
+      if (dot != NULL)
+        {
+          const char *modifier;
+
+          dot++;
+          /* Look for the possible @... trailer and remove it, if any.  */
+          modifier = strchr (dot, '@');
+          if (modifier == NULL)
+            return dot;
+          if (modifier - dot < sizeof (buf))
+            {
+              memcpy (buf, dot, modifier - dot);
+              buf [modifier - dot] = '\0';
+              return buf;
+            }
+        }
+
+      /* For the POSIX locale, don't use the system's codepage.  */
+      if (strcmp (locale, "C") == 0 || strcmp (locale, "POSIX") == 0)
+        codeset = "";
+    }
+
+  if (codeset == NULL)
+    {
+      /* OS/2 has a function returning the locale's codepage as a number.  */
+      if (DosQueryCp (sizeof (cp), cp, &cplen))
+        codeset = "";
+      else
+        {
+          sprintf (buf, "CP%u", cp[0]);
+          codeset = buf;
+        }
+    }
+
+# else
+
+#  error "Add code for other platforms here."
+
+# endif
+
+  /* Resolve alias.  */
+  {
+# ifdef alias_table_defined
+    /* On some platforms, UTF-8 locales are the most frequently used ones.
+       Speed up the common case and slow down the less common cases by
+       testing for this case first.  */
+#  if defined __OpenBSD__ || (defined __APPLE__ && defined __MACH__) || defined __sun || defined __CYGWIN__
+    if (strcmp (codeset, "UTF-8") == 0)
+      goto done_table_lookup;
+    else
+#  endif
+      {
+        const struct table_entry * const table = alias_table;
+        size_t const table_size =
+          sizeof (alias_table) / sizeof (struct table_entry);
+        /* The table is sorted.  Perform a binary search.  */
+        size_t hi = table_size;
+        size_t lo = 0;
+        while (lo < hi)
+          {
+            /* Invariant:
+               for i < lo, strcmp (table[i].alias, codeset) < 0,
+               for i >= hi, strcmp (table[i].alias, codeset) > 0.  */
+            size_t mid = (hi + lo) >> 1; /* >= lo, < hi */
+            int cmp = strcmp (table[mid].alias, codeset);
+            if (cmp < 0)
+              lo = mid + 1;
+            else if (cmp > 0)
+              hi = mid;
+            else
+              {
+                /* Found an i with
+                     strcmp (table[i].alias, codeset) == 0.  */
+                codeset = table[mid].canonical;
+                goto done_table_lookup;
+              }
+          }
+      }
+    if (0)
+      done_table_lookup: ;
+    else
+# endif
+      {
+        /* Did not find it in the table.  */
+        /* On Mac OS X, all modern locales use the UTF-8 encoding.
+           BeOS and Haiku have a single locale, and it has UTF-8 encoding.  */
+# if (defined __APPLE__ && defined __MACH__) || defined __BEOS__ || defined __HAIKU__
+        codeset = "UTF-8";
+# else
+        /* Don't return an empty string.  GNU libc and GNU libiconv interpret
+           the empty string as denoting "the locale's character encoding",
+           thus GNU libiconv would call this function a second time.  */
+        if (codeset[0] == '\0')
+          codeset = "ASCII";
+# endif
+      }
+  }
+
+#else
+
+  /* On old systems which lack it, use setlocale or getenv.  */
+  const char *locale = NULL;
+
+  /* But most old systems don't have a complete set of locales.  Some
+     (like DJGPP) have only the C locale.  Therefore we don't use setlocale
+     here; it would return "C" when it doesn't support the locale name the
+     user has set.  */
+# if 0
+  locale = setlocale (LC_CTYPE, NULL);
+# endif
+  if (locale == NULL || locale[0] == '\0')
+    {
+      locale = getenv ("LC_ALL");
+      if (locale == NULL || locale[0] == '\0')
+        {
+          locale = getenv ("LC_CTYPE");
+          if (locale == NULL || locale[0] == '\0')
+            locale = getenv ("LANG");
+            if (locale == NULL)
+              locale = "";
+        }
+    }
+
+  /* Map locale name to canonical encoding name.  */
+  {
+# ifdef locale_table_defined
+    const struct table_entry * const table = locale_table;
+    size_t const table_size =
+      sizeof (locale_table) / sizeof (struct table_entry);
+    /* The table is sorted.  Perform a binary search.  */
+    size_t hi = table_size;
+    size_t lo = 0;
+    while (lo < hi)
+      {
+        /* Invariant:
+           for i < lo, strcmp (table[i].locale, locale) < 0,
+           for i >= hi, strcmp (table[i].locale, locale) > 0.  */
+        size_t mid = (hi + lo) >> 1; /* >= lo, < hi */
+        int cmp = strcmp (table[mid].locale, locale);
+        if (cmp < 0)
+          lo = mid + 1;
+        else if (cmp > 0)
+          hi = mid;
+        else
+          {
+            /* Found an i with
+                 strcmp (table[i].locale, locale) == 0.  */
+            codeset = table[mid].canonical;
+            goto done_table_lookup;
+          }
+      }
+    if (0)
+      done_table_lookup: ;
+    else
+# endif
+      {
+        /* Did not find it in the table.  */
+        /* On Mac OS X, all modern locales use the UTF-8 encoding.
+           BeOS and Haiku have a single locale, and it has UTF-8 encoding.  */
+# if (defined __APPLE__ && defined __MACH__) || defined __BEOS__ || defined __HAIKU__
+        codeset = "UTF-8";
+# else
+        /* The canonical name cannot be determined.  */
+        /* Don't return an empty string.  GNU libc and GNU libiconv interpret
+           the empty string as denoting "the locale's character encoding",
+           thus GNU libiconv would call this function a second time.  */
+        codeset = "ASCII";
+# endif
+      }
+  }
+
+#endif
+
+#ifdef DARWIN7
+  /* Mac OS X sets MB_CUR_MAX to 1 when LC_ALL=C, and "UTF-8"
+     (the default codeset) does not work when MB_CUR_MAX is 1.  */
+  if (strcmp (codeset, "UTF-8") == 0 && MB_CUR_MAX_L (uselocale (NULL)) <= 1)
+    codeset = "ASCII";
+#endif
+
+  return codeset;
+}
diff --git a/lib/localcharset.h b/lib/localcharset.h
new file mode 100644 (file)
index 0000000..e4ba296
--- /dev/null
@@ -0,0 +1,134 @@
+/* Determine a canonical name for the current locale's character encoding.
+   Copyright (C) 2000-2003, 2009-2018 Free Software Foundation, Inc.
+   This file is part of the GNU CHARSET Library.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, 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 <https://www.gnu.org/licenses/>.  */
+
+#ifndef _LOCALCHARSET_H
+#define _LOCALCHARSET_H
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Determine the current locale's character encoding, and canonicalize it
+   into one of the canonical names listed below.
+   The result must not be freed; it is statically allocated.
+   If the canonical name cannot be determined, the result is a non-canonical
+   name.  */
+extern const char * locale_charset (void);
+
+/* About GNU canonical names for character encodings:
+
+   Every canonical name must be supported by GNU libiconv.  Support by GNU libc
+   is also desirable.
+
+   The name is case insensitive.  Usually an upper case MIME charset name is
+   preferred.
+
+   The current list of these GNU canonical names is:
+
+       name              MIME?             used by which systems
+                                    (darwin = Mac OS X, windows = native Windows)
+
+   ASCII, ANSI_X3.4-1968       glibc solaris freebsd netbsd darwin minix cygwin
+   ISO-8859-1              Y   glibc aix hpux irix osf solaris freebsd netbsd openbsd darwin cygwin
+   ISO-8859-2              Y   glibc aix hpux irix osf solaris freebsd netbsd openbsd darwin cygwin
+   ISO-8859-3              Y   glibc solaris cygwin
+   ISO-8859-4              Y   hpux osf solaris freebsd netbsd openbsd darwin
+   ISO-8859-5              Y   glibc aix hpux irix osf solaris freebsd netbsd openbsd darwin cygwin
+   ISO-8859-6              Y   glibc aix hpux solaris cygwin
+   ISO-8859-7              Y   glibc aix hpux irix osf solaris freebsd netbsd openbsd darwin cygwin
+   ISO-8859-8              Y   glibc aix hpux osf solaris cygwin
+   ISO-8859-9              Y   glibc aix hpux irix osf solaris freebsd darwin cygwin
+   ISO-8859-13                 glibc hpux solaris freebsd netbsd openbsd darwin cygwin
+   ISO-8859-14                 glibc cygwin
+   ISO-8859-15                 glibc aix irix osf solaris freebsd netbsd openbsd darwin cygwin
+   KOI8-R                  Y   glibc hpux solaris freebsd netbsd openbsd darwin
+   KOI8-U                  Y   glibc freebsd netbsd openbsd darwin cygwin
+   KOI8-T                      glibc
+   CP437                       dos
+   CP775                       dos
+   CP850                       aix osf dos
+   CP852                       dos
+   CP855                       dos
+   CP856                       aix
+   CP857                       dos
+   CP861                       dos
+   CP862                       dos
+   CP864                       dos
+   CP865                       dos
+   CP866                       freebsd netbsd openbsd darwin dos
+   CP869                       dos
+   CP874                       windows dos
+   CP922                       aix
+   CP932                       aix cygwin windows dos
+   CP943                       aix
+   CP949                       osf darwin windows dos
+   CP950                       windows dos
+   CP1046                      aix
+   CP1124                      aix
+   CP1125                      dos
+   CP1129                      aix
+   CP1131                      freebsd darwin
+   CP1250                      windows
+   CP1251                      glibc hpux solaris freebsd netbsd openbsd darwin cygwin windows
+   CP1252                      aix windows
+   CP1253                      windows
+   CP1254                      windows
+   CP1255                      glibc windows
+   CP1256                      windows
+   CP1257                      windows
+   GB2312                  Y   glibc aix hpux irix solaris freebsd netbsd darwin cygwin
+   EUC-JP                  Y   glibc aix hpux irix osf solaris freebsd netbsd darwin cygwin
+   EUC-KR                  Y   glibc aix hpux irix osf solaris freebsd netbsd darwin cygwin
+   EUC-TW                      glibc aix hpux irix osf solaris netbsd
+   BIG5                    Y   glibc aix hpux osf solaris freebsd netbsd darwin cygwin
+   BIG5-HKSCS                  glibc hpux solaris netbsd darwin
+   GBK                         glibc aix osf solaris freebsd darwin cygwin windows dos
+   GB18030                     glibc hpux solaris freebsd netbsd darwin
+   SHIFT_JIS               Y   hpux osf solaris freebsd netbsd darwin
+   JOHAB                       glibc solaris windows
+   TIS-620                     glibc aix hpux osf solaris cygwin
+   VISCII                  Y   glibc
+   TCVN5712-1                  glibc
+   ARMSCII-8                   glibc freebsd netbsd darwin
+   GEORGIAN-PS                 glibc cygwin
+   PT154                       glibc netbsd cygwin
+   HP-ROMAN8                   hpux
+   HP-ARABIC8                  hpux
+   HP-GREEK8                   hpux
+   HP-HEBREW8                  hpux
+   HP-TURKISH8                 hpux
+   HP-KANA8                    hpux
+   DEC-KANJI                   osf
+   DEC-HANYU                   osf
+   UTF-8                   Y   glibc aix hpux osf solaris netbsd darwin cygwin
+
+   Note: Names which are not marked as being a MIME name should not be used in
+   Internet protocols for information interchange (mail, news, etc.).
+
+   Note: ASCII and ANSI_X3.4-1968 are synonymous canonical names.  Applications
+   must understand both names and treat them as equivalent.
+ */
+
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* _LOCALCHARSET_H */
diff --git a/lib/math.c b/lib/math.c
new file mode 100644 (file)
index 0000000..ba2a6ab
--- /dev/null
@@ -0,0 +1,4 @@
+#include <config.h>
+#define _GL_MATH_INLINE _GL_EXTERN_INLINE
+#include "math.h"
+typedef int dummy;
diff --git a/lib/math.in.h b/lib/math.in.h
new file mode 100644 (file)
index 0000000..c30fc20
--- /dev/null
@@ -0,0 +1,2417 @@
+/* A GNU-like <math.h>.
+
+   Copyright (C) 2002-2003, 2007-2018 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 <https://www.gnu.org/licenses/>.  */
+
+#ifndef _@GUARD_PREFIX@_MATH_H
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+@PRAGMA_COLUMNS@
+
+/* The include_next requires a split double-inclusion guard.  */
+#@INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ @NEXT_AS_FIRST_DIRECTIVE_MATH_H@
+
+#ifndef _@GUARD_PREFIX@_MATH_H
+#define _@GUARD_PREFIX@_MATH_H
+
+/* On OpenVMS, NAN, INFINITY, and HUGEVAL macros are defined in <fp.h>.  */
+#if defined __VMS && ! defined NAN
+# include <fp.h>
+#endif
+
+#ifndef _GL_INLINE_HEADER_BEGIN
+ #error "Please include config.h first."
+#endif
+_GL_INLINE_HEADER_BEGIN
+#ifndef _GL_MATH_INLINE
+# define _GL_MATH_INLINE _GL_INLINE
+#endif
+
+/* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */
+
+/* The definition of _GL_ARG_NONNULL is copied here.  */
+
+/* The definition of _GL_WARN_ON_USE is copied here.  */
+
+#ifdef __cplusplus
+/* Helper macros to define type-generic function FUNC as overloaded functions,
+   rather than as macros like in C.  POSIX declares these with an argument of
+   real-floating (that is, one of float, double, or long double).  */
+# define _GL_MATH_CXX_REAL_FLOATING_DECL_1(func) \
+static inline int                                                   \
+_gl_cxx_ ## func ## f (float f)                                     \
+{                                                                   \
+  return func (f);                                                  \
+}                                                                   \
+static inline int                                                   \
+_gl_cxx_ ## func ## d (double d)                                    \
+{                                                                   \
+  return func (d);                                                  \
+}                                                                   \
+static inline int                                                   \
+_gl_cxx_ ## func ## l (long double l)                               \
+{                                                                   \
+  return func (l);                                                  \
+}
+# define _GL_MATH_CXX_REAL_FLOATING_DECL_2(func) \
+_GL_BEGIN_NAMESPACE                                                 \
+inline int                                                          \
+func (float f)                                                      \
+{                                                                   \
+  return _gl_cxx_ ## func ## f (f);                                 \
+}                                                                   \
+inline int                                                          \
+func (double d)                                                     \
+{                                                                   \
+  return _gl_cxx_ ## func ## d (d);                                 \
+}                                                                   \
+inline int                                                          \
+func (long double l)                                                \
+{                                                                   \
+  return _gl_cxx_ ## func ## l (l);                                 \
+}                                                                   \
+_GL_END_NAMESPACE
+#endif
+
+/* Helper macros to define a portability warning for the
+   classification macro FUNC called with VALUE.  POSIX declares the
+   classification macros with an argument of real-floating (that is,
+   one of float, double, or long double).  */
+#define _GL_WARN_REAL_FLOATING_DECL(func) \
+_GL_MATH_INLINE int                                                       \
+_GL_WARN_ON_USE_ATTRIBUTE (#func " is unportable - "                      \
+                           "use gnulib module " #func " for portability") \
+rpl_ ## func ## f (float f)                                               \
+{                                                                         \
+  return func (f);                                                        \
+}                                                                         \
+_GL_MATH_INLINE int                                                       \
+_GL_WARN_ON_USE_ATTRIBUTE (#func " is unportable - "                      \
+                           "use gnulib module " #func " for portability") \
+rpl_ ## func ## d (double d)                                              \
+{                                                                         \
+  return func (d);                                                        \
+}                                                                         \
+_GL_MATH_INLINE int                                                       \
+_GL_WARN_ON_USE_ATTRIBUTE (#func " is unportable - "                      \
+                           "use gnulib module " #func " for portability") \
+rpl_ ## func ## l (long double l)                                         \
+{                                                                         \
+  return func (l);                                                        \
+}
+#define _GL_WARN_REAL_FLOATING_IMPL(func, value) \
+  (sizeof (value) == sizeof (float) ? rpl_ ## func ## f (value)     \
+   : sizeof (value) == sizeof (double) ? rpl_ ## func ## d (value)  \
+   : rpl_ ## func ## l (value))
+
+
+#if @REPLACE_ITOLD@
+/* Pull in a function that fixes the 'int' to 'long double' conversion
+   of glibc 2.7.  */
+_GL_EXTERN_C void _Qp_itoq (long double *, int);
+static void (*_gl_math_fix_itold) (long double *, int) = _Qp_itoq;
+#endif
+
+
+/* POSIX allows platforms that don't support NAN.  But all major
+   machines in the past 15 years have supported something close to
+   IEEE NaN, so we define this unconditionally.  We also must define
+   it on platforms like Solaris 10, where NAN is present but defined
+   as a function pointer rather than a floating point constant.  */
+#if !defined NAN || @REPLACE_NAN@
+# if !GNULIB_defined_NAN
+#  undef NAN
+  /* The Compaq (ex-DEC) C 6.4 compiler and the Microsoft MSVC 9 compiler
+     choke on the expression 0.0 / 0.0.  */
+#  if defined __DECC || defined _MSC_VER
+_GL_MATH_INLINE float
+_NaN ()
+{
+  static float zero = 0.0f;
+  return zero / zero;
+}
+#   define NAN (_NaN())
+#  else
+#   define NAN (0.0f / 0.0f)
+#  endif
+#  define GNULIB_defined_NAN 1
+# endif
+#endif
+
+/* Solaris 10 defines HUGE_VAL, but as a function pointer rather
+   than a floating point constant.  */
+#if @REPLACE_HUGE_VAL@
+# undef HUGE_VALF
+# define HUGE_VALF (1.0f / 0.0f)
+# undef HUGE_VAL
+# define HUGE_VAL (1.0 / 0.0)
+# undef HUGE_VALL
+# define HUGE_VALL (1.0L / 0.0L)
+#endif
+
+/* HUGE_VALF is a 'float' Infinity.  */
+#ifndef HUGE_VALF
+# if defined _MSC_VER
+/* The Microsoft MSVC 9 compiler chokes on the expression 1.0f / 0.0f.  */
+#  define HUGE_VALF (1e25f * 1e25f)
+# else
+#  define HUGE_VALF (1.0f / 0.0f)
+# endif
+#endif
+
+/* HUGE_VAL is a 'double' Infinity.  */
+#ifndef HUGE_VAL
+# if defined _MSC_VER
+/* The Microsoft MSVC 9 compiler chokes on the expression 1.0 / 0.0.  */
+#  define HUGE_VAL (1e250 * 1e250)
+# else
+#  define HUGE_VAL (1.0 / 0.0)
+# endif
+#endif
+
+/* HUGE_VALL is a 'long double' Infinity.  */
+#ifndef HUGE_VALL
+# if defined _MSC_VER
+/* The Microsoft MSVC 9 compiler chokes on the expression 1.0L / 0.0L.  */
+#  define HUGE_VALL (1e250L * 1e250L)
+# else
+#  define HUGE_VALL (1.0L / 0.0L)
+# endif
+#endif
+
+
+#if defined FP_ILOGB0 && defined FP_ILOGBNAN
+ /* Ensure FP_ILOGB0 and FP_ILOGBNAN are correct.  */
+# if defined __HAIKU__
+  /* Haiku: match what ilogb() does */
+#  undef FP_ILOGB0
+#  undef FP_ILOGBNAN
+#  define FP_ILOGB0   (- 2147483647 - 1) /* INT_MIN */
+#  define FP_ILOGBNAN (- 2147483647 - 1) /* INT_MIN */
+# endif
+#else
+ /* Ensure FP_ILOGB0 and FP_ILOGBNAN are defined.  */
+# if defined __NetBSD__ || defined __sgi
+  /* NetBSD, IRIX 6.5: match what ilogb() does */
+#  define FP_ILOGB0   (- 2147483647 - 1) /* INT_MIN */
+#  define FP_ILOGBNAN (- 2147483647 - 1) /* INT_MIN */
+# elif defined _AIX
+  /* AIX 5.1: match what ilogb() does in AIX >= 5.2 */
+#  define FP_ILOGB0   (- 2147483647 - 1) /* INT_MIN */
+#  define FP_ILOGBNAN 2147483647 /* INT_MAX */
+# elif defined __sun
+  /* Solaris 9: match what ilogb() does */
+#  define FP_ILOGB0   (- 2147483647) /* - INT_MAX */
+#  define FP_ILOGBNAN 2147483647 /* INT_MAX */
+# else
+  /* Gnulib defined values.  */
+#  define FP_ILOGB0   (- 2147483647) /* - INT_MAX */
+#  define FP_ILOGBNAN (- 2147483647 - 1) /* INT_MIN */
+# endif
+#endif
+
+
+#if @GNULIB_ACOSF@
+# if @REPLACE_ACOSF@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef acosf
+#   define acosf rpl_acosf
+#  endif
+_GL_FUNCDECL_RPL (acosf, float, (float x));
+_GL_CXXALIAS_RPL (acosf, float, (float x));
+# else
+#  if !@HAVE_ACOSF@
+#   undef acosf
+_GL_FUNCDECL_SYS (acosf, float, (float x));
+#  endif
+_GL_CXXALIAS_SYS (acosf, float, (float x));
+# endif
+_GL_CXXALIASWARN (acosf);
+#elif defined GNULIB_POSIXCHECK
+# undef acosf
+# if HAVE_RAW_DECL_ACOSF
+_GL_WARN_ON_USE (acosf, "acosf is unportable - "
+                 "use gnulib module acosf for portability");
+# endif
+#endif
+
+#if @GNULIB_ACOSL@
+# if !@HAVE_ACOSL@ || !@HAVE_DECL_ACOSL@
+#  undef acosl
+_GL_FUNCDECL_SYS (acosl, long double, (long double x));
+# endif
+_GL_CXXALIAS_SYS (acosl, long double, (long double x));
+_GL_CXXALIASWARN (acosl);
+#elif defined GNULIB_POSIXCHECK
+# undef acosl
+# if HAVE_RAW_DECL_ACOSL
+_GL_WARN_ON_USE (acosl, "acosl is unportable - "
+                 "use gnulib module acosl for portability");
+# endif
+#endif
+
+
+#if @GNULIB_ASINF@
+# if @REPLACE_ASINF@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef asinf
+#   define asinf rpl_asinf
+#  endif
+_GL_FUNCDECL_RPL (asinf, float, (float x));
+_GL_CXXALIAS_RPL (asinf, float, (float x));
+# else
+#  if !@HAVE_ASINF@
+#   undef asinf
+_GL_FUNCDECL_SYS (asinf, float, (float x));
+#  endif
+_GL_CXXALIAS_SYS (asinf, float, (float x));
+# endif
+_GL_CXXALIASWARN (asinf);
+#elif defined GNULIB_POSIXCHECK
+# undef asinf
+# if HAVE_RAW_DECL_ASINF
+_GL_WARN_ON_USE (asinf, "asinf is unportable - "
+                 "use gnulib module asinf for portability");
+# endif
+#endif
+
+#if @GNULIB_ASINL@
+# if !@HAVE_ASINL@ || !@HAVE_DECL_ASINL@
+#  undef asinl
+_GL_FUNCDECL_SYS (asinl, long double, (long double x));
+# endif
+_GL_CXXALIAS_SYS (asinl, long double, (long double x));
+_GL_CXXALIASWARN (asinl);
+#elif defined GNULIB_POSIXCHECK
+# undef asinl
+# if HAVE_RAW_DECL_ASINL
+_GL_WARN_ON_USE (asinl, "asinl is unportable - "
+                 "use gnulib module asinl for portability");
+# endif
+#endif
+
+
+#if @GNULIB_ATANF@
+# if @REPLACE_ATANF@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef atanf
+#   define atanf rpl_atanf
+#  endif
+_GL_FUNCDECL_RPL (atanf, float, (float x));
+_GL_CXXALIAS_RPL (atanf, float, (float x));
+# else
+#  if !@HAVE_ATANF@
+#   undef atanf
+_GL_FUNCDECL_SYS (atanf, float, (float x));
+#  endif
+_GL_CXXALIAS_SYS (atanf, float, (float x));
+# endif
+_GL_CXXALIASWARN (atanf);
+#elif defined GNULIB_POSIXCHECK
+# undef atanf
+# if HAVE_RAW_DECL_ATANF
+_GL_WARN_ON_USE (atanf, "atanf is unportable - "
+                 "use gnulib module atanf for portability");
+# endif
+#endif
+
+#if @GNULIB_ATANL@
+# if !@HAVE_ATANL@ || !@HAVE_DECL_ATANL@
+#  undef atanl
+_GL_FUNCDECL_SYS (atanl, long double, (long double x));
+# endif
+_GL_CXXALIAS_SYS (atanl, long double, (long double x));
+_GL_CXXALIASWARN (atanl);
+#elif defined GNULIB_POSIXCHECK
+# undef atanl
+# if HAVE_RAW_DECL_ATANL
+_GL_WARN_ON_USE (atanl, "atanl is unportable - "
+                 "use gnulib module atanl for portability");
+# endif
+#endif
+
+
+#if @GNULIB_ATAN2F@
+# if @REPLACE_ATAN2F@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef atan2f
+#   define atan2f rpl_atan2f
+#  endif
+_GL_FUNCDECL_RPL (atan2f, float, (float y, float x));
+_GL_CXXALIAS_RPL (atan2f, float, (float y, float x));
+# else
+#  if !@HAVE_ATAN2F@
+#   undef atan2f
+_GL_FUNCDECL_SYS (atan2f, float, (float y, float x));
+#  endif
+_GL_CXXALIAS_SYS (atan2f, float, (float y, float x));
+# endif
+_GL_CXXALIASWARN (atan2f);
+#elif defined GNULIB_POSIXCHECK
+# undef atan2f
+# if HAVE_RAW_DECL_ATAN2F
+_GL_WARN_ON_USE (atan2f, "atan2f is unportable - "
+                 "use gnulib module atan2f for portability");
+# endif
+#endif
+
+
+#if @GNULIB_CBRTF@
+# if @REPLACE_CBRTF@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef cbrtf
+#   define cbrtf rpl_cbrtf
+#  endif
+_GL_FUNCDECL_RPL (cbrtf, float, (float x));
+_GL_CXXALIAS_RPL (cbrtf, float, (float x));
+# else
+#  if !@HAVE_DECL_CBRTF@
+_GL_FUNCDECL_SYS (cbrtf, float, (float x));
+#  endif
+_GL_CXXALIAS_SYS (cbrtf, float, (float x));
+# endif
+_GL_CXXALIASWARN (cbrtf);
+#elif defined GNULIB_POSIXCHECK
+# undef cbrtf
+# if HAVE_RAW_DECL_CBRTF
+_GL_WARN_ON_USE (cbrtf, "cbrtf is unportable - "
+                 "use gnulib module cbrtf for portability");
+# endif
+#endif
+
+#if @GNULIB_CBRT@
+# if !@HAVE_CBRT@
+_GL_FUNCDECL_SYS (cbrt, double, (double x));
+# endif
+_GL_CXXALIAS_SYS (cbrt, double, (double x));
+_GL_CXXALIASWARN (cbrt);
+#elif defined GNULIB_POSIXCHECK
+# undef cbrt
+# if HAVE_RAW_DECL_CBRT
+_GL_WARN_ON_USE (cbrt, "cbrt is unportable - "
+                 "use gnulib module cbrt for portability");
+# endif
+#endif
+
+#if @GNULIB_CBRTL@
+# if @REPLACE_CBRTL@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef cbrtl
+#   define cbrtl rpl_cbrtl
+#  endif
+_GL_FUNCDECL_RPL (cbrtl, long double, (long double x));
+_GL_CXXALIAS_RPL (cbrtl, long double, (long double x));
+# else
+#  if !@HAVE_DECL_CBRTL@
+_GL_FUNCDECL_SYS (cbrtl, long double, (long double x));
+#  endif
+_GL_CXXALIAS_SYS (cbrtl, long double, (long double x));
+# endif
+_GL_CXXALIASWARN (cbrtl);
+#elif defined GNULIB_POSIXCHECK
+# undef cbrtl
+# if HAVE_RAW_DECL_CBRTL
+_GL_WARN_ON_USE (cbrtl, "cbrtl is unportable - "
+                 "use gnulib module cbrtl for portability");
+# endif
+#endif
+
+
+#if @GNULIB_CEILF@
+# if @REPLACE_CEILF@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef ceilf
+#   define ceilf rpl_ceilf
+#  endif
+_GL_FUNCDECL_RPL (ceilf, float, (float x));
+_GL_CXXALIAS_RPL (ceilf, float, (float x));
+# else
+#  if !@HAVE_DECL_CEILF@
+#   undef ceilf
+_GL_FUNCDECL_SYS (ceilf, float, (float x));
+#  endif
+_GL_CXXALIAS_SYS (ceilf, float, (float x));
+# endif
+_GL_CXXALIASWARN (ceilf);
+#elif defined GNULIB_POSIXCHECK
+# undef ceilf
+# if HAVE_RAW_DECL_CEILF
+_GL_WARN_ON_USE (ceilf, "ceilf is unportable - "
+                 "use gnulib module ceilf for portability");
+# endif
+#endif
+
+#if @GNULIB_CEIL@
+# if @REPLACE_CEIL@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef ceil
+#   define ceil rpl_ceil
+#  endif
+_GL_FUNCDECL_RPL (ceil, double, (double x));
+_GL_CXXALIAS_RPL (ceil, double, (double x));
+# else
+_GL_CXXALIAS_SYS (ceil, double, (double x));
+# endif
+_GL_CXXALIASWARN (ceil);
+#endif
+
+#if @GNULIB_CEILL@
+# if @REPLACE_CEILL@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef ceill
+#   define ceill rpl_ceill
+#  endif
+_GL_FUNCDECL_RPL (ceill, long double, (long double x));
+_GL_CXXALIAS_RPL (ceill, long double, (long double x));
+# else
+#  if !@HAVE_DECL_CEILL@
+#   undef ceill
+_GL_FUNCDECL_SYS (ceill, long double, (long double x));
+#  endif
+_GL_CXXALIAS_SYS (ceill, long double, (long double x));
+# endif
+_GL_CXXALIASWARN (ceill);
+#elif defined GNULIB_POSIXCHECK
+# undef ceill
+# if HAVE_RAW_DECL_CEILL
+_GL_WARN_ON_USE (ceill, "ceill is unportable - "
+                 "use gnulib module ceill for portability");
+# endif
+#endif
+
+
+#if @GNULIB_COPYSIGNF@
+# if !@HAVE_DECL_COPYSIGNF@
+_GL_FUNCDECL_SYS (copysignf, float, (float x, float y));
+# endif
+_GL_CXXALIAS_SYS (copysignf, float, (float x, float y));
+_GL_CXXALIASWARN (copysignf);
+#elif defined GNULIB_POSIXCHECK
+# undef copysignf
+# if HAVE_RAW_DECL_COPYSIGNF
+_GL_WARN_ON_USE (copysignf, "copysignf is unportable - "
+                 "use gnulib module copysignf for portability");
+# endif
+#endif
+
+#if @GNULIB_COPYSIGN@
+# if !@HAVE_COPYSIGN@
+_GL_FUNCDECL_SYS (copysign, double, (double x, double y));
+# endif
+_GL_CXXALIAS_SYS (copysign, double, (double x, double y));
+_GL_CXXALIASWARN (copysign);
+#elif defined GNULIB_POSIXCHECK
+# undef copysign
+# if HAVE_RAW_DECL_COPYSIGN
+_GL_WARN_ON_USE (copysign, "copysign is unportable - "
+                 "use gnulib module copysign for portability");
+# endif
+#endif
+
+#if @GNULIB_COPYSIGNL@
+# if !@HAVE_COPYSIGNL@
+_GL_FUNCDECL_SYS (copysignl, long double, (long double x, long double y));
+# endif
+_GL_CXXALIAS_SYS (copysignl, long double, (long double x, long double y));
+_GL_CXXALIASWARN (copysignl);
+#elif defined GNULIB_POSIXCHECK
+# undef copysignl
+# if HAVE_RAW_DECL_COPYSIGNL
+_GL_WARN_ON_USE (copysign, "copysignl is unportable - "
+                 "use gnulib module copysignl for portability");
+# endif
+#endif
+
+
+#if @GNULIB_COSF@
+# if @REPLACE_COSF@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef cosf
+#   define cosf rpl_cosf
+#  endif
+_GL_FUNCDECL_RPL (cosf, float, (float x));
+_GL_CXXALIAS_RPL (cosf, float, (float x));
+# else
+#  if !@HAVE_COSF@
+#   undef cosf
+_GL_FUNCDECL_SYS (cosf, float, (float x));
+#  endif
+_GL_CXXALIAS_SYS (cosf, float, (float x));
+# endif
+_GL_CXXALIASWARN (cosf);
+#elif defined GNULIB_POSIXCHECK
+# undef cosf
+# if HAVE_RAW_DECL_COSF
+_GL_WARN_ON_USE (cosf, "cosf is unportable - "
+                 "use gnulib module cosf for portability");
+# endif
+#endif
+
+#if @GNULIB_COSL@
+# if !@HAVE_COSL@ || !@HAVE_DECL_COSL@
+#  undef cosl
+_GL_FUNCDECL_SYS (cosl, long double, (long double x));
+# endif
+_GL_CXXALIAS_SYS (cosl, long double, (long double x));
+_GL_CXXALIASWARN (cosl);
+#elif defined GNULIB_POSIXCHECK
+# undef cosl
+# if HAVE_RAW_DECL_COSL
+_GL_WARN_ON_USE (cosl, "cosl is unportable - "
+                 "use gnulib module cosl for portability");
+# endif
+#endif
+
+
+#if @GNULIB_COSHF@
+# if @REPLACE_COSHF@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef coshf
+#   define coshf rpl_coshf
+#  endif
+_GL_FUNCDECL_RPL (coshf, float, (float x));
+_GL_CXXALIAS_RPL (coshf, float, (float x));
+# else
+#  if !@HAVE_COSHF@
+#   undef coshf
+_GL_FUNCDECL_SYS (coshf, float, (float x));
+#  endif
+_GL_CXXALIAS_SYS (coshf, float, (float x));
+# endif
+_GL_CXXALIASWARN (coshf);
+#elif defined GNULIB_POSIXCHECK
+# undef coshf
+# if HAVE_RAW_DECL_COSHF
+_GL_WARN_ON_USE (coshf, "coshf is unportable - "
+                 "use gnulib module coshf for portability");
+# endif
+#endif
+
+
+#if @GNULIB_EXPF@
+# if @REPLACE_EXPF@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef expf
+#   define expf rpl_expf
+#  endif
+_GL_FUNCDECL_RPL (expf, float, (float x));
+_GL_CXXALIAS_RPL (expf, float, (float x));
+# else
+#  if !@HAVE_EXPF@
+#   undef expf
+_GL_FUNCDECL_SYS (expf, float, (float x));
+#  endif
+_GL_CXXALIAS_SYS (expf, float, (float x));
+# endif
+_GL_CXXALIASWARN (expf);
+#elif defined GNULIB_POSIXCHECK
+# undef expf
+# if HAVE_RAW_DECL_EXPF
+_GL_WARN_ON_USE (expf, "expf is unportable - "
+                 "use gnulib module expf for portability");
+# endif
+#endif
+
+#if @GNULIB_EXPL@
+# if !@HAVE_EXPL@ || !@HAVE_DECL_EXPL@
+#  undef expl
+_GL_FUNCDECL_SYS (expl, long double, (long double x));
+# endif
+_GL_CXXALIAS_SYS (expl, long double, (long double x));
+_GL_CXXALIASWARN (expl);
+#elif defined GNULIB_POSIXCHECK
+# undef expl
+# if HAVE_RAW_DECL_EXPL
+_GL_WARN_ON_USE (expl, "expl is unportable - "
+                 "use gnulib module expl for portability");
+# endif
+#endif
+
+
+#if @GNULIB_EXP2F@
+# if !@HAVE_DECL_EXP2F@
+_GL_FUNCDECL_SYS (exp2f, float, (float x));
+# endif
+_GL_CXXALIAS_SYS (exp2f, float, (float x));
+_GL_CXXALIASWARN (exp2f);
+#elif defined GNULIB_POSIXCHECK
+# undef exp2f
+# if HAVE_RAW_DECL_EXP2F
+_GL_WARN_ON_USE (exp2f, "exp2f is unportable - "
+                 "use gnulib module exp2f for portability");
+# endif
+#endif
+
+#if @GNULIB_EXP2@
+# if @REPLACE_EXP2@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef exp2
+#   define exp2 rpl_exp2
+#  endif
+_GL_FUNCDECL_RPL (exp2, double, (double x));
+_GL_CXXALIAS_RPL (exp2, double, (double x));
+# else
+#  if !@HAVE_DECL_EXP2@
+_GL_FUNCDECL_SYS (exp2, double, (double x));
+#  endif
+_GL_CXXALIAS_SYS (exp2, double, (double x));
+# endif
+_GL_CXXALIASWARN (exp2);
+#elif defined GNULIB_POSIXCHECK
+# undef exp2
+# if HAVE_RAW_DECL_EXP2
+_GL_WARN_ON_USE (exp2, "exp2 is unportable - "
+                 "use gnulib module exp2 for portability");
+# endif
+#endif
+
+#if @GNULIB_EXP2L@
+# if @REPLACE_EXP2L@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef exp2l
+#   define exp2l rpl_exp2l
+#  endif
+_GL_FUNCDECL_RPL (exp2l, long double, (long double x));
+_GL_CXXALIAS_RPL (exp2l, long double, (long double x));
+# else
+#  if !@HAVE_DECL_EXP2L@
+#   undef exp2l
+_GL_FUNCDECL_SYS (exp2l, long double, (long double x));
+#  endif
+_GL_CXXALIAS_SYS (exp2l, long double, (long double x));
+# endif
+_GL_CXXALIASWARN (exp2l);
+#elif defined GNULIB_POSIXCHECK
+# undef exp2l
+# if HAVE_RAW_DECL_EXP2L
+_GL_WARN_ON_USE (exp2l, "exp2l is unportable - "
+                 "use gnulib module exp2l for portability");
+# endif
+#endif
+
+
+#if @GNULIB_EXPM1F@
+# if @REPLACE_EXPM1F@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef expm1f
+#   define expm1f rpl_expm1f
+#  endif
+_GL_FUNCDECL_RPL (expm1f, float, (float x));
+_GL_CXXALIAS_RPL (expm1f, float, (float x));
+# else
+#  if !@HAVE_EXPM1F@
+_GL_FUNCDECL_SYS (expm1f, float, (float x));
+#  endif
+_GL_CXXALIAS_SYS (expm1f, float, (float x));
+# endif
+_GL_CXXALIASWARN (expm1f);
+#elif defined GNULIB_POSIXCHECK
+# undef expm1f
+# if HAVE_RAW_DECL_EXPM1F
+_GL_WARN_ON_USE (expm1f, "expm1f is unportable - "
+                 "use gnulib module expm1f for portability");
+# endif
+#endif
+
+#if @GNULIB_EXPM1@
+# if @REPLACE_EXPM1@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef expm1
+#   define expm1 rpl_expm1
+#  endif
+_GL_FUNCDECL_RPL (expm1, double, (double x));
+_GL_CXXALIAS_RPL (expm1, double, (double x));
+# else
+#  if !@HAVE_EXPM1@
+_GL_FUNCDECL_SYS (expm1, double, (double x));
+#  endif
+_GL_CXXALIAS_SYS (expm1, double, (double x));
+# endif
+_GL_CXXALIASWARN (expm1);
+#elif defined GNULIB_POSIXCHECK
+# undef expm1
+# if HAVE_RAW_DECL_EXPM1
+_GL_WARN_ON_USE (expm1, "expm1 is unportable - "
+                 "use gnulib module expm1 for portability");
+# endif
+#endif
+
+#if @GNULIB_EXPM1L@
+# if !@HAVE_DECL_EXPM1L@
+#  undef expm1l
+_GL_FUNCDECL_SYS (expm1l, long double, (long double x));
+# endif
+_GL_CXXALIAS_SYS (expm1l, long double, (long double x));
+_GL_CXXALIASWARN (expm1l);
+#elif defined GNULIB_POSIXCHECK
+# undef expm1l
+# if HAVE_RAW_DECL_EXPM1L
+_GL_WARN_ON_USE (expm1l, "expm1l is unportable - "
+                 "use gnulib module expm1l for portability");
+# endif
+#endif
+
+
+#if @GNULIB_FABSF@
+# if !@HAVE_FABSF@
+#  undef fabsf
+_GL_FUNCDECL_SYS (fabsf, float, (float x));
+# endif
+_GL_CXXALIAS_SYS (fabsf, float, (float x));
+_GL_CXXALIASWARN (fabsf);
+#elif defined GNULIB_POSIXCHECK
+# undef fabsf
+# if HAVE_RAW_DECL_FABSF
+_GL_WARN_ON_USE (fabsf, "fabsf is unportable - "
+                 "use gnulib module fabsf for portability");
+# endif
+#endif
+
+#if @GNULIB_FABSL@
+# if @REPLACE_FABSL@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef fabsl
+#   define fabsl rpl_fabsl
+#  endif
+_GL_FUNCDECL_RPL (fabsl, long double, (long double x));
+_GL_CXXALIAS_RPL (fabsl, long double, (long double x));
+# else
+#  if !@HAVE_FABSL@
+#   undef fabsl
+_GL_FUNCDECL_SYS (fabsl, long double, (long double x));
+#  endif
+_GL_CXXALIAS_SYS (fabsl, long double, (long double x));
+# endif
+_GL_CXXALIASWARN (fabsl);
+#elif defined GNULIB_POSIXCHECK
+# undef fabsl
+# if HAVE_RAW_DECL_FABSL
+_GL_WARN_ON_USE (fabsl, "fabsl is unportable - "
+                 "use gnulib module fabsl for portability");
+# endif
+#endif
+
+
+#if @GNULIB_FLOORF@
+# if @REPLACE_FLOORF@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef floorf
+#   define floorf rpl_floorf
+#  endif
+_GL_FUNCDECL_RPL (floorf, float, (float x));
+_GL_CXXALIAS_RPL (floorf, float, (float x));
+# else
+#  if !@HAVE_DECL_FLOORF@
+#   undef floorf
+_GL_FUNCDECL_SYS (floorf, float, (float x));
+#  endif
+_GL_CXXALIAS_SYS (floorf, float, (float x));
+# endif
+_GL_CXXALIASWARN (floorf);
+#elif defined GNULIB_POSIXCHECK
+# undef floorf
+# if HAVE_RAW_DECL_FLOORF
+_GL_WARN_ON_USE (floorf, "floorf is unportable - "
+                 "use gnulib module floorf for portability");
+# endif
+#endif
+
+#if @GNULIB_FLOOR@
+# if @REPLACE_FLOOR@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef floor
+#   define floor rpl_floor
+#  endif
+_GL_FUNCDECL_RPL (floor, double, (double x));
+_GL_CXXALIAS_RPL (floor, double, (double x));
+# else
+_GL_CXXALIAS_SYS (floor, double, (double x));
+# endif
+_GL_CXXALIASWARN (floor);
+#endif
+
+#if @GNULIB_FLOORL@
+# if @REPLACE_FLOORL@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef floorl
+#   define floorl rpl_floorl
+#  endif
+_GL_FUNCDECL_RPL (floorl, long double, (long double x));
+_GL_CXXALIAS_RPL (floorl, long double, (long double x));
+# else
+#  if !@HAVE_DECL_FLOORL@
+#   undef floorl
+_GL_FUNCDECL_SYS (floorl, long double, (long double x));
+#  endif
+_GL_CXXALIAS_SYS (floorl, long double, (long double x));
+# endif
+_GL_CXXALIASWARN (floorl);
+#elif defined GNULIB_POSIXCHECK
+# undef floorl
+# if HAVE_RAW_DECL_FLOORL
+_GL_WARN_ON_USE (floorl, "floorl is unportable - "
+                 "use gnulib module floorl for portability");
+# endif
+#endif
+
+
+#if @GNULIB_FMAF@
+# if @REPLACE_FMAF@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef fmaf
+#   define fmaf rpl_fmaf
+#  endif
+_GL_FUNCDECL_RPL (fmaf, float, (float x, float y, float z));
+_GL_CXXALIAS_RPL (fmaf, float, (float x, float y, float z));
+# else
+#  if !@HAVE_FMAF@
+_GL_FUNCDECL_SYS (fmaf, float, (float x, float y, float z));
+#  endif
+_GL_CXXALIAS_SYS (fmaf, float, (float x, float y, float z));
+# endif
+_GL_CXXALIASWARN (fmaf);
+#elif defined GNULIB_POSIXCHECK
+# undef fmaf
+# if HAVE_RAW_DECL_FMAF
+_GL_WARN_ON_USE (fmaf, "fmaf is unportable - "
+                 "use gnulib module fmaf for portability");
+# endif
+#endif
+
+#if @GNULIB_FMA@
+# if @REPLACE_FMA@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef fma
+#   define fma rpl_fma
+#  endif
+_GL_FUNCDECL_RPL (fma, double, (double x, double y, double z));
+_GL_CXXALIAS_RPL (fma, double, (double x, double y, double z));
+# else
+#  if !@HAVE_FMA@
+_GL_FUNCDECL_SYS (fma, double, (double x, double y, double z));
+#  endif
+_GL_CXXALIAS_SYS (fma, double, (double x, double y, double z));
+# endif
+_GL_CXXALIASWARN (fma);
+#elif defined GNULIB_POSIXCHECK
+# undef fma
+# if HAVE_RAW_DECL_FMA
+_GL_WARN_ON_USE (fma, "fma is unportable - "
+                 "use gnulib module fma for portability");
+# endif
+#endif
+
+#if @GNULIB_FMAL@
+# if @REPLACE_FMAL@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef fmal
+#   define fmal rpl_fmal
+#  endif
+_GL_FUNCDECL_RPL (fmal, long double,
+                  (long double x, long double y, long double z));
+_GL_CXXALIAS_RPL (fmal, long double,
+                  (long double x, long double y, long double z));
+# else
+#  if !@HAVE_FMAL@
+#   undef fmal
+_GL_FUNCDECL_SYS (fmal, long double,
+                  (long double x, long double y, long double z));
+#  endif
+_GL_CXXALIAS_SYS (fmal, long double,
+                  (long double x, long double y, long double z));
+# endif
+_GL_CXXALIASWARN (fmal);
+#elif defined GNULIB_POSIXCHECK
+# undef fmal
+# if HAVE_RAW_DECL_FMAL
+_GL_WARN_ON_USE (fmal, "fmal is unportable - "
+                 "use gnulib module fmal for portability");
+# endif
+#endif
+
+
+#if @GNULIB_FMODF@
+# if @REPLACE_FMODF@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef fmodf
+#   define fmodf rpl_fmodf
+#  endif
+_GL_FUNCDECL_RPL (fmodf, float, (float x, float y));
+_GL_CXXALIAS_RPL (fmodf, float, (float x, float y));
+# else
+#  if !@HAVE_FMODF@
+#   undef fmodf
+_GL_FUNCDECL_SYS (fmodf, float, (float x, float y));
+#  endif
+_GL_CXXALIAS_SYS (fmodf, float, (float x, float y));
+# endif
+_GL_CXXALIASWARN (fmodf);
+#elif defined GNULIB_POSIXCHECK
+# undef fmodf
+# if HAVE_RAW_DECL_FMODF
+_GL_WARN_ON_USE (fmodf, "fmodf is unportable - "
+                 "use gnulib module fmodf for portability");
+# endif
+#endif
+
+#if @GNULIB_FMOD@
+# if @REPLACE_FMOD@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef fmod
+#   define fmod rpl_fmod
+#  endif
+_GL_FUNCDECL_RPL (fmod, double, (double x, double y));
+_GL_CXXALIAS_RPL (fmod, double, (double x, double y));
+# else
+_GL_CXXALIAS_SYS (fmod, double, (double x, double y));
+# endif
+_GL_CXXALIASWARN (fmod);
+#elif defined GNULIB_POSIXCHECK
+# undef fmod
+# if HAVE_RAW_DECL_FMOD
+_GL_WARN_ON_USE (fmod, "fmod has portability problems - "
+                 "use gnulib module fmod for portability");
+# endif
+#endif
+
+#if @GNULIB_FMODL@
+# if @REPLACE_FMODL@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef fmodl
+#   define fmodl rpl_fmodl
+#  endif
+_GL_FUNCDECL_RPL (fmodl, long double, (long double x, long double y));
+_GL_CXXALIAS_RPL (fmodl, long double, (long double x, long double y));
+# else
+#  if !@HAVE_FMODL@
+#   undef fmodl
+_GL_FUNCDECL_SYS (fmodl, long double, (long double x, long double y));
+#  endif
+_GL_CXXALIAS_SYS (fmodl, long double, (long double x, long double y));
+# endif
+_GL_CXXALIASWARN (fmodl);
+#elif defined GNULIB_POSIXCHECK
+# undef fmodl
+# if HAVE_RAW_DECL_FMODL
+_GL_WARN_ON_USE (fmodl, "fmodl is unportable - "
+                 "use gnulib module fmodl for portability");
+# endif
+#endif
+
+
+/* Write x as
+     x = mantissa * 2^exp
+   where
+     If x finite and nonzero: 0.5 <= |mantissa| < 1.0.
+     If x is zero: mantissa = x, exp = 0.
+     If x is infinite or NaN: mantissa = x, exp unspecified.
+   Store exp in *EXPPTR and return mantissa.  */
+#if @GNULIB_FREXPF@
+# if @REPLACE_FREXPF@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef frexpf
+#   define frexpf rpl_frexpf
+#  endif
+_GL_FUNCDECL_RPL (frexpf, float, (float x, int *expptr) _GL_ARG_NONNULL ((2)));
+_GL_CXXALIAS_RPL (frexpf, float, (float x, int *expptr));
+# else
+#  if !@HAVE_FREXPF@
+#   undef frexpf
+_GL_FUNCDECL_SYS (frexpf, float, (float x, int *expptr) _GL_ARG_NONNULL ((2)));
+#  endif
+_GL_CXXALIAS_SYS (frexpf, float, (float x, int *expptr));
+# endif
+_GL_CXXALIASWARN (frexpf);
+#elif defined GNULIB_POSIXCHECK
+# undef frexpf
+# if HAVE_RAW_DECL_FREXPF
+_GL_WARN_ON_USE (frexpf, "frexpf is unportable - "
+                 "use gnulib module frexpf for portability");
+# endif
+#endif
+
+/* Write x as
+     x = mantissa * 2^exp
+   where
+     If x finite and nonzero: 0.5 <= |mantissa| < 1.0.
+     If x is zero: mantissa = x, exp = 0.
+     If x is infinite or NaN: mantissa = x, exp unspecified.
+   Store exp in *EXPPTR and return mantissa.  */
+#if @GNULIB_FREXP@
+# if @REPLACE_FREXP@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef frexp
+#   define frexp rpl_frexp
+#  endif
+_GL_FUNCDECL_RPL (frexp, double, (double x, int *expptr) _GL_ARG_NONNULL ((2)));
+_GL_CXXALIAS_RPL (frexp, double, (double x, int *expptr));
+# else
+_GL_CXXALIAS_SYS (frexp, double, (double x, int *expptr));
+# endif
+_GL_CXXALIASWARN1 (frexp, double, (double x, int *expptr));
+#elif defined GNULIB_POSIXCHECK
+# undef frexp
+/* Assume frexp is always declared.  */
+_GL_WARN_ON_USE (frexp, "frexp is unportable - "
+                 "use gnulib module frexp for portability");
+#endif
+
+/* Write x as
+     x = mantissa * 2^exp
+   where
+     If x finite and nonzero: 0.5 <= |mantissa| < 1.0.
+     If x is zero: mantissa = x, exp = 0.
+     If x is infinite or NaN: mantissa = x, exp unspecified.
+   Store exp in *EXPPTR and return mantissa.  */
+#if @GNULIB_FREXPL@ && @REPLACE_FREXPL@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#  undef frexpl
+#  define frexpl rpl_frexpl
+# endif
+_GL_FUNCDECL_RPL (frexpl, long double,
+                  (long double x, int *expptr) _GL_ARG_NONNULL ((2)));
+_GL_CXXALIAS_RPL (frexpl, long double, (long double x, int *expptr));
+#else
+# if !@HAVE_DECL_FREXPL@
+_GL_FUNCDECL_SYS (frexpl, long double,
+                  (long double x, int *expptr) _GL_ARG_NONNULL ((2)));
+# endif
+# if @GNULIB_FREXPL@
+_GL_CXXALIAS_SYS (frexpl, long double, (long double x, int *expptr));
+# endif
+#endif
+#if @GNULIB_FREXPL@ && !(@REPLACE_FREXPL@ && !@HAVE_DECL_FREXPL@)
+_GL_CXXALIASWARN (frexpl);
+#endif
+#if !@GNULIB_FREXPL@ && defined GNULIB_POSIXCHECK
+# undef frexpl
+# if HAVE_RAW_DECL_FREXPL
+_GL_WARN_ON_USE (frexpl, "frexpl is unportable - "
+                 "use gnulib module frexpl for portability");
+# endif
+#endif
+
+
+/* Return sqrt(x^2+y^2).  */
+#if @GNULIB_HYPOTF@
+# if @REPLACE_HYPOTF@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef hypotf
+#   define hypotf rpl_hypotf
+#  endif
+_GL_FUNCDECL_RPL (hypotf, float, (float x, float y));
+_GL_CXXALIAS_RPL (hypotf, float, (float x, float y));
+# else
+#  if !@HAVE_HYPOTF@
+_GL_FUNCDECL_SYS (hypotf, float, (float x, float y));
+#  endif
+_GL_CXXALIAS_SYS (hypotf, float, (float x, float y));
+# endif
+_GL_CXXALIASWARN (hypotf);
+#elif defined GNULIB_POSIXCHECK
+# undef hypotf
+# if HAVE_RAW_DECL_HYPOTF
+_GL_WARN_ON_USE (hypotf, "hypotf is unportable - "
+                 "use gnulib module hypotf for portability");
+# endif
+#endif
+
+/* Return sqrt(x^2+y^2).  */
+#if @GNULIB_HYPOT@
+# if @REPLACE_HYPOT@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef hypot
+#   define hypot rpl_hypot
+#  endif
+_GL_FUNCDECL_RPL (hypot, double, (double x, double y));
+_GL_CXXALIAS_RPL (hypot, double, (double x, double y));
+# else
+_GL_CXXALIAS_SYS (hypot, double, (double x, double y));
+# endif
+_GL_CXXALIASWARN (hypot);
+#elif defined GNULIB_POSIXCHECK
+# undef hypot
+# if HAVE_RAW_DECL_HYPOT
+_GL_WARN_ON_USE (hypotf, "hypot has portability problems - "
+                 "use gnulib module hypot for portability");
+# endif
+#endif
+
+/* Return sqrt(x^2+y^2).  */
+#if @GNULIB_HYPOTL@
+# if @REPLACE_HYPOTL@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef hypotl
+#   define hypotl rpl_hypotl
+#  endif
+_GL_FUNCDECL_RPL (hypotl, long double, (long double x, long double y));
+_GL_CXXALIAS_RPL (hypotl, long double, (long double x, long double y));
+# else
+#  if !@HAVE_HYPOTL@
+_GL_FUNCDECL_SYS (hypotl, long double, (long double x, long double y));
+#  endif
+_GL_CXXALIAS_SYS (hypotl, long double, (long double x, long double y));
+# endif
+_GL_CXXALIASWARN (hypotl);
+#elif defined GNULIB_POSIXCHECK
+# undef hypotl
+# if HAVE_RAW_DECL_HYPOTL
+_GL_WARN_ON_USE (hypotl, "hypotl is unportable - "
+                 "use gnulib module hypotl for portability");
+# endif
+#endif
+
+
+#if @GNULIB_ILOGBF@
+# if @REPLACE_ILOGBF@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef ilogbf
+#   define ilogbf rpl_ilogbf
+#  endif
+_GL_FUNCDECL_RPL (ilogbf, int, (float x));
+_GL_CXXALIAS_RPL (ilogbf, int, (float x));
+# else
+#  if !@HAVE_ILOGBF@
+_GL_FUNCDECL_SYS (ilogbf, int, (float x));
+#  endif
+_GL_CXXALIAS_SYS (ilogbf, int, (float x));
+# endif
+_GL_CXXALIASWARN (ilogbf);
+#elif defined GNULIB_POSIXCHECK
+# undef ilogbf
+# if HAVE_RAW_DECL_ILOGBF
+_GL_WARN_ON_USE (ilogbf, "ilogbf is unportable - "
+                 "use gnulib module ilogbf for portability");
+# endif
+#endif
+
+#if @GNULIB_ILOGB@
+# if @REPLACE_ILOGB@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef ilogb
+#   define ilogb rpl_ilogb
+#  endif
+_GL_FUNCDECL_RPL (ilogb, int, (double x));
+_GL_CXXALIAS_RPL (ilogb, int, (double x));
+# else
+#  if !@HAVE_ILOGB@
+_GL_FUNCDECL_SYS (ilogb, int, (double x));
+#  endif
+_GL_CXXALIAS_SYS (ilogb, int, (double x));
+# endif
+_GL_CXXALIASWARN (ilogb);
+#elif defined GNULIB_POSIXCHECK
+# undef ilogb
+# if HAVE_RAW_DECL_ILOGB
+_GL_WARN_ON_USE (ilogb, "ilogb is unportable - "
+                 "use gnulib module ilogb for portability");
+# endif
+#endif
+
+#if @GNULIB_ILOGBL@
+# if @REPLACE_ILOGBL@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef ilogbl
+#   define ilogbl rpl_ilogbl
+#  endif
+_GL_FUNCDECL_RPL (ilogbl, int, (long double x));
+_GL_CXXALIAS_RPL (ilogbl, int, (long double x));
+# else
+#  if !@HAVE_ILOGBL@
+_GL_FUNCDECL_SYS (ilogbl, int, (long double x));
+#  endif
+_GL_CXXALIAS_SYS (ilogbl, int, (long double x));
+# endif
+_GL_CXXALIASWARN (ilogbl);
+#elif defined GNULIB_POSIXCHECK
+# undef ilogbl
+# if HAVE_RAW_DECL_ILOGBL
+_GL_WARN_ON_USE (ilogbl, "ilogbl is unportable - "
+                 "use gnulib module ilogbl for portability");
+# endif
+#endif
+
+
+/* Return x * 2^exp.  */
+#if @GNULIB_LDEXPF@
+# if !@HAVE_LDEXPF@
+#  undef ldexpf
+_GL_FUNCDECL_SYS (ldexpf, float, (float x, int exp));
+# endif
+_GL_CXXALIAS_SYS (ldexpf, float, (float x, int exp));
+_GL_CXXALIASWARN (ldexpf);
+#elif defined GNULIB_POSIXCHECK
+# undef ldexpf
+# if HAVE_RAW_DECL_LDEXPF
+_GL_WARN_ON_USE (ldexpf, "ldexpf is unportable - "
+                 "use gnulib module ldexpf for portability");
+# endif
+#endif
+
+/* Return x * 2^exp.  */
+#if @GNULIB_LDEXPL@ && @REPLACE_LDEXPL@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#  undef ldexpl
+#  define ldexpl rpl_ldexpl
+# endif
+_GL_FUNCDECL_RPL (ldexpl, long double, (long double x, int exp));
+_GL_CXXALIAS_RPL (ldexpl, long double, (long double x, int exp));
+#else
+# if !@HAVE_DECL_LDEXPL@
+_GL_FUNCDECL_SYS (ldexpl, long double, (long double x, int exp));
+# endif
+# if @GNULIB_LDEXPL@
+_GL_CXXALIAS_SYS (ldexpl, long double, (long double x, int exp));
+# endif
+#endif
+#if @GNULIB_LDEXPL@
+_GL_CXXALIASWARN (ldexpl);
+#endif
+#if !@GNULIB_LDEXPL@ && defined GNULIB_POSIXCHECK
+# undef ldexpl
+# if HAVE_RAW_DECL_LDEXPL
+_GL_WARN_ON_USE (ldexpl, "ldexpl is unportable - "
+                 "use gnulib module ldexpl for portability");
+# endif
+#endif
+
+
+#if @GNULIB_LOGF@
+# if @REPLACE_LOGF@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef logf
+#   define logf rpl_logf
+#  endif
+_GL_FUNCDECL_RPL (logf, float, (float x));
+_GL_CXXALIAS_RPL (logf, float, (float x));
+# else
+#  if !@HAVE_LOGF@
+#   undef logf
+_GL_FUNCDECL_SYS (logf, float, (float x));
+#  endif
+_GL_CXXALIAS_SYS (logf, float, (float x));
+# endif
+_GL_CXXALIASWARN (logf);
+#elif defined GNULIB_POSIXCHECK
+# undef logf
+# if HAVE_RAW_DECL_LOGF
+_GL_WARN_ON_USE (logf, "logf is unportable - "
+                 "use gnulib module logf for portability");
+# endif
+#endif
+
+#if @GNULIB_LOG@
+# if @REPLACE_LOG@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef log
+#   define log rpl_log
+#  endif
+_GL_FUNCDECL_RPL (log, double, (double x));
+_GL_CXXALIAS_RPL (log, double, (double x));
+# else
+_GL_CXXALIAS_SYS (log, double, (double x));
+# endif
+_GL_CXXALIASWARN (log);
+#elif defined GNULIB_POSIXCHECK
+# undef log
+# if HAVE_RAW_DECL_LOG
+_GL_WARN_ON_USE (log, "log has portability problems - "
+                 "use gnulib module log for portability");
+# endif
+#endif
+
+#if @GNULIB_LOGL@
+# if @REPLACE_LOGL@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef logl
+#   define logl rpl_logl
+#  endif
+_GL_FUNCDECL_RPL (logl, long double, (long double x));
+_GL_CXXALIAS_RPL (logl, long double, (long double x));
+# else
+#  if !@HAVE_LOGL@ || !@HAVE_DECL_LOGL@
+#   undef logl
+_GL_FUNCDECL_SYS (logl, long double, (long double x));
+#  endif
+_GL_CXXALIAS_SYS (logl, long double, (long double x));
+# endif
+_GL_CXXALIASWARN (logl);
+#elif defined GNULIB_POSIXCHECK
+# undef logl
+# if HAVE_RAW_DECL_LOGL
+_GL_WARN_ON_USE (logl, "logl is unportable - "
+                 "use gnulib module logl for portability");
+# endif
+#endif
+
+
+#if @GNULIB_LOG10F@
+# if @REPLACE_LOG10F@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef log10f
+#   define log10f rpl_log10f
+#  endif
+_GL_FUNCDECL_RPL (log10f, float, (float x));
+_GL_CXXALIAS_RPL (log10f, float, (float x));
+# else
+#  if !@HAVE_LOG10F@
+#   undef log10f
+_GL_FUNCDECL_SYS (log10f, float, (float x));
+#  endif
+_GL_CXXALIAS_SYS (log10f, float, (float x));
+# endif
+_GL_CXXALIASWARN (log10f);
+#elif defined GNULIB_POSIXCHECK
+# undef log10f
+# if HAVE_RAW_DECL_LOG10F
+_GL_WARN_ON_USE (log10f, "log10f is unportable - "
+                 "use gnulib module log10f for portability");
+# endif
+#endif
+
+#if @GNULIB_LOG10@
+# if @REPLACE_LOG10@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef log10
+#   define log10 rpl_log10
+#  endif
+_GL_FUNCDECL_RPL (log10, double, (double x));
+_GL_CXXALIAS_RPL (log10, double, (double x));
+# else
+_GL_CXXALIAS_SYS (log10, double, (double x));
+# endif
+_GL_CXXALIASWARN (log10);
+#elif defined GNULIB_POSIXCHECK
+# undef log10
+# if HAVE_RAW_DECL_LOG10
+_GL_WARN_ON_USE (log10, "log10 has portability problems - "
+                 "use gnulib module log10 for portability");
+# endif
+#endif
+
+#if @GNULIB_LOG10L@
+# if @REPLACE_LOG10L@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef log10l
+#   define log10l rpl_log10l
+#  endif
+_GL_FUNCDECL_RPL (log10l, long double, (long double x));
+_GL_CXXALIAS_RPL (log10l, long double, (long double x));
+# else
+#  if !@HAVE_LOG10L@ || !@HAVE_DECL_LOG10L@
+#   undef log10l
+_GL_FUNCDECL_SYS (log10l, long double, (long double x));
+#  endif
+_GL_CXXALIAS_SYS (log10l, long double, (long double x));
+# endif
+_GL_CXXALIASWARN (log10l);
+#elif defined GNULIB_POSIXCHECK
+# undef log10l
+# if HAVE_RAW_DECL_LOG10L
+_GL_WARN_ON_USE (log10l, "log10l is unportable - "
+                 "use gnulib module log10l for portability");
+# endif
+#endif
+
+
+#if @GNULIB_LOG1PF@
+# if @REPLACE_LOG1PF@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef log1pf
+#   define log1pf rpl_log1pf
+#  endif
+_GL_FUNCDECL_RPL (log1pf, float, (float x));
+_GL_CXXALIAS_RPL (log1pf, float, (float x));
+# else
+#  if !@HAVE_LOG1PF@
+_GL_FUNCDECL_SYS (log1pf, float, (float x));
+#  endif
+_GL_CXXALIAS_SYS (log1pf, float, (float x));
+# endif
+_GL_CXXALIASWARN (log1pf);
+#elif defined GNULIB_POSIXCHECK
+# undef log1pf
+# if HAVE_RAW_DECL_LOG1PF
+_GL_WARN_ON_USE (log1pf, "log1pf is unportable - "
+                 "use gnulib module log1pf for portability");
+# endif
+#endif
+
+#if @GNULIB_LOG1P@
+# if @REPLACE_LOG1P@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef log1p
+#   define log1p rpl_log1p
+#  endif
+_GL_FUNCDECL_RPL (log1p, double, (double x));
+_GL_CXXALIAS_RPL (log1p, double, (double x));
+# else
+#  if !@HAVE_LOG1P@
+_GL_FUNCDECL_SYS (log1p, double, (double x));
+#  endif
+_GL_CXXALIAS_SYS (log1p, double, (double x));
+# endif
+_GL_CXXALIASWARN (log1p);
+#elif defined GNULIB_POSIXCHECK
+# undef log1p
+# if HAVE_RAW_DECL_LOG1P
+_GL_WARN_ON_USE (log1p, "log1p has portability problems - "
+                 "use gnulib module log1p for portability");
+# endif
+#endif
+
+#if @GNULIB_LOG1PL@
+# if @REPLACE_LOG1PL@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef log1pl
+#   define log1pl rpl_log1pl
+#  endif
+_GL_FUNCDECL_RPL (log1pl, long double, (long double x));
+_GL_CXXALIAS_RPL (log1pl, long double, (long double x));
+# else
+#  if !@HAVE_LOG1PL@
+_GL_FUNCDECL_SYS (log1pl, long double, (long double x));
+#  endif
+_GL_CXXALIAS_SYS (log1pl, long double, (long double x));
+# endif
+_GL_CXXALIASWARN (log1pl);
+#elif defined GNULIB_POSIXCHECK
+# undef log1pl
+# if HAVE_RAW_DECL_LOG1PL
+_GL_WARN_ON_USE (log1pl, "log1pl has portability problems - "
+                 "use gnulib module log1pl for portability");
+# endif
+#endif
+
+
+#if @GNULIB_LOG2F@
+# if @REPLACE_LOG2F@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef log2f
+#   define log2f rpl_log2f
+#  endif
+_GL_FUNCDECL_RPL (log2f, float, (float x));
+_GL_CXXALIAS_RPL (log2f, float, (float x));
+# else
+#  if !@HAVE_DECL_LOG2F@
+#   undef log2f
+_GL_FUNCDECL_SYS (log2f, float, (float x));
+#  endif
+_GL_CXXALIAS_SYS (log2f, float, (float x));
+# endif
+_GL_CXXALIASWARN (log2f);
+#elif defined GNULIB_POSIXCHECK
+# undef log2f
+# if HAVE_RAW_DECL_LOG2F
+_GL_WARN_ON_USE (log2f, "log2f is unportable - "
+                 "use gnulib module log2f for portability");
+# endif
+#endif
+
+#if @GNULIB_LOG2@
+# if @REPLACE_LOG2@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef log2
+#   define log2 rpl_log2
+#  endif
+_GL_FUNCDECL_RPL (log2, double, (double x));
+_GL_CXXALIAS_RPL (log2, double, (double x));
+# else
+#  if !@HAVE_DECL_LOG2@
+#   undef log2
+_GL_FUNCDECL_SYS (log2, double, (double x));
+#  endif
+_GL_CXXALIAS_SYS (log2, double, (double x));
+# endif
+_GL_CXXALIASWARN (log2);
+#elif defined GNULIB_POSIXCHECK
+# undef log2
+# if HAVE_RAW_DECL_LOG2
+_GL_WARN_ON_USE (log2, "log2 is unportable - "
+                 "use gnulib module log2 for portability");
+# endif
+#endif
+
+#if @GNULIB_LOG2L@
+# if @REPLACE_LOG2L@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef log2l
+#   define log2l rpl_log2l
+#  endif
+_GL_FUNCDECL_RPL (log2l, long double, (long double x));
+_GL_CXXALIAS_RPL (log2l, long double, (long double x));
+# else
+#  if !@HAVE_DECL_LOG2L@
+_GL_FUNCDECL_SYS (log2l, long double, (long double x));
+#  endif
+_GL_CXXALIAS_SYS (log2l, long double, (long double x));
+# endif
+_GL_CXXALIASWARN (log2l);
+#elif defined GNULIB_POSIXCHECK
+# undef log2l
+# if HAVE_RAW_DECL_LOG2L
+_GL_WARN_ON_USE (log2l, "log2l is unportable - "
+                 "use gnulib module log2l for portability");
+# endif
+#endif
+
+
+#if @GNULIB_LOGBF@
+# if @REPLACE_LOGBF@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef logbf
+#   define logbf rpl_logbf
+#  endif
+_GL_FUNCDECL_RPL (logbf, float, (float x));
+_GL_CXXALIAS_RPL (logbf, float, (float x));
+# else
+#  if !@HAVE_LOGBF@
+_GL_FUNCDECL_SYS (logbf, float, (float x));
+#  endif
+_GL_CXXALIAS_SYS (logbf, float, (float x));
+# endif
+_GL_CXXALIASWARN (logbf);
+#elif defined GNULIB_POSIXCHECK
+# undef logbf
+# if HAVE_RAW_DECL_LOGBF
+_GL_WARN_ON_USE (logbf, "logbf is unportable - "
+                 "use gnulib module logbf for portability");
+# endif
+#endif
+
+#if @GNULIB_LOGB@
+# if @REPLACE_LOGB@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef logb
+#   define logb rpl_logb
+#  endif
+_GL_FUNCDECL_RPL (logb, double, (double x));
+_GL_CXXALIAS_RPL (logb, double, (double x));
+# else
+#  if !@HAVE_DECL_LOGB@
+_GL_FUNCDECL_SYS (logb, double, (double x));
+#  endif
+_GL_CXXALIAS_SYS (logb, double, (double x));
+# endif
+_GL_CXXALIASWARN (logb);
+#elif defined GNULIB_POSIXCHECK
+# undef logb
+# if HAVE_RAW_DECL_LOGB
+_GL_WARN_ON_USE (logb, "logb is unportable - "
+                 "use gnulib module logb for portability");
+# endif
+#endif
+
+#if @GNULIB_LOGBL@
+# if @REPLACE_LOGBL@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef logbl
+#   define logbl rpl_logbl
+#  endif
+_GL_FUNCDECL_RPL (logbl, long double, (long double x));
+_GL_CXXALIAS_RPL (logbl, long double, (long double x));
+# else
+#  if !@HAVE_LOGBL@
+_GL_FUNCDECL_SYS (logbl, long double, (long double x));
+#  endif
+_GL_CXXALIAS_SYS (logbl, long double, (long double x));
+# endif
+_GL_CXXALIASWARN (logbl);
+#elif defined GNULIB_POSIXCHECK
+# undef logbl
+# if HAVE_RAW_DECL_LOGBL
+_GL_WARN_ON_USE (logbl, "logbl is unportable - "
+                 "use gnulib module logbl for portability");
+# endif
+#endif
+
+
+#if @GNULIB_MODFF@
+# if @REPLACE_MODFF@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef modff
+#   define modff rpl_modff
+#  endif
+_GL_FUNCDECL_RPL (modff, float, (float x, float *iptr) _GL_ARG_NONNULL ((2)));
+_GL_CXXALIAS_RPL (modff, float, (float x, float *iptr));
+# else
+#  if !@HAVE_MODFF@
+#   undef modff
+_GL_FUNCDECL_SYS (modff, float, (float x, float *iptr) _GL_ARG_NONNULL ((2)));
+#  endif
+_GL_CXXALIAS_SYS (modff, float, (float x, float *iptr));
+# endif
+_GL_CXXALIASWARN (modff);
+#elif defined GNULIB_POSIXCHECK
+# undef modff
+# if HAVE_RAW_DECL_MODFF
+_GL_WARN_ON_USE (modff, "modff is unportable - "
+                 "use gnulib module modff for portability");
+# endif
+#endif
+
+#if @GNULIB_MODF@
+# if @REPLACE_MODF@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef modf
+#   define modf rpl_modf
+#  endif
+_GL_FUNCDECL_RPL (modf, double, (double x, double *iptr) _GL_ARG_NONNULL ((2)));
+_GL_CXXALIAS_RPL (modf, double, (double x, double *iptr));
+# else
+_GL_CXXALIAS_SYS (modf, double, (double x, double *iptr));
+# endif
+_GL_CXXALIASWARN (modf);
+#elif defined GNULIB_POSIXCHECK
+# undef modf
+# if HAVE_RAW_DECL_MODF
+_GL_WARN_ON_USE (modf, "modf has portability problems - "
+                 "use gnulib module modf for portability");
+# endif
+#endif
+
+#if @GNULIB_MODFL@
+# if @REPLACE_MODFL@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef modfl
+#   define modfl rpl_modfl
+#  endif
+_GL_FUNCDECL_RPL (modfl, long double, (long double x, long double *iptr)
+                                      _GL_ARG_NONNULL ((2)));
+_GL_CXXALIAS_RPL (modfl, long double, (long double x, long double *iptr));
+# else
+#  if !@HAVE_MODFL@
+#   undef modfl
+_GL_FUNCDECL_SYS (modfl, long double, (long double x, long double *iptr)
+                                      _GL_ARG_NONNULL ((2)));
+#  endif
+_GL_CXXALIAS_SYS (modfl, long double, (long double x, long double *iptr));
+# endif
+_GL_CXXALIASWARN (modfl);
+#elif defined GNULIB_POSIXCHECK
+# undef modfl
+# if HAVE_RAW_DECL_MODFL
+_GL_WARN_ON_USE (modfl, "modfl is unportable - "
+                 "use gnulib module modfl for portability");
+# endif
+#endif
+
+
+#if @GNULIB_POWF@
+# if !@HAVE_POWF@
+#  undef powf
+_GL_FUNCDECL_SYS (powf, float, (float x, float y));
+# endif
+_GL_CXXALIAS_SYS (powf, float, (float x, float y));
+_GL_CXXALIASWARN (powf);
+#elif defined GNULIB_POSIXCHECK
+# undef powf
+# if HAVE_RAW_DECL_POWF
+_GL_WARN_ON_USE (powf, "powf is unportable - "
+                 "use gnulib module powf for portability");
+# endif
+#endif
+
+
+#if @GNULIB_REMAINDERF@
+# if @REPLACE_REMAINDERF@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef remainderf
+#   define remainderf rpl_remainderf
+#  endif
+_GL_FUNCDECL_RPL (remainderf, float, (float x, float y));
+_GL_CXXALIAS_RPL (remainderf, float, (float x, float y));
+# else
+#  if !@HAVE_REMAINDERF@
+_GL_FUNCDECL_SYS (remainderf, float, (float x, float y));
+#  endif
+_GL_CXXALIAS_SYS (remainderf, float, (float x, float y));
+# endif
+_GL_CXXALIASWARN (remainderf);
+#elif defined GNULIB_POSIXCHECK
+# undef remainderf
+# if HAVE_RAW_DECL_REMAINDERF
+_GL_WARN_ON_USE (remainderf, "remainderf is unportable - "
+                 "use gnulib module remainderf for portability");
+# endif
+#endif
+
+#if @GNULIB_REMAINDER@
+# if @REPLACE_REMAINDER@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef remainder
+#   define remainder rpl_remainder
+#  endif
+_GL_FUNCDECL_RPL (remainder, double, (double x, double y));
+_GL_CXXALIAS_RPL (remainder, double, (double x, double y));
+# else
+#  if !@HAVE_REMAINDER@ || !@HAVE_DECL_REMAINDER@
+_GL_FUNCDECL_SYS (remainder, double, (double x, double y));
+#  endif
+_GL_CXXALIAS_SYS (remainder, double, (double x, double y));
+# endif
+_GL_CXXALIASWARN (remainder);
+#elif defined GNULIB_POSIXCHECK
+# undef remainder
+# if HAVE_RAW_DECL_REMAINDER
+_GL_WARN_ON_USE (remainder, "remainder is unportable - "
+                 "use gnulib module remainder for portability");
+# endif
+#endif
+
+#if @GNULIB_REMAINDERL@
+# if @REPLACE_REMAINDERL@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef remainderl
+#   define remainderl rpl_remainderl
+#  endif
+_GL_FUNCDECL_RPL (remainderl, long double, (long double x, long double y));
+_GL_CXXALIAS_RPL (remainderl, long double, (long double x, long double y));
+# else
+#  if !@HAVE_DECL_REMAINDERL@
+#   undef remainderl
+_GL_FUNCDECL_SYS (remainderl, long double, (long double x, long double y));
+#  endif
+_GL_CXXALIAS_SYS (remainderl, long double, (long double x, long double y));
+# endif
+_GL_CXXALIASWARN (remainderl);
+#elif defined GNULIB_POSIXCHECK
+# undef remainderl
+# if HAVE_RAW_DECL_REMAINDERL
+_GL_WARN_ON_USE (remainderl, "remainderl is unportable - "
+                 "use gnulib module remainderl for portability");
+# endif
+#endif
+
+
+#if @GNULIB_RINTF@
+# if !@HAVE_DECL_RINTF@
+_GL_FUNCDECL_SYS (rintf, float, (float x));
+# endif
+_GL_CXXALIAS_SYS (rintf, float, (float x));
+_GL_CXXALIASWARN (rintf);
+#elif defined GNULIB_POSIXCHECK
+# undef rintf
+# if HAVE_RAW_DECL_RINTF
+_GL_WARN_ON_USE (rintf, "rintf is unportable - "
+                 "use gnulib module rintf for portability");
+# endif
+#endif
+
+#if @GNULIB_RINT@
+# if !@HAVE_RINT@
+_GL_FUNCDECL_SYS (rint, double, (double x));
+# endif
+_GL_CXXALIAS_SYS (rint, double, (double x));
+_GL_CXXALIASWARN (rint);
+#elif defined GNULIB_POSIXCHECK
+# undef rint
+# if HAVE_RAW_DECL_RINT
+_GL_WARN_ON_USE (rint, "rint is unportable - "
+                 "use gnulib module rint for portability");
+# endif
+#endif
+
+#if @GNULIB_RINTL@
+# if !@HAVE_RINTL@
+_GL_FUNCDECL_SYS (rintl, long double, (long double x));
+# endif
+_GL_CXXALIAS_SYS (rintl, long double, (long double x));
+_GL_CXXALIASWARN (rintl);
+#elif defined GNULIB_POSIXCHECK
+# undef rintl
+# if HAVE_RAW_DECL_RINTL
+_GL_WARN_ON_USE (rintl, "rintl is unportable - "
+                 "use gnulib module rintl for portability");
+# endif
+#endif
+
+
+#if @GNULIB_ROUNDF@
+# if @REPLACE_ROUNDF@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef roundf
+#   define roundf rpl_roundf
+#  endif
+_GL_FUNCDECL_RPL (roundf, float, (float x));
+_GL_CXXALIAS_RPL (roundf, float, (float x));
+# else
+#  if !@HAVE_DECL_ROUNDF@
+_GL_FUNCDECL_SYS (roundf, float, (float x));
+#  endif
+_GL_CXXALIAS_SYS (roundf, float, (float x));
+# endif
+_GL_CXXALIASWARN (roundf);
+#elif defined GNULIB_POSIXCHECK
+# undef roundf
+# if HAVE_RAW_DECL_ROUNDF
+_GL_WARN_ON_USE (roundf, "roundf is unportable - "
+                 "use gnulib module roundf for portability");
+# endif
+#endif
+
+#if @GNULIB_ROUND@
+# if @REPLACE_ROUND@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef round
+#   define round rpl_round
+#  endif
+_GL_FUNCDECL_RPL (round, double, (double x));
+_GL_CXXALIAS_RPL (round, double, (double x));
+# else
+#  if !@HAVE_DECL_ROUND@
+_GL_FUNCDECL_SYS (round, double, (double x));
+#  endif
+_GL_CXXALIAS_SYS (round, double, (double x));
+# endif
+_GL_CXXALIASWARN (round);
+#elif defined GNULIB_POSIXCHECK
+# undef round
+# if HAVE_RAW_DECL_ROUND
+_GL_WARN_ON_USE (round, "round is unportable - "
+                 "use gnulib module round for portability");
+# endif
+#endif
+
+#if @GNULIB_ROUNDL@
+# if @REPLACE_ROUNDL@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef roundl
+#   define roundl rpl_roundl
+#  endif
+_GL_FUNCDECL_RPL (roundl, long double, (long double x));
+_GL_CXXALIAS_RPL (roundl, long double, (long double x));
+# else
+#  if !@HAVE_DECL_ROUNDL@
+#   undef roundl
+_GL_FUNCDECL_SYS (roundl, long double, (long double x));
+#  endif
+_GL_CXXALIAS_SYS (roundl, long double, (long double x));
+# endif
+_GL_CXXALIASWARN (roundl);
+#elif defined GNULIB_POSIXCHECK
+# undef roundl
+# if HAVE_RAW_DECL_ROUNDL
+_GL_WARN_ON_USE (roundl, "roundl is unportable - "
+                 "use gnulib module roundl for portability");
+# endif
+#endif
+
+
+#if @GNULIB_SINF@
+# if @REPLACE_SINF@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef sinf
+#   define sinf rpl_sinf
+#  endif
+_GL_FUNCDECL_RPL (sinf, float, (float x));
+_GL_CXXALIAS_RPL (sinf, float, (float x));
+# else
+#  if !@HAVE_SINF@
+ #  undef sinf
+_GL_FUNCDECL_SYS (sinf, float, (float x));
+#  endif
+_GL_CXXALIAS_SYS (sinf, float, (float x));
+# endif
+_GL_CXXALIASWARN (sinf);
+#elif defined GNULIB_POSIXCHECK
+# undef sinf
+# if HAVE_RAW_DECL_SINF
+_GL_WARN_ON_USE (sinf, "sinf is unportable - "
+                 "use gnulib module sinf for portability");
+# endif
+#endif
+
+#if @GNULIB_SINL@
+# if !@HAVE_SINL@ || !@HAVE_DECL_SINL@
+#  undef sinl
+_GL_FUNCDECL_SYS (sinl, long double, (long double x));
+# endif
+_GL_CXXALIAS_SYS (sinl, long double, (long double x));
+_GL_CXXALIASWARN (sinl);
+#elif defined GNULIB_POSIXCHECK
+# undef sinl
+# if HAVE_RAW_DECL_SINL
+_GL_WARN_ON_USE (sinl, "sinl is unportable - "
+                 "use gnulib module sinl for portability");
+# endif
+#endif
+
+
+#if @GNULIB_SINHF@
+# if @REPLACE_SINHF@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef sinhf
+#   define sinhf rpl_sinhf
+#  endif
+_GL_FUNCDECL_RPL (sinhf, float, (float x));
+_GL_CXXALIAS_RPL (sinhf, float, (float x));
+# else
+#  if !@HAVE_SINHF@
+#   undef sinhf
+_GL_FUNCDECL_SYS (sinhf, float, (float x));
+#  endif
+_GL_CXXALIAS_SYS (sinhf, float, (float x));
+# endif
+_GL_CXXALIASWARN (sinhf);
+#elif defined GNULIB_POSIXCHECK
+# undef sinhf
+# if HAVE_RAW_DECL_SINHF
+_GL_WARN_ON_USE (sinhf, "sinhf is unportable - "
+                 "use gnulib module sinhf for portability");
+# endif
+#endif
+
+
+#if @GNULIB_SQRTF@
+# if @REPLACE_SQRTF@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef sqrtf
+#   define sqrtf rpl_sqrtf
+#  endif
+_GL_FUNCDECL_RPL (sqrtf, float, (float x));
+_GL_CXXALIAS_RPL (sqrtf, float, (float x));
+# else
+#  if !@HAVE_SQRTF@
+#   undef sqrtf
+_GL_FUNCDECL_SYS (sqrtf, float, (float x));
+#  endif
+_GL_CXXALIAS_SYS (sqrtf, float, (float x));
+# endif
+_GL_CXXALIASWARN (sqrtf);
+#elif defined GNULIB_POSIXCHECK
+# undef sqrtf
+# if HAVE_RAW_DECL_SQRTF
+_GL_WARN_ON_USE (sqrtf, "sqrtf is unportable - "
+                 "use gnulib module sqrtf for portability");
+# endif
+#endif
+
+#if @GNULIB_SQRTL@
+# if @REPLACE_SQRTL@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef sqrtl
+#   define sqrtl rpl_sqrtl
+#  endif
+_GL_FUNCDECL_RPL (sqrtl, long double, (long double x));
+_GL_CXXALIAS_RPL (sqrtl, long double, (long double x));
+# else
+#  if !@HAVE_SQRTL@ || !@HAVE_DECL_SQRTL@
+#   undef sqrtl
+_GL_FUNCDECL_SYS (sqrtl, long double, (long double x));
+#  endif
+_GL_CXXALIAS_SYS (sqrtl, long double, (long double x));
+# endif
+_GL_CXXALIASWARN (sqrtl);
+#elif defined GNULIB_POSIXCHECK
+# undef sqrtl
+# if HAVE_RAW_DECL_SQRTL
+_GL_WARN_ON_USE (sqrtl, "sqrtl is unportable - "
+                 "use gnulib module sqrtl for portability");
+# endif
+#endif
+
+
+#if @GNULIB_TANF@
+# if @REPLACE_TANF@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef tanf
+#   define tanf rpl_tanf
+#  endif
+_GL_FUNCDECL_RPL (tanf, float, (float x));
+_GL_CXXALIAS_RPL (tanf, float, (float x));
+# else
+#  if !@HAVE_TANF@
+#   undef tanf
+_GL_FUNCDECL_SYS (tanf, float, (float x));
+#  endif
+_GL_CXXALIAS_SYS (tanf, float, (float x));
+# endif
+_GL_CXXALIASWARN (tanf);
+#elif defined GNULIB_POSIXCHECK
+# undef tanf
+# if HAVE_RAW_DECL_TANF
+_GL_WARN_ON_USE (tanf, "tanf is unportable - "
+                 "use gnulib module tanf for portability");
+# endif
+#endif
+
+#if @GNULIB_TANL@
+# if !@HAVE_TANL@ || !@HAVE_DECL_TANL@
+#  undef tanl
+_GL_FUNCDECL_SYS (tanl, long double, (long double x));
+# endif
+_GL_CXXALIAS_SYS (tanl, long double, (long double x));
+_GL_CXXALIASWARN (tanl);
+#elif defined GNULIB_POSIXCHECK
+# undef tanl
+# if HAVE_RAW_DECL_TANL
+_GL_WARN_ON_USE (tanl, "tanl is unportable - "
+                 "use gnulib module tanl for portability");
+# endif
+#endif
+
+
+#if @GNULIB_TANHF@
+# if @REPLACE_TANHF@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef tanhf
+#   define tanhf rpl_tanhf
+#  endif
+_GL_FUNCDECL_RPL (tanhf, float, (float x));
+_GL_CXXALIAS_RPL (tanhf, float, (float x));
+# else
+#  if !@HAVE_TANHF@
+#   undef tanhf
+_GL_FUNCDECL_SYS (tanhf, float, (float x));
+#  endif
+_GL_CXXALIAS_SYS (tanhf, float, (float x));
+# endif
+_GL_CXXALIASWARN (tanhf);
+#elif defined GNULIB_POSIXCHECK
+# undef tanhf
+# if HAVE_RAW_DECL_TANHF
+_GL_WARN_ON_USE (tanhf, "tanhf is unportable - "
+                 "use gnulib module tanhf for portability");
+# endif
+#endif
+
+
+#if @GNULIB_TRUNCF@
+# if @REPLACE_TRUNCF@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef truncf
+#   define truncf rpl_truncf
+#  endif
+_GL_FUNCDECL_RPL (truncf, float, (float x));
+_GL_CXXALIAS_RPL (truncf, float, (float x));
+# else
+#  if !@HAVE_DECL_TRUNCF@
+_GL_FUNCDECL_SYS (truncf, float, (float x));
+#  endif
+_GL_CXXALIAS_SYS (truncf, float, (float x));
+# endif
+_GL_CXXALIASWARN (truncf);
+#elif defined GNULIB_POSIXCHECK
+# undef truncf
+# if HAVE_RAW_DECL_TRUNCF
+_GL_WARN_ON_USE (truncf, "truncf is unportable - "
+                 "use gnulib module truncf for portability");
+# endif
+#endif
+
+#if @GNULIB_TRUNC@
+# if @REPLACE_TRUNC@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef trunc
+#   define trunc rpl_trunc
+#  endif
+_GL_FUNCDECL_RPL (trunc, double, (double x));
+_GL_CXXALIAS_RPL (trunc, double, (double x));
+# else
+#  if !@HAVE_DECL_TRUNC@
+_GL_FUNCDECL_SYS (trunc, double, (double x));
+#  endif
+_GL_CXXALIAS_SYS (trunc, double, (double x));
+# endif
+_GL_CXXALIASWARN (trunc);
+#elif defined GNULIB_POSIXCHECK
+# undef trunc
+# if HAVE_RAW_DECL_TRUNC
+_GL_WARN_ON_USE (trunc, "trunc is unportable - "
+                 "use gnulib module trunc for portability");
+# endif
+#endif
+
+#if @GNULIB_TRUNCL@
+# if @REPLACE_TRUNCL@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef truncl
+#   define truncl rpl_truncl
+#  endif
+_GL_FUNCDECL_RPL (truncl, long double, (long double x));
+_GL_CXXALIAS_RPL (truncl, long double, (long double x));
+# else
+#  if !@HAVE_DECL_TRUNCL@
+_GL_FUNCDECL_SYS (truncl, long double, (long double x));
+#  endif
+_GL_CXXALIAS_SYS (truncl, long double, (long double x));
+# endif
+_GL_CXXALIASWARN (truncl);
+#elif defined GNULIB_POSIXCHECK
+# undef truncl
+# if HAVE_RAW_DECL_TRUNCL
+_GL_WARN_ON_USE (truncl, "truncl is unportable - "
+                 "use gnulib module truncl for portability");
+# endif
+#endif
+
+
+/* Definitions of function-like macros come here, after the function
+   declarations.  */
+
+
+#if @GNULIB_ISFINITE@
+# if @REPLACE_ISFINITE@
+_GL_EXTERN_C int gl_isfinitef (float x);
+_GL_EXTERN_C int gl_isfinited (double x);
+_GL_EXTERN_C int gl_isfinitel (long double x);
+#  undef isfinite
+#  define isfinite(x) \
+   (sizeof (x) == sizeof (long double) ? gl_isfinitel (x) : \
+    sizeof (x) == sizeof (double) ? gl_isfinited (x) : \
+    gl_isfinitef (x))
+# endif
+# ifdef __cplusplus
+#  if defined isfinite || defined GNULIB_NAMESPACE
+_GL_MATH_CXX_REAL_FLOATING_DECL_1 (isfinite)
+#   undef isfinite
+_GL_MATH_CXX_REAL_FLOATING_DECL_2 (isfinite)
+#  endif
+# endif
+#elif defined GNULIB_POSIXCHECK
+# if defined isfinite
+_GL_WARN_REAL_FLOATING_DECL (isfinite);
+#  undef isfinite
+#  define isfinite(x) _GL_WARN_REAL_FLOATING_IMPL (isfinite, x)
+# endif
+#endif
+
+
+#if @GNULIB_ISINF@
+# if @REPLACE_ISINF@
+_GL_EXTERN_C int gl_isinff (float x);
+_GL_EXTERN_C int gl_isinfd (double x);
+_GL_EXTERN_C int gl_isinfl (long double x);
+#  undef isinf
+#  define isinf(x) \
+   (sizeof (x) == sizeof (long double) ? gl_isinfl (x) : \
+    sizeof (x) == sizeof (double) ? gl_isinfd (x) : \
+    gl_isinff (x))
+# endif
+# ifdef __cplusplus
+#  if defined isinf || defined GNULIB_NAMESPACE
+_GL_MATH_CXX_REAL_FLOATING_DECL_1 (isinf)
+#   undef isinf
+_GL_MATH_CXX_REAL_FLOATING_DECL_2 (isinf)
+#  endif
+# endif
+#elif defined GNULIB_POSIXCHECK
+# if defined isinf
+_GL_WARN_REAL_FLOATING_DECL (isinf);
+#  undef isinf
+#  define isinf(x) _GL_WARN_REAL_FLOATING_IMPL (isinf, x)
+# endif
+#endif
+
+
+#if @GNULIB_ISNANF@
+/* Test for NaN for 'float' numbers.  */
+# if @HAVE_ISNANF@
+/* The original <math.h> included above provides a declaration of isnan macro
+   or (older) isnanf function.  */
+#  if __GNUC__ >= 4
+    /* GCC 4.0 and newer provides three built-ins for isnan.  */
+#   undef isnanf
+#   define isnanf(x) __builtin_isnanf ((float)(x))
+#  elif defined isnan
+#   undef isnanf
+#   define isnanf(x) isnan ((float)(x))
+#  endif
+# else
+/* Test whether X is a NaN.  */
+#  undef isnanf
+#  define isnanf rpl_isnanf
+_GL_EXTERN_C int isnanf (float x);
+# endif
+#endif
+
+#if @GNULIB_ISNAND@
+/* Test for NaN for 'double' numbers.
+   This function is a gnulib extension, unlike isnan() which applied only
+   to 'double' numbers earlier but now is a type-generic macro.  */
+# if @HAVE_ISNAND@
+/* The original <math.h> included above provides a declaration of isnan
+   macro.  */
+#  if __GNUC__ >= 4
+    /* GCC 4.0 and newer provides three built-ins for isnan.  */
+#   undef isnand
+#   define isnand(x) __builtin_isnan ((double)(x))
+#  else
+#   undef isnand
+#   define isnand(x) isnan ((double)(x))
+#  endif
+# else
+/* Test whether X is a NaN.  */
+#  undef isnand
+#  define isnand rpl_isnand
+_GL_EXTERN_C int isnand (double x);
+# endif
+#endif
+
+#if @GNULIB_ISNANL@
+/* Test for NaN for 'long double' numbers.  */
+# if @HAVE_ISNANL@
+/* The original <math.h> included above provides a declaration of isnan
+   macro or (older) isnanl function.  */
+#  if __GNUC__ >= 4
+    /* GCC 4.0 and newer provides three built-ins for isnan.  */
+#   undef isnanl
+#   define isnanl(x) __builtin_isnanl ((long double)(x))
+#  elif defined isnan
+#   undef isnanl
+#   define isnanl(x) isnan ((long double)(x))
+#  endif
+# else
+/* Test whether X is a NaN.  */
+#  undef isnanl
+#  define isnanl rpl_isnanl
+_GL_EXTERN_C int isnanl (long double x) _GL_ATTRIBUTE_CONST;
+# endif
+#endif
+
+/* This must come *after* the snippets for GNULIB_ISNANF and GNULIB_ISNANL!  */
+#if @GNULIB_ISNAN@
+# if @REPLACE_ISNAN@
+/* We can't just use the isnanf macro (e.g.) as exposed by
+   isnanf.h (e.g.) here, because those may end up being macros
+   that recursively expand back to isnan.  So use the gnulib
+   replacements for them directly. */
+#  if @HAVE_ISNANF@ && __GNUC__ >= 4
+#   define gl_isnan_f(x) __builtin_isnanf ((float)(x))
+#  else
+_GL_EXTERN_C int rpl_isnanf (float x);
+#   define gl_isnan_f(x) rpl_isnanf (x)
+#  endif
+#  if @HAVE_ISNAND@ && __GNUC__ >= 4
+#   define gl_isnan_d(x) __builtin_isnan ((double)(x))
+#  else
+_GL_EXTERN_C int rpl_isnand (double x);
+#   define gl_isnan_d(x) rpl_isnand (x)
+#  endif
+#  if @HAVE_ISNANL@ && __GNUC__ >= 4
+#   define gl_isnan_l(x) __builtin_isnanl ((long double)(x))
+#  else
+_GL_EXTERN_C int rpl_isnanl (long double x) _GL_ATTRIBUTE_CONST;
+#   define gl_isnan_l(x) rpl_isnanl (x)
+#  endif
+#  undef isnan
+#  define isnan(x) \
+   (sizeof (x) == sizeof (long double) ? gl_isnan_l (x) : \
+    sizeof (x) == sizeof (double) ? gl_isnan_d (x) : \
+    gl_isnan_f (x))
+# elif __GNUC__ >= 4
+#  undef isnan
+#  define isnan(x) \
+   (sizeof (x) == sizeof (long double) ? __builtin_isnanl ((long double)(x)) : \
+    sizeof (x) == sizeof (double) ? __builtin_isnan ((double)(x)) : \
+    __builtin_isnanf ((float)(x)))
+# endif
+# ifdef __cplusplus
+#  if defined isnan || defined GNULIB_NAMESPACE
+_GL_MATH_CXX_REAL_FLOATING_DECL_1 (isnan)
+#   undef isnan
+_GL_MATH_CXX_REAL_FLOATING_DECL_2 (isnan)
+#  endif
+# else
+/* Ensure isnan is a macro.  */
+#  ifndef isnan
+#   define isnan isnan
+#  endif
+# endif
+#elif defined GNULIB_POSIXCHECK
+# if defined isnan
+_GL_WARN_REAL_FLOATING_DECL (isnan);
+#  undef isnan
+#  define isnan(x) _GL_WARN_REAL_FLOATING_IMPL (isnan, x)
+# endif
+#endif
+
+
+#if @GNULIB_SIGNBIT@
+# if (@REPLACE_SIGNBIT_USING_GCC@ \
+      && (!defined __cplusplus || __cplusplus < 201103))
+#  undef signbit
+   /* GCC 4.0 and newer provides three built-ins for signbit.  */
+#  define signbit(x) \
+   (sizeof (x) == sizeof (long double) ? __builtin_signbitl (x) : \
+    sizeof (x) == sizeof (double) ? __builtin_signbit (x) : \
+    __builtin_signbitf (x))
+# endif
+# if @REPLACE_SIGNBIT@
+#  undef signbit
+_GL_EXTERN_C int gl_signbitf (float arg);
+_GL_EXTERN_C int gl_signbitd (double arg);
+_GL_EXTERN_C int gl_signbitl (long double arg);
+#  if __GNUC__ >= 2 && !defined __STRICT_ANSI__
+#   define _GL_NUM_UINT_WORDS(type) \
+      ((sizeof (type) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
+#   if defined FLT_SIGNBIT_WORD && defined FLT_SIGNBIT_BIT && !defined gl_signbitf
+#    define gl_signbitf_OPTIMIZED_MACRO
+#    define gl_signbitf(arg) \
+       ({ union { float _value;                                         \
+                  unsigned int _word[_GL_NUM_UINT_WORDS (float)];       \
+                } _m;                                                   \
+          _m._value = (arg);                                            \
+          (_m._word[FLT_SIGNBIT_WORD] >> FLT_SIGNBIT_BIT) & 1;          \
+        })
+#   endif
+#   if defined DBL_SIGNBIT_WORD && defined DBL_SIGNBIT_BIT && !defined gl_signbitd
+#    define gl_signbitd_OPTIMIZED_MACRO
+#    define gl_signbitd(arg) \
+       ({ union { double _value;                                        \
+                  unsigned int _word[_GL_NUM_UINT_WORDS (double)];      \
+                } _m;                                                   \
+          _m._value = (arg);                                            \
+          (_m._word[DBL_SIGNBIT_WORD] >> DBL_SIGNBIT_BIT) & 1;          \
+        })
+#   endif
+#   if defined LDBL_SIGNBIT_WORD && defined LDBL_SIGNBIT_BIT && !defined gl_signbitl
+#    define gl_signbitl_OPTIMIZED_MACRO
+#    define gl_signbitl(arg) \
+       ({ union { long double _value;                                   \
+                  unsigned int _word[_GL_NUM_UINT_WORDS (long double)]; \
+                } _m;                                                   \
+          _m._value = (arg);                                            \
+          (_m._word[LDBL_SIGNBIT_WORD] >> LDBL_SIGNBIT_BIT) & 1;        \
+        })
+#   endif
+#  endif
+#  define signbit(x) \
+   (sizeof (x) == sizeof (long double) ? gl_signbitl (x) : \
+    sizeof (x) == sizeof (double) ? gl_signbitd (x) : \
+    gl_signbitf (x))
+# endif
+# ifdef __cplusplus
+#  if defined signbit || defined GNULIB_NAMESPACE
+_GL_MATH_CXX_REAL_FLOATING_DECL_1 (signbit)
+#   undef signbit
+_GL_MATH_CXX_REAL_FLOATING_DECL_2 (signbit)
+#  endif
+# endif
+#elif defined GNULIB_POSIXCHECK
+# if defined signbit
+_GL_WARN_REAL_FLOATING_DECL (signbit);
+#  undef signbit
+#  define signbit(x) _GL_WARN_REAL_FLOATING_IMPL (signbit, x)
+# endif
+#endif
+
+_GL_INLINE_HEADER_END
+
+#endif /* _@GUARD_PREFIX@_MATH_H */
+#endif /* _@GUARD_PREFIX@_MATH_H */
diff --git a/lib/memchr.c b/lib/memchr.c
new file mode 100644 (file)
index 0000000..0b47546
--- /dev/null
@@ -0,0 +1,172 @@
+/* Copyright (C) 1991, 1993, 1996-1997, 1999-2000, 2003-2004, 2006, 2008-2018
+   Free Software Foundation, Inc.
+
+   Based on strlen implementation by Torbjorn Granlund (tege@sics.se),
+   with help from Dan Sahlin (dan@sics.se) and
+   commentary by Jim Blandy (jimb@ai.mit.edu);
+   adaptation to memchr suggested by Dick Karpinski (dick@cca.ucsf.edu),
+   and implemented by Roland McGrath (roland@ai.mit.edu).
+
+NOTE: The canonical source of this file is maintained with the GNU C Library.
+Bugs can be reported to bug-glibc@prep.ai.mit.edu.
+
+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 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 <https://www.gnu.org/licenses/>.  */
+
+#ifndef _LIBC
+# include <config.h>
+#endif
+
+#include <string.h>
+
+#include <stddef.h>
+
+#if defined _LIBC
+# include <memcopy.h>
+#else
+# define reg_char char
+#endif
+
+#include <limits.h>
+
+#if HAVE_BP_SYM_H || defined _LIBC
+# include <bp-sym.h>
+#else
+# define BP_SYM(sym) sym
+#endif
+
+#undef __memchr
+#ifdef _LIBC
+# undef memchr
+#endif
+
+#ifndef weak_alias
+# define __memchr memchr
+#endif
+
+/* Search no more than N bytes of S for C.  */
+void *
+__memchr (void const *s, int c_in, size_t n)
+{
+  /* On 32-bit hardware, choosing longword to be a 32-bit unsigned
+     long instead of a 64-bit uintmax_t tends to give better
+     performance.  On 64-bit hardware, unsigned long is generally 64
+     bits already.  Change this typedef to experiment with
+     performance.  */
+  typedef unsigned long int longword;
+
+  const unsigned char *char_ptr;
+  const longword *longword_ptr;
+  longword repeated_one;
+  longword repeated_c;
+  unsigned reg_char c;
+
+  c = (unsigned char) c_in;
+
+  /* Handle the first few bytes by reading one byte at a time.
+     Do this until CHAR_PTR is aligned on a longword boundary.  */
+  for (char_ptr = (const unsigned char *) s;
+       n > 0 && (size_t) char_ptr % sizeof (longword) != 0;
+       --n, ++char_ptr)
+    if (*char_ptr == c)
+      return (void *) char_ptr;
+
+  longword_ptr = (const longword *) char_ptr;
+
+  /* All these elucidatory comments refer to 4-byte longwords,
+     but the theory applies equally well to any size longwords.  */
+
+  /* Compute auxiliary longword values:
+     repeated_one is a value which has a 1 in every byte.
+     repeated_c has c in every byte.  */
+  repeated_one = 0x01010101;
+  repeated_c = c | (c << 8);
+  repeated_c |= repeated_c << 16;
+  if (0xffffffffU < (longword) -1)
+    {
+      repeated_one |= repeated_one << 31 << 1;
+      repeated_c |= repeated_c << 31 << 1;
+      if (8 < sizeof (longword))
+        {
+          size_t i;
+
+          for (i = 64; i < sizeof (longword) * 8; i *= 2)
+            {
+              repeated_one |= repeated_one << i;
+              repeated_c |= repeated_c << i;
+            }
+        }
+    }
+
+  /* Instead of the traditional loop which tests each byte, we will test a
+     longword at a time.  The tricky part is testing if *any of the four*
+     bytes in the longword in question are equal to c.  We first use an xor
+     with repeated_c.  This reduces the task to testing whether *any of the
+     four* bytes in longword1 is zero.
+
+     We compute tmp =
+       ((longword1 - repeated_one) & ~longword1) & (repeated_one << 7).
+     That is, we perform the following operations:
+       1. Subtract repeated_one.
+       2. & ~longword1.
+       3. & a mask consisting of 0x80 in every byte.
+     Consider what happens in each byte:
+       - If a byte of longword1 is zero, step 1 and 2 transform it into 0xff,
+         and step 3 transforms it into 0x80.  A carry can also be propagated
+         to more significant bytes.
+       - If a byte of longword1 is nonzero, let its lowest 1 bit be at
+         position k (0 <= k <= 7); so the lowest k bits are 0.  After step 1,
+         the byte ends in a single bit of value 0 and k bits of value 1.
+         After step 2, the result is just k bits of value 1: 2^k - 1.  After
+         step 3, the result is 0.  And no carry is produced.
+     So, if longword1 has only non-zero bytes, tmp is zero.
+     Whereas if longword1 has a zero byte, call j the position of the least
+     significant zero byte.  Then the result has a zero at positions 0, ...,
+     j-1 and a 0x80 at position j.  We cannot predict the result at the more
+     significant bytes (positions j+1..3), but it does not matter since we
+     already have a non-zero bit at position 8*j+7.
+
+     So, the test whether any byte in longword1 is zero is equivalent to
+     testing whether tmp is nonzero.  */
+
+  while (n >= sizeof (longword))
+    {
+      longword longword1 = *longword_ptr ^ repeated_c;
+
+      if ((((longword1 - repeated_one) & ~longword1)
+           & (repeated_one << 7)) != 0)
+        break;
+      longword_ptr++;
+      n -= sizeof (longword);
+    }
+
+  char_ptr = (const unsigned char *) longword_ptr;
+
+  /* At this point, we know that either n < sizeof (longword), or one of the
+     sizeof (longword) bytes starting at char_ptr is == c.  On little-endian
+     machines, we could determine the first such byte without any further
+     memory accesses, just by looking at the tmp result from the last loop
+     iteration.  But this does not work on big-endian machines.  Choose code
+     that works in both cases.  */
+
+  for (; n > 0; --n, ++char_ptr)
+    {
+      if (*char_ptr == c)
+        return (void *) char_ptr;
+    }
+
+  return NULL;
+}
+#ifdef weak_alias
+weak_alias (__memchr, BP_SYM (memchr))
+#endif
diff --git a/lib/memchr.valgrind b/lib/memchr.valgrind
new file mode 100644 (file)
index 0000000..60f247e
--- /dev/null
@@ -0,0 +1,14 @@
+# Suppress a valgrind message about use of uninitialized memory in memchr().
+# POSIX states that when the character is found, memchr must not read extra
+# bytes in an overestimated length (for example, where memchr is used to
+# implement strnlen).  However, we use a safe word read to provide a speedup.
+{
+    memchr-value4
+    Memcheck:Value4
+    fun:rpl_memchr
+}
+{
+    memchr-value8
+    Memcheck:Value8
+    fun:rpl_memchr
+}
diff --git a/lib/printf-args.c b/lib/printf-args.c
new file mode 100644 (file)
index 0000000..1079e0a
--- /dev/null
@@ -0,0 +1,187 @@
+/* Decomposed printf argument list.
+   Copyright (C) 1999, 2002-2003, 2005-2007, 2009-2018 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, 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 <https://www.gnu.org/licenses/>.  */
+
+/* This file can be parametrized with the following macros:
+     ENABLE_UNISTDIO    Set to 1 to enable the unistdio extensions.
+     PRINTF_FETCHARGS   Name of the function to be defined.
+     STATIC             Set to 'static' to declare the function static.  */
+
+#ifndef PRINTF_FETCHARGS
+# include <config.h>
+#endif
+
+/* Specification.  */
+#ifndef PRINTF_FETCHARGS
+# include "printf-args.h"
+#endif
+
+#ifdef STATIC
+STATIC
+#endif
+int
+PRINTF_FETCHARGS (va_list args, arguments *a)
+{
+  size_t i;
+  argument *ap;
+
+  for (i = 0, ap = &a->arg[0]; i < a->count; i++, ap++)
+    switch (ap->type)
+      {
+      case TYPE_SCHAR:
+        ap->a.a_schar = va_arg (args, /*signed char*/ int);
+        break;
+      case TYPE_UCHAR:
+        ap->a.a_uchar = va_arg (args, /*unsigned char*/ int);
+        break;
+      case TYPE_SHORT:
+        ap->a.a_short = va_arg (args, /*short*/ int);
+        break;
+      case TYPE_USHORT:
+        ap->a.a_ushort = va_arg (args, /*unsigned short*/ int);
+        break;
+      case TYPE_INT:
+        ap->a.a_int = va_arg (args, int);
+        break;
+      case TYPE_UINT:
+        ap->a.a_uint = va_arg (args, unsigned int);
+        break;
+      case TYPE_LONGINT:
+        ap->a.a_longint = va_arg (args, long int);
+        break;
+      case TYPE_ULONGINT:
+        ap->a.a_ulongint = va_arg (args, unsigned long int);
+        break;
+#if HAVE_LONG_LONG_INT
+      case TYPE_LONGLONGINT:
+        ap->a.a_longlongint = va_arg (args, long long int);
+        break;
+      case TYPE_ULONGLONGINT:
+        ap->a.a_ulonglongint = va_arg (args, unsigned long long int);
+        break;
+#endif
+      case TYPE_DOUBLE:
+        ap->a.a_double = va_arg (args, double);
+        break;
+      case TYPE_LONGDOUBLE:
+        ap->a.a_longdouble = va_arg (args, long double);
+        break;
+      case TYPE_CHAR:
+        ap->a.a_char = va_arg (args, int);
+        break;
+#if HAVE_WINT_T
+      case TYPE_WIDE_CHAR:
+        /* Although ISO C 99 7.24.1.(2) says that wint_t is "unchanged by
+           default argument promotions", this is not the case in mingw32,
+           where wint_t is 'unsigned short'.  */
+        ap->a.a_wide_char =
+          (sizeof (wint_t) < sizeof (int)
+           ? (wint_t) va_arg (args, int)
+           : va_arg (args, wint_t));
+        break;
+#endif
+      case TYPE_STRING:
+        ap->a.a_string = va_arg (args, const char *);
+        /* A null pointer is an invalid argument for "%s", but in practice
+           it occurs quite frequently in printf statements that produce
+           debug output.  Use a fallback in this case.  */
+        if (ap->a.a_string == NULL)
+          ap->a.a_string = "(NULL)";
+        break;
+#if HAVE_WCHAR_T
+      case TYPE_WIDE_STRING:
+        ap->a.a_wide_string = va_arg (args, const wchar_t *);
+        /* A null pointer is an invalid argument for "%ls", but in practice
+           it occurs quite frequently in printf statements that produce
+           debug output.  Use a fallback in this case.  */
+        if (ap->a.a_wide_string == NULL)
+          {
+            static const wchar_t wide_null_string[] =
+              {
+                (wchar_t)'(',
+                (wchar_t)'N', (wchar_t)'U', (wchar_t)'L', (wchar_t)'L',
+                (wchar_t)')',
+                (wchar_t)0
+              };
+            ap->a.a_wide_string = wide_null_string;
+          }
+        break;
+#endif
+      case TYPE_POINTER:
+        ap->a.a_pointer = va_arg (args, void *);
+        break;
+      case TYPE_COUNT_SCHAR_POINTER:
+        ap->a.a_count_schar_pointer = va_arg (args, signed char *);
+        break;
+      case TYPE_COUNT_SHORT_POINTER:
+        ap->a.a_count_short_pointer = va_arg (args, short *);
+        break;
+      case TYPE_COUNT_INT_POINTER:
+        ap->a.a_count_int_pointer = va_arg (args, int *);
+        break;
+      case TYPE_COUNT_LONGINT_POINTER:
+        ap->a.a_count_longint_pointer = va_arg (args, long int *);
+        break;
+#if HAVE_LONG_LONG_INT
+      case TYPE_COUNT_LONGLONGINT_POINTER:
+        ap->a.a_count_longlongint_pointer = va_arg (args, long long int *);
+        break;
+#endif
+#if ENABLE_UNISTDIO
+      /* The unistdio extensions.  */
+      case TYPE_U8_STRING:
+        ap->a.a_u8_string = va_arg (args, const uint8_t *);
+        /* A null pointer is an invalid argument for "%U", but in practice
+           it occurs quite frequently in printf statements that produce
+           debug output.  Use a fallback in this case.  */
+        if (ap->a.a_u8_string == NULL)
+          {
+            static const uint8_t u8_null_string[] =
+              { '(', 'N', 'U', 'L', 'L', ')', 0 };
+            ap->a.a_u8_string = u8_null_string;
+          }
+        break;
+      case TYPE_U16_STRING:
+        ap->a.a_u16_string = va_arg (args, const uint16_t *);
+        /* A null pointer is an invalid argument for "%lU", but in practice
+           it occurs quite frequently in printf statements that produce
+           debug output.  Use a fallback in this case.  */
+        if (ap->a.a_u16_string == NULL)
+          {
+            static const uint16_t u16_null_string[] =
+              { '(', 'N', 'U', 'L', 'L', ')', 0 };
+            ap->a.a_u16_string = u16_null_string;
+          }
+        break;
+      case TYPE_U32_STRING:
+        ap->a.a_u32_string = va_arg (args, const uint32_t *);
+        /* A null pointer is an invalid argument for "%llU", but in practice
+           it occurs quite frequently in printf statements that produce
+           debug output.  Use a fallback in this case.  */
+        if (ap->a.a_u32_string == NULL)
+          {
+            static const uint32_t u32_null_string[] =
+              { '(', 'N', 'U', 'L', 'L', ')', 0 };
+            ap->a.a_u32_string = u32_null_string;
+          }
+        break;
+#endif
+      default:
+        /* Unknown type.  */
+        return -1;
+      }
+  return 0;
+}
diff --git a/lib/printf-args.h b/lib/printf-args.h
new file mode 100644 (file)
index 0000000..111e8a5
--- /dev/null
@@ -0,0 +1,158 @@
+/* Decomposed printf argument list.
+   Copyright (C) 1999, 2002-2003, 2006-2007, 2011-2018 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, 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 <https://www.gnu.org/licenses/>.  */
+
+#ifndef _PRINTF_ARGS_H
+#define _PRINTF_ARGS_H
+
+/* This file can be parametrized with the following macros:
+     ENABLE_UNISTDIO    Set to 1 to enable the unistdio extensions.
+     PRINTF_FETCHARGS   Name of the function to be declared.
+     STATIC             Set to 'static' to declare the function static.  */
+
+/* Default parameters.  */
+#ifndef PRINTF_FETCHARGS
+# define PRINTF_FETCHARGS printf_fetchargs
+#endif
+
+/* Get size_t.  */
+#include <stddef.h>
+
+/* Get wchar_t.  */
+#if HAVE_WCHAR_T
+# include <stddef.h>
+#endif
+
+/* Get wint_t.  */
+#if HAVE_WINT_T
+# include <wchar.h>
+#endif
+
+/* Get va_list.  */
+#include <stdarg.h>
+
+
+/* Argument types */
+typedef enum
+{
+  TYPE_NONE,
+  TYPE_SCHAR,
+  TYPE_UCHAR,
+  TYPE_SHORT,
+  TYPE_USHORT,
+  TYPE_INT,
+  TYPE_UINT,
+  TYPE_LONGINT,
+  TYPE_ULONGINT,
+#if HAVE_LONG_LONG_INT
+  TYPE_LONGLONGINT,
+  TYPE_ULONGLONGINT,
+#endif
+  TYPE_DOUBLE,
+  TYPE_LONGDOUBLE,
+  TYPE_CHAR,
+#if HAVE_WINT_T
+  TYPE_WIDE_CHAR,
+#endif
+  TYPE_STRING,
+#if HAVE_WCHAR_T
+  TYPE_WIDE_STRING,
+#endif
+  TYPE_POINTER,
+  TYPE_COUNT_SCHAR_POINTER,
+  TYPE_COUNT_SHORT_POINTER,
+  TYPE_COUNT_INT_POINTER,
+  TYPE_COUNT_LONGINT_POINTER
+#if HAVE_LONG_LONG_INT
+, TYPE_COUNT_LONGLONGINT_POINTER
+#endif
+#if ENABLE_UNISTDIO
+  /* The unistdio extensions.  */
+, TYPE_U8_STRING
+, TYPE_U16_STRING
+, TYPE_U32_STRING
+#endif
+} arg_type;
+
+/* Polymorphic argument */
+typedef struct
+{
+  arg_type type;
+  union
+  {
+    signed char                 a_schar;
+    unsigned char               a_uchar;
+    short                       a_short;
+    unsigned short              a_ushort;
+    int                         a_int;
+    unsigned int                a_uint;
+    long int                    a_longint;
+    unsigned long int           a_ulongint;
+#if HAVE_LONG_LONG_INT
+    long long int               a_longlongint;
+    unsigned long long int      a_ulonglongint;
+#endif
+    float                       a_float;
+    double                      a_double;
+    long double                 a_longdouble;
+    int                         a_char;
+#if HAVE_WINT_T
+    wint_t                      a_wide_char;
+#endif
+    const char*                 a_string;
+#if HAVE_WCHAR_T
+    const wchar_t*              a_wide_string;
+#endif
+    void*                       a_pointer;
+    signed char *               a_count_schar_pointer;
+    short *                     a_count_short_pointer;
+    int *                       a_count_int_pointer;
+    long int *                  a_count_longint_pointer;
+#if HAVE_LONG_LONG_INT
+    long long int *             a_count_longlongint_pointer;
+#endif
+#if ENABLE_UNISTDIO
+    /* The unistdio extensions.  */
+    const uint8_t *             a_u8_string;
+    const uint16_t *            a_u16_string;
+    const uint32_t *            a_u32_string;
+#endif
+  }
+  a;
+}
+argument;
+
+/* Number of directly allocated arguments (no malloc() needed).  */
+#define N_DIRECT_ALLOC_ARGUMENTS 7
+
+typedef struct
+{
+  size_t count;
+  argument *arg;
+  argument direct_alloc_arg[N_DIRECT_ALLOC_ARGUMENTS];
+}
+arguments;
+
+
+/* Fetch the arguments, putting them into a. */
+#ifdef STATIC
+STATIC
+#else
+extern
+#endif
+int PRINTF_FETCHARGS (va_list args, arguments *a);
+
+#endif /* _PRINTF_ARGS_H */
diff --git a/lib/printf-frexp.c b/lib/printf-frexp.c
new file mode 100644 (file)
index 0000000..c704090
--- /dev/null
@@ -0,0 +1,190 @@
+/* Split a double into fraction and mantissa, for hexadecimal printf.
+   Copyright (C) 2007, 2009-2018 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 <https://www.gnu.org/licenses/>.  */
+
+#if ! defined USE_LONG_DOUBLE
+# include <config.h>
+#endif
+
+/* Specification.  */
+#ifdef USE_LONG_DOUBLE
+# include "printf-frexpl.h"
+#else
+# include "printf-frexp.h"
+#endif
+
+#include <float.h>
+#include <math.h>
+#ifdef USE_LONG_DOUBLE
+# include "fpucw.h"
+#endif
+
+/* This file assumes FLT_RADIX = 2.  If FLT_RADIX is a power of 2 greater
+   than 2, or not even a power of 2, some rounding errors can occur, so that
+   then the returned mantissa is only guaranteed to be <= 2.0, not < 2.0.  */
+
+#ifdef USE_LONG_DOUBLE
+# define FUNC printf_frexpl
+# define DOUBLE long double
+# define MIN_EXP LDBL_MIN_EXP
+# if HAVE_FREXPL_IN_LIBC && HAVE_LDEXPL_IN_LIBC
+#  define USE_FREXP_LDEXP
+#  define FREXP frexpl
+#  define LDEXP ldexpl
+# endif
+# define DECL_ROUNDING DECL_LONG_DOUBLE_ROUNDING
+# define BEGIN_ROUNDING() BEGIN_LONG_DOUBLE_ROUNDING ()
+# define END_ROUNDING() END_LONG_DOUBLE_ROUNDING ()
+# define L_(literal) literal##L
+#else
+# define FUNC printf_frexp
+# define DOUBLE double
+# define MIN_EXP DBL_MIN_EXP
+# if HAVE_FREXP_IN_LIBC && HAVE_LDEXP_IN_LIBC
+#  define USE_FREXP_LDEXP
+#  define FREXP frexp
+#  define LDEXP ldexp
+# endif
+# define DECL_ROUNDING
+# define BEGIN_ROUNDING()
+# define END_ROUNDING()
+# define L_(literal) literal
+#endif
+
+DOUBLE
+FUNC (DOUBLE x, int *expptr)
+{
+  int exponent;
+  DECL_ROUNDING
+
+  BEGIN_ROUNDING ();
+
+#ifdef USE_FREXP_LDEXP
+  /* frexp and ldexp are usually faster than the loop below.  */
+  x = FREXP (x, &exponent);
+
+  x = x + x;
+  exponent -= 1;
+
+  if (exponent < MIN_EXP - 1)
+    {
+      x = LDEXP (x, exponent - (MIN_EXP - 1));
+      exponent = MIN_EXP - 1;
+    }
+#else
+  {
+    /* Since the exponent is an 'int', it fits in 64 bits.  Therefore the
+       loops are executed no more than 64 times.  */
+    DOUBLE pow2[64]; /* pow2[i] = 2^2^i */
+    DOUBLE powh[64]; /* powh[i] = 2^-2^i */
+    int i;
+
+    exponent = 0;
+    if (x >= L_(1.0))
+      {
+        /* A nonnegative exponent.  */
+        {
+          DOUBLE pow2_i; /* = pow2[i] */
+          DOUBLE powh_i; /* = powh[i] */
+
+          /* Invariants: pow2_i = 2^2^i, powh_i = 2^-2^i,
+             x * 2^exponent = argument, x >= 1.0.  */
+          for (i = 0, pow2_i = L_(2.0), powh_i = L_(0.5);
+               ;
+               i++, pow2_i = pow2_i * pow2_i, powh_i = powh_i * powh_i)
+            {
+              if (x >= pow2_i)
+                {
+                  exponent += (1 << i);
+                  x *= powh_i;
+                }
+              else
+                break;
+
+              pow2[i] = pow2_i;
+              powh[i] = powh_i;
+            }
+        }
+        /* Here 1.0 <= x < 2^2^i.  */
+      }
+    else
+      {
+        /* A negative exponent.  */
+        {
+          DOUBLE pow2_i; /* = pow2[i] */
+          DOUBLE powh_i; /* = powh[i] */
+
+          /* Invariants: pow2_i = 2^2^i, powh_i = 2^-2^i,
+             x * 2^exponent = argument, x < 1.0, exponent >= MIN_EXP - 1.  */
+          for (i = 0, pow2_i = L_(2.0), powh_i = L_(0.5);
+               ;
+               i++, pow2_i = pow2_i * pow2_i, powh_i = powh_i * powh_i)
+            {
+              if (exponent - (1 << i) < MIN_EXP - 1)
+                break;
+
+              exponent -= (1 << i);
+              x *= pow2_i;
+              if (x >= L_(1.0))
+                break;
+
+              pow2[i] = pow2_i;
+              powh[i] = powh_i;
+            }
+        }
+        /* Here either x < 1.0 and exponent - 2^i < MIN_EXP - 1 <= exponent,
+           or 1.0 <= x < 2^2^i and exponent >= MIN_EXP - 1.  */
+
+        if (x < L_(1.0))
+          /* Invariants: x * 2^exponent = argument, x < 1.0 and
+             exponent - 2^i < MIN_EXP - 1 <= exponent.  */
+          while (i > 0)
+            {
+              i--;
+              if (exponent - (1 << i) >= MIN_EXP - 1)
+                {
+                  exponent -= (1 << i);
+                  x *= pow2[i];
+                  if (x >= L_(1.0))
+                    break;
+                }
+            }
+
+        /* Here either x < 1.0 and exponent = MIN_EXP - 1,
+           or 1.0 <= x < 2^2^i and exponent >= MIN_EXP - 1.  */
+      }
+
+    /* Invariants: x * 2^exponent = argument, and
+       either x < 1.0 and exponent = MIN_EXP - 1,
+       or 1.0 <= x < 2^2^i and exponent >= MIN_EXP - 1.  */
+    while (i > 0)
+      {
+        i--;
+        if (x >= pow2[i])
+          {
+            exponent += (1 << i);
+            x *= powh[i];
+          }
+      }
+    /* Here either x < 1.0 and exponent = MIN_EXP - 1,
+       or 1.0 <= x < 2.0 and exponent >= MIN_EXP - 1.  */
+  }
+#endif
+
+  END_ROUNDING ();
+
+  *expptr = exponent;
+  return x;
+}
diff --git a/lib/printf-frexp.h b/lib/printf-frexp.h
new file mode 100644 (file)
index 0000000..814229f
--- /dev/null
@@ -0,0 +1,23 @@
+/* Split a double into fraction and mantissa, for hexadecimal printf.
+   Copyright (C) 2007, 2009-2018 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 <https://www.gnu.org/licenses/>.  */
+
+/* Write a finite, positive number x as
+     x = mantissa * 2^exp
+   where exp >= DBL_MIN_EXP - 1,
+         mantissa < 2.0,
+         if x is not a denormalized number then mantissa >= 1.0.
+   Store exp in *EXPPTR and return mantissa.  */
+extern double printf_frexp (double x, int *expptr);
diff --git a/lib/printf-frexpl.c b/lib/printf-frexpl.c
new file mode 100644 (file)
index 0000000..cc8db67
--- /dev/null
@@ -0,0 +1,37 @@
+/* Split a 'long double' into fraction and mantissa, for hexadecimal printf.
+   Copyright (C) 2007, 2009-2018 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 <https://www.gnu.org/licenses/>.  */
+
+#include <config.h>
+
+#if HAVE_SAME_LONG_DOUBLE_AS_DOUBLE
+
+/* Specification.  */
+# include "printf-frexpl.h"
+
+# include "printf-frexp.h"
+
+long double
+printf_frexpl (long double x, int *expptr)
+{
+  return printf_frexp (x, expptr);
+}
+
+#else
+
+# define USE_LONG_DOUBLE
+# include "printf-frexp.c"
+
+#endif
diff --git a/lib/printf-frexpl.h b/lib/printf-frexpl.h
new file mode 100644 (file)
index 0000000..c48c70c
--- /dev/null
@@ -0,0 +1,23 @@
+/* Split a 'long double' into fraction and mantissa, for hexadecimal printf.
+   Copyright (C) 2007, 2009-2018 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 <https://www.gnu.org/licenses/>.  */
+
+/* Write a finite, positive number x as
+     x = mantissa * 2^exp
+   where exp >= LDBL_MIN_EXP - 1,
+         mantissa < 2.0,
+         if x is not a denormalized number then mantissa >= 1.0.
+   Store exp in *EXPPTR and return mantissa.  */
+extern long double printf_frexpl (long double x, int *expptr);
diff --git a/lib/printf-parse.c b/lib/printf-parse.c
new file mode 100644 (file)
index 0000000..e625145
--- /dev/null
@@ -0,0 +1,638 @@
+/* Formatted output to strings.
+   Copyright (C) 1999-2000, 2002-2003, 2006-2018 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, 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 <https://www.gnu.org/licenses/>.  */
+
+/* This file can be parametrized with the following macros:
+     CHAR_T             The element type of the format string.
+     CHAR_T_ONLY_ASCII  Set to 1 to enable verification that all characters
+                        in the format string are ASCII.
+     DIRECTIVE          Structure denoting a format directive.
+                        Depends on CHAR_T.
+     DIRECTIVES         Structure denoting the set of format directives of a
+                        format string.  Depends on CHAR_T.
+     PRINTF_PARSE       Function that parses a format string.
+                        Depends on CHAR_T.
+     STATIC             Set to 'static' to declare the function static.
+     ENABLE_UNISTDIO    Set to 1 to enable the unistdio extensions.  */
+
+#ifndef PRINTF_PARSE
+# include <config.h>
+#endif
+
+/* Specification.  */
+#ifndef PRINTF_PARSE
+# include "printf-parse.h"
+#endif
+
+/* Default parameters.  */
+#ifndef PRINTF_PARSE
+# define PRINTF_PARSE printf_parse
+# define CHAR_T char
+# define DIRECTIVE char_directive
+# define DIRECTIVES char_directives
+#endif
+
+/* Get size_t, NULL.  */
+#include <stddef.h>
+
+/* Get intmax_t.  */
+#if defined IN_LIBINTL || defined IN_LIBASPRINTF
+# if HAVE_STDINT_H_WITH_UINTMAX
+#  include <stdint.h>
+# endif
+# if HAVE_INTTYPES_H_WITH_UINTMAX
+#  include <inttypes.h>
+# endif
+#else
+# include <stdint.h>
+#endif
+
+/* malloc(), realloc(), free().  */
+#include <stdlib.h>
+
+/* memcpy().  */
+#include <string.h>
+
+/* errno.  */
+#include <errno.h>
+
+/* Checked size_t computations.  */
+#include "xsize.h"
+
+#if CHAR_T_ONLY_ASCII
+/* c_isascii().  */
+# include "c-ctype.h"
+#endif
+
+#ifdef STATIC
+STATIC
+#endif
+int
+PRINTF_PARSE (const CHAR_T *format, DIRECTIVES *d, arguments *a)
+{
+  const CHAR_T *cp = format;    /* pointer into format */
+  size_t arg_posn = 0;          /* number of regular arguments consumed */
+  size_t d_allocated;           /* allocated elements of d->dir */
+  size_t a_allocated;           /* allocated elements of a->arg */
+  size_t max_width_length = 0;
+  size_t max_precision_length = 0;
+
+  d->count = 0;
+  d_allocated = N_DIRECT_ALLOC_DIRECTIVES;
+  d->dir = d->direct_alloc_dir;
+
+  a->count = 0;
+  a_allocated = N_DIRECT_ALLOC_ARGUMENTS;
+  a->arg = a->direct_alloc_arg;
+
+#define REGISTER_ARG(_index_,_type_) \
+  {                                                                     \
+    size_t n = (_index_);                                               \
+    if (n >= a_allocated)                                               \
+      {                                                                 \
+        size_t memory_size;                                             \
+        argument *memory;                                               \
+                                                                        \
+        a_allocated = xtimes (a_allocated, 2);                          \
+        if (a_allocated <= n)                                           \
+          a_allocated = xsum (n, 1);                                    \
+        memory_size = xtimes (a_allocated, sizeof (argument));          \
+        if (size_overflow_p (memory_size))                              \
+          /* Overflow, would lead to out of memory.  */                 \
+          goto out_of_memory;                                           \
+        memory = (argument *) (a->arg != a->direct_alloc_arg            \
+                               ? realloc (a->arg, memory_size)          \
+                               : malloc (memory_size));                 \
+        if (memory == NULL)                                             \
+          /* Out of memory.  */                                         \
+          goto out_of_memory;                                           \
+        if (a->arg == a->direct_alloc_arg)                              \
+          memcpy (memory, a->arg, a->count * sizeof (argument));        \
+        a->arg = memory;                                                \
+      }                                                                 \
+    while (a->count <= n)                                               \
+      a->arg[a->count++].type = TYPE_NONE;                              \
+    if (a->arg[n].type == TYPE_NONE)                                    \
+      a->arg[n].type = (_type_);                                        \
+    else if (a->arg[n].type != (_type_))                                \
+      /* Ambiguous type for positional argument.  */                    \
+      goto error;                                                       \
+  }
+
+  while (*cp != '\0')
+    {
+      CHAR_T c = *cp++;
+      if (c == '%')
+        {
+          size_t arg_index = ARG_NONE;
+          DIRECTIVE *dp = &d->dir[d->count]; /* pointer to next directive */
+
+          /* Initialize the next directive.  */
+          dp->dir_start = cp - 1;
+          dp->flags = 0;
+          dp->width_start = NULL;
+          dp->width_end = NULL;
+          dp->width_arg_index = ARG_NONE;
+          dp->precision_start = NULL;
+          dp->precision_end = NULL;
+          dp->precision_arg_index = ARG_NONE;
+          dp->arg_index = ARG_NONE;
+
+          /* Test for positional argument.  */
+          if (*cp >= '0' && *cp <= '9')
+            {
+              const CHAR_T *np;
+
+              for (np = cp; *np >= '0' && *np <= '9'; np++)
+                ;
+              if (*np == '$')
+                {
+                  size_t n = 0;
+
+                  for (np = cp; *np >= '0' && *np <= '9'; np++)
+                    n = xsum (xtimes (n, 10), *np - '0');
+                  if (n == 0)
+                    /* Positional argument 0.  */
+                    goto error;
+                  if (size_overflow_p (n))
+                    /* n too large, would lead to out of memory later.  */
+                    goto error;
+                  arg_index = n - 1;
+                  cp = np + 1;
+                }
+            }
+
+          /* Read the flags.  */
+          for (;;)
+            {
+              if (*cp == '\'')
+                {
+                  dp->flags |= FLAG_GROUP;
+                  cp++;
+                }
+              else if (*cp == '-')
+                {
+                  dp->flags |= FLAG_LEFT;
+                  cp++;
+                }
+              else if (*cp == '+')
+                {
+                  dp->flags |= FLAG_SHOWSIGN;
+                  cp++;
+                }
+              else if (*cp == ' ')
+                {
+                  dp->flags |= FLAG_SPACE;
+                  cp++;
+                }
+              else if (*cp == '#')
+                {
+                  dp->flags |= FLAG_ALT;
+                  cp++;
+                }
+              else if (*cp == '0')
+                {
+                  dp->flags |= FLAG_ZERO;
+                  cp++;
+                }
+#if __GLIBC__ >= 2 && !defined __UCLIBC__
+              else if (*cp == 'I')
+                {
+                  dp->flags |= FLAG_LOCALIZED;
+                  cp++;
+                }
+#endif
+              else
+                break;
+            }
+
+          /* Parse the field width.  */
+          if (*cp == '*')
+            {
+              dp->width_start = cp;
+              cp++;
+              dp->width_end = cp;
+              if (max_width_length < 1)
+                max_width_length = 1;
+
+              /* Test for positional argument.  */
+              if (*cp >= '0' && *cp <= '9')
+                {
+                  const CHAR_T *np;
+
+                  for (np = cp; *np >= '0' && *np <= '9'; np++)
+                    ;
+                  if (*np == '$')
+                    {
+                      size_t n = 0;
+
+                      for (np = cp; *np >= '0' && *np <= '9'; np++)
+                        n = xsum (xtimes (n, 10), *np - '0');
+                      if (n == 0)
+                        /* Positional argument 0.  */
+                        goto error;
+                      if (size_overflow_p (n))
+                        /* n too large, would lead to out of memory later.  */
+                        goto error;
+                      dp->width_arg_index = n - 1;
+                      cp = np + 1;
+                    }
+                }
+              if (dp->width_arg_index == ARG_NONE)
+                {
+                  dp->width_arg_index = arg_posn++;
+                  if (dp->width_arg_index == ARG_NONE)
+                    /* arg_posn wrapped around.  */
+                    goto error;
+                }
+              REGISTER_ARG (dp->width_arg_index, TYPE_INT);
+            }
+          else if (*cp >= '0' && *cp <= '9')
+            {
+              size_t width_length;
+
+              dp->width_start = cp;
+              for (; *cp >= '0' && *cp <= '9'; cp++)
+                ;
+              dp->width_end = cp;
+              width_length = dp->width_end - dp->width_start;
+              if (max_width_length < width_length)
+                max_width_length = width_length;
+            }
+
+          /* Parse the precision.  */
+          if (*cp == '.')
+            {
+              cp++;
+              if (*cp == '*')
+                {
+                  dp->precision_start = cp - 1;
+                  cp++;
+                  dp->precision_end = cp;
+                  if (max_precision_length < 2)
+                    max_precision_length = 2;
+
+                  /* Test for positional argument.  */
+                  if (*cp >= '0' && *cp <= '9')
+                    {
+                      const CHAR_T *np;
+
+                      for (np = cp; *np >= '0' && *np <= '9'; np++)
+                        ;
+                      if (*np == '$')
+                        {
+                          size_t n = 0;
+
+                          for (np = cp; *np >= '0' && *np <= '9'; np++)
+                            n = xsum (xtimes (n, 10), *np - '0');
+                          if (n == 0)
+                            /* Positional argument 0.  */
+                            goto error;
+                          if (size_overflow_p (n))
+                            /* n too large, would lead to out of memory
+                               later.  */
+                            goto error;
+                          dp->precision_arg_index = n - 1;
+                          cp = np + 1;
+                        }
+                    }
+                  if (dp->precision_arg_index == ARG_NONE)
+                    {
+                      dp->precision_arg_index = arg_posn++;
+                      if (dp->precision_arg_index == ARG_NONE)
+                        /* arg_posn wrapped around.  */
+                        goto error;
+                    }
+                  REGISTER_ARG (dp->precision_arg_index, TYPE_INT);
+                }
+              else
+                {
+                  size_t precision_length;
+
+                  dp->precision_start = cp - 1;
+                  for (; *cp >= '0' && *cp <= '9'; cp++)
+                    ;
+                  dp->precision_end = cp;
+                  precision_length = dp->precision_end - dp->precision_start;
+                  if (max_precision_length < precision_length)
+                    max_precision_length = precision_length;
+                }
+            }
+
+          {
+            arg_type type;
+
+            /* Parse argument type/size specifiers.  */
+            {
+              int flags = 0;
+
+              for (;;)
+                {
+                  if (*cp == 'h')
+                    {
+                      flags |= (1 << (flags & 1));
+                      cp++;
+                    }
+                  else if (*cp == 'L')
+                    {
+                      flags |= 4;
+                      cp++;
+                    }
+                  else if (*cp == 'l')
+                    {
+                      flags += 8;
+                      cp++;
+                    }
+                  else if (*cp == 'j')
+                    {
+                      if (sizeof (intmax_t) > sizeof (long))
+                        {
+                          /* intmax_t = long long */
+                          flags += 16;
+                        }
+                      else if (sizeof (intmax_t) > sizeof (int))
+                        {
+                          /* intmax_t = long */
+                          flags += 8;
+                        }
+                      cp++;
+                    }
+                  else if (*cp == 'z' || *cp == 'Z')
+                    {
+                      /* 'z' is standardized in ISO C 99, but glibc uses 'Z'
+                         because the warning facility in gcc-2.95.2 understands
+                         only 'Z' (see gcc-2.95.2/gcc/c-common.c:1784).  */
+                      if (sizeof (size_t) > sizeof (long))
+                        {
+                          /* size_t = long long */
+                          flags += 16;
+                        }
+                      else if (sizeof (size_t) > sizeof (int))
+                        {
+                          /* size_t = long */
+                          flags += 8;
+                        }
+                      cp++;
+                    }
+                  else if (*cp == 't')
+                    {
+                      if (sizeof (ptrdiff_t) > sizeof (long))
+                        {
+                          /* ptrdiff_t = long long */
+                          flags += 16;
+                        }
+                      else if (sizeof (ptrdiff_t) > sizeof (int))
+                        {
+                          /* ptrdiff_t = long */
+                          flags += 8;
+                        }
+                      cp++;
+                    }
+#if defined __APPLE__ && defined __MACH__
+                  /* On Mac OS X 10.3, PRIdMAX is defined as "qd".
+                     We cannot change it to "lld" because PRIdMAX must also
+                     be understood by the system's printf routines.  */
+                  else if (*cp == 'q')
+                    {
+                      if (64 / 8 > sizeof (long))
+                        {
+                          /* int64_t = long long */
+                          flags += 16;
+                        }
+                      else
+                        {
+                          /* int64_t = long */
+                          flags += 8;
+                        }
+                      cp++;
+                    }
+#endif
+#if defined _WIN32 && ! defined __CYGWIN__
+                  /* On native Windows, PRIdMAX is defined as "I64d".
+                     We cannot change it to "lld" because PRIdMAX must also
+                     be understood by the system's printf routines.  */
+                  else if (*cp == 'I' && cp[1] == '6' && cp[2] == '4')
+                    {
+                      if (64 / 8 > sizeof (long))
+                        {
+                          /* __int64 = long long */
+                          flags += 16;
+                        }
+                      else
+                        {
+                          /* __int64 = long */
+                          flags += 8;
+                        }
+                      cp += 3;
+                    }
+#endif
+                  else
+                    break;
+                }
+
+              /* Read the conversion character.  */
+              c = *cp++;
+              switch (c)
+                {
+                case 'd': case 'i':
+#if HAVE_LONG_LONG_INT
+                  /* If 'long long' exists and is larger than 'long':  */
+                  if (flags >= 16 || (flags & 4))
+                    type = TYPE_LONGLONGINT;
+                  else
+#endif
+                  /* If 'long long' exists and is the same as 'long', we parse
+                     "lld" into TYPE_LONGINT.  */
+                  if (flags >= 8)
+                    type = TYPE_LONGINT;
+                  else if (flags & 2)
+                    type = TYPE_SCHAR;
+                  else if (flags & 1)
+                    type = TYPE_SHORT;
+                  else
+                    type = TYPE_INT;
+                  break;
+                case 'o': case 'u': case 'x': case 'X':
+#if HAVE_LONG_LONG_INT
+                  /* If 'long long' exists and is larger than 'long':  */
+                  if (flags >= 16 || (flags & 4))
+                    type = TYPE_ULONGLONGINT;
+                  else
+#endif
+                  /* If 'unsigned long long' exists and is the same as
+                     'unsigned long', we parse "llu" into TYPE_ULONGINT.  */
+                  if (flags >= 8)
+                    type = TYPE_ULONGINT;
+                  else if (flags & 2)
+                    type = TYPE_UCHAR;
+                  else if (flags & 1)
+                    type = TYPE_USHORT;
+                  else
+                    type = TYPE_UINT;
+                  break;
+                case 'f': case 'F': case 'e': case 'E': case 'g': case 'G':
+                case 'a': case 'A':
+                  if (flags >= 16 || (flags & 4))
+                    type = TYPE_LONGDOUBLE;
+                  else
+                    type = TYPE_DOUBLE;
+                  break;
+                case 'c':
+                  if (flags >= 8)
+#if HAVE_WINT_T
+                    type = TYPE_WIDE_CHAR;
+#else
+                    goto error;
+#endif
+                  else
+                    type = TYPE_CHAR;
+                  break;
+#if HAVE_WINT_T
+                case 'C':
+                  type = TYPE_WIDE_CHAR;
+                  c = 'c';
+                  break;
+#endif
+                case 's':
+                  if (flags >= 8)
+#if HAVE_WCHAR_T
+                    type = TYPE_WIDE_STRING;
+#else
+                    goto error;
+#endif
+                  else
+                    type = TYPE_STRING;
+                  break;
+#if HAVE_WCHAR_T
+                case 'S':
+                  type = TYPE_WIDE_STRING;
+                  c = 's';
+                  break;
+#endif
+                case 'p':
+                  type = TYPE_POINTER;
+                  break;
+                case 'n':
+#if HAVE_LONG_LONG_INT
+                  /* If 'long long' exists and is larger than 'long':  */
+                  if (flags >= 16 || (flags & 4))
+                    type = TYPE_COUNT_LONGLONGINT_POINTER;
+                  else
+#endif
+                  /* If 'long long' exists and is the same as 'long', we parse
+                     "lln" into TYPE_COUNT_LONGINT_POINTER.  */
+                  if (flags >= 8)
+                    type = TYPE_COUNT_LONGINT_POINTER;
+                  else if (flags & 2)
+                    type = TYPE_COUNT_SCHAR_POINTER;
+                  else if (flags & 1)
+                    type = TYPE_COUNT_SHORT_POINTER;
+                  else
+                    type = TYPE_COUNT_INT_POINTER;
+                  break;
+#if ENABLE_UNISTDIO
+                /* The unistdio extensions.  */
+                case 'U':
+                  if (flags >= 16)
+                    type = TYPE_U32_STRING;
+                  else if (flags >= 8)
+                    type = TYPE_U16_STRING;
+                  else
+                    type = TYPE_U8_STRING;
+                  break;
+#endif
+                case '%':
+                  type = TYPE_NONE;
+                  break;
+                default:
+                  /* Unknown conversion character.  */
+                  goto error;
+                }
+            }
+
+            if (type != TYPE_NONE)
+              {
+                dp->arg_index = arg_index;
+                if (dp->arg_index == ARG_NONE)
+                  {
+                    dp->arg_index = arg_posn++;
+                    if (dp->arg_index == ARG_NONE)
+                      /* arg_posn wrapped around.  */
+                      goto error;
+                  }
+                REGISTER_ARG (dp->arg_index, type);
+              }
+            dp->conversion = c;
+            dp->dir_end = cp;
+          }
+
+          d->count++;
+          if (d->count >= d_allocated)
+            {
+              size_t memory_size;
+              DIRECTIVE *memory;
+
+              d_allocated = xtimes (d_allocated, 2);
+              memory_size = xtimes (d_allocated, sizeof (DIRECTIVE));
+              if (size_overflow_p (memory_size))
+                /* Overflow, would lead to out of memory.  */
+                goto out_of_memory;
+              memory = (DIRECTIVE *) (d->dir != d->direct_alloc_dir
+                                      ? realloc (d->dir, memory_size)
+                                      : malloc (memory_size));
+              if (memory == NULL)
+                /* Out of memory.  */
+                goto out_of_memory;
+              if (d->dir == d->direct_alloc_dir)
+                memcpy (memory, d->dir, d->count * sizeof (DIRECTIVE));
+              d->dir = memory;
+            }
+        }
+#if CHAR_T_ONLY_ASCII
+      else if (!c_isascii (c))
+        {
+          /* Non-ASCII character.  Not supported.  */
+          goto error;
+        }
+#endif
+    }
+  d->dir[d->count].dir_start = cp;
+
+  d->max_width_length = max_width_length;
+  d->max_precision_length = max_precision_length;
+  return 0;
+
+error:
+  if (a->arg != a->direct_alloc_arg)
+    free (a->arg);
+  if (d->dir != d->direct_alloc_dir)
+    free (d->dir);
+  errno = EINVAL;
+  return -1;
+
+out_of_memory:
+  if (a->arg != a->direct_alloc_arg)
+    free (a->arg);
+  if (d->dir != d->direct_alloc_dir)
+    free (d->dir);
+  errno = ENOMEM;
+  return -1;
+}
+
+#undef PRINTF_PARSE
+#undef DIRECTIVES
+#undef DIRECTIVE
+#undef CHAR_T_ONLY_ASCII
+#undef CHAR_T
diff --git a/lib/printf-parse.h b/lib/printf-parse.h
new file mode 100644 (file)
index 0000000..16d817e
--- /dev/null
@@ -0,0 +1,193 @@
+/* Parse printf format string.
+   Copyright (C) 1999, 2002-2003, 2005, 2007, 2010-2018 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, 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 <https://www.gnu.org/licenses/>.  */
+
+#ifndef _PRINTF_PARSE_H
+#define _PRINTF_PARSE_H
+
+/* This file can be parametrized with the following macros:
+     ENABLE_UNISTDIO    Set to 1 to enable the unistdio extensions.
+     STATIC             Set to 'static' to declare the function static.  */
+
+#if HAVE_FEATURES_H
+# include <features.h> /* for __GLIBC__, __UCLIBC__ */
+#endif
+
+#include "printf-args.h"
+
+
+/* Flags */
+#define FLAG_GROUP       1      /* ' flag */
+#define FLAG_LEFT        2      /* - flag */
+#define FLAG_SHOWSIGN    4      /* + flag */
+#define FLAG_SPACE       8      /* space flag */
+#define FLAG_ALT        16      /* # flag */
+#define FLAG_ZERO       32
+#if __GLIBC__ >= 2 && !defined __UCLIBC__
+# define FLAG_LOCALIZED 64      /* I flag, uses localized digits */
+#endif
+
+/* arg_index value indicating that no argument is consumed.  */
+#define ARG_NONE        (~(size_t)0)
+
+/* xxx_directive: A parsed directive.
+   xxx_directives: A parsed format string.  */
+
+/* Number of directly allocated directives (no malloc() needed).  */
+#define N_DIRECT_ALLOC_DIRECTIVES 7
+
+/* A parsed directive.  */
+typedef struct
+{
+  const char* dir_start;
+  const char* dir_end;
+  int flags;
+  const char* width_start;
+  const char* width_end;
+  size_t width_arg_index;
+  const char* precision_start;
+  const char* precision_end;
+  size_t precision_arg_index;
+  char conversion; /* d i o u x X f F e E g G a A c s p n U % but not C S */
+  size_t arg_index;
+}
+char_directive;
+
+/* A parsed format string.  */
+typedef struct
+{
+  size_t count;
+  char_directive *dir;
+  size_t max_width_length;
+  size_t max_precision_length;
+  char_directive direct_alloc_dir[N_DIRECT_ALLOC_DIRECTIVES];
+}
+char_directives;
+
+#if ENABLE_UNISTDIO
+
+/* A parsed directive.  */
+typedef struct
+{
+  const uint8_t* dir_start;
+  const uint8_t* dir_end;
+  int flags;
+  const uint8_t* width_start;
+  const uint8_t* width_end;
+  size_t width_arg_index;
+  const uint8_t* precision_start;
+  const uint8_t* precision_end;
+  size_t precision_arg_index;
+  uint8_t conversion; /* d i o u x X f F e E g G a A c s p n U % but not C S */
+  size_t arg_index;
+}
+u8_directive;
+
+/* A parsed format string.  */
+typedef struct
+{
+  size_t count;
+  u8_directive *dir;
+  size_t max_width_length;
+  size_t max_precision_length;
+  u8_directive direct_alloc_dir[N_DIRECT_ALLOC_DIRECTIVES];
+}
+u8_directives;
+
+/* A parsed directive.  */
+typedef struct
+{
+  const uint16_t* dir_start;
+  const uint16_t* dir_end;
+  int flags;
+  const uint16_t* width_start;
+  const uint16_t* width_end;
+  size_t width_arg_index;
+  const uint16_t* precision_start;
+  const uint16_t* precision_end;
+  size_t precision_arg_index;
+  uint16_t conversion; /* d i o u x X f F e E g G a A c s p n U % but not C S */
+  size_t arg_index;
+}
+u16_directive;
+
+/* A parsed format string.  */
+typedef struct
+{
+  size_t count;
+  u16_directive *dir;
+  size_t max_width_length;
+  size_t max_precision_length;
+  u16_directive direct_alloc_dir[N_DIRECT_ALLOC_DIRECTIVES];
+}
+u16_directives;
+
+/* A parsed directive.  */
+typedef struct
+{
+  const uint32_t* dir_start;
+  const uint32_t* dir_end;
+  int flags;
+  const uint32_t* width_start;
+  const uint32_t* width_end;
+  size_t width_arg_index;
+  const uint32_t* precision_start;
+  const uint32_t* precision_end;
+  size_t precision_arg_index;
+  uint32_t conversion; /* d i o u x X f F e E g G a A c s p n U % but not C S */
+  size_t arg_index;
+}
+u32_directive;
+
+/* A parsed format string.  */
+typedef struct
+{
+  size_t count;
+  u32_directive *dir;
+  size_t max_width_length;
+  size_t max_precision_length;
+  u32_directive direct_alloc_dir[N_DIRECT_ALLOC_DIRECTIVES];
+}
+u32_directives;
+
+#endif
+
+
+/* Parses the format string.  Fills in the number N of directives, and fills
+   in directives[0], ..., directives[N-1], and sets directives[N].dir_start
+   to the end of the format string.  Also fills in the arg_type fields of the
+   arguments and the needed count of arguments.  */
+#if ENABLE_UNISTDIO
+extern int
+       ulc_printf_parse (const char *format, char_directives *d, arguments *a);
+extern int
+       u8_printf_parse (const uint8_t *format, u8_directives *d, arguments *a);
+extern int
+       u16_printf_parse (const uint16_t *format, u16_directives *d,
+                         arguments *a);
+extern int
+       u32_printf_parse (const uint32_t *format, u32_directives *d,
+                         arguments *a);
+#else
+# ifdef STATIC
+STATIC
+# else
+extern
+# endif
+int printf_parse (const char *format, char_directives *d, arguments *a);
+#endif
+
+#endif /* _PRINTF_PARSE_H */
diff --git a/lib/signbitd.c b/lib/signbitd.c
new file mode 100644 (file)
index 0000000..c1bec94
--- /dev/null
@@ -0,0 +1,64 @@
+/* signbit() macro: Determine the sign bit of a floating-point number.
+   Copyright (C) 2007-2018 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 <https://www.gnu.org/licenses/>.  */
+
+#include <config.h>
+
+/* Specification.  */
+#include <math.h>
+
+#include <string.h>
+#include "isnand-nolibm.h"
+#include "float+.h"
+
+#ifdef gl_signbitd_OPTIMIZED_MACRO
+# undef gl_signbitd
+#endif
+
+int
+gl_signbitd (double arg)
+{
+#if defined DBL_SIGNBIT_WORD && defined DBL_SIGNBIT_BIT
+  /* The use of a union to extract the bits of the representation of a
+     'long double' is safe in practice, despite of the "aliasing rules" of
+     C99, because the GCC docs say
+       "Even with '-fstrict-aliasing', type-punning is allowed, provided the
+        memory is accessed through the union type."
+     and similarly for other compilers.  */
+# define NWORDS \
+    ((sizeof (double) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
+  union { double value; unsigned int word[NWORDS]; } m;
+  m.value = arg;
+  return (m.word[DBL_SIGNBIT_WORD] >> DBL_SIGNBIT_BIT) & 1;
+#elif HAVE_COPYSIGN_IN_LIBC
+  return copysign (1.0, arg) < 0;
+#else
+  /* This does not do the right thing for NaN, but this is irrelevant for
+     most use cases.  */
+  if (isnand (arg))
+    return 0;
+  if (arg < 0.0)
+    return 1;
+  else if (arg == 0.0)
+    {
+      /* Distinguish 0.0 and -0.0.  */
+      static double plus_zero = 0.0;
+      double arg_mem = arg;
+      return (memcmp (&plus_zero, &arg_mem, SIZEOF_DBL) != 0);
+    }
+  else
+    return 0;
+#endif
+}
diff --git a/lib/signbitf.c b/lib/signbitf.c
new file mode 100644 (file)
index 0000000..de28325
--- /dev/null
@@ -0,0 +1,64 @@
+/* signbit() macro: Determine the sign bit of a floating-point number.
+   Copyright (C) 2007, 2009-2018 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 <https://www.gnu.org/licenses/>.  */
+
+#include <config.h>
+
+/* Specification.  */
+#include <math.h>
+
+#include <string.h>
+#include "isnanf-nolibm.h"
+#include "float+.h"
+
+#ifdef gl_signbitf_OPTIMIZED_MACRO
+# undef gl_signbitf
+#endif
+
+int
+gl_signbitf (float arg)
+{
+#if defined FLT_SIGNBIT_WORD && defined FLT_SIGNBIT_BIT
+  /* The use of a union to extract the bits of the representation of a
+     'long double' is safe in practice, despite of the "aliasing rules" of
+     C99, because the GCC docs say
+       "Even with '-fstrict-aliasing', type-punning is allowed, provided the
+        memory is accessed through the union type."
+     and similarly for other compilers.  */
+# define NWORDS \
+    ((sizeof (float) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
+  union { float value; unsigned int word[NWORDS]; } m;
+  m.value = arg;
+  return (m.word[FLT_SIGNBIT_WORD] >> FLT_SIGNBIT_BIT) & 1;
+#elif HAVE_COPYSIGNF_IN_LIBC
+  return copysignf (1.0f, arg) < 0;
+#else
+  /* This does not do the right thing for NaN, but this is irrelevant for
+     most use cases.  */
+  if (isnanf (arg))
+    return 0;
+  if (arg < 0.0f)
+    return 1;
+  else if (arg == 0.0f)
+    {
+      /* Distinguish 0.0f and -0.0f.  */
+      static float plus_zero = 0.0f;
+      float arg_mem = arg;
+      return (memcmp (&plus_zero, &arg_mem, SIZEOF_FLT) != 0);
+    }
+  else
+    return 0;
+#endif
+}
diff --git a/lib/signbitl.c b/lib/signbitl.c
new file mode 100644 (file)
index 0000000..83760e4
--- /dev/null
@@ -0,0 +1,64 @@
+/* signbit() macro: Determine the sign bit of a floating-point number.
+   Copyright (C) 2007, 2009-2018 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 <https://www.gnu.org/licenses/>.  */
+
+#include <config.h>
+
+/* Specification.  */
+#include <math.h>
+
+#include <string.h>
+#include "isnanl-nolibm.h"
+#include "float+.h"
+
+#ifdef gl_signbitl_OPTIMIZED_MACRO
+# undef gl_signbitl
+#endif
+
+int
+gl_signbitl (long double arg)
+{
+#if defined LDBL_SIGNBIT_WORD && defined LDBL_SIGNBIT_BIT
+  /* The use of a union to extract the bits of the representation of a
+     'long double' is safe in practice, despite of the "aliasing rules" of
+     C99, because the GCC docs say
+       "Even with '-fstrict-aliasing', type-punning is allowed, provided the
+        memory is accessed through the union type."
+     and similarly for other compilers.  */
+# define NWORDS \
+    ((sizeof (long double) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
+  union { long double value; unsigned int word[NWORDS]; } m;
+  m.value = arg;
+  return (m.word[LDBL_SIGNBIT_WORD] >> LDBL_SIGNBIT_BIT) & 1;
+#elif HAVE_COPYSIGNL_IN_LIBC
+  return copysignl (1.0L, arg) < 0;
+#else
+  /* This does not do the right thing for NaN, but this is irrelevant for
+     most use cases.  */
+  if (isnanl (arg))
+    return 0;
+  if (arg < 0.0L)
+    return 1;
+  else if (arg == 0.0L)
+    {
+      /* Distinguish 0.0L and -0.0L.  */
+      static long double plus_zero = 0.0L;
+      long double arg_mem = arg;
+      return (memcmp (&plus_zero, &arg_mem, SIZEOF_LDBL) != 0);
+    }
+  else
+    return 0;
+#endif
+}
diff --git a/lib/size_max.h b/lib/size_max.h
new file mode 100644 (file)
index 0000000..00500b5
--- /dev/null
@@ -0,0 +1,30 @@
+/* size_max.h -- declare SIZE_MAX through system headers
+   Copyright (C) 2005-2006, 2009-2018 Free Software Foundation, Inc.
+   Written by Simon Josefsson.
+
+   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, 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 <https://www.gnu.org/licenses/>.  */
+
+#ifndef GNULIB_SIZE_MAX_H
+#define GNULIB_SIZE_MAX_H
+
+/* Get SIZE_MAX declaration on systems like Solaris 7/8/9.  */
+# include <limits.h>
+/* Get SIZE_MAX declaration on systems like glibc 2.  */
+# if HAVE_STDINT_H
+#  include <stdint.h>
+# endif
+/* On systems where these include files don't define it, SIZE_MAX is defined
+   in config.h.  */
+
+#endif /* GNULIB_SIZE_MAX_H */
diff --git a/lib/snprintf.c b/lib/snprintf.c
new file mode 100644 (file)
index 0000000..8a9971b
--- /dev/null
@@ -0,0 +1,71 @@
+/* Formatted output to strings.
+   Copyright (C) 2004, 2006-2018 Free Software Foundation, Inc.
+   Written by Simon Josefsson and Paul Eggert.
+
+   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, 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 <https://www.gnu.org/licenses/>.  */
+
+#include <config.h>
+
+/* Specification.  */
+#include <stdio.h>
+
+#include <errno.h>
+#include <limits.h>
+#include <stdarg.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "vasnprintf.h"
+
+/* Print formatted output to string STR.  Similar to sprintf, but
+   additional length SIZE limit how much is written into STR.  Returns
+   string length of formatted string (which may be larger than SIZE).
+   STR may be NULL, in which case nothing will be written.  On error,
+   return a negative value.  */
+int
+snprintf (char *str, size_t size, const char *format, ...)
+{
+  char *output;
+  size_t len;
+  size_t lenbuf = size;
+  va_list args;
+
+  va_start (args, format);
+  output = vasnprintf (str, &lenbuf, format, args);
+  len = lenbuf;
+  va_end (args);
+
+  if (!output)
+    return -1;
+
+  if (output != str)
+    {
+      if (size)
+        {
+          size_t pruned_len = (len < size ? len : size - 1);
+          memcpy (str, output, pruned_len);
+          str[pruned_len] = '\0';
+        }
+
+      free (output);
+    }
+
+  if (INT_MAX < len)
+    {
+      errno = EOVERFLOW;
+      return -1;
+    }
+
+  return len;
+}
similarity index 59%
rename from src/libs/gnulib/lib/stddef.in.h
rename to lib/stddef.in.h
index 11b58be..8329a9b 100644 (file)
@@ -1,10 +1,10 @@
 /* A substitute for POSIX 2008 <stddef.h>, for platforms that have issues.
 
-   Copyright (C) 2009-2014 Free Software Foundation, Inc.
+   Copyright (C) 2009-2018 Free Software Foundation, Inc.
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
+   the Free Software Foundation; either version 3, or (at your option)
    any later version.
 
    This program is distributed in the hope that it will be useful,
@@ -13,7 +13,7 @@
    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 <http://www.gnu.org/licenses/>.  */
+   along with this program; if not, see <https://www.gnu.org/licenses/>.  */
 
 /* Written by Eric Blake.  */
 
@@ -39,7 +39,6 @@
 
 # if !(defined _@GUARD_PREFIX@_STDDEF_H && defined _GL_STDDEF_WINT_T)
 #  ifdef __need_wint_t
-#   undef _@GUARD_PREFIX@_STDDEF_H
 #   define _GL_STDDEF_WINT_T
 #  endif
 #  @INCLUDE_NEXT@ @NEXT_STDDEF_H@
 
 #  @INCLUDE_NEXT@ @NEXT_STDDEF_H@
 
-#  ifndef _@GUARD_PREFIX@_STDDEF_H
-#   define _@GUARD_PREFIX@_STDDEF_H
-
 /* On NetBSD 5.0, the definition of NULL lacks proper parentheses.  */
-#if @REPLACE_NULL@
-# undef NULL
-# ifdef __cplusplus
+#  if (@REPLACE_NULL@ \
+       && (!defined _@GUARD_PREFIX@_STDDEF_H || defined _GL_STDDEF_WINT_T))
+#   undef NULL
+#   ifdef __cplusplus
    /* ISO C++ says that the macro NULL must expand to an integer constant
       expression, hence '((void *) 0)' is not allowed in C++.  */
-#  if __GNUG__ >= 3
+#    if __GNUG__ >= 3
     /* GNU C++ has a __null macro that behaves like an integer ('int' or
        'long') but has the same size as a pointer.  Use that, to avoid
        warnings.  */
-#   define NULL __null
-#  else
-#   define NULL 0L
+#     define NULL __null
+#    else
+#     define NULL 0L
+#    endif
+#   else
+#    define NULL ((void *) 0)
+#   endif
 #  endif
-# else
-#  define NULL ((void *) 0)
-# endif
-#endif
+
+#  ifndef _@GUARD_PREFIX@_STDDEF_H
+#   define _@GUARD_PREFIX@_STDDEF_H
 
 /* Some platforms lack wchar_t.  */
 #if !@HAVE_WCHAR_T@
 # define wchar_t int
 #endif
 
+/* Some platforms lack max_align_t.  The check for _GCC_MAX_ALIGN_T is
+   a hack in case the configure-time test was done with g++ even though
+   we are currently compiling with gcc.  */
+#if ! (@HAVE_MAX_ALIGN_T@ || defined _GCC_MAX_ALIGN_T)
+# if !GNULIB_defined_max_align_t
+/* On the x86, the maximum storage alignment of double, long, etc. is 4,
+   but GCC's C11 ABI for x86 says that max_align_t has an alignment of 8,
+   and the C11 standard allows this.  Work around this problem by
+   using __alignof__ (which returns 8 for double) rather than _Alignof
+   (which returns 4), and align each union member accordingly.  */
+#  ifdef __GNUC__
+#   define _GL_STDDEF_ALIGNAS(type) \
+      __attribute__ ((__aligned__ (__alignof__ (type))))
+#  else
+#   define _GL_STDDEF_ALIGNAS(type) /* */
+#  endif
+typedef union
+{
+  char *__p _GL_STDDEF_ALIGNAS (char *);
+  double __d _GL_STDDEF_ALIGNAS (double);
+  long double __ld _GL_STDDEF_ALIGNAS (long double);
+  long int __i _GL_STDDEF_ALIGNAS (long int);
+} rpl_max_align_t;
+#  define max_align_t rpl_max_align_t
+#  define GNULIB_defined_max_align_t 1
+# endif
+#endif
+
 #  endif /* _@GUARD_PREFIX@_STDDEF_H */
 # endif /* _@GUARD_PREFIX@_STDDEF_H */
 #endif /* __need_XXX */
diff --git a/lib/stdint.in.h b/lib/stdint.in.h
new file mode 100644 (file)
index 0000000..94e7c81
--- /dev/null
@@ -0,0 +1,726 @@
+/* Copyright (C) 2001-2002, 2004-2018 Free Software Foundation, Inc.
+   Written by Paul Eggert, Bruno Haible, Sam Steingold, Peter Burwood.
+   This file is part of gnulib.
+
+   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, 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 <https://www.gnu.org/licenses/>.  */
+
+/*
+ * ISO C 99 <stdint.h> for platforms that lack it.
+ * <http://www.opengroup.org/susv3xbd/stdint.h.html>
+ */
+
+#ifndef _@GUARD_PREFIX@_STDINT_H
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+@PRAGMA_COLUMNS@
+
+/* When including a system file that in turn includes <inttypes.h>,
+   use the system <inttypes.h>, not our substitute.  This avoids
+   problems with (for example) VMS, whose <sys/bitypes.h> includes
+   <inttypes.h>.  */
+#define _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H
+
+/* On Android (Bionic libc), <sys/types.h> includes this file before
+   having defined 'time_t'.  Therefore in this case avoid including
+   other system header files; just include the system's <stdint.h>.
+   Ideally we should test __BIONIC__ here, but it is only defined after
+   <sys/cdefs.h> has been included; hence test __ANDROID__ instead.  */
+#if defined __ANDROID__ && defined _GL_INCLUDING_SYS_TYPES_H
+# @INCLUDE_NEXT@ @NEXT_STDINT_H@
+#else
+
+/* Get those types that are already defined in other system include
+   files, so that we can "#define int8_t signed char" below without
+   worrying about a later system include file containing a "typedef
+   signed char int8_t;" that will get messed up by our macro.  Our
+   macros should all be consistent with the system versions, except
+   for the "fast" types and macros, which we recommend against using
+   in public interfaces due to compiler differences.  */
+
+#if @HAVE_STDINT_H@
+# if defined __sgi && ! defined __c99
+   /* Bypass IRIX's <stdint.h> if in C89 mode, since it merely annoys users
+      with "This header file is to be used only for c99 mode compilations"
+      diagnostics.  */
+#  define __STDINT_H__
+# endif
+
+  /* Some pre-C++11 <stdint.h> implementations need this.  */
+# ifdef __cplusplus
+#  ifndef __STDC_CONSTANT_MACROS
+#   define __STDC_CONSTANT_MACROS 1
+#  endif
+#  ifndef __STDC_LIMIT_MACROS
+#   define __STDC_LIMIT_MACROS 1
+#  endif
+# endif
+
+  /* Other systems may have an incomplete or buggy <stdint.h>.
+     Include it before <inttypes.h>, since any "#include <stdint.h>"
+     in <inttypes.h> would reinclude us, skipping our contents because
+     _@GUARD_PREFIX@_STDINT_H is defined.
+     The include_next requires a split double-inclusion guard.  */
+# @INCLUDE_NEXT@ @NEXT_STDINT_H@
+#endif
+
+#if ! defined _@GUARD_PREFIX@_STDINT_H && ! defined _GL_JUST_INCLUDE_SYSTEM_STDINT_H
+#define _@GUARD_PREFIX@_STDINT_H
+
+/* Get SCHAR_MIN, SCHAR_MAX, UCHAR_MAX, INT_MIN, INT_MAX,
+   LONG_MIN, LONG_MAX, ULONG_MAX, _GL_INTEGER_WIDTH.  */
+#include <limits.h>
+
+/* Override WINT_MIN and WINT_MAX if gnulib's <wchar.h> or <wctype.h> overrides
+   wint_t.  */
+#if @GNULIB_OVERRIDES_WINT_T@
+# undef WINT_MIN
+# undef WINT_MAX
+# define WINT_MIN 0x0U
+# define WINT_MAX 0xffffffffU
+#endif
+
+#if ! @HAVE_C99_STDINT_H@
+
+/* <sys/types.h> defines some of the stdint.h types as well, on glibc,
+   IRIX 6.5, and OpenBSD 3.8 (via <machine/types.h>).
+   AIX 5.2 <sys/types.h> isn't needed and causes troubles.
+   Mac OS X 10.4.6 <sys/types.h> includes <stdint.h> (which is us), but
+   relies on the system <stdint.h> definitions, so include
+   <sys/types.h> after @NEXT_STDINT_H@.  */
+# if @HAVE_SYS_TYPES_H@ && ! defined _AIX
+#  include <sys/types.h>
+# endif
+
+# if @HAVE_INTTYPES_H@
+  /* In OpenBSD 3.8, <inttypes.h> includes <machine/types.h>, which defines
+     int{8,16,32,64}_t, uint{8,16,32,64}_t and __BIT_TYPES_DEFINED__.
+     <inttypes.h> also defines intptr_t and uintptr_t.  */
+#  include <inttypes.h>
+# elif @HAVE_SYS_INTTYPES_H@
+  /* Solaris 7 <sys/inttypes.h> has the types except the *_fast*_t types, and
+     the macros except for *_FAST*_*, INTPTR_MIN, PTRDIFF_MIN, PTRDIFF_MAX.  */
+#  include <sys/inttypes.h>
+# endif
+
+# if @HAVE_SYS_BITYPES_H@ && ! defined __BIT_TYPES_DEFINED__
+  /* Linux libc4 >= 4.6.7 and libc5 have a <sys/bitypes.h> that defines
+     int{8,16,32,64}_t and __BIT_TYPES_DEFINED__.  In libc5 >= 5.2.2 it is
+     included by <sys/types.h>.  */
+#  include <sys/bitypes.h>
+# endif
+
+# undef _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H
+
+/* Minimum and maximum values for an integer type under the usual assumption.
+   Return an unspecified value if BITS == 0, adding a check to pacify
+   picky compilers.  */
+
+/* These are separate macros, because if you try to merge these macros into
+   a single one, HP-UX cc rejects the resulting expression in constant
+   expressions.  */
+# define _STDINT_UNSIGNED_MIN(bits, zero) \
+    (zero)
+# define _STDINT_SIGNED_MIN(bits, zero) \
+    (~ _STDINT_MAX (1, bits, zero))
+
+# define _STDINT_MAX(signed, bits, zero) \
+    (((((zero) + 1) << ((bits) ? (bits) - 1 - (signed) : 0)) - 1) * 2 + 1)
+
+#if !GNULIB_defined_stdint_types
+
+/* 7.18.1.1. Exact-width integer types */
+
+/* Here we assume a standard architecture where the hardware integer
+   types have 8, 16, 32, optionally 64 bits.  */
+
+# undef int8_t
+# undef uint8_t
+typedef signed char gl_int8_t;
+typedef unsigned char gl_uint8_t;
+# define int8_t gl_int8_t
+# define uint8_t gl_uint8_t
+
+# undef int16_t
+# undef uint16_t
+typedef short int gl_int16_t;
+typedef unsigned short int gl_uint16_t;
+# define int16_t gl_int16_t
+# define uint16_t gl_uint16_t
+
+# undef int32_t
+# undef uint32_t
+typedef int gl_int32_t;
+typedef unsigned int gl_uint32_t;
+# define int32_t gl_int32_t
+# define uint32_t gl_uint32_t
+
+/* If the system defines INT64_MAX, assume int64_t works.  That way,
+   if the underlying platform defines int64_t to be a 64-bit long long
+   int, the code below won't mistakenly define it to be a 64-bit long
+   int, which would mess up C++ name mangling.  We must use #ifdef
+   rather than #if, to avoid an error with HP-UX 10.20 cc.  */
+
+# ifdef INT64_MAX
+#  define GL_INT64_T
+# else
+/* Do not undefine int64_t if gnulib is not being used with 64-bit
+   types, since otherwise it breaks platforms like Tandem/NSK.  */
+#  if LONG_MAX >> 31 >> 31 == 1
+#   undef int64_t
+typedef long int gl_int64_t;
+#   define int64_t gl_int64_t
+#   define GL_INT64_T
+#  elif defined _MSC_VER
+#   undef int64_t
+typedef __int64 gl_int64_t;
+#   define int64_t gl_int64_t
+#   define GL_INT64_T
+#  elif @HAVE_LONG_LONG_INT@
+#   undef int64_t
+typedef long long int gl_int64_t;
+#   define int64_t gl_int64_t
+#   define GL_INT64_T
+#  endif
+# endif
+
+# ifdef UINT64_MAX
+#  define GL_UINT64_T
+# else
+#  if ULONG_MAX >> 31 >> 31 >> 1 == 1
+#   undef uint64_t
+typedef unsigned long int gl_uint64_t;
+#   define uint64_t gl_uint64_t
+#   define GL_UINT64_T
+#  elif defined _MSC_VER
+#   undef uint64_t
+typedef unsigned __int64 gl_uint64_t;
+#   define uint64_t gl_uint64_t
+#   define GL_UINT64_T
+#  elif @HAVE_UNSIGNED_LONG_LONG_INT@
+#   undef uint64_t
+typedef unsigned long long int gl_uint64_t;
+#   define uint64_t gl_uint64_t
+#   define GL_UINT64_T
+#  endif
+# endif
+
+/* Avoid collision with Solaris 2.5.1 <pthread.h> etc.  */
+# define _UINT8_T
+# define _UINT32_T
+# define _UINT64_T
+
+
+/* 7.18.1.2. Minimum-width integer types */
+
+/* Here we assume a standard architecture where the hardware integer
+   types have 8, 16, 32, optionally 64 bits. Therefore the leastN_t types
+   are the same as the corresponding N_t types.  */
+
+# undef int_least8_t
+# undef uint_least8_t
+# undef int_least16_t
+# undef uint_least16_t
+# undef int_least32_t
+# undef uint_least32_t
+# undef int_least64_t
+# undef uint_least64_t
+# define int_least8_t int8_t
+# define uint_least8_t uint8_t
+# define int_least16_t int16_t
+# define uint_least16_t uint16_t
+# define int_least32_t int32_t
+# define uint_least32_t uint32_t
+# ifdef GL_INT64_T
+#  define int_least64_t int64_t
+# endif
+# ifdef GL_UINT64_T
+#  define uint_least64_t uint64_t
+# endif
+
+/* 7.18.1.3. Fastest minimum-width integer types */
+
+/* Note: Other <stdint.h> substitutes may define these types differently.
+   It is not recommended to use these types in public header files. */
+
+/* Here we assume a standard architecture where the hardware integer
+   types have 8, 16, 32, optionally 64 bits. Therefore the fastN_t types
+   are taken from the same list of types.  The following code normally
+   uses types consistent with glibc, as that lessens the chance of
+   incompatibility with older GNU hosts.  */
+
+# undef int_fast8_t
+# undef uint_fast8_t
+# undef int_fast16_t
+# undef uint_fast16_t
+# undef int_fast32_t
+# undef uint_fast32_t
+# undef int_fast64_t
+# undef uint_fast64_t
+typedef signed char gl_int_fast8_t;
+typedef unsigned char gl_uint_fast8_t;
+
+# ifdef __sun
+/* Define types compatible with SunOS 5.10, so that code compiled under
+   earlier SunOS versions works with code compiled under SunOS 5.10.  */
+typedef int gl_int_fast32_t;
+typedef unsigned int gl_uint_fast32_t;
+# else
+typedef long int gl_int_fast32_t;
+typedef unsigned long int gl_uint_fast32_t;
+# endif
+typedef gl_int_fast32_t gl_int_fast16_t;
+typedef gl_uint_fast32_t gl_uint_fast16_t;
+
+# define int_fast8_t gl_int_fast8_t
+# define uint_fast8_t gl_uint_fast8_t
+# define int_fast16_t gl_int_fast16_t
+# define uint_fast16_t gl_uint_fast16_t
+# define int_fast32_t gl_int_fast32_t
+# define uint_fast32_t gl_uint_fast32_t
+# ifdef GL_INT64_T
+#  define int_fast64_t int64_t
+# endif
+# ifdef GL_UINT64_T
+#  define uint_fast64_t uint64_t
+# endif
+
+/* 7.18.1.4. Integer types capable of holding object pointers */
+
+/* kLIBC's stdint.h defines _INTPTR_T_DECLARED and needs its own
+   definitions of intptr_t and uintptr_t (which use int and unsigned)
+   to avoid clashes with declarations of system functions like sbrk.  */
+# ifndef _INTPTR_T_DECLARED
+# undef intptr_t
+# undef uintptr_t
+typedef long int gl_intptr_t;
+typedef unsigned long int gl_uintptr_t;
+# define intptr_t gl_intptr_t
+# define uintptr_t gl_uintptr_t
+# endif
+
+/* 7.18.1.5. Greatest-width integer types */
+
+/* Note: These types are compiler dependent. It may be unwise to use them in
+   public header files. */
+
+/* If the system defines INTMAX_MAX, assume that intmax_t works, and
+   similarly for UINTMAX_MAX and uintmax_t.  This avoids problems with
+   assuming one type where another is used by the system.  */
+
+# ifndef INTMAX_MAX
+#  undef INTMAX_C
+#  undef intmax_t
+#  if @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1
+typedef long long int gl_intmax_t;
+#   define intmax_t gl_intmax_t
+#  elif defined GL_INT64_T
+#   define intmax_t int64_t
+#  else
+typedef long int gl_intmax_t;
+#   define intmax_t gl_intmax_t
+#  endif
+# endif
+
+# ifndef UINTMAX_MAX
+#  undef UINTMAX_C
+#  undef uintmax_t
+#  if @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1
+typedef unsigned long long int gl_uintmax_t;
+#   define uintmax_t gl_uintmax_t
+#  elif defined GL_UINT64_T
+#   define uintmax_t uint64_t
+#  else
+typedef unsigned long int gl_uintmax_t;
+#   define uintmax_t gl_uintmax_t
+#  endif
+# endif
+
+/* Verify that intmax_t and uintmax_t have the same size.  Too much code
+   breaks if this is not the case.  If this check fails, the reason is likely
+   to be found in the autoconf macros.  */
+typedef int _verify_intmax_size[sizeof (intmax_t) == sizeof (uintmax_t)
+                                ? 1 : -1];
+
+# define GNULIB_defined_stdint_types 1
+# endif /* !GNULIB_defined_stdint_types */
+
+/* 7.18.2. Limits of specified-width integer types */
+
+/* 7.18.2.1. Limits of exact-width integer types */
+
+/* Here we assume a standard architecture where the hardware integer
+   types have 8, 16, 32, optionally 64 bits.  */
+
+# undef INT8_MIN
+# undef INT8_MAX
+# undef UINT8_MAX
+# define INT8_MIN  (~ INT8_MAX)
+# define INT8_MAX  127
+# define UINT8_MAX  255
+
+# undef INT16_MIN
+# undef INT16_MAX
+# undef UINT16_MAX
+# define INT16_MIN  (~ INT16_MAX)
+# define INT16_MAX  32767
+# define UINT16_MAX  65535
+
+# undef INT32_MIN
+# undef INT32_MAX
+# undef UINT32_MAX
+# define INT32_MIN  (~ INT32_MAX)
+# define INT32_MAX  2147483647
+# define UINT32_MAX  4294967295U
+
+# if defined GL_INT64_T && ! defined INT64_MAX
+/* Prefer (- INTMAX_C (1) << 63) over (~ INT64_MAX) because SunPRO C 5.0
+   evaluates the latter incorrectly in preprocessor expressions.  */
+#  define INT64_MIN  (- INTMAX_C (1) << 63)
+#  define INT64_MAX  INTMAX_C (9223372036854775807)
+# endif
+
+# if defined GL_UINT64_T && ! defined UINT64_MAX
+#  define UINT64_MAX  UINTMAX_C (18446744073709551615)
+# endif
+
+/* 7.18.2.2. Limits of minimum-width integer types */
+
+/* Here we assume a standard architecture where the hardware integer
+   types have 8, 16, 32, optionally 64 bits. Therefore the leastN_t types
+   are the same as the corresponding N_t types.  */
+
+# undef INT_LEAST8_MIN
+# undef INT_LEAST8_MAX
+# undef UINT_LEAST8_MAX
+# define INT_LEAST8_MIN  INT8_MIN
+# define INT_LEAST8_MAX  INT8_MAX
+# define UINT_LEAST8_MAX  UINT8_MAX
+
+# undef INT_LEAST16_MIN
+# undef INT_LEAST16_MAX
+# undef UINT_LEAST16_MAX
+# define INT_LEAST16_MIN  INT16_MIN
+# define INT_LEAST16_MAX  INT16_MAX
+# define UINT_LEAST16_MAX  UINT16_MAX
+
+# undef INT_LEAST32_MIN
+# undef INT_LEAST32_MAX
+# undef UINT_LEAST32_MAX
+# define INT_LEAST32_MIN  INT32_MIN
+# define INT_LEAST32_MAX  INT32_MAX
+# define UINT_LEAST32_MAX  UINT32_MAX
+
+# undef INT_LEAST64_MIN
+# undef INT_LEAST64_MAX
+# ifdef GL_INT64_T
+#  define INT_LEAST64_MIN  INT64_MIN
+#  define INT_LEAST64_MAX  INT64_MAX
+# endif
+
+# undef UINT_LEAST64_MAX
+# ifdef GL_UINT64_T
+#  define UINT_LEAST64_MAX  UINT64_MAX
+# endif
+
+/* 7.18.2.3. Limits of fastest minimum-width integer types */
+
+/* Here we assume a standard architecture where the hardware integer
+   types have 8, 16, 32, optionally 64 bits. Therefore the fastN_t types
+   are taken from the same list of types.  */
+
+# undef INT_FAST8_MIN
+# undef INT_FAST8_MAX
+# undef UINT_FAST8_MAX
+# define INT_FAST8_MIN  SCHAR_MIN
+# define INT_FAST8_MAX  SCHAR_MAX
+# define UINT_FAST8_MAX  UCHAR_MAX
+
+# undef INT_FAST16_MIN
+# undef INT_FAST16_MAX
+# undef UINT_FAST16_MAX
+# define INT_FAST16_MIN  INT_FAST32_MIN
+# define INT_FAST16_MAX  INT_FAST32_MAX
+# define UINT_FAST16_MAX  UINT_FAST32_MAX
+
+# undef INT_FAST32_MIN
+# undef INT_FAST32_MAX
+# undef UINT_FAST32_MAX
+# ifdef __sun
+#  define INT_FAST32_MIN  INT_MIN
+#  define INT_FAST32_MAX  INT_MAX
+#  define UINT_FAST32_MAX  UINT_MAX
+# else
+#  define INT_FAST32_MIN  LONG_MIN
+#  define INT_FAST32_MAX  LONG_MAX
+#  define UINT_FAST32_MAX  ULONG_MAX
+# endif
+
+# undef INT_FAST64_MIN
+# undef INT_FAST64_MAX
+# ifdef GL_INT64_T
+#  define INT_FAST64_MIN  INT64_MIN
+#  define INT_FAST64_MAX  INT64_MAX
+# endif
+
+# undef UINT_FAST64_MAX
+# ifdef GL_UINT64_T
+#  define UINT_FAST64_MAX  UINT64_MAX
+# endif
+
+/* 7.18.2.4. Limits of integer types capable of holding object pointers */
+
+# undef INTPTR_MIN
+# undef INTPTR_MAX
+# undef UINTPTR_MAX
+# define INTPTR_MIN  LONG_MIN
+# define INTPTR_MAX  LONG_MAX
+# define UINTPTR_MAX  ULONG_MAX
+
+/* 7.18.2.5. Limits of greatest-width integer types */
+
+# ifndef INTMAX_MAX
+#  undef INTMAX_MIN
+#  ifdef INT64_MAX
+#   define INTMAX_MIN  INT64_MIN
+#   define INTMAX_MAX  INT64_MAX
+#  else
+#   define INTMAX_MIN  INT32_MIN
+#   define INTMAX_MAX  INT32_MAX
+#  endif
+# endif
+
+# ifndef UINTMAX_MAX
+#  ifdef UINT64_MAX
+#   define UINTMAX_MAX  UINT64_MAX
+#  else
+#   define UINTMAX_MAX  UINT32_MAX
+#  endif
+# endif
+
+/* 7.18.3. Limits of other integer types */
+
+/* ptrdiff_t limits */
+# undef PTRDIFF_MIN
+# undef PTRDIFF_MAX
+# if @APPLE_UNIVERSAL_BUILD@
+#  ifdef _LP64
+#   define PTRDIFF_MIN  _STDINT_SIGNED_MIN (64, 0l)
+#   define PTRDIFF_MAX  _STDINT_MAX (1, 64, 0l)
+#  else
+#   define PTRDIFF_MIN  _STDINT_SIGNED_MIN (32, 0)
+#   define PTRDIFF_MAX  _STDINT_MAX (1, 32, 0)
+#  endif
+# else
+#  define PTRDIFF_MIN  \
+    _STDINT_SIGNED_MIN (@BITSIZEOF_PTRDIFF_T@, 0@PTRDIFF_T_SUFFIX@)
+#  define PTRDIFF_MAX  \
+    _STDINT_MAX (1, @BITSIZEOF_PTRDIFF_T@, 0@PTRDIFF_T_SUFFIX@)
+# endif
+
+/* sig_atomic_t limits */
+# undef SIG_ATOMIC_MIN
+# undef SIG_ATOMIC_MAX
+# if @HAVE_SIGNED_SIG_ATOMIC_T@
+#  define SIG_ATOMIC_MIN  \
+    _STDINT_SIGNED_MIN (@BITSIZEOF_SIG_ATOMIC_T@, 0@SIG_ATOMIC_T_SUFFIX@)
+# else
+#  define SIG_ATOMIC_MIN  \
+    _STDINT_UNSIGNED_MIN (@BITSIZEOF_SIG_ATOMIC_T@, 0@SIG_ATOMIC_T_SUFFIX@)
+# endif
+# define SIG_ATOMIC_MAX  \
+   _STDINT_MAX (@HAVE_SIGNED_SIG_ATOMIC_T@, @BITSIZEOF_SIG_ATOMIC_T@, \
+                0@SIG_ATOMIC_T_SUFFIX@)
+
+
+/* size_t limit */
+# undef SIZE_MAX
+# if @APPLE_UNIVERSAL_BUILD@
+#  ifdef _LP64
+#   define SIZE_MAX  _STDINT_MAX (0, 64, 0ul)
+#  else
+#   define SIZE_MAX  _STDINT_MAX (0, 32, 0ul)
+#  endif
+# else
+#  define SIZE_MAX  _STDINT_MAX (0, @BITSIZEOF_SIZE_T@, 0@SIZE_T_SUFFIX@)
+# endif
+
+/* wchar_t limits */
+/* Get WCHAR_MIN, WCHAR_MAX.
+   This include is not on the top, above, because on OSF/1 4.0 we have a
+   sequence of nested includes
+   <wchar.h> -> <stdio.h> -> <getopt.h> -> <stdlib.h>, and the latter includes
+   <stdint.h> and assumes its types are already defined.  */
+# if @HAVE_WCHAR_H@ && ! (defined WCHAR_MIN && defined WCHAR_MAX)
+  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+     included before <wchar.h>.  */
+#  include <stddef.h>
+#  include <stdio.h>
+#  include <time.h>
+#  define _GL_JUST_INCLUDE_SYSTEM_WCHAR_H
+#  include <wchar.h>
+#  undef _GL_JUST_INCLUDE_SYSTEM_WCHAR_H
+# endif
+# undef WCHAR_MIN
+# undef WCHAR_MAX
+# if @HAVE_SIGNED_WCHAR_T@
+#  define WCHAR_MIN  \
+    _STDINT_SIGNED_MIN (@BITSIZEOF_WCHAR_T@, 0@WCHAR_T_SUFFIX@)
+# else
+#  define WCHAR_MIN  \
+    _STDINT_UNSIGNED_MIN (@BITSIZEOF_WCHAR_T@, 0@WCHAR_T_SUFFIX@)
+# endif
+# define WCHAR_MAX  \
+   _STDINT_MAX (@HAVE_SIGNED_WCHAR_T@, @BITSIZEOF_WCHAR_T@, 0@WCHAR_T_SUFFIX@)
+
+/* wint_t limits */
+# undef WINT_MIN
+# undef WINT_MAX
+# if @HAVE_SIGNED_WINT_T@
+#  define WINT_MIN  \
+    _STDINT_SIGNED_MIN (@BITSIZEOF_WINT_T@, 0@WINT_T_SUFFIX@)
+# else
+#  define WINT_MIN  \
+    _STDINT_UNSIGNED_MIN (@BITSIZEOF_WINT_T@, 0@WINT_T_SUFFIX@)
+# endif
+# define WINT_MAX  \
+   _STDINT_MAX (@HAVE_SIGNED_WINT_T@, @BITSIZEOF_WINT_T@, 0@WINT_T_SUFFIX@)
+
+/* 7.18.4. Macros for integer constants */
+
+/* 7.18.4.1. Macros for minimum-width integer constants */
+/* According to ISO C 99 Technical Corrigendum 1 */
+
+/* Here we assume a standard architecture where the hardware integer
+   types have 8, 16, 32, optionally 64 bits, and int is 32 bits.  */
+
+# undef INT8_C
+# undef UINT8_C
+# define INT8_C(x) x
+# define UINT8_C(x) x
+
+# undef INT16_C
+# undef UINT16_C
+# define INT16_C(x) x
+# define UINT16_C(x) x
+
+# undef INT32_C
+# undef UINT32_C
+# define INT32_C(x) x
+# define UINT32_C(x) x ## U
+
+# undef INT64_C
+# undef UINT64_C
+# if LONG_MAX >> 31 >> 31 == 1
+#  define INT64_C(x) x##L
+# elif defined _MSC_VER
+#  define INT64_C(x) x##i64
+# elif @HAVE_LONG_LONG_INT@
+#  define INT64_C(x) x##LL
+# endif
+# if ULONG_MAX >> 31 >> 31 >> 1 == 1
+#  define UINT64_C(x) x##UL
+# elif defined _MSC_VER
+#  define UINT64_C(x) x##ui64
+# elif @HAVE_UNSIGNED_LONG_LONG_INT@
+#  define UINT64_C(x) x##ULL
+# endif
+
+/* 7.18.4.2. Macros for greatest-width integer constants */
+
+# ifndef INTMAX_C
+#  if @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1
+#   define INTMAX_C(x)   x##LL
+#  elif defined GL_INT64_T
+#   define INTMAX_C(x)   INT64_C(x)
+#  else
+#   define INTMAX_C(x)   x##L
+#  endif
+# endif
+
+# ifndef UINTMAX_C
+#  if @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1
+#   define UINTMAX_C(x)  x##ULL
+#  elif defined GL_UINT64_T
+#   define UINTMAX_C(x)  UINT64_C(x)
+#  else
+#   define UINTMAX_C(x)  x##UL
+#  endif
+# endif
+
+#endif /* !@HAVE_C99_STDINT_H@ */
+
+/* Macros specified by ISO/IEC TS 18661-1:2014.  */
+
+#if (!defined UINTMAX_WIDTH \
+     && (defined _GNU_SOURCE || defined __STDC_WANT_IEC_60559_BFP_EXT__))
+# ifdef INT8_MAX
+#  define INT8_WIDTH _GL_INTEGER_WIDTH (INT8_MIN, INT8_MAX)
+# endif
+# ifdef UINT8_MAX
+#  define UINT8_WIDTH _GL_INTEGER_WIDTH (0, UINT8_MAX)
+# endif
+# ifdef INT16_MAX
+#  define INT16_WIDTH _GL_INTEGER_WIDTH (INT16_MIN, INT16_MAX)
+# endif
+# ifdef UINT16_MAX
+#  define UINT16_WIDTH _GL_INTEGER_WIDTH (0, UINT16_MAX)
+# endif
+# ifdef INT32_MAX
+#  define INT32_WIDTH _GL_INTEGER_WIDTH (INT32_MIN, INT32_MAX)
+# endif
+# ifdef UINT32_MAX
+#  define UINT32_WIDTH _GL_INTEGER_WIDTH (0, UINT32_MAX)
+# endif
+# ifdef INT64_MAX
+#  define INT64_WIDTH _GL_INTEGER_WIDTH (INT64_MIN, INT64_MAX)
+# endif
+# ifdef UINT64_MAX
+#  define UINT64_WIDTH _GL_INTEGER_WIDTH (0, UINT64_MAX)
+# endif
+# define INT_LEAST8_WIDTH _GL_INTEGER_WIDTH (INT_LEAST8_MIN, INT_LEAST8_MAX)
+# define UINT_LEAST8_WIDTH _GL_INTEGER_WIDTH (0, UINT_LEAST8_MAX)
+# define INT_LEAST16_WIDTH _GL_INTEGER_WIDTH (INT_LEAST16_MIN, INT_LEAST16_MAX)
+# define UINT_LEAST16_WIDTH _GL_INTEGER_WIDTH (0, UINT_LEAST16_MAX)
+# define INT_LEAST32_WIDTH _GL_INTEGER_WIDTH (INT_LEAST32_MIN, INT_LEAST32_MAX)
+# define UINT_LEAST32_WIDTH _GL_INTEGER_WIDTH (0, UINT_LEAST32_MAX)
+# define INT_LEAST64_WIDTH _GL_INTEGER_WIDTH (INT_LEAST64_MIN, INT_LEAST64_MAX)
+# define UINT_LEAST64_WIDTH _GL_INTEGER_WIDTH (0, UINT_LEAST64_MAX)
+# define INT_FAST8_WIDTH _GL_INTEGER_WIDTH (INT_FAST8_MIN, INT_FAST8_MAX)
+# define UINT_FAST8_WIDTH _GL_INTEGER_WIDTH (0, UINT_FAST8_MAX)
+# define INT_FAST16_WIDTH _GL_INTEGER_WIDTH (INT_FAST16_MIN, INT_FAST16_MAX)
+# define UINT_FAST16_WIDTH _GL_INTEGER_WIDTH (0, UINT_FAST16_MAX)
+# define INT_FAST32_WIDTH _GL_INTEGER_WIDTH (INT_FAST32_MIN, INT_FAST32_MAX)
+# define UINT_FAST32_WIDTH _GL_INTEGER_WIDTH (0, UINT_FAST32_MAX)
+# define INT_FAST64_WIDTH _GL_INTEGER_WIDTH (INT_FAST64_MIN, INT_FAST64_MAX)
+# define UINT_FAST64_WIDTH _GL_INTEGER_WIDTH (0, UINT_FAST64_MAX)
+# define INTPTR_WIDTH _GL_INTEGER_WIDTH (INTPTR_MIN, INTPTR_MAX)
+# define UINTPTR_WIDTH _GL_INTEGER_WIDTH (0, UINTPTR_MAX)
+# define INTMAX_WIDTH _GL_INTEGER_WIDTH (INTMAX_MIN, INTMAX_MAX)
+# define UINTMAX_WIDTH _GL_INTEGER_WIDTH (0, UINTMAX_MAX)
+# define PTRDIFF_WIDTH _GL_INTEGER_WIDTH (PTRDIFF_MIN, PTRDIFF_MAX)
+# define SIZE_WIDTH _GL_INTEGER_WIDTH (0, SIZE_MAX)
+# define WCHAR_WIDTH _GL_INTEGER_WIDTH (WCHAR_MIN, WCHAR_MAX)
+# ifdef WINT_MAX
+#  define WINT_WIDTH _GL_INTEGER_WIDTH (WINT_MIN, WINT_MAX)
+# endif
+# ifdef SIG_ATOMIC_MAX
+#  define SIG_ATOMIC_WIDTH _GL_INTEGER_WIDTH (SIG_ATOMIC_MIN, SIG_ATOMIC_MAX)
+# endif
+#endif /* !WINT_WIDTH && (_GNU_SOURCE || __STDC_WANT_IEC_60559_BFP_EXT__) */
+
+#endif /* _@GUARD_PREFIX@_STDINT_H */
+#endif /* !(defined __ANDROID__ && ...) */
+#endif /* !defined _@GUARD_PREFIX@_STDINT_H && !defined _GL_JUST_INCLUDE_SYSTEM_STDINT_H */
diff --git a/lib/stdio-impl.h b/lib/stdio-impl.h
new file mode 100644 (file)
index 0000000..393ef0c
--- /dev/null
@@ -0,0 +1,202 @@
+/* Implementation details of FILE streams.
+   Copyright (C) 2007-2008, 2010-2018 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 <https://www.gnu.org/licenses/>.  */
+
+/* Many stdio implementations have the same logic and therefore can share
+   the same implementation of stdio extension API, except that some fields
+   have different naming conventions, or their access requires some casts.  */
+
+/* Glibc 2.28 made _IO_IN_BACKUP private.  For now, work around this
+   problem by defining it ourselves.  FIXME: Do not rely on glibc
+   internals.  */
+#if !defined _IO_IN_BACKUP && defined _IO_EOF_SEEN
+# define _IO_IN_BACKUP 0x100
+#endif
+
+/* BSD stdio derived implementations.  */
+
+#if defined __NetBSD__                         /* NetBSD */
+/* Get __NetBSD_Version__.  */
+# include <sys/param.h>
+#endif
+
+#include <errno.h>                             /* For detecting Plan9.  */
+
+#if defined __sferror || defined __DragonFly__ || defined __ANDROID__
+  /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Minix 3, Android */
+
+# if defined __DragonFly__          /* DragonFly */
+  /* See <https://gitweb.dragonflybsd.org/dragonfly.git/blob_plain/HEAD:/lib/libc/stdio/priv_stdio.h>.  */
+#  define fp_ ((struct { struct __FILE_public pub; \
+                         struct { unsigned char *_base; int _size; } _bf; \
+                         void *cookie; \
+                         void *_close; \
+                         void *_read; \
+                         void *_seek; \
+                         void *_write; \
+                         struct { unsigned char *_base; int _size; } _ub; \
+                         int _ur; \
+                         unsigned char _ubuf[3]; \
+                         unsigned char _nbuf[1]; \
+                         struct { unsigned char *_base; int _size; } _lb; \
+                         int _blksize; \
+                         fpos_t _offset; \
+                         /* More fields, not relevant here.  */ \
+                       } *) fp)
+  /* See <https://gitweb.dragonflybsd.org/dragonfly.git/blob_plain/HEAD:/include/stdio.h>.  */
+#  define _p pub._p
+#  define _flags pub._flags
+#  define _r pub._r
+#  define _w pub._w
+# elif defined __ANDROID__ /* Android */
+  /* Up to this commit from 2015-10-12
+     <https://android.googlesource.com/platform/bionic.git/+/f0141dfab10a4b332769d52fa76631a64741297a>
+     the innards of FILE were public, and fp_ub could be defined like for OpenBSD,
+     see <https://android.googlesource.com/platform/bionic.git/+/e78392637d5086384a5631ddfdfa8d7ec8326ee3/libc/stdio/fileext.h>
+     and <https://android.googlesource.com/platform/bionic.git/+/e78392637d5086384a5631ddfdfa8d7ec8326ee3/libc/stdio/local.h>.
+     After this commit, the innards of FILE are hidden.  */
+#  define fp_ ((struct { unsigned char *_p; \
+                         int _r; \
+                         int _w; \
+                         int _flags; \
+                         int _file; \
+                         struct { unsigned char *_base; size_t _size; } _bf; \
+                         int _lbfsize; \
+                         void *_cookie; \
+                         void *_close; \
+                         void *_read; \
+                         void *_seek; \
+                         void *_write; \
+                         struct { unsigned char *_base; size_t _size; } _ext; \
+                         unsigned char *_up; \
+                         int _ur; \
+                         unsigned char _ubuf[3]; \
+                         unsigned char _nbuf[1]; \
+                         struct { unsigned char *_base; size_t _size; } _lb; \
+                         int _blksize; \
+                         fpos_t _offset; \
+                         /* More fields, not relevant here.  */ \
+                       } *) fp)
+# else
+#  define fp_ fp
+# endif
+
+# if (defined __NetBSD__ && __NetBSD_Version__ >= 105270000) || defined __OpenBSD__ || defined __minix /* NetBSD >= 1.5ZA, OpenBSD, Minix 3 */
+  /* See <http://cvsweb.netbsd.org/bsdweb.cgi/src/lib/libc/stdio/fileext.h?rev=HEAD&content-type=text/x-cvsweb-markup>
+     and <https://cvsweb.openbsd.org/cgi-bin/cvsweb/src/lib/libc/stdio/fileext.h?rev=HEAD&content-type=text/x-cvsweb-markup>
+     and <https://github.com/Stichting-MINIX-Research-Foundation/minix/blob/master/lib/libc/stdio/fileext.h> */
+  struct __sfileext
+    {
+      struct  __sbuf _ub; /* ungetc buffer */
+      /* More fields, not relevant here.  */
+    };
+#  define fp_ub ((struct __sfileext *) fp->_ext._base)->_ub
+# elif defined __ANDROID__                     /* Android */
+  struct __sfileext
+    {
+      struct { unsigned char *_base; size_t _size; } _ub; /* ungetc buffer */
+      /* More fields, not relevant here.  */
+    };
+#  define fp_ub ((struct __sfileext *) fp_->_ext._base)->_ub
+# else                                         /* FreeBSD, NetBSD <= 1.5Z, DragonFly, Mac OS X, Cygwin */
+#  define fp_ub fp_->_ub
+# endif
+
+# define HASUB(fp) (fp_ub._base != NULL)
+
+# if defined __ANDROID__ /* Android */
+  /* Needed after this commit from 2016-01-25
+     <https://android.googlesource.com/platform/bionic.git/+/e70e0e9267d069bf56a5078c99307e08a7280de7> */
+#  ifndef __SEOF
+#   define __SLBF 1
+#   define __SNBF 2
+#   define __SRD 4
+#   define __SWR 8
+#   define __SRW 0x10
+#   define __SEOF 0x20
+#   define __SERR 0x40
+#  endif
+#  ifndef __SOFF
+#   define __SOFF 0x1000
+#  endif
+# endif
+
+#endif
+
+
+/* SystemV derived implementations.  */
+
+#ifdef __TANDEM                     /* NonStop Kernel */
+# ifndef _IOERR
+/* These values were determined by the program 'stdioext-flags' at
+   <https://lists.gnu.org/r/bug-gnulib/2010-12/msg00165.html>.  */
+#  define _IOERR   0x40
+#  define _IOREAD  0x80
+#  define _IOWRT    0x4
+#  define _IORW   0x100
+# endif
+#endif
+
+#if defined _IOERR
+
+# if defined __sun && defined _LP64 /* Solaris/{SPARC,AMD64} 64-bit */
+#  define fp_ ((struct { unsigned char *_ptr; \
+                         unsigned char *_base; \
+                         unsigned char *_end; \
+                         long _cnt; \
+                         int _file; \
+                         unsigned int _flag; \
+                       } *) fp)
+# elif defined __VMS                /* OpenVMS */
+#  define fp_ ((struct _iobuf *) fp)
+# else
+#  define fp_ fp
+# endif
+
+# if defined _SCO_DS                /* OpenServer */
+#  define _cnt __cnt
+#  define _ptr __ptr
+#  define _base __base
+#  define _flag __flag
+# endif
+
+#elif defined _WIN32 && ! defined __CYGWIN__  /* newer Windows with MSVC */
+
+/* <stdio.h> does not define the innards of FILE any more.  */
+# define WINDOWS_OPAQUE_FILE
+
+struct _gl_real_FILE
+{
+  /* Note: Compared to older Windows and to mingw, it has the fields
+     _base and _cnt swapped. */
+  unsigned char *_ptr;
+  unsigned char *_base;
+  int _cnt;
+  int _flag;
+  int _file;
+  int _charbuf;
+  int _bufsiz;
+};
+# define fp_ ((struct _gl_real_FILE *) fp)
+
+/* These values were determined by a program similar to the one at
+   <https://lists.gnu.org/r/bug-gnulib/2010-12/msg00165.html>.  */
+# define _IOREAD   0x1
+# define _IOWRT    0x2
+# define _IORW     0x4
+# define _IOEOF    0x8
+# define _IOERR   0x10
+
+#endif
diff --git a/lib/stdio.in.h b/lib/stdio.in.h
new file mode 100644 (file)
index 0000000..ff7c9c8
--- /dev/null
@@ -0,0 +1,1377 @@
+/* A GNU-like <stdio.h>.
+
+   Copyright (C) 2004, 2007-2018 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, 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 <https://www.gnu.org/licenses/>.  */
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+@PRAGMA_COLUMNS@
+
+#if defined __need_FILE || defined __need___FILE || defined _GL_ALREADY_INCLUDING_STDIO_H
+/* Special invocation convention:
+   - Inside glibc header files.
+   - On OSF/1 5.1 we have a sequence of nested includes
+     <stdio.h> -> <getopt.h> -> <ctype.h> -> <sys/localedef.h> ->
+     <sys/lc_core.h> -> <nl_types.h> -> <mesg.h> -> <stdio.h>.
+     In this situation, the functions are not yet declared, therefore we cannot
+     provide the C++ aliases.  */
+
+#@INCLUDE_NEXT@ @NEXT_STDIO_H@
+
+#else
+/* Normal invocation convention.  */
+
+#ifndef _@GUARD_PREFIX@_STDIO_H
+
+#define _GL_ALREADY_INCLUDING_STDIO_H
+
+/* The include_next requires a split double-inclusion guard.  */
+#@INCLUDE_NEXT@ @NEXT_STDIO_H@
+
+#undef _GL_ALREADY_INCLUDING_STDIO_H
+
+#ifndef _@GUARD_PREFIX@_STDIO_H
+#define _@GUARD_PREFIX@_STDIO_H
+
+/* Get va_list.  Needed on many systems, including glibc 2.8.  */
+#include <stdarg.h>
+
+#include <stddef.h>
+
+/* Get off_t and ssize_t.  Needed on many systems, including glibc 2.8
+   and eglibc 2.11.2.
+   May also define off_t to a 64-bit type on native Windows.  */
+#include <sys/types.h>
+
+/* The __attribute__ feature is available in gcc versions 2.5 and later.
+   The __-protected variants of the attributes 'format' and 'printf' are
+   accepted by gcc versions 2.6.4 (effectively 2.7) and later.
+   We enable _GL_ATTRIBUTE_FORMAT only if these are supported too, because
+   gnulib and libintl do '#define printf __printf__' when they override
+   the 'printf' function.  */
+#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)
+# define _GL_ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec))
+#else
+# define _GL_ATTRIBUTE_FORMAT(spec) /* empty */
+#endif
+
+/* _GL_ATTRIBUTE_FORMAT_PRINTF
+   indicates to GCC that the function takes a format string and arguments,
+   where the format string directives are the ones standardized by ISO C99
+   and POSIX.  */
+#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)
+# define _GL_ATTRIBUTE_FORMAT_PRINTF(formatstring_parameter, first_argument) \
+   _GL_ATTRIBUTE_FORMAT ((__gnu_printf__, formatstring_parameter, first_argument))
+#else
+# define _GL_ATTRIBUTE_FORMAT_PRINTF(formatstring_parameter, first_argument) \
+   _GL_ATTRIBUTE_FORMAT ((__printf__, formatstring_parameter, first_argument))
+#endif
+
+/* _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM is like _GL_ATTRIBUTE_FORMAT_PRINTF,
+   except that it indicates to GCC that the supported format string directives
+   are the ones of the system printf(), rather than the ones standardized by
+   ISO C99 and POSIX.  */
+#if GNULIB_PRINTF_ATTRIBUTE_FLAVOR_GNU
+# define _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM(formatstring_parameter, first_argument) \
+  _GL_ATTRIBUTE_FORMAT_PRINTF (formatstring_parameter, first_argument)
+#else
+# define _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM(formatstring_parameter, first_argument) \
+  _GL_ATTRIBUTE_FORMAT ((__printf__, formatstring_parameter, first_argument))
+#endif
+
+/* _GL_ATTRIBUTE_FORMAT_SCANF
+   indicates to GCC that the function takes a format string and arguments,
+   where the format string directives are the ones standardized by ISO C99
+   and POSIX.  */
+#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)
+# define _GL_ATTRIBUTE_FORMAT_SCANF(formatstring_parameter, first_argument) \
+   _GL_ATTRIBUTE_FORMAT ((__gnu_scanf__, formatstring_parameter, first_argument))
+#else
+# define _GL_ATTRIBUTE_FORMAT_SCANF(formatstring_parameter, first_argument) \
+   _GL_ATTRIBUTE_FORMAT ((__scanf__, formatstring_parameter, first_argument))
+#endif
+
+/* _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM is like _GL_ATTRIBUTE_FORMAT_SCANF,
+   except that it indicates to GCC that the supported format string directives
+   are the ones of the system scanf(), rather than the ones standardized by
+   ISO C99 and POSIX.  */
+#define _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM(formatstring_parameter, first_argument) \
+  _GL_ATTRIBUTE_FORMAT ((__scanf__, formatstring_parameter, first_argument))
+
+/* Solaris 10 and NetBSD 7.0 declare renameat in <unistd.h>, not in <stdio.h>.  */
+/* But in any case avoid namespace pollution on glibc systems.  */
+#if (@GNULIB_RENAMEAT@ || defined GNULIB_POSIXCHECK) && (defined __sun || defined __NetBSD__) \
+    && ! defined __GLIBC__
+# include <unistd.h>
+#endif
+
+/* MSVC declares 'perror' in <stdlib.h>, not in <stdio.h>.  We must include
+   it before we  #define perror rpl_perror.  */
+/* But in any case avoid namespace pollution on glibc systems.  */
+#if (@GNULIB_PERROR@ || defined GNULIB_POSIXCHECK) \
+    && (defined _WIN32 && ! defined __CYGWIN__) \
+    && ! defined __GLIBC__
+# include <stdlib.h>
+#endif
+
+/* MSVC declares 'remove' in <io.h>, not in <stdio.h>.  We must include
+   it before we  #define remove rpl_remove.  */
+/* MSVC declares 'rename' in <io.h>, not in <stdio.h>.  We must include
+   it before we  #define rename rpl_rename.  */
+/* But in any case avoid namespace pollution on glibc systems.  */
+#if (@GNULIB_REMOVE@ || @GNULIB_RENAME@ || defined GNULIB_POSIXCHECK) \
+    && (defined _WIN32 && ! defined __CYGWIN__) \
+    && ! defined __GLIBC__
+# include <io.h>
+#endif
+
+
+/* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */
+
+/* The definition of _GL_ARG_NONNULL is copied here.  */
+
+/* The definition of _GL_WARN_ON_USE is copied here.  */
+
+/* Macros for stringification.  */
+#define _GL_STDIO_STRINGIZE(token) #token
+#define _GL_STDIO_MACROEXPAND_AND_STRINGIZE(token) _GL_STDIO_STRINGIZE(token)
+
+/* When also using extern inline, suppress the use of static inline in
+   standard headers of problematic Apple configurations, as Libc at
+   least through Libc-825.26 (2013-04-09) mishandles it; see, e.g.,
+   <https://lists.gnu.org/r/bug-gnulib/2012-12/msg00023.html>.
+   Perhaps Apple will fix this some day.  */
+#if (defined _GL_EXTERN_INLINE_IN_USE && defined __APPLE__ \
+     && defined __GNUC__ && defined __STDC__)
+# undef putc_unlocked
+#endif
+
+#if @GNULIB_DPRINTF@
+# if @REPLACE_DPRINTF@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define dprintf rpl_dprintf
+#  endif
+_GL_FUNCDECL_RPL (dprintf, int, (int fd, const char *format, ...)
+                                _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
+                                _GL_ARG_NONNULL ((2)));
+_GL_CXXALIAS_RPL (dprintf, int, (int fd, const char *format, ...));
+# else
+#  if !@HAVE_DPRINTF@
+_GL_FUNCDECL_SYS (dprintf, int, (int fd, const char *format, ...)
+                                _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
+                                _GL_ARG_NONNULL ((2)));
+#  endif
+_GL_CXXALIAS_SYS (dprintf, int, (int fd, const char *format, ...));
+# endif
+_GL_CXXALIASWARN (dprintf);
+#elif defined GNULIB_POSIXCHECK
+# undef dprintf
+# if HAVE_RAW_DECL_DPRINTF
+_GL_WARN_ON_USE (dprintf, "dprintf is unportable - "
+                 "use gnulib module dprintf for portability");
+# endif
+#endif
+
+#if @GNULIB_FCLOSE@
+/* Close STREAM and its underlying file descriptor.  */
+# if @REPLACE_FCLOSE@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define fclose rpl_fclose
+#  endif
+_GL_FUNCDECL_RPL (fclose, int, (FILE *stream) _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (fclose, int, (FILE *stream));
+# else
+_GL_CXXALIAS_SYS (fclose, int, (FILE *stream));
+# endif
+_GL_CXXALIASWARN (fclose);
+#elif defined GNULIB_POSIXCHECK
+# undef fclose
+/* Assume fclose is always declared.  */
+_GL_WARN_ON_USE (fclose, "fclose is not always POSIX compliant - "
+                 "use gnulib module fclose for portable POSIX compliance");
+#endif
+
+#if @GNULIB_FDOPEN@
+# if @REPLACE_FDOPEN@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef fdopen
+#   define fdopen rpl_fdopen
+#  endif
+_GL_FUNCDECL_RPL (fdopen, FILE *, (int fd, const char *mode)
+                                  _GL_ARG_NONNULL ((2)));
+_GL_CXXALIAS_RPL (fdopen, FILE *, (int fd, const char *mode));
+# else
+_GL_CXXALIAS_SYS (fdopen, FILE *, (int fd, const char *mode));
+# endif
+_GL_CXXALIASWARN (fdopen);
+#elif defined GNULIB_POSIXCHECK
+# undef fdopen
+/* Assume fdopen is always declared.  */
+_GL_WARN_ON_USE (fdopen, "fdopen on native Windows platforms is not POSIX compliant - "
+                 "use gnulib module fdopen for portability");
+#endif
+
+#if @GNULIB_FFLUSH@
+/* Flush all pending data on STREAM according to POSIX rules.  Both
+   output and seekable input streams are supported.
+   Note! LOSS OF DATA can occur if fflush is applied on an input stream
+   that is _not_seekable_ or on an update stream that is _not_seekable_
+   and in which the most recent operation was input.  Seekability can
+   be tested with lseek(fileno(fp),0,SEEK_CUR).  */
+# if @REPLACE_FFLUSH@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define fflush rpl_fflush
+#  endif
+_GL_FUNCDECL_RPL (fflush, int, (FILE *gl_stream));
+_GL_CXXALIAS_RPL (fflush, int, (FILE *gl_stream));
+# else
+_GL_CXXALIAS_SYS (fflush, int, (FILE *gl_stream));
+# endif
+_GL_CXXALIASWARN (fflush);
+#elif defined GNULIB_POSIXCHECK
+# undef fflush
+/* Assume fflush is always declared.  */
+_GL_WARN_ON_USE (fflush, "fflush is not always POSIX compliant - "
+                 "use gnulib module fflush for portable POSIX compliance");
+#endif
+
+#if @GNULIB_FGETC@
+# if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef fgetc
+#   define fgetc rpl_fgetc
+#  endif
+_GL_FUNCDECL_RPL (fgetc, int, (FILE *stream) _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (fgetc, int, (FILE *stream));
+# else
+_GL_CXXALIAS_SYS (fgetc, int, (FILE *stream));
+# endif
+_GL_CXXALIASWARN (fgetc);
+#endif
+
+#if @GNULIB_FGETS@
+# if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef fgets
+#   define fgets rpl_fgets
+#  endif
+_GL_FUNCDECL_RPL (fgets, char *, (char *s, int n, FILE *stream)
+                                 _GL_ARG_NONNULL ((1, 3)));
+_GL_CXXALIAS_RPL (fgets, char *, (char *s, int n, FILE *stream));
+# else
+_GL_CXXALIAS_SYS (fgets, char *, (char *s, int n, FILE *stream));
+# endif
+_GL_CXXALIASWARN (fgets);
+#endif
+
+#if @GNULIB_FOPEN@
+# if @REPLACE_FOPEN@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef fopen
+#   define fopen rpl_fopen
+#  endif
+_GL_FUNCDECL_RPL (fopen, FILE *, (const char *filename, const char *mode)
+                                 _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (fopen, FILE *, (const char *filename, const char *mode));
+# else
+_GL_CXXALIAS_SYS (fopen, FILE *, (const char *filename, const char *mode));
+# endif
+_GL_CXXALIASWARN (fopen);
+#elif defined GNULIB_POSIXCHECK
+# undef fopen
+/* Assume fopen is always declared.  */
+_GL_WARN_ON_USE (fopen, "fopen on native Windows platforms is not POSIX compliant - "
+                 "use gnulib module fopen for portability");
+#endif
+
+#if @GNULIB_FPRINTF_POSIX@ || @GNULIB_FPRINTF@
+# if (@GNULIB_FPRINTF_POSIX@ && @REPLACE_FPRINTF@) \
+     || (@GNULIB_FPRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@))
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define fprintf rpl_fprintf
+#  endif
+#  define GNULIB_overrides_fprintf 1
+#  if @GNULIB_FPRINTF_POSIX@ || @GNULIB_VFPRINTF_POSIX@
+_GL_FUNCDECL_RPL (fprintf, int, (FILE *fp, const char *format, ...)
+                                _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
+                                _GL_ARG_NONNULL ((1, 2)));
+#  else
+_GL_FUNCDECL_RPL (fprintf, int, (FILE *fp, const char *format, ...)
+                                _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (2, 3)
+                                _GL_ARG_NONNULL ((1, 2)));
+#  endif
+_GL_CXXALIAS_RPL (fprintf, int, (FILE *fp, const char *format, ...));
+# else
+_GL_CXXALIAS_SYS (fprintf, int, (FILE *fp, const char *format, ...));
+# endif
+_GL_CXXALIASWARN (fprintf);
+#endif
+#if !@GNULIB_FPRINTF_POSIX@ && defined GNULIB_POSIXCHECK
+# if !GNULIB_overrides_fprintf
+#  undef fprintf
+# endif
+/* Assume fprintf is always declared.  */
+_GL_WARN_ON_USE (fprintf, "fprintf is not always POSIX compliant - "
+                 "use gnulib module fprintf-posix for portable "
+                 "POSIX compliance");
+#endif
+
+#if @GNULIB_FPURGE@
+/* Discard all pending buffered I/O data on STREAM.
+   STREAM must not be wide-character oriented.
+   When discarding pending output, the file position is set back to where it
+   was before the write calls.  When discarding pending input, the file
+   position is advanced to match the end of the previously read input.
+   Return 0 if successful.  Upon error, return -1 and set errno.  */
+# if @REPLACE_FPURGE@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define fpurge rpl_fpurge
+#  endif
+_GL_FUNCDECL_RPL (fpurge, int, (FILE *gl_stream) _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (fpurge, int, (FILE *gl_stream));
+# else
+#  if !@HAVE_DECL_FPURGE@
+_GL_FUNCDECL_SYS (fpurge, int, (FILE *gl_stream) _GL_ARG_NONNULL ((1)));
+#  endif
+_GL_CXXALIAS_SYS (fpurge, int, (FILE *gl_stream));
+# endif
+_GL_CXXALIASWARN (fpurge);
+#elif defined GNULIB_POSIXCHECK
+# undef fpurge
+# if HAVE_RAW_DECL_FPURGE
+_GL_WARN_ON_USE (fpurge, "fpurge is not always present - "
+                 "use gnulib module fpurge for portability");
+# endif
+#endif
+
+#if @GNULIB_FPUTC@
+# if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@)
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef fputc
+#   define fputc rpl_fputc
+#  endif
+_GL_FUNCDECL_RPL (fputc, int, (int c, FILE *stream) _GL_ARG_NONNULL ((2)));
+_GL_CXXALIAS_RPL (fputc, int, (int c, FILE *stream));
+# else
+_GL_CXXALIAS_SYS (fputc, int, (int c, FILE *stream));
+# endif
+_GL_CXXALIASWARN (fputc);
+#endif
+
+#if @GNULIB_FPUTS@
+# if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@)
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef fputs
+#   define fputs rpl_fputs
+#  endif
+_GL_FUNCDECL_RPL (fputs, int, (const char *string, FILE *stream)
+                              _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (fputs, int, (const char *string, FILE *stream));
+# else
+_GL_CXXALIAS_SYS (fputs, int, (const char *string, FILE *stream));
+# endif
+_GL_CXXALIASWARN (fputs);
+#endif
+
+#if @GNULIB_FREAD@
+# if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef fread
+#   define fread rpl_fread
+#  endif
+_GL_FUNCDECL_RPL (fread, size_t, (void *ptr, size_t s, size_t n, FILE *stream)
+                                 _GL_ARG_NONNULL ((4)));
+_GL_CXXALIAS_RPL (fread, size_t, (void *ptr, size_t s, size_t n, FILE *stream));
+# else
+_GL_CXXALIAS_SYS (fread, size_t, (void *ptr, size_t s, size_t n, FILE *stream));
+# endif
+_GL_CXXALIASWARN (fread);
+#endif
+
+#if @GNULIB_FREOPEN@
+# if @REPLACE_FREOPEN@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef freopen
+#   define freopen rpl_freopen
+#  endif
+_GL_FUNCDECL_RPL (freopen, FILE *,
+                  (const char *filename, const char *mode, FILE *stream)
+                  _GL_ARG_NONNULL ((2, 3)));
+_GL_CXXALIAS_RPL (freopen, FILE *,
+                  (const char *filename, const char *mode, FILE *stream));
+# else
+_GL_CXXALIAS_SYS (freopen, FILE *,
+                  (const char *filename, const char *mode, FILE *stream));
+# endif
+_GL_CXXALIASWARN (freopen);
+#elif defined GNULIB_POSIXCHECK
+# undef freopen
+/* Assume freopen is always declared.  */
+_GL_WARN_ON_USE (freopen,
+                 "freopen on native Windows platforms is not POSIX compliant - "
+                 "use gnulib module freopen for portability");
+#endif
+
+#if @GNULIB_FSCANF@
+# if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef fscanf
+#   define fscanf rpl_fscanf
+#  endif
+_GL_FUNCDECL_RPL (fscanf, int, (FILE *stream, const char *format, ...)
+                               _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (2, 3)
+                               _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (fscanf, int, (FILE *stream, const char *format, ...));
+# else
+_GL_CXXALIAS_SYS (fscanf, int, (FILE *stream, const char *format, ...));
+# endif
+_GL_CXXALIASWARN (fscanf);
+#endif
+
+
+/* Set up the following warnings, based on which modules are in use.
+   GNU Coding Standards discourage the use of fseek, since it imposes
+   an arbitrary limitation on some 32-bit hosts.  Remember that the
+   fseek module depends on the fseeko module, so we only have three
+   cases to consider:
+
+   1. The developer is not using either module.  Issue a warning under
+   GNULIB_POSIXCHECK for both functions, to remind them that both
+   functions have bugs on some systems.  _GL_NO_LARGE_FILES has no
+   impact on this warning.
+
+   2. The developer is using both modules.  They may be unaware of the
+   arbitrary limitations of fseek, so issue a warning under
+   GNULIB_POSIXCHECK.  On the other hand, they may be using both
+   modules intentionally, so the developer can define
+   _GL_NO_LARGE_FILES in the compilation units where the use of fseek
+   is safe, to silence the warning.
+
+   3. The developer is using the fseeko module, but not fseek.  Gnulib
+   guarantees that fseek will still work around platform bugs in that
+   case, but we presume that the developer is aware of the pitfalls of
+   fseek and was trying to avoid it, so issue a warning even when
+   GNULIB_POSIXCHECK is undefined.  Again, _GL_NO_LARGE_FILES can be
+   defined to silence the warning in particular compilation units.
+   In C++ compilations with GNULIB_NAMESPACE, in order to avoid that
+   fseek gets defined as a macro, it is recommended that the developer
+   uses the fseek module, even if he is not calling the fseek function.
+
+   Most gnulib clients that perform stream operations should fall into
+   category 3.  */
+
+#if @GNULIB_FSEEK@
+# if defined GNULIB_POSIXCHECK && !defined _GL_NO_LARGE_FILES
+#  define _GL_FSEEK_WARN /* Category 2, above.  */
+#  undef fseek
+# endif
+# if @REPLACE_FSEEK@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef fseek
+#   define fseek rpl_fseek
+#  endif
+_GL_FUNCDECL_RPL (fseek, int, (FILE *fp, long offset, int whence)
+                              _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (fseek, int, (FILE *fp, long offset, int whence));
+# else
+_GL_CXXALIAS_SYS (fseek, int, (FILE *fp, long offset, int whence));
+# endif
+_GL_CXXALIASWARN (fseek);
+#endif
+
+#if @GNULIB_FSEEKO@
+# if !@GNULIB_FSEEK@ && !defined _GL_NO_LARGE_FILES
+#  define _GL_FSEEK_WARN /* Category 3, above.  */
+#  undef fseek
+# endif
+# if @REPLACE_FSEEKO@
+/* Provide an fseeko function that is aware of a preceding fflush(), and which
+   detects pipes.  */
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef fseeko
+#   define fseeko rpl_fseeko
+#  endif
+_GL_FUNCDECL_RPL (fseeko, int, (FILE *fp, off_t offset, int whence)
+                               _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (fseeko, int, (FILE *fp, off_t offset, int whence));
+# else
+#  if ! @HAVE_DECL_FSEEKO@
+_GL_FUNCDECL_SYS (fseeko, int, (FILE *fp, off_t offset, int whence)
+                               _GL_ARG_NONNULL ((1)));
+#  endif
+_GL_CXXALIAS_SYS (fseeko, int, (FILE *fp, off_t offset, int whence));
+# endif
+_GL_CXXALIASWARN (fseeko);
+#elif defined GNULIB_POSIXCHECK
+# define _GL_FSEEK_WARN /* Category 1, above.  */
+# undef fseek
+# undef fseeko
+# if HAVE_RAW_DECL_FSEEKO
+_GL_WARN_ON_USE (fseeko, "fseeko is unportable - "
+                 "use gnulib module fseeko for portability");
+# endif
+#endif
+
+#ifdef _GL_FSEEK_WARN
+# undef _GL_FSEEK_WARN
+/* Here, either fseek is undefined (but C89 guarantees that it is
+   declared), or it is defined as rpl_fseek (declared above).  */
+_GL_WARN_ON_USE (fseek, "fseek cannot handle files larger than 4 GB "
+                 "on 32-bit platforms - "
+                 "use fseeko function for handling of large files");
+#endif
+
+
+/* ftell, ftello.  See the comments on fseek/fseeko.  */
+
+#if @GNULIB_FTELL@
+# if defined GNULIB_POSIXCHECK && !defined _GL_NO_LARGE_FILES
+#  define _GL_FTELL_WARN /* Category 2, above.  */
+#  undef ftell
+# endif
+# if @REPLACE_FTELL@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef ftell
+#   define ftell rpl_ftell
+#  endif
+_GL_FUNCDECL_RPL (ftell, long, (FILE *fp) _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (ftell, long, (FILE *fp));
+# else
+_GL_CXXALIAS_SYS (ftell, long, (FILE *fp));
+# endif
+_GL_CXXALIASWARN (ftell);
+#endif
+
+#if @GNULIB_FTELLO@
+# if !@GNULIB_FTELL@ && !defined _GL_NO_LARGE_FILES
+#  define _GL_FTELL_WARN /* Category 3, above.  */
+#  undef ftell
+# endif
+# if @REPLACE_FTELLO@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef ftello
+#   define ftello rpl_ftello
+#  endif
+_GL_FUNCDECL_RPL (ftello, off_t, (FILE *fp) _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (ftello, off_t, (FILE *fp));
+# else
+#  if ! @HAVE_DECL_FTELLO@
+_GL_FUNCDECL_SYS (ftello, off_t, (FILE *fp) _GL_ARG_NONNULL ((1)));
+#  endif
+_GL_CXXALIAS_SYS (ftello, off_t, (FILE *fp));
+# endif
+_GL_CXXALIASWARN (ftello);
+#elif defined GNULIB_POSIXCHECK
+# define _GL_FTELL_WARN /* Category 1, above.  */
+# undef ftell
+# undef ftello
+# if HAVE_RAW_DECL_FTELLO
+_GL_WARN_ON_USE (ftello, "ftello is unportable - "
+                 "use gnulib module ftello for portability");
+# endif
+#endif
+
+#ifdef _GL_FTELL_WARN
+# undef _GL_FTELL_WARN
+/* Here, either ftell is undefined (but C89 guarantees that it is
+   declared), or it is defined as rpl_ftell (declared above).  */
+_GL_WARN_ON_USE (ftell, "ftell cannot handle files larger than 4 GB "
+                 "on 32-bit platforms - "
+                 "use ftello function for handling of large files");
+#endif
+
+
+#if @GNULIB_FWRITE@
+# if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@)
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef fwrite
+#   define fwrite rpl_fwrite
+#  endif
+_GL_FUNCDECL_RPL (fwrite, size_t,
+                  (const void *ptr, size_t s, size_t n, FILE *stream)
+                  _GL_ARG_NONNULL ((1, 4)));
+_GL_CXXALIAS_RPL (fwrite, size_t,
+                  (const void *ptr, size_t s, size_t n, FILE *stream));
+# else
+_GL_CXXALIAS_SYS (fwrite, size_t,
+                  (const void *ptr, size_t s, size_t n, FILE *stream));
+
+/* Work around bug 11959 when fortifying glibc 2.4 through 2.15
+   <https://sourceware.org/bugzilla/show_bug.cgi?id=11959>,
+   which sometimes causes an unwanted diagnostic for fwrite calls.
+   This affects only function declaration attributes under certain
+   versions of gcc and clang, and is not needed for C++.  */
+#  if (0 < __USE_FORTIFY_LEVEL                                          \
+       && __GLIBC__ == 2 && 4 <= __GLIBC_MINOR__ && __GLIBC_MINOR__ <= 15 \
+       && 3 < __GNUC__ + (4 <= __GNUC_MINOR__)                          \
+       && !defined __cplusplus)
+#   undef fwrite
+#   undef fwrite_unlocked
+extern size_t __REDIRECT (rpl_fwrite,
+                          (const void *__restrict, size_t, size_t,
+                           FILE *__restrict),
+                          fwrite);
+extern size_t __REDIRECT (rpl_fwrite_unlocked,
+                          (const void *__restrict, size_t, size_t,
+                           FILE *__restrict),
+                          fwrite_unlocked);
+#   define fwrite rpl_fwrite
+#   define fwrite_unlocked rpl_fwrite_unlocked
+#  endif
+# endif
+_GL_CXXALIASWARN (fwrite);
+#endif
+
+#if @GNULIB_GETC@
+# if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef getc
+#   define getc rpl_fgetc
+#  endif
+_GL_FUNCDECL_RPL (fgetc, int, (FILE *stream) _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL_1 (getc, rpl_fgetc, int, (FILE *stream));
+# else
+_GL_CXXALIAS_SYS (getc, int, (FILE *stream));
+# endif
+_GL_CXXALIASWARN (getc);
+#endif
+
+#if @GNULIB_GETCHAR@
+# if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef getchar
+#   define getchar rpl_getchar
+#  endif
+_GL_FUNCDECL_RPL (getchar, int, (void));
+_GL_CXXALIAS_RPL (getchar, int, (void));
+# else
+_GL_CXXALIAS_SYS (getchar, int, (void));
+# endif
+_GL_CXXALIASWARN (getchar);
+#endif
+
+#if @GNULIB_GETDELIM@
+/* Read input, up to (and including) the next occurrence of DELIMITER, from
+   STREAM, store it in *LINEPTR (and NUL-terminate it).
+   *LINEPTR is a pointer returned from malloc (or NULL), pointing to *LINESIZE
+   bytes of space.  It is realloc'd as necessary.
+   Return the number of bytes read and stored at *LINEPTR (not including the
+   NUL terminator), or -1 on error or EOF.  */
+# if @REPLACE_GETDELIM@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef getdelim
+#   define getdelim rpl_getdelim
+#  endif
+_GL_FUNCDECL_RPL (getdelim, ssize_t,
+                  (char **lineptr, size_t *linesize, int delimiter,
+                   FILE *stream)
+                  _GL_ARG_NONNULL ((1, 2, 4)));
+_GL_CXXALIAS_RPL (getdelim, ssize_t,
+                  (char **lineptr, size_t *linesize, int delimiter,
+                   FILE *stream));
+# else
+#  if !@HAVE_DECL_GETDELIM@
+_GL_FUNCDECL_SYS (getdelim, ssize_t,
+                  (char **lineptr, size_t *linesize, int delimiter,
+                   FILE *stream)
+                  _GL_ARG_NONNULL ((1, 2, 4)));
+#  endif
+_GL_CXXALIAS_SYS (getdelim, ssize_t,
+                  (char **lineptr, size_t *linesize, int delimiter,
+                   FILE *stream));
+# endif
+_GL_CXXALIASWARN (getdelim);
+#elif defined GNULIB_POSIXCHECK
+# undef getdelim
+# if HAVE_RAW_DECL_GETDELIM
+_GL_WARN_ON_USE (getdelim, "getdelim is unportable - "
+                 "use gnulib module getdelim for portability");
+# endif
+#endif
+
+#if @GNULIB_GETLINE@
+/* Read a line, up to (and including) the next newline, from STREAM, store it
+   in *LINEPTR (and NUL-terminate it).
+   *LINEPTR is a pointer returned from malloc (or NULL), pointing to *LINESIZE
+   bytes of space.  It is realloc'd as necessary.
+   Return the number of bytes read and stored at *LINEPTR (not including the
+   NUL terminator), or -1 on error or EOF.  */
+# if @REPLACE_GETLINE@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef getline
+#   define getline rpl_getline
+#  endif
+_GL_FUNCDECL_RPL (getline, ssize_t,
+                  (char **lineptr, size_t *linesize, FILE *stream)
+                  _GL_ARG_NONNULL ((1, 2, 3)));
+_GL_CXXALIAS_RPL (getline, ssize_t,
+                  (char **lineptr, size_t *linesize, FILE *stream));
+# else
+#  if !@HAVE_DECL_GETLINE@
+_GL_FUNCDECL_SYS (getline, ssize_t,
+                  (char **lineptr, size_t *linesize, FILE *stream)
+                  _GL_ARG_NONNULL ((1, 2, 3)));
+#  endif
+_GL_CXXALIAS_SYS (getline, ssize_t,
+                  (char **lineptr, size_t *linesize, FILE *stream));
+# endif
+# if @HAVE_DECL_GETLINE@
+_GL_CXXALIASWARN (getline);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef getline
+# if HAVE_RAW_DECL_GETLINE
+_GL_WARN_ON_USE (getline, "getline is unportable - "
+                 "use gnulib module getline for portability");
+# endif
+#endif
+
+/* It is very rare that the developer ever has full control of stdin,
+   so any use of gets warrants an unconditional warning; besides, C11
+   removed it.  */
+#undef gets
+#if HAVE_RAW_DECL_GETS && !defined __cplusplus
+_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
+#endif
+
+#if @GNULIB_OBSTACK_PRINTF@ || @GNULIB_OBSTACK_PRINTF_POSIX@
+struct obstack;
+/* Grow an obstack with formatted output.  Return the number of
+   bytes added to OBS.  No trailing nul byte is added, and the
+   object should be closed with obstack_finish before use.  Upon
+   memory allocation error, call obstack_alloc_failed_handler.  Upon
+   other error, return -1.  */
+# if @REPLACE_OBSTACK_PRINTF@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define obstack_printf rpl_obstack_printf
+#  endif
+_GL_FUNCDECL_RPL (obstack_printf, int,
+                  (struct obstack *obs, const char *format, ...)
+                  _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
+                  _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (obstack_printf, int,
+                  (struct obstack *obs, const char *format, ...));
+# else
+#  if !@HAVE_DECL_OBSTACK_PRINTF@
+_GL_FUNCDECL_SYS (obstack_printf, int,
+                  (struct obstack *obs, const char *format, ...)
+                  _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
+                  _GL_ARG_NONNULL ((1, 2)));
+#  endif
+_GL_CXXALIAS_SYS (obstack_printf, int,
+                  (struct obstack *obs, const char *format, ...));
+# endif
+_GL_CXXALIASWARN (obstack_printf);
+# if @REPLACE_OBSTACK_PRINTF@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define obstack_vprintf rpl_obstack_vprintf
+#  endif
+_GL_FUNCDECL_RPL (obstack_vprintf, int,
+                  (struct obstack *obs, const char *format, va_list args)
+                  _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0)
+                  _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (obstack_vprintf, int,
+                  (struct obstack *obs, const char *format, va_list args));
+# else
+#  if !@HAVE_DECL_OBSTACK_PRINTF@
+_GL_FUNCDECL_SYS (obstack_vprintf, int,
+                  (struct obstack *obs, const char *format, va_list args)
+                  _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0)
+                  _GL_ARG_NONNULL ((1, 2)));
+#  endif
+_GL_CXXALIAS_SYS (obstack_vprintf, int,
+                  (struct obstack *obs, const char *format, va_list args));
+# endif
+_GL_CXXALIASWARN (obstack_vprintf);
+#endif
+
+#if @GNULIB_PCLOSE@
+# if !@HAVE_PCLOSE@
+_GL_FUNCDECL_SYS (pclose, int, (FILE *stream) _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (pclose, int, (FILE *stream));
+_GL_CXXALIASWARN (pclose);
+#elif defined GNULIB_POSIXCHECK
+# undef pclose
+# if HAVE_RAW_DECL_PCLOSE
+_GL_WARN_ON_USE (pclose, "pclose is unportable - "
+                 "use gnulib module pclose for more portability");
+# endif
+#endif
+
+#if @GNULIB_PERROR@
+/* Print a message to standard error, describing the value of ERRNO,
+   (if STRING is not NULL and not empty) prefixed with STRING and ": ",
+   and terminated with a newline.  */
+# if @REPLACE_PERROR@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define perror rpl_perror
+#  endif
+_GL_FUNCDECL_RPL (perror, void, (const char *string));
+_GL_CXXALIAS_RPL (perror, void, (const char *string));
+# else
+_GL_CXXALIAS_SYS (perror, void, (const char *string));
+# endif
+_GL_CXXALIASWARN (perror);
+#elif defined GNULIB_POSIXCHECK
+# undef perror
+/* Assume perror is always declared.  */
+_GL_WARN_ON_USE (perror, "perror is not always POSIX compliant - "
+                 "use gnulib module perror for portability");
+#endif
+
+#if @GNULIB_POPEN@
+# if @REPLACE_POPEN@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef popen
+#   define popen rpl_popen
+#  endif
+_GL_FUNCDECL_RPL (popen, FILE *, (const char *cmd, const char *mode)
+                                 _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (popen, FILE *, (const char *cmd, const char *mode));
+# else
+#  if !@HAVE_POPEN@
+_GL_FUNCDECL_SYS (popen, FILE *, (const char *cmd, const char *mode)
+                                 _GL_ARG_NONNULL ((1, 2)));
+#  endif
+_GL_CXXALIAS_SYS (popen, FILE *, (const char *cmd, const char *mode));
+# endif
+_GL_CXXALIASWARN (popen);
+#elif defined GNULIB_POSIXCHECK
+# undef popen
+# if HAVE_RAW_DECL_POPEN
+_GL_WARN_ON_USE (popen, "popen is buggy on some platforms - "
+                 "use gnulib module popen or pipe for more portability");
+# endif
+#endif
+
+#if @GNULIB_PRINTF_POSIX@ || @GNULIB_PRINTF@
+# if (@GNULIB_PRINTF_POSIX@ && @REPLACE_PRINTF@) \
+     || (@GNULIB_PRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@))
+#  if defined __GNUC__
+#   if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+/* Don't break __attribute__((format(printf,M,N))).  */
+#    define printf __printf__
+#   endif
+#   if @GNULIB_PRINTF_POSIX@ || @GNULIB_VFPRINTF_POSIX@
+_GL_FUNCDECL_RPL_1 (__printf__, int,
+                    (const char *format, ...)
+                    __asm__ (@ASM_SYMBOL_PREFIX@
+                             _GL_STDIO_MACROEXPAND_AND_STRINGIZE(rpl_printf))
+                    _GL_ATTRIBUTE_FORMAT_PRINTF (1, 2)
+                    _GL_ARG_NONNULL ((1)));
+#   else
+_GL_FUNCDECL_RPL_1 (__printf__, int,
+                    (const char *format, ...)
+                    __asm__ (@ASM_SYMBOL_PREFIX@
+                             _GL_STDIO_MACROEXPAND_AND_STRINGIZE(rpl_printf))
+                    _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (1, 2)
+                    _GL_ARG_NONNULL ((1)));
+#   endif
+_GL_CXXALIAS_RPL_1 (printf, __printf__, int, (const char *format, ...));
+#  else
+#   if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#    define printf rpl_printf
+#   endif
+_GL_FUNCDECL_RPL (printf, int,
+                  (const char *format, ...)
+                  _GL_ATTRIBUTE_FORMAT_PRINTF (1, 2)
+                  _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (printf, int, (const char *format, ...));
+#  endif
+#  define GNULIB_overrides_printf 1
+# else
+_GL_CXXALIAS_SYS (printf, int, (const char *format, ...));
+# endif
+_GL_CXXALIASWARN (printf);
+#endif
+#if !@GNULIB_PRINTF_POSIX@ && defined GNULIB_POSIXCHECK
+# if !GNULIB_overrides_printf
+#  undef printf
+# endif
+/* Assume printf is always declared.  */
+_GL_WARN_ON_USE (printf, "printf is not always POSIX compliant - "
+                 "use gnulib module printf-posix for portable "
+                 "POSIX compliance");
+#endif
+
+#if @GNULIB_PUTC@
+# if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@)
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef putc
+#   define putc rpl_fputc
+#  endif
+_GL_FUNCDECL_RPL (fputc, int, (int c, FILE *stream) _GL_ARG_NONNULL ((2)));
+_GL_CXXALIAS_RPL_1 (putc, rpl_fputc, int, (int c, FILE *stream));
+# else
+_GL_CXXALIAS_SYS (putc, int, (int c, FILE *stream));
+# endif
+_GL_CXXALIASWARN (putc);
+#endif
+
+#if @GNULIB_PUTCHAR@
+# if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@)
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef putchar
+#   define putchar rpl_putchar
+#  endif
+_GL_FUNCDECL_RPL (putchar, int, (int c));
+_GL_CXXALIAS_RPL (putchar, int, (int c));
+# else
+_GL_CXXALIAS_SYS (putchar, int, (int c));
+# endif
+_GL_CXXALIASWARN (putchar);
+#endif
+
+#if @GNULIB_PUTS@
+# if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@)
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef puts
+#   define puts rpl_puts
+#  endif
+_GL_FUNCDECL_RPL (puts, int, (const char *string) _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (puts, int, (const char *string));
+# else
+_GL_CXXALIAS_SYS (puts, int, (const char *string));
+# endif
+_GL_CXXALIASWARN (puts);
+#endif
+
+#if @GNULIB_REMOVE@
+# if @REPLACE_REMOVE@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef remove
+#   define remove rpl_remove
+#  endif
+_GL_FUNCDECL_RPL (remove, int, (const char *name) _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (remove, int, (const char *name));
+# else
+_GL_CXXALIAS_SYS (remove, int, (const char *name));
+# endif
+_GL_CXXALIASWARN (remove);
+#elif defined GNULIB_POSIXCHECK
+# undef remove
+/* Assume remove is always declared.  */
+_GL_WARN_ON_USE (remove, "remove cannot handle directories on some platforms - "
+                 "use gnulib module remove for more portability");
+#endif
+
+#if @GNULIB_RENAME@
+# if @REPLACE_RENAME@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef rename
+#   define rename rpl_rename
+#  endif
+_GL_FUNCDECL_RPL (rename, int,
+                  (const char *old_filename, const char *new_filename)
+                  _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (rename, int,
+                  (const char *old_filename, const char *new_filename));
+# else
+_GL_CXXALIAS_SYS (rename, int,
+                  (const char *old_filename, const char *new_filename));
+# endif
+_GL_CXXALIASWARN (rename);
+#elif defined GNULIB_POSIXCHECK
+# undef rename
+/* Assume rename is always declared.  */
+_GL_WARN_ON_USE (rename, "rename is buggy on some platforms - "
+                 "use gnulib module rename for more portability");
+#endif
+
+#if @GNULIB_RENAMEAT@
+# if @REPLACE_RENAMEAT@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef renameat
+#   define renameat rpl_renameat
+#  endif
+_GL_FUNCDECL_RPL (renameat, int,
+                  (int fd1, char const *file1, int fd2, char const *file2)
+                  _GL_ARG_NONNULL ((2, 4)));
+_GL_CXXALIAS_RPL (renameat, int,
+                  (int fd1, char const *file1, int fd2, char const *file2));
+# else
+#  if !@HAVE_RENAMEAT@
+_GL_FUNCDECL_SYS (renameat, int,
+                  (int fd1, char const *file1, int fd2, char const *file2)
+                  _GL_ARG_NONNULL ((2, 4)));
+#  endif
+_GL_CXXALIAS_SYS (renameat, int,
+                  (int fd1, char const *file1, int fd2, char const *file2));
+# endif
+_GL_CXXALIASWARN (renameat);
+#elif defined GNULIB_POSIXCHECK
+# undef renameat
+# if HAVE_RAW_DECL_RENAMEAT
+_GL_WARN_ON_USE (renameat, "renameat is not portable - "
+                 "use gnulib module renameat for portability");
+# endif
+#endif
+
+#if @GNULIB_SCANF@
+# if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@
+#  if defined __GNUC__
+#   if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#    undef scanf
+/* Don't break __attribute__((format(scanf,M,N))).  */
+#    define scanf __scanf__
+#   endif
+_GL_FUNCDECL_RPL_1 (__scanf__, int,
+                    (const char *format, ...)
+                    __asm__ (@ASM_SYMBOL_PREFIX@
+                             _GL_STDIO_MACROEXPAND_AND_STRINGIZE(rpl_scanf))
+                    _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (1, 2)
+                    _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL_1 (scanf, __scanf__, int, (const char *format, ...));
+#  else
+#   if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#    undef scanf
+#    define scanf rpl_scanf
+#   endif
+_GL_FUNCDECL_RPL (scanf, int, (const char *format, ...)
+                              _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (1, 2)
+                              _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (scanf, int, (const char *format, ...));
+#  endif
+# else
+_GL_CXXALIAS_SYS (scanf, int, (const char *format, ...));
+# endif
+_GL_CXXALIASWARN (scanf);
+#endif
+
+#if @GNULIB_SNPRINTF@
+# if @REPLACE_SNPRINTF@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define snprintf rpl_snprintf
+#  endif
+_GL_FUNCDECL_RPL (snprintf, int,
+                  (char *str, size_t size, const char *format, ...)
+                  _GL_ATTRIBUTE_FORMAT_PRINTF (3, 4)
+                  _GL_ARG_NONNULL ((3)));
+_GL_CXXALIAS_RPL (snprintf, int,
+                  (char *str, size_t size, const char *format, ...));
+# else
+#  if !@HAVE_DECL_SNPRINTF@
+_GL_FUNCDECL_SYS (snprintf, int,
+                  (char *str, size_t size, const char *format, ...)
+                  _GL_ATTRIBUTE_FORMAT_PRINTF (3, 4)
+                  _GL_ARG_NONNULL ((3)));
+#  endif
+_GL_CXXALIAS_SYS (snprintf, int,
+                  (char *str, size_t size, const char *format, ...));
+# endif
+_GL_CXXALIASWARN (snprintf);
+#elif defined GNULIB_POSIXCHECK
+# undef snprintf
+# if HAVE_RAW_DECL_SNPRINTF
+_GL_WARN_ON_USE (snprintf, "snprintf is unportable - "
+                 "use gnulib module snprintf for portability");
+# endif
+#endif
+
+/* Some people would argue that all sprintf uses should be warned about
+   (for example, OpenBSD issues a link warning for it),
+   since it can cause security holes due to buffer overruns.
+   However, we believe that sprintf can be used safely, and is more
+   efficient than snprintf in those safe cases; and as proof of our
+   belief, we use sprintf in several gnulib modules.  So this header
+   intentionally avoids adding a warning to sprintf except when
+   GNULIB_POSIXCHECK is defined.  */
+
+#if @GNULIB_SPRINTF_POSIX@
+# if @REPLACE_SPRINTF@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define sprintf rpl_sprintf
+#  endif
+_GL_FUNCDECL_RPL (sprintf, int, (char *str, const char *format, ...)
+                                _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
+                                _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (sprintf, int, (char *str, const char *format, ...));
+# else
+_GL_CXXALIAS_SYS (sprintf, int, (char *str, const char *format, ...));
+# endif
+_GL_CXXALIASWARN (sprintf);
+#elif defined GNULIB_POSIXCHECK
+# undef sprintf
+/* Assume sprintf is always declared.  */
+_GL_WARN_ON_USE (sprintf, "sprintf is not always POSIX compliant - "
+                 "use gnulib module sprintf-posix for portable "
+                 "POSIX compliance");
+#endif
+
+#if @GNULIB_TMPFILE@
+# if @REPLACE_TMPFILE@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define tmpfile rpl_tmpfile
+#  endif
+_GL_FUNCDECL_RPL (tmpfile, FILE *, (void));
+_GL_CXXALIAS_RPL (tmpfile, FILE *, (void));
+# else
+_GL_CXXALIAS_SYS (tmpfile, FILE *, (void));
+# endif
+_GL_CXXALIASWARN (tmpfile);
+#elif defined GNULIB_POSIXCHECK
+# undef tmpfile
+# if HAVE_RAW_DECL_TMPFILE
+_GL_WARN_ON_USE (tmpfile, "tmpfile is not usable on mingw - "
+                 "use gnulib module tmpfile for portability");
+# endif
+#endif
+
+#if @GNULIB_VASPRINTF@
+/* Write formatted output to a string dynamically allocated with malloc().
+   If the memory allocation succeeds, store the address of the string in
+   *RESULT and return the number of resulting bytes, excluding the trailing
+   NUL.  Upon memory allocation error, or some other error, return -1.  */
+# if @REPLACE_VASPRINTF@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define asprintf rpl_asprintf
+#  endif
+_GL_FUNCDECL_RPL (asprintf, int,
+                  (char **result, const char *format, ...)
+                  _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
+                  _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (asprintf, int,
+                  (char **result, const char *format, ...));
+# else
+#  if !@HAVE_VASPRINTF@
+_GL_FUNCDECL_SYS (asprintf, int,
+                  (char **result, const char *format, ...)
+                  _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
+                  _GL_ARG_NONNULL ((1, 2)));
+#  endif
+_GL_CXXALIAS_SYS (asprintf, int,
+                  (char **result, const char *format, ...));
+# endif
+_GL_CXXALIASWARN (asprintf);
+# if @REPLACE_VASPRINTF@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define vasprintf rpl_vasprintf
+#  endif
+_GL_FUNCDECL_RPL (vasprintf, int,
+                  (char **result, const char *format, va_list args)
+                  _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0)
+                  _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (vasprintf, int,
+                  (char **result, const char *format, va_list args));
+# else
+#  if !@HAVE_VASPRINTF@
+_GL_FUNCDECL_SYS (vasprintf, int,
+                  (char **result, const char *format, va_list args)
+                  _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0)
+                  _GL_ARG_NONNULL ((1, 2)));
+#  endif
+_GL_CXXALIAS_SYS (vasprintf, int,
+                  (char **result, const char *format, va_list args));
+# endif
+_GL_CXXALIASWARN (vasprintf);
+#endif
+
+#if @GNULIB_VDPRINTF@
+# if @REPLACE_VDPRINTF@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define vdprintf rpl_vdprintf
+#  endif
+_GL_FUNCDECL_RPL (vdprintf, int, (int fd, const char *format, va_list args)
+                                 _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0)
+                                 _GL_ARG_NONNULL ((2)));
+_GL_CXXALIAS_RPL (vdprintf, int, (int fd, const char *format, va_list args));
+# else
+#  if !@HAVE_VDPRINTF@
+_GL_FUNCDECL_SYS (vdprintf, int, (int fd, const char *format, va_list args)
+                                 _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0)
+                                 _GL_ARG_NONNULL ((2)));
+#  endif
+/* Need to cast, because on Solaris, the third parameter will likely be
+                                                    __va_list args.  */
+_GL_CXXALIAS_SYS_CAST (vdprintf, int,
+                       (int fd, const char *format, va_list args));
+# endif
+_GL_CXXALIASWARN (vdprintf);
+#elif defined GNULIB_POSIXCHECK
+# undef vdprintf
+# if HAVE_RAW_DECL_VDPRINTF
+_GL_WARN_ON_USE (vdprintf, "vdprintf is unportable - "
+                 "use gnulib module vdprintf for portability");
+# endif
+#endif
+
+#if @GNULIB_VFPRINTF_POSIX@ || @GNULIB_VFPRINTF@
+# if (@GNULIB_VFPRINTF_POSIX@ && @REPLACE_VFPRINTF@) \
+     || (@GNULIB_VFPRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@))
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define vfprintf rpl_vfprintf
+#  endif
+#  define GNULIB_overrides_vfprintf 1
+#  if @GNULIB_VFPRINTF_POSIX@
+_GL_FUNCDECL_RPL (vfprintf, int, (FILE *fp, const char *format, va_list args)
+                                 _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0)
+                                 _GL_ARG_NONNULL ((1, 2)));
+#  else
+_GL_FUNCDECL_RPL (vfprintf, int, (FILE *fp, const char *format, va_list args)
+                                 _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (2, 0)
+                                 _GL_ARG_NONNULL ((1, 2)));
+#  endif
+_GL_CXXALIAS_RPL (vfprintf, int, (FILE *fp, const char *format, va_list args));
+# else
+/* Need to cast, because on Solaris, the third parameter is
+                                                      __va_list args
+   and GCC's fixincludes did not change this to __gnuc_va_list.  */
+_GL_CXXALIAS_SYS_CAST (vfprintf, int,
+                       (FILE *fp, const char *format, va_list args));
+# endif
+_GL_CXXALIASWARN (vfprintf);
+#endif
+#if !@GNULIB_VFPRINTF_POSIX@ && defined GNULIB_POSIXCHECK
+# if !GNULIB_overrides_vfprintf
+#  undef vfprintf
+# endif
+/* Assume vfprintf is always declared.  */
+_GL_WARN_ON_USE (vfprintf, "vfprintf is not always POSIX compliant - "
+                 "use gnulib module vfprintf-posix for portable "
+                      "POSIX compliance");
+#endif
+
+#if @GNULIB_VFSCANF@
+# if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef vfscanf
+#   define vfscanf rpl_vfscanf
+#  endif
+_GL_FUNCDECL_RPL (vfscanf, int,
+                  (FILE *stream, const char *format, va_list args)
+                  _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (2, 0)
+                  _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (vfscanf, int,
+                  (FILE *stream, const char *format, va_list args));
+# else
+_GL_CXXALIAS_SYS (vfscanf, int,
+                  (FILE *stream, const char *format, va_list args));
+# endif
+_GL_CXXALIASWARN (vfscanf);
+#endif
+
+#if @GNULIB_VPRINTF_POSIX@ || @GNULIB_VPRINTF@
+# if (@GNULIB_VPRINTF_POSIX@ && @REPLACE_VPRINTF@) \
+     || (@GNULIB_VPRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@))
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define vprintf rpl_vprintf
+#  endif
+#  define GNULIB_overrides_vprintf 1
+#  if @GNULIB_VPRINTF_POSIX@ || @GNULIB_VFPRINTF_POSIX@
+_GL_FUNCDECL_RPL (vprintf, int, (const char *format, va_list args)
+                                _GL_ATTRIBUTE_FORMAT_PRINTF (1, 0)
+                                _GL_ARG_NONNULL ((1)));
+#  else
+_GL_FUNCDECL_RPL (vprintf, int, (const char *format, va_list args)
+                                _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (1, 0)
+                                _GL_ARG_NONNULL ((1)));
+#  endif
+_GL_CXXALIAS_RPL (vprintf, int, (const char *format, va_list args));
+# else
+/* Need to cast, because on Solaris, the second parameter is
+                                                          __va_list args
+   and GCC's fixincludes did not change this to __gnuc_va_list.  */
+_GL_CXXALIAS_SYS_CAST (vprintf, int, (const char *format, va_list args));
+# endif
+_GL_CXXALIASWARN (vprintf);
+#endif
+#if !@GNULIB_VPRINTF_POSIX@ && defined GNULIB_POSIXCHECK
+# if !GNULIB_overrides_vprintf
+#  undef vprintf
+# endif
+/* Assume vprintf is always declared.  */
+_GL_WARN_ON_USE (vprintf, "vprintf is not always POSIX compliant - "
+                 "use gnulib module vprintf-posix for portable "
+                 "POSIX compliance");
+#endif
+
+#if @GNULIB_VSCANF@
+# if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef vscanf
+#   define vscanf rpl_vscanf
+#  endif
+_GL_FUNCDECL_RPL (vscanf, int, (const char *format, va_list args)
+                               _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (1, 0)
+                               _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (vscanf, int, (const char *format, va_list args));
+# else
+_GL_CXXALIAS_SYS (vscanf, int, (const char *format, va_list args));
+# endif
+_GL_CXXALIASWARN (vscanf);
+#endif
+
+#if @GNULIB_VSNPRINTF@
+# if @REPLACE_VSNPRINTF@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define vsnprintf rpl_vsnprintf
+#  endif
+_GL_FUNCDECL_RPL (vsnprintf, int,
+                  (char *str, size_t size, const char *format, va_list args)
+                  _GL_ATTRIBUTE_FORMAT_PRINTF (3, 0)
+                  _GL_ARG_NONNULL ((3)));
+_GL_CXXALIAS_RPL (vsnprintf, int,
+                  (char *str, size_t size, const char *format, va_list args));
+# else
+#  if !@HAVE_DECL_VSNPRINTF@
+_GL_FUNCDECL_SYS (vsnprintf, int,
+                  (char *str, size_t size, const char *format, va_list args)
+                  _GL_ATTRIBUTE_FORMAT_PRINTF (3, 0)
+                  _GL_ARG_NONNULL ((3)));
+#  endif
+_GL_CXXALIAS_SYS (vsnprintf, int,
+                  (char *str, size_t size, const char *format, va_list args));
+# endif
+_GL_CXXALIASWARN (vsnprintf);
+#elif defined GNULIB_POSIXCHECK
+# undef vsnprintf
+# if HAVE_RAW_DECL_VSNPRINTF
+_GL_WARN_ON_USE (vsnprintf, "vsnprintf is unportable - "
+                 "use gnulib module vsnprintf for portability");
+# endif
+#endif
+
+#if @GNULIB_VSPRINTF_POSIX@
+# if @REPLACE_VSPRINTF@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define vsprintf rpl_vsprintf
+#  endif
+_GL_FUNCDECL_RPL (vsprintf, int,
+                  (char *str, const char *format, va_list args)
+                  _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0)
+                  _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (vsprintf, int,
+                  (char *str, const char *format, va_list args));
+# else
+/* Need to cast, because on Solaris, the third parameter is
+                                                       __va_list args
+   and GCC's fixincludes did not change this to __gnuc_va_list.  */
+_GL_CXXALIAS_SYS_CAST (vsprintf, int,
+                       (char *str, const char *format, va_list args));
+# endif
+_GL_CXXALIASWARN (vsprintf);
+#elif defined GNULIB_POSIXCHECK
+# undef vsprintf
+/* Assume vsprintf is always declared.  */
+_GL_WARN_ON_USE (vsprintf, "vsprintf is not always POSIX compliant - "
+                 "use gnulib module vsprintf-posix for portable "
+                      "POSIX compliance");
+#endif
+
+#endif /* _@GUARD_PREFIX@_STDIO_H */
+#endif /* _@GUARD_PREFIX@_STDIO_H */
+#endif
similarity index 91%
rename from src/libs/gnulib/lib/streq.h
rename to lib/streq.h
index 0f7bc72..bde1b95 100644 (file)
@@ -1,18 +1,18 @@
 /* Optimized string comparison.
-   Copyright (C) 2001-2002, 2007, 2009-2014 Free Software Foundation, Inc.
+   Copyright (C) 2001-2002, 2007, 2009-2018 Free Software Foundation, Inc.
 
    This program is free software: you can redistribute it and/or modify it
-   under the terms of the GNU Lesser General Public License as published
+   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
-   Lesser General Public License for more details.
+   General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
 
 /* Written by Bruno Haible <bruno@clisp.org>.  */
 
diff --git a/lib/string.in.h b/lib/string.in.h
new file mode 100644 (file)
index 0000000..29f4ba6
--- /dev/null
@@ -0,0 +1,1063 @@
+/* A GNU-like <string.h>.
+
+   Copyright (C) 1995-1996, 2001-2018 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, 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 <https://www.gnu.org/licenses/>.  */
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+@PRAGMA_COLUMNS@
+
+#if defined _GL_ALREADY_INCLUDING_STRING_H
+/* Special invocation convention:
+   - On OS X/NetBSD we have a sequence of nested includes
+       <string.h> -> <strings.h> -> "string.h"
+     In this situation system _chk variants due to -D_FORTIFY_SOURCE
+     might be used after any replacements defined here.  */
+
+#@INCLUDE_NEXT@ @NEXT_STRING_H@
+
+#else
+/* Normal invocation convention.  */
+
+#ifndef _@GUARD_PREFIX@_STRING_H
+
+#define _GL_ALREADY_INCLUDING_STRING_H
+
+/* The include_next requires a split double-inclusion guard.  */
+#@INCLUDE_NEXT@ @NEXT_STRING_H@
+
+#undef _GL_ALREADY_INCLUDING_STRING_H
+
+#ifndef _@GUARD_PREFIX@_STRING_H
+#define _@GUARD_PREFIX@_STRING_H
+
+/* NetBSD 5.0 mis-defines NULL.  */
+#include <stddef.h>
+
+/* MirBSD defines mbslen as a macro.  */
+#if @GNULIB_MBSLEN@ && defined __MirBSD__
+# include <wchar.h>
+#endif
+
+/* The __attribute__ feature is available in gcc versions 2.5 and later.
+   The attribute __pure__ was added in gcc 2.96.  */
+#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
+# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__))
+#else
+# define _GL_ATTRIBUTE_PURE /* empty */
+#endif
+
+/* NetBSD 5.0 declares strsignal in <unistd.h>, not in <string.h>.  */
+/* But in any case avoid namespace pollution on glibc systems.  */
+#if (@GNULIB_STRSIGNAL@ || defined GNULIB_POSIXCHECK) && defined __NetBSD__ \
+    && ! defined __GLIBC__
+# include <unistd.h>
+#endif
+
+/* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */
+
+/* The definition of _GL_ARG_NONNULL is copied here.  */
+
+/* The definition of _GL_WARN_ON_USE is copied here.  */
+
+
+/* Clear a block of memory.  The compiler will not delete a call to
+   this function, even if the block is dead after the call.  */
+#if @GNULIB_EXPLICIT_BZERO@
+# if ! @HAVE_EXPLICIT_BZERO@
+_GL_FUNCDECL_SYS (explicit_bzero, void,
+                  (void *__dest, size_t __n) _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (explicit_bzero, void, (void *__dest, size_t __n));
+_GL_CXXALIASWARN (explicit_bzero);
+#elif defined GNULIB_POSIXCHECK
+# undef explicit_bzero
+# if HAVE_RAW_DECL_EXPLICIT_BZERO
+_GL_WARN_ON_USE (explicit_bzero, "explicit_bzero is unportable - "
+                 "use gnulib module explicit_bzero for portability");
+# endif
+#endif
+
+/* Find the index of the least-significant set bit.  */
+#if @GNULIB_FFSL@
+# if !@HAVE_FFSL@
+_GL_FUNCDECL_SYS (ffsl, int, (long int i));
+# endif
+_GL_CXXALIAS_SYS (ffsl, int, (long int i));
+_GL_CXXALIASWARN (ffsl);
+#elif defined GNULIB_POSIXCHECK
+# undef ffsl
+# if HAVE_RAW_DECL_FFSL
+_GL_WARN_ON_USE (ffsl, "ffsl is not portable - use the ffsl module");
+# endif
+#endif
+
+
+/* Find the index of the least-significant set bit.  */
+#if @GNULIB_FFSLL@
+# if !@HAVE_FFSLL@
+_GL_FUNCDECL_SYS (ffsll, int, (long long int i));
+# endif
+_GL_CXXALIAS_SYS (ffsll, int, (long long int i));
+_GL_CXXALIASWARN (ffsll);
+#elif defined GNULIB_POSIXCHECK
+# undef ffsll
+# if HAVE_RAW_DECL_FFSLL
+_GL_WARN_ON_USE (ffsll, "ffsll is not portable - use the ffsll module");
+# endif
+#endif
+
+
+/* Return the first instance of C within N bytes of S, or NULL.  */
+#if @GNULIB_MEMCHR@
+# if @REPLACE_MEMCHR@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define memchr rpl_memchr
+#  endif
+_GL_FUNCDECL_RPL (memchr, void *, (void const *__s, int __c, size_t __n)
+                                  _GL_ATTRIBUTE_PURE
+                                  _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (memchr, void *, (void const *__s, int __c, size_t __n));
+# else
+#  if ! @HAVE_MEMCHR@
+_GL_FUNCDECL_SYS (memchr, void *, (void const *__s, int __c, size_t __n)
+                                  _GL_ATTRIBUTE_PURE
+                                  _GL_ARG_NONNULL ((1)));
+#  endif
+  /* On some systems, this function is defined as an overloaded function:
+       extern "C" { const void * std::memchr (const void *, int, size_t); }
+       extern "C++" { void * std::memchr (void *, int, size_t); }  */
+_GL_CXXALIAS_SYS_CAST2 (memchr,
+                        void *, (void const *__s, int __c, size_t __n),
+                        void const *, (void const *__s, int __c, size_t __n));
+# endif
+# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
+     && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
+_GL_CXXALIASWARN1 (memchr, void *, (void *__s, int __c, size_t __n));
+_GL_CXXALIASWARN1 (memchr, void const *,
+                   (void const *__s, int __c, size_t __n));
+# else
+_GL_CXXALIASWARN (memchr);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef memchr
+/* Assume memchr is always declared.  */
+_GL_WARN_ON_USE (memchr, "memchr has platform-specific bugs - "
+                 "use gnulib module memchr for portability" );
+#endif
+
+/* Return the first occurrence of NEEDLE in HAYSTACK.  */
+#if @GNULIB_MEMMEM@
+# if @REPLACE_MEMMEM@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define memmem rpl_memmem
+#  endif
+_GL_FUNCDECL_RPL (memmem, void *,
+                  (void const *__haystack, size_t __haystack_len,
+                   void const *__needle, size_t __needle_len)
+                  _GL_ATTRIBUTE_PURE
+                  _GL_ARG_NONNULL ((1, 3)));
+_GL_CXXALIAS_RPL (memmem, void *,
+                  (void const *__haystack, size_t __haystack_len,
+                   void const *__needle, size_t __needle_len));
+# else
+#  if ! @HAVE_DECL_MEMMEM@
+_GL_FUNCDECL_SYS (memmem, void *,
+                  (void const *__haystack, size_t __haystack_len,
+                   void const *__needle, size_t __needle_len)
+                  _GL_ATTRIBUTE_PURE
+                  _GL_ARG_NONNULL ((1, 3)));
+#  endif
+_GL_CXXALIAS_SYS (memmem, void *,
+                  (void const *__haystack, size_t __haystack_len,
+                   void const *__needle, size_t __needle_len));
+# endif
+_GL_CXXALIASWARN (memmem);
+#elif defined GNULIB_POSIXCHECK
+# undef memmem
+# if HAVE_RAW_DECL_MEMMEM
+_GL_WARN_ON_USE (memmem, "memmem is unportable and often quadratic - "
+                 "use gnulib module memmem-simple for portability, "
+                 "and module memmem for speed" );
+# endif
+#endif
+
+/* Copy N bytes of SRC to DEST, return pointer to bytes after the
+   last written byte.  */
+#if @GNULIB_MEMPCPY@
+# if ! @HAVE_MEMPCPY@
+_GL_FUNCDECL_SYS (mempcpy, void *,
+                  (void *restrict __dest, void const *restrict __src,
+                   size_t __n)
+                  _GL_ARG_NONNULL ((1, 2)));
+# endif
+_GL_CXXALIAS_SYS (mempcpy, void *,
+                  (void *restrict __dest, void const *restrict __src,
+                   size_t __n));
+_GL_CXXALIASWARN (mempcpy);
+#elif defined GNULIB_POSIXCHECK
+# undef mempcpy
+# if HAVE_RAW_DECL_MEMPCPY
+_GL_WARN_ON_USE (mempcpy, "mempcpy is unportable - "
+                 "use gnulib module mempcpy for portability");
+# endif
+#endif
+
+/* Search backwards through a block for a byte (specified as an int).  */
+#if @GNULIB_MEMRCHR@
+# if ! @HAVE_DECL_MEMRCHR@
+_GL_FUNCDECL_SYS (memrchr, void *, (void const *, int, size_t)
+                                   _GL_ATTRIBUTE_PURE
+                                   _GL_ARG_NONNULL ((1)));
+# endif
+  /* On some systems, this function is defined as an overloaded function:
+       extern "C++" { const void * std::memrchr (const void *, int, size_t); }
+       extern "C++" { void * std::memrchr (void *, int, size_t); }  */
+_GL_CXXALIAS_SYS_CAST2 (memrchr,
+                        void *, (void const *, int, size_t),
+                        void const *, (void const *, int, size_t));
+# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
+     && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
+_GL_CXXALIASWARN1 (memrchr, void *, (void *, int, size_t));
+_GL_CXXALIASWARN1 (memrchr, void const *, (void const *, int, size_t));
+# else
+_GL_CXXALIASWARN (memrchr);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef memrchr
+# if HAVE_RAW_DECL_MEMRCHR
+_GL_WARN_ON_USE (memrchr, "memrchr is unportable - "
+                 "use gnulib module memrchr for portability");
+# endif
+#endif
+
+/* Find the first occurrence of C in S.  More efficient than
+   memchr(S,C,N), at the expense of undefined behavior if C does not
+   occur within N bytes.  */
+#if @GNULIB_RAWMEMCHR@
+# if ! @HAVE_RAWMEMCHR@
+_GL_FUNCDECL_SYS (rawmemchr, void *, (void const *__s, int __c_in)
+                                     _GL_ATTRIBUTE_PURE
+                                     _GL_ARG_NONNULL ((1)));
+# endif
+  /* On some systems, this function is defined as an overloaded function:
+       extern "C++" { const void * std::rawmemchr (const void *, int); }
+       extern "C++" { void * std::rawmemchr (void *, int); }  */
+_GL_CXXALIAS_SYS_CAST2 (rawmemchr,
+                        void *, (void const *__s, int __c_in),
+                        void const *, (void const *__s, int __c_in));
+# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
+     && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
+_GL_CXXALIASWARN1 (rawmemchr, void *, (void *__s, int __c_in));
+_GL_CXXALIASWARN1 (rawmemchr, void const *, (void const *__s, int __c_in));
+# else
+_GL_CXXALIASWARN (rawmemchr);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef rawmemchr
+# if HAVE_RAW_DECL_RAWMEMCHR
+_GL_WARN_ON_USE (rawmemchr, "rawmemchr is unportable - "
+                 "use gnulib module rawmemchr for portability");
+# endif
+#endif
+
+/* Copy SRC to DST, returning the address of the terminating '\0' in DST.  */
+#if @GNULIB_STPCPY@
+# if ! @HAVE_STPCPY@
+_GL_FUNCDECL_SYS (stpcpy, char *,
+                  (char *restrict __dst, char const *restrict __src)
+                  _GL_ARG_NONNULL ((1, 2)));
+# endif
+_GL_CXXALIAS_SYS (stpcpy, char *,
+                  (char *restrict __dst, char const *restrict __src));
+_GL_CXXALIASWARN (stpcpy);
+#elif defined GNULIB_POSIXCHECK
+# undef stpcpy
+# if HAVE_RAW_DECL_STPCPY
+_GL_WARN_ON_USE (stpcpy, "stpcpy is unportable - "
+                 "use gnulib module stpcpy for portability");
+# endif
+#endif
+
+/* Copy no more than N bytes of SRC to DST, returning a pointer past the
+   last non-NUL byte written into DST.  */
+#if @GNULIB_STPNCPY@
+# if @REPLACE_STPNCPY@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef stpncpy
+#   define stpncpy rpl_stpncpy
+#  endif
+_GL_FUNCDECL_RPL (stpncpy, char *,
+                  (char *restrict __dst, char const *restrict __src,
+                   size_t __n)
+                  _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (stpncpy, char *,
+                  (char *restrict __dst, char const *restrict __src,
+                   size_t __n));
+# else
+#  if ! @HAVE_STPNCPY@
+_GL_FUNCDECL_SYS (stpncpy, char *,
+                  (char *restrict __dst, char const *restrict __src,
+                   size_t __n)
+                  _GL_ARG_NONNULL ((1, 2)));
+#  endif
+_GL_CXXALIAS_SYS (stpncpy, char *,
+                  (char *restrict __dst, char const *restrict __src,
+                   size_t __n));
+# endif
+_GL_CXXALIASWARN (stpncpy);
+#elif defined GNULIB_POSIXCHECK
+# undef stpncpy
+# if HAVE_RAW_DECL_STPNCPY
+_GL_WARN_ON_USE (stpncpy, "stpncpy is unportable - "
+                 "use gnulib module stpncpy for portability");
+# endif
+#endif
+
+#if defined GNULIB_POSIXCHECK
+/* strchr() does not work with multibyte strings if the locale encoding is
+   GB18030 and the character to be searched is a digit.  */
+# undef strchr
+/* Assume strchr is always declared.  */
+_GL_WARN_ON_USE (strchr, "strchr cannot work correctly on character strings "
+                 "in some multibyte locales - "
+                 "use mbschr if you care about internationalization");
+#endif
+
+/* Find the first occurrence of C in S or the final NUL byte.  */
+#if @GNULIB_STRCHRNUL@
+# if @REPLACE_STRCHRNUL@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define strchrnul rpl_strchrnul
+#  endif
+_GL_FUNCDECL_RPL (strchrnul, char *, (const char *__s, int __c_in)
+                                     _GL_ATTRIBUTE_PURE
+                                     _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (strchrnul, char *,
+                  (const char *str, int ch));
+# else
+#  if ! @HAVE_STRCHRNUL@
+_GL_FUNCDECL_SYS (strchrnul, char *, (char const *__s, int __c_in)
+                                     _GL_ATTRIBUTE_PURE
+                                     _GL_ARG_NONNULL ((1)));
+#  endif
+  /* On some systems, this function is defined as an overloaded function:
+       extern "C++" { const char * std::strchrnul (const char *, int); }
+       extern "C++" { char * std::strchrnul (char *, int); }  */
+_GL_CXXALIAS_SYS_CAST2 (strchrnul,
+                        char *, (char const *__s, int __c_in),
+                        char const *, (char const *__s, int __c_in));
+# endif
+# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
+     && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
+_GL_CXXALIASWARN1 (strchrnul, char *, (char *__s, int __c_in));
+_GL_CXXALIASWARN1 (strchrnul, char const *, (char const *__s, int __c_in));
+# else
+_GL_CXXALIASWARN (strchrnul);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strchrnul
+# if HAVE_RAW_DECL_STRCHRNUL
+_GL_WARN_ON_USE (strchrnul, "strchrnul is unportable - "
+                 "use gnulib module strchrnul for portability");
+# endif
+#endif
+
+/* Duplicate S, returning an identical malloc'd string.  */
+#if @GNULIB_STRDUP@
+# if @REPLACE_STRDUP@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef strdup
+#   define strdup rpl_strdup
+#  endif
+_GL_FUNCDECL_RPL (strdup, char *, (char const *__s) _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (strdup, char *, (char const *__s));
+# else
+#  if defined __cplusplus && defined GNULIB_NAMESPACE && defined strdup
+    /* strdup exists as a function and as a macro.  Get rid of the macro.  */
+#   undef strdup
+#  endif
+#  if !(@HAVE_DECL_STRDUP@ || defined strdup)
+_GL_FUNCDECL_SYS (strdup, char *, (char const *__s) _GL_ARG_NONNULL ((1)));
+#  endif
+_GL_CXXALIAS_SYS (strdup, char *, (char const *__s));
+# endif
+_GL_CXXALIASWARN (strdup);
+#elif defined GNULIB_POSIXCHECK
+# undef strdup
+# if HAVE_RAW_DECL_STRDUP
+_GL_WARN_ON_USE (strdup, "strdup is unportable - "
+                 "use gnulib module strdup for portability");
+# endif
+#endif
+
+/* Append no more than N characters from SRC onto DEST.  */
+#if @GNULIB_STRNCAT@
+# if @REPLACE_STRNCAT@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef strncat
+#   define strncat rpl_strncat
+#  endif
+_GL_FUNCDECL_RPL (strncat, char *, (char *dest, const char *src, size_t n)
+                                   _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (strncat, char *, (char *dest, const char *src, size_t n));
+# else
+_GL_CXXALIAS_SYS (strncat, char *, (char *dest, const char *src, size_t n));
+# endif
+_GL_CXXALIASWARN (strncat);
+#elif defined GNULIB_POSIXCHECK
+# undef strncat
+# if HAVE_RAW_DECL_STRNCAT
+_GL_WARN_ON_USE (strncat, "strncat is unportable - "
+                 "use gnulib module strncat for portability");
+# endif
+#endif
+
+/* Return a newly allocated copy of at most N bytes of STRING.  */
+#if @GNULIB_STRNDUP@
+# if @REPLACE_STRNDUP@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef strndup
+#   define strndup rpl_strndup
+#  endif
+_GL_FUNCDECL_RPL (strndup, char *, (char const *__s, size_t __n)
+                                   _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (strndup, char *, (char const *__s, size_t __n));
+# else
+#  if ! @HAVE_DECL_STRNDUP@
+_GL_FUNCDECL_SYS (strndup, char *, (char const *__s, size_t __n)
+                                   _GL_ARG_NONNULL ((1)));
+#  endif
+_GL_CXXALIAS_SYS (strndup, char *, (char const *__s, size_t __n));
+# endif
+_GL_CXXALIASWARN (strndup);
+#elif defined GNULIB_POSIXCHECK
+# undef strndup
+# if HAVE_RAW_DECL_STRNDUP
+_GL_WARN_ON_USE (strndup, "strndup is unportable - "
+                 "use gnulib module strndup for portability");
+# endif
+#endif
+
+/* Find the length (number of bytes) of STRING, but scan at most
+   MAXLEN bytes.  If no '\0' terminator is found in that many bytes,
+   return MAXLEN.  */
+#if @GNULIB_STRNLEN@
+# if @REPLACE_STRNLEN@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef strnlen
+#   define strnlen rpl_strnlen
+#  endif
+_GL_FUNCDECL_RPL (strnlen, size_t, (char const *__s, size_t __maxlen)
+                                   _GL_ATTRIBUTE_PURE
+                                   _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (strnlen, size_t, (char const *__s, size_t __maxlen));
+# else
+#  if ! @HAVE_DECL_STRNLEN@
+_GL_FUNCDECL_SYS (strnlen, size_t, (char const *__s, size_t __maxlen)
+                                   _GL_ATTRIBUTE_PURE
+                                   _GL_ARG_NONNULL ((1)));
+#  endif
+_GL_CXXALIAS_SYS (strnlen, size_t, (char const *__s, size_t __maxlen));
+# endif
+_GL_CXXALIASWARN (strnlen);
+#elif defined GNULIB_POSIXCHECK
+# undef strnlen
+# if HAVE_RAW_DECL_STRNLEN
+_GL_WARN_ON_USE (strnlen, "strnlen is unportable - "
+                 "use gnulib module strnlen for portability");
+# endif
+#endif
+
+#if defined GNULIB_POSIXCHECK
+/* strcspn() assumes the second argument is a list of single-byte characters.
+   Even in this simple case, it does not work with multibyte strings if the
+   locale encoding is GB18030 and one of the characters to be searched is a
+   digit.  */
+# undef strcspn
+/* Assume strcspn is always declared.  */
+_GL_WARN_ON_USE (strcspn, "strcspn cannot work correctly on character strings "
+                 "in multibyte locales - "
+                 "use mbscspn if you care about internationalization");
+#endif
+
+/* Find the first occurrence in S of any character in ACCEPT.  */
+#if @GNULIB_STRPBRK@
+# if ! @HAVE_STRPBRK@
+_GL_FUNCDECL_SYS (strpbrk, char *, (char const *__s, char const *__accept)
+                                   _GL_ATTRIBUTE_PURE
+                                   _GL_ARG_NONNULL ((1, 2)));
+# endif
+  /* On some systems, this function is defined as an overloaded function:
+       extern "C" { const char * strpbrk (const char *, const char *); }
+       extern "C++" { char * strpbrk (char *, const char *); }  */
+_GL_CXXALIAS_SYS_CAST2 (strpbrk,
+                        char *, (char const *__s, char const *__accept),
+                        const char *, (char const *__s, char const *__accept));
+# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
+     && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
+_GL_CXXALIASWARN1 (strpbrk, char *, (char *__s, char const *__accept));
+_GL_CXXALIASWARN1 (strpbrk, char const *,
+                   (char const *__s, char const *__accept));
+# else
+_GL_CXXALIASWARN (strpbrk);
+# endif
+# if defined GNULIB_POSIXCHECK
+/* strpbrk() assumes the second argument is a list of single-byte characters.
+   Even in this simple case, it does not work with multibyte strings if the
+   locale encoding is GB18030 and one of the characters to be searched is a
+   digit.  */
+#  undef strpbrk
+_GL_WARN_ON_USE (strpbrk, "strpbrk cannot work correctly on character strings "
+                 "in multibyte locales - "
+                 "use mbspbrk if you care about internationalization");
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strpbrk
+# if HAVE_RAW_DECL_STRPBRK
+_GL_WARN_ON_USE (strpbrk, "strpbrk is unportable - "
+                 "use gnulib module strpbrk for portability");
+# endif
+#endif
+
+#if defined GNULIB_POSIXCHECK
+/* strspn() assumes the second argument is a list of single-byte characters.
+   Even in this simple case, it cannot work with multibyte strings.  */
+# undef strspn
+/* Assume strspn is always declared.  */
+_GL_WARN_ON_USE (strspn, "strspn cannot work correctly on character strings "
+                 "in multibyte locales - "
+                 "use mbsspn if you care about internationalization");
+#endif
+
+#if defined GNULIB_POSIXCHECK
+/* strrchr() does not work with multibyte strings if the locale encoding is
+   GB18030 and the character to be searched is a digit.  */
+# undef strrchr
+/* Assume strrchr is always declared.  */
+_GL_WARN_ON_USE (strrchr, "strrchr cannot work correctly on character strings "
+                 "in some multibyte locales - "
+                 "use mbsrchr if you care about internationalization");
+#endif
+
+/* Search the next delimiter (char listed in DELIM) starting at *STRINGP.
+   If one is found, overwrite it with a NUL, and advance *STRINGP
+   to point to the next char after it.  Otherwise, set *STRINGP to NULL.
+   If *STRINGP was already NULL, nothing happens.
+   Return the old value of *STRINGP.
+
+   This is a variant of strtok() that is multithread-safe and supports
+   empty fields.
+
+   Caveat: It modifies the original string.
+   Caveat: These functions cannot be used on constant strings.
+   Caveat: The identity of the delimiting character is lost.
+   Caveat: It doesn't work with multibyte strings unless all of the delimiter
+           characters are ASCII characters < 0x30.
+
+   See also strtok_r().  */
+#if @GNULIB_STRSEP@
+# if ! @HAVE_STRSEP@
+_GL_FUNCDECL_SYS (strsep, char *,
+                  (char **restrict __stringp, char const *restrict __delim)
+                  _GL_ARG_NONNULL ((1, 2)));
+# endif
+_GL_CXXALIAS_SYS (strsep, char *,
+                  (char **restrict __stringp, char const *restrict __delim));
+_GL_CXXALIASWARN (strsep);
+# if defined GNULIB_POSIXCHECK
+#  undef strsep
+_GL_WARN_ON_USE (strsep, "strsep cannot work correctly on character strings "
+                 "in multibyte locales - "
+                 "use mbssep if you care about internationalization");
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strsep
+# if HAVE_RAW_DECL_STRSEP
+_GL_WARN_ON_USE (strsep, "strsep is unportable - "
+                 "use gnulib module strsep for portability");
+# endif
+#endif
+
+#if @GNULIB_STRSTR@
+# if @REPLACE_STRSTR@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define strstr rpl_strstr
+#  endif
+_GL_FUNCDECL_RPL (strstr, char *, (const char *haystack, const char *needle)
+                                  _GL_ATTRIBUTE_PURE
+                                  _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (strstr, char *, (const char *haystack, const char *needle));
+# else
+  /* On some systems, this function is defined as an overloaded function:
+       extern "C++" { const char * strstr (const char *, const char *); }
+       extern "C++" { char * strstr (char *, const char *); }  */
+_GL_CXXALIAS_SYS_CAST2 (strstr,
+                        char *, (const char *haystack, const char *needle),
+                        const char *, (const char *haystack, const char *needle));
+# endif
+# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
+     && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
+_GL_CXXALIASWARN1 (strstr, char *, (char *haystack, const char *needle));
+_GL_CXXALIASWARN1 (strstr, const char *,
+                   (const char *haystack, const char *needle));
+# else
+_GL_CXXALIASWARN (strstr);
+# endif
+#elif defined GNULIB_POSIXCHECK
+/* strstr() does not work with multibyte strings if the locale encoding is
+   different from UTF-8:
+   POSIX says that it operates on "strings", and "string" in POSIX is defined
+   as a sequence of bytes, not of characters.  */
+# undef strstr
+/* Assume strstr is always declared.  */
+_GL_WARN_ON_USE (strstr, "strstr is quadratic on many systems, and cannot "
+                 "work correctly on character strings in most "
+                 "multibyte locales - "
+                 "use mbsstr if you care about internationalization, "
+                 "or use strstr if you care about speed");
+#endif
+
+/* Find the first occurrence of NEEDLE in HAYSTACK, using case-insensitive
+   comparison.  */
+#if @GNULIB_STRCASESTR@
+# if @REPLACE_STRCASESTR@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define strcasestr rpl_strcasestr
+#  endif
+_GL_FUNCDECL_RPL (strcasestr, char *,
+                  (const char *haystack, const char *needle)
+                  _GL_ATTRIBUTE_PURE
+                  _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (strcasestr, char *,
+                  (const char *haystack, const char *needle));
+# else
+#  if ! @HAVE_STRCASESTR@
+_GL_FUNCDECL_SYS (strcasestr, char *,
+                  (const char *haystack, const char *needle)
+                  _GL_ATTRIBUTE_PURE
+                  _GL_ARG_NONNULL ((1, 2)));
+#  endif
+  /* On some systems, this function is defined as an overloaded function:
+       extern "C++" { const char * strcasestr (const char *, const char *); }
+       extern "C++" { char * strcasestr (char *, const char *); }  */
+_GL_CXXALIAS_SYS_CAST2 (strcasestr,
+                        char *, (const char *haystack, const char *needle),
+                        const char *, (const char *haystack, const char *needle));
+# endif
+# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
+     && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
+_GL_CXXALIASWARN1 (strcasestr, char *, (char *haystack, const char *needle));
+_GL_CXXALIASWARN1 (strcasestr, const char *,
+                   (const char *haystack, const char *needle));
+# else
+_GL_CXXALIASWARN (strcasestr);
+# endif
+#elif defined GNULIB_POSIXCHECK
+/* strcasestr() does not work with multibyte strings:
+   It is a glibc extension, and glibc implements it only for unibyte
+   locales.  */
+# undef strcasestr
+# if HAVE_RAW_DECL_STRCASESTR
+_GL_WARN_ON_USE (strcasestr, "strcasestr does work correctly on character "
+                 "strings in multibyte locales - "
+                 "use mbscasestr if you care about "
+                 "internationalization, or use c-strcasestr if you want "
+                 "a locale independent function");
+# endif
+#endif
+
+/* Parse S into tokens separated by characters in DELIM.
+   If S is NULL, the saved pointer in SAVE_PTR is used as
+   the next starting point.  For example:
+        char s[] = "-abc-=-def";
+        char *sp;
+        x = strtok_r(s, "-", &sp);      // x = "abc", sp = "=-def"
+        x = strtok_r(NULL, "-=", &sp);  // x = "def", sp = NULL
+        x = strtok_r(NULL, "=", &sp);   // x = NULL
+                // s = "abc\0-def\0"
+
+   This is a variant of strtok() that is multithread-safe.
+
+   For the POSIX documentation for this function, see:
+   http://www.opengroup.org/susv3xsh/strtok.html
+
+   Caveat: It modifies the original string.
+   Caveat: These functions cannot be used on constant strings.
+   Caveat: The identity of the delimiting character is lost.
+   Caveat: It doesn't work with multibyte strings unless all of the delimiter
+           characters are ASCII characters < 0x30.
+
+   See also strsep().  */
+#if @GNULIB_STRTOK_R@
+# if @REPLACE_STRTOK_R@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef strtok_r
+#   define strtok_r rpl_strtok_r
+#  endif
+_GL_FUNCDECL_RPL (strtok_r, char *,
+                  (char *restrict s, char const *restrict delim,
+                   char **restrict save_ptr)
+                  _GL_ARG_NONNULL ((2, 3)));
+_GL_CXXALIAS_RPL (strtok_r, char *,
+                  (char *restrict s, char const *restrict delim,
+                   char **restrict save_ptr));
+# else
+#  if @UNDEFINE_STRTOK_R@ || defined GNULIB_POSIXCHECK
+#   undef strtok_r
+#  endif
+#  if ! @HAVE_DECL_STRTOK_R@
+_GL_FUNCDECL_SYS (strtok_r, char *,
+                  (char *restrict s, char const *restrict delim,
+                   char **restrict save_ptr)
+                  _GL_ARG_NONNULL ((2, 3)));
+#  endif
+_GL_CXXALIAS_SYS (strtok_r, char *,
+                  (char *restrict s, char const *restrict delim,
+                   char **restrict save_ptr));
+# endif
+_GL_CXXALIASWARN (strtok_r);
+# if defined GNULIB_POSIXCHECK
+_GL_WARN_ON_USE (strtok_r, "strtok_r cannot work correctly on character "
+                 "strings in multibyte locales - "
+                 "use mbstok_r if you care about internationalization");
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strtok_r
+# if HAVE_RAW_DECL_STRTOK_R
+_GL_WARN_ON_USE (strtok_r, "strtok_r is unportable - "
+                 "use gnulib module strtok_r for portability");
+# endif
+#endif
+
+
+/* The following functions are not specified by POSIX.  They are gnulib
+   extensions.  */
+
+#if @GNULIB_MBSLEN@
+/* Return the number of multibyte characters in the character string STRING.
+   This considers multibyte characters, unlike strlen, which counts bytes.  */
+# ifdef __MirBSD__  /* MirBSD defines mbslen as a macro.  Override it.  */
+#  undef mbslen
+# endif
+# if @HAVE_MBSLEN@  /* AIX, OSF/1, MirBSD define mbslen already in libc.  */
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define mbslen rpl_mbslen
+#  endif
+_GL_FUNCDECL_RPL (mbslen, size_t, (const char *string)
+                                  _GL_ATTRIBUTE_PURE
+                                  _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (mbslen, size_t, (const char *string));
+# else
+_GL_FUNCDECL_SYS (mbslen, size_t, (const char *string)
+                                  _GL_ATTRIBUTE_PURE
+                                  _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_SYS (mbslen, size_t, (const char *string));
+# endif
+_GL_CXXALIASWARN (mbslen);
+#endif
+
+#if @GNULIB_MBSNLEN@
+/* Return the number of multibyte characters in the character string starting
+   at STRING and ending at STRING + LEN.  */
+_GL_EXTERN_C size_t mbsnlen (const char *string, size_t len)
+     _GL_ATTRIBUTE_PURE
+     _GL_ARG_NONNULL ((1));
+#endif
+
+#if @GNULIB_MBSCHR@
+/* Locate the first single-byte character C in the character string STRING,
+   and return a pointer to it.  Return NULL if C is not found in STRING.
+   Unlike strchr(), this function works correctly in multibyte locales with
+   encodings such as GB18030.  */
+# if defined __hpux
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define mbschr rpl_mbschr /* avoid collision with HP-UX function */
+#  endif
+_GL_FUNCDECL_RPL (mbschr, char *, (const char *string, int c)
+                                  _GL_ATTRIBUTE_PURE
+                                  _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (mbschr, char *, (const char *string, int c));
+# else
+_GL_FUNCDECL_SYS (mbschr, char *, (const char *string, int c)
+                                  _GL_ATTRIBUTE_PURE
+                                  _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_SYS (mbschr, char *, (const char *string, int c));
+# endif
+_GL_CXXALIASWARN (mbschr);
+#endif
+
+#if @GNULIB_MBSRCHR@
+/* Locate the last single-byte character C in the character string STRING,
+   and return a pointer to it.  Return NULL if C is not found in STRING.
+   Unlike strrchr(), this function works correctly in multibyte locales with
+   encodings such as GB18030.  */
+# if defined __hpux || defined __INTERIX
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define mbsrchr rpl_mbsrchr /* avoid collision with system function */
+#  endif
+_GL_FUNCDECL_RPL (mbsrchr, char *, (const char *string, int c)
+                                   _GL_ATTRIBUTE_PURE
+                                   _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (mbsrchr, char *, (const char *string, int c));
+# else
+_GL_FUNCDECL_SYS (mbsrchr, char *, (const char *string, int c)
+                                   _GL_ATTRIBUTE_PURE
+                                   _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_SYS (mbsrchr, char *, (const char *string, int c));
+# endif
+_GL_CXXALIASWARN (mbsrchr);
+#endif
+
+#if @GNULIB_MBSSTR@
+/* Find the first occurrence of the character string NEEDLE in the character
+   string HAYSTACK.  Return NULL if NEEDLE is not found in HAYSTACK.
+   Unlike strstr(), this function works correctly in multibyte locales with
+   encodings different from UTF-8.  */
+_GL_EXTERN_C char * mbsstr (const char *haystack, const char *needle)
+     _GL_ATTRIBUTE_PURE
+     _GL_ARG_NONNULL ((1, 2));
+#endif
+
+#if @GNULIB_MBSCASECMP@
+/* Compare the character strings S1 and S2, ignoring case, returning less than,
+   equal to or greater than zero if S1 is lexicographically less than, equal to
+   or greater than S2.
+   Note: This function may, in multibyte locales, return 0 for strings of
+   different lengths!
+   Unlike strcasecmp(), this function works correctly in multibyte locales.  */
+_GL_EXTERN_C int mbscasecmp (const char *s1, const char *s2)
+     _GL_ATTRIBUTE_PURE
+     _GL_ARG_NONNULL ((1, 2));
+#endif
+
+#if @GNULIB_MBSNCASECMP@
+/* Compare the initial segment of the character string S1 consisting of at most
+   N characters with the initial segment of the character string S2 consisting
+   of at most N characters, ignoring case, returning less than, equal to or
+   greater than zero if the initial segment of S1 is lexicographically less
+   than, equal to or greater than the initial segment of S2.
+   Note: This function may, in multibyte locales, return 0 for initial segments
+   of different lengths!
+   Unlike strncasecmp(), this function works correctly in multibyte locales.
+   But beware that N is not a byte count but a character count!  */
+_GL_EXTERN_C int mbsncasecmp (const char *s1, const char *s2, size_t n)
+     _GL_ATTRIBUTE_PURE
+     _GL_ARG_NONNULL ((1, 2));
+#endif
+
+#if @GNULIB_MBSPCASECMP@
+/* Compare the initial segment of the character string STRING consisting of
+   at most mbslen (PREFIX) characters with the character string PREFIX,
+   ignoring case.  If the two match, return a pointer to the first byte
+   after this prefix in STRING.  Otherwise, return NULL.
+   Note: This function may, in multibyte locales, return non-NULL if STRING
+   is of smaller length than PREFIX!
+   Unlike strncasecmp(), this function works correctly in multibyte
+   locales.  */
+_GL_EXTERN_C char * mbspcasecmp (const char *string, const char *prefix)
+     _GL_ATTRIBUTE_PURE
+     _GL_ARG_NONNULL ((1, 2));
+#endif
+
+#if @GNULIB_MBSCASESTR@
+/* Find the first occurrence of the character string NEEDLE in the character
+   string HAYSTACK, using case-insensitive comparison.
+   Note: This function may, in multibyte locales, return success even if
+   strlen (haystack) < strlen (needle) !
+   Unlike strcasestr(), this function works correctly in multibyte locales.  */
+_GL_EXTERN_C char * mbscasestr (const char *haystack, const char *needle)
+     _GL_ATTRIBUTE_PURE
+     _GL_ARG_NONNULL ((1, 2));
+#endif
+
+#if @GNULIB_MBSCSPN@
+/* Find the first occurrence in the character string STRING of any character
+   in the character string ACCEPT.  Return the number of bytes from the
+   beginning of the string to this occurrence, or to the end of the string
+   if none exists.
+   Unlike strcspn(), this function works correctly in multibyte locales.  */
+_GL_EXTERN_C size_t mbscspn (const char *string, const char *accept)
+     _GL_ATTRIBUTE_PURE
+     _GL_ARG_NONNULL ((1, 2));
+#endif
+
+#if @GNULIB_MBSPBRK@
+/* Find the first occurrence in the character string STRING of any character
+   in the character string ACCEPT.  Return the pointer to it, or NULL if none
+   exists.
+   Unlike strpbrk(), this function works correctly in multibyte locales.  */
+# if defined __hpux
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define mbspbrk rpl_mbspbrk /* avoid collision with HP-UX function */
+#  endif
+_GL_FUNCDECL_RPL (mbspbrk, char *, (const char *string, const char *accept)
+                                   _GL_ATTRIBUTE_PURE
+                                   _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (mbspbrk, char *, (const char *string, const char *accept));
+# else
+_GL_FUNCDECL_SYS (mbspbrk, char *, (const char *string, const char *accept)
+                                   _GL_ATTRIBUTE_PURE
+                                   _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_SYS (mbspbrk, char *, (const char *string, const char *accept));
+# endif
+_GL_CXXALIASWARN (mbspbrk);
+#endif
+
+#if @GNULIB_MBSSPN@
+/* Find the first occurrence in the character string STRING of any character
+   not in the character string REJECT.  Return the number of bytes from the
+   beginning of the string to this occurrence, or to the end of the string
+   if none exists.
+   Unlike strspn(), this function works correctly in multibyte locales.  */
+_GL_EXTERN_C size_t mbsspn (const char *string, const char *reject)
+     _GL_ATTRIBUTE_PURE
+     _GL_ARG_NONNULL ((1, 2));
+#endif
+
+#if @GNULIB_MBSSEP@
+/* Search the next delimiter (multibyte character listed in the character
+   string DELIM) starting at the character string *STRINGP.
+   If one is found, overwrite it with a NUL, and advance *STRINGP to point
+   to the next multibyte character after it.  Otherwise, set *STRINGP to NULL.
+   If *STRINGP was already NULL, nothing happens.
+   Return the old value of *STRINGP.
+
+   This is a variant of mbstok_r() that supports empty fields.
+
+   Caveat: It modifies the original string.
+   Caveat: These functions cannot be used on constant strings.
+   Caveat: The identity of the delimiting character is lost.
+
+   See also mbstok_r().  */
+_GL_EXTERN_C char * mbssep (char **stringp, const char *delim)
+     _GL_ARG_NONNULL ((1, 2));
+#endif
+
+#if @GNULIB_MBSTOK_R@
+/* Parse the character string STRING into tokens separated by characters in
+   the character string DELIM.
+   If STRING is NULL, the saved pointer in SAVE_PTR is used as
+   the next starting point.  For example:
+        char s[] = "-abc-=-def";
+        char *sp;
+        x = mbstok_r(s, "-", &sp);      // x = "abc", sp = "=-def"
+        x = mbstok_r(NULL, "-=", &sp);  // x = "def", sp = NULL
+        x = mbstok_r(NULL, "=", &sp);   // x = NULL
+                // s = "abc\0-def\0"
+
+   Caveat: It modifies the original string.
+   Caveat: These functions cannot be used on constant strings.
+   Caveat: The identity of the delimiting character is lost.
+
+   See also mbssep().  */
+_GL_EXTERN_C char * mbstok_r (char *string, const char *delim, char **save_ptr)
+     _GL_ARG_NONNULL ((2, 3));
+#endif
+
+/* Map any int, typically from errno, into an error message.  */
+#if @GNULIB_STRERROR@
+# if @REPLACE_STRERROR@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef strerror
+#   define strerror rpl_strerror
+#  endif
+_GL_FUNCDECL_RPL (strerror, char *, (int));
+_GL_CXXALIAS_RPL (strerror, char *, (int));
+# else
+_GL_CXXALIAS_SYS (strerror, char *, (int));
+# endif
+_GL_CXXALIASWARN (strerror);
+#elif defined GNULIB_POSIXCHECK
+# undef strerror
+/* Assume strerror is always declared.  */
+_GL_WARN_ON_USE (strerror, "strerror is unportable - "
+                 "use gnulib module strerror to guarantee non-NULL result");
+#endif
+
+/* Map any int, typically from errno, into an error message.  Multithread-safe.
+   Uses the POSIX declaration, not the glibc declaration.  */
+#if @GNULIB_STRERROR_R@
+# if @REPLACE_STRERROR_R@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef strerror_r
+#   define strerror_r rpl_strerror_r
+#  endif
+_GL_FUNCDECL_RPL (strerror_r, int, (int errnum, char *buf, size_t buflen)
+                                   _GL_ARG_NONNULL ((2)));
+_GL_CXXALIAS_RPL (strerror_r, int, (int errnum, char *buf, size_t buflen));
+# else
+#  if !@HAVE_DECL_STRERROR_R@
+_GL_FUNCDECL_SYS (strerror_r, int, (int errnum, char *buf, size_t buflen)
+                                   _GL_ARG_NONNULL ((2)));
+#  endif
+_GL_CXXALIAS_SYS (strerror_r, int, (int errnum, char *buf, size_t buflen));
+# endif
+# if @HAVE_DECL_STRERROR_R@
+_GL_CXXALIASWARN (strerror_r);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strerror_r
+# if HAVE_RAW_DECL_STRERROR_R
+_GL_WARN_ON_USE (strerror_r, "strerror_r is unportable - "
+                 "use gnulib module strerror_r-posix for portability");
+# endif
+#endif
+
+#if @GNULIB_STRSIGNAL@
+# if @REPLACE_STRSIGNAL@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define strsignal rpl_strsignal
+#  endif
+_GL_FUNCDECL_RPL (strsignal, char *, (int __sig));
+_GL_CXXALIAS_RPL (strsignal, char *, (int __sig));
+# else
+#  if ! @HAVE_DECL_STRSIGNAL@
+_GL_FUNCDECL_SYS (strsignal, char *, (int __sig));
+#  endif
+/* Need to cast, because on Cygwin 1.5.x systems, the return type is
+   'const char *'.  */
+_GL_CXXALIAS_SYS_CAST (strsignal, char *, (int __sig));
+# endif
+_GL_CXXALIASWARN (strsignal);
+#elif defined GNULIB_POSIXCHECK
+# undef strsignal
+# if HAVE_RAW_DECL_STRSIGNAL
+_GL_WARN_ON_USE (strsignal, "strsignal is unportable - "
+                 "use gnulib module strsignal for portability");
+# endif
+#endif
+
+#if @GNULIB_STRVERSCMP@
+# if !@HAVE_STRVERSCMP@
+_GL_FUNCDECL_SYS (strverscmp, int, (const char *, const char *)
+                                   _GL_ATTRIBUTE_PURE
+                                   _GL_ARG_NONNULL ((1, 2)));
+# endif
+_GL_CXXALIAS_SYS (strverscmp, int, (const char *, const char *));
+_GL_CXXALIASWARN (strverscmp);
+#elif defined GNULIB_POSIXCHECK
+# undef strverscmp
+# if HAVE_RAW_DECL_STRVERSCMP
+_GL_WARN_ON_USE (strverscmp, "strverscmp is unportable - "
+                 "use gnulib module strverscmp for portability");
+# endif
+#endif
+
+
+#endif /* _@GUARD_PREFIX@_STRING_H */
+#endif /* _@GUARD_PREFIX@_STRING_H */
+#endif
diff --git a/lib/sys_types.in.h b/lib/sys_types.in.h
new file mode 100644 (file)
index 0000000..7f8c1c4
--- /dev/null
@@ -0,0 +1,106 @@
+/* Provide a more complete sys/types.h.
+
+   Copyright (C) 2011-2018 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, 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 <https://www.gnu.org/licenses/>.  */
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+@PRAGMA_COLUMNS@
+
+#if defined _WIN32 && !defined __CYGWIN__ \
+    && (defined __need_off_t || defined __need___off64_t \
+        || defined __need_ssize_t || defined __need_time_t)
+
+/* Special invocation convention inside mingw header files.  */
+
+#@INCLUDE_NEXT@ @NEXT_SYS_TYPES_H@
+
+#else
+/* Normal invocation convention.  */
+
+#ifndef _@GUARD_PREFIX@_SYS_TYPES_H
+
+/* The include_next requires a split double-inclusion guard.  */
+# define _GL_INCLUDING_SYS_TYPES_H
+#@INCLUDE_NEXT@ @NEXT_SYS_TYPES_H@
+# undef _GL_INCLUDING_SYS_TYPES_H
+
+#ifndef _@GUARD_PREFIX@_SYS_TYPES_H
+#define _@GUARD_PREFIX@_SYS_TYPES_H
+
+/* Override off_t if Large File Support is requested on native Windows.  */
+#if @WINDOWS_64_BIT_OFF_T@
+/* Same as int64_t in <stdint.h>.  */
+# if defined _MSC_VER
+#  define off_t __int64
+# else
+#  define off_t long long int
+# endif
+/* Indicator, for gnulib internal purposes.  */
+# define _GL_WINDOWS_64_BIT_OFF_T 1
+#endif
+
+/* Override dev_t and ino_t if distinguishable inodes support is requested
+   on native Windows.  */
+#if @WINDOWS_STAT_INODES@
+
+# if @WINDOWS_STAT_INODES@ == 2
+/* Experimental, not useful in Windows 10.  */
+
+/* Define dev_t to a 64-bit type.  */
+#  if !defined GNULIB_defined_dev_t
+typedef unsigned long long int rpl_dev_t;
+#   undef dev_t
+#   define dev_t rpl_dev_t
+#   define GNULIB_defined_dev_t 1
+#  endif
+
+/* Define ino_t to a 128-bit type.  */
+#  if !defined GNULIB_defined_ino_t
+/* MSVC does not have a 128-bit integer type.
+   GCC has a 128-bit integer type __int128, but only on 64-bit targets.  */
+typedef struct { unsigned long long int _gl_ino[2]; } rpl_ino_t;
+#   undef ino_t
+#   define ino_t rpl_ino_t
+#   define GNULIB_defined_ino_t 1
+#  endif
+
+# else /* @WINDOWS_STAT_INODES@ == 1 */
+
+/* Define ino_t to a 64-bit type.  */
+#  if !defined GNULIB_defined_ino_t
+typedef unsigned long long int rpl_ino_t;
+#   undef ino_t
+#   define ino_t rpl_ino_t
+#   define GNULIB_defined_ino_t 1
+#  endif
+
+# endif
+
+/* Indicator, for gnulib internal purposes.  */
+# define _GL_WINDOWS_STAT_INODES @WINDOWS_STAT_INODES@
+
+#endif
+
+/* MSVC 9 defines size_t in <stddef.h>, not in <sys/types.h>.  */
+/* But avoid namespace pollution on glibc systems.  */
+#if (defined _WIN32 && ! defined __CYGWIN__) && ! defined __GLIBC__
+# include <stddef.h>
+#endif
+
+#endif /* _@GUARD_PREFIX@_SYS_TYPES_H */
+#endif /* _@GUARD_PREFIX@_SYS_TYPES_H */
+#endif /* __need_XXX */
similarity index 79%
rename from src/libs/gnulib/lib/unitypes.in.h
rename to lib/unitypes.in.h
index e5ff992..13ed4cb 100644 (file)
@@ -1,18 +1,18 @@
 /* Elementary types and macros for the GNU UniString library.
-   Copyright (C) 2002, 2005-2006, 2009-2014 Free Software Foundation, Inc.
+   Copyright (C) 2002, 2005-2006, 2009-2018 Free Software Foundation, Inc.
 
    This program is free software: you can redistribute it and/or modify it
-   under the terms of the GNU Lesser General Public License as published
+   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
-   Lesser General Public License for more details.
+   General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
 
 #ifndef _UNITYPES_H
 #define _UNITYPES_H
similarity index 84%
rename from src/libs/gnulib/lib/uniwidth.in.h
rename to lib/uniwidth.in.h
index 38e8778..0cacc29 100644 (file)
@@ -1,19 +1,19 @@
 /* Display width functions.
-   Copyright (C) 2001-2002, 2005, 2007, 2009-2014 Free Software Foundation,
+   Copyright (C) 2001-2002, 2005, 2007, 2009-2018 Free Software Foundation,
    Inc.
 
    This program is free software: you can redistribute it and/or modify it
-   under the terms of the GNU Lesser General Public License as published
+   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
-   Lesser General Public License for more details.
+   General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
 
 #ifndef _UNIWIDTH_H
 #define _UNIWIDTH_H
similarity index 79%
rename from src/libs/gnulib/lib/uniwidth/cjk.h
rename to lib/uniwidth/cjk.h
index 1ecd655..f7f822c 100644 (file)
@@ -1,19 +1,19 @@
 /* Test for CJK encoding.
-   Copyright (C) 2001-2002, 2005-2007, 2009-2014 Free Software Foundation, Inc.
+   Copyright (C) 2001-2002, 2005-2007, 2009-2018 Free Software Foundation, Inc.
    Written by Bruno Haible <bruno@clisp.org>, 2002.
 
    This program is free software: you can redistribute it and/or modify it
-   under the terms of the GNU Lesser General Public License as published
+   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
-   Lesser General Public License for more details.
+   General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
 
 #include "streq.h"
 
similarity index 66%
rename from src/libs/gnulib/lib/uniwidth/width.c
rename to lib/uniwidth/width.c
index 3ed398e..cd27d61 100644 (file)
@@ -1,19 +1,19 @@
 /* Determine display width of Unicode character.
-   Copyright (C) 2001-2002, 2006-2014 Free Software Foundation, Inc.
+   Copyright (C) 2001-2002, 2006-2018 Free Software Foundation, Inc.
    Written by Bruno Haible <bruno@clisp.org>, 2002.
 
    This program is free software: you can redistribute it and/or modify it
-   under the terms of the GNU Lesser General Public License as published
+   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
-   Lesser General Public License for more details.
+   General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
 
 #include <config.h>
 
@@ -32,7 +32,7 @@
  * - Zero width characters; generated from
  *   "grep '^[^;]*;ZERO WIDTH ' UnicodeData.txt"
  */
-static const unsigned char nonspacing_table_data[27*64] = {
+static const unsigned char nonspacing_table_data[38*64] = {
   /* 0x0000-0x01ff */
   0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, /* 0x0000-0x003f */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, /* 0x0040-0x007f */
@@ -61,7 +61,7 @@ static const unsigned char nonspacing_table_data[27*64] = {
   0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xbf, /* 0x0580-0x05bf */
   0xb6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x05c0-0x05ff */
   /* 0x0600-0x07ff */
-  0x0f, 0x00, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, /* 0x0600-0x063f */
+  0x3f, 0x00, 0xff, 0x17, 0x00, 0x00, 0x00, 0x00, /* 0x0600-0x063f */
   0x00, 0xf8, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, /* 0x0640-0x067f */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0680-0x06bf */
   0x00, 0x00, 0xc0, 0xbf, 0x9f, 0x3d, 0x00, 0x00, /* 0x06c0-0x06ff */
@@ -73,7 +73,7 @@ static const unsigned char nonspacing_table_data[27*64] = {
   0x00, 0x00, 0xc0, 0xfb, 0xef, 0x3e, 0x00, 0x00, /* 0x0800-0x083f */
   0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, /* 0x0840-0x087f */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0880-0x08bf */
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08c0-0x08ff */
+  0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0x08c0-0x08ff */
   0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, /* 0x0900-0x093f */
   0xfe, 0x21, 0xfe, 0x00, 0x0c, 0x00, 0x00, 0x00, /* 0x0940-0x097f */
   0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, /* 0x0980-0x09bf */
@@ -88,11 +88,11 @@ static const unsigned char nonspacing_table_data[27*64] = {
   0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0b80-0x0bbf */
   0x01, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0bc0-0x0bff */
   /* 0x0c00-0x0dff */
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, /* 0x0c00-0x0c3f */
+  0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, /* 0x0c00-0x0c3f */
   0xc1, 0x3d, 0x60, 0x00, 0x0c, 0x00, 0x00, 0x00, /* 0x0c40-0x0c7f */
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, /* 0x0c80-0x0cbf */
+  0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, /* 0x0c80-0x0cbf */
   0x00, 0x30, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, /* 0x0cc0-0x0cff */
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0d00-0x0d3f */
+  0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0d00-0x0d3f */
   0x1e, 0x20, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, /* 0x0d40-0x0d7f */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0d80-0x0dbf */
   0x00, 0x04, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0dc0-0x0dff */
@@ -133,35 +133,35 @@ static const unsigned char nonspacing_table_data[27*64] = {
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x3f, /* 0x1780-0x17bf */
   0x40, 0xfe, 0x0f, 0x20, 0x00, 0x00, 0x00, 0x00, /* 0x17c0-0x17ff */
   /* 0x1800-0x19ff */
-  0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1800-0x183f */
+  0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1800-0x183f */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1840-0x187f */
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, /* 0x1880-0x18bf */
+  0x60, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, /* 0x1880-0x18bf */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18c0-0x18ff */
   0x00, 0x00, 0x00, 0x00, 0x87, 0x01, 0x04, 0x0e, /* 0x1900-0x193f */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1940-0x197f */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1980-0x19bf */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x19c0-0x19ff */
   /* 0x1a00-0x1bff */
-  0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, /* 0x1a00-0x1a3f */
+  0x00, 0x00, 0x80, 0x09, 0x00, 0x00, 0x00, 0x00, /* 0x1a00-0x1a3f */
   0x00, 0x00, 0x40, 0x7f, 0xe5, 0x1f, 0xf8, 0x9f, /* 0x1a40-0x1a7f */
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1a80-0x1abf */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x7f, /* 0x1a80-0x1abf */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1ac0-0x1aff */
   0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x17, /* 0x1b00-0x1b3f */
   0x04, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x0f, 0x00, /* 0x1b40-0x1b7f */
-  0x03, 0x00, 0x00, 0x00, 0x3c, 0x03, 0x00, 0x00, /* 0x1b80-0x1bbf */
+  0x03, 0x00, 0x00, 0x00, 0x3c, 0x3b, 0x00, 0x00, /* 0x1b80-0x1bbf */
   0x00, 0x00, 0x00, 0x00, 0x40, 0xa3, 0x03, 0x00, /* 0x1bc0-0x1bff */
   /* 0x1c00-0x1dff */
   0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xcf, 0x00, /* 0x1c00-0x1c3f */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1c40-0x1c7f */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1c80-0x1cbf */
-  0x00, 0x00, 0xf7, 0xff, 0xfd, 0x21, 0x00, 0x00, /* 0x1cc0-0x1cff */
+  0x00, 0x00, 0xf7, 0xff, 0xfd, 0x21, 0x10, 0x03, /* 0x1cc0-0x1cff */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d00-0x1d3f */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d40-0x1d7f */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d80-0x1dbf */
-  0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xf0, /* 0x1dc0-0x1dff */
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xf8, /* 0x1dc0-0x1dff */
   /* 0x2000-0x21ff */
   0x00, 0xf8, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, /* 0x2000-0x203f */
-  0x00, 0x00, 0x00, 0x00, 0x1f, 0xfc, 0x00, 0x00, /* 0x2040-0x207f */
+  0x00, 0x00, 0x00, 0x00, 0xdf, 0xff, 0x00, 0x00, /* 0x2040-0x207f */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x2080-0x20bf */
   0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, /* 0x20c0-0x20ff */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x2100-0x213f */
@@ -178,7 +178,7 @@ static const unsigned char nonspacing_table_data[27*64] = {
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x2d80-0x2dbf */
   0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, /* 0x2dc0-0x2dff */
   /* 0x3000-0x31ff */
-  0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, /* 0x3000-0x303f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, /* 0x3000-0x303f */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x3040-0x307f */
   0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, /* 0x3080-0x30bf */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30c0-0x30ff */
@@ -188,8 +188,8 @@ static const unsigned char nonspacing_table_data[27*64] = {
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x31c0-0x31ff */
   /* 0xa600-0xa7ff */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa600-0xa63f */
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x30, /* 0xa640-0xa67f */
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa680-0xa6bf */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xf7, 0x3f, /* 0xa640-0xa67f */
+  0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, /* 0xa680-0xa6bf */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, /* 0xa6c0-0xa6ff */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa700-0xa73f */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa740-0xa77f */
@@ -199,16 +199,16 @@ static const unsigned char nonspacing_table_data[27*64] = {
   0x44, 0x08, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, /* 0xa800-0xa83f */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa840-0xa87f */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa880-0xa8bf */
-  0x10, 0x00, 0x00, 0x00, 0xff, 0xff, 0x03, 0x00, /* 0xa8c0-0xa8ff */
+  0x30, 0x00, 0x00, 0x00, 0xff, 0xff, 0x03, 0x00, /* 0xa8c0-0xa8ff */
   0x00, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, /* 0xa900-0xa93f */
   0x80, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa940-0xa97f */
   0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x13, /* 0xa980-0xa9bf */
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa9c0-0xa9ff */
+  0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, /* 0xa9c0-0xa9ff */
   /* 0xaa00-0xabff */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x66, 0x00, /* 0xaa00-0xaa3f */
-  0x08, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xaa40-0xaa7f */
+  0x08, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, /* 0xaa40-0xaa7f */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9d, 0xc1, /* 0xaa80-0xaabf */
-  0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xaac0-0xaaff */
+  0x02, 0x00, 0x00, 0x00, 0x00, 0x30, 0x40, 0x00, /* 0xaac0-0xaaff */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xab00-0xab3f */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xab40-0xab7f */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xab80-0xabbf */
@@ -223,7 +223,7 @@ static const unsigned char nonspacing_table_data[27*64] = {
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xfb80-0xfbbf */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xfbc0-0xfbff */
   /* 0xfe00-0xffff */
-  0xff, 0xff, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, /* 0xfe00-0xfe3f */
+  0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, /* 0xfe00-0xfe3f */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xfe40-0xfe7f */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xfe80-0xfebf */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, /* 0xfec0-0xfeff */
@@ -240,24 +240,96 @@ static const unsigned char nonspacing_table_data[27*64] = {
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10140-0x1017f */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10180-0x101bf */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, /* 0x101c0-0x101ff */
+  /* 0x10200-0x103ff */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10200-0x1023f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10240-0x1027f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10280-0x102bf */
+  0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, /* 0x102c0-0x102ff */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10300-0x1033f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, /* 0x10340-0x1037f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10380-0x103bf */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x103c0-0x103ff */
   /* 0x10a00-0x10bff */
   0x6e, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, /* 0x10a00-0x10a3f */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10a40-0x10a7f */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10a80-0x10abf */
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10ac0-0x10aff */
+  0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, /* 0x10ac0-0x10aff */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10b00-0x10b3f */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10b40-0x10b7f */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10b80-0x10bbf */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10bc0-0x10bff */
   /* 0x11000-0x111ff */
   0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, /* 0x11000-0x1103f */
-  0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x11040-0x1107f */
+  0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, /* 0x11040-0x1107f */
   0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x26, /* 0x11080-0x110bf */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x110c0-0x110ff */
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x11100-0x1113f */
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x11140-0x1117f */
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x11180-0x111bf */
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x111c0-0x111ff */
+  0x07, 0x00, 0x00, 0x00, 0x80, 0xef, 0x1f, 0x00, /* 0x11100-0x1113f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, /* 0x11140-0x1117f */
+  0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x7f, /* 0x11180-0x111bf */
+  0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x111c0-0x111ff */
+  /* 0x11200-0x113ff */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xd3, 0x40, /* 0x11200-0x1123f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x11240-0x1127f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x11280-0x112bf */
+  0x00, 0x00, 0x00, 0x80, 0xf8, 0x07, 0x00, 0x00, /* 0x112c0-0x112ff */
+  0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, /* 0x11300-0x1133f */
+  0x01, 0x00, 0x00, 0x00, 0xc0, 0x1f, 0x1f, 0x00, /* 0x11340-0x1137f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x11380-0x113bf */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x113c0-0x113ff */
+  /* 0x11400-0x115ff */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, /* 0x11400-0x1143f */
+  0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x11440-0x1147f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x85, /* 0x11480-0x114bf */
+  0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x114c0-0x114ff */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x11500-0x1153f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x11540-0x1157f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0xb0, /* 0x11580-0x115bf */
+  0x01, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, /* 0x115c0-0x115ff */
+  /* 0x11600-0x117ff */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xa7, /* 0x11600-0x1163f */
+  0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x11640-0x1167f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0xbf, 0x00, /* 0x11680-0x116bf */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x116c0-0x116ff */
+  0x00, 0x00, 0x00, 0xe0, 0xbc, 0x0f, 0x00, 0x00, /* 0x11700-0x1173f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x11740-0x1177f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x11780-0x117bf */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x117c0-0x117ff */
+  /* 0x11c00-0x11dff */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x3f, /* 0x11c00-0x11c3f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x11c40-0x11c7f */
+  0x00, 0x00, 0xfc, 0xff, 0xff, 0xfc, 0x6d, 0x00, /* 0x11c80-0x11cbf */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x11cc0-0x11cff */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x11d00-0x11d3f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x11d40-0x11d7f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x11d80-0x11dbf */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x11dc0-0x11dff */
+  /* 0x16a00-0x16bff */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x16a00-0x16a3f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x16a40-0x16a7f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x16a80-0x16abf */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, /* 0x16ac0-0x16aff */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, /* 0x16b00-0x16b3f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x16b40-0x16b7f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x16b80-0x16bbf */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x16bc0-0x16bff */
+  /* 0x16e00-0x16fff */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x16e00-0x16e3f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x16e40-0x16e7f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x16e80-0x16ebf */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x16ec0-0x16eff */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x16f00-0x16f3f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x16f40-0x16f7f */
+  0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x16f80-0x16fbf */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x16fc0-0x16fff */
+  /* 0x1bc00-0x1bdff */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1bc00-0x1bc3f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1bc40-0x1bc7f */
+  0x00, 0x00, 0x00, 0x60, 0x0f, 0x00, 0x00, 0x00, /* 0x1bc80-0x1bcbf */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1bcc0-0x1bcff */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1bd00-0x1bd3f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1bd40-0x1bd7f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1bd80-0x1bdbf */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1bdc0-0x1bdff */
   /* 0x1d000-0x1d1ff */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d000-0x1d03f */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d040-0x1d07f */
@@ -275,9 +347,36 @@ static const unsigned char nonspacing_table_data[27*64] = {
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d300-0x1d33f */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d340-0x1d37f */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d380-0x1d3bf */
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00  /* 0x1d3c0-0x1d3ff */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d3c0-0x1d3ff */
+  /* 0x1da00-0x1dbff */
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xf8, /* 0x1da00-0x1da3f */
+  0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x20, 0x00, /* 0x1da40-0x1da7f */
+  0x10, 0x00, 0x00, 0xf8, 0xfe, 0xff, 0x00, 0x00, /* 0x1da80-0x1dabf */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1dac0-0x1daff */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1db00-0x1db3f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1db40-0x1db7f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1db80-0x1dbbf */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1dbc0-0x1dbff */
+  /* 0x1e000-0x1e1ff */
+  0x7f, 0xff, 0xff, 0xf9, 0xdb, 0x07, 0x00, 0x00, /* 0x1e000-0x1e03f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1e040-0x1e07f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1e080-0x1e0bf */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1e0c0-0x1e0ff */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1e100-0x1e13f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1e140-0x1e17f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1e180-0x1e1bf */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1e1c0-0x1e1ff */
+  /* 0x1e800-0x1e9ff */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1e800-0x1e83f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1e840-0x1e87f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1e880-0x1e8bf */
+  0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1e8c0-0x1e8ff */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1e900-0x1e93f */
+  0xf0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1e940-0x1e97f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1e980-0x1e9bf */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00  /* 0x1e9c0-0x1e9ff */
 };
-static const signed char nonspacing_table_ind[240] = {
+static const signed char nonspacing_table_ind[248] = {
    0,  1,  2,  3,  4,  5,  6,  7, /* 0x0000-0x0fff */
    8,  9, -1, 10, 11, 12, 13, -1, /* 0x1000-0x1fff */
   14, -1, -1, -1, -1, -1, 15, -1, /* 0x2000-0x2fff */
@@ -294,20 +393,21 @@ static const signed char nonspacing_table_ind[240] = {
   -1, -1, -1, -1, -1, -1, -1, -1, /* 0xd000-0xdfff */
   -1, -1, -1, -1, -1, -1, -1, -1, /* 0xe000-0xefff */
   -1, -1, -1, -1, -1, 20, -1, 21, /* 0xf000-0xffff */
-  22, -1, -1, -1, -1, 23, -1, -1, /* 0x10000-0x10fff */
-  24, -1, -1, -1, -1, -1, -1, -1, /* 0x11000-0x11fff */
+  22, 23, -1, -1, -1, 24, -1, -1, /* 0x10000-0x10fff */
+  25, 26, 27, 28, -1, -1, 29, -1, /* 0x11000-0x11fff */
   -1, -1, -1, -1, -1, -1, -1, -1, /* 0x12000-0x12fff */
   -1, -1, -1, -1, -1, -1, -1, -1, /* 0x13000-0x13fff */
   -1, -1, -1, -1, -1, -1, -1, -1, /* 0x14000-0x14fff */
   -1, -1, -1, -1, -1, -1, -1, -1, /* 0x15000-0x15fff */
-  -1, -1, -1, -1, -1, -1, -1, -1, /* 0x16000-0x16fff */
+  -1, -1, -1, -1, -1, 30, -1, 31, /* 0x16000-0x16fff */
   -1, -1, -1, -1, -1, -1, -1, -1, /* 0x17000-0x17fff */
   -1, -1, -1, -1, -1, -1, -1, -1, /* 0x18000-0x18fff */
   -1, -1, -1, -1, -1, -1, -1, -1, /* 0x19000-0x19fff */
   -1, -1, -1, -1, -1, -1, -1, -1, /* 0x1a000-0x1afff */
-  -1, -1, -1, -1, -1, -1, -1, -1, /* 0x1b000-0x1bfff */
+  -1, -1, -1, -1, -1, -1, 32, -1, /* 0x1b000-0x1bfff */
   -1, -1, -1, -1, -1, -1, -1, -1, /* 0x1c000-0x1cfff */
-  25, 26, -1, -1, -1, -1, -1, -1  /* 0x1d000-0x1dfff */
+  33, 34, -1, -1, -1, 35, -1, -1, /* 0x1d000-0x1dfff */
+  36, -1, -1, -1, 37, -1, -1, -1  /* 0x1e000-0x1efff */
 };
 
 /* Determine number of column positions required for UC.  */
@@ -315,7 +415,7 @@ int
 uc_width (ucs4_t uc, const char *encoding)
 {
   /* Test for non-spacing or control character.  */
-  if ((uc >> 9) < 240)
+  if ((uc >> 9) < 248)
     {
       int ind = nonspacing_table_ind[uc >> 9];
       if (ind >= 0)
diff --git a/lib/vasnprintf.c b/lib/vasnprintf.c
new file mode 100644 (file)
index 0000000..5757175
--- /dev/null
@@ -0,0 +1,5621 @@
+/* vsprintf with automatic memory allocation.
+   Copyright (C) 1999, 2002-2018 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, 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 <https://www.gnu.org/licenses/>.  */
+
+/* This file can be parametrized with the following macros:
+     VASNPRINTF         The name of the function being defined.
+     FCHAR_T            The element type of the format string.
+     DCHAR_T            The element type of the destination (result) string.
+     FCHAR_T_ONLY_ASCII Set to 1 to enable verification that all characters
+                        in the format string are ASCII. MUST be set if
+                        FCHAR_T and DCHAR_T are not the same type.
+     DIRECTIVE          Structure denoting a format directive.
+                        Depends on FCHAR_T.
+     DIRECTIVES         Structure denoting the set of format directives of a
+                        format string.  Depends on FCHAR_T.
+     PRINTF_PARSE       Function that parses a format string.
+                        Depends on FCHAR_T.
+     DCHAR_CPY          memcpy like function for DCHAR_T[] arrays.
+     DCHAR_SET          memset like function for DCHAR_T[] arrays.
+     DCHAR_MBSNLEN      mbsnlen like function for DCHAR_T[] arrays.
+     SNPRINTF           The system's snprintf (or similar) function.
+                        This may be either snprintf or swprintf.
+     TCHAR_T            The element type of the argument and result string
+                        of the said SNPRINTF function.  This may be either
+                        char or wchar_t.  The code exploits that
+                        sizeof (TCHAR_T) | sizeof (DCHAR_T) and
+                        alignof (TCHAR_T) <= alignof (DCHAR_T).
+     DCHAR_IS_TCHAR     Set to 1 if DCHAR_T and TCHAR_T are the same type.
+     DCHAR_CONV_FROM_ENCODING A function to convert from char[] to DCHAR[].
+     DCHAR_IS_UINT8_T   Set to 1 if DCHAR_T is uint8_t.
+     DCHAR_IS_UINT16_T  Set to 1 if DCHAR_T is uint16_t.
+     DCHAR_IS_UINT32_T  Set to 1 if DCHAR_T is uint32_t.  */
+
+/* Tell glibc's <stdio.h> to provide a prototype for snprintf().
+   This must come before <config.h> because <config.h> may include
+   <features.h>, and once <features.h> has been included, it's too late.  */
+#ifndef _GNU_SOURCE
+# define _GNU_SOURCE    1
+#endif
+
+#ifndef VASNPRINTF
+# include <config.h>
+#endif
+#ifndef IN_LIBINTL
+# include <alloca.h>
+#endif
+
+/* Specification.  */
+#ifndef VASNPRINTF
+# if WIDE_CHAR_VERSION
+#  include "vasnwprintf.h"
+# else
+#  include "vasnprintf.h"
+# endif
+#endif
+
+#include <locale.h>     /* localeconv() */
+#include <stdio.h>      /* snprintf(), sprintf() */
+#include <stdlib.h>     /* abort(), malloc(), realloc(), free() */
+#include <string.h>     /* memcpy(), strlen() */
+#include <errno.h>      /* errno */
+#include <limits.h>     /* CHAR_BIT */
+#include <float.h>      /* DBL_MAX_EXP, LDBL_MAX_EXP */
+#if HAVE_NL_LANGINFO
+# include <langinfo.h>
+#endif
+#ifndef VASNPRINTF
+# if WIDE_CHAR_VERSION
+#  include "wprintf-parse.h"
+# else
+#  include "printf-parse.h"
+# endif
+#endif
+
+/* Checked size_t computations.  */
+#include "xsize.h"
+
+#include "verify.h"
+
+#if (NEED_PRINTF_DOUBLE || NEED_PRINTF_LONG_DOUBLE) && !defined IN_LIBINTL
+# include <math.h>
+# include "float+.h"
+#endif
+
+#if (NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE) && !defined IN_LIBINTL
+# include <math.h>
+# include "isnand-nolibm.h"
+#endif
+
+#if (NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_INFINITE_LONG_DOUBLE) && !defined IN_LIBINTL
+# include <math.h>
+# include "isnanl-nolibm.h"
+# include "fpucw.h"
+#endif
+
+#if (NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_DOUBLE) && !defined IN_LIBINTL
+# include <math.h>
+# include "isnand-nolibm.h"
+# include "printf-frexp.h"
+#endif
+
+#if (NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_LONG_DOUBLE) && !defined IN_LIBINTL
+# include <math.h>
+# include "isnanl-nolibm.h"
+# include "printf-frexpl.h"
+# include "fpucw.h"
+#endif
+
+#ifndef FALLTHROUGH
+# if __GNUC__ < 7
+#  define FALLTHROUGH ((void) 0)
+# else
+#  define FALLTHROUGH __attribute__ ((__fallthrough__))
+# endif
+#endif
+
+/* Default parameters.  */
+#ifndef VASNPRINTF
+# if WIDE_CHAR_VERSION
+#  define VASNPRINTF vasnwprintf
+#  define FCHAR_T wchar_t
+#  define DCHAR_T wchar_t
+#  define TCHAR_T wchar_t
+#  define DCHAR_IS_TCHAR 1
+#  define DIRECTIVE wchar_t_directive
+#  define DIRECTIVES wchar_t_directives
+#  define PRINTF_PARSE wprintf_parse
+#  define DCHAR_CPY wmemcpy
+#  define DCHAR_SET wmemset
+# else
+#  define VASNPRINTF vasnprintf
+#  define FCHAR_T char
+#  define DCHAR_T char
+#  define TCHAR_T char
+#  define DCHAR_IS_TCHAR 1
+#  define DIRECTIVE char_directive
+#  define DIRECTIVES char_directives
+#  define PRINTF_PARSE printf_parse
+#  define DCHAR_CPY memcpy
+#  define DCHAR_SET memset
+# endif
+#endif
+#if WIDE_CHAR_VERSION
+  /* TCHAR_T is wchar_t.  */
+# define USE_SNPRINTF 1
+# if HAVE_DECL__SNWPRINTF
+   /* On Windows, the function swprintf() has a different signature than
+      on Unix; we use the function _snwprintf() or - on mingw - snwprintf()
+      instead.  The mingw function snwprintf() has fewer bugs than the
+      MSVCRT function _snwprintf(), so prefer that.  */
+#  if defined __MINGW32__
+#   define SNPRINTF snwprintf
+#  else
+#   define SNPRINTF _snwprintf
+#   define USE_MSVC__SNPRINTF 1
+#  endif
+# else
+   /* Unix.  */
+#  define SNPRINTF swprintf
+# endif
+#else
+  /* TCHAR_T is char.  */
+  /* Use snprintf if it exists under the name 'snprintf' or '_snprintf'.
+     But don't use it on BeOS, since BeOS snprintf produces no output if the
+     size argument is >= 0x3000000.
+     Also don't use it on Linux libc5, since there snprintf with size = 1
+     writes any output without bounds, like sprintf.  */
+# if (HAVE_DECL__SNPRINTF || HAVE_SNPRINTF) && !defined __BEOS__ && !(__GNU_LIBRARY__ == 1)
+#  define USE_SNPRINTF 1
+# else
+#  define USE_SNPRINTF 0
+# endif
+# if HAVE_DECL__SNPRINTF
+   /* Windows.  The mingw function snprintf() has fewer bugs than the MSVCRT
+      function _snprintf(), so prefer that.  */
+#  if defined __MINGW32__
+#   define SNPRINTF snprintf
+    /* Here we need to call the native snprintf, not rpl_snprintf.  */
+#   undef snprintf
+#  else
+    /* MSVC versions < 14 did not have snprintf, only _snprintf.  */
+#   define SNPRINTF _snprintf
+#   define USE_MSVC__SNPRINTF 1
+#  endif
+# else
+   /* Unix.  */
+#  define SNPRINTF snprintf
+   /* Here we need to call the native snprintf, not rpl_snprintf.  */
+#  undef snprintf
+# endif
+#endif
+/* Here we need to call the native sprintf, not rpl_sprintf.  */
+#undef sprintf
+
+/* GCC >= 4.0 with -Wall emits unjustified "... may be used uninitialized"
+   warnings in this file.  Use -Dlint to suppress them.  */
+#if defined GCC_LINT || defined lint
+# define IF_LINT(Code) Code
+#else
+# define IF_LINT(Code) /* empty */
+#endif
+
+/* Avoid some warnings from "gcc -Wshadow".
+   This file doesn't use the exp() and remainder() functions.  */
+#undef exp
+#define exp expo
+#undef remainder
+#define remainder rem
+
+#if (!USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || USE_MSVC__SNPRINTF) && !WIDE_CHAR_VERSION
+# if (HAVE_STRNLEN && !defined _AIX)
+#  define local_strnlen strnlen
+# else
+#  ifndef local_strnlen_defined
+#   define local_strnlen_defined 1
+static size_t
+local_strnlen (const char *string, size_t maxlen)
+{
+  const char *end = memchr (string, '\0', maxlen);
+  return end ? (size_t) (end - string) : maxlen;
+}
+#  endif
+# endif
+#endif
+
+#if (((!USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || USE_MSVC__SNPRINTF) && WIDE_CHAR_VERSION) || ((!USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || USE_MSVC__SNPRINTF || (NEED_PRINTF_DIRECTIVE_LS && !defined IN_LIBINTL)) && !WIDE_CHAR_VERSION && DCHAR_IS_TCHAR)) && HAVE_WCHAR_T
+# if HAVE_WCSLEN
+#  define local_wcslen wcslen
+# else
+   /* Solaris 2.5.1 has wcslen() in a separate library libw.so. To avoid
+      a dependency towards this library, here is a local substitute.
+      Define this substitute only once, even if this file is included
+      twice in the same compilation unit.  */
+#  ifndef local_wcslen_defined
+#   define local_wcslen_defined 1
+static size_t
+local_wcslen (const wchar_t *s)
+{
+  const wchar_t *ptr;
+
+  for (ptr = s; *ptr != (wchar_t) 0; ptr++)
+    ;
+  return ptr - s;
+}
+#  endif
+# endif
+#endif
+
+#if (!USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || USE_MSVC__SNPRINTF) && HAVE_WCHAR_T && WIDE_CHAR_VERSION
+# if HAVE_WCSNLEN
+#  define local_wcsnlen wcsnlen
+# else
+#  ifndef local_wcsnlen_defined
+#   define local_wcsnlen_defined 1
+static size_t
+local_wcsnlen (const wchar_t *s, size_t maxlen)
+{
+  const wchar_t *ptr;
+
+  for (ptr = s; maxlen > 0 && *ptr != (wchar_t) 0; ptr++, maxlen--)
+    ;
+  return ptr - s;
+}
+#  endif
+# endif
+#endif
+
+#if (NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_INFINITE_LONG_DOUBLE || NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE) && !defined IN_LIBINTL
+/* Determine the decimal-point character according to the current locale.  */
+# ifndef decimal_point_char_defined
+#  define decimal_point_char_defined 1
+static char
+decimal_point_char (void)
+{
+  const char *point;
+  /* Determine it in a multithread-safe way.  We know nl_langinfo is
+     multithread-safe on glibc systems and Mac OS X systems, but is not required
+     to be multithread-safe by POSIX.  sprintf(), however, is multithread-safe.
+     localeconv() is rarely multithread-safe.  */
+#  if HAVE_NL_LANGINFO && (__GLIBC__ || defined __UCLIBC__ || (defined __APPLE__ && defined __MACH__))
+  point = nl_langinfo (RADIXCHAR);
+#  elif 1
+  char pointbuf[5];
+  sprintf (pointbuf, "%#.0f", 1.0);
+  point = &pointbuf[1];
+#  else
+  point = localeconv () -> decimal_point;
+#  endif
+  /* The decimal point is always a single byte: either '.' or ','.  */
+  return (point[0] != '\0' ? point[0] : '.');
+}
+# endif
+#endif
+
+#if NEED_PRINTF_INFINITE_DOUBLE && !NEED_PRINTF_DOUBLE && !defined IN_LIBINTL
+
+/* Equivalent to !isfinite(x) || x == 0, but does not require libm.  */
+static int
+is_infinite_or_zero (double x)
+{
+  return isnand (x) || x + x == x;
+}
+
+#endif
+
+#if NEED_PRINTF_INFINITE_LONG_DOUBLE && !NEED_PRINTF_LONG_DOUBLE && !defined IN_LIBINTL
+
+/* Equivalent to !isfinite(x) || x == 0, but does not require libm.  */
+static int
+is_infinite_or_zerol (long double x)
+{
+  return isnanl (x) || x + x == x;
+}
+
+#endif
+
+#if (NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_DOUBLE) && !defined IN_LIBINTL
+
+/* Converting 'long double' to decimal without rare rounding bugs requires
+   real bignums.  We use the naming conventions of GNU gmp, but vastly simpler
+   (and slower) algorithms.  */
+
+typedef unsigned int mp_limb_t;
+# define GMP_LIMB_BITS 32
+verify (sizeof (mp_limb_t) * CHAR_BIT == GMP_LIMB_BITS);
+
+typedef unsigned long long mp_twolimb_t;
+# define GMP_TWOLIMB_BITS 64
+verify (sizeof (mp_twolimb_t) * CHAR_BIT == GMP_TWOLIMB_BITS);
+
+/* Representation of a bignum >= 0.  */
+typedef struct
+{
+  size_t nlimbs;
+  mp_limb_t *limbs; /* Bits in little-endian order, allocated with malloc().  */
+} mpn_t;
+
+/* Compute the product of two bignums >= 0.
+   Return the allocated memory in case of success, NULL in case of memory
+   allocation failure.  */
+static void *
+multiply (mpn_t src1, mpn_t src2, mpn_t *dest)
+{
+  const mp_limb_t *p1;
+  const mp_limb_t *p2;
+  size_t len1;
+  size_t len2;
+
+  if (src1.nlimbs <= src2.nlimbs)
+    {
+      len1 = src1.nlimbs;
+      p1 = src1.limbs;
+      len2 = src2.nlimbs;
+      p2 = src2.limbs;
+    }
+  else
+    {
+      len1 = src2.nlimbs;
+      p1 = src2.limbs;
+      len2 = src1.nlimbs;
+      p2 = src1.limbs;
+    }
+  /* Now 0 <= len1 <= len2.  */
+  if (len1 == 0)
+    {
+      /* src1 or src2 is zero.  */
+      dest->nlimbs = 0;
+      dest->limbs = (mp_limb_t *) malloc (1);
+    }
+  else
+    {
+      /* Here 1 <= len1 <= len2.  */
+      size_t dlen;
+      mp_limb_t *dp;
+      size_t k, i, j;
+
+      dlen = len1 + len2;
+      dp = (mp_limb_t *) malloc (dlen * sizeof (mp_limb_t));
+      if (dp == NULL)
+        return NULL;
+      for (k = len2; k > 0; )
+        dp[--k] = 0;
+      for (i = 0; i < len1; i++)
+        {
+          mp_limb_t digit1 = p1[i];
+          mp_twolimb_t carry = 0;
+          for (j = 0; j < len2; j++)
+            {
+              mp_limb_t digit2 = p2[j];
+              carry += (mp_twolimb_t) digit1 * (mp_twolimb_t) digit2;
+              carry += dp[i + j];
+              dp[i + j] = (mp_limb_t) carry;
+              carry = carry >> GMP_LIMB_BITS;
+            }
+          dp[i + len2] = (mp_limb_t) carry;
+        }
+      /* Normalise.  */
+      while (dlen > 0 && dp[dlen - 1] == 0)
+        dlen--;
+      dest->nlimbs = dlen;
+      dest->limbs = dp;
+    }
+  return dest->limbs;
+}
+
+/* Compute the quotient of a bignum a >= 0 and a bignum b > 0.
+   a is written as  a = q * b + r  with 0 <= r < b.  q is the quotient, r
+   the remainder.
+   Finally, round-to-even is performed: If r > b/2 or if r = b/2 and q is odd,
+   q is incremented.
+   Return the allocated memory in case of success, NULL in case of memory
+   allocation failure.  */
+static void *
+divide (mpn_t a, mpn_t b, mpn_t *q)
+{
+  /* Algorithm:
+     First normalise a and b: a=[a[m-1],...,a[0]], b=[b[n-1],...,b[0]]
+     with m>=0 and n>0 (in base beta = 2^GMP_LIMB_BITS).
+     If m<n, then q:=0 and r:=a.
+     If m>=n=1, perform a single-precision division:
+       r:=0, j:=m,
+       while j>0 do
+         {Here (q[m-1]*beta^(m-1)+...+q[j]*beta^j) * b[0] + r*beta^j =
+               = a[m-1]*beta^(m-1)+...+a[j]*beta^j und 0<=r<b[0]<beta}
+         j:=j-1, r:=r*beta+a[j], q[j]:=floor(r/b[0]), r:=r-b[0]*q[j].
+       Normalise [q[m-1],...,q[0]], yields q.
+     If m>=n>1, perform a multiple-precision division:
+       We have a/b < beta^(m-n+1).
+       s:=intDsize-1-(highest bit in b[n-1]), 0<=s<intDsize.
+       Shift a and b left by s bits, copying them. r:=a.
+       r=[r[m],...,r[0]], b=[b[n-1],...,b[0]] with b[n-1]>=beta/2.
+       For j=m-n,...,0: {Here 0 <= r < b*beta^(j+1).}
+         Compute q* :
+           q* := floor((r[j+n]*beta+r[j+n-1])/b[n-1]).
+           In case of overflow (q* >= beta) set q* := beta-1.
+           Compute c2 := ((r[j+n]*beta+r[j+n-1]) - q* * b[n-1])*beta + r[j+n-2]
+           and c3 := b[n-2] * q*.
+           {We have 0 <= c2 < 2*beta^2, even 0 <= c2 < beta^2 if no overflow
+            occurred.  Furthermore 0 <= c3 < beta^2.
+            If there was overflow and
+            r[j+n]*beta+r[j+n-1] - q* * b[n-1] >= beta, i.e. c2 >= beta^2,
+            the next test can be skipped.}
+           While c3 > c2, {Here 0 <= c2 < c3 < beta^2}
+             Put q* := q* - 1, c2 := c2 + b[n-1]*beta, c3 := c3 - b[n-2].
+           If q* > 0:
+             Put r := r - b * q* * beta^j. In detail:
+               [r[n+j],...,r[j]] := [r[n+j],...,r[j]] - q* * [b[n-1],...,b[0]].
+               hence: u:=0, for i:=0 to n-1 do
+                              u := u + q* * b[i],
+                              r[j+i]:=r[j+i]-(u mod beta) (+ beta, if carry),
+                              u:=u div beta (+ 1, if carry in subtraction)
+                      r[n+j]:=r[n+j]-u.
+               {Since always u = (q* * [b[i-1],...,b[0]] div beta^i) + 1
+                               < q* + 1 <= beta,
+                the carry u does not overflow.}
+             If a negative carry occurs, put q* := q* - 1
+               and [r[n+j],...,r[j]] := [r[n+j],...,r[j]] + [0,b[n-1],...,b[0]].
+         Set q[j] := q*.
+       Normalise [q[m-n],..,q[0]]; this yields the quotient q.
+       Shift [r[n-1],...,r[0]] right by s bits and normalise; this yields the
+       rest r.
+       The room for q[j] can be allocated at the memory location of r[n+j].
+     Finally, round-to-even:
+       Shift r left by 1 bit.
+       If r > b or if r = b and q[0] is odd, q := q+1.
+   */
+  const mp_limb_t *a_ptr = a.limbs;
+  size_t a_len = a.nlimbs;
+  const mp_limb_t *b_ptr = b.limbs;
+  size_t b_len = b.nlimbs;
+  mp_limb_t *roomptr;
+  mp_limb_t *tmp_roomptr = NULL;
+  mp_limb_t *q_ptr;
+  size_t q_len;
+  mp_limb_t *r_ptr;
+  size_t r_len;
+
+  /* Allocate room for a_len+2 digits.
+     (Need a_len+1 digits for the real division and 1 more digit for the
+     final rounding of q.)  */
+  roomptr = (mp_limb_t *) malloc ((a_len + 2) * sizeof (mp_limb_t));
+  if (roomptr == NULL)
+    return NULL;
+
+  /* Normalise a.  */
+  while (a_len > 0 && a_ptr[a_len - 1] == 0)
+    a_len--;
+
+  /* Normalise b.  */
+  for (;;)
+    {
+      if (b_len == 0)
+        /* Division by zero.  */
+        abort ();
+      if (b_ptr[b_len - 1] == 0)
+        b_len--;
+      else
+        break;
+    }
+
+  /* Here m = a_len >= 0 and n = b_len > 0.  */
+
+  if (a_len < b_len)
+    {
+      /* m<n: trivial case.  q=0, r := copy of a.  */
+      r_ptr = roomptr;
+      r_len = a_len;
+      memcpy (r_ptr, a_ptr, a_len * sizeof (mp_limb_t));
+      q_ptr = roomptr + a_len;
+      q_len = 0;
+    }
+  else if (b_len == 1)
+    {
+      /* n=1: single precision division.
+         beta^(m-1) <= a < beta^m  ==>  beta^(m-2) <= a/b < beta^m  */
+      r_ptr = roomptr;
+      q_ptr = roomptr + 1;
+      {
+        mp_limb_t den = b_ptr[0];
+        mp_limb_t remainder = 0;
+        const mp_limb_t *sourceptr = a_ptr + a_len;
+        mp_limb_t *destptr = q_ptr + a_len;
+        size_t count;
+        for (count = a_len; count > 0; count--)
+          {
+            mp_twolimb_t num =
+              ((mp_twolimb_t) remainder << GMP_LIMB_BITS) | *--sourceptr;
+            *--destptr = num / den;
+            remainder = num % den;
+          }
+        /* Normalise and store r.  */
+        if (remainder > 0)
+          {
+            r_ptr[0] = remainder;
+            r_len = 1;
+          }
+        else
+          r_len = 0;
+        /* Normalise q.  */
+        q_len = a_len;
+        if (q_ptr[q_len - 1] == 0)
+          q_len--;
+      }
+    }
+  else
+    {
+      /* n>1: multiple precision division.
+         beta^(m-1) <= a < beta^m, beta^(n-1) <= b < beta^n  ==>
+         beta^(m-n-1) <= a/b < beta^(m-n+1).  */
+      /* Determine s.  */
+      size_t s;
+      {
+        mp_limb_t msd = b_ptr[b_len - 1]; /* = b[n-1], > 0 */
+        /* Determine s = GMP_LIMB_BITS - integer_length (msd).
+           Code copied from gnulib's integer_length.c.  */
+# if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
+        s = __builtin_clz (msd);
+# else
+#  if defined DBL_EXPBIT0_WORD && defined DBL_EXPBIT0_BIT
+        if (GMP_LIMB_BITS <= DBL_MANT_BIT)
+          {
+            /* Use 'double' operations.
+               Assumes an IEEE 754 'double' implementation.  */
+#   define DBL_EXP_MASK ((DBL_MAX_EXP - DBL_MIN_EXP) | 7)
+#   define DBL_EXP_BIAS (DBL_EXP_MASK / 2 - 1)
+#   define NWORDS \
+     ((sizeof (double) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
+            union { double value; unsigned int word[NWORDS]; } m;
+
+            /* Use a single integer to floating-point conversion.  */
+            m.value = msd;
+
+            s = GMP_LIMB_BITS
+                - (((m.word[DBL_EXPBIT0_WORD] >> DBL_EXPBIT0_BIT) & DBL_EXP_MASK)
+                   - DBL_EXP_BIAS);
+          }
+        else
+#   undef NWORDS
+#  endif
+          {
+            s = 31;
+            if (msd >= 0x10000)
+              {
+                msd = msd >> 16;
+                s -= 16;
+              }
+            if (msd >= 0x100)
+              {
+                msd = msd >> 8;
+                s -= 8;
+              }
+            if (msd >= 0x10)
+              {
+                msd = msd >> 4;
+                s -= 4;
+              }
+            if (msd >= 0x4)
+              {
+                msd = msd >> 2;
+                s -= 2;
+              }
+            if (msd >= 0x2)
+              {
+                msd = msd >> 1;
+                s -= 1;
+              }
+          }
+# endif
+      }
+      /* 0 <= s < GMP_LIMB_BITS.
+         Copy b, shifting it left by s bits.  */
+      if (s > 0)
+        {
+          tmp_roomptr = (mp_limb_t *) malloc (b_len * sizeof (mp_limb_t));
+          if (tmp_roomptr == NULL)
+            {
+              free (roomptr);
+              return NULL;
+            }
+          {
+            const mp_limb_t *sourceptr = b_ptr;
+            mp_limb_t *destptr = tmp_roomptr;
+            mp_twolimb_t accu = 0;
+            size_t count;
+            for (count = b_len; count > 0; count--)
+              {
+                accu += (mp_twolimb_t) *sourceptr++ << s;
+                *destptr++ = (mp_limb_t) accu;
+                accu = accu >> GMP_LIMB_BITS;
+              }
+            /* accu must be zero, since that was how s was determined.  */
+            if (accu != 0)
+              abort ();
+          }
+          b_ptr = tmp_roomptr;
+        }
+      /* Copy a, shifting it left by s bits, yields r.
+         Memory layout:
+         At the beginning: r = roomptr[0..a_len],
+         at the end: r = roomptr[0..b_len-1], q = roomptr[b_len..a_len]  */
+      r_ptr = roomptr;
+      if (s == 0)
+        {
+          memcpy (r_ptr, a_ptr, a_len * sizeof (mp_limb_t));
+          r_ptr[a_len] = 0;
+        }
+      else
+        {
+          const mp_limb_t *sourceptr = a_ptr;
+          mp_limb_t *destptr = r_ptr;
+          mp_twolimb_t accu = 0;
+          size_t count;
+          for (count = a_len; count > 0; count--)
+            {
+              accu += (mp_twolimb_t) *sourceptr++ << s;
+              *destptr++ = (mp_limb_t) accu;
+              accu = accu >> GMP_LIMB_BITS;
+            }
+          *destptr++ = (mp_limb_t) accu;
+        }
+      q_ptr = roomptr + b_len;
+      q_len = a_len - b_len + 1; /* q will have m-n+1 limbs */
+      {
+        size_t j = a_len - b_len; /* m-n */
+        mp_limb_t b_msd = b_ptr[b_len - 1]; /* b[n-1] */
+        mp_limb_t b_2msd = b_ptr[b_len - 2]; /* b[n-2] */
+        mp_twolimb_t b_msdd = /* b[n-1]*beta+b[n-2] */
+          ((mp_twolimb_t) b_msd << GMP_LIMB_BITS) | b_2msd;
+        /* Division loop, traversed m-n+1 times.
+           j counts down, b is unchanged, beta/2 <= b[n-1] < beta.  */
+        for (;;)
+          {
+            mp_limb_t q_star;
+            mp_limb_t c1;
+            if (r_ptr[j + b_len] < b_msd) /* r[j+n] < b[n-1] ? */
+              {
+                /* Divide r[j+n]*beta+r[j+n-1] by b[n-1], no overflow.  */
+                mp_twolimb_t num =
+                  ((mp_twolimb_t) r_ptr[j + b_len] << GMP_LIMB_BITS)
+                  | r_ptr[j + b_len - 1];
+                q_star = num / b_msd;
+                c1 = num % b_msd;
+              }
+            else
+              {
+                /* Overflow, hence r[j+n]*beta+r[j+n-1] >= beta*b[n-1].  */
+                q_star = (mp_limb_t)~(mp_limb_t)0; /* q* = beta-1 */
+                /* Test whether r[j+n]*beta+r[j+n-1] - (beta-1)*b[n-1] >= beta
+                   <==> r[j+n]*beta+r[j+n-1] + b[n-1] >= beta*b[n-1]+beta
+                   <==> b[n-1] < floor((r[j+n]*beta+r[j+n-1]+b[n-1])/beta)
+                        {<= beta !}.
+                   If yes, jump directly to the subtraction loop.
+                   (Otherwise, r[j+n]*beta+r[j+n-1] - (beta-1)*b[n-1] < beta
+                    <==> floor((r[j+n]*beta+r[j+n-1]+b[n-1])/beta) = b[n-1] ) */
+                if (r_ptr[j + b_len] > b_msd
+                    || (c1 = r_ptr[j + b_len - 1] + b_msd) < b_msd)
+                  /* r[j+n] >= b[n-1]+1 or
+                     r[j+n] = b[n-1] and the addition r[j+n-1]+b[n-1] gives a
+                     carry.  */
+                  goto subtract;
+              }
+            /* q_star = q*,
+               c1 = (r[j+n]*beta+r[j+n-1]) - q* * b[n-1] (>=0, <beta).  */
+            {
+              mp_twolimb_t c2 = /* c1*beta+r[j+n-2] */
+                ((mp_twolimb_t) c1 << GMP_LIMB_BITS) | r_ptr[j + b_len - 2];
+              mp_twolimb_t c3 = /* b[n-2] * q* */
+                (mp_twolimb_t) b_2msd * (mp_twolimb_t) q_star;
+              /* While c2 < c3, increase c2 and decrease c3.
+                 Consider c3-c2.  While it is > 0, decrease it by
+                 b[n-1]*beta+b[n-2].  Because of b[n-1]*beta+b[n-2] >= beta^2/2
+                 this can happen only twice.  */
+              if (c3 > c2)
+                {
+                  q_star = q_star - 1; /* q* := q* - 1 */
+                  if (c3 - c2 > b_msdd)
+                    q_star = q_star - 1; /* q* := q* - 1 */
+                }
+            }
+            if (q_star > 0)
+              subtract:
+              {
+                /* Subtract r := r - b * q* * beta^j.  */
+                mp_limb_t cr;
+                {
+                  const mp_limb_t *sourceptr = b_ptr;
+                  mp_limb_t *destptr = r_ptr + j;
+                  mp_twolimb_t carry = 0;
+                  size_t count;
+                  for (count = b_len; count > 0; count--)
+                    {
+                      /* Here 0 <= carry <= q*.  */
+                      carry =
+                        carry
+                        + (mp_twolimb_t) q_star * (mp_twolimb_t) *sourceptr++
+                        + (mp_limb_t) ~(*destptr);
+                      /* Here 0 <= carry <= beta*q* + beta-1.  */
+                      *destptr++ = ~(mp_limb_t) carry;
+                      carry = carry >> GMP_LIMB_BITS; /* <= q* */
+                    }
+                  cr = (mp_limb_t) carry;
+                }
+                /* Subtract cr from r_ptr[j + b_len], then forget about
+                   r_ptr[j + b_len].  */
+                if (cr > r_ptr[j + b_len])
+                  {
+                    /* Subtraction gave a carry.  */
+                    q_star = q_star - 1; /* q* := q* - 1 */
+                    /* Add b back.  */
+                    {
+                      const mp_limb_t *sourceptr = b_ptr;
+                      mp_limb_t *destptr = r_ptr + j;
+                      mp_limb_t carry = 0;
+                      size_t count;
+                      for (count = b_len; count > 0; count--)
+                        {
+                          mp_limb_t source1 = *sourceptr++;
+                          mp_limb_t source2 = *destptr;
+                          *destptr++ = source1 + source2 + carry;
+                          carry =
+                            (carry
+                             ? source1 >= (mp_limb_t) ~source2
+                             : source1 > (mp_limb_t) ~source2);
+                        }
+                    }
+                    /* Forget about the carry and about r[j+n].  */
+                  }
+              }
+            /* q* is determined.  Store it as q[j].  */
+            q_ptr[j] = q_star;
+            if (j == 0)
+              break;
+            j--;
+          }
+      }
+      r_len = b_len;
+      /* Normalise q.  */
+      if (q_ptr[q_len - 1] == 0)
+        q_len--;
+# if 0 /* Not needed here, since we need r only to compare it with b/2, and
+          b is shifted left by s bits.  */
+      /* Shift r right by s bits.  */
+      if (s > 0)
+        {
+          mp_limb_t ptr = r_ptr + r_len;
+          mp_twolimb_t accu = 0;
+          size_t count;
+          for (count = r_len; count > 0; count--)
+            {
+              accu = (mp_twolimb_t) (mp_limb_t) accu << GMP_LIMB_BITS;
+              accu += (mp_twolimb_t) *--ptr << (GMP_LIMB_BITS - s);
+              *ptr = (mp_limb_t) (accu >> GMP_LIMB_BITS);
+            }
+        }
+# endif
+      /* Normalise r.  */
+      while (r_len > 0 && r_ptr[r_len - 1] == 0)
+        r_len--;
+    }
+  /* Compare r << 1 with b.  */
+  if (r_len > b_len)
+    goto increment_q;
+  {
+    size_t i;
+    for (i = b_len;;)
+      {
+        mp_limb_t r_i =
+          (i <= r_len && i > 0 ? r_ptr[i - 1] >> (GMP_LIMB_BITS - 1) : 0)
+          | (i < r_len ? r_ptr[i] << 1 : 0);
+        mp_limb_t b_i = (i < b_len ? b_ptr[i] : 0);
+        if (r_i > b_i)
+          goto increment_q;
+        if (r_i < b_i)
+          goto keep_q;
+        if (i == 0)
+          break;
+        i--;
+      }
+  }
+  if (q_len > 0 && ((q_ptr[0] & 1) != 0))
+    /* q is odd.  */
+    increment_q:
+    {
+      size_t i;
+      for (i = 0; i < q_len; i++)
+        if (++(q_ptr[i]) != 0)
+          goto keep_q;
+      q_ptr[q_len++] = 1;
+    }
+  keep_q:
+  if (tmp_roomptr != NULL)
+    free (tmp_roomptr);
+  q->limbs = q_ptr;
+  q->nlimbs = q_len;
+  return roomptr;
+}
+
+/* Convert a bignum a >= 0, multiplied with 10^extra_zeroes, to decimal
+   representation.
+   Destroys the contents of a.
+   Return the allocated memory - containing the decimal digits in low-to-high
+   order, terminated with a NUL character - in case of success, NULL in case
+   of memory allocation failure.  */
+static char *
+convert_to_decimal (mpn_t a, size_t extra_zeroes)
+{
+  mp_limb_t *a_ptr = a.limbs;
+  size_t a_len = a.nlimbs;
+  /* 0.03345 is slightly larger than log(2)/(9*log(10)).  */
+  size_t c_len = 9 * ((size_t)(a_len * (GMP_LIMB_BITS * 0.03345f)) + 1);
+  /* We need extra_zeroes bytes for zeroes, followed by c_len bytes for the
+     digits of a, followed by 1 byte for the terminating NUL.  */
+  char *c_ptr = (char *) malloc (xsum (xsum (extra_zeroes, c_len), 1));
+  if (c_ptr != NULL)
+    {
+      char *d_ptr = c_ptr;
+      for (; extra_zeroes > 0; extra_zeroes--)
+        *d_ptr++ = '0';
+      while (a_len > 0)
+        {
+          /* Divide a by 10^9, in-place.  */
+          mp_limb_t remainder = 0;
+          mp_limb_t *ptr = a_ptr + a_len;
+          size_t count;
+          for (count = a_len; count > 0; count--)
+            {
+              mp_twolimb_t num =
+                ((mp_twolimb_t) remainder << GMP_LIMB_BITS) | *--ptr;
+              *ptr = num / 1000000000;
+              remainder = num % 1000000000;
+            }
+          /* Store the remainder as 9 decimal digits.  */
+          for (count = 9; count > 0; count--)
+            {
+              *d_ptr++ = '0' + (remainder % 10);
+              remainder = remainder / 10;
+            }
+          /* Normalize a.  */
+          if (a_ptr[a_len - 1] == 0)
+            a_len--;
+        }
+      /* Remove leading zeroes.  */
+      while (d_ptr > c_ptr && d_ptr[-1] == '0')
+        d_ptr--;
+      /* But keep at least one zero.  */
+      if (d_ptr == c_ptr)
+        *d_ptr++ = '0';
+      /* Terminate the string.  */
+      *d_ptr = '\0';
+    }
+  return c_ptr;
+}
+
+# if NEED_PRINTF_LONG_DOUBLE
+
+/* Assuming x is finite and >= 0:
+   write x as x = 2^e * m, where m is a bignum.
+   Return the allocated memory in case of success, NULL in case of memory
+   allocation failure.  */
+static void *
+decode_long_double (long double x, int *ep, mpn_t *mp)
+{
+  mpn_t m;
+  int exp;
+  long double y;
+  size_t i;
+
+  /* Allocate memory for result.  */
+  m.nlimbs = (LDBL_MANT_BIT + GMP_LIMB_BITS - 1) / GMP_LIMB_BITS;
+  m.limbs = (mp_limb_t *) malloc (m.nlimbs * sizeof (mp_limb_t));
+  if (m.limbs == NULL)
+    return NULL;
+  /* Split into exponential part and mantissa.  */
+  y = frexpl (x, &exp);
+  if (!(y >= 0.0L && y < 1.0L))
+    abort ();
+  /* x = 2^exp * y = 2^(exp - LDBL_MANT_BIT) * (y * 2^LDBL_MANT_BIT), and the
+     latter is an integer.  */
+  /* Convert the mantissa (y * 2^LDBL_MANT_BIT) to a sequence of limbs.
+     I'm not sure whether it's safe to cast a 'long double' value between
+     2^31 and 2^32 to 'unsigned int', therefore play safe and cast only
+     'long double' values between 0 and 2^16 (to 'unsigned int' or 'int',
+     doesn't matter).  */
+#  if (LDBL_MANT_BIT % GMP_LIMB_BITS) != 0
+#   if (LDBL_MANT_BIT % GMP_LIMB_BITS) > GMP_LIMB_BITS / 2
+    {
+      mp_limb_t hi, lo;
+      y *= (mp_limb_t) 1 << (LDBL_MANT_BIT % (GMP_LIMB_BITS / 2));
+      hi = (int) y;
+      y -= hi;
+      if (!(y >= 0.0L && y < 1.0L))
+        abort ();
+      y *= (mp_limb_t) 1 << (GMP_LIMB_BITS / 2);
+      lo = (int) y;
+      y -= lo;
+      if (!(y >= 0.0L && y < 1.0L))
+        abort ();
+      m.limbs[LDBL_MANT_BIT / GMP_LIMB_BITS] = (hi << (GMP_LIMB_BITS / 2)) | lo;
+    }
+#   else
+    {
+      mp_limb_t d;
+      y *= (mp_limb_t) 1 << (LDBL_MANT_BIT % GMP_LIMB_BITS);
+      d = (int) y;
+      y -= d;
+      if (!(y >= 0.0L && y < 1.0L))
+        abort ();
+      m.limbs[LDBL_MANT_BIT / GMP_LIMB_BITS] = d;
+    }
+#   endif
+#  endif
+  for (i = LDBL_MANT_BIT / GMP_LIMB_BITS; i > 0; )
+    {
+      mp_limb_t hi, lo;
+      y *= (mp_limb_t) 1 << (GMP_LIMB_BITS / 2);
+      hi = (int) y;
+      y -= hi;
+      if (!(y >= 0.0L && y < 1.0L))
+        abort ();
+      y *= (mp_limb_t) 1 << (GMP_LIMB_BITS / 2);
+      lo = (int) y;
+      y -= lo;
+      if (!(y >= 0.0L && y < 1.0L))
+        abort ();
+      m.limbs[--i] = (hi << (GMP_LIMB_BITS / 2)) | lo;
+    }
+#  if 0 /* On FreeBSD 6.1/x86, 'long double' numbers sometimes have excess
+           precision.  */
+  if (!(y == 0.0L))
+    abort ();
+#  endif
+  /* Normalise.  */
+  while (m.nlimbs > 0 && m.limbs[m.nlimbs - 1] == 0)
+    m.nlimbs--;
+  *mp = m;
+  *ep = exp - LDBL_MANT_BIT;
+  return m.limbs;
+}
+
+# endif
+
+# if NEED_PRINTF_DOUBLE
+
+/* Assuming x is finite and >= 0:
+   write x as x = 2^e * m, where m is a bignum.
+   Return the allocated memory in case of success, NULL in case of memory
+   allocation failure.  */
+static void *
+decode_double (double x, int *ep, mpn_t *mp)
+{
+  mpn_t m;
+  int exp;
+  double y;
+  size_t i;
+
+  /* Allocate memory for result.  */
+  m.nlimbs = (DBL_MANT_BIT + GMP_LIMB_BITS - 1) / GMP_LIMB_BITS;
+  m.limbs = (mp_limb_t *) malloc (m.nlimbs * sizeof (mp_limb_t));
+  if (m.limbs == NULL)
+    return NULL;
+  /* Split into exponential part and mantissa.  */
+  y = frexp (x, &exp);
+  if (!(y >= 0.0 && y < 1.0))
+    abort ();
+  /* x = 2^exp * y = 2^(exp - DBL_MANT_BIT) * (y * 2^DBL_MANT_BIT), and the
+     latter is an integer.  */
+  /* Convert the mantissa (y * 2^DBL_MANT_BIT) to a sequence of limbs.
+     I'm not sure whether it's safe to cast a 'double' value between
+     2^31 and 2^32 to 'unsigned int', therefore play safe and cast only
+     'double' values between 0 and 2^16 (to 'unsigned int' or 'int',
+     doesn't matter).  */
+#  if (DBL_MANT_BIT % GMP_LIMB_BITS) != 0
+#   if (DBL_MANT_BIT % GMP_LIMB_BITS) > GMP_LIMB_BITS / 2
+    {
+      mp_limb_t hi, lo;
+      y *= (mp_limb_t) 1 << (DBL_MANT_BIT % (GMP_LIMB_BITS / 2));
+      hi = (int) y;
+      y -= hi;
+      if (!(y >= 0.0 && y < 1.0))
+        abort ();
+      y *= (mp_limb_t) 1 << (GMP_LIMB_BITS / 2);
+      lo = (int) y;
+      y -= lo;
+      if (!(y >= 0.0 && y < 1.0))
+        abort ();
+      m.limbs[DBL_MANT_BIT / GMP_LIMB_BITS] = (hi << (GMP_LIMB_BITS / 2)) | lo;
+    }
+#   else
+    {
+      mp_limb_t d;
+      y *= (mp_limb_t) 1 << (DBL_MANT_BIT % GMP_LIMB_BITS);
+      d = (int) y;
+      y -= d;
+      if (!(y >= 0.0 && y < 1.0))
+        abort ();
+      m.limbs[DBL_MANT_BIT / GMP_LIMB_BITS] = d;
+    }
+#   endif
+#  endif
+  for (i = DBL_MANT_BIT / GMP_LIMB_BITS; i > 0; )
+    {
+      mp_limb_t hi, lo;
+      y *= (mp_limb_t) 1 << (GMP_LIMB_BITS / 2);
+      hi = (int) y;
+      y -= hi;
+      if (!(y >= 0.0 && y < 1.0))
+        abort ();
+      y *= (mp_limb_t) 1 << (GMP_LIMB_BITS / 2);
+      lo = (int) y;
+      y -= lo;
+      if (!(y >= 0.0 && y < 1.0))
+        abort ();
+      m.limbs[--i] = (hi << (GMP_LIMB_BITS / 2)) | lo;
+    }
+  if (!(y == 0.0))
+    abort ();
+  /* Normalise.  */
+  while (m.nlimbs > 0 && m.limbs[m.nlimbs - 1] == 0)
+    m.nlimbs--;
+  *mp = m;
+  *ep = exp - DBL_MANT_BIT;
+  return m.limbs;
+}
+
+# endif
+
+/* Assuming x = 2^e * m is finite and >= 0, and n is an integer:
+   Returns the decimal representation of round (x * 10^n).
+   Return the allocated memory - containing the decimal digits in low-to-high
+   order, terminated with a NUL character - in case of success, NULL in case
+   of memory allocation failure.  */
+static char *
+scale10_round_decimal_decoded (int e, mpn_t m, void *memory, int n)
+{
+  int s;
+  size_t extra_zeroes;
+  unsigned int abs_n;
+  unsigned int abs_s;
+  mp_limb_t *pow5_ptr;
+  size_t pow5_len;
+  unsigned int s_limbs;
+  unsigned int s_bits;
+  mpn_t pow5;
+  mpn_t z;
+  void *z_memory;
+  char *digits;
+
+  if (memory == NULL)
+    return NULL;
+  /* x = 2^e * m, hence
+     y = round (2^e * 10^n * m) = round (2^(e+n) * 5^n * m)
+       = round (2^s * 5^n * m).  */
+  s = e + n;
+  extra_zeroes = 0;
+  /* Factor out a common power of 10 if possible.  */
+  if (s > 0 && n > 0)
+    {
+      extra_zeroes = (s < n ? s : n);
+      s -= extra_zeroes;
+      n -= extra_zeroes;
+    }
+  /* Here y = round (2^s * 5^n * m) * 10^extra_zeroes.
+     Before converting to decimal, we need to compute
+     z = round (2^s * 5^n * m).  */
+  /* Compute 5^|n|, possibly shifted by |s| bits if n and s have the same
+     sign.  2.322 is slightly larger than log(5)/log(2).  */
+  abs_n = (n >= 0 ? n : -n);
+  abs_s = (s >= 0 ? s : -s);
+  pow5_ptr = (mp_limb_t *) malloc (((int)(abs_n * (2.322f / GMP_LIMB_BITS)) + 1
+                                    + abs_s / GMP_LIMB_BITS + 1)
+                                   * sizeof (mp_limb_t));
+  if (pow5_ptr == NULL)
+    {
+      free (memory);
+      return NULL;
+    }
+  /* Initialize with 1.  */
+  pow5_ptr[0] = 1;
+  pow5_len = 1;
+  /* Multiply with 5^|n|.  */
+  if (abs_n > 0)
+    {
+      static mp_limb_t const small_pow5[13 + 1] =
+        {
+          1, 5, 25, 125, 625, 3125, 15625, 78125, 390625, 1953125, 9765625,
+          48828125, 244140625, 1220703125
+        };
+      unsigned int n13;
+      for (n13 = 0; n13 <= abs_n; n13 += 13)
+        {
+          mp_limb_t digit1 = small_pow5[n13 + 13 <= abs_n ? 13 : abs_n - n13];
+          size_t j;
+          mp_twolimb_t carry = 0;
+          for (j = 0; j < pow5_len; j++)
+            {
+              mp_limb_t digit2 = pow5_ptr[j];
+              carry += (mp_twolimb_t) digit1 * (mp_twolimb_t) digit2;
+              pow5_ptr[j] = (mp_limb_t) carry;
+              carry = carry >> GMP_LIMB_BITS;
+            }
+          if (carry > 0)
+            pow5_ptr[pow5_len++] = (mp_limb_t) carry;
+        }
+    }
+  s_limbs = abs_s / GMP_LIMB_BITS;
+  s_bits = abs_s % GMP_LIMB_BITS;
+  if (n >= 0 ? s >= 0 : s <= 0)
+    {
+      /* Multiply with 2^|s|.  */
+      if (s_bits > 0)
+        {
+          mp_limb_t *ptr = pow5_ptr;
+          mp_twolimb_t accu = 0;
+          size_t count;
+          for (count = pow5_len; count > 0; count--)
+            {
+              accu += (mp_twolimb_t) *ptr << s_bits;
+              *ptr++ = (mp_limb_t) accu;
+              accu = accu >> GMP_LIMB_BITS;
+            }
+          if (accu > 0)
+            {
+              *ptr = (mp_limb_t) accu;
+              pow5_len++;
+            }
+        }
+      if (s_limbs > 0)
+        {
+          size_t count;
+          for (count = pow5_len; count > 0;)
+            {
+              count--;
+              pow5_ptr[s_limbs + count] = pow5_ptr[count];
+            }
+          for (count = s_limbs; count > 0;)
+            {
+              count--;
+              pow5_ptr[count] = 0;
+            }
+          pow5_len += s_limbs;
+        }
+      pow5.limbs = pow5_ptr;
+      pow5.nlimbs = pow5_len;
+      if (n >= 0)
+        {
+          /* Multiply m with pow5.  No division needed.  */
+          z_memory = multiply (m, pow5, &z);
+        }
+      else
+        {
+          /* Divide m by pow5 and round.  */
+          z_memory = divide (m, pow5, &z);
+        }
+    }
+  else
+    {
+      pow5.limbs = pow5_ptr;
+      pow5.nlimbs = pow5_len;
+      if (n >= 0)
+        {
+          /* n >= 0, s < 0.
+             Multiply m with pow5, then divide by 2^|s|.  */
+          mpn_t numerator;
+          mpn_t denominator;
+          void *tmp_memory;
+          tmp_memory = multiply (m, pow5, &numerator);
+          if (tmp_memory == NULL)
+            {
+              free (pow5_ptr);
+              free (memory);
+              return NULL;
+            }
+          /* Construct 2^|s|.  */
+          {
+            mp_limb_t *ptr = pow5_ptr + pow5_len;
+            size_t i;
+            for (i = 0; i < s_limbs; i++)
+              ptr[i] = 0;
+            ptr[s_limbs] = (mp_limb_t) 1 << s_bits;
+            denominator.limbs = ptr;
+            denominator.nlimbs = s_limbs + 1;
+          }
+          z_memory = divide (numerator, denominator, &z);
+          free (tmp_memory);
+        }
+      else
+        {
+          /* n < 0, s > 0.
+             Multiply m with 2^s, then divide by pow5.  */
+          mpn_t numerator;
+          mp_limb_t *num_ptr;
+          num_ptr = (mp_limb_t *) malloc ((m.nlimbs + s_limbs + 1)
+                                          * sizeof (mp_limb_t));
+          if (num_ptr == NULL)
+            {
+              free (pow5_ptr);
+              free (memory);
+              return NULL;
+            }
+          {
+            mp_limb_t *destptr = num_ptr;
+            {
+              size_t i;
+              for (i = 0; i < s_limbs; i++)
+                *destptr++ = 0;
+            }
+            if (s_bits > 0)
+              {
+                const mp_limb_t *sourceptr = m.limbs;
+                mp_twolimb_t accu = 0;
+                size_t count;
+                for (count = m.nlimbs; count > 0; count--)
+                  {
+                    accu += (mp_twolimb_t) *sourceptr++ << s_bits;
+                    *destptr++ = (mp_limb_t) accu;
+                    accu = accu >> GMP_LIMB_BITS;
+                  }
+                if (accu > 0)
+                  *destptr++ = (mp_limb_t) accu;
+              }
+            else
+              {
+                const mp_limb_t *sourceptr = m.limbs;
+                size_t count;
+                for (count = m.nlimbs; count > 0; count--)
+                  *destptr++ = *sourceptr++;
+              }
+            numerator.limbs = num_ptr;
+            numerator.nlimbs = destptr - num_ptr;
+          }
+          z_memory = divide (numerator, pow5, &z);
+          free (num_ptr);
+        }
+    }
+  free (pow5_ptr);
+  free (memory);
+
+  /* Here y = round (x * 10^n) = z * 10^extra_zeroes.  */
+
+  if (z_memory == NULL)
+    return NULL;
+  digits = convert_to_decimal (z, extra_zeroes);
+  free (z_memory);
+  return digits;
+}
+
+# if NEED_PRINTF_LONG_DOUBLE
+
+/* Assuming x is finite and >= 0, and n is an integer:
+   Returns the decimal representation of round (x * 10^n).
+   Return the allocated memory - containing the decimal digits in low-to-high
+   order, terminated with a NUL character - in case of success, NULL in case
+   of memory allocation failure.  */
+static char *
+scale10_round_decimal_long_double (long double x, int n)
+{
+  int e IF_LINT(= 0);
+  mpn_t m;
+  void *memory = decode_long_double (x, &e, &m);
+  return scale10_round_decimal_decoded (e, m, memory, n);
+}
+
+# endif
+
+# if NEED_PRINTF_DOUBLE
+
+/* Assuming x is finite and >= 0, and n is an integer:
+   Returns the decimal representation of round (x * 10^n).
+   Return the allocated memory - containing the decimal digits in low-to-high
+   order, terminated with a NUL character - in case of success, NULL in case
+   of memory allocation failure.  */
+static char *
+scale10_round_decimal_double (double x, int n)
+{
+  int e IF_LINT(= 0);
+  mpn_t m;
+  void *memory = decode_double (x, &e, &m);
+  return scale10_round_decimal_decoded (e, m, memory, n);
+}
+
+# endif
+
+# if NEED_PRINTF_LONG_DOUBLE
+
+/* Assuming x is finite and > 0:
+   Return an approximation for n with 10^n <= x < 10^(n+1).
+   The approximation is usually the right n, but may be off by 1 sometimes.  */
+static int
+floorlog10l (long double x)
+{
+  int exp;
+  long double y;
+  double z;
+  double l;
+
+  /* Split into exponential part and mantissa.  */
+  y = frexpl (x, &exp);
+  if (!(y >= 0.0L && y < 1.0L))
+    abort ();
+  if (y == 0.0L)
+    return INT_MIN;
+  if (y < 0.5L)
+    {
+      while (y < (1.0L / (1 << (GMP_LIMB_BITS / 2)) / (1 << (GMP_LIMB_BITS / 2))))
+        {
+          y *= 1.0L * (1 << (GMP_LIMB_BITS / 2)) * (1 << (GMP_LIMB_BITS / 2));
+          exp -= GMP_LIMB_BITS;
+        }
+      if (y < (1.0L / (1 << 16)))
+        {
+          y *= 1.0L * (1 << 16);
+          exp -= 16;
+        }
+      if (y < (1.0L / (1 << 8)))
+        {
+          y *= 1.0L * (1 << 8);
+          exp -= 8;
+        }
+      if (y < (1.0L / (1 << 4)))
+        {
+          y *= 1.0L * (1 << 4);
+          exp -= 4;
+        }
+      if (y < (1.0L / (1 << 2)))
+        {
+          y *= 1.0L * (1 << 2);
+          exp -= 2;
+        }
+      if (y < (1.0L / (1 << 1)))
+        {
+          y *= 1.0L * (1 << 1);
+          exp -= 1;
+        }
+    }
+  if (!(y >= 0.5L && y < 1.0L))
+    abort ();
+  /* Compute an approximation for l = log2(x) = exp + log2(y).  */
+  l = exp;
+  z = y;
+  if (z < 0.70710678118654752444)
+    {
+      z *= 1.4142135623730950488;
+      l -= 0.5;
+    }
+  if (z < 0.8408964152537145431)
+    {
+      z *= 1.1892071150027210667;
+      l -= 0.25;
+    }
+  if (z < 0.91700404320467123175)
+    {
+      z *= 1.0905077326652576592;
+      l -= 0.125;
+    }
+  if (z < 0.9576032806985736469)
+    {
+      z *= 1.0442737824274138403;
+      l -= 0.0625;
+    }
+  /* Now 0.95 <= z <= 1.01.  */
+  z = 1 - z;
+  /* log2(1-z) = 1/log(2) * (- z - z^2/2 - z^3/3 - z^4/4 - ...)
+     Four terms are enough to get an approximation with error < 10^-7.  */
+  l -= 1.4426950408889634074 * z * (1.0 + z * (0.5 + z * ((1.0 / 3) + z * 0.25)));
+  /* Finally multiply with log(2)/log(10), yields an approximation for
+     log10(x).  */
+  l *= 0.30102999566398119523;
+  /* Round down to the next integer.  */
+  return (int) l + (l < 0 ? -1 : 0);
+}
+
+# endif
+
+# if NEED_PRINTF_DOUBLE
+
+/* Assuming x is finite and > 0:
+   Return an approximation for n with 10^n <= x < 10^(n+1).
+   The approximation is usually the right n, but may be off by 1 sometimes.  */
+static int
+floorlog10 (double x)
+{
+  int exp;
+  double y;
+  double z;
+  double l;
+
+  /* Split into exponential part and mantissa.  */
+  y = frexp (x, &exp);
+  if (!(y >= 0.0 && y < 1.0))
+    abort ();
+  if (y == 0.0)
+    return INT_MIN;
+  if (y < 0.5)
+    {
+      while (y < (1.0 / (1 << (GMP_LIMB_BITS / 2)) / (1 << (GMP_LIMB_BITS / 2))))
+        {
+          y *= 1.0 * (1 << (GMP_LIMB_BITS / 2)) * (1 << (GMP_LIMB_BITS / 2));
+          exp -= GMP_LIMB_BITS;
+        }
+      if (y < (1.0 / (1 << 16)))
+        {
+          y *= 1.0 * (1 << 16);
+          exp -= 16;
+        }
+      if (y < (1.0 / (1 << 8)))
+        {
+          y *= 1.0 * (1 << 8);
+          exp -= 8;
+        }
+      if (y < (1.0 / (1 << 4)))
+        {
+          y *= 1.0 * (1 << 4);
+          exp -= 4;
+        }
+      if (y < (1.0 / (1 << 2)))
+        {
+          y *= 1.0 * (1 << 2);
+          exp -= 2;
+        }
+      if (y < (1.0 / (1 << 1)))
+        {
+          y *= 1.0 * (1 << 1);
+          exp -= 1;
+        }
+    }
+  if (!(y >= 0.5 && y < 1.0))
+    abort ();
+  /* Compute an approximation for l = log2(x) = exp + log2(y).  */
+  l = exp;
+  z = y;
+  if (z < 0.70710678118654752444)
+    {
+      z *= 1.4142135623730950488;
+      l -= 0.5;
+    }
+  if (z < 0.8408964152537145431)
+    {
+      z *= 1.1892071150027210667;
+      l -= 0.25;
+    }
+  if (z < 0.91700404320467123175)
+    {
+      z *= 1.0905077326652576592;
+      l -= 0.125;
+    }
+  if (z < 0.9576032806985736469)
+    {
+      z *= 1.0442737824274138403;
+      l -= 0.0625;
+    }
+  /* Now 0.95 <= z <= 1.01.  */
+  z = 1 - z;
+  /* log2(1-z) = 1/log(2) * (- z - z^2/2 - z^3/3 - z^4/4 - ...)
+     Four terms are enough to get an approximation with error < 10^-7.  */
+  l -= 1.4426950408889634074 * z * (1.0 + z * (0.5 + z * ((1.0 / 3) + z * 0.25)));
+  /* Finally multiply with log(2)/log(10), yields an approximation for
+     log10(x).  */
+  l *= 0.30102999566398119523;
+  /* Round down to the next integer.  */
+  return (int) l + (l < 0 ? -1 : 0);
+}
+
+# endif
+
+/* Tests whether a string of digits consists of exactly PRECISION zeroes and
+   a single '1' digit.  */
+static int
+is_borderline (const char *digits, size_t precision)
+{
+  for (; precision > 0; precision--, digits++)
+    if (*digits != '0')
+      return 0;
+  if (*digits != '1')
+    return 0;
+  digits++;
+  return *digits == '\0';
+}
+
+#endif
+
+#if !USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || USE_MSVC__SNPRINTF
+
+/* Use a different function name, to make it possible that the 'wchar_t'
+   parametrization and the 'char' parametrization get compiled in the same
+   translation unit.  */
+# if WIDE_CHAR_VERSION
+#  define MAX_ROOM_NEEDED wmax_room_needed
+# else
+#  define MAX_ROOM_NEEDED max_room_needed
+# endif
+
+/* Returns the number of TCHAR_T units needed as temporary space for the result
+   of sprintf or SNPRINTF of a single conversion directive.  */
+static size_t
+MAX_ROOM_NEEDED (const arguments *ap, size_t arg_index, FCHAR_T conversion,
+                 arg_type type, int flags, size_t width, int has_precision,
+                 size_t precision, int pad_ourselves)
+{
+  size_t tmp_length;
+
+  switch (conversion)
+    {
+    case 'd': case 'i': case 'u':
+# if HAVE_LONG_LONG_INT
+      if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT)
+        tmp_length =
+          (unsigned int) (sizeof (unsigned long long) * CHAR_BIT
+                          * 0.30103 /* binary -> decimal */
+                         )
+          + 1; /* turn floor into ceil */
+      else
+# endif
+      if (type == TYPE_LONGINT || type == TYPE_ULONGINT)
+        tmp_length =
+          (unsigned int) (sizeof (unsigned long) * CHAR_BIT
+                          * 0.30103 /* binary -> decimal */
+                         )
+          + 1; /* turn floor into ceil */
+      else
+        tmp_length =
+          (unsigned int) (sizeof (unsigned int) * CHAR_BIT
+                          * 0.30103 /* binary -> decimal */
+                         )
+          + 1; /* turn floor into ceil */
+      if (tmp_length < precision)
+        tmp_length = precision;
+      /* Multiply by 2, as an estimate for FLAG_GROUP.  */
+      tmp_length = xsum (tmp_length, tmp_length);
+      /* Add 1, to account for a leading sign.  */
+      tmp_length = xsum (tmp_length, 1);
+      break;
+
+    case 'o':
+# if HAVE_LONG_LONG_INT
+      if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT)
+        tmp_length =
+          (unsigned int) (sizeof (unsigned long long) * CHAR_BIT
+                          * 0.333334 /* binary -> octal */
+                         )
+          + 1; /* turn floor into ceil */
+      else
+# endif
+      if (type == TYPE_LONGINT || type == TYPE_ULONGINT)
+        tmp_length =
+          (unsigned int) (sizeof (unsigned long) * CHAR_BIT
+                          * 0.333334 /* binary -> octal */
+                         )
+          + 1; /* turn floor into ceil */
+      else
+        tmp_length =
+          (unsigned int) (sizeof (unsigned int) * CHAR_BIT
+                          * 0.333334 /* binary -> octal */
+                         )
+          + 1; /* turn floor into ceil */
+      if (tmp_length < precision)
+        tmp_length = precision;
+      /* Add 1, to account for a leading sign.  */
+      tmp_length = xsum (tmp_length, 1);
+      break;
+
+    case 'x': case 'X':
+# if HAVE_LONG_LONG_INT
+      if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT)
+        tmp_length =
+          (unsigned int) (sizeof (unsigned long long) * CHAR_BIT
+                          * 0.25 /* binary -> hexadecimal */
+                         )
+          + 1; /* turn floor into ceil */
+      else
+# endif
+      if (type == TYPE_LONGINT || type == TYPE_ULONGINT)
+        tmp_length =
+          (unsigned int) (sizeof (unsigned long) * CHAR_BIT
+                          * 0.25 /* binary -> hexadecimal */
+                         )
+          + 1; /* turn floor into ceil */
+      else
+        tmp_length =
+          (unsigned int) (sizeof (unsigned int) * CHAR_BIT
+                          * 0.25 /* binary -> hexadecimal */
+                         )
+          + 1; /* turn floor into ceil */
+      if (tmp_length < precision)
+        tmp_length = precision;
+      /* Add 2, to account for a leading sign or alternate form.  */
+      tmp_length = xsum (tmp_length, 2);
+      break;
+
+    case 'f': case 'F':
+      if (type == TYPE_LONGDOUBLE)
+        tmp_length =
+          (unsigned int) (LDBL_MAX_EXP
+                          * 0.30103 /* binary -> decimal */
+                          * 2 /* estimate for FLAG_GROUP */
+                         )
+          + 1 /* turn floor into ceil */
+          + 10; /* sign, decimal point etc. */
+      else
+        tmp_length =
+          (unsigned int) (DBL_MAX_EXP
+                          * 0.30103 /* binary -> decimal */
+                          * 2 /* estimate for FLAG_GROUP */
+                         )
+          + 1 /* turn floor into ceil */
+          + 10; /* sign, decimal point etc. */
+      tmp_length = xsum (tmp_length, precision);
+      break;
+
+    case 'e': case 'E': case 'g': case 'G':
+      tmp_length =
+        12; /* sign, decimal point, exponent etc. */
+      tmp_length = xsum (tmp_length, precision);
+      break;
+
+    case 'a': case 'A':
+      if (type == TYPE_LONGDOUBLE)
+        tmp_length =
+          (unsigned int) (LDBL_DIG
+                          * 0.831 /* decimal -> hexadecimal */
+                         )
+          + 1; /* turn floor into ceil */
+      else
+        tmp_length =
+          (unsigned int) (DBL_DIG
+                          * 0.831 /* decimal -> hexadecimal */
+                         )
+          + 1; /* turn floor into ceil */
+      if (tmp_length < precision)
+        tmp_length = precision;
+      /* Account for sign, decimal point etc. */
+      tmp_length = xsum (tmp_length, 12);
+      break;
+
+    case 'c':
+# if HAVE_WINT_T && !WIDE_CHAR_VERSION
+      if (type == TYPE_WIDE_CHAR)
+        tmp_length = MB_CUR_MAX;
+      else
+# endif
+        tmp_length = 1;
+      break;
+
+    case 's':
+# if HAVE_WCHAR_T
+      if (type == TYPE_WIDE_STRING)
+        {
+#  if WIDE_CHAR_VERSION
+          /* ISO C says about %ls in fwprintf:
+               "If the precision is not specified or is greater than the size
+                of the array, the array shall contain a null wide character."
+             So if there is a precision, we must not use wcslen.  */
+          const wchar_t *arg = ap->arg[arg_index].a.a_wide_string;
+
+          if (has_precision)
+            tmp_length = local_wcsnlen (arg, precision);
+          else
+            tmp_length = local_wcslen (arg);
+#  else
+          /* ISO C says about %ls in fprintf:
+               "If a precision is specified, no more than that many bytes are
+                written (including shift sequences, if any), and the array
+                shall contain a null wide character if, to equal the multibyte
+                character sequence length given by the precision, the function
+                would need to access a wide character one past the end of the
+                array."
+             So if there is a precision, we must not use wcslen.  */
+          /* This case has already been handled separately in VASNPRINTF.  */
+          abort ();
+#  endif
+        }
+      else
+# endif
+        {
+# if WIDE_CHAR_VERSION
+          /* ISO C says about %s in fwprintf:
+               "If the precision is not specified or is greater than the size
+                of the converted array, the converted array shall contain a
+                null wide character."
+             So if there is a precision, we must not use strlen.  */
+          /* This case has already been handled separately in VASNPRINTF.  */
+          abort ();
+# else
+          /* ISO C says about %s in fprintf:
+               "If the precision is not specified or greater than the size of
+                the array, the array shall contain a null character."
+             So if there is a precision, we must not use strlen.  */
+          const char *arg = ap->arg[arg_index].a.a_string;
+
+          if (has_precision)
+            tmp_length = local_strnlen (arg, precision);
+          else
+            tmp_length = strlen (arg);
+# endif
+        }
+      break;
+
+    case 'p':
+      tmp_length =
+        (unsigned int) (sizeof (void *) * CHAR_BIT
+                        * 0.25 /* binary -> hexadecimal */
+                       )
+          + 1 /* turn floor into ceil */
+          + 2; /* account for leading 0x */
+      break;
+
+    default:
+      abort ();
+    }
+
+  if (!pad_ourselves)
+    {
+# if ENABLE_UNISTDIO
+      /* Padding considers the number of characters, therefore the number of
+         elements after padding may be
+           > max (tmp_length, width)
+         but is certainly
+           <= tmp_length + width.  */
+      tmp_length = xsum (tmp_length, width);
+# else
+      /* Padding considers the number of elements, says POSIX.  */
+      if (tmp_length < width)
+        tmp_length = width;
+# endif
+    }
+
+  tmp_length = xsum (tmp_length, 1); /* account for trailing NUL */
+
+  return tmp_length;
+}
+
+#endif
+
+DCHAR_T *
+VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
+            const FCHAR_T *format, va_list args)
+{
+  DIRECTIVES d;
+  arguments a;
+
+  if (PRINTF_PARSE (format, &d, &a) < 0)
+    /* errno is already set.  */
+    return NULL;
+
+#define CLEANUP() \
+  if (d.dir != d.direct_alloc_dir)                                      \
+    free (d.dir);                                                       \
+  if (a.arg != a.direct_alloc_arg)                                      \
+    free (a.arg);
+
+  if (PRINTF_FETCHARGS (args, &a) < 0)
+    {
+      CLEANUP ();
+      errno = EINVAL;
+      return NULL;
+    }
+
+  {
+    size_t buf_neededlength;
+    TCHAR_T *buf;
+    TCHAR_T *buf_malloced;
+    const FCHAR_T *cp;
+    size_t i;
+    DIRECTIVE *dp;
+    /* Output string accumulator.  */
+    DCHAR_T *result;
+    size_t allocated;
+    size_t length;
+
+    /* Allocate a small buffer that will hold a directive passed to
+       sprintf or snprintf.  */
+    buf_neededlength =
+      xsum4 (7, d.max_width_length, d.max_precision_length, 6);
+#if HAVE_ALLOCA
+    if (buf_neededlength < 4000 / sizeof (TCHAR_T))
+      {
+        buf = (TCHAR_T *) alloca (buf_neededlength * sizeof (TCHAR_T));
+        buf_malloced = NULL;
+      }
+    else
+#endif
+      {
+        size_t buf_memsize = xtimes (buf_neededlength, sizeof (TCHAR_T));
+        if (size_overflow_p (buf_memsize))
+          goto out_of_memory_1;
+        buf = (TCHAR_T *) malloc (buf_memsize);
+        if (buf == NULL)
+          goto out_of_memory_1;
+        buf_malloced = buf;
+      }
+
+    if (resultbuf != NULL)
+      {
+        result = resultbuf;
+        allocated = *lengthp;
+      }
+    else
+      {
+        result = NULL;
+        allocated = 0;
+      }
+    length = 0;
+    /* Invariants:
+       result is either == resultbuf or == NULL or malloc-allocated.
+       If length > 0, then result != NULL.  */
+
+    /* Ensures that allocated >= needed.  Aborts through a jump to
+       out_of_memory if needed is SIZE_MAX or otherwise too big.  */
+#define ENSURE_ALLOCATION(needed) \
+    if ((needed) > allocated)                                                \
+      {                                                                      \
+        size_t memory_size;                                                  \
+        DCHAR_T *memory;                                                     \
+                                                                             \
+        allocated = (allocated > 0 ? xtimes (allocated, 2) : 12);            \
+        if ((needed) > allocated)                                            \
+          allocated = (needed);                                              \
+        memory_size = xtimes (allocated, sizeof (DCHAR_T));                  \
+        if (size_overflow_p (memory_size))                                   \
+          goto out_of_memory;                                                \
+        if (result == resultbuf || result == NULL)                           \
+          memory = (DCHAR_T *) malloc (memory_size);                         \
+        else                                                                 \
+          memory = (DCHAR_T *) realloc (result, memory_size);                \
+        if (memory == NULL)                                                  \
+          goto out_of_memory;                                                \
+        if (result == resultbuf && length > 0)                               \
+          DCHAR_CPY (memory, result, length);                                \
+        result = memory;                                                     \
+      }
+
+    for (cp = format, i = 0, dp = &d.dir[0]; ; cp = dp->dir_end, i++, dp++)
+      {
+        if (cp != dp->dir_start)
+          {
+            size_t n = dp->dir_start - cp;
+            size_t augmented_length = xsum (length, n);
+
+            ENSURE_ALLOCATION (augmented_length);
+            /* This copies a piece of FCHAR_T[] into a DCHAR_T[].  Here we
+               need that the format string contains only ASCII characters
+               if FCHAR_T and DCHAR_T are not the same type.  */
+            if (sizeof (FCHAR_T) == sizeof (DCHAR_T))
+              {
+                DCHAR_CPY (result + length, (const DCHAR_T *) cp, n);
+                length = augmented_length;
+              }
+            else
+              {
+                do
+                  result[length++] = *cp++;
+                while (--n > 0);
+              }
+          }
+        if (i == d.count)
+          break;
+
+        /* Execute a single directive.  */
+        if (dp->conversion == '%')
+          {
+            size_t augmented_length;
+
+            if (!(dp->arg_index == ARG_NONE))
+              abort ();
+            augmented_length = xsum (length, 1);
+            ENSURE_ALLOCATION (augmented_length);
+            result[length] = '%';
+            length = augmented_length;
+          }
+        else
+          {
+            if (!(dp->arg_index != ARG_NONE))
+              abort ();
+
+            if (dp->conversion == 'n')
+              {
+                switch (a.arg[dp->arg_index].type)
+                  {
+                  case TYPE_COUNT_SCHAR_POINTER:
+                    *a.arg[dp->arg_index].a.a_count_schar_pointer = length;
+                    break;
+                  case TYPE_COUNT_SHORT_POINTER:
+                    *a.arg[dp->arg_index].a.a_count_short_pointer = length;
+                    break;
+                  case TYPE_COUNT_INT_POINTER:
+                    *a.arg[dp->arg_index].a.a_count_int_pointer = length;
+                    break;
+                  case TYPE_COUNT_LONGINT_POINTER:
+                    *a.arg[dp->arg_index].a.a_count_longint_pointer = length;
+                    break;
+#if HAVE_LONG_LONG_INT
+                  case TYPE_COUNT_LONGLONGINT_POINTER:
+                    *a.arg[dp->arg_index].a.a_count_longlongint_pointer = length;
+                    break;
+#endif
+                  default:
+                    abort ();
+                  }
+              }
+#if ENABLE_UNISTDIO
+            /* The unistdio extensions.  */
+            else if (dp->conversion == 'U')
+              {
+                arg_type type = a.arg[dp->arg_index].type;
+                int flags = dp->flags;
+                int has_width;
+                size_t width;
+                int has_precision;
+                size_t precision;
+
+                has_width = 0;
+                width = 0;
+                if (dp->width_start != dp->width_end)
+                  {
+                    if (dp->width_arg_index != ARG_NONE)
+                      {
+                        int arg;
+
+                        if (!(a.arg[dp->width_arg_index].type == TYPE_INT))
+                          abort ();
+                        arg = a.arg[dp->width_arg_index].a.a_int;
+                        width = arg;
+                        if (arg < 0)
+                          {
+                            /* "A negative field width is taken as a '-' flag
+                                followed by a positive field width."  */
+                            flags |= FLAG_LEFT;
+                            width = -width;
+                          }
+                      }
+                    else
+                      {
+                        const FCHAR_T *digitp = dp->width_start;
+
+                        do
+                          width = xsum (xtimes (width, 10), *digitp++ - '0');
+                        while (digitp != dp->width_end);
+                      }
+                    has_width = 1;
+                  }
+
+                has_precision = 0;
+                precision = 0;
+                if (dp->precision_start != dp->precision_end)
+                  {
+                    if (dp->precision_arg_index != ARG_NONE)
+                      {
+                        int arg;
+
+                        if (!(a.arg[dp->precision_arg_index].type == TYPE_INT))
+                          abort ();
+                        arg = a.arg[dp->precision_arg_index].a.a_int;
+                        /* "A negative precision is taken as if the precision
+                            were omitted."  */
+                        if (arg >= 0)
+                          {
+                            precision = arg;
+                            has_precision = 1;
+                          }
+                      }
+                    else
+                      {
+                        const FCHAR_T *digitp = dp->precision_start + 1;
+
+                        precision = 0;
+                        while (digitp != dp->precision_end)
+                          precision = xsum (xtimes (precision, 10), *digitp++ - '0');
+                        has_precision = 1;
+                      }
+                  }
+
+                switch (type)
+                  {
+                  case TYPE_U8_STRING:
+                    {
+                      const uint8_t *arg = a.arg[dp->arg_index].a.a_u8_string;
+                      const uint8_t *arg_end;
+                      size_t characters;
+
+                      if (has_precision)
+                        {
+                          /* Use only PRECISION characters, from the left.  */
+                          arg_end = arg;
+                          characters = 0;
+                          for (; precision > 0; precision--)
+                            {
+                              int count = u8_strmblen (arg_end);
+                              if (count == 0)
+                                break;
+                              if (count < 0)
+                                {
+                                  if (!(result == resultbuf || result == NULL))
+                                    free (result);
+                                  if (buf_malloced != NULL)
+                                    free (buf_malloced);
+                                  CLEANUP ();
+                                  errno = EILSEQ;
+                                  return NULL;
+                                }
+                              arg_end += count;
+                              characters++;
+                            }
+                        }
+                      else if (has_width)
+                        {
+                          /* Use the entire string, and count the number of
+                             characters.  */
+                          arg_end = arg;
+                          characters = 0;
+                          for (;;)
+                            {
+                              int count = u8_strmblen (arg_end);
+                              if (count == 0)
+                                break;
+                              if (count < 0)
+                                {
+                                  if (!(result == resultbuf || result == NULL))
+                                    free (result);
+                                  if (buf_malloced != NULL)
+                                    free (buf_malloced);
+                                  CLEANUP ();
+                                  errno = EILSEQ;
+                                  return NULL;
+                                }
+                              arg_end += count;
+                              characters++;
+                            }
+                        }
+                      else
+                        {
+                          /* Use the entire string.  */
+                          arg_end = arg + u8_strlen (arg);
+                          /* The number of characters doesn't matter.  */
+                          characters = 0;
+                        }
+
+                      if (characters < width && !(dp->flags & FLAG_LEFT))
+                        {
+                          size_t n = width - characters;
+                          ENSURE_ALLOCATION (xsum (length, n));
+                          DCHAR_SET (result + length, ' ', n);
+                          length += n;
+                        }
+
+# if DCHAR_IS_UINT8_T
+                      {
+                        size_t n = arg_end - arg;
+                        ENSURE_ALLOCATION (xsum (length, n));
+                        DCHAR_CPY (result + length, arg, n);
+                        length += n;
+                      }
+# else
+                      { /* Convert.  */
+                        DCHAR_T *converted = result + length;
+                        size_t converted_len = allocated - length;
+#  if DCHAR_IS_TCHAR
+                        /* Convert from UTF-8 to locale encoding.  */
+                        converted =
+                          u8_conv_to_encoding (locale_charset (),
+                                               iconveh_question_mark,
+                                               arg, arg_end - arg, NULL,
+                                               converted, &converted_len);
+#  else
+                        /* Convert from UTF-8 to UTF-16/UTF-32.  */
+                        converted =
+                          U8_TO_DCHAR (arg, arg_end - arg,
+                                       converted, &converted_len);
+#  endif
+                        if (converted == NULL)
+                          {
+                            int saved_errno = errno;
+                            if (!(result == resultbuf || result == NULL))
+                              free (result);
+                            if (buf_malloced != NULL)
+                              free (buf_malloced);
+                            CLEANUP ();
+                            errno = saved_errno;
+                            return NULL;
+                          }
+                        if (converted != result + length)
+                          {
+                            ENSURE_ALLOCATION (xsum (length, converted_len));
+                            DCHAR_CPY (result + length, converted, converted_len);
+                            free (converted);
+                          }
+                        length += converted_len;
+                      }
+# endif
+
+                      if (characters < width && (dp->flags & FLAG_LEFT))
+                        {
+                          size_t n = width - characters;
+                          ENSURE_ALLOCATION (xsum (length, n));
+                          DCHAR_SET (result + length, ' ', n);
+                          length += n;
+                        }
+                    }
+                    break;
+
+                  case TYPE_U16_STRING:
+                    {
+                      const uint16_t *arg = a.arg[dp->arg_index].a.a_u16_string;
+                      const uint16_t *arg_end;
+                      size_t characters;
+
+                      if (has_precision)
+                        {
+                          /* Use only PRECISION characters, from the left.  */
+                          arg_end = arg;
+                          characters = 0;
+                          for (; precision > 0; precision--)
+                            {
+                              int count = u16_strmblen (arg_end);
+                              if (count == 0)
+                                break;
+                              if (count < 0)
+                                {
+                                  if (!(result == resultbuf || result == NULL))
+                                    free (result);
+                                  if (buf_malloced != NULL)
+                                    free (buf_malloced);
+                                  CLEANUP ();
+                                  errno = EILSEQ;
+                                  return NULL;
+                                }
+                              arg_end += count;
+                              characters++;
+                            }
+                        }
+                      else if (has_width)
+                        {
+                          /* Use the entire string, and count the number of
+                             characters.  */
+                          arg_end = arg;
+                          characters = 0;
+                          for (;;)
+                            {
+                              int count = u16_strmblen (arg_end);
+                              if (count == 0)
+                                break;
+                              if (count < 0)
+                                {
+                                  if (!(result == resultbuf || result == NULL))
+                                    free (result);
+                                  if (buf_malloced != NULL)
+                                    free (buf_malloced);
+                                  CLEANUP ();
+                                  errno = EILSEQ;
+                                  return NULL;
+                                }
+                              arg_end += count;
+                              characters++;
+                            }
+                        }
+                      else
+                        {
+                          /* Use the entire string.  */
+                          arg_end = arg + u16_strlen (arg);
+                          /* The number of characters doesn't matter.  */
+                          characters = 0;
+                        }
+
+                      if (characters < width && !(dp->flags & FLAG_LEFT))
+                        {
+                          size_t n = width - characters;
+                          ENSURE_ALLOCATION (xsum (length, n));
+                          DCHAR_SET (result + length, ' ', n);
+                          length += n;
+                        }
+
+# if DCHAR_IS_UINT16_T
+                      {
+                        size_t n = arg_end - arg;
+                        ENSURE_ALLOCATION (xsum (length, n));
+                        DCHAR_CPY (result + length, arg, n);
+                        length += n;
+                      }
+# else
+                      { /* Convert.  */
+                        DCHAR_T *converted = result + length;
+                        size_t converted_len = allocated - length;
+#  if DCHAR_IS_TCHAR
+                        /* Convert from UTF-16 to locale encoding.  */
+                        converted =
+                          u16_conv_to_encoding (locale_charset (),
+                                                iconveh_question_mark,
+                                                arg, arg_end - arg, NULL,
+                                                converted, &converted_len);
+#  else
+                        /* Convert from UTF-16 to UTF-8/UTF-32.  */
+                        converted =
+                          U16_TO_DCHAR (arg, arg_end - arg,
+                                        converted, &converted_len);
+#  endif
+                        if (converted == NULL)
+                          {
+                            int saved_errno = errno;
+                            if (!(result == resultbuf || result == NULL))
+                              free (result);
+                            if (buf_malloced != NULL)
+                              free (buf_malloced);
+                            CLEANUP ();
+                            errno = saved_errno;
+                            return NULL;
+                          }
+                        if (converted != result + length)
+                          {
+                            ENSURE_ALLOCATION (xsum (length, converted_len));
+                            DCHAR_CPY (result + length, converted, converted_len);
+                            free (converted);
+                          }
+                        length += converted_len;
+                      }
+# endif
+
+                      if (characters < width && (dp->flags & FLAG_LEFT))
+                        {
+                          size_t n = width - characters;
+                          ENSURE_ALLOCATION (xsum (length, n));
+                          DCHAR_SET (result + length, ' ', n);
+                          length += n;
+                        }
+                    }
+                    break;
+
+                  case TYPE_U32_STRING:
+                    {
+                      const uint32_t *arg = a.arg[dp->arg_index].a.a_u32_string;
+                      const uint32_t *arg_end;
+                      size_t characters;
+
+                      if (has_precision)
+                        {
+                          /* Use only PRECISION characters, from the left.  */
+                          arg_end = arg;
+                          characters = 0;
+                          for (; precision > 0; precision--)
+                            {
+                              int count = u32_strmblen (arg_end);
+                              if (count == 0)
+                                break;
+                              if (count < 0)
+                                {
+                                  if (!(result == resultbuf || result == NULL))
+                                    free (result);
+                                  if (buf_malloced != NULL)
+                                    free (buf_malloced);
+                                  CLEANUP ();
+                                  errno = EILSEQ;
+                                  return NULL;
+                                }
+                              arg_end += count;
+                              characters++;
+                            }
+                        }
+                      else if (has_width)
+                        {
+                          /* Use the entire string, and count the number of
+                             characters.  */
+                          arg_end = arg;
+                          characters = 0;
+                          for (;;)
+                            {
+                              int count = u32_strmblen (arg_end);
+                              if (count == 0)
+                                break;
+                              if (count < 0)
+                                {
+                                  if (!(result == resultbuf || result == NULL))
+                                    free (result);
+                                  if (buf_malloced != NULL)
+                                    free (buf_malloced);
+                                  CLEANUP ();
+                                  errno = EILSEQ;
+                                  return NULL;
+                                }
+                              arg_end += count;
+                              characters++;
+                            }
+                        }
+                      else
+                        {
+                          /* Use the entire string.  */
+                          arg_end = arg + u32_strlen (arg);
+                          /* The number of characters doesn't matter.  */
+                          characters = 0;
+                        }
+
+                      if (characters < width && !(dp->flags & FLAG_LEFT))
+                        {
+                          size_t n = width - characters;
+                          ENSURE_ALLOCATION (xsum (length, n));
+                          DCHAR_SET (result + length, ' ', n);
+                          length += n;
+                        }
+
+# if DCHAR_IS_UINT32_T
+                      {
+                        size_t n = arg_end - arg;
+                        ENSURE_ALLOCATION (xsum (length, n));
+                        DCHAR_CPY (result + length, arg, n);
+                        length += n;
+                      }
+# else
+                      { /* Convert.  */
+                        DCHAR_T *converted = result + length;
+                        size_t converted_len = allocated - length;
+#  if DCHAR_IS_TCHAR
+                        /* Convert from UTF-32 to locale encoding.  */
+                        converted =
+                          u32_conv_to_encoding (locale_charset (),
+                                                iconveh_question_mark,
+                                                arg, arg_end - arg, NULL,
+                                                converted, &converted_len);
+#  else
+                        /* Convert from UTF-32 to UTF-8/UTF-16.  */
+                        converted =
+                          U32_TO_DCHAR (arg, arg_end - arg,
+                                        converted, &converted_len);
+#  endif
+                        if (converted == NULL)
+                          {
+                            int saved_errno = errno;
+                            if (!(result == resultbuf || result == NULL))
+                              free (result);
+                            if (buf_malloced != NULL)
+                              free (buf_malloced);
+                            CLEANUP ();
+                            errno = saved_errno;
+                            return NULL;
+                          }
+                        if (converted != result + length)
+                          {
+                            ENSURE_ALLOCATION (xsum (length, converted_len));
+                            DCHAR_CPY (result + length, converted, converted_len);
+                            free (converted);
+                          }
+                        length += converted_len;
+                      }
+# endif
+
+                      if (characters < width && (dp->flags & FLAG_LEFT))
+                        {
+                          size_t n = width - characters;
+                          ENSURE_ALLOCATION (xsum (length, n));
+                          DCHAR_SET (result + length, ' ', n);
+                          length += n;
+                        }
+                    }
+                    break;
+
+                  default:
+                    abort ();
+                  }
+              }
+#endif
+#if (!USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || USE_MSVC__SNPRINTF || (NEED_PRINTF_DIRECTIVE_LS && !defined IN_LIBINTL)) && HAVE_WCHAR_T
+            else if (dp->conversion == 's'
+# if WIDE_CHAR_VERSION
+                     && a.arg[dp->arg_index].type != TYPE_WIDE_STRING
+# else
+                     && a.arg[dp->arg_index].type == TYPE_WIDE_STRING
+# endif
+                    )
+              {
+                /* The normal handling of the 's' directive below requires
+                   allocating a temporary buffer.  The determination of its
+                   length (tmp_length), in the case when a precision is
+                   specified, below requires a conversion between a char[]
+                   string and a wchar_t[] wide string.  It could be done, but
+                   we have no guarantee that the implementation of sprintf will
+                   use the exactly same algorithm.  Without this guarantee, it
+                   is possible to have buffer overrun bugs.  In order to avoid
+                   such bugs, we implement the entire processing of the 's'
+                   directive ourselves.  */
+                int flags = dp->flags;
+                int has_width;
+                size_t width;
+                int has_precision;
+                size_t precision;
+
+                has_width = 0;
+                width = 0;
+                if (dp->width_start != dp->width_end)
+                  {
+                    if (dp->width_arg_index != ARG_NONE)
+                      {
+                        int arg;
+
+                        if (!(a.arg[dp->width_arg_index].type == TYPE_INT))
+                          abort ();
+                        arg = a.arg[dp->width_arg_index].a.a_int;
+                        width = arg;
+                        if (arg < 0)
+                          {
+                            /* "A negative field width is taken as a '-' flag
+                                followed by a positive field width."  */
+                            flags |= FLAG_LEFT;
+                            width = -width;
+                          }
+                      }
+                    else
+                      {
+                        const FCHAR_T *digitp = dp->width_start;
+
+                        do
+                          width = xsum (xtimes (width, 10), *digitp++ - '0');
+                        while (digitp != dp->width_end);
+                      }
+                    has_width = 1;
+                  }
+
+                has_precision = 0;
+                precision = 6;
+                if (dp->precision_start != dp->precision_end)
+                  {
+                    if (dp->precision_arg_index != ARG_NONE)
+                      {
+                        int arg;
+
+                        if (!(a.arg[dp->precision_arg_index].type == TYPE_INT))
+                          abort ();
+                        arg = a.arg[dp->precision_arg_index].a.a_int;
+                        /* "A negative precision is taken as if the precision
+                            were omitted."  */
+                        if (arg >= 0)
+                          {
+                            precision = arg;
+                            has_precision = 1;
+                          }
+                      }
+                    else
+                      {
+                        const FCHAR_T *digitp = dp->precision_start + 1;
+
+                        precision = 0;
+                        while (digitp != dp->precision_end)
+                          precision = xsum (xtimes (precision, 10), *digitp++ - '0');
+                        has_precision = 1;
+                      }
+                  }
+
+# if WIDE_CHAR_VERSION
+                /* %s in vasnwprintf.  See the specification of fwprintf.  */
+                {
+                  const char *arg = a.arg[dp->arg_index].a.a_string;
+                  const char *arg_end;
+                  size_t characters;
+
+                  if (has_precision)
+                    {
+                      /* Use only as many bytes as needed to produce PRECISION
+                         wide characters, from the left.  */
+#  if HAVE_MBRTOWC
+                      mbstate_t state;
+                      memset (&state, '\0', sizeof (mbstate_t));
+#  endif
+                      arg_end = arg;
+                      characters = 0;
+                      for (; precision > 0; precision--)
+                        {
+                          int count;
+#  if HAVE_MBRTOWC
+                          count = mbrlen (arg_end, MB_CUR_MAX, &state);
+#  else
+                          count = mblen (arg_end, MB_CUR_MAX);
+#  endif
+                          if (count == 0)
+                            /* Found the terminating NUL.  */
+                            break;
+                          if (count < 0)
+                            {
+                              /* Invalid or incomplete multibyte character.  */
+                              if (!(result == resultbuf || result == NULL))
+                                free (result);
+                              if (buf_malloced != NULL)
+                                free (buf_malloced);
+                              CLEANUP ();
+                              errno = EILSEQ;
+                              return NULL;
+                            }
+                          arg_end += count;
+                          characters++;
+                        }
+                    }
+                  else if (has_width)
+                    {
+                      /* Use the entire string, and count the number of wide
+                         characters.  */
+#  if HAVE_MBRTOWC
+                      mbstate_t state;
+                      memset (&state, '\0', sizeof (mbstate_t));
+#  endif
+                      arg_end = arg;
+                      characters = 0;
+                      for (;;)
+                        {
+                          int count;
+#  if HAVE_MBRTOWC
+                          count = mbrlen (arg_end, MB_CUR_MAX, &state);
+#  else
+                          count = mblen (arg_end, MB_CUR_MAX);
+#  endif
+                          if (count == 0)
+                            /* Found the terminating NUL.  */
+                            break;
+                          if (count < 0)
+                            {
+                              /* Invalid or incomplete multibyte character.  */
+                              if (!(result == resultbuf || result == NULL))
+                                free (result);
+                              if (buf_malloced != NULL)
+                                free (buf_malloced);
+                              CLEANUP ();
+                              errno = EILSEQ;
+                              return NULL;
+                            }
+                          arg_end += count;
+                          characters++;
+                        }
+                    }
+                  else
+                    {
+                      /* Use the entire string.  */
+                      arg_end = arg + strlen (arg);
+                      /* The number of characters doesn't matter.  */
+                      characters = 0;
+                    }
+
+                  if (characters < width && !(dp->flags & FLAG_LEFT))
+                    {
+                      size_t n = width - characters;
+                      ENSURE_ALLOCATION (xsum (length, n));
+                      DCHAR_SET (result + length, ' ', n);
+                      length += n;
+                    }
+
+                  if (has_precision || has_width)
+                    {
+                      /* We know the number of wide characters in advance.  */
+                      size_t remaining;
+#  if HAVE_MBRTOWC
+                      mbstate_t state;
+                      memset (&state, '\0', sizeof (mbstate_t));
+#  endif
+                      ENSURE_ALLOCATION (xsum (length, characters));
+                      for (remaining = characters; remaining > 0; remaining--)
+                        {
+                          wchar_t wc;
+                          int count;
+#  if HAVE_MBRTOWC
+                          count = mbrtowc (&wc, arg, arg_end - arg, &state);
+#  else
+                          count = mbtowc (&wc, arg, arg_end - arg);
+#  endif
+                          if (count <= 0)
+                            /* mbrtowc not consistent with mbrlen, or mbtowc
+                               not consistent with mblen.  */
+                            abort ();
+                          result[length++] = wc;
+                          arg += count;
+                        }
+                      if (!(arg == arg_end))
+                        abort ();
+                    }
+                  else
+                    {
+#  if HAVE_MBRTOWC
+                      mbstate_t state;
+                      memset (&state, '\0', sizeof (mbstate_t));
+#  endif
+                      while (arg < arg_end)
+                        {
+                          wchar_t wc;
+                          int count;
+#  if HAVE_MBRTOWC
+                          count = mbrtowc (&wc, arg, arg_end - arg, &state);
+#  else
+                          count = mbtowc (&wc, arg, arg_end - arg);
+#  endif
+                          if (count <= 0)
+                            /* mbrtowc not consistent with mbrlen, or mbtowc
+                               not consistent with mblen.  */
+                            abort ();
+                          ENSURE_ALLOCATION (xsum (length, 1));
+                          result[length++] = wc;
+                          arg += count;
+                        }
+                    }
+
+                  if (characters < width && (dp->flags & FLAG_LEFT))
+                    {
+                      size_t n = width - characters;
+                      ENSURE_ALLOCATION (xsum (length, n));
+                      DCHAR_SET (result + length, ' ', n);
+                      length += n;
+                    }
+                }
+# else
+                /* %ls in vasnprintf.  See the specification of fprintf.  */
+                {
+                  const wchar_t *arg = a.arg[dp->arg_index].a.a_wide_string;
+                  const wchar_t *arg_end;
+                  size_t characters;
+#  if !DCHAR_IS_TCHAR
+                  /* This code assumes that TCHAR_T is 'char'.  */
+                  verify (sizeof (TCHAR_T) == 1);
+                  TCHAR_T *tmpsrc;
+                  DCHAR_T *tmpdst;
+                  size_t tmpdst_len;
+#  endif
+                  size_t w;
+
+                  if (has_precision)
+                    {
+                      /* Use only as many wide characters as needed to produce
+                         at most PRECISION bytes, from the left.  */
+#  if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t
+                      mbstate_t state;
+                      memset (&state, '\0', sizeof (mbstate_t));
+#  endif
+                      arg_end = arg;
+                      characters = 0;
+                      while (precision > 0)
+                        {
+                          char cbuf[64]; /* Assume MB_CUR_MAX <= 64.  */
+                          int count;
+
+                          if (*arg_end == 0)
+                            /* Found the terminating null wide character.  */
+                            break;
+#  if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t
+                          count = wcrtomb (cbuf, *arg_end, &state);
+#  else
+                          count = wctomb (cbuf, *arg_end);
+#  endif
+                          if (count < 0)
+                            {
+                              /* Cannot convert.  */
+                              if (!(result == resultbuf || result == NULL))
+                                free (result);
+                              if (buf_malloced != NULL)
+                                free (buf_malloced);
+                              CLEANUP ();
+                              errno = EILSEQ;
+                              return NULL;
+                            }
+                          if (precision < (unsigned int) count)
+                            break;
+                          arg_end++;
+                          characters += count;
+                          precision -= count;
+                        }
+                    }
+#  if DCHAR_IS_TCHAR
+                  else if (has_width)
+#  else
+                  else
+#  endif
+                    {
+                      /* Use the entire string, and count the number of
+                         bytes.  */
+#  if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t
+                      mbstate_t state;
+                      memset (&state, '\0', sizeof (mbstate_t));
+#  endif
+                      arg_end = arg;
+                      characters = 0;
+                      for (;;)
+                        {
+                          char cbuf[64]; /* Assume MB_CUR_MAX <= 64.  */
+                          int count;
+
+                          if (*arg_end == 0)
+                            /* Found the terminating null wide character.  */
+                            break;
+#  if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t
+                          count = wcrtomb (cbuf, *arg_end, &state);
+#  else
+                          count = wctomb (cbuf, *arg_end);
+#  endif
+                          if (count < 0)
+                            {
+                              /* Cannot convert.  */
+                              if (!(result == resultbuf || result == NULL))
+                                free (result);
+                              if (buf_malloced != NULL)
+                                free (buf_malloced);
+                              CLEANUP ();
+                              errno = EILSEQ;
+                              return NULL;
+                            }
+                          arg_end++;
+                          characters += count;
+                        }
+                    }
+#  if DCHAR_IS_TCHAR
+                  else
+                    {
+                      /* Use the entire string.  */
+                      arg_end = arg + local_wcslen (arg);
+                      /* The number of bytes doesn't matter.  */
+                      characters = 0;
+                    }
+#  endif
+
+#  if !DCHAR_IS_TCHAR
+                  /* Convert the string into a piece of temporary memory.  */
+                  tmpsrc = (TCHAR_T *) malloc (characters * sizeof (TCHAR_T));
+                  if (tmpsrc == NULL)
+                    goto out_of_memory;
+                  {
+                    TCHAR_T *tmpptr = tmpsrc;
+                    size_t remaining;
+#   if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t
+                    mbstate_t state;
+                    memset (&state, '\0', sizeof (mbstate_t));
+#   endif
+                    for (remaining = characters; remaining > 0; )
+                      {
+                        char cbuf[64]; /* Assume MB_CUR_MAX <= 64.  */
+                        int count;
+
+                        if (*arg == 0)
+                          abort ();
+#   if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t
+                        count = wcrtomb (cbuf, *arg, &state);
+#   else
+                        count = wctomb (cbuf, *arg);
+#   endif
+                        if (count <= 0)
+                          /* Inconsistency.  */
+                          abort ();
+                        memcpy (tmpptr, cbuf, count);
+                        tmpptr += count;
+                        arg++;
+                        remaining -= count;
+                      }
+                    if (!(arg == arg_end))
+                      abort ();
+                  }
+
+                  /* Convert from TCHAR_T[] to DCHAR_T[].  */
+                  tmpdst =
+                    DCHAR_CONV_FROM_ENCODING (locale_charset (),
+                                              iconveh_question_mark,
+                                              tmpsrc, characters,
+                                              NULL,
+                                              NULL, &tmpdst_len);
+                  if (tmpdst == NULL)
+                    {
+                      int saved_errno = errno;
+                      free (tmpsrc);
+                      if (!(result == resultbuf || result == NULL))
+                        free (result);
+                      if (buf_malloced != NULL)
+                        free (buf_malloced);
+                      CLEANUP ();
+                      errno = saved_errno;
+                      return NULL;
+                    }
+                  free (tmpsrc);
+#  endif
+
+                  if (has_width)
+                    {
+#  if ENABLE_UNISTDIO
+                      /* Outside POSIX, it's preferable to compare the width
+                         against the number of _characters_ of the converted
+                         value.  */
+                      w = DCHAR_MBSNLEN (result + length, characters);
+#  else
+                      /* The width is compared against the number of _bytes_
+                         of the converted value, says POSIX.  */
+                      w = characters;
+#  endif
+                    }
+                  else
+                    /* w doesn't matter.  */
+                    w = 0;
+
+                  if (w < width && !(dp->flags & FLAG_LEFT))
+                    {
+                      size_t n = width - w;
+                      ENSURE_ALLOCATION (xsum (length, n));
+                      DCHAR_SET (result + length, ' ', n);
+                      length += n;
+                    }
+
+#  if DCHAR_IS_TCHAR
+                  if (has_precision || has_width)
+                    {
+                      /* We know the number of bytes in advance.  */
+                      size_t remaining;
+#   if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t
+                      mbstate_t state;
+                      memset (&state, '\0', sizeof (mbstate_t));
+#   endif
+                      ENSURE_ALLOCATION (xsum (length, characters));
+                      for (remaining = characters; remaining > 0; )
+                        {
+                          char cbuf[64]; /* Assume MB_CUR_MAX <= 64.  */
+                          int count;
+
+                          if (*arg == 0)
+                            abort ();
+#   if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t
+                          count = wcrtomb (cbuf, *arg, &state);
+#   else
+                          count = wctomb (cbuf, *arg);
+#   endif
+                          if (count <= 0)
+                            /* Inconsistency.  */
+                            abort ();
+                          memcpy (result + length, cbuf, count);
+                          length += count;
+                          arg++;
+                          remaining -= count;
+                        }
+                      if (!(arg == arg_end))
+                        abort ();
+                    }
+                  else
+                    {
+#   if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t
+                      mbstate_t state;
+                      memset (&state, '\0', sizeof (mbstate_t));
+#   endif
+                      while (arg < arg_end)
+                        {
+                          char cbuf[64]; /* Assume MB_CUR_MAX <= 64.  */
+                          int count;
+
+                          if (*arg == 0)
+                            abort ();
+#   if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t
+                          count = wcrtomb (cbuf, *arg, &state);
+#   else
+                          count = wctomb (cbuf, *arg);
+#   endif
+                          if (count <= 0)
+                            {
+                              /* Cannot convert.  */
+                              if (!(result == resultbuf || result == NULL))
+                                free (result);
+                              if (buf_malloced != NULL)
+                                free (buf_malloced);
+                              CLEANUP ();
+                              errno = EILSEQ;
+                              return NULL;
+                            }
+                          ENSURE_ALLOCATION (xsum (length, count));
+                          memcpy (result + length, cbuf, count);
+                          length += count;
+                          arg++;
+                        }
+                    }
+#  else
+                  ENSURE_ALLOCATION (xsum (length, tmpdst_len));
+                  DCHAR_CPY (result + length, tmpdst, tmpdst_len);
+                  free (tmpdst);
+                  length += tmpdst_len;
+#  endif
+
+                  if (w < width && (dp->flags & FLAG_LEFT))
+                    {
+                      size_t n = width - w;
+                      ENSURE_ALLOCATION (xsum (length, n));
+                      DCHAR_SET (result + length, ' ', n);
+                      length += n;
+                    }
+                }
+# endif
+              }
+#endif
+#if (NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_DOUBLE) && !defined IN_LIBINTL
+            else if ((dp->conversion == 'a' || dp->conversion == 'A')
+# if !(NEED_PRINTF_DIRECTIVE_A || (NEED_PRINTF_LONG_DOUBLE && NEED_PRINTF_DOUBLE))
+                     && (0
+#  if NEED_PRINTF_DOUBLE
+                         || a.arg[dp->arg_index].type == TYPE_DOUBLE
+#  endif
+#  if NEED_PRINTF_LONG_DOUBLE
+                         || a.arg[dp->arg_index].type == TYPE_LONGDOUBLE
+#  endif
+                        )
+# endif
+                    )
+              {
+                arg_type type = a.arg[dp->arg_index].type;
+                int flags = dp->flags;
+                size_t width;
+                int has_precision;
+                size_t precision;
+                size_t tmp_length;
+                size_t count;
+                DCHAR_T tmpbuf[700];
+                DCHAR_T *tmp;
+                DCHAR_T *pad_ptr;
+                DCHAR_T *p;
+
+                width = 0;
+                if (dp->width_start != dp->width_end)
+                  {
+                    if (dp->width_arg_index != ARG_NONE)
+                      {
+                        int arg;
+
+                        if (!(a.arg[dp->width_arg_index].type == TYPE_INT))
+                          abort ();
+                        arg = a.arg[dp->width_arg_index].a.a_int;
+                        width = arg;
+                        if (arg < 0)
+                          {
+                            /* "A negative field width is taken as a '-' flag
+                                followed by a positive field width."  */
+                            flags |= FLAG_LEFT;
+                            width = -width;
+                          }
+                      }
+                    else
+                      {
+                        const FCHAR_T *digitp = dp->width_start;
+
+                        do
+                          width = xsum (xtimes (width, 10), *digitp++ - '0');
+                        while (digitp != dp->width_end);
+                      }
+                  }
+
+                has_precision = 0;
+                precision = 0;
+                if (dp->precision_start != dp->precision_end)
+                  {
+                    if (dp->precision_arg_index != ARG_NONE)
+                      {
+                        int arg;
+
+                        if (!(a.arg[dp->precision_arg_index].type == TYPE_INT))
+                          abort ();
+                        arg = a.arg[dp->precision_arg_index].a.a_int;
+                        /* "A negative precision is taken as if the precision
+                            were omitted."  */
+                        if (arg >= 0)
+                          {
+                            precision = arg;
+                            has_precision = 1;
+                          }
+                      }
+                    else
+                      {
+                        const FCHAR_T *digitp = dp->precision_start + 1;
+
+                        precision = 0;
+                        while (digitp != dp->precision_end)
+                          precision = xsum (xtimes (precision, 10), *digitp++ - '0');
+                        has_precision = 1;
+                      }
+                  }
+
+                /* Allocate a temporary buffer of sufficient size.  */
+                if (type == TYPE_LONGDOUBLE)
+                  tmp_length =
+                    (unsigned int) ((LDBL_DIG + 1)
+                                    * 0.831 /* decimal -> hexadecimal */
+                                   )
+                    + 1; /* turn floor into ceil */
+                else
+                  tmp_length =
+                    (unsigned int) ((DBL_DIG + 1)
+                                    * 0.831 /* decimal -> hexadecimal */
+                                   )
+                    + 1; /* turn floor into ceil */
+                if (tmp_length < precision)
+                  tmp_length = precision;
+                /* Account for sign, decimal point etc. */
+                tmp_length = xsum (tmp_length, 12);
+
+                if (tmp_length < width)
+                  tmp_length = width;
+
+                tmp_length = xsum (tmp_length, 1); /* account for trailing NUL */
+
+                if (tmp_length <= sizeof (tmpbuf) / sizeof (DCHAR_T))
+                  tmp = tmpbuf;
+                else
+                  {
+                    size_t tmp_memsize = xtimes (tmp_length, sizeof (DCHAR_T));
+
+                    if (size_overflow_p (tmp_memsize))
+                      /* Overflow, would lead to out of memory.  */
+                      goto out_of_memory;
+                    tmp = (DCHAR_T *) malloc (tmp_memsize);
+                    if (tmp == NULL)
+                      /* Out of memory.  */
+                      goto out_of_memory;
+                  }
+
+                pad_ptr = NULL;
+                p = tmp;
+                if (type == TYPE_LONGDOUBLE)
+                  {
+# if NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_LONG_DOUBLE
+                    long double arg = a.arg[dp->arg_index].a.a_longdouble;
+
+                    if (isnanl (arg))
+                      {
+                        if (dp->conversion == 'A')
+                          {
+                            *p++ = 'N'; *p++ = 'A'; *p++ = 'N';
+                          }
+                        else
+                          {
+                            *p++ = 'n'; *p++ = 'a'; *p++ = 'n';
+                          }
+                      }
+                    else
+                      {
+                        int sign = 0;
+                        DECL_LONG_DOUBLE_ROUNDING
+
+                        BEGIN_LONG_DOUBLE_ROUNDING ();
+
+                        if (signbit (arg)) /* arg < 0.0L or negative zero */
+                          {
+                            sign = -1;
+                            arg = -arg;
+                          }
+
+                        if (sign < 0)
+                          *p++ = '-';
+                        else if (flags & FLAG_SHOWSIGN)
+                          *p++ = '+';
+                        else if (flags & FLAG_SPACE)
+                          *p++ = ' ';
+
+                        if (arg > 0.0L && arg + arg == arg)
+                          {
+                            if (dp->conversion == 'A')
+                              {
+                                *p++ = 'I'; *p++ = 'N'; *p++ = 'F';
+                              }
+                            else
+                              {
+                                *p++ = 'i'; *p++ = 'n'; *p++ = 'f';
+                              }
+                          }
+                        else
+                          {
+                            int exponent;
+                            long double mantissa;
+
+                            if (arg > 0.0L)
+                              mantissa = printf_frexpl (arg, &exponent);
+                            else
+                              {
+                                exponent = 0;
+                                mantissa = 0.0L;
+                              }
+
+                            if (has_precision
+                                && precision < (unsigned int) ((LDBL_DIG + 1) * 0.831) + 1)
+                              {
+                                /* Round the mantissa.  */
+                                long double tail = mantissa;
+                                size_t q;
+
+                                for (q = precision; ; q--)
+                                  {
+                                    int digit = (int) tail;
+                                    tail -= digit;
+                                    if (q == 0)
+                                      {
+                                        if (digit & 1 ? tail >= 0.5L : tail > 0.5L)
+                                          tail = 1 - tail;
+                                        else
+                                          tail = - tail;
+                                        break;
+                                      }
+                                    tail *= 16.0L;
+                                  }
+                                if (tail != 0.0L)
+                                  for (q = precision; q > 0; q--)
+                                    tail *= 0.0625L;
+                                mantissa += tail;
+                              }
+
+                            *p++ = '0';
+                            *p++ = dp->conversion - 'A' + 'X';
+                            pad_ptr = p;
+                            {
+                              int digit;
+
+                              digit = (int) mantissa;
+                              mantissa -= digit;
+                              *p++ = '0' + digit;
+                              if ((flags & FLAG_ALT)
+                                  || mantissa > 0.0L || precision > 0)
+                                {
+                                  *p++ = decimal_point_char ();
+                                  /* This loop terminates because we assume
+                                     that FLT_RADIX is a power of 2.  */
+                                  while (mantissa > 0.0L)
+                                    {
+                                      mantissa *= 16.0L;
+                                      digit = (int) mantissa;
+                                      mantissa -= digit;
+                                      *p++ = digit
+                                             + (digit < 10
+                                                ? '0'
+                                                : dp->conversion - 10);
+                                      if (precision > 0)
+                                        precision--;
+                                    }
+                                  while (precision > 0)
+                                    {
+                                      *p++ = '0';
+                                      precision--;
+                                    }
+                                }
+                              }
+                              *p++ = dp->conversion - 'A' + 'P';
+#  if WIDE_CHAR_VERSION
+                              {
+                                static const wchar_t decimal_format[] =
+                                  { '%', '+', 'd', '\0' };
+                                SNPRINTF (p, 6 + 1, decimal_format, exponent);
+                              }
+                              while (*p != '\0')
+                                p++;
+#  else
+                              if (sizeof (DCHAR_T) == 1)
+                                {
+                                  sprintf ((char *) p, "%+d", exponent);
+                                  while (*p != '\0')
+                                    p++;
+                                }
+                              else
+                                {
+                                  char expbuf[6 + 1];
+                                  const char *ep;
+                                  sprintf (expbuf, "%+d", exponent);
+                                  for (ep = expbuf; (*p = *ep) != '\0'; ep++)
+                                    p++;
+                                }
+#  endif
+                          }
+
+                        END_LONG_DOUBLE_ROUNDING ();
+                      }
+# else
+                    abort ();
+# endif
+                  }
+                else
+                  {
+# if NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_DOUBLE
+                    double arg = a.arg[dp->arg_index].a.a_double;
+
+                    if (isnand (arg))
+                      {
+                        if (dp->conversion == 'A')
+                          {
+                            *p++ = 'N'; *p++ = 'A'; *p++ = 'N';
+                          }
+                        else
+                          {
+                            *p++ = 'n'; *p++ = 'a'; *p++ = 'n';
+                          }
+                      }
+                    else
+                      {
+                        int sign = 0;
+
+                        if (signbit (arg)) /* arg < 0.0 or negative zero */
+                          {
+                            sign = -1;
+                            arg = -arg;
+                          }
+
+                        if (sign < 0)
+                          *p++ = '-';
+                        else if (flags & FLAG_SHOWSIGN)
+                          *p++ = '+';
+                        else if (flags & FLAG_SPACE)
+                          *p++ = ' ';
+
+                        if (arg > 0.0 && arg + arg == arg)
+                          {
+                            if (dp->conversion == 'A')
+                              {
+                                *p++ = 'I'; *p++ = 'N'; *p++ = 'F';
+                              }
+                            else
+                              {
+                                *p++ = 'i'; *p++ = 'n'; *p++ = 'f';
+                              }
+                          }
+                        else
+                          {
+                            int exponent;
+                            double mantissa;
+
+                            if (arg > 0.0)
+                              mantissa = printf_frexp (arg, &exponent);
+                            else
+                              {
+                                exponent = 0;
+                                mantissa = 0.0;
+                              }
+
+                            if (has_precision
+                                && precision < (unsigned int) ((DBL_DIG + 1) * 0.831) + 1)
+                              {
+                                /* Round the mantissa.  */
+                                double tail = mantissa;
+                                size_t q;
+
+                                for (q = precision; ; q--)
+                                  {
+                                    int digit = (int) tail;
+                                    tail -= digit;
+                                    if (q == 0)
+                                      {
+                                        if (digit & 1 ? tail >= 0.5 : tail > 0.5)
+                                          tail = 1 - tail;
+                                        else
+                                          tail = - tail;
+                                        break;
+                                      }
+                                    tail *= 16.0;
+                                  }
+                                if (tail != 0.0)
+                                  for (q = precision; q > 0; q--)
+                                    tail *= 0.0625;
+                                mantissa += tail;
+                              }
+
+                            *p++ = '0';
+                            *p++ = dp->conversion - 'A' + 'X';
+                            pad_ptr = p;
+                            {
+                              int digit;
+
+                              digit = (int) mantissa;
+                              mantissa -= digit;
+                              *p++ = '0' + digit;
+                              if ((flags & FLAG_ALT)
+                                  || mantissa > 0.0 || precision > 0)
+                                {
+                                  *p++ = decimal_point_char ();
+                                  /* This loop terminates because we assume
+                                     that FLT_RADIX is a power of 2.  */
+                                  while (mantissa > 0.0)
+                                    {
+                                      mantissa *= 16.0;
+                                      digit = (int) mantissa;
+                                      mantissa -= digit;
+                                      *p++ = digit
+                                             + (digit < 10
+                                                ? '0'
+                                                : dp->conversion - 10);
+                                      if (precision > 0)
+                                        precision--;
+                                    }
+                                  while (precision > 0)
+                                    {
+                                      *p++ = '0';
+                                      precision--;
+                                    }
+                                }
+                              }
+                              *p++ = dp->conversion - 'A' + 'P';
+#  if WIDE_CHAR_VERSION
+                              {
+                                static const wchar_t decimal_format[] =
+                                  { '%', '+', 'd', '\0' };
+                                SNPRINTF (p, 6 + 1, decimal_format, exponent);
+                              }
+                              while (*p != '\0')
+                                p++;
+#  else
+                              if (sizeof (DCHAR_T) == 1)
+                                {
+                                  sprintf ((char *) p, "%+d", exponent);
+                                  while (*p != '\0')
+                                    p++;
+                                }
+                              else
+                                {
+                                  char expbuf[6 + 1];
+                                  const char *ep;
+                                  sprintf (expbuf, "%+d", exponent);
+                                  for (ep = expbuf; (*p = *ep) != '\0'; ep++)
+                                    p++;
+                                }
+#  endif
+                          }
+                      }
+# else
+                    abort ();
+# endif
+                  }
+
+                /* The generated string now extends from tmp to p, with the
+                   zero padding insertion point being at pad_ptr.  */
+                count = p - tmp;
+
+                if (count < width)
+                  {
+                    size_t pad = width - count;
+                    DCHAR_T *end = p + pad;
+
+                    if (flags & FLAG_LEFT)
+                      {
+                        /* Pad with spaces on the right.  */
+                        for (; pad > 0; pad--)
+                          *p++ = ' ';
+                      }
+                    else if ((flags & FLAG_ZERO) && pad_ptr != NULL)
+                      {
+                        /* Pad with zeroes.  */
+                        DCHAR_T *q = end;
+
+                        while (p > pad_ptr)
+                          *--q = *--p;
+                        for (; pad > 0; pad--)
+                          *p++ = '0';
+                      }
+                    else
+                      {
+                        /* Pad with spaces on the left.  */
+                        DCHAR_T *q = end;
+
+                        while (p > tmp)
+                          *--q = *--p;
+                        for (; pad > 0; pad--)
+                          *p++ = ' ';
+                      }
+
+                    p = end;
+                  }
+
+                count = p - tmp;
+
+                if (count >= tmp_length)
+                  /* tmp_length was incorrectly calculated - fix the
+                     code above!  */
+                  abort ();
+
+                /* Make room for the result.  */
+                if (count >= allocated - length)
+                  {
+                    size_t n = xsum (length, count);
+
+                    ENSURE_ALLOCATION (n);
+                  }
+
+                /* Append the result.  */
+                memcpy (result + length, tmp, count * sizeof (DCHAR_T));
+                if (tmp != tmpbuf)
+                  free (tmp);
+                length += count;
+              }
+#endif
+#if (NEED_PRINTF_INFINITE_DOUBLE || NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_LONG_DOUBLE || NEED_PRINTF_LONG_DOUBLE) && !defined IN_LIBINTL
+            else if ((dp->conversion == 'f' || dp->conversion == 'F'
+                      || dp->conversion == 'e' || dp->conversion == 'E'
+                      || dp->conversion == 'g' || dp->conversion == 'G'
+                      || dp->conversion == 'a' || dp->conversion == 'A')
+                     && (0
+# if NEED_PRINTF_DOUBLE
+                         || a.arg[dp->arg_index].type == TYPE_DOUBLE
+# elif NEED_PRINTF_INFINITE_DOUBLE
+                         || (a.arg[dp->arg_index].type == TYPE_DOUBLE
+                             /* The systems (mingw) which produce wrong output
+                                for Inf, -Inf, and NaN also do so for -0.0.
+                                Therefore we treat this case here as well.  */
+                             && is_infinite_or_zero (a.arg[dp->arg_index].a.a_double))
+# endif
+# if NEED_PRINTF_LONG_DOUBLE
+                         || a.arg[dp->arg_index].type == TYPE_LONGDOUBLE
+# elif NEED_PRINTF_INFINITE_LONG_DOUBLE
+                         || (a.arg[dp->arg_index].type == TYPE_LONGDOUBLE
+                             /* Some systems produce wrong output for Inf,
+                                -Inf, and NaN.  Some systems in this category
+                                (IRIX 5.3) also do so for -0.0.  Therefore we
+                                treat this case here as well.  */
+                             && is_infinite_or_zerol (a.arg[dp->arg_index].a.a_longdouble))
+# endif
+                        ))
+              {
+# if (NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE) && (NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_INFINITE_LONG_DOUBLE)
+                arg_type type = a.arg[dp->arg_index].type;
+# endif
+                int flags = dp->flags;
+                size_t width;
+                size_t count;
+                int has_precision;
+                size_t precision;
+                size_t tmp_length;
+                DCHAR_T tmpbuf[700];
+                DCHAR_T *tmp;
+                DCHAR_T *pad_ptr;
+                DCHAR_T *p;
+
+                width = 0;
+                if (dp->width_start != dp->width_end)
+                  {
+                    if (dp->width_arg_index != ARG_NONE)
+                      {
+                        int arg;
+
+                        if (!(a.arg[dp->width_arg_index].type == TYPE_INT))
+                          abort ();
+                        arg = a.arg[dp->width_arg_index].a.a_int;
+                        width = arg;
+                        if (arg < 0)
+                          {
+                            /* "A negative field width is taken as a '-' flag
+                                followed by a positive field width."  */
+                            flags |= FLAG_LEFT;
+                            width = -width;
+                          }
+                      }
+                    else
+                      {
+                        const FCHAR_T *digitp = dp->width_start;
+
+                        do
+                          width = xsum (xtimes (width, 10), *digitp++ - '0');
+                        while (digitp != dp->width_end);
+                      }
+                  }
+
+                has_precision = 0;
+                precision = 0;
+                if (dp->precision_start != dp->precision_end)
+                  {
+                    if (dp->precision_arg_index != ARG_NONE)
+                      {
+                        int arg;
+
+                        if (!(a.arg[dp->precision_arg_index].type == TYPE_INT))
+                          abort ();
+                        arg = a.arg[dp->precision_arg_index].a.a_int;
+                        /* "A negative precision is taken as if the precision
+                            were omitted."  */
+                        if (arg >= 0)
+                          {
+                            precision = arg;
+                            has_precision = 1;
+                          }
+                      }
+                    else
+                      {
+                        const FCHAR_T *digitp = dp->precision_start + 1;
+
+                        precision = 0;
+                        while (digitp != dp->precision_end)
+                          precision = xsum (xtimes (precision, 10), *digitp++ - '0');
+                        has_precision = 1;
+                      }
+                  }
+
+                /* POSIX specifies the default precision to be 6 for %f, %F,
+                   %e, %E, but not for %g, %G.  Implementations appear to use
+                   the same default precision also for %g, %G.  But for %a, %A,
+                   the default precision is 0.  */
+                if (!has_precision)
+                  if (!(dp->conversion == 'a' || dp->conversion == 'A'))
+                    precision = 6;
+
+                /* Allocate a temporary buffer of sufficient size.  */
+# if NEED_PRINTF_DOUBLE && NEED_PRINTF_LONG_DOUBLE
+                tmp_length = (type == TYPE_LONGDOUBLE ? LDBL_DIG + 1 : DBL_DIG + 1);
+# elif NEED_PRINTF_INFINITE_DOUBLE && NEED_PRINTF_LONG_DOUBLE
+                tmp_length = (type == TYPE_LONGDOUBLE ? LDBL_DIG + 1 : 0);
+# elif NEED_PRINTF_LONG_DOUBLE
+                tmp_length = LDBL_DIG + 1;
+# elif NEED_PRINTF_DOUBLE
+                tmp_length = DBL_DIG + 1;
+# else
+                tmp_length = 0;
+# endif
+                if (tmp_length < precision)
+                  tmp_length = precision;
+# if NEED_PRINTF_LONG_DOUBLE
+#  if NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE
+                if (type == TYPE_LONGDOUBLE)
+#  endif
+                  if (dp->conversion == 'f' || dp->conversion == 'F')
+                    {
+                      long double arg = a.arg[dp->arg_index].a.a_longdouble;
+                      if (!(isnanl (arg) || arg + arg == arg))
+                        {
+                          /* arg is finite and nonzero.  */
+                          int exponent = floorlog10l (arg < 0 ? -arg : arg);
+                          if (exponent >= 0 && tmp_length < exponent + precision)
+                            tmp_length = exponent + precision;
+                        }
+                    }
+# endif
+# if NEED_PRINTF_DOUBLE
+#  if NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_INFINITE_LONG_DOUBLE
+                if (type == TYPE_DOUBLE)
+#  endif
+                  if (dp->conversion == 'f' || dp->conversion == 'F')
+                    {
+                      double arg = a.arg[dp->arg_index].a.a_double;
+                      if (!(isnand (arg) || arg + arg == arg))
+                        {
+                          /* arg is finite and nonzero.  */
+                          int exponent = floorlog10 (arg < 0 ? -arg : arg);
+                          if (exponent >= 0 && tmp_length < exponent + precision)
+                            tmp_length = exponent + precision;
+                        }
+                    }
+# endif
+                /* Account for sign, decimal point etc. */
+                tmp_length = xsum (tmp_length, 12);
+
+                if (tmp_length < width)
+                  tmp_length = width;
+
+                tmp_length = xsum (tmp_length, 1); /* account for trailing NUL */
+
+                if (tmp_length <= sizeof (tmpbuf) / sizeof (DCHAR_T))
+                  tmp = tmpbuf;
+                else
+                  {
+                    size_t tmp_memsize = xtimes (tmp_length, sizeof (DCHAR_T));
+
+                    if (size_overflow_p (tmp_memsize))
+                      /* Overflow, would lead to out of memory.  */
+                      goto out_of_memory;
+                    tmp = (DCHAR_T *) malloc (tmp_memsize);
+                    if (tmp == NULL)
+                      /* Out of memory.  */
+                      goto out_of_memory;
+                  }
+
+                pad_ptr = NULL;
+                p = tmp;
+
+# if NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_INFINITE_LONG_DOUBLE
+#  if NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE
+                if (type == TYPE_LONGDOUBLE)
+#  endif
+                  {
+                    long double arg = a.arg[dp->arg_index].a.a_longdouble;
+
+                    if (isnanl (arg))
+                      {
+                        if (dp->conversion >= 'A' && dp->conversion <= 'Z')
+                          {
+                            *p++ = 'N'; *p++ = 'A'; *p++ = 'N';
+                          }
+                        else
+                          {
+                            *p++ = 'n'; *p++ = 'a'; *p++ = 'n';
+                          }
+                      }
+                    else
+                      {
+                        int sign = 0;
+                        DECL_LONG_DOUBLE_ROUNDING
+
+                        BEGIN_LONG_DOUBLE_ROUNDING ();
+
+                        if (signbit (arg)) /* arg < 0.0L or negative zero */
+                          {
+                            sign = -1;
+                            arg = -arg;
+                          }
+
+                        if (sign < 0)
+                          *p++ = '-';
+                        else if (flags & FLAG_SHOWSIGN)
+                          *p++ = '+';
+                        else if (flags & FLAG_SPACE)
+                          *p++ = ' ';
+
+                        if (arg > 0.0L && arg + arg == arg)
+                          {
+                            if (dp->conversion >= 'A' && dp->conversion <= 'Z')
+                              {
+                                *p++ = 'I'; *p++ = 'N'; *p++ = 'F';
+                              }
+                            else
+                              {
+                                *p++ = 'i'; *p++ = 'n'; *p++ = 'f';
+                              }
+                          }
+                        else
+                          {
+#  if NEED_PRINTF_LONG_DOUBLE
+                            pad_ptr = p;
+
+                            if (dp->conversion == 'f' || dp->conversion == 'F')
+                              {
+                                char *digits;
+                                size_t ndigits;
+
+                                digits =
+                                  scale10_round_decimal_long_double (arg, precision);
+                                if (digits == NULL)
+                                  {
+                                    END_LONG_DOUBLE_ROUNDING ();
+                                    goto out_of_memory;
+                                  }
+                                ndigits = strlen (digits);
+
+                                if (ndigits > precision)
+                                  do
+                                    {
+                                      --ndigits;
+                                      *p++ = digits[ndigits];
+                                    }
+                                  while (ndigits > precision);
+                                else
+                                  *p++ = '0';
+                                /* Here ndigits <= precision.  */
+                                if ((flags & FLAG_ALT) || precision > 0)
+                                  {
+                                    *p++ = decimal_point_char ();
+                                    for (; precision > ndigits; precision--)
+                                      *p++ = '0';
+                                    while (ndigits > 0)
+                                      {
+                                        --ndigits;
+                                        *p++ = digits[ndigits];
+                                      }
+                                  }
+
+                                free (digits);
+                              }
+                            else if (dp->conversion == 'e' || dp->conversion == 'E')
+                              {
+                                int exponent;
+
+                                if (arg == 0.0L)
+                                  {
+                                    exponent = 0;
+                                    *p++ = '0';
+                                    if ((flags & FLAG_ALT) || precision > 0)
+                                      {
+                                        *p++ = decimal_point_char ();
+                                        for (; precision > 0; precision--)
+                                          *p++ = '0';
+                                      }
+                                  }
+                                else
+                                  {
+                                    /* arg > 0.0L.  */
+                                    int adjusted;
+                                    char *digits;
+                                    size_t ndigits;
+
+                                    exponent = floorlog10l (arg);
+                                    adjusted = 0;
+                                    for (;;)
+                                      {
+                                        digits =
+                                          scale10_round_decimal_long_double (arg,
+                                                                             (int)precision - exponent);
+                                        if (digits == NULL)
+                                          {
+                                            END_LONG_DOUBLE_ROUNDING ();
+                                            goto out_of_memory;
+                                          }
+                                        ndigits = strlen (digits);
+
+                                        if (ndigits == precision + 1)
+                                          break;
+                                        if (ndigits < precision
+                                            || ndigits > precision + 2)
+                                          /* The exponent was not guessed
+                                             precisely enough.  */
+                                          abort ();
+                                        if (adjusted)
+                                          /* None of two values of exponent is
+                                             the right one.  Prevent an endless
+                                             loop.  */
+                                          abort ();
+                                        free (digits);
+                                        if (ndigits == precision)
+                                          exponent -= 1;
+                                        else
+                                          exponent += 1;
+                                        adjusted = 1;
+                                      }
+                                    /* Here ndigits = precision+1.  */
+                                    if (is_borderline (digits, precision))
+                                      {
+                                        /* Maybe the exponent guess was too high
+                                           and a smaller exponent can be reached
+                                           by turning a 10...0 into 9...9x.  */
+                                        char *digits2 =
+                                          scale10_round_decimal_long_double (arg,
+                                                                             (int)precision - exponent + 1);
+                                        if (digits2 == NULL)
+                                          {
+                                            free (digits);
+                                            END_LONG_DOUBLE_ROUNDING ();
+                                            goto out_of_memory;
+                                          }
+                                        if (strlen (digits2) == precision + 1)
+                                          {
+                                            free (digits);
+                                            digits = digits2;
+                                            exponent -= 1;
+                                          }
+                                        else
+                                          free (digits2);
+                                      }
+                                    /* Here ndigits = precision+1.  */
+
+                                    *p++ = digits[--ndigits];
+                                    if ((flags & FLAG_ALT) || precision > 0)
+                                      {
+                                        *p++ = decimal_point_char ();
+                                        while (ndigits > 0)
+                                          {
+                                            --ndigits;
+                                            *p++ = digits[ndigits];
+                                          }
+                                      }
+
+                                    free (digits);
+                                  }
+
+                                *p++ = dp->conversion; /* 'e' or 'E' */
+#   if WIDE_CHAR_VERSION
+                                {
+                                  static const wchar_t decimal_format[] =
+                                    { '%', '+', '.', '2', 'd', '\0' };
+                                  SNPRINTF (p, 6 + 1, decimal_format, exponent);
+                                }
+                                while (*p != '\0')
+                                  p++;
+#   else
+                                if (sizeof (DCHAR_T) == 1)
+                                  {
+                                    sprintf ((char *) p, "%+.2d", exponent);
+                                    while (*p != '\0')
+                                      p++;
+                                  }
+                                else
+                                  {
+                                    char expbuf[6 + 1];
+                                    const char *ep;
+                                    sprintf (expbuf, "%+.2d", exponent);
+                                    for (ep = expbuf; (*p = *ep) != '\0'; ep++)
+                                      p++;
+                                  }
+#   endif
+                              }
+                            else if (dp->conversion == 'g' || dp->conversion == 'G')
+                              {
+                                if (precision == 0)
+                                  precision = 1;
+                                /* precision >= 1.  */
+
+                                if (arg == 0.0L)
+                                  /* The exponent is 0, >= -4, < precision.
+                                     Use fixed-point notation.  */
+                                  {
+                                    size_t ndigits = precision;
+                                    /* Number of trailing zeroes that have to be
+                                       dropped.  */
+                                    size_t nzeroes =
+                                      (flags & FLAG_ALT ? 0 : precision - 1);
+
+                                    --ndigits;
+                                    *p++ = '0';
+                                    if ((flags & FLAG_ALT) || ndigits > nzeroes)
+                                      {
+                                        *p++ = decimal_point_char ();
+                                        while (ndigits > nzeroes)
+                                          {
+                                            --ndigits;
+                                            *p++ = '0';
+                                          }
+                                      }
+                                  }
+                                else
+                                  {
+                                    /* arg > 0.0L.  */
+                                    int exponent;
+                                    int adjusted;
+                                    char *digits;
+                                    size_t ndigits;
+                                    size_t nzeroes;
+
+                                    exponent = floorlog10l (arg);
+                                    adjusted = 0;
+                                    for (;;)
+                                      {
+                                        digits =
+                                          scale10_round_decimal_long_double (arg,
+                                                                             (int)(precision - 1) - exponent);
+                                        if (digits == NULL)
+                                          {
+                                            END_LONG_DOUBLE_ROUNDING ();
+                                            goto out_of_memory;
+                                          }
+                                        ndigits = strlen (digits);
+
+                                        if (ndigits == precision)
+                                          break;
+                                        if (ndigits < precision - 1
+                                            || ndigits > precision + 1)
+                                          /* The exponent was not guessed
+                                             precisely enough.  */
+                                          abort ();
+                                        if (adjusted)
+                                          /* None of two values of exponent is
+                                             the right one.  Prevent an endless
+                                             loop.  */
+                                          abort ();
+                                        free (digits);
+                                        if (ndigits < precision)
+                                          exponent -= 1;
+                                        else
+                                          exponent += 1;
+                                        adjusted = 1;
+                                      }
+                                    /* Here ndigits = precision.  */
+                                    if (is_borderline (digits, precision - 1))
+                                      {
+                                        /* Maybe the exponent guess was too high
+                                           and a smaller exponent can be reached
+                                           by turning a 10...0 into 9...9x.  */
+                                        char *digits2 =
+                                          scale10_round_decimal_long_double (arg,
+                                                                             (int)(precision - 1) - exponent + 1);
+                                        if (digits2 == NULL)
+                                          {
+                                            free (digits);
+                                            END_LONG_DOUBLE_ROUNDING ();
+                                            goto out_of_memory;
+                                          }
+                                        if (strlen (digits2) == precision)
+                                          {
+                                            free (digits);
+                                            digits = digits2;
+                                            exponent -= 1;
+                                          }
+                                        else
+                                          free (digits2);
+                                      }
+                                    /* Here ndigits = precision.  */
+
+                                    /* Determine the number of trailing zeroes
+                                       that have to be dropped.  */
+                                    nzeroes = 0;
+                                    if ((flags & FLAG_ALT) == 0)
+                                      while (nzeroes < ndigits
+                                             && digits[nzeroes] == '0')
+                                        nzeroes++;
+
+                                    /* The exponent is now determined.  */
+                                    if (exponent >= -4
+                                        && exponent < (long)precision)
+                                      {
+                                        /* Fixed-point notation:
+                                           max(exponent,0)+1 digits, then the
+                                           decimal point, then the remaining
+                                           digits without trailing zeroes.  */
+                                        if (exponent >= 0)
+                                          {
+                                            size_t ecount = exponent + 1;
+                                            /* Note: count <= precision = ndigits.  */
+                                            for (; ecount > 0; ecount--)
+                                              *p++ = digits[--ndigits];
+                                            if ((flags & FLAG_ALT) || ndigits > nzeroes)
+                                              {
+                                                *p++ = decimal_point_char ();
+                                                while (ndigits > nzeroes)
+                                                  {
+                                                    --ndigits;
+                                                    *p++ = digits[ndigits];
+                                                  }
+                                              }
+                                          }
+                                        else
+                                          {
+                                            size_t ecount = -exponent - 1;
+                                            *p++ = '0';
+                                            *p++ = decimal_point_char ();
+                                            for (; ecount > 0; ecount--)
+                                              *p++ = '0';
+                                            while (ndigits > nzeroes)
+                                              {
+                                                --ndigits;
+                                                *p++ = digits[ndigits];
+                                              }
+                                          }
+                                      }
+                                    else
+                                      {
+                                        /* Exponential notation.  */
+                                        *p++ = digits[--ndigits];
+                                        if ((flags & FLAG_ALT) || ndigits > nzeroes)
+                                          {
+                                            *p++ = decimal_point_char ();
+                                            while (ndigits > nzeroes)
+                                              {
+                                                --ndigits;
+                                                *p++ = digits[ndigits];
+                                              }
+                                          }
+                                        *p++ = dp->conversion - 'G' + 'E'; /* 'e' or 'E' */
+#   if WIDE_CHAR_VERSION
+                                        {
+                                          static const wchar_t decimal_format[] =
+                                            { '%', '+', '.', '2', 'd', '\0' };
+                                          SNPRINTF (p, 6 + 1, decimal_format, exponent);
+                                        }
+                                        while (*p != '\0')
+                                          p++;
+#   else
+                                        if (sizeof (DCHAR_T) == 1)
+                                          {
+                                            sprintf ((char *) p, "%+.2d", exponent);
+                                            while (*p != '\0')
+                                              p++;
+                                          }
+                                        else
+                                          {
+                                            char expbuf[6 + 1];
+                                            const char *ep;
+                                            sprintf (expbuf, "%+.2d", exponent);
+                                            for (ep = expbuf; (*p = *ep) != '\0'; ep++)
+                                              p++;
+                                          }
+#   endif
+                                      }
+
+                                    free (digits);
+                                  }
+                              }
+                            else
+                              abort ();
+#  else
+                            /* arg is finite.  */
+                            if (!(arg == 0.0L))
+                              abort ();
+
+                            pad_ptr = p;
+
+                            if (dp->conversion == 'f' || dp->conversion == 'F')
+                              {
+                                *p++ = '0';
+                                if ((flags & FLAG_ALT) || precision > 0)
+                                  {
+                                    *p++ = decimal_point_char ();
+                                    for (; precision > 0; precision--)
+                                      *p++ = '0';
+                                  }
+                              }
+                            else if (dp->conversion == 'e' || dp->conversion == 'E')
+                              {
+                                *p++ = '0';
+                                if ((flags & FLAG_ALT) || precision > 0)
+                                  {
+                                    *p++ = decimal_point_char ();
+                                    for (; precision > 0; precision--)
+                                      *p++ = '0';
+                                  }
+                                *p++ = dp->conversion; /* 'e' or 'E' */
+                                *p++ = '+';
+                                *p++ = '0';
+                                *p++ = '0';
+                              }
+                            else if (dp->conversion == 'g' || dp->conversion == 'G')
+                              {
+                                *p++ = '0';
+                                if (flags & FLAG_ALT)
+                                  {
+                                    size_t ndigits =
+                                      (precision > 0 ? precision - 1 : 0);
+                                    *p++ = decimal_point_char ();
+                                    for (; ndigits > 0; --ndigits)
+                                      *p++ = '0';
+                                  }
+                              }
+                            else if (dp->conversion == 'a' || dp->conversion == 'A')
+                              {
+                                *p++ = '0';
+                                *p++ = dp->conversion - 'A' + 'X';
+                                pad_ptr = p;
+                                *p++ = '0';
+                                if ((flags & FLAG_ALT) || precision > 0)
+                                  {
+                                    *p++ = decimal_point_char ();
+                                    for (; precision > 0; precision--)
+                                      *p++ = '0';
+                                  }
+                                *p++ = dp->conversion - 'A' + 'P';
+                                *p++ = '+';
+                                *p++ = '0';
+                              }
+                            else
+                              abort ();
+#  endif
+                          }
+
+                        END_LONG_DOUBLE_ROUNDING ();
+                      }
+                  }
+#  if NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE
+                else
+#  endif
+# endif
+# if NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE
+                  {
+                    double arg = a.arg[dp->arg_index].a.a_double;
+
+                    if (isnand (arg))
+                      {
+                        if (dp->conversion >= 'A' && dp->conversion <= 'Z')
+                          {
+                            *p++ = 'N'; *p++ = 'A'; *p++ = 'N';
+                          }
+                        else
+                          {
+                            *p++ = 'n'; *p++ = 'a'; *p++ = 'n';
+                          }
+                      }
+                    else
+                      {
+                        int sign = 0;
+
+                        if (signbit (arg)) /* arg < 0.0 or negative zero */
+                          {
+                            sign = -1;
+                            arg = -arg;
+                          }
+
+                        if (sign < 0)
+                          *p++ = '-';
+                        else if (flags & FLAG_SHOWSIGN)
+                          *p++ = '+';
+                        else if (flags & FLAG_SPACE)
+                          *p++ = ' ';
+
+                        if (arg > 0.0 && arg + arg == arg)
+                          {
+                            if (dp->conversion >= 'A' && dp->conversion <= 'Z')
+                              {
+                                *p++ = 'I'; *p++ = 'N'; *p++ = 'F';
+                              }
+                            else
+                              {
+                                *p++ = 'i'; *p++ = 'n'; *p++ = 'f';
+                              }
+                          }
+                        else
+                          {
+#  if NEED_PRINTF_DOUBLE
+                            pad_ptr = p;
+
+                            if (dp->conversion == 'f' || dp->conversion == 'F')
+                              {
+                                char *digits;
+                                size_t ndigits;
+
+                                digits =
+                                  scale10_round_decimal_double (arg, precision);
+                                if (digits == NULL)
+                                  goto out_of_memory;
+                                ndigits = strlen (digits);
+
+                                if (ndigits > precision)
+                                  do
+                                    {
+                                      --ndigits;
+                                      *p++ = digits[ndigits];
+                                    }
+                                  while (ndigits > precision);
+                                else
+                                  *p++ = '0';
+                                /* Here ndigits <= precision.  */
+                                if ((flags & FLAG_ALT) || precision > 0)
+                                  {
+                                    *p++ = decimal_point_char ();
+                                    for (; precision > ndigits; precision--)
+                                      *p++ = '0';
+                                    while (ndigits > 0)
+                                      {
+                                        --ndigits;
+                                        *p++ = digits[ndigits];
+                                      }
+                                  }
+
+                                free (digits);
+                              }
+                            else if (dp->conversion == 'e' || dp->conversion == 'E')
+                              {
+                                int exponent;
+
+                                if (arg == 0.0)
+                                  {
+                                    exponent = 0;
+                                    *p++ = '0';
+                                    if ((flags & FLAG_ALT) || precision > 0)
+                                      {
+                                        *p++ = decimal_point_char ();
+                                        for (; precision > 0; precision--)
+                                          *p++ = '0';
+                                      }
+                                  }
+                                else
+                                  {
+                                    /* arg > 0.0.  */
+                                    int adjusted;
+                                    char *digits;
+                                    size_t ndigits;
+
+                                    exponent = floorlog10 (arg);
+                                    adjusted = 0;
+                                    for (;;)
+                                      {
+                                        digits =
+                                          scale10_round_decimal_double (arg,
+                                                                        (int)precision - exponent);
+                                        if (digits == NULL)
+                                          goto out_of_memory;
+                                        ndigits = strlen (digits);
+
+                                        if (ndigits == precision + 1)
+                                          break;
+                                        if (ndigits < precision
+                                            || ndigits > precision + 2)
+                                          /* The exponent was not guessed
+                                             precisely enough.  */
+                                          abort ();
+                                        if (adjusted)
+                                          /* None of two values of exponent is
+                                             the right one.  Prevent an endless
+                                             loop.  */
+                                          abort ();
+                                        free (digits);
+                                        if (ndigits == precision)
+                                          exponent -= 1;
+                                        else
+                                          exponent += 1;
+                                        adjusted = 1;
+                                      }
+                                    /* Here ndigits = precision+1.  */
+                                    if (is_borderline (digits, precision))
+                                      {
+                                        /* Maybe the exponent guess was too high
+                                           and a smaller exponent can be reached
+                                           by turning a 10...0 into 9...9x.  */
+                                        char *digits2 =
+                                          scale10_round_decimal_double (arg,
+                                                                        (int)precision - exponent + 1);
+                                        if (digits2 == NULL)
+                                          {
+                                            free (digits);
+                                            goto out_of_memory;
+                                          }
+                                        if (strlen (digits2) == precision + 1)
+                                          {
+                                            free (digits);
+                                            digits = digits2;
+                                            exponent -= 1;
+                                          }
+                                        else
+                                          free (digits2);
+                                      }
+                                    /* Here ndigits = precision+1.  */
+
+                                    *p++ = digits[--ndigits];
+                                    if ((flags & FLAG_ALT) || precision > 0)
+                                      {
+                                        *p++ = decimal_point_char ();
+                                        while (ndigits > 0)
+                                          {
+                                            --ndigits;
+                                            *p++ = digits[ndigits];
+                                          }
+                                      }
+
+                                    free (digits);
+                                  }
+
+                                *p++ = dp->conversion; /* 'e' or 'E' */
+#   if WIDE_CHAR_VERSION
+                                {
+                                  static const wchar_t decimal_format[] =
+                                    /* Produce the same number of exponent digits
+                                       as the native printf implementation.  */
+#    if defined _WIN32 && ! defined __CYGWIN__
+                                    { '%', '+', '.', '3', 'd', '\0' };
+#    else
+                                    { '%', '+', '.', '2', 'd', '\0' };
+#    endif
+                                  SNPRINTF (p, 6 + 1, decimal_format, exponent);
+                                }
+                                while (*p != '\0')
+                                  p++;
+#   else
+                                {
+                                  static const char decimal_format[] =
+                                    /* Produce the same number of exponent digits
+                                       as the native printf implementation.  */
+#    if defined _WIN32 && ! defined __CYGWIN__
+                                    "%+.3d";
+#    else
+                                    "%+.2d";
+#    endif
+                                  if (sizeof (DCHAR_T) == 1)
+                                    {
+                                      sprintf ((char *) p, decimal_format, exponent);
+                                      while (*p != '\0')
+                                        p++;
+                                    }
+                                  else
+                                    {
+                                      char expbuf[6 + 1];
+                                      const char *ep;
+                                      sprintf (expbuf, decimal_format, exponent);
+                                      for (ep = expbuf; (*p = *ep) != '\0'; ep++)
+                                        p++;
+                                    }
+                                }
+#   endif
+                              }
+                            else if (dp->conversion == 'g' || dp->conversion == 'G')
+                              {
+                                if (precision == 0)
+                                  precision = 1;
+                                /* precision >= 1.  */
+
+                                if (arg == 0.0)
+                                  /* The exponent is 0, >= -4, < precision.
+                                     Use fixed-point notation.  */
+                                  {
+                                    size_t ndigits = precision;
+                                    /* Number of trailing zeroes that have to be
+                                       dropped.  */
+                                    size_t nzeroes =
+                                      (flags & FLAG_ALT ? 0 : precision - 1);
+
+                                    --ndigits;
+                                    *p++ = '0';
+                                    if ((flags & FLAG_ALT) || ndigits > nzeroes)
+                                      {
+                                        *p++ = decimal_point_char ();
+                                        while (ndigits > nzeroes)
+                                          {
+                                            --ndigits;
+                                            *p++ = '0';
+                                          }
+                                      }
+                                  }
+                                else
+                                  {
+                                    /* arg > 0.0.  */
+                                    int exponent;
+                                    int adjusted;
+                                    char *digits;
+                                    size_t ndigits;
+                                    size_t nzeroes;
+
+                                    exponent = floorlog10 (arg);
+                                    adjusted = 0;
+                                    for (;;)
+                                      {
+                                        digits =
+                                          scale10_round_decimal_double (arg,
+                                                                        (int)(precision - 1) - exponent);
+                                        if (digits == NULL)
+                                          goto out_of_memory;
+                                        ndigits = strlen (digits);
+
+                                        if (ndigits == precision)
+                                          break;
+                                        if (ndigits < precision - 1
+                                            || ndigits > precision + 1)
+                                          /* The exponent was not guessed
+                                             precisely enough.  */
+                                          abort ();
+                                        if (adjusted)
+                                          /* None of two values of exponent is
+                                             the right one.  Prevent an endless
+                                             loop.  */
+                                          abort ();
+                                        free (digits);
+                                        if (ndigits < precision)
+                                          exponent -= 1;
+                                        else
+                                          exponent += 1;
+                                        adjusted = 1;
+                                      }
+                                    /* Here ndigits = precision.  */
+                                    if (is_borderline (digits, precision - 1))
+                                      {
+                                        /* Maybe the exponent guess was too high
+                                           and a smaller exponent can be reached
+                                           by turning a 10...0 into 9...9x.  */
+                                        char *digits2 =
+                                          scale10_round_decimal_double (arg,
+                                                                        (int)(precision - 1) - exponent + 1);
+                                        if (digits2 == NULL)
+                                          {
+                                            free (digits);
+                                            goto out_of_memory;
+                                          }
+                                        if (strlen (digits2) == precision)
+                                          {
+                                            free (digits);
+                                            digits = digits2;
+                                            exponent -= 1;
+                                          }
+                                        else
+                                          free (digits2);
+                                      }
+                                    /* Here ndigits = precision.  */
+
+                                    /* Determine the number of trailing zeroes
+                                       that have to be dropped.  */
+                                    nzeroes = 0;
+                                    if ((flags & FLAG_ALT) == 0)
+                                      while (nzeroes < ndigits
+                                             && digits[nzeroes] == '0')
+                                        nzeroes++;
+
+                                    /* The exponent is now determined.  */
+                                    if (exponent >= -4
+                                        && exponent < (long)precision)
+                                      {
+                                        /* Fixed-point notation:
+                                           max(exponent,0)+1 digits, then the
+                                           decimal point, then the remaining
+                                           digits without trailing zeroes.  */
+                                        if (exponent >= 0)
+                                          {
+                                            size_t ecount = exponent + 1;
+                                            /* Note: ecount <= precision = ndigits.  */
+                                            for (; ecount > 0; ecount--)
+                                              *p++ = digits[--ndigits];
+                                            if ((flags & FLAG_ALT) || ndigits > nzeroes)
+                                              {
+                                                *p++ = decimal_point_char ();
+                                                while (ndigits > nzeroes)
+                                                  {
+                                                    --ndigits;
+                                                    *p++ = digits[ndigits];
+                                                  }
+                                              }
+                                          }
+                                        else
+                                          {
+                                            size_t ecount = -exponent - 1;
+                                            *p++ = '0';
+                                            *p++ = decimal_point_char ();
+                                            for (; ecount > 0; ecount--)
+                                              *p++ = '0';
+                                            while (ndigits > nzeroes)
+                                              {
+                                                --ndigits;
+                                                *p++ = digits[ndigits];
+                                              }
+                                          }
+                                      }
+                                    else
+                                      {
+                                        /* Exponential notation.  */
+                                        *p++ = digits[--ndigits];
+                                        if ((flags & FLAG_ALT) || ndigits > nzeroes)
+                                          {
+                                            *p++ = decimal_point_char ();
+                                            while (ndigits > nzeroes)
+                                              {
+                                                --ndigits;
+                                                *p++ = digits[ndigits];
+                                              }
+                                          }
+                                        *p++ = dp->conversion - 'G' + 'E'; /* 'e' or 'E' */
+#   if WIDE_CHAR_VERSION
+                                        {
+                                          static const wchar_t decimal_format[] =
+                                            /* Produce the same number of exponent digits
+                                               as the native printf implementation.  */
+#    if defined _WIN32 && ! defined __CYGWIN__
+                                            { '%', '+', '.', '3', 'd', '\0' };
+#    else
+                                            { '%', '+', '.', '2', 'd', '\0' };
+#    endif
+                                          SNPRINTF (p, 6 + 1, decimal_format, exponent);
+                                        }
+                                        while (*p != '\0')
+                                          p++;
+#   else
+                                        {
+                                          static const char decimal_format[] =
+                                            /* Produce the same number of exponent digits
+                                               as the native printf implementation.  */
+#    if defined _WIN32 && ! defined __CYGWIN__
+                                            "%+.3d";
+#    else
+                                            "%+.2d";
+#    endif
+                                          if (sizeof (DCHAR_T) == 1)
+                                            {
+                                              sprintf ((char *) p, decimal_format, exponent);
+                                              while (*p != '\0')
+                                                p++;
+                                            }
+                                          else
+                                            {
+                                              char expbuf[6 + 1];
+                                              const char *ep;
+                                              sprintf (expbuf, decimal_format, exponent);
+                                              for (ep = expbuf; (*p = *ep) != '\0'; ep++)
+                                                p++;
+                                            }
+                                        }
+#   endif
+                                      }
+
+                                    free (digits);
+                                  }
+                              }
+                            else
+                              abort ();
+#  else
+                            /* arg is finite.  */
+                            if (!(arg == 0.0))
+                              abort ();
+
+                            pad_ptr = p;
+
+                            if (dp->conversion == 'f' || dp->conversion == 'F')
+                              {
+                                *p++ = '0';
+                                if ((flags & FLAG_ALT) || precision > 0)
+                                  {
+                                    *p++ = decimal_point_char ();
+                                    for (; precision > 0; precision--)
+                                      *p++ = '0';
+                                  }
+                              }
+                            else if (dp->conversion == 'e' || dp->conversion == 'E')
+                              {
+                                *p++ = '0';
+                                if ((flags & FLAG_ALT) || precision > 0)
+                                  {
+                                    *p++ = decimal_point_char ();
+                                    for (; precision > 0; precision--)
+                                      *p++ = '0';
+                                  }
+                                *p++ = dp->conversion; /* 'e' or 'E' */
+                                *p++ = '+';
+                                /* Produce the same number of exponent digits as
+                                   the native printf implementation.  */
+#   if defined _WIN32 && ! defined __CYGWIN__
+                                *p++ = '0';
+#   endif
+                                *p++ = '0';
+                                *p++ = '0';
+                              }
+                            else if (dp->conversion == 'g' || dp->conversion == 'G')
+                              {
+                                *p++ = '0';
+                                if (flags & FLAG_ALT)
+                                  {
+                                    size_t ndigits =
+                                      (precision > 0 ? precision - 1 : 0);
+                                    *p++ = decimal_point_char ();
+                                    for (; ndigits > 0; --ndigits)
+                                      *p++ = '0';
+                                  }
+                              }
+                            else
+                              abort ();
+#  endif
+                          }
+                      }
+                  }
+# endif
+
+                /* The generated string now extends from tmp to p, with the
+                   zero padding insertion point being at pad_ptr.  */
+                count = p - tmp;
+
+                if (count < width)
+                  {
+                    size_t pad = width - count;
+                    DCHAR_T *end = p + pad;
+
+                    if (flags & FLAG_LEFT)
+                      {
+                        /* Pad with spaces on the right.  */
+                        for (; pad > 0; pad--)
+                          *p++ = ' ';
+                      }
+                    else if ((flags & FLAG_ZERO) && pad_ptr != NULL)
+                      {
+                        /* Pad with zeroes.  */
+                        DCHAR_T *q = end;
+
+                        while (p > pad_ptr)
+                          *--q = *--p;
+                        for (; pad > 0; pad--)
+                          *p++ = '0';
+                      }
+                    else
+                      {
+                        /* Pad with spaces on the left.  */
+                        DCHAR_T *q = end;
+
+                        while (p > tmp)
+                          *--q = *--p;
+                        for (; pad > 0; pad--)
+                          *p++ = ' ';
+                      }
+
+                    p = end;
+                  }
+
+                count = p - tmp;
+
+                if (count >= tmp_length)
+                  /* tmp_length was incorrectly calculated - fix the
+                     code above!  */
+                  abort ();
+
+                /* Make room for the result.  */
+                if (count >= allocated - length)
+                  {
+                    size_t n = xsum (length, count);
+
+                    ENSURE_ALLOCATION (n);
+                  }
+
+                /* Append the result.  */
+                memcpy (result + length, tmp, count * sizeof (DCHAR_T));
+                if (tmp != tmpbuf)
+                  free (tmp);
+                length += count;
+              }
+#endif
+            else
+              {
+                arg_type type = a.arg[dp->arg_index].type;
+                int flags = dp->flags;
+#if !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_LEFTADJUST || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION
+                int has_width;
+#endif
+#if !USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || USE_MSVC__SNPRINTF || !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_LEFTADJUST || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION
+                size_t width;
+#endif
+#if !USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || USE_MSVC__SNPRINTF || NEED_PRINTF_UNBOUNDED_PRECISION
+                int has_precision;
+                size_t precision;
+#endif
+#if NEED_PRINTF_UNBOUNDED_PRECISION
+                int prec_ourselves;
+#else
+#               define prec_ourselves 0
+#endif
+#if NEED_PRINTF_FLAG_LEFTADJUST
+#               define pad_ourselves 1
+#elif !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION
+                int pad_ourselves;
+#else
+#               define pad_ourselves 0
+#endif
+                TCHAR_T *fbp;
+                unsigned int prefix_count;
+                int prefixes[2] IF_LINT (= { 0 });
+                int orig_errno;
+#if !USE_SNPRINTF
+                size_t tmp_length;
+                TCHAR_T tmpbuf[700];
+                TCHAR_T *tmp;
+#endif
+
+#if !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_LEFTADJUST || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION
+                has_width = 0;
+#endif
+#if !USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || USE_MSVC__SNPRINTF || !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_LEFTADJUST || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION
+                width = 0;
+                if (dp->width_start != dp->width_end)
+                  {
+                    if (dp->width_arg_index != ARG_NONE)
+                      {
+                        int arg;
+
+                        if (!(a.arg[dp->width_arg_index].type == TYPE_INT))
+                          abort ();
+                        arg = a.arg[dp->width_arg_index].a.a_int;
+                        width = arg;
+                        if (arg < 0)
+                          {
+                            /* "A negative field width is taken as a '-' flag
+                                followed by a positive field width."  */
+                            flags |= FLAG_LEFT;
+                            width = -width;
+                          }
+                      }
+                    else
+                      {
+                        const FCHAR_T *digitp = dp->width_start;
+
+                        do
+                          width = xsum (xtimes (width, 10), *digitp++ - '0');
+                        while (digitp != dp->width_end);
+                      }
+#if !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_LEFTADJUST || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION
+                    has_width = 1;
+#endif
+                  }
+#endif
+
+#if !USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || USE_MSVC__SNPRINTF || NEED_PRINTF_UNBOUNDED_PRECISION
+                has_precision = 0;
+                precision = 6;
+                if (dp->precision_start != dp->precision_end)
+                  {
+                    if (dp->precision_arg_index != ARG_NONE)
+                      {
+                        int arg;
+
+                        if (!(a.arg[dp->precision_arg_index].type == TYPE_INT))
+                          abort ();
+                        arg = a.arg[dp->precision_arg_index].a.a_int;
+                        /* "A negative precision is taken as if the precision
+                            were omitted."  */
+                        if (arg >= 0)
+                          {
+                            precision = arg;
+                            has_precision = 1;
+                          }
+                      }
+                    else
+                      {
+                        const FCHAR_T *digitp = dp->precision_start + 1;
+
+                        precision = 0;
+                        while (digitp != dp->precision_end)
+                          precision = xsum (xtimes (precision, 10), *digitp++ - '0');
+                        has_precision = 1;
+                      }
+                  }
+#endif
+
+                /* Decide whether to handle the precision ourselves.  */
+#if NEED_PRINTF_UNBOUNDED_PRECISION
+                switch (dp->conversion)
+                  {
+                  case 'd': case 'i': case 'u':
+                  case 'o':
+                  case 'x': case 'X': case 'p':
+                    prec_ourselves = has_precision && (precision > 0);
+                    break;
+                  default:
+                    prec_ourselves = 0;
+                    break;
+                  }
+#endif
+
+                /* Decide whether to perform the padding ourselves.  */
+#if !NEED_PRINTF_FLAG_LEFTADJUST && (!DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION)
+                switch (dp->conversion)
+                  {
+# if !DCHAR_IS_TCHAR || ENABLE_UNISTDIO
+                  /* If we need conversion from TCHAR_T[] to DCHAR_T[], we need
+                     to perform the padding after this conversion.  Functions
+                     with unistdio extensions perform the padding based on
+                     character count rather than element count.  */
+                  case 'c': case 's':
+# endif
+# if NEED_PRINTF_FLAG_ZERO
+                  case 'f': case 'F': case 'e': case 'E': case 'g': case 'G':
+                  case 'a': case 'A':
+# endif
+                    pad_ourselves = 1;
+                    break;
+                  default:
+                    pad_ourselves = prec_ourselves;
+                    break;
+                  }
+#endif
+
+#if !USE_SNPRINTF
+                /* Allocate a temporary buffer of sufficient size for calling
+                   sprintf.  */
+                tmp_length =
+                  MAX_ROOM_NEEDED (&a, dp->arg_index, dp->conversion, type,
+                                   flags, width, has_precision, precision,
+                                   pad_ourselves);
+
+                if (tmp_length <= sizeof (tmpbuf) / sizeof (TCHAR_T))
+                  tmp = tmpbuf;
+                else
+                  {
+                    size_t tmp_memsize = xtimes (tmp_length, sizeof (TCHAR_T));
+
+                    if (size_overflow_p (tmp_memsize))
+                      /* Overflow, would lead to out of memory.  */
+                      goto out_of_memory;
+                    tmp = (TCHAR_T *) malloc (tmp_memsize);
+                    if (tmp == NULL)
+                      /* Out of memory.  */
+                      goto out_of_memory;
+                  }
+#endif
+
+                /* Construct the format string for calling snprintf or
+                   sprintf.  */
+                fbp = buf;
+                *fbp++ = '%';
+#if NEED_PRINTF_FLAG_GROUPING
+                /* The underlying implementation doesn't support the ' flag.
+                   Produce no grouping characters in this case; this is
+                   acceptable because the grouping is locale dependent.  */
+#else
+                if (flags & FLAG_GROUP)
+                  *fbp++ = '\'';
+#endif
+                if (flags & FLAG_LEFT)
+                  *fbp++ = '-';
+                if (flags & FLAG_SHOWSIGN)
+                  *fbp++ = '+';
+                if (flags & FLAG_SPACE)
+                  *fbp++ = ' ';
+                if (flags & FLAG_ALT)
+                  *fbp++ = '#';
+#if __GLIBC__ >= 2 && !defined __UCLIBC__
+                if (flags & FLAG_LOCALIZED)
+                  *fbp++ = 'I';
+#endif
+                if (!pad_ourselves)
+                  {
+                    if (flags & FLAG_ZERO)
+                      *fbp++ = '0';
+                    if (dp->width_start != dp->width_end)
+                      {
+                        size_t n = dp->width_end - dp->width_start;
+                        /* The width specification is known to consist only
+                           of standard ASCII characters.  */
+                        if (sizeof (FCHAR_T) == sizeof (TCHAR_T))
+                          {
+                            memcpy (fbp, dp->width_start, n * sizeof (TCHAR_T));
+                            fbp += n;
+                          }
+                        else
+                          {
+                            const FCHAR_T *mp = dp->width_start;
+                            do
+                              *fbp++ = *mp++;
+                            while (--n > 0);
+                          }
+                      }
+                  }
+                if (!prec_ourselves)
+                  {
+                    if (dp->precision_start != dp->precision_end)
+                      {
+                        size_t n = dp->precision_end - dp->precision_start;
+                        /* The precision specification is known to consist only
+                           of standard ASCII characters.  */
+                        if (sizeof (FCHAR_T) == sizeof (TCHAR_T))
+                          {
+                            memcpy (fbp, dp->precision_start, n * sizeof (TCHAR_T));
+                            fbp += n;
+                          }
+                        else
+                          {
+                            const FCHAR_T *mp = dp->precision_start;
+                            do
+                              *fbp++ = *mp++;
+                            while (--n > 0);
+                          }
+                      }
+                  }
+
+                switch (type)
+                  {
+#if HAVE_LONG_LONG_INT
+                  case TYPE_LONGLONGINT:
+                  case TYPE_ULONGLONGINT:
+# if defined _WIN32 && ! defined __CYGWIN__
+                    *fbp++ = 'I';
+                    *fbp++ = '6';
+                    *fbp++ = '4';
+                    break;
+# else
+                    *fbp++ = 'l';
+# endif
+#endif
+                    FALLTHROUGH;
+                  case TYPE_LONGINT:
+                  case TYPE_ULONGINT:
+#if HAVE_WINT_T
+                  case TYPE_WIDE_CHAR:
+#endif
+#if HAVE_WCHAR_T
+                  case TYPE_WIDE_STRING:
+#endif
+                    *fbp++ = 'l';
+                    break;
+                  case TYPE_LONGDOUBLE:
+                    *fbp++ = 'L';
+                    break;
+                  default:
+                    break;
+                  }
+#if NEED_PRINTF_DIRECTIVE_F
+                if (dp->conversion == 'F')
+                  *fbp = 'f';
+                else
+#endif
+                  *fbp = dp->conversion;
+#if USE_SNPRINTF
+# if ! (((__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 3))        \
+         && !defined __UCLIBC__)                                            \
+        || (defined __APPLE__ && defined __MACH__)                          \
+        || (defined _WIN32 && ! defined __CYGWIN__))
+                fbp[1] = '%';
+                fbp[2] = 'n';
+                fbp[3] = '\0';
+# else
+                /* On glibc2 systems from glibc >= 2.3 - probably also older
+                   ones - we know that snprintf's return value conforms to
+                   ISO C 99: the tests gl_SNPRINTF_RETVAL_C99 and
+                   gl_SNPRINTF_TRUNCATION_C99 pass.
+                   Therefore we can avoid using %n in this situation.
+                   On glibc2 systems from 2004-10-18 or newer, the use of %n
+                   in format strings in writable memory may crash the program
+                   (if compiled with _FORTIFY_SOURCE=2), so we should avoid it
+                   in this situation.  */
+                /* On Mac OS X 10.3 or newer, we know that snprintf's return
+                   value conforms to ISO C 99: the tests gl_SNPRINTF_RETVAL_C99
+                   and gl_SNPRINTF_TRUNCATION_C99 pass.
+                   Therefore we can avoid using %n in this situation.
+                   On Mac OS X 10.13 or newer, the use of %n in format strings
+                   in writable memory by default crashes the program, so we
+                   should avoid it in this situation.  */
+                /* On native Windows systems (such as mingw), we can avoid using
+                   %n because:
+                     - Although the gl_SNPRINTF_TRUNCATION_C99 test fails,
+                       snprintf does not write more than the specified number
+                       of bytes. (snprintf (buf, 3, "%d %d", 4567, 89) writes
+                       '4', '5', '6' into buf, not '4', '5', '\0'.)
+                     - Although the gl_SNPRINTF_RETVAL_C99 test fails, snprintf
+                       allows us to recognize the case of an insufficient
+                       buffer size: it returns -1 in this case.
+                   On native Windows systems (such as mingw) where the OS is
+                   Windows Vista, the use of %n in format strings by default
+                   crashes the program. See
+                     <https://gcc.gnu.org/ml/gcc/2007-06/msg00122.html> and
+                     <https://msdn.microsoft.com/en-us/library/ms175782.aspx>
+                   So we should avoid %n in this situation.  */
+                fbp[1] = '\0';
+# endif
+#else
+                fbp[1] = '\0';
+#endif
+
+                /* Construct the arguments for calling snprintf or sprintf.  */
+                prefix_count = 0;
+                if (!pad_ourselves && dp->width_arg_index != ARG_NONE)
+                  {
+                    if (!(a.arg[dp->width_arg_index].type == TYPE_INT))
+                      abort ();
+                    prefixes[prefix_count++] = a.arg[dp->width_arg_index].a.a_int;
+                  }
+                if (!prec_ourselves && dp->precision_arg_index != ARG_NONE)
+                  {
+                    if (!(a.arg[dp->precision_arg_index].type == TYPE_INT))
+                      abort ();
+                    prefixes[prefix_count++] = a.arg[dp->precision_arg_index].a.a_int;
+                  }
+
+#if USE_SNPRINTF
+                /* The SNPRINTF result is appended after result[0..length].
+                   The latter is an array of DCHAR_T; SNPRINTF appends an
+                   array of TCHAR_T to it.  This is possible because
+                   sizeof (TCHAR_T) divides sizeof (DCHAR_T) and
+                   alignof (TCHAR_T) <= alignof (DCHAR_T).  */
+# define TCHARS_PER_DCHAR (sizeof (DCHAR_T) / sizeof (TCHAR_T))
+                /* Ensure that maxlen below will be >= 2.  Needed on BeOS,
+                   where an snprintf() with maxlen==1 acts like sprintf().  */
+                ENSURE_ALLOCATION (xsum (length,
+                                         (2 + TCHARS_PER_DCHAR - 1)
+                                         / TCHARS_PER_DCHAR));
+                /* Prepare checking whether snprintf returns the count
+                   via %n.  */
+                *(TCHAR_T *) (result + length) = '\0';
+#endif
+
+                orig_errno = errno;
+
+                for (;;)
+                  {
+                    int count = -1;
+
+#if USE_SNPRINTF
+                    int retcount = 0;
+                    size_t maxlen = allocated - length;
+                    /* SNPRINTF can fail if its second argument is
+                       > INT_MAX.  */
+                    if (maxlen > INT_MAX / TCHARS_PER_DCHAR)
+                      maxlen = INT_MAX / TCHARS_PER_DCHAR;
+                    maxlen = maxlen * TCHARS_PER_DCHAR;
+# define SNPRINTF_BUF(arg) \
+                    switch (prefix_count)                                   \
+                      {                                                     \
+                      case 0:                                               \
+                        retcount = SNPRINTF ((TCHAR_T *) (result + length), \
+                                             maxlen, buf,                   \
+                                             arg, &count);                  \
+                        break;                                              \
+                      case 1:                                               \
+                        retcount = SNPRINTF ((TCHAR_T *) (result + length), \
+                                             maxlen, buf,                   \
+                                             prefixes[0], arg, &count);     \
+                        break;                                              \
+                      case 2:                                               \
+                        retcount = SNPRINTF ((TCHAR_T *) (result + length), \
+                                             maxlen, buf,                   \
+                                             prefixes[0], prefixes[1], arg, \
+                                             &count);                       \
+                        break;                                              \
+                      default:                                              \
+                        abort ();                                           \
+                      }
+#else
+# define SNPRINTF_BUF(arg) \
+                    switch (prefix_count)                                   \
+                      {                                                     \
+                      case 0:                                               \
+                        count = sprintf (tmp, buf, arg);                    \
+                        break;                                              \
+                      case 1:                                               \
+                        count = sprintf (tmp, buf, prefixes[0], arg);       \
+                        break;                                              \
+                      case 2:                                               \
+                        count = sprintf (tmp, buf, prefixes[0], prefixes[1],\
+                                         arg);                              \
+                        break;                                              \
+                      default:                                              \
+                        abort ();                                           \
+                      }
+#endif
+
+                    errno = 0;
+                    switch (type)
+                      {
+                      case TYPE_SCHAR:
+                        {
+                          int arg = a.arg[dp->arg_index].a.a_schar;
+                          SNPRINTF_BUF (arg);
+                        }
+                        break;
+                      case TYPE_UCHAR:
+                        {
+                          unsigned int arg = a.arg[dp->arg_index].a.a_uchar;
+                          SNPRINTF_BUF (arg);
+                        }
+                        break;
+                      case TYPE_SHORT:
+                        {
+                          int arg = a.arg[dp->arg_index].a.a_short;
+                          SNPRINTF_BUF (arg);
+                        }
+                        break;
+                      case TYPE_USHORT:
+                        {
+                          unsigned int arg = a.arg[dp->arg_index].a.a_ushort;
+                          SNPRINTF_BUF (arg);
+                        }
+                        break;
+                      case TYPE_INT:
+                        {
+                          int arg = a.arg[dp->arg_index].a.a_int;
+                          SNPRINTF_BUF (arg);
+                        }
+                        break;
+                      case TYPE_UINT:
+                        {
+                          unsigned int arg = a.arg[dp->arg_index].a.a_uint;
+                          SNPRINTF_BUF (arg);
+                        }
+                        break;
+                      case TYPE_LONGINT:
+                        {
+                          long int arg = a.arg[dp->arg_index].a.a_longint;
+                          SNPRINTF_BUF (arg);
+                        }
+                        break;
+                      case TYPE_ULONGINT:
+                        {
+                          unsigned long int arg = a.arg[dp->arg_index].a.a_ulongint;
+                          SNPRINTF_BUF (arg);
+                        }
+                        break;
+#if HAVE_LONG_LONG_INT
+                      case TYPE_LONGLONGINT:
+                        {
+                          long long int arg = a.arg[dp->arg_index].a.a_longlongint;
+                          SNPRINTF_BUF (arg);
+                        }
+                        break;
+                      case TYPE_ULONGLONGINT:
+                        {
+                          unsigned long long int arg = a.arg[dp->arg_index].a.a_ulonglongint;
+                          SNPRINTF_BUF (arg);
+                        }
+                        break;
+#endif
+                      case TYPE_DOUBLE:
+                        {
+                          double arg = a.arg[dp->arg_index].a.a_double;
+                          SNPRINTF_BUF (arg);
+                        }
+                        break;
+                      case TYPE_LONGDOUBLE:
+                        {
+                          long double arg = a.arg[dp->arg_index].a.a_longdouble;
+                          SNPRINTF_BUF (arg);
+                        }
+                        break;
+                      case TYPE_CHAR:
+                        {
+                          int arg = a.arg[dp->arg_index].a.a_char;
+                          SNPRINTF_BUF (arg);
+                        }
+                        break;
+#if HAVE_WINT_T
+                      case TYPE_WIDE_CHAR:
+                        {
+                          wint_t arg = a.arg[dp->arg_index].a.a_wide_char;
+                          SNPRINTF_BUF (arg);
+                        }
+                        break;
+#endif
+                      case TYPE_STRING:
+                        {
+                          const char *arg = a.arg[dp->arg_index].a.a_string;
+                          SNPRINTF_BUF (arg);
+                        }
+                        break;
+#if HAVE_WCHAR_T
+                      case TYPE_WIDE_STRING:
+                        {
+                          const wchar_t *arg = a.arg[dp->arg_index].a.a_wide_string;
+                          SNPRINTF_BUF (arg);
+                        }
+                        break;
+#endif
+                      case TYPE_POINTER:
+                        {
+                          void *arg = a.arg[dp->arg_index].a.a_pointer;
+                          SNPRINTF_BUF (arg);
+                        }
+                        break;
+                      default:
+                        abort ();
+                      }
+
+#if USE_SNPRINTF
+                    /* Portability: Not all implementations of snprintf()
+                       are ISO C 99 compliant.  Determine the number of
+                       bytes that snprintf() has produced or would have
+                       produced.  */
+                    if (count >= 0)
+                      {
+                        /* Verify that snprintf() has NUL-terminated its
+                           result.  */
+                        if ((unsigned int) count < maxlen
+                            && ((TCHAR_T *) (result + length)) [count] != '\0')
+                          abort ();
+                        /* Portability hack.  */
+                        if (retcount > count)
+                          count = retcount;
+                      }
+                    else
+                      {
+                        /* snprintf() doesn't understand the '%n'
+                           directive.  */
+                        if (fbp[1] != '\0')
+                          {
+                            /* Don't use the '%n' directive; instead, look
+                               at the snprintf() return value.  */
+                            fbp[1] = '\0';
+                            continue;
+                          }
+                        else
+                          {
+                            /* Look at the snprintf() return value.  */
+                            if (retcount < 0)
+                              {
+# if !HAVE_SNPRINTF_RETVAL_C99 || USE_MSVC__SNPRINTF
+                                /* HP-UX 10.20 snprintf() is doubly deficient:
+                                   It doesn't understand the '%n' directive,
+                                   *and* it returns -1 (rather than the length
+                                   that would have been required) when the
+                                   buffer is too small.
+                                   But a failure at this point can also come
+                                   from other reasons than a too small buffer,
+                                   such as an invalid wide string argument to
+                                   the %ls directive, or possibly an invalid
+                                   floating-point argument.  */
+                                size_t tmp_length =
+                                  MAX_ROOM_NEEDED (&a, dp->arg_index,
+                                                   dp->conversion, type, flags,
+                                                   width,
+                                                   has_precision,
+                                                   precision, pad_ourselves);
+
+                                if (maxlen < tmp_length)
+                                  {
+                                    /* Make more room.  But try to do through
+                                       this reallocation only once.  */
+                                    size_t bigger_need =
+                                      xsum (length,
+                                            xsum (tmp_length,
+                                                  TCHARS_PER_DCHAR - 1)
+                                            / TCHARS_PER_DCHAR);
+                                    /* And always grow proportionally.
+                                       (There may be several arguments, each
+                                       needing a little more room than the
+                                       previous one.)  */
+                                    size_t bigger_need2 =
+                                      xsum (xtimes (allocated, 2), 12);
+                                    if (bigger_need < bigger_need2)
+                                      bigger_need = bigger_need2;
+                                    ENSURE_ALLOCATION (bigger_need);
+                                    continue;
+                                  }
+# endif
+                              }
+                            else
+                              count = retcount;
+                          }
+                      }
+#endif
+
+                    /* Attempt to handle failure.  */
+                    if (count < 0)
+                      {
+                        /* SNPRINTF or sprintf failed.  Save and use the errno
+                           that it has set, if any.  */
+                        int saved_errno = errno;
+                        if (saved_errno == 0)
+                          {
+                            if (dp->conversion == 'c' || dp->conversion == 's')
+                              saved_errno = EILSEQ;
+                            else
+                              saved_errno = EINVAL;
+                          }
+
+                        if (!(result == resultbuf || result == NULL))
+                          free (result);
+                        if (buf_malloced != NULL)
+                          free (buf_malloced);
+                        CLEANUP ();
+
+                        errno = saved_errno;
+                        return NULL;
+                      }
+
+#if USE_SNPRINTF
+                    /* Handle overflow of the allocated buffer.
+                       If such an overflow occurs, a C99 compliant snprintf()
+                       returns a count >= maxlen.  However, a non-compliant
+                       snprintf() function returns only count = maxlen - 1.  To
+                       cover both cases, test whether count >= maxlen - 1.  */
+                    if ((unsigned int) count + 1 >= maxlen)
+                      {
+                        /* If maxlen already has attained its allowed maximum,
+                           allocating more memory will not increase maxlen.
+                           Instead of looping, bail out.  */
+                        if (maxlen == INT_MAX / TCHARS_PER_DCHAR)
+                          goto overflow;
+                        else
+                          {
+                            /* Need at least (count + 1) * sizeof (TCHAR_T)
+                               bytes.  (The +1 is for the trailing NUL.)
+                               But ask for (count + 2) * sizeof (TCHAR_T)
+                               bytes, so that in the next round, we likely get
+                                 maxlen > (unsigned int) count + 1
+                               and so we don't get here again.
+                               And allocate proportionally, to avoid looping
+                               eternally if snprintf() reports a too small
+                               count.  */
+                            size_t n =
+                              xmax (xsum (length,
+                                          ((unsigned int) count + 2
+                                           + TCHARS_PER_DCHAR - 1)
+                                          / TCHARS_PER_DCHAR),
+                                    xtimes (allocated, 2));
+
+                            ENSURE_ALLOCATION (n);
+                            continue;
+                          }
+                      }
+#endif
+
+#if NEED_PRINTF_UNBOUNDED_PRECISION
+                    if (prec_ourselves)
+                      {
+                        /* Handle the precision.  */
+                        TCHAR_T *prec_ptr =
+# if USE_SNPRINTF
+                          (TCHAR_T *) (result + length);
+# else
+                          tmp;
+# endif
+                        size_t prefix_count;
+                        size_t move;
+
+                        prefix_count = 0;
+                        /* Put the additional zeroes after the sign.  */
+                        if (count >= 1
+                            && (*prec_ptr == '-' || *prec_ptr == '+'
+                                || *prec_ptr == ' '))
+                          prefix_count = 1;
+                        /* Put the additional zeroes after the 0x prefix if
+                           (flags & FLAG_ALT) || (dp->conversion == 'p').  */
+                        else if (count >= 2
+                                 && prec_ptr[0] == '0'
+                                 && (prec_ptr[1] == 'x' || prec_ptr[1] == 'X'))
+                          prefix_count = 2;
+
+                        move = count - prefix_count;
+                        if (precision > move)
+                          {
+                            /* Insert zeroes.  */
+                            size_t insert = precision - move;
+                            TCHAR_T *prec_end;
+
+# if USE_SNPRINTF
+                            size_t n =
+                              xsum (length,
+                                    (count + insert + TCHARS_PER_DCHAR - 1)
+                                    / TCHARS_PER_DCHAR);
+                            length += (count + TCHARS_PER_DCHAR - 1) / TCHARS_PER_DCHAR;
+                            ENSURE_ALLOCATION (n);
+                            length -= (count + TCHARS_PER_DCHAR - 1) / TCHARS_PER_DCHAR;
+                            prec_ptr = (TCHAR_T *) (result + length);
+# endif
+
+                            prec_end = prec_ptr + count;
+                            prec_ptr += prefix_count;
+
+                            while (prec_end > prec_ptr)
+                              {
+                                prec_end--;
+                                prec_end[insert] = prec_end[0];
+                              }
+
+                            prec_end += insert;
+                            do
+                              *--prec_end = '0';
+                            while (prec_end > prec_ptr);
+
+                            count += insert;
+                          }
+                      }
+#endif
+
+#if !USE_SNPRINTF
+                    if (count >= tmp_length)
+                      /* tmp_length was incorrectly calculated - fix the
+                         code above!  */
+                      abort ();
+#endif
+
+#if !DCHAR_IS_TCHAR
+                    /* Convert from TCHAR_T[] to DCHAR_T[].  */
+                    if (dp->conversion == 'c' || dp->conversion == 's')
+                      {
+                        /* type = TYPE_CHAR or TYPE_WIDE_CHAR or TYPE_STRING
+                           TYPE_WIDE_STRING.
+                           The result string is not certainly ASCII.  */
+                        const TCHAR_T *tmpsrc;
+                        DCHAR_T *tmpdst;
+                        size_t tmpdst_len;
+                        /* This code assumes that TCHAR_T is 'char'.  */
+                        verify (sizeof (TCHAR_T) == 1);
+# if USE_SNPRINTF
+                        tmpsrc = (TCHAR_T *) (result + length);
+# else
+                        tmpsrc = tmp;
+# endif
+                        tmpdst =
+                          DCHAR_CONV_FROM_ENCODING (locale_charset (),
+                                                    iconveh_question_mark,
+                                                    tmpsrc, count,
+                                                    NULL,
+                                                    NULL, &tmpdst_len);
+                        if (tmpdst == NULL)
+                          {
+                            int saved_errno = errno;
+                            if (!(result == resultbuf || result == NULL))
+                              free (result);
+                            if (buf_malloced != NULL)
+                              free (buf_malloced);
+                            CLEANUP ();
+                            errno = saved_errno;
+                            return NULL;
+                          }
+                        ENSURE_ALLOCATION (xsum (length, tmpdst_len));
+                        DCHAR_CPY (result + length, tmpdst, tmpdst_len);
+                        free (tmpdst);
+                        count = tmpdst_len;
+                      }
+                    else
+                      {
+                        /* The result string is ASCII.
+                           Simple 1:1 conversion.  */
+# if USE_SNPRINTF
+                        /* If sizeof (DCHAR_T) == sizeof (TCHAR_T), it's a
+                           no-op conversion, in-place on the array starting
+                           at (result + length).  */
+                        if (sizeof (DCHAR_T) != sizeof (TCHAR_T))
+# endif
+                          {
+                            const TCHAR_T *tmpsrc;
+                            DCHAR_T *tmpdst;
+                            size_t n;
+
+# if USE_SNPRINTF
+                            if (result == resultbuf)
+                              {
+                                tmpsrc = (TCHAR_T *) (result + length);
+                                /* ENSURE_ALLOCATION will not move tmpsrc
+                                   (because it's part of resultbuf).  */
+                                ENSURE_ALLOCATION (xsum (length, count));
+                              }
+                            else
+                              {
+                                /* ENSURE_ALLOCATION will move the array
+                                   (because it uses realloc().  */
+                                ENSURE_ALLOCATION (xsum (length, count));
+                                tmpsrc = (TCHAR_T *) (result + length);
+                              }
+# else
+                            tmpsrc = tmp;
+                            ENSURE_ALLOCATION (xsum (length, count));
+# endif
+                            tmpdst = result + length;
+                            /* Copy backwards, because of overlapping.  */
+                            tmpsrc += count;
+                            tmpdst += count;
+                            for (n = count; n > 0; n--)
+                              *--tmpdst = *--tmpsrc;
+                          }
+                      }
+#endif
+
+#if DCHAR_IS_TCHAR && !USE_SNPRINTF
+                    /* Make room for the result.  */
+                    if (count > allocated - length)
+                      {
+                        /* Need at least count elements.  But allocate
+                           proportionally.  */
+                        size_t n =
+                          xmax (xsum (length, count), xtimes (allocated, 2));
+
+                        ENSURE_ALLOCATION (n);
+                      }
+#endif
+
+                    /* Here count <= allocated - length.  */
+
+                    /* Perform padding.  */
+#if !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_LEFTADJUST || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION
+                    if (pad_ourselves && has_width)
+                      {
+                        size_t w;
+# if ENABLE_UNISTDIO
+                        /* Outside POSIX, it's preferable to compare the width
+                           against the number of _characters_ of the converted
+                           value.  */
+                        w = DCHAR_MBSNLEN (result + length, count);
+# else
+                        /* The width is compared against the number of _bytes_
+                           of the converted value, says POSIX.  */
+                        w = count;
+# endif
+                        if (w < width)
+                          {
+                            size_t pad = width - w;
+
+                            /* Make room for the result.  */
+                            if (xsum (count, pad) > allocated - length)
+                              {
+                                /* Need at least count + pad elements.  But
+                                   allocate proportionally.  */
+                                size_t n =
+                                  xmax (xsum3 (length, count, pad),
+                                        xtimes (allocated, 2));
+
+# if USE_SNPRINTF
+                                length += count;
+                                ENSURE_ALLOCATION (n);
+                                length -= count;
+# else
+                                ENSURE_ALLOCATION (n);
+# endif
+                              }
+                            /* Here count + pad <= allocated - length.  */
+
+                            {
+# if !DCHAR_IS_TCHAR || USE_SNPRINTF
+                              DCHAR_T * const rp = result + length;
+# else
+                              DCHAR_T * const rp = tmp;
+# endif
+                              DCHAR_T *p = rp + count;
+                              DCHAR_T *end = p + pad;
+                              DCHAR_T *pad_ptr;
+# if !DCHAR_IS_TCHAR || ENABLE_UNISTDIO
+                              if (dp->conversion == 'c'
+                                  || dp->conversion == 's')
+                                /* No zero-padding for string directives.  */
+                                pad_ptr = NULL;
+                              else
+# endif
+                                {
+                                  pad_ptr = (*rp == '-' ? rp + 1 : rp);
+                                  /* No zero-padding of "inf" and "nan".  */
+                                  if ((*pad_ptr >= 'A' && *pad_ptr <= 'Z')
+                                      || (*pad_ptr >= 'a' && *pad_ptr <= 'z'))
+                                    pad_ptr = NULL;
+                                }
+                              /* The generated string now extends from rp to p,
+                                 with the zero padding insertion point being at
+                                 pad_ptr.  */
+
+                              count = count + pad; /* = end - rp */
+
+                              if (flags & FLAG_LEFT)
+                                {
+                                  /* Pad with spaces on the right.  */
+                                  for (; pad > 0; pad--)
+                                    *p++ = ' ';
+                                }
+                              else if ((flags & FLAG_ZERO) && pad_ptr != NULL)
+                                {
+                                  /* Pad with zeroes.  */
+                                  DCHAR_T *q = end;
+
+                                  while (p > pad_ptr)
+                                    *--q = *--p;
+                                  for (; pad > 0; pad--)
+                                    *p++ = '0';
+                                }
+                              else
+                                {
+                                  /* Pad with spaces on the left.  */
+                                  DCHAR_T *q = end;
+
+                                  while (p > rp)
+                                    *--q = *--p;
+                                  for (; pad > 0; pad--)
+                                    *p++ = ' ';
+                                }
+                            }
+                          }
+                      }
+#endif
+
+                    /* Here still count <= allocated - length.  */
+
+#if !DCHAR_IS_TCHAR || USE_SNPRINTF
+                    /* The snprintf() result did fit.  */
+#else
+                    /* Append the sprintf() result.  */
+                    memcpy (result + length, tmp, count * sizeof (DCHAR_T));
+#endif
+#if !USE_SNPRINTF
+                    if (tmp != tmpbuf)
+                      free (tmp);
+#endif
+
+#if NEED_PRINTF_DIRECTIVE_F
+                    if (dp->conversion == 'F')
+                      {
+                        /* Convert the %f result to upper case for %F.  */
+                        DCHAR_T *rp = result + length;
+                        size_t rc;
+                        for (rc = count; rc > 0; rc--, rp++)
+                          if (*rp >= 'a' && *rp <= 'z')
+                            *rp = *rp - 'a' + 'A';
+                      }
+#endif
+
+                    length += count;
+                    break;
+                  }
+                errno = orig_errno;
+#undef pad_ourselves
+#undef prec_ourselves
+              }
+          }
+      }
+
+    /* Add the final NUL.  */
+    ENSURE_ALLOCATION (xsum (length, 1));
+    result[length] = '\0';
+
+    if (result != resultbuf && length + 1 < allocated)
+      {
+        /* Shrink the allocated memory if possible.  */
+        DCHAR_T *memory;
+
+        memory = (DCHAR_T *) realloc (result, (length + 1) * sizeof (DCHAR_T));
+        if (memory != NULL)
+          result = memory;
+      }
+
+    if (buf_malloced != NULL)
+      free (buf_malloced);
+    CLEANUP ();
+    *lengthp = length;
+    /* Note that we can produce a big string of a length > INT_MAX.  POSIX
+       says that snprintf() fails with errno = EOVERFLOW in this case, but
+       that's only because snprintf() returns an 'int'.  This function does
+       not have this limitation.  */
+    return result;
+
+#if USE_SNPRINTF
+  overflow:
+    if (!(result == resultbuf || result == NULL))
+      free (result);
+    if (buf_malloced != NULL)
+      free (buf_malloced);
+    CLEANUP ();
+    errno = EOVERFLOW;
+    return NULL;
+#endif
+
+  out_of_memory:
+    if (!(result == resultbuf || result == NULL))
+      free (result);
+    if (buf_malloced != NULL)
+      free (buf_malloced);
+  out_of_memory_1:
+    CLEANUP ();
+    errno = ENOMEM;
+    return NULL;
+  }
+}
+
+#undef MAX_ROOM_NEEDED
+#undef TCHARS_PER_DCHAR
+#undef SNPRINTF
+#undef USE_SNPRINTF
+#undef DCHAR_SET
+#undef DCHAR_CPY
+#undef PRINTF_PARSE
+#undef DIRECTIVES
+#undef DIRECTIVE
+#undef DCHAR_IS_TCHAR
+#undef TCHAR_T
+#undef DCHAR_T
+#undef FCHAR_T
+#undef VASNPRINTF
diff --git a/lib/vasnprintf.h b/lib/vasnprintf.h
new file mode 100644 (file)
index 0000000..3eaaa7e
--- /dev/null
@@ -0,0 +1,79 @@
+/* vsprintf with automatic memory allocation.
+   Copyright (C) 2002-2004, 2007-2018 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, 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 <https://www.gnu.org/licenses/>.  */
+
+#ifndef _VASNPRINTF_H
+#define _VASNPRINTF_H
+
+/* Get va_list.  */
+#include <stdarg.h>
+
+/* Get size_t.  */
+#include <stddef.h>
+
+/* The __attribute__ feature is available in gcc versions 2.5 and later.
+   The __-protected variants of the attributes 'format' and 'printf' are
+   accepted by gcc versions 2.6.4 (effectively 2.7) and later.
+   We enable _GL_ATTRIBUTE_FORMAT only if these are supported too, because
+   gnulib and libintl do '#define printf __printf__' when they override
+   the 'printf' function.  */
+#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)
+# define _GL_ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec))
+#else
+# define _GL_ATTRIBUTE_FORMAT(spec) /* empty */
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Write formatted output to a string dynamically allocated with malloc().
+   You can pass a preallocated buffer for the result in RESULTBUF and its
+   size in *LENGTHP; otherwise you pass RESULTBUF = NULL.
+   If successful, return the address of the string (this may be = RESULTBUF
+   if no dynamic memory allocation was necessary) and set *LENGTHP to the
+   number of resulting bytes, excluding the trailing NUL.  Upon error, set
+   errno and return NULL.
+
+   When dynamic memory allocation occurs, the preallocated buffer is left
+   alone (with possibly modified contents).  This makes it possible to use
+   a statically allocated or stack-allocated buffer, like this:
+
+          char buf[100];
+          size_t len = sizeof (buf);
+          char *output = vasnprintf (buf, &len, format, args);
+          if (output == NULL)
+            ... error handling ...;
+          else
+            {
+              ... use the output string ...;
+              if (output != buf)
+                free (output);
+            }
+  */
+#if REPLACE_VASNPRINTF
+# define asnprintf rpl_asnprintf
+# define vasnprintf rpl_vasnprintf
+#endif
+extern char * asnprintf (char *resultbuf, size_t *lengthp, const char *format, ...)
+       _GL_ATTRIBUTE_FORMAT ((__printf__, 3, 4));
+extern char * vasnprintf (char *resultbuf, size_t *lengthp, const char *format, va_list args)
+       _GL_ATTRIBUTE_FORMAT ((__printf__, 3, 0));
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _VASNPRINTF_H */
similarity index 95%
rename from src/libs/gnulib/lib/verify.h
rename to lib/verify.h
index a25e514..3b57dde 100644 (file)
@@ -1,6 +1,6 @@
 /* Compile-time assert-like macros.
 
-   Copyright (C) 2005-2006, 2009-2014 Free Software Foundation, Inc.
+   Copyright (C) 2005-2006, 2009-2018 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
@@ -13,7 +13,7 @@
    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 <http://www.gnu.org/licenses/>.  */
+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
 
 /* Written by Paul Eggert, Bruno Haible, and Jim Meyering.  */
 
@@ -248,7 +248,12 @@ template <int w>
 /* Verify requirement R at compile-time, as a declaration without a
    trailing ';'.  */
 
-#define verify(R) _GL_VERIFY (R, "verify (" #R ")")
+#ifdef __GNUC__
+# define verify(R) _GL_VERIFY (R, "verify (" #R ")")
+#else
+/* PGI barfs if R is long.  Play it safe.  */
+# define verify(R) _GL_VERIFY (R, "verify (...)")
+#endif
 
 #ifndef __has_builtin
 # define __has_builtin(x) 0
@@ -263,7 +268,7 @@ template <int w>
 # define assume(R) ((R) ? (void) 0 : __builtin_unreachable ())
 #elif 1200 <= _MSC_VER
 # define assume(R) __assume (R)
-#elif (defined lint \
+#elif ((defined GCC_LINT || defined lint) \
        && (__has_builtin (__builtin_trap) \
            || 3 < __GNUC__ + (3 < __GNUC_MINOR__ + (4 <= __GNUC_PATCHLEVEL__))))
   /* Doing it this way helps various packages when configured with
@@ -271,7 +276,8 @@ template <int w>
      when 'assume' silences warnings even with older GCCs.  */
 # define assume(R) ((R) ? (void) 0 : __builtin_trap ())
 #else
-# define assume(R) ((void) (0 && (R)))
+  /* Some tools grok NOTREACHED, e.g., Oracle Studio 12.6.  */
+# define assume(R) ((R) ? (void) 0 : /*NOTREACHED*/ (void) 0)
 #endif
 
 /* @assert.h omit end@  */
diff --git a/lib/vsnprintf.c b/lib/vsnprintf.c
new file mode 100644 (file)
index 0000000..e11ab6c
--- /dev/null
@@ -0,0 +1,70 @@
+/* Formatted output to strings.
+   Copyright (C) 2004, 2006-2018 Free Software Foundation, Inc.
+   Written by Simon Josefsson and Yoann Vandoorselaere <yoann@prelude-ids.org>.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, 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 <https://www.gnu.org/licenses/>.  */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+/* Specification.  */
+#include <stdio.h>
+
+#include <errno.h>
+#include <limits.h>
+#include <stdarg.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "vasnprintf.h"
+
+/* Print formatted output to string STR.  Similar to vsprintf, but
+   additional length SIZE limit how much is written into STR.  Returns
+   string length of formatted string (which may be larger than SIZE).
+   STR may be NULL, in which case nothing will be written.  On error,
+   return a negative value.  */
+int
+vsnprintf (char *str, size_t size, const char *format, va_list args)
+{
+  char *output;
+  size_t len;
+  size_t lenbuf = size;
+
+  output = vasnprintf (str, &lenbuf, format, args);
+  len = lenbuf;
+
+  if (!output)
+    return -1;
+
+  if (output != str)
+    {
+      if (size)
+        {
+          size_t pruned_len = (len < size ? len : size - 1);
+          memcpy (str, output, pruned_len);
+          str[pruned_len] = '\0';
+        }
+
+      free (output);
+    }
+
+  if (len > INT_MAX)
+    {
+      errno = EOVERFLOW;
+      return -1;
+    }
+
+  return len;
+}
similarity index 59%
rename from src/libs/gnulib/build-aux/snippet/warn-on-use.h
rename to lib/warn-on-use.h
index ae0515c..72d67cc 100644 (file)
@@ -1,18 +1,18 @@
 /* A C macro for emitting warnings if a function is used.
-   Copyright (C) 2010-2014 Free Software Foundation, Inc.
+   Copyright (C) 2010-2018 Free Software Foundation, Inc.
 
    This program is free software: you can redistribute it and/or modify it
-   under the terms of the GNU Lesser General Public License as published
-   by the Free Software Foundation; either version 2 of the License, or
+   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
-   Lesser General Public License for more details.
+   General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
 
 /* _GL_WARN_ON_USE (function, "literal string") issues a declaration
    for FUNCTION which will then trigger a compiler warning containing
    supported by the compiler.  If the compiler does not support this
    feature, the macro expands to an unused extern declaration.
 
-   This macro is useful for marking a function as a potential
+   _GL_WARN_ON_USE_ATTRIBUTE ("literal string") expands to the
+   attribute used in _GL_WARN_ON_USE.  If the compiler does not support
+   this feature, it expands to empty.
+
+   These macros are useful for marking a function as a potential
    portability trap, with the intent that "literal string" include
    instructions on the replacement function that should be used
-   instead.  However, one of the reasons that a function is a
-   portability trap is if it has the wrong signature.  Declaring
-   FUNCTION with a different signature in C is a compilation error, so
-   this macro must use the same type as any existing declaration so
-   that programs that avoid the problematic FUNCTION do not fail to
-   compile merely because they included a header that poisoned the
-   function.  But this implies that _GL_WARN_ON_USE is only safe to
-   use if FUNCTION is known to already have a declaration.  Use of
-   this macro implies that there must not be any other macro hiding
-   the declaration of FUNCTION; but undefining FUNCTION first is part
-   of the poisoning process anyway (although for symbols that are
-   provided only via a macro, the result is a compilation error rather
-   than a warning containing "literal string").  Also note that in
-   C++, it is only safe to use if FUNCTION has no overloads.
+   instead.
+   _GL_WARN_ON_USE is for functions with 'extern' linkage.
+   _GL_WARN_ON_USE_ATTRIBUTE is for functions with 'static' or 'inline'
+   linkage.
+
+   However, one of the reasons that a function is a portability trap is
+   if it has the wrong signature.  Declaring FUNCTION with a different
+   signature in C is a compilation error, so this macro must use the
+   same type as any existing declaration so that programs that avoid
+   the problematic FUNCTION do not fail to compile merely because they
+   included a header that poisoned the function.  But this implies that
+   _GL_WARN_ON_USE is only safe to use if FUNCTION is known to already
+   have a declaration.  Use of this macro implies that there must not
+   be any other macro hiding the declaration of FUNCTION; but
+   undefining FUNCTION first is part of the poisoning process anyway
+   (although for symbols that are provided only via a macro, the result
+   is a compilation error rather than a warning containing
+   "literal string").  Also note that in C++, it is only safe to use if
+   FUNCTION has no overloads.
 
    For an example, it is possible to poison 'getline' by:
    - adding a call to gl_WARN_ON_USE_PREPARE([[#include <stdio.h>]],
    (less common usage, like &environ, will cause a compilation error
    rather than issue the nice warning, but the end result of informing
    the developer about their portability problem is still achieved):
-   #if HAVE_RAW_DECL_ENVIRON
-   static char ***rpl_environ (void) { return &environ; }
-   _GL_WARN_ON_USE (rpl_environ, "environ is not always properly declared");
-   # undef environ
-   # define environ (*rpl_environ ())
-   #endif
+     #if HAVE_RAW_DECL_ENVIRON
+     static char ***
+     rpl_environ (void) { return &environ; }
+     _GL_WARN_ON_USE (rpl_environ, "environ is not always properly declared");
+     # undef environ
+     # define environ (*rpl_environ ())
+     #endif
+   or better (avoiding contradictory use of 'static' and 'extern'):
+     #if HAVE_RAW_DECL_ENVIRON
+     static char ***
+     _GL_WARN_ON_USE_ATTRIBUTE ("environ is not always properly declared")
+     rpl_environ (void) { return &environ; }
+     # undef environ
+     # define environ (*rpl_environ ())
+     #endif
    */
 #ifndef _GL_WARN_ON_USE
 
 /* A compiler attribute is available in gcc versions 4.3.0 and later.  */
 #  define _GL_WARN_ON_USE(function, message) \
 extern __typeof__ (function) function __attribute__ ((__warning__ (message)))
+#  define _GL_WARN_ON_USE_ATTRIBUTE(message) \
+  __attribute__ ((__warning__ (message)))
 # elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
 /* Verify the existence of the function.  */
 #  define _GL_WARN_ON_USE(function, message) \
 extern __typeof__ (function) function
+#  define _GL_WARN_ON_USE_ATTRIBUTE(message)
 # else /* Unsupported.  */
 #  define _GL_WARN_ON_USE(function, message) \
 _GL_WARN_EXTERN_C int _gl_warn_on_use
+#  define _GL_WARN_ON_USE_ATTRIBUTE(message)
 # endif
 #endif
 
similarity index 92%
rename from src/libs/gnulib/lib/wchar.in.h
rename to lib/wchar.in.h
index a512d58..51a5dda 100644 (file)
@@ -1,10 +1,10 @@
 /* A substitute for ISO C99 <wchar.h>, for platforms that have issues.
 
-   Copyright (C) 2007-2014 Free Software Foundation, Inc.
+   Copyright (C) 2007-2018 Free Software Foundation, Inc.
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
+   the Free Software Foundation; either version 3, or (at your option)
    any later version.
 
    This program is distributed in the hope that it will be useful,
@@ -13,7 +13,7 @@
    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 <http://www.gnu.org/licenses/>.  */
+   along with this program; if not, see <https://www.gnu.org/licenses/>.  */
 
 /* Written by Eric Blake.  */
 
 #endif
 @PRAGMA_COLUMNS@
 
-#if defined __need_mbstate_t || defined __need_wint_t || (defined __hpux && ((defined _INTTYPES_INCLUDED && !defined strtoimax) || defined _GL_JUST_INCLUDE_SYSTEM_WCHAR_H)) || defined _GL_ALREADY_INCLUDING_WCHAR_H
+#if (((defined __need_mbstate_t || defined __need_wint_t)               \
+      && !defined __MINGW32__)                                          \
+     || (defined __hpux                                                 \
+         && ((defined _INTTYPES_INCLUDED && !defined strtoimax)         \
+             || defined _GL_JUST_INCLUDE_SYSTEM_WCHAR_H))               \
+     || (defined __MINGW32__ && defined __STRING_H_SOURCED__)           \
+     || defined _GL_ALREADY_INCLUDING_WCHAR_H)
 /* Special invocation convention:
-   - Inside glibc and uClibc header files.
+   - Inside glibc and uClibc header files, but not MinGW.
    - On HP-UX 11.00 we have a sequence of nested includes
      <wchar.h> -> <stdlib.h> -> <stdint.h>, and the latter includes <wchar.h>,
      once indirectly <stdint.h> -> <sys/types.h> -> <inttypes.h> -> <wchar.h>
      and once directly.  In both situations 'wint_t' is not yet defined,
      therefore we cannot provide the function overrides; instead include only
      the system's <wchar.h>.
+   - With MinGW 3.22, when <string.h> includes <wchar.h>, only some part of
+     <wchar.h> is actually processed, and that doesn't include 'mbstate_t'.
    - On IRIX 6.5, similarly, we have an include <wchar.h> -> <wctype.h>, and
      the latter includes <wchar.h>.  But here, we have no way to detect whether
      <wctype.h> is completely included or is still being included.  */
 #  define WEOF -1
 # endif
 #else
-/* MSVC defines wint_t as 'unsigned short' in <crtdefs.h>.
-   This is too small: ISO C 99 section 7.24.1.(2) says that wint_t must be
-   "unchanged by default argument promotions".  Override it.  */
-# if defined _MSC_VER
+/* mingw and MSVC define wint_t as 'unsigned short' in <crtdefs.h> or
+   <stddef.h>.  This is too small: ISO C 99 section 7.24.1.(2) says that
+   wint_t must be "unchanged by default argument promotions".  Override it.  */
+# if @GNULIB_OVERRIDES_WINT_T@
 #  if !GNULIB_defined_wint_t
-#   include <crtdefs.h>
+#   if @HAVE_CRTDEFS_H@
+#    include <crtdefs.h>
+#   else
+#    include <stddef.h>
+#   endif
 typedef unsigned int rpl_wint_t;
 #   undef wint_t
 #   define wint_t rpl_wint_t
@@ -1023,6 +1035,38 @@ _GL_WARN_ON_USE (wcswidth, "wcswidth is unportable - "
 #endif
 
 
+/* Convert *TP to a date and time wide string.  See
+   <http://pubs.opengroup.org/onlinepubs/9699919799/functions/wcsftime.html>.  */
+#if @GNULIB_WCSFTIME@
+# if @REPLACE_WCSFTIME@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef wcsftime
+#   define wcsftime rpl_wcsftime
+#  endif
+_GL_FUNCDECL_RPL (wcsftime, size_t, (wchar_t *__buf, size_t __bufsize,
+                                     const wchar_t *__fmt, const struct tm *__tp)
+                                    _GL_ARG_NONNULL ((1, 3, 4)));
+_GL_CXXALIAS_RPL (wcsftime, size_t, (wchar_t *__buf, size_t __bufsize,
+                                     const wchar_t *__fmt, const struct tm *__tp));
+# else
+#  if !@HAVE_WCSFTIME@
+_GL_FUNCDECL_SYS (wcsftime, size_t, (wchar_t *__buf, size_t __bufsize,
+                                     const wchar_t *__fmt, const struct tm *__tp)
+                                    _GL_ARG_NONNULL ((1, 3, 4)));
+#  endif
+_GL_CXXALIAS_SYS (wcsftime, size_t, (wchar_t *__buf, size_t __bufsize,
+                                     const wchar_t *__fmt, const struct tm *__tp));
+# endif
+_GL_CXXALIASWARN (wcsftime);
+#elif defined GNULIB_POSIXCHECK
+# undef wcsftime
+# if HAVE_RAW_DECL_WCSFTIME
+_GL_WARN_ON_USE (wcsftime, "wcsftime is unportable - "
+                 "use gnulib module wcsftime for portability");
+# endif
+#endif
+
+
 #endif /* _@GUARD_PREFIX@_WCHAR_H */
 #endif /* _@GUARD_PREFIX@_WCHAR_H */
 #endif
similarity index 91%
rename from src/libs/gnulib/lib/wctype.in.h
rename to lib/wctype.in.h
index e8d097a..3c6e5f2 100644 (file)
@@ -1,10 +1,10 @@
 /* A substitute for ISO C99 <wctype.h>, for platforms that lack it.
 
-   Copyright (C) 2006-2014 Free Software Foundation, Inc.
+   Copyright (C) 2006-2018 Free Software Foundation, Inc.
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
+   the Free Software Foundation; either version 3, or (at your option)
    any later version.
 
    This program is distributed in the hope that it will be useful,
@@ -13,7 +13,7 @@
    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 <http://www.gnu.org/licenses/>.  */
+   along with this program; if not, see <https://www.gnu.org/licenses/>.  */
 
 /* Written by Bruno Haible and Paul Eggert.  */
 
  * wctrans_t, and wctype_t are not yet implemented.
  */
 
-#ifndef _@GUARD_PREFIX@_WCTYPE_H
-
 #if __GNUC__ >= 3
 @PRAGMA_SYSTEM_HEADER@
 #endif
 @PRAGMA_COLUMNS@
 
+#if (defined __MINGW32__ && defined __CTYPE_H_SOURCED__)
 
-/*
- * XXX: As soon as groff uses gnulib in a saner way (i.e., only a single
- *      `config.h' file for the whole package) this file should be replaced
- *      with an unpatched version, not containing the next #include line.
- */
-#include "../config.h"
+/* Special invocation convention:
+   - With MinGW 3.22, when <ctype.h> includes <wctype.h>, only some part of
+     <wctype.h> is being processed, which doesn't include the idempotency
+     guard.   */
+
+#@INCLUDE_NEXT@ @NEXT_WCTYPE_H@
 
+#else
+/* Normal invocation convention.  */
+
+#ifndef _@GUARD_PREFIX@_WCTYPE_H
 
 #if @HAVE_WINT_T@
 /* Solaris 2.5 has a bug: <wchar.h> must be included before <wctype.h>.
 # include <wchar.h>
 #endif
 
-/* mingw has declarations of towupper and towlower in <ctype.h> as
-   well <wctype.h>.  Include <ctype.h> in advance to avoid rpl_ prefix
-   being added to the declarations.  */
-#ifdef __MINGW32__
+/* Native Windows (mingw, MSVC) have declarations of towupper, towlower, and
+   isw* functions in <ctype.h>, <wchar.h> as well as in <wctype.h>.  Include
+   <ctype.h>, <wchar.h> in advance to avoid rpl_ prefix being added to the
+   declarations.  */
+#if defined _WIN32 && ! defined __CYGWIN__
 # include <ctype.h>
+# include <wchar.h>
 #endif
 
 /* Include the original <wctype.h> if it exists.
@@ -102,12 +107,16 @@ _GL_INLINE_HEADER_BEGIN
 #  define WEOF -1
 # endif
 #else
-/* MSVC defines wint_t as 'unsigned short' in <crtdefs.h>.
-   This is too small: ISO C 99 section 7.24.1.(2) says that wint_t must be
-   "unchanged by default argument promotions".  Override it.  */
-# if defined _MSC_VER
+/* mingw and MSVC define wint_t as 'unsigned short' in <crtdefs.h> or
+   <stddef.h>.  This is too small: ISO C 99 section 7.24.1.(2) says that
+   wint_t must be "unchanged by default argument promotions".  Override it.  */
+# if @GNULIB_OVERRIDES_WINT_T@
 #  if !GNULIB_defined_wint_t
-#   include <crtdefs.h>
+#   if @HAVE_CRTDEFS_H@
+#    include <crtdefs.h>
+#   else
+#    include <stddef.h>
+#   endif
 typedef unsigned int rpl_wint_t;
 #   undef wint_t
 #   define wint_t rpl_wint_t
@@ -521,3 +530,4 @@ _GL_INLINE_HEADER_END
 
 #endif /* _@GUARD_PREFIX@_WCTYPE_H */
 #endif /* _@GUARD_PREFIX@_WCTYPE_H */
+#endif
similarity index 59%
rename from src/libs/gnulib/lib/wcwidth.c
rename to lib/wcwidth.c
index d7837bb..d33b6a9 100644 (file)
@@ -1,5 +1,5 @@
 /* Determine the number of screen columns needed for a character.
-   Copyright (C) 2006-2007, 2010-2014 Free Software Foundation, Inc.
+   Copyright (C) 2006-2007, 2010-2018 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
@@ -12,7 +12,7 @@
    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 <http://www.gnu.org/licenses/>.  */
+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
 
 #include <config.h>
 
 #include "streq.h"
 #include "uniwidth.h"
 
+/* Returns 1 if the current locale is an UTF-8 locale, 0 otherwise.  */
+static inline int
+is_locale_utf8 (void)
+{
+  const char *encoding = locale_charset ();
+  return STREQ_OPT (encoding, "UTF-8", 'U', 'T', 'F', '-', '8', 0, 0, 0, 0);
+}
+
+#if GNULIB_WCHAR_SINGLE
+/* When we know that the locale does not change, provide a speedup by
+   caching the value of is_locale_utf8.  */
+static int cached_is_locale_utf8 = -1;
+static inline int
+is_locale_utf8_cached (void)
+{
+  if (cached_is_locale_utf8 < 0)
+    cached_is_locale_utf8 = is_locale_utf8 ();
+  return cached_is_locale_utf8;
+}
+#else
+/* By default, don't make assumptions, hence no caching.  */
+# define is_locale_utf8_cached is_locale_utf8
+#endif
+
 int
 wcwidth (wchar_t wc)
 #undef wcwidth
 {
   /* In UTF-8 locales, use a Unicode aware width function.  */
-  const char *encoding = locale_charset ();
-  if (STREQ_OPT (encoding, "UTF-8", 'U', 'T', 'F', '-', '8', 0, 0, 0 ,0))
+  if (is_locale_utf8_cached ())
     {
       /* We assume that in a UTF-8 locale, a wide character is the same as a
          Unicode character.  */
-      return uc_width (wc, encoding);
+      return uc_width (wc, "UTF-8");
     }
   else
     {
diff --git a/lib/xsize.c b/lib/xsize.c
new file mode 100644 (file)
index 0000000..4b4914c
--- /dev/null
@@ -0,0 +1,3 @@
+#include <config.h>
+#define XSIZE_INLINE _GL_EXTERN_INLINE
+#include "xsize.h"
diff --git a/lib/xsize.h b/lib/xsize.h
new file mode 100644 (file)
index 0000000..8aeb3b7
--- /dev/null
@@ -0,0 +1,117 @@
+/* xsize.h -- Checked size_t computations.
+
+   Copyright (C) 2003, 2008-2018 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, 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 <https://www.gnu.org/licenses/>.  */
+
+#ifndef _XSIZE_H
+#define _XSIZE_H
+
+/* Get size_t.  */
+#include <stddef.h>
+
+/* Get SIZE_MAX.  */
+#include <limits.h>
+#if HAVE_STDINT_H
+# include <stdint.h>
+#endif
+
+#ifndef _GL_INLINE_HEADER_BEGIN
+ #error "Please include config.h first."
+#endif
+_GL_INLINE_HEADER_BEGIN
+#ifndef XSIZE_INLINE
+# define XSIZE_INLINE _GL_INLINE
+#endif
+
+/* The size of memory objects is often computed through expressions of
+   type size_t. Example:
+      void* p = malloc (header_size + n * element_size).
+   These computations can lead to overflow.  When this happens, malloc()
+   returns a piece of memory that is way too small, and the program then
+   crashes while attempting to fill the memory.
+   To avoid this, the functions and macros in this file check for overflow.
+   The convention is that SIZE_MAX represents overflow.
+   malloc (SIZE_MAX) is not guaranteed to fail -- think of a malloc
+   implementation that uses mmap --, it's recommended to use size_overflow_p()
+   or size_in_bounds_p() before invoking malloc().
+   The example thus becomes:
+      size_t size = xsum (header_size, xtimes (n, element_size));
+      void *p = (size_in_bounds_p (size) ? malloc (size) : NULL);
+*/
+
+/* Convert an arbitrary value >= 0 to type size_t.  */
+#define xcast_size_t(N) \
+  ((N) <= SIZE_MAX ? (size_t) (N) : SIZE_MAX)
+
+/* Sum of two sizes, with overflow check.  */
+XSIZE_INLINE size_t
+#if __GNUC__ >= 3
+__attribute__ ((__pure__))
+#endif
+xsum (size_t size1, size_t size2)
+{
+  size_t sum = size1 + size2;
+  return (sum >= size1 ? sum : SIZE_MAX);
+}
+
+/* Sum of three sizes, with overflow check.  */
+XSIZE_INLINE size_t
+#if __GNUC__ >= 3
+__attribute__ ((__pure__))
+#endif
+xsum3 (size_t size1, size_t size2, size_t size3)
+{
+  return xsum (xsum (size1, size2), size3);
+}
+
+/* Sum of four sizes, with overflow check.  */
+XSIZE_INLINE size_t
+#if __GNUC__ >= 3
+__attribute__ ((__pure__))
+#endif
+xsum4 (size_t size1, size_t size2, size_t size3, size_t size4)
+{
+  return xsum (xsum (xsum (size1, size2), size3), size4);
+}
+
+/* Maximum of two sizes, with overflow check.  */
+XSIZE_INLINE size_t
+#if __GNUC__ >= 3
+__attribute__ ((__pure__))
+#endif
+xmax (size_t size1, size_t size2)
+{
+  /* No explicit check is needed here, because for any n:
+     max (SIZE_MAX, n) == SIZE_MAX and max (n, SIZE_MAX) == SIZE_MAX.  */
+  return (size1 >= size2 ? size1 : size2);
+}
+
+/* Multiplication of a count with an element size, with overflow check.
+   The count must be >= 0 and the element size must be > 0.
+   This is a macro, not a function, so that it works correctly even
+   when N is of a wider type and N > SIZE_MAX.  */
+#define xtimes(N, ELSIZE) \
+  ((N) <= SIZE_MAX / (ELSIZE) ? (size_t) (N) * (ELSIZE) : SIZE_MAX)
+
+/* Check for overflow.  */
+#define size_overflow_p(SIZE) \
+  ((SIZE) == SIZE_MAX)
+/* Check against overflow.  */
+#define size_in_bounds_p(SIZE) \
+  ((SIZE) != SIZE_MAX)
+
+_GL_INLINE_HEADER_END
+
+#endif /* _XSIZE_H */
index d7de8d6..4f09722 100644 (file)
@@ -1,5 +1,5 @@
 # codeset.m4 serial 5 (gettext-0.18.2)
-dnl Copyright (C) 2000-2002, 2006, 2008-2014 Free Software Foundation, Inc.
+dnl Copyright (C) 2000-2018 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
 dnl with or without modifications, as long as this notice is preserved.
index 43c9312..b0605e4 100644 (file)
@@ -1,5 +1,5 @@
 # fcntl-o.m4 serial 4
-dnl Copyright (C) 2006, 2009-2014 Free Software Foundation, Inc.
+dnl Copyright (C) 2006-2018 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
 dnl with or without modifications, as long as this notice is preserved.
index ab58b71..818b49f 100644 (file)
@@ -1,6 +1,5 @@
 # glibc21.m4 serial 5
-dnl Copyright (C) 2000-2002, 2004, 2008, 2010-2014 Free Software Foundation,
-dnl Inc.
+dnl Copyright (C) 2000-2018 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
 dnl with or without modifications, as long as this notice is preserved.
index 28ff570..5343f22 100644 (file)
@@ -1,5 +1,5 @@
 # Autoconf macros for groff.
-# Copyright (C) 1989-201 Free Software Foundation, Inc.
+# Copyright (C) 1989-2018 Free Software Foundation, Inc.
 #
 # This file is part of groff.
 #
@@ -14,7 +14,7 @@
 # for more details.
 #
 # You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 AC_DEFUN([GROFF_PRINT],
   [if test -z "$PSPRINT"; then
@@ -49,11 +49,18 @@ AC_DEFUN([GROFF_PRINT],
    AC_SUBST([DVIPRINT])
    AC_MSG_RESULT([$DVIPRINT])])
 
-# Bison generated parsers have problems with C++ compilers other than g++.
-# So byacc is preferred over bison.
+
+# Bison generated parsers have problems with C++ compilers other than
+# g++.  So byacc is preferred over bison.  If no 'yacc' program is
+# available, we issue an error only if building from the source as in
+# distributed tarball files generated by 'yacc' are already present.
 
 AC_DEFUN([GROFF_PROG_YACC],
-  [AC_CHECK_PROGS([YACC], [byacc 'bison -y'], [yacc])])
+  [AC_CHECK_PROGS([YACC], [byacc 'bison -y' yacc], [missing])
+  if test "x$YACC" = "xmissing" -a -d ${srcdir}/.git; then
+    AC_MSG_ERROR([Could not find 'yacc' or 'bison'], 1)
+  fi
+  ])
 
 
 # We need Perl 5.6.1 or newer.
@@ -74,9 +81,9 @@ AC_DEFUN([GROFF_DOC_CHECK],
   [AC_ARG_WITH([doc],
     [AS_HELP_STRING([--with-doc[[=TYPE]]],
       [choose which manuals (beside man pages) are desirable. \
-       TYPE can be `yes' or `no', or a comma-separated list of \
-       one or multiple of `html', `info', `other', `pdf', and \
-       `examples', to restrict what is produced])],
+       TYPE can be 'yes' or 'no', or a comma-separated list of \
+       one or multiple of 'html', 'info', 'other', 'pdf', and \
+       'examples', to restrict what is produced])],
     [doc="$withval"],
     [doc=yes])
   test "x$doc" = xno && doc=''
@@ -106,7 +113,7 @@ AC_DEFUN([GROFF_DOC_CHECK],
       test "x$i" = xother    && { docadd_other=yes; continue; }
       test "x$i" = xpdf      && { docadd_pdf=yes; continue; }
       test "x$i" = xexamples && { docadd_examples=yes; continue; }
-      AC_MSG_WARN([Invalid `--with-doc' argument:] $i)
+      AC_MSG_WARN([Invalid '--with-doc' argument:] $i)
     done
   fi
   if test $docadd_html = yes; then
@@ -148,11 +155,15 @@ AC_DEFUN([GROFF_DOC_CHECK],
 # We need makeinfo 4.8 or newer.
 
 AC_DEFUN([GROFF_MAKEINFO],
-  [if test $docadd_info = yes; then
+  # By default automake will set MAKEINFO to MAKEINFO = ${SHELL} <top
+  # src dir>/build-aux/missing makeinfo.As we need a more precise
+  # check of makeinfo version, we don't use it.
+  [MAKEINFO=
+   if test $docadd_info = yes; then
      missing=
      AC_CHECK_PROG([MAKEINFO], [makeinfo], [makeinfo])
      if test -z "$MAKEINFO"; then
-       missing="\`makeinfo' is missing."
+       missing="'makeinfo' is missing."
      else
        AC_MSG_CHECKING([for makeinfo version])
        # We need an additional level of quoting to make sed's regexps work.
@@ -165,7 +176,7 @@ AC_DEFUN([GROFF_MAKEINFO],
        makeinfo_version_numeric=`
          expr ${makeinfo_version_major}000 \+ ${makeinfo_version_minor}`
        if test $makeinfo_version_numeric -lt 4008; then
-         missing="\`makeinfo' is too old."
+         missing="'makeinfo' is too old."
        fi
      fi
 
@@ -173,13 +184,13 @@ AC_DEFUN([GROFF_MAKEINFO],
        infofile=doc/groff.info
        test -f ${infofile} || infofile=${srcdir}/${infofile}
        if test ! -f ${infofile} \
-       || test ${srcdir}/doc/groff.texinfo -nt ${infofile}; then
+       || test ${srcdir}/doc/groff.texi -nt ${infofile}; then
         AC_MSG_ERROR($missing
-[Get the `texinfo' package version 4.8 or newer.])
+[Get the 'texinfo' package version 4.8 or newer.])
        else
         AC_MSG_WARN($missing
-[Get the `texinfo' package version 4.8 or newer if you want to convert
-`groff.texinfo' into a PDF or HTML document.])
+[Get the 'texinfo' package version 4.8 or newer if you want to convert
+'groff.texi' into a PDF or HTML document.])
        fi
      fi
 
@@ -195,8 +206,17 @@ AC_DEFUN([GROFF_MAKEINFO],
    AC_SUBST([MAKEINFO])
    AC_SUBST([make_infodoc])
    AC_SUBST([make_install_infodoc])
-   AC_SUBST([make_uninstall_infodoc])])
+   AC_SUBST([make_uninstall_infodoc])
+   AC_SUBST([makeinfo_version_numeric])])
 
+AC_DEFUN([GROFF_TEXI2DVI],
+  [AC_CHECK_PROG([PROG_TEXI2DVI], [texi2dvi], [found], [missing])
+   if test "x$PROG_TEXI2DVI" = "xfound"; then
+      groff_have_texi2dvi=yes;
+   else
+      groff_have_texi2dvi=no;
+   fi
+   ])
 
 # The following programs are needed for grohtml.
 
@@ -214,10 +234,10 @@ AC_DEFUN([GROFF_HTML_PROGRAMS],
      [pnmcut pnmcrop pnmtopng psselect pnmtops],
      [AC_CHECK_PROG(groff_prog, groff_prog, [found], [missing])
       if test $[]groff_prog = missing; then
-       missing="$missing \`groff_prog'"
+       missing="$missing 'groff_prog'"
       fi;])
 
-   test "$GHOSTSCRIPT" = "missing" && missing="$missing \`gs'"
+   test "$GHOSTSCRIPT" = "missing" && missing="$missing 'gs'"
 
    if test -z "$missing"; then
      if test $docadd_html = yes; then
@@ -280,8 +300,8 @@ AC_DEFUN([GROFF_PDFDOC_PROGRAMS],
    AC_REQUIRE([GROFF_GHOSTSCRIPT_PATH])
 
    missing=""
-   test "$AWK" = missing && missing="\`awk'"
-   test "$GHOSTSCRIPT" = missing && missing="$missing \`gs'"
+   test "$AWK" = missing && missing="'awk'"
+   test "$GHOSTSCRIPT" = missing && missing="$missing 'gs'"
    if test -z "$missing"; then
      if test $docadd_pdf = yes; then
        make_pdfdoc=pdfdoc
@@ -318,6 +338,69 @@ AC_DEFUN([GROFF_PDFDOC_PROGRAMS],
    AC_SUBST([make_install_pdfexamples])
    AC_SUBST([make_uninstall_pdfexamples])])
 
+# Option to configure path to URW fonts
+AC_DEFUN([GROFF_URW_FONTS_PATH],
+   [AC_ARG_WITH([urw-fonts-dir],
+     [AS_HELP_STRING([--with-urw-fonts-dir=DIR],
+       [Search for URW fonts in this directory])],
+     [urwfontsdir="$withval"])
+   AC_SUBST(urwfontsdir)])
+
+# Check if URW fonts are available, either in the paths given by `gs
+# -h', in /usr/share/fonts/type1/gsfonts/ ,
+# /opt/local/share/fonts/urw-fonts (where font/devpdf/Foundry.in
+# expect them), or in the custom path passed to configure.
+AC_DEFUN([GROFF_URW_FONTS],
+  [AC_MSG_CHECKING([whether URW fonts in pfb format are available])
+   AC_REQUIRE([GROFF_AWK_PATH])
+   AC_REQUIRE([GROFF_GHOSTSCRIPT_PATH])
+   groff_have_urw_fonts=no
+   if test "$AWK" = "missing" -o "$GHOSTSCRIPT" = "missing"; then
+     AC_MSG_WARN([awk and gs are required, can't look for URW fonts])
+   else
+     _list_paths=`$GHOSTSCRIPT -h | $AWK 'BEGIN { found = 0 } /Search path:/ { found = 1 } /^[ ]*\// { print $'0' }'| tr : ' '`
+     _list_paths="$_list_paths /usr/share/fonts/type1/gsfonts/ \
+               /opt/local/share/fonts/urw-fonts/"
+     if test -n "$urwfontsdir"; then
+       _list_paths="$ _list_paths $urwfontsdir"
+     fi
+     for k in $_list_paths; do
+       if test -f $k/a010013l.pfb; then
+         AC_MSG_RESULT([found in $k])
+         groff_have_urw_fonts=yes
+         break
+       fi
+     done
+   fi
+   if test $groff_have_urw_fonts = no; then
+     AC_MSG_RESULT([no])
+   fi
+   AC_SUBST([groff_have_urw_fonts])
+   ])
+
+# Warning if URW fonts were not found
+AC_DEFUN([GROFF_URW_FONTS_CHECK],
+  [if test "$groff_have_urw_fonts" = no; then
+  AC_MSG_NOTICE([
+  No URW fonts in .pfb format were found on your system, URW fonts
+  generation for 'devpdf' will not work properly.  These fonts can be
+  downloaded here:
+
+    http://downloads.ghostscript.com/public/fonts/urw-base35-v1.10.zip
+
+  By default groff will search these fonts in the paths given by `gs
+  -h' and in these 2 default directories:
+  '/usr/share/fonts/type1/gsfonts/' and
+  '/opt/local/share/fonts/urw-fonts/' (paths used by
+  font/devpdf/Foundry.in).  You can also pass the option
+  '--with-urw-fonts-dir=DIR' to 'configure' to set a custom path.  You
+  would need to re-run the 'configure' script after installing these
+  fonts.
+  
+  ])
+  fi
+  ])
+
 
 # Check whether pnmtops can handle the -nosetpage option.
 
@@ -333,7 +416,7 @@ AC_DEFUN([GROFF_PNMTOPS_NOSETPAGE],
    AC_SUBST([pnmtops_nosetpage])])
 
 
-# Check location of `gs'; allow `--with-gs=PROG' option to override.
+# Check location of 'gs'; allow '--with-gs=PROG' option to override.
 
 AC_DEFUN([GROFF_GHOSTSCRIPT_PATH],
   [AC_REQUIRE([GROFF_GHOSTSCRIPT_PREFS])
@@ -344,7 +427,7 @@ AC_DEFUN([GROFF_GHOSTSCRIPT_PATH],
      [AC_CHECK_TOOLS(GHOSTSCRIPT, [$ALT_GHOSTSCRIPT_PROGS], [missing])])
    test "$GHOSTSCRIPT" = "no" && GHOSTSCRIPT=missing])
 
-# Preferences for choice of `gs' program...
+# Preferences for choice of 'gs' program...
 # (allow --with-alt-gs="LIST" to override).
 
 AC_DEFUN([GROFF_GHOSTSCRIPT_PREFS],
@@ -356,7 +439,7 @@ AC_DEFUN([GROFF_GHOSTSCRIPT_PREFS],
    AC_SUBST([ALT_GHOSTSCRIPT_PROGS])])
 
 
-# Check location of `awk'; allow `--with-awk=PROG' option to override.
+# Check location of 'awk'; allow '--with-awk=PROG' option to override.
 
 AC_DEFUN([GROFF_AWK_PATH],
   [AC_REQUIRE([GROFF_AWK_PREFS])
@@ -368,7 +451,7 @@ AC_DEFUN([GROFF_AWK_PATH],
    test "$AWK" = "no" && AWK=missing])
 
 
-# Preferences for choice of `awk' program; allow --with-alt-awk="LIST"
+# Preferences for choice of 'awk' program; allow --with-alt-awk="LIST"
 # to override.
 
 AC_DEFUN([GROFF_AWK_PREFS],
@@ -487,12 +570,12 @@ int i;
      AC_MSG_RESULT([void])
      AC_DEFINE([RETSIGTYPE], [void],
        [Define as the return type of signal handlers
-       (`int' or `void').])
+       ('int' or 'void').])
    else
      AC_MSG_RESULT([int])
      AC_DEFINE([RETSIGTYPE], [int],
        [Define as the return type of signal handlers
-       (`int' or `void').])
+       ('int' or 'void').])
    fi])
 
 
@@ -643,7 +726,7 @@ delete [] p;
      [AC_MSG_RESULT([yes])],
      [AC_MSG_RESULT([no])
       AC_DEFINE([ARRAY_DELETE_NEEDS_SIZE], [1],
-       [Define if your C++ doesn't understand `delete []'.])])
+       [Define if your C++ doesn't understand 'delete []'.])])
    AC_LANG_POP([C++])])
 
 AC_DEFUN([GROFF_TRADITIONAL_CPP],
@@ -711,15 +794,18 @@ AC_DEFUN([GROFF_PAGE],
   [AC_MSG_CHECKING([default paper size])
    groff_prefix=$prefix
    test "x$prefix" = "xNONE" && groff_prefix=$ac_default_prefix
+   if test -z "$PAGE" && test -r /etc/papersize; then
+     PAGE=`cat /etc/papersize | sed -e 's/^[ ]*#.*//g' | tr -d "\n" | awk '{ print $1 }'`
+   fi
    if test -z "$PAGE"; then
      descfile=
-     if test -r $groff_prefix/share/groff/font/devps/DESC; then
+     if test -r "$groff_prefix"/share/groff/font/devps/DESC; then
        descfile=$groff_prefix/share/groff/font/devps/DESC
-     elif test -r $groff_prefix/lib/groff/font/devps/DESC; then
+     elif test -r "$groff_prefix"/lib/groff/font/devps/DESC; then
        descfile=$groff_prefix/lib/groff/font/devps/DESC
      else
-       for f in $groff_prefix/share/groff/*/font/devps/DESC; do
-        if test -r $f; then
+       for f in "$groff_prefix"/share/groff/*/font/devps/DESC; do
+        if test -r "$f"; then
           descfile=$f
           break
         fi
@@ -727,9 +813,9 @@ AC_DEFUN([GROFF_PAGE],
      fi
 
      if test -n "$descfile"; then
-       if grep ['^paperlength[  ]\+841890'] $descfile >/dev/null 2>&1; then
+       if grep ['^paperlength[  ]\+841890'] "$descfile" >/dev/null 2>&1; then
         PAGE=A4
-       elif grep ['^papersize[  ]\+[aA]4'] $descfile >/dev/null 2>&1; then
+       elif grep ['^papersize[  ]\+[aA]4'] "$descfile" >/dev/null 2>&1; then
         PAGE=A4
        fi
      fi
@@ -745,7 +831,7 @@ AC_DEFUN([GROFF_PAGE],
         dom=`(hostname) 2>/dev/null | grep '\.'`
        fi
      fi
-     # If the top-level domain is two letters and it's not `us' or `ca'
+     # If the top-level domain is two letters and it's not 'us' or 'ca'
      # then they probably use A4 paper.
      case "$dom" in
      [*.[Uu][Ss]|*.[Cc][Aa])]
@@ -902,6 +988,8 @@ AC_DEFUN([GROFF_TMAC],
    AC_SUBST([tmac_wrap])])
 
 
+# Searching if a non-GNU Troff is installed.  The built-in register
+# \n[.g] is always 1 in GNU Troff.
 AC_DEFUN([GROFF_G],
   [AC_MSG_CHECKING([for existing troff installation])
    if test "x`(echo .tm '|n(.g' | tr '|' '\\\\' | troff -z -i 2>&1) 2>/dev/null`" = x0; then
@@ -913,6 +1001,160 @@ AC_DEFUN([GROFF_G],
    fi
    AC_SUBST([g])])
 
+# Controllable groff compatibility wrappers for vendor-provided macro sets
+#
+#   Background
+#
+#     groff's configure script checks for a non-GNU system troff implementation
+#     in GROFF_G above, and uses this to rename programs that would conflict
+#     with the system *roff implementation. On such systems, groff's version of
+#     troff is installed as gtroff, groff's version of nroff is installed as
+#     gnroff, and so forth. See the ENVIRONMENT section of groff(1)'s manual
+#     page for the entry on GROFF_COMMAND_PREFIX, and the SEE ALSO section for
+#     details. The implementation of this can be found in "We use Automake's
+#     Uniform Naming Scheme" in Makefile.am, and its use of NAMEPREFIX.
+#
+#     groff's configure script also checks for vendor-provided macro sets in
+#     GROFF_TMAC above, which sets 'sys_tmac_prefix' to the location of any
+#     vendor-provided macro sets. The script then determines if any of these
+#     vendor-provided macro sets are non-GNU implementations. A space-separated
+#     list of macro sets requiring compatibility wrappers is stored in
+#     'tmac_wrap'.
+#
+#     If 'tmac_wrap' is a non-empty list, the make infrastructure will build
+#     groff compatibility wrappers in the 'tmac' directory for each mentioned
+#     macro set. These wrappers enable compatibility mode (.cp 1) and include
+#     (.so <filepath>) the vendor implementation of that macro set. The 'an'
+#     wrapper gets special treatment, by including the 'andoc.tmac' macro set,
+#     before loading the vendor implementation.
+#
+#     In groff version 1.22.3 and prior, if 'tmac_wrap' is a non-empty list at
+#     installation time (make install), the groff compatibility wrappers are
+#     installed in '<prefix>/lib/groff/site-tmac' directory (technically
+#     'systemtmacdir' in Makefile.am) as the base macro set name (example:
+#     an.tmac), and the groff implementation of these macro sets are installed
+#     with a 'g' prefix in the '<prefix>/share/groff/<version>/tmac' directory
+#     (example: gan.tmac).
+#
+#     If your system has these compatibility wrappers installed, then the
+#     command 'groff -man ...' (as an example) uses your vendor's 'an' macro
+#     set in compatibility mode, while the command 'groff -mgan ...' uses the
+#     groff implementation of the 'an' macro set.
+#
+#     With groff being the principal (but not the only) full-featured *roff
+#     implementation in use today, and most FLOSS Unix-like Operating Systems
+#     using groff as their *roff implementation, the automatic implementation
+#     of compatibility wrappers on systems having their own macro sets needs to
+#     be revisited. Most FLOSS software is now developed on systems having no
+#     other *roff implementation, so manual pages (for example) are developed
+#     and proofread on systems using groff's implementation of the 'an' macro
+#     set.
+#
+#     On systems with their own macro sets (especially 'an'), documents can be
+#     rendered incorrectly from the document author's point of view, when
+#     these compatibility mode wrappers are used. groff's own manual pages are
+#     the perfect case in point, with most not showing the principal usage line
+#     of a command, due to the use of .SY/.OP/.YS macros to display such lines.
+#
+#   Updating groff's use of compatibility mode wrappers
+#
+#     Given the above, on systems with their own (non-GNU) macro sets, groff's
+#     AUTOMATIC installation of these generated vendor compatibility wrappers
+#     as the principal implementation of a macro set for groff(1) users may not
+#     be desirable, especially if the users are principally using groff(1) to
+#     format FLOSS manual pages.
+#
+#     The '--with-compatibility-wrappers=<value>' option to 'configure' gives
+#     these systems control over the default macro set implementation in use
+#     when using the groff family of tools.
+#
+#     The supported values of the '--with-compatibility-wrappers=<value>'
+#     option are:
+#       'check'  [default] Check if system has vendor-provided non-GNU
+#                implementation of any *roff macro set. Based on that use the
+#                'yes' or 'no' value for '--with-compatibility-wrappers'. This
+#                effectively emulates prior groff releases' implementation.
+#       'yes'    Install the vendor compatibility wrappers as groff's default
+#                implementation of these macro sets. This is compatible with
+#                groff implementations up to and including version 1.22.3.
+#                Direct use of the 'yes' option is discouraged, as it will
+#                abort the configure process if no vendor-provided non-GNU
+#                macro set implementations exists.
+#       'no'     Do not install any vendor compatibility wrappers. Use the
+#                groff implementation of all macro sets as the default.
+#       'manual' Install the vendor compatibility wrappers as '<macro>-os.tmac'
+#                in the same directory as 'yes' option ('systemtmacdir').
+#                groff users can access the vendor-provided macro set via the
+#                '-m<macro>-os' option on the command line of a tool from the
+#                groff family. The naming of the option value reflects that now
+#                a manual step must be taken to use the vendor-provided
+#                implementation of the macro set. This option can safely be
+#                used on systems without vendor-provided non-GNU macro set
+#                implementations to allow for cross-platform build
+#                instructions.
+#
+
+AC_DEFUN([GROFF_WITH_COMPATIBILITY_WRAPPERS],
+  [AC_ARG_WITH([compatibility-wrappers],
+    [AS_HELP_STRING([--with-compatibility-wrappers[[=VALUE]]],
+      [choose whether and how groff compatibility wrappers for \
+       vendor-provided non-GNU macro sets are installed. VALUE can be \
+       'check', 'yes', 'no' or 'manual'. \
+       'check' (the default) checks for the existence of vendor-provided \
+       non-GNU macro sets, and implements the 'yes' or 'no' option \
+       accordingly. \
+       'yes' generates compatibility wrappers for vendor-provided non-GNU \
+       macro sets to allow their use with groff-based tools. The \
+       compatibility wrappers are installed with the original macro set name, \
+       while groff implementation of these macro sets are installed with a \
+       'g' prefix. Thus use of the groff implementation of these macro sets \
+       requires use of the '-mg<macro>' option (example: -mgan). \
+       'no' only installs the groff implementation of macro sets. \
+       'manual' generates compatibility wrappers for vendor-provided non-GNU \
+       macro sets as '<macro>-os'. Use of these groff compatibility wrappers \
+       (for vendor-provided non-GNU macro sets) requires the use of the \
+       '-m<macro>-os' option (example: -man-os).])],
+    [compatibility_wrappers="$withval"],
+    [compatibility_wrappers="check"])
+
+    if test "x$compatibility_wrappers" != "xcheck"  -a \
+            "x$compatibility_wrappers" != "xyes"    -a \
+            "x$compatibility_wrappers" != "xno"     -a \
+            "x$compatibility_wrappers" != "xmanual"
+    then
+         AC_MSG_WARN([Invalid '--with-compatibility-wrappers' argument: '$compatibility_wrappers' - assuming 'check' requested.])
+         compatibility_wrappers="check"
+    fi
+
+    if test "x$tmac_wrap" = "x"
+    then
+        # No Operating System Macro Sets Present
+        if   test "x$compatibility_wrappers" = "xcheck"
+        then
+            compatibility_wrappers="no"
+        elif test "x$compatibility_wrappers" = "xyes"
+        then
+            AC_MSG_ERROR([No non-GNU macro sets found - cannot create and install compatibility wrappers])
+        elif test "x$compatibility_wrappers" = "xno"
+        then
+            : # No action required
+        elif test "x$compatibility_wrappers" = "xmanual"
+        then
+            # 'manual' allows quiet conversion to 'no' to support
+            # cross-platform build instructions
+            compatibility_wrappers="no"
+        fi
+    else
+        # One or more Operating System Macro Sets Present
+        if   test "x$compatibility_wrappers" = "xcheck"
+        then
+            compatibility_wrappers="yes"
+        fi
+    fi
+
+    # Now compatibility_wrappers can only be yes, no or manual
+    AC_SUBST([compatibility_wrappers])
+  ])
 
 # We need the path to install-sh to be absolute.
 
@@ -930,7 +1172,7 @@ AC_DEFUN([GROFF_INSTALL_INFO],
    fi])
 
 
-# At least one UNIX system, Apple Macintosh Rhapsody 5.5,
+# At least one Unix system, Apple Macintosh Rhapsody 5.5,
 # does not have -lm ...
 
 AC_DEFUN([GROFF_LIBM],
@@ -991,25 +1233,19 @@ AC_DEFUN([GROFF_OS390],
    fi])
 
 
-# Check whether Windows scripts like `afmtodit.cmd' should be installed.
+# Check whether Windows scripts like 'afmtodit.cmd' should be installed.
 
 AC_DEFUN([GROFF_CMD_FILES],
   [AC_MSG_CHECKING([whether to install .cmd wrapper scripts for Windows])
    case "$host_os" in
    *mingw*)
      make_winscripts=winscripts
-     make_install_winscripts=install_winscripts
-     make_uninstall_winscripts=uninstall_winscripts
      AC_MSG_RESULT([yes]) ;;
    *)
      make_winscripts=
-     make_install_winscripts=
-     make_uninstall_winscripts=
      AC_MSG_RESULT([no]) ;;
    esac
-   AC_SUBST([make_winscripts])
-   AC_SUBST([make_install_winscripts])
-   AC_SUBST([make_uninstall_winscripts])])
+   AC_SUBST([make_winscripts])])
 
 
 # Check whether we need a declaration for a function.
@@ -1116,7 +1352,7 @@ uintmax_t i = (uintmax_t)-1;
    AC_LANG_POP([C++])])
 
 
-# Test for working `unsigned long long'.  Taken from the fileutils package.
+# Test for working 'unsigned long long'.  Taken from the fileutils package.
 
 AC_DEFUN([GROFF_UNSIGNED_LONG_LONG],
   [AC_LANG_PUSH([C++])
@@ -1141,7 +1377,7 @@ return ull << i | ull >> i | ullmax / ull | ullmax % ull;
    AC_LANG_POP([C++])])
 
 
-# Define uintmax_t to `unsigned long' or `unsigned long long'
+# Define uintmax_t to 'unsigned long' or 'unsigned long long'
 # if <inttypes.h> does not exist.  Taken from the fileutils package.
 
 AC_DEFUN([GROFF_UINTMAX_T],
@@ -1152,7 +1388,7 @@ AC_DEFUN([GROFF_UINTMAX_T],
          && ac_type='unsigned long long' \
          || ac_type='unsigned long'
      AC_DEFINE_UNQUOTED([uintmax_t], [$ac_type],
-       [Define uintmax_t to `unsigned long' or `unsigned long long' if
+       [Define uintmax_t to 'unsigned long' or 'unsigned long long' if
        <inttypes.h> does not exist.])
    fi])
 
@@ -1162,7 +1398,7 @@ AC_DEFUN([GROFF_UINTMAX_T],
 # MS-DOS/Win32=';').
 #
 # The logic to resolve this test is already encapsulated in
-# `${srcdir}/src/include/nonposix.h'.
+# '${srcdir}/src/include/nonposix.h'.
 
 AC_DEFUN([GROFF_TARGET_PATH_SEPARATOR],
   [AC_MSG_CHECKING([separator character to use in groff search paths])
@@ -1249,7 +1485,7 @@ AC_DEFUN([GROFF_X11],
    AC_SUBST([XLIBDIRS])])
 
 
-# Set up the `--with-appresdir' command line option.
+# Set up the '--with-appresdir' command-line option.
 
 # Don't quote AS_HELP_STRING!
 AC_DEFUN([GROFF_APPRESDIR_OPTION],
@@ -1260,13 +1496,13 @@ AC_DEFUN([GROFF_APPRESDIR_OPTION],
 
 # Get a default value for the application resource directory.
 #
-# We ignore the `XAPPLRES' and `XUSERFILESEARCHPATH' environment variables.
+# We ignore the 'XAPPLRES' and 'XUSERFILESEARCHPATH' environment variables.
 #
 # By default if --with-appresdir is not used, we will install the
 # gxditview resources in $prefix/lib/X11/app-defaults.
 #
-# Note that if --with-appresdir was passed to `configure', no prefix is
-# added to `appresdir'.
+# Note that if --with-appresdir was passed to 'configure', no prefix is
+# added to 'appresdir'.
 
 AC_DEFUN([GROFF_APPRESDIR_DEFAULT],
   [if test -z "$groff_no_x"; then
@@ -1293,13 +1529,13 @@ AC_DEFUN([GROFF_APPRESDIR_CHECK],
 
     $appresdir
 
-  (existing files will be saved by appending `.old' to the file
+  (existing files will be saved by appending '.old' to the file
   name).
 
   To install them into a different directory, say,
-  `/etc/X11/app-defaults', add
-  `--with-appresdir=/etc/X11/app-defaults' to the configure script
-  command line options and rerun it (`prefix' value has no effect on
+  '/etc/X11/app-defaults', add
+  '--with-appresdir=/etc/X11/app-defaults' to the configure script
+  command-line options and rerun it ('prefix' value has no effect on
   a --with-appresdir option).
 
   If the gxditview resources are installed in a directory that is not
@@ -1308,13 +1544,13 @@ AC_DEFUN([GROFF_APPRESDIR_CHECK],
   /usr/share/X11/app-defaults and /etc/X11/app-defaults), you will
   have to set the environment variable XFILESEARCHPATH to this
   path.  More details can be found in the X(7) manual page, or in "X
-  Toolkit Intrinsics - C Language Interface manual"
+  Toolkit Intrinsics - C Language Interface manual".
        ])
      fi
    fi])
 
 
-# Set up the `--with-grofferdir' command line option.
+# Set up the '--with-grofferdir' command-line option.
 
 AC_DEFUN([GROFF_GROFFERDIR_OPTION],
   [AC_ARG_WITH([grofferdir],
@@ -1353,3 +1589,107 @@ AC_DEFUN([GROFF_GROGDIR_DEFAULT],
 AC_DEFUN([GROFF_REFERDIR_DEFAULT],
   referdir=$libprogramdir/refer
   AC_SUBST([referdir]))
+
+# Check for xpmtoppm, for gnu.eps generation
+AC_DEFUN([GROFF_PROG_XPMTOPPM],
+  [AC_CHECK_PROG([XPMTOPPM], [xpmtoppm], [found], [missing])])
+
+# Check for make built-in variable RM
+AC_DEFUN([GROFF_MAKE_RM],
+  [AC_MSG_CHECKING(whether make has builtin variable RM)
+cat <<EOF > test_make_rm.mk
+all:
+       @if test -n "\$(RM)"; then \
+          echo "yes"; \
+       else \
+          echo "no"; \
+       fi
+EOF
+  groff_is_rm_defined=`make -sf test_make_rm.mk`
+  AC_MSG_RESULT([$groff_is_rm_defined])
+  rm -f test_make_rm.mk])
+
+# Check if diff has option -D, for gdiffmk. If not, check if gdiff is
+# available on the system and make the same test. If either diff or
+# gdiff is working, it is set to DIFF_PROG.  If -D option is not
+# available, DIFF_PROG is left to diff (gdiffmk will report a
+# problem).
+AC_DEFUN([GROFF_DIFF_D],
+  [AC_MSG_CHECKING(for a diff program that supports option -D)
+  groff_has_diff_d_option=no
+  DIFF_PROG=diff
+  diff -Dx /dev/null /dev/null >/dev/null 2>&1 && groff_has_diff_d_option=yes
+  if test "$groff_has_diff_d_option" = no; then
+    AC_CHECK_PROGS([GDIFF], [gdiff])
+    if test -n "$GDIFF"; then
+      "$GDIFF" -Dx /dev/null /dev/null >/dev/null 2>&1 && groff_has_diff_d_option=yes
+      if test "$groff_has_diff_d_option" = yes; then
+        DIFF_PROG="$GDIFF"
+      fi
+    fi
+  fi
+  AC_MSG_RESULT([$groff_has_diff_d_option])
+  AC_SUBST([DIFF_PROG])])
+
+# Check if 'test' supports the option -ef.
+AC_DEFUN([GROFF_HAVE_TEST_EF_OPTION],
+  [AC_MSG_CHECKING(whether test supports option -ef)
+  HAVE_TEST_EF_OPTION=no
+  test /dev/null -ef /dev/null > /dev/null 2>&1 && HAVE_TEST_EF_OPTION=yes
+  AC_MSG_RESULT([$HAVE_TEST_EF_OPTION])
+  AC_SUBST([HAVE_TEST_EF_OPTION])])
+
+# gdiffmk will attempt to use bash (for option -ef of 'test'). If bash
+# is not available it will use /bin/sh.
+AC_DEFUN([GROFF_BASH],
+  [AC_PATH_PROGS([BASH_PROG], [bash], [no])
+  if test x$BASH_PROG = xno; then
+     BASH_PROG=/bin/sh
+  fi
+  AC_SUBST([BASH_PROG])])
+
+# Looking for uchardet library, used by preconv.
+AC_DEFUN([GROFF_UCHARDET],
+  [AC_ARG_WITH([uchardet],
+               AS_HELP_STRING([--with-uchardet],
+                              [Build 'preconv' with uchardet library for file \
+                               encoding automatic detection [=auto|no|yes]]))
+   AS_IF([test "x$with_uchardet" != "xno"],
+         [PKG_CHECK_MODULES([UCHARDET],
+                            [uchardet >= 0.0.1],
+                            [AC_DEFINE([HAVE_UCHARDET],
+                                       [1],
+                                       [uchardet library availability])
+                             groff_have_uchardet=yes],
+                            [if test "x$with_uchardet" = "xyes"; then
+                               AC_MSG_FAILURE([Could not found uchardet library])
+                             else
+                               AC_MSG_WARN([uchardet library not found, preconv \
+might not work properly])
+                             fi
+                             groff_have_uchardet=no])],
+          [groff_have_uchardet=no]
+          )])
+
+# Warning if uchardet library was not found
+AC_DEFUN([GROFF_UCHARDET_CHECK],
+  [if test "x$groff_have_uchardet" = "xno" -a "x$with_uchardet" != "xno"; then
+  AC_MSG_WARN([
+  uchardet library was not found; preprocessor 'preconv', which uses it to detect
+  the input file encoding, might not work properly (to check how and in which
+  order 'preconv' tries to determine the file encoding, see its man page).
+  ])
+  fi
+  ])
+
+# pdftools needed for sanity checks
+AC_DEFUN([GROFF_PDFTOOLS],
+  [AC_CHECK_PROG([PDFINFO], [pdfinfo], [found], [missing])
+   AC_CHECK_PROG([PDFFONTS], [pdffonts], [found], [missing])
+   AC_CHECK_PROG([PDFIMAGES], [pdfimages], [found], [missing])
+   if test "x$PDFINFO" = "xfound" -a "x$PDFFONTS" = "xfound" -a "x$PDFIMAGES" = "xfound"; then
+      groff_have_pdftools=yes;
+   else
+      groff_have_pdftools=no;
+   fi
+   ])
index 4e37363..ec7cd0a 100644 (file)
@@ -1,5 +1,5 @@
 # iconv.m4 serial 19 (gettext-0.18.2)
-dnl Copyright (C) 2000-2002, 2007-2014 Free Software Foundation, Inc.
+dnl Copyright (C) 2000-2018 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
 dnl with or without modifications, as long as this notice is preserved.
@@ -214,7 +214,7 @@ AC_DEFUN([AM_ICONV_LINK],
 
 dnl Define AM_ICONV using AC_DEFUN_ONCE for Autoconf >= 2.64, in order to
 dnl avoid warnings like
-dnl "warning: AC_REQUIRE: `AM_ICONV' was expanded before it was required".
+dnl "warning: AC_REQUIRE: 'AM_ICONV' was expanded before it was required".
 dnl This is tricky because of the way 'aclocal' is implemented:
 dnl - It requires defining an auxiliary macro whose name ends in AC_DEFUN.
 dnl   Otherwise aclocal's initial scan pass would miss the macro definition.
index ddc569f..d3eb0fc 100644 (file)
@@ -1,5 +1,5 @@
 # lib-ld.m4 serial 6
-dnl Copyright (C) 1996-2003, 2009-2014 Free Software Foundation, Inc.
+dnl Copyright (C) 1996-2018 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
 dnl with or without modifications, as long as this notice is preserved.
index 3522d99..4a4a185 100644 (file)
@@ -1,5 +1,5 @@
 # lib-link.m4 serial 26 (gettext-0.18.2)
-dnl Copyright (C) 2001-2014 Free Software Foundation, Inc.
+dnl Copyright (C) 2001-2018 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
 dnl with or without modifications, as long as this notice is preserved.
index 31f49e4..ff90f8f 100644 (file)
@@ -1,5 +1,5 @@
 # lib-prefix.m4 serial 7 (gettext-0.18)
-dnl Copyright (C) 2001-2005, 2008-2014 Free Software Foundation, Inc.
+dnl Copyright (C) 2001-2018 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
 dnl with or without modifications, as long as this notice is preserved.
index ada2f01..be1b281 100644 (file)
@@ -1,5 +1,5 @@
 # localcharset.m4 serial 7
-dnl Copyright (C) 2002, 2004, 2006, 2009-2014 Free Software Foundation, Inc.
+dnl Copyright (C) 2002-2018 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
 dnl with or without modifications, as long as this notice is preserved.
diff --git a/makevarescape.sed b/makevarescape.sed
new file mode 100644 (file)
index 0000000..8ece3e8
--- /dev/null
@@ -0,0 +1,9 @@
+s/\\/\\\\e/g
+s/ /\\\\ /g
+s/"/\\\\(dq/g
+s/'/\\\\(aq/g
+s/-/\\\\&/g
+s/\^/\\\\(ha/g
+s/`/\\\\(ga/g
+s/~/\\\\(ti/g
+s|[^ ]/\+|&\\\\:|g
diff --git a/man/Makefile.sub b/man/Makefile.sub
deleted file mode 100644 (file)
index fb151b5..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-# Makefile.sub for `man'
-#
-# File position: <groff-source>/man/Makefile.sub
-#
-# Copyright (C) 2014
-#   Free Software Foundation, Inc.
-#
-# Last update: 2 Sep 2014
-#
-# This file is part of `font utf8' which is part of `groff'.
-#
-# `groff' is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 2 of the License, or
-# (at your option) any later version.
-#
-# `groff' 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
-# <http://www.gnu.org/licenses/gpl-2.0.html>.
-#
-########################################################################
-
-MAN5=\
-  groff_font.n \
-  groff_out.n \
-  groff_tmac.n
-MAN7=\
-  ditroff.n \
-  groff_char.n \
-  groff_diff.n \
-  groff.n \
-  roff.n
-
-########################################################################
-# Emacs settings
-########################################################################
-#
-# Local Variables:
-# mode: makefile
-# End:
diff --git a/man/ditroff.7.man b/man/ditroff.7.man
new file mode 100644 (file)
index 0000000..a55f9f5
--- /dev/null
@@ -0,0 +1,173 @@
+.TH DITROFF @MAN7EXT@ "@MDATE@" "groff @VERSION@"
+.SH NAME
+ditroff \- classical device-independent roff
+.
+.
+.\" ====================================================================
+.\" Legal Terms
+.\" ====================================================================
+.\"
+.\" Copyright (C) 2001-2018 Free Software Foundation, Inc.
+.\"
+.\" This file is part of groff, the GNU roff type-setting system.
+.\"
+.\" Permission is granted to copy, distribute and/or modify this
+.\" document under the terms of the GNU Free Documentation License,
+.\" Version 1.3 or any later version published by the Free Software
+.\" Foundation; with no Invariant Sections, with no Front-Cover Texts,
+.\" and with no Back-Cover Texts.
+.\"
+.\" A copy of the Free Documentation License is included as a file
+.\" called FDL in the main directory of the groff source package.
+.
+.
+.\" ====================================================================
+.SH DESCRIPTION
+.\" ====================================================================
+.
+The name
+.I ditroff
+refers to a historical development stage of the
+.IR roff (@MAN7EXT@)
+text processing system.
+.
+In
+.I roff
+systems extant today, the name
+.I troff
+is a synonym for
+.IR ditroff .
+.
+.
+.P
+Early versions of
+.I roff
+by Joe Ossanna generated two programs from the same sources,
+using conditional compilation to distinguish them.
+.
+.I nroff
+produced text-oriented TTY output, while
+.I troff
+generated graphical output for exactly one output device, the
+Wang Graphic Systems CAT phototypesetter.
+.
+.
+.P
+In 1979, Brian Kernighan rewrote
+.I troff
+to support more devices by creating an intermediate output format for
+.I troff
+that could be fed into postprocessor programs which actually do the
+printout on the device.
+.
+Kernighan's version marks what is known as \(lqclassical troff\(rq
+today.
+.
+In order to distinguish it from Ossanna's original version, it was
+called
+.I ditroff
+.RI ( d "evice " i "ndependent " t roff)
+on some systems, though this naming isn't mentioned in the classical
+documentation.
+.
+.
+.P
+Today, all existing
+.I roff
+systems are based on Kernighan's multi-device
+.IR troff .
+.
+The distinction between
+.I troff
+and
+.I ditroff
+is no longer necessary; each modern
+.I troff
+provides the complete functionality of
+.IR ditroff .
+.
+.
+.P
+The easiest way to use
+.I ditroff
+is via the GNU
+.I roff
+system,
+.IR groff .
+.
+The
+.IR groff (@MAN1EXT@)
+program is a wrapper around
+.I (di)troff
+that automatically handles device postprocessing.
+.
+.
+.\" ====================================================================
+.SH AUTHORS
+.\" ====================================================================
+.
+This document was written by
+.MT groff\-bernd.warken\-72@\:web.de
+Bernd Warken
+.ME .
+.
+.
+.\" ====================================================================
+.SH "SEE ALSO"
+.\" ====================================================================
+.
+.TP
+CSTR\~#54
+refers to the 1992 revision of the
+.I Nroff/Troff User's Manual
+by J.\& F.\& Ossanna and Brian Kernighan.
+.
+.
+.TP
+CSTR\~#97
+refers to
+.IR "A Typesetter-independent TROFF" ,
+by Brian Kernighan and is the original documentation of the first
+multi-device
+.I troff
+.RI ( ditroff ).
+.
+.
+.TP
+.IR roff (@MAN7EXT@)
+provides a history and conceptual overview of
+.I roff
+systems.
+.
+.
+.TP
+.IR @g@troff (@MAN1EXT@)
+describes the GNU implementation of
+.IR (di)troff .
+.
+.
+.TP
+.IR groff (@MAN1EXT@)
+documents the GNU
+.I roff
+program and includes pointers to further documentation about
+.IR groff .
+.
+.
+.TP
+.IR groff_out (@MAN5EXT@)
+describes the
+.I groff
+version of the intermediate output language, the basis for
+multi-device output.
+.
+.
+.\" ====================================================================
+.\" Editor settings
+.\" ====================================================================
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" fill-column: 72
+.\" End:
+.\" vim: set filetype=groff textwidth=72:
diff --git a/man/ditroff.man b/man/ditroff.man
deleted file mode 100644 (file)
index 16a6feb..0000000
+++ /dev/null
@@ -1,167 +0,0 @@
-.\" Emacs mode: -*- nroff -*-
-.TH DITROFF @MAN7EXT@ "@MDATE@" "Groff Version @VERSION@"
-.SH NAME
-ditroff \- classical device independent roff
-.
-.\" ditroff.man
-.
-.
-.de co
-Copyright \[co] 2001-2014 Free Software Foundation, Inc.
-
-This file is part of groff, the GNU roff type-setting system.
-
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.3 or
-any later version published by the Free Software Foundation; with no
-Front-Cover Texts, and with no Back-Cover Texts.
-
-A copy of the Free Documentation License is included as a file called
-FDL in the main directory of the groff source package, it is also
-available on-line at the
-.UR http://\:www.gnu.org/\:copyleft/\:fdl.html
-GNU copyleft site
-.UE .
-..
-.de au
-It was written by
-.MT groff-bernd.warken-72@\:web.de
-Bernd Warken
-.ME
-and is maintained by
-.MT wl@\:gnu.org
-Werner Lemberg
-.ME .
-..
-.
-.\" --------------------------------------------------------------------
-.SH DESCRIPTION
-.\" --------------------------------------------------------------------
-.
-The name
-.I ditroff
-once marked a development level of the
-.I troff
-text processing system.
-.
-In actual
-.BR roff (@MAN7EXT@)
-systems, the name
-.I troff
-is used as a synonym for
-.IR ditroff .
-.
-.P
-The first roff system was written by Joe Ossanna around 1973.
-.
-It supported only two output devices, the
-.B nroff
-program produced text oriented tty output, while the
-.B troff
-program generated graphical output for exactly one output device, the Wang
-.I Graphic Systems CAT
-typesetter.
-.
-.
-.P
-In 1979, Brian Kernighan rewrote troff to support more devices by
-creating an intermediate output format for troff that can be fed into
-postprocessor programs which actually do the printout on the device.
-.
-Kernighan\[aq]s version marks what is known as
-.I classical troff
-today.
-.
-In order to distinguish it from Ossanna\[aq]s original mono-device
-version, it was called
-.I ditroff
-.RI ( d "evice " i "ndependent " troff )
-on some systems, though this naming isn\[aq]t mentioned in the
-classical documentation.
-.
-.
-.P
-Today, any existing roff system is based on Kernighan\[aq]s
-multi-device troff.
-.
-The distinction between
-.I troff
-and
-.I ditroff
-isn\[aq]t necessary any longer, for each modern
-.I troff
-provides already the complete functionality of
-.IR ditroff .
-.
-On most systems, the name
-.I troff
-is used to denote
-.IR ditroff .
-.
-.
-.P
-The easiest way to use ditroff is the GNU roff system,
-.IR groff .
-The
-.BR groff (@MAN1EXT@)
-program is a wrapper around
-.I (di)troff
-that automatically handles postprocessing.
-.
-.
-.\" --------------------------------------------------------------------
-.SH "SEE ALSO"
-.\" --------------------------------------------------------------------
-.
-.TP
-.I [CSTR\~#54]
-The 1992 revision of the
-.I Nroff/Troff User\[aq]s Manual
-by
-.I J.\& F.\& Ossanna
-and
-.IR "Brian Kernighan" ,
-see
-.UR http://\:cm.bell-labs.com/\:cm/\:cs/\:cstr/\:54.ps.gz
-Bell Labs CSTR\~#54
-.UE .
-.
-.TP
-.I [CSTR\~#97]
-.I A Typesetter-independent TROFF
-by
-.I Brian Kernighan
-is the original documentation of the first multi-device troff
-.RI ( ditroff ),
-see
-.UR http://\:cm.bell-labs.com/\:cm/\:cs/\:cstr/\:97.ps.gz
-Bell Labs CSTR\~#97
-.UE .
-.
-.TP
-.BR roff (@MAN7EXT@)
-This document gives details on the history and concepts of roff.
-.
-.TP
-.BR @g@troff (@MAN1EXT@)
-The actual implementation of
-.IR ditroff .
-.
-.TP
-.BR groff (@MAN1EXT@)
-The GNU roff program and pointers to all documentation around groff.
-.
-.TP
-.BR groff_out (@MAN5EXT@)
-The groff version of the intermediate output language, the basis for
-multi-devicing.
-.
-.
-.\" --------------------------------------------------------------------
-.SH "COPYING"
-.\" --------------------------------------------------------------------
-.co
-.\" --------------------------------------------------------------------
-.SH "AUTHORS"
-.\" --------------------------------------------------------------------
-.au
similarity index 81%
rename from man/groff.man
rename to man/groff.7.man
index ca80f02..24f093f 100644 (file)
@@ -1,57 +1,46 @@
 '\" t
-.TH GROFF @MAN7EXT@ "@MDATE@" "Groff Version @VERSION@"
+.TH GROFF @MAN7EXT@ "@MDATE@" "groff @VERSION@"
 .SH NAME
 groff \- a short reference for the GNU roff language
 .
 .\" Before installation: <top-groff-source>/man/groff.man
 .\" After installation:  </usr or /usr/local>/share/man/man7/groff.7
 .
-.\" --------------------------------------------------------------------
-.\" Legalese
-.\" --------------------------------------------------------------------
-.
-.de co
-This file is part of groff, the GNU roff type-setting system.
-
-Copyright \[co] 2000-2014 Free Software Foundation, Inc.
-
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.3 or
-any later version published by the Free Software Foundation; with no
-Front-Cover Texts, and with no Back-Cover Texts.
-
-A copy of the Free Documentation License is included as a file called
-FDL in the main directory of the groff source package.  It is also
-available in the internet at
-.UR http://\:www.gnu.org/\:copyleft/\:fdl.html
-.UE .
-..
+.\" ====================================================================
+.\" Legal Terms
+.\" ====================================================================
+.\"
+.\" Copyright (C) 2000-2018 Free Software Foundation, Inc.
+.\"
+.\" This file is part of groff, the GNU roff type-setting system.
+.\"
+.\" Permission is granted to copy, distribute and/or modify this
+.\" document under the terms of the GNU Free Documentation License,
+.\" Version 1.3 or any later version published by the Free Software
+.\" Foundation; with no Invariant Sections, with no Front-Cover Texts,
+.\" and with no Back-Cover Texts.
+.\"
+.\" A copy of the Free Documentation License is included as a file
+.\" called FDL in the main directory of the groff source package.
 .
-.de au
-This documentation was written by
-.MT groff-bernd.warken-72@web.de
-Bernd Warken
-.ME
-and is appended and maintained by
-.MT wl@gnu.org
-Werner Lemberg
-.ME .
-..
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .\" Setup
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
-.do nr groff_C \n[.C]
+.
+.\" Save and disable compatibility mode (for, e.g., Solaris 10/11).
+.do nr groff_7_C \n[.C]
 .cp 0
 .
-.\" --------------------------------------------------------------------
+.
+.\" ====================================================================
 .\" start of macro definitions
 .
 .de TPx
 .  TP 10n
 ..
-.\" ---------------------------------------------------------------------
+.\" ====================================================================
 .\" .Text anything ...
 .\"
 .\" All arguments are printed as text.
@@ -60,14 +49,14 @@ Werner Lemberg
 .  nop \)\\$*
 ..
 .
-.\" --------- command line option ---------
+.\" ========= command=line option =========
 .
 .de option
 .  Text \f[CB]\\$*
 .  ft P
 ..
 .
-.\" --------- characters ---------
+.\" ========= characters =========
 .
 .de squoted_char
 .  Text \[oq]\f[CB]\\$1\f[]\[cq]\\$2
@@ -75,7 +64,7 @@ Werner Lemberg
 .de dquoted_char
 .  Text \[lq]\f[CB]\\$1\f[]\[rq]\\$2
 ..
-.\" --------- requests ---------
+.\" ========= requests =========
 .
 .\" synopsis of a request
 .de REQ
@@ -92,7 +81,7 @@ Werner Lemberg
 .  BR \\$*
 ..
 .
-.\" --------- numerical elements ---------
+.\" ========= numerical elements =========
 .
 .\" number with a trailing unit
 .de scalednumber
@@ -112,68 +101,68 @@ Werner Lemberg
 ..
 .
 .
-.\" --------- escape sequences ---------
+.\" ========= escape sequences =========
 .
-.\" ---------------------------------------------------------------------
+.\" ====================================================================
 .\" .ESC name [arg]
 .\"
 .\" Synopsis of an escape sequence, optionally with argument
-.\" Args   : 1 or 2; `name' obligatory, `arg' optional
+.\" Args   : 1 or 2; 'name' obligatory, 'arg' optional
 .\"   name : suitable name for an escape sequence (c, (xy, [long])
 .\"   arg  : arbitrary word
-.\" Result : prints \namearg, where `name' is in CB, `arg' in I
+.\" Result : prints \namearg, where 'name' is in CB, 'arg' in I
 .\"
 .de ESC
 .  Text "\f[CB]\e\\$1\,\f[I]\\$2\/\fR"
 ..
-.\" ---------------------------------------------------------------------
+.\" ====================================================================
 .\" .ESC[] name arg
 .\"
 .\" Synopsis for escape sequence with a bracketed long argument
 .\" Args   : 2 obligatory
 .\"   name : suitable name for an escape sequence (c, (xy, [long])
 .\"   arg  : arbitrary text
-.\" Result : prints \name[arg], where `name' is in CB, `arg' in I
+.\" Result : prints \name[arg], where 'name' is in CB, 'arg' in I
 .\"
 .de ESC[]
 .  Text "\f[CB]\e\\$1\[lB]\f[]\,\f[I]\\$2\/\f[]\f[CB]\[rB]\f[]"
 ..
-.\" ---------------------------------------------------------------------
+.\" ====================================================================
 .\" .ESCq name arg
 .\"
 .\" Synopsis for escape sequence with a bracketed long argument
 .\" Args   : 2 obligatory
 .\"   name : suitable name for an escape sequence (c, (xy, [long])
 .\"   arg  : arbitrary text
-.\" Result : prints \name'arg', where `name' is in CB, `arg' in I
+.\" Result : prints \name'arg', where 'name' is in CB, 'arg' in I
 .\"
 .de ESCq
 .  Text "\f[CB]\e\\$1\[cq]\f[]\,\f[I]\\$2\/\f[]\f[CB]\[cq]\f[]"
 ..
-.\" ---------------------------------------------------------------------
+.\" ====================================================================
 .\" .ESC? arg
 .\"
 .\" Synopsis for escape sequence with a bracketed long argument
 .\" Args   : 1 obligatory
 .\"   arg  : arbitrary text
-.\" Result : prints `\?arg?', where the `?' are in CB, `arg' in I
+.\" Result : prints '\?arg?', where the '?' are in CB, 'arg' in I
 .\"
 .de ESC?
 .  Text "\f[CB]\e?\,\f[I]\\$1\/\f[CB]?\f[R]"
 ..
-.\" ---------------------------------------------------------------------
+.\" ====================================================================
 .\" .esc name [punct]
 .\"
 .\" Reference of an escape sequence (no args), possibly punctuation
 .\" Args    : 1 obligatory
 .\"   name  : suitable name for an escape sequence (c, (xy, [long])
 .\"   punct : arbitrary
-.\" Result  : prints \name, where `name' is in B, `punct' in R
+.\" Result  : prints \name, where 'name' is in B, 'punct' in R
 .\"
 .de esc
 .  BR "\e\\$1" \\$2
 ..
-.\" ---------------------------------------------------------------------
+.\" ====================================================================
 .\" .escarg name arg [punct]
 .\"
 .\" Reference of an escape sequence (no args)
@@ -181,38 +170,38 @@ Werner Lemberg
 .\"   name  : suitable name for an escape sequence (c, (xy, [long])
 .\"   arg   : arbitrary word
 .\" Result  : prints \namearg, where
-.\"           `name' is in B, `arg' in I
+.\"           'name' is in B, 'arg' in I
 .\"
 .de escarg
 .  Text \f[B]\e\\$1\f[]\,\f[I]\\$2\/\f[]\\$3
 ..
-.\" ---------------------------------------------------------------------
+.\" ====================================================================
 .\" .esc[] name arg [punct]
 .\"
 .\" Reference for escape sequence with a bracketed long argument
 .\" Args   : 2 obligatory
 .\"   name : suitable name for an escape sequence (c, (xy, [long])
 .\"   arg  : arbitrary text
-.\" Result : prints \name[arg], where `name' is in CB, `arg' in CI
+.\" Result : prints \name[arg], where 'name' is in CB, 'arg' in CI
 .\"
 .de esc[]
 .  Text \f[CB]\e\\$1\[lB]\f[]\,\f[CI]\\$2\/\f[]\f[CB]\[rB]\f[]\\$3
 ..
 .
-.\" ---------------------------------------------------------------------
+.\" ====================================================================
 .\" .escq name arg
 .\"
 .\" Reference for escape sequence with a bracketed long argument
 .\" Args   : 2 obligatory
 .\"   name : suitable name for an escape sequence (c, (xy, [long])
 .\"   arg  : arbitrary text
-.\" Result : prints \name'arg', where `name' is in CB, `arg' in CI
+.\" Result : prints \name'arg', where 'name' is in CB, 'arg' in CI
 .\"
 .de escq
 .  Text \f[CB]\e\\$1\[cq]\f[]\,\f[CI]\\$2\/\f[]\f[CB]\[cq]\f[]\\$3
 ..
 .
-.\" --------- strings ---------
+.\" ========= strings =========
 .
 .\" synopsis for string, with \*[]
 .de STRING
@@ -225,7 +214,7 @@ Werner Lemberg
 .  Text \f[CB]\[rs]*\[lB]\\$1\[rB]\f[]\\$2
 ..
 .
-.\" --------- registers ---------
+.\" ========= registers =========
 .
 .\" synopsis for registers, with \n[]
 .de REG
@@ -240,10 +229,11 @@ Werner Lemberg
 .\" end of macro definitions
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH DESCRIPTION
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
+.P
 The name
 .I groff
 stands for
@@ -256,10 +246,17 @@ for a survey and the background of the groff system.
 .
 .
 .P
-This document gives only short descriptions of the predefined roff
-language elements as used in groff.
+This document provides only short descriptions of roff language
+elements.
+.
+.IR "Groff: The GNU Implementation of troff" ,
+by Trent A.\& Fisher and Werner Lemberg,
+is the primary
+.I groff
+manual,
+and is written in Texinfo.
 .
-Both the classical features and the groff extensions are provided.
+You can browse it interactively with \[lq]info groff\[rq].
 .
 .
 .P
@@ -288,13 +285,6 @@ is the general term for the language.
 .
 .
 .P
-This file is only a short version of the complete documentation that
-is found in the
-.I groff
-.BR info (1)
-file, which contains more detailed, actual, and concise information.
-.
-.P
 The general syntax for writing groff documents is relatively easy, but
 writing extensions to the roff language can be a bit harder.
 .
@@ -386,7 +376,9 @@ Begin all text lines with the special non-spacing character
 This does not produce the most efficient code, but it should work as a
 first measure.
 .
-For better strategies, see the groff info file and
+For better strategies, see the
+.I groff
+Texinfo manual and
 .BR groff_tmac (@MAN5EXT@).
 .
 .
@@ -395,9 +387,9 @@ Reading roff source files is easier, just reduce all double backslashes
 to a single one in all macro definitions.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "GROFF ELEMENTS"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The roff language elements add formatting information to a text file.
 .
@@ -431,7 +423,7 @@ but they are used exactly like requests.
 Macro packages are pre-defined sets of macros written in the groff
 language.
 .
-A user\[aq]s possibilities to create escape sequences herself is very
+A user's possibilities to create escape sequences herself is very
 limited, only special characters can be mapped.
 .
 .
@@ -521,7 +513,7 @@ In groff, the distinction between those two elements is not always
 obvious (and a full discussion is beyond the scope of this man page).
 .
 A first approximation is that glyphs have a specific size and
-colour and are taken from a specific font; they can\[aq]t be modified any
+colour and are taken from a specific font; they can't be modified any
 more \[en] characters are the input, and glyphs are the output.
 .
 As soon as an output line has been generated, it no longer contains
@@ -537,6 +529,9 @@ Moreover, there are some advanced roff elements.
 A
 .B diversion
 stores (formatted) information into a macro for later usage.
+See
+.BR groff_tmac (@MAN5EXT@)
+for more details.
 .
 A
 .B trap
@@ -548,13 +543,14 @@ condition is met.
 .
 .
 .P
-More detailed information and examples can be found in the groff info
-file.
+More detailed information and examples can be found in the
+.I groff
+Texinfo manual.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "CONTROL CHARACTERS"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 There is a small set of characters that have a special controlling
 task in certain conditions.
@@ -563,11 +559,15 @@ task in certain conditions.
 \&\f[CB].\f[]
 A dot is only special at the beginning of a line or after the
 condition in the requests
-.request if ,
-.request ie ,
-.request el ,
+.request if\c
+,
+.request ie\c
+,
+.request el\c
+,
 and
-.request while .
+.request while\c
+\&.
 There it is the control character that introduces a request (or macro).
 .
 By using the
@@ -591,7 +591,7 @@ At the beginning of a line and in the conditional requests it is the
 non-breaking control character.
 .
 That means that it introduces a request like the dot, but with the
-additional property that this request doesn\[aq]t cause a linebreak.
+additional property that this request doesn't cause a linebreak.
 .
 By using the
 .request c2
@@ -671,10 +671,10 @@ Otherwise, it is non-special.
 \f[CI]space\f[]
 Space characters are only functional characters.
 .
-They separate the arguments in requests, macros, and strings, and the words
-in text lines.
+They separate the arguments in requests, macros, and strings, and the
+words in text lines.
 .
-They are subject to groff\[aq]s horizontal spacing calculations.
+They are subject to groff's horizontal spacing calculations.
 .
 To get a defined space width, escape sequences like
 .squoted_char "\[rs]\ "
@@ -700,9 +700,9 @@ horizontal jump to the next pre-defined tab position.
 There is a sophisticated interface for handling tab positions.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "NUMERICAL EXPRESSIONS"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 A
 .B numerical value
@@ -731,32 +731,32 @@ language defines the following scaling indicators.
 .
 .TPx
 .B c
-Centimeter
+centimeter
 .
 .TPx
 .B i
-Inch
+inch
 .
 .TPx
 .B P
-Pica\ \[eq]\ 1/6\ inch
+pica\ \[eq]\ 1/6\ inch
 .
 .TPx
 .B p
-Point\ \[eq]\ 1/72\ inch
+point\ \[eq]\ 1/72\ inch
 .
 .TPx
 .B m
-Em\ \[eq]\ \f[R]the font size in points (approx.\& width of letter
+em\ \[eq]\ \f[R]the font size in points (approx.\& width of letter
 \[oq]\f[CR]m\f[R]\[cq])
 .
 .TPx
 .B M
-100\^th \f[R]of an \f[CR]Em
+100\^th \f[R]of an \f[CR]em
 .
 .TPx
 .B n
-En\ \[eq]\ Em/2
+en\ \[eq]\ em/2
 .
 .TPx
 .B u
@@ -765,6 +765,9 @@ Basic unit for actual output device
 .TPx
 .B v
 Vertical line space in basic units
+.
+.TPx
+.B s
 scaled point\ \[eq]\ 1/\f[CI]sizescale\f[R] of a point (defined in
 font \f[I]DESC\f[] file)
 .
@@ -890,17 +893,21 @@ as the default scaling indicator.
 .
 .
 .P
-For details see the groff info file.
+For details see the
+.I groff
+Texinfo manual.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH CONDITIONS
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .B Conditions
 occur in tests raised by the
-.request if ,
-.request ie ,
+.request if\c
+,
+.request ie\c
+,
 and the
 .request while
 requests.
@@ -1002,9 +1009,9 @@ This maintains bug-compatibility with AT&T
 .IR troff .
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH REQUESTS
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 This section provides a short reference for the predefined requests.
 .
@@ -1025,7 +1032,9 @@ Some requests have optional arguments with a different behaviour.
 .
 Not all of these details are outlined here.
 .
-Refer to the groff info file and
+Refer to the
+.I groff
+Texinfo manual and
 .BR groff_diff (@MAN7EXT@)
 for all details.
 .
@@ -1078,8 +1087,8 @@ If an expression defined as
 starts with a
 .squoted_char +
 sign the resulting value of the expression is added to an already
-existing value inherent to the related request, e.g.\& adding to a number
-register.
+existing value inherent to the related request, e.g.\& adding to a
+number register.
 .
 If the expression starts with a
 .squoted_char -
@@ -1095,9 +1104,9 @@ To assign a negative number either prepend\~0 or enclose the negative
 number in parentheses.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Request Short Reference"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .PD 0
 .
@@ -1229,7 +1238,7 @@ Print a backtrace of the input on stderr.
 Embolden
 .I font
 by
-.IR N \\-1
+.IR N \-1
 units.
 .
 .TPx
@@ -1283,9 +1292,7 @@ Line break.
 .
 .TPx
 .REQ .brp
-Break and spread output line.
-Same as
-.esc p .
+Break output line; adjust if applicable.
 .
 .TPx
 .REQ .break
@@ -1328,11 +1335,11 @@ Copy contents of file
 unprocessed to stdout or to the diversion.
 .
 .TPx
-.REQ .cflags "mode c1 c2 .\|.\|.\&"
+.REQ .cflags "mode c1 c2 \fR\&.\|.\|.\&\fP"
 Treat characters
 .IR c1 ,
 .IR c2 ,
-.I .\|.\|.\&
+\&.\|.\|.\&
 according to
 .I mode
 number.
@@ -1358,11 +1365,11 @@ Chop the last character off macro, string, or diversion
 .IR object .
 .
 .TPx
-.REQ .class "name c1 c2 .\|.\|.\&"
+.REQ .class "name c1 c2 \fR\&.\|.\|.\&\fP"
 Assign a set of characters, character ranges, or classes
 .IR c1 ,
 .IR c2 ,
-.I .\|.\|.\&
+\&.\|.\|.\&
 to
 .IR name .
 .
@@ -1477,11 +1484,12 @@ or as a string of four-digit hexadecimal components with two leading
 .BR # .
 The color
 .B default
-can\[aq]t be redefined.
+can't be redefined.
 .
 .TPx
 .REQ .dei "macro"
-Define or redefine a macro whose name is contained in the string register
+Define or redefine a macro whose name is contained in the string
+register
 .I macro
 until
 .B ..\&
@@ -1528,6 +1536,9 @@ End current diversion.
 .REQ .di "macro"
 Divert to
 .IR macro .
+See
+.BR groff_tmac (@MAN5EXT@)
+for more details.
 .
 .TPx
 .REQ .do "name"
@@ -1568,7 +1579,8 @@ Set escape character to
 .TPx
 .REQ .ecr
 Restore escape character saved with
-.request .ecs .
+.request .ecs\c
+\&.
 .
 .TPx
 .REQ .ecs
@@ -1577,7 +1589,8 @@ Save current escape character.
 .TPx
 .REQ .el "anything"
 Else part for if-else (\c
-.request ie )
+.request .ie\c
+)
 request.
 .
 .TPx
@@ -1693,22 +1706,23 @@ Reset list of special fonts for
 to be empty.
 .
 .TPx
-.REQ .fspecial "font s1 s2 .\|.\|.\&"
+.REQ .fspecial "font s1 s2 \fR\&.\|.\|.\&\fP"
 When the current font is
 .IR font ,
 then the fonts
 .IR s1 ,
 .IR s2 ,
-.I .\|.\|.\&
+\&.\|.\|.\&
 are special.
 .
 .TPx
 .REQ .ft
 Return to previous font.
 Same as
-.request \[rs]f[]
+.request \[rs]
 or
-.request \[rs]fP .
+.request \[rs]\c
+\&.
 .
 .TPx
 .REQ .ft "font"
@@ -1727,7 +1741,7 @@ to
 .
 .TPx
 .REQ .fzoom "font"
-Don\[aq]t magnify
+Don't magnify
 .IR font .
 .
 .TPx
@@ -1755,7 +1769,7 @@ Set up additional hyphenation indicator character\~\c
 .IR c .
 .
 .TPx
-.REQ .hcode "c1 code1 c2 code2 .\|.\|.\&"
+.REQ .hcode "c1 code1 \fR[\fPc2 code2\fR]\fP \fR\&.\|.\|.\&\fP"
 Set the hyphenation code of character
 .I c1
 to
@@ -1787,9 +1801,10 @@ Append hyphenation patterns from
 .IR file .
 .
 .TPx
-.REQ .hpfcode "a b c d .\|.\|.\&"
+.REQ .hpfcode "a b c d \fR\&.\|.\|.\&\fP"
 Set input mapping for
-.request .hpf .
+.request .hpf\c
+\&.
 .
 .TPx
 .REQ .hw "words"
@@ -1821,7 +1836,8 @@ If
 then
 .I anything
 else goto
-.request .el .
+.request .el\c
+\&.
 .
 .TPx
 .REQ .if "cond anything"
@@ -1864,9 +1880,8 @@ lines.
 .REQ .itc "N trap"
 Same as
 .request .it
-but count lines interrupted with
-.esc c
-as one line.
+but don't count lines interrupted with
+.esc c .
 .
 .TPx
 .REQ .kern
@@ -1953,7 +1968,7 @@ Change to the previous value of additional intra-line skip.
 Set additional intra-line skip value to
 .IR N ,
 i.e.,
-.IR N \\-1
+.IR N \-1
 blank lines are inserted after each text output line.
 .
 .TPx
@@ -1981,9 +1996,12 @@ from right margin (default scaling indicator\~\c
 .scaleindicator m ).
 .
 .TPx
-.REQ .mk "register"
+.REQ .mk "\fR[\fPregister\fR]\fP"
 Mark current vertical position in
-.IR register .
+.IR register ,
+or in an internal register used by
+.B .rt
+if no argument.
 .
 .TPx
 .REQ .mso "file"
@@ -2010,7 +2028,7 @@ vertical space (default scaling indicator\~\c
 .
 .TPx
 .REQ .nf
-No filling or adjusting of output-lines.
+No filling or adjusting of output lines.
 .
 .TPx
 .REQ .nh
@@ -2124,7 +2142,8 @@ Pipe output to
 Set page length to default
 .scalednumber 11 i .
 The current page length is stored in
-.register .p .
+.register .p\c
+\&.
 .
 .TPx
 .REQ .pl "\[+-]N"
@@ -2156,7 +2175,8 @@ on stderr.
 Change to previous page offset.
 .
 The current page offset is available in
-.register .o .
+.register .o\c
+\&.
 .
 .TPx
 .REQ .po "\[+-]N"
@@ -2200,11 +2220,11 @@ Change post-vertical line spacing according to
 .scaleindicator p ).
 .
 .TPx
-.REQ .rchar "c1 c2 .\|.\|.\&"
+.REQ .rchar "c1 c2 \fR\&.\|.\|.\&\fP"
 Remove the definitions of entities
 .IR c1 ,
 .IR c2 ,
-.I .\|.\|.\&
+\&.\|.\|.\&
 .
 .TPx
 .REQ .rd "prompt"
@@ -2216,15 +2236,15 @@ Return from a macro.
 .
 .TPx
 .REQ .return "anything"
-Return twice, namely from the macro at the current level and from the macro
-one level higher.
+Return twice, namely from the macro at the current level and from the
+macro one level higher.
 .
 .TPx
-.REQ .rfschar "f c1 c2 .\|.\|.\&"
+.REQ .rfschar "f c1 c2 \fR\&.\|.\|.\&\fP"
 Remove the definitions of entities
 .IR c1 ,
 .IR c2 ,
-.I .\|.\|.\&
+\&.\|.\|.\&
 for font
 .IR f .
 .
@@ -2236,12 +2256,12 @@ input lines.
 .
 .TPx
 .REQ .rm "name"
-Remove request, macro, or string
+Remove request, macro, diversion, or string
 .IR name .
 .
 .TPx
 .REQ .rn "old new"
-Rename request, macro, or string
+Rename request, macro, diversion, or string
 .I old
 to
 .IR new .
@@ -2263,10 +2283,19 @@ Remove
 Restore spacing; turn no-space mode off.
 .
 .TPx
+.REQ .rt
+Return
+.I (upward only)
+to vertical position marked by
+.B .mk
+on the current page.
+.
+.TPx
 .REQ .rt "\[+-]N"
 Return
 .I (upward only)
-to marked vertical place (default scaling indicator\~\c
+to specified distance from the top of the page (default scaling
+indicator\~\c
 .scaleindicator v ).
 .
 .TPx
@@ -2293,11 +2322,11 @@ In a macro, shift the arguments by
 positions.
 .
 .TPx
-.REQ .sizes "s1 s2 .\|.\|.\& sn \fB[0]\fP"
+.REQ .sizes "s1 s2 \fR\&.\|.\|.\&\fP s\fRn\fP \fR[\fB0\fP\fR]\fP"
 Set available font sizes similar to the
 .B sizes
 command in a
-.B DESC
+.I DESC
 file.
 .
 .TPx
@@ -2322,7 +2351,7 @@ up or down according to sign of
 Reset global list of special fonts to be empty.
 .
 .TPx
-.REQ .special "s1 s2 .\|.\|.\&"
+.REQ .special "s1 s2 \fR\&.\|.\|.\&\fR"
 Fonts
 .IR s1 ,
 .IR s2 ,
@@ -2396,23 +2425,20 @@ Set tabs after every position that is a multiple of
 (default scaling indicator\~\c
 .scaleindicator m ).
 .TPx
-.REQ .ta "n1 n2 .\|.\|.\& nn \f[CB]T\f[] r1 r2 .\|.\|.\& rn"
+.REQ .ta "n1 n2 \fR\&.\|.\|.\&\fP n\fRn\fP \f[CB]T\f[] r1 r2 \
+\fR\&.\|.\|.\&\fP r\fRn\fP"
 Set tabs at positions
 .IR n1 ,
 .IR n2 ,
-.Text .\|.\|.,
-.IR n,
+\&.\|.\|.\&,
+.IR n n,
 then set tabs at
-.IR nn + r1 ,
-.IR nn + r2 ,
-.Text .\|.\|.,
-.IR nn + rn ,
-then at
-.IR nn + rn + r1 ,
-.IR nn + rn + r2 ,
-.Text .\|.\|.,
-.IR nn + rn + rn ,
-and so on.
+.IR n n+ m \[tmu] r n+ r1
+through
+.IR n n+ m \[tmu] r n+ r n,
+where
+.I m
+increments from 0, 1, 2, \&.\|.\|.\& to infinity.
 .
 .\".TPx
 .\".REQ .tar
@@ -2441,20 +2467,21 @@ Enable track kerning for
 .IR font .
 .
 .TPx
-.REQ .tl "\f[CB]\[cq]\f[]left\f[CB]\[cq]\f[]center\f[CB]\[cq]\f[]right\f[CB]\[cq]\f[]"
+.REQ .tl "\f[CB]\[cq]\f[]left\f[CB]\[cq]\f[]center\f[CB]\[cq]\f[]right\
+\f[CB]\[cq]\f[]"
 Three-part title.
 .
 .TPx
 .REQ .tm "anything"
 Print
 .I anything
-on stdout.
+on stderr.
 .
 .TPx
 .REQ .tm1 "anything"
 Print
 .I anything
-on stdout, allowing leading whitespace if
+on stderr, allowing leading whitespace if
 .I anything
 starts with
 \&\f[CB]\[dq]\f[]
@@ -2467,7 +2494,7 @@ Similar to
 without emitting a final newline.
 .
 .TPx
-.REQ .tr "abcd.\|.\|.\&"
+.REQ .tr "abcd\fR\&.\|.\|.\&\fP"
 Translate
 .I a
 to
@@ -2483,7 +2510,7 @@ Transparently output the contents of file
 .IR filename .
 .
 .TPx
-.REQ .trin "abcd.\|.\|.\&"
+.REQ .trin "abcd\fR\&.\|.\|.\&\fP"
 This is the same as the
 .request tr
 request except that the
@@ -2492,7 +2519,7 @@ request uses the character code (if any) before the character
 translation.
 .
 .TPx
-.REQ .trnt "abcd.\|.\|.\&"
+.REQ .trnt "abcd\fR\&.\|.\|.\&\fP"
 This is the same as the
 .request tr
 request except that the translations do not apply to text that is
@@ -2512,7 +2539,8 @@ false.
 Set underline font to
 .I font
 (to be switched to by
-.request .ul ).
+.request .ul\c
+).
 .
 .TPx
 .REQ .ul "N"
@@ -2601,42 +2629,44 @@ for an overview) or from a preprocessor.
 .
 .
 .P
-Preprocessor macros are easy to be recognized.
+Preprocessor macros are easy to recognize.
 .
-They enclose their code into a pair of characteristic macros.
+They enclose their code between a pair of characteristic macros.
 .
 .
 .P
 .TS
-box, center, tab (@);
+box, center, tab (^);
 c | c | c
 CfCB | CfCB | CfCB.
-preprocessor@start macro@ end macro
+preprocessor^start macro^ end macro
 =
-chem@.cstart@.cend
-eqn@.EQ@.EN
-gideal@.IS@.IE
-grap@.G1@.G2
-grn@.GS@.GE
-@@.IF
-pic@.PS@.PE
-refer@.R1@.R2
-soelim@\f[I]none@\f[I]none
-tbl@.TS@.TE
+@g@chem^.cstart^.cend
+@g@eqn^.EQ^.EN
+grap^.G1^.G2
+@g@grn^.GS^.GE
+.\" Keep the .IF line below the @g@ideal line.
+@g@ideal^.IS^.IE
+^^.IF
+@g@pic^.PS^.PE
+@g@refer^.R1^.R2
+@g@soelim^\f[I]none^\f[I]none
+@g@tbl^.TS^.TE
 _
-glilypond@.lilypond start@.lilypond stop
-gperl@.Perl start@.Perl stop
-gpinyin@.pinyin start@.pinyin stop
+glilypond^.lilypond start^.lilypond stop
+gperl^.Perl start^.Perl stop
+gpinyin^.pinyin start^.pinyin stop
 .TE
 .
 .
 .P
-Note that the \[oq]ideal\[cq] preprocessor is not available in groff yet.
+Note that the \[oq]@g@ideal\[cq] preprocessor is not available in groff
+yet.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "ESCAPE SEQUENCES"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 Escape sequences are in-line language elements usually introduced by a
 backslash
@@ -2653,7 +2683,7 @@ end of the argument.
 .P
 This is done by enclosing names (escape name and arguments consisting
 of a variable name) by a pair of brackets
-.BI \[lB] name \[rB] 
+.BI \[lB] name \[rB]
 and constant arguments (number expressions and characters) by
 apostrophes (ASCII 0x27) like
 .BI \[cq] constant \[cq] \f[R].
@@ -2686,7 +2716,7 @@ but there is no two-character analogue.
 .
 .P
 While one-character escape sequences are mainly used for in-line
-functions and system related tasks, the two-letter names following the
+functions and system-related tasks, the two-letter names following the
 .esc (
 construct are glyphs predefined by the roff system; these are called
 \[oq]Special Characters\[cq] in the classical documentation.
@@ -2696,13 +2726,13 @@ Escapes sequences of the form
 denote glyphs too.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Single-Character Escapes"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .PD 0
 .
-.\" --------- comments ---------
+.\" ========= comments =========
 .
 .TP
 .ESC \[dq]
@@ -2720,7 +2750,7 @@ This is like
 .esc \[dq]
 except that the terminating newline is ignored as well.
 .
-.\" --------- strings ---------
+.\" ========= strings =========
 .
 .TP
 .ESC * s
@@ -2739,16 +2769,16 @@ The string stored in the string variable with name
 (with arbitrary length).
 .
 .TP
-.ESC[] * "stringvar arg1 arg2 .\|.\|."
+.ESC[] * "stringvar arg1 arg2 \fR\&.\|.\|.\fP"
 The string stored in the string variable with arbitrarily long name
 .IR stringvar ,
 taking
 .IR arg1 ,
 .IR arg2 ,
-.I .\|.\|.\&
+\&.\|.\|.\&
 as arguments.
 .
-.\" --------- macro arguments ---------
+.\" ========= macro arguments =========
 .
 .TP
 .ESC $0
@@ -2795,7 +2825,7 @@ argument to the
 .request ds
 request.
 .
-.\" --------- escaped characters ---------
+.\" ========= escaped characters =========
 .
 .TP
 .ESC \e
@@ -2821,7 +2851,7 @@ The grave accent \[ga]; same as
 Unescaped: left quote, backquote (ASCII 0x60).
 .
 .TP
-.ESC -
+.ESC \-
 The \- (minus) sign in the current font.
 .
 .TP
@@ -2832,8 +2862,9 @@ the underline character.
 .
 .TP
 .ESC .
-The same as a dot (\[oq].\[cq]).  Necessary in nested macro
-definitions so that \[oq]\[rs]\[rs]..\[cq] expands to \[oq]..\[cq].
+The same as a dot (\[oq].\[cq]).
+Necessary in nested macro definitions so that \[oq]\[rs]\[rs]..\[cq]\&
+expands to \[oq]..\[cq].
 .
 .TP
 .ESC %
@@ -2857,7 +2888,7 @@ and
 .esc ? .
 .
 .
-.\" --------- spacing ---------
+.\" ========= spacing =========
 .
 .TP
 .ESC \& space
@@ -2915,7 +2946,7 @@ but without a soft hyphen character).
 .ESC "" newline
 Ignored newline, for continuation lines.
 .
-.\" --------- structuring ---------
+.\" ========= structuring =========
 .
 .TP
 .ESC {
@@ -2925,14 +2956,13 @@ Begin conditional input.
 .ESC }
 End conditional input.
 .
-.\" --------- longer escape names ---------
+.\" ========= longer escape names =========
 .
 .TP
 .ESC ( sc
 A glyph with two-character name
 .IR sc ;
-see section
-.BR "Special Characters" .
+see section \[lq]Special Characters\[rq] below.
 .
 .TP
 .ESC[] "" name
@@ -2941,13 +2971,13 @@ A glyph with name
 (of arbitrary length).
 .
 .TP
-.ESC[] "" "comp1 comp2 .\|.\|."
+.ESC[] "" "comp1 comp2 \fR\&.\|.\|.\&\fP"
 A composite glyph with components
 .IR comp1 ,
 .IR comp2 ,
-.I .\|.\|.
+\&.\|.\|.\&
 .
-.\" --------- alphabetical escapes ---------
+.\" ========= alphabetical escapes =========
 .
 .TP
 .ESC a
@@ -2961,7 +2991,7 @@ is acceptable as a name of a string, macro, diversion, register,
 environment or font it expands to\~1, and to\~0 otherwise.
 .
 .TP
-.ESCq b abc.\|.\|.\&
+.ESCq b abc\fR\&.\|.\|.\&\fP
 Bracket building function.
 .
 .TP
@@ -2973,7 +3003,16 @@ to\~0 otherwise.
 .
 .TP
 .ESC c
-Interrupt text processing.
+Continue output line at next input line.
+Anything after this escape on the same line is ignored except
+.ESC R
+(which works as usual).
+Anything before
+.ESC c
+on the same line is appended to the current partial output line.
+The next non-command line after a line interrupted with
+.ESC c
+counts as a new input line.
 .
 .TP
 .ESCq C glyph
@@ -2991,7 +3030,9 @@ Forward (down) 1/2 em (1/2 line in nroff).
 .ESCq D charseq
 Draw a graphical element defined by the characters in
 .IR charseq ;
-see the groff info file for details.
+see the
+.I groff
+Texinfo manual for details.
 .
 .TP
 .ESC e
@@ -3175,7 +3216,7 @@ Useful for adding (named) entities to a document using the
 request and friends.
 .
 .TP
-.ESCq o abc.\|.\|.\&
+.ESCq o abc\fR\&.\|.\|.\&\fP
 Overstrike glyphs
 .IR a ,
 .IR b ,
@@ -3196,7 +3237,7 @@ Mainly for internal use.
 .
 .TP
 .ESC p
-Break and spread output line.
+Break output line at next word boundary; adjust if applicable.
 .
 .TP
 .ESC r
@@ -3367,9 +3408,9 @@ defined escape sequence, the backslash is silently ignored and the
 character maps to itself.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Special Characters"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 [Note: \[oq]Special Characters\[cq] is a misnomer; those entities are
 (output) glyphs, not (input) characters.]
@@ -3555,13 +3596,13 @@ Plus-minus sign
 .RE
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Unicode Characters"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
-There is the extended escape
+The extended escape
 .B u
-that allows to include all available Unicode characters into some
+allows the inclusion of all available Unicode characters into a
 .I roff
 file.
 .
@@ -3572,13 +3613,13 @@ file.
 is the escape name.
 .
 .I xxxx
-is a hexadecimal number of 4 hex digits, such as
+is a hexadecimal number of four hex digits, such as
 .B 0041
 for the letter
 .BR A ,
-see
+thus
 .BR \e[u0041] .
-. 
+.
 .
 .TP
 .BI \e[u yyyyy ]
@@ -3586,17 +3627,17 @@ see
 is the escape name.
 .
 .I yyyyy
-is a hexadecimal number of 5 hex digits, such as
+is a hexadecimal number of five hex digits, such as
 .B 2FA1A
-for a Chinese looking character for
+for a Chinese-looking character from the Unicode block
 .IR "CJK Compatibility Ideographs Supplement" ,
-see
+thus
 .BR \e[u2FA1A] .
 .
 .
 .P
-Both hexadecimal collections mean the corresponding Unicode code for a
-character.
+The hexadecimal value indicates the corresponding Unicode code point for
+character.
 .
 .
 .TP
@@ -3608,19 +3649,22 @@ character.
 and
 .I hex3
 are all Unicode hexadecimal codes (4 or 5 hex digits) that are used
-for overstriking, e.g.
+for overstriking, e.g.\&
 .B \e[u0041_0301]
 is
-.I "A acute"
-.BR \['A] .
+.IR "A acute" ,
+which can also be specified as
+.BR \['A] ;
+see
+.BR groff_char (7).
 .
 .
 .P
-The availability of the Unicode characters depends on the used font.
+The availability of the Unicode characters depends on the font used.
 .
 For text mode, the device
-.B -Tutf8
-is quite complete, for
+.B \-Tutf8
+is quite complete; for
 .I troff
 modes it might happen that some or many characters will not be
 displayed.
@@ -3628,9 +3672,9 @@ displayed.
 Please check your fonts.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Strings"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 Strings are defined by the
 .request ds
@@ -3643,7 +3687,7 @@ escape sequence.
 Strings share their name space with macros.
 .
 So strings and macros without arguments are roughly equivalent; it is
-possible to call a string like a macro and vice-versa, but this often
+possible to call a string like a macro and vice versa, but this often
 leads to unpredictable results.
 .
 The following string is the only one predefined in groff.
@@ -3652,17 +3696,19 @@ The following string is the only one predefined in groff.
 .STRING .T
 The name of the current output device as specified by the
 .option \-T
-command line option.
+command-line option.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH REGISTERS
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 Registers are variables that store a value.
-In groff, most registers store numerical values (see section
-.B NUMERICAL EXPRESSIONS
-above), but some can also hold a string value.
+.
+In groff,
+most registers store numerical values
+(see section \[lq]Numerical Expressions\[rq] above),
+but some can also hold a string value.
 .
 .
 .P
@@ -3692,9 +3738,9 @@ Please keep in mind that the
 decoration is not part of the register name.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Read-only Registers"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The following registers have predefined values that should not be
 modified by the user (usually, registers starting with a dot are
@@ -3781,7 +3827,8 @@ the center of an accent over that glyph should be placed.
 .TPx
 .REG .d
 Current vertical place in current diversion; equal to
-.register nl .
+.register nl\c
+\&.
 .
 .TPx
 .REG .ev
@@ -3819,12 +3866,13 @@ Text base-line high-water mark on current page or diversion.
 .
 .TPx
 .REG .H
-Available horizontal resolution in basic units.
+Number of basic units per horizontal unit of output device resolution.
 .
 .TPx
 .REG .height
 The current font height as set with
-.request \[rs]H .
+.request \[rs]H\c
+\&.
 .
 .TPx
 .REG .hla
@@ -3882,7 +3930,8 @@ It can be stored and used to set adjustment.
 .
 .TPx
 .REG .k
-The current horizontal output position (relative to the current indentation).
+The current horizontal output position (relative to the current
+indentation).
 .TPx
 .REG .kern
 1\~if pairwise kerning is enabled, 0\~otherwise.
@@ -3894,7 +3943,8 @@ Current line length.
 .TPx
 .REG .L
 The current line spacing setting as set by
-.request .ls .
+.request .ls\c
+\&.
 .
 .TPx
 .REG .lg
@@ -3937,7 +3987,8 @@ The amount of space that was needed in the last
 request that caused a trap to be sprung.
 .
 Useful in conjunction with
-.register .trunc .
+.register .trunc\c
+\&.
 .
 .TPx
 .REG .ns
@@ -3958,9 +4009,10 @@ Current page length.
 .
 .TPx
 .REG .P
-1\~if the current page is being printed, 0\~otherwise (as determined by the
+1\~if the current page is being printed, 0\~otherwise (as determined by
+the
 .option \-o
-command line option).
+command-line option).
 .
 .TPx
 .REG .pe
@@ -4002,7 +4054,8 @@ Current point size as a decimal fraction.
 .TPx
 .REG .slant
 The slant of the current font as set with
-.request \eS .
+.request \eS\c
+\&.
 .
 .TPx
 .REG .sr
@@ -4046,13 +4099,15 @@ request.
 .TPx
 .REG .trunc
 The amount of vertical space truncated by the most recently sprung
-vertical position trap, or, if the trap was sprung by a
+vertical position trap, or, if the trap was sprung by an
 .request ne
 request, minus the amount of vertical motion produced by
-.request .ne .
+.request .ne\c
+\&.
 .
 Useful in conjunction with the
-.register .ne .
+.register .ne\c
+\&.
 .
 .TPx
 .REG .u
@@ -4068,7 +4123,7 @@ Current vertical line spacing.
 .
 .TPx
 .REG .V
-Available vertical resolution in basic units.
+Number of basic units per vertical unit of output device resolution.
 .
 .TPx
 .REG .vpt
@@ -4105,9 +4160,9 @@ magnification).
 .PD
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Writable Registers"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The following registers can be read and written by the user.
 They have predefined default values, but these can be modified for
@@ -4159,13 +4214,15 @@ Current horizontal position at input line.
 .REG llx
 Lower left x-coordinate (in PostScript units) of a given PostScript
 image (set by
-.request .psbb ).
+.request .psbb\c
+).
 .
 .TPx
 .REG lly
 Lower left y-coordinate (in PostScript units) of a given PostScript
 image (set by
-.request .psbb ).
+.request .psbb\c
+).
 .
 .TPx
 .REG ln
@@ -4202,8 +4259,8 @@ Vertical position of last printed text base-line.
 .REG opminx
 .TPx
 .REG opminy
-These four registers mark the top left and bottom right hand corners of a box
-which encompasses all written glyphs.
+These four registers mark the top left and bottom right hand corners of
+a box which encompasses all written glyphs.
 They are reset to \-1 by
 .escarg O 0
 or
@@ -4212,13 +4269,15 @@ or
 .TPx
 .REG rsb
 Like
-.register sb ,
+.register sb\c
+,
 but takes account of the heights and depths of glyphs.
 .
 .TPx
 .REG rst
 Like
-.register st ,
+.register st\c
+,
 but takes account of the heights and depths of glyphs.
 .
 .TPx
@@ -4269,13 +4328,15 @@ request.
 .REG urx
 Upper right x-coordinate (in PostScript units) of a given PostScript
 image (set by
-.request .psbb ).
+.request .psbb\c
+).
 .
 .TPx
 .REG ury
 Upper right y-coordinate (in PostScript units) of a given PostScript
 image (set by
-.request .psbb ).
+.request .psbb\c
+).
 .
 .TPx
 .REG year
@@ -4292,9 +4353,60 @@ instead.
 .PD
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
+.SH HYPHENATION
+.\" ====================================================================
+.
+The
+.REQ .hy
+request,
+given an integer argument,
+controls when hyphenation applies.
+.
+The default value is
+.BR 1 ,
+which enables hyphenation almost everywhere (see below).
+.
+Macro packages often override this default.
+.
+.
+.TP
+.B 1
+disables hyphenation only after the first and before the last
+character of a word.
+.
+.TP
+.B 2
+disables hyphenation only of the last word on a page or column.
+.
+.TP
+.B 4
+disables hyphenation only before the last two characters of a word.
+.
+.TP
+.B 8
+disables hyphenation only after the first two characters of a word.
+.
+.TP
+.B 16
+enables hyphenation before the last character of a word.
+.
+.TP
+.B 32
+enables hyphenation after the first character of a word.
+.
+.P
+The values are additive.
+.
+Some values cannot be used together because they contradict;
+for instance,
+4 and\~16;
+8 and\~32.
+.
+.
+.\" ====================================================================
 .SH UNDERLINING
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 In the
 .I RUNOFF
@@ -4305,9 +4417,9 @@ But in
 this is much more difficult.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS Underlining with .ul
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 There exists a
 .I groff
@@ -4323,9 +4435,9 @@ it produces only a font change into
 So this request is not really useful.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS Underlining with .UL from ms
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 In the \[oq]ms\[cq] macro package in tmac/s.tmac
 .BR groff_ms (@MAN7EXT@),
@@ -4338,9 +4450,9 @@ not in
 .BR nroff .
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS Underlining macro definitions
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 So one can use the
 .I italic
@@ -4359,14 +4471,14 @@ for writing a useful new macro, something like
 \&.de UNDERLINE
 \&. ie n \[rs]\[rs]$1\[rs]f[I]\[rs]\[rs]$2\[rs]f[P]\[rs]\[rs]$3
 \&. el \[rs]\[rs]$1\[rs]Z\[aq]\[rs]\[rs]$2\[aq]\[rs]v\[aq].25m\[aq]\
-\[rs]D\[aq]l \[rs]w\[aq]\[rs]\[rs]$2\[aq]u 0\[aq]\[rs]v\[aq]-.25m\
-\[aq]\\[rs]\[rs]$3
+\[rs]D\[aq]l \[rs]w\[aq]\[rs]\[rs]$2\[aq]u 0\[aq]\[rs]v\[aq]\-.25m\
+\[aq]\[rs]\[rs]$3
 \&..
 .EE
 .RE
 .
 If
-.B doclifter (1)
+.BR doclifter (1)
 makes trouble, change the macro name
 .B UNDERLINE
 into some 2-letter word, like
@@ -4378,11 +4490,11 @@ to
 .BR \[rs]fP .
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS Underlining without macro definitions
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
-If one does not want to use macro definitions, e.g. when
+If one does not want to use macro definitions, e.g., when
 .B doclifter
 gets lost, use the following:
 .
@@ -4393,7 +4505,8 @@ gets lost, use the following:
 \&.ds u3 after
 \&.ie n \[rs]*[u1]\[rs]f[I]\[rs]*[u2]\[rs]f[P]\[rs]*[u3]
 \&.el \[rs]*[u1]\[rs]Z\[aq]\[rs]*[u2]\[aq]\[rs]v\[aq].25m\[aq]\[rs]D\
-\[aq]l \[rs]w\[aq]\[rs]*[u2]\[aq]u 0\[aq]\[rs]v\[aq]-.25m\[aq]\[rs]*[u3]
+\[aq]l \[rs]w\[aq]\[rs]*[u2]\[aq]u 0\[aq]\[rs]v\[aq]\-.25m\[aq]\[rs]*\
+[u3]
 .EE
 .RE
 .
@@ -4419,7 +4532,7 @@ Then these lines could look like
 \&.ds u3 after
 \&.ie n \[rs]*[u1]\[rs]fI\[rs]*(u2\[rs]fP\[rs]*(u3
 \&.el \[rs]*(u1\[rs]Z\[aq]\[rs]*(u2\[aq]\[rs]v\[aq].25m'\[rs]D\[aq]l \
-\[rs]w\[aq]\[rs]*(u2\[aq]u 0\[aq]\[rs]v\[aq]-.25m\[aq]\[rs]*(u3
+\[rs]w\[aq]\[rs]*(u2\[aq]u 0\[aq]\[rs]v\[aq]\-.25m\[aq]\[rs]*(u3
 .EE
 .RE
 .
@@ -4436,9 +4549,9 @@ after
 .RE
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS Underlining with Overstriking \ez and \e(ul
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 There is another possibility for underlining by using overstriking
 with
@@ -4507,13 +4620,13 @@ t after
 .ft R
 .RE
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH COMPATIBILITY
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
-The differences of the groff language in comparison to classical troff
-as defined by
-.I [CSTR\~#54]
+The differences between the groff language and classical troff as
+defined by
+[CSTR\~#54]
 are documented in
 .BR groff_diff (@MAN7EXT@).
 .
@@ -4524,29 +4637,30 @@ The groff system provides a compatibility mode, see
 on how to invoke this.
 .
 .
-.\" --------------------------------------------------------------------
-.SH BUGS
-.\" --------------------------------------------------------------------
-.
-Report bugs to the
-.MT bug-groff@gnu.org
-groff bug mailing list
+.\" ====================================================================
+.SH AUTHORS
+.\" ====================================================================
+This document was written by
+.MT groff\-bernd.warken\-72@\:web.de
+Bernd Warken
 .ME .
-Include a complete, self-contained example that will allow the bug to
-be reproduced, and say which version of groff you are using.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "SEE ALSO"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
-The main source of information for the groff language is the
-.B groff
-.BR info (1)
-file.
+.IR "Groff: The GNU Implementation of troff" ,
+by Trent A.\& Fisher and Werner Lemberg,
+is the primary
+.I groff
+manual.
+.
+You can browse it interactively with \(lqinfo groff\(rq.
 .
 Besides the gory details, it contains many examples.
 .
+.
 .TP
 .BR groff (@MAN1EXT@)
 the usage of the groff program and pointers to the documentation and
@@ -4554,8 +4668,10 @@ availability of the groff system.
 .
 .TP
 .BR groff_diff (@MAN7EXT@)
-the differences of the groff language as compared to classical roff.
+describes the differences between the groff language and classical
+troff.
 .
+.IP
 This is the authoritative document for the predefined language
 elements that are specific to groff.
 .
@@ -4568,34 +4684,53 @@ the predefined groff special characters (glyphs).
 the specification of fonts and the DESC file.
 .
 .TP
+.BR groff_tmac (@MAN5EXT@)
+contains an overview of available groff macro packages, instructions on
+how to interface them with a document, guidance on writing macro
+packages and using diversions, and historical information on macro
+package naming conventions.
+.TP
 .BR roff (@MAN7EXT@)
 the history of roff, the common parts shared by all roff systems, and
 pointers to further documentation.
 .
 .TP
-.I [CSTR\~#54]
-.UR http://\:cm.bell-labs.com/\:cm/\:cs/\:cstr/\:54.ps.gz
-Nroff/\:Troff User\[aq]s Manual by Ossanna & Kernighan
+[CSTR\~#54]
+.UR http://\:cm.bell\-labs.com/\:cm/\:cs/\:cstr/\:54.ps.gz
+Nroff/\:Troff User's Manual by Ossanna & Kernighan
 .UE
 \[em] the bible for classical troff.
 .
+.TP
+.I Wikipedia
+article about
+.I groff
+.UR https://\:en.wikipedia.org/\:wiki/\:Groff_%28software%29
+.UE .
+.
+.TP
+.I Tutorial about groff
+.UR dl.dropbox.com/\:u/\:4299293/\:grofftut.pdf
+Manas Laha - An Introduction to the GNU Groff Text Processing System
+.UE
+.
+.TP
+.I troff.org
+This is a collection of internet sites with classical
+.I roff
+documentations and other information.
 .
-.\" --------------------------------------------------------------------
-.SH COPYING
-.\" --------------------------------------------------------------------
-.co
-.\" --------------------------------------------------------------------
-.SH AUTHORS
-.\" --------------------------------------------------------------------
-.au
 .
-.cp \n[groff_C]
+.\" Restore compatibility mode (for, e.g., Solaris 10/11).
+.cp \n[groff_7_C]
 .
 .
-.\" --------------------------------------------------------------------
-.\" Emacs Setup
-.\" --------------------------------------------------------------------
+.\" ====================================================================
+.\" Editor settings
+.\" ====================================================================
 .
 .\" Local Variables:
 .\" mode: nroff
+.\" fill-column: 72
 .\" End:
+.\" vim: set filetype=groff textwidth=72:
similarity index 74%
rename from man/groff_char.man
rename to man/groff_char.7.man
index b35049b..1fefea3 100644 (file)
@@ -1,67 +1,45 @@
 '\" t
-.TH GROFF_CHAR @MAN7EXT@ "@MDATE@" "@VERSION@"
+.TH GROFF_CHAR @MAN7EXT@ "@MDATE@" "groff @VERSION@"
 .SH NAME
 groff_char \- groff glyph names
 .
-.\" The lines above were designed to satisfy `apropos'.
-.
-.\" For best results, format this document with `groff' (GNU roff).
+.\" For best results, format this document with 'groff' (GNU roff).
 .
 .\" groff_char(7):
 .\" Source file position: <groff_source>/man/groff_char.man
 .\" Installed position: <prefix>/share/man/man7/groff_char.7
 .
 .
-.\" --------------------------------------------------------------------
-.\" Legal terms
-.\" --------------------------------------------------------------------
-.
-.de co
-Copyright \(co 1989-2014 Free Software Foundation, Inc.
-
-This file is part of groff (GNU roff), which is a free software project.
-
-You can redistribute it and/or modify it under the terms of the GNU
-General Public License as published by the Free Software Foundation,
-either version 2 of the License, or (at your option) any later
-version.
-
-You should have received a copy of the GNU General Public License
-along with this program.
-.
-If not, see
-.UR http://www.gnu.org/licenses/gpl-2.0.html
-GPL2
-.UE .
-..
-.
-.de au
-This document was written by
-.MT jjc@jclark.com
-James Clark
-.ME
-with additions by
-.MT wl@gnu.org
-Werner Lemberg
-.ME
-and
-.MT groff-bernd.warken-72@web.de
-Bernd Warken
-.ME .
-.
-This document was revised to use real tables by
-.MT esr@thyrsus.com
-Eric S. Raymond
-.ME .
-..
-.
-.\" --------------------------------------------------------------------
+.\" ====================================================================
+.\" Legal Terms
+.\" ====================================================================
+.\"
+.\" Copyright (C) 1989-2018 Free Software Foundation, Inc.
+.\"
+.\" This file is part of groff (GNU roff), which is a free software
+.\" project.
+.\"
+.\" You can redistribute it and/or modify it under the terms of the GNU
+.\" General Public License as published by the Free Software Foundation,
+.\" either version 2 of the License, or (at your option) any later
+.\" version.
+.\"
+.\" You should have received a copy of the GNU General Public License
+.\" along with this program.
+.\"
+.\" If not, see <http://www.gnu.org/licenses/gpl-2.0.html>.
+.
+.
+.\" ====================================================================
 .\" Setup
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
+.
+.\" Save and disable compatibility mode (for, e.g., Solaris 10/11).
 .do nr groff_char_C \n[.C]
 .cp 0
 .
+.
 .\" groff only
 .\".if \n(.g .ne 2v
 .\".if \n(.g .sv 2v
@@ -76,9 +54,9 @@ Eric S. Raymond
 .do if !r ECFONTS .do fspecial CR R
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH DESCRIPTION
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 This manual page lists the standard
 .B groff
@@ -123,7 +101,8 @@ On EBCDIC platforms, only code page
 is supported (which contains the same characters as \%latin1; the
 input encoding file is called \f(CWcp1047.tmac\fP).
 .
-Again, some input characters are reserved for internal and special purposes.
+Again, some input characters are reserved for internal and special
+purposes.
 .
 .
 .P
@@ -141,9 +120,15 @@ Some of the predefined groff escape sequences (with names of length\ 1)
 also produce single glyphs; these exist for historical reasons or
 are printable versions of syntactical characters.
 .
-They include \[oq]\f(CW\e\e\fP\[cq], \[oq]\f(CW\e\'\fP\[cq],
-\[oq]\f(CW\e`\fP\[cq], \[oq]\f(CW\e-\fP\[cq], \[oq]\f(CW\e.\fP\[cq],
-and \[oq]\f(CW\ee\fP\[cq]; see
+They include
+\[oq]\f(CW\e\e\fP\[cq],
+\[oq]\f(CW\e\[aq]\fP\[cq],
+\[oq]\f(CW\e\[ga]\fP\[cq],
+\[oq]\f(CW\e\-\fP\[cq],
+\[oq]\f(CW\e.\fP\[cq],
+and
+\[oq]\f(CW\ee\fP\[cq];
+see
 .BR groff (@MAN7EXT@).
 .
 .
@@ -152,9 +137,9 @@ In groff, all of these different types of characters and glyphs can be
 tested positively with the \[oq]\f(CW.if\ c\fP\[cq] conditional.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH REFERENCE
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 In this section, the glyphs in groff are specified in tabular
 form.
@@ -205,9 +190,9 @@ or
 .BR \e[u0041_0300] .
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "7-bit Character Codes 32\(en126"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 These are the basic glyphs having 7-bit ASCII code values assigned.
 .
@@ -247,42 +232,53 @@ Lower case letters a\(enz (print as themselves).
 .
 .
 .P
-Most of the remaining characters not in the just described ranges print as
-themselves; the only exceptions are the following characters:
+Most of the remaining characters not in the just described ranges print
+as themselves; the only exceptions are the following characters:
 .
 .
 .TP
 .B \`
 the ISO \%latin1 \[oq]Grave Accent\[cq] (code\ 96) prints as \[oq], a
-left single quotation mark; the original character can be obtained
-with \[oq]\f(CW\e`\fP\[cq].
+left single quotation mark (Unicode u2018).
+The same output glyph can be requested explicitly
+with \[oq]\f(CW\e(oq\fP\[cq].
+The original character can be obtained
+with \[oq]\f(CW\e`\fP\[cq] (Unicode u0060).
 .
 .
 .TP
 .B \*(aq
-the ISO \%latin1 \[oq]Apostrophe\[cq] (code\ 39) prints as ', a right
-single quotation mark; the original character can be obtained with
-\[oq]\f(CW\e(aq\fP\[cq].
+the ISO \%latin1 \[oq]Apostrophe\[cq] (code\ 39) prints as \[cq],
+a right single quotation mark (Unicode u2019).
+The same output glyph is commonly used in typography to represent
+a punctation apostrophe, for example in contractions.
+It can be requested explicitly with \[oq]\f(CW\e(cq\fP\[cq].
+The original character can be obtained with
+\[oq]\f(CW\e(aq\fP\[cq] (Unicode u0027).
 .
 .
 .TP
 .B -
 the ISO \%latin1 \[oq]Hyphen, Minus Sign\[cq] (code\ 45) prints as a
-hyphen; a minus sign can be obtained with \[oq]\f(CW\e-\fP\[cq].
+hyphen (Unicode u2010).
+The same output glyph can be requested explicitly
+with \[oq]\f(CW\e(hy\fP\[cq].
+A minus sign can be obtained with \[oq]\f(CW\e-\fP\[cq] (Unicode u2212).
 .
 .
 .TP
 .B ~
 the ISO \%latin1 \[oq]Tilde\[cq] (code\ 126) is reduced in size to be
-usable as a diacritic; a larger glyph can be obtained with
-\[oq]\f(CW\e(ti\fP\[cq].
+usable as a diacritic (Unicode u02DC).
+A larger glyph can be obtained with
+\[oq]\f(CW\e(ti\fP\[cq] (Unicode u007E).
 .
 .
 .TP
 .B ^
 the ISO \%latin1 \[oq]Circumflex Accent\[cq] (code\ 94) is reduced in
-size to be usable as a diacritic; a larger glyph can be obtained with
-\[oq]\f(CW\e(ha\fP\[cq].
+size to be usable as a diacritic (Unicode u02C6); a larger glyph
+can be obtained with \[oq]\f(CW\e(ha\fP\[cq] (Unicode u005E).
 .
 .
 .P
@@ -297,13 +293,15 @@ _
 \[char36]      \[char36]       36      dollar  u0024   currency dollar sign
 \[char37]      \[char37]       37      percent u0025   percent
 \[char38]      \[char38]       38      ampersand       u0026   ampersand
-\[char39]      \[char39]       39      quoteright      u0027   right quote
+\[cq]  \[aq]   39      quoteright      u2019   right quote
+\[aq]  \e(aq           quotesingle     u0027   apostrophe quote
 \[char40]      \[char40]       40      parenleft       u0028   parentheses left
 \[char41]      \[char41]       41      parenright      u0029   parentheses right
 \[char42]      \[char42]       42      asterisk        u002A   asterisk
 \[char43]      \[char43]       43      plus    u002B   plus
 \[char44]      \[char44]       44      comma   u002C   comma
-\[char45]      \[char45]       45      hyphen  u2010   hyphen
+\[hy]  \[char45]       45      hyphen  u2010   hyphen
+\-     \e-             minus   u2212   minus sign
 \[char46]      \[char46]       46      period  u002E   period, dot
 \[char47]      \[char47]       47      slash   u002F   slash
 \[char58]      \[char58]       58      colon   u003A   colon
@@ -316,20 +314,23 @@ _
 \[char91]      \[char91]       91      bracketleft     u005B   square bracket left
 \[char92]      \[char92]       92      backslash       u005C   backslash
 \[char93]      \[char93]       93      bracketright    u005D   square bracket right
-\[char94]      \[char94]       94      circumflex      u005E   circumflex accent
+\[a^]  \[ha]   94      circumflex      u02C6   modifier circumflex
+\[ha]  \e(ha           asciicircum     u005E   circumflex accent
 \[char95]      \[char95]       95      underscore      u005F   underscore
-\[char96]      \[char96]       96      quoteleft       u0060   quote left
+\[oq]  \[ga]   96      quoteleft       u2018   left quote
+\[ga]  \e(ga           grave   u0060   grave accent
 \[char123]     \[char123]      123     braceleft       u007B   curly brace left
 \[char124]     \[char124]      124     bar     u007C   bar
 \[char125]     \[char125]      125     braceright      u007D   curly brace right
-\[char126]     \[char126]      126     tilde   u007E   tilde accent
+\[u02DC]       \[ti]   126     tilde   u02DC   small tilde
+\[ti]  \e(ti           asciitilde      u007E   tilde
 .TE
 .ad
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "8-bit Character Codes 160 to 255"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 They are interpreted as printable characters according to the
 .I latin1
@@ -368,7 +369,7 @@ are printable characters that print as themselves.
 .
 Although they can be specified directly with the keyboard on systems
 with a \%latin1 code page, it is better to use their glyph names;
-see next section.
+see the next section.
 .
 .P
 .na
@@ -474,9 +475,9 @@ _
 .ad
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Named Glyphs"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 Glyph names can be embedded into the document text by using escape
 sequences.
@@ -510,12 +511,14 @@ backslash, namely \%\[oq]\e-\[cq], which can be either accessed as
 \[oq]\f(CW\e\-\fP\[cq] or \[oq]\f(CW\e[-]\fP\[cq].
 .
 .TP
-\f(CW\e[\fP\,\fIbase_glyph composite_1 composite_2 \&.\|.\|.\/\fP\f(CW]\fP
+\f(CW\e[\fP\,\fIbase_glyph composite_1 composite_2 \&.\|.\|.\/\fP\
+\f(CW]\fP
 A composite glyph; see below for a more detailed description.
 .
 .
 .P
-In groff, each \%8-bit input character can also referred to by the construct
+In groff, each \%8-bit input character can also referred to by the
+construct
 \[oq]\f(CW\e[char\fP\,\fIn\/\fP\f(CW]\fP\[cq] where
 .I n
 is the decimal code of the character, a number between 0 and\ 255
@@ -528,23 +531,33 @@ They are normally mapped onto glyphs using the \f(CW.trin\fP request.
 .
 .P
 Another special convention is the handling of glyphs with names directly
-derived from a Unicode code point; this is shown in the 
+derived from a Unicode code point; this is shown in the
 \[oq]Unicode\[cq] column of the table below.
 .
-In general, all glyphs not having a name as listed in this manual page can
-be accessed with the \[oq]\f(CW\e[u\fP\,\fIXXXX\/\fP\f(CW]\fP\[cq]
-construct; please go to section \[oq]Using Symbols\[cq] in the groff info
-manual for more details.
+In general, all glyphs not having a name as listed in this manual page
+can be accessed with the
+\[oq]\f(CW\e[u\fP\,\fIXXXX\/\fP\f(CW]\fP\[cq]
+construct.
+.
+Refer to section \[lq]Using Symbols\[rq] in
+.IR "Groff: The GNU Implementation of troff" ,
+the
+.I groff
+Texinfo manual,
+which describes how
+.I groff
+glyph names are constructed.
 .
 .
 .P
-Moreover, new glyph names can be created by the \f(CW.char\fP request; see
+Moreover, new glyph names can be created by the \f(CW.char\fP request;
+see
 .BR groff (@MAN7EXT@).
 .
 .P
-In the following, a plus sign in the \[oq]Notes\[cq] column indicates
-that this particular glyph name appears in the PS version of the
-original troff documentation, CSTR\ 54.
+In the following, a plus sign \[oq]+\[cq] in the \[oq]Notes\[cq] column
+indicates that this particular glyph name appears in the PS version of
+the original troff documentation, CSTR\ 54.
 .
 .P
 Entries marked with \[oq]***\[cq] denote glyphs for mathematical
@@ -685,8 +698,8 @@ _
 \[a-]  \e[a-]  macron  u0304 (u00AF)   overbar accent
 \[a.]  \e[a.]  dotaccent       u0307 (u02D9)   dot accent
 \[a^]  \e[a^]  circumflex      u0302 (u005E)   circumflex accent
-\[aa]  \e[aa]  acute   u0301 (u00B4)   acute accent
-\[ga]  \e[ga]  grave   u0300 (u0060)   grave accent
+\[aa]  \e[aa]  acute   u0301 (u00B4)   acute accent +
+\[ga]  \e[ga]  grave   u0300 (u0060)   grave accent +
 \[ab]  \e[ab]  breve   u0306 (u02D8)   breve accent
 \[ac]  \e[ac]  cedilla u0327 (u00B8)   cedilla accent
 \[ad]  \e[ad]  dieresis        u0308 (u00A8)   umlaut accent
@@ -740,9 +753,9 @@ Output      Input   PostScript      Unicode Notes
 _
 \[r!]  \e[r!]  exclamdown      u00A1   inverted exclamation mark
 \[r?]  \e[r?]  questiondown    u00BF   inverted question mark
-\[em]  \e[em]  emdash  u2014   em-dash symbol
+\[em]  \e[em]  emdash  u2014   em-dash symbol +
 \[en]  \e[en]  endash  u2013   en-dash symbol
-\[hy]  \e[hy]  hyphen  u2010   hyphen symbol
+\[hy]  \e[hy]  hyphen  u2010   hyphen symbol +
 .TE
 .ad
 .
@@ -759,7 +772,7 @@ We map it rather arbitrarily to u23AA.
 .P
 Note that not all devices contain extensible bracket pieces which can
 be piled up with \[oq]\f(CW\eb\fP\[cq] due to the restrictions of the
-escape\[aq]s piling algorithm.
+escape's piling algorithm.
 .
 A general solution to build brackets out of pieces is the following
 macro:
@@ -768,10 +781,10 @@ macro:
 .nf
 .RS
 .ft C
-\&.\e" Make a pile centered vertically 0.5em\""
-\&.\e" above the baseline.\""
-\&.\e" The first argument is placed at the top.\""
-\&.\e" The pile is returned in string `pile'\""
+\&.\e" Make a pile centered vertically 0.5em
+\&.\e" above the baseline.
+\&.\e" The first argument is placed at the top.
+\&.\e" The pile is returned in string 'pile'
 \&.eo
 \&.de pile-make
 \&.  nr pile-wd 0
@@ -782,16 +795,16 @@ macro:
 \&.  while \en[pile-#] \e{\e
 \&.    nr pile-wd (\en[pile-wd] >? \ew'\e$[\en[pile-#]]')
 \&.    nr pile-ht +(\en[rst] - \en[rsb])
-\&.    as pile-args \ev'\en[rsb]u'\e"\""
-\&.    as pile-args \eZ'\e$[\en[pile-#]]'\e"\""
-\&.    as pile-args \ev'-\en[rst]u'\e"\""
+\&.    as pile-args \ev'\en[rsb]u'\e"
+\&.    as pile-args \eZ'\e$[\en[pile-#]]'\e"
+\&.    as pile-args \ev'-\en[rst]u'\e"
 \&.    nr pile-# -1
 \&.  \e}
 \&.
-\&.  ds pile \ev'(-0.5m + (\en[pile-ht]u / 2u))'\e"\""
-\&.  as pile \e*[pile-args]\e"\""
-\&.  as pile \ev'((\en[pile-ht]u / 2u) + 0.5m)'\e"\""
-\&.  as pile \eh'\en[pile-wd]u'\e"\""
+\&.  ds pile \ev'(-0.5m + (\en[pile-ht]u / 2u))'\e"
+\&.  as pile \e*[pile-args]\e"
+\&.  as pile \ev'((\en[pile-ht]u / 2u) + 0.5m)'\e"
+\&.  as pile \eh'\en[pile-wd]u'\e"
 \&..
 \&.ec
 .ft
@@ -804,11 +817,11 @@ bracket pieces in original troff can be used for other mathematical
 symbols also, for example \[oq]lf\[cq] and \[oq]rf\[cq] which provide
 the \[oq]floor\[cq] operator.
 .
-Other devices (most notably for DVI output) don\[aq]t unify such
+Other devices (most notably for DVI output) don't unify such
 glyphs.
 .
 For this reason, the four glyphs \[oq]lf\[cq], \[oq]rf\[cq],
-\[o]lc\[cq], and \[oq]rc\[cq] are not unified with similarly looking
+\[oq]lc\[cq], and \[oq]rc\[cq] are not unified with similarly looking
 bracket pieces.
 .
 In
@@ -842,7 +855,7 @@ right angle bracket
 T}
 
 \[bv]  \e[bv]  braceex u23AA   T{
-curly brace vertical extension
+curly brace vertical extension *** +
 T}
 \[braceex]     \e[braceex]     braceex u23AA   T{
 curly brace vertical extension
@@ -868,19 +881,19 @@ right square bracket extension
 T}
 
 \[lt]  \e[lt]  bracelefttp     u23A7   T{
-left curly brace top
+left curly brace top +
 T}
 \[bracelefttp] \e[bracelefttp] bracelefttp     u23A7   T{
 left curly brace top
 T}
 \[lk]  \e[lk]  braceleftmid    u23A8   T{
-left curly brace middle
+left curly brace middle +
 T}
 \[braceleftmid]        \e[braceleftmid]        braceleftmid    u23A8   T{
 left curly brace middle
 T}
 \[lb]  \e[lb]  braceleftbt     u23A9   T{
-left curly brace bottom
+left curly brace bottom +
 T}
 \[braceleftbt] \e[braceleftbt] braceleftbt     u23A9   T{
 left curly brace bottom
@@ -889,19 +902,19 @@ T}
 left curly brace extension
 T}
 \[rt]  \e[rt]  bracerighttp    u23AB   T{
-right curly brace top
+right curly brace top +
 T}
 \[bracerighttp]        \e[bracerighttp]        bracerighttp    u23AB   T{
 right curly brace top
 T}
 \[rk]  \e[rk]  bracerightmid   u23AC   T{
-right curly brace middle
+right curly brace middle +
 T}
 \[bracerightmid]       \e[bracerightmid]       bracerightmid   u23AC   T{
 right curly brace middle
 T}
 \[rb]  \e[rb]  bracerightbt    u23AD   T{
-right curly brace bottom
+right curly brace bottom +
 T}
 \[bracerightbt]        \e[bracerightbt]        bracerightbt    u23AD   T{
 right curly brace bottom
@@ -938,13 +951,13 @@ T}
 l l l l lx.
 Output Input   PostScript      Unicode Notes
 _
-\[<-]  \e[<-]  arrowleft       u2190   horizontal arrow left
-\[->]  \e[->]  arrowright      u2192   horizontal arrow right
+\[<-]  \e[<-]  arrowleft       u2190   horizontal arrow left +
+\[->]  \e[->]  arrowright      u2192   horizontal arrow right +
 \[<>]  \e[<>]  arrowboth       u2194   T{
 horizontal arrow in both directions
 T}
-\[da]  \e[da]  arrowdown       u2193   vertical arrow down
-\[ua]  \e[ua]  arrowup u2191   vertical arrow up
+\[da]  \e[da]  arrowdown       u2193   vertical arrow down +
+\[ua]  \e[ua]  arrowup u2191   vertical arrow up +
 \[va]  \e[va]  arrowupdn       u2195   T{
 vertical arrow in both directions
 T}
@@ -984,14 +997,14 @@ extension of the square root sign.
 l l l l lx.
 Output Input   PostScript      Unicode Notes
 _
-\[ba]  \e[ba]  bar     u007C   bar
-\[br]  \e[br]  SF110000        u2502   box rule
-\[ul]  \e[ul]  underscore      u005F   underscore
-\[rn]  \e[rn]  overline        u203E   overline
-\[ru]  \e[ru]  ---     ---     baseline rule
-\[bb]  \e[bb]  brokenbar       u00A6   broken bar
-\[sl]  \e[sl]  slash   u002F   slash, solidus
-\[rs]  \e[rs]  backslash       u005C   reverse slash, reverse solidus
+\[ba]  \e[ba]  bar     u007C
+\[br]  \e[br]  SF110000        u2502   box rule +
+\[ul]  \e[ul]  underscore      u005F   +
+\[rn]  \e[rn]  overline        u203E   +
+\[ru]  \e[ru]  ---     ---     baseline rule +
+\[bb]  \e[bb]  brokenbar       u00A6
+\[sl]  \e[sl]  slash   u002F   +
+\[rs]  \e[rs]  backslash       u005C   reverse solidus
 .TE
 .ad
 .
@@ -1007,16 +1020,16 @@ Use \[oq]\f(CW\e[radicalex]\fP\[cq], not
 l l l l lx.
 Output Input   PostScript      Unicode Notes
 _
-\[ci]  \e[ci]  circle  u25CB   circle
-\[bu]  \e[bu]  bullet  u2022   bullet
-\[dd]  \e[dd]  daggerdbl       u2021   double dagger sign
-\[dg]  \e[dg]  dagger  u2020   dagger
+\[ci]  \e[ci]  circle  u25CB   +
+\[bu]  \e[bu]  bullet  u2022   +
+\[dd]  \e[dd]  daggerdbl       u2021   double dagger sign +
+\[dg]  \e[dg]  dagger  u2020   dagger +
 \[lz]  \e[lz]  lozenge u25CA   lozenge, diamond, pound key
-\[sq]  \e[sq]  uni25A1 u25A1   white square
-\[ps]  \e[ps]  paragraph       u00B6   end of paragraphs marker
-\[sc]  \e[sc]  section u00A7   section sign
-\[lh]  \e[lh]  uni261C u261C   hand pointing left
-\[rh]  \e[rh]  a14     u261E   hand pointing right
+\[sq]  \e[sq]  uni25A1 u25A1   white square +
+\[ps]  \e[ps]  paragraph       u00B6   end of paragraph marker
+\[sc]  \e[sc]  section u00A7   section sign +
+\[lh]  \e[lh]  uni261C u261C   hand pointing left +
+\[rh]  \e[rh]  a14     u261E   hand pointing right +
 \[at]  \e[at]  at      u0040   at
 \[sh]  \e[sh]  numbersign      u0023   number sign
 \[CR]  \e[CR]  carriagereturn  u21B5   carriage return
@@ -1032,9 +1045,9 @@ _
 l l l l lx.
 Output Input   PostScript      Unicode Notes
 _
-\[co]  \e[co]  copyright       u00A9   copyright sign
-\[rg]  \e[rg]  registered      u00AE   registered mark
-\[tm]  \e[tm]  trademark       u2122   trademark symbol
+\[co]  \e[co]  copyright       u00A9   +
+\[rg]  \e[rg]  registered      u00AE   +
+\[tm]  \e[tm]  trademark       u2122
 \[bs]  \e[bs]  ---     ---     AT&T Bell Labs logo +
 .TE
 .ad
@@ -1051,7 +1064,7 @@ l l l l lx.
 Output Input   PostScript      Unicode Notes
 _
 \[Do]  \e[Do]  dollar  u0024   dollar
-\[ct]  \e[ct]  cent    u00A2   cent
+\[ct]  \e[ct]  cent    u00A2   cent +
 \[eu]  \e[eu]  ---     u20AC   official Euro symbol
 \[Eu]  \e[Eu]  Euro    u20AC   font-specific Euro glyph variant
 \[Ye]  \e[Ye]  yen     u00A5   Japanese Yen
@@ -1069,9 +1082,9 @@ _
 l l l l lx.
 Output Input   PostScript      Unicode Notes
 _
-\[de]  \e[de]  degree  u00B0   degree
+\[de]  \e[de]  degree  u00B0   degree +
 \[%0]  \e[%0]  perthousand     u2030   per thousand, per mille sign
-\[fm]  \e[fm]  minute  u2032   arc minute sign
+\[fm]  \e[fm]  minute  u2032   arc minute sign +
 \[sd]  \e[sd]  second  u2033   acr second sign
 \[mc]  \e[mc]  mu      u00B5   mu, micro sign
 \[Of]  \e[Of]  ordfeminine     u00AA   feminine ordinal (Spanish)
@@ -1089,7 +1102,7 @@ Output    Input   PostScript      Unicode Notes
 _
 \[AN]  \e[AN]  logicaland      u2227   logical and
 \[OR]  \e[OR]  logicalor       u2228   logical or
-\[no]  \e[no]  logicalnot      u00AC   logical not
+\[no]  \e[no]  logicalnot      u00AC   logical not + ***
 \[tno] \e[tno] logicalnot      u00AC   text variant of \[oq]no\[cq]
 \[te]  \e[te]  existential     u2203   there exists
 \[fa]  \e[fa]  universal       u2200   for all
@@ -1097,7 +1110,7 @@ _
 \[3d]  \e[3d]  therefore       u2234   therefore
 \[tf]  \e[tf]  therefore       u2234   therefore
 \[or]  \e[or]  bar     u007C   T{
-bitwise OR operator (as used in\ C)
+bitwise OR operator (as used in\ C) +
 T}
 .TE
 .ad
@@ -1110,9 +1123,9 @@ T}
 l l l l lx.
 Output Input   PostScript      Unicode Notes
 _
-\[12]  \e[12]  onehalf u00BD   1/2 symbol
-\[14]  \e[14]  onequarter      u00BC   1/4 symbol
-\[34]  \e[34]  threequarters   u00BE   3/4 symbol
+\[12]  \e[12]  onehalf u00BD   1/2 symbol +
+\[14]  \e[14]  onequarter      u00BC   1/4 symbol +
+\[34]  \e[34]  threequarters   u00BE   3/4 symbol +
 \[18]  \e[18]  oneeighth       u215B   1/8 symbol
 \[38]  \e[38]  threeeighths    u215C   3/8 symbol
 \[58]  \e[58]  fiveeighths     u215D   5/8 symbol
 \[S2]  \e[S2]  twosuperior     u00B2   superscript 2
 \[S3]  \e[S3]  threesuperior   u00B3   superscript 3
 
-\[pl]  \e[pl]  plus    u002B   plus in special font
-\[mi]  \e[mi]  minus   u2212   minus in special font
+\[pl]  \e[pl]  plus    u002B   plus in special font +
+\[mi]  \e[mi]  minus   u2212   minus in special font +
 \[-+]  \e[-+]  uni2213 u2213   minus-plus
-\[+-]  \e[+-]  plusminus       u00B1   plus-minus
+\[+-]  \e[+-]  plusminus       u00B1   plus-minus + ***
 \[t+-] \e[t+-] plusminus       u00B1   text variant of \e[+-]
 \[pc]  \e[pc]  periodcentered  u00B7   period centered
 \[md]  \e[md]  dotmath u22C5   multiplication dot
-\[mu]  \e[mu]  multiply        u00D7   multiply sign
+\[mu]  \e[mu]  multiply        u00D7   multiply sign + ***
 \[tmu] \e[tmu] multiply        u00D7   text variant of \e[mu]
 \[c*]  \e[c*]  circlemultiply  u2297   multiply sign in circle
 \[c+]  \e[c+]  circleplus      u2295   plus sign in circle
-\[di]  \e[di]  divide  u00F7   division sign
+\[di]  \e[di]  divide  u00F7   division sign + ***
 \[tdi] \e[tdi] divide  u00F7   text variant of \e[di]
 \[f/]  \e[f/]  fraction        u2044   bar for fractions
-\[**]  \e[**]  asteriskmath    u2217   mathematical asterisk
+\[**]  \e[**]  asteriskmath    u2217   mathematical asterisk +
 
-\[<=]  \e[<=]  lessequal       u2264   less or equal
-\[>=]  \e[>=]  greaterequal    u2265   greater or equal
+\[<=]  \e[<=]  lessequal       u2264   less or equal +
+\[>=]  \e[>=]  greaterequal    u2265   greater or equal +
 \[<<]  \e[<<]  uni226A u226A   much less
 \[>>]  \e[>>]  uni226B u226B   much greater
-\[eq]  \e[eq]  equal   u003D   equals in special font
-\[!=]  \e[!=]  notequal        u003D_0338      not equal       
-\[==]  \e[==]  equivalence     u2261   equivalent
+\[eq]  \e[eq]  equal   u003D   equals in special font +
+\[!=]  \e[!=]  notequal        u003D_0338      not equal +
+\[==]  \e[==]  equivalence     u2261   equivalent +
 \[ne]  \e[ne]  uni2262 u2261_0338      not equivalent
 \[=~]  \e[=~]  congruent       u2245   T{
-congruent, approx. equal
+congruent, approx.\& equal
 T}
-\[|=]  \e[|=]  uni2243 u2243   asymptot. equal to
-\[ap]  \e[ap]  similar u223C   similar
+\[|=]  \e[|=]  uni2243 u2243   asymptot.\& equal to +
+\[ap]  \e[ap]  similar u223C   similar +
 \[~~]  \e[~~]  approxequal     u2248   almost equal to
 \[~=]  \e[~=]  approxequal     u2248   almost equal to
-\[pt]  \e[pt]  proportional    u221D   proportional
+\[pt]  \e[pt]  proportional    u221D   proportional +
 
-\[es]  \e[es]  emptyset        u2205   empty set
-\[mo]  \e[mo]  element u2208   element of a set
+\[es]  \e[es]  emptyset        u2205   empty set +
+\[mo]  \e[mo]  element u2208   element of a set +
 \[nm]  \e[nm]  notelement      u2208_0338      not element of set
-\[sb]  \e[sb]  propersubset    u2282   proper subset
+\[sb]  \e[sb]  propersubset    u2282   proper subset +
 \[nb]  \e[nb]  notsubset       u2282_0338      not supset
-\[sp]  \e[sp]  propersuperset  u2283   proper superset
+\[sp]  \e[sp]  propersuperset  u2283   proper superset +
 \[nc]  \e[nc]  uni2285 u2283_0338      not superset
-\[ib]  \e[ib]  reflexsubset    u2286   subset or equal
-\[ip]  \e[ip]  reflexsuperset  u2287   superset or equal
-\[ca]  \e[ca]  intersection    u2229   intersection, cap
-\[cu]  \e[cu]  union   u222A   union, cup
+\[ib]  \e[ib]  reflexsubset    u2286   subset or equal +
+\[ip]  \e[ip]  reflexsuperset  u2287   superset or equal +
+\[ca]  \e[ca]  intersection    u2229   intersection, cap +
+\[cu]  \e[cu]  union   u222A   union, cup +
 
 \[/_]  \e[/_]  angle   u2220   angle
 \[pp]  \e[pp]  perpendicular   u22A5   perpendicular
-\[is]  \e[is]  integral        u222B   integral
-\[integral]    \e[integral]    integral        u222B   integral
-\[sum] \e[sum] summation       u2211   summation
-\[product]     \e[product]     product u220F   product
-\[coproduct]   \e[coproduct]   uni2210 u2210   coproduct
-\[gr]  \e[gr]  gradient        u2207   gradient
-\[sr]  \e[sr]  radical u221A   square root
+\[is]  \e[is]  integral        u222B   integral +
+\[integral]    \e[integral]    integral        u222B   integral ***
+\[sum] \e[sum] summation       u2211   summation ***
+\[product]     \e[product]     product u220F   product ***
+\[coproduct]   \e[coproduct]   uni2210 u2210   coproduct ***
+\[gr]  \e[gr]  gradient        u2207   gradient +
+\[sr]  \e[sr]  radical u221A   square root +
 \[sqrt]        \e[sqrt]        radical u221A   square root
 \[radicalex]   \e[radicalex]   radicalex       ---     T{
-square root continuation
+square root continuation ***
 T}
 \[sqrtex]      \e[sqrtex]      radicalex       ---     T{
-square root continuation
+square root continuation ***
 T}
 
-\[lc]  \e[lc]  uni2308 u2308   left ceiling
-\[rc]  \e[rc]  uni2309 u2309   right ceiling
-\[lf]  \e[lf]  uni230A u230A   left floor
-\[rf]  \e[rf]  uni230B u230B   right floor
+\[lc]  \e[lc]  uni2308 u2308   left ceiling +
+\[rc]  \e[rc]  uni2309 u2309   right ceiling +
+\[lf]  \e[lf]  uni230A u230A   left floor +
+\[rf]  \e[rf]  uni230B u230B   right floor +
 
-\[if]  \e[if]  infinity        u221E   infinity
+\[if]  \e[if]  infinity        u221E   infinity +
 \[Ah]  \e[Ah]  aleph   u2135   aleph
 \[Im]  \e[Im]  Ifraktur        u2111   Gothic I, imaginary
 \[Re]  \e[Re]  Rfraktur        u211C   Gothic R, real
 \[wp]  \e[wp]  weierstrass     u2118   Weierstrass\~p
 \[pd]  \e[pd]  partialdiff     u2202   T{
-partial differentiation
+partial differentiation +
 T}
 \[-h]  \e[-h]  uni210F u210F   T{
 Planck\ constant\ /\ 2pi (h-bar)
@@ -1208,21 +1221,22 @@ T}
 .P
 .I Greek glyphs
 .P
-These glyphs are intended for technical use, not for real Greek; normally,
-the uppercase letters have upright shape, and the lowercase ones are
-slanted.
+These glyphs are intended for technical use, not for real Greek;
+normally, the uppercase letters have upright shape, and the lowercase
+ones are slanted.
 .
 There is a problem with the mapping of letter phi to Unicode.
 .
 Prior to Unicode version\ 3.0, the difference between U+03C6, GREEK
-SMALL LETTER PHI, and U+03D5, GREEK PHI SYMBOL, was not clearly described;
-only the glyph shapes in the Unicode book could be used as a reference.
+SMALL LETTER PHI, and U+03D5, GREEK PHI SYMBOL, was not clearly
+described; only the glyph shapes in the Unicode book could be used as a
+reference.
 .
 Starting with Unicode\ 3.0, the reference glyphs have been exchanged and
 described verbally also: In mathematical context, U+03D5 is the stroked
 variant and U+03C6 the curly glyph.
 .
-Unfortunately, most font vendors didn\[aq]t update their fonts to
+Unfortunately, most font vendors didn't update their fonts to
 this (incompatible) change in Unicode.
 .
 At the time of this writing (January 2006), it is not clear yet
@@ -1240,55 +1254,55 @@ version of phi, and \[oq]\f(CW\e[+f]\fP\[cq] the curly variant.
 l l l l lx.
 Output Input   PostScript      Unicode Notes
 _
-\[*A]  \e[*A]  Alpha   u0391   Alpha
-\[*B]  \e[*B]  Beta    u0392   Beta
-\[*G]  \e[*G]  Gamma   u0393   Gamma
-\[*D]  \e[*D]  Delta   u0394   Delta
-\[*E]  \e[*E]  Epsilon u0395   Epsilon
-\[*Z]  \e[*Z]  Zeta    u0396   Zeta
-\[*Y]  \e[*Y]  Eta     u0397   Eta
-\[*H]  \e[*H]  Theta   u0398   Theta
-\[*I]  \e[*I]  Iota    u0399   Iota
-\[*K]  \e[*K]  Kappa   u039A   Kappa
-\[*L]  \e[*L]  Lambda  u039B   Lamda
-\[*M]  \e[*M]  Mu      u039C   Mu
-\[*N]  \e[*N]  Nu      u039D   Nu
-\[*C]  \e[*C]  Xi      u039E   Xi
-\[*O]  \e[*O]  Omicron u039F   Omicron
-\[*P]  \e[*P]  Pi      u03A0   Pi
-\[*R]  \e[*R]  Rho     u03A1   Rho
-\[*S]  \e[*S]  Sigma   u03A3   Sigma
-\[*T]  \e[*T]  Tau     u03A4   Tau
-\[*U]  \e[*U]  Upsilon u03A5   Upsilon
-\[*F]  \e[*F]  Phi     u03A6   Phi
-\[*X]  \e[*X]  Chi     u03A7   Chi
-\[*Q]  \e[*Q]  Psi     u03A8   Psi
-\[*W]  \e[*W]  Omega   u03A9   Omega
-\[*a]  \e[*a]  alpha   u03B1   alpha
-\[*b]  \e[*b]  beta    u03B2   beta
-\[*g]  \e[*g]  gamma   u03B3   gamma
-\[*d]  \e[*d]  delta   u03B4   delta
-\[*e]  \e[*e]  epsilon u03B5   epsilon
-\[*z]  \e[*z]  zeta    u03B6   zeta
-\[*y]  \e[*y]  eta     u03B7   eta
-\[*h]  \e[*h]  theta   u03B8   theta
-\[*i]  \e[*i]  iota    u03B9   iota
-\[*k]  \e[*k]  kappa   u03BA   kappa
-\[*l]  \e[*l]  lambda  u03BB   lambda
-\[*m]  \e[*m]  mu      u03BC   mu
-\[*n]  \e[*n]  nu      u03BD   nu
-\[*c]  \e[*c]  xi      u03BE   xi
-\[*o]  \e[*o]  omicron u03BF   omicron
-\[*p]  \e[*p]  pi      u03C0   pi
-\[*r]  \e[*r]  rho     u03C1   rho
-\[ts]  \e[ts]  sigma1  u03C2   terminal sigma
-\[*s]  \e[*s]  sigma   u03C3   sigma
-\[*t]  \e[*t]  tau     u03C4   tau
-\[*u]  \e[*u]  upsilon u03C5   upsilon
-\[*f]  \e[*f]  phi     u03D5   phi oked glyph)
-\[*x]  \e[*x]  chi     u03C7   chi
-\[*q]  \e[*q]  psi     u03C8   psi
-\[*w]  \e[*w]  omega   u03C9   omega
+\[*A]  \e[*A]  Alpha   u0391   +
+\[*B]  \e[*B]  Beta    u0392   +
+\[*G]  \e[*G]  Gamma   u0393   +
+\[*D]  \e[*D]  Delta   u0394   +
+\[*E]  \e[*E]  Epsilon u0395   +
+\[*Z]  \e[*Z]  Zeta    u0396   +
+\[*Y]  \e[*Y]  Eta     u0397   +
+\[*H]  \e[*H]  Theta   u0398   +
+\[*I]  \e[*I]  Iota    u0399   +
+\[*K]  \e[*K]  Kappa   u039A   +
+\[*L]  \e[*L]  Lambda  u039B   +
+\[*M]  \e[*M]  Mu      u039C   +
+\[*N]  \e[*N]  Nu      u039D   +
+\[*C]  \e[*C]  Xi      u039E   +
+\[*O]  \e[*O]  Omicron u039F   +
+\[*P]  \e[*P]  Pi      u03A0   +
+\[*R]  \e[*R]  Rho     u03A1   +
+\[*S]  \e[*S]  Sigma   u03A3   +
+\[*T]  \e[*T]  Tau     u03A4   +
+\[*U]  \e[*U]  Upsilon u03A5   +
+\[*F]  \e[*F]  Phi     u03A6   +
+\[*X]  \e[*X]  Chi     u03A7   +
+\[*Q]  \e[*Q]  Psi     u03A8   +
+\[*W]  \e[*W]  Omega   u03A9   +
+\[*a]  \e[*a]  alpha   u03B1   +
+\[*b]  \e[*b]  beta    u03B2   +
+\[*g]  \e[*g]  gamma   u03B3   +
+\[*d]  \e[*d]  delta   u03B4   +
+\[*e]  \e[*e]  epsilon u03B5   +
+\[*z]  \e[*z]  zeta    u03B6   +
+\[*y]  \e[*y]  eta     u03B7   +
+\[*h]  \e[*h]  theta   u03B8   +
+\[*i]  \e[*i]  iota    u03B9   +
+\[*k]  \e[*k]  kappa   u03BA   +
+\[*l]  \e[*l]  lambda  u03BB   +
+\[*m]  \e[*m]  mu      u03BC   +
+\[*n]  \e[*n]  nu      u03BD   +
+\[*c]  \e[*c]  xi      u03BE   +
+\[*o]  \e[*o]  omicron u03BF   +
+\[*p]  \e[*p]  pi      u03C0   +
+\[*r]  \e[*r]  rho     u03C1   +
+\[ts]  \e[ts]  sigma1  u03C2   terminal sigma +
+\[*s]  \e[*s]  sigma   u03C3   +
+\[*t]  \e[*t]  tau     u03C4   +
+\[*u]  \e[*u]  upsilon u03C5   +
+\[*f]  \e[*f]  phi     u03D5   (stroked glyph) +
+\[*x]  \e[*x]  chi     u03C7   +
+\[*q]  \e[*q]  psi     u03C8   +
+\[*w]  \e[*w]  omega   u03C9   +
 \[+h]  \e[+h]  theta1  u03D1   variant theta
 \[+f]  \e[+f]  phi1    u03C6   variant phi (curly shape)
 \[+p]  \e[+p]  omega1  u03D6   variant pi, looking like omega
@@ -1314,9 +1328,43 @@ _
 .ad
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
+.SH AUTHORS
+.\" ====================================================================
+.
+This document was written by
+.MT jjc@\:jclark.com
+James Clark
+.ME ,
+with additions by
+.MT wl@\:gnu.org
+Werner Lemberg
+.ME
+and
+.MT groff\-bernd.warken\-72@\:web.de
+Bernd Warken
+.ME ,
+and revised to use real tables by
+.MT esr@\:thyrsus.com
+Eric S.\& Raymond
+.ME .
+.
+.
+.\" ====================================================================
 .SH "SEE ALSO"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
+.
+.IR "Groff: The GNU Implementation of troff" ,
+by Trent A.\& Fisher and Werner Lemberg,
+is the primary
+.I groff
+manual.
+.
+Section \[lq]Using Symbols\[rq] may be of particular note.
+.
+You can browse it interactively with \[lq]info \[aq](groff)Using
+Symbols\[aq]\[rq].
+.
 .
 .TP
 .BR groff (@MAN1EXT@)
@@ -1329,8 +1377,8 @@ a short reference of the groff formatting language
 .
 .P
 .IR "An extension to the troff character set for Europe" ,
-E.G.\& Keizer, K.J.\& Simonsen, J.\& Akkerhuis; EUUG Newsletter, Volume 9,
-No.\& 2, Summer 1989
+E.G.\& Keizer, K.J.\& Simonsen, J.\& Akkerhuis; EUUG Newsletter,
+Volume 9, No.\& 2, Summer 1989
 .
 .
 .P
@@ -1339,23 +1387,17 @@ The Unicode Standard
 .UE
 .
 .
-.\" --------------------------------------------------------------------
-.SH "COPYING"
-.\" --------------------------------------------------------------------
-.co
-.\" --------------------------------------------------------------------
-.SH "AUTHORS"
-.\" --------------------------------------------------------------------
-.au
-.
-.
+.\" Restore compatibility mode (for, e.g., Solaris 10/11).
 .cp \n[groff_char_C]
 .
 .
-.\" --------------------------------------------------------------------
-.\" Emacs settings
-.\" --------------------------------------------------------------------
+.\" ====================================================================
+.\" Editor settings
+.\" ====================================================================
+.
 .\" Local Variables:
 .\" mode: nroff
+.\" fill-column: 72
 .\" tab-width: 20
 .\" End:
+.\" vim: set filetype=groff tabstop=20 textwidth=72:
similarity index 88%
rename from man/groff_diff.man
rename to man/groff_diff.7.man
index eacccd3..39d1747 100644 (file)
@@ -1,6 +1,5 @@
 '\" e
-.\" The above line should force the use of eqn as a preprocessor
-.TH GROFF_DIFF @MAN7EXT@ "@MDATE@" "Groff Version @VERSION@"
+.TH GROFF_DIFF @MAN7EXT@ "@MDATE@" "groff @VERSION@"
 .SH NAME
 groff_diff \- differences between GNU troff and classical troff
 .
@@ -9,46 +8,32 @@ groff_diff \- differences between GNU troff and classical troff
 .\" Installed position: <prefix>/share/man/man7/groff_diff.7
 .
 .
-.de co
-Copyright \[co] 1989-2014 Free Software Foundation, Inc.
+.\" Save and disable compatibility mode (for, e.g., Solaris 10/11).
+.do nr groff_diff_C \n[.C]
+.cp 0
 .
-.P
-This file is part of groff, the GNU roff type-setting system.
-.
-It is the source of the man-page groff_diff(7).
-.P
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.3 or
-any later version published by the Free Software Foundation; with no
-Front-Cover Texts, and with no Back-Cover Texts.
-.P
-A copy of the Free Documentation License is included as a file called
-FDL in the main directory of the groff source package, it is also
-available in the internet at
-.UR http://\:www.gnu.org/\:copyleft/\:fdl.html
-GNU FDL license
-.UE .
-..
 .
-.de au
-This document was written by
-.MT jjc@jclark.com
-James Clark
-.ME ,
-was modified by
-.MT wl@gnu.org
-Werner Lemberg
-.ME
-and
-.MT groff-bernd.warken-72@web.de
-Bernd Warken
-.ME .
-..
+.\" ====================================================================
+.\" Legal Terms
+.\" ====================================================================
+.\"
+.\" Copyright (C) 1989-2018 Free Software Foundation, Inc.
+.\"
+.\" This file is part of groff, the GNU roff type-setting system.
+.\"
+.\" Permission is granted to copy, distribute and/or modify this
+.\" document under the terms of the GNU Free Documentation License,
+.\" Version 1.3 or any later version published by the Free Software
+.\" Foundation; with no Invariant Sections, with no Front-Cover Texts,
+.\" and with no Back-Cover Texts.
+.\"
+.\" A copy of the Free Documentation License is included as a file
+.\" called FDL in the main directory of the groff source package.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .\" Local definitions
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .\" define a string tx for the TeX logo
 .ie t .ds tx T\h'-.1667m'\v'.224m'E\v'-.224m'\h'-.125m'X
@@ -65,9 +50,9 @@ Bernd Warken
 .ds ellipsis \&.\|.\|.\&
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH DESCRIPTION
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 This manual page describes the language differences between
 .IR groff ,
@@ -77,7 +62,7 @@ text processing system, and the classical
 .I roff
 formatter of the freely available Unix\~7 of the 1970s, documented in
 the
-.I Troff User\[aq]s Manual
+.I Troff User's Manual
 by
 .I Ossanna
 and
@@ -88,18 +73,16 @@ format (troff output).
 .
 .
 .P
-The section
-.I SEE ALSO
-gives pointers to both the classical
+Section \[lq]See Also\[rq] below gives pointers to both the classical
 .I roff
 and the modern
 .I groff
 documentation.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "GROFF LANGUAGE"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 In this section, all additional features of
 .I groff
@@ -108,17 +91,19 @@ compared to the classical Unix\~7
 are described in detail.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Long names"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The names of number registers, fonts, strings/\:macros/\:diversions,
 special characters (glyphs), and colors can be of any length.
 .
 In escape sequences, additionally to the classical
-\[oq]\fB(\fP\fIxx\fP\[cq] construction for a two-character glyph name,
-you can use \[oq]\fB[\fP\,\fIxxx\/\fP\fB]\fP\[cq] for a name of
-arbitrary length.
+\[oq]\fB(\fP\,\fIxx\/\fP\[cq]
+construction for a two-character glyph name,
+you can use
+\[oq]\fB[\fP\,\fIxxx\/\fP\fB]\fP\[cq]
+for a name of arbitrary length.
 .
 .TP
 .BI \[rs][ xxx ]
@@ -132,9 +117,13 @@ Print composite glyph consisting of multiple components.
 Example: \[oq]\[rs][A\~ho]\[cq] is capital letter A with ogonek which
 finally maps to glyph name \[oq]u0041_0328\[cq].
 .
-See the
-.I groff info file
-for details how a glyph name for a composite glyph is constructed, and
+See
+.IR "Groff: The GNU Implementation of troff" ,
+the
+.I groff
+Texinfo manual,
+for details of how a glyph name for a composite glyph is constructed,
+and
 .BR groff_char (@MAN7EXT@)
 for a list of glyph name components used in composite glyph names.
 .
@@ -165,9 +154,9 @@ Interpolate number register
 .IR xxx .
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Fractional point sizes"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 A
 .I scaled point
@@ -176,7 +165,7 @@ is equal to
 points, where
 .B sizescale
 is specified in the
-.B DESC
+.I DESC
 file (1 by default).
 .
 There is a new scale indicator\~\c
@@ -258,9 +247,9 @@ and
 scale indicators.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Numeric expressions"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 Spaces are permitted in a number expression within parentheses.
 .
@@ -304,9 +293,9 @@ is missing, ignore scaling indicators in the evaluation of\~\c
 .IR e .
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "New escape sequences"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .TP
 .BI \[rs]A' anything '
@@ -316,8 +305,8 @@ or\~\c
 .BR 0 ,
 depending on whether
 .I anything
-is or is not acceptable as the name of a string, macro, diversion, number
-register, environment, font, or color.
+is or is not acceptable as the name of a string, macro, diversion,
+number register, environment, font, or color.
 .
 It returns\~\c
 .B 0
@@ -352,9 +341,8 @@ Normally it is more convenient to use
 .BI \[rs][ xxx ]\f[R].
 But
 .B \[rs]C
-has the advantage that it is compatible with recent versions of
-.SM UNIX
-and is available in compatibility mode.
+has the advantage that it is compatible with recent versions of Unix and
+is available in compatibility mode.
 .
 .TP
 .B \[rs]E
@@ -396,7 +384,7 @@ request.
 .B \[rs]F[]
 switches back to the previous font family (note that
 .B \[rs]FP
-won\[aq]t work; it selects font family \[oq]P\[cq] instead).
+won't work; it selects font family \[oq]P\[cq] instead).
 .
 .TP
 .BI \[rs]m x
@@ -525,7 +513,7 @@ while producing images.
 .
 They are generated by running the troff source through
 .B troff
-to the postscript device and
+to the PostScript device and
 .B ghostscript
 to produce images in PNG format.
 .
@@ -626,9 +614,8 @@ permitted for the argument to
 .B \[rs]X
 to contain newlines).
 .
-The inclusion of newlines requires an extension to the UNIX troff
-output format, and confuses drivers that do not know about this
-extension.
+The inclusion of newlines requires an extension to the Unix troff output
+format, and confuses drivers that do not know about this extension.
 .
 .TP
 .BI \[rs]Z' anything '
@@ -703,7 +690,8 @@ Thus
 \&.nr x 1
 \&.nf
 \&.di d
-\&\[rs]?\[rs]\[rs]?\[rs]\[rs]\[rs]\[rs]?\[rs]\[rs]\[rs]\[rs]\[rs]\[rs]\[rs]\c
+\&\[rs]?\[rs]\[rs]?\[rs]\[rs]\[rs]\[rs]?\[rs]\[rs]\[rs]\[rs]\[rs]\[rs]\
+\[rs]\c
 \&\[rs]nx\[rs]\[rs]\[rs]\[rs]?\[rs]\[rs]?\[rs]?
 \&.di
 \&.nr x 2
@@ -798,9 +786,9 @@ except that
 does not ignore the terminating newline.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "New requests"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .TP
 .BI .aln\  xx\ yy
@@ -906,9 +894,8 @@ and
 .BI .asciify\  xx
 This request \[oq]unformats\[cq] the diversion
 .I xx
-in such a way that
-.SM ASCII
-and space characters (and some escape sequences) that were formatted
+in such a way that ASCII and space characters (and some escape
+sequences) that were formatted
 and diverted into
 .I xx
 are treated like ordinary input characters when
@@ -940,7 +927,7 @@ sets register\~\c
 .B n
 to\~1.
 .
-Note that glyph information (font, font size, etc.\&) is not preserved;
+Note that glyph information (font, font size, etc.) is not preserved;
 use
 .B .unformat
 instead.
@@ -1046,8 +1033,8 @@ Use this in combination with values 2 and\~4 (initially no characters
 have this property).
 .
 .IP 128
-Prohibit a line break before the character, but allow a line break after the
-character.
+Prohibit a line break before the character, but allow a line break after
+the character.
 This works only in combination with flags 256 and 512 and has no effect
 otherwise.
 .
@@ -1068,10 +1055,11 @@ Contrary to flag values 2 and\~4, the flags 128, 256, and 512 work
 pairwise.
 .
 If, for example, the left character has value 512, and the right
-character 128, no line break gets inserted.  If we use value\~6
-instead for the left character, a line break after the character
-can\[aq]t be suppressed since the right neighbour character
-doesn\[aq]t get examined.
+character 128, no line break gets inserted.
+.
+If we use value\~6 instead for the left character, a line break after
+the character can't be suppressed since the right neighbour character
+doesn't get examined.
 .
 .TP
 .BI .char\  c\ string
@@ -1128,7 +1116,7 @@ request is used to give the object a hyphenation code.
 .
 .IP
 There is a special anti-recursion feature: Use of glyph within the
-glyph\[aq]s definition is handled like normal glyphs not defined with
+glyph's definition is handled like normal glyphs not defined with
 .BR char .
 .IP
 A glyph definition can be removed with the
@@ -1271,7 +1259,7 @@ request, thus the above statement is equivalent to
 .IP
 The color named
 .B default
-(which is device-specific) can\[aq]t be redefined.
+(which is device-specific) can't be redefined.
 .
 It is possible that the default color for
 .B \[rs]M
@@ -1429,7 +1417,7 @@ request; the only difference is that a glyph defined with
 hides the glyph with the same name in the current font, whereas a
 glyph defined with
 .B fchar
-is checked only if the particular glyph isn\[aq]t found in the current
+is checked only if the particular glyph isn't found in the current
 font.
 .
 This test happens before checking special fonts.
@@ -1505,7 +1493,7 @@ conditional operators, or in the
 .BR fspecial ,
 .BR fp ,
 or
-.BR sty
+.B sty
 requests, font\~\c
 .I g
 is used.
@@ -1525,8 +1513,8 @@ for font\~\c
 .IR f .
 .I zoom
 must a non-negative integer multiple of 1/1000th.
-If it is missing or is equal to zero, it means the same as 1000, namely no
-magnification.
+If it is missing or is equal to zero, it means the same as 1000, namely
+no magnification.
 .IR f \~\c
 must be a real font name, not a style.
 .
@@ -1553,9 +1541,9 @@ and so on.
 A hyphenation code must be a single input character (not a special
 character) other than a digit or a space.
 .
-Initially each lower-case letter \%a\[en]z has a hyphenation code, which is
-itself, and each upper-case letter \%A\[en]Z has a hyphenation code which is
-the lower-case version of itself.
+Initially each lower-case letter \%a\[en]z has a hyphenation code, which
+is itself, and each upper-case letter \%A\[en]Z has a hyphenation code
+which is the lower-case version of itself.
 .
 See also the
 .B hpf
@@ -1669,7 +1657,7 @@ character as the start of a comment).
 Use the
 .B hpfcode
 request to map the encoding used in hyphenation patterns files to
-.BR groff \[aq]s
+.BR groff 's
 input encoding.
 .
 By default, everything maps to itself except letters \[oq]A\[cq] to
@@ -1717,7 +1705,8 @@ The arguments of
 .B hpfcode
 must be integers in the range 0 to\~255.
 .
-Note that it is even possible to use character codes which are invalid in
+Note that it is even possible to use character codes which are invalid
+in
 .B groff
 otherwise.
 .
@@ -1751,7 +1740,7 @@ to\~\c
 .IR n :
 When the current adjustment mode is\~\c
 .B b
-don\[aq]t hyphenate the line if the line can be justified by adding no
+don't hyphenate the line if the line can be justified by adding no
 more than
 .I n
 extra space to each word space.
@@ -1772,7 +1761,7 @@ Variant of
 .B .it
 for which a line interrupted with
 .B \[rs]c
-counts as one input line.
+is not counted as an input line.
 .
 .TP
 .BI .kern\  n
@@ -1861,13 +1850,13 @@ The same as the
 .B so
 request except that
 .I file
-is searched for in the same directories as macro files for the the
+is searched for in the same directories as macro files for the
 .B \-m
-command line option.
+command-line option.
 .
 If the file name to be included has the form
 .IB name .tmac
-and it isn\[aq]t found,
+and it isn't found,
 .B mso
 tries to include
 .BI tmac. name
@@ -1877,7 +1866,7 @@ A warning of type
 .B file
 is generated if
 .I file
-can\[aq]t be loaded, and the request is ignored.
+can't be loaded, and the request is ignored.
 .
 .TP
 .BI .nop \ anything
@@ -1923,7 +1912,8 @@ exists, append to it instead of truncating it.
 .BI .output\  string
 Emit
 .I string
-directly to the intermediate output (subject to copy-mode interpretation);
+directly to the intermediate output (subject to copy-mode
+interpretation);
 this is similar to
 .B \[rs]!\&
 used at the top level.
@@ -1947,7 +1937,7 @@ on stderr.
 Get the bounding box of a PostScript image
 .IR filename .
 .
-This file must conform to Adobe\[aq]s Document Structuring
+This file must conform to Adobe's Document Structuring
 Conventions; the command looks for a
 .B \%%%BoundingBox
 comment to extract the bounding box values.
@@ -2006,7 +1996,7 @@ with a positive value which are applied after the line is output.
 Remove the definitions of glyphs
 .IR c1 ,
 .IR c2 ,
-.I \*[ellipsis]
+.I \*[ellipsis]\ \"Add a sentence space
 This undoes the effect of a
 .B char
 request.
@@ -2015,8 +2005,8 @@ request.
 .B .return
 Within a macro, return immediately.
 .
-If called with an argument, return twice, namely from the current macro and
-from the macro one level higher.
+If called with an argument, return twice, namely from the current macro
+and from the macro one level higher.
 .
 No effect otherwise.
 .
@@ -2025,8 +2015,8 @@ No effect otherwise.
 Remove the font-specific definitions of glyphs
 .IR c1 ,
 .IR c2 ,
-.I \*[ellipsis]
-This undoes the effect of a
+.I \*[ellipsis]\ \"Add a sentence space
+This undoes the effect of an
 .B fschar
 request.
 .
@@ -2117,7 +2107,7 @@ Shifting by negative amounts is currently undefined.
 This command is similar to the
 .B sizes
 command of a
-.B DESC
+.I DESC
 file.
 .
 It sets the available font sizes for the current font to
@@ -2134,7 +2124,7 @@ Each
 can also be a range of sizes
 .IR m \(en n .
 .
-Contrary to the font file command, the list can\[aq]t extend over more
+Contrary to the font file command, the list can't extend over more
 than a single line.
 .
 .TP
@@ -2199,7 +2189,7 @@ associated with style\~\c
 and the current font family is\~\c
 .BR T ,
 then font
-.BR TR
+.B TR
 is used.
 .
 If the current font is not a style, then the current family is ignored.
@@ -2216,12 +2206,12 @@ member of the current family corresponding to that style.
 .
 The default family can be set with the
 .B \-f
-command line option.
+command-line option.
 .
 The
 .B styles
 command in the
-.SM DESC
+DESC
 file controls which font positions (if any) are initially associated
 with styles rather than fonts.
 .
@@ -2237,7 +2227,7 @@ The first character in the string has index\~0.
 .
 If
 .I n2
-is omitted, it is taken to be equal to the string\[aq]s length.
+is omitted, it is taken to be equal to the string's length.
 .
 If the index value
 .I n1
@@ -2319,8 +2309,7 @@ using
 .IP
 Unlike with the
 .B cf
-request, the file cannot contain characters such as
-.SM NUL
+request, the file cannot contain characters, such as NUL,
 that are not valid troff input characters.
 .
 .TP
@@ -2419,7 +2408,7 @@ are stretchable again.
 .
 Note that the vertical size of lines is not preserved.
 .
-Glyph information (font, font size, space width, etc.\&) is retained.
+Glyph information (font, font size, space width, etc.) is retained.
 .
 Useful in conjunction with the
 .B box
@@ -2544,22 +2533,20 @@ request.
 is read in copy mode.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Extended escape sequences"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .TP
 .BR \[rs]D' \*[ellipsis] '
-All drawing commands of groff\[aq]s intermediate output are accepted.
+All drawing commands of groff's intermediate output are accepted.
 .
-See subsection
-.B "Drawing Commands"
-below for more information.
+See subsection \[lq]Drawing Commands\[rq] below.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Extended requests"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .TP
 .BI .cf\  filename
@@ -2568,7 +2555,7 @@ which, when reread, will cause the contents of
 .I filename
 to be transparently copied through to the output.
 .
-In UNIX troff, the contents of
+In Unix troff, the contents of
 .I filename
 is immediately copied through to the output regardless of whether
 there is a current diversion; this behaviour is so anomalous that it
@@ -2606,6 +2593,12 @@ There is no limit on the number of named environments; they are
 created the first time that they are referenced.
 .
 .TP
+.BI .hy\  n
+New additive values 16 and\~32 are available; the former enables
+hyphenation before the last character, the latter enables hyphenation
+after the first character.
+.
+.TP
 .BI .ss\  m\ n
 When two arguments are given to the
 .B ss
@@ -2620,7 +2613,7 @@ one twelfth of the spacewidth parameter for the current font.
 Initially both the word space size and the sentence
 space size are\~12.
 .
-Contrary to UNIX troff, GNU troff handles this request in nroff mode
+Contrary to Unix troff, GNU troff handles this request in nroff mode
 also; a given value is then rounded down to the nearest multiple
 of\~12.
 .
@@ -2631,12 +2624,12 @@ then both an inter-word space and a sentence space are added; if
 two spaces follow the end of a sentence in the middle of a line, then
 the second space is a sentence space.
 .
-Note that the behaviour of UNIX troff are exactly that exhibited
+Note that the behaviour of Unix troff is exactly that exhibited
 by GNU troff if a second argument is never given to the
 .B ss
 request.
 .
-In GNU troff, as in UNIX troff, you should always follow a sentence
+In GNU troff, as in Unix troff, you should always follow a sentence
 with either a newline or two spaces.
 .
 .TP
@@ -2670,9 +2663,9 @@ sets tabs every half an inch.
 .RE
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "New number registers"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The following read-only registers are available:
 .
@@ -2682,7 +2675,7 @@ Within a macro call, it is set to\~1 if the macro is called with the
 \[oq]normal\[cq] control character (\[oq].\[cq] by default), and set
 to\~0 otherwise.
 .
-This allows to reliably modify requests.
+This allows the reliable modification of requests.
 .
 .RS
 .IP
@@ -2950,7 +2943,7 @@ request.
 .TP
 .B \[rs]n[.trunc]
 The amount of vertical space truncated by the most recently sprung
-vertical position trap, or, if the trap was sprung by a
+vertical position trap, or, if the trap was sprung by an
 .B ne
 request, minus the amount of vertical motion produced by the
 .B ne
@@ -2969,7 +2962,7 @@ register.
 Set to\~1 if in safer mode and to\~0 if in unsafe mode (as given with
 the
 .B \-U
-command line option).
+command-line option).
 .
 .TP
 .B \[rs]n[.vpt]
@@ -3114,16 +3107,16 @@ number register
 is the current year minus 1900.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS Miscellaneous
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .B @g@troff
 predefines a single (read/write) string-based register,
 .BR \[rs]*[.T] ,
 which contains the argument given to the
 .B \-T
-command line option, namely the current output device (for example,
+command-line option, namely the current output device (for example,
 .I latin1
 or
 .IR ascii ).
@@ -3133,13 +3126,13 @@ which is defined to be\~1 if
 .B troff
 is called with the
 .B \-T
-command line option, and zero otherwise.
+command-line option, and zero otherwise.
 .
-This behaviour is different to UNIX troff.
+This behaviour is different from Unix troff.
 .
 .P
 Fonts not listed in the
-.SM DESC
+DESC
 file are automatically mounted on the next available font position
 when they are referenced.
 .
@@ -3203,8 +3196,8 @@ and
 .BR \[rs]Z .
 .
 When decoding a macro or string argument that is delimited by double
-quotes, a character that appears at a different input level to the starting
-delimiter character is not recognized as the closing delimiter
+quotes, a character that appears at a different input level to the
+starting delimiter character is not recognized as the closing delimiter
 character.
 .
 The implementation of
@@ -3242,12 +3235,10 @@ True if there is a color named
 .TP
 .BI .if\ c ch
 True if there is a character (or glyph)
-.IR ch
+.I ch
 available;
 .I ch
-is either an
-.SM ASCII
-character or a glyph (special character)
+is either an ASCII character or a glyph (special character)
 .BI \[rs]N' xxx '\f[R],
 .BI \[rs]( xx
 or
@@ -3294,8 +3285,8 @@ If there is a glyph named
 .B \[rs]|
 or
 .BR \[rs]^ ,
-respectively (note the leading backslash), defined in the current font file,
-use this glyph\[aq]s width instead of the default value.
+respectively (note the leading backslash), defined in the current font
+file, use this glyph's width instead of the default value.
 .
 .P
 It is now possible to have whitespace between the first and second dot
@@ -3308,15 +3299,15 @@ Example:
 .EX
 \&.if t \[rs]{\[rs]
 \&.  de bar
-\&.    nop Hello, I\[aq]m \[oq]bar\[cq].
+\&.    nop Hello, I'm \[oq]bar\[cq].
 \&.  .
 \&.\[rs]}
 .EE
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "INTERMEDIATE OUTPUT FORMAT"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 This section describes the format output by GNU troff.
 .
@@ -3326,9 +3317,9 @@ by Unix device-independent troff.
 Only the differences are documented here.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Units"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The argument to the
 .BR s \~\c
@@ -3345,9 +3336,9 @@ The argument to the
 command is also in scaled points.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Text Commands"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .TP
 .BI N n
@@ -3367,8 +3358,9 @@ commands.
 is any sequence of characters terminated by a space or a newline (to
 be more precise, it is a sequence of glyphs which are accessed with
 the corresponding characters); the first character should be printed at
-the current position, the current horizontal position should be increased
-by the width of the first character, and so on for each character.
+the current position, the current horizontal position should be
+increased by the width of the first character, and so on for each
+character.
 .
 The width of the glyph is that given in the font file,
 appropriately scaled for the current point size, and rounded so that
@@ -3441,9 +3433,9 @@ This is needed for the
 request in nroff mode and is ignored otherwise.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Drawing Commands"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The
 .B D
@@ -3480,7 +3472,7 @@ changing this.
 .IP
 The corresponding
 .BI \[rs]D'f \*[ellipsis] '
-command shouldn\[aq]t be used since its argument is always rounded to an
+command shouldn't be used since its argument is always rounded to an
 integer multiple of the horizontal resolution which can lead to
 surprising results.
 .
@@ -3502,7 +3494,8 @@ delim $$
 .EN
 .
 .TP
-\f[B]Dp\f[R] $dx sub 1$ $dy sub 1$ $dx sub 2$ $dy sub 2$ $...$ $dx sub n$ $dy sub n$\[rs]n
+\f[B]Dp\f[R] $dx sub 1$ $dy sub 1$ $dx sub 2$ $dy sub 2$ $...$ \
+$dx sub n$ $dy sub n$\[rs]n
 Draw a polygon with, for $i = 1 ,..., n+1$, the
 .IR i -th
 vertex at the current position
@@ -3513,7 +3506,8 @@ At the moment, GNU pic only uses this command to generate triangles
 and rectangles.
 .
 .TP
-\f[B]DP\f[R] $dx sub 1$ $dy sub 1$ $dx sub 2$ $dy sub 2$ $...$ $dx sub n$ $dy sub n$\[rs]n
+\f[B]DP\f[R] $dx sub 1$ $dy sub 1$ $dx sub 2$ $dy sub 2$ $...$ \
+$dx sub n$ $dy sub n$\[rs]n
 .
 Like
 .B Dp
@@ -3545,7 +3539,8 @@ does not depend on this.
 .
 Given a drawing command of the form
 .IP
-\f[B]\[rs]D'\f[I]c\f[R] $x sub 1$ $y sub 1$ $x sub 2$ $y sub 2$ $...$ $x sub n$ $y sub n$\f[B]'\f[R]
+\f[B]\[rs]D'\f[I]c\f[R] $x sub 1$ $y sub 1$ $x sub 2$ $y sub 2$ $...$ \
+$x sub n$ $y sub n$\f[B]'\f[R]
 .
 .P
 where
@@ -3588,7 +3583,8 @@ Thus after executing a
 .BR D \~\c
 command of the form
 .IP
-\f[B]D\f[I]c\f[R] $x sub 1$ $y sub 1$ $x sub 2$ $y sub 2$ $...$ $x sub n$ $y sub n$\[rs]n
+\f[B]D\f[I]c\f[R] $x sub 1$ $y sub 1$ $x sub 2$ $y sub 2$ $...$ \
+$x sub n$ $y sub n$\[rs]n
 .
 .P
 the current position should be increased by
@@ -3613,14 +3609,14 @@ Set the color components of the filling color similar to the
 commands above.
 .
 .P
-The current position isn\[aq]t changed by those colour commands
+The current position isn't changed by those colour commands
 (contrary to
 .BR Df ).
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Device Control Commands"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 There is a continuation convention which permits the argument to the
 .B x\ X
@@ -3655,9 +3651,9 @@ The first three output commands are guaranteed to be:
 .B x init
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH INCOMPATIBILITIES
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 In spite of the many extensions, groff has retained compatibility to
 classical troff to a large degree.
@@ -3667,21 +3663,21 @@ compatibility mode with the restricted, old functionality was created
 for groff.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Groff Language"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .I groff
 provides a
 .B compatibility mode
-that allows to process roff code written for classical
+that allows the processing of roff code written for classical
 .B troff
 or for other implementations of roff in a consistent way.
 .
 .P
 Compatibility mode can be turned on with the
 .B \-C
-command line option, and turned on or off with the
+command-line option, and turned on or off with the
 .B .cp
 request.
 .
@@ -3703,7 +3699,7 @@ as defining a string
 with contents
 .BR cd .
 In
-.IR groff
+.I groff
 mode, this is considered as a call of a macro named
 .BR dsabcd .
 .
@@ -3734,7 +3730,7 @@ does not allow to use the single-character escapes
 (backslash),
 .B \[rs]|
 (vertical bar),
-.B \[rs]^
+.B \[rs]\[ha]
 (caret),
 .B \[rs]&
 (ampersand),
@@ -3744,9 +3740,9 @@ does not allow to use the single-character escapes
 (closing brace),
 .RB \[oq] \[rs]\  \[cq]
 (space),
-.B \[rs]'
+.B \[rs]\[aq]
 (single quote),
-.B \[rs]`
+.B \[rs]\[ga]
 (backquote),
 .B \[rs]\-
 (minus),
@@ -3842,8 +3838,8 @@ With
 .I GNU troff
 this is printed as
 .BR \[rs]\[rs] .
-So each pair of input backslashes \&\[oq]\[rs]\[rs]\[cq] is turned
-into a single output backslash glyph \&\[oq]\[rs]\[cq] and the
+So each pair of input backslashes \[oq]\[rs]\[rs]\[cq] is turned
+into a single output backslash glyph \[oq]\[rs]\[cq] and the
 resulting output backslashes are not interpreted as escape characters
 when they are reread.
 .
@@ -3882,9 +3878,9 @@ new
 escape sequence can be used.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Intermediate Output"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The groff intermediate output format is in a state of evolution.
 .
@@ -3902,16 +3898,35 @@ The intermediate output cannot be rescaled to other devices as
 classical \[oq]device-independent\[cq] troff did.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
+.SH AUTHORS
+.\" ====================================================================
+This document was written by
+.MT jjc@\:jclark.com
+James Clark
+.ME
+and modified by
+.MT wl@\:gnu.org
+Werner Lemberg
+.ME
+and
+.MT groff\-bernd.warken\-72@\:web.de
+Bernd Warken
+.ME .
+.
+.
+.\" ====================================================================
 .SH "SEE ALSO"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
+.
+.IR "Groff: The GNU Implementation of troff" ,
+by Trent A.\& Fisher and Werner Lemberg,
+is the primary
+.I groff
+manual.
+.
+You can browse it interactively with \[lq]info groff\[rq].
 .
-The
-.I groff info
-.IR file ,
-cf.\&
-.BR info (1)
-presents all groff documentation within a single document.
 .
 .TP
 .BR groff (@MAN1EXT@)
@@ -3943,31 +3958,27 @@ systems, including pointers to further historical documentation.
 .TP
 .RI [ CSTR\~#54\/ ]
 The
-.I Nroff/\:Troff User\[aq]s Manual
+.I Nroff/\:Troff User's Manual
 by
 .I J.\& F.\& Ossanna
 of 1976 in the revision of
 .I Brian Kernighan
 of 1992, being the
-.UR http://\:cm.bell-labs.com/\:cm/\:cs/\:cstr/\:54.ps.gz
+.UR http://\:cm.bell\-labs.com/\:cm/\:cs/\:cstr/\:54.ps.gz
 classical troff documentation
 .UE .
 .
 .
-.\" --------------------------------------------------------------------
-.SH COPYING
-.\" --------------------------------------------------------------------
-.co
-.\" --------------------------------------------------------------------
-.SH AUTHORS
-.\" --------------------------------------------------------------------
-.au
+.\" Restore compatibility mode (for, e.g., Solaris 10/11).
+.cp \n[groff_diff_C]
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .\" Emacs variables
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .\" Local Variables:
 .\" mode: nroff
+.\" fill-column: 72
 .\" End:
+.\" vim: set filetype=groff textwidth=72:
similarity index 79%
rename from man/groff_font.man
rename to man/groff_font.5.man
index 58da9cd..cb3bbf0 100644 (file)
@@ -1,48 +1,35 @@
-.\" Emacs mode: -*- nroff -*-
-.TH GROFF_FONT @MAN5EXT@ "@MDATE@" "Groff Version @VERSION@"
+.TH GROFF_FONT @MAN5EXT@ "@MDATE@" "groff @VERSION@"
 .SH NAME
 groff_font \- format of groff device and font description files
 .
 .
-.\" --------------------------------------------------------------------
-.\" License
-.\" --------------------------------------------------------------------
-.
-.de co
-Copyright \(co 1989\-2014 Free Software Foundation, Inc.
-
-This file is part of groff (GNU roff), which is a free software project.
-
-You can redistribute it and/or modify it under the terms of the GNU
-General Public License as published by the Free Software Foundation,
-either version 2 of the License, or (at your option) any later
-version.
-
-You should have received a copy of the GNU General Public License
-along with this program.  If not, see
-.UR http://www.gnu.org/licenses/gpl-2.0.html
-GPL2
-.UE .
-..
-.
-.\" --------------------------------------------------------------------
-.\" Macro definitions
-.\" --------------------------------------------------------------------
-.
+.\" ====================================================================
+.\" Legal Terms
+.\" ====================================================================
+.\"
+.\" Copyright (C) 1989-2018 Free Software Foundation, Inc.
+.\"
+.\" This file is part of groff (GNU roff), which is a free software
+.\" project.
+.\"
+.\" You can redistribute it and/or modify it under the terms of the GNU
+.\" General Public License as published by the Free Software Foundation,
+.\" either version 2 of the License, or (at your option) any later
+.\" version.
+.\"
+.\" You should have received a copy of the GNU General Public License
+.\" along with this program.  If not, see
+.\" <http://www.gnu.org/licenses/gpl-2.0.html>.
+.
+.
+.\" Save and disable compatibility mode (for, e.g., Solaris 10/11).
 .do nr groff_font_C \n[.C]
 .cp 0
 .
 .
-.\" Like TP, but if specified indent is more than half
-.\" the current line-length - indent, use the default indent.
-.de Tp
-.  ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP
-.  el .TP "\\$1"
-..
-.
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH DESCRIPTION
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The groff font format is roughly a superset of the ditroff
 font format.
@@ -50,26 +37,27 @@ font format.
 The font files for device
 .I name
 are stored in a directory
-.BI dev name\c
-\&.
+.IR dev name.
 .
-There are two types of file: a device description file called
-.B DESC
-and for each font\~\c
-.I F
-a font file called\~\c
-.IR F .
+There are two types of file:
+a device description file called
+.I DESC
+and for each
+.RI font \~F ,
+a font file called\~F.
 .
 These are text files;
 unlike the ditroff font format,
 there is no associated binary format.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS DESC file format
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
-The DESC file can contain the following types of line as shown below.
+The
+.I DESC
+file can contain the following types of line as shown below.
 .
 Later entries in the file override previous values.
 .
@@ -120,13 +108,14 @@ PostScript input.
 .
 Under GNU/Linux this is usually
 .I gs
-but under other systems (notably cygwin) it might be set to another name.
+but under other systems (notably cygwin) it might be set to another
+name.
 .
 .TP
 .BI "paperlength " n
 The physical vertical dimension of the output medium in machine units.
 .
-This isn\[aq]t used by
+This isn't used by
 .B troff
 itself but by output devices.
 .
@@ -148,13 +137,14 @@ types letter, legal, tabloid, ledger, statement, executive, com10, and
 monarch.
 .
 Case is not significant for
-.IR string
+.I string
 if it holds predefined paper types.
 .
 Alternatively,
 .I string
-can be a file name (e.g.\& \[oq]/etc/papersize\[cq]); if the file can
-be opened,
+can be a file name (e.g.\&
+.IR /etc/papersize );
+if the file can be opened,
 .B groff
 reads the first line and tests for the above paper sizes.
 .
@@ -175,8 +165,8 @@ for picas.
 Example:
 .BR 12c,235p .
 .
-An argument which starts with a digit is always treated as a custom paper
-format.
+An argument which starts with a digit is always treated as a custom
+paper format.
 .
 .B papersize
 sets both the vertical and horizontal dimension of the output medium.
@@ -196,8 +186,8 @@ Use
 .B papersize
 instead.
 .
-This isn\[aq]t used by
-.BR troff
+This isn't used by
+.B troff
 itself but by output devices.
 .
 .TP
@@ -358,7 +348,9 @@ and
 .B sizes
 lines are compulsory.
 .
-Not all commands in the DESC file are used by
+Not all commands in the
+.I DESC
+file are used by
 .B troff
 itself; some of the keywords (or even additional ones) are used by
 postprocessors to store arbitrary information about the device.
@@ -372,9 +364,9 @@ but completely ignored:
 .BR biggestfont .
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS Font file format
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 A font file has two sections; empty lines are ignored in both of them.
 .
@@ -497,7 +489,7 @@ If it is exactly two characters
 it can be entered as
 .BI \[rs]( xx\fR.
 .
-Note that single-letter special characters can\[aq]t be accessed as
+Note that single-letter special characters can't be accessed as
 .BI \[rs] c\fR;
 the only exception is \[oq]\[rs]\-\[cq] which is identical to
 \[oq]\[rs][\-]\[cq].
@@ -564,7 +556,7 @@ to build sub-encoding arrays for PS fonts containing more than 256
 glyphs.
 .
 (It has also been used for
-.BR \%grohtml \[aq]s
+.BR \%grohtml 's
 entity names but for efficiency reasons this data is now compiled
 directly into
 .BR \%grohtml .)
@@ -580,12 +572,12 @@ field has the form (in one line; it is broken here for the sake of
 readability):
 .
 .IP
-.I width\c
-.RI [\fB, height\c
-.RI [\fB, depth\c
+.I width\/\c
+.RI [\fB, height\/\c
+.RI [\fB, depth\/\c
 .RI [\fB, italic-correction
 .br
-.RI [\fB, left-italic-correction\c
+.RI [\fB, left-italic-correction\/\c
 .RI [\fB, subscript-correction ]]]]]
 .
 .LP
@@ -613,9 +605,8 @@ given a zero height, rather than a negative height.
 The
 .I depth
 subfield gives the depth of the glyph, that is, the distance
-below the lowest point below the baseline to which the
-glyph extends (downwards is positive);
-if a glyph does not extend below above the baseline, it should be
+below the baseline to which the glyph extends (downwards is positive);
+if a glyph does not extend below the baseline, it should be
 given a zero depth, rather than a negative depth.
 .
 The
@@ -671,26 +662,26 @@ Most entries in kernpairs section have a negative value for\~\c
 .IR n .
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH FILES
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
-.Tp \w'@FONTDIR@/devname/DESC'u+3n
-.BI @FONTDIR@/dev name /DESC
+.TP
+.IR @FONTDIR@/dev name /DESC
 Device description file for device
 .IR name .
 .
 .TP
-.BI @FONTDIR@/dev name / F
+.IR @FONTDIR@/dev name / F
 Font file for font\~\c
 .I F
 of device
 .IR name .
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "SEE ALSO"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .BR groff_out (@MAN5EXT@),
 .BR @g@troff (@MAN1EXT@),
@@ -699,7 +690,8 @@ of device
 .
 .
 .P
-A man\-page
+.\" XXX: Why is this paragraph _here_, of all places?
+A man page
 .IR name ( n )
 of section
 .I n
@@ -711,16 +703,21 @@ can be viewed either with
 for text mode or
 .RS
 \[Do]
-.BI "groffer " n  name"
+.BI groffer " n name"
 .RE
 for graphical mode (default is PDF mode).
-.RE
 .
 .
-.\" --------------------------------------------------------------------
-.SH COPYING
-.\" --------------------------------------------------------------------
-.co
+.\" Restore compatibility mode (for, e.g., Solaris 10/11).
+.cp \n[groff_font_C]
 .
 .
-.cp \n[groff_font_C]
+.\" ====================================================================
+.\" Editor settings
+.\" ====================================================================
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" fill-column: 72
+.\" End:
+.\" vim: set filetype=groff textwidth=72:
similarity index 86%
rename from man/groff_out.man
rename to man/groff_out.5.man
index f9ef631..6f1bd18 100644 (file)
@@ -1,6 +1,5 @@
 '\" e
-.\" The above line should force the use of eqn as a preprocessor
-.TH GROFF_OUT @MAN5EXT@ "@MDATE@" "Groff Version @VERSION@"
+.TH GROFF_OUT @MAN5EXT@ "@MDATE@" "groff @VERSION@"
 .SH NAME
 groff_out \- groff intermediate output format
 .
@@ -9,45 +8,36 @@ groff_out \- groff intermediate output format
 .\" Installed position: <prefix>/share/man/man5/groff_out.5
 .
 .
-.\" --------------------------------------------------------------------
-.\" License and authors
-.\" --------------------------------------------------------------------
-.
-.de co
-Copyright \[co] 1989-2014 Free Software Foundation, Inc.
-
-This file is part of groff, the GNU roff type-setting system, which is
-a free software project.
-
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.3 or
-any later version published by the Free Software Foundation; with no
-Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
-Texts.
-
-A copy of the Free Documentation License is included as a file called
-FDL in the main directory of the groff source package, it is also
-available in the internet at
-.UR http://\:www.gnu.org/\:copyleft/\:fdl.html
-GNU FDL license
-.UE .
-..
+.\" Save and disable compatibility mode (for, e.g., Solaris 10/11).
+.do nr groff_out_C \n[.C]
+.cp 0
 .
-.de au
-In 2001, this document was rewritten from scrach by
-.MT groff-bernd.warken-72@web.de
-Bernd Warken
-.ME .
-..
+.
+.\" ====================================================================
+.\" Legal Terms
+.\" ====================================================================
+.\"
+.\" Copyright (C) 1989-2018 Free Software Foundation, Inc.
+.\"
+.\" This file is part of groff, the GNU roff type-setting system.
+.\"
+.\" Permission is granted to copy, distribute and/or modify this
+.\" document under the terms of the GNU Free Documentation License,
+.\" Version 1.3 or any later version published by the Free Software
+.\" Foundation; with no Invariant Sections, with no Front-Cover Texts,
+.\" and with no Back-Cover Texts.
+.\"
+.\" A copy of the Free Documentation License is included as a file
+.\" called FDL in the main directory of the groff source package.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .\" Setup
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
-.\" ----------------- Document configuration
+.\" ================= Document configuration
 .
-.\" Number register to decide whether the commands `{' and `}' are used
+.\" Number register to decide whether the commands '{' and '}' are used
 .\" 0: disable (actual default); 1: enable
 .nr @USE_ENV_STACK 0
 .
@@ -59,7 +49,7 @@ after these commands, otherwise the position is not changed.
 ..
 .nr @STUPID_DRAWING_POSITIONING 1
 .
-.\" ----------------- Semantical definitions
+.\" ================= Semantical definitions
 .
 .nr @maxcolor 65536
 .ds @backslash \[rs]\"
@@ -71,7 +61,8 @@ after these commands, otherwise the position is not changed.
 .RI ( \,\\$1\/ ,\  \,\\$2\/ )\\$3
 ..
 .de indexed_offset
-.offset \fI\\$1\/\fP\d\s-3\\$2\s+3\u\x'\n[.v]/4' \fI\\$3\/\fP\d\s-3\\$4\s+3\u\x'\n[.v]/4' \\$5\x'\n[.v]/4'
+.offset \fI\\$1\/\fP\d\s-3\\$2\s+3\u\x'\n[.v]/4' \fI\\$3\/\fP\
+\d\s-3\\$4\s+3\u\x'\n[.v]/4' \\$5\x'\n[.v]/4'
 ..
 .\" format: .command <name> "<arguments>" <punctuation>
 .de command
@@ -108,9 +99,9 @@ after these commands, otherwise the position is not changed.
 .\" End of macro definitions
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH DESCRIPTION
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 This manual page describes the
 .I intermediate output
@@ -208,9 +199,9 @@ still supported, but not used any longer by
 .IR @g@troff .
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "LANGUAGE CONCEPTS"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 During the run of
 .BR @g@troff ,
@@ -235,9 +226,9 @@ There are commands for positioning and text writing, for drawing, and
 for device controlling.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Separation"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .I Classical troff output
 had strange requirements on whitespace.
@@ -297,7 +288,7 @@ that is optionally followed by a comment, and a newline character.
 The normal commands, those for positioning and text, consist of a
 single letter taking a fixed number of arguments.
 .
-For historical reasons, the parser allows to stack such commands on
+For historical reasons, the parser allows stacking of such commands on
 the same line, but fortunately, in
 .I groff intermediate
 .IR output ,
@@ -330,17 +321,21 @@ occur everywhere.
 They are just ignored.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Argument Units"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 Some commands take integer arguments that are assumed to represent
 values in a measurement unit, but the letter for the corresponding
 .I scale indicator
-is not written with the output command arguments; see
+is not written with the output command arguments;
+see
 .BR groff (@MAN7EXT@)
-and the
-.I groff info file
+and
+.IR "Groff: The GNU Implementation of troff" ,
+the
+.I groff
+Texinfo manual,
 for more on this topic.
 .
 Most commands assume the scale indicator\~\c
@@ -381,9 +376,9 @@ character, which then is regarded as the first character of the next
 argument or command.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Document Parts"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 A correct
 .I intermediate output
 document consists of two parts, the
@@ -411,8 +406,8 @@ is guaranteed to consist of the following three lines (in that order):
 .B x init
 .RE
 .P
-with the arguments set as outlined in the section
-.BR "Device Control Commands" .
+with the arguments set as outlined in subsection \[lq]Device Control
+Commands\[rq] below.
 .
 However, the parser for the
 .I intermediate output
@@ -455,9 +450,9 @@ is done relative to the current page, all other positioning
 is done relative to the current location within this page.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "COMMAND REFERENCE"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 This section describes all
 .I intermediate output
@@ -466,9 +461,9 @@ commands, the classical commands as well as the
 extensions.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Comment Command"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .TP
 .BI # anything \[la]end-of-line\[ra]
@@ -489,9 +484,9 @@ Each comment can be preceded by arbitrary
 every command can be terminated by a comment.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Simple Commands"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The commands in this subsection have a command code consisting of a
 single character, taking a fixed number of arguments.
@@ -586,7 +581,7 @@ Move
 .B u
 horizontally to the right.
 .
-.I [CSTR\~#54]
+[CSTR\~#54]
 allows negative values for
 .I n
 also, but
@@ -666,8 +661,8 @@ If
 .B \-T\~html
 or
 .B \-T\~xhtml
-is used, negative values are emitted also to indicate an unbreakable space
-with given width.
+is used, negative values are emitted also to indicate an unbreakable
+space with given width.
 .
 For example,
 .B N\~\-193
@@ -734,8 +729,8 @@ used the unit
 .I points
 (\c
 .BR p )
-instead; see section
-.BR COMPATIBILITY .
+instead;
+see section \[lq]Compatibility\[rq] below.
 .
 .
 .TP
@@ -815,7 +810,7 @@ down
 .RI ( n
 is a non-negative integer).
 .
-.I [CSTR\~#54]
+[CSTR\~#54]
 allows negative values for
 .I n
 also, but
@@ -830,9 +825,9 @@ Informs about a paddable whitespace to increase readability.
 The spacing itself must be performed explicitly by a move command.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Graphics Commands"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 Each graphics or drawing command in the
 .I intermediate output
@@ -843,12 +838,10 @@ is followed by a fixed or variable number of integer arguments that
 are separated by a single space character.
 .
 A
-.B D\c
-\~command
+.BR D \~command
 may not be followed by another command on the same line (apart from a
 comment), so each
-.B D\c
-\~command
+.BR D \~command
 is terminated by a
 .I syntactical line
 .IR break .
@@ -896,8 +889,8 @@ escape sequence; see
 .
 .P
 Unknown
-.B D\c
-\~commands are assumed to be device-specific.
+.BR D \~commands
+are assumed to be device-specific.
 .
 Its arguments are parsed as strings; the whole information is then
 sent to the postprocessor.
@@ -908,8 +901,7 @@ In the following command reference, the syntax element
 .I \[la]line-break\[ra]
 means a
 .I syntactical line break
-as defined in section
-.BR Separation .
+as defined in subsection \[lq]Separation\[rq] above.
 .
 .
 .TP
@@ -945,7 +937,7 @@ Draw a solid circle using the current fill color with diameter\~\c
 with leftmost point at the current position; then move the current
 position to the rightmost point of the circle.
 .
-An optional second integer argument is ignored (this allows to the
+An optional second integer argument is ignored (this allows the
 formatter to generate an even number of arguments).
 .
 This command is a
@@ -1187,9 +1179,9 @@ This command is a
 extension.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Device Control Commands"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 Each device control command starts with the letter
 .B x
@@ -1236,8 +1228,7 @@ In the following, the syntax element
 .I \[la]line-break\[ra]
 means a
 .I syntactical line break
-as defined in section
-.BR Separation .
+as defined in subsection \[lq]Separation\[rq] above.
 .
 .TP
 .x-command F name
@@ -1264,8 +1255,8 @@ Mount font position\~\c
 .I n
 (a non-negative integer) with font named\~\c
 .I s
-(a text word),
-cf.
+(a text word);
+see
 .BR groff_font (@MAN5EXT@).
 .
 .
@@ -1280,8 +1271,8 @@ Set character height to\~\c
 .I Classical troff
 used the unit points (\c
 .BR p )
-instead; see section
-.BR COMPATIBILITY .
+instead;
+see section \[lq]Compatibility\[rq] below.
 .
 .
 .TP
@@ -1419,9 +1410,9 @@ The line-continuing feature is a
 extension.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Obsolete Command"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 In
 .I classical troff
@@ -1484,9 +1475,9 @@ and\~\c
 provide a better functionality.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "POSTPROCESSING"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The
 .I roff
@@ -1511,13 +1502,13 @@ So a
 .I groff
 postprocessor must only redefine the methods of this class.
 .
-For details, see the reference in section
-.BR FILES .
+For details,
+see the reference in section \[lq]Files\[rq] below.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "EXAMPLES"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 This section presents the
 .I intermediate output
@@ -1701,16 +1692,16 @@ Due to the obsolete jump-and-write command, the text clusters in the
 classical output are almost unreadable.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "COMPATIBILITY"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The
 .I intermediate output
 language of the
 .I classical troff
 was first documented in
-.IR [CSTR\~#97] .
+[CSTR\~#97] .
 .
 The
 .I groff intermediate output
@@ -1828,17 +1819,17 @@ are documented in
 .BR groff_diff (@MAN7EXT@).
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "FILES"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .TP
-.BI @FONTDIR@/dev name /DESC
+.IR @FONTDIR@/dev name /DESC
 Device description file for device
 .IR name .
 .
 .TP
-.IB \[la]groff-source-dir\[ra] /src/libs/libdriver/input.cpp
+.I src/libs/libdriver/input.cpp
 Defines the parser and postprocessor for the
 .I intermediate
 .IR output .
@@ -1852,9 +1843,24 @@ This parser is the definitive specification of the
 format.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
+.SH AUTHORS
+.\" ====================================================================
+James Clark wrote an early version of this document, which described
+only the differences between
+.BR ditroff (7)'s
+output format and that of GNU
+.IR roff .
+.
+The present version was completely rewritten in 2001 by
+.MT groff\-bernd.warken\-72@\:web.de
+Bernd Warken
+.ME .
+.
+.
+.\" ====================================================================
 .SH "SEE ALSO"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 A reference like
 .BR groff (@MAN7EXT@)
@@ -1862,7 +1868,7 @@ refers to a manual page; here
 .B groff
 in section\~\c
 .I @MAN7EXT@
-of the man-page documentation system.
+of the man page documentation system.
 .
 To read the example, look up section\~@MAN7EXT@ in your desktop help
 system or call from the shell prompt
@@ -1898,7 +1904,7 @@ language such as numerical units and escape sequences.
 .TP
 .BR groff_font (@MAN5EXT@)
 for details on the device scaling parameters of the
-.B DESC
+.I DESC
 file.
 .
 .
@@ -1939,45 +1945,38 @@ the groff postprocessor programs.
 .
 .
 .P
-For a treatment of all aspects of the groff system within a single
-document, see the
-.I groff info
-.IR file .
-.
-It can be read within the integrated help systems, within
-.BR emacs (1)
-or from the shell prompt by
+.IR "Groff: The GNU Implementation of troff" ,
+by Trent A.\& Fisher and Werner Lemberg,
+is the primary
+.I groff
+manual.
 .
-.RS
-.EX
-\fBshell>\fP info groff
-.EE
-.RE
+You can browse it interactively with \[lq]info groff\[rq].
 .
 .
 .P
 The
 .I classical troff output language
 is described in two AT&T Bell Labs CSTR documents available on-line at
-.UR http://\:cm.bell-labs.com/\:cm/\:cs/\:cstr.html
+.UR http://\:cm.bell\-labs.com/\:cm/\:cs/\:cstr.html
 Bell Labs CSTR site
 .UE .
 .
 .
 .TP
-.I [CSTR #97]
+[CSTR #97]
 .I A Typesetter-independent TROFF
 by
 .I Brian Kernighan
 is the original and most comprehensive documentation on the output
 language; see
-.UR http://\:cm.bell-labs.com/\:cm/\:cs/\:cstr/\:97.ps.gz
+.UR http://\:cm.bell\-labs.com/\:cm/\:cs/\:cstr/\:97.ps.gz
 CSTR\~#97
 .UE .
 .
 .
 .TP
-.I [CSTR\~#54]
+[CSTR\~#54]
 The 1992 revision of the
 .I Nroff/\:Troff User's Manual
 by
@@ -1985,27 +1984,23 @@ by
 and
 .I Brian Kernighan
 isn't as comprehensive as
-.I [CSTR\~#97]
+[CSTR\~#97]
 regarding the output language; see
-.UR http://\:cm.bell-labs.com/\:cm/\:cs/\:cstr/\:54.ps.gz
+.UR http://\:cm.bell\-labs.com/\:cm/\:cs/\:cstr/\:54.ps.gz
 CSTR\~#54
 .UE .
 .
 .
-.\" --------------------------------------------------------------------
-.SH "COPYING"
-.\" --------------------------------------------------------------------
-.co
-.\" --------------------------------------------------------------------
-.SH "AUTHORS"
-.\" --------------------------------------------------------------------
-.au
+.\" Restore compatibility mode (for, e.g., Solaris 10/11).
+.cp \n[groff_out_C]
 .
 .
-.\" --------------------------------------------------------------------
-.\" Emacs settings
-.\" --------------------------------------------------------------------
-.\"
+.\" ====================================================================
+.\" Editor settings
+.\" ====================================================================
+.
 .\" Local Variables:
 .\" mode: nroff
+.\" fill-column: 72
 .\" End:
+.\" vim: set filetype=groff textwidth=72:
similarity index 75%
rename from man/groff_tmac.man
rename to man/groff_tmac.5.man
index 5017dcb..750fd50 100644 (file)
@@ -1,5 +1,4 @@
-.\" Emacs mode: -*- nroff -*-
-.TH GROFF_TMAC @MAN5EXT@ "@MDATE@" "Groff Version @VERSION@"
+.TH GROFF_TMAC @MAN5EXT@ "@MDATE@" "groff @VERSION@"
 .SH NAME
 groff_tmac \- macro files in the roff typesetting system
 .
@@ -7,45 +6,36 @@ groff_tmac \- macro files in the roff typesetting system
 .\" Source file position: <groff_source>/man/groff_tmac.man
 .\" Installed position: <prefix>/share/man/man5/groff_tmac.5
 .
-.\" --------------------------------------------------------------------
-.\" Legalese
-.\" --------------------------------------------------------------------
-.
-.de co
-Copyright \[co] 2000-2014 Free Software Foundation, Inc.
-
-This file is part of groff, the GNU roff type-setting system.
-
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.3 or
-any later version published by the Free Software Foundation; with no
-Front-Cover Texts, and with no Back-Cover Texts.
-
-A copy of the Free Documentation License is included as a file called
-FDL in the main directory of the groff source package, it is also
-available on\-line at the
-.UR http://\:www.gnu.org/\:copyleft/\:fdl.html
-GNU copyleft site
-.UE .
-..
 .
-.de au
-This file was written by
-.ME groff-bernd.warken-72@web.de
-Bernd Warken
-.ME
-and
-.MT wl@gnu.org
-Werner Lemberg
-.ME .
-..
+.\" Save and disable compatibility mode (for, e.g., Solaris 10/11).
+.do nr groff_tmac_C \n[.C]
+.cp 0
+.
+.
+.\" ====================================================================
+.\" Legal Terms
+.\" ====================================================================
+.\"
+.\" Copyright (C) 2000-2018 Free Software Foundation, Inc.
+.\"
+.\" This file is part of groff, the GNU roff type-setting system.
+.\"
+.\" Permission is granted to copy, distribute and/or modify this
+.\" document under the terms of the GNU Free Documentation License,
+.\" Version 1.3 or any later version published by the Free Software
+.\" Foundation; with no Invariant Sections, with no Front-Cover Texts,
+.\" and with no Back-Cover Texts.
+.\"
+.\" A copy of the Free Documentation License is included as a file
+.\" called FDL in the main directory of the groff source package.
+.
 .
 .ds Ellipsis \&.\|.\|.\&\"
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH DESCRIPTION
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The
 .BR roff (@MAN7EXT@)
@@ -53,7 +43,7 @@ type-setting system provides a set of macro packages suitable for
 special kinds of documents.
 .
 Each macro package stores its macros and definitions in a file called
-the package\[aq]s
+the package's
 .BR "tmac file" .
 .
 The name is deduced from
@@ -72,16 +62,16 @@ the
 directories.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "GROFF MACRO PACKAGES"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .I groff
 provides all classical macro packages, some more full packages, and
 some secondary packages for special purposes.
 .
-Note that it is not possible to use multiple primary macro packages at the
-same time; saying e.g.\&
+Note that it is not possible to use multiple primary macro packages at
+the same time; saying e.g.\&
 .
 .IP
 .EX
@@ -106,25 +96,25 @@ or the
 .B man
 macro package.
 See below the description of the
-.B andoc.tmac
+.I andoc.tmac
 file.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Man\~Pages"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .TP
-.B man
-This is the classical macro package for UNIX manual pages
+.I man
+This is the classical macro package for Unix manual pages
 (man\~pages); it is quite handy and easy to use; see
 .BR groff_man (@MAN7EXT@).
 .
 .
 .TP
-.B doc
+.I doc
 .TQ
-.B mdoc
+.I mdoc
 An alternative macro package for man\~pages mainly used in BSD
 systems; it provides many new features, but it is not the standard for
 man\~pages; see
@@ -132,10 +122,10 @@ man\~pages; see
 .
 .
 .TP
-.B andoc
+.I andoc
 .TQ
-.B mandoc
-Use this file in case you don\[aq]t know whether the
+.I mandoc
+Use this file in case you don't know whether the
 .B man
 macros or the
 .B mdoc
@@ -143,9 +133,9 @@ package should be used.
 Multiple man pages (in either format) can be handled.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Full Packages"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The packages in this section provide a complete set of macros for
 writing documents of any kind, up to whole books.
@@ -155,7 +145,7 @@ to use.
 .
 .
 .TP
-.B me
+.I me
 The classical
 .I me
 macro package; see
@@ -163,7 +153,7 @@ macro package; see
 .
 .
 .TP
-.B mm
+.I mm
 The semi-classical
 .I mm
 macro package; see
@@ -171,7 +161,7 @@ macro package; see
 .
 .
 .TP
-.B mom
+.I mom
 The new
 .I mom
 macro package, only available in groff.
@@ -185,39 +175,39 @@ See
 .
 .
 .TP
-.B ms
+.I ms
 The classical
 .I ms
 macro package; see
 .BR groff_ms (@MAN7EXT@).
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Language-specific Packages"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .TP
-.B cs
+.I cs
 This file adds support for Czech localization, including the main macro
 packages (me, mom, mm, and ms).
 .
 .IP
 Note that
-.B cs.tmac
+.I cs.tmac
 sets the input encoding to latin-2.
 .
 .
 .TP
-.B de
+.I de
 .TQ
-.B den
-German localization support, including the main macro packages (me, mom, mm,
-and ms).
+.I den
+German localization support, including the main macro packages (me, mom,
+mm, and ms).
 .
 .IP
-.B de.tmac
+.I de.tmac
 selects hyphenation patterns for traditional orthography, and
-.B den.tmac
+.I den.tmac
 does the same for the new orthography
 (\[oq]Recht\%schreib\%reform\[cq]).
 .
@@ -225,7 +215,7 @@ It should be used as the last macro package on the command line.
 .
 .
 .TP
-.B fr
+.I fr
 This file adds support for French localization, including the main macro
 packages (me, mom, mm, and ms).
 .
@@ -240,14 +230,15 @@ Example:
 .
 .IP
 Note that
-.B fr.tmac
+.I fr.tmac
 sets the input encoding to latin-9 to get proper support of the
 \[oq]oe\[cq] ligature.
 .
 .
 .TP
-.B sv
-Swedish localization support, including the me, mom, and ms macro packages.
+.I sv
+Swedish localization support, including the me, mom, and ms macro
+packages.
 .
 Note that Swedish for the mm macros is handled separately; see
 .BR groff_mmse (@MAN7EXT@).
@@ -255,19 +246,19 @@ Note that Swedish for the mm macros is handled separately; see
 It should be used as the last macro package on the command line.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Input Encodings"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .
 .TP
-.B latin1
+.I latin1
 .TQ
-.B latin2
+.I latin2
 .TQ
-.B latin5
+.I latin5
 .TQ
-.B latin9
+.I latin9
 Various input encodings supported directly by groff.
 .
 Normally, this macro is loaded at the very beginning of a document or
@@ -276,18 +267,18 @@ specified as the first macro argument on the command line.
 .B @g@roff
 loads latin1 by default at start-up.
 .
-Note that these macro packages don\[aq]t work on EBCDIC hosts.
+Note that these macro packages don't work on EBCDIC hosts.
 .
 .
 .TP
-.B cp1047
+.I cp1047
 Encoding support for EBCDIC.
 .
 On those platforms it is loaded automatically at start-up.
 .
 Due to different character ranges used in
 .B @g@roff
-it doesn\[aq]t work on architectures which are based on ASCII.
+it doesn't work on architectures which are based on ASCII.
 .
 .
 .P
@@ -312,9 +303,9 @@ for other devices it is usually sufficient to install proper
 fonts which contain the necessary glyphs.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Special Packages"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The macro packages in this section are not intended for stand-alone
 usage, but can be used to add special functionality to any other
@@ -322,13 +313,13 @@ macro package or to plain groff.
 .
 .
 .TP
-.B 62bit
-Provide some macros for addition, multiplication, and division of 60bit
-integers (allowing safe multiplication of 31bit integers, for example).
+.I 62bit
+Provides macros for addition, multiplication, and division of 62-bit
+integers (allowing safe multiplication of 31-bit integers, for example).
 .
 .
 .TP
-.B ec
+.I ec
 Switch to the EC and TC font families.
 .
 To be used with
@@ -337,10 +328,32 @@ To be used with
 .
 .
 .TP
-.B papersize
+.I hdtbl
+The Heidelberger table macros, contributed by Joachim Walsdorff, allow
+the generation of tables through a syntax similar to the HTML table
+model.
+.
+Note that
+.I hdtbl
+is a macro package, not a preprocessor like
+.BR tbl (@MAN1EXT@).
+.
+.I hdtbl
+works only with the
+.B \-Tps
+and
+.B \-Tpdf
+output devices.
+.
+See
+.BR groff_hdtbl (@MAN7EXT@) .
+.
+.
+.TP
+.I papersize
 This macro file is already loaded at start-up by
 .B @g@troff
-so it isn\[aq]t necessary to call it explicitly.
+so it isn't necessary to call it explicitly.
 .
 It provides an interface to set the paper size on the command line with
 the option \f[B]\%\-dpaper=\f[]\,\f[I]size\f[].
@@ -364,25 +377,53 @@ Examples:
 .BR letterl .
 .
 .IP
-Most output drivers need additional command line switches
+Most output drivers need additional command-line switches
 .B \-p
 and
 .B \-l
-to override the default paper length and orientation as set in the driver
-specific DESC file.
+to override the default paper length and orientation as set in the
+driver-specific DESC file.
 .
 For example, use the following for PS output on A4 paper in landscape
 orientation:
 .
 .IP
 .EX
-.SM
 \fIsh#\fP groff \-Tps \-dpaper=a4l \-P\-pa4 \-P\-l \-ms foo.ms > foo.ps
 .EE
 .
 .
 .TP
-.B pic
+.I pdfpic
+A single macro is provided in this file,
+.BR PSPIC ,
+to include a PDF graphic in a document, i.e., under the output device
+.BR \-Tpdf .
+.
+For all other devices,
+.I pspic
+is used.
+.
+So
+.I pdfpic
+is an extension of
+.IR pspic .
+.
+By that you can now even replace all
+.B PSPIC
+by
+.BR PDFPIC ,
+nothing gets lost by that.
+.
+The options of
+.B PDFPIC
+are identical to the
+.B PSDIF
+options.
+.
+.
+.TP
+.I pic
 This file provides proper definitions for the macros
 .B PS
 and
@@ -393,12 +434,12 @@ preprocessor.
 .
 They center each picture.
 .
-Use it only if your macro package doesn\[aq]t provide proper
+Use it only if your macro package doesn't provide proper
 definitions for those two macros (actually, most of them already do).
 .
 .
 .TP
-.B pspic
+.I pspic
 A single macro is provided in this file,
 .BR PSPIC ,
 to include a PostScript graphic in a document.
@@ -414,7 +455,7 @@ of the same size.
 .
 This macro file is already loaded at start-up by
 .B @g@troff
-so it isn\[aq]t necessary to call it explicitly.
+so it isn't necessary to call it explicitly.
 .
 .IP
 Syntax:
@@ -440,8 +481,8 @@ If neither a
 .I width
 nor a
 .I height
-argument is specified, the image\[aq]s natural width (as given in the
-file\[aq]s bounding box) or the current line length is used as the
+argument is specified, the image's natural width (as given in the
+file's bounding box) or the current line length is used as the
 width, whatever is smaller.
 .
 The
@@ -482,8 +523,8 @@ option causes the graphic to be indented by\~\c
 For use of
 .B .PSPIC
 within a diversion it is recommended to extend it with the following
-code, assuring that the diversion\[aq]s width completely covers the
-image\[aq]s width.
+code, assuring that the diversion's width completely covers the
+image's width.
 .
 .RS
 .IP
@@ -499,7 +540,7 @@ image\[aq]s width.
 .
 .
 .TP
-.B ptx
+.I ptx
 A single macro is provided in this file,
 .BR xx ,
 for formatting permuted index entries as produced by the GNU
@@ -511,7 +552,7 @@ your document and adapt it to your needs.
 .
 .
 .TP
-.B trace
+.I trace
 Use this for tracing macro calls.
 .
 It is only useful for debugging.
@@ -521,7 +562,7 @@ See
 .
 .
 .TP
-.B tty-char
+.I tty\-char
 Overrides the definition of standard troff characters and some groff
 characters for TTY devices.
 .
@@ -530,16 +571,16 @@ normal TTY formatting to allow processing with critical equipment.
 .
 .
 .TP
-.B www
+.I www
 Additions of elements known from the HTML format, as used in the
 internet (World Wide Web) pages; this includes URL links and mail
 addresses; see
 .BR groff_www (@MAN7EXT@).
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH NAMING
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 Classical roff systems were designed before the conventions of the
 modern C
@@ -568,7 +609,7 @@ So it could be activated by the argument
 to option
 .BR \-m ,
 or
-.BR \-man
+.B \-man
 for short.
 .
 .
@@ -582,7 +623,7 @@ was called
 in the documentation, although a more suitable name would be
 .IR doc .
 For, when omitting the space between the option and its argument, the
-command line option for activating this package reads
+command-line option for activating this package reads
 .BR \-mdoc .
 .
 .
@@ -597,7 +638,7 @@ So in
 .IR groff ,
 the
 .I man
-macro package may be specified as on of the following four methods:
+macro package may be specified as one of the following four methods:
 .
 .IP
 .EX
@@ -631,7 +672,8 @@ would not make much sense.
 .
 .P
 A second strange feature of classical troff was to name macro files
-in the form \f[B]tmac.\f[]\,\f[I]name\f[].
+in the form
+.IR tmac. name.
 In modern operating systems, the type of a file is specified as a
 postfix, the file name extension.
 .
@@ -661,23 +703,23 @@ most macro packages are described in\~man pages called
 with a leading \[oq]m\[cq] for the classical packages.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH INCLUSION
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 There are several ways to use a macro package in a document.
 .
 The classical way is to specify the troff/groff option
-.BR \-m
+.B \-m
 .I name
 at run-time; this makes the contents of the macro package
 .I name
 available.
 .
 In groff, the file
-.IB name .tmac
+.RI name .tmac
 is searched within the tmac path; if not found,
-.BI tmac. name
+.IR tmac. name
 is searched for instead.
 .
 .
@@ -693,7 +735,7 @@ In groff, this was improved by the similar request
 .B .mso
 .IR package ,
 which added searching in the tmac path, just like option
-.BR \-m
+.B \-m
 does.
 .
 .
@@ -764,9 +806,10 @@ to invoke
 .
 .P
 If you want to write your own groff macro file, call it
-.IB whatever .tmac
-and put it in some directory of the tmac path, see section
-.BR FILES .
+.RI whatever .tmac
+and put it in a directory in the tmac path;
+see section \[lq]Files\[rq] below.
+.
 Then documents can include it with the
 .B .mso
 request or the option
@@ -774,9 +817,9 @@ request or the option
 .
 .
 .ig
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH CONVENTION
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .\" This section does not fit into the framework of this document.
 .
@@ -801,8 +844,8 @@ preprocessors are recognized,
 \[oq]e\[cq]
 (for
 .BR eqn ),
-.\" `G',
-.\" `g',
+.\" \[oq]G\[cq],
+.\" \[oq]g\[cq],
 \[oq]p\[cq]
 (for
 .BR pic ),
@@ -836,9 +879,9 @@ man\~pages only the following characters should be used:
 .
 .
 ..
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "WRITING MACROS"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 A
 .BR roff (@MAN7EXT@)
@@ -880,9 +923,9 @@ see
 .BR groff (@MAN7EXT@).
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Copy-in Mode"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The phase when groff reads a macro is called
 .I "copy-in mode"
@@ -946,7 +989,7 @@ arg1 arg2
 .
 .
 .P
-Let\[aq]s analyze each backslash in the macro definition.
+Let's analyze each backslash in the macro definition.
 .
 As the positional parameters and the number of arguments change
 with each call of the macro their leading backslash must be doubled,
@@ -975,9 +1018,9 @@ and
 .RI \[rs] f[] .
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Draft Mode"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 Writing groff macros is easy when the escaping mechanism is temporarily
 disabled.
@@ -1025,9 +1068,9 @@ do the backslash doubling as a final step; do not forget to remove the
 request.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Tips for Macro Definitions"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .IP \(bu
 Start every line with a dot, for example, by using the groff request
@@ -1069,13 +1112,13 @@ almost-empty lines (this is, lines which have a leading dot
 and nothing else) for a better structuring.
 .
 .IP \(bu
-To increase readability, use groff\[aq]s indentation facility for
+To increase readability, use groff's indentation facility for
 requests and macro calls (arbitrary whitespace after the leading dot).
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Diversions"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 Diversions can be used to implement quite advanced programming
 constructs.
@@ -1093,8 +1136,8 @@ calling the diversion just like a macro.
 .
 .
 .P
-Most of the problems arising with diversions can be avoided if you remain
-aware of the fact that diversions always store complete lines.
+Most of the problems arising with diversions can be avoided if you
+remain aware of the fact that diversions always store complete lines.
 .
 If diversions are used when the line buffer has not been flushed,
 strange results are produced; not knowing this, many people get
@@ -1129,15 +1172,15 @@ Then everything between each call of this macro pair is stored within
 the diversion and can be manipulated from within the macros.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH FILES
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
-All macro names must be named
-.IB name .tmac
+All macro package files must be named
+.RI name .tmac
 to fully use the tmac mechanism.
 .
-.BI tmac. name
+.IR tmac. name
 as with classical packages is possible as well, but deprecated.
 .
 .
@@ -1152,19 +1195,19 @@ a colon separated list of these constitutes the
 The search sequence for macro files is (in that order):
 .
 .IP \(bu
-the directories specified with troff/groff\[aq]s
+the directories specified with troff/groff's
 .B \-M
-command line option
+command-line option
 .
 .IP \(bu
 the directories given in the
-.B $GROFF_TMAC_PATH
+.GROFF_TMAC_PATH
 environment variable
 .
 .IP \(bu
 the current directory (only if in unsafe mode, which is enabled by the
 .B \-U
-command line switch)
+command-line switch)
 .
 .IP \(bu
 the home directory
@@ -1174,7 +1217,7 @@ a platform-specific directory, being
 .
 .RS
 .IP
-.B @SYSTEMMACRODIR@
+.I @SYSTEMMACRODIR@
 .RE
 .
 .IP
@@ -1185,7 +1228,7 @@ a site-specific (platform-independent) directory, being
 .
 .RS
 .IP
-.B @LOCALMACRODIR@
+.I @LOCALMACRODIR@
 .RE
 .
 .IP
@@ -1196,33 +1239,47 @@ the main tmac directory, being
 .
 .RS
 .IP
-.B @MACRODIR@
+.I @MACRODIR@
 .RE
 .
 .IP
 in this installation
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH ENVIRONMENT
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .TP
-.B $GROFF_TMAC_PATH
+.GROFF_TMAC_PATH
 A colon separated list of additional tmac directories in which to search
 for macro files.
 .
 See the previous section for a detailed description.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
+.SH AUTHORS
+.\" ====================================================================
+This document was written by
+.MT groff\-bernd.warken\-72@\:web.de
+Bernd Warken
+.ME
+and
+.MT wl@\:gnu.org
+Werner Lemberg
+.ME .
+.\" ====================================================================
 .SH "SEE ALSO"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
-A complete reference for all parts of the groff system is found in the
-groff
-.BR info (1)
-file.
+.IR "Groff: The GNU Implementation of troff" ,
+by Trent A.\& Fisher and Werner Lemberg,
+is the primary
+.I groff
+manual.
+.
+You can browse it interactively with \[lq]info groff\[rq].
 .
 .
 .TP
@@ -1261,11 +1318,16 @@ FHS web site
 .UE .
 .
 .
-.\" --------------------------------------------------------------------
-.SH COPYING
-.\" --------------------------------------------------------------------
-.co
-.\" --------------------------------------------------------------------
-.SH AUTHOR
-.\" --------------------------------------------------------------------
-.au
+.\" Restore compatibility mode (for, e.g., Solaris 10/11).
+.cp \n[groff_tmac_C]
+.
+.
+.\" ====================================================================
+.\" Emacs settings
+.\" ====================================================================
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" fill-column: 72
+.\" End:
+.\" vim: set filetype=groff textwidth=72:
diff --git a/man/man.am b/man/man.am
new file mode 100644 (file)
index 0000000..da7276a
--- /dev/null
@@ -0,0 +1,54 @@
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Last update: 13 Aug 2015
+#
+# This file is part of 'groff'.
+#
+# 'groff' 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.
+#
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+
+man5_MANS += \
+  man/groff_font.5 \
+  man/groff_out.5 \
+  man/groff_tmac.5
+man7_MANS += \
+  man/ditroff.7 \
+  man/groff_char.7 \
+  man/groff_diff.7 \
+  man/groff.7 \
+  man/roff.7
+EXTRA_DIST += \
+  man/groff_font.5.man \
+  man/groff_out.5.man \
+  man/groff_tmac.5.man \
+  man/ditroff.7.man \
+  man/groff_char.7.man \
+  man/groff_diff.7.man \
+  man/groff.7.man \
+  man/roff.7.man
+
+# Case of out-of-source build: we must create the 'man' directory.
+BUILT_SOURCES += man
+man:
+       $(MKDIR_P) $(top_builddir)/man
+
+
+########################################################################
+# Editor settings
+########################################################################
+#
+# Local Variables:
+# mode: makefile-automake
+# fill-column: 72
+# End:
+# vim: set filetype=automake textwidth=72:
similarity index 68%
rename from man/roff.man
rename to man/roff.7.man
index 6ce18e7..deff211 100644 (file)
@@ -1,44 +1,35 @@
 '\" t
-.TH ROFF @MAN7EXT@ "@MDATE@" "Groff Version @VERSION@"
+.TH ROFF @MAN7EXT@ "@MDATE@" "groff @VERSION@"
 .SH NAME
 roff \- concepts and history of roff typesetting
 .
-.\" this is man-page roff.7
-.
-.\" --------------------------------------------------------------------
-.\" Legalese
-.\" --------------------------------------------------------------------
-.
-.de co
-Copyright \[co] 2000-2014      Free Software Foundation, Inc.
-
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the FDL (GNU Free Documentation License) Version
-1.3 or any later version published by the Free Software Foundation.
-with the Invariant Sections being the .au and .co macro definitions,
-with no Front-Cover Texts, and with no Back-Cover Texts.
-
-A copy of the Free Documentation License is included as a file called
-FDL in the main directory of the groff source package.
-
-The license text is also available on-line at the
-.UR http://\:www.gnu.org/\:copyleft/\:fdl.html
-GNU copyleft site
-.UE .
-..
+.\" this is the man page roff.7
 .
-.de au
-This man-page was written by
-.MT groff-bernd.warken-72@web.de
-Bernd Warken
-.ME
-and is maintained by
-.MT wl@gnu.org
-Werner Lemberg
-.ME .
-..
 .
-.\" --------------------------------------------------------------------
+.\" Save and disable compatibility mode (for, e.g., Solaris 10/11).
+.do nr roff_C \n[.C]
+.cp 0
+.
+.
+.\" ====================================================================
+.\" Legal Terms
+.\" ====================================================================
+.\"
+.\" Copyright (C) 2000-2018 Free Software Foundation, Inc.
+.\"
+.\" This file is part of groff, the GNU roff type-setting system.
+.\"
+.\" Permission is granted to copy, distribute and/or modify this
+.\" document under the terms of the GNU Free Documentation License,
+.\" Version 1.3 or any later version published by the Free Software
+.\" Foundation; with no Invariant Sections, with no Front-Cover Texts,
+.\" and with no Back-Cover Texts.
+.\"
+.\" A copy of the Free Documentation License is included as a file
+.\" called FDL in the main directory of the groff source package.
+.
+.
+.\" ====================================================================
 .\" Local macros
 .
 .de Esc
@@ -56,9 +47,9 @@ Werner Lemberg
 .  rm @1
 ..
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH DESCRIPTION
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .I roff
 is the general name for a set of text formatting programs, known under
@@ -87,27 +78,26 @@ system today is the free software implementation \f[CR]GNU\f[]
 .BR groff (@MAN1EXT@).
 .
 .I groff
-implements the look-and-feel and functionality of its ancestors, with many
-extensions.
+implements the look-and-feel and functionality of its ancestors, with
+many extensions.
 .
 .
 .P
 The ancestry of
 .I roff
-is described in section
-.BR HISTORY .
+is described in section \[lq]History\[rq] below.
 .
 In this document, the term
 .I roff
 always refers to the general class of roff programs, not to the
 .B roff
-command provided in early UNIX systems.
+command provided in early Unix systems.
 .
 .
 .P
 In spite of its age,
 .I roff
-is in wide use today, for example, the manual pages on UNIX systems
+is in wide use today, for example, the manual pages on Unix systems
 .RI ( man\~pages ),
 many software books, system documentation, standards, and corporate
 documents are written in roff.
@@ -121,11 +111,12 @@ than some of the commercial systems.
 .
 .P
 .I roff
-is used to format UNIX
+is used to format Unix
 .IR "manual pages" ,
 (or
 .IR "man pages" ),
-the standard documentation system on many UNIX-derived operating systems.
+the standard documentation system on many Unix-derived operating
+systems.
 .
 .
 .P
@@ -142,34 +133,34 @@ a general overview of the formatting language; some tips for editing
 files; and many pointers to further readings.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "HISTORY"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 Document formatting by computer dates back to the 1960s.
 .
 The
 .I roff
-system itself is intimately connected to the Unix operating system, but its
-roots go back to the earlier operating systems CTSS and Multics.
+system itself is intimately connected to the Unix operating system, but
+its roots go back to the earlier operating systems CTSS and Multics.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "The Predecessor RUNOFF"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
-.BR roff \[aq]s
+.BR roff 's
 ancestor
 .B RUNOFF
 was written in the MAD language by
 .I Jerry Saltzer
 for the
 .IR "Compatible Time Sharing System (CTSS)" ,
-a project of the Massachusetts Institute of Technology (MIT), in 1963 and
-1964 \[en] note that CTSS commands were all uppercase.
+a project of the Massachusetts Institute of Technology (MIT), in 1963
+and 1964\[em]note that CTSS commands were all uppercase.
 .
 .P
-In 1965, MIT\[aq]s Project MAC teamed with Bell Telephone Laboratories
+In 1965, MIT's Project MAC teamed with Bell Telephone Laboratories
 (BTL) and General Electric to begin the
 .UR http://\:www.multicians.org
 .I Multics
@@ -187,8 +178,8 @@ and other members of the Multics team.
 .P
 Like its CTSS ancestor, Multics
 .B runoff
-formatted an input file consisting of text and command lines; commands began
-with a period and were two letters.
+formatted an input file consisting of text and command lines; commands
+began with a period and were two letters.
 .
 Output from these commands was to terminal devices such as IBM Selectric
 terminals.
@@ -203,8 +194,8 @@ processing.
 .P
 BCPL and
 .B runoff
-were ported to the GCOS system at Bell Labs when BTL left the development of
-Multics.
+were ported to the GCOS system at Bell Labs when BTL left the
+development of Multics.
 .
 .
 .P
@@ -233,13 +224,14 @@ $git clone https://github.com/bwarken/runoff.git
 .RE
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "The Classical nroff/troff System"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 At BTL, there was a need to drive the
 .I Graphic Systems CAT
-typesetter, a graphical output device from a PDP-11 computer running Unix.
+typesetter, a graphical output device from a PDP-11 computer running
+Unix.
 .
 As
 .B runoff
@@ -255,7 +247,7 @@ The name
 was shortened to
 .IR roff .
 .
-The greatly enlarged language of Ossanna\[aq]s version already
+The greatly enlarged language of Ossanna's version already
 included all elements of a full
 .IR "roff system" .
 .
@@ -299,7 +291,7 @@ system as a whole.
 .
 .
 .P
-Ossanna\[aq]s first version was written in the PDP-11 assembly
+Ossanna's first version was written in the PDP-11 assembly
 language and released in 1973.
 .
 .I Brian Kernighan
@@ -314,7 +306,8 @@ The C\~version was released in 1975.
 The syntax of the formatting language of the
 .BR nroff /\: troff
 programs was documented in the famous
-.IR "Troff User\[aq]s Manual [CSTR\~#54]" ,
+.I "Troff User's Manual"
+[CSTR\~#54],
 first published in 1976, with further revisions up to 1992 by Brian
 Kernighan.
 .
@@ -327,7 +320,7 @@ systems tried to establish compatibility with this specification.
 .
 .
 .P
-After Ossanna\[aq]s death in 1977, Kernighan went on with developing
+After Ossanna's death in 1977, Kernighan went on with developing
 .IR troff .
 .
 In the late 1970s, Kernighan equipped
@@ -337,11 +330,11 @@ output format, and the postprocessor system.
 .
 This completed the structure of a
 .I "roff system"
-as it is still in use today; see section
-.BR "USING ROFF" .
+as it is still in use today;
+see section \[lq]Using Roff\[rq] below.
 .
 In 1979, these novelties were described in the paper
-.IR "[CSTR\~#97]" .
+[CSTR\~#97].
 .
 This new
 .I troff
@@ -360,22 +353,23 @@ programs already provide the full
 capabilities automatically.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Availability"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The source code of both the ancient Unix and classical
 .I troff
-weren\[aq]t available for two decades.
+weren't available for two decades.
 .
-Meanwhile, it is accessible again (on-line) for non-commercial use,
-cf.\& section
-.BR "SEE ALSO" .
+Nowadays, it is accessible again (on-line) for non-commercial use;
+see
+.BR "SEE ALSO" ,
+below.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "groff \[em] free GNU roff"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The most important free
 .I roff
@@ -414,58 +408,52 @@ is free.
 .
 This makes
 .I groff
-the de-facto
+the de facto
 .I roff
 standard today.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Free Heirloom roff"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 An alternative is
-.UR https://\:github.com/\:n-t-roff/\:heirloom-doctools
-.I Gunnar Ritter\[aq]s Heirloom roff project
+.UR https://\:github.com/\:n\-t\-roff/\:heirloom\-doctools
+.I Gunnar Ritter's Heirloom roff project
 .UE
-project, started in 2005, which provides enhanced versions of the various
-roff tools found in the OpenSolaris and Plan\~9 operating systems, now
-available under free licenses.
+project, started in 2005, which provides enhanced versions of the
+various roff tools found in the OpenSolaris and Plan\~9 operating
+systems, now available under free licenses.
 .
 You can get this package with the shell command:
 .RS
 .EX
-\[Do] git clone https://github.com/n-t-roff/heirloom-doctools
+\[Do] git clone https://github.com/n\-t\-roff/heirloom\-doctools
 .EE
 .RE
 .
 .
 .P
 Moreover, one finds there the
-.UR https://github.com/n-t-roff/DWB3.3
-.I Original Documenter\[aq]s Workbench Release 3.3
+.UR https://\:github.com/\:n\-t\-roff/\:DWB3.3
+.I Original Documenter's Workbench Release 3.3
 .UE .
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "USING ROFF"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
-Most people won\[aq]t even notice that they are actually using
+Most people won't even notice that they are actually using
 .IR roff .
 .
 When you read a system manual page (man page)
 .I roff
 is working in the background.
 .
-.I roff
-documents can be viewed with a native viewer called
-.BR \%xditview (1x),
-a standard program of the X window distribution, see
-.BR X (7x).
-.
 But using
 .I roff
-explicitly isn\[aq]t difficult either.
+explicitly isn't difficult either.
 .
 .
 .P
@@ -479,7 +467,7 @@ For example, the \f[CR]GNU\f[]
 .I roff
 implementation
 .BR groff (@MAN1EXT@)
-provides command line options to avoid the long command pipes of
+provides command-line options to avoid the long command pipes of
 classical
 .IR troff ;
 a program
@@ -487,16 +475,16 @@ a program
 tries to guess from the document which arguments should be used for a
 run of
 .BR groff ;
-people who do not like specifying command line options should try the
+people who do not like specifying command-line options should try the
 .BR groffer (@MAN1EXT@)
 program for graphically displaying
 .I groff
 files and man pages.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "The roff Pipe"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 Each
 .I roff
@@ -559,9 +547,9 @@ macro packages need to know about the gory details.
 .
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Preprocessors"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 A
 .I roff
@@ -596,7 +584,7 @@ There are a lot of free and commercial
 .I roff
 preprocessors.
 .
-Some of them aren\[aq]t available on each system, but there is a small
+Some of them aren't available on each system, but there is a small
 set of preprocessors that are considered as an integral part of each
 .I roff
 system.
@@ -631,9 +619,9 @@ grn@for including \fBgremlin\fR(1) pictures.
 .RE
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Formatter Programs"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 A
 .I roff formatter
@@ -661,7 +649,7 @@ or
 .IR "troff output" .
 .
 This language was first specified in
-.IR "[CSTR\~#97]" ;
+[CSTR\~#97];
 its \f[CR]GNU\f[] extension is documented in
 .BR groff_out (@MAN5EXT@).
 .
@@ -696,9 +684,9 @@ Often, the name
 is used as a general term to refer to both formatters.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Devices and Postprocessors"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 Devices are hardware interfaces like printers, text or graphical
 terminals, etc., or software interfaces such as a conversion into a
@@ -731,34 +719,34 @@ because they greatly depend on the software and hardware abilities of
 the actual computer.
 .
 For example, the classical devices mentioned in
-.I [CSTR\~#54]
+[CSTR\~#54]
 have greatly changed since the classical times.
 .
-The old hardware doesn\[aq]t exist any longer and the old graphical
+The old hardware doesn't exist any longer and the old graphical
 conversions were quite imprecise when compared to their modern
 counterparts.
 .
 .
 .P
-For example, the Postscript device
+For example, the PostScript device
 .I post
 in classical
 .I troff
 had a resolution of 720 units per inch, while
-.IR groff \[aq]s
+.IR groff 's
 .I ps
 device has 72000, a refinement of factor 100.
 .
 .
 .P
 Today the operating systems provide device drivers for most
-printer-like hardware, so it isn\[aq]t necessary to write a special
+printer-like hardware, so it isn't necessary to write a special
 hardware postprocessor for each printer.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "ROFF PROGRAMMING"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 Documents using
 .I roff
@@ -783,9 +771,9 @@ internals of the
 language.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Macro Packages"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 Macro packages are collections of macros that are suitable to format a
 special kind of documents in a convenient way.
@@ -796,7 +784,7 @@ This greatly eases the usage of
 The macro definitions of a package are kept in a file called
 .IB name .tmac
 (classically
-.BI tmac. name\c
+.BI tmac. name\/\c\" Italic correction comes before \c !
 ).
 .
 All tmac files are stored in one or more directories at standardized
@@ -809,7 +797,7 @@ in
 .
 .P
 A macro package that is to be used in a document can be announced to
-the formatter by the command line option
+the formatter by the command-line option
 .BR \-m ,
 see
 .BR troff (@MAN1EXT@),
@@ -840,15 +828,15 @@ and
 .IR "Memorandum Macros\/" ).
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "The roff Formatting Language"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The classical
 .I roff
 formatting language is documented in the
-.I Troff User\[aq]s Manual
-.IR "[CSTR\~#54]" .
+.I Troff User's Manual
+[CSTR\~#54].
 .
 The
 .I roff
@@ -917,9 +905,9 @@ and its value can be retrieved by the escape sequence
 .BR "\[rs]n" .
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "FILE NAME EXTENSIONS"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 Manual pages (man pages) take the section number as a file name
 extension, e.g., the filename for this document is
@@ -929,7 +917,8 @@ of the man pages.
 .
 .
 .P
-The classical macro packages take the package name as an extension, e.g.\&
+The classical macro packages take the package name as an extension,
+e.g.\&
 .IB file. me
 for a document using the
 .I me
@@ -990,16 +979,88 @@ is either a system supplied command or a shell script of your own.
 More details for
 .I file name extensions
 can be found at
-.BR groff_filenames (7).
+.BR groff_filenames (5).
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "EDITING ROFF"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
+.
+All
+.I roff
+formatters provide automated line breaks and horizontal and vertical
+spacing.
+.
+In order to not disturb this, the following tips can be helpful.
+.
+.IP \(bu
+Never include empty or blank lines in a
+.I roff
+document.
+.
+Instead, use the empty request (a line consisting of a dot only) or a
+line comment
+.B .\[rs]"\""
+if a structuring element is needed.
+.
+.IP \(bu
+Never start a line with whitespace because this can lead to unexpected
+behavior.
+.
+Indented paragraphs can be constructed in a controlled way by
+.I roff
+requests.
+.
+.IP \(bu
+Start each sentence on a line of its own, for the spacing after a dot
+is handled differently depending on whether it terminates an
+abbreviation or a sentence.
+.
+To distinguish both cases, do a line break after each sentence.
+.
+.IP \(bu
+To additionally use the auto-fill mode in Emacs, it is best to insert
+an empty
+.I roff
+request (a line consisting of a dot only) after each sentence.
+.
+.
+.P
+The following example shows judicious line breaking in a
+.I roff
+input file.
+.
+.RS
+.P
+.EX
+.\" Keep the text width to 65 columns or fewer in this example so that
+.\" it doesn't overrun the right margin when set in Courier (-Tps,
+.\" -Tpdf).
+This is an example of a
+\&.I roff
+document that you can type into your text editor.
+\&.
+.
+This is the next sentence in the same paragraph.
+\&.
+.
+This is a longer sentence stretching over several input lines;
+abbreviations like cf.\& are easily identified because the dot is
+not followed by a line break.
+\&.
+.
+In the output, this sentence continues the same paragraph.
+.EE
+.RE
+.
+.
+.\" ====================================================================
+.SS "Editing with Emacs"
+.\" ====================================================================
 .
 The best program for editing a
 .I roff
-document is Emacs (or Xemacs), see
+document is Emacs (or XEmacs); see
 .BR emacs (1).
 .
 It provides an
@@ -1013,14 +1074,14 @@ This mode can be activated by the following methods.
 .
 .P
 When editing a file within Emacs the mode can be changed by typing
-.RI \[oq] "M-x nroff-mode" \[cq],
+.RI \[oq] "M-x nroff\-mode" \[cq],
 where
 .B M-x
 means to hold down the
 .B Meta
 key (or
 .BR Alt )
-and hitting the
+and press the
 .BR x\~ key
 at the same time.
 .
@@ -1036,9 +1097,9 @@ the end of the file.
 .RS
 .IP
 .EX
-\&.\[rs]" Local Variables:\""
-\&.\[rs]" mode: nroff\""
-\&.\[rs]" End:\""
+\&.\[rs]" Local Variables:
+\&.\[rs]" mode: nroff
+\&.\[rs]" End:
 .EE
 .RE
 .
@@ -1054,7 +1115,7 @@ Theoretically, it is possible to write the sequence
 .RS
 .IP
 .EX
-\&.\[rs]" \%-*-\ nroff\ -*-\""
+\&.\[rs]" \%\-*\-\ nroff\ \-*\-\""
 .EE
 .RE
 .
@@ -1068,79 +1129,72 @@ Unfortunately, some applications such as the
 program are confused by this; so this is deprecated.
 .
 .
-.P
-All
-.I roff
-formatters provide automated line breaks and horizontal and vertical
-spacing.
+.\" ====================================================================
+.SS "Editing with Vim"
+.\" ====================================================================
 .
-In order to not disturb this, the following tips can be helpful.
+.\" TODO: elvis, vile.  Nvi does not support highlighting at all, and
+.\" gedit does but has no rules for roff yet.  Other editors TBD.
+Besides Emacs, some other editors provide
+.I nroff
+style files too, e.g.\&
+.BR vim (1),
+an extension of the
+.BR vi (1)
+program.
 .
-.IP \(bu
-Never include empty or blank lines in a
+Vim's highlighting can be made to recognize
 .I roff
-document.
+files by setting the
+.I filetype
+option in a Vim
+.IR modeline .
 .
-Instead, use the empty request (a line consisting of a dot only) or a
-line comment
-.B .\[rs]"\""
-if a structuring element is needed.
-.
-.IP \(bu
-Never start a line with whitespace because this can lead to unexpected
-behavior.
+For this feature to work, your copy of
+.B vim
+must be built with support for, and configured to enable, several
+features; consult the editor's online help topics
+\[lq]auto\-setting\[rq], \[lq]filetype\[rq], and \[lq]syntax\[rq].
 .
-Indented paragraphs can be constructed in a controlled way by
+Then put the following at the end of your
 .I roff
-requests.
-.
-.IP \(bu
-Start each sentence on a line of its own, for the spacing after a dot
-is handled differently depending on whether it terminates an
-abbreviation or a sentence.
-.
-To distinguish both cases, do a line break after each sentence.
-.
-.IP \(bu
-To additionally use the auto-fill mode in Emacs, it is best to insert
-an empty
-.I roff
-request (a line consisting of a dot only) after each sentence.
-.
+files, after any Emacs configuration:
+.\" ...because Emacs pattern-matches against ~3000 bytes from the end of
+.\" the buffer for "Local variables:", but Vim only checks as many lines
+.\" as its 'modelines' variable tells it to.  A common default is "5",
+.\" but Emacs settings can be longer than that.
 .
 .P
-The following example shows how optimal
-.I roff
-editing could look.
 .
 .RS
-.P
+.IP
 .EX
-This is an example for a \&.I roff document.  \&.
-.
-This is the next sentence in the same paragraph.  \&.
-.
-This is a longer sentence stretching over several lines; abbreviations
-like \[oq]cf.\[cq] are easily identified because the dot is not
-followed by a line break.  \&.  In the output, this will still go to
-the same paragraph.
+\&.\[rs]" vim: set filetype=groff:
 .EE
 .RE
 .
 .
 .P
-Besides Emacs, some other editors provide
-.I nroff
-style files too, e.g.\&
-.BR vim (1),
-an extension of the
-.BR vi (1)
-program.
+Replace \[lq]groff\[rq] in the above with \[lq]nroff\[rq] if you want
+highlighing that does
+.I not
+recognize many of the \f[CR]GNU\f[] extensions to
+.IR roff ,
+such as request, register, and string names longer than two characters.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
+.SH AUTHORS
+.\" ====================================================================
+This document was written by
+.MT groff\-bernd.warken\-72@\:web.de
+Bernd Warken
+.ME .
+.
+.
+.\" ====================================================================
 .SH "SEE ALSO"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 There is a lot of documentation on
 .IR roff .
@@ -1152,16 +1206,26 @@ are still available, and all aspects of
 are documented in great detail.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Internet sites"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
+.
+.TP
+History of Unix Manpages
+.UR http://\:manpages.bsd.lv/\:history.html
+The history page
+.UE
+of the mdocml project provides an overview of
+.I roff
+development up to date, with links to original documentation
+and comments of the original authors.
 .
 .TP
 troff.org
 .UR http://\:www.troff.org
 The historical troff site
 .UE
-provides an overview and pointers to all historical aspects of
+provides an overview and pointers to the historical aspects of
 .IR roff .
 .
 .TP
@@ -1186,13 +1250,13 @@ provides the source code and some binaries of the ancient Unixes
 .I troff
 and its documentation) that were made public by Caldera since 2001,
 e.g.\& of the famous Unix version\~7 for PDP-11 at the
-.UR http://\:www.tuhs.org/\:Archive/\:PDP-11/\:Trees/\:V7
+.UR http://\:www.tuhs.org/\:Archive/\:PDP\-11/\:Trees/\:V7
 Unix V7 site
 .UE .
 .
 .TP
 Developers at AT&T Bell Labs
-.UR http://\:www.bell-labs.com/
+.UR http://\:www.bell\-labs.com/
 Bell Labs Computing and Mathematical Sciences Research
 .UE
 .
@@ -1201,7 +1265,7 @@ developers.
 .
 .TP
 Plan 9
-.UR http://\:plan9.bell-labs.com
+.UR http://\:plan9.bell\-labs.com
 The Plan\~9 operating system
 .UE
 .
@@ -1210,15 +1274,15 @@ by AT&T Bell Labs.
 .TP
 runoff
 .UR http://\:web.mit.edu/\:Saltzer/\:www/\:publications/\:pubs.html
-Jerry Saltzer\[aq]s home page
+Jerry Saltzer's home page
 .UE
 .
 stores some documents using the ancient RUNOFF formatting language.
 .
 .TP
 CSTR Papers
-.UR http://\:cm.bell-labs.com/\:cm/\:cs/\:cstr.html
-The Bell Labs CSTR site
+.UR https://\:www.alcatel\-lucent.com/\:bell\-labs\-journals
+The Bell Labs (now Alcatel) CSTR site
 .UE
 .
 stores the original
@@ -1239,9 +1303,9 @@ the actual standard
 .IR roff .
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Historical roff Documentation"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 Many classical
 .B troff
@@ -1254,8 +1318,8 @@ language are
 .TP
 [CSTR\~#54]
 J.\& F.\& Ossanna,
-.UR http://\:cm.bell-labs.com/\:cm/\:cs/\:cstr/\:54.ps.gz
-.I "Nroff/\:Troff User\[aq]s Manual"
+.UR http://\:www.troff.org/\:54.pdf
+.I "Nroff/\:Troff User's Manual"
 .UE ;
 .
 Bell Labs, 1976; revised by Brian Kernighan, 1992.
@@ -1263,7 +1327,7 @@ Bell Labs, 1976; revised by Brian Kernighan, 1992.
 .TP
 [CSTR\~#97]
 Brian Kernighan,
-.UR http://\:cm.bell-labs.com/\:cm/\:cs/\:cstr/\:97.ps.gz
+.UR http://\:cm.bell\-labs.com/\:cm/\:cs/\:cstr/\:97.ps.gz
 .I "A Typesetter-independent TROFF"
 .UE ,
 .
@@ -1277,7 +1341,7 @@ papers are
 .TP
 [CSTR\~#114]
 Jon L.\& Bentley and Brian W.\& Kernighan,
-.UR http://\:cm.bell-labs.com/\:cm/\:cs/\:cstr/\:114.ps.gz
+.UR http://\:cm.bell\-labs.com/\:cm/\:cs/\:cstr/\:114.ps.gz
 .I "GRAP \[en] A Language for Typesetting Graphs"
 .UE ;
 .
@@ -1286,7 +1350,7 @@ Bell Labs, August 1984.
 .TP
 [CSTR\~#116]
 Brian W.\& Kernighan,
-.UR http://\:cm.bell-labs.com/\:cm/\:cs/\:cstr/\:116.ps.gz
+.UR http://\:cm.bell\-labs.com/\:cm/\:cs/\:cstr/\:116.ps.gz
 .I "PIC \[en] A Graphics Language for Typesetting"
 .UE ;
 .
@@ -1295,7 +1359,7 @@ Bell Labs, December 1984.
 .TP
 [CSTR\~#122]
 J.\& L.\& Bentley, L.\& W.\& Jelinski, and B.\& W.\& Kernighan,
-.UR http://\:cm.bell-labs.com/\:cm/\:cs/\:cstr/\:122.ps.gz
+.UR http://\:cm.bell\-labs.com/\:cm/\:cs/\:cstr/\:122.ps.gz
 .I "CHEM \[en] A Program for Typesetting Chemical Structure Diagrams,"
 .I "Computers and Chemistry"
 .UE ;
@@ -1319,9 +1383,9 @@ $ git clone https://github.com/bwarken/roff_classical.git
 .RE
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Manual Pages"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 Due to its complex structure, a full
 .I roff
@@ -1349,20 +1413,16 @@ On other systems, you are on your own, but
 might be a good starting point.
 .
 .
-.\" --------------------------------------------------------------------
-.SH COPYING
-.\" --------------------------------------------------------------------
-.co
-.\" --------------------------------------------------------------------
-.SH AUTHORS
-.\" --------------------------------------------------------------------
-.au
+.\" Restore compatibility mode (for, e.g., Solaris 10/11).
+.cp \n[roff_C]
 .
 .
-.\" --------------------------------------------------------------------
-.\" Emacs setup
-.\" --------------------------------------------------------------------
+.\" ====================================================================
+.\" Editor settings
+.\" ====================================================================
 .
 .\" Local Variables:
 .\" mode: nroff
+.\" fill-column: 72
 .\" End:
+.\" vim: set filetype=groff textwidth=72:
diff --git a/mdate.pl b/mdate.pl
new file mode 100755 (executable)
index 0000000..fd6e5b5
--- /dev/null
+++ b/mdate.pl
@@ -0,0 +1,32 @@
+#! /usr/bin/env perl
+#
+# Copyright (C) 1991-2018 Free Software Foundation, Inc.
+# 
+# This file is part of groff.
+# 
+# groff 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.
+# 
+# groff 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 <http://www.gnu.org/licenses/>.
+#
+# Print the modification date of $1 `nicely'.
+
+use warnings;
+use strict;
+use POSIX qw(LC_ALL setlocale strftime);
+
+# Don't want localized dates.
+setlocale(LC_ALL, "C");
+
+my @mtime = gmtime($ENV{SOURCE_DATE_EPOCH} || (stat $ARGV[0])[9]);
+my $mdate = strftime("%e %B %Y", @mtime);
+$mdate =~ s/^ //;
+print "$mdate\n";
diff --git a/mdate.sh b/mdate.sh
deleted file mode 100644 (file)
index 2c24a00..0000000
--- a/mdate.sh
+++ /dev/null
@@ -1,59 +0,0 @@
-#! /bin/sh
-#
-# Copyright (C) 1991-2014 Free Software Foundation, Inc.
-# 
-# This file is part of groff.
-# 
-# groff 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.
-# 
-# groff 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 <http://www.gnu.org/licenses/>.
-#
-# Print the modification date of $1 `nicely'.
-
-# Don't want foreign dates.
-
-LANGUAGE=
-LC_ALL=C; export LC_ALL
-
-
-(date;
-if ls -L /dev/null 1>/dev/null 2>&1; then ls -L -l $1; else ls -l $1; fi
-) | awk '
-BEGIN {
-       full["Jan"] = "January"; number["Jan"] = 1;
-       full["Feb"] = "February"; number["Feb"] = 2;
-       full["Mar"] = "March"; number["Mar"] = 3;
-       full["Apr"] = "April"; number["Apr"] = 4;
-       full["May"] = "May"; number["May"] = 5;
-       full["Jun"] = "June"; number["Jun"] = 6;
-       full["Jul"] = "July"; number["Jul"] = 7;
-       full["Aug"] = "August"; number["Aug"] = 8;
-       full["Sep"] = "September"; number["Sep"] = 9;
-       full["Oct"] = "October"; number["Oct"] = 10;
-       full["Nov"] = "November"; number["Nov"] = 11;
-       full["Dec"] = "December"; number["Dec"] = 12;
-}
-
-NR == 1 {
-       month = $2;
-       year = $NF;
-}
-
-NR == 2 {
-       if ($(NF-1) ~ /:/) {
-               if (number[$(NF-3)] > number[month])
-                       year--;
-       }
-       else
-               year = $(NF-1);
-       print $(NF-2), full[$(NF-3)], year
-}'
diff --git a/mkinstalldirs b/mkinstalldirs
deleted file mode 100755 (executable)
index 55d537f..0000000
+++ /dev/null
@@ -1,162 +0,0 @@
-#! /bin/sh
-# mkinstalldirs --- make directory hierarchy
-
-scriptversion=2009-04-28.21; # UTC
-
-# Original author: Noah Friedman <friedman@prep.ai.mit.edu>
-# Created: 1993-05-16
-# Public domain.
-#
-# This file is maintained in Automake, please report
-# bugs to <bug-automake@gnu.org> or send patches to
-# <automake-patches@gnu.org>.
-
-nl='
-'
-IFS=" ""       $nl"
-errstatus=0
-dirmode=
-
-usage="\
-Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ...
-
-Create each directory DIR (with mode MODE, if specified), including all
-leading file name components.
-
-Report bugs to <bug-automake@gnu.org>."
-
-# process command line arguments
-while test $# -gt 0 ; do
-  case $1 in
-    -h | --help | --h*)         # -h for help
-      echo "$usage"
-      exit $?
-      ;;
-    -m)                         # -m PERM arg
-      shift
-      test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
-      dirmode=$1
-      shift
-      ;;
-    --version)
-      echo "$0 $scriptversion"
-      exit $?
-      ;;
-    --)                         # stop option processing
-      shift
-      break
-      ;;
-    -*)                         # unknown option
-      echo "$usage" 1>&2
-      exit 1
-      ;;
-    *)                          # first non-opt arg
-      break
-      ;;
-  esac
-done
-
-for file
-do
-  if test -d "$file"; then
-    shift
-  else
-    break
-  fi
-done
-
-case $# in
-  0) exit 0 ;;
-esac
-
-# Solaris 8's mkdir -p isn't thread-safe.  If you mkdir -p a/b and
-# mkdir -p a/c at the same time, both will detect that a is missing,
-# one will create a, then the other will try to create a and die with
-# a "File exists" error.  This is a problem when calling mkinstalldirs
-# from a parallel make.  We use --version in the probe to restrict
-# ourselves to GNU mkdir, which is thread-safe.
-case $dirmode in
-  '')
-    if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
-      echo "mkdir -p -- $*"
-      exec mkdir -p -- "$@"
-    else
-      # On NextStep and OpenStep, the 'mkdir' command does not
-      # recognize any option.  It will interpret all options as
-      # directories to create, and then abort because '.' already
-      # exists.
-      test -d ./-p && rmdir ./-p
-      test -d ./--version && rmdir ./--version
-    fi
-    ;;
-  *)
-    if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 &&
-       test ! -d ./--version; then
-      echo "mkdir -m $dirmode -p -- $*"
-      exec mkdir -m "$dirmode" -p -- "$@"
-    else
-      # Clean up after NextStep and OpenStep mkdir.
-      for d in ./-m ./-p ./--version "./$dirmode";
-      do
-        test -d $d && rmdir $d
-      done
-    fi
-    ;;
-esac
-
-for file
-do
-  case $file in
-    /*) pathcomp=/ ;;
-    *)  pathcomp= ;;
-  esac
-  oIFS=$IFS
-  IFS=/
-  set fnord $file
-  shift
-  IFS=$oIFS
-
-  for d
-  do
-    test "x$d" = x && continue
-
-    pathcomp=$pathcomp$d
-    case $pathcomp in
-      -*) pathcomp=./$pathcomp ;;
-    esac
-
-    if test ! -d "$pathcomp"; then
-      echo "mkdir $pathcomp"
-
-      mkdir "$pathcomp" || lasterr=$?
-
-      if test ! -d "$pathcomp"; then
-       errstatus=$lasterr
-      else
-       if test ! -z "$dirmode"; then
-         echo "chmod $dirmode $pathcomp"
-         lasterr=
-         chmod "$dirmode" "$pathcomp" || lasterr=$?
-
-         if test ! -z "$lasterr"; then
-           errstatus=$lasterr
-         fi
-       fi
-      fi
-    fi
-
-    pathcomp=$pathcomp/
-  done
-done
-
-exit $errstatus
-
-# Local Variables:
-# mode: shell-script
-# sh-indentation: 2
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC"
-# time-stamp-end: "; # UTC"
-# End:
diff --git a/src/devices/grodvi/Makefile.sub b/src/devices/grodvi/Makefile.sub
deleted file mode 100644 (file)
index 35b0f3a..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-# Makefile.sub for `grodvi'
-#
-# File position: <groff-source>/src/devices/grodvi/Makefile.sub
-#
-# Copyright (C) 2014
-#   Free Software Foundation, Inc.
-#
-# Last update: 2 Sep 2014
-#
-# This file is part of `font utf8' which is part of `groff'.
-#
-# `groff' is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 2 of the License, or
-# (at your option) any later version.
-#
-# `groff' 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
-# <http://www.gnu.org/licenses/gpl-2.0.html>.
-#
-########################################################################
-
-PROG=grodvi$(EXEEXT)
-MAN1=grodvi.n
-XLIBS=$(LIBDRIVER) $(LIBGROFF) $(LIBGNU)
-MLIB=$(LIBM)
-OBJS=dvi.$(OBJEXT)
-CCSRCS=$(srcdir)/dvi.cpp
-
-########################################################################
-# Emacs settings
-########################################################################
-#
-# Local Variables:
-# mode: makefile
-# End:
index 6bcc64f..ed05056 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include "driver.h"
 #include "nonposix.h"
@@ -85,7 +85,7 @@ void dvi_font::handle_unknown_font_command(const char *command,
   if (strcmp(command, "checksum") == 0) {
     if (arg == 0)
       fatal_with_file_and_line(filename, lineno,
-                              "`checksum' command requires an argument");
+                              "'checksum' command requires an argument");
     checksum = int(strtol(arg, &ptr, 10));
     if (checksum == 0 && ptr == arg) {
       fatal_with_file_and_line(filename, lineno, "bad checksum");
@@ -94,7 +94,7 @@ void dvi_font::handle_unknown_font_command(const char *command,
   else if (strcmp(command, "designsize") == 0) {
     if (arg == 0)
       fatal_with_file_and_line(filename, lineno,
-                              "`designsize' command requires an argument");
+                              "'designsize' command requires an argument");
     design_size = int(strtol(arg, &ptr, 10));
     if (design_size == 0 && ptr == arg) {
       fatal_with_file_and_line(filename, lineno, "bad design size");
@@ -885,7 +885,7 @@ void draw_dvi_printer::draw(int code, int *p, int np, const environment *env)
       break;
     }
   default:
-    error("unrecognised drawing command `%1'", char(code));
+    error("unrecognised drawing command '%1'", char(code));
     break;
   }
 }
@@ -935,7 +935,7 @@ int main(int argc, char **argv)
     case 'p':
       if (!font::scan_papersize(optarg, 0,
                                &user_paper_length, &user_paper_width))
-       error("invalid custom paper size `%1' ignored", optarg);
+       error("invalid custom paper size '%1' ignored", optarg);
       break;
     case 'v':
       {
similarity index 61%
rename from src/devices/grodvi/grodvi.man
rename to src/devices/grodvi/grodvi.1.man
index 1ff44e9..843a1f9 100644 (file)
@@ -1,83 +1,75 @@
-.\" -*- nroff -*-
-.TH GRODVI @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
+.TH GRODVI @MAN1EXT@ "@MDATE@" "groff @VERSION@"
 .SH NAME
-grodvi \- convert groff output to TeX dvi format
-.
-.\" copying (license)
-.de co
-Copyright \[co] 1989-2014 Free Software Foundation, Inc.
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the
-entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
-Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be included in
-translations approved by the Free Software Foundation instead of in
-the original English.
-..
-.
+grodvi \- convert groff output to TeX DVI format
+.
+.
+.\" ====================================================================
+.\" Legal Terms
+.\" ====================================================================
+.\"
+.\" Copyright (C) 1989-2018 Free Software Foundation, Inc.
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of
+.\" this manual under the conditions for verbatim copying, provided that
+.\" the entire resulting derived work is distributed under the terms of
+.\" a permission notice identical to this one.
+.\"
+.\" Permission is granted to copy and distribute translations of this
+.\" manual into another language, under the above conditions for
+.\" modified versions, except that this permission notice may be
+.\" included in translations approved by the Free Software Foundation
+.\" instead of in the original English.
+.
+.
+.\" Save and disable compatibility mode (for, e.g., Solaris 10/11).
 .do nr grodvi_C \n[.C]
 .cp 0
 .
+.
 .ie t .ds tx T\h'-.1667m'\v'.224m'E\v'-.224m'\h'-.125m'X
 .el .ds tx TeX
 .
-.\" Like TP, but if specified indent is more than half
-.\" the current line-length - indent, use the default indent.
-.de Tp
-.  ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP
-.  el .TP "\\$1"
-..
-.
-.de TQ
-.  br
-.  ns
-.  TP \$1
-..
-.
 .de FT
 .  if '\\*(.T'dvi' .ft \\$1
 ..
 .
-.ad l
-.
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH SYNOPSIS
-.\" --------------------------------------------------------------------
-.
-.B grodvi
-[
-.B \-dlv
-] [
-.BI \-F dir
-] [
-.BI \-p papersize
-] [
-.BI \-w n
-] [
-.IR files \|.\|.\|.\&
-]
-.PP
-It is possible to have whitespace between a command line option and its
-parameter.
+.\" ====================================================================
+.
+.SY grodvi
+.OP \-dl
+.OP \-F dir
+.OP \-p papersize
+.OP \-w n
+.RI [ file
+\&.\|.\|.\&]
+.YS
+.
+.SY grodvi
+.B \-\-help
+.YS
+.
+.SY grodvi
+.B \-v
+.SY grodvi
+.B \-\-version
+.YS
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH DESCRIPTION
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .B grodvi
 is a driver for
 .B groff
-that produces \*(tx dvi format.
+that produces \*(tx DVI format.
 .
 Normally it should be run by
 .BR groff\ \-Tdvi .
@@ -85,12 +77,12 @@ Normally it should be run by
 This will run
 .BR @g@troff\ \-Tdvi ;
 it will also input the macros in
-.BR @MACRODIR@/dvi.tmac .
+.IR @MACRODIR@/\:dvi.tmac .
 .
 .LP
-The dvi file generated by
+The DVI file generated by
 .B grodvi
-can be printed by any correctly-written dvi driver.
+can be printed by any correctly-written DVI driver.
 .
 The troff drawing primitives are implemented
 using the tpic version\~2 specials.
@@ -111,7 +103,7 @@ at the current position
 .
 Afterwards the current position will be at the opposite corner.
 .
-This produces a rule in the dvi file and so can be printed even with a
+This produces a rule in the DVI file and so can be printed even with a
 driver that does not support the tpic specials unlike the other
 .B \[rs]D
 commands.
@@ -119,7 +111,7 @@ commands.
 .LP
 The groff command
 .BI \[rs]X' anything '
-is translated into the same command in the dvi file as would be
+is translated into the same command in the DVI file as would be
 produced by
 .BI \[rs]special{ anything }
 in \*(tx;
@@ -130,7 +122,7 @@ may not contain a newline.
 For inclusion of EPS image files,
 .B \-Tdvi
 loads
-.B pspic.tmac
+.I pspic.tmac
 automatically, providing the
 .B PSPIC
 macro.
@@ -148,10 +140,10 @@ can be created from tfm files using
 The font description file should contain the following
 additional commands:
 .
-.Tp \w'\fBinternalname'u+2n
+.TP
 .BI internalname\   name
 The name of the tfm file (without the
-.B .tfm
+.I .tfm
 extension) is
 .IR name .
 .
@@ -190,12 +182,12 @@ in the corresponding tfm file;
 all characters in the tfm file can be accessed this way.
 .
 .LP
-By design, the DVI format doesn\[aq]t care about physical dimensions of the
+By design, the DVI format doesn't care about physical dimensions of the
 output medium.
 .
 Instead,
 .B grodvi
-emits the equivalent to \*[tx]\[aq]s
+emits the equivalent to \*[tx]'s
 .BI \[rs]special{papersize= width , length }
 on the first page;
 .B dvips
@@ -205,9 +197,12 @@ If either the page width or length is not positive, no papersize special
 is output.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH OPTIONS
-.\" --------------------------------------------------------------------
+.\" ====================================================================
+.
+Whitespace is permitted between a command-line option and its argument.
+.
 .
 .TP
 .B \-d
@@ -220,7 +215,7 @@ Other drawing commands will be ignored.
 .TP
 .BI \-F dir
 Prepend directory
-.IB dir /dev name
+.RI dir /dev name
 to the search path for font and device description files;
 .I name
 is the name of the device, usually
@@ -240,7 +235,7 @@ This overrides the
 and
 .B paperwidth
 commands in the
-.B DESC
+.I DESC
 file; it accepts the same arguments as the
 .B papersize
 command (see
@@ -257,13 +252,13 @@ Set the default line thickness to
 .I n
 thousandths of an em.
 .
-If this option isn\[aq]t specified, the line thickness defaults to
+If this option isn't specified, the line thickness defaults to
 0.04\~em.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH USAGE
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 There are styles called
 .BR R ,
@@ -275,7 +270,7 @@ mounted at font positions 1 to\ 4.
 The fonts are grouped into families
 .B T
 and
-.B H\ \c
+.B H
 having members in each of these styles:
 .
 .RS
@@ -382,24 +377,26 @@ These two fonts are not mounted by default.
 Using the option
 .B \-mec
 (which loads the file
-.BR ec.tmac )
+.IR ec.tmac )
 provides the EC and TC fonts.
 .
 The design of the EC family is very similar to that of the CM fonts;
 additionally, they give a much better coverage of groff symbols.
 .
 Note that
-.B ec.tmac
-must be called before any language-specific files; it doesn\[aq]t take
+.I ec.tmac
+must be called before any language-specific files; it doesn't take
 care of hcode values.
 .
 .
+.\" ====================================================================
 .SH ENVIRONMENT
+.\" ====================================================================
+.
 .TP
-.SM
-.B GROFF_FONT_PATH
+.I GROFF_FONT_PATH
 A list of directories in which to search for the
-.BI dev name
+.IR dev name
 directory in addition to the default ones.
 .
 See
@@ -409,40 +406,40 @@ and
 for more details.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH FILES
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .TP
-.B @FONTDIR@/devdvi/DESC
+.I @FONTDIR@/devdvi/DESC
 Device description file.
 .
 .TP
-.BI @FONTDIR@/devdvi/ F
+.IR @FONTDIR@/devdvi/ F
 Font description file for font
 .IR F .
 .
 .TP
-.B @MACRODIR@/dvi.tmac
+.I @MACRODIR@/dvi.tmac
 Macros for use with
 .BR grodvi .
 .
 .TP
-.B @MACRODIR@/ec.tmac
+.I @MACRODIR@/ec.tmac
 Macros to switch to EC fonts.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH BUGS
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 Dvi files produced by
 .B grodvi
-use a different resolution (57816 units per inch) to those produced by
+use a different resolution (57816 units per inch) from those produced by
 \*(tx.
 .
 Incorrectly written drivers which assume the resolution used by \*(tx,
-rather than using the resolution specified in the dvi file will not
+rather than using the resolution specified in the DVI file will not
 work with
 .BR grodvi .
 .
@@ -456,9 +453,9 @@ This is a consequence of the way \*(tx requires that the heights
 and widths of rules be rounded.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "SEE ALSO"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .BR tfmtodit (@MAN1EXT@),
 .BR groff (@MAN1EXT@),
@@ -469,10 +466,11 @@ and widths of rules be rounded.
 .BR groff_tmac (@MAN5EXT@)
 .
 .
-.\" --------------------------------------------------------------------
-.SH "COPYING"
-.\" --------------------------------------------------------------------
-.co
+.\" Restore compatibility mode (for, e.g., Solaris 10/11).
+.cp \n[grodvi_C]
 .
 .
-.cp \n[grodvi_C]
+.\" Local Variables:
+.\" mode: nroff
+.\" End:
+.\" vim: set filetype=groff:
similarity index 61%
rename from Makefile.init
rename to src/devices/grodvi/grodvi.am
index 05ef002..928298a 100644 (file)
@@ -1,5 +1,6 @@
-# Copyright (C) 1989-2014 Free Software Foundation, Inc.
-#      Written by James Clark (jjc@jclark.com)
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Last update: 22 Aug 2015
 #
 # This file is part of groff.
 #
 # for more details.
 #
 # You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-#
-# Makefile.init
-#
-SHELL=/bin/sh
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+bin_PROGRAMS += grodvi
+grodvi_SOURCES = src/devices/grodvi/dvi.cpp
+grodvi_LDADD = \
+  libdriver.a \
+  libgroff.a \
+  lib/libgnu.a $(LIBM)
+man1_MANS += src/devices/grodvi/grodvi.1
+EXTRA_DIST += src/devices/grodvi/grodvi.1.man
 
-.PHONY: all
-all:
-       $(SHELL) configure
-       $(MAKE) all
 
 ########################################################################
-# Emacs settings
-########################################################################
-#
+### Emacs settings
 # Local Variables:
-# mode: makefile
+# mode: makefile-automake
 # End:
diff --git a/src/devices/grohtml/Makefile.sub b/src/devices/grohtml/Makefile.sub
deleted file mode 100644 (file)
index 948a2ba..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-# Makefile.sub for `grohtml'
-#
-# File position: <groff-source>/src/devices/grohtml/Makefile.sub
-#
-# Copyright (C) 2014  Free Software Foundation, Inc.
-#
-# This file is part of `font utf8' which is part of `groff'.
-#
-# `groff' is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 2 of the License, or
-# (at your option) any later version.
-#
-# `groff' 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
-# <http://www.gnu.org/licenses/gpl-2.0.html>.
-#
-########################################################################
-
-PROG=post-grohtml$(EXEEXT)
-MAN1=grohtml.n
-XLIBS=$(LIBDRIVER) $(LIBGROFF) $(LIBGNU)
-MLIB=$(LIBM)
-OBJS=\
-  post-html.$(OBJEXT) \
-  html-table.$(OBJEXT) \
-  html-text.$(OBJEXT) \
-  output.$(OBJEXT)
-CCSRCS=\
-  $(srcdir)/post-html.cpp \
-  $(srcdir)/html-table.cpp \
-  $(srcdir)/html-text.cpp \
-  $(srcdir)/output.cpp
-HDRS=\
-  $(srcdir)/html.h \
-  $(srcdir)/html-table.h \
-  $(srcdir)/html-text.h
-
-########################################################################
-# Emacs settings
-########################################################################
-#
-# Local Variables:
-# mode: makefile
-# End:
similarity index 63%
rename from src/devices/grohtml/grohtml.man
rename to src/devices/grohtml/grohtml.1.man
index 51eae22..a54ae98 100644 (file)
@@ -1,71 +1,64 @@
-.TH GROHTML @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
+.TH GROHTML @MAN1EXT@ "@MDATE@" "groff @VERSION@"
 .SH NAME
-grohtml \- html driver for groff
-.
-.
-.\" license
-.de co
-Copyright \[co] 1999-2014 Free Software Foundation, Inc.
-
-Permission is granted to make and distribute verbatim copies of this
-manual provided the copyright notice and this permission notice are
-preserved on all copies.
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the
-entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
-Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be included in
-translations approved by the Free Software Foundation instead of in
-the original English.
-..
-.
-.\" Like TP, but if specified indent is more than half
-.\" the current line-length - indent, use the default indent.
-.de Tp
-.  ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP
-.  el .TP "\\$1"
-..
-.
-.\" --------------------------------------------------------------------
+grohtml \- HTML driver for groff
+.
+.
+.\" ====================================================================
+.\" Legal Terms
+.\" ====================================================================
+.\"
+.\" Copyright (C) 1999-2018 Free Software Foundation, Inc.
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of
+.\" this manual under the conditions for verbatim copying, provided that
+.\" the entire resulting derived work is distributed under the terms of
+.\" a permission notice identical to this one.
+.\"
+.\" Permission is granted to copy and distribute translations of this
+.\" manual into another language, under the above conditions for
+.\" modified versions, except that this permission notice may be
+.\" included in translations approved by the Free Software Foundation
+.\" instead of in the original English.
+.
+.
+.\" ====================================================================
 .SH SYNOPSIS
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
-.nr a \n(.j
-.ad l
-.nr i \n(.i
-.in +\w'\fBgrohtml 'u
-.ti \niu
-.B grohtml
-.
-.de OP
-.  ie \\n(.$-1 .RI "[\ \fB\\$1\fP" "\\$2" "\ ]"
-.  el .RB "[\ " "\\$1" "\ ]"
-..
-.
-.OP \-bhlnprv
-.OP \-a \%aa-text-bits
+.SY grohtml
+.OP \-bhlnprVy
+.OP \-a aa-text-bits
 .OP \-D dir
 .OP \-F dir
-.OP \-g \%aa-graphic-bits
-.OP \-i \%resolution
-.OP \-I \%image-stem
-.OP \-j \%filename
-.OP \-o \%image-vertical-offset
+.OP \-g aa-graphic-bits
+.OP \-i resolution
+.OP \-I image-stem
+.OP \-j filename
+.OP \-o image-vertical-offset
 .OP \-s size
 .OP \-S level
-.OP \-x \%html-dialect
-.RI "[\ " files\|.\|.\|. "\ ]"
-.br
-.ad \na
+.OP \-x html-dialect
+.RI [ file
+\&.\|.\|.\&]
+.YS
 .
+.SY grohtml
+.B \-\-help
+.YS
+.
+.SY grohtml
+.B \-v
+.SY grohtml
+.B \-\-version
+.YS
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH DESCRIPTION
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The
 .B grohtml
@@ -75,7 +68,7 @@ and a device driver,
 .BR post-grohtml )
 translates the output of GNU
 .B troff
-to html.
+to HTML.
 .
 Users should always invoke
 .B grohtml
@@ -102,7 +95,7 @@ is run by
 options can be passed to
 .B grohtml
 using
-.BR groff \[aq]s
+.BR groff 's
 .B \-P
 option.
 .
@@ -126,21 +119,21 @@ always writes output in \%UTF-8 encoding and has built-in entities for
 all non-composite unicode characters.
 .
 In spite of this, groff may issue warnings about unknown special
-characters if they can\[aq]t be found during the first pass.
+characters if they can't be found during the first pass.
 .
 Such warnings can be safely ignored unless the special characters
 appear inside a table or equation.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH OPTIONS
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .TP
 .BI \-a aa-text-bits
 Number of bits of antialiasing information to be used by
 .I text
-when generating png images.
+when generating PNG images.
 .
 The default is\~4 but valid values are 0, 1, 2, and\~4.
 .
@@ -189,7 +182,7 @@ is specified).
 .TP
 .BI \-F dir
 Prepend directory
-.IB dir /dev name
+.RI dir /dev name
 to the search path for font and device description files;
 .I name
 is the name of the device, usually
@@ -199,7 +192,7 @@ is the name of the device, usually
 .BI \-g aa-graphic-bits
 Number of bits of antialiasing information to be used by
 .I graphics
-when generating png images.
+when generating PNG images.
 .
 The default is\~4 but valid values are 0, 1, 2, and\~4.
 .
@@ -249,7 +242,7 @@ is the process ID).
 .BI \-j filename
 Inform
 .B grohtml
-to split the html output into multiple files.
+to split the HTML output into multiple files.
 .
 The
 .I filename
@@ -269,7 +262,7 @@ found.
 .
 Without the option the anchor value is the textual heading.
 .
-This can cause problems when a heading contains a \[oq]?\[cq] on older
+This can cause problems when a heading contains a \(oq?\(cqa on older
 versions of some browsers (Netscape).
 .
 This flag is automatically turned on if a heading contains an image.
@@ -286,14 +279,14 @@ only displays a page number when an image is required.
 .
 .TP
 .B \-r
-Turn off the automatic header and footer line (html rule).
+Turn off the automatic header and footer line (HTML rule).
 .
 .TP
 .B \-s size
 Set the base point size of the source file.
 .
 Thereafter when this point size is used in the source it will
-correspond to the html base size.
+correspond to the HTML base size.
 .
 Every increase of two points in the source will yield a
 .B <big>
@@ -303,7 +296,7 @@ tag is emitted.
 .
 .TP
 .BI \-S level
-When splitting html output,
+When splitting HTML output,
 split at the heading level (or higher) defined by
 .IR level .
 .
@@ -348,9 +341,9 @@ This is only generated if the
 flag is also specified.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH USAGE
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 There are styles called
 .BR R ,
@@ -361,12 +354,12 @@ and
 mounted at font positions 1 to\~4.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH DEPENDENCIES
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .B grohtml
-is dependent upon the png utilities
+is dependent upon the PNG utilities
 .RB ( \%pnmcut ,
 .BR \%pnmcrop ,
 .BR \%pnmtopng )
@@ -389,9 +382,9 @@ Images are generated whenever a table, picture, equation or line is
 encountered.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH FILES
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .B grohtml
 uses temporary files.
@@ -401,15 +394,14 @@ See the
 man page for details where such files are created.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH ENVIRONMENT
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .TP
-.SM
-.B GROFF_FONT_PATH
+.I GROFF_FONT_PATH
 A list of directories in which to search for the
-.BI dev name
+.IR dev name
 directory in addition to the default ones.
 .
 See
@@ -419,9 +411,15 @@ and
 for more details.
 .
 .
-.\" --------------------------------------------------------------------
+.TP
+.I SOURCE_DATE_EPOCH
+A timestamp (expressed as seconds since the Unix epoch) to use as the
+creation timestamp in place of the current time.
+.
+.
+.\" ====================================================================
 .SH BUGS
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .B Grohtml
 has been completely redesigned and rewritten.
@@ -429,9 +427,9 @@ has been completely redesigned and rewritten.
 It is still beta code.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "SEE ALSO"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .BR afmtodit (@MAN1EXT@),
 .BR groff (@MAN1EXT@),
@@ -442,12 +440,7 @@ It is still beta code.
 .BR groff_char (@MAN7EXT@)
 .
 .
-.\" --------------------------------------------------------------------
-.SH "LICENSE"
-.\" --------------------------------------------------------------------
-.co
-.
-.
 .\" Local Variables:
 .\" mode: nroff
 .\" End:
+.\" vim: set filetype=groff:
diff --git a/src/devices/grohtml/grohtml.am b/src/devices/grohtml/grohtml.am
new file mode 100644 (file)
index 0000000..d7a529f
--- /dev/null
@@ -0,0 +1,42 @@
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Last update: 22 Aug 2015
+#
+# This file is part of groff.
+#
+# groff 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.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+
+bin_PROGRAMS += post-grohtml
+post_grohtml_SOURCES = \
+  src/devices/grohtml/post-html.cpp \
+  src/devices/grohtml/html-table.cpp \
+  src/devices/grohtml/html-text.cpp \
+  src/devices/grohtml/output.cpp \
+  src/devices/grohtml/html.h \
+  src/devices/grohtml/html-text.h \
+  src/devices/grohtml/html-table.h
+
+post_grohtml_LDADD = $(LIBM) \
+  libdriver.a \
+  libgroff.a \
+  lib/libgnu.a 
+man1_MANS += src/devices/grohtml/grohtml.1
+EXTRA_DIST += src/devices/grohtml/grohtml.1.man
+
+
+########################################################################
+### Emacs settings
+# Local Variables:
+# mode: makefile-automake
+# End:
index e0430a1..82157f3 100644 (file)
@@ -23,7 +23,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include "driver.h"
 #include "stringclass.h"
index cea73bd..b4fe23a 100644 (file)
@@ -23,7 +23,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include "html.h"
 
@@ -101,7 +101,7 @@ private:
   cols          *columns;      /* column entries */
   int            linelength;
   cols          *last_col;     /* last column started */
-  int            start_space;  /* have we seen a `.sp' tag? */
+  int            start_space;  /* have we seen a '.sp' tag? */
 
   void  remove_cols (cols *c);
 };
index 7ba1fae..2475cc4 100644 (file)
@@ -1,6 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 2000-2014
- * Free Software Foundation, Inc.
+/* Copyright (C) 2000-2018 Free Software Foundation, Inc.
  *
  *  Gaius Mulley (gaius@glam.ac.uk) wrote html-text.cpp
  *
@@ -24,7 +23,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include "driver.h"
 #include "stringclass.h"
@@ -756,7 +755,7 @@ html_indent *html_text::remove_indent (HTML_TAG tag)
 
 /*
  *  remove_para_space - removes the leading space to a paragraph
- *                      (effectively this trims off a leading `.sp' tag).
+ *                      (effectively this trims off a leading '.sp' tag).
  */
 
 void html_text::remove_para_space (void)
index e5be5e1..2871427 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 2000-201 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2018 Free Software Foundation, Inc.
  *
  *  Gaius Mulley (gaius@glam.ac.uk) wrote html-text.h
  *
@@ -22,7 +22,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include "html.h"
 #include "html-table.h"
index a8fb51a..8cb6534 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 2000-201 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #if !defined(HTML_H)
 #  define HTML_H
index b314901..efd9c30 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 2000-201 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2018 Free Software Foundation, Inc.
  *
  *  Gaius Mulley (gaius@glam.ac.uk) wrote output.cpp
  *  but it owes a huge amount of ideas and raw code from
@@ -24,7 +24,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include "driver.h"
 #include "stringclass.h"
index fefbf01..7bc017e 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 2000-201 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2018 Free Software Foundation, Inc.
  *
  *  Gaius Mulley (gaius@glam.ac.uk) wrote post-html.cpp
  *  but it owes a huge amount of ideas and raw code from
@@ -20,7 +20,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include "driver.h"
 #include "stringclass.h"
@@ -28,6 +28,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. */
 #include "html.h"
 #include "html-text.h"
 #include "html-table.h"
+#include "curtime.h"
 
 #include <time.h>
 
@@ -79,7 +80,7 @@ static int manufacture_headings = FALSE;             /* default is to use the Hn
                                                      /* rather than manufacture our own.         */
 static color *default_background = NULL;             /* has user requested initial bg color?     */
 static string job_name;                              /* if set then the output is split into     */
-                                                     /* multiple files with `job_name'-%d.html   */
+                                                     /* multiple files with 'job_name'-%d.html   */
 static int multiple_files = FALSE;                   /* must we the output be divided into       */
                                                      /* multiple html files, one for each        */
                                                      /* heading?                                 */
@@ -1741,7 +1742,7 @@ void assert_state::add (assert_pos **h,
        l = "<none>";
       if (v == NULL)
        v = "no value at all";
-      fprintf(stderr, "%s:%s:error in assert format of id=%s expecting value to be prefixed with an `=' got %s\n",
+      fprintf(stderr, "%s:%s:error in assert format of id=%s expecting value to be prefixed with an '=' got %s\n",
              f, l, i, v);
     }
     t->id = i;
@@ -2866,7 +2867,7 @@ void html_printer::do_eol (void)
 }
 
 /*
- *  do_check_center - checks to see whether we have seen a `.ce' tag
+ *  do_check_center - checks to see whether we have seen a '.ce' tag
  *                    during the previous line.
  */
 
@@ -4239,7 +4240,7 @@ void html_printer::draw(int code, int *p, int np, const environment *env)
     break;
 
   default:
-    error("unrecognised drawing command `%1'", char(code));
+    error("unrecognised drawing command '%1'", char(code));
     break;
   }
 }
@@ -4702,7 +4703,7 @@ void html_printer::set_char(glyph *g, font *f, const environment *env,
   style sty(f, env->size, env->height, env->slant, env->fontno, *env->col);
   if (sty.slant != 0) {
     if (sty.slant > 80 || sty.slant < -80) {
-      error("silly slant `%1' degrees", sty.slant);
+      error("silly slant '%1' degrees", sty.slant);
       sty.slant = 0;
     }
   }
@@ -4740,16 +4741,16 @@ void html_printer::set_numbered_char(int num, const environment *env,
   glyph *g = number_to_glyph(num);
   int fn = env->fontno;
   if (fn < 0 || fn >= nfonts) {
-    error("bad font position `%1'", fn);
+    error("bad font position '%1'", fn);
     return;
   }
   font *f = font_table[fn];
   if (f == 0) {
-    error("no font mounted at `%1'", fn);
+    error("no font mounted at '%1'", fn);
     return;
   }
   if (!f->contains(g)) {
-    error("font `%1' does not contain numbered character %2",
+    error("font '%1' does not contain numbered character %2",
          f->get_name(),
          num);
     return;
@@ -4771,21 +4772,21 @@ glyph *html_printer::set_char_and_width(const char *nm, const environment *env,
   glyph *g = name_to_glyph(nm);
   int fn = env->fontno;
   if (fn < 0 || fn >= nfonts) {
-    error("bad font position `%1'", fn);
+    error("bad font position '%1'", fn);
     return UNDEFINED_GLYPH;
   }
   *f = font_table[fn];
   if (*f == 0) {
-    error("no font mounted at `%1'", fn);
+    error("no font mounted at '%1'", fn);
     return UNDEFINED_GLYPH;
   }
   if (!(*f)->contains(g)) {
     if (nm[0] != '\0' && nm[1] == '\0')
-      error("font `%1' does not contain ascii character `%2'",
+      error("font '%1' does not contain ascii character '%2'",
            (*f)->get_name(),
            nm[0]);
     else
-      error("font `%1' does not contain special character `%2'",
+      error("font '%1' does not contain special character '%2'",
            (*f)->get_name(),
            nm);
     return UNDEFINED_GLYPH;
@@ -4820,7 +4821,7 @@ void html_printer::write_title (int in_head)
       }
     }
   } else if (in_head) {
-    // place empty title tags to help conform to `tidy'
+    // place empty title tags to help conform to 'tidy'
     html.put_string("<title></title>").nl();
   }
 }
@@ -5013,7 +5014,7 @@ void html_printer::do_file_components (void)
        .put_string(Version_string)
        .end_comment();
 
-      t = time(0);
+      t = current_time();
       html.begin_comment("CreationDate: ")
        .put_string(ctime(&t), strlen(ctime(&t))-1)
        .end_comment();
@@ -5126,7 +5127,7 @@ html_printer::~html_printer()
     .put_string(Version_string)
     .end_comment();
 
-  t = time(0);
+  t = current_time();
   html.begin_comment("CreationDate: ")
     .put_string(ctime(&t), strlen(ctime(&t))-1)
     .end_comment();
@@ -5364,7 +5365,7 @@ void html_printer::special(char *s, const environment *env, char type)
 }
 
 /*
- *  devtag - handles device troff tags sent from the `troff'.
+ *  devtag - handles device troff tags sent from the 'troff'.
  *           These include the troff state machine tags:
  *           .br, .sp, .in, .tl, .ll etc
  *
diff --git a/src/devices/grolbp/Makefile.sub b/src/devices/grolbp/Makefile.sub
deleted file mode 100644 (file)
index 784287a..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-# Makefile.sub for `grolbp'
-#
-# File position: <groff-source>/src/devices/grolbp/Makefile.sub
-#
-# Copyright (C) 2014  Free Software Foundation, Inc.
-#
-# This file is part of `font utf8' which is part of `groff'.
-#
-# `groff' is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 2 of the License, or
-# (at your option) any later version.
-#
-# `groff' 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
-# <http://www.gnu.org/licenses/gpl-2.0.html>.
-#
-########################################################################
-
-PROG=grolbp$(EXEEXT)
-MAN1=grolbp.n
-XLIBS=$(LIBDRIVER) $(LIBGROFF) $(LIBGNU)
-MLIB=$(LIBM)
-OBJS=lbp.$(OBJEXT)
-CCSRCS=$(srcdir)/lbp.cpp
-
-########################################################################
-# Emacs settings
-########################################################################
-#
-# Local Variables:
-# mode: makefile
-# End:
index 971e073..048b120 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 2000-201 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2018 Free Software Foundation, Inc.
      Written by Francisco Andrés Verdú <pandres@dragonet.es> with many ideas
      taken from the other groff drivers.
 
@@ -16,7 +16,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 // Definition of the WP54 character set
 
diff --git a/src/devices/grolbp/grolbp.1.man b/src/devices/grolbp/grolbp.1.man
new file mode 100644 (file)
index 0000000..bdd1c0f
--- /dev/null
@@ -0,0 +1,456 @@
+'\" t
+.TH GROLBP @MAN1EXT@ "@MDATE@" "groff @VERSION@"
+.SH NAME
+grolbp \- groff driver for Canon CAPSL printers (LBP-4 and LBP-8 \
+series laser printers)
+.
+.
+.\" Save and disable compatibility mode (for, e.g., Solaris 10/11).
+.do nr grolbp_C \n[.C]
+.cp 0
+.
+.
+.\" Modified by Francisco Andrés Verdú <pandres@dragonet.es> for the
+.\" grolbp program.
+.
+.
+.\" ====================================================================
+.\" Legal Terms
+.\" ====================================================================
+.\"
+.\" Copyright (C) 1994-2018 Free Software Foundation, Inc.
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of
+.\" this manual under the conditions for verbatim copying, provided that
+.\" the entire resulting derived work is distributed under the terms of
+.\" a permission notice identical to this one.
+.\"
+.\" Permission is granted to copy and distribute translations of this
+.\" manual into another language, under the above conditions for
+.\" modified versions, except that this permission notice may be
+.\" included in translations approved by the Free Software Foundation
+.\" instead of in the original English.
+.
+.
+.\" ====================================================================
+.SH SYNOPSIS
+.\" ====================================================================
+.
+.SY grolbp
+.OP \-l
+.OP \-c num-copies
+.OP \-F font-directory
+.OP \-o orientation
+.OP \-p paper-size
+.OP \-w width
+.RI [ file
+\&.\|.\|.\&]
+.SY grolbp
+[\c
+.BI \-\-copies= num-copies\c
+] [\c
+.BI \-\-fontdir= font-directory\c
+] [\c
+.B \-\-landscape\c
+] [\c
+.BI \-\-linewidth= width\c
+] [\c
+.BI \-\-orientation= orientation\c
+] [\c
+.BI \-\-papersize= paper-size\c
+]
+.RI [ file
+\&.\|.\|.\&]
+.YS
+.
+.SY grolbp
+.B \-h
+.SY grolbp
+.B \-\-help
+.YS
+.
+.SY grolbp
+.B \-v
+.SY grolbp
+.B \-\-version
+.YS
+.
+.
+.\" ====================================================================
+.SH DESCRIPTION
+.\" ====================================================================
+.
+.B grolbp
+is a driver for
+.B groff
+that produces output in CAPSL and VDM format suitable for Canon LBP-4
+and LBP-8 printers.
+.
+.
+.LP
+For compatibility with
+.BR grolj4 (@MAN1EXT@)
+there is an additional drawing command available:
+.
+.TP
+.BI \eD'R\  dh\ dv '
+Draw a rule
+(i.e., a solid black rectangle),
+with one corner at the current position,
+and the diagonally opposite corner at the current
+position
+.RI +( dh , dv ).
+.
+.
+.\" ====================================================================
+.SH OPTIONS
+.\" ====================================================================
+.
+Note that there can be whitespace between a one-letter option and its
+argument;
+on the other hand, there must be whitespace and/or an equal sign
+(\(oq=\(cq) between a long-name option and its argument.
+.
+.
+.TP
+.BI \-c " num-copies"
+.TQ
+.BI \-\-copies= num-copies
+Print
+.I num-copies
+copies of each page.
+.
+.
+.TP
+.BI \-F " font-directory"
+.TQ
+.BI \-\-fontdir= font-directory
+Prepend directory
+.RI font-directory /dev name
+to the search path for font and device description files;
+.I name
+is the name of the device, usually
+.BR lbp .
+.
+.
+.TP
+.B \-h
+.TQ
+.B \-\-help
+Print a short help text.
+.
+.
+.TP
+.B \-l
+.TQ
+.B \-\-landscape
+Print the document with a landscape orientation.
+.
+.
+.TP
+.BI \-o " orientation"
+.TQ
+.BI \-\-orientation= orientation
+Print the document with
+.I orientation
+orientation, which must be \(oqportrait\(cq or \(oqlandscape\(cq.
+.
+.
+.TP
+.BI \-p " paper-size"
+.TQ
+.BI \-\-papersize= paper-size
+Set the paper size to
+.IR paper-size ,
+which must be a valid paper size description as indicated in section
+\[lq]Paper Sizes\[rq], below.
+.
+.
+.TP
+.B \-v
+.TQ
+.B \-\-version
+Print the version number.
+.
+.
+.TP
+.BI \-w " width"
+.TQ
+.BI \-\-linewidth= width
+Set the default line thickness to
+.I width
+thousandths of an em.
+.
+If this option isn't specified, the line thickness defaults to 0.04\~em.
+.
+.
+.\" ====================================================================
+.SH TYPEFACES
+.\" ====================================================================
+.
+The driver supports the Dutch, Swiss and Swiss-Narrow scalable
+typefaces, each one in the Regular, Bold, Italic and Bold-Italic styles.
+.
+Additionally, the Courier and Elite monospaced typefaces at the sizes 8
+and 12 points (for Courier) resp.\& 8 and 10 points (for Elite) are
+supported, each one in the Regular, Bold and Italic styles.
+.
+.
+.PP
+The following chart summarizes the font names you can use to access
+these fonts:
+.
+.
+.PP
+.TS
+tab(|) allbox center;
+c c c c c
+ab c c c c
+.
+Typeface | Regular | Bold | Italic | Bold-Italic
+Dutch | TR | TB | TI | TBI
+Swiss | HR | HB | HI | HBI
+Swiss Narrow | HNR | HNB | HNI | HNBI
+Courier | CR | CB | CI |
+Elite | ER | EB | EI |
+.TE
+.
+.
+.\" ====================================================================
+.SH PAPER SIZES
+.\" ====================================================================
+.
+The paper size can be set in the
+.I DESC
+file or with command-line options to
+.BR grolbp .
+If the paper size is specified both ways, the command-line options take
+precedence over the contents of the
+.I DESC
+file (this applies to the page orientation too).
+.
+.
+.PP
+See
+.BR groff_font (@MAN5EXT@)
+how to set the paper dimensions in the
+.I DESC
+file.
+.
+.
+.PP
+To set the paper size in the command line, add
+.sp 1
+.in +2m
+.BI \-p \ paper-size
+.in -2m
+.sp 1
+or
+.sp 1
+.in +2m
+.BI \-\-papersize= paper-size
+.in -2m
+.sp 1
+to the other
+.B grolbp
+options, where
+.I paper-size
+is in the same format as in the
+.I DESC
+file.
+.
+.
+.PP
+If no paper size is specified in the
+.I DESC
+file or the command line, a default size of A4 is used.
+.
+.
+.\" ====================================================================
+.SH PAGE ORIENTATION
+.\" ====================================================================
+.
+As with the page size, the orientation of the printed page
+.RB ( portrait
+or
+.BR landscape )
+can be set in the
+.I DESC
+file or with command-line options.
+.
+It is also case insensitive.
+.
+.
+.PP
+To set the orientation in the
+.I DESC
+file, insert a line with the following content:
+.sp 1
+.in +2m
+.B orientation
+.RB [ portrait | landscape ]
+.in -2m
+.sp 1
+.
+Only the first valid orientation command in the
+.I DESC
+file is used.
+.
+.
+.PP
+To set the page orientation with command-line options you can use the
+.B \-o
+or
+.B \-\-orientation
+option with the same parameters
+.RB ( portrait
+or
+.BR landscape )
+as in the
+.I DESC
+file.
+Or you can use the
+.B \-l
+option to force the pages to be printed in landscape.
+.
+.
+.\" ====================================================================
+.SH FONT FILE FORMAT
+.\" ====================================================================
+.
+In addition to the usual commands described in
+.BR groff_font (@MAN5EXT@),
+.B grolbp
+provides the command
+.I lbpname
+which sets the font name sent to the printer when requesting this font.
+.
+The syntax of this command is:
+.sp 1
+.in +2m
+.B lbpname
+.I printer_font_name
+.in -2m
+.
+.IP \(bu
+For bitmapped fonts,
+.I printer_font_name
+has the form
+.sp 1
+.in +2m
+.RI N\(la base_fontname \(ra\(la font_style \(ra
+.in -2m
+.sp 1
+.I base_fontname
+is the font name as it appears in the printers font listings without the
+first letter, up to (but not including) the font size.
+.I font_style
+can be one of the letters
+.BR R ,
+.BR I ,
+or
+.BR B ,
+indicating the font styles Roman, Italic and Bold respectively.
+.
+.IP
+For instance, if the printer's
+.I font listing A
+shows font \(oqNelite12I.ISO_USA\(cq, the corresponding entry in the
+font description file is
+.sp 1
+.in +2m
+.B lbpname NeliteI
+.in -2m
+.
+.IP
+Note that you may need to modify
+.B grolbp
+to add support for new bitmapped fonts, since the available font names
+and font sizes of bitmapped fonts (as documented above) are hard-coded
+into the program.
+.
+.IP \(bu
+For scalable fonts,
+.I printer_font_name
+is identical to the font name as it appears in the printer's
+.IR "font listing A" .
+.
+.IP
+For instance, to select the \(oqSwiss\(cq font in bold style, which
+appears in the printer's
+.I font listing A
+as \(oqSwiss-Bold\(cq, the required
+.B lbpname
+command line is
+.sp 1
+.in +2m
+.B lbpname Swiss-Bold
+.in -2m
+.sp 1
+.
+.PP
+The argument of
+.B lbpname
+is case sensitive.
+.
+.
+.\" ====================================================================
+.SH ENVIRONMENT
+.\" ====================================================================
+.
+.TP
+.I GROFF_FONT_PATH
+A list of directories in which to search for the
+.IR dev name
+directory in addition to the default ones.
+.
+See
+.BR @g@troff (@MAN1EXT@)
+and
+.BR \%groff_font (@MAN5EXT@)
+for more details.
+.
+.
+.\" ====================================================================
+.SH FILES
+.\" ====================================================================
+.
+.TP
+.I @FONTDIR@/devlbp/DESC
+Device description file.
+.
+.TP
+.IR @FONTDIR@/devlbp/ F
+Font description file for font
+.IR F .
+.
+.TP
+.I @MACRODIR@/lbp.tmac
+Macros for use with
+.BR grolbp .
+.
+.
+.\" ====================================================================
+.SH SEE ALSO
+.\" ====================================================================
+.
+.BR groff (@MAN1EXT@),
+.BR @g@troff (@MAN1EXT@),
+.BR groff_out (@MAN5EXT@),
+.BR groff_font (@MAN5EXT@),
+.BR groff_char (@MAN7EXT@)
+.
+.
+.\" Restore compatibility mode (for, e.g., Solaris 10/11).
+.cp \n[grolbp_C]
+.
+.
+.\"
+.\" Local Variables:
+.\" mode: nroff
+.\" End:
+.\" vim: set filetype=groff:
diff --git a/src/devices/grolbp/grolbp.am b/src/devices/grolbp/grolbp.am
new file mode 100644 (file)
index 0000000..64c9f4a
--- /dev/null
@@ -0,0 +1,38 @@
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Last update: 13 Aug 2015
+#
+# This file is part of groff.
+#
+# groff 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.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+
+bin_PROGRAMS += grolbp
+grolbp_SOURCES = \
+  src/devices/grolbp/lbp.cpp \
+  src/devices/grolbp/lbp.h \
+  src/devices/grolbp/charset.h
+
+grolbp_LDADD = $(LIBM) \
+  libdriver.a \
+  libgroff.a \
+  lib/libgnu.a
+man1_MANS += src/devices/grolbp/grolbp.1
+EXTRA_DIST += src/devices/grolbp/grolbp.1.man
+
+
+########################################################################
+### Emacs settings
+# Local Variables:
+# mode: makefile-automake
+# End:
diff --git a/src/devices/grolbp/grolbp.man b/src/devices/grolbp/grolbp.man
deleted file mode 100644 (file)
index 37f30b9..0000000
+++ /dev/null
@@ -1,450 +0,0 @@
-'\" t
-.\" The above line should force the use of tbl as a preprocessor
-.\" vim: set syntax=nroff :
-.\" The above line should set vim into nroff mode
-.TH GROLBP @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
-.SH NAME
-grolbp \- groff driver for Canon CAPSL printers (LBP-4 and LBP-8 \
-series laser printers).
-.
-.
-.\" license
-.de co
-Copyright \[co] 1994-2014 Free Software Foundation, Inc.
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the
-entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
-Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be included in
-translations approved by the Free Software Foundation instead of in
-the original English.
-
-Modified by Francisco Andrés Verdú <pandres@dragonet.es> for the grolbp
-program.
-..
-.
-.
-.de TQ
-.  br
-.  ns
-.  TP \\$1
-..
-.
-.
-.\" Like TP, but if specified indent is more than half
-.\" the current line-length - indent, use the default indent.
-.de Tp
-.  ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP
-.  el .TP "\\$1"
-..
-.
-.\" --------------------------------------------------------------------
-.SH SYNOPSIS
-.\" --------------------------------------------------------------------
-.
-.nr a \n(.j
-.ad l
-.nh
-.nr i \n(.i
-.in +\w'\fBgrolbp 'u
-.ti \niu
-.B grolbp
-.de OP
-.ie \\n(.$-1 .RI "[\ \fB\\$1\fP" "\\$2" "\ ]"
-.el .RB "[\ " "\\$1" "\ ]"
-..
-.
-.OP \-l
-.OP \-\-landscape
-.OP \-v
-.OP \-\-version
-.OP \-c n
-.OP \-\-copies= numcopies
-.OP \-p paper_size
-.OP \-\-papersize= paper_size
-.OP \-o orientation
-.OP \-\-orientation= orientation
-.OP \-w width
-.OP \-\-linewidth= width
-.OP \-F dir
-.OP \-\-fontdir= dir
-.OP \-h
-.OP \-\-help
-.RI "[\ " files\|.\|.\|. "\ ]"
-.br
-.ad \na
-.hy
-.
-.
-.\" --------------------------------------------------------------------
-.SH DESCRIPTION
-.\" --------------------------------------------------------------------
-.
-.B grolbp
-is a driver for
-.B groff
-that produces output in CAPSL and VDM format suitable for Canon LBP\-4 and
-LBP\-8 printers.
-.
-.
-.LP
-For compatibility with grolj4 there is an additional drawing command
-available:
-.
-.TP
-.BI \eD'R\  dh\ dv '
-Draw a rule (i.e.\ a solid black rectangle), with one corner at the current
-position, and the diagonally opposite corner at the current position
-.RI +( dh , dv ).
-.
-.
-.\" --------------------------------------------------------------------
-.SH OPTIONS
-.\" --------------------------------------------------------------------
-.
-Note that there can be whitespace between a one-letter option and its
-argument; on the other hand, there must be whitespace and/or an equal sign
-(\[oq]=\[cq]) between a long-name option and its argument.
-.
-.TP
-.BI \-c numcopies
-.TQ
-.BI \-\-copies= numcopies
-Print
-.I numcopies
-copies of each page.
-.
-.TP
-.B \-l
-.TQ
-.B \-\-landscape
-Print the document with a landscape orientation.
-.
-.TP
-.BI \-p paper_size
-.TQ
-.BI \-\-papersize= paper_size
-Set the paper size to
-.IR paper_size ,
-which must be a valid paper size description as indicated in the section
-.BR "PAPER SIZES" .
-.
-.TP
-.BI \-o orientation
-.TQ
-.BI \-\-orientation= orientation
-Print the document with
-.I orientation
-orientation, which must be \[oq]portrait\[cq] or \[oq]landscape\[cq].
-.
-.TP
-.BI \-w width
-.TQ
-.BI \-\-linewidth= width
-Set the default line thickness to
-.I width
-thousandths of an em.
-.
-If this option isn\[aq]t specified, the line thickness defaults to 0.04\~em.
-.
-.TP
-.B \-v
-.TQ
-.B \-\-version
-Print the version number.
-.
-.TP
-.BI \-F dir
-.TQ
-.BI \-\-fontdir= dir
-Prepend directory
-.IB dir /dev name
-to the search path for font and device description files;
-.I name
-is the name of the device, usually
-.BR lbp .
-.
-.TP
-.B \-h
-.TQ
-.B \-\-help
-Print a short help text.
-.
-.
-.\" --------------------------------------------------------------------
-.SH TYPEFACES
-.\" --------------------------------------------------------------------
-.
-The driver supports the Dutch, Swiss and Swiss-Narrow scalable typefaces,
-each one in the Regular, Bold, Italic and Bold-Italic styles.
-.
-Additionally, the Courier and Elite monospaced typefaces at the sizes 8 and
-12 points (for Courier) resp.\& 8 and 10 points (for Elite) are supported,
-each one in the Regular, Bold and Italic styles.
-.
-.
-.PP
-The following chart summarizes the font names you can use to access these
-fonts:
-.
-.
-.PP
-.TS
-tab(|) allbox center;
-c c c c c
-ab c c c c
-.
-Typeface | Regular | Bold | Italic | Bold-Italic
-Dutch | TR | TB | TI | TBI
-Swiss | HR | HB | HI | HBI
-Swiss Narrow | HNR | HNB | HNI | HNBI
-Courier | CR | CB | CI |
-Elite | ER | EB | EI |
-.TE
-.
-.
-.\" --------------------------------------------------------------------
-.SH PAPER SIZES
-.\" --------------------------------------------------------------------
-.
-The paper size can be set in the
-.B DESC
-file or with command line options to
-.BR grolbp .
-If the paper size is specified both ways, the command line options take
-precedence over the contents of the
-.B DESC
-file (this applies to the page orientation too).
-.
-.
-.PP
-See
-.BR groff_font (@MAN5EXT@)
-how to set the paper dimensions in the
-.B DESC
-file.
-.
-.
-.PP
-To set the paper size in the command line, add
-.sp 1
-.in +2m
-.BI \-p \ paper-size
-.in -2m
-.sp 1
-or
-.sp 1
-.in +2m
-.BI \-\-papersize= paper-size
-.in -2m
-.sp 1
-to the other
-.B grolbp
-options, where
-.I paper-size
-is in the same format as in the
-.B DESC
-file.
-.
-.
-.PP
-If no paper size is specified in the
-.B DESC
-file or the command line, a default size of A4 is used.
-.
-.
-.\" --------------------------------------------------------------------
-.SH PAGE ORIENTATION
-.\" --------------------------------------------------------------------
-.
-As with the page size, the orientation of the printed page
-.RB ( portrait
-or
-.BR landscape )
-can be set in the
-.B DESC
-file or with command line options.
-.
-It is also case insensitive.
-.
-.
-.PP
-To set the orientation in the
-.B DESC
-file, insert a line with the following content:
-.sp 1
-.in +2m
-.B orientation
-.RB [ portrait | landscape ]
-.in -2m
-.sp 1
-.
-Only the first valid orientation command in the
-.B DESC
-file is used.
-.
-.
-.PP
-To set the page orientation with command line options you can use the
-.B \-o
-or
-.B \-\-orientation
-option with the same parameters
-.RB ( portrait
-or
-.BR landscape )
-as in the
-.B DESC
-file.
-Or you can use the
-.B \-l
-option to force the pages to be printed in landscape.
-.
-.
-.\" --------------------------------------------------------------------
-.SH FONT FILE FORMAT
-.\" --------------------------------------------------------------------
-.
-In addition to the usual commands described in
-.BR groff_font (@MAN5EXT@),
-.B grolbp
-provides the command
-.I lbpname
-which sets the font name sent to the printer when requesting this font.
-.
-The syntax of this command is:
-.sp 1
-.in +2m
-.B lbpname
-.I printer_font_name
-.in -2m
-.
-.IP \(bu
-For bitmapped fonts,
-.I printer_font_name
-has the form
-.sp 1
-.in +2m
-.RI N\(la base_fontname \(ra\(la font_style \(ra
-.in -2m
-.sp 1
-.I base_fontname
-is the font name as it appears in the printers font listings without the
-first letter, up to (but not including) the font size.
-.I font_style
-can be one of the letters
-.BR R ,
-.BR I ,
-or
-.BR B ,
-indicating the font styles Roman, Italic and Bold respectively.
-.
-.IP
-For instance, if the printer\[aq]s
-.I font listing A
-shows font \[oq]Nelite12I.ISO_USA\[cq], the corresponding entry in the
-font description file is
-.sp 1
-.in +2m
-.B lbpname NeliteI
-.in -2m
-.
-.IP
-Note that you may need to modify
-.B grolbp
-to add support for new bitmapped fonts, since the available font names and
-font sizes of bitmapped fonts (as documented above) are hard-coded into the
-program.
-.
-.IP \(bu
-For scalable fonts,
-.I printer_font_name
-is identical to the font name as it appears in the printer\[aq]s
-.IR "font listing A" .
-.
-.IP
-For instance, to select the \[oq]Swiss\[cq] font in bold style, which
-appears in the printer\[aq]s
-.I font listing A
-as \[oq]Swiss-Bold\[cq], the required
-.B lbpname
-command line is
-.sp 1
-.in +2m
-.B lbpname Swiss-Bold
-.in -2m
-.sp 1
-.
-.PP
-The argument of
-.B lbpname
-is case sensitive.
-.
-.
-.\" --------------------------------------------------------------------
-.SH ENVIRONMENT
-.\" --------------------------------------------------------------------
-.
-.TP
-.SM
-.B GROFF_FONT_PATH
-A list of directories in which to search for the
-.BI dev name
-directory in addition to the default ones.
-.
-See
-.BR @g@troff (@MAN1EXT@)
-and
-.BR \%groff_font (@MAN5EXT@)
-for more details.
-.
-.
-.\" --------------------------------------------------------------------
-.SH FILES
-.\" --------------------------------------------------------------------
-.
-.TP
-.B @FONTDIR@/devlbp/DESC
-Device description file.
-.
-.TP
-.BI @FONTDIR@/devlbp/ F
-Font description file for font
-.IR F .
-.
-.TP
-.B @MACRODIR@/lbp.tmac
-Macros for use with
-.BR grolbp .
-.
-.
-.\" --------------------------------------------------------------------
-.SH SEE ALSO
-.\" --------------------------------------------------------------------
-.
-.BR groff (@MAN1EXT@),
-.BR @g@troff (@MAN1EXT@),
-.BR groff_out (@MAN5EXT@),
-.BR groff_font (@MAN5EXT@),
-.BR groff_char (@MAN7EXT@)
-.
-.
-.\" --------------------------------------------------------------------
-.SH COPYING
-.\" --------------------------------------------------------------------
-.
-.co
-.
-.
-.\"
-.\" Local Variables:
-.\" mode: nroff
-.\" End:
index fbd1bbf..0109d3a 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1994-2014 Free Software Foundation, Inc.
+/* Copyright (C) 1994-2018 Free Software Foundation, Inc.
      Written by Francisco Andrés Verdú <pandres@dragonet.es> with many ideas
      taken from the other groff drivers.
 
@@ -16,7 +16,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 /*
 TODO
@@ -117,7 +117,7 @@ void lbp_font::handle_unknown_font_command(const char *command,
   if (strcmp(command, "lbpname") == 0) {
     if (arg == 0)
       fatal_with_file_and_line(filename, lineno,
-                              "`%1' command requires an argument",
+                              "'%1' command requires an argument",
                               command);
     this->lbpname = new char[strlen(arg) + 1];
     strcpy(this->lbpname, arg);
@@ -388,9 +388,10 @@ inline void lbp_printer::setfillmode(int mode)
     if (mode != 1)
       vdmsetfillmode(mode, 1, 0);
     else
-      vdmsetfillmode(mode, 1, 1);      // To get black we must use white
-                                       // inverted
-      fill_mode = mode;
+      // To get black, we must use white inverted.
+      vdmsetfillmode(mode, 1, 1);
+
+    fill_mode = mode;
   }
 }
 
@@ -400,7 +401,7 @@ inline void lbp_printer::polygon(int hpos, int vpos, int np, int *p)
   points = new int[np + 2];
   points[0] = hpos;
   points[1] = vpos;
-  // fprintf(stderr, "Poligon (%d,%d) ", points[0], points[1]);
+  // fprintf(stderr, "Polygon (%d,%d) ", points[0], points[1]);
   for (i = 0; i < np; i++)
     points[i + 2] = p[i];
   // for (i = 0; i < np; i++) fprintf(stderr, " %d ", p[i]);
@@ -540,7 +541,7 @@ void lbp_printer::draw(int code, int *p, int np, const environment *env)
     // not implemented yet
     break;
   default:
-    error("unrecognised drawing command `%1'", char(code));
+    error("unrecognised drawing command '%1'", char(code));
     break;
   }
   return;
@@ -585,12 +586,12 @@ static void handle_unknown_desc_command(const char *command, const char *arg,
 {
   // orientation command
   if (strcasecmp(command, "orientation") == 0) {
-    // We give priority to command line options
+    // We give priority to command-line options
     if (orientation > 0)
       return;
     if (arg == 0)
       error_with_file_and_line(filename, lineno,
-                              "`orientation' command requires an argument");
+                              "'orientation' command requires an argument");
     else {
       if (strcasecmp(arg, "portrait") == 0)
        orientation = 0;
@@ -599,7 +600,7 @@ static void handle_unknown_desc_command(const char *command, const char *arg,
          orientation = 1;
        else
          error_with_file_and_line(filename, lineno,
-                                  "invalid argument to `orientation' command");
+                                  "invalid argument to 'orientation' command");
       }
     }
   }
@@ -657,7 +658,7 @@ int main(int argc, char **argv)
        const char *s;
        if (!font::scan_papersize(optarg, &s,
                                  &user_paperlength, &user_paperwidth))
-         error("invalid paper size `%1' ignored", optarg);
+         error("invalid paper size '%1' ignored", optarg);
        else
          user_papersize = set_papersize(s);
        break;
index 68cd8dc..6255bdd 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C -*-
-/* Copyright (C) 1994-201 Free Software Foundation, Inc.
+/* Copyright (C) 1994-2018 Free Software Foundation, Inc.
      Written by Francisco Andrés Verdú <pandres@dragonet.es>
 
 groff is free software; you can redistribute it and/or modify it under
@@ -13,7 +13,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 /*  This file contains a set of utility functions to use canon CAPSL printers
  *  (lbp-4 and lbp-8 series printers) */
diff --git a/src/devices/grolj4/Makefile.sub b/src/devices/grolj4/Makefile.sub
deleted file mode 100644 (file)
index 60f7bf9..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-# Makefile.sub for `grolj4'
-#
-# File position: <groff-source>/src/devices/grolj4/Makefile.sub
-#
-# Copyright (C) 2014  Free Software Foundation, Inc.
-#
-# This file is part of `font utf8' which is part of `groff'.
-#
-# `groff' is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 2 of the License, or
-# (at your option) any later version.
-#
-# `groff' 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
-# <http://www.gnu.org/licenses/gpl-2.0.html>.
-#
-########################################################################
-
-PROG=grolj4$(EXEEXT)
-MAN1=grolj4.n
-MAN5=lj4_font.n
-XLIBS=$(LIBDRIVER) $(LIBGROFF) $(LIBGNU)
-MLIB=$(LIBM)
-OBJS=lj4.$(OBJEXT)
-CCSRCS=$(srcdir)/lj4.cpp
-
-########################################################################
-# Emacs settings
-########################################################################
-#
-# Local Variables:
-# mode: makefile
-# End:
diff --git a/src/devices/grolj4/grolj4.1.man b/src/devices/grolj4/grolj4.1.man
new file mode 100644 (file)
index 0000000..079f9c0
--- /dev/null
@@ -0,0 +1,232 @@
+.TH GROLJ4 @MAN1EXT@ "@MDATE@" "groff @VERSION@"
+.SH NAME
+grolj4 \- groff driver for HP LaserJet 4 family
+.
+.
+.\" ====================================================================
+.\" Legal Terms
+.\" ====================================================================
+.\"
+.\" Copyright (C) 1994-2018 Free Software Foundation, Inc.
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of
+.\" this manual under the conditions for verbatim copying, provided that
+.\" the entire resulting derived work is distributed under the terms of
+.\" a permission notice identical to this one.
+.\"
+.\" Permission is granted to copy and distribute translations of this
+.\" manual into another language, under the above conditions for
+.\" modified versions, except that this permission notice may be
+.\" included in translations approved by the Free Software Foundation
+.\" instead of in the original English.
+.
+.
+.\" ====================================================================
+.SH SYNOPSIS
+.\" ====================================================================
+.
+.SY grolj4
+.OP \-l
+.OP \-c num-copies
+.RB [ \-d
+.RI [ n ]]
+.OP \-F font-directory
+.OP \-p paper-size
+.OP \-w line-width
+.RI [ file
+\&.\|.\|.\&]
+.YS
+.
+.SY grolj4
+.B \-\-help
+.YS
+.
+.SY grolj4
+.B \-v
+.SY grolj4
+.B \-\-version
+.YS
+.
+.
+.\" ====================================================================
+.SH DESCRIPTION
+.\" ====================================================================
+.
+.B grolj4
+is a driver for
+.B groff
+that produces output in PCL5 format suitable for an HP LaserJet 4
+printer.
+.
+.
+.LP
+There is an additional drawing command available:
+.
+.TP
+.BI \eD'R\  dh\ dv '
+Draw a rule (solid black rectangle), with one corner at the current
+position, and the diagonally opposite corner at the current position
+.RI +( dh , dv ).
+.
+Afterwards the current position will be at the opposite corner.
+.
+This generates a PCL fill rectangle command, and so will work on
+printers that do not support HPGL/2 unlike the other
+.B \eD
+commands.
+.
+.
+.\" ====================================================================
+.SH OPTIONS
+.\" ====================================================================
+.
+Whitespace is permitted between a command-line option and its argument.
+.
+.
+.TP
+.BI \-c " num-copies"
+Print
+.I num-copies
+copies of each page.
+.
+.
+.TP
+.B \-l
+Print the document with a landscape orientation.
+.
+.
+.TP
+.B \-d\c
+.RI " [" n ]
+Use duplex mode
+.IR n :
+1\ is long-side binding; 2\ is short-side binding;
+default is\ 1.
+.
+.
+.TP
+.BI \-p " paper-size"
+Set the paper size to
+.IR paper-size ,
+which must be one of
+letter, legal, executive, a4, com10, monarch, c5, b5, dl.
+.
+.
+.TP
+.B \-v
+.TQ
+.B \-\-version
+Print the version number.
+.
+.
+.TP
+.BI \-w " line-width"
+Set the default line thickness to
+.I line-width
+thousandths of an em.
+.
+If this option isn't specified, the line thickness defaults to
+0.04\~em.
+.
+.
+.TP
+.BI \-F " font-directory"
+Prepend directory
+.IR font-directory /dev name
+to the search path for font and device description files;
+.I name
+is the name of the device, usually
+.BR lj4 .
+.
+.
+.LP
+The following four commands are available additionally in the
+font description files:
+.
+.
+.TP
+.BI pclweight \ N
+The integer value
+.I N
+must be in the range \-7 to +7; default is\~0.
+.
+.
+.TP
+.BI pclstyle \ N
+The integer value
+.I N
+must be in the range 0 to 32767; default is\~0.
+.
+.
+.TP
+.BI pclproportional \ N
+A boolean flag which can be either 0 or\~1; default is\~0.
+.
+.
+.TP
+.BI pcltypeface \ N
+The integer value
+.I N
+must be in the range 0 to 65535; default is\~0.
+.
+.
+.\" ====================================================================
+.SH ENVIRONMENT
+.\" ====================================================================
+.
+.TP
+.I GROFF_FONT_PATH
+A list of directories in which to search for the
+.IR dev name
+directory in addition to the default ones.
+.
+See
+.BR @g@troff (@MAN1EXT@)
+and
+.BR \%groff_font (@MAN5EXT@)
+for more details.
+.
+.
+.\" ====================================================================
+.SH FILES
+.\" ====================================================================
+.
+.TP
+.I @FONTDIR@/devlj4/DESC
+Device description file.
+.
+.TP
+.IR @FONTDIR@/devlj4/ F
+Font description file for font
+.IR F .
+.
+.TP
+.I @MACRODIR@/lj4.tmac
+Macros for use with
+.BR grolj4 .
+.
+.
+.SH BUGS
+Small dots.
+.
+.
+.\" ====================================================================
+.SH "SEE ALSO"
+.\" ====================================================================
+.
+.BR lj4_font (@MAN5EXT@),
+.BR groff (@MAN1EXT@),
+.BR @g@troff (@MAN1EXT@),
+.BR groff_out (@MAN5EXT@),
+.BR groff_font (@MAN5EXT@),
+.BR groff_char (@MAN7EXT@)
+.
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" End:
+.\" vim: set filetype=groff:
diff --git a/src/devices/grolj4/grolj4.am b/src/devices/grolj4/grolj4.am
new file mode 100644 (file)
index 0000000..b4ab70b
--- /dev/null
@@ -0,0 +1,36 @@
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Last update: 22 Aug 2015
+#
+# This file is part of groff.
+#
+# groff 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.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+
+bin_PROGRAMS += grolj4
+grolj4_SOURCES = src/devices/grolj4/lj4.cpp
+grolj4_LDADD = $(LIBM) \
+  libdriver.a \
+  libgroff.a \
+  lib/libgnu.a
+man1_MANS += src/devices/grolj4/grolj4.1
+man5_MANS += src/devices/grolj4/lj4_font.5
+EXTRA_DIST += \
+  src/devices/grolj4/grolj4.1.man \
+  src/devices/grolj4/lj4_font.5.man
+
+########################################################################
+### Emacs settings
+# Local Variables:
+# mode: makefile-automake
+# End:
diff --git a/src/devices/grolj4/grolj4.man b/src/devices/grolj4/grolj4.man
deleted file mode 100644 (file)
index bddcbb0..0000000
+++ /dev/null
@@ -1,226 +0,0 @@
-.\" -*- nroff -*-
-.TH GROLJ4 @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
-.SH NAME
-grolj4 \- groff driver for HP Laserjet 4 family
-.
-.
-.\" license
-.de co
-Copyright \[co] 1994-2014 Free Software Foundation, Inc.
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the
-entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
-Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be included in
-translations approved by the Free Software Foundation instead of in
-the original English.
-..
-.
-.\" Like TP, but if specified indent is more than half
-.\" the current line-length - indent, use the default indent.
-.de Tp
-. ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP
-. el .TP "\\$1"
-..
-.
-.\" --------------------------------------------------------------------
-.SH SYNOPSIS
-.\" --------------------------------------------------------------------
-.
-.nr a \n(.j
-.ad l
-.nr i \n(.i
-.in +\w'\fBgrolj4 'u
-.ti \niu
-.B grolj4
-.
-.de OP
-.  ie \\n(.$-1 .RI "[\ \fB\\$1\fP" "\\$2" "\ ]"
-.  el .RB "[\ " "\\$1" "\ ]"
-..
-.
-.OP \-lv
-.OP \-d \fR[\fPn\fR]\fP
-.OP \-c n
-.OP \-p paper_size
-.OP \-w n
-.OP \-F dir
-.RI "[\ " files\|.\|.\|. "\ ]"
-.br
-.ad \na
-.
-.
-.\" --------------------------------------------------------------------
-.SH DESCRIPTION
-.\" --------------------------------------------------------------------
-.
-.B grolj4
-is a driver for
-.B groff
-that produces output in PCL5 format suitable for an HP Laserjet 4
-printer.
-.
-.
-.LP
-There is an additional drawing command available:
-.
-.TP
-.BI \eD'R\  dh\ dv '
-Draw a rule (solid black rectangle), with one corner at the current
-position, and the diagonally opposite corner at the current position
-.RI +( dh , dv ).
-.
-Afterwards the current position will be at the opposite corner.
-.
-This generates a PCL fill rectangle command, and so will work on
-printers that do not support HPGL/2 unlike the other
-.B \eD
-commands.
-.
-.
-.\" --------------------------------------------------------------------
-.SH OPTIONS
-.\" --------------------------------------------------------------------
-.
-It is possible to have whitespace between a command line option and its
-parameter.
-.
-.TP
-.BI \-c n
-Print
-.I n
-copies of each page.
-.
-.TP
-.B \-l
-Print the document with a landscape orientation.
-.
-.TP
-.BI "\-d [" n ]
-Use duplex mode
-.IR n :
-1\ is long-side binding; 2\ is short-side binding;
-default is\ 1.
-.
-.TP
-.BI \-p size
-Set the paper size to
-.IR size ,
-which must be one of
-letter, legal, executive, a4, com10, monarch, c5, b5, dl.
-.
-.TP
-.B \-v
-Print the version number.
-.
-.TP
-.BI \-w n
-Set the default line thickness to
-.I n
-thousandths of an em.
-.
-If this option isn\[aq]t specified, the line thickness defaults to
-0.04\~em.
-.
-.TP
-.BI \-F dir
-Prepend directory
-.IB dir /dev name
-to the search path for font and device description files;
-.I name
-is the name of the device, usually
-.BR lj4 .
-.
-.
-.LP
-The following four commands are available additionally in the
-font description files:
-.
-.TP
-.BI pclweight \ N
-The integer value
-.I N
-must be in the range \-7 to +7; default is\~0.
-.
-.TP
-.BI pclstyle \ N
-The integer value
-.I N
-must be in the range 0 to 32767; default is\~0.
-.
-.TP
-.BI pclproportional \ N
-A boolean flag which can be either 0 or\~1; default is\~0.
-.
-.TP
-.BI pcltypeface \ N
-The integer value
-.I N
-must be in the range 0 to 65535; default is\~0.
-.
-.
-.\" --------------------------------------------------------------------
-.SH ENVIRONMENT
-.\" --------------------------------------------------------------------
-.
-.TP
-.SM
-.B GROFF_FONT_PATH
-A list of directories in which to search for the
-.BI dev name
-directory in addition to the default ones.
-.
-See
-.BR @g@troff (@MAN1EXT@)
-and
-.BR \%groff_font (@MAN5EXT@)
-for more details.
-.
-.
-.\" --------------------------------------------------------------------
-.SH FILES
-.\" --------------------------------------------------------------------
-.
-.TP
-.B @FONTDIR@/devlj4/DESC
-Device description file.
-.
-.TP
-.BI @FONTDIR@/devlj4/ F
-Font description file for font
-.IR F .
-.
-.TP
-.B @MACRODIR@/lj4.tmac
-Macros for use with
-.BR grolj4 .
-.
-.
-.SH BUGS
-Small dots.
-.
-.
-.\" --------------------------------------------------------------------
-.SH "SEE ALSO"
-.\" --------------------------------------------------------------------
-.
-.BR lj4_font (@MAN5EXT@),
-.BR groff (@MAN1EXT@),
-.BR @g@troff (@MAN1EXT@),
-.BR groff_out (@MAN5EXT@),
-.BR groff_font (@MAN5EXT@),
-.BR groff_char (@MAN7EXT@)
-.
-.
-.\" --------------------------------------------------------------------
-.SH COPYING
-.\" --------------------------------------------------------------------
-.co
index 859fe2e..41b58bd 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1994-201 Free Software Foundation, Inc.
+/* Copyright (C) 1994-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 /*
 TODO
@@ -131,23 +131,23 @@ void lj4_font::handle_unknown_font_command(const char *command,
     if (strcmp(command, command_table[i].s) == 0) {
       if (arg == 0)
        fatal_with_file_and_line(filename, lineno,
-                                "`%1' command requires an argument",
+                                "'%1' command requires an argument",
                                 command);
       char *ptr;
       long n = strtol(arg, &ptr, 10);
       if (n == 0 && ptr == arg)
        fatal_with_file_and_line(filename, lineno,
-                                "`%1' command requires numeric argument",
+                                "'%1' command requires numeric argument",
                                 command);
       if (n < command_table[i].min) {
        error_with_file_and_line(filename, lineno,
-                                "argument for `%1' command must not be less than %2",
+                                "argument for '%1' command must not be less than %2",
                                 command, command_table[i].min);
        n = command_table[i].min;
       }
       else if (n > command_table[i].max) {
        error_with_file_and_line(filename, lineno,
-                                "argument for `%1' command must not be greater than %2",
+                                "argument for '%1' command must not be greater than %2",
                                 command, command_table[i].max);
        n = command_table[i].max;
       }
@@ -230,7 +230,7 @@ lj4_printer::lj4_printer(int ps)
   if (font::papersize) {
     int n = lookup_paper_size(font::papersize);
     if (n < 0)
-      error("unknown paper size `%1'", font::papersize);
+      error("unknown paper size '%1'", font::papersize);
     else
       paper_size = n;
   }
@@ -532,7 +532,7 @@ void lj4_printer::draw(int code, int *p, int np, const environment *env)
       break;
     }
   default:
-    error("unrecognised drawing command `%1'", char(code));
+    error("unrecognised drawing command '%1'", char(code));
     break;
   }
 }
@@ -640,7 +640,7 @@ int main(int argc, char **argv)
       {
        int n = lookup_paper_size(optarg);
        if (n < 0)
-         error("unknown paper size `%1'", optarg);
+         error("unknown paper size '%1'", optarg);
        else
          user_paper_size = n;
        break;
diff --git a/src/devices/grolj4/lj4_font.5.man b/src/devices/grolj4/lj4_font.5.man
new file mode 100644 (file)
index 0000000..e78168e
--- /dev/null
@@ -0,0 +1,263 @@
+.TH LJ4_FONT @MAN5EXT@ "@MDATE@" "groff @VERSION@"
+.SH NAME
+lj4_font \- groff fonts for use with devlj4
+.
+.
+.\" ====================================================================
+.\" Legal Terms
+.\" ====================================================================
+.\"
+.\" Copyright (C) 2004-2018 Free Software Foundation, Inc.
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of
+.\" this manual under the conditions for verbatim copying, provided that
+.\" the entire resulting derived work is distributed under the terms of
+.\" a permission notice identical to this one.
+.\"
+.\" Permission is granted to copy and distribute translations of this
+.\" manual into another language, under the above conditions for
+.\" modified versions, except that this permission notice may be
+.\" included in translations approved by the Free Software Foundation
+.\" instead of in the original English.
+.
+.
+.\" ====================================================================
+.SH DESCRIPTION
+.\" ====================================================================
+.
+Nominally,
+all Hewlett-Packard LaserJet\~\%4-series and newer printers have the
+same internal fonts:
+45 scalable fonts and one bitmapped Lineprinter font.
+.
+The scalable fonts are available in sizes between 0.25 points and 999.75
+points,
+in 0.25-point increments;
+the Lineprinter font is available only in 8.5-point size.
+.
+.
+.LP
+The LaserJet font files included with
+.B groff
+assume that all printers since the LaserJet\~4 are identical.
+.
+There are some differences between fonts in the earlier and more recent
+printers,
+however.
+.
+The LaserJet\~4 printer used Agfa Intellifont technology for 35 of the
+internal scalable fonts;
+the remaining 10 scalable fonts were TrueType.
+.
+Beginning with the LaserJet\~\%4000-series printers introduced in 1997,
+all scalable internal fonts have been TrueType.
+.
+The number of printable glyphs differs slightly between Intellifont and
+TrueType fonts
+(generally,
+the TrueType fonts include more glyphs),
+and
+there are some minor differences in glyph metrics.
+.
+Differences among printer models are described in the
+.I "PCL\~5 Comparison Guide"
+and the
+.I "PCL\~5 Comparison Guide Addendum"
+(for printers introduced since approximately 2001).
+.
+.
+.LP
+LaserJet printers reference a glyph by a combination of a 256-glyph
+symbol set and an index within that symbol set.
+.
+Many glyphs appear in more than one symbol set;
+all combinations of symbol set and index that reference the same glyph
+are equivalent.
+.
+For each glyph,
+.BR hpftodit (@MAN1EXT@)
+searches a list of symbol sets,
+and selects the first set that contains the glyph.
+.
+The printing code generated by
+.B hpftodit
+is an integer that encodes a numerical value for the symbol set in the
+high byte(s),
+and the index in the low byte.
+.
+See
+.BR groff_font (@MAN5EXT@)
+for a complete description of the font file format;
+symbol sets are described in greater detail in the
+.IR "PCL\~5 Printer Language Technical Reference Manual" .
+.
+.
+.LP
+Two of the scalable fonts,
+Symbol and Wingdings,
+are bound to 256-glyph symbol sets;
+the remaining scalable fonts,
+as well as the Lineprinter font,
+support numerous symbol sets,
+sufficient to enable printing of more than 600 glyphs.
+.
+.
+.LP
+The metrics generated by
+.B hpftodit
+assume that the DESC file contains values of 1200 for
+.I res
+and 6350 for
+.IR unitwidth ,
+or any combination
+(e.g.,
+2400 and 3175)
+for which
+.IR res \~\[tmu]\~ unitwidth \~=\~7\|620\|000.
+.
+Although HP PCL\~5 LaserJet printers support an internal resolution of
+7200 units per inch,
+they use a 16-bit signed integer for cursor positioning;
+if
+.B devlj4
+is to support U.S.\& ledger paper (11\~in\~\[mu]\~17\~in;
+in = inch),
+the maximum usable resolution is 32\|767\~\[di]\~17,
+or 1927 units per inch,
+which rounds down to 1200 units per inch.
+.
+If the largest required paper size is less
+(e.g.,
+8.5\~in\~\[mu]\~11\~in,
+or A5),
+a greater
+.I res
+(and lesser
+.IR unitwidth )
+can be specified.
+.
+.
+.\" ====================================================================
+.SH LIMITATIONS
+.\" ====================================================================
+.
+Font metrics for Intellifont fonts were provided by Tagged Font Metric
+(TFM) files originally developed by Agfa/Compugraphic.
+.
+The TFM files provided for these fonts supported 600+ glyphs and
+contained extensive lists of kerning pairs.
+.
+.
+.LP
+To accommodate developers who had become accustomed to TFM files,
+HP also provided TFM files for the 10 TrueType fonts included in the
+LaserJet\~4.
+.
+The TFM files for TrueType fonts generally included less information
+than the Intellifont TFMs,
+supporting fewer glyphs,
+and in most cases,
+providing no kerning information.
+.
+By the time the LaserJet\~4000 printer was introduced,
+most developers had migrated to other means of obtaining font metrics,
+and support for new TFM files was very limited.
+.
+The TFM files provided for the TrueType fonts in the LaserJet\~4000
+support only the Latin 2 (ISO 8859-2) symbol set,
+and include no kerning information;
+consequently,
+they are of little value for any but the most rudimentary documents.
+.
+.
+.LP
+Because the Intellifont TFM files contain considerably more information,
+they generally are preferable to the TrueType TFM files even for use
+with the TrueType fonts in the newer printers.
+.
+The metrics for the TrueType fonts are very close,
+though not identical,
+to those for the earlier Intellifont fonts of the same names.
+.
+Although most output using the Intellifont metrics with the newer
+printers is quite acceptable,
+a few glyphs may fail to print as expected.
+.
+The differences in glyph metrics may be particularly noticeable with
+composite parentheses,
+brackets,
+and braces used by
+.BR eqn (@MAN1EXT@) .
+.
+A script,
+located in
+.IR @FONTDIR@/\:devlj4/\:generate ,
+can be used to adjust the metrics for these glyphs in the special font
+\[lq]S\[rq] for use with printers that have all TrueType fonts.
+.
+.
+.LP
+At the time HP last supported TFM files,
+only version 1.0 of the Unicode standard was available.
+.
+Consequently,
+many glyphs lacking assigned code points were assigned by HP to the
+Private Use Area (PUA).
+.
+Later versions of the Unicode standard included code points outside the
+PUA for many of these glyphs.
+.
+The HP-supplied TrueType TFM files use the PUA assignments;
+TFM files generated from more recent TrueType font files require the
+later Unicode values to access the same glyphs.
+.
+Consequently,
+two different mapping files may be required:
+one for the HP-supplied TFM files,
+and one for more recent TFM files.
+.
+.
+.\" ====================================================================
+.SH FILES
+.\" ====================================================================
+.
+.TP
+.I @FONTDIR@/\:devlj4/\:DESC
+device description file
+.
+.
+.TP
+.IR @FONTDIR@/\:devlj4/\: F
+font description file for font
+.I F
+.
+.
+.TP
+.I @FONTDIR@/\:devlj4/\:generate
+corrects Intellifont-based height metrics for several glyphs in the
+special font for TrueType CG Times (LaserJet\~4000 and later).
+.
+.
+.\" ====================================================================
+.SH "SEE ALSO"
+.\" ====================================================================
+.
+.BR groff (@MAN1EXT@),
+.BR hpftodit (@MAN1EXT@),
+.BR grolj4 (@MAN1EXT@),
+.BR groff_font (@MAN5EXT@)
+.
+.
+.\" ====================================================================
+.\" Editor settings
+.\" ====================================================================
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" fill-column: 72
+.\" End:
+.\" vim: set filetype=groff textwidth=72:
diff --git a/src/devices/grolj4/lj4_font.man b/src/devices/grolj4/lj4_font.man
deleted file mode 100644 (file)
index fff7209..0000000
+++ /dev/null
@@ -1,225 +0,0 @@
-.tr ~
-.TH LJ4_FONT @MAN5EXT@ "@MDATE@" "Groff Version @VERSION@"
-.SH NAME
-lj4_font \- groff fonts for use with devlj4
-.
-.
-.\" license
-.de co
-Copyright \[co] 2004-2014 Free Software Foundation, Inc.
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the
-entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
-Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be included in
-translations approved by the Free Software Foundation instead of in
-the original English.
-..
-.
-.\" Like TP, but if specified indent is more than half
-.\" the current line-length - indent, use the default indent.
-.de Tp
-.ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP
-.el .TP "\\$1"
-..
-.
-.tr ~
-.\" --------------------------------------------------------------------
-.SH DESCRIPTION
-.\" --------------------------------------------------------------------
-.
-Nominally, all Hewlett-Packard LaserJet~4\(enseries and newer printers
-have the same internal fonts: 45 scalable fonts and one bitmapped
-Lineprinter font.
-.
-The scalable fonts are available in sizes between 0.25 point and
-999.75 points, in 0.25-point increments; the Lineprinter font is
-available only in 8.5-point size.
-.
-.
-.LP
-The LaserJet font files included with
-.B groff
-assume that all printers since the LaserJet~4 are identical.
-.
-There are some differences between fonts in the earlier and more
-recent printers, however.
-.
-The LaserJet~4 printer used Agfa Intellifont technology for 35 of the
-internal scalable fonts; the remaining 10 scalable fonts were
-TrueType.
-.
-Beginning with the LaserJet~4000\(enseries printers introduced in
-1997, all scalable internal fonts have been TrueType.
-.
-The number of printable glyphs differs slightly between Intellifont
-and TrueType fonts (generally, the TrueType fonts include more
-glyphs), and there are some minor differences in glyph metrics.
-.
-Differences among printer models are described in the
-.I "PCL~5 Comparison Guide"
-and the
-.I "PCL~5 Comparison Guide Addendum"
-(for printers introduced since approximately 2001).
-.
-.
-.LP
-LaserJet printers reference a glyph by a combination of a 256-glyph
-symbol set and an index within that symbol set.
-.
-Many glyphs appear in more than one symbol set; all combinations of
-symbol set and index that reference the same glyph are equivalent.
-.
-For each glyph,
-.BR hpftodit (@MAN1EXT@)
-searches a list of symbol sets, and selects the first set that
-contains the glyph.
-.
-The printing code generated by
-.BR hpftodit (@MAN1EXT@)
-is an integer that encodes a numerical value for the symbol set in the
-high byte(s), and the index in the low byte.
-.
-See
-.BR groff_font (@MAN5EXT@)
-for a complete description of the font file format; symbol sets are
-described in greater detail in the
-.IR "PCL~5 Printer Language Technical Reference Manual" .
-.
-.
-.LP
-Two of the scalable fonts, Symbol and Wingdings, are bound to
-256-glyph symbol sets; the remaining scalable fonts, as well as the
-Lineprinter font, support numerous symbol sets, sufficient to enable
-printing of more than 600 glyphs.
-.
-.
-.LP
-The metrics generated by
-.BR hpftodit (@MAN1EXT@)
-assume that the DESC file contains values of 1200 for res and 6350 for
-unitwidth (or any combination (e.g., 2400 and 3175) for which
-res~\(mu~unitwidth~=~7\|620\|000).
-.
-Although HP PCL~5 LaserJet printers support an internal resolution of
-7200 units per inch, they use a 16-bit signed integer for cursor
-positioning; if
-.B devlj4
-is to support U.S.\& ledger paper (11"~\(mu~17"), the maximum usable
-resolution is 32\|767~/~17, or 1927, units per inch, which rounds down
-to 1200 units per inch.
-.
-If the largest required paper size is less (e.g., 8.5"~\(mu~11" or
-A5), a greater resolution (and lesser unitwidth) can be specified.
-.
-.
-.\" --------------------------------------------------------------------
-.SH LIMITATIONS
-.\" --------------------------------------------------------------------
-.
-Font metrics for Intellifont fonts were provided by Tagged Font Metric
-(TFM) files originally developed by Agfa/Compugraphic.
-.
-The TFM files provided for these fonts supported 600+ glyphs and
-contained extensive lists of kern pairs.
-.
-.
-.LP
-To accommodate developers who had become accustomed to TFM files, HP also
-provided TFM files for the 10 TrueType fonts included in the LaserJet~4.
-.
-The TFM files for TrueType fonts generally included less information
-than the Intellifont TFMs, supporting fewer glyphs, and in most cases,
-providing no kerning information.
-.
-By the time the LaserJet~4000 printer was introduced, most
-developers had migrated to other means of obtaining font metrics,
-and support for new TFM files was very limited.
-.
-The TFM files provided for the TrueType fonts in the LaserJet~4000
-support only the Latin 2 (ISO 8859-2) symbol set, and include no kerning
-information; consequently, they are of little value for any but the most
-rudimentary documents.
-.
-.
-.LP
-Because the Intellifont TFM files contain considerably more
-information, they generally are preferable to the TrueType TFM files
-even for use with the TrueType fonts in the newer printers.
-.
-The metrics for the TrueType fonts are very close, though not identical,
-to those for the earlier Intellifont fonts of the same names.
-.
-Although most output using the Intellifont metrics with the newer
-printers is quite acceptable, a few glyphs may fail to print as
-expected.
-.
-The differences in glyph metrics may be particularly noticeable with
-composite parentheses, brackets, and braces used by
-.BR eqn (@MAN1EXT@) .
-.
-A script, located in
-.BR @FONTDIR@/devlj4/generate ,
-can be used to adjust the metrics for these glyphs in the special font S
-for use with printers that have all TrueType fonts.
-.
-.
-.LP
-At the time HP last supported TFM files, only Version 1 of the Unicode
-standard was available.
-.
-Consequently, many glyphs lacking assigned code points were assigned by
-HP to the Private Use Area (PUA).
-.
-Later versions of the Unicode standard included code points outside the
-PUA for many of these glyphs.
-.
-The HP-supplied TrueType TFM files use the PUA assignments;
-TFM files generated from more recent TrueType font files require the
-later Unicode values to access the same glyphs.
-.
-Consequently, two different mapping files may be required: one for the
-HP-supplied TFM files, and one for more recent TFM files.
-.
-.
-.\" --------------------------------------------------------------------------
-.SH FILES
-.\" --------------------------------------------------------------------------
-.
-.Tp \w'\fB@FONTDIR@/devlj4/DESC'u+2n
-.B @FONTDIR@/devlj4/DESC
-Device description file.
-.TP
-.BI @FONTDIR@/devlj4/ F
-Font description file for font
-.IR F .
-.
-.
-.\" --------------------------------------------------------------------
-.SH "SEE ALSO"
-.\" --------------------------------------------------------------------
-.ad 0
-.BR groff (@MAN1EXT@),
-.BR groff_diff (@MAN1EXT@),
-.BR hpftodit (@MAN1EXT@),
-.BR grolj4 (@MAN1EXT@),
-.BR groff_font (@MAN5EXT@)
-.
-.
-.\" --------------------------------------------------------------------
-.SH COPYING
-.\" --------------------------------------------------------------------
-.co
-.
-.
-.\" Local Variables:
-.\" mode: nroff
-.\" End:
diff --git a/src/devices/gropdf/Makefile.sub b/src/devices/gropdf/Makefile.sub
deleted file mode 100644 (file)
index d3c868d..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-# Makefile.sub for `gropdf'
-#
-# File position: <groff-source>/src/devices/gropbf/Makefile.sub
-#
-# Copyright (C) 2011-2014  Free Software Foundation, Inc.
-#      Written by Deri James <deri@chuzzlewit.demon.co.uk>
-#
-# This file is part of groff.
-#
-# groff 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.
-#
-# groff 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 <http://www.gnu.org/licenses/>.
-#
-########################################################################
-
-MAN1=\
-  gropdf.n \
-  pdfmom.n
-
-CMDFILES=\
-  gropdf \
-  pdfmom
-
-MOSTLYCLEANADD=\
-  gropdf \
-  pdfmom \
-  $(MAN1)
-
-RM=rm -f
-
-all: gropdf pdfmom
-
-
-gropdf: gropdf.pl $(SH_DEPS_SED_SCRIPT)
-       $(RM) $@
-       sed -f $(SH_DEPS_SED_SCRIPT) \
-           -e "s|@VERSION@|$(version)$(revision)|" \
-           -e "s|@PERL@|$(PERL)|" \
-           -e "s|@GROFF_FONT_DIR@|$(fontpath)|" \
-           -e "s|@RT_SEP@|$(RT_SEP)|" $(srcdir)/gropdf.pl >$@
-       chmod +x $@
-
-pdfmom: pdfmom.pl $(SH_DEPS_SED_SCRIPT)
-       $(RM) $@
-       sed -f $(SH_DEPS_SED_SCRIPT) \
-           -e "s|@VERSION@|$(version)$(revision)|" \
-           -e "s|@PERL@|$(PERL)|" $(srcdir)/pdfmom.pl >$@
-       chmod +x $@
-
-install_data:
-       -test -d $(DESTDIR)$(bindir) || $(mkinstalldirs) $(DESTDIR)$(bindir)
-       for f in $(CMDFILES); do \
-         $(RM) $(DESTDIR)$(bindir)/$$f; \
-         $(INSTALL_SCRIPT) $$f $(DESTDIR)$(bindir)/$$f; \
-       done
-
-uninstall_sub:
-       -for f in $(CMDFILES); do $(RM) $(DESTDIR)$(bindir)/$$f; done
-
-########################################################################
-# Emacs settings
-########################################################################
-#
-# Local Variables:
-# mode: makefile
-# End:
similarity index 56%
rename from src/devices/gropdf/gropdf.man
rename to src/devices/gropdf/gropdf.1.man
index 3bbace6..8b6e959 100644 (file)
@@ -1,66 +1,66 @@
-.\" -*- nroff -*-
-.TH GROPDF @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
+.TH GROPDF @MAN1EXT@ "@MDATE@" "groff @VERSION@"
 .SH NAME
 gropdf \- PDF driver for groff
 .
 .
-.\" license
-.de co
-Copyright \[co] 2011-2014 Free Software Foundation, Inc.
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the
-entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
-Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be included in
-translations approved by the Free Software Foundation instead of in
-the original English.
-..
+.\" Save and disable compatibility mode (for, e.g., Solaris 10/11).
+.do nr gropdf_C \n[.C]
+.cp 0
+.
+.
+.\" ====================================================================
+.\" Legal Terms
+.\" ====================================================================
+.\"
+.\" Copyright (C) 2011-2018 Free Software Foundation, Inc.
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of
+.\" this manual under the conditions for verbatim copying, provided that
+.\" the entire resulting derived work is distributed under the terms of
+.\" a permission notice identical to this one.
+.\"
+.\" Permission is granted to copy and distribute translations of this
+.\" manual into another language, under the above conditions for
+.\" modified versions, except that this permission notice may be
+.\" included in translations approved by the Free Software Foundation
+.\" instead of in the original English.
 .
-.\" Like TP, but if specified indent is more than half
-.\" the current line-length - indent, use the default indent.
-.de Tp
-.  ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP
-.  el .TP "\\$1"
-..
 .
 .de FT
 .  if '\\*(.T'ps' .ft \\$1
 .  if '\\*(.T'pdf' .ft \\$1
 ..
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH SYNOPSIS
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .SY gropdf
-.OP \-delvs
+.OP \-dels
 .OP \-F dir
-\#.OP \-I dir
-.OP \-p papersize
+.OP \-I dir
+.OP \-p paper-size
 \#.OP \-w n
+.RB [ \-u
+.RI [ cmapfile ]]
 .OP \-y foundry
-.OP \-u [cmapfile]
-.RI [ files
-.IR .\|.\|. ]
+.RI [ file
+\&.\|.\|.\&]
 .YS
 .
+.SY gropdf
+.B \-v
+.SY gropdf
+.B \-\-version
+.YS
 .
-.LP
-It is possible to have whitespace between a command line option and its
-parameter.
-.
-.
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH DESCRIPTION
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .B gropdf
 translates the output of GNU
@@ -93,21 +93,23 @@ is run by
 options can be passed to
 .B gropdf
 using
-.BR groff \[aq]s
+.BR groff 's
 .B \-P
 option.
 .
 .
 .LP
-See section
-.B FONT INSTALLATION
-below for a guide how to install fonts for
+See section \[lq]Font Installation\[rq] below for a guide how to install
+fonts for
 .BR gropdf .
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH OPTIONS
-.\" --------------------------------------------------------------------
+.\" ====================================================================
+.
+Whitespace is permitted between a command-line option and its argument.
+.
 .
 .TP
 .B \-d
@@ -115,49 +117,46 @@ Include debug information as comments within the PDF.
 .
 Also produces an uncompressed PDF.
 .
+.
 .TP
 .B \-e
-Force all fonts to be embedded in the PDF.
+Forces
+.B gropdf
+to embed
+.I all
+fonts (even the 14 base PDF fonts).
+.
 .
 .TP
-.BI \-F dir
+.BI \-F " dir"
 Prepend directory
-.IB dir /dev name
+.IR dir /dev name
 to the search path for font, and device description files;
 .I name
 is the name of the device, usually
 .BR pdf .
 .
-.\" .TP
-.\" .BI \-I dir
-.\" This option may be used to add a directory to the search path for
-.\" files on the command line and files named in
-.\" .B \[rs]X'ps: import'
-.\" and
-.\" .B \[rs]X'ps: file'
-.\" escapes.
-.\" .
-.\" The search path is initialized with the current directory.
-.\" .
-.\" This option may be specified more than once; the directories are then
-.\" searched in the order specified (but before the current directory).
-.\" .
-.\" If you want to make the current directory be read before other directories,
-.\" add
-.\" .B \-I.\&
-.\" at the appropriate place.
-.\" .
-.\" .IP
-.\" No directory search is performed for files with an absolute file name.
-.\" .
-.\" .TP
+.TP
+.BI \-I " dir"
+This option may be used to add a directory to the search path for
+files named in
+.B \[rs]X'pdf: pdfpic'
+escape.
+.
+The current directory is always searched first.
+.
+This option may be specified more than once; the directories are then
+searched in the order specified.
+.
+.IP
+No directory search is performed for files with an absolute file name.
 .
 .TP
 .B \-l
-Print the document in landscape format.
+Orient the document in landscape format.
 .
 .TP
-.BI \-p paper-size
+.BI \-p " paper-size"
 Set physical dimension of output medium.
 .
 This overrides the
@@ -166,65 +165,64 @@ This overrides the
 and
 .B paperwidth
 commands in the
-.B DESC
+.I DESC
 file; it accepts the same arguments as the
 .B papersize
 command.
 .
 See
-.B groff_font (@MAN5EXT@)
+.BR groff_font (@MAN5EXT@)
 for details.
 .
-.\" .TP
-.\" .BI \-w n
-.\" Lines should be drawn using a thickness of
-.\" .IR n \~\c
-.\" thousandths of an em.
-.\" .
-.\" If this option is not given, the line thickness defaults to 0.04\~em.
-.\" .
-.
-.TP
-.B \-v
-Print the version number.
-.
-.TP
-.BI \-y foundry
-Set the foundry to use for selecting fonts of the same name.
-.
-.TP
-.B \-e
-Forces
-.B gropdf
-to embed ALL fonts (even the 14 base PDF fonts).
 .
 .TP
 .B \-s
 Append a comment line to end of PDF showing statistics,
 i.e.\& number of pages in document.
 .
-Ghostscript\[aq]s
+Ghostscript's
 .B ps2pdf
 complains about this line if it is included, but works anyway.
 .
+.
 .TP
-.B \-u
-.TQ
-.BI \-u cmapfilename
+.B \-u\c
+.RI " [" cmapfile ]
 .B Gropdf
 normally includes a ToUnicode CMap with any font created using
-.B text.enc
+.I text.enc
 as the encoding file,
 this makes it easier to search for words which contain ligatures.
 .
 You can include your own CMap by specifying a
-.I cmapfilename
+.I cmapfile
 or have no CMap at all by omitting the argument.
 .
 .
-.\" --------------------------------------------------------------------
+.TP
+.B \-v
+.TQ
+.B \-\-version
+Print the version number and exit.
+.
+.
+.\" .TP
+.\" .BI \-w n
+.\" Lines should be drawn using a thickness of
+.\" .IR n \~\c
+.\" thousandths of an em.
+.\" .
+.\" If this option is not given, the line thickness defaults to 0.04\~em.
+.\" .
+.\" .
+.TP
+.BI \-y " foundry"
+Set the foundry to use for selecting fonts of the same name.
+.
+.
+.\" ====================================================================
 .SH USAGE
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The input to
 .B gropdf
@@ -253,19 +251,19 @@ The device description file must contain a valid paper size; see
 for more information.
 .
 .B gropdf
-uses the same Type\~1 Adobe postscript fonts as the
+uses the same Type\~1 Adobe PostScript fonts as the
 .B grops
 device driver.
 .
 Although the PDF Standard allows the use of other font types (like
-TrueType) this implementation only accepts the Type\~1 postscript
+TrueType) this implementation only accepts the Type\~1 PostScript
 font.
 .
 Fewer Type\~1 fonts are supported natively in PDF documents than the
 standard 35 fonts supported by
 .B grops
-and all postscript printers, but all the fonts are available since any
-which aren\[aq]t supported natively are automatically embedded in the
+and all PostScript printers, but all the fonts are available since any
+which aren't supported natively are automatically embedded in the
 PDF.
 .
 .
@@ -275,7 +273,7 @@ supports the concept of foundries, that is different versions of basically
 the same font.
 .
 During install a
-.B Foundry
+.I Foundry
 file controls where fonts are found and builds
 .B groff
 fonts from the files it discovers on your system.
@@ -340,7 +338,7 @@ Fonts may be in PFA or PFB format.
 Any downloadable fonts which should, when required, be included by
 .B gropdf
 must be listed in the file
-.BR @FONTDIR@/devpdf/download ;
+.IR @FONTDIR@/devpdf/download ;
 this should consist of lines of the form
 .
 .IP
@@ -369,7 +367,7 @@ is searched for using the same mechanism that is used
 for groff font metric files.
 .
 The
-.B download
+.I download
 file itself is also searched for using this mechanism;
 currently, only the first found file in the font path is used.
 .
@@ -615,7 +613,7 @@ There are also some special fonts called
 for the PS Symbol font.
 .
 The lower case greek characters are automatically slanted (to match
-the SymbolSlanted font (SS) available to postscript).
+the SymbolSlanted font (SS) available to PostScript).
 .
 Zapf Dingbats is available as
 .BR ZD ,
@@ -629,18 +627,7 @@ The default color for
 .B \[rs]m
 and
 .B \[rs]M
-is black; for colors defined in the \[oq]rgb\[cq] color space
-.B setrgbcolor
-is used, for \[oq]cmy\[cq] and \[oq]cmyk\[cq]
-.BR setcmykcolor ,
-and for \[oq]gray\[cq]
-.BR setgray .
-.
-Note that
-.B setcmykcolor
-is a PostScript LanguageLevel\~2 command and thus not available on
-some older printers.
-.
+is black.
 .
 .LP
 .B gropdf
@@ -708,15 +695,68 @@ macros installed by using
 .I \-m pdfmark
 or
 .I \-m mspdf
-(see documentation in \[oq]pdfmark.pdf\[cq]).
+(see documentation in
+.IR pdfmark.pdf ).
 .
 A subset of these macros are installed automatically when you use
 .B \-Tpdf
 so you should not need to use \[oq]\-m pdfmark\[cq] for using most of
 the PDF functionality.
 .
+.LP
+.B gropdf
+also supports a subset of the commands introduced in present.tmac.
+Specifically it supports:-
+.IP
+PAUSE
+.br
+BLOCKS
+.br
+BLOCKE
 .
 .LP
+Which allows you to create presentation type PDFs.
+Many of the other
+commands are already available in other macro packages.
+.LP
+These commands are implemented with
+.B groff
+X commands:-
+.LP
+.TP
+.B "\[rs]X'ps: exec %%%%PAUSE"
+The section before this is treated as a block and is introduced using the
+current BLOCK transition setting (see \[oq]pdf: transition\[cq] below).
+This command
+can be introduced using the macro
+.BR .pdfpause .
+.TP
+.B "\[rs]X'ps: exec %%%%BEGINONCE"
+Any text following this command (up to %%%%ENDONCE) is shown only once,
+the next %%%%PAUSE will remove it.
+If producing a non presentation pdf, i.e.\&
+ignoring the pauses, see
+.I \%GROPDF_NOSLIDE
+below, this text is ignored.
+.LP
+.TP
+.B "\[rs]X'ps: exec %%%%ENDONCE"
+This terminates the block defined by %%%%BEGINONCE.
+This pair of commands
+is what implements the .BLOCKS Once/.BLOCKE commands in present.tmac.
+.LP
+The
+.B mom
+macro set already has integration with these extensions so you can build
+slides with
+.BR mom .
+.LP
+If you use present.tmac with
+.B gropdf
+there is no need to run the program
+.BR presentps (@MAN1EXT@)
+since the output will already be a presentation pdf.
+.LP
 All other
 .B ps:
 tags are silently ignored.
@@ -789,7 +829,7 @@ is specified as zero then the width is scaled in proportion to the height.
 .
 .\" .IP
 .\" See
-.\" .BR groff_tmac (@MAN5EXT@)
+.\" .BR groff_tmac (@MAN7EXT@)
 .\" for a description of the
 .\" .B PSPIC
 .\" macro which provides a convenient high-level interface for inclusion of
@@ -840,10 +880,206 @@ respectively.
 .
 These macros must only be used within page traps.)
 .
+.TP
+.BR "\[rs]X'pdf: transition'" "feature mode duration dimension motion direction scale bool"
+where
+.IP
+.I feature
+can be either SLIDE or BLOCK.
+When it is SLIDE the transition is used
+when a new slide is introduced to the screen, if BLOCK then this transition
+is used for the individual blocks which make up the slide.
+.br
+.I mode
+is the transition type between slides:-
+.RS
+.IP
+.B Split
+- Two lines sweep across the screen, revealing the new page.
+The lines
+may be either horizontal or vertical and may move inward from the
+edges of the page or outward from the center, as specified by the
+.I dimension
+and
+.I motion
+entries, respectively.
+.br
+.B Blinds
+- Multiple lines, evenly spaced across the screen, synchronously
+sweep in the same direction to reveal the new page.
+The lines may be
+either horizontal or vertical, as specified by the
+.I dimension
+ entry.
+Horizontal
+lines move downward; vertical lines move to the right.
+.br
+.B Box
+- A rectangular box sweeps inward from the edges of the page or
+outward from the center, as specified by the
+.I motion
+entry, revealing the new page.
+.br
+.B Wipe
+- A single line sweeps across the screen from one edge to the other in
+the direction specified by the
+.I direction
+entry, revealing the new page.
+.br
+.B Dissolve
+- The old page dissolves gradually to reveal the new one.
+.br
+.B Glitter
+- Similar to Dissolve, except that the effect sweeps across the page in a
+wide band moving from one side of the screen to the other in the
+direction specified by the
+.I direction
+entry.
+.br
+.B R
+- The new page simply replaces the old one with no special transition
+effect; the
+.I direction
+entry shall be ignored.
+.br
+.B Fly
+- (PDF 1.5) Changes are flown out or in (as specified by
+.IR motion ),
+in the
+direction specified by
+.IR direction ,
+to or from a location that is offscreen except
+when
+.I direction
+is
+.BR None .
+.br
+.B Push
+- (PDF 1.5) The old page slides off the screen while the new page
+slides in, pushing the old page out in the direction specified by
+.IR direction .
+.br
+.B Cover
+- (PDF 1.5) The new page slides on to the screen in the direction
+specified by
+.IR direction ,
+covering the old page.
+.br
+.B Uncover
+- (PDF 1.5) The old page slides off the screen in the direction
+specified by
+.IR direction ,
+uncovering the new page in the direction
+specified by
+.IR direction .
+.br
+.B Fade
+- (PDF 1.5) The new page gradually becomes visible through the
+old one.
+.LP
+.RE
+.IP
+.I duration
+is the length of the transition in seconds (default 1).
+.LP
+.IP
+.I dimension
+(Optional;
+.BR Split " and " Blinds
+transition styles only) The dimension in which the
+specified transition effect shall occur:
+.B H
+Horizontal, or
+.B V
+Vertical.
+.LP
+.IP
+.I motion
+(Optional;
+.BR Split ,
+.BR Box " and " Fly
+transition styles only) The direction of motion for
+the specified transition effect:
+.B I
+Inward from the edges of the page, or
+.B O
+Outward from the center of the page.
+.LP
+.IP
+.I direction
+(Optional;
+.BR Wipe ,
+.BR Glitter ,
+.BR Fly ,
+.BR Cover ,
+.BR Uncover " and " Push
+transition styles only)
+The direction in which the specified transition effect shall moves, expressed in
+degrees counterclockwise starting from a left-to-right direction.
+If the value is a number, it shall be one of:
+.B 0
+= Left to right,
+.B 90
+= Bottom to top (Wipe only),
+.B 180
+= Right to left (Wipe only),
+.B 270
+= Top to bottom,
+.B 315
+= Top-left to bottom-right (Glitter only)
+The value can be
+.BR None ,
+which is relevant only for the
+.B Fly
+transition when the value of
+.I scale
+is not 1.0.
+.LP
+.IP
+.I scale
+(Optional; PDF 1.5;
+.B Fly
+transition style only) The starting or ending scale at
+which the changes shall be drawn.
+If
+.I motion
+specifies an inward transition, the scale
+of the changes drawn shall progress from
+.I scale
+to 1.0 over the course of the
+transition.
+If
+.I motion
+specifies an outward transition, the scale of the changes drawn
+shall progress from 1.0 to
+.I scale
+over the course of the transition
+.LP
+.IP
+.I bool
+(Optional; PDF 1.5;
+.B Fly
+transition style only) If
+.BR true ,
+the area that shall be flown
+in is rectangular and opaque.
+.LP
+.IP
+This command can be used by calling the macro
+.B .pdftransition
+using the parameters described above.
+Any of the parameters may be
+replaced with a "." which signifies the parameter retains its
+previous value, also any trailing missing parameters are ignored.
+.LP
+.IP
+.B Note:
+not all PDF Readers support any or all these transitions.
+.LP
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS Importing graphics
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .B gropdf
 only supports importing other PDF files as graphics.
@@ -893,17 +1129,17 @@ You may find that
 will now load successfully.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS TrueType and other font formats
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .B gropdf
 does not support any other fonts except Adobe Type 1 (PFA or PFB).
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH FONT INSTALLATION
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 This section gives a summary of the above explanations; it can serve
 as a step-by-step font installation guide for
@@ -925,7 +1161,7 @@ The very first line in a PFA/PFB file contains this:
 .
 .RS
 .IP
-.B %!PS-AdobeFont-1.0:
+.B %!PS\-AdobeFont\-1.0:
 .RE
 .
 .IP
@@ -941,11 +1177,11 @@ An example call is
 .
 .RS
 .IP
-afmtodit Foo-Bar-Bold.afm map/textmap FBB
+afmtodit Foo\-Bar\-Bold.afm map/textmap FBB
 .RE
 .
 .IP
-which converts the metric file \[oq]Foo-Bar-Bold.afm\[cq] to the groff
+which converts the metric file \[oq]Foo\-Bar\-Bold.afm\[cq] to the groff
 font \[oq]FBB\[cq].
 .
 If you have a font family which comes with normal, bold, italic, and
@@ -955,10 +1191,10 @@ bold italic faces, it is recommended to use the letters
 .BR I ,
 and
 .BR BI ,
-respectively, as postfixes in the groff font names to make groff\[aq]s
+respectively, as postfixes in the groff font names to make groff's
 \[oq].fam\[cq] request work.
 .
-An example is groff\[aq]s built-in Times-Roman font: The font family
+An example is groff's built-in Times-Roman font: The font family
 name is
 .BR T ,
 and the groff font names are
@@ -972,34 +1208,37 @@ and
 Install both the groff font description files and the fonts in a
 \[oq]devpdf\[cq] subdirectory of the font path which groff finds.
 .
-See the
-.B ENVIRONMENT
-section in the
-.BR troff (@MAN1EXT@)
-man page which lists the actual value of the font path.
+See section \[lq]Environment\[rq] in
+.BR @g@troff (@MAN1EXT@)
+for the actual value of the font path.
 .
-Note that groff doesn\[aq]t use the AFM files (but it is a good idea to
+Note that groff doesn't use the AFM files (but it is a good idea to
 store them anyway).
 .
 .LI
 Register all fonts which must be downloaded to the printer in the
-\[oq]devpdf/download\[cq] file.
+.I devpdf/download
+file.
 .
 Only the first occurrence of this file in the font path is read.
 .
-This means that you should copy the default \[oq]download\[cq] file to
-the first directory in your font path and add your fonts there.
+This means that you should copy the default
+.I download
+file to the first directory in your font path and add your fonts there.
 .
 To continue the above example we assume that the PS font name for
-Foo-Bar-Bold.pfa is \[oq]XY-Foo-Bar-Bold\[cq] (the PS font name is
+Foo\-Bar\-Bold.pfa is \[oq]XY\-Foo\-Bar\-Bold\[cq] (the PS font name is
 stored in the
 .B internalname
-field in the \[oq]FBB\[cq] file) and belongs to foundry \[oq]F\[]cq]
-thus the following line should be added to \[oq]download\[cq]:
+field in the
+.I FBB
+file) and belongs to foundry \[oq]F\[cq]
+thus the following line should be added to
+.IR download :
 .
 .RS
 .IP
-.B F XY-Foo-Bar-Bold Foo-Bar-Bold.pfa
+.B F XY\-Foo\-Bar\-Bold Foo\-Bar\-Bold.pfa
 .
 .
 .LP
@@ -1008,19 +1247,21 @@ field should be null for the default foundry.
 .RE
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH ENVIRONMENT
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .TP
-.SM
-.B GROFF_FONT_PATH
+.I GROFF_FONT_PATH
 A list of directories in which to search for the
-.BI dev name
+.IR dev name
 directory in addition to the default ones.
 .
-If, in the \[oq]download\[cq] file, the
-font file has been specified with a full path, no directories are searched.
+If, in the
+.I download
+file,
+the font file has been specified with a full path,
+no directories are searched.
 .
 See
 .BR @g@troff (@MAN1EXT@)
@@ -1029,21 +1270,33 @@ and
 for more details.
 .
 .
-.\" --------------------------------------------------------------------
+.TP
+.I GROPDF_NOSLIDE
+If this is set true,
+.B gropdf
+will ignore all commands which produce a presentation pdf,
+and produce a normal pdf instead.
+.TP
+.I SOURCE_DATE_EPOCH
+A timestamp (expressed as seconds since the Unix epoch) to use as the
+creation timestamp in place of the current time.
+.
+.
+.\" ====================================================================
 .SH FILES
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
-.Tp \w'\fB@FONTDIR@/devpdf/download'u+2n
-.B @FONTDIR@/devpdf/DESC
+.TP
+.I @FONTDIR@/devpdf/DESC
 Device description file.
 .
 .TP
-.BI @FONTDIR@/devpdf/ F
+.IR @FONTDIR@/devpdf/ F
 Font description file for font\~\c
 .IR F .
 .
 .TP
-.BI @FONTDIR@/devpdf/ U-F
+.IR @FONTDIR@/devpdf/ U\-F
 Font description file for font\~\c
 .I F
 (using foundry\~\c
@@ -1051,19 +1304,19 @@ Font description file for font\~\c
 rather than the default foundry).
 .
 .TP
-.B @FONTDIR@/devpdf/download
+.I @FONTDIR@/devpdf/download
 List of downloadable fonts.
 .
 .TP
-.B @FONTDIR@/devpdf/Foundry
+.I @FONTDIR@/devpdf/Foundry
 A Perl script used during install to locate suitable fonts.
 .
 .TP
-.B @FONTDIR@/devpdf/enc/text.enc
+.I @FONTDIR@/devpdf/enc/text.enc
 Encoding used for text fonts.
 .
 .TP
-.B @MACRODIR@/pdf.tmac
+.I @MACRODIR@/pdf.tmac
 Macros for use with
 .BR gropdf ;
 automatically loaded by
@@ -1079,30 +1332,25 @@ automatically loaded by
 .\" .
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "SEE ALSO"
-.\" --------------------------------------------------------------------
-.
-.ad l
+.\" ====================================================================
 .
 .BR \%afmtodit (@MAN1EXT@),
 .BR groff (@MAN1EXT@),
-.BR grops (@MAN1EXT@),
 .BR @g@troff (@MAN1EXT@),
-.BR grops (@MAN1EXT@),
-.BR \%pfbtops (@MAN1EXT@),
-.BR \%groff_out (@MAN5EXT@),
 .BR \%groff_font (@MAN5EXT@),
-.BR \%groff_char (@MAN7EXT@),
-.BR \%groff_tmac (@MAN5EXT@)
+.BR \%groff_out (@MAN5EXT@)
+.\" Not actually referenced in above discussion.
+.\" .BR \%pfbtops (@MAN1EXT@),
+.\" .BR \%groff_tmac (@MAN5EXT@),
 .
 .
-.\" --------------------------------------------------------------------
-.SH LICENSE
-.\" --------------------------------------------------------------------
-.co
+.\" Restore compatibility mode (for, e.g., Solaris 10/11).
+.cp \n[gropdf_C]
 .
 .
 .\" Local Variables:
 .\" mode: nroff
 .\" End:
+.\" vim: set filetype=groff:
diff --git a/src/devices/gropdf/gropdf.am b/src/devices/gropdf/gropdf.am
new file mode 100644 (file)
index 0000000..f035995
--- /dev/null
@@ -0,0 +1,60 @@
+# Copyright (C) 2011-2018 Free Software Foundation, Inc.
+#  Original Makefile.sub written by Deri James <deri@chuzzlewit.demon.co.uk>.
+#  Automake migration by Bertrand Garrigues
+#
+# Last update: 22 Aug 2015
+#
+# This file is part of groff.
+#
+# groff 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.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+
+gropdf_dir = $(top_srcdir)/src/devices/gropdf
+
+bin_SCRIPTS += gropdf pdfmom
+EXTRA_DIST += \
+  src/devices/gropdf/TODO \
+  src/devices/gropdf/gropdf.pl \
+  src/devices/gropdf/pdfmom.pl \
+  src/devices/gropdf/gropdf.1.man \
+  src/devices/gropdf/pdfmom.1.man
+
+man1_MANS += \
+  src/devices/gropdf/gropdf.1 \
+  src/devices/gropdf/pdfmom.1
+
+gropdf: $(gropdf_dir)/gropdf.pl $(SH_DEPS_SED_SCRIPT)
+       $(AM_V_GEN)$(RM) $@ \
+       && sed -f $(SH_DEPS_SED_SCRIPT) \
+              -e "s|[@]VERSION[@]|$(VERSION)|" \
+              -e "s|[@]PERL[@]|$(PERL)|" \
+              -e "s|[@]GROFF_FONT_DIR[@]|$(fontpath)|" \
+              -e "s|[@]RT_SEP[@]|$(RT_SEP)|" $(gropdf_dir)/gropdf.pl \
+              >$@ \
+       && chmod +x $@
+
+pdfmom: $(gropdf_dir)/pdfmom.pl $(SH_DEPS_SED_SCRIPT)
+       $(AM_V_GEN)$(RM) $@ \
+       && sed -f $(SH_DEPS_SED_SCRIPT) \
+              -e "s|[@]VERSION[@]|$(VERSION)|" \
+              -e "s|[@]RT_SEP[@]|$(RT_SEP)|" \
+              -e "s|[@]PERL[@]|$(PERL)|" $(gropdf_dir)/pdfmom.pl \
+              >$@ \
+       && chmod +x $@
+
+
+########################################################################
+### Emacs settings
+# Local Variables:
+# mode: makefile-automake
+# End:
index 035d123..2ec52d0 100644 (file)
@@ -2,8 +2,8 @@
 #
 #      gropdf          : PDF post processor for groff
 #
-# Copyright (C) 2011-201 Free Software Foundation, Inc.
-#      Written by Deri James <deri@chuzzlewit.demon.co.uk>
+# Copyright (C) 2011-2018 Free Software Foundation, Inc.
+#      Written by Deri James <deri@chuzzlewit.myzen.co.uk>
 #
 # This file is part of groff.
 #
 
 use strict;
 use Getopt::Long qw(:config bundling);
-use Compress::Zlib;
+
+use constant
+{
+    WIDTH              => 0,
+    CHRCODE            => 1,
+    PSNAME             => 2,
+    ASSIGNED           => 3,
+    USED               => 4,
+};
+
+my $gotzlib=0;
+
+my $rc = eval
+{
+  require Compress::Zlib;
+  Compress::Zlib->import();
+  1;
+};
+
+if($rc)
+{
+  $gotzlib=1;
+}
+else
+{
+    Msg(0,"Perl module Compress::Zlib not available - cannot compress this pdf");
+}
 
 my %cfg;
 
@@ -95,12 +121,24 @@ my $wt=-1;
 my $thislev=1;
 my $mark=undef;
 my $suspendmark=undef;
+
+
+
 my $n_flg=1;
 my $pginsert=-1;    # Growth point for kids array
 my %pgnames;        # 'names' of pages for switchtopage
 my @outlines=();    # State of Bookmark Outlines at end of each page
 my $custompaper=0;  # Has there been an X papersize
 my $textenccmap=''; # CMap for groff text.enc encoding
+my @XOstream=();
+my @PageAnnots={};
+my $noslide=0;
+my $transition={PAGE => {Type => '/Trans', S => '', D => 1, Dm => '/H', M => '/I', Di => 0, SS => 1.0, B => 0},
+               BLOCK => {Type => '/Trans', S => '', D => 1, Dm => '/H', M => '/I', Di => 0, SS => 1.0, B => 0}};
+my $firstpause=0;
+my $present=0;
+
+$noslide=1 if exists($ENV{GROPDF_NOSLIDE}) and $ENV{GROPDF_NOSLIDE};
 
 my %ppsz=(     'ledger'=>[1224,792],
        'legal'=>[612,1008],
@@ -163,10 +201,13 @@ my $debug=0;
 my $version=0;
 my $stats=0;
 my $unicodemap;
+my @idirs;
 
 #Load_Config();
 
-GetOptions("F=s" => \$fd, 'l' => \$frot, 'p=s' => \$fpsz, 'd!' => \$debug, 'v' => \$version, 'e' => \$embedall, 'y=s' => \$Foundry, 's' => \$stats, 'u:s' => \$unicodemap);
+GetOptions("F=s" => \$fd, 'I=s' => \@idirs, 'l' => \$frot, 'p=s' => \$fpsz, 'd!' => \$debug, 'v' => \$version, 'version' => \$version, 'e' => \$embedall, 'y=s' => \$Foundry, 's' => \$stats, 'u:s' => \$unicodemap);
+
+unshift(@idirs,'.');
 
 if ($version)
 {
@@ -239,13 +280,14 @@ elsif (exists($ppsz{$papersz}))
     @defaultmb=@mediabox=(0,0,$ppsz{$papersz}->[0],$ppsz{$papersz}->[1]);
 }
 
-my (@dt)=localtime(time);
+my (@dt)=localtime($ENV{SOURCE_DATE_EPOCH} || time);
 my $dt=PDFDate(\@dt);
 
 my %info=('Creator' => "(groff version $cfg{GROFF_VERSION})",
                                'Producer' => "(gropdf version $cfg{GROFF_VERSION})",
                                'ModDate' => "($dt)",
                                'CreationDate' => "($dt)");
+
 while (<>)
 {
     chomp;
@@ -298,14 +340,34 @@ while (<>)
 
 }
 
+exit 0 if $lct==0;
 
 if ($cpageno > 0)
 {
-    $cpage->{MediaBox}=\@mediabox if $custompaper;
-    PutObj($cpageno);
-    OutStream($cpageno+1);
+       my $trans='BLOCK';
+
+       $trans='PAGE' if $firstpause;
+
+       if (scalar(@XOstream))
+       {
+           MakeXO() if $stream;
+           $stream=join("\n",@XOstream)."\n";
+       }
+
+       my %t=%{$transition->{$trans}};
+       $cpage->{MediaBox}=\@mediabox if $custompaper;
+       $cpage->{Trans}=FixTrans(\%t) if $t{S};
+
+       if ($#PageAnnots >= 0)
+       {
+           @{$cpage->{Annots}}=@PageAnnots;
+       }
+
+       PutObj($cpageno);
+       OutStream($cpageno+1);
 }
 
+$cat->{PageMode}='/FullScreen' if $present;
 
 PutOutlines(\@outlev);
 
@@ -318,13 +380,24 @@ PutObj($objct);
 foreach my $fontno (keys %fontlst)
 {
     my $o=$fontlst{$fontno}->{FNT};
+
+    foreach my $ch (@{$o->{NO}})
+    {
+       my $psname=$o->{NAM}->{$ch->[1]}->[PSNAME] || '/.notdef';
+       my $wid=$o->{NAM}->{$ch->[1]}->[WIDTH] || 0;
+
+       push(@{$o->{DIFF}},$psname);
+       push(@{$o->{WIDTH}},$wid);
+       last if $#{$o->{DIFF}} >= 255;
+    }
+    unshift(@{$o->{DIFF}},0);
     my $p=GetObj($fontlst{$fontno}->{OBJ});
 
     if (exists($p->{LastChar}) and $p->{LastChar} > 255)
     {
        $p->{LastChar} = 255;
-       splice(@{$o->{GNO}},256);
-       splice(@{$o->{WID}},256);
+       splice(@{$o->{DIFF}},256);
+       splice(@{$o->{WIDTH}},256);
     }
 }
 
@@ -465,7 +538,7 @@ sub GetObj
 sub PDFDate
 {
     my $dt=shift;
-    return(sprintf("D:%04d%02d%02d%02d%02d%02d% +02d'00'",$dt->[5]+1900,$dt->[4]+1,$dt->[3],$dt->[2],$dt->[1],$dt->[0],( localtime time() + 3600*( 12 - (gmtime)[2] ) )[2] - 12));
+    return(sprintf("D:%04d%02d%02d%02d%02d%02d%+03d'00'",$dt->[5]+1900,$dt->[4]+1,$dt->[3],$dt->[2],$dt->[1],$dt->[0],( localtime time() + 3600*( 12 - (gmtime)[2] ) )[2] - 12));
 }
 
 sub ToPoints
@@ -521,26 +594,36 @@ sub Load_Config
 sub LoadDownload
 {
     my $f;
+    my $found=0;
 
-    OpenFile(\$f,$fontdir,"download");
-    Msg(1,"Failed to open 'download'") if !defined($f);
+    my (@dirs)=split($cfg{RT_SEP},$fontdir);
 
-    while (<$f>)
+    foreach my $dir (@dirs)
     {
-       chomp;
-       s/#.*$//;
-       next if $_ eq '';
-       my ($foundry,$name,$file)=split(/\t+/);
-       if (substr($file,0,1) eq '*')
+       $f=undef;
+       OpenFile(\$f,$dir,"download");
+       next if !defined($f);
+       $found++;
+
+       while (<$f>)
        {
-           next if !$embedall;
-           $file=substr($file,1);
+           chomp;
+           s/#.*$//;
+           next if $_ eq '';
+           my ($foundry,$name,$file)=split(/\t+/);
+           if (substr($file,0,1) eq '*')
+           {
+               next if !$embedall;
+               $file=substr($file,1);
+           }
+
+           $download{"$foundry $name"}=$file;
        }
 
-       $download{"$foundry $name"}=$file;
+       close($f);
     }
 
-    close($f);
+    Msg(1,"Failed to open 'download'") if !$found;
 }
 
 sub OpenFile
@@ -705,6 +788,53 @@ sub do_x
                $linecap=$1;
                $stream.="$linecap J\n";
            }
+           elsif ($par=~m/exec %%%%PAUSE/i and !$noslide)
+           {
+               my $trans='BLOCK';
+
+               if ($firstpause)
+               {
+                   $trans='PAGE';
+                   $firstpause=0;
+               }
+               MakeXO();
+               NewPage($trans);
+               $present=1;
+           }
+           elsif ($par=~m/exec %%%%BEGINONCE/)
+           {
+               if ($noslide)
+               {
+                   $suppress=1;
+               }
+               else
+               {
+                   my $trans='BLOCK';
+
+                   if ($firstpause)
+                   {
+                       $trans='PAGE';
+                       $firstpause=0;
+                   }
+                   MakeXO();
+                   NewPage($trans);
+                   $present=1;
+               }
+           }
+           elsif ($par=~m/exec %%%%ENDONCE/)
+           {
+               if ($noslide)
+               {
+                   $suppress=0;
+               }
+               else
+               {
+                   MakeXO();
+                   NewPage('BLOCK');
+                   $cat->{PageMode}='/FullScreen';
+                   pop(@XOstream);
+               }
+           }
            elsif ($par=~m/\[(.+) pdfmark/)
            {
                my $pdfmark=$1;
@@ -763,11 +893,18 @@ sub do_x
                    $annot->{DATA}->{Type}='/Annot';
                    FixRect($annot->{DATA}->{Rect}); # Y origin to ll
                    FixPDFColour($annot->{DATA});
-                   push(@{$cpage->{Annots}},$annotno);
+                   push(@PageAnnots,$annotno);
                }
                elsif ($pdfmark=~m/(.+) \/OUT/)
                {
-                   my @xwds=split(' ',"<< $1 >>");
+                   my $t=$1;
+                   $t=~s/\\\) /\\\\\) /g;
+                   $t=~s/\\e/\\\\/g;
+                   $t=~m/(^.*\/Title \()(.*)(\).*)/;
+                   my ($pre,$title,$post)=($1,$2,$3);
+                   $title=~s/(?<!\\)\(/\\\(/g;
+                   $title=~s/(?<!\\)\)/\\\)/g;
+                   my @xwds=split(' ',"<< $pre$title$post >>");
                    my $out=ParsePDFValue(\@xwds);
 
                    my $this=[$out,[]];
@@ -890,8 +1027,11 @@ sub do_x
                    if ($fil=~m/\.pdf$/)
                    {
                        my $bbox=$incfil{$fil}->[1];
-                       my $xscale=$wid/($bbox->[2]-$bbox->[0]+1);
-                       my $yscale=($hgt<=0)?$xscale:($hgt/($bbox->[3]-$bbox->[1]+1));
+                       my $xscale=d3($wid/($bbox->[2]-$bbox->[0]+1));
+                       my $yscale=d3(($hgt<=0)?$xscale:($hgt/($bbox->[3]-$bbox->[1]+1)));
+                       $wid=($bbox->[2]-$bbox->[0])*$xscale;
+                       $hgt=($bbox->[3]-$bbox->[1])*$yscale;
+                       $ypos+=$hgt;
                        $stream.="q $xscale 0 0 $yscale ".PutXY($xpos,$ypos)." cm";
                        $stream.=" 0 1 -1 0 0 0 cm" if $rot;
                        $stream.=" /$incfil{$fil}->[0] Do Q\n";
@@ -905,7 +1045,7 @@ sub do_x
            elsif (lc($xprm[1]) eq 'pdfpic')
            {
                my $fil=$xprm[2];
-               my $flag=uc($xprm[3])||'-L';
+               my $flag=uc($xprm[3]||'-L');
                my $wid=GetPoints($xprm[4])||-1;
                my $hgt=GetPoints($xprm[5]||-1);
                my $ll=GetPoints($xprm[6]||0);
@@ -921,8 +1061,8 @@ sub do_x
                    IsGraphic();
                    my $bbox=$incfil{$fil}->[1];
                    $wid=($bbox->[2]-$bbox->[0]) if $wid <= 0;
-                   my $xscale=$wid/($bbox->[2]-$bbox->[0]);
-                   my $yscale=($hgt<=0)?$xscale:($hgt/($bbox->[3]-$bbox->[1]));
+                   my $xscale=d3($wid/($bbox->[2]-$bbox->[0]));
+                   my $yscale=d3(($hgt<=0)?$xscale:($hgt/($bbox->[3]-$bbox->[1])));
                    $xscale=($wid<=0)?$yscale:$xscale;
                    $xscale=$yscale if $yscale < $xscale;
                    $yscale=$xscale if $xscale < $yscale;
@@ -1060,6 +1200,33 @@ sub do_x
                    }
                }
            }
+           elsif (lc($xprm[1]) eq 'transition' and !$noslide)
+           {
+               if (uc($xprm[2]) eq 'PAGE' or uc($xprm[2] eq 'SLIDE'))
+               {
+                   $transition->{PAGE}->{S}='/'.ucfirst($xprm[3]) if $xprm[3] and $xprm[3] ne '.';
+                   $transition->{PAGE}->{D}=$xprm[4] if $xprm[4] and $xprm[4] ne '.';
+                   $transition->{PAGE}->{Dm}='/'.$xprm[5] if $xprm[5] and $xprm[5] ne '.';
+                   $transition->{PAGE}->{M}='/'.$xprm[6] if $xprm[6] and $xprm[6] ne '.';
+                   $xprm[7]='/None' if $xprm[7] and uc($xprm[7]) eq 'NONE';
+                   $transition->{PAGE}->{Di}=$xprm[7] if $xprm[7] and $xprm[7] ne '.';
+                   $transition->{PAGE}->{SS}=$xprm[8] if $xprm[8] and $xprm[8] ne '.';
+                   $transition->{PAGE}->{B}=$xprm[9] if $xprm[9] and $xprm[9] ne '.';
+               }
+               elsif (uc($xprm[2]) eq 'BLOCK')
+               {
+                   $transition->{BLOCK}->{S}='/'.ucfirst($xprm[3]) if $xprm[3] and $xprm[3] ne '.';
+                   $transition->{BLOCK}->{D}=$xprm[4] if $xprm[4] and $xprm[4] ne '.';
+                   $transition->{BLOCK}->{Dm}='/'.$xprm[5] if $xprm[5] and $xprm[5] ne '.';
+                   $transition->{BLOCK}->{M}='/'.$xprm[6] if $xprm[6] and $xprm[6] ne '.';
+                   $xprm[7]='/None' if $xprm[7] and uc($xprm[7]) eq 'NONE';
+                   $transition->{BLOCK}->{Di}=$xprm[7] if $xprm[7] and $xprm[7] ne '.';
+                   $transition->{BLOCK}->{SS}=$xprm[8] if $xprm[8] and $xprm[8] ne '.';
+                   $transition->{BLOCK}->{B}=$xprm[9] if $xprm[9] and $xprm[9] ne '.';
+               }
+
+               $present=1;
+           }
        }
        elsif (lc(substr($xprm[0],0,9)) eq 'papersize')
        {
@@ -1132,7 +1299,7 @@ sub PutHotSpot
     $annot->{DATA}->{Rect}=[$mark->{xpos},$mark->{ypos}-$mark->{rsb},$endx+$mark->{lead},$mark->{ypos}-$mark->{rst}];
     FixPDFColour($annot->{DATA});
     FixRect($annot->{DATA}->{Rect}); # Y origin to ll
-    push(@{$cpage->{Annots}},$annotno);
+    push(@PageAnnots,$annotno);
 }
 
 sub sgn
@@ -1155,7 +1322,7 @@ sub GetPoints
 {
     my $val=shift;
 
-    $val=ToPoints($1,$2) if ($val=~m/(-?[\d.]+)([cipnz])/);
+    $val=ToPoints($1,$2) if ($val and $val=~m/(-?[\d.]+)([cipnz])/);
 
     return $val;
 }
@@ -1282,6 +1449,35 @@ sub LoadSWF
     return $xonm;
 }
 
+sub OpenInc
+{
+    my $fn=shift;
+    my $fnm=$fn;
+    my $F;
+
+    if (substr($fnm,0,1)  eq '/' or substr($fnm,1,1) eq ':') # dos
+    {
+       if (-r $fnm and open($F,"<$fnm"))
+       {
+           return($F,$fnm);
+       }
+    }
+    else
+    {
+       foreach my $dir (@idirs)
+       {
+           $fnm="$dir/$fn";
+
+           if (-r "$fnm" and open($F,"<$fnm"))
+           {
+               return($F,$fnm);
+           }
+       }
+    }
+
+    return(undef,$fn);
+}
+
 sub LoadPDF
 {
     my $pdfnm=shift;
@@ -1295,18 +1491,22 @@ sub LoadPDF
     my $curobj=-1;
     my $instream=0;
     my $cont;
+    my $adj=0;
+    my $keepsep=$/;
+
+    my ($PD,$PDnm)=OpenInc($pdfnm);
 
-    if (!open(PD,"<$pdfnm"))
+    if (!defined($PD))
     {
        Msg(0,"Failed to open PDF '$pdfnm'");
        return undef;
     }
 
-    my $hdr=<PD>;
+    my $hdr=<$PD>;
 
-    $/="\r" if (length($hdr) > 10);
+    $/="\r",$adj=1 if (length($hdr) > 10);
 
-    while (<PD>)
+    while (<$PD>)
     {
        chomp;
 
@@ -1343,8 +1543,8 @@ sub LoadPDF
        {
            if ($curobj > -1)
            {
-               $pdf->[$curobj]->{STREAMPOS}=[tell(PD),$strmlen];
-               seek(PD,$strmlen,1);
+               $pdf->[$curobj]->{STREAMPOS}=[tell($PD)+$adj,$strmlen];
+               seek($PD,$strmlen,1);
                $instream=1;
            }
            else
@@ -1357,9 +1557,9 @@ sub LoadPDF
        $pdftxt.=$_.' ';
     }
 
-    close(PD);
+    close($PD);
 
-    open(PD,"<$pdfnm");
+    open(PD,"<$PDnm");
 #      $pdftxt=~s/\]/ \]/g;
     my (@pdfwds)=split(' ',$pdftxt);
     my $wd;
@@ -1404,7 +1604,7 @@ sub LoadPDF
            sysseek(PD,$o->{STREAMPOS}->[0],0);
            Msg(0,'Failed to read all the stream') if $l != sysread(PD,$o->{STREAM},$l);
 
-           if (exists($o->{OBJ}->{'Filter'}) and $o->{OBJ}->{'Filter'} eq '/FlateDecode')
+           if ($gotzlib and exists($o->{OBJ}->{'Filter'}) and $o->{OBJ}->{'Filter'} eq '/FlateDecode')
            {
                $o->{STREAM}=Compress::Zlib::uncompress($o->{STREAM});
                delete($o->{OBJ }->{'Filter'});
@@ -1427,8 +1627,8 @@ sub LoadPDF
     $BBox=[0,0,595,842] if !defined($BBox);
 
     $wid=($BBox->[2]-$BBox->[0]+1) if $wid==0;
-    my $xscale=abs($wid)/($BBox->[2]-$BBox->[0]+1);
-    my $yscale=($hgt<=0)?$xscale:(abs($hgt)/($BBox->[3]-$BBox->[1]+1));
+    my $xscale=d3(abs($wid)/($BBox->[2]-$BBox->[0]+1));
+    my $yscale=d3(($hgt<=0)?$xscale:(abs($hgt)/($BBox->[3]-$BBox->[1]+1)));
     $hgt=($BBox->[3]-$BBox->[1]+1)*$yscale;
 
     if ($type eq "import")
@@ -1462,6 +1662,7 @@ sub LoadPDF
 
     BuildStream($xobj,$pdf,$pdf->[$page]->{OBJ}->{Contents});
 
+    $/=$keepsep;
     return([$xonm,$BBox] );
 }
 
@@ -1851,12 +2052,12 @@ sub PutXY
 
     if ($frot)
     {
-       return("$y $x");
+       return(d3($y)." ".d3($x));
     }
     else
     {
        $y=$mediabox[3]-$y;
-       return("$x $y");
+       return(d3($x)." ".d3($y));
     }
 }
 
@@ -1889,10 +2090,10 @@ sub PutObj
     $obj[$ono]->{XREF}=$fct;
     if (exists($obj[$ono]->{STREAM}))
     {
-       if (!$debug && !exists($obj[$ono]->{DATA}->{'Filter'}))
+       if ($gotzlib && !$debug && !exists($obj[$ono]->{DATA}->{'Filter'}))
        {
            $obj[$ono]->{STREAM}=Compress::Zlib::compress($obj[$ono]->{STREAM});
-           $obj[$ono]->{DATA}->{'Filter'}=['/FlateDecode'];
+           $obj[$ono]->{DATA}->{'Filter'}='/FlateDecode';
        }
 
        $obj[$ono]->{DATA}->{'Length'}=length($obj[$ono]->{STREAM});
@@ -1984,6 +2185,7 @@ sub LoadFont
     my @fntbbox=(0,0,0,0);
     my $capheight=0;
     my $lastchr=0;
+    my $lastnm;
     my $t1flags=0;
     my $fixwid=-1;
     my $ascent=0;
@@ -2012,7 +2214,7 @@ sub LoadFont
            $stg=3,next if lc($_) eq 'charset';
 
            my ($ch1,$ch2,$k)=split;
-           $fnt{KERN}->{$ch1}->{$ch2}=$k;
+#          $fnt{KERN}->{$ch1}->{$ch2}=$k;
        }
        else
        {
@@ -2021,15 +2223,16 @@ sub LoadFont
 
            if ($r[1] eq '"')
            {
-               $fnt{GNM}->{$r[0]}=$lastchr;
+               $fnt{NAM}->{$r[0]}=$fnt{NAM}->{$lastnm};
                next;
            }
 
            $r[0]='u0020' if $r[3] == 32;
+           $r[0]="u00".hex($r[3]) if $r[0] eq '---';
 #          next if $r[3] >255;
-           $fnt{GNM}->{$r[0]}=$r[3];
-           $fnt{GNO}->[$r[3]]='/'.$r[4];
-           $fnt{WID}->[$r[3]]=$p[0];
+           $fnt{NAM}->{$r[0]}=[$p[0],$r[3],'/'.$r[4],$r[3],0];
+           $fnt{NO}->[$r[3]]=[$r[0],$r[0]];
+           $lastnm=$r[0];
            $lastchr=$r[3] if $r[3] > $lastchr;
            $fixwid=$p[0] if $fixwid == -1;
            $fixwid=-2 if $fixwid > 0 and $p[0] != $fixwid;
@@ -2045,20 +2248,16 @@ sub LoadFont
 
     close($f);
 
-    unshift(@{$fnt{GNO}},0);
-
-    foreach my $glyph (@{$fnt{GNO}})
-    {
-       $glyph='/.notdef' if !defined($glyph);
-    }
-
-    foreach my $w (@{$fnt{WID}})
+    foreach my $j (0..$lastchr)
     {
-       $w=0 if !defined($w);
+       $fnt{NO}->[$j]=['',''] if !defined($fnt{NO}->[$j]);
     }
 
     my $fno=0;
     my $slant=0;
+    $fnt{DIFF}=[];
+    $fnt{WIDTH}=[];
+    $fnt{NAM}->{''}=[0,-1,'/.notdef',-1,0];
     $slant=-$fnt{'slant'} if exists($fnt{'slant'});
     $fnt{'spacewidth'}=700 if !exists($fnt{'spacewidth'});
 
@@ -2077,12 +2276,12 @@ sub LoadFont
                        {'Type' => '/Font',
                        'Subtype' => '/Type1',
                        'BaseFont' => '/'.$fnt{internalname},
-                       'Widths' => $fnt{WID},
+                       'Widths' => $fnt{WIDTH},
                        'FirstChar' => 0,
                        'LastChar' => $lastchr,
                        'Encoding' => BuildObj($objct+1,
                                    {'Type' => '/Encoding',
-                                   'Differences' => $fnt{GNO}
+                                   'Differences' => $fnt{DIFF}
                                    }
                                    ),
                        'FontDescriptor' => BuildObj($objct+2,
@@ -2095,7 +2294,7 @@ sub LoadFont
                                        'Descent' => $fntbbox[1],
                                        'CapHeight' => $capheight,
                                        'StemV' => 0,
-                                       'CharSet' => "($charset)",
+#                                      'CharSet' => "($charset)",
                                        'FontFile' => BuildObj($objct+3,
                                                    {'Length1' => $l1,
                                                    'Length2' => $l2,
@@ -2121,14 +2320,31 @@ sub LoadFont
                        {'Type' => '/Font',
                        'Subtype' => '/Type1',
                        'BaseFont' => '/'.$fnt{internalname},
+                       'Widths' => $fnt{WIDTH},
+                       'FirstChar' => 0,
+                       'LastChar' => $lastchr,
                        'Encoding' => BuildObj($objct+1,
                                    {'Type' => '/Encoding',
-                                   'Differences' => $fnt{GNO}
+                                   'Differences' => $fnt{DIFF}
                                    }
-                                   )
+                                   ),
+                       'FontDescriptor' => BuildObj($objct+2,
+                                       {'Type' => '/FontDescriptor',
+                                       'FontName' => '/'.$fnt{internalname},
+                                       'Flags' => $t1flags,
+                                       'FontBBox' => \@fntbbox,
+                                       'ItalicAngle' => $slant,
+                                       'Ascent' => $ascent,
+                                       'Descent' => $fntbbox[1],
+                                       'CapHeight' => $capheight,
+                                       'StemV' => 0,
+                                       'CharSet' => "($charset)",
+                                       }
+                                       )
                        }
                        );
-       $objct+=1;
+
+       $objct+=2;
        $fontlst{$fontno}->{NM}='/F'.$fontno;
        $pages->{'Resources'}->{'Font'}->{'F'.$fontno}=$fontlst{$fontno}->{OBJ};
        $fontlst{$fontno}->{FNT}=\%fnt;
@@ -2160,130 +2376,108 @@ sub GetType1
 
     OpenFile(\$f,$fontdir,"$file");
     Msg(1,"Failed to open '$file'") if !defined($f);
-    binmode($f);
 
-    my $l=<$f>;
+    $head=GetChunk($f,1,"currentfile eexec");
+    $body=GetChunk($f,2,"00000000") if !eof($f);
+    $tail=GetChunk($f,3,"cleartomark") if !eof($f);
 
-    if (substr($l,0,1) eq "\x80")
-    {
-       # PFB file
-       sysseek($f,0,0);
-       my $hdr='';
-       $l1=$l2=$l3=0;
-       my $typ=0;
-       my $data='';
-       my $sl=0;
+    $l1=length($head);
+    $l2=length($body);
+    $l3=length($tail);
 
-       while ($typ != 3)
-       {
-           my $chk=sysread($f,$hdr,6);
+    return($l1,$l2,$l3,"$head$body$tail");
+}
 
-           if ($chk < 2)
-           {
-               # eof($f) uses buffered i/o (since file was open not sysopen)
-               # which screws up next sysread. So this will terminate loop if font
-               # has no terminating section type 3.
-               last if $l3;
-               return(5,$l2,$l3,undef);
-           }
+sub GetChunk
+{
+    my $F=shift;
+    my $segno=shift;
+    my $ascterm=shift;
+    my ($type,$hdr,$chunk,@msg);
+    binmode($F);
+    my $enc="ascii";
 
-           $typ=ord(substr($hdr,1,1));
+    while (1)
+    {
+       # There may be multiple chunks of the same type
 
-           if ($chk == 6)
-           {
-               $sl=unpack('L',substr($hdr,2,4));
-               $chk=sysread($f,$data,$sl);
-               return(1,$l2,$l3,undef) if $chk != $sl;
-           }
+       my $ct=read($F,$hdr,2);
 
-           if ($typ == 1)
+       if ($ct==2)
+       {
+           if (substr($hdr,0,1) eq "\x80")
            {
-               if ($l2 == 0)
-               {
-                   # First text bit(s) must be head
-                   $head.=$data;
-                   $l1+=$sl;
-               }
-               else
+               # binary chunk
+
+               my $chunktype=ord(substr($hdr,1,1));
+               $enc="binary";
+
+               if (defined($type) and $type != $chunktype)
                {
-                   # A text bit after the binary sections must be tail
-                   $tail.=$data;
-                   $l3+=$sl;
+                   seek($F,-2,1);
+                   last;
                }
-           }
-           elsif ($typ == 2)
-           {
-               return(2,$l2,$l3,undef) if $l3; # Found a binary bit after the tail
-               $body.=$data;
-               $l2+=$sl;
-           }
-           elsif ($typ != 3)
-           {
-               # What segment type is this!
-               return(3,$l2,$l3,undef);
-           }
-       }
 
-       close($f);
-       return($l1,$l2,$l3,"$head$body$tail");
-    }
+               $type=$chunktype;
+               return if $chunktype == 3;
 
-    my (@lines)=(<$f>);
-    unshift(@lines,$l);
+               $ct=read($F,$hdr,4);
 
-    close($f);
+               Msg(1,"Failed to read binary segment length"), return if $ct != 4;
 
-    Msg(1,"Font file '$file' must be an Adobe type 1 font file") if $lines[0]!~m/\%\!PS.Adobe/i;
-    $head=$body=$tail='';
+               my $sl=unpack('V',$hdr);
+               my $data;
+               my $chk=read($F,$data,$sl);
 
-    foreach my $line (@lines)
-    {
-       if (!defined($l1))
-       {
-           if (length($line) > 19 and $line=~s/^(currentfile eexec)//)
-           {
-               $head.=$1;
-               $l1=length($head);
-               redo;
-           }
-
-           $head.=$line;
+               Msg(1 ,"Failed to read binary segment"), return if $chk != $sl;
 
-           if ($line=~m/eexec$/)
-           {
-               #                               chomp($head);
-               #                               $head.="\x0d";
-               $l1=length($head);
-           }
-       }
-       elsif (!defined($l2))
-       {
-           #$line=~s/(\0\0)0+$/&1/;
-           if ($line=~m/^0+$/)
-           {
-               $l2=length($body);
-               $tail=$line;
+               $chunk.=$data;
            }
            else
            {
-               chomp($line);
-               $body.=pack('H*',$line);
+               # ascii chunk
+
+               my $hex=0;
+               seek($F,-2,1);
+               my $ct=0;
+
+               while (1)
+               {
+                   my $lin=<$F>;
+
+                   last if !$lin;
+
+                   $hex=1,$enc.=" hex" if $segno == 2 and !$ct and $lin=~m/^[A-F0-9a-f]{4,4}/;
+
+                   if ($segno !=2 and $lin=~m/^(.*$ascterm\n?)(.*)/)
+                   {
+                       $chunk.=$1;
+                       seek($F,-length($2)-1,1) if $2;
+                       last;
+                   }
+                   elsif ($segno == 2 and $lin=~m/^(.*?)($ascterm.*)/)
+                   {
+                       $chunk.=$1;
+                       seek($F,-length($2)-1,1) if $2;
+                       last;
+                   }
+
+                   chomp($lin), $lin=pack('H*',$lin) if $hex;
+                   $chunk.=$lin; $ct++;
+               }
+
+               last;
            }
        }
        else
        {
-           $tail.=$line;
+           push(@msg,"Failed to read 2 header bytes");
        }
     }
 
-    $l1=length($head);
-    $l2=length($body);
-    $l3=length($tail);
-
-    return($l1,$l2,$l3,"$head$body$tail");
+    return $chunk;
 }
 
-
 sub OutStream
 {
     my $ono=shift;
@@ -2298,11 +2492,54 @@ sub OutStream
 
 sub do_p
 {
+    my $trans='BLOCK';
+
+    $trans='PAGE' if $firstpause;
+    NewPage($trans);
+    @XOstream=();
+    @PageAnnots=();
+    $firstpause=1;
+}
+
+sub FixTrans
+{
+    my $t=shift;
+    my $style=$t->{S};
+
+    if ($style)
+    {
+       delete($t->{Dm}) if $style ne '/Split' and $style ne '/Blinds';
+       delete($t->{M})  if !($style eq '/Split' or $style eq '/Box' or $style eq '/Fly');
+       delete($t->{Di}) if !($style eq '/Wipe' or $style eq '/Glitter' or $style eq '/Fly' or $style eq '/Cover' or $style eq '/Uncover' or $style eq '/Push') or ($style eq '/Fly' and $t->{Di} eq '/None' and $t->{SS} != 1);
+       delete($t->{SS}) if !($style eq '/Fly');
+       delete($t->{B})  if !($style eq '/Fly');
+    }
+
+    return($t);
+}
+
+sub NewPage
+{
+    my $trans=shift;
     # Start of pages
 
     if ($cpageno > 0)
     {
+       if ($#XOstream>=0)
+       {
+           MakeXO() if $stream;
+           $stream=join("\n",@XOstream,'');
+       }
+
+       my %t=%{$transition->{$trans}};
        $cpage->{MediaBox}=\@mediabox if $custompaper;
+       $cpage->{Trans}=FixTrans(\%t) if $t{S};
+
+       if ($#PageAnnots >= 0)
+       {
+           @{$cpage->{Annots}}=@PageAnnots;
+       }
+
        PutObj($cpageno);
        OutStream($cpageno+1);
     }
@@ -2325,24 +2562,45 @@ sub do_p
     $objct+=1;
     $cpage=$obj[$cpageno]->{DATA};
     $pages->{'Count'}++;
-    $stream="q 1 0 0 1 0 0 cm\n$linejoin J\n$linecap j\n";
+    $stream="q 1 0 0 1 0 0 cm\n$linejoin J\n$linecap j\n0.4 w\n";
     $stream.=$strkcol."\n", $curstrk=$strkcol if $strkcol ne '';
     $mode='g';
     $curfill='';
 #    @mediabox=@defaultmb;
 }
 
+sub MakeXO
+{
+    $stream.="%mode=$mode\n";
+    IsGraphic();
+    $stream.="Q\n";
+    my $xobj=++$objct;
+    my $xonm="XO$xobj";
+    $pages->{'Resources'}->{'XObject'}->{$xonm}=BuildObj($xobj,{'Type' => '/XObject', 'BBox' => \@mediabox, 'Name' => "/$xonm", 'FormType' => 1, 'Subtype' => '/Form', 'Length' => 0, 'Type' => "/XObject"});
+    $obj[$xobj]->{STREAM}=$stream;
+    $stream='';
+    push(@XOstream,"q") if $#XOstream==-1;
+    push(@XOstream,"/$xonm Do");
+}
+
 sub do_f
 {
     my $par=shift;
+    my $fnt=$fontlst{$par}->{FNT};
 
 #      IsText();
     $cft="$par";
     $fontchg=1;
 #      $stream.="/F$cft $cftsz Tf\n" if $cftsz;
     $widtbl=CacheWid($par);
-    $origwidtbl=$fontlst{$par}->{FNT}->{WID};
-    $krntbl=$fontlst{$par}->{FNT}->{KERN};
+    $origwidtbl=[];
+
+    foreach my $w (@{$fnt->{NO}})
+    {
+       push(@{$origwidtbl},$fnt->{NAM}->{$w->[1]}->[WIDTH]);
+    }
+
+#     $krntbl=$fnt->{KERN};
 }
 
 sub CacheWid
@@ -2351,7 +2609,7 @@ sub CacheWid
 
     if (!defined($fontlst{$par}->{CACHE}->{$cftsz}))
     {
-       $fontlst{$par}->{CACHE}->{$cftsz}=BuildCache($fontlst{$par}->{FNT}->{WID});
+       $fontlst{$par}->{CACHE}->{$cftsz}=BuildCache($fontlst{$par}->{FNT});
     }
 
     return($fontlst{$par}->{CACHE}->{$cftsz});
@@ -2359,13 +2617,15 @@ sub CacheWid
 
 sub BuildCache
 {
-    my $wid=shift;
-    return([]);
+    my $fnt=shift;
     my @cwid;
+    $origwidtbl=[];
 
-    foreach my $w (@{$wid})
+    foreach my $w (@{$fnt->{NO}})
     {
-       push(@cwid,$w*$cftsz);
+       my $wid=(defined($w) and defined($w->[1]))?$fnt->{NAM}->{$w->[1]}->[WIDTH]:0;
+       push(@cwid,$wid*$cftsz);
+       push(@{$origwidtbl},$wid);
     }
 
     return(\@cwid);
@@ -2512,22 +2772,22 @@ sub set_col
     if ($mcmd eq 'c')
     {
        # Text CMY
-       return(($c[0]/65535).' '.($c[1]/65535).' '.($c[2]/65535)." 0 $oper[1]");
+       return(d3($c[0]/65535).' '.d3($c[1]/65535).' '.d3($c[2]/65535)." 0 $oper[1]");
     }
     elsif ($mcmd eq 'k')
     {
        # Text CMYK
-       return(($c[0]/65535).' '.($c[1]/65535).' '.($c[2]/65535).' '.($c[3]/65535)." $oper[1]");
+       return(d3($c[0]/65535).' '.d3($c[1]/65535).' '.d3($c[2]/65535).' '.d3($c[3]/65535)." $oper[1]");
     }
     elsif ($mcmd eq 'g')
     {
        # Text Grey
-       return(($c[0]/65535)." $oper[0]");
+       return(d3($c[0]/65535)." $oper[0]");
     }
     elsif ($mcmd eq 'r')
     {
        # Text RGB0
-       return(($c[0]/65535).' '.($c[1]/65535).' '.($c[2]/65535)." $oper[2]");
+       return(d3($c[0]/65535).' '.d3($c[1]/65535).' '.d3($c[2]/65535)." $oper[2]");
     }
 }
 
@@ -2683,7 +2943,7 @@ sub do_D
        $ypos+=$p[1];
        $stream.=PutXY($xpos,$ypos)." l\n";
 
-       $stream.="s\n";
+       $stream.="S\n";
        $poschg=1;
     }
     elsif ($Dcmd eq 't')
@@ -2866,6 +3126,16 @@ sub PutLine
     $pendmv-=$nomove;
     $lin[$#lin]->[1]=-$pendmv/$cftsz if ($pendmv != 0);
 
+    foreach my $wd (@lin)
+    {
+       next if !defined($wd->[0]);
+       $wd->[0]=~s/\\/\\\\/g;
+       $wd->[0]=~s/\(/\\(/g;
+       $wd->[0]=~s/\)/\\)/g;
+       $wd->[0]=~s/!\|!\|/\\/g;
+       $wd->[1]=d3($wd->[1]);
+    }
+
     if (0)
     {
        if (scalar(@lin) == 1 and (!defined($lin[0]->[1]) or $lin[0]->[1] == 0))
@@ -2967,6 +3237,11 @@ sub PutLine
     $wt=-1;
 }
 
+sub d3
+{
+    return(sprintf("%.3f",shift || 0));
+}
+
 sub  LoadAhead
 {
     my $no=shift;
@@ -3005,11 +3280,11 @@ sub do_V
     {
        $xpos=substr($ahead[0],1)/$unitwidth;
 
+       $nomove=$pendmv=0;
        @ahead=();
 
     }
 
-#    $nomove=$pendmv=0;
     $poschg=1;
 }
 
@@ -3017,7 +3292,7 @@ sub do_v
 {
     my $par=shift;
 
-    PutLine();
+    PutLine() if $mode eq 't';
 
     $ypos+=$par/$unitwidth;
 
@@ -3027,6 +3302,7 @@ sub do_v
 sub TextWid
 {
     my $txt=shift;
+    my $fnt=shift;
     my $w=0;
     my $ck=0;
 
@@ -3045,6 +3321,7 @@ sub TextWid
 sub do_t
 {
     my $par=shift;
+    my $fnt=$fontlst{$cft}->{FNT};
 
     if ($kernadjust != $curkern)
     {
@@ -3053,9 +3330,44 @@ sub do_t
        $curkern=$kernadjust;
     }
 
-    my $wid=TextWid($par);
+    my $par2=$par;
+    $par2=~s/^!\|!\|(\d\d\d)/chr(oct($1))/e;
+
+    foreach my $j (0..length($par2)-1)
+    {
+       my $cn=ord(substr($par2,$j,1));
+       my $chnm=$fnt->{NAM}->{$fnt->{NO}->[$cn]->[1]};
+
+       if ($chnm->[USED]==0)
+       {
+           $chnm->[USED]=1;
+       }
+       elsif ($fnt->{NO}->[$cn]->[0] ne $fnt->{NO}->[$cn]->[1])
+       {
+           # A glyph has already been remapped to this char, so find a spare
+
+           my $cn2=RemapChr($cn,$fnt,$fnt->{NO}->[$cn]->[0]);
+           $stream.="% MMM Remap $cn to $cn2\n" if $debug;
+
+           if ($cn2)
+           {
+               substr($par2,$j,1)=chr($cn2);
+
+               if ($par=~m/^!\|!\|(\d\d\d)/)
+               {
+                   substr($par,4,3)=sprintf("%03o",$cn2);
+               }
+               else
+               {
+                   substr($par,$j,1)=chr($cn2);
+               }
+           }
+       }
+    }
+    my $wid=TextWid($par2,$fnt);
+
+    $par=reverse(split('',$par)) if $xrev and $par!~m/^!\|!\|(\d\d\d)/;
 
-    $par=reverse(split('',$par)) if $xrev;
     if ($n_flg and defined($mark))
     {
        $mark->{ypos}=$ypos;
@@ -3069,9 +3381,6 @@ sub do_t
     $xpos+=($pendmv-$nomove)/$unitwidth;
 
     $stream.="% == '$par'=$wid 'xpos=$xpos\n" if $debug;
-    $par=~s/\\(?!\d\d\d)/\\\\/g;
-    $par=~s/\)/\\)/g;
-    $par=~s/\(/\\(/g;
 
     # $pendmv = 'h' move since last 't'
     # $nomove = width of char(s) added by 'C', 'N' or 'c'
@@ -3181,12 +3490,11 @@ sub do_H
 sub do_C
 {
     my $par=shift;
-    my $nm;
 
-    ($par,$nm)=FindChar($par);
+    my ($par2,$nm)=FindChar($par);
 
-    do_t($par);
-    $nomove=$nm;
+    do_t($par2);
+    $nomove=$fontlst{$cft}->{FNT}->{NAM}->{$par}->[WIDTH]*$cftsz ;
 }
 
 sub FindChar
@@ -3194,12 +3502,13 @@ sub FindChar
     my $chnm=shift;
     my $fnt=$fontlst{$cft}->{FNT};
 
-    if (exists($fnt->{GNM}->{$chnm}))
+    if (exists($fnt->{NAM}->{$chnm}))
     {
-       my $ch=$fnt->{GNM}->{$chnm};
+       my $ch=$fnt->{NAM}->{$chnm}->[ASSIGNED];
        $ch=RemapChr($ch,$fnt,$chnm) if ($ch > 255);
+       $fnt->{NAM}->{$chnm}->[USED]=0 if $fnt->{NO}->[$ch]->[1] eq $chnm;
 
-       return(($ch<32)?sprintf("\\%03o",$ch):chr($ch),$fnt->{WID}->[$ch]*$cftsz);
+       return(($ch<32)?sprintf("!|!|%03o",$ch):chr($ch),$widtbl->[$ch]);
     }
     else
     {
@@ -3214,17 +3523,33 @@ sub RemapChr
     my $chnm=shift;
     my $unused=0;
 
-    foreach my $un (2..$#{$fnt->{GNO}})
+    foreach my $un (0..$#{$fnt->{NO}})
+    {
+       next if $un >= 139 and $un <= 144;
+       $unused=$un,last if $fnt->{NO}->[$un]->[1] eq '';
+    }
+
+    if (!$unused)
     {
-       $unused=$un,last if $fnt->{GNO}->[$un] eq '/.notdef';
+       foreach my $un (128..255)
+       {
+           next if $un >= 139 and $un <= 144;
+           my $glyph=$fnt->{NO}->[$un]->[1];
+           $unused=$un,last if $fnt->{NAM}->{$glyph}->[USED] == 0;
+       }
     }
 
-    if (--$unused <= 255)
+    if ($unused && $unused <= 255)
     {
-       $fnt->{GNM}->{$chnm}=$unused++;
-       $fnt->{GNO}->[$unused]=$fnt->{GNO}->[$ch+1];
-       $fnt->{WID}->[$unused]=$fnt->{WID}->[$ch+1];
-       $ch=$unused-1;
+       my $glyph=$fnt->{NO}->[$unused]->[1];
+       delete($fontlst{$cft}->{CACHE}->{$cftsz});
+       $fnt->{NAM}->{$chnm}->[ASSIGNED]=$unused;
+       $fnt->{NO}->[$unused]->[1]=$chnm;
+       $widtbl=CacheWid($cft);
+
+       $stream.="% AAA Assign $chnm ($ch) to $unused\n" if $debug;
+
+       $ch=$unused;
        return($ch);
     }
     else
@@ -3242,34 +3567,27 @@ sub do_c
     $par=substr($par,0,1);
     my $ch=ord($par);
     do_N($ch);
-    $nomove=$fontlst{$cft}->{FNT}->{WID}->[$ch]*$cftsz;
 }
 
 sub do_N
 {
     my $par=shift;
+    my $fnt=$fontlst{$cft}->{FNT};
 
-    if ($par > 255)
+    if (!defined($fnt->{NO}->[$par]))
     {
-       my $fnt=$fontlst{$cft}->{FNT};
-       my $chnm='';
-
-       foreach my $c (keys %{$fnt->{GNM}})
-       {
-           $chnm=$c,last if $fnt->{GNM}->{$c} == $par;
-       }
-
-       $par=RemapChr($par,$fnt,$chnm);
+       Msg(0,"No chr($par) in font $fnt->{internalname}");
+       return;
     }
 
-    do_t(chr($par));
-    $nomove=$fontlst{$cft}->{FNT}->{WID}->[$par]*$cftsz;
+    my $chnm=$fnt->{NO}->[$par]->[0];
+    do_C($chnm);
 }
 
 sub do_n
 {
     $gotT=0;
-    PutLine();
+    PutLine(0);
     $pendmv=$nomove=0;
     $n_flg=1;
     @lin=();
diff --git a/src/devices/gropdf/pdfmom.1.man b/src/devices/gropdf/pdfmom.1.man
new file mode 100644 (file)
index 0000000..d25abaf
--- /dev/null
@@ -0,0 +1,190 @@
+.TH PDFMOM @MAN1EXT@ "@MDATE@" "groff @VERSION@"
+.SH NAME
+pdfmom \- produce PDF documents using the mom macro package for groff
+.
+.
+.\" ====================================================================
+.\" Legal Terms
+.\" ====================================================================
+.\"
+.\" Copyright (C) 2012-2018 Free Software Foundation, Inc.
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of
+.\" this manual under the conditions for verbatim copying, provided that
+.\" the entire resulting derived work is distributed under the terms of
+.\" a permission notice identical to this one.
+.\"
+.\" Permission is granted to copy and distribute translations of this
+.\" manual into another language, under the above conditions for
+.\" modified versions, except that this permission notice may be
+.\" included in translations approved by the Free Software Foundation
+.\" instead of in the original English.
+.
+.
+.\" ====================================================================
+.SH SYNOPSIS
+.\" ====================================================================
+.
+.SY pdfmom
+.OP \-Tpdf
+.RI [ groff-options ]
+.I file
+\&.\|.\|.\&
+.YS
+.
+.SY pdfmom
+.B \-Tps
+.RI [ pdfroff-options ]
+.RI [ groff-options ]
+.I file
+\&.\|.\|.\&
+.YS
+.
+.SY pdfmom
+.B \-v
+.YS
+.
+.
+.\" ====================================================================
+.SH DESCRIPTION
+.\" ====================================================================
+.
+.I pdfmom
+is a wrapper around
+.IR groff (@MAN1EXT@)
+that facilitates the production of PDF documents from files
+formatted with the
+.I mom
+macros.
+.
+.
+.P
+.I pdfmom
+prints to the standard output,
+so output must usually be redirected to a destination file.
+The size of the final PDF can be reduced by piping the output
+through
+.IR ps2pdf (1).
+.
+.
+.P
+If called with the
+.B \-Tpdf
+option (which is the default),
+.I pdfmom
+processes files using groff's native PDF driver,
+.IR gropdf (@MAN1EXT@).
+.
+If
+.B \-Tps
+is given, processing is passed over to
+.IR pdfroff ,
+which uses
+.IR groff 's
+PostScript driver.
+.
+In either case, multiple runs of the source file are performed in
+order to satisfy any forward references in the document.
+.
+.
+.P
+.I pdfmom
+accepts all the same options as
+.IR groff .
+If
+.B \-Tps
+is given, the options associated with
+.I pdfroff
+are accepted as well.
+.
+Please note that when
+.I pdfmom
+calls
+.IR pdfroff ,
+the
+.RS
+.B \-mpdfmark \-mom \-\-no-toc
+.RE
+options are implied and should not be given on the
+command line.
+.
+Equally, it is not necessary to supply the
+.B \-mom
+or
+.B "\-m\~mom"
+options when
+.B \-Tps
+is absent.
+.
+.
+.P
+PDF integration with the
+.I mom
+macros is discussed in full in the manual
+.IR "Producing PDFs with groff and mom" ,
+which was itself produced with
+.IR pdfmom .
+.
+.
+.P
+If called with the
+.B \-v
+option,
+.I pdfmom
+simply displays its version information and exits.
+.
+.
+.\" ====================================================================
+.SH BUGS
+.\" ====================================================================
+.
+.I pdfmom
+sometimes issues warnings of the type
+.RS
+\&.\|.\|.:
+can't transparently output node at top level
+.RE
+.
+but this is more of an annoyance than a bug, and may safely be ignored.
+.
+.
+.\" ====================================================================
+.SH AUTHORS
+.\" ====================================================================
+.
+.I pfdmom
+was written by
+.MT deri@\:chuzzlewit.demon.co.uk
+Deri James
+.ME
+and
+.MT peter@\:schaffter.ca
+Peter Schaffter
+.ME .
+.
+.
+.\" ====================================================================
+.SH "SEE ALSO"
+.\" ====================================================================
+.
+.IR "Producing PDFs with groff and mom" ,
+by Deri James and Peter Schaffter;
+a copy is installed at
+.IR \%@PDFDOCDIR@/\:mom\-pdf.pdf .
+.
+.
+.P
+.IR groff (@MAN1EXT@),
+.IR gropdf (@MAN1EXT@),
+.IR pdfroff (@MAN1EXT@),
+.IR ps2pdf (1)
+.
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" End:
+.\" vim: set filetype=groff:
diff --git a/src/devices/gropdf/pdfmom.man b/src/devices/gropdf/pdfmom.man
deleted file mode 100644 (file)
index c93ed22..0000000
+++ /dev/null
@@ -1,175 +0,0 @@
-.TH PDFMOM @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
-.SH NAME
-pdfmom \- Produce PDF documents using the mom macro set
-.
-.
-.\" --------------------------------------------------------------------
-.\" Legalese
-.\" --------------------------------------------------------------------
-.
-.de co
-Copyright \[co] 2012-2014 Free Software Foundation, Inc.
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the
-entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
-Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be included in
-translations approved by the Free Software Foundation instead of in
-the original English.
-..
-.de au
-This document was written by
-.MT deri@chuzzlewit.demon.co.uk
-Deri James
-.ME
-and
-.MT peter@schaffter.ca
-Peter Schaffter
-.ME .
-..
-.
-.\" --------------------------------------------------------------------
-.SH SYNOPSIS
-.\" --------------------------------------------------------------------
-.
-.SY pdfmom
-.OP \-Tps "\fR[pdfroff options]"
-[groff options]
-.I files .\|.\|.
-.YS
-.
-.SY pdfmom
-.OP \-Tpdf
-[groff options]
-.I files .\|.\|.
-.YS
-.
-.
-.\" --------------------------------------------------------------------
-.SH DESCRIPTION
-.\" --------------------------------------------------------------------
-.
-.B pdfmom
-is a wrapper around
-.B groff
-that facilitates the production of PDF documents from files
-formatted with the mom macros.
-.
-.
-.P
-.B pdfmom
-prints to stdout, so output must be redirected to a destination
-file.  The size of the final PDF can be reduced by piping the output
-through
-.BR ps2pdf .
-.
-.
-.P
-If called with the
-.B \-Tpdf
-option (which is the default),
-.B pdfmom
-processes files using groff\[aq]s native PDF driver,
-.BR gropdf .
-.
-If
-.B \-Tps
-is given, processing is passed over to
-.BR pdfroff ,
-which uses
-.BR groff \[aq]s
-PostScript driver.
-.
-In either case, multiple runs of the source file are peformed in
-order to satisfy any forward references in the document.
-.
-.
-.P
-.B pdfmom
-accepts all the same options as
-.BR groff .
-If
-.B \-Tps
-is given, the options associated with
-.B pdfroff
-are accepted as well.
-.
-Please note that when
-.B pdfmom
-calls
-.BR pdfroff ,
-the
-.
-.P
-.RS
-.B \-mpdfmark \-mom \-\-no-toc
-.RE
-.
-.
-.P
-options are implied and should not be given on the
-command line.
-.
-Equally, it is not necessary to supply the
-.B \-mom
-or
-.B "\-m\~mom"
-options when
-.B \-Tps
-is absent.
-.
-.
-.P
-PDF integration with the
-.B mom
-macros is discussed in full in the PDF manual,
-.IR "Producing PDFs with groff and mom" .
-.
-.
-.\" --------------------------------------------------------------------
-.SH BUGS
-.\" --------------------------------------------------------------------
-.
-.B pdfmom
-sometimes issues warnings of the type
-.
-.P
-.RS 2
-\&.\|.\|.:
-.B can\[aq]t transparently output node at top level
-.RE
-.
-.P
-This is more of an annoyance than a bug, and may safely be ignored.
-.
-.
-.\" --------------------------------------------------------------------
-.SH "SEE ALSO"
-.\" --------------------------------------------------------------------
-.
-.BR groff (@MAN1EXT@),
-.BR pdfroff (@MAN1EXT@),
-.BR ps2pdf (@MAN1EXT@)
-.
-.
-.\" --------------------------------------------------------------------
-.SH "COPYING"
-.\" --------------------------------------------------------------------
-.co
-.\" --------------------------------------------------------------------
-.SH AUTHORS
-.\" --------------------------------------------------------------------
-.au
-.
-.
-.\" Local Variables:
-.\" mode: nroff
-.\" End:
index beec820..c9b08b2 100644 (file)
@@ -4,8 +4,7 @@
 #      Deri James      : Friday 16 Mar 2012
 #
 
-# Copyright (C) 2012-2014
-#      Free Software Foundation, Inc.
+# Copyright (C) 2012-2018 Free Software Foundation, Inc.
 #      Written by Deri James <deri@chuzzlewit.demon.co.uk>
 #
 # This file is part of groff.
@@ -21,7 +20,7 @@
 # for more details.
 #
 # You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 use strict;
 use File::Temp qw/tempfile/;
@@ -29,8 +28,9 @@ my @cmd;
 my $dev='pdf';
 my $preconv='';
 my $readstdin=1;
+my $RT_SEP='@RT_SEP@';
 
-$ENV{PATH}=$ENV{GROFF_BIN_PATH}.':'.$ENV{PATH} if exists($ENV{GROFF_BIN_PATH});
+$ENV{PATH}=$ENV{GROFF_BIN_PATH}.$RT_SEP.$ENV{PATH} if exists($ENV{GROFF_BIN_PATH});
 $ENV{TMPDIR}=$ENV{GROFF_TMPDIR} if exists($ENV{GROFF_TMPDIR});
 
 while (my $c=shift)
@@ -122,11 +122,11 @@ if ($readstdin)
 
 if ($dev eq 'pdf')
 {
-    system("groff -Tpdf -dPDF.EXPORT=1 -mom -z $cmdstring 2>&1 | grep '^\.ds' | groff -Tpdf -mom - $preconv $cmdstring");
+    system("groff -Tpdf -dLABEL.REFS=1 -mom -z $cmdstring 2>&1 | LC_ALL=C grep '^\\. *ds' | groff -Tpdf -dPDF.EXPORT=1 -dLABEL.REFS=1 -mom -z - $cmdstring 2>&1 | LC_ALL=C grep '^\\. *ds' | groff -Tpdf -mom $preconv - $cmdstring");
 }
 elsif ($dev eq 'ps')
 {
-    system("pdfroff -mpdfmark -mom --no-toc $cmdstring");
+    system("groff -Tpdf -dLABEL.REFS=1 -mom -z $cmdstring 2>&1 | LC_ALL=C grep '^\\. *ds' | pdfroff -mpdfmark -mom --no-toc - $preconv $cmdstring");
 }
 elsif ($dev eq '-z') # pseudo dev - just compile for warnings
 {
diff --git a/src/devices/grops/Makefile.sub b/src/devices/grops/Makefile.sub
deleted file mode 100644 (file)
index 87eb54f..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-# Makefile.sub for `grops'
-#
-# File position: <groff-source>/src/devices/grops/Makefile.sub
-#
-# Copyright (C) 2014  Free Software Foundation, Inc.
-#
-# This file is part of `font utf8' which is part of `groff'.
-#
-# `groff' is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 2 of the License, or
-# (at your option) any later version.
-#
-# `groff' 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
-# <http://www.gnu.org/licenses/gpl-2.0.html>.
-#
-########################################################################
-
-PROG=grops$(EXEEXT)
-MAN1=grops.n
-XLIBS=$(LIBDRIVER) $(LIBGROFF) $(LIBGNU)
-MLIB=$(LIBM)
-OBJS=\
-  ps.$(OBJEXT) \
-  psrm.$(OBJEXT)
-CCSRCS=\
-  $(srcdir)/ps.cpp \
-  $(srcdir)/psrm.cpp
-HDRS=\
-  $(srcdir)/ps.h
-
-########################################################################
-# Emacs settings
-########################################################################
-#
-# Local Variables:
-# mode: makefile
-# End:
similarity index 82%
rename from src/devices/grops/grops.man
rename to src/devices/grops/grops.1.man
index 99fb748..8d730ba 100644 (file)
@@ -1,44 +1,43 @@
-.TH GROPS @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
+.TH GROPS @MAN1EXT@ "@MDATE@" "groff @VERSION@"
 .SH NAME
 grops \- PostScript driver for groff
 .
 .
-.\" license
-.de co
-Copyright \[co] 1989-2014 Free Software Foundation, Inc.
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the
-entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
-Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be included in
-translations approved by the Free Software Foundation instead of in
-the original English.
-..
-.
+.\" Save and disable compatibility mode (for, e.g., Solaris 10/11).
+.do nr grops_C \n[.C]
+.cp 0
+.
+.
+.\" ====================================================================
+.\" Legal Terms
+.\" ====================================================================
+.\"
+.\" Copyright (C) 1989-2018 Free Software Foundation, Inc.
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of
+.\" this manual under the conditions for verbatim copying, provided that
+.\" the entire resulting derived work is distributed under the terms of
+.\" a permission notice identical to this one.
+.\"
+.\" Permission is granted to copy and distribute translations of this
+.\" manual into another language, under the above conditions for
+.\" modified versions, except that this permission notice may be
+.\" included in translations approved by the Free Software Foundation
+.\" instead of in the original English.
 .
-.\" Like TP, but if specified indent is more than half
-.\" the current line-length - indent, use the default indent.
-.de Tp
-.  ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP
-.  el .TP "\\$1"
-..
 .
 .de FT
 .  if '\\*(.T'ps' .ft \\$1
 .  if '\\*(.T'pdf' .ft \\$1
 ..
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH SYNOPSIS
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .SY grops
 .OP \-glmv
@@ -49,14 +48,14 @@ the original English.
 .OP \-p papersize
 .OP \-P prologue
 .OP \-w n
-.RI [ files
-.IR .\|.\|. ]
+.RI [ file
+\&.\|.\|.\&]
 .YS
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH DESCRIPTION
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .B grops
 translates the output of GNU
@@ -90,7 +89,7 @@ is run by
 options can be passed to
 .B grops
 using
-.BR groff \[aq]s
+.BR groff 's
 .B \-P
 option.
 .
@@ -98,25 +97,23 @@ option.
 .LP
 Note that
 .B grops
-doesn\[aq]t produce a valid document structure (conforming to the
+doesn't produce a valid document structure (conforming to the
 Document Structuring Convention) if called with multiple file
 arguments.
 .
 To print such concatenated output it is necessary to deactivate DSC
 handling in the printing program or previewer.
 .
-See section
-.B FONT INSTALLATION
-below for a guide how to install fonts for
+See section \[lq]Font Installation\[rq] below for a guide how to install
+fonts for
 .BR grops .
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH OPTIONS
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
-It is possible to have whitespace between a command line option and its
-parameter.
+Whitespace is permitted between a command-line option and its argument.
 .
 .
 .TP
@@ -128,7 +125,7 @@ Normally
 produces output at PostScript LanguageLevel\~2 that conforms to the
 Document Structuring Conventions version 3.0.
 .
-Some older printers, spoolers, and previewers can\[aq]t handle such
+Some older printers, spoolers, and previewers can't handle such
 output.
 .
 The value of\~\c
@@ -155,18 +152,18 @@ comment.
 .IP
 Add\~2 if lines in included files beginning with
 .B %!\&
-should be stripped out; this is needed for Sun\[aq]s pageview
+should be stripped out; this is needed for Sun's pageview
 previewer.
 .
 .IP
 Add\~4 if
 .BR %%Page ,
-.BR %%Trailer
+.B %%Trailer
 and
 .B %%End\%Prolog
 comments should be
 stripped out of included files; this is needed for spoolers that
-don\[aq]t understand the
+don't understand the
 .B %%Begin\%Document
 and
 .B %%End\%Document
@@ -177,7 +174,7 @@ Add\~8 if the first line of the PostScript output should be
 .B %!PS-Adobe-2.0
 rather than
 .BR %!PS-Adobe-3.0 ;
-this is needed when using Sun\[aq]s Newsprint with a printer that
+this is needed when using Sun's Newsprint with a printer that
 requires page reversal.
 .
 .IP
@@ -189,7 +186,7 @@ nor the
 PostScript command).
 .
 This was the behaviour of groff version 1.18.1 and earlier; it is
-needed for older printers which don\[aq]t understand PostScript
+needed for older printers which don't understand PostScript
 LanguageLevel\~2.
 .
 It is also necessary if the output is further processed to get an
@@ -203,7 +200,9 @@ The default value can be specified by a
 .BI broken\  n
 .
 .LP
-command in the DESC file.
+command in the
+.I DESC
+file.
 .
 Otherwise the default value is\~0.
 .RE
@@ -217,14 +216,14 @@ copies of each page.
 .TP
 .BI \-F dir
 Prepend directory
-.IB dir /dev name
+.RI dir /dev name
 to the search path for prologue, font, and device description files;
 .I name
 is the name of the device, usually
 .BR ps .
 .
 .TP
-.BI \-g
+.B \-g
 Guess the page length.
 .
 This generates PostScript code that guesses the page length.
@@ -275,7 +274,7 @@ This overrides the
 and
 .B paperwidth
 commands in the
-.B DESC
+.I DESC
 file; it accepts the same arguments as the
 .B papersize
 command.
@@ -292,7 +291,7 @@ Use the file
 .BR prologue .
 .
 This option overrides the environment variable
-.SM GROPS_PROLOGUE.
+.I GROPS_PROLOGUE.
 .
 .TP
 .BI \-w n
@@ -307,9 +306,9 @@ If this option is not given, the line thickness defaults to 0.04\~em.
 Print the version number.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH USAGE
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The input to
 .B grops
@@ -418,7 +417,7 @@ to convert a Type\~1 font in PFB format.
 Any downloadable fonts which should, when required, be included by
 .B grops
 must be listed in the file
-.BR @FONTDIR@/devps/download ;
+.IR @FONTDIR@/devps/download ;
 this should consist of lines of the form
 .
 .IP
@@ -442,7 +441,7 @@ is searched for using the same mechanism that is used
 for groff font metric files.
 .
 The
-.B download
+.I download
 file itself is also searched for using this mechanism;
 currently, only the first found file in the font path is used.
 .
@@ -456,7 +455,7 @@ interprets any comments in the files sufficiently to ensure that its
 own output is conforming.
 .
 It also supplies any needed font resources that are listed in the
-.B download
+.I download
 file
 as well as any needed file resources.
 .
@@ -465,7 +464,7 @@ It is also able to handle inter-resource dependencies.
 For example, suppose that you have a downloadable font called
 Garamond, and also a downloadable font called Garamond-Outline which
 depends on Garamond (typically it would be defined to copy
-Garamond\[aq]s font dictionary, and change the PaintType), then it is
+Garamond's font dictionary, and change the PaintType), then it is
 necessary for Garamond to appear before Garamond-Outline in the
 PostScript document.
 .
@@ -492,7 +491,7 @@ the following lines
 .LP
 In this case both Garamond and Garamond-Outline would need to be listed
 in the
-.B download
+.I download
 file.
 .
 A downloadable font should not include its own name in a
@@ -512,7 +511,7 @@ The
 .BR %%Include\%Resource ,
 .BR %%Begin\%Resource ,
 and
-.BR %%End\%Resource
+.B %%End\%Resource
 comments
 (or possibly the old
 .BR %%Document\%Needed\%Fonts ,
@@ -520,7 +519,7 @@ comments
 .BR %%Include\%Font ,
 .BR %%Begin\%Font ,
 and
-.BR %%End\%Font
+.B %%End\%Font
 comments)
 should be used.
 .
@@ -814,7 +813,7 @@ and y\~coordinates increase down the page.
 A procedure\~\c
 .B u
 is defined that converts groff units to the coordinate system in
-effect (provided the user doesn\[aq]t change the scale).
+effect (provided the user doesn't change the scale).
 .
 For example,
 .
@@ -884,7 +883,7 @@ procedure.
 .B grops
 wraps user-specified PostScript code into a dictionary, nothing more.
 .
-In particular, it doesn\[aq]t start and end the inserted code with
+In particular, it doesn't start and end the inserted code with
 .B save
 and
 .BR restore ,
@@ -1127,12 +1126,12 @@ give true corners in boxed tables even though the lines are
 drawn unconnected).
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS Encapsulated PostScript
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .B grops
-itself doesn\[aq]t emit bounding box information.
+itself doesn't emit bounding box information.
 .
 With the help of Ghostscript the following simple script,
 .BR groff2eps ,
@@ -1168,9 +1167,9 @@ to
 .BR foo.eps .
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS TrueType and other font formats
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 TrueType fonts can be used with
 .B grops
@@ -1199,7 +1198,7 @@ the
 script to create appropriate metric files.
 .
 The resulting font wrappers should be added to the
-.B download
+.I download
 file.
 .B ttftot42
 source code can be downloaded from
@@ -1217,9 +1216,9 @@ http://\:fontforge.sf.net
 This font editor can convert most outline font formats.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "FONT INSTALLATION"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 This section gives a summary of the above explanations; it can serve
 as a step-by-step font installation guide for
@@ -1259,12 +1258,13 @@ The very first characters in a Type\~42 font file look like this:
 .IP
 This is a wrapper format for TrueType fonts.
 .
-Old PS printers might not support it (this is, they don\[aq]t have a
+Old PS printers might not support it (this is, they don't have a
 built-in TrueType font interpreter).
 .
 .IP
-If your font is in PFB format (such fonts normally have \[oq].pfb\[cq]
-as the file extension), you might use groff\[aq]s
+If your font is in PFB format (such fonts normally have
+.I .pfb
+as the file extension), you might use groff's
 .BR \%pfbtops (@MAN1EXT@)
 program to convert it to PFA.
 .
@@ -1289,8 +1289,11 @@ afmtodit Foo-Bar-Bold.afm textmap FBB
 .RE
 .
 .IP
-which converts the metric file \[oq]Foo-Bar-Bold.afm\[cq] to the groff
-font \[oq]FBB\[cq].
+which converts the metric file
+.I Foo-Bar-Bold.afm
+to the groff
+font
+.IR FBB .
 .
 If you have a font family which comes with normal, bold, italic,
 and bold italic faces, it is recommended to use the letters
@@ -1299,10 +1302,10 @@ and bold italic faces, it is recommended to use the letters
 .BR I ,
 and
 .BR BI ,
-respectively, as postfixes in the groff font names to make groff\[aq]s
+respectively, as postfixes in the groff font names to make groff's
 \[oq].fam\[cq] request work.
 .
-An example is groff\[aq]s built-in Times-Roman font: The font family
+An example is groff's built-in Times-Roman font: The font family
 name is
 .BR T ,
 and the groff font names are
@@ -1314,32 +1317,36 @@ and
 .
 .LI
 Install both the groff font description files and the fonts in a
-\[oq]devps\[cq] subdirectory of the font path which groff finds.
+.I devps
+subdirectory of the font path which groff finds.
 .
-See the
-.B ENVIRONMENT
-section in the
+See section \[lq]Environment\[rq] in
 .BR troff (@MAN1EXT@)
-man page which lists the actual value of the font path.
+for the actual value of the font path.
 .
-Note that groff doesn\[aq]t use the AFM files (but it is a good idea
+Note that groff doesn't use the AFM files (but it is a good idea
 to store them anyway).
 .
 .LI
 Register all fonts which must be downloaded to the printer in the
-\[oq]devps/download\[cq] file.
+.I devps/download
+file.
 .
 Only the first occurrence of this file in the font path is read.
 .
-This means that you should copy the default \[oq]download\[cq] file to
-the first directory in your font path and add your fonts there.
+This means that you should copy the default
+.I download
+file to the first directory in your font path and add your fonts there.
 .
 To continue the above example we assume that the PS font name for
-Foo-Bar-Bold.pfa is \[oq]XY-Foo-Bar-Bold\[cq] (the PS font name is
-stored in the
+.I Foo-Bar-Bold.pfa
+is \[oq]XY-Foo-Bar-Bold\[cq] (the PS font name is stored in the
 .B internalname
-field in the \[oq]FBB\[cq] file), thus the following line should be
-added to \[cq]download\[cq].
+field in the
+.I FBB
+file),
+thus the following line should be added to
+.IR download .
 .
 .RS
 .IP
@@ -1348,9 +1355,9 @@ added to \[cq]download\[cq].
 .RE
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH OLD FONTS
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 groff versions 1.19.2 and earlier contain a slightly different set of
 the 35 Adobe core fonts; the difference is mainly the lack of the
@@ -1359,7 +1366,7 @@ the 35 Adobe core fonts; the difference is mainly the lack of the
 For backwards compatibility, these old fonts are installed also in the
 .
 .IP
-.BR @OLDFONTDIR@/devps
+.I @OLDFONTDIR@/devps
 .
 .LP
 directory.
@@ -1369,7 +1376,7 @@ directory.
 To use them, make sure that
 .B grops
 finds the fonts before the default system fonts (with the same names):
-Either add command line option
+Either add command-line option
 .B \-F
 to
 .B grops
@@ -1378,19 +1385,18 @@ to
 .B groff \-Tps \-P\-F \-P@OLDFONTDIR@ .\|.\|.
 .
 .LP
-or add the directory to groff\[aq]s font path environment variable
+or add the directory to groff's font path environment variable
 .
 .IP
 .B GROFF_FONT_PATH=@OLDFONTDIR@
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH ENVIRONMENT
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .TP
-.SM
-.B GROPS_PROLOGUE
+.I GROPS_PROLOGUE
 If this is set to
 .IR foo ,
 then
@@ -1406,10 +1412,9 @@ overrides this environment variable.
 .
 .
 .TP
-.SM
-.B GROFF_FONT_PATH
+.I GROFF_FONT_PATH
 A list of directories in which to search for the
-.BI dev name
+.IR dev name
 directory in addition to the default ones.
 .
 See
@@ -1419,58 +1424,64 @@ and
 for more details.
 .
 .
-.\" --------------------------------------------------------------------
+.TP
+.I SOURCE_DATE_EPOCH
+A timestamp (expressed as seconds since the Unix epoch) to use as the
+creation timestamp in place of the current time.
+.
+.
+.\" ====================================================================
 .SH FILES
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
-.Tp \w'\fB@FONTDIR@/devps/download'u+2n
-.B @FONTDIR@/devps/DESC
+.TP
+.I @FONTDIR@/devps/DESC
 Device description file.
 .
 .TP
-.BI @FONTDIR@/devps/ F
+.IR @FONTDIR@/devps/ F
 Font description file for font
 .IR F .
 .
 .TP
-.B @FONTDIR@/devps/download
+.I @FONTDIR@/devps/download
 List of downloadable fonts.
 .
 .TP
-.B @FONTDIR@/devps/text.enc
+.I @FONTDIR@/devps/text.enc
 Encoding used for text fonts.
 .
 .TP
-.B @MACRODIR@/ps.tmac
+.I @MACRODIR@/ps.tmac
 Macros for use with
 .BR grops ;
 automatically loaded by
-.BR troffrc
+.B troffrc
 .
 .TP
-.B @MACRODIR@/pspic.tmac
+.I @MACRODIR@/pspic.tmac
 Definition of
 .B PSPIC
 macro,
 automatically loaded by
-.BR ps.tmac .
+.IR ps.tmac .
 .
 .TP
-.B @MACRODIR@/psold.tmac
+.I @MACRODIR@/psold.tmac
 Macros to disable use of characters not present in older
 PostScript printers (e.g., \[oq]eth\[cq] or \[oq]thorn\[cq]).
 .
 .TP
-.BI /tmp/grops XXXXXX
+.IR /tmp/grops XXXXXX
 Temporary file.
 See
 .BR groff (@MAN1EXT@)
 for details on the location of temporary files.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "SEE ALSO"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .BR \%afmtodit (@MAN1EXT@),
 .BR groff (@MAN1EXT@),
@@ -1488,12 +1499,11 @@ PostScript Language Document Structuring Conventions Specification
 .UE
 .
 .
-.\" --------------------------------------------------------------------
-.SH COPYING
-.\" --------------------------------------------------------------------
-.co
+.\" Restore compatibility mode (for, e.g., Solaris 10/11).
+.cp \n[grops_C]
 .
 .
 .\" Local Variables:
 .\" mode: nroff
 .\" End:
+.\" vim: set filetype=groff:
diff --git a/src/devices/grops/grops.am b/src/devices/grops/grops.am
new file mode 100644 (file)
index 0000000..1e550ca
--- /dev/null
@@ -0,0 +1,40 @@
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Last update: 22 Aug 2015
+#
+# This file is part of groff.
+#
+# groff 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.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+
+bin_PROGRAMS += grops
+grops_SOURCES = \
+  src/devices/grops/ps.cpp \
+  src/devices/grops/psrm.cpp \
+  src/devices/grops/ps.h
+grops_LDADD = $(LIBM) \
+  libdriver.a \
+  libgroff.a \
+  lib/libgnu.a
+man1_MANS += src/devices/grops/grops.1
+EXTRA_DIST += \
+  src/devices/grops/grops.1.man \
+  src/devices/grops/psfig.diff \
+  src/devices/grops/TODO
+
+
+########################################################################
+### Emacs settings
+# Local Variables:
+# mode: makefile-automake
+# End:
index 745a503..ab3b1d7 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 /*
  * PostScript documentation:
@@ -28,6 +28,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. */
 #include "cset.h"
 #include "nonposix.h"
 #include "paper.h"
+#include "curtime.h"
 
 #include "ps.h"
 #include <time.h>
@@ -430,7 +431,7 @@ ps_font::ps_font(const char *nm)
 
 ps_font::~ps_font()
 {
-  a_delete encoding;
+  free(encoding);
   a_delete reencoded_name;
 }
 
@@ -440,7 +441,7 @@ void ps_font::handle_unknown_font_command(const char *command, const char *arg,
   if (strcmp(command, "encoding") == 0) {
     if (arg == 0)
       error_with_file_and_line(filename, lineno,
-                              "`encoding' command requires an argument");
+                              "'encoding' command requires an argument");
     else
       encoding = strsave(arg);
   }
@@ -452,7 +453,7 @@ static void handle_unknown_desc_command(const char *command, const char *arg,
   if (strcmp(command, "broken") == 0) {
     if (arg == 0)
       error_with_file_and_line(filename, lineno,
-                              "`broken' command requires an argument");
+                              "'broken' command requires an argument");
     else if (!bflag)
       broken_flags = atoi(arg);
   }
@@ -594,7 +595,7 @@ public:
   void end_of_line();
 };
 
-// `pl' is in inches
+// 'pl' is in inches
 ps_printer::ps_printer(double pl)
 : out(0, MAX_LINE_LENGTH),
   pages_output(0),
@@ -693,7 +694,7 @@ void ps_printer::set_char(glyph *g, font *f, const environment *env, int w,
   style sty(f, sub, env->size, env->height, env->slant);
   if (sty.slant != 0) {
     if (sty.slant > 80 || sty.slant < -80) {
-      error("silly slant `%1' degrees", sty.slant);
+      error("silly slant '%1' degrees", sty.slant);
       sty.slant = 0;
     }
   }
@@ -785,7 +786,7 @@ void ps_printer::define_encoding(const char *encoding, int encoding_index)
   char *path;
   FILE *fp = font::open_file(encoding, &path);
   if (fp == 0)
-    fatal("can't open encoding file `%1'", encoding);
+    fatal("can't open encoding file '%1'", encoding);
   int lineno = 1;
   const int BUFFER_SIZE = 512;
   char buf[BUFFER_SIZE];
@@ -803,7 +804,7 @@ void ps_printer::define_encoding(const char *encoding, int encoding_index)
     }
     lineno++;
   }
-  a_delete path;
+  free(path);
   out.put_literal_symbol(make_encoding_name(encoding_index))
      .put_delimiter('[');
   for (i = 0; i < 256; i++) {
@@ -879,7 +880,7 @@ void ps_printer::set_style(const style &sty)
   out.put_literal_symbol(buf);
   const char *psname = sty.f->get_internal_name();
   if (psname == 0)
-    fatal("no internalname specified for font `%1'", sty.f->get_name());
+    fatal("no internalname specified for font '%1'", sty.f->get_name());
   char *encoding = ((ps_font *)sty.f)->encoding;
   if (sty.sub == 0) {
     if (encoding != 0) {
@@ -1242,7 +1243,7 @@ void ps_printer::draw(int code, int *p, int np, const environment *env)
     }
     break;
   default:
-    error("unrecognised drawing command `%1'", char(code));
+    error("unrecognised drawing command '%1'", char(code));
     break;
   }
   output_hpos = output_vpos = -1;
@@ -1353,7 +1354,7 @@ void ps_printer::end_page(int)
   set_color(&default_color);
   out.put_symbol("EP");
   if (invis_count != 0) {
-    error("missing `endinvis' command");
+    error("missing 'endinvis' command");
     invis_count = 0;
   }
 }
@@ -1390,7 +1391,7 @@ ps_printer::~ps_printer()
 #else
     time_t
 #endif
-    t = time(0);
+    t = current_time();
     fputs(ctime(&t), out.get_file());
   }
   for (font_pointer_list *f = font_list; f; f = f->next) {
@@ -1540,7 +1541,7 @@ void ps_printer::special(char *arg, const environment *env, char type)
   for (; *p != '\0' && *p != ':' && *p != ' ' && *p != '\n'; p++)
     ;
   if (*p == '\0' || strncmp(tag, "ps", p - tag) != 0) {
-    error("X command without `ps:' tag ignored");
+    error("X command without 'ps:' tag ignored");
     return;
   }
   p++;
@@ -1561,7 +1562,7 @@ void ps_printer::special(char *arg, const environment *env, char type)
       (this->*(proc_table[i].proc))(p, env);
       return;
     }
-  error("X command `%1' not recognised", command);
+  error("X command '%1' not recognised", command);
 }
 
 // A conforming PostScript document must not have lines longer
@@ -1657,7 +1658,7 @@ void ps_printer::do_mdef(char *arg, const environment *)
     return;
   }
   if (n < 0) {
-    error("out of range argument `%1' to X mdef command", int(n));
+    error("out of range argument '%1' to X mdef command", int(n));
     return;
   }
   arg = p;
@@ -1701,11 +1702,11 @@ void ps_printer::do_import(char *arg, const environment *env)
     if (*p == '\0')
       error("too few arguments for X import command");
     else
-      error("invalid argument `%1' for X import command", p);
+      error("invalid argument '%1' for X import command", p);
     return;
   }
   if (*p != '\0') {
-    error("superfluous argument `%1' for X import command", p);
+    error("superfluous argument '%1' for X import command", p);
     return;
   }
   int llx = parms[0];
@@ -1715,12 +1716,12 @@ void ps_printer::do_import(char *arg, const environment *env)
   int desired_width = parms[4];
   int desired_height = parms[5];
   if (desired_width <= 0) {
-    error("bad width argument `%1' for X import command: must be > 0",
+    error("bad width argument '%1' for X import command: must be > 0",
          desired_width);
     return;
   }
   if (nparms == 6 && desired_height <= 0) {
-    error("bad height argument `%1' for X import command: must be > 0",
+    error("bad height argument '%1' for X import command: must be > 0",
          desired_height);
     return;
   }
@@ -1766,7 +1767,7 @@ void ps_printer::do_invis(char *, const environment *)
 void ps_printer::do_endinvis(char *, const environment *)
 {
   if (invis_count == 0)
-    error("unbalanced `endinvis' command");
+    error("unbalanced 'endinvis' command");
   else
     --invis_count;
 }
@@ -1801,7 +1802,7 @@ int main(int argc, char **argv)
       break;
     case 'c':
       if (sscanf(optarg, "%d", &ncopies) != 1 || ncopies <= 0) {
-       error("bad number of copies `%s'", optarg);
+       error("bad number of copies '%1'", optarg);
        ncopies = 1;
       }
       break;
@@ -1823,7 +1824,7 @@ int main(int argc, char **argv)
     case 'p':
       if (!font::scan_papersize(optarg, 0,
                                &user_paper_length, &user_paper_width))
-       error("invalid custom paper size `%1' ignored", optarg);
+       error("invalid custom paper size '%1' ignored", optarg);
       break;
     case 'P':
       env = "GROPS_PROLOGUE";
@@ -1839,7 +1840,7 @@ int main(int argc, char **argv)
       break;
     case 'w':
       if (sscanf(optarg, "%d", &linewidth) != 1 || linewidth < 0) {
-       error("bad linewidth `%1'", optarg);
+       error("bad linewidth '%1'", optarg);
        linewidth = -1;
       }
       break;
index c642853..816c7ab 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 class ps_output {
 public:
@@ -52,7 +52,7 @@ inline FILE *ps_output::get_file()
   return fp;
 }
 
-// this must stay in sync with `resource_table' in `psrm.cpp'
+// this must stay in sync with 'resource_table' in 'psrm.cpp'
 enum resource_type {
   RESOURCE_FONT,
   RESOURCE_FONTSET,
index 5be080d..4e0d1f9 100644 (file)
@@ -5,7 +5,7 @@ work only with groff, so you might want to install it under a
 different name.  The output of this psfig must be processed using the
 macros in the file ../tmac/tmac.psfig.  These will automatically add
 the necessary PostScript code to the prologue output by grops.  Use of
-the `global' feature in psfig will result in non-conformant PostScript
+the 'global' feature in psfig will result in non-conformant PostScript
 which will fail if processed by a page reversal program.  Note that
 psfig is unsupported by me (I'm not interested in hearing about psfig
 problems.)  For new documents, I recommend using the PostScript
index 2c00b6c..152f9d9 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include "driver.h"
 #include "stringclass.h"
@@ -85,7 +85,7 @@ const char *extension_table[] = {
 
 const int NEXTENSIONS = sizeof(extension_table)/sizeof(extension_table[0]);
 
-// this must stay in sync with `resource_type' in `ps.h'
+// this must stay in sync with 'resource_type' in 'ps.h'
 const char *resource_table[] = {
   "font",
   "fontset",
@@ -150,7 +150,7 @@ resource::resource(resource_type t, string &n, string &v, unsigned r)
 
 resource::~resource()
 {
-  a_delete filename;
+  free(filename);
 }
 
 void resource::print_type_and_name(FILE *outfp)
@@ -317,13 +317,13 @@ void resource_manager::output_prolog(ps_output &out)
   char *prologue = getenv("GROPS_PROLOGUE");
   FILE *fp = font::open_file(prologue, &path);
   if (!fp)
-    fatal("can't find `%1'", prologue);
+    fatal("can't find '%1'", prologue);
   fputs("%%BeginResource: ", outfp);
   procset_resource->print_type_and_name(outfp);
   putc('\n', outfp);
   process_file(-1, fp, path, outfp);
   fclose(fp);
-  a_delete path;
+  free(path);
   fputs("%%EndResource\n", outfp);
 }
 
@@ -340,7 +340,7 @@ void resource_manager::supply_resource(resource *r, int rank, FILE *outfp,
 {
   if (r->flags & resource::BUSY) {
     r->name += '\0';
-    fatal("loop detected in dependency graph for %1 `%2'",
+    fatal("loop detected in dependency graph for %1 '%2'",
          resource_table[r->type],
          r->name.contents());
   }
@@ -353,7 +353,7 @@ void resource_manager::supply_resource(resource *r, int rank, FILE *outfp,
     if (r->type == RESOURCE_FONT) {
       fp = font::open_file(r->filename, &path);
       if (!fp) {
-       error("can't find `%1'", r->filename);
+       error("can't find '%1'", r->filename);
        a_delete r->filename;
        r->filename = 0;
       }
@@ -362,7 +362,7 @@ void resource_manager::supply_resource(resource *r, int rank, FILE *outfp,
       errno = 0;
       fp = include_search_path.open_file_cautious(r->filename);
       if (!fp) {
-       error("can't open `%1': %2", r->filename, strerror(errno));
+       error("can't open '%1': %2", r->filename, strerror(errno));
        a_delete r->filename;
        r->filename = 0;
       }
@@ -386,7 +386,7 @@ void resource_manager::supply_resource(resource *r, int rank, FILE *outfp,
     process_file(rank, fp, path, outfp);
     fclose(fp);
     if (r->type == RESOURCE_FONT)
-      a_delete path;
+      free(path);
     if (outfp) {
       if (r->type == RESOURCE_FILE && is_document)
        fputs("%%EndDocument\n", outfp);
@@ -810,7 +810,7 @@ int resource_manager::do_begin_data(const char *ptr, int, FILE *fp,
     if (*ptr != '\0') {
       unit = read_one_of(&ptr, units, 2);
       if (unit < 0) {
-       error("expected `Bytes' or `Lines'");
+       error("expected 'Bytes' or 'Lines'");
        return 0;
       }
     }
@@ -928,7 +928,7 @@ static unsigned parse_extensions(const char *ptr)
     if (i >= NEXTENSIONS) {
       string s(name, ptr - name);
       s += '\0';
-      error("unknown extension `%1'", s.contents());
+      error("unknown extension '%1'", s.contents());
     }
   }
   return flags;
@@ -1077,7 +1077,7 @@ void resource_manager::read_download_file()
   char *path = 0;
   FILE *fp = font::open_file("download", &path);
   if (!fp)
-    fatal("can't find `download'");
+    fatal("can't find 'download'");
   char buf[512];
   int lineno = 0;
   while (fgets(buf, sizeof(buf), fp)) {
@@ -1090,7 +1090,7 @@ void resource_manager::read_download_file()
       fatal_with_file_and_line(path, lineno, "missing filename");
     lookup_font(p)->filename = strsave(q);
   }
-  a_delete path;
+  free(path);
   fclose(fp);
 }
 
diff --git a/src/devices/grotty/Makefile.sub b/src/devices/grotty/Makefile.sub
deleted file mode 100644 (file)
index b3d0900..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-# Makefile.sub for `grotty'
-#
-# File position: <groff-source>/src/devices/grotty/Makefile.sub
-#
-# Copyright (C) 2014  Free Software Foundation, Inc.
-#
-# This file is part of `font utf8' which is part of `groff'.
-#
-# `groff' is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 2 of the License, or
-# (at your option) any later version.
-#
-# `groff' 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
-# <http://www.gnu.org/licenses/gpl-2.0.html>.
-#
-########################################################################
-
-PROG=grotty$(EXEEXT)
-MAN1=grotty.n
-XLIBS=$(LIBDRIVER) $(LIBGROFF) $(LIBGNU)
-MLIB=$(LIBM)
-OBJS=tty.$(OBJEXT)
-CCSRCS=$(srcdir)/tty.cpp
-
-########################################################################
-# Emacs settings
-########################################################################
-#
-# Local Variables:
-# mode: makefile
-# End:
similarity index 66%
rename from src/devices/grotty/grotty.man
rename to src/devices/grotty/grotty.1.man
index 07ab62a..1d9b5f8 100644 (file)
@@ -1,54 +1,50 @@
-.\" -*- nroff -*-
-.TH GROTTY @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
+.TH GROTTY @MAN1EXT@ "@MDATE@" "groff @VERSION@"
 .SH NAME
 grotty \- groff driver for typewriter-like devices
 .
 .
-.\" license
-.de co
-Copyright \[co] 1989-2014 Free Software Foundation, Inc.
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the
-entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
-Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be included in
-translations approved by the Free Software Foundation instead of in
-the original English.
-..
-.
+.\" ====================================================================
+.\" Legal Terms
+.\" ====================================================================
+.\"
+.\" Copyright (C) 1989-2018 Free Software Foundation, Inc.
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of
+.\" this manual under the conditions for verbatim copying, provided that
+.\" the entire resulting derived work is distributed under the terms of
+.\" a permission notice identical to this one.
+.\"
+.\" Permission is granted to copy and distribute translations of this
+.\" manual into another language, under the above conditions for
+.\" modified versions, except that this permission notice may be
+.\" included in translations approved by the Free Software Foundation
+.\" instead of in the original English.
+.
+.
+.\" Save and disable compatibility mode (for, e.g., Solaris 10/11).
 .do nr grotty_C \n[.C]
 .cp 0
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH SYNOPSIS
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
-.B grotty
-[
-.B \-bBcdfhioruUv
-] [
-.BI \-F dir
-] [
-.IR files \|.\|.\|.\&
-]
-.PP
-It is possible to have whitespace between the
-.B \-F
-option and its parameter.
+.SY grotty
+.OP \-bBcdfhioruUv
+.OP \-F dir
+.RI [ file
+\&.\|.\|.\&]
+.YS
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH DESCRIPTION
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .B grotty
 translates the output of GNU
@@ -110,20 +106,20 @@ Use the
 switch to revert to the old behaviour, printing a bold character
 .I c
 with the sequence
-.RI ` c
-.SM BACKSPACE
-.IR c '
+.RI \[lq] c
+BACKSPACE
+.IR c \[rq]
 and an italic character
 .I c
 by the sequence
-.RB ` _
-.SM BACKSPACE
-.IR c '.
+.RB \[lq] _
+BACKSPACE
+.IR c \[rq].
 .
 At the same time, color output is disabled.
 .
 The same effect can be achieved by setting either the
-.B GROFF_NO_SGR
+.I GROFF_NO_SGR
 environment variable or using the \[oq]sgr\[cq] X command (see below).
 .
 .
@@ -133,7 +129,7 @@ For SGR support, it is necessary to use the
 option of
 .BR less (1)
 to disable the interpretation of
-.BR grotty \[aq]s
+.BR grotty 's
 old output format.
 .
 Consequently, all programs which use
@@ -145,7 +141,7 @@ For
 in particular, either add
 .B \-R
 to the
-.B $PAGER
+.PAGER
 environment variable, e.g.\&
 .
 .RS
@@ -168,12 +164,12 @@ in a similar fashion.
 Note that with some
 .BR man (1)
 versions, you have to use the
-.B $MANPAGER
+.I \%MANPAGER
 environment variable instead.
 .
 .
 .LP
-.BR grotty \[aq]s
+.BR grotty 's
 old output format can be displayed on a terminal
 by piping through
 .BR ul (1).
@@ -228,7 +224,7 @@ escape sequence in
 .
 .LP
 If the
-.B DESC
+.I DESC
 file contains the keyword
 .BR unicode ,
 .B grotty
@@ -242,9 +238,12 @@ See the
 man page for more details.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH OPTIONS
-.\" --------------------------------------------------------------------
+.\" ====================================================================
+.
+Whitespace is permitted between a command-line option and its argument.
+.
 .
 .TP
 .B \-b
@@ -252,19 +251,19 @@ Suppress the use of overstriking for bold characters.
 .
 Ignored if
 .B \-c
-isn\[aq]t used.
+isn't used.
 .
 .TP
 .B \-B
 Use only overstriking for bold-italic characters.
 Ignored if
 .B \-c
-isn\[aq]t used.
+isn't used.
 .
 .TP
 .B \-c
 Use
-.BR grotty \[aq]s
+.BR grotty 's
 old output format (see above).
 This also disables color output.
 .
@@ -304,7 +303,7 @@ its last line.
 .TP
 .BI \-F dir
 Prepend directory
-.IB dir /dev name
+.RI dir /dev name
 to the search path for font and device description files;
 .I name
 is the name of the device, usually
@@ -325,7 +324,7 @@ Tabs are assumed to be set every 8 columns.
 Use escape sequences to set the italic text attribute instead of the
 underline attribute for italic fonts (\[oq]I\[cq] and \[oq]BI\[cq]).
 .
-Note that most terminals (including xterm) don\[aq]t support this.
+Note that most terminals (including xterm) don't support this.
 .
 Ignored if
 .B \-c
@@ -352,7 +351,7 @@ Suppress the use of underlining for italic characters.
 .
 Ignored if
 .B \-c
-isn\[aq]t used.
+isn't used.
 .
 .TP
 .B \-U
@@ -360,16 +359,16 @@ Use only underlining for bold-italic characters.
 .
 Ignored if
 .B \-c
-isn\[aq]t used.
+isn't used.
 .
 .TP
 .B \-v
 Print the version number.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH USAGE
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .B grotty
 understands a single X command produced using the
@@ -385,13 +384,12 @@ is non-zero or missing, enable SGR output (this is the default),
 otherwise use the old drawing scheme for bold and underline.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH ENVIRONMENT
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .TP
-.SM
-.B GROFF_NO_SGR
+.I GROFF_NO_SGR
 If set, the old drawing scheme for bold and underline (using the
 backspace character) is active.
 .
@@ -399,10 +397,9 @@ Colors are disabled.
 .
 .
 .TP
-.SM
-.B GROFF_FONT_PATH
+.I GROFF_FONT_PATH
 A list of directories in which to search for the
-.BI dev name
+.IR dev name
 directory in addition to the default ones.
 .
 See
@@ -412,74 +409,74 @@ and
 for more details.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH FILES
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .TP
-.B @FONTDIR@/devascii/DESC
-Device description file for
+.I @FONTDIR@/devascii/DESC
+Device description file for the
 .B ascii
 device.
 .
 .TP
-.BI @FONTDIR@/devascii/ F
+.IR @FONTDIR@/devascii/ F
 Font description file for font
 .I F
-of
+of the
 .B ascii
 device.
 .
 .TP
-.B @FONTDIR@/devlatin1/DESC
-Device description file for
+.I @FONTDIR@/devlatin1/DESC
+Device description file for the
 .B latin1
 device.
 .
 .TP
-.BI @FONTDIR@/devlatin1/ F
+.IR @FONTDIR@/devlatin1/ F
 Font description file for font
 .I F
-of
+of the
 .B latin1
 device.
 .
 .TP
-.B @FONTDIR@/devutf8/DESC
-Device description file for
+.I @FONTDIR@/devutf8/DESC
+Device description file for the
 .B utf8
 device.
 .
 .TP
-.BI @FONTDIR@/devutf8/ F
+.IR @FONTDIR@/devutf8/ F
 Font description file for font
 .I F
-of
+of the
 .B utf8
 device.
 .
 .TP
-.B @FONTDIR@/devcp1047/DESC
-Device description file for
+.I @FONTDIR@/devcp1047/DESC
+Device description file for the
 .B cp1047
 device.
 .
 .TP
-.BI @FONTDIR@/devcp1047/ F
+.IR @FONTDIR@/devcp1047/ F
 Font description file for font
 .I F
-of
+of the
 .B cp1047
 device.
 .
 .TP
-.B @MACRODIR@/tty.tmac
+.I @MACRODIR@/tty.tmac
 Macros for use with
 .BR grotty .
 .
 .TP
-.B @MACRODIR@/tty-char.tmac
-Additional kludgy character definitions for use with
+.I @MACRODIR@/tty\-char.tmac
+Additional character definitions for use with
 .BR grotty .
 .
 .LP
@@ -488,9 +485,9 @@ Note that on EBCDIC hosts, only files for the
 device is installed.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH BUGS
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .B grotty
 is intended only for simple documents.
@@ -512,18 +509,18 @@ of\~0) cannot be printed.
 .
 .
 .LP
-Color handling is different compared to
+Color handling differs from
 .BR grops (@MAN1EXT@).
 .B \[rs]M
-doesn\[aq]t set the fill color for closed graphic objects (which
+doesn't set the fill color for closed graphic objects (which
 .B grotty
-doesn\[aq]t support anyway) but changes the background color of the
+doesn't support anyway) but changes the background color of the
 character cell, affecting all subsequent operations.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "SEE ALSO"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .BR groff (@MAN1EXT@),
 .BR @g@troff (@MAN1EXT@),
 .BR groff_out (@MAN5EXT@),
@@ -535,10 +532,11 @@ character cell, affecting all subsequent operations.
 .BR less (1)
 .
 .
-.\" --------------------------------------------------------------------
-.SH COPYING
-.\" --------------------------------------------------------------------
-.co
+.\" Restore compatibility mode (for, e.g., Solaris 10/11).
+.cp \n[grotty_C]
 .
 .
-.cp \n[grotty_C]
+.\" Local Variables:
+.\" mode: nroff
+.\" End:
+.\" vim: set filetype=groff:
diff --git a/src/devices/grotty/grotty.am b/src/devices/grotty/grotty.am
new file mode 100644 (file)
index 0000000..98d137a
--- /dev/null
@@ -0,0 +1,36 @@
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Last update: 22 Aug 2015
+#
+# This file is part of groff.
+#
+# groff 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.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+
+bin_PROGRAMS += grotty
+grotty_SOURCES = src/devices/grotty/tty.cpp
+grotty_LDADD = $(LIBM) \
+  libdriver.a \
+  libgroff.a \
+  lib/libgnu.a
+man1_MANS += src/devices/grotty/grotty.1
+EXTRA_DIST += \
+  src/devices/grotty/grotty.1.man \
+  src/devices/grotty/TODO
+
+
+########################################################################
+### Emacs settings
+# Local Variables:
+# mode: makefile-automake
+# End:
index 60d46e8..9c405db 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include "driver.h"
 #include "device.h"
@@ -93,9 +93,9 @@ static unsigned char bold_underline_mode;
 #define SGR_NO_UNDERLINE CSI "24m"
 #define SGR_REVERSE CSI "7m"
 #define SGR_NO_REVERSE CSI "27m"
-// many terminals can't handle `CSI 39 m' and `CSI 49 m' to reset
+// many terminals can't handle 'CSI 39 m' and 'CSI 49 m' to reset
 // the foreground and background color, respectively; we thus use
-// `CSI 0 m' exclusively
+// 'CSI 0 m' exclusively
 #define SGR_DEFAULT CSI "0m"
 
 #define DEFAULT_COLOR_IDX -1
@@ -153,7 +153,6 @@ void tty_font::handle_x_command(int argc, const char **argv)
 #endif
 
 class tty_glyph {
-  static tty_glyph *free_list;
 public:
   tty_glyph *next;
   int w;
@@ -162,37 +161,11 @@ public:
   unsigned char mode;
   schar back_color_idx;
   schar fore_color_idx;
-  void *operator new(size_t);
-  void operator delete(void *);
   inline int draw_mode() { return mode & (VDRAW_MODE|HDRAW_MODE); }
   inline int order() {
     return mode & (VDRAW_MODE|HDRAW_MODE|CU_MODE|COLOR_CHANGE); }
 };
 
-tty_glyph *tty_glyph::free_list = 0;
-
-void *tty_glyph::operator new(size_t)
-{
-  if (!free_list) {
-    const int BLOCK = 1024;
-    free_list = (tty_glyph *)new char[sizeof(tty_glyph) * BLOCK];
-    for (int i = 0; i < BLOCK - 1; i++)
-      free_list[i].next = free_list + i + 1;
-    free_list[BLOCK - 1].next = 0;
-  }
-  tty_glyph *p = free_list;
-  free_list = free_list->next;
-  p->next = 0;
-  return p;
-}
-
-void tty_glyph::operator delete(void *p)
-{
-  if (p) {
-    ((tty_glyph *)p)->next = free_list;
-    free_list = (tty_glyph *)p;
-  }
-}
 
 class tty_printer : public printer {
   tty_glyph **lines;
@@ -447,7 +420,7 @@ void tty_printer::special(char *arg, const environment *env, char type)
   for (; *p != '\0' && *p != ':' && *p != ' ' && *p != '\n'; p++)
     ;
   if (*p == '\0' || strncmp(tag, "tty", p - tag) != 0) {
-    error("X command without `tty:' tag ignored");
+    error("X command without 'tty:' tag ignored");
     return;
   }
   p++;
@@ -652,9 +625,9 @@ void tty_printer::put_color(schar color_index, int back)
 
 // The possible Unicode combinations for crossing characters.
 //
-// `  ' = 0, ` -' = 4, `- ' = 8, `--' = 12,
+// '  ' = 0, ' -' = 4, '- ' = 8, '--' = 12,
 //
-// `  ' = 0, ` ' = 1, `|' = 2, `|' = 3
+// '  ' = 0, ' ' = 1, '|' = 2, '|' = 3
 //            |                 |
 
 static output_character crossings[4*4] = {
index 024e59f..6b44a14 100644 (file)
@@ -1,3 +1,13 @@
+2015-08-22  Bernd Warken  <groff-bernd.warken-72@web.de>
+
+       * gxditview.1.man: Rename `gxditview.man'.
+
+       * xditview.am: Include renaming.
+
+2015-08-05  Bernd Warken  <groff-bernd.warken-72@web.de>
+
+       * xditview.am: Add `Last update'.  Setup Emacs mode.
+
 2004-05-29  Werner LEMBERG  <wl@gnu.org>
 
        gxditview and xtotroff have been integrated into the normal groff
@@ -541,8 +551,9 @@ Sun May 26 14:14:01 1991  James Clark  (jjc at jclark)
 
        * Started separate ChangeLog.
 
-Copyright 1991-1995, 1999, 200, 2001, 2002, 2003, 2004
-  Free Software Foundation, Inc.
+________________________________________________________________________
+
+Copyright 1991-2018 Free Software Foundation, Inc.
 
 Copying and distribution of this file, with or without modification,
 are permitted in any medium without royalty provided the copyright
@@ -550,5 +561,6 @@ notice and this notice are preserved.
 
 Local Variables:
 version-control: never
+mode: change-log
 coding: latin-1
 End:
index f849fb1..28512ae 100644 (file)
@@ -20,7 +20,11 @@ static char Xrcsid[] = "$XConsortium: Dvi.c,v 1.9 89/12/10 16:12:25 rws Exp $";
 #include <X11/Xmu/Converters.h>
 #include <stdio.h>
 #include <ctype.h>
+
 #include "DviP.h"
+#include "font.h"
+#include "page.h"
+#include "parse.h"
 
 /****************************************************************
  *
@@ -116,20 +120,6 @@ static void                FindPage (DviWidget);
 
 static void            SaveToFile (Widget, FILE *);
 
-/* font.c */
-extern void ParseFontMap(DviWidget);
-extern void DestroyFontMap(DviFontMap *);
-extern void ForgetFonts(DviWidget);
-
-/* page.c */
-extern void DestroyFileMap(DviFileMap *);
-extern long SearchPagePosition(DviWidget, int);
-extern void FileSeek(DviWidget, long);
-extern void ForgetPagePositions(DviWidget);
-
-/* parse.c */
-extern int ParseInput(register DviWidget);
-
 DviClassRec dviClassRec = {
 {
        &widgetClassRec,                /* superclass             */    
index 545661c..8b71c69 100644 (file)
@@ -132,7 +132,7 @@ typedef struct {
        XFontStruct     *default_font;
        FILE            *file;
        Boolean         noPolyText;
-       Boolean         seek;           /* file is `seekable' */
+       Boolean         seek;           /* file is 'seekable' */
        int             default_resolution;
        /*
         * private state
@@ -230,4 +230,6 @@ DeviceFont  *QueryDeviceFont (DviWidget, int);
 
 char *GetWord(DviWidget, char *, int);
 char *GetLine(DviWidget, char *, int);
+
+void SetDevice (DviWidget dw, const char *name);
 #endif /* _XtDviP_h */
diff --git a/src/devices/xditview/Makefile.sub b/src/devices/xditview/Makefile.sub
deleted file mode 100644 (file)
index 4bc7b50..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-# Makefile.sub for `xditview'
-#
-# File position: <groff-source>/src/devices/xditview/Makefile.sub
-#
-# Copyright (C) 2014 Free Software Foundation, Inc.
-#
-# This file is part of `font utf8' which is part of `groff'.
-#
-# `groff' is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 2 of the License, or
-# (at your option) any later version.
-#
-# `groff' 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
-# <http://www.gnu.org/licenses/gpl-2.0.html>.
-#
-########################################################################
-
-PROG=gxditview$(EXEEXT)
-MAN1=gxditview.n
-MLIB=$(LIBM)
-XLIBS=$(LIBXUTIL)
-EXTRA_CFLAGS=$(X_CFLAGS) -Dlint
-EXTRA_LDFLAGS=$(X_LIBS) $(X_PRE_LIBS) -lXaw -lXmu -lXt -lX11 $(X_EXTRA_LIBS)
-OBJS=\
-  device.$(OBJEXT) \
-  draw.$(OBJEXT) \
-  Dvi.$(OBJEXT) \
-  font.$(OBJEXT) \
-  lex.$(OBJEXT) \
-  page.$(OBJEXT) \
-  parse.$(OBJEXT) \
-  xditview.$(OBJEXT)
-CSRCS=\
-  $(srcdir)/device.c \
-  $(srcdir)/draw.c \
-  $(srcdir)/Dvi.c \
-  $(srcdir)/font.c \
-  $(srcdir)/lex.c \
-  $(srcdir)/page.c \
-  $(srcdir)/parse.c \
-  $(srcdir)/xditview.c
-HDRS=\
-  $(srcdir)/device.h \
-  $(srcdir)/Dvi.h \
-  $(srcdir)/DviP.h \
-  $(srcdir)/Menu.h
-GENHDRS=GXditview-ad.h
-RM=rm -f
-
-all depend: $(GENHDRS)
-
-GXditview-ad.h: $(srcdir)/GXditview.ad
-       @echo Making $@
-       $(SHELL) $(srcdir)/ad2c $(srcdir)/GXditview.ad > $@
-
-install_data: $(srcdir)/GXditview.ad $(srcdir)/GXditview-color.ad
-       -test -d $(DESTDIR)$(appresdir) \
-         || $(mkinstalldirs) $(DESTDIR)$(appresdir)
-       if test -f $(DESTDIR)$(appresdir)/GXditview; then \
-         mv $(DESTDIR)$(appresdir)/GXditview \
-           $(DESTDIR)$(appresdir)/GXditview.old; \
-       fi
-       if test -f $(DESTDIR)$(appresdir)/GXditview-color; then \
-         mv $(DESTDIR)$(appresdir)/GXditview-color \
-           $(DESTDIR)$(appresdir)/GXditview-color.old; \
-       fi
-       $(INSTALL_DATA) $(srcdir)/GXditview.ad \
-         $(DESTDIR)$(appresdir)/GXditview
-       $(INSTALL_DATA) $(srcdir)/GXditview-color.ad \
-         $(DESTDIR)$(appresdir)/GXditview-color
-
-uninstall_sub:
-       $(RM) $(DESTDIR)$(appresdir)/GXditview
-       $(RM) $(DESTDIR)$(appresdir)/GXditview-color
-
-########################################################################
-# Emacs settings
-########################################################################
-#
-# Local Variables:
-# mode: makefile
-# End:
index 1461b5a..9de7869 100644 (file)
@@ -10,4 +10,4 @@ xditview is copyrighted by MIT under the usual X terms (see
 gxditview.man); the changes to that which come along with the groff package
 are in the public domain.
 
-Please report bugs to bug-groff@gnu.org.
+Please report bugs at http://savannah.gnu.org/bugs/?group=groff.
index 98bbbad..0b5b140 100644 (file)
@@ -1,7 +1,7 @@
 Open the main window with the correct width and height, depending on
 both the selected device and the paper dimensions.
 
-Add a command line option to specify the paper dimensions (similar to
+Add a command-line option to specify the paper dimensions (similar to
 other groff devices).
 
 Better error handling.
index ad5d121..2ec45ed 100644 (file)
@@ -18,7 +18,7 @@
 #              some versions of sed don't like them. The comments are
 #              now given here in the header.
 #      31 May 2004: Werner Lemberg <wl@gnu.org>
-#              Force casts to `String'.
+#              Force casts to 'String'.
 #
 # Comments on the script by line:
 # /^!/d                Remove comments
index 2cb2219..1eaafbe 100644 (file)
@@ -26,7 +26,7 @@ searching for device and font description files. */
 #define WS " \t\r\n"
 
 #ifndef INT_MIN
-/* Minimum and maximum values a `signed int' can hold.  */
+/* Minimum and maximum values a 'signed int' can hold.  */
 #define INT_MIN (-INT_MAX-1)
 #define INT_MAX 2147483647
 #endif
@@ -416,7 +416,7 @@ int read_charset_section(DeviceFont *f, FILE *fp)
            break;
        if (strcmp(p, "\"") == 0) {
            if (!last_charinfo) {
-               error("first line of charset section cannot use `\"'");
+               error("first line of charset section cannot use '\"'");
                return 0;
            }
            else
@@ -532,7 +532,7 @@ FILE *open_device_file(const char *device_name, const char *file_name,
   sprintf(buf, "dev%s/%s", device_name, file_name);
   fp = find_file(buf, result);
   if (!fp) {
-      fprintf(stderr, "can't find device file `%s'\n", file_name);
+      fprintf(stderr, "can't find device file '%s'\n", file_name);
       fflush(stderr);
   }
   XtFree(buf);
index a808aba..288d98a 100644 (file)
@@ -3,6 +3,9 @@
  *
  * accept dvi function calls and translate to X
  */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
 
 #include <X11/Xos.h>
 #include <X11/IntrinsicP.h>
 #endif
 
 #include "DviP.h"
+#include "draw.h"
+#include "font.h"
 
 #define DeviceToX(dw, n) ((int)((n) * (dw)->dvi.scale_factor + .5))
 #define XPos(dw) (DeviceToX((dw), (dw)->dvi.state->x - \
                   (dw)->dvi.text_device_width) + (dw)->dvi.text_x_width)
 #define YPos(dw) (DeviceToX((dw), (dw)->dvi.state->y))
 
+/* forward reference */
 static int FakeCharacter(DviWidget, char *, int);
 
-/* font.c */
-extern int MaxFontPosition(DviWidget);
-
-void
+/* shadowed by a macro definition in parse.c, and unused elsewhere */
+#if 0
+static void
 HorizontalMove(DviWidget dw, int delta)
 {
        dw->dvi.state->x += delta;
 }
+#endif
 
 void
 HorizontalGoto(DviWidget dw, int NewPosition)
@@ -52,7 +58,7 @@ VerticalGoto(DviWidget dw, int NewPosition)
        dw->dvi.state->y = NewPosition;
 }
 
-void
+static void
 AdjustCacheDeltas (DviWidget dw)
 {
        int extra;
@@ -141,7 +147,7 @@ int charExists (XFontStruct *fi, int c)
 {
        XCharStruct *p;
 
-       /* `c' is always >= 0 */
+       /* 'c' is always >= 0 */
        if (fi->per_char == NULL
            || (unsigned int)c < fi->min_char_or_byte2
            || (unsigned int)c > fi->max_char_or_byte2)
@@ -151,7 +157,7 @@ int charExists (XFontStruct *fi, int c)
                || p->ascent != 0 || p->descent != 0 || p->attributes != 0);
 }
 
-/* `wid' is in device units */
+/* 'wid' is in device units */
 static void
 DoCharacter (DviWidget dw, int c, int wid)
 {
@@ -271,7 +277,8 @@ int FindCharWidth (DviWidget dw, char *buf, int *widp)
 
 /* Return the width of the character in device units. */
 
-int PutCharacter (DviWidget dw, char *buf)
+int
+PutCharacter (DviWidget dw, char *buf)
 {
        int             prevFont;
        int             c = -1;
@@ -379,11 +386,14 @@ PutNumberedCharacter (DviWidget dw, int c)
        }
 }
 
-void
+/* unused */
+#if 0
+static void
 ClearPage (DviWidget dw)
 {
        XClearWindow (XtDisplay (dw), XtWindow (dw));
 }
+#endif
 
 static void
 setGC (DviWidget dw)
diff --git a/src/devices/xditview/draw.h b/src/devices/xditview/draw.h
new file mode 100644 (file)
index 0000000..7a3772c
--- /dev/null
@@ -0,0 +1,18 @@
+void HorizontalGoto(DviWidget, int);
+void VerticalGoto(DviWidget, int);
+void VerticalMove(DviWidget, int);
+void FlushCharCache(DviWidget);
+void Newline(DviWidget);
+void Word(DviWidget);
+int PutCharacter(DviWidget, char *);
+void PutNumberedCharacter(DviWidget, int);
+void DrawLine(DviWidget, int, int);
+void DrawCircle(DviWidget, int);
+void DrawFilledCircle(DviWidget, int);
+void DrawEllipse(DviWidget, int, int);
+void DrawFilledEllipse(DviWidget, int, int);
+void DrawArc(DviWidget, int, int, int, int);
+void DrawPolygon(DviWidget, int *, int);
+void DrawFilledPolygon(DviWidget, int *, int);
+void DrawSpline(DviWidget, int *, int);
+
index c111a7b..97eb46e 100644 (file)
 #include <stdio.h>
 #include <ctype.h>
 #include <stdlib.h>
+
 #include "DviP.h"
 #include "XFontName.h"
+#include "font.h"
 
+/* forward reference */
 static void DisposeFontSizes(DviWidget, DviFontSizeList *);
-void DestroyFontMap(DviFontMap *);
 
 static char *
 savestr (const char *s)
@@ -135,7 +137,7 @@ ConvertFontNameToEncoding (char *n)
        return n;
 }
 
-DviFontSizeList *
+static DviFontSizeList *
 InstallFontSizes (DviWidget dw, const char *x_name, Boolean *scalablep)
 {
        char    fontNameString[2048];
diff --git a/src/devices/xditview/font.h b/src/devices/xditview/font.h
new file mode 100644 (file)
index 0000000..ae6c765
--- /dev/null
@@ -0,0 +1,6 @@
+void DestroyFontMap(DviFontMap *);
+void ForgetFonts (DviWidget dw);
+int MaxFontPosition (DviWidget dw);
+void ParseFontMap (DviWidget dw);
+void SetFontPosition (DviWidget dw, int position, const char *dvi_name,
+                      const char *extra);
similarity index 70%
rename from src/devices/xditview/gxditview.man
rename to src/devices/xditview/gxditview.1.man
index d644b53..a44de7d 100644 (file)
@@ -1,47 +1,58 @@
-.TH GXDITVIEW @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
+.TH GXDITVIEW @MAN1EXT@ "@MDATE@" "groff @VERSION@"
 .SH NAME
 gxditview \- display groff intermediate output files
 .
 .
-.\" --------------------------------------------------------------------
-.\" Legalese
-.\" --------------------------------------------------------------------
-.
-.de co
-Copyright \[co] 1989, Massachusetts Institute of Technology.
-.br
-See
-.BR X (7)
-for a full statement of rights and permissions.
-..
-.
-.de au
-Keith Packard (MIT X Consortium)
-.br
-Richard L.\& Hyde (Purdue)
-.br
-David Slattengren (Berkeley)
-.br
-Malcolm Slaney (Schlumberger Palo Alto Research)
-.br
-Mark Moraes (University of Toronto)
-.br
-James Clark
-..
-.
-.\" --------------------------------------------------------------------
+.\" ====================================================================
+.\" Legal Terms
+.\" ====================================================================
+.\"
+.\" Copyright 1991 Massachusetts Institute of Technology
+.\"
+.\" Permission to use, copy, modify, distribute, and sell this software
+.\" and its documentation for any purpose is hereby granted without fee,
+.\" provided that the above copyright notice appear in all copies and
+.\" that both that copyright notice and this permission notice appear in
+.\" supporting documentation, and that the name of M.I.T. not be used in
+.\" advertising or publicity pertaining to distribution of the software
+.\" without specific, written prior permission.  M.I.T. makes no
+.\" representations about the suitability of this software for any
+.\" purpose.  It is provided "as is" without express or implied
+.\" warranty.
+.\"
+.\" M.I.T. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+.\" INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN
+.\" NO EVENT SHALL M.I.T.  BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+.\" CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
+.\" OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.
+.
+.\" ====================================================================
 .SH SYNOPSIS
-.\" --------------------------------------------------------------------
-.
-.B \%gxditview
-.RI [\fB\- toolkitoption\  .\|.\|.\|]
-.RI [\fB\- option\  .\|.\|.\|]
-.RI [ filename ]
+.\" ====================================================================
+.
+.SY gxditview
+.RI [ X-toolkit-option \&.\|.\|.\&]
+.OP \-backingStore backing-store-type
+.OP \-filename string
+.OP \-page n
+.OP \-printCommand string
+.OP \-resolution res
+.RI [ file ]
+.YS
+.
+.SY gxditview
+.B \-help
+.SY gxditview
+.B \-\-help
+.YS
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH DESCRIPTION
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The
 .B \%gxditview
@@ -135,7 +146,7 @@ option
 produces
 .I intermediate output
 for the
-.I Postscript
+.I PostScript
 device and subsequently uses
 .B \%gxditview
 as a viewer for it.
@@ -273,18 +284,20 @@ The
 .B paperlength
 and
 .B paperwidth
-commands in the DESC file specify the length and width in machine units
-of the virtual page displayed by
+commands in the
+.I DESC
+file specify the length and width in machine units of the virtual page
+displayed by
 .BR \%gxditview .
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH OPTIONS
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The
 .B \%gxditview
-program accepts all of the standard X\~Toolkit command line options
+program accepts all of the standard X\~Toolkit command-line options
 along with the additional options listed below:
 .
 .TP 8
@@ -324,7 +337,9 @@ The
 .I groff intermediate output
 file will be displayed at a resolution of
 .I res
-dpi, unless the DESC file contains the
+dpi, unless the
+.I DESC
+file contains the
 .B X11
 command, in which case the device resolution will be used.
 .
@@ -347,7 +362,7 @@ This can be either a filename, or a command starting with
 .
 .
 .PP
-The following standard X\~Toolkit command line arguments are commonly
+The following standard X\~Toolkit command-line arguments are commonly
 used with
 .BR \%gxditview :
 .
@@ -399,9 +414,9 @@ This option specifies the X\~server to contact.
 This option specifies a resource string to be used.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH X DEFAULTS
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 This program uses the
 .I Dvi
@@ -462,15 +477,14 @@ SS        -adobe-symbol-medium-r-normal--*-100-*-*-*-*-adobe-fontspecific\en\e
 .fi
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH ENVIRONMENT
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .TP
-.SM
-.B GROFF_FONT_PATH
+.I GROFF_FONT_PATH
 A list of directories in which to search for the
-.BI dev name
+.IR dev name
 directory in addition to the default ones.
 .
 See
@@ -480,19 +494,19 @@ and
 for more details.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH FILES
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .TP
-.B @APPRESDIR@/GXditview
+.I @APPRESDIR@/GXditview
 .TQ
-.B @APPRESDIR@/GXditview-color
+.I @APPRESDIR@/GXditview\-color
 The default resource files of
 .BR \%gxditview .
 .
 Users should override these values in the
-.B .Xdefaults
+.I .Xdefaults
 file, normally located in the user's home directory.
 .
 See
@@ -502,9 +516,25 @@ and
 for more.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
+.SH AUTHORS
+.\" ====================================================================
+.B gxditview
+and its predecessor
+.B xditview
+were written by
+Keith Packard (MIT X Consortium),
+Richard L.\& Hyde (Purdue),
+David Slattengren (Berkeley),
+Malcolm Slaney (Schlumberger Palo Alto Research),
+Mark Moraes (University of Toronto),
+and
+James Clark.
+.
+.
+.\" ====================================================================
 .SH "SEE ALSO"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .BR X (7),
 .BR xrdb (1),
@@ -513,9 +543,9 @@ for more.
 .BR groff_out (@MAN5EXT@)
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH ORIGIN
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 This program is derived from
 .BR \%xditview ;
@@ -527,16 +557,7 @@ which was derived from
 .BR \%suntroff .
 .
 .
-.\" --------------------------------------------------------------------
-.SH COPYRIGHT
-.\" --------------------------------------------------------------------
-.co
-.\" --------------------------------------------------------------------
-.SH AUTHORS
-.\" --------------------------------------------------------------------
-.au
-.
-.
 .\" Local Variables:
 .\" mode: nroff
 .\" End:
+.\" vim: set filetype=groff:
index dfe1e0d..7571101 100644 (file)
@@ -2,7 +2,9 @@
 #include <X11/IntrinsicP.h>
 #include <X11/StringDefs.h>
 #include <stdio.h>
+
 #include "DviP.h"
+#include "lex.h"
 
 int
 DviGetAndPut(DviWidget dw, int *cp)
diff --git a/src/devices/xditview/lex.h b/src/devices/xditview/lex.h
new file mode 100644 (file)
index 0000000..0a4cba0
--- /dev/null
@@ -0,0 +1 @@
+int GetNumber(DviWidget);
index d1c5c9f..dcc655a 100644 (file)
@@ -9,7 +9,9 @@
 #include <X11/StringDefs.h>
 #include <stdio.h>
 #include <ctype.h>
+
 #include "DviP.h"
+#include "page.h"
 
 #ifdef X_NOT_STDC_ENV
 extern long    ftell();
diff --git a/src/devices/xditview/page.h b/src/devices/xditview/page.h
new file mode 100644 (file)
index 0000000..e2c938d
--- /dev/null
@@ -0,0 +1,5 @@
+void DestroyFileMap(DviFileMap *);
+void FileSeek(DviWidget, long);
+void ForgetPagePositions(DviWidget);
+void RememberPagePosition(DviWidget, int);
+long SearchPagePosition(DviWidget, int);
index de7d6ba..2584a8c 100644 (file)
@@ -9,7 +9,13 @@
 #include <X11/StringDefs.h>
 #include <stdio.h>
 #include <ctype.h>
+
 #include "DviP.h"
+#include "draw.h"
+#include "font.h"
+#include "lex.h"
+#include "page.h"
+#include "parse.h"
 
 static int StopSeen = 0;
 static void ParseDrawFunction(DviWidget, char *);
@@ -17,37 +23,6 @@ static void ParseDeviceControl(DviWidget);
 static void push_env(DviWidget);
 static void pop_env(DviWidget);
 
-/* draw.c */
-extern int PutCharacter(DviWidget, char *);
-extern int PutNumberedCharacter(DviWidget, int);
-extern void HorizontalGoto(DviWidget, int);
-extern void Word(DviWidget);
-extern void VerticalGoto(DviWidget, int);
-extern void VerticalMove(DviWidget, int);
-extern void FlushCharCache(DviWidget);
-extern void Newline(DviWidget);
-extern void DrawLine(DviWidget, int, int);
-extern void DrawCircle(DviWidget, int);
-extern void DrawFilledCircle(DviWidget, int);
-extern void DrawEllipse(DviWidget, int, int);
-extern void DrawFilledEllipse(DviWidget, int, int);
-extern void DrawArc(DviWidget, int, int, int, int);
-extern void DrawPolygon(DviWidget, int *, int);
-extern void DrawFilledPolygon(DviWidget, int *, int);
-extern void DrawSpline(DviWidget, int *, int);
-
-/* Dvi.c */
-extern void SetDevice(DviWidget, const char *);
-
-/* page.c */
-extern void RememberPagePosition(DviWidget, int);
-
-/* font.c */
-extern void SetFontPosition(DviWidget, int, const char *, const char *);
-
-/* lex.c */
-extern int GetNumber(DviWidget);
-
 #define HorizontalMove(dw, delta)      ((dw)->dvi.state->x += (delta))
 
 
diff --git a/src/devices/xditview/parse.h b/src/devices/xditview/parse.h
new file mode 100644 (file)
index 0000000..636f3a6
--- /dev/null
@@ -0,0 +1 @@
+int ParseInput(register DviWidget dw);
diff --git a/src/devices/xditview/xditview.am b/src/devices/xditview/xditview.am
new file mode 100644 (file)
index 0000000..8da379a
--- /dev/null
@@ -0,0 +1,121 @@
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Last update: 22 Aug 2015
+#
+# This file is part of groff.
+#
+# groff 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.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+
+GXDITVIEWSOURCES = \
+  src/devices/xditview/device.c \
+  src/devices/xditview/draw.c \
+  src/devices/xditview/draw.h \
+  src/devices/xditview/Dvi.c \
+  src/devices/xditview/font.c \
+  src/devices/xditview/font.h \
+  src/devices/xditview/lex.c \
+  src/devices/xditview/lex.h \
+  src/devices/xditview/page.c \
+  src/devices/xditview/page.h \
+  src/devices/xditview/parse.c \
+  src/devices/xditview/parse.h \
+  src/devices/xditview/xditview.c \
+  src/devices/xditview/device.h \
+  src/devices/xditview/DviP.h \
+  src/devices/xditview/Menu.h \
+  src/devices/xditview/Dvi.h
+
+if WITHOUT_X11
+EXTRA_DIST += $(GXDITVIEWSOURCES)
+else
+xditview_srcdir = $(top_srcdir)/src/devices/xditview
+bin_PROGRAMS += gxditview
+gxditview_CPPFLAGS = $(AM_CPPFLAGS) $(X_CFLAGS) -Dlint \
+  -I$(top_builddir)/src/devices/xditview
+gxditview_LDADD = $(X_LIBS) $(X_PRE_LIBS) -lXaw -lXmu -lXt -lX11 \
+  $(X_EXTRA_LIBS) $(LIBM) libxutil.a lib/libgnu.a
+XDITVIEW_GENHDRS = src/devices/xditview/GXditview-ad.h
+gxditview_SOURCES = $(GXDITVIEWSOURCES)
+nodist_gxditview_SOURCES = $(XDITVIEW_GENHDRS)
+CLEANFILES += $(XDITVIEW_GENHDRS)
+
+man1_MANS += src/devices/xditview/gxditview.1
+
+# Because we defined gxditview_CPPFLAGS, automake renames all the xditview's 
+# objects, adding an "gxditview-" prefix. 
+src/devices/xditview/gxditview-device.$(OBJEXT): defs.h
+src/devices/xditview/gxditview-xditview.$(OBJEXT): $(XDITVIEW_GENHDRS)
+
+src/devices/xditview/GXditview-ad.h: $(xditview_srcdir)/GXditview.ad
+       @echo Making $@
+       $(SHELL) $(xditview_srcdir)/ad2c $(xditview_srcdir)/GXditview.ad > $@
+endif
+
+EXTRA_DIST += \
+  src/devices/xditview/ad2c \
+  src/devices/xditview/ChangeLog \
+  src/devices/xditview/DESC.in \
+  src/devices/xditview/FontMap \
+  src/devices/xditview/GXditview-color.ad \
+  src/devices/xditview/GXditview.ad \
+  src/devices/xditview/README \
+  src/devices/xditview/TODO \
+  src/devices/xditview/gray1.bm \
+  src/devices/xditview/gray2.bm \
+  src/devices/xditview/gray3.bm \
+  src/devices/xditview/gray4.bm \
+  src/devices/xditview/gray5.bm \
+  src/devices/xditview/gray6.bm \
+  src/devices/xditview/gray7.bm \
+  src/devices/xditview/gray8.bm \
+  src/devices/xditview/xdit.bm \
+  src/devices/xditview/xdit_mask.bm \
+  src/devices/xditview/gxditview.1.man
+
+# Custom installation of GXditview.ad and GXditview-color.ad
+install-data-local: install_xditview
+uninstall-local: uninstall_xditview
+
+if WITHOUT_X11
+install_xditview:
+uninstall_xditview:
+else
+install_xditview: $(xditview_srcdir)/GXditview.ad $(xditview_srcdir)/GXditview-color.ad
+       -test -d $(DESTDIR)$(appresdir) \
+         || $(mkinstalldirs) $(DESTDIR)$(appresdir)
+       if test -f $(DESTDIR)$(appresdir)/GXditview; then \
+         mv $(DESTDIR)$(appresdir)/GXditview \
+           $(DESTDIR)$(appresdir)/GXditview.old; \
+       fi
+       if test -f $(DESTDIR)$(appresdir)/GXditview-color; then \
+         mv $(DESTDIR)$(appresdir)/GXditview-color \
+           $(DESTDIR)$(appresdir)/GXditview-color.old; \
+       fi
+       $(INSTALL_DATA) $(xditview_srcdir)/GXditview.ad \
+         $(DESTDIR)$(appresdir)/GXditview
+       $(INSTALL_DATA) $(xditview_srcdir)/GXditview-color.ad \
+         $(DESTDIR)$(appresdir)/GXditview-color
+
+uninstall_xditview:
+       rm -f $(DESTDIR)$(appresdir)/GXditview
+       rm -f $(DESTDIR)$(appresdir)/GXditview-color
+
+endif
+
+
+########################################################################
+### Emacs settings
+# Local Variables:
+# mode: makefile-automake
+# End:
index bd9088f..fbc0f66 100644 (file)
@@ -1,5 +1,5 @@
 /* -*- C -*- */
-/* Copyright (C) 2014  Free Software Foundation, Inc.
+/* Copyright (C) 2014-2018 Free Software Foundation, Inc.
 
 This file is part of groff.
 
index 5cdcfa8..d717c98 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #ifndef ASSERT_H
 #define ASSERT_H
index 5e21f46..72037ee 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #ifndef UCHAR_MAX
 #define UCHAR_MAX 255
index 9765686..502ca6f 100644 (file)
@@ -1,6 +1,6 @@
 // -*- C++ -*-
 /* <groff_src_dir>/src/include/color.h
-Copyright (C) 2001-201 Free Software Foundation, Inc.
+Copyright (C) 2001-2018 Free Software Foundation, Inc.
     Written by Gaius Mulley <gaius@glam.ac.uk>
 
 This file is part of groff.
@@ -16,7 +16,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include <stddef.h>
 #include "symbol.h"
@@ -28,7 +28,6 @@ private:
   color_scheme scheme;
   unsigned int components[4];
   color *next;
-  static color *free_list;
 
   int read_encoding(const color_scheme, const char * const,
                    const size_t);
@@ -39,8 +38,6 @@ public:
   color(symbol s = default_symbol) : scheme(DEFAULT), nm(s) {}
   color(const color * const);
   ~color();
-  void *operator new(size_t);
-  void operator delete(void *);
 
   int operator==(const color & c) const;
   int operator!=(const color & c) const;
index 3f1ff1e..7c271f4 100644 (file)
 /* src/include/config.hin.  Generated from configure.ac by autoheader.  */
 
+/* CPU and C ABI indicator */
+#ifndef __i386__
+#undef __i386__
+#endif
+#ifndef __x86_64_x32__
+#undef __x86_64_x32__
+#endif
+#ifndef __x86_64__
+#undef __x86_64__
+#endif
+#ifndef __alpha__
+#undef __alpha__
+#endif
+#ifndef __arm__
+#undef __arm__
+#endif
+#ifndef __armhf__
+#undef __armhf__
+#endif
+#ifndef __arm64_ilp32__
+#undef __arm64_ilp32__
+#endif
+#ifndef __arm64__
+#undef __arm64__
+#endif
+#ifndef __hppa__
+#undef __hppa__
+#endif
+#ifndef __hppa64__
+#undef __hppa64__
+#endif
+#ifndef __ia64_ilp32__
+#undef __ia64_ilp32__
+#endif
+#ifndef __ia64__
+#undef __ia64__
+#endif
+#ifndef __m68k__
+#undef __m68k__
+#endif
+#ifndef __mips__
+#undef __mips__
+#endif
+#ifndef __mipsn32__
+#undef __mipsn32__
+#endif
+#ifndef __mips64__
+#undef __mips64__
+#endif
+#ifndef __powerpc__
+#undef __powerpc__
+#endif
+#ifndef __powerpc64__
+#undef __powerpc64__
+#endif
+#ifndef __powerpc64_elfv2__
+#undef __powerpc64_elfv2__
+#endif
+#ifndef __riscv32__
+#undef __riscv32__
+#endif
+#ifndef __riscv64__
+#undef __riscv64__
+#endif
+#ifndef __riscv32_ilp32__
+#undef __riscv32_ilp32__
+#endif
+#ifndef __riscv32_ilp32f__
+#undef __riscv32_ilp32f__
+#endif
+#ifndef __riscv32_ilp32d__
+#undef __riscv32_ilp32d__
+#endif
+#ifndef __riscv64_ilp32__
+#undef __riscv64_ilp32__
+#endif
+#ifndef __riscv64_ilp32f__
+#undef __riscv64_ilp32f__
+#endif
+#ifndef __riscv64_ilp32d__
+#undef __riscv64_ilp32d__
+#endif
+#ifndef __riscv64_lp64__
+#undef __riscv64_lp64__
+#endif
+#ifndef __riscv64_lp64f__
+#undef __riscv64_lp64f__
+#endif
+#ifndef __riscv64_lp64d__
+#undef __riscv64_lp64d__
+#endif
+#ifndef __s390__
+#undef __s390__
+#endif
+#ifndef __s390x__
+#undef __s390x__
+#endif
+#ifndef __sh__
+#undef __sh__
+#endif
+#ifndef __sparc__
+#undef __sparc__
+#endif
+#ifndef __sparc64__
+#undef __sparc64__
+#endif
+
+
 /* Define if building universal (internal helper macro) */
 #undef AC_APPLE_UNIVERSAL_BUILD
 
-/* Define if your C++ doesn't understand `delete []'. */
+/* Define if your C++ doesn't understand 'delete []'. */
 #undef ARRAY_DELETE_NEEDS_SIZE
 
+/* Define to the number of bits in type 'ptrdiff_t'. */
+#undef BITSIZEOF_PTRDIFF_T
+
+/* Define to the number of bits in type 'sig_atomic_t'. */
+#undef BITSIZEOF_SIG_ATOMIC_T
+
+/* Define to the number of bits in type 'size_t'. */
+#undef BITSIZEOF_SIZE_T
+
+/* Define to the number of bits in type 'wchar_t'. */
+#undef BITSIZEOF_WCHAR_T
+
+/* Define to the number of bits in type 'wint_t'. */
+#undef BITSIZEOF_WINT_T
+
+/* Define if you wish *printf() functions that have a safe handling of
+   non-IEEE-754 'long double' values. */
+#undef CHECK_PRINTF_SAFE
+
+/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
+   systems. This function is required for `alloca.c' support on those systems.
+   */
+#undef CRAY_STACKSEG_END
+
+/* Define to 1 if using `alloca.c'. */
+#undef C_ALLOCA
+
+/* Define as the bit index in the word where to find bit 0 of the exponent of
+   'double'. */
+#undef DBL_EXPBIT0_BIT
+
+/* Define as the word index where to find the exponent of 'double'. */
+#undef DBL_EXPBIT0_WORD
+
+/* Define as the bit index in the word where to find the sign of 'double'. */
+#undef DBL_SIGNBIT_BIT
+
+/* Define as the word index where to find the sign of 'double'. */
+#undef DBL_SIGNBIT_WORD
+
+/* Define as the bit index in the word where to find bit 0 of the exponent of
+   'float'. */
+#undef FLT_EXPBIT0_BIT
+
+/* Define as the word index where to find the exponent of 'float'. */
+#undef FLT_EXPBIT0_WORD
+
+/* Define as the bit index in the word where to find the sign of 'float'. */
+#undef FLT_SIGNBIT_BIT
+
+/* Define as the word index where to find the sign of 'float'. */
+#undef FLT_SIGNBIT_WORD
+
+/* Define to a C preprocessor expression that evaluates to 1 or 0, depending
+   whether the gnulib module fscanf shall be considered present. */
+#undef GNULIB_FSCANF
+
+/* Define to 1 if printf and friends should be labeled with attribute
+   "__gnu_printf__" instead of "__printf__" */
+#undef GNULIB_PRINTF_ATTRIBUTE_FLAVOR_GNU
+
+/* Define to a C preprocessor expression that evaluates to 1 or 0, depending
+   whether the gnulib module scanf shall be considered present. */
+#undef GNULIB_SCANF
+
+/* Define to a C preprocessor expression that evaluates to 1 or 0, depending
+   whether the gnulib module snprintf shall be considered present. */
+#undef GNULIB_SNPRINTF
+
+/* Define to 1 when the gnulib module fprintf-posix should be tested. */
+#undef GNULIB_TEST_FPRINTF_POSIX
+
+/* Define to 1 when the gnulib module frexp should be tested. */
+#undef GNULIB_TEST_FREXP
+
+/* Define to 1 when the gnulib module frexpl should be tested. */
+#undef GNULIB_TEST_FREXPL
+
+/* Define to 1 when the gnulib module memchr should be tested. */
+#undef GNULIB_TEST_MEMCHR
+
+/* Define to 1 when the gnulib module signbit should be tested. */
+#undef GNULIB_TEST_SIGNBIT
+
+/* Define to 1 when the gnulib module snprintf should be tested. */
+#undef GNULIB_TEST_SNPRINTF
+
+/* Define to 1 when the gnulib module vsnprintf should be tested. */
+#undef GNULIB_TEST_VSNPRINTF
+
+/* Define to 1 when the gnulib module wcwidth should be tested. */
+#undef GNULIB_TEST_WCWIDTH
+
+/* Define to 1 if you have 'alloca' after including <alloca.h>, a header that
+   may be supplied by this distribution. */
+#undef HAVE_ALLOCA
+
+/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
+   */
+#undef HAVE_ALLOCA_H
+
+/* Define to 1 if you have the <bp-sym.h> header file. */
+#undef HAVE_BP_SYM_H
+
 /* Define if you have a C++ <inttypes.h>. */
 #undef HAVE_CC_INTTYPES_H
 
 /* Define if you have a C++ <osfcn.h>. */
 #undef HAVE_CC_OSFCN_H
 
+/* Define if the copysignf function is declared in <math.h> and available in
+   libc. */
+#undef HAVE_COPYSIGNF_IN_LIBC
+
+/* Define if the copysignl function is declared in <math.h> and available in
+   libc. */
+#undef HAVE_COPYSIGNL_IN_LIBC
+
+/* Define if the copysign function is declared in <math.h> and available in
+   libc. */
+#undef HAVE_COPYSIGN_IN_LIBC
+
+/* Define to 1 if you have the <crtdefs.h> header file. */
+#undef HAVE_CRTDEFS_H
+
+/* Define to 1 if you have the declaration of `alarm', and to 0 if you don't.
+   */
+#undef HAVE_DECL_ALARM
+
+/* Define to 1 if you have the declaration of `copysign', and to 0 if you
+   don't. */
+#undef HAVE_DECL_COPYSIGN
+
+/* Define to 1 if you have the declaration of `copysignf', and to 0 if you
+   don't. */
+#undef HAVE_DECL_COPYSIGNF
+
+/* Define to 1 if you have the declaration of `copysignl', and to 0 if you
+   don't. */
+#undef HAVE_DECL_COPYSIGNL
+
 /* Define to 1 if you have the declaration of `getc_unlocked', and to 0 if you
    don't. */
 #undef HAVE_DECL_GETC_UNLOCKED
 
+/* Define to 1 if you have the declaration of `snprintf', and to 0 if you
+   don't. */
+#undef HAVE_DECL_SNPRINTF
+
 /* Define to 1 if you have the declaration of `sys_siglist', and to 0 if you
    don't. */
 #undef HAVE_DECL_SYS_SIGLIST
 
+/* Define to 1 if you have the declaration of `towlower', and to 0 if you
+   don't. */
+#undef HAVE_DECL_TOWLOWER
+
+/* Define to 1 if you have the declaration of `vsnprintf', and to 0 if you
+   don't. */
+#undef HAVE_DECL_VSNPRINTF
+
+/* Define to 1 if you have the declaration of `wcwidth', and to 0 if you
+   don't. */
+#undef HAVE_DECL_WCWIDTH
+
+/* Define to 1 if you have the declaration of `_snprintf', and to 0 if you
+   don't. */
+#undef HAVE_DECL__SNPRINTF
+
 /* Define to 1 if you have the <direct.h> header file. */
 #undef HAVE_DIRECT_H
 
 /* Define to 1 if you have the <dirent.h> header file. */
 #undef HAVE_DIRENT_H
 
+/* Define to 1 if you have the <features.h> header file. */
+#undef HAVE_FEATURES_H
+
 /* Define to 1 if you have the `fmod' function. */
 #undef HAVE_FMOD
 
+/* Define if the frexpl function is available in libc. */
+#undef HAVE_FREXPL_IN_LIBC
+
+/* Define if the frexp function is available in libc. */
+#undef HAVE_FREXP_IN_LIBC
+
 /* Define to 1 if you have the `getcwd' function. */
 #undef HAVE_GETCWD
 
 /* Define if you have the iconv() function and it works. */
 #undef HAVE_ICONV
 
+/* Define if you have the 'intmax_t' type in <stdint.h> or <inttypes.h>. */
+#undef HAVE_INTMAX_T
+
 /* Define to 1 if you have the <inttypes.h> header file. */
 #undef HAVE_INTTYPES_H
 
+/* Define if <inttypes.h> exists, doesn't clash with <sys/types.h>, and
+   declares uintmax_t. */
+#undef HAVE_INTTYPES_H_WITH_UINTMAX
+
 /* Define to 1 if you have the `isatty' function. */
 #undef HAVE_ISATTY
 
+/* Define if the isnan(double) function is available in libc. */
+#undef HAVE_ISNAND_IN_LIBC
+
+/* Define if the isnan(float) function is available in libc. */
+#undef HAVE_ISNANF_IN_LIBC
+
+/* Define if the isnan(long double) function is available in libc. */
+#undef HAVE_ISNANL_IN_LIBC
+
+/* Define to 1 if you have the `iswcntrl' function. */
+#undef HAVE_ISWCNTRL
+
 /* Define to 1 if you have the `kill' function. */
 #undef HAVE_KILL
 
 /* Define if you have <langinfo.h> and nl_langinfo(CODESET). */
 #undef HAVE_LANGINFO_CODESET
 
+/* Define if the ldexpl function is available in libc. */
+#undef HAVE_LDEXPL_IN_LIBC
+
+/* Define if the ldexp function is available in libc. */
+#undef HAVE_LDEXP_IN_LIBC
+
 /* Define to 1 if you have the <limits.h> header file. */
 #undef HAVE_LIMITS_H
 
+/* Define to 1 if the system has the type 'long long int'. */
+#undef HAVE_LONG_LONG_INT
+
+/* Define to 1 if mmap()'s MAP_ANONYMOUS flag is available after including
+   config.h and <sys/mman.h>. */
+#undef HAVE_MAP_ANONYMOUS
+
 /* Define to 1 if you have the <math.h> header file. */
 #undef HAVE_MATH_H
 
+/* Define to 1 if you have the `mbrtowc' function. */
+#undef HAVE_MBRTOWC
+
 /* Define to 1 if you have the <memory.h> header file. */
 #undef HAVE_MEMORY_H
 
 /* Define to 1 if you have a working `mmap' system call. */
 #undef HAVE_MMAP
 
+/* Define to 1 if you have the `mprotect' function. */
+#undef HAVE_MPROTECT
+
+/* Define to 1 if you have the `nl_langinfo' function. */
+#undef HAVE_NL_LANGINFO
+
 /* Define to 1 if you have the <process.h> header file. */
 #undef HAVE_PROCESS_H
 
 /* Define to 1 if you have the `rename' function. */
 #undef HAVE_RENAME
 
+/* Define to 1 if 'long double' and 'double' have the same representation. */
+#undef HAVE_SAME_LONG_DOUBLE_AS_DOUBLE
+
 /* Define to 1 if you have the `setlocale' function. */
 #undef HAVE_SETLOCALE
 
+/* Define to 1 if 'sig_atomic_t' is a signed integer type. */
+#undef HAVE_SIGNED_SIG_ATOMIC_T
+
+/* Define to 1 if 'wchar_t' is a signed integer type. */
+#undef HAVE_SIGNED_WCHAR_T
+
+/* Define to 1 if 'wint_t' is a signed integer type. */
+#undef HAVE_SIGNED_WINT_T
+
 /* Define to 1 if you have the `snprintf' function. */
 #undef HAVE_SNPRINTF
 
+/* Define if the return value of the snprintf function is the number of of
+   bytes (excluding the terminating NUL) that would have been produced if the
+   buffer had been large enough. */
+#undef HAVE_SNPRINTF_RETVAL_C99
+
 /* Define to 1 if you have the <stddef.h> header file. */
 #undef HAVE_STDDEF_H
 
 /* Define to 1 if you have the <stdint.h> header file. */
 #undef HAVE_STDINT_H
 
+/* Define if <stdint.h> exists, doesn't clash with <sys/types.h>, and declares
+   uintmax_t. */
+#undef HAVE_STDINT_H_WITH_UINTMAX
+
 /* Define to 1 if you have the <stdlib.h> header file. */
 #undef HAVE_STDLIB_H
 
 /* Define to 1 if you have the `strncasecmp' function. */
 #undef HAVE_STRNCASECMP
 
+/* Define to 1 if you have the `strnlen' function. */
+#undef HAVE_STRNLEN
+
 /* Define to 1 if you have the `strsep' function. */
 #undef HAVE_STRSEP
 
 /* Define to 1 if you have the `symlink' function. */
 #undef HAVE_SYMLINK
 
+/* Define to 1 if you have the <sys/bitypes.h> header file. */
+#undef HAVE_SYS_BITYPES_H
+
 /* Define to 1 if you have the <sys/dir.h> header file. */
 #undef HAVE_SYS_DIR_H
 
 /* Define if you have sys_errlist in <errno.h>, <stdio.h>, or <stdlib.h>. */
 #undef HAVE_SYS_ERRLIST
 
+/* Define to 1 if you have the <sys/inttypes.h> header file. */
+#undef HAVE_SYS_INTTYPES_H
+
+/* Define to 1 if you have the <sys/mman.h> header file. */
+#undef HAVE_SYS_MMAN_H
+
 /* Define if you have sys_nerr in <errno.h>, <stdio.h>, or <stdio.h>. */
 #undef HAVE_SYS_NERR
 
 /* Define to 1 if you have the <sys/types.h> header file. */
 #undef HAVE_SYS_TYPES_H
 
+/* Define to 1 if you have the `towlower' function. */
+#undef HAVE_TOWLOWER
+
+/* uchardet library availability */
+#undef HAVE_UCHARDET
+
 /* Define to 1 if you have the <unistd.h> header file. */
 #undef HAVE_UNISTD_H
 
+/* Define to 1 if the system has the type 'unsigned long long int'. */
+#undef HAVE_UNSIGNED_LONG_LONG_INT
+
+/* Define to 1 if you have the `vasnprintf' function. */
+#undef HAVE_VASNPRINTF
+
 /* Define to 1 if you have the `vsnprintf' function. */
 #undef HAVE_VSNPRINTF
 
+/* Define to 1 if you have the <wchar.h> header file. */
+#undef HAVE_WCHAR_H
+
+/* Define if you have the 'wchar_t' type. */
+#undef HAVE_WCHAR_T
+
+/* Define to 1 if you have the `wcrtomb' function. */
+#undef HAVE_WCRTOMB
+
+/* Define to 1 if you have the `wcslen' function. */
+#undef HAVE_WCSLEN
+
+/* Define to 1 if you have the `wcsnlen' function. */
+#undef HAVE_WCSNLEN
+
+/* Define to 1 if you have the <wctype.h> header file. */
+#undef HAVE_WCTYPE_H
+
+/* Define to 1 if you have the `wcwidth' function. */
+#undef HAVE_WCWIDTH
+
+/* Define if you have the 'wint_t' type. */
+#undef HAVE_WINT_T
+
 /* Define to 1 if O_NOATIME works. */
 #undef HAVE_WORKING_O_NOATIME
 
 /* Define to 1 if O_NOFOLLOW works. */
 #undef HAVE_WORKING_O_NOFOLLOW
 
+/* Define to 1 if you have the `__fseterr' function. */
+#undef HAVE___FSETERR
+
 /* Define as const if the declaration of iconv() needs const. */
 #undef ICONV_CONST
 
 /* Define if the host's encoding is EBCDIC. */
 #undef IS_EBCDIC_HOST
 
+/* Define as the bit index in the word where to find bit 0 of the exponent of
+   'long double'. */
+#undef LDBL_EXPBIT0_BIT
+
+/* Define as the word index where to find the exponent of 'long double'. */
+#undef LDBL_EXPBIT0_WORD
+
+/* Define as the bit index in the word where to find the sign of 'long
+   double'. */
+#undef LDBL_SIGNBIT_BIT
+
+/* Define as the word index where to find the sign of 'long double'. */
+#undef LDBL_SIGNBIT_WORD
+
 /* Define if localtime() takes a long * not a time_t *. */
 #undef LONG_FOR_TIME_T
 
+/* Define to a substitute value for mmap()'s MAP_ANONYMOUS flag. */
+#undef MAP_ANONYMOUS
+
+/* Use GNU style printf and scanf.  */
+#ifndef __USE_MINGW_ANSI_STDIO
+# undef __USE_MINGW_ANSI_STDIO
+#endif
+
+
 /* Define if your C++ doesn't declare gettimeofday(). */
 #undef NEED_DECLARATION_GETTIMEOFDAY
 
-/* Define if your C++ doesn't declare hypot(). */
-#undef NEED_DECLARATION_HYPOT
-
 /* Define if your C++ doesn't declare pclose(). */
 #undef NEED_DECLARATION_PCLOSE
 
 /* Define if your C++ doesn't declare rand(). */
 #undef NEED_DECLARATION_RAND
 
-/* Define if your C++ doesn't declare snprintf(). */
-#undef NEED_DECLARATION_SNPRINTF
-
 /* Define if your C++ doesn't declare srand(). */
 #undef NEED_DECLARATION_SRAND
 
 /* Define if your C++ doesn't declare vfprintf(). */
 #undef NEED_DECLARATION_VFPRINTF
 
-/* Define if your C++ doesn't declare vsnprintf(). */
-#undef NEED_DECLARATION_VSNPRINTF
+/* Define if the vasnprintf implementation needs special code for the 'a' and
+   'A' directives. */
+#undef NEED_PRINTF_DIRECTIVE_A
+
+/* Define if the vasnprintf implementation needs special code for the 'F'
+   directive. */
+#undef NEED_PRINTF_DIRECTIVE_F
+
+/* Define if the vasnprintf implementation needs special code for the 'ls'
+   directive. */
+#undef NEED_PRINTF_DIRECTIVE_LS
+
+/* Define if the vasnprintf implementation needs special code for 'double'
+   arguments. */
+#undef NEED_PRINTF_DOUBLE
+
+/* Define if the vasnprintf implementation needs special code for surviving
+   out-of-memory conditions. */
+#undef NEED_PRINTF_ENOMEM
+
+/* Define if the vasnprintf implementation needs special code for the ' flag.
+   */
+#undef NEED_PRINTF_FLAG_GROUPING
+
+/* Define if the vasnprintf implementation needs special code for the '-'
+   flag. */
+#undef NEED_PRINTF_FLAG_LEFTADJUST
+
+/* Define if the vasnprintf implementation needs special code for the 0 flag.
+   */
+#undef NEED_PRINTF_FLAG_ZERO
+
+/* Define if the vasnprintf implementation needs special code for infinite
+   'double' arguments. */
+#undef NEED_PRINTF_INFINITE_DOUBLE
+
+/* Define if the vasnprintf implementation needs special code for infinite
+   'long double' arguments. */
+#undef NEED_PRINTF_INFINITE_LONG_DOUBLE
+
+/* Define if the vasnprintf implementation needs special code for 'long
+   double' arguments. */
+#undef NEED_PRINTF_LONG_DOUBLE
+
+/* Define if the vasnprintf implementation needs special code for supporting
+   large precisions without arbitrary bounds. */
+#undef NEED_PRINTF_UNBOUNDED_PRECISION
+
+/* Name of package */
+#undef PACKAGE
 
 /* Define to the address where bug reports for this package should be sent. */
 #undef PACKAGE_BUGREPORT
 /* Define if the printer's page size is A4. */
 #undef PAGEA4
 
-/* Define as the return type of signal handlers (`int' or `void'). */
+/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
+   'ptrdiff_t'. */
+#undef PTRDIFF_T_SUFFIX
+
+/* Define if fprintf is overridden by a POSIX compliant gnulib implementation.
+   */
+#undef REPLACE_FPRINTF_POSIX
+
+/* Define if vasnprintf exists but is overridden by gnulib. */
+#undef REPLACE_VASNPRINTF
+
+/* Define as the return type of signal handlers ('int' or 'void'). */
 #undef RETSIGTYPE
 
 /* Define if srand() returns void not int. */
 #undef RET_TYPE_SRAND_IS_VOID
 
+/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
+   'sig_atomic_t'. */
+#undef SIG_ATOMIC_T_SUFFIX
+
+/* Define as the maximum value of type 'size_t', if the system doesn't define
+   it. */
+#ifndef SIZE_MAX
+# undef SIZE_MAX
+#endif
+
+/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
+   'size_t'. */
+#undef SIZE_T_SUFFIX
+
+/* If using the C implementation of alloca, define if you know the
+   direction of stack growth for your system; otherwise it will be
+   automatically deduced at runtime.
+       STACK_DIRECTION > 0 => grows toward higher addresses
+       STACK_DIRECTION < 0 => grows toward lower addresses
+       STACK_DIRECTION = 0 => direction of growth unknown */
+#undef STACK_DIRECTION
+
 /* Define to 1 if you have the ANSI C header files. */
 #undef STDC_HEADERS
 
 #ifndef _ALL_SOURCE
 # undef _ALL_SOURCE
 #endif
+/* Enable general extensions on macOS.  */
+#ifndef _DARWIN_C_SOURCE
+# undef _DARWIN_C_SOURCE
+#endif
 /* Enable GNU extensions on systems that have them.  */
 #ifndef _GNU_SOURCE
 # undef _GNU_SOURCE
 #endif
+/* Enable NetBSD extensions on NetBSD.  */
+#ifndef _NETBSD_SOURCE
+# undef _NETBSD_SOURCE
+#endif
+/* Enable OpenBSD extensions on NetBSD.  */
+#ifndef _OPENBSD_SOURCE
+# undef _OPENBSD_SOURCE
+#endif
 /* Enable threading extensions on Solaris.  */
 #ifndef _POSIX_PTHREAD_SEMANTICS
 # undef _POSIX_PTHREAD_SEMANTICS
 #endif
+/* Enable extensions specified by ISO/IEC TS 18661-5:2014.  */
+#ifndef __STDC_WANT_IEC_60559_ATTRIBS_EXT__
+# undef __STDC_WANT_IEC_60559_ATTRIBS_EXT__
+#endif
+/* Enable extensions specified by ISO/IEC TS 18661-1:2014.  */
+#ifndef __STDC_WANT_IEC_60559_BFP_EXT__
+# undef __STDC_WANT_IEC_60559_BFP_EXT__
+#endif
+/* Enable extensions specified by ISO/IEC TS 18661-2:2015.  */
+#ifndef __STDC_WANT_IEC_60559_DFP_EXT__
+# undef __STDC_WANT_IEC_60559_DFP_EXT__
+#endif
+/* Enable extensions specified by ISO/IEC TS 18661-4:2015.  */
+#ifndef __STDC_WANT_IEC_60559_FUNCS_EXT__
+# undef __STDC_WANT_IEC_60559_FUNCS_EXT__
+#endif
+/* Enable extensions specified by ISO/IEC TS 18661-3:2015.  */
+#ifndef __STDC_WANT_IEC_60559_TYPES_EXT__
+# undef __STDC_WANT_IEC_60559_TYPES_EXT__
+#endif
+/* Enable extensions specified by ISO/IEC TR 24731-2:2010.  */
+#ifndef __STDC_WANT_LIB_EXT2__
+# undef __STDC_WANT_LIB_EXT2__
+#endif
+/* Enable extensions specified by ISO/IEC 24747:2009.  */
+#ifndef __STDC_WANT_MATH_SPEC_FUNCS__
+# undef __STDC_WANT_MATH_SPEC_FUNCS__
+#endif
 /* Enable extensions on HP NonStop.  */
 #ifndef _TANDEM_SOURCE
 # undef _TANDEM_SOURCE
 #endif
+/* Enable X/Open extensions if necessary.  HP-UX 11.11 defines
+   mbstate_t only if _XOPEN_SOURCE is defined to 500, regardless of
+   whether compiling with -Ae or -D_HPUX_SOURCE=1.  */
+#ifndef _XOPEN_SOURCE
+# undef _XOPEN_SOURCE
+#endif
+/* Enable X/Open compliant socket functions that do not require linking
+   with -lxnet on HP-UX 11.11.  */
+#ifndef _HPUX_ALT_XOPEN_SOCKET_API
+# undef _HPUX_ALT_XOPEN_SOCKET_API
+#endif
 /* Enable general extensions on Solaris.  */
 #ifndef __EXTENSIONS__
 # undef __EXTENSIONS__
 #endif
 
 
+/* Version number of package */
+#undef VERSION
+
+/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
+   'wchar_t'. */
+#undef WCHAR_T_SUFFIX
+
 /* Define if the 0200 bit of the status returned by wait() indicates whether a
    core image was produced for a process that was terminated by a signal. */
 #undef WCOREFLAG
 
+/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
+   'wint_t'. */
+#undef WINT_T_SUFFIX
+
 /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
    significant byte first (like Motorola and SPARC, unlike Intel). */
 #if defined AC_APPLE_UNIVERSAL_BUILD
 /* Define to 1 if on MINIX. */
 #undef _MINIX
 
+/* Define to 1 to make NetBSD features available. MINIX 3 needs this. */
+#undef _NETBSD_SOURCE
+
+/* The _Noreturn keyword of C11.  */
+#if ! (defined _Noreturn \
+       || (defined __STDC_VERSION__ && 201112 <= __STDC_VERSION__))
+# if (3 <= __GNUC__ || (__GNUC__ == 2 && 8 <= __GNUC_MINOR__) \
+      || 0x5110 <= __SUNPRO_C)
+#  define _Noreturn __attribute__ ((__noreturn__))
+# elif defined _MSC_VER && 1200 <= _MSC_VER
+#  define _Noreturn __declspec (noreturn)
+# else
+#  define _Noreturn
+# endif
+#endif
+
+
 /* Define to 2 if the system does not provide POSIX.1 features except with
    this defined. */
 #undef _POSIX_1_SOURCE
 /* Define if you have ISC 3.x or 4.x. */
 #undef _SYSV3
 
-/* Define uintmax_t to `unsigned long' or `unsigned long long' if <inttypes.h>
+/* For standard stat data types on VMS. */
+#undef _USE_STD_STAT
+
+/* Define to 1 if the system <stdint.h> predates C++11. */
+#undef __STDC_CONSTANT_MACROS
+
+/* Define to 1 if the system <stdint.h> predates C++11. */
+#undef __STDC_LIMIT_MACROS
+
+/* Please see the Gnulib manual for how to use these macros.
+
+   Suppress extern inline with HP-UX cc, as it appears to be broken; see
+   <https://lists.gnu.org/r/bug-texinfo/2013-02/msg00030.html>.
+
+   Suppress extern inline with Sun C in standards-conformance mode, as it
+   mishandles inline functions that call each other.  E.g., for 'inline void f
+   (void) { } inline void g (void) { f (); }', c99 incorrectly complains
+   'reference to static identifier "f" in extern inline function'.
+   This bug was observed with Sun C 5.12 SunOS_i386 2011/11/16.
+
+   Suppress extern inline (with or without __attribute__ ((__gnu_inline__)))
+   on configurations that mistakenly use 'static inline' to implement
+   functions or macros in standard C headers like <ctype.h>.  For example,
+   if isdigit is mistakenly implemented via a static inline function,
+   a program containing an extern inline function that calls isdigit
+   may not work since the C standard prohibits extern inline functions
+   from calling static functions (ISO C 99 section 6.7.4.(3).
+   This bug is known to occur on:
+
+     OS X 10.8 and earlier; see:
+     https://lists.gnu.org/r/bug-gnulib/2012-12/msg00023.html
+
+     DragonFly; see
+     http://muscles.dragonflybsd.org/bulk/bleeding-edge-potential/latest-per-pkg/ah-tty-0.3.12.log
+
+     FreeBSD; see:
+     https://lists.gnu.org/r/bug-gnulib/2014-07/msg00104.html
+
+   OS X 10.9 has a macro __header_inline indicating the bug is fixed for C and
+   for clang but remains for g++; see <https://trac.macports.org/ticket/41033>.
+   Assume DragonFly and FreeBSD will be similar.
+
+   GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99
+   inline semantics, unless -fgnu89-inline is used.  It defines a macro
+   __GNUC_STDC_INLINE__ to indicate this situation or a macro
+   __GNUC_GNU_INLINE__ to indicate the opposite situation.
+   GCC 4.2 with -std=c99 or -std=gnu99 implements the GNU C inline
+   semantics but warns, unless -fgnu89-inline is used:
+     warning: C99 inline functions are not supported; using GNU89
+     warning: to disable this warning use -fgnu89-inline or the gnu_inline function attribute
+   It defines a macro __GNUC_GNU_INLINE__ to indicate this situation.
+ */
+#if (((defined __APPLE__ && defined __MACH__) \
+      || defined __DragonFly__ || defined __FreeBSD__) \
+     && (defined __header_inline \
+         ? (defined __cplusplus && defined __GNUC_STDC_INLINE__ \
+            && ! defined __clang__) \
+         : ((! defined _DONT_USE_CTYPE_INLINE_ \
+             && (defined __GNUC__ || defined __cplusplus)) \
+            || (defined _FORTIFY_SOURCE && 0 < _FORTIFY_SOURCE \
+                && defined __GNUC__ && ! defined __cplusplus))))
+# define _GL_EXTERN_INLINE_STDHEADER_BUG
+#endif
+#if ((__GNUC__ \
+      ? defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ \
+      : (199901L <= __STDC_VERSION__ \
+         && !defined __HP_cc \
+         && !defined __PGI \
+         && !(defined __SUNPRO_C && __STDC__))) \
+     && !defined _GL_EXTERN_INLINE_STDHEADER_BUG)
+# define _GL_INLINE inline
+# define _GL_EXTERN_INLINE extern inline
+# define _GL_EXTERN_INLINE_IN_USE
+#elif (2 < __GNUC__ + (7 <= __GNUC_MINOR__) && !defined __STRICT_ANSI__ \
+       && !defined _GL_EXTERN_INLINE_STDHEADER_BUG)
+# if defined __GNUC_GNU_INLINE__ && __GNUC_GNU_INLINE__
+   /* __gnu_inline__ suppresses a GCC 4.2 diagnostic.  */
+#  define _GL_INLINE extern inline __attribute__ ((__gnu_inline__))
+# else
+#  define _GL_INLINE extern inline
+# endif
+# define _GL_EXTERN_INLINE extern
+# define _GL_EXTERN_INLINE_IN_USE
+#else
+# define _GL_INLINE static _GL_UNUSED
+# define _GL_EXTERN_INLINE static _GL_UNUSED
+#endif
+
+/* In GCC 4.6 (inclusive) to 5.1 (exclusive),
+   suppress bogus "no previous prototype for 'FOO'"
+   and "no previous declaration for 'FOO'" diagnostics,
+   when FOO is an inline function in the header; see
+   <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=54113> and
+   <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63877>.  */
+#if __GNUC__ == 4 && 6 <= __GNUC_MINOR__
+# if defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__
+#  define _GL_INLINE_HEADER_CONST_PRAGMA
+# else
+#  define _GL_INLINE_HEADER_CONST_PRAGMA \
+     _Pragma ("GCC diagnostic ignored \"-Wsuggest-attribute=const\"")
+# endif
+# define _GL_INLINE_HEADER_BEGIN \
+    _Pragma ("GCC diagnostic push") \
+    _Pragma ("GCC diagnostic ignored \"-Wmissing-prototypes\"") \
+    _Pragma ("GCC diagnostic ignored \"-Wmissing-declarations\"") \
+    _GL_INLINE_HEADER_CONST_PRAGMA
+# define _GL_INLINE_HEADER_END \
+    _Pragma ("GCC diagnostic pop")
+#else
+# define _GL_INLINE_HEADER_BEGIN
+# define _GL_INLINE_HEADER_END
+#endif
+
+/* Define to `__inline__' or `__inline' if that's what the C compiler
+   calls it, or to nothing if 'inline' is not supported under any name.  */
+#ifndef __cplusplus
+#undef inline
+#endif
+
+/* Define to long or long long if <stdint.h> and <inttypes.h> don't define. */
+#undef intmax_t
+
+/* Work around a bug in Apple GCC 4.0.1 build 5465: In C99 mode, it supports
+   the ISO C 99 semantics of 'extern inline' (unlike the GNU C semantics of
+   earlier versions), but does not display it by setting __GNUC_STDC_INLINE__.
+   __APPLE__ && __MACH__ test for Mac OS X.
+   __APPLE_CC__ tests for the Apple compiler and its version.
+   __STDC_VERSION__ tests for the C99 mode.  */
+#if defined __APPLE__ && defined __MACH__ && __APPLE_CC__ >= 5465 && !defined __cplusplus && __STDC_VERSION__ >= 199901L && !defined __GNUC_STDC_INLINE__
+# define __GNUC_STDC_INLINE__ 1
+#endif
+
+/* Define to `int' if <sys/types.h> does not define. */
+#undef mode_t
+
+/* Define to `int' if <sys/types.h> does not define. */
+#undef pid_t
+
+/* Define as the type of the result of subtracting two pointers, if the system
+   doesn't define it. */
+#undef ptrdiff_t
+
+/* Define to the equivalent of the C99 'restrict' keyword, or to
+   nothing if this is not supported.  Do not define if restrict is
+   supported directly.  */
+#undef restrict
+/* Work around a bug in Sun C++: it does not support _Restrict or
+   __restrict__, even though the corresponding Sun C compiler ends up with
+   "#define restrict _Restrict" or "#define restrict __restrict__" in the
+   previous line.  Perhaps some future version of Sun C++ will work with
+   restrict; if so, hopefully it defines __RESTRICT like Sun C does.  */
+#if defined __SUNPRO_CC && !defined __RESTRICT
+# define _Restrict
+# define __restrict__
+#endif
+
+/* Define to `unsigned int' if <sys/types.h> does not define. */
+#undef size_t
+
+/* Define as a signed type of the same size as size_t. */
+#undef ssize_t
+
+/* Define uintmax_t to 'unsigned long' or 'unsigned long long' if <inttypes.h>
    does not exist. */
 #undef uintmax_t
+
+/* Define as a marker that can be attached to declarations that might not
+    be used.  This helps to reduce warnings, such as from
+    GCC -Wunused-parameter.  */
+#if __GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)
+# define _GL_UNUSED __attribute__ ((__unused__))
+#else
+# define _GL_UNUSED
+#endif
+/* The name _UNUSED_PARAMETER_ is an earlier spelling, although the name
+   is a misnomer outside of parameter lists.  */
+#define _UNUSED_PARAMETER_ _GL_UNUSED
+
+/* gcc supports the "unused" attribute on possibly unused labels, and
+   g++ has since version 4.5.  Note to support C++ as well as C,
+   _GL_UNUSED_LABEL should be used with a trailing ;  */
+#if !defined __cplusplus || __GNUC__ > 4 \
+    || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5)
+# define _GL_UNUSED_LABEL _GL_UNUSED
+#else
+# define _GL_UNUSED_LABEL
+#endif
+
+/* The __pure__ attribute was added in gcc 2.96.  */
+#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
+# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__))
+#else
+# define _GL_ATTRIBUTE_PURE /* empty */
+#endif
+
+/* The __const__ attribute was added in gcc 2.95.  */
+#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)
+# define _GL_ATTRIBUTE_CONST __attribute__ ((__const__))
+#else
+# define _GL_ATTRIBUTE_CONST /* empty */
+#endif
+
+/* The __malloc__ attribute was added in gcc 3.  */
+#if 3 <= __GNUC__
+# define _GL_ATTRIBUTE_MALLOC __attribute__ ((__malloc__))
+#else
+# define _GL_ATTRIBUTE_MALLOC /* empty */
+#endif
+
index 42f4b6e..92861cf 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #ifdef HAVE_CC_LIMITS_H
 #include <limits.h>
diff --git a/src/include/curtime.h b/src/include/curtime.h
new file mode 100644 (file)
index 0000000..4d99fb0
--- /dev/null
@@ -0,0 +1,23 @@
+/* Copyright (C) 2015-2018 Free Software Foundation, Inc.
+
+This file is part of groff.
+
+groff is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+groff 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.
+
+The GNU General Public License version 2 (GPL2) is available in the
+internet at <http://www.gnu.org/licenses/gpl-2.0.txt>. */
+
+#ifdef LONG_FOR_TIME_T
+long
+#else
+time_t
+#endif
+current_time();
index 48d71e1..9191f4e 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,11 +15,11 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 // The target device.  Once initialized, the device doesn't change during
-// the entire program run.  Sample devices are `ps' (for Postscript), `html'
-// (for HTML), and `ascii', `latin1', `utf8' for TTY output.
+// the entire program run.  Sample devices are 'ps' (for Postscript), 'html'
+// (for HTML), and 'ascii', 'latin1', 'utf8' for TTY output.
 extern const char *device;
 
 // end of device.h
index f94dfef..e323de6 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include "lib.h"
 
index e539127..4bc92bb 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 class errarg {
   enum { EMPTY, STRING, CHAR, INTEGER, UNSIGNED_INTEGER, DOUBLE } type;
index 737efa8..d86e47e 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 extern void fatal_with_file_and_line(const char *filename, int lineno,
                                     const char *format,
index 155651a..ed99751 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 // A function of this type can be registered to define the semantics of
 // arbitrary commands in a font DESC file.
@@ -24,22 +24,22 @@ typedef void (*FONT_COMMAND_HANDLER)(const char *,  // command
                                     const char *,      // file
                                     int);              // lineno
 
-// A glyph is represented by a font-independent `glyph *' pointer.
+// A glyph is represented by a font-independent 'glyph *' pointer.
 // The functions name_to_glyph and number_to_glyph return such a pointer.
 //
 // There are two types of glyphs:
 //
 //   - those with a name, and among these in particular:
-//     `charNNN' denoting a single `char' in the input character set,
-//     `uXXXX' denoting a Unicode character,
+//     'charNNN' denoting a single 'char' in the input character set,
+//     'uXXXX' denoting a Unicode character,
 //
-//   - those with a number, referring to the the font-dependent glyph with
+//   - those with a number, referring to the font-dependent glyph with
 //     the given number.
 
 // The statically allocated information about a glyph.
 //
-// This is an abstract class; only its subclass `charinfo' is instantiated.
-// `charinfo' exists in two versions: one in roff/troff/input.cpp for troff,
+// This is an abstract class; only its subclass 'charinfo' is instantiated.
+// 'charinfo' exists in two versions: one in roff/troff/input.cpp for troff,
 // and one in libs/libgroff/nametoindex.cpp for the preprocessors and the
 // postprocessors.
 struct glyph {
@@ -55,14 +55,14 @@ struct glyph {
 // libs/libgroff/nametoindex.cpp for the preprocessors and the
 // postprocessors.
 extern glyph *name_to_glyph(const char *);     // Convert the glyph with
-                       // the given name (arg1) to a `glyph' object.  This
+                       // the given name (arg1) to a 'glyph' object.  This
                        // has the same semantics as the groff escape sequence
-                       // \C'name'.  If such a `glyph' object does not yet
+                       // \C'name'.  If such a 'glyph' object does not yet
                        // exist, a new one is allocated.
 extern glyph *number_to_glyph(int);    // Convert the font-dependent glyph
-                       // with the given number (in the font) to a `glyph'
+                       // with the given number (in the font) to a 'glyph'
                        // object.  This has the same semantics as the groff
-                       // escape sequence \N'number'.  If such a `glyph'
+                       // escape sequence \N'number'.  If such a 'glyph'
                        // object does not yet exist, a new one is allocated.
 extern const char *glyph_to_name(glyph *);     // Convert the given glyph
                        // back to its name.  Return NULL if the glyph
@@ -86,17 +86,17 @@ inline int glyph_to_index(glyph *g)
   return g->index;
 }
 
-// Types used in non-public members of `class font'.
+// Types used in non-public members of 'class font'.
 struct font_kern_list;
 struct font_char_metric;
 struct font_widths_cache;
 
-// A `class font' instance represents the relevant information of a font of
+// A 'class font' instance represents the relevant information of a font of
 // the given device.  This includes the set of glyphs represented by the
 // font, and metrics for each glyph.
 class font {
 public:
-  enum {               // The valid argument values of `has_ligature'.
+  enum {               // The valid argument values of 'has_ligature'.
     LIG_ff = 1,
     LIG_fi = 2,
     LIG_fl = 4,
@@ -107,8 +107,8 @@ public:
   virtual ~font();     // Destructor.
   int contains(glyph *);       // Return 1 if this font contains the given
                        // glyph, 0 otherwise.
-  int is_special();    // Return 1 if this font is special, 0 otherwise. 
-                       // See section `Special Fonts' in the info file of
+  int is_special();    // Return 1 if this font is special, 0 otherwise.
+                       // See section 'Special Fonts' in the info file of
                        // groff.  Used by make_glyph_node().
   int get_width(glyph *, int); // A rectangle represents the shape of the
                        // given glyph (arg1) at the given point size
@@ -118,14 +118,14 @@ public:
                        // given glyph (arg1) at the given point size
                        // (arg2).  Return the distance between the base
                        // line and the top of this rectangle.
-                       // This is often also called the `ascent' of the
+                       // This is often also called the 'ascent' of the
                        // glyph.  If the top is above the base line, this
                        // value is positive.
   int get_depth(glyph *, int); // A rectangle represents the shape of the
                        // given glyph (arg1) at the given point size
                        // (arg2).  Return the distance between the base
-                       // line and the bottom of this rectangle. 
-                       // This is often also called the `descent' of the
+                       // line and the bottom of this rectangle.
+                       // This is often also called the 'descent' of the
                        // glyph.  If the bottom is below the base line,
                        // this value is positive.
   int get_space_width(int);    // Return the normal width of a space at the
@@ -134,7 +134,7 @@ public:
                        // shape of the given glyph.  Bit 0 is set if the
                        // character has a descender.  Bit 1 is set if the
                        // character has a tall glyph.  See groff manual,
-                       // description of \w and the `ct' register.
+                       // description of \w and the 'ct' register.
   int get_kern(glyph *, glyph *, int); // Return the kerning between the
                        // given glyphs (arg1 and arg2), both at the given
                        // point size (arg3).
@@ -178,7 +178,7 @@ public:
                        // subscript glyph, the horizontal position may need
                        // to be advanced by some (possibly negative)
                        // amount.  See groff manual, description of \w and
-                       // the `ssc' register.  Return this amount.
+                       // the 'ssc' register.  Return this amount.
   void set_zoom(int);  // Set the font's zoom factor * 1000.  Must be a
                        // non-negative value.
   int get_zoom();      // Return the font's zoom factor * 1000.
@@ -189,27 +189,27 @@ public:
                        // glyph.  Return NULL if there is no special
                        // information.
   const char *get_name();      // Return the name of this font.
-  const char *get_internal_name();     // Return the `internalname'
+  const char *get_internal_name();     // Return the 'internalname'
                        // attribute of this font.  Return NULL if it has
                        // none.
-  const char *get_image_generator();   // Return the `image_generator'
+  const char *get_image_generator();   // Return the 'image_generator'
                        // attribute of this font.  Return NULL if it has
                        // none.
   static int scan_papersize(const char *, const char **,
                            double *, double *);        // Parse the
-                       // `papersize' attribute in a DESC file (given in
+                       // 'papersize' attribute in a DESC file (given in
                        // arg1).  Return the name of the size (in arg2),
-                       // and the length and width (in arg3 and arg4). 
+                       // and the length and width (in arg3 and arg4).
                        // Return 1 in case of success, 0 otherwise.
   static font *load_font(const char *, int * = 0, int = 0);    // Load the
                        // font description file with the given name (arg1)
-                       // and return it as a `font' class.  If arg2 points
+                       // and return it as a 'font' class.  If arg2 points
                        // to an integer variable, set it to 1 if the file
-                       // is not found, without emitting an error message. 
+                       // is not found, without emitting an error message.
                        // If arg2 is NULL, print an error message if the
                        // file is not found.  If arg3 is nonzero, only the
                        // part of the font description file before the
-                       // `charset' and `kernpairs' sections is loaded. 
+                       // 'charset' and 'kernpairs' sections is loaded.
                        // Return NULL in case of failure.
   static void command_line_font_dir(const char *);     // Prepend given
                        // path (arg1) to the list of directories in which
@@ -229,60 +229,60 @@ public:
                        // a function which defines the semantics of
                        // arbitrary commands in the font DESC file.
   // Now the variables from the DESC file, shared by all fonts.
-  static int res;      // The `res' attribute given in the DESC file.
-  static int hor;      // The `hor' attribute given in the DESC file.
-  static int vert;     // The `vert' attribute given in the DESC file.
-  static int unitwidth;        // The `unitwidth' attribute given in the DESC file.
-  static int paperwidth;       // The `paperwidth' attribute given in the
-                       // DESC file, or derived from the `papersize'
+  static int res;      // The 'res' attribute given in the DESC file.
+  static int hor;      // The 'hor' attribute given in the DESC file.
+  static int vert;     // The 'vert' attribute given in the DESC file.
+  static int unitwidth;        // The 'unitwidth' attribute given in the DESC file.
+  static int paperwidth;       // The 'paperwidth' attribute given in the
+                       // DESC file, or derived from the 'papersize'
                        // attribute given in the DESC file.
-  static int paperlength;      // The `paperlength' attribute given in the
-                       // DESC file, or derived from the `papersize'
+  static int paperlength;      // The 'paperlength' attribute given in the
+                       // DESC file, or derived from the 'papersize'
                        // attribute given in the DESC file.
   static const char *papersize;
-  static int biggestfont;      // The `biggestfont' attribute given in the
+  static int biggestfont;      // The 'biggestfont' attribute given in the
                        // DESC file.
   static int spare2;
-  static int sizescale;        // The `sizescale' attribute given in the DESC file.
-  static int tcommand;  // Nonzero if the DESC file has the `tcommand'
+  static int sizescale;        // The 'sizescale' attribute given in the DESC file.
+  static int tcommand;  // Nonzero if the DESC file has the 'tcommand'
                        // attribute.
   static int unscaled_charwidths;      // Nonzero if the DESC file has the
-                       // `unscaled_charwidths' attribute.
+                       // 'unscaled_charwidths' attribute.
   static int pass_filenames;   // Nonzero if the DESC file has the
-                       // `pass_filenames' attribute.
+                       // 'pass_filenames' attribute.
   static int use_charnames_in_special; // Nonzero if the DESC file has the
-                       // `use_charnames_in_special' attribute.
-  static int is_unicode; // Nonzero if the DESC file has the `unicode'
+                       // 'use_charnames_in_special' attribute.
+  static int is_unicode; // Nonzero if the DESC file has the 'unicode'
                        // attribute.
-  static const char *image_generator;  // The `image_generator' attribute
+  static const char *image_generator;  // The 'image_generator' attribute
                        // given in the DESC file.
-  static const char **font_name_table; // The `fonts' attribute given in
+  static const char **font_name_table; // The 'fonts' attribute given in
                        // the DESC file, as a NULL-terminated array of
                        // strings.
-  static const char **style_table;     // The `styles' attribute given in
+  static const char **style_table;     // The 'styles' attribute given in
                        // the DESC file, as a NULL-terminated array of
                        // strings.
-  static const char *family;   // The `family' attribute given in the DESC
+  static const char *family;   // The 'family' attribute given in the DESC
                        // file.
-  static int *sizes;   // The `sizes' attribute given in the DESC file, as
+  static int *sizes;   // The 'sizes' attribute given in the DESC file, as
                        // an array of intervals of the form { lower1,
                        // upper1, ... lowerN, upperN, 0 }.
 
 private:
   unsigned ligatures;  // Bit mask of available ligatures.  Used by
                        // has_ligature().
-  font_kern_list **kern_hash_table;    // Hash table of kerning pairs. 
+  font_kern_list **kern_hash_table;    // Hash table of kerning pairs.
                        // Used by get_kern().
   int space_width;     // The normal width of a space.  Used by
                        // get_space_width().
   int special;         // 1 if this font is special, 0 otherwise.  Used by
                        // is_special().
   char *name;          // The name of this font.  Used by get_name().
-  char *internalname;  // The `internalname' attribute of this font, or
+  char *internalname;  // The 'internalname' attribute of this font, or
                        // NULL.  Used by get_internal_name().
   double slant;                // The natural slant angle (in degrees) of this font.
   int zoom;            // The font's magnification, multiplied by 1000.
-                       // Used by scale().  A zero value means `no zoom'.
+                       // Used by scale().  A zero value means 'no zoom'.
   int *ch_index;       // Conversion table from font-independent character
                        // indices to indices for this particular font.
   int nindices;
@@ -319,9 +319,9 @@ private:
   /* Returns w * pointsize / unitwidth, rounded to the nearest integer.  */
   int scale(int w, int pointsize);
   static int unit_scale(double *, char); // Convert value in arg1 from the
-                       // given unit (arg2; possible values are `i', `c',
-                       // `p', and `P' as documented in the info file of
-                       // groff, section `Measurements') to inches.  Store
+                       // given unit (arg2; possible values are 'i', 'c',
+                       // 'p', and 'P' as documented in the info file of
+                       // groff, section 'Measurements') to inches.  Store
                        // the result in arg1 and return 1.  If the unit is
                        // invalid, return 0.
   virtual void handle_unknown_font_command(const char *,       // command
@@ -337,10 +337,10 @@ protected:
                        // object.  If arg1 points to an integer variable,
                        // set it to 1 if the file is not found, without
                        // emitting an error message.  If arg1 is NULL,
-                       // print an error message if the file is not found. 
+                       // print an error message if the file is not found.
                        // If arg2 is nonzero, only the part of the font
-                       // description file before the `charset' and
-                       // `kernpairs' sections is loaded.  Return NULL in
+                       // description file before the 'charset' and
+                       // 'kernpairs' sections is loaded.  Return NULL in
                        // case of failure.
 };
 
index 1e53e00..bceaf74 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 2001-201 Free Software Foundation, Inc.
+/* Copyright (C) 2001-2018 Free Software Foundation, Inc.
      Written by Gaius Mulley <gaius@glam.ac.uk>
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 int adjust_arc_center(const int *, double *);
 void check_output_arc_limits(int x, int y,
index d0c716f..6d91fe6 100644 (file)
@@ -1,5 +1,5 @@
 /* Declarations for getopt.
-   Copyright (C) 1989-201 Free Software Foundation, Inc.
+   Copyright (C) 1989-2018 Free Software Foundation, Inc.
 
    This file is part of the GNU C Library.
 
@@ -14,7 +14,7 @@
    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 <http://www.gnu.org/licenses/>.  */
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #ifndef _GETOPT_H
 
@@ -62,7 +62,7 @@
    getopt_long_only can permute argv; this is required for backward
    compatibility (e.g., for LSB 2.0.1).
 
-   This used to be `#if defined __GETOPT_PREFIX && !defined __need_getopt',
+   This used to be '#if defined __GETOPT_PREFIX && !defined __need_getopt',
    but it caused redefinition warnings if both unistd.h and getopt.h were
    included, since unistd.h includes getopt.h having previously defined
    __need_getopt.
 extern "C" {
 #endif
 
-/* For communication from `getopt' to the caller.
-   When `getopt' finds an option that takes an argument,
+/* For communication from 'getopt' to the caller.
+   When 'getopt' finds an option that takes an argument,
    the argument value is returned here.
-   Also, when `ordering' is RETURN_IN_ORDER,
+   Also, when 'ordering' is RETURN_IN_ORDER,
    each non-option ARGV-element is returned here.  */
 
 extern char *optarg;
 
 /* Index in ARGV of the next element to be scanned.
    This is used for communication to and from the caller
-   and for communication between successive calls to `getopt'.
+   and for communication between successive calls to 'getopt'.
 
-   On entry to `getopt', zero means this is the first call; initialize.
+   On entry to 'getopt', zero means this is the first call; initialize.
 
-   When `getopt' returns -1, this is the index of the first of the
+   When 'getopt' returns -1, this is the index of the first of the
    non-option elements that the caller should itself scan.
 
-   Otherwise, `optind' communicates from one call to the next
+   Otherwise, 'optind' communicates from one call to the next
    how much of ARGV has been scanned so far.  */
 
 extern int optind;
 
-/* Callers store zero here to inhibit the error message `getopt' prints
+/* Callers store zero here to inhibit the error message 'getopt' prints
    for unrecognized options.  */
 
 extern int opterr;
@@ -140,24 +140,24 @@ extern int optopt;
 #ifndef __need_getopt
 /* Describe the long-named options requested by the application.
    The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector
-   of `struct option' terminated by an element containing a name which is
+   of 'struct option' terminated by an element containing a name which is
    zero.
 
-   The field `has_arg' is:
+   The field 'has_arg' is:
    no_argument         (or 0) if the option does not take an argument,
    required_argument   (or 1) if the option requires an argument,
    optional_argument   (or 2) if the option takes an optional argument.
 
-   If the field `flag' is not NULL, it points to a variable that is set
-   to the value given in the field `val' when the option is found, but
+   If the field 'flag' is not NULL, it points to a variable that is set
+   to the value given in the field 'val' when the option is found, but
    left unchanged if the option is not found.
 
-   To have a long-named option do something other than set an `int' to
-   a compiled-in constant, such as set a value from `optarg', set the
-   option's `flag' field to zero and its `val' field to a nonzero
+   To have a long-named option do something other than set an 'int' to
+   a compiled-in constant, such as set a value from 'optarg', set the
+   option's 'flag' field to zero and its 'val' field to a nonzero
    value (the equivalent single-letter option character, if there is
-   one).  For long options that have a zero `flag' field, `getopt'
-   returns the contents of the `val' field.  */
+   one).  For long options that have a zero 'flag' field, 'getopt'
+   returns the contents of the 'val' field.  */
 
 struct option
 {
@@ -169,7 +169,7 @@ struct option
   int val;
 };
 
-/* Names for the values of the `has_arg' field of `struct option'.  */
+/* Names for the values of the 'has_arg' field of 'struct option'.  */
 
 # define no_argument           0
 # define required_argument     1
@@ -183,23 +183,23 @@ struct option
 
    Return the option character from OPTS just read.  Return -1 when
    there are no more options.  For unrecognized options, or options
-   missing arguments, `optopt' is set to the option letter, and '?' is
+   missing arguments, 'optopt' is set to the option letter, and '?' is
    returned.
 
    The OPTS string is a list of characters which are recognized option
    letters, optionally followed by colons, specifying that that letter
-   takes an argument, to be placed in `optarg'.
+   takes an argument, to be placed in 'optarg'.
 
    If a letter in OPTS is followed by two colons, its argument is
-   optional.  This behavior is specific to the GNU `getopt'.
+   optional.  This behavior is specific to the GNU 'getopt'.
 
-   The argument `--' causes premature termination of argument
-   scanning, explicitly telling `getopt' that there are no more
+   The argument '--' causes premature termination of argument
+   scanning, explicitly telling 'getopt' that there are no more
    options.
 
-   If OPTS begins with `--', then non-option arguments are treated as
+   If OPTS begins with '--', then non-option arguments are treated as
    arguments to the option '\0'.  This behavior is specific to the GNU
-   `getopt'.  */
+   'getopt'.  */
 
 extern int getopt (int ___argc, char *const *___argv, const char *__shortopts)
        __THROW;
index 0ddbad1..cb61484 100644 (file)
@@ -1,5 +1,5 @@
 /* Internal declarations for getopt.
-   Copyright (C) 1989-201 Free Software Foundation, Inc.
+   Copyright (C) 1989-2018 Free Software Foundation, Inc.
 
    This file is part of the GNU C Library.
 
@@ -14,7 +14,7 @@
    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 <http://www.gnu.org/licenses/>.  */
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #ifndef _GETOPT_INT_H
 #define _GETOPT_INT_H  1
@@ -62,7 +62,7 @@ struct _getopt_data
      stop option processing when the first non-option is seen.
      This is what Unix does.
      This mode of operation is selected by either setting the environment
-     variable POSIXLY_CORRECT, or using `+' as the first character
+     variable POSIXLY_CORRECT, or using '+' as the first character
      of the list of option characters, or by calling getopt.
 
      PERMUTE is the default.  We permute the contents of ARGV as we
@@ -74,12 +74,12 @@ struct _getopt_data
      written to expect options and other ARGV-elements in any order
      and that care about the ordering of the two.  We describe each
      non-option ARGV-element as if it were the argument of an option
-     with character code 1.  Using `-' as the first character of the
+     with character code 1.  Using '-' as the first character of the
      list of option characters selects this mode of operation.
 
-     The special argument `--' forces an end of option-scanning regardless
-     of the value of `ordering'.  In the case of RETURN_IN_ORDER, only
-     `--' can cause `getopt' to return -1 with `optind' != ARGC.  */
+     The special argument '--' forces an end of option-scanning regardless
+     of the value of 'ordering'.  In the case of RETURN_IN_ORDER, only
+     '--' can cause 'getopt' to return -1 with 'optind' != ARGC.  */
 
   enum
     {
@@ -94,8 +94,8 @@ struct _getopt_data
   /* Handle permutation of arguments.  */
 
   /* Describe the part of ARGV that contains non-options that have
-     been skipped.  `first_nonopt' is the index in ARGV of the first
-     of them; `last_nonopt' is the index after the last of them.  */
+     been skipped.  'first_nonopt' is the index in ARGV of the first
+     of them; 'last_nonopt' is the index after the last of them.  */
 
   int __first_nonopt;
   int __last_nonopt;
index feadcaf..6f0c1b1 100644 (file)
@@ -1,5 +1,5 @@
 /* -*- C -*- */
-/* Copyright (C) 2014  Free Software Foundation, Inc.
+/* Copyright (C) 2014-2018 Free Software Foundation, Inc.
 
 This file is part of groff.
 
@@ -14,7 +14,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 /* This is a dummy header file to make getopt compile without gettext
    support. */
index 9739a8b..737eea9 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 2001-201 Free Software Foundation, Inc.
+/* Copyright (C) 2001-2018 Free Software Foundation, Inc.
      Written by Gaius Mulley (gaius@glam.ac.uk).
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 /*
  *  defines the image tags issued by the pre-processors (tbl, pic, eqn)
index db2a5df..08edf10 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 2000-201 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2018 Free Software Foundation, Inc.
      Written by Gaius Mulley <gaius@glam.ac.uk>
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #ifndef HTMLINDICATE_H
 #define HTMLINDICATE_H
similarity index 56%
rename from src/include/Makefile.sub
rename to src/include/include.am
index f282e86..4a3b8e0 100644 (file)
@@ -1,63 +1,30 @@
-# Makefile.sub for `include'
+# Automake rules for 'include'
 #
-# File position: <groff-source>/src/include/Makefile.sub
+# File position: <groff-source>/src/include/include.am
 #
-# Copyright (C) 2014  Free Software Foundation, Inc.
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
 #
-# This file is part of `font utf8' which is part of `groff'.
+# Latest update: 13 Aug 2015
 #
-# `groff' is free software; you can redistribute it and/or modify it
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
 # the Free Software Foundation, either version 2 of the License, or
 # (at your option) any later version.
 #
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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
+# along with this program.  If not, see
 # <http://www.gnu.org/licenses/gpl-2.0.html>.
 #
 ########################################################################
 
-HDRS=\
-  assert.h \
-  cmap.h \
-  cset.h \
-  color.h \
-  device.h \
-  driver.h \
-  DviChar.h \
-  errarg.h \
-  error.h \
-  font.h \
-  geometry.h \
-  getopt.h \
-  getopt_int.h \
-  gettext.h \
-  htmlhint.h \
-  index.h \
-  lib.h \
-  macropath.h \
-  nonposix.h \
-  posix.h \
-  printer.h \
-  ptable.h \
-  refid.h \
-  relocate.h \
-  search.h \
-  searchpath.h \
-  stringclass.h \
-  symbol.h \
-  unicode.h \
-  XFontName.h
-GENHDRS=defs.h
-
-all depend: $(GENHDRS)
-
-defs.h: FORCE
+nodist_noinst_HEADERS = defs.h
+CLEANFILES += defs.h
+defs.h: config.status
        @$(SHELL) $(top_srcdir)/gendef.sh defs.h \
        "PROG_PREFIX=\"$(g)\"" \
        "DEVICE=\"$(DEVICE)\"" \
@@ -71,12 +38,18 @@ defs.h: FORCE
        "DEFAULT_INDEX_NAME=\"$(indexname)\"" \
        "DEFAULT_INDEX=\"$(indexdir)/$(indexname)\""
 
-FORCE:
+dist-hook: dist_include
+dist_include:
+       chmod u+w $(distdir)/src/include
+       cp -f $(top_srcdir)/src/include/*.h $(distdir)/src/include
+
 
 ########################################################################
-# Emacs settings
+# Editor settings
 ########################################################################
 #
 # Local Variables:
-# mode: makefile
+# mode: makefile-automake
+# fill-column: 72
 # End:
+# vim: set filetype=automake textwidth=72:
index 4d85ff8..8fca783 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #define INDEX_MAGIC 0x23021964
 #define INDEX_VERSION 1
index ad73691..f5eb5d5 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include <assert.h>
 
@@ -27,14 +27,14 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. */
 # define name2x(a,b) a ## b
 #endif /* not TRADITIONAL_CPP */
 
-// `class ITABLE(T)' is the type of a hash table mapping an integer (int >= 0)
+// 'class ITABLE(T)' is the type of a hash table mapping an integer (int >= 0)
 // to an object of type T.
 //
-// `struct IASSOC(T)' is the type of a association (pair) between an integer
+// 'struct IASSOC(T)' is the type of a association (pair) between an integer
 // (int >= 0) and an object of type T.
 //
-// `class ITABLE_ITERATOR(T)' is the type of an iterator iterating through a
-// `class ITABLE(T)'.
+// 'class ITABLE_ITERATOR(T)' is the type of an iterator iterating through a
+// 'class ITABLE(T)'.
 //
 // Nowadays one would use templates for this; this code predates the addition
 // of templates to C++.
@@ -50,8 +50,8 @@ extern unsigned next_ptable_size(unsigned);   // Return the first suitable
                                // value.
 #endif
 
-// Declare the types `class ITABLE(T)', `struct IASSOC(T)', and `class
-// ITABLE_ITERATOR(T)' for the type `T'.
+// Declare the types 'class ITABLE(T)', 'struct IASSOC(T)', and 'class
+// ITABLE_ITERATOR(T)' for the type 'T'.
 #define declare_itable(T)                                                    \
                                                                              \
 struct IASSOC(T) {                                                           \
@@ -100,8 +100,8 @@ public:                                                                           \
 // Values must be allocated by the caller (always using new[], not new)
 // and are freed by ITABLE.
 
-// Define the implementations of the members of the types `class ITABLE(T)',
-// `struct IASSOC(T)', `class ITABLE_ITERATOR(T)' for the type `T'.
+// Define the implementations of the members of the types 'class ITABLE(T)',
+// 'struct IASSOC(T)', 'class ITABLE_ITERATOR(T)' for the type 'T'.
 #define implement_itable(T)                                                  \
                                                                              \
 IASSOC(T)::IASSOC(T)()                                                       \
diff --git a/src/include/lf.h b/src/include/lf.h
new file mode 100644 (file)
index 0000000..4e44756
--- /dev/null
@@ -0,0 +1,21 @@
+// -*- C++ -*-
+/* Copyright (C) 2014-2018 Free Software Foundation, Inc.
+     Written by Werner Lemberg (wl@gnu.org)
+
+This file is part of groff.
+
+groff 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.
+
+groff 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 <http://www.gnu.org/licenses/>. */
+
+int interpret_lf_args(const char *p);
+void normalize_for_lf (string &fn);
index a0b79fa..abb69b8 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #ifdef HAVE_CONFIG_H
 #include <config.h>
@@ -59,16 +59,6 @@ double groff_hypot(double, double);
 
 #include <stdarg.h>
 
-/* HP-UX 10.20 and LynxOS 4.0.0 don't declare snprintf() */
-#if !defined(HAVE_SNPRINTF) || defined(NEED_DECLARATION_SNPRINTF)
-extern "C" { int snprintf(char *, size_t, const char *, /*args*/ ...); }
-#endif
-
-/* LynxOS 4.0.0 has snprintf() but no vsnprintf() */
-#if !defined(HAVE_VSNPRINTF) || defined(NEED_DECLARATION_VSNPRINTF)
-extern "C" { int vsnprintf(char *, size_t, const char *, va_list); }
-#endif
-
 /* LynxOS 4.0.0 doesn't declare vfprintf() */
 #ifdef NEED_DECLARATION_VFPRINTF
 extern "C" { int vfprintf(FILE *, const char *, va_list); }
@@ -98,8 +88,6 @@ extern "C" { int pclose (FILE *); }
 size_t file_name_max(const char *fname);
 size_t path_name_max();
 
-int interpret_lf_args(const char *p);
-
 extern char invalid_char_table[];
 
 inline int invalid_input_char(int c)
index 795a930..b94f7d2 100644 (file)
@@ -1,5 +1,5 @@
 /* Determine a canonical name for the current locale's character encoding.
-   Copyright (C) 2000-2003, 2009-2014 Free Software Foundation, Inc.
+   Copyright (C) 2000-2018 Free Software Foundation, Inc.
    This file is part of the GNU CHARSET Library.
 
    This program is free software; you can redistribute it and/or modify
index 8a6cc13..2be649f 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 extern search_path macro_path;
 extern search_path safer_macro_path;
index fbd2823..dbc34a3 100644 (file)
@@ -1,5 +1,5 @@
 /* -*- C -*- */
-/* Copyright (C) 2000-201 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2018 Free Software Foundation, Inc.
      Written by Eli Zaretskii (eliz@is.elta.co.il)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 /* This header file compartmentalize all idiosyncrasies of non-Posix
    systems, such as MS-DOS, MS-Windows, etc.  It should be loaded after
@@ -133,7 +133,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. */
 #if defined(_WIN32) && !defined(_UWIN) && !defined(__CYGWIN__)
 /* Win32 implementations which use the Microsoft runtime library
  * are prone to hanging when a pipe reader quits with unread data in the pipe.
- * `gtroff' avoids this, by invoking `FLUSH_INPUT_PIPE()', defined as ... */
+ * 'gtroff' avoids this, by invoking 'FLUSH_INPUT_PIPE()', defined as ... */
 # define FLUSH_INPUT_PIPE(fd)                \
  do if (!isatty(fd))                         \
  {                                           \
@@ -144,9 +144,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. */
 
 /* The Microsoft runtime library also has a broken argument passing mechanism,
  * which may result in improper grouping of arguments passed to a child process
- * by the `spawn()' family of functions.  In `groff', only the `spawnvp()'
+ * by the 'spawn()' family of functions.  In 'groff', only the 'spawnvp()'
  * function is affected; we work around this defect, by substituting a
- * wrapper function in place of `spawnvp()' calls. */
+ * wrapper function in place of 'spawnvp()' calls. */
 
 # ifdef __cplusplus
   extern "C" {
@@ -164,7 +164,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. */
 
 #else
 /* Other implementations do not suffer from Microsoft runtime bugs,
- * but `gtroff' requires a dummy definition for FLUSH_INPUT_PIPE() */
+ * but 'gtroff' requires a dummy definition for FLUSH_INPUT_PIPE() */
 # define FLUSH_INPUT_PIPE(fd)  do {} while(0)
 #endif
 
index 1708cd3..5cb7126 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 2002-201 Free Software Foundation, Inc.
+/* Copyright (C) 2002-2018 Free Software Foundation, Inc.
      Written by Werner Lemberg (wl@gnu.org)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 struct paper {
   char *name;
index f1763a0..333b0b4 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1992-201 Free Software Foundation, Inc.
+/* Copyright (C) 1992-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include <sys/types.h>
 #include <sys/stat.h>
index 52ba15b..a292955 100644 (file)
@@ -2,7 +2,7 @@
 
 // <groff_src_dir>/src/include/printer.h
 
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
 
    Written by James Clark (jjc@jclark.com)
 
    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 <http://www.gnu.org/licenses/>.
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
 /* Description
 
-   The class `printer' performs the postprocessing.  Each
-   postprocessor only needs to implement a derived class of `printer' and
-   a suitable function `make_printer' for the device-dependent tasks.
-   Then the methods of class `printer' are called automatically by
-   `do_file()' in `input.cpp'.
+   The class 'printer' performs the postprocessing.  Each
+   postprocessor only needs to implement a derived class of 'printer' and
+   a suitable function 'make_printer' for the device-dependent tasks.
+   Then the methods of class 'printer' are called automatically by
+   'do_file()' in 'input.cpp'.
 */
 
 #include "color.h"
index c43a070..97d745d 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include <assert.h>
 #include <string.h>
@@ -28,14 +28,14 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. */
 # define name2x(a,b) a ## b
 #endif /* not TRADITIONAL_CPP */
 
-// `class PTABLE(T)' is the type of a hash table mapping a string
+// 'class PTABLE(T)' is the type of a hash table mapping a string
 // (const char *) to an object of type T.
 //
-// `struct PASSOC(T)' is the type of a association (pair) between a
+// 'struct PASSOC(T)' is the type of a association (pair) between a
 // string (const char *) and an object of type T.
 //
-// `class PTABLE_ITERATOR(T)' is the type of an iterator iterating through a
-// `class PTABLE(T)'.
+// 'class PTABLE_ITERATOR(T)' is the type of an iterator iterating through a
+// 'class PTABLE(T)'.
 //
 // Nowadays one would use templates for this; this code predates the addition
 // of templates to C++.
@@ -55,8 +55,8 @@ extern unsigned long hash_string(const char *);       // Return a hash code of the
                                // given string.  The hash function is
                                // platform dependent.  */
 
-// Declare the types `class PTABLE(T)', `struct PASSOC(T)', and `class
-// PTABLE_ITERATOR(T)' for the type `T'.
+// Declare the types 'class PTABLE(T)', 'struct PASSOC(T)', and 'class
+// PTABLE_ITERATOR(T)' for the type 'T'.
 #define declare_ptable(T)                                                    \
                                                                              \
 struct PASSOC(T) {                                                           \
@@ -115,8 +115,8 @@ public:                                                                           \
 // Values must be allocated by the caller (always using new[], not new)
 // and are freed by PTABLE.
 
-// Define the implementations of the members of the types `class PTABLE(T)',
-// `struct PASSOC(T)', `class PTABLE_ITERATOR(T)' for the type `T'.
+// Define the implementations of the members of the types 'class PTABLE(T)',
+// 'struct PASSOC(T)', 'class PTABLE_ITERATOR(T)' for the type 'T'.
 #define implement_ptable(T)                                                  \
                                                                              \
 PASSOC(T)::PASSOC(T)()                                                       \
@@ -133,8 +133,10 @@ PTABLE(T)::PTABLE(T)()                                                           \
 PTABLE(T)::~PTABLE(T)()                                                              \
 {                                                                            \
   for (unsigned i = 0; i < size; i++) {                                              \
-    a_delete v[i].key;                                                       \
-    a_delete v[i].val;                                                       \
+    free(v[i].key);                                                          \
+    /* XXX leak, because we don't know whether */                            \
+    /* 'free', 'delete', or 'delete[]' should be used */                     \
+    /* a_delete v[i].val; */                                                 \
   }                                                                          \
   a_delete v;                                                                \
 }                                                                            \
@@ -148,7 +150,9 @@ const char *PTABLE(T)::define(const char *key, T *val)                            \
        v[n].key != 0;                                                        \
        n = (n == 0 ? size - 1 : n - 1))                                              \
     if (strcmp(v[n].key, key) == 0) {                                        \
-      a_delete v[n].val;                                                     \
+      /* XXX leak, because we don't know whether */                          \
+      /* 'free', 'delete', or 'delete[]' should be used */                   \
+      /* a_delete v[n].val; */                                               \
       v[n].val = val;                                                        \
       return v[n].key;                                                       \
     }                                                                        \
@@ -162,7 +166,7 @@ const char *PTABLE(T)::define(const char *key, T *val)                            \
     for (unsigned i = 0; i < old_size; i++)                                  \
       if (oldv[i].key != 0) {                                                \
        if (oldv[i].val == 0)                                                 \
-         a_delete oldv[i].key;                                               \
+         free(oldv[i].key);                                                  \
        else {                                                                \
          unsigned j;                                                         \
          for (j = unsigned(hash_string(oldv[i].key) % size);                 \
@@ -179,7 +183,7 @@ const char *PTABLE(T)::define(const char *key, T *val)                            \
       ;                                                                              \
     a_delete oldv;                                                           \
   }                                                                          \
-  char *temp = new char[strlen(key)+1];                                              \
+  char *temp = (char*)malloc(strlen(key)+1);                                 \
   strcpy(temp, key);                                                         \
   v[n].key = temp;                                                           \
   v[n].val = val;                                                            \
index b9a9a21..a931c56 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 class reference_id {
   int filename_id;
index 905dcbb..e6956c0 100644 (file)
@@ -1,7 +1,7 @@
 /* -*- C -*- */
 /* Provide relocation for macro and font files.
 
-   Copyright (C) 2005-201 Free Software Foundation, Inc.
+   Copyright (C) 2005-2018 Free Software Foundation, Inc.
 
    This program is free software; you can redistribute it and/or modify it
    under the terms of the GNU Library General Public License as published
@@ -14,7 +14,7 @@
    Library General Public License for more details.
 
    You should have received a copy of the GNU Library General Public License
-   along with this program. If not, see <http://www.gnu.org/licenses/>.  */
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #ifdef __cplusplus
 extern char *curr_prefix;
index 102e97d..4fe18f2 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 class search_item;
 class search_item_iterator;
index 2e09b50..4a4b6c2 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 class search_path {
   char *dirs;
index e11d834..22e7ffa 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include <string.h>
 #include <stdio.h>
index 3a73e98..ce9e645 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #define DONT_STORE 1
 #define MUST_ALREADY_EXIST 2
index 7537d73..164f3c8 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 2002-201 Free Software Foundation, Inc.
+/* Copyright (C) 2002-2018 Free Software Foundation, Inc.
      Written by Werner Lemberg <wl@gnu.org>
 
 This file is part of groff.
@@ -15,14 +15,14 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 // Convert a groff glyph name to a string containing an underscore-separated
 // list of Unicode code points.  For example,
 //
-//   `-'   ->  `2010'
-//   `,c'  ->  `00E7'
-//   `fl'  ->  `0066_006C'
+//   '-'   ->  '2010'
+//   ',c'  ->  '00E7'
+//   'fl'  ->  '0066_006C'
 //
 // Return NULL if there is no equivalent.
 const char *glyph_name_to_unicode(const char *);
@@ -30,8 +30,8 @@ const char *glyph_name_to_unicode(const char *);
 // Convert a string containing an underscore-separated list of Unicode code
 // points to a groff glyph name.  For example,
 //
-//   `2010'       ->  `hy'
-//   `0066_006C'  ->  `fl'
+//   '2010'       ->  'hy'
+//   '0066_006C'  ->  'fl'
 //
 // Return NULL if there is no equivalent.
 const char *unicode_to_glyph_name(const char *);
@@ -41,22 +41,22 @@ const char *unicode_to_glyph_name(const char *);
 // representing its canonical decomposition.  Also perform compatibility
 // equivalent replacement.  For example,
 //
-//   `1F3A' -> `0399_0313_0300'
-//   `FA6A' -> `983B'
+//   '1F3A' -> '0399_0313_0300'
+//   'FA6A' -> '983B'
 //
 // Return NULL if there is no equivalent.
 const char *decompose_unicode(const char *);
 
 // Test whether the given string denotes a Unicode character.  It must
-// be of the form `uNNNN', obeying the following rules.
+// be of the form 'uNNNN', obeying the following rules.
 //
-//   - `NNNN' must consist of at least 4 hexadecimal digits in upper case.
+//   - 'NNNN' must consist of at least 4 hexadecimal digits in upper case.
 //   - If there are more than 4 hexadecimal digits, the leading one must not
 //     be zero,
-//   - `NNNN' must denote a valid Unicode code point (U+0000..U+10FFFF,
+//   - 'NNNN' must denote a valid Unicode code point (U+0000..U+10FFFF,
 //     excluding surrogate code points.
 //
-// Return a pointer to `NNNN' (skipping the leading `u' character) in case
+// Return a pointer to 'NNNN' (skipping the leading 'u' character) in case
 // of success, NULL otherwise.
 const char *check_unicode_name(const char *);
 
diff --git a/src/libs/gnulib/Makefile.am b/src/libs/gnulib/Makefile.am
deleted file mode 100644 (file)
index 7610e3a..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-## Process this file with automake to produce Makefile.in.
-
-# Makefile.am
-
-# Copyright (C) 1994-2014  Free Software Foundation, Inc.
-
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY, to the extent permitted by law; without even
-# the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
-# PURPOSE.
-
-AUTOMAKE_OPTIONS = 1.5 foreign
-
-SUBDIRS = lib m4
-
-ACLOCAL_AMFLAGS = -I m4
diff --git a/src/libs/gnulib/Makefile.in b/src/libs/gnulib/Makefile.in
deleted file mode 100644 (file)
index 4a0711f..0000000
+++ /dev/null
@@ -1,972 +0,0 @@
-# Makefile.in generated by automake 1.14 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-# Makefile.am
-
-# Copyright (C) 1994-2014  Free Software Foundation, Inc.
-
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY, to the extent permitted by law; without even
-# the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
-# PURPOSE.
-VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \  ]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs  ]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = .
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-       $(top_srcdir)/configure $(am__configure_deps) \
-       $(srcdir)/config.h.in build-aux/compile build-aux/config.guess \
-       build-aux/config.sub build-aux/depcomp build-aux/install-sh \
-       build-aux/missing $(top_srcdir)/build-aux/compile \
-       $(top_srcdir)/build-aux/config.guess \
-       $(top_srcdir)/build-aux/config.sub \
-       $(top_srcdir)/build-aux/install-sh \
-       $(top_srcdir)/build-aux/missing
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
-       $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/configmake.m4 \
-       $(top_srcdir)/m4/extensions.m4 \
-       $(top_srcdir)/m4/extern-inline.m4 $(top_srcdir)/m4/fcntl-o.m4 \
-       $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/gnulib-common.m4 \
-       $(top_srcdir)/m4/include_next.m4 \
-       $(top_srcdir)/m4/inttypes-pri.m4 $(top_srcdir)/m4/inttypes.m4 \
-       $(top_srcdir)/m4/libunistring-base.m4 \
-       $(top_srcdir)/m4/localcharset.m4 $(top_srcdir)/m4/longlong.m4 \
-       $(top_srcdir)/m4/multiarch.m4 $(top_srcdir)/m4/onceonly.m4 \
-       $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stddef_h.m4 \
-       $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/warn-on-use.m4 \
-       $(top_srcdir)/m4/wchar_h.m4 $(top_srcdir)/m4/wchar_t.m4 \
-       $(top_srcdir)/m4/wctype_h.m4 $(top_srcdir)/m4/wcwidth.m4 \
-       $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-       $(ACLOCAL_M4)
-am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
- configure.lineno config.status.lineno
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-AM_V_P = $(am__v_P_@AM_V@)
-am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_@AM_V@)
-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_@AM_V@)
-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 = 
-SOURCES =
-DIST_SOURCES =
-RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
-       ctags-recursive dvi-recursive html-recursive info-recursive \
-       install-data-recursive install-dvi-recursive \
-       install-exec-recursive install-html-recursive \
-       install-info-recursive install-pdf-recursive \
-       install-ps-recursive install-recursive installcheck-recursive \
-       installdirs-recursive pdf-recursive ps-recursive \
-       tags-recursive uninstall-recursive
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive        \
-  distclean-recursive maintainer-clean-recursive
-am__recursive_targets = \
-  $(RECURSIVE_TARGETS) \
-  $(RECURSIVE_CLEAN_TARGETS) \
-  $(am__extra_recursive_targets)
-AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
-       cscope distdir dist dist-all distcheck
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \
-       $(LISP)config.h.in
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates.  Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
-  BEGIN { nonempty = 0; } \
-  { items[$$0] = 1; nonempty = 1; } \
-  END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique.  This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
-  list='$(am__tagged_files)'; \
-  unique=`for i in $$list; do \
-    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-  done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-CSCOPE = cscope
-DIST_SUBDIRS = $(SUBDIRS)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-distdir = $(PACKAGE)-$(VERSION)
-top_distdir = $(distdir)
-am__remove_distdir = \
-  if test -d "$(distdir)"; then \
-    find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
-      && rm -rf "$(distdir)" \
-      || { sleep 5 && rm -rf "$(distdir)"; }; \
-  else :; fi
-am__post_remove_distdir = $(am__remove_distdir)
-am__relativize = \
-  dir0=`pwd`; \
-  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
-  sed_rest='s,^[^/]*/*,,'; \
-  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
-  sed_butlast='s,/*[^/]*$$,,'; \
-  while test -n "$$dir1"; do \
-    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
-    if test "$$first" != "."; then \
-      if test "$$first" = ".."; then \
-        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
-        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
-      else \
-        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
-        if test "$$first2" = "$$first"; then \
-          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
-        else \
-          dir2="../$$dir2"; \
-        fi; \
-        dir0="$$dir0"/"$$first"; \
-      fi; \
-    fi; \
-    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
-  done; \
-  reldir="$$dir2"
-DIST_ARCHIVES = $(distdir).tar.gz
-GZIP_ENV = --best
-DIST_TARGETS = dist-gzip
-distuninstallcheck_listfiles = find . -type f -print
-am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
-  | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
-distcleancheck_listfiles = find . -type f -print
-pkglibexecdir = @pkglibexecdir@
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
-AR = @AR@
-ARFLAGS = @ARFLAGS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
-BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
-BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
-BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
-BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-GLIBC21 = @GLIBC21@
-GNULIB_BTOWC = @GNULIB_BTOWC@
-GNULIB_IMAXABS = @GNULIB_IMAXABS@
-GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
-GNULIB_ISWBLANK = @GNULIB_ISWBLANK@
-GNULIB_ISWCTYPE = @GNULIB_ISWCTYPE@
-GNULIB_MBRLEN = @GNULIB_MBRLEN@
-GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
-GNULIB_MBSINIT = @GNULIB_MBSINIT@
-GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@
-GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@
-GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
-GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
-GNULIB_TOWCTRANS = @GNULIB_TOWCTRANS@
-GNULIB_WCPCPY = @GNULIB_WCPCPY@
-GNULIB_WCPNCPY = @GNULIB_WCPNCPY@
-GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
-GNULIB_WCSCASECMP = @GNULIB_WCSCASECMP@
-GNULIB_WCSCAT = @GNULIB_WCSCAT@
-GNULIB_WCSCHR = @GNULIB_WCSCHR@
-GNULIB_WCSCMP = @GNULIB_WCSCMP@
-GNULIB_WCSCOLL = @GNULIB_WCSCOLL@
-GNULIB_WCSCPY = @GNULIB_WCSCPY@
-GNULIB_WCSCSPN = @GNULIB_WCSCSPN@
-GNULIB_WCSDUP = @GNULIB_WCSDUP@
-GNULIB_WCSLEN = @GNULIB_WCSLEN@
-GNULIB_WCSNCASECMP = @GNULIB_WCSNCASECMP@
-GNULIB_WCSNCAT = @GNULIB_WCSNCAT@
-GNULIB_WCSNCMP = @GNULIB_WCSNCMP@
-GNULIB_WCSNCPY = @GNULIB_WCSNCPY@
-GNULIB_WCSNLEN = @GNULIB_WCSNLEN@
-GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@
-GNULIB_WCSPBRK = @GNULIB_WCSPBRK@
-GNULIB_WCSRCHR = @GNULIB_WCSRCHR@
-GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
-GNULIB_WCSSPN = @GNULIB_WCSSPN@
-GNULIB_WCSSTR = @GNULIB_WCSSTR@
-GNULIB_WCSTOK = @GNULIB_WCSTOK@
-GNULIB_WCSWIDTH = @GNULIB_WCSWIDTH@
-GNULIB_WCSXFRM = @GNULIB_WCSXFRM@
-GNULIB_WCTOB = @GNULIB_WCTOB@
-GNULIB_WCTRANS = @GNULIB_WCTRANS@
-GNULIB_WCTYPE = @GNULIB_WCTYPE@
-GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
-GNULIB_WMEMCHR = @GNULIB_WMEMCHR@
-GNULIB_WMEMCMP = @GNULIB_WMEMCMP@
-GNULIB_WMEMCPY = @GNULIB_WMEMCPY@
-GNULIB_WMEMMOVE = @GNULIB_WMEMMOVE@
-GNULIB_WMEMSET = @GNULIB_WMEMSET@
-GREP = @GREP@
-HAVE_BTOWC = @HAVE_BTOWC@
-HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
-HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
-HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
-HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
-HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
-HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
-HAVE_FEATURES_H = @HAVE_FEATURES_H@
-HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
-HAVE_ISWBLANK = @HAVE_ISWBLANK@
-HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
-HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
-HAVE_MBRLEN = @HAVE_MBRLEN@
-HAVE_MBRTOWC = @HAVE_MBRTOWC@
-HAVE_MBSINIT = @HAVE_MBSINIT@
-HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
-HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
-HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
-HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
-HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
-HAVE_STDINT_H = @HAVE_STDINT_H@
-HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
-HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
-HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
-HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
-HAVE_WCHAR_H = @HAVE_WCHAR_H@
-HAVE_WCHAR_T = @HAVE_WCHAR_T@
-HAVE_WCPCPY = @HAVE_WCPCPY@
-HAVE_WCPNCPY = @HAVE_WCPNCPY@
-HAVE_WCRTOMB = @HAVE_WCRTOMB@
-HAVE_WCSCASECMP = @HAVE_WCSCASECMP@
-HAVE_WCSCAT = @HAVE_WCSCAT@
-HAVE_WCSCHR = @HAVE_WCSCHR@
-HAVE_WCSCMP = @HAVE_WCSCMP@
-HAVE_WCSCOLL = @HAVE_WCSCOLL@
-HAVE_WCSCPY = @HAVE_WCSCPY@
-HAVE_WCSCSPN = @HAVE_WCSCSPN@
-HAVE_WCSDUP = @HAVE_WCSDUP@
-HAVE_WCSLEN = @HAVE_WCSLEN@
-HAVE_WCSNCASECMP = @HAVE_WCSNCASECMP@
-HAVE_WCSNCAT = @HAVE_WCSNCAT@
-HAVE_WCSNCMP = @HAVE_WCSNCMP@
-HAVE_WCSNCPY = @HAVE_WCSNCPY@
-HAVE_WCSNLEN = @HAVE_WCSNLEN@
-HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
-HAVE_WCSPBRK = @HAVE_WCSPBRK@
-HAVE_WCSRCHR = @HAVE_WCSRCHR@
-HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
-HAVE_WCSSPN = @HAVE_WCSSPN@
-HAVE_WCSSTR = @HAVE_WCSSTR@
-HAVE_WCSTOK = @HAVE_WCSTOK@
-HAVE_WCSWIDTH = @HAVE_WCSWIDTH@
-HAVE_WCSXFRM = @HAVE_WCSXFRM@
-HAVE_WCTRANS_T = @HAVE_WCTRANS_T@
-HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
-HAVE_WCTYPE_T = @HAVE_WCTYPE_T@
-HAVE_WINT_T = @HAVE_WINT_T@
-HAVE_WMEMCHR = @HAVE_WMEMCHR@
-HAVE_WMEMCMP = @HAVE_WMEMCMP@
-HAVE_WMEMCPY = @HAVE_WMEMCPY@
-HAVE_WMEMMOVE = @HAVE_WMEMMOVE@
-HAVE_WMEMSET = @HAVE_WMEMSET@
-HAVE__BOOL = @HAVE__BOOL@
-INCLUDE_NEXT = @INCLUDE_NEXT@
-INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INT32_MAX_LT_INTMAX_MAX = @INT32_MAX_LT_INTMAX_MAX@
-INT64_MAX_EQ_LONG_MAX = @INT64_MAX_EQ_LONG_MAX@
-LDFLAGS = @LDFLAGS@
-LIBGNU_LIBDEPS = @LIBGNU_LIBDEPS@
-LIBGNU_LTLIBDEPS = @LIBGNU_LTLIBDEPS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBUNISTRING_UNITYPES_H = @LIBUNISTRING_UNITYPES_H@
-LIBUNISTRING_UNIWIDTH_H = @LIBUNISTRING_UNIWIDTH_H@
-LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H = @NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H@
-NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@
-NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
-NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
-NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@
-NEXT_INTTYPES_H = @NEXT_INTTYPES_H@
-NEXT_STDDEF_H = @NEXT_STDDEF_H@
-NEXT_STDINT_H = @NEXT_STDINT_H@
-NEXT_WCHAR_H = @NEXT_WCHAR_H@
-NEXT_WCTYPE_H = @NEXT_WCTYPE_H@
-OBJEXT = @OBJEXT@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PRAGMA_COLUMNS = @PRAGMA_COLUMNS@
-PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
-PRIPTR_PREFIX = @PRIPTR_PREFIX@
-PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
-PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
-RANLIB = @RANLIB@
-REPLACE_BTOWC = @REPLACE_BTOWC@
-REPLACE_ISWBLANK = @REPLACE_ISWBLANK@
-REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@
-REPLACE_MBRLEN = @REPLACE_MBRLEN@
-REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
-REPLACE_MBSINIT = @REPLACE_MBSINIT@
-REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
-REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
-REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
-REPLACE_NULL = @REPLACE_NULL@
-REPLACE_STRTOIMAX = @REPLACE_STRTOIMAX@
-REPLACE_TOWLOWER = @REPLACE_TOWLOWER@
-REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
-REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
-REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
-REPLACE_WCSWIDTH = @REPLACE_WCSWIDTH@
-REPLACE_WCTOB = @REPLACE_WCTOB@
-REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
-SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
-STDBOOL_H = @STDBOOL_H@
-STDDEF_H = @STDDEF_H@
-STDINT_H = @STDINT_H@
-STRIP = @STRIP@
-UINT32_MAX_LT_UINTMAX_MAX = @UINT32_MAX_LT_UINTMAX_MAX@
-UINT64_MAX_EQ_ULONG_MAX = @UINT64_MAX_EQ_ULONG_MAX@
-VERSION = @VERSION@
-WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
-WINT_T_SUFFIX = @WINT_T_SUFFIX@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-gl_LIBOBJS = @gl_LIBOBJS@
-gl_LTLIBOBJS = @gl_LTLIBOBJS@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-lispdir = @lispdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-runstatedir = @runstatedir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-AUTOMAKE_OPTIONS = 1.5 foreign
-SUBDIRS = lib m4
-ACLOCAL_AMFLAGS = -I m4
-all: config.h
-       $(MAKE) $(AM_MAKEFLAGS) all-recursive
-
-.SUFFIXES:
-am--refresh: Makefile
-       @:
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-       @for dep in $?; do \
-         case '$(am__configure_deps)' in \
-           *$$dep*) \
-             echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \
-             $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \
-               && exit 0; \
-             exit 1;; \
-         esac; \
-       done; \
-       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
-       $(am__cd) $(top_srcdir) && \
-         $(AUTOMAKE) --foreign Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-       @case '$?' in \
-         *config.status*) \
-           echo ' $(SHELL) ./config.status'; \
-           $(SHELL) ./config.status;; \
-         *) \
-           echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
-           cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
-       esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-       $(SHELL) ./config.status --recheck
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-       $(am__cd) $(srcdir) && $(AUTOCONF)
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-       $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
-$(am__aclocal_m4_deps):
-
-config.h: stamp-h1
-       @test -f $@ || rm -f stamp-h1
-       @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1
-
-stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
-       @rm -f stamp-h1
-       cd $(top_builddir) && $(SHELL) ./config.status config.h
-$(srcdir)/config.h.in:  $(am__configure_deps) 
-       ($(am__cd) $(top_srcdir) && $(AUTOHEADER))
-       rm -f stamp-h1
-       touch $@
-
-distclean-hdr:
-       -rm -f config.h stamp-h1
-
-# This directory's subdirectories are mostly independent; you can cd
-# into them and run 'make' without going through this Makefile.
-# To change the values of 'make' variables: instead of editing Makefiles,
-# (1) if the variable is set in 'config.status', edit 'config.status'
-#     (which will cause the Makefiles to be regenerated when you run 'make');
-# (2) otherwise, pass the desired values on the 'make' command line.
-$(am__recursive_targets):
-       @fail=; \
-       if $(am__make_keepgoing); then \
-         failcom='fail=yes'; \
-       else \
-         failcom='exit 1'; \
-       fi; \
-       dot_seen=no; \
-       target=`echo $@ | sed s/-recursive//`; \
-       case "$@" in \
-         distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
-         *) list='$(SUBDIRS)' ;; \
-       esac; \
-       for subdir in $$list; do \
-         echo "Making $$target in $$subdir"; \
-         if test "$$subdir" = "."; then \
-           dot_seen=yes; \
-           local_target="$$target-am"; \
-         else \
-           local_target="$$target"; \
-         fi; \
-         ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-         || eval $$failcom; \
-       done; \
-       if test "$$dot_seen" = "no"; then \
-         $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
-       fi; test -z "$$fail"
-
-ID: $(am__tagged_files)
-       $(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-recursive
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-       set x; \
-       here=`pwd`; \
-       if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
-         include_option=--etags-include; \
-         empty_fix=.; \
-       else \
-         include_option=--include; \
-         empty_fix=; \
-       fi; \
-       list='$(SUBDIRS)'; for subdir in $$list; do \
-         if test "$$subdir" = .; then :; else \
-           test ! -f $$subdir/TAGS || \
-             set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
-         fi; \
-       done; \
-       $(am__define_uniq_tagged_files); \
-       shift; \
-       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-         test -n "$$unique" || unique=$$empty_fix; \
-         if test $$# -gt 0; then \
-           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-             "$$@" $$unique; \
-         else \
-           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-             $$unique; \
-         fi; \
-       fi
-ctags: ctags-recursive
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-       $(am__define_uniq_tagged_files); \
-       test -z "$(CTAGS_ARGS)$$unique" \
-         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-            $$unique
-
-GTAGS:
-       here=`$(am__cd) $(top_builddir) && pwd` \
-         && $(am__cd) $(top_srcdir) \
-         && gtags -i $(GTAGS_ARGS) "$$here"
-cscope: cscope.files
-       test ! -s cscope.files \
-         || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
-clean-cscope:
-       -rm -f cscope.files
-cscope.files: clean-cscope cscopelist
-cscopelist: cscopelist-recursive
-
-cscopelist-am: $(am__tagged_files)
-       list='$(am__tagged_files)'; \
-       case "$(srcdir)" in \
-         [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
-         *) sdir=$(subdir)/$(srcdir) ;; \
-       esac; \
-       for i in $$list; do \
-         if test -f "$$i"; then \
-           echo "$(subdir)/$$i"; \
-         else \
-           echo "$$sdir/$$i"; \
-         fi; \
-       done >> $(top_builddir)/cscope.files
-
-distclean-tags:
-       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-       -rm -f cscope.out cscope.in.out cscope.po.out cscope.files
-
-distdir: $(DISTFILES)
-       $(am__remove_distdir)
-       test -d "$(distdir)" || mkdir "$(distdir)"
-       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-       list='$(DISTFILES)'; \
-         dist_files=`for file in $$list; do echo $$file; done | \
-         sed -e "s|^$$srcdirstrip/||;t" \
-             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-       case $$dist_files in \
-         */*) $(MKDIR_P) `echo "$$dist_files" | \
-                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-                          sort -u` ;; \
-       esac; \
-       for file in $$dist_files; do \
-         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-         if test -d $$d/$$file; then \
-           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-           if test -d "$(distdir)/$$file"; then \
-             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-           fi; \
-           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-           fi; \
-           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-         else \
-           test -f "$(distdir)/$$file" \
-           || cp -p $$d/$$file "$(distdir)/$$file" \
-           || exit 1; \
-         fi; \
-       done
-       @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
-         if test "$$subdir" = .; then :; else \
-           $(am__make_dryrun) \
-             || test -d "$(distdir)/$$subdir" \
-             || $(MKDIR_P) "$(distdir)/$$subdir" \
-             || exit 1; \
-           dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
-           $(am__relativize); \
-           new_distdir=$$reldir; \
-           dir1=$$subdir; dir2="$(top_distdir)"; \
-           $(am__relativize); \
-           new_top_distdir=$$reldir; \
-           echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
-           echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
-           ($(am__cd) $$subdir && \
-             $(MAKE) $(AM_MAKEFLAGS) \
-               top_distdir="$$new_top_distdir" \
-               distdir="$$new_distdir" \
-               am__remove_distdir=: \
-               am__skip_length_check=: \
-               am__skip_mode_fix=: \
-               distdir) \
-             || exit 1; \
-         fi; \
-       done
-       -test -n "$(am__skip_mode_fix)" \
-       || find "$(distdir)" -type d ! -perm -755 \
-               -exec chmod u+rwx,go+rx {} \; -o \
-         ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
-         ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
-         ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
-       || chmod -R a+r "$(distdir)"
-dist-gzip: distdir
-       tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
-       $(am__post_remove_distdir)
-
-dist-bzip2: distdir
-       tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
-       $(am__post_remove_distdir)
-
-dist-lzip: distdir
-       tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
-       $(am__post_remove_distdir)
-
-dist-xz: distdir
-       tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
-       $(am__post_remove_distdir)
-
-dist-tarZ: distdir
-       @echo WARNING: "Support for shar distribution archives is" \
-                      "deprecated." >&2
-       @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
-       tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
-       $(am__post_remove_distdir)
-
-dist-shar: distdir
-       @echo WARNING: "Support for distribution archives compressed with" \
-                      "legacy program 'compress' is deprecated." >&2
-       @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
-       shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
-       $(am__post_remove_distdir)
-
-dist-zip: distdir
-       -rm -f $(distdir).zip
-       zip -rq $(distdir).zip $(distdir)
-       $(am__post_remove_distdir)
-
-dist dist-all:
-       $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
-       $(am__post_remove_distdir)
-
-# This target untars the dist file and tries a VPATH configuration.  Then
-# it guarantees that the distribution is self-contained by making another
-# tarfile.
-distcheck: dist
-       case '$(DIST_ARCHIVES)' in \
-       *.tar.gz*) \
-         GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
-       *.tar.bz2*) \
-         bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
-       *.tar.lz*) \
-         lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
-       *.tar.xz*) \
-         xz -dc $(distdir).tar.xz | $(am__untar) ;;\
-       *.tar.Z*) \
-         uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
-       *.shar.gz*) \
-         GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
-       *.zip*) \
-         unzip $(distdir).zip ;;\
-       esac
-       chmod -R a-w $(distdir)
-       chmod u+w $(distdir)
-       mkdir $(distdir)/_build $(distdir)/_inst
-       chmod a-w $(distdir)
-       test -d $(distdir)/_build || exit 0; \
-       dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
-         && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
-         && am__cwd=`pwd` \
-         && $(am__cd) $(distdir)/_build \
-         && ../configure --srcdir=.. --prefix="$$dc_install_base" \
-           $(AM_DISTCHECK_CONFIGURE_FLAGS) \
-           $(DISTCHECK_CONFIGURE_FLAGS) \
-         && $(MAKE) $(AM_MAKEFLAGS) \
-         && $(MAKE) $(AM_MAKEFLAGS) dvi \
-         && $(MAKE) $(AM_MAKEFLAGS) check \
-         && $(MAKE) $(AM_MAKEFLAGS) install \
-         && $(MAKE) $(AM_MAKEFLAGS) installcheck \
-         && $(MAKE) $(AM_MAKEFLAGS) uninstall \
-         && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
-               distuninstallcheck \
-         && chmod -R a-w "$$dc_install_base" \
-         && ({ \
-              (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
-              && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
-              && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
-              && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
-                   distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
-             } || { rm -rf "$$dc_destdir"; exit 1; }) \
-         && rm -rf "$$dc_destdir" \
-         && $(MAKE) $(AM_MAKEFLAGS) dist \
-         && rm -rf $(DIST_ARCHIVES) \
-         && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
-         && cd "$$am__cwd" \
-         || exit 1
-       $(am__post_remove_distdir)
-       @(echo "$(distdir) archives ready for distribution: "; \
-         list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
-         sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
-distuninstallcheck:
-       @test -n '$(distuninstallcheck_dir)' || { \
-         echo 'ERROR: trying to run $@ with an empty' \
-              '$$(distuninstallcheck_dir)' >&2; \
-         exit 1; \
-       }; \
-       $(am__cd) '$(distuninstallcheck_dir)' || { \
-         echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
-         exit 1; \
-       }; \
-       test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
-          || { echo "ERROR: files left after uninstall:" ; \
-               if test -n "$(DESTDIR)"; then \
-                 echo "  (check DESTDIR support)"; \
-               fi ; \
-               $(distuninstallcheck_listfiles) ; \
-               exit 1; } >&2
-distcleancheck: distclean
-       @if test '$(srcdir)' = . ; then \
-         echo "ERROR: distcleancheck can only run from a VPATH build" ; \
-         exit 1 ; \
-       fi
-       @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
-         || { echo "ERROR: files left in build directory after distclean:" ; \
-              $(distcleancheck_listfiles) ; \
-              exit 1; } >&2
-check-am: all-am
-check: check-recursive
-all-am: Makefile config.h
-installdirs: installdirs-recursive
-installdirs-am:
-install: install-recursive
-install-exec: install-exec-recursive
-install-data: install-data-recursive
-uninstall: uninstall-recursive
-
-install-am: all-am
-       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-recursive
-install-strip:
-       if test -z '$(STRIP)'; then \
-         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-             install; \
-       else \
-         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-       fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-       @echo "This command is intended for maintainers to use"
-       @echo "it deletes files that may require special tools to rebuild."
-clean: clean-recursive
-
-clean-am: clean-generic mostlyclean-am
-
-distclean: distclean-recursive
-       -rm -f $(am__CONFIG_DISTCLEAN_FILES)
-       -rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-hdr distclean-tags
-
-dvi: dvi-recursive
-
-dvi-am:
-
-html: html-recursive
-
-html-am:
-
-info: info-recursive
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-recursive
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-recursive
-
-install-html-am:
-
-install-info: install-info-recursive
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-recursive
-
-install-pdf-am:
-
-install-ps: install-ps-recursive
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-recursive
-       -rm -f $(am__CONFIG_DISTCLEAN_FILES)
-       -rm -rf $(top_srcdir)/autom4te.cache
-       -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-recursive
-
-mostlyclean-am: mostlyclean-generic
-
-pdf: pdf-recursive
-
-pdf-am:
-
-ps: ps-recursive
-
-ps-am:
-
-uninstall-am:
-
-.MAKE: $(am__recursive_targets) all install-am install-strip
-
-.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
-       am--refresh check check-am clean clean-cscope clean-generic \
-       cscope cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \
-       dist-gzip dist-lzip dist-shar dist-tarZ dist-xz dist-zip \
-       distcheck distclean distclean-generic distclean-hdr \
-       distclean-tags distcleancheck distdir distuninstallcheck dvi \
-       dvi-am html html-am info info-am install install-am \
-       install-data install-data-am install-dvi install-dvi-am \
-       install-exec install-exec-am install-html install-html-am \
-       install-info install-info-am install-man install-pdf \
-       install-pdf-am install-ps install-ps-am install-strip \
-       installcheck installcheck-am installdirs installdirs-am \
-       maintainer-clean maintainer-clean-generic mostlyclean \
-       mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \
-       uninstall-am
-
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/src/libs/gnulib/aclocal.m4 b/src/libs/gnulib/aclocal.m4
deleted file mode 100644 (file)
index aae8734..0000000
+++ /dev/null
@@ -1,1174 +0,0 @@
-# generated automatically by aclocal 1.14 -*- Autoconf -*-
-
-# Copyright (C) 1996-2013 Free Software Foundation, Inc.
-
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
-m4_ifndef([AC_AUTOCONF_VERSION],
-  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
-m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],,
-[m4_warning([this file was generated for autoconf 2.69.
-You have another version of autoconf.  It may work, but is not guaranteed to.
-If you have problems, you may need to regenerate the build system entirely.
-To do so, use the procedure documented by the package, typically 'autoreconf'.])])
-
-# Copyright (C) 2002-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_AUTOMAKE_VERSION(VERSION)
-# ----------------------------
-# Automake X.Y traces this macro to ensure aclocal.m4 has been
-# generated from the m4 files accompanying Automake X.Y.
-# (This private macro should not be called outside this file.)
-AC_DEFUN([AM_AUTOMAKE_VERSION],
-[am__api_version='1.14'
-dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
-dnl require some minimum version.  Point them to the right macro.
-m4_if([$1], [1.14], [],
-      [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
-])
-
-# _AM_AUTOCONF_VERSION(VERSION)
-# -----------------------------
-# aclocal traces this macro to find the Autoconf version.
-# This is a private macro too.  Using m4_define simplifies
-# the logic in aclocal, which can simply ignore this definition.
-m4_define([_AM_AUTOCONF_VERSION], [])
-
-# AM_SET_CURRENT_AUTOMAKE_VERSION
-# -------------------------------
-# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
-# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
-AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.14])dnl
-m4_ifndef([AC_AUTOCONF_VERSION],
-  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
-_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
-
-# AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
-
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
-# $ac_aux_dir to '$srcdir/foo'.  In other projects, it is set to
-# '$srcdir', '$srcdir/..', or '$srcdir/../..'.
-#
-# Of course, Automake must honor this variable whenever it calls a
-# tool from the auxiliary directory.  The problem is that $srcdir (and
-# therefore $ac_aux_dir as well) can be either absolute or relative,
-# depending on how configure is run.  This is pretty annoying, since
-# it makes $ac_aux_dir quite unusable in subdirectories: in the top
-# source directory, any form will work fine, but in subdirectories a
-# relative path needs to be adjusted first.
-#
-# $ac_aux_dir/missing
-#    fails when called from a subdirectory if $ac_aux_dir is relative
-# $top_srcdir/$ac_aux_dir/missing
-#    fails if $ac_aux_dir is absolute,
-#    fails when called from a subdirectory in a VPATH build with
-#          a relative $ac_aux_dir
-#
-# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
-# are both prefixed by $srcdir.  In an in-source build this is usually
-# harmless because $srcdir is '.', but things will broke when you
-# start a VPATH build or use an absolute $srcdir.
-#
-# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
-# iff we strip the leading $srcdir from $ac_aux_dir.  That would be:
-#   am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
-# and then we would define $MISSING as
-#   MISSING="\${SHELL} $am_aux_dir/missing"
-# This will work as long as MISSING is not called from configure, because
-# unfortunately $(top_srcdir) has no meaning in configure.
-# However there are other variables, like CC, which are often used in
-# configure, and could therefore not use this "fixed" $ac_aux_dir.
-#
-# Another solution, used here, is to always expand $ac_aux_dir to an
-# absolute PATH.  The drawback is that using absolute paths prevent a
-# configured tree to be moved without reconfiguration.
-
-AC_DEFUN([AM_AUX_DIR_EXPAND],
-[dnl Rely on autoconf to set up CDPATH properly.
-AC_PREREQ([2.50])dnl
-# expand $ac_aux_dir to an absolute path
-am_aux_dir=`cd $ac_aux_dir && pwd`
-])
-
-# AM_CONDITIONAL                                            -*- Autoconf -*-
-
-# Copyright (C) 1997-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_CONDITIONAL(NAME, SHELL-CONDITION)
-# -------------------------------------
-# Define a conditional.
-AC_DEFUN([AM_CONDITIONAL],
-[AC_PREREQ([2.52])dnl
- m4_if([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
-       [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
-AC_SUBST([$1_TRUE])dnl
-AC_SUBST([$1_FALSE])dnl
-_AM_SUBST_NOTMAKE([$1_TRUE])dnl
-_AM_SUBST_NOTMAKE([$1_FALSE])dnl
-m4_define([_AM_COND_VALUE_$1], [$2])dnl
-if $2; then
-  $1_TRUE=
-  $1_FALSE='#'
-else
-  $1_TRUE='#'
-  $1_FALSE=
-fi
-AC_CONFIG_COMMANDS_PRE(
-[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
-  AC_MSG_ERROR([[conditional "$1" was never defined.
-Usually this means the macro was only invoked conditionally.]])
-fi])])
-
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-
-# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be
-# written in clear, in which case automake, when reading aclocal.m4,
-# will think it sees a *use*, and therefore will trigger all it's
-# C support machinery.  Also note that it means that autoscan, seeing
-# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
-
-
-# _AM_DEPENDENCIES(NAME)
-# ----------------------
-# See how the compiler implements dependency checking.
-# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC".
-# We try a few techniques and use that to set a single cache variable.
-#
-# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
-# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
-# dependency, and given that the user is not expected to run this macro,
-# just rely on AC_PROG_CC.
-AC_DEFUN([_AM_DEPENDENCIES],
-[AC_REQUIRE([AM_SET_DEPDIR])dnl
-AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
-AC_REQUIRE([AM_MAKE_INCLUDE])dnl
-AC_REQUIRE([AM_DEP_TRACK])dnl
-
-m4_if([$1], [CC],   [depcc="$CC"   am_compiler_list=],
-      [$1], [CXX],  [depcc="$CXX"  am_compiler_list=],
-      [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
-      [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'],
-      [$1], [UPC],  [depcc="$UPC"  am_compiler_list=],
-      [$1], [GCJ],  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
-                    [depcc="$$1"   am_compiler_list=])
-
-AC_CACHE_CHECK([dependency style of $depcc],
-               [am_cv_$1_dependencies_compiler_type],
-[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
-  # We make a subdir and do the tests there.  Otherwise we can end up
-  # making bogus files that we don't know about and never remove.  For
-  # instance it was reported that on HP-UX the gcc test will end up
-  # making a dummy file named 'D' -- because '-MD' means "put the output
-  # in D".
-  rm -rf conftest.dir
-  mkdir conftest.dir
-  # Copy depcomp to subdir because otherwise we won't find it if we're
-  # using a relative directory.
-  cp "$am_depcomp" conftest.dir
-  cd conftest.dir
-  # We will build objects and dependencies in a subdirectory because
-  # it helps to detect inapplicable dependency modes.  For instance
-  # both Tru64's cc and ICC support -MD to output dependencies as a
-  # side effect of compilation, but ICC will put the dependencies in
-  # the current directory while Tru64 will put them in the object
-  # directory.
-  mkdir sub
-
-  am_cv_$1_dependencies_compiler_type=none
-  if test "$am_compiler_list" = ""; then
-     am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
-  fi
-  am__universal=false
-  m4_case([$1], [CC],
-    [case " $depcc " in #(
-     *\ -arch\ *\ -arch\ *) am__universal=true ;;
-     esac],
-    [CXX],
-    [case " $depcc " in #(
-     *\ -arch\ *\ -arch\ *) am__universal=true ;;
-     esac])
-
-  for depmode in $am_compiler_list; do
-    # Setup a source with many dependencies, because some compilers
-    # like to wrap large dependency lists on column 80 (with \), and
-    # we should not choose a depcomp mode which is confused by this.
-    #
-    # We need to recreate these files for each test, as the compiler may
-    # overwrite some of them when testing with obscure command lines.
-    # This happens at least with the AIX C compiler.
-    : > sub/conftest.c
-    for i in 1 2 3 4 5 6; do
-      echo '#include "conftst'$i'.h"' >> sub/conftest.c
-      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
-      # Solaris 10 /bin/sh.
-      echo '/* dummy */' > sub/conftst$i.h
-    done
-    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
-
-    # We check with '-c' and '-o' for the sake of the "dashmstdout"
-    # mode.  It turns out that the SunPro C++ compiler does not properly
-    # handle '-M -o', and we need to detect this.  Also, some Intel
-    # versions had trouble with output in subdirs.
-    am__obj=sub/conftest.${OBJEXT-o}
-    am__minus_obj="-o $am__obj"
-    case $depmode in
-    gcc)
-      # This depmode causes a compiler race in universal mode.
-      test "$am__universal" = false || continue
-      ;;
-    nosideeffect)
-      # After this tag, mechanisms are not by side-effect, so they'll
-      # only be used when explicitly requested.
-      if test "x$enable_dependency_tracking" = xyes; then
-       continue
-      else
-       break
-      fi
-      ;;
-    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
-      # This compiler won't grok '-c -o', but also, the minuso test has
-      # not run yet.  These depmodes are late enough in the game, and
-      # so weak that their functioning should not be impacted.
-      am__obj=conftest.${OBJEXT-o}
-      am__minus_obj=
-      ;;
-    none) break ;;
-    esac
-    if depmode=$depmode \
-       source=sub/conftest.c object=$am__obj \
-       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
-       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
-         >/dev/null 2>conftest.err &&
-       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
-       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
-      # icc doesn't choke on unknown options, it will just issue warnings
-      # or remarks (even with -Werror).  So we grep stderr for any message
-      # that says an option was ignored or not supported.
-      # When given -MP, icc 7.0 and 7.1 complain thusly:
-      #   icc: Command line warning: ignoring option '-M'; no argument required
-      # The diagnosis changed in icc 8.0:
-      #   icc: Command line remark: option '-MP' not supported
-      if (grep 'ignoring option' conftest.err ||
-          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
-        am_cv_$1_dependencies_compiler_type=$depmode
-        break
-      fi
-    fi
-  done
-
-  cd ..
-  rm -rf conftest.dir
-else
-  am_cv_$1_dependencies_compiler_type=none
-fi
-])
-AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
-AM_CONDITIONAL([am__fastdep$1], [
-  test "x$enable_dependency_tracking" != xno \
-  && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
-])
-
-
-# AM_SET_DEPDIR
-# -------------
-# Choose a directory name for dependency files.
-# This macro is AC_REQUIREd in _AM_DEPENDENCIES.
-AC_DEFUN([AM_SET_DEPDIR],
-[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
-AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
-])
-
-
-# AM_DEP_TRACK
-# ------------
-AC_DEFUN([AM_DEP_TRACK],
-[AC_ARG_ENABLE([dependency-tracking], [dnl
-AS_HELP_STRING(
-  [--enable-dependency-tracking],
-  [do not reject slow dependency extractors])
-AS_HELP_STRING(
-  [--disable-dependency-tracking],
-  [speeds up one-time build])])
-if test "x$enable_dependency_tracking" != xno; then
-  am_depcomp="$ac_aux_dir/depcomp"
-  AMDEPBACKSLASH='\'
-  am__nodep='_no'
-fi
-AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
-AC_SUBST([AMDEPBACKSLASH])dnl
-_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
-AC_SUBST([am__nodep])dnl
-_AM_SUBST_NOTMAKE([am__nodep])dnl
-])
-
-# Generate code to set up dependency tracking.              -*- Autoconf -*-
-
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-
-# _AM_OUTPUT_DEPENDENCY_COMMANDS
-# ------------------------------
-AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
-[{
-  # Older Autoconf quotes --file arguments for eval, but not when files
-  # are listed without --file.  Let's play safe and only enable the eval
-  # if we detect the quoting.
-  case $CONFIG_FILES in
-  *\'*) eval set x "$CONFIG_FILES" ;;
-  *)   set x $CONFIG_FILES ;;
-  esac
-  shift
-  for mf
-  do
-    # Strip MF so we end up with the name of the file.
-    mf=`echo "$mf" | sed -e 's/:.*$//'`
-    # Check whether this is an Automake generated Makefile or not.
-    # We used to match only the files named 'Makefile.in', but
-    # some people rename them; so instead we look at the file content.
-    # Grep'ing the first line is not enough: some people post-process
-    # each Makefile.in and add a new line on top of each file to say so.
-    # Grep'ing the whole file is not good either: AIX grep has a line
-    # limit of 2048, but all sed's we know have understand at least 4000.
-    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
-      dirpart=`AS_DIRNAME("$mf")`
-    else
-      continue
-    fi
-    # Extract the definition of DEPDIR, am__include, and am__quote
-    # from the Makefile without running 'make'.
-    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
-    test -z "$DEPDIR" && continue
-    am__include=`sed -n 's/^am__include = //p' < "$mf"`
-    test -z "$am__include" && continue
-    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
-    # Find all dependency output files, they are included files with
-    # $(DEPDIR) in their names.  We invoke sed twice because it is the
-    # simplest approach to changing $(DEPDIR) to its actual value in the
-    # expansion.
-    for file in `sed -n "
-      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
-        sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
-      # Make sure the directory exists.
-      test -f "$dirpart/$file" && continue
-      fdir=`AS_DIRNAME(["$file"])`
-      AS_MKDIR_P([$dirpart/$fdir])
-      # echo "creating $dirpart/$file"
-      echo '# dummy' > "$dirpart/$file"
-    done
-  done
-}
-])# _AM_OUTPUT_DEPENDENCY_COMMANDS
-
-
-# AM_OUTPUT_DEPENDENCY_COMMANDS
-# -----------------------------
-# This macro should only be invoked once -- use via AC_REQUIRE.
-#
-# This code is only required when automatic dependency tracking
-# is enabled.  FIXME.  This creates each '.P' file that we will
-# need in order to bootstrap the dependency handling code.
-AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
-[AC_CONFIG_COMMANDS([depfiles],
-     [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
-     [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
-])
-
-# Do all the work for Automake.                             -*- Autoconf -*-
-
-# Copyright (C) 1996-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This macro actually does too much.  Some checks are only needed if
-# your package does certain things.  But this isn't really a big deal.
-
-dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O.
-m4_define([AC_PROG_CC],
-m4_defn([AC_PROG_CC])
-[_AM_PROG_CC_C_O
-])
-
-# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
-# AM_INIT_AUTOMAKE([OPTIONS])
-# -----------------------------------------------
-# The call with PACKAGE and VERSION arguments is the old style
-# call (pre autoconf-2.50), which is being phased out.  PACKAGE
-# and VERSION should now be passed to AC_INIT and removed from
-# the call to AM_INIT_AUTOMAKE.
-# We support both call styles for the transition.  After
-# the next Automake release, Autoconf can make the AC_INIT
-# arguments mandatory, and then we can depend on a new Autoconf
-# release and drop the old call support.
-AC_DEFUN([AM_INIT_AUTOMAKE],
-[AC_PREREQ([2.65])dnl
-dnl Autoconf wants to disallow AM_ names.  We explicitly allow
-dnl the ones we care about.
-m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
-AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
-AC_REQUIRE([AC_PROG_INSTALL])dnl
-if test "`cd $srcdir && pwd`" != "`pwd`"; then
-  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
-  # is not polluted with repeated "-I."
-  AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
-  # test to see if srcdir already configured
-  if test -f $srcdir/config.status; then
-    AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
-  fi
-fi
-
-# test whether we have cygpath
-if test -z "$CYGPATH_W"; then
-  if (cygpath --version) >/dev/null 2>/dev/null; then
-    CYGPATH_W='cygpath -w'
-  else
-    CYGPATH_W=echo
-  fi
-fi
-AC_SUBST([CYGPATH_W])
-
-# Define the identity of the package.
-dnl Distinguish between old-style and new-style calls.
-m4_ifval([$2],
-[AC_DIAGNOSE([obsolete],
-             [$0: two- and three-arguments forms are deprecated.])
-m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
- AC_SUBST([PACKAGE], [$1])dnl
- AC_SUBST([VERSION], [$2])],
-[_AM_SET_OPTIONS([$1])dnl
-dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
-m4_if(
-  m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]),
-  [ok:ok],,
-  [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
- AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
- AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
-
-_AM_IF_OPTION([no-define],,
-[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package])
- AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl
-
-# Some tools Automake needs.
-AC_REQUIRE([AM_SANITY_CHECK])dnl
-AC_REQUIRE([AC_ARG_PROGRAM])dnl
-AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}])
-AM_MISSING_PROG([AUTOCONF], [autoconf])
-AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}])
-AM_MISSING_PROG([AUTOHEADER], [autoheader])
-AM_MISSING_PROG([MAKEINFO], [makeinfo])
-AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
-AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
-AC_REQUIRE([AC_PROG_MKDIR_P])dnl
-# For better backward compatibility.  To be removed once Automake 1.9.x
-# dies out for good.  For more background, see:
-# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
-# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
-AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
-# We need awk for the "check" target.  The system "awk" is bad on
-# some platforms.
-AC_REQUIRE([AC_PROG_AWK])dnl
-AC_REQUIRE([AC_PROG_MAKE_SET])dnl
-AC_REQUIRE([AM_SET_LEADING_DOT])dnl
-_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
-             [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
-                            [_AM_PROG_TAR([v7])])])
-_AM_IF_OPTION([no-dependencies],,
-[AC_PROVIDE_IFELSE([AC_PROG_CC],
-                 [_AM_DEPENDENCIES([CC])],
-                 [m4_define([AC_PROG_CC],
-                            m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl
-AC_PROVIDE_IFELSE([AC_PROG_CXX],
-                 [_AM_DEPENDENCIES([CXX])],
-                 [m4_define([AC_PROG_CXX],
-                            m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl
-AC_PROVIDE_IFELSE([AC_PROG_OBJC],
-                 [_AM_DEPENDENCIES([OBJC])],
-                 [m4_define([AC_PROG_OBJC],
-                            m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
-AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
-                 [_AM_DEPENDENCIES([OBJCXX])],
-                 [m4_define([AC_PROG_OBJCXX],
-                            m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl
-])
-AC_REQUIRE([AM_SILENT_RULES])dnl
-dnl The testsuite driver may need to know about EXEEXT, so add the
-dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This
-dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below.
-AC_CONFIG_COMMANDS_PRE(dnl
-[m4_provide_if([_AM_COMPILER_EXEEXT],
-  [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
-
-# POSIX will say in a future version that running "rm -f" with no argument
-# is OK; and we want to be able to make that assumption in our Makefile
-# recipes.  So use an aggressive probe to check that the usage we want is
-# actually supported "in the wild" to an acceptable degree.
-# See automake bug#10828.
-# To make any issue more visible, cause the running configure to be aborted
-# by default if the 'rm' program in use doesn't match our expectations; the
-# user can still override this though.
-if rm -f && rm -fr && rm -rf; then : OK; else
-  cat >&2 <<'END'
-Oops!
-
-Your 'rm' program seems unable to run without file operands specified
-on the command line, even when the '-f' option is present.  This is contrary
-to the behaviour of most rm programs out there, and not conforming with
-the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
-
-Please tell bug-automake@gnu.org about your system, including the value
-of your $PATH and any error possibly output before this message.  This
-can help us improve future automake versions.
-
-END
-  if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
-    echo 'Configuration will proceed anyway, since you have set the' >&2
-    echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
-    echo >&2
-  else
-    cat >&2 <<'END'
-Aborting the configuration process, to ensure you take notice of the issue.
-
-You can download and install GNU coreutils to get an 'rm' implementation
-that behaves properly: <http://www.gnu.org/software/coreutils/>.
-
-If you want to complete the configuration process using your problematic
-'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
-to "yes", and re-run configure.
-
-END
-    AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
-  fi
-fi])
-
-dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion.  Do not
-dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
-dnl mangled by Autoconf and run in a shell conditional statement.
-m4_define([_AC_COMPILER_EXEEXT],
-m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
-
-# When config.status generates a header, we must update the stamp-h file.
-# This file resides in the same directory as the config header
-# that is generated.  The stamp files are numbered to have different names.
-
-# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
-# loop where config.status creates the headers, so we can generate
-# our stamp files there.
-AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
-[# Compute $1's index in $config_headers.
-_am_arg=$1
-_am_stamp_count=1
-for _am_header in $config_headers :; do
-  case $_am_header in
-    $_am_arg | $_am_arg:* )
-      break ;;
-    * )
-      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
-  esac
-done
-echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
-
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_PROG_INSTALL_SH
-# ------------------
-# Define $install_sh.
-AC_DEFUN([AM_PROG_INSTALL_SH],
-[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-if test x"${install_sh}" != xset; then
-  case $am_aux_dir in
-  *\ * | *\    *)
-    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
-  *)
-    install_sh="\${SHELL} $am_aux_dir/install-sh"
-  esac
-fi
-AC_SUBST([install_sh])])
-
-# Copyright (C) 2003-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# Check whether the underlying file-system supports filenames
-# with a leading dot.  For instance MS-DOS doesn't.
-AC_DEFUN([AM_SET_LEADING_DOT],
-[rm -rf .tst 2>/dev/null
-mkdir .tst 2>/dev/null
-if test -d .tst; then
-  am__leading_dot=.
-else
-  am__leading_dot=_
-fi
-rmdir .tst 2>/dev/null
-AC_SUBST([am__leading_dot])])
-
-# Check to see how 'make' treats includes.                 -*- Autoconf -*-
-
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_MAKE_INCLUDE()
-# -----------------
-# Check to see how make treats includes.
-AC_DEFUN([AM_MAKE_INCLUDE],
-[am_make=${MAKE-make}
-cat > confinc << 'END'
-am__doit:
-       @echo this is the am__doit target
-.PHONY: am__doit
-END
-# If we don't find an include directive, just comment out the code.
-AC_MSG_CHECKING([for style of include used by $am_make])
-am__include="#"
-am__quote=
-_am_result=none
-# First try GNU make style include.
-echo "include confinc" > confmf
-# Ignore all kinds of additional output from 'make'.
-case `$am_make -s -f confmf 2> /dev/null` in #(
-*the\ am__doit\ target*)
-  am__include=include
-  am__quote=
-  _am_result=GNU
-  ;;
-esac
-# Now try BSD make style include.
-if test "$am__include" = "#"; then
-   echo '.include "confinc"' > confmf
-   case `$am_make -s -f confmf 2> /dev/null` in #(
-   *the\ am__doit\ target*)
-     am__include=.include
-     am__quote="\""
-     _am_result=BSD
-     ;;
-   esac
-fi
-AC_SUBST([am__include])
-AC_SUBST([am__quote])
-AC_MSG_RESULT([$_am_result])
-rm -f confinc confmf
-])
-
-# Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
-
-# Copyright (C) 1997-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_MISSING_PROG(NAME, PROGRAM)
-# ------------------------------
-AC_DEFUN([AM_MISSING_PROG],
-[AC_REQUIRE([AM_MISSING_HAS_RUN])
-$1=${$1-"${am_missing_run}$2"}
-AC_SUBST($1)])
-
-# AM_MISSING_HAS_RUN
-# ------------------
-# Define MISSING if not defined so far and test if it is modern enough.
-# If it is, set am_missing_run to use it, otherwise, to nothing.
-AC_DEFUN([AM_MISSING_HAS_RUN],
-[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-AC_REQUIRE_AUX_FILE([missing])dnl
-if test x"${MISSING+set}" != xset; then
-  case $am_aux_dir in
-  *\ * | *\    *)
-    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
-  *)
-    MISSING="\${SHELL} $am_aux_dir/missing" ;;
-  esac
-fi
-# Use eval to expand $SHELL
-if eval "$MISSING --is-lightweight"; then
-  am_missing_run="$MISSING "
-else
-  am_missing_run=
-  AC_MSG_WARN(['missing' script is too old or missing])
-fi
-])
-
-# Helper functions for option handling.                     -*- Autoconf -*-
-
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# _AM_MANGLE_OPTION(NAME)
-# -----------------------
-AC_DEFUN([_AM_MANGLE_OPTION],
-[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
-
-# _AM_SET_OPTION(NAME)
-# --------------------
-# Set option NAME.  Presently that only means defining a flag for this option.
-AC_DEFUN([_AM_SET_OPTION],
-[m4_define(_AM_MANGLE_OPTION([$1]), [1])])
-
-# _AM_SET_OPTIONS(OPTIONS)
-# ------------------------
-# OPTIONS is a space-separated list of Automake options.
-AC_DEFUN([_AM_SET_OPTIONS],
-[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
-
-# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
-# -------------------------------------------
-# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
-AC_DEFUN([_AM_IF_OPTION],
-[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
-
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# _AM_PROG_CC_C_O
-# ---------------
-# Like AC_PROG_CC_C_O, but changed for automake.  We rewrite AC_PROG_CC
-# to automatically call this.
-AC_DEFUN([_AM_PROG_CC_C_O],
-[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-AC_REQUIRE_AUX_FILE([compile])dnl
-AC_LANG_PUSH([C])dnl
-AC_CACHE_CHECK(
-  [whether $CC understands -c and -o together],
-  [am_cv_prog_cc_c_o],
-  [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])])
-  # Make sure it works both with $CC and with simple cc.
-  # Following AC_PROG_CC_C_O, we do the test twice because some
-  # compilers refuse to overwrite an existing .o file with -o,
-  # though they will create one.
-  am_cv_prog_cc_c_o=yes
-  for am_i in 1 2; do
-    if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \
-         && test -f conftest2.$ac_objext; then
-      : OK
-    else
-      am_cv_prog_cc_c_o=no
-      break
-    fi
-  done
-  rm -f core conftest*
-  unset am_i])
-if test "$am_cv_prog_cc_c_o" != yes; then
-   # Losing compiler, so override with the script.
-   # FIXME: It is wrong to rewrite CC.
-   # But if we don't then we get into trouble of one sort or another.
-   # A longer-term fix would be to have automake use am__CC in this case,
-   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
-   CC="$am_aux_dir/compile $CC"
-fi
-AC_LANG_POP([C])])
-
-# For backward compatibility.
-AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
-
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_RUN_LOG(COMMAND)
-# -------------------
-# Run COMMAND, save the exit status in ac_status, and log it.
-# (This has been adapted from Autoconf's _AC_RUN_LOG macro.)
-AC_DEFUN([AM_RUN_LOG],
-[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD
-   ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD
-   ac_status=$?
-   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
-   (exit $ac_status); }])
-
-# Check to make sure that the build environment is sane.    -*- Autoconf -*-
-
-# Copyright (C) 1996-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_SANITY_CHECK
-# ---------------
-AC_DEFUN([AM_SANITY_CHECK],
-[AC_MSG_CHECKING([whether build environment is sane])
-# Reject unsafe characters in $srcdir or the absolute working directory
-# name.  Accept space and tab only in the latter.
-am_lf='
-'
-case `pwd` in
-  *[[\\\"\#\$\&\'\`$am_lf]]*)
-    AC_MSG_ERROR([unsafe absolute working directory name]);;
-esac
-case $srcdir in
-  *[[\\\"\#\$\&\'\`$am_lf\ \   ]]*)
-    AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);;
-esac
-
-# Do 'set' in a subshell so we don't clobber the current shell's
-# arguments.  Must try -L first in case configure is actually a
-# symlink; some systems play weird games with the mod time of symlinks
-# (eg FreeBSD returns the mod time of the symlink's containing
-# directory).
-if (
-   am_has_slept=no
-   for am_try in 1 2; do
-     echo "timestamp, slept: $am_has_slept" > conftest.file
-     set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
-     if test "$[*]" = "X"; then
-       # -L didn't work.
-       set X `ls -t "$srcdir/configure" conftest.file`
-     fi
-     if test "$[*]" != "X $srcdir/configure conftest.file" \
-       && test "$[*]" != "X conftest.file $srcdir/configure"; then
-
-       # If neither matched, then we have a broken ls.  This can happen
-       # if, for instance, CONFIG_SHELL is bash and it inherits a
-       # broken ls alias from the environment.  This has actually
-       # happened.  Such a system could not be considered "sane".
-       AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
-  alias in your environment])
-     fi
-     if test "$[2]" = conftest.file || test $am_try -eq 2; then
-       break
-     fi
-     # Just in case.
-     sleep 1
-     am_has_slept=yes
-   done
-   test "$[2]" = conftest.file
-   )
-then
-   # Ok.
-   :
-else
-   AC_MSG_ERROR([newly created file is older than distributed files!
-Check your system clock])
-fi
-AC_MSG_RESULT([yes])
-# If we didn't sleep, we still need to ensure time stamps of config.status and
-# generated files are strictly newer.
-am_sleep_pid=
-if grep 'slept: no' conftest.file >/dev/null 2>&1; then
-  ( sleep 1 ) &
-  am_sleep_pid=$!
-fi
-AC_CONFIG_COMMANDS_PRE(
-  [AC_MSG_CHECKING([that generated files are newer than configure])
-   if test -n "$am_sleep_pid"; then
-     # Hide warnings about reused PIDs.
-     wait $am_sleep_pid 2>/dev/null
-   fi
-   AC_MSG_RESULT([done])])
-rm -f conftest.file
-])
-
-# Copyright (C) 2009-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_SILENT_RULES([DEFAULT])
-# --------------------------
-# Enable less verbose build rules; with the default set to DEFAULT
-# ("yes" being less verbose, "no" or empty being verbose).
-AC_DEFUN([AM_SILENT_RULES],
-[AC_ARG_ENABLE([silent-rules], [dnl
-AS_HELP_STRING(
-  [--enable-silent-rules],
-  [less verbose build output (undo: "make V=1")])
-AS_HELP_STRING(
-  [--disable-silent-rules],
-  [verbose build output (undo: "make V=0")])dnl
-])
-case $enable_silent_rules in @%:@ (((
-  yes) AM_DEFAULT_VERBOSITY=0;;
-   no) AM_DEFAULT_VERBOSITY=1;;
-    *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
-esac
-dnl
-dnl A few 'make' implementations (e.g., NonStop OS and NextStep)
-dnl do not support nested variable expansions.
-dnl See automake bug#9928 and bug#10237.
-am_make=${MAKE-make}
-AC_CACHE_CHECK([whether $am_make supports nested variables],
-   [am_cv_make_support_nested_variables],
-   [if AS_ECHO([['TRUE=$(BAR$(V))
-BAR0=false
-BAR1=true
-V=1
-am__doit:
-       @$(TRUE)
-.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then
-  am_cv_make_support_nested_variables=yes
-else
-  am_cv_make_support_nested_variables=no
-fi])
-if test $am_cv_make_support_nested_variables = yes; then
-  dnl Using '$V' instead of '$(V)' breaks IRIX make.
-  AM_V='$(V)'
-  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
-else
-  AM_V=$AM_DEFAULT_VERBOSITY
-  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
-fi
-AC_SUBST([AM_V])dnl
-AM_SUBST_NOTMAKE([AM_V])dnl
-AC_SUBST([AM_DEFAULT_V])dnl
-AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl
-AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
-AM_BACKSLASH='\'
-AC_SUBST([AM_BACKSLASH])dnl
-_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
-])
-
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_PROG_INSTALL_STRIP
-# ---------------------
-# One issue with vendor 'install' (even GNU) is that you can't
-# specify the program used to strip binaries.  This is especially
-# annoying in cross-compiling environments, where the build's strip
-# is unlikely to handle the host's binaries.
-# Fortunately install-sh will honor a STRIPPROG variable, so we
-# always use install-sh in "make install-strip", and initialize
-# STRIPPROG with the value of the STRIP variable (set by the user).
-AC_DEFUN([AM_PROG_INSTALL_STRIP],
-[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
-# Installed binaries are usually stripped using 'strip' when the user
-# run "make install-strip".  However 'strip' might not be the right
-# tool to use in cross-compilation environments, therefore Automake
-# will honor the 'STRIP' environment variable to overrule this program.
-dnl Don't test for $cross_compiling = yes, because it might be 'maybe'.
-if test "$cross_compiling" != no; then
-  AC_CHECK_TOOL([STRIP], [strip], :)
-fi
-INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
-AC_SUBST([INSTALL_STRIP_PROGRAM])])
-
-# Copyright (C) 2006-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# _AM_SUBST_NOTMAKE(VARIABLE)
-# ---------------------------
-# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
-# This macro is traced by Automake.
-AC_DEFUN([_AM_SUBST_NOTMAKE])
-
-# AM_SUBST_NOTMAKE(VARIABLE)
-# --------------------------
-# Public sister of _AM_SUBST_NOTMAKE.
-AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
-
-# Check how to create a tarball.                            -*- Autoconf -*-
-
-# Copyright (C) 2004-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# _AM_PROG_TAR(FORMAT)
-# --------------------
-# Check how to create a tarball in format FORMAT.
-# FORMAT should be one of 'v7', 'ustar', or 'pax'.
-#
-# Substitute a variable $(am__tar) that is a command
-# writing to stdout a FORMAT-tarball containing the directory
-# $tardir.
-#     tardir=directory && $(am__tar) > result.tar
-#
-# Substitute a variable $(am__untar) that extract such
-# a tarball read from stdin.
-#     $(am__untar) < result.tar
-#
-AC_DEFUN([_AM_PROG_TAR],
-[# Always define AMTAR for backward compatibility.  Yes, it's still used
-# in the wild :-(  We should find a proper way to deprecate it ...
-AC_SUBST([AMTAR], ['$${TAR-tar}'])
-
-# We'll loop over all known methods to create a tar archive until one works.
-_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
-
-m4_if([$1], [v7],
-  [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
-
-  [m4_case([$1],
-    [ustar],
-     [# The POSIX 1988 'ustar' format is defined with fixed-size fields.
-      # There is notably a 21 bits limit for the UID and the GID.  In fact,
-      # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343
-      # and bug#13588).
-      am_max_uid=2097151 # 2^21 - 1
-      am_max_gid=$am_max_uid
-      # The $UID and $GID variables are not portable, so we need to resort
-      # to the POSIX-mandated id(1) utility.  Errors in the 'id' calls
-      # below are definitely unexpected, so allow the users to see them
-      # (that is, avoid stderr redirection).
-      am_uid=`id -u || echo unknown`
-      am_gid=`id -g || echo unknown`
-      AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format])
-      if test $am_uid -le $am_max_uid; then
-         AC_MSG_RESULT([yes])
-      else
-         AC_MSG_RESULT([no])
-         _am_tools=none
-      fi
-      AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format])
-      if test $am_gid -le $am_max_gid; then
-         AC_MSG_RESULT([yes])
-      else
-        AC_MSG_RESULT([no])
-        _am_tools=none
-      fi],
-
-  [pax],
-    [],
-
-  [m4_fatal([Unknown tar format])])
-
-  AC_MSG_CHECKING([how to create a $1 tar archive])
-
-  # Go ahead even if we have the value already cached.  We do so because we
-  # need to set the values for the 'am__tar' and 'am__untar' variables.
-  _am_tools=${am_cv_prog_tar_$1-$_am_tools}
-
-  for _am_tool in $_am_tools; do
-    case $_am_tool in
-    gnutar)
-      for _am_tar in tar gnutar gtar; do
-        AM_RUN_LOG([$_am_tar --version]) && break
-      done
-      am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
-      am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
-      am__untar="$_am_tar -xf -"
-      ;;
-    plaintar)
-      # Must skip GNU tar: if it does not support --format= it doesn't create
-      # ustar tarball either.
-      (tar --version) >/dev/null 2>&1 && continue
-      am__tar='tar chf - "$$tardir"'
-      am__tar_='tar chf - "$tardir"'
-      am__untar='tar xf -'
-      ;;
-    pax)
-      am__tar='pax -L -x $1 -w "$$tardir"'
-      am__tar_='pax -L -x $1 -w "$tardir"'
-      am__untar='pax -r'
-      ;;
-    cpio)
-      am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
-      am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
-      am__untar='cpio -i -H $1 -d'
-      ;;
-    none)
-      am__tar=false
-      am__tar_=false
-      am__untar=false
-      ;;
-    esac
-
-    # If the value was cached, stop now.  We just wanted to have am__tar
-    # and am__untar set.
-    test -n "${am_cv_prog_tar_$1}" && break
-
-    # tar/untar a dummy directory, and stop if the command works.
-    rm -rf conftest.dir
-    mkdir conftest.dir
-    echo GrepMe > conftest.dir/file
-    AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
-    rm -rf conftest.dir
-    if test -s conftest.tar; then
-      AM_RUN_LOG([$am__untar <conftest.tar])
-      AM_RUN_LOG([cat conftest.dir/file])
-      grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
-    fi
-  done
-  rm -rf conftest.dir
-
-  AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
-  AC_MSG_RESULT([$am_cv_prog_tar_$1])])
-
-AC_SUBST([am__tar])
-AC_SUBST([am__untar])
-]) # _AM_PROG_TAR
-
-m4_include([m4/00gnulib.m4])
-m4_include([m4/codeset.m4])
-m4_include([m4/configmake.m4])
-m4_include([m4/extensions.m4])
-m4_include([m4/extern-inline.m4])
-m4_include([m4/fcntl-o.m4])
-m4_include([m4/glibc21.m4])
-m4_include([m4/gnulib-common.m4])
-m4_include([m4/include_next.m4])
-m4_include([m4/inttypes-pri.m4])
-m4_include([m4/inttypes.m4])
-m4_include([m4/libunistring-base.m4])
-m4_include([m4/localcharset.m4])
-m4_include([m4/longlong.m4])
-m4_include([m4/multiarch.m4])
-m4_include([m4/onceonly.m4])
-m4_include([m4/stdbool.m4])
-m4_include([m4/stddef_h.m4])
-m4_include([m4/stdint.m4])
-m4_include([m4/warn-on-use.m4])
-m4_include([m4/wchar_h.m4])
-m4_include([m4/wchar_t.m4])
-m4_include([m4/wctype_h.m4])
-m4_include([m4/wcwidth.m4])
-m4_include([m4/wint_t.m4])
diff --git a/src/libs/gnulib/build-aux/config.guess b/src/libs/gnulib/build-aux/config.guess
deleted file mode 100755 (executable)
index 1f5c50c..0000000
+++ /dev/null
@@ -1,1420 +0,0 @@
-#! /bin/sh
-# Attempt to guess a canonical system name.
-#   Copyright 1992-2014 Free Software Foundation, Inc.
-
-timestamp='2014-03-23'
-
-# This file is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 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 <http://www.gnu.org/licenses/>.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that
-# program.  This Exception is an additional permission under section 7
-# of the GNU General Public License, version 3 ("GPLv3").
-#
-# Originally written by Per Bothner.
-#
-# You can get the latest version of this script from:
-# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
-#
-# Please send patches with a ChangeLog entry to config-patches@gnu.org.
-
-
-me=`echo "$0" | sed -e 's,.*/,,'`
-
-usage="\
-Usage: $0 [OPTION]
-
-Output the configuration name of the system \`$me' is run on.
-
-Operation modes:
-  -h, --help         print this help, then exit
-  -t, --time-stamp   print date of last modification, then exit
-  -v, --version      print version number, then exit
-
-Report bugs and patches to <config-patches@gnu.org>."
-
-version="\
-GNU config.guess ($timestamp)
-
-Originally written by Per Bothner.
-Copyright 1992-2014 Free Software Foundation, Inc.
-
-This is free software; see the source for copying conditions.  There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-
-help="
-Try \`$me --help' for more information."
-
-# Parse command line
-while test $# -gt 0 ; do
-  case $1 in
-    --time-stamp | --time* | -t )
-       echo "$timestamp" ; exit ;;
-    --version | -v )
-       echo "$version" ; exit ;;
-    --help | --h* | -h )
-       echo "$usage"; exit ;;
-    -- )     # Stop option processing
-       shift; break ;;
-    - )        # Use stdin as input.
-       break ;;
-    -* )
-       echo "$me: invalid option $1$help" >&2
-       exit 1 ;;
-    * )
-       break ;;
-  esac
-done
-
-if test $# != 0; then
-  echo "$me: too many arguments$help" >&2
-  exit 1
-fi
-
-trap 'exit 1' 1 2 15
-
-# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
-# compiler to aid in system detection is discouraged as it requires
-# temporary files to be created and, as you can see below, it is a
-# headache to deal with in a portable fashion.
-
-# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
-# use `HOST_CC' if defined, but it is deprecated.
-
-# Portable tmp directory creation inspired by the Autoconf team.
-
-set_cc_for_build='
-trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
-trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
-: ${TMPDIR=/tmp} ;
- { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
- { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
- { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
- { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
-dummy=$tmp/dummy ;
-tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
-case $CC_FOR_BUILD,$HOST_CC,$CC in
- ,,)    echo "int x;" > $dummy.c ;
-       for c in cc gcc c89 c99 ; do
-         if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
-            CC_FOR_BUILD="$c"; break ;
-         fi ;
-       done ;
-       if test x"$CC_FOR_BUILD" = x ; then
-         CC_FOR_BUILD=no_compiler_found ;
-       fi
-       ;;
- ,,*)   CC_FOR_BUILD=$CC ;;
- ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
-esac ; set_cc_for_build= ;'
-
-# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
-# (ghazi@noc.rutgers.edu 1994-08-24)
-if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
-       PATH=$PATH:/.attbin ; export PATH
-fi
-
-UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
-UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
-UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
-UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
-
-case "${UNAME_SYSTEM}" in
-Linux|GNU|GNU/*)
-       # If the system lacks a compiler, then just pick glibc.
-       # We could probably try harder.
-       LIBC=gnu
-
-       eval $set_cc_for_build
-       cat <<-EOF > $dummy.c
-       #include <features.h>
-       #if defined(__UCLIBC__)
-       LIBC=uclibc
-       #elif defined(__dietlibc__)
-       LIBC=dietlibc
-       #else
-       LIBC=gnu
-       #endif
-       EOF
-       eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`
-       ;;
-esac
-
-# Note: order is significant - the case branches are not exclusive.
-
-case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
-    *:NetBSD:*:*)
-       # NetBSD (nbsd) targets should (where applicable) match one or
-       # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
-       # *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
-       # switched to ELF, *-*-netbsd* would select the old
-       # object file format.  This provides both forward
-       # compatibility and a consistent mechanism for selecting the
-       # object file format.
-       #
-       # Note: NetBSD doesn't particularly care about the vendor
-       # portion of the name.  We always set it to "unknown".
-       sysctl="sysctl -n hw.machine_arch"
-       UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
-           /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
-       case "${UNAME_MACHINE_ARCH}" in
-           armeb) machine=armeb-unknown ;;
-           arm*) machine=arm-unknown ;;
-           sh3el) machine=shl-unknown ;;
-           sh3eb) machine=sh-unknown ;;
-           sh5el) machine=sh5le-unknown ;;
-           *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
-       esac
-       # The Operating System including object format, if it has switched
-       # to ELF recently, or will in the future.
-       case "${UNAME_MACHINE_ARCH}" in
-           arm*|i386|m68k|ns32k|sh3*|sparc|vax)
-               eval $set_cc_for_build
-               if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
-                       | grep -q __ELF__
-               then
-                   # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
-                   # Return netbsd for either.  FIX?
-                   os=netbsd
-               else
-                   os=netbsdelf
-               fi
-               ;;
-           *)
-               os=netbsd
-               ;;
-       esac
-       # The OS release
-       # Debian GNU/NetBSD machines have a different userland, and
-       # thus, need a distinct triplet. However, they do not need
-       # kernel version information, so it can be replaced with a
-       # suitable tag, in the style of linux-gnu.
-       case "${UNAME_VERSION}" in
-           Debian*)
-               release='-gnu'
-               ;;
-           *)
-               release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
-               ;;
-       esac
-       # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
-       # contains redundant information, the shorter form:
-       # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
-       echo "${machine}-${os}${release}"
-       exit ;;
-    *:Bitrig:*:*)
-       UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
-       echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE}
-       exit ;;
-    *:OpenBSD:*:*)
-       UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
-       echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
-       exit ;;
-    *:ekkoBSD:*:*)
-       echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
-       exit ;;
-    *:SolidBSD:*:*)
-       echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
-       exit ;;
-    macppc:MirBSD:*:*)
-       echo powerpc-unknown-mirbsd${UNAME_RELEASE}
-       exit ;;
-    *:MirBSD:*:*)
-       echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
-       exit ;;
-    alpha:OSF1:*:*)
-       case $UNAME_RELEASE in
-       *4.0)
-               UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
-               ;;
-       *5.*)
-               UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
-               ;;
-       esac
-       # According to Compaq, /usr/sbin/psrinfo has been available on
-       # OSF/1 and Tru64 systems produced since 1995.  I hope that
-       # covers most systems running today.  This code pipes the CPU
-       # types through head -n 1, so we only detect the type of CPU 0.
-       ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1`
-       case "$ALPHA_CPU_TYPE" in
-           "EV4 (21064)")
-               UNAME_MACHINE="alpha" ;;
-           "EV4.5 (21064)")
-               UNAME_MACHINE="alpha" ;;
-           "LCA4 (21066/21068)")
-               UNAME_MACHINE="alpha" ;;
-           "EV5 (21164)")
-               UNAME_MACHINE="alphaev5" ;;
-           "EV5.6 (21164A)")
-               UNAME_MACHINE="alphaev56" ;;
-           "EV5.6 (21164PC)")
-               UNAME_MACHINE="alphapca56" ;;
-           "EV5.7 (21164PC)")
-               UNAME_MACHINE="alphapca57" ;;
-           "EV6 (21264)")
-               UNAME_MACHINE="alphaev6" ;;
-           "EV6.7 (21264A)")
-               UNAME_MACHINE="alphaev67" ;;
-           "EV6.8CB (21264C)")
-               UNAME_MACHINE="alphaev68" ;;
-           "EV6.8AL (21264B)")
-               UNAME_MACHINE="alphaev68" ;;
-           "EV6.8CX (21264D)")
-               UNAME_MACHINE="alphaev68" ;;
-           "EV6.9A (21264/EV69A)")
-               UNAME_MACHINE="alphaev69" ;;
-           "EV7 (21364)")
-               UNAME_MACHINE="alphaev7" ;;
-           "EV7.9 (21364A)")
-               UNAME_MACHINE="alphaev79" ;;
-       esac
-       # A Pn.n version is a patched version.
-       # A Vn.n version is a released version.
-       # A Tn.n version is a released field test version.
-       # A Xn.n version is an unreleased experimental baselevel.
-       # 1.2 uses "1.2" for uname -r.
-       echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
-       # Reset EXIT trap before exiting to avoid spurious non-zero exit code.
-       exitcode=$?
-       trap '' 0
-       exit $exitcode ;;
-    Alpha\ *:Windows_NT*:*)
-       # How do we know it's Interix rather than the generic POSIX subsystem?
-       # Should we change UNAME_MACHINE based on the output of uname instead
-       # of the specific Alpha model?
-       echo alpha-pc-interix
-       exit ;;
-    21064:Windows_NT:50:3)
-       echo alpha-dec-winnt3.5
-       exit ;;
-    Amiga*:UNIX_System_V:4.0:*)
-       echo m68k-unknown-sysv4
-       exit ;;
-    *:[Aa]miga[Oo][Ss]:*:*)
-       echo ${UNAME_MACHINE}-unknown-amigaos
-       exit ;;
-    *:[Mm]orph[Oo][Ss]:*:*)
-       echo ${UNAME_MACHINE}-unknown-morphos
-       exit ;;
-    *:OS/390:*:*)
-       echo i370-ibm-openedition
-       exit ;;
-    *:z/VM:*:*)
-       echo s390-ibm-zvmoe
-       exit ;;
-    *:OS400:*:*)
-       echo powerpc-ibm-os400
-       exit ;;
-    arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
-       echo arm-acorn-riscix${UNAME_RELEASE}
-       exit ;;
-    arm*:riscos:*:*|arm*:RISCOS:*:*)
-       echo arm-unknown-riscos
-       exit ;;
-    SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
-       echo hppa1.1-hitachi-hiuxmpp
-       exit ;;
-    Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
-       # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
-       if test "`(/bin/universe) 2>/dev/null`" = att ; then
-               echo pyramid-pyramid-sysv3
-       else
-               echo pyramid-pyramid-bsd
-       fi
-       exit ;;
-    NILE*:*:*:dcosx)
-       echo pyramid-pyramid-svr4
-       exit ;;
-    DRS?6000:unix:4.0:6*)
-       echo sparc-icl-nx6
-       exit ;;
-    DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
-       case `/usr/bin/uname -p` in
-           sparc) echo sparc-icl-nx7; exit ;;
-       esac ;;
-    s390x:SunOS:*:*)
-       echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-       exit ;;
-    sun4H:SunOS:5.*:*)
-       echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-       exit ;;
-    sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
-       echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-       exit ;;
-    i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
-       echo i386-pc-auroraux${UNAME_RELEASE}
-       exit ;;
-    i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
-       eval $set_cc_for_build
-       SUN_ARCH="i386"
-       # If there is a compiler, see if it is configured for 64-bit objects.
-       # Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
-       # This test works for both compilers.
-       if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
-           if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
-               (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
-               grep IS_64BIT_ARCH >/dev/null
-           then
-               SUN_ARCH="x86_64"
-           fi
-       fi
-       echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-       exit ;;
-    sun4*:SunOS:6*:*)
-       # According to config.sub, this is the proper way to canonicalize
-       # SunOS6.  Hard to guess exactly what SunOS6 will be like, but
-       # it's likely to be more like Solaris than SunOS4.
-       echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-       exit ;;
-    sun4*:SunOS:*:*)
-       case "`/usr/bin/arch -k`" in
-           Series*|S4*)
-               UNAME_RELEASE=`uname -v`
-               ;;
-       esac
-       # Japanese Language versions have a version number like `4.1.3-JL'.
-       echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
-       exit ;;
-    sun3*:SunOS:*:*)
-       echo m68k-sun-sunos${UNAME_RELEASE}
-       exit ;;
-    sun*:*:4.2BSD:*)
-       UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
-       test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
-       case "`/bin/arch`" in
-           sun3)
-               echo m68k-sun-sunos${UNAME_RELEASE}
-               ;;
-           sun4)
-               echo sparc-sun-sunos${UNAME_RELEASE}
-               ;;
-       esac
-       exit ;;
-    aushp:SunOS:*:*)
-       echo sparc-auspex-sunos${UNAME_RELEASE}
-       exit ;;
-    # The situation for MiNT is a little confusing.  The machine name
-    # can be virtually everything (everything which is not
-    # "atarist" or "atariste" at least should have a processor
-    # > m68000).  The system name ranges from "MiNT" over "FreeMiNT"
-    # to the lowercase version "mint" (or "freemint").  Finally
-    # the system name "TOS" denotes a system which is actually not
-    # MiNT.  But MiNT is downward compatible to TOS, so this should
-    # be no problem.
-    atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
-       echo m68k-atari-mint${UNAME_RELEASE}
-       exit ;;
-    atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
-       echo m68k-atari-mint${UNAME_RELEASE}
-       exit ;;
-    *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
-       echo m68k-atari-mint${UNAME_RELEASE}
-       exit ;;
-    milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
-       echo m68k-milan-mint${UNAME_RELEASE}
-       exit ;;
-    hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
-       echo m68k-hades-mint${UNAME_RELEASE}
-       exit ;;
-    *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
-       echo m68k-unknown-mint${UNAME_RELEASE}
-       exit ;;
-    m68k:machten:*:*)
-       echo m68k-apple-machten${UNAME_RELEASE}
-       exit ;;
-    powerpc:machten:*:*)
-       echo powerpc-apple-machten${UNAME_RELEASE}
-       exit ;;
-    RISC*:Mach:*:*)
-       echo mips-dec-mach_bsd4.3
-       exit ;;
-    RISC*:ULTRIX:*:*)
-       echo mips-dec-ultrix${UNAME_RELEASE}
-       exit ;;
-    VAX*:ULTRIX*:*:*)
-       echo vax-dec-ultrix${UNAME_RELEASE}
-       exit ;;
-    2020:CLIX:*:* | 2430:CLIX:*:*)
-       echo clipper-intergraph-clix${UNAME_RELEASE}
-       exit ;;
-    mips:*:*:UMIPS | mips:*:*:RISCos)
-       eval $set_cc_for_build
-       sed 's/^        //' << EOF >$dummy.c
-#ifdef __cplusplus
-#include <stdio.h>  /* for printf() prototype */
-       int main (int argc, char *argv[]) {
-#else
-       int main (argc, argv) int argc; char *argv[]; {
-#endif
-       #if defined (host_mips) && defined (MIPSEB)
-       #if defined (SYSTYPE_SYSV)
-         printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
-       #endif
-       #if defined (SYSTYPE_SVR4)
-         printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
-       #endif
-       #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
-         printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
-       #endif
-       #endif
-         exit (-1);
-       }
-EOF
-       $CC_FOR_BUILD -o $dummy $dummy.c &&
-         dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
-         SYSTEM_NAME=`$dummy $dummyarg` &&
-           { echo "$SYSTEM_NAME"; exit; }
-       echo mips-mips-riscos${UNAME_RELEASE}
-       exit ;;
-    Motorola:PowerMAX_OS:*:*)
-       echo powerpc-motorola-powermax
-       exit ;;
-    Motorola:*:4.3:PL8-*)
-       echo powerpc-harris-powermax
-       exit ;;
-    Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
-       echo powerpc-harris-powermax
-       exit ;;
-    Night_Hawk:Power_UNIX:*:*)
-       echo powerpc-harris-powerunix
-       exit ;;
-    m88k:CX/UX:7*:*)
-       echo m88k-harris-cxux7
-       exit ;;
-    m88k:*:4*:R4*)
-       echo m88k-motorola-sysv4
-       exit ;;
-    m88k:*:3*:R3*)
-       echo m88k-motorola-sysv3
-       exit ;;
-    AViiON:dgux:*:*)
-       # DG/UX returns AViiON for all architectures
-       UNAME_PROCESSOR=`/usr/bin/uname -p`
-       if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
-       then
-           if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
-              [ ${TARGET_BINARY_INTERFACE}x = x ]
-           then
-               echo m88k-dg-dgux${UNAME_RELEASE}
-           else
-               echo m88k-dg-dguxbcs${UNAME_RELEASE}
-           fi
-       else
-           echo i586-dg-dgux${UNAME_RELEASE}
-       fi
-       exit ;;
-    M88*:DolphinOS:*:*)        # DolphinOS (SVR3)
-       echo m88k-dolphin-sysv3
-       exit ;;
-    M88*:*:R3*:*)
-       # Delta 88k system running SVR3
-       echo m88k-motorola-sysv3
-       exit ;;
-    XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
-       echo m88k-tektronix-sysv3
-       exit ;;
-    Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
-       echo m68k-tektronix-bsd
-       exit ;;
-    *:IRIX*:*:*)
-       echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
-       exit ;;
-    ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
-       echo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id
-       exit ;;               # Note that: echo "'`uname -s`'" gives 'AIX '
-    i*86:AIX:*:*)
-       echo i386-ibm-aix
-       exit ;;
-    ia64:AIX:*:*)
-       if [ -x /usr/bin/oslevel ] ; then
-               IBM_REV=`/usr/bin/oslevel`
-       else
-               IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
-       fi
-       echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
-       exit ;;
-    *:AIX:2:3)
-       if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
-               eval $set_cc_for_build
-               sed 's/^                //' << EOF >$dummy.c
-               #include <sys/systemcfg.h>
-
-               main()
-                       {
-                       if (!__power_pc())
-                               exit(1);
-                       puts("powerpc-ibm-aix3.2.5");
-                       exit(0);
-                       }
-EOF
-               if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
-               then
-                       echo "$SYSTEM_NAME"
-               else
-                       echo rs6000-ibm-aix3.2.5
-               fi
-       elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
-               echo rs6000-ibm-aix3.2.4
-       else
-               echo rs6000-ibm-aix3.2
-       fi
-       exit ;;
-    *:AIX:*:[4567])
-       IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
-       if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
-               IBM_ARCH=rs6000
-       else
-               IBM_ARCH=powerpc
-       fi
-       if [ -x /usr/bin/oslevel ] ; then
-               IBM_REV=`/usr/bin/oslevel`
-       else
-               IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
-       fi
-       echo ${IBM_ARCH}-ibm-aix${IBM_REV}
-       exit ;;
-    *:AIX:*:*)
-       echo rs6000-ibm-aix
-       exit ;;
-    ibmrt:4.4BSD:*|romp-ibm:BSD:*)
-       echo romp-ibm-bsd4.4
-       exit ;;
-    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
-       echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to
-       exit ;;                             # report: romp-ibm BSD 4.3
-    *:BOSX:*:*)
-       echo rs6000-bull-bosx
-       exit ;;
-    DPX/2?00:B.O.S.:*:*)
-       echo m68k-bull-sysv3
-       exit ;;
-    9000/[34]??:4.3bsd:1.*:*)
-       echo m68k-hp-bsd
-       exit ;;
-    hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
-       echo m68k-hp-bsd4.4
-       exit ;;
-    9000/[34678]??:HP-UX:*:*)
-       HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
-       case "${UNAME_MACHINE}" in
-           9000/31? )            HP_ARCH=m68000 ;;
-           9000/[34]?? )         HP_ARCH=m68k ;;
-           9000/[678][0-9][0-9])
-               if [ -x /usr/bin/getconf ]; then
-                   sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
-                   sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
-                   case "${sc_cpu_version}" in
-                     523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
-                     528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
-                     532)                      # CPU_PA_RISC2_0
-                       case "${sc_kernel_bits}" in
-                         32) HP_ARCH="hppa2.0n" ;;
-                         64) HP_ARCH="hppa2.0w" ;;
-                         '') HP_ARCH="hppa2.0" ;;   # HP-UX 10.20
-                       esac ;;
-                   esac
-               fi
-               if [ "${HP_ARCH}" = "" ]; then
-                   eval $set_cc_for_build
-                   sed 's/^            //' << EOF >$dummy.c
-
-               #define _HPUX_SOURCE
-               #include <stdlib.h>
-               #include <unistd.h>
-
-               int main ()
-               {
-               #if defined(_SC_KERNEL_BITS)
-                   long bits = sysconf(_SC_KERNEL_BITS);
-               #endif
-                   long cpu  = sysconf (_SC_CPU_VERSION);
-
-                   switch (cpu)
-                       {
-                       case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
-                       case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
-                       case CPU_PA_RISC2_0:
-               #if defined(_SC_KERNEL_BITS)
-                           switch (bits)
-                               {
-                               case 64: puts ("hppa2.0w"); break;
-                               case 32: puts ("hppa2.0n"); break;
-                               default: puts ("hppa2.0"); break;
-                               } break;
-               #else  /* !defined(_SC_KERNEL_BITS) */
-                           puts ("hppa2.0"); break;
-               #endif
-                       default: puts ("hppa1.0"); break;
-                       }
-                   exit (0);
-               }
-EOF
-                   (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
-                   test -z "$HP_ARCH" && HP_ARCH=hppa
-               fi ;;
-       esac
-       if [ ${HP_ARCH} = "hppa2.0w" ]
-       then
-           eval $set_cc_for_build
-
-           # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
-           # 32-bit code.  hppa64-hp-hpux* has the same kernel and a compiler
-           # generating 64-bit code.  GNU and HP use different nomenclature:
-           #
-           # $ CC_FOR_BUILD=cc ./config.guess
-           # => hppa2.0w-hp-hpux11.23
-           # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
-           # => hppa64-hp-hpux11.23
-
-           if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
-               grep -q __LP64__
-           then
-               HP_ARCH="hppa2.0w"
-           else
-               HP_ARCH="hppa64"
-           fi
-       fi
-       echo ${HP_ARCH}-hp-hpux${HPUX_REV}
-       exit ;;
-    ia64:HP-UX:*:*)
-       HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
-       echo ia64-hp-hpux${HPUX_REV}
-       exit ;;
-    3050*:HI-UX:*:*)
-       eval $set_cc_for_build
-       sed 's/^        //' << EOF >$dummy.c
-       #include <unistd.h>
-       int
-       main ()
-       {
-         long cpu = sysconf (_SC_CPU_VERSION);
-         /* The order matters, because CPU_IS_HP_MC68K erroneously returns
-            true for CPU_PA_RISC1_0.  CPU_IS_PA_RISC returns correct
-            results, however.  */
-         if (CPU_IS_PA_RISC (cpu))
-           {
-             switch (cpu)
-               {
-                 case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
-                 case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
-                 case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
-                 default: puts ("hppa-hitachi-hiuxwe2"); break;
-               }
-           }
-         else if (CPU_IS_HP_MC68K (cpu))
-           puts ("m68k-hitachi-hiuxwe2");
-         else puts ("unknown-hitachi-hiuxwe2");
-         exit (0);
-       }
-EOF
-       $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
-               { echo "$SYSTEM_NAME"; exit; }
-       echo unknown-hitachi-hiuxwe2
-       exit ;;
-    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
-       echo hppa1.1-hp-bsd
-       exit ;;
-    9000/8??:4.3bsd:*:*)
-       echo hppa1.0-hp-bsd
-       exit ;;
-    *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
-       echo hppa1.0-hp-mpeix
-       exit ;;
-    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
-       echo hppa1.1-hp-osf
-       exit ;;
-    hp8??:OSF1:*:*)
-       echo hppa1.0-hp-osf
-       exit ;;
-    i*86:OSF1:*:*)
-       if [ -x /usr/sbin/sysversion ] ; then
-           echo ${UNAME_MACHINE}-unknown-osf1mk
-       else
-           echo ${UNAME_MACHINE}-unknown-osf1
-       fi
-       exit ;;
-    parisc*:Lites*:*:*)
-       echo hppa1.1-hp-lites
-       exit ;;
-    C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
-       echo c1-convex-bsd
-       exit ;;
-    C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
-       if getsysinfo -f scalar_acc
-       then echo c32-convex-bsd
-       else echo c2-convex-bsd
-       fi
-       exit ;;
-    C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
-       echo c34-convex-bsd
-       exit ;;
-    C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
-       echo c38-convex-bsd
-       exit ;;
-    C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
-       echo c4-convex-bsd
-       exit ;;
-    CRAY*Y-MP:*:*:*)
-       echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-       exit ;;
-    CRAY*[A-Z]90:*:*:*)
-       echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
-       | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
-             -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
-             -e 's/\.[^.]*$/.X/'
-       exit ;;
-    CRAY*TS:*:*:*)
-       echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-       exit ;;
-    CRAY*T3E:*:*:*)
-       echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-       exit ;;
-    CRAY*SV1:*:*:*)
-       echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-       exit ;;
-    *:UNICOS/mp:*:*)
-       echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-       exit ;;
-    F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
-       FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
-       FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
-       FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
-       echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-       exit ;;
-    5000:UNIX_System_V:4.*:*)
-       FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
-       FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
-       echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-       exit ;;
-    i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
-       echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
-       exit ;;
-    sparc*:BSD/OS:*:*)
-       echo sparc-unknown-bsdi${UNAME_RELEASE}
-       exit ;;
-    *:BSD/OS:*:*)
-       echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
-       exit ;;
-    *:FreeBSD:*:*)
-       UNAME_PROCESSOR=`/usr/bin/uname -p`
-       case ${UNAME_PROCESSOR} in
-           amd64)
-               echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
-           *)
-               echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
-       esac
-       exit ;;
-    i*:CYGWIN*:*)
-       echo ${UNAME_MACHINE}-pc-cygwin
-       exit ;;
-    *:MINGW64*:*)
-       echo ${UNAME_MACHINE}-pc-mingw64
-       exit ;;
-    *:MINGW*:*)
-       echo ${UNAME_MACHINE}-pc-mingw32
-       exit ;;
-    *:MSYS*:*)
-       echo ${UNAME_MACHINE}-pc-msys
-       exit ;;
-    i*:windows32*:*)
-       # uname -m includes "-pc" on this system.
-       echo ${UNAME_MACHINE}-mingw32
-       exit ;;
-    i*:PW*:*)
-       echo ${UNAME_MACHINE}-pc-pw32
-       exit ;;
-    *:Interix*:*)
-       case ${UNAME_MACHINE} in
-           x86)
-               echo i586-pc-interix${UNAME_RELEASE}
-               exit ;;
-           authenticamd | genuineintel | EM64T)
-               echo x86_64-unknown-interix${UNAME_RELEASE}
-               exit ;;
-           IA64)
-               echo ia64-unknown-interix${UNAME_RELEASE}
-               exit ;;
-       esac ;;
-    [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
-       echo i${UNAME_MACHINE}-pc-mks
-       exit ;;
-    8664:Windows_NT:*)
-       echo x86_64-pc-mks
-       exit ;;
-    i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
-       # How do we know it's Interix rather than the generic POSIX subsystem?
-       # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
-       # UNAME_MACHINE based on the output of uname instead of i386?
-       echo i586-pc-interix
-       exit ;;
-    i*:UWIN*:*)
-       echo ${UNAME_MACHINE}-pc-uwin
-       exit ;;
-    amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
-       echo x86_64-unknown-cygwin
-       exit ;;
-    p*:CYGWIN*:*)
-       echo powerpcle-unknown-cygwin
-       exit ;;
-    prep*:SunOS:5.*:*)
-       echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-       exit ;;
-    *:GNU:*:*)
-       # the GNU system
-       echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
-       exit ;;
-    *:GNU/*:*:*)
-       # other systems with GNU libc and userland
-       echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
-       exit ;;
-    i*86:Minix:*:*)
-       echo ${UNAME_MACHINE}-pc-minix
-       exit ;;
-    aarch64:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-       exit ;;
-    aarch64_be:Linux:*:*)
-       UNAME_MACHINE=aarch64_be
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-       exit ;;
-    alpha:Linux:*:*)
-       case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
-         EV5)   UNAME_MACHINE=alphaev5 ;;
-         EV56)  UNAME_MACHINE=alphaev56 ;;
-         PCA56) UNAME_MACHINE=alphapca56 ;;
-         PCA57) UNAME_MACHINE=alphapca56 ;;
-         EV6)   UNAME_MACHINE=alphaev6 ;;
-         EV67)  UNAME_MACHINE=alphaev67 ;;
-         EV68*) UNAME_MACHINE=alphaev68 ;;
-       esac
-       objdump --private-headers /bin/sh | grep -q ld.so.1
-       if test "$?" = 0 ; then LIBC="gnulibc1" ; fi
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-       exit ;;
-    arc:Linux:*:* | arceb:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-       exit ;;
-    arm*:Linux:*:*)
-       eval $set_cc_for_build
-       if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
-           | grep -q __ARM_EABI__
-       then
-           echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-       else
-           if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
-               | grep -q __ARM_PCS_VFP
-           then
-               echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi
-           else
-               echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf
-           fi
-       fi
-       exit ;;
-    avr32*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-       exit ;;
-    cris:Linux:*:*)
-       echo ${UNAME_MACHINE}-axis-linux-${LIBC}
-       exit ;;
-    crisv32:Linux:*:*)
-       echo ${UNAME_MACHINE}-axis-linux-${LIBC}
-       exit ;;
-    frv:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-       exit ;;
-    hexagon:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-       exit ;;
-    i*86:Linux:*:*)
-       echo ${UNAME_MACHINE}-pc-linux-${LIBC}
-       exit ;;
-    ia64:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-       exit ;;
-    m32r*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-       exit ;;
-    m68*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-       exit ;;
-    mips:Linux:*:* | mips64:Linux:*:*)
-       eval $set_cc_for_build
-       sed 's/^        //' << EOF >$dummy.c
-       #undef CPU
-       #undef ${UNAME_MACHINE}
-       #undef ${UNAME_MACHINE}el
-       #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
-       CPU=${UNAME_MACHINE}el
-       #else
-       #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
-       CPU=${UNAME_MACHINE}
-       #else
-       CPU=
-       #endif
-       #endif
-EOF
-       eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
-       test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
-       ;;
-    openrisc*:Linux:*:*)
-       echo or1k-unknown-linux-${LIBC}
-       exit ;;
-    or32:Linux:*:* | or1k*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-       exit ;;
-    padre:Linux:*:*)
-       echo sparc-unknown-linux-${LIBC}
-       exit ;;
-    parisc64:Linux:*:* | hppa64:Linux:*:*)
-       echo hppa64-unknown-linux-${LIBC}
-       exit ;;
-    parisc:Linux:*:* | hppa:Linux:*:*)
-       # Look for CPU level
-       case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
-         PA7*) echo hppa1.1-unknown-linux-${LIBC} ;;
-         PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;
-         *)    echo hppa-unknown-linux-${LIBC} ;;
-       esac
-       exit ;;
-    ppc64:Linux:*:*)
-       echo powerpc64-unknown-linux-${LIBC}
-       exit ;;
-    ppc:Linux:*:*)
-       echo powerpc-unknown-linux-${LIBC}
-       exit ;;
-    ppc64le:Linux:*:*)
-       echo powerpc64le-unknown-linux-${LIBC}
-       exit ;;
-    ppcle:Linux:*:*)
-       echo powerpcle-unknown-linux-${LIBC}
-       exit ;;
-    s390:Linux:*:* | s390x:Linux:*:*)
-       echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
-       exit ;;
-    sh64*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-       exit ;;
-    sh*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-       exit ;;
-    sparc:Linux:*:* | sparc64:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-       exit ;;
-    tile*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-       exit ;;
-    vax:Linux:*:*)
-       echo ${UNAME_MACHINE}-dec-linux-${LIBC}
-       exit ;;
-    x86_64:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-       exit ;;
-    xtensa*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-       exit ;;
-    i*86:DYNIX/ptx:4*:*)
-       # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
-       # earlier versions are messed up and put the nodename in both
-       # sysname and nodename.
-       echo i386-sequent-sysv4
-       exit ;;
-    i*86:UNIX_SV:4.2MP:2.*)
-       # Unixware is an offshoot of SVR4, but it has its own version
-       # number series starting with 2...
-       # I am not positive that other SVR4 systems won't match this,
-       # I just have to hope.  -- rms.
-       # Use sysv4.2uw... so that sysv4* matches it.
-       echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
-       exit ;;
-    i*86:OS/2:*:*)
-       # If we were able to find `uname', then EMX Unix compatibility
-       # is probably installed.
-       echo ${UNAME_MACHINE}-pc-os2-emx
-       exit ;;
-    i*86:XTS-300:*:STOP)
-       echo ${UNAME_MACHINE}-unknown-stop
-       exit ;;
-    i*86:atheos:*:*)
-       echo ${UNAME_MACHINE}-unknown-atheos
-       exit ;;
-    i*86:syllable:*:*)
-       echo ${UNAME_MACHINE}-pc-syllable
-       exit ;;
-    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
-       echo i386-unknown-lynxos${UNAME_RELEASE}
-       exit ;;
-    i*86:*DOS:*:*)
-       echo ${UNAME_MACHINE}-pc-msdosdjgpp
-       exit ;;
-    i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
-       UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
-       if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
-               echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
-       else
-               echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
-       fi
-       exit ;;
-    i*86:*:5:[678]*)
-       # UnixWare 7.x, OpenUNIX and OpenServer 6.
-       case `/bin/uname -X | grep "^Machine"` in
-           *486*)           UNAME_MACHINE=i486 ;;
-           *Pentium)        UNAME_MACHINE=i586 ;;
-           *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
-       esac
-       echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
-       exit ;;
-    i*86:*:3.2:*)
-       if test -f /usr/options/cb.name; then
-               UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
-               echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
-       elif /bin/uname -X 2>/dev/null >/dev/null ; then
-               UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
-               (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
-               (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
-                       && UNAME_MACHINE=i586
-               (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
-                       && UNAME_MACHINE=i686
-               (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
-                       && UNAME_MACHINE=i686
-               echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
-       else
-               echo ${UNAME_MACHINE}-pc-sysv32
-       fi
-       exit ;;
-    pc:*:*:*)
-       # Left here for compatibility:
-       # uname -m prints for DJGPP always 'pc', but it prints nothing about
-       # the processor, so we play safe by assuming i586.
-       # Note: whatever this is, it MUST be the same as what config.sub
-       # prints for the "djgpp" host, or else GDB configury will decide that
-       # this is a cross-build.
-       echo i586-pc-msdosdjgpp
-       exit ;;
-    Intel:Mach:3*:*)
-       echo i386-pc-mach3
-       exit ;;
-    paragon:*:*:*)
-       echo i860-intel-osf1
-       exit ;;
-    i860:*:4.*:*) # i860-SVR4
-       if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
-         echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
-       else # Add other i860-SVR4 vendors below as they are discovered.
-         echo i860-unknown-sysv${UNAME_RELEASE}  # Unknown i860-SVR4
-       fi
-       exit ;;
-    mini*:CTIX:SYS*5:*)
-       # "miniframe"
-       echo m68010-convergent-sysv
-       exit ;;
-    mc68k:UNIX:SYSTEM5:3.51m)
-       echo m68k-convergent-sysv
-       exit ;;
-    M680?0:D-NIX:5.3:*)
-       echo m68k-diab-dnix
-       exit ;;
-    M68*:*:R3V[5678]*:*)
-       test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
-    3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
-       OS_REL=''
-       test -r /etc/.relid \
-       && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
-       /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-         && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
-       /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
-         && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
-    3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
-       /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-         && { echo i486-ncr-sysv4; exit; } ;;
-    NCR*:*:4.2:* | MPRAS*:*:4.2:*)
-       OS_REL='.3'
-       test -r /etc/.relid \
-           && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
-       /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-           && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
-       /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
-           && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
-       /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
-           && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
-    m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
-       echo m68k-unknown-lynxos${UNAME_RELEASE}
-       exit ;;
-    mc68030:UNIX_System_V:4.*:*)
-       echo m68k-atari-sysv4
-       exit ;;
-    TSUNAMI:LynxOS:2.*:*)
-       echo sparc-unknown-lynxos${UNAME_RELEASE}
-       exit ;;
-    rs6000:LynxOS:2.*:*)
-       echo rs6000-unknown-lynxos${UNAME_RELEASE}
-       exit ;;
-    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
-       echo powerpc-unknown-lynxos${UNAME_RELEASE}
-       exit ;;
-    SM[BE]S:UNIX_SV:*:*)
-       echo mips-dde-sysv${UNAME_RELEASE}
-       exit ;;
-    RM*:ReliantUNIX-*:*:*)
-       echo mips-sni-sysv4
-       exit ;;
-    RM*:SINIX-*:*:*)
-       echo mips-sni-sysv4
-       exit ;;
-    *:SINIX-*:*:*)
-       if uname -p 2>/dev/null >/dev/null ; then
-               UNAME_MACHINE=`(uname -p) 2>/dev/null`
-               echo ${UNAME_MACHINE}-sni-sysv4
-       else
-               echo ns32k-sni-sysv
-       fi
-       exit ;;
-    PENTIUM:*:4.0*:*)  # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
-                       # says <Richard.M.Bartel@ccMail.Census.GOV>
-       echo i586-unisys-sysv4
-       exit ;;
-    *:UNIX_System_V:4*:FTX*)
-       # From Gerald Hewes <hewes@openmarket.com>.
-       # How about differentiating between stratus architectures? -djm
-       echo hppa1.1-stratus-sysv4
-       exit ;;
-    *:*:*:FTX*)
-       # From seanf@swdc.stratus.com.
-       echo i860-stratus-sysv4
-       exit ;;
-    i*86:VOS:*:*)
-       # From Paul.Green@stratus.com.
-       echo ${UNAME_MACHINE}-stratus-vos
-       exit ;;
-    *:VOS:*:*)
-       # From Paul.Green@stratus.com.
-       echo hppa1.1-stratus-vos
-       exit ;;
-    mc68*:A/UX:*:*)
-       echo m68k-apple-aux${UNAME_RELEASE}
-       exit ;;
-    news*:NEWS-OS:6*:*)
-       echo mips-sony-newsos6
-       exit ;;
-    R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
-       if [ -d /usr/nec ]; then
-               echo mips-nec-sysv${UNAME_RELEASE}
-       else
-               echo mips-unknown-sysv${UNAME_RELEASE}
-       fi
-       exit ;;
-    BeBox:BeOS:*:*)    # BeOS running on hardware made by Be, PPC only.
-       echo powerpc-be-beos
-       exit ;;
-    BeMac:BeOS:*:*)    # BeOS running on Mac or Mac clone, PPC only.
-       echo powerpc-apple-beos
-       exit ;;
-    BePC:BeOS:*:*)     # BeOS running on Intel PC compatible.
-       echo i586-pc-beos
-       exit ;;
-    BePC:Haiku:*:*)    # Haiku running on Intel PC compatible.
-       echo i586-pc-haiku
-       exit ;;
-    x86_64:Haiku:*:*)
-       echo x86_64-unknown-haiku
-       exit ;;
-    SX-4:SUPER-UX:*:*)
-       echo sx4-nec-superux${UNAME_RELEASE}
-       exit ;;
-    SX-5:SUPER-UX:*:*)
-       echo sx5-nec-superux${UNAME_RELEASE}
-       exit ;;
-    SX-6:SUPER-UX:*:*)
-       echo sx6-nec-superux${UNAME_RELEASE}
-       exit ;;
-    SX-7:SUPER-UX:*:*)
-       echo sx7-nec-superux${UNAME_RELEASE}
-       exit ;;
-    SX-8:SUPER-UX:*:*)
-       echo sx8-nec-superux${UNAME_RELEASE}
-       exit ;;
-    SX-8R:SUPER-UX:*:*)
-       echo sx8r-nec-superux${UNAME_RELEASE}
-       exit ;;
-    Power*:Rhapsody:*:*)
-       echo powerpc-apple-rhapsody${UNAME_RELEASE}
-       exit ;;
-    *:Rhapsody:*:*)
-       echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
-       exit ;;
-    *:Darwin:*:*)
-       UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
-       eval $set_cc_for_build
-       if test "$UNAME_PROCESSOR" = unknown ; then
-           UNAME_PROCESSOR=powerpc
-       fi
-       if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then
-           if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
-               if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
-                   (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
-                   grep IS_64BIT_ARCH >/dev/null
-               then
-                   case $UNAME_PROCESSOR in
-                       i386) UNAME_PROCESSOR=x86_64 ;;
-                       powerpc) UNAME_PROCESSOR=powerpc64 ;;
-                   esac
-               fi
-           fi
-       elif test "$UNAME_PROCESSOR" = i386 ; then
-           # Avoid executing cc on OS X 10.9, as it ships with a stub
-           # that puts up a graphical alert prompting to install
-           # developer tools.  Any system running Mac OS X 10.7 or
-           # later (Darwin 11 and later) is required to have a 64-bit
-           # processor. This is not true of the ARM version of Darwin
-           # that Apple uses in portable devices.
-           UNAME_PROCESSOR=x86_64
-       fi
-       echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
-       exit ;;
-    *:procnto*:*:* | *:QNX:[0123456789]*:*)
-       UNAME_PROCESSOR=`uname -p`
-       if test "$UNAME_PROCESSOR" = "x86"; then
-               UNAME_PROCESSOR=i386
-               UNAME_MACHINE=pc
-       fi
-       echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
-       exit ;;
-    *:QNX:*:4*)
-       echo i386-pc-qnx
-       exit ;;
-    NEO-?:NONSTOP_KERNEL:*:*)
-       echo neo-tandem-nsk${UNAME_RELEASE}
-       exit ;;
-    NSE-*:NONSTOP_KERNEL:*:*)
-       echo nse-tandem-nsk${UNAME_RELEASE}
-       exit ;;
-    NSR-?:NONSTOP_KERNEL:*:*)
-       echo nsr-tandem-nsk${UNAME_RELEASE}
-       exit ;;
-    *:NonStop-UX:*:*)
-       echo mips-compaq-nonstopux
-       exit ;;
-    BS2000:POSIX*:*:*)
-       echo bs2000-siemens-sysv
-       exit ;;
-    DS/*:UNIX_System_V:*:*)
-       echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
-       exit ;;
-    *:Plan9:*:*)
-       # "uname -m" is not consistent, so use $cputype instead. 386
-       # is converted to i386 for consistency with other x86
-       # operating systems.
-       if test "$cputype" = "386"; then
-           UNAME_MACHINE=i386
-       else
-           UNAME_MACHINE="$cputype"
-       fi
-       echo ${UNAME_MACHINE}-unknown-plan9
-       exit ;;
-    *:TOPS-10:*:*)
-       echo pdp10-unknown-tops10
-       exit ;;
-    *:TENEX:*:*)
-       echo pdp10-unknown-tenex
-       exit ;;
-    KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
-       echo pdp10-dec-tops20
-       exit ;;
-    XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
-       echo pdp10-xkl-tops20
-       exit ;;
-    *:TOPS-20:*:*)
-       echo pdp10-unknown-tops20
-       exit ;;
-    *:ITS:*:*)
-       echo pdp10-unknown-its
-       exit ;;
-    SEI:*:*:SEIUX)
-       echo mips-sei-seiux${UNAME_RELEASE}
-       exit ;;
-    *:DragonFly:*:*)
-       echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
-       exit ;;
-    *:*VMS:*:*)
-       UNAME_MACHINE=`(uname -p) 2>/dev/null`
-       case "${UNAME_MACHINE}" in
-           A*) echo alpha-dec-vms ; exit ;;
-           I*) echo ia64-dec-vms ; exit ;;
-           V*) echo vax-dec-vms ; exit ;;
-       esac ;;
-    *:XENIX:*:SysV)
-       echo i386-pc-xenix
-       exit ;;
-    i*86:skyos:*:*)
-       echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
-       exit ;;
-    i*86:rdos:*:*)
-       echo ${UNAME_MACHINE}-pc-rdos
-       exit ;;
-    i*86:AROS:*:*)
-       echo ${UNAME_MACHINE}-pc-aros
-       exit ;;
-    x86_64:VMkernel:*:*)
-       echo ${UNAME_MACHINE}-unknown-esx
-       exit ;;
-esac
-
-cat >&2 <<EOF
-$0: unable to guess system type
-
-This script, last modified $timestamp, has failed to recognize
-the operating system you are using. It is advised that you
-download the most up to date version of the config scripts from
-
-  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
-and
-  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
-
-If the version you run ($0) is already up to date, please
-send the following data and any information you think might be
-pertinent to <config-patches@gnu.org> in order to provide the needed
-information to handle your system.
-
-config.guess timestamp = $timestamp
-
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
-
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
-/bin/uname -X     = `(/bin/uname -X) 2>/dev/null`
-
-hostinfo               = `(hostinfo) 2>/dev/null`
-/bin/universe          = `(/bin/universe) 2>/dev/null`
-/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null`
-/bin/arch              = `(/bin/arch) 2>/dev/null`
-/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
-
-UNAME_MACHINE = ${UNAME_MACHINE}
-UNAME_RELEASE = ${UNAME_RELEASE}
-UNAME_SYSTEM  = ${UNAME_SYSTEM}
-UNAME_VERSION = ${UNAME_VERSION}
-EOF
-
-exit 1
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:
diff --git a/src/libs/gnulib/build-aux/config.sub b/src/libs/gnulib/build-aux/config.sub
deleted file mode 100755 (executable)
index d4c8338..0000000
+++ /dev/null
@@ -1,1805 +0,0 @@
-#! /bin/sh
-# Configuration validation subroutine script.
-#   Copyright 1992-2014 Free Software Foundation, Inc.
-
-timestamp='2014-09-26'
-
-# This file is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 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 <http://www.gnu.org/licenses/>.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that
-# program.  This Exception is an additional permission under section 7
-# of the GNU General Public License, version 3 ("GPLv3").
-
-
-# Please send patches with a ChangeLog entry to config-patches@gnu.org.
-#
-# Configuration subroutine to validate and canonicalize a configuration type.
-# Supply the specified configuration type as an argument.
-# If it is invalid, we print an error message on stderr and exit with code 1.
-# Otherwise, we print the canonical config type on stdout and succeed.
-
-# You can get the latest version of this script from:
-# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
-
-# This file is supposed to be the same for all GNU packages
-# and recognize all the CPU types, system types and aliases
-# that are meaningful with *any* GNU software.
-# Each package is responsible for reporting which valid configurations
-# it does not support.  The user should be able to distinguish
-# a failure to support a valid configuration from a meaningless
-# configuration.
-
-# The goal of this file is to map all the various variations of a given
-# machine specification into a single specification in the form:
-#      CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
-# or in some cases, the newer four-part form:
-#      CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
-# It is wrong to echo any other type of specification.
-
-me=`echo "$0" | sed -e 's,.*/,,'`
-
-usage="\
-Usage: $0 [OPTION] CPU-MFR-OPSYS
-       $0 [OPTION] ALIAS
-
-Canonicalize a configuration name.
-
-Operation modes:
-  -h, --help         print this help, then exit
-  -t, --time-stamp   print date of last modification, then exit
-  -v, --version      print version number, then exit
-
-Report bugs and patches to <config-patches@gnu.org>."
-
-version="\
-GNU config.sub ($timestamp)
-
-Copyright 1992-2014 Free Software Foundation, Inc.
-
-This is free software; see the source for copying conditions.  There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-
-help="
-Try \`$me --help' for more information."
-
-# Parse command line
-while test $# -gt 0 ; do
-  case $1 in
-    --time-stamp | --time* | -t )
-       echo "$timestamp" ; exit ;;
-    --version | -v )
-       echo "$version" ; exit ;;
-    --help | --h* | -h )
-       echo "$usage"; exit ;;
-    -- )     # Stop option processing
-       shift; break ;;
-    - )        # Use stdin as input.
-       break ;;
-    -* )
-       echo "$me: invalid option $1$help"
-       exit 1 ;;
-
-    *local*)
-       # First pass through any local machine types.
-       echo $1
-       exit ;;
-
-    * )
-       break ;;
-  esac
-done
-
-case $# in
- 0) echo "$me: missing argument$help" >&2
-    exit 1;;
- 1) ;;
- *) echo "$me: too many arguments$help" >&2
-    exit 1;;
-esac
-
-# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
-# Here we must recognize all the valid KERNEL-OS combinations.
-maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
-case $maybe_os in
-  nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
-  linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
-  knetbsd*-gnu* | netbsd*-gnu* | \
-  kopensolaris*-gnu* | \
-  storm-chaos* | os2-emx* | rtmk-nova*)
-    os=-$maybe_os
-    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
-    ;;
-  android-linux)
-    os=-linux-android
-    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
-    ;;
-  *)
-    basic_machine=`echo $1 | sed 's/-[^-]*$//'`
-    if [ $basic_machine != $1 ]
-    then os=`echo $1 | sed 's/.*-/-/'`
-    else os=; fi
-    ;;
-esac
-
-### Let's recognize common machines as not being operating systems so
-### that things like config.sub decstation-3100 work.  We also
-### recognize some manufacturers as not being operating systems, so we
-### can provide default operating systems below.
-case $os in
-       -sun*os*)
-               # Prevent following clause from handling this invalid input.
-               ;;
-       -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
-       -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
-       -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
-       -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
-       -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
-       -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
-       -apple | -axis | -knuth | -cray | -microblaze*)
-               os=
-               basic_machine=$1
-               ;;
-       -bluegene*)
-               os=-cnk
-               ;;
-       -sim | -cisco | -oki | -wec | -winbond)
-               os=
-               basic_machine=$1
-               ;;
-       -scout)
-               ;;
-       -wrs)
-               os=-vxworks
-               basic_machine=$1
-               ;;
-       -chorusos*)
-               os=-chorusos
-               basic_machine=$1
-               ;;
-       -chorusrdb)
-               os=-chorusrdb
-               basic_machine=$1
-               ;;
-       -hiux*)
-               os=-hiuxwe2
-               ;;
-       -sco6)
-               os=-sco5v6
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -sco5)
-               os=-sco3.2v5
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -sco4)
-               os=-sco3.2v4
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -sco3.2.[4-9]*)
-               os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -sco3.2v[4-9]*)
-               # Don't forget version if it is 3.2v4 or newer.
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -sco5v6*)
-               # Don't forget version if it is 3.2v4 or newer.
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -sco*)
-               os=-sco3.2v2
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -udk*)
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -isc)
-               os=-isc2.2
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -clix*)
-               basic_machine=clipper-intergraph
-               ;;
-       -isc*)
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -lynx*178)
-               os=-lynxos178
-               ;;
-       -lynx*5)
-               os=-lynxos5
-               ;;
-       -lynx*)
-               os=-lynxos
-               ;;
-       -ptx*)
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
-               ;;
-       -windowsnt*)
-               os=`echo $os | sed -e 's/windowsnt/winnt/'`
-               ;;
-       -psos*)
-               os=-psos
-               ;;
-       -mint | -mint[0-9]*)
-               basic_machine=m68k-atari
-               os=-mint
-               ;;
-esac
-
-# Decode aliases for certain CPU-COMPANY combinations.
-case $basic_machine in
-       # Recognize the basic CPU types without company name.
-       # Some are omitted here because they have special meanings below.
-       1750a | 580 \
-       | a29k \
-       | aarch64 | aarch64_be \
-       | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
-       | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
-       | am33_2.0 \
-       | arc | arceb \
-       | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
-       | avr | avr32 \
-       | be32 | be64 \
-       | bfin \
-       | c4x | c8051 | clipper \
-       | d10v | d30v | dlx | dsp16xx \
-       | epiphany \
-       | fido | fr30 | frv \
-       | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
-       | hexagon \
-       | i370 | i860 | i960 | ia64 \
-       | ip2k | iq2000 \
-       | k1om \
-       | le32 | le64 \
-       | lm32 \
-       | m32c | m32r | m32rle | m68000 | m68k | m88k \
-       | maxq | mb | microblaze | microblazeel | mcore | mep | metag \
-       | mips | mipsbe | mipseb | mipsel | mipsle \
-       | mips16 \
-       | mips64 | mips64el \
-       | mips64octeon | mips64octeonel \
-       | mips64orion | mips64orionel \
-       | mips64r5900 | mips64r5900el \
-       | mips64vr | mips64vrel \
-       | mips64vr4100 | mips64vr4100el \
-       | mips64vr4300 | mips64vr4300el \
-       | mips64vr5000 | mips64vr5000el \
-       | mips64vr5900 | mips64vr5900el \
-       | mipsisa32 | mipsisa32el \
-       | mipsisa32r2 | mipsisa32r2el \
-       | mipsisa32r6 | mipsisa32r6el \
-       | mipsisa64 | mipsisa64el \
-       | mipsisa64r2 | mipsisa64r2el \
-       | mipsisa64r6 | mipsisa64r6el \
-       | mipsisa64sb1 | mipsisa64sb1el \
-       | mipsisa64sr71k | mipsisa64sr71kel \
-       | mipsr5900 | mipsr5900el \
-       | mipstx39 | mipstx39el \
-       | mn10200 | mn10300 \
-       | moxie \
-       | mt \
-       | msp430 \
-       | nds32 | nds32le | nds32be \
-       | nios | nios2 | nios2eb | nios2el \
-       | ns16k | ns32k \
-       | open8 | or1k | or1knd | or32 \
-       | pdp10 | pdp11 | pj | pjl \
-       | powerpc | powerpc64 | powerpc64le | powerpcle \
-       | pyramid \
-       | riscv32 | riscv64 \
-       | rl78 | rx \
-       | score \
-       | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
-       | sh64 | sh64le \
-       | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
-       | sparcv8 | sparcv9 | sparcv9b | sparcv9v \
-       | spu \
-       | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
-       | ubicom32 \
-       | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
-       | we32k \
-       | x86 | xc16x | xstormy16 | xtensa \
-       | z8k | z80)
-               basic_machine=$basic_machine-unknown
-               ;;
-       c54x)
-               basic_machine=tic54x-unknown
-               ;;
-       c55x)
-               basic_machine=tic55x-unknown
-               ;;
-       c6x)
-               basic_machine=tic6x-unknown
-               ;;
-       leon|leon[3-9])
-               basic_machine=sparc-$basic_machine
-               ;;
-       m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
-               basic_machine=$basic_machine-unknown
-               os=-none
-               ;;
-       m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
-               ;;
-       ms1)
-               basic_machine=mt-unknown
-               ;;
-
-       strongarm | thumb | xscale)
-               basic_machine=arm-unknown
-               ;;
-       xgate)
-               basic_machine=$basic_machine-unknown
-               os=-none
-               ;;
-       xscaleeb)
-               basic_machine=armeb-unknown
-               ;;
-
-       xscaleel)
-               basic_machine=armel-unknown
-               ;;
-
-       # We use `pc' rather than `unknown'
-       # because (1) that's what they normally are, and
-       # (2) the word "unknown" tends to confuse beginning users.
-       i*86 | x86_64)
-         basic_machine=$basic_machine-pc
-         ;;
-       # Object if more than one company name word.
-       *-*-*)
-               echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
-               exit 1
-               ;;
-       # Recognize the basic CPU types with company name.
-       580-* \
-       | a29k-* \
-       | aarch64-* | aarch64_be-* \
-       | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
-       | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
-       | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
-       | arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
-       | avr-* | avr32-* \
-       | be32-* | be64-* \
-       | bfin-* | bs2000-* \
-       | c[123]* | c30-* | [cjt]90-* | c4x-* \
-       | c8051-* | clipper-* | craynv-* | cydra-* \
-       | d10v-* | d30v-* | dlx-* \
-       | elxsi-* \
-       | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
-       | h8300-* | h8500-* \
-       | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
-       | hexagon-* \
-       | i*86-* | i860-* | i960-* | ia64-* \
-       | ip2k-* | iq2000-* \
-       | k1om-* \
-       | le32-* | le64-* \
-       | lm32-* \
-       | m32c-* | m32r-* | m32rle-* \
-       | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
-       | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
-       | microblaze-* | microblazeel-* \
-       | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
-       | mips16-* \
-       | mips64-* | mips64el-* \
-       | mips64octeon-* | mips64octeonel-* \
-       | mips64orion-* | mips64orionel-* \
-       | mips64r5900-* | mips64r5900el-* \
-       | mips64vr-* | mips64vrel-* \
-       | mips64vr4100-* | mips64vr4100el-* \
-       | mips64vr4300-* | mips64vr4300el-* \
-       | mips64vr5000-* | mips64vr5000el-* \
-       | mips64vr5900-* | mips64vr5900el-* \
-       | mipsisa32-* | mipsisa32el-* \
-       | mipsisa32r2-* | mipsisa32r2el-* \
-       | mipsisa32r6-* | mipsisa32r6el-* \
-       | mipsisa64-* | mipsisa64el-* \
-       | mipsisa64r2-* | mipsisa64r2el-* \
-       | mipsisa64r6-* | mipsisa64r6el-* \
-       | mipsisa64sb1-* | mipsisa64sb1el-* \
-       | mipsisa64sr71k-* | mipsisa64sr71kel-* \
-       | mipsr5900-* | mipsr5900el-* \
-       | mipstx39-* | mipstx39el-* \
-       | mmix-* \
-       | mt-* \
-       | msp430-* \
-       | nds32-* | nds32le-* | nds32be-* \
-       | nios-* | nios2-* | nios2eb-* | nios2el-* \
-       | none-* | np1-* | ns16k-* | ns32k-* \
-       | open8-* \
-       | or1k*-* \
-       | orion-* \
-       | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
-       | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
-       | pyramid-* \
-       | rl78-* | romp-* | rs6000-* | rx-* \
-       | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
-       | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
-       | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
-       | sparclite-* \
-       | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \
-       | tahoe-* \
-       | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
-       | tile*-* \
-       | tron-* \
-       | ubicom32-* \
-       | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
-       | vax-* \
-       | we32k-* \
-       | x86-* | x86_64-* | xc16x-* | xps100-* \
-       | xstormy16-* | xtensa*-* \
-       | ymp-* \
-       | z8k-* | z80-*)
-               ;;
-       # Recognize the basic CPU types without company name, with glob match.
-       xtensa*)
-               basic_machine=$basic_machine-unknown
-               ;;
-       # Recognize the various machine names and aliases which stand
-       # for a CPU type and a company and sometimes even an OS.
-       386bsd)
-               basic_machine=i386-unknown
-               os=-bsd
-               ;;
-       3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
-               basic_machine=m68000-att
-               ;;
-       3b*)
-               basic_machine=we32k-att
-               ;;
-       a29khif)
-               basic_machine=a29k-amd
-               os=-udi
-               ;;
-       abacus)
-               basic_machine=abacus-unknown
-               ;;
-       adobe68k)
-               basic_machine=m68010-adobe
-               os=-scout
-               ;;
-       alliant | fx80)
-               basic_machine=fx80-alliant
-               ;;
-       altos | altos3068)
-               basic_machine=m68k-altos
-               ;;
-       am29k)
-               basic_machine=a29k-none
-               os=-bsd
-               ;;
-       amd64)
-               basic_machine=x86_64-pc
-               ;;
-       amd64-*)
-               basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       amdahl)
-               basic_machine=580-amdahl
-               os=-sysv
-               ;;
-       amiga | amiga-*)
-               basic_machine=m68k-unknown
-               ;;
-       amigaos | amigados)
-               basic_machine=m68k-unknown
-               os=-amigaos
-               ;;
-       amigaunix | amix)
-               basic_machine=m68k-unknown
-               os=-sysv4
-               ;;
-       apollo68)
-               basic_machine=m68k-apollo
-               os=-sysv
-               ;;
-       apollo68bsd)
-               basic_machine=m68k-apollo
-               os=-bsd
-               ;;
-       aros)
-               basic_machine=i386-pc
-               os=-aros
-               ;;
-       aux)
-               basic_machine=m68k-apple
-               os=-aux
-               ;;
-       balance)
-               basic_machine=ns32k-sequent
-               os=-dynix
-               ;;
-       blackfin)
-               basic_machine=bfin-unknown
-               os=-linux
-               ;;
-       blackfin-*)
-               basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
-               os=-linux
-               ;;
-       bluegene*)
-               basic_machine=powerpc-ibm
-               os=-cnk
-               ;;
-       c54x-*)
-               basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       c55x-*)
-               basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       c6x-*)
-               basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       c90)
-               basic_machine=c90-cray
-               os=-unicos
-               ;;
-       cegcc)
-               basic_machine=arm-unknown
-               os=-cegcc
-               ;;
-       convex-c1)
-               basic_machine=c1-convex
-               os=-bsd
-               ;;
-       convex-c2)
-               basic_machine=c2-convex
-               os=-bsd
-               ;;
-       convex-c32)
-               basic_machine=c32-convex
-               os=-bsd
-               ;;
-       convex-c34)
-               basic_machine=c34-convex
-               os=-bsd
-               ;;
-       convex-c38)
-               basic_machine=c38-convex
-               os=-bsd
-               ;;
-       cray | j90)
-               basic_machine=j90-cray
-               os=-unicos
-               ;;
-       craynv)
-               basic_machine=craynv-cray
-               os=-unicosmp
-               ;;
-       cr16 | cr16-*)
-               basic_machine=cr16-unknown
-               os=-elf
-               ;;
-       crds | unos)
-               basic_machine=m68k-crds
-               ;;
-       crisv32 | crisv32-* | etraxfs*)
-               basic_machine=crisv32-axis
-               ;;
-       cris | cris-* | etrax*)
-               basic_machine=cris-axis
-               ;;
-       crx)
-               basic_machine=crx-unknown
-               os=-elf
-               ;;
-       da30 | da30-*)
-               basic_machine=m68k-da30
-               ;;
-       decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
-               basic_machine=mips-dec
-               ;;
-       decsystem10* | dec10*)
-               basic_machine=pdp10-dec
-               os=-tops10
-               ;;
-       decsystem20* | dec20*)
-               basic_machine=pdp10-dec
-               os=-tops20
-               ;;
-       delta | 3300 | motorola-3300 | motorola-delta \
-             | 3300-motorola | delta-motorola)
-               basic_machine=m68k-motorola
-               ;;
-       delta88)
-               basic_machine=m88k-motorola
-               os=-sysv3
-               ;;
-       dicos)
-               basic_machine=i686-pc
-               os=-dicos
-               ;;
-       djgpp)
-               basic_machine=i586-pc
-               os=-msdosdjgpp
-               ;;
-       dpx20 | dpx20-*)
-               basic_machine=rs6000-bull
-               os=-bosx
-               ;;
-       dpx2* | dpx2*-bull)
-               basic_machine=m68k-bull
-               os=-sysv3
-               ;;
-       ebmon29k)
-               basic_machine=a29k-amd
-               os=-ebmon
-               ;;
-       elxsi)
-               basic_machine=elxsi-elxsi
-               os=-bsd
-               ;;
-       encore | umax | mmax)
-               basic_machine=ns32k-encore
-               ;;
-       es1800 | OSE68k | ose68k | ose | OSE)
-               basic_machine=m68k-ericsson
-               os=-ose
-               ;;
-       fx2800)
-               basic_machine=i860-alliant
-               ;;
-       genix)
-               basic_machine=ns32k-ns
-               ;;
-       gmicro)
-               basic_machine=tron-gmicro
-               os=-sysv
-               ;;
-       go32)
-               basic_machine=i386-pc
-               os=-go32
-               ;;
-       h3050r* | hiux*)
-               basic_machine=hppa1.1-hitachi
-               os=-hiuxwe2
-               ;;
-       h8300hms)
-               basic_machine=h8300-hitachi
-               os=-hms
-               ;;
-       h8300xray)
-               basic_machine=h8300-hitachi
-               os=-xray
-               ;;
-       h8500hms)
-               basic_machine=h8500-hitachi
-               os=-hms
-               ;;
-       harris)
-               basic_machine=m88k-harris
-               os=-sysv3
-               ;;
-       hp300-*)
-               basic_machine=m68k-hp
-               ;;
-       hp300bsd)
-               basic_machine=m68k-hp
-               os=-bsd
-               ;;
-       hp300hpux)
-               basic_machine=m68k-hp
-               os=-hpux
-               ;;
-       hp3k9[0-9][0-9] | hp9[0-9][0-9])
-               basic_machine=hppa1.0-hp
-               ;;
-       hp9k2[0-9][0-9] | hp9k31[0-9])
-               basic_machine=m68000-hp
-               ;;
-       hp9k3[2-9][0-9])
-               basic_machine=m68k-hp
-               ;;
-       hp9k6[0-9][0-9] | hp6[0-9][0-9])
-               basic_machine=hppa1.0-hp
-               ;;
-       hp9k7[0-79][0-9] | hp7[0-79][0-9])
-               basic_machine=hppa1.1-hp
-               ;;
-       hp9k78[0-9] | hp78[0-9])
-               # FIXME: really hppa2.0-hp
-               basic_machine=hppa1.1-hp
-               ;;
-       hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
-               # FIXME: really hppa2.0-hp
-               basic_machine=hppa1.1-hp
-               ;;
-       hp9k8[0-9][13679] | hp8[0-9][13679])
-               basic_machine=hppa1.1-hp
-               ;;
-       hp9k8[0-9][0-9] | hp8[0-9][0-9])
-               basic_machine=hppa1.0-hp
-               ;;
-       hppa-next)
-               os=-nextstep3
-               ;;
-       hppaosf)
-               basic_machine=hppa1.1-hp
-               os=-osf
-               ;;
-       hppro)
-               basic_machine=hppa1.1-hp
-               os=-proelf
-               ;;
-       i370-ibm* | ibm*)
-               basic_machine=i370-ibm
-               ;;
-       i*86v32)
-               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-               os=-sysv32
-               ;;
-       i*86v4*)
-               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-               os=-sysv4
-               ;;
-       i*86v)
-               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-               os=-sysv
-               ;;
-       i*86sol2)
-               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-               os=-solaris2
-               ;;
-       i386mach)
-               basic_machine=i386-mach
-               os=-mach
-               ;;
-       i386-vsta | vsta)
-               basic_machine=i386-unknown
-               os=-vsta
-               ;;
-       iris | iris4d)
-               basic_machine=mips-sgi
-               case $os in
-                   -irix*)
-                       ;;
-                   *)
-                       os=-irix4
-                       ;;
-               esac
-               ;;
-       isi68 | isi)
-               basic_machine=m68k-isi
-               os=-sysv
-               ;;
-       leon-*|leon[3-9]-*)
-               basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'`
-               ;;
-       m68knommu)
-               basic_machine=m68k-unknown
-               os=-linux
-               ;;
-       m68knommu-*)
-               basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
-               os=-linux
-               ;;
-       m88k-omron*)
-               basic_machine=m88k-omron
-               ;;
-       magnum | m3230)
-               basic_machine=mips-mips
-               os=-sysv
-               ;;
-       merlin)
-               basic_machine=ns32k-utek
-               os=-sysv
-               ;;
-       microblaze*)
-               basic_machine=microblaze-xilinx
-               ;;
-       mingw64)
-               basic_machine=x86_64-pc
-               os=-mingw64
-               ;;
-       mingw32)
-               basic_machine=i686-pc
-               os=-mingw32
-               ;;
-       mingw32ce)
-               basic_machine=arm-unknown
-               os=-mingw32ce
-               ;;
-       miniframe)
-               basic_machine=m68000-convergent
-               ;;
-       *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
-               basic_machine=m68k-atari
-               os=-mint
-               ;;
-       mips3*-*)
-               basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
-               ;;
-       mips3*)
-               basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
-               ;;
-       monitor)
-               basic_machine=m68k-rom68k
-               os=-coff
-               ;;
-       morphos)
-               basic_machine=powerpc-unknown
-               os=-morphos
-               ;;
-       moxiebox)
-               basic_machine=moxie-unknown
-               os=-moxiebox
-               ;;
-       msdos)
-               basic_machine=i386-pc
-               os=-msdos
-               ;;
-       ms1-*)
-               basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
-               ;;
-       msys)
-               basic_machine=i686-pc
-               os=-msys
-               ;;
-       mvs)
-               basic_machine=i370-ibm
-               os=-mvs
-               ;;
-       nacl)
-               basic_machine=le32-unknown
-               os=-nacl
-               ;;
-       ncr3000)
-               basic_machine=i486-ncr
-               os=-sysv4
-               ;;
-       netbsd386)
-               basic_machine=i386-unknown
-               os=-netbsd
-               ;;
-       netwinder)
-               basic_machine=armv4l-rebel
-               os=-linux
-               ;;
-       news | news700 | news800 | news900)
-               basic_machine=m68k-sony
-               os=-newsos
-               ;;
-       news1000)
-               basic_machine=m68030-sony
-               os=-newsos
-               ;;
-       news-3600 | risc-news)
-               basic_machine=mips-sony
-               os=-newsos
-               ;;
-       necv70)
-               basic_machine=v70-nec
-               os=-sysv
-               ;;
-       next | m*-next )
-               basic_machine=m68k-next
-               case $os in
-                   -nextstep* )
-                       ;;
-                   -ns2*)
-                     os=-nextstep2
-                       ;;
-                   *)
-                     os=-nextstep3
-                       ;;
-               esac
-               ;;
-       nh3000)
-               basic_machine=m68k-harris
-               os=-cxux
-               ;;
-       nh[45]000)
-               basic_machine=m88k-harris
-               os=-cxux
-               ;;
-       nindy960)
-               basic_machine=i960-intel
-               os=-nindy
-               ;;
-       mon960)
-               basic_machine=i960-intel
-               os=-mon960
-               ;;
-       nonstopux)
-               basic_machine=mips-compaq
-               os=-nonstopux
-               ;;
-       np1)
-               basic_machine=np1-gould
-               ;;
-       neo-tandem)
-               basic_machine=neo-tandem
-               ;;
-       nse-tandem)
-               basic_machine=nse-tandem
-               ;;
-       nsr-tandem)
-               basic_machine=nsr-tandem
-               ;;
-       op50n-* | op60c-*)
-               basic_machine=hppa1.1-oki
-               os=-proelf
-               ;;
-       openrisc | openrisc-*)
-               basic_machine=or32-unknown
-               ;;
-       os400)
-               basic_machine=powerpc-ibm
-               os=-os400
-               ;;
-       OSE68000 | ose68000)
-               basic_machine=m68000-ericsson
-               os=-ose
-               ;;
-       os68k)
-               basic_machine=m68k-none
-               os=-os68k
-               ;;
-       pa-hitachi)
-               basic_machine=hppa1.1-hitachi
-               os=-hiuxwe2
-               ;;
-       paragon)
-               basic_machine=i860-intel
-               os=-osf
-               ;;
-       parisc)
-               basic_machine=hppa-unknown
-               os=-linux
-               ;;
-       parisc-*)
-               basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
-               os=-linux
-               ;;
-       pbd)
-               basic_machine=sparc-tti
-               ;;
-       pbb)
-               basic_machine=m68k-tti
-               ;;
-       pc532 | pc532-*)
-               basic_machine=ns32k-pc532
-               ;;
-       pc98)
-               basic_machine=i386-pc
-               ;;
-       pc98-*)
-               basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       pentium | p5 | k5 | k6 | nexgen | viac3)
-               basic_machine=i586-pc
-               ;;
-       pentiumpro | p6 | 6x86 | athlon | athlon_*)
-               basic_machine=i686-pc
-               ;;
-       pentiumii | pentium2 | pentiumiii | pentium3)
-               basic_machine=i686-pc
-               ;;
-       pentium4)
-               basic_machine=i786-pc
-               ;;
-       pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
-               basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       pentiumpro-* | p6-* | 6x86-* | athlon-*)
-               basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
-               basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       pentium4-*)
-               basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       pn)
-               basic_machine=pn-gould
-               ;;
-       power)  basic_machine=power-ibm
-               ;;
-       ppc | ppcbe)    basic_machine=powerpc-unknown
-               ;;
-       ppc-* | ppcbe-*)
-               basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       ppcle | powerpclittle | ppc-le | powerpc-little)
-               basic_machine=powerpcle-unknown
-               ;;
-       ppcle-* | powerpclittle-*)
-               basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       ppc64)  basic_machine=powerpc64-unknown
-               ;;
-       ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       ppc64le | powerpc64little | ppc64-le | powerpc64-little)
-               basic_machine=powerpc64le-unknown
-               ;;
-       ppc64le-* | powerpc64little-*)
-               basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       ps2)
-               basic_machine=i386-ibm
-               ;;
-       pw32)
-               basic_machine=i586-unknown
-               os=-pw32
-               ;;
-       rdos | rdos64)
-               basic_machine=x86_64-pc
-               os=-rdos
-               ;;
-       rdos32)
-               basic_machine=i386-pc
-               os=-rdos
-               ;;
-       rom68k)
-               basic_machine=m68k-rom68k
-               os=-coff
-               ;;
-       rm[46]00)
-               basic_machine=mips-siemens
-               ;;
-       rtpc | rtpc-*)
-               basic_machine=romp-ibm
-               ;;
-       s390 | s390-*)
-               basic_machine=s390-ibm
-               ;;
-       s390x | s390x-*)
-               basic_machine=s390x-ibm
-               ;;
-       sa29200)
-               basic_machine=a29k-amd
-               os=-udi
-               ;;
-       sb1)
-               basic_machine=mipsisa64sb1-unknown
-               ;;
-       sb1el)
-               basic_machine=mipsisa64sb1el-unknown
-               ;;
-       sde)
-               basic_machine=mipsisa32-sde
-               os=-elf
-               ;;
-       sei)
-               basic_machine=mips-sei
-               os=-seiux
-               ;;
-       sequent)
-               basic_machine=i386-sequent
-               ;;
-       sh)
-               basic_machine=sh-hitachi
-               os=-hms
-               ;;
-       sh5el)
-               basic_machine=sh5le-unknown
-               ;;
-       sh64)
-               basic_machine=sh64-unknown
-               ;;
-       sparclite-wrs | simso-wrs)
-               basic_machine=sparclite-wrs
-               os=-vxworks
-               ;;
-       sps7)
-               basic_machine=m68k-bull
-               os=-sysv2
-               ;;
-       spur)
-               basic_machine=spur-unknown
-               ;;
-       st2000)
-               basic_machine=m68k-tandem
-               ;;
-       stratus)
-               basic_machine=i860-stratus
-               os=-sysv4
-               ;;
-       strongarm-* | thumb-*)
-               basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       sun2)
-               basic_machine=m68000-sun
-               ;;
-       sun2os3)
-               basic_machine=m68000-sun
-               os=-sunos3
-               ;;
-       sun2os4)
-               basic_machine=m68000-sun
-               os=-sunos4
-               ;;
-       sun3os3)
-               basic_machine=m68k-sun
-               os=-sunos3
-               ;;
-       sun3os4)
-               basic_machine=m68k-sun
-               os=-sunos4
-               ;;
-       sun4os3)
-               basic_machine=sparc-sun
-               os=-sunos3
-               ;;
-       sun4os4)
-               basic_machine=sparc-sun
-               os=-sunos4
-               ;;
-       sun4sol2)
-               basic_machine=sparc-sun
-               os=-solaris2
-               ;;
-       sun3 | sun3-*)
-               basic_machine=m68k-sun
-               ;;
-       sun4)
-               basic_machine=sparc-sun
-               ;;
-       sun386 | sun386i | roadrunner)
-               basic_machine=i386-sun
-               ;;
-       sv1)
-               basic_machine=sv1-cray
-               os=-unicos
-               ;;
-       symmetry)
-               basic_machine=i386-sequent
-               os=-dynix
-               ;;
-       t3e)
-               basic_machine=alphaev5-cray
-               os=-unicos
-               ;;
-       t90)
-               basic_machine=t90-cray
-               os=-unicos
-               ;;
-       tile*)
-               basic_machine=$basic_machine-unknown
-               os=-linux-gnu
-               ;;
-       tx39)
-               basic_machine=mipstx39-unknown
-               ;;
-       tx39el)
-               basic_machine=mipstx39el-unknown
-               ;;
-       toad1)
-               basic_machine=pdp10-xkl
-               os=-tops20
-               ;;
-       tower | tower-32)
-               basic_machine=m68k-ncr
-               ;;
-       tpf)
-               basic_machine=s390x-ibm
-               os=-tpf
-               ;;
-       udi29k)
-               basic_machine=a29k-amd
-               os=-udi
-               ;;
-       ultra3)
-               basic_machine=a29k-nyu
-               os=-sym1
-               ;;
-       v810 | necv810)
-               basic_machine=v810-nec
-               os=-none
-               ;;
-       vaxv)
-               basic_machine=vax-dec
-               os=-sysv
-               ;;
-       vms)
-               basic_machine=vax-dec
-               os=-vms
-               ;;
-       vpp*|vx|vx-*)
-               basic_machine=f301-fujitsu
-               ;;
-       vxworks960)
-               basic_machine=i960-wrs
-               os=-vxworks
-               ;;
-       vxworks68)
-               basic_machine=m68k-wrs
-               os=-vxworks
-               ;;
-       vxworks29k)
-               basic_machine=a29k-wrs
-               os=-vxworks
-               ;;
-       w65*)
-               basic_machine=w65-wdc
-               os=-none
-               ;;
-       w89k-*)
-               basic_machine=hppa1.1-winbond
-               os=-proelf
-               ;;
-       xbox)
-               basic_machine=i686-pc
-               os=-mingw32
-               ;;
-       xps | xps100)
-               basic_machine=xps100-honeywell
-               ;;
-       xscale-* | xscalee[bl]-*)
-               basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
-               ;;
-       ymp)
-               basic_machine=ymp-cray
-               os=-unicos
-               ;;
-       z8k-*-coff)
-               basic_machine=z8k-unknown
-               os=-sim
-               ;;
-       z80-*-coff)
-               basic_machine=z80-unknown
-               os=-sim
-               ;;
-       none)
-               basic_machine=none-none
-               os=-none
-               ;;
-
-# Here we handle the default manufacturer of certain CPU types.  It is in
-# some cases the only manufacturer, in others, it is the most popular.
-       w89k)
-               basic_machine=hppa1.1-winbond
-               ;;
-       op50n)
-               basic_machine=hppa1.1-oki
-               ;;
-       op60c)
-               basic_machine=hppa1.1-oki
-               ;;
-       romp)
-               basic_machine=romp-ibm
-               ;;
-       mmix)
-               basic_machine=mmix-knuth
-               ;;
-       rs6000)
-               basic_machine=rs6000-ibm
-               ;;
-       vax)
-               basic_machine=vax-dec
-               ;;
-       pdp10)
-               # there are many clones, so DEC is not a safe bet
-               basic_machine=pdp10-unknown
-               ;;
-       pdp11)
-               basic_machine=pdp11-dec
-               ;;
-       we32k)
-               basic_machine=we32k-att
-               ;;
-       sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
-               basic_machine=sh-unknown
-               ;;
-       sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
-               basic_machine=sparc-sun
-               ;;
-       cydra)
-               basic_machine=cydra-cydrome
-               ;;
-       orion)
-               basic_machine=orion-highlevel
-               ;;
-       orion105)
-               basic_machine=clipper-highlevel
-               ;;
-       mac | mpw | mac-mpw)
-               basic_machine=m68k-apple
-               ;;
-       pmac | pmac-mpw)
-               basic_machine=powerpc-apple
-               ;;
-       *-unknown)
-               # Make sure to match an already-canonicalized machine name.
-               ;;
-       *)
-               echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
-               exit 1
-               ;;
-esac
-
-# Here we canonicalize certain aliases for manufacturers.
-case $basic_machine in
-       *-digital*)
-               basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
-               ;;
-       *-commodore*)
-               basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
-               ;;
-       *)
-               ;;
-esac
-
-# Decode manufacturer-specific aliases for certain operating systems.
-
-if [ x"$os" != x"" ]
-then
-case $os in
-       # First match some system type aliases
-       # that might get confused with valid system types.
-       # -solaris* is a basic system type, with this one exception.
-       -auroraux)
-               os=-auroraux
-               ;;
-       -solaris1 | -solaris1.*)
-               os=`echo $os | sed -e 's|solaris1|sunos4|'`
-               ;;
-       -solaris)
-               os=-solaris2
-               ;;
-       -svr4*)
-               os=-sysv4
-               ;;
-       -unixware*)
-               os=-sysv4.2uw
-               ;;
-       -gnu/linux*)
-               os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
-               ;;
-       # First accept the basic system types.
-       # The portable systems comes first.
-       # Each alternative MUST END IN A *, to match a version number.
-       # -sysv* is not here because it comes later, after sysvr4.
-       -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
-             | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
-             | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
-             | -sym* | -kopensolaris* | -plan9* \
-             | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
-             | -aos* | -aros* \
-             | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
-             | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
-             | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
-             | -bitrig* | -openbsd* | -solidbsd* \
-             | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
-             | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
-             | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
-             | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
-             | -chorusos* | -chorusrdb* | -cegcc* \
-             | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
-             | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
-             | -linux-newlib* | -linux-musl* | -linux-uclibc* \
-             | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \
-             | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
-             | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
-             | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
-             | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
-             | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
-             | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
-             | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*)
-       # Remember, each alternative MUST END IN *, to match a version number.
-               ;;
-       -qnx*)
-               case $basic_machine in
-                   x86-* | i*86-*)
-                       ;;
-                   *)
-                       os=-nto$os
-                       ;;
-               esac
-               ;;
-       -nto-qnx*)
-               ;;
-       -nto*)
-               os=`echo $os | sed -e 's|nto|nto-qnx|'`
-               ;;
-       -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
-             | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
-             | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
-               ;;
-       -mac*)
-               os=`echo $os | sed -e 's|mac|macos|'`
-               ;;
-       -linux-dietlibc)
-               os=-linux-dietlibc
-               ;;
-       -linux*)
-               os=`echo $os | sed -e 's|linux|linux-gnu|'`
-               ;;
-       -sunos5*)
-               os=`echo $os | sed -e 's|sunos5|solaris2|'`
-               ;;
-       -sunos6*)
-               os=`echo $os | sed -e 's|sunos6|solaris3|'`
-               ;;
-       -opened*)
-               os=-openedition
-               ;;
-       -os400*)
-               os=-os400
-               ;;
-       -wince*)
-               os=-wince
-               ;;
-       -osfrose*)
-               os=-osfrose
-               ;;
-       -osf*)
-               os=-osf
-               ;;
-       -utek*)
-               os=-bsd
-               ;;
-       -dynix*)
-               os=-bsd
-               ;;
-       -acis*)
-               os=-aos
-               ;;
-       -atheos*)
-               os=-atheos
-               ;;
-       -syllable*)
-               os=-syllable
-               ;;
-       -386bsd)
-               os=-bsd
-               ;;
-       -ctix* | -uts*)
-               os=-sysv
-               ;;
-       -nova*)
-               os=-rtmk-nova
-               ;;
-       -ns2 )
-               os=-nextstep2
-               ;;
-       -nsk*)
-               os=-nsk
-               ;;
-       # Preserve the version number of sinix5.
-       -sinix5.*)
-               os=`echo $os | sed -e 's|sinix|sysv|'`
-               ;;
-       -sinix*)
-               os=-sysv4
-               ;;
-       -tpf*)
-               os=-tpf
-               ;;
-       -triton*)
-               os=-sysv3
-               ;;
-       -oss*)
-               os=-sysv3
-               ;;
-       -svr4)
-               os=-sysv4
-               ;;
-       -svr3)
-               os=-sysv3
-               ;;
-       -sysvr4)
-               os=-sysv4
-               ;;
-       # This must come after -sysvr4.
-       -sysv*)
-               ;;
-       -ose*)
-               os=-ose
-               ;;
-       -es1800*)
-               os=-ose
-               ;;
-       -xenix)
-               os=-xenix
-               ;;
-       -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
-               os=-mint
-               ;;
-       -aros*)
-               os=-aros
-               ;;
-       -zvmoe)
-               os=-zvmoe
-               ;;
-       -dicos*)
-               os=-dicos
-               ;;
-       -nacl*)
-               ;;
-       -none)
-               ;;
-       *)
-               # Get rid of the `-' at the beginning of $os.
-               os=`echo $os | sed 's/[^-]*-//'`
-               echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
-               exit 1
-               ;;
-esac
-else
-
-# Here we handle the default operating systems that come with various machines.
-# The value should be what the vendor currently ships out the door with their
-# machine or put another way, the most popular os provided with the machine.
-
-# Note that if you're going to try to match "-MANUFACTURER" here (say,
-# "-sun"), then you have to tell the case statement up towards the top
-# that MANUFACTURER isn't an operating system.  Otherwise, code above
-# will signal an error saying that MANUFACTURER isn't an operating
-# system, and we'll never get to this point.
-
-case $basic_machine in
-       score-*)
-               os=-elf
-               ;;
-       spu-*)
-               os=-elf
-               ;;
-       *-acorn)
-               os=-riscix1.2
-               ;;
-       arm*-rebel)
-               os=-linux
-               ;;
-       arm*-semi)
-               os=-aout
-               ;;
-       c4x-* | tic4x-*)
-               os=-coff
-               ;;
-       c8051-*)
-               os=-elf
-               ;;
-       hexagon-*)
-               os=-elf
-               ;;
-       tic54x-*)
-               os=-coff
-               ;;
-       tic55x-*)
-               os=-coff
-               ;;
-       tic6x-*)
-               os=-coff
-               ;;
-       # This must come before the *-dec entry.
-       pdp10-*)
-               os=-tops20
-               ;;
-       pdp11-*)
-               os=-none
-               ;;
-       *-dec | vax-*)
-               os=-ultrix4.2
-               ;;
-       m68*-apollo)
-               os=-domain
-               ;;
-       i386-sun)
-               os=-sunos4.0.2
-               ;;
-       m68000-sun)
-               os=-sunos3
-               ;;
-       m68*-cisco)
-               os=-aout
-               ;;
-       mep-*)
-               os=-elf
-               ;;
-       mips*-cisco)
-               os=-elf
-               ;;
-       mips*-*)
-               os=-elf
-               ;;
-       or32-*)
-               os=-coff
-               ;;
-       *-tti)  # must be before sparc entry or we get the wrong os.
-               os=-sysv3
-               ;;
-       sparc-* | *-sun)
-               os=-sunos4.1.1
-               ;;
-       *-be)
-               os=-beos
-               ;;
-       *-haiku)
-               os=-haiku
-               ;;
-       *-ibm)
-               os=-aix
-               ;;
-       *-knuth)
-               os=-mmixware
-               ;;
-       *-wec)
-               os=-proelf
-               ;;
-       *-winbond)
-               os=-proelf
-               ;;
-       *-oki)
-               os=-proelf
-               ;;
-       *-hp)
-               os=-hpux
-               ;;
-       *-hitachi)
-               os=-hiux
-               ;;
-       i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
-               os=-sysv
-               ;;
-       *-cbm)
-               os=-amigaos
-               ;;
-       *-dg)
-               os=-dgux
-               ;;
-       *-dolphin)
-               os=-sysv3
-               ;;
-       m68k-ccur)
-               os=-rtu
-               ;;
-       m88k-omron*)
-               os=-luna
-               ;;
-       *-next )
-               os=-nextstep
-               ;;
-       *-sequent)
-               os=-ptx
-               ;;
-       *-crds)
-               os=-unos
-               ;;
-       *-ns)
-               os=-genix
-               ;;
-       i370-*)
-               os=-mvs
-               ;;
-       *-next)
-               os=-nextstep3
-               ;;
-       *-gould)
-               os=-sysv
-               ;;
-       *-highlevel)
-               os=-bsd
-               ;;
-       *-encore)
-               os=-bsd
-               ;;
-       *-sgi)
-               os=-irix
-               ;;
-       *-siemens)
-               os=-sysv4
-               ;;
-       *-masscomp)
-               os=-rtu
-               ;;
-       f30[01]-fujitsu | f700-fujitsu)
-               os=-uxpv
-               ;;
-       *-rom68k)
-               os=-coff
-               ;;
-       *-*bug)
-               os=-coff
-               ;;
-       *-apple)
-               os=-macos
-               ;;
-       *-atari*)
-               os=-mint
-               ;;
-       *)
-               os=-none
-               ;;
-esac
-fi
-
-# Here we handle the case where we know the os, and the CPU type, but not the
-# manufacturer.  We pick the logical manufacturer.
-vendor=unknown
-case $basic_machine in
-       *-unknown)
-               case $os in
-                       -riscix*)
-                               vendor=acorn
-                               ;;
-                       -sunos*)
-                               vendor=sun
-                               ;;
-                       -cnk*|-aix*)
-                               vendor=ibm
-                               ;;
-                       -beos*)
-                               vendor=be
-                               ;;
-                       -hpux*)
-                               vendor=hp
-                               ;;
-                       -mpeix*)
-                               vendor=hp
-                               ;;
-                       -hiux*)
-                               vendor=hitachi
-                               ;;
-                       -unos*)
-                               vendor=crds
-                               ;;
-                       -dgux*)
-                               vendor=dg
-                               ;;
-                       -luna*)
-                               vendor=omron
-                               ;;
-                       -genix*)
-                               vendor=ns
-                               ;;
-                       -mvs* | -opened*)
-                               vendor=ibm
-                               ;;
-                       -os400*)
-                               vendor=ibm
-                               ;;
-                       -ptx*)
-                               vendor=sequent
-                               ;;
-                       -tpf*)
-                               vendor=ibm
-                               ;;
-                       -vxsim* | -vxworks* | -windiss*)
-                               vendor=wrs
-                               ;;
-                       -aux*)
-                               vendor=apple
-                               ;;
-                       -hms*)
-                               vendor=hitachi
-                               ;;
-                       -mpw* | -macos*)
-                               vendor=apple
-                               ;;
-                       -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
-                               vendor=atari
-                               ;;
-                       -vos*)
-                               vendor=stratus
-                               ;;
-               esac
-               basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
-               ;;
-esac
-
-echo $basic_machine$os
-exit
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:
diff --git a/src/libs/gnulib/build-aux/install-sh b/src/libs/gnulib/build-aux/install-sh
deleted file mode 100755 (executable)
index 0b0fdcb..0000000
+++ /dev/null
@@ -1,501 +0,0 @@
-#!/bin/sh
-# install - install a program, script, or datafile
-
-scriptversion=2013-12-25.23; # UTC
-
-# This originates from X11R5 (mit/util/scripts/install.sh), which was
-# later released in X11R6 (xc/config/util/install.sh) with the
-# following copyright and license.
-#
-# Copyright (C) 1994 X Consortium
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to
-# deal in the Software without restriction, including without limitation the
-# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-# sell copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
-# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
-# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-# Except as contained in this notice, the name of the X Consortium shall not
-# be used in advertising or otherwise to promote the sale, use or other deal-
-# ings in this Software without prior written authorization from the X Consor-
-# tium.
-#
-#
-# FSF changes to this file are in the public domain.
-#
-# Calling this script install-sh is preferred over install.sh, to prevent
-# 'make' implicit rules from creating a file called install from it
-# when there is no Makefile.
-#
-# This script is compatible with the BSD install script, but was written
-# from scratch.
-
-tab='  '
-nl='
-'
-IFS=" $tab$nl"
-
-# Set DOITPROG to "echo" to test this script.
-
-doit=${DOITPROG-}
-doit_exec=${doit:-exec}
-
-# Put in absolute file names if you don't have them in your path;
-# or use environment vars.
-
-chgrpprog=${CHGRPPROG-chgrp}
-chmodprog=${CHMODPROG-chmod}
-chownprog=${CHOWNPROG-chown}
-cmpprog=${CMPPROG-cmp}
-cpprog=${CPPROG-cp}
-mkdirprog=${MKDIRPROG-mkdir}
-mvprog=${MVPROG-mv}
-rmprog=${RMPROG-rm}
-stripprog=${STRIPPROG-strip}
-
-posix_mkdir=
-
-# Desired mode of installed file.
-mode=0755
-
-chgrpcmd=
-chmodcmd=$chmodprog
-chowncmd=
-mvcmd=$mvprog
-rmcmd="$rmprog -f"
-stripcmd=
-
-src=
-dst=
-dir_arg=
-dst_arg=
-
-copy_on_change=false
-is_target_a_directory=possibly
-
-usage="\
-Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
-   or: $0 [OPTION]... SRCFILES... DIRECTORY
-   or: $0 [OPTION]... -t DIRECTORY SRCFILES...
-   or: $0 [OPTION]... -d DIRECTORIES...
-
-In the 1st form, copy SRCFILE to DSTFILE.
-In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
-In the 4th, create DIRECTORIES.
-
-Options:
-     --help     display this help and exit.
-     --version  display version info and exit.
-
-  -c            (ignored)
-  -C            install only if different (preserve the last data modification time)
-  -d            create directories instead of installing files.
-  -g GROUP      $chgrpprog installed files to GROUP.
-  -m MODE       $chmodprog installed files to MODE.
-  -o USER       $chownprog installed files to USER.
-  -s            $stripprog installed files.
-  -t DIRECTORY  install into DIRECTORY.
-  -T            report an error if DSTFILE is a directory.
-
-Environment variables override the default commands:
-  CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
-  RMPROG STRIPPROG
-"
-
-while test $# -ne 0; do
-  case $1 in
-    -c) ;;
-
-    -C) copy_on_change=true;;
-
-    -d) dir_arg=true;;
-
-    -g) chgrpcmd="$chgrpprog $2"
-        shift;;
-
-    --help) echo "$usage"; exit $?;;
-
-    -m) mode=$2
-        case $mode in
-          *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*)
-            echo "$0: invalid mode: $mode" >&2
-            exit 1;;
-        esac
-        shift;;
-
-    -o) chowncmd="$chownprog $2"
-        shift;;
-
-    -s) stripcmd=$stripprog;;
-
-    -t)
-        is_target_a_directory=always
-        dst_arg=$2
-        # Protect names problematic for 'test' and other utilities.
-        case $dst_arg in
-          -* | [=\(\)!]) dst_arg=./$dst_arg;;
-        esac
-        shift;;
-
-    -T) is_target_a_directory=never;;
-
-    --version) echo "$0 $scriptversion"; exit $?;;
-
-    --) shift
-        break;;
-
-    -*) echo "$0: invalid option: $1" >&2
-        exit 1;;
-
-    *)  break;;
-  esac
-  shift
-done
-
-# We allow the use of options -d and -T together, by making -d
-# take the precedence; this is for compatibility with GNU install.
-
-if test -n "$dir_arg"; then
-  if test -n "$dst_arg"; then
-    echo "$0: target directory not allowed when installing a directory." >&2
-    exit 1
-  fi
-fi
-
-if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
-  # When -d is used, all remaining arguments are directories to create.
-  # When -t is used, the destination is already specified.
-  # Otherwise, the last argument is the destination.  Remove it from $@.
-  for arg
-  do
-    if test -n "$dst_arg"; then
-      # $@ is not empty: it contains at least $arg.
-      set fnord "$@" "$dst_arg"
-      shift # fnord
-    fi
-    shift # arg
-    dst_arg=$arg
-    # Protect names problematic for 'test' and other utilities.
-    case $dst_arg in
-      -* | [=\(\)!]) dst_arg=./$dst_arg;;
-    esac
-  done
-fi
-
-if test $# -eq 0; then
-  if test -z "$dir_arg"; then
-    echo "$0: no input file specified." >&2
-    exit 1
-  fi
-  # It's OK to call 'install-sh -d' without argument.
-  # This can happen when creating conditional directories.
-  exit 0
-fi
-
-if test -z "$dir_arg"; then
-  if test $# -gt 1 || test "$is_target_a_directory" = always; then
-    if test ! -d "$dst_arg"; then
-      echo "$0: $dst_arg: Is not a directory." >&2
-      exit 1
-    fi
-  fi
-fi
-
-if test -z "$dir_arg"; then
-  do_exit='(exit $ret); exit $ret'
-  trap "ret=129; $do_exit" 1
-  trap "ret=130; $do_exit" 2
-  trap "ret=141; $do_exit" 13
-  trap "ret=143; $do_exit" 15
-
-  # Set umask so as not to create temps with too-generous modes.
-  # However, 'strip' requires both read and write access to temps.
-  case $mode in
-    # Optimize common cases.
-    *644) cp_umask=133;;
-    *755) cp_umask=22;;
-
-    *[0-7])
-      if test -z "$stripcmd"; then
-        u_plus_rw=
-      else
-        u_plus_rw='% 200'
-      fi
-      cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
-    *)
-      if test -z "$stripcmd"; then
-        u_plus_rw=
-      else
-        u_plus_rw=,u+rw
-      fi
-      cp_umask=$mode$u_plus_rw;;
-  esac
-fi
-
-for src
-do
-  # Protect names problematic for 'test' and other utilities.
-  case $src in
-    -* | [=\(\)!]) src=./$src;;
-  esac
-
-  if test -n "$dir_arg"; then
-    dst=$src
-    dstdir=$dst
-    test -d "$dstdir"
-    dstdir_status=$?
-  else
-
-    # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
-    # might cause directories to be created, which would be especially bad
-    # if $src (and thus $dsttmp) contains '*'.
-    if test ! -f "$src" && test ! -d "$src"; then
-      echo "$0: $src does not exist." >&2
-      exit 1
-    fi
-
-    if test -z "$dst_arg"; then
-      echo "$0: no destination specified." >&2
-      exit 1
-    fi
-    dst=$dst_arg
-
-    # If destination is a directory, append the input filename; won't work
-    # if double slashes aren't ignored.
-    if test -d "$dst"; then
-      if test "$is_target_a_directory" = never; then
-        echo "$0: $dst_arg: Is a directory" >&2
-        exit 1
-      fi
-      dstdir=$dst
-      dst=$dstdir/`basename "$src"`
-      dstdir_status=0
-    else
-      dstdir=`dirname "$dst"`
-      test -d "$dstdir"
-      dstdir_status=$?
-    fi
-  fi
-
-  obsolete_mkdir_used=false
-
-  if test $dstdir_status != 0; then
-    case $posix_mkdir in
-      '')
-        # Create intermediate dirs using mode 755 as modified by the umask.
-        # This is like FreeBSD 'install' as of 1997-10-28.
-        umask=`umask`
-        case $stripcmd.$umask in
-          # Optimize common cases.
-          *[2367][2367]) mkdir_umask=$umask;;
-          .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
-
-          *[0-7])
-            mkdir_umask=`expr $umask + 22 \
-              - $umask % 100 % 40 + $umask % 20 \
-              - $umask % 10 % 4 + $umask % 2
-            `;;
-          *) mkdir_umask=$umask,go-w;;
-        esac
-
-        # With -d, create the new directory with the user-specified mode.
-        # Otherwise, rely on $mkdir_umask.
-        if test -n "$dir_arg"; then
-          mkdir_mode=-m$mode
-        else
-          mkdir_mode=
-        fi
-
-        posix_mkdir=false
-        case $umask in
-          *[123567][0-7][0-7])
-            # POSIX mkdir -p sets u+wx bits regardless of umask, which
-            # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
-            ;;
-          *)
-            tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
-            trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
-
-            if (umask $mkdir_umask &&
-                exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
-            then
-              if test -z "$dir_arg" || {
-                   # Check for POSIX incompatibilities with -m.
-                   # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
-                   # other-writable bit of parent directory when it shouldn't.
-                   # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
-                   ls_ld_tmpdir=`ls -ld "$tmpdir"`
-                   case $ls_ld_tmpdir in
-                     d????-?r-*) different_mode=700;;
-                     d????-?--*) different_mode=755;;
-                     *) false;;
-                   esac &&
-                   $mkdirprog -m$different_mode -p -- "$tmpdir" && {
-                     ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
-                     test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
-                   }
-                 }
-              then posix_mkdir=:
-              fi
-              rmdir "$tmpdir/d" "$tmpdir"
-            else
-              # Remove any dirs left behind by ancient mkdir implementations.
-              rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
-            fi
-            trap '' 0;;
-        esac;;
-    esac
-
-    if
-      $posix_mkdir && (
-        umask $mkdir_umask &&
-        $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
-      )
-    then :
-    else
-
-      # The umask is ridiculous, or mkdir does not conform to POSIX,
-      # or it failed possibly due to a race condition.  Create the
-      # directory the slow way, step by step, checking for races as we go.
-
-      case $dstdir in
-        /*) prefix='/';;
-        [-=\(\)!]*) prefix='./';;
-        *)  prefix='';;
-      esac
-
-      oIFS=$IFS
-      IFS=/
-      set -f
-      set fnord $dstdir
-      shift
-      set +f
-      IFS=$oIFS
-
-      prefixes=
-
-      for d
-      do
-        test X"$d" = X && continue
-
-        prefix=$prefix$d
-        if test -d "$prefix"; then
-          prefixes=
-        else
-          if $posix_mkdir; then
-            (umask=$mkdir_umask &&
-             $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
-            # Don't fail if two instances are running concurrently.
-            test -d "$prefix" || exit 1
-          else
-            case $prefix in
-              *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
-              *) qprefix=$prefix;;
-            esac
-            prefixes="$prefixes '$qprefix'"
-          fi
-        fi
-        prefix=$prefix/
-      done
-
-      if test -n "$prefixes"; then
-        # Don't fail if two instances are running concurrently.
-        (umask $mkdir_umask &&
-         eval "\$doit_exec \$mkdirprog $prefixes") ||
-          test -d "$dstdir" || exit 1
-        obsolete_mkdir_used=true
-      fi
-    fi
-  fi
-
-  if test -n "$dir_arg"; then
-    { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
-    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
-    { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
-      test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
-  else
-
-    # Make a couple of temp file names in the proper directory.
-    dsttmp=$dstdir/_inst.$$_
-    rmtmp=$dstdir/_rm.$$_
-
-    # Trap to clean up those temp files at exit.
-    trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
-
-    # Copy the file name to the temp name.
-    (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
-
-    # and set any options; do chmod last to preserve setuid bits.
-    #
-    # If any of these fail, we abort the whole thing.  If we want to
-    # ignore errors from any of these, just make sure not to ignore
-    # errors from the above "$doit $cpprog $src $dsttmp" command.
-    #
-    { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
-    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
-    { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
-    { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
-
-    # If -C, don't bother to copy if it wouldn't change the file.
-    if $copy_on_change &&
-       old=`LC_ALL=C ls -dlL "$dst"     2>/dev/null` &&
-       new=`LC_ALL=C ls -dlL "$dsttmp"  2>/dev/null` &&
-       set -f &&
-       set X $old && old=:$2:$4:$5:$6 &&
-       set X $new && new=:$2:$4:$5:$6 &&
-       set +f &&
-       test "$old" = "$new" &&
-       $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
-    then
-      rm -f "$dsttmp"
-    else
-      # Rename the file to the real destination.
-      $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
-
-      # The rename failed, perhaps because mv can't rename something else
-      # to itself, or perhaps because mv is so ancient that it does not
-      # support -f.
-      {
-        # Now remove or move aside any old file at destination location.
-        # We try this two ways since rm can't unlink itself on some
-        # systems and the destination file might be busy for other
-        # reasons.  In this case, the final cleanup might fail but the new
-        # file should still install successfully.
-        {
-          test ! -f "$dst" ||
-          $doit $rmcmd -f "$dst" 2>/dev/null ||
-          { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
-            { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
-          } ||
-          { echo "$0: cannot unlink or rename $dst" >&2
-            (exit 1); exit 1
-          }
-        } &&
-
-        # Now rename the file to the real destination.
-        $doit $mvcmd "$dsttmp" "$dst"
-      }
-    fi || exit 1
-
-    trap '' 0
-  fi
-done
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC"
-# time-stamp-end: "; # UTC"
-# End:
diff --git a/src/libs/gnulib/build-aux/missing b/src/libs/gnulib/build-aux/missing
deleted file mode 100755 (executable)
index dada1ba..0000000
+++ /dev/null
@@ -1,330 +0,0 @@
-#! /bin/sh
-# Common stub for a few missing GNU programs while installing.
-
-scriptversion=2014-09-17.17; # UTC
-
-# Copyright (C) 1996-2014 Free Software Foundation, Inc.
-# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-if test $# -eq 0; then
-  echo 1>&2 "Try '$0 --help' for more information"
-  exit 1
-fi
-
-run=:
-sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
-sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
-
-# In the cases where this matters, 'missing' is being run in the
-# srcdir already.
-if test -f configure.ac; then
-  configure_ac=configure.ac
-else
-  configure_ac=configure.in
-fi
-
-msg="missing on your system"
-
-case $1 in
---run)
-  # Try to run requested program, and just exit if it succeeds.
-  run=
-  shift
-  "$@" && exit 0
-  # Exit code 63 means version mismatch.  This often happens
-  # when the user try to use an ancient version of a tool on
-  # a file that requires a minimum version.  In this case we
-  # we should proceed has if the program had been absent, or
-  # if --run hadn't been passed.
-  if test $? = 63; then
-    run=:
-    msg="probably too old"
-  fi
-  ;;
-
-  -h|--h|--he|--hel|--help)
-    echo "\
-$0 [OPTION]... PROGRAM [ARGUMENT]...
-
-Handle 'PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
-error status if there is no known handling for PROGRAM.
-
-Options:
-  -h, --help      display this help and exit
-  -v, --version   output version information and exit
-  --run           try to run the given command, and emulate it if it fails
-
-Supported PROGRAM values:
-  aclocal      touch file 'aclocal.m4'
-  autoconf     touch file 'configure'
-  autoheader   touch file 'config.h.in'
-  autom4te     touch the output file, or create a stub one
-  automake     touch all 'Makefile.in' files
-  bison        create 'y.tab.[ch]', if possible, from existing .[ch]
-  flex         create 'lex.yy.c', if possible, from existing .c
-  help2man     touch the output file
-  lex          create 'lex.yy.c', if possible, from existing .c
-  makeinfo     touch the output file
-  yacc         create 'y.tab.[ch]', if possible, from existing .[ch]
-
-Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and
-'g' are ignored when checking the name.
-
-Send bug reports to <bug-automake@gnu.org>."
-    exit $?
-    ;;
-
-  -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
-    echo "missing $scriptversion (GNU Automake)"
-    exit $?
-    ;;
-
-  -*)
-    echo 1>&2 "$0: Unknown '$1' option"
-    echo 1>&2 "Try '$0 --help' for more information"
-    exit 1
-    ;;
-
-esac
-
-# normalize program name to check for.
-program=`echo "$1" | sed '
-  s/^gnu-//; t
-  s/^gnu//; t
-  s/^g//; t'`
-
-# Now exit if we have it, but it failed.  Also exit now if we
-# don't have it and --version was passed (most likely to detect
-# the program).  This is about non-GNU programs, so use $1 not
-# $program.
-case $1 in
-  lex*|yacc*)
-    # Not GNU programs, they don't have --version.
-    ;;
-
-  *)
-    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
-       # We have it, but it failed.
-       exit 1
-    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
-       # Could not run --version or --help.  This is probably someone
-       # running '$TOOL --version' or '$TOOL --help' to check whether
-       # $TOOL exists and not knowing $TOOL uses missing.
-       exit 1
-    fi
-    ;;
-esac
-
-# If it does not exist, or fails to run (possibly an outdated version),
-# try to emulate it.
-case $program in
-  aclocal*)
-    echo 1>&2 "\
-WARNING: '$1' is $msg.  You should only need it if
-         you modified 'acinclude.m4' or '${configure_ac}'.  You might want
-         to install the Automake and Perl packages.  Grab them from
-         any GNU archive site."
-    touch aclocal.m4
-    ;;
-
-  autoconf*)
-    echo 1>&2 "\
-WARNING: '$1' is $msg.  You should only need it if
-         you modified '${configure_ac}'.  You might want to install the
-         Autoconf and GNU m4 packages.  Grab them from any GNU
-         archive site."
-    touch configure
-    ;;
-
-  autoheader*)
-    echo 1>&2 "\
-WARNING: '$1' is $msg.  You should only need it if
-         you modified 'acconfig.h' or '${configure_ac}'.  You might want
-         to install the Autoconf and GNU m4 packages.  Grab them
-         from any GNU archive site."
-    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
-    test -z "$files" && files="config.h"
-    touch_files=
-    for f in $files; do
-      case $f in
-      *:*) touch_files="$touch_files "`echo "$f" |
-                                      sed -e 's/^[^:]*://' -e 's/:.*//'`;;
-      *) touch_files="$touch_files $f.in";;
-      esac
-    done
-    touch $touch_files
-    ;;
-
-  automake*)
-    echo 1>&2 "\
-WARNING: '$1' is $msg.  You should only need it if
-         you modified 'Makefile.am', 'acinclude.m4' or '${configure_ac}'.
-         You might want to install the Automake and Perl packages.
-         Grab them from any GNU archive site."
-    find . -type f -name Makefile.am -print |
-          sed 's/\.am$/.in/' |
-          while read f; do touch "$f"; done
-    ;;
-
-  autom4te*)
-    echo 1>&2 "\
-WARNING: '$1' is needed, but is $msg.
-         You might have modified some files without having the
-         proper tools for further handling them.
-         You can get '$1' as part of Autoconf from any GNU
-         archive site."
-
-    file=`echo "$*" | sed -n "$sed_output"`
-    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
-    if test -f "$file"; then
-       touch $file
-    else
-       test -z "$file" || exec >$file
-       echo "#! /bin/sh"
-       echo "# Created by GNU Automake missing as a replacement of"
-       echo "#  $ $@"
-       echo "exit 0"
-       chmod +x $file
-       exit 1
-    fi
-    ;;
-
-  bison*|yacc*)
-    echo 1>&2 "\
-WARNING: '$1' $msg.  You should only need it if
-         you modified a '.y' file.  You may need the Bison package
-         in order for those modifications to take effect.  You can get
-         Bison from any GNU archive site."
-    rm -f y.tab.c y.tab.h
-    if test $# -ne 1; then
-        eval LASTARG=\${$#}
-       case $LASTARG in
-       *.y)
-           SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
-           if test -f "$SRCFILE"; then
-                cp "$SRCFILE" y.tab.c
-           fi
-           SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
-           if test -f "$SRCFILE"; then
-                cp "$SRCFILE" y.tab.h
-           fi
-         ;;
-       esac
-    fi
-    if test ! -f y.tab.h; then
-       echo >y.tab.h
-    fi
-    if test ! -f y.tab.c; then
-       echo 'main() { return 0; }' >y.tab.c
-    fi
-    ;;
-
-  lex*|flex*)
-    echo 1>&2 "\
-WARNING: '$1' is $msg.  You should only need it if
-         you modified a '.l' file.  You may need the Flex package
-         in order for those modifications to take effect.  You can get
-         Flex from any GNU archive site."
-    rm -f lex.yy.c
-    if test $# -ne 1; then
-        eval LASTARG=\${$#}
-       case $LASTARG in
-       *.l)
-           SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
-           if test -f "$SRCFILE"; then
-                cp "$SRCFILE" lex.yy.c
-           fi
-         ;;
-       esac
-    fi
-    if test ! -f lex.yy.c; then
-       echo 'main() { return 0; }' >lex.yy.c
-    fi
-    ;;
-
-  help2man*)
-    echo 1>&2 "\
-WARNING: '$1' is $msg.  You should only need it if
-        you modified a dependency of a manual page.  You may need the
-        Help2man package in order for those modifications to take
-        effect.  You can get Help2man from any GNU archive site."
-
-    file=`echo "$*" | sed -n "$sed_output"`
-    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
-    if test -f "$file"; then
-       touch $file
-    else
-       test -z "$file" || exec >$file
-       echo ".ab help2man is required to generate this page"
-       exit $?
-    fi
-    ;;
-
-  makeinfo*)
-    echo 1>&2 "\
-WARNING: '$1' is $msg.  You should only need it if
-         you modified a '.texi' or '.texinfo' file, or any other file
-         indirectly affecting the aspect of the manual.  The spurious
-         call might also be the consequence of using a buggy 'make' (AIX,
-         DU, IRIX).  You might want to install the Texinfo package or
-         the GNU make package.  Grab either from any GNU archive site."
-    # The file to touch is that specified with -o ...
-    file=`echo "$*" | sed -n "$sed_output"`
-    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
-    if test -z "$file"; then
-      # ... or it is the one specified with @setfilename ...
-      infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
-      file=`sed -n '
-       /^@setfilename/{
-         s/.* \([^ ]*\) *$/\1/
-         p
-         q
-       }' $infile`
-      # ... or it is derived from the source name (dir/f.texi becomes f.info)
-      test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
-    fi
-    # If the file does not exist, the user really needs makeinfo;
-    # let's fail without touching anything.
-    test -f $file || exit 1
-    touch $file
-    ;;
-
-  *)
-    echo 1>&2 "\
-WARNING: '$1' is needed, and is $msg.
-         You might have modified some files without having the
-         proper tools for further handling them.  Check the 'README' file,
-         it often tells you about the needed prerequisites for installing
-         this package.  You may also peek at any GNU archive site, in case
-         some other package would contain this missing '$1' program."
-    exit 1
-    ;;
-esac
-
-exit 0
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC"
-# time-stamp-end: "; # UTC"
-# End:
diff --git a/src/libs/gnulib/config.h.in b/src/libs/gnulib/config.h.in
deleted file mode 100644 (file)
index e92dd75..0000000
+++ /dev/null
@@ -1,457 +0,0 @@
-/* config.h.in.  Generated from configure.ac by autoheader.  */
-
-/* Define to the number of bits in type 'ptrdiff_t'. */
-#undef BITSIZEOF_PTRDIFF_T
-
-/* Define to the number of bits in type 'sig_atomic_t'. */
-#undef BITSIZEOF_SIG_ATOMIC_T
-
-/* Define to the number of bits in type 'size_t'. */
-#undef BITSIZEOF_SIZE_T
-
-/* Define to the number of bits in type 'wchar_t'. */
-#undef BITSIZEOF_WCHAR_T
-
-/* Define to the number of bits in type 'wint_t'. */
-#undef BITSIZEOF_WINT_T
-
-/* Define to 1 when the gnulib module wcwidth should be tested. */
-#undef GNULIB_TEST_WCWIDTH
-
-/* Define to 1 if you have the declaration of `getc_unlocked', and to 0 if you
-   don't. */
-#undef HAVE_DECL_GETC_UNLOCKED
-
-/* Define to 1 if you have the declaration of `towlower', and to 0 if you
-   don't. */
-#undef HAVE_DECL_TOWLOWER
-
-/* Define to 1 if you have the declaration of `wcwidth', and to 0 if you
-   don't. */
-#undef HAVE_DECL_WCWIDTH
-
-/* Define to 1 if you have the <features.h> header file. */
-#undef HAVE_FEATURES_H
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-#undef HAVE_INTTYPES_H
-
-/* Define to 1 if you have the 'iswcntrl' function. */
-#undef HAVE_ISWCNTRL
-
-/* Define if you have <langinfo.h> and nl_langinfo(CODESET). */
-#undef HAVE_LANGINFO_CODESET
-
-/* Define to 1 if the system has the type 'long long int'. */
-#undef HAVE_LONG_LONG_INT
-
-/* Define to 1 if you have the <memory.h> header file. */
-#undef HAVE_MEMORY_H
-
-/* Define to 1 if btowc is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_BTOWC
-
-/* Define to 1 if imaxabs is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_IMAXABS
-
-/* Define to 1 if imaxdiv is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_IMAXDIV
-
-/* Define to 1 if iswctype is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_ISWCTYPE
-
-/* Define to 1 if mbrlen is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_MBRLEN
-
-/* Define to 1 if mbrtowc is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_MBRTOWC
-
-/* Define to 1 if mbsinit is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_MBSINIT
-
-/* Define to 1 if mbsnrtowcs is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_MBSNRTOWCS
-
-/* Define to 1 if mbsrtowcs is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_MBSRTOWCS
-
-/* Define to 1 if strtoimax is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_STRTOIMAX
-
-/* Define to 1 if strtoumax is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_STRTOUMAX
-
-/* Define to 1 if towctrans is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_TOWCTRANS
-
-/* Define to 1 if wcpcpy is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_WCPCPY
-
-/* Define to 1 if wcpncpy is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_WCPNCPY
-
-/* Define to 1 if wcrtomb is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_WCRTOMB
-
-/* Define to 1 if wcscasecmp is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_WCSCASECMP
-
-/* Define to 1 if wcscat is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_WCSCAT
-
-/* Define to 1 if wcschr is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_WCSCHR
-
-/* Define to 1 if wcscmp is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_WCSCMP
-
-/* Define to 1 if wcscoll is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_WCSCOLL
-
-/* Define to 1 if wcscpy is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_WCSCPY
-
-/* Define to 1 if wcscspn is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_WCSCSPN
-
-/* Define to 1 if wcsdup is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_WCSDUP
-
-/* Define to 1 if wcslen is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_WCSLEN
-
-/* Define to 1 if wcsncasecmp is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_WCSNCASECMP
-
-/* Define to 1 if wcsncat is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_WCSNCAT
-
-/* Define to 1 if wcsncmp is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_WCSNCMP
-
-/* Define to 1 if wcsncpy is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_WCSNCPY
-
-/* Define to 1 if wcsnlen is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_WCSNLEN
-
-/* Define to 1 if wcsnrtombs is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_WCSNRTOMBS
-
-/* Define to 1 if wcspbrk is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_WCSPBRK
-
-/* Define to 1 if wcsrchr is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_WCSRCHR
-
-/* Define to 1 if wcsrtombs is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_WCSRTOMBS
-
-/* Define to 1 if wcsspn is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_WCSSPN
-
-/* Define to 1 if wcsstr is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_WCSSTR
-
-/* Define to 1 if wcstok is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_WCSTOK
-
-/* Define to 1 if wcswidth is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_WCSWIDTH
-
-/* Define to 1 if wcsxfrm is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_WCSXFRM
-
-/* Define to 1 if wctob is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_WCTOB
-
-/* Define to 1 if wctrans is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_WCTRANS
-
-/* Define to 1 if wctype is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_WCTYPE
-
-/* Define to 1 if wcwidth is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_WCWIDTH
-
-/* Define to 1 if wmemchr is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_WMEMCHR
-
-/* Define to 1 if wmemcmp is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_WMEMCMP
-
-/* Define to 1 if wmemcpy is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_WMEMCPY
-
-/* Define to 1 if wmemmove is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_WMEMMOVE
-
-/* Define to 1 if wmemset is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_WMEMSET
-
-/* Define to 1 if 'sig_atomic_t' is a signed integer type. */
-#undef HAVE_SIGNED_SIG_ATOMIC_T
-
-/* Define to 1 if 'wchar_t' is a signed integer type. */
-#undef HAVE_SIGNED_WCHAR_T
-
-/* Define to 1 if 'wint_t' is a signed integer type. */
-#undef HAVE_SIGNED_WINT_T
-
-/* Define to 1 if you have the <stdint.h> header file. */
-#undef HAVE_STDINT_H
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-#undef HAVE_STDLIB_H
-
-/* Define to 1 if you have the <strings.h> header file. */
-#undef HAVE_STRINGS_H
-
-/* Define to 1 if you have the <string.h> header file. */
-#undef HAVE_STRING_H
-
-/* Define to 1 if you have the 'symlink' function. */
-#undef HAVE_SYMLINK
-
-/* Define to 1 if you have the <sys/bitypes.h> header file. */
-#undef HAVE_SYS_BITYPES_H
-
-/* Define to 1 if you have the <sys/inttypes.h> header file. */
-#undef HAVE_SYS_INTTYPES_H
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#undef HAVE_SYS_STAT_H
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#undef HAVE_SYS_TYPES_H
-
-/* Define to 1 if you have the `towlower' function. */
-#undef HAVE_TOWLOWER
-
-/* Define to 1 if you have the <unistd.h> header file. */
-#undef HAVE_UNISTD_H
-
-/* Define to 1 if the system has the type 'unsigned long long int'. */
-#undef HAVE_UNSIGNED_LONG_LONG_INT
-
-/* Define to 1 if you have the <wchar.h> header file. */
-#undef HAVE_WCHAR_H
-
-/* Define if you have the 'wchar_t' type. */
-#undef HAVE_WCHAR_T
-
-/* Define to 1 if you have the <wctype.h> header file. */
-#undef HAVE_WCTYPE_H
-
-/* Define to 1 if you have the 'wcwidth' function. */
-#undef HAVE_WCWIDTH
-
-/* Define if you have the 'wint_t' type. */
-#undef HAVE_WINT_T
-
-/* Define to 1 if O_NOATIME works. */
-#undef HAVE_WORKING_O_NOATIME
-
-/* Define to 1 if O_NOFOLLOW works. */
-#undef HAVE_WORKING_O_NOFOLLOW
-
-/* Define to 1 if the system has the type `_Bool'. */
-#undef HAVE__BOOL
-
-/* Name of package */
-#undef PACKAGE
-
-/* Define to the address where bug reports for this package should be sent. */
-#undef PACKAGE_BUGREPORT
-
-/* Define to the full name of this package. */
-#undef PACKAGE_NAME
-
-/* Define to the full name and version of this package. */
-#undef PACKAGE_STRING
-
-/* Define to the one symbol short name of this package. */
-#undef PACKAGE_TARNAME
-
-/* Define to the home page for this package. */
-#undef PACKAGE_URL
-
-/* Define to the version of this package. */
-#undef PACKAGE_VERSION
-
-/* Define if <inttypes.h> exists and defines unusable PRI* macros. */
-#undef PRI_MACROS_BROKEN
-
-/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
-   'ptrdiff_t'. */
-#undef PTRDIFF_T_SUFFIX
-
-/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
-   'sig_atomic_t'. */
-#undef SIG_ATOMIC_T_SUFFIX
-
-/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
-   'size_t'. */
-#undef SIZE_T_SUFFIX
-
-/* Define to 1 if you have the ANSI C header files. */
-#undef STDC_HEADERS
-
-/* Enable extensions on AIX 3, Interix.  */
-#ifndef _ALL_SOURCE
-# undef _ALL_SOURCE
-#endif
-/* Enable general extensions on OS X.  */
-#ifndef _DARWIN_C_SOURCE
-# undef _DARWIN_C_SOURCE
-#endif
-/* Enable GNU extensions on systems that have them.  */
-#ifndef _GNU_SOURCE
-# undef _GNU_SOURCE
-#endif
-/* Enable threading extensions on Solaris.  */
-#ifndef _POSIX_PTHREAD_SEMANTICS
-# undef _POSIX_PTHREAD_SEMANTICS
-#endif
-/* Enable extensions on HP NonStop.  */
-#ifndef _TANDEM_SOURCE
-# undef _TANDEM_SOURCE
-#endif
-/* Enable X/Open extensions if necessary.  HP-UX 11.11 defines
-   mbstate_t only if _XOPEN_SOURCE is defined to 500, regardless of
-   whether compiling with -Ae or -D_HPUX_SOURCE=1.  */
-#ifndef _XOPEN_SOURCE
-# undef _XOPEN_SOURCE
-#endif
-/* Enable general extensions on Solaris.  */
-#ifndef __EXTENSIONS__
-# undef __EXTENSIONS__
-#endif
-
-
-/* Version number of package */
-#undef VERSION
-
-/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
-   'wchar_t'. */
-#undef WCHAR_T_SUFFIX
-
-/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
-   'wint_t'. */
-#undef WINT_T_SUFFIX
-
-/* Define to 1 if on MINIX. */
-#undef _MINIX
-
-/* Define to 1 to make NetBSD features available. MINIX 3 needs this. */
-#undef _NETBSD_SOURCE
-
-/* The _Noreturn keyword of C11.  */
-#if ! (defined _Noreturn \
-       || (defined __STDC_VERSION__ && 201112 <= __STDC_VERSION__))
-# if (3 <= __GNUC__ || (__GNUC__ == 2 && 8 <= __GNUC_MINOR__) \
-      || 0x5110 <= __SUNPRO_C)
-#  define _Noreturn __attribute__ ((__noreturn__))
-# elif defined _MSC_VER && 1200 <= _MSC_VER
-#  define _Noreturn __declspec (noreturn)
-# else
-#  define _Noreturn
-# endif
-#endif
-
-
-/* Define to 2 if the system does not provide POSIX.1 features except with
-   this defined. */
-#undef _POSIX_1_SOURCE
-
-/* Define to 1 if you need to in order for 'stat' and other things to work. */
-#undef _POSIX_SOURCE
-
-/* _GL_INLINE is a portable alternative to ISO C99 plain 'inline'.
-   _GL_EXTERN_INLINE is a portable alternative to 'extern inline'.
-   _GL_INLINE_HEADER_BEGIN contains useful stuff to put
-     in an include file, before uses of _GL_INLINE.
-     It suppresses GCC's bogus "no previous prototype for 'FOO'" diagnostic,
-     when FOO is an inline function in the header; see
-     <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54113>.
-   _GL_INLINE_HEADER_END contains useful stuff to put
-     in the same include file, after uses of _GL_INLINE.
-
-   Suppress the use of extern inline on Apple's platforms,
-   as Libc-825.25 (2012-09-19) is incompatible with it; see
-   <http://lists.gnu.org/archive/html/bug-gnulib/2012-12/msg00023.html>.
-   Perhaps Apple will fix this some day.  */
-#if ((__GNUC__ \
-      ? defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ \
-      : 199901L <= __STDC_VERSION__) \
-     && !defined __APPLE__)
-# define _GL_INLINE inline
-# define _GL_EXTERN_INLINE extern inline
-#elif 2 < __GNUC__ + (7 <= __GNUC_MINOR__) && !defined __APPLE__
-# if __GNUC_GNU_INLINE__
-   /* __gnu_inline__ suppresses a GCC 4.2 diagnostic.  */
-#  define _GL_INLINE extern inline __attribute__ ((__gnu_inline__))
-# else
-#  define _GL_INLINE extern inline
-# endif
-# define _GL_EXTERN_INLINE extern
-#else
-# define _GL_INLINE static _GL_UNUSED
-# define _GL_EXTERN_INLINE static _GL_UNUSED
-#endif
-
-#if 4 < __GNUC__ + (6 <= __GNUC_MINOR__)
-# if defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__
-#  define _GL_INLINE_HEADER_CONST_PRAGMA
-# else
-#  define _GL_INLINE_HEADER_CONST_PRAGMA \
-     _Pragma ("GCC diagnostic ignored \"-Wsuggest-attribute=const\"")
-# endif
-# define _GL_INLINE_HEADER_BEGIN \
-    _Pragma ("GCC diagnostic push") \
-    _Pragma ("GCC diagnostic ignored \"-Wmissing-prototypes\"") \
-    _Pragma ("GCC diagnostic ignored \"-Wmissing-declarations\"") \
-    _GL_INLINE_HEADER_CONST_PRAGMA
-# define _GL_INLINE_HEADER_END \
-    _Pragma ("GCC diagnostic pop")
-#else
-# define _GL_INLINE_HEADER_BEGIN
-# define _GL_INLINE_HEADER_END
-#endif
-
-/* Work around a bug in Apple GCC 4.0.1 build 5465: In C99 mode, it supports
-   the ISO C 99 semantics of 'extern inline' (unlike the GNU C semantics of
-   earlier versions), but does not display it by setting __GNUC_STDC_INLINE__.
-   __APPLE__ && __MACH__ test for Mac OS X.
-   __APPLE_CC__ tests for the Apple compiler and its version.
-   __STDC_VERSION__ tests for the C99 mode.  */
-#if defined __APPLE__ && defined __MACH__ && __APPLE_CC__ >= 5465 && !defined __cplusplus && __STDC_VERSION__ >= 199901L && !defined __GNUC_STDC_INLINE__
-# define __GNUC_STDC_INLINE__ 1
-#endif
-
-/* Define as a marker that can be attached to declarations that might not
-    be used.  This helps to reduce warnings, such as from
-    GCC -Wunused-parameter.  */
-#if __GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)
-# define _GL_UNUSED __attribute__ ((__unused__))
-#else
-# define _GL_UNUSED
-#endif
-/* The name _UNUSED_PARAMETER_ is an earlier spelling, although the name
-   is a misnomer outside of parameter lists.  */
-#define _UNUSED_PARAMETER_ _GL_UNUSED
-
-/* The __pure__ attribute was added in gcc 2.96.  */
-#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
-# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__))
-#else
-# define _GL_ATTRIBUTE_PURE /* empty */
-#endif
-
-/* The __const__ attribute was added in gcc 2.95.  */
-#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)
-# define _GL_ATTRIBUTE_CONST __attribute__ ((__const__))
-#else
-# define _GL_ATTRIBUTE_CONST /* empty */
-#endif
-
diff --git a/src/libs/gnulib/configure b/src/libs/gnulib/configure
deleted file mode 100755 (executable)
index e55c825..0000000
+++ /dev/null
@@ -1,9840 +0,0 @@
-#! /bin/sh
-# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for dummy 0.
-#
-#
-# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
-#
-#
-# This configure script is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
-## -------------------- ##
-## M4sh Initialization. ##
-## -------------------- ##
-
-# Be more Bourne compatible
-DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
-  emulate sh
-  NULLCMD=:
-  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '${1+"$@"}'='"$@"'
-  setopt NO_GLOB_SUBST
-else
-  case `(set -o) 2>/dev/null` in #(
-  *posix*) :
-    set -o posix ;; #(
-  *) :
-     ;;
-esac
-fi
-
-
-as_nl='
-'
-export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
-    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='print -r --'
-  as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='printf %s\n'
-  as_echo_n='printf %s'
-else
-  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
-    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
-    as_echo_n='/usr/ucb/echo -n'
-  else
-    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
-    as_echo_n_body='eval
-      arg=$1;
-      case $arg in #(
-      *"$as_nl"*)
-       expr "X$arg" : "X\\(.*\\)$as_nl";
-       arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
-      esac;
-      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
-    '
-    export as_echo_n_body
-    as_echo_n='sh -c $as_echo_n_body as_echo'
-  fi
-  export as_echo_body
-  as_echo='sh -c $as_echo_body as_echo'
-fi
-
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
-  PATH_SEPARATOR=:
-  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
-    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
-      PATH_SEPARATOR=';'
-  }
-fi
-
-
-# IFS
-# We need space, tab and new line, in precisely that order.  Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" ""       $as_nl"
-
-# Find who we are.  Look in the path if we contain no directory separator.
-as_myself=
-case $0 in #((
-  *[\\/]* ) as_myself=$0 ;;
-  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-  done
-IFS=$as_save_IFS
-
-     ;;
-esac
-# We did not find ourselves, most probably we were run as `sh COMMAND'
-# in which case we are not to be found in the path.
-if test "x$as_myself" = x; then
-  as_myself=$0
-fi
-if test ! -f "$as_myself"; then
-  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
-  exit 1
-fi
-
-# Unset variables that we do not need and which cause bugs (e.g. in
-# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
-# suppresses any "Segmentation fault" message there.  '((' could
-# trigger a bug in pdksh 5.2.14.
-for as_var in BASH_ENV ENV MAIL MAILPATH
-do eval test x\${$as_var+set} = xset \
-  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-# Use a proper internal environment variable to ensure we don't fall
-  # into an infinite loop, continuously re-executing ourselves.
-  if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
-    _as_can_reexec=no; export _as_can_reexec;
-    # We cannot yet assume a decent shell, so we have to provide a
-# neutralization value for shells without unset; and this also
-# works around shells that cannot unset nonexistent variables.
-# Preserve -v and -x to the replacement shell.
-BASH_ENV=/dev/null
-ENV=/dev/null
-(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
-case $- in # ((((
-  *v*x* | *x*v* ) as_opts=-vx ;;
-  *v* ) as_opts=-v ;;
-  *x* ) as_opts=-x ;;
-  * ) as_opts= ;;
-esac
-exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
-# Admittedly, this is quite paranoid, since all the known shells bail
-# out after a failed `exec'.
-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
-as_fn_exit 255
-  fi
-  # We don't want this to propagate to other subprocesses.
-          { _as_can_reexec=; unset _as_can_reexec;}
-if test "x$CONFIG_SHELL" = x; then
-  as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
-  emulate sh
-  NULLCMD=:
-  # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '\${1+\"\$@\"}'='\"\$@\"'
-  setopt NO_GLOB_SUBST
-else
-  case \`(set -o) 2>/dev/null\` in #(
-  *posix*) :
-    set -o posix ;; #(
-  *) :
-     ;;
-esac
-fi
-"
-  as_required="as_fn_return () { (exit \$1); }
-as_fn_success () { as_fn_return 0; }
-as_fn_failure () { as_fn_return 1; }
-as_fn_ret_success () { return 0; }
-as_fn_ret_failure () { return 1; }
-
-exitcode=0
-as_fn_success || { exitcode=1; echo as_fn_success failed.; }
-as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
-as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
-as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
-if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
-
-else
-  exitcode=1; echo positional parameters were not saved.
-fi
-test x\$exitcode = x0 || exit 1
-test -x / || exit 1"
-  as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
-  as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
-  eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
-  test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
-test \$(( 1 + 1 )) = 2 || exit 1"
-  if (eval "$as_required") 2>/dev/null; then :
-  as_have_required=yes
-else
-  as_have_required=no
-fi
-  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
-
-else
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-as_found=false
-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  as_found=:
-  case $as_dir in #(
-        /*)
-          for as_base in sh bash ksh sh5; do
-            # Try only shells that exist, to save several forks.
-            as_shell=$as_dir/$as_base
-            if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
-                   { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
-  CONFIG_SHELL=$as_shell as_have_required=yes
-                  if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
-  break 2
-fi
-fi
-          done;;
-       esac
-  as_found=false
-done
-$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
-             { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
-  CONFIG_SHELL=$SHELL as_have_required=yes
-fi; }
-IFS=$as_save_IFS
-
-
-      if test "x$CONFIG_SHELL" != x; then :
-  export CONFIG_SHELL
-             # We cannot yet assume a decent shell, so we have to provide a
-# neutralization value for shells without unset; and this also
-# works around shells that cannot unset nonexistent variables.
-# Preserve -v and -x to the replacement shell.
-BASH_ENV=/dev/null
-ENV=/dev/null
-(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
-case $- in # ((((
-  *v*x* | *x*v* ) as_opts=-vx ;;
-  *v* ) as_opts=-v ;;
-  *x* ) as_opts=-x ;;
-  * ) as_opts= ;;
-esac
-exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
-# Admittedly, this is quite paranoid, since all the known shells bail
-# out after a failed `exec'.
-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
-exit 255
-fi
-
-    if test x$as_have_required = xno; then :
-  $as_echo "$0: This script requires a shell more modern than all"
-  $as_echo "$0: the shells that I found on your system."
-  if test x${ZSH_VERSION+set} = xset ; then
-    $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
-    $as_echo "$0: be upgraded to zsh 4.3.4 or later."
-  else
-    $as_echo "$0: Please tell bug-autoconf@gnu.org about your system,
-$0: including any error possibly output before this
-$0: message. Then install a modern shell, or manually run
-$0: the script under such a shell if you do have one."
-  fi
-  exit 1
-fi
-fi
-fi
-SHELL=${CONFIG_SHELL-/bin/sh}
-export SHELL
-# Unset more variables known to interfere with behavior of common tools.
-CLICOLOR_FORCE= GREP_OPTIONS=
-unset CLICOLOR_FORCE GREP_OPTIONS
-
-## --------------------- ##
-## M4sh Shell Functions. ##
-## --------------------- ##
-# as_fn_unset VAR
-# ---------------
-# Portably unset VAR.
-as_fn_unset ()
-{
-  { eval $1=; unset $1;}
-}
-as_unset=as_fn_unset
-
-# as_fn_set_status STATUS
-# -----------------------
-# Set $? to STATUS, without forking.
-as_fn_set_status ()
-{
-  return $1
-} # as_fn_set_status
-
-# as_fn_exit STATUS
-# -----------------
-# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
-as_fn_exit ()
-{
-  set +e
-  as_fn_set_status $1
-  exit $1
-} # as_fn_exit
-
-# as_fn_mkdir_p
-# -------------
-# Create "$as_dir" as a directory, including parents if necessary.
-as_fn_mkdir_p ()
-{
-
-  case $as_dir in #(
-  -*) as_dir=./$as_dir;;
-  esac
-  test -d "$as_dir" || eval $as_mkdir_p || {
-    as_dirs=
-    while :; do
-      case $as_dir in #(
-      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
-      *) as_qdir=$as_dir;;
-      esac
-      as_dirs="'$as_qdir' $as_dirs"
-      as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-        X"$as_dir" : 'X\(//\)[^/]' \| \
-        X"$as_dir" : 'X\(//\)$' \| \
-        X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)[^/].*/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\).*/{
-           s//\1/
-           q
-         }
-         s/.*/./; q'`
-      test -d "$as_dir" && break
-    done
-    test -z "$as_dirs" || eval "mkdir $as_dirs"
-  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
-
-
-} # as_fn_mkdir_p
-
-# as_fn_executable_p FILE
-# -----------------------
-# Test if FILE is an executable regular file.
-as_fn_executable_p ()
-{
-  test -f "$1" && test -x "$1"
-} # as_fn_executable_p
-# as_fn_append VAR VALUE
-# ----------------------
-# Append the text in VALUE to the end of the definition contained in VAR. Take
-# advantage of any shell optimizations that allow amortized linear growth over
-# repeated appends, instead of the typical quadratic growth present in naive
-# implementations.
-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
-  eval 'as_fn_append ()
-  {
-    eval $1+=\$2
-  }'
-else
-  as_fn_append ()
-  {
-    eval $1=\$$1\$2
-  }
-fi # as_fn_append
-
-# as_fn_arith ARG...
-# ------------------
-# Perform arithmetic evaluation on the ARGs, and store the result in the
-# global $as_val. Take advantage of shells that can avoid forks. The arguments
-# must be portable across $(()) and expr.
-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
-  eval 'as_fn_arith ()
-  {
-    as_val=$(( $* ))
-  }'
-else
-  as_fn_arith ()
-  {
-    as_val=`expr "$@" || test $? -eq 1`
-  }
-fi # as_fn_arith
-
-
-# as_fn_error STATUS ERROR [LINENO LOG_FD]
-# ----------------------------------------
-# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
-# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-# script with STATUS, using 1 if that was 0.
-as_fn_error ()
-{
-  as_status=$1; test $as_status -eq 0 && as_status=1
-  if test "$4"; then
-    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
-  fi
-  $as_echo "$as_me: error: $2" >&2
-  as_fn_exit $as_status
-} # as_fn_error
-
-if expr a : '\(a\)' >/dev/null 2>&1 &&
-   test "X`expr 00001 : '.*\(...\)'`" = X001; then
-  as_expr=expr
-else
-  as_expr=false
-fi
-
-if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
-  as_basename=basename
-else
-  as_basename=false
-fi
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
-  as_dirname=dirname
-else
-  as_dirname=false
-fi
-
-as_me=`$as_basename -- "$0" ||
-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
-        X"$0" : 'X\(//\)$' \| \
-        X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
-    sed '/^.*\/\([^/][^/]*\)\/*$/{
-           s//\1/
-           q
-         }
-         /^X\/\(\/\/\)$/{
-           s//\1/
-           q
-         }
-         /^X\/\(\/\).*/{
-           s//\1/
-           q
-         }
-         s/.*/./; q'`
-
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-
-  as_lineno_1=$LINENO as_lineno_1a=$LINENO
-  as_lineno_2=$LINENO as_lineno_2a=$LINENO
-  eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
-  test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
-  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)
-  sed -n '
-    p
-    /[$]LINENO/=
-  ' <$as_myself |
-    sed '
-      s/[$]LINENO.*/&-/
-      t lineno
-      b
-      :lineno
-      N
-      :loop
-      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
-      t loop
-      s/-\n.*//
-    ' >$as_me.lineno &&
-  chmod +x "$as_me.lineno" ||
-    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
-
-  # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
-  # already done that, so ensure we don't try to do so again and fall
-  # in an infinite loop.  This has already happened in practice.
-  _as_can_reexec=no; export _as_can_reexec
-  # Don't try to exec as it changes $[0], causing all sort of problems
-  # (the dirname of $[0] is not the place where we might find the
-  # original and so on.  Autoconf is especially sensitive to this).
-  . "./$as_me.lineno"
-  # Exit status is that of the last command.
-  exit
-}
-
-ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in #(((((
--n*)
-  case `echo 'xy\c'` in
-  *c*) ECHO_T='        ';;     # ECHO_T is single tab character.
-  xy)  ECHO_C='\c';;
-  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
-       ECHO_T='        ';;
-  esac;;
-*)
-  ECHO_N='-n';;
-esac
-
-rm -f conf$$ conf$$.exe conf$$.file
-if test -d conf$$.dir; then
-  rm -f conf$$.dir/conf$$.file
-else
-  rm -f conf$$.dir
-  mkdir conf$$.dir 2>/dev/null
-fi
-if (echo >conf$$.file) 2>/dev/null; then
-  if ln -s conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s='ln -s'
-    # ... but there are two gotchas:
-    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
-    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-    # In both cases, we have to default to `cp -pR'.
-    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -pR'
-  elif ln conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s=ln
-  else
-    as_ln_s='cp -pR'
-  fi
-else
-  as_ln_s='cp -pR'
-fi
-rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
-rmdir conf$$.dir 2>/dev/null
-
-if mkdir -p . 2>/dev/null; then
-  as_mkdir_p='mkdir -p "$as_dir"'
-else
-  test -d ./-p && rmdir ./-p
-  as_mkdir_p=false
-fi
-
-as_test_x='test -x'
-as_executable_p=as_fn_executable_p
-
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
-
-
-test -n "$DJDIR" || exec 7<&0 </dev/null
-exec 6>&1
-
-# Name of the host.
-# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
-# so uname gets run too.
-ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
-
-#
-# Initializations.
-#
-ac_default_prefix=/usr/local
-ac_clean_files=
-ac_config_libobj_dir=.
-LIBOBJS=
-cross_compiling=no
-subdirs=
-MFLAGS=
-MAKEFLAGS=
-
-# Identity of this package.
-PACKAGE_NAME='dummy'
-PACKAGE_TARNAME='dummy'
-PACKAGE_VERSION='0'
-PACKAGE_STRING='dummy 0'
-PACKAGE_BUGREPORT=''
-PACKAGE_URL=''
-
-# Factoring default headers for most tests.
-ac_includes_default="\
-#include <stdio.h>
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_STAT_H
-# include <sys/stat.h>
-#endif
-#ifdef STDC_HEADERS
-# include <stdlib.h>
-# include <stddef.h>
-#else
-# ifdef HAVE_STDLIB_H
-#  include <stdlib.h>
-# endif
-#endif
-#ifdef HAVE_STRING_H
-# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
-#  include <memory.h>
-# endif
-# include <string.h>
-#endif
-#ifdef HAVE_STRINGS_H
-# include <strings.h>
-#endif
-#ifdef HAVE_INTTYPES_H
-# include <inttypes.h>
-#endif
-#ifdef HAVE_STDINT_H
-# include <stdint.h>
-#endif
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif"
-
-gl_header_list=
-gl_func_list=
-ac_subst_vars='gl_LTLIBOBJS
-gl_LIBOBJS
-am__EXEEXT_FALSE
-am__EXEEXT_TRUE
-LTLIBOBJS
-LIBOBJS
-LIBGNU_LTLIBDEPS
-LIBGNU_LIBDEPS
-REPLACE_TOWLOWER
-REPLACE_ISWCNTRL
-HAVE_WCTYPE_H
-NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H
-NEXT_WCTYPE_H
-HAVE_ISWCNTRL
-REPLACE_ISWBLANK
-HAVE_WCTRANS_T
-HAVE_WCTYPE_T
-HAVE_ISWBLANK
-GNULIB_TOWCTRANS
-GNULIB_WCTRANS
-GNULIB_ISWCTYPE
-GNULIB_WCTYPE
-GNULIB_ISWBLANK
-HAVE_WINT_T
-HAVE_FEATURES_H
-NEXT_AS_FIRST_DIRECTIVE_WCHAR_H
-NEXT_WCHAR_H
-REPLACE_WCSWIDTH
-REPLACE_WCWIDTH
-REPLACE_WCSNRTOMBS
-REPLACE_WCSRTOMBS
-REPLACE_WCRTOMB
-REPLACE_MBSNRTOWCS
-REPLACE_MBSRTOWCS
-REPLACE_MBRLEN
-REPLACE_MBRTOWC
-REPLACE_MBSINIT
-REPLACE_WCTOB
-REPLACE_BTOWC
-REPLACE_MBSTATE_T
-HAVE_DECL_WCWIDTH
-HAVE_DECL_WCTOB
-HAVE_WCSWIDTH
-HAVE_WCSTOK
-HAVE_WCSSTR
-HAVE_WCSPBRK
-HAVE_WCSSPN
-HAVE_WCSCSPN
-HAVE_WCSRCHR
-HAVE_WCSCHR
-HAVE_WCSDUP
-HAVE_WCSXFRM
-HAVE_WCSCOLL
-HAVE_WCSNCASECMP
-HAVE_WCSCASECMP
-HAVE_WCSNCMP
-HAVE_WCSCMP
-HAVE_WCSNCAT
-HAVE_WCSCAT
-HAVE_WCPNCPY
-HAVE_WCSNCPY
-HAVE_WCPCPY
-HAVE_WCSCPY
-HAVE_WCSNLEN
-HAVE_WCSLEN
-HAVE_WMEMSET
-HAVE_WMEMMOVE
-HAVE_WMEMCPY
-HAVE_WMEMCMP
-HAVE_WMEMCHR
-HAVE_WCSNRTOMBS
-HAVE_WCSRTOMBS
-HAVE_WCRTOMB
-HAVE_MBSNRTOWCS
-HAVE_MBSRTOWCS
-HAVE_MBRLEN
-HAVE_MBRTOWC
-HAVE_MBSINIT
-HAVE_BTOWC
-GNULIB_WCSWIDTH
-GNULIB_WCSTOK
-GNULIB_WCSSTR
-GNULIB_WCSPBRK
-GNULIB_WCSSPN
-GNULIB_WCSCSPN
-GNULIB_WCSRCHR
-GNULIB_WCSCHR
-GNULIB_WCSDUP
-GNULIB_WCSXFRM
-GNULIB_WCSCOLL
-GNULIB_WCSNCASECMP
-GNULIB_WCSCASECMP
-GNULIB_WCSNCMP
-GNULIB_WCSCMP
-GNULIB_WCSNCAT
-GNULIB_WCSCAT
-GNULIB_WCPNCPY
-GNULIB_WCSNCPY
-GNULIB_WCPCPY
-GNULIB_WCSCPY
-GNULIB_WCSNLEN
-GNULIB_WCSLEN
-GNULIB_WMEMSET
-GNULIB_WMEMMOVE
-GNULIB_WMEMCPY
-GNULIB_WMEMCMP
-GNULIB_WMEMCHR
-GNULIB_WCWIDTH
-GNULIB_WCSNRTOMBS
-GNULIB_WCSRTOMBS
-GNULIB_WCRTOMB
-GNULIB_MBSNRTOWCS
-GNULIB_MBSRTOWCS
-GNULIB_MBRLEN
-GNULIB_MBRTOWC
-GNULIB_MBSINIT
-GNULIB_WCTOB
-GNULIB_BTOWC
-LIBUNISTRING_COMPILE_UNIWIDTH_WIDTH_FALSE
-LIBUNISTRING_COMPILE_UNIWIDTH_WIDTH_TRUE
-LIBUNISTRING_UNIWIDTH_H
-LIBUNISTRING_UNITYPES_H
-NEXT_AS_FIRST_DIRECTIVE_STDDEF_H
-NEXT_STDDEF_H
-GL_GENERATE_STDDEF_H_FALSE
-GL_GENERATE_STDDEF_H_TRUE
-STDDEF_H
-HAVE_WCHAR_T
-REPLACE_NULL
-HAVE__BOOL
-GL_GENERATE_STDBOOL_H_FALSE
-GL_GENERATE_STDBOOL_H_TRUE
-STDBOOL_H
-LOCALCHARSET_TESTS_ENVIRONMENT
-GLIBC21
-NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H
-NEXT_INTTYPES_H
-UINT64_MAX_EQ_ULONG_MAX
-UINT32_MAX_LT_UINTMAX_MAX
-PRIPTR_PREFIX
-PRI_MACROS_BROKEN
-INT64_MAX_EQ_LONG_MAX
-INT32_MAX_LT_INTMAX_MAX
-REPLACE_STRTOIMAX
-HAVE_DECL_STRTOUMAX
-HAVE_DECL_STRTOIMAX
-HAVE_DECL_IMAXDIV
-HAVE_DECL_IMAXABS
-GNULIB_STRTOUMAX
-GNULIB_STRTOIMAX
-GNULIB_IMAXDIV
-GNULIB_IMAXABS
-GL_GENERATE_STDINT_H_FALSE
-GL_GENERATE_STDINT_H_TRUE
-STDINT_H
-WINT_T_SUFFIX
-WCHAR_T_SUFFIX
-SIG_ATOMIC_T_SUFFIX
-SIZE_T_SUFFIX
-PTRDIFF_T_SUFFIX
-HAVE_SIGNED_WINT_T
-HAVE_SIGNED_WCHAR_T
-HAVE_SIGNED_SIG_ATOMIC_T
-BITSIZEOF_WINT_T
-BITSIZEOF_WCHAR_T
-BITSIZEOF_SIG_ATOMIC_T
-BITSIZEOF_SIZE_T
-BITSIZEOF_PTRDIFF_T
-APPLE_UNIVERSAL_BUILD
-HAVE_SYS_BITYPES_H
-HAVE_SYS_INTTYPES_H
-HAVE_STDINT_H
-NEXT_AS_FIRST_DIRECTIVE_STDINT_H
-NEXT_STDINT_H
-PRAGMA_COLUMNS
-PRAGMA_SYSTEM_HEADER
-INCLUDE_NEXT_AS_FIRST_DIRECTIVE
-INCLUDE_NEXT
-HAVE_SYS_TYPES_H
-HAVE_INTTYPES_H
-HAVE_WCHAR_H
-HAVE_UNSIGNED_LONG_LONG_INT
-HAVE_LONG_LONG_INT
-pkglibexecdir
-runstatedir
-lispdir
-GL_COND_LIBTOOL_FALSE
-GL_COND_LIBTOOL_TRUE
-RANLIB
-ARFLAGS
-AR
-EGREP
-GREP
-CPP
-host_os
-host_vendor
-host_cpu
-host
-build_os
-build_vendor
-build_cpu
-build
-am__fastdepCC_FALSE
-am__fastdepCC_TRUE
-CCDEPMODE
-am__nodep
-AMDEPBACKSLASH
-AMDEP_FALSE
-AMDEP_TRUE
-am__quote
-am__include
-DEPDIR
-OBJEXT
-EXEEXT
-ac_ct_CC
-CPPFLAGS
-LDFLAGS
-CFLAGS
-CC
-AM_BACKSLASH
-AM_DEFAULT_VERBOSITY
-AM_DEFAULT_V
-AM_V
-am__untar
-am__tar
-AMTAR
-am__leading_dot
-SET_MAKE
-AWK
-mkdir_p
-MKDIR_P
-INSTALL_STRIP_PROGRAM
-STRIP
-install_sh
-MAKEINFO
-AUTOHEADER
-AUTOMAKE
-AUTOCONF
-ACLOCAL
-VERSION
-PACKAGE
-CYGPATH_W
-am__isrc
-INSTALL_DATA
-INSTALL_SCRIPT
-INSTALL_PROGRAM
-target_alias
-host_alias
-build_alias
-LIBS
-ECHO_T
-ECHO_N
-ECHO_C
-DEFS
-mandir
-localedir
-libdir
-psdir
-pdfdir
-dvidir
-htmldir
-infodir
-docdir
-oldincludedir
-includedir
-localstatedir
-sharedstatedir
-sysconfdir
-datadir
-datarootdir
-libexecdir
-sbindir
-bindir
-program_transform_name
-prefix
-exec_prefix
-PACKAGE_URL
-PACKAGE_BUGREPORT
-PACKAGE_STRING
-PACKAGE_VERSION
-PACKAGE_TARNAME
-PACKAGE_NAME
-PATH_SEPARATOR
-SHELL'
-ac_subst_files=''
-ac_user_opts='
-enable_option_checking
-enable_silent_rules
-enable_dependency_tracking
-'
-      ac_precious_vars='build_alias
-host_alias
-target_alias
-CC
-CFLAGS
-LDFLAGS
-LIBS
-CPPFLAGS
-CPP'
-
-
-# Initialize some variables set by options.
-ac_init_help=
-ac_init_version=false
-ac_unrecognized_opts=
-ac_unrecognized_sep=
-# The variables have the same names as the options, with
-# dashes changed to underlines.
-cache_file=/dev/null
-exec_prefix=NONE
-no_create=
-no_recursion=
-prefix=NONE
-program_prefix=NONE
-program_suffix=NONE
-program_transform_name=s,x,x,
-silent=
-site=
-srcdir=
-verbose=
-x_includes=NONE
-x_libraries=NONE
-
-# Installation directory options.
-# These are left unexpanded so users can "make install exec_prefix=/foo"
-# and all the variables that are supposed to be based on exec_prefix
-# by default will actually change.
-# Use braces instead of parens because sh, perl, etc. also accept them.
-# (The list follows the same order as the GNU Coding Standards.)
-bindir='${exec_prefix}/bin'
-sbindir='${exec_prefix}/sbin'
-libexecdir='${exec_prefix}/libexec'
-datarootdir='${prefix}/share'
-datadir='${datarootdir}'
-sysconfdir='${prefix}/etc'
-sharedstatedir='${prefix}/com'
-localstatedir='${prefix}/var'
-includedir='${prefix}/include'
-oldincludedir='/usr/include'
-docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
-infodir='${datarootdir}/info'
-htmldir='${docdir}'
-dvidir='${docdir}'
-pdfdir='${docdir}'
-psdir='${docdir}'
-libdir='${exec_prefix}/lib'
-localedir='${datarootdir}/locale'
-mandir='${datarootdir}/man'
-
-ac_prev=
-ac_dashdash=
-for ac_option
-do
-  # If the previous option needs an argument, assign it.
-  if test -n "$ac_prev"; then
-    eval $ac_prev=\$ac_option
-    ac_prev=
-    continue
-  fi
-
-  case $ac_option in
-  *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
-  *=)   ac_optarg= ;;
-  *)    ac_optarg=yes ;;
-  esac
-
-  # Accept the important Cygnus configure options, so we can diagnose typos.
-
-  case $ac_dashdash$ac_option in
-  --)
-    ac_dashdash=yes ;;
-
-  -bindir | --bindir | --bindi | --bind | --bin | --bi)
-    ac_prev=bindir ;;
-  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
-    bindir=$ac_optarg ;;
-
-  -build | --build | --buil | --bui | --bu)
-    ac_prev=build_alias ;;
-  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
-    build_alias=$ac_optarg ;;
-
-  -cache-file | --cache-file | --cache-fil | --cache-fi \
-  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
-    ac_prev=cache_file ;;
-  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
-  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
-    cache_file=$ac_optarg ;;
-
-  --config-cache | -C)
-    cache_file=config.cache ;;
-
-  -datadir | --datadir | --datadi | --datad)
-    ac_prev=datadir ;;
-  -datadir=* | --datadir=* | --datadi=* | --datad=*)
-    datadir=$ac_optarg ;;
-
-  -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
-  | --dataroo | --dataro | --datar)
-    ac_prev=datarootdir ;;
-  -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
-  | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
-    datarootdir=$ac_optarg ;;
-
-  -disable-* | --disable-*)
-    ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid feature name: $ac_useropt"
-    ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-    case $ac_user_opts in
-      *"
-"enable_$ac_useropt"
-"*) ;;
-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
-        ac_unrecognized_sep=', ';;
-    esac
-    eval enable_$ac_useropt=no ;;
-
-  -docdir | --docdir | --docdi | --doc | --do)
-    ac_prev=docdir ;;
-  -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
-    docdir=$ac_optarg ;;
-
-  -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
-    ac_prev=dvidir ;;
-  -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
-    dvidir=$ac_optarg ;;
-
-  -enable-* | --enable-*)
-    ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid feature name: $ac_useropt"
-    ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-    case $ac_user_opts in
-      *"
-"enable_$ac_useropt"
-"*) ;;
-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
-        ac_unrecognized_sep=', ';;
-    esac
-    eval enable_$ac_useropt=\$ac_optarg ;;
-
-  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
-  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
-  | --exec | --exe | --ex)
-    ac_prev=exec_prefix ;;
-  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
-  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
-  | --exec=* | --exe=* | --ex=*)
-    exec_prefix=$ac_optarg ;;
-
-  -gas | --gas | --ga | --g)
-    # Obsolete; use --with-gas.
-    with_gas=yes ;;
-
-  -help | --help | --hel | --he | -h)
-    ac_init_help=long ;;
-  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
-    ac_init_help=recursive ;;
-  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
-    ac_init_help=short ;;
-
-  -host | --host | --hos | --ho)
-    ac_prev=host_alias ;;
-  -host=* | --host=* | --hos=* | --ho=*)
-    host_alias=$ac_optarg ;;
-
-  -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
-    ac_prev=htmldir ;;
-  -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
-  | --ht=*)
-    htmldir=$ac_optarg ;;
-
-  -includedir | --includedir | --includedi | --included | --include \
-  | --includ | --inclu | --incl | --inc)
-    ac_prev=includedir ;;
-  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
-  | --includ=* | --inclu=* | --incl=* | --inc=*)
-    includedir=$ac_optarg ;;
-
-  -infodir | --infodir | --infodi | --infod | --info | --inf)
-    ac_prev=infodir ;;
-  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
-    infodir=$ac_optarg ;;
-
-  -libdir | --libdir | --libdi | --libd)
-    ac_prev=libdir ;;
-  -libdir=* | --libdir=* | --libdi=* | --libd=*)
-    libdir=$ac_optarg ;;
-
-  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
-  | --libexe | --libex | --libe)
-    ac_prev=libexecdir ;;
-  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
-  | --libexe=* | --libex=* | --libe=*)
-    libexecdir=$ac_optarg ;;
-
-  -localedir | --localedir | --localedi | --localed | --locale)
-    ac_prev=localedir ;;
-  -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
-    localedir=$ac_optarg ;;
-
-  -localstatedir | --localstatedir | --localstatedi | --localstated \
-  | --localstate | --localstat | --localsta | --localst | --locals)
-    ac_prev=localstatedir ;;
-  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
-  | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
-    localstatedir=$ac_optarg ;;
-
-  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
-    ac_prev=mandir ;;
-  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
-    mandir=$ac_optarg ;;
-
-  -nfp | --nfp | --nf)
-    # Obsolete; use --without-fp.
-    with_fp=no ;;
-
-  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
-  | --no-cr | --no-c | -n)
-    no_create=yes ;;
-
-  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
-  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
-    no_recursion=yes ;;
-
-  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
-  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
-  | --oldin | --oldi | --old | --ol | --o)
-    ac_prev=oldincludedir ;;
-  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
-  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
-  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
-    oldincludedir=$ac_optarg ;;
-
-  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
-    ac_prev=prefix ;;
-  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
-    prefix=$ac_optarg ;;
-
-  -program-prefix | --program-prefix | --program-prefi | --program-pref \
-  | --program-pre | --program-pr | --program-p)
-    ac_prev=program_prefix ;;
-  -program-prefix=* | --program-prefix=* | --program-prefi=* \
-  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
-    program_prefix=$ac_optarg ;;
-
-  -program-suffix | --program-suffix | --program-suffi | --program-suff \
-  | --program-suf | --program-su | --program-s)
-    ac_prev=program_suffix ;;
-  -program-suffix=* | --program-suffix=* | --program-suffi=* \
-  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
-    program_suffix=$ac_optarg ;;
-
-  -program-transform-name | --program-transform-name \
-  | --program-transform-nam | --program-transform-na \
-  | --program-transform-n | --program-transform- \
-  | --program-transform | --program-transfor \
-  | --program-transfo | --program-transf \
-  | --program-trans | --program-tran \
-  | --progr-tra | --program-tr | --program-t)
-    ac_prev=program_transform_name ;;
-  -program-transform-name=* | --program-transform-name=* \
-  | --program-transform-nam=* | --program-transform-na=* \
-  | --program-transform-n=* | --program-transform-=* \
-  | --program-transform=* | --program-transfor=* \
-  | --program-transfo=* | --program-transf=* \
-  | --program-trans=* | --program-tran=* \
-  | --progr-tra=* | --program-tr=* | --program-t=*)
-    program_transform_name=$ac_optarg ;;
-
-  -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
-    ac_prev=pdfdir ;;
-  -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
-    pdfdir=$ac_optarg ;;
-
-  -psdir | --psdir | --psdi | --psd | --ps)
-    ac_prev=psdir ;;
-  -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
-    psdir=$ac_optarg ;;
-
-  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-  | -silent | --silent | --silen | --sile | --sil)
-    silent=yes ;;
-
-  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
-    ac_prev=sbindir ;;
-  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
-  | --sbi=* | --sb=*)
-    sbindir=$ac_optarg ;;
-
-  -sharedstatedir | --sharedstatedir | --sharedstatedi \
-  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
-  | --sharedst | --shareds | --shared | --share | --shar \
-  | --sha | --sh)
-    ac_prev=sharedstatedir ;;
-  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
-  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
-  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
-  | --sha=* | --sh=*)
-    sharedstatedir=$ac_optarg ;;
-
-  -site | --site | --sit)
-    ac_prev=site ;;
-  -site=* | --site=* | --sit=*)
-    site=$ac_optarg ;;
-
-  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
-    ac_prev=srcdir ;;
-  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
-    srcdir=$ac_optarg ;;
-
-  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
-  | --syscon | --sysco | --sysc | --sys | --sy)
-    ac_prev=sysconfdir ;;
-  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
-  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
-    sysconfdir=$ac_optarg ;;
-
-  -target | --target | --targe | --targ | --tar | --ta | --t)
-    ac_prev=target_alias ;;
-  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
-    target_alias=$ac_optarg ;;
-
-  -v | -verbose | --verbose | --verbos | --verbo | --verb)
-    verbose=yes ;;
-
-  -version | --version | --versio | --versi | --vers | -V)
-    ac_init_version=: ;;
-
-  -with-* | --with-*)
-    ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid package name: $ac_useropt"
-    ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-    case $ac_user_opts in
-      *"
-"with_$ac_useropt"
-"*) ;;
-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
-        ac_unrecognized_sep=', ';;
-    esac
-    eval with_$ac_useropt=\$ac_optarg ;;
-
-  -without-* | --without-*)
-    ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid package name: $ac_useropt"
-    ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-    case $ac_user_opts in
-      *"
-"with_$ac_useropt"
-"*) ;;
-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
-        ac_unrecognized_sep=', ';;
-    esac
-    eval with_$ac_useropt=no ;;
-
-  --x)
-    # Obsolete; use --with-x.
-    with_x=yes ;;
-
-  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
-  | --x-incl | --x-inc | --x-in | --x-i)
-    ac_prev=x_includes ;;
-  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
-  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
-    x_includes=$ac_optarg ;;
-
-  -x-libraries | --x-libraries | --x-librarie | --x-librari \
-  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
-    ac_prev=x_libraries ;;
-  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
-  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
-    x_libraries=$ac_optarg ;;
-
-  -*) as_fn_error $? "unrecognized option: \`$ac_option'
-Try \`$0 --help' for more information"
-    ;;
-
-  *=*)
-    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
-    # Reject names that are not valid shell variable names.
-    case $ac_envvar in #(
-      '' | [0-9]* | *[!_$as_cr_alnum]* )
-      as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
-    esac
-    eval $ac_envvar=\$ac_optarg
-    export $ac_envvar ;;
-
-  *)
-    # FIXME: should be removed in autoconf 3.0.
-    $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
-    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
-      $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
-    : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
-    ;;
-
-  esac
-done
-
-if test -n "$ac_prev"; then
-  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
-  as_fn_error $? "missing argument to $ac_option"
-fi
-
-if test -n "$ac_unrecognized_opts"; then
-  case $enable_option_checking in
-    no) ;;
-    fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
-    *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
-  esac
-fi
-
-# Check all directory arguments for consistency.
-for ac_var in  exec_prefix prefix bindir sbindir libexecdir datarootdir \
-               datadir sysconfdir sharedstatedir localstatedir includedir \
-               oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
-               libdir localedir mandir
-do
-  eval ac_val=\$$ac_var
-  # Remove trailing slashes.
-  case $ac_val in
-    */ )
-      ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
-      eval $ac_var=\$ac_val;;
-  esac
-  # Be sure to have absolute directory names.
-  case $ac_val in
-    [\\/$]* | ?:[\\/]* )  continue;;
-    NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
-  esac
-  as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
-done
-
-# There might be people who depend on the old broken behavior: `$host'
-# used to hold the argument of --host etc.
-# FIXME: To remove some day.
-build=$build_alias
-host=$host_alias
-target=$target_alias
-
-# FIXME: To remove some day.
-if test "x$host_alias" != x; then
-  if test "x$build_alias" = x; then
-    cross_compiling=maybe
-  elif test "x$build_alias" != "x$host_alias"; then
-    cross_compiling=yes
-  fi
-fi
-
-ac_tool_prefix=
-test -n "$host_alias" && ac_tool_prefix=$host_alias-
-
-test "$silent" = yes && exec 6>/dev/null
-
-
-ac_pwd=`pwd` && test -n "$ac_pwd" &&
-ac_ls_di=`ls -di .` &&
-ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
-  as_fn_error $? "working directory cannot be determined"
-test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
-  as_fn_error $? "pwd does not report name of working directory"
-
-
-# Find the source files, if location was not specified.
-if test -z "$srcdir"; then
-  ac_srcdir_defaulted=yes
-  # Try the directory containing this script, then the parent directory.
-  ac_confdir=`$as_dirname -- "$as_myself" ||
-$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-        X"$as_myself" : 'X\(//\)[^/]' \| \
-        X"$as_myself" : 'X\(//\)$' \| \
-        X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_myself" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)[^/].*/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\).*/{
-           s//\1/
-           q
-         }
-         s/.*/./; q'`
-  srcdir=$ac_confdir
-  if test ! -r "$srcdir/$ac_unique_file"; then
-    srcdir=..
-  fi
-else
-  ac_srcdir_defaulted=no
-fi
-if test ! -r "$srcdir/$ac_unique_file"; then
-  test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
-  as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
-fi
-ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
-ac_abs_confdir=`(
-       cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
-       pwd)`
-# When building in place, set srcdir=.
-if test "$ac_abs_confdir" = "$ac_pwd"; then
-  srcdir=.
-fi
-# Remove unnecessary trailing slashes from srcdir.
-# Double slashes in file names in object file debugging info
-# mess up M-x gdb in Emacs.
-case $srcdir in
-*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
-esac
-for ac_var in $ac_precious_vars; do
-  eval ac_env_${ac_var}_set=\${${ac_var}+set}
-  eval ac_env_${ac_var}_value=\$${ac_var}
-  eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
-  eval ac_cv_env_${ac_var}_value=\$${ac_var}
-done
-
-#
-# Report the --help message.
-#
-if test "$ac_init_help" = "long"; then
-  # Omit some internal or obsolete options to make the list less imposing.
-  # This message is too long to be a string in the A/UX 3.1 sh.
-  cat <<_ACEOF
-\`configure' configures dummy 0 to adapt to many kinds of systems.
-
-Usage: $0 [OPTION]... [VAR=VALUE]...
-
-To assign environment variables (e.g., CC, CFLAGS...), specify them as
-VAR=VALUE.  See below for descriptions of some of the useful variables.
-
-Defaults for the options are specified in brackets.
-
-Configuration:
-  -h, --help              display this help and exit
-      --help=short        display options specific to this package
-      --help=recursive    display the short help of all the included packages
-  -V, --version           display version information and exit
-  -q, --quiet, --silent   do not print \`checking ...' messages
-      --cache-file=FILE   cache test results in FILE [disabled]
-  -C, --config-cache      alias for \`--cache-file=config.cache'
-  -n, --no-create         do not create output files
-      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
-
-Installation directories:
-  --prefix=PREFIX         install architecture-independent files in PREFIX
-                          [$ac_default_prefix]
-  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
-                          [PREFIX]
-
-By default, \`make install' will install all the files in
-\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
-an installation prefix other than \`$ac_default_prefix' using \`--prefix',
-for instance \`--prefix=\$HOME'.
-
-For better control, use the options below.
-
-Fine tuning of the installation directories:
-  --bindir=DIR            user executables [EPREFIX/bin]
-  --sbindir=DIR           system admin executables [EPREFIX/sbin]
-  --libexecdir=DIR        program executables [EPREFIX/libexec]
-  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
-  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
-  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
-  --libdir=DIR            object code libraries [EPREFIX/lib]
-  --includedir=DIR        C header files [PREFIX/include]
-  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
-  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
-  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
-  --infodir=DIR           info documentation [DATAROOTDIR/info]
-  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
-  --mandir=DIR            man documentation [DATAROOTDIR/man]
-  --docdir=DIR            documentation root [DATAROOTDIR/doc/dummy]
-  --htmldir=DIR           html documentation [DOCDIR]
-  --dvidir=DIR            dvi documentation [DOCDIR]
-  --pdfdir=DIR            pdf documentation [DOCDIR]
-  --psdir=DIR             ps documentation [DOCDIR]
-_ACEOF
-
-  cat <<\_ACEOF
-
-Program names:
-  --program-prefix=PREFIX            prepend PREFIX to installed program names
-  --program-suffix=SUFFIX            append SUFFIX to installed program names
-  --program-transform-name=PROGRAM   run sed PROGRAM on installed program names
-
-System types:
-  --build=BUILD     configure for building on BUILD [guessed]
-  --host=HOST       cross-compile to build programs to run on HOST [BUILD]
-_ACEOF
-fi
-
-if test -n "$ac_init_help"; then
-  case $ac_init_help in
-     short | recursive ) echo "Configuration of dummy 0:";;
-   esac
-  cat <<\_ACEOF
-
-Optional Features:
-  --disable-option-checking  ignore unrecognized --enable/--with options
-  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
-  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
-  --enable-silent-rules   less verbose build output (undo: "make V=1")
-  --disable-silent-rules  verbose build output (undo: "make V=0")
-  --enable-dependency-tracking
-                          do not reject slow dependency extractors
-  --disable-dependency-tracking
-                          speeds up one-time build
-
-Some influential environment variables:
-  CC          C compiler command
-  CFLAGS      C compiler flags
-  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
-              nonstandard directory <lib dir>
-  LIBS        libraries to pass to the linker, e.g. -l<library>
-  CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
-              you have headers in a nonstandard directory <include dir>
-  CPP         C preprocessor
-
-Use these variables to override the choices made by `configure' or to help
-it to find libraries and programs with nonstandard names/locations.
-
-Report bugs to the package provider.
-_ACEOF
-ac_status=$?
-fi
-
-if test "$ac_init_help" = "recursive"; then
-  # If there are subdirs, report their specific --help.
-  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
-    test -d "$ac_dir" ||
-      { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
-      continue
-    ac_builddir=.
-
-case "$ac_dir" in
-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
-*)
-  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
-  # A ".." for each directory in $ac_dir_suffix.
-  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
-  case $ac_top_builddir_sub in
-  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
-  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
-  esac ;;
-esac
-ac_abs_top_builddir=$ac_pwd
-ac_abs_builddir=$ac_pwd$ac_dir_suffix
-# for backward compatibility:
-ac_top_builddir=$ac_top_build_prefix
-
-case $srcdir in
-  .)  # We are building in place.
-    ac_srcdir=.
-    ac_top_srcdir=$ac_top_builddir_sub
-    ac_abs_top_srcdir=$ac_pwd ;;
-  [\\/]* | ?:[\\/]* )  # Absolute name.
-    ac_srcdir=$srcdir$ac_dir_suffix;
-    ac_top_srcdir=$srcdir
-    ac_abs_top_srcdir=$srcdir ;;
-  *) # Relative name.
-    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
-    ac_top_srcdir=$ac_top_build_prefix$srcdir
-    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
-esac
-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
-
-    cd "$ac_dir" || { ac_status=$?; continue; }
-    # Check for guested configure.
-    if test -f "$ac_srcdir/configure.gnu"; then
-      echo &&
-      $SHELL "$ac_srcdir/configure.gnu" --help=recursive
-    elif test -f "$ac_srcdir/configure"; then
-      echo &&
-      $SHELL "$ac_srcdir/configure" --help=recursive
-    else
-      $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
-    fi || ac_status=$?
-    cd "$ac_pwd" || { ac_status=$?; break; }
-  done
-fi
-
-test -n "$ac_init_help" && exit $ac_status
-if $ac_init_version; then
-  cat <<\_ACEOF
-dummy configure 0
-generated by GNU Autoconf 2.69
-
-Copyright (C) 2012 Free Software Foundation, Inc.
-This configure script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it.
-_ACEOF
-  exit
-fi
-
-## ------------------------ ##
-## Autoconf initialization. ##
-## ------------------------ ##
-
-# ac_fn_c_try_compile LINENO
-# --------------------------
-# Try to compile conftest.$ac_ext, and return whether this succeeded.
-ac_fn_c_try_compile ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  rm -f conftest.$ac_objext
-  if { { ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compile") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_retval=1
-fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_compile
-
-# ac_fn_c_try_cpp LINENO
-# ----------------------
-# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
-ac_fn_c_try_cpp ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if { { ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } > conftest.i && {
-        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-    ac_retval=1
-fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_cpp
-
-# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
-# -------------------------------------------------------
-# Tests whether HEADER exists, giving a warning if it cannot be compiled using
-# the include files in INCLUDES and setting the cache variable VAR
-# accordingly.
-ac_fn_c_check_header_mongrel ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if eval \${$3+:} false; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-fi
-eval ac_res=\$$3
-              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-else
-  # Is the header compilable?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
-$as_echo_n "checking $2 usability... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-#include <$2>
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_header_compiler=yes
-else
-  ac_header_compiler=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
-$as_echo_n "checking $2 presence... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <$2>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  ac_header_preproc=yes
-else
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
-  yes:no: )
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
-    ;;
-  no:yes:* )
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
-    ;;
-esac
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  eval "$3=\$ac_header_compiler"
-fi
-eval ac_res=\$$3
-              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_c_check_header_mongrel
-
-# ac_fn_c_try_run LINENO
-# ----------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
-# that executables *can* be run.
-ac_fn_c_try_run ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
-  { { case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: program exited with status $ac_status" >&5
-       $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_retval=$ac_status
-fi
-  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_run
-
-# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
-# -------------------------------------------------------
-# Tests whether HEADER exists and can be compiled using the include files in
-# INCLUDES, setting the cache variable VAR accordingly.
-ac_fn_c_check_header_compile ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-#include <$2>
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  eval "$3=yes"
-else
-  eval "$3=no"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-eval ac_res=\$$3
-              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_c_check_header_compile
-
-# ac_fn_c_try_link LINENO
-# -----------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded.
-ac_fn_c_try_link ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  rm -f conftest.$ac_objext conftest$ac_exeext
-  if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-        test "$cross_compiling" = yes ||
-        test -x conftest$ac_exeext
-       }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_retval=1
-fi
-  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
-  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
-  # interfere with the next link command; also delete a directory that is
-  # left behind by Apple's compiler.  We do this before executing the actions.
-  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_link
-
-# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES
-# --------------------------------------------
-# Tries to find the compile-time value of EXPR in a program that includes
-# INCLUDES, setting VAR accordingly. Returns whether the value could be
-# computed
-ac_fn_c_compute_int ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if test "$cross_compiling" = yes; then
-    # Depending upon the size, compute the lo and hi bounds.
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-int
-main ()
-{
-static int test_array [1 - 2 * !(($2) >= 0)];
-test_array [0] = 0;
-return test_array [0];
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_lo=0 ac_mid=0
-  while :; do
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-int
-main ()
-{
-static int test_array [1 - 2 * !(($2) <= $ac_mid)];
-test_array [0] = 0;
-return test_array [0];
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_hi=$ac_mid; break
-else
-  as_fn_arith $ac_mid + 1 && ac_lo=$as_val
-                       if test $ac_lo -le $ac_mid; then
-                         ac_lo= ac_hi=
-                         break
-                       fi
-                       as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  done
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-int
-main ()
-{
-static int test_array [1 - 2 * !(($2) < 0)];
-test_array [0] = 0;
-return test_array [0];
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_hi=-1 ac_mid=-1
-  while :; do
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-int
-main ()
-{
-static int test_array [1 - 2 * !(($2) >= $ac_mid)];
-test_array [0] = 0;
-return test_array [0];
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_lo=$ac_mid; break
-else
-  as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val
-                       if test $ac_mid -le $ac_hi; then
-                         ac_lo= ac_hi=
-                         break
-                       fi
-                       as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  done
-else
-  ac_lo= ac_hi=
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-# Binary search between lo and hi bounds.
-while test "x$ac_lo" != "x$ac_hi"; do
-  as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-int
-main ()
-{
-static int test_array [1 - 2 * !(($2) <= $ac_mid)];
-test_array [0] = 0;
-return test_array [0];
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_hi=$ac_mid
-else
-  as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-done
-case $ac_lo in #((
-?*) eval "$3=\$ac_lo"; ac_retval=0 ;;
-'') ac_retval=1 ;;
-esac
-  else
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-static long int longval () { return $2; }
-static unsigned long int ulongval () { return $2; }
-#include <stdio.h>
-#include <stdlib.h>
-int
-main ()
-{
-
-  FILE *f = fopen ("conftest.val", "w");
-  if (! f)
-    return 1;
-  if (($2) < 0)
-    {
-      long int i = longval ();
-      if (i != ($2))
-       return 1;
-      fprintf (f, "%ld", i);
-    }
-  else
-    {
-      unsigned long int i = ulongval ();
-      if (i != ($2))
-       return 1;
-      fprintf (f, "%lu", i);
-    }
-  /* Do not output a trailing newline, as this causes \r\n confusion
-     on some platforms.  */
-  return ferror (f) || fclose (f) != 0;
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  echo >>conftest.val; read $3 <conftest.val; ac_retval=0
-else
-  ac_retval=1
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-rm -f conftest.val
-
-  fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_c_compute_int
-
-# ac_fn_c_check_func LINENO FUNC VAR
-# ----------------------------------
-# Tests whether FUNC exists, setting the cache variable VAR accordingly
-ac_fn_c_check_func ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $2 innocuous_$2
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $2 (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $2
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char $2 ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined __stub_$2 || defined __stub___$2
-choke me
-#endif
-
-int
-main ()
-{
-return $2 ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  eval "$3=yes"
-else
-  eval "$3=no"
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-fi
-eval ac_res=\$$3
-              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_c_check_func
-
-# ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES
-# ---------------------------------------------
-# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR
-# accordingly.
-ac_fn_c_check_decl ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  as_decl_name=`echo $2|sed 's/ *(.*//'`
-  as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'`
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5
-$as_echo_n "checking whether $as_decl_name is declared... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-int
-main ()
-{
-#ifndef $as_decl_name
-#ifdef __cplusplus
-  (void) $as_decl_use;
-#else
-  (void) $as_decl_name;
-#endif
-#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  eval "$3=yes"
-else
-  eval "$3=no"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-eval ac_res=\$$3
-              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_c_check_decl
-
-# ac_fn_c_check_type LINENO TYPE VAR INCLUDES
-# -------------------------------------------
-# Tests whether TYPE exists after having included INCLUDES, setting cache
-# variable VAR accordingly.
-ac_fn_c_check_type ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  eval "$3=no"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-int
-main ()
-{
-if (sizeof ($2))
-        return 0;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-int
-main ()
-{
-if (sizeof (($2)))
-           return 0;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
-else
-  eval "$3=yes"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-eval ac_res=\$$3
-              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_c_check_type
-cat >config.log <<_ACEOF
-This file contains any messages produced by compilers while
-running configure, to aid debugging if configure makes a mistake.
-
-It was created by dummy $as_me 0, which was
-generated by GNU Autoconf 2.69.  Invocation command line was
-
-  $ $0 $@
-
-_ACEOF
-exec 5>>config.log
-{
-cat <<_ASUNAME
-## --------- ##
-## Platform. ##
-## --------- ##
-
-hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
-
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
-/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
-
-/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
-/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
-/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
-/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
-/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
-/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
-
-_ASUNAME
-
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    $as_echo "PATH: $as_dir"
-  done
-IFS=$as_save_IFS
-
-} >&5
-
-cat >&5 <<_ACEOF
-
-
-## ----------- ##
-## Core tests. ##
-## ----------- ##
-
-_ACEOF
-
-
-# Keep a trace of the command line.
-# Strip out --no-create and --no-recursion so they do not pile up.
-# Strip out --silent because we don't want to record it for future runs.
-# Also quote any args containing shell meta-characters.
-# Make two passes to allow for proper duplicate-argument suppression.
-ac_configure_args=
-ac_configure_args0=
-ac_configure_args1=
-ac_must_keep_next=false
-for ac_pass in 1 2
-do
-  for ac_arg
-  do
-    case $ac_arg in
-    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
-    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-    | -silent | --silent | --silen | --sile | --sil)
-      continue ;;
-    *\'*)
-      ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
-    esac
-    case $ac_pass in
-    1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
-    2)
-      as_fn_append ac_configure_args1 " '$ac_arg'"
-      if test $ac_must_keep_next = true; then
-       ac_must_keep_next=false # Got value, back to normal.
-      else
-       case $ac_arg in
-         *=* | --config-cache | -C | -disable-* | --disable-* \
-         | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
-         | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
-         | -with-* | --with-* | -without-* | --without-* | --x)
-           case "$ac_configure_args0 " in
-             "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
-           esac
-           ;;
-         -* ) ac_must_keep_next=true ;;
-       esac
-      fi
-      as_fn_append ac_configure_args " '$ac_arg'"
-      ;;
-    esac
-  done
-done
-{ ac_configure_args0=; unset ac_configure_args0;}
-{ ac_configure_args1=; unset ac_configure_args1;}
-
-# When interrupted or exit'd, cleanup temporary files, and complete
-# config.log.  We remove comments because anyway the quotes in there
-# would cause problems or look ugly.
-# WARNING: Use '\'' to represent an apostrophe within the trap.
-# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
-trap 'exit_status=$?
-  # Save into config.log some information that might help in debugging.
-  {
-    echo
-
-    $as_echo "## ---------------- ##
-## Cache variables. ##
-## ---------------- ##"
-    echo
-    # The following way of writing the cache mishandles newlines in values,
-(
-  for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
-    eval ac_val=\$$ac_var
-    case $ac_val in #(
-    *${as_nl}*)
-      case $ac_var in #(
-      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
-      esac
-      case $ac_var in #(
-      _ | IFS | as_nl) ;; #(
-      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
-      *) { eval $ac_var=; unset $ac_var;} ;;
-      esac ;;
-    esac
-  done
-  (set) 2>&1 |
-    case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
-    *${as_nl}ac_space=\ *)
-      sed -n \
-       "s/'\''/'\''\\\\'\'''\''/g;
-         s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
-      ;; #(
-    *)
-      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
-      ;;
-    esac |
-    sort
-)
-    echo
-
-    $as_echo "## ----------------- ##
-## Output variables. ##
-## ----------------- ##"
-    echo
-    for ac_var in $ac_subst_vars
-    do
-      eval ac_val=\$$ac_var
-      case $ac_val in
-      *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
-      esac
-      $as_echo "$ac_var='\''$ac_val'\''"
-    done | sort
-    echo
-
-    if test -n "$ac_subst_files"; then
-      $as_echo "## ------------------- ##
-## File substitutions. ##
-## ------------------- ##"
-      echo
-      for ac_var in $ac_subst_files
-      do
-       eval ac_val=\$$ac_var
-       case $ac_val in
-       *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
-       esac
-       $as_echo "$ac_var='\''$ac_val'\''"
-      done | sort
-      echo
-    fi
-
-    if test -s confdefs.h; then
-      $as_echo "## ----------- ##
-## confdefs.h. ##
-## ----------- ##"
-      echo
-      cat confdefs.h
-      echo
-    fi
-    test "$ac_signal" != 0 &&
-      $as_echo "$as_me: caught signal $ac_signal"
-    $as_echo "$as_me: exit $exit_status"
-  } >&5
-  rm -f core *.core core.conftest.* &&
-    rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
-    exit $exit_status
-' 0
-for ac_signal in 1 2 13 15; do
-  trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
-done
-ac_signal=0
-
-# confdefs.h avoids OS command line length limits that DEFS can exceed.
-rm -f -r conftest* confdefs.h
-
-$as_echo "/* confdefs.h */" > confdefs.h
-
-# Predefined preprocessor variables.
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_NAME "$PACKAGE_NAME"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_VERSION "$PACKAGE_VERSION"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_STRING "$PACKAGE_STRING"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_URL "$PACKAGE_URL"
-_ACEOF
-
-
-# Let the site file select an alternate cache file if it wants to.
-# Prefer an explicitly selected file to automatically selected ones.
-ac_site_file1=NONE
-ac_site_file2=NONE
-if test -n "$CONFIG_SITE"; then
-  # We do not want a PATH search for config.site.
-  case $CONFIG_SITE in #((
-    -*)  ac_site_file1=./$CONFIG_SITE;;
-    */*) ac_site_file1=$CONFIG_SITE;;
-    *)   ac_site_file1=./$CONFIG_SITE;;
-  esac
-elif test "x$prefix" != xNONE; then
-  ac_site_file1=$prefix/share/config.site
-  ac_site_file2=$prefix/etc/config.site
-else
-  ac_site_file1=$ac_default_prefix/share/config.site
-  ac_site_file2=$ac_default_prefix/etc/config.site
-fi
-for ac_site_file in "$ac_site_file1" "$ac_site_file2"
-do
-  test "x$ac_site_file" = xNONE && continue
-  if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
-$as_echo "$as_me: loading site script $ac_site_file" >&6;}
-    sed 's/^/| /' "$ac_site_file" >&5
-    . "$ac_site_file" \
-      || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "failed to load site script $ac_site_file
-See \`config.log' for more details" "$LINENO" 5; }
-  fi
-done
-
-if test -r "$cache_file"; then
-  # Some versions of bash will fail to source /dev/null (special files
-  # actually), so we avoid doing that.  DJGPP emulates it as a regular file.
-  if test /dev/null != "$cache_file" && test -f "$cache_file"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
-$as_echo "$as_me: loading cache $cache_file" >&6;}
-    case $cache_file in
-      [\\/]* | ?:[\\/]* ) . "$cache_file";;
-      *)                      . "./$cache_file";;
-    esac
-  fi
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
-$as_echo "$as_me: creating cache $cache_file" >&6;}
-  >$cache_file
-fi
-
-gl_header_list="$gl_header_list wchar.h"
-gl_header_list="$gl_header_list stdint.h"
-gl_header_list="$gl_header_list inttypes.h"
-gl_header_list="$gl_header_list unistd.h"
-gl_func_list="$gl_func_list symlink"
-gl_header_list="$gl_header_list features.h"
-gl_func_list="$gl_func_list iswcntrl"
-gl_header_list="$gl_header_list wctype.h"
-gl_func_list="$gl_func_list wcwidth"
-# Check that the precious variables saved in the cache have kept the same
-# value.
-ac_cache_corrupted=false
-for ac_var in $ac_precious_vars; do
-  eval ac_old_set=\$ac_cv_env_${ac_var}_set
-  eval ac_new_set=\$ac_env_${ac_var}_set
-  eval ac_old_val=\$ac_cv_env_${ac_var}_value
-  eval ac_new_val=\$ac_env_${ac_var}_value
-  case $ac_old_set,$ac_new_set in
-    set,)
-      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
-      ac_cache_corrupted=: ;;
-    ,set)
-      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
-      ac_cache_corrupted=: ;;
-    ,);;
-    *)
-      if test "x$ac_old_val" != "x$ac_new_val"; then
-       # differences in whitespace do not lead to failure.
-       ac_old_val_w=`echo x $ac_old_val`
-       ac_new_val_w=`echo x $ac_new_val`
-       if test "$ac_old_val_w" != "$ac_new_val_w"; then
-         { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
-$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
-         ac_cache_corrupted=:
-       else
-         { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
-$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
-         eval $ac_var=\$ac_old_val
-       fi
-       { $as_echo "$as_me:${as_lineno-$LINENO}:   former value:  \`$ac_old_val'" >&5
-$as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}
-       { $as_echo "$as_me:${as_lineno-$LINENO}:   current value: \`$ac_new_val'" >&5
-$as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}
-      fi;;
-  esac
-  # Pass precious variables to config.status.
-  if test "$ac_new_set" = set; then
-    case $ac_new_val in
-    *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
-    *) ac_arg=$ac_var=$ac_new_val ;;
-    esac
-    case " $ac_configure_args " in
-      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
-      *) as_fn_append ac_configure_args " '$ac_arg'" ;;
-    esac
-  fi
-done
-if $ac_cache_corrupted; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-  { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
-$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
-  as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
-fi
-## -------------------- ##
-## Main body of script. ##
-## -------------------- ##
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-ac_aux_dir=
-for ac_dir in build-aux "$srcdir"/build-aux; do
-  if test -f "$ac_dir/install-sh"; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/install-sh -c"
-    break
-  elif test -f "$ac_dir/install.sh"; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/install.sh -c"
-    break
-  elif test -f "$ac_dir/shtool"; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/shtool install -c"
-    break
-  fi
-done
-if test -z "$ac_aux_dir"; then
-  as_fn_error $? "cannot find install-sh, install.sh, or shtool in build-aux \"$srcdir\"/build-aux" "$LINENO" 5
-fi
-
-# These three variables are undocumented and unsupported,
-# and are intended to be withdrawn in a future Autoconf release.
-# They can cause serious problems if a builder's source tree is in a directory
-# whose full name contains unusual characters.
-ac_config_guess="$SHELL $ac_aux_dir/config.guess"  # Please don't use this var.
-ac_config_sub="$SHELL $ac_aux_dir/config.sub"  # Please don't use this var.
-ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
-
-
-am__api_version='1.14'
-
-# Find a good install program.  We prefer a C program (faster),
-# so one script is as good as another.  But avoid the broken or
-# incompatible versions:
-# SysV /etc/install, /usr/sbin/install
-# SunOS /usr/etc/install
-# IRIX /sbin/install
-# AIX /bin/install
-# AmigaOS /C/install, which installs bootblocks on floppy discs
-# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
-# AFS /usr/afsws/bin/install, which mishandles nonexistent args
-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
-# OS/2's system install, which has a completely different semantic
-# ./install, which can be erroneously created by make from ./install.sh.
-# Reject install programs that cannot install multiple files.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
-$as_echo_n "checking for a BSD-compatible install... " >&6; }
-if test -z "$INSTALL"; then
-if ${ac_cv_path_install+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    # Account for people who put trailing slashes in PATH elements.
-case $as_dir/ in #((
-  ./ | .// | /[cC]/* | \
-  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
-  ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
-  /usr/ucb/* ) ;;
-  *)
-    # OSF1 and SCO ODT 3.0 have their own names for install.
-    # Don't use installbsd from OSF since it installs stuff as root
-    # by default.
-    for ac_prog in ginstall scoinst install; do
-      for ac_exec_ext in '' $ac_executable_extensions; do
-       if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
-         if test $ac_prog = install &&
-           grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
-           # AIX install.  It has an incompatible calling convention.
-           :
-         elif test $ac_prog = install &&
-           grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
-           # program-specific install script used by HP pwplus--don't use.
-           :
-         else
-           rm -rf conftest.one conftest.two conftest.dir
-           echo one > conftest.one
-           echo two > conftest.two
-           mkdir conftest.dir
-           if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
-             test -s conftest.one && test -s conftest.two &&
-             test -s conftest.dir/conftest.one &&
-             test -s conftest.dir/conftest.two
-           then
-             ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
-             break 3
-           fi
-         fi
-       fi
-      done
-    done
-    ;;
-esac
-
-  done
-IFS=$as_save_IFS
-
-rm -rf conftest.one conftest.two conftest.dir
-
-fi
-  if test "${ac_cv_path_install+set}" = set; then
-    INSTALL=$ac_cv_path_install
-  else
-    # As a last resort, use the slow shell script.  Don't cache a
-    # value for INSTALL within a source directory, because that will
-    # break other packages using the cache if that directory is
-    # removed, or if the value is a relative name.
-    INSTALL=$ac_install_sh
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
-$as_echo "$INSTALL" >&6; }
-
-# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
-# It thinks the first close brace ends the variable substitution.
-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
-
-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
-
-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
-$as_echo_n "checking whether build environment is sane... " >&6; }
-# Reject unsafe characters in $srcdir or the absolute working directory
-# name.  Accept space and tab only in the latter.
-am_lf='
-'
-case `pwd` in
-  *[\\\"\#\$\&\'\`$am_lf]*)
-    as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;;
-esac
-case $srcdir in
-  *[\\\"\#\$\&\'\`$am_lf\ \    ]*)
-    as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;;
-esac
-
-# Do 'set' in a subshell so we don't clobber the current shell's
-# arguments.  Must try -L first in case configure is actually a
-# symlink; some systems play weird games with the mod time of symlinks
-# (eg FreeBSD returns the mod time of the symlink's containing
-# directory).
-if (
-   am_has_slept=no
-   for am_try in 1 2; do
-     echo "timestamp, slept: $am_has_slept" > conftest.file
-     set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
-     if test "$*" = "X"; then
-       # -L didn't work.
-       set X `ls -t "$srcdir/configure" conftest.file`
-     fi
-     if test "$*" != "X $srcdir/configure conftest.file" \
-       && test "$*" != "X conftest.file $srcdir/configure"; then
-
-       # If neither matched, then we have a broken ls.  This can happen
-       # if, for instance, CONFIG_SHELL is bash and it inherits a
-       # broken ls alias from the environment.  This has actually
-       # happened.  Such a system could not be considered "sane".
-       as_fn_error $? "ls -t appears to fail.  Make sure there is not a broken
-  alias in your environment" "$LINENO" 5
-     fi
-     if test "$2" = conftest.file || test $am_try -eq 2; then
-       break
-     fi
-     # Just in case.
-     sleep 1
-     am_has_slept=yes
-   done
-   test "$2" = conftest.file
-   )
-then
-   # Ok.
-   :
-else
-   as_fn_error $? "newly created file is older than distributed files!
-Check your system clock" "$LINENO" 5
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-# If we didn't sleep, we still need to ensure time stamps of config.status and
-# generated files are strictly newer.
-am_sleep_pid=
-if grep 'slept: no' conftest.file >/dev/null 2>&1; then
-  ( sleep 1 ) &
-  am_sleep_pid=$!
-fi
-
-rm -f conftest.file
-
-test "$program_prefix" != NONE &&
-  program_transform_name="s&^&$program_prefix&;$program_transform_name"
-# Use a double $ so make ignores it.
-test "$program_suffix" != NONE &&
-  program_transform_name="s&\$&$program_suffix&;$program_transform_name"
-# Double any \ or $.
-# By default was `s,x,x', remove it if useless.
-ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
-program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
-
-# expand $ac_aux_dir to an absolute path
-am_aux_dir=`cd $ac_aux_dir && pwd`
-
-if test x"${MISSING+set}" != xset; then
-  case $am_aux_dir in
-  *\ * | *\    *)
-    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
-  *)
-    MISSING="\${SHELL} $am_aux_dir/missing" ;;
-  esac
-fi
-# Use eval to expand $SHELL
-if eval "$MISSING --is-lightweight"; then
-  am_missing_run="$MISSING "
-else
-  am_missing_run=
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5
-$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;}
-fi
-
-if test x"${install_sh}" != xset; then
-  case $am_aux_dir in
-  *\ * | *\    *)
-    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
-  *)
-    install_sh="\${SHELL} $am_aux_dir/install-sh"
-  esac
-fi
-
-# Installed binaries are usually stripped using 'strip' when the user
-# run "make install-strip".  However 'strip' might not be the right
-# tool to use in cross-compilation environments, therefore Automake
-# will honor the 'STRIP' environment variable to overrule this program.
-if test "$cross_compiling" != no; then
-  if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
-set dummy ${ac_tool_prefix}strip; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_STRIP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$STRIP"; then
-  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-STRIP=$ac_cv_prog_STRIP
-if test -n "$STRIP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
-$as_echo "$STRIP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_STRIP"; then
-  ac_ct_STRIP=$STRIP
-  # Extract the first word of "strip", so it can be a program name with args.
-set dummy strip; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_STRIP"; then
-  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_STRIP="strip"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
-if test -n "$ac_ct_STRIP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
-$as_echo "$ac_ct_STRIP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_STRIP" = x; then
-    STRIP=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    STRIP=$ac_ct_STRIP
-  fi
-else
-  STRIP="$ac_cv_prog_STRIP"
-fi
-
-fi
-INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
-$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
-if test -z "$MKDIR_P"; then
-  if ${ac_cv_path_mkdir+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in mkdir gmkdir; do
-        for ac_exec_ext in '' $ac_executable_extensions; do
-          as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue
-          case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
-            'mkdir (GNU coreutils) '* | \
-            'mkdir (coreutils) '* | \
-            'mkdir (fileutils) '4.1*)
-              ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
-              break 3;;
-          esac
-        done
-       done
-  done
-IFS=$as_save_IFS
-
-fi
-
-  test -d ./--version && rmdir ./--version
-  if test "${ac_cv_path_mkdir+set}" = set; then
-    MKDIR_P="$ac_cv_path_mkdir -p"
-  else
-    # As a last resort, use the slow shell script.  Don't cache a
-    # value for MKDIR_P within a source directory, because that will
-    # break other packages using the cache if that directory is
-    # removed, or if the value is a relative name.
-    MKDIR_P="$ac_install_sh -d"
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
-$as_echo "$MKDIR_P" >&6; }
-
-for ac_prog in gawk mawk nawk awk
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_AWK+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$AWK"; then
-  ac_cv_prog_AWK="$AWK" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_AWK="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-AWK=$ac_cv_prog_AWK
-if test -n "$AWK"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
-$as_echo "$AWK" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$AWK" && break
-done
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
-$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
-set x ${MAKE-make}
-ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
-if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.make <<\_ACEOF
-SHELL = /bin/sh
-all:
-       @echo '@@@%%%=$(MAKE)=@@@%%%'
-_ACEOF
-# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
-case `${MAKE-make} -f conftest.make 2>/dev/null` in
-  *@@@%%%=?*=@@@%%%*)
-    eval ac_cv_prog_make_${ac_make}_set=yes;;
-  *)
-    eval ac_cv_prog_make_${ac_make}_set=no;;
-esac
-rm -f conftest.make
-fi
-if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-  SET_MAKE=
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-  SET_MAKE="MAKE=${MAKE-make}"
-fi
-
-rm -rf .tst 2>/dev/null
-mkdir .tst 2>/dev/null
-if test -d .tst; then
-  am__leading_dot=.
-else
-  am__leading_dot=_
-fi
-rmdir .tst 2>/dev/null
-
-# Check whether --enable-silent-rules was given.
-if test "${enable_silent_rules+set}" = set; then :
-  enableval=$enable_silent_rules;
-fi
-
-case $enable_silent_rules in # (((
-  yes) AM_DEFAULT_VERBOSITY=0;;
-   no) AM_DEFAULT_VERBOSITY=1;;
-    *) AM_DEFAULT_VERBOSITY=1;;
-esac
-am_make=${MAKE-make}
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
-$as_echo_n "checking whether $am_make supports nested variables... " >&6; }
-if ${am_cv_make_support_nested_variables+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if $as_echo 'TRUE=$(BAR$(V))
-BAR0=false
-BAR1=true
-V=1
-am__doit:
-       @$(TRUE)
-.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then
-  am_cv_make_support_nested_variables=yes
-else
-  am_cv_make_support_nested_variables=no
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
-$as_echo "$am_cv_make_support_nested_variables" >&6; }
-if test $am_cv_make_support_nested_variables = yes; then
-    AM_V='$(V)'
-  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
-else
-  AM_V=$AM_DEFAULT_VERBOSITY
-  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
-fi
-AM_BACKSLASH='\'
-
-if test "`cd $srcdir && pwd`" != "`pwd`"; then
-  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
-  # is not polluted with repeated "-I."
-  am__isrc=' -I$(srcdir)'
-  # test to see if srcdir already configured
-  if test -f $srcdir/config.status; then
-    as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
-  fi
-fi
-
-# test whether we have cygpath
-if test -z "$CYGPATH_W"; then
-  if (cygpath --version) >/dev/null 2>/dev/null; then
-    CYGPATH_W='cygpath -w'
-  else
-    CYGPATH_W=echo
-  fi
-fi
-
-
-# Define the identity of the package.
- PACKAGE='dummy'
- VERSION='0'
-
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE "$PACKAGE"
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define VERSION "$VERSION"
-_ACEOF
-
-# Some tools Automake needs.
-
-ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
-
-
-AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
-
-
-AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
-
-
-AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
-
-
-MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
-
-# For better backward compatibility.  To be removed once Automake 1.9.x
-# dies out for good.  For more background, see:
-# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
-# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
-mkdir_p='$(MKDIR_P)'
-
-# We need awk for the "check" target.  The system "awk" is bad on
-# some platforms.
-# Always define AMTAR for backward compatibility.  Yes, it's still used
-# in the wild :-(  We should find a proper way to deprecate it ...
-AMTAR='$${TAR-tar}'
-
-
-# We'll loop over all known methods to create a tar archive until one works.
-_am_tools='gnutar  pax cpio none'
-
-am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
-
-
-
-
-
-
-# POSIX will say in a future version that running "rm -f" with no argument
-# is OK; and we want to be able to make that assumption in our Makefile
-# recipes.  So use an aggressive probe to check that the usage we want is
-# actually supported "in the wild" to an acceptable degree.
-# See automake bug#10828.
-# To make any issue more visible, cause the running configure to be aborted
-# by default if the 'rm' program in use doesn't match our expectations; the
-# user can still override this though.
-if rm -f && rm -fr && rm -rf; then : OK; else
-  cat >&2 <<'END'
-Oops!
-
-Your 'rm' program seems unable to run without file operands specified
-on the command line, even when the '-f' option is present.  This is contrary
-to the behaviour of most rm programs out there, and not conforming with
-the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
-
-Please tell bug-automake@gnu.org about your system, including the value
-of your $PATH and any error possibly output before this message.  This
-can help us improve future automake versions.
-
-END
-  if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
-    echo 'Configuration will proceed anyway, since you have set the' >&2
-    echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
-    echo >&2
-  else
-    cat >&2 <<'END'
-Aborting the configuration process, to ensure you take notice of the issue.
-
-You can download and install GNU coreutils to get an 'rm' implementation
-that behaves properly: <http://www.gnu.org/software/coreutils/>.
-
-If you want to complete the configuration process using your problematic
-'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
-to "yes", and re-run configure.
-
-END
-    as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5
-  fi
-fi
-
-ac_config_headers="$ac_config_headers config.h"
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CC="${ac_tool_prefix}gcc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_CC"; then
-  ac_ct_CC=$CC
-  # Extract the first word of "gcc", so it can be a program name with args.
-set dummy gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CC"; then
-  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_CC="gcc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_CC" = x; then
-    CC=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    CC=$ac_ct_CC
-  fi
-else
-  CC="$ac_cv_prog_CC"
-fi
-
-if test -z "$CC"; then
-          if test -n "$ac_tool_prefix"; then
-    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CC="${ac_tool_prefix}cc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  fi
-fi
-if test -z "$CC"; then
-  # Extract the first word of "cc", so it can be a program name with args.
-set dummy cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-  ac_prog_rejected=no
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
-       ac_prog_rejected=yes
-       continue
-     fi
-    ac_cv_prog_CC="cc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-if test $ac_prog_rejected = yes; then
-  # We found a bogon in the path, so make sure we never use it.
-  set dummy $ac_cv_prog_CC
-  shift
-  if test $# != 0; then
-    # We chose a different compiler from the bogus one.
-    # However, it has the same basename, so the bogon will be chosen
-    # first if we set CC to just the basename; use the full file name.
-    shift
-    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
-  fi
-fi
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$CC"; then
-  if test -n "$ac_tool_prefix"; then
-  for ac_prog in cl.exe
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$CC" && break
-  done
-fi
-if test -z "$CC"; then
-  ac_ct_CC=$CC
-  for ac_prog in cl.exe
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CC"; then
-  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_CC="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_CC" && break
-done
-
-  if test "x$ac_ct_CC" = x; then
-    CC=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    CC=$ac_ct_CC
-  fi
-fi
-
-fi
-
-
-test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "no acceptable C compiler found in \$PATH
-See \`config.log' for more details" "$LINENO" 5; }
-
-# Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
-  { { ac_try="$ac_compiler $ac_option >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    sed '10a\
-... rest of stderr output deleted ...
-         10q' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-  fi
-  rm -f conftest.er1 conftest.err
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-done
-
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
-# Try to create an executable without -o first, disregard a.out.
-# It will help us diagnose broken compilers, and finding out an intuition
-# of exeext.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
-$as_echo_n "checking whether the C compiler works... " >&6; }
-ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
-
-# The possible output files:
-ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
-
-ac_rmfiles=
-for ac_file in $ac_files
-do
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
-    * ) ac_rmfiles="$ac_rmfiles $ac_file";;
-  esac
-done
-rm -f $ac_rmfiles
-
-if { { ac_try="$ac_link_default"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link_default") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
-  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
-# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
-# in a Makefile.  We should not override ac_cv_exeext if it was cached,
-# so that the user can short-circuit this test for compilers unknown to
-# Autoconf.
-for ac_file in $ac_files ''
-do
-  test -f "$ac_file" || continue
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
-       ;;
-    [ab].out )
-       # We found the default executable, but exeext='' is most
-       # certainly right.
-       break;;
-    *.* )
-       if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
-       then :; else
-          ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
-       fi
-       # We set ac_cv_exeext here because the later test for it is not
-       # safe: cross compilers may not add the suffix if given an `-o'
-       # argument, so we may need to know it at that point already.
-       # Even if this section looks crufty: it has the advantage of
-       # actually working.
-       break;;
-    * )
-       break;;
-  esac
-done
-test "$ac_cv_exeext" = no && ac_cv_exeext=
-
-else
-  ac_file=''
-fi
-if test -z "$ac_file"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-$as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error 77 "C compiler cannot create executables
-See \`config.log' for more details" "$LINENO" 5; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
-$as_echo_n "checking for C compiler default output file name... " >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
-$as_echo "$ac_file" >&6; }
-ac_exeext=$ac_cv_exeext
-
-rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
-ac_clean_files=$ac_clean_files_save
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
-$as_echo_n "checking for suffix of executables... " >&6; }
-if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
-  # If both `conftest.exe' and `conftest' are `present' (well, observable)
-# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
-# work properly (i.e., refer to `conftest.exe'), while it won't with
-# `rm'.
-for ac_file in conftest.exe conftest conftest.*; do
-  test -f "$ac_file" || continue
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
-    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
-         break;;
-    * ) break;;
-  esac
-done
-else
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-rm -f conftest conftest$ac_cv_exeext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
-$as_echo "$ac_cv_exeext" >&6; }
-
-rm -f conftest.$ac_ext
-EXEEXT=$ac_cv_exeext
-ac_exeext=$EXEEXT
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdio.h>
-int
-main ()
-{
-FILE *f = fopen ("conftest.out", "w");
- return ferror (f) || fclose (f) != 0;
-
-  ;
-  return 0;
-}
-_ACEOF
-ac_clean_files="$ac_clean_files conftest.out"
-# Check that the compiler produces executables we can run.  If not, either
-# the compiler is broken, or we cross compile.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
-$as_echo_n "checking whether we are cross compiling... " >&6; }
-if test "$cross_compiling" != yes; then
-  { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-  if { ac_try='./conftest$ac_cv_exeext'
-  { { case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; }; then
-    cross_compiling=no
-  else
-    if test "$cross_compiling" = maybe; then
-       cross_compiling=yes
-    else
-       { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot run C compiled programs.
-If you meant to cross compile, use \`--host'.
-See \`config.log' for more details" "$LINENO" 5; }
-    fi
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
-$as_echo "$cross_compiling" >&6; }
-
-rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
-ac_clean_files=$ac_clean_files_save
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
-$as_echo_n "checking for suffix of object files... " >&6; }
-if ${ac_cv_objext+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.o conftest.obj
-if { { ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compile") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
-  for ac_file in conftest.o conftest.obj conftest.*; do
-  test -f "$ac_file" || continue;
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
-    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
-       break;;
-  esac
-done
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot compute suffix of object files: cannot compile
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-rm -f conftest.$ac_cv_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
-$as_echo "$ac_cv_objext" >&6; }
-OBJEXT=$ac_cv_objext
-ac_objext=$OBJEXT
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
-$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
-if ${ac_cv_c_compiler_gnu+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-#ifndef __GNUC__
-       choke me
-#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_compiler_gnu=yes
-else
-  ac_compiler_gnu=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_c_compiler_gnu=$ac_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
-$as_echo "$ac_cv_c_compiler_gnu" >&6; }
-if test $ac_compiler_gnu = yes; then
-  GCC=yes
-else
-  GCC=
-fi
-ac_test_CFLAGS=${CFLAGS+set}
-ac_save_CFLAGS=$CFLAGS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
-$as_echo_n "checking whether $CC accepts -g... " >&6; }
-if ${ac_cv_prog_cc_g+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_save_c_werror_flag=$ac_c_werror_flag
-   ac_c_werror_flag=yes
-   ac_cv_prog_cc_g=no
-   CFLAGS="-g"
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_g=yes
-else
-  CFLAGS=""
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
-else
-  ac_c_werror_flag=$ac_save_c_werror_flag
-        CFLAGS="-g"
-        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_g=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-   ac_c_werror_flag=$ac_save_c_werror_flag
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
-$as_echo "$ac_cv_prog_cc_g" >&6; }
-if test "$ac_test_CFLAGS" = set; then
-  CFLAGS=$ac_save_CFLAGS
-elif test $ac_cv_prog_cc_g = yes; then
-  if test "$GCC" = yes; then
-    CFLAGS="-g -O2"
-  else
-    CFLAGS="-g"
-  fi
-else
-  if test "$GCC" = yes; then
-    CFLAGS="-O2"
-  else
-    CFLAGS=
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
-$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
-if ${ac_cv_prog_cc_c89+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_prog_cc_c89=no
-ac_save_CC=$CC
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdarg.h>
-#include <stdio.h>
-struct stat;
-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
-struct buf { int x; };
-FILE * (*rcsopen) (struct buf *, struct stat *, int);
-static char *e (p, i)
-     char **p;
-     int i;
-{
-  return p[i];
-}
-static char *f (char * (*g) (char **, int), char **p, ...)
-{
-  char *s;
-  va_list v;
-  va_start (v,p);
-  s = g (p, va_arg (v,int));
-  va_end (v);
-  return s;
-}
-
-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
-   function prototypes and stuff, but not '\xHH' hex character constants.
-   These don't provoke an error unfortunately, instead are silently treated
-   as 'x'.  The following induces an error, until -std is added to get
-   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
-   array size at least.  It's necessary to write '\x00'==0 to get something
-   that's true only with -std.  */
-int osf4_cc_array ['\x00' == 0 ? 1 : -1];
-
-/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
-   inside strings and character constants.  */
-#define FOO(x) 'x'
-int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
-
-int test (int i, double x);
-struct s1 {int (*f) (int a);};
-struct s2 {int (*f) (double a);};
-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
-int argc;
-char **argv;
-int
-main ()
-{
-return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
-  ;
-  return 0;
-}
-_ACEOF
-for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
-       -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
-do
-  CC="$ac_save_CC $ac_arg"
-  if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_c89=$ac_arg
-fi
-rm -f core conftest.err conftest.$ac_objext
-  test "x$ac_cv_prog_cc_c89" != "xno" && break
-done
-rm -f conftest.$ac_ext
-CC=$ac_save_CC
-
-fi
-# AC_CACHE_VAL
-case "x$ac_cv_prog_cc_c89" in
-  x)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
-$as_echo "none needed" >&6; } ;;
-  xno)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
-$as_echo "unsupported" >&6; } ;;
-  *)
-    CC="$CC $ac_cv_prog_cc_c89"
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
-$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
-esac
-if test "x$ac_cv_prog_cc_c89" != xno; then :
-
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5
-$as_echo_n "checking whether $CC understands -c and -o together... " >&6; }
-if ${am_cv_prog_cc_c_o+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-  # Make sure it works both with $CC and with simple cc.
-  # Following AC_PROG_CC_C_O, we do the test twice because some
-  # compilers refuse to overwrite an existing .o file with -o,
-  # though they will create one.
-  am_cv_prog_cc_c_o=yes
-  for am_i in 1 2; do
-    if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5
-   ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5
-   ac_status=$?
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   (exit $ac_status); } \
-         && test -f conftest2.$ac_objext; then
-      : OK
-    else
-      am_cv_prog_cc_c_o=no
-      break
-    fi
-  done
-  rm -f core conftest*
-  unset am_i
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5
-$as_echo "$am_cv_prog_cc_c_o" >&6; }
-if test "$am_cv_prog_cc_c_o" != yes; then
-   # Losing compiler, so override with the script.
-   # FIXME: It is wrong to rewrite CC.
-   # But if we don't then we get into trouble of one sort or another.
-   # A longer-term fix would be to have automake use am__CC in this case,
-   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
-   CC="$am_aux_dir/compile $CC"
-fi
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-DEPDIR="${am__leading_dot}deps"
-
-ac_config_commands="$ac_config_commands depfiles"
-
-
-am_make=${MAKE-make}
-cat > confinc << 'END'
-am__doit:
-       @echo this is the am__doit target
-.PHONY: am__doit
-END
-# If we don't find an include directive, just comment out the code.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5
-$as_echo_n "checking for style of include used by $am_make... " >&6; }
-am__include="#"
-am__quote=
-_am_result=none
-# First try GNU make style include.
-echo "include confinc" > confmf
-# Ignore all kinds of additional output from 'make'.
-case `$am_make -s -f confmf 2> /dev/null` in #(
-*the\ am__doit\ target*)
-  am__include=include
-  am__quote=
-  _am_result=GNU
-  ;;
-esac
-# Now try BSD make style include.
-if test "$am__include" = "#"; then
-   echo '.include "confinc"' > confmf
-   case `$am_make -s -f confmf 2> /dev/null` in #(
-   *the\ am__doit\ target*)
-     am__include=.include
-     am__quote="\""
-     _am_result=BSD
-     ;;
-   esac
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5
-$as_echo "$_am_result" >&6; }
-rm -f confinc confmf
-
-# Check whether --enable-dependency-tracking was given.
-if test "${enable_dependency_tracking+set}" = set; then :
-  enableval=$enable_dependency_tracking;
-fi
-
-if test "x$enable_dependency_tracking" != xno; then
-  am_depcomp="$ac_aux_dir/depcomp"
-  AMDEPBACKSLASH='\'
-  am__nodep='_no'
-fi
- if test "x$enable_dependency_tracking" != xno; then
-  AMDEP_TRUE=
-  AMDEP_FALSE='#'
-else
-  AMDEP_TRUE='#'
-  AMDEP_FALSE=
-fi
-
-
-
-depcc="$CC"   am_compiler_list=
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
-$as_echo_n "checking dependency style of $depcc... " >&6; }
-if ${am_cv_CC_dependencies_compiler_type+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
-  # We make a subdir and do the tests there.  Otherwise we can end up
-  # making bogus files that we don't know about and never remove.  For
-  # instance it was reported that on HP-UX the gcc test will end up
-  # making a dummy file named 'D' -- because '-MD' means "put the output
-  # in D".
-  rm -rf conftest.dir
-  mkdir conftest.dir
-  # Copy depcomp to subdir because otherwise we won't find it if we're
-  # using a relative directory.
-  cp "$am_depcomp" conftest.dir
-  cd conftest.dir
-  # We will build objects and dependencies in a subdirectory because
-  # it helps to detect inapplicable dependency modes.  For instance
-  # both Tru64's cc and ICC support -MD to output dependencies as a
-  # side effect of compilation, but ICC will put the dependencies in
-  # the current directory while Tru64 will put them in the object
-  # directory.
-  mkdir sub
-
-  am_cv_CC_dependencies_compiler_type=none
-  if test "$am_compiler_list" = ""; then
-     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
-  fi
-  am__universal=false
-  case " $depcc " in #(
-     *\ -arch\ *\ -arch\ *) am__universal=true ;;
-     esac
-
-  for depmode in $am_compiler_list; do
-    # Setup a source with many dependencies, because some compilers
-    # like to wrap large dependency lists on column 80 (with \), and
-    # we should not choose a depcomp mode which is confused by this.
-    #
-    # We need to recreate these files for each test, as the compiler may
-    # overwrite some of them when testing with obscure command lines.
-    # This happens at least with the AIX C compiler.
-    : > sub/conftest.c
-    for i in 1 2 3 4 5 6; do
-      echo '#include "conftst'$i'.h"' >> sub/conftest.c
-      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
-      # Solaris 10 /bin/sh.
-      echo '/* dummy */' > sub/conftst$i.h
-    done
-    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
-
-    # We check with '-c' and '-o' for the sake of the "dashmstdout"
-    # mode.  It turns out that the SunPro C++ compiler does not properly
-    # handle '-M -o', and we need to detect this.  Also, some Intel
-    # versions had trouble with output in subdirs.
-    am__obj=sub/conftest.${OBJEXT-o}
-    am__minus_obj="-o $am__obj"
-    case $depmode in
-    gcc)
-      # This depmode causes a compiler race in universal mode.
-      test "$am__universal" = false || continue
-      ;;
-    nosideeffect)
-      # After this tag, mechanisms are not by side-effect, so they'll
-      # only be used when explicitly requested.
-      if test "x$enable_dependency_tracking" = xyes; then
-       continue
-      else
-       break
-      fi
-      ;;
-    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
-      # This compiler won't grok '-c -o', but also, the minuso test has
-      # not run yet.  These depmodes are late enough in the game, and
-      # so weak that their functioning should not be impacted.
-      am__obj=conftest.${OBJEXT-o}
-      am__minus_obj=
-      ;;
-    none) break ;;
-    esac
-    if depmode=$depmode \
-       source=sub/conftest.c object=$am__obj \
-       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
-       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
-         >/dev/null 2>conftest.err &&
-       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
-       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
-      # icc doesn't choke on unknown options, it will just issue warnings
-      # or remarks (even with -Werror).  So we grep stderr for any message
-      # that says an option was ignored or not supported.
-      # When given -MP, icc 7.0 and 7.1 complain thusly:
-      #   icc: Command line warning: ignoring option '-M'; no argument required
-      # The diagnosis changed in icc 8.0:
-      #   icc: Command line remark: option '-MP' not supported
-      if (grep 'ignoring option' conftest.err ||
-          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
-        am_cv_CC_dependencies_compiler_type=$depmode
-        break
-      fi
-    fi
-  done
-
-  cd ..
-  rm -rf conftest.dir
-else
-  am_cv_CC_dependencies_compiler_type=none
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
-$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
-CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
-
- if
-  test "x$enable_dependency_tracking" != xno \
-  && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
-  am__fastdepCC_TRUE=
-  am__fastdepCC_FALSE='#'
-else
-  am__fastdepCC_TRUE='#'
-  am__fastdepCC_FALSE=
-fi
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
-$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
-set x ${MAKE-make}
-ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
-if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.make <<\_ACEOF
-SHELL = /bin/sh
-all:
-       @echo '@@@%%%=$(MAKE)=@@@%%%'
-_ACEOF
-# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
-case `${MAKE-make} -f conftest.make 2>/dev/null` in
-  *@@@%%%=?*=@@@%%%*)
-    eval ac_cv_prog_make_${ac_make}_set=yes;;
-  *)
-    eval ac_cv_prog_make_${ac_make}_set=no;;
-esac
-rm -f conftest.make
-fi
-if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-  SET_MAKE=
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-  SET_MAKE="MAKE=${MAKE-make}"
-fi
-
-
-# For autobuild.
-# Make sure we can run config.sub.
-$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
-  as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
-$as_echo_n "checking build system type... " >&6; }
-if ${ac_cv_build+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_build_alias=$build_alias
-test "x$ac_build_alias" = x &&
-  ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
-test "x$ac_build_alias" = x &&
-  as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
-ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
-  as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
-$as_echo "$ac_cv_build" >&6; }
-case $ac_cv_build in
-*-*-*) ;;
-*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
-esac
-build=$ac_cv_build
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_build
-shift
-build_cpu=$1
-build_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-build_os=$*
-IFS=$ac_save_IFS
-case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
-$as_echo_n "checking host system type... " >&6; }
-if ${ac_cv_host+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "x$host_alias" = x; then
-  ac_cv_host=$ac_cv_build
-else
-  ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
-    as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
-$as_echo "$ac_cv_host" >&6; }
-case $ac_cv_host in
-*-*-*) ;;
-*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
-esac
-host=$ac_cv_host
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_host
-shift
-host_cpu=$1
-host_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-host_os=$*
-IFS=$ac_save_IFS
-case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
-
-
-
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
-$as_echo_n "checking how to run the C preprocessor... " >&6; }
-# On Suns, sometimes $CPP names a directory.
-if test -n "$CPP" && test -d "$CPP"; then
-  CPP=
-fi
-if test -z "$CPP"; then
-  if ${ac_cv_prog_CPP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-      # Double quotes because CPP needs to be expanded
-    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
-    do
-      ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-                    Syntax error
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-
-else
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  # Broken: success on invalid input.
-continue
-else
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-  break
-fi
-
-    done
-    ac_cv_prog_CPP=$CPP
-
-fi
-  CPP=$ac_cv_prog_CPP
-else
-  ac_cv_prog_CPP=$CPP
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
-$as_echo "$CPP" >&6; }
-ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-                    Syntax error
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-
-else
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  # Broken: success on invalid input.
-continue
-else
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-
-else
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
-$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
-if ${ac_cv_path_GREP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -z "$GREP"; then
-  ac_path_GREP_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in grep ggrep; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_GREP" || continue
-# Check for GNU ac_path_GREP and select it if it is found.
-  # Check for GNU $ac_path_GREP
-case `"$ac_path_GREP" --version 2>&1` in
-*GNU*)
-  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo 'GREP' >> "conftest.nl"
-    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_GREP_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_GREP="$ac_path_GREP"
-      ac_path_GREP_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_GREP_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_GREP"; then
-    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
-  fi
-else
-  ac_cv_path_GREP=$GREP
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
-$as_echo "$ac_cv_path_GREP" >&6; }
- GREP="$ac_cv_path_GREP"
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
-$as_echo_n "checking for egrep... " >&6; }
-if ${ac_cv_path_EGREP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
-   then ac_cv_path_EGREP="$GREP -E"
-   else
-     if test -z "$EGREP"; then
-  ac_path_EGREP_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in egrep; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_EGREP" || continue
-# Check for GNU ac_path_EGREP and select it if it is found.
-  # Check for GNU $ac_path_EGREP
-case `"$ac_path_EGREP" --version 2>&1` in
-*GNU*)
-  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo 'EGREP' >> "conftest.nl"
-    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_EGREP="$ac_path_EGREP"
-      ac_path_EGREP_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_EGREP_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_EGREP"; then
-    as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
-  fi
-else
-  ac_cv_path_EGREP=$EGREP
-fi
-
-   fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
-$as_echo "$ac_cv_path_EGREP" >&6; }
- EGREP="$ac_cv_path_EGREP"
-
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Minix Amsterdam compiler" >&5
-$as_echo_n "checking for Minix Amsterdam compiler... " >&6; }
-if ${gl_cv_c_amsterdam_compiler+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#ifdef __ACK__
-Amsterdam
-#endif
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "Amsterdam" >/dev/null 2>&1; then :
-  gl_cv_c_amsterdam_compiler=yes
-else
-  gl_cv_c_amsterdam_compiler=no
-fi
-rm -f conftest*
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_c_amsterdam_compiler" >&5
-$as_echo "$gl_cv_c_amsterdam_compiler" >&6; }
-  if test -z "$AR"; then
-    if test $gl_cv_c_amsterdam_compiler = yes; then
-      AR='cc -c.a'
-      if test -z "$ARFLAGS"; then
-        ARFLAGS='-o'
-      fi
-    else
-                  if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
-set dummy ${ac_tool_prefix}ar; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_AR+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$AR"; then
-  ac_cv_prog_AR="$AR" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_AR="${ac_tool_prefix}ar"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-AR=$ac_cv_prog_AR
-if test -n "$AR"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
-$as_echo "$AR" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_AR"; then
-  ac_ct_AR=$AR
-  # Extract the first word of "ar", so it can be a program name with args.
-set dummy ar; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_AR+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_AR"; then
-  ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_AR="ar"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_AR=$ac_cv_prog_ac_ct_AR
-if test -n "$ac_ct_AR"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
-$as_echo "$ac_ct_AR" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_AR" = x; then
-    AR="ar"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    AR=$ac_ct_AR
-  fi
-else
-  AR="$ac_cv_prog_AR"
-fi
-
-      if test -z "$ARFLAGS"; then
-        ARFLAGS='cru'
-      fi
-    fi
-  else
-    if test -z "$ARFLAGS"; then
-      ARFLAGS='cru'
-    fi
-  fi
-
-
-  if test -z "$RANLIB"; then
-    if test $gl_cv_c_amsterdam_compiler = yes; then
-      RANLIB=':'
-    else
-            if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
-set dummy ${ac_tool_prefix}ranlib; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_RANLIB+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$RANLIB"; then
-  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-RANLIB=$ac_cv_prog_RANLIB
-if test -n "$RANLIB"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
-$as_echo "$RANLIB" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_RANLIB"; then
-  ac_ct_RANLIB=$RANLIB
-  # Extract the first word of "ranlib", so it can be a program name with args.
-set dummy ranlib; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_RANLIB"; then
-  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_RANLIB="ranlib"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
-if test -n "$ac_ct_RANLIB"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
-$as_echo "$ac_ct_RANLIB" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_RANLIB" = x; then
-    RANLIB=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    RANLIB=$ac_ct_RANLIB
-  fi
-else
-  RANLIB="$ac_cv_prog_RANLIB"
-fi
-
-    fi
-  fi
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
-$as_echo_n "checking for ANSI C header files... " >&6; }
-if ${ac_cv_header_stdc+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_header_stdc=yes
-else
-  ac_cv_header_stdc=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-if test $ac_cv_header_stdc = yes; then
-  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <string.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "memchr" >/dev/null 2>&1; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdlib.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "free" >/dev/null 2>&1; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
-  if test "$cross_compiling" = yes; then :
-  :
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ctype.h>
-#include <stdlib.h>
-#if ((' ' & 0x0FF) == 0x020)
-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#else
-# define ISLOWER(c) \
-                  (('a' <= (c) && (c) <= 'i') \
-                    || ('j' <= (c) && (c) <= 'r') \
-                    || ('s' <= (c) && (c) <= 'z'))
-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-#endif
-
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int
-main ()
-{
-  int i;
-  for (i = 0; i < 256; i++)
-    if (XOR (islower (i), ISLOWER (i))
-       || toupper (i) != TOUPPER (i))
-      return 2;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
-$as_echo "$ac_cv_header_stdc" >&6; }
-if test $ac_cv_header_stdc = yes; then
-
-$as_echo "#define STDC_HEADERS 1" >>confdefs.h
-
-fi
-
-# On IRIX 5.3, sys/types and inttypes.h are conflicting.
-for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
-                 inttypes.h stdint.h unistd.h
-do :
-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
-"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-
-  ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default"
-if test "x$ac_cv_header_minix_config_h" = xyes; then :
-  MINIX=yes
-else
-  MINIX=
-fi
-
-
-  if test "$MINIX" = yes; then
-
-$as_echo "#define _POSIX_SOURCE 1" >>confdefs.h
-
-
-$as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h
-
-
-$as_echo "#define _MINIX 1" >>confdefs.h
-
-
-$as_echo "#define _NETBSD_SOURCE 1" >>confdefs.h
-
-  fi
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5
-$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; }
-if ${ac_cv_safe_to_define___extensions__+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#         define __EXTENSIONS__ 1
-          $ac_includes_default
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_safe_to_define___extensions__=yes
-else
-  ac_cv_safe_to_define___extensions__=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5
-$as_echo "$ac_cv_safe_to_define___extensions__" >&6; }
-  test $ac_cv_safe_to_define___extensions__ = yes &&
-    $as_echo "#define __EXTENSIONS__ 1" >>confdefs.h
-
-  $as_echo "#define _ALL_SOURCE 1" >>confdefs.h
-
-  $as_echo "#define _DARWIN_C_SOURCE 1" >>confdefs.h
-
-  $as_echo "#define _GNU_SOURCE 1" >>confdefs.h
-
-  $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h
-
-  $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether _XOPEN_SOURCE should be defined" >&5
-$as_echo_n "checking whether _XOPEN_SOURCE should be defined... " >&6; }
-if ${ac_cv_should_define__xopen_source+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_should_define__xopen_source=no
-     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-          #include <wchar.h>
-          mbstate_t x;
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-             #define _XOPEN_SOURCE 500
-             #include <wchar.h>
-             mbstate_t x;
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_should_define__xopen_source=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_should_define__xopen_source" >&5
-$as_echo "$ac_cv_should_define__xopen_source" >&6; }
-  test $ac_cv_should_define__xopen_source = yes &&
-    $as_echo "#define _XOPEN_SOURCE 500" >>confdefs.h
-
-
-
-
-
-
-
-
- if false; then
-  GL_COND_LIBTOOL_TRUE=
-  GL_COND_LIBTOOL_FALSE='#'
-else
-  GL_COND_LIBTOOL_TRUE='#'
-  GL_COND_LIBTOOL_FALSE=
-fi
-
-gl_cond_libtool=false
-gl_libdeps=
-gl_ltlibdeps=
-
-
-# Like AC_LIBOBJ, except that the module name goes
-# into gl_LIBOBJS instead of into LIBOBJS.
-
-
-# Like AC_REPLACE_FUNCS, except that the module name goes
-# into gl_LIBOBJS instead of into LIBOBJS.
-
-
-# Like AC_LIBSOURCES, except the directory where the source file is
-# expected is derived from the gnulib-tool parameterization,
-# and alloca is special cased (for the alloca-opt module).
-# We could also entirely rely on EXTRA_lib..._SOURCES.
-
-
-
-
-
-
-
-          LIBC_FATAL_STDERR_=1
-  export LIBC_FATAL_STDERR_
-
-
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for unsigned long long int" >&5
-$as_echo_n "checking for unsigned long long int... " >&6; }
-if ${ac_cv_type_unsigned_long_long_int+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_type_unsigned_long_long_int=yes
-     if test "x${ac_cv_prog_cc_c99-no}" = xno; then
-       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-  /* For now, do not test the preprocessor; as of 2007 there are too many
-         implementations with broken preprocessors.  Perhaps this can
-         be revisited in 2012.  In the meantime, code should not expect
-         #if to work with literals wider than 32 bits.  */
-      /* Test literals.  */
-      long long int ll = 9223372036854775807ll;
-      long long int nll = -9223372036854775807LL;
-      unsigned long long int ull = 18446744073709551615ULL;
-      /* Test constant expressions.   */
-      typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll)
-                     ? 1 : -1)];
-      typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1
-                     ? 1 : -1)];
-      int i = 63;
-int
-main ()
-{
-/* Test availability of runtime routines for shift and division.  */
-      long long int llmax = 9223372036854775807ll;
-      unsigned long long int ullmax = 18446744073709551615ull;
-      return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i)
-              | (llmax / ll) | (llmax % ll)
-              | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i)
-              | (ullmax / ull) | (ullmax % ull));
-  ;
-  return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-
-else
-  ac_cv_type_unsigned_long_long_int=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-     fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_unsigned_long_long_int" >&5
-$as_echo "$ac_cv_type_unsigned_long_long_int" >&6; }
-  if test $ac_cv_type_unsigned_long_long_int = yes; then
-
-$as_echo "#define HAVE_UNSIGNED_LONG_LONG_INT 1" >>confdefs.h
-
-  fi
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for long long int" >&5
-$as_echo_n "checking for long long int... " >&6; }
-if ${ac_cv_type_long_long_int+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_type_long_long_int=yes
-      if test "x${ac_cv_prog_cc_c99-no}" = xno; then
-        ac_cv_type_long_long_int=$ac_cv_type_unsigned_long_long_int
-        if test $ac_cv_type_long_long_int = yes; then
-                                        if test "$cross_compiling" = yes; then :
-  :
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <limits.h>
-                 #ifndef LLONG_MAX
-                 # define HALF \
-                          (1LL << (sizeof (long long int) * CHAR_BIT - 2))
-                 # define LLONG_MAX (HALF - 1 + HALF)
-                 #endif
-int
-main ()
-{
-long long int n = 1;
-                 int i;
-                 for (i = 0; ; i++)
-                   {
-                     long long int m = n << i;
-                     if (m >> i != n)
-                       return 1;
-                     if (LLONG_MAX / 2 < m)
-                       break;
-                   }
-                 return 0;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-
-else
-  ac_cv_type_long_long_int=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-        fi
-      fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_long_long_int" >&5
-$as_echo "$ac_cv_type_long_long_int" >&6; }
-  if test $ac_cv_type_long_long_int = yes; then
-
-$as_echo "#define HAVE_LONG_LONG_INT 1" >>confdefs.h
-
-  fi
-
-
-
-
-
-  for ac_header in $gl_header_list
-do :
-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-
-
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the preprocessor supports include_next" >&5
-$as_echo_n "checking whether the preprocessor supports include_next... " >&6; }
-if ${gl_cv_have_include_next+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  rm -rf conftestd1a conftestd1b conftestd2
-     mkdir conftestd1a conftestd1b conftestd2
-                                                  cat <<EOF > conftestd1a/conftest.h
-#define DEFINED_IN_CONFTESTD1
-#include_next <conftest.h>
-#ifdef DEFINED_IN_CONFTESTD2
-int foo;
-#else
-#error "include_next doesn't work"
-#endif
-EOF
-     cat <<EOF > conftestd1b/conftest.h
-#define DEFINED_IN_CONFTESTD1
-#include <stdio.h>
-#include_next <conftest.h>
-#ifdef DEFINED_IN_CONFTESTD2
-int foo;
-#else
-#error "include_next doesn't work"
-#endif
-EOF
-     cat <<EOF > conftestd2/conftest.h
-#ifndef DEFINED_IN_CONFTESTD1
-#error "include_next test doesn't work"
-#endif
-#define DEFINED_IN_CONFTESTD2
-EOF
-     gl_save_CPPFLAGS="$CPPFLAGS"
-     CPPFLAGS="$gl_save_CPPFLAGS -Iconftestd1b -Iconftestd2"
-     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <conftest.h>
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  gl_cv_have_include_next=yes
-else
-  CPPFLAGS="$gl_save_CPPFLAGS -Iconftestd1a -Iconftestd2"
-        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <conftest.h>
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  gl_cv_have_include_next=buggy
-else
-  gl_cv_have_include_next=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-     CPPFLAGS="$gl_save_CPPFLAGS"
-     rm -rf conftestd1a conftestd1b conftestd2
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_have_include_next" >&5
-$as_echo "$gl_cv_have_include_next" >&6; }
-  PRAGMA_SYSTEM_HEADER=
-  if test $gl_cv_have_include_next = yes; then
-    INCLUDE_NEXT=include_next
-    INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include_next
-    if test -n "$GCC"; then
-      PRAGMA_SYSTEM_HEADER='#pragma GCC system_header'
-    fi
-  else
-    if test $gl_cv_have_include_next = buggy; then
-      INCLUDE_NEXT=include
-      INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include_next
-    else
-      INCLUDE_NEXT=include
-      INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include
-    fi
-  fi
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether system header files limit the line length" >&5
-$as_echo_n "checking whether system header files limit the line length... " >&6; }
-if ${gl_cv_pragma_columns+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#ifdef __TANDEM
-choke me
-#endif
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "choke me" >/dev/null 2>&1; then :
-  gl_cv_pragma_columns=yes
-else
-  gl_cv_pragma_columns=no
-fi
-rm -f conftest*
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_pragma_columns" >&5
-$as_echo "$gl_cv_pragma_columns" >&6; }
-  if test $gl_cv_pragma_columns = yes; then
-    PRAGMA_COLUMNS="#pragma COLUMNS 10000"
-  else
-    PRAGMA_COLUMNS=
-  fi
-
-
-
-
-
-
-
-
-    gl_cv_c_multiarch=no
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#ifndef __APPLE_CC__
-         not a universal capable compiler
-        #endif
-        typedef int dummy;
-
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
-               arch=
-     prev=
-     for word in ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}; do
-       if test -n "$prev"; then
-         case $word in
-           i?86 | x86_64 | ppc | ppc64)
-             if test -z "$arch" || test "$arch" = "$word"; then
-               arch="$word"
-             else
-               gl_cv_c_multiarch=yes
-             fi
-             ;;
-         esac
-         prev=
-       else
-         if test "x$word" = "x-arch"; then
-           prev=arch
-         fi
-       fi
-     done
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  if test $gl_cv_c_multiarch = yes; then
-    APPLE_UNIVERSAL_BUILD=1
-  else
-    APPLE_UNIVERSAL_BUILD=0
-  fi
-
-
-
-
-
-  if test $ac_cv_type_long_long_int = yes; then
-    HAVE_LONG_LONG_INT=1
-  else
-    HAVE_LONG_LONG_INT=0
-  fi
-
-
-  if test $ac_cv_type_unsigned_long_long_int = yes; then
-    HAVE_UNSIGNED_LONG_LONG_INT=1
-  else
-    HAVE_UNSIGNED_LONG_LONG_INT=0
-  fi
-
-
-
-  :
-
-
-
-
-
-  if test $ac_cv_header_wchar_h = yes; then
-    HAVE_WCHAR_H=1
-  else
-    HAVE_WCHAR_H=0
-  fi
-
-
-      if test $ac_cv_header_inttypes_h = yes; then
-    HAVE_INTTYPES_H=1
-  else
-    HAVE_INTTYPES_H=0
-  fi
-
-
-      if test $ac_cv_header_sys_types_h = yes; then
-    HAVE_SYS_TYPES_H=1
-  else
-    HAVE_SYS_TYPES_H=0
-  fi
-
-
-
-
-
-
-
-
-  :
-
-
-
-
-
-
-
-
-     if test $gl_cv_have_include_next = yes; then
-       gl_cv_next_stdint_h='<'stdint.h'>'
-     else
-       { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <stdint.h>" >&5
-$as_echo_n "checking absolute name of <stdint.h>... " >&6; }
-if ${gl_cv_next_stdint_h+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-             if test $ac_cv_header_stdint_h = yes; then
-
-
-               cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdint.h>
-
-_ACEOF
-                                                                                                                        case "$host_os" in
-                 aix*) gl_absname_cpp="$ac_cpp -C" ;;
-                 *)    gl_absname_cpp="$ac_cpp" ;;
-               esac
-
-               case "$host_os" in
-                 mingw*)
-                                                                                                                                     gl_dirsep_regex='[/\\]'
-                   ;;
-                 *)
-                   gl_dirsep_regex='\/'
-                   ;;
-               esac
-                                             gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g'
-
-               gl_header_literal_regex=`echo 'stdint.h' \
-                                        | sed -e "$gl_make_literal_regex_sed"`
-               gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{
-                   s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/
-                   s|^/[^/]|//&|
-                   p
-                   q
-                 }'
-                                                            gl_cv_next_stdint_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
-                      sed -n "$gl_absolute_header_sed"`'"'
-          else
-               gl_cv_next_stdint_h='<'stdint.h'>'
-             fi
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_stdint_h" >&5
-$as_echo "$gl_cv_next_stdint_h" >&6; }
-     fi
-     NEXT_STDINT_H=$gl_cv_next_stdint_h
-
-     if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
-       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
-       gl_next_as_first_directive='<'stdint.h'>'
-     else
-       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
-       gl_next_as_first_directive=$gl_cv_next_stdint_h
-     fi
-     NEXT_AS_FIRST_DIRECTIVE_STDINT_H=$gl_next_as_first_directive
-
-
-
-
-  if test $ac_cv_header_stdint_h = yes; then
-    HAVE_STDINT_H=1
-  else
-    HAVE_STDINT_H=0
-  fi
-
-
-    if test $ac_cv_header_stdint_h = yes; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stdint.h conforms to C99" >&5
-$as_echo_n "checking whether stdint.h conforms to C99... " >&6; }
-if ${gl_cv_header_working_stdint_h+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  gl_cv_header_working_stdint_h=no
-       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-
-#define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */
-#include <stdint.h>
-/* Dragonfly defines WCHAR_MIN, WCHAR_MAX only in <wchar.h>.  */
-#if !(defined WCHAR_MIN && defined WCHAR_MAX)
-#error "WCHAR_MIN, WCHAR_MAX not defined in <stdint.h>"
-#endif
-
-
-  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
-     included before <wchar.h>.  */
-  #include <stddef.h>
-  #include <signal.h>
-  #if HAVE_WCHAR_H
-  # include <stdio.h>
-  # include <time.h>
-  # include <wchar.h>
-  #endif
-
-
-#ifdef INT8_MAX
-int8_t a1 = INT8_MAX;
-int8_t a1min = INT8_MIN;
-#endif
-#ifdef INT16_MAX
-int16_t a2 = INT16_MAX;
-int16_t a2min = INT16_MIN;
-#endif
-#ifdef INT32_MAX
-int32_t a3 = INT32_MAX;
-int32_t a3min = INT32_MIN;
-#endif
-#ifdef INT64_MAX
-int64_t a4 = INT64_MAX;
-int64_t a4min = INT64_MIN;
-#endif
-#ifdef UINT8_MAX
-uint8_t b1 = UINT8_MAX;
-#else
-typedef int b1[(unsigned char) -1 != 255 ? 1 : -1];
-#endif
-#ifdef UINT16_MAX
-uint16_t b2 = UINT16_MAX;
-#endif
-#ifdef UINT32_MAX
-uint32_t b3 = UINT32_MAX;
-#endif
-#ifdef UINT64_MAX
-uint64_t b4 = UINT64_MAX;
-#endif
-int_least8_t c1 = INT8_C (0x7f);
-int_least8_t c1max = INT_LEAST8_MAX;
-int_least8_t c1min = INT_LEAST8_MIN;
-int_least16_t c2 = INT16_C (0x7fff);
-int_least16_t c2max = INT_LEAST16_MAX;
-int_least16_t c2min = INT_LEAST16_MIN;
-int_least32_t c3 = INT32_C (0x7fffffff);
-int_least32_t c3max = INT_LEAST32_MAX;
-int_least32_t c3min = INT_LEAST32_MIN;
-int_least64_t c4 = INT64_C (0x7fffffffffffffff);
-int_least64_t c4max = INT_LEAST64_MAX;
-int_least64_t c4min = INT_LEAST64_MIN;
-uint_least8_t d1 = UINT8_C (0xff);
-uint_least8_t d1max = UINT_LEAST8_MAX;
-uint_least16_t d2 = UINT16_C (0xffff);
-uint_least16_t d2max = UINT_LEAST16_MAX;
-uint_least32_t d3 = UINT32_C (0xffffffff);
-uint_least32_t d3max = UINT_LEAST32_MAX;
-uint_least64_t d4 = UINT64_C (0xffffffffffffffff);
-uint_least64_t d4max = UINT_LEAST64_MAX;
-int_fast8_t e1 = INT_FAST8_MAX;
-int_fast8_t e1min = INT_FAST8_MIN;
-int_fast16_t e2 = INT_FAST16_MAX;
-int_fast16_t e2min = INT_FAST16_MIN;
-int_fast32_t e3 = INT_FAST32_MAX;
-int_fast32_t e3min = INT_FAST32_MIN;
-int_fast64_t e4 = INT_FAST64_MAX;
-int_fast64_t e4min = INT_FAST64_MIN;
-uint_fast8_t f1 = UINT_FAST8_MAX;
-uint_fast16_t f2 = UINT_FAST16_MAX;
-uint_fast32_t f3 = UINT_FAST32_MAX;
-uint_fast64_t f4 = UINT_FAST64_MAX;
-#ifdef INTPTR_MAX
-intptr_t g = INTPTR_MAX;
-intptr_t gmin = INTPTR_MIN;
-#endif
-#ifdef UINTPTR_MAX
-uintptr_t h = UINTPTR_MAX;
-#endif
-intmax_t i = INTMAX_MAX;
-uintmax_t j = UINTMAX_MAX;
-
-#include <limits.h> /* for CHAR_BIT */
-#define TYPE_MINIMUM(t) \
-  ((t) ((t) 0 < (t) -1 ? (t) 0 : ~ TYPE_MAXIMUM (t)))
-#define TYPE_MAXIMUM(t) \
-  ((t) ((t) 0 < (t) -1 \
-        ? (t) -1 \
-        : ((((t) 1 << (sizeof (t) * CHAR_BIT - 2)) - 1) * 2 + 1)))
-struct s {
-  int check_PTRDIFF:
-      PTRDIFF_MIN == TYPE_MINIMUM (ptrdiff_t)
-      && PTRDIFF_MAX == TYPE_MAXIMUM (ptrdiff_t)
-      ? 1 : -1;
-  /* Detect bug in FreeBSD 6.0 / ia64.  */
-  int check_SIG_ATOMIC:
-      SIG_ATOMIC_MIN == TYPE_MINIMUM (sig_atomic_t)
-      && SIG_ATOMIC_MAX == TYPE_MAXIMUM (sig_atomic_t)
-      ? 1 : -1;
-  int check_SIZE: SIZE_MAX == TYPE_MAXIMUM (size_t) ? 1 : -1;
-  int check_WCHAR:
-      WCHAR_MIN == TYPE_MINIMUM (wchar_t)
-      && WCHAR_MAX == TYPE_MAXIMUM (wchar_t)
-      ? 1 : -1;
-  /* Detect bug in mingw.  */
-  int check_WINT:
-      WINT_MIN == TYPE_MINIMUM (wint_t)
-      && WINT_MAX == TYPE_MAXIMUM (wint_t)
-      ? 1 : -1;
-
-  /* Detect bugs in glibc 2.4 and Solaris 10 stdint.h, among others.  */
-  int check_UINT8_C:
-        (-1 < UINT8_C (0)) == (-1 < (uint_least8_t) 0) ? 1 : -1;
-  int check_UINT16_C:
-        (-1 < UINT16_C (0)) == (-1 < (uint_least16_t) 0) ? 1 : -1;
-
-  /* Detect bugs in OpenBSD 3.9 stdint.h.  */
-#ifdef UINT8_MAX
-  int check_uint8: (uint8_t) -1 == UINT8_MAX ? 1 : -1;
-#endif
-#ifdef UINT16_MAX
-  int check_uint16: (uint16_t) -1 == UINT16_MAX ? 1 : -1;
-#endif
-#ifdef UINT32_MAX
-  int check_uint32: (uint32_t) -1 == UINT32_MAX ? 1 : -1;
-#endif
-#ifdef UINT64_MAX
-  int check_uint64: (uint64_t) -1 == UINT64_MAX ? 1 : -1;
-#endif
-  int check_uint_least8: (uint_least8_t) -1 == UINT_LEAST8_MAX ? 1 : -1;
-  int check_uint_least16: (uint_least16_t) -1 == UINT_LEAST16_MAX ? 1 : -1;
-  int check_uint_least32: (uint_least32_t) -1 == UINT_LEAST32_MAX ? 1 : -1;
-  int check_uint_least64: (uint_least64_t) -1 == UINT_LEAST64_MAX ? 1 : -1;
-  int check_uint_fast8: (uint_fast8_t) -1 == UINT_FAST8_MAX ? 1 : -1;
-  int check_uint_fast16: (uint_fast16_t) -1 == UINT_FAST16_MAX ? 1 : -1;
-  int check_uint_fast32: (uint_fast32_t) -1 == UINT_FAST32_MAX ? 1 : -1;
-  int check_uint_fast64: (uint_fast64_t) -1 == UINT_FAST64_MAX ? 1 : -1;
-  int check_uintptr: (uintptr_t) -1 == UINTPTR_MAX ? 1 : -1;
-  int check_uintmax: (uintmax_t) -1 == UINTMAX_MAX ? 1 : -1;
-  int check_size: (size_t) -1 == SIZE_MAX ? 1 : -1;
-};
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-                                                    if test "$cross_compiling" = yes; then :
-                 gl_cv_header_working_stdint_h=yes
-
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-
-#define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */
-#include <stdint.h>
-
-
-  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
-     included before <wchar.h>.  */
-  #include <stddef.h>
-  #include <signal.h>
-  #if HAVE_WCHAR_H
-  # include <stdio.h>
-  # include <time.h>
-  # include <wchar.h>
-  #endif
-
-
-#include <stdio.h>
-#include <string.h>
-#define MVAL(macro) MVAL1(macro)
-#define MVAL1(expression) #expression
-static const char *macro_values[] =
-  {
-#ifdef INT8_MAX
-    MVAL (INT8_MAX),
-#endif
-#ifdef INT16_MAX
-    MVAL (INT16_MAX),
-#endif
-#ifdef INT32_MAX
-    MVAL (INT32_MAX),
-#endif
-#ifdef INT64_MAX
-    MVAL (INT64_MAX),
-#endif
-#ifdef UINT8_MAX
-    MVAL (UINT8_MAX),
-#endif
-#ifdef UINT16_MAX
-    MVAL (UINT16_MAX),
-#endif
-#ifdef UINT32_MAX
-    MVAL (UINT32_MAX),
-#endif
-#ifdef UINT64_MAX
-    MVAL (UINT64_MAX),
-#endif
-    NULL
-  };
-
-int
-main ()
-{
-
-  const char **mv;
-  for (mv = macro_values; *mv != NULL; mv++)
-    {
-      const char *value = *mv;
-      /* Test whether it looks like a cast expression.  */
-      if (strncmp (value, "((unsigned int)"/*)*/, 15) == 0
-          || strncmp (value, "((unsigned short)"/*)*/, 17) == 0
-          || strncmp (value, "((unsigned char)"/*)*/, 16) == 0
-          || strncmp (value, "((int)"/*)*/, 6) == 0
-          || strncmp (value, "((signed short)"/*)*/, 15) == 0
-          || strncmp (value, "((signed char)"/*)*/, 14) == 0)
-        return mv - macro_values + 1;
-    }
-  return 0;
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  gl_cv_header_working_stdint_h=yes
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_working_stdint_h" >&5
-$as_echo "$gl_cv_header_working_stdint_h" >&6; }
-  fi
-  if test "$gl_cv_header_working_stdint_h" = yes; then
-    STDINT_H=
-  else
-            for ac_header in sys/inttypes.h sys/bitypes.h
-do :
-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-    if test $ac_cv_header_sys_inttypes_h = yes; then
-      HAVE_SYS_INTTYPES_H=1
-    else
-      HAVE_SYS_INTTYPES_H=0
-    fi
-
-    if test $ac_cv_header_sys_bitypes_h = yes; then
-      HAVE_SYS_BITYPES_H=1
-    else
-      HAVE_SYS_BITYPES_H=0
-    fi
-
-
-
-
-  if test $APPLE_UNIVERSAL_BUILD = 0; then
-
-
-  for gltype in ptrdiff_t size_t ; do
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bit size of $gltype" >&5
-$as_echo_n "checking for bit size of $gltype... " >&6; }
-if eval \${gl_cv_bitsizeof_${gltype}+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if ac_fn_c_compute_int "$LINENO" "sizeof ($gltype) * CHAR_BIT" "result"        "
-  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
-     included before <wchar.h>.  */
-  #include <stddef.h>
-  #include <signal.h>
-  #if HAVE_WCHAR_H
-  # include <stdio.h>
-  # include <time.h>
-  # include <wchar.h>
-  #endif
-
-#include <limits.h>"; then :
-
-else
-  result=unknown
-fi
-
-       eval gl_cv_bitsizeof_${gltype}=\$result
-
-fi
-eval ac_res=\$gl_cv_bitsizeof_${gltype}
-              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-    eval result=\$gl_cv_bitsizeof_${gltype}
-    if test $result = unknown; then
-                                                result=0
-    fi
-    GLTYPE=`echo "$gltype" | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
-    cat >>confdefs.h <<_ACEOF
-#define BITSIZEOF_${GLTYPE} $result
-_ACEOF
-
-    eval BITSIZEOF_${GLTYPE}=\$result
-  done
-
-
-  fi
-
-
-  for gltype in sig_atomic_t wchar_t wint_t ; do
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bit size of $gltype" >&5
-$as_echo_n "checking for bit size of $gltype... " >&6; }
-if eval \${gl_cv_bitsizeof_${gltype}+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if ac_fn_c_compute_int "$LINENO" "sizeof ($gltype) * CHAR_BIT" "result"        "
-  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
-     included before <wchar.h>.  */
-  #include <stddef.h>
-  #include <signal.h>
-  #if HAVE_WCHAR_H
-  # include <stdio.h>
-  # include <time.h>
-  # include <wchar.h>
-  #endif
-
-#include <limits.h>"; then :
-
-else
-  result=unknown
-fi
-
-       eval gl_cv_bitsizeof_${gltype}=\$result
-
-fi
-eval ac_res=\$gl_cv_bitsizeof_${gltype}
-              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-    eval result=\$gl_cv_bitsizeof_${gltype}
-    if test $result = unknown; then
-                                                result=0
-    fi
-    GLTYPE=`echo "$gltype" | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
-    cat >>confdefs.h <<_ACEOF
-#define BITSIZEOF_${GLTYPE} $result
-_ACEOF
-
-    eval BITSIZEOF_${GLTYPE}=\$result
-  done
-
-
-
-
-  for gltype in sig_atomic_t wchar_t wint_t ; do
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $gltype is signed" >&5
-$as_echo_n "checking whether $gltype is signed... " >&6; }
-if eval \${gl_cv_type_${gltype}_signed+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
-     included before <wchar.h>.  */
-  #include <stddef.h>
-  #include <signal.h>
-  #if HAVE_WCHAR_H
-  # include <stdio.h>
-  # include <time.h>
-  # include <wchar.h>
-  #endif
-
-            int verify[2 * (($gltype) -1 < ($gltype) 0) - 1];
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  result=yes
-else
-  result=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-       eval gl_cv_type_${gltype}_signed=\$result
-
-fi
-eval ac_res=\$gl_cv_type_${gltype}_signed
-              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-    eval result=\$gl_cv_type_${gltype}_signed
-    GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
-    if test "$result" = yes; then
-      cat >>confdefs.h <<_ACEOF
-#define HAVE_SIGNED_${GLTYPE} 1
-_ACEOF
-
-      eval HAVE_SIGNED_${GLTYPE}=1
-    else
-      eval HAVE_SIGNED_${GLTYPE}=0
-    fi
-  done
-
-
-  gl_cv_type_ptrdiff_t_signed=yes
-  gl_cv_type_size_t_signed=no
-  if test $APPLE_UNIVERSAL_BUILD = 0; then
-
-
-  for gltype in ptrdiff_t size_t ; do
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $gltype integer literal suffix" >&5
-$as_echo_n "checking for $gltype integer literal suffix... " >&6; }
-if eval \${gl_cv_type_${gltype}_suffix+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  eval gl_cv_type_${gltype}_suffix=no
-       eval result=\$gl_cv_type_${gltype}_signed
-       if test "$result" = yes; then
-         glsufu=
-       else
-         glsufu=u
-       fi
-       for glsuf in "$glsufu" ${glsufu}l ${glsufu}ll ${glsufu}i64; do
-         case $glsuf in
-           '')  gltype1='int';;
-           l)   gltype1='long int';;
-           ll)  gltype1='long long int';;
-           i64) gltype1='__int64';;
-           u)   gltype1='unsigned int';;
-           ul)  gltype1='unsigned long int';;
-           ull) gltype1='unsigned long long int';;
-           ui64)gltype1='unsigned __int64';;
-         esac
-         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
-     included before <wchar.h>.  */
-  #include <stddef.h>
-  #include <signal.h>
-  #if HAVE_WCHAR_H
-  # include <stdio.h>
-  # include <time.h>
-  # include <wchar.h>
-  #endif
-
-              extern $gltype foo;
-              extern $gltype1 foo;
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  eval gl_cv_type_${gltype}_suffix=\$glsuf
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-         eval result=\$gl_cv_type_${gltype}_suffix
-         test "$result" != no && break
-       done
-fi
-eval ac_res=\$gl_cv_type_${gltype}_suffix
-              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-    GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
-    eval result=\$gl_cv_type_${gltype}_suffix
-    test "$result" = no && result=
-    eval ${GLTYPE}_SUFFIX=\$result
-    cat >>confdefs.h <<_ACEOF
-#define ${GLTYPE}_SUFFIX $result
-_ACEOF
-
-  done
-
-
-  fi
-
-
-  for gltype in sig_atomic_t wchar_t wint_t ; do
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $gltype integer literal suffix" >&5
-$as_echo_n "checking for $gltype integer literal suffix... " >&6; }
-if eval \${gl_cv_type_${gltype}_suffix+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  eval gl_cv_type_${gltype}_suffix=no
-       eval result=\$gl_cv_type_${gltype}_signed
-       if test "$result" = yes; then
-         glsufu=
-       else
-         glsufu=u
-       fi
-       for glsuf in "$glsufu" ${glsufu}l ${glsufu}ll ${glsufu}i64; do
-         case $glsuf in
-           '')  gltype1='int';;
-           l)   gltype1='long int';;
-           ll)  gltype1='long long int';;
-           i64) gltype1='__int64';;
-           u)   gltype1='unsigned int';;
-           ul)  gltype1='unsigned long int';;
-           ull) gltype1='unsigned long long int';;
-           ui64)gltype1='unsigned __int64';;
-         esac
-         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
-     included before <wchar.h>.  */
-  #include <stddef.h>
-  #include <signal.h>
-  #if HAVE_WCHAR_H
-  # include <stdio.h>
-  # include <time.h>
-  # include <wchar.h>
-  #endif
-
-              extern $gltype foo;
-              extern $gltype1 foo;
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  eval gl_cv_type_${gltype}_suffix=\$glsuf
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-         eval result=\$gl_cv_type_${gltype}_suffix
-         test "$result" != no && break
-       done
-fi
-eval ac_res=\$gl_cv_type_${gltype}_suffix
-              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-    GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
-    eval result=\$gl_cv_type_${gltype}_suffix
-    test "$result" = no && result=
-    eval ${GLTYPE}_SUFFIX=\$result
-    cat >>confdefs.h <<_ACEOF
-#define ${GLTYPE}_SUFFIX $result
-_ACEOF
-
-  done
-
-
-
-          if test $BITSIZEOF_WINT_T -lt 32; then
-    BITSIZEOF_WINT_T=32
-  fi
-
-    STDINT_H=stdint.h
-  fi
-
-   if test -n "$STDINT_H"; then
-  GL_GENERATE_STDINT_H_TRUE=
-  GL_GENERATE_STDINT_H_FALSE='#'
-else
-  GL_GENERATE_STDINT_H_TRUE='#'
-  GL_GENERATE_STDINT_H_FALSE=
-fi
-
-
-
-
-
-
-
-
-  GNULIB_IMAXABS=0;
-  GNULIB_IMAXDIV=0;
-  GNULIB_STRTOIMAX=0;
-  GNULIB_STRTOUMAX=0;
-    HAVE_DECL_IMAXABS=1;
-  HAVE_DECL_IMAXDIV=1;
-  HAVE_DECL_STRTOIMAX=1;
-  HAVE_DECL_STRTOUMAX=1;
-  REPLACE_STRTOIMAX=0;
-  INT32_MAX_LT_INTMAX_MAX=1;
-  INT64_MAX_EQ_LONG_MAX='defined _LP64';
-  PRI_MACROS_BROKEN=0;
-  PRIPTR_PREFIX=__PRIPTR_PREFIX;
-  UINT32_MAX_LT_UINTMAX_MAX=1;
-  UINT64_MAX_EQ_ULONG_MAX='defined _LP64';
-
-
-
-
-  :
-
-
-
-
-
-
-
-
-
-
-
-
-
-  :
-
-
-
-
-
-
-
-
-     if test $gl_cv_have_include_next = yes; then
-       gl_cv_next_inttypes_h='<'inttypes.h'>'
-     else
-       { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <inttypes.h>" >&5
-$as_echo_n "checking absolute name of <inttypes.h>... " >&6; }
-if ${gl_cv_next_inttypes_h+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-             if test $ac_cv_header_inttypes_h = yes; then
-
-
-               cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <inttypes.h>
-
-_ACEOF
-                                                                                                                        case "$host_os" in
-                 aix*) gl_absname_cpp="$ac_cpp -C" ;;
-                 *)    gl_absname_cpp="$ac_cpp" ;;
-               esac
-
-               case "$host_os" in
-                 mingw*)
-                                                                                                                                     gl_dirsep_regex='[/\\]'
-                   ;;
-                 *)
-                   gl_dirsep_regex='\/'
-                   ;;
-               esac
-                                             gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g'
-
-               gl_header_literal_regex=`echo 'inttypes.h' \
-                                        | sed -e "$gl_make_literal_regex_sed"`
-               gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{
-                   s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/
-                   s|^/[^/]|//&|
-                   p
-                   q
-                 }'
-                                                            gl_cv_next_inttypes_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
-                      sed -n "$gl_absolute_header_sed"`'"'
-          else
-               gl_cv_next_inttypes_h='<'inttypes.h'>'
-             fi
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_inttypes_h" >&5
-$as_echo "$gl_cv_next_inttypes_h" >&6; }
-     fi
-     NEXT_INTTYPES_H=$gl_cv_next_inttypes_h
-
-     if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
-       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
-       gl_next_as_first_directive='<'inttypes.h'>'
-     else
-       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
-       gl_next_as_first_directive=$gl_cv_next_inttypes_h
-     fi
-     NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H=$gl_next_as_first_directive
-
-
-
-
-
-
-
-
-    for gl_func in imaxabs imaxdiv strtoimax strtoumax; do
-    as_gl_Symbol=`$as_echo "gl_cv_have_raw_decl_$gl_func" | $as_tr_sh`
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $gl_func is declared without a macro" >&5
-$as_echo_n "checking whether $gl_func is declared without a macro... " >&6; }
-if eval \${$as_gl_Symbol+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <inttypes.h>
-
-int
-main ()
-{
-#undef $gl_func
-  (void) $gl_func;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  eval "$as_gl_Symbol=yes"
-else
-  eval "$as_gl_Symbol=no"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-eval ac_res=\$$as_gl_Symbol
-              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-    if eval test \"x\$"$as_gl_Symbol"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_RAW_DECL_$gl_func" | $as_tr_cpp` 1
-_ACEOF
-
-                     eval ac_cv_have_decl_$gl_func=yes
-fi
-      done
-
-
-
-  for ac_header in inttypes.h
-do :
-  ac_fn_c_check_header_mongrel "$LINENO" "inttypes.h" "ac_cv_header_inttypes_h" "$ac_includes_default"
-if test "x$ac_cv_header_inttypes_h" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_INTTYPES_H 1
-_ACEOF
-
-fi
-
-done
-
-  if test $ac_cv_header_inttypes_h = yes; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the inttypes.h PRIxNN macros are broken" >&5
-$as_echo_n "checking whether the inttypes.h PRIxNN macros are broken... " >&6; }
-if ${gt_cv_inttypes_pri_broken+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#include <inttypes.h>
-#ifdef PRId32
-char *p = PRId32;
-#endif
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  gt_cv_inttypes_pri_broken=no
-else
-  gt_cv_inttypes_pri_broken=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_inttypes_pri_broken" >&5
-$as_echo "$gt_cv_inttypes_pri_broken" >&6; }
-  fi
-  if test "$gt_cv_inttypes_pri_broken" = yes; then
-
-cat >>confdefs.h <<_ACEOF
-#define PRI_MACROS_BROKEN 1
-_ACEOF
-
-    PRI_MACROS_BROKEN=1
-  else
-    PRI_MACROS_BROKEN=0
-  fi
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for nl_langinfo and CODESET" >&5
-$as_echo_n "checking for nl_langinfo and CODESET... " >&6; }
-if ${am_cv_langinfo_codeset+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <langinfo.h>
-int
-main ()
-{
-char* cs = nl_langinfo(CODESET); return !cs;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  am_cv_langinfo_codeset=yes
-else
-  am_cv_langinfo_codeset=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_langinfo_codeset" >&5
-$as_echo "$am_cv_langinfo_codeset" >&6; }
-  if test $am_cv_langinfo_codeset = yes; then
-
-$as_echo "#define HAVE_LANGINFO_CODESET 1" >>confdefs.h
-
-  fi
-
-
-
-
-
-
-
-
-
-
-  for ac_func in $gl_func_list
-do :
-  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-
-
-
-
-
-
-
-
-  :
-
-
-
-
-
-
-  :
-
-
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working fcntl.h" >&5
-$as_echo_n "checking for working fcntl.h... " >&6; }
-if ${gl_cv_header_working_fcntl_h+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "$cross_compiling" = yes; then :
-  gl_cv_header_working_fcntl_h=cross-compiling
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <sys/types.h>
-           #include <sys/stat.h>
-           #if HAVE_UNISTD_H
-           # include <unistd.h>
-           #else /* on Windows with MSVC */
-           # include <io.h>
-           # include <stdlib.h>
-           # defined sleep(n) _sleep ((n) * 1000)
-           #endif
-           #include <fcntl.h>
-           #ifndef O_NOATIME
-            #define O_NOATIME 0
-           #endif
-           #ifndef O_NOFOLLOW
-            #define O_NOFOLLOW 0
-           #endif
-           static int const constants[] =
-            {
-              O_CREAT, O_EXCL, O_NOCTTY, O_TRUNC, O_APPEND,
-              O_NONBLOCK, O_SYNC, O_ACCMODE, O_RDONLY, O_RDWR, O_WRONLY
-            };
-
-int
-main ()
-{
-
-            int result = !constants;
-            #if HAVE_SYMLINK
-            {
-              static char const sym[] = "conftest.sym";
-              if (symlink ("/dev/null", sym) != 0)
-                result |= 2;
-              else
-                {
-                  int fd = open (sym, O_WRONLY | O_NOFOLLOW | O_CREAT, 0);
-                  if (fd >= 0)
-                    {
-                      close (fd);
-                      result |= 4;
-                    }
-                }
-              if (unlink (sym) != 0 || symlink (".", sym) != 0)
-                result |= 2;
-              else
-                {
-                  int fd = open (sym, O_RDONLY | O_NOFOLLOW);
-                  if (fd >= 0)
-                    {
-                      close (fd);
-                      result |= 4;
-                    }
-                }
-              unlink (sym);
-            }
-            #endif
-            {
-              static char const file[] = "confdefs.h";
-              int fd = open (file, O_RDONLY | O_NOATIME);
-              if (fd < 0)
-                result |= 8;
-              else
-                {
-                  struct stat st0;
-                  if (fstat (fd, &st0) != 0)
-                    result |= 16;
-                  else
-                    {
-                      char c;
-                      sleep (1);
-                      if (read (fd, &c, 1) != 1)
-                        result |= 24;
-                      else
-                        {
-                          if (close (fd) != 0)
-                            result |= 32;
-                          else
-                            {
-                              struct stat st1;
-                              if (stat (file, &st1) != 0)
-                                result |= 40;
-                              else
-                                if (st0.st_atime != st1.st_atime)
-                                  result |= 64;
-                            }
-                        }
-                    }
-                }
-            }
-            return result;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  gl_cv_header_working_fcntl_h=yes
-else
-  case $? in #(
-        4) gl_cv_header_working_fcntl_h='no (bad O_NOFOLLOW)';; #(
-        64) gl_cv_header_working_fcntl_h='no (bad O_NOATIME)';; #(
-        68) gl_cv_header_working_fcntl_h='no (bad O_NOATIME, O_NOFOLLOW)';; #(
-         *) gl_cv_header_working_fcntl_h='no';;
-        esac
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_working_fcntl_h" >&5
-$as_echo "$gl_cv_header_working_fcntl_h" >&6; }
-
-  case $gl_cv_header_working_fcntl_h in #(
-  *O_NOATIME* | no | cross-compiling) ac_val=0;; #(
-  *) ac_val=1;;
-  esac
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_WORKING_O_NOATIME $ac_val
-_ACEOF
-
-
-  case $gl_cv_header_working_fcntl_h in #(
-  *O_NOFOLLOW* | no | cross-compiling) ac_val=0;; #(
-  *) ac_val=1;;
-  esac
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_WORKING_O_NOFOLLOW $ac_val
-_ACEOF
-
-
-
-      ac_fn_c_check_decl "$LINENO" "getc_unlocked" "ac_cv_have_decl_getc_unlocked" "$ac_includes_default"
-if test "x$ac_cv_have_decl_getc_unlocked" = xyes; then :
-  ac_have_decl=1
-else
-  ac_have_decl=0
-fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_GETC_UNLOCKED $ac_have_decl
-_ACEOF
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C Library >= 2.1 or uClibc" >&5
-$as_echo_n "checking whether we are using the GNU C Library >= 2.1 or uClibc... " >&6; }
-if ${ac_cv_gnu_library_2_1+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#include <features.h>
-#ifdef __GNU_LIBRARY__
- #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2)
-  Lucky GNU user
- #endif
-#endif
-#ifdef __UCLIBC__
- Lucky user
-#endif
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "Lucky" >/dev/null 2>&1; then :
-  ac_cv_gnu_library_2_1=yes
-else
-  ac_cv_gnu_library_2_1=no
-fi
-rm -f conftest*
-
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_gnu_library_2_1" >&5
-$as_echo "$ac_cv_gnu_library_2_1" >&6; }
-
-    GLIBC21="$ac_cv_gnu_library_2_1"
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdbool.h that conforms to C99" >&5
-$as_echo_n "checking for stdbool.h that conforms to C99... " >&6; }
-if ${ac_cv_header_stdbool_h+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-             #include <stdbool.h>
-             #ifndef bool
-              "error: bool is not defined"
-             #endif
-             #ifndef false
-              "error: false is not defined"
-             #endif
-             #if false
-              "error: false is not 0"
-             #endif
-             #ifndef true
-              "error: true is not defined"
-             #endif
-             #if true != 1
-              "error: true is not 1"
-             #endif
-             #ifndef __bool_true_false_are_defined
-              "error: __bool_true_false_are_defined is not defined"
-             #endif
-
-             struct s { _Bool s: 1; _Bool t; } s;
-
-             char a[true == 1 ? 1 : -1];
-             char b[false == 0 ? 1 : -1];
-             char c[__bool_true_false_are_defined == 1 ? 1 : -1];
-             char d[(bool) 0.5 == true ? 1 : -1];
-             /* See body of main program for 'e'.  */
-             char f[(_Bool) 0.0 == false ? 1 : -1];
-             char g[true];
-             char h[sizeof (_Bool)];
-             char i[sizeof s.t];
-             enum { j = false, k = true, l = false * true, m = true * 256 };
-             /* The following fails for
-                HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */
-             _Bool n[m];
-             char o[sizeof n == m * sizeof n[0] ? 1 : -1];
-             char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1];
-             /* Catch a bug in an HP-UX C compiler.  See
-                http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html
-                http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html
-              */
-             _Bool q = true;
-             _Bool *pq = &q;
-
-int
-main ()
-{
-
-             bool e = &s;
-             *pq |= q;
-             *pq |= ! q;
-             /* Refer to every declared value, to avoid compiler optimizations.  */
-             return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l
-                     + !m + !n + !o + !p + !q + !pq);
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_header_stdbool_h=yes
-else
-  ac_cv_header_stdbool_h=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5
-$as_echo "$ac_cv_header_stdbool_h" >&6; }
-   ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default"
-if test "x$ac_cv_type__Bool" = xyes; then :
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE__BOOL 1
-_ACEOF
-
-
-fi
-
-
-
-    REPLACE_NULL=0;
-  HAVE_WCHAR_T=1;
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wchar_t" >&5
-$as_echo_n "checking for wchar_t... " >&6; }
-if ${gt_cv_c_wchar_t+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stddef.h>
-            wchar_t foo = (wchar_t)'\0';
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  gt_cv_c_wchar_t=yes
-else
-  gt_cv_c_wchar_t=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_c_wchar_t" >&5
-$as_echo "$gt_cv_c_wchar_t" >&6; }
-  if test $gt_cv_c_wchar_t = yes; then
-
-$as_echo "#define HAVE_WCHAR_T 1" >>confdefs.h
-
-  fi
-
-
-
-
-
-
-
-gl_libunistring_sed_extract_major='/^[0-9]/{s/^\([0-9]*\).*/\1/p;q;}
-i\
-0
-q
-'
-gl_libunistring_sed_extract_minor='/^[0-9][0-9]*[.][0-9]/{s/^[0-9]*[.]\([0-9]*\).*/\1/p;q;}
-i\
-0
-q
-'
-gl_libunistring_sed_extract_subminor='/^[0-9][0-9]*[.][0-9][0-9]*[.][0-9]/{s/^[0-9]*[.][0-9]*[.]\([0-9]*\).*/\1/p;q;}
-i\
-0
-q
-'
-
-
-  if test "$HAVE_LIBUNISTRING" = yes; then
-    LIBUNISTRING_VERSION_MAJOR=`echo "$LIBUNISTRING_VERSION" | sed -n -e "$gl_libunistring_sed_extract_major"`
-    LIBUNISTRING_VERSION_MINOR=`echo "$LIBUNISTRING_VERSION" | sed -n -e "$gl_libunistring_sed_extract_minor"`
-    LIBUNISTRING_VERSION_SUBMINOR=`echo "$LIBUNISTRING_VERSION" | sed -n -e "$gl_libunistring_sed_extract_subminor"`
-  fi
-
-
-  GNULIB_BTOWC=0;
-  GNULIB_WCTOB=0;
-  GNULIB_MBSINIT=0;
-  GNULIB_MBRTOWC=0;
-  GNULIB_MBRLEN=0;
-  GNULIB_MBSRTOWCS=0;
-  GNULIB_MBSNRTOWCS=0;
-  GNULIB_WCRTOMB=0;
-  GNULIB_WCSRTOMBS=0;
-  GNULIB_WCSNRTOMBS=0;
-  GNULIB_WCWIDTH=0;
-  GNULIB_WMEMCHR=0;
-  GNULIB_WMEMCMP=0;
-  GNULIB_WMEMCPY=0;
-  GNULIB_WMEMMOVE=0;
-  GNULIB_WMEMSET=0;
-  GNULIB_WCSLEN=0;
-  GNULIB_WCSNLEN=0;
-  GNULIB_WCSCPY=0;
-  GNULIB_WCPCPY=0;
-  GNULIB_WCSNCPY=0;
-  GNULIB_WCPNCPY=0;
-  GNULIB_WCSCAT=0;
-  GNULIB_WCSNCAT=0;
-  GNULIB_WCSCMP=0;
-  GNULIB_WCSNCMP=0;
-  GNULIB_WCSCASECMP=0;
-  GNULIB_WCSNCASECMP=0;
-  GNULIB_WCSCOLL=0;
-  GNULIB_WCSXFRM=0;
-  GNULIB_WCSDUP=0;
-  GNULIB_WCSCHR=0;
-  GNULIB_WCSRCHR=0;
-  GNULIB_WCSCSPN=0;
-  GNULIB_WCSSPN=0;
-  GNULIB_WCSPBRK=0;
-  GNULIB_WCSSTR=0;
-  GNULIB_WCSTOK=0;
-  GNULIB_WCSWIDTH=0;
-    HAVE_BTOWC=1;
-  HAVE_MBSINIT=1;
-  HAVE_MBRTOWC=1;
-  HAVE_MBRLEN=1;
-  HAVE_MBSRTOWCS=1;
-  HAVE_MBSNRTOWCS=1;
-  HAVE_WCRTOMB=1;
-  HAVE_WCSRTOMBS=1;
-  HAVE_WCSNRTOMBS=1;
-  HAVE_WMEMCHR=1;
-  HAVE_WMEMCMP=1;
-  HAVE_WMEMCPY=1;
-  HAVE_WMEMMOVE=1;
-  HAVE_WMEMSET=1;
-  HAVE_WCSLEN=1;
-  HAVE_WCSNLEN=1;
-  HAVE_WCSCPY=1;
-  HAVE_WCPCPY=1;
-  HAVE_WCSNCPY=1;
-  HAVE_WCPNCPY=1;
-  HAVE_WCSCAT=1;
-  HAVE_WCSNCAT=1;
-  HAVE_WCSCMP=1;
-  HAVE_WCSNCMP=1;
-  HAVE_WCSCASECMP=1;
-  HAVE_WCSNCASECMP=1;
-  HAVE_WCSCOLL=1;
-  HAVE_WCSXFRM=1;
-  HAVE_WCSDUP=1;
-  HAVE_WCSCHR=1;
-  HAVE_WCSRCHR=1;
-  HAVE_WCSCSPN=1;
-  HAVE_WCSSPN=1;
-  HAVE_WCSPBRK=1;
-  HAVE_WCSSTR=1;
-  HAVE_WCSTOK=1;
-  HAVE_WCSWIDTH=1;
-  HAVE_DECL_WCTOB=1;
-  HAVE_DECL_WCWIDTH=1;
-  REPLACE_MBSTATE_T=0;
-  REPLACE_BTOWC=0;
-  REPLACE_WCTOB=0;
-  REPLACE_MBSINIT=0;
-  REPLACE_MBRTOWC=0;
-  REPLACE_MBRLEN=0;
-  REPLACE_MBSRTOWCS=0;
-  REPLACE_MBSNRTOWCS=0;
-  REPLACE_WCRTOMB=0;
-  REPLACE_WCSRTOMBS=0;
-  REPLACE_WCSNRTOMBS=0;
-  REPLACE_WCWIDTH=0;
-  REPLACE_WCSWIDTH=0;
-
-
-            { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether <wchar.h> uses 'inline' correctly" >&5
-$as_echo_n "checking whether <wchar.h> uses 'inline' correctly... " >&6; }
-if ${gl_cv_header_wchar_h_correct_inline+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  gl_cv_header_wchar_h_correct_inline=yes
-     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-       #define wcstod renamed_wcstod
-/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
-   <wchar.h>.
-   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
-   included before <wchar.h>.  */
-#include <stddef.h>
-#include <stdio.h>
-#include <time.h>
-#include <wchar.h>
-extern int zero (void);
-int main () { return zero(); }
-
-_ACEOF
-     if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-       mv conftest.$ac_objext conftest1.$ac_objext
-       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-         #define wcstod renamed_wcstod
-/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
-   <wchar.h>.
-   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
-   included before <wchar.h>.  */
-#include <stddef.h>
-#include <stdio.h>
-#include <time.h>
-#include <wchar.h>
-int zero (void) { return 0; }
-
-_ACEOF
-       if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-         mv conftest.$ac_objext conftest2.$ac_objext
-         if $CC -o conftest$ac_exeext $CFLAGS $LDFLAGS conftest1.$ac_objext conftest2.$ac_objext $LIBS >&5 2>&1; then
-           :
-         else
-           gl_cv_header_wchar_h_correct_inline=no
-         fi
-       fi
-     fi
-     rm -f conftest1.$ac_objext conftest2.$ac_objext conftest$ac_exeext
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_wchar_h_correct_inline" >&5
-$as_echo "$gl_cv_header_wchar_h_correct_inline" >&6; }
-  if test $gl_cv_header_wchar_h_correct_inline = no; then
-    as_fn_error $? "<wchar.h> cannot be used with this compiler ($CC $CFLAGS $CPPFLAGS).
-This is a known interoperability problem of glibc <= 2.5 with gcc >= 4.3 in
-C99 mode. You have four options:
-  - Add the flag -fgnu89-inline to CC and reconfigure, or
-  - Fix your include files, using parts of
-    <http://sourceware.org/git/?p=glibc.git;a=commitdiff;h=b037a293a48718af30d706c2e18c929d0e69a621>, or
-  - Use a gcc version older than 4.3, or
-  - Don't use the flags -std=c99 or -std=gnu99.
-Configuration aborted." "$LINENO" 5
-  fi
-
-
-
-
-
-
-
-
-  :
-
-
-
-
-
-  if test $ac_cv_header_features_h = yes; then
-    HAVE_FEATURES_H=1
-  else
-    HAVE_FEATURES_H=0
-  fi
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wint_t" >&5
-$as_echo_n "checking for wint_t... " >&6; }
-if ${gt_cv_c_wint_t+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
-   <wchar.h>.
-   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included
-   before <wchar.h>.  */
-#include <stddef.h>
-#include <stdio.h>
-#include <time.h>
-#include <wchar.h>
-            wint_t foo = (wchar_t)'\0';
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  gt_cv_c_wint_t=yes
-else
-  gt_cv_c_wint_t=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_c_wint_t" >&5
-$as_echo "$gt_cv_c_wint_t" >&6; }
-  if test $gt_cv_c_wint_t = yes; then
-
-$as_echo "#define HAVE_WINT_T 1" >>confdefs.h
-
-  fi
-
-
-  GNULIB_ISWBLANK=0;
-  GNULIB_WCTYPE=0;
-  GNULIB_ISWCTYPE=0;
-  GNULIB_WCTRANS=0;
-  GNULIB_TOWCTRANS=0;
-    HAVE_ISWBLANK=1;
-  HAVE_WCTYPE_T=1;
-  HAVE_WCTRANS_T=1;
-  REPLACE_ISWBLANK=0;
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-gl_m4_base='m4'
-
-
-
-
-
-
-
-
-
-gl_source_base='lib'
-
-          if test "x$datarootdir" = x; then
-    datarootdir='${datadir}'
-
-  fi
-    if test "x$docdir" = x; then
-    docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
-
-  fi
-    if test "x$htmldir" = x; then
-    htmldir='${docdir}'
-
-  fi
-  if test "x$dvidir" = x; then
-    dvidir='${docdir}'
-
-  fi
-  if test "x$pdfdir" = x; then
-    pdfdir='${docdir}'
-
-  fi
-  if test "x$psdir" = x; then
-    psdir='${docdir}'
-
-  fi
-  if test "x$lispdir" = x; then
-    lispdir='${datarootdir}/emacs/site-lisp'
-
-  fi
-  if test "x$localedir" = x; then
-    localedir='${datarootdir}/locale'
-
-  fi
-    if test "x$runstatedir" = x; then
-    runstatedir='${localstatedir}/run'
-
-  fi
-
-      pkglibexecdir='${libexecdir}/${PACKAGE}'
-
-
-
-
-
-
-
-
-  PRIPTR_PREFIX=
-  if test -n "$STDINT_H"; then
-        PRIPTR_PREFIX='"l"'
-  else
-        for glpfx in '' l ll I64; do
-      case $glpfx in
-        '')  gltype1='int';;
-        l)   gltype1='long int';;
-        ll)  gltype1='long long int';;
-        I64) gltype1='__int64';;
-      esac
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdint.h>
-           extern intptr_t foo;
-           extern $gltype1 foo;
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  PRIPTR_PREFIX='"'$glpfx'"'
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-      test -n "$PRIPTR_PREFIX" && break
-    done
-  fi
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether INT32_MAX < INTMAX_MAX" >&5
-$as_echo_n "checking whether INT32_MAX < INTMAX_MAX... " >&6; }
-if ${gl_cv_test_INT32_MAX_LT_INTMAX_MAX+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-/* Work also in C++ mode.  */
-            #define __STDC_LIMIT_MACROS 1
-
-            /* Work if build is not clean.  */
-            #define _GL_JUST_INCLUDE_SYSTEM_STDINT_H
-
-            #include <limits.h>
-            #if HAVE_STDINT_H
-             #include <stdint.h>
-            #endif
-
-            #if defined INT32_MAX && defined INTMAX_MAX
-             #define CONDITION (INT32_MAX < INTMAX_MAX)
-            #elif HAVE_LONG_LONG_INT
-             #define CONDITION (sizeof (int) < sizeof (long long int))
-            #else
-             #define CONDITION 0
-            #endif
-            int test[CONDITION ? 1 : -1];
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  gl_cv_test_INT32_MAX_LT_INTMAX_MAX=yes
-else
-  gl_cv_test_INT32_MAX_LT_INTMAX_MAX=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_test_INT32_MAX_LT_INTMAX_MAX" >&5
-$as_echo "$gl_cv_test_INT32_MAX_LT_INTMAX_MAX" >&6; }
-  if test $gl_cv_test_INT32_MAX_LT_INTMAX_MAX = yes; then
-    INT32_MAX_LT_INTMAX_MAX=1;
-  else
-    INT32_MAX_LT_INTMAX_MAX=0;
-  fi
-
-
-  if test $APPLE_UNIVERSAL_BUILD = 0; then
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether INT64_MAX == LONG_MAX" >&5
-$as_echo_n "checking whether INT64_MAX == LONG_MAX... " >&6; }
-if ${gl_cv_test_INT64_MAX_EQ_LONG_MAX+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-/* Work also in C++ mode.  */
-            #define __STDC_LIMIT_MACROS 1
-
-            /* Work if build is not clean.  */
-            #define _GL_JUST_INCLUDE_SYSTEM_STDINT_H
-
-            #include <limits.h>
-            #if HAVE_STDINT_H
-             #include <stdint.h>
-            #endif
-
-            #if defined INT64_MAX
-             #define CONDITION (INT64_MAX == LONG_MAX)
-            #elif HAVE_LONG_LONG_INT
-             #define CONDITION (sizeof (long long int) == sizeof (long int))
-            #else
-             #define CONDITION 0
-            #endif
-            int test[CONDITION ? 1 : -1];
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  gl_cv_test_INT64_MAX_EQ_LONG_MAX=yes
-else
-  gl_cv_test_INT64_MAX_EQ_LONG_MAX=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_test_INT64_MAX_EQ_LONG_MAX" >&5
-$as_echo "$gl_cv_test_INT64_MAX_EQ_LONG_MAX" >&6; }
-  if test $gl_cv_test_INT64_MAX_EQ_LONG_MAX = yes; then
-    INT64_MAX_EQ_LONG_MAX=1;
-  else
-    INT64_MAX_EQ_LONG_MAX=0;
-  fi
-
-
-  else
-    INT64_MAX_EQ_LONG_MAX=-1
-  fi
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether UINT32_MAX < UINTMAX_MAX" >&5
-$as_echo_n "checking whether UINT32_MAX < UINTMAX_MAX... " >&6; }
-if ${gl_cv_test_UINT32_MAX_LT_UINTMAX_MAX+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-/* Work also in C++ mode.  */
-            #define __STDC_LIMIT_MACROS 1
-
-            /* Work if build is not clean.  */
-            #define _GL_JUST_INCLUDE_SYSTEM_STDINT_H
-
-            #include <limits.h>
-            #if HAVE_STDINT_H
-             #include <stdint.h>
-            #endif
-
-            #if defined UINT32_MAX && defined UINTMAX_MAX
-             #define CONDITION (UINT32_MAX < UINTMAX_MAX)
-            #elif HAVE_LONG_LONG_INT
-             #define CONDITION (sizeof (unsigned int) < sizeof (unsigned long long int))
-            #else
-             #define CONDITION 0
-            #endif
-            int test[CONDITION ? 1 : -1];
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  gl_cv_test_UINT32_MAX_LT_UINTMAX_MAX=yes
-else
-  gl_cv_test_UINT32_MAX_LT_UINTMAX_MAX=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_test_UINT32_MAX_LT_UINTMAX_MAX" >&5
-$as_echo "$gl_cv_test_UINT32_MAX_LT_UINTMAX_MAX" >&6; }
-  if test $gl_cv_test_UINT32_MAX_LT_UINTMAX_MAX = yes; then
-    UINT32_MAX_LT_UINTMAX_MAX=1;
-  else
-    UINT32_MAX_LT_UINTMAX_MAX=0;
-  fi
-
-
-  if test $APPLE_UNIVERSAL_BUILD = 0; then
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether UINT64_MAX == ULONG_MAX" >&5
-$as_echo_n "checking whether UINT64_MAX == ULONG_MAX... " >&6; }
-if ${gl_cv_test_UINT64_MAX_EQ_ULONG_MAX+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-/* Work also in C++ mode.  */
-            #define __STDC_LIMIT_MACROS 1
-
-            /* Work if build is not clean.  */
-            #define _GL_JUST_INCLUDE_SYSTEM_STDINT_H
-
-            #include <limits.h>
-            #if HAVE_STDINT_H
-             #include <stdint.h>
-            #endif
-
-            #if defined UINT64_MAX
-             #define CONDITION (UINT64_MAX == ULONG_MAX)
-            #elif HAVE_LONG_LONG_INT
-             #define CONDITION (sizeof (unsigned long long int) == sizeof (unsigned long int))
-            #else
-             #define CONDITION 0
-            #endif
-            int test[CONDITION ? 1 : -1];
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  gl_cv_test_UINT64_MAX_EQ_ULONG_MAX=yes
-else
-  gl_cv_test_UINT64_MAX_EQ_ULONG_MAX=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_test_UINT64_MAX_EQ_ULONG_MAX" >&5
-$as_echo "$gl_cv_test_UINT64_MAX_EQ_ULONG_MAX" >&6; }
-  if test $gl_cv_test_UINT64_MAX_EQ_ULONG_MAX = yes; then
-    UINT64_MAX_EQ_ULONG_MAX=1;
-  else
-    UINT64_MAX_EQ_ULONG_MAX=0;
-  fi
-
-
-  else
-    UINT64_MAX_EQ_ULONG_MAX=-1
-  fi
-
-
-
-
-
-
-
-  :
-
-
-
-
-
-
-
-
-
-  LOCALCHARSET_TESTS_ENVIRONMENT="CHARSETALIASDIR=\"\$(abs_top_builddir)/$gl_source_base\""
-
-
-
-
-
-  # Define two additional variables used in the Makefile substitution.
-
-  if test "$ac_cv_header_stdbool_h" = yes; then
-    STDBOOL_H=''
-  else
-    STDBOOL_H='stdbool.h'
-  fi
-
-   if test -n "$STDBOOL_H"; then
-  GL_GENERATE_STDBOOL_H_TRUE=
-  GL_GENERATE_STDBOOL_H_FALSE='#'
-else
-  GL_GENERATE_STDBOOL_H_TRUE='#'
-  GL_GENERATE_STDBOOL_H_FALSE=
-fi
-
-
-  if test "$ac_cv_type__Bool" = yes; then
-    HAVE__BOOL=1
-  else
-    HAVE__BOOL=0
-  fi
-
-
-
-
-
-  STDDEF_H=
-  if test $gt_cv_c_wchar_t = no; then
-    HAVE_WCHAR_T=0
-    STDDEF_H=stddef.h
-  fi
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NULL can be used in arbitrary expressions" >&5
-$as_echo_n "checking whether NULL can be used in arbitrary expressions... " >&6; }
-if ${gl_cv_decl_null_works+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stddef.h>
-      int test[2 * (sizeof NULL == sizeof (void *)) -1];
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  gl_cv_decl_null_works=yes
-else
-  gl_cv_decl_null_works=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_decl_null_works" >&5
-$as_echo "$gl_cv_decl_null_works" >&6; }
-  if test $gl_cv_decl_null_works = no; then
-    REPLACE_NULL=1
-    STDDEF_H=stddef.h
-  fi
-
-   if test -n "$STDDEF_H"; then
-  GL_GENERATE_STDDEF_H_TRUE=
-  GL_GENERATE_STDDEF_H_FALSE='#'
-else
-  GL_GENERATE_STDDEF_H_TRUE='#'
-  GL_GENERATE_STDDEF_H_FALSE=
-fi
-
-  if test -n "$STDDEF_H"; then
-
-
-
-
-
-
-
-
-     if test $gl_cv_have_include_next = yes; then
-       gl_cv_next_stddef_h='<'stddef.h'>'
-     else
-       { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <stddef.h>" >&5
-$as_echo_n "checking absolute name of <stddef.h>... " >&6; }
-if ${gl_cv_next_stddef_h+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-               cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stddef.h>
-
-_ACEOF
-                                                                                                                        case "$host_os" in
-                 aix*) gl_absname_cpp="$ac_cpp -C" ;;
-                 *)    gl_absname_cpp="$ac_cpp" ;;
-               esac
-
-               case "$host_os" in
-                 mingw*)
-                                                                                                                                     gl_dirsep_regex='[/\\]'
-                   ;;
-                 *)
-                   gl_dirsep_regex='\/'
-                   ;;
-               esac
-                                             gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g'
-
-               gl_header_literal_regex=`echo 'stddef.h' \
-                                        | sed -e "$gl_make_literal_regex_sed"`
-               gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{
-                   s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/
-                   s|^/[^/]|//&|
-                   p
-                   q
-                 }'
-                                                            gl_cv_next_stddef_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
-                      sed -n "$gl_absolute_header_sed"`'"'
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_stddef_h" >&5
-$as_echo "$gl_cv_next_stddef_h" >&6; }
-     fi
-     NEXT_STDDEF_H=$gl_cv_next_stddef_h
-
-     if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
-       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
-       gl_next_as_first_directive='<'stddef.h'>'
-     else
-       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
-       gl_next_as_first_directive=$gl_cv_next_stddef_h
-     fi
-     NEXT_AS_FIRST_DIRECTIVE_STDDEF_H=$gl_next_as_first_directive
-
-
-
-
-  fi
-
-
-
-
-      if  { test "$HAVE_LIBUNISTRING" != yes \
-    || {
-
-
-
-            test $LIBUNISTRING_VERSION_MAJOR -lt 0 \
-            || { test $LIBUNISTRING_VERSION_MAJOR -eq 0 \
-                 && { test $LIBUNISTRING_VERSION_MINOR -lt 9 \
-                      || { test $LIBUNISTRING_VERSION_MINOR -eq 9 \
-                           && test $LIBUNISTRING_VERSION_SUBMINOR -lt 0
-                         }
-                    }
-               }
-
-
-
-
-       }
-  }; then
-    LIBUNISTRING_UNITYPES_H='unitypes.h'
-  else
-    LIBUNISTRING_UNITYPES_H=
-  fi
-
-
-
-
-      if  { test "$HAVE_LIBUNISTRING" != yes \
-    || {
-
-
-
-            test $LIBUNISTRING_VERSION_MAJOR -lt 0 \
-            || { test $LIBUNISTRING_VERSION_MAJOR -eq 0 \
-                 && { test $LIBUNISTRING_VERSION_MINOR -lt 9 \
-                      || { test $LIBUNISTRING_VERSION_MINOR -eq 9 \
-                           && test $LIBUNISTRING_VERSION_SUBMINOR -lt 0
-                         }
-                    }
-               }
-
-
-
-
-       }
-  }; then
-    LIBUNISTRING_UNIWIDTH_H='uniwidth.h'
-  else
-    LIBUNISTRING_UNIWIDTH_H=
-  fi
-
-
-
-
-       if  { test "$HAVE_LIBUNISTRING" != yes \
-    || {
-
-
-
-            test $LIBUNISTRING_VERSION_MAJOR -lt 0 \
-            || { test $LIBUNISTRING_VERSION_MAJOR -eq 0 \
-                 && { test $LIBUNISTRING_VERSION_MINOR -lt 9 \
-                      || { test $LIBUNISTRING_VERSION_MINOR -eq 9 \
-                           && test $LIBUNISTRING_VERSION_SUBMINOR -lt 4
-                         }
-                    }
-               }
-
-
-
-
-       }
-  }; then
-  LIBUNISTRING_COMPILE_UNIWIDTH_WIDTH_TRUE=
-  LIBUNISTRING_COMPILE_UNIWIDTH_WIDTH_FALSE='#'
-else
-  LIBUNISTRING_COMPILE_UNIWIDTH_WIDTH_TRUE='#'
-  LIBUNISTRING_COMPILE_UNIWIDTH_WIDTH_FALSE=
-fi
-
-
-
-
-
-
-
-
-
-
-
-  :
-
-
-
-
-
-
-
-
-     if test $gl_cv_have_include_next = yes; then
-       gl_cv_next_wchar_h='<'wchar.h'>'
-     else
-       { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <wchar.h>" >&5
-$as_echo_n "checking absolute name of <wchar.h>... " >&6; }
-if ${gl_cv_next_wchar_h+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-             if test $ac_cv_header_wchar_h = yes; then
-
-
-               cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <wchar.h>
-
-_ACEOF
-                                                                                                                        case "$host_os" in
-                 aix*) gl_absname_cpp="$ac_cpp -C" ;;
-                 *)    gl_absname_cpp="$ac_cpp" ;;
-               esac
-
-               case "$host_os" in
-                 mingw*)
-                                                                                                                                     gl_dirsep_regex='[/\\]'
-                   ;;
-                 *)
-                   gl_dirsep_regex='\/'
-                   ;;
-               esac
-                                             gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g'
-
-               gl_header_literal_regex=`echo 'wchar.h' \
-                                        | sed -e "$gl_make_literal_regex_sed"`
-               gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{
-                   s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/
-                   s|^/[^/]|//&|
-                   p
-                   q
-                 }'
-                                                            gl_cv_next_wchar_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
-                      sed -n "$gl_absolute_header_sed"`'"'
-          else
-               gl_cv_next_wchar_h='<'wchar.h'>'
-             fi
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_wchar_h" >&5
-$as_echo "$gl_cv_next_wchar_h" >&6; }
-     fi
-     NEXT_WCHAR_H=$gl_cv_next_wchar_h
-
-     if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
-       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
-       gl_next_as_first_directive='<'wchar.h'>'
-     else
-       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
-       gl_next_as_first_directive=$gl_cv_next_wchar_h
-     fi
-     NEXT_AS_FIRST_DIRECTIVE_WCHAR_H=$gl_next_as_first_directive
-
-
-
-
-  if test $ac_cv_header_wchar_h = yes; then
-    HAVE_WCHAR_H=1
-  else
-    HAVE_WCHAR_H=0
-  fi
-
-
-
-
-
-  if test $gt_cv_c_wint_t = yes; then
-    HAVE_WINT_T=1
-  else
-    HAVE_WINT_T=0
-  fi
-
-
-
-    for gl_func in btowc wctob mbsinit mbrtowc mbrlen mbsrtowcs mbsnrtowcs wcrtomb      wcsrtombs wcsnrtombs wcwidth wmemchr wmemcmp wmemcpy wmemmove wmemset      wcslen wcsnlen wcscpy wcpcpy wcsncpy wcpncpy wcscat wcsncat wcscmp      wcsncmp wcscasecmp wcsncasecmp wcscoll wcsxfrm wcsdup wcschr wcsrchr      wcscspn wcsspn wcspbrk wcsstr wcstok wcswidth     ; do
-    as_gl_Symbol=`$as_echo "gl_cv_have_raw_decl_$gl_func" | $as_tr_sh`
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $gl_func is declared without a macro" >&5
-$as_echo_n "checking whether $gl_func is declared without a macro... " >&6; }
-if eval \${$as_gl_Symbol+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
-   <wchar.h>.
-   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
-   included before <wchar.h>.  */
-#if !(defined __GLIBC__ && !defined __UCLIBC__)
-# include <stddef.h>
-# include <stdio.h>
-# include <time.h>
-#endif
-#include <wchar.h>
-
-int
-main ()
-{
-#undef $gl_func
-  (void) $gl_func;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  eval "$as_gl_Symbol=yes"
-else
-  eval "$as_gl_Symbol=no"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-eval ac_res=\$$as_gl_Symbol
-              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-    if eval test \"x\$"$as_gl_Symbol"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_RAW_DECL_$gl_func" | $as_tr_cpp` 1
-_ACEOF
-
-                     eval ac_cv_have_decl_$gl_func=yes
-fi
-      done
-
-
-
-
-
-
-
-  :
-
-
-
-
-
-  if test $ac_cv_func_iswcntrl = yes; then
-    HAVE_ISWCNTRL=1
-  else
-    HAVE_ISWCNTRL=0
-  fi
-
-
-
-  if test $gt_cv_c_wint_t = yes; then
-    HAVE_WINT_T=1
-  else
-    HAVE_WINT_T=0
-  fi
-
-
-
-
-
-
-
-
-  :
-
-
-
-
-
-
-
-
-     if test $gl_cv_have_include_next = yes; then
-       gl_cv_next_wctype_h='<'wctype.h'>'
-     else
-       { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <wctype.h>" >&5
-$as_echo_n "checking absolute name of <wctype.h>... " >&6; }
-if ${gl_cv_next_wctype_h+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-             if test $ac_cv_header_wctype_h = yes; then
-
-
-               cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <wctype.h>
-
-_ACEOF
-                                                                                                                        case "$host_os" in
-                 aix*) gl_absname_cpp="$ac_cpp -C" ;;
-                 *)    gl_absname_cpp="$ac_cpp" ;;
-               esac
-
-               case "$host_os" in
-                 mingw*)
-                                                                                                                                     gl_dirsep_regex='[/\\]'
-                   ;;
-                 *)
-                   gl_dirsep_regex='\/'
-                   ;;
-               esac
-                                             gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g'
-
-               gl_header_literal_regex=`echo 'wctype.h' \
-                                        | sed -e "$gl_make_literal_regex_sed"`
-               gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{
-                   s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/
-                   s|^/[^/]|//&|
-                   p
-                   q
-                 }'
-                                                            gl_cv_next_wctype_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
-                      sed -n "$gl_absolute_header_sed"`'"'
-          else
-               gl_cv_next_wctype_h='<'wctype.h'>'
-             fi
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_wctype_h" >&5
-$as_echo "$gl_cv_next_wctype_h" >&6; }
-     fi
-     NEXT_WCTYPE_H=$gl_cv_next_wctype_h
-
-     if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
-       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
-       gl_next_as_first_directive='<'wctype.h'>'
-     else
-       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
-       gl_next_as_first_directive=$gl_cv_next_wctype_h
-     fi
-     NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H=$gl_next_as_first_directive
-
-
-
-
-  if test $ac_cv_header_wctype_h = yes; then
-    if test $ac_cv_func_iswcntrl = yes; then
-                  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether iswcntrl works" >&5
-$as_echo_n "checking whether iswcntrl works... " >&6; }
-if ${gl_cv_func_iswcntrl_works+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-          if test "$cross_compiling" = yes; then :
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdlib.h>
-                          #if __GNU_LIBRARY__ == 1
-                          Linux libc5 i18n is broken.
-                          #endif
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  gl_cv_func_iswcntrl_works="guessing yes"
-else
-  gl_cv_func_iswcntrl_works="guessing no"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-               /* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be
-                  included before <wchar.h>.
-                  BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h>
-                  must be included before <wchar.h>.  */
-               #include <stddef.h>
-               #include <stdio.h>
-               #include <time.h>
-               #include <wchar.h>
-               #include <wctype.h>
-               int main () { return iswprint ('x') == 0; }
-
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  gl_cv_func_iswcntrl_works=yes
-else
-  gl_cv_func_iswcntrl_works=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_iswcntrl_works" >&5
-$as_echo "$gl_cv_func_iswcntrl_works" >&6; }
-    fi
-    HAVE_WCTYPE_H=1
-  else
-    HAVE_WCTYPE_H=0
-  fi
-
-
-  case "$gl_cv_func_iswcntrl_works" in
-    *yes) REPLACE_ISWCNTRL=0 ;;
-    *)    REPLACE_ISWCNTRL=1 ;;
-  esac
-
-
-  if test $HAVE_ISWCNTRL = 0 || test $REPLACE_ISWCNTRL = 1; then
-        :
-  fi
-
-  if test $REPLACE_ISWCNTRL = 1; then
-    REPLACE_TOWLOWER=1
-  else
-    for ac_func in towlower
-do :
-  ac_fn_c_check_func "$LINENO" "towlower" "ac_cv_func_towlower"
-if test "x$ac_cv_func_towlower" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_TOWLOWER 1
-_ACEOF
-
-fi
-done
-
-    if test $ac_cv_func_towlower = yes; then
-      REPLACE_TOWLOWER=0
-    else
-      ac_fn_c_check_decl "$LINENO" "towlower" "ac_cv_have_decl_towlower" "/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be
-             included before <wchar.h>.
-             BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h>
-             must be included before <wchar.h>.  */
-          #include <stddef.h>
-          #include <stdio.h>
-          #include <time.h>
-          #include <wchar.h>
-          #if HAVE_WCTYPE_H
-          # include <wctype.h>
-          #endif
-
-"
-if test "x$ac_cv_have_decl_towlower" = xyes; then :
-  ac_have_decl=1
-else
-  ac_have_decl=0
-fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_TOWLOWER $ac_have_decl
-_ACEOF
-
-      if test $ac_cv_have_decl_towlower = yes; then
-                                REPLACE_TOWLOWER=1
-      else
-        REPLACE_TOWLOWER=0
-      fi
-    fi
-  fi
-
-
-  if test $HAVE_ISWCNTRL = 0 || test $REPLACE_TOWLOWER = 1; then
-        :
-  fi
-
-          { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wctype_t" >&5
-$as_echo_n "checking for wctype_t... " >&6; }
-if ${gl_cv_type_wctype_t+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be
-               included before <wchar.h>.
-               BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h>
-               must be included before <wchar.h>.  */
-            #include <stddef.h>
-            #include <stdio.h>
-            #include <time.h>
-            #include <wchar.h>
-            #if HAVE_WCTYPE_H
-            # include <wctype.h>
-            #endif
-            wctype_t a;
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  gl_cv_type_wctype_t=yes
-else
-  gl_cv_type_wctype_t=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_type_wctype_t" >&5
-$as_echo "$gl_cv_type_wctype_t" >&6; }
-  if test $gl_cv_type_wctype_t = no; then
-    HAVE_WCTYPE_T=0
-  fi
-
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wctrans_t" >&5
-$as_echo_n "checking for wctrans_t... " >&6; }
-if ${gl_cv_type_wctrans_t+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be
-               included before <wchar.h>.
-               BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h>
-               must be included before <wchar.h>.  */
-            #include <stddef.h>
-            #include <stdio.h>
-            #include <time.h>
-            #include <wchar.h>
-            #include <wctype.h>
-            wctrans_t a;
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  gl_cv_type_wctrans_t=yes
-else
-  gl_cv_type_wctrans_t=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_type_wctrans_t" >&5
-$as_echo "$gl_cv_type_wctrans_t" >&6; }
-  if test $gl_cv_type_wctrans_t = no; then
-    HAVE_WCTRANS_T=0
-  fi
-
-
-    for gl_func in wctype iswctype wctrans towctrans     ; do
-    as_gl_Symbol=`$as_echo "gl_cv_have_raw_decl_$gl_func" | $as_tr_sh`
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $gl_func is declared without a macro" >&5
-$as_echo_n "checking whether $gl_func is declared without a macro... " >&6; }
-if eval \${$as_gl_Symbol+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
-   <wchar.h>.
-   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
-   included before <wchar.h>.  */
-#if !(defined __GLIBC__ && !defined __UCLIBC__)
-# include <stddef.h>
-# include <stdio.h>
-# include <time.h>
-# include <wchar.h>
-#endif
-#include <wctype.h>
-
-int
-main ()
-{
-#undef $gl_func
-  (void) $gl_func;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  eval "$as_gl_Symbol=yes"
-else
-  eval "$as_gl_Symbol=no"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-eval ac_res=\$$as_gl_Symbol
-              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-    if eval test \"x\$"$as_gl_Symbol"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_RAW_DECL_$gl_func" | $as_tr_cpp` 1
-_ACEOF
-
-                     eval ac_cv_have_decl_$gl_func=yes
-fi
-      done
-
-
-
-
-
-
-
-
-
-
-
-  :
-
-
-
-
-
-
-  :
-
-
-
-
-
-
-  ac_fn_c_check_decl "$LINENO" "wcwidth" "ac_cv_have_decl_wcwidth" "
-/* AIX 3.2.5 declares wcwidth in <string.h>. */
-#include <string.h>
-/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
-   <wchar.h>.
-   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included
-   before <wchar.h>.  */
-#include <stddef.h>
-#include <stdio.h>
-#include <time.h>
-#include <wchar.h>
-
-"
-if test "x$ac_cv_have_decl_wcwidth" = xyes; then :
-  ac_have_decl=1
-else
-  ac_have_decl=0
-fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_WCWIDTH $ac_have_decl
-_ACEOF
-
-  if test $ac_cv_have_decl_wcwidth != yes; then
-    HAVE_DECL_WCWIDTH=0
-  fi
-
-  if test $ac_cv_func_wcwidth = yes; then
-    HAVE_WCWIDTH=1
-                    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether wcwidth works reasonably in UTF-8 locales" >&5
-$as_echo_n "checking whether wcwidth works reasonably in UTF-8 locales... " >&6; }
-if ${gl_cv_func_wcwidth_works+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-        if test "$cross_compiling" = yes; then :
-
-           case "$host_os" in
-                     # Guess yes on glibc and AIX 7 systems.
-             *-gnu* | aix[7-9]*) gl_cv_func_wcwidth_works="guessing yes";;
-             *)                  gl_cv_func_wcwidth_works="guessing no";;
-           esac
-
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#include <locale.h>
-/* AIX 3.2.5 declares wcwidth in <string.h>. */
-#include <string.h>
-/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
-   <wchar.h>.
-   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included
-   before <wchar.h>.  */
-#include <stddef.h>
-#include <stdio.h>
-#include <time.h>
-#include <wchar.h>
-#if !HAVE_DECL_WCWIDTH
-extern
-# ifdef __cplusplus
-"C"
-# endif
-int wcwidth (int);
-#endif
-int main ()
-{
-  int result = 0;
-  if (setlocale (LC_ALL, "fr_FR.UTF-8") != NULL)
-    {
-      if (wcwidth (0x0301) > 0)
-        result |= 1;
-      if (wcwidth (0x05B0) > 0)
-        result |= 2;
-      if (wcwidth (0x200B) > 0)
-        result |= 4;
-    }
-  return result;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  gl_cv_func_wcwidth_works=yes
-else
-  gl_cv_func_wcwidth_works=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_wcwidth_works" >&5
-$as_echo "$gl_cv_func_wcwidth_works" >&6; }
-    case "$gl_cv_func_wcwidth_works" in
-      *yes) ;;
-      *no) REPLACE_WCWIDTH=1 ;;
-    esac
-  else
-    HAVE_WCWIDTH=0
-  fi
-
-  if test $HAVE_WCWIDTH = 0 || test $REPLACE_WCWIDTH = 1; then
-
-
-
-
-
-
-
-
-  gl_LIBOBJS="$gl_LIBOBJS wcwidth.$ac_objext"
-
-  fi
-
-
-
-
-
-          GNULIB_WCWIDTH=1
-
-
-
-
-
-$as_echo "#define GNULIB_TEST_WCWIDTH 1" >>confdefs.h
-
-
-
-
-
-
-
-
-
-
-
-
-  LIBGNU_LIBDEPS="$gl_libdeps"
-
-  LIBGNU_LTLIBDEPS="$gl_ltlibdeps"
-
-
-
-ac_config_files="$ac_config_files Makefile lib/Makefile m4/Makefile"
-
-cat >confcache <<\_ACEOF
-# This file is a shell script that caches the results of configure
-# tests run on this system so they can be shared between configure
-# scripts and configure runs, see configure's option --config-cache.
-# It is not useful on other systems.  If it contains results you don't
-# want to keep, you may remove or edit it.
-#
-# config.status only pays attention to the cache file if you give it
-# the --recheck option to rerun configure.
-#
-# `ac_cv_env_foo' variables (set or unset) will be overridden when
-# loading this file, other *unset* `ac_cv_foo' will be assigned the
-# following values.
-
-_ACEOF
-
-# The following way of writing the cache mishandles newlines in values,
-# but we know of no workaround that is simple, portable, and efficient.
-# So, we kill variables containing newlines.
-# Ultrix sh set writes to stderr and can't be redirected directly,
-# and sets the high bit in the cache file unless we assign to the vars.
-(
-  for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
-    eval ac_val=\$$ac_var
-    case $ac_val in #(
-    *${as_nl}*)
-      case $ac_var in #(
-      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
-      esac
-      case $ac_var in #(
-      _ | IFS | as_nl) ;; #(
-      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
-      *) { eval $ac_var=; unset $ac_var;} ;;
-      esac ;;
-    esac
-  done
-
-  (set) 2>&1 |
-    case $as_nl`(ac_space=' '; set) 2>&1` in #(
-    *${as_nl}ac_space=\ *)
-      # `set' does not quote correctly, so add quotes: double-quote
-      # substitution turns \\\\ into \\, and sed turns \\ into \.
-      sed -n \
-       "s/'/'\\\\''/g;
-         s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
-      ;; #(
-    *)
-      # `set' quotes correctly as required by POSIX, so do not add quotes.
-      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
-      ;;
-    esac |
-    sort
-) |
-  sed '
-     /^ac_cv_env_/b end
-     t clear
-     :clear
-     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
-     t end
-     s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
-     :end' >>confcache
-if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
-  if test -w "$cache_file"; then
-    if test "x$cache_file" != "x/dev/null"; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
-$as_echo "$as_me: updating cache $cache_file" >&6;}
-      if test ! -f "$cache_file" || test -h "$cache_file"; then
-       cat confcache >"$cache_file"
-      else
-        case $cache_file in #(
-        */* | ?:*)
-         mv -f confcache "$cache_file"$$ &&
-         mv -f "$cache_file"$$ "$cache_file" ;; #(
-        *)
-         mv -f confcache "$cache_file" ;;
-       esac
-      fi
-    fi
-  else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
-$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
-  fi
-fi
-rm -f confcache
-
-test "x$prefix" = xNONE && prefix=$ac_default_prefix
-# Let make expand exec_prefix.
-test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-
-DEFS=-DHAVE_CONFIG_H
-
-ac_libobjs=
-ac_ltlibobjs=
-U=
-for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
-  # 1. Remove the extension, and $U if already installed.
-  ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
-  ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
-  # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
-  #    will be set to the directory where LIBOBJS objects are built.
-  as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
-  as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
-done
-LIBOBJS=$ac_libobjs
-
-LTLIBOBJS=$ac_ltlibobjs
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5
-$as_echo_n "checking that generated files are newer than configure... " >&6; }
-   if test -n "$am_sleep_pid"; then
-     # Hide warnings about reused PIDs.
-     wait $am_sleep_pid 2>/dev/null
-   fi
-   { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5
-$as_echo "done" >&6; }
- if test -n "$EXEEXT"; then
-  am__EXEEXT_TRUE=
-  am__EXEEXT_FALSE='#'
-else
-  am__EXEEXT_TRUE='#'
-  am__EXEEXT_FALSE=
-fi
-
-if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
-  as_fn_error $? "conditional \"AMDEP\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
-  as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${GL_COND_LIBTOOL_TRUE}" && test -z "${GL_COND_LIBTOOL_FALSE}"; then
-  as_fn_error $? "conditional \"GL_COND_LIBTOOL\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${GL_GENERATE_STDINT_H_TRUE}" && test -z "${GL_GENERATE_STDINT_H_FALSE}"; then
-  as_fn_error $? "conditional \"GL_GENERATE_STDINT_H\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${GL_GENERATE_STDBOOL_H_TRUE}" && test -z "${GL_GENERATE_STDBOOL_H_FALSE}"; then
-  as_fn_error $? "conditional \"GL_GENERATE_STDBOOL_H\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${GL_GENERATE_STDDEF_H_TRUE}" && test -z "${GL_GENERATE_STDDEF_H_FALSE}"; then
-  as_fn_error $? "conditional \"GL_GENERATE_STDDEF_H\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${LIBUNISTRING_COMPILE_UNIWIDTH_WIDTH_TRUE}" && test -z "${LIBUNISTRING_COMPILE_UNIWIDTH_WIDTH_FALSE}"; then
-  as_fn_error $? "conditional \"LIBUNISTRING_COMPILE_UNIWIDTH_WIDTH\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-
-    gl_libobjs=
-    gl_ltlibobjs=
-    if test -n "$gl_LIBOBJS"; then
-      # Remove the extension.
-      sed_drop_objext='s/\.o$//;s/\.obj$//'
-      for i in `for i in $gl_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do
-        gl_libobjs="$gl_libobjs $i.$ac_objext"
-        gl_ltlibobjs="$gl_ltlibobjs $i.lo"
-      done
-    fi
-    gl_LIBOBJS=$gl_libobjs
-
-    gl_LTLIBOBJS=$gl_ltlibobjs
-
-
-
-: "${CONFIG_STATUS=./config.status}"
-ac_write_fail=0
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
-$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
-as_write_fail=0
-cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
-#! $SHELL
-# Generated by $as_me.
-# Run this file to recreate the current configuration.
-# Compiler output produced by configure, useful for debugging
-# configure, is in config.log if it exists.
-
-debug=false
-ac_cs_recheck=false
-ac_cs_silent=false
-
-SHELL=\${CONFIG_SHELL-$SHELL}
-export SHELL
-_ASEOF
-cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
-## -------------------- ##
-## M4sh Initialization. ##
-## -------------------- ##
-
-# Be more Bourne compatible
-DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
-  emulate sh
-  NULLCMD=:
-  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '${1+"$@"}'='"$@"'
-  setopt NO_GLOB_SUBST
-else
-  case `(set -o) 2>/dev/null` in #(
-  *posix*) :
-    set -o posix ;; #(
-  *) :
-     ;;
-esac
-fi
-
-
-as_nl='
-'
-export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
-    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='print -r --'
-  as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='printf %s\n'
-  as_echo_n='printf %s'
-else
-  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
-    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
-    as_echo_n='/usr/ucb/echo -n'
-  else
-    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
-    as_echo_n_body='eval
-      arg=$1;
-      case $arg in #(
-      *"$as_nl"*)
-       expr "X$arg" : "X\\(.*\\)$as_nl";
-       arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
-      esac;
-      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
-    '
-    export as_echo_n_body
-    as_echo_n='sh -c $as_echo_n_body as_echo'
-  fi
-  export as_echo_body
-  as_echo='sh -c $as_echo_body as_echo'
-fi
-
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
-  PATH_SEPARATOR=:
-  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
-    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
-      PATH_SEPARATOR=';'
-  }
-fi
-
-
-# IFS
-# We need space, tab and new line, in precisely that order.  Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" ""       $as_nl"
-
-# Find who we are.  Look in the path if we contain no directory separator.
-as_myself=
-case $0 in #((
-  *[\\/]* ) as_myself=$0 ;;
-  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-  done
-IFS=$as_save_IFS
-
-     ;;
-esac
-# We did not find ourselves, most probably we were run as `sh COMMAND'
-# in which case we are not to be found in the path.
-if test "x$as_myself" = x; then
-  as_myself=$0
-fi
-if test ! -f "$as_myself"; then
-  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
-  exit 1
-fi
-
-# Unset variables that we do not need and which cause bugs (e.g. in
-# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
-# suppresses any "Segmentation fault" message there.  '((' could
-# trigger a bug in pdksh 5.2.14.
-for as_var in BASH_ENV ENV MAIL MAILPATH
-do eval test x\${$as_var+set} = xset \
-  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-
-# as_fn_error STATUS ERROR [LINENO LOG_FD]
-# ----------------------------------------
-# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
-# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-# script with STATUS, using 1 if that was 0.
-as_fn_error ()
-{
-  as_status=$1; test $as_status -eq 0 && as_status=1
-  if test "$4"; then
-    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
-  fi
-  $as_echo "$as_me: error: $2" >&2
-  as_fn_exit $as_status
-} # as_fn_error
-
-
-# as_fn_set_status STATUS
-# -----------------------
-# Set $? to STATUS, without forking.
-as_fn_set_status ()
-{
-  return $1
-} # as_fn_set_status
-
-# as_fn_exit STATUS
-# -----------------
-# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
-as_fn_exit ()
-{
-  set +e
-  as_fn_set_status $1
-  exit $1
-} # as_fn_exit
-
-# as_fn_unset VAR
-# ---------------
-# Portably unset VAR.
-as_fn_unset ()
-{
-  { eval $1=; unset $1;}
-}
-as_unset=as_fn_unset
-# as_fn_append VAR VALUE
-# ----------------------
-# Append the text in VALUE to the end of the definition contained in VAR. Take
-# advantage of any shell optimizations that allow amortized linear growth over
-# repeated appends, instead of the typical quadratic growth present in naive
-# implementations.
-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
-  eval 'as_fn_append ()
-  {
-    eval $1+=\$2
-  }'
-else
-  as_fn_append ()
-  {
-    eval $1=\$$1\$2
-  }
-fi # as_fn_append
-
-# as_fn_arith ARG...
-# ------------------
-# Perform arithmetic evaluation on the ARGs, and store the result in the
-# global $as_val. Take advantage of shells that can avoid forks. The arguments
-# must be portable across $(()) and expr.
-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
-  eval 'as_fn_arith ()
-  {
-    as_val=$(( $* ))
-  }'
-else
-  as_fn_arith ()
-  {
-    as_val=`expr "$@" || test $? -eq 1`
-  }
-fi # as_fn_arith
-
-
-if expr a : '\(a\)' >/dev/null 2>&1 &&
-   test "X`expr 00001 : '.*\(...\)'`" = X001; then
-  as_expr=expr
-else
-  as_expr=false
-fi
-
-if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
-  as_basename=basename
-else
-  as_basename=false
-fi
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
-  as_dirname=dirname
-else
-  as_dirname=false
-fi
-
-as_me=`$as_basename -- "$0" ||
-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
-        X"$0" : 'X\(//\)$' \| \
-        X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
-    sed '/^.*\/\([^/][^/]*\)\/*$/{
-           s//\1/
-           q
-         }
-         /^X\/\(\/\/\)$/{
-           s//\1/
-           q
-         }
-         /^X\/\(\/\).*/{
-           s//\1/
-           q
-         }
-         s/.*/./; q'`
-
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in #(((((
--n*)
-  case `echo 'xy\c'` in
-  *c*) ECHO_T='        ';;     # ECHO_T is single tab character.
-  xy)  ECHO_C='\c';;
-  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
-       ECHO_T='        ';;
-  esac;;
-*)
-  ECHO_N='-n';;
-esac
-
-rm -f conf$$ conf$$.exe conf$$.file
-if test -d conf$$.dir; then
-  rm -f conf$$.dir/conf$$.file
-else
-  rm -f conf$$.dir
-  mkdir conf$$.dir 2>/dev/null
-fi
-if (echo >conf$$.file) 2>/dev/null; then
-  if ln -s conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s='ln -s'
-    # ... but there are two gotchas:
-    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
-    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-    # In both cases, we have to default to `cp -pR'.
-    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -pR'
-  elif ln conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s=ln
-  else
-    as_ln_s='cp -pR'
-  fi
-else
-  as_ln_s='cp -pR'
-fi
-rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
-rmdir conf$$.dir 2>/dev/null
-
-
-# as_fn_mkdir_p
-# -------------
-# Create "$as_dir" as a directory, including parents if necessary.
-as_fn_mkdir_p ()
-{
-
-  case $as_dir in #(
-  -*) as_dir=./$as_dir;;
-  esac
-  test -d "$as_dir" || eval $as_mkdir_p || {
-    as_dirs=
-    while :; do
-      case $as_dir in #(
-      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
-      *) as_qdir=$as_dir;;
-      esac
-      as_dirs="'$as_qdir' $as_dirs"
-      as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-        X"$as_dir" : 'X\(//\)[^/]' \| \
-        X"$as_dir" : 'X\(//\)$' \| \
-        X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)[^/].*/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\).*/{
-           s//\1/
-           q
-         }
-         s/.*/./; q'`
-      test -d "$as_dir" && break
-    done
-    test -z "$as_dirs" || eval "mkdir $as_dirs"
-  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
-
-
-} # as_fn_mkdir_p
-if mkdir -p . 2>/dev/null; then
-  as_mkdir_p='mkdir -p "$as_dir"'
-else
-  test -d ./-p && rmdir ./-p
-  as_mkdir_p=false
-fi
-
-
-# as_fn_executable_p FILE
-# -----------------------
-# Test if FILE is an executable regular file.
-as_fn_executable_p ()
-{
-  test -f "$1" && test -x "$1"
-} # as_fn_executable_p
-as_test_x='test -x'
-as_executable_p=as_fn_executable_p
-
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
-
-
-exec 6>&1
-## ----------------------------------- ##
-## Main body of $CONFIG_STATUS script. ##
-## ----------------------------------- ##
-_ASEOF
-test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# Save the log message, to keep $0 and so on meaningful, and to
-# report actual input values of CONFIG_FILES etc. instead of their
-# values after options handling.
-ac_log="
-This file was extended by dummy $as_me 0, which was
-generated by GNU Autoconf 2.69.  Invocation command line was
-
-  CONFIG_FILES    = $CONFIG_FILES
-  CONFIG_HEADERS  = $CONFIG_HEADERS
-  CONFIG_LINKS    = $CONFIG_LINKS
-  CONFIG_COMMANDS = $CONFIG_COMMANDS
-  $ $0 $@
-
-on `(hostname || uname -n) 2>/dev/null | sed 1q`
-"
-
-_ACEOF
-
-case $ac_config_files in *"
-"*) set x $ac_config_files; shift; ac_config_files=$*;;
-esac
-
-case $ac_config_headers in *"
-"*) set x $ac_config_headers; shift; ac_config_headers=$*;;
-esac
-
-
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-# Files that config.status was made for.
-config_files="$ac_config_files"
-config_headers="$ac_config_headers"
-config_commands="$ac_config_commands"
-
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-ac_cs_usage="\
-\`$as_me' instantiates files and other configuration actions
-from templates according to the current configuration.  Unless the files
-and actions are specified as TAGs, all are instantiated by default.
-
-Usage: $0 [OPTION]... [TAG]...
-
-  -h, --help       print this help, then exit
-  -V, --version    print version number and configuration settings, then exit
-      --config     print configuration, then exit
-  -q, --quiet, --silent
-                   do not print progress messages
-  -d, --debug      don't remove temporary files
-      --recheck    update $as_me by reconfiguring in the same conditions
-      --file=FILE[:TEMPLATE]
-                   instantiate the configuration file FILE
-      --header=FILE[:TEMPLATE]
-                   instantiate the configuration header FILE
-
-Configuration files:
-$config_files
-
-Configuration headers:
-$config_headers
-
-Configuration commands:
-$config_commands
-
-Report bugs to the package provider."
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
-ac_cs_version="\\
-dummy config.status 0
-configured by $0, generated by GNU Autoconf 2.69,
-  with options \\"\$ac_cs_config\\"
-
-Copyright (C) 2012 Free Software Foundation, Inc.
-This config.status script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it."
-
-ac_pwd='$ac_pwd'
-srcdir='$srcdir'
-INSTALL='$INSTALL'
-MKDIR_P='$MKDIR_P'
-AWK='$AWK'
-test -n "\$AWK" || AWK=awk
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# The default lists apply if the user does not specify any file.
-ac_need_defaults=:
-while test $# != 0
-do
-  case $1 in
-  --*=?*)
-    ac_option=`expr "X$1" : 'X\([^=]*\)='`
-    ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
-    ac_shift=:
-    ;;
-  --*=)
-    ac_option=`expr "X$1" : 'X\([^=]*\)='`
-    ac_optarg=
-    ac_shift=:
-    ;;
-  *)
-    ac_option=$1
-    ac_optarg=$2
-    ac_shift=shift
-    ;;
-  esac
-
-  case $ac_option in
-  # Handling of the options.
-  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
-    ac_cs_recheck=: ;;
-  --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
-    $as_echo "$ac_cs_version"; exit ;;
-  --config | --confi | --conf | --con | --co | --c )
-    $as_echo "$ac_cs_config"; exit ;;
-  --debug | --debu | --deb | --de | --d | -d )
-    debug=: ;;
-  --file | --fil | --fi | --f )
-    $ac_shift
-    case $ac_optarg in
-    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
-    '') as_fn_error $? "missing file argument" ;;
-    esac
-    as_fn_append CONFIG_FILES " '$ac_optarg'"
-    ac_need_defaults=false;;
-  --header | --heade | --head | --hea )
-    $ac_shift
-    case $ac_optarg in
-    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
-    esac
-    as_fn_append CONFIG_HEADERS " '$ac_optarg'"
-    ac_need_defaults=false;;
-  --he | --h)
-    # Conflict between --help and --header
-    as_fn_error $? "ambiguous option: \`$1'
-Try \`$0 --help' for more information.";;
-  --help | --hel | -h )
-    $as_echo "$ac_cs_usage"; exit ;;
-  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-  | -silent | --silent | --silen | --sile | --sil | --si | --s)
-    ac_cs_silent=: ;;
-
-  # This is an error.
-  -*) as_fn_error $? "unrecognized option: \`$1'
-Try \`$0 --help' for more information." ;;
-
-  *) as_fn_append ac_config_targets " $1"
-     ac_need_defaults=false ;;
-
-  esac
-  shift
-done
-
-ac_configure_extra_args=
-
-if $ac_cs_silent; then
-  exec 6>/dev/null
-  ac_configure_extra_args="$ac_configure_extra_args --silent"
-fi
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-if \$ac_cs_recheck; then
-  set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
-  shift
-  \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
-  CONFIG_SHELL='$SHELL'
-  export CONFIG_SHELL
-  exec "\$@"
-fi
-
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-exec 5>>config.log
-{
-  echo
-  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
-## Running $as_me. ##
-_ASBOX
-  $as_echo "$ac_log"
-} >&5
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-#
-# INIT-COMMANDS
-#
-AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
-
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-
-# Handling of arguments.
-for ac_config_target in $ac_config_targets
-do
-  case $ac_config_target in
-    "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
-    "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
-    "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
-    "lib/Makefile") CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;;
-    "m4/Makefile") CONFIG_FILES="$CONFIG_FILES m4/Makefile" ;;
-
-  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
-  esac
-done
-
-
-# If the user did not use the arguments to specify the items to instantiate,
-# then the envvar interface is used.  Set only those that are not.
-# We use the long form for the default assignment because of an extremely
-# bizarre bug on SunOS 4.1.3.
-if $ac_need_defaults; then
-  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
-  test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
-  test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
-fi
-
-# Have a temporary directory for convenience.  Make it in the build tree
-# simply because there is no reason against having it here, and in addition,
-# creating and moving files from /tmp can sometimes cause problems.
-# Hook for its removal unless debugging.
-# Note that there is a small window in which the directory will not be cleaned:
-# after its creation but before its name has been assigned to `$tmp'.
-$debug ||
-{
-  tmp= ac_tmp=
-  trap 'exit_status=$?
-  : "${ac_tmp:=$tmp}"
-  { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
-' 0
-  trap 'as_fn_exit 1' 1 2 13 15
-}
-# Create a (secure) tmp directory for tmp files.
-
-{
-  tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
-  test -d "$tmp"
-}  ||
-{
-  tmp=./conf$$-$RANDOM
-  (umask 077 && mkdir "$tmp")
-} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
-ac_tmp=$tmp
-
-# Set up the scripts for CONFIG_FILES section.
-# No need to generate them if there are no CONFIG_FILES.
-# This happens for instance with `./config.status config.h'.
-if test -n "$CONFIG_FILES"; then
-
-
-ac_cr=`echo X | tr X '\015'`
-# On cygwin, bash can eat \r inside `` if the user requested igncr.
-# But we know of no other shell where ac_cr would be empty at this
-# point, so we can use a bashism as a fallback.
-if test "x$ac_cr" = x; then
-  eval ac_cr=\$\'\\r\'
-fi
-ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
-if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
-  ac_cs_awk_cr='\\r'
-else
-  ac_cs_awk_cr=$ac_cr
-fi
-
-echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
-_ACEOF
-
-
-{
-  echo "cat >conf$$subs.awk <<_ACEOF" &&
-  echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
-  echo "_ACEOF"
-} >conf$$subs.sh ||
-  as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
-ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
-ac_delim='%!_!# '
-for ac_last_try in false false false false false :; do
-  . ./conf$$subs.sh ||
-    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
-
-  ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
-  if test $ac_delim_n = $ac_delim_num; then
-    break
-  elif $ac_last_try; then
-    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
-  else
-    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
-  fi
-done
-rm -f conf$$subs.sh
-
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
-_ACEOF
-sed -n '
-h
-s/^/S["/; s/!.*/"]=/
-p
-g
-s/^[^!]*!//
-:repl
-t repl
-s/'"$ac_delim"'$//
-t delim
-:nl
-h
-s/\(.\{148\}\)..*/\1/
-t more1
-s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
-p
-n
-b repl
-:more1
-s/["\\]/\\&/g; s/^/"/; s/$/"\\/
-p
-g
-s/.\{148\}//
-t nl
-:delim
-h
-s/\(.\{148\}\)..*/\1/
-t more2
-s/["\\]/\\&/g; s/^/"/; s/$/"/
-p
-b
-:more2
-s/["\\]/\\&/g; s/^/"/; s/$/"\\/
-p
-g
-s/.\{148\}//
-t delim
-' <conf$$subs.awk | sed '
-/^[^""]/{
-  N
-  s/\n//
-}
-' >>$CONFIG_STATUS || ac_write_fail=1
-rm -f conf$$subs.awk
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-_ACAWK
-cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
-  for (key in S) S_is_set[key] = 1
-  FS = "\a"
-
-}
-{
-  line = $ 0
-  nfields = split(line, field, "@")
-  substed = 0
-  len = length(field[1])
-  for (i = 2; i < nfields; i++) {
-    key = field[i]
-    keylen = length(key)
-    if (S_is_set[key]) {
-      value = S[key]
-      line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
-      len += length(value) + length(field[++i])
-      substed = 1
-    } else
-      len += 1 + keylen
-  }
-
-  print line
-}
-
-_ACAWK
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
-  sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
-else
-  cat
-fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
-  || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
-_ACEOF
-
-# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
-# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
-# trailing colons and then remove the whole line if VPATH becomes empty
-# (actually we leave an empty line to preserve line numbers).
-if test "x$srcdir" = x.; then
-  ac_vpsub='/^[         ]*VPATH[        ]*=[    ]*/{
-h
-s///
-s/^/:/
-s/[     ]*$/:/
-s/:\$(srcdir):/:/g
-s/:\${srcdir}:/:/g
-s/:@srcdir@:/:/g
-s/^:*//
-s/:*$//
-x
-s/\(=[  ]*\).*/\1/
-G
-s/\n//
-s/^[^=]*=[      ]*$//
-}'
-fi
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-fi # test -n "$CONFIG_FILES"
-
-# Set up the scripts for CONFIG_HEADERS section.
-# No need to generate them if there are no CONFIG_HEADERS.
-# This happens for instance with `./config.status Makefile'.
-if test -n "$CONFIG_HEADERS"; then
-cat >"$ac_tmp/defines.awk" <<\_ACAWK ||
-BEGIN {
-_ACEOF
-
-# Transform confdefs.h into an awk script `defines.awk', embedded as
-# here-document in config.status, that substitutes the proper values into
-# config.h.in to produce config.h.
-
-# Create a delimiter string that does not exist in confdefs.h, to ease
-# handling of long lines.
-ac_delim='%!_!# '
-for ac_last_try in false false :; do
-  ac_tt=`sed -n "/$ac_delim/p" confdefs.h`
-  if test -z "$ac_tt"; then
-    break
-  elif $ac_last_try; then
-    as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5
-  else
-    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
-  fi
-done
-
-# For the awk script, D is an array of macro values keyed by name,
-# likewise P contains macro parameters if any.  Preserve backslash
-# newline sequences.
-
-ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
-sed -n '
-s/.\{148\}/&'"$ac_delim"'/g
-t rset
-:rset
-s/^[    ]*#[    ]*define[       ][      ]*/ /
-t def
-d
-:def
-s/\\$//
-t bsnl
-s/["\\]/\\&/g
-s/^ \('"$ac_word_re"'\)\(([^()]*)\)[    ]*\(.*\)/P["\1"]="\2"\
-D["\1"]=" \3"/p
-s/^ \('"$ac_word_re"'\)[        ]*\(.*\)/D["\1"]=" \2"/p
-d
-:bsnl
-s/["\\]/\\&/g
-s/^ \('"$ac_word_re"'\)\(([^()]*)\)[    ]*\(.*\)/P["\1"]="\2"\
-D["\1"]=" \3\\\\\\n"\\/p
-t cont
-s/^ \('"$ac_word_re"'\)[        ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p
-t cont
-d
-:cont
-n
-s/.\{148\}/&'"$ac_delim"'/g
-t clear
-:clear
-s/\\$//
-t bsnlc
-s/["\\]/\\&/g; s/^/"/; s/$/"/p
-d
-:bsnlc
-s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p
-b cont
-' <confdefs.h | sed '
-s/'"$ac_delim"'/"\\\
-"/g' >>$CONFIG_STATUS || ac_write_fail=1
-
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-  for (key in D) D_is_set[key] = 1
-  FS = "\a"
-}
-/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ {
-  line = \$ 0
-  split(line, arg, " ")
-  if (arg[1] == "#") {
-    defundef = arg[2]
-    mac1 = arg[3]
-  } else {
-    defundef = substr(arg[1], 2)
-    mac1 = arg[2]
-  }
-  split(mac1, mac2, "(") #)
-  macro = mac2[1]
-  prefix = substr(line, 1, index(line, defundef) - 1)
-  if (D_is_set[macro]) {
-    # Preserve the white space surrounding the "#".
-    print prefix "define", macro P[macro] D[macro]
-    next
-  } else {
-    # Replace #undef with comments.  This is necessary, for example,
-    # in the case of _POSIX_SOURCE, which is predefined and required
-    # on some systems where configure will not decide to define it.
-    if (defundef == "undef") {
-      print "/*", prefix defundef, macro, "*/"
-      next
-    }
-  }
-}
-{ print }
-_ACAWK
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-  as_fn_error $? "could not setup config headers machinery" "$LINENO" 5
-fi # test -n "$CONFIG_HEADERS"
-
-
-eval set X "  :F $CONFIG_FILES  :H $CONFIG_HEADERS    :C $CONFIG_COMMANDS"
-shift
-for ac_tag
-do
-  case $ac_tag in
-  :[FHLC]) ac_mode=$ac_tag; continue;;
-  esac
-  case $ac_mode$ac_tag in
-  :[FHL]*:*);;
-  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
-  :[FH]-) ac_tag=-:-;;
-  :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
-  esac
-  ac_save_IFS=$IFS
-  IFS=:
-  set x $ac_tag
-  IFS=$ac_save_IFS
-  shift
-  ac_file=$1
-  shift
-
-  case $ac_mode in
-  :L) ac_source=$1;;
-  :[FH])
-    ac_file_inputs=
-    for ac_f
-    do
-      case $ac_f in
-      -) ac_f="$ac_tmp/stdin";;
-      *) # Look for the file first in the build tree, then in the source tree
-        # (if the path is not absolute).  The absolute path cannot be DOS-style,
-        # because $ac_f cannot contain `:'.
-        test -f "$ac_f" ||
-          case $ac_f in
-          [\\/$]*) false;;
-          *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
-          esac ||
-          as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
-      esac
-      case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
-      as_fn_append ac_file_inputs " '$ac_f'"
-    done
-
-    # Let's still pretend it is `configure' which instantiates (i.e., don't
-    # use $as_me), people would be surprised to read:
-    #    /* config.h.  Generated by config.status.  */
-    configure_input='Generated from '`
-         $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
-       `' by configure.'
-    if test x"$ac_file" != x-; then
-      configure_input="$ac_file.  $configure_input"
-      { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
-$as_echo "$as_me: creating $ac_file" >&6;}
-    fi
-    # Neutralize special characters interpreted by sed in replacement strings.
-    case $configure_input in #(
-    *\&* | *\|* | *\\* )
-       ac_sed_conf_input=`$as_echo "$configure_input" |
-       sed 's/[\\\\&|]/\\\\&/g'`;; #(
-    *) ac_sed_conf_input=$configure_input;;
-    esac
-
-    case $ac_tag in
-    *:-:* | *:-) cat >"$ac_tmp/stdin" \
-      || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
-    esac
-    ;;
-  esac
-
-  ac_dir=`$as_dirname -- "$ac_file" ||
-$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-        X"$ac_file" : 'X\(//\)[^/]' \| \
-        X"$ac_file" : 'X\(//\)$' \| \
-        X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$ac_file" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)[^/].*/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\).*/{
-           s//\1/
-           q
-         }
-         s/.*/./; q'`
-  as_dir="$ac_dir"; as_fn_mkdir_p
-  ac_builddir=.
-
-case "$ac_dir" in
-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
-*)
-  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
-  # A ".." for each directory in $ac_dir_suffix.
-  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
-  case $ac_top_builddir_sub in
-  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
-  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
-  esac ;;
-esac
-ac_abs_top_builddir=$ac_pwd
-ac_abs_builddir=$ac_pwd$ac_dir_suffix
-# for backward compatibility:
-ac_top_builddir=$ac_top_build_prefix
-
-case $srcdir in
-  .)  # We are building in place.
-    ac_srcdir=.
-    ac_top_srcdir=$ac_top_builddir_sub
-    ac_abs_top_srcdir=$ac_pwd ;;
-  [\\/]* | ?:[\\/]* )  # Absolute name.
-    ac_srcdir=$srcdir$ac_dir_suffix;
-    ac_top_srcdir=$srcdir
-    ac_abs_top_srcdir=$srcdir ;;
-  *) # Relative name.
-    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
-    ac_top_srcdir=$ac_top_build_prefix$srcdir
-    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
-esac
-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
-
-
-  case $ac_mode in
-  :F)
-  #
-  # CONFIG_FILE
-  #
-
-  case $INSTALL in
-  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
-  *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
-  esac
-  ac_MKDIR_P=$MKDIR_P
-  case $MKDIR_P in
-  [\\/$]* | ?:[\\/]* ) ;;
-  */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
-  esac
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# If the template does not know about datarootdir, expand it.
-# FIXME: This hack should be removed a few years after 2.60.
-ac_datarootdir_hack=; ac_datarootdir_seen=
-ac_sed_dataroot='
-/datarootdir/ {
-  p
-  q
-}
-/@datadir@/p
-/@docdir@/p
-/@infodir@/p
-/@localedir@/p
-/@mandir@/p'
-case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
-*datarootdir*) ac_datarootdir_seen=yes;;
-*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
-$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-  ac_datarootdir_hack='
-  s&@datadir@&$datadir&g
-  s&@docdir@&$docdir&g
-  s&@infodir@&$infodir&g
-  s&@localedir@&$localedir&g
-  s&@mandir@&$mandir&g
-  s&\\\${datarootdir}&$datarootdir&g' ;;
-esac
-_ACEOF
-
-# Neutralize VPATH when `$srcdir' = `.'.
-# Shell code in configure.ac might set extrasub.
-# FIXME: do we really want to maintain this feature?
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-ac_sed_extra="$ac_vpsub
-$extrasub
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-:t
-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
-s|@configure_input@|$ac_sed_conf_input|;t t
-s&@top_builddir@&$ac_top_builddir_sub&;t t
-s&@top_build_prefix@&$ac_top_build_prefix&;t t
-s&@srcdir@&$ac_srcdir&;t t
-s&@abs_srcdir@&$ac_abs_srcdir&;t t
-s&@top_srcdir@&$ac_top_srcdir&;t t
-s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
-s&@builddir@&$ac_builddir&;t t
-s&@abs_builddir@&$ac_abs_builddir&;t t
-s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
-s&@INSTALL@&$ac_INSTALL&;t t
-s&@MKDIR_P@&$ac_MKDIR_P&;t t
-$ac_datarootdir_hack
-"
-eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
-  >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
-
-test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
-  { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
-  { ac_out=`sed -n '/^[         ]*datarootdir[  ]*:*=/p' \
-      "$ac_tmp/out"`; test -z "$ac_out"; } &&
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined.  Please make sure it is defined" >&5
-$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined.  Please make sure it is defined" >&2;}
-
-  rm -f "$ac_tmp/stdin"
-  case $ac_file in
-  -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
-  *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
-  esac \
-  || as_fn_error $? "could not create $ac_file" "$LINENO" 5
- ;;
-  :H)
-  #
-  # CONFIG_HEADER
-  #
-  if test x"$ac_file" != x-; then
-    {
-      $as_echo "/* $configure_input  */" \
-      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs"
-    } >"$ac_tmp/config.h" \
-      || as_fn_error $? "could not create $ac_file" "$LINENO" 5
-    if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
-$as_echo "$as_me: $ac_file is unchanged" >&6;}
-    else
-      rm -f "$ac_file"
-      mv "$ac_tmp/config.h" "$ac_file" \
-       || as_fn_error $? "could not create $ac_file" "$LINENO" 5
-    fi
-  else
-    $as_echo "/* $configure_input  */" \
-      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
-      || as_fn_error $? "could not create -" "$LINENO" 5
-  fi
-# Compute "$ac_file"'s index in $config_headers.
-_am_arg="$ac_file"
-_am_stamp_count=1
-for _am_header in $config_headers :; do
-  case $_am_header in
-    $_am_arg | $_am_arg:* )
-      break ;;
-    * )
-      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
-  esac
-done
-echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" ||
-$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-        X"$_am_arg" : 'X\(//\)[^/]' \| \
-        X"$_am_arg" : 'X\(//\)$' \| \
-        X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$_am_arg" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)[^/].*/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\).*/{
-           s//\1/
-           q
-         }
-         s/.*/./; q'`/stamp-h$_am_stamp_count
- ;;
-
-  :C)  { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
-$as_echo "$as_me: executing $ac_file commands" >&6;}
- ;;
-  esac
-
-
-  case $ac_file$ac_mode in
-    "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
-  # Older Autoconf quotes --file arguments for eval, but not when files
-  # are listed without --file.  Let's play safe and only enable the eval
-  # if we detect the quoting.
-  case $CONFIG_FILES in
-  *\'*) eval set x "$CONFIG_FILES" ;;
-  *)   set x $CONFIG_FILES ;;
-  esac
-  shift
-  for mf
-  do
-    # Strip MF so we end up with the name of the file.
-    mf=`echo "$mf" | sed -e 's/:.*$//'`
-    # Check whether this is an Automake generated Makefile or not.
-    # We used to match only the files named 'Makefile.in', but
-    # some people rename them; so instead we look at the file content.
-    # Grep'ing the first line is not enough: some people post-process
-    # each Makefile.in and add a new line on top of each file to say so.
-    # Grep'ing the whole file is not good either: AIX grep has a line
-    # limit of 2048, but all sed's we know have understand at least 4000.
-    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
-      dirpart=`$as_dirname -- "$mf" ||
-$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-        X"$mf" : 'X\(//\)[^/]' \| \
-        X"$mf" : 'X\(//\)$' \| \
-        X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$mf" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)[^/].*/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\).*/{
-           s//\1/
-           q
-         }
-         s/.*/./; q'`
-    else
-      continue
-    fi
-    # Extract the definition of DEPDIR, am__include, and am__quote
-    # from the Makefile without running 'make'.
-    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
-    test -z "$DEPDIR" && continue
-    am__include=`sed -n 's/^am__include = //p' < "$mf"`
-    test -z "$am__include" && continue
-    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
-    # Find all dependency output files, they are included files with
-    # $(DEPDIR) in their names.  We invoke sed twice because it is the
-    # simplest approach to changing $(DEPDIR) to its actual value in the
-    # expansion.
-    for file in `sed -n "
-      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
-        sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
-      # Make sure the directory exists.
-      test -f "$dirpart/$file" && continue
-      fdir=`$as_dirname -- "$file" ||
-$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-        X"$file" : 'X\(//\)[^/]' \| \
-        X"$file" : 'X\(//\)$' \| \
-        X"$file" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$file" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)[^/].*/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\).*/{
-           s//\1/
-           q
-         }
-         s/.*/./; q'`
-      as_dir=$dirpart/$fdir; as_fn_mkdir_p
-      # echo "creating $dirpart/$file"
-      echo '# dummy' > "$dirpart/$file"
-    done
-  done
-}
- ;;
-
-  esac
-done # for ac_tag
-
-
-as_fn_exit 0
-_ACEOF
-ac_clean_files=$ac_clean_files_save
-
-test $ac_write_fail = 0 ||
-  as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
-
-
-# configure is writing to config.log, and then calls config.status.
-# config.status does its own redirection, appending to config.log.
-# Unfortunately, on DOS this fails, as config.log is still kept open
-# by configure, so config.status won't be able to write to it; its
-# output is simply discarded.  So we exec the FD to /dev/null,
-# effectively closing config.log, so it can be properly (re)opened and
-# appended to by config.status.  When coming back to configure, we
-# need to make the FD available again.
-if test "$no_create" != yes; then
-  ac_cs_success=:
-  ac_config_status_args=
-  test "$silent" = yes &&
-    ac_config_status_args="$ac_config_status_args --quiet"
-  exec 5>/dev/null
-  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
-  exec 5>>config.log
-  # Use ||, not &&, to avoid exiting from the if with $? = 1, which
-  # would make configure fail if this is the last instruction.
-  $ac_cs_success || as_fn_exit 1
-fi
-if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
-$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
-fi
-
diff --git a/src/libs/gnulib/configure.ac b/src/libs/gnulib/configure.ac
deleted file mode 100644 (file)
index e55d498..0000000
+++ /dev/null
@@ -1,143 +0,0 @@
-# Process this file with autoconf to produce a configure script.
-#
-# Copyright (C) 1989-2014 Free Software Foundation, Inc.
-#
-# This file is part of groff.
-#
-# groff is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 2 of the License.
-#
-# groff 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 can find the license text of GPL2 in the internet at
-# <http://www.gnu.org/licenses/gpl-2.0.txt>.
-
-AC_INIT([dummy], [0])
-AC_CONFIG_AUX_DIR([build-aux])
-AM_INIT_AUTOMAKE
-
-AC_CONFIG_HEADERS([config.h])
-
-AC_PROG_CC
-AC_PROG_INSTALL
-AC_PROG_MAKE_SET
-
-# For autobuild.
-AC_CANONICAL_BUILD
-AC_CANONICAL_HOST
-
-m4_pattern_forbid([^gl_[A-Z]])dnl the gnulib macro namespace
-m4_pattern_allow([^gl_ES$])dnl a valid locale name
-m4_pattern_allow([^gl_LIBOBJS$])dnl a variable
-m4_pattern_allow([^gl_LTLIBOBJS$])dnl a variable
-
-gl_PROG_AR_RANLIB
-
-AM_PROG_CC_C_O
-
-gl_USE_SYSTEM_EXTENSIONS
-AM_CONDITIONAL([GL_COND_LIBTOOL], [false])
-gl_cond_libtool=false
-gl_libdeps=
-gl_ltlibdeps=
-AC_DEFUN([gl_INIT], [
-gl_m4_base='m4'
-  m4_pushdef([AC_LIBOBJ], m4_defn([gl_LIBOBJ]))
-  m4_pushdef([AC_REPLACE_FUNCS], m4_defn([gl_REPLACE_FUNCS]))
-  m4_pushdef([AC_LIBSOURCES], m4_defn([gl_LIBSOURCES]))
-  m4_pushdef([gl_LIBSOURCES_LIST], [])
-  m4_pushdef([gl_LIBSOURCES_DIR], [])
-  gl_COMMON
-gl_source_base='lib'
-  gl_CONFIGMAKE_PREP
-  AC_REQUIRE([gl_EXTERN_INLINE])
-  gl_INTTYPES_H
-  gl_INTTYPES_INCOMPLETE
-  gl_LOCALCHARSET
-  LOCALCHARSET_TESTS_ENVIRONMENT="CHARSETALIASDIR=\"\$(abs_top_builddir)/$gl_source_base\""
-  AC_SUBST([LOCALCHARSET_TESTS_ENVIRONMENT])
-  gl_MULTIARCH
-  AM_STDBOOL_H
-  gl_STDDEF_H
-  gl_STDINT_H
-  gl_LIBUNISTRING_LIBHEADER([0.9], [unitypes.h])
-  gl_LIBUNISTRING_LIBHEADER([0.9], [uniwidth.h])
-  gl_LIBUNISTRING_MODULE([0.9.4], [uniwidth/width])
-  gl_WCHAR_H
-  gl_WCTYPE_H
-  gl_FUNC_WCWIDTH
-  if test $HAVE_WCWIDTH = 0 || test $REPLACE_WCWIDTH = 1; then
-    AC_LIBOBJ([wcwidth])
-  fi
-  gl_WCHAR_MODULE_INDICATOR([wcwidth])
-  m4_ifval(gl_LIBSOURCES_LIST, [
-    m4_syscmd([test ! -d ]m4_defn([gl_LIBSOURCES_DIR])[ ||
-      for gl_file in ]gl_LIBSOURCES_LIST[ ; do
-        if test ! -r ]m4_defn([gl_LIBSOURCES_DIR])[/$gl_file ; then
-          echo "missing file ]m4_defn([gl_LIBSOURCES_DIR])[/$gl_file" >&2
-          exit 1
-        fi
-      done])dnl
-      m4_if(m4_sysval, [0], [],
-        [AC_FATAL([expected source file, required through AC_LIBSOURCES, not found])])
-  ])
-  m4_popdef([gl_LIBSOURCES_DIR])
-  m4_popdef([gl_LIBSOURCES_LIST])
-  m4_popdef([AC_LIBSOURCES])
-  m4_popdef([AC_REPLACE_FUNCS])
-  m4_popdef([AC_LIBOBJ])
-  AC_CONFIG_COMMANDS_PRE([
-    gl_libobjs=
-    gl_ltlibobjs=
-    if test -n "$gl_LIBOBJS"; then
-      # Remove the extension.
-      sed_drop_objext='s/\.o$//;s/\.obj$//'
-      for i in `for i in $gl_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do
-        gl_libobjs="$gl_libobjs $i.$ac_objext"
-        gl_ltlibobjs="$gl_ltlibobjs $i.lo"
-      done
-    fi
-    AC_SUBST([gl_LIBOBJS], [$gl_libobjs])
-    AC_SUBST([gl_LTLIBOBJS], [$gl_ltlibobjs])
-  ])
-  LIBGNU_LIBDEPS="$gl_libdeps"
-  AC_SUBST([LIBGNU_LIBDEPS])
-  LIBGNU_LTLIBDEPS="$gl_ltlibdeps"
-  AC_SUBST([LIBGNU_LTLIBDEPS])
-])
-
-# Like AC_LIBOBJ, except that the module name goes
-# into gl_LIBOBJS instead of into LIBOBJS.
-AC_DEFUN([gl_LIBOBJ], [
-  AS_LITERAL_IF([$1], [gl_LIBSOURCES([$1.c])])dnl
-  gl_LIBOBJS="$gl_LIBOBJS $1.$ac_objext"
-])
-
-# Like AC_REPLACE_FUNCS, except that the module name goes
-# into gl_LIBOBJS instead of into LIBOBJS.
-AC_DEFUN([gl_REPLACE_FUNCS], [
-  m4_foreach_w([gl_NAME], [$1], [AC_LIBSOURCES(gl_NAME[.c])])dnl
-  AC_CHECK_FUNCS([$1], , [gl_LIBOBJ($ac_func)])
-])
-
-# Like AC_LIBSOURCES, except the directory where the source file is
-# expected is derived from the gnulib-tool parameterization,
-# and alloca is special cased (for the alloca-opt module).
-# We could also entirely rely on EXTRA_lib..._SOURCES.
-AC_DEFUN([gl_LIBSOURCES], [
-  m4_foreach([_gl_NAME], [$1], [
-    m4_if(_gl_NAME, [alloca.c], [], [
-      m4_define([gl_LIBSOURCES_DIR], [lib])
-      m4_append([gl_LIBSOURCES_LIST], _gl_NAME, [ ])
-    ])
-  ])
-])
-
-gl_INIT
-
-AC_CONFIG_FILES([Makefile lib/Makefile m4/Makefile])
-AC_OUTPUT
diff --git a/src/libs/gnulib/lib/Makefile.am b/src/libs/gnulib/lib/Makefile.am
deleted file mode 100644 (file)
index be7b521..0000000
+++ /dev/null
@@ -1,544 +0,0 @@
-## DO NOT EDIT! GENERATED AUTOMATICALLY!
-## Process this file with automake to produce Makefile.in.
-# Copyright (C) 2002-2014 Free Software Foundation, Inc.
-#
-# This file is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
-# (at your option) any later version.
-#
-# This file is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this file.  If not, see <http://www.gnu.org/licenses/>.
-#
-# As a special exception to the GNU General Public License,
-# this file may be distributed as part of a program that
-# contains a configuration script generated by Autoconf, under
-# the same distribution terms as the rest of that program.
-#
-# Generated by gnulib-tool.
-# Reproduce by: gnulib-tool --import --dir=src/libs/gnulib --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --no-conditional-dependencies --no-libtool --macro-prefix=gl wcwidth
-
-AUTOMAKE_OPTIONS = 1.5 gnits subdir-objects
-
-SUBDIRS =
-noinst_HEADERS =
-noinst_LIBRARIES =
-noinst_LTLIBRARIES =
-EXTRA_DIST =
-BUILT_SOURCES =
-SUFFIXES =
-MOSTLYCLEANFILES = core *.stackdump
-MOSTLYCLEANDIRS =
-CLEANFILES =
-DISTCLEANFILES =
-MAINTAINERCLEANFILES =
-
-AM_CPPFLAGS =
-AM_CFLAGS =
-
-noinst_LIBRARIES += libgnu.a
-
-libgnu_a_SOURCES =
-libgnu_a_LIBADD = $(gl_LIBOBJS)
-libgnu_a_DEPENDENCIES = $(gl_LIBOBJS)
-EXTRA_libgnu_a_SOURCES =
-
-## begin gnulib module configmake
-
-# Listed in the same order as the GNU makefile conventions, and
-# provided by autoconf 2.59c+.
-# The Automake-defined pkg* macros are appended, in the order
-# listed in the Automake 1.10a+ documentation.
-configmake.h: Makefile
-       $(AM_V_GEN)rm -f $@-t && \
-       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
-         echo '#define PREFIX "$(prefix)"'; \
-         echo '#define EXEC_PREFIX "$(exec_prefix)"'; \
-         echo '#define BINDIR "$(bindir)"'; \
-         echo '#define SBINDIR "$(sbindir)"'; \
-         echo '#define LIBEXECDIR "$(libexecdir)"'; \
-         echo '#define DATAROOTDIR "$(datarootdir)"'; \
-         echo '#define DATADIR "$(datadir)"'; \
-         echo '#define SYSCONFDIR "$(sysconfdir)"'; \
-         echo '#define SHAREDSTATEDIR "$(sharedstatedir)"'; \
-         echo '#define LOCALSTATEDIR "$(localstatedir)"'; \
-         echo '#define INCLUDEDIR "$(includedir)"'; \
-         echo '#define OLDINCLUDEDIR "$(oldincludedir)"'; \
-         echo '#define DOCDIR "$(docdir)"'; \
-         echo '#define INFODIR "$(infodir)"'; \
-         echo '#define HTMLDIR "$(htmldir)"'; \
-         echo '#define DVIDIR "$(dvidir)"'; \
-         echo '#define PDFDIR "$(pdfdir)"'; \
-         echo '#define PSDIR "$(psdir)"'; \
-         echo '#define LIBDIR "$(libdir)"'; \
-         echo '#define LISPDIR "$(lispdir)"'; \
-         echo '#define LOCALEDIR "$(localedir)"'; \
-         echo '#define MANDIR "$(mandir)"'; \
-         echo '#define MANEXT "$(manext)"'; \
-         echo '#define PKGDATADIR "$(pkgdatadir)"'; \
-         echo '#define PKGINCLUDEDIR "$(pkgincludedir)"'; \
-         echo '#define PKGLIBDIR "$(pkglibdir)"'; \
-         echo '#define PKGLIBEXECDIR "$(pkglibexecdir)"'; \
-       } | sed '/""/d' > $@-t && \
-       mv -f $@-t $@
-
-BUILT_SOURCES += configmake.h
-CLEANFILES += configmake.h configmake.h-t
-
-## end   gnulib module configmake
-
-## begin gnulib module localcharset
-
-libgnu_a_SOURCES += localcharset.h localcharset.c
-
-# We need the following in order to install a simple file in $(libdir)
-# which is shared with other installed packages. We use a list of referencing
-# packages so that "make uninstall" will remove the file if and only if it
-# is not used by another installed package.
-# On systems with glibc-2.1 or newer, the file is redundant, therefore we
-# avoid installing it.
-
-all-local: charset.alias ref-add.sed ref-del.sed
-
-charset_alias = $(DESTDIR)$(libdir)/charset.alias
-charset_tmp = $(DESTDIR)$(libdir)/charset.tmp
-install-exec-local: install-exec-localcharset
-install-exec-localcharset: all-local
-       if test $(GLIBC21) = no; then \
-         case '$(host_os)' in \
-           darwin[56]*) \
-             need_charset_alias=true ;; \
-           darwin* | cygwin* | mingw* | pw32* | cegcc*) \
-             need_charset_alias=false ;; \
-           *) \
-             need_charset_alias=true ;; \
-         esac ; \
-       else \
-         need_charset_alias=false ; \
-       fi ; \
-       if $$need_charset_alias; then \
-         $(mkinstalldirs) $(DESTDIR)$(libdir) ; \
-       fi ; \
-       if test -f $(charset_alias); then \
-         sed -f ref-add.sed $(charset_alias) > $(charset_tmp) ; \
-         $(INSTALL_DATA) $(charset_tmp) $(charset_alias) ; \
-         rm -f $(charset_tmp) ; \
-       else \
-         if $$need_charset_alias; then \
-           sed -f ref-add.sed charset.alias > $(charset_tmp) ; \
-           $(INSTALL_DATA) $(charset_tmp) $(charset_alias) ; \
-           rm -f $(charset_tmp) ; \
-         fi ; \
-       fi
-
-uninstall-local: uninstall-localcharset
-uninstall-localcharset: all-local
-       if test -f $(charset_alias); then \
-         sed -f ref-del.sed $(charset_alias) > $(charset_tmp); \
-         if grep '^# Packages using this file: $$' $(charset_tmp) \
-             > /dev/null; then \
-           rm -f $(charset_alias); \
-         else \
-           $(INSTALL_DATA) $(charset_tmp) $(charset_alias); \
-         fi; \
-         rm -f $(charset_tmp); \
-       fi
-
-charset.alias: config.charset
-       $(AM_V_GEN)rm -f t-$@ $@ && \
-       $(SHELL) $(srcdir)/config.charset '$(host)' > t-$@ && \
-       mv t-$@ $@
-
-SUFFIXES += .sed .sin
-.sin.sed:
-       $(AM_V_GEN)rm -f t-$@ $@ && \
-       sed -e '/^#/d' -e 's/@''PACKAGE''@/$(PACKAGE)/g' $< > t-$@ && \
-       mv t-$@ $@
-
-CLEANFILES += charset.alias ref-add.sed ref-del.sed
-
-EXTRA_DIST += config.charset ref-add.sin ref-del.sin
-
-## end   gnulib module localcharset
-
-## begin gnulib module snippet/arg-nonnull
-
-# The BUILT_SOURCES created by this Makefile snippet are not used via #include
-# statements but through direct file reference. Therefore this snippet must be
-# present in all Makefile.am that need it. This is ensured by the applicability
-# 'all' defined above.
-
-BUILT_SOURCES += arg-nonnull.h
-# The arg-nonnull.h that gets inserted into generated .h files is the same as
-# build-aux/snippet/arg-nonnull.h, except that it has the copyright header cut
-# off.
-arg-nonnull.h: $(top_srcdir)/build-aux/snippet/arg-nonnull.h
-       $(AM_V_GEN)rm -f $@-t $@ && \
-       sed -n -e '/GL_ARG_NONNULL/,$$p' \
-         < $(top_srcdir)/build-aux/snippet/arg-nonnull.h \
-         > $@-t && \
-       mv $@-t $@
-MOSTLYCLEANFILES += arg-nonnull.h arg-nonnull.h-t
-
-ARG_NONNULL_H=arg-nonnull.h
-
-EXTRA_DIST += $(top_srcdir)/build-aux/snippet/arg-nonnull.h
-
-## end   gnulib module snippet/arg-nonnull
-
-## begin gnulib module snippet/c++defs
-
-# The BUILT_SOURCES created by this Makefile snippet are not used via #include
-# statements but through direct file reference. Therefore this snippet must be
-# present in all Makefile.am that need it. This is ensured by the applicability
-# 'all' defined above.
-
-BUILT_SOURCES += c++defs.h
-# The c++defs.h that gets inserted into generated .h files is the same as
-# build-aux/snippet/c++defs.h, except that it has the copyright header cut off.
-c++defs.h: $(top_srcdir)/build-aux/snippet/c++defs.h
-       $(AM_V_GEN)rm -f $@-t $@ && \
-       sed -n -e '/_GL_CXXDEFS/,$$p' \
-         < $(top_srcdir)/build-aux/snippet/c++defs.h \
-         > $@-t && \
-       mv $@-t $@
-MOSTLYCLEANFILES += c++defs.h c++defs.h-t
-
-CXXDEFS_H=c++defs.h
-
-EXTRA_DIST += $(top_srcdir)/build-aux/snippet/c++defs.h
-
-## end   gnulib module snippet/c++defs
-
-## begin gnulib module snippet/warn-on-use
-
-BUILT_SOURCES += warn-on-use.h
-# The warn-on-use.h that gets inserted into generated .h files is the same as
-# build-aux/snippet/warn-on-use.h, except that it has the copyright header cut
-# off.
-warn-on-use.h: $(top_srcdir)/build-aux/snippet/warn-on-use.h
-       $(AM_V_GEN)rm -f $@-t $@ && \
-       sed -n -e '/^.ifndef/,$$p' \
-         < $(top_srcdir)/build-aux/snippet/warn-on-use.h \
-         > $@-t && \
-       mv $@-t $@
-MOSTLYCLEANFILES += warn-on-use.h warn-on-use.h-t
-
-WARN_ON_USE_H=warn-on-use.h
-
-EXTRA_DIST += $(top_srcdir)/build-aux/snippet/warn-on-use.h
-
-## end   gnulib module snippet/warn-on-use
-
-## begin gnulib module stddef
-
-BUILT_SOURCES += $(STDDEF_H)
-
-# We need the following in order to create <stddef.h> when the system
-# doesn't have one that works with the given compiler.
-if GL_GENERATE_STDDEF_H
-stddef.h: stddef.in.h $(top_builddir)/config.status
-       $(AM_V_GEN)rm -f $@-t $@ && \
-       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
-         sed -e 's|@''GUARD_PREFIX''@|GL|g' \
-             -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
-             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
-             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
-             -e 's|@''NEXT_STDDEF_H''@|$(NEXT_STDDEF_H)|g' \
-             -e 's|@''HAVE_WCHAR_T''@|$(HAVE_WCHAR_T)|g' \
-             -e 's|@''REPLACE_NULL''@|$(REPLACE_NULL)|g' \
-             < $(srcdir)/stddef.in.h; \
-       } > $@-t && \
-       mv $@-t $@
-else
-stddef.h: $(top_builddir)/config.status
-       rm -f $@
-endif
-MOSTLYCLEANFILES += stddef.h stddef.h-t
-
-EXTRA_DIST += stddef.in.h
-
-## end   gnulib module stddef
-
-## begin gnulib module stdint
-
-BUILT_SOURCES += $(STDINT_H)
-
-# We need the following in order to create <stdint.h> when the system
-# doesn't have one that works with the given compiler.
-if GL_GENERATE_STDINT_H
-stdint.h: stdint.in.h $(top_builddir)/config.status
-       $(AM_V_GEN)rm -f $@-t $@ && \
-       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
-         sed -e 's|@''GUARD_PREFIX''@|GL|g' \
-             -e 's/@''HAVE_STDINT_H''@/$(HAVE_STDINT_H)/g' \
-             -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
-             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
-             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
-             -e 's|@''NEXT_STDINT_H''@|$(NEXT_STDINT_H)|g' \
-             -e 's/@''HAVE_SYS_TYPES_H''@/$(HAVE_SYS_TYPES_H)/g' \
-             -e 's/@''HAVE_INTTYPES_H''@/$(HAVE_INTTYPES_H)/g' \
-             -e 's/@''HAVE_SYS_INTTYPES_H''@/$(HAVE_SYS_INTTYPES_H)/g' \
-             -e 's/@''HAVE_SYS_BITYPES_H''@/$(HAVE_SYS_BITYPES_H)/g' \
-             -e 's/@''HAVE_WCHAR_H''@/$(HAVE_WCHAR_H)/g' \
-             -e 's/@''HAVE_LONG_LONG_INT''@/$(HAVE_LONG_LONG_INT)/g' \
-             -e 's/@''HAVE_UNSIGNED_LONG_LONG_INT''@/$(HAVE_UNSIGNED_LONG_LONG_INT)/g' \
-             -e 's/@''APPLE_UNIVERSAL_BUILD''@/$(APPLE_UNIVERSAL_BUILD)/g' \
-             -e 's/@''BITSIZEOF_PTRDIFF_T''@/$(BITSIZEOF_PTRDIFF_T)/g' \
-             -e 's/@''PTRDIFF_T_SUFFIX''@/$(PTRDIFF_T_SUFFIX)/g' \
-             -e 's/@''BITSIZEOF_SIG_ATOMIC_T''@/$(BITSIZEOF_SIG_ATOMIC_T)/g' \
-             -e 's/@''HAVE_SIGNED_SIG_ATOMIC_T''@/$(HAVE_SIGNED_SIG_ATOMIC_T)/g' \
-             -e 's/@''SIG_ATOMIC_T_SUFFIX''@/$(SIG_ATOMIC_T_SUFFIX)/g' \
-             -e 's/@''BITSIZEOF_SIZE_T''@/$(BITSIZEOF_SIZE_T)/g' \
-             -e 's/@''SIZE_T_SUFFIX''@/$(SIZE_T_SUFFIX)/g' \
-             -e 's/@''BITSIZEOF_WCHAR_T''@/$(BITSIZEOF_WCHAR_T)/g' \
-             -e 's/@''HAVE_SIGNED_WCHAR_T''@/$(HAVE_SIGNED_WCHAR_T)/g' \
-             -e 's/@''WCHAR_T_SUFFIX''@/$(WCHAR_T_SUFFIX)/g' \
-             -e 's/@''BITSIZEOF_WINT_T''@/$(BITSIZEOF_WINT_T)/g' \
-             -e 's/@''HAVE_SIGNED_WINT_T''@/$(HAVE_SIGNED_WINT_T)/g' \
-             -e 's/@''WINT_T_SUFFIX''@/$(WINT_T_SUFFIX)/g' \
-             < $(srcdir)/stdint.in.h; \
-       } > $@-t && \
-       mv $@-t $@
-else
-stdint.h: $(top_builddir)/config.status
-       rm -f $@
-endif
-MOSTLYCLEANFILES += stdint.h stdint.h-t
-
-EXTRA_DIST += stdint.in.h
-
-## end   gnulib module stdint
-
-## begin gnulib module streq
-
-
-EXTRA_DIST += streq.h
-
-## end   gnulib module streq
-
-## begin gnulib module unitypes
-
-BUILT_SOURCES += $(LIBUNISTRING_UNITYPES_H)
-
-unitypes.h: unitypes.in.h
-       $(AM_V_GEN)rm -f $@-t $@ && \
-       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
-         cat $(srcdir)/unitypes.in.h; \
-       } > $@-t && \
-       mv -f $@-t $@
-MOSTLYCLEANFILES += unitypes.h unitypes.h-t
-
-EXTRA_DIST += unitypes.in.h
-
-## end   gnulib module unitypes
-
-## begin gnulib module uniwidth/base
-
-BUILT_SOURCES += $(LIBUNISTRING_UNIWIDTH_H)
-
-uniwidth.h: uniwidth.in.h
-       $(AM_V_GEN)rm -f $@-t $@ && \
-       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
-         cat $(srcdir)/uniwidth.in.h; \
-       } > $@-t && \
-       mv -f $@-t $@
-MOSTLYCLEANFILES += uniwidth.h uniwidth.h-t
-
-EXTRA_DIST += localcharset.h uniwidth.in.h
-
-## end   gnulib module uniwidth/base
-
-## begin gnulib module uniwidth/width
-
-if LIBUNISTRING_COMPILE_UNIWIDTH_WIDTH
-libgnu_a_SOURCES += uniwidth/width.c
-endif
-
-EXTRA_DIST += uniwidth/cjk.h
-
-## end   gnulib module uniwidth/width
-
-## begin gnulib module wchar
-
-BUILT_SOURCES += wchar.h
-
-# We need the following in order to create <wchar.h> when the system
-# version does not work standalone.
-wchar.h: wchar.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
-       $(AM_V_GEN)rm -f $@-t $@ && \
-       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
-         sed -e 's|@''GUARD_PREFIX''@|GL|g' \
-             -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
-             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
-             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
-             -e 's|@''HAVE_FEATURES_H''@|$(HAVE_FEATURES_H)|g' \
-             -e 's|@''NEXT_WCHAR_H''@|$(NEXT_WCHAR_H)|g' \
-             -e 's|@''HAVE_WCHAR_H''@|$(HAVE_WCHAR_H)|g' \
-             -e 's/@''GNULIB_BTOWC''@/$(GNULIB_BTOWC)/g' \
-             -e 's/@''GNULIB_WCTOB''@/$(GNULIB_WCTOB)/g' \
-             -e 's/@''GNULIB_MBSINIT''@/$(GNULIB_MBSINIT)/g' \
-             -e 's/@''GNULIB_MBRTOWC''@/$(GNULIB_MBRTOWC)/g' \
-             -e 's/@''GNULIB_MBRLEN''@/$(GNULIB_MBRLEN)/g' \
-             -e 's/@''GNULIB_MBSRTOWCS''@/$(GNULIB_MBSRTOWCS)/g' \
-             -e 's/@''GNULIB_MBSNRTOWCS''@/$(GNULIB_MBSNRTOWCS)/g' \
-             -e 's/@''GNULIB_WCRTOMB''@/$(GNULIB_WCRTOMB)/g' \
-             -e 's/@''GNULIB_WCSRTOMBS''@/$(GNULIB_WCSRTOMBS)/g' \
-             -e 's/@''GNULIB_WCSNRTOMBS''@/$(GNULIB_WCSNRTOMBS)/g' \
-             -e 's/@''GNULIB_WCWIDTH''@/$(GNULIB_WCWIDTH)/g' \
-             -e 's/@''GNULIB_WMEMCHR''@/$(GNULIB_WMEMCHR)/g' \
-             -e 's/@''GNULIB_WMEMCMP''@/$(GNULIB_WMEMCMP)/g' \
-             -e 's/@''GNULIB_WMEMCPY''@/$(GNULIB_WMEMCPY)/g' \
-             -e 's/@''GNULIB_WMEMMOVE''@/$(GNULIB_WMEMMOVE)/g' \
-             -e 's/@''GNULIB_WMEMSET''@/$(GNULIB_WMEMSET)/g' \
-             -e 's/@''GNULIB_WCSLEN''@/$(GNULIB_WCSLEN)/g' \
-             -e 's/@''GNULIB_WCSNLEN''@/$(GNULIB_WCSNLEN)/g' \
-             -e 's/@''GNULIB_WCSCPY''@/$(GNULIB_WCSCPY)/g' \
-             -e 's/@''GNULIB_WCPCPY''@/$(GNULIB_WCPCPY)/g' \
-             -e 's/@''GNULIB_WCSNCPY''@/$(GNULIB_WCSNCPY)/g' \
-             -e 's/@''GNULIB_WCPNCPY''@/$(GNULIB_WCPNCPY)/g' \
-             -e 's/@''GNULIB_WCSCAT''@/$(GNULIB_WCSCAT)/g' \
-             -e 's/@''GNULIB_WCSNCAT''@/$(GNULIB_WCSNCAT)/g' \
-             -e 's/@''GNULIB_WCSCMP''@/$(GNULIB_WCSCMP)/g' \
-             -e 's/@''GNULIB_WCSNCMP''@/$(GNULIB_WCSNCMP)/g' \
-             -e 's/@''GNULIB_WCSCASECMP''@/$(GNULIB_WCSCASECMP)/g' \
-             -e 's/@''GNULIB_WCSNCASECMP''@/$(GNULIB_WCSNCASECMP)/g' \
-             -e 's/@''GNULIB_WCSCOLL''@/$(GNULIB_WCSCOLL)/g' \
-             -e 's/@''GNULIB_WCSXFRM''@/$(GNULIB_WCSXFRM)/g' \
-             -e 's/@''GNULIB_WCSDUP''@/$(GNULIB_WCSDUP)/g' \
-             -e 's/@''GNULIB_WCSCHR''@/$(GNULIB_WCSCHR)/g' \
-             -e 's/@''GNULIB_WCSRCHR''@/$(GNULIB_WCSRCHR)/g' \
-             -e 's/@''GNULIB_WCSCSPN''@/$(GNULIB_WCSCSPN)/g' \
-             -e 's/@''GNULIB_WCSSPN''@/$(GNULIB_WCSSPN)/g' \
-             -e 's/@''GNULIB_WCSPBRK''@/$(GNULIB_WCSPBRK)/g' \
-             -e 's/@''GNULIB_WCSSTR''@/$(GNULIB_WCSSTR)/g' \
-             -e 's/@''GNULIB_WCSTOK''@/$(GNULIB_WCSTOK)/g' \
-             -e 's/@''GNULIB_WCSWIDTH''@/$(GNULIB_WCSWIDTH)/g' \
-             < $(srcdir)/wchar.in.h | \
-         sed -e 's|@''HAVE_WINT_T''@|$(HAVE_WINT_T)|g' \
-             -e 's|@''HAVE_BTOWC''@|$(HAVE_BTOWC)|g' \
-             -e 's|@''HAVE_MBSINIT''@|$(HAVE_MBSINIT)|g' \
-             -e 's|@''HAVE_MBRTOWC''@|$(HAVE_MBRTOWC)|g' \
-             -e 's|@''HAVE_MBRLEN''@|$(HAVE_MBRLEN)|g' \
-             -e 's|@''HAVE_MBSRTOWCS''@|$(HAVE_MBSRTOWCS)|g' \
-             -e 's|@''HAVE_MBSNRTOWCS''@|$(HAVE_MBSNRTOWCS)|g' \
-             -e 's|@''HAVE_WCRTOMB''@|$(HAVE_WCRTOMB)|g' \
-             -e 's|@''HAVE_WCSRTOMBS''@|$(HAVE_WCSRTOMBS)|g' \
-             -e 's|@''HAVE_WCSNRTOMBS''@|$(HAVE_WCSNRTOMBS)|g' \
-             -e 's|@''HAVE_WMEMCHR''@|$(HAVE_WMEMCHR)|g' \
-             -e 's|@''HAVE_WMEMCMP''@|$(HAVE_WMEMCMP)|g' \
-             -e 's|@''HAVE_WMEMCPY''@|$(HAVE_WMEMCPY)|g' \
-             -e 's|@''HAVE_WMEMMOVE''@|$(HAVE_WMEMMOVE)|g' \
-             -e 's|@''HAVE_WMEMSET''@|$(HAVE_WMEMSET)|g' \
-             -e 's|@''HAVE_WCSLEN''@|$(HAVE_WCSLEN)|g' \
-             -e 's|@''HAVE_WCSNLEN''@|$(HAVE_WCSNLEN)|g' \
-             -e 's|@''HAVE_WCSCPY''@|$(HAVE_WCSCPY)|g' \
-             -e 's|@''HAVE_WCPCPY''@|$(HAVE_WCPCPY)|g' \
-             -e 's|@''HAVE_WCSNCPY''@|$(HAVE_WCSNCPY)|g' \
-             -e 's|@''HAVE_WCPNCPY''@|$(HAVE_WCPNCPY)|g' \
-             -e 's|@''HAVE_WCSCAT''@|$(HAVE_WCSCAT)|g' \
-             -e 's|@''HAVE_WCSNCAT''@|$(HAVE_WCSNCAT)|g' \
-             -e 's|@''HAVE_WCSCMP''@|$(HAVE_WCSCMP)|g' \
-             -e 's|@''HAVE_WCSNCMP''@|$(HAVE_WCSNCMP)|g' \
-             -e 's|@''HAVE_WCSCASECMP''@|$(HAVE_WCSCASECMP)|g' \
-             -e 's|@''HAVE_WCSNCASECMP''@|$(HAVE_WCSNCASECMP)|g' \
-             -e 's|@''HAVE_WCSCOLL''@|$(HAVE_WCSCOLL)|g' \
-             -e 's|@''HAVE_WCSXFRM''@|$(HAVE_WCSXFRM)|g' \
-             -e 's|@''HAVE_WCSDUP''@|$(HAVE_WCSDUP)|g' \
-             -e 's|@''HAVE_WCSCHR''@|$(HAVE_WCSCHR)|g' \
-             -e 's|@''HAVE_WCSRCHR''@|$(HAVE_WCSRCHR)|g' \
-             -e 's|@''HAVE_WCSCSPN''@|$(HAVE_WCSCSPN)|g' \
-             -e 's|@''HAVE_WCSSPN''@|$(HAVE_WCSSPN)|g' \
-             -e 's|@''HAVE_WCSPBRK''@|$(HAVE_WCSPBRK)|g' \
-             -e 's|@''HAVE_WCSSTR''@|$(HAVE_WCSSTR)|g' \
-             -e 's|@''HAVE_WCSTOK''@|$(HAVE_WCSTOK)|g' \
-             -e 's|@''HAVE_WCSWIDTH''@|$(HAVE_WCSWIDTH)|g' \
-             -e 's|@''HAVE_DECL_WCTOB''@|$(HAVE_DECL_WCTOB)|g' \
-             -e 's|@''HAVE_DECL_WCWIDTH''@|$(HAVE_DECL_WCWIDTH)|g' \
-         | \
-         sed -e 's|@''REPLACE_MBSTATE_T''@|$(REPLACE_MBSTATE_T)|g' \
-             -e 's|@''REPLACE_BTOWC''@|$(REPLACE_BTOWC)|g' \
-             -e 's|@''REPLACE_WCTOB''@|$(REPLACE_WCTOB)|g' \
-             -e 's|@''REPLACE_MBSINIT''@|$(REPLACE_MBSINIT)|g' \
-             -e 's|@''REPLACE_MBRTOWC''@|$(REPLACE_MBRTOWC)|g' \
-             -e 's|@''REPLACE_MBRLEN''@|$(REPLACE_MBRLEN)|g' \
-             -e 's|@''REPLACE_MBSRTOWCS''@|$(REPLACE_MBSRTOWCS)|g' \
-             -e 's|@''REPLACE_MBSNRTOWCS''@|$(REPLACE_MBSNRTOWCS)|g' \
-             -e 's|@''REPLACE_WCRTOMB''@|$(REPLACE_WCRTOMB)|g' \
-             -e 's|@''REPLACE_WCSRTOMBS''@|$(REPLACE_WCSRTOMBS)|g' \
-             -e 's|@''REPLACE_WCSNRTOMBS''@|$(REPLACE_WCSNRTOMBS)|g' \
-             -e 's|@''REPLACE_WCWIDTH''@|$(REPLACE_WCWIDTH)|g' \
-             -e 's|@''REPLACE_WCSWIDTH''@|$(REPLACE_WCSWIDTH)|g' \
-             -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
-             -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
-             -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \
-       } > $@-t && \
-       mv $@-t $@
-MOSTLYCLEANFILES += wchar.h wchar.h-t
-
-EXTRA_DIST += wchar.in.h
-
-## end   gnulib module wchar
-
-## begin gnulib module wctype-h
-
-BUILT_SOURCES += wctype.h
-libgnu_a_SOURCES += wctype-h.c
-
-# We need the following in order to create <wctype.h> when the system
-# doesn't have one that works with the given compiler.
-wctype.h: wctype.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(WARN_ON_USE_H)
-       $(AM_V_GEN)rm -f $@-t $@ && \
-       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
-         sed -e 's|@''GUARD_PREFIX''@|GL|g' \
-             -e 's/@''HAVE_WCTYPE_H''@/$(HAVE_WCTYPE_H)/g' \
-             -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
-             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
-             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
-             -e 's|@''NEXT_WCTYPE_H''@|$(NEXT_WCTYPE_H)|g' \
-             -e 's/@''GNULIB_ISWBLANK''@/$(GNULIB_ISWBLANK)/g' \
-             -e 's/@''GNULIB_WCTYPE''@/$(GNULIB_WCTYPE)/g' \
-             -e 's/@''GNULIB_ISWCTYPE''@/$(GNULIB_ISWCTYPE)/g' \
-             -e 's/@''GNULIB_WCTRANS''@/$(GNULIB_WCTRANS)/g' \
-             -e 's/@''GNULIB_TOWCTRANS''@/$(GNULIB_TOWCTRANS)/g' \
-             -e 's/@''HAVE_ISWBLANK''@/$(HAVE_ISWBLANK)/g' \
-             -e 's/@''HAVE_ISWCNTRL''@/$(HAVE_ISWCNTRL)/g' \
-             -e 's/@''HAVE_WCTYPE_T''@/$(HAVE_WCTYPE_T)/g' \
-             -e 's/@''HAVE_WCTRANS_T''@/$(HAVE_WCTRANS_T)/g' \
-             -e 's/@''HAVE_WINT_T''@/$(HAVE_WINT_T)/g' \
-             -e 's/@''REPLACE_ISWBLANK''@/$(REPLACE_ISWBLANK)/g' \
-             -e 's/@''REPLACE_ISWCNTRL''@/$(REPLACE_ISWCNTRL)/g' \
-             -e 's/@''REPLACE_TOWLOWER''@/$(REPLACE_TOWLOWER)/g' \
-             -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
-             -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \
-             < $(srcdir)/wctype.in.h; \
-       } > $@-t && \
-       mv $@-t $@
-MOSTLYCLEANFILES += wctype.h wctype.h-t
-
-EXTRA_DIST += wctype.in.h
-
-## end   gnulib module wctype-h
-
-## begin gnulib module wcwidth
-
-
-EXTRA_DIST += wcwidth.c
-
-EXTRA_libgnu_a_SOURCES += wcwidth.c
-
-## end   gnulib module wcwidth
-
-
-mostlyclean-local: mostlyclean-generic
-       @for dir in '' $(MOSTLYCLEANDIRS); do \
-         if test -n "$$dir" && test -d $$dir; then \
-           echo "rmdir $$dir"; rmdir $$dir; \
-         fi; \
-       done; \
-       :
diff --git a/src/libs/gnulib/lib/Makefile.in b/src/libs/gnulib/lib/Makefile.in
deleted file mode 100644 (file)
index c3f4c1d..0000000
+++ /dev/null
@@ -1,1285 +0,0 @@
-# Makefile.in generated by automake 1.14 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-# Copyright (C) 2002-2014 Free Software Foundation, Inc.
-#
-# This file is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
-# (at your option) any later version.
-#
-# This file is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this file.  If not, see <http://www.gnu.org/licenses/>.
-#
-# As a special exception to the GNU General Public License,
-# this file may be distributed as part of a program that
-# contains a configuration script generated by Autoconf, under
-# the same distribution terms as the rest of that program.
-#
-# Generated by gnulib-tool.
-# Reproduce by: gnulib-tool --import --dir=src/libs/gnulib --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --no-conditional-dependencies --no-libtool --macro-prefix=gl wcwidth
-
-
-
-VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \  ]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs  ]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-@LIBUNISTRING_COMPILE_UNIWIDTH_WIDTH_TRUE@am__append_1 = uniwidth/width.c
-subdir = lib
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-       $(top_srcdir)/build-aux/depcomp $(noinst_HEADERS)
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
-       $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/configmake.m4 \
-       $(top_srcdir)/m4/extensions.m4 \
-       $(top_srcdir)/m4/extern-inline.m4 $(top_srcdir)/m4/fcntl-o.m4 \
-       $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/gnulib-common.m4 \
-       $(top_srcdir)/m4/include_next.m4 \
-       $(top_srcdir)/m4/inttypes-pri.m4 $(top_srcdir)/m4/inttypes.m4 \
-       $(top_srcdir)/m4/libunistring-base.m4 \
-       $(top_srcdir)/m4/localcharset.m4 $(top_srcdir)/m4/longlong.m4 \
-       $(top_srcdir)/m4/multiarch.m4 $(top_srcdir)/m4/onceonly.m4 \
-       $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stddef_h.m4 \
-       $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/warn-on-use.m4 \
-       $(top_srcdir)/m4/wchar_h.m4 $(top_srcdir)/m4/wchar_t.m4 \
-       $(top_srcdir)/m4/wctype_h.m4 $(top_srcdir)/m4/wcwidth.m4 \
-       $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-       $(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-LIBRARIES = $(noinst_LIBRARIES)
-AM_V_AR = $(am__v_AR_@AM_V@)
-am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@)
-am__v_AR_0 = @echo "  AR      " $@;
-am__v_AR_1 = 
-libgnu_a_AR = $(AR) $(ARFLAGS)
-am__DEPENDENCIES_1 =
-am__libgnu_a_SOURCES_DIST = localcharset.h localcharset.c \
-       uniwidth/width.c wctype-h.c
-am__dirstamp = $(am__leading_dot)dirstamp
-@LIBUNISTRING_COMPILE_UNIWIDTH_WIDTH_TRUE@am__objects_1 = uniwidth/width.$(OBJEXT)
-am_libgnu_a_OBJECTS = localcharset.$(OBJEXT) $(am__objects_1) \
-       wctype-h.$(OBJEXT)
-libgnu_a_OBJECTS = $(am_libgnu_a_OBJECTS)
-LTLIBRARIES = $(noinst_LTLIBRARIES)
-AM_V_P = $(am__v_P_@AM_V@)
-am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_@AM_V@)
-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_@AM_V@)
-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 = 
-DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-       $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_@AM_V@)
-am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
-am__v_CC_0 = @echo "  CC      " $@;
-am__v_CC_1 = 
-CCLD = $(CC)
-LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_@AM_V@)
-am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
-am__v_CCLD_0 = @echo "  CCLD    " $@;
-am__v_CCLD_1 = 
-SOURCES = $(libgnu_a_SOURCES) $(EXTRA_libgnu_a_SOURCES)
-DIST_SOURCES = $(am__libgnu_a_SOURCES_DIST) $(EXTRA_libgnu_a_SOURCES)
-RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
-       ctags-recursive dvi-recursive html-recursive info-recursive \
-       install-data-recursive install-dvi-recursive \
-       install-exec-recursive install-html-recursive \
-       install-info-recursive install-pdf-recursive \
-       install-ps-recursive install-recursive installcheck-recursive \
-       installdirs-recursive pdf-recursive ps-recursive \
-       tags-recursive uninstall-recursive
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-HEADERS = $(noinst_HEADERS)
-RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive        \
-  distclean-recursive maintainer-clean-recursive
-am__recursive_targets = \
-  $(RECURSIVE_TARGETS) \
-  $(RECURSIVE_CLEAN_TARGETS) \
-  $(am__extra_recursive_targets)
-AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
-       distdir
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates.  Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
-  BEGIN { nonempty = 0; } \
-  { items[$$0] = 1; nonempty = 1; } \
-  END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique.  This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
-  list='$(am__tagged_files)'; \
-  unique=`for i in $$list; do \
-    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-  done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-DIST_SUBDIRS = $(SUBDIRS)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-am__relativize = \
-  dir0=`pwd`; \
-  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
-  sed_rest='s,^[^/]*/*,,'; \
-  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
-  sed_butlast='s,/*[^/]*$$,,'; \
-  while test -n "$$dir1"; do \
-    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
-    if test "$$first" != "."; then \
-      if test "$$first" = ".."; then \
-        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
-        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
-      else \
-        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
-        if test "$$first2" = "$$first"; then \
-          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
-        else \
-          dir2="../$$dir2"; \
-        fi; \
-        dir0="$$dir0"/"$$first"; \
-      fi; \
-    fi; \
-    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
-  done; \
-  reldir="$$dir2"
-pkglibexecdir = @pkglibexecdir@
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
-AR = @AR@
-ARFLAGS = @ARFLAGS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
-BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
-BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
-BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
-BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-GLIBC21 = @GLIBC21@
-GNULIB_BTOWC = @GNULIB_BTOWC@
-GNULIB_IMAXABS = @GNULIB_IMAXABS@
-GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
-GNULIB_ISWBLANK = @GNULIB_ISWBLANK@
-GNULIB_ISWCTYPE = @GNULIB_ISWCTYPE@
-GNULIB_MBRLEN = @GNULIB_MBRLEN@
-GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
-GNULIB_MBSINIT = @GNULIB_MBSINIT@
-GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@
-GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@
-GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
-GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
-GNULIB_TOWCTRANS = @GNULIB_TOWCTRANS@
-GNULIB_WCPCPY = @GNULIB_WCPCPY@
-GNULIB_WCPNCPY = @GNULIB_WCPNCPY@
-GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
-GNULIB_WCSCASECMP = @GNULIB_WCSCASECMP@
-GNULIB_WCSCAT = @GNULIB_WCSCAT@
-GNULIB_WCSCHR = @GNULIB_WCSCHR@
-GNULIB_WCSCMP = @GNULIB_WCSCMP@
-GNULIB_WCSCOLL = @GNULIB_WCSCOLL@
-GNULIB_WCSCPY = @GNULIB_WCSCPY@
-GNULIB_WCSCSPN = @GNULIB_WCSCSPN@
-GNULIB_WCSDUP = @GNULIB_WCSDUP@
-GNULIB_WCSLEN = @GNULIB_WCSLEN@
-GNULIB_WCSNCASECMP = @GNULIB_WCSNCASECMP@
-GNULIB_WCSNCAT = @GNULIB_WCSNCAT@
-GNULIB_WCSNCMP = @GNULIB_WCSNCMP@
-GNULIB_WCSNCPY = @GNULIB_WCSNCPY@
-GNULIB_WCSNLEN = @GNULIB_WCSNLEN@
-GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@
-GNULIB_WCSPBRK = @GNULIB_WCSPBRK@
-GNULIB_WCSRCHR = @GNULIB_WCSRCHR@
-GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
-GNULIB_WCSSPN = @GNULIB_WCSSPN@
-GNULIB_WCSSTR = @GNULIB_WCSSTR@
-GNULIB_WCSTOK = @GNULIB_WCSTOK@
-GNULIB_WCSWIDTH = @GNULIB_WCSWIDTH@
-GNULIB_WCSXFRM = @GNULIB_WCSXFRM@
-GNULIB_WCTOB = @GNULIB_WCTOB@
-GNULIB_WCTRANS = @GNULIB_WCTRANS@
-GNULIB_WCTYPE = @GNULIB_WCTYPE@
-GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
-GNULIB_WMEMCHR = @GNULIB_WMEMCHR@
-GNULIB_WMEMCMP = @GNULIB_WMEMCMP@
-GNULIB_WMEMCPY = @GNULIB_WMEMCPY@
-GNULIB_WMEMMOVE = @GNULIB_WMEMMOVE@
-GNULIB_WMEMSET = @GNULIB_WMEMSET@
-GREP = @GREP@
-HAVE_BTOWC = @HAVE_BTOWC@
-HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
-HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
-HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
-HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
-HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
-HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
-HAVE_FEATURES_H = @HAVE_FEATURES_H@
-HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
-HAVE_ISWBLANK = @HAVE_ISWBLANK@
-HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
-HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
-HAVE_MBRLEN = @HAVE_MBRLEN@
-HAVE_MBRTOWC = @HAVE_MBRTOWC@
-HAVE_MBSINIT = @HAVE_MBSINIT@
-HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
-HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
-HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
-HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
-HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
-HAVE_STDINT_H = @HAVE_STDINT_H@
-HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
-HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
-HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
-HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
-HAVE_WCHAR_H = @HAVE_WCHAR_H@
-HAVE_WCHAR_T = @HAVE_WCHAR_T@
-HAVE_WCPCPY = @HAVE_WCPCPY@
-HAVE_WCPNCPY = @HAVE_WCPNCPY@
-HAVE_WCRTOMB = @HAVE_WCRTOMB@
-HAVE_WCSCASECMP = @HAVE_WCSCASECMP@
-HAVE_WCSCAT = @HAVE_WCSCAT@
-HAVE_WCSCHR = @HAVE_WCSCHR@
-HAVE_WCSCMP = @HAVE_WCSCMP@
-HAVE_WCSCOLL = @HAVE_WCSCOLL@
-HAVE_WCSCPY = @HAVE_WCSCPY@
-HAVE_WCSCSPN = @HAVE_WCSCSPN@
-HAVE_WCSDUP = @HAVE_WCSDUP@
-HAVE_WCSLEN = @HAVE_WCSLEN@
-HAVE_WCSNCASECMP = @HAVE_WCSNCASECMP@
-HAVE_WCSNCAT = @HAVE_WCSNCAT@
-HAVE_WCSNCMP = @HAVE_WCSNCMP@
-HAVE_WCSNCPY = @HAVE_WCSNCPY@
-HAVE_WCSNLEN = @HAVE_WCSNLEN@
-HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
-HAVE_WCSPBRK = @HAVE_WCSPBRK@
-HAVE_WCSRCHR = @HAVE_WCSRCHR@
-HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
-HAVE_WCSSPN = @HAVE_WCSSPN@
-HAVE_WCSSTR = @HAVE_WCSSTR@
-HAVE_WCSTOK = @HAVE_WCSTOK@
-HAVE_WCSWIDTH = @HAVE_WCSWIDTH@
-HAVE_WCSXFRM = @HAVE_WCSXFRM@
-HAVE_WCTRANS_T = @HAVE_WCTRANS_T@
-HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
-HAVE_WCTYPE_T = @HAVE_WCTYPE_T@
-HAVE_WINT_T = @HAVE_WINT_T@
-HAVE_WMEMCHR = @HAVE_WMEMCHR@
-HAVE_WMEMCMP = @HAVE_WMEMCMP@
-HAVE_WMEMCPY = @HAVE_WMEMCPY@
-HAVE_WMEMMOVE = @HAVE_WMEMMOVE@
-HAVE_WMEMSET = @HAVE_WMEMSET@
-HAVE__BOOL = @HAVE__BOOL@
-INCLUDE_NEXT = @INCLUDE_NEXT@
-INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INT32_MAX_LT_INTMAX_MAX = @INT32_MAX_LT_INTMAX_MAX@
-INT64_MAX_EQ_LONG_MAX = @INT64_MAX_EQ_LONG_MAX@
-LDFLAGS = @LDFLAGS@
-LIBGNU_LIBDEPS = @LIBGNU_LIBDEPS@
-LIBGNU_LTLIBDEPS = @LIBGNU_LTLIBDEPS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBUNISTRING_UNITYPES_H = @LIBUNISTRING_UNITYPES_H@
-LIBUNISTRING_UNIWIDTH_H = @LIBUNISTRING_UNIWIDTH_H@
-LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H = @NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H@
-NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@
-NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
-NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
-NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@
-NEXT_INTTYPES_H = @NEXT_INTTYPES_H@
-NEXT_STDDEF_H = @NEXT_STDDEF_H@
-NEXT_STDINT_H = @NEXT_STDINT_H@
-NEXT_WCHAR_H = @NEXT_WCHAR_H@
-NEXT_WCTYPE_H = @NEXT_WCTYPE_H@
-OBJEXT = @OBJEXT@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PRAGMA_COLUMNS = @PRAGMA_COLUMNS@
-PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
-PRIPTR_PREFIX = @PRIPTR_PREFIX@
-PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
-PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
-RANLIB = @RANLIB@
-REPLACE_BTOWC = @REPLACE_BTOWC@
-REPLACE_ISWBLANK = @REPLACE_ISWBLANK@
-REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@
-REPLACE_MBRLEN = @REPLACE_MBRLEN@
-REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
-REPLACE_MBSINIT = @REPLACE_MBSINIT@
-REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
-REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
-REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
-REPLACE_NULL = @REPLACE_NULL@
-REPLACE_STRTOIMAX = @REPLACE_STRTOIMAX@
-REPLACE_TOWLOWER = @REPLACE_TOWLOWER@
-REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
-REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
-REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
-REPLACE_WCSWIDTH = @REPLACE_WCSWIDTH@
-REPLACE_WCTOB = @REPLACE_WCTOB@
-REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
-SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
-STDBOOL_H = @STDBOOL_H@
-STDDEF_H = @STDDEF_H@
-STDINT_H = @STDINT_H@
-STRIP = @STRIP@
-UINT32_MAX_LT_UINTMAX_MAX = @UINT32_MAX_LT_UINTMAX_MAX@
-UINT64_MAX_EQ_ULONG_MAX = @UINT64_MAX_EQ_ULONG_MAX@
-VERSION = @VERSION@
-WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
-WINT_T_SUFFIX = @WINT_T_SUFFIX@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-gl_LIBOBJS = @gl_LIBOBJS@
-gl_LTLIBOBJS = @gl_LTLIBOBJS@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-lispdir = @lispdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-runstatedir = @runstatedir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-AUTOMAKE_OPTIONS = 1.5 gnits subdir-objects
-SUBDIRS = 
-noinst_HEADERS = 
-noinst_LIBRARIES = libgnu.a
-noinst_LTLIBRARIES = 
-EXTRA_DIST = config.charset ref-add.sin ref-del.sin \
-       $(top_srcdir)/build-aux/snippet/arg-nonnull.h \
-       $(top_srcdir)/build-aux/snippet/c++defs.h \
-       $(top_srcdir)/build-aux/snippet/warn-on-use.h stddef.in.h \
-       stdint.in.h streq.h unitypes.in.h localcharset.h uniwidth.in.h \
-       uniwidth/cjk.h wchar.in.h wctype.in.h wcwidth.c
-
-# The BUILT_SOURCES created by this Makefile snippet are not used via #include
-# statements but through direct file reference. Therefore this snippet must be
-# present in all Makefile.am that need it. This is ensured by the applicability
-# 'all' defined above.
-
-# The BUILT_SOURCES created by this Makefile snippet are not used via #include
-# statements but through direct file reference. Therefore this snippet must be
-# present in all Makefile.am that need it. This is ensured by the applicability
-# 'all' defined above.
-BUILT_SOURCES = configmake.h arg-nonnull.h c++defs.h warn-on-use.h \
-       $(STDDEF_H) $(STDINT_H) $(LIBUNISTRING_UNITYPES_H) \
-       $(LIBUNISTRING_UNIWIDTH_H) wchar.h wctype.h
-SUFFIXES = .sed .sin
-MOSTLYCLEANFILES = core *.stackdump arg-nonnull.h arg-nonnull.h-t \
-       c++defs.h c++defs.h-t warn-on-use.h warn-on-use.h-t stddef.h \
-       stddef.h-t stdint.h stdint.h-t unitypes.h unitypes.h-t \
-       uniwidth.h uniwidth.h-t wchar.h wchar.h-t wctype.h wctype.h-t
-MOSTLYCLEANDIRS = 
-CLEANFILES = configmake.h configmake.h-t charset.alias ref-add.sed \
-       ref-del.sed
-DISTCLEANFILES = 
-MAINTAINERCLEANFILES = 
-AM_CPPFLAGS = 
-AM_CFLAGS = 
-libgnu_a_SOURCES = localcharset.h localcharset.c $(am__append_1) \
-       wctype-h.c
-libgnu_a_LIBADD = $(gl_LIBOBJS)
-libgnu_a_DEPENDENCIES = $(gl_LIBOBJS)
-EXTRA_libgnu_a_SOURCES = wcwidth.c
-charset_alias = $(DESTDIR)$(libdir)/charset.alias
-charset_tmp = $(DESTDIR)$(libdir)/charset.tmp
-ARG_NONNULL_H = arg-nonnull.h
-CXXDEFS_H = c++defs.h
-WARN_ON_USE_H = warn-on-use.h
-all: $(BUILT_SOURCES)
-       $(MAKE) $(AM_MAKEFLAGS) all-recursive
-
-.SUFFIXES:
-.SUFFIXES: .sed .sin .c .o .obj
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-       @for dep in $?; do \
-         case '$(am__configure_deps)' in \
-           *$$dep*) \
-             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-               && { if test -f $@; then exit 0; else break; fi; }; \
-             exit 1;; \
-         esac; \
-       done; \
-       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits lib/Makefile'; \
-       $(am__cd) $(top_srcdir) && \
-         $(AUTOMAKE) --gnits lib/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-       @case '$?' in \
-         *config.status*) \
-           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-         *) \
-           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-       esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-clean-noinstLIBRARIES:
-       -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
-uniwidth/$(am__dirstamp):
-       @$(MKDIR_P) uniwidth
-       @: > uniwidth/$(am__dirstamp)
-uniwidth/$(DEPDIR)/$(am__dirstamp):
-       @$(MKDIR_P) uniwidth/$(DEPDIR)
-       @: > uniwidth/$(DEPDIR)/$(am__dirstamp)
-uniwidth/width.$(OBJEXT): uniwidth/$(am__dirstamp) \
-       uniwidth/$(DEPDIR)/$(am__dirstamp)
-
-libgnu.a: $(libgnu_a_OBJECTS) $(libgnu_a_DEPENDENCIES) $(EXTRA_libgnu_a_DEPENDENCIES) 
-       $(AM_V_at)-rm -f libgnu.a
-       $(AM_V_AR)$(libgnu_a_AR) libgnu.a $(libgnu_a_OBJECTS) $(libgnu_a_LIBADD)
-       $(AM_V_at)$(RANLIB) libgnu.a
-
-clean-noinstLTLIBRARIES:
-       -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
-       @list='$(noinst_LTLIBRARIES)'; \
-       locs=`for p in $$list; do echo $$p; done | \
-             sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
-             sort -u`; \
-       test -z "$$locs" || { \
-         echo rm -f $${locs}; \
-         rm -f $${locs}; \
-       }
-
-mostlyclean-compile:
-       -rm -f *.$(OBJEXT)
-       -rm -f uniwidth/*.$(OBJEXT)
-
-distclean-compile:
-       -rm -f *.tab.c
-
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/localcharset.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wctype-h.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wcwidth.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@uniwidth/$(DEPDIR)/width.Po@am__quote@
-
-.c.o:
-@am__fastdepCC_TRUE@   $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
-@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
-@am__fastdepCC_TRUE@   $(am__mv) $$depbase.Tpo $$depbase.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
-
-.c.obj:
-@am__fastdepCC_TRUE@   $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
-@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
-@am__fastdepCC_TRUE@   $(am__mv) $$depbase.Tpo $$depbase.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-# This directory's subdirectories are mostly independent; you can cd
-# into them and run 'make' without going through this Makefile.
-# To change the values of 'make' variables: instead of editing Makefiles,
-# (1) if the variable is set in 'config.status', edit 'config.status'
-#     (which will cause the Makefiles to be regenerated when you run 'make');
-# (2) otherwise, pass the desired values on the 'make' command line.
-$(am__recursive_targets):
-       @fail=; \
-       if $(am__make_keepgoing); then \
-         failcom='fail=yes'; \
-       else \
-         failcom='exit 1'; \
-       fi; \
-       dot_seen=no; \
-       target=`echo $@ | sed s/-recursive//`; \
-       case "$@" in \
-         distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
-         *) list='$(SUBDIRS)' ;; \
-       esac; \
-       for subdir in $$list; do \
-         echo "Making $$target in $$subdir"; \
-         if test "$$subdir" = "."; then \
-           dot_seen=yes; \
-           local_target="$$target-am"; \
-         else \
-           local_target="$$target"; \
-         fi; \
-         ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-         || eval $$failcom; \
-       done; \
-       if test "$$dot_seen" = "no"; then \
-         $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
-       fi; test -z "$$fail"
-
-ID: $(am__tagged_files)
-       $(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-recursive
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-       set x; \
-       here=`pwd`; \
-       if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
-         include_option=--etags-include; \
-         empty_fix=.; \
-       else \
-         include_option=--include; \
-         empty_fix=; \
-       fi; \
-       list='$(SUBDIRS)'; for subdir in $$list; do \
-         if test "$$subdir" = .; then :; else \
-           test ! -f $$subdir/TAGS || \
-             set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
-         fi; \
-       done; \
-       $(am__define_uniq_tagged_files); \
-       shift; \
-       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-         test -n "$$unique" || unique=$$empty_fix; \
-         if test $$# -gt 0; then \
-           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-             "$$@" $$unique; \
-         else \
-           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-             $$unique; \
-         fi; \
-       fi
-ctags: ctags-recursive
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-       $(am__define_uniq_tagged_files); \
-       test -z "$(CTAGS_ARGS)$$unique" \
-         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-            $$unique
-
-GTAGS:
-       here=`$(am__cd) $(top_builddir) && pwd` \
-         && $(am__cd) $(top_srcdir) \
-         && gtags -i $(GTAGS_ARGS) "$$here"
-cscopelist: cscopelist-recursive
-
-cscopelist-am: $(am__tagged_files)
-       list='$(am__tagged_files)'; \
-       case "$(srcdir)" in \
-         [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
-         *) sdir=$(subdir)/$(srcdir) ;; \
-       esac; \
-       for i in $$list; do \
-         if test -f "$$i"; then \
-           echo "$(subdir)/$$i"; \
-         else \
-           echo "$$sdir/$$i"; \
-         fi; \
-       done >> $(top_builddir)/cscope.files
-
-distclean-tags:
-       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
-       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-       list='$(DISTFILES)'; \
-         dist_files=`for file in $$list; do echo $$file; done | \
-         sed -e "s|^$$srcdirstrip/||;t" \
-             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-       case $$dist_files in \
-         */*) $(MKDIR_P) `echo "$$dist_files" | \
-                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-                          sort -u` ;; \
-       esac; \
-       for file in $$dist_files; do \
-         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-         if test -d $$d/$$file; then \
-           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-           if test -d "$(distdir)/$$file"; then \
-             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-           fi; \
-           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-           fi; \
-           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-         else \
-           test -f "$(distdir)/$$file" \
-           || cp -p $$d/$$file "$(distdir)/$$file" \
-           || exit 1; \
-         fi; \
-       done
-       @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
-         if test "$$subdir" = .; then :; else \
-           $(am__make_dryrun) \
-             || test -d "$(distdir)/$$subdir" \
-             || $(MKDIR_P) "$(distdir)/$$subdir" \
-             || exit 1; \
-           dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
-           $(am__relativize); \
-           new_distdir=$$reldir; \
-           dir1=$$subdir; dir2="$(top_distdir)"; \
-           $(am__relativize); \
-           new_top_distdir=$$reldir; \
-           echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
-           echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
-           ($(am__cd) $$subdir && \
-             $(MAKE) $(AM_MAKEFLAGS) \
-               top_distdir="$$new_top_distdir" \
-               distdir="$$new_distdir" \
-               am__remove_distdir=: \
-               am__skip_length_check=: \
-               am__skip_mode_fix=: \
-               distdir) \
-             || exit 1; \
-         fi; \
-       done
-check-am: all-am
-check: $(BUILT_SOURCES)
-       $(MAKE) $(AM_MAKEFLAGS) check-recursive
-all-am: Makefile $(LIBRARIES) $(LTLIBRARIES) $(HEADERS) all-local
-installdirs: installdirs-recursive
-installdirs-am:
-install: $(BUILT_SOURCES)
-       $(MAKE) $(AM_MAKEFLAGS) install-recursive
-install-exec: install-exec-recursive
-install-data: install-data-recursive
-uninstall: uninstall-recursive
-
-install-am: all-am
-       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-recursive
-install-strip:
-       if test -z '$(STRIP)'; then \
-         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-             install; \
-       else \
-         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-       fi
-mostlyclean-generic:
-       -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
-
-clean-generic:
-       -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
-
-distclean-generic:
-       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-       -rm -f uniwidth/$(DEPDIR)/$(am__dirstamp)
-       -rm -f uniwidth/$(am__dirstamp)
-       -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
-
-maintainer-clean-generic:
-       @echo "This command is intended for maintainers to use"
-       @echo "it deletes files that may require special tools to rebuild."
-       -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
-       -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
-clean: clean-recursive
-
-clean-am: clean-generic clean-noinstLIBRARIES clean-noinstLTLIBRARIES \
-       mostlyclean-am
-
-distclean: distclean-recursive
-       -rm -rf ./$(DEPDIR) uniwidth/$(DEPDIR)
-       -rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
-       distclean-tags
-
-dvi: dvi-recursive
-
-dvi-am:
-
-html: html-recursive
-
-html-am:
-
-info: info-recursive
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-recursive
-
-install-dvi-am:
-
-install-exec-am: install-exec-local
-
-install-html: install-html-recursive
-
-install-html-am:
-
-install-info: install-info-recursive
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-recursive
-
-install-pdf-am:
-
-install-ps: install-ps-recursive
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-recursive
-       -rm -rf ./$(DEPDIR) uniwidth/$(DEPDIR)
-       -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-recursive
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
-       mostlyclean-local
-
-pdf: pdf-recursive
-
-pdf-am:
-
-ps: ps-recursive
-
-ps-am:
-
-uninstall-am: uninstall-local
-
-.MAKE: $(am__recursive_targets) all check install install-am \
-       install-strip
-
-.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am all-local \
-       check check-am clean clean-generic clean-noinstLIBRARIES \
-       clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \
-       distclean-compile distclean-generic distclean-tags distdir dvi \
-       dvi-am html html-am info info-am install install-am \
-       install-data install-data-am install-dvi install-dvi-am \
-       install-exec install-exec-am install-exec-local install-html \
-       install-html-am install-info install-info-am install-man \
-       install-pdf install-pdf-am install-ps install-ps-am \
-       install-strip installcheck installcheck-am installdirs \
-       installdirs-am maintainer-clean maintainer-clean-generic \
-       mostlyclean mostlyclean-compile mostlyclean-generic \
-       mostlyclean-local pdf pdf-am ps ps-am tags tags-am uninstall \
-       uninstall-am uninstall-local
-
-
-# Listed in the same order as the GNU makefile conventions, and
-# provided by autoconf 2.59c+.
-# The Automake-defined pkg* macros are appended, in the order
-# listed in the Automake 1.10a+ documentation.
-configmake.h: Makefile
-       $(AM_V_GEN)rm -f $@-t && \
-       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
-         echo '#define PREFIX "$(prefix)"'; \
-         echo '#define EXEC_PREFIX "$(exec_prefix)"'; \
-         echo '#define BINDIR "$(bindir)"'; \
-         echo '#define SBINDIR "$(sbindir)"'; \
-         echo '#define LIBEXECDIR "$(libexecdir)"'; \
-         echo '#define DATAROOTDIR "$(datarootdir)"'; \
-         echo '#define DATADIR "$(datadir)"'; \
-         echo '#define SYSCONFDIR "$(sysconfdir)"'; \
-         echo '#define SHAREDSTATEDIR "$(sharedstatedir)"'; \
-         echo '#define LOCALSTATEDIR "$(localstatedir)"'; \
-         echo '#define INCLUDEDIR "$(includedir)"'; \
-         echo '#define OLDINCLUDEDIR "$(oldincludedir)"'; \
-         echo '#define DOCDIR "$(docdir)"'; \
-         echo '#define INFODIR "$(infodir)"'; \
-         echo '#define HTMLDIR "$(htmldir)"'; \
-         echo '#define DVIDIR "$(dvidir)"'; \
-         echo '#define PDFDIR "$(pdfdir)"'; \
-         echo '#define PSDIR "$(psdir)"'; \
-         echo '#define LIBDIR "$(libdir)"'; \
-         echo '#define LISPDIR "$(lispdir)"'; \
-         echo '#define LOCALEDIR "$(localedir)"'; \
-         echo '#define MANDIR "$(mandir)"'; \
-         echo '#define MANEXT "$(manext)"'; \
-         echo '#define PKGDATADIR "$(pkgdatadir)"'; \
-         echo '#define PKGINCLUDEDIR "$(pkgincludedir)"'; \
-         echo '#define PKGLIBDIR "$(pkglibdir)"'; \
-         echo '#define PKGLIBEXECDIR "$(pkglibexecdir)"'; \
-       } | sed '/""/d' > $@-t && \
-       mv -f $@-t $@
-
-# We need the following in order to install a simple file in $(libdir)
-# which is shared with other installed packages. We use a list of referencing
-# packages so that "make uninstall" will remove the file if and only if it
-# is not used by another installed package.
-# On systems with glibc-2.1 or newer, the file is redundant, therefore we
-# avoid installing it.
-
-all-local: charset.alias ref-add.sed ref-del.sed
-install-exec-local: install-exec-localcharset
-install-exec-localcharset: all-local
-       if test $(GLIBC21) = no; then \
-         case '$(host_os)' in \
-           darwin[56]*) \
-             need_charset_alias=true ;; \
-           darwin* | cygwin* | mingw* | pw32* | cegcc*) \
-             need_charset_alias=false ;; \
-           *) \
-             need_charset_alias=true ;; \
-         esac ; \
-       else \
-         need_charset_alias=false ; \
-       fi ; \
-       if $$need_charset_alias; then \
-         $(mkinstalldirs) $(DESTDIR)$(libdir) ; \
-       fi ; \
-       if test -f $(charset_alias); then \
-         sed -f ref-add.sed $(charset_alias) > $(charset_tmp) ; \
-         $(INSTALL_DATA) $(charset_tmp) $(charset_alias) ; \
-         rm -f $(charset_tmp) ; \
-       else \
-         if $$need_charset_alias; then \
-           sed -f ref-add.sed charset.alias > $(charset_tmp) ; \
-           $(INSTALL_DATA) $(charset_tmp) $(charset_alias) ; \
-           rm -f $(charset_tmp) ; \
-         fi ; \
-       fi
-
-uninstall-local: uninstall-localcharset
-uninstall-localcharset: all-local
-       if test -f $(charset_alias); then \
-         sed -f ref-del.sed $(charset_alias) > $(charset_tmp); \
-         if grep '^# Packages using this file: $$' $(charset_tmp) \
-             > /dev/null; then \
-           rm -f $(charset_alias); \
-         else \
-           $(INSTALL_DATA) $(charset_tmp) $(charset_alias); \
-         fi; \
-         rm -f $(charset_tmp); \
-       fi
-
-charset.alias: config.charset
-       $(AM_V_GEN)rm -f t-$@ $@ && \
-       $(SHELL) $(srcdir)/config.charset '$(host)' > t-$@ && \
-       mv t-$@ $@
-.sin.sed:
-       $(AM_V_GEN)rm -f t-$@ $@ && \
-       sed -e '/^#/d' -e 's/@''PACKAGE''@/$(PACKAGE)/g' $< > t-$@ && \
-       mv t-$@ $@
-# The arg-nonnull.h that gets inserted into generated .h files is the same as
-# build-aux/snippet/arg-nonnull.h, except that it has the copyright header cut
-# off.
-arg-nonnull.h: $(top_srcdir)/build-aux/snippet/arg-nonnull.h
-       $(AM_V_GEN)rm -f $@-t $@ && \
-       sed -n -e '/GL_ARG_NONNULL/,$$p' \
-         < $(top_srcdir)/build-aux/snippet/arg-nonnull.h \
-         > $@-t && \
-       mv $@-t $@
-# The c++defs.h that gets inserted into generated .h files is the same as
-# build-aux/snippet/c++defs.h, except that it has the copyright header cut off.
-c++defs.h: $(top_srcdir)/build-aux/snippet/c++defs.h
-       $(AM_V_GEN)rm -f $@-t $@ && \
-       sed -n -e '/_GL_CXXDEFS/,$$p' \
-         < $(top_srcdir)/build-aux/snippet/c++defs.h \
-         > $@-t && \
-       mv $@-t $@
-# The warn-on-use.h that gets inserted into generated .h files is the same as
-# build-aux/snippet/warn-on-use.h, except that it has the copyright header cut
-# off.
-warn-on-use.h: $(top_srcdir)/build-aux/snippet/warn-on-use.h
-       $(AM_V_GEN)rm -f $@-t $@ && \
-       sed -n -e '/^.ifndef/,$$p' \
-         < $(top_srcdir)/build-aux/snippet/warn-on-use.h \
-         > $@-t && \
-       mv $@-t $@
-
-# We need the following in order to create <stddef.h> when the system
-# doesn't have one that works with the given compiler.
-@GL_GENERATE_STDDEF_H_TRUE@stddef.h: stddef.in.h $(top_builddir)/config.status
-@GL_GENERATE_STDDEF_H_TRUE@    $(AM_V_GEN)rm -f $@-t $@ && \
-@GL_GENERATE_STDDEF_H_TRUE@    { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
-@GL_GENERATE_STDDEF_H_TRUE@      sed -e 's|@''GUARD_PREFIX''@|GL|g' \
-@GL_GENERATE_STDDEF_H_TRUE@          -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
-@GL_GENERATE_STDDEF_H_TRUE@          -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
-@GL_GENERATE_STDDEF_H_TRUE@          -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
-@GL_GENERATE_STDDEF_H_TRUE@          -e 's|@''NEXT_STDDEF_H''@|$(NEXT_STDDEF_H)|g' \
-@GL_GENERATE_STDDEF_H_TRUE@          -e 's|@''HAVE_WCHAR_T''@|$(HAVE_WCHAR_T)|g' \
-@GL_GENERATE_STDDEF_H_TRUE@          -e 's|@''REPLACE_NULL''@|$(REPLACE_NULL)|g' \
-@GL_GENERATE_STDDEF_H_TRUE@          < $(srcdir)/stddef.in.h; \
-@GL_GENERATE_STDDEF_H_TRUE@    } > $@-t && \
-@GL_GENERATE_STDDEF_H_TRUE@    mv $@-t $@
-@GL_GENERATE_STDDEF_H_FALSE@stddef.h: $(top_builddir)/config.status
-@GL_GENERATE_STDDEF_H_FALSE@   rm -f $@
-
-# We need the following in order to create <stdint.h> when the system
-# doesn't have one that works with the given compiler.
-@GL_GENERATE_STDINT_H_TRUE@stdint.h: stdint.in.h $(top_builddir)/config.status
-@GL_GENERATE_STDINT_H_TRUE@    $(AM_V_GEN)rm -f $@-t $@ && \
-@GL_GENERATE_STDINT_H_TRUE@    { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
-@GL_GENERATE_STDINT_H_TRUE@      sed -e 's|@''GUARD_PREFIX''@|GL|g' \
-@GL_GENERATE_STDINT_H_TRUE@          -e 's/@''HAVE_STDINT_H''@/$(HAVE_STDINT_H)/g' \
-@GL_GENERATE_STDINT_H_TRUE@          -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
-@GL_GENERATE_STDINT_H_TRUE@          -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
-@GL_GENERATE_STDINT_H_TRUE@          -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
-@GL_GENERATE_STDINT_H_TRUE@          -e 's|@''NEXT_STDINT_H''@|$(NEXT_STDINT_H)|g' \
-@GL_GENERATE_STDINT_H_TRUE@          -e 's/@''HAVE_SYS_TYPES_H''@/$(HAVE_SYS_TYPES_H)/g' \
-@GL_GENERATE_STDINT_H_TRUE@          -e 's/@''HAVE_INTTYPES_H''@/$(HAVE_INTTYPES_H)/g' \
-@GL_GENERATE_STDINT_H_TRUE@          -e 's/@''HAVE_SYS_INTTYPES_H''@/$(HAVE_SYS_INTTYPES_H)/g' \
-@GL_GENERATE_STDINT_H_TRUE@          -e 's/@''HAVE_SYS_BITYPES_H''@/$(HAVE_SYS_BITYPES_H)/g' \
-@GL_GENERATE_STDINT_H_TRUE@          -e 's/@''HAVE_WCHAR_H''@/$(HAVE_WCHAR_H)/g' \
-@GL_GENERATE_STDINT_H_TRUE@          -e 's/@''HAVE_LONG_LONG_INT''@/$(HAVE_LONG_LONG_INT)/g' \
-@GL_GENERATE_STDINT_H_TRUE@          -e 's/@''HAVE_UNSIGNED_LONG_LONG_INT''@/$(HAVE_UNSIGNED_LONG_LONG_INT)/g' \
-@GL_GENERATE_STDINT_H_TRUE@          -e 's/@''APPLE_UNIVERSAL_BUILD''@/$(APPLE_UNIVERSAL_BUILD)/g' \
-@GL_GENERATE_STDINT_H_TRUE@          -e 's/@''BITSIZEOF_PTRDIFF_T''@/$(BITSIZEOF_PTRDIFF_T)/g' \
-@GL_GENERATE_STDINT_H_TRUE@          -e 's/@''PTRDIFF_T_SUFFIX''@/$(PTRDIFF_T_SUFFIX)/g' \
-@GL_GENERATE_STDINT_H_TRUE@          -e 's/@''BITSIZEOF_SIG_ATOMIC_T''@/$(BITSIZEOF_SIG_ATOMIC_T)/g' \
-@GL_GENERATE_STDINT_H_TRUE@          -e 's/@''HAVE_SIGNED_SIG_ATOMIC_T''@/$(HAVE_SIGNED_SIG_ATOMIC_T)/g' \
-@GL_GENERATE_STDINT_H_TRUE@          -e 's/@''SIG_ATOMIC_T_SUFFIX''@/$(SIG_ATOMIC_T_SUFFIX)/g' \
-@GL_GENERATE_STDINT_H_TRUE@          -e 's/@''BITSIZEOF_SIZE_T''@/$(BITSIZEOF_SIZE_T)/g' \
-@GL_GENERATE_STDINT_H_TRUE@          -e 's/@''SIZE_T_SUFFIX''@/$(SIZE_T_SUFFIX)/g' \
-@GL_GENERATE_STDINT_H_TRUE@          -e 's/@''BITSIZEOF_WCHAR_T''@/$(BITSIZEOF_WCHAR_T)/g' \
-@GL_GENERATE_STDINT_H_TRUE@          -e 's/@''HAVE_SIGNED_WCHAR_T''@/$(HAVE_SIGNED_WCHAR_T)/g' \
-@GL_GENERATE_STDINT_H_TRUE@          -e 's/@''WCHAR_T_SUFFIX''@/$(WCHAR_T_SUFFIX)/g' \
-@GL_GENERATE_STDINT_H_TRUE@          -e 's/@''BITSIZEOF_WINT_T''@/$(BITSIZEOF_WINT_T)/g' \
-@GL_GENERATE_STDINT_H_TRUE@          -e 's/@''HAVE_SIGNED_WINT_T''@/$(HAVE_SIGNED_WINT_T)/g' \
-@GL_GENERATE_STDINT_H_TRUE@          -e 's/@''WINT_T_SUFFIX''@/$(WINT_T_SUFFIX)/g' \
-@GL_GENERATE_STDINT_H_TRUE@          < $(srcdir)/stdint.in.h; \
-@GL_GENERATE_STDINT_H_TRUE@    } > $@-t && \
-@GL_GENERATE_STDINT_H_TRUE@    mv $@-t $@
-@GL_GENERATE_STDINT_H_FALSE@stdint.h: $(top_builddir)/config.status
-@GL_GENERATE_STDINT_H_FALSE@   rm -f $@
-
-unitypes.h: unitypes.in.h
-       $(AM_V_GEN)rm -f $@-t $@ && \
-       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
-         cat $(srcdir)/unitypes.in.h; \
-       } > $@-t && \
-       mv -f $@-t $@
-
-uniwidth.h: uniwidth.in.h
-       $(AM_V_GEN)rm -f $@-t $@ && \
-       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
-         cat $(srcdir)/uniwidth.in.h; \
-       } > $@-t && \
-       mv -f $@-t $@
-
-# We need the following in order to create <wchar.h> when the system
-# version does not work standalone.
-wchar.h: wchar.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
-       $(AM_V_GEN)rm -f $@-t $@ && \
-       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
-         sed -e 's|@''GUARD_PREFIX''@|GL|g' \
-             -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
-             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
-             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
-             -e 's|@''HAVE_FEATURES_H''@|$(HAVE_FEATURES_H)|g' \
-             -e 's|@''NEXT_WCHAR_H''@|$(NEXT_WCHAR_H)|g' \
-             -e 's|@''HAVE_WCHAR_H''@|$(HAVE_WCHAR_H)|g' \
-             -e 's/@''GNULIB_BTOWC''@/$(GNULIB_BTOWC)/g' \
-             -e 's/@''GNULIB_WCTOB''@/$(GNULIB_WCTOB)/g' \
-             -e 's/@''GNULIB_MBSINIT''@/$(GNULIB_MBSINIT)/g' \
-             -e 's/@''GNULIB_MBRTOWC''@/$(GNULIB_MBRTOWC)/g' \
-             -e 's/@''GNULIB_MBRLEN''@/$(GNULIB_MBRLEN)/g' \
-             -e 's/@''GNULIB_MBSRTOWCS''@/$(GNULIB_MBSRTOWCS)/g' \
-             -e 's/@''GNULIB_MBSNRTOWCS''@/$(GNULIB_MBSNRTOWCS)/g' \
-             -e 's/@''GNULIB_WCRTOMB''@/$(GNULIB_WCRTOMB)/g' \
-             -e 's/@''GNULIB_WCSRTOMBS''@/$(GNULIB_WCSRTOMBS)/g' \
-             -e 's/@''GNULIB_WCSNRTOMBS''@/$(GNULIB_WCSNRTOMBS)/g' \
-             -e 's/@''GNULIB_WCWIDTH''@/$(GNULIB_WCWIDTH)/g' \
-             -e 's/@''GNULIB_WMEMCHR''@/$(GNULIB_WMEMCHR)/g' \
-             -e 's/@''GNULIB_WMEMCMP''@/$(GNULIB_WMEMCMP)/g' \
-             -e 's/@''GNULIB_WMEMCPY''@/$(GNULIB_WMEMCPY)/g' \
-             -e 's/@''GNULIB_WMEMMOVE''@/$(GNULIB_WMEMMOVE)/g' \
-             -e 's/@''GNULIB_WMEMSET''@/$(GNULIB_WMEMSET)/g' \
-             -e 's/@''GNULIB_WCSLEN''@/$(GNULIB_WCSLEN)/g' \
-             -e 's/@''GNULIB_WCSNLEN''@/$(GNULIB_WCSNLEN)/g' \
-             -e 's/@''GNULIB_WCSCPY''@/$(GNULIB_WCSCPY)/g' \
-             -e 's/@''GNULIB_WCPCPY''@/$(GNULIB_WCPCPY)/g' \
-             -e 's/@''GNULIB_WCSNCPY''@/$(GNULIB_WCSNCPY)/g' \
-             -e 's/@''GNULIB_WCPNCPY''@/$(GNULIB_WCPNCPY)/g' \
-             -e 's/@''GNULIB_WCSCAT''@/$(GNULIB_WCSCAT)/g' \
-             -e 's/@''GNULIB_WCSNCAT''@/$(GNULIB_WCSNCAT)/g' \
-             -e 's/@''GNULIB_WCSCMP''@/$(GNULIB_WCSCMP)/g' \
-             -e 's/@''GNULIB_WCSNCMP''@/$(GNULIB_WCSNCMP)/g' \
-             -e 's/@''GNULIB_WCSCASECMP''@/$(GNULIB_WCSCASECMP)/g' \
-             -e 's/@''GNULIB_WCSNCASECMP''@/$(GNULIB_WCSNCASECMP)/g' \
-             -e 's/@''GNULIB_WCSCOLL''@/$(GNULIB_WCSCOLL)/g' \
-             -e 's/@''GNULIB_WCSXFRM''@/$(GNULIB_WCSXFRM)/g' \
-             -e 's/@''GNULIB_WCSDUP''@/$(GNULIB_WCSDUP)/g' \
-             -e 's/@''GNULIB_WCSCHR''@/$(GNULIB_WCSCHR)/g' \
-             -e 's/@''GNULIB_WCSRCHR''@/$(GNULIB_WCSRCHR)/g' \
-             -e 's/@''GNULIB_WCSCSPN''@/$(GNULIB_WCSCSPN)/g' \
-             -e 's/@''GNULIB_WCSSPN''@/$(GNULIB_WCSSPN)/g' \
-             -e 's/@''GNULIB_WCSPBRK''@/$(GNULIB_WCSPBRK)/g' \
-             -e 's/@''GNULIB_WCSSTR''@/$(GNULIB_WCSSTR)/g' \
-             -e 's/@''GNULIB_WCSTOK''@/$(GNULIB_WCSTOK)/g' \
-             -e 's/@''GNULIB_WCSWIDTH''@/$(GNULIB_WCSWIDTH)/g' \
-             < $(srcdir)/wchar.in.h | \
-         sed -e 's|@''HAVE_WINT_T''@|$(HAVE_WINT_T)|g' \
-             -e 's|@''HAVE_BTOWC''@|$(HAVE_BTOWC)|g' \
-             -e 's|@''HAVE_MBSINIT''@|$(HAVE_MBSINIT)|g' \
-             -e 's|@''HAVE_MBRTOWC''@|$(HAVE_MBRTOWC)|g' \
-             -e 's|@''HAVE_MBRLEN''@|$(HAVE_MBRLEN)|g' \
-             -e 's|@''HAVE_MBSRTOWCS''@|$(HAVE_MBSRTOWCS)|g' \
-             -e 's|@''HAVE_MBSNRTOWCS''@|$(HAVE_MBSNRTOWCS)|g' \
-             -e 's|@''HAVE_WCRTOMB''@|$(HAVE_WCRTOMB)|g' \
-             -e 's|@''HAVE_WCSRTOMBS''@|$(HAVE_WCSRTOMBS)|g' \
-             -e 's|@''HAVE_WCSNRTOMBS''@|$(HAVE_WCSNRTOMBS)|g' \
-             -e 's|@''HAVE_WMEMCHR''@|$(HAVE_WMEMCHR)|g' \
-             -e 's|@''HAVE_WMEMCMP''@|$(HAVE_WMEMCMP)|g' \
-             -e 's|@''HAVE_WMEMCPY''@|$(HAVE_WMEMCPY)|g' \
-             -e 's|@''HAVE_WMEMMOVE''@|$(HAVE_WMEMMOVE)|g' \
-             -e 's|@''HAVE_WMEMSET''@|$(HAVE_WMEMSET)|g' \
-             -e 's|@''HAVE_WCSLEN''@|$(HAVE_WCSLEN)|g' \
-             -e 's|@''HAVE_WCSNLEN''@|$(HAVE_WCSNLEN)|g' \
-             -e 's|@''HAVE_WCSCPY''@|$(HAVE_WCSCPY)|g' \
-             -e 's|@''HAVE_WCPCPY''@|$(HAVE_WCPCPY)|g' \
-             -e 's|@''HAVE_WCSNCPY''@|$(HAVE_WCSNCPY)|g' \
-             -e 's|@''HAVE_WCPNCPY''@|$(HAVE_WCPNCPY)|g' \
-             -e 's|@''HAVE_WCSCAT''@|$(HAVE_WCSCAT)|g' \
-             -e 's|@''HAVE_WCSNCAT''@|$(HAVE_WCSNCAT)|g' \
-             -e 's|@''HAVE_WCSCMP''@|$(HAVE_WCSCMP)|g' \
-             -e 's|@''HAVE_WCSNCMP''@|$(HAVE_WCSNCMP)|g' \
-             -e 's|@''HAVE_WCSCASECMP''@|$(HAVE_WCSCASECMP)|g' \
-             -e 's|@''HAVE_WCSNCASECMP''@|$(HAVE_WCSNCASECMP)|g' \
-             -e 's|@''HAVE_WCSCOLL''@|$(HAVE_WCSCOLL)|g' \
-             -e 's|@''HAVE_WCSXFRM''@|$(HAVE_WCSXFRM)|g' \
-             -e 's|@''HAVE_WCSDUP''@|$(HAVE_WCSDUP)|g' \
-             -e 's|@''HAVE_WCSCHR''@|$(HAVE_WCSCHR)|g' \
-             -e 's|@''HAVE_WCSRCHR''@|$(HAVE_WCSRCHR)|g' \
-             -e 's|@''HAVE_WCSCSPN''@|$(HAVE_WCSCSPN)|g' \
-             -e 's|@''HAVE_WCSSPN''@|$(HAVE_WCSSPN)|g' \
-             -e 's|@''HAVE_WCSPBRK''@|$(HAVE_WCSPBRK)|g' \
-             -e 's|@''HAVE_WCSSTR''@|$(HAVE_WCSSTR)|g' \
-             -e 's|@''HAVE_WCSTOK''@|$(HAVE_WCSTOK)|g' \
-             -e 's|@''HAVE_WCSWIDTH''@|$(HAVE_WCSWIDTH)|g' \
-             -e 's|@''HAVE_DECL_WCTOB''@|$(HAVE_DECL_WCTOB)|g' \
-             -e 's|@''HAVE_DECL_WCWIDTH''@|$(HAVE_DECL_WCWIDTH)|g' \
-         | \
-         sed -e 's|@''REPLACE_MBSTATE_T''@|$(REPLACE_MBSTATE_T)|g' \
-             -e 's|@''REPLACE_BTOWC''@|$(REPLACE_BTOWC)|g' \
-             -e 's|@''REPLACE_WCTOB''@|$(REPLACE_WCTOB)|g' \
-             -e 's|@''REPLACE_MBSINIT''@|$(REPLACE_MBSINIT)|g' \
-             -e 's|@''REPLACE_MBRTOWC''@|$(REPLACE_MBRTOWC)|g' \
-             -e 's|@''REPLACE_MBRLEN''@|$(REPLACE_MBRLEN)|g' \
-             -e 's|@''REPLACE_MBSRTOWCS''@|$(REPLACE_MBSRTOWCS)|g' \
-             -e 's|@''REPLACE_MBSNRTOWCS''@|$(REPLACE_MBSNRTOWCS)|g' \
-             -e 's|@''REPLACE_WCRTOMB''@|$(REPLACE_WCRTOMB)|g' \
-             -e 's|@''REPLACE_WCSRTOMBS''@|$(REPLACE_WCSRTOMBS)|g' \
-             -e 's|@''REPLACE_WCSNRTOMBS''@|$(REPLACE_WCSNRTOMBS)|g' \
-             -e 's|@''REPLACE_WCWIDTH''@|$(REPLACE_WCWIDTH)|g' \
-             -e 's|@''REPLACE_WCSWIDTH''@|$(REPLACE_WCSWIDTH)|g' \
-             -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
-             -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
-             -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \
-       } > $@-t && \
-       mv $@-t $@
-
-# We need the following in order to create <wctype.h> when the system
-# doesn't have one that works with the given compiler.
-wctype.h: wctype.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(WARN_ON_USE_H)
-       $(AM_V_GEN)rm -f $@-t $@ && \
-       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
-         sed -e 's|@''GUARD_PREFIX''@|GL|g' \
-             -e 's/@''HAVE_WCTYPE_H''@/$(HAVE_WCTYPE_H)/g' \
-             -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
-             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
-             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
-             -e 's|@''NEXT_WCTYPE_H''@|$(NEXT_WCTYPE_H)|g' \
-             -e 's/@''GNULIB_ISWBLANK''@/$(GNULIB_ISWBLANK)/g' \
-             -e 's/@''GNULIB_WCTYPE''@/$(GNULIB_WCTYPE)/g' \
-             -e 's/@''GNULIB_ISWCTYPE''@/$(GNULIB_ISWCTYPE)/g' \
-             -e 's/@''GNULIB_WCTRANS''@/$(GNULIB_WCTRANS)/g' \
-             -e 's/@''GNULIB_TOWCTRANS''@/$(GNULIB_TOWCTRANS)/g' \
-             -e 's/@''HAVE_ISWBLANK''@/$(HAVE_ISWBLANK)/g' \
-             -e 's/@''HAVE_ISWCNTRL''@/$(HAVE_ISWCNTRL)/g' \
-             -e 's/@''HAVE_WCTYPE_T''@/$(HAVE_WCTYPE_T)/g' \
-             -e 's/@''HAVE_WCTRANS_T''@/$(HAVE_WCTRANS_T)/g' \
-             -e 's/@''HAVE_WINT_T''@/$(HAVE_WINT_T)/g' \
-             -e 's/@''REPLACE_ISWBLANK''@/$(REPLACE_ISWBLANK)/g' \
-             -e 's/@''REPLACE_ISWCNTRL''@/$(REPLACE_ISWCNTRL)/g' \
-             -e 's/@''REPLACE_TOWLOWER''@/$(REPLACE_TOWLOWER)/g' \
-             -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
-             -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \
-             < $(srcdir)/wctype.in.h; \
-       } > $@-t && \
-       mv $@-t $@
-
-mostlyclean-local: mostlyclean-generic
-       @for dir in '' $(MOSTLYCLEANDIRS); do \
-         if test -n "$$dir" && test -d $$dir; then \
-           echo "rmdir $$dir"; rmdir $$dir; \
-         fi; \
-       done; \
-       :
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/src/libs/gnulib/lib/config.charset b/src/libs/gnulib/lib/config.charset
deleted file mode 100644 (file)
index 4e4c7ed..0000000
+++ /dev/null
@@ -1,684 +0,0 @@
-#! /bin/sh
-# Output a system dependent table of character encoding aliases.
-#
-#   Copyright (C) 2000-2004, 2006-2014 Free Software Foundation, Inc.
-#
-#   This program is free software; you can redistribute it and/or modify
-#   it under the terms of the GNU General Public License as published by
-#   the Free Software Foundation; either version 2, or (at your option)
-#   any later version.
-#
-#   This program is distributed in the hope that it will be useful,
-#   but WITHOUT ANY WARRANTY; without even the implied warranty of
-#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#   GNU General Public License for more details.
-#
-#   You should have received a copy of the GNU General Public License along
-#   with this program; if not, see <http://www.gnu.org/licenses/>.
-#
-# The table consists of lines of the form
-#    ALIAS  CANONICAL
-#
-# ALIAS is the (system dependent) result of "nl_langinfo (CODESET)".
-# ALIAS is compared in a case sensitive way.
-#
-# CANONICAL is the GNU canonical name for this character encoding.
-# It must be an encoding supported by libiconv. Support by GNU libc is
-# also desirable. CANONICAL is case insensitive. Usually an upper case
-# MIME charset name is preferred.
-# The current list of GNU canonical charset names is as follows.
-#
-#       name              MIME?             used by which systems
-#                                    (darwin = Mac OS X, woe32 = native Windows)
-#
-#   ASCII, ANSI_X3.4-1968       glibc solaris freebsd netbsd darwin cygwin
-#   ISO-8859-1              Y   glibc aix hpux irix osf solaris freebsd netbsd openbsd darwin cygwin
-#   ISO-8859-2              Y   glibc aix hpux irix osf solaris freebsd netbsd openbsd darwin cygwin
-#   ISO-8859-3              Y   glibc solaris cygwin
-#   ISO-8859-4              Y   osf solaris freebsd netbsd openbsd darwin
-#   ISO-8859-5              Y   glibc aix hpux irix osf solaris freebsd netbsd openbsd darwin cygwin
-#   ISO-8859-6              Y   glibc aix hpux solaris cygwin
-#   ISO-8859-7              Y   glibc aix hpux irix osf solaris netbsd openbsd darwin cygwin
-#   ISO-8859-8              Y   glibc aix hpux osf solaris cygwin
-#   ISO-8859-9              Y   glibc aix hpux irix osf solaris darwin cygwin
-#   ISO-8859-13                 glibc netbsd openbsd darwin cygwin
-#   ISO-8859-14                 glibc cygwin
-#   ISO-8859-15                 glibc aix osf solaris freebsd netbsd openbsd darwin cygwin
-#   KOI8-R                  Y   glibc solaris freebsd netbsd openbsd darwin
-#   KOI8-U                  Y   glibc freebsd netbsd openbsd darwin cygwin
-#   KOI8-T                      glibc
-#   CP437                       dos
-#   CP775                       dos
-#   CP850                       aix osf dos
-#   CP852                       dos
-#   CP855                       dos
-#   CP856                       aix
-#   CP857                       dos
-#   CP861                       dos
-#   CP862                       dos
-#   CP864                       dos
-#   CP865                       dos
-#   CP866                       freebsd netbsd openbsd darwin dos
-#   CP869                       dos
-#   CP874                       woe32 dos
-#   CP922                       aix
-#   CP932                       aix cygwin woe32 dos
-#   CP943                       aix
-#   CP949                       osf darwin woe32 dos
-#   CP950                       woe32 dos
-#   CP1046                      aix
-#   CP1124                      aix
-#   CP1125                      dos
-#   CP1129                      aix
-#   CP1131                      darwin
-#   CP1250                      woe32
-#   CP1251                      glibc solaris netbsd openbsd darwin cygwin woe32
-#   CP1252                      aix woe32
-#   CP1253                      woe32
-#   CP1254                      woe32
-#   CP1255                      glibc woe32
-#   CP1256                      woe32
-#   CP1257                      woe32
-#   GB2312                  Y   glibc aix hpux irix solaris freebsd netbsd darwin
-#   EUC-JP                  Y   glibc aix hpux irix osf solaris freebsd netbsd darwin
-#   EUC-KR                  Y   glibc aix hpux irix osf solaris freebsd netbsd darwin cygwin
-#   EUC-TW                      glibc aix hpux irix osf solaris netbsd
-#   BIG5                    Y   glibc aix hpux osf solaris freebsd netbsd darwin cygwin
-#   BIG5-HKSCS                  glibc solaris darwin
-#   GBK                         glibc aix osf solaris darwin cygwin woe32 dos
-#   GB18030                     glibc solaris netbsd darwin
-#   SHIFT_JIS               Y   hpux osf solaris freebsd netbsd darwin
-#   JOHAB                       glibc solaris woe32
-#   TIS-620                     glibc aix hpux osf solaris cygwin
-#   VISCII                  Y   glibc
-#   TCVN5712-1                  glibc
-#   ARMSCII-8                   glibc darwin
-#   GEORGIAN-PS                 glibc cygwin
-#   PT154                       glibc
-#   HP-ROMAN8                   hpux
-#   HP-ARABIC8                  hpux
-#   HP-GREEK8                   hpux
-#   HP-HEBREW8                  hpux
-#   HP-TURKISH8                 hpux
-#   HP-KANA8                    hpux
-#   DEC-KANJI                   osf
-#   DEC-HANYU                   osf
-#   UTF-8                   Y   glibc aix hpux osf solaris netbsd darwin cygwin
-#
-# Note: Names which are not marked as being a MIME name should not be used in
-# Internet protocols for information interchange (mail, news, etc.).
-#
-# Note: ASCII and ANSI_X3.4-1968 are synonymous canonical names. Applications
-# must understand both names and treat them as equivalent.
-#
-# The first argument passed to this file is the canonical host specification,
-#    CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
-# or
-#    CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
-
-host="$1"
-os=`echo "$host" | sed -e 's/^[^-]*-[^-]*-\(.*\)$/\1/'`
-echo "# This file contains a table of character encoding aliases,"
-echo "# suitable for operating system '${os}'."
-echo "# It was automatically generated from config.charset."
-# List of references, updated during installation:
-echo "# Packages using this file: "
-case "$os" in
-  linux-gnulibc1*)
-    # Linux libc5 doesn't have nl_langinfo(CODESET); therefore
-    # localcharset.c falls back to using the full locale name
-    # from the environment variables.
-    echo "C ASCII"
-    echo "POSIX ASCII"
-    for l in af af_ZA ca ca_ES da da_DK de de_AT de_BE de_CH de_DE de_LU \
-             en en_AU en_BW en_CA en_DK en_GB en_IE en_NZ en_US en_ZA \
-             en_ZW es es_AR es_BO es_CL es_CO es_DO es_EC es_ES es_GT \
-             es_HN es_MX es_PA es_PE es_PY es_SV es_US es_UY es_VE et \
-             et_EE eu eu_ES fi fi_FI fo fo_FO fr fr_BE fr_CA fr_CH fr_FR \
-             fr_LU ga ga_IE gl gl_ES id id_ID in in_ID is is_IS it it_CH \
-             it_IT kl kl_GL nl nl_BE nl_NL no no_NO pt pt_BR pt_PT sv \
-             sv_FI sv_SE; do
-      echo "$l ISO-8859-1"
-      echo "$l.iso-8859-1 ISO-8859-1"
-      echo "$l.iso-8859-15 ISO-8859-15"
-      echo "$l.iso-8859-15@euro ISO-8859-15"
-      echo "$l@euro ISO-8859-15"
-      echo "$l.cp-437 CP437"
-      echo "$l.cp-850 CP850"
-      echo "$l.cp-1252 CP1252"
-      echo "$l.cp-1252@euro CP1252"
-      #echo "$l.atari-st ATARI-ST" # not a commonly used encoding
-      echo "$l.utf-8 UTF-8"
-      echo "$l.utf-8@euro UTF-8"
-    done
-    for l in cs cs_CZ hr hr_HR hu hu_HU pl pl_PL ro ro_RO sk sk_SK sl \
-             sl_SI sr sr_CS sr_YU; do
-      echo "$l ISO-8859-2"
-      echo "$l.iso-8859-2 ISO-8859-2"
-      echo "$l.cp-852 CP852"
-      echo "$l.cp-1250 CP1250"
-      echo "$l.utf-8 UTF-8"
-    done
-    for l in mk mk_MK ru ru_RU; do
-      echo "$l ISO-8859-5"
-      echo "$l.iso-8859-5 ISO-8859-5"
-      echo "$l.koi8-r KOI8-R"
-      echo "$l.cp-866 CP866"
-      echo "$l.cp-1251 CP1251"
-      echo "$l.utf-8 UTF-8"
-    done
-    for l in ar ar_SA; do
-      echo "$l ISO-8859-6"
-      echo "$l.iso-8859-6 ISO-8859-6"
-      echo "$l.cp-864 CP864"
-      #echo "$l.cp-868 CP868" # not a commonly used encoding
-      echo "$l.cp-1256 CP1256"
-      echo "$l.utf-8 UTF-8"
-    done
-    for l in el el_GR gr gr_GR; do
-      echo "$l ISO-8859-7"
-      echo "$l.iso-8859-7 ISO-8859-7"
-      echo "$l.cp-869 CP869"
-      echo "$l.cp-1253 CP1253"
-      echo "$l.cp-1253@euro CP1253"
-      echo "$l.utf-8 UTF-8"
-      echo "$l.utf-8@euro UTF-8"
-    done
-    for l in he he_IL iw iw_IL; do
-      echo "$l ISO-8859-8"
-      echo "$l.iso-8859-8 ISO-8859-8"
-      echo "$l.cp-862 CP862"
-      echo "$l.cp-1255 CP1255"
-      echo "$l.utf-8 UTF-8"
-    done
-    for l in tr tr_TR; do
-      echo "$l ISO-8859-9"
-      echo "$l.iso-8859-9 ISO-8859-9"
-      echo "$l.cp-857 CP857"
-      echo "$l.cp-1254 CP1254"
-      echo "$l.utf-8 UTF-8"
-    done
-    for l in lt lt_LT lv lv_LV; do
-      #echo "$l BALTIC" # not a commonly used encoding, wrong encoding name
-      echo "$l ISO-8859-13"
-    done
-    for l in ru_UA uk uk_UA; do
-      echo "$l KOI8-U"
-    done
-    for l in zh zh_CN; do
-      #echo "$l GB_2312-80" # not a commonly used encoding, wrong encoding name
-      echo "$l GB2312"
-    done
-    for l in ja ja_JP ja_JP.EUC; do
-      echo "$l EUC-JP"
-    done
-    for l in ko ko_KR; do
-      echo "$l EUC-KR"
-    done
-    for l in th th_TH; do
-      echo "$l TIS-620"
-    done
-    for l in fa fa_IR; do
-      #echo "$l ISIRI-3342" # a broken encoding
-      echo "$l.utf-8 UTF-8"
-    done
-    ;;
-  linux* | *-gnu*)
-    # With glibc-2.1 or newer, we don't need any canonicalization,
-    # because glibc has iconv and both glibc and libiconv support all
-    # GNU canonical names directly. Therefore, the Makefile does not
-    # need to install the alias file at all.
-    # The following applies only to glibc-2.0.x and older libcs.
-    echo "ISO_646.IRV:1983 ASCII"
-    ;;
-  aix*)
-    echo "ISO8859-1 ISO-8859-1"
-    echo "ISO8859-2 ISO-8859-2"
-    echo "ISO8859-5 ISO-8859-5"
-    echo "ISO8859-6 ISO-8859-6"
-    echo "ISO8859-7 ISO-8859-7"
-    echo "ISO8859-8 ISO-8859-8"
-    echo "ISO8859-9 ISO-8859-9"
-    echo "ISO8859-15 ISO-8859-15"
-    echo "IBM-850 CP850"
-    echo "IBM-856 CP856"
-    echo "IBM-921 ISO-8859-13"
-    echo "IBM-922 CP922"
-    echo "IBM-932 CP932"
-    echo "IBM-943 CP943"
-    echo "IBM-1046 CP1046"
-    echo "IBM-1124 CP1124"
-    echo "IBM-1129 CP1129"
-    echo "IBM-1252 CP1252"
-    echo "IBM-eucCN GB2312"
-    echo "IBM-eucJP EUC-JP"
-    echo "IBM-eucKR EUC-KR"
-    echo "IBM-eucTW EUC-TW"
-    echo "big5 BIG5"
-    echo "GBK GBK"
-    echo "TIS-620 TIS-620"
-    echo "UTF-8 UTF-8"
-    ;;
-  hpux*)
-    echo "iso88591 ISO-8859-1"
-    echo "iso88592 ISO-8859-2"
-    echo "iso88595 ISO-8859-5"
-    echo "iso88596 ISO-8859-6"
-    echo "iso88597 ISO-8859-7"
-    echo "iso88598 ISO-8859-8"
-    echo "iso88599 ISO-8859-9"
-    echo "iso885915 ISO-8859-15"
-    echo "roman8 HP-ROMAN8"
-    echo "arabic8 HP-ARABIC8"
-    echo "greek8 HP-GREEK8"
-    echo "hebrew8 HP-HEBREW8"
-    echo "turkish8 HP-TURKISH8"
-    echo "kana8 HP-KANA8"
-    echo "tis620 TIS-620"
-    echo "big5 BIG5"
-    echo "eucJP EUC-JP"
-    echo "eucKR EUC-KR"
-    echo "eucTW EUC-TW"
-    echo "hp15CN GB2312"
-    #echo "ccdc ?" # what is this?
-    echo "SJIS SHIFT_JIS"
-    echo "utf8 UTF-8"
-    ;;
-  irix*)
-    echo "ISO8859-1 ISO-8859-1"
-    echo "ISO8859-2 ISO-8859-2"
-    echo "ISO8859-5 ISO-8859-5"
-    echo "ISO8859-7 ISO-8859-7"
-    echo "ISO8859-9 ISO-8859-9"
-    echo "eucCN GB2312"
-    echo "eucJP EUC-JP"
-    echo "eucKR EUC-KR"
-    echo "eucTW EUC-TW"
-    ;;
-  osf*)
-    echo "ISO8859-1 ISO-8859-1"
-    echo "ISO8859-2 ISO-8859-2"
-    echo "ISO8859-4 ISO-8859-4"
-    echo "ISO8859-5 ISO-8859-5"
-    echo "ISO8859-7 ISO-8859-7"
-    echo "ISO8859-8 ISO-8859-8"
-    echo "ISO8859-9 ISO-8859-9"
-    echo "ISO8859-15 ISO-8859-15"
-    echo "cp850 CP850"
-    echo "big5 BIG5"
-    echo "dechanyu DEC-HANYU"
-    echo "dechanzi GB2312"
-    echo "deckanji DEC-KANJI"
-    echo "deckorean EUC-KR"
-    echo "eucJP EUC-JP"
-    echo "eucKR EUC-KR"
-    echo "eucTW EUC-TW"
-    echo "GBK GBK"
-    echo "KSC5601 CP949"
-    echo "sdeckanji EUC-JP"
-    echo "SJIS SHIFT_JIS"
-    echo "TACTIS TIS-620"
-    echo "UTF-8 UTF-8"
-    ;;
-  solaris*)
-    echo "646 ASCII"
-    echo "ISO8859-1 ISO-8859-1"
-    echo "ISO8859-2 ISO-8859-2"
-    echo "ISO8859-3 ISO-8859-3"
-    echo "ISO8859-4 ISO-8859-4"
-    echo "ISO8859-5 ISO-8859-5"
-    echo "ISO8859-6 ISO-8859-6"
-    echo "ISO8859-7 ISO-8859-7"
-    echo "ISO8859-8 ISO-8859-8"
-    echo "ISO8859-9 ISO-8859-9"
-    echo "ISO8859-15 ISO-8859-15"
-    echo "koi8-r KOI8-R"
-    echo "ansi-1251 CP1251"
-    echo "BIG5 BIG5"
-    echo "Big5-HKSCS BIG5-HKSCS"
-    echo "gb2312 GB2312"
-    echo "GBK GBK"
-    echo "GB18030 GB18030"
-    echo "cns11643 EUC-TW"
-    echo "5601 EUC-KR"
-    echo "ko_KR.johap92 JOHAB"
-    echo "eucJP EUC-JP"
-    echo "PCK SHIFT_JIS"
-    echo "TIS620.2533 TIS-620"
-    #echo "sun_eu_greek ?" # what is this?
-    echo "UTF-8 UTF-8"
-    ;;
-  freebsd* | os2*)
-    # FreeBSD 4.2 doesn't have nl_langinfo(CODESET); therefore
-    # localcharset.c falls back to using the full locale name
-    # from the environment variables.
-    # Likewise for OS/2. OS/2 has XFree86 just like FreeBSD. Just
-    # reuse FreeBSD's locale data for OS/2.
-    echo "C ASCII"
-    echo "US-ASCII ASCII"
-    for l in la_LN lt_LN; do
-      echo "$l.ASCII ASCII"
-    done
-    for l in da_DK de_AT de_CH de_DE en_AU en_CA en_GB en_US es_ES \
-             fi_FI fr_BE fr_CA fr_CH fr_FR is_IS it_CH it_IT la_LN \
-             lt_LN nl_BE nl_NL no_NO pt_PT sv_SE; do
-      echo "$l.ISO_8859-1 ISO-8859-1"
-      echo "$l.DIS_8859-15 ISO-8859-15"
-    done
-    for l in cs_CZ hr_HR hu_HU la_LN lt_LN pl_PL sl_SI; do
-      echo "$l.ISO_8859-2 ISO-8859-2"
-    done
-    for l in la_LN lt_LT; do
-      echo "$l.ISO_8859-4 ISO-8859-4"
-    done
-    for l in ru_RU ru_SU; do
-      echo "$l.KOI8-R KOI8-R"
-      echo "$l.ISO_8859-5 ISO-8859-5"
-      echo "$l.CP866 CP866"
-    done
-    echo "uk_UA.KOI8-U KOI8-U"
-    echo "zh_TW.BIG5 BIG5"
-    echo "zh_TW.Big5 BIG5"
-    echo "zh_CN.EUC GB2312"
-    echo "ja_JP.EUC EUC-JP"
-    echo "ja_JP.SJIS SHIFT_JIS"
-    echo "ja_JP.Shift_JIS SHIFT_JIS"
-    echo "ko_KR.EUC EUC-KR"
-    ;;
-  netbsd*)
-    echo "646 ASCII"
-    echo "ISO8859-1 ISO-8859-1"
-    echo "ISO8859-2 ISO-8859-2"
-    echo "ISO8859-4 ISO-8859-4"
-    echo "ISO8859-5 ISO-8859-5"
-    echo "ISO8859-7 ISO-8859-7"
-    echo "ISO8859-13 ISO-8859-13"
-    echo "ISO8859-15 ISO-8859-15"
-    echo "eucCN GB2312"
-    echo "eucJP EUC-JP"
-    echo "eucKR EUC-KR"
-    echo "eucTW EUC-TW"
-    echo "BIG5 BIG5"
-    echo "SJIS SHIFT_JIS"
-    ;;
-  openbsd*)
-    echo "646 ASCII"
-    echo "ISO8859-1 ISO-8859-1"
-    echo "ISO8859-2 ISO-8859-2"
-    echo "ISO8859-4 ISO-8859-4"
-    echo "ISO8859-5 ISO-8859-5"
-    echo "ISO8859-7 ISO-8859-7"
-    echo "ISO8859-13 ISO-8859-13"
-    echo "ISO8859-15 ISO-8859-15"
-    ;;
-  darwin[56]*)
-    # Darwin 6.8 doesn't have nl_langinfo(CODESET); therefore
-    # localcharset.c falls back to using the full locale name
-    # from the environment variables.
-    echo "C ASCII"
-    for l in en_AU en_CA en_GB en_US la_LN; do
-      echo "$l.US-ASCII ASCII"
-    done
-    for l in da_DK de_AT de_CH de_DE en_AU en_CA en_GB en_US es_ES \
-             fi_FI fr_BE fr_CA fr_CH fr_FR is_IS it_CH it_IT nl_BE \
-             nl_NL no_NO pt_PT sv_SE; do
-      echo "$l ISO-8859-1"
-      echo "$l.ISO8859-1 ISO-8859-1"
-      echo "$l.ISO8859-15 ISO-8859-15"
-    done
-    for l in la_LN; do
-      echo "$l.ISO8859-1 ISO-8859-1"
-      echo "$l.ISO8859-15 ISO-8859-15"
-    done
-    for l in cs_CZ hr_HR hu_HU la_LN pl_PL sl_SI; do
-      echo "$l.ISO8859-2 ISO-8859-2"
-    done
-    for l in la_LN lt_LT; do
-      echo "$l.ISO8859-4 ISO-8859-4"
-    done
-    for l in ru_RU; do
-      echo "$l.KOI8-R KOI8-R"
-      echo "$l.ISO8859-5 ISO-8859-5"
-      echo "$l.CP866 CP866"
-    done
-    for l in bg_BG; do
-      echo "$l.CP1251 CP1251"
-    done
-    echo "uk_UA.KOI8-U KOI8-U"
-    echo "zh_TW.BIG5 BIG5"
-    echo "zh_TW.Big5 BIG5"
-    echo "zh_CN.EUC GB2312"
-    echo "ja_JP.EUC EUC-JP"
-    echo "ja_JP.SJIS SHIFT_JIS"
-    echo "ko_KR.EUC EUC-KR"
-    ;;
-  darwin*)
-    # Darwin 7.5 has nl_langinfo(CODESET), but sometimes its value is
-    # useless:
-    # - It returns the empty string when LANG is set to a locale of the
-    #   form ll_CC, although ll_CC/LC_CTYPE is a symlink to an UTF-8
-    #   LC_CTYPE file.
-    # - The environment variables LANG, LC_CTYPE, LC_ALL are not set by
-    #   the system; nl_langinfo(CODESET) returns "US-ASCII" in this case.
-    # - The documentation says:
-    #     "... all code that calls BSD system routines should ensure
-    #      that the const *char parameters of these routines are in UTF-8
-    #      encoding. All BSD system functions expect their string
-    #      parameters to be in UTF-8 encoding and nothing else."
-    #   It also says
-    #     "An additional caveat is that string parameters for files,
-    #      paths, and other file-system entities must be in canonical
-    #      UTF-8. In a canonical UTF-8 Unicode string, all decomposable
-    #      characters are decomposed ..."
-    #   but this is not true: You can pass non-decomposed UTF-8 strings
-    #   to file system functions, and it is the OS which will convert
-    #   them to decomposed UTF-8 before accessing the file system.
-    # - The Apple Terminal application displays UTF-8 by default.
-    # - However, other applications are free to use different encodings:
-    #   - xterm uses ISO-8859-1 by default.
-    #   - TextEdit uses MacRoman by default.
-    # We prefer UTF-8 over decomposed UTF-8-MAC because one should
-    # minimize the use of decomposed Unicode. Unfortunately, through the
-    # Darwin file system, decomposed UTF-8 strings are leaked into user
-    # space nevertheless.
-    # Then there are also the locales with encodings other than US-ASCII
-    # and UTF-8. These locales can be occasionally useful to users (e.g.
-    # when grepping through ISO-8859-1 encoded text files), when all their
-    # file names are in US-ASCII.
-    echo "ISO8859-1 ISO-8859-1"
-    echo "ISO8859-2 ISO-8859-2"
-    echo "ISO8859-4 ISO-8859-4"
-    echo "ISO8859-5 ISO-8859-5"
-    echo "ISO8859-7 ISO-8859-7"
-    echo "ISO8859-9 ISO-8859-9"
-    echo "ISO8859-13 ISO-8859-13"
-    echo "ISO8859-15 ISO-8859-15"
-    echo "KOI8-R KOI8-R"
-    echo "KOI8-U KOI8-U"
-    echo "CP866 CP866"
-    echo "CP949 CP949"
-    echo "CP1131 CP1131"
-    echo "CP1251 CP1251"
-    echo "eucCN GB2312"
-    echo "GB2312 GB2312"
-    echo "eucJP EUC-JP"
-    echo "eucKR EUC-KR"
-    echo "Big5 BIG5"
-    echo "Big5HKSCS BIG5-HKSCS"
-    echo "GBK GBK"
-    echo "GB18030 GB18030"
-    echo "SJIS SHIFT_JIS"
-    echo "ARMSCII-8 ARMSCII-8"
-    echo "PT154 PT154"
-    #echo "ISCII-DEV ?"
-    echo "* UTF-8"
-    ;;
-  beos* | haiku*)
-    # BeOS and Haiku have a single locale, and it has UTF-8 encoding.
-    echo "* UTF-8"
-    ;;
-  msdosdjgpp*)
-    # DJGPP 2.03 doesn't have nl_langinfo(CODESET); therefore
-    # localcharset.c falls back to using the full locale name
-    # from the environment variables.
-    echo "#"
-    echo "# The encodings given here may not all be correct."
-    echo "# If you find that the encoding given for your language and"
-    echo "# country is not the one your DOS machine actually uses, just"
-    echo "# correct it in this file, and send a mail to"
-    echo "# Juan Manuel Guerrero <juan.guerrero@gmx.de>"
-    echo "# and Bruno Haible <bruno@clisp.org>."
-    echo "#"
-    echo "C ASCII"
-    # ISO-8859-1 languages
-    echo "ca CP850"
-    echo "ca_ES CP850"
-    echo "da CP865"    # not CP850 ??
-    echo "da_DK CP865" # not CP850 ??
-    echo "de CP850"
-    echo "de_AT CP850"
-    echo "de_CH CP850"
-    echo "de_DE CP850"
-    echo "en CP850"
-    echo "en_AU CP850" # not CP437 ??
-    echo "en_CA CP850"
-    echo "en_GB CP850"
-    echo "en_NZ CP437"
-    echo "en_US CP437"
-    echo "en_ZA CP850" # not CP437 ??
-    echo "es CP850"
-    echo "es_AR CP850"
-    echo "es_BO CP850"
-    echo "es_CL CP850"
-    echo "es_CO CP850"
-    echo "es_CR CP850"
-    echo "es_CU CP850"
-    echo "es_DO CP850"
-    echo "es_EC CP850"
-    echo "es_ES CP850"
-    echo "es_GT CP850"
-    echo "es_HN CP850"
-    echo "es_MX CP850"
-    echo "es_NI CP850"
-    echo "es_PA CP850"
-    echo "es_PY CP850"
-    echo "es_PE CP850"
-    echo "es_SV CP850"
-    echo "es_UY CP850"
-    echo "es_VE CP850"
-    echo "et CP850"
-    echo "et_EE CP850"
-    echo "eu CP850"
-    echo "eu_ES CP850"
-    echo "fi CP850"
-    echo "fi_FI CP850"
-    echo "fr CP850"
-    echo "fr_BE CP850"
-    echo "fr_CA CP850"
-    echo "fr_CH CP850"
-    echo "fr_FR CP850"
-    echo "ga CP850"
-    echo "ga_IE CP850"
-    echo "gd CP850"
-    echo "gd_GB CP850"
-    echo "gl CP850"
-    echo "gl_ES CP850"
-    echo "id CP850"    # not CP437 ??
-    echo "id_ID CP850" # not CP437 ??
-    echo "is CP861"    # not CP850 ??
-    echo "is_IS CP861" # not CP850 ??
-    echo "it CP850"
-    echo "it_CH CP850"
-    echo "it_IT CP850"
-    echo "lt CP775"
-    echo "lt_LT CP775"
-    echo "lv CP775"
-    echo "lv_LV CP775"
-    echo "nb CP865"    # not CP850 ??
-    echo "nb_NO CP865" # not CP850 ??
-    echo "nl CP850"
-    echo "nl_BE CP850"
-    echo "nl_NL CP850"
-    echo "nn CP865"    # not CP850 ??
-    echo "nn_NO CP865" # not CP850 ??
-    echo "no CP865"    # not CP850 ??
-    echo "no_NO CP865" # not CP850 ??
-    echo "pt CP850"
-    echo "pt_BR CP850"
-    echo "pt_PT CP850"
-    echo "sv CP850"
-    echo "sv_SE CP850"
-    # ISO-8859-2 languages
-    echo "cs CP852"
-    echo "cs_CZ CP852"
-    echo "hr CP852"
-    echo "hr_HR CP852"
-    echo "hu CP852"
-    echo "hu_HU CP852"
-    echo "pl CP852"
-    echo "pl_PL CP852"
-    echo "ro CP852"
-    echo "ro_RO CP852"
-    echo "sk CP852"
-    echo "sk_SK CP852"
-    echo "sl CP852"
-    echo "sl_SI CP852"
-    echo "sq CP852"
-    echo "sq_AL CP852"
-    echo "sr CP852"    # CP852 or CP866 or CP855 ??
-    echo "sr_CS CP852" # CP852 or CP866 or CP855 ??
-    echo "sr_YU CP852" # CP852 or CP866 or CP855 ??
-    # ISO-8859-3 languages
-    echo "mt CP850"
-    echo "mt_MT CP850"
-    # ISO-8859-5 languages
-    echo "be CP866"
-    echo "be_BE CP866"
-    echo "bg CP866"    # not CP855 ??
-    echo "bg_BG CP866" # not CP855 ??
-    echo "mk CP866"    # not CP855 ??
-    echo "mk_MK CP866" # not CP855 ??
-    echo "ru CP866"
-    echo "ru_RU CP866"
-    echo "uk CP1125"
-    echo "uk_UA CP1125"
-    # ISO-8859-6 languages
-    echo "ar CP864"
-    echo "ar_AE CP864"
-    echo "ar_DZ CP864"
-    echo "ar_EG CP864"
-    echo "ar_IQ CP864"
-    echo "ar_IR CP864"
-    echo "ar_JO CP864"
-    echo "ar_KW CP864"
-    echo "ar_MA CP864"
-    echo "ar_OM CP864"
-    echo "ar_QA CP864"
-    echo "ar_SA CP864"
-    echo "ar_SY CP864"
-    # ISO-8859-7 languages
-    echo "el CP869"
-    echo "el_GR CP869"
-    # ISO-8859-8 languages
-    echo "he CP862"
-    echo "he_IL CP862"
-    # ISO-8859-9 languages
-    echo "tr CP857"
-    echo "tr_TR CP857"
-    # Japanese
-    echo "ja CP932"
-    echo "ja_JP CP932"
-    # Chinese
-    echo "zh_CN GBK"
-    echo "zh_TW CP950" # not CP938 ??
-    # Korean
-    echo "kr CP949"    # not CP934 ??
-    echo "kr_KR CP949" # not CP934 ??
-    # Thai
-    echo "th CP874"
-    echo "th_TH CP874"
-    # Other
-    echo "eo CP850"
-    echo "eo_EO CP850"
-    ;;
-esac
diff --git a/src/libs/gnulib/lib/intprops.h b/src/libs/gnulib/lib/intprops.h
deleted file mode 100644 (file)
index d0bb7a6..0000000
+++ /dev/null
@@ -1,320 +0,0 @@
-/* intprops.h -- properties of integer types
-
-   Copyright (C) 2001-2005, 2009-2014 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 <http://www.gnu.org/licenses/>.  */
-
-/* Written by Paul Eggert.  */
-
-#ifndef _GL_INTPROPS_H
-#define _GL_INTPROPS_H
-
-#include <limits.h>
-
-/* Return an integer value, converted to the same type as the integer
-   expression E after integer type promotion.  V is the unconverted value.  */
-#define _GL_INT_CONVERT(e, v) (0 * (e) + (v))
-
-/* Act like _GL_INT_CONVERT (E, -V) but work around a bug in IRIX 6.5 cc; see
-   <http://lists.gnu.org/archive/html/bug-gnulib/2011-05/msg00406.html>.  */
-#define _GL_INT_NEGATE_CONVERT(e, v) (0 * (e) - (v))
-
-/* The extra casts in the following macros work around compiler bugs,
-   e.g., in Cray C 5.0.3.0.  */
-
-/* True if the arithmetic type T is an integer type.  bool counts as
-   an integer.  */
-#define TYPE_IS_INTEGER(t) ((t) 1.5 == 1)
-
-/* True if negative values of the signed integer type T use two's
-   complement, ones' complement, or signed magnitude representation,
-   respectively.  Much GNU code assumes two's complement, but some
-   people like to be portable to all possible C hosts.  */
-#define TYPE_TWOS_COMPLEMENT(t) ((t) ~ (t) 0 == (t) -1)
-#define TYPE_ONES_COMPLEMENT(t) ((t) ~ (t) 0 == 0)
-#define TYPE_SIGNED_MAGNITUDE(t) ((t) ~ (t) 0 < (t) -1)
-
-/* True if the signed integer expression E uses two's complement.  */
-#define _GL_INT_TWOS_COMPLEMENT(e) (~ _GL_INT_CONVERT (e, 0) == -1)
-
-/* True if the arithmetic type T is signed.  */
-#define TYPE_SIGNED(t) (! ((t) 0 < (t) -1))
-
-/* Return 1 if the integer expression E, after integer promotion, has
-   a signed type.  */
-#define _GL_INT_SIGNED(e) (_GL_INT_NEGATE_CONVERT (e, 1) < 0)
-
-
-/* Minimum and maximum values for integer types and expressions.  These
-   macros have undefined behavior if T is signed and has padding bits.
-   If this is a problem for you, please let us know how to fix it for
-   your host.  */
-
-/* The maximum and minimum values for the integer type T.  */
-#define TYPE_MINIMUM(t)                                                 \
-  ((t) (! TYPE_SIGNED (t)                                               \
-        ? (t) 0                                                         \
-        : TYPE_SIGNED_MAGNITUDE (t)                                     \
-        ? ~ (t) 0                                                       \
-        : ~ TYPE_MAXIMUM (t)))
-#define TYPE_MAXIMUM(t)                                                 \
-  ((t) (! TYPE_SIGNED (t)                                               \
-        ? (t) -1                                                        \
-        : ((((t) 1 << (sizeof (t) * CHAR_BIT - 2)) - 1) * 2 + 1)))
-
-/* The maximum and minimum values for the type of the expression E,
-   after integer promotion.  E should not have side effects.  */
-#define _GL_INT_MINIMUM(e)                                              \
-  (_GL_INT_SIGNED (e)                                                   \
-   ? - _GL_INT_TWOS_COMPLEMENT (e) - _GL_SIGNED_INT_MAXIMUM (e)         \
-   : _GL_INT_CONVERT (e, 0))
-#define _GL_INT_MAXIMUM(e)                                              \
-  (_GL_INT_SIGNED (e)                                                   \
-   ? _GL_SIGNED_INT_MAXIMUM (e)                                         \
-   : _GL_INT_NEGATE_CONVERT (e, 1))
-#define _GL_SIGNED_INT_MAXIMUM(e)                                       \
-  (((_GL_INT_CONVERT (e, 1) << (sizeof ((e) + 0) * CHAR_BIT - 2)) - 1) * 2 + 1)
-
-
-/* Return 1 if the __typeof__ keyword works.  This could be done by
-   'configure', but for now it's easier to do it by hand.  */
-#if (2 <= __GNUC__ || defined __IBM__TYPEOF__ \
-     || (0x5110 <= __SUNPRO_C && !__STDC__))
-# define _GL_HAVE___TYPEOF__ 1
-#else
-# define _GL_HAVE___TYPEOF__ 0
-#endif
-
-/* Return 1 if the integer type or expression T might be signed.  Return 0
-   if it is definitely unsigned.  This macro does not evaluate its argument,
-   and expands to an integer constant expression.  */
-#if _GL_HAVE___TYPEOF__
-# define _GL_SIGNED_TYPE_OR_EXPR(t) TYPE_SIGNED (__typeof__ (t))
-#else
-# define _GL_SIGNED_TYPE_OR_EXPR(t) 1
-#endif
-
-/* Bound on length of the string representing an unsigned integer
-   value representable in B bits.  log10 (2.0) < 146/485.  The
-   smallest value of B where this bound is not tight is 2621.  */
-#define INT_BITS_STRLEN_BOUND(b) (((b) * 146 + 484) / 485)
-
-/* Bound on length of the string representing an integer type or expression T.
-   Subtract 1 for the sign bit if T is signed, and then add 1 more for
-   a minus sign if needed.
-
-   Because _GL_SIGNED_TYPE_OR_EXPR sometimes returns 0 when its argument is
-   signed, this macro may overestimate the true bound by one byte when
-   applied to unsigned types of size 2, 4, 16, ... bytes.  */
-#define INT_STRLEN_BOUND(t)                                     \
-  (INT_BITS_STRLEN_BOUND (sizeof (t) * CHAR_BIT                 \
-                          - _GL_SIGNED_TYPE_OR_EXPR (t))        \
-   + _GL_SIGNED_TYPE_OR_EXPR (t))
-
-/* Bound on buffer size needed to represent an integer type or expression T,
-   including the terminating null.  */
-#define INT_BUFSIZE_BOUND(t) (INT_STRLEN_BOUND (t) + 1)
-
-
-/* Range overflow checks.
-
-   The INT_<op>_RANGE_OVERFLOW macros return 1 if the corresponding C
-   operators might not yield numerically correct answers due to
-   arithmetic overflow.  They do not rely on undefined or
-   implementation-defined behavior.  Their implementations are simple
-   and straightforward, but they are a bit harder to use than the
-   INT_<op>_OVERFLOW macros described below.
-
-   Example usage:
-
-     long int i = ...;
-     long int j = ...;
-     if (INT_MULTIPLY_RANGE_OVERFLOW (i, j, LONG_MIN, LONG_MAX))
-       printf ("multiply would overflow");
-     else
-       printf ("product is %ld", i * j);
-
-   Restrictions on *_RANGE_OVERFLOW macros:
-
-   These macros do not check for all possible numerical problems or
-   undefined or unspecified behavior: they do not check for division
-   by zero, for bad shift counts, or for shifting negative numbers.
-
-   These macros may evaluate their arguments zero or multiple times,
-   so the arguments should not have side effects.  The arithmetic
-   arguments (including the MIN and MAX arguments) must be of the same
-   integer type after the usual arithmetic conversions, and the type
-   must have minimum value MIN and maximum MAX.  Unsigned types should
-   use a zero MIN of the proper type.
-
-   These macros are tuned for constant MIN and MAX.  For commutative
-   operations such as A + B, they are also tuned for constant B.  */
-
-/* Return 1 if A + B would overflow in [MIN,MAX] arithmetic.
-   See above for restrictions.  */
-#define INT_ADD_RANGE_OVERFLOW(a, b, min, max)          \
-  ((b) < 0                                              \
-   ? (a) < (min) - (b)                                  \
-   : (max) - (b) < (a))
-
-/* Return 1 if A - B would overflow in [MIN,MAX] arithmetic.
-   See above for restrictions.  */
-#define INT_SUBTRACT_RANGE_OVERFLOW(a, b, min, max)     \
-  ((b) < 0                                              \
-   ? (max) + (b) < (a)                                  \
-   : (a) < (min) + (b))
-
-/* Return 1 if - A would overflow in [MIN,MAX] arithmetic.
-   See above for restrictions.  */
-#define INT_NEGATE_RANGE_OVERFLOW(a, min, max)          \
-  ((min) < 0                                            \
-   ? (a) < - (max)                                      \
-   : 0 < (a))
-
-/* Return 1 if A * B would overflow in [MIN,MAX] arithmetic.
-   See above for restrictions.  Avoid && and || as they tickle
-   bugs in Sun C 5.11 2010/08/13 and other compilers; see
-   <http://lists.gnu.org/archive/html/bug-gnulib/2011-05/msg00401.html>.  */
-#define INT_MULTIPLY_RANGE_OVERFLOW(a, b, min, max)     \
-  ((b) < 0                                              \
-   ? ((a) < 0                                           \
-      ? (a) < (max) / (b)                               \
-      : (b) == -1                                       \
-      ? 0                                               \
-      : (min) / (b) < (a))                              \
-   : (b) == 0                                           \
-   ? 0                                                  \
-   : ((a) < 0                                           \
-      ? (a) < (min) / (b)                               \
-      : (max) / (b) < (a)))
-
-/* Return 1 if A / B would overflow in [MIN,MAX] arithmetic.
-   See above for restrictions.  Do not check for division by zero.  */
-#define INT_DIVIDE_RANGE_OVERFLOW(a, b, min, max)       \
-  ((min) < 0 && (b) == -1 && (a) < - (max))
-
-/* Return 1 if A % B would overflow in [MIN,MAX] arithmetic.
-   See above for restrictions.  Do not check for division by zero.
-   Mathematically, % should never overflow, but on x86-like hosts
-   INT_MIN % -1 traps, and the C standard permits this, so treat this
-   as an overflow too.  */
-#define INT_REMAINDER_RANGE_OVERFLOW(a, b, min, max)    \
-  INT_DIVIDE_RANGE_OVERFLOW (a, b, min, max)
-
-/* Return 1 if A << B would overflow in [MIN,MAX] arithmetic.
-   See above for restrictions.  Here, MIN and MAX are for A only, and B need
-   not be of the same type as the other arguments.  The C standard says that
-   behavior is undefined for shifts unless 0 <= B < wordwidth, and that when
-   A is negative then A << B has undefined behavior and A >> B has
-   implementation-defined behavior, but do not check these other
-   restrictions.  */
-#define INT_LEFT_SHIFT_RANGE_OVERFLOW(a, b, min, max)   \
-  ((a) < 0                                              \
-   ? (a) < (min) >> (b)                                 \
-   : (max) >> (b) < (a))
-
-
-/* The _GL*_OVERFLOW macros have the same restrictions as the
-   *_RANGE_OVERFLOW macros, except that they do not assume that operands
-   (e.g., A and B) have the same type as MIN and MAX.  Instead, they assume
-   that the result (e.g., A + B) has that type.  */
-#define _GL_ADD_OVERFLOW(a, b, min, max)                                \
-  ((min) < 0 ? INT_ADD_RANGE_OVERFLOW (a, b, min, max)                  \
-   : (a) < 0 ? (b) <= (a) + (b)                                         \
-   : (b) < 0 ? (a) <= (a) + (b)                                         \
-   : (a) + (b) < (b))
-#define _GL_SUBTRACT_OVERFLOW(a, b, min, max)                           \
-  ((min) < 0 ? INT_SUBTRACT_RANGE_OVERFLOW (a, b, min, max)             \
-   : (a) < 0 ? 1                                                        \
-   : (b) < 0 ? (a) - (b) <= (a)                                         \
-   : (a) < (b))
-#define _GL_MULTIPLY_OVERFLOW(a, b, min, max)                           \
-  (((min) == 0 && (((a) < 0 && 0 < (b)) || ((b) < 0 && 0 < (a))))       \
-   || INT_MULTIPLY_RANGE_OVERFLOW (a, b, min, max))
-#define _GL_DIVIDE_OVERFLOW(a, b, min, max)                             \
-  ((min) < 0 ? (b) == _GL_INT_NEGATE_CONVERT (min, 1) && (a) < - (max)  \
-   : (a) < 0 ? (b) <= (a) + (b) - 1                                     \
-   : (b) < 0 && (a) + (b) <= (a))
-#define _GL_REMAINDER_OVERFLOW(a, b, min, max)                          \
-  ((min) < 0 ? (b) == _GL_INT_NEGATE_CONVERT (min, 1) && (a) < - (max)  \
-   : (a) < 0 ? (a) % (b) != ((max) - (b) + 1) % (b)                     \
-   : (b) < 0 && ! _GL_UNSIGNED_NEG_MULTIPLE (a, b, max))
-
-/* Return a nonzero value if A is a mathematical multiple of B, where
-   A is unsigned, B is negative, and MAX is the maximum value of A's
-   type.  A's type must be the same as (A % B)'s type.  Normally (A %
-   -B == 0) suffices, but things get tricky if -B would overflow.  */
-#define _GL_UNSIGNED_NEG_MULTIPLE(a, b, max)                            \
-  (((b) < -_GL_SIGNED_INT_MAXIMUM (b)                                   \
-    ? (_GL_SIGNED_INT_MAXIMUM (b) == (max)                              \
-       ? (a)                                                            \
-       : (a) % (_GL_INT_CONVERT (a, _GL_SIGNED_INT_MAXIMUM (b)) + 1))   \
-    : (a) % - (b))                                                      \
-   == 0)
-
-
-/* Integer overflow checks.
-
-   The INT_<op>_OVERFLOW macros return 1 if the corresponding C operators
-   might not yield numerically correct answers due to arithmetic overflow.
-   They work correctly on all known practical hosts, and do not rely
-   on undefined behavior due to signed arithmetic overflow.
-
-   Example usage:
-
-     long int i = ...;
-     long int j = ...;
-     if (INT_MULTIPLY_OVERFLOW (i, j))
-       printf ("multiply would overflow");
-     else
-       printf ("product is %ld", i * j);
-
-   These macros do not check for all possible numerical problems or
-   undefined or unspecified behavior: they do not check for division
-   by zero, for bad shift counts, or for shifting negative numbers.
-
-   These macros may evaluate their arguments zero or multiple times, so the
-   arguments should not have side effects.
-
-   These macros are tuned for their last argument being a constant.
-
-   Return 1 if the integer expressions A * B, A - B, -A, A * B, A / B,
-   A % B, and A << B would overflow, respectively.  */
-
-#define INT_ADD_OVERFLOW(a, b) \
-  _GL_BINARY_OP_OVERFLOW (a, b, _GL_ADD_OVERFLOW)
-#define INT_SUBTRACT_OVERFLOW(a, b) \
-  _GL_BINARY_OP_OVERFLOW (a, b, _GL_SUBTRACT_OVERFLOW)
-#define INT_NEGATE_OVERFLOW(a) \
-  INT_NEGATE_RANGE_OVERFLOW (a, _GL_INT_MINIMUM (a), _GL_INT_MAXIMUM (a))
-#define INT_MULTIPLY_OVERFLOW(a, b) \
-  _GL_BINARY_OP_OVERFLOW (a, b, _GL_MULTIPLY_OVERFLOW)
-#define INT_DIVIDE_OVERFLOW(a, b) \
-  _GL_BINARY_OP_OVERFLOW (a, b, _GL_DIVIDE_OVERFLOW)
-#define INT_REMAINDER_OVERFLOW(a, b) \
-  _GL_BINARY_OP_OVERFLOW (a, b, _GL_REMAINDER_OVERFLOW)
-#define INT_LEFT_SHIFT_OVERFLOW(a, b) \
-  INT_LEFT_SHIFT_RANGE_OVERFLOW (a, b, \
-                                 _GL_INT_MINIMUM (a), _GL_INT_MAXIMUM (a))
-
-/* Return 1 if the expression A <op> B would overflow,
-   where OP_RESULT_OVERFLOW (A, B, MIN, MAX) does the actual test,
-   assuming MIN and MAX are the minimum and maximum for the result type.
-   Arguments should be free of side effects.  */
-#define _GL_BINARY_OP_OVERFLOW(a, b, op_result_overflow)        \
-  op_result_overflow (a, b,                                     \
-                      _GL_INT_MINIMUM (0 * (b) + (a)),          \
-                      _GL_INT_MAXIMUM (0 * (b) + (a)))
-
-#endif /* _GL_INTPROPS_H */
diff --git a/src/libs/gnulib/lib/inttypes.in.h b/src/libs/gnulib/lib/inttypes.in.h
deleted file mode 100644 (file)
index 2219b74..0000000
+++ /dev/null
@@ -1,1130 +0,0 @@
-/* Copyright (C) 2006-2014 Free Software Foundation, Inc.
-   Written by Paul Eggert, Bruno Haible, Derek Price.
-   This file is part of gnulib.
-
-   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 <http://www.gnu.org/licenses/>.  */
-
-/*
- * ISO C 99 <inttypes.h> for platforms that lack it.
- * <http://www.opengroup.org/susv3xbd/inttypes.h.html>
- */
-
-#if __GNUC__ >= 3
-@PRAGMA_SYSTEM_HEADER@
-#endif
-@PRAGMA_COLUMNS@
-
-/* Include the original <inttypes.h> if it exists, and if this file
-   has not been included yet or if this file includes gnulib stdint.h
-   which in turn includes this file.
-   The include_next requires a split double-inclusion guard.  */
-#if ! defined INTTYPES_H || defined _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H
-# if @HAVE_INTTYPES_H@
-
-   /* Some pre-C++11 <stdint.h> implementations need this.  */
-#  if defined __cplusplus && ! defined __STDC_FORMAT_MACROS
-#   define __STDC_FORMAT_MACROS 1
-#  endif
-
-#  @INCLUDE_NEXT@ @NEXT_INTTYPES_H@
-# endif
-#endif
-
-#if ! defined INTTYPES_H && ! defined _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H
-#define INTTYPES_H
-
-/* Include <stdint.h> or the gnulib replacement.
-   But avoid namespace pollution on glibc systems.  */
-#ifndef __GLIBC__
-# include <stdint.h>
-#endif
-/* Get CHAR_BIT.  */
-#include <limits.h>
-
-#if !(INT_MIN == INT32_MIN && INT_MAX == INT32_MAX)
-# error "This file assumes that 'int' has exactly 32 bits. Please report your platform and compiler to <bug-gnulib@gnu.org>."
-#endif
-
-/* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */
-
-/* The definition of _GL_ARG_NONNULL is copied here.  */
-
-/* The definition of _GL_WARN_ON_USE is copied here.  */
-
-/* 7.8.1 Macros for format specifiers */
-
-#if defined _TNS_R_TARGET
-   /* Tandem NonStop R series and compatible platforms released before
-      July 2005 support %Ld but not %lld.  */
-# define _LONG_LONG_FORMAT_PREFIX "L"
-#else
-# define _LONG_LONG_FORMAT_PREFIX "ll"
-#endif
-
-#if !defined PRId8 || @PRI_MACROS_BROKEN@
-# undef PRId8
-# ifdef INT8_MAX
-#  define PRId8 "d"
-# endif
-#endif
-#if !defined PRIi8 || @PRI_MACROS_BROKEN@
-# undef PRIi8
-# ifdef INT8_MAX
-#  define PRIi8 "i"
-# endif
-#endif
-#if !defined PRIo8 || @PRI_MACROS_BROKEN@
-# undef PRIo8
-# ifdef UINT8_MAX
-#  define PRIo8 "o"
-# endif
-#endif
-#if !defined PRIu8 || @PRI_MACROS_BROKEN@
-# undef PRIu8
-# ifdef UINT8_MAX
-#  define PRIu8 "u"
-# endif
-#endif
-#if !defined PRIx8 || @PRI_MACROS_BROKEN@
-# undef PRIx8
-# ifdef UINT8_MAX
-#  define PRIx8 "x"
-# endif
-#endif
-#if !defined PRIX8 || @PRI_MACROS_BROKEN@
-# undef PRIX8
-# ifdef UINT8_MAX
-#  define PRIX8 "X"
-# endif
-#endif
-#if !defined PRId16 || @PRI_MACROS_BROKEN@
-# undef PRId16
-# ifdef INT16_MAX
-#  define PRId16 "d"
-# endif
-#endif
-#if !defined PRIi16 || @PRI_MACROS_BROKEN@
-# undef PRIi16
-# ifdef INT16_MAX
-#  define PRIi16 "i"
-# endif
-#endif
-#if !defined PRIo16 || @PRI_MACROS_BROKEN@
-# undef PRIo16
-# ifdef UINT16_MAX
-#  define PRIo16 "o"
-# endif
-#endif
-#if !defined PRIu16 || @PRI_MACROS_BROKEN@
-# undef PRIu16
-# ifdef UINT16_MAX
-#  define PRIu16 "u"
-# endif
-#endif
-#if !defined PRIx16 || @PRI_MACROS_BROKEN@
-# undef PRIx16
-# ifdef UINT16_MAX
-#  define PRIx16 "x"
-# endif
-#endif
-#if !defined PRIX16 || @PRI_MACROS_BROKEN@
-# undef PRIX16
-# ifdef UINT16_MAX
-#  define PRIX16 "X"
-# endif
-#endif
-#if !defined PRId32 || @PRI_MACROS_BROKEN@
-# undef PRId32
-# ifdef INT32_MAX
-#  define PRId32 "d"
-# endif
-#endif
-#if !defined PRIi32 || @PRI_MACROS_BROKEN@
-# undef PRIi32
-# ifdef INT32_MAX
-#  define PRIi32 "i"
-# endif
-#endif
-#if !defined PRIo32 || @PRI_MACROS_BROKEN@
-# undef PRIo32
-# ifdef UINT32_MAX
-#  define PRIo32 "o"
-# endif
-#endif
-#if !defined PRIu32 || @PRI_MACROS_BROKEN@
-# undef PRIu32
-# ifdef UINT32_MAX
-#  define PRIu32 "u"
-# endif
-#endif
-#if !defined PRIx32 || @PRI_MACROS_BROKEN@
-# undef PRIx32
-# ifdef UINT32_MAX
-#  define PRIx32 "x"
-# endif
-#endif
-#if !defined PRIX32 || @PRI_MACROS_BROKEN@
-# undef PRIX32
-# ifdef UINT32_MAX
-#  define PRIX32 "X"
-# endif
-#endif
-#ifdef INT64_MAX
-# if (@APPLE_UNIVERSAL_BUILD@ ? defined _LP64 : @INT64_MAX_EQ_LONG_MAX@)
-#  define _PRI64_PREFIX "l"
-# elif defined _MSC_VER || defined __MINGW32__
-#  define _PRI64_PREFIX "I64"
-# elif @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1
-#  define _PRI64_PREFIX _LONG_LONG_FORMAT_PREFIX
-# endif
-# if !defined PRId64 || @PRI_MACROS_BROKEN@
-#  undef PRId64
-#  define PRId64 _PRI64_PREFIX "d"
-# endif
-# if !defined PRIi64 || @PRI_MACROS_BROKEN@
-#  undef PRIi64
-#  define PRIi64 _PRI64_PREFIX "i"
-# endif
-#endif
-#ifdef UINT64_MAX
-# if (@APPLE_UNIVERSAL_BUILD@ ? defined _LP64 : @UINT64_MAX_EQ_ULONG_MAX@)
-#  define _PRIu64_PREFIX "l"
-# elif defined _MSC_VER || defined __MINGW32__
-#  define _PRIu64_PREFIX "I64"
-# elif @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1
-#  define _PRIu64_PREFIX _LONG_LONG_FORMAT_PREFIX
-# endif
-# if !defined PRIo64 || @PRI_MACROS_BROKEN@
-#  undef PRIo64
-#  define PRIo64 _PRIu64_PREFIX "o"
-# endif
-# if !defined PRIu64 || @PRI_MACROS_BROKEN@
-#  undef PRIu64
-#  define PRIu64 _PRIu64_PREFIX "u"
-# endif
-# if !defined PRIx64 || @PRI_MACROS_BROKEN@
-#  undef PRIx64
-#  define PRIx64 _PRIu64_PREFIX "x"
-# endif
-# if !defined PRIX64 || @PRI_MACROS_BROKEN@
-#  undef PRIX64
-#  define PRIX64 _PRIu64_PREFIX "X"
-# endif
-#endif
-
-#if !defined PRIdLEAST8 || @PRI_MACROS_BROKEN@
-# undef PRIdLEAST8
-# define PRIdLEAST8 "d"
-#endif
-#if !defined PRIiLEAST8 || @PRI_MACROS_BROKEN@
-# undef PRIiLEAST8
-# define PRIiLEAST8 "i"
-#endif
-#if !defined PRIoLEAST8 || @PRI_MACROS_BROKEN@
-# undef PRIoLEAST8
-# define PRIoLEAST8 "o"
-#endif
-#if !defined PRIuLEAST8 || @PRI_MACROS_BROKEN@
-# undef PRIuLEAST8
-# define PRIuLEAST8 "u"
-#endif
-#if !defined PRIxLEAST8 || @PRI_MACROS_BROKEN@
-# undef PRIxLEAST8
-# define PRIxLEAST8 "x"
-#endif
-#if !defined PRIXLEAST8 || @PRI_MACROS_BROKEN@
-# undef PRIXLEAST8
-# define PRIXLEAST8 "X"
-#endif
-#if !defined PRIdLEAST16 || @PRI_MACROS_BROKEN@
-# undef PRIdLEAST16
-# define PRIdLEAST16 "d"
-#endif
-#if !defined PRIiLEAST16 || @PRI_MACROS_BROKEN@
-# undef PRIiLEAST16
-# define PRIiLEAST16 "i"
-#endif
-#if !defined PRIoLEAST16 || @PRI_MACROS_BROKEN@
-# undef PRIoLEAST16
-# define PRIoLEAST16 "o"
-#endif
-#if !defined PRIuLEAST16 || @PRI_MACROS_BROKEN@
-# undef PRIuLEAST16
-# define PRIuLEAST16 "u"
-#endif
-#if !defined PRIxLEAST16 || @PRI_MACROS_BROKEN@
-# undef PRIxLEAST16
-# define PRIxLEAST16 "x"
-#endif
-#if !defined PRIXLEAST16 || @PRI_MACROS_BROKEN@
-# undef PRIXLEAST16
-# define PRIXLEAST16 "X"
-#endif
-#if !defined PRIdLEAST32 || @PRI_MACROS_BROKEN@
-# undef PRIdLEAST32
-# define PRIdLEAST32 "d"
-#endif
-#if !defined PRIiLEAST32 || @PRI_MACROS_BROKEN@
-# undef PRIiLEAST32
-# define PRIiLEAST32 "i"
-#endif
-#if !defined PRIoLEAST32 || @PRI_MACROS_BROKEN@
-# undef PRIoLEAST32
-# define PRIoLEAST32 "o"
-#endif
-#if !defined PRIuLEAST32 || @PRI_MACROS_BROKEN@
-# undef PRIuLEAST32
-# define PRIuLEAST32 "u"
-#endif
-#if !defined PRIxLEAST32 || @PRI_MACROS_BROKEN@
-# undef PRIxLEAST32
-# define PRIxLEAST32 "x"
-#endif
-#if !defined PRIXLEAST32 || @PRI_MACROS_BROKEN@
-# undef PRIXLEAST32
-# define PRIXLEAST32 "X"
-#endif
-#ifdef INT64_MAX
-# if !defined PRIdLEAST64 || @PRI_MACROS_BROKEN@
-#  undef PRIdLEAST64
-#  define PRIdLEAST64 PRId64
-# endif
-# if !defined PRIiLEAST64 || @PRI_MACROS_BROKEN@
-#  undef PRIiLEAST64
-#  define PRIiLEAST64 PRIi64
-# endif
-#endif
-#ifdef UINT64_MAX
-# if !defined PRIoLEAST64 || @PRI_MACROS_BROKEN@
-#  undef PRIoLEAST64
-#  define PRIoLEAST64 PRIo64
-# endif
-# if !defined PRIuLEAST64 || @PRI_MACROS_BROKEN@
-#  undef PRIuLEAST64
-#  define PRIuLEAST64 PRIu64
-# endif
-# if !defined PRIxLEAST64 || @PRI_MACROS_BROKEN@
-#  undef PRIxLEAST64
-#  define PRIxLEAST64 PRIx64
-# endif
-# if !defined PRIXLEAST64 || @PRI_MACROS_BROKEN@
-#  undef PRIXLEAST64
-#  define PRIXLEAST64 PRIX64
-# endif
-#endif
-
-#if !defined PRIdFAST8 || @PRI_MACROS_BROKEN@
-# undef PRIdFAST8
-# if INT_FAST8_MAX > INT32_MAX
-#  define PRIdFAST8 PRId64
-# else
-#  define PRIdFAST8 "d"
-# endif
-#endif
-#if !defined PRIiFAST8 || @PRI_MACROS_BROKEN@
-# undef PRIiFAST8
-# if INT_FAST8_MAX > INT32_MAX
-#  define PRIiFAST8 PRIi64
-# else
-#  define PRIiFAST8 "i"
-# endif
-#endif
-#if !defined PRIoFAST8 || @PRI_MACROS_BROKEN@
-# undef PRIoFAST8
-# if UINT_FAST8_MAX > UINT32_MAX
-#  define PRIoFAST8 PRIo64
-# else
-#  define PRIoFAST8 "o"
-# endif
-#endif
-#if !defined PRIuFAST8 || @PRI_MACROS_BROKEN@
-# undef PRIuFAST8
-# if UINT_FAST8_MAX > UINT32_MAX
-#  define PRIuFAST8 PRIu64
-# else
-#  define PRIuFAST8 "u"
-# endif
-#endif
-#if !defined PRIxFAST8 || @PRI_MACROS_BROKEN@
-# undef PRIxFAST8
-# if UINT_FAST8_MAX > UINT32_MAX
-#  define PRIxFAST8 PRIx64
-# else
-#  define PRIxFAST8 "x"
-# endif
-#endif
-#if !defined PRIXFAST8 || @PRI_MACROS_BROKEN@
-# undef PRIXFAST8
-# if UINT_FAST8_MAX > UINT32_MAX
-#  define PRIXFAST8 PRIX64
-# else
-#  define PRIXFAST8 "X"
-# endif
-#endif
-#if !defined PRIdFAST16 || @PRI_MACROS_BROKEN@
-# undef PRIdFAST16
-# if INT_FAST16_MAX > INT32_MAX
-#  define PRIdFAST16 PRId64
-# else
-#  define PRIdFAST16 "d"
-# endif
-#endif
-#if !defined PRIiFAST16 || @PRI_MACROS_BROKEN@
-# undef PRIiFAST16
-# if INT_FAST16_MAX > INT32_MAX
-#  define PRIiFAST16 PRIi64
-# else
-#  define PRIiFAST16 "i"
-# endif
-#endif
-#if !defined PRIoFAST16 || @PRI_MACROS_BROKEN@
-# undef PRIoFAST16
-# if UINT_FAST16_MAX > UINT32_MAX
-#  define PRIoFAST16 PRIo64
-# else
-#  define PRIoFAST16 "o"
-# endif
-#endif
-#if !defined PRIuFAST16 || @PRI_MACROS_BROKEN@
-# undef PRIuFAST16
-# if UINT_FAST16_MAX > UINT32_MAX
-#  define PRIuFAST16 PRIu64
-# else
-#  define PRIuFAST16 "u"
-# endif
-#endif
-#if !defined PRIxFAST16 || @PRI_MACROS_BROKEN@
-# undef PRIxFAST16
-# if UINT_FAST16_MAX > UINT32_MAX
-#  define PRIxFAST16 PRIx64
-# else
-#  define PRIxFAST16 "x"
-# endif
-#endif
-#if !defined PRIXFAST16 || @PRI_MACROS_BROKEN@
-# undef PRIXFAST16
-# if UINT_FAST16_MAX > UINT32_MAX
-#  define PRIXFAST16 PRIX64
-# else
-#  define PRIXFAST16 "X"
-# endif
-#endif
-#if !defined PRIdFAST32 || @PRI_MACROS_BROKEN@
-# undef PRIdFAST32
-# if INT_FAST32_MAX > INT32_MAX
-#  define PRIdFAST32 PRId64
-# else
-#  define PRIdFAST32 "d"
-# endif
-#endif
-#if !defined PRIiFAST32 || @PRI_MACROS_BROKEN@
-# undef PRIiFAST32
-# if INT_FAST32_MAX > INT32_MAX
-#  define PRIiFAST32 PRIi64
-# else
-#  define PRIiFAST32 "i"
-# endif
-#endif
-#if !defined PRIoFAST32 || @PRI_MACROS_BROKEN@
-# undef PRIoFAST32
-# if UINT_FAST32_MAX > UINT32_MAX
-#  define PRIoFAST32 PRIo64
-# else
-#  define PRIoFAST32 "o"
-# endif
-#endif
-#if !defined PRIuFAST32 || @PRI_MACROS_BROKEN@
-# undef PRIuFAST32
-# if UINT_FAST32_MAX > UINT32_MAX
-#  define PRIuFAST32 PRIu64
-# else
-#  define PRIuFAST32 "u"
-# endif
-#endif
-#if !defined PRIxFAST32 || @PRI_MACROS_BROKEN@
-# undef PRIxFAST32
-# if UINT_FAST32_MAX > UINT32_MAX
-#  define PRIxFAST32 PRIx64
-# else
-#  define PRIxFAST32 "x"
-# endif
-#endif
-#if !defined PRIXFAST32 || @PRI_MACROS_BROKEN@
-# undef PRIXFAST32
-# if UINT_FAST32_MAX > UINT32_MAX
-#  define PRIXFAST32 PRIX64
-# else
-#  define PRIXFAST32 "X"
-# endif
-#endif
-#ifdef INT64_MAX
-# if !defined PRIdFAST64 || @PRI_MACROS_BROKEN@
-#  undef PRIdFAST64
-#  define PRIdFAST64 PRId64
-# endif
-# if !defined PRIiFAST64 || @PRI_MACROS_BROKEN@
-#  undef PRIiFAST64
-#  define PRIiFAST64 PRIi64
-# endif
-#endif
-#ifdef UINT64_MAX
-# if !defined PRIoFAST64 || @PRI_MACROS_BROKEN@
-#  undef PRIoFAST64
-#  define PRIoFAST64 PRIo64
-# endif
-# if !defined PRIuFAST64 || @PRI_MACROS_BROKEN@
-#  undef PRIuFAST64
-#  define PRIuFAST64 PRIu64
-# endif
-# if !defined PRIxFAST64 || @PRI_MACROS_BROKEN@
-#  undef PRIxFAST64
-#  define PRIxFAST64 PRIx64
-# endif
-# if !defined PRIXFAST64 || @PRI_MACROS_BROKEN@
-#  undef PRIXFAST64
-#  define PRIXFAST64 PRIX64
-# endif
-#endif
-
-#if !defined PRIdMAX || @PRI_MACROS_BROKEN@
-# undef PRIdMAX
-# if @INT32_MAX_LT_INTMAX_MAX@
-#  define PRIdMAX PRId64
-# else
-#  define PRIdMAX "ld"
-# endif
-#endif
-#if !defined PRIiMAX || @PRI_MACROS_BROKEN@
-# undef PRIiMAX
-# if @INT32_MAX_LT_INTMAX_MAX@
-#  define PRIiMAX PRIi64
-# else
-#  define PRIiMAX "li"
-# endif
-#endif
-#if !defined PRIoMAX || @PRI_MACROS_BROKEN@
-# undef PRIoMAX
-# if @UINT32_MAX_LT_UINTMAX_MAX@
-#  define PRIoMAX PRIo64
-# else
-#  define PRIoMAX "lo"
-# endif
-#endif
-#if !defined PRIuMAX || @PRI_MACROS_BROKEN@
-# undef PRIuMAX
-# if @UINT32_MAX_LT_UINTMAX_MAX@
-#  define PRIuMAX PRIu64
-# else
-#  define PRIuMAX "lu"
-# endif
-#endif
-#if !defined PRIxMAX || @PRI_MACROS_BROKEN@
-# undef PRIxMAX
-# if @UINT32_MAX_LT_UINTMAX_MAX@
-#  define PRIxMAX PRIx64
-# else
-#  define PRIxMAX "lx"
-# endif
-#endif
-#if !defined PRIXMAX || @PRI_MACROS_BROKEN@
-# undef PRIXMAX
-# if @UINT32_MAX_LT_UINTMAX_MAX@
-#  define PRIXMAX PRIX64
-# else
-#  define PRIXMAX "lX"
-# endif
-#endif
-
-#if !defined PRIdPTR || @PRI_MACROS_BROKEN@
-# undef PRIdPTR
-# ifdef INTPTR_MAX
-#  define PRIdPTR @PRIPTR_PREFIX@ "d"
-# endif
-#endif
-#if !defined PRIiPTR || @PRI_MACROS_BROKEN@
-# undef PRIiPTR
-# ifdef INTPTR_MAX
-#  define PRIiPTR @PRIPTR_PREFIX@ "i"
-# endif
-#endif
-#if !defined PRIoPTR || @PRI_MACROS_BROKEN@
-# undef PRIoPTR
-# ifdef UINTPTR_MAX
-#  define PRIoPTR @PRIPTR_PREFIX@ "o"
-# endif
-#endif
-#if !defined PRIuPTR || @PRI_MACROS_BROKEN@
-# undef PRIuPTR
-# ifdef UINTPTR_MAX
-#  define PRIuPTR @PRIPTR_PREFIX@ "u"
-# endif
-#endif
-#if !defined PRIxPTR || @PRI_MACROS_BROKEN@
-# undef PRIxPTR
-# ifdef UINTPTR_MAX
-#  define PRIxPTR @PRIPTR_PREFIX@ "x"
-# endif
-#endif
-#if !defined PRIXPTR || @PRI_MACROS_BROKEN@
-# undef PRIXPTR
-# ifdef UINTPTR_MAX
-#  define PRIXPTR @PRIPTR_PREFIX@ "X"
-# endif
-#endif
-
-#if !defined SCNd8 || @PRI_MACROS_BROKEN@
-# undef SCNd8
-# ifdef INT8_MAX
-#  define SCNd8 "hhd"
-# endif
-#endif
-#if !defined SCNi8 || @PRI_MACROS_BROKEN@
-# undef SCNi8
-# ifdef INT8_MAX
-#  define SCNi8 "hhi"
-# endif
-#endif
-#if !defined SCNo8 || @PRI_MACROS_BROKEN@
-# undef SCNo8
-# ifdef UINT8_MAX
-#  define SCNo8 "hho"
-# endif
-#endif
-#if !defined SCNu8 || @PRI_MACROS_BROKEN@
-# undef SCNu8
-# ifdef UINT8_MAX
-#  define SCNu8 "hhu"
-# endif
-#endif
-#if !defined SCNx8 || @PRI_MACROS_BROKEN@
-# undef SCNx8
-# ifdef UINT8_MAX
-#  define SCNx8 "hhx"
-# endif
-#endif
-#if !defined SCNd16 || @PRI_MACROS_BROKEN@
-# undef SCNd16
-# ifdef INT16_MAX
-#  define SCNd16 "hd"
-# endif
-#endif
-#if !defined SCNi16 || @PRI_MACROS_BROKEN@
-# undef SCNi16
-# ifdef INT16_MAX
-#  define SCNi16 "hi"
-# endif
-#endif
-#if !defined SCNo16 || @PRI_MACROS_BROKEN@
-# undef SCNo16
-# ifdef UINT16_MAX
-#  define SCNo16 "ho"
-# endif
-#endif
-#if !defined SCNu16 || @PRI_MACROS_BROKEN@
-# undef SCNu16
-# ifdef UINT16_MAX
-#  define SCNu16 "hu"
-# endif
-#endif
-#if !defined SCNx16 || @PRI_MACROS_BROKEN@
-# undef SCNx16
-# ifdef UINT16_MAX
-#  define SCNx16 "hx"
-# endif
-#endif
-#if !defined SCNd32 || @PRI_MACROS_BROKEN@
-# undef SCNd32
-# ifdef INT32_MAX
-#  define SCNd32 "d"
-# endif
-#endif
-#if !defined SCNi32 || @PRI_MACROS_BROKEN@
-# undef SCNi32
-# ifdef INT32_MAX
-#  define SCNi32 "i"
-# endif
-#endif
-#if !defined SCNo32 || @PRI_MACROS_BROKEN@
-# undef SCNo32
-# ifdef UINT32_MAX
-#  define SCNo32 "o"
-# endif
-#endif
-#if !defined SCNu32 || @PRI_MACROS_BROKEN@
-# undef SCNu32
-# ifdef UINT32_MAX
-#  define SCNu32 "u"
-# endif
-#endif
-#if !defined SCNx32 || @PRI_MACROS_BROKEN@
-# undef SCNx32
-# ifdef UINT32_MAX
-#  define SCNx32 "x"
-# endif
-#endif
-#ifdef INT64_MAX
-# if (@APPLE_UNIVERSAL_BUILD@ ? defined _LP64 : @INT64_MAX_EQ_LONG_MAX@)
-#  define _SCN64_PREFIX "l"
-# elif defined _MSC_VER || defined __MINGW32__
-#  define _SCN64_PREFIX "I64"
-# elif @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1
-#  define _SCN64_PREFIX _LONG_LONG_FORMAT_PREFIX
-# endif
-# if !defined SCNd64 || @PRI_MACROS_BROKEN@
-#  undef SCNd64
-#  define SCNd64 _SCN64_PREFIX "d"
-# endif
-# if !defined SCNi64 || @PRI_MACROS_BROKEN@
-#  undef SCNi64
-#  define SCNi64 _SCN64_PREFIX "i"
-# endif
-#endif
-#ifdef UINT64_MAX
-# if (@APPLE_UNIVERSAL_BUILD@ ? defined _LP64 : @UINT64_MAX_EQ_ULONG_MAX@)
-#  define _SCNu64_PREFIX "l"
-# elif defined _MSC_VER || defined __MINGW32__
-#  define _SCNu64_PREFIX "I64"
-# elif @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1
-#  define _SCNu64_PREFIX _LONG_LONG_FORMAT_PREFIX
-# endif
-# if !defined SCNo64 || @PRI_MACROS_BROKEN@
-#  undef SCNo64
-#  define SCNo64 _SCNu64_PREFIX "o"
-# endif
-# if !defined SCNu64 || @PRI_MACROS_BROKEN@
-#  undef SCNu64
-#  define SCNu64 _SCNu64_PREFIX "u"
-# endif
-# if !defined SCNx64 || @PRI_MACROS_BROKEN@
-#  undef SCNx64
-#  define SCNx64 _SCNu64_PREFIX "x"
-# endif
-#endif
-
-#if !defined SCNdLEAST8 || @PRI_MACROS_BROKEN@
-# undef SCNdLEAST8
-# define SCNdLEAST8 "hhd"
-#endif
-#if !defined SCNiLEAST8 || @PRI_MACROS_BROKEN@
-# undef SCNiLEAST8
-# define SCNiLEAST8 "hhi"
-#endif
-#if !defined SCNoLEAST8 || @PRI_MACROS_BROKEN@
-# undef SCNoLEAST8
-# define SCNoLEAST8 "hho"
-#endif
-#if !defined SCNuLEAST8 || @PRI_MACROS_BROKEN@
-# undef SCNuLEAST8
-# define SCNuLEAST8 "hhu"
-#endif
-#if !defined SCNxLEAST8 || @PRI_MACROS_BROKEN@
-# undef SCNxLEAST8
-# define SCNxLEAST8 "hhx"
-#endif
-#if !defined SCNdLEAST16 || @PRI_MACROS_BROKEN@
-# undef SCNdLEAST16
-# define SCNdLEAST16 "hd"
-#endif
-#if !defined SCNiLEAST16 || @PRI_MACROS_BROKEN@
-# undef SCNiLEAST16
-# define SCNiLEAST16 "hi"
-#endif
-#if !defined SCNoLEAST16 || @PRI_MACROS_BROKEN@
-# undef SCNoLEAST16
-# define SCNoLEAST16 "ho"
-#endif
-#if !defined SCNuLEAST16 || @PRI_MACROS_BROKEN@
-# undef SCNuLEAST16
-# define SCNuLEAST16 "hu"
-#endif
-#if !defined SCNxLEAST16 || @PRI_MACROS_BROKEN@
-# undef SCNxLEAST16
-# define SCNxLEAST16 "hx"
-#endif
-#if !defined SCNdLEAST32 || @PRI_MACROS_BROKEN@
-# undef SCNdLEAST32
-# define SCNdLEAST32 "d"
-#endif
-#if !defined SCNiLEAST32 || @PRI_MACROS_BROKEN@
-# undef SCNiLEAST32
-# define SCNiLEAST32 "i"
-#endif
-#if !defined SCNoLEAST32 || @PRI_MACROS_BROKEN@
-# undef SCNoLEAST32
-# define SCNoLEAST32 "o"
-#endif
-#if !defined SCNuLEAST32 || @PRI_MACROS_BROKEN@
-# undef SCNuLEAST32
-# define SCNuLEAST32 "u"
-#endif
-#if !defined SCNxLEAST32 || @PRI_MACROS_BROKEN@
-# undef SCNxLEAST32
-# define SCNxLEAST32 "x"
-#endif
-#ifdef INT64_MAX
-# if !defined SCNdLEAST64 || @PRI_MACROS_BROKEN@
-#  undef SCNdLEAST64
-#  define SCNdLEAST64 SCNd64
-# endif
-# if !defined SCNiLEAST64 || @PRI_MACROS_BROKEN@
-#  undef SCNiLEAST64
-#  define SCNiLEAST64 SCNi64
-# endif
-#endif
-#ifdef UINT64_MAX
-# if !defined SCNoLEAST64 || @PRI_MACROS_BROKEN@
-#  undef SCNoLEAST64
-#  define SCNoLEAST64 SCNo64
-# endif
-# if !defined SCNuLEAST64 || @PRI_MACROS_BROKEN@
-#  undef SCNuLEAST64
-#  define SCNuLEAST64 SCNu64
-# endif
-# if !defined SCNxLEAST64 || @PRI_MACROS_BROKEN@
-#  undef SCNxLEAST64
-#  define SCNxLEAST64 SCNx64
-# endif
-#endif
-
-#if !defined SCNdFAST8 || @PRI_MACROS_BROKEN@
-# undef SCNdFAST8
-# if INT_FAST8_MAX > INT32_MAX
-#  define SCNdFAST8 SCNd64
-# elif INT_FAST8_MAX == 0x7fff
-#  define SCNdFAST8 "hd"
-# elif INT_FAST8_MAX == 0x7f
-#  define SCNdFAST8 "hhd"
-# else
-#  define SCNdFAST8 "d"
-# endif
-#endif
-#if !defined SCNiFAST8 || @PRI_MACROS_BROKEN@
-# undef SCNiFAST8
-# if INT_FAST8_MAX > INT32_MAX
-#  define SCNiFAST8 SCNi64
-# elif INT_FAST8_MAX == 0x7fff
-#  define SCNiFAST8 "hi"
-# elif INT_FAST8_MAX == 0x7f
-#  define SCNiFAST8 "hhi"
-# else
-#  define SCNiFAST8 "i"
-# endif
-#endif
-#if !defined SCNoFAST8 || @PRI_MACROS_BROKEN@
-# undef SCNoFAST8
-# if UINT_FAST8_MAX > UINT32_MAX
-#  define SCNoFAST8 SCNo64
-# elif UINT_FAST8_MAX == 0xffff
-#  define SCNoFAST8 "ho"
-# elif UINT_FAST8_MAX == 0xff
-#  define SCNoFAST8 "hho"
-# else
-#  define SCNoFAST8 "o"
-# endif
-#endif
-#if !defined SCNuFAST8 || @PRI_MACROS_BROKEN@
-# undef SCNuFAST8
-# if UINT_FAST8_MAX > UINT32_MAX
-#  define SCNuFAST8 SCNu64
-# elif UINT_FAST8_MAX == 0xffff
-#  define SCNuFAST8 "hu"
-# elif UINT_FAST8_MAX == 0xff
-#  define SCNuFAST8 "hhu"
-# else
-#  define SCNuFAST8 "u"
-# endif
-#endif
-#if !defined SCNxFAST8 || @PRI_MACROS_BROKEN@
-# undef SCNxFAST8
-# if UINT_FAST8_MAX > UINT32_MAX
-#  define SCNxFAST8 SCNx64
-# elif UINT_FAST8_MAX == 0xffff
-#  define SCNxFAST8 "hx"
-# elif UINT_FAST8_MAX == 0xff
-#  define SCNxFAST8 "hhx"
-# else
-#  define SCNxFAST8 "x"
-# endif
-#endif
-#if !defined SCNdFAST16 || @PRI_MACROS_BROKEN@
-# undef SCNdFAST16
-# if INT_FAST16_MAX > INT32_MAX
-#  define SCNdFAST16 SCNd64
-# elif INT_FAST16_MAX == 0x7fff
-#  define SCNdFAST16 "hd"
-# else
-#  define SCNdFAST16 "d"
-# endif
-#endif
-#if !defined SCNiFAST16 || @PRI_MACROS_BROKEN@
-# undef SCNiFAST16
-# if INT_FAST16_MAX > INT32_MAX
-#  define SCNiFAST16 SCNi64
-# elif INT_FAST16_MAX == 0x7fff
-#  define SCNiFAST16 "hi"
-# else
-#  define SCNiFAST16 "i"
-# endif
-#endif
-#if !defined SCNoFAST16 || @PRI_MACROS_BROKEN@
-# undef SCNoFAST16
-# if UINT_FAST16_MAX > UINT32_MAX
-#  define SCNoFAST16 SCNo64
-# elif UINT_FAST16_MAX == 0xffff
-#  define SCNoFAST16 "ho"
-# else
-#  define SCNoFAST16 "o"
-# endif
-#endif
-#if !defined SCNuFAST16 || @PRI_MACROS_BROKEN@
-# undef SCNuFAST16
-# if UINT_FAST16_MAX > UINT32_MAX
-#  define SCNuFAST16 SCNu64
-# elif UINT_FAST16_MAX == 0xffff
-#  define SCNuFAST16 "hu"
-# else
-#  define SCNuFAST16 "u"
-# endif
-#endif
-#if !defined SCNxFAST16 || @PRI_MACROS_BROKEN@
-# undef SCNxFAST16
-# if UINT_FAST16_MAX > UINT32_MAX
-#  define SCNxFAST16 SCNx64
-# elif UINT_FAST16_MAX == 0xffff
-#  define SCNxFAST16 "hx"
-# else
-#  define SCNxFAST16 "x"
-# endif
-#endif
-#if !defined SCNdFAST32 || @PRI_MACROS_BROKEN@
-# undef SCNdFAST32
-# if INT_FAST32_MAX > INT32_MAX
-#  define SCNdFAST32 SCNd64
-# else
-#  define SCNdFAST32 "d"
-# endif
-#endif
-#if !defined SCNiFAST32 || @PRI_MACROS_BROKEN@
-# undef SCNiFAST32
-# if INT_FAST32_MAX > INT32_MAX
-#  define SCNiFAST32 SCNi64
-# else
-#  define SCNiFAST32 "i"
-# endif
-#endif
-#if !defined SCNoFAST32 || @PRI_MACROS_BROKEN@
-# undef SCNoFAST32
-# if UINT_FAST32_MAX > UINT32_MAX
-#  define SCNoFAST32 SCNo64
-# else
-#  define SCNoFAST32 "o"
-# endif
-#endif
-#if !defined SCNuFAST32 || @PRI_MACROS_BROKEN@
-# undef SCNuFAST32
-# if UINT_FAST32_MAX > UINT32_MAX
-#  define SCNuFAST32 SCNu64
-# else
-#  define SCNuFAST32 "u"
-# endif
-#endif
-#if !defined SCNxFAST32 || @PRI_MACROS_BROKEN@
-# undef SCNxFAST32
-# if UINT_FAST32_MAX > UINT32_MAX
-#  define SCNxFAST32 SCNx64
-# else
-#  define SCNxFAST32 "x"
-# endif
-#endif
-#ifdef INT64_MAX
-# if !defined SCNdFAST64 || @PRI_MACROS_BROKEN@
-#  undef SCNdFAST64
-#  define SCNdFAST64 SCNd64
-# endif
-# if !defined SCNiFAST64 || @PRI_MACROS_BROKEN@
-#  undef SCNiFAST64
-#  define SCNiFAST64 SCNi64
-# endif
-#endif
-#ifdef UINT64_MAX
-# if !defined SCNoFAST64 || @PRI_MACROS_BROKEN@
-#  undef SCNoFAST64
-#  define SCNoFAST64 SCNo64
-# endif
-# if !defined SCNuFAST64 || @PRI_MACROS_BROKEN@
-#  undef SCNuFAST64
-#  define SCNuFAST64 SCNu64
-# endif
-# if !defined SCNxFAST64 || @PRI_MACROS_BROKEN@
-#  undef SCNxFAST64
-#  define SCNxFAST64 SCNx64
-# endif
-#endif
-
-#if !defined SCNdMAX || @PRI_MACROS_BROKEN@
-# undef SCNdMAX
-# if @INT32_MAX_LT_INTMAX_MAX@
-#  define SCNdMAX SCNd64
-# else
-#  define SCNdMAX "ld"
-# endif
-#endif
-#if !defined SCNiMAX || @PRI_MACROS_BROKEN@
-# undef SCNiMAX
-# if @INT32_MAX_LT_INTMAX_MAX@
-#  define SCNiMAX SCNi64
-# else
-#  define SCNiMAX "li"
-# endif
-#endif
-#if !defined SCNoMAX || @PRI_MACROS_BROKEN@
-# undef SCNoMAX
-# if @UINT32_MAX_LT_UINTMAX_MAX@
-#  define SCNoMAX SCNo64
-# else
-#  define SCNoMAX "lo"
-# endif
-#endif
-#if !defined SCNuMAX || @PRI_MACROS_BROKEN@
-# undef SCNuMAX
-# if @UINT32_MAX_LT_UINTMAX_MAX@
-#  define SCNuMAX SCNu64
-# else
-#  define SCNuMAX "lu"
-# endif
-#endif
-#if !defined SCNxMAX || @PRI_MACROS_BROKEN@
-# undef SCNxMAX
-# if @UINT32_MAX_LT_UINTMAX_MAX@
-#  define SCNxMAX SCNx64
-# else
-#  define SCNxMAX "lx"
-# endif
-#endif
-
-#if !defined SCNdPTR || @PRI_MACROS_BROKEN@
-# undef SCNdPTR
-# ifdef INTPTR_MAX
-#  define SCNdPTR @PRIPTR_PREFIX@ "d"
-# endif
-#endif
-#if !defined SCNiPTR || @PRI_MACROS_BROKEN@
-# undef SCNiPTR
-# ifdef INTPTR_MAX
-#  define SCNiPTR @PRIPTR_PREFIX@ "i"
-# endif
-#endif
-#if !defined SCNoPTR || @PRI_MACROS_BROKEN@
-# undef SCNoPTR
-# ifdef UINTPTR_MAX
-#  define SCNoPTR @PRIPTR_PREFIX@ "o"
-# endif
-#endif
-#if !defined SCNuPTR || @PRI_MACROS_BROKEN@
-# undef SCNuPTR
-# ifdef UINTPTR_MAX
-#  define SCNuPTR @PRIPTR_PREFIX@ "u"
-# endif
-#endif
-#if !defined SCNxPTR || @PRI_MACROS_BROKEN@
-# undef SCNxPTR
-# ifdef UINTPTR_MAX
-#  define SCNxPTR @PRIPTR_PREFIX@ "x"
-# endif
-#endif
-
-/* 7.8.2 Functions for greatest-width integer types */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#if @GNULIB_IMAXABS@
-# if !@HAVE_DECL_IMAXABS@
-extern intmax_t imaxabs (intmax_t);
-# endif
-#elif defined GNULIB_POSIXCHECK
-# undef imaxabs
-# if HAVE_RAW_DECL_IMAXABS
-_GL_WARN_ON_USE (imaxabs, "imaxabs is unportable - "
-                 "use gnulib module imaxabs for portability");
-# endif
-#endif
-
-#if @GNULIB_IMAXDIV@
-# if !@HAVE_DECL_IMAXDIV@
-#  if !GNULIB_defined_imaxdiv_t
-typedef struct { intmax_t quot; intmax_t rem; } imaxdiv_t;
-#   define GNULIB_defined_imaxdiv_t 1
-#  endif
-extern imaxdiv_t imaxdiv (intmax_t, intmax_t);
-# endif
-#elif defined GNULIB_POSIXCHECK
-# undef imaxdiv
-# if HAVE_RAW_DECL_IMAXDIV
-_GL_WARN_ON_USE (imaxdiv, "imaxdiv is unportable - "
-                 "use gnulib module imaxdiv for portability");
-# endif
-#endif
-
-#if @GNULIB_STRTOIMAX@
-# if @REPLACE_STRTOIMAX@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef strtoimax
-#   define strtoimax rpl_strtoimax
-#  endif
-_GL_FUNCDECL_RPL (strtoimax, intmax_t,
-                  (const char *, char **, int) _GL_ARG_NONNULL ((1)));
-_GL_CXXALIAS_RPL (strtoimax, intmax_t, (const char *, char **, int));
-# else
-#  if !@HAVE_DECL_STRTOIMAX@
-#   undef strtoimax
-_GL_FUNCDECL_SYS (strtoimax, intmax_t,
-                  (const char *, char **, int) _GL_ARG_NONNULL ((1)));
-#  endif
-_GL_CXXALIAS_SYS (strtoimax, intmax_t, (const char *, char **, int));
-# endif
-_GL_CXXALIASWARN (strtoimax);
-#elif defined GNULIB_POSIXCHECK
-# undef strtoimax
-# if HAVE_RAW_DECL_STRTOIMAX
-_GL_WARN_ON_USE (strtoimax, "strtoimax is unportable - "
-                 "use gnulib module strtoimax for portability");
-# endif
-#endif
-
-#if @GNULIB_STRTOUMAX@
-# if !@HAVE_DECL_STRTOUMAX@
-#  undef strtoumax
-_GL_FUNCDECL_SYS (strtoumax, uintmax_t,
-                  (const char *, char **, int) _GL_ARG_NONNULL ((1)));
-# endif
-_GL_CXXALIAS_SYS (strtoumax, uintmax_t, (const char *, char **, int));
-_GL_CXXALIASWARN (strtoumax);
-#elif defined GNULIB_POSIXCHECK
-# undef strtoumax
-# if HAVE_RAW_DECL_STRTOUMAX
-_GL_WARN_ON_USE (strtoumax, "strtoumax is unportable - "
-                 "use gnulib module strtoumax for portability");
-# endif
-#endif
-
-/* Don't bother defining or declaring wcstoimax and wcstoumax, since
-   wide-character functions like this are hardly ever useful.  */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* !defined INTTYPES_H && !defined _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H */
diff --git a/src/libs/gnulib/lib/localcharset.c b/src/libs/gnulib/lib/localcharset.c
deleted file mode 100644 (file)
index 1c17af0..0000000
+++ /dev/null
@@ -1,579 +0,0 @@
-/* Determine a canonical name for the current locale's character encoding.
-
-   Copyright (C) 2000-2006, 2008-2014 Free Software Foundation, Inc.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License along
-   with this program; if not, see <http://www.gnu.org/licenses/>.  */
-
-/* Written by Bruno Haible <bruno@clisp.org>.  */
-
-#include <config.h>
-
-/* Specification.  */
-#include "localcharset.h"
-
-#include <fcntl.h>
-#include <stddef.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-
-#if defined __APPLE__ && defined __MACH__ && HAVE_LANGINFO_CODESET
-# define DARWIN7 /* Darwin 7 or newer, i.e. Mac OS X 10.3 or newer */
-#endif
-
-#if defined _WIN32 || defined __WIN32__
-# define WINDOWS_NATIVE
-# include <locale.h>
-#endif
-
-#if defined __EMX__
-/* Assume EMX program runs on OS/2, even if compiled under DOS.  */
-# ifndef OS2
-#  define OS2
-# endif
-#endif
-
-#if !defined WINDOWS_NATIVE
-# include <unistd.h>
-# if HAVE_LANGINFO_CODESET
-#  include <langinfo.h>
-# else
-#  if 0 /* see comment below */
-#   include <locale.h>
-#  endif
-# endif
-# ifdef __CYGWIN__
-#  define WIN32_LEAN_AND_MEAN
-#  include <windows.h>
-# endif
-#elif defined WINDOWS_NATIVE
-# define WIN32_LEAN_AND_MEAN
-# include <windows.h>
-#endif
-#if defined OS2
-# define INCL_DOS
-# include <os2.h>
-#endif
-
-/* For MB_CUR_MAX_L */
-#if defined DARWIN7
-# include <xlocale.h>
-#endif
-
-#if ENABLE_RELOCATABLE
-# include "relocatable.h"
-#else
-# define relocate(pathname) (pathname)
-#endif
-
-/* Get LIBDIR.  */
-#ifndef LIBDIR
-# include "configmake.h"
-#endif
-
-/* Define O_NOFOLLOW to 0 on platforms where it does not exist.  */
-#ifndef O_NOFOLLOW
-# define O_NOFOLLOW 0
-#endif
-
-#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ || defined __EMX__ || defined __DJGPP__
-  /* Native Windows, Cygwin, OS/2, DOS */
-# define ISSLASH(C) ((C) == '/' || (C) == '\\')
-#endif
-
-#ifndef DIRECTORY_SEPARATOR
-# define DIRECTORY_SEPARATOR '/'
-#endif
-
-#ifndef ISSLASH
-# define ISSLASH(C) ((C) == DIRECTORY_SEPARATOR)
-#endif
-
-#if HAVE_DECL_GETC_UNLOCKED
-# undef getc
-# define getc getc_unlocked
-#endif
-
-/* The following static variable is declared 'volatile' to avoid a
-   possible multithread problem in the function get_charset_aliases. If we
-   are running in a threaded environment, and if two threads initialize
-   'charset_aliases' simultaneously, both will produce the same value,
-   and everything will be ok if the two assignments to 'charset_aliases'
-   are atomic. But I don't know what will happen if the two assignments mix.  */
-#if __STDC__ != 1
-# define volatile /* empty */
-#endif
-/* Pointer to the contents of the charset.alias file, if it has already been
-   read, else NULL.  Its format is:
-   ALIAS_1 '\0' CANONICAL_1 '\0' ... ALIAS_n '\0' CANONICAL_n '\0' '\0'  */
-static const char * volatile charset_aliases;
-
-/* Return a pointer to the contents of the charset.alias file.  */
-static const char *
-get_charset_aliases (void)
-{
-  const char *cp;
-
-  cp = charset_aliases;
-  if (cp == NULL)
-    {
-#if !(defined DARWIN7 || defined VMS || defined WINDOWS_NATIVE || defined __CYGWIN__)
-      const char *dir;
-      const char *base = "charset.alias";
-      char *file_name;
-
-      /* Make it possible to override the charset.alias location.  This is
-         necessary for running the testsuite before "make install".  */
-      dir = getenv ("CHARSETALIASDIR");
-      if (dir == NULL || dir[0] == '\0')
-        dir = relocate (LIBDIR);
-
-      /* Concatenate dir and base into freshly allocated file_name.  */
-      {
-        size_t dir_len = strlen (dir);
-        size_t base_len = strlen (base);
-        int add_slash = (dir_len > 0 && !ISSLASH (dir[dir_len - 1]));
-        file_name = (char *) malloc (dir_len + add_slash + base_len + 1);
-        if (file_name != NULL)
-          {
-            memcpy (file_name, dir, dir_len);
-            if (add_slash)
-              file_name[dir_len] = DIRECTORY_SEPARATOR;
-            memcpy (file_name + dir_len + add_slash, base, base_len + 1);
-          }
-      }
-
-      if (file_name == NULL)
-        /* Out of memory.  Treat the file as empty.  */
-        cp = "";
-      else
-        {
-          int fd;
-
-          /* Open the file.  Reject symbolic links on platforms that support
-             O_NOFOLLOW.  This is a security feature.  Without it, an attacker
-             could retrieve parts of the contents (namely, the tail of the
-             first line that starts with "* ") of an arbitrary file by placing
-             a symbolic link to that file under the name "charset.alias" in
-             some writable directory and defining the environment variable
-             CHARSETALIASDIR to point to that directory.  */
-          fd = open (file_name,
-                     O_RDONLY | (HAVE_WORKING_O_NOFOLLOW ? O_NOFOLLOW : 0));
-          if (fd < 0)
-            /* File not found.  Treat it as empty.  */
-            cp = "";
-          else
-            {
-              FILE *fp;
-
-              fp = fdopen (fd, "r");
-              if (fp == NULL)
-                {
-                  /* Out of memory.  Treat the file as empty.  */
-                  close (fd);
-                  cp = "";
-                }
-              else
-                {
-                  /* Parse the file's contents.  */
-                  char *res_ptr = NULL;
-                  size_t res_size = 0;
-
-                  for (;;)
-                    {
-                      int c;
-                      char buf1[50+1];
-                      char buf2[50+1];
-                      size_t l1, l2;
-                      char *old_res_ptr;
-
-                      c = getc (fp);
-                      if (c == EOF)
-                        break;
-                      if (c == '\n' || c == ' ' || c == '\t')
-                        continue;
-                      if (c == '#')
-                        {
-                          /* Skip comment, to end of line.  */
-                          do
-                            c = getc (fp);
-                          while (!(c == EOF || c == '\n'));
-                          if (c == EOF)
-                            break;
-                          continue;
-                        }
-                      ungetc (c, fp);
-                      if (fscanf (fp, "%50s %50s", buf1, buf2) < 2)
-                        break;
-                      l1 = strlen (buf1);
-                      l2 = strlen (buf2);
-                      old_res_ptr = res_ptr;
-                      if (res_size == 0)
-                        {
-                          res_size = l1 + 1 + l2 + 1;
-                          res_ptr = (char *) malloc (res_size + 1);
-                        }
-                      else
-                        {
-                          res_size += l1 + 1 + l2 + 1;
-                          res_ptr = (char *) realloc (res_ptr, res_size + 1);
-                        }
-                      if (res_ptr == NULL)
-                        {
-                          /* Out of memory. */
-                          res_size = 0;
-                          free (old_res_ptr);
-                          break;
-                        }
-                      strcpy (res_ptr + res_size - (l2 + 1) - (l1 + 1), buf1);
-                      strcpy (res_ptr + res_size - (l2 + 1), buf2);
-                    }
-                  fclose (fp);
-                  if (res_size == 0)
-                    cp = "";
-                  else
-                    {
-                      *(res_ptr + res_size) = '\0';
-                      cp = res_ptr;
-                    }
-                }
-            }
-
-          free (file_name);
-        }
-
-#else
-
-# if defined DARWIN7
-      /* To avoid the trouble of installing a file that is shared by many
-         GNU packages -- many packaging systems have problems with this --,
-         simply inline the aliases here.  */
-      cp = "ISO8859-1" "\0" "ISO-8859-1" "\0"
-           "ISO8859-2" "\0" "ISO-8859-2" "\0"
-           "ISO8859-4" "\0" "ISO-8859-4" "\0"
-           "ISO8859-5" "\0" "ISO-8859-5" "\0"
-           "ISO8859-7" "\0" "ISO-8859-7" "\0"
-           "ISO8859-9" "\0" "ISO-8859-9" "\0"
-           "ISO8859-13" "\0" "ISO-8859-13" "\0"
-           "ISO8859-15" "\0" "ISO-8859-15" "\0"
-           "KOI8-R" "\0" "KOI8-R" "\0"
-           "KOI8-U" "\0" "KOI8-U" "\0"
-           "CP866" "\0" "CP866" "\0"
-           "CP949" "\0" "CP949" "\0"
-           "CP1131" "\0" "CP1131" "\0"
-           "CP1251" "\0" "CP1251" "\0"
-           "eucCN" "\0" "GB2312" "\0"
-           "GB2312" "\0" "GB2312" "\0"
-           "eucJP" "\0" "EUC-JP" "\0"
-           "eucKR" "\0" "EUC-KR" "\0"
-           "Big5" "\0" "BIG5" "\0"
-           "Big5HKSCS" "\0" "BIG5-HKSCS" "\0"
-           "GBK" "\0" "GBK" "\0"
-           "GB18030" "\0" "GB18030" "\0"
-           "SJIS" "\0" "SHIFT_JIS" "\0"
-           "ARMSCII-8" "\0" "ARMSCII-8" "\0"
-           "PT154" "\0" "PT154" "\0"
-         /*"ISCII-DEV" "\0" "?" "\0"*/
-           "*" "\0" "UTF-8" "\0";
-# endif
-
-# if defined VMS
-      /* To avoid the troubles of an extra file charset.alias_vms in the
-         sources of many GNU packages, simply inline the aliases here.  */
-      /* The list of encodings is taken from the OpenVMS 7.3-1 documentation
-         "Compaq C Run-Time Library Reference Manual for OpenVMS systems"
-         section 10.7 "Handling Different Character Sets".  */
-      cp = "ISO8859-1" "\0" "ISO-8859-1" "\0"
-           "ISO8859-2" "\0" "ISO-8859-2" "\0"
-           "ISO8859-5" "\0" "ISO-8859-5" "\0"
-           "ISO8859-7" "\0" "ISO-8859-7" "\0"
-           "ISO8859-8" "\0" "ISO-8859-8" "\0"
-           "ISO8859-9" "\0" "ISO-8859-9" "\0"
-           /* Japanese */
-           "eucJP" "\0" "EUC-JP" "\0"
-           "SJIS" "\0" "SHIFT_JIS" "\0"
-           "DECKANJI" "\0" "DEC-KANJI" "\0"
-           "SDECKANJI" "\0" "EUC-JP" "\0"
-           /* Chinese */
-           "eucTW" "\0" "EUC-TW" "\0"
-           "DECHANYU" "\0" "DEC-HANYU" "\0"
-           "DECHANZI" "\0" "GB2312" "\0"
-           /* Korean */
-           "DECKOREAN" "\0" "EUC-KR" "\0";
-# endif
-
-# if defined WINDOWS_NATIVE || defined __CYGWIN__
-      /* To avoid the troubles of installing a separate file in the same
-         directory as the DLL and of retrieving the DLL's directory at
-         runtime, simply inline the aliases here.  */
-
-      cp = "CP936" "\0" "GBK" "\0"
-           "CP1361" "\0" "JOHAB" "\0"
-           "CP20127" "\0" "ASCII" "\0"
-           "CP20866" "\0" "KOI8-R" "\0"
-           "CP20936" "\0" "GB2312" "\0"
-           "CP21866" "\0" "KOI8-RU" "\0"
-           "CP28591" "\0" "ISO-8859-1" "\0"
-           "CP28592" "\0" "ISO-8859-2" "\0"
-           "CP28593" "\0" "ISO-8859-3" "\0"
-           "CP28594" "\0" "ISO-8859-4" "\0"
-           "CP28595" "\0" "ISO-8859-5" "\0"
-           "CP28596" "\0" "ISO-8859-6" "\0"
-           "CP28597" "\0" "ISO-8859-7" "\0"
-           "CP28598" "\0" "ISO-8859-8" "\0"
-           "CP28599" "\0" "ISO-8859-9" "\0"
-           "CP28605" "\0" "ISO-8859-15" "\0"
-           "CP38598" "\0" "ISO-8859-8" "\0"
-           "CP51932" "\0" "EUC-JP" "\0"
-           "CP51936" "\0" "GB2312" "\0"
-           "CP51949" "\0" "EUC-KR" "\0"
-           "CP51950" "\0" "EUC-TW" "\0"
-           "CP54936" "\0" "GB18030" "\0"
-           "CP65001" "\0" "UTF-8" "\0";
-# endif
-#endif
-
-      charset_aliases = cp;
-    }
-
-  return cp;
-}
-
-/* Determine the current locale's character encoding, and canonicalize it
-   into one of the canonical names listed in config.charset.
-   The result must not be freed; it is statically allocated.
-   If the canonical name cannot be determined, the result is a non-canonical
-   name.  */
-
-#ifdef STATIC
-STATIC
-#endif
-const char *
-locale_charset (void)
-{
-  const char *codeset;
-  const char *aliases;
-
-#if !(defined WINDOWS_NATIVE || defined OS2)
-
-# if HAVE_LANGINFO_CODESET
-
-  /* Most systems support nl_langinfo (CODESET) nowadays.  */
-  codeset = nl_langinfo (CODESET);
-
-#  ifdef __CYGWIN__
-  /* Cygwin < 1.7 does not have locales.  nl_langinfo (CODESET) always
-     returns "US-ASCII".  Return the suffix of the locale name from the
-     environment variables (if present) or the codepage as a number.  */
-  if (codeset != NULL && strcmp (codeset, "US-ASCII") == 0)
-    {
-      const char *locale;
-      static char buf[2 + 10 + 1];
-
-      locale = getenv ("LC_ALL");
-      if (locale == NULL || locale[0] == '\0')
-        {
-          locale = getenv ("LC_CTYPE");
-          if (locale == NULL || locale[0] == '\0')
-            locale = getenv ("LANG");
-        }
-      if (locale != NULL && locale[0] != '\0')
-        {
-          /* If the locale name contains an encoding after the dot, return
-             it.  */
-          const char *dot = strchr (locale, '.');
-
-          if (dot != NULL)
-            {
-              const char *modifier;
-
-              dot++;
-              /* Look for the possible @... trailer and remove it, if any.  */
-              modifier = strchr (dot, '@');
-              if (modifier == NULL)
-                return dot;
-              if (modifier - dot < sizeof (buf))
-                {
-                  memcpy (buf, dot, modifier - dot);
-                  buf [modifier - dot] = '\0';
-                  return buf;
-                }
-            }
-        }
-
-      /* The Windows API has a function returning the locale's codepage as a
-         number: GetACP().  This encoding is used by Cygwin, unless the user
-         has set the environment variable CYGWIN=codepage:oem (which very few
-         people do).
-         Output directed to console windows needs to be converted (to
-         GetOEMCP() if the console is using a raster font, or to
-         GetConsoleOutputCP() if it is using a TrueType font).  Cygwin does
-         this conversion transparently (see winsup/cygwin/fhandler_console.cc),
-         converting to GetConsoleOutputCP().  This leads to correct results,
-         except when SetConsoleOutputCP has been called and a raster font is
-         in use.  */
-      sprintf (buf, "CP%u", GetACP ());
-      codeset = buf;
-    }
-#  endif
-
-# else
-
-  /* On old systems which lack it, use setlocale or getenv.  */
-  const char *locale = NULL;
-
-  /* But most old systems don't have a complete set of locales.  Some
-     (like SunOS 4 or DJGPP) have only the C locale.  Therefore we don't
-     use setlocale here; it would return "C" when it doesn't support the
-     locale name the user has set.  */
-#  if 0
-  locale = setlocale (LC_CTYPE, NULL);
-#  endif
-  if (locale == NULL || locale[0] == '\0')
-    {
-      locale = getenv ("LC_ALL");
-      if (locale == NULL || locale[0] == '\0')
-        {
-          locale = getenv ("LC_CTYPE");
-          if (locale == NULL || locale[0] == '\0')
-            locale = getenv ("LANG");
-        }
-    }
-
-  /* On some old systems, one used to set locale = "iso8859_1". On others,
-     you set it to "language_COUNTRY.charset". In any case, we resolve it
-     through the charset.alias file.  */
-  codeset = locale;
-
-# endif
-
-#elif defined WINDOWS_NATIVE
-
-  static char buf[2 + 10 + 1];
-
-  /* The Windows API has a function returning the locale's codepage as
-     a number, but the value doesn't change according to what the
-     'setlocale' call specified.  So we use it as a last resort, in
-     case the string returned by 'setlocale' doesn't specify the
-     codepage.  */
-  char *current_locale = setlocale (LC_ALL, NULL);
-  char *pdot;
-
-  /* If they set different locales for different categories,
-     'setlocale' will return a semi-colon separated list of locale
-     values.  To make sure we use the correct one, we choose LC_CTYPE.  */
-  if (strchr (current_locale, ';'))
-    current_locale = setlocale (LC_CTYPE, NULL);
-
-  pdot = strrchr (current_locale, '.');
-  if (pdot)
-    sprintf (buf, "CP%s", pdot + 1);
-  else
-    {
-      /* The Windows API has a function returning the locale's codepage as a
-        number: GetACP().
-        When the output goes to a console window, it needs to be provided in
-        GetOEMCP() encoding if the console is using a raster font, or in
-        GetConsoleOutputCP() encoding if it is using a TrueType font.
-        But in GUI programs and for output sent to files and pipes, GetACP()
-        encoding is the best bet.  */
-      sprintf (buf, "CP%u", GetACP ());
-    }
-  codeset = buf;
-
-#elif defined OS2
-
-  const char *locale;
-  static char buf[2 + 10 + 1];
-  ULONG cp[3];
-  ULONG cplen;
-
-  /* Allow user to override the codeset, as set in the operating system,
-     with standard language environment variables.  */
-  locale = getenv ("LC_ALL");
-  if (locale == NULL || locale[0] == '\0')
-    {
-      locale = getenv ("LC_CTYPE");
-      if (locale == NULL || locale[0] == '\0')
-        locale = getenv ("LANG");
-    }
-  if (locale != NULL && locale[0] != '\0')
-    {
-      /* If the locale name contains an encoding after the dot, return it.  */
-      const char *dot = strchr (locale, '.');
-
-      if (dot != NULL)
-        {
-          const char *modifier;
-
-          dot++;
-          /* Look for the possible @... trailer and remove it, if any.  */
-          modifier = strchr (dot, '@');
-          if (modifier == NULL)
-            return dot;
-          if (modifier - dot < sizeof (buf))
-            {
-              memcpy (buf, dot, modifier - dot);
-              buf [modifier - dot] = '\0';
-              return buf;
-            }
-        }
-
-      /* Resolve through the charset.alias file.  */
-      codeset = locale;
-    }
-  else
-    {
-      /* OS/2 has a function returning the locale's codepage as a number.  */
-      if (DosQueryCp (sizeof (cp), cp, &cplen))
-        codeset = "";
-      else
-        {
-          sprintf (buf, "CP%u", cp[0]);
-          codeset = buf;
-        }
-    }
-
-#endif
-
-  if (codeset == NULL)
-    /* The canonical name cannot be determined.  */
-    codeset = "";
-
-  /* Resolve alias. */
-  for (aliases = get_charset_aliases ();
-       *aliases != '\0';
-       aliases += strlen (aliases) + 1, aliases += strlen (aliases) + 1)
-    if (strcmp (codeset, aliases) == 0
-        || (aliases[0] == '*' && aliases[1] == '\0'))
-      {
-        codeset = aliases + strlen (aliases) + 1;
-        break;
-      }
-
-  /* Don't return an empty string.  GNU libc and GNU libiconv interpret
-     the empty string as denoting "the locale's character encoding",
-     thus GNU libiconv would call this function a second time.  */
-  if (codeset[0] == '\0')
-    codeset = "ASCII";
-
-#ifdef DARWIN7
-  /* Mac OS X sets MB_CUR_MAX to 1 when LC_ALL=C, and "UTF-8"
-     (the default codeset) does not work when MB_CUR_MAX is 1.  */
-  if (strcmp (codeset, "UTF-8") == 0 && MB_CUR_MAX_L (uselocale (NULL)) <= 1)
-    codeset = "ASCII";
-#endif
-
-  return codeset;
-}
diff --git a/src/libs/gnulib/lib/localcharset.h b/src/libs/gnulib/lib/localcharset.h
deleted file mode 100644 (file)
index 795a930..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Determine a canonical name for the current locale's character encoding.
-   Copyright (C) 2000-2003, 2009-2014 Free Software Foundation, Inc.
-   This file is part of the GNU CHARSET Library.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License along
-   with this program; if not, see <http://www.gnu.org/licenses/>.  */
-
-#ifndef _LOCALCHARSET_H
-#define _LOCALCHARSET_H
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* Determine the current locale's character encoding, and canonicalize it
-   into one of the canonical names listed in config.charset.
-   The result must not be freed; it is statically allocated.
-   If the canonical name cannot be determined, the result is a non-canonical
-   name.  */
-extern const char * locale_charset (void);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-
-#endif /* _LOCALCHARSET_H */
diff --git a/src/libs/gnulib/lib/ref-add.sin b/src/libs/gnulib/lib/ref-add.sin
deleted file mode 100644 (file)
index 4379dfe..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-# Add this package to a list of references stored in a text file.
-#
-#   Copyright (C) 2000, 2009-2014 Free Software Foundation, Inc.
-#
-#   This program is free software; you can redistribute it and/or modify
-#   it under the terms of the GNU General Public License as published by
-#   the Free Software Foundation; either version 2, or (at your option)
-#   any later version.
-#
-#   This program is distributed in the hope that it will be useful,
-#   but WITHOUT ANY WARRANTY; without even the implied warranty of
-#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#   GNU General Public License for more details.
-#
-#   You should have received a copy of the GNU General Public License along
-#   with this program; if not, see <http://www.gnu.org/licenses/>.
-#
-# Written by Bruno Haible <haible@clisp.cons.org>.
-#
-/^# Packages using this file: / {
-  s/# Packages using this file://
-  ta
-  :a
-  s/ @PACKAGE@ / @PACKAGE@ /
-  tb
-  s/ $/ @PACKAGE@ /
-  :b
-  s/^/# Packages using this file:/
-}
diff --git a/src/libs/gnulib/lib/ref-del.sin b/src/libs/gnulib/lib/ref-del.sin
deleted file mode 100644 (file)
index d36b125..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-# Remove this package from a list of references stored in a text file.
-#
-#   Copyright (C) 2000, 2009-2014 Free Software Foundation, Inc.
-#
-#   This program is free software; you can redistribute it and/or modify
-#   it under the terms of the GNU General Public License as published by
-#   the Free Software Foundation; either version 2, or (at your option)
-#   any later version.
-#
-#   This program is distributed in the hope that it will be useful,
-#   but WITHOUT ANY WARRANTY; without even the implied warranty of
-#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#   GNU General Public License for more details.
-#
-#   You should have received a copy of the GNU General Public License along
-#   with this program; if not, see <http://www.gnu.org/licenses/>.
-#
-# Written by Bruno Haible <haible@clisp.cons.org>.
-#
-/^# Packages using this file: / {
-  s/# Packages using this file://
-  s/ @PACKAGE@ / /
-  s/^/# Packages using this file:/
-}
diff --git a/src/libs/gnulib/lib/stdbool.in.h b/src/libs/gnulib/lib/stdbool.in.h
deleted file mode 100644 (file)
index 4a6d7ba..0000000
+++ /dev/null
@@ -1,132 +0,0 @@
-/* Copyright (C) 2001-2003, 2006-2014 Free Software Foundation, Inc.
-   Written by Bruno Haible <haible@clisp.cons.org>, 2001.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, see <http://www.gnu.org/licenses/>.  */
-
-#ifndef _GL_STDBOOL_H
-#define _GL_STDBOOL_H
-
-/* ISO C 99 <stdbool.h> for platforms that lack it.  */
-
-/* Usage suggestions:
-
-   Programs that use <stdbool.h> should be aware of some limitations
-   and standards compliance issues.
-
-   Standards compliance:
-
-       - <stdbool.h> must be #included before 'bool', 'false', 'true'
-         can be used.
-
-       - You cannot assume that sizeof (bool) == 1.
-
-       - Programs should not undefine the macros bool, true, and false,
-         as C99 lists that as an "obsolescent feature".
-
-   Limitations of this substitute, when used in a C89 environment:
-
-       - <stdbool.h> must be #included before the '_Bool' type can be used.
-
-       - You cannot assume that _Bool is a typedef; it might be a macro.
-
-       - Bit-fields of type 'bool' are not supported.  Portable code
-         should use 'unsigned int foo : 1;' rather than 'bool foo : 1;'.
-
-       - In C99, casts and automatic conversions to '_Bool' or 'bool' are
-         performed in such a way that every nonzero value gets converted
-         to 'true', and zero gets converted to 'false'.  This doesn't work
-         with this substitute.  With this substitute, only the values 0 and 1
-         give the expected result when converted to _Bool' or 'bool'.
-
-       - C99 allows the use of (_Bool)0.0 in constant expressions, but
-         this substitute cannot always provide this property.
-
-   Also, it is suggested that programs use 'bool' rather than '_Bool';
-   this isn't required, but 'bool' is more common.  */
-
-
-/* 7.16. Boolean type and values */
-
-/* BeOS <sys/socket.h> already #defines false 0, true 1.  We use the same
-   definitions below, but temporarily we have to #undef them.  */
-#if defined __BEOS__ && !defined __HAIKU__
-# include <OS.h> /* defines bool but not _Bool */
-# undef false
-# undef true
-#endif
-
-#ifdef __cplusplus
-# define _Bool bool
-# define bool bool
-#else
-# if defined __BEOS__ && !defined __HAIKU__
-  /* A compiler known to have 'bool'.  */
-  /* If the compiler already has both 'bool' and '_Bool', we can assume they
-     are the same types.  */
-#  if !@HAVE__BOOL@
-typedef bool _Bool;
-#  endif
-# else
-#  if !defined __GNUC__
-   /* If @HAVE__BOOL@:
-        Some HP-UX cc and AIX IBM C compiler versions have compiler bugs when
-        the built-in _Bool type is used.  See
-          http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html
-          http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html
-          http://lists.gnu.org/archive/html/bug-coreutils/2005-10/msg00086.html
-        Similar bugs are likely with other compilers as well; this file
-        wouldn't be used if <stdbool.h> was working.
-        So we override the _Bool type.
-      If !@HAVE__BOOL@:
-        Need to define _Bool ourselves. As 'signed char' or as an enum type?
-        Use of a typedef, with SunPRO C, leads to a stupid
-          "warning: _Bool is a keyword in ISO C99".
-        Use of an enum type, with IRIX cc, leads to a stupid
-          "warning(1185): enumerated type mixed with another type".
-        Even the existence of an enum type, without a typedef,
-          "Invalid enumerator. (badenum)" with HP-UX cc on Tru64.
-        The only benefit of the enum, debuggability, is not important
-        with these compilers.  So use 'signed char' and no enum.  */
-#   define _Bool signed char
-#  else
-   /* With this compiler, trust the _Bool type if the compiler has it.  */
-#   if !@HAVE__BOOL@
-   /* For the sake of symbolic names in gdb, define true and false as
-      enum constants, not only as macros.
-      It is tempting to write
-         typedef enum { false = 0, true = 1 } _Bool;
-      so that gdb prints values of type 'bool' symbolically.  But then
-      values of type '_Bool' might promote to 'int' or 'unsigned int'
-      (see ISO C 99 6.7.2.2.(4)); however, '_Bool' must promote to 'int'
-      (see ISO C 99 6.3.1.1.(2)).  So add a negative value to the
-      enum; this ensures that '_Bool' promotes to 'int'.  */
-typedef enum { _Bool_must_promote_to_int = -1, false = 0, true = 1 } _Bool;
-#   endif
-#  endif
-# endif
-# define bool _Bool
-#endif
-
-/* The other macros must be usable in preprocessor directives.  */
-#ifdef __cplusplus
-# define false false
-# define true true
-#else
-# define false 0
-# define true 1
-#endif
-
-#define __bool_true_false_are_defined 1
-
-#endif /* _GL_STDBOOL_H */
diff --git a/src/libs/gnulib/lib/stdint.in.h b/src/libs/gnulib/lib/stdint.in.h
deleted file mode 100644 (file)
index 1e77b6d..0000000
+++ /dev/null
@@ -1,636 +0,0 @@
-/* Copyright (C) 2001-2014  Free Software Foundation, Inc.
-   Written by Paul Eggert, Bruno Haible, Sam Steingold, Peter Burwood.
-   This file is part of gnulib.
-
-   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, 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 <http://www.gnu.org/licenses/>.  */
-
-/*
- * ISO C 99 <stdint.h> for platforms that lack it.
- * <http://www.opengroup.org/susv3xbd/stdint.h.html>
- */
-
-#ifndef _@GUARD_PREFIX@_STDINT_H
-
-#if __GNUC__ >= 3
-@PRAGMA_SYSTEM_HEADER@
-#endif
-@PRAGMA_COLUMNS@
-
-/* When including a system file that in turn includes <inttypes.h>,
-   use the system <inttypes.h>, not our substitute.  This avoids
-   problems with (for example) VMS, whose <sys/bitypes.h> includes
-   <inttypes.h>.  */
-#define _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H
-
-/* On Android (Bionic libc), <sys/types.h> includes this file before
-   having defined 'time_t'.  Therefore in this case avoid including
-   other system header files; just include the system's <stdint.h>.
-   Ideally we should test __BIONIC__ here, but it is only defined after
-   <sys/cdefs.h> has been included; hence test __ANDROID__ instead.  */
-#if defined __ANDROID__ \
-    && defined _SYS_TYPES_H_ && !defined __need_size_t
-# @INCLUDE_NEXT@ @NEXT_STDINT_H@
-#else
-
-/* Get those types that are already defined in other system include
-   files, so that we can "#define int8_t signed char" below without
-   worrying about a later system include file containing a "typedef
-   signed char int8_t;" that will get messed up by our macro.  Our
-   macros should all be consistent with the system versions, except
-   for the "fast" types and macros, which we recommend against using
-   in public interfaces due to compiler differences.  */
-
-#if @HAVE_STDINT_H@
-# if defined __sgi && ! defined __c99
-   /* Bypass IRIX's <stdint.h> if in C89 mode, since it merely annoys users
-      with "This header file is to be used only for c99 mode compilations"
-      diagnostics.  */
-#  define __STDINT_H__
-# endif
-
-  /* Some pre-C++11 <stdint.h> implementations need this.  */
-# ifdef __cplusplus
-#  ifndef __STDC_CONSTANT_MACROS
-#   define __STDC_CONSTANT_MACROS 1
-#  endif
-#  ifndef __STDC_LIMIT_MACROS
-#   define __STDC_LIMIT_MACROS 1
-#  endif
-# endif
-
-  /* Other systems may have an incomplete or buggy <stdint.h>.
-     Include it before <inttypes.h>, since any "#include <stdint.h>"
-     in <inttypes.h> would reinclude us, skipping our contents because
-     _@GUARD_PREFIX@_STDINT_H is defined.
-     The include_next requires a split double-inclusion guard.  */
-# @INCLUDE_NEXT@ @NEXT_STDINT_H@
-#endif
-
-#if ! defined _@GUARD_PREFIX@_STDINT_H && ! defined _GL_JUST_INCLUDE_SYSTEM_STDINT_H
-#define _@GUARD_PREFIX@_STDINT_H
-
-/* <sys/types.h> defines some of the stdint.h types as well, on glibc,
-   IRIX 6.5, and OpenBSD 3.8 (via <machine/types.h>).
-   AIX 5.2 <sys/types.h> isn't needed and causes troubles.
-   Mac OS X 10.4.6 <sys/types.h> includes <stdint.h> (which is us), but
-   relies on the system <stdint.h> definitions, so include
-   <sys/types.h> after @NEXT_STDINT_H@.  */
-#if @HAVE_SYS_TYPES_H@ && ! defined _AIX
-# include <sys/types.h>
-#endif
-
-/* Get SCHAR_MIN, SCHAR_MAX, UCHAR_MAX, INT_MIN, INT_MAX,
-   LONG_MIN, LONG_MAX, ULONG_MAX.  */
-#include <limits.h>
-
-#if @HAVE_INTTYPES_H@
-  /* In OpenBSD 3.8, <inttypes.h> includes <machine/types.h>, which defines
-     int{8,16,32,64}_t, uint{8,16,32,64}_t and __BIT_TYPES_DEFINED__.
-     <inttypes.h> also defines intptr_t and uintptr_t.  */
-# include <inttypes.h>
-#elif @HAVE_SYS_INTTYPES_H@
-  /* Solaris 7 <sys/inttypes.h> has the types except the *_fast*_t types, and
-     the macros except for *_FAST*_*, INTPTR_MIN, PTRDIFF_MIN, PTRDIFF_MAX.  */
-# include <sys/inttypes.h>
-#endif
-
-#if @HAVE_SYS_BITYPES_H@ && ! defined __BIT_TYPES_DEFINED__
-  /* Linux libc4 >= 4.6.7 and libc5 have a <sys/bitypes.h> that defines
-     int{8,16,32,64}_t and __BIT_TYPES_DEFINED__.  In libc5 >= 5.2.2 it is
-     included by <sys/types.h>.  */
-# include <sys/bitypes.h>
-#endif
-
-#undef _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H
-
-/* Minimum and maximum values for an integer type under the usual assumption.
-   Return an unspecified value if BITS == 0, adding a check to pacify
-   picky compilers.  */
-
-#define _STDINT_MIN(signed, bits, zero) \
-  ((signed) ? (- ((zero) + 1) << ((bits) ? (bits) - 1 : 0)) : (zero))
-
-#define _STDINT_MAX(signed, bits, zero) \
-  ((signed) \
-   ? ~ _STDINT_MIN (signed, bits, zero) \
-   : /* The expression for the unsigned case.  The subtraction of (signed) \
-        is a nop in the unsigned case and avoids "signed integer overflow" \
-        warnings in the signed case.  */ \
-     ((((zero) + 1) << ((bits) ? (bits) - 1 - (signed) : 0)) - 1) * 2 + 1)
-
-#if !GNULIB_defined_stdint_types
-
-/* 7.18.1.1. Exact-width integer types */
-
-/* Here we assume a standard architecture where the hardware integer
-   types have 8, 16, 32, optionally 64 bits.  */
-
-#undef int8_t
-#undef uint8_t
-typedef signed char gl_int8_t;
-typedef unsigned char gl_uint8_t;
-#define int8_t gl_int8_t
-#define uint8_t gl_uint8_t
-
-#undef int16_t
-#undef uint16_t
-typedef short int gl_int16_t;
-typedef unsigned short int gl_uint16_t;
-#define int16_t gl_int16_t
-#define uint16_t gl_uint16_t
-
-#undef int32_t
-#undef uint32_t
-typedef int gl_int32_t;
-typedef unsigned int gl_uint32_t;
-#define int32_t gl_int32_t
-#define uint32_t gl_uint32_t
-
-/* If the system defines INT64_MAX, assume int64_t works.  That way,
-   if the underlying platform defines int64_t to be a 64-bit long long
-   int, the code below won't mistakenly define it to be a 64-bit long
-   int, which would mess up C++ name mangling.  We must use #ifdef
-   rather than #if, to avoid an error with HP-UX 10.20 cc.  */
-
-#ifdef INT64_MAX
-# define GL_INT64_T
-#else
-/* Do not undefine int64_t if gnulib is not being used with 64-bit
-   types, since otherwise it breaks platforms like Tandem/NSK.  */
-# if LONG_MAX >> 31 >> 31 == 1
-#  undef int64_t
-typedef long int gl_int64_t;
-#  define int64_t gl_int64_t
-#  define GL_INT64_T
-# elif defined _MSC_VER
-#  undef int64_t
-typedef __int64 gl_int64_t;
-#  define int64_t gl_int64_t
-#  define GL_INT64_T
-# elif @HAVE_LONG_LONG_INT@
-#  undef int64_t
-typedef long long int gl_int64_t;
-#  define int64_t gl_int64_t
-#  define GL_INT64_T
-# endif
-#endif
-
-#ifdef UINT64_MAX
-# define GL_UINT64_T
-#else
-# if ULONG_MAX >> 31 >> 31 >> 1 == 1
-#  undef uint64_t
-typedef unsigned long int gl_uint64_t;
-#  define uint64_t gl_uint64_t
-#  define GL_UINT64_T
-# elif defined _MSC_VER
-#  undef uint64_t
-typedef unsigned __int64 gl_uint64_t;
-#  define uint64_t gl_uint64_t
-#  define GL_UINT64_T
-# elif @HAVE_UNSIGNED_LONG_LONG_INT@
-#  undef uint64_t
-typedef unsigned long long int gl_uint64_t;
-#  define uint64_t gl_uint64_t
-#  define GL_UINT64_T
-# endif
-#endif
-
-/* Avoid collision with Solaris 2.5.1 <pthread.h> etc.  */
-#define _UINT8_T
-#define _UINT32_T
-#define _UINT64_T
-
-
-/* 7.18.1.2. Minimum-width integer types */
-
-/* Here we assume a standard architecture where the hardware integer
-   types have 8, 16, 32, optionally 64 bits. Therefore the leastN_t types
-   are the same as the corresponding N_t types.  */
-
-#undef int_least8_t
-#undef uint_least8_t
-#undef int_least16_t
-#undef uint_least16_t
-#undef int_least32_t
-#undef uint_least32_t
-#undef int_least64_t
-#undef uint_least64_t
-#define int_least8_t int8_t
-#define uint_least8_t uint8_t
-#define int_least16_t int16_t
-#define uint_least16_t uint16_t
-#define int_least32_t int32_t
-#define uint_least32_t uint32_t
-#ifdef GL_INT64_T
-# define int_least64_t int64_t
-#endif
-#ifdef GL_UINT64_T
-# define uint_least64_t uint64_t
-#endif
-
-/* 7.18.1.3. Fastest minimum-width integer types */
-
-/* Note: Other <stdint.h> substitutes may define these types differently.
-   It is not recommended to use these types in public header files. */
-
-/* Here we assume a standard architecture where the hardware integer
-   types have 8, 16, 32, optionally 64 bits. Therefore the fastN_t types
-   are taken from the same list of types.  The following code normally
-   uses types consistent with glibc, as that lessens the chance of
-   incompatibility with older GNU hosts.  */
-
-#undef int_fast8_t
-#undef uint_fast8_t
-#undef int_fast16_t
-#undef uint_fast16_t
-#undef int_fast32_t
-#undef uint_fast32_t
-#undef int_fast64_t
-#undef uint_fast64_t
-typedef signed char gl_int_fast8_t;
-typedef unsigned char gl_uint_fast8_t;
-
-#ifdef __sun
-/* Define types compatible with SunOS 5.10, so that code compiled under
-   earlier SunOS versions works with code compiled under SunOS 5.10.  */
-typedef int gl_int_fast32_t;
-typedef unsigned int gl_uint_fast32_t;
-#else
-typedef long int gl_int_fast32_t;
-typedef unsigned long int gl_uint_fast32_t;
-#endif
-typedef gl_int_fast32_t gl_int_fast16_t;
-typedef gl_uint_fast32_t gl_uint_fast16_t;
-
-#define int_fast8_t gl_int_fast8_t
-#define uint_fast8_t gl_uint_fast8_t
-#define int_fast16_t gl_int_fast16_t
-#define uint_fast16_t gl_uint_fast16_t
-#define int_fast32_t gl_int_fast32_t
-#define uint_fast32_t gl_uint_fast32_t
-#ifdef GL_INT64_T
-# define int_fast64_t int64_t
-#endif
-#ifdef GL_UINT64_T
-# define uint_fast64_t uint64_t
-#endif
-
-/* 7.18.1.4. Integer types capable of holding object pointers */
-
-#undef intptr_t
-#undef uintptr_t
-typedef long int gl_intptr_t;
-typedef unsigned long int gl_uintptr_t;
-#define intptr_t gl_intptr_t
-#define uintptr_t gl_uintptr_t
-
-/* 7.18.1.5. Greatest-width integer types */
-
-/* Note: These types are compiler dependent. It may be unwise to use them in
-   public header files. */
-
-/* If the system defines INTMAX_MAX, assume that intmax_t works, and
-   similarly for UINTMAX_MAX and uintmax_t.  This avoids problems with
-   assuming one type where another is used by the system.  */
-
-#ifndef INTMAX_MAX
-# undef INTMAX_C
-# undef intmax_t
-# if @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1
-typedef long long int gl_intmax_t;
-#  define intmax_t gl_intmax_t
-# elif defined GL_INT64_T
-#  define intmax_t int64_t
-# else
-typedef long int gl_intmax_t;
-#  define intmax_t gl_intmax_t
-# endif
-#endif
-
-#ifndef UINTMAX_MAX
-# undef UINTMAX_C
-# undef uintmax_t
-# if @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1
-typedef unsigned long long int gl_uintmax_t;
-#  define uintmax_t gl_uintmax_t
-# elif defined GL_UINT64_T
-#  define uintmax_t uint64_t
-# else
-typedef unsigned long int gl_uintmax_t;
-#  define uintmax_t gl_uintmax_t
-# endif
-#endif
-
-/* Verify that intmax_t and uintmax_t have the same size.  Too much code
-   breaks if this is not the case.  If this check fails, the reason is likely
-   to be found in the autoconf macros.  */
-typedef int _verify_intmax_size[sizeof (intmax_t) == sizeof (uintmax_t)
-                                ? 1 : -1];
-
-#define GNULIB_defined_stdint_types 1
-#endif /* !GNULIB_defined_stdint_types */
-
-/* 7.18.2. Limits of specified-width integer types */
-
-/* 7.18.2.1. Limits of exact-width integer types */
-
-/* Here we assume a standard architecture where the hardware integer
-   types have 8, 16, 32, optionally 64 bits.  */
-
-#undef INT8_MIN
-#undef INT8_MAX
-#undef UINT8_MAX
-#define INT8_MIN  (~ INT8_MAX)
-#define INT8_MAX  127
-#define UINT8_MAX  255
-
-#undef INT16_MIN
-#undef INT16_MAX
-#undef UINT16_MAX
-#define INT16_MIN  (~ INT16_MAX)
-#define INT16_MAX  32767
-#define UINT16_MAX  65535
-
-#undef INT32_MIN
-#undef INT32_MAX
-#undef UINT32_MAX
-#define INT32_MIN  (~ INT32_MAX)
-#define INT32_MAX  2147483647
-#define UINT32_MAX  4294967295U
-
-#if defined GL_INT64_T && ! defined INT64_MAX
-/* Prefer (- INTMAX_C (1) << 63) over (~ INT64_MAX) because SunPRO C 5.0
-   evaluates the latter incorrectly in preprocessor expressions.  */
-# define INT64_MIN  (- INTMAX_C (1) << 63)
-# define INT64_MAX  INTMAX_C (9223372036854775807)
-#endif
-
-#if defined GL_UINT64_T && ! defined UINT64_MAX
-# define UINT64_MAX  UINTMAX_C (18446744073709551615)
-#endif
-
-/* 7.18.2.2. Limits of minimum-width integer types */
-
-/* Here we assume a standard architecture where the hardware integer
-   types have 8, 16, 32, optionally 64 bits. Therefore the leastN_t types
-   are the same as the corresponding N_t types.  */
-
-#undef INT_LEAST8_MIN
-#undef INT_LEAST8_MAX
-#undef UINT_LEAST8_MAX
-#define INT_LEAST8_MIN  INT8_MIN
-#define INT_LEAST8_MAX  INT8_MAX
-#define UINT_LEAST8_MAX  UINT8_MAX
-
-#undef INT_LEAST16_MIN
-#undef INT_LEAST16_MAX
-#undef UINT_LEAST16_MAX
-#define INT_LEAST16_MIN  INT16_MIN
-#define INT_LEAST16_MAX  INT16_MAX
-#define UINT_LEAST16_MAX  UINT16_MAX
-
-#undef INT_LEAST32_MIN
-#undef INT_LEAST32_MAX
-#undef UINT_LEAST32_MAX
-#define INT_LEAST32_MIN  INT32_MIN
-#define INT_LEAST32_MAX  INT32_MAX
-#define UINT_LEAST32_MAX  UINT32_MAX
-
-#undef INT_LEAST64_MIN
-#undef INT_LEAST64_MAX
-#ifdef GL_INT64_T
-# define INT_LEAST64_MIN  INT64_MIN
-# define INT_LEAST64_MAX  INT64_MAX
-#endif
-
-#undef UINT_LEAST64_MAX
-#ifdef GL_UINT64_T
-# define UINT_LEAST64_MAX  UINT64_MAX
-#endif
-
-/* 7.18.2.3. Limits of fastest minimum-width integer types */
-
-/* Here we assume a standard architecture where the hardware integer
-   types have 8, 16, 32, optionally 64 bits. Therefore the fastN_t types
-   are taken from the same list of types.  */
-
-#undef INT_FAST8_MIN
-#undef INT_FAST8_MAX
-#undef UINT_FAST8_MAX
-#define INT_FAST8_MIN  SCHAR_MIN
-#define INT_FAST8_MAX  SCHAR_MAX
-#define UINT_FAST8_MAX  UCHAR_MAX
-
-#undef INT_FAST16_MIN
-#undef INT_FAST16_MAX
-#undef UINT_FAST16_MAX
-#define INT_FAST16_MIN  INT_FAST32_MIN
-#define INT_FAST16_MAX  INT_FAST32_MAX
-#define UINT_FAST16_MAX  UINT_FAST32_MAX
-
-#undef INT_FAST32_MIN
-#undef INT_FAST32_MAX
-#undef UINT_FAST32_MAX
-#ifdef __sun
-# define INT_FAST32_MIN  INT_MIN
-# define INT_FAST32_MAX  INT_MAX
-# define UINT_FAST32_MAX  UINT_MAX
-#else
-# define INT_FAST32_MIN  LONG_MIN
-# define INT_FAST32_MAX  LONG_MAX
-# define UINT_FAST32_MAX  ULONG_MAX
-#endif
-
-#undef INT_FAST64_MIN
-#undef INT_FAST64_MAX
-#ifdef GL_INT64_T
-# define INT_FAST64_MIN  INT64_MIN
-# define INT_FAST64_MAX  INT64_MAX
-#endif
-
-#undef UINT_FAST64_MAX
-#ifdef GL_UINT64_T
-# define UINT_FAST64_MAX  UINT64_MAX
-#endif
-
-/* 7.18.2.4. Limits of integer types capable of holding object pointers */
-
-#undef INTPTR_MIN
-#undef INTPTR_MAX
-#undef UINTPTR_MAX
-#define INTPTR_MIN  LONG_MIN
-#define INTPTR_MAX  LONG_MAX
-#define UINTPTR_MAX  ULONG_MAX
-
-/* 7.18.2.5. Limits of greatest-width integer types */
-
-#ifndef INTMAX_MAX
-# undef INTMAX_MIN
-# ifdef INT64_MAX
-#  define INTMAX_MIN  INT64_MIN
-#  define INTMAX_MAX  INT64_MAX
-# else
-#  define INTMAX_MIN  INT32_MIN
-#  define INTMAX_MAX  INT32_MAX
-# endif
-#endif
-
-#ifndef UINTMAX_MAX
-# ifdef UINT64_MAX
-#  define UINTMAX_MAX  UINT64_MAX
-# else
-#  define UINTMAX_MAX  UINT32_MAX
-# endif
-#endif
-
-/* 7.18.3. Limits of other integer types */
-
-/* ptrdiff_t limits */
-#undef PTRDIFF_MIN
-#undef PTRDIFF_MAX
-#if @APPLE_UNIVERSAL_BUILD@
-# ifdef _LP64
-#  define PTRDIFF_MIN  _STDINT_MIN (1, 64, 0l)
-#  define PTRDIFF_MAX  _STDINT_MAX (1, 64, 0l)
-# else
-#  define PTRDIFF_MIN  _STDINT_MIN (1, 32, 0)
-#  define PTRDIFF_MAX  _STDINT_MAX (1, 32, 0)
-# endif
-#else
-# define PTRDIFF_MIN  \
-    _STDINT_MIN (1, @BITSIZEOF_PTRDIFF_T@, 0@PTRDIFF_T_SUFFIX@)
-# define PTRDIFF_MAX  \
-    _STDINT_MAX (1, @BITSIZEOF_PTRDIFF_T@, 0@PTRDIFF_T_SUFFIX@)
-#endif
-
-/* sig_atomic_t limits */
-#undef SIG_ATOMIC_MIN
-#undef SIG_ATOMIC_MAX
-#define SIG_ATOMIC_MIN  \
-   _STDINT_MIN (@HAVE_SIGNED_SIG_ATOMIC_T@, @BITSIZEOF_SIG_ATOMIC_T@, \
-                0@SIG_ATOMIC_T_SUFFIX@)
-#define SIG_ATOMIC_MAX  \
-   _STDINT_MAX (@HAVE_SIGNED_SIG_ATOMIC_T@, @BITSIZEOF_SIG_ATOMIC_T@, \
-                0@SIG_ATOMIC_T_SUFFIX@)
-
-
-/* size_t limit */
-#undef SIZE_MAX
-#if @APPLE_UNIVERSAL_BUILD@
-# ifdef _LP64
-#  define SIZE_MAX  _STDINT_MAX (0, 64, 0ul)
-# else
-#  define SIZE_MAX  _STDINT_MAX (0, 32, 0ul)
-# endif
-#else
-# define SIZE_MAX  _STDINT_MAX (0, @BITSIZEOF_SIZE_T@, 0@SIZE_T_SUFFIX@)
-#endif
-
-/* wchar_t limits */
-/* Get WCHAR_MIN, WCHAR_MAX.
-   This include is not on the top, above, because on OSF/1 4.0 we have a
-   sequence of nested includes
-   <wchar.h> -> <stdio.h> -> <getopt.h> -> <stdlib.h>, and the latter includes
-   <stdint.h> and assumes its types are already defined.  */
-#if @HAVE_WCHAR_H@ && ! (defined WCHAR_MIN && defined WCHAR_MAX)
-  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
-     included before <wchar.h>.  */
-# include <stddef.h>
-# include <stdio.h>
-# include <time.h>
-# define _GL_JUST_INCLUDE_SYSTEM_WCHAR_H
-# include <wchar.h>
-# undef _GL_JUST_INCLUDE_SYSTEM_WCHAR_H
-#endif
-#undef WCHAR_MIN
-#undef WCHAR_MAX
-#define WCHAR_MIN  \
-   _STDINT_MIN (@HAVE_SIGNED_WCHAR_T@, @BITSIZEOF_WCHAR_T@, 0@WCHAR_T_SUFFIX@)
-#define WCHAR_MAX  \
-   _STDINT_MAX (@HAVE_SIGNED_WCHAR_T@, @BITSIZEOF_WCHAR_T@, 0@WCHAR_T_SUFFIX@)
-
-/* wint_t limits */
-#undef WINT_MIN
-#undef WINT_MAX
-#define WINT_MIN  \
-   _STDINT_MIN (@HAVE_SIGNED_WINT_T@, @BITSIZEOF_WINT_T@, 0@WINT_T_SUFFIX@)
-#define WINT_MAX  \
-   _STDINT_MAX (@HAVE_SIGNED_WINT_T@, @BITSIZEOF_WINT_T@, 0@WINT_T_SUFFIX@)
-
-/* 7.18.4. Macros for integer constants */
-
-/* 7.18.4.1. Macros for minimum-width integer constants */
-/* According to ISO C 99 Technical Corrigendum 1 */
-
-/* Here we assume a standard architecture where the hardware integer
-   types have 8, 16, 32, optionally 64 bits, and int is 32 bits.  */
-
-#undef INT8_C
-#undef UINT8_C
-#define INT8_C(x) x
-#define UINT8_C(x) x
-
-#undef INT16_C
-#undef UINT16_C
-#define INT16_C(x) x
-#define UINT16_C(x) x
-
-#undef INT32_C
-#undef UINT32_C
-#define INT32_C(x) x
-#define UINT32_C(x) x ## U
-
-#undef INT64_C
-#undef UINT64_C
-#if LONG_MAX >> 31 >> 31 == 1
-# define INT64_C(x) x##L
-#elif defined _MSC_VER
-# define INT64_C(x) x##i64
-#elif @HAVE_LONG_LONG_INT@
-# define INT64_C(x) x##LL
-#endif
-#if ULONG_MAX >> 31 >> 31 >> 1 == 1
-# define UINT64_C(x) x##UL
-#elif defined _MSC_VER
-# define UINT64_C(x) x##ui64
-#elif @HAVE_UNSIGNED_LONG_LONG_INT@
-# define UINT64_C(x) x##ULL
-#endif
-
-/* 7.18.4.2. Macros for greatest-width integer constants */
-
-#ifndef INTMAX_C
-# if @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1
-#  define INTMAX_C(x)   x##LL
-# elif defined GL_INT64_T
-#  define INTMAX_C(x)   INT64_C(x)
-# else
-#  define INTMAX_C(x)   x##L
-# endif
-#endif
-
-#ifndef UINTMAX_C
-# if @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1
-#  define UINTMAX_C(x)  x##ULL
-# elif defined GL_UINT64_T
-#  define UINTMAX_C(x)  UINT64_C(x)
-# else
-#  define UINTMAX_C(x)  x##UL
-# endif
-#endif
-
-#endif /* _@GUARD_PREFIX@_STDINT_H */
-#endif /* !(defined __ANDROID__ && ...) */
-#endif /* !defined _@GUARD_PREFIX@_STDINT_H && !defined _GL_JUST_INCLUDE_SYSTEM_STDINT_H */
diff --git a/src/libs/gnulib/m4/Makefile.am b/src/libs/gnulib/m4/Makefile.am
deleted file mode 100644 (file)
index 6a9ba10..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-## Process this file with automake to produce Makefile.in.
-
-# Copyright (C) 2014  Free Software Foundation, Inc.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-EXTRA_DIST =
-EXTRA_DIST += 00gnulib.m4
-EXTRA_DIST += codeset.m4
-EXTRA_DIST += configmake.m4
-EXTRA_DIST += extensions.m4
-EXTRA_DIST += extern-inline.m4
-EXTRA_DIST += fcntl-o.m4
-EXTRA_DIST += glibc21.m4
-EXTRA_DIST += gnulib-common.m4
-EXTRA_DIST += include_next.m4
-EXTRA_DIST += inttypes-pri.m4
-EXTRA_DIST += inttypes.m4
-EXTRA_DIST += libunistring-base.m4
-EXTRA_DIST += localcharset.m4
-EXTRA_DIST += longlong.m4
-EXTRA_DIST += multiarch.m4
-EXTRA_DIST += stdbool.m4
-EXTRA_DIST += stddef_h.m4
-EXTRA_DIST += stdint.m4
-EXTRA_DIST += warn-on-use.m4
-EXTRA_DIST += wchar_h.m4
-EXTRA_DIST += wchar_t.m4
-EXTRA_DIST += wctype_h.m4
-EXTRA_DIST += wcwidth.m4
-EXTRA_DIST += wint_t.m4
diff --git a/src/libs/gnulib/m4/Makefile.in b/src/libs/gnulib/m4/Makefile.in
deleted file mode 100644 (file)
index 2a8f7b2..0000000
+++ /dev/null
@@ -1,608 +0,0 @@
-# Makefile.in generated by automake 1.14 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-# Copyright (C) 2014  Free Software Foundation, Inc.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \  ]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs  ]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = m4
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
-       $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/configmake.m4 \
-       $(top_srcdir)/m4/extensions.m4 \
-       $(top_srcdir)/m4/extern-inline.m4 $(top_srcdir)/m4/fcntl-o.m4 \
-       $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/gnulib-common.m4 \
-       $(top_srcdir)/m4/include_next.m4 \
-       $(top_srcdir)/m4/inttypes-pri.m4 $(top_srcdir)/m4/inttypes.m4 \
-       $(top_srcdir)/m4/libunistring-base.m4 \
-       $(top_srcdir)/m4/localcharset.m4 $(top_srcdir)/m4/longlong.m4 \
-       $(top_srcdir)/m4/multiarch.m4 $(top_srcdir)/m4/onceonly.m4 \
-       $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stddef_h.m4 \
-       $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/warn-on-use.m4 \
-       $(top_srcdir)/m4/wchar_h.m4 $(top_srcdir)/m4/wchar_t.m4 \
-       $(top_srcdir)/m4/wctype_h.m4 $(top_srcdir)/m4/wcwidth.m4 \
-       $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-       $(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-AM_V_P = $(am__v_P_@AM_V@)
-am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_@AM_V@)
-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_@AM_V@)
-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 = 
-SOURCES =
-DIST_SOURCES =
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-pkglibexecdir = @pkglibexecdir@
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
-AR = @AR@
-ARFLAGS = @ARFLAGS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
-BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
-BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
-BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
-BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-GLIBC21 = @GLIBC21@
-GNULIB_BTOWC = @GNULIB_BTOWC@
-GNULIB_IMAXABS = @GNULIB_IMAXABS@
-GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
-GNULIB_ISWBLANK = @GNULIB_ISWBLANK@
-GNULIB_ISWCTYPE = @GNULIB_ISWCTYPE@
-GNULIB_MBRLEN = @GNULIB_MBRLEN@
-GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
-GNULIB_MBSINIT = @GNULIB_MBSINIT@
-GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@
-GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@
-GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
-GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
-GNULIB_TOWCTRANS = @GNULIB_TOWCTRANS@
-GNULIB_WCPCPY = @GNULIB_WCPCPY@
-GNULIB_WCPNCPY = @GNULIB_WCPNCPY@
-GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
-GNULIB_WCSCASECMP = @GNULIB_WCSCASECMP@
-GNULIB_WCSCAT = @GNULIB_WCSCAT@
-GNULIB_WCSCHR = @GNULIB_WCSCHR@
-GNULIB_WCSCMP = @GNULIB_WCSCMP@
-GNULIB_WCSCOLL = @GNULIB_WCSCOLL@
-GNULIB_WCSCPY = @GNULIB_WCSCPY@
-GNULIB_WCSCSPN = @GNULIB_WCSCSPN@
-GNULIB_WCSDUP = @GNULIB_WCSDUP@
-GNULIB_WCSLEN = @GNULIB_WCSLEN@
-GNULIB_WCSNCASECMP = @GNULIB_WCSNCASECMP@
-GNULIB_WCSNCAT = @GNULIB_WCSNCAT@
-GNULIB_WCSNCMP = @GNULIB_WCSNCMP@
-GNULIB_WCSNCPY = @GNULIB_WCSNCPY@
-GNULIB_WCSNLEN = @GNULIB_WCSNLEN@
-GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@
-GNULIB_WCSPBRK = @GNULIB_WCSPBRK@
-GNULIB_WCSRCHR = @GNULIB_WCSRCHR@
-GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
-GNULIB_WCSSPN = @GNULIB_WCSSPN@
-GNULIB_WCSSTR = @GNULIB_WCSSTR@
-GNULIB_WCSTOK = @GNULIB_WCSTOK@
-GNULIB_WCSWIDTH = @GNULIB_WCSWIDTH@
-GNULIB_WCSXFRM = @GNULIB_WCSXFRM@
-GNULIB_WCTOB = @GNULIB_WCTOB@
-GNULIB_WCTRANS = @GNULIB_WCTRANS@
-GNULIB_WCTYPE = @GNULIB_WCTYPE@
-GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
-GNULIB_WMEMCHR = @GNULIB_WMEMCHR@
-GNULIB_WMEMCMP = @GNULIB_WMEMCMP@
-GNULIB_WMEMCPY = @GNULIB_WMEMCPY@
-GNULIB_WMEMMOVE = @GNULIB_WMEMMOVE@
-GNULIB_WMEMSET = @GNULIB_WMEMSET@
-GREP = @GREP@
-HAVE_BTOWC = @HAVE_BTOWC@
-HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
-HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
-HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
-HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
-HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
-HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
-HAVE_FEATURES_H = @HAVE_FEATURES_H@
-HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
-HAVE_ISWBLANK = @HAVE_ISWBLANK@
-HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
-HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
-HAVE_MBRLEN = @HAVE_MBRLEN@
-HAVE_MBRTOWC = @HAVE_MBRTOWC@
-HAVE_MBSINIT = @HAVE_MBSINIT@
-HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
-HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
-HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
-HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
-HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
-HAVE_STDINT_H = @HAVE_STDINT_H@
-HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
-HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
-HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
-HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
-HAVE_WCHAR_H = @HAVE_WCHAR_H@
-HAVE_WCHAR_T = @HAVE_WCHAR_T@
-HAVE_WCPCPY = @HAVE_WCPCPY@
-HAVE_WCPNCPY = @HAVE_WCPNCPY@
-HAVE_WCRTOMB = @HAVE_WCRTOMB@
-HAVE_WCSCASECMP = @HAVE_WCSCASECMP@
-HAVE_WCSCAT = @HAVE_WCSCAT@
-HAVE_WCSCHR = @HAVE_WCSCHR@
-HAVE_WCSCMP = @HAVE_WCSCMP@
-HAVE_WCSCOLL = @HAVE_WCSCOLL@
-HAVE_WCSCPY = @HAVE_WCSCPY@
-HAVE_WCSCSPN = @HAVE_WCSCSPN@
-HAVE_WCSDUP = @HAVE_WCSDUP@
-HAVE_WCSLEN = @HAVE_WCSLEN@
-HAVE_WCSNCASECMP = @HAVE_WCSNCASECMP@
-HAVE_WCSNCAT = @HAVE_WCSNCAT@
-HAVE_WCSNCMP = @HAVE_WCSNCMP@
-HAVE_WCSNCPY = @HAVE_WCSNCPY@
-HAVE_WCSNLEN = @HAVE_WCSNLEN@
-HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
-HAVE_WCSPBRK = @HAVE_WCSPBRK@
-HAVE_WCSRCHR = @HAVE_WCSRCHR@
-HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
-HAVE_WCSSPN = @HAVE_WCSSPN@
-HAVE_WCSSTR = @HAVE_WCSSTR@
-HAVE_WCSTOK = @HAVE_WCSTOK@
-HAVE_WCSWIDTH = @HAVE_WCSWIDTH@
-HAVE_WCSXFRM = @HAVE_WCSXFRM@
-HAVE_WCTRANS_T = @HAVE_WCTRANS_T@
-HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
-HAVE_WCTYPE_T = @HAVE_WCTYPE_T@
-HAVE_WINT_T = @HAVE_WINT_T@
-HAVE_WMEMCHR = @HAVE_WMEMCHR@
-HAVE_WMEMCMP = @HAVE_WMEMCMP@
-HAVE_WMEMCPY = @HAVE_WMEMCPY@
-HAVE_WMEMMOVE = @HAVE_WMEMMOVE@
-HAVE_WMEMSET = @HAVE_WMEMSET@
-HAVE__BOOL = @HAVE__BOOL@
-INCLUDE_NEXT = @INCLUDE_NEXT@
-INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INT32_MAX_LT_INTMAX_MAX = @INT32_MAX_LT_INTMAX_MAX@
-INT64_MAX_EQ_LONG_MAX = @INT64_MAX_EQ_LONG_MAX@
-LDFLAGS = @LDFLAGS@
-LIBGNU_LIBDEPS = @LIBGNU_LIBDEPS@
-LIBGNU_LTLIBDEPS = @LIBGNU_LTLIBDEPS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBUNISTRING_UNITYPES_H = @LIBUNISTRING_UNITYPES_H@
-LIBUNISTRING_UNIWIDTH_H = @LIBUNISTRING_UNIWIDTH_H@
-LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H = @NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H@
-NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@
-NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
-NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
-NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@
-NEXT_INTTYPES_H = @NEXT_INTTYPES_H@
-NEXT_STDDEF_H = @NEXT_STDDEF_H@
-NEXT_STDINT_H = @NEXT_STDINT_H@
-NEXT_WCHAR_H = @NEXT_WCHAR_H@
-NEXT_WCTYPE_H = @NEXT_WCTYPE_H@
-OBJEXT = @OBJEXT@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PRAGMA_COLUMNS = @PRAGMA_COLUMNS@
-PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
-PRIPTR_PREFIX = @PRIPTR_PREFIX@
-PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
-PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
-RANLIB = @RANLIB@
-REPLACE_BTOWC = @REPLACE_BTOWC@
-REPLACE_ISWBLANK = @REPLACE_ISWBLANK@
-REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@
-REPLACE_MBRLEN = @REPLACE_MBRLEN@
-REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
-REPLACE_MBSINIT = @REPLACE_MBSINIT@
-REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
-REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
-REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
-REPLACE_NULL = @REPLACE_NULL@
-REPLACE_STRTOIMAX = @REPLACE_STRTOIMAX@
-REPLACE_TOWLOWER = @REPLACE_TOWLOWER@
-REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
-REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
-REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
-REPLACE_WCSWIDTH = @REPLACE_WCSWIDTH@
-REPLACE_WCTOB = @REPLACE_WCTOB@
-REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
-SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
-STDBOOL_H = @STDBOOL_H@
-STDDEF_H = @STDDEF_H@
-STDINT_H = @STDINT_H@
-STRIP = @STRIP@
-UINT32_MAX_LT_UINTMAX_MAX = @UINT32_MAX_LT_UINTMAX_MAX@
-UINT64_MAX_EQ_ULONG_MAX = @UINT64_MAX_EQ_ULONG_MAX@
-VERSION = @VERSION@
-WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
-WINT_T_SUFFIX = @WINT_T_SUFFIX@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-gl_LIBOBJS = @gl_LIBOBJS@
-gl_LTLIBOBJS = @gl_LTLIBOBJS@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-lispdir = @lispdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-runstatedir = @runstatedir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-EXTRA_DIST = 00gnulib.m4 codeset.m4 configmake.m4 extensions.m4 \
-       extern-inline.m4 fcntl-o.m4 glibc21.m4 gnulib-common.m4 \
-       include_next.m4 inttypes-pri.m4 inttypes.m4 \
-       libunistring-base.m4 localcharset.m4 longlong.m4 multiarch.m4 \
-       stdbool.m4 stddef_h.m4 stdint.m4 warn-on-use.m4 wchar_h.m4 \
-       wchar_t.m4 wctype_h.m4 wcwidth.m4 wint_t.m4
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-       @for dep in $?; do \
-         case '$(am__configure_deps)' in \
-           *$$dep*) \
-             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-               && { if test -f $@; then exit 0; else break; fi; }; \
-             exit 1;; \
-         esac; \
-       done; \
-       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu m4/Makefile'; \
-       $(am__cd) $(top_srcdir) && \
-         $(AUTOMAKE) --gnu m4/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-       @case '$?' in \
-         *config.status*) \
-           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-         *) \
-           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-       esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-tags TAGS:
-
-ctags CTAGS:
-
-cscope cscopelist:
-
-
-distdir: $(DISTFILES)
-       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-       list='$(DISTFILES)'; \
-         dist_files=`for file in $$list; do echo $$file; done | \
-         sed -e "s|^$$srcdirstrip/||;t" \
-             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-       case $$dist_files in \
-         */*) $(MKDIR_P) `echo "$$dist_files" | \
-                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-                          sort -u` ;; \
-       esac; \
-       for file in $$dist_files; do \
-         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-         if test -d $$d/$$file; then \
-           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-           if test -d "$(distdir)/$$file"; then \
-             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-           fi; \
-           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-           fi; \
-           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-         else \
-           test -f "$(distdir)/$$file" \
-           || cp -p $$d/$$file "$(distdir)/$$file" \
-           || exit 1; \
-         fi; \
-       done
-check-am: all-am
-check: check-am
-all-am: Makefile
-installdirs:
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-       if test -z '$(STRIP)'; then \
-         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-             install; \
-       else \
-         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-       fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-       @echo "This command is intended for maintainers to use"
-       @echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic mostlyclean-am
-
-distclean: distclean-am
-       -rm -f Makefile
-distclean-am: clean-am distclean-generic
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-       -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am:
-
-.MAKE: install-am install-strip
-
-.PHONY: all all-am check check-am clean clean-generic cscopelist-am \
-       ctags-am distclean distclean-generic distdir dvi dvi-am html \
-       html-am info info-am install install-am install-data \
-       install-data-am install-dvi install-dvi-am install-exec \
-       install-exec-am install-html install-html-am install-info \
-       install-info-am install-man install-pdf install-pdf-am \
-       install-ps install-ps-am install-strip installcheck \
-       installcheck-am installdirs maintainer-clean \
-       maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
-       pdf-am ps ps-am tags-am uninstall uninstall-am
-
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/src/libs/gnulib/m4/codeset.m4 b/src/libs/gnulib/m4/codeset.m4
deleted file mode 100644 (file)
index d7de8d6..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-# codeset.m4 serial 5 (gettext-0.18.2)
-dnl Copyright (C) 2000-2002, 2006, 2008-2014 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-dnl From Bruno Haible.
-
-AC_DEFUN([AM_LANGINFO_CODESET],
-[
-  AC_CACHE_CHECK([for nl_langinfo and CODESET], [am_cv_langinfo_codeset],
-    [AC_LINK_IFELSE(
-       [AC_LANG_PROGRAM(
-          [[#include <langinfo.h>]],
-          [[char* cs = nl_langinfo(CODESET); return !cs;]])],
-       [am_cv_langinfo_codeset=yes],
-       [am_cv_langinfo_codeset=no])
-    ])
-  if test $am_cv_langinfo_codeset = yes; then
-    AC_DEFINE([HAVE_LANGINFO_CODESET], [1],
-      [Define if you have <langinfo.h> and nl_langinfo(CODESET).])
-  fi
-])
diff --git a/src/libs/gnulib/m4/configmake.m4 b/src/libs/gnulib/m4/configmake.m4
deleted file mode 100644 (file)
index 0cd86cf..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-# configmake.m4 serial 2
-dnl Copyright (C) 2010-2014 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-# gl_CONFIGMAKE_PREP
-# ------------------
-# Guarantee all of the standard directory variables, even when used with
-# autoconf 2.59 (datarootdir wasn't supported until 2.59c, and runstatedir
-# in 2.70) or automake 1.9.6 (pkglibexecdir wasn't supported until 1.10b,
-# and runstatedir in 1.14.1).
-AC_DEFUN([gl_CONFIGMAKE_PREP],
-[
-  dnl Technically, datadir should default to datarootdir.  But if
-  dnl autoconf is too old to provide datarootdir, then reversing the
-  dnl definition is a reasonable compromise.  Only AC_SUBST a variable
-  dnl if it was not already defined earlier by autoconf.
-  if test "x$datarootdir" = x; then
-    AC_SUBST([datarootdir], ['${datadir}'])
-  fi
-  dnl Copy the approach used in autoconf 2.60.
-  if test "x$docdir" = x; then
-    AC_SUBST([docdir], [m4_ifset([AC_PACKAGE_TARNAME],
-      ['${datarootdir}/doc/${PACKAGE_TARNAME}'],
-      ['${datarootdir}/doc/${PACKAGE}'])])
-  fi
-  dnl The remaining variables missing from autoconf 2.59 are easier.
-  if test "x$htmldir" = x; then
-    AC_SUBST([htmldir], ['${docdir}'])
-  fi
-  if test "x$dvidir" = x; then
-    AC_SUBST([dvidir], ['${docdir}'])
-  fi
-  if test "x$pdfdir" = x; then
-    AC_SUBST([pdfdir], ['${docdir}'])
-  fi
-  if test "x$psdir" = x; then
-    AC_SUBST([psdir], ['${docdir}'])
-  fi
-  if test "x$lispdir" = x; then
-    AC_SUBST([lispdir], ['${datarootdir}/emacs/site-lisp'])
-  fi
-  if test "x$localedir" = x; then
-    AC_SUBST([localedir], ['${datarootdir}/locale'])
-  fi
-  dnl Added in autoconf 2.70
-  if test "x$runstatedir" = x; then
-    AC_SUBST([runstatedir], ['${localstatedir}/run'])
-  fi
-
-  dnl Automake 1.9.6 only lacks pkglibexecdir; and since 1.11 merely
-  dnl provides it without AC_SUBST, this blind use of AC_SUBST is safe.
-  AC_SUBST([pkglibexecdir], ['${libexecdir}/${PACKAGE}'])
-])
diff --git a/src/libs/gnulib/m4/extern-inline.m4 b/src/libs/gnulib/m4/extern-inline.m4
deleted file mode 100644 (file)
index 8f8e8e2..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-dnl 'extern inline' a la ISO C99.
-
-dnl Copyright 2012-2014 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-AC_DEFUN([gl_EXTERN_INLINE],
-[
-  AH_VERBATIM([extern_inline],
-[/* _GL_INLINE is a portable alternative to ISO C99 plain 'inline'.
-   _GL_EXTERN_INLINE is a portable alternative to 'extern inline'.
-   _GL_INLINE_HEADER_BEGIN contains useful stuff to put
-     in an include file, before uses of _GL_INLINE.
-     It suppresses GCC's bogus "no previous prototype for 'FOO'" diagnostic,
-     when FOO is an inline function in the header; see
-     <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54113>.
-   _GL_INLINE_HEADER_END contains useful stuff to put
-     in the same include file, after uses of _GL_INLINE.
-
-   Suppress the use of extern inline on Apple's platforms,
-   as Libc-825.25 (2012-09-19) is incompatible with it; see
-   <http://lists.gnu.org/archive/html/bug-gnulib/2012-12/msg00023.html>.
-   Perhaps Apple will fix this some day.  */
-#if ((__GNUC__ \
-      ? defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ \
-      : 199901L <= __STDC_VERSION__) \
-     && !defined __APPLE__)
-# define _GL_INLINE inline
-# define _GL_EXTERN_INLINE extern inline
-#elif 2 < __GNUC__ + (7 <= __GNUC_MINOR__) && !defined __APPLE__
-# if __GNUC_GNU_INLINE__
-   /* __gnu_inline__ suppresses a GCC 4.2 diagnostic.  */
-#  define _GL_INLINE extern inline __attribute__ ((__gnu_inline__))
-# else
-#  define _GL_INLINE extern inline
-# endif
-# define _GL_EXTERN_INLINE extern
-#else
-# define _GL_INLINE static _GL_UNUSED
-# define _GL_EXTERN_INLINE static _GL_UNUSED
-#endif
-
-#if 4 < __GNUC__ + (6 <= __GNUC_MINOR__)
-# if defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__
-#  define _GL_INLINE_HEADER_CONST_PRAGMA
-# else
-#  define _GL_INLINE_HEADER_CONST_PRAGMA \
-     _Pragma ("GCC diagnostic ignored \"-Wsuggest-attribute=const\"")
-# endif
-# define _GL_INLINE_HEADER_BEGIN \
-    _Pragma ("GCC diagnostic push") \
-    _Pragma ("GCC diagnostic ignored \"-Wmissing-prototypes\"") \
-    _Pragma ("GCC diagnostic ignored \"-Wmissing-declarations\"") \
-    _GL_INLINE_HEADER_CONST_PRAGMA
-# define _GL_INLINE_HEADER_END \
-    _Pragma ("GCC diagnostic pop")
-#else
-# define _GL_INLINE_HEADER_BEGIN
-# define _GL_INLINE_HEADER_END
-#endif])
-])
diff --git a/src/libs/gnulib/m4/fcntl-o.m4 b/src/libs/gnulib/m4/fcntl-o.m4
deleted file mode 100644 (file)
index 43c9312..0000000
+++ /dev/null
@@ -1,134 +0,0 @@
-# fcntl-o.m4 serial 4
-dnl Copyright (C) 2006, 2009-2014 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-dnl Written by Paul Eggert.
-
-# Test whether the flags O_NOATIME and O_NOFOLLOW actually work.
-# Define HAVE_WORKING_O_NOATIME to 1 if O_NOATIME works, or to 0 otherwise.
-# Define HAVE_WORKING_O_NOFOLLOW to 1 if O_NOFOLLOW works, or to 0 otherwise.
-AC_DEFUN([gl_FCNTL_O_FLAGS],
-[
-  dnl Persuade glibc <fcntl.h> to define O_NOATIME and O_NOFOLLOW.
-  dnl AC_USE_SYSTEM_EXTENSIONS was introduced in autoconf 2.60 and obsoletes
-  dnl AC_GNU_SOURCE.
-  m4_ifdef([AC_USE_SYSTEM_EXTENSIONS],
-    [AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])],
-    [AC_REQUIRE([AC_GNU_SOURCE])])
-
-  AC_CHECK_HEADERS_ONCE([unistd.h])
-  AC_CHECK_FUNCS_ONCE([symlink])
-  AC_CACHE_CHECK([for working fcntl.h], [gl_cv_header_working_fcntl_h],
-    [AC_RUN_IFELSE(
-       [AC_LANG_PROGRAM(
-          [[#include <sys/types.h>
-           #include <sys/stat.h>
-           #if HAVE_UNISTD_H
-           # include <unistd.h>
-           #else /* on Windows with MSVC */
-           # include <io.h>
-           # include <stdlib.h>
-           # defined sleep(n) _sleep ((n) * 1000)
-           #endif
-           #include <fcntl.h>
-           #ifndef O_NOATIME
-            #define O_NOATIME 0
-           #endif
-           #ifndef O_NOFOLLOW
-            #define O_NOFOLLOW 0
-           #endif
-           static int const constants[] =
-            {
-              O_CREAT, O_EXCL, O_NOCTTY, O_TRUNC, O_APPEND,
-              O_NONBLOCK, O_SYNC, O_ACCMODE, O_RDONLY, O_RDWR, O_WRONLY
-            };
-          ]],
-          [[
-            int result = !constants;
-            #if HAVE_SYMLINK
-            {
-              static char const sym[] = "conftest.sym";
-              if (symlink ("/dev/null", sym) != 0)
-                result |= 2;
-              else
-                {
-                  int fd = open (sym, O_WRONLY | O_NOFOLLOW | O_CREAT, 0);
-                  if (fd >= 0)
-                    {
-                      close (fd);
-                      result |= 4;
-                    }
-                }
-              if (unlink (sym) != 0 || symlink (".", sym) != 0)
-                result |= 2;
-              else
-                {
-                  int fd = open (sym, O_RDONLY | O_NOFOLLOW);
-                  if (fd >= 0)
-                    {
-                      close (fd);
-                      result |= 4;
-                    }
-                }
-              unlink (sym);
-            }
-            #endif
-            {
-              static char const file[] = "confdefs.h";
-              int fd = open (file, O_RDONLY | O_NOATIME);
-              if (fd < 0)
-                result |= 8;
-              else
-                {
-                  struct stat st0;
-                  if (fstat (fd, &st0) != 0)
-                    result |= 16;
-                  else
-                    {
-                      char c;
-                      sleep (1);
-                      if (read (fd, &c, 1) != 1)
-                        result |= 24;
-                      else
-                        {
-                          if (close (fd) != 0)
-                            result |= 32;
-                          else
-                            {
-                              struct stat st1;
-                              if (stat (file, &st1) != 0)
-                                result |= 40;
-                              else
-                                if (st0.st_atime != st1.st_atime)
-                                  result |= 64;
-                            }
-                        }
-                    }
-                }
-            }
-            return result;]])],
-       [gl_cv_header_working_fcntl_h=yes],
-       [case $? in #(
-        4) gl_cv_header_working_fcntl_h='no (bad O_NOFOLLOW)';; #(
-        64) gl_cv_header_working_fcntl_h='no (bad O_NOATIME)';; #(
-        68) gl_cv_header_working_fcntl_h='no (bad O_NOATIME, O_NOFOLLOW)';; #(
-         *) gl_cv_header_working_fcntl_h='no';;
-        esac],
-       [gl_cv_header_working_fcntl_h=cross-compiling])])
-
-  case $gl_cv_header_working_fcntl_h in #(
-  *O_NOATIME* | no | cross-compiling) ac_val=0;; #(
-  *) ac_val=1;;
-  esac
-  AC_DEFINE_UNQUOTED([HAVE_WORKING_O_NOATIME], [$ac_val],
-    [Define to 1 if O_NOATIME works.])
-
-  case $gl_cv_header_working_fcntl_h in #(
-  *O_NOFOLLOW* | no | cross-compiling) ac_val=0;; #(
-  *) ac_val=1;;
-  esac
-  AC_DEFINE_UNQUOTED([HAVE_WORKING_O_NOFOLLOW], [$ac_val],
-    [Define to 1 if O_NOFOLLOW works.])
-])
diff --git a/src/libs/gnulib/m4/glibc21.m4 b/src/libs/gnulib/m4/glibc21.m4
deleted file mode 100644 (file)
index ab58b71..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-# glibc21.m4 serial 5
-dnl Copyright (C) 2000-2002, 2004, 2008, 2010-2014 Free Software Foundation,
-dnl Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-# Test for the GNU C Library, version 2.1 or newer, or uClibc.
-# From Bruno Haible.
-
-AC_DEFUN([gl_GLIBC21],
-  [
-    AC_CACHE_CHECK([whether we are using the GNU C Library >= 2.1 or uClibc],
-      [ac_cv_gnu_library_2_1],
-      [AC_EGREP_CPP([Lucky],
-        [
-#include <features.h>
-#ifdef __GNU_LIBRARY__
- #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2)
-  Lucky GNU user
- #endif
-#endif
-#ifdef __UCLIBC__
- Lucky user
-#endif
-        ],
-        [ac_cv_gnu_library_2_1=yes],
-        [ac_cv_gnu_library_2_1=no])
-      ]
-    )
-    AC_SUBST([GLIBC21])
-    GLIBC21="$ac_cv_gnu_library_2_1"
-  ]
-)
diff --git a/src/libs/gnulib/m4/gnulib-tool.m4 b/src/libs/gnulib/m4/gnulib-tool.m4
deleted file mode 100644 (file)
index a588e15..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-# gnulib-tool.m4 serial 2
-dnl Copyright (C) 2004-2005, 2009-2014 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-dnl The following macros need not be invoked explicitly.
-dnl Invoking them does nothing except to declare default arguments
-dnl for "gnulib-tool --import".
-
-dnl Usage: gl_LOCAL_DIR([DIR])
-AC_DEFUN([gl_LOCAL_DIR], [])
-
-dnl Usage: gl_MODULES([module1 module2 ...])
-AC_DEFUN([gl_MODULES], [])
-
-dnl Usage: gl_AVOID([module1 module2 ...])
-AC_DEFUN([gl_AVOID], [])
-
-dnl Usage: gl_SOURCE_BASE([DIR])
-AC_DEFUN([gl_SOURCE_BASE], [])
-
-dnl Usage: gl_M4_BASE([DIR])
-AC_DEFUN([gl_M4_BASE], [])
-
-dnl Usage: gl_PO_BASE([DIR])
-AC_DEFUN([gl_PO_BASE], [])
-
-dnl Usage: gl_DOC_BASE([DIR])
-AC_DEFUN([gl_DOC_BASE], [])
-
-dnl Usage: gl_TESTS_BASE([DIR])
-AC_DEFUN([gl_TESTS_BASE], [])
-
-dnl Usage: gl_WITH_TESTS
-AC_DEFUN([gl_WITH_TESTS], [])
-
-dnl Usage: gl_LIB([LIBNAME])
-AC_DEFUN([gl_LIB], [])
-
-dnl Usage: gl_LGPL or gl_LGPL([VERSION])
-AC_DEFUN([gl_LGPL], [])
-
-dnl Usage: gl_MAKEFILE_NAME([FILENAME])
-AC_DEFUN([gl_MAKEFILE_NAME], [])
-
-dnl Usage: gl_LIBTOOL
-AC_DEFUN([gl_LIBTOOL], [])
-
-dnl Usage: gl_MACRO_PREFIX([PREFIX])
-AC_DEFUN([gl_MACRO_PREFIX], [])
-
-dnl Usage: gl_PO_DOMAIN([DOMAIN])
-AC_DEFUN([gl_PO_DOMAIN], [])
-
-dnl Usage: gl_VC_FILES([BOOLEAN])
-AC_DEFUN([gl_VC_FILES], [])
diff --git a/src/libs/gnulib/m4/inttypes-pri.m4 b/src/libs/gnulib/m4/inttypes-pri.m4
deleted file mode 100644 (file)
index 00251e1..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-# inttypes-pri.m4 serial 7 (gettext-0.18.2)
-dnl Copyright (C) 1997-2002, 2006, 2008-2014 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-dnl From Bruno Haible.
-
-AC_PREREQ([2.53])
-
-# Define PRI_MACROS_BROKEN if <inttypes.h> exists and defines the PRI*
-# macros to non-string values.  This is the case on AIX 4.3.3.
-
-AC_DEFUN([gt_INTTYPES_PRI],
-[
-  AC_CHECK_HEADERS([inttypes.h])
-  if test $ac_cv_header_inttypes_h = yes; then
-    AC_CACHE_CHECK([whether the inttypes.h PRIxNN macros are broken],
-      [gt_cv_inttypes_pri_broken],
-      [
-        AC_COMPILE_IFELSE(
-          [AC_LANG_PROGRAM(
-             [[
-#include <inttypes.h>
-#ifdef PRId32
-char *p = PRId32;
-#endif
-             ]],
-             [[]])],
-          [gt_cv_inttypes_pri_broken=no],
-          [gt_cv_inttypes_pri_broken=yes])
-      ])
-  fi
-  if test "$gt_cv_inttypes_pri_broken" = yes; then
-    AC_DEFINE_UNQUOTED([PRI_MACROS_BROKEN], [1],
-      [Define if <inttypes.h> exists and defines unusable PRI* macros.])
-    PRI_MACROS_BROKEN=1
-  else
-    PRI_MACROS_BROKEN=0
-  fi
-  AC_SUBST([PRI_MACROS_BROKEN])
-])
diff --git a/src/libs/gnulib/m4/inttypes.m4 b/src/libs/gnulib/m4/inttypes.m4
deleted file mode 100644 (file)
index fc570a1..0000000
+++ /dev/null
@@ -1,157 +0,0 @@
-# inttypes.m4 serial 26
-dnl Copyright (C) 2006-2014 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-dnl From Derek Price, Bruno Haible.
-dnl Test whether <inttypes.h> is supported or must be substituted.
-
-AC_DEFUN([gl_INTTYPES_H],
-[
-  AC_REQUIRE([gl_INTTYPES_INCOMPLETE])
-  gl_INTTYPES_PRI_SCN
-])
-
-AC_DEFUN_ONCE([gl_INTTYPES_INCOMPLETE],
-[
-  AC_REQUIRE([gl_STDINT_H])
-  AC_CHECK_HEADERS_ONCE([inttypes.h])
-
-  dnl Override <inttypes.h> always, so that the portability warnings work.
-  AC_REQUIRE([gl_INTTYPES_H_DEFAULTS])
-  gl_CHECK_NEXT_HEADERS([inttypes.h])
-
-  AC_REQUIRE([gl_MULTIARCH])
-
-  dnl Check for declarations of anything we want to poison if the
-  dnl corresponding gnulib module is not in use.
-  gl_WARN_ON_USE_PREPARE([[#include <inttypes.h>
-    ]], [imaxabs imaxdiv strtoimax strtoumax])
-])
-
-# Ensure that the PRI* and SCN* macros are defined appropriately.
-AC_DEFUN([gl_INTTYPES_PRI_SCN],
-[
-  AC_REQUIRE([gt_INTTYPES_PRI])
-
-  PRIPTR_PREFIX=
-  if test -n "$STDINT_H"; then
-    dnl Using the gnulib <stdint.h>. It always defines intptr_t to 'long'.
-    PRIPTR_PREFIX='"l"'
-  else
-    dnl Using the system's <stdint.h>.
-    for glpfx in '' l ll I64; do
-      case $glpfx in
-        '')  gltype1='int';;
-        l)   gltype1='long int';;
-        ll)  gltype1='long long int';;
-        I64) gltype1='__int64';;
-      esac
-      AC_COMPILE_IFELSE(
-        [AC_LANG_PROGRAM([[#include <stdint.h>
-           extern intptr_t foo;
-           extern $gltype1 foo;]])],
-        [PRIPTR_PREFIX='"'$glpfx'"'])
-      test -n "$PRIPTR_PREFIX" && break
-    done
-  fi
-  AC_SUBST([PRIPTR_PREFIX])
-
-  gl_INTTYPES_CHECK_LONG_LONG_INT_CONDITION(
-    [INT32_MAX_LT_INTMAX_MAX],
-    [defined INT32_MAX && defined INTMAX_MAX],
-    [INT32_MAX < INTMAX_MAX],
-    [sizeof (int) < sizeof (long long int)])
-  if test $APPLE_UNIVERSAL_BUILD = 0; then
-    gl_INTTYPES_CHECK_LONG_LONG_INT_CONDITION(
-      [INT64_MAX_EQ_LONG_MAX],
-      [defined INT64_MAX],
-      [INT64_MAX == LONG_MAX],
-      [sizeof (long long int) == sizeof (long int)])
-  else
-    INT64_MAX_EQ_LONG_MAX=-1
-  fi
-  gl_INTTYPES_CHECK_LONG_LONG_INT_CONDITION(
-    [UINT32_MAX_LT_UINTMAX_MAX],
-    [defined UINT32_MAX && defined UINTMAX_MAX],
-    [UINT32_MAX < UINTMAX_MAX],
-    [sizeof (unsigned int) < sizeof (unsigned long long int)])
-  if test $APPLE_UNIVERSAL_BUILD = 0; then
-    gl_INTTYPES_CHECK_LONG_LONG_INT_CONDITION(
-      [UINT64_MAX_EQ_ULONG_MAX],
-      [defined UINT64_MAX],
-      [UINT64_MAX == ULONG_MAX],
-      [sizeof (unsigned long long int) == sizeof (unsigned long int)])
-  else
-    UINT64_MAX_EQ_ULONG_MAX=-1
-  fi
-])
-
-# Define the symbol $1 to be 1 if the condition is true, 0 otherwise.
-# If $2 is true, the condition is $3; otherwise if long long int is supported
-# approximate the condition with $4; otherwise, assume the condition is false.
-# The condition should work on all C99 platforms; the approximations should be
-# good enough to work on all practical pre-C99 platforms.
-# $2 is evaluated by the C preprocessor, $3 and $4 as compile-time constants.
-AC_DEFUN([gl_INTTYPES_CHECK_LONG_LONG_INT_CONDITION],
-[
-  AC_CACHE_CHECK([whether $3],
-    [gl_cv_test_$1],
-    [AC_COMPILE_IFELSE(
-       [AC_LANG_PROGRAM(
-          [[/* Work also in C++ mode.  */
-            #define __STDC_LIMIT_MACROS 1
-
-            /* Work if build is not clean.  */
-            #define _GL_JUST_INCLUDE_SYSTEM_STDINT_H
-
-            #include <limits.h>
-            #if HAVE_STDINT_H
-             #include <stdint.h>
-            #endif
-
-            #if $2
-             #define CONDITION ($3)
-            #elif HAVE_LONG_LONG_INT
-             #define CONDITION ($4)
-            #else
-             #define CONDITION 0
-            #endif
-            int test[CONDITION ? 1 : -1];]])],
-       [gl_cv_test_$1=yes],
-       [gl_cv_test_$1=no])])
-  if test $gl_cv_test_$1 = yes; then
-    $1=1;
-  else
-    $1=0;
-  fi
-  AC_SUBST([$1])
-])
-
-AC_DEFUN([gl_INTTYPES_MODULE_INDICATOR],
-[
-  dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
-  AC_REQUIRE([gl_INTTYPES_H_DEFAULTS])
-  gl_MODULE_INDICATOR_SET_VARIABLE([$1])
-])
-
-AC_DEFUN([gl_INTTYPES_H_DEFAULTS],
-[
-  GNULIB_IMAXABS=0;      AC_SUBST([GNULIB_IMAXABS])
-  GNULIB_IMAXDIV=0;      AC_SUBST([GNULIB_IMAXDIV])
-  GNULIB_STRTOIMAX=0;    AC_SUBST([GNULIB_STRTOIMAX])
-  GNULIB_STRTOUMAX=0;    AC_SUBST([GNULIB_STRTOUMAX])
-  dnl Assume proper GNU behavior unless another module says otherwise.
-  HAVE_DECL_IMAXABS=1;   AC_SUBST([HAVE_DECL_IMAXABS])
-  HAVE_DECL_IMAXDIV=1;   AC_SUBST([HAVE_DECL_IMAXDIV])
-  HAVE_DECL_STRTOIMAX=1; AC_SUBST([HAVE_DECL_STRTOIMAX])
-  HAVE_DECL_STRTOUMAX=1; AC_SUBST([HAVE_DECL_STRTOUMAX])
-  REPLACE_STRTOIMAX=0;   AC_SUBST([REPLACE_STRTOIMAX])
-  INT32_MAX_LT_INTMAX_MAX=1;  AC_SUBST([INT32_MAX_LT_INTMAX_MAX])
-  INT64_MAX_EQ_LONG_MAX='defined _LP64';  AC_SUBST([INT64_MAX_EQ_LONG_MAX])
-  PRI_MACROS_BROKEN=0;   AC_SUBST([PRI_MACROS_BROKEN])
-  PRIPTR_PREFIX=__PRIPTR_PREFIX;  AC_SUBST([PRIPTR_PREFIX])
-  UINT32_MAX_LT_UINTMAX_MAX=1;  AC_SUBST([UINT32_MAX_LT_UINTMAX_MAX])
-  UINT64_MAX_EQ_ULONG_MAX='defined _LP64';  AC_SUBST([UINT64_MAX_EQ_ULONG_MAX])
-])
diff --git a/src/libs/gnulib/m4/localcharset.m4 b/src/libs/gnulib/m4/localcharset.m4
deleted file mode 100644 (file)
index ada2f01..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-# localcharset.m4 serial 7
-dnl Copyright (C) 2002, 2004, 2006, 2009-2014 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-AC_DEFUN([gl_LOCALCHARSET],
-[
-  dnl Prerequisites of lib/localcharset.c.
-  AC_REQUIRE([AM_LANGINFO_CODESET])
-  AC_REQUIRE([gl_FCNTL_O_FLAGS])
-  AC_CHECK_DECLS_ONCE([getc_unlocked])
-
-  dnl Prerequisites of the lib/Makefile.am snippet.
-  AC_REQUIRE([AC_CANONICAL_HOST])
-  AC_REQUIRE([gl_GLIBC21])
-])
diff --git a/src/libs/gnulib/m4/onceonly.m4 b/src/libs/gnulib/m4/onceonly.m4
deleted file mode 100644 (file)
index 15f94ce..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
-# onceonly.m4 serial 9
-dnl Copyright (C) 2002-2003, 2005-2006, 2008-2014 Free Software Foundation,
-dnl Inc.
-dnl
-dnl This file is free software; you can redistribute it and/or modify
-dnl it under the terms of the GNU General Public License as published by
-dnl the Free Software Foundation; either version 3 of the License, or
-dnl (at your option) any later version.
-dnl
-dnl This file is distributed in the hope that it will be useful,
-dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
-dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-dnl GNU General Public License for more details.
-dnl
-dnl You should have received a copy of the GNU General Public License
-dnl along with this file.  If not, see <http://www.gnu.org/licenses/>.
-dnl
-dnl As a special exception to the GNU General Public License,
-dnl this file may be distributed as part of a program
-dnl that contains a configuration script generated by Autoconf, under
-dnl the same distribution terms as the rest of that program.
-
-dnl This file defines some "once only" variants of standard autoconf macros.
-dnl   AC_CHECK_HEADERS_ONCE          like  AC_CHECK_HEADERS
-dnl   AC_CHECK_FUNCS_ONCE            like  AC_CHECK_FUNCS
-dnl   AC_CHECK_DECLS_ONCE            like  AC_CHECK_DECLS
-dnl   AC_REQUIRE([AC_FUNC_STRCOLL])  like  AC_FUNC_STRCOLL
-dnl The advantage is that the check for each of the headers/functions/decls
-dnl will be put only once into the 'configure' file. It keeps the size of
-dnl the 'configure' file down, and avoids redundant output when 'configure'
-dnl is run.
-dnl The drawback is that the checks cannot be conditionalized. If you write
-dnl   if some_condition; then gl_CHECK_HEADERS(stdlib.h); fi
-dnl inside an AC_DEFUNed function, the gl_CHECK_HEADERS macro call expands to
-dnl empty, and the check will be inserted before the body of the AC_DEFUNed
-dnl function.
-
-dnl The original code implemented AC_CHECK_HEADERS_ONCE and AC_CHECK_FUNCS_ONCE
-dnl in terms of AC_DEFUN and AC_REQUIRE. This implementation uses diversions to
-dnl named sections DEFAULTS and INIT_PREPARE in order to check all requested
-dnl headers at once, thus reducing the size of 'configure'. It is known to work
-dnl with autoconf 2.57..2.62 at least . The size reduction is ca. 9%.
-
-dnl Autoconf version 2.59 plus gnulib is required; this file is not needed
-dnl with Autoconf 2.60 or greater. But note that autoconf's implementation of
-dnl AC_CHECK_DECLS_ONCE expects a comma-separated list of symbols as first
-dnl argument!
-AC_PREREQ([2.59])
-
-# AC_CHECK_HEADERS_ONCE(HEADER1 HEADER2 ...) is a once-only variant of
-# AC_CHECK_HEADERS(HEADER1 HEADER2 ...).
-AC_DEFUN([AC_CHECK_HEADERS_ONCE], [
-  :
-  m4_foreach_w([gl_HEADER_NAME], [$1], [
-    AC_DEFUN([gl_CHECK_HEADER_]m4_quote(m4_translit(gl_HEADER_NAME,
-                                                    [./-], [___])), [
-      m4_divert_text([INIT_PREPARE],
-        [gl_header_list="$gl_header_list gl_HEADER_NAME"])
-      gl_HEADERS_EXPANSION
-      AH_TEMPLATE(AS_TR_CPP([HAVE_]m4_defn([gl_HEADER_NAME])),
-        [Define to 1 if you have the <]m4_defn([gl_HEADER_NAME])[> header file.])
-    ])
-    AC_REQUIRE([gl_CHECK_HEADER_]m4_quote(m4_translit(gl_HEADER_NAME,
-                                                      [./-], [___])))
-  ])
-])
-m4_define([gl_HEADERS_EXPANSION], [
-  m4_divert_text([DEFAULTS], [gl_header_list=])
-  AC_CHECK_HEADERS([$gl_header_list])
-  m4_define([gl_HEADERS_EXPANSION], [])
-])
-
-# AC_CHECK_FUNCS_ONCE(FUNC1 FUNC2 ...) is a once-only variant of
-# AC_CHECK_FUNCS(FUNC1 FUNC2 ...).
-AC_DEFUN([AC_CHECK_FUNCS_ONCE], [
-  :
-  m4_foreach_w([gl_FUNC_NAME], [$1], [
-    AC_DEFUN([gl_CHECK_FUNC_]m4_defn([gl_FUNC_NAME]), [
-      m4_divert_text([INIT_PREPARE],
-        [gl_func_list="$gl_func_list gl_FUNC_NAME"])
-      gl_FUNCS_EXPANSION
-      AH_TEMPLATE(AS_TR_CPP([HAVE_]m4_defn([gl_FUNC_NAME])),
-        [Define to 1 if you have the ']m4_defn([gl_FUNC_NAME])[' function.])
-    ])
-    AC_REQUIRE([gl_CHECK_FUNC_]m4_defn([gl_FUNC_NAME]))
-  ])
-])
-m4_define([gl_FUNCS_EXPANSION], [
-  m4_divert_text([DEFAULTS], [gl_func_list=])
-  AC_CHECK_FUNCS([$gl_func_list])
-  m4_define([gl_FUNCS_EXPANSION], [])
-])
-
-# AC_CHECK_DECLS_ONCE(DECL1 DECL2 ...) is a once-only variant of
-# AC_CHECK_DECLS(DECL1, DECL2, ...).
-AC_DEFUN([AC_CHECK_DECLS_ONCE], [
-  :
-  m4_foreach_w([gl_DECL_NAME], [$1], [
-    AC_DEFUN([gl_CHECK_DECL_]m4_defn([gl_DECL_NAME]), [
-      AC_CHECK_DECLS(m4_defn([gl_DECL_NAME]))
-    ])
-    AC_REQUIRE([gl_CHECK_DECL_]m4_defn([gl_DECL_NAME]))
-  ])
-])
diff --git a/src/libs/gnulib/m4/stdbool.m4 b/src/libs/gnulib/m4/stdbool.m4
deleted file mode 100644 (file)
index 006ed52..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-# Check for stdbool.h that conforms to C99.
-
-dnl Copyright (C) 2002-2006, 2009-2014 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-#serial 5
-
-# Prepare for substituting <stdbool.h> if it is not supported.
-
-AC_DEFUN([AM_STDBOOL_H],
-[
-  AC_REQUIRE([AC_CHECK_HEADER_STDBOOL])
-
-  # Define two additional variables used in the Makefile substitution.
-
-  if test "$ac_cv_header_stdbool_h" = yes; then
-    STDBOOL_H=''
-  else
-    STDBOOL_H='stdbool.h'
-  fi
-  AC_SUBST([STDBOOL_H])
-  AM_CONDITIONAL([GL_GENERATE_STDBOOL_H], [test -n "$STDBOOL_H"])
-
-  if test "$ac_cv_type__Bool" = yes; then
-    HAVE__BOOL=1
-  else
-    HAVE__BOOL=0
-  fi
-  AC_SUBST([HAVE__BOOL])
-])
-
-# AM_STDBOOL_H will be renamed to gl_STDBOOL_H in the future.
-AC_DEFUN([gl_STDBOOL_H], [AM_STDBOOL_H])
-
-# This version of the macro is needed in autoconf <= 2.68.
-
-AC_DEFUN([AC_CHECK_HEADER_STDBOOL],
-  [AC_CACHE_CHECK([for stdbool.h that conforms to C99],
-     [ac_cv_header_stdbool_h],
-     [AC_COMPILE_IFELSE(
-        [AC_LANG_PROGRAM(
-           [[
-             #include <stdbool.h>
-             #ifndef bool
-              "error: bool is not defined"
-             #endif
-             #ifndef false
-              "error: false is not defined"
-             #endif
-             #if false
-              "error: false is not 0"
-             #endif
-             #ifndef true
-              "error: true is not defined"
-             #endif
-             #if true != 1
-              "error: true is not 1"
-             #endif
-             #ifndef __bool_true_false_are_defined
-              "error: __bool_true_false_are_defined is not defined"
-             #endif
-
-             struct s { _Bool s: 1; _Bool t; } s;
-
-             char a[true == 1 ? 1 : -1];
-             char b[false == 0 ? 1 : -1];
-             char c[__bool_true_false_are_defined == 1 ? 1 : -1];
-             char d[(bool) 0.5 == true ? 1 : -1];
-             /* See body of main program for 'e'.  */
-             char f[(_Bool) 0.0 == false ? 1 : -1];
-             char g[true];
-             char h[sizeof (_Bool)];
-             char i[sizeof s.t];
-             enum { j = false, k = true, l = false * true, m = true * 256 };
-             /* The following fails for
-                HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */
-             _Bool n[m];
-             char o[sizeof n == m * sizeof n[0] ? 1 : -1];
-             char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1];
-             /* Catch a bug in an HP-UX C compiler.  See
-                http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html
-                http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html
-              */
-             _Bool q = true;
-             _Bool *pq = &q;
-           ]],
-           [[
-             bool e = &s;
-             *pq |= q;
-             *pq |= ! q;
-             /* Refer to every declared value, to avoid compiler optimizations.  */
-             return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l
-                     + !m + !n + !o + !p + !q + !pq);
-           ]])],
-        [ac_cv_header_stdbool_h=yes],
-        [ac_cv_header_stdbool_h=no])])
-   AC_CHECK_TYPES([_Bool])
-])
diff --git a/src/libs/gnulib/m4/wint_t.m4 b/src/libs/gnulib/m4/wint_t.m4
deleted file mode 100644 (file)
index 9b07b07..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-# wint_t.m4 serial 5 (gettext-0.18.2)
-dnl Copyright (C) 2003, 2007-2014 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-dnl From Bruno Haible.
-dnl Test whether <wchar.h> has the 'wint_t' type.
-dnl Prerequisite: AC_PROG_CC
-
-AC_DEFUN([gt_TYPE_WINT_T],
-[
-  AC_CACHE_CHECK([for wint_t], [gt_cv_c_wint_t],
-    [AC_COMPILE_IFELSE(
-       [AC_LANG_PROGRAM(
-          [[
-/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
-   <wchar.h>.
-   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included
-   before <wchar.h>.  */
-#include <stddef.h>
-#include <stdio.h>
-#include <time.h>
-#include <wchar.h>
-            wint_t foo = (wchar_t)'\0';]],
-          [[]])],
-       [gt_cv_c_wint_t=yes],
-       [gt_cv_c_wint_t=no])])
-  if test $gt_cv_c_wint_t = yes; then
-    AC_DEFINE([HAVE_WINT_T], [1], [Define if you have the 'wint_t' type.])
-  fi
-])
diff --git a/src/libs/libbib/Makefile.sub b/src/libs/libbib/Makefile.sub
deleted file mode 100644 (file)
index e8986ab..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-# Makefile.sub for `libbib'
-#
-# File position: <groff-source>/src/libs/libbib/Makefile.sub
-#
-# Copyright (C) 2014  Free Software Foundation, Inc.
-#
-# This file is part of `font utf8' which is part of `groff'.
-#
-# `groff' is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 2 of the License, or
-# (at your option) any later version.
-#
-# `groff' 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
-# <http://www.gnu.org/licenses/gpl-2.0.html>.
-#
-########################################################################
-
-LIB=bib
-OBJS=\
-  common.$(OBJEXT) \
-  index.$(OBJEXT) \
-  linear.$(OBJEXT) \
-  search.$(OBJEXT) \
-  map.$(OBJEXT)
-CCSRCS=\
-  $(srcdir)/common.cpp \
-  $(srcdir)/index.cpp \
-  $(srcdir)/linear.cpp \
-  $(srcdir)/search.cpp
-CSRCS=\
-  $(srcdir)/map.c
-
-########################################################################
-# Emacs settings
-########################################################################
-#
-# Local Variables:
-# mode: makefile
-# End:
index 5f7b010..9ccfebf 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -14,7 +14,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 unsigned hash(const char *s, int len)
 {
index ea4df53..39d473b 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include "lib.h"
 
@@ -149,15 +149,19 @@ int index_search_item::load(int fd)
   unused(&fd_closer);
   struct stat sb;
   if (fstat(fd, &sb) < 0) {
-    error("can't fstat `%1': %2", name, strerror(errno));
+    error("can't fstat '%1': %2", name, strerror(errno));
     return 0;
   }
   if (!S_ISREG(sb.st_mode)) {
-    error("`%1' is not a regular file", name);
+    error("'%1' is not a regular file", name);
     return 0;
   }
   mtime = sb.st_mtime;
   int size = int(sb.st_size);
+  if (size == 0) {
+    error("'%1' is an empty file", name);
+    return 0;
+  }
   char *addr;
   map_addr = mapread(fd, size);
   if (map_addr) {
@@ -167,7 +171,7 @@ int index_search_item::load(int fd)
   else {
     addr = buffer = (char *)malloc(size);
     if (buffer == 0) {
-      error("can't allocate buffer for `%1'", name);
+      error("can't allocate buffer for '%1'", name);
       return 0;
     }
     char *ptr = buffer;
@@ -175,11 +179,11 @@ int index_search_item::load(int fd)
     while (bytes_to_read > 0) {
       int nread = read(fd, ptr, bytes_to_read);
       if (nread == 0) {
-       error("unexpected EOF on `%1'", name);
+       error("unexpected EOF on '%1'", name);
        return 0;
       }
       if (nread < 0) {
-       error("read error on `%1': %2", name, strerror(errno));
+       error("read error on '%1': %2", name, strerror(errno));
        return 0;
       }
       bytes_to_read -= nread;
@@ -188,11 +192,11 @@ int index_search_item::load(int fd)
   }
   header = *(index_header *)addr;
   if (header.magic != INDEX_MAGIC) {
-    error("`%1' is not an index file: wrong magic number", name);
+    error("'%1' is not an index file: wrong magic number", name);
     return 0;
   }
   if (header.version != INDEX_VERSION) {
-    error("version number in `%1' is wrong: was %2, should be %3",
+    error("version number in '%1' is wrong: was %2, should be %3",
          name, header.version, INDEX_VERSION);
     return 0;
   }
@@ -202,7 +206,7 @@ int index_search_item::load(int fd)
            + header.strings_size
            + sizeof(header));
   if (sz != size) {
-    error("size of `%1' is wrong: was %2, should be %3",
+    error("size of '%1' is wrong: was %2, should be %3",
          name, size, sz);
     return 0;
   }
@@ -254,7 +258,7 @@ int index_search_item::verify()
   const char *reason = do_verify();
   if (!reason)
     return 1;
-  error("`%1' is bad: %2", name, reason);
+  error("'%1' is bad: %2", name, reason);
   return 0;
 }
 
@@ -305,7 +309,7 @@ index_search_item_iterator::index_search_item_iterator(index_search_item *ind,
   found_list = indx->search(q, strlen(q), &temp_list);
   if (!found_list) {
     found_list = &minus_one;
-    warning("all keys would have been discarded in constructing index `%1'",
+    warning("all keys would have been discarded in constructing index '%1'",
            indx->name);
   }
 }
@@ -360,7 +364,7 @@ int index_search_item_iterator::get_tag(int tagno,
   const char *filename = indx->munge_filename(indx->pool + tp->filename_index);
   int fd = open(filename, O_RDONLY | O_BINARY);
   if (fd < 0) {
-    error("can't open `%1': %2", filename, strerror(errno));
+    error("can't open '%1': %2", filename, strerror(errno));
     return 0;
   }
   struct stat sb;
@@ -383,17 +387,17 @@ int index_search_item_iterator::get_tag(int tagno,
     return 0;
   }
   if (tp->start != 0 && fseek(fp, long(tp->start), 0) < 0)
-    error("can't seek on `%1': %2", filename, strerror(errno));
+    error("can't seek on '%1': %2", filename, strerror(errno));
   else {
     int length = tp->length;
     int err = 0;
     if (length == 0) {
       if (fstat(fileno(fp), &sb) < 0) {
-       error("can't stat `%1': %2", filename, strerror(errno));
+       error("can't stat '%1': %2", filename, strerror(errno));
        err = 1;
       }
       else if (!S_ISREG(sb.st_mode)) {
-       error("`%1' is not a regular file", filename);
+       error("'%1' is not a regular file", filename);
        err = 1;
       }
       else
@@ -406,7 +410,7 @@ int index_search_item_iterator::get_tag(int tagno,
        buf = new char[buflen];
       }
       if (fread(buf + 1, 1, length, fp) != (size_t)length)
-       error("fread on `%1' failed: %2", filename, strerror(errno));
+       error("fread on '%1' failed: %2", filename, strerror(errno));
       else {
        buf[0] = '\n';
        // Remove the CR characters from CRLF pairs.
@@ -564,7 +568,7 @@ void index_search_item::read_common_words_file()
   errno = 0;
   FILE *fp = fopen(common_words_file, "r");
   if (!fp) {
-    error("can't open `%1': %2", common_words_file, strerror(errno));
+    error("can't open '%1': %2", common_words_file, strerror(errno));
     return;
   }
   common_words_table_size = 2*header.common + 1;
@@ -614,7 +618,7 @@ void index_search_item::add_out_of_date_file(int fd, const char *filename,
     if ((*pp)->is_named(filename))
       return;
   *pp = make_linear_search_item(fd, filename, fid);
-  warning("`%1' modified since `%2' created", filename, name);
+  warning("'%1' modified since '%2' created", filename, name);
 }
 
 void index_search_item::check_files()
@@ -626,11 +630,11 @@ void index_search_item::check_files()
     const char *path = munge_filename(ptr);
     struct stat sb;
     if (stat(path, &sb) < 0)
-      error("can't stat `%1': %2", path, strerror(errno));
+      error("can't stat '%1': %2", path, strerror(errno));
     else if (sb.st_mtime > mtime) {
       int fd = open(path, O_RDONLY | O_BINARY);
       if (fd < 0)
-       error("can't open `%1': %2", path, strerror(errno));
+       error("can't open '%1': %2", path, strerror(errno));
       else
        add_out_of_date_file(fd, path, filename_id + (ptr - pool));
     }
similarity index 51%
rename from font/devX75/Makefile.sub
rename to src/libs/libbib/libbib.am
index a4d344d..7fdeee6 100644 (file)
@@ -1,37 +1,43 @@
-# Makefile.sub for `font devX75'
+# Automake rules for 'libbib'
 #
-# File position: <groff-source>/font/devX75/Makefile.sub
+# File position: <groff-source>/src/libs/libbib/libbib.am
 #
-# Copyright (C) 2014
-#   Free Software Foundation, Inc.
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
 #
-# Last update: 2 Sep 2014
+# Latest update: 13 Aug 2015
 #
-# This file is part of `font utf8' which is part of `groff'.
-#
-# `groff' is free software; you can redistribute it and/or modify it
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
 # the Free Software Foundation, either version 2 of the License, or
 # (at your option) any later version.
 #
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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
+# along with this program.  If not, see
 # <http://www.gnu.org/licenses/gpl-2.0.html>.
 #
 ########################################################################
 
-DEV=X75
-DEVFILES=DESC TR TI TB TBI CR CI CB CBI HR HI HB HBI NR NI NB NBI S
+noinst_LIBRARIES += libbib.a
+libbib_a_SOURCES = \
+  src/libs/libbib/common.cpp \
+  src/libs/libbib/index.cpp \
+  src/libs/libbib/linear.cpp \
+  src/libs/libbib/search.cpp \
+  src/libs/libbib/map.c
+src/libs/libbib/index.$(OBJEXT): defs.h
+
 
 ########################################################################
-# Emacs settings
+# Editor settings
 ########################################################################
 #
 # Local Variables:
-# mode: makefile
+# mode: makefile-automake
+# fill-column: 72
 # End:
+# vim: set filetype=automake textwidth=72:
index e62d660..f583c68 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include "lib.h"
 
@@ -303,9 +303,9 @@ int file_buffer::load(int fd, const char *filename)
 {
   struct stat sb;
   if (fstat(fd, &sb) < 0)
-    error("can't fstat `%1': %2", filename, strerror(errno));
+    error("can't fstat '%1': %2", filename, strerror(errno));
   else if (!S_ISREG(sb.st_mode))
-    error("`%1' is not a regular file", filename);
+    error("'%1' is not a regular file", filename);
   else {
     // We need one character extra at the beginning for an additional newline
     // used as a sentinel.  We get 4 instead so that the read buffer will be
@@ -316,16 +316,16 @@ int file_buffer::load(int fd, const char *filename)
     buffer = new char[size + 4 + 1];
     int nread = read(fd, buffer + 4, size);
     if (nread < 0)
-      error("error reading `%1': %2", filename, strerror(errno));
+      error("error reading '%1': %2", filename, strerror(errno));
     else if (nread != size)
-      error("size of `%1' decreased", filename);
+      error("size of '%1' decreased", filename);
     else {
       char c;
       nread = read(fd, &c, 1);
       if (nread != 0)
-       error("size of `%1' increased", filename);
+       error("size of '%1' increased", filename);
       else if (memchr(buffer + 4, '\0', size < 1024 ? size : 1024) != 0)
-       error("database `%1' is a binary file", filename);
+       error("database '%1' is a binary file", filename);
       else {
        close(fd);
        buffer[3] = '\n';
index c8d7962..5d635af 100644 (file)
@@ -14,7 +14,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include <stdlib.h>
 
@@ -36,6 +36,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. */
 extern "C" {
 #endif
 
+/* Prototypes */
+char *mapread(int, int);
+int unmap(char *, int);
+
 char *mapread(int fd, int nbytes)
 {
   char *p = (char *)mmap((void *)0, (size_t)nbytes, PROT_READ,
index 06bd19b..9d0cab1 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*- 
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include "lib.h"
 
@@ -56,7 +56,7 @@ void search_list::add_file(const char *filename, int silent)
     int fd = open(filename, O_RDONLY | O_BINARY);
     if (fd < 0) {
       if (!silent)
-       error("can't open `%1': %2", filename, strerror(errno));
+        error("can't open '%1': %2", filename, strerror(errno));
     }
     else
       p = make_linear_search_item(fd, filename, next_fid);
diff --git a/src/libs/libdriver/Makefile.sub b/src/libs/libdriver/Makefile.sub
deleted file mode 100644 (file)
index 4659ffe..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-# Makefile.sub for `libdriver'
-#
-# File position: <groff-source>/src/libs/libdriver/Makefile.sub
-#
-# Copyright (C) 2014  Free Software Foundation, Inc.
-#
-# This file is part of `font utf8' which is part of `groff'.
-#
-# `groff' is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 2 of the License, or
-# (at your option) any later version.
-#
-# `groff' 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
-# <http://www.gnu.org/licenses/gpl-2.0.html>.
-#
-########################################################################
-
-LIB=driver
-OBJS=\
-  input.$(OBJEXT) \
-  printer.$(OBJEXT)
-CCSRCS=\
-  $(srcdir)/input.cpp \
-  $(srcdir)/printer.cpp
-
-########################################################################
-# Emacs settings
-########################################################################
-#
-# Local Variables:
-# mode: makefile
-# End:
index da0895e..fd46d77 100644 (file)
@@ -2,7 +2,7 @@
 
 // <groff_src_dir>/src/libs/libdriver/input.cpp
 
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
 
    Written by James Clark (jjc@jclark.com)
    Major rewrite 2001 by Bernd Warken <groff-bernd.warken-72@web.de>
@@ -20,7 +20,7 @@
    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 <http://www.gnu.org/licenses/>.
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
 /* Description
@@ -30,7 +30,7 @@
 
    All parsed information is processed within the function do_file().
    A device postprocessor just needs to fill in the methods for the class
-   `printer' (or rather a derived class) without having to worry about
+   'printer' (or rather a derived class) without having to worry about
    the syntax of the intermediate output format.  Consequently, the
    programming of groff postprocessors is similar to the development of
    device drivers.
    making groff fully compatible with classical troff without pain.
 
    Bugs fixed
-   - Unknown subcommands of `D' and `x' are now ignored like in the
+   - Unknown subcommands of 'D' and 'x' are now ignored like in the
      classical case, but a warning is issued.  This was also
      implemented for the other commands.
-   - A warning is emitted if `x stop' is missing.
-   - `DC' and `DE' commands didn't position to the right end after
+   - A warning is emitted if 'x stop' is missing.
+   - 'DC' and 'DE' commands didn't position to the right end after
      drawing (now they do), see discussion below.
-   - So far, `x stop' was ignored.  Now it terminates the processing
+   - So far, 'x stop' was ignored.  Now it terminates the processing
      of the current intermediate output file like the classical troff.
-   - The command `c' didn't check correctly on white-space.
+   - The command 'c' didn't check correctly on white-space.
    - The environment stack wasn't suitable for the color extensions
      (replaced by a class).
    - The old groff parser could only handle a prologue with the first
@@ -71,9 +71,9 @@
    - Range checks for numbers implemented.
 
    New and improved features
-   - The color commands `m' and `DF' are added.
-   - The old color command `Df' is now converted and delegated to `DFg'.
-   - The command `F' is implemented as `use intended file name'.  It
+   - The color commands 'm' and 'DF' are added.
+   - The old color command 'Df' is now converted and delegated to 'DFg'.
+   - The command 'F' is implemented as 'use intended file name'.  It
      checks whether its argument agrees with the file name used so far,
      otherwise a warning is issued.  Then the new name is remembered
      and used for the following error messages.
      It extends the rule of the classical troff output language in a
      logical way instead of the rather strange actual positioning.
      For details, see the discussion below.
-   - For the `D' commands that only set the environment, the calling of
+   - For the 'D' commands that only set the environment, the calling of
      pr->send_draw() was removed because this doesn't make sense for
-     the `DF' commands; the (changed) environment is sent with the
+     the 'DF' commands; the (changed) environment is sent with the
      next command anyway.
    - Error handling was clearly separated into warnings and fatal.
-   - The error behavior on additional arguments for `D' and `x'
+   - The error behavior on additional arguments for 'D' and 'x'
      commands with a fixed number of arguments was changed from being
      ignored (former groff) to issue a warning and ignore (now), see
      skip_line_x().  No fatal was chosen because both string and
    - All D commands with a variable number of args expect an even
      number of trailing integer arguments, so fatal on error was
      implemented.
-   - Disable environment stack and the commands `{' and `}' by making
+   - Disable environment stack and the commands '{' and '}' by making
      them conditional on macro USE_ENV_STACK; actually, this is
      undefined by default.  There isn't any known application for these
      features.
 
    Cosmetics
-   - Nested `switch' commands are avoided by using more functions.
+   - Nested 'switch' commands are avoided by using more functions.
      Dangerous 'fall-through's avoided.
    - Commands and functions are sorted alphabetically (where possible).
    - Dynamic arrays/buffers are now implemented as container classes.
      streamlined by using classes.
    - Use standard C math functions for number handling, so getting rid
      of differences to '0'.
-   - The macro `IntArg' has been created for an easier transition
-     to guaranteed 32 bits integers (`int' is enough for GNU, while
-     ANSI only guarantees `long int' to have a length of 32 bits).
-   - The many usages of type `int' are differentiated by using `Char',
-     `bool', and `IntArg' where appropriate.
+   - The macro 'IntArg' has been created for an easier transition
+     to guaranteed 32 bits integers ('int' is enough for GNU, while
+     ANSI only guarantees 'long int' to have a length of 32 bits).
+   - The many usages of type 'int' are differentiated by using 'Char',
+     'bool', and 'IntArg' where appropriate.
    - To ease the calls of the local utility functions, the parser
-     variables `current_file', `npages', and `current_env'
+     variables 'current_file', 'npages', and 'current_env'
      (formerly env) were made global to the file (formerly they were
      local to the do_file() function)
    - Various comments were added.
 
    TODO
    - Get rid of the stupid drawing positioning.
-   - Can the `Dt' command be completely handled by setting environment
+   - Can the 'Dt' command be completely handled by setting environment
      within do_file() instead of sending to pr?
    - Integer arguments must be >= 32 bits, use conditional #define.
    - Add scaling facility for classical device independence and
      non-groff devices.  Classical troff output had a quasi device
      independence by scaling the intermediate output to the resolution
      of the postprocessor device if different from the one specified
-     with `x T', groff have not.  So implement full quasi device
+     with 'x T', groff have not.  So implement full quasi device
      indepedence, including the mapping of the strange classical
      devices to the postprocessor device (seems to be reasonably
      easy).
    - The external, global pointer variables are not optimally handled.
-     - The global variables `current_filename',
-       `current_source_filename', and `current_lineno' are only used for
-       error reporting.  So implement a static class `Error'
-       (`::' calls).
-     - The global `device' is the name used during the formatting
+     - The global variables 'current_filename',
+       'current_source_filename', and 'current_lineno' are only used for
+       error reporting.  So implement a static class 'Error'
+       ('::' calls).
+     - The global 'device' is the name used during the formatting
        process; there should be a new variable for the device name used
        during the postprocessing.
-  - Implement the B-spline drawing `D~' for all graphical devices.
-  - Make `environment' a class with an overflow check for its members
+  - Implement the B-spline drawing 'D~' for all graphical devices.
+  - Make 'environment' a class with an overflow check for its members
     and a delete method to get rid of delete_current_env().
-  - Implement the `EnvStack' to use `new' instead of `malloc'.
+  - Implement the 'EnvStack' to use 'new' instead of 'malloc'.
   - The class definitions of this document could go into a new file.
-  - The comments in this section should go to a `Changelog' or some
-    `README' file in this directory.
+  - The comments in this section should go to a 'Changelog' or some
+    'README' file in this directory.
 */
 
 /*
   Discussion of the positioning by drawing commands
 
   There was some confusion about the positioning of the graphical
-  pointer at the printout after having executed a `D' command.
+  pointer at the printout after having executed a 'D' command.
   The classical troff manual of Ossanna & Kernighan specified,
 
-    `The position after a graphical object has been drawn is
+    'The position after a graphical object has been drawn is
      at its end; for circles and ellipses, the "end" is at the
      right side.'
 
 
   The former groff_out(5) specified to use the alternative arguments
   sum displacement for calculating the drawing positioning of
-  non-classical commands, including the `Dt' command (setting-only)
+  non-classical commands, including the 'Dt' command (setting-only)
   and closed polygons.  Applying this to the new groff color commands
   will lead to disaster.  For their arguments can take large values (>
   65000).  On low resolution devices, the displacement of such large
   nonsense specification has come to a natural end anyway.
 
   The groff source code, however, had no positioning for the
-  setting-only commands (esp. `Dt'), the right-end positioning for
+  setting-only commands (esp. 'Dt'), the right-end positioning for
   outlined circles and ellipses, and the alternative argument sum
   displacement for all other commands (including filled circles and
   ellipses).
   The reason why no one seems to have suffered from this mayhem so
   far is that the graphical objects are usually generated by
   preprocessors like pic that do not depend on the automatic
-  positioning.  When using the low level `\D' escape sequences or `D'
+  positioning.  When using the low level '\D' escape sequences or 'D'
   output commands, the strange positionings can be circumvented by
-  absolute positionings or by tricks like `\Z'.
+  absolute positionings or by tricks like '\Z'.
 
   So doing an exorcism on the strange, incompatible displacements might
   not harm any existing documents, but will make the usage of the
   provided for testing the funny former behavior.
 
   The new rule implies the following behavior.
-  - Setting commands (`Dt', `Df', `DF') and polygons (`Dp' and `DP')
+  - Setting commands ('Dt', 'Df', 'DF') and polygons ('Dp' and 'DP')
     do not change position now.
-  - Filled circles and ellipses (`DC' and `DE') position at their
-    most right point (outlined ones `Dc' and `De' did this anyway).
+  - Filled circles and ellipses ('DC' and 'DE') position at their
+    most right point (outlined ones 'Dc' and 'De' did this anyway).
   - As before, all open graphical objects position to their final
     drawing point (alternate sum of the command arguments).
 
 #define STUPID_DRAWING_POSITIONING
 #endif
 
-// Decide whether the commands `{' and `}' for different environments
+// Decide whether the commands '{' and '}' for different environments
 // should be used.
 #undef USE_ENV_STACK
 
@@ -304,12 +304,12 @@ class StringBuf {
 public:
   StringBuf(void);             // allocate without storing
   ~StringBuf(void);
-  void append(const Char);     // append character to `data'
-  char *make_string(void);     // return new copy of `data' with '\0'
+  void append(const Char);     // append character to 'data'
+  char *make_string(void);     // return new copy of 'data' with '\0'
   bool is_empty(void) {                // true if none stored
     return (num_stored > 0) ? false : true;
   }
-  void reset(void);            // set `num_stored' to 0
+  void reset(void);            // set 'num_stored' to 0
 };
 
 #ifdef USE_ENV_STACK
@@ -344,7 +344,7 @@ printer *pr;
 
 // Note:
 //
-//   We rely on an implementation of the `new' operator which aborts
+//   We rely on an implementation of the 'new' operator which aborts
 //   gracefully if it can't allocate memory (e.g. from libgroff/new.cpp).
 
 
@@ -355,7 +355,7 @@ printer *pr;
 FILE *current_file = 0;                // current input stream for parser
 
 // npages: number of pages processed so far (including current page),
-//         _not_ the page number in the printout (can be set with `p').
+//         _not_ the page number in the printout (can be set with 'p').
 int npages = 0;
 
 const ColorArg
@@ -392,7 +392,7 @@ IntArray *get_D_fixed_args_odd_dummy(const size_t);
                                // arguments plus optional dummy
 IntArray *get_D_variable_args(void);
                                 // variable, even number of int args
-char *get_extended_arg(void);  // argument for `x X' (several lines)
+char *get_extended_arg(void);  // argument for 'x X' (several lines)
 IntArg get_integer_arg(void);  // read in next integer argument
 IntArray *get_possibly_integer_args();
                                // 0 or more integer arguments
@@ -612,7 +612,7 @@ void delete_current_env(void)
 void
 fatal_command(char command)
 {
-  fatal("`%1' command invalid before first `p' command", command);
+  fatal("'%1' command invalid before first 'p' command", command);
 }
 
 //////////////////////////////////////////////////////////////////////
@@ -654,8 +654,8 @@ get_color_arg(void)
 
    number: In-parameter, the number of arguments to be retrieved.
    ignore: In-parameter, ignore next argument -- GNU troff always emits
-           pairs of parameters for `D' extensions added by groff.
-           Default is `false'.
+           pairs of parameters for 'D' extensions added by groff.
+           Default is 'false'.
 
    Return: New IntArray containing the arguments.
 */
@@ -732,7 +732,7 @@ get_D_variable_args()
 
 //////////////////////////////////////////////////////////////////////
 /* get_extended_arg():
-   Retrieve extended arg for `x X' command.
+   Retrieve extended arg for 'x X' command.
 
    - Skip leading spaces and tabs, error on EOL or newline.
    - Return everything before the next NL or EOF ('#' is not a comment);
@@ -1175,7 +1175,7 @@ skip_line_warn(void)
 
 //////////////////////////////////////////////////////////////////////
 /* skip_line_D ():
-   Skip line in `D' commands.
+   Skip line in 'D' commands.
 
    Decide whether in case of an additional argument a fatal error is
    raised (the documented classical behavior), only a warning is
@@ -1192,7 +1192,7 @@ skip_line_D(void)
 
 //////////////////////////////////////////////////////////////////////
 /* skip_line_x ():
-   Skip line in `x' commands.
+   Skip line in 'x' commands.
 
    Decide whether in case of an additional argument a fatal error is
    raised (the documented classical behavior), only a warning is
@@ -1296,7 +1296,7 @@ parse_color_command(color *col)
     col->set_rgb(red, green, blue);
     break;
   default:
-    error("invalid color scheme `%1'", (int) subcmd);
+    error("invalid color scheme '%1'", (int) subcmd);
     break;
   } // end of color subcommands
 }
@@ -1377,7 +1377,7 @@ parse_D_command()
        current_env->fill = new color(current_env->col);
       }
       pr->change_fill_color(current_env);
-      // skip unused `vertical' component (\D'...' always emits pairs)
+      // skip unused 'vertical' component (\D'...' always emits pairs)
       (void) get_integer_arg();
 #   ifdef STUPID_DRAWING_POSITIONING
       current_env->hpos += arg;
@@ -1440,8 +1440,8 @@ parse_D_command()
    - current_env: is set by many subcommands.
    - npages: page counting variable
 
-   Return: boolean in the meaning of `stopped'
-           - true if parsing should be stopped (`x stop').
+   Return: boolean in the meaning of 'stopped'
+           - true if parsing should be stopped ('x stop').
            - false if parsing should continue.
 */
 bool
@@ -1464,7 +1464,7 @@ parse_x_command(void)
     {
       char *str_arg = get_extended_arg();
       if (str_arg == 0)
-       warning("empty argument for `x F' command");
+       warning("empty argument for 'x F' command");
       else {
        remember_source_filename(str_arg);
        a_delete str_arg;
@@ -1478,14 +1478,14 @@ parse_x_command(void)
     skip_line_x();
     break;
   case 'i':                    // x init: initialize device
-    error("duplicate `x init' command");
+    error("duplicate 'x init' command");
     skip_line_x();
     break;
   case 'p':                    // x pause: pause device
     skip_line_x();
     break;
   case 'r':                    // x res: set resolution
-    error("duplicate `x res' command");
+    error("duplicate 'x res' command");
     skip_line_x();
     break;
   case 's':                    // x stop: stop device
@@ -1500,7 +1500,7 @@ parse_x_command(void)
     skip_line_x();
     break;
   case 'T':                    // x Typesetter: set typesetter
-    error("duplicate `x T' command");
+    error("duplicate 'x T' command");
     skip_line();
     break;
   case 'u':                    // x underline: from .cu
@@ -1515,7 +1515,7 @@ parse_x_command(void)
     {
       char *str_arg = get_extended_arg(); // includes line skip
       if (npages <= 0)
-       error("`x X' command invalid before first `p' command");
+       error("'x X' command invalid before first 'p' command");
       else if (str_arg && (strncmp(str_arg, "devtag:",
                                   strlen("devtag:")) == 0))
        pr->devtag(str_arg, current_env);
@@ -1525,7 +1525,7 @@ parse_x_command(void)
       break;
     }
   default:                     // ignore unknown x commands, but warn
-    warning("unknown command `x %1'", subcmd);
+    warning("unknown command 'x %1'", subcmd);
     skip_line();
   }
   a_delete subcmd_str;
@@ -1556,8 +1556,8 @@ do_file(const char *filename)
   // setup of global variables
   npages = 0;
   current_lineno = 1;
-  // `pr' is initialized after the prologue.
-  // `device' is set by the 1st prologue command.
+  // 'pr' is initialized after the prologue.
+  // 'device' is set by the 1st prologue command.
 
   if (filename[0] == '-' && filename[1] == '\0')
     current_file = stdin;
@@ -1565,7 +1565,7 @@ do_file(const char *filename)
     errno = 0;
     current_file = fopen(filename, "r");
     if (errno != 0 || current_file == 0) {
-      error("can't open file `%1'", filename);
+      error("can't open file '%1'", filename);
       return;
     }
   }
@@ -1588,18 +1588,18 @@ do_file(const char *filename)
     char *str_arg;
     IntArg int_arg;
 
-    // 1st command `x T'
-    command = next_command();  
+    // 1st command 'x T'
+    command = next_command();
     if ((int) command == EOF)
       return;
     if ((int) command != 'x')
-      fatal("the first command must be `x T'");
+      fatal("the first command must be 'x T'");
     str_arg = get_string_arg();
     if (str_arg[0] != 'T')
-      fatal("the first command must be `x T'");
+      fatal("the first command must be 'x T'");
     a_delete str_arg;
     char *tmp_dev = get_string_arg();
-    if (pr == 0) {             // note: `pr' initialized after prologue
+    if (pr == 0) {             // note: 'pr' initialized after prologue
       device = tmp_dev;
       if (!font::load_desc())
        fatal("couldn't load DESC file, can't continue");
@@ -1612,13 +1612,13 @@ do_file(const char *filename)
     skip_line_x();             // ignore further arguments
     current_env->size = 10 * font::sizescale;
 
-    // 2nd command `x res'
+    // 2nd command 'x res'
     command = next_command();
     if ((int) command != 'x')
-      fatal("the second command must be `x res'");
+      fatal("the second command must be 'x res'");
     str_arg = get_string_arg();
     if (str_arg[0] != 'r')
-      fatal("the second command must be `x res'");
+      fatal("the second command must be 'x res'");
     a_delete str_arg;
     int_arg = get_integer_arg();
     EnvInt font_res = font::res;
@@ -1632,13 +1632,13 @@ do_file(const char *filename)
       fatal("minimum vertical motion does not match");
     skip_line_x();             // ignore further arguments
 
-    // 3rd command `x init'
+    // 3rd command 'x init'
     command = next_command();
     if (command != 'x')
-      fatal("the third command must be `x init'");
+      fatal("the third command must be 'x init'");
     str_arg = get_string_arg();
     if (str_arg[0] != 'i')
-      fatal("the third command must be `x init'");
+      fatal("the third command must be 'x init'");
     a_delete str_arg;
     skip_line_x();
   }
@@ -1705,7 +1705,7 @@ do_file(const char *filename)
          fatal_command(command);
        Char c = next_arg_begin();
        if (c == '\n' || c == EOF)
-         error("missing argument to `c' command");
+         error("missing argument to 'c' command");
        else
          pr->set_ascii_char((unsigned char) c, current_env);
        break;
@@ -1727,7 +1727,7 @@ do_file(const char *filename)
     case 'f':                  // f: set font to number
       current_env->fontno = get_integer_arg();
       break;
-    case 'F':                  // F: obsolete, replaced by `x F'
+    case 'F':                  // F: obsolete, replaced by 'x F'
       {
        char *str_arg = get_extended_arg();
        remember_source_filename(str_arg);
@@ -1812,7 +1812,7 @@ do_file(const char *filename)
       stopped = parse_x_command();
       break;
     default:
-      warning("unrecognized command `%1'", (unsigned char) command);
+      warning("unrecognized command '%1'", (unsigned char) command);
       skip_line();
       break;
     } // end of switch
@@ -1824,8 +1824,8 @@ do_file(const char *filename)
   delete pr;
   pr = 0;
   fclose(current_file);
-  // If `stopped' is not `true' here then there wasn't any `x stop'.
+  // If 'stopped' is not 'true' here then there wasn't any 'x stop'.
   if (!stopped)
-    warning("no final `x stop' command");
+    warning("no final 'x stop' command");
   delete_current_env();
 }
similarity index 55%
rename from src/preproc/preconv/Makefile.sub
rename to src/libs/libdriver/libdriver.am
index 23f7393..efe2873 100644 (file)
@@ -1,39 +1,39 @@
-# Makefile.sub for `preproc preconv'
+# Automake rules for 'libdriver'
 #
-# File position: <groff-source>/src/preproc/preconv/Makefile.sub
+# File position: <groff-source>/src/libs/libdriver/libdriver.am
 #
-# Copyright (C) 2014  Free Software Foundation, Inc.
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
 #
-# This file is part of `font utf8' which is part of `groff'.
+# Latest update: 13 Aug 2015
 #
-# `groff' is free software; you can redistribute it and/or modify it
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
 # the Free Software Foundation, either version 2 of the License, or
 # (at your option) any later version.
 #
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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
+# along with this program.  If not, see
 # <http://www.gnu.org/licenses/gpl-2.0.html>.
 #
 ########################################################################
 
-PROG=preconv$(EXEEXT)
-MAN1=preconv.n
-XLIBS=$(LIBGROFF)
-MLIB=$(LIBM)
-EXTRA_LDFLAGS=$(LIBICONV)
-OBJS=preconv.$(OBJEXT)
-CCSRCS=$(srcdir)/preconv.cpp
+noinst_LIBRARIES += libdriver.a
+libdriver_a_SOURCES = \
+  src/libs/libdriver/input.cpp \
+  src/libs/libdriver/printer.cpp
+
 
 ########################################################################
-# Emacs settings
+# Editor settings
 ########################################################################
 #
 # Local Variables:
-# mode: makefile
+# mode: makefile-automake
+# fill-column: 72
 # End:
+# vim: set filetype=automake textwidth=72:
index db6e749..f20e4b0 100644 (file)
@@ -2,7 +2,7 @@
 
 // <groff_src_dir>/src/libs/libdriver/printer.cpp
 
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
    Written by James Clark (jjc@jclark.com)
 
    This file is part of groff.
@@ -18,7 +18,7 @@
    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 <http://www.gnu.org/licenses/>.
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
 #include "driver.h"
@@ -203,21 +203,21 @@ glyph *printer::set_char_and_width(const char *nm, const environment *env,
   glyph *g = name_to_glyph(nm);
   int fn = env->fontno;
   if (fn < 0 || fn >= nfonts) {
-    error("bad font position `%1'", fn);
+    error("bad font position '%1'", fn);
     return UNDEFINED_GLYPH;
   }
   *f = font_table[fn];
   if (*f == 0) {
-    error("no font mounted at `%1'", fn);
+    error("no font mounted at '%1'", fn);
     return UNDEFINED_GLYPH;
   }
   if (!(*f)->contains(g)) {
     if (nm[0] != '\0' && nm[1] == '\0')
-      error("font `%1' does not contain ascii character `%2'",
+      error("font '%1' does not contain ascii character '%2'",
            (*f)->get_name(),
            nm[0]);
     else
-      error("font `%1' does not contain special character `%2'",
+      error("font '%1' does not contain special character '%2'",
            (*f)->get_name(),
            nm);
     return UNDEFINED_GLYPH;
@@ -233,16 +233,16 @@ void printer::set_numbered_char(int num, const environment *env, int *widthp)
   glyph *g = number_to_glyph(num);
   int fn = env->fontno;
   if (fn < 0 || fn >= nfonts) {
-    error("bad font position `%1'", fn);
+    error("bad font position '%1'", fn);
     return;
   }
   font *f = font_table[fn];
   if (f == 0) {
-    error("no font mounted at `%1'", fn);
+    error("no font mounted at '%1'", fn);
     return;
   }
   if (!f->contains(g)) {
-    error("font `%1' does not contain numbered character %2",
+    error("font '%1' does not contain numbered character %2",
          f->get_name(),
          num);
     return;
diff --git a/src/libs/libgroff/Makefile.sub b/src/libs/libgroff/Makefile.sub
deleted file mode 100644 (file)
index 840d993..0000000
+++ /dev/null
@@ -1,223 +0,0 @@
-# Makefile.sub for `libgroff'
-#
-# File position: <groff-source>/src/libs/libgroff/Makefile.sub
-#
-# Copyright (C) 2014  Free Software Foundation, Inc.
-#
-# This file is part of `font utf8' which is part of `groff'.
-#
-# `groff' is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 2 of the License, or
-# (at your option) any later version.
-#
-# `groff' 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
-# <http://www.gnu.org/licenses/gpl-2.0.html>.
-#
-########################################################################
-
-LIB=groff
-EXTRA_CFLAGS=-D__GETOPT_PREFIX=groff_ \
-             -DENABLE_RELOCATABLE=1 \
-             -DLIBDIR=\"$(libdir)\"
-OBJS=\
-  assert.$(OBJEXT) \
-  change_lf.$(OBJEXT) \
-  cmap.$(OBJEXT) \
-  color.$(OBJEXT) \
-  cset.$(OBJEXT) \
-  device.$(OBJEXT) \
-  errarg.$(OBJEXT) \
-  error.$(OBJEXT) \
-  fatal.$(OBJEXT) \
-  filename.$(OBJEXT) \
-  font.$(OBJEXT) \
-  fontfile.$(OBJEXT) \
-  geometry.$(OBJEXT) \
-  getopt.$(OBJEXT) \
-  getopt1.$(OBJEXT) \
-  glyphuni.$(OBJEXT) \
-  htmlhint.$(OBJEXT) \
-  hypot.$(OBJEXT) \
-  iftoa.$(OBJEXT) \
-  invalid.$(OBJEXT) \
-  itoa.$(OBJEXT) \
-  lf.$(OBJEXT) \
-  lineno.$(OBJEXT) \
-  localcharset.$(OBJEXT) \
-  macropath.$(OBJEXT) \
-  matherr.$(OBJEXT) \
-  maxfilename.$(OBJEXT) \
-  maxpathname.$(OBJEXT) \
-  mksdir.$(OBJEXT) \
-  nametoindex.$(OBJEXT) \
-  new.$(OBJEXT) \
-  paper.$(OBJEXT) \
-  prime.$(OBJEXT) \
-  progname.$(OBJEXT) \
-  ptable.$(OBJEXT) \
-  quotearg.$(OBJEXT) \
-  relocate.$(OBJEXT) \
-  searchpath.$(OBJEXT) \
-  spawnvp.$(OBJEXT) \
-  string.$(OBJEXT) \
-  strsave.$(OBJEXT) \
-  symbol.$(OBJEXT) \
-  tmpfile.$(OBJEXT) \
-  tmpname.$(OBJEXT) \
-  unicode.$(OBJEXT) \
-  uniglyph.$(OBJEXT) \
-  uniuni.$(OBJEXT) \
-  version.$(OBJEXT) \
-  $(LIBOBJS)
-CCSRCS=\
-  $(srcdir)/assert.cpp \
-  $(srcdir)/change_lf.cpp \
-  $(srcdir)/cmap.cpp \
-  $(srcdir)/color.cpp \
-  $(srcdir)/cset.cpp \
-  $(srcdir)/device.cpp \
-  $(srcdir)/errarg.cpp \
-  $(srcdir)/error.cpp \
-  $(srcdir)/fatal.cpp \
-  $(srcdir)/filename.cpp \
-  $(srcdir)/font.cpp \
-  $(srcdir)/fontfile.cpp \
-  $(srcdir)/geometry.cpp \
-  $(srcdir)/glyphuni.cpp \
-  $(srcdir)/htmlhint.cpp \
-  $(srcdir)/hypot.cpp \
-  $(srcdir)/invalid.cpp \
-  $(srcdir)/lf.cpp \
-  $(srcdir)/lineno.cpp \
-  $(srcdir)/macropath.cpp \
-  $(srcdir)/maxfilename.cpp \
-  $(srcdir)/maxpathname.cpp \
-  $(srcdir)/mksdir.cpp \
-  $(srcdir)/mkstemp.cpp \
-  $(srcdir)/nametoindex.cpp \
-  $(srcdir)/new.cpp \
-  $(srcdir)/paper.cpp \
-  $(srcdir)/prime.cpp \
-  $(srcdir)/ptable.cpp \
-  $(srcdir)/relocate.cpp \
-  $(srcdir)/searchpath.cpp \
-  $(srcdir)/string.cpp \
-  $(srcdir)/strsave.cpp \
-  $(srcdir)/symbol.cpp \
-  $(srcdir)/tmpfile.cpp \
-  $(srcdir)/tmpname.cpp \
-  $(srcdir)/unicode.cpp \
-  $(srcdir)/uniglyph.cpp \
-  $(srcdir)/uniuni.cpp \
-  version.cpp
-CSRCS=\
-  $(srcdir)/fmod.c \
-  $(srcdir)/getcwd.c \
-  $(srcdir)/getopt.c \
-  $(srcdir)/getopt1.c \
-  $(srcdir)/iftoa.c \
-  $(srcdir)/itoa.c \
-  $(srcdir)/localcharset.c \
-  $(srcdir)/matherr.c \
-  $(srcdir)/progname.c \
-  $(srcdir)/putenv.c \
-  $(srcdir)/quotearg.c \
-  $(srcdir)/spawnvp.c \
-  $(srcdir)/strcasecmp.c \
-  $(srcdir)/strerror.c \
-  $(srcdir)/strncasecmp.c \
-  $(srcdir)/strtol.c \
-  $(srcdir)/../snprintf/snprintf.c
-GENSRCS=\
-  version.cpp
-RM=rm -f
-
-src_version=`cat $(top_srcdir)/VERSION`
-src_revision=`cat $(top_srcdir)/REVISION`
-
-version.cpp: $(top_srcdir)/VERSION $(top_srcdir)/REVISION
-       @echo Making version.cpp
-       @echo const char \*version_string = \"$(src_version)\"\; >$@
-       @echo const char \*revision_string = \"$(src_revision)\"\; >>$@
-       @echo extern \"C\" const char \*Version_string = \"$(src_version).$(src_revision)\"\; \
-         | sed -e 's/\.0\"/\"/' >>$@
-
-# We have to avoid $(COMPILE.c) since we must not use groff's `assert.h'
-snprintf.$(OBJEXT): $(srcdir)/../snprintf/snprintf.c
-       $(CC) -c $(CDEFINES) $(CFLAGS) $(CPPFLAGS) \
-         $(srcdir)/../snprintf/snprintf.c
-
-# Data for localcharset.c.  Taken from libiconv/libcharset.
-
-all: charset.alias ref-add.sed ref-del.sed
-
-charset.alias: $(srcdir)/config.charset
-       $(SHELL) $(srcdir)/config.charset '$(HOST)' > t-$@
-       mv t-$@ $@
-
-PACKAGE=groff
-
-ref-add.sed : $(srcdir)/ref-add.sin
-       sed -e '/^#/d' \
-           -e 's/@''PACKAGE''@/$(PACKAGE)/g' $(srcdir)/ref-add.sin > t-$@
-       mv t-$@ $@
-
-ref-del.sed : $(srcdir)/ref-del.sin
-       sed -e '/^#/d' \
-           -e 's/@''PACKAGE''@/$(PACKAGE)/g' $(srcdir)/ref-del.sin > t-$@
-       mv t-$@ $@
-
-MKINSTALLDIRS = $(SHELL) $(top_srcdir)/mkinstalldirs
-
-install_data: install_charset_data
-install_charset_data:
-       -test $(GLIBC21) != no || $(MKINSTALLDIRS) $(DESTDIR)$(libdir)
-       if test -f $(DESTDIR)$(libdir)/charset.alias; then \
-         sed -f ref-add.sed $(DESTDIR)$(libdir)/charset.alias \
-           > $(DESTDIR)$(libdir)/t-charset.alias; \
-         $(INSTALL_DATA) $(DESTDIR)$(libdir)/t-charset.alias \
-           $(DESTDIR)$(libdir)/charset.alias; \
-         $(RM) $(DESTDIR)$(libdir)/t-charset.alias; \
-       else \
-         if test $(GLIBC21) = no; then \
-           sed -f ref-add.sed charset.alias \
-             > $(DESTDIR)$(libdir)/t-charset.alias; \
-           $(INSTALL_DATA) $(DESTDIR)$(libdir)/t-charset.alias \
-             $(DESTDIR)$(libdir)/charset.alias; \
-           $(RM) $(DESTDIR)$(libdir)/t-charset.alias; \
-         fi; \
-       fi
-
-uninstall_sub: uninstall_charset_data
-uninstall_charset_data:
-       -if test -f $(DESTDIR)$(libdir)/charset.alias; then \
-         sed -f ref-del.sed $(DESTDIR)$(libdir)/charset.alias \
-           > $(DESTDIR)$(libdir)/t-charset.alias; \
-         if grep '^# Packages using this file: $$' \
-                 $(DESTDIR)$(libdir)/t-charset.alias > /dev/null; then \
-           $(RM) $(DESTDIR)$(libdir)/charset.alias; \
-         else \
-           $(INSTALL_DATA) $(DESTDIR)$(libdir)/t-charset.alias \
-             $(DESTDIR)$(libdir)/charset.alias; \
-         fi; \
-         $(RM) $(DESTDIR)$(libdir)/t-charset.alias; \
-       fi
-
-clean: clean_charset
-clean_charset:
-       $(RM) charset.alias ref-add.sed ref-del.sed
-
-########################################################################
-# Emacs settings
-########################################################################
-#
-# Local Variables:
-# mode: makefile
-# End:
index d2d6633..aceed05 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -14,7 +14,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include <stdio.h>
 #include <stdlib.h>
@@ -26,7 +26,7 @@ void assertion_failed(int lineno, const char *filename)
 {
   if (program_name != 0)
     fprintf(stderr, "%s: ", program_name);
-  fprintf(stderr, "Failed assertion at line %d, file `%s'.\n",
+  fprintf(stderr, "Failed assertion at line %d, file '%s'.\n",
          lineno, filename);
   fflush(stderr);
   abort();
index 9d507a9..c2044fb 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -14,7 +14,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include <string.h>
 
index e1fbea5..2ffbfe4 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include <ctype.h>
 #include "cmap.h"
index 3efc097..18ee741 100644 (file)
@@ -2,7 +2,7 @@
 
 /* <groff_src_dir>/src/libs/libgroff/color.cpp
 
-Copyright (C) 2001-201 Free Software Foundation, Inc.
+Copyright (C) 2001-2018 Free Software Foundation, Inc.
     Written by Gaius Mulley <gaius@glam.ac.uk>
 
 This file is part of groff.
@@ -18,7 +18,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include "lib.h"
 #include "color.h"
@@ -43,31 +43,6 @@ min(const unsigned int a, const unsigned int b)
     return b;
 }
 
-color *color::free_list = 0;
-
-void *color::operator new(size_t n)
-{
-  assert(n == sizeof(color));
-  if (!free_list) {
-    const int BLOCK = 128;
-    free_list = (color *)new char[sizeof(color)*BLOCK];
-    for (int i = 0; i < BLOCK - 1; i++)
-      free_list[i].next = free_list + i + 1;
-    free_list[BLOCK-1].next = 0;
-  }
-  color *p = free_list;
-  free_list = (color *)(free_list->next);
-  p->next = 0;
-  return p;
-}
-
-void color::operator delete(void *p)
-{
-  if (p) {
-    ((color *)p)->next = free_list;
-    free_list = (color *)p;
-  }
-}
 
 color::color(const color * const c)
 {
@@ -178,7 +153,7 @@ void color::set_gray(const unsigned int g)
 
 /*
  *  atoh - computes the decimal value of a hexadecimal number string.
- *         `length' characters of `s' are read.  Returns 1 if successful.
+ *         'length' characters of 's' are read.  Returns 1 if successful.
  */
 
 static int atoh(unsigned int *result,
@@ -204,7 +179,7 @@ static int atoh(unsigned int *result,
 /*
  *  read_encoding - set color from a hexadecimal color string.
  *
- *  Use color scheme `cs' to parse `n' color components from string `s'.
+ *  Use color scheme 'cs' to parse 'n' color components from string 's'.
  *  Returns 1 if successful.
  */
 
@@ -364,7 +339,7 @@ void color::get_cmyk(unsigned int *c, unsigned int *m,
   }
 }
 
-// we use `0.222r + 0.707g + 0.071b' (this is the ITU standard)
+// we use '0.222r + 0.707g + 0.071b' (this is the ITU standard)
 // as an approximation for gray
 
 void color::get_gray(unsigned int *g) const
index 4e4c7ed..9e2fea1 100755 (executable)
@@ -1,7 +1,7 @@
 #! /bin/sh
 # Output a system dependent table of character encoding aliases.
 #
-#   Copyright (C) 2000-2004, 2006-2014 Free Software Foundation, Inc.
+#   Copyright (C) 2000-2018 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
index f4cf2a9..508adbc 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include <ctype.h>
 
diff --git a/src/libs/libgroff/curtime.cpp b/src/libs/libgroff/curtime.cpp
new file mode 100644 (file)
index 0000000..72fe067
--- /dev/null
@@ -0,0 +1,51 @@
+/* Copyright (C) 2015-2018 Free Software Foundation, Inc.
+
+This file is part of groff.
+
+groff is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+groff 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.
+
+The GNU General Public License version 2 (GPL2) is available in the
+internet at <http://www.gnu.org/licenses/gpl-2.0.txt>. */
+
+#include <errno.h>
+#include <limits.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+
+#include "errarg.h"
+#include "error.h"
+
+#ifdef LONG_FOR_TIME_T
+long
+#else
+time_t
+#endif
+current_time()
+{
+  char *source_date_epoch = getenv("SOURCE_DATE_EPOCH");
+
+  if (source_date_epoch) {
+    errno = 0;
+    char *endptr;
+    long epoch = strtol(source_date_epoch, &endptr, 10);
+
+    if ((errno == ERANGE && (epoch == LONG_MAX || epoch == LONG_MIN)) ||
+       (errno != 0 && epoch == 0))
+      fatal("$SOURCE_DATE_EPOCH: strtol: %1", strerror(errno));
+    if (endptr == source_date_epoch)
+      fatal("$SOURCE_DATE_EPOCH: no digits found: %1", endptr);
+    if (*endptr != '\0')
+      fatal("$SOURCE_DATE_EPOCH: trailing garbage: %1", endptr);
+    return epoch;
+  } else
+    return time(0);
+}
index aea4d04..0d28b85 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include <stdlib.h>
 #include "device.h"
index 1e99a2b..b0df24a 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include <stdio.h>
 #include "assert.h"
index 1275b89..9a18803 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include <stdio.h>
 #include <stdlib.h>
@@ -50,6 +50,10 @@ static void do_error_with_file_and_line(const char *filename,
       fprintf(stderr, "%s:%d:", filename, lineno);
     need_space = 1;
   }
+  if (need_space) {
+    fputc(' ', stderr);
+    need_space = 0;
+  }
   switch (type) {
   case FATAL:
     fputs("fatal error:", stderr);
index fd2c68d..c0dcb35 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -14,7 +14,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include <stdlib.h>
 
index d07fda6..d413bdb 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2014  Free Software Foundation, Inc.
+/* Copyright (C) 2014-2018 Free Software Foundation, Inc.
 
 This file is part of groff.
 
index 6d040f8..7799f9e 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -14,7 +14,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include <math.h>
 
index 047a0b8..17e6f42 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include "lib.h"
 
@@ -90,7 +90,7 @@ text_file::text_file(FILE *p, char *s)
 text_file::~text_file()
 {
   a_delete buf;
-  a_delete path;
+  free(path);
   if (fp)
     fclose(fp);
 }
@@ -110,7 +110,7 @@ int text_file::next()
       if (c == EOF)
        break;
       if (invalid_input_char(c))
-       error("invalid input character code `%1'", int(c));
+       error("invalid input character code '%1'", int(c));
       else {
        if (i + 1 >= size) {
          char *old_buf = buf;
@@ -172,7 +172,7 @@ int glyph_to_unicode(glyph *g)
       char *ignore;
       return (int)strtol(nm + 1, &ignore, 16);
     }
-    // If `nm' is a single letter `x', the glyph name is `\x'.
+    // If 'nm' is a single letter 'x', the glyph name is '\x'.
     char buf[] = { '\\', '\0', '\0' };
     if (nm[1] == '\0') {
       buf[1] = nm[0];
@@ -561,7 +561,7 @@ int font::get_code(glyph *g)
     if (n >= 0)
       return n;
   }
-  // The caller must check `contains(g)' before calling get_code(g).
+  // The caller must check 'contains(g)' before calling get_code(g).
   abort();
 }
 
@@ -764,7 +764,7 @@ int font::load(int *not_found, int head_only)
     if (not_found)
       *not_found = 1;
     else
-      error("`DESC' is not a valid font file name");
+      error("'DESC' is not a valid font file name");
     return 0;
   }
   char *path;
@@ -773,7 +773,7 @@ int font::load(int *not_found, int head_only)
     if (not_found)
       *not_found = 1;
     else
-      error("can't find font file `%1'", name);
+      error("can't find font file '%1'", name);
     return 0;
   }
   text_file t(fp, path);
@@ -792,7 +792,7 @@ int font::load(int *not_found, int head_only)
       p = strtok(0, WS);
       int n;
       if (p == 0 || sscanf(p, "%d", &n) != 1 || n <= 0) {
-       t.error("bad argument for `spacewidth' command");
+       t.error("bad argument for 'spacewidth' command");
        return 0;
       }
       space_width = n;
@@ -801,7 +801,7 @@ int font::load(int *not_found, int head_only)
       p = strtok(0, WS);
       double n;
       if (p == 0 || sscanf(p, "%lf", &n) != 1 || n >= 90.0 || n <= -90.0) {
-       t.error("bad argument for `slant' command", p);
+       t.error("bad argument for 'slant' command", p);
        return 0;
       }
       slant = n;
@@ -822,7 +822,7 @@ int font::load(int *not_found, int head_only)
        else if (strcmp(p, "ffl") == 0)
          ligatures |= LIG_ffl;
        else {
-         t.error("unrecognised ligature `%1'", p);
+         t.error("unrecognised ligature '%1'", p);
          return 0;
        }
       }
@@ -830,7 +830,7 @@ int font::load(int *not_found, int head_only)
     else if (strcmp(p, "internalname") == 0) {
       p = strtok(0, WS);
       if (!p) {
-       t.error("`internalname' command requires argument");
+       t.error("'internalname' command requires argument");
        return 0;
       }
       internalname = new char[strlen(p) + 1];
@@ -880,7 +880,7 @@ int font::load(int *not_found, int head_only)
          }
          int n;
          if (sscanf(p, "%d", &n) != 1) {
-           t.error("bad kern amount `%1'", p);
+           t.error("bad kern amount '%1'", p);
            return 0;
          }
          glyph *g1 = name_to_glyph(c1);
@@ -931,33 +931,33 @@ int font::load(int *not_found, int head_only)
                                &metric.pre_math_space,
                                &metric.subscript_correction);
            if (nparms < 1) {
-             t.error("bad width for `%1'", nm);
+             t.error("bad width for '%1'", nm);
              return 0;
            }
            p = strtok(0, WS);
            if (p == 0) {
-             t.error("missing character type for `%1'", nm);
+             t.error("missing character type for '%1'", nm);
              return 0;
            }
            int type;
            if (sscanf(p, "%d", &type) != 1) {
-             t.error("bad character type for `%1'", nm);
+             t.error("bad character type for '%1'", nm);
              return 0;
            }
            if (type < 0 || type > 255) {
-             t.error("character type `%1' out of range", type);
+             t.error("character type '%1' out of range", type);
              return 0;
            }
            metric.type = type;
            p = strtok(0, WS);
            if (p == 0) {
-             t.error("missing code for `%1'", nm);
+             t.error("missing code for '%1'", nm);
              return 0;
            }
            char *ptr;
            metric.code = (int)strtol(p, &ptr, 0);
            if (metric.code == 0 && ptr == p) {
-             t.error("bad code `%1' for character `%2'", p, nm);
+             t.error("bad code '%1' for character '%2'", p, nm);
              return 0;
            }
            if (is_unicode) {
@@ -991,8 +991,8 @@ int font::load(int *not_found, int head_only)
        }
       }
       else {
-       t.error("unrecognised command `%1' "
-               "after `kernpairs' or `charset' command",
+       t.error("unrecognised command '%1' "
+               "after 'kernpairs' or 'charset' command",
                  command);
        return 0;
       }
@@ -1000,7 +1000,7 @@ int font::load(int *not_found, int head_only)
     compact();
   }
   if (!is_unicode && !had_charset) {
-    t.error("missing `charset' command");
+    t.error("missing 'charset' command");
     return 0;
   }
   if (space_width == 0) {
@@ -1034,7 +1034,7 @@ int font::load_desc()
   FILE *fp;
   char *path;
   if ((fp = open_file("DESC", &path)) == 0) {
-    error("can't find `DESC' file");
+    error("can't find 'DESC' file");
     return 0;
   }
   text_file t(fp, path);
@@ -1050,13 +1050,13 @@ int font::load_desc()
     if (found) {
       char *q = strtok(0, WS);
       if (!q) {
-       t.error("missing value for command `%1'", p);
+       t.error("missing value for command '%1'", p);
        return 0;
       }
       //int *ptr = &(this->*(table[idx-1].ptr));
       int *ptr = table[idx-1].ptr;
       if (sscanf(q, "%d", ptr) != 1) {
-       t.error("bad number `%1'", q);
+       t.error("bad number '%1'", q);
        return 0;
       }
     }
@@ -1073,7 +1073,7 @@ int font::load_desc()
     else if (strcmp("fonts", p) == 0) {
       p = strtok(0, WS);
       if (!p || sscanf(p, "%d", &nfonts) != 1 || nfonts <= 0) {
-       t.error("bad number of fonts `%1'", p);
+       t.error("bad number of fonts '%1'", p);
        return 0;
       }
       font_name_table = (const char **)new char *[nfonts+1]; 
@@ -1132,7 +1132,7 @@ int font::load_desc()
        p = strtok(0, WS);
        while (p == 0) {
          if (!t.next()) {
-           t.error("list of sizes must be terminated by `0'");
+           t.error("list of sizes must be terminated by '0'");
            return 0;
          }
          p = strtok(t.buf, WS);
@@ -1147,7 +1147,7 @@ int font::load_desc()
            break;
          // fall through
        default:
-         t.error("bad size range `%1'", p);
+         t.error("bad size range '%1'", p);
          return 0;
        }
        if (i + 2 > n) {
@@ -1217,31 +1217,31 @@ int font::load_desc()
     }
   }
   if (res == 0) {
-    t.error("missing `res' command");
+    t.error("missing 'res' command");
     return 0;
   }
   if (unitwidth == 0) {
-    t.error("missing `unitwidth' command");
+    t.error("missing 'unitwidth' command");
     return 0;
   }
   if (font_name_table == 0) {
-    t.error("missing `fonts' command");
+    t.error("missing 'fonts' command");
     return 0;
   }
   if (sizes == 0) {
-    t.error("missing `sizes' command");
+    t.error("missing 'sizes' command");
     return 0;
   }
   if (sizescale < 1) {
-    t.error("bad `sizescale' value");
+    t.error("bad 'sizescale' value");
     return 0;
   }
   if (hor < 1) {
-    t.error("bad `hor' value");
+    t.error("bad 'hor' value");
     return 0;
   }
   if (vert < 1) {
-    t.error("bad `vert' value");
+    t.error("bad 'vert' value");
     return 0;
   }
   return 1;
index 9c78dce..7cc3129 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include "lib.h"
 
index e6d88b1..c63a41a 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by Gaius Mulley <gaius@glam.ac.uk>
      using adjust_arc_center() from printer.cpp, written by James Clark.
 
@@ -16,8 +16,11 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
 
 #include <stdio.h>
 #include <math.h>
index f06e641..0920abc 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000-201 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -14,7 +14,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 /* Partial emulation of getcwd in terms of getwd. */
 
index e3f2364..4e218e1 100644 (file)
@@ -2,7 +2,7 @@
    NOTE: getopt is now part of the C library, so if you don't know what
    "Keep this file name-space clean" means, talk to drepper@gnu.org
    before changing it!
-   Copyright (C) 1987-201 Free Software Foundation, Inc.
+   Copyright (C) 1987-2018 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    This program is free software; you can redistribute it and/or modify
@@ -16,7 +16,7 @@
    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 <http://www.gnu.org/licenses/>.  */
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 \f
 /* This tells Alpha OSF/1 not to define a getopt prototype in <stdio.h>.
    Ditto for AIX 3.2 and <stdlib.h>.  */
 # define attribute_hidden
 #endif
 
-/* Unlike standard Unix `getopt', functions like `getopt_long'
+/* Unlike standard Unix 'getopt', functions like 'getopt_long'
    let the user intersperse the options with the other arguments.
 
-   As `getopt_long' works, it permutes the elements of ARGV so that,
+   As 'getopt_long' works, it permutes the elements of ARGV so that,
    when it is done, all the options precede everything else.  Thus
    all application programs are extended to handle flexible argument order.
 
-   Using `getopt' or setting the environment variable POSIXLY_CORRECT
+   Using 'getopt' or setting the environment variable POSIXLY_CORRECT
    disables permutation.
    Then the application's behavior is completely standard.
 
 #include "getopt.h"
 #include "getopt_int.h"
 
-/* For communication from `getopt' to the caller.
-   When `getopt' finds an option that takes an argument,
+/* For communication from 'getopt' to the caller.
+   When 'getopt' finds an option that takes an argument,
    the argument value is returned here.
-   Also, when `ordering' is RETURN_IN_ORDER,
+   Also, when 'ordering' is RETURN_IN_ORDER,
    each non-option ARGV-element is returned here.  */
 
 char *optarg;
 
 /* Index in ARGV of the next element to be scanned.
    This is used for communication to and from the caller
-   and for communication between successive calls to `getopt'.
+   and for communication between successive calls to 'getopt'.
 
-   On entry to `getopt', zero means this is the first call; initialize.
+   On entry to 'getopt', zero means this is the first call; initialize.
 
-   When `getopt' returns -1, this is the index of the first of the
+   When 'getopt' returns -1, this is the index of the first of the
    non-option elements that the caller should itself scan.
 
-   Otherwise, `optind' communicates from one call to the next
+   Otherwise, 'optind' communicates from one call to the next
    how much of ARGV has been scanned so far.  */
 
 /* 1003.2 says this must be 1 before any call.  */
@@ -163,7 +163,7 @@ extern char *__getopt_nonoption_flags;
    The other is elements [last_nonopt,optind), which contains all
    the options processed since those non-options were skipped.
 
-   `first_nonopt' and `last_nonopt' are relocated so that they describe
+   'first_nonopt' and 'last_nonopt' are relocated so that they describe
    the new indices of the non-options in ARGV after they are moved.  */
 
 static void
@@ -180,7 +180,7 @@ exchange (char **argv, struct _getopt_data *d)
      but it consists of two parts that need to be swapped next.  */
 
 #if defined _LIBC && defined USE_NONOPTION_FLAGS
-  /* First make sure the handling of the `__getopt_nonoption_flags'
+  /* First make sure the handling of the '__getopt_nonoption_flags'
      string can work normally.  Our top argument must be in the range
      of the string.  */
   if (d->__nonoption_flags_len > 0 && top >= d->__nonoption_flags_max_len)
@@ -248,8 +248,10 @@ exchange (char **argv, struct _getopt_data *d)
 /* Initialize the internal data when the first call is made.  */
 
 static const char *
-_getopt_initialize (int argc, char **argv, const char *optstring,
-                   int posixly_correct, struct _getopt_data *d)
+_getopt_initialize (__attribute__((__unused__)) int argc,
+                   __attribute__((__unused__)) char **argv,
+                   const char *optstring, int posixly_correct,
+                   struct _getopt_data *d)
 {
   /* Start processing options with ARGV-element 1 (since ARGV-element 0
      is the program name); the sequence of previously skipped
@@ -316,44 +318,44 @@ _getopt_initialize (int argc, char **argv, const char *optstring,
 
    If an element of ARGV starts with '-', and is not exactly "-" or "--",
    then it is an option element.  The characters of this element
-   (aside from the initial '-') are option characters.  If `getopt'
+   (aside from the initial '-') are option characters.  If 'getopt'
    is called repeatedly, it returns successively each of the option characters
    from each of the option elements.
 
-   If `getopt' finds another option character, it returns that character,
-   updating `optind' and `nextchar' so that the next call to `getopt' can
+   If 'getopt' finds another option character, it returns that character,
+   updating 'optind' and 'nextchar' so that the next call to 'getopt' can
    resume the scan with the following option character or ARGV-element.
 
-   If there are no more option characters, `getopt' returns -1.
-   Then `optind' is the index in ARGV of the first ARGV-element
+   If there are no more option characters, 'getopt' returns -1.
+   Then 'optind' is the index in ARGV of the first ARGV-element
    that is not an option.  (The ARGV-elements have been permuted
    so that those that are not options now come last.)
 
    OPTSTRING is a string containing the legitimate option characters.
    If an option character is seen that is not listed in OPTSTRING,
-   return '?' after printing an error message.  If you set `opterr' to
+   return '?' after printing an error message.  If you set 'opterr' to
    zero, the error message is suppressed but we still return '?'.
 
    If a char in OPTSTRING is followed by a colon, that means it wants an arg,
    so the following text in the same ARGV-element, or the text of the following
-   ARGV-element, is returned in `optarg'.  Two colons mean an option that
+   ARGV-element, is returned in 'optarg'.  Two colons mean an option that
    wants an optional arg; if there is text in the current ARGV-element,
-   it is returned in `optarg', otherwise `optarg' is set to zero.
+   it is returned in 'optarg', otherwise 'optarg' is set to zero.
 
-   If OPTSTRING starts with `-' or `+', it requests different methods of
+   If OPTSTRING starts with '-' or '+', it requests different methods of
    handling the non-option ARGV-elements.
    See the comments about RETURN_IN_ORDER and REQUIRE_ORDER, above.
 
-   Long-named options begin with `--' instead of `-'.
+   Long-named options begin with '--' instead of '-'.
    Their names may be abbreviated as long as the abbreviation is unique
    or is an exact match for some defined option.  If they have an
    argument, it follows the option name in the same ARGV-element, separated
-   from the option name by a `=', or else the in next ARGV-element.
-   When `getopt' finds a long-named option, it returns 0 if that option's
-   `flag' field is nonzero, the value of the option's `val' field
-   if the `flag' field is zero.
+   from the option name by a '=', or else the in next ARGV-element.
+   When 'getopt' finds a long-named option, it returns 0 if that option's
+   'flag' field is nonzero, the value of the option's 'val' field
+   if the 'flag' field is zero.
 
-   LONGOPTS is a vector of `struct option' terminated by an
+   LONGOPTS is a vector of 'struct option' terminated by an
    element containing a name which is zero.
 
    LONGIND returns the index in LONGOPT of the long-named option found.
@@ -431,7 +433,7 @@ _getopt_internal_r (int argc, char **argv, const char *optstring,
          d->__last_nonopt = d->optind;
        }
 
-      /* The special ARGV-element `--' means premature end of options.
+      /* The special ARGV-element '--' means premature end of options.
         Skip it like a null option,
         then exchange with previous non-options as if it were an option,
         then skip everything else like a non-option.  */
@@ -546,7 +548,7 @@ _getopt_internal_r (int argc, char **argv, const char *optstring,
 #if defined _LIBC && defined USE_IN_LIBIO
              char *buf;
 
-             if (__asprintf (&buf, _("%s: option `%s' is ambiguous\n"),
+             if (__asprintf (&buf, _("%s: option '%s' is ambiguous\n"),
                              argv[0], argv[d->optind]) >= 0)
                {
                  _IO_flockfile (stderr);
@@ -565,7 +567,7 @@ _getopt_internal_r (int argc, char **argv, const char *optstring,
                  free (buf);
                }
 #else
-             fprintf (stderr, _("%s: option `%s' is ambiguous\n"),
+             fprintf (stderr, _("%s: option '%s' is ambiguous\n"),
                       argv[0], argv[d->optind]);
 #endif
            }
@@ -599,11 +601,11 @@ _getopt_internal_r (int argc, char **argv, const char *optstring,
                          /* --option */
 #if defined _LIBC && defined USE_IN_LIBIO
                          n = __asprintf (&buf, _("\
-%s: option `--%s' doesn't allow an argument\n"),
+%s: option '--%s' doesn't allow an argument\n"),
                                          argv[0], pfound->name);
 #else
                          fprintf (stderr, _("\
-%s: option `--%s' doesn't allow an argument\n"),
+%s: option '--%s' doesn't allow an argument\n"),
                                   argv[0], pfound->name);
 #endif
                        }
@@ -612,12 +614,12 @@ _getopt_internal_r (int argc, char **argv, const char *optstring,
                          /* +option or -option */
 #if defined _LIBC && defined USE_IN_LIBIO
                          n = __asprintf (&buf, _("\
-%s: option `%c%s' doesn't allow an argument\n"),
+%s: option '%c%s' doesn't allow an argument\n"),
                                          argv[0], argv[d->optind - 1][0],
                                          pfound->name);
 #else
                          fprintf (stderr, _("\
-%s: option `%c%s' doesn't allow an argument\n"),
+%s: option '%c%s' doesn't allow an argument\n"),
                                   argv[0], argv[d->optind - 1][0],
                                   pfound->name);
 #endif
@@ -663,7 +665,7 @@ _getopt_internal_r (int argc, char **argv, const char *optstring,
                      char *buf;
 
                      if (__asprintf (&buf, _("\
-%s: option `%s' requires an argument\n"),
+%s: option '%s' requires an argument\n"),
                                      argv[0], argv[d->optind - 1]) >= 0)
                        {
                          _IO_flockfile (stderr);
@@ -684,7 +686,7 @@ _getopt_internal_r (int argc, char **argv, const char *optstring,
                        }
 #else
                      fprintf (stderr,
-                              _("%s: option `%s' requires an argument\n"),
+                              _("%s: option '%s' requires an argument\n"),
                               argv[0], argv[d->optind - 1]);
 #endif
                    }
@@ -722,10 +724,10 @@ _getopt_internal_r (int argc, char **argv, const char *optstring,
                {
                  /* --option */
 #if defined _LIBC && defined USE_IN_LIBIO
-                 n = __asprintf (&buf, _("%s: unrecognized option `--%s'\n"),
+                 n = __asprintf (&buf, _("%s: unrecognized option '--%s'\n"),
                                  argv[0], d->__nextchar);
 #else
-                 fprintf (stderr, _("%s: unrecognized option `--%s'\n"),
+                 fprintf (stderr, _("%s: unrecognized option '--%s'\n"),
                           argv[0], d->__nextchar);
 #endif
                }
@@ -733,10 +735,10 @@ _getopt_internal_r (int argc, char **argv, const char *optstring,
                {
                  /* +option or -option */
 #if defined _LIBC && defined USE_IN_LIBIO
-                 n = __asprintf (&buf, _("%s: unrecognized option `%c%s'\n"),
+                 n = __asprintf (&buf, _("%s: unrecognized option '%c%s'\n"),
                                  argv[0], argv[d->optind][0], d->__nextchar);
 #else
-                 fprintf (stderr, _("%s: unrecognized option `%c%s'\n"),
+                 fprintf (stderr, _("%s: unrecognized option '%c%s'\n"),
                           argv[0], argv[d->optind][0], d->__nextchar);
 #endif
                }
@@ -774,7 +776,7 @@ _getopt_internal_r (int argc, char **argv, const char *optstring,
     char c = *d->__nextchar++;
     char *temp = strchr (optstring, c);
 
-    /* Increment `optind' when we start to process its last character.  */
+    /* Increment 'optind' when we start to process its last character.  */
     if (*d->__nextchar == '\0')
       ++d->optind;
 
@@ -889,7 +891,7 @@ _getopt_internal_r (int argc, char **argv, const char *optstring,
            return c;
          }
        else
-         /* We already incremented `d->optind' once;
+         /* We already incremented 'd->optind' once;
             increment it again when taking next ARGV-elt as argument.  */
          d->optarg = argv[d->optind++];
 
@@ -930,7 +932,7 @@ _getopt_internal_r (int argc, char **argv, const char *optstring,
 #if defined _LIBC && defined USE_IN_LIBIO
                char *buf;
 
-               if (__asprintf (&buf, _("%s: option `-W %s' is ambiguous\n"),
+               if (__asprintf (&buf, _("%s: option '-W %s' is ambiguous\n"),
                                argv[0], argv[d->optind]) >= 0)
                  {
                    _IO_flockfile (stderr);
@@ -949,7 +951,7 @@ _getopt_internal_r (int argc, char **argv, const char *optstring,
                    free (buf);
                  }
 #else
-               fprintf (stderr, _("%s: option `-W %s' is ambiguous\n"),
+               fprintf (stderr, _("%s: option '-W %s' is ambiguous\n"),
                         argv[0], argv[d->optind]);
 #endif
              }
@@ -974,7 +976,7 @@ _getopt_internal_r (int argc, char **argv, const char *optstring,
                        char *buf;
 
                        if (__asprintf (&buf, _("\
-%s: option `-W %s' doesn't allow an argument\n"),
+%s: option '-W %s' doesn't allow an argument\n"),
                                        argv[0], pfound->name) >= 0)
                          {
                            _IO_flockfile (stderr);
@@ -995,7 +997,7 @@ _getopt_internal_r (int argc, char **argv, const char *optstring,
                          }
 #else
                        fprintf (stderr, _("\
-%s: option `-W %s' doesn't allow an argument\n"),
+%s: option '-W %s' doesn't allow an argument\n"),
                                 argv[0], pfound->name);
 #endif
                      }
@@ -1016,7 +1018,7 @@ _getopt_internal_r (int argc, char **argv, const char *optstring,
                        char *buf;
 
                        if (__asprintf (&buf, _("\
-%s: option `%s' requires an argument\n"),
+%s: option '%s' requires an argument\n"),
                                        argv[0], argv[d->optind - 1]) >= 0)
                          {
                            _IO_flockfile (stderr);
@@ -1037,7 +1039,7 @@ _getopt_internal_r (int argc, char **argv, const char *optstring,
                          }
 #else
                        fprintf (stderr,
-                                _("%s: option `%s' requires an argument\n"),
+                                _("%s: option '%s' requires an argument\n"),
                                 argv[0], argv[d->optind - 1]);
 #endif
                      }
@@ -1122,7 +1124,7 @@ _getopt_internal_r (int argc, char **argv, const char *optstring,
                  c = '?';
              }
            else
-             /* We already incremented `optind' once;
+             /* We already incremented 'optind' once;
                 increment it again when taking next ARGV-elt as argument.  */
              d->optarg = argv[d->optind++];
            d->__nextchar = NULL;
@@ -1171,7 +1173,7 @@ getopt (int argc, char *const *argv, const char *optstring)
 #ifdef TEST
 
 /* Compile with -DTEST to make an executable for use in testing
-   the above definition of `getopt'.  */
+   the above definition of 'getopt'.  */
 
 int
 main (int argc, char **argv)
@@ -1214,7 +1216,7 @@ main (int argc, char **argv)
          break;
 
        case 'c':
-         printf ("option c with value `%s'\n", optarg);
+         printf ("option c with value '%s'\n", optarg);
          break;
 
        case '?':
index f31c42f..0eb8edd 100644 (file)
@@ -1,5 +1,5 @@
 /* getopt_long and getopt_long_only entry points for GNU getopt.
-   Copyright (C) 1987-201 Free Software Foundation, Inc.
+   Copyright (C) 1987-2018 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    This program is free software; you can redistribute it and/or modify
@@ -13,7 +13,7 @@
    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 <http://www.gnu.org/licenses/>.  */
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 \f
 #ifdef HAVE_CONFIG_H
 #include <config.h>
@@ -143,11 +143,11 @@ main (int argc, char **argv)
          break;
 
        case 'c':
-         printf ("option c with value `%s'\n", optarg);
+         printf ("option c with value '%s'\n", optarg);
          break;
 
        case 'd':
-         printf ("option d with value `%s'\n", optarg);
+         printf ("option d with value '%s'\n", optarg);
          break;
 
        case '?':
index bed2060..4b1ac6b 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 2002-201 Free Software Foundation, Inc.
+/* Copyright (C) 2002-2018 Free Software Foundation, Inc.
      Written by Werner Lemberg <wl@gnu.org>
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include "lib.h"
 #include "stringclass.h"
@@ -334,9 +334,9 @@ struct S {
   { "*f", "03D5" },
   { "+p", "03D6" },
   { "+e", "03F5" },
-  // `-' and `hy' denote a HYPHEN, usually a glyph with a smaller width than
+  // '-' and 'hy' denote a HYPHEN, usually a glyph with a smaller width than
   // the MINUS sign.  Users who are viewing broken man pages that assume
-  // that `-' denotes a U+002D character can either fix the broken man pages
+  // that '-' denotes a U+002D character can either fix the broken man pages
   // or apply the workaround described in the PROBLEMS file.
   { "-", "2010" },
   { "hy", "2010" },
@@ -397,8 +397,8 @@ struct S {
   { "product", "220F" },
   { "coproduct", "2210" },
   { "sum", "2211" },
-  // `mi' and `\-' represent a MINUS sign.  But it is used in many man pages
-  // to denote the U+002D character that introduces a command-line option. 
+  // 'mi' and '\-' represent a MINUS sign.  But it is used in many man pages
+  // to denote the U+002D character that introduces a command-line option.
   // For devices that support copy&paste, such as devhtml and devutf8, the
   // user can apply the workaround described in the PROBLEMS file.
   { "\\-", "2212" },
@@ -474,12 +474,6 @@ struct S {
   { "bracerightbt", "23AD" },
   { "an", "23AF" },
   { "br", "2502" },
-  { "rk", "251D" },
-  { "lk", "2525" },
-  { "lt", "256D" },
-  { "rt", "256E" },
-  { "rb", "256F" },
-  { "lb", "2570" },
   { "sq", "25A1" },
   { "lz", "25CA" },
   { "ci", "25CB" },
@@ -490,17 +484,17 @@ struct S {
   { "HE", "2665" },
   { "DI", "2666" },
   { "OK", "2713" },
-  // The `left angle bracket' and `right angle bracket' could be mapped to
+  // The 'left angle bracket' and 'right angle bracket' could be mapped to
   // either U+2329,U+232A or U+3008,U+3009 or U+27E8,U+27E9.  But the first
   // and second possibility are double-width characters (see Unicode's
-  // `DerivedEastAsianWidth.txt' file) and are therefore not suitable for
+  // 'DerivedEastAsianWidth.txt' file) and are therefore not suitable for
   // general use, whereas the third possibility is single-width.
   //
   // The devhtml device overrides this mapping, because
   //
   //   http://www.w3.org/TR/html401/sgml/entities.html
   //
-  // says that in HTML, `&lang;' and `&rang;' are U+2329,U+232A,
+  // says that in HTML, '&lang;' and '&rang;' are U+2329,U+232A,
   // respectively.
   { "la", "27E8" },
   { "ra", "27E9" },
index 4ba9569..065e591 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000-201 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2018 Free Software Foundation, Inc.
      Written by Gaius Mulley (gaius@glam.ac.uk)
 
 This file is part of groff.
@@ -14,7 +14,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include "lib.h"
 
@@ -33,7 +33,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. */
  *  the image name and suppression escapes.
  *
  *  pre-html runs troff twice, once with -Thtml (or -Txhtml) and once
- *  with -Tps.  `troff -Thtml' (and `troff -Txhtml') emits a
+ *  with -Tps.  'troff -Thtml' (and 'troff -Txhtml') emits a
  *  <src='image'.png> tag and the postscript device driver works out
  *  the min/max limits of the graphic region.  These region limits are
  *  read by pre-html and an image is generated via
index 2927ce3..1fa44d4 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2005-201 Free Software Foundation, Inc.
+/* Copyright (C) 2005-2018 Free Software Foundation, Inc.
 This file is part of the GNU C Library.
 
 The GNU C Library is free software; you can redistribute it and/or
@@ -12,7 +12,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 Library General Public License for more details.
 
 You should have received a copy of the GNU Library General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.  */
+along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #ifdef HAVE_CONFIG_H
 #include <config.h>
@@ -20,10 +20,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.  */
 
 #include <math.h>
 
-#ifdef NEED_DECLARATION_HYPOT
-  double hypot(double, double);
-#endif /* NEED_DECLARATION_HYPOT */
-  
 double groff_hypot(double x, double y)
 {
   double result = hypot(x, y);
index 7f39fa0..1bd5849 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -14,7 +14,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #define INT_DIGITS 19          /* enough for 64-bit integer */
 
@@ -22,10 +22,13 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. */
 extern "C" {
 #endif
 
+/* Prototype */
+char *if_to_a(int, int);
+
 char *if_to_a(int i, int decimal_point)
 {
   /* room for a -, INT_DIGITS digits, a decimal point, and a terminating '\0' */
-  static char buf[INT_DIGITS + 3];                     
+  static char buf[INT_DIGITS + 3];
   char *p = buf + INT_DIGITS + 2;
   int point = 0;
   buf[INT_DIGITS + 2] = '\0';
index e9992fd..49926fc 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000-201 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -14,7 +14,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include "lib.h"
 
index fdeca06..3bfe7e4 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -14,7 +14,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #define INT_DIGITS 19          /* enough for 64 bit integer */
 #define UINT_DIGITS 20
@@ -23,6 +23,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. */
 extern "C" {
 #endif
 
+/* Prototypes */
+char *i_to_a(int);
+char *ui_to_a(unsigned int);
+
 char *i_to_a(int i)
 {
   /* Room for INT_DIGITS digits, - and '\0' */
index b35683b..279011d 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,13 +15,14 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include <ctype.h>
 
 #include "lib.h"
 #include "cset.h"
 #include "stringclass.h"
+#include "lf.h"
 
 extern void change_filename(const char *);
 extern void change_lineno(int);
@@ -60,3 +61,18 @@ int interpret_lf_args(const char *p)
   change_lineno(ln);
   return 1;
 }
+
+#if defined(__MSDOS__) || (defined(_WIN32) && !defined(__CYGWIN__))
+void normalize_for_lf (string &fn)
+{
+  int fnlen = fn.length();
+  for (int i = 0; i < fnlen; i++) {
+    if (fn[i] == '\\')
+      fn[i] = '/';
+  }
+}
+#else
+void normalize_for_lf (string &)
+{
+}
+#endif
diff --git a/src/libs/libgroff/libgroff.am b/src/libs/libgroff/libgroff.am
new file mode 100644 (file)
index 0000000..7e191e1
--- /dev/null
@@ -0,0 +1,180 @@
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Latest update: 13 Aug 2015
+#
+# This file is part of groff.
+#
+# groff 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.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+
+libgroff_srcdir = $(top_srcdir)/src/libs/libgroff
+noinst_LIBRARIES += libgroff.a
+libgroff_a_CPPFLAGS = \
+  $(AM_CPPFLAGS) \
+  -D__GETOPT_PREFIX=groff_ \
+  -DENABLE_RELOCATABLE=1 \
+  -DLIBDIR=\"$(libdir)\"
+
+# Build from OBJS
+libgroff_a_SOURCES = \
+  src/libs/libgroff/assert.cpp \
+  src/libs/libgroff/change_lf.cpp \
+  src/libs/libgroff/cmap.cpp \
+  src/libs/libgroff/color.cpp \
+  src/libs/libgroff/cset.cpp\
+  src/libs/libgroff/curtime.cpp \
+  src/libs/libgroff/device.cpp \
+  src/libs/libgroff/errarg.cpp \
+  src/libs/libgroff/error.cpp \
+  src/libs/libgroff/fatal.cpp \
+  src/libs/libgroff/filename.cpp \
+  src/libs/libgroff/font.cpp \
+  src/libs/libgroff/fontfile.cpp \
+  src/libs/libgroff/geometry.cpp \
+  src/libs/libgroff/getopt.c \
+  src/libs/libgroff/getopt1.c \
+  src/libs/libgroff/glyphuni.cpp \
+  src/libs/libgroff/htmlhint.cpp \
+  src/libs/libgroff/hypot.cpp \
+  src/libs/libgroff/iftoa.c \
+  src/libs/libgroff/invalid.cpp \
+  src/libs/libgroff/itoa.c \
+  src/libs/libgroff/lf.cpp \
+  src/libs/libgroff/lineno.cpp \
+  src/libs/libgroff/localcharset.c \
+  src/libs/libgroff/macropath.cpp \
+  src/libs/libgroff/matherr.c \
+  src/libs/libgroff/maxfilename.cpp \
+  src/libs/libgroff/maxpathname.cpp \
+  src/libs/libgroff/mksdir.cpp \
+  src/libs/libgroff/nametoindex.cpp \
+  src/libs/libgroff/new.cpp \
+  src/libs/libgroff/paper.cpp \
+  src/libs/libgroff/prime.cpp \
+  src/libs/libgroff/progname.c \
+  src/libs/libgroff/ptable.cpp \
+  src/libs/libgroff/quotearg.c \
+  src/libs/libgroff/relocate.cpp \
+  src/libs/libgroff/searchpath.cpp \
+  src/libs/libgroff/spawnvp.c \
+  src/libs/libgroff/string.cpp \
+  src/libs/libgroff/strsave.cpp \
+  src/libs/libgroff/symbol.cpp \
+  src/libs/libgroff/tmpfile.cpp \
+  src/libs/libgroff/tmpname.cpp \
+  src/libs/libgroff/unicode.cpp \
+  src/libs/libgroff/uniglyph.cpp \
+  src/libs/libgroff/uniuni.cpp \
+  src/libs/libgroff/relocatable.h
+nodist_libgroff_a_SOURCES = src/libs/libgroff/version.cpp
+
+# TODO: these .c files could be removed (use gnulib instead).
+EXTRA_DIST += \
+  src/libs/libgroff/mkstemp.cpp \
+  src/libs/libgroff/fmod.c \
+  src/libs/libgroff/getcwd.c \
+  src/libs/libgroff/putenv.c \
+  src/libs/libgroff/strcasecmp.c \
+  src/libs/libgroff/strerror.c \
+  src/libs/libgroff/strncasecmp.c \
+  src/libs/libgroff/strtol.c \
+  src/libs/libgroff/config.charset \
+  src/libs/libgroff/ref-add.sin \
+  src/libs/libgroff/ref-del.sin \
+  src/libs/libgroff/make-uniuni
+
+CLEANFILES += \
+  src/libs/libgroff/version.cpp \
+  charset.alias \
+  ref-add.sed \
+  ref-del.sed
+
+# .o files have a 'libgroff_a-' prefix because we set libgroff_a_CPPFLAGS
+src/libs/libgroff/libgroff_a-device.$(OBJEXT): defs.h
+src/libs/libgroff/libgroff_a-fontfile.$(OBJEXT): defs.h
+src/libs/libgroff/libgroff_a-macropath.$(OBJEXT): defs.h
+src/libs/libgroff/libgroff_a-relocate.$(OBJEXT): defs.h
+
+src/libs/libgroff/version.cpp: $(top_srcdir)/.version
+       @echo Making version.cpp
+       @echo const char \*version_string = \"$(MAJOR_VERSION).$(MINOR_VERSION)\"\; >$@
+       @echo const char \*revision_string = \"$(REVISION)\"\; >>$@
+       @echo extern \"C\" { >>$@
+       @echo const char \*Version_string = \"$(VERSION)\"\; >>$@
+       @echo } >>$@ \
+         | sed -e 's/\.0\"/\"/' >>$@
+
+# Data for localcharset.c.  Taken from libiconv/libcharset.
+
+LIBGROFF_PACKAGE = groff
+
+all: charset.alias ref-add.sed ref-del.sed
+
+charset.alias: $(libgroff_srcdir)/config.charset
+       $(SHELL) $(libgroff_srcdir)/config.charset '$(HOST)' > t-$@
+       mv t-$@ $@
+
+ref-add.sed : $(libgroff_srcdir)/ref-add.sin
+       sed -e '/^#/d' \
+           -e 's/@''PACKAGE''@/$(LIBGROFF_PACKAGE)/g' $(libgroff_srcdir)/ref-add.sin > t-$@
+       mv t-$@ $@
+
+ref-del.sed : $(libgroff_srcdir)/ref-del.sin
+       sed -e '/^#/d' \
+           -e 's/@''PACKAGE''@/$(LIBGROFF_PACKAGE)/g' $(libgroff_srcdir)/ref-del.sin > t-$@
+       mv t-$@ $@
+
+install-data-local: install_charset_data
+install_charset_data:
+       -test $(GLIBC21) != no || $(mkinstalldirs) $(DESTDIR)$(libdir)
+       if test -f $(DESTDIR)$(libdir)/charset.alias; then \
+         sed -f ref-add.sed $(DESTDIR)$(libdir)/charset.alias \
+           > $(DESTDIR)$(libdir)/t-charset.alias; \
+         $(INSTALL_DATA) $(DESTDIR)$(libdir)/t-charset.alias \
+           $(DESTDIR)$(libdir)/charset.alias; \
+         rm -f $(DESTDIR)$(libdir)/t-charset.alias; \
+       else \
+         if test $(GLIBC21) = no; then \
+           sed -f ref-add.sed charset.alias \
+             > $(DESTDIR)$(libdir)/t-charset.alias; \
+           $(INSTALL_DATA) $(DESTDIR)$(libdir)/t-charset.alias \
+             $(DESTDIR)$(libdir)/charset.alias; \
+           rm -f $(DESTDIR)$(libdir)/t-charset.alias; \
+         fi; \
+       fi
+
+uninstall-local: uninstall_charset_data
+uninstall_charset_data:
+       -if test -f $(DESTDIR)$(libdir)/charset.alias; then \
+         sed -f ref-del.sed $(DESTDIR)$(libdir)/charset.alias \
+           > $(DESTDIR)$(libdir)/t-charset.alias; \
+         if grep '^# Packages using this file: $$' \
+                 $(DESTDIR)$(libdir)/t-charset.alias > /dev/null; then \
+           rm -f $(DESTDIR)$(libdir)/charset.alias; \
+         else \
+           $(INSTALL_DATA) $(DESTDIR)$(libdir)/t-charset.alias \
+             $(DESTDIR)$(libdir)/charset.alias; \
+         fi; \
+         rm -f $(DESTDIR)$(libdir)/t-charset.alias; \
+       fi
+
+
+########################################################################
+# Editor settings
+########################################################################
+#
+# Local Variables:
+# mode: makefile-automake
+# fill-column: 72
+# End:
+# vim: set filetype=automake textwidth=72:
index bb741c1..8e1e4fc 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2014  Free Software Foundation, Inc.
+/* Copyright (C) 2014-2018 Free Software Foundation, Inc.
 
 This file is part of groff.
 
index 1c17af0..4322ca5 100644 (file)
@@ -1,6 +1,6 @@
 /* Determine a canonical name for the current locale's character encoding.
 
-   Copyright (C) 2000-2006, 2008-2014 Free Software Foundation, Inc.
+   Copyright (C) 2000-2018 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
index 3731252..5cd24e1 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include "lib.h"
 #include "searchpath.h"
index a272182..c81e61a 100755 (executable)
@@ -2,7 +2,7 @@
 #
 # make-uniuni -- script for creating the file uniuni.cpp
 #
-# Copyright (C) 2005-201 Free Software Foundation, Inc.
+# Copyright (C) 2005-2018 Free Software Foundation, Inc.
 #      Written by Werner Lemberg <wl@gnu.org>
 #
 # This file is part of groff.
 # for more details.
 #
 # You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 #
 # usage:
 #
 #   make-uniuni <version-string> < UnicodeData.txt > uniuni.cpp
 #
-# `UnicodeData.txt' is the central database file from the Unicode standard.
+# 'UnicodeData.txt' is the central database file from the Unicode standard.
 # Unfortunately, it doesn't contain a version number which must be thus
 # provided manually as a parameter to the filter.
 #
@@ -74,8 +74,7 @@ cat $$3 \
 # Write preamble.
 cat <<END
 // -*- C++ -*-
-/* Copyright (C) 2002, 2003, 2004, 2005
-   Free Software Foundation, Inc.
+/* Copyright (C) 2002-2014  Free Software Foundation, Inc.
      Written by Werner Lemberg <wl@gnu.org>
 
 This file is part of groff.
@@ -91,7 +90,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 // This code has been algorithmically derived from the file
 // UnicodeData.txt, version $version_string, available from unicode.org,
index e9f5c2c..1c48771 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -14,7 +14,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #ifdef HAVE_CONFIG_H
 #include <config.h>
index 3162fab..777f82c 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1992-201 Free Software Foundation, Inc.
+/* Copyright (C) 1992-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 /* file_name_max(dir) does the same as pathconf(dir, _PC_NAME_MAX) */
 
index ee58cc2..ca53123 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 2005-201 Free Software Foundation, Inc.
+/* Copyright (C) 2005-2018 Free Software Foundation, Inc.
      Written by Werner Lemberg (wl@gnu.org)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 /* path_name_max(dir) does the same as pathconf(dir, _PC_PATH_MAX) */
 
index f466a05..5b60744 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-201 Free Software Foundation, Inc.
+/* Copyright (C) 2001-2018 Free Software Foundation, Inc.
      Written by Werner Lemberg (wl@gnu.org)
 
 This file is part of groff.
@@ -14,7 +14,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 
 /* This file is heavily based on the file mkstemp.c which is part of the
index 30615fe..e867f8e 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2014 Free Software Foundation, Inc.
+/* Copyright (C) 2001-2018 Free Software Foundation, Inc.
      Written by Werner Lemberg (wl@gnu.org)
 
 This file is part of groff.
@@ -14,7 +14,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 
 /* This file is heavily based on the file mkstemp.c which is part of the
index 3a495c7..7708610 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include "lib.h"
 
@@ -35,11 +35,11 @@ public:
   friend class character_indexer;
 };
 
-// PTABLE(charinfo) is a hash table mapping `const char *' to `charinfo *'.
+// PTABLE(charinfo) is a hash table mapping 'const char *' to 'charinfo *'.
 declare_ptable(charinfo)
 implement_ptable(charinfo)
 
-// ITABLE(charinfo) is a hash table mapping `int >= 0' to `charinfo *'.
+// ITABLE(charinfo) is a hash table mapping 'int >= 0' to 'charinfo *'.
 declare_itable(charinfo)
 implement_itable(charinfo)
 
@@ -95,7 +95,7 @@ glyph *character_indexer::ascii_char_glyph(unsigned char c)
 
 inline glyph *character_indexer::named_char_glyph(const char *s)
 {
-  // Glyphs with name `charNNN' are only stored in ascii_glyph[], not
+  // Glyphs with name 'charNNN' are only stored in ascii_glyph[], not
   // in the table.  Therefore treat them specially here.
   if (s[0] == 'c' && s[1] == 'h' && s[2] == 'a' && s[3] == 'r') {
     char *val;
index 74a5dc2..74f1d27 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -14,7 +14,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include "lib.h"
 
@@ -67,3 +67,22 @@ void operator delete(void *p)
     free(p);
 #endif /* COOKIE_BUG */
 }
+
+void operator delete(void *p,
+                    __attribute__((__unused__)) long unsigned int size)
+{
+  // It's ugly to duplicate the code from delete(void *) above, but if
+  // we don't, g++ 6.3 can't figure out we're calling through it to
+  // free().
+  //
+  // In function 'void operator delete(void*, long unsigned int)':
+  //   warning: deleting 'void*' is undefined [-Wdelete-incomplete]
+  //delete p;
+#ifdef COOKIE_BUG
+  if (p)
+    free((void *)((char *)p - 8));
+#else
+  if (p)
+    free(p);
+#endif /* COOKIE_BUG */
+}
index ecfdfda..4c90e7d 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 2002-201 Free Software Foundation, Inc.
+/* Copyright (C) 2002-2018 Free Software Foundation, Inc.
      Written by Werner Lemberg (wl@gnu.org)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include "lib.h"
 #include "paper.h"
index a19a8ae..c75d45a 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2014  Free Software Foundation, Inc.
+/* Copyright (C) 2014-2018 Free Software Foundation, Inc.
 
 This file is part of groff.
 
@@ -15,6 +15,9 @@ for more details.
 The GNU General Public License version 2 (GPL2) is available in the
 internet at <http://www.gnu.org/licenses/gpl-2.0.txt>. */
 
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
 #include <math.h>
 
 int is_prime(unsigned n)
index 1d6e2fd..34d320a 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2014  Free Software Foundation, Inc.
+/* Copyright (C) 2014-2018 Free Software Foundation, Inc.
 
 This file is part of groff.
 
index 97cabcb..06d5550 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -14,7 +14,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include "ptable.h"
 #include "errarg.h"
index 86e3786..9fbd8ef 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991-201 Free Software Foundation, Inc.
+/* Copyright (C) 1991-2018 Free Software Foundation, Inc.
 This file is part of the GNU C Library.
 
 The GNU C Library is free software; you can redistribute it and/or
@@ -12,7 +12,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 Library General Public License for more details.
 
 You should have received a copy of the GNU Library General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.  */
+along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 /* Hacked slightly by jjc@jclark.com for groff. */
 
@@ -43,7 +43,7 @@ PTR malloc();
 
 extern char **environ;
 
-/* Put STRING, which is of the form `NAME=VALUE', in the environment.  */
+/* Put STRING, which is of the form 'NAME=VALUE', in the environment.  */
 
 int putenv(const char *string)
 {
index 535fce9..afef93f 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2004-201 Free Software Foundation, Inc.
+/* Copyright (C) 2004-2018 Free Software Foundation, Inc.
      Written by:  Jeff Conrad    (jeff_conrad@msn.com)
        and        Keith Marshall (keith.d.marshall@ntlworld.com)
 
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include <stdio.h>
 #include <stdlib.h>
@@ -26,7 +26,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. */
 /* Define the default mechanism, and messages, for error reporting
  * (user may substitute a preferred alternative, by defining his own
  *  implementation of the macros REPORT_ERROR, QUOTE_ARG_MALLOC_FAILED
- *  and QUOTE_ARG_REALLOC_FAILED, in the header file `nonposix.h').
+ *  and QUOTE_ARG_REALLOC_FAILED, in the header file 'nonposix.h').
  */
 
 #include "nonposix.h"
@@ -43,6 +43,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. */
 
 extern char *program_name;     /* main program must define this */
 
+/* Prototypes */
+char *quote_arg(char *);
+void purge_quoted_args(char **);
+
 #undef FALSE
 #undef TRUE
 #define FALSE 0
@@ -51,7 +55,7 @@ extern char *program_name;    /* main program must define this */
 static int
 needs_quoting(const char *string)
 {
-  /* Scan `string' to see whether it needs quoting for MSVC `spawn'/`exec'
+  /* Scan 'string' to see whether it needs quoting for MSVC 'spawn'/'exec'
    * (i.e., whether it contains whitespace or embedded quotes).
    */
 
@@ -75,7 +79,7 @@ needs_quoting(const char *string)
   }
 
   /* Fall through, if no quotes or white space found,
-   * in which case, return `FALSE'.
+   * in which case, return 'FALSE'.
    */
 
   return FALSE;
@@ -93,11 +97,11 @@ quote_arg(char *string)
   char *quoted, *p, *q;
 
   if (needs_quoting(string)) {
-    /* Need to create a quoted copy of `string';
+    /* Need to create a quoted copy of 'string';
      * maximum buffer space needed is twice the original length,
-     * plus two enclosing quotes and one `\0' terminator.
+     * plus two enclosing quotes and one '\0' terminator.
      */
-    
+
     if ((quoted = (char *)malloc(2 * strlen(string) + 3)) == NULL) {
       /* Couldn't get a buffer for the quoted string,
        * so complain, and bail out gracefully.
@@ -177,7 +181,7 @@ quote_arg(char *string)
     }
   }
 
-  /* `string' now refers to the argument,
+  /* 'string' now refers to the argument,
    * quoted and escaped, as required.
    */
 
@@ -188,16 +192,16 @@ void
 purge_quoted_args(char **argv)
 {
   /* To avoid memory leaks,
-   * free all memory previously allocated by `quoted_arg()',
-   * within the scope of the referring argument vector, `argv'.
+   * free all memory previously allocated by 'quoted_arg()',
+   * within the scope of the referring argument vector, 'argv'.
    */
 
   if (argv)
     while (*argv) {
       /* Any argument beginning with a double quote
-       * SHOULD have been allocated by `quoted_arg()'.
+       * SHOULD have been allocated by 'quoted_arg()'.
        */
-      
+
       if (**argv == '"')
         free( *argv );         /* so free its allocation */
       ++argv;                  /* and continue to the next argument */
index 4379dfe..0f5f20b 100644 (file)
@@ -1,6 +1,6 @@
 # Add this package to a list of references stored in a text file.
 #
-#   Copyright (C) 2000, 2009-2014 Free Software Foundation, Inc.
+#   Copyright (C) 2000-2018 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
index d36b125..4855114 100644 (file)
@@ -1,6 +1,6 @@
 # Remove this package from a list of references stored in a text file.
 #
-#   Copyright (C) 2000, 2009-2014 Free Software Foundation, Inc.
+#   Copyright (C) 2000-2018 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
index 8280809..2207fcb 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2014  Free Software Foundation, Inc.
+/* Copyright (C) 2014-2018 Free Software Foundation, Inc.
 
 This file is part of groff.
 
index ead2d6b..4273e5a 100644 (file)
@@ -1,6 +1,6 @@
 // -*- C++ -*-
 /* Provide relocation for macro and font files.
-   Copyright (C) 2005-201 Free Software Foundation, Inc.
+   Copyright (C) 2005-2018 Free Software Foundation, Inc.
 
    This program is free software; you can redistribute it and/or modify it
    under the terms of the GNU Library General Public License as published
@@ -13,7 +13,7 @@
    Library General Public License for more details.
 
    You should have received a copy of the GNU Library General Public License
-   along with this program. If not, see <http://www.gnu.org/licenses/>.  */
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 // Made after relocation code in kpathsea and gettext.
 
@@ -43,7 +43,7 @@ extern "C" const char *program_name;
 char *curr_prefix = 0;
 size_t curr_prefix_len = 0;
 
-// Return the directory part of a filename, or `.' if no path separators.
+// Return the directory part of a filename, or '.' if no path separators.
 char *xdirname(char *s)
 {
   static const char dot[] = ".";
@@ -75,8 +75,8 @@ char *searchpath(const char *name, const char *pathp)
   if (!name || !*name)
     return 0;
 #if DEBUG
-  fprintf(stderr, "searchpath: pathp: `%s'\n", pathp);
-  fprintf(stderr, "searchpath: trying `%s'\n", name);
+  fprintf(stderr, "searchpath: pathp: '%s'\n", pathp);
+  fprintf(stderr, "searchpath: trying '%s'\n", name);
 #endif
   // Try first NAME as such; success if NAME is an absolute filename,
   // or if NAME is found in the current directory.
@@ -88,7 +88,7 @@ char *searchpath(const char *name, const char *pathp)
     path = realpath(name, path);
 #endif
 #if DEBUG
-    fprintf(stderr, "searchpath: found `%s'\n", path);
+    fprintf(stderr, "searchpath: found '%s'\n", path);
 #endif
     return path;
   }
@@ -107,11 +107,11 @@ char *searchpath(const char *name, const char *pathp)
       path[end - p] = '/';
     strcpy(path + (end - p) + need_slash, name);
 #if DEBUG
-    fprintf(stderr, "searchpath: trying `%s'\n", path);
+    fprintf(stderr, "searchpath: trying '%s'\n", path);
 #endif
     if (!access(path, F_OK)) {
 #if DEBUG
-      fprintf(stderr, "searchpath: found `%s'\n", name);
+      fprintf(stderr, "searchpath: found '%s'\n", name);
 #endif
       return path;
     }
index f9efe11..18a5c4e 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include "lib.h"
 
@@ -118,22 +118,22 @@ FILE *search_path::open_file(const char *name, char **pathp)
       origpath[end - p] = '/';
     strcpy(origpath + (end - p) + need_slash, name);
 #if 0
-    fprintf(stderr, "origpath `%s'\n", origpath);
+    fprintf(stderr, "origpath '%s'\n", origpath);
 #endif
     char *path = relocate(origpath);
     a_delete origpath;
 #if 0
-    fprintf(stderr, "trying `%s'\n", path);
+    fprintf(stderr, "trying '%s'\n", path);
 #endif
     FILE *fp = fopen(path, "r");
     if (fp) {
       if (pathp)
        *pathp = path;
       else
-       a_delete path;
+       free(path);
       return fp;
     }
-    a_delete path;
+    free(path);
     if (*end == '\0')
       break;
     p = end + 1;
@@ -175,23 +175,23 @@ FILE *search_path::open_file_cautious(const char *name, char **pathp,
       origpath[end - p] = '/';
     strcpy(origpath + (end - p) + need_slash, name);
 #if 0
-    fprintf(stderr, "origpath `%s'\n", origpath);
+    fprintf(stderr, "origpath '%s'\n", origpath);
 #endif
     char *path = relocate(origpath);
     a_delete origpath;
 #if 0
-    fprintf(stderr, "trying `%s'\n", path);
+    fprintf(stderr, "trying '%s'\n", path);
 #endif
     FILE *fp = fopen(path, mode);
     if (fp) {
       if (pathp)
        *pathp = path;
       else
-       a_delete path;
+       free(path);
       return fp;
     }
     int err = errno;
-    a_delete path;
+    free(path);
     if (err != ENOENT)
     {
       errno = err;
index 0cc6fb1..902d03d 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2004-201 Free Software Foundation, Inc.
+/* Copyright (C) 2004-2018 Free Software Foundation, Inc.
      Written by: Keith Marshall (keith.d.marshall@ntlworld.com)
 
 This file is part of groff.
@@ -14,7 +14,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #ifdef HAVE_CONFIG_H
 # include "config.h"
@@ -36,7 +36,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. */
 /* Define the default mechanism, and messages, for error reporting
  * (user may substitute a preferred alternative, by defining his own
  *  implementation of the macros REPORT_ERROR and ARGV_MALLOC_ERROR,
- *  in the header file `nonposix.h').
+ *  in the header file 'nonposix.h').
  */
 
 #include "nonposix.h"
@@ -56,19 +56,19 @@ extern void purge_quoted_args(char **argv);
 int
 spawnvp_wrapper(int mode, char *path, char **argv)
 {
-  /* Invoke the system `spawnvp' service
+  /* Invoke the system 'spawnvp' service
    * enclosing the passed arguments in double quotes, as required,
    * so that the (broken) default parsing in the MSVC runtime doesn't
    * split them at whitespace. */
 
-  char **quoted_argv;  /* used to build a quoted local copy of `argv' */
+  char **quoted_argv;  /* used to build a quoted local copy of 'argv' */
 
-  int i;               /* used as an index into `argv' or `quoted_argv' */
+  int i;               /* used as an index into 'argv' or 'quoted_argv' */
   int status = -1;     /* initialise return code, in case we fail */
   int argc = 0;                /* initialise argument count; may be none  */
 
   /* First count the number of arguments
-   * which are actually present in the passed `argv'. */
+   * which are actually present in the passed 'argv'. */
 
   if (argv)
     for (quoted_argv = argv; *quoted_argv; ++argc, ++quoted_argv)
@@ -76,10 +76,10 @@ spawnvp_wrapper(int mode, char *path, char **argv)
 
   /* If we do not now have an argument count,
    * then we must fall through and fail. */
-  
+
   if (argc) {
     /* We do have at least one argument:
-     * We will use a copy of the `argv', in which to do the quoting,
+     * We will use a copy of the 'argv', in which to do the quoting,
      * so we must allocate space for it. */
 
     if ((quoted_argv = (char **)malloc(++argc * sizeof(char **))) == NULL) {
@@ -90,26 +90,26 @@ spawnvp_wrapper(int mode, char *path, char **argv)
       exit(1);
     }
 
-    /* Now copy the passed `argv' into our new vector,
+    /* Now copy the passed 'argv' into our new vector,
      * quoting its contents as required. */
-    
+
     for (i = 0; i < argc; i++)
       quoted_argv[i] = quote_arg(argv[i]);
 
-    /* Invoke the MSVC `spawnvp' service
-     * passing our now appropriately quoted copy of `argv'. */
+    /* Invoke the MSVC 'spawnvp' service
+     * passing our now appropriately quoted copy of 'argv'. */
 
     status = spawnvp(mode, path, quoted_argv);
 
     /* Clean up our memory allocations
-     * for the quoted copy of `argv', which is no longer required. */
+     * for the quoted copy of 'argv', which is no longer required. */
 
     purge_quoted_args(quoted_argv);
     free(quoted_argv);
   }
 
   /* Finally,
-   * return the status code returned by `spawnvp',
+   * return the status code returned by 'spawnvp',
    * or a failure code if we fell through. */
 
   return status;
index 4eb99be..2d99f4f 100644 (file)
@@ -1,5 +1,5 @@
 /* strcasecmp.c -- case insensitive string comparator
-   Copyright (C) 1998-201 Free Software Foundation, Inc.
+   Copyright (C) 1998-2018 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
@@ -12,7 +12,7 @@
    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 <http://www.gnu.org/licenses/>.  */
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #if HAVE_CONFIG_H
 # include <config.h>
index c62d5a4..b6e9468 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -14,7 +14,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #ifdef HAVE_CONFIG_H
 #include <config.h>
index da3b2dc..46c015c 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,9 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
+
+#include <stdlib.h>
 
 #include "lib.h"
 
@@ -98,7 +100,8 @@ string::string(const char *p)
   else {
     len = strlen(p);
     ptr = salloc(len, &sz);
-    memcpy(ptr, p, len);
+    if (len != 0)
+      memcpy(ptr, p, len);
   }
 }
 
@@ -141,7 +144,8 @@ string &string::operator=(const char *p)
     int slen = strlen(p);
     ptr = sfree_alloc(ptr, sz, slen, &sz);
     len = slen;
-    memcpy(ptr, p, len);
+    if (len != 0)
+      memcpy(ptr, p, len);
   }
   return *this;
 }
@@ -284,7 +288,7 @@ char *string::extract() const
   for (i = 0; i < n; i++)
     if (p[i] == '\0')
       nnuls++;
-  char *q = new char[n + 1 - nnuls];
+  char *q =(char*)malloc(n + 1 - nnuls);
   char *r = q;
   for (i = 0; i < n; i++)
     if (p[i] != '\0')
index 2ee553f..19046a8 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2014  Free Software Foundation, Inc.
+/* Copyright (C) 2014-2018 Free Software Foundation, Inc.
 
 This file is part of groff.
 
index b8b69cc..f95c05e 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,15 +15,16 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include <string.h>
+#include <stdlib.h>
 
 char *strsave(const char *s)
 {
   if (s == 0)
     return 0;
-  char *p = new char[strlen(s) + 1];
+  char *p = (char*)malloc(strlen(s) + 1);
   strcpy(p, s);
   return p;
 }
index 78bab70..9928a22 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -14,7 +14,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #ifdef HAVE_CONFIG_H
 #include <config.h>
index b298d3d..6ce943d 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include "lib.h"
 
index 07ecf2e..19285c4 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include "lib.h"
 
@@ -146,7 +146,7 @@ xtmpfile_list_init::~xtmpfile_list_init()
   xtmpfile_list *x = xtmpfiles_to_delete;
   while (x != 0) {
     if (unlink(x->fname) < 0)
-      error("cannot unlink `%1': %2", x->fname, strerror(errno));
+      error("cannot unlink '%1': %2", x->fname, strerror(errno));
     xtmpfile_list *tmp = x;
     x = x->next;
     a_delete tmp->fname;
index 0a6a1e5..c784001 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-201 Free Software Foundation, Inc.
+/* Copyright (C) 2001-2018 Free Software Foundation, Inc.
      Written by Werner Lemberg (wl@gnu.org)
 
 This file is part of groff.
@@ -14,7 +14,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 
 /* This file is heavily based on the function __gen_tempname() in the
index 366982e..784c0b5 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 2002-201 Free Software Foundation, Inc.
+/* Copyright (C) 2002-2018 Free Software Foundation, Inc.
      Written by Werner Lemberg <wl@gnu.org>
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include "lib.h"
 #include "cset.h"
index 7c6708f..911f4c8 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 2002-201 Free Software Foundation, Inc.
+/* Copyright (C) 2002-2018 Free Software Foundation, Inc.
      Written by Werner Lemberg <wl@gnu.org>
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include "lib.h"
 #include "stringclass.h"
@@ -229,7 +229,7 @@ struct S {
   { "00AC", "no" },
 //{ "00AC", "tno" },
   // In groff, U+00AD is an input character only; it is not mapped to
-  // a glyph but to `\%'.
+  // a glyph but to '\%'.
   { "00AE", "rg" },
   { "00AF", "a-" },
   { "00B0", "de" },
@@ -460,12 +460,6 @@ struct S {
 //{ "23AD", "bracerightbt" },
   { "23AF", "an" },
   { "2502", "br" },
-  { "251D", "rk" },
-  { "2525", "lk" },
-  { "256D", "lt" },
-  { "256E", "rt" },
-  { "256F", "rb" },
-  { "2570", "lb" },
   { "25A1", "sq" },
   { "25CA", "lz" },
   { "25CB", "ci" },
index 7991139..1654355 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 2002-201 Free Software Foundation, Inc.
+/* Copyright (C) 2002-2018 Free Software Foundation, Inc.
      Written by Werner Lemberg <wl@gnu.org>
 
 This file is part of groff.
@@ -15,11 +15,11 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 // This code has been algorithmically derived from the file
-// UnicodeData.txt, version 4.1.0, available from unicode.org,
-// on 2005-12-09.
+// UnicodeData.txt, version 7.0.0, available from unicode.org,
+// on 2014-12-16.
 
 #include "lib.h"
 #include "stringclass.h"
@@ -446,6 +446,17 @@ struct S {
   { "0FAC", "20FAB_0FB7" },
   { "0FB9", "20F90_0FB5" },
   { "1026", "21025_102E" },
+  { "1B06", "21B05_1B35" },
+  { "1B08", "21B07_1B35" },
+  { "1B0A", "21B09_1B35" },
+  { "1B0C", "21B0B_1B35" },
+  { "1B0E", "21B0D_1B35" },
+  { "1B12", "21B11_1B35" },
+  { "1B3B", "21B3A_1B35" },
+  { "1B3D", "21B3C_1B35" },
+  { "1B40", "21B3E_1B35" },
+  { "1B41", "21B3F_1B35" },
+  { "1B43", "21B42_1B35" },
   { "1E00", "20041_0325" },
   { "1E01", "20061_0325" },
   { "1E02", "20042_0307" },
@@ -1320,6 +1331,8 @@ struct S {
   { "FA2B", "198FC" },
   { "FA2C", "19928" },
   { "FA2D", "19DB4" },
+  { "FA2E", "190DE" },
+  { "FA2F", "196B7" },
   { "FA30", "14FAE" },
   { "FA31", "150E7" },
   { "FA32", "1514D" },
@@ -1379,6 +1392,9 @@ struct S {
   { "FA68", "196E3" },
   { "FA69", "197FF" },
   { "FA6A", "1983B" },
+  { "FA6B", "16075" },
+  { "FA6C", "1242EE" },
+  { "FA6D", "18218" },
   { "FA70", "14E26" },
   { "FA71", "151B5" },
   { "FA72", "15168" },
@@ -1519,6 +1535,18 @@ struct S {
   { "FB4C", "205D1_05BF" },
   { "FB4D", "205DB_05BF" },
   { "FB4E", "205E4_05BF" },
+  { "1109A", "211099_110BA" },
+  { "1109C", "21109B_110BA" },
+  { "110AB", "2110A5_110BA" },
+  { "1112E", "211131_11127" },
+  { "1112F", "211132_11127" },
+  { "1134B", "211347_1133E" },
+  { "1134C", "211347_11357" },
+  { "114BB", "2114B9_114BA" },
+  { "114BC", "2114B9_114B0" },
+  { "114BE", "2114B9_114BD" },
+  { "115BA", "2115B8_115AF" },
+  { "115BB", "2115B9_115AF" },
   { "1D15E", "21D157_1D165" },
   { "1D15F", "21D158_1D165" },
   { "1D160", "31D158_1D165_1D16E" },
index 3891763..26cffa7 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2014  Free Software Foundation, Inc.
+/* Copyright (C) 2014-2018 Free Software Foundation, Inc.
 
 This file is part of groff.
 
@@ -401,7 +401,8 @@ static DviCharNameMap ISO8859_1_map = {
 {      "'y",                   /* 253 */},
 {      "Tp",                   /* 254 */},
 {      ":y",                   /* 255 */},
-}};
+},
+       {0} /* buckets */};
 
 static DviCharNameMap Adobe_Symbol_map = {
        "adobe-fontspecific",
@@ -663,7 +664,8 @@ static DviCharNameMap Adobe_Symbol_map = {
 {      "bracerightmid", "rk",                          /* 253 */},
 {      "bracerightbt", "rb",                           /* 254 */},
 {      0,                                              /* 255 */},
-}};
+},
+       {0} /* buckets */};
 
 
 static void
diff --git a/src/libs/libxutil/Makefile.sub b/src/libs/libxutil/Makefile.sub
deleted file mode 100644 (file)
index df8eb02..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-# Makefile.sub for `libxutil'
-#
-# File position: <groff-source>/src/libs/libxutil/Makefile.sub
-#
-# Copyright (C) 2014 Free Software Foundation, Inc.
-#
-# This file is part of `font utf8' which is part of `groff'.
-#
-# `groff' is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 2 of the License, or
-# (at your option) any later version.
-#
-# `groff' 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
-# <http://www.gnu.org/licenses/gpl-2.0.html>.
-#
-########################################################################
-
-LIB=xutil
-EXTRA_CFLAGS=$(X_CFLAGS)
-OBJS=\
-  DviChar.$(OBJEXT) \
-  XFontName.$(OBJEXT) \
-  xmalloc.$(OBJEXT)
-CSRCS=\
-  $(srcdir)/DviChar.c \
-  $(srcdir)/XFontName.c \
-  $(srcdir)/xmalloc.c
-
-########################################################################
-# Emacs settings
-########################################################################
-#
-# Local Variables:
-# mode: makefile
-# End:
index d3c509b..9ac4f97 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2014  Free Software Foundation, Inc.
+/* Copyright (C) 2014-2018 Free Software Foundation, Inc.
 
 This file is part of groff.
 
similarity index 51%
rename from src/utils/addftinfo/Makefile.sub
rename to src/libs/libxutil/libxutil.am
index 6dd230c..8ebad5c 100644 (file)
@@ -1,43 +1,43 @@
-# Makefile.sub for `src utils addftinfo'
+# Automake rules for 'libxutil'
 #
-# File position: <groff-source>/src/utils/addftinfo/Makefile.sub
+# File position: <groff-source>/src/libs/libxutil/libxutil.am
 #
-# Copyright (C) 2014  Free Software Foundation, Inc.
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
 #
-# This file is part of `font utf8' which is part of `groff'.
+# Latest update: 13 Aug 2015
 #
-# `groff' is free software; you can redistribute it and/or modify it
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
 # the Free Software Foundation, either version 2 of the License, or
 # (at your option) any later version.
 #
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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
+# along with this program.  If not, see
 # <http://www.gnu.org/licenses/gpl-2.0.html>.
 #
 ########################################################################
 
-PROG=addftinfo$(EXEEXT)
-MAN1=addftinfo.n
-XLIBS=$(LIBGROFF)
-OBJS=\
-  addftinfo.$(OBJEXT) \
-  guess.$(OBJEXT)
-CCSRCS=\
-  $(srcdir)/addftinfo.cpp \
-  $(srcdir)/guess.cpp
-HDRS=\
-  $(srcdir)/guess.h
+if !WITHOUT_X11
+noinst_LIBRARIES += libxutil.a
+libxutil_a_CPPFLAGS = $(AM_CPPFLAGS) $(X_CFLAGS)
+libxutil_a_SOURCES = \
+  src/libs/libxutil/DviChar.c \
+  src/libs/libxutil/XFontName.c \
+  src/libs/libxutil/xmalloc.c
+endif
+
 
 ########################################################################
-# Emacs settings
+# Editor settings
 ########################################################################
 #
 # Local Variables:
-# mode: makefile
+# mode: makefile-automake
+# fill-column: 72
 # End:
+# vim: set filetype=automake textwidth=72:
index 9ccebe4..5550acc 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2014  Free Software Foundation, Inc.
+/* Copyright (C) 2014-2018 Free Software Foundation, Inc.
 
 This file is part of groff.
 
@@ -18,6 +18,8 @@ internet at <http://www.gnu.org/licenses/gpl-2.0.txt>. */
 #include <X11/Xlib.h>
 #include <X11/Intrinsic.h>
 
+char *xmalloc(int n);
+
 char *xmalloc(int n)
 {
     return XtMalloc(n);
diff --git a/src/libs/snprintf/snprintf.c b/src/libs/snprintf/snprintf.c
deleted file mode 100644 (file)
index fc245f1..0000000
+++ /dev/null
@@ -1,1131 +0,0 @@
-/*
- * snprintf.c - a portable implementation of snprintf
- *
- * AUTHOR
- *   Mark Martinec <mark.martinec@ijs.si>, April 1999.
- *
- *   Copyright 1999-2002 Mark Martinec. All rights reserved.
- *
- * TERMS AND CONDITIONS
- *   This program is free software; it is dual licensed, the terms of the
- *   "Frontier Artistic License" or the "GNU General Public License"
- *   can be chosen at your discretion. The chosen license then applies
- *   solely and in its entirety. Both licenses come with this Kit.
- *
- *   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 license for more details.
- *
- *   You should have received a copy of the "Frontier Artistic License"
- *   with this Kit in the file named LICENSE.txt, and the copy of
- *   the "GNU General Public License" in the file named LICENSE-GPL.txt.
- *   If not, I'll be glad to provide one.
- *
- * FEATURES
- * - careful adherence to specs regarding flags, field width and precision;
- * - good performance for large string handling (large format, large
- *   argument or large paddings). Performance is similar to system's sprintf
- *   and in several cases significantly better (make sure you compile with
- *   optimizations turned on, tell the compiler the code is strict ANSI
- *   if necessary to give it more freedom for optimizations);
- * - return value semantics per ISO/IEC 9899:1999 ("ISO C99");
- * - written in standard ISO/ANSI C - requires an ANSI C compiler;
- * - works also with non-ASCII 8-bit character sets (e.g. EBCDIC)
- *   provided strings are '\0'-terminated.
- *
- * SUPPORTED CONVERSION SPECIFIERS AND DATA TYPES
- *
- * This snprintf only supports the following conversion specifiers:
- * s, c, d, u, o, x, X, p  (and synonyms: i, D, U, O - see below)
- * with flags: '-', '+', ' ', '0' and '#'.
- * An asterisk is supported for field width and for the precision.
- *
- * Length modifiers 'h' (short int), 'l' (long int),
- * and 'll' (long long int) are supported.
- * NOTE:
- *   If macro SNPRINTF_LONGLONG_SUPPORT is not defined (default) the
- *   length modifier 'll' is recognized but treated the same as 'l',
- *   which may cause argument value truncation! Defining
- *   SNPRINTF_LONGLONG_SUPPORT requires that your system's sprintf also
- *   handles length modifier 'll'.  long long int is a language extension
- *   which may not be portable.
- *
- * Conversion of numeric data (conversion specifiers d, u, o, x, X, p)
- * with length modifiers (none or h, l, ll) is left to the system routine
- * sprintf, but all handling of flags, field width and precision as well as
- * c and s conversions is done very carefully by this portable routine.
- * If a string precision (truncation) is specified (e.g. %.8s) it is
- * guaranteed the string beyond the specified precision will not be referenced.
- *
- * Length modifiers h, l and ll are ignored for c and s conversions (data
- * types wint_t and wchar_t are not supported).
- *
- * The following common synonyms for conversion characters are supported:
- *   - i is a synonym for d
- *   - D is a synonym for ld, explicit length modifiers are ignored
- *   - U is a synonym for lu, explicit length modifiers are ignored
- *   - O is a synonym for lo, explicit length modifiers are ignored
- * The D, O and U conversion characters are nonstandard, they are supported
- * for backward compatibility only, and should not be used for new code.
- *
- * The following is specifically NOT supported:
- *   - flag ' (thousands' grouping character) is recognized but ignored
- *   - numeric conversion specifiers: f, e, E, g, G and synonym F,
- *     as well as the new a and A conversion specifiers
- *   - length modifier 'L' (long double) and 'q' (quad - use 'll' instead)
- *   - wide character/string conversions: lc, ls, and nonstandard
- *     synonyms C and S
- *   - writeback of converted string length: conversion character n
- *   - the n$ specification for direct reference to n-th argument
- *   - locales
- *
- * It is permitted for str_m to be zero, and it is permitted to specify NULL
- * pointer for resulting string argument if str_m is zero (as per ISO C99).
- *
- * The return value is the number of characters which would be generated
- * for the given input, excluding the trailing null. If this value
- * is greater or equal to str_m, not all characters from the result
- * have been stored in str, output bytes beyond the (str_m-1) -th character
- * are discarded. If str_m is greater than zero it is guaranteed
- * the resulting string will be null-terminated.
- *
- * NOTE that this matches the ISO C99, OpenBSD, and GNU C library 2.1,
- * but is different from some older and vendor implementations,
- * and is also different from XPG, XSH5, SUSv2 specifications.
- * For historical discussion on changes in the semantics and standards
- * of snprintf see printf(3) man page in the Linux programmers manual.
- *
- * Routines asprintf and vasprintf return a pointer (in the ptr argument)
- * to a buffer sufficiently large to hold the resulting string. This pointer
- * should be passed to free(3) to release the allocated storage when it is
- * no longer needed. If sufficient space cannot be allocated, these functions
- * will return -1 and set ptr to be a NULL pointer. These two routines are a
- * GNU C library extensions (glibc).
- *
- * Routines asnprintf and vasnprintf are similar to asprintf and vasprintf,
- * yet, like snprintf and vsnprintf counterparts, will write at most str_m-1
- * characters into the allocated output string, the last character in the
- * allocated buffer then gets the terminating null. If the formatted string
- * length (the return value) is greater than or equal to the str_m argument,
- * the resulting string was truncated and some of the formatted characters
- * were discarded. These routines present a handy way to limit the amount
- * of allocated memory to some sane value.
- *
- * AVAILABILITY
- *   http://www.ijs.si/software/snprintf/
- *
- * REVISION HISTORY
- * 1999-04     V0.9  Mark Martinec
- *             - initial version, some modifications after comparing printf
- *               man pages for Digital Unix 4.0, Solaris 2.6 and HPUX 10,
- *               and checking how Perl handles sprintf (differently!);
- * 1999-04-09  V1.0  Mark Martinec <mark.martinec@ijs.si>
- *             - added main test program, fixed remaining inconsistencies,
- *               added optional (long long int) support;
- * 1999-04-12  V1.1  Mark Martinec <mark.martinec@ijs.si>
- *             - support the 'p' conversion (pointer to void);
- *             - if a string precision is specified
- *               make sure the string beyond the specified precision
- *               will not be referenced (e.g. by strlen);
- * 1999-04-13  V1.2  Mark Martinec <mark.martinec@ijs.si>
- *             - support synonyms %D=%ld, %U=%lu, %O=%lo;
- *             - speed up the case of long format string with few conversions;
- * 1999-06-30  V1.3  Mark Martinec <mark.martinec@ijs.si>
- *             - fixed runaway loop (eventually crashing when str_l wraps
- *               beyond 2^31) while copying format string without
- *               conversion specifiers to a buffer that is too short
- *               (thanks to Edwin Young <edwiny@autonomy.com> for
- *               spotting the problem);
- *             - added macros PORTABLE_SNPRINTF_VERSION_(MAJOR|MINOR)
- *               to snprintf.h
- * 2000-02-14  V2.0 (never released) Mark Martinec <mark.martinec@ijs.si>
- *             - relaxed license terms: The Artistic License now applies.
- *               You may still apply the GNU GENERAL PUBLIC LICENSE
- *               as was distributed with previous versions, if you prefer;
- *             - changed REVISION HISTORY dates to use ISO 8601 date format;
- *             - added vsnprintf (patch also independently proposed by
- *               Caolan McNamara 2000-05-04, and Keith M Willenson 2000-06-01)
- * 2000-06-27  V2.1  Mark Martinec <mark.martinec@ijs.si>
- *             - removed POSIX check for str_m<1; value 0 for str_m is
- *               allowed by ISO C99 (and GNU C library 2.1) - (pointed out
- *               on 2000-05-04 by Caolan McNamara, caolan@ csn dot ul dot ie).
- *               Besides relaxed license this change in standards adherence
- *               is the main reason to bump up the major version number;
- *             - added nonstandard routines asnprintf, vasnprintf, asprintf,
- *               vasprintf that dynamically allocate storage for the
- *               resulting string; these routines are not compiled by default,
- *               see comments where NEED_V?ASN?PRINTF macros are defined;
- *             - autoconf contributed by Caolan McNamara
- * 2000-10-06  V2.2  Mark Martinec <mark.martinec@ijs.si>
- *             - BUG FIX: the %c conversion used a temporary variable
- *               that was no longer in scope when referenced,
- *               possibly causing incorrect resulting character;
- *             - BUG FIX: make precision and minimal field width unsigned
- *               to handle huge values (2^31 <= n < 2^32) correctly;
- *               also be more careful in the use of signed/unsigned/size_t
- *               internal variables - probably more careful than many
- *               vendor implementations, but there may still be a case
- *               where huge values of str_m, precision or minimal field
- *               could cause incorrect behaviour;
- *             - use separate variables for signed/unsigned arguments,
- *               and for short/int, long, and long long argument lengths
- *               to avoid possible incompatibilities on certain
- *               computer architectures. Also use separate variable
- *               arg_sign to hold sign of a numeric argument,
- *               to make code more transparent;
- *             - some fiddling with zero padding and "0x" to make it
- *               Linux compatible;
- *             - systematically use macros fast_memcpy and fast_memset
- *               instead of case-by-case hand optimization; determine some
- *               breakeven string lengths for different architectures;
- *             - terminology change: 'format' -> 'conversion specifier',
- *               'C9x' -> 'ISO/IEC 9899:1999 ("ISO C99")',
- *               'alternative form' -> 'alternate form',
- *               'data type modifier' -> 'length modifier';
- *             - several comments rephrased and new ones added;
- *             - make compiler not complain about 'credits' defined but
- *               not used;
- * 2001-08     V2.3  Mark Martinec <mark.martinec@ijs.si>
- *  .. 2002-02 - writeback conversion specifier 'n' is now supported;
- *             - bump the size of a temporary buffer for simple
- *               numeric->string conversion from 32 to 48 characters
- *               in anticipation of 128-bit machines;
- *             - added #include <stddef.h> and <stdarg.h> to snprintf.h;
- *             - fixed one assert in test.c
- *               (thanks to Tuomo A Turunen for reporting this problem);
- *             - portability fix: use isdigit() provided with <ctype.h>
- *               and do not assume character set is ASCII - call strtoul()
- *               if needed to convert field width and precision;
- *             - check for broken or non-ANSI native sprintf (e.g. SunOS)
- *               which does not return string lenth, and work around it;
- *             - shouldn't happen, but just in case (applies to numeric
- *               conversions only): added assertion after a call to
- *               system's sprintf to make sure we detect a problem
- *               as it happens (or very shortly - but still - after a
- *               buffer overflow occured for some strange reason
- *               in system's sprintf);
- *             - cleanup: avoid comparing signed and unsigned values
- *               (ANSI c++ complaint); added a couple of 'const' qualifiers;
- *             - changed few comments, new references to some other
- *               implementations added to the README file;
- *             - it appears the Artistic License and its variant the Frontier
- *               Artistic License are incompatible with GPL and precludes
- *               this work to be included with GPL-licensed work. This was
- *               not my intention. The fact that this package is dual licensed
- *               comes to the rescue. Changed the credits[] string, and
- *               TERMS AND CONDITIONS to explicitly say so, stressing
- *               the fact that this work is dual licensed.
- */
-
-
-/* Define HAVE_SNPRINTF if your system already has snprintf and vsnprintf.
- *
- * If HAVE_SNPRINTF is defined this module will not produce code for
- * snprintf and vsnprintf, unless PREFER_PORTABLE_SNPRINTF is defined as well,
- * causing this portable version of snprintf to be called portable_snprintf
- * (and portable_vsnprintf).
- */
-/* #define HAVE_SNPRINTF */
-
-/* Define PREFER_PORTABLE_SNPRINTF if your system does have snprintf and
- * vsnprintf but you would prefer to use the portable routine(s) instead.
- * In this case the portable routine is declared as portable_snprintf
- * (and portable_vsnprintf) and a macro 'snprintf' (and 'vsnprintf')
- * is defined to expand to 'portable_v?snprintf' - see file snprintf.h .
- * Defining this macro is only useful if HAVE_SNPRINTF is also defined,
- * but does no harm if defined nevertheless.
- */
-/* #define PREFER_PORTABLE_SNPRINTF */
-
-/* Define SNPRINTF_LONGLONG_SUPPORT if you want to support
- * data type (long long int) and length modifier 'll' (e.g. %lld).
- * If undefined, 'll' is recognized but treated as a single 'l'.
- *
- * If the system's sprintf does not handle 'll'
- * the SNPRINTF_LONGLONG_SUPPORT must not be defined!
- *
- * This is off by default as (long long int) is a language extension.
- */
-/* #define SNPRINTF_LONGLONG_SUPPORT */
-
-/* Define NEED_SNPRINTF_ONLY if you only need snprintf, and not vsnprintf.
- * If NEED_SNPRINTF_ONLY is defined, the snprintf will be defined directly,
- * otherwise both snprintf and vsnprintf routines will be defined
- * and snprintf will be a simple wrapper around vsnprintf, at the expense
- * of an extra procedure call.
- */
-/* #define NEED_SNPRINTF_ONLY */
-
-/* Define NEED_V?ASN?PRINTF macros if you need library extension
- * routines asprintf, vasprintf, asnprintf, vasnprintf respectively,
- * and your system library does not provide them. They are all small
- * wrapper routines around portable_vsnprintf. Defining any of the four
- * NEED_V?ASN?PRINTF macros automatically turns off NEED_SNPRINTF_ONLY
- * and turns on PREFER_PORTABLE_SNPRINTF.
- *
- * Watch for name conflicts with the system library if these routines
- * are already present there.
- *
- * NOTE: vasprintf and vasnprintf routines need va_copy() from stdarg.h, as
- * specified by C99, to be able to traverse the same list of arguments twice.
- * I don't know of any other standard and portable way of achieving the same.
- * With some versions of gcc you may use __va_copy(). You might even get away
- * with "ap2 = ap", in this case you must not call va_end(ap2) !
- *   #define va_copy(ap2,ap) __va_copy((ap2),(ap))
- *   #define va_copy(ap2,ap) (ap2) = (ap)
- */
-/* #define NEED_ASPRINTF   */
-/* #define NEED_ASNPRINTF  */
-/* #define NEED_VASPRINTF  */
-/* #define NEED_VASNPRINTF */
-
-/* Define the following macros if desired:
- *   SOLARIS_COMPATIBLE, SOLARIS_BUG_COMPATIBLE,
- *   HPUX_COMPATIBLE, HPUX_BUG_COMPATIBLE, LINUX_COMPATIBLE,
- *   DIGITAL_UNIX_COMPATIBLE, DIGITAL_UNIX_BUG_COMPATIBLE,
- *   PERL_COMPATIBLE, PERL_BUG_COMPATIBLE,
- *
- * - For portable applications it is best not to rely on peculiarities
- *   of a given implementation so it may be best not to define any
- *   of the macros that select compatibility and to avoid features
- *   that vary among the systems.
- *
- * - Selecting compatibility with more than one operating system
- *   is not strictly forbidden but is not recommended.
- *
- * - 'x'_BUG_COMPATIBLE implies 'x'_COMPATIBLE .
- *
- * - 'x'_COMPATIBLE refers to (and enables) a behaviour that is
- *   documented in a sprintf man page on a given operating system
- *   and actually adhered to by the system's sprintf (but not on
- *   most other operating systems). It may also refer to and enable
- *   a behaviour that is declared 'undefined' or 'implementation specific'
- *   in the man page but a given implementation behaves predictably
- *   in a certain way.
- *
- * - 'x'_BUG_COMPATIBLE refers to (and enables) a behaviour of system's sprintf
- *   that contradicts the sprintf man page on the same operating system.
- *
- * - I do not claim that the 'x'_COMPATIBLE and 'x'_BUG_COMPATIBLE
- *   conditionals take into account all idiosyncrasies of a particular
- *   implementation, there may be other incompatibilities.
- */
-
-
-\f
-/* ============================================= */
-/* NO USER SERVICABLE PARTS FOLLOWING THIS POINT */
-/* ============================================= */
-
-#define PORTABLE_SNPRINTF_VERSION_MAJOR 2
-#define PORTABLE_SNPRINTF_VERSION_MINOR 3
-
-#if defined(NEED_ASPRINTF) || defined(NEED_ASNPRINTF) || defined(NEED_VASPRINTF) || defined(NEED_VASNPRINTF)
-# if defined(NEED_SNPRINTF_ONLY)
-# undef NEED_SNPRINTF_ONLY
-# endif
-# if !defined(PREFER_PORTABLE_SNPRINTF)
-# define PREFER_PORTABLE_SNPRINTF
-# endif
-#endif
-
-#if defined(SOLARIS_BUG_COMPATIBLE) && !defined(SOLARIS_COMPATIBLE)
-#define SOLARIS_COMPATIBLE
-#endif
-
-#if defined(HPUX_BUG_COMPATIBLE) && !defined(HPUX_COMPATIBLE)
-#define HPUX_COMPATIBLE
-#endif
-
-#if defined(DIGITAL_UNIX_BUG_COMPATIBLE) && !defined(DIGITAL_UNIX_COMPATIBLE)
-#define DIGITAL_UNIX_COMPATIBLE
-#endif
-
-#if defined(PERL_BUG_COMPATIBLE) && !defined(PERL_COMPATIBLE)
-#define PERL_COMPATIBLE
-#endif
-
-#if defined(LINUX_BUG_COMPATIBLE) && !defined(LINUX_COMPATIBLE)
-#define LINUX_COMPATIBLE
-#endif
-
-#include <sys/types.h>
-#include <ctype.h>
-#include <string.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <stdarg.h>
-#include <assert.h>
-#include <errno.h>
-
-/* For copying strings longer or equal to 'breakeven_point'
- * it is more efficient to call memcpy() than to do it inline.
- * The value depends mostly on the processor architecture,
- * but also on the compiler and its optimization capabilities.
- * The value is not critical, some small value greater than zero
- * will be just fine if you don't care to squeeze every drop
- * of performance out of the code.
- *
- * Small values favour memcpy & memset (extra procedure call, less code),
- * large values favour inline code (saves procedure call, more code).
- */
-#if defined(__alpha__) || defined(__alpha)
-#  define breakeven_point   2  /* AXP (DEC Alpha)     - gcc or cc */
-#endif
-#if defined(__i386__)  || defined(__i386)
-#  define breakeven_point  15  /* Intel Pentium/Linux - gcc 2.96 (12..30) */
-#endif
-#if defined(__hppa)
-#  define breakeven_point  10  /* HP-PA               - gcc */
-#endif
-#if defined(__sparc__) || defined(__sparc)
-#  define breakeven_point  33  /* Sun Sparc 5         - gcc 2.8.1 */
-#endif
-
-/* some other values of possible interest: */
-/* #define breakeven_point  8 */  /* VAX 4000         - vaxc */
-/* #define breakeven_point 19 */  /* VAX 4000         - gcc 2.7.0 */
-
-#ifndef breakeven_point
-#  define breakeven_point   6  /* some reasonable one-size-fits-all value */
-#endif
-
-#define fast_memcpy(d,s,n) \
-  { register size_t nn = (size_t)(n); \
-    if (nn >= breakeven_point) memcpy((d), (s), nn); \
-    else if (nn > 0) { /* call overhead is worth only for large strings*/ \
-      register char *dd; register const char *ss; \
-      for (ss=(s), dd=(d); nn>0; nn--) *dd++ = *ss++; } }
-
-#define fast_memset(d,c,n) \
-  { register size_t nn = (size_t)(n); \
-    if (nn >= breakeven_point) memset((d), (int)(c), nn); \
-    else if (nn > 0) { /* call overhead is worth only for large strings*/ \
-      register char *dd; register const int cc=(int)(c); \
-      for (dd=(d); nn>0; nn--) *dd++ = cc; } }
-
-/* The following isdigit() is not portable (e.g. may not work
- * with non-ASCII character sets). Use the system-provided isdigit()
- * if available, otherwise uncomment:
- *   #define isdigit(c) ((c) >= '0' && (c) <= '9')
- */
-
-/* atosizet converts a span of decimal digits to a number of type size_t.
- * It is a macro, similar to:  (but not quite, p will be modified!)
- *   void atosizet(const char *p, const char **endp, size_t *result);
- * endp will point to just beyond the digits substring.
- * This is _not_ a general-purpose macro:
- *  - the first argument will be modified;
- *  - the first character must already be checked to be a digit!
- * NOTE: size_t could be wider than unsigned int;
- *       but we treat numeric string like common implementations do!
- * If character set is ASCII (checking with a quick and simple-minded test)
- * we convert string to a number inline for speed, otherwise we call strtoul.
- */
-#define atosizet(p, endp, result)                                      \
-  if ((int)'0' == 48) {  /* a compile-time constant expression, */     \
-                         /* hoping the code from one branch     */     \
-                         /* will be optimized away */                  \
-    /* looks like ASCII character set, let's hope it really is */      \
-    register unsigned int uj = (unsigned int)(*(p)++ - '0');           \
-    while (isdigit((int)(*(p))))                                       \
-      uj = 10*uj + (unsigned int)(*(p)++ - '0');                       \
-    if ((endp) != NULL) *(endp) = (p);                                 \
-    *(result) = (size_t) uj;                                           \
-  } else {                                                             \
-    /* non-ASCII character set, play by the rules */                   \
-    char *ep;  /* NOTE: no 'const' to make strtoul happy! */           \
-    /* NOTE: clip (unsigned long) to (unsigned int) as is common !!! */        \
-    const unsigned int uj = (unsigned int) strtoul((p), &ep, 10);      \
-    /* The following assignment is legal: the address of a non-const */        \
-    /* object can be assigned to a pointer to a const object, but    */        \
-    /* that pointer cannot be used to alter the value of the object. */        \
-    if ((endp) != NULL) *(endp) = ep;                                  \
-    /* if num too large the result will be ULONG_MAX and errno=ERANGE */ \
-    *(result) = (size_t) uj;                                           \
-  }                                                                    \
-
-/* prototypes */
-
-#if defined(NEED_ASPRINTF)
-int asprintf   (char **ptr, const char *fmt, /*args*/ ...);
-#endif
-#if defined(NEED_VASPRINTF)
-int vasprintf  (char **ptr, const char *fmt, va_list ap);
-#endif
-#if defined(NEED_ASNPRINTF)
-int asnprintf  (char **ptr, size_t str_m, const char *fmt, /*args*/ ...);
-#endif
-#if defined(NEED_VASNPRINTF)
-int vasnprintf (char **ptr, size_t str_m, const char *fmt, va_list ap);
-#endif
-
-#if defined(HAVE_SNPRINTF)
-/* declare our portable snprintf  routine under name portable_snprintf  */
-/* declare our portable vsnprintf routine under name portable_vsnprintf */
-#else
-/* declare our portable routines under names snprintf and vsnprintf */
-#define portable_snprintf snprintf
-#if !defined(NEED_SNPRINTF_ONLY)
-#define portable_vsnprintf vsnprintf
-#endif
-#endif
-
-#if !defined(HAVE_SNPRINTF) || defined(PREFER_PORTABLE_SNPRINTF)
-int portable_snprintf(char *str, size_t str_m, const char *fmt, /*args*/ ...);
-#if !defined(NEED_SNPRINTF_ONLY)
-int portable_vsnprintf(char *str, size_t str_m, const char *fmt, va_list ap);
-#endif
-#endif
-
-/* declarations */
-
-static const char credits[] = "\n\
-@(#)snprintf.c, v2.3: Mark Martinec, <mark.martinec@ijs.si>\n\
-@(#)snprintf.c, v2.3: Copyright 1999-2002 Mark Martinec. Dual licensed: Frontier Artistic License or GNU General Public License applies.\n\
-@(#)snprintf.c, v2.3: http://www.ijs.si/software/snprintf/\n";
-
-#if defined(NEED_ASPRINTF)
-int asprintf(char **ptr, const char *fmt, /*args*/ ...) {
-  va_list ap;
-  size_t str_m;
-  int str_l;
-
-  *ptr = NULL;
-  va_start(ap, fmt);                            /* measure the required size */
-  str_l = portable_vsnprintf(NULL, (size_t)0, fmt, ap);
-  va_end(ap);
-  assert(str_l >= 0);        /* possible integer overflow if str_m > INT_MAX */
-  *ptr = (char *) malloc(str_m = (size_t)str_l + 1);
-  if (*ptr == NULL) { errno = ENOMEM; str_l = -1; }
-  else {
-    int str_l2;
-    va_start(ap, fmt);
-    str_l2 = portable_vsnprintf(*ptr, str_m, fmt, ap);
-    va_end(ap);
-    assert(str_l2 == str_l);
-  }
-  return str_l;
-}
-#endif
-
-#if defined(NEED_VASPRINTF)
-int vasprintf(char **ptr, const char *fmt, va_list ap) {
-  size_t str_m;
-  int str_l;
-
-  *ptr = NULL;
-  { va_list ap2;
-    va_copy(ap2, ap);  /* don't consume the original ap, we'll need it again */
-    str_l = portable_vsnprintf(NULL, (size_t)0, fmt, ap2);/*get required size*/
-    va_end(ap2);
-  }
-  assert(str_l >= 0);        /* possible integer overflow if str_m > INT_MAX */
-  *ptr = (char *) malloc(str_m = (size_t)str_l + 1);
-  if (*ptr == NULL) { errno = ENOMEM; str_l = -1; }
-  else {
-    const int str_l2 = portable_vsnprintf(*ptr, str_m, fmt, ap);
-    assert(str_l2 == str_l);
-  }
-  return str_l;
-}
-#endif
-
-#if defined(NEED_ASNPRINTF)
-int asnprintf(char **ptr, size_t str_m, const char *fmt, /*args*/ ...) {
-  va_list ap;
-  int str_l;
-
-  *ptr = NULL;
-  va_start(ap, fmt);                            /* measure the required size */
-  str_l = portable_vsnprintf(NULL, (size_t)0, fmt, ap);
-  va_end(ap);
-  assert(str_l >= 0);        /* possible integer overflow if str_m > INT_MAX */
-  if ((size_t)str_l + 1 < str_m) str_m = (size_t)str_l + 1;      /* truncate */
-  /* if str_m is 0, no buffer is allocated, just set *ptr to NULL */
-  if (str_m == 0) {  /* not interested in resulting string, just return size */
-  } else {
-    *ptr = (char *) malloc(str_m);
-    if (*ptr == NULL) { errno = ENOMEM; str_l = -1; }
-    else {
-      int str_l2;
-      va_start(ap, fmt);
-      str_l2 = portable_vsnprintf(*ptr, str_m, fmt, ap);
-      va_end(ap);
-      assert(str_l2 == str_l);
-    }
-  }
-  return str_l;
-}
-#endif
-
-#if defined(NEED_VASNPRINTF)
-int vasnprintf(char **ptr, size_t str_m, const char *fmt, va_list ap) {
-  int str_l;
-
-  *ptr = NULL;
-  { va_list ap2;
-    va_copy(ap2, ap);  /* don't consume the original ap, we'll need it again */
-    str_l = portable_vsnprintf(NULL, (size_t)0, fmt, ap2);/*get required size*/
-    va_end(ap2);
-  }
-  assert(str_l >= 0);        /* possible integer overflow if str_m > INT_MAX */
-  if ((size_t)str_l + 1 < str_m) str_m = (size_t)str_l + 1;      /* truncate */
-  /* if str_m is 0, no buffer is allocated, just set *ptr to NULL */
-  if (str_m == 0) {  /* not interested in resulting string, just return size */
-  } else {
-    *ptr = (char *) malloc(str_m);
-    if (*ptr == NULL) { errno = ENOMEM; str_l = -1; }
-    else {
-      const int str_l2 = portable_vsnprintf(*ptr, str_m, fmt, ap);
-      assert(str_l2 == str_l);
-    }
-  }
-  return str_l;
-}
-#endif
-
-/*
- * If the system does have snprintf and the portable routine is not
- * specifically required, this module produces no code for snprintf/vsnprintf.
- */
-#if !defined(HAVE_SNPRINTF) || defined(PREFER_PORTABLE_SNPRINTF)
-
-#if !defined(NEED_SNPRINTF_ONLY)
-int portable_snprintf(char *str, size_t str_m, const char *fmt, /*args*/ ...) {
-  va_list ap;
-  int str_l;
-
-  va_start(ap, fmt);
-  str_l = portable_vsnprintf(str, str_m, fmt, ap);
-  va_end(ap);
-  return str_l;
-}
-#endif
-
-#if defined(NEED_SNPRINTF_ONLY)
-int portable_snprintf(char *str, size_t str_m, const char *fmt, /*args*/ ...) {
-#else
-int portable_vsnprintf(char *str, size_t str_m, const char *fmt, va_list ap) {
-#endif
-
-#if defined(NEED_SNPRINTF_ONLY)
-  va_list ap;
-#endif
-  size_t str_l = 0;
-  const char *p = fmt;
-
-/* In contrast to POSIX, the ISO C99 now says
- * that str can be NULL and str_m can be 0.
- * This is more useful than the old:  if (str_m < 1) return -1; */
-
-#if defined(NEED_SNPRINTF_ONLY)
-  va_start(ap, fmt);
-#endif
-  if (!p) p = "";
-  while (*p) {
-    if (*p != '%') {
-      if (0) {  /* compile time decision between two equivalent alternatives */
-     /* this is simple but slow */
-        if (str_l < str_m) str[str_l] = *p;
-        p++; str_l++;
-      } else {
-     /* this usually achieves much better performance for cases
-      * where format string is long and contains few conversions */
-        const char *const q = strchr(p+1,'%');
-        const size_t n = !q ? strlen(p) : (q-p);
-        if (str_l < str_m) {
-          const size_t avail = str_m-str_l;
-          fast_memcpy(str+str_l, p, (n>avail?avail:n));
-        }
-        p += n; str_l += n;
-      }
-    } else {
-      const char *starting_p;
-      size_t min_field_width = 0, precision = 0;
-      int zero_padding = 0, precision_specified = 0, justify_left = 0;
-      int alternate_form = 0, force_sign = 0;
-      int space_for_positive = 1; /* If both the ' ' and '+' flags appear,
-                                     the ' ' flag should be ignored. */
-      char length_modifier = '\0';            /* allowed values: \0, h, l, L */
-      char tmp[48];/* temporary buffer for simple numeric->string conversion */
-
-      const char *str_arg;      /* string address in case of string argument */
-      size_t str_arg_l;         /* natural field width of arg without padding
-                                   and sign */
-      unsigned char uchar_arg;
-        /* unsigned char argument value - only defined for c conversion.
-           N.B. standard explicitly states the char argument for
-           the c conversion is unsigned */
-
-      size_t number_of_zeros_to_pad = 0;
-        /* number of zeros to be inserted for numeric conversions
-           as required by the precision or minimal field width */
-
-      size_t zero_padding_insertion_ind = 0;
-        /* index into tmp where zero padding is to be inserted */
-
-      char fmt_spec = '\0';
-        /* current conversion specifier character */
-
-      str_arg = credits;/* just to make compiler happy (defined but not used)*/
-      str_arg = NULL;
-      starting_p = p; p++;  /* skip '%' */
-   /* parse flags */
-      while (*p == '0' || *p == '-' || *p == '+' ||
-             *p == ' ' || *p == '#' || *p == '\'') {
-        switch (*p) {
-        case '0': zero_padding = 1; break;
-        case '-': justify_left = 1; break;
-        case '+': force_sign = 1; space_for_positive = 0; break;
-        case ' ': force_sign = 1;
-     /* If both the ' ' and '+' flags appear, the ' ' flag should be ignored */
-#ifdef PERL_COMPATIBLE
-     /* ... but in Perl the last of ' ' and '+' applies */
-                  space_for_positive = 1;
-#endif
-                  break;
-        case '#': alternate_form = 1; break;
-        case '\'': break;
-        }
-        p++;
-      }
-   /* If flags '0' and '-' both appear, the '0' flag should be ignored. */
-
-   /* parse field width */
-      if (*p == '*') {
-        const int j = va_arg(ap, int);
-        p++;
-        if (j >= 0) min_field_width = j;
-        else { min_field_width = -j; justify_left = 1; }
-      } else if (isdigit((int)(*p))) {
-        atosizet(p, &p, &min_field_width);
-      }
-   /* parse precision */
-      if (*p == '.') {
-        p++; precision_specified = 1;
-        if (*p == '*') {
-          const int j = va_arg(ap, int);
-          p++;
-          if (j >= 0) precision = j;
-          else {
-            precision_specified = 0; precision = 0;
-         /* NOTE:
-          *   Solaris 2.6 man page claims that in this case the precision
-          *   should be set to 0.  Digital Unix 4.0, HPUX 10 and BSD man page
-          *   claim that this case should be treated as unspecified precision,
-          *   which is what we do here.
-          */
-          }
-        } else if (isdigit((int)(*p))) {
-          atosizet(p, &p, &precision);
-        }
-      }
-   /* parse 'h', 'l' and 'll' length modifiers */
-      if (*p == 'h' || *p == 'l') {
-        length_modifier = *p; p++;
-        if (length_modifier == 'l' && *p == 'l') {  /* double el = long long */
-#ifdef SNPRINTF_LONGLONG_SUPPORT
-          length_modifier = '2';          /* double letter el encoded as '2' */
-#else
-          length_modifier = 'l';     /* treat it as a single 'l' (letter el) */
-#endif
-          p++;
-        }
-      }
-      fmt_spec = *p;
-   /* common synonyms: */
-      switch (fmt_spec) {
-      case 'i': fmt_spec = 'd'; break;
-      case 'D': fmt_spec = 'd'; length_modifier = 'l'; break;
-      case 'U': fmt_spec = 'u'; length_modifier = 'l'; break;
-      case 'O': fmt_spec = 'o'; length_modifier = 'l'; break;
-      default: break;
-      }
-   /* get parameter value, do initial processing */
-      switch (fmt_spec) {
-      case '%': /* % behaves similar to 's' regarding flags and field widths */
-      case 'c': /* c behaves similar to 's' regarding flags and field widths */
-      case 's':
-        length_modifier = '\0';          /* wint_t and wchar_t not supported */
-     /* the result of zero padding flag with non-numeric conversion specifier*/
-     /* is undefined. Solaris and HPUX 10 does zero padding in this case,    */
-     /* Digital Unix and Linux does not. */
-#if !defined(SOLARIS_COMPATIBLE) && !defined(HPUX_COMPATIBLE)
-        zero_padding = 0;    /* turn zero padding off for string conversions */
-#endif
-        str_arg_l = 1;
-        switch (fmt_spec) {
-        case '%':
-          str_arg = p; break;
-        case 'c': {
-          const int j = va_arg(ap, int);
-          uchar_arg = (unsigned char) j;   /* standard demands unsigned char */
-          str_arg = (const char *) &uchar_arg;
-          break;
-        }
-        case 's':
-          str_arg = va_arg(ap, const char *);
-          if (!str_arg) str_arg_l = 0;
-       /* make sure not to address string beyond the specified precision !!! */
-          else if (!precision_specified) str_arg_l = strlen(str_arg);
-       /* truncate string if necessary as requested by precision */
-          else if (precision == 0) str_arg_l = 0;
-          else {
-       /* memchr on HP does not like n > 2^31  !!! */
-            const char *const q = (const char *) memchr(str_arg, '\0',
-                             precision <= 0x7fffffff ? precision : 0x7fffffff);
-            str_arg_l = !q ? precision : (q-str_arg);
-          }
-          break;
-        default: break;
-        }
-        break;
-      case 'd': case 'u': case 'o': case 'x': case 'X': case 'p': {
-        /* NOTE: the u, o, x, X and p conversion specifiers imply
-                 the value is unsigned;  d implies a signed value */
-
-        int arg_sign = 0;
-          /* 0 if numeric argument is zero (or if pointer is NULL for 'p'),
-            +1 if greater than zero (or nonzero for unsigned arguments),
-            -1 if negative (unsigned argument is never negative) */
-
-        int int_arg = 0;  unsigned int uint_arg = 0;
-          /* only defined for length modifier h, or for no length modifiers */
-
-        long int long_arg = 0;  unsigned long int ulong_arg = 0;
-          /* only defined for length modifier l (letter el) */
-
-        void *ptr_arg = NULL;
-          /* pointer argument value - only defined for p conversion */
-
-#ifdef SNPRINTF_LONGLONG_SUPPORT
-        long long int long_long_arg = 0;
-        unsigned long long int ulong_long_arg = 0;
-          /* only defined for length modifier ll (double letter el) */
-#endif
-        if (fmt_spec == 'p') {
-        /* HPUX 10: An l, h, ll or L before any other conversion character
-         *   (other than d, i, u, o, x, or X) is ignored.
-         * Digital Unix:
-         *   not specified, but seems to behave as HPUX does.
-         * Solaris: If an h, l, or L appears before any other conversion
-         *   specifier (other than d, i, u, o, x, or X), the behavior
-         *   is undefined. (Actually %hp converts only 16-bits of address
-         *   and %llp treats address as 64-bit data which is incompatible
-         *   with (void *) argument on a 32-bit system).
-         */
-#ifdef SOLARIS_COMPATIBLE
-#  ifdef SOLARIS_BUG_COMPATIBLE
-          /* keep length modifiers even if it represents 'll' */
-#  else
-          if (length_modifier == '2') length_modifier = '\0';
-#  endif
-#else
-          length_modifier = '\0';
-#endif
-          ptr_arg = va_arg(ap, void *);
-          if (ptr_arg != NULL) arg_sign = 1;
-        } else if (fmt_spec == 'd') {  /* signed */
-          switch (length_modifier) {
-          case '\0':
-          case 'h':
-         /* It is non-portable to specify char or short as the second argument
-          * to va_arg, because arguments seen by the called function
-          * are not char or short.  C converts char and short arguments
-          * to int before passing them to a function.
-          */
-            int_arg = va_arg(ap, int);
-            if      (int_arg > 0) arg_sign =  1;
-            else if (int_arg < 0) arg_sign = -1;
-            break;
-          case 'l':  /* letter el */
-            long_arg = va_arg(ap, long int);
-            if      (long_arg > 0) arg_sign =  1;
-            else if (long_arg < 0) arg_sign = -1;
-            break;
-#ifdef SNPRINTF_LONGLONG_SUPPORT
-          case '2':
-            long_long_arg = va_arg(ap, long long int);
-            if      (long_long_arg > 0) arg_sign =  1;
-            else if (long_long_arg < 0) arg_sign = -1;
-            break;
-#endif
-          }
-        } else {  /* unsigned */
-          switch (length_modifier) {
-          case '\0':
-          case 'h':
-            uint_arg = va_arg(ap, unsigned int);
-            if (uint_arg) arg_sign = 1;
-            break;
-          case 'l':  /* letter el */
-            ulong_arg = va_arg(ap, unsigned long int);
-            if (ulong_arg) arg_sign = 1;
-            break;
-#ifdef SNPRINTF_LONGLONG_SUPPORT
-          case '2':
-            ulong_long_arg = va_arg(ap, unsigned long long int);
-            if (ulong_long_arg) arg_sign = 1;
-            break;
-#endif
-          }
-        }
-        str_arg = tmp; str_arg_l = 0;
-     /* NOTE:
-      *   For d, i, u, o, x, and X conversions, if precision is specified,
-      *   the '0' flag should be ignored. This is so with Solaris 2.6,
-      *   Digital UNIX 4.0, HPUX 10, Linux, FreeBSD, NetBSD; but not with Perl.
-      */
-#ifndef PERL_COMPATIBLE
-        if (precision_specified) zero_padding = 0;
-#endif
-        if (fmt_spec == 'd') {
-          if (force_sign && arg_sign >= 0)
-            tmp[str_arg_l++] = space_for_positive ? ' ' : '+';
-         /* leave negative numbers for sprintf to handle,
-            to avoid handling tricky cases like (short int)(-32768) */
-#ifdef LINUX_COMPATIBLE
-        } else if (fmt_spec == 'p' && force_sign && arg_sign > 0) {
-          tmp[str_arg_l++] = space_for_positive ? ' ' : '+';
-#endif
-        } else if (alternate_form) {
-          if (arg_sign != 0 && (fmt_spec == 'x' || fmt_spec == 'X') )
-            { tmp[str_arg_l++] = '0'; tmp[str_arg_l++] = fmt_spec; }
-         /* alternate form should have no effect for p conversion, but ... */
-#ifdef HPUX_COMPATIBLE
-          else if (fmt_spec == 'p'
-         /* HPUX 10: for an alternate form of p conversion,
-          *          a nonzero result is prefixed by 0x. */
-#ifndef HPUX_BUG_COMPATIBLE
-         /* Actually it uses 0x prefix even for a zero value. */
-                   && arg_sign != 0
-#endif
-                  ) { tmp[str_arg_l++] = '0'; tmp[str_arg_l++] = 'x'; }
-#endif
-        }
-        zero_padding_insertion_ind = str_arg_l;
-        if (!precision_specified) precision = 1;   /* default precision is 1 */
-        if (precision == 0 && arg_sign == 0
-#if defined(HPUX_BUG_COMPATIBLE) || defined(LINUX_COMPATIBLE)
-            && fmt_spec != 'p'
-         /* HPUX 10 man page claims: With conversion character p the result of
-          * converting a zero value with a precision of zero is a null string.
-          * Actually HP returns all zeroes, and Linux returns "(nil)". */
-#endif
-        ) {
-         /* converted to null string */
-         /* When zero value is formatted with an explicit precision 0,
-            the resulting formatted string is empty (d, i, u, o, x, X, p).   */
-        } else {
-          static int sprintf_return_value_is_ansi_compliant = -1; /* unknown */
-          char f[5]; int f_l = 0, sprintf_l = 0;
-          f[f_l++] = '%';    /* construct a simple format string for sprintf */
-          if (!length_modifier) { }
-          else if (length_modifier=='2') { f[f_l++] = 'l'; f[f_l++] = 'l'; }
-          else f[f_l++] = length_modifier;
-          f[f_l++] = fmt_spec; f[f_l++] = '\0';
-          if (sprintf_return_value_is_ansi_compliant < 0) { /* not yet known */
-         /* let's do a little run-time experiment (only once) to see if the
-          * native sprintf returns a string length as required by ANSI, or has
-          * some other ideas like the old SunOS which returns buffer address */
-            sprintf_return_value_is_ansi_compliant =
-              (sprintf(tmp+str_arg_l, "%d", 19) == 2);
-          }
-          if (fmt_spec == 'p') sprintf_l=sprintf(tmp+str_arg_l, f, ptr_arg);
-          else if (fmt_spec == 'd') {  /* signed */
-            switch (length_modifier) {
-            case '\0':
-            case 'h': sprintf_l=sprintf(tmp+str_arg_l, f, int_arg);  break;
-            case 'l': sprintf_l=sprintf(tmp+str_arg_l, f, long_arg); break;
-#ifdef SNPRINTF_LONGLONG_SUPPORT
-            case '2': sprintf_l=sprintf(tmp+str_arg_l,f,long_long_arg); break;
-#endif
-            }
-          } else {  /* unsigned */
-            switch (length_modifier) {
-            case '\0':
-            case 'h': sprintf_l=sprintf(tmp+str_arg_l, f, uint_arg);  break;
-            case 'l': sprintf_l=sprintf(tmp+str_arg_l, f, ulong_arg); break;
-#ifdef SNPRINTF_LONGLONG_SUPPORT
-            case '2': sprintf_l=sprintf(tmp+str_arg_l,f,ulong_long_arg);break;
-#endif
-            }
-          }
-          if (!sprintf_return_value_is_ansi_compliant) {  /* broken sprintf? */
-            tmp[sizeof(tmp)-1] = '\0'; sprintf_l = strlen(tmp+str_arg_l);
-          }
-          assert(sprintf_l >= 0);  /* should not happen; problem in sprintf? */
-          assert(sprintf_l+str_arg_l < sizeof(tmp)); /*better late then never*/
-          str_arg_l += sprintf_l;
-         /* include the optional minus sign and possible "0x"
-            in the region before the zero padding insertion point */
-          if (zero_padding_insertion_ind < str_arg_l &&
-              tmp[zero_padding_insertion_ind] == '-') {
-            zero_padding_insertion_ind++;
-          }
-          if (zero_padding_insertion_ind+1 < str_arg_l &&
-              tmp[zero_padding_insertion_ind]   == '0' &&
-             (tmp[zero_padding_insertion_ind+1] == 'x' ||
-              tmp[zero_padding_insertion_ind+1] == 'X') ) {
-            zero_padding_insertion_ind += 2;
-          }
-        }
-        { const size_t num_of_digits = str_arg_l - zero_padding_insertion_ind;
-          if (alternate_form && fmt_spec == 'o'
-#ifdef HPUX_COMPATIBLE                                  /* ("%#.o",0) -> ""  */
-              && (str_arg_l > 0)
-#endif
-#ifdef DIGITAL_UNIX_BUG_COMPATIBLE                      /* ("%#o",0) -> "00" */
-#else
-              /* unless zero is already the first character */
-              && !(zero_padding_insertion_ind < str_arg_l
-                   && tmp[zero_padding_insertion_ind] == '0')
-#endif
-          ) {        /* assure leading zero for alternate-form octal numbers */
-            if (!precision_specified || precision < num_of_digits+1) {
-             /* precision is increased to force the first character to be zero,
-                except if a zero value is formatted with an explicit precision
-                of zero */
-              precision = num_of_digits+1; precision_specified = 1;
-            }
-          }
-       /* zero padding to specified precision? */
-          if (num_of_digits < precision) 
-            number_of_zeros_to_pad = precision - num_of_digits;
-        }
-     /* zero padding to specified minimal field width? */
-        if (!justify_left && zero_padding) {
-          const int n = min_field_width - (str_arg_l+number_of_zeros_to_pad);
-          if (n > 0) number_of_zeros_to_pad += n;
-        }
-        break;
-      }
-      case 'n': {
-        void *const ptr = va_arg(ap, void *);
-        if (ptr != NULL) {
-       /* same problem of size_t -> int type conversion as with the
-        * snprintf return value - see comment at the end of this procedure */
-          switch (length_modifier) {
-          case '\0': *(      int *const)ptr = str_l; break;
-          case 'h':  *(short int *const)ptr = str_l; break;
-          case 'l':  *(long  int *const)ptr = str_l; break;
-#ifdef SNPRINTF_LONGLONG_SUPPORT
-          case '2':  *(long long int *const)ptr = str_l; break;
-#endif
-          }
-        }
-     /* no argument converted */
-        min_field_width = number_of_zeros_to_pad = str_arg_l = 0;
-        break;
-      }
-      default: /* unrecognized conversion specifier, keep format string as-is*/
-        zero_padding = 0;  /* turn zero padding off for non-numeric convers. */
-#ifndef DIGITAL_UNIX_COMPATIBLE
-        justify_left = 1; min_field_width = 0;                /* reset flags */
-#endif
-#if defined(PERL_COMPATIBLE) || defined(LINUX_COMPATIBLE)
-     /* keep the entire format string unchanged */
-        str_arg = starting_p; str_arg_l = p - starting_p;
-     /* well, not exactly so for Linux, which does something inbetween,
-      * and I don't feel an urge to imitate it: "%+++++hy" -> "%+y"  */
-#else
-     /* discard the unrecognized conversion, just keep *
-      * the unrecognized conversion character          */
-        str_arg = p; str_arg_l = 0;
-#endif
-        if (*p) str_arg_l++;  /* include invalid conversion specifier unchanged
-                                 if not at end-of-string */
-        break;
-      }
-      if (*p) p++;      /* step over the just processed conversion specifier */
-   /* insert padding to the left as requested by min_field_width;
-      this does not include the zero padding in case of numerical conversions*/
-      if (!justify_left) {                /* left padding with blank or zero */
-        const int n = min_field_width - (str_arg_l+number_of_zeros_to_pad);
-        if (n > 0) {
-          if (str_l < str_m) {
-            const size_t avail = str_m-str_l;
-            fast_memset(str+str_l, (zero_padding?'0':' '),
-                        ((unsigned int)n > avail ? avail : (unsigned int)n));
-          }
-          str_l += n;
-        }
-      }
-   /* is zero padding as requested by the precision or by the
-    * minimal field width for numeric conversions required? */
-      if (number_of_zeros_to_pad <= 0) {
-     /* will not copy the first part of numeric right now, *
-      * force it to be copied later in its entirety        */
-        zero_padding_insertion_ind = 0;
-      } else {
-     /* insert first part of numerics (sign or '0x') before zero padding */
-        { const int n = zero_padding_insertion_ind;
-          if (n > 0) {
-            if (str_l < str_m) {
-              const size_t avail = str_m-str_l;
-              fast_memcpy(str+str_l, str_arg,
-                          ((unsigned int)n > avail ? avail : (unsigned int)n));
-            }
-            str_l += n;
-          }
-        }
-     /* insert zero padding as requested by the precision or min field width */
-        { const int n = number_of_zeros_to_pad;
-          if (n > 0) {
-            if (str_l < str_m) {
-              const size_t avail = str_m-str_l;
-              fast_memset(str+str_l, '0',
-                          ((unsigned int)n > avail ? avail : (unsigned int)n));
-            }
-            str_l += n;
-          }
-        }
-      }
-   /* insert formatted string
-    * (or as-is conversion specifier for unknown conversions) */
-      { const int n = str_arg_l - zero_padding_insertion_ind;
-        if (n > 0) {
-          if (str_l < str_m) {
-            const size_t avail = str_m-str_l;
-            fast_memcpy(str+str_l, str_arg+zero_padding_insertion_ind,
-                        ((unsigned int)n > avail ? avail : (unsigned int)n));
-          }
-          str_l += n;
-        }
-      }
-   /* insert right padding */
-      if (justify_left) {          /* right blank padding to the field width */
-        const int n = min_field_width - (str_arg_l+number_of_zeros_to_pad);
-        if (n > 0) {
-          if (str_l < str_m) {
-            const size_t avail = str_m-str_l;
-            fast_memset(str+str_l, ' ',
-                        ((unsigned int)n > avail ? avail : (unsigned int)n));
-          }
-          str_l += n;
-        }
-      }
-    }
-  }
-#if defined(NEED_SNPRINTF_ONLY)
-  va_end(ap);
-#endif
-  if (str_m > 0) { /* make sure the string is null-terminated, possibly
-                      at the expense of overwriting the last character */
-    str[str_l <= str_m-1 ? str_l : str_m-1] = '\0';
-  }
-  /* Return the number of characters formatted (excluding trailing null
-   * character), that is, the number of characters that would have been
-   * written to the buffer if it were large enough.
-   *
-   * The value of str_l should be returned, but str_l is of unsigned type
-   * size_t, and snprintf is int, possibly leading to an undetected
-   * integer overflow, resulting in a negative return value, which is invalid.
-   * Both XSH5 and ISO C99 (at least the draft) are silent on this issue.
-   * Should errno be set to EOVERFLOW and EOF returned in this case???
-   */
-  return (int) str_l;
-}
-#endif
diff --git a/src/preproc/eqn/Makefile.sub b/src/preproc/eqn/Makefile.sub
deleted file mode 100644 (file)
index fc82b3a..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-# Makefile.sub for `preproc eqn'
-#
-# File position: <groff-source>/src/preproc/eqn/Makefile.sub
-#
-# Copyright (C) 2014  Free Software Foundation, Inc.
-#
-# This file is part of `font utf8' which is part of `groff'.
-#
-# `groff' is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 2 of the License, or
-# (at your option) any later version.
-#
-# `groff' 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
-# <http://www.gnu.org/licenses/gpl-2.0.html>.
-#
-########################################################################
-
-PROG=eqn$(EXEEXT)
-MAN1=eqn.n neqn.n
-XLIBS=$(LIBGROFF)
-MLIB=$(LIBM)
-OBJS=\
-  eqn.$(OBJEXT) \
-  main.$(OBJEXT) \
-  lex.$(OBJEXT) \
-  box.$(OBJEXT) \
-  limit.$(OBJEXT) \
-  list.$(OBJEXT) \
-  over.$(OBJEXT) \
-  text.$(OBJEXT) \
-  script.$(OBJEXT) \
-  mark.$(OBJEXT) \
-  other.$(OBJEXT) \
-  delim.$(OBJEXT) \
-  sqrt.$(OBJEXT) \
-  pile.$(OBJEXT) \
-  special.$(OBJEXT)
-CCSRCS=\
-  $(srcdir)/main.cpp \
-  $(srcdir)/lex.cpp \
-  $(srcdir)/box.cpp \
-  $(srcdir)/limit.cpp \
-  $(srcdir)/list.cpp \
-  $(srcdir)/over.cpp \
-  $(srcdir)/text.cpp \
-  $(srcdir)/script.cpp \
-  $(srcdir)/mark.cpp \
-  $(srcdir)/other.cpp \
-  $(srcdir)/delim.cpp \
-  $(srcdir)/sqrt.cpp \
-  $(srcdir)/pile.cpp \
-  $(srcdir)/special.cpp
-HDRS=\
-  $(srcdir)/box.h \
-  $(srcdir)/eqn.h \
-  $(srcdir)/pbox.h
-GRAM=$(srcdir)/eqn.y
-YTABC=eqn.cpp
-YTABH=eqn_tab.h
-NAMEPREFIX=$(g)
-MOSTLYCLEANADD=neqn
-RM=rm -f
-
-all: neqn
-
-neqn: neqn.sh $(SH_DEPS_SED_SCRIPT)
-       $(RM) $@
-       sed -e 's/@g@/$(g)/g' \
-           -f $(SH_DEPS_SED_SCRIPT) \
-           -e $(SH_SCRIPT_SED_CMD) $(srcdir)/neqn.sh >$@
-       chmod +x $@
-
-install_data: neqn
-       $(RM) $(DESTDIR)$(bindir)/$(NAMEPREFIX)neqn
-       $(INSTALL_SCRIPT) neqn $(DESTDIR)$(bindir)/$(NAMEPREFIX)neqn
-
-uninstall_sub:
-       $(RM) $(DESTDIR)$(bindir)/$(NAMEPREFIX)neqn
-
-########################################################################
-# Emacs settings
-########################################################################
-#
-# Local Variables:
-# mode: makefile
-# End:
index 210d0ab..2a22183 100644 (file)
@@ -17,7 +17,7 @@ Consider whether there should be extra space at the side of piles.
 
 Provide scriptstyle displaystyle etc.
 
-Provide a nicer matrix syntax, eg
+Provide a nicer matrix syntax, e.g.,
 matrix ccc {
 a then b then c above
 e then f then g above
index a711ebc..1d51cb7 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include "eqn.h"
 #include "pbox.h"
@@ -131,7 +131,7 @@ void set_param(const char *name, int value)
       *param_table[i].ptr = value;
       return;
     }
-  error("unrecognised parameter `%1'", name);
+  error("unrecognised parameter '%1'", name);
 }
 
 int script_style(int style)
@@ -360,7 +360,7 @@ void box::top_level()
   next_uid = 0;
 }
 
-// gpic defines this register so as to make geqn not produce `\x's
+// gpic defines this register so as to make geqn not produce '\x's
 #define EQN_NO_EXTRA_SPACE_REG "0x"
 
 void box::extra_space()
@@ -551,7 +551,7 @@ quoted_text_box::quoted_text_box(char *s) : text(s)
 
 quoted_text_box::~quoted_text_box()
 {
-  a_delete text;
+  free(text);
 }
 
 void quoted_text_box::output()
index 7819710..2ae647b 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 class list_box;
 
index 10b5176..f6b7e78 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include "eqn.h"
 #include "pbox.h"
@@ -301,7 +301,7 @@ static void define_extensible_string(char *delim, int uid,
        && (left_or_right & d->flags) != 0)
       break;
   if (i >= DELIM_TABLE_SIZE) {
-    error("there is no `%1' delimiter", delim);
+    error("there is no '%1' delimiter", delim);
     printf(".nr " DELIM_WIDTH_REG " 0\n");
     return;
   }
similarity index 80%
rename from src/preproc/eqn/eqn.man
rename to src/preproc/eqn/eqn.1.man
index 1936daa..022de4f 100644 (file)
@@ -1,27 +1,35 @@
-.TH @G@EQN @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
+'\" t
+.TH @G@EQN @MAN1EXT@ "@MDATE@" "groff @VERSION@"
 .SH NAME
 @g@eqn \- format equations for troff or MathML
 .
 .
-.\" license (copying)
-.de co
-Copyright \[co] 1989-2014 Free Software Foundation, Inc.
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the
-entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
-Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be included in
-translations approved by the Free Software Foundation instead of in
-the original English.
-..
+.\" Save and disable compatibility mode (for, e.g., Solaris 10/11).
+.do nr eqn_C \n[.C]
+.cp 0
+.
+.
+.\" ====================================================================
+.\" Legal Terms
+.\" ====================================================================
+.\"
+.\" Copyright (C) 1989-2018 Free Software Foundation, Inc.
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of
+.\" this manual under the conditions for verbatim copying, provided that
+.\" the entire resulting derived work is distributed under the terms of
+.\" a permission notice identical to this one.
+.\"
+.\" Permission is granted to copy and distribute translations of this
+.\" manual into another language, under the above conditions for
+.\" modified versions, except that this permission notice may be
+.\" included in translations approved by the Free Software Foundation
+.\" instead of in the original English.
+.
 .
 .ie \n(.V<\n(.v \
 .  ds tx T\h'-.1667m'\v'.224m'E\v'-.224m'\h'-.125m'X
@@ -29,21 +37,9 @@ the original English.
 .  ds tx TeX
 .
 .
-.\" Like TP, but if specified indent is more than half
-.\" the current line-length - indent, use the default indent.
-.de Tp
-.  ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP
-.  el .TP "\\$1"
-..
-.
-.\" The BSD man macros can't handle " in arguments to font change macros,
-.\" so use \(ts instead of ".
-.tr \(ts"\""
-.
-.
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH SYNOPSIS
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .SY @g@eqn
 .OP \-rvCNR
@@ -54,13 +50,14 @@ the original English.
 .OP \-s n
 .OP \-p n
 .OP \-m n
-.RI [ files\|.\|.\|. ]
+.RI [ file
+\&.\|.\|.\&]
 .YS
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH DESCRIPTION
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 This manual page describes the GNU version of
 .BR eqn ,
@@ -94,14 +91,14 @@ causes the standard input to be read.
 .LP
 .B eqn
 searches for the file
-.B eqnrc
+.I eqnrc
 in the directories given with the
 .B \-M
 option first, then in
-.BR @SYSTEMMACRODIR@ ,
-.BR @LOCALMACRODIR@ ,
+.IR @SYSTEMMACRODIR@ ,
+.IR @LOCALMACRODIR@ ,
 and finally in the standard macro directory
-.BR @MACRODIR@ .
+.IR @MACRODIR@ .
 .
 If it exists,
 .B eqn
@@ -120,13 +117,12 @@ it does not support low-resolution, typewriter-like devices
 (although it may work adequately for very simple input).
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH OPTIONS
-.\" --------------------------------------------------------------------
+.\" ====================================================================
+.
+Whitespace is permitted between a command-line option and its argument.
 .
-.LP
-It is possible to have whitespace between a command line option and its
-parameter.
 .
 .TP
 .BI \-d xy
@@ -154,7 +150,7 @@ is not handled specially.
 .
 .TP
 .B \-N
-Don\[aq]t allow newlines within delimiters.
+Don't allow newlines within delimiters.
 .
 This option allows
 .B eqn
@@ -187,12 +183,12 @@ Normally, the only effect of this is to define a macro
 .I name
 with a value of\~\c
 .BR 1 ;
-.B eqnrc
+.I eqnrc
 uses this to provide definitions appropriate for the output device.
 .
 However, if the specified device is \[lq]MathML\[rq], the output is
 MathML markup rather than troff commands, and
-.B eqnrc
+.I eqnrc
 is not loaded at all.
 .
 The default output device is
@@ -203,13 +199,13 @@ The default output device is
 Search
 .I dir
 for
-.B eqnrc
+.I eqnrc
 before the default directories.
 .
 .TP
 .B \-R
-Don\[aq]t load
-.BR eqnrc .
+Don't load
+.IR eqnrc .
 .
 .TP
 .BI \-f F
@@ -231,8 +227,8 @@ is when the equation is encountered.
 .TP
 .BI \-p n
 This says that subscripts and superscripts should be
-.I n\~\c
-points smaller than the surrounding text.
+.IR n \~points
+smaller than the surrounding text.
 .
 This option is deprecated.
 .
@@ -242,9 +238,9 @@ sets subscripts and superscripts at 70% of the size of the surrounding
 text.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH USAGE
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 Only the differences between GNU
 .B eqn
@@ -280,9 +276,9 @@ below;
 these may safely be ignored if you do not know \*(tx.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS Controlling delimiters
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 If not in compatibility mode,
 .B eqn
@@ -298,59 +294,40 @@ to restore the delimiters which have been previously disabled
 with a call to
 .RB \[oq] "delim off" \[cq].
 .
-If delimiters haven\[aq]t been specified, the call has no effect.
+If delimiters haven't been specified, the call has no effect.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS Automatic spacing
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .B eqn
 gives each component of an equation a type, and adjusts the spacing
 between components using that type.
 .
-Possible types are:
+Possible types are described in the table below.
 .
-.RS
-.TP \w'punctuation'u+2n
-ordinary an ordinary character such as \[oq]1\[cq] or \[oq]\c
-.IR x \[cq];
 .
-.TP
-operator
+.TS
+lB l.
+ordinary       T{
+an ordinary character such as \[oq]1\[cq] or
+.RI \[oq] x \[cq]
+T}
+operator       T{
 a large operator such as
 .ds Su \[oq]\s+5\(*S\s0\[cq]
 .if \n(.g .if !c\(*S .ds Su the summation operator
-\*(Su;
-.
-.TP
-binary
-a binary operator such as \[oq]\[pl]\[cq];
-.
-.TP
-relation
-a relation such as \[oq]=\[cq];
-.
-.TP
-opening
-a opening bracket such as \[oq](\[cq];
-.
-.TP
-closing
-a closing bracket such as \[oq])\[cq];
-.
-.TP
-punctuation
-a punctuation character such as \[oq],\[cl];
-.
-.TP
-inner
-a subformula contained within brackets;
-.
-.TP
-suppress spacing
-that suppresses automatic spacing adjustment.
-.RE
+\*(Su
+T}
+binary a binary operator such as \[oq]\[pl]\[cq]
+relation       a relation such as \[oq]=\[cq]
+opening        a opening bracket such as \[oq](\[cq]
+closing        a closing bracket such as \[oq])\[cq]
+punctuation    a punctuation character such as \[oq],\[cq]
+inner  a subformula contained within brackets
+suppress       a type that suppresses automatic spacing adjustment
+.TE
 .
 .
 .LP
@@ -378,7 +355,7 @@ type "binary" \e(mu
 .RE
 .
 .IP
-The name of the type doesn\[aq]t have to be quoted, but quoting protects
+The name of the type doesn't have to be quoted, but quoting protects
 from macro expansion.
 .
 .TP
@@ -412,14 +389,12 @@ in these cases
 .B chartype
 changes the font type of the characters.
 .
-See the
-.B Fonts
-subsection.
+See subsection \[lq]Fonts\[rq] below.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS New primitives
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .TP
 .BI big\  e
@@ -468,7 +443,7 @@ This vertically centers
 about the math axis.
 .
 The math axis is the vertical position about which characters such as
-\[oq]\[pl]\[]cq and \[oq]\[mi]\[cq] are centered; also it is the
+\[oq]\[pl]\[cq] and \[oq]\[mi]\[cq] are centered; also it is the
 vertical position used for the bar of fractions.
 .
 For example,
@@ -537,7 +512,7 @@ is pre-defined using
 as a tilde accent below the baseline.
 .
 .TP
-.BI split\ \(ts text \(ts
+.BI split\ \[dq] text \[dq]
 This has the same effect as simply
 .
 .RS
@@ -558,7 +533,7 @@ This has the same effect as
 .
 .RS
 .IP
-.BI \(ts text \(ts
+.BI \[dq] text \[dq]
 .RE
 .
 .IP
@@ -629,7 +604,7 @@ and the number registers
 .BR 0d ,
 .BR 0skern ,
 and
-.BR 0skew
+.B 0skew
 contain the width, height, depth, subscript kern, and skew of\~\c
 .IR e .
 .
@@ -688,7 +663,7 @@ with
 .BI \%cancel\ {\  e\  }
 .
 .IP
-Here\[aq]s a more complicated construct that draws a box round an
+Here's a more complicated construct that draws a box round an
 expression:
 .
 .RS
@@ -742,7 +717,7 @@ equation, a negative value sets the spacing after the equation,
 replacing the default values.
 .
 This primitive provides an interface to
-.BR groff \[aq]s
+.BR groff 's
 .B \ex
 escape (but with opposite sign).
 .
@@ -752,9 +727,9 @@ This keyword has no effect if the equation is part of a
 picture.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS Extended primitives
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .TP
 .BI col\  n\  {\  .\|.\|.\  }
@@ -776,7 +751,7 @@ The integer value\~\c
 .I n
 (in hundredths of an em) increases the vertical spacing between rows,
 using
-.BR groff \[aq]s
+.BR groff 's
 .B \ex
 escape (the value has no effect in MathML mode).
 Negative values are possible but have no effect.
@@ -784,9 +759,9 @@ If there is more than a single value given in a matrix, the biggest one
 is used.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS Customization
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 When
 .B eqn
@@ -806,8 +781,8 @@ This sets parameter\~\c
 .I p
 to value\~\c
 .IR n ;
-.I n\~\c
-is an integer.
+.IR n \~is
+an integer.
 .
 For example,
 .
@@ -832,13 +807,10 @@ Values are in units of hundredths of an em unless otherwise stated.
 These descriptions are intended to be expository rather than
 definitive.
 .
-.ie t \
-.  TP \w'\fBdefault_rule_thickness'u+2n
-.el \
-.  TP
+.TP
 .B minimum_size
 .B eqn
-doesn\[aq]t set anything at a smaller point-size than this.
+doesn't set anything at a smaller point-size than this.
 .
 The value is in points.
 .
@@ -1103,7 +1075,7 @@ and
 is ignored.
 .
 The default value is\~0 (This is typically changed to\~1 by the
-.B eqnrc
+.I eqnrc
 file for the
 .BR ascii ,
 .BR latin1 ,
@@ -1120,9 +1092,9 @@ parameters can be found in Appendix\~H of
 .RE
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS Macros
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 Macros can take arguments.
 .
@@ -1131,11 +1103,11 @@ In a macro body,
 where
 .I n
 is between 1 and\~9, is replaced by the
-.IR n-th
+.IR n th
 argument if the macro is called with arguments;
 if there are fewer than
-.I n\~\c
-arguments, it is replaced by nothing.
+.IR n \~arguments,
+it is replaced by nothing.
 .
 A word containing a left parenthesis where the part of the word
 before the left parenthesis has been defined using the
@@ -1154,9 +1126,9 @@ command, but
 is not recognized if called with arguments.
 .
 .TP
-.BI include\ \(ts file \(ts
+.BI include\ \[dq] file \[dq]
 .TQ
-.BI copy\ \(ts file \(ts
+.BI copy\ \[dq] file \[dq]
 Include the contents of
 .I file
 .RB ( include
@@ -1212,9 +1184,9 @@ Besides the macros mentioned above, the following definitions are available:
 .BR dollar .
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS Fonts
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .B eqn
 normally uses at least two fonts to set an equation:
@@ -1283,18 +1255,18 @@ A type of
 causes a character to be set in roman type.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH FILES
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
-.Tp \w'\fB@MACRODIR@/eqnrc'u+2n
-.B @MACRODIR@/eqnrc
+.TP
+.I @MACRODIR@/eqnrc
 Initialization file.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH MATHML MODE LIMITATIONS
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 MathML is designed on the assumption that it cannot know the exact
 physical characteristics of the media and devices on which it will
@@ -1311,7 +1283,7 @@ parameters have no effect on the generated MathML.
 .
 .IP *
 The
-.BR special,
+.BR special ,
 .BR up ,
 .BR down ,
 .BR fwd ,
@@ -1350,15 +1322,13 @@ boundaries.
 .
 .
 .LP
-See the
-.B BUGS
-section for translation limits specific to
+See section \[lq]Bugs\[rq] below for translation limits specific to
 .BR eqn .
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH BUGS
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 Inline equations are set at the point size that is current at the
 beginning of the input line.
@@ -1369,7 +1339,7 @@ In MathML mode, the
 .B mark
 and
 .B lineup
-features don\[aq]t work.
+features don't work.
 .
 These could, in theory, be implemented with \[oq]<maligngroup>\[cq]
 elements.
@@ -1383,9 +1353,9 @@ In MathML mode, each digit of a numeric literal gets a separate
 This is allowed by the specification, but inefficient.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "SEE ALSO"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .BR groff (@MAN1EXT@),
 .BR @g@troff (@MAN1EXT@),
@@ -1394,13 +1364,12 @@ This is allowed by the specification, but inefficient.
 .I The\ \*[tx]book
 .
 .
-.\" --------------------------------------------------------------------
-.SH COPYING
-.\" --------------------------------------------------------------------
-.
-.co
+.\" Restore compatibility mode (for, e.g., Solaris 10/11).
+.cp \n[eqn_C]
 .
 .
 .\" Local Variables:
 .\" mode: nroff
+.\" tab-width: 12
 .\" End:
+.\" vim: set filetype=groff tabstop=12:
diff --git a/src/preproc/eqn/eqn.am b/src/preproc/eqn/eqn.am
new file mode 100644 (file)
index 0000000..a610781
--- /dev/null
@@ -0,0 +1,74 @@
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Latest update: 22 Aug 2015
+#
+# This file is part of groff.
+#
+# groff 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.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+
+prefixexecbin_PROGRAMS += eqn
+prefixexecbin_SCRIPTS += neqn
+eqn_CPPFLAGS = \
+  $(AM_CPPFLAGS) \
+  -I $(top_srcdir)/src/preproc/eqn \
+  -I $(top_builddir)/src/preproc/eqn
+eqn_LDADD = $(LIBM) libgroff.a lib/libgnu.a
+eqn_SOURCES = \
+  src/preproc/eqn/main.cpp \
+  src/preproc/eqn/lex.cpp \
+  src/preproc/eqn/box.cpp \
+  src/preproc/eqn/limit.cpp \
+  src/preproc/eqn/list.cpp \
+  src/preproc/eqn/over.cpp \
+  src/preproc/eqn/text.cpp \
+  src/preproc/eqn/script.cpp \
+  src/preproc/eqn/mark.cpp \
+  src/preproc/eqn/other.cpp \
+  src/preproc/eqn/delim.cpp \
+  src/preproc/eqn/sqrt.cpp \
+  src/preproc/eqn/pile.cpp \
+  src/preproc/eqn/special.cpp \
+  src/preproc/eqn/eqn.ypp \
+  src/preproc/eqn/box.h \
+  src/preproc/eqn/pbox.h \
+  src/preproc/eqn/eqn.h
+
+PREFIXMAN1 += src/preproc/eqn/eqn.1 src/preproc/eqn/neqn.1
+EXTRA_DIST += \
+  src/preproc/eqn/TODO \
+  src/preproc/eqn/neqn.sh \
+  src/preproc/eqn/eqn.1.man \
+  src/preproc/eqn/neqn.1.man
+
+src/preproc/eqn/eqn-lex.$(OBJEXT): src/preproc/eqn/eqn.hpp
+CLEANFILES += \
+  src/preproc/eqn/eqn.hpp \
+  src/preproc/eqn/eqn.cpp \
+  src/preproc/eqn/eqn.output
+
+neqn: $(top_srcdir)/src/preproc/eqn/neqn.sh $(SH_DEPS_SED_SCRIPT)
+       $(AM_V_GEN)$(RM) $@ \
+       && sed -e 's/[@]g[@]/$(g)/g' \
+              -f $(SH_DEPS_SED_SCRIPT) \
+              -e $(SH_SCRIPT_SED_CMD) \
+              $(top_srcdir)/src/preproc/eqn/neqn.sh \
+              >$@ \
+       && chmod +x $@
+
+
+########################################################################
+### Emacs settings
+# Local Variables:
+# mode: makefile-automake
+# End:
index ea96fc1..4ede465 100644 (file)
@@ -1,8 +1,8 @@
-/* A Bison parser, made by GNU Bison 3.0.2.  */
+/* A Bison parser, made by GNU Bison 3.2.  */
 
 /* Bison implementation for Yacc-like parsers in C
 
-   Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
+   Copyright (C) 1984, 1989-1990, 2000-2015, 2018 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
    define necessary library symbols; they are noted "INFRINGES ON
    USER NAME SPACE" below.  */
 
+/* Undocumented macros, especially those whose name start with YY_,
+   are private implementation details.  Do not rely on them.  */
+
 /* Identify Bison output.  */
 #define YYBISON 1
 
 /* Bison version.  */
-#define YYBISON_VERSION "3.0.2"
+#define YYBISON_VERSION "3.2"
 
 /* Skeleton name.  */
 #define YYSKELETON_NAME "yacc.c"
@@ -61,8 +64,8 @@
 
 
 
-/* Copy the first part of user declarations.  */
-#line 18 "eqn.y" /* yacc.c:339  */
+/* First part of user prologue.  */
+#line 18 "../src/preproc/eqn/eqn.ypp" /* yacc.c:338  */
 
 #include <stdio.h>
 #include <string.h>
@@ -74,13 +77,16 @@ extern int non_empty_flag;
 int yylex();
 void yyerror(const char *);
 
-#line 78 "eqn.cpp" /* yacc.c:339  */
-
+#line 81 "src/preproc/eqn/eqn.cpp" /* yacc.c:338  */
 # ifndef YY_NULLPTR
-#  if defined __cplusplus && 201103L <= __cplusplus
-#   define YY_NULLPTR nullptr
+#  if defined __cplusplus
+#   if 201103L <= __cplusplus
+#    define YY_NULLPTR nullptr
+#   else
+#    define YY_NULLPTR 0
+#   endif
 #  else
-#   define YY_NULLPTR 0
+#   define YY_NULLPTR ((void*)0)
 #  endif
 # endif
 
@@ -94,8 +100,8 @@ void yyerror(const char *);
 
 /* In a future release of Bison, this section will be replaced
    by #include "y.tab.h".  */
-#ifndef YY_YY_Y_TAB_H_INCLUDED
-# define YY_YY_Y_TAB_H_INCLUDED
+#ifndef YY_YY_SRC_PREPROC_EQN_EQN_HPP_INCLUDED
+# define YY_YY_SRC_PREPROC_EQN_EQN_HPP_INCLUDED
 /* Debug traces.  */
 #ifndef YYDEBUG
 # define YYDEBUG 0
@@ -231,10 +237,10 @@ extern int yydebug;
 
 /* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-typedef union YYSTYPE YYSTYPE;
+
 union YYSTYPE
 {
-#line 30 "eqn.y" /* yacc.c:355  */
+#line 30 "../src/preproc/eqn/eqn.ypp" /* yacc.c:353  */
 
        char *str;
        box *b;
@@ -243,8 +249,10 @@ union YYSTYPE
        int n;
        column *col;
 
-#line 247 "eqn.cpp" /* yacc.c:355  */
+#line 253 "src/preproc/eqn/eqn.cpp" /* yacc.c:353  */
 };
+
+typedef union YYSTYPE YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define YYSTYPE_IS_DECLARED 1
 #endif
@@ -254,11 +262,9 @@ extern YYSTYPE yylval;
 
 int yyparse (void);
 
-#endif /* !YY_YY_Y_TAB_H_INCLUDED  */
+#endif /* !YY_YY_SRC_PREPROC_EQN_EQN_HPP_INCLUDED  */
 
-/* Copy the second part of user declarations.  */
 
-#line 262 "eqn.cpp" /* yacc.c:358  */
 
 #ifdef short
 # undef short
@@ -279,13 +285,13 @@ typedef signed char yytype_int8;
 #ifdef YYTYPE_UINT16
 typedef YYTYPE_UINT16 yytype_uint16;
 #else
-typedef unsigned short int yytype_uint16;
+typedef unsigned short yytype_uint16;
 #endif
 
 #ifdef YYTYPE_INT16
 typedef YYTYPE_INT16 yytype_int16;
 #else
-typedef short int yytype_int16;
+typedef short yytype_int16;
 #endif
 
 #ifndef YYSIZE_T
@@ -297,7 +303,7 @@ typedef short int yytype_int16;
 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
 #  define YYSIZE_T size_t
 # else
-#  define YYSIZE_T unsigned int
+#  define YYSIZE_T unsigned
 # endif
 #endif
 
@@ -333,15 +339,6 @@ typedef short int yytype_int16;
 # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
 #endif
 
-#if !defined _Noreturn \
-     && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
-# if defined _MSC_VER && 1200 <= _MSC_VER
-#  define _Noreturn __declspec (noreturn)
-# else
-#  define _Noreturn YY_ATTRIBUTE ((__noreturn__))
-# endif
-#endif
-
 /* Suppress unused-variable warnings by "using" E.  */
 #if ! defined lint || defined __GNUC__
 # define YYUSE(E) ((void) (E))
@@ -349,7 +346,7 @@ typedef short int yytype_int16;
 # define YYUSE(E) /* empty */
 #endif
 
-#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
+#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
 /* Suppress an incorrect diagnostic about yylval being uninitialized.  */
 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
     _Pragma ("GCC diagnostic push") \
@@ -517,7 +514,7 @@ union yyalloc
 #define YYMAXUTOK   315
 
 #define YYTRANSLATE(YYX)                                                \
-  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+  ((unsigned) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
 
 /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
    as returned by yylex, without out-of-bounds checking.  */
@@ -876,37 +873,37 @@ do {                                                                      \
 } while (0)
 
 
-/*----------------------------------------.
-| Print this symbol's value on YYOUTPUT.  |
-`----------------------------------------*/
+/*-----------------------------------.
+| Print this symbol's value on YYO.  |
+`-----------------------------------*/
 
 static void
-yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
+yy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep)
 {
-  FILE *yyo = yyoutput;
-  YYUSE (yyo);
+  FILE *yyoutput = yyo;
+  YYUSE (yyoutput);
   if (!yyvaluep)
     return;
 # ifdef YYPRINT
   if (yytype < YYNTOKENS)
-    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+    YYPRINT (yyo, yytoknum[yytype], *yyvaluep);
 # endif
   YYUSE (yytype);
 }
 
 
-/*--------------------------------.
-| Print this symbol on YYOUTPUT.  |
-`--------------------------------*/
+/*---------------------------.
+| Print this symbol on YYO.  |
+`---------------------------*/
 
 static void
-yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
+yy_symbol_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep)
 {
-  YYFPRINTF (yyoutput, "%s %s (",
+  YYFPRINTF (yyo, "%s %s (",
              yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
 
-  yy_symbol_value_print (yyoutput, yytype, yyvaluep);
-  YYFPRINTF (yyoutput, ")");
+  yy_symbol_value_print (yyo, yytype, yyvaluep);
+  YYFPRINTF (yyo, ")");
 }
 
 /*------------------------------------------------------------------.
@@ -940,7 +937,7 @@ do {                                                            \
 static void
 yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule)
 {
-  unsigned long int yylno = yyrline[yyrule];
+  unsigned long yylno = yyrline[yyrule];
   int yynrhs = yyr2[yyrule];
   int yyi;
   YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
@@ -1073,7 +1070,7 @@ yytnamerr (char *yyres, const char *yystr)
   if (! yyres)
     return yystrlen (yystr);
 
-  return yystpcpy (yyres, yystr) - yyres;
+  return (YYSIZE_T) (yystpcpy (yyres, yystr) - yyres);
 }
 # endif
 
@@ -1166,6 +1163,7 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
       case N:                               \
         yyformat = S;                       \
       break
+    default: /* Avoid compiler warnings. */
       YYCASE_(0, YY_("syntax error"));
       YYCASE_(1, YY_("syntax error, unexpected %s"));
       YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
@@ -1314,12 +1312,12 @@ yyparse (void)
   yyssp++;
 
  yysetstate:
-  *yyssp = yystate;
+  *yyssp = (yytype_int16) yystate;
 
   if (yyss + yystacksize - 1 <= yyssp)
     {
       /* Get the current used size of the three stacks, in elements.  */
-      YYSIZE_T yysize = yyssp - yyss + 1;
+      YYSIZE_T yysize = (YYSIZE_T) (yyssp - yyss + 1);
 
 #ifdef yyoverflow
       {
@@ -1337,7 +1335,6 @@ yyparse (void)
                     &yyss1, yysize * sizeof (*yyssp),
                     &yyvs1, yysize * sizeof (*yyvsp),
                     &yystacksize);
-
         yyss = yyss1;
         yyvs = yyvs1;
       }
@@ -1371,7 +1368,7 @@ yyparse (void)
       yyvsp = yyvs + yysize - 1;
 
       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
-                  (unsigned long int) yystacksize));
+                  (unsigned long) yystacksize));
 
       if (yyss + yystacksize - 1 <= yyssp)
         YYABORT;
@@ -1482,19 +1479,19 @@ yyreduce:
   switch (yyn)
     {
         case 3:
-#line 124 "eqn.y" /* yacc.c:1646  */
+#line 124 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyvsp[0].b)->top_level(); non_empty_flag = 1; }
-#line 1488 "eqn.cpp" /* yacc.c:1646  */
+#line 1485 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 4:
-#line 129 "eqn.y" /* yacc.c:1646  */
+#line 129 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyval.b) = (yyvsp[0].b); }
-#line 1494 "eqn.cpp" /* yacc.c:1646  */
+#line 1491 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 5:
-#line 131 "eqn.y" /* yacc.c:1646  */
+#line 131 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     {
                  list_box *lb = (yyvsp[-1].b)->to_list_box();
                  if (!lb)
@@ -1502,436 +1499,436 @@ yyreduce:
                  lb->append((yyvsp[0].b));
                  (yyval.b) = lb;
                }
-#line 1506 "eqn.cpp" /* yacc.c:1646  */
+#line 1503 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 6:
-#line 142 "eqn.y" /* yacc.c:1646  */
+#line 142 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyval.b) = (yyvsp[0].b); }
-#line 1512 "eqn.cpp" /* yacc.c:1646  */
+#line 1509 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 7:
-#line 144 "eqn.y" /* yacc.c:1646  */
+#line 144 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyval.b) = make_mark_box((yyvsp[0].b)); }
-#line 1518 "eqn.cpp" /* yacc.c:1646  */
+#line 1515 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 8:
-#line 146 "eqn.y" /* yacc.c:1646  */
+#line 146 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyval.b) = make_lineup_box((yyvsp[0].b)); }
-#line 1524 "eqn.cpp" /* yacc.c:1646  */
+#line 1521 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 9:
-#line 151 "eqn.y" /* yacc.c:1646  */
+#line 151 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyval.b) = (yyvsp[0].b); }
-#line 1530 "eqn.cpp" /* yacc.c:1646  */
+#line 1527 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 10:
-#line 153 "eqn.y" /* yacc.c:1646  */
+#line 153 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyval.b) = make_limit_box((yyvsp[-2].b), 0, (yyvsp[0].b)); }
-#line 1536 "eqn.cpp" /* yacc.c:1646  */
+#line 1533 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 11:
-#line 155 "eqn.y" /* yacc.c:1646  */
+#line 155 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyval.b) = make_limit_box((yyvsp[-2].b), (yyvsp[0].b), 0); }
-#line 1542 "eqn.cpp" /* yacc.c:1646  */
+#line 1539 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 12:
-#line 157 "eqn.y" /* yacc.c:1646  */
+#line 157 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyval.b) = make_limit_box((yyvsp[-4].b), (yyvsp[-2].b), (yyvsp[0].b)); }
-#line 1548 "eqn.cpp" /* yacc.c:1646  */
+#line 1545 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 13:
-#line 159 "eqn.y" /* yacc.c:1646  */
+#line 159 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyval.b) = make_limit_box((yyvsp[-4].b), make_limit_box((yyvsp[-2].b), (yyvsp[0].b), 0), 0); }
-#line 1554 "eqn.cpp" /* yacc.c:1646  */
+#line 1551 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 14:
-#line 164 "eqn.y" /* yacc.c:1646  */
+#line 164 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyval.b) = (yyvsp[0].b); }
-#line 1560 "eqn.cpp" /* yacc.c:1646  */
+#line 1557 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 15:
-#line 166 "eqn.y" /* yacc.c:1646  */
+#line 166 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyval.b) = make_sqrt_box((yyvsp[0].b)); }
-#line 1566 "eqn.cpp" /* yacc.c:1646  */
+#line 1563 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 16:
-#line 168 "eqn.y" /* yacc.c:1646  */
+#line 168 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyval.b) = make_over_box((yyvsp[-2].b), (yyvsp[0].b)); }
-#line 1572 "eqn.cpp" /* yacc.c:1646  */
+#line 1569 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 17:
-#line 170 "eqn.y" /* yacc.c:1646  */
+#line 170 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyval.b) = make_small_over_box((yyvsp[-2].b), (yyvsp[0].b)); }
-#line 1578 "eqn.cpp" /* yacc.c:1646  */
+#line 1575 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 18:
-#line 175 "eqn.y" /* yacc.c:1646  */
+#line 175 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyval.b) = (yyvsp[0].b); }
-#line 1584 "eqn.cpp" /* yacc.c:1646  */
+#line 1581 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 19:
-#line 177 "eqn.y" /* yacc.c:1646  */
+#line 177 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyval.b) = make_script_box((yyvsp[-2].b), 0, (yyvsp[0].b)); }
-#line 1590 "eqn.cpp" /* yacc.c:1646  */
+#line 1587 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 20:
-#line 182 "eqn.y" /* yacc.c:1646  */
+#line 182 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyval.b) = (yyvsp[0].b); }
-#line 1596 "eqn.cpp" /* yacc.c:1646  */
+#line 1593 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 21:
-#line 184 "eqn.y" /* yacc.c:1646  */
+#line 184 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyval.b) = make_script_box((yyvsp[-2].b), (yyvsp[0].b), 0); }
-#line 1602 "eqn.cpp" /* yacc.c:1646  */
+#line 1599 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 22:
-#line 186 "eqn.y" /* yacc.c:1646  */
+#line 186 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyval.b) = make_script_box((yyvsp[-4].b), (yyvsp[-2].b), (yyvsp[0].b)); }
-#line 1608 "eqn.cpp" /* yacc.c:1646  */
+#line 1605 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 23:
-#line 191 "eqn.y" /* yacc.c:1646  */
+#line 191 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyval.b) = split_text((yyvsp[0].str)); }
-#line 1614 "eqn.cpp" /* yacc.c:1646  */
+#line 1611 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 24:
-#line 193 "eqn.y" /* yacc.c:1646  */
+#line 193 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyval.b) = new quoted_text_box((yyvsp[0].str)); }
-#line 1620 "eqn.cpp" /* yacc.c:1646  */
+#line 1617 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 25:
-#line 195 "eqn.y" /* yacc.c:1646  */
+#line 195 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyval.b) = split_text((yyvsp[0].str)); }
-#line 1626 "eqn.cpp" /* yacc.c:1646  */
+#line 1623 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 26:
-#line 197 "eqn.y" /* yacc.c:1646  */
+#line 197 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyval.b) = new quoted_text_box((yyvsp[0].str)); }
-#line 1632 "eqn.cpp" /* yacc.c:1646  */
+#line 1629 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 27:
-#line 199 "eqn.y" /* yacc.c:1646  */
+#line 199 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyval.b) = new half_space_box; }
-#line 1638 "eqn.cpp" /* yacc.c:1646  */
+#line 1635 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 28:
-#line 201 "eqn.y" /* yacc.c:1646  */
+#line 201 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyval.b) = new space_box; }
-#line 1644 "eqn.cpp" /* yacc.c:1646  */
+#line 1641 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 29:
-#line 203 "eqn.y" /* yacc.c:1646  */
+#line 203 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyval.b) = new tab_box; }
-#line 1650 "eqn.cpp" /* yacc.c:1646  */
+#line 1647 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 30:
-#line 205 "eqn.y" /* yacc.c:1646  */
+#line 205 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyval.b) = (yyvsp[-1].b); }
-#line 1656 "eqn.cpp" /* yacc.c:1646  */
+#line 1653 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 31:
-#line 207 "eqn.y" /* yacc.c:1646  */
+#line 207 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyvsp[0].pb)->set_alignment(CENTER_ALIGN); (yyval.b) = (yyvsp[0].pb); }
-#line 1662 "eqn.cpp" /* yacc.c:1646  */
+#line 1659 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 32:
-#line 209 "eqn.y" /* yacc.c:1646  */
+#line 209 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyvsp[0].pb)->set_alignment(LEFT_ALIGN); (yyval.b) = (yyvsp[0].pb); }
-#line 1668 "eqn.cpp" /* yacc.c:1646  */
+#line 1665 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 33:
-#line 211 "eqn.y" /* yacc.c:1646  */
+#line 211 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyvsp[0].pb)->set_alignment(RIGHT_ALIGN); (yyval.b) = (yyvsp[0].pb); }
-#line 1674 "eqn.cpp" /* yacc.c:1646  */
+#line 1671 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 34:
-#line 213 "eqn.y" /* yacc.c:1646  */
+#line 213 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyvsp[0].pb)->set_alignment(CENTER_ALIGN); (yyval.b) = (yyvsp[0].pb); }
-#line 1680 "eqn.cpp" /* yacc.c:1646  */
+#line 1677 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 35:
-#line 215 "eqn.y" /* yacc.c:1646  */
+#line 215 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyval.b) = (yyvsp[-1].mb); }
-#line 1686 "eqn.cpp" /* yacc.c:1646  */
+#line 1683 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 36:
-#line 217 "eqn.y" /* yacc.c:1646  */
+#line 217 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyval.b) = make_delim_box((yyvsp[-3].str), (yyvsp[-2].b), (yyvsp[0].str)); }
-#line 1692 "eqn.cpp" /* yacc.c:1646  */
+#line 1689 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 37:
-#line 219 "eqn.y" /* yacc.c:1646  */
+#line 219 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyval.b) = make_delim_box((yyvsp[-1].str), (yyvsp[0].b), 0); }
-#line 1698 "eqn.cpp" /* yacc.c:1646  */
+#line 1695 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 38:
-#line 221 "eqn.y" /* yacc.c:1646  */
+#line 221 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyval.b) = make_overline_box((yyvsp[-1].b)); }
-#line 1704 "eqn.cpp" /* yacc.c:1646  */
+#line 1701 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 39:
-#line 223 "eqn.y" /* yacc.c:1646  */
+#line 223 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyval.b) = make_underline_box((yyvsp[-1].b)); }
-#line 1710 "eqn.cpp" /* yacc.c:1646  */
+#line 1707 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 40:
-#line 225 "eqn.y" /* yacc.c:1646  */
+#line 225 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyval.b) = make_prime_box((yyvsp[-1].b)); }
-#line 1716 "eqn.cpp" /* yacc.c:1646  */
+#line 1713 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 41:
-#line 227 "eqn.y" /* yacc.c:1646  */
+#line 227 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyval.b) = make_accent_box((yyvsp[-2].b), (yyvsp[0].b)); }
-#line 1722 "eqn.cpp" /* yacc.c:1646  */
+#line 1719 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 42:
-#line 229 "eqn.y" /* yacc.c:1646  */
+#line 229 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyval.b) = make_uaccent_box((yyvsp[-2].b), (yyvsp[0].b)); }
-#line 1728 "eqn.cpp" /* yacc.c:1646  */
+#line 1725 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 43:
-#line 231 "eqn.y" /* yacc.c:1646  */
+#line 231 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyval.b) = new font_box(strsave(get_grfont()), (yyvsp[0].b)); }
-#line 1734 "eqn.cpp" /* yacc.c:1646  */
+#line 1731 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 44:
-#line 233 "eqn.y" /* yacc.c:1646  */
+#line 233 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyval.b) = new font_box(strsave(get_gbfont()), (yyvsp[0].b)); }
-#line 1740 "eqn.cpp" /* yacc.c:1646  */
+#line 1737 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 45:
-#line 235 "eqn.y" /* yacc.c:1646  */
+#line 235 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyval.b) = new font_box(strsave(get_gfont()), (yyvsp[0].b)); }
-#line 1746 "eqn.cpp" /* yacc.c:1646  */
+#line 1743 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 46:
-#line 237 "eqn.y" /* yacc.c:1646  */
+#line 237 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyval.b) = new fat_box((yyvsp[0].b)); }
-#line 1752 "eqn.cpp" /* yacc.c:1646  */
+#line 1749 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 47:
-#line 239 "eqn.y" /* yacc.c:1646  */
+#line 239 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyval.b) = new font_box((yyvsp[-1].str), (yyvsp[0].b)); }
-#line 1758 "eqn.cpp" /* yacc.c:1646  */
+#line 1755 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 48:
-#line 241 "eqn.y" /* yacc.c:1646  */
+#line 241 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyval.b) = new size_box((yyvsp[-1].str), (yyvsp[0].b)); }
-#line 1764 "eqn.cpp" /* yacc.c:1646  */
+#line 1761 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 49:
-#line 243 "eqn.y" /* yacc.c:1646  */
+#line 243 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyval.b) = new hmotion_box((yyvsp[-1].n), (yyvsp[0].b)); }
-#line 1770 "eqn.cpp" /* yacc.c:1646  */
+#line 1767 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 50:
-#line 245 "eqn.y" /* yacc.c:1646  */
+#line 245 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyval.b) = new hmotion_box(-(yyvsp[-1].n), (yyvsp[0].b)); }
-#line 1776 "eqn.cpp" /* yacc.c:1646  */
+#line 1773 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 51:
-#line 247 "eqn.y" /* yacc.c:1646  */
+#line 247 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyval.b) = new vmotion_box((yyvsp[-1].n), (yyvsp[0].b)); }
-#line 1782 "eqn.cpp" /* yacc.c:1646  */
+#line 1779 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 52:
-#line 249 "eqn.y" /* yacc.c:1646  */
+#line 249 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyval.b) = new vmotion_box(-(yyvsp[-1].n), (yyvsp[0].b)); }
-#line 1788 "eqn.cpp" /* yacc.c:1646  */
+#line 1785 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 53:
-#line 251 "eqn.y" /* yacc.c:1646  */
+#line 251 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyvsp[0].b)->set_spacing_type((yyvsp[-1].str)); (yyval.b) = (yyvsp[0].b); }
-#line 1794 "eqn.cpp" /* yacc.c:1646  */
+#line 1791 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 54:
-#line 253 "eqn.y" /* yacc.c:1646  */
+#line 253 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyval.b) = new vcenter_box((yyvsp[0].b)); }
-#line 1800 "eqn.cpp" /* yacc.c:1646  */
+#line 1797 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 55:
-#line 255 "eqn.y" /* yacc.c:1646  */
+#line 255 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyval.b) = make_special_box((yyvsp[-1].str), (yyvsp[0].b)); }
-#line 1806 "eqn.cpp" /* yacc.c:1646  */
+#line 1803 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 56:
-#line 260 "eqn.y" /* yacc.c:1646  */
+#line 260 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     {
                  int n;
                  if (sscanf((yyvsp[0].str), "%d", &n) == 1)
                    (yyval.n) = n;
                  a_delete (yyvsp[0].str);
                }
-#line 1817 "eqn.cpp" /* yacc.c:1646  */
+#line 1814 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 57:
-#line 270 "eqn.y" /* yacc.c:1646  */
+#line 270 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyval.pb) = new pile_box((yyvsp[0].b)); }
-#line 1823 "eqn.cpp" /* yacc.c:1646  */
+#line 1820 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 58:
-#line 272 "eqn.y" /* yacc.c:1646  */
+#line 272 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyvsp[-2].pb)->append((yyvsp[0].b)); (yyval.pb) = (yyvsp[-2].pb); }
-#line 1829 "eqn.cpp" /* yacc.c:1646  */
+#line 1826 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 59:
-#line 277 "eqn.y" /* yacc.c:1646  */
+#line 277 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyval.pb) = (yyvsp[-1].pb); }
-#line 1835 "eqn.cpp" /* yacc.c:1646  */
+#line 1832 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 60:
-#line 279 "eqn.y" /* yacc.c:1646  */
+#line 279 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyvsp[-1].pb)->set_space((yyvsp[-3].n)); (yyval.pb) = (yyvsp[-1].pb); }
-#line 1841 "eqn.cpp" /* yacc.c:1646  */
+#line 1838 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 61:
-#line 284 "eqn.y" /* yacc.c:1646  */
+#line 284 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyval.mb) = new matrix_box((yyvsp[0].col)); }
-#line 1847 "eqn.cpp" /* yacc.c:1646  */
+#line 1844 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 62:
-#line 286 "eqn.y" /* yacc.c:1646  */
+#line 286 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyvsp[-1].mb)->append((yyvsp[0].col)); (yyval.mb) = (yyvsp[-1].mb); }
-#line 1853 "eqn.cpp" /* yacc.c:1646  */
+#line 1850 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 63:
-#line 291 "eqn.y" /* yacc.c:1646  */
+#line 291 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyval.col) = new column((yyvsp[0].b)); }
-#line 1859 "eqn.cpp" /* yacc.c:1646  */
+#line 1856 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 64:
-#line 293 "eqn.y" /* yacc.c:1646  */
+#line 293 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyvsp[-2].col)->append((yyvsp[0].b)); (yyval.col) = (yyvsp[-2].col); }
-#line 1865 "eqn.cpp" /* yacc.c:1646  */
+#line 1862 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 65:
-#line 298 "eqn.y" /* yacc.c:1646  */
+#line 298 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyval.col) = (yyvsp[-1].col); }
-#line 1871 "eqn.cpp" /* yacc.c:1646  */
+#line 1868 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 66:
-#line 300 "eqn.y" /* yacc.c:1646  */
+#line 300 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyvsp[-1].col)->set_space((yyvsp[-3].n)); (yyval.col) = (yyvsp[-1].col); }
-#line 1877 "eqn.cpp" /* yacc.c:1646  */
+#line 1874 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 67:
-#line 305 "eqn.y" /* yacc.c:1646  */
+#line 305 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyvsp[0].col)->set_alignment(CENTER_ALIGN); (yyval.col) = (yyvsp[0].col); }
-#line 1883 "eqn.cpp" /* yacc.c:1646  */
+#line 1880 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 68:
-#line 307 "eqn.y" /* yacc.c:1646  */
+#line 307 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyvsp[0].col)->set_alignment(LEFT_ALIGN); (yyval.col) = (yyvsp[0].col); }
-#line 1889 "eqn.cpp" /* yacc.c:1646  */
+#line 1886 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 69:
-#line 309 "eqn.y" /* yacc.c:1646  */
+#line 309 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyvsp[0].col)->set_alignment(RIGHT_ALIGN); (yyval.col) = (yyvsp[0].col); }
-#line 1895 "eqn.cpp" /* yacc.c:1646  */
+#line 1892 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 70:
-#line 311 "eqn.y" /* yacc.c:1646  */
+#line 311 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyvsp[0].col)->set_alignment(CENTER_ALIGN); (yyval.col) = (yyvsp[0].col); }
-#line 1901 "eqn.cpp" /* yacc.c:1646  */
+#line 1898 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 71:
-#line 315 "eqn.y" /* yacc.c:1646  */
+#line 315 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyval.str) = (yyvsp[0].str); }
-#line 1907 "eqn.cpp" /* yacc.c:1646  */
+#line 1904 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 72:
-#line 317 "eqn.y" /* yacc.c:1646  */
+#line 317 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyval.str) = (yyvsp[0].str); }
-#line 1913 "eqn.cpp" /* yacc.c:1646  */
+#line 1910 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 73:
-#line 322 "eqn.y" /* yacc.c:1646  */
+#line 322 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyval.str) = (yyvsp[0].str); }
-#line 1919 "eqn.cpp" /* yacc.c:1646  */
+#line 1916 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 74:
-#line 324 "eqn.y" /* yacc.c:1646  */
+#line 324 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyval.str) = strsave("{"); }
-#line 1925 "eqn.cpp" /* yacc.c:1646  */
+#line 1922 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
   case 75:
-#line 326 "eqn.y" /* yacc.c:1646  */
+#line 326 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645  */
     { (yyval.str) = strsave("}"); }
-#line 1931 "eqn.cpp" /* yacc.c:1646  */
+#line 1928 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
     break;
 
 
-#line 1935 "eqn.cpp" /* yacc.c:1646  */
+#line 1932 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645  */
       default: break;
     }
   /* User semantic actions sometimes alter yychar, and that requires
@@ -1956,14 +1953,13 @@ yyreduce:
   /* Now 'shift' the result of the reduction.  Determine what state
      that goes to, based on the state we popped back to and the rule
      number reduced by.  */
-
-  yyn = yyr1[yyn];
-
-  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
-  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
-    yystate = yytable[yystate];
-  else
-    yystate = yydefgoto[yyn - YYNTOKENS];
+  {
+    const int yylhs = yyr1[yyn] - YYNTOKENS;
+    const int yyi = yypgoto[yylhs] + *yyssp;
+    yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
+               ? yytable[yyi]
+               : yydefgoto[yylhs]);
+  }
 
   goto yynewstate;
 
@@ -2159,5 +2155,5 @@ yyreturn:
 #endif
   return yyresult;
 }
-#line 329 "eqn.y" /* yacc.c:1906  */
+#line 329 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1903  */
 
index ed2d420..0a506a0 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include "lib.h"
 
similarity index 88%
rename from src/preproc/eqn/eqn_tab.h
rename to src/preproc/eqn/eqn.hpp
index b4413de..32a32a5 100644 (file)
@@ -1,8 +1,8 @@
-/* A Bison parser, made by GNU Bison 3.0.2.  */
+/* A Bison parser, made by GNU Bison 3.2.  */
 
 /* Bison interface for Yacc-like parsers in C
 
-   Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
+   Copyright (C) 1984, 1989-1990, 2000-2015, 2018 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
    This special exception was added by the Free Software Foundation in
    version 2.2 of Bison.  */
 
-#ifndef YY_YY_Y_TAB_H_INCLUDED
-# define YY_YY_Y_TAB_H_INCLUDED
+/* Undocumented macros, especially those whose name start with YY_,
+   are private implementation details.  Do not rely on them.  */
+
+#ifndef YY_YY_SRC_PREPROC_EQN_EQN_HPP_INCLUDED
+# define YY_YY_SRC_PREPROC_EQN_EQN_HPP_INCLUDED
 /* Debug traces.  */
 #ifndef YYDEBUG
 # define YYDEBUG 0
@@ -167,10 +170,10 @@ extern int yydebug;
 
 /* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-typedef union YYSTYPE YYSTYPE;
+
 union YYSTYPE
 {
-#line 30 "eqn.y" /* yacc.c:1909  */
+#line 30 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1906  */
 
        char *str;
        box *b;
@@ -179,8 +182,10 @@ union YYSTYPE
        int n;
        column *col;
 
-#line 183 "y.tab.h" /* yacc.c:1909  */
+#line 186 "src/preproc/eqn/eqn.hpp" /* yacc.c:1906  */
 };
+
+typedef union YYSTYPE YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define YYSTYPE_IS_DECLARED 1
 #endif
@@ -190,4 +195,4 @@ extern YYSTYPE yylval;
 
 int yyparse (void);
 
-#endif /* !YY_YY_Y_TAB_H_INCLUDED  */
+#endif /* !YY_YY_SRC_PREPROC_EQN_EQN_HPP_INCLUDED  */
similarity index 96%
rename from src/preproc/eqn/eqn.y
rename to src/preproc/eqn/eqn.ypp
index 8dde432..fb318c3 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -14,7 +14,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 %{
 #include <stdio.h>
 #include <string.h>
@@ -97,8 +97,8 @@ void yyerror(const char *);
 %token GRFONT
 %token GBFONT
 
-/* The original eqn manual says that `left' is right associative. It's lying.
-Consider `left ( ~ left ( ~ right ) right )'. */
+/* The original eqn manual says that 'left' is right associative. It's lying.
+Consider 'left ( ~ left ( ~ right ) right )'. */
 
 %right LEFT
 %left RIGHT
index b6f15bd..e855f5d 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,10 +15,10 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include "eqn.h"
-#include "eqn_tab.h"
+#include "eqn.hpp"
 #include "stringclass.h"
 #include "ptable.h"
 
@@ -47,7 +47,7 @@ definition::definition() : is_macro(1), is_simple(0)
 definition::~definition()
 {
   if (is_macro)
-    a_delete contents;
+    free(contents);
 }
 
 declare_ptable(definition)
@@ -471,7 +471,7 @@ macro_input::macro_input(const char *str, input *x) : input(x)
 
 macro_input::~macro_input()
 {
-  a_delete s;
+  free(s);
 }
 
 int macro_input::get()
@@ -498,7 +498,7 @@ top_input::top_input(const char *str, const char *fn, int ln, input *x)
 
 top_input::~top_input()
 {
-  a_delete filename;
+  free(filename);
 }
 
 int top_input::get()
@@ -757,7 +757,7 @@ void interpolate_macro_with_args(const char *body)
          token_buffer +=  '\0';
          argv[argc] = strsave(token_buffer.contents());
        }
-       // for `foo()', argc = 0
+       // for 'foo()', argc = 0
        if (argc > 0 || c != ')' || i > 0)
          argc++;
        break;
@@ -850,15 +850,15 @@ int get_token(int lookup_flag = 0)
            quoted = 0;
            switch (c) {
            case EOF:
-             lex_error("`\\' ignored at end of equation");
+             lex_error("'\\' ignored at end of equation");
              done = 1;
              break;
            case '\n':
-             lex_error("`\\' ignored because followed by newline");
+             lex_error("'\\' ignored because followed by newline");
              done = 1;
              break;
            case '\t':
-             lex_error("`\\' ignored because followed by tab");
+             lex_error("'\\' ignored because followed by tab");
              done = 1;
              break;
            case '"':
@@ -932,7 +932,7 @@ void do_include()
   errno = 0;
   FILE *fp = fopen(filename, "r");
   if (fp == 0) {
-    lex_error("can't open included file `%1'", filename);
+    lex_error("can't open included file '%1'", filename);
     return;
   }
   current_input = new file_input(fp, filename, current_input);
@@ -963,7 +963,7 @@ void do_definition(int is_simple)
     macro_table.define(name, def);
   }
   else if (def->is_macro) {
-    a_delete def->contents;
+    free(def->contents);
   }
   get_delimited_text();
   token_buffer += '\0';
@@ -992,7 +992,7 @@ void do_gsize()
   }
   token_buffer += '\0';
   if (!set_gsize(token_buffer.contents()))
-    lex_error("invalid size `%1'", token_buffer.contents());
+    lex_error("invalid size '%1'", token_buffer.contents());
 }
 
 void do_gfont()
@@ -1039,7 +1039,7 @@ void do_space()
   char *ptr;
   long n = strtol(token_buffer.contents(), &ptr, 10);
   if (n == 0 && ptr == token_buffer.contents())
-    lex_error("bad argument `%1' to space command", token_buffer.contents());
+    lex_error("bad argument '%1' to space command", token_buffer.contents());
   else
     set_space(int(n));
 }
@@ -1071,7 +1071,7 @@ void do_delim()
     c = get_char();
   int d;
   if (c == EOF || (d = get_char()) == EOF)
-    lex_error("end of file while reading argument to `delim'");
+    lex_error("end of file while reading argument to 'delim'");
   else {
     if (c == 'o' && d == 'f' && peek_char() == 'f') {
       (void)get_char();
@@ -1125,7 +1125,7 @@ void do_set()
   token_buffer += '\0';
   int n;
   if (sscanf(&token_buffer[0], "%d", &n) != 1) {
-    lex_error("bad number `%1'", token_buffer.contents());
+    lex_error("bad number '%1'", token_buffer.contents());
     return;
   }
   set_param(param.contents(), n);
index 7b5ae3a..1efa03d 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include "eqn.h"
 #include "pbox.h"
index 9e6e359..849e9b8 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include "eqn.h"
 #include "pbox.h"
@@ -101,6 +101,7 @@ int list_box::compute_metrics(int style)
          || prevt == OPERATOR_TYPE
          || prevt == RELATION_TYPE
          || prevt == OPENING_TYPE
+         || prevt == SUPPRESS_TYPE
          || prevt == PUNCTUATION_TYPE)
        list.p[i]->spacing_type = ORDINARY_TYPE;
     }
index 57347f1..e3ed28a 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include "eqn.h"
 #include "stringclass.h"
@@ -25,6 +25,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. */
 #include "htmlhint.h"
 #include "pbox.h"
 #include "ctype.h"
+#include "lf.h"
 
 #define STARTUP_FILE "eqnrc"
 
@@ -54,7 +55,7 @@ int read_line(FILE *fp, string *p)
     if (!invalid_input_char(c))
       *p += char(c);
     else
-      error("invalid input character code `%1'", c);
+      error("invalid input character code '%1'", c);
     if (c == '\n')
       break;
   }
@@ -66,9 +67,12 @@ void do_file(FILE *fp, const char *filename)
 {
   string linebuf;
   string str;
+  string fn(filename);
+  fn += '\0';
+  normalize_for_lf(fn);
+  current_filename = fn.contents();
   if (output_format == troff)
-    printf(".lf 1 %s\n", filename);
-  current_filename = filename;
+    printf(".lf 1 %s\n", current_filename);
   current_lineno = 0;
   while (read_line(fp, &linebuf)) {
     if (linebuf.length() >= 4
@@ -148,7 +152,7 @@ static int inline_equation(FILE *fp, string &linebuf, string &str)
   inline_flag = 1;
   for (;;) {
     if (no_newline_in_delim_flag && strchr(start + 1, end_delim) == 0) {
-      error("missing `%1'", end_delim);
+      error("missing '%1'", end_delim);
       char *nl = strchr(start + 1, '\n');
       if (nl != 0)
        *nl = '\0';
@@ -170,7 +174,7 @@ static int inline_equation(FILE *fp, string &linebuf, string &str)
       }
       str += ptr;
       if (!read_line(fp, &linebuf))
-       fatal("unterminated `%1' at line %2, looking for `%3'",
+       fatal("unterminated '%1' at line %2, looking for '%3'",
              start_delim, start_lineno, end_delim);
       linebuf += '\0';
       ptr = &linebuf[0];
@@ -300,9 +304,9 @@ int main(int argc, char **argv)
       if (optarg[0] == '\0' || optarg[1] == '\0')
        error("-d requires two character argument");
       else if (invalid_input_char(optarg[0]))
-       error("bad delimiter `%1'", optarg[0]);
+       error("bad delimiter '%1'", optarg[0]);
       else if (invalid_input_char(optarg[1]))
-       error("bad delimiter `%1'", optarg[1]);
+       error("bad delimiter '%1'", optarg[1]);
       else {
        start_delim = optarg[0];
        end_delim = optarg[1];
@@ -330,7 +334,7 @@ int main(int argc, char **argv)
       break;
     case 's':
       if (!set_gsize(optarg))
-       error("invalid size `%1'", optarg);
+       error("invalid size '%1'", optarg);
       break;
     case 'p':
       {
@@ -338,7 +342,7 @@ int main(int argc, char **argv)
        if (sscanf(optarg, "%d", &n) == 1)
          set_script_reduction(n);
        else
-         error("bad size `%1'", optarg);
+         error("bad size '%1'", optarg);
       }
       break;
     case 'm':
@@ -347,14 +351,14 @@ int main(int argc, char **argv)
        if (sscanf(optarg, "%d", &n) == 1)
          set_minimum_size(n);
        else
-         error("bad size `%1'", optarg);
+         error("bad size '%1'", optarg);
       }
       break;
     case 'r':
       one_size_reduction_flag = 1;
       break;
     case 'D':
-      warning("-D option is obsolete: use `set draw_lines 1' instead");
+      warning("-D option is obsolete: use 'set draw_lines 1' instead");
       draw_flag = 1;
       break;
     case 'N':
@@ -373,15 +377,17 @@ int main(int argc, char **argv)
     }
   init_table(device);
   init_char_table();
+  printf(".if !dEQ .ds EQ\n"
+        ".if !dEN .ds EN\n");
   if (output_format == troff) {
     printf(".if !'\\*(.T'%s' "
-          ".if !'\\*(.T'html' "        // the html device uses `-Tps' to render
+          ".if !'\\*(.T'html' "        // the html device uses '-Tps' to render
                                  // equations as images
-          ".tm warning: %s should have been given a `-T\\*(.T' option\n",
+          ".tm warning: %s should have been given a '-T\\*(.T' option\n",
           device, program_name);
     printf(".if '\\*(.T'html' "
           ".if !'%s'ps' "
-          ".tm warning: %s should have been given a `-Tps' option\n",
+          ".tm warning: %s should have been given a '-Tps' option\n",
           device, program_name);
     printf(".if '\\*(.T'html' "
           ".if !'%s'ps' "
@@ -394,7 +400,7 @@ int main(int argc, char **argv)
     if (fp) {
       do_file(fp, path);
       fclose(fp);
-      a_delete path;
+      free(path);
     }
   }
   if (optind >= argc)
@@ -407,7 +413,7 @@ int main(int argc, char **argv)
        errno = 0;
        FILE *fp = fopen(argv[i], "r");
        if (!fp)
-         fatal("can't open `%1': %2", argv[i], strerror(errno));
+         fatal("can't open '%1': %2", argv[i], strerror(errno));
        else {
          do_file(fp, argv[i]);
          fclose(fp);
index 5eea1c1..f8ccf75 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include "eqn.h"
 #include "pbox.h"
diff --git a/src/preproc/eqn/neqn.1.man b/src/preproc/eqn/neqn.1.man
new file mode 100644 (file)
index 0000000..d11881f
--- /dev/null
@@ -0,0 +1,66 @@
+.TH @G@NEQN @MAN1EXT@ "@MDATE@" "groff @VERSION@"
+.SH NAME
+@g@neqn \- format equations for ASCII output
+.
+.
+.\" ====================================================================
+.\" Legal Terms
+.\" ====================================================================
+.\"
+.\" Copyright (C) 2001-2018 Free Software Foundation, Inc.
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of
+.\" this manual under the conditions for verbatim copying, provided that
+.\" the entire resulting derived work is distributed under the terms of
+.\" a permission notice identical to this one.
+.\"
+.\" Permission is granted to copy and distribute translations of this
+.\" manual into another language, under the above conditions for
+.\" modified versions, except that this permission notice may be
+.\" included in translations approved by the Free Software Foundation
+.\" instead of in the original English.
+.
+.
+.\" ====================================================================
+.SH SYNOPSIS
+.\" ====================================================================
+.
+.SY @g@neqn
+.RI [ @g@eqn-options ]
+.YS
+.
+.
+.\" ====================================================================
+.SH DESCRIPTION
+.\" ====================================================================
+.
+.I @g@neqn
+invokes the
+.IR @g@eqn (@MAN1EXT@)
+command with the
+.B ascii
+output device.
+.
+.
+.LP
+Note that
+.I @g@eqn
+does not support low-resolution, typewriter-like devices (although it
+may work adequately for very simple input).
+.
+.
+.\" ====================================================================
+.SH "SEE ALSO"
+.\" ====================================================================
+.
+.IR @g@eqn (@MAN1EXT@)
+.
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" End:
+.\" vim: set filetype=groff:
diff --git a/src/preproc/eqn/neqn.man b/src/preproc/eqn/neqn.man
deleted file mode 100644 (file)
index 96b809c..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-.TH @G@NEQN @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
-.SH NAME
-@g@neqn \- format equations for ascii output
-.
-.
-.\" license
-.de co
-Copyright \[co] 2001-2014 Free Software Foundation, Inc.
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the
-entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
-Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be included in
-translations approved by the Free Software Foundation instead of in
-the original English.
-..
-.
-.\" --------------------------------------------------------------------
-.SH SYNOPSIS
-.\" --------------------------------------------------------------------
-.
-.B @g@neqn
-[@g@eqn options]
-.
-.
-.\" --------------------------------------------------------------------
-.SH DESCRIPTION
-.\" --------------------------------------------------------------------
-.
-The
-.B @g@neqn
-program is actually just a shell script which invokes the
-.BR @g@eqn (@MAN1EXT@)
-command with the
-.B ascii
-output device.
-.
-.
-.LP
-Note that
-.B @g@eqn
-does not support low-resolution, typewriter-like devices (although it
-may work adequately for very simple input).
-.
-.
-.\" --------------------------------------------------------------------
-.SH "SEE ALSO"
-.\" --------------------------------------------------------------------
-.
-.BR @g@eqn (@MAN1EXT@)
-.
-.
-.\" --------------------------------------------------------------------
-.SH COPYING
-.\" --------------------------------------------------------------------
-.
-.co
-.
-.
-.\" Local Variables:
-.\" mode: nroff
-.\" End:
index b671ebd..5ac4fbb 100644 (file)
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 2014 Free Software Foundation, Inc.
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
 #
 # This file is part of groff.
 # 
index 7e00b28..8db993f 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,9 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
+
+#include <stdlib.h>
 
 #include "eqn.h"
 #include "pbox.h"
@@ -464,7 +466,7 @@ void size_box::output()
 
 size_box::~size_box()
 {
-  a_delete size;
+  free(size);
 }
 
 void size_box::debug_print()
@@ -481,7 +483,7 @@ font_box::font_box(char *s, box *pp) : pointer_box(pp), f(s)
 
 font_box::~font_box()
 {
-  a_delete f;
+  free(f);
 }
 
 int font_box::compute_metrics(int style)
index 339e453..554ca3e 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include "eqn.h"
 #include "pbox.h"
@@ -151,7 +151,7 @@ void over_box::output()
     printf("\\h'\\n[" WIDTH_FORMAT "]u-\\n[" WIDTH_FORMAT "]u/2u'",
           uid, den->uid);
 
-    // print the the denominator
+    // print the denominator
     den->output();
 
   #ifdef USE_Z
index f1a4f09..c3b2497 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 extern int fat_offset;
 
index 07885d0..1d3f592 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 // piles and matrices
 
 #include "eqn.h"
index 7dee3df..acce790 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include "eqn.h"
 #include "pbox.h"
@@ -36,8 +36,8 @@ public:
 };
 
 /* The idea is that the script should attach to the rightmost box
-of a list. For example, given `2x sup 3', the superscript should
-attach to `x' rather than `2x'. */
+of a list. For example, given '2x sup 3', the superscript should
+attach to 'x' rather than '2x'. */
 
 box *make_script_box(box *nuc, box *sub, box *sup)
 {
index 14a8ffb..5484eca 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include "eqn.h"
 #include "pbox.h"
index 8a2a304..f640008 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include "eqn.h"
 #include "pbox.h"
index b1b613f..f3d06f9 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,9 +15,10 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include <ctype.h>
+#include <stdlib.h>
 #include "eqn.h"
 #include "pbox.h"
 #include "ptable.h"
@@ -51,7 +52,7 @@ struct map entity_table[] = {
   {"*I", "I"},
   {"*k", "&kappa;"},   // ISOgrk3
   {"*K", "K;"},
-  {"*l", "&lamda;"},   // ISOgrk3
+  {"*l", "&lambda;"},  // ISOgrk3
   {"*L", "&Lambda;"},  // ISOgrk3
   {"*m", "&mu;"},      // ISOgrk3
   {"*M", "M"},
@@ -549,10 +550,10 @@ void box::set_spacing_type(char *type)
 {
   int t = lookup_spacing_type(type);
   if (t < 0)
-    error("unrecognised type `%1'", type);
+    error("unrecognised type '%1'", type);
   else
     spacing_type = t;
-  a_delete type;
+  free(type);
 }
 
 char_box::char_box(unsigned char cc)
@@ -647,7 +648,7 @@ special_char_box::special_char_box(const char *t)
 
 special_char_box::~special_char_box()
 {
-  a_delete s;
+  free(s);
 }
 
 void special_char_box::output()
@@ -699,7 +700,7 @@ void set_char_type(const char *type, char *ch)
   int st = lookup_spacing_type(type);
   int ft = lookup_font_type(type);
   if (st < 0 && ft < 0) {
-    error("bad character type `%1'", type);
+    error("bad character type '%1'", type);
     a_delete ch;
     return;
   }
@@ -708,7 +709,7 @@ void set_char_type(const char *type, char *ch)
   delete b;
 }
 
-/* We give primes special treatment so that in ``x' sub 2'', the ``2''
+/* We give primes special treatment so that in "x' sub 2", the "2"
 will be tucked under the prime */
 
 class prime_box : public pointer_box {
@@ -941,7 +942,7 @@ box *split_text(char *text)
        fb = b;
     }
   }
-  a_delete text;
+  free(text);
   if (lb != 0)
     return lb;
   else if (fb != 0)
diff --git a/src/preproc/grn/Makefile.sub b/src/preproc/grn/Makefile.sub
deleted file mode 100644 (file)
index 36734e0..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-# Makefile.sub for `preproc grn
-#
-# File position: <groff-source>/src/preproc/grn/Makefile.sub
-#
-# Copyright (C) 2014  Free Software Foundation, Inc.
-#
-# This file is part of `font utf8' which is part of `groff'.
-#
-# `groff' is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 2 of the License, or
-# (at your option) any later version.
-#
-# `groff' 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
-# <http://www.gnu.org/licenses/gpl-2.0.html>.
-#
-########################################################################
-
-PROG=grn$(EXEEXT)
-MAN1=grn.n
-MLIB=$(LIBM)
-XLIBS=$(LIBGROFF) $(LIBGNU)
-OBJS=\
-  hdb.$(OBJEXT) \
-  hpoint.$(OBJEXT) \
-  hgraph.$(OBJEXT) \
-  main.$(OBJEXT)
-CCSRCS=\
-  $(srcdir)/hdb.cpp \
-  $(srcdir)/hpoint.cpp \
-  $(srcdir)/hgraph.cpp \
-  $(srcdir)/main.cpp
-HDRS=\
-  $(srcdir)/gprint.h
-NAMEPREFIX=$(g)
-
-########################################################################
-# Emacs settings
-########################################################################
-#
-# Local Variables:
-# mode: makefile
-# End:
index 124103b..0e486bf 100644 (file)
@@ -48,16 +48,16 @@ better into the groff package.
       Using groff's default values instead of DEVDIR, DEFAULTDEV, PRINTER,
       TYPESETTER, and GREMLIB.
 
-      `res' is now an integer.
+      'res' is now an integer.
 
-      Added `-C' command flag (for compatibility mode) as with other
+      Added '-C' command flag (for compatibility mode) as with other
       preprocessors.
 
-      Added `-F' and `-v' option (similar to troff).
+      Added '-F' and '-v' option (similar to troff).
 
-      Renamed `-L' option to `-M' for consistence.
+      Renamed '-L' option to '-M' for consistence.
 
-      Removed `-P' option.
+      Removed '-P' option.
 
       Using font::load_desc() for scanning DESC files.
 
similarity index 74%
rename from src/preproc/grn/grn.man
rename to src/preproc/grn/grn.1.man
index f7751c9..8464711 100644 (file)
@@ -1,89 +1,53 @@
 '\" t
-.TH @G@GRN @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
+.TH @G@GRN @MAN1EXT@ "@MDATE@" "groff @VERSION@"
 .SH NAME
 @g@grn \- groff preprocessor for gremlin files
 .
 .
-.\" --------------------------------------------------------------------
-.\" Legalese
-.\" --------------------------------------------------------------------
-.
-.\" license
-.de co
-Copyright \[co] 2000-2014 Free Software Foundation, Inc.
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the
-entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
-Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be included in
-translations approved by the Free Software Foundation instead of in
-the original English.
-..
-.
-.\" authors
-.de au
-David Slattengren and Barry Roitblat wrote the original Berkeley
-.IR @g@grn .
-.
-.PP
-Daniel Senderowicz and Werner Lemberg modified it for
-.IR groff .
-..
-.
-.\" --------------------------------------------------------------------
-.\" Definitons
-.\" --------------------------------------------------------------------
-.
+.\" ====================================================================
+.\" Legal Terms
+.\" ====================================================================
+.\"
+.\" Copyright (C) 2000-2018 Free Software Foundation, Inc.
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of
+.\" this manual under the conditions for verbatim copying, provided that
+.\" the entire resulting derived work is distributed under the terms of
+.\" a permission notice identical to this one.
+.\"
+.\" Permission is granted to copy and distribute translations of this
+.\" manual into another language, under the above conditions for
+.\" modified versions, except that this permission notice may be
+.\" included in translations approved by the Free Software Foundation
+.\" instead of in the original English.
+.
+.
+.\" Save and disable compatibility mode (for, e.g., Solaris 10/11).
 .do nr grn_C \n[.C]
 .cp 0
 .
-.de TQ
-.  br
-.  ns
-.  TP \\$1
-..
 .
-.\" Like TP, but if specified indent is more than half
-.\" the current line-length - indent, use the default indent.
-.de Tp
-.  ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP
-.  el .TP "\\$1"
-..
-.
-.
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH SYNOPSIS
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
-.BR @g@grn
-[
-.B \-Cv
-]
-[
-.BI \-T dev
-]
-[
-.BI \-M dir
-]
-[
-.BI \-F dir
-]
-[
-.IR file\.\.\.\&
-]
+.SY @g@grn
+.OP \-Cv
+.OP \-T dev
+.OP \-M dir
+.OP \-F dir
+.RI [ file
+\&.\|.\|.\&]
+.YS
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH DESCRIPTION
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .I @g@grn
 is a preprocessor for including
@@ -141,8 +105,12 @@ and
 .BR .GF .
 .
 .
-.PP
-The following command-line options are understood:
+.\" ====================================================================
+.SH OPTIONS
+.\" ====================================================================
+.
+Whitespace is permitted between a command-line option and its argument.
+.
 .
 .TP
 .BI \-T dev
@@ -164,25 +132,25 @@ files.
 .
 The default path is (in that order) the current directory, the home
 directory,
-.BR @SYSTEMMACRODIR@ ,
-.BR @LOCALMACRODIR@ ,
+.IR @SYSTEMMACRODIR@ ,
+.IR @LOCALMACRODIR@ ,
 and
-.BR @MACRODIR@ .
+.IR @MACRODIR@ .
 .
 .TP
 .BI \-F dir
 Search
 .I dir
 for subdirectories
-.BI dev name
+.IR dev name
 .RI ( name
 is the name of the device) for the
-.B DESC
+.I DESC
 file before the default font directories
-.BR @LOCALFONTDIR@ ,
-.BR @FONTDIR@ ,
+.IR @LOCALFONTDIR@ ,
+.IR @FONTDIR@ ,
 and
-.BR @LEGACYFONTDIR@ .
+.IR @LEGACYFONTDIR@ .
 .
 .TP
 .B \-C
@@ -200,7 +168,7 @@ even when followed by a character other than space or newline.
 .\"polygons) are printed.
 .\"The second time, the outline is printed as a series of line segments.
 .\"This way, postprocessors that overwrite rather than merge picture elements
-.\"(such as Postscript) can still have text and graphics on a shaded
+.\"(such as PostScript) can still have text and graphics on a shaded
 .\"background.
 .
 .TP
@@ -208,14 +176,9 @@ even when followed by a character other than space or newline.
 Print the version number.
 .
 .
-.PP
-It is possible to have whitespace between a command line option and its
-parameter.
-.
-.
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "GRN COMMANDS"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 Each input line between
 .B .GS
@@ -231,7 +194,7 @@ Commands may be upper or lower case and abbreviated down to one character.
 .
 .
 .PP
-Commands that affect a picture\[aq]s environment (those listed before
+Commands that affect a picture's environment (those listed before
 .BR default ,
 see below) are only in effect for the current picture:
 .
@@ -249,7 +212,7 @@ The commands are as follows:
 .BI 4\  N
 .
 Set
-.IR gremlin \[aq]s
+.IR gremlin 's
 text size number 1 (2, 3, or 4) to
 .I N
 points.
@@ -265,7 +228,7 @@ The default is 12 (16, 24, and 36, respectively).
 .TQ
 .BI special\  f
 Set the roman (italics, bold, or special) font to
-.IR @g@troff \[aq]s
+.IR @g@troff 's
 font
 .I f
 (either a name or number).
@@ -277,7 +240,7 @@ The default is R (I, B, and S, respectively).
 .TQ
 .BI stipple\  f
 Set the stipple font to
-.IR @g@troff \[aq]s
+.IR @g@troff 's
 stipple font
 .I f
 (name or number).
@@ -316,7 +279,7 @@ may be abbreviated down to \[oq]sc\[cq].
 .BI thick\  N
 .
 Set the thickness of
-.IR gremlin \[aq]s
+.IR gremlin 's
 narrow (medium and thick, respectively) lines to
 .I N
 times 0.15pt (this value can be changed at compile time).
@@ -344,7 +307,7 @@ regardless of any scaling factors in the picture.
 Setting
 .B pointscale
 will cause the point sizes to scale with the picture (within
-.IR @g@troff \[aq]s
+.IR @g@troff 's
 limitations, of course).
 .
 An operand of anything but
@@ -406,19 +369,19 @@ commands are given, the second one overrides the first.
 .
 If
 .I name
-doesn\[aq]t exist, an error message is reported and processing
+doesn't exist, an error message is reported and processing
 continues from the
 .B .GE
 line.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "NOTES ABOUT GROFF"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 Since
 .I @g@grn
-is a preprocessor, it doesn\[aq]t know about current indents, point
+is a preprocessor, it doesn't know about current indents, point
 sizes, margins, number registers, etc.  Consequently, no
 .I @g@troff
 input can be placed between the
@@ -465,7 +428,7 @@ should always be run last.
 .
 .
 .PP
-A picture is considered an entity, but that doesn\[aq]t stop
+A picture is considered an entity, but that doesn't stop
 .I @g@troff
 from trying to break it up if it falls off the end of a page.
 .
@@ -476,7 +439,7 @@ proper placement.
 .PP
 .I @g@grn
 uses
-.IR @g@troff \[aq]s
+.IR @g@troff 's
 number registers
 .B g1
 through
@@ -492,9 +455,9 @@ figure (in device units) before entering the
 request (this is for those who want to rewrite these macros).
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "GREMLIN FILE FORMAT"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 There exist two distinct
 .I gremlin
@@ -522,7 +485,7 @@ correctly by either version of
 or
 .IR @g@grn .
 .
-The other difference to the
+The other difference from
 .IR SUN / X11
 format is the use of names for picture objects (e.g., POLYGON, CURVE)
 instead of numbers.
@@ -597,7 +560,7 @@ and
 are floating point values giving a positioning point to be used when
 this file is read into another file.
 .
-The stuff on this line really isn\[aq]t all that important; a value of
+The stuff on this line really isn't all that important; a value of
 \[lq]1 0.00 0.00\[rq] is suggested.
 .
 .IP \(bu
@@ -610,9 +573,9 @@ After the last element specification is a line containing the string
 Lines longer than 127 characters are chopped to this limit.
 .
 .
-.\" --------------------------------------------------------------------
-.SH ELEMENT SPECIFICATIONS
-.\" --------------------------------------------------------------------
+.\" ====================================================================
+.SH "ELEMENT SPECIFICATIONS"
+.\" ====================================================================
 .
 .IP \(bu
 The first line of each element contains a single decimal number giving
@@ -698,7 +661,7 @@ ncw(0.1i)l.
 4 \(mi@@special (S font in groff)
 .TE
 .sp
-If you\[aq]re using
+If you're using
 .I @g@grn
 to run your pictures through
 .IR groff ,
@@ -734,9 +697,9 @@ For arcs, curves, and vectors, this line of the element contains the
 string \[lq]0\[rq].
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "NOTES ON COORDINATES"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .I gremlin
 was designed for
@@ -751,22 +714,22 @@ to 483.
 For horizontal pictures, x-values range from 0 to 511 and y-values
 range from 0 to 367.
 .
-Although you needn\[aq]t absolutely stick to this range, you\[aq]\ll
+Although you needn't absolutely stick to this range, you'll
 get best results if you at least stay in this vicinity.
 .
 Also, point lists are terminated by a point of (\-1, \-1), so you
 shouldn't ever use negative coordinates.
 .
 .I gremlin
-writes out coordinates using format \[lq]%f1.2\[rq]; it\[aq]s probably
+writes out coordinates using format \[lq]%f1.2\[rq]; it's probably
 a good idea to use the same format if you want to modify the
 .I @g@grn
 code.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "NOTES ON SUN/X11 COORDINATES"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 There is no longer a restriction on the range of coordinates used to
 create objects in the
@@ -780,19 +743,29 @@ cause problems if displayed on the
 .IR AED .
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH FILES
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
-.Tp \w'@FONTDIR@/devname/DESC'u+3n
-.BI @FONTDIR@/dev name /DESC
+.TP
+.IR @FONTDIR@/dev name /DESC
 Device description file for device
 .IR name .
 .
 .
-.\" --------------------------------------------------------------------
-.SH SEE ALSO
-.\" --------------------------------------------------------------------
+.\" ====================================================================
+.SH AUTHORS
+.\" ====================================================================
+David Slattengren and Barry Roitblat wrote the original Berkeley
+.IR grn .
+.
+Daniel Senderowicz and Werner Lemberg modified it for
+.IR groff .
+.
+.
+.\" ====================================================================
+.SH "SEE ALSO"
+.\" ====================================================================
 .
 .BR gremlin (1),
 .BR groff (@MAN1EXT@),
@@ -800,18 +773,11 @@ Device description file for device
 .BR ideal (1)
 .
 .
-.\" --------------------------------------------------------------------
-.SH COPYING
-.\" --------------------------------------------------------------------
-.co
-.\" --------------------------------------------------------------------
-.SH AUTHORS
-.\" --------------------------------------------------------------------
-.au
-.
+.\" Restore compatibility mode (for, e.g., Solaris 10/11).
 .cp \n[grn_C]
 .
 .
 .\" Local Variables:
 .\" mode: nroff
 .\" End:
+.\" vim: set filetype=groff:
diff --git a/src/preproc/grn/grn.am b/src/preproc/grn/grn.am
new file mode 100644 (file)
index 0000000..c3449f1
--- /dev/null
@@ -0,0 +1,37 @@
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Latest update: 22 Aug 2015
+#
+# This file is part of groff.
+#
+# groff 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.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+
+prefixexecbin_PROGRAMS += grn
+grn_SOURCES = \
+  src/preproc/grn/hdb.cpp \
+  src/preproc/grn/hpoint.cpp \
+  src/preproc/grn/hgraph.cpp \
+  src/preproc/grn/main.cpp \
+  src/preproc/grn/gprint.h
+src/preproc/grn/main.$(OBJEXT): defs.h
+grn_LDADD = libgroff.a lib/libgnu.a $(LIBM)
+PREFIXMAN1 += src/preproc/grn/grn.1
+EXTRA_DIST += src/preproc/grn/README src/preproc/grn/grn.1.man
+
+
+########################################################################
+### Emacs settings
+# Local Variables:
+# mode: makefile-automake
+# End:
index 408609a..c61e099 100644 (file)
@@ -6,6 +6,10 @@
  * gremlin picture editor.
  */
 
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
 #include <stdlib.h>
 #include "gprint.h"
 #include <string.h>
@@ -94,7 +98,7 @@ DBRead(register FILE *file)
   (void) fscanf(file, "%" MAXSTRING_S "s%*[^\n]\n", string);
   if (strcmp(string, "gremlinfile")) {
     if (strcmp(string, "sungremlinfile")) {
-      error("`%1' is not a gremlin file", gremlinfile);
+      error("'%1' is not a gremlin file", gremlinfile);
       return (elist);
     }
     SUNFILE = TRUE;
@@ -109,7 +113,7 @@ DBRead(register FILE *file)
     /* I changed the scanf format because the element */
     /* can have two words (e.g. CURVE SPLINE)         */
     if (fscanf(file, "\n%" MAXSTRING_S "[^\n]%*[^\n]\n", string) == EOF) {
-      error("`%1', error in file format", gremlinfile);
+      error("'%1', error in file format", gremlinfile);
       return (elist);
     }
 
@@ -241,6 +245,7 @@ DBGetType(register char *s)
       return (CENTRIGHT);
     default:
       fatal("unknown element type");
+      // fatal() does not return
     }
   case 'B':
     switch (s[3]) {
@@ -252,6 +257,7 @@ DBGetType(register char *s)
       return (BOTRIGHT);
     default:
       fatal("unknown element type");
+      // fatal() does not return
     }
   case 'T':
     switch (s[3]) {
@@ -263,6 +269,7 @@ DBGetType(register char *s)
       return (TOPRIGHT);
     default:
       fatal("unknown element type");
+      // fatal() does not return
     }
   default:
     fatal("unknown element type");
index 0120895..dbc0086 100644 (file)
@@ -381,7 +381,7 @@ HGSetFont(int font,
  |             style of subsequent lines.  Does nothing if no change is
  |              needed.
  |
- | Side Efct:  Sets `linmode' and `linethicknes'.
+ | Side Efct:  Sets 'linmode' and 'linethicknes'.
  *----------------------------------------------------------------------------*/
 
 void
@@ -409,9 +409,9 @@ HGSetBrush(int mode)
  | Routine:    deltax (x_destination)
  |
  | Results:    Scales and outputs a number for delta x (with a leading
- |             space) given `lastx' and x_destination.
+ |             space) given 'lastx' and x_destination.
  |
- | Side Efct:  Resets `lastx' to x_destination.
+ | Side Efct:  Resets 'lastx' to x_destination.
  *----------------------------------------------------------------------------*/
 
 void
@@ -428,10 +428,10 @@ deltax(double x)
  | Routine:    deltay (y_destination)
  |
  | Results:    Scales and outputs a number for delta y (with a leading
- |             space) given `lastyline' and y_destination.
+ |             space) given 'lastyline' and y_destination.
  |
- | Side Efct:  Resets `lastyline' to y_destination.  Since `line' vertical
- |             motions don't affect `page' ones, `lasty' isn't updated.
+ | Side Efct:  Resets 'lastyline' to y_destination.  Since 'line' vertical
+ |             motions don't affect 'page' ones, 'lasty' isn't updated.
  *----------------------------------------------------------------------------*/
 
 void
@@ -502,10 +502,10 @@ tmove(POINT * ptr)
 /*----------------------------------------------------------------------------*
  | Routine:    cr ( )
  |
- | Results:    Ends off an input line.  `.sp -1' is also added to counteract
+ | Results:    Ends off an input line.  '.sp -1' is also added to counteract
  |             the vertical move done at the end of text lines.
  |
- | Side Efct:  Sets `lastx' to `xleft' for troff's return to left margin.
+ | Side Efct:  Sets 'lastx' to 'xleft' for troff's return to left margin.
  *----------------------------------------------------------------------------*/
 
 void
@@ -567,7 +567,7 @@ drawwig(POINT * ptr,
  | Routine:    HGArc (xcenter, ycenter, xstart, ystart, angle)
  |
  | Results:    This routine plots an arc centered about (cx, cy) counter
- |             clockwise starting from the point (px, py) through `angle'
+ |             clockwise starting from the point (px, py) through 'angle'
  |             degrees.  If angle is 0, a full circle is drawn.  It does so
  |             by creating a draw-path around the arc whose density of
  |             points depends on the size of the arc.
@@ -628,7 +628,7 @@ HGArc(register int cx,
  | Routine:    picurve (xpoints, ypoints, num_of_points)
  |
  | Results:    Draws a curve delimited by (not through) the line segments
- |             traced by (xpoints, ypoints) point list.  This is the `Pic'
+ |             traced by (xpoints, ypoints) point list.  This is the 'Pic'
  |             style curve.
  *----------------------------------------------------------------------------*/
 
@@ -668,7 +668,7 @@ picurve(register int *x,
     nseg = (int) groff_hypot((double) xp, (double) yp);
     xp = x[1] - x[2];
     yp = y[1] - y[2];
-                               /* `nseg' is the number of line    */
+                               /* 'nseg' is the number of line    */
                                /* segments that will be drawn for */
                                /* each curve segment.             */
     nseg = (int) ((double) (nseg + (int) groff_hypot((double) xp, (double) yp)) /
@@ -697,7 +697,7 @@ picurve(register int *x,
  |
  | Results:    This routine generates a smooth curve through a set of
  |             points.  The method used is the parametric spline curve on
- |             unit knot mesh described in `Spline Curve Techniques' by
+ |             unit knot mesh described in 'Spline Curve Techniques' by
  |             Patrick Baudelaire, Robert Flegal, and Robert Sproull --
  |             Xerox Parc.
  *----------------------------------------------------------------------------*/
@@ -801,9 +801,9 @@ Paramaterize(int x[],
  | Routine:    PeriodicSpline (h, z, dz, d2z, d3z, npoints)
  |
  | Results:    This routine solves for the cubic polynomial to fit a spline
- |             curve to the the points specified by the list of values. 
+ |             curve to the points specified by the list of values.
  |             The Curve generated is periodic.  The algorithms for this
- |             curve are from the `Spline Curve Techniques' paper cited
+ |             curve are from the 'Spline Curve Techniques' paper cited
  |             above.
  *----------------------------------------------------------------------------*/
 
@@ -874,8 +874,8 @@ PeriodicSpline(double h[],  /* paramaterization  */
  | Routine:    NaturalEndSpline (h, z, dz, d2z, d3z, npoints)
  |
  | Results:    This routine solves for the cubic polynomial to fit a spline
- |             curve the the points specified by the list of values.  The
- |             alogrithms for this curve are from the `Spline Curve
+ |             curve the points specified by the list of values.  The
+ |             algorithms for this curve are from the 'Spline Curve
  |             Techniques' paper cited above.
  *----------------------------------------------------------------------------*/
 
index fa24dca..b581cb0 100644 (file)
@@ -5,6 +5,10 @@
  * for the gremlin picture editor.
  */
 
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
 #include <stdlib.h>
 #include "gprint.h"
 
index 55fc27a..833fd60 100644 (file)
@@ -9,14 +9,14 @@
  * processing gremlin files into troff input.  The program watches input go
  * by to standard output, only interpreting things between .GS and .GE
  * lines.  Default values (font, size, scale, thickness) may be overridden
- * with a `default' command and are further overridden by commands in the
+ * with a 'default' command and are further overridden by commands in the
  * input.
  *
- * Inside the GS and GE, commands are accepted to reconfigure the picture. 
+ * Inside the GS and GE, commands are accepted to reconfigure the picture.
  * At most one command may reside on each line, and each command is followed
  * by a parameter separated by white space.  The commands are as follows,
- * and may be abbreviated down to one character (with exception of `scale'
- * and `stipple' down to "sc" and "st") and may be upper or lower case.
+ * and may be abbreviated down to one character (with exception of 'scale'
+ * and 'stipple' down to "sc" and "st") and may be upper or lower case.
  *
  *                        default  -  Make all settings in the current
  *                                    .GS/.GE the global defaults.  Height,
  *                                    font (one or two characters).
  *                     stipple, l  -  Use a stipple font for polygons.  Arg
  *                                    is troff font name.  No Default.  Can
- *                                    use only one stipple font per picture. 
+ *                                    use only one stipple font per picture.
  *                                    (See below for stipple font index.)
  *                       scale, x  -  Scale is IN ADDITION to the global
  *                                    scale factor from the default.
  *                     pointscale  -  Turn on scaling point sizes to match
- *                                    `scale' commands.  (Optional operand
- *                                    `off' to turn it off.)
+ *                                    'scale' commands.  (Optional operand
+ *                                    'off' to turn it off.)
  *          narrow, medium, thick  -  Set widths of lines.
  *                           file  -  Set the file name to read the gremlin
  *                                    picture from.  If the file isn't in
  *                                    scaling factor that is in effect, and
  *                                    forces the picture to fit into either
  *                                    the height or width specified,
- *                                    whichever makes the picture smaller. 
+ *                                    whichever makes the picture smaller.
  *                                    The operand for these two commands is
  *                                    a floating-point number in units of
  *                                    inches.
  *            l<nn> (integer <nn>) -  Set association between stipple <nn>
- *                                    and a stipple `character'.  <nn> must
+ *                                    and a stipple 'character'.  <nn> must
  *                                    be in the range 0 to NSTIPPLES (16)
  *                                    inclusive.  The integer operand is an
- *                                    index in the stipple font selected. 
+ *                                    index in the stipple font selected.
  *                                    Valid cf (cifplot) indices are 1-32
  *                                    (although 24 is not defined), valid ug
  *                                    (unigrafix) indices are 1-14, and
@@ -100,19 +100,19 @@ extern POINT *PTMakePoint(double x, double y, POINT **pplist);
 /* #define DEFSTIPPLE    "gs" */
 #define DEFSTIPPLE     "cf"
 /*
- * This grn implementation emits `.st' requests to control stipple effects,
+ * This grn implementation emits '.st' requests to control stipple effects,
  * but groff does not (currently) support any such request.
  *
  * This hack disables the emission of such requests, without destroying the
  * infrastructure necessary to support the feature in the future; to enable
- * the emission of `.st' requests, at a future date when groff can support
+ * the emission of '.st' requests, at a future date when groff can support
  * them, simply rewrite the following #define as:
  *
  *   #define USE_ST_REQUEST  stipple
  *
- * with accompanying comment: ``emit `.st' requests as required''.
+ * with accompanying comment: "emit '.st' requests as required".
  */
-#define USE_ST_REQUEST  0      /* never emit `.st' requests */
+#define USE_ST_REQUEST  0      /* never emit '.st' requests */
 
 #define MAXINLINE      100     /* input line length */
 
@@ -138,7 +138,7 @@ int lastyline;                      /* A line's vertical position is NOT the  */
 
 /* These are the default fonts, sizes, line styles, */
 /* and thicknesses.  They can be modified from a    */
-/* `default' command and are reset each time the    */
+/* 'default' command and are reset each time the    */
 /* start of a picture (.GS) is found.               */
 
 const char *deffont[] =
@@ -221,9 +221,9 @@ int linenum = 0;            /* line number of input file */
 char inputline[MAXINLINE];     /* spot to filter through the file */
 char *c1 = inputline;          /* c1, c2, and c3 will be used to */
 char *c2 = inputline + 1;      /* hunt for lines that begin with */
-char *c3 = inputline + 2;      /* `.GS' by looking individually */
+char *c3 = inputline + 2;      /* '.GS' by looking individually */
 char *c4 = inputline + 3;      /* needed for compatibility mode */
-char GScommand[MAXINLINE];     /* put user's `.GS' command line here */
+char GScommand[MAXINLINE];     /* put user's '.GS' command line here */
 char gremlinfile[MAXINLINE];   /* filename to use for a picture */
 int SUNFILE = FALSE;           /* TRUE if SUN gremlin file */
 int compatibility_flag = FALSE;        /* TRUE if in compatibility mode */
@@ -272,8 +272,8 @@ add_file(char **file,
  | Routine:    main (argument_count, argument_pointer)
  |
  | Results:    Parses the command line, accumulating input file names, then
- |             reads the inputs, passing it directly to output until a `.GS'
- |             line is read.  Main then passes control to `conv' to do the
+ |             reads the inputs, passing it directly to output until a '.GS'
+ |             line is read.  Main then passes control to 'conv' to do the
  |             gremlin file conversions.
  *----------------------------------------------------------------------------*/
 
@@ -379,7 +379,7 @@ main(int argc,
  | Routine:    char  * operand (& argc, & argv)
  |
  | Results:    Returns address of the operand given with a command-line
- |             option.  It uses either `-Xoperand' or `-X operand', whichever
+ |             option.  It uses either '-Xoperand' or '-X operand', whichever
  |             is present.  The program is terminated if no option is
  |             present.
  |
@@ -403,7 +403,7 @@ operand(int *argcp,
 /*----------------------------------------------------------------------------*
  | Routine:    getres ()
  |
- | Results:    Sets `res' to the resolution of the output device.
+ | Results:    Sets 'res' to the resolution of the output device.
  *----------------------------------------------------------------------------*/
 
 void
@@ -435,12 +435,12 @@ getres()
 /*----------------------------------------------------------------------------*
  | Routine:    int  doinput (file_pointer)
  |
- | Results:    A line of input is read into `inputline'.
+ | Results:    A line of input is read into 'inputline'.
  |
  | Side Efct:  "linenum" is incremented.
  |
- | Bugs:       Lines longer than MAXINLINE are NOT checked, except for 
- |             updating `linenum'.
+ | Bugs:       Lines longer than MAXINLINE are NOT checked, except for
+ |             updating 'linenum'.
  *----------------------------------------------------------------------------*/
 
 int
@@ -482,12 +482,12 @@ initpic()
   }
   stipple = defstipple;
 
-  gremlinfile[0] = 0;          /* filename is `null' */
+  gremlinfile[0] = 0;          /* filename is 'null' */
   setdefault = 0;              /* this is not the default settings (yet) */
 
   toppoint = BIG;              /* set the picture bounds out */
   bottompoint = -BIG;          /* of range so they'll be set */
-  leftpoint = BIG;             /* by `savebounds' on input */
+  leftpoint = BIG;             /* by 'savebounds' on input */
   rightpoint = -BIG;
 
   pointscale = defpoint;       /* flag for scaling point sizes default */
@@ -503,10 +503,10 @@ initpic()
 /*----------------------------------------------------------------------------*
  | Routine:    conv (file_pointer, starting_line)
  |
- | Results:    At this point, we just passed a `.GS' line in the input
- |             file.  conv reads the input and calls `interpret' to process
- |             commands, gathering up information until a `.GE' line is
- |             found.  It then calls `HGPrint' to do the translation of the
+ | Results:    At this point, we just passed a '.GS' line in the input
+ |             file.  conv reads the input and calls 'interpret' to process
+ |             commands, gathering up information until a '.GE' line is
+ |             found.  It then calls 'HGPrint' to do the translation of the
  |             gremlin file to troff commands.
  *----------------------------------------------------------------------------*/
 
@@ -519,15 +519,15 @@ conv(register FILE *fp,
   register ELT *e;             /* current element pointer */
   ELT *PICTURE;                        /* whole picture data base pointer */
   double temp;                 /* temporary calculating area */
-  /* POINT ptr; */             /* coordinates of a point to pass to `mov' */
+  /* POINT ptr; */             /* coordinates of a point to pass to 'mov' */
                                /* routine                                 */
-  int flyback;                 /* flag `want to end up at the top of the */
+  int flyback;                 /* flag 'want to end up at the top of the */
                                /* picture?'                              */
   int compat;                  /* test character after .GE or .GF */
 
 
   initpic();                   /* set defaults, ranges, etc. */
-  strcpy(GScommand, inputline);        /* save `.GS' line for later */
+  strcpy(GScommand, inputline);        /* save '.GS' line for later */
 
   do {
     done = !doinput(fp);               /* test for EOF */
@@ -552,7 +552,7 @@ conv(register FILE *fp,
        return;
       PICTURE = DBRead(gfp);   /* read picture file */
       fclose(gfp);
-      a_delete path;
+      free(path);
       if (DBNullelt(PICTURE))
        return;                 /* If a request is made to make the  */
                                /* picture fit into a specific area, */
@@ -597,7 +597,7 @@ conv(register FILE *fp,
       /*   set vertical spacing, no fill,   */
       /*   and break (to make sure picture  */
       /*   starts on left), and put out the */
-      /*   user's `.GS' line.               */
+      /*   user's '.GS' line.               */
       printf(".br\n"
             ".nr g1 %du\n"
             ".nr g2 %du\n"
@@ -666,14 +666,14 @@ conv(register FILE *fp,
       /* tmove(&ptr); */       /* restore default line parameters */
 
       /* restore everything to the way it was before the .GS, then put */
-      /* out the `.GE' line from user                                  */
+      /* out the '.GE' line from user                                  */
 
       /* printf("\\D't %du'\\D's %du'\n", DEFTHICK, DEFSTYLE); */
       /* groff doesn't understand the \Ds command */
 
       printf("\\D't %du'\n", DEFTHICK);
       if (flyback)             /* make sure we end up at top of */
-       printf(".sp -1\n");     /* picture if `flying back'      */
+       printf(".sp -1\n");     /* picture if 'flying back'      */
       if (USE_ST_REQUEST)      /* restore stipple to previous */
        printf(".st\n");
       printf(".br\n"
@@ -722,7 +722,7 @@ savestate()
  |
  | Results:    Keeps track of the maximum and minimum extent of a picture
  |             in the global variables: left-, right-, top- and
- |             bottompoint.  `savebounds' assumes that the points have been
+ |             bottompoint.  'savebounds' assumes that the points have been
  |             oriented to the correct direction.  No scaling has taken
  |             place, though.
  *----------------------------------------------------------------------------*/
@@ -842,7 +842,7 @@ interpret(char *line)
   stipplecommand:              /* set stipple name */
     stipple = (char *) malloc(strlen(str2) + 1);
     strcpy(stipple, str2);
-    /* if its a `known' font (currently only `cf'), set indicies    */
+    /* if it's a 'known' font (currently only 'cf'), set indices    */
     if (strcmp(stipple, "cf") == 0)
       defstipple_index = cf_stipple_index;
     else
@@ -922,7 +922,7 @@ interpret(char *line)
     break;
 
   default:
-    error("unknown command `%1' on line %2", str1, linenum);
+    error("unknown command '%1' on line %2", str1, linenum);
     exit(8);
     break;
   };
diff --git a/src/preproc/html/Makefile.sub b/src/preproc/html/Makefile.sub
deleted file mode 100644 (file)
index 89ab989..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-# Makefile.sub for `preproc html'
-#
-# File position: <groff-source>/src/preproc/html/Makefile.sub
-#
-# Copyright (C) 2014  Free Software Foundation, Inc.
-#
-# This file is part of `font utf8' which is part of `groff'.
-#
-# `groff' is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 2 of the License, or
-# (at your option) any later version.
-#
-# `groff' 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
-# <http://www.gnu.org/licenses/gpl-2.0.html>.
-#
-########################################################################
-
-PROG=pre-grohtml$(EXEEXT)
-# MAN1=pre-grohtml.n
-MAN1=
-XLIBS=$(LIBGROFF) $(LIBGNU)
-MLIB=$(LIBM)
-OBJS=pre-html.$(OBJEXT) pushback.$(OBJEXT)
-CCSRCS=$(srcdir)/pre-html.cpp $(srcdir)/pushback.cpp
-
-########################################################################
-# Emacs settings
-########################################################################
-#
-# Local Variables:
-# mode: makefile
-# End:
diff --git a/src/preproc/html/html.am b/src/preproc/html/html.am
new file mode 100644 (file)
index 0000000..74bf163
--- /dev/null
@@ -0,0 +1,34 @@
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Latest update: 13 Aug 2015
+#
+# This file is part of groff.
+#
+# groff 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.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+
+bin_PROGRAMS += pre-grohtml
+pre_grohtml_LDADD = libgroff.a lib/libgnu.a $(LIBM)
+pre_grohtml_SOURCES = \
+  src/preproc/html/pre-html.cpp \
+  src/preproc/html/pushback.cpp \
+  src/preproc/html/pre-html.h \
+  src/preproc/html/pushback.h
+src/preproc/html/pre-html.$(OBJEXT): defs.h
+
+
+########################################################################
+### Emacs settings
+# Local Variables:
+# mode: makefile-automake
+# End:
index 978721a..46defda 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 2000-201 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2018 Free Software Foundation, Inc.
  * Written by Gaius Mulley (gaius@glam.ac.uk).
  *
  * This file is part of groff.
 
 #if defined(__MSDOS__) || defined(_WIN32)
 
-// Most MS-DOS and Win32 environments will be missing the `fork' capability
+// Most MS-DOS and Win32 environments will be missing the 'fork' capability
 // (some like Cygwin have it, but it is best avoided).
 
 # define MAY_FORK_CHILD_PROCESS 0
 
-// On these systems, we use `spawn...', instead of `fork' ... `exec...'.
-# include <process.h>  // for `spawn...'
+// On these systems, we use 'spawn...', instead of 'fork' ... 'exec...'.
+# include <process.h>  // for 'spawn...'
 # include <fcntl.h>    // for attributes of pipes
 
 # if defined(__CYGWIN__) || defined(_UWIN) || defined(_WIN32)
 
-// These Win32 implementations allow parent and `spawn...'ed child to
+// These Win32 implementations allow parent and 'spawn...'ed child to
 // multitask asynchronously.
 
 #  define MAY_SPAWN_ASYNCHRONOUS_CHILD 1
@@ -86,7 +86,7 @@
 # else
 
 // Others may adopt MS-DOS behaviour where parent must sleep,
-// from `spawn...' until child terminates.
+// from 'spawn...' until child terminates.
 
 #  define MAY_SPAWN_ASYNCHRONOUS_CHILD 0
 
    where to put intermediate files (the DEBUGGING version will preserve
    these on exit).
 
-   On a UNIX host, we might simply use `/tmp', but MS-DOS and Win32 will
+   On a Unix host, we might simply use '/tmp', but MS-DOS and Win32 will
    probably not have this on all disk drives, so default to using
-   `c:/temp' instead.  (Note that user may choose to override this by
+   'c:/temp' instead.  (Note that user may choose to override this by
    supplying a definition such as
 
      -DDEBUG_FILE_DIR=d:/path/to/debug/files
 
-   in the CPPFLAGS to `make'.) */
+   in the CPPFLAGS to 'make'.) */
 
 #  define DEBUG_FILE_DIR c:/temp
 # endif
 
 #else /* not __MSDOS__ or _WIN32 */
 
-// For non-Microsoft environments assume UNIX conventions,
-// so `fork' is required and child processes are asynchronous.
+// For non-Microsoft environments assume Unix conventions,
+// so 'fork' is required and child processes are asynchronous.
 # define MAY_FORK_CHILD_PROCESS 1
 # define MAY_SPAWN_ASYNCHRONOUS_CHILD 1
 
 # if defined(DEBUGGING) && !defined(DEBUG_FILE_DIR)
-/* For a DEBUGGING version, on the UNIX host, we can also usually rely
-   on being able to use `/tmp' for temporary file storage.  (Note that,
+/* For a DEBUGGING version, on the Unix host, we can also usually rely
+   on being able to use '/tmp' for temporary file storage.  (Note that,
    as in the __MSDOS__ or _WIN32 case above, the user may override this
    by defining
 
@@ -153,7 +153,7 @@ extern "C" const char *Version_string;
 #define INLINE_LEADER_CHAR '\\'
 
 // Don't use colour names here!  Otherwise there is a dependency on
-// a file called `rgb.txt' which maps names to colours.
+// a file called 'rgb.txt' which maps names to colours.
 #define TRANSPARENT "-background rgb:f/f/f -transparent rgb:f/f/f"
 #define MIN_ALPHA_BITS 0
 #define MAX_ALPHA_BITS 4
@@ -215,7 +215,7 @@ static int eqn_flag = FALSE;            // must we preprocess via eqn?
 
 static char *linebuf = NULL;           // for scanning devps/DESC
 static int linebufsize = 0;
-static const char *image_gen = NULL;    // the `gs' program
+static const char *image_gen = NULL;    // the 'gs' program
 
 const char *const FONT_ENV_VAR = "GROFF_FONT_PATH";
 static search_path font_path(FONT_ENV_VAR, FONTPATH, 0, 0);
@@ -296,7 +296,7 @@ static unsigned int get_resolution(void)
   FILE *f;
   unsigned int res;
   f = font_path.open_file("devps/DESC", &pathp);
-  a_delete pathp;
+  free(pathp);
   if (f == 0)
     fatal("can't open devps/DESC");
   while (get_line(f)) {
@@ -306,7 +306,7 @@ static unsigned int get_resolution(void)
       return res;
     }
   }
-  fatal("can't find `res' keyword in devps/DESC");
+  fatal("can't find 'res' keyword in devps/DESC");
   return 0;
 }
 
@@ -341,9 +341,9 @@ void html_system(const char *s, int redirect_stdout)
     if (redirect_stdout)
       dup2(save_stdout, 1);
     if (status == -1)
-      fprintf(stderr, "Calling `%s' failed\n", s);
+      fprintf(stderr, "Calling '%s' failed\n", s);
     else if (status)
-      fprintf(stderr, "Calling `%s' returned status %d\n", s, status);
+      fprintf(stderr, "Calling '%s' returned status %d\n", s, status);
     close(save_stderr);
     close(save_stdout);
   }
@@ -519,12 +519,12 @@ static void writeString(const char *s)
 static void makeFileName(void)
 {
   if ((image_dir != NULL) && (strchr(image_dir, '%') != NULL)) {
-    error("cannot use a `%%' within the image directory name");
+    error("cannot use a '%%' within the image directory name");
     exit(1);
   }
 
   if ((image_template != NULL) && (strchr(image_template, '%') != NULL)) {
-    error("cannot use a `%%' within the image template");
+    error("cannot use a '%%' within the image template");
     exit(1);
   }
 
@@ -579,7 +579,7 @@ static void checkImageDir(void)
 {
   if (image_dir != NULL && strcmp(image_dir, "") != 0)
     if (!(mkdir(image_dir, 0777) == 0 || errno == EEXIST)) {
-      error("cannot create directory `%1'", image_dir);
+      error("cannot create directory '%1'", image_dir);
       exit(1);
     }
 }
@@ -661,7 +661,7 @@ void char_buffer::write_upto_newline(char_block **t, int *i, int is_html)
        && (*t)->buffer[j] == '\n')
       j++;
     writeNbytes((*t)->buffer + (*i), j - (*i));
-    if ((*t)->buffer[j] == INLINE_LEADER_CHAR) {
+    if (j < char_block::SIZE && (*t)->buffer[j] == INLINE_LEADER_CHAR) {
       if (can_see(t, &j, HTML_IMAGE_INLINE_BEGIN))
        write_start_image(INLINE, is_html);
       else if (can_see(t, &j, HTML_IMAGE_INLINE_END))
@@ -778,7 +778,7 @@ void char_buffer::skip_until_newline(char_block **t, int *i)
 void char_buffer::emit_troff_output(int device_format_selector)
 {
   // Handle output for BOTH html and image device formats
-  // if `device_format_selector' is passed as
+  // if 'device_format_selector' is passed as
   //
   //   HTML_FORMAT(HTML_OUTPUT_FILTER)
   //     Buffer data is written to the output stream
@@ -1134,7 +1134,7 @@ static void generateImages(char *region_file_name)
 
 static void set_redirection(int was, int willbe)
 {
-  // Nothing to do if `was' and `willbe' already have same handle.
+  // Nothing to do if 'was' and 'willbe' already have same handle.
   if (was != willbe) {
     // Otherwise attempt the specified redirection.
     if (dup2 (willbe, was) < 0) {
@@ -1147,9 +1147,9 @@ static void set_redirection(int was, int willbe)
     }
 
     // When redirection has been successfully completed assume redundant
-    // handle `willbe' is no longer required, so close it.
+    // handle 'willbe' is no longer required, so close it.
     if (close(willbe) < 0)
-      // Issue diagnostic if `close' fails.
+      // Issue diagnostic if 'close' fails.
       sys_fatal("close");
   }
 }
@@ -1166,7 +1166,7 @@ static int save_and_redirect(int was, int willbe)
     return (was);
 
   // Proceeding with redirection so first save and verify our duplicate
-  // handle for `was'.
+  // handle for 'was'.
   int saved = dup(was);
   if (saved < 0) {
     fprintf(stderr, "unable to get duplicate handle for %d\n", was);
@@ -1177,7 +1177,7 @@ static int save_and_redirect(int was, int willbe)
   set_redirection(was, willbe);
 
   // Finally return the saved duplicate descriptor for the
-  // original `was' stream.
+  // original 'was' stream.
   return saved;
 }
 
@@ -1312,14 +1312,14 @@ int char_buffer::run_output_filter(int filter, int argc, char **argv)
     sys_fatal("pipe");
 
 #if MAY_FORK_CHILD_PROCESS
-  // This is the UNIX process model.  To invoke our post-processor,
-  // we must `fork' the current process.
+  // This is the Unix process model.  To invoke our post-processor,
+  // we must 'fork' the current process.
 
   if ((child_pid = fork()) < 0)
     sys_fatal("fork");
 
   else if (child_pid == 0) {
-    // This is the child process fork.  We redirect its `stdin' stream
+    // This is the child process fork.  We redirect its 'stdin' stream
     // to read data emerging from our pipe.  There is no point in saving,
     // since we won't be able to restore later!
 
@@ -1334,7 +1334,7 @@ int char_buffer::run_output_filter(int filter, int argc, char **argv)
     // The IMAGE_OUTPUT_FILTER needs special output redirection...
 
     if (filter == IMAGE_OUTPUT_FILTER) {
-      // with BOTH `stdout' AND `stderr' diverted to files.
+      // with BOTH 'stdout' AND 'stderr' diverted to files.
 
       set_redirection(STDOUT_FILENO, PS_OUTPUT_STREAM);
       set_redirection(STDERR_FILENO, REGION_OUTPUT_STREAM);
@@ -1344,7 +1344,7 @@ int char_buffer::run_output_filter(int filter, int argc, char **argv)
 
     execvp(argv[0], argv);
 
-    // If we get to here then the `exec...' request for the output filter
+    // If we get to here then the 'exec...' request for the output filter
     // failed.  Diagnose it and bail out.
 
     error("couldn't exec %1: %2", argv[0], strerror(errno), ((char *)0));
@@ -1360,7 +1360,7 @@ int char_buffer::run_output_filter(int filter, int argc, char **argv)
     if (close(pipedes[0]) < 0)
       sys_fatal("close");
 
-    // Now we redirect the `stdout' stream to the inlet end of the pipe,
+    // Now we redirect the 'stdout' stream to the inlet end of the pipe,
     // and push out the appropiately formatted data to the filter.
 
     pipedes[1] = save_and_redirect(STDOUT_FILENO, pipedes[1]);
@@ -1379,19 +1379,19 @@ int char_buffer::run_output_filter(int filter, int argc, char **argv)
 
 #elif MAY_SPAWN_ASYNCHRONOUS_CHILD
 
-  // We do not have `fork', (or we prefer not to use it),
+  // We do not have 'fork', (or we prefer not to use it),
   // but asynchronous processes are allowed, passing data through pipes.
-  // This should be ok for most Win32 systems and is preferred to `fork'
+  // This should be ok for most Win32 systems and is preferred to 'fork'
   // for starting child processes under Cygwin.
 
-  // Before we start the post-processor we bind its inherited `stdin'
-  // stream to the readable end of our pipe, saving our own `stdin' stream
-  // in `pipedes[0]'.
+  // Before we start the post-processor we bind its inherited 'stdin'
+  // stream to the readable end of our pipe, saving our own 'stdin' stream
+  // in 'pipedes[0]'.
 
   pipedes[0] = save_and_redirect(STDIN_FILENO, pipedes[0]);
 
   // for the Win32 model,
-  // we need special provision for saving BOTH `stdout' and `stderr'.
+  // we need special provision for saving BOTH 'stdout' and 'stderr'.
 
   int saved_stdout = dup(STDOUT_FILENO);
   int saved_stderr = STDERR_FILENO;
@@ -1399,8 +1399,8 @@ int char_buffer::run_output_filter(int filter, int argc, char **argv)
   // The IMAGE_OUTPUT_FILTER needs special output redirection...
 
   if (filter == IMAGE_OUTPUT_FILTER) {
-    // with BOTH `stdout' AND `stderr' diverted to files while saving a
-    // duplicate handle for `stderr'.
+    // with BOTH 'stdout' AND 'stderr' diverted to files while saving a
+    // duplicate handle for 'stderr'.
 
     set_redirection(STDOUT_FILENO, PS_OUTPUT_STREAM);
     saved_stderr = save_and_redirect(STDERR_FILENO, REGION_OUTPUT_STREAM);
@@ -1415,19 +1415,19 @@ int char_buffer::run_output_filter(int filter, int argc, char **argv)
     exit(1);
   }
 
-  // Once the post-processor has been started we revert our `stdin'
+  // Once the post-processor has been started we revert our 'stdin'
   // to its original saved source, which also closes the readable handle
   // for the pipe.
 
   set_redirection(STDIN_FILENO, pipedes[0]);
 
-  // if we redirected `stderr', for use by the image post-processor,
+  // if we redirected 'stderr', for use by the image post-processor,
   // then we also need to reinstate its original assignment.
 
   if (filter == IMAGE_OUTPUT_FILTER)
     set_redirection(STDERR_FILENO, saved_stderr);
 
-  // Now we redirect the `stdout' stream to the inlet end of the pipe,
+  // Now we redirect the 'stdout' stream to the inlet end of the pipe,
   // and push out the appropiately formatted data to the filter.
 
   set_redirection(STDOUT_FILENO, pipedes[1]);
@@ -1471,7 +1471,7 @@ int char_buffer::do_html(int argc, char *argv[])
   s = (char *)"-dwww-image-template=";
   s += macroset_template;      // do not combine these statements,
                                // otherwise they will not work
-  s += '\0';                   // the trailing `\0' is ignored
+  s += '\0';                   // the trailing '\0' is ignored
   argv = addRegDef(argc, argv, s.contents());
   argc++;
 
@@ -1557,8 +1557,8 @@ static void usage(FILE *stream)
     "it is part of the groff pipeline to produce HTML output.\n"
     "\n"
     "If there is ever the need to call it manually (e.g., for\n"
-    "debugging purposes), add command line option `-V' while calling\n"
-    "the `groff' program to see which arguments are passed to it.\n"
+    "debugging purposes), add command-line option '-V' while calling\n"
+    "the 'groff' program to see which arguments are passed to it.\n"
     "\n");
 }
 
@@ -1818,7 +1818,7 @@ static int do_file(const char *filename)
   else {
     fp = fopen(filename, "r");
     if (fp == 0) {
-      error("can't open `%1': %2", filename, strerror(errno));
+      error("can't open '%1': %2", filename, strerror(errno));
       return 0;
     }
   }
index 1f3365c..b8b86f4 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 2000-201 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2018 Free Software Foundation, Inc.
  * Written by Gaius Mulley (gaius@glam.ac.uk).
  *
  * This file is part of groff.
index b945a8d..a05e58d 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 2000-201 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2018 Free Software Foundation, Inc.
      Written by Gaius Mulley (gaius@glam.ac.uk).
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include "lib.h"
 
index 3d57d4e..ae05d93 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C -*-
-/* Copyright (C) 2000-201 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2018 Free Software Foundation, Inc.
      Written by Gaius Mulley (gaius@glam.ac.uk).
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 
 #define eof              (char)-1
diff --git a/src/preproc/pic/Makefile.sub b/src/preproc/pic/Makefile.sub
deleted file mode 100644 (file)
index 4bd3dba..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-# Makefile.sub for `preproc pic'
-#
-# File position: <groff-source>/src/preproc/pic/Makefile.sub
-#
-# Copyright (C) 2014  Free Software Foundation, Inc.
-#
-# This file is part of `font utf8' which is part of `groff'.
-#
-# `groff' is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 2 of the License, or
-# (at your option) any later version.
-#
-# `groff' 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
-# <http://www.gnu.org/licenses/gpl-2.0.html>.
-#
-########################################################################
-
-PROG=pic$(EXEEXT)
-MAN1=pic.n
-XLIBS=$(LIBGROFF)
-MLIB=$(LIBM)
-OBJS=\
-  pic.$(OBJEXT) \
-  lex.$(OBJEXT) \
-  main.$(OBJEXT) \
-  object.$(OBJEXT) \
-  common.$(OBJEXT) \
-  troff.$(OBJEXT) \
-  tex.$(OBJEXT)
-  # fig.$(OBJEXT)
-CCSRCS=\
-  $(srcdir)/lex.cpp \
-  $(srcdir)/main.cpp \
-  $(srcdir)/object.cpp \
-  $(srcdir)/common.cpp \
-  $(srcdir)/troff.cpp \
-  $(srcdir)/tex.cpp
-HDRS=\
-  $(srcdir)/common.h \
-  $(srcdir)/object.h \
-  $(srcdir)/output.h \
-  $(srcdir)/pic.h \
-  $(srcdir)/position.h \
-  $(srcdir)/text.h
-GRAM=$(srcdir)/pic.y
-YTABC=pic.cpp
-YTABH=pic_tab.h
-NAMEPREFIX=$(g)
-
-########################################################################
-# Emacs settings
-########################################################################
-#
-# Local Variables:
-# mode: makefile
-# End:
index a1d7554..53ca282 100644 (file)
@@ -25,11 +25,11 @@ apparently is in grap).
 
 Possibly change fillval so that zero is black.
 
-Provide a way of getting text blocks (positioned with `.in' rather
+Provide a way of getting text blocks (positioned with '.in' rather
 than \h), into pic.  Should be possible to use block of diverted text
 in pic.  Possibly something similar to T{ and T} in tbl.
 
 Option to provide macro backtraces.
 
-Have a path that is searched by `copy' statement.  Set by environment
-variable or command line option.
+Have a path that is searched by 'copy' statement.  Set by environment
+variable or command-line option.
index 7365b24..32eea60 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include "pic.h"
 #include "common.h"
index 70352b8..9f4c7de 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 class common_output : public output {
 private:
index 2ebd28a..a6327aa 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,12 +15,12 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include "pic.h"
 #include "ptable.h"
 #include "object.h"
-#include "pic_tab.h"
+#include "pic.hpp"
 
 declare_ptable(char)
 implement_ptable(char)
@@ -148,7 +148,7 @@ macro_input::macro_input(const char *str)
 
 macro_input::~macro_input()
 {
-  a_delete s;
+  free(s);
 }
 
 int macro_input::get()
@@ -208,8 +208,8 @@ argument_macro_input::argument_macro_input(const char *body, int ac, char **av)
 argument_macro_input::~argument_macro_input()
 {
   for (int i = 0; i < argc; i++)
-    a_delete argv[i];
-  a_delete s;
+    free(argv[i]);
+  free(s);
 }
 
 int argument_macro_input::get()
@@ -413,7 +413,7 @@ void interpolate_macro_with_args(const char *body)
              argv[argc] = strsave(token_buffer.contents());
          }
        }
-       // for `foo()', argc = 0
+       // for 'foo()', argc = 0
        if (argc > 0 || c != ')' || i > 0)
          if (!ignore)
            argc++;
@@ -929,7 +929,7 @@ int get_token(int lookup_flag)
          break;
        }
        else if (c == EOF) {
-         error("missing `\"'");
+         error("missing '\"'");
          break;
        }
        else if (c == '"') {
@@ -1387,8 +1387,8 @@ for_input::for_input(char *vr, double f, double t,
 
 for_input::~for_input()
 {
-  a_delete var;
-  a_delete body;
+  free(var);
+  free(body);
 }
 
 int for_input::get()
@@ -1404,7 +1404,7 @@ int for_input::get()
     }
     double val;
     if (!lookup_variable(var, &val)) {
-      lex_error("body of `for' terminated enclosing block");
+      lex_error("body of 'for' terminated enclosing block");
       return EOF;
     }
     if (by_is_multiplicative)
@@ -1465,7 +1465,7 @@ void do_copy(const char *filename)
   errno = 0;
   FILE *fp = fopen(filename, "r");
   if (fp == 0) {
-    lex_error("can't open `%1': %2", filename, strerror(errno));
+    lex_error("can't open '%1': %2", filename, strerror(errno));
     return;
   }
   input_stack::push(new file_input(fp, filename));
@@ -1711,7 +1711,7 @@ void copy_file_thru(const char *filename, const char *body, const char *until)
   errno = 0;
   FILE *fp = fopen(filename, "r");
   if (fp == 0) {
-    lex_error("can't open `%1': %2", filename, strerror(errno));
+    lex_error("can't open '%1': %2", filename, strerror(errno));
     return;
   }
   input *in = new copy_file_thru_input(new simple_file_input(fp, filename),
@@ -2019,7 +2019,7 @@ void yyerror(const char *s)
       if (context[0] == '\n' && context[1] == '\0')
        error("%1 before newline", s);
       else
-       error("%1 before `%2'", s, context);
+       error("%1 before '%2'", s, context);
     }
     else
       error("%1 at end of picture", s);
@@ -2029,7 +2029,7 @@ void yyerror(const char *s)
       if (context[0] == '\n' && context[1] == '\0')
        error_with_file_and_line(filename, lineno, "%1 before newline", s);
       else
-       error_with_file_and_line(filename, lineno, "%1 before `%2'",
+       error_with_file_and_line(filename, lineno, "%1 before '%2'",
                                 s, context);
     }
     else
index 19065a6..08c7fa5 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include "pic.h"
 
@@ -34,7 +34,7 @@ int safer_flag = 1;
 int command_char = '.';                // the character that introduces lines
                                // that should be passed through transparently
 static int lf_flag = 1;                // non-zero if we should attempt to understand
-                               // lines beginning with `.lf'
+                               // lines beginning with '.lf'
 
 // Non-zero means a parse error was encountered.
 static int had_parse_error = 0;
@@ -220,7 +220,8 @@ void do_picture(FILE *fp)
 {
   flyback_flag = 0;
   int c;
-  a_delete graphname;
+  if (!graphname)
+    free(graphname);
   graphname = strsave("graph");                // default picture name in TeX mode
   while ((c = getc(fp)) == ' ')
     ;
@@ -240,7 +241,7 @@ void do_picture(FILE *fp)
     if (c == '\n') 
       current_lineno++;
     if (filename.length() == 0)
-      error("missing filename after `<'");
+      error("missing filename after '<'");
     else {
       filename += '\0';
       const char *old_filename = current_filename;
@@ -306,11 +307,14 @@ void do_file(const char *filename)
     fp = fopen(filename, "r");
     if (fp == 0) {
       delete out;
-      fatal("can't open `%1': %2", filename, strerror(errno));
+      fatal("can't open '%1': %2", filename, strerror(errno));
     }
   }
-  out->set_location(filename, 1);
-  current_filename = filename;
+  string fn(filename);
+  fn += '\0';
+  normalize_for_lf(fn);
+  current_filename = fn.contents();
+  out->set_location(current_filename, 1);
   current_lineno = 1;
   enum { START, MIDDLE, HAD_DOT, HAD_P, HAD_PS, HAD_l, HAD_lf } state = START;
   for (;;) {
@@ -463,7 +467,7 @@ void do_whole_file(const char *filename)
     errno = 0;
     fp = fopen(filename, "r");
     if (fp == 0)
-      fatal("can't open `%1': %2", filename, strerror(errno));
+      fatal("can't open '%1': %2", filename, strerror(errno));
   }
   lex_init(new file_input(fp, filename));
   if (yyparse())
@@ -615,7 +619,11 @@ int main(int argc, char **argv)
     out = make_fig_output();
   else
 #endif
+  {
     out = make_troff_output();
+    printf(".if !dPS .ds PS\n"
+          ".if !dPE .ds PE\n");
+  }
 #ifdef FIG_SUPPORT
   if (whole_file_flag) {
     if (optind >= argc)
index 282546c..d8ba610 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,9 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
+
+#include <stdlib.h>
 
 #include "pic.h"
 #include "ptable.h"
@@ -540,7 +542,7 @@ text_piece::text_piece()
 
 text_piece::~text_piece()
 {
-  a_delete text;
+  free(text);
 }
 
 class graphic_object : public object {
@@ -1160,7 +1162,7 @@ graphic_object *object_spec::make_move(position *curpos, direction *dirp)
   static position last_move;
   static int have_last_move = 0;
   *dirp = dir;
-  // No need to look at at since `at' attribute sets `from' attribute.
+  // No need to look at at since 'at' attribute sets 'from' attribute.
   position startpos = (flags & HAS_FROM) ? from : *curpos;
   if (!(flags & HAS_SEGMENT)) {
     if ((flags & IS_SAME) && have_last_move)
@@ -1447,8 +1449,8 @@ linear_object *object_spec::make_line(position *curpos, direction *dirp)
   static position last_line;
   static int have_last_line = 0;
   *dirp = dir;
-  // We handle `at' only in conjunction with `with', otherwise it is
-  // the same as the `from' attribute.
+  // We handle 'at' only in conjunction with 'with', otherwise it is
+  // the same as the 'from' attribute.
   position startpos;
   if ((flags & HAS_AT) && (flags & HAS_WITH))
     // handled later -- we need the end position
@@ -1502,7 +1504,7 @@ linear_object *object_spec::make_line(position *curpos, direction *dirp)
       s->is_absolute = 1;      // to avoid confusion
     }
   if ((flags & HAS_AT) && (flags & HAS_WITH)) {
-    // `tmpobj' works for arrows and splines too -- we only need positions
+    // 'tmpobj' works for arrows and splines too -- we only need positions
     line_object tmpobj(startpos, endpos, 0, 0);
     position pos = at;
     place offset;
@@ -1958,15 +1960,15 @@ string_list::string_list(char *s)
 
 string_list::~string_list()
 {
-  a_delete str;
+  free(str);
 }
-  
-/* A path is used to hold the argument to the `with' attribute.  For
-   example, `.nw' or `.A.s' or `.A'.  The major operation on a path is to
+
+/* A path is used to hold the argument to the 'with' attribute.  For
+   example, '.nw' or '.A.s' or '.A'.  The major operation on a path is to
    take a place and follow the path through the place to place within the
-   place.  Note that `.A.B.C.sw' will work.
+   place.  Note that '.A.B.C.sw' will work.
 
-   For compatibility with DWB pic, `with' accepts positions also (this
+   For compatibility with DWB pic, 'with' accepts positions also (this
    is incorrectly documented in CSTR 116). */
 
 path::path(corner c)
@@ -2029,7 +2031,7 @@ int path::follow(const place &pl, place *result) const
   const place *p = &pl;
   for (string_list *lb = label_list; lb; lb = lb->next)
     if (p->obj == 0 || (p = p->obj->find_label(lb->str)) == 0) {
-      lex_error("object does not contain a place `%1'", lb->str);
+      lex_error("object does not contain a place '%1'", lb->str);
       return 0;
     }
   if (crn == 0 || p->obj == 0)
index e1b676d..e053f08 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 struct place;
 
index 5bb5ce2..8dd4384 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 struct line_type {
   enum { invisible, solid, dotted, dashed } type;
similarity index 81%
rename from src/preproc/pic/pic.man
rename to src/preproc/pic/pic.1.man
index 04ea3e0..847bbe3 100644 (file)
@@ -1,41 +1,38 @@
-.TH @G@PIC @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
+.TH @G@PIC @MAN1EXT@ "@MDATE@" "groff @VERSION@"
 .SH NAME
 @g@pic \- compile pictures for troff or TeX
 .
 .
-.\" --------------------------------------------------------------------
-.\" License (copying)
-.\" --------------------------------------------------------------------
-.
-.de co
-Copyright \[co] 1989-2014 Free Software Foundation, Inc.
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the
-entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
-Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be included in
-translations approved by the Free Software Foundation instead of in
-the original English.
-..
-.
-.\" --------------------------------------------------------------------
+.\" Save and disable compatibility mode (for, e.g., Solaris 10/11).
+.do nr pic_C \n[.C]
+.cp 0
+.
+.
+.\" ====================================================================
+.\" Legal Terms
+.\" ====================================================================
+.\"
+.\" Copyright (C) 1989-2018 Free Software Foundation, Inc.
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of
+.\" this manual under the conditions for verbatim copying, provided that
+.\" the entire resulting derived work is distributed under the terms of
+.\" a permission notice identical to this one.
+.\"
+.\" Permission is granted to copy and distribute translations of this
+.\" manual into another language, under the above conditions for
+.\" modified versions, except that this permission notice may be
+.\" included in translations approved by the Free Software Foundation
+.\" instead of in the original English.
+.
+.
+.\" ====================================================================
 .\" Definitions
-.\" --------------------------------------------------------------------
-.
-.\" Like TP, but if specified indent is more than half
-.\" the current line-length - indent, use the default indent.
-.de Tp
-.ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP
-.el .TP "\\$1"
-..
+.\" ====================================================================
 .
 .ie t \{\
 .  ds tx T\h'-.1667m'\v'.224m'E\v'-.224m'\h'-.125m'X
@@ -54,33 +51,27 @@ the original English.
 .tr \(ts"\""
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH SYNOPSIS
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
-.B @g@pic
-[
-.B \-nvCSU
-]
-[
-.I filename
-\&.\|.\|.\&
-]
-.br
-.B @g@pic
+.SY @g@pic
+.OP \-nvCSU
+.RI [ file
+\&.\|.\|.\&]
+.YS
+.
+.SY @g@pic
 .B \-t
-[
-.B \-cvzCSU
-]
-[
-.I filename
-\&.\|.\|.\&
-]
+.OP \-cvzCSU
+.RI [ file
+\&.\|.\|.\&]
+.YS
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH DESCRIPTION
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 This manual page describes the GNU version of
 .BR pic ,
@@ -105,7 +96,7 @@ is passed through without change.
 .
 .
 .LP
-It is the user\[aq]s responsibility to provide appropriate definitions
+It is the user's responsibility to provide appropriate definitions
 of the
 .B PS
 and
@@ -120,9 +111,9 @@ obtained with
 These will center each picture.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH OPTIONS
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 Options that do not take arguments may be grouped behind a single
 .BR \- .
@@ -159,9 +150,9 @@ Unsafe mode; revert the default option
 .
 .TP
 .B \-n
-Don\[aq]t use the groff extensions to the troff drawing commands.
+Don't use the groff extensions to the troff drawing commands.
 .
-You should use this if you are using a postprocessor that doesn\[aq]t
+You should use this if you are using a postprocessor that doesn't
 support these extensions.
 .
 The extensions are described in
@@ -244,9 +235,9 @@ output generated by
 is device-independent.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH USAGE
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 This section describes only the differences between GNU
 .B pic
@@ -261,13 +252,13 @@ A complete documentation is available in the file
 .
 .LP
 .RS
-.B @DOCDIR@/pic.ms
+.I @DOCDIR@/pic.ms
 .RE
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS \*(tx mode
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 \*(tx mode is enabled by the
 .B \-t
@@ -308,7 +299,7 @@ would avoid this.
 .
 .LP
 To make the vbox having a positive height and a depth of zero
-(as used e.g.\& by \*[lx]\[aq]s
+(as used e.g.\& by \*[lx]'s
 .BR \%graphics.sty ),
 define the following macro in your document:
 .RS
@@ -345,9 +336,9 @@ Anything else may well produce undesirable results; use at your own risk.
 Lines beginning with a period are not given any special treatment.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS Commands
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .TP
 \fBfor\fR \fIvariable\fR \fB=\fR \fIexpr1\fR \fBto\fR \fIexpr2\fR \
@@ -393,7 +384,7 @@ For the multiplicative case,
 .I expr3
 must be greater than zero.
 .
-If the constraints aren\[aq]t met, the loop isn\[aq]t executed.
+If the constraints aren't met, the loop isn't executed.
 .
 .I X
 can be any character not occurring in
@@ -565,7 +556,7 @@ as the argument to
 Reset pre-defined variables
 .IR variable1 ,
 .I variable2
-\&.\^.\^. to their default values.
+\&.\^.\^.\& to their default values.
 .
 If no arguments are given, reset all pre-defined variables to their
 default values.
@@ -665,9 +656,9 @@ and
 .BR } .
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS Expressions
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The syntax for expressions has been significantly extended:
 .
@@ -738,9 +729,9 @@ String comparison expressions must be parenthesised in some contexts
 to avoid ambiguity.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS Other Changes
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 A bare expression,
 .IR expr ,
@@ -855,7 +846,7 @@ The
 .B xslanted
 and
 .B yslanted
-attributes specify the x and y\~offset of the box\[aq]s upper right
+attributes specify the x and y\~offset of the box's upper right
 corner from its default position.
 .
 .
@@ -873,8 +864,7 @@ Note that GNU
 will always scale a picture by the same amount vertically as well as
 horizontally.
 .
-This is different from the
-.SM DWB
+This is different from the DWB
 2.0
 .B pic
 which may scale a picture by a different amount vertically than
@@ -1006,7 +996,7 @@ All three keywords expect a suffix specifying the color, for example
 .
 .
 .LP
-Currently, color support isn\[aq]t available in \*(tx mode.
+Currently, color support isn't available in \*(tx mode.
 .
 Predefined color names for
 .B groff
@@ -1121,9 +1111,9 @@ for i = 1 to 4 do {
 .fi
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH CONVERSION
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 To obtain a stand-alone picture from a
 .B pic
@@ -1223,7 +1213,7 @@ papersize to groff.
 .LP
 As the Encapsulated PostScript File Format
 .B EPS
-is getting more and more important, and the conversion wasn\[aq]t
+is getting more and more important, and the conversion wasn't
 regarded trivial in the past you might be interested to know that
 there is a conversion tool named
 .B ps2eps
@@ -1243,16 +1233,15 @@ the resulting (intermediate)
 file can be then converted to virtually any graphics format using the
 tools of the
 .B netpbm
-package .
+package.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH FILES
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
-.Tp \w'\fB@MACRODIR@/pic.tmac'u+3n
-.B
-@MACRODIR@/pic.tmac
+.TP
+.I @MACRODIR@/pic.tmac
 Example definitions of the
 .B PS
 and
@@ -1260,9 +1249,9 @@ and
 macros.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "SEE ALSO"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .BR @g@troff (@MAN1EXT@),
 .BR groff_out (@MAN5EXT@),
@@ -1278,7 +1267,8 @@ macros.
 Eric S.\& Raymond,
 .I Making Pictures With GNU PIC.
 .br
-@DOCDIR@/pic.ps (this file, together with its source file, pic.ms, is part
+.I @DOCDIR@/pic.ps
+(this file, together with its source file, pic.ms, is part
 of the groff documentation)
 .
 .
@@ -1286,43 +1276,42 @@ of the groff documentation)
 Tpic: Pic for \*(tx
 .LP
 Brian W.\& Kernighan,
-.I PIC \(em A Graphics Language for Typesetting (User Manual).
+.UR http://\:cm.bell\-labs.com/\:cm/\:cs/\:cstr/\:116.ps.gz
+.I PIC \(em A Graphics Language for Typesetting (User Manual)
+.UE .
 AT&T Bell Laboratories, Computing Science Technical Report No.\ 116
-.br
-<http://cm.bell-labs.com/cm/cs/cstr/116.ps.gz>
 (revised May, 1991).
 .
 .
 .LP
 .B ps2eps
 is available from CTAN mirrors, e.g.\&
-.br
-<ftp://ftp.dante.de/tex-archive/support/ps2eps/>
+.UR ftp://\:ftp.dante.de/\:tex\-archive/\:support/\:ps2eps/
+.UE
 .
 .
 .LP
 W.\& Richard Stevens,
-.I Turning PIC Into HTML
-.br
-<http://www.kohala.com/start/troff/pic2html.html>
+.UR http://\:www.kohala.com/\:start/\:troff/\:pic2html.html
+.I Turning PIC into HTML
+.UE
 .
 .
 .LP
 W.\& Richard Stevens,
-.I Examples of picMacros
-.br
-<http://www.kohala.com/start/troff/pic.examples.ps>
+.UR http://\:www.kohala.com/\:start/\:troff/\:pic.examples.ps
+.IR "Examples of " pic " Macros"
+.UE
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH BUGS
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 Input characters that are invalid for
 .B groff
-(i.e., those with
-.SM ASCII
-code 0, or 013 octal, or between 015 and 037 octal, or between 0200 and 0237
+(i.e., those with ASCII code 0,
+or 013 octal, or between 015 and 037 octal, or between 0200 and 0237
 octal) are rejected even in \*(tx mode.
 .
 .
@@ -1337,12 +1326,11 @@ which interprets 0 as black and 1 as white.
 PostScript\*R is a registered trademark of Adobe Systems Incorporation.
 .
 .
-.\" --------------------------------------------------------------------
-.SH COPYING
-.\" --------------------------------------------------------------------
-.co
+.\" Restore compatibility mode (for, e.g., Solaris 10/11).
+.cp \n[pic_C]
 .
 .
 .\" Local Variables:
 .\" mode: nroff
 .\" End:
+.\" vim: set filetype=groff:
diff --git a/src/preproc/pic/pic.am b/src/preproc/pic/pic.am
new file mode 100644 (file)
index 0000000..d37a77b
--- /dev/null
@@ -0,0 +1,56 @@
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Latest update: 22 Aug 2015
+#
+# This file is part of groff.
+#
+# groff 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.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+
+prefixexecbin_PROGRAMS += pic
+pic_LDADD = libgroff.a $(LIBM) lib/libgnu.a
+pic_SOURCES = \
+  src/preproc/pic/pic.ypp \
+  src/preproc/pic/lex.cpp \
+  src/preproc/pic/main.cpp \
+  src/preproc/pic/object.cpp \
+  src/preproc/pic/common.cpp \
+  src/preproc/pic/troff.cpp \
+  src/preproc/pic/tex.cpp \
+  src/preproc/pic/pic.h \
+  src/preproc/pic/position.h \
+  src/preproc/pic/text.h \
+  src/preproc/pic/common.h \
+  src/preproc/pic/output.h \
+  src/preproc/pic/object.h
+
+pic_CPPFLAGS = $(AM_CPPFLAGS) \
+  -I $(top_srcdir)/src/preproc/pic \
+  -I $(top_builddir)/src/preproc/pic
+PREFIXMAN1 += src/preproc/pic/pic.1
+
+src/preproc/pic/pic-lex.$(OBJEXT): src/preproc/pic/pic.hpp
+EXTRA_DIST += \
+  src/preproc/pic/pic.1.man \
+  src/preproc/pic/TODO
+CLEANFILES += \
+  src/preproc/pic/pic.cpp \
+  src/preproc/pic/pic.hpp \
+  src/preproc/pic/pic.output
+
+
+########################################################################
+### Emacs settings
+# Local Variables:
+# mode: makefile-automake
+# End:
index 34dada5..25c063d 100644 (file)
@@ -1,8 +1,8 @@
-/* A Bison parser, made by GNU Bison 3.0.2.  */
+/* A Bison parser, made by GNU Bison 3.2.  */
 
 /* Bison implementation for Yacc-like parsers in C
 
-   Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
+   Copyright (C) 1984, 1989-1990, 2000-2015, 2018 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
    define necessary library symbols; they are noted "INFRINGES ON
    USER NAME SPACE" below.  */
 
+/* Undocumented macros, especially those whose name start with YY_,
+   are private implementation details.  Do not rely on them.  */
+
 /* Identify Bison output.  */
 #define YYBISON 1
 
 /* Bison version.  */
-#define YYBISON_VERSION "3.0.2"
+#define YYBISON_VERSION "3.2"
 
 /* Skeleton name.  */
 #define YYSKELETON_NAME "yacc.c"
@@ -61,8 +64,8 @@
 
 
 
-/* Copy the first part of user declarations.  */
-#line 19 "pic.y" /* yacc.c:339  */
+/* First part of user prologue.  */
+#line 19 "../src/preproc/pic/pic.ypp" /* yacc.c:338  */
 
 #include "pic.h"
 #include "ptable.h"
@@ -106,13 +109,16 @@ char *format_number(const char *form, double n);
 char *do_sprintf(const char *form, const double *v, int nv);
 
 
-#line 110 "pic.cpp" /* yacc.c:339  */
-
+#line 113 "src/preproc/pic/pic.cpp" /* yacc.c:338  */
 # ifndef YY_NULLPTR
-#  if defined __cplusplus && 201103L <= __cplusplus
-#   define YY_NULLPTR nullptr
+#  if defined __cplusplus
+#   if 201103L <= __cplusplus
+#    define YY_NULLPTR nullptr
+#   else
+#    define YY_NULLPTR 0
+#   endif
 #  else
-#   define YY_NULLPTR 0
+#   define YY_NULLPTR ((void*)0)
 #  endif
 # endif
 
@@ -126,8 +132,8 @@ char *do_sprintf(const char *form, const double *v, int nv);
 
 /* In a future release of Bison, this section will be replaced
    by #include "y.tab.h".  */
-#ifndef YY_YY_Y_TAB_H_INCLUDED
-# define YY_YY_Y_TAB_H_INCLUDED
+#ifndef YY_YY_SRC_PREPROC_PIC_PIC_HPP_INCLUDED
+# define YY_YY_SRC_PREPROC_PIC_PIC_HPP_INCLUDED
 /* Debug traces.  */
 #ifndef YYDEBUG
 # define YYDEBUG 0
@@ -391,10 +397,10 @@ extern int yydebug;
 
 /* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-typedef union YYSTYPE YYSTYPE;
+
 union YYSTYPE
 {
-#line 65 "pic.y" /* yacc.c:355  */
+#line 65 "../src/preproc/pic/pic.ypp" /* yacc.c:353  */
 
        char *str;
        int n;
@@ -413,8 +419,10 @@ union YYSTYPE
        graphics_state state;
        object_type obtype;
 
-#line 417 "pic.cpp" /* yacc.c:355  */
+#line 423 "src/preproc/pic/pic.cpp" /* yacc.c:353  */
 };
+
+typedef union YYSTYPE YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define YYSTYPE_IS_DECLARED 1
 #endif
@@ -424,11 +432,9 @@ extern YYSTYPE yylval;
 
 int yyparse (void);
 
-#endif /* !YY_YY_Y_TAB_H_INCLUDED  */
+#endif /* !YY_YY_SRC_PREPROC_PIC_PIC_HPP_INCLUDED  */
 
-/* Copy the second part of user declarations.  */
 
-#line 432 "pic.cpp" /* yacc.c:358  */
 
 #ifdef short
 # undef short
@@ -449,13 +455,13 @@ typedef signed char yytype_int8;
 #ifdef YYTYPE_UINT16
 typedef YYTYPE_UINT16 yytype_uint16;
 #else
-typedef unsigned short int yytype_uint16;
+typedef unsigned short yytype_uint16;
 #endif
 
 #ifdef YYTYPE_INT16
 typedef YYTYPE_INT16 yytype_int16;
 #else
-typedef short int yytype_int16;
+typedef short yytype_int16;
 #endif
 
 #ifndef YYSIZE_T
@@ -467,7 +473,7 @@ typedef short int yytype_int16;
 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
 #  define YYSIZE_T size_t
 # else
-#  define YYSIZE_T unsigned int
+#  define YYSIZE_T unsigned
 # endif
 #endif
 
@@ -503,15 +509,6 @@ typedef short int yytype_int16;
 # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
 #endif
 
-#if !defined _Noreturn \
-     && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
-# if defined _MSC_VER && 1200 <= _MSC_VER
-#  define _Noreturn __declspec (noreturn)
-# else
-#  define _Noreturn YY_ATTRIBUTE ((__noreturn__))
-# endif
-#endif
-
 /* Suppress unused-variable warnings by "using" E.  */
 #if ! defined lint || defined __GNUC__
 # define YYUSE(E) ((void) (E))
@@ -519,7 +516,7 @@ typedef short int yytype_int16;
 # define YYUSE(E) /* empty */
 #endif
 
-#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
+#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
 /* Suppress an incorrect diagnostic about yylval being uninitialized.  */
 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
     _Pragma ("GCC diagnostic push") \
@@ -687,7 +684,7 @@ union yyalloc
 #define YYMAXUTOK   379
 
 #define YYTRANSLATE(YYX)                                                \
-  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+  ((unsigned) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
 
 /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
    as returned by yylex, without out-of-bounds checking.  */
@@ -1645,37 +1642,37 @@ do {                                                                      \
 } while (0)
 
 
-/*----------------------------------------.
-| Print this symbol's value on YYOUTPUT.  |
-`----------------------------------------*/
+/*-----------------------------------.
+| Print this symbol's value on YYO.  |
+`-----------------------------------*/
 
 static void
-yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
+yy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep)
 {
-  FILE *yyo = yyoutput;
-  YYUSE (yyo);
+  FILE *yyoutput = yyo;
+  YYUSE (yyoutput);
   if (!yyvaluep)
     return;
 # ifdef YYPRINT
   if (yytype < YYNTOKENS)
-    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+    YYPRINT (yyo, yytoknum[yytype], *yyvaluep);
 # endif
   YYUSE (yytype);
 }
 
 
-/*--------------------------------.
-| Print this symbol on YYOUTPUT.  |
-`--------------------------------*/
+/*---------------------------.
+| Print this symbol on YYO.  |
+`---------------------------*/
 
 static void
-yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
+yy_symbol_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep)
 {
-  YYFPRINTF (yyoutput, "%s %s (",
+  YYFPRINTF (yyo, "%s %s (",
              yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
 
-  yy_symbol_value_print (yyoutput, yytype, yyvaluep);
-  YYFPRINTF (yyoutput, ")");
+  yy_symbol_value_print (yyo, yytype, yyvaluep);
+  YYFPRINTF (yyo, ")");
 }
 
 /*------------------------------------------------------------------.
@@ -1709,7 +1706,7 @@ do {                                                            \
 static void
 yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule)
 {
-  unsigned long int yylno = yyrline[yyrule];
+  unsigned long yylno = yyrline[yyrule];
   int yynrhs = yyr2[yyrule];
   int yyi;
   YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
@@ -1842,7 +1839,7 @@ yytnamerr (char *yyres, const char *yystr)
   if (! yyres)
     return yystrlen (yystr);
 
-  return yystpcpy (yyres, yystr) - yyres;
+  return (YYSIZE_T) (yystpcpy (yyres, yystr) - yyres);
 }
 # endif
 
@@ -1935,6 +1932,7 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
       case N:                               \
         yyformat = S;                       \
       break
+    default: /* Avoid compiler warnings. */
       YYCASE_(0, YY_("syntax error"));
       YYCASE_(1, YY_("syntax error, unexpected %s"));
       YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
@@ -2083,12 +2081,12 @@ yyparse (void)
   yyssp++;
 
  yysetstate:
-  *yyssp = yystate;
+  *yyssp = (yytype_int16) yystate;
 
   if (yyss + yystacksize - 1 <= yyssp)
     {
       /* Get the current used size of the three stacks, in elements.  */
-      YYSIZE_T yysize = yyssp - yyss + 1;
+      YYSIZE_T yysize = (YYSIZE_T) (yyssp - yyss + 1);
 
 #ifdef yyoverflow
       {
@@ -2106,7 +2104,6 @@ yyparse (void)
                     &yyss1, yysize * sizeof (*yyssp),
                     &yyvs1, yysize * sizeof (*yyvsp),
                     &yystacksize);
-
         yyss = yyss1;
         yyvs = yyvs1;
       }
@@ -2140,7 +2137,7 @@ yyparse (void)
       yyvsp = yyvs + yysize - 1;
 
       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
-                  (unsigned long int) yystacksize));
+                  (unsigned long) yystacksize));
 
       if (yyss + yystacksize - 1 <= yyssp)
         YYABORT;
@@ -2251,164 +2248,164 @@ yyreduce:
   switch (yyn)
     {
         case 3:
-#line 277 "pic.y" /* yacc.c:1646  */
+#line 277 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  if (olist.head)
                    print_picture(olist.head);
                }
-#line 2260 "pic.cpp" /* yacc.c:1646  */
+#line 2257 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 4:
-#line 286 "pic.y" /* yacc.c:1646  */
+#line 286 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.pl) = (yyvsp[-1].pl); }
-#line 2266 "pic.cpp" /* yacc.c:1646  */
+#line 2263 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 5:
-#line 291 "pic.y" /* yacc.c:1646  */
+#line 291 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.pl) = (yyvsp[0].pl); }
-#line 2272 "pic.cpp" /* yacc.c:1646  */
+#line 2269 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 6:
-#line 293 "pic.y" /* yacc.c:1646  */
+#line 293 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.pl) = (yyvsp[-2].pl); }
-#line 2278 "pic.cpp" /* yacc.c:1646  */
+#line 2275 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 11:
-#line 308 "pic.y" /* yacc.c:1646  */
+#line 308 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  a_delete graphname;
                  graphname = new char[strlen((yyvsp[0].str)) + 1];
                  strcpy(graphname, (yyvsp[0].str));
                  a_delete (yyvsp[0].str);
                }
-#line 2289 "pic.cpp" /* yacc.c:1646  */
+#line 2286 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 12:
-#line 316 "pic.y" /* yacc.c:1646  */
+#line 316 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  define_variable((yyvsp[-2].str), (yyvsp[0].x));
-                 a_delete (yyvsp[-2].str);
+                 free((yyvsp[-2].str));
                }
-#line 2298 "pic.cpp" /* yacc.c:1646  */
+#line 2295 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 13:
-#line 321 "pic.y" /* yacc.c:1646  */
+#line 321 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  place *p = lookup_label((yyvsp[-3].str));
                  if (!p) {
-                   lex_error("variable `%1' not defined", (yyvsp[-3].str));
+                   lex_error("variable '%1' not defined", (yyvsp[-3].str));
                    YYABORT;
                  }
                  p->obj = 0;
                  p->x = (yyvsp[0].x);
                  p->y = 0.0;
-                 a_delete (yyvsp[-3].str);
+                 free((yyvsp[-3].str));
                }
-#line 2314 "pic.cpp" /* yacc.c:1646  */
+#line 2311 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 14:
-#line 333 "pic.y" /* yacc.c:1646  */
+#line 333 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { current_direction = UP_DIRECTION; }
-#line 2320 "pic.cpp" /* yacc.c:1646  */
+#line 2317 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 15:
-#line 335 "pic.y" /* yacc.c:1646  */
+#line 335 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { current_direction = DOWN_DIRECTION; }
-#line 2326 "pic.cpp" /* yacc.c:1646  */
+#line 2323 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 16:
-#line 337 "pic.y" /* yacc.c:1646  */
+#line 337 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { current_direction = LEFT_DIRECTION; }
-#line 2332 "pic.cpp" /* yacc.c:1646  */
+#line 2329 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 17:
-#line 339 "pic.y" /* yacc.c:1646  */
+#line 339 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { current_direction = RIGHT_DIRECTION; }
-#line 2338 "pic.cpp" /* yacc.c:1646  */
+#line 2335 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 18:
-#line 341 "pic.y" /* yacc.c:1646  */
+#line 341 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  olist.append(make_command_object((yyvsp[0].lstr).str, (yyvsp[0].lstr).filename,
                                                   (yyvsp[0].lstr).lineno));
                }
-#line 2347 "pic.cpp" /* yacc.c:1646  */
+#line 2344 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 19:
-#line 346 "pic.y" /* yacc.c:1646  */
+#line 346 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  olist.append(make_command_object((yyvsp[0].lstr).str, (yyvsp[0].lstr).filename,
                                                   (yyvsp[0].lstr).lineno));
                }
-#line 2356 "pic.cpp" /* yacc.c:1646  */
+#line 2353 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 20:
-#line 351 "pic.y" /* yacc.c:1646  */
+#line 351 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  fprintf(stderr, "%s\n", (yyvsp[0].lstr).str);
                  a_delete (yyvsp[0].lstr).str;
                  fflush(stderr);
                }
-#line 2366 "pic.cpp" /* yacc.c:1646  */
+#line 2363 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 21:
-#line 357 "pic.y" /* yacc.c:1646  */
+#line 357 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { delim_flag = 1; }
-#line 2372 "pic.cpp" /* yacc.c:1646  */
+#line 2369 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 22:
-#line 359 "pic.y" /* yacc.c:1646  */
+#line 359 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  delim_flag = 0;
                  if (safer_flag)
-                   lex_error("unsafe to run command `%1'", (yyvsp[0].str));
+                   lex_error("unsafe to run command '%1'", (yyvsp[0].str));
                  else
                    system((yyvsp[0].str));
                  a_delete (yyvsp[0].str);
                }
-#line 2385 "pic.cpp" /* yacc.c:1646  */
+#line 2382 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 23:
-#line 368 "pic.y" /* yacc.c:1646  */
+#line 368 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  if (yychar < 0)
                    do_lookahead();
                  do_copy((yyvsp[0].lstr).str);
                  // do not delete the filename
                }
-#line 2396 "pic.cpp" /* yacc.c:1646  */
+#line 2393 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 24:
-#line 375 "pic.y" /* yacc.c:1646  */
+#line 375 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { delim_flag = 2; }
-#line 2402 "pic.cpp" /* yacc.c:1646  */
+#line 2399 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 25:
-#line 377 "pic.y" /* yacc.c:1646  */
+#line 377 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { delim_flag = 0; }
-#line 2408 "pic.cpp" /* yacc.c:1646  */
+#line 2405 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 26:
-#line 379 "pic.y" /* yacc.c:1646  */
+#line 379 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  if (yychar < 0)
                    do_lookahead();
@@ -2417,23 +2414,23 @@ yyreduce:
                  a_delete (yyvsp[-2].str);
                  a_delete (yyvsp[0].str);
                }
-#line 2421 "pic.cpp" /* yacc.c:1646  */
+#line 2418 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 27:
-#line 388 "pic.y" /* yacc.c:1646  */
+#line 388 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { delim_flag = 2; }
-#line 2427 "pic.cpp" /* yacc.c:1646  */
+#line 2424 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 28:
-#line 390 "pic.y" /* yacc.c:1646  */
+#line 390 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { delim_flag = 0; }
-#line 2433 "pic.cpp" /* yacc.c:1646  */
+#line 2430 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 29:
-#line 392 "pic.y" /* yacc.c:1646  */
+#line 392 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  if (yychar < 0)
                    do_lookahead();
@@ -2441,28 +2438,28 @@ yyreduce:
                  a_delete (yyvsp[-2].str);
                  a_delete (yyvsp[0].str);
                }
-#line 2445 "pic.cpp" /* yacc.c:1646  */
+#line 2442 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 30:
-#line 400 "pic.y" /* yacc.c:1646  */
+#line 400 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { delim_flag = 1; }
-#line 2451 "pic.cpp" /* yacc.c:1646  */
+#line 2448 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 31:
-#line 402 "pic.y" /* yacc.c:1646  */
+#line 402 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  delim_flag = 0;
                  if (yychar < 0)
                    do_lookahead();
                  do_for((yyvsp[-8].str), (yyvsp[-6].x), (yyvsp[-4].x), (yyvsp[-3].by).is_multiplicative, (yyvsp[-3].by).val, (yyvsp[0].str)); 
                }
-#line 2462 "pic.cpp" /* yacc.c:1646  */
+#line 2459 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 32:
-#line 409 "pic.y" /* yacc.c:1646  */
+#line 409 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  if (yychar < 0)
                    do_lookahead();
@@ -2470,17 +2467,17 @@ yyreduce:
                    push_body((yyvsp[0].if_data).body);
                  a_delete (yyvsp[0].if_data).body;
                }
-#line 2474 "pic.cpp" /* yacc.c:1646  */
+#line 2471 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 33:
-#line 417 "pic.y" /* yacc.c:1646  */
+#line 417 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { delim_flag = 1; }
-#line 2480 "pic.cpp" /* yacc.c:1646  */
+#line 2477 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 34:
-#line 419 "pic.y" /* yacc.c:1646  */
+#line 419 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  delim_flag = 0;
                  if (yychar < 0)
@@ -2489,53 +2486,53 @@ yyreduce:
                    push_body((yyvsp[-3].if_data).body);
                  else
                    push_body((yyvsp[0].str));
-                 a_delete (yyvsp[-3].if_data).body;
-                 a_delete (yyvsp[0].str);
+                 free((yyvsp[-3].if_data).body);
+                 free((yyvsp[0].str));
                }
-#line 2496 "pic.cpp" /* yacc.c:1646  */
+#line 2493 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 36:
-#line 432 "pic.y" /* yacc.c:1646  */
+#line 432 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { define_variable("scale", 1.0); }
-#line 2502 "pic.cpp" /* yacc.c:1646  */
+#line 2499 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 39:
-#line 442 "pic.y" /* yacc.c:1646  */
+#line 442 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  reset((yyvsp[0].str));
                  a_delete (yyvsp[0].str);
                }
-#line 2511 "pic.cpp" /* yacc.c:1646  */
+#line 2508 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 40:
-#line 447 "pic.y" /* yacc.c:1646  */
+#line 447 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  reset((yyvsp[0].str));
                  a_delete (yyvsp[0].str);
                }
-#line 2520 "pic.cpp" /* yacc.c:1646  */
+#line 2517 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 41:
-#line 452 "pic.y" /* yacc.c:1646  */
+#line 452 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  reset((yyvsp[0].str));
                  a_delete (yyvsp[0].str);
                }
-#line 2529 "pic.cpp" /* yacc.c:1646  */
+#line 2526 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 42:
-#line 460 "pic.y" /* yacc.c:1646  */
+#line 460 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.lstr) = (yyvsp[0].lstr); }
-#line 2535 "pic.cpp" /* yacc.c:1646  */
+#line 2532 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 43:
-#line 462 "pic.y" /* yacc.c:1646  */
+#line 462 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.lstr).str = new char[strlen((yyvsp[-1].lstr).str) + strlen((yyvsp[0].lstr).str) + 1];
                  strcpy((yyval.lstr).str, (yyvsp[-1].lstr).str);
@@ -2551,168 +2548,168 @@ yyreduce:
                    (yyval.lstr).lineno = (yyvsp[0].lstr).lineno;
                  }
                }
-#line 2555 "pic.cpp" /* yacc.c:1646  */
+#line 2552 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 44:
-#line 481 "pic.y" /* yacc.c:1646  */
+#line 481 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.lstr).str = new char[GDIGITS + 1];
                  sprintf((yyval.lstr).str, "%g", (yyvsp[0].x));
                  (yyval.lstr).filename = 0;
                  (yyval.lstr).lineno = 0;
                }
-#line 2566 "pic.cpp" /* yacc.c:1646  */
+#line 2563 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 45:
-#line 488 "pic.y" /* yacc.c:1646  */
+#line 488 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.lstr) = (yyvsp[0].lstr); }
-#line 2572 "pic.cpp" /* yacc.c:1646  */
+#line 2569 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 46:
-#line 490 "pic.y" /* yacc.c:1646  */
+#line 490 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.lstr).str = new char[GDIGITS + 2 + GDIGITS + 1];
                  sprintf((yyval.lstr).str, "%g, %g", (yyvsp[0].pair).x, (yyvsp[0].pair).y);
                  (yyval.lstr).filename = 0;
                  (yyval.lstr).lineno = 0;
                }
-#line 2583 "pic.cpp" /* yacc.c:1646  */
+#line 2580 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 47:
-#line 500 "pic.y" /* yacc.c:1646  */
+#line 500 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { delim_flag = 1; }
-#line 2589 "pic.cpp" /* yacc.c:1646  */
+#line 2586 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 48:
-#line 502 "pic.y" /* yacc.c:1646  */
+#line 502 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  delim_flag = 0;
                  (yyval.if_data).x = (yyvsp[-3].x);
                  (yyval.if_data).body = (yyvsp[0].str);
                }
-#line 2599 "pic.cpp" /* yacc.c:1646  */
+#line 2596 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 49:
-#line 511 "pic.y" /* yacc.c:1646  */
+#line 511 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.str) = 0; }
-#line 2605 "pic.cpp" /* yacc.c:1646  */
+#line 2602 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 50:
-#line 513 "pic.y" /* yacc.c:1646  */
+#line 513 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.str) = (yyvsp[0].lstr).str; }
-#line 2611 "pic.cpp" /* yacc.c:1646  */
+#line 2608 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 51:
-#line 518 "pic.y" /* yacc.c:1646  */
+#line 518 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.x) = (yyvsp[0].x); }
-#line 2617 "pic.cpp" /* yacc.c:1646  */
+#line 2614 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 52:
-#line 520 "pic.y" /* yacc.c:1646  */
+#line 520 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.x) = (yyvsp[0].x); }
-#line 2623 "pic.cpp" /* yacc.c:1646  */
+#line 2620 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 53:
-#line 525 "pic.y" /* yacc.c:1646  */
+#line 525 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.x) = strcmp((yyvsp[-2].lstr).str, (yyvsp[0].lstr).str) == 0;
                  a_delete (yyvsp[-2].lstr).str;
                  a_delete (yyvsp[0].lstr).str;
                }
-#line 2633 "pic.cpp" /* yacc.c:1646  */
+#line 2630 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 54:
-#line 531 "pic.y" /* yacc.c:1646  */
+#line 531 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.x) = strcmp((yyvsp[-2].lstr).str, (yyvsp[0].lstr).str) != 0;
                  a_delete (yyvsp[-2].lstr).str;
                  a_delete (yyvsp[0].lstr).str;
                }
-#line 2643 "pic.cpp" /* yacc.c:1646  */
+#line 2640 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 55:
-#line 537 "pic.y" /* yacc.c:1646  */
+#line 537 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.x) = ((yyvsp[-2].x) != 0.0 && (yyvsp[0].x) != 0.0); }
-#line 2649 "pic.cpp" /* yacc.c:1646  */
+#line 2646 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 56:
-#line 539 "pic.y" /* yacc.c:1646  */
+#line 539 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.x) = ((yyvsp[-2].x) != 0.0 && (yyvsp[0].x) != 0.0); }
-#line 2655 "pic.cpp" /* yacc.c:1646  */
+#line 2652 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 57:
-#line 541 "pic.y" /* yacc.c:1646  */
+#line 541 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.x) = ((yyvsp[-2].x) != 0.0 && (yyvsp[0].x) != 0.0); }
-#line 2661 "pic.cpp" /* yacc.c:1646  */
+#line 2658 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 58:
-#line 543 "pic.y" /* yacc.c:1646  */
+#line 543 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.x) = ((yyvsp[-2].x) != 0.0 || (yyvsp[0].x) != 0.0); }
-#line 2667 "pic.cpp" /* yacc.c:1646  */
+#line 2664 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 59:
-#line 545 "pic.y" /* yacc.c:1646  */
+#line 545 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.x) = ((yyvsp[-2].x) != 0.0 || (yyvsp[0].x) != 0.0); }
-#line 2673 "pic.cpp" /* yacc.c:1646  */
+#line 2670 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 60:
-#line 547 "pic.y" /* yacc.c:1646  */
+#line 547 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.x) = ((yyvsp[-2].x) != 0.0 || (yyvsp[0].x) != 0.0); }
-#line 2679 "pic.cpp" /* yacc.c:1646  */
+#line 2676 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 61:
-#line 549 "pic.y" /* yacc.c:1646  */
+#line 549 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.x) = ((yyvsp[0].x) == 0.0); }
-#line 2685 "pic.cpp" /* yacc.c:1646  */
+#line 2682 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 62:
-#line 555 "pic.y" /* yacc.c:1646  */
+#line 555 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.by).val = 1.0;
                  (yyval.by).is_multiplicative = 0;
                }
-#line 2694 "pic.cpp" /* yacc.c:1646  */
+#line 2691 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 63:
-#line 560 "pic.y" /* yacc.c:1646  */
+#line 560 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.by).val = (yyvsp[0].x);
                  (yyval.by).is_multiplicative = 0;
                }
-#line 2703 "pic.cpp" /* yacc.c:1646  */
+#line 2700 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 64:
-#line 565 "pic.y" /* yacc.c:1646  */
+#line 565 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.by).val = (yyvsp[0].x);
                  (yyval.by).is_multiplicative = 1;
                }
-#line 2712 "pic.cpp" /* yacc.c:1646  */
+#line 2709 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 65:
-#line 573 "pic.y" /* yacc.c:1646  */
+#line 573 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.pl).obj = (yyvsp[0].spec)->make_object(&current_position,
                                           &current_direction);
@@ -2726,193 +2723,193 @@ yyreduce:
                    (yyval.pl).y = current_position.y;
                  }
                }
-#line 2730 "pic.cpp" /* yacc.c:1646  */
+#line 2727 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 66:
-#line 587 "pic.y" /* yacc.c:1646  */
+#line 587 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.pl) = (yyvsp[0].pl);
                  define_label((yyvsp[-3].str), & (yyval.pl));
-                 a_delete (yyvsp[-3].str);
+                 free((yyvsp[-3].str));
                }
-#line 2740 "pic.cpp" /* yacc.c:1646  */
+#line 2737 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 67:
-#line 593 "pic.y" /* yacc.c:1646  */
+#line 593 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.pl).obj = 0;
                  (yyval.pl).x = (yyvsp[0].pair).x;
                  (yyval.pl).y = (yyvsp[0].pair).y;
                  define_label((yyvsp[-3].str), & (yyval.pl));
-                 a_delete (yyvsp[-3].str);
+                 free((yyvsp[-3].str));
                }
-#line 2752 "pic.cpp" /* yacc.c:1646  */
+#line 2749 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 68:
-#line 601 "pic.y" /* yacc.c:1646  */
+#line 601 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.pl) = (yyvsp[0].pl);
                  define_label((yyvsp[-3].str), & (yyval.pl));
-                 a_delete (yyvsp[-3].str);
+                 free((yyvsp[-3].str));
                }
-#line 2762 "pic.cpp" /* yacc.c:1646  */
+#line 2759 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 69:
-#line 607 "pic.y" /* yacc.c:1646  */
+#line 607 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.state).x = current_position.x;
                  (yyval.state).y = current_position.y;
                  (yyval.state).dir = current_direction;
                }
-#line 2772 "pic.cpp" /* yacc.c:1646  */
+#line 2769 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 70:
-#line 613 "pic.y" /* yacc.c:1646  */
+#line 613 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  current_position.x = (yyvsp[-2].state).x;
                  current_position.y = (yyvsp[-2].state).y;
                  current_direction = (yyvsp[-2].state).dir;
                }
-#line 2782 "pic.cpp" /* yacc.c:1646  */
+#line 2779 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 71:
-#line 619 "pic.y" /* yacc.c:1646  */
+#line 619 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.pl) = (yyvsp[-3].pl);
                }
-#line 2790 "pic.cpp" /* yacc.c:1646  */
+#line 2787 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 72:
-#line 623 "pic.y" /* yacc.c:1646  */
+#line 623 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.pl).obj = 0;
                  (yyval.pl).x = current_position.x;
                  (yyval.pl).y = current_position.y;
                }
-#line 2800 "pic.cpp" /* yacc.c:1646  */
+#line 2797 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 73:
-#line 632 "pic.y" /* yacc.c:1646  */
+#line 632 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {}
-#line 2806 "pic.cpp" /* yacc.c:1646  */
+#line 2803 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 74:
-#line 634 "pic.y" /* yacc.c:1646  */
+#line 634 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {}
-#line 2812 "pic.cpp" /* yacc.c:1646  */
+#line 2809 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 75:
-#line 639 "pic.y" /* yacc.c:1646  */
+#line 639 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.spec) = new object_spec(BOX_OBJECT); }
-#line 2818 "pic.cpp" /* yacc.c:1646  */
+#line 2815 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 76:
-#line 641 "pic.y" /* yacc.c:1646  */
+#line 641 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.spec) = new object_spec(CIRCLE_OBJECT); }
-#line 2824 "pic.cpp" /* yacc.c:1646  */
+#line 2821 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 77:
-#line 643 "pic.y" /* yacc.c:1646  */
+#line 643 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.spec) = new object_spec(ELLIPSE_OBJECT); }
-#line 2830 "pic.cpp" /* yacc.c:1646  */
+#line 2827 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 78:
-#line 645 "pic.y" /* yacc.c:1646  */
+#line 645 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.spec) = new object_spec(ARC_OBJECT);
                  (yyval.spec)->dir = current_direction;
                }
-#line 2839 "pic.cpp" /* yacc.c:1646  */
+#line 2836 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 79:
-#line 650 "pic.y" /* yacc.c:1646  */
+#line 650 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.spec) = new object_spec(LINE_OBJECT);
                  lookup_variable("lineht", & (yyval.spec)->segment_height);
                  lookup_variable("linewid", & (yyval.spec)->segment_width);
                  (yyval.spec)->dir = current_direction;
                }
-#line 2850 "pic.cpp" /* yacc.c:1646  */
+#line 2847 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 80:
-#line 657 "pic.y" /* yacc.c:1646  */
+#line 657 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.spec) = new object_spec(ARROW_OBJECT);
                  lookup_variable("lineht", & (yyval.spec)->segment_height);
                  lookup_variable("linewid", & (yyval.spec)->segment_width);
                  (yyval.spec)->dir = current_direction;
                }
-#line 2861 "pic.cpp" /* yacc.c:1646  */
+#line 2858 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 81:
-#line 664 "pic.y" /* yacc.c:1646  */
+#line 664 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.spec) = new object_spec(MOVE_OBJECT);
                  lookup_variable("moveht", & (yyval.spec)->segment_height);
                  lookup_variable("movewid", & (yyval.spec)->segment_width);
                  (yyval.spec)->dir = current_direction;
                }
-#line 2872 "pic.cpp" /* yacc.c:1646  */
+#line 2869 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 82:
-#line 671 "pic.y" /* yacc.c:1646  */
+#line 671 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.spec) = new object_spec(SPLINE_OBJECT);
                  lookup_variable("lineht", & (yyval.spec)->segment_height);
                  lookup_variable("linewid", & (yyval.spec)->segment_width);
                  (yyval.spec)->dir = current_direction;
                }
-#line 2883 "pic.cpp" /* yacc.c:1646  */
+#line 2880 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 83:
-#line 678 "pic.y" /* yacc.c:1646  */
+#line 678 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.spec) = new object_spec(TEXT_OBJECT);
                  (yyval.spec)->text = new text_item((yyvsp[0].lstr).str, (yyvsp[0].lstr).filename, (yyvsp[0].lstr).lineno);
                }
-#line 2892 "pic.cpp" /* yacc.c:1646  */
+#line 2889 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 84:
-#line 683 "pic.y" /* yacc.c:1646  */
+#line 683 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.spec) = new object_spec(TEXT_OBJECT);
                  (yyval.spec)->text = new text_item(format_number(0, (yyvsp[0].x)), 0, -1);
                }
-#line 2901 "pic.cpp" /* yacc.c:1646  */
+#line 2898 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 85:
-#line 688 "pic.y" /* yacc.c:1646  */
+#line 688 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.spec) = new object_spec(TEXT_OBJECT);
                  (yyval.spec)->text = new text_item(format_number((yyvsp[0].lstr).str, (yyvsp[-1].x)),
                                           (yyvsp[0].lstr).filename, (yyvsp[0].lstr).lineno);
                  a_delete (yyvsp[0].lstr).str;
                }
-#line 2912 "pic.cpp" /* yacc.c:1646  */
+#line 2909 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 86:
-#line 695 "pic.y" /* yacc.c:1646  */
+#line 695 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  saved_state *p = new saved_state;
                  (yyval.pstate) = p;
@@ -2927,11 +2924,11 @@ yyreduce:
                  current_saved_state = p;
                  olist.append(make_mark_object());
                }
-#line 2931 "pic.cpp" /* yacc.c:1646  */
+#line 2928 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 87:
-#line 710 "pic.y" /* yacc.c:1646  */
+#line 710 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  current_position.x = (yyvsp[-2].pstate)->x;
                  current_position.y = (yyvsp[-2].pstate)->y;
@@ -2943,51 +2940,51 @@ yyreduce:
                  current_saved_state = (yyvsp[-2].pstate)->prev;
                  delete (yyvsp[-2].pstate);
                }
-#line 2947 "pic.cpp" /* yacc.c:1646  */
+#line 2944 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 88:
-#line 722 "pic.y" /* yacc.c:1646  */
+#line 722 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.spec) = (yyvsp[-2].spec);
                  (yyval.spec)->height = (yyvsp[0].x);
                  (yyval.spec)->flags |= HAS_HEIGHT;
                }
-#line 2957 "pic.cpp" /* yacc.c:1646  */
+#line 2954 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 89:
-#line 728 "pic.y" /* yacc.c:1646  */
+#line 728 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.spec) = (yyvsp[-2].spec);
                  (yyval.spec)->radius = (yyvsp[0].x);
                  (yyval.spec)->flags |= HAS_RADIUS;
                }
-#line 2967 "pic.cpp" /* yacc.c:1646  */
+#line 2964 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 90:
-#line 734 "pic.y" /* yacc.c:1646  */
+#line 734 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.spec) = (yyvsp[-2].spec);
                  (yyval.spec)->width = (yyvsp[0].x);
                  (yyval.spec)->flags |= HAS_WIDTH;
                }
-#line 2977 "pic.cpp" /* yacc.c:1646  */
+#line 2974 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 91:
-#line 740 "pic.y" /* yacc.c:1646  */
+#line 740 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.spec) = (yyvsp[-2].spec);
                  (yyval.spec)->radius = (yyvsp[0].x)/2.0;
                  (yyval.spec)->flags |= HAS_RADIUS;
                }
-#line 2987 "pic.cpp" /* yacc.c:1646  */
+#line 2984 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 92:
-#line 746 "pic.y" /* yacc.c:1646  */
+#line 746 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.spec) = (yyvsp[-1].spec);
                  (yyval.spec)->flags |= HAS_SEGMENT;
@@ -3006,110 +3003,110 @@ yyreduce:
                    break;
                  }
                }
-#line 3010 "pic.cpp" /* yacc.c:1646  */
+#line 3007 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 93:
-#line 765 "pic.y" /* yacc.c:1646  */
+#line 765 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.spec) = (yyvsp[-1].spec);
                  (yyval.spec)->dir = UP_DIRECTION;
                  (yyval.spec)->flags |= HAS_SEGMENT;
                  (yyval.spec)->segment_pos.y += (yyval.spec)->segment_height;
                }
-#line 3021 "pic.cpp" /* yacc.c:1646  */
+#line 3018 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 94:
-#line 772 "pic.y" /* yacc.c:1646  */
+#line 772 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.spec) = (yyvsp[-2].spec);
                  (yyval.spec)->dir = UP_DIRECTION;
                  (yyval.spec)->flags |= HAS_SEGMENT;
                  (yyval.spec)->segment_pos.y += (yyvsp[0].x);
                }
-#line 3032 "pic.cpp" /* yacc.c:1646  */
+#line 3029 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 95:
-#line 779 "pic.y" /* yacc.c:1646  */
+#line 779 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.spec) = (yyvsp[-1].spec);
                  (yyval.spec)->dir = DOWN_DIRECTION;
                  (yyval.spec)->flags |= HAS_SEGMENT;
                  (yyval.spec)->segment_pos.y -= (yyval.spec)->segment_height;
                }
-#line 3043 "pic.cpp" /* yacc.c:1646  */
+#line 3040 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 96:
-#line 786 "pic.y" /* yacc.c:1646  */
+#line 786 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.spec) = (yyvsp[-2].spec);
                  (yyval.spec)->dir = DOWN_DIRECTION;
                  (yyval.spec)->flags |= HAS_SEGMENT;
                  (yyval.spec)->segment_pos.y -= (yyvsp[0].x);
                }
-#line 3054 "pic.cpp" /* yacc.c:1646  */
+#line 3051 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 97:
-#line 793 "pic.y" /* yacc.c:1646  */
+#line 793 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.spec) = (yyvsp[-1].spec);
                  (yyval.spec)->dir = RIGHT_DIRECTION;
                  (yyval.spec)->flags |= HAS_SEGMENT;
                  (yyval.spec)->segment_pos.x += (yyval.spec)->segment_width;
                }
-#line 3065 "pic.cpp" /* yacc.c:1646  */
+#line 3062 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 98:
-#line 800 "pic.y" /* yacc.c:1646  */
+#line 800 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.spec) = (yyvsp[-2].spec);
                  (yyval.spec)->dir = RIGHT_DIRECTION;
                  (yyval.spec)->flags |= HAS_SEGMENT;
                  (yyval.spec)->segment_pos.x += (yyvsp[0].x);
                }
-#line 3076 "pic.cpp" /* yacc.c:1646  */
+#line 3073 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 99:
-#line 807 "pic.y" /* yacc.c:1646  */
+#line 807 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.spec) = (yyvsp[-1].spec);
                  (yyval.spec)->dir = LEFT_DIRECTION;
                  (yyval.spec)->flags |= HAS_SEGMENT;
                  (yyval.spec)->segment_pos.x -= (yyval.spec)->segment_width;
                }
-#line 3087 "pic.cpp" /* yacc.c:1646  */
+#line 3084 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 100:
-#line 814 "pic.y" /* yacc.c:1646  */
+#line 814 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.spec) = (yyvsp[-2].spec);
                  (yyval.spec)->dir = LEFT_DIRECTION;
                  (yyval.spec)->flags |= HAS_SEGMENT;
                  (yyval.spec)->segment_pos.x -= (yyvsp[0].x);
                }
-#line 3098 "pic.cpp" /* yacc.c:1646  */
+#line 3095 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 101:
-#line 821 "pic.y" /* yacc.c:1646  */
+#line 821 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.spec) = (yyvsp[-2].spec);
                  (yyval.spec)->flags |= HAS_FROM;
                  (yyval.spec)->from.x = (yyvsp[0].pair).x;
                  (yyval.spec)->from.y = (yyvsp[0].pair).y;
                }
-#line 3109 "pic.cpp" /* yacc.c:1646  */
+#line 3106 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 102:
-#line 828 "pic.y" /* yacc.c:1646  */
+#line 828 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.spec) = (yyvsp[-2].spec);
                  if ((yyval.spec)->flags & HAS_SEGMENT)
@@ -3124,11 +3121,11 @@ yyreduce:
                  (yyval.spec)->to.x = (yyvsp[0].pair).x;
                  (yyval.spec)->to.y = (yyvsp[0].pair).y;
                }
-#line 3128 "pic.cpp" /* yacc.c:1646  */
+#line 3125 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 103:
-#line 843 "pic.y" /* yacc.c:1646  */
+#line 843 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.spec) = (yyvsp[-2].spec);
                  (yyval.spec)->flags |= HAS_AT;
@@ -3140,21 +3137,21 @@ yyreduce:
                    (yyval.spec)->from.y = (yyvsp[0].pair).y;
                  }
                }
-#line 3144 "pic.cpp" /* yacc.c:1646  */
+#line 3141 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 104:
-#line 855 "pic.y" /* yacc.c:1646  */
+#line 855 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.spec) = (yyvsp[-2].spec);
                  (yyval.spec)->flags |= HAS_WITH;
                  (yyval.spec)->with = (yyvsp[0].pth);
                }
-#line 3154 "pic.cpp" /* yacc.c:1646  */
+#line 3151 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 105:
-#line 861 "pic.y" /* yacc.c:1646  */
+#line 861 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.spec) = (yyvsp[-2].spec);
                  (yyval.spec)->flags |= HAS_WITH;
@@ -3163,22 +3160,22 @@ yyreduce:
                  pos.y = (yyvsp[0].pair).y;
                  (yyval.spec)->with = new path(pos);
                }
-#line 3167 "pic.cpp" /* yacc.c:1646  */
+#line 3164 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 106:
-#line 870 "pic.y" /* yacc.c:1646  */
+#line 870 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.spec) = (yyvsp[-2].spec);
                  (yyval.spec)->flags |= HAS_SEGMENT;
                  (yyval.spec)->segment_pos.x += (yyvsp[0].pair).x;
                  (yyval.spec)->segment_pos.y += (yyvsp[0].pair).y;
                }
-#line 3178 "pic.cpp" /* yacc.c:1646  */
+#line 3175 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 107:
-#line 877 "pic.y" /* yacc.c:1646  */
+#line 877 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.spec) = (yyvsp[-1].spec);
                  if (!((yyval.spec)->flags & HAS_SEGMENT))
@@ -3203,109 +3200,109 @@ yyreduce:
                  (yyval.spec)->segment_pos.x = (yyval.spec)->segment_pos.y = 0.0;
                  (yyval.spec)->segment_is_absolute = 0;
                }
-#line 3207 "pic.cpp" /* yacc.c:1646  */
+#line 3204 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 108:
-#line 902 "pic.y" /* yacc.c:1646  */
+#line 902 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.spec) = (yyvsp[-1].spec);      // nothing
                }
-#line 3215 "pic.cpp" /* yacc.c:1646  */
+#line 3212 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 109:
-#line 906 "pic.y" /* yacc.c:1646  */
+#line 906 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.spec) = (yyvsp[-1].spec);
                  (yyval.spec)->flags |= IS_DOTTED;
                  lookup_variable("dashwid", & (yyval.spec)->dash_width);
                }
-#line 3225 "pic.cpp" /* yacc.c:1646  */
+#line 3222 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 110:
-#line 912 "pic.y" /* yacc.c:1646  */
+#line 912 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.spec) = (yyvsp[-2].spec);
                  (yyval.spec)->flags |= IS_DOTTED;
                  (yyval.spec)->dash_width = (yyvsp[0].x);
                }
-#line 3235 "pic.cpp" /* yacc.c:1646  */
+#line 3232 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 111:
-#line 918 "pic.y" /* yacc.c:1646  */
+#line 918 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.spec) = (yyvsp[-1].spec);
                  (yyval.spec)->flags |= IS_DASHED;
                  lookup_variable("dashwid", & (yyval.spec)->dash_width);
                }
-#line 3245 "pic.cpp" /* yacc.c:1646  */
+#line 3242 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 112:
-#line 924 "pic.y" /* yacc.c:1646  */
+#line 924 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.spec) = (yyvsp[-2].spec);
                  (yyval.spec)->flags |= IS_DASHED;
                  (yyval.spec)->dash_width = (yyvsp[0].x);
                }
-#line 3255 "pic.cpp" /* yacc.c:1646  */
+#line 3252 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 113:
-#line 930 "pic.y" /* yacc.c:1646  */
+#line 930 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.spec) = (yyvsp[-1].spec);
                  (yyval.spec)->flags |= IS_DEFAULT_FILLED;
                }
-#line 3264 "pic.cpp" /* yacc.c:1646  */
+#line 3261 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 114:
-#line 935 "pic.y" /* yacc.c:1646  */
+#line 935 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.spec) = (yyvsp[-2].spec);
                  (yyval.spec)->flags |= IS_FILLED;
                  (yyval.spec)->fill = (yyvsp[0].x);
                }
-#line 3274 "pic.cpp" /* yacc.c:1646  */
+#line 3271 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 115:
-#line 941 "pic.y" /* yacc.c:1646  */
+#line 941 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.spec) = (yyvsp[-2].spec);
                  (yyval.spec)->flags |= IS_XSLANTED;
                  (yyval.spec)->xslanted = (yyvsp[0].x);
                }
-#line 3284 "pic.cpp" /* yacc.c:1646  */
+#line 3281 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 116:
-#line 947 "pic.y" /* yacc.c:1646  */
+#line 947 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.spec) = (yyvsp[-2].spec);
                  (yyval.spec)->flags |= IS_YSLANTED;
                  (yyval.spec)->yslanted = (yyvsp[0].x);
                }
-#line 3294 "pic.cpp" /* yacc.c:1646  */
+#line 3291 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 117:
-#line 953 "pic.y" /* yacc.c:1646  */
+#line 953 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.spec) = (yyvsp[-2].spec);
                  (yyval.spec)->flags |= (IS_SHADED | IS_FILLED);
                  (yyval.spec)->shaded = new char[strlen((yyvsp[0].lstr).str)+1];
                  strcpy((yyval.spec)->shaded, (yyvsp[0].lstr).str);
                }
-#line 3305 "pic.cpp" /* yacc.c:1646  */
+#line 3302 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 118:
-#line 960 "pic.y" /* yacc.c:1646  */
+#line 960 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.spec) = (yyvsp[-2].spec);
                  (yyval.spec)->flags |= (IS_SHADED | IS_OUTLINED | IS_FILLED);
@@ -3314,22 +3311,22 @@ yyreduce:
                  (yyval.spec)->outlined = new char[strlen((yyvsp[0].lstr).str)+1];
                  strcpy((yyval.spec)->outlined, (yyvsp[0].lstr).str);
                }
-#line 3318 "pic.cpp" /* yacc.c:1646  */
+#line 3315 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 119:
-#line 969 "pic.y" /* yacc.c:1646  */
+#line 969 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.spec) = (yyvsp[-2].spec);
                  (yyval.spec)->flags |= IS_OUTLINED;
                  (yyval.spec)->outlined = new char[strlen((yyvsp[0].lstr).str)+1];
                  strcpy((yyval.spec)->outlined, (yyvsp[0].lstr).str);
                }
-#line 3329 "pic.cpp" /* yacc.c:1646  */
+#line 3326 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 120:
-#line 976 "pic.y" /* yacc.c:1646  */
+#line 976 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.spec) = (yyvsp[-1].spec);
                  // line chop chop means line chop 0 chop 0
@@ -3345,11 +3342,11 @@ yyreduce:
                    (yyval.spec)->flags |= IS_DEFAULT_CHOPPED;
                  }
                }
-#line 3349 "pic.cpp" /* yacc.c:1646  */
+#line 3346 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 121:
-#line 992 "pic.y" /* yacc.c:1646  */
+#line 992 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.spec) = (yyvsp[-2].spec);
                  if ((yyval.spec)->flags & IS_DEFAULT_CHOPPED) {
@@ -3366,74 +3363,74 @@ yyreduce:
                    (yyval.spec)->flags |= IS_CHOPPED;
                  }
                }
-#line 3370 "pic.cpp" /* yacc.c:1646  */
+#line 3367 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 122:
-#line 1009 "pic.y" /* yacc.c:1646  */
+#line 1009 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.spec) = (yyvsp[-1].spec);
                  (yyval.spec)->flags |= IS_SAME;
                }
-#line 3379 "pic.cpp" /* yacc.c:1646  */
+#line 3376 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 123:
-#line 1014 "pic.y" /* yacc.c:1646  */
+#line 1014 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.spec) = (yyvsp[-1].spec);
                  (yyval.spec)->flags |= IS_INVISIBLE;
                }
-#line 3388 "pic.cpp" /* yacc.c:1646  */
+#line 3385 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 124:
-#line 1019 "pic.y" /* yacc.c:1646  */
+#line 1019 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.spec) = (yyvsp[-1].spec);
                  (yyval.spec)->flags |= HAS_LEFT_ARROW_HEAD;
                }
-#line 3397 "pic.cpp" /* yacc.c:1646  */
+#line 3394 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 125:
-#line 1024 "pic.y" /* yacc.c:1646  */
+#line 1024 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.spec) = (yyvsp[-1].spec);
                  (yyval.spec)->flags |= HAS_RIGHT_ARROW_HEAD;
                }
-#line 3406 "pic.cpp" /* yacc.c:1646  */
+#line 3403 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 126:
-#line 1029 "pic.y" /* yacc.c:1646  */
+#line 1029 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.spec) = (yyvsp[-1].spec);
                  (yyval.spec)->flags |= (HAS_LEFT_ARROW_HEAD|HAS_RIGHT_ARROW_HEAD);
                }
-#line 3415 "pic.cpp" /* yacc.c:1646  */
+#line 3412 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 127:
-#line 1034 "pic.y" /* yacc.c:1646  */
+#line 1034 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.spec) = (yyvsp[-1].spec);
                  (yyval.spec)->flags |= IS_CLOCKWISE;
                }
-#line 3424 "pic.cpp" /* yacc.c:1646  */
+#line 3421 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 128:
-#line 1039 "pic.y" /* yacc.c:1646  */
+#line 1039 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.spec) = (yyvsp[-1].spec);
                  (yyval.spec)->flags &= ~IS_CLOCKWISE;
                }
-#line 3433 "pic.cpp" /* yacc.c:1646  */
+#line 3430 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 129:
-#line 1044 "pic.y" /* yacc.c:1646  */
+#line 1044 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.spec) = (yyvsp[-1].spec);
                  text_item **p;
@@ -3441,11 +3438,11 @@ yyreduce:
                    ;
                  *p = new text_item((yyvsp[0].lstr).str, (yyvsp[0].lstr).filename, (yyvsp[0].lstr).lineno);
                }
-#line 3445 "pic.cpp" /* yacc.c:1646  */
+#line 3442 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 130:
-#line 1052 "pic.y" /* yacc.c:1646  */
+#line 1052 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.spec) = (yyvsp[-1].spec);
                  if ((yyval.spec)->text) {
@@ -3455,11 +3452,11 @@ yyreduce:
                    p->adj.h = LEFT_ADJUST;
                  }
                }
-#line 3459 "pic.cpp" /* yacc.c:1646  */
+#line 3456 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 131:
-#line 1062 "pic.y" /* yacc.c:1646  */
+#line 1062 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.spec) = (yyvsp[-1].spec);
                  if ((yyval.spec)->text) {
@@ -3469,11 +3466,11 @@ yyreduce:
                    p->adj.h = RIGHT_ADJUST;
                  }
                }
-#line 3473 "pic.cpp" /* yacc.c:1646  */
+#line 3470 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 132:
-#line 1072 "pic.y" /* yacc.c:1646  */
+#line 1072 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.spec) = (yyvsp[-1].spec);
                  if ((yyval.spec)->text) {
@@ -3483,11 +3480,11 @@ yyreduce:
                    p->adj.v = ABOVE_ADJUST;
                  }
                }
-#line 3487 "pic.cpp" /* yacc.c:1646  */
+#line 3484 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 133:
-#line 1082 "pic.y" /* yacc.c:1646  */
+#line 1082 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.spec) = (yyvsp[-1].spec);
                  if ((yyval.spec)->text) {
@@ -3497,58 +3494,58 @@ yyreduce:
                    p->adj.v = BELOW_ADJUST;
                  }
                }
-#line 3501 "pic.cpp" /* yacc.c:1646  */
+#line 3498 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 134:
-#line 1092 "pic.y" /* yacc.c:1646  */
+#line 1092 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.spec) = (yyvsp[-2].spec);
                  (yyval.spec)->flags |= HAS_THICKNESS;
                  (yyval.spec)->thickness = (yyvsp[0].x);
                }
-#line 3511 "pic.cpp" /* yacc.c:1646  */
+#line 3508 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 135:
-#line 1098 "pic.y" /* yacc.c:1646  */
+#line 1098 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.spec) = (yyvsp[-1].spec);
                  (yyval.spec)->flags |= IS_ALIGNED;
                }
-#line 3520 "pic.cpp" /* yacc.c:1646  */
+#line 3517 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 136:
-#line 1106 "pic.y" /* yacc.c:1646  */
+#line 1106 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.lstr) = (yyvsp[0].lstr); }
-#line 3526 "pic.cpp" /* yacc.c:1646  */
+#line 3523 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 137:
-#line 1108 "pic.y" /* yacc.c:1646  */
+#line 1108 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.lstr).filename = (yyvsp[-2].lstr).filename;
                  (yyval.lstr).lineno = (yyvsp[-2].lstr).lineno;
                  (yyval.lstr).str = do_sprintf((yyvsp[-2].lstr).str, (yyvsp[-1].dv).v, (yyvsp[-1].dv).nv);
                  a_delete (yyvsp[-1].dv).v;
-                 a_delete (yyvsp[-2].lstr).str;
+                 free((yyvsp[-2].lstr).str);
                }
-#line 3538 "pic.cpp" /* yacc.c:1646  */
+#line 3535 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 138:
-#line 1119 "pic.y" /* yacc.c:1646  */
+#line 1119 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.dv).v = 0;
                  (yyval.dv).nv = 0;
                  (yyval.dv).maxv = 0;
                }
-#line 3548 "pic.cpp" /* yacc.c:1646  */
+#line 3545 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 139:
-#line 1125 "pic.y" /* yacc.c:1646  */
+#line 1125 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.dv) = (yyvsp[-2].dv);
                  if ((yyval.dv).nv >= (yyval.dv).maxv) {
@@ -3575,242 +3572,242 @@ yyreduce:
                  (yyval.dv).v[(yyval.dv).nv] = (yyvsp[0].x);
                  (yyval.dv).nv += 1;
                }
-#line 3579 "pic.cpp" /* yacc.c:1646  */
+#line 3576 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 140:
-#line 1155 "pic.y" /* yacc.c:1646  */
+#line 1155 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.pair) = (yyvsp[0].pair); }
-#line 3585 "pic.cpp" /* yacc.c:1646  */
+#line 3582 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 141:
-#line 1157 "pic.y" /* yacc.c:1646  */
+#line 1157 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  position pos = (yyvsp[0].pl);
                  (yyval.pair).x = pos.x;
                  (yyval.pair).y = pos.y;
                }
-#line 3595 "pic.cpp" /* yacc.c:1646  */
+#line 3592 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 142:
-#line 1163 "pic.y" /* yacc.c:1646  */
+#line 1163 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  position pos = (yyvsp[-1].pl);
                  (yyval.pair).x = pos.x;
                  (yyval.pair).y = pos.y;
                }
-#line 3605 "pic.cpp" /* yacc.c:1646  */
+#line 3602 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 143:
-#line 1172 "pic.y" /* yacc.c:1646  */
+#line 1172 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.pair) = (yyvsp[0].pair); }
-#line 3611 "pic.cpp" /* yacc.c:1646  */
+#line 3608 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 144:
-#line 1174 "pic.y" /* yacc.c:1646  */
+#line 1174 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.pair).x = (yyvsp[-2].pair).x + (yyvsp[0].pair).x;
                  (yyval.pair).y = (yyvsp[-2].pair).y + (yyvsp[0].pair).y;
                }
-#line 3620 "pic.cpp" /* yacc.c:1646  */
+#line 3617 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 145:
-#line 1179 "pic.y" /* yacc.c:1646  */
+#line 1179 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.pair).x = (yyvsp[-3].pair).x + (yyvsp[-1].pair).x;
                  (yyval.pair).y = (yyvsp[-3].pair).y + (yyvsp[-1].pair).y;
                }
-#line 3629 "pic.cpp" /* yacc.c:1646  */
+#line 3626 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 146:
-#line 1184 "pic.y" /* yacc.c:1646  */
+#line 1184 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.pair).x = (yyvsp[-2].pair).x - (yyvsp[0].pair).x;
                  (yyval.pair).y = (yyvsp[-2].pair).y - (yyvsp[0].pair).y;
                }
-#line 3638 "pic.cpp" /* yacc.c:1646  */
+#line 3635 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 147:
-#line 1189 "pic.y" /* yacc.c:1646  */
+#line 1189 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.pair).x = (yyvsp[-3].pair).x - (yyvsp[-1].pair).x;
                  (yyval.pair).y = (yyvsp[-3].pair).y - (yyvsp[-1].pair).y;
                }
-#line 3647 "pic.cpp" /* yacc.c:1646  */
+#line 3644 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 148:
-#line 1194 "pic.y" /* yacc.c:1646  */
+#line 1194 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.pair).x = (yyvsp[-3].pair).x;
                  (yyval.pair).y = (yyvsp[-1].pair).y;
                }
-#line 3656 "pic.cpp" /* yacc.c:1646  */
+#line 3653 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 149:
-#line 1199 "pic.y" /* yacc.c:1646  */
+#line 1199 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.pair).x = (1.0 - (yyvsp[-4].x))*(yyvsp[-2].pair).x + (yyvsp[-4].x)*(yyvsp[0].pair).x;
                  (yyval.pair).y = (1.0 - (yyvsp[-4].x))*(yyvsp[-2].pair).y + (yyvsp[-4].x)*(yyvsp[0].pair).y;
                }
-#line 3665 "pic.cpp" /* yacc.c:1646  */
+#line 3662 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 150:
-#line 1204 "pic.y" /* yacc.c:1646  */
+#line 1204 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.pair).x = (1.0 - (yyvsp[-5].x))*(yyvsp[-3].pair).x + (yyvsp[-5].x)*(yyvsp[-1].pair).x;
                  (yyval.pair).y = (1.0 - (yyvsp[-5].x))*(yyvsp[-3].pair).y + (yyvsp[-5].x)*(yyvsp[-1].pair).y;
                }
-#line 3674 "pic.cpp" /* yacc.c:1646  */
+#line 3671 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 151:
-#line 1210 "pic.y" /* yacc.c:1646  */
+#line 1210 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.pair).x = (1.0 - (yyvsp[-5].x))*(yyvsp[-3].pair).x + (yyvsp[-5].x)*(yyvsp[-1].pair).x;
                  (yyval.pair).y = (1.0 - (yyvsp[-5].x))*(yyvsp[-3].pair).y + (yyvsp[-5].x)*(yyvsp[-1].pair).y;
                }
-#line 3683 "pic.cpp" /* yacc.c:1646  */
+#line 3680 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 152:
-#line 1215 "pic.y" /* yacc.c:1646  */
+#line 1215 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.pair).x = (1.0 - (yyvsp[-6].x))*(yyvsp[-4].pair).x + (yyvsp[-6].x)*(yyvsp[-2].pair).x;
                  (yyval.pair).y = (1.0 - (yyvsp[-6].x))*(yyvsp[-4].pair).y + (yyvsp[-6].x)*(yyvsp[-2].pair).y;
                }
-#line 3692 "pic.cpp" /* yacc.c:1646  */
+#line 3689 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 155:
-#line 1228 "pic.y" /* yacc.c:1646  */
+#line 1228 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.pair).x = (yyvsp[-2].x);
                  (yyval.pair).y = (yyvsp[0].x);
                }
-#line 3701 "pic.cpp" /* yacc.c:1646  */
+#line 3698 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 156:
-#line 1233 "pic.y" /* yacc.c:1646  */
+#line 1233 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.pair) = (yyvsp[-1].pair); }
-#line 3707 "pic.cpp" /* yacc.c:1646  */
+#line 3704 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 157:
-#line 1239 "pic.y" /* yacc.c:1646  */
+#line 1239 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.pl) = (yyvsp[0].pl); }
-#line 3713 "pic.cpp" /* yacc.c:1646  */
+#line 3710 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 158:
-#line 1241 "pic.y" /* yacc.c:1646  */
+#line 1241 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  path pth((yyvsp[0].crn));
                  if (!pth.follow((yyvsp[-1].pl), & (yyval.pl)))
                    YYABORT;
                }
-#line 3723 "pic.cpp" /* yacc.c:1646  */
+#line 3720 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 159:
-#line 1247 "pic.y" /* yacc.c:1646  */
+#line 1247 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  path pth((yyvsp[-1].crn));
                  if (!pth.follow((yyvsp[0].pl), & (yyval.pl)))
                    YYABORT;
                }
-#line 3733 "pic.cpp" /* yacc.c:1646  */
+#line 3730 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 160:
-#line 1253 "pic.y" /* yacc.c:1646  */
+#line 1253 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  path pth((yyvsp[-2].crn));
                  if (!pth.follow((yyvsp[0].pl), & (yyval.pl)))
                    YYABORT;
                }
-#line 3743 "pic.cpp" /* yacc.c:1646  */
+#line 3740 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 161:
-#line 1259 "pic.y" /* yacc.c:1646  */
+#line 1259 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.pl).x = current_position.x;
                  (yyval.pl).y = current_position.y;
                  (yyval.pl).obj = 0;
                }
-#line 3753 "pic.cpp" /* yacc.c:1646  */
+#line 3750 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 162:
-#line 1268 "pic.y" /* yacc.c:1646  */
+#line 1268 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  place *p = lookup_label((yyvsp[0].str));
                  if (!p) {
-                   lex_error("there is no place `%1'", (yyvsp[0].str));
+                   lex_error("there is no place '%1'", (yyvsp[0].str));
                    YYABORT;
                  }
                  (yyval.pl) = *p;
-                 a_delete (yyvsp[0].str);
+                 free((yyvsp[0].str));
                }
-#line 3767 "pic.cpp" /* yacc.c:1646  */
+#line 3764 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 163:
-#line 1278 "pic.y" /* yacc.c:1646  */
+#line 1278 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.pl).obj = (yyvsp[0].obj); }
-#line 3773 "pic.cpp" /* yacc.c:1646  */
+#line 3770 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 164:
-#line 1280 "pic.y" /* yacc.c:1646  */
+#line 1280 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  path pth((yyvsp[0].str));
                  if (!pth.follow((yyvsp[-2].pl), & (yyval.pl)))
                    YYABORT;
                }
-#line 3783 "pic.cpp" /* yacc.c:1646  */
+#line 3780 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 165:
-#line 1289 "pic.y" /* yacc.c:1646  */
+#line 1289 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.n) = (yyvsp[0].n); }
-#line 3789 "pic.cpp" /* yacc.c:1646  */
+#line 3786 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 166:
-#line 1291 "pic.y" /* yacc.c:1646  */
+#line 1291 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  // XXX Check for overflow (and non-integers?).
                  (yyval.n) = (int)(yyvsp[-1].x);
                }
-#line 3798 "pic.cpp" /* yacc.c:1646  */
+#line 3795 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 167:
-#line 1299 "pic.y" /* yacc.c:1646  */
+#line 1299 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.n) = 1; }
-#line 3804 "pic.cpp" /* yacc.c:1646  */
+#line 3801 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 168:
-#line 1301 "pic.y" /* yacc.c:1646  */
+#line 1301 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.n) = (yyvsp[-1].n); }
-#line 3810 "pic.cpp" /* yacc.c:1646  */
+#line 3807 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 169:
-#line 1306 "pic.y" /* yacc.c:1646  */
+#line 1306 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  int count = 0;
                  object *p;
@@ -3825,11 +3822,11 @@ yyreduce:
                    YYABORT;
                  }
                }
-#line 3829 "pic.cpp" /* yacc.c:1646  */
+#line 3826 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 170:
-#line 1321 "pic.y" /* yacc.c:1646  */
+#line 1321 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  int count = 0;
                  object *p;
@@ -3844,457 +3841,457 @@ yyreduce:
                    YYABORT;
                  }
                }
-#line 3848 "pic.cpp" /* yacc.c:1646  */
+#line 3845 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 171:
-#line 1339 "pic.y" /* yacc.c:1646  */
+#line 1339 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.obtype) = BOX_OBJECT; }
-#line 3854 "pic.cpp" /* yacc.c:1646  */
+#line 3851 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 172:
-#line 1341 "pic.y" /* yacc.c:1646  */
+#line 1341 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.obtype) = CIRCLE_OBJECT; }
-#line 3860 "pic.cpp" /* yacc.c:1646  */
+#line 3857 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 173:
-#line 1343 "pic.y" /* yacc.c:1646  */
+#line 1343 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.obtype) = ELLIPSE_OBJECT; }
-#line 3866 "pic.cpp" /* yacc.c:1646  */
+#line 3863 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 174:
-#line 1345 "pic.y" /* yacc.c:1646  */
+#line 1345 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.obtype) = ARC_OBJECT; }
-#line 3872 "pic.cpp" /* yacc.c:1646  */
+#line 3869 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 175:
-#line 1347 "pic.y" /* yacc.c:1646  */
+#line 1347 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.obtype) = LINE_OBJECT; }
-#line 3878 "pic.cpp" /* yacc.c:1646  */
+#line 3875 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 176:
-#line 1349 "pic.y" /* yacc.c:1646  */
+#line 1349 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.obtype) = ARROW_OBJECT; }
-#line 3884 "pic.cpp" /* yacc.c:1646  */
+#line 3881 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 177:
-#line 1351 "pic.y" /* yacc.c:1646  */
+#line 1351 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.obtype) = SPLINE_OBJECT; }
-#line 3890 "pic.cpp" /* yacc.c:1646  */
+#line 3887 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 178:
-#line 1353 "pic.y" /* yacc.c:1646  */
+#line 1353 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.obtype) = BLOCK_OBJECT; }
-#line 3896 "pic.cpp" /* yacc.c:1646  */
+#line 3893 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 179:
-#line 1355 "pic.y" /* yacc.c:1646  */
+#line 1355 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.obtype) = TEXT_OBJECT; }
-#line 3902 "pic.cpp" /* yacc.c:1646  */
+#line 3899 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 180:
-#line 1360 "pic.y" /* yacc.c:1646  */
+#line 1360 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.pth) = new path((yyvsp[0].str)); }
-#line 3908 "pic.cpp" /* yacc.c:1646  */
+#line 3905 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 181:
-#line 1362 "pic.y" /* yacc.c:1646  */
+#line 1362 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.pth) = (yyvsp[-2].pth);
                  (yyval.pth)->append((yyvsp[0].str));
                }
-#line 3917 "pic.cpp" /* yacc.c:1646  */
+#line 3914 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 182:
-#line 1370 "pic.y" /* yacc.c:1646  */
+#line 1370 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.pth) = new path((yyvsp[0].crn)); }
-#line 3923 "pic.cpp" /* yacc.c:1646  */
+#line 3920 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 183:
-#line 1374 "pic.y" /* yacc.c:1646  */
+#line 1374 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.pth) = (yyvsp[0].pth); }
-#line 3929 "pic.cpp" /* yacc.c:1646  */
+#line 3926 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 184:
-#line 1376 "pic.y" /* yacc.c:1646  */
+#line 1376 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.pth) = (yyvsp[-1].pth);
                  (yyval.pth)->append((yyvsp[0].crn));
                }
-#line 3938 "pic.cpp" /* yacc.c:1646  */
+#line 3935 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 185:
-#line 1384 "pic.y" /* yacc.c:1646  */
+#line 1384 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.pth) = (yyvsp[0].pth); }
-#line 3944 "pic.cpp" /* yacc.c:1646  */
+#line 3941 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 186:
-#line 1386 "pic.y" /* yacc.c:1646  */
+#line 1386 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.pth) = (yyvsp[-3].pth);
                  (yyval.pth)->set_ypath((yyvsp[-1].pth));
                }
-#line 3953 "pic.cpp" /* yacc.c:1646  */
+#line 3950 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 187:
-#line 1392 "pic.y" /* yacc.c:1646  */
+#line 1392 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
-                 lex_warning("`%1%2 last %3' in `with' argument ignored",
+                 lex_warning("'%1%2 last %3' in 'with' argument ignored",
                              (yyvsp[-3].n), ordinal_postfix((yyvsp[-3].n)), object_type_name((yyvsp[-1].obtype)));
                  (yyval.pth) = (yyvsp[0].pth);
                }
-#line 3963 "pic.cpp" /* yacc.c:1646  */
+#line 3960 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 188:
-#line 1398 "pic.y" /* yacc.c:1646  */
+#line 1398 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
-                 lex_warning("`last %1' in `with' argument ignored",
+                 lex_warning("'last %1' in 'with' argument ignored",
                              object_type_name((yyvsp[-1].obtype)));
                  (yyval.pth) = (yyvsp[0].pth);
                }
-#line 3973 "pic.cpp" /* yacc.c:1646  */
+#line 3970 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 189:
-#line 1404 "pic.y" /* yacc.c:1646  */
+#line 1404 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
-                 lex_warning("`%1%2 %3' in `with' argument ignored",
+                 lex_warning("'%1%2 %3' in 'with' argument ignored",
                              (yyvsp[-2].n), ordinal_postfix((yyvsp[-2].n)), object_type_name((yyvsp[-1].obtype)));
                  (yyval.pth) = (yyvsp[0].pth);
                }
-#line 3983 "pic.cpp" /* yacc.c:1646  */
+#line 3980 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 190:
-#line 1410 "pic.y" /* yacc.c:1646  */
+#line 1410 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
-                 lex_warning("initial `%1' in `with' argument ignored", (yyvsp[-1].str));
+                 lex_warning("initial '%1' in 'with' argument ignored", (yyvsp[-1].str));
                  a_delete (yyvsp[-1].str);
                  (yyval.pth) = (yyvsp[0].pth);
                }
-#line 3993 "pic.cpp" /* yacc.c:1646  */
+#line 3990 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 191:
-#line 1419 "pic.y" /* yacc.c:1646  */
+#line 1419 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.crn) = &object::north; }
-#line 3999 "pic.cpp" /* yacc.c:1646  */
+#line 3996 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 192:
-#line 1421 "pic.y" /* yacc.c:1646  */
+#line 1421 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.crn) = &object::east; }
-#line 4005 "pic.cpp" /* yacc.c:1646  */
+#line 4002 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 193:
-#line 1423 "pic.y" /* yacc.c:1646  */
+#line 1423 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.crn) = &object::west; }
-#line 4011 "pic.cpp" /* yacc.c:1646  */
+#line 4008 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 194:
-#line 1425 "pic.y" /* yacc.c:1646  */
+#line 1425 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.crn) = &object::south; }
-#line 4017 "pic.cpp" /* yacc.c:1646  */
+#line 4014 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 195:
-#line 1427 "pic.y" /* yacc.c:1646  */
+#line 1427 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.crn) = &object::north_east; }
-#line 4023 "pic.cpp" /* yacc.c:1646  */
+#line 4020 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 196:
-#line 1429 "pic.y" /* yacc.c:1646  */
+#line 1429 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.crn) = &object:: south_east; }
-#line 4029 "pic.cpp" /* yacc.c:1646  */
+#line 4026 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 197:
-#line 1431 "pic.y" /* yacc.c:1646  */
+#line 1431 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.crn) = &object::north_west; }
-#line 4035 "pic.cpp" /* yacc.c:1646  */
+#line 4032 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 198:
-#line 1433 "pic.y" /* yacc.c:1646  */
+#line 1433 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.crn) = &object::south_west; }
-#line 4041 "pic.cpp" /* yacc.c:1646  */
+#line 4038 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 199:
-#line 1435 "pic.y" /* yacc.c:1646  */
+#line 1435 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.crn) = &object::center; }
-#line 4047 "pic.cpp" /* yacc.c:1646  */
+#line 4044 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 200:
-#line 1437 "pic.y" /* yacc.c:1646  */
+#line 1437 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.crn) = &object::start; }
-#line 4053 "pic.cpp" /* yacc.c:1646  */
+#line 4050 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 201:
-#line 1439 "pic.y" /* yacc.c:1646  */
+#line 1439 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.crn) = &object::end; }
-#line 4059 "pic.cpp" /* yacc.c:1646  */
+#line 4056 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 202:
-#line 1441 "pic.y" /* yacc.c:1646  */
+#line 1441 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.crn) = &object::north; }
-#line 4065 "pic.cpp" /* yacc.c:1646  */
+#line 4062 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 203:
-#line 1443 "pic.y" /* yacc.c:1646  */
+#line 1443 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.crn) = &object::south; }
-#line 4071 "pic.cpp" /* yacc.c:1646  */
+#line 4068 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 204:
-#line 1445 "pic.y" /* yacc.c:1646  */
+#line 1445 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.crn) = &object::west; }
-#line 4077 "pic.cpp" /* yacc.c:1646  */
+#line 4074 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 205:
-#line 1447 "pic.y" /* yacc.c:1646  */
+#line 1447 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.crn) = &object::east; }
-#line 4083 "pic.cpp" /* yacc.c:1646  */
+#line 4080 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 206:
-#line 1449 "pic.y" /* yacc.c:1646  */
+#line 1449 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.crn) = &object::north_west; }
-#line 4089 "pic.cpp" /* yacc.c:1646  */
+#line 4086 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 207:
-#line 1451 "pic.y" /* yacc.c:1646  */
+#line 1451 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.crn) = &object::south_west; }
-#line 4095 "pic.cpp" /* yacc.c:1646  */
+#line 4092 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 208:
-#line 1453 "pic.y" /* yacc.c:1646  */
+#line 1453 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.crn) = &object::north_east; }
-#line 4101 "pic.cpp" /* yacc.c:1646  */
+#line 4098 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 209:
-#line 1455 "pic.y" /* yacc.c:1646  */
+#line 1455 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.crn) = &object::south_east; }
-#line 4107 "pic.cpp" /* yacc.c:1646  */
+#line 4104 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 210:
-#line 1457 "pic.y" /* yacc.c:1646  */
+#line 1457 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.crn) = &object::west; }
-#line 4113 "pic.cpp" /* yacc.c:1646  */
+#line 4110 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 211:
-#line 1459 "pic.y" /* yacc.c:1646  */
+#line 1459 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.crn) = &object::east; }
-#line 4119 "pic.cpp" /* yacc.c:1646  */
+#line 4116 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 212:
-#line 1461 "pic.y" /* yacc.c:1646  */
+#line 1461 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.crn) = &object::north_west; }
-#line 4125 "pic.cpp" /* yacc.c:1646  */
+#line 4122 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 213:
-#line 1463 "pic.y" /* yacc.c:1646  */
+#line 1463 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.crn) = &object::south_west; }
-#line 4131 "pic.cpp" /* yacc.c:1646  */
+#line 4128 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 214:
-#line 1465 "pic.y" /* yacc.c:1646  */
+#line 1465 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.crn) = &object::north_east; }
-#line 4137 "pic.cpp" /* yacc.c:1646  */
+#line 4134 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 215:
-#line 1467 "pic.y" /* yacc.c:1646  */
+#line 1467 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.crn) = &object::south_east; }
-#line 4143 "pic.cpp" /* yacc.c:1646  */
+#line 4140 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 216:
-#line 1469 "pic.y" /* yacc.c:1646  */
+#line 1469 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.crn) = &object::north; }
-#line 4149 "pic.cpp" /* yacc.c:1646  */
+#line 4146 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 217:
-#line 1471 "pic.y" /* yacc.c:1646  */
+#line 1471 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.crn) = &object::south; }
-#line 4155 "pic.cpp" /* yacc.c:1646  */
+#line 4152 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 218:
-#line 1473 "pic.y" /* yacc.c:1646  */
+#line 1473 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.crn) = &object::east; }
-#line 4161 "pic.cpp" /* yacc.c:1646  */
+#line 4158 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 219:
-#line 1475 "pic.y" /* yacc.c:1646  */
+#line 1475 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.crn) = &object::west; }
-#line 4167 "pic.cpp" /* yacc.c:1646  */
+#line 4164 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 220:
-#line 1477 "pic.y" /* yacc.c:1646  */
+#line 1477 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.crn) = &object::center; }
-#line 4173 "pic.cpp" /* yacc.c:1646  */
+#line 4170 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 221:
-#line 1479 "pic.y" /* yacc.c:1646  */
+#line 1479 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.crn) = &object::start; }
-#line 4179 "pic.cpp" /* yacc.c:1646  */
+#line 4176 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 222:
-#line 1481 "pic.y" /* yacc.c:1646  */
+#line 1481 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.crn) = &object::end; }
-#line 4185 "pic.cpp" /* yacc.c:1646  */
+#line 4182 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 223:
-#line 1486 "pic.y" /* yacc.c:1646  */
+#line 1486 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.x) = (yyvsp[0].x); }
-#line 4191 "pic.cpp" /* yacc.c:1646  */
+#line 4188 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 224:
-#line 1488 "pic.y" /* yacc.c:1646  */
+#line 1488 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.x) = (yyvsp[0].x); }
-#line 4197 "pic.cpp" /* yacc.c:1646  */
+#line 4194 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 225:
-#line 1493 "pic.y" /* yacc.c:1646  */
+#line 1493 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.x) = ((yyvsp[-2].x) < (yyvsp[0].x)); }
-#line 4203 "pic.cpp" /* yacc.c:1646  */
+#line 4200 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 226:
-#line 1498 "pic.y" /* yacc.c:1646  */
+#line 1498 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  if (!lookup_variable((yyvsp[0].str), & (yyval.x))) {
-                   lex_error("there is no variable `%1'", (yyvsp[0].str));
+                   lex_error("there is no variable '%1'", (yyvsp[0].str));
                    YYABORT;
                  }
-                 a_delete (yyvsp[0].str);
+                 free((yyvsp[0].str));
                }
-#line 4215 "pic.cpp" /* yacc.c:1646  */
+#line 4212 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 227:
-#line 1506 "pic.y" /* yacc.c:1646  */
+#line 1506 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.x) = (yyvsp[0].x); }
-#line 4221 "pic.cpp" /* yacc.c:1646  */
+#line 4218 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 228:
-#line 1508 "pic.y" /* yacc.c:1646  */
+#line 1508 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  if ((yyvsp[-1].pl).obj != 0)
                    (yyval.x) = (yyvsp[-1].pl).obj->origin().x;
                  else
                    (yyval.x) = (yyvsp[-1].pl).x;
                }
-#line 4232 "pic.cpp" /* yacc.c:1646  */
+#line 4229 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 229:
-#line 1515 "pic.y" /* yacc.c:1646  */
+#line 1515 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  if ((yyvsp[-1].pl).obj != 0)
                    (yyval.x) = (yyvsp[-1].pl).obj->origin().y;
                  else
                    (yyval.x) = (yyvsp[-1].pl).y;
                }
-#line 4243 "pic.cpp" /* yacc.c:1646  */
+#line 4240 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 230:
-#line 1522 "pic.y" /* yacc.c:1646  */
+#line 1522 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  if ((yyvsp[-1].pl).obj != 0)
                    (yyval.x) = (yyvsp[-1].pl).obj->height();
                  else
                    (yyval.x) = 0.0;
                }
-#line 4254 "pic.cpp" /* yacc.c:1646  */
+#line 4251 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 231:
-#line 1529 "pic.y" /* yacc.c:1646  */
+#line 1529 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  if ((yyvsp[-1].pl).obj != 0)
                    (yyval.x) = (yyvsp[-1].pl).obj->width();
                  else
                    (yyval.x) = 0.0;
                }
-#line 4265 "pic.cpp" /* yacc.c:1646  */
+#line 4262 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 232:
-#line 1536 "pic.y" /* yacc.c:1646  */
+#line 1536 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  if ((yyvsp[-1].pl).obj != 0)
                    (yyval.x) = (yyvsp[-1].pl).obj->radius();
                  else
                    (yyval.x) = 0.0;
                }
-#line 4276 "pic.cpp" /* yacc.c:1646  */
+#line 4273 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 233:
-#line 1543 "pic.y" /* yacc.c:1646  */
+#line 1543 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.x) = (yyvsp[-2].x) + (yyvsp[0].x); }
-#line 4282 "pic.cpp" /* yacc.c:1646  */
+#line 4279 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 234:
-#line 1545 "pic.y" /* yacc.c:1646  */
+#line 1545 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.x) = (yyvsp[-2].x) - (yyvsp[0].x); }
-#line 4288 "pic.cpp" /* yacc.c:1646  */
+#line 4285 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 235:
-#line 1547 "pic.y" /* yacc.c:1646  */
+#line 1547 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.x) = (yyvsp[-2].x) * (yyvsp[0].x); }
-#line 4294 "pic.cpp" /* yacc.c:1646  */
+#line 4291 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 236:
-#line 1549 "pic.y" /* yacc.c:1646  */
+#line 1549 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  if ((yyvsp[0].x) == 0.0) {
                    lex_error("division by zero");
@@ -4302,11 +4299,11 @@ yyreduce:
                  }
                  (yyval.x) = (yyvsp[-2].x)/(yyvsp[0].x);
                }
-#line 4306 "pic.cpp" /* yacc.c:1646  */
+#line 4303 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 237:
-#line 1557 "pic.y" /* yacc.c:1646  */
+#line 1557 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  if ((yyvsp[0].x) == 0.0) {
                    lex_error("modulus by zero");
@@ -4314,40 +4311,40 @@ yyreduce:
                  }
                  (yyval.x) = fmod((yyvsp[-2].x), (yyvsp[0].x));
                }
-#line 4318 "pic.cpp" /* yacc.c:1646  */
+#line 4315 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 238:
-#line 1565 "pic.y" /* yacc.c:1646  */
+#line 1565 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  errno = 0;
                  (yyval.x) = pow((yyvsp[-2].x), (yyvsp[0].x));
                  if (errno == EDOM) {
-                   lex_error("arguments to `^' operator out of domain");
+                   lex_error("arguments to '^' operator out of domain");
                    YYABORT;
                  }
                  if (errno == ERANGE) {
-                   lex_error("result of `^' operator out of range");
+                   lex_error("result of '^' operator out of range");
                    YYABORT;
                  }
                }
-#line 4335 "pic.cpp" /* yacc.c:1646  */
+#line 4332 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 239:
-#line 1578 "pic.y" /* yacc.c:1646  */
+#line 1578 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.x) = -(yyvsp[0].x); }
-#line 4341 "pic.cpp" /* yacc.c:1646  */
+#line 4338 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 240:
-#line 1580 "pic.y" /* yacc.c:1646  */
+#line 1580 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.x) = (yyvsp[-1].x); }
-#line 4347 "pic.cpp" /* yacc.c:1646  */
+#line 4344 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 241:
-#line 1582 "pic.y" /* yacc.c:1646  */
+#line 1582 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  errno = 0;
                  (yyval.x) = sin((yyvsp[-1].x));
@@ -4356,11 +4353,11 @@ yyreduce:
                    YYABORT;
                  }
                }
-#line 4360 "pic.cpp" /* yacc.c:1646  */
+#line 4357 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 242:
-#line 1591 "pic.y" /* yacc.c:1646  */
+#line 1591 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  errno = 0;
                  (yyval.x) = cos((yyvsp[-1].x));
@@ -4369,11 +4366,11 @@ yyreduce:
                    YYABORT;
                  }
                }
-#line 4373 "pic.cpp" /* yacc.c:1646  */
+#line 4370 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 243:
-#line 1600 "pic.y" /* yacc.c:1646  */
+#line 1600 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  errno = 0;
                  (yyval.x) = atan2((yyvsp[-3].x), (yyvsp[-1].x));
@@ -4386,11 +4383,11 @@ yyreduce:
                    YYABORT;
                  }
                }
-#line 4390 "pic.cpp" /* yacc.c:1646  */
+#line 4387 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 244:
-#line 1613 "pic.y" /* yacc.c:1646  */
+#line 1613 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  errno = 0;
                  (yyval.x) = log10((yyvsp[-1].x));
@@ -4399,11 +4396,11 @@ yyreduce:
                    YYABORT;
                  }
                }
-#line 4403 "pic.cpp" /* yacc.c:1646  */
+#line 4400 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 245:
-#line 1622 "pic.y" /* yacc.c:1646  */
+#line 1622 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  errno = 0;
                  (yyval.x) = pow(10.0, (yyvsp[-1].x));
@@ -4412,11 +4409,11 @@ yyreduce:
                    YYABORT;
                  }
                }
-#line 4416 "pic.cpp" /* yacc.c:1646  */
+#line 4413 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 246:
-#line 1631 "pic.y" /* yacc.c:1646  */
+#line 1631 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  errno = 0;
                  (yyval.x) = sqrt((yyvsp[-1].x));
@@ -4425,102 +4422,102 @@ yyreduce:
                    YYABORT;
                  }
                }
-#line 4429 "pic.cpp" /* yacc.c:1646  */
+#line 4426 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 247:
-#line 1640 "pic.y" /* yacc.c:1646  */
+#line 1640 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.x) = (yyvsp[-3].x) > (yyvsp[-1].x) ? (yyvsp[-3].x) : (yyvsp[-1].x); }
-#line 4435 "pic.cpp" /* yacc.c:1646  */
+#line 4432 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 248:
-#line 1642 "pic.y" /* yacc.c:1646  */
+#line 1642 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.x) = (yyvsp[-3].x) < (yyvsp[-1].x) ? (yyvsp[-3].x) : (yyvsp[-1].x); }
-#line 4441 "pic.cpp" /* yacc.c:1646  */
+#line 4438 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 249:
-#line 1644 "pic.y" /* yacc.c:1646  */
+#line 1644 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.x) = (yyvsp[-1].x) < 0 ? -floor(-(yyvsp[-1].x)) : floor((yyvsp[-1].x)); }
-#line 4447 "pic.cpp" /* yacc.c:1646  */
+#line 4444 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 250:
-#line 1646 "pic.y" /* yacc.c:1646  */
+#line 1646 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.x) = 1.0 + floor(((rand()&0x7fff)/double(0x7fff))*(yyvsp[-1].x)); }
-#line 4453 "pic.cpp" /* yacc.c:1646  */
+#line 4450 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 251:
-#line 1648 "pic.y" /* yacc.c:1646  */
+#line 1648 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  /* return a random number in the range [0,1) */
                  /* portable, but not very random */
                  (yyval.x) = (rand() & 0x7fff) / double(0x8000);
                }
-#line 4463 "pic.cpp" /* yacc.c:1646  */
+#line 4460 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 252:
-#line 1654 "pic.y" /* yacc.c:1646  */
+#line 1654 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     {
                  (yyval.x) = 0;
                  srand((unsigned int)(yyvsp[-1].x));
                }
-#line 4472 "pic.cpp" /* yacc.c:1646  */
+#line 4469 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 253:
-#line 1659 "pic.y" /* yacc.c:1646  */
+#line 1659 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.x) = ((yyvsp[-2].x) <= (yyvsp[0].x)); }
-#line 4478 "pic.cpp" /* yacc.c:1646  */
+#line 4475 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 254:
-#line 1661 "pic.y" /* yacc.c:1646  */
+#line 1661 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.x) = ((yyvsp[-2].x) > (yyvsp[0].x)); }
-#line 4484 "pic.cpp" /* yacc.c:1646  */
+#line 4481 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 255:
-#line 1663 "pic.y" /* yacc.c:1646  */
+#line 1663 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.x) = ((yyvsp[-2].x) >= (yyvsp[0].x)); }
-#line 4490 "pic.cpp" /* yacc.c:1646  */
+#line 4487 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 256:
-#line 1665 "pic.y" /* yacc.c:1646  */
+#line 1665 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.x) = ((yyvsp[-2].x) == (yyvsp[0].x)); }
-#line 4496 "pic.cpp" /* yacc.c:1646  */
+#line 4493 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 257:
-#line 1667 "pic.y" /* yacc.c:1646  */
+#line 1667 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.x) = ((yyvsp[-2].x) != (yyvsp[0].x)); }
-#line 4502 "pic.cpp" /* yacc.c:1646  */
+#line 4499 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 258:
-#line 1669 "pic.y" /* yacc.c:1646  */
+#line 1669 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.x) = ((yyvsp[-2].x) != 0.0 && (yyvsp[0].x) != 0.0); }
-#line 4508 "pic.cpp" /* yacc.c:1646  */
+#line 4505 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 259:
-#line 1671 "pic.y" /* yacc.c:1646  */
+#line 1671 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.x) = ((yyvsp[-2].x) != 0.0 || (yyvsp[0].x) != 0.0); }
-#line 4514 "pic.cpp" /* yacc.c:1646  */
+#line 4511 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
   case 260:
-#line 1673 "pic.y" /* yacc.c:1646  */
+#line 1673 "../src/preproc/pic/pic.ypp" /* yacc.c:1645  */
     { (yyval.x) = ((yyvsp[0].x) == 0.0); }
-#line 4520 "pic.cpp" /* yacc.c:1646  */
+#line 4517 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
     break;
 
 
-#line 4524 "pic.cpp" /* yacc.c:1646  */
+#line 4521 "src/preproc/pic/pic.cpp" /* yacc.c:1645  */
       default: break;
     }
   /* User semantic actions sometimes alter yychar, and that requires
@@ -4545,14 +4542,13 @@ yyreduce:
   /* Now 'shift' the result of the reduction.  Determine what state
      that goes to, based on the state we popped back to and the rule
      number reduced by.  */
-
-  yyn = yyr1[yyn];
-
-  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
-  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
-    yystate = yytable[yystate];
-  else
-    yystate = yydefgoto[yyn - YYNTOKENS];
+  {
+    const int yylhs = yyr1[yyn] - YYNTOKENS;
+    const int yyi = yypgoto[yylhs] + *yyssp;
+    yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
+               ? yytable[yyi]
+               : yydefgoto[yylhs]);
+  }
 
   goto yynewstate;
 
@@ -4748,7 +4744,7 @@ yyreturn:
 #endif
   return yyresult;
 }
-#line 1677 "pic.y" /* yacc.c:1906  */
+#line 1677 "../src/preproc/pic/pic.ypp" /* yacc.c:1903  */
 
 
 /* bison defines const to be empty unless __STDC__ is defined, which it
@@ -4861,14 +4857,14 @@ void reset(const char *nm)
       define_variable(defaults_table[i].name, val);
       return;
     }
-  lex_error("`%1' is not a predefined variable", nm);
+  lex_error("'%1' is not a predefined variable", nm);
 }
 
 void reset_all()
 {
   // We only have to explicitly reset the pre-defined variables that
-  // aren't scaled because `scale' is not scaled, and changing the
-  // value of `scale' will reset all the pre-defined variables that
+  // aren't scaled because 'scale' is not scaled, and changing the
+  // value of 'scale' will reset all the pre-defined variables that
   // are scaled.
   for (unsigned int i = 0;
        i < sizeof(defaults_table)/sizeof(defaults_table[0]); i++)
index 6e8cf0f..3623d2a 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include "lib.h"
 
@@ -50,6 +50,7 @@ extern "C" {
 #include "assert.h"
 #include "cset.h"
 #include "stringclass.h"
+#include "lf.h"
 #include "errarg.h"
 #include "error.h"
 #include "position.h"
similarity index 92%
rename from src/preproc/pic/pic_tab.h
rename to src/preproc/pic/pic.hpp
index c5c6ac7..35243fd 100644 (file)
@@ -1,8 +1,8 @@
-/* A Bison parser, made by GNU Bison 3.0.2.  */
+/* A Bison parser, made by GNU Bison 3.2.  */
 
 /* Bison interface for Yacc-like parsers in C
 
-   Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
+   Copyright (C) 1984, 1989-1990, 2000-2015, 2018 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
    This special exception was added by the Free Software Foundation in
    version 2.2 of Bison.  */
 
-#ifndef YY_YY_Y_TAB_H_INCLUDED
-# define YY_YY_Y_TAB_H_INCLUDED
+/* Undocumented macros, especially those whose name start with YY_,
+   are private implementation details.  Do not rely on them.  */
+
+#ifndef YY_YY_SRC_PREPROC_PIC_PIC_HPP_INCLUDED
+# define YY_YY_SRC_PREPROC_PIC_PIC_HPP_INCLUDED
 /* Debug traces.  */
 #ifndef YYDEBUG
 # define YYDEBUG 0
@@ -295,10 +298,10 @@ extern int yydebug;
 
 /* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-typedef union YYSTYPE YYSTYPE;
+
 union YYSTYPE
 {
-#line 65 "pic.y" /* yacc.c:1909  */
+#line 65 "../src/preproc/pic/pic.ypp" /* yacc.c:1906  */
 
        char *str;
        int n;
@@ -317,8 +320,10 @@ union YYSTYPE
        graphics_state state;
        object_type obtype;
 
-#line 321 "y.tab.h" /* yacc.c:1909  */
+#line 324 "src/preproc/pic/pic.hpp" /* yacc.c:1906  */
 };
+
+typedef union YYSTYPE YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define YYSTYPE_IS_DECLARED 1
 #endif
@@ -328,4 +333,4 @@ extern YYSTYPE yylval;
 
 int yyparse (void);
 
-#endif /* !YY_YY_Y_TAB_H_INCLUDED  */
+#endif /* !YY_YY_SRC_PREPROC_PIC_PIC_HPP_INCLUDED  */
similarity index 96%
rename from src/preproc/pic/pic.y
rename to src/preproc/pic/pic.ypp
index cf3a0d2..6afa2ab 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -14,7 +14,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 %{
 #include "pic.h"
@@ -219,7 +219,7 @@ box "foo" above ljust == box ("foo" above ljust)
 
 %left LEFT RIGHT
 /* Give attributes that take an optional expression a higher
-precedence than left and right, so that eg `line chop left'
+precedence than left and right, so that, e.g., 'line chop left'
 parses properly. */
 %left CHOP SOLID DASHED DOTTED UP DOWN FILL COLORED OUTLINED
 %left XSLANTED YSLANTED
@@ -233,7 +233,7 @@ parses properly. */
 /* these need to be lower than '-' */
 %left HEIGHT RADIUS WIDTH DIAMETER FROM TO AT THICKNESS
 
-/* these must have higher precedence than CHOP so that `label %prec CHOP'
+/* these must have higher precedence than CHOP so that 'label %prec CHOP'
 works */
 %left DOT_N DOT_E DOT_W DOT_S DOT_NE DOT_SE DOT_NW DOT_SW DOT_C
 %left DOT_START DOT_END TOP BOTTOM LEFT_CORNER RIGHT_CORNER
@@ -315,19 +315,19 @@ placeless_element:
        VARIABLE '=' any_expr
                {
                  define_variable($1, $3);
-                 a_delete $1;
+                 free($1);
                }
        | VARIABLE ':' '=' any_expr
                {
                  place *p = lookup_label($1);
                  if (!p) {
-                   lex_error("variable `%1' not defined", $1);
+                   lex_error("variable '%1' not defined", $1);
                    YYABORT;
                  }
                  p->obj = 0;
                  p->x = $4;
                  p->y = 0.0;
-                 a_delete $1;
+                 free($1);
                }
        | UP
                { current_direction = UP_DIRECTION; }
@@ -359,7 +359,7 @@ placeless_element:
                {
                  delim_flag = 0;
                  if (safer_flag)
-                   lex_error("unsafe to run command `%1'", $3);
+                   lex_error("unsafe to run command '%1'", $3);
                  else
                    system($3);
                  a_delete $3;
@@ -424,8 +424,8 @@ placeless_element:
                    push_body($1.body);
                  else
                    push_body($4);
-                 a_delete $1.body;
-                 a_delete $4;
+                 free($1.body);
+                 free($4);
                }
        | reset_variables
        | RESET
@@ -587,7 +587,7 @@ element:
                {
                  $$ = $4;
                  define_label($1, & $$);
-                 a_delete $1;
+                 free($1);
                }
        | LABEL ':' optional_separator position_not_place
                {
@@ -595,13 +595,13 @@ element:
                  $$.x = $4.x;
                  $$.y = $4.y;
                  define_label($1, & $$);
-                 a_delete $1;
+                 free($1);
                }
        | LABEL ':' optional_separator place
                {
                  $$ = $4;
                  define_label($1, & $$);
-                 a_delete $1;
+                 free($1);
                }
        | '{'
                {
@@ -1110,7 +1110,7 @@ text:
                  $$.lineno = $3.lineno;
                  $$.str = do_sprintf($3.str, $4.v, $4.nv);
                  a_delete $4.v;
-                 a_delete $3.str;
+                 free($3.str);
                }
        ;
 
@@ -1268,11 +1268,11 @@ label:
                {
                  place *p = lookup_label($1);
                  if (!p) {
-                   lex_error("there is no place `%1'", $1);
+                   lex_error("there is no place '%1'", $1);
                    YYABORT;
                  }
                  $$ = *p;
-                 a_delete $1;
+                 free($1);
                }
        | nth_primitive
                { $$.obj = $1; }
@@ -1390,25 +1390,25 @@ path:
        /* The rest of these rules are a compatibility sop. */
        | ORDINAL LAST object_type relative_path
                {
-                 lex_warning("`%1%2 last %3' in `with' argument ignored",
+                 lex_warning("'%1%2 last %3' in 'with' argument ignored",
                              $1, ordinal_postfix($1), object_type_name($3));
                  $$ = $4;
                }
        | LAST object_type relative_path
                {
-                 lex_warning("`last %1' in `with' argument ignored",
+                 lex_warning("'last %1' in 'with' argument ignored",
                              object_type_name($2));
                  $$ = $3;
                }
        | ORDINAL object_type relative_path
                {
-                 lex_warning("`%1%2 %3' in `with' argument ignored",
+                 lex_warning("'%1%2 %3' in 'with' argument ignored",
                              $1, ordinal_postfix($1), object_type_name($2));
                  $$ = $3;
                }
        | LABEL relative_path
                {
-                 lex_warning("initial `%1' in `with' argument ignored", $1);
+                 lex_warning("initial '%1' in 'with' argument ignored", $1);
                  a_delete $1;
                  $$ = $2;
                }
@@ -1497,10 +1497,10 @@ expr_not_lower_than:
        VARIABLE
                {
                  if (!lookup_variable($1, & $$)) {
-                   lex_error("there is no variable `%1'", $1);
+                   lex_error("there is no variable '%1'", $1);
                    YYABORT;
                  }
-                 a_delete $1;
+                 free($1);
                }
        | NUMBER
                { $$ = $1; }
@@ -1566,11 +1566,11 @@ expr_not_lower_than:
                  errno = 0;
                  $$ = pow($1, $3);
                  if (errno == EDOM) {
-                   lex_error("arguments to `^' operator out of domain");
+                   lex_error("arguments to '^' operator out of domain");
                    YYABORT;
                  }
                  if (errno == ERANGE) {
-                   lex_error("result of `^' operator out of range");
+                   lex_error("result of '^' operator out of range");
                    YYABORT;
                  }
                }
@@ -1786,14 +1786,14 @@ void reset(const char *nm)
       define_variable(defaults_table[i].name, val);
       return;
     }
-  lex_error("`%1' is not a predefined variable", nm);
+  lex_error("'%1' is not a predefined variable", nm);
 }
 
 void reset_all()
 {
   // We only have to explicitly reset the pre-defined variables that
-  // aren't scaled because `scale' is not scaled, and changing the
-  // value of `scale' will reset all the pre-defined variables that
+  // aren't scaled because 'scale' is not scaled, and changing the
+  // value of 'scale' will reset all the pre-defined variables that
   // are scaled.
   for (unsigned int i = 0;
        i < sizeof(defaults_table)/sizeof(defaults_table[0]); i++)
index fae24da..2d915da 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 struct place;
 struct position {
index b7f72b6..5dae49e 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include "pic.h"
 
@@ -428,7 +428,7 @@ void tpic_output::command(const char *s, const char *filename, int lineno)
       int temp = (int)strtol(p, &ptr, 10);
       if (temp == 0 && ptr == p)
        error_with_file_and_line(filename, lineno,
-                                "argument to `.ps' not an integer");
+                                "argument to '.ps' not an integer");
       else if (temp < 0)
        error_with_file_and_line(filename, lineno,
                                 "negative pen size");
index 60e7643..ad4caf8 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 
 enum hadjustment {
index 112b94a..0e47b57 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include "pic.h"
 #include "common.h"
@@ -268,7 +268,7 @@ inline position troff_output::transform(const position &pos)
 // if the aligned attribute is used.
 #define GROPS_REG "0p"
 
-// If this register is defined, geqn won't produce `\x's.
+// If this register is defined, geqn won't produce '\x's.
 #define EQN_NO_EXTRA_SPACE_REG "0x"
 
 void troff_output::start_picture(double sc,
@@ -421,7 +421,7 @@ static const char *choose_delimiter(const char *text)
 void troff_output::text(const position &center, text_piece *v, int n,
                        double ang)
 {
-  line_thickness(BAD_THICKNESS); // the text might use lines (eg in equations)
+  line_thickness(BAD_THICKNESS); // text might use lines (e.g., in equations)
   int rotate_flag = 0;
   if (driver_extension_flag && ang != 0.0) {
     rotate_flag = 1;
@@ -514,12 +514,12 @@ void troff_output::reset_color()
   if (driver_extension_flag) {
     if (last_filled) {
       printf(".fcolor\n");
-      a_delete last_filled;
+      free(last_filled);
       last_filled = 0;
     }
     if (last_outlined) {
       printf(".gcolor\n");
-      a_delete last_outlined;
+      free(last_outlined);
       last_outlined = 0;
     }
   }
similarity index 64%
rename from src/preproc/preconv/preconv.man
rename to src/preproc/preconv/preconv.1.man
index db2a698..457981f 100644 (file)
@@ -1,59 +1,63 @@
-.TH PRECONV @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
+.TH PRECONV @MAN1EXT@ "@MDATE@" "groff @VERSION@"
 .SH NAME
-preconv \- convert encoding of input files to something GNU troff understands
-.
-.
-.\" license (copying)
-.de co
-Copyright \[co] 2006-2014 Free Software Foundation, Inc.
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the
-entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
-Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be included in
-translations approved by the Free Software Foundation instead of in
-the original English.
-..
-.
-.\" --------------------------------------------------------------------
+preconv \- convert encoding of input files to something GNU troff \
+understands
+.
+.
+.\" Save and disable compatibility mode (for, e.g., Solaris 10/11).
+.do nr preconv_C \n[.C]
+.cp 0
+.
+.
+.\" ====================================================================
+.\" Legal Terms
+.\" ====================================================================
+.\"
+.\" Copyright (C) 2006-2018 Free Software Foundation, Inc.
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of
+.\" this manual under the conditions for verbatim copying, provided that
+.\" the entire resulting derived work is distributed under the terms of
+.\" a permission notice identical to this one.
+.\"
+.\" Permission is granted to copy and distribute translations of this
+.\" manual into another language, under the above conditions for
+.\" modified versions, except that this permission notice may be
+.\" included in translations approved by the Free Software Foundation
+.\" instead of in the original English.
+.
+.
+.\" ====================================================================
 .SH SYNOPSIS
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .SY preconv
 .OP \-dr
+.OP \-D default_encoding
 .OP \-e encoding
-.RI [ files
-.IR .\|.\|. ]
+.RI [ file
+\&.\|.\|.\&]
 .
 .SY preconv
 .B \-h
-|
+.SY preconv
 .B \-\-help
+.YS
 .
 .SY preconv
 .B \-v
-|
+.SY preconv
 .B \-\-version
 .YS
 .
 .
-.PP
-It is possible to have whitespace between the
-.B \-e
-command line option and its parameter.
-.
-.
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH DESCRIPTION
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .B preconv
 reads
@@ -76,9 +80,12 @@ options of
 .BR groff .
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH OPTIONS
-.\" --------------------------------------------------------------------
+.\" ====================================================================
+.
+Whitespace is permitted between a command-line option and its argument.
+.
 .
 .TP
 .B \-d
@@ -93,7 +100,7 @@ Specify default encoding if everything fails (see below).
 Specify input encoding explicitly, overriding all other methods.
 .
 This corresponds to
-.BR groff \[aq]s
+.BR groff 's
 .BI \-K encoding
 option.
 .
@@ -105,7 +112,7 @@ uses the algorithm described below to select the input encoding.
 .B \-\-help
 .TQ
 .B \-h
-Print help message.
+Print a help message and exit.
 .
 .TP
 .B \-r
@@ -115,12 +122,12 @@ Do not add \&.lf requests.
 .B \-\-version
 .TQ
 .B \-v
-Print version number.
+Print the version number and exit.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH USAGE
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .B preconv
 tries to find the input encoding with the following algorithm.
@@ -138,13 +145,20 @@ Otherwise, check whether the input starts with a
 If found, use it.
 .
 .IP 3.
-Finally, check whether there is a known
+Otherwise, check whether there is a known
 .I coding tag
 (see below) in either the first or second input line.
 .
 If found, use it.
 .
-.IP 4.
+.IP 4
+Finally, if the
+.B uchardet
+library
+(an encoding detector library available on most major distributions)
+is available on the system, use it to try to detect the encoding of the file.
+.
+.IP 5.
 If everything fails, use a default encoding as given with option
 .BR \-D ,
 by the current locale, or \[oq]latin1\[cq] if the locale is set to
@@ -155,14 +169,14 @@ by the current locale, or \[oq]latin1\[cq] if the locale is set to
 Note that the
 .B groff
 program supports a
-.GROFF_ENCODING
+.I \%GROFF_ENCODING
 environment variable which is eventually expanded to option
 .BR \-k .
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Byte Order Mark"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The Unicode Standard defines character U+FEFF as the Byte Order Mark
 (BOM).
@@ -170,8 +184,8 @@ The Unicode Standard defines character U+FEFF as the Byte Order Mark
 On the other hand, value U+FFFE is guaranteed not be a Unicode character at
 all.
 .
-This allows to detect the byte order within the data stream (either
-big-endian or lower-endian), and the MIME encodings \%\[oq]UTF-16\[cq]
+This allows detection of the byte order within the data stream (either
+big-endian or little-endian), and the MIME encodings \%\[oq]UTF-16\[cq]
 and \%\[oq]UTF-32\[cq] mandate that the data stream starts with U+FEFF.
 .
 Similarly, the data stream encoded as \%\[oq]UTF-8\[cq] might start
@@ -180,8 +194,8 @@ with a BOM (to ease the conversion from and to \%UTF-16 and \%UTF-32).
 In all cases, the byte order mark is
 .I not
 part of the data but part of the encoding protocol; in other words,
-.BR preconv \[aq]s
-output doesn\[aq]t contain it.
+.BR preconv 's
+output doesn't contain it.
 .
 .
 .PP
@@ -191,19 +205,19 @@ space\[cq] character \[en] something not needed normally in
 .BR groff .
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Coding Tags"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 Editors which support more than a single character encoding need tags
-within the input files to mark the file\[aq]s encoding.
+within the input files to mark the file's encoding.
 .
 While it is possible to guess the right input encoding with the help of
 heuristic algorithms for data which represents a greater amount of a natural
 language, it is still just a guess.
 .
 Additionally, all algorithms fail easily for input which is either too short
-or doesn\[aq]t represent a natural language.
+or doesn't represent a natural language.
 .
 .
 .PP
@@ -251,7 +265,7 @@ to edit a file in troff mode, and to use \%latin2 as its encoding.
 .RS
 .PP
 .EX
-\&.\[rs]" \-*\- mode: troff; coding: latin-2 \-*\-\""
+\&.\[rs]" \-*\- mode: troff; coding: latin-2 \-*\-
 .EE
 .RE
 .
@@ -323,12 +337,12 @@ implementation; a call to \[oq]preconv \-\-version\[cq] shows whether
 is used.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH BUGS
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .B preconv
-doesn\[aq]t support
+doesn't support
 .I "local variable lists"
 yet.
 .
@@ -336,9 +350,9 @@ This is a different syntax form to specify local variables at the end of a
 file.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "SEE ALSO"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .BR groff (@MAN1EXT@)
 .br
@@ -349,13 +363,12 @@ and
 info pages
 .
 .
-.\" --------------------------------------------------------------------
-.SH COPYING
-.\" --------------------------------------------------------------------
-.co
+.\" Restore compatibility mode (for, e.g., Solaris 10/11).
+.cp \n[preconv_C]
 .
 .
 .\" Emacs setting
 .\" Local Variables:
 .\" mode: nroff
 .\" End:
+.\" vim: set filetype=groff:
diff --git a/src/preproc/preconv/preconv.am b/src/preproc/preconv/preconv.am
new file mode 100644 (file)
index 0000000..d0479cb
--- /dev/null
@@ -0,0 +1,32 @@
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Latest update: 22 Aug 2015
+#
+# This file is part of groff.
+#
+# groff 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.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+
+bin_PROGRAMS += preconv
+preconv_LDADD = libgroff.a $(LIBM) $(LIBICONV) $(UCHARDET_LIBS) lib/libgnu.a
+preconv_SOURCES = src/preproc/preconv/preconv.cpp
+preconv_CPPFLAGS = $(AM_CPPFLAGS) $(UCHARDET_CFLAGS)
+man1_MANS += src/preproc/preconv/preconv.1
+EXTRA_DIST += src/preproc/preconv/preconv.1.man
+
+
+########################################################################
+### Emacs settings
+# Local Variables:
+# mode: makefile-automake
+# End:
index e965fca..50f1c42 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 2005-201 Free Software Foundation, Inc.
+/* Copyright (C) 2005-2018 Free Software Foundation, Inc.
      Written by Werner Lemberg (wl@gnu.org)
 
 This file is part of groff.
@@ -15,18 +15,23 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include "lib.h"
 
 #include <assert.h>
 #include <stdlib.h>
 #include <errno.h>
+#include <sys/stat.h>
+#ifdef HAVE_UCHARDET
+#include <uchardet/uchardet.h>
+#endif
 #include "errarg.h"
 #include "error.h"
 #include "localcharset.h"
 #include "nonposix.h"
 #include "stringclass.h"
+#include "lf.h"
 
 #include <locale.h>
 
@@ -60,22 +65,22 @@ struct conversion {
 //
 // For encodings which don't have a MIME tag we use GNU iconv's encoding
 // names (which also work with the portable GNU libiconv package).  They
-// are marked with `*'.
+// are marked with '*'.
 //
 // Encodings specific to XEmacs and Emacs are marked as such; no mark means
 // that they are used by both Emacs and XEmacs.
 //
-// Encodings marked with `--' are special to Emacs, XEmacs, or other
+// Encodings marked with '--' are special to Emacs, XEmacs, or other
 // applications and shouldn't be used for data exchange.
 //
-// `Not covered' means that the encoding can be handled neither by GNU iconv
+// 'Not covered' means that the encoding can be handled neither by GNU iconv
 // nor by libiconv, or just one of them has support for it.
 //
 // A special case is VIQR encoding: Despite of having a MIME tag it is
 // missing in both libiconv 1.10 and iconv (coming with GNU libc 2.3.6).
 //
-// Finally, we add all aliases of GNU iconv for `ascii', `latin1', and
-// `utf8' to catch those encoding names before iconv is called.
+// Finally, we add all aliases of GNU iconv for 'ascii', 'latin1', and
+// 'utf8' to catch those encoding names before iconv is called.
 //
 // Note that most entries are commented out -- only a small, (rather)
 // reliable and stable subset of encodings is recognized (for coding tags)
@@ -412,7 +417,7 @@ unicode_entity(int u)
 }
 
 // ---------------------------------------------------------
-// Conversion functions.  All functions take `data', which
+// Conversion functions.  All functions take 'data', which
 // normally holds the first two lines, and a file pointer.
 // ---------------------------------------------------------
 
@@ -658,7 +663,7 @@ conversion_iconv(FILE *fp, const string &data, char *enc)
   iconv_t handle = iconv_open(UNICODE, enc);
   if (handle == (iconv_t)-1) {
     if (errno == EINVAL) {
-      error("encoding system `%1' not supported by iconv()", enc);
+      error("encoding system '%1' not supported by iconv()", enc);
       return;
     }
     fatal("iconv_open failed");
@@ -667,7 +672,7 @@ conversion_iconv(FILE *fp, const string &data, char *enc)
   int outbuf[BUFSIZ];
   char *outptr = (char *)outbuf;
   size_t outbytes_left = BUFSIZ * sizeof (int);
-  // Handle `data'.
+  // Handle 'data'.
   char *inptr = (char *)data.contents();
   size_t inbytes_left = data.length();
   char *limit;
@@ -691,13 +696,13 @@ conversion_iconv(FILE *fp, const string &data, char *enc)
        outbytes_left = BUFSIZ * sizeof (int) - outbytes_left;
       }
       else if (errno == EINVAL) {
-       // `data' ends with partial input sequence.
+       // 'data' ends with partial input sequence.
        memcpy(inbuf, inptr, inbytes_left);
        break;
       }
     }
   }
-  // Handle `fp' and switch to `inbuf'.
+  // Handle 'fp' and switch to 'inbuf'.
   size_t read_bytes;
   char *read_start = inbuf + inbytes_left;
   while ((read_bytes = fread(read_start, 1, BUFSIZ - inbytes_left, fp)) > 0) {
@@ -723,7 +728,7 @@ conversion_iconv(FILE *fp, const string &data, char *enc)
          outbytes_left = BUFSIZ * sizeof (int) - outbytes_left;
        }
        else if (errno == EINVAL) {
-         // `inbuf' ends with partial input sequence.
+         // 'inbuf' ends with partial input sequence.
          memmove(inbuf, inptr, inbytes_left);
          break;
        }
@@ -748,7 +753,7 @@ conversion_iconv(FILE *fp, const string &data, char *enc)
 // that any normal text file (regardless of the encoding)
 // starts with the bytes which represent a BOM.
 //
-// Return the BOM in string `BOM'; `data' then starts with
+// Return the BOM in string 'BOM'; 'data' then starts with
 // the byte after the BOM.  This function reads (at most)
 // four bytes from the data stream.
 //
@@ -804,9 +809,9 @@ get_BOM(FILE *fp, string &BOM, string &data)
 // ---------------------------------------------------------
 // Get first two lines from input stream.
 //
-// Return string (allocated with `new') without zero bytes
+// Return string (allocated with 'new') without zero bytes
 // or NULL in case no coding tag can occur in the data
-// (which is stored unmodified in `data').
+// (which is stored unmodified in 'data').
 // ---------------------------------------------------------
 char *
 get_tag_lines(FILE *fp, string &data)
@@ -887,7 +892,7 @@ is_comment_line(char *s)
 //   <variable1>: <value1>; <variable2>: <value2>; ...
 //
 // Leading and trailing blanks are ignored.  There might be
-// more than one blank after `:' and `;'.
+// more than one blank after ':' and ';'.
 //
 // Return position of next value/variable pair or NULL if
 // at end of data.
@@ -905,7 +910,7 @@ get_variable_value_pair(char *d1, char **variable, char **value)
   while (l < MAX_VAR_LEN - 1 && *d1 && !strchr(";: \t", *d1))
     var[l++] = *(d1++);
   var[l] = 0;
-  // Skip everything until `:', `;', or end of data.
+  // Skip everything until ':', ';', or end of data.
   while (*d1 && *d1 != ':' && *d1 != ';')
     d1++;
   val[0] = 0;
@@ -921,7 +926,7 @@ get_variable_value_pair(char *d1, char **variable, char **value)
   while (l < MAX_VAR_LEN - 1 && *d1 && !strchr("; \t", *d1))
     val[l++] = *(d1++);
   val[l] = 0;
-  // Skip everything until `;' or end of data.
+  // Skip everything until ';' or end of data.
   while (*d1 && *d1 != ';')
     d1++;
   if (*d1 == ';')
@@ -936,14 +941,14 @@ get_variable_value_pair(char *d1, char **variable, char **value)
 //
 //   <comment> ... -*-<local variables list>-*-
 //
-// (`...' might be anything).
+// ('...' might be anything).
 //
 // <comment> can be one of the following syntax forms at the
 // beginning of the line:
 //
 //   .\"   .\#   '\"   '\#   \#
 //
-// There can be whitespace after the leading `.' or "'".
+// There can be whitespace after the leading '.' or "'".
 //
 // The local variables list must occur within the first
 // comment block at the very beginning of the data stream.
@@ -986,18 +991,87 @@ check_coding_tag(FILE *fp, string &data)
       d1 = get_variable_value_pair(d1, &variable, &value);
       if (!strcasecmp(variable, "coding")) {
        *d2 = '-';              // restore '-'
-       a_delete inbuf;
+       free(inbuf);
        return value;
       }
     }
     *d2 = '-';                 // restore '-'
   }
-  a_delete inbuf;
+  free(inbuf);
+  return NULL;
+}
+
+char *
+detect_file_encoding(FILE *fp)
+{
+#ifdef HAVE_UCHARDET
+  uchardet_t ud = NULL;
+  struct stat stat_buf;
+  size_t len, read_bytes;
+  char *data = NULL;
+  int res, current_position;
+  const char *charset;
+  char *ret = NULL;
+
+  current_position = ftell(fp);
+  /* due to BOM and tag detection we are not at the begining of the file */
+  rewind(fp);
+  if (fstat(fileno(fp), &stat_buf) != 0) {
+    fprintf(stderr, "fstat: %s\n", strerror(errno));
+    goto end;
+  }
+  len = stat_buf.st_size;
+  if (debug_flag)
+    fprintf(stderr, "  len: %zu\n", len);  
+  if (len == 0)
+    goto end;
+  data = (char *)calloc(len, 1);
+  read_bytes = fread(data, 1, len, fp);
+  if (read_bytes == 0) {
+    fprintf(stderr, "fread: %s\n", strerror(errno));
+    goto end;
+  }
+  /* We rewind back to the original position */
+  if (fseek(fp, current_position, SEEK_SET) != 0) {
+    fprintf(stderr, "Fatal error: fseek: %s\n", strerror(errno));
+    goto end;
+  }
+  ud = uchardet_new();
+  res = uchardet_handle_data(ud, data, len);
+  if (res != 0) {
+    fprintf(stderr, "uchardet_handle_data: %d\n", res);
+    goto end;
+  }
+  if (debug_flag)
+    fprintf(stderr, "  uchardet read: %zu bytes\n", read_bytes);
+  uchardet_data_end(ud);
+  charset = uchardet_get_charset(ud);
+  if (debug_flag) {
+    if (charset)
+       fprintf(stderr, "  charset: %s\n", charset);
+    else
+       fprintf(stderr, "  charset is NULL\n");
+  }
+  /* uchardet 0.0.1 could return an empty string instead of NULL */
+  if (charset && *charset) {
+    ret = (char *)malloc(strlen(charset) + 1);
+    strcpy(ret, charset);
+  }
+
+end:
+  if (ud)
+     uchardet_delete(ud);
+  if (data)
+     free(data);
+
+  return ret;
+#else /* not HAVE_UCHARDET */
   return NULL;
+#endif /* not HAVE_UCHARDET */
 }
 
 // ---------------------------------------------------------
-// Handle an input file.  If filename is `-' handle stdin.
+// Handle an input file.  If filename is '-' handle stdin.
 //
 // Return 1 on success, 0 otherwise.
 // ---------------------------------------------------------
@@ -1008,10 +1082,10 @@ do_file(const char *filename)
   string BOM, data;
   if (strcmp(filename, "-")) {
     if (debug_flag)
-      fprintf(stderr, "file `%s':\n", filename);
+      fprintf(stderr, "file '%s':\n", filename);
     fp = fopen(filename, FOPEN_RB);
     if (!fp) {
-      error("can't open `%1': %2", filename, strerror(errno));
+      error("can't open '%1': %2", filename, strerror(errno));
       return 0;
     }
   }
@@ -1024,13 +1098,14 @@ do_file(const char *filename)
   const char *BOM_encoding = get_BOM(fp, BOM, data);
   // Determine the encoding.
   char *encoding;
+  int must_free_encoding = 0;
   if (user_encoding[0]) {
     if (debug_flag) {
-      fprintf(stderr, "  user-specified encoding `%s', "
+      fprintf(stderr, "  user-specified encoding '%s', "
                      "no search for coding tag\n",
                      user_encoding);
       if (BOM_encoding && strcmp(BOM_encoding, user_encoding))
-       fprintf(stderr, "  but BOM in data stream implies encoding `%s'!\n",
+       fprintf(stderr, "  but BOM in data stream implies encoding '%s'!\n",
                        BOM_encoding);
     }
     encoding = (char *)user_encoding;
@@ -1041,32 +1116,45 @@ do_file(const char *filename)
     encoding = (char *)BOM_encoding;
   }
   else {
-    // `check_coding_tag' returns a pointer to a static array (or NULL).
+    // 'check_coding_tag' returns a pointer to a static array (or NULL).
     char *file_encoding = check_coding_tag(fp, data);
     if (!file_encoding) {
       if (debug_flag)
-       fprintf(stderr, "  no file encoding\n");
-      file_encoding = default_encoding;
+       fprintf(stderr, "  no encoding tag\n");
+      file_encoding = detect_file_encoding(fp);
+      if (!file_encoding) {
+        if (debug_flag)
+          fprintf(stderr, "  could not detect encoding with uchardet\n");
+        file_encoding = default_encoding;
+      }
+      else
+        must_free_encoding = 1;
     }
     else
       if (debug_flag)
-       fprintf(stderr, "  file encoding: `%s'\n", file_encoding);
+       fprintf(stderr, "  file encoding: '%s'\n", file_encoding);
     encoding = file_encoding;
   }
   strncpy(encoding_string, encoding, MAX_VAR_LEN - 1);
   encoding_string[MAX_VAR_LEN - 1] = 0;
+  if (must_free_encoding)
+    free(encoding);
   encoding = encoding_string;
   // Translate from MIME & Emacs encoding names to locale encoding names.
   encoding = emacs2mime(encoding_string);
   if (encoding[0] == '\0') {
-    error("encoding `%1' not supported, not a portable encoding",
+    error("encoding '%1' not supported, not a portable encoding",
          encoding_string);
     return 0;
   }
   if (debug_flag)
-    fprintf(stderr, "  encoding used: `%s'\n", encoding);
-  if (!raw_flag)
-    printf(".lf 1 %s\n", filename);
+    fprintf(stderr, "  encoding used: '%s'\n", encoding);
+  if (!raw_flag) {
+    string fn(filename);
+    fn += '\0';
+    normalize_for_lf(fn);
+    printf(".lf 1 %s\n", fn.contents());
+  }
   int success = 1;
   // Call converter (converters write to stdout).
   if (!strcasecmp(encoding, "ISO-8859-1"))
@@ -1079,7 +1167,7 @@ do_file(const char *filename)
 #if HAVE_ICONV
     conversion_iconv(fp, BOM + data, encoding);
 #else
-    error("encoding system `%1' not supported", encoding);
+    error("encoding system '%1' not supported", encoding);
     success = 0;
 #endif /* HAVE_ICONV */
   }
@@ -1103,7 +1191,7 @@ usage(FILE *stream)
                  "-r           don't add .lf requests\n"
                  "-v           print version number\n"
                  "\n"
-                 "The default encoding is `%s'.\n",
+                 "The default encoding is '%s'.\n",
                  program_name, default_encoding);
 }
 
@@ -1133,18 +1221,23 @@ main(int argc, char **argv)
     { "version", no_argument, 0, 'v' },
     { NULL, 0, 0, 0 }
   };
-  // Parse the command line options.
+  // Parse the command-line options.
   while ((opt = getopt_long(argc, argv,
                            "dD:e:hrv", long_options, NULL)) != EOF)
     switch (opt) {
     case 'v':
-      printf("GNU preconv (groff) version %s %s iconv support\n",
+      printf("GNU preconv (groff) version %s %s iconv support and %s uchardet support\n",
             Version_string,
 #ifdef HAVE_ICONV
-            "with"
+            "with",
 #else
-            "without"
+            "without",
 #endif /* HAVE_ICONV */
+#ifdef HAVE_UCHARDET
+             "with"
+#else
+             "without"
+#endif /* HAVE_UCHARDET */
            );
       exit(0);
       break;
@@ -1181,7 +1274,7 @@ main(int argc, char **argv)
     }
   int nbad = 0;
   if (debug_flag)
-    fprintf(stderr, "default encoding: `%s'\n", default_encoding);
+    fprintf(stderr, "default encoding: '%s'\n", default_encoding);
   if (optind >= argc)
     nbad += !do_file("-");
   else
diff --git a/src/preproc/refer/Makefile.sub b/src/preproc/refer/Makefile.sub
deleted file mode 100644 (file)
index b87dcc4..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-# Makefile.sub for `preproc refer'
-#
-# File position: <groff-source>/src/preproc/refer/Makefile.sub
-#
-# Copyright (C) 1989-2014  Free Software Foundation, Inc.
-#
-# This file is part of `font utf8' which is part of `groff'.
-#
-# `groff' is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 2 of the License, or
-# (at your option) any later version.
-#
-# `groff' 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
-# <http://www.gnu.org/licenses/gpl-2.0.html>.
-#
-########################################################################
-
-PROG=refer$(EXEEXT)
-MAN1=refer.n
-XLIBS=$(LIBBIB) $(LIBGROFF)
-MLIB=$(LIBM)
-OBJS=\
-  command.$(OBJEXT) \
-  label.$(OBJEXT) \
-  ref.$(OBJEXT) \
-  refer.$(OBJEXT) \
-  token.$(OBJEXT)
-CCSRCS=\
-  $(srcdir)/command.cpp \
-  $(srcdir)/ref.cpp \
-  $(srcdir)/refer.cpp \
-  $(srcdir)/token.cpp
-HDRS=\
-  $(srcdir)/refer.h \
-  $(srcdir)/token.h \
-  $(srcdir)/command.h \
-  $(srcdir)/ref.h
-GRAM=$(srcdir)/label.y
-YTABC=label.cpp
-NAMEPREFIX=$(g)
-
-.PHONY: install_data
-install_data: refer
-       -test -d $(DESTDIR)$(referdir) \
-         || $(mkinstalldirs) $(DESTDIR)$(referdir)
-
-.PHONY: uninstall_data
-uninstall_sub:
-       -test -d $(DESTDIR)$(referdir) && rmdir $(DESTDIR)$(referdir)
-
-
-########################################################################
-# Emacs settings
-########################################################################
-#
-# Local Variables:
-# mode: makefile
-# End:
index 5bbd9bf..36f4508 100644 (file)
@@ -17,7 +17,7 @@ back to filenames.
 Rename join-authors to join-fields.  Have a separate label-join-fields
 command used by @ and #.
 
-Have some sort of quantifier: eg $.n#A means execute `$.n' for each
+Have some sort of quantifier: e.g., $.n#A means execute '$.n' for each
 instance of an A field, setting $ to that field, and then join the
 results using the join-authors command.
 
@@ -31,7 +31,7 @@ Trim eign a bit.
 
 In indexed searching discard all numeric keys except dates.
 
-Allow `\ ' to separate article from first word.
+Allow '\ ' to separate article from first word.
 
 %also
 
@@ -51,7 +51,7 @@ first operand of ~. Or perhaps implement <> using some magic character
 in the string.
 
 Should special treatment be given to lines beginning with . in
-references?  (Unix refer seems to treat them like `%').
+references?  (Unix refer seems to treat them like '%').
 
 Add global flag to control whether all files should be stat-ed after
 loading, and whether they should be stat-ed before each search.
@@ -92,7 +92,7 @@ Provide a way to execute a command using a command-line option.
 
 Option to set the label-spec as a command-line option (-L).
 
-Command to to specify which fields can occur multiple times:
+Command to specify which fields can occur multiple times:
 multiple AE
 
 Command to specify how various fields sort:
index 9852729..f32ca24 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include "refer.h"
 #include "refid.h"
@@ -155,7 +155,7 @@ void input_stack::push_file(const char *fn)
     errno = 0;
     fp = fopen(fn, "r");
     if (fp == 0) {
-      error("can't open `%1': %2", fn, strerror(errno));
+      error("can't open '%1': %2", fn, strerror(errno));
       return;
     }
   }
@@ -697,7 +697,7 @@ static int check_args(const char *types, const char *name,
        break;
       }
       else {
-       input_stack::error("missing argument for command `%1'", name);
+       input_stack::error("missing argument for command '%1'", name);
        return 0;
       }
     }
@@ -710,7 +710,7 @@ static int check_args(const char *types, const char *name,
        long n = strtol(argv->s, &ptr, 10);
        if ((n == 0 && ptr == argv->s)
            || *ptr != '\0') {
-         input_stack::error("argument %1 for command `%2' must be an integer",
+         input_stack::error("argument %1 for command '%2' must be an integer",
                             argno + 1, name);
          return 0;
        }
@@ -721,7 +721,7 @@ static int check_args(const char *types, const char *name,
       {
        for (const char *ptr = argv->s; *ptr != '\0'; ptr++)
          if (!cs_field_name(*ptr)) {
-           input_stack::error("argument %1 for command `%2' must be a list of fields",
+           input_stack::error("argument %1 for command '%2' must be a list of fields",
                             argno + 1, name);
            return 0;
          }
@@ -730,7 +730,7 @@ static int check_args(const char *types, const char *name,
     case 'F':
       if (argv->s[0] == '\0' || argv->s[1] != '\0'
          || !cs_field_name(argv->s[0])) {
-       input_stack::error("argument %1 for command `%2' must be a field name",
+       input_stack::error("argument %1 for command '%2' must be a field name",
                           argno + 1, name);
        return 0;
       }
@@ -747,7 +747,7 @@ static int check_args(const char *types, const char *name,
     ++argno;
   }
   if (argc > 0) {
-    input_stack::error("too many arguments for command `%1'", name);
+    input_stack::error("too many arguments for command '%1'", name);
     return 0;
   }
   return 1;
@@ -762,7 +762,7 @@ static void execute_command(const char *name, int argc, argument *argv)
        (*command_table[i].func)(argc, argv);
       return;
     }
-  input_stack::error("unknown command `%1'", name);
+  input_stack::error("unknown command '%1'", name);
 }
 
 static void command_loop()
index 06f422d..dd143eb 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 void process_commands(const char *file);
 void process_commands(string &s, const char *file, int lineno);
index 12d2dfa..c836b8f 100644 (file)
@@ -1,8 +1,8 @@
-/* A Bison parser, made by GNU Bison 3.0.2.  */
+/* A Bison parser, made by GNU Bison 3.2.  */
 
 /* Bison implementation for Yacc-like parsers in C
 
-   Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
+   Copyright (C) 1984, 1989-1990, 2000-2015, 2018 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
    define necessary library symbols; they are noted "INFRINGES ON
    USER NAME SPACE" below.  */
 
+/* Undocumented macros, especially those whose name start with YY_,
+   are private implementation details.  Do not rely on them.  */
+
 /* Identify Bison output.  */
 #define YYBISON 1
 
 /* Bison version.  */
-#define YYBISON_VERSION "3.0.2"
+#define YYBISON_VERSION "3.2"
 
 /* Skeleton name.  */
 #define YYSKELETON_NAME "yacc.c"
@@ -61,8 +64,8 @@
 
 
 
-/* Copy the first part of user declarations.  */
-#line 20 "label.y" /* yacc.c:339  */
+/* First part of user prologue.  */
+#line 20 "../src/preproc/refer/label.ypp" /* yacc.c:338  */
 
 
 #include "refer.h"
@@ -262,13 +265,16 @@ static expression *parse_result;
 string literals;
 
 
-#line 266 "label.cpp" /* yacc.c:339  */
-
+#line 269 "src/preproc/refer/label.cpp" /* yacc.c:338  */
 # ifndef YY_NULLPTR
-#  if defined __cplusplus && 201103L <= __cplusplus
-#   define YY_NULLPTR nullptr
+#  if defined __cplusplus
+#   if 201103L <= __cplusplus
+#    define YY_NULLPTR nullptr
+#   else
+#    define YY_NULLPTR 0
+#   endif
 #  else
-#   define YY_NULLPTR 0
+#   define YY_NULLPTR ((void*)0)
 #  endif
 # endif
 
@@ -280,7 +286,10 @@ string literals;
 # define YYERROR_VERBOSE 0
 #endif
 
-
+/* In a future release of Bison, this section will be replaced
+   by #include "y.tab.h".  */
+#ifndef YY_YY_SRC_PREPROC_REFER_LABEL_HPP_INCLUDED
+# define YY_YY_SRC_PREPROC_REFER_LABEL_HPP_INCLUDED
 /* Debug traces.  */
 #ifndef YYDEBUG
 # define YYDEBUG 0
@@ -306,18 +315,20 @@ extern int yydebug;
 
 /* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-typedef union YYSTYPE YYSTYPE;
+
 union YYSTYPE
 {
-#line 220 "label.y" /* yacc.c:355  */
+#line 220 "../src/preproc/refer/label.ypp" /* yacc.c:353  */
 
   int num;
   expression *expr;
   struct { int ndigits; int val; } dig;
   struct { int start; int len; } str;
 
-#line 320 "label.cpp" /* yacc.c:355  */
+#line 329 "src/preproc/refer/label.cpp" /* yacc.c:353  */
 };
+
+typedef union YYSTYPE YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define YYSTYPE_IS_DECLARED 1
 #endif
@@ -327,11 +338,9 @@ extern YYSTYPE yylval;
 
 int yyparse (void);
 
+#endif /* !YY_YY_SRC_PREPROC_REFER_LABEL_HPP_INCLUDED  */
 
 
-/* Copy the second part of user declarations.  */
-
-#line 335 "label.cpp" /* yacc.c:358  */
 
 #ifdef short
 # undef short
@@ -352,13 +361,13 @@ typedef signed char yytype_int8;
 #ifdef YYTYPE_UINT16
 typedef YYTYPE_UINT16 yytype_uint16;
 #else
-typedef unsigned short int yytype_uint16;
+typedef unsigned short yytype_uint16;
 #endif
 
 #ifdef YYTYPE_INT16
 typedef YYTYPE_INT16 yytype_int16;
 #else
-typedef short int yytype_int16;
+typedef short yytype_int16;
 #endif
 
 #ifndef YYSIZE_T
@@ -370,7 +379,7 @@ typedef short int yytype_int16;
 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
 #  define YYSIZE_T size_t
 # else
-#  define YYSIZE_T unsigned int
+#  define YYSIZE_T unsigned
 # endif
 #endif
 
@@ -406,15 +415,6 @@ typedef short int yytype_int16;
 # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
 #endif
 
-#if !defined _Noreturn \
-     && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
-# if defined _MSC_VER && 1200 <= _MSC_VER
-#  define _Noreturn __declspec (noreturn)
-# else
-#  define _Noreturn YY_ATTRIBUTE ((__noreturn__))
-# endif
-#endif
-
 /* Suppress unused-variable warnings by "using" E.  */
 #if ! defined lint || defined __GNUC__
 # define YYUSE(E) ((void) (E))
@@ -422,7 +422,7 @@ typedef short int yytype_int16;
 # define YYUSE(E) /* empty */
 #endif
 
-#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
+#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
 /* Suppress an incorrect diagnostic about yylval being uninitialized.  */
 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
     _Pragma ("GCC diagnostic push") \
@@ -590,7 +590,7 @@ union yyalloc
 #define YYMAXUTOK   260
 
 #define YYTRANSLATE(YYX)                                                \
-  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+  ((unsigned) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
 
 /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
    as returned by yylex, without out-of-bounds checking.  */
@@ -823,37 +823,37 @@ do {                                                                      \
 } while (0)
 
 
-/*----------------------------------------.
-| Print this symbol's value on YYOUTPUT.  |
-`----------------------------------------*/
+/*-----------------------------------.
+| Print this symbol's value on YYO.  |
+`-----------------------------------*/
 
 static void
-yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
+yy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep)
 {
-  FILE *yyo = yyoutput;
-  YYUSE (yyo);
+  FILE *yyoutput = yyo;
+  YYUSE (yyoutput);
   if (!yyvaluep)
     return;
 # ifdef YYPRINT
   if (yytype < YYNTOKENS)
-    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+    YYPRINT (yyo, yytoknum[yytype], *yyvaluep);
 # endif
   YYUSE (yytype);
 }
 
 
-/*--------------------------------.
-| Print this symbol on YYOUTPUT.  |
-`--------------------------------*/
+/*---------------------------.
+| Print this symbol on YYO.  |
+`---------------------------*/
 
 static void
-yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
+yy_symbol_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep)
 {
-  YYFPRINTF (yyoutput, "%s %s (",
+  YYFPRINTF (yyo, "%s %s (",
              yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
 
-  yy_symbol_value_print (yyoutput, yytype, yyvaluep);
-  YYFPRINTF (yyoutput, ")");
+  yy_symbol_value_print (yyo, yytype, yyvaluep);
+  YYFPRINTF (yyo, ")");
 }
 
 /*------------------------------------------------------------------.
@@ -887,7 +887,7 @@ do {                                                            \
 static void
 yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule)
 {
-  unsigned long int yylno = yyrline[yyrule];
+  unsigned long yylno = yyrline[yyrule];
   int yynrhs = yyr2[yyrule];
   int yyi;
   YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
@@ -1020,7 +1020,7 @@ yytnamerr (char *yyres, const char *yystr)
   if (! yyres)
     return yystrlen (yystr);
 
-  return yystpcpy (yyres, yystr) - yyres;
+  return (YYSIZE_T) (yystpcpy (yyres, yystr) - yyres);
 }
 # endif
 
@@ -1113,6 +1113,7 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
       case N:                               \
         yyformat = S;                       \
       break
+    default: /* Avoid compiler warnings. */
       YYCASE_(0, YY_("syntax error"));
       YYCASE_(1, YY_("syntax error, unexpected %s"));
       YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
@@ -1261,12 +1262,12 @@ yyparse (void)
   yyssp++;
 
  yysetstate:
-  *yyssp = yystate;
+  *yyssp = (yytype_int16) yystate;
 
   if (yyss + yystacksize - 1 <= yyssp)
     {
       /* Get the current used size of the three stacks, in elements.  */
-      YYSIZE_T yysize = yyssp - yyss + 1;
+      YYSIZE_T yysize = (YYSIZE_T) (yyssp - yyss + 1);
 
 #ifdef yyoverflow
       {
@@ -1284,7 +1285,6 @@ yyparse (void)
                     &yyss1, yysize * sizeof (*yyssp),
                     &yyvs1, yysize * sizeof (*yyvsp),
                     &yystacksize);
-
         yyss = yyss1;
         yyvs = yyvs1;
       }
@@ -1318,7 +1318,7 @@ yyparse (void)
       yyvsp = yyvs + yysize - 1;
 
       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
-                  (unsigned long int) yystacksize));
+                  (unsigned long) yystacksize));
 
       if (yyss + yystacksize - 1 <= yyssp)
         YYABORT;
@@ -1429,106 +1429,106 @@ yyreduce:
   switch (yyn)
     {
         case 2:
-#line 249 "label.y" /* yacc.c:1646  */
+#line 249 "../src/preproc/refer/label.ypp" /* yacc.c:1645  */
     { parse_result = ((yyvsp[0].expr) ? new analyzed_expr((yyvsp[0].expr)) : 0); }
-#line 1435 "label.cpp" /* yacc.c:1646  */
+#line 1435 "src/preproc/refer/label.cpp" /* yacc.c:1645  */
     break;
 
   case 3:
-#line 254 "label.y" /* yacc.c:1646  */
+#line 254 "../src/preproc/refer/label.ypp" /* yacc.c:1645  */
     { (yyval.expr) = (yyvsp[0].expr); }
-#line 1441 "label.cpp" /* yacc.c:1646  */
+#line 1441 "src/preproc/refer/label.cpp" /* yacc.c:1645  */
     break;
 
   case 4:
-#line 256 "label.y" /* yacc.c:1646  */
+#line 256 "../src/preproc/refer/label.ypp" /* yacc.c:1645  */
     { (yyval.expr) = new conditional_expr((yyvsp[-4].expr), (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 1447 "label.cpp" /* yacc.c:1646  */
+#line 1447 "src/preproc/refer/label.cpp" /* yacc.c:1645  */
     break;
 
   case 5:
-#line 261 "label.y" /* yacc.c:1646  */
+#line 261 "../src/preproc/refer/label.ypp" /* yacc.c:1645  */
     { (yyval.expr) = 0; }
-#line 1453 "label.cpp" /* yacc.c:1646  */
+#line 1453 "src/preproc/refer/label.cpp" /* yacc.c:1645  */
     break;
 
   case 6:
-#line 263 "label.y" /* yacc.c:1646  */
+#line 263 "../src/preproc/refer/label.ypp" /* yacc.c:1645  */
     { (yyval.expr) = (yyvsp[0].expr); }
-#line 1459 "label.cpp" /* yacc.c:1646  */
+#line 1459 "src/preproc/refer/label.cpp" /* yacc.c:1645  */
     break;
 
   case 7:
-#line 268 "label.y" /* yacc.c:1646  */
+#line 268 "../src/preproc/refer/label.ypp" /* yacc.c:1645  */
     { (yyval.expr) = (yyvsp[0].expr); }
-#line 1465 "label.cpp" /* yacc.c:1646  */
+#line 1465 "src/preproc/refer/label.cpp" /* yacc.c:1645  */
     break;
 
   case 8:
-#line 270 "label.y" /* yacc.c:1646  */
+#line 270 "../src/preproc/refer/label.ypp" /* yacc.c:1645  */
     { (yyval.expr) = new alternative_expr((yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 1471 "label.cpp" /* yacc.c:1646  */
+#line 1471 "src/preproc/refer/label.cpp" /* yacc.c:1645  */
     break;
 
   case 9:
-#line 272 "label.y" /* yacc.c:1646  */
+#line 272 "../src/preproc/refer/label.ypp" /* yacc.c:1645  */
     { (yyval.expr) = new conditional_expr((yyvsp[-2].expr), (yyvsp[0].expr), 0); }
-#line 1477 "label.cpp" /* yacc.c:1646  */
+#line 1477 "src/preproc/refer/label.cpp" /* yacc.c:1645  */
     break;
 
   case 10:
-#line 277 "label.y" /* yacc.c:1646  */
+#line 277 "../src/preproc/refer/label.ypp" /* yacc.c:1645  */
     { (yyval.expr) = (yyvsp[0].expr); }
-#line 1483 "label.cpp" /* yacc.c:1646  */
+#line 1483 "src/preproc/refer/label.cpp" /* yacc.c:1645  */
     break;
 
   case 11:
-#line 279 "label.y" /* yacc.c:1646  */
+#line 279 "../src/preproc/refer/label.ypp" /* yacc.c:1645  */
     { (yyval.expr) = new list_expr((yyvsp[-1].expr), (yyvsp[0].expr)); }
-#line 1489 "label.cpp" /* yacc.c:1646  */
+#line 1489 "src/preproc/refer/label.cpp" /* yacc.c:1645  */
     break;
 
   case 12:
-#line 284 "label.y" /* yacc.c:1646  */
+#line 284 "../src/preproc/refer/label.ypp" /* yacc.c:1645  */
     { (yyval.expr) = (yyvsp[0].expr); }
-#line 1495 "label.cpp" /* yacc.c:1646  */
+#line 1495 "src/preproc/refer/label.cpp" /* yacc.c:1645  */
     break;
 
   case 13:
-#line 286 "label.y" /* yacc.c:1646  */
+#line 286 "../src/preproc/refer/label.ypp" /* yacc.c:1645  */
     { (yyval.expr) = new substitute_expr((yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 1501 "label.cpp" /* yacc.c:1646  */
+#line 1501 "src/preproc/refer/label.cpp" /* yacc.c:1645  */
     break;
 
   case 14:
-#line 291 "label.y" /* yacc.c:1646  */
+#line 291 "../src/preproc/refer/label.ypp" /* yacc.c:1645  */
     { (yyval.expr) = new at_expr; }
-#line 1507 "label.cpp" /* yacc.c:1646  */
+#line 1507 "src/preproc/refer/label.cpp" /* yacc.c:1645  */
     break;
 
   case 15:
-#line 293 "label.y" /* yacc.c:1646  */
+#line 293 "../src/preproc/refer/label.ypp" /* yacc.c:1645  */
     {
                  (yyval.expr) = new literal_expr(literals.contents() + (yyvsp[0].str).start,
                                        (yyvsp[0].str).len);
                }
-#line 1516 "label.cpp" /* yacc.c:1646  */
+#line 1516 "src/preproc/refer/label.cpp" /* yacc.c:1645  */
     break;
 
   case 16:
-#line 298 "label.y" /* yacc.c:1646  */
+#line 298 "../src/preproc/refer/label.ypp" /* yacc.c:1645  */
     { (yyval.expr) = new field_expr((yyvsp[0].num), 0); }
-#line 1522 "label.cpp" /* yacc.c:1646  */
+#line 1522 "src/preproc/refer/label.cpp" /* yacc.c:1645  */
     break;
 
   case 17:
-#line 300 "label.y" /* yacc.c:1646  */
+#line 300 "../src/preproc/refer/label.ypp" /* yacc.c:1645  */
     { (yyval.expr) = new field_expr((yyvsp[-1].num), (yyvsp[0].num) - 1); }
-#line 1528 "label.cpp" /* yacc.c:1646  */
+#line 1528 "src/preproc/refer/label.cpp" /* yacc.c:1645  */
     break;
 
   case 18:
-#line 302 "label.y" /* yacc.c:1646  */
+#line 302 "../src/preproc/refer/label.ypp" /* yacc.c:1645  */
     {
                  switch ((yyvsp[0].num)) {
                  case 'I':
@@ -1538,24 +1538,24 @@ yyreduce:
                    (yyval.expr) = new format_expr((yyvsp[0].num));
                    break;
                  default:
-                   command_error("unrecognized format `%1'", char((yyvsp[0].num)));
+                   command_error("unrecognized format '%1'", char((yyvsp[0].num)));
                    (yyval.expr) = new format_expr('a');
                    break;
                  }
                }
-#line 1547 "label.cpp" /* yacc.c:1646  */
+#line 1547 "src/preproc/refer/label.cpp" /* yacc.c:1645  */
     break;
 
   case 19:
-#line 318 "label.y" /* yacc.c:1646  */
+#line 318 "../src/preproc/refer/label.ypp" /* yacc.c:1645  */
     {
                  (yyval.expr) = new format_expr('0', (yyvsp[0].dig).ndigits, (yyvsp[0].dig).val);
                }
-#line 1555 "label.cpp" /* yacc.c:1646  */
+#line 1555 "src/preproc/refer/label.cpp" /* yacc.c:1645  */
     break;
 
   case 20:
-#line 322 "label.y" /* yacc.c:1646  */
+#line 322 "../src/preproc/refer/label.ypp" /* yacc.c:1645  */
     {
                  switch ((yyvsp[-1].num)) {
                  case 'l':
@@ -1581,99 +1581,99 @@ yyreduce:
                    break;
                  default:
                    (yyval.expr) = (yyvsp[-4].expr);
-                   command_error("unknown function `%1'", char((yyvsp[-1].num)));
+                   command_error("unknown function '%1'", char((yyvsp[-1].num)));
                    break;
                  }
                }
-#line 1589 "label.cpp" /* yacc.c:1646  */
+#line 1589 "src/preproc/refer/label.cpp" /* yacc.c:1645  */
     break;
 
   case 21:
-#line 353 "label.y" /* yacc.c:1646  */
+#line 353 "../src/preproc/refer/label.ypp" /* yacc.c:1645  */
     { (yyval.expr) = new truncate_expr((yyvsp[-2].expr), (yyvsp[0].num)); }
-#line 1595 "label.cpp" /* yacc.c:1646  */
+#line 1595 "src/preproc/refer/label.cpp" /* yacc.c:1645  */
     break;
 
   case 22:
-#line 355 "label.y" /* yacc.c:1646  */
+#line 355 "../src/preproc/refer/label.ypp" /* yacc.c:1645  */
     { (yyval.expr) = new truncate_expr((yyvsp[-2].expr), -(yyvsp[0].num)); }
-#line 1601 "label.cpp" /* yacc.c:1646  */
+#line 1601 "src/preproc/refer/label.cpp" /* yacc.c:1645  */
     break;
 
   case 23:
-#line 357 "label.y" /* yacc.c:1646  */
+#line 357 "../src/preproc/refer/label.ypp" /* yacc.c:1645  */
     { (yyval.expr) = new star_expr((yyvsp[-1].expr)); }
-#line 1607 "label.cpp" /* yacc.c:1646  */
+#line 1607 "src/preproc/refer/label.cpp" /* yacc.c:1645  */
     break;
 
   case 24:
-#line 359 "label.y" /* yacc.c:1646  */
+#line 359 "../src/preproc/refer/label.ypp" /* yacc.c:1645  */
     { (yyval.expr) = (yyvsp[-1].expr); }
-#line 1613 "label.cpp" /* yacc.c:1646  */
+#line 1613 "src/preproc/refer/label.cpp" /* yacc.c:1645  */
     break;
 
   case 25:
-#line 361 "label.y" /* yacc.c:1646  */
+#line 361 "../src/preproc/refer/label.ypp" /* yacc.c:1645  */
     { (yyval.expr) = new separator_expr((yyvsp[-1].expr)); }
-#line 1619 "label.cpp" /* yacc.c:1646  */
+#line 1619 "src/preproc/refer/label.cpp" /* yacc.c:1645  */
     break;
 
   case 26:
-#line 366 "label.y" /* yacc.c:1646  */
+#line 366 "../src/preproc/refer/label.ypp" /* yacc.c:1645  */
     { (yyval.num) = -1; }
-#line 1625 "label.cpp" /* yacc.c:1646  */
+#line 1625 "src/preproc/refer/label.cpp" /* yacc.c:1645  */
     break;
 
   case 27:
-#line 368 "label.y" /* yacc.c:1646  */
+#line 368 "../src/preproc/refer/label.ypp" /* yacc.c:1645  */
     { (yyval.num) = (yyvsp[0].num); }
-#line 1631 "label.cpp" /* yacc.c:1646  */
+#line 1631 "src/preproc/refer/label.cpp" /* yacc.c:1645  */
     break;
 
   case 28:
-#line 373 "label.y" /* yacc.c:1646  */
+#line 373 "../src/preproc/refer/label.ypp" /* yacc.c:1645  */
     { (yyval.num) = (yyvsp[0].num); }
-#line 1637 "label.cpp" /* yacc.c:1646  */
+#line 1637 "src/preproc/refer/label.cpp" /* yacc.c:1645  */
     break;
 
   case 29:
-#line 375 "label.y" /* yacc.c:1646  */
+#line 375 "../src/preproc/refer/label.ypp" /* yacc.c:1645  */
     { (yyval.num) = (yyvsp[-1].num)*10 + (yyvsp[0].num); }
-#line 1643 "label.cpp" /* yacc.c:1646  */
+#line 1643 "src/preproc/refer/label.cpp" /* yacc.c:1645  */
     break;
 
   case 30:
-#line 380 "label.y" /* yacc.c:1646  */
+#line 380 "../src/preproc/refer/label.ypp" /* yacc.c:1645  */
     { (yyval.dig).ndigits = 1; (yyval.dig).val = (yyvsp[0].num); }
-#line 1649 "label.cpp" /* yacc.c:1646  */
+#line 1649 "src/preproc/refer/label.cpp" /* yacc.c:1645  */
     break;
 
   case 31:
-#line 382 "label.y" /* yacc.c:1646  */
+#line 382 "../src/preproc/refer/label.ypp" /* yacc.c:1645  */
     { (yyval.dig).ndigits = (yyvsp[-1].dig).ndigits + 1; (yyval.dig).val = (yyvsp[-1].dig).val*10 + (yyvsp[0].num); }
-#line 1655 "label.cpp" /* yacc.c:1646  */
+#line 1655 "src/preproc/refer/label.cpp" /* yacc.c:1645  */
     break;
 
   case 32:
-#line 388 "label.y" /* yacc.c:1646  */
+#line 388 "../src/preproc/refer/label.ypp" /* yacc.c:1645  */
     { (yyval.num) = 0; }
-#line 1661 "label.cpp" /* yacc.c:1646  */
+#line 1661 "src/preproc/refer/label.cpp" /* yacc.c:1645  */
     break;
 
   case 33:
-#line 390 "label.y" /* yacc.c:1646  */
+#line 390 "../src/preproc/refer/label.ypp" /* yacc.c:1645  */
     { (yyval.num) = 1; }
-#line 1667 "label.cpp" /* yacc.c:1646  */
+#line 1667 "src/preproc/refer/label.cpp" /* yacc.c:1645  */
     break;
 
   case 34:
-#line 392 "label.y" /* yacc.c:1646  */
+#line 392 "../src/preproc/refer/label.ypp" /* yacc.c:1645  */
     { (yyval.num) = -1; }
-#line 1673 "label.cpp" /* yacc.c:1646  */
+#line 1673 "src/preproc/refer/label.cpp" /* yacc.c:1645  */
     break;
 
 
-#line 1677 "label.cpp" /* yacc.c:1646  */
+#line 1677 "src/preproc/refer/label.cpp" /* yacc.c:1645  */
       default: break;
     }
   /* User semantic actions sometimes alter yychar, and that requires
@@ -1698,14 +1698,13 @@ yyreduce:
   /* Now 'shift' the result of the reduction.  Determine what state
      that goes to, based on the state we popped back to and the rule
      number reduced by.  */
-
-  yyn = yyr1[yyn];
-
-  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
-  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
-    yystate = yytable[yystate];
-  else
-    yystate = yydefgoto[yyn - YYNTOKENS];
+  {
+    const int yylhs = yyr1[yyn] - YYNTOKENS;
+    const int yyi = yypgoto[yylhs] + *yyssp;
+    yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
+               ? yytable[yyi]
+               : yydefgoto[yylhs]);
+  }
 
   goto yynewstate;
 
@@ -1901,7 +1900,7 @@ yyreturn:
 #endif
   return yyresult;
 }
-#line 395 "label.y" /* yacc.c:1906  */
+#line 395 "../src/preproc/refer/label.ypp" /* yacc.c:1903  */
 
 
 /* bison defines const to be empty unless __STDC__ is defined, which it
@@ -2004,7 +2003,7 @@ int set_short_label_spec(const char *label_spec)
 void yyerror(const char *message)
 {
   if (spec_cur < spec_end)
-    command_error("label specification %1 before `%2'", message, spec_cur);
+    command_error("label specification %1 before '%2'", message, spec_cur);
   else
     command_error("label specification %1 at end of string",
                  message, spec_cur);
@@ -2538,8 +2537,8 @@ void compute_labels(reference **v, int n)
 /* A reference with a list of authors <A0,A1,...,AN> _needs_ author i
 where 0 <= i <= N if there exists a reference with a list of authors
 <B0,B1,...,BM> such that <A0,A1,...,AN> != <B0,B1,...,BM> and M >= i
-and Aj = Bj for 0 <= j < i. In this case if we can't say ``A0,
-A1,...,A(i-1) et al'' because this would match both <A0,A1,...,AN> and
+and Aj = Bj for 0 <= j < i. In this case if we can't say "A0,
+A1,...,A(i-1) et al" because this would match both <A0,A1,...,AN> and
 <B0,B1,...,BM>.  If a reference needs author i we only have to call
 need_author(j) for some j >= i such that the reference also needs
 author j. */
diff --git a/src/preproc/refer/label.hpp b/src/preproc/refer/label.hpp
new file mode 100644 (file)
index 0000000..3c76087
--- /dev/null
@@ -0,0 +1,86 @@
+/* A Bison parser, made by GNU Bison 3.2.  */
+
+/* Bison interface for Yacc-like parsers in C
+
+   Copyright (C) 1984, 1989-1990, 2000-2015, 2018 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 <http://www.gnu.org/licenses/>.  */
+
+/* As a special exception, you may create a larger work that contains
+   part or all of the Bison parser skeleton and distribute that work
+   under terms of your choice, so long as that work isn't itself a
+   parser generator using the skeleton or a modified version thereof
+   as a parser skeleton.  Alternatively, if you modify or redistribute
+   the parser skeleton itself, you may (at your option) remove this
+   special exception, which will cause the skeleton and the resulting
+   Bison output files to be licensed under the GNU General Public
+   License without this special exception.
+
+   This special exception was added by the Free Software Foundation in
+   version 2.2 of Bison.  */
+
+/* Undocumented macros, especially those whose name start with YY_,
+   are private implementation details.  Do not rely on them.  */
+
+#ifndef YY_YY_SRC_PREPROC_REFER_LABEL_HPP_INCLUDED
+# define YY_YY_SRC_PREPROC_REFER_LABEL_HPP_INCLUDED
+/* Debug traces.  */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+#if YYDEBUG
+extern int yydebug;
+#endif
+
+/* Token type.  */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+  enum yytokentype
+  {
+    TOKEN_LETTER = 258,
+    TOKEN_LITERAL = 259,
+    TOKEN_DIGIT = 260
+  };
+#endif
+/* Tokens.  */
+#define TOKEN_LETTER 258
+#define TOKEN_LITERAL 259
+#define TOKEN_DIGIT 260
+
+/* Value type.  */
+#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
+
+union YYSTYPE
+{
+#line 220 "../src/preproc/refer/label.ypp" /* yacc.c:1906  */
+
+  int num;
+  expression *expr;
+  struct { int ndigits; int val; } dig;
+  struct { int start; int len; } str;
+
+#line 74 "src/preproc/refer/label.hpp" /* yacc.c:1906  */
+};
+
+typedef union YYSTYPE YYSTYPE;
+# define YYSTYPE_IS_TRIVIAL 1
+# define YYSTYPE_IS_DECLARED 1
+#endif
+
+
+extern YYSTYPE yylval;
+
+int yyparse (void);
+
+#endif /* !YY_YY_SRC_PREPROC_REFER_LABEL_HPP_INCLUDED  */
similarity index 98%
rename from src/preproc/refer/label.y
rename to src/preproc/refer/label.ypp
index 7d0708a..6409990 100644 (file)
@@ -1,5 +1,5 @@
 /* -*- C++ -*-
-   Copyright (C) 1989-201 Free Software Foundation, Inc.
+   Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 %{
 
@@ -308,7 +308,7 @@ string:
                    $$ = new format_expr($2);
                    break;
                  default:
-                   command_error("unrecognized format `%1'", char($2));
+                   command_error("unrecognized format '%1'", char($2));
                    $$ = new format_expr('a');
                    break;
                  }
@@ -344,7 +344,7 @@ string:
                    break;
                  default:
                    $$ = $1;
-                   command_error("unknown function `%1'", char($4));
+                   command_error("unknown function '%1'", char($4));
                    break;
                  }
                }
@@ -494,7 +494,7 @@ int set_short_label_spec(const char *label_spec)
 void yyerror(const char *message)
 {
   if (spec_cur < spec_end)
-    command_error("label specification %1 before `%2'", message, spec_cur);
+    command_error("label specification %1 before '%2'", message, spec_cur);
   else
     command_error("label specification %1 at end of string",
                  message, spec_cur);
@@ -1028,8 +1028,8 @@ void compute_labels(reference **v, int n)
 /* A reference with a list of authors <A0,A1,...,AN> _needs_ author i
 where 0 <= i <= N if there exists a reference with a list of authors
 <B0,B1,...,BM> such that <A0,A1,...,AN> != <B0,B1,...,BM> and M >= i
-and Aj = Bj for 0 <= j < i. In this case if we can't say ``A0,
-A1,...,A(i-1) et al'' because this would match both <A0,A1,...,AN> and
+and Aj = Bj for 0 <= j < i. In this case if we can't say "A0,
+A1,...,A(i-1) et al" because this would match both <A0,A1,...,AN> and
 <B0,B1,...,BM>.  If a reference needs author i we only have to call
 need_author(j) for some j >= i such that the reference also needs
 author j. */
index 3ed173d..3d9e942 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
 Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
      
 #include "refer.h"
 #include "refid.h"
@@ -365,7 +365,7 @@ void sortify_date(const char *s, int len, string &key)
   const char *year_end;
   const char *year_start = find_year(s, s + len, &year_end);
   if (!year_start) {
-    // Things without years are often `forthcoming', so it makes sense
+    // Things without years are often 'forthcoming', so it makes sense
     // that they sort after things with explicit years.
     key += 'A';
     sortify_words(s, s + len, 0, key);
index 1b7e17e..dfc4552 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 // declarations to avoid friend name injection problems
 int compare_reference(const reference &, const reference &);
similarity index 86%
rename from src/preproc/refer/refer.man
rename to src/preproc/refer/refer.1.man
index f5bc6c7..54279e5 100644 (file)
@@ -1,88 +1,64 @@
-.TH @G@REFER @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
+.TH @G@REFER @MAN1EXT@ "@MDATE@" "groff @VERSION@"
 .SH NAME
 @g@refer \- preprocess bibliographic references for groff
 .
 .
-.\" --------------------------------------------------------------------
-.\" Legalese
-.\" --------------------------------------------------------------------
-.
-.de co
-Copyright \[co] 1989-2014 Free Software Foundation, Inc.
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the
-entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
-Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be included in
-translations approved by the Free Software Foundation instead of in
-the original English.
-..
-.
-.\" --------------------------------------------------------------------
-.\" Macro Definitions
-.\" --------------------------------------------------------------------
-.
-.de TQ
-.  br
-.  ns
-.  TP \\$1
-..
-.
-.\" Like TP, but if specified indent is more than half
-.\" the current line-length - indent, use the default indent.
-.de Tp
-.  ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP
-.  el .TP "\\$1"
-..
-.
-.\" The BSD man macros can't handle " in arguments to font change macros,
-.\" so use \(ts instead of ".
-.tr \(ts"\""
-.
-.
-.\" --------------------------------------------------------------------
+.\" ====================================================================
+.\" Legal Terms
+.\" ====================================================================
+.\"
+.\" Copyright (C) 1989-2018 Free Software Foundation, Inc.
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of
+.\" this manual under the conditions for verbatim copying, provided that
+.\" the entire resulting derived work is distributed under the terms of
+.\" a permission notice identical to this one.
+.\"
+.\" Permission is granted to copy and distribute translations of this
+.\" manual into another language, under the above conditions for
+.\" modified versions, except that this permission notice may be
+.\" included in translations approved by the Free Software Foundation
+.\" instead of in the original English.
+.
+.
+.\" ====================================================================
 .SH SYNOPSIS
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
-.nr a \n(.j
-.ad l
-.nr i \n(.i
-.in +\w'\fB@g@refer 'u
-.ti \niu
-.B @g@refer
-.
-.de OP
-.  ie \\n(.$-1 .RI "[\ \fB\\$1\fP" "\\$2" "\ ]"
-.  el .RB "[\ " "\\$1" "\ ]"
-..
-.
-.OP \-benvCPRS
+.SY @g@refer
+.OP \-benCPRS
 .OP \-a n
 .OP \-c fields
 .OP \-f n
 .OP \-i fields
 .OP \-k field
 .OP \-l m,n
-.OP \-p \%filename
+.OP \-p filename
 .OP \-s fields
 .OP \-t n
-.OP \-B field.macro
-.RI [\  \%filename \|.\|.\|.\ ]
-.br
-.ad \na
+.BI "\-B " field . macro
+.RI [ file
+\&.\|.\|.\&]
+.YS
 .
+.SY @g@refer
+.B \-\-help
+.YS
+.
+.SY @g@refer
+.B \-v
+.SY @g@refer
+.B \-\-version
+.YS
 .
-\" --------------------------------------------------------------------
+.
+.\" ====================================================================
 .SH DESCRIPTION
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 This file documents the GNU version of
 .BR refer ,
@@ -204,19 +180,17 @@ preprocessed by a command such as
 .BR @g@soelim (@MAN1EXT@).
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH OPTIONS
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
-It is possible to have whitespace between a command line option and its
-parameter.
+Whitespace is permitted between a command-line option and its argument.
 .
 .
 .LP
 Most options are equivalent to commands
-(for a description of these commands see the
-.B Commands
-subsection):
+(for a description of these commands,
+see subsection \(lqCommands\(rq below).
 .
 .
 .nr a \n(.j
@@ -291,7 +265,7 @@ label\ "(A.n|Q)\ ',\ '\ (D.y|D)"; \%bracket-label\ "\ ("\ )\ ";\ "
 .TP
 .B \-l
 .B label
-.BI A.nD.y%a
+.B A.nD.y%a
 .
 .
 .TP
@@ -367,13 +341,13 @@ Don't recognize lines beginning with
 .BR .R1 / .R2 .
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH USAGE
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS Bibliographic databases
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The bibliographic database is a text file consisting of records
 separated by one or more blank lines.
@@ -569,9 +543,9 @@ use one
 rather than two.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS Citations
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The format of a citation is
 .
@@ -589,7 +563,7 @@ The format of a citation is
 .LP
 The
 .IR opening-text ,
-.IR closing-text
+.IR closing-text ,
 and
 .I flags
 components are optional.
@@ -769,9 +743,9 @@ is non-empty.
 .BR \e& .)
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS Commands
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 Commands are contained between lines starting with
 .B .R1
@@ -807,29 +781,29 @@ Each command is broken up into words.
 Words are separated by spaces or tabs.
 .
 A word that begins with
-.B \(ts
+.B \[dq]
 extends to the next
-.B \(ts
+.B \[dq]
 that is not followed by another
-.BR \(ts .
+.BR \[dq] .
 .
 If there is no such
-.B \(ts
+.B \[dq]
 the word extends to the end of the line.
 .
 Pairs of
-.B \(ts
+.B \[dq]
 in a word beginning with
-.B \(ts
+.B \[dq]
 collapse to a single
-.BR \(ts .
+.BR \[dq] .
 .
 Neither
 .B #
 nor
 .B ;
 are recognized inside
-.BR \(ts s.
+.BR \[dq] s.
 .
 A line can be continued by ending it with
 .BR \e ;
@@ -869,7 +843,7 @@ is used for an arbitrary string;
 is used for the name of a file.
 .
 .
-.Tp \w'\fBabbreviate-label-ranges'u+2n
+.TP
 .BI abbreviate\*n\  fields\ string1\ string2\ string3\ string4
 Abbreviate the first names of
 .IR fields .
@@ -1056,9 +1030,8 @@ is a label expression that specifies a string with which to replace the
 .B D
 field after constructing the label.
 .
-See the
-.B "Label expressions"
-subsection for a description of label expressions.
+See subsection \(lqLabel expressions\(rq below for a description of
+label expressions.
 .
 This command is useful if you do not want explicit labels in the
 reference list,
@@ -1323,9 +1296,8 @@ Also
 can be used to indicate the references should be sorted using the
 (tentative) label.
 .
-(The
-.B "Label expressions"
-subsection describes the concept of a tentative label.)
+(Subsection \(lqLabel expressions\(rq below describes the concept of a
+tentative label.)
 .
 .
 .TP
@@ -1343,9 +1315,9 @@ expression.
 This will have no effect unless references are being accumulated.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS Label expressions
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 Label expressions can be evaluated both normally and tentatively.
 .
@@ -1652,9 +1624,9 @@ and
 have the same precedence.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS Macro interface
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 Each reference starts with a call to the macro
 .BR ]- .
@@ -1716,7 +1688,7 @@ otherwise if it contains a
 or
 .B R
 field it will be type\ 4,
-otherwise if contains a
+otherwise if it contains an
 .B I
 field it will be type\ 2,
 otherwise it will be type\ 0.
@@ -1738,17 +1710,17 @@ macro and followed by a call to the
 macro.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH FILES
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
-.Tp \w'\fB@DEFAULT_INDEX@'u+2n
-.B @DEFAULT_INDEX@
+.TP
+.I @DEFAULT_INDEX@
 Default database.
 .
 .
 .TP
-.IB file @INDEX_SUFFIX@
+.RI file @INDEX_SUFFIX@
 Index files.
 .
 .
@@ -1761,18 +1733,18 @@ See the
 man page for details where such files are created.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH ENVIRONMENT
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
-.Tp \w'\fBREFER'u+2n
-.B REFER
+.TP
+.I REFER
 If set, overrides the default database.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "SEE ALSO"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .BR @g@indxbib (@MAN1EXT@),
 .BR @g@lookbib (@MAN1EXT@),
@@ -1780,9 +1752,9 @@ If set, overrides the default database.
 .br
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH BUGS
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 In label expressions,
 .B <>
@@ -1791,12 +1763,7 @@ expressions are ignored inside
 expressions.
 .
 .
-.\" --------------------------------------------------------------------
-.SH COPYING
-.\" --------------------------------------------------------------------
-.co
-.
-.
 .\" Local Variables:
 .\" mode: nroff
 .\" End:
+.\" vim: set filetype=groff:
diff --git a/src/preproc/refer/refer.am b/src/preproc/refer/refer.am
new file mode 100644 (file)
index 0000000..61f24ee
--- /dev/null
@@ -0,0 +1,51 @@
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Latest update: 22 Aug 2015
+#
+# This file is part of groff.
+#
+# groff 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.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+
+prefixexecbin_PROGRAMS += refer
+refer_CPPFLAGS = $(AM_CPPFLAGS) -I $(top_srcdir)/src/preproc/refer
+refer_LDADD = libbib.a libgroff.a $(LIBM) lib/libgnu.a
+refer_SOURCES =  \
+  src/preproc/refer/command.cpp \
+  src/preproc/refer/ref.cpp \
+  src/preproc/refer/refer.cpp \
+  src/preproc/refer/token.cpp \
+  src/preproc/refer/label.ypp \
+  src/preproc/refer/refer.h \
+  src/preproc/refer/ref.h \
+  src/preproc/refer/token.h \
+  src/preproc/refer/command.h
+PREFIXMAN1 += src/preproc/refer/refer.1
+EXTRA_DIST += src/preproc/refer/TODO src/preproc/refer/refer.1.man
+CLEANFILES += \
+  src/preproc/refer/label.cpp \
+  src/preproc/refer/label.hpp \
+  src/preproc/refer/label.output
+# As refer_CPPFLAGS was set, all the .o have a 'refer-' prefix
+src/preproc/refer/refer-command.$(OBJEXT): defs.h
+src/preproc/refer/refer-ref.$(OBJEXT): defs.h
+src/preproc/refer/refer-refer.$(OBJEXT): defs.h
+src/preproc/refer/refer-token.$(OBJEXT): defs.h
+src/preproc/refer/refer-label.$(OBJEXT): defs.h
+
+
+########################################################################
+### Emacs settings
+# Local Variables:
+# mode: makefile-automake
+# End:
index ec0a4e3..fe1e52a 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include "refer.h"
 #include "refid.h"
@@ -173,7 +173,7 @@ int main(int argc, char **argv)
              --argc;
            }
            else {
-             error("option `f' requires an argument");
+             error("option 'f' requires an argument");
              usage(stderr);
              exit(1);
            }
@@ -185,7 +185,7 @@ int main(int argc, char **argv)
          const char *ptr;
          for (ptr = num; *ptr; ptr++)
            if (!csdigit(*ptr)) {
-             error("bad character `%1' in argument to -f option", *ptr);
+             error("bad character '%1' in argument to -f option", *ptr);
              break;
            }
          if (*ptr == '\0') {
@@ -218,7 +218,7 @@ int main(int argc, char **argv)
            buf[0] = *opt++;
          else {
            if (*opt != '\0')
-             error("bad field name `%1'", *opt++);
+             error("bad field name '%1'", *opt++);
            buf[0] = 'L';
          }
          buf[1] = '~';
@@ -234,7 +234,7 @@ int main(int argc, char **argv)
          const char *ptr;
          for (ptr = ++opt; *ptr; ptr++)
            if (!csdigit(*ptr)) {
-             error("argument to `a' option not a number");
+             error("argument to 'a' option not a number");
              break;
            }
          if (*ptr == '\0') {
@@ -256,7 +256,7 @@ int main(int argc, char **argv)
            char *ptr;
            long n = strtol(opt, &ptr, 10);
            if (n == 0 && ptr == opt) {
-             error("bad integer `%1' in `l' option", opt);
+             error("bad integer '%1' in 'l' option", opt);
              opt = 0;
              break;
            }
@@ -272,7 +272,7 @@ int main(int argc, char **argv)
            char *ptr;
            long n = strtol(opt, &ptr, 10);
            if (n == 0 && ptr == opt) {
-             error("bad integer `%1' in `l' option", opt);
+             error("bad integer '%1' in 'l' option", opt);
              opt = 0;
              break;
            }
@@ -281,7 +281,7 @@ int main(int argc, char **argv)
            sprintf(strchr(buf, '\0'), "-%ld", n);
            opt = ptr;
            if (*opt != '\0')
-             error("argument to `l' option not of form `m,n'");
+             error("argument to 'l' option not of form 'm,n'");
          }
          strcat(buf, "%a");
          if (!set_label_spec(buf))
@@ -302,7 +302,7 @@ int main(int argc, char **argv)
              argc--;
            }
            else {
-             error("option `p' requires an argument");
+             error("option 'p' requires an argument");
              usage(stderr);
              exit(1);
            }
@@ -328,7 +328,7 @@ int main(int argc, char **argv)
          char *ptr;
          long n = strtol(opt, &ptr, 10);
          if (n == 0 && ptr == opt) {
-           error("bad integer `%1' in `t' option", opt);
+           error("bad integer '%1' in 't' option", opt);
            opt = 0;
            break;
          }
@@ -357,7 +357,7 @@ int main(int argc, char **argv)
        }
        // fall through
       default:
-       error("unrecognized option `%1'", *opt);
+       error("unrecognized option '%1'", *opt);
        usage(stderr);
        exit(1);
        break;
@@ -428,12 +428,15 @@ static void do_file(const char *filename)
     errno = 0;
     fp = fopen(filename, "r");
     if (fp == 0) {
-      error("can't open `%1': %2", filename, strerror(errno));
+      error("can't open '%1': %2", filename, strerror(errno));
       return;
     }
   }
-  current_filename = filename;
-  fprintf(outfp, ".lf 1 %s\n", filename);
+  string fn(filename);
+  fn += '\0';
+  normalize_for_lf(fn);
+  current_filename = fn.contents();
+  fprintf(outfp, ".lf 1 %s\n", current_filename);
   string line;
   current_lineno = 0;
   for (;;) {
@@ -467,7 +470,7 @@ static void do_file(const char *filename)
        int c = getc(fp);
        if (c == EOF) {
          error_with_file_and_line(current_filename, start_lineno,
-                                  "missing `.]' line");
+                                  "missing '.]' line");
          break;
        }
        if (start_of_line)
@@ -497,7 +500,7 @@ static void do_file(const char *filename)
        if (accumulate)
          output_references();
        else
-         error("found `$LIST$' but not accumulating references");
+         error("found '$LIST$' but not accumulating references");
       }
       else {
        unsigned flags = (accumulate
@@ -577,7 +580,7 @@ static void do_file(const char *filename)
        }
        if (c == EOF) {
          error_with_file_and_line(current_filename, start_lineno,
-                                  "missing `.R2' line");
+                                  "missing '.R2' line");
          break;
        }
        if (invalid_input_char(c))
@@ -940,7 +943,7 @@ void output_references()
   assert(accumulate);
   if (!hash_table_size) {
     if (have_bibliography)
-      error("nothing to reference (probably `bibliography' before `sort')");
+      error("nothing to reference (probably 'bibliography' before 'sort')");
     accumulate = 0;
     nreferences = 0;
     return;
@@ -1010,7 +1013,7 @@ static reference *find_reference(const char *query, int query_len)
   const char *start;
   int len;
   if (!iter.next(&start, &len, &rid)) {
-    error("no matches for `%1'", str.contents());
+    error("no matches for '%1'", str.contents());
     return 0;
   }
   const char *end = start + len;
@@ -1021,13 +1024,13 @@ static reference *find_reference(const char *query, int query_len)
       ;
   }
   if (start >= end) {
-    error("found a reference for `%1' but it didn't contain any fields",
+    error("found a reference for '%1' but it didn't contain any fields",
          str.contents());
     return 0;
   }
   reference *result = new reference(start, end - start, &rid);
   if (iter.next(&start, &len, &rid))
-    warning("multiple matches for `%1'", str.contents());
+    warning("multiple matches for '%1'", str.contents());
   return result;
 }
 
@@ -1107,7 +1110,7 @@ void do_bib(const char *filename)
     errno = 0;
     fp = fopen(filename, "r");
     if (fp == 0) {
-      error("can't open `%1': %2", filename, strerror(errno));
+      error("can't open '%1': %2", filename, strerror(errno));
       return;
     }
     current_filename = filename;
index 38474e9..a1a791c 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include "lib.h"
 
@@ -28,6 +28,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. */
 #include "stringclass.h"
 #include "cset.h"
 #include "cmap.h"
+#include "lf.h"
 
 #include "defs.h"
 
index 710adde..4aa0d22 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include "refer.h"
 #include "token.h"
index 1b9befb..fbff8f6 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 enum token_type {
   TOKEN_OTHER,
diff --git a/src/preproc/soelim/Makefile.sub b/src/preproc/soelim/Makefile.sub
deleted file mode 100644 (file)
index 187fb8f..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-# Makefile.sub for `preproc soelim'
-#
-# File position: <groff-source>/src/preproc/soelim/Makefile.sub
-#
-# Copyright (C) 2014  Free Software Foundation, Inc.
-#
-# This file is part of `font utf8' which is part of `groff'.
-#
-# `groff' is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 2 of the License, or
-# (at your option) any later version.
-#
-# `groff' 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
-# <http://www.gnu.org/licenses/gpl-2.0.html>.
-#
-########################################################################
-
-PROG=soelim$(EXEEXT)
-MAN1=soelim.n
-XLIBS=$(LIBGROFF)
-MLIB=$(LIBM)
-OBJS=soelim.$(OBJEXT)
-CCSRCS=$(srcdir)/soelim.cpp
-NAMEPREFIX=$(g)
-
-########################################################################
-# Emacs settings
-########################################################################
-#
-# Local Variables:
-# mode: makefile
-# End:
similarity index 66%
rename from src/preproc/soelim/soelim.man
rename to src/preproc/soelim/soelim.1.man
index 765d36d..1bbbe21 100644 (file)
@@ -1,51 +1,52 @@
 '\" p
-.mso pic.tmac
-.TH @G@SOELIM @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
+.TH @G@SOELIM @MAN1EXT@ "@MDATE@" "groff @VERSION@"
 .SH NAME
 @g@soelim \- interpret .so requests in groff input
 .
 .
-.\" license (copying)
-.de co
-Copyright \[co] 1989-2014 Free Software Foundation, Inc.
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the
-entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
-Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be included in
-translations approved by the Free Software Foundation instead of in
-the original English.
-..
-.
-.\" --------------------------------------------------------------------
+.\" Save and disable compatibility mode (for, e.g., Solaris 10/11).
+.do nr soelim_C \n[.C]
+.cp 0
+.mso pic.tmac
+.
+.
+.\" ====================================================================
+.\" Legal Terms
+.\" ====================================================================
+.\"
+.\" Copyright (C) 1989-2018 Free Software Foundation, Inc.
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of
+.\" this manual under the conditions for verbatim copying, provided that
+.\" the entire resulting derived work is distributed under the terms of
+.\" a permission notice identical to this one.
+.\"
+.\" Permission is granted to copy and distribute translations of this
+.\" manual into another language, under the above conditions for
+.\" modified versions, except that this permission notice may be
+.\" included in translations approved by the Free Software Foundation
+.\" instead of in the original English.
+.
+.
+.\" ====================================================================
 .SH SYNOPSIS
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .SY @g@soelim
 .OP \-Crtv
 .OP \-I dir
-.RI [ files
-.IR \|.\|.\|. ]
+.RI [ file
+\&.\|.\|.\&]
 .YS
 .
 .
-.PP
-It is possible to have whitespace between the
-.B \-I
-command line option and its parameter.
-.
-.
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH DESCRIPTION
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .B @g@soelim
 reads
@@ -95,9 +96,12 @@ request (and
 ignores it).
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH OPTIONS
-.\" --------------------------------------------------------------------
+.\" ====================================================================
+.
+Whitespace is permitted between a command-line option and its argument.
+.
 .
 .TP
 .B \-C
@@ -133,7 +137,7 @@ requests (for general use, with non-groff files).
 .
 .TP
 .B \-t
-Don\[aq]t emit
+Don't emit
 .B .lf
 requests but TeX comment lines (starting with \[oq]%\[cq]) giving the
 current file and line number.
@@ -143,9 +147,9 @@ current file and line number.
 Print the version number.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH USAGE
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The normal processing sequence of groff is this:
 .
@@ -263,18 +267,17 @@ box invisible width 0.5 height 0.4 "output" "file"
 .\}
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "SEE ALSO"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .BR groff (@MAN1EXT@)
 .
 .
-.\" --------------------------------------------------------------------
-.SH COPYING
-.\" --------------------------------------------------------------------
-.co
+.\" Restore compatibility mode (for, e.g., Solaris 10/11).
+.cp \n[soelim_C]
 .
 .
 .\" Local Variables:
 .\" mode: nroff
 .\" End:
+.\" vim: set filetype=groff:
diff --git a/src/preproc/soelim/soelim.am b/src/preproc/soelim/soelim.am
new file mode 100644 (file)
index 0000000..b1aa640
--- /dev/null
@@ -0,0 +1,33 @@
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Latest update: 22 Aug 2015
+#
+# This file is part of groff.
+#
+# groff 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.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+
+prefixexecbin_PROGRAMS += soelim
+soelim_LDADD = libgroff.a $(LIBM) lib/libgnu.a
+soelim_SOURCES = src/preproc/soelim/soelim.cpp
+PREFIXMAN1 += src/preproc/soelim/soelim.1
+EXTRA_DIST += \
+  src/preproc/soelim/TODO \
+  src/preproc/soelim/soelim.1.man
+
+
+########################################################################
+### Emacs settings
+# Local Variables:
+# mode: makefile-automake
+# End:
index 3e27fde..549b556 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include "lib.h"
 
@@ -28,6 +28,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. */
 #include "stringclass.h"
 #include "nonposix.h"
 #include "searchpath.h"
+#include "lf.h"
 
 // The include search path initially contains only the current directory.
 static search_path include_search_path(0, 0, 0, 1);
@@ -156,11 +157,12 @@ int do_file(const char *filename)
   int err = errno;
   string whole_filename(file_name_in_path ? file_name_in_path : filename);
   whole_filename += '\0';
-  a_delete file_name_in_path;
+  free(file_name_in_path);
   if (fp == 0) {
-    error("can't open `%1': %2", whole_filename.contents(), strerror(err));
+    error("can't open '%1': %2", whole_filename.contents(), strerror(err));
     return 0;
   }
+  normalize_for_lf(whole_filename);
   current_filename = whole_filename.contents();
   current_lineno = 1;
   set_location();
diff --git a/src/preproc/tbl/Makefile.sub b/src/preproc/tbl/Makefile.sub
deleted file mode 100644 (file)
index f93b92a..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-# Makefile.sub for `preproc tbl'
-#
-# File position: <groff-source>/src/preproc/tbl/Makefile.sub
-#
-# Copyright (C) 2014  Free Software Foundation, Inc.
-#
-# This file is part of `font utf8' which is part of `groff'.
-#
-# `groff' is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 2 of the License, or
-# (at your option) any later version.
-#
-# `groff' 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
-# <http://www.gnu.org/licenses/gpl-2.0.html>.
-#
-########################################################################
-
-PROG=tbl$(EXEEXT)
-MAN1=tbl.n
-XLIBS=$(LIBGROFF)
-MLIB=$(LIBM)
-OBJS=\
-  main.$(OBJEXT) \
-  table.$(OBJEXT)
-CCSRCS=\
-  $(srcdir)/main.cpp \
-  $(srcdir)/table.cpp
-HDRS=\
-  $(srcdir)/table.h
-NAMEPREFIX=$(g)
-
-########################################################################
-# Emacs settings
-########################################################################
-#
-# Local Variables:
-# mode: makefile
-# End:
index 55cf0e2..cb86a40 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include "table.h"
 
@@ -421,7 +421,7 @@ options *process_options(table_input &in)
       while (*q != ')' && *q != '\0')
        q++;
       if (*q == '\0')
-       error("missing `)'");
+       error("missing ')'");
       else
        *q++ = '\0';
     }
@@ -431,20 +431,20 @@ options *process_options(table_input &in)
     }
     else if (strieq(p, "tab")) {
       if (!arg)
-       error("`tab' option requires argument in parentheses");
+       error("'tab' option requires argument in parentheses");
       else {
        if (arg[0] == '\0' || arg[1] != '\0')
-         error("argument to `tab' option must be a single character");
+         error("argument to 'tab' option must be a single character");
        else
          opt->tab_char = arg[0];
       }
     }
     else if (strieq(p, "linesize")) {
       if (!arg)
-       error("`linesize' option requires argument in parentheses");
+       error("'linesize' option requires argument in parentheses");
       else {
        if (sscanf(arg, "%d", &opt->linesize) != 1)
-         error("bad linesize `%s'", arg);
+         error("bad linesize '%s'", arg);
        else if (opt->linesize <= 0) {
          error("linesize must be positive");
          opt->linesize = 0;
@@ -453,9 +453,9 @@ options *process_options(table_input &in)
     }
     else if (strieq(p, "delim")) {
       if (!arg)
-       error("`delim' option requires argument in parentheses");
+       error("'delim' option requires argument in parentheses");
       else if (arg[0] == '\0' || arg[1] == '\0' || arg[2] != '\0')
-       error("argument to `delim' option must be two characters");
+       error("argument to 'delim' option must be two characters");
       else {
        opt->delim[0] = arg[0];
        opt->delim[1] = arg[1];
@@ -463,50 +463,50 @@ options *process_options(table_input &in)
     }
     else if (strieq(p, "center") || strieq(p, "centre")) {
       if (arg)
-       error("`center' option does not take an argument");
+       error("'center' option does not take an argument");
       opt->flags |= table::CENTER;
     }
     else if (strieq(p, "expand")) {
       if (arg)
-       error("`expand' option does not take an argument");
+       error("'expand' option does not take an argument");
       opt->flags |= table::EXPAND;
     }
     else if (strieq(p, "box") || strieq(p, "frame")) {
       if (arg)
-       error("`box' option does not take an argument");
+       error("'box' option does not take an argument");
       opt->flags |= table::BOX;
     }
     else if (strieq(p, "doublebox") || strieq(p, "doubleframe")) {
       if (arg)
-       error("`doublebox' option does not take an argument");
+       error("'doublebox' option does not take an argument");
       opt->flags |= table::DOUBLEBOX;
     }
     else if (strieq(p, "allbox")) {
       if (arg)
-       error("`allbox' option does not take an argument");
+       error("'allbox' option does not take an argument");
       opt->flags |= table::ALLBOX;
     }
     else if (strieq(p, "nokeep")) {
       if (arg)
-       error("`nokeep' option does not take an argument");
+       error("'nokeep' option does not take an argument");
       opt->flags |= table::NOKEEP;
     }
     else if (strieq(p, "nospaces")) {
       if (arg)
-       error("`nospaces' option does not take an argument");
+       error("'nospaces' option does not take an argument");
       opt->flags |= table::NOSPACES;
     }
     else if (strieq(p, "nowarn")) {
       if (arg)
-       error("`nowarn' option does not take an argument");
+       error("'nowarn' option does not take an argument");
       opt->flags |= table::NOWARN;
     }
     else if (strieq(p, "decimalpoint")) {
       if (!arg)
-       error("`decimalpoint' option requires argument in parentheses");
+       error("'decimalpoint' option requires argument in parentheses");
       else {
        if (arg[0] == '\0' || arg[1] != '\0')
-         error("argument to `decimalpoint' option must be a single character");
+         error("argument to 'decimalpoint' option must be a single character");
        else
          opt->decimal_point_char = arg[0];
       }
@@ -515,7 +515,7 @@ options *process_options(table_input &in)
       opt->flags |= table::EXPERIMENTAL;
     }
     else {
-      error("unrecognised global option `%1'", p);
+      error("unrecognised global option '%1'", p);
       // delete opt;
       // return 0;
     }
@@ -835,7 +835,7 @@ format *process_format(table_input &in, options *opt,
       default:
        if (c == opt->tab_char)
          break;
-       error("unrecognised format `%1'", char(c));
+       error("unrecognised format '%1'", char(c));
        free_input_entry_format_list(list);
        return 0;
       }
@@ -886,7 +886,7 @@ format *process_format(table_input &in, options *opt,
       case 'E':
        c = in.get();
        list->equal = 1;
-       // `e' and `x' are mutually exclusive
+       // 'e' and 'x' are mutually exclusive
        list->expand = 0;
        break;
       case 'f':
@@ -902,7 +902,7 @@ format *process_format(table_input &in, options *opt,
          for (;;) {
            c = in.get();
            if (c == EOF || c == ' ' || c == '\t') {
-             error("missing `)'");
+             error("missing ')'");
              break;
            }
            if (c == ')') {
@@ -941,7 +941,7 @@ format *process_format(table_input &in, options *opt,
          for (;;) {
            c = in.get();
            if (c == EOF || c == ' ' || c == '\t') {
-             error("missing `)'");
+             error("missing ')'");
              break;
            }
            if (c == ')') {
@@ -972,7 +972,7 @@ format *process_format(table_input &in, options *opt,
          c = in.get();
        }
        if (c == EOF || !csdigit(c)) {
-         error("`p' modifier must be followed by number");
+         error("'p' modifier must be followed by number");
          list->point_size.inc = 0;
        }
        else {
@@ -1009,7 +1009,7 @@ format *process_format(table_input &in, options *opt,
          c = in.get();
        }
        if (c == EOF || !csdigit(c)) {
-         error("`v' modifier must be followed by number");
+         error("'v' modifier must be followed by number");
          list->vertical_spacing.inc = 0;
        }
        else {
@@ -1036,7 +1036,7 @@ format *process_format(table_input &in, options *opt,
          c = in.get();
          while (c != ')') {
            if (c == EOF || c == '\n') {
-             error("missing `)'");
+             error("missing ')'");
              free_input_entry_format_list(list);
              return 0;
            }
@@ -1053,7 +1053,7 @@ format *process_format(table_input &in, options *opt,
          else
            list->width = "";
          if (c == EOF || !csdigit(c))
-           error("bad argument for `w' modifier");
+           error("bad argument for 'w' modifier");
          else {
            do {
              list->width += char(c);
@@ -1061,16 +1061,16 @@ format *process_format(table_input &in, options *opt,
            } while (c != EOF && csdigit(c));
          }
        }
-       // `w' and `x' are mutually exclusive
+       // 'w' and 'x' are mutually exclusive
        list->expand = 0;
        break;
       case 'x':
       case 'X':
        c = in.get();
        list->expand = 1;
-       // `x' and `e' are mutually exclusive
+       // 'x' and 'e' are mutually exclusive
        list->equal = 0;
-       // `x' and `w' are mutually exclusive
+       // 'x' and 'w' are mutually exclusive
        list->width = "";
        break;
       case 'z':
@@ -1108,7 +1108,7 @@ format *process_format(table_input &in, options *opt,
       c = in.get();
     } while (c == ' ' || c == '\t');
     if (c != '\n') {
-      error("`.' not last character on line");
+      error("'.' not last character on line");
       free_input_entry_format_list(list);
       return 0;
     }
@@ -1225,7 +1225,7 @@ format *process_format(table_input &in, options *opt,
     return 0;
   }
   if (have_expand && (opt->flags & table::EXPAND)) {
-    error("ignoring global `expand' option because of `x' specifiers");
+    error("ignoring global 'expand' option because of 'x' specifiers");
     opt->flags &= ~table::EXPAND;
   }
   return f;
@@ -1435,7 +1435,7 @@ table *process_data(table_input &in, format *f, options *opt)
                  if (c == '\n')
                    in.unget(c);
                  input_entry += '\0';
-                 error("excess data entry `%1' discarded",
+                 error("excess data entry '%1' discarded",
                        input_entry.contents());
                  if (c == '\n')
                    (void)in.get();
@@ -1612,10 +1612,13 @@ int main(int argc, char **argv)
        errno = 0;
        FILE *fp = fopen(argv[i], "r");
        if (fp == 0)
-         fatal("can't open `%1': %2", argv[i], strerror(errno));
+         fatal("can't open '%1': %2", argv[i], strerror(errno));
        else {
          current_lineno = 1;
-         current_filename = argv[i];
+         string fn(argv[i]);
+         fn += '\0';
+         normalize_for_lf(fn);
+         current_filename = fn.contents();
          printf(".lf 1 %s\n", current_filename);
          process_input_file(fp);
        }
index f43fe7d..ce067be 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include "table.h"
 
@@ -458,7 +458,7 @@ text_entry::text_entry(const table *p, const entry_modifier *m, char *s)
 
 text_entry::~text_entry()
 {
-  a_delete contents;
+  free(contents);
 }
 
 repeated_char_entry::repeated_char_entry(const table *p,
@@ -505,7 +505,7 @@ void left_text_entry::simple_print(int)
   print_contents();
 }
 
-// The only point of this is to make `\a' ``work'' as in Unix tbl.  Grrr.
+// The only point of this is to make '\a' "work" as in Unix tbl.  Grrr.
 
 void left_text_entry::add_tab()
 {
@@ -621,7 +621,7 @@ void alphabetic_text_entry::simple_print(int)
   print_contents();
 }
 
-// The only point of this is to make `\a' ``work'' as in Unix tbl.  Grrr.
+// The only point of this is to make '\a' "work" as in Unix tbl.  Grrr.
 
 void alphabetic_text_entry::add_tab()
 {
@@ -1030,7 +1030,7 @@ void restore_inline_modifier(const entry_modifier *m)
 
 struct stuff {
   stuff *next;
-  int row;                     // occurs before row `row'
+  int row;                     // occurs before row 'row'
   char printed;                        // has it been printed?
 
   stuff(int);
@@ -1609,13 +1609,13 @@ void table::add_entry(int r, int c, const string &str, const entry_format *f,
     case FORMAT_HLINE:
       if (str.length() != 0)
        error_with_file_and_line(fn, ln,
-                                "non-empty data entry for `_' format ignored");
+                                "non-empty data entry for '_' format ignored");
       e = new single_line_entry(this, f);
       break;
     case FORMAT_DOUBLE_HLINE:
       if (str.length() != 0)
        error_with_file_and_line(fn, ln,
-                                "non-empty data entry for `=' format ignored");
+                                "non-empty data entry for '=' format ignored");
       e = new double_line_entry(this, f);
       break;
     default:
@@ -2132,7 +2132,7 @@ void table::compute_expand_width()
           "delim off\n"
           ".EN\n"
           "..\n");
-    prints(".tm1 \"warning: file `\\n[.F]', around line \\n[.c]:\n"
+    prints(".tm1 \"warning: file '\\n[.F]', around line \\n[.c]:\n"
           ".tm1 \"  table wider than line width\n");
     prints(".ig\n"
           ".EQ\n"
@@ -2184,7 +2184,7 @@ void table::compute_separation_factor()
           "delim off\n"
           ".EN\n"
           "..\n");
-    prints(".tm1 \"warning: file `\\n[.F]', around line \\n[.c]:\n"
+    prints(".tm1 \"warning: file '\\n[.F]', around line \\n[.c]:\n"
           ".tm1 \"  column separation set to zero\n"
           ".nr " SEPARATION_FACTOR_REG " 0\n");
   }
@@ -2192,7 +2192,7 @@ void table::compute_separation_factor()
         ".el .if \\n[" SEPARATION_FACTOR_REG "]<1n \\{\\\n");
   entry_list->set_location();
   if (!(flags & NOWARN)) {
-    prints(".tm1 \"warning: file `\\n[.F]', around line \\n[.c]:\n"
+    prints(".tm1 \"warning: file '\\n[.F]', around line \\n[.c]:\n"
           ".tm1 \"  table squeezed horizontally to fit line length\n");
     prints(".ig\n"
           ".EQ\n"
@@ -2966,7 +2966,10 @@ void set_troff_location(const char *fn, int ln)
       && strcmp(fn, last_filename) == 0)
     printfs(".lf %1\n", as_string(ln));
   else {
-    printfs(".lf %1 %2\n", as_string(ln), fn);
+    string filename(fn);
+    filename += '\0';
+    normalize_for_lf(filename);
+    printfs(".lf %1 %2\n", as_string(ln), filename.contents());
     last_filename = fn;
     location_force_filename = 0;
   }
index 5892867..3e8d9cb 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include "lib.h"
 
@@ -29,6 +29,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. */
 #include "stringclass.h"
 #include "errarg.h"
 #include "error.h"
+#include "lf.h"
 
 // PREFIX and PREFIX_CHAR must be the same.
 #define PREFIX "3"
similarity index 81%
rename from src/preproc/tbl/tbl.man
rename to src/preproc/tbl/tbl.1.man
index 46b79c4..a57171c 100644 (file)
@@ -1,44 +1,51 @@
 '\" t
-.TH @G@TBL @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
+.TH @G@TBL @MAN1EXT@ "@MDATE@" "groff @VERSION@"
 .SH NAME
 @g@tbl \- format tables for troff
 .
 .
-.\" license
-.de co
-Copyright \[co] 1989-2014 Free Software Foundation, Inc.
-
-Bernd Warken <groff-bernd.warken-72@web.de> added simple examples.
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the
-entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
-Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be included in
-translations approved by the Free Software Foundation instead of in
-the original English.
-..
-.
-.\" --------------------------------------------------------------------
+.\" Save and disable compatibility mode (for, e.g., Solaris 10/11).
+.do nr tbl_C \n[.C]
+.cp 0
+.
+.
+.\" ====================================================================
+.\" Legal Terms
+.\" ====================================================================
+.\"
+.\" Copyright (C) 1989-2018 Free Software Foundation, Inc.
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of
+.\" this manual under the conditions for verbatim copying, provided that
+.\" the entire resulting derived work is distributed under the terms of
+.\" a permission notice identical to this one.
+.\"
+.\" Permission is granted to copy and distribute translations of this
+.\" manual into another language, under the above conditions for
+.\" modified versions, except that this permission notice may be
+.\" included in translations approved by the Free Software Foundation
+.\" instead of in the original English.
+.
+.
+.\" Bernd Warken <groff-bernd.warken-72@web.de> added simple examples.
+.\" ====================================================================
 .SH SYNOPSIS
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .SY @g@tbl
 .OP \-Cv
-.RI [ files\~ .\|.\|.]
+.RI [ file
+\&.\|.\|.\&]
 .YS
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH DESCRIPTION
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 This manual page describes the GNU version of
 .BR tbl ,
@@ -70,9 +77,9 @@ If no files are given on the command line or a filename of
 is given, the standard input is read.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH OPTIONS
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .TP
 .B \-C
@@ -90,9 +97,9 @@ Leader characters (\[rs]a) are handled as interpreted.
 Print the version number.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "LANGUAGE OVERVIEW"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .B tbl
 expects to find table descriptions wrapped in the
@@ -137,7 +144,7 @@ at the end of the last line.
 .
 After each cell definition,
 .I column specifiers
-can be appended, but that\[aq]s optional.
+can be appended, but that's optional.
 .
 .
 .P
@@ -145,15 +152,16 @@ Cells are separated by a tab character by default.
 .
 That can be changed by the
 .I global option
-.BI tbl( c ) \fR,
+.BI tab( c )\c
+,
 where
 .I c
 is an arbitrary character.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "SIMPLE EXAMPLES"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The easiest table definition is.
 .RS
@@ -179,13 +187,11 @@ The separating character is here the default
 .P
 The result is
 .RS
-.EX
 .TS
 c c c .
 This   is      centered
 Well,  this    also
 .TE
-.EE
 .RE
 .
 .
@@ -224,7 +230,6 @@ another@number@75
 .
 The result is
 .RS
-.EX
 .TS
 tab(@);
 c s s
@@ -233,7 +238,6 @@ Title
 left@centers@123
 another@number@75
 .TE
-.EE
 .RE
 .
 Here
@@ -248,12 +252,12 @@ which is here
 .IR right\-justified .
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH USAGE
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS Global options
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The line immediately following the
 .B .TS
@@ -327,14 +331,14 @@ type.
 .
 .TP
 .B nokeep
-Don\[aq]t use diversions to prevent page breaks (GNU tbl only).
+Don't use diversions to prevent page breaks (GNU tbl only).
 .
 Normally
 .B tbl
 attempts to prevent undesirable breaks in boxed tables by using diversions.
 .
-This can sometimes interact badly with macro packages own use of
-diversionswhen footnotes, for example, are used.
+This can sometimes interact badly with macro packages' own use of
+diversions\[em]when footnotes, for example, are used.
 .
 .TP
 .B nospaces
@@ -359,9 +363,9 @@ There might be whitespace between an option and its argument in
 parentheses.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS Table format specification
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 After global options come lines describing the format of each line of
 the table.
@@ -528,7 +532,7 @@ Using equations (to be processed with
 within columns which use the
 .BR N \~specifier
 is problematic in most cases due to
-.BR tbl \[aq]s
+.BR tbl 's
 algorithm for finding the vertical alignment, as described above.
 .
 Using the global
@@ -593,9 +597,9 @@ similar to the
 request.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS Column specifiers
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 Here are the specifiers that can appear in suffixes to column key
 letters (in any order):
@@ -704,7 +708,7 @@ whatever follows.
 The macro which name can be specified here must be defined before
 creating the table.
 .
-It is called just before the table\[aq]s cell text is output.
+It is called just before the table's cell text is output.
 .
 As implemented currently, this macro is only called if block input is
 used, that is, text between \[oq]T{\[cq] and \[oq]T}\[cq].
@@ -756,7 +760,7 @@ tbl extension).
 A vertical line spacing specifier followed by a column separation
 number must be separated by one or more blanks.
 .
-No effect if the corresponding table entry isn\[aq]t a text block.
+No effect if the corresponding table entry isn't a text block.
 .
 .TP
 .BR w , W
@@ -789,7 +793,7 @@ This feature has the same effect as specifying a minimum column width.
 .TP
 .BR z , Z
 Ignore the corresponding column for width-calculation purposes, this
-is, don\[aq]t use the fields but only the specifiers of this column to
+is, don't use the fields but only the specifiers of this column to
 compute its width.
 .
 .
@@ -825,9 +829,9 @@ or
 .RB overrides\~ x .
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS Table data
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The format lines are followed by lines containing the actual data for the
 table, followed finally by
@@ -847,7 +851,7 @@ concatenation).
 Note that
 .B @g@tbl
 computes the column widths line by line, applying \[rs]w on each entry
-which isn\[aq]t a text block.
+which isn't a text block.
 .
 As a consequence, constructions like
 .IP
@@ -913,9 +917,9 @@ A data item consisting only of \[oq]\[rs]^\[cq] indicates that the
 field immediately above spans downward over this row.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS Text blocks
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 A text block can be used to enter data as a single entry which would
 be too long as a simple string between tabs.
@@ -948,7 +952,7 @@ after the table).
 .
 .
 .LP
-If either \[oq]w\[cq] or \[oq]x[cq] specifiers are not given for
+If either \[oq]w\[cq] or \[oq]x\[cq] specifiers are not given for
 .I all
 columns of a text block span, the default length of the text block (to
 be more precise, the line length used to process the text block
@@ -966,13 +970,13 @@ insertion of a
 request right after \[oq]T{\[cq].
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS Miscellaneous
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The number register
 .B \[rs]n[TW]
-holds the table width; it can\[aq]t be used within the table itself
+holds the table width; it can't be used within the table itself
 but is defined right before calling
 .B .TE
 so that this macro can make use of it.
@@ -999,9 +1003,9 @@ instead of the standard call to the
 macro.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "INTERACTION WITH @G@EQN"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .BR @g@tbl (@MAN1EXT@)
 should always be called before
@@ -1010,9 +1014,9 @@ should always be called before
 automatically takes care of the correct order of preprocessors).
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "GNU TBL ENHANCEMENTS"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 There is no limit on the number of columns in a table, nor any limit on the
 number of text blocks.
@@ -1044,9 +1048,9 @@ you should avoid using any names beginning with a\~\c
 .BR 3 .
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "GNU TBL WITHIN MACROS"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 Since
 .B @g@tbl
@@ -1086,12 +1090,12 @@ fails if those numbers are passed on as macro parameters because
 decimal point alignment is handled by
 .B @g@tbl
 itself: It only sees \[oq]\[rs]$1\[cq], \[oq]\[rs]$2\[cq], etc., and
-therefore can\[aq]t recognize the decimal point.
+therefore can't recognize the decimal point.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH BUGS
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 You should use
 .BR .TS\ H / .TH
@@ -1201,30 +1205,29 @@ as in
 .
 .LP
 The resulting \[lq]dummy\[rq] columns are invisible and have zero width;
-note that such columns usually don\[aq]t work with TTY devices.
+note that such columns usually don't work with TTY devices.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH REFERENCE
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 Lesk, M.E.: "TBL \[en] A Program to Format Tables".
 For copyright reasons it cannot be included in the groff distribution,
 but copies can be found with a title search on the World Wide Web.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "SEE ALSO"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .BR groff (@MAN1EXT@),
 .BR @g@troff (@MAN1EXT@)
 .
 .
-.\" --------------------------------------------------------------------
-.SH COPYING
-.\" --------------------------------------------------------------------
-.co
+.\" Restore compatibility mode (for, e.g., Solaris 10/11).
+.cp \n[tbl_C]
 .
 .
 .\" Local Variables:
 .\" mode: nroff
 .\" End:
+.\" vim: set filetype=groff:
diff --git a/src/preproc/tbl/tbl.am b/src/preproc/tbl/tbl.am
new file mode 100644 (file)
index 0000000..f787452
--- /dev/null
@@ -0,0 +1,34 @@
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Latest update: 22 Aug 2015
+#
+# This file is part of groff.
+#
+# groff 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.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+
+prefixexecbin_PROGRAMS += tbl
+tbl_LDADD = libgroff.a $(LIBM) lib/libgnu.a
+tbl_SOURCES = \
+  src/preproc/tbl/main.cpp \
+  src/preproc/tbl/table.cpp \
+  src/preproc/tbl/table.h
+PREFIXMAN1 += src/preproc/tbl/tbl.1
+EXTRA_DIST += src/preproc/tbl/tbl.1.man
+
+
+########################################################################
+### Emacs settings
+# Local Variables:
+# mode: makefile-automake
+# End:
diff --git a/src/roff/groff/Makefile.sub b/src/roff/groff/Makefile.sub
deleted file mode 100644 (file)
index fede9b9..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-# Makefile.sub for `src roff groff'
-
-# File position: <groff-source>/src/roff/groff/Makefile.sub
-
-# Copyright (C) 1993-2014  Free Software Foundation, Inc.
-
-#   Rewritten by Bernd Warken <groff-bernd.warken-72@web.de> and
-#   Werner LEMBERG  <wl@gnu.org>
-
-# `groff' 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.
-
-# `groff' 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 <http://www.gnu.org/licenses/>.
-
-########################################################################
-
-PROG=groff$(EXEEXT)
-MAN1=groff.n
-XLIBS=$(LIBGROFF) $(LIBGNU)
-MLIB=$(LIBM)
-OBJS=groff.$(OBJEXT) pipeline.$(OBJEXT)
-CCSRCS=$(srcdir)/groff.cpp
-CSRCS=$(srcdir)/pipeline.c
-HDRS=$(srcdir)/pipeline.h
-
-GROFF_OPTS_OUTPUT=\
-  groff_opts_no_arg.txt \
-  groff_opts_with_arg.txt
-
-MOSTLYCLEANADD=groff_opts.tmp $(GROFF_OPTS_OUTPUT)
-
-RM=rm -f
-
-all: $(srcdir)/groff.cpp groff_opts.tmp $(GROFF_OPTS_OUTPUT)
-
-groff_opts.tmp: $(srcdir)/groff.cpp
-       @$(GREP) -e ':.*:.*:' $? | sed -e 's/[ \t",]//g' > $@
-       @echo -n 'groff options: '
-       @cat $@
-
-groff_opts_no_arg.txt: groff_opts.tmp
-       @sed -e 's/[a-zA-Z]://g' $? > $@
-       @echo -n 'no arg: '
-       @cat $@
-
-groff_opts_with_arg.txt: groff_opts_no_arg.txt
-       @sed "s/[`cat $?`:]//g" groff_opts.tmp > $@
-       @echo -n 'with arg: '
-       @cat $@
-
-install_data: $(GROFF_OPTS_OUTPUT)
-       -test -d $(DESTDIR)$(libprogramdir) \
-         || $(mkinstalldirs) $(DESTDIR)$(libprogramdir)
-       for f in  $(GROFF_OPTS_OUTPUT); do \
-         $(RM) $(DESTDIR)$(libprogramdir)/$$f; \
-         $(INSTALL_SCRIPT) $$f $(DESTDIR)$(libprogramdir); \
-       done
-
-uninstall_sub:
-       -for f in $(GROFF_OPTS_OUTPUT); do \
-         $(RM) $(DESTDIR)$(libprogramdir)/$$f;\
-       done
-# XXX This will be removed by `uninstall_dirs' in `$(top_srcdir)/Makefile.in'
-# XXX (And only from there it is successful on an empty directory)
-#      -d=$(DESTDIR)$(libprogramdir);\
-#        if test -d $$d; then rmdir $$d; fi
-
-########################################################################
-# Emacs settings
-########################################################################
-#
-# Local Variables:
-# mode: makefile
-# End:
similarity index 73%
rename from src/roff/groff/groff.man
rename to src/roff/groff/groff.1.man
index e30d1b5..165507e 100644 (file)
@@ -1,76 +1,48 @@
-.TH GROFF @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
+.TH GROFF @MAN1EXT@ "@MDATE@" "groff @VERSION@"
 .SH NAME
 groff \- front-end for the groff document formatting system
 .
 .\" groff.man -> groff.1
 .
 .
-.\" --------------------------------------------------------------------
-.\" Legal Terms
-.\" --------------------------------------------------------------------
-.
-.\" License
-.de co
-Copyright \[co] 1989-2014 Free Software Foundation, Inc.
-
-Rewritten in 2002 by Bernd Warken <groff-bernd.warken-72@web.de>
-
-This document is part of groff, a free GNU software project.
-
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.3 or
-any later version published by the Free Software Foundation; with the
-Invariant Sections being the macro definition or .co and .au, with no
-Front-Cover Texts, and with no Back-Cover Texts.
-
-A copy of the Free Documentation License is included as a file called
-FDL in the main directory of the groff source package.
-
-It is also available in the internet at the
-.UR http://\:www.gnu.org/\:copyleft/\:fdl.html
-GNU copyleft site
-.UE .
-..
-.
-.\" Authors
-.de au
-This document is based on the original
-.I groff
-man page written by
-.MT jjc@jclark.com
-James Clark
-.UE .
-.
-It was rewritten, enhanced, and put under the FDL license by
-Bernd Warken <groff-bernd.warken-72@web.de>.
-.
-It is maintained by
-.MT wl@gnu.org
-Werner Lemberg
-.ME .
-..
+.\" Save and disable compatibility mode (for, e.g., Solaris 10/11).
+.do nr groff_1_C \n[.C]
+.cp 0
 .
-.\" --------------------------------------------------------------------
-.\" Definitons
-.\" --------------------------------------------------------------------
 .
-.\" --------------------------------------------------------------------
-.\" Environment variable
-.de EnvVar
-.  SM
-.  BR \%\\$1 \\$2
-..
-.\" --------------------------------------------------------------------
-.\" `char or string'
+.\" ====================================================================
+.\" Legal Terms
+.\" ====================================================================
+.\"
+.\" Copyright (C) 1989-2018 Free Software Foundation, Inc.
+.\"
+.\" This file is part of groff, the GNU roff type-setting system.
+.\"
+.\" Permission is granted to copy, distribute and/or modify this
+.\" document under the terms of the GNU Free Documentation License,
+.\" Version 1.3 or any later version published by the Free Software
+.\" Foundation; with no Invariant Sections, with no Front-Cover Texts,
+.\" and with no Back-Cover Texts.
+.\"
+.\" A copy of the Free Documentation License is included as a file
+.\" called FDL in the main directory of the groff source package.
+.
+.
+.\" ====================================================================
+.\" Definitions
+.\" ====================================================================
+.
+.\" ====================================================================
+.\" 'char or string'
 .de Quoted
 .  ft CR
 \[oq]\\$*\[cq]
 .  ft
 ..
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH SYNOPSIS
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .SY groff
 .OP \-abcegijklpstzCEGNRSUVXZ
@@ -90,24 +62,30 @@ Werner Lemberg
 .OP \-T dev
 .OP \-w name
 .OP \-W name
-.RI [ file\~ .\|.\|.]
+.RI [ file
+\&.\|.\|.\&]
+.YS
 .
 .SY groff
 .B \-h
-|
+.SY groff
 .B \-\-help
+.YS
 .
 .SY groff
 .B \-v
-|
+.RI [ option
+\&.\|.\|.\&]
+.SY groff
 .B \-\-version
-.RI [ option\~ .\|.\|.]
+.RI [ option
+\&.\|.\|.\&]
 .YS
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH DESCRIPTION
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 This document describes the
 .B groff
@@ -134,23 +112,22 @@ but adds many extensions.
 .P
 The
 .B groff
-program allows to control the whole
+program allows control of the whole
 .I groff
-system by command line options.
+system by command-line options.
 .
 This is a great simplification in comparison to the classical case (which
 uses pipes only).
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH OPTIONS
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The command line is parsed according to the usual \f[CR]GNU\f[]
 convention.
 .
-The whitespace between a command line option and its argument is
-optional.
+Whitespace is permitted between a command-line option and its argument.
 .
 Options can be grouped behind a single \[oq]\-\[cq] (minus character).
 .
@@ -179,9 +156,9 @@ options can be fed into
 .BR groff .
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS Native groff Options
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The following options either do not exist for
 .B @g@troff
@@ -237,8 +214,10 @@ and
 .B .so
 requests, and
 .B \eX'ps: import'
-and
+,
 .B \eX'ps: file'
+and
+.B \eX'pdf: pdfpic'
 escapes).
 .
 The current directory is always searched first.
@@ -270,7 +249,7 @@ Preprocess with
 This is run before any other preprocessor.
 .
 Please refer to
-.BR preconv \[aq]s
+.BR preconv 's
 manual page for its behaviour if no
 .B \-K
 (or
@@ -329,7 +308,7 @@ before passing it to the spooler program.
 .
 .TP
 .B \-N
-Don\[aq]t allow newlines within
+Don't allow newlines within
 .I eqn
 delimiters.
 .
@@ -453,7 +432,7 @@ see
 Then
 .B groff
 calls a postprocessor to convert
-.BR @g@troff \[aq]s
+.BR @g@troff 's
 .I intermediate output
 to its final format.
 .
@@ -545,13 +524,13 @@ as the \[oq]postprocessor\[cq] (it is rather a viewing program):
 X75
 75\|dpi resolution, 10\|pt document base font.
 .TP
-X75-12
+X75\-12
 75\|dpi resolution, 12\|pt document base font.
 .TP
 X100
 100\|dpi resolution, 10\|pt document base font.
 .TP
-X100-12
+X100\-12
 100\|dpi resolution, 12\|pt document base font.
 .RE
 .RE
@@ -584,7 +563,7 @@ to all subprograms.
 .TP
 .B \-V
 Output the pipeline that would be run by
-.BR groff
+.B groff
 (as a wrapper program) on the standard output, but do not execute it.
 .
 If given more than once,
@@ -616,10 +595,10 @@ action and the corresponding menu entry to that value.
 only produces good results with
 .BR \-Tps ,
 .BR \-TX75 ,
-.BR \-TX75-12 ,
+.BR \-TX75\-12 ,
 .BR \-TX100 ,
 and
-.BR \-TX100-12 .
+.BR \-TX100\-12 .
 .
 The default resolution for previewing
 .B \-Tps
@@ -632,7 +611,7 @@ for example
 .RS
 .IP
 .EX
-groff \-X \-P-resolution \-P100 \-man foo.1
+groff \-X \-P\-resolution \-P100 \-man foo.1
 .EE
 .RE
 .
@@ -659,9 +638,9 @@ replacing the usual postprocessor output; see
 .BR \%groff_out (@MAN5EXT@).
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS Transparent Options
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The following options are transparently handed over to the formatter
 program
@@ -711,7 +690,9 @@ Set default font family.
 .
 .TP
 .BI \-F\  dir
-Set path for font DESC files.
+Set path for device
+.I DESC
+files.
 .
 .TP
 .B \-i
@@ -720,10 +701,10 @@ Process standard input after the specified input files.
 .TP
 .BI \-m\  name
 Include macro file
-.IB name .tmac
+.RI name .tmac
 (or
-.BI tmac. name\c
-); see also
+.IR tmac. name);
+see also
 .BR \%groff_tmac (@MAN5EXT@).
 .
 .TP
@@ -765,9 +746,9 @@ See
 for names.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "USING GROFF"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The
 .I groff system
@@ -800,9 +781,9 @@ the
 system.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS Paper Size
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The
 .I virtual
@@ -825,8 +806,8 @@ The
 .I physical
 paper size, giving the actual dimensions of the paper sheets, is
 controlled by output devices like
-.BR grops
-with the command line options
+.B grops
+with the command-line options
 .B \-p
 and
 .BR \-l .
@@ -836,20 +817,20 @@ See
 and the man pages of the output devices for more details.
 .
 .B groff
-uses the command line option
+uses the command-line option
 .B \-P
 to pass options to output devices; for example, the following selects
 A4 paper in landscape orientation for the PS device:
 .
 .IP
 .EX
-groff -Tps -P-pa4 -P-l ...
+groff \-Tps \-P\-pa4 \-P\-l ...
 .EE
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS Front-ends
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The
 .B groff
@@ -857,7 +838,7 @@ program is a wrapper around the
 .BR @g@troff (@MAN1EXT@)
 program.
 .
-It allows to specify the preprocessors by command line options and
+It allows one to specify the preprocessors by command-line options and
 automatically runs the postprocessor that is appropriate for the
 selected device.
 .
@@ -877,14 +858,14 @@ command line to format a file.
 .P
 The
 .BR \%groffer (@MAN1EXT@)
-program is an allround-viewer for
+program is an all-around viewer for
 .I groff
 files and man pages.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS Preprocessors
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The
 .I groff
@@ -943,12 +924,12 @@ It is always run first before any other preprocessor.
 Besides these, there are some internal preprocessors that are
 automatically run with some devices.
 .
-These aren\[aq]t visible to the user.
+These aren't visible to the user.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Macro Packages"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 Macro packages can be included by option
 .BR \-m .
@@ -1044,9 +1025,9 @@ this man page also documents some other, minor auxiliary macro packages
 not mentioned here.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Programming Language"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 General concepts common to all
 .I roff
@@ -1064,17 +1045,15 @@ language are documented in
 .
 .
 .P
-The
-.I groff
-language as a whole is described in the (still incomplete)
-.IR "groff info file" ;
-a short (but complete) reference can be found in
+An overview of language features,
+including all supported escapes and requests,
+can be found in
 .BR groff (@MAN7EXT@).
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS Formatters
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The central
 .I roff
@@ -1091,7 +1070,7 @@ as well as the
 .I groff
 extensions.
 .
-The command line option
+The command-line option
 .B \-C
 switches
 .B @g@troff
@@ -1119,9 +1098,9 @@ see
 .BR \%groff_out (@MAN7EXT@).
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS Devices
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 In
 .IR roff ,
@@ -1227,9 +1206,9 @@ The default device is
 .BR @DEVICE@ .
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS Postprocessors
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .I groff
 provides 3\~hardware postprocessors:
@@ -1245,7 +1224,7 @@ for printers compatible to the HP LaserJet\~4 and PCL5,
 .TP
 .BR \%grotty (@MAN1EXT@)
 for text output using various encodings, e.g., on text-oriented
-terminals or line-printers.
+terminals or line printers.
 .
 .
 .P
@@ -1253,7 +1232,7 @@ Today, most printing or drawing hardware is handled by the operating
 system, by device drivers, or by software interfaces, usually
 accepting PostScript.
 .
-Consequently, there isn\[aq]t an urgent need for more hardware device
+Consequently, there isn't an urgent need for more hardware device
 postprocessors.
 .
 .
@@ -1286,9 +1265,9 @@ be sufficient to convert a
 document into virtually any existing data format.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS Utilities
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The following utility programs around
 .I groff
@@ -1377,7 +1356,10 @@ Create font description files for TeX DVI device.
 .TP
 .BR \%xditview (1x)
 .I roff
-viewer distributed with X window.
+viewer historically distributed with the X Window System.
+.\" Nowadays (2017) it's its own module as X.Org does not do monolithic
+.\" releases anymore (since 2012).  Development on "app/xditview" is
+.\" close to moribund, though.
 .
 .TP
 .BR \%xtotroff (@MAN1EXT@)
@@ -1386,9 +1368,9 @@ Convert X font metrics into \f[CR]GNU\f[]
 font metrics.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH ENVIRONMENT
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 Normally, the path separator in the following environment variables is
 the colon; this may vary depending on the operating system.
@@ -1397,20 +1379,20 @@ For example, DOS and Windows use a semicolon instead.
 .
 .
 .TP
-.EnvVar GROFF_BIN_PATH
+.I GROFF_BIN_PATH
 This search path, followed by
-.EnvVar $PATH ,
+.IR PATH ,
 is used for commands that are executed by
 .BR groff .
 .
 If it is not set then the directory where the
 .I groff
 binaries were installed is prepended to
-.EnvVar PATH .
+.IR PATH .
 .
 .
 .TP
-.EnvVar GROFF_COMMAND_PREFIX
+.I GROFF_COMMAND_PREFIX
 When there is a need to run different
 .I roff
 implementations at the same time
@@ -1423,18 +1405,18 @@ Historically, this prefix was the character
 but it can be anything.
 .
 For example,
-.BR gtroff
+.B gtroff
 stood for
-.IR groff \[aq]s
+.IR groff 's
 .BR troff ,
-.BR gtbl
+.B gtbl
 for the
 .I groff
 version of
 .BR tbl .
 .
 By setting
-.EnvVar GROFF_COMMAND_PREFIX
+.I \%GROFF_COMMAND_PREFIX
 to different values, the different
 .I roff
 installations can be addressed.
@@ -1469,14 +1451,14 @@ package.
 .
 .
 .TP
-.EnvVar GROFF_ENCODING
+.I GROFF_ENCODING
 The value of this environment value is passed to the
 .B preconv
 preprocessor to select the encoding of input files.
 .
 Setting this option implies
-.BR groff \[aq]s
-command line option
+.BR groff 's
+command-line option
 .B \-k
 (this is,
 .B groff
@@ -1491,8 +1473,8 @@ without arguments.
 .
 An explicit
 .B \-K
-command line option overrides the value of
-.EnvVar GROFF_ENCODING .
+command-line option overrides the value of
+.IR \%GROFF_ENCODING .
 .
 See
 .BR preconv (@MAN1EXT@)
@@ -1500,9 +1482,9 @@ for details.
 .
 .
 .TP
-.EnvVar GROFF_FONT_PATH
+.I GROFF_FONT_PATH
 A list of directories in which to search for the
-.BI dev name
+.IR dev name
 directory in addition to the default ones.
 .
 See
@@ -1513,7 +1495,7 @@ for more details.
 .
 .
 .TP
-.EnvVar GROFF_TMAC_PATH
+.I GROFF_TMAC_PATH
 A list of directories in which to search for macro files in addition
 to the default directories.
 .
@@ -1525,25 +1507,25 @@ for more details.
 .
 .
 .TP
-.EnvVar GROFF_TMPDIR
+.I GROFF_TMPDIR
 The directory in which temporary files are created.
 .
 If this is not set but the environment variable
-.EnvVar TMPDIR
+.I \%TMPDIR
 instead, temporary files are created in the directory
-.EnvVar $TMPDIR .
+.IR \%TMPDIR .
 .
-On MS-DOS and Windows\~32 platforms, the environment variables
-.EnvVar TMP
+On MS-DOS and Windows platforms, the environment variables
+.I TMP
 and
-.EnvVar TEMP
+.I TEMP
 (in that order) are searched also, after
-.EnvVar GROFF_TMPDIR
+.I \%GROFF_TMPDIR
 and
-.EnvVar TMPDIR .
+.IR \%TMPDIR .
 .
 Otherwise, temporary files are created in
-.BR /tmp .
+.IR /tmp .
 .
 The
 .BR \%@g@refer (@MAN1EXT@),
@@ -1555,7 +1537,7 @@ commands use temporary files.
 .
 .
 .TP
-.EnvVar GROFF_TYPESETTER
+.I GROFF_TYPESETTER
 Preset the default device.
 .
 If this is not set the
@@ -1566,9 +1548,9 @@ This device name is overwritten by the option
 .BR \-T .
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH EXAMPLES
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The following example illustrates the power of the
 .B groff
@@ -1614,7 +1596,7 @@ command (by using backquotes to specify shell command substitution)
 .
 .IP
 .EX
-\`grog \-Tlatin1 foo.me\`
+\[ga]grog \-Tlatin1 foo.me\[ga]
 .EE
 .
 .
@@ -1628,113 +1610,132 @@ groffer foo.me
 .EE
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH BUGS
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 On \f[CR]EBCDIC\f[] hosts (e.g., \f[CR]OS/390 Unix\f[]), output
 devices
 .B ascii
 and
 .B latin1
-aren\[aq]t available.
+aren't available.
 .
 Similarly, output for \f[CR]EBCDIC\f[] code page
 .B cp1047
 is not available on \f[CR]ASCII\f[] based operating systems.
 .
 .
-.P
-Report bugs to
-.MT bug-groff@gnu.org
-the groff mailing list
-.ME .
+.\" ====================================================================
+.SH "INSTALLATION DIRECTORIES"
+.\" ====================================================================
 .
-Include a complete, self-contained example that allows the bug to
-be reproduced, and say which version of
 .I groff
-you are using.
+installs files in varying locations depending on its compile-time
+configuration.
 .
+On this installation, the following locations are used.
 .
-.\" --------------------------------------------------------------------
-.SH "POSITIONS FROM INSTALLATION"
-.\" --------------------------------------------------------------------
 .
-There are some directories in which
-.I groff
-installs all of its data files.
+.TP
+.I @APPRESDIR@
+Application defaults directory for
+.IR gxditview (@MAN1EXT@).
 .
-Due to different installation habits on different operating systems,
-their locations are not absolutely fixed, but their function is
-clearly defined and coincides on all systems.
 .
+.TP
+.I @BINDIR@
+Directory containing
+.IR groff 's
+executable commands.
 .
-.\" --------------------------------------------------------------------
-.SS "Collection of Installation Directories"
-.\" --------------------------------------------------------------------
 .
-This section describes the position of all files of the
-.I groff
-package after the installation \[em] got from
-.B Makefile.comm
-at the top of the
-.I groff
-source package.
+.TP
+.I @COMMON_WORDS_FILE@
+List of common words for
+.IR indxbib (@MAN1EXT@).
 .
 .
 .TP
-.B @DEFAULT_INDEX@
-index directory and index name
-.TP
-.B @LEGACYFONTDIR@
-legacy font directory
-.TP
-.B @BINDIR@
-directory for binary programs
-.TP
-.B @SYSTEMMACRODIR@
-system tmac directory
+.I @DATASUBDIR@
+Directory for data files.
+.
+.
 .TP
-.B @DOCDIR@
-documentation directory
+.I @DEFAULT_INDEX@
+Default index for
+.IR lkbib (@MAN1EXT@)
+and
+.IR refer (@MAN1EXT@).
+.
+.
 .TP
-.B @EXAMPLEDIR@
-directory for examples
+.I @DOCDIR@
+Documentation directory.
+.
+.
 .TP
-.B @HTMLDOCDIR@
-documentation directory for html files
+.I @EXAMPLEDIR@
+Example directory.
+.
+.
 .TP
-.B @PDFDOCDIR@
-documentation directory for pdf files
+.I @FONTDIR@
+Font directory.
+.
+.
 .TP
-.B @DATASUBDIR@
-data subdirectory
+.I @HTMLDOCDIR@
+HTML documentation directory.
+.
+.
 .TP
-.B @COMMON_WORDS_FILE@
-file for common words
+.I @LEGACYFONTDIR@
+Legacy font directory.
+.
+.
 .TP
-.B @FONTDIR@
-directory for fonts
+.I @LOCALFONTDIR@
+Local font directory.
+.
+.
 .TP
-.B @OLDFONTDIR@
-directory for old fonts
+.I @LOCALMACRODIR@
+Local macro package
+.RI ( tmac
+file) directory.
+.
+.
 .TP
-.B @MACRODIR@
-tmac directory
+.I @MACRODIR@
+Macro package
+.RI ( tmac
+file) directory.
+.
+.
 .TP
-.B @TMAC_MDIR@
-mm tmac directory
+.I @OLDFONTDIR@
+Font directory for compatibility with old versions of
+.IR groff ;
+see
+.IR grops (@MAN1EXT@).
+.
+.
 .TP
-.B @LOCALFONTDIR@
-local font directory
+.I @PDFDOCDIR@
+PDF documentation directory.
+.
+.
 .TP
-.B @LOCALMACRODIR@
-local tmac directory
+.I @SYSTEMMACRODIR@
+System macro package
+.RI ( tmac
+file) directory.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "groff Macro Directory"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 This contains all information related to macro packages.
 .
@@ -1753,7 +1754,7 @@ have a special meaning:
 .
 .
 .TP
-.B troffrc
+.I troffrc
 Initialization file for
 .IR troff .
 .
@@ -1763,7 +1764,7 @@ before reading the macro sets and any input.
 .
 .
 .TP
-.B troffrc-end
+.I troffrc\-end
 Final startup file for
 .IR troff .
 .
@@ -1771,16 +1772,16 @@ It is parsed after all macro sets have been read.
 .
 .
 .TP
-.IB name .tmac
+.RI name .tmac
 .TQ
-.BI tmac. name
+.IR tmac. name
 Macro file for macro package
 .IR name .
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "groff Font Directory"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 This contains all information related to output devices.
 .
@@ -1798,7 +1799,7 @@ have a special meaning:
 .
 .
 .TP
-.BI dev name /DESC
+.IR dev name /DESC
 Device description file for device
 .IR name ,
 see
@@ -1806,84 +1807,107 @@ see
 .
 .
 .TP
-.BI dev name / F
+.IR dev name / F
 Font file for font
 .I F
 of device
 .IR name .
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH AVAILABILITY
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 Information on how to get
 .I groff
 and related information is available at the
 .UR http://\:www.gnu.org/\:software/\:groff
-groff GNU website
+groff page of the GNU website
 .UE .
 .
+.
 .P
 Three
 .I groff
 mailing lists are available:
+.
+.
 .IP
-.MT bug-groff@gnu.org
-for reporting bugs
-.ME .
+.MT bug\-groff@\:gnu.org
+bug tracker activity (read-only)
+.ME ;
+.
 .
 .IP
-.MT groff@gnu.org
-for general discussion of
-.IR groff ,
-.ME .
+.MT groff@\:gnu.org
+general discussion
+.ME ;
+and
+.
+.
 .IP
-.MT groff-commit@ffii.org
-the groff commit list
+.MT groff\-commit@\:gnu.org
+commit activity (read-only)
 .ME ,
-a read-only list showing logs of commitments to the groff repository.
+which reports changes to
+.IR groff 's
+source code repository by its developers.
+.
 .
 .P
 Details on repository access and much more can be found in the file
-.B README
+.I README
 at the top directory of the
 .I groff
 source package.
 .
 .
 .P
-There is a free implementation of the
+A free implementation of the
 .B grap
 preprocessor, written by
-.MT faber@lunabase.org
+.MT faber@\:lunabase.org
 Ted Faber
-.ME .
-.
-The actual version can be found at the
-.
-.UR http://\:www.lunabase.org/\:\|\s+2~\s0faber/\:Vault/\:software/\:grap/
+.ME ,
+can be found at the
+.UR http://\:www.lunabase.org/\:\|\[ti]faber/\:Vault/\:software/\:grap/
 grap website
 .UE .
-This is the only grap version supported by
+.
+This is the only
+.I grap
+supported by
 .IR groff .
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
+.SH AUTHORS
+.\" ====================================================================
+.
+.B groff
+was written by
+.MT jjc@\:jclark.com
+James Clark
+.ME .
+.
+This document was rewritten, enhanced, and put under the FDL license in
+2002 by
+.MT groff\-bernd.warken\-72@\:web.de
+Bernd Warken
+.ME .
+.
+.
+.\" ====================================================================
 .SH "SEE ALSO"
-.\" --------------------------------------------------------------------
-.ad l
+.\" ====================================================================
 .
-The
-.I groff info file
-contains all information on the
+.IR "Groff: The GNU Implementation of troff" ,
+by Trent A.\& Fisher and Werner Lemberg,
+is the primary
 .I groff
-system within a single document, providing many examples and
-background information.
+manual.
 .
-See
-.BR info (1)
-on how to read it.
+You can browse it interactively with \[lq]info groff\[rq].
 .
 .
 .P
@@ -1898,22 +1922,22 @@ or
 .
 .P
 But there are special sections of
-.IR man-pages .
+.IR "man pages" .
 .
 .I groff
-has man\-pages in sections
+has man pages in sections
 .BR 1 , " 5" , and " 7" .
 .
 When there are several
-.I man\-pages
+.I man pages
 with the same name in the same
 .I man
 section, the one with the lowest section is should as first.
 .
-The other man\-pages can be shown anyway by adding the section number
-as argument before the man-page name.
+The other man pages can be shown anyway by adding the section number
+as argument before the man page name.
 .
-Reading the man-page about the
+Reading the man page about the
 .I groff
 language is done by one of
 .RS
@@ -1927,6 +1951,7 @@ language is done by one of
 .fi
 .RE
 .
+.ad l
 .TP
 Introduction, history and further readings:
 .BR roff (@MAN7EXT@).
@@ -2016,20 +2041,15 @@ The following utilities are available:
 .BR \%xtotroff (@MAN1EXT@).
 .
 .
-.\" --------------------------------------------------------------------
-.SH COPYING (LICENSE)
-.\" --------------------------------------------------------------------
-.co
-.\" --------------------------------------------------------------------
-.SH AUTHORS
-.\" --------------------------------------------------------------------
-.au
+.\" Restore compatibility mode (for, e.g., Solaris 10/11).
+.cp \n[groff_1_C]
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .\" Emacs setup
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .\" Local Variables:
 .\" mode: nroff
 .\" End:
+.\" vim: set filetype=groff:
diff --git a/src/roff/groff/groff.am b/src/roff/groff/groff.am
new file mode 100644 (file)
index 0000000..0c926b6
--- /dev/null
@@ -0,0 +1,72 @@
+# Copyright (C) 1993-2018 Free Software Foundation, Inc.
+#
+#   Original Makefile.sub rewritten by 
+#   Bernd Warken <groff-bernd.warken-72@web.de>
+#   and Werner LEMBERG <wl@gnu.org>
+#
+#   Automake migration by 
+#   Bertrand Garrigues <bertrand.garrigues@laposte.net>
+#
+# Latest update: 22 Aug 2015
+#
+# 'groff' 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.
+#
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+
+########################################################################
+
+bin_PROGRAMS += groff
+groff_LDADD = \
+  libgroff.a \
+  lib/libgnu.a \
+  $(LIBM)
+groff_SOURCES = \
+  src/roff/groff/groff.cpp \
+  src/roff/groff/pipeline.c \
+  src/roff/groff/pipeline.h
+src/roff/groff/groff.$(OBJEXT): defs.h
+man1_MANS += src/roff/groff/groff.1
+EXTRA_DIST += src/roff/groff/groff.1.man
+GROFF_OPTS_OUTPUT = \
+  groff_opts_no_arg.txt \
+  groff_opts_with_arg.txt
+groffoptsdir = $(libprogramdir)
+groffopts_DATA = $(GROFF_OPTS_OUTPUT)
+
+MOSTLYCLEANFILES += groff_opts.tmp $(GROFF_OPTS_OUTPUT)
+
+groff_opts.tmp: src/roff/groff/groff.cpp
+       @$(GREP) -e ':.*:.*:' $? | sed -e 's/[ \t",]//g' > $@
+       @echo -n 'groff options: '
+       @cat $@
+
+groff_opts_no_arg.txt: groff_opts.tmp
+       @sed -e 's/[a-zA-Z]://g' $? > $@
+       @echo -n 'no arg: '
+       @cat $@
+
+groff_opts_with_arg.txt: groff_opts_no_arg.txt
+       @rm -f $@
+       @sed "s/[`cat $?`:]//g" groff_opts.tmp > $@
+       @echo -n 'with arg: '
+       @cat $@
+
+
+########################################################################
+# Editor settings
+########################################################################
+#
+# Local Variables:
+# mode: makefile-automake
+# fill-column: 72
+# End:
+# vim: set filetype=automake textwidth=72:
index 9c613b1..a3815bf 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 // A front end for groff.
 
@@ -34,6 +34,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. */
 #include "device.h"
 #include "pipeline.h"
 #include "nonposix.h"
+#include "relocate.h"
 #include "defs.h"
 
 #define GXDITVIEW "gxditview"
@@ -219,7 +220,7 @@ int main(int argc, char **argv)
       vflag = 1;
       printf("GNU groff version %s\n", Version_string);
       printf(
-       "Copyright (C) 2014 Free Software Foundation, Inc.\n"
+       "Copyright (C) 2018 Free Software Foundation, Inc.\n"
        "GNU groff comes with ABSOLUTELY NO WARRANTY.\n"
        "You may redistribute copies of groff and its subprograms\n"
        "under the terms of the GNU General Public License.\n"
@@ -292,6 +293,7 @@ int main(int argc, char **argv)
       break;
     case 'o':
       oflag = 1;
+      // fall through
     case 'f':
     case 'm':
     case 'r':
@@ -339,9 +341,9 @@ int main(int argc, char **argv)
   }
   font::set_unknown_desc_command_handler(handle_unknown_desc_command);
   if (!font::load_desc())
-    fatal("invalid device `%1'", device);
+    fatal("invalid device '%1'", device);
   if (!postdriver)
-    fatal("no `postpro' command in DESC file for device `%1'", device);
+    fatal("no 'postpro' command in DESC file for device '%1'", device);
   if (predriver && !zflag) {
     commands[TROFF_INDEX].insert_arg(commands[TROFF_INDEX].get_name());
     commands[TROFF_INDEX].set_name(predriver);
@@ -410,7 +412,7 @@ int main(int argc, char **argv)
   if (strcmp(device, "html") == 0) {
     if (is_xhtml) {
       if (oflag)
-       fatal("`-o' option is invalid with device `xhtml'");
+       fatal("'-o' option is invalid with device 'xhtml'");
       if (zflag)
        commands[EQN_INDEX].append_arg("-Tmathml:xhtml");
       else if (eflag)
@@ -418,7 +420,7 @@ int main(int argc, char **argv)
     }
     else {
       if (oflag)
-       fatal("`-o' option is invalid with device `html'");
+       fatal("'-o' option is invalid with device 'html'");
       // html renders equations as images via ps
       commands[EQN_INDEX].append_arg("-Tps:html");
     }
@@ -469,8 +471,10 @@ int main(int argc, char **argv)
     f += '=';
     if (binpath && *binpath)
       f += binpath;
-    else
-      f += BINPATH;
+    else {
+      binpath = relocatep(BINPATH);
+      f += binpath;
+    }
     if (path && *path) {
       f += PATH_SEP_CHAR;
       f += path;
@@ -512,19 +516,19 @@ void handle_unknown_desc_command(const char *command, const char *arg,
   if (strcmp(command, "print") == 0) {
     if (arg == 0)
       error_with_file_and_line(filename, lineno,
-                              "`print' command requires an argument");
+                              "'print' command requires an argument");
     else
       spooler = strsave(arg);
   }
   if (strcmp(command, "prepro") == 0) {
     if (arg == 0)
       error_with_file_and_line(filename, lineno,
-                              "`prepro' command requires an argument");
+                              "'prepro' command requires an argument");
     else {
       for (const char *p = arg; *p; p++)
        if (csspace(*p)) {
          error_with_file_and_line(filename, lineno,
-                                  "invalid `prepro' argument `%1'"
+                                  "invalid 'prepro' argument '%1'"
                                   ": program name required", arg);
          return;
        }
@@ -534,12 +538,12 @@ void handle_unknown_desc_command(const char *command, const char *arg,
   if (strcmp(command, "postpro") == 0) {
     if (arg == 0)
       error_with_file_and_line(filename, lineno,
-                              "`postpro' command requires an argument");
+                              "'postpro' command requires an argument");
     else {
       for (const char *p = arg; *p; p++)
        if (csspace(*p)) {
          error_with_file_and_line(filename, lineno,
-                                  "invalid `postpro' argument `%1'"
+                                  "invalid 'postpro' argument '%1'"
                                   ": program name required", arg);
          return;
        }
@@ -578,13 +582,13 @@ possible_command::possible_command()
 
 possible_command::~possible_command()
 {
-  a_delete name;
+  free(name);
   a_delete argv;
 }
 
 void possible_command::set_name(const char *s)
 {
-  a_delete name;
+  free(name);
   name = strsave(s);
 }
 
@@ -598,8 +602,8 @@ void possible_command::clear_name()
 
 void possible_command::set_name(const char *s1, const char *s2)
 {
-  a_delete name;
-  name = new char[strlen(s1) + strlen(s2) + 1];
+  free(name);
+  name = (char*)malloc(strlen(s1) + strlen(s2) + 1);
   strcpy(name, s1);
   strcat(name, s2);
 }
@@ -701,7 +705,13 @@ void append_arg_to_string(const char *arg, string &str)
 {
   str += ' ';
   int needs_quoting = 0;
+  // Native Windows programs don't support '..' style of quoting, so
+  // always behave as if ARG included the single quote character.
+#if defined(_WIN32) && !defined(__CYGWIN__)
+  int contains_single_quote = 1;
+#else
   int contains_single_quote = 0;
+#endif
   const char*p;
   for (p = arg; *p != '\0'; p++)
     switch (*p) {
@@ -731,10 +741,17 @@ void append_arg_to_string(const char *arg, string &str)
     str += '"';
     for (p = arg; *p != '\0'; p++)
       switch (*p) {
+#if !(defined(_WIN32) && !defined(__CYGWIN__))
       case '"':
       case '\\':
       case '$':
        str += '\\';
+#else
+      case '"':
+      case '\\':
+       if (*p == '"' || (*p == '\\' && p[1] == '"'))
+         str += '\\';
+#endif
        // fall through
       default:
        str += *p;
index d988a8c..2e3236f 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -14,7 +14,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #ifdef HAVE_CONFIG_H
 #include <config.h>
@@ -77,6 +77,9 @@ extern char *strerror();
 
 #define error c_error
 
+/* Prototype */
+int run_pipeline(int, char ***, int);
+
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -166,7 +169,7 @@ const char *system_shell_dash_c(void)
 
   shell_name = system_shell_name();
 
-  /* Assume that if the shell name ends in `sh', it's Unixy */
+  /* Assume that if the shell name ends in 'sh', it's Unixy */
   if (strcasecmp(shell_name + strlen(shell_name) - strlen("sh"), "sh") == 0)
     dash_c = "-c";
   else
@@ -340,7 +343,7 @@ int run_pipeline(int ncommands, char ***commands, int no_pipe)
 
 #else  /* not _WIN32 */
 
-/* MSDOS doesn't have `fork', so we need to simulate the pipe by running
+/* MSDOS doesn't have 'fork', so we need to simulate the pipe by running
    the programs in sequence with standard streams redirected to and
    from temporary files.
 */
@@ -364,16 +367,16 @@ int run_pipeline(int ncommands, char ***commands, int no_pipe)
   int i, f, ret = 0;
 
   /* Choose names for a pair of temporary files to implement the pipeline.
-     Microsoft's `tempnam' uses the directory specified by `getenv("TMP")'
+     Microsoft's 'tempnam' uses the directory specified by 'getenv("TMP")'
      if it exists; in case it doesn't, try the GROFF alternatives, or
-     `getenv("TEMP")' as last resort -- at least one of these had better
+     'getenv("TEMP")' as last resort -- at least one of these had better
      be set, since Microsoft's default has a high probability of failure. */
   char *tmpdir;
   if ((tmpdir = getenv("GROFF_TMPDIR")) == NULL
       && (tmpdir = getenv("TMPDIR")) == NULL)
     tmpdir = getenv("TEMP");
 
-  /* Don't use `tmpnam' here: Microsoft's implementation yields unusable
+  /* Don't use 'tmpnam' here: Microsoft's implementation yields unusable
      file names if current directory is on network share with read-only
      root. */
   tmpfiles[0] = tempnam(tmpdir, NULL);
index b13a06d..1d44c6a 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -14,7 +14,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/src/roff/grog/Makefile.sub b/src/roff/grog/Makefile.sub
deleted file mode 100644 (file)
index 5c7a450..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-# Makefile.sub for `grog'
-
-# File position: <groff-source>/src/roff/grog/Makefile.sub
-
-# Copyright (C) 1993-2014  Free Software Foundation, Inc.
-
-# This file is part of `grog' which is part of `groff'.
-
-# `groff' 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.
-
-# `groff' 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 <http://www.gnu.org/licenses/>.
-
-########################################################################
-
-MAN1=grog.n
-MOSTLYCLEANADD=grog $(MAN1)
-
-# not all make programs have $(RM) predefined.
-RM=rm -f
-
-all: grog $(MAN1)
-
-# lib .pl-files
-GROG=$(srcdir)/subs.pl
-GROG_=`echo $(GROG) | sed 's|$(srcdir)/||g'`
-
-
-# Perl version works for all parts of `groff'.
-
-grog: grog.pl $(GROG) $(SH_DEPS_SED_SCRIPT)
-       $(RM) $@
-       sed -f "$(SH_DEPS_SED_SCRIPT)" \
-           -e "1s|^\(#! \).*perl|\\1$(PERL)|" \
-           -e "s|@g@|$(g)|g" \
-           -e "s|@BINDIR@|$(DESTDIR)$(bindir)|g" \
-           -e "s|@grog_dir@|$(DESTDIR)$(grog_dir)|g" \
-           -e "s|@EGREP@|$(EGREP)|g" \
-           -e "s|@VERSION@|$(version)$(revision)|" \
-           -e "$(SH_SCRIPT_SED_CMD)" \
-           $(srcdir)/grog.pl >$@
-       chmod +x $@
-
-.PHONY: install_data
-install_data: grog
-       -test -d $(DESTDIR)$(bindir) || $(mkinstalldirs) $(DESTDIR)$(bindir)
-       $(RM) $(DESTDIR)$(bindir)/grog
-       $(INSTALL_SCRIPT) grog $(DESTDIR)$(bindir)/grog
-       -test -d $(DESTDIR)$(grog_dir) || $(mkinstalldirs) $(DESTDIR)$(grog_dir)
-       for f in $(GROG_); do \
-         $(RM) $(DESTDIR)$(grog_dir)/$$f; \
-         $(INSTALL_SCRIPT) $(srcdir)/$$f $(DESTDIR)$(grog_dir)/$$f; \
-       done
-
-.PHONY: uninstall_data
-uninstall_sub:
-       $(RM) $(DESTDIR)$(bindir)/grog
-       -for f in $(GROG_); do \
-         $(RM) $(DESTDIR)$(grog_dir)/$$f; \
-       done
-       -d=$(DESTDIR)$(grog_dir);\
-         if test -d $$d; then rmdir $$d; fi
-
-
-########################################################################
-# Emacs settings
-########################################################################
-#
-# Local Variables:
-# mode: makefile
-# End:
similarity index 57%
rename from src/roff/grog/grog.man
rename to src/roff/grog/grog.1.man
index 0607dcb..5cfc4c4 100644 (file)
@@ -1,85 +1,74 @@
-.TH GROG @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
+.TH GROG @MAN1EXT@ "@MDATE@" "groff @VERSION@"
 .SH NAME
-grog \(em guess options for a following groff command
-.\" The .SH was moved to this place in order to appease `apropos'.
+grog \- guess options for a following groff command
 .
 .\" grog.man -> grog.1 - man page for grog (section 1)
 .\" Source file position:  <groff_source_top>/src/roff/grog/grog.man
 .\" Installed position:    <prefix>/share/man/man1/grog.1
 .
-.\" --------------------------------------------------------------------
-.\" Legalese
-.\" --------------------------------------------------------------------
-.
-.de co
-Copyright \[co] 1989-2014 Free Software Foundation, Inc.
-
-This file is part of grog, which is part of groff, a free software
-project.  You can redistribute it and/or modify it under the terms of
-the GNU General Public License version 2 (GPL2) as published by the
-Free Software Foundation.
-
-groff 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.
-
-The text for GPL2 is available in the internet at
-.UR http://\:www.gnu.org/\:licenses/\:gpl-2.0.txt
-GNU copyleft site
-.UE .
-..
-.
-.de au
-Written by James Clark.
-
-Maintained by
-.MT wl@gnu.org
-Werner Lemberg
-.ME .
-
-Rewritten and put under GPL by
-.MT groff-bernd.warken-72@web.de
-Bernd Warken
-.ME .
-..
-.
-.\" --------------------------------------------------------------------
+.\" TODO: This page needs a thorough edit by a native English speaker.
+.
+.\" ====================================================================
+.\" Legal Terms
+.\" ====================================================================
+.\"
+.\" Copyright (C) 1989-2018 Free Software Foundation, Inc.
+.\"
+.\" This file is part of grog, which is part of groff, a free software
+.\" project.  You can redistribute it and/or modify it under the terms
+.\" of the GNU General Public License version 2 (GPL2) as published by
+.\" the Free Software Foundation.
+.\"
+.\" groff 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.
+.\"
+.\" The text for GPL2 is available in the internet at
+.\" <http://www.gnu.org/licenses/gpl2.0.txt>.
+.
+.
+.\" ====================================================================
 .\" Characters
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .\" Ellipsis ...
-.ie t .ds EL \fS\N'188'\fP
-.el .ds EL \&.\|.\|.\&\
+.ie t .ds EL \fS\N'188'\fP\"
+.el .ds EL \&.\|.\|.\&\"
 .\" called with \*(EL
 .
-.\" Bullet
-.ie t .ds BU \[bu]
-.el .ds BU *
-.\" used in `.IP \*(BU 2m' (former .Topic)
-.
-.
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH SYNOPSIS
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .SY grog
 .OP \-C
+.OP \-T device
 .OP \-\-run
 .OP \-\-warnings
 .OP \-\-ligatures
-.OP \& "\%groff\-option \*(EL"
+.RI [ groff-option
+\*(EL]
 .OP \-\-
-.OP \& "\%filespec \*(EL"
+.RI [ filespec
+\*(EL]
 .YS
 .
-.BR "grog \-h " | " \-\-help"
-.br
-.BR "grog \-v " | " \-\-version"
+.SY grog
+.B \-h
+.SY grog
+.B \-\-help
+.YS
+.
+.SY grog
+.B \-v
+.SY grog
+.B \-\-version
+.YS
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH DESCRIPTION
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .B grog
 reads the input (file names or standard input) and guesses which of
@@ -89,8 +78,12 @@ options are needed to perform the input with the
 .B groff
 program.
 .
+A suitable device is now always written as
+.BI \-T device
+including the groff default as
+.BR "\-T ps" .
+.
 .
-.RS
 .P
 The corresponding
 .B groff
@@ -102,12 +95,15 @@ the generated line is output into standard error and the generated
 .B groff
 command is run on the
 .IR "standard output" .
-.RE
+.
+.BR groffer (@MAN1EXT@)
+relies on a perfectly running
+.BR groff (@MAN1EXT@).
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH OPTIONS
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The option
 .B \-v
@@ -145,7 +141,7 @@ command line.
 .TP
 .B \-\-ligatures
 this option forces to include the arguments
-.B -P-y -PU
+.B \-P\-y \-PU
 within the generated
 .B groff
 command line.
@@ -189,9 +185,9 @@ If no
 is specified standard input is read automatically.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH DETAILS
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .B grog
 reads all
@@ -206,19 +202,22 @@ options are required for running the input under
 .BR \-g ,
 .BR \-G ,
 .BR \-j ,
-.BR \-J ,
+.\" gideal is not implemented yet.
+.\" .BR \-J ,
 .BR \-p ,
 .BR \-R ,
 .BR \-s ,
-.BR \-t .
+.B \-t
+(preprocessors); and
 .BR \-man ,
-.BR \-mdoc,
-.BR \-mdoc-old,
+.BR \-mdoc ,
+.BR \-mdoc\-old ,
 .BR \-me ,
 .BR \-mm ,
 .BR \-mom ,
 and
-.BR \-ms .
+.B \-ms
+(macro packages).
 .
 .
 .P
@@ -304,61 +303,23 @@ program heavily depends on a working
 .BR grog .
 .
 .
-.P
-The
-.B grog
-source contains two files written in different programming languages:
-.
-.ft CB
-grog.pl
-.ft R
-is the
-.I Perl
-version, while
-.ft CB
-grog.sh
-.ft R
-is a shell script using
-.BR awk (1).
-During the run of
-.BR make (1),
-it is determined whether the system contains a suitable version of
-.BR perl (1).
-If so,
-.ft CB
-grog.pl
-.ft R
-is transformed into
-.BR grog ;
-otherwise
-.ft CB
-grog.sh
-.ft R
-is used instead.
-.
-.
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH EXAMPLES
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
-.IP \*(BU 2m
 Calling
 .RS
-.IP
 .EX
 grog meintro.me
 .EE
 .RE
-.IP
 results in
 .RS
 .EX
-.IP
 groff \-me meintro.me
 .EE
 .RE
 .
-.IP
 So
 .B grog
 recognized that the file
@@ -369,26 +330,21 @@ macro package.
 .RE
 .
 .
-.IP \*(BU 2m
 On the other hand,
 .RS
-.IP
 .EX
 grog pic.ms
 .EE
 .RE
 .
-.IP
 outputs
 .
 .RS
-.IP
 .EX
 groff \-p \-t \-e \-ms pic.ms
 .EE
 .RE
 .
-.IP
 Besides determining the macro package
 .BR \-ms ,
 .B grog
@@ -410,54 +366,44 @@ for
 .RE
 .
 .
-.IP \*(BU 2m
 If both of the former example files are combined by the command
 .
 .RS
-.IP
 .EX
 grog meintro.me pic.ms
 .EE
 .RE
 .
-.IP
 an error message is sent to standard error because
 .B groff
 cannot work with two different macro packages:
 .
 .RS
-.IP
 .ft CR
 grog: error: there are several macro packages: \-me \-ms
 .ft
 .RE
 .
-.IP
 Additionally the corresponding output with the wrong options is printed
 to standard output:
 .
 .RS
-.IP
 .EX
 groff \-pte \-me \-ms meintro.me pic.ms
 .EE
 .RE
 .
-.IP
 But the program is terminated with an error code.
 .
 .
-.IP \*(BU 2m
 The call of
 .
 .RS
-.IP
 .EX
 grog \-ksS \-Tdvi grnexmpl.g
 .EE
 .RE
 .
-.IP
 contains several
 .B groff
 options that are just passed on the output without any interface to
@@ -476,13 +422,11 @@ with argument
 The output is
 .
 .RS
-.IP
 .EX
 groff \-k \-s \-S \-Tdvi grnexmpl.g
 .EE
 .RE
 .
-.IP
 so no additional option was added by
 .BR grog .
 As no option
@@ -492,75 +436,36 @@ was found by
 this file does not use a macro package.
 .
 .
-.\" --------------------------------------------------------------------
-.SH "SEE ALSO"
-.\" --------------------------------------------------------------------
-.
-.ad l
-.
-.BR groff (@MAN1EXT@),
-.BR groffer (@MAN1EXT@)
-.BR @g@troff (@MAN1EXT@),
-.BR @g@tbl (@MAN1EXT@),
-.BR @g@pic (@MAN1EXT@),
-.BR @g@chem (@MAN1EXT@),
-.BR @g@eqn (@MAN1EXT@),
-.BR @g@refer (@MAN1EXT@),
-.BR @g@grn (@MAN1EXT@),
-.BR grap (1),
-.BR @g@soelim (@MAN1EXT@)
-.
-.RS
-Man-pages of section 1 can be viewed with either
-.RS
-\[Do]
-.BI man " name"
-.RE
-for text mode or
-.RS
-\[Do]
-.BI groffer " name"
-.RE
-for graphical mode (default is PDF mode).
-.RE
-.
+.\" ====================================================================
+.SH AUTHORS
+.\" ====================================================================
+.B grog
+was originally written by James Clark.
 .
-.P
-.BR groff_me (@MAN7EXT@),
-.BR groff_ms (@MAN7EXT@),
-.BR groff_mm (@MAN7EXT@),
-.BR groff_mom (@MAN7EXT@),
-.BR groff_man (@MAN7EXT@)
+The current Perl implementation was written by
+.MT groff\-bernd.warken\-72@\:web.de
+Bernd Warken
+.ME
+with contributions from Ralph Corderoy,
+and is maintained by
+.MT wl@\:gnu.org
+Werner Lemberg
+.ME .
 .
-.RS
-Man-pages of section 7 can be viewed with either with
-.RS
-\[Do]
-.BI "man 7 " name
-.RE
-for text mode or
-.RS
-\[Do]
-.BI "groffer 7 " name
-.RE
-for graphical mode (default is PDF mode).
-.RE
 .
+.\" ====================================================================
+.SH "SEE ALSO"
+.\" ====================================================================
 .
-.\" --------------------------------------------------------------------
-.SH "COPYING"
-.\" --------------------------------------------------------------------
-.co
-.\" --------------------------------------------------------------------
-.SH "AUTHORS"
-.\" --------------------------------------------------------------------
-.au
+.BR groff (@MAN1EXT@),
+.BR groffer (@MAN1EXT@)
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .\" Emacs settings
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .\" Local Variables:
 .\" mode: nroff
 .\" End:
+.\" vim: set filetype=groff:
diff --git a/src/roff/grog/grog.am b/src/roff/grog/grog.am
new file mode 100644 (file)
index 0000000..63dae1b
--- /dev/null
@@ -0,0 +1,62 @@
+# grog.am for 'grog'
+#
+# File position: <groff-source>/src/roff/grog/grog.am
+#
+# Copyright (C) 1993-2018 Free Software Foundation, Inc.
+#
+# Latest update: 22 Aug 2015
+#
+# This file is part of 'grog' which is part of 'groff'.
+#
+# 'groff' 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.
+#
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+
+grog_srcdir = $(top_srcdir)/src/roff/grog
+bin_SCRIPTS += grog
+GROG = src/roff/grog/subs.pl
+
+# grog_dir is defined by a m4 macro
+grogdir = $(grog_dir)
+dist_grog_DATA = $(GROG)
+man1_MANS += src/roff/grog/grog.1
+EXTRA_DIST += \
+  src/roff/grog/grog.1.man \
+  src/roff/grog/grog.pl
+
+# Perl version works for all parts of 'groff'.
+
+grog: $(grog_srcdir)/grog.pl $(GROG) $(SH_DEPS_SED_SCRIPT)
+       $(AM_V_GEN)$(RM) $@ \
+       && sed -f "$(SH_DEPS_SED_SCRIPT)" \
+              -e "1s|^\(#! \).*perl|\\1$(PERL)|" \
+              -e "s|[@]g[@]|$(g)|g" \
+              -e "s|[@]BINDIR[@]|$(DESTDIR)$(bindir)|g" \
+              -e "s|[@]libdir[@]|$(DESTDIR)$(libdir)|g" \
+              -e "s|[@]EGREP[@]|$(EGREP)|g" \
+              -e "s|[@]VERSION[@]|$(VERSION)|" \
+              -e "s|[@]grog_dir[@]|$(grog_dir)|" \
+              -e "$(SH_SCRIPT_SED_CMD)" \
+              $(grog_srcdir)/grog.pl \
+              >$@ \
+       && chmod +x $@
+
+
+########################################################################
+# Editor settings
+########################################################################
+#
+# Local Variables:
+# mode: makefile-automake
+# fill-column: 72
+# End:
+# vim: set filetype=automake textwidth=72:
index fb7b54c..f7fb8e4 100644 (file)
@@ -6,26 +6,28 @@
 # Source file position: <groff-source>/src/roff/grog/grog.pl
 # Installed position: <prefix>/bin/grog
 
-# Copyright (C) 1993-201 Free Software Foundation, Inc.
-# Written by James Clark, maintained by Werner Lemberg.
+# Copyright (C) 1993-2018 Free Software Foundation, Inc.
+# Written by James Clark.
 # Rewritten with Perl by Bernd Warken <groff-bernd.warken-72@web.de>.
 # The macros for identifying the devices were taken from Ralph
-# Corderoy's `grog.sh' from 2006.
+# Corderoy's 'grog.sh' of 2006.
 
-# This file is part of `grog', which is part of `groff'.
+# Last update: 19 Jul 2015
 
-# `groff' is free software; you can redistribute it and/or modify it
+# This file is part of 'grog', which is part of 'groff'.
+
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
 # the Free Software Foundation, either version 2 of the License, or
 # (at your option) any later version.
 
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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
+# along with this program.  If not, see
 # <http://www.gnu.org/licenses/gpl-2.0.html>.
 
 ########################################################################
@@ -38,7 +40,7 @@ use strict;
 # $Bin is the directory where this script is located
 use FindBin;
 
-my $before_make;       # script before run of `make'
+my $before_make;       # script before run of 'make'
 {
   my $at = '@';
   $before_make = 1 if '@VERSION@' eq "${at}VERSION${at}";
index 2220db7..966e354 100644 (file)
@@ -6,20 +6,22 @@
 # Source file position: <groff-source>/src/roff/grog/subs.pl
 # Installed position: <prefix>/lib/grog/subs.pl
 
-# Copyright (C) 1993-201 Free Software Foundation, Inc.
+# Copyright (C) 1993-2018 Free Software Foundation, Inc.
 # This file was split from grog.pl and put under GPL2 by
 #               Bernd Warken <groff-bernd.warken-72@web.de>.
 # The macros for identifying the devices were taken from Ralph
-# Corderoy's `grog.sh' of 2006.
+# Corderoy's 'grog.sh' of 2006.
 
-# This file is part of `grog', which is part of `groff'.
+# Last update: 10 Sep 2015
 
-# `groff' is free software; you can redistribute it and/or modify it
+# This file is part of 'grog', which is part of 'groff'.
+
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
 # the Free Software Foundation, either version 2 of the License, or
 # (at your option) any later version.
 
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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.
@@ -40,6 +42,9 @@ use File::Spec;
 # printing of hashes: my %hash = ...; print Dumper(\%hash);
 use Data::Dumper;
 
+# for running shell based programs within Perl; use `` instead of
+# use IPC::System::Simple qw(capture capturex run runx system systemx);
+
 $\ = "\n";
 
 # my $Sp = "[\\s\\n]";
@@ -47,15 +52,16 @@ $\ = "\n";
 # my $Sp = '' if $arg eq '-C';
 my $Sp = '';
 
-# from `src/roff/groff/groff.cpp' near `getopt_long'
+# from 'src/roff/groff/groff.cpp' near 'getopt_long'
 my $groff_opts =
   'abcCd:D:eEf:F:gGhiI:jJkK:lL:m:M:n:No:pP:r:RsStT:UvVw:W:XzZ';
 
 my @Command = ();              # stores the final output
-my @Mparams = ();              # stores the options `-m*'
-my @devices = ();
-my $do_run = 0;                        # run generated `groff' command
-my $pdf_with_ligatures = 0;    # `-P-y -PU' for `pdf' device
+my @Mparams = ();              # stores the options '-m*'
+my @devices = ();              # stores -T
+
+my $do_run = 0;                        # run generated 'groff' command
+my $pdf_with_ligatures = 0;    # '-P-y -PU' for 'pdf' device
 my $with_warnings = 0;
 
 my $Prog = $0;
@@ -105,6 +111,7 @@ my %Groff =
    'AI' => 0,          # ms
    'AU' => 0,          # ms
    'NH' => 0,          # ms
+   'TH_later' => 0,    # TH not 1st command is ms
    'TL' => 0,          # ms
    'UL' => 0,          # ms
    'XP' => 0,          # ms
@@ -118,7 +125,7 @@ my %Groff =
    'OP' => 0,          # man
    'SS' => 0,          # man
    'SY' => 0,          # man
-   'TH' => 0,          # man
+   'TH_first' => 0,    # TH as 1st command is man
    'TP' => 0,          # man
    'UR' => 0,          # man
    'YS' => 0,          # man
@@ -165,6 +172,16 @@ my $tmac_ext = '';
 
 
 ########################################################################
+# err()
+########################################################################
+
+sub err {
+  my $text = shift;
+  print STDERR $text;
+}
+
+
+########################################################################
 # handle_args()
 ########################################################################
 
@@ -208,7 +225,7 @@ sub handle_args {
       next;
     }
 
-    # now $arg starts with `-'
+    # now $arg starts with '-'
 
     if ($arg eq '-') {
       unless ($was_minus) {
@@ -308,11 +325,11 @@ sub handle_file_ext {
     # test for each file name in the arguments
     unless ( open(FILE, $file eq "-" ? $file : "< $file") ) {
       print STDERR __FILE__ . ' ' .  __LINE__ . ': ' .
-       "$Prog: can't open \`$file\': $!";
+       "$Prog: can't open \'$file\': $!";
       next;
     }
 
-    next unless ( $file =~ /\./ ); # file name has no dot `.'
+    next unless ( $file =~ /\./ ); # file name has no dot '.'
 
 ##### handle_file_ext()
     # get extension
@@ -330,20 +347,20 @@ sub handle_file_ext {
     next if ( $ext =~ /^(
                         chem|
                         eqn|
-                        pic|
-                        tbl|
-                        ref|
-                        t|
-                        tr|
                         g|
-                        groff|
-                        roff|
-                        www|
-                        hdtbl|
                         grap|
                         grn|
+                        groff|
+                        hdtbl|
                         pdfroff|
-                        pinyin
+                        pic|
+                        pinyin|
+                        ref|
+                        roff|
+                        t|
+                        tbl|
+                        tr|
+                        www
                       )$/x );
 
 ##### handle_file_ext()
@@ -354,9 +371,9 @@ sub handle_file_ext {
                      n|
                      1b
                    )$/x ) {
-      # `man|n' from `groff' source
-      # `1b' from `heirloom'
-      # `[1-9lno]' from man-pages
+      # 'man|n' from 'groff' source
+      # '1b' from 'heirloom'
+      # '[1-9lno]' from man-pages
       if ( $tmac_ext && $tmac_ext ne 'man' ) {
        # found tmac is not 'man'
        print STDERR __FILE__ . ' ' .  __LINE__ . ': ' .
@@ -413,7 +430,7 @@ sub handle_whole_files {
   foreach my $file ( @filespec ) {
     unless ( open(FILE, $file eq "-" ? $file : "< $file") ) {
       print STDERR __FILE__ . ' ' .  __LINE__ . ': ' .
-       "$Prog: can't open \`$file\': $!";
+       "$Prog: can't open \'$file\': $!";
       next;
     }
     my $line = <FILE>; # get single line
@@ -430,7 +447,7 @@ sub handle_whole_files {
        # not an option line
        &do_line( $line, $file );
       }
-    } else { # emptry line
+    } else { # empty line
       next;
     }
 
@@ -447,13 +464,13 @@ sub handle_whole_files {
 # do_first_line()
 ########################################################################
 
-# As documented for the `man' program, the first line can be
+# As documented for the 'man' program, the first line can be
 # used as a groff option line.  This is done by:
 # - start the line with '\" (apostrophe, backslash, double quote)
 # - add a space character
-# - a word using the following characters can be appended: `egGjJpRst'.
+# - a word using the following characters can be appended: 'egGjJpRst'.
 #     Each of these characters means an option for the generated
-#     `groff' command line, e.g. `-t'.
+#     'groff' command line, e.g. '-t'.
 
 sub do_first_line {
   my ( $line, $file ) = @_;
@@ -537,6 +554,8 @@ sub do_first_line {
 # do_line()
 ########################################################################
 
+my $before_first_command = 1; # for check of .TH
+
 sub do_line {
   my ( $line, $file ) = @_;
 
@@ -551,6 +570,16 @@ sub do_line {
   return if ( $line =~ /^\.$/ );       # ignore .
   return if ( $line =~ /^\.\.$/ );     # ignore ..
 
+  if ( $before_first_command ) { # so far without 1st command
+    if ( $line =~ /^\.TH/ ) {
+      # check if .TH is 1st command for man
+      $Groff{'TH_first'} = 1 if ( $line =~ /^\.\s*TH/ );
+    }
+    if ( $line =~ /^\./ ) {
+      $before_first_command = 0;
+    }
+  }
+
   # split command
   $line =~ /^(\.\w+)\s*(.*)$/;
   my $command = $1;
@@ -562,12 +591,12 @@ sub do_line {
   ######################################################################
   # soelim
   if ( $line =~ /^\.(do)?\s*(so|mso|PS\s*<|SO_START).*$/ ) {
-    # `.so', `.mso', `.PS<...', `.SO_START'
+    # '.so', '.mso', '.PS<...', '.SO_START'
     $Groff{'soelim'}++;
     return;
   }
   if ( $line =~ /^\.(do)?\s*(so|mso|PS\s*<|SO_START).*$/ ) {
-    # `.do so', `.do mso', `.do PS<...', `.do SO_START'
+    # '.do so', '.do mso', '.do PS<...', '.do SO_START'
     $Groff{'soelim'}++;
     return;
   }
@@ -658,6 +687,12 @@ sub do_line {
     $Groff{'tbl'}++;           # for tbl
     return;
   }
+  if ( $command =~ /^\.TH$/ ) {
+    unless ( $Groff{'TH_first'} ) {
+      $Groff{'TH_later'}++;            # for tbl
+    }
+    return;
+  }
 
 
   ######################################################################
@@ -673,8 +708,8 @@ sub do_line {
   }
 
 ####### do_line()
-  # In the old version of -mdoc `Oo' is a toggle, in the new it's
-  # closed by `Oc'.
+  # In the old version of -mdoc 'Oo' is a toggle, in the new it's
+  # closed by 'Oc'.
   if ( $command =~ /^\.Oc$/ ) {
     $Groff{'Oc'}++;            # only for modern mdoc
     return;
@@ -777,10 +812,6 @@ sub do_line {
     $Groff{'SY'}++;
     return;
   }
-  if ( $command =~ /^\.TH$/ ) {
-    $Groff{'TH'}++;            # for man
-    return;
-  }
   if ( $command =~ /^\.TP$/ ) {        # for man
     $Groff{'TP'}++;
     return;
@@ -871,43 +902,37 @@ my $correct_tmac = '';
 sub make_groff_device {
   # globals: @devices
 
-  # default device is empty, i.e. it is `ps' when without `-T'
-  return '' unless ( @devices );
-
-  for ( @devices ) {
-    print STDERR __FILE__ . ' ' .  __LINE__ . ': ' .
-      $_ . ': not a suitable device'
-      unless (
-             /^(
-                dvi|
-                html|
-                xhtml|
-                lbp|
-                lj4|
-                ps|
-                pdf|
-                ascii|
-                cp1047|
-                latin1|
-                utf8
-              )$/x );
-  }
+  # default device is 'ps' when without '-T'
+  my $device;
+  push @devices, 'ps' unless ( @devices );
 
 ###### make_groff_device()
-  my $device = pop( @devices );
-  if ( @devices ) {
-    for ( @devices ) {
-      next if ( $_ eq $device );
-      print STDERR __FILE__ . ' ' .  __LINE__ . ': ' .
-       'additional device: ' . $_;
+  for my $d ( @devices ) {
+    if ( $d =~ /^(             # suitable devices
+                 dvi|
+                 html|
+                 xhtml|
+                 lbp|
+                 lj4|
+                 ps|
+                 pdf|
+                 ascii|
+                 cp1047|
+                 latin1|
+                 utf8
+               )$/x ) {
+###### make_groff_device()
+      $device = $d;
+    } else {
+      next;
     }
-    print STDERR __FILE__ . ' ' .  __LINE__ . ': ' .
-      'device ' . $device . ' taken instead';
-  }
 
-  return '' unless ( $device );
-  push @Command, '-T';
-  push @Command, $device;
+
+    if ( $device ) {
+      push @Command, '-T';
+      push @Command, $device;
+    }
+  }
 
 ###### make_groff_device()
   if ( $device eq 'pdf' ) {
@@ -917,11 +942,11 @@ sub make_groff_device {
     } else {   # no --ligature argument
       if ( $with_warnings ) {
        print STDERR <<EOF;
-If you have trouble with ligatures like `fi' in the `groff' output, you
+If you have trouble with ligatures like 'fi' in the 'groff' output, you
 can proceed as one of
-- add `grog' option `--with_ligatures' or
-- use the `grog' option combination `-P-y -PU' or
-- try to remove the font named similar to `fonts-texgyre' from your system.
+- add 'grog' option '--with_ligatures' or
+- use the 'grog' option combination '-P-y -PU' or
+- try to remove the font named similar to 'fonts-texgyre' from your system.
 EOF
       }        # end of warning
     }  # end of ligature
@@ -936,7 +961,7 @@ EOF
 sub make_groff_preproc {
   # globals: %Groff, @preprograms, @Command
 
-  # preprocessors without `groff' option
+  # preprocessors without 'groff' option
   if ( $Groff{'lilypond'} ) {
     push @preprograms, 'glilypond';
   }
@@ -947,7 +972,7 @@ sub make_groff_preproc {
     push @preprograms, 'gpinyin';
   }
 
-  # preprocessors with `groff' option
+  # preprocessors with 'groff' option
   if ( ( $Groff{'PS'} ||  $Groff{'PF'} ) &&  $Groff{'PE'} ) {
     $Groff{'pic'} = 1;
   }
@@ -985,9 +1010,9 @@ sub make_groff_preproc {
 sub make_groff_tmac_man_ms {
   # globals: @filespec, $tmac_ext, %Groff
 
-  # `man' requests, not from `ms'
+  # 'man' requests, not from 'ms'
   if ( $Groff{'SS'} || $Groff{'SY'} || $Groff{'OP'} ||
-       $Groff{'TH'} || $Groff{'TP'} || $Groff{'UR'} ) {
+       $Groff{'TH_first'} || $Groff{'TP'} || $Groff{'UR'} ) {
     $Groff{'man'} = 1;
     push(@m, '-man');
 
@@ -999,12 +1024,13 @@ sub make_groff_tmac_man_ms {
   }
 
 ###### make_groff_tmac_man_ms()
-  # `ms' requests, not from `man'
+  # 'ms' requests, not from 'man'
   if (
       $Groff{'1C'} || $Groff{'2C'} ||
       $Groff{'AB'} || $Groff{'AE'} || $Groff{'AI'} || $Groff{'AU'} ||
       $Groff{'BX'} || $Groff{'CD'} || $Groff{'DA'} || $Groff{'DE'} ||
-      $Groff{'DS'} || $Groff{'LD'} || $Groff{'ID'} || $Groff{'NH'} ||
+      $Groff{'DS'} || $Groff{'ID'} || $Groff{'LD'} || $Groff{'NH'} ||
+      $Groff{'TH_later'} ||
       $Groff{'TL'} || $Groff{'UL'} || $Groff{'XP'}
      ) {
     $Groff{'ms'} = 1;
@@ -1019,7 +1045,7 @@ sub make_groff_tmac_man_ms {
 
 ###### make_groff_tmac_man_ms()
 
-  # both `man' and `ms' requests
+  # both 'man' and 'ms' requests
   if ( $Groff{'P'} || $Groff{'IP'}  ||
        $Groff{'LP'} || $Groff{'PP'} || $Groff{'SH'} ) {
     if ( $tmac_ext eq 'man' ) {
@@ -1103,6 +1129,7 @@ sub make_groff_line_rest {
     $file_args_included = 0;
   }
 
+###### make_groff_line_rest()
   foreach (@Command) {
     next unless /\s/;
     # when one argument has several words, use accents
@@ -1110,6 +1137,7 @@ sub make_groff_line_rest {
   }
 
 
+###### make_groff_line_rest()
   ##########
   # -m arguments
   my $nr_m_guessed = scalar @m;
@@ -1118,7 +1146,6 @@ sub make_groff_line_rest {
       'argument for -m found: ' . @m;
   }
 
-###### make_groff_line()
 
   my $nr_m_args = scalar @Mparams;     # m-arguments for grog
   my $last_m_arg = ''; # last provided -m option
@@ -1127,13 +1154,14 @@ sub make_groff_line_rest {
     # ignore other -m arguments and the found ones
     $last_m_arg = $Mparams[-1];        # take the last -m argument
     print STDERR __FILE__ . ' ' .  __LINE__ . ': ' .
-      $Prog . ": more than 1 `-m' argument: @Mparams";
+      $Prog . ": more than 1 '-m' argument: @Mparams";
     print STDERR __FILE__ . ' ' .  __LINE__ . ': ' .
       'We take the last one: ' . $last_m_arg;
   } elsif ( $nr_m_args == 1 ) {
     $last_m_arg = $Mparams[0];
   }
 
+###### make_groff_line_rest()
   my $final_m = '';
   if ( $last_m_arg ) {
     my $is_equal = 0;
@@ -1154,7 +1182,7 @@ sub make_groff_line_rest {
        'The argument is taken.';
       $final_m = $last_m_arg;
     }
-###### make_groff_line()
+###### make_groff_line_rest()
   } else {     # no -m arg provided
     if ( $nr_m_guessed > 1 ) {
       print STDERR __FILE__ . ' ' .  __LINE__ . ': ' .
@@ -1172,7 +1200,7 @@ sub make_groff_line_rest {
   push(@Command, @filespec) unless ( $file_args_included );
 
   #########
-  # execute the `groff' command here with option `--run'
+  # execute the 'groff' command here with option '--run'
   if ( $do_run ) { # with --run
     print STDERR __FILE__ . ' ' .  __LINE__ . ': ' . "@Command";
     my $cmd = join ' ', @Command;
@@ -1182,7 +1210,7 @@ sub make_groff_line_rest {
   }
 
   exit 0;
-} # make_groff_line()
+} # make_groff_line_rest()
 
 
 ########################################################################
@@ -1194,24 +1222,24 @@ sub help {
 usage: grog [option]... [--] [filespec]...
 
 "filespec" is either the name of an existing, readable file or "-" for
-standard input.  If no `filespec' is specified, standard input is
-assumed automatically.  All arguments after a `--' are regarded as file
-names, even if they start with a `-' character.
+standard input.  If no 'filespec' is specified, standard input is
+assumed automatically.  All arguments after a '--' are regarded as file
+names, even if they start with a '-' character.
 
-`option' is either a `groff' option or one of these:
+'option' is either a 'groff' option or one of these:
 
 -h|--help      print this uasge message and exit
 -v|--version   print version information and exit
 
 -C             compatibility mode
---ligatures    include options `-P-y -PU' for internal font, which
-               preserverses the ligatures like `fi'
+--ligatures    include options '-P-y -PU' for internal font, which
+               preserves the ligatures like 'fi'
 --run          run the checked-out groff command
 --warnings     display more warnings to standard error
 
-All other options should be `groff' 1-character options.  These are then
-appended to the generated `groff' command line.  The `-m' options will
-be checked by `grog'.
+All other options should be 'groff' 1-character options.  These are then
+appended to the generated 'groff' command line.  The '-m' options will
+be checked by 'grog'.
 
 EOF
   exit 0;
diff --git a/src/roff/nroff/Makefile.sub b/src/roff/nroff/Makefile.sub
deleted file mode 100644 (file)
index 2768bba..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-# Makefile.sub for `src roff nroff'
-#
-# File position: <groff-source>/src/roff/nroff/Makefile.sub
-#
-# Copyright (C) 2014  Free Software Foundation, Inc.
-#
-# This file is part of `font utf8' which is part of `groff'.
-#
-# `groff' is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 2 of the License, or
-# (at your option) any later version.
-#
-# `groff' 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
-# <http://www.gnu.org/licenses/gpl-2.0.html>.
-#
-########################################################################
-
-MAN1=nroff.n
-NAMEPREFIX=$(g)
-MOSTLYCLEANADD=nroff
-RM=rm -f
-
-all: nroff
-
-nroff: nroff.sh $(SH_DEPS_SED_SCRIPT)
-       $(RM) $@
-       sed -f $(SH_DEPS_SED_SCRIPT) \
-           -e $(SH_SCRIPT_SED_CMD) \
-           -e "s|@VERSION@|$(version)$(revision)|" $(srcdir)/nroff.sh >$@
-       chmod +x $@
-
-install_data: nroff
-       -test -d $(DESTDIR)$(bindir) || $(mkinstalldirs) $(DESTDIR)$(bindir)
-       $(RM) $(DESTDIR)$(bindir)/$(NAMEPREFIX)nroff
-       $(INSTALL_SCRIPT) nroff $(DESTDIR)$(bindir)/$(NAMEPREFIX)nroff
-
-uninstall_sub:
-       $(RM) $(DESTDIR)$(bindir)/$(NAMEPREFIX)nroff
-
-########################################################################
-# Emacs settings
-########################################################################
-#
-# Local Variables:
-# mode: makefile
-# End:
diff --git a/src/roff/nroff/nroff.1.man b/src/roff/nroff/nroff.1.man
new file mode 100644 (file)
index 0000000..ebd9f32
--- /dev/null
@@ -0,0 +1,255 @@
+.TH @G@NROFF @MAN1EXT@ "@MDATE@" "groff @VERSION@"
+.SH NAME
+@g@nroff \- use groff to format documents for TTY devices
+.
+.
+.\" ====================================================================
+.\" Legal Terms
+.\" ====================================================================
+.\"
+.\" Copyright (C) 1989-2018 Free Software Foundation, Inc.
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of
+.\" this manual under the conditions for verbatim copying, provided that
+.\" the entire resulting derived work is distributed under the terms of
+.\" a permission notice identical to this one.
+.\"
+.\" Permission is granted to copy and distribute translations of this
+.\" manual into another language, under the above conditions for
+.\" modified versions, except that this permission notice may be
+.\" included in translations approved by the Free Software Foundation
+.\" instead of in the original English.
+.
+.
+.\" ====================================================================
+.SH SYNOPSIS
+.\" ====================================================================
+.
+.SY @g@nroff
+.RB [ \-CchipStUv ]
+[\c
+.BI \-d cs\c
+]
+[\c
+.BI \-M dir\c
+]
+[\c
+.BI \-m name\c
+]
+[\c
+.BI \-n num\c
+]
+[\c
+.BI \-o list\c
+]
+[\c
+.BI \-r cn\c
+]
+[\c
+.BI \-T name\c
+]
+[\c
+.BI \-W warning\c
+]
+[\c
+.BI \-w warning\c
+]
+.RI [ file
+\&.\|.\|.\&]
+.YS
+.
+.SY @g@nroff
+.B \-\-help
+.YS
+.
+.SY @g@nroff
+.B \-v
+.SY @g@nroff
+.B \-\-version
+.YS
+.
+.\" ====================================================================
+.SH DESCRIPTION
+.\" ====================================================================
+.
+.I @g@nroff
+formats documents written in the
+.IR roff (@MAN7EXT@)
+language for typewriter-like devices such as terminal emulators.
+.
+.P
+GNU
+.I @g@nroff
+emulates the traditional Unix
+.I nroff
+command using
+.IR groff (@MAN1EXT@).
+.
+.I @g@nroff
+generates output via
+.IR grotty (@MAN1EXT@),
+.IR groff 's
+TTY output device,
+which needs to know the character encoding scheme used by the terminal.
+.
+Consequently,
+acceptable arguments to the
+.B \-T
+option are
+.BR ascii ,
+.BR latin1 ,
+.BR utf8 ,
+and
+.BR cp1047 ;
+any others are ignored.
+.
+If neither the
+.I \%GROFF_TYPESETTER
+environment variable nor the
+.B \-T
+command-line option (which overrides the environment variable)
+specifies a (valid) device,
+.I @g@nroff
+consults the locale to select an appropriate output device.
+.
+It first tries the
+.IR locale (1)
+program,
+then checks several locale-related environment variables;
+see \(lqENVIRONMENT\(rq, below.
+.
+If all of the foregoing fail,
+.B \-Tascii
+is implied.
+.
+.
+.P
+Whitespace is not permitted between an option and its argument.
+.
+The
+.B \-h
+and
+.B \-c
+options
+are equivalent to
+.IR grotty 's
+options
+.B \-h
+(using tabs in the output) and
+.B \-c
+(using the old output scheme instead of SGR escape sequences).
+.
+The
+.BR \-d ,
+.BR \-C ,
+.BR \-i ,
+.BR \-M ,
+.BR \-m ,
+.BR \-n ,
+.BR \-o ,
+.BR \-r ,
+.BR \-w ,
+and
+.B \-W
+options have the effect described in
+.IR @g@troff (@MAN1EXT@).
+.
+In addition,
+.I @g@nroff
+ignores
+.BR \-e ,
+.BR \-q ,
+and
+.B \-s
+(which are not implemented in
+.IR @g@troff ).
+.
+The options
+.B \-p
+(pic),
+.B \-t
+(tbl),
+.B \-S
+(safer), and
+.B \-U
+(unsafe) are passed to
+.IR groff .
+.
+.B \-v
+and
+.B \-\-version
+show version information,
+while
+.B \-\-help
+displays a usage message;
+all exit afterward.
+.
+.
+.\" ====================================================================
+.SH ENVIRONMENT
+.\" ====================================================================
+.
+.TP
+.I GROFF_TYPESETTER
+specifies the default output device for
+.IR groff .
+.
+.
+.TP
+.I GROFF_BIN_PATH
+is a colon-separated list of directories in which to search for the
+.I groff
+executable before searching in
+.IR PATH .
+.
+If unset,
+.I @BINDIR@
+is used.
+.
+.
+.TP
+.I LC_ALL
+.TQ
+.I LC_CTYPE
+.TQ
+.I LANG
+.TQ
+.I LESSCHARSET
+are pattern-matched in this order for standard character encodings
+supported by
+.I groff
+in the event no
+.B \-T
+option is given and
+.I GROFF_TYPESETTER
+is unset.
+.
+.
+.\" ====================================================================
+.SH NOTES
+.\" ====================================================================
+.
+Character definitions in the file
+.I @MACRODIR@/\:tty\-char.tmac
+are loaded to replace unrepresentable glyphs.
+.
+.
+.\" ====================================================================
+.SH "SEE ALSO"
+.\" ====================================================================
+.
+.IR groff (@MAN1EXT@),
+.IR @g@troff (@MAN1EXT@),
+.IR grotty (@MAN1EXT@),
+.IR locale (1),
+.IR roff (@MAN7EXT@)
+.
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" End:
+.\" vim: set filetype=groff:
diff --git a/src/roff/nroff/nroff.am b/src/roff/nroff/nroff.am
new file mode 100644 (file)
index 0000000..8f7a51b
--- /dev/null
@@ -0,0 +1,41 @@
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Latest update: 22 Aug 2015
+#
+# This file is part of groff.
+#
+# groff 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.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+
+prefixexecbin_SCRIPTS += nroff
+nroff_srcdir = $(top_srcdir)/src/roff/nroff
+PREFIXMAN1 += src/roff/nroff/nroff.1
+EXTRA_DIST += \
+  src/roff/nroff/nroff.1.man \
+  src/roff/nroff/nroff.sh
+
+nroff: $(nroff_srcdir)/nroff.sh $(SH_DEPS_SED_SCRIPT)
+       $(AM_V_GEN)rm -f $@ \
+       && sed -f $(SH_DEPS_SED_SCRIPT) \
+              -e $(SH_SCRIPT_SED_CMD) \
+              -e "s|[@]VERSION[@]|$(VERSION)|" \
+              $(nroff_srcdir)/nroff.sh \
+              >$@ \
+       && chmod +x $@
+
+
+########################################################################
+### Emacs settings
+# Local Variables:
+# mode: makefile-automake
+# End:
diff --git a/src/roff/nroff/nroff.man b/src/roff/nroff/nroff.man
deleted file mode 100644 (file)
index d746943..0000000
+++ /dev/null
@@ -1,210 +0,0 @@
-.TH @G@NROFF @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
-.SH NAME
-@g@nroff \- emulate nroff command with groff
-.
-.
-.\" --------------------------------------------------------------------
-.\" Legalese
-.\" --------------------------------------------------------------------
-.
-.de co
-Copyright \[co] 1989-2014 Free Software Foundation, Inc.
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the
-entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
-Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be included in
-translations approved by the Free Software Foundation instead of in
-the original English.
-..
-.
-.\" --------------------------------------------------------------------
-.SH SYNOPSIS
-.\" --------------------------------------------------------------------
-.
-.\" Redefine OP because no spaces are allowed after an option's argument.
-.de OP
-.  ie \\n(.$-1 \
-.    RI "[\fB\\$1\fP" "\\$2" "]"
-.  el \
-.    RB "[" "\\$1" "]"
-..
-
-.SY @g@nroff
-.OP \-CchipStUvwW
-.OP \-d cs
-.OP \-M dir
-.OP \-m name
-.OP \-n num
-.OP \-o list
-.OP \-r cn
-.OP \-T name
-.RI [ file\~ .\|.\|.]
-.
-.SY @g@nroff
-.B \-\-help
-.
-.SY @g@nroff
-.B \-v
-|
-.B \-\-version
-.YS
-.
-.\" --------------------------------------------------------------------
-.SH DESCRIPTION
-.\" --------------------------------------------------------------------
-.
-The
-.B @g@nroff
-script emulates the
-.B nroff
-command using groff.
-.
-Only
-.BR ascii ,
-.BR latin1 ,
-.BR utf8 ,
-and
-.B cp1047
-are devices accepted by
-.BR nroff
-to select the output encoding emitted by
-.BR grotty ,
-groff\[aq]s TTY output device.
-.
-If neither the
-.B GROFF_TYPESETTER
-environment variable nor the
-.B \-T
-command line option (which overrides the environment variable)
-specifies a (valid) device,
-.B @g@nroff
-checks the current locale to select a default output device.
-.
-It first tries the
-.B locale
-program, then the environment variables
-.BR LC_ALL ,
-.BR LC_CTYPE ,
-and
-.BR LANG ,
-and finally the
-.B LESSCHARSET
-environment variable.
-.
-.
-.PP
-The
-.B \-h
-and
-.B \-c
-options
-are equivalent to
-.BR grotty \[aq]s
-options
-.B \-h
-(using tabs in the output) and
-.B \-c
-(using the old output scheme instead of SGR escape sequences).
-.
-The
-.BR \-d ,
-.BR \-C ,
-.BR \-i ,
-.BR \-M ,
-.BR \-m ,
-.BR \-n ,
-.BR \-o ,
-.BR \-r ,
-.BR \-w ,
-and
-.B \-W
-options have the effect described in
-.BR @g@troff (@MAN1EXT@).
-.
-In addition,
-.B @g@nroff
-silently ignores the options
-.BR \-e ,
-.BR \-q ,
-and
-.BR \-s
-(which are not implemented in
-.BR @g@troff ).
-.
-Options
-.B \-p
-(pic),
-.B \-t
-(tbl),
-.B \-S
-(safer), and
-.B \-U
-(unsafe) are passed to
-.BR groff .
-.
-.B \-v
-and
-.B \-\-version
-show the version number,
-.B \-\-help
-prints a help message.
-.
-.
-.\" --------------------------------------------------------------------
-.SH ENVIRONMENT
-.\" --------------------------------------------------------------------
-.
-.TP
-.SM
-.B GROFF_TYPESETTER
-The default device for
-.BR groff .
-If not set (which is the normal case), it defaults to \[oq]ps\[cq].
-.
-.TP
-.SM
-.B GROFF_BIN_PATH
-A colon separated list of directories in which to search for the
-.B groff
-executable before searching in PATH.
-.
-If unset, \[oq]@BINDIR@\[cq] is used.
-.
-.
-.\" --------------------------------------------------------------------
-.SH NOTES
-.\" --------------------------------------------------------------------
-.
-This shell script is basically intended for use with
-.BR man (1).
-nroff-style character definitions (in the file tty-char.tmac) are also
-loaded to emulate unrepresentable glyphs.
-.
-.
-.\" --------------------------------------------------------------------
-.SH "SEE ALSO"
-.\" --------------------------------------------------------------------
-.
-.BR groff (@MAN1EXT@),
-.BR @g@troff (@MAN1EXT@),
-.BR grotty (@MAN1EXT@)
-.
-.
-.\" --------------------------------------------------------------------
-.SH COPYING
-.\" --------------------------------------------------------------------
-.co
-.
-.
-.\" Local Variables:
-.\" mode: nroff
-.\" End:
index fb227b3..523c453 100644 (file)
@@ -1,24 +1,24 @@
 #! /bin/sh
 # Emulate nroff with groff.
 #
-# Copyright (C) 1992-201 Free Software Foundation, Inc.
+# Copyright (C) 1992-2018 Free Software Foundation, Inc.
 #
-# Written by James Clark, maintained by Werner Lemberg.
+# Written by James Clark.
 
-# This file is of `groff'.
+# This file is of 'groff'.
 
-# `groff' is free software; you can redistribute it and/or modify it
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License (GPL) as published
 # by the Free Software Foundation, either version 3 of the License, or
 # (at your option) any later version.
 
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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 <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 prog="$0"
 
@@ -27,7 +27,7 @@ prog="$0"
 # Check the GROFF_TYPESETTER environment variable.
 Tenv=$GROFF_TYPESETTER
 
-# Try the `locale charmap' command first because it is most reliable.
+# Try the 'locale charmap' command first because it is most reliable.
 # On systems where it doesn't exist, look at the environment variables.
 case "`exec 2>/dev/null ; locale charmap`" in
   UTF-8)
@@ -59,7 +59,7 @@ case "`exec 2>/dev/null ; locale charmap`" in
     esac ;;
 esac
 
-# `for i; do' doesn't work with some versions of sh
+# 'for i; do' doesn't work with some versions of sh
 
 Topt=
 opts=
@@ -81,10 +81,10 @@ for i
     -T*)
       Topt=$1 ;;
     -u*)
-      # Solaris 2.2 through at least Solaris 9 `man' invokes
-      # `nroff -u0 ... | col -x'.  Ignore the -u0,
-      # since `less' and `more' can use the emboldening info.
-      # However, disable SGR, since Solaris `col' mishandles it.
+      # Solaris 2.2 through at least Solaris 9 'man' invokes
+      # 'nroff -u0 ... | col -x'.  Ignore the -u0,
+      # since 'less' and 'more' can use the emboldening info.
+      # However, disable SGR, since Solaris 'col' mishandles it.
       opts="$opts -P-c" ;;
     -v | --version)
       echo "GNU nroff (groff) version @VERSION@"
@@ -123,8 +123,8 @@ case $T in
     T=-T$Tloc ;;
 esac
 
-# Set up the `GROFF_BIN_PATH' variable
-# to be exported in the current `GROFF_RUNTIME' environment.
+# Set up the 'GROFF_BIN_PATH' variable
+# to be exported in the current 'GROFF_RUNTIME' environment.
 
 @GROFF_BIN_PATH_SETUP@
 export GROFF_BIN_PATH
diff --git a/src/roff/troff/Makefile.sub b/src/roff/troff/Makefile.sub
deleted file mode 100644 (file)
index b8298bf..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-# Makefile.sub for `src roff troff'
-#
-# File position: <groff-source>/src/roff/troff/Makefile.sub
-#
-# Copyright (C) 2014  Free Software Foundation, Inc.
-#
-# This file is part of `font utf8' which is part of `groff'.
-#
-# `groff' is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 2 of the License, or
-# (at your option) any later version.
-#
-# `groff' 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
-# <http://www.gnu.org/licenses/gpl-2.0.html>.
-#
-########################################################################
-
-PROG=troff$(EXEEXT)
-MAN1=troff.n
-XLIBS=$(LIBGROFF) $(LIBGNU)
-MLIB=$(LIBM)
-OBJS=\
-  dictionary.$(OBJEXT) \
-  div.$(OBJEXT) \
-  env.$(OBJEXT) \
-  input.$(OBJEXT) \
-  majorminor.$(OBJEXT) \
-  mtsm.$(OBJEXT) \
-  node.$(OBJEXT) \
-  number.$(OBJEXT) \
-  reg.$(OBJEXT)
-CCSRCS=\
-  $(srcdir)/dictionary.cpp \
-  $(srcdir)/div.cpp \
-  $(srcdir)/env.cpp \
-  $(srcdir)/input.cpp \
-  majorminor.cpp \
-  $(srcdir)/mtsm.cpp \
-  $(srcdir)/node.cpp \
-  $(srcdir)/number.cpp \
-  $(srcdir)/reg.cpp
-HDRS=\
-  $(srcdir)/charinfo.h \
-  $(srcdir)/dictionary.h \
-  $(srcdir)/div.h \
-  $(srcdir)/env.h \
-  $(srcdir)/hvunits.h \
-  $(srcdir)/input.h \
-  $(srcdir)/mtsm.h \
-  $(srcdir)/node.h \
-  $(srcdir)/reg.h \
-  $(srcdir)/request.h \
-  $(srcdir)/token.h \
-  $(srcdir)/troff.h
-GENSRCS=majorminor.cpp
-NAMEPREFIX=$(g)
-RM=rm -f
-
-majorminor.cpp: $(top_srcdir)/VERSION $(top_srcdir)/REVISION
-       @echo Making $@
-       @$(RM) $@
-       @echo const char \*major_version = \
-         \"`sed -e 's/^\([^.]*\)\..*$$/\1/' $(top_srcdir)/VERSION`\"\; >$@
-       @echo const char \*minor_version = \
-          \"`sed -e 's/^[^.]*\.\([0-9]*\).*$$/\1/' $(top_srcdir)/VERSION`\"\; \
-          >>$@
-       @echo const char \*revision = \"`cat $(top_srcdir)/REVISION`\"\; >>$@
-
-########################################################################
-# Emacs settings
-########################################################################
-#
-# Local Variables:
-# mode: makefile
-# End:
index bc4c829..630113f 100644 (file)
@@ -73,11 +73,11 @@ Request to set character slant.
 Provide some way to upcase or downcase strings.
 
 Support non-uniformly scalable fonts. Perhaps associate a suffix with
-a particular range of sizes.  eg
+a particular range of sizes.  E.g.,
   sizesuffix .display 14-512
 Then is you ask for R at pointsize 16, groff will first look for
 R.display and then R.  Probably necessary to be able to specify a
-separate unitwidth for each sizesuffix (eg. for X).
+separate unitwidth for each sizesuffix (e.g., uuu for X).
 
 Make it possible to suppress hyphenation on a word-by-word basis.
 (Perhaps store hyphenation flags in tfont.)
@@ -106,7 +106,7 @@ Request to remove an environment. (Maintain a count of the references
 to the environment from the environment table, environment dictionary
 or environment stack.)
 
-Perhaps in the nr request a leading `-' should only be recognized as a
+Perhaps in the nr request a leading '-' should only be recognized as a
 decrement when it's at the same input level as the request.
 
 Don't ever change a charinfo.  Create new variants instead and chain
@@ -121,6 +121,6 @@ More thorough range checking.
 
 Provide syntax for octal and hexadecimal numeric constants.  Perhaps
 o#100 and x#7f as per Scheme.  Or perhaps PostScript 16#7f.  Ambiguity
-between whether `c' is treated as digit or scaling indicator.
+between whether 'c' is treated as digit or scaling indicator.
 
 Local variables.
index f3cc999..38b9d75 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,12 +15,12 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include <vector>
 #include <utility>
 
-extern int class_flag; // set if there was a call to `.class'
+extern int class_flag; // set if there was a call to '.class'
 extern void get_flags();
 
 class macro;
@@ -45,7 +45,7 @@ class charinfo : glyph {
   std::vector<charinfo *> nested_classes;
 public:
   enum {               // Values for the flags bitmask.  See groff
-                       // manual, description of the `.cflags' request.
+                       // manual, description of the '.cflags' request.
     ENDS_SENTENCE = 0x01,
     BREAK_BEFORE = 0x02,
     BREAK_AFTER = 0x04,
index 20ed3f9..dd658fa 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #ifdef COLUMN
 
index 538531a..d42e2d6 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,13 +15,13 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 
 #include "troff.h"
 #include "dictionary.h"
-  
-// is `p' a good size for a hash table
+
+// is 'p' a good size for a hash table
 
 static int is_good_size(unsigned int p)
 {
index 422a58e..c5c8794 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 
 
index bf62d62..66382a8 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 
 // diversions
@@ -178,12 +178,12 @@ macro_diversion::macro_diversion(symbol s, int append)
 {
 #if 0
   if (append) {
-    /* We don't allow recursive appends eg:
+    /* We don't allow recursive appends, e.g.:
 
       .da a
       .a
       .di
-      
+
       This causes an infinite loop in troff anyway.
       This is because the user could do
 
@@ -202,9 +202,9 @@ macro_diversion::macro_diversion(symbol s, int append)
       .a
       .di
 
-       will work and will make `a' contain two copies of what it contained
-       before; in troff, `a' would contain nothing. */
-    request_or_macro *rm 
+       will work and will make 'a' contain two copies of what it contained
+       before; in troff, 'a' would contain nothing. */
+    request_or_macro *rm
       = (request_or_macro *)request_dictionary.remove(s);
     if (!rm || (mac = rm->to_macro()) == 0)
       mac = new macro;
@@ -217,7 +217,7 @@ macro_diversion::macro_diversion(symbol s, int append)
   // stored in the macro. When we detect this, we copy the contents.
   mac = new macro(1);
   if (append) {
-    request_or_macro *rm 
+    request_or_macro *rm
       = (request_or_macro *)request_dictionary.lookup(s);
     if (rm) {
       macro *m = rm->to_macro();
@@ -547,7 +547,7 @@ void top_level_diversion::print_traps()
 void end_diversions()
 {
   while (curdiv != topdiv) {
-    error("automatically ending diversion `%1' on exit",
+    error("automatically ending diversion '%1' on exit",
            curdiv->nm.contents());
     diversion *tem = curdiv;
     curdiv = curdiv->prev;
index 5861656..2dca6dd 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 void do_divert(int append, int boxing);
 void end_diversions();
index 9fbd592..c11d2df 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include "troff.h"
 #include "dictionary.h"
@@ -38,7 +38,17 @@ symbol default_family("T");
 
 enum { ADJUST_LEFT = 0, ADJUST_BOTH = 1, ADJUST_CENTER = 3, ADJUST_RIGHT = 5 };
 
-enum { HYPHEN_LAST_LINE = 2, HYPHEN_LAST_CHARS = 4, HYPHEN_FIRST_CHARS = 8 };
+enum {
+  // Not all combinations are valid; see hyphenate_request() below.
+  HYPHEN_NONE = 0,
+  HYPHEN_DEFAULT = 1,
+  HYPHEN_NOT_LAST_LINE = 2,
+  HYPHEN_NOT_LAST_CHARS = 4,
+  HYPHEN_NOT_FIRST_CHARS = 8,
+  HYPHEN_LAST_CHAR = 16,
+  HYPHEN_FIRST_CHAR = 32,
+  HYPHEN_MAX = 63,
+};
 
 struct env_list {
   environment *env;
@@ -695,7 +705,7 @@ environment::environment(symbol nm)
   if (!is_good_fontno(1))
     fatal("font number 1 not a valid font");
   if (family->make_definite(1) < 0)
-    fatal("invalid default family `%1'", default_family.contents());
+    fatal("invalid default family '%1'", default_family.contents());
   prev_fontno = fontno;
 }
 
@@ -777,7 +787,7 @@ environment::environment(const environment *e)
   suppress_next_eol(e->suppress_next_eol),
   seen_break(e->seen_break),
   tabs(e->tabs),
-  name(e->name),               // so that eg `.if "\n[.ev]"0"' works
+  name(e->name),               // so that, e.g., '.if "\n[.ev]"0"' works
   control_char(e->control_char),
   no_break_control_char(e->no_break_control_char),
   hyphen_indicator_char(e->hyphen_indicator_char)
@@ -1259,7 +1269,7 @@ void override_sizes()
        break;
       // fall through
     default:
-      warning(WARN_RANGE, "bad size range `%1'", p);
+      warning(WARN_RANGE, "bad size range '%1'", p);
       return;
     }
     if (i + 2 > n) {
@@ -1651,8 +1661,20 @@ void no_hyphenate()
 void hyphenate_request()
 {
   int n;
-  if (has_arg() && get_integer(&n))
-    curenv->hyphenation_flags = n;
+  if (has_arg() && get_integer(&n)) {
+    if (n < HYPHEN_NONE) {
+      warning(WARN_RANGE, "negative hyphenation flags ignored: %1", n);
+    } else if (n > HYPHEN_MAX) {
+      warning(WARN_RANGE, "unknown hyphenation flags ignored (maximum "
+       "%1): %2", HYPHEN_MAX, n);
+    } else if (((n & HYPHEN_DEFAULT) && (n & ~HYPHEN_DEFAULT))
+       || ((n & HYPHEN_FIRST_CHAR) && (n & HYPHEN_NOT_FIRST_CHARS))
+       || ((n & HYPHEN_LAST_CHAR) && (n & HYPHEN_NOT_LAST_CHARS)))
+      warning(WARN_SYNTAX, "contradictory hyphenation flags ignored: "
+       "%1", n);
+    else
+      curenv->hyphenation_flags = n;
+  }
   else
     curenv->hyphenation_flags = 1;
   skip_line();
@@ -1690,8 +1712,8 @@ void environment::newline()
       prev_fontno = fontno;
       fontno = pre_underline_fontno;
       if (underline_spaces) {
-        underline_spaces = 0;
-        add_node(do_underline_special(0));
+       underline_spaces = 0;
+       add_node(do_underline_special(0));
       }
     }
   }
@@ -2020,10 +2042,14 @@ void environment::hyphenate_line(int start_here)
   if (hyphenation_flags != 0
       && !inhibit
       // this may not be right if we have extra space on this line
-      && !((hyphenation_flags & HYPHEN_LAST_LINE)
+      && !((hyphenation_flags & HYPHEN_NOT_LAST_LINE)
           && (curdiv->distance_to_next_trap()
               <= vertical_spacing + total_post_vertical_spacing()))
-      && i >= 4)
+      && i >= (4
+              - (hyphenation_flags & HYPHEN_FIRST_CHAR ? 1 : 0)
+              - (hyphenation_flags & HYPHEN_LAST_CHAR ? 1 : 0)
+              + (hyphenation_flags & HYPHEN_NOT_FIRST_CHARS ? 1 : 0)
+              + (hyphenation_flags & HYPHEN_NOT_LAST_CHARS ? 1 : 0)))
     hyphenate(sl, hyphenation_flags);
   while (forward != 0) {
     node *tem1 = forward;
@@ -2227,15 +2253,15 @@ node *environment::make_tag(const char *nm, int i)
 void environment::dump_troff_state()
 {
 #define SPACES "                                            "
-  fprintf(stderr, SPACES "register `in' = %d\n", curenv->indent.to_units());
+  fprintf(stderr, SPACES "register 'in' = %d\n", curenv->indent.to_units());
   if (curenv->have_temporary_indent)
-    fprintf(stderr, SPACES "register `ti' = %d\n",
+    fprintf(stderr, SPACES "register 'ti' = %d\n",
            curenv->temporary_indent.to_units());
-  fprintf(stderr, SPACES "centered lines `ce' = %d\n", curenv->center_lines);
-  fprintf(stderr, SPACES "register `ll' = %d\n",
+  fprintf(stderr, SPACES "centered lines 'ce' = %d\n", curenv->center_lines);
+  fprintf(stderr, SPACES "register 'll' = %d\n",
          curenv->line_length.to_units());
-  fprintf(stderr, SPACES "fill `fi=1/nf=0' = %d\n", curenv->fill);
-  fprintf(stderr, SPACES "page offset `po' = %d\n",
+  fprintf(stderr, SPACES "fill 'fi=1/nf=0' = %d\n", curenv->fill);
+  fprintf(stderr, SPACES "page offset 'po' = %d\n",
          topdiv->get_page_offset().to_units());
   fprintf(stderr, SPACES "seen_break = %d\n", curenv->seen_break);
   fprintf(stderr, SPACES "seen_space = %d\n", curenv->seen_space);
@@ -2485,7 +2511,7 @@ void adjust()
          warning(WARN_RANGE, "negative adjustment mode");
        else if (n > 5) {
          curenv->adjust_mode = 5;
-         warning(WARN_RANGE, "adjustment mode `%1' out of range", n);
+         warning(WARN_RANGE, "adjustment mode '%1' out of range", n);
        }
        else
          curenv->adjust_mode = n;
@@ -2506,6 +2532,8 @@ void do_input_trap(int continued)
   curenv->input_trap_count = 0;
   if (continued)
     curenv->continued_input_trap = 1;
+  else
+    curenv->continued_input_trap = 0;
   int n;
   if (has_arg() && get_integer(&n)) {
     if (n <= 0)
@@ -2543,40 +2571,8 @@ struct tab {
   tab_type type;
   tab(hunits, tab_type);
   enum { BLOCK = 1024 };
-  static tab *free_list;
-  void *operator new(size_t);
-  void operator delete(void *);
 };
 
-tab *tab::free_list = 0;
-
-void *tab::operator new(size_t n)
-{
-  assert(n == sizeof(tab));
-  if (!free_list) {
-    free_list = (tab *)new char[sizeof(tab)*BLOCK];
-    for (int i = 0; i < BLOCK - 1; i++)
-      free_list[i].next = free_list + i + 1;
-    free_list[BLOCK-1].next = 0;
-  }
-  tab *p = free_list;
-  free_list = (tab *)(free_list->next);
-  p->next = 0;
-  return p;
-}
-
-#ifdef __GNUG__
-/* cfront can't cope with this. */
-inline
-#endif
-void tab::operator delete(void *p)
-{
-  if (p) {
-    ((tab *)p)->next = free_list;
-    free_list = (tab *)p;
-  }
-}
-
 tab::tab(hunits x, tab_type t) : next(0), pos(x), type(t)
 {
 }
@@ -3253,8 +3249,8 @@ void environment::print_env()
   errprint("  requested size: %1s\n", requested_size);
   errprint("  previous font number: %1\n", prev_fontno);
   errprint("  font number: %1\n", fontno);
-  errprint("  previous family: `%1'\n", prev_family->nm.contents());
-  errprint("  family: `%1'\n", family->nm.contents());
+  errprint("  previous family: '%1'\n", prev_family->nm.contents());
+  errprint("  family: '%1'\n", family->nm.contents());
   errprint("  space size: %1/36 em\n", space_size);
   errprint("  sentence space size: %1/36 em\n", sentence_space_size);
   errprint("  previous line interrupted: %1\n",
@@ -3294,7 +3290,7 @@ void environment::print_env()
     errprint("  underline spaces: %1\n", underline_spaces ? "yes" : "no");
   }
   if (input_trap.contents()) {
-    errprint("  input trap macro: `%1'\n", input_trap.contents());
+    errprint("  input trap macro: '%1'\n", input_trap.contents());
     errprint("  input trap line counter: %1\n", input_trap_count);
     errprint("  continued input trap: %1\n",
             continued_input_trap ? "yes" : "no");
@@ -3332,11 +3328,15 @@ void environment::print_env()
     errprint("  lines not to enumerate: %1\n", no_number_count);
   }
   string hf = hyphenation_flags ? "on" : "off";
-  if (hyphenation_flags & HYPHEN_LAST_LINE)
+  if (hyphenation_flags & HYPHEN_NOT_LAST_LINE)
     hf += ", not last line";
-  if (hyphenation_flags & HYPHEN_LAST_CHARS)
+  if (hyphenation_flags & HYPHEN_LAST_CHAR)
+    hf += ", last char";
+  if (hyphenation_flags & HYPHEN_NOT_LAST_CHARS)
     hf += ", not last two chars";
-  if (hyphenation_flags & HYPHEN_FIRST_CHARS)
+  if (hyphenation_flags & HYPHEN_FIRST_CHAR)
+    hf += ", first char";
+  if (hyphenation_flags & HYPHEN_NOT_FIRST_CHARS)
     hf += ", not first two chars";
   hf += '\0';
   errprint("  hyphenation_flags: %1\n", hf.contents());
@@ -3696,7 +3696,7 @@ void hyphen_trie::insert_pattern(const char *pat, int patlen, int *num)
 void hyphen_trie::insert_hyphenation(dictionary *ex, const char *pat,
                                     int patlen)
 {
-  char buf[WORD_MAX + 1];
+  char buf[WORD_MAX + 2];
   unsigned char pos[WORD_MAX + 2];
   int i = 0, j = 0;
   int npos = 0;
@@ -3706,6 +3706,8 @@ void hyphen_trie::insert_hyphenation(dictionary *ex, const char *pat,
       if (i > 0 && (npos == 0 || pos[npos - 1] != i))
        pos[npos++] = i;
     }
+    else if (c == ' ')
+      buf[i++] = ' ';
     else
       buf[i++] = hpf_code_table[c];
   }
@@ -3757,28 +3759,28 @@ void hyphen_trie::do_delete(void *v)
 
 /* We use very simple rules to parse TeX's hyphenation patterns.
 
-   . `%' starts a comment even if preceded by `\'.
+   . '%' starts a comment even if preceded by '\'.
 
-   . No support for digraphs and like `\$'.
+   . No support for digraphs and like '\$'.
 
-   . `^^xx' (`x' is 0-9 or a-f), and `^^x' (character code of `x' in the
-     range 0-127) are recognized; other use of `^' causes an error.
+   . '^^xx' ('x' is 0-9 or a-f), and '^^x' (character code of 'x' in the
+     range 0-127) are recognized; other use of '^' causes an error.
 
    . No macro expansion.
 
-   . We check for the expression `\patterns{...}' (possibly with
+   . We check for the expression '\patterns{...}' (possibly with
      whitespace before and after the braces).  Everything between the
-     braces is taken as hyphenation patterns.  Consequently, `{' and `}'
+     braces is taken as hyphenation patterns.  Consequently, '{' and '}'
      are not allowed in patterns.
 
-   . Similarly, `\hyphenation{...}' gives a list of hyphenation
+   . Similarly, '\hyphenation{...}' gives a list of hyphenation
      exceptions.
 
-   . `\endinput' is recognized also.
+   . '\endinput' is recognized also.
 
-   . For backwards compatibility, if `\patterns' is missing, the
+   . For backwards compatibility, if '\patterns' is missing, the
      whole file is treated as a list of hyphenation patterns (only
-     recognizing `%' as the start of a comment.
+     recognizing '%' as the start of a comment.
 
 */
 
@@ -3826,15 +3828,15 @@ void hyphen_trie::read_patterns_file(const char *name, int append,
 {
   if (!append)
     clear();
-  char buf[WORD_MAX];
-  for (int i = 0; i < WORD_MAX; i++)
+  char buf[WORD_MAX + 1];
+  for (int i = 0; i < WORD_MAX + 1; i++)
     buf[i] = 0;
-  int num[WORD_MAX+1];
+  int num[WORD_MAX + 1];
   errno = 0;
   char *path = 0;
   FILE *fp = mac_path->open_file(name, &path);
   if (fp == 0) {
-    error("can't find hyphenation patterns file `%1'", name);
+    error("can't find hyphenation patterns file '%1'", name);
     return;
   }
   int c = hpf_getc(fp);
@@ -3858,7 +3860,7 @@ void hyphen_trie::read_patterns_file(const char *name, int append,
     if (c == EOF) {
       if (have_keyword || traditional) // we are done
        break;
-      else {                           // rescan file in `traditional' mode
+      else {                           // rescan file in 'traditional' mode
        rewind(fp);
        traditional = 1;
        c = hpf_getc(fp);
@@ -3931,7 +3933,7 @@ void hyphen_trie::read_patterns_file(const char *name, int append,
       }
       else if (c == '{') {
        if (have_patterns || have_hyphenation)
-         error("`{' not allowed within %1 group",
+         error("'{' not allowed within %1 group",
                have_patterns ? "\\patterns" : "\\hyphenation");
        c = hpf_getc(fp);               // skipped if not starting \patterns
                                        // or \hyphenation
@@ -3949,13 +3951,16 @@ void hyphen_trie::read_patterns_file(const char *name, int append,
        final_pattern = 0;
       }
       else if (have_hyphenation || final_hyphenation) {
+       // hyphenation exceptions in a pattern file are subject to `.hy'
+       // restrictions; we mark such entries with a trailing space
+       buf[i++] = ' ';
        insert_hyphenation(ex, buf, i);
        final_hyphenation = 0;
       }
     }
   }
   fclose(fp);
-  a_delete path;
+  free(path);
   return;
 }
 
@@ -3977,7 +3982,8 @@ void hyphenate(hyphen_list *h, unsigned flags)
        break;
     }
     hyphen_list *nexth = tem;
-    if (len > 2) {
+    if (len >= 2) {
+      // check `.hw' entries
       buf[len] = 0;
       unsigned char *pos
        = (unsigned char *)current_language->exceptions.lookup(buf);
@@ -3991,18 +3997,61 @@ void hyphenate(hyphen_list *h, unsigned flags)
          }
       }
       else {
-       hbuf[0] = hbuf[len + 1] = '.';
-       int num[WORD_MAX + 3];
-       current_language->patterns.hyphenate(hbuf, len + 2, num);
-       int i;
-       num[2] = 0;
-       if (flags & HYPHEN_FIRST_CHARS)
-         num[3] = 0;
-       if (flags & HYPHEN_LAST_CHARS)
-         --len;
-       for (i = 2, tem = h; i < len && tem; tem = tem->next, i++)
-         if (num[i] & 1)
-           tem->hyphen = 1;
+       // check `\hyphenation' entries from pattern files;
+       // such entries are marked with a trailing space
+       buf[len] = ' ';
+       buf[len + 1] = 0;
+       pos = (unsigned char *)current_language->exceptions.lookup(buf);
+       if (pos != 0) {
+         int j = 0;
+         int i = 1;
+         tem = h;
+         if (pos[j] == i) {
+           if (flags & HYPHEN_FIRST_CHAR)
+             tem->hyphen = 1;
+           j++;
+         }
+         tem = tem->next;
+         i++;
+         if (pos[j] == i) {
+           if (!(flags & HYPHEN_NOT_FIRST_CHARS))
+             tem->hyphen = 1;
+           j++;
+         }
+         tem = tem->next;
+         i++;
+         if (!(flags & HYPHEN_LAST_CHAR))
+           --len;
+         if (flags & HYPHEN_NOT_LAST_CHARS)
+           --len;
+         for (; i < len && tem; tem = tem->next, i++)
+           if (pos[j] == i) {
+             tem->hyphen = 1;
+             j++;
+           }
+       }
+       else {
+         hbuf[0] = hbuf[len + 1] = '.';
+         int num[WORD_MAX + 3];
+         current_language->patterns.hyphenate(hbuf, len + 2, num);
+         // The position of a hyphenation point gets marked with an odd
+         // number.  Example:
+         //
+         //   hbuf:  . h e l p f u l .
+         //   num:  0 0 0 2 4 3 0 0 0 0
+         if (!(flags & HYPHEN_FIRST_CHAR))
+           num[2] = 0;
+         if (flags & HYPHEN_NOT_FIRST_CHARS)
+           num[3] = 0;
+         if (flags & HYPHEN_LAST_CHAR)
+           ++len;
+         if (flags & HYPHEN_NOT_LAST_CHARS)
+           --len;
+         int i;
+         for (i = 2, tem = h; i < len && tem; tem = tem->next, i++)
+           if (num[i] & 1)
+             tem->hyphen = 1;
+       }
       }
     }
     h = nexth;
index 484be40..c62bb86 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 class statem;
 
index 665ea9c..b2e322b 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 
 class vunits {
index 9594f07..a1bd8ea 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #define DEBUGGING
 
@@ -36,6 +36,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. */
 #include "input.h"
 #include "defs.h"
 #include "unicode.h"
+#include "curtime.h"
 
 // Needed for getpid() and isatty()
 #include "posix.h"
@@ -400,7 +401,7 @@ int file_iterator::get_location(int /*allow_macro*/,
 
 void file_iterator::backtrace()
 {
-  errprint("%1:%2: backtrace: %3 `%1'\n", filename, lineno,
+  errprint("%1:%2: backtrace: %3 '%1'\n", filename, lineno,
           popened ? "process" : "file");
 }
 
@@ -809,7 +810,7 @@ void next_file()
     errno = 0;
     FILE *fp = include_search_path.open_file_cautious(nm.contents());
     if (!fp)
-      error("can't open `%1': %2", nm.contents(), strerror(errno));
+      error("can't open '%1': %2", nm.contents(), strerror(errno));
     else
       input_stack::next_file(fp, nm.contents());
   }
@@ -1217,7 +1218,7 @@ static color *lookup_color(symbol nm)
     return &default_color;
   color *c = (color *)color_dictionary.lookup(nm);
   if (c == 0)
-    warning(WARN_COLOR, "color `%1' not defined", nm.contents());
+    warning(WARN_COLOR, "color '%1' not defined", nm.contents());
   return c;
 }
 
@@ -1282,7 +1283,7 @@ static color *read_rgb(char end = 0)
   color *col = new color;
   if (*s == '#') {
     if (!col->read_rgb(s)) {
-      warning(WARN_COLOR, "expecting rgb color definition not `%1'", s);
+      warning(WARN_COLOR, "expecting rgb color definition not '%1'", s);
       delete col;
       return 0;
     }
@@ -1311,7 +1312,7 @@ static color *read_cmy(char end = 0)
   color *col = new color;
   if (*s == '#') {
     if (!col->read_cmy(s)) {
-      warning(WARN_COLOR, "expecting cmy color definition not `%1'", s);
+      warning(WARN_COLOR, "expecting cmy color definition not '%1'", s);
       delete col;
       return 0;
     }
@@ -1340,7 +1341,7 @@ static color *read_cmyk(char end = 0)
   color *col = new color;
   if (*s == '#') {
     if (!col->read_cmyk(s)) {
-      warning(WARN_COLOR, "`expecting a cmyk color definition not `%1'", s);
+      warning(WARN_COLOR, "expecting a cmyk color definition not '%1'", s);
       delete col;
       return 0;
     }
@@ -1370,7 +1371,7 @@ static color *read_gray(char end = 0)
   color *col = new color;
   if (*s == '#') {
     if (!col->read_gray(s)) {
-      warning(WARN_COLOR, "`expecting a gray definition not `%1'", s);
+      warning(WARN_COLOR, "expecting a gray definition not '%1'", s);
       delete col;
       return 0;
     }
@@ -1426,7 +1427,7 @@ static void define_color()
     col = read_cmy();
   else {
     warning(WARN_COLOR,
-           "unknown color space `%1'; use rgb, cmyk, gray or cmy",
+           "unknown color space '%1'; use rgb, cmyk, gray or cmy",
            style.contents());
     skip_line();
     return;
@@ -2351,7 +2352,7 @@ int token::delimiter(int err)
     case ')':
     case '.':
       if (err)
-       error("cannot use character `%1' as a starting delimiter", char(c));
+        error("cannot use character '%1' as a starting delimiter", char(c));
       return 0;
     default:
       return 1;
@@ -2382,55 +2383,55 @@ const char *token::description()
   case TOKEN_BACKSPACE:
     return "a backspace character";
   case TOKEN_CHAR:
-    buf[0] = '`';
+    buf[0] = '\'';
     buf[1] = c;
     buf[2] = '\'';
     buf[3] = '\0';
     return buf;
   case TOKEN_DUMMY:
-    return "`\\&'";
+    return "'\\&'";
   case TOKEN_ESCAPE:
-    return "`\\e'";
+    return "'\\e'";
   case TOKEN_HYPHEN_INDICATOR:
-    return "`\\%'";
+    return "'\\%'";
   case TOKEN_INTERRUPT:
-    return "`\\c'";
+    return "'\\c'";
   case TOKEN_ITALIC_CORRECTION:
-    return "`\\/'";
+    return "'\\/'";
   case TOKEN_LEADER:
     return "a leader character";
   case TOKEN_LEFT_BRACE:
-    return "`\\{'";
+    return "'\\{'";
   case TOKEN_MARK_INPUT:
-    return "`\\k'";
+    return "'\\k'";
   case TOKEN_NEWLINE:
     return "newline";
   case TOKEN_NODE:
     return "a node";
   case TOKEN_NUMBERED_CHAR:
-    return "`\\N'";
+    return "'\\N'";
   case TOKEN_RIGHT_BRACE:
-    return "`\\}'";
+    return "'\\}'";
   case TOKEN_SPACE:
     return "a space";
   case TOKEN_SPECIAL:
     return "a special character";
   case TOKEN_SPREAD:
-    return "`\\p'";
+    return "'\\p'";
   case TOKEN_STRETCHABLE_SPACE:
-    return "`\\~'";
+    return "'\\~'";
   case TOKEN_UNSTRETCHABLE_SPACE:
-    return "`\\ '";
+    return "'\\ '";
   case TOKEN_HORIZONTAL_SPACE:
     return "a horizontal space";
   case TOKEN_TAB:
     return "a tab character";
   case TOKEN_TRANSPARENT:
-    return "`\\!'";
+    return "'\\!'";
   case TOKEN_TRANSPARENT_DUMMY:
-    return "`\\)'";
+    return "'\\)'";
   case TOKEN_ZERO_WIDTH_BREAK:
-    return "`\\:'";
+    return "'\\:'";
   case TOKEN_EOF:
     return "end of input";
   default:
@@ -2690,7 +2691,7 @@ static int transparent_translate(int cc)
       int c = ci->get_ascii_code();
       if (c != '\0')
        return c;
-      error("can't translate %1 to special character `%2'"
+      error("can't translate %1 to special character '%2'"
            " in transparent throughput",
            input_char_description(cc),
            ci->nm.contents());
@@ -3573,7 +3574,7 @@ void string_iterator::backtrace()
     errprint("%1:%2: backtrace", mac.filename, mac.lineno + lineno - 1);
     if (how_invoked) {
       if (!nm.is_null())
-       errprint(": %1 `%2'\n", how_invoked, nm.contents());
+       errprint(": %1 '%2'\n", how_invoked, nm.contents());
       else
        errprint(": %1\n", how_invoked);
     }
@@ -3596,7 +3597,8 @@ inline
 temp_iterator::temp_iterator(const char *s, int len)
 {
   base = new unsigned char[len];
-  memcpy(base, s, len);
+  if (len > 0)
+    memcpy(base, s, len);
   ptr = base;
   eptr = base + len;
 }
@@ -3606,73 +3608,14 @@ temp_iterator::~temp_iterator()
   a_delete base;
 }
 
-class small_temp_iterator : public input_iterator {
-private:
-  small_temp_iterator(const char *, int);
-  ~small_temp_iterator();
-  enum { BLOCK = 16 };
-  static small_temp_iterator *free_list;
-  void *operator new(size_t);
-  void operator delete(void *);
-  enum { SIZE = 12 };
-  unsigned char buf[SIZE];
-  friend input_iterator *make_temp_iterator(const char *);
-};
-
-small_temp_iterator *small_temp_iterator::free_list = 0;
-
-void *small_temp_iterator::operator new(size_t n)
-{
-  assert(n == sizeof(small_temp_iterator));
-  if (!free_list) {
-    free_list =
-      (small_temp_iterator *)new char[sizeof(small_temp_iterator)*BLOCK];
-    for (int i = 0; i < BLOCK - 1; i++)
-      free_list[i].next = free_list + i + 1;
-    free_list[BLOCK-1].next = 0;
-  }
-  small_temp_iterator *p = free_list;
-  free_list = (small_temp_iterator *)(free_list->next);
-  p->next = 0;
-  return p;
-}
-
-#ifdef __GNUG__
-inline
-#endif
-void small_temp_iterator::operator delete(void *p)
-{
-  if (p) {
-    ((small_temp_iterator *)p)->next = free_list;
-    free_list = (small_temp_iterator *)p;
-  }
-}
-
-small_temp_iterator::~small_temp_iterator()
-{
-}
-
-#ifdef __GNUG__
-inline
-#endif
-small_temp_iterator::small_temp_iterator(const char *s, int len)
-{
-  for (int i = 0; i < len; i++)
-    buf[i] = s[i];
-  ptr = buf;
-  eptr = buf + len;
-}
 
 input_iterator *make_temp_iterator(const char *s)
 {
   if (s == 0)
-    return new small_temp_iterator(s, 0);
+    return new temp_iterator(s, 0);
   else {
     int n = strlen(s);
-    if (n <= small_temp_iterator::SIZE)
-      return new small_temp_iterator(s, n);
-    else
-      return new temp_iterator(s, n);
+    return new temp_iterator(s, n);
   }
 }
 
@@ -3790,7 +3733,7 @@ void macro_iterator::shift(int n)
   }
 }
 
-// This gets used by eg .if '\?xxx\?''.
+// This gets used by, e.g., .if '\?xxx\?''.
 
 int operator==(const macro &m1, const macro &m2)
 {
@@ -3843,13 +3786,13 @@ static void interpolate_macro(symbol nm, int no_next)
        macro *m = r->to_macro();
        if (!m || !m->empty())
          warned = warning(WARN_SPACE,
-                          "macro `%1' not defined "
-                          "(possibly missing space after `%2')",
+                          "macro '%1' not defined "
+                          "(possibly missing space after '%2')",
                           nm.contents(), buf);
       }
     }
     if (!warned) {
-      warning(WARN_MAC, "macro `%1' not defined", nm.contents());
+      warning(WARN_MAC, "macro '%1' not defined", nm.contents());
       p = new macro;
       request_dictionary.define(nm, p);
     }
@@ -3922,7 +3865,7 @@ static void decode_string_args(macro_iterator *mi)
     while (c == ' ')
       c = get_copy(&n);
     if (c == '\n' || c == EOF) {
-      error("missing `]'");
+      error("missing ']'");
       break;
     }
     if (c == ']')
@@ -4021,7 +3964,7 @@ void composite_request()
     if (!from_gn) {
       from_gn = check_unicode_name(from.contents());
       if (!from_gn) {
-       error("invalid composite glyph name `%1'", from.contents());
+       error("invalid composite glyph name '%1'", from.contents());
        skip_line();
        return;
       }
@@ -4037,7 +3980,7 @@ void composite_request()
       if (!to_gn) {
        to_gn = check_unicode_name(to.contents());
        if (!to_gn) {
-         error("invalid composite glyph name `%1'", to.contents());
+         error("invalid composite glyph name '%1'", to.contents());
          skip_line();
          return;
        }
@@ -4063,7 +4006,7 @@ static symbol composite_glyph_name(symbol nm)
   if (!gn) {
     gn = check_unicode_name(nm.contents());
     if (!gn) {
-      error("invalid base glyph `%1' in composite glyph name", nm.contents());
+      error("invalid base glyph '%1' in composite glyph name", nm.contents());
       return EMPTY_SYMBOL;
     }
   }
@@ -4084,7 +4027,7 @@ static symbol composite_glyph_name(symbol nm)
     if (!u) {
       u = check_unicode_name(gl.contents());
       if (!u) {
-       error("invalid component `%1' in composite glyph name",
+       error("invalid component '%1' in composite glyph name",
              gl.contents());
        return EMPTY_SYMBOL;
       }
@@ -4460,7 +4403,7 @@ static void interpolate_arg(symbol nm)
     for (p = s; *p && csdigit(*p); p++)
       ;
     if (*p)
-      copy_mode_error("bad argument name `%1'", s);
+      copy_mode_error("bad argument name '%1'", s);
     else
       input_stack::push(input_stack::get_arg(atoi(s)));
   }
@@ -4622,10 +4565,10 @@ void do_define_macro(define_mode mode, calling_mode calling, comp_mode comp)
       if (mode == DEFINE_NORMAL || mode == DEFINE_APPEND) {
        if (have_start_location)
          error_with_file_and_line(start_filename, start_lineno,
-                                  "end of file while defining macro `%1'",
+                                  "end of file while defining macro '%1'",
                                   nm.contents());
        else
-         error("end of file while defining macro `%1'", nm.contents());
+         error("end of file while defining macro '%1'", nm.contents());
       }
       else {
        if (have_start_location)
@@ -4728,7 +4671,7 @@ void alias_macro()
     symbol s2 = get_name(1);
     if (!s2.is_null()) {
       if (!request_dictionary.alias(s1, s2))
-       warning(WARN_MAC, "macro `%1' not defined", s2.contents());
+       warning(WARN_MAC, "macro '%1' not defined", s2.contents());
     }
   }
   skip_line();
@@ -4782,7 +4725,7 @@ void substring_request()
     request_or_macro *p = lookup_request(s);
     macro *m = p->to_macro();
     if (!m)
-      error("cannot apply `substring' on a request");
+      error("cannot apply 'substring' on a request");
     else {
       int end = -1;
       if (!has_arg() || get_integer(&end)) {
@@ -5106,7 +5049,7 @@ static int read_size(int *x)
       return 0;
     if (!(start.ch() == '[' && tok.ch() == ']') && start != tok) {
       if (start.ch() == '[')
-       error("missing `]'");
+       error("missing ']'");
       else
        error("missing closing delimiter");
       return 0;
@@ -5572,7 +5515,7 @@ static node *do_suppress(symbol nm)
     }
     break;
   default:
-    error("`%1' is an invalid argument to \\O", *s);
+    error("'%1' is an invalid argument to \\O", *s);
   }
   return 0;
 }
@@ -5627,7 +5570,7 @@ static void troff_request()
 static void skip_alternative()
 {
   int level = 0;
-  // ensure that ``.if 0\{'' works as expected
+  // ensure that ".if 0\{" works as expected
   if (tok.left_brace())
     level++;
   int c;
@@ -5652,7 +5595,7 @@ static void skip_alternative()
          ;
       }
     /*
-      Note that the level can properly be < 0, eg
+      Note that the level can properly be < 0, e.g.
        
        .if 1 \{\
        .if 0 \{\
@@ -5944,7 +5887,7 @@ void source()
     if (fp)
       input_stack::push(new file_iterator(fp, nm.contents()));
     else
-      error("can't open `%1': %2", nm.contents(), strerror(errno));
+      error("can't open '%1': %2", nm.contents(), strerror(errno));
     tok.next();
   }
 }
@@ -5991,7 +5934,7 @@ void pipe_source()
       if (fp)
        input_stack::push(new file_iterator(fp, symbol(buf).contents(), 1));
       else
-       error("can't open pipe to process `%1': %2", buf, strerror(errno));
+       error("can't open pipe to process '%1': %2", buf, strerror(errno));
       a_delete buf;
     }
     tok.next();
@@ -6094,7 +6037,7 @@ filename(fname), llx(0), lly(0), urx(0), ury(0), lastc(EOF)
       // ...except in the case of an empty file, which we are
       // unable to process further.
       //
-      error("`%1' is empty", filename);
+      error("'%1' is empty", filename);
 
 # if 0
     else if (context_args("%PDF-")) {
@@ -6136,7 +6079,7 @@ filename(fname), llx(0), lly(0), urx(0), ury(0), lastc(EOF)
                  // ...we must ensure it is not a further attempt to defer
                  // assignment to a trailer, (which we are already parsing).
                  //
-                 error("`(atend)' not allowed in trailer of `%1'", filename);
+                 error("'(atend)' not allowed in trailer of '%1'", filename);
              }
            }
            else
@@ -6151,7 +6094,7 @@ filename(fname), llx(0), lly(0), urx(0), ury(0), lastc(EOF)
            // we were unable to extract a valid set of range values from
            // it; all we can do is diagnose this.
            //
-           error("the arguments to the %%%%BoundingBox comment in `%1' are bad",
+           error("the arguments to the %%%%BoundingBox comment in '%1' are bad",
                  filename);
          }
        }
@@ -6161,13 +6104,13 @@ filename(fname), llx(0), lly(0), urx(0), ury(0), lastc(EOF)
        // Conversely, this arises when no value specifying %%BoundingBox
        // comment has been found, in any appropriate location...
        //
-       error("%%%%BoundingBox comment not found in `%1'", filename);
+       error("%%%%BoundingBox comment not found in '%1'", filename);
     }
     else
       // ...while this indicates that there was no appropriate file format
       // identifier, on the first line of the input file.
       //
-      error("`%1' does not conform to the Document Structuring Conventions",
+      error("'%1' does not conform to the Document Structuring Conventions",
            filename);
 
     // Regardless of success or failure of bounding box property acquisition,
@@ -6178,7 +6121,7 @@ filename(fname), llx(0), lly(0), urx(0), ury(0), lastc(EOF)
   else
     // ...but in this case, we did not successfully open any input file.
     //
-    error("can't open `%1': %2", filename, strerror(errno));
+    error("can't open '%1': %2", filename, strerror(errno));
 
   // Irrespective of whether or not we were able to successfully acquire the
   // bounding box properties, we ALWAYS update the associated gtroff registers.
@@ -6264,7 +6207,7 @@ int psbb_locator::get_line(int dscopt)
        //
        // ...rejecting any which may be designated as invalid.
        //
-       error("invalid input character code %1 in `%2'", int(c), filename);
+       error("invalid input character code %1 in '%2'", int(c), filename);
 
       // On reading a valid input character, and when there is
       // room in caller's buffer...
@@ -6283,7 +6226,7 @@ int psbb_locator::get_line(int dscopt)
        // ...diagnose and truncate.
        //
        dscopt = DSC_LINE_MAX_CHECKED;
-       error("PostScript file `%1' is non-conforming "
+       error("PostScript file '%1' is non-conforming "
              "because length of line exceeds 255", filename);
       }
     }
@@ -6330,16 +6273,16 @@ inline const char *psbb_locator::context_args(const char *tag)
 //
 // Inputs:
 //   tag   literal text to be matched at start of buffer
-//   buf   pointer to text to be checked for "tag" match
+//   p     pointer to text to be checked for "tag" match
 //
 // Returns a pointer to the trailing substring of the specified
 // text buffer, following an initial substring matching the "tag"
 // argument, or NULL if "tag" is not matched.
 //
-inline const char *psbb_locator::context_args(const char *tag, const char *buf)
+inline const char *psbb_locator::context_args(const char *tag, const char *p)
 {
   size_t len = strlen(tag);
-  return (strncmp(tag, buf, len) == 0) ? buf + len : NULL;
+  return (strncmp(tag, p, len) == 0) ? p + len : NULL;
 }
 
 // psbb_locator::bounding_box_args()
@@ -6380,7 +6323,7 @@ inline bool psbb_locator::get_header_comment(void)
     //
     get_line(DSC_LINE_MAX_ENFORCE) != 0
 
-    // In header comments, `%X' (`X' any printable character
+    // In header comments, '%X' ('X' any printable character
     // except whitespace) is also acceptable.
     //
     && (buf[0] == '%') && !white_space(buf[1])
@@ -6572,7 +6515,7 @@ const char *input_char_description(int c)
   if (invalid_input_char(c)) {
     const char *s = asciify(c);
     if (*s) {
-      buf[0] = '`';
+      buf[0] = '\'';
       strcpy(buf + 1, s);
       strcat(buf, "'");
       return buf;
@@ -6581,7 +6524,7 @@ const char *input_char_description(int c)
     return buf;
   }
   if (csprint(c)) {
-    buf[0] = '`';
+    buf[0] = '\'';
     buf[1] = c;
     buf[2] = '\'';
     return buf;
@@ -6686,7 +6629,7 @@ void do_open(int append)
       errno = 0;
       FILE *fp = fopen(filename.contents(), append ? "a" : "w");
       if (!fp) {
-       error("can't open `%1' for %2: %3",
+       error("can't open '%1' for %2: %3",
              filename.contents(),
              append ? "appending" : "writing",
              strerror(errno));
@@ -6727,7 +6670,7 @@ void close_request()
   if (!stream.is_null()) {
     FILE *fp = (FILE *)stream_dictionary.remove(stream);
     if (!fp)
-      error("no stream named `%1'", stream.contents());
+      error("no stream named '%1'", stream.contents());
     else
       fclose(fp);
   }
@@ -6745,7 +6688,7 @@ void do_write_request(int newline)
   }
   FILE *fp = (FILE *)stream_dictionary.lookup(stream);
   if (!fp) {
-    error("no stream named `%1'", stream.contents());
+    error("no stream named '%1'", stream.contents());
     skip_line();
     return;
   }
@@ -6781,7 +6724,7 @@ void write_macro_request()
   }
   FILE *fp = (FILE *)stream_dictionary.lookup(stream);
   if (!fp) {
-    error("no stream named `%1'", stream.contents());
+    error("no stream named '%1'", stream.contents());
     skip_line();
     return;
   }
@@ -6823,7 +6766,7 @@ void warnscale_request()
       warn_scale = (double)units_per_inch / 6.0;
     else {
       warning(WARN_SCALE,
-             "invalid scaling indicator `%1', using `i' instead", c);
+             "invalid scaling indicator '%1', using 'i' instead", c);
       c = 'i';
     }
     warn_scaling_indicator = c;
@@ -7042,7 +6985,7 @@ void define_class()
       child2 = tok.get_char(1);
       if (!child2) {
        warning(WARN_MISSING,
-               "missing end of character range in class `%1'",
+               "missing end of character range in class '%1'",
                nm.contents());
        skip_line();
        return;
@@ -7083,7 +7026,7 @@ void define_class()
        int u1 = child1->get_unicode_code();
        if (u1 < 0) {
          warning(WARN_SYNTAX,
-                 "invalid character value in class `%1'",
+                 "invalid character value in class '%1'",
                  nm.contents());
          skip_line();
          return;
@@ -7113,7 +7056,7 @@ void define_class()
       int u1 = child1->get_unicode_code();
       if (u1 < 0) {
        warning(WARN_SYNTAX,
-               "invalid character value in class `%1'",
+               "invalid character value in class '%1'",
                nm.contents());
        skip_line();
        return;
@@ -7124,7 +7067,7 @@ void define_class()
   }
   if (!ci->is_class()) {
     warning(WARN_SYNTAX,
-           "empty class definition for `%1'",
+           "empty class definition for '%1'",
            nm.contents());
     skip_line();
     return;
@@ -7145,7 +7088,7 @@ charinfo *token::get_char(int required)
     if (escape_char != 0)
       return charset_table[escape_char];
     else {
-      error("`\\e' used while no current escape character");
+      error("'\\e' used while no current escape character");
       return 0;
     }
   }
@@ -7603,7 +7546,7 @@ void transparent_file()
     errno = 0;
     FILE *fp = include_search_path.open_file_cautious(filename.contents());
     if (!fp)
-      error("can't open `%1': %2", filename.contents(), strerror(errno));
+      error("can't open '%1': %2", filename.contents(), strerror(errno));
     else {
       int bol = 1;
       for (;;) {
@@ -7758,19 +7701,20 @@ void macro_source()
     // FOOBAR.tmac and vice versa
     if (!fp) {
       const char *fn = nm.contents();
+      size_t fnlen = strlen(fn);
       if (strncasecmp(fn, MACRO_PREFIX, sizeof(MACRO_PREFIX) - 1) == 0) {
-       char *s = new char[strlen(fn) + sizeof(MACRO_POSTFIX)];
+       char *s = new char[fnlen + sizeof(MACRO_POSTFIX)];
        strcpy(s, fn + sizeof(MACRO_PREFIX) - 1);
        strcat(s, MACRO_POSTFIX);
        fp = mac_path->open_file(s, &path);
        a_delete s;
       }
       if (!fp) {
-       if (strncasecmp(fn + strlen(fn) - sizeof(MACRO_POSTFIX) + 1,
+       if (strncasecmp(fn + fnlen - sizeof(MACRO_POSTFIX) + 1,
                        MACRO_POSTFIX, sizeof(MACRO_POSTFIX) - 1) == 0) {
-         char *s = new char[strlen(fn) + sizeof(MACRO_PREFIX)];
+         char *s = new char[fnlen + sizeof(MACRO_PREFIX)];
          strcpy(s, MACRO_PREFIX);
-         strncat(s, fn, strlen(fn) - sizeof(MACRO_POSTFIX) + 1);
+         strncat(s, fn, fnlen - sizeof(MACRO_POSTFIX) + 1);
          fp = mac_path->open_file(s, &path);
          a_delete s;
        }
@@ -7781,7 +7725,7 @@ void macro_source()
       a_delete path;
     }
     else
-      warning(WARN_FILE, "can't find macro file `%1'", nm.contents());
+      warning(WARN_FILE, "can't find macro file '%1'", nm.contents());
     tok.next();
   }
 }
@@ -7797,7 +7741,7 @@ static void process_input_file(const char *name)
     errno = 0;
     fp = include_search_path.open_file_cautious(name);
     if (!fp)
-      fatal("can't open `%1': %2", name, strerror(errno));
+      fatal("can't open '%1': %2", name, strerror(errno));
   }
   input_stack::push(new file_iterator(fp, name));
   tok.next();
@@ -8005,13 +7949,13 @@ int main(int argc, char **argv)
       break;
     case 'd':
       if (*optarg == '\0')
-       error("`-d' requires non-empty argument");
+       error("'-d' requires non-empty argument");
       else
        add_string(optarg, &string_assignments);
       break;
     case 'r':
       if (*optarg == '\0')
-       error("`-r' requires non-empty argument");
+       error("'-r' requires non-empty argument");
       else
        add_string(optarg, &register_assignments);
       break;
@@ -8138,7 +8082,7 @@ static void init_registers()
 #else /* not LONG_FOR_TIME_T */
   time_t
 #endif /* not LONG_FOR_TIME_T */
-    t = time(0);
+    t = current_time();
   // Use struct here to work around misfeature in old versions of g++.
   struct tm *tt = localtime(&t);
   set_number_reg("seconds", int(tt->tm_sec));
@@ -8342,7 +8286,7 @@ static request_or_macro *lookup_request(symbol nm)
   assert(!nm.is_null());
   request_or_macro *p = (request_or_macro *)request_dictionary.lookup(nm);
   if (p == 0) {
-    warning(WARN_MAC, "macro `%1' not defined", nm.contents());
+    warning(WARN_MAC, "macro '%1' not defined", nm.contents());
     p = new macro;
     request_dictionary.define(nm, p);
   }
@@ -8591,7 +8535,7 @@ static void enable_warning(const char *name)
   if (mask)
     warning_mask |= mask;
   else
-    error("unknown warning `%1'", name);
+    error("unknown warning '%1'", name);
 }
 
 static void disable_warning(const char *name)
@@ -8600,7 +8544,7 @@ static void disable_warning(const char *name)
   if (mask)
     warning_mask &= ~mask;
   else
-    error("unknown warning `%1'", name);
+    error("unknown warning '%1'", name);
 }
 
 static void copy_mode_error(const char *format,
@@ -8637,7 +8581,10 @@ static void do_error(error_type type,
   if (!get_file_line(&filename, &lineno))
     filename = 0;
   if (filename)
-    errprint("%1:%2: ", filename, lineno);
+    if (program_name)
+      errprint("%1: %2:%3: ", program_name, filename, lineno);
+    else
+      errprint("%1:%2: ", filename, lineno);
   else if (program_name)
     fprintf(stderr, "%s: ", program_name);
   switch (type) {
@@ -8656,7 +8603,7 @@ static void do_error(error_type type,
     if (topdiv != curdiv) {
       double fromtop1 = curdiv->get_vertical_position().to_units()
                        / warn_scale;
-      fprintf(stderr, ", div `%s', %.1f%c",
+      fprintf(stderr, ", div '%s', %.1f%c",
              curdiv->get_diversion_name(), fromtop1, warn_scaling_indicator);
     }
     fprintf(stderr, "]: ");
@@ -8956,9 +8903,9 @@ charinfo *get_charinfo_by_number(int n)
 }
 
 // This overrides the same function from libgroff; while reading font
-// definition files it puts single-letter glyph names into `charset_table'
-// and converts glyph names of the form `\x' (`x' a single letter) into `x'. 
-// Consequently, symbol("x") refers to glyph name `\x', not `x'.
+// definition files it puts single-letter glyph names into 'charset_table'
+// and converts glyph names of the form '\x' ('x' a single letter) into 'x'.
+// Consequently, symbol("x") refers to glyph name '\x', not 'x'.
 
 glyph *name_to_glyph(const char *nm)
 {
index 76b2b56..b74394e 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 2001-201 Free Software Foundation, Inc.
+/* Copyright (C) 2001-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 
 /* special character codes */
index 0fd2d33..3ac1b16 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 2003-201 Free Software Foundation, Inc.
+/* Copyright (C) 2003-2018 Free Software Foundation, Inc.
      Written by Gaius Mulley (gaius@glam.ac.uk)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #define DEBUGGING
 
@@ -366,7 +366,7 @@ mtsm::~mtsm()
 }
 
 /*
- *  push_state - push the current troff state and use `n' as
+ *  push_state - push the current troff state and use 'n' as
  *               the new troff state.
  */
 
@@ -374,8 +374,10 @@ void mtsm::push_state(statem *n)
 {
   if (is_html) {
 #if defined(DEBUGGING)
-    if (debug_state)
-      fprintf(stderr, "--> state %d pushed\n", n->issue_no) ; fflush(stderr);
+    if (debug_state) {
+      fprintf(stderr, "--> state %d pushed\n", n->issue_no);
+      fflush(stderr);
+    }
 #endif
     sp = new stack(n, sp);
   }
@@ -385,8 +387,10 @@ void mtsm::pop_state()
 {
   if (is_html) {
 #if defined(DEBUGGING)
-    if (debug_state)
-      fprintf(stderr, "--> state popped\n") ; fflush(stderr);
+    if (debug_state) {
+      fprintf(stderr, "--> state popped\n");
+      fflush(stderr);
+    }
 #endif
     if (sp == 0)
       fatal("empty state machine stack");
index 11722d3..35200b8 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 2003-2014 Free Software Foundation, Inc.
+/* Copyright (C) 2003-2018 Free Software Foundation, Inc.
  *
  *  mtsm.h
  *
@@ -23,7 +23,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 struct int_value {
   int value;
index 3eca523..27311b1 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 extern int debug_state;
 
@@ -1176,7 +1176,7 @@ void troff_output_file::put_char(charinfo *ci, tfont *tf,
   }
 }
 
-// set_font calls `flush_tbuf' if necessary.
+// set_font calls 'flush_tbuf' if necessary.
 
 void troff_output_file::set_font(tfont *tf)
 {
@@ -1241,7 +1241,7 @@ void troff_output_file::set_font(tfont *tf)
   current_tfont = tf;
 }
 
-// fill_color calls `flush_tbuf' and `do_motion' if necessary.
+// fill_color calls 'flush_tbuf' and 'do_motion' if necessary.
 
 void troff_output_file::fill_color(color *col)
 {
@@ -1294,7 +1294,7 @@ void troff_output_file::fill_color(color *col)
   put('\n');
 }
 
-// glyph_color calls `flush_tbuf' and `do_motion' if necessary.
+// glyph_color calls 'flush_tbuf' and 'do_motion' if necessary.
 
 void troff_output_file::glyph_color(color *col)
 {
@@ -1552,7 +1552,7 @@ void troff_output_file::really_copy_file(hunits x, vunits y,
   errno = 0;
   FILE *ifp = include_search_path.open_file_cautious(filename);
   if (ifp == 0)
-    error("can't open `%1': %2", filename, strerror(errno));
+    error("can't open '%1': %2", filename, strerror(errno));
   else {
     int c;
     while ((c = getc(ifp)) != EOF)
@@ -1668,13 +1668,13 @@ real_output_file::~real_output_file()
     if (result < 0)
       fatal("pclose failed");
     if (!WIFEXITED(result))
-      error("output process `%1' got fatal signal %2",
+      error("output process '%1' got fatal signal %2",
            pipe_command,
            WIFSIGNALED(result) ? WTERMSIG(result) : WSTOPSIG(result));
     else {
       int exit_status = WEXITSTATUS(result);
       if (exit_status != 0)
-       error("output process `%1' exited with status %2",
+       error("output process '%1' exited with status %2",
              pipe_command, exit_status);
     }
   }
@@ -1847,7 +1847,6 @@ int charinfo_node::overlaps_vertically()
 }
 
 class glyph_node : public charinfo_node {
-  static glyph_node *free_list;
 protected:
   tfont *tf;
   color *gcol;
@@ -1858,8 +1857,6 @@ protected:
             statem *, int, node * = 0);
 #endif
 public:
-  void *operator new(size_t);
-  void operator delete(void *);
   glyph_node(charinfo *, tfont *, color *, color *,
             statem *, int, node * = 0);
   ~glyph_node() {}
@@ -1892,8 +1889,6 @@ public:
   void debug_node();
 };
 
-glyph_node *glyph_node::free_list = 0;
-
 class ligature_node : public glyph_node {
   node *n1;
   node *n2;
@@ -1975,35 +1970,11 @@ public:
   int is_tag();
 };
 
-void *glyph_node::operator new(size_t n)
-{
-  assert(n == sizeof(glyph_node));
-  if (!free_list) {
-    const int BLOCK = 1024;
-    free_list = (glyph_node *)new char[sizeof(glyph_node)*BLOCK];
-    for (int i = 0; i < BLOCK - 1; i++)
-      free_list[i].next = free_list + i + 1;
-    free_list[BLOCK-1].next = 0;
-  }
-  glyph_node *p = free_list;
-  free_list = (glyph_node *)(free_list->next);
-  p->next = 0;
-  return p;
-}
-
 void *ligature_node::operator new(size_t n)
 {
   return new char[n];
 }
 
-void glyph_node::operator delete(void *p)
-{
-  if (p) {
-    ((glyph_node *)p)->next = free_list;
-    free_list = (glyph_node *)p;
-  }
-}
-
 void ligature_node::operator delete(void *p)
 {
   delete[] (char *)p;
@@ -3195,32 +3166,6 @@ int node::merge_space(hunits, hunits, hunits)
   return 0;
 }
 
-#if 0
-space_node *space_node::free_list = 0;
-
-void *space_node::operator new(size_t n)
-{
-  assert(n == sizeof(space_node));
-  if (!free_list) {
-    free_list = (space_node *)new char[sizeof(space_node)*BLOCK];
-    for (int i = 0; i < BLOCK - 1; i++)
-      free_list[i].next = free_list + i + 1;
-    free_list[BLOCK-1].next = 0;
-  }
-  space_node *p = free_list;
-  free_list = (space_node *)(free_list->next);
-  p->next = 0;
-  return p;
-}
-
-inline void space_node::operator delete(void *p)
-{
-  if (p) {
-    ((space_node *)p)->next = free_list;
-    free_list = (space_node *)p;
-  }
-}
-#endif
 
 space_node::space_node(hunits nn, color *c, node *p)
 : node(p, 0, 0), n(nn), set(0), was_escape_colon(0), col(c)
@@ -4071,7 +4016,7 @@ int get_reg_int(const char *p)
   if (r && (r->get_value(&prev_value)))
     return (int)prev_value;
   else
-    warning(WARN_REG, "number register `%1' not defined", p);
+    warning(WARN_REG, "number register '%1' not defined", p);
   return 0;
 }
 
@@ -4081,7 +4026,7 @@ const char *get_reg_str(const char *p)
   if (r)
     return r->get_string();
   else
-    warning(WARN_REG, "register `%1' not defined", p);
+    warning(WARN_REG, "register '%1' not defined", p);
   return 0;
 }
 
@@ -4135,7 +4080,7 @@ void suppress_node::tprint(troff_output_file *out)
     char *tem = (char *)last_image_filename;
     last_image_filename = strsave(filename.contents());
     if (tem)
-      a_delete tem;
+      free(tem);
     last_image_id = image_id;
     // printf("start of image and page = %d\n", current_page);
   }
@@ -4968,7 +4913,7 @@ node *make_glyph_node(charinfo *s, environment *env, int no_error_message = 0)
        unsigned char input_code = s->get_ascii_code();
        if (input_code != 0) {
          if (csgraph(input_code))
-           warning(WARN_CHAR, "can't find character `%1'", input_code);
+           warning(WARN_CHAR, "can't find character '%1'", input_code);
          else
            warning(WARN_CHAR, "can't find character with input code %1",
                    int(input_code));
@@ -4976,7 +4921,7 @@ node *make_glyph_node(charinfo *s, environment *env, int no_error_message = 0)
        else if (s->nm.contents()) {
          const char *nm = s->nm.contents();
          const char *backslash = (nm[1] == 0) ? "\\" : "";
-         warning(WARN_CHAR, "can't find special character `%1%2'",
+         warning(WARN_CHAR, "can't find special character '%1%2'",
                  backslash, nm);
        }
       }
@@ -5954,7 +5899,7 @@ static int mount_font_no_translate(int n, symbol name, symbol external_name,
       return fm != 0;
     if (!fm) {
       if (not_found)
-       warning(WARN_FONT, "can't find font `%1'", external_name.contents());
+       warning(WARN_FONT, "can't find font '%1'", external_name.contents());
       (void)font_dictionary.lookup(external_name, &a_char);
       return 0;
     }
@@ -5962,7 +5907,7 @@ static int mount_font_no_translate(int n, symbol name, symbol external_name,
   }
   else if (p == &a_char) {
 #if 0
-    error("invalid font `%1'", external_name.contents());
+    error("invalid font '%1'", external_name.contents());
 #endif
     return 0;
   }
index bf3e154..15b654d 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 struct hyphen_list {
   unsigned char hyphen;
@@ -165,11 +165,6 @@ public:
 
 class space_node : public node {
 private:
-#if 0
-  enum { BLOCK = 1024 };
-  static space_node *free_list;
-  void operator delete(void *);
-#endif
 protected:
   hunits n;
   char set;
@@ -178,10 +173,6 @@ protected:
   space_node(hunits, int, int, color *, statem *, int, node * = 0);
 public:
   space_node(hunits, color *, node * = 0);
-#if 0
-  ~space_node();
-  void *operator new(size_t);
-#endif
   node *copy();
   int nspaces();
   hunits width();
index 268834b..8fe63f4 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 
 #include "troff.h"
@@ -226,7 +226,7 @@ static int start_number()
     return 0;
   }
   if (tok.right_brace()) {
-    warning(WARN_RIGHT_BRACE, "`\\}' where number expected");
+    warning(WARN_RIGHT_BRACE, "'\\}' where number expected");
     return 0;
   }
   return 1;
@@ -461,7 +461,7 @@ static int parse_term(units *v, int scale_indicator,
        scale_indicator = c;
       }
       else {
-       error("expected `;' after scale-indicator (got %1)",
+       error("expected ';' after scale-indicator (got %1)",
              tok.description());
        return 0;
       }
@@ -476,7 +476,7 @@ static int parse_term(units *v, int scale_indicator,
     if (tok.ch() != ')') {
       if (rigid)
        return 0;
-      warning(WARN_SYNTAX, "missing `)' (got %1)", tok.description());
+      warning(WARN_SYNTAX, "missing ')' (got %1)", tok.description());
     }
     else
       tok.next();
@@ -556,7 +556,7 @@ static int parse_term(units *v, int scale_indicator,
     case 'z':
       if (c != 'u' && c != 'z') {
        warning(WARN_SCALE,
-               "only `z' and `u' scale indicators valid in this context");
+               "only 'z' and 'u' scale indicators valid in this context");
        break;
       }
       si = c;
@@ -569,7 +569,7 @@ static int parse_term(units *v, int scale_indicator,
       break;
     default:
       if (c == 'z') {
-       warning(WARN_SCALE, "`z' scale indicator invalid in this context");
+       warning(WARN_SCALE, "'z' scale indicator invalid in this context");
        break;
       }
       si = c;
@@ -602,7 +602,7 @@ static int parse_term(units *v, int scale_indicator,
     break;
   case 'm':
     {
-      // Convert to hunits so that with -Tascii `m' behaves as in nroff.
+      // Convert to hunits so that with -Tascii 'm' behaves as in nroff.
       hunits em = curenv->get_size();
       *v = scale(*v, em.is_zero() ? hresolution : em.to_units(), divisor);
     }
@@ -615,7 +615,7 @@ static int parse_term(units *v, int scale_indicator,
     break;
   case 'n':
     {
-      // Convert to hunits so that with -Tascii `n' behaves as in nroff.
+      // Convert to hunits so that with -Tascii 'n' behaves as in nroff.
       hunits en = curenv->get_size()/2;
       *v = scale(*v, en.is_zero() ? hresolution : en.to_units(), divisor);
     }
index 9fd5662..6ee2acf 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include "troff.h"
 #include "dictionary.h"
@@ -99,7 +99,7 @@ static const char *number_value_to_ascii(int value, char format, int width)
       const char *s = format == 'i' ? "zwmdclxvi" : "ZWMDCLXVI";
       int n = int(value);
       if (n >= 40000 || n <= -40000) {
-       error("magnitude of `%1' too big for i or I format", n);
+       error("magnitude of '%1' too big for i or I format", n);
        return i_to_a(n);
       }
       if (n == 0) {
@@ -370,7 +370,7 @@ reg *lookup_number_reg(symbol nm)
 {
   reg *r = (reg *)number_reg_dictionary.lookup(nm);
   if (r == 0) {
-    warning(WARN_REG, "number register `%1' not defined", nm.contents());
+    warning(WARN_REG, "number register '%1' not defined", nm.contents());
     r = new number_reg;
     number_reg_dictionary.define(nm, r);
   }
@@ -426,7 +426,7 @@ void alias_reg()
     symbol s2 = get_name(1);
     if (!s2.is_null()) {
       if (!number_reg_dictionary.alias(s1, s2))
-       warning(WARN_REG, "number register `%1' not defined", s2.contents());
+       warning(WARN_REG, "number register '%1' not defined", s2.contents());
     }
   }
   skip_line();
index 49e4b77..2937172 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 
 class reg : public object {
index 64599f2..efdac17 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 typedef void (*REQUEST_FUNCP)();
 
index 87414bf..a3c0067 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 
 class charinfo;
@@ -41,18 +41,18 @@ class token {
     TOKEN_ITALIC_CORRECTION,   // \/
     TOKEN_LEADER,              // ^A
     TOKEN_LEFT_BRACE,
-    TOKEN_MARK_INPUT,          // \k -- `nm' is the name of the register
+    TOKEN_MARK_INPUT,          // \k -- 'nm' is the name of the register
     TOKEN_NEWLINE,             // newline
     TOKEN_NODE,
     TOKEN_NUMBERED_CHAR,
     TOKEN_PAGE_EJECTOR,
     TOKEN_REQUEST,
     TOKEN_RIGHT_BRACE,
-    TOKEN_SPACE,               // ` ' -- ordinary space
+    TOKEN_SPACE,               // ' ' -- ordinary space
     TOKEN_SPECIAL,             // a special character -- \' \` \- \(xx \[xxx]
-    TOKEN_SPREAD,              // \p -- break and spread output line 
+    TOKEN_SPREAD,              // \p -- break and spread output line
     TOKEN_STRETCHABLE_SPACE,   // \~
-    TOKEN_UNSTRETCHABLE_SPACE, // `\ '
+    TOKEN_UNSTRETCHABLE_SPACE, // '\ '
     TOKEN_HORIZONTAL_SPACE,    // \|, \^, \0, \h
     TOKEN_TAB,                 // tab
     TOKEN_TRANSPARENT,         // \!
similarity index 70%
rename from src/roff/troff/troff.man
rename to src/roff/troff/troff.1.man
index 684f441..e4354d8 100644 (file)
@@ -1,45 +1,32 @@
 '\" t
-.TH @G@TROFF @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
+.TH @G@TROFF @MAN1EXT@ "@MDATE@" "groff @VERSION@"
 .SH NAME
 @g@troff \- the troff processor of the groff text formatting system
 .
 .\" troff.man -> troff.1
 .
 .
-.\" --------------------------------------------------------------------
-.\" Legalese
-.\" --------------------------------------------------------------------
-.
-.de co
-Copyright \[co] 1989-2014 Free Software Foundation, Inc.
-
-This file is part of groff, the GNU roff type-setting system, which
-is a GNU free software project..
-
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.3 or
-any later version published by the Free Software Foundation; with the
-Invariant Sections being this .ig-section and AUTHOR, with no
-Front-Cover Texts, and with no Back-Cover Texts.
-
-A copy of the Free Documentation License is included as a file called
-FDL in the main directory of the groff source package.
-..
-.
-.de au
-This file was originally written by James Clark, it was modified by
-.MT wl@gnu.org
-Werner Lemberg
-.ME
-and
-.MT groff-bernd.warken-72@web.de
-Bernd Warken
-.ME .
-..
-.
-.\" --------------------------------------------------------------------
+.\" ====================================================================
+.\" Legal Terms
+.\" ====================================================================
+.\"
+.\" Copyright (C) 1989-2018 Free Software Foundation, Inc.
+.\"
+.\" This file is part of groff, the GNU roff type-setting system.
+.\"
+.\" Permission is granted to copy, distribute and/or modify this
+.\" document under the terms of the GNU Free Documentation License,
+.\" Version 1.3 or any later version published by the Free Software
+.\" Foundation; with no Invariant Sections, with no Front-Cover Texts,
+.\" and with no Back-Cover Texts.
+.\"
+.\" A copy of the Free Documentation License is included as a file
+.\" called FDL in the main directory of the groff source package.
+.
+.
+.\" ====================================================================
 .SH SYNOPSIS
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .SY @g@troff
 .OP \-abcivzCERU
@@ -55,20 +42,21 @@ Bernd Warken
 .OP \-T name
 .OP \-w name
 .OP \-W name
-.RI [ file\~ .\|.\|.]
+.RI [ file
+\&.\|.\|.\&]
 .YS
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH DESCRIPTION
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 This manual page describes the GNU version of
 .BR troff .
 .
 It is part of the groff document formatting system.
 .
-It is functionally compatible with UNIX troff, but has many
+It is functionally compatible with Unix troff, but has many
 extensions, see
 .BR \%groff_diff (@MAN7EXT@).
 .
@@ -78,18 +66,16 @@ command which will also run preprocessors and postprocessors in the
 appropriate order and with the appropriate options.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH OPTIONS
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
-It is possible to have whitespace between a command line option and
-its parameter.
+Whitespace is permitted between a command-line option and its argument.
 .
-.TP \w'\-dname=s'u+2n
+.
+.TP
 .B \-a
-Generate an
-.SM ASCII
-approximation of the typeset output.
+Generate an ASCII approximation of the typeset output.
 .
 .TP
 .B \-b
@@ -98,7 +84,7 @@ Print a backtrace with each warning or error message.
 This backtrace should help track down the cause of the error.
 .
 The line numbers given in the backtrace may not always be correct, for
-.BR @g@troff \[aq]s
+.BR @g@troff 's
 idea of line numbers gets confused by
 .B as
 or
@@ -131,7 +117,7 @@ must be a one letter name.
 Inhibit all error messages of
 .BR @g@troff .
 .
-Note that this doesn\[aq]t affect messages output to standard error by
+Note that this doesn't affect messages output to standard error by
 macro packages using the
 .B tm
 or
@@ -149,10 +135,10 @@ as the default font family.
 Search in directory (or directory path)
 .I dir
 for subdirectories
-.BI dev name
+.IR dev name
 .RI ( name
 is the name of the device) and there for the
-.B DESC
+.I DESC
 file and font files.
 .
 .I dir
@@ -186,19 +172,22 @@ No directory search is performed for files with an absolute file name.
 .TP
 .BI \-m name
 Read in the file
-.IB name .tmac\fR.
+.RI name .tmac .
 .
-If it isn\[aq]t found, try
-.BI tmac. name
+If it isn't found, try
+.IR tmac. name
 instead.
 .
 It will be first searched for in directories given with the
 .B \-M
-command line option, then in directories given in the
-.B GROFF_TMAC_PATH
+command-line option, then in directories given in the
+.I GROFF_TMAC_PATH
 environment variable, then in the current directory (only if in unsafe
-mode), the home directory, @SYSTEMMACRODIR@, @LOCALMACRODIR@, and
-@MACRODIR@.
+mode), the home directory,
+.IR @SYSTEMMACRODIR@ ,
+.IR @LOCALMACRODIR@ ,
+and
+.IR @MACRODIR@ .
 .
 .TP
 .BI \-M dir
@@ -253,10 +242,10 @@ can be any troff numeric expression.
 .
 .TP
 .B \-R
-Don\[aq]t load
-.B troffrc
+Don't load
+.I troffrc
 and
-.BR troffrc-end .
+.IR troffrc\-end .
 .
 .TP
 .BI \-T name
@@ -293,13 +282,14 @@ Print the version number.
 Enable warning
 .IR  name .
 .
-Available warnings are described in the section
-.I WARNINGS
-below.
+Available warnings are described in section \(lqWarnings\(rq below.
 .
-For example, to enable all warnings, use
+To enable most useful warnings use
 .B \-w
 .BR all .
+To enable absolutely all warnings use
+.B \-w w
+instead.
 Multiple
 .B \-w
 options are allowed.
@@ -318,9 +308,9 @@ options are allowed.
 Suppress formatted output.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH WARNINGS
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The warnings that can be given by
 .B @g@troff
@@ -375,7 +365,7 @@ This is enabled by default.
 .
 .TP
 .BR color "\t524288"
-Color related warnings.
+Color-related warnings.
 .
 .TP
 .BR delim "\t8"
@@ -467,7 +457,7 @@ particular name.
 .TP
 .BR right-brace "\t4096"
 Use of
-.B \[rs]}
+.B \(rs}
 where a number was expected.
 .
 .TP
@@ -520,13 +510,12 @@ traditional macro packages.
 All warnings.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH ENVIRONMENT
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .TP
-.SM
-.B GROFF_TMAC_PATH
+.I GROFF_TMAC_PATH
 A colon separated list of directories in which to search for
 macro files.
 .
@@ -535,58 +524,56 @@ will scan directories given in the
 .B \-M
 option before these, and in standard directories (current directory if
 in unsafe mode, home directory,
-.BR @SYSTEMMACRODIR@ ,
-.BR @LOCALMACRODIR@ ,
-.BR @MACRODIR@ )
+.IR @SYSTEMMACRODIR@ ,
+.IR @LOCALMACRODIR@ ,
+.IR @MACRODIR@ )
 after these.
 .
 .TP
-.SM
-.B GROFF_TYPESETTER
+.I GROFF_TYPESETTER
 Default device.
 .
 .TP
-.SM
-.B GROFF_FONT_PATH
+.I GROFF_FONT_PATH
 A colon separated list of directories in which to search for the
-.BI dev name
+.IR dev name
 directory.
 .
 .B @g@troff
 will scan directories given in the
 .B \-F
 option before these, and in standard directories
-.RB ( @LOCALFONTDIR@ ,
-.BR @FONTDIR@ ,
-.BR @LEGACYFONTDIR@ )
+.RI ( @LOCALFONTDIR@ ,
+.IR @FONTDIR@ ,
+.IR @LEGACYFONTDIR@ )
 after these.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH FILES
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .TP
-.B @MACRODIR@/troffrc
+.I @MACRODIR@/troffrc
 Initialization file (called before any other macro package).
 .
 .TP
-.B @MACRODIR@/troffrc-end
+.I @MACRODIR@/troffrc\-end
 Initialization file (called after any other macro package).
 .
 .TP
-.BI @MACRODIR@/ name .tmac
+.IR @MACRODIR@/ name .tmac
 .TQ
-.BI @MACRODIR@/tmac. name
+.IR @MACRODIR@/tmac. name
 Macro files
 .
 .TP
-.BI @FONTDIR@/dev name /DESC
+.IR @FONTDIR@/dev name /DESC
 Device description file for device
 .IR name .
 .
 .TP
-.BI @FONTDIR@/dev name / F
+.IR @FONTDIR@/dev name / F
 Font file for font
 .I F
 of device
@@ -595,25 +582,43 @@ of device
 .
 .P
 Note that
-.B troffrc
+.I troffrc
 and
-.B troffrc-end
-are neither searched in the current nor in the home directory by
+.I troffrc\-end
+are searched for neither in the current nor the home directory by
 default for security reasons (even if the
 .B \-U
 option is given).
 .
 Use the
 .B \-M
-command line option or the
-.B GROFF_TMAC_PATH
+command-line option or the
+.I GROFF_TMAC_PATH
 environment variable to add these directories to the search path if
 necessary.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
+.SH AUTHORS
+.\" ====================================================================
+.
+The GNU version of
+.I troff
+was originally written by James Clark;
+he also wrote the original version of this document,
+which was modified by
+.MT wl@\:gnu.org
+Werner Lemberg
+.ME
+and
+.MT groff\-bernd.warken\-72@\:web.de
+Bernd Warken
+.ME .
+.
+.
+.\" ====================================================================
 .SH "SEE ALSO"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .TP
 .BR groff (@MAN1EXT@)
@@ -658,28 +663,20 @@ systems, including pointers to further related documentation.
 .
 .
 .P
-The
-.I groff info
-.IR file ,
-cf.\&
-.BR info (@MAN1EXT@),
-presents all groff documentation within a single document.
-.
-.
-.\" --------------------------------------------------------------------
-.SH COPYING
-.\" --------------------------------------------------------------------
-.co
-.\" --------------------------------------------------------------------
-.SH AUTHORS
-.\" --------------------------------------------------------------------
-.au
+.IR "Groff: The GNU Implementation of troff" ,
+by Trent A.\& Fisher and Werner Lemberg,
+is the primary
+.I groff
+manual.
+.
+You can browse it interactively with \(lqinfo groff\(rq.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .\" Emacs variables
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .\" Local Variables:
 .\" mode: nroff
 .\" End:
+.\" vim: set filetype=groff:
diff --git a/src/roff/troff/troff.am b/src/roff/troff/troff.am
new file mode 100644 (file)
index 0000000..5d3073b
--- /dev/null
@@ -0,0 +1,70 @@
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Latest update: 22 Aug 2015
+#
+# This file is part of groff.
+#
+# groff 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.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+
+prefixexecbin_PROGRAMS += troff
+PREFIXMAN1 += src/roff/troff/troff.1
+EXTRA_DIST += \
+  src/roff/troff/column.cpp \
+  src/roff/troff/troff.1.man \
+  src/roff/troff/TODO
+troff_LDADD = libgroff.a lib/libgnu.a $(LIBM)
+troff_SOURCES = \
+  src/roff/troff/dictionary.cpp \
+  src/roff/troff/div.cpp \
+  src/roff/troff/env.cpp \
+  src/roff/troff/input.cpp \
+  src/roff/troff/mtsm.cpp \
+  src/roff/troff/node.cpp \
+  src/roff/troff/number.cpp \
+  src/roff/troff/reg.cpp \
+  src/roff/troff/env.h \
+  src/roff/troff/node.h \
+  src/roff/troff/troff.h \
+  src/roff/troff/div.h \
+  src/roff/troff/reg.h \
+  src/roff/troff/dictionary.h \
+  src/roff/troff/input.h \
+  src/roff/troff/mtsm.h \
+  src/roff/troff/token.h \
+  src/roff/troff/charinfo.h \
+  src/roff/troff/request.h \
+  src/roff/troff/hvunits.h
+
+nodist_troff_SOURCES = src/roff/troff/majorminor.cpp
+
+src/roff/troff/input.$(OBJEXT): defs.h
+CLEANFILES += src/roff/troff/majorminor.cpp
+
+src/roff/troff/majorminor.cpp: $(top_srcdir)/.version
+       @echo Making $@
+       @$(RM) $@
+       @echo const char \*major_version = \"$(MAJOR_VERSION)\"\; >$@
+       @echo const char \*minor_version = \"$(MINOR_VERSION)\"\; >>$@
+       @echo const char \*revision = \"$(REVISION)\"\; >>$@
+
+
+########################################################################
+# Editor settings
+########################################################################
+#
+# Local Variables:
+# mode: makefile-automake
+# fill-column: 72
+# End:
+# vim: set filetype=automake textwidth=72:
index 6f65d68..0f35602 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 
 #include "lib.h"
diff --git a/src/utils/addftinfo/addftinfo.1.man b/src/utils/addftinfo/addftinfo.1.man
new file mode 100644 (file)
index 0000000..3ce1fe3
--- /dev/null
@@ -0,0 +1,195 @@
+.TH ADDFTINFO @MAN1EXT@ "@MDATE@" "groff @VERSION@"
+.SH NAME
+addftinfo \- add information to troff font files for use with groff
+.
+.
+.\" ====================================================================
+.\" Legal Terms
+.\" ====================================================================
+.\"
+.\" Copyright (C) 1989-2018 Free Software Foundation, Inc.
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of
+.\" this manual under the conditions for verbatim copying, provided that
+.\" the entire resulting derived work is distributed under the terms of
+.\" a permission notice identical to this one.
+.\"
+.\" Permission is granted to copy and distribute translations of this
+.\" manual into another language, under the above conditions for
+.\" modified versions, except that this permission notice may be
+.\" included in translations approved by the Free Software Foundation
+.\" instead of in the original English.
+.
+.
+.\" ====================================================================
+.\" Characters
+.\" ====================================================================
+.
+.\" Ellipsis ...
+.ie t .ds EL \fS\N'188'\fP\"
+.el .ds EL \&.\|.\|.\&\"
+.\" called with \*(EL
+.
+.
+.\" ====================================================================
+.SH SYNOPSIS
+.\" ====================================================================
+.
+.SY addftinfo
+.OP \-asc\-height n
+.OP \-body\-depth n
+.OP \-body\-height n
+.OP \-cap\-height n
+.OP \-comma\-depth n
+.OP \-desc\-depth n
+.OP \-fig\-height n
+.OP \-x\-height n
+.I res
+.I unitwidth
+.I font
+.YS
+.
+.SY addftinfo
+.B \-\-help
+.YS
+.
+.SY addftinfo
+.B \-v
+.SY addftinfo
+.B \-\-version
+.YS
+.
+.
+.\" ====================================================================
+.SH DESCRIPTION
+.\" ====================================================================
+.
+.B addftinfo
+reads a troff font file and adds some additional font-metric
+information that is used by the groff system.
+.
+The font file with the information added is written on the standard
+output.
+.
+The information added is guessed using some parametric information
+about the font and assumptions about the traditional troff names for
+characters.
+.
+The main information added is the heights and depths of characters.
+.
+The
+.I res
+and
+.I unitwidth
+arguments should be the same as the corresponding parameters in the
+DESC file;
+.I font
+is the name of the file describing the font;
+if
+.I font
+ends with
+.B I
+the font will be assumed to be italic.
+.
+.
+.\" ====================================================================
+.SH OPTIONS
+.\" ====================================================================
+.
+.B \-v
+prints the version number.
+.
+.
+.LP
+All other options change one of the parameters that are used to derive
+the heights and depths.
+.
+Like the existing quantities in the font file, each
+.I value
+is in
+.RI inches/ res
+for a font whose point size is
+.IR unitwidth .
+.
+.I param-option
+must be one of:
+.
+.TP
+.B \-x\-height
+The height of lowercase letters without ascenders such as x.
+.
+.TP
+.B \-fig\-height
+The height of figures (digits).
+.
+.TP
+.B \-asc\-height
+The height of characters with ascenders, such as b, d or l.
+.
+.TP
+.B \-body\-height
+The height of characters such as parentheses.
+.
+.TP
+.B \-cap\-height
+The height of uppercase letters such as A.
+.
+.TP
+.B \-comma\-depth
+The depth of a comma.
+.
+.TP
+.B \-desc\-depth
+The depth of characters with descenders, such as p, q, or y.
+.
+.TP
+.B \-body\-depth
+The depth of characters such as parentheses.
+.
+.
+.LP
+.B addftinfo
+makes no attempt to use the specified parameters to guess the
+unspecified parameters.
+.
+If a parameter is not specified the default will be used.
+.
+The defaults are chosen to have the reasonable values for a Times
+font.
+.
+.
+.\" ====================================================================
+.SH "SEE ALSO"
+.\" ====================================================================
+.
+.BR groff_font (@MAN5EXT@),
+.BR groff (@MAN1EXT@),
+.BR groff_char (@MAN7EXT@)
+.
+.
+.P
+You can view a man page
+.IB name ( n )
+with
+.RS
+.EX
+.BI "man" " n name"
+.EE
+.RE
+in text mode and with
+.RS
+.EX
+.BI "groffer" " n name"
+.EE
+.RE
+in graphical mode (PDF, etc.).
+.
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" End:
+.\" vim: set filetype=groff:
diff --git a/src/utils/addftinfo/addftinfo.am b/src/utils/addftinfo/addftinfo.am
new file mode 100644 (file)
index 0000000..2280bd9
--- /dev/null
@@ -0,0 +1,43 @@
+# Automake rules for 'src utils addftinfo'
+#
+# File position: <groff-source>/src/utils/addftinfo/addftinfo.am
+#
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Latest update: 22 Aug 2015
+#
+# 'groff' is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 2 of the License, or
+# (at your option) any later version.
+#
+# 'groff' 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
+# <http://www.gnu.org/licenses/gpl-2.0.html>.
+#
+########################################################################
+
+bin_PROGRAMS += addftinfo
+man1_MANS += src/utils/addftinfo/addftinfo.1
+EXTRA_DIST += src/utils/addftinfo/addftinfo.1.man
+addftinfo_LDADD = libgroff.a lib/libgnu.a
+addftinfo_SOURCES = \
+  src/utils/addftinfo/addftinfo.cpp \
+  src/utils/addftinfo/guess.cpp \
+  src/utils/addftinfo/guess.h
+
+
+########################################################################
+# Editor settings
+########################################################################
+#
+# Local Variables:
+# mode: makefile-automake
+# fill-column: 72
+# End:
+# vim: set filetype=automake textwidth=72:
index 88095bf..4211c59 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include "lib.h"
 
@@ -110,12 +110,12 @@ int main(int argc, char **argv)
     size_t j;
     for (j = 0;; j++) {
       if (j >= sizeof(param_table)/sizeof(param_table[0]))
-       fatal("parameter `%1' not recognized", argv[i] + 1);
+       fatal("parameter '%1' not recognized", argv[i] + 1);
       if (strcmp(param_table[j].name, argv[i] + 1) == 0)
        break;
     }
     if (sscanf(argv[i+1], "%d", &(param.*(param_table[j].par))) != 1)
-      fatal("invalid argument `%1'", argv[i+1]);
+      fatal("invalid argument '%1'", argv[i+1]);
     i++;
   }    
   if (argc - i != 3)
@@ -123,7 +123,7 @@ int main(int argc, char **argv)
   errno = 0;
   FILE *infp = fopen(font, "r");
   if (infp == 0)
-    fatal("can't open `%1': %2", font, strerror(errno));
+    fatal("can't open '%1': %2", font, strerror(errno));
   convert_font(param, infp, stdout);
   return 0;
 }
diff --git a/src/utils/addftinfo/addftinfo.man b/src/utils/addftinfo/addftinfo.man
deleted file mode 100644 (file)
index 86479a8..0000000
+++ /dev/null
@@ -1,188 +0,0 @@
-.TH ADDFTINFO @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
-.SH NAME
-addftinfo \- add information to troff font files for use with groff
-.
-.
-.\" --------------------------------------------------------------------
-.\" License
-.\" --------------------------------------------------------------------
-.
-.de co
-Copyright \[co] 1989-2014 Free Software Foundation, Inc.
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the
-entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
-Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be included in
-translations approved by the Free Software Foundation instead of in
-the original English.
-..
-.
-.\" --------------------------------------------------------------------
-.\" Characters
-.\" --------------------------------------------------------------------
-.
-.\" Ellipsis ...
-.ie t .ds EL \fS\N'188'\fP
-.el .ds EL \&.\|.\|.\&\
-.\" called with \*(EL
-.
-.
-.\" --------------------------------------------------------------------
-.SH SYNOPSIS
-.\" --------------------------------------------------------------------
-.
-.B addftinfo
-[
-.B \-v
-]
-[
-.IR "param-option value" \*(EL
-]
-.I res
-.I unitwidth
-.I font
-.
-.
-.\" --------------------------------------------------------------------
-.SH DESCRIPTION
-.\" --------------------------------------------------------------------
-.
-.B addftinfo
-reads a troff font file and adds some additional font-metric
-information that is used by the groff system.
-.
-The font file with the information added is written on the standard
-output.
-.
-The information added is guessed using some parametric information
-about the font and assumptions about the traditional troff names for
-characters.
-.
-The main information added is the heights and depths of characters.
-.
-The
-.I res
-and
-.I unitwidth
-arguments should be the same as the corresponding parameters in the
-DESC file;
-.I font
-is the name of the file describing the font;
-if
-.I font
-ends with
-.B I
-the font will be assumed to be italic.
-.
-.
-.\" --------------------------------------------------------------------
-.SH OPTIONS
-.\" --------------------------------------------------------------------
-.
-.B \[en]v
-prints the version number.
-.
-.
-.LP
-All other options change one of the parameters that are used to derive
-the heights and depths.
-.
-Like the existing quantities in the font file, each
-.I value
-is in
-.RI inches/ res
-for a font whose point size is
-.IR unitwidth .
-.
-.I param-option
-must be one of:
-.
-.TP
-.B \[en]x\-height
-The height of lowercase letters without ascenders such as x.
-.
-.TP
-.B \[en]fig-height
-The height of figures (digits).
-.
-.TP
-.B \[en]asc-height
-The height of characters with ascenders, such as b, d or l.
-.
-.TP
-.B \[en]body\-height
-The height of characters such as parentheses.
-.
-.TP
-.B \[en]cap-height
-The height of uppercase letters such as A.
-.
-.TP
-.B \[en]comma\-depth
-The depth of a comma.
-.
-.TP
-.B \[en]desc\-depth
-The depth of characters with descenders, such as p, q, or y.
-.
-.TP
-.B \[en]body\-depth
-The depth of characters such as parentheses.
-.
-.
-.LP
-.B addftinfo
-makes no attempt to use the specified parameters to guess the
-unspecified parameters.
-.
-If a parameter is not specified the default will be used.
-.
-The defaults are chosen to have the reasonable values for a Times
-font.
-.
-.
-.\" --------------------------------------------------------------------
-.SH "SEE ALSO"
-.\" --------------------------------------------------------------------
-.
-.BR groff_font (@MAN5EXT@),
-.BR groff (@MAN1EXT@),
-.BR groff_char (@MAN7EXT@)
-.
-.
-.P
-Watch a man\-page
-.IB name ( n )
-with
-.RS
-.EX
-.BI "man" " n name"
-.EE
-.RE
-in text mode and with
-.RS
-.EX
-.BI "groffer" " n name"
-.EE
-.RE
-in graphical mode (PDF, etc.).
-.
-.
-.\" --------------------------------------------------------------------
-.SH COPYING
-.\" --------------------------------------------------------------------
-.co
-.
-.
-.\" Local Variables:
-.\" mode: nroff
-.\" End:
index a852ed0..9715c56 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include "guess.h"
 
index 2acd867..53e98d1 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 struct font_params {
   int italic;
diff --git a/src/utils/afmtodit/Makefile.sub b/src/utils/afmtodit/Makefile.sub
deleted file mode 100644 (file)
index ca6c91e..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-# Makefile.sub for `src utils afmtodit'
-#
-# File position: <groff-source>/src/utils/afmtodit/Makefile.sub
-#
-# Copyright (C) 2013-2014  Free Software Foundation, Inc.
-#
-# This file is part of groff.
-#
-# groff 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.
-#
-# groff 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 <http://www.gnu.org/licenses/>.
-#
-########################################################################
-
-MAN1=afmtodit.n
-MOSTLYCLEANADD=afmtodit
-RM=rm -f
-
-all: afmtodit
-
-afmtodit: afmtodit.pl afmtodit.tables
-       if test -n "$(PERL)"; then \
-         sed -e "s|/usr/bin/perl|$(PERL)|" \
-             -e "s|@VERSION@|$(version)$(revision)|" \
-             -e "s|@FONTDIR@|$(fontdir)|" \
-             -e "/@afmtodit.tables@/ r $(srcdir)/afmtodit.tables" \
-             -e "/@afmtodit.tables@/ d" \
-             $(srcdir)/afmtodit.pl >afmtodit; \
-       else \
-         sed -e "s|@VERSION@|$(version)$(revision)|" \
-             -e "s|@FONTDIR@|$(fontdir)|" \
-             -e "/@afmtodit.tables@/ r $(srcdir)/afmtodit.tables" \
-             -e "/@afmtodit.tables@/ d" \
-             $(srcdir)/afmtodit.pl >afmtodit; \
-       fi
-       chmod +x afmtodit
-
-install_data: afmtodit
-       -test -d $(DESTDIR)$(bindir) || $(mkinstalldirs) $(DESTDIR)$(bindir)
-       $(RM) $(DESTDIR)$(bindir)/afmtodit
-       $(INSTALL_SCRIPT) afmtodit $(DESTDIR)$(bindir)/afmtodit
-
-uninstall_sub:
-       $(RM) $(DESTDIR)$(bindir)/afmtodit
-
-########################################################################
-# Emacs settings
-########################################################################
-#
-# Local Variables:
-# mode: makefile
-# End:
diff --git a/src/utils/afmtodit/afmtodit.1.man b/src/utils/afmtodit/afmtodit.1.man
new file mode 100644 (file)
index 0000000..a21b146
--- /dev/null
@@ -0,0 +1,448 @@
+.TH AFMTODIT @MAN1EXT@ "@MDATE@" "groff @VERSION@"
+.SH NAME
+afmtodit \- create font files for use with groff \-Tps and \-Tpdf
+.
+.
+.\" ====================================================================
+.\" Legal Terms
+.\" ====================================================================
+.\"
+.\" Copyright (C) 1989-2018 Free Software Foundation, Inc.
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of
+.\" this manual under the conditions for verbatim copying, provided that
+.\" the entire resulting derived work is distributed under the terms of
+.\" a permission notice identical to this one.
+.\"
+.\" Permission is granted to copy and distribute translations of this
+.\" manual into another language, under the above conditions for
+.\" modified versions, except that this permission notice may be
+.\" included in translations approved by the Free Software Foundation
+.\" instead of in the original English.
+.
+.
+.\" ====================================================================
+.SH SYNOPSIS
+.\" ====================================================================
+.
+.SY afmtodit
+.OP \-ckmnsx
+.OP \-a n
+.OP \-d desc-file
+.OP \-e enc-file
+.OP \-f internal-name
+.OP \-i n
+.OP \-o output-file
+.I afm-file
+.I map-file
+.I font
+.YS
+.
+.SY afmtodit
+.B \-v
+.YS
+.
+.
+.\" ====================================================================
+.SH DESCRIPTION
+.\" ====================================================================
+.
+.I afmtodit
+creates a font file for use with
+.IR groff ,
+.IR grops ,
+and
+.IR gropdf .
+.
+.I afmtodit
+is written in Perl;
+you must have Perl version 5.004 or newer installed in order to run
+.IR afmtodit .
+.
+.
+.LP
+.I afm-file
+is the AFM (Adobe Font Metric) file for the font.
+.
+.
+.LP
+.I map-file
+is a file that says which
+.I groff
+character names map onto each PostScript character name;
+this file should contain a sequence of lines of the form
+.
+.RS
+.I
+ps-char groff-char
+.RE
+.
+where
+.I ps-char
+is the PostScript name of the character and
+.I groff-char
+is the groff name of the character (as used in the
+.I groff
+font file).
+.
+The same
+.I ps-char
+can occur multiple times in the file;
+each
+.I groff-char
+must occur at most once.
+.
+Lines starting with \(oq#\(cq and blank lines are ignored.
+.
+If the file isn't found in the current directory,
+it is searched for in the
+.I devps/generate
+subdirectory of the default font directory.
+.
+.
+.LP
+If a PostScript character is not mentioned in
+.IR map-file ,
+and a generic
+.I groff
+glyph name can't be deduced using the Adobe Glyph List
+(AGL, built into
+.IR afmtodit ),
+then
+.I afmtodit
+puts the PostScript character into the
+.I groff
+font file as an unnamed character which can only be accessed by the
+\(oq\eN\(cq escape sequence in a
+.I roff
+document.
+.
+In particular,
+this is true for glyph variants named in the form \(lqfoo.bar\(rq;
+all glyph names containing one or more periods are mapped to unnamed
+entities.
+.
+If option
+.B \-e
+is not specified, the encoding defined in the AFM file (i.e., entries
+with non-negative character codes) is used.
+.
+Refer to section \(lqUsing Symbols\(rq in
+.IR "Groff: The GNU Implementation of troff" ,
+the
+.I groff
+Texinfo manual,
+which describes how
+.I groff
+glyph names are constructed.
+.
+.
+.LP
+Characters not encoded in the AFM file (i.e., entries which have
+\(oq\-1\(cq as the character code) are still available in
+.IR groff ;
+they get glyph index values greater than 255 (or greater than the
+biggest character code used in the AFM file in the unlikely case that it
+is greater than 255) in the
+.I groff
+font file.
+.
+Glyph indices of unencoded characters don't have a specific order;
+it is best to access them with glyph names only.
+.
+.
+.LP
+The
+.I groff
+font file will be output to a file called
+.IR font ,
+unless the
+.B \-o
+option is used.
+.
+.
+.LP
+If there is a downloadable font file for the font, it may be listed in
+the file
+.IR @FONTDIR@/\:devps/\:download ;
+see
+.IR grops (@MAN1EXT@).
+.
+.
+.LP
+If the
+.B \-i
+option is used,
+.I afmtodit
+will automatically generate an italic correction,
+a left italic correction and a subscript correction
+for each character
+(the significance of these parameters is explained in
+.IR groff_font (@MAN5EXT@));
+these parameters may be specified for individual characters by
+adding to the
+.I afm-file
+lines of the form:
+.
+.RS
+.EX
+.BI italicCorrection \~ps-char\~n
+.BI leftItalicCorrection \~ps-char\~n
+.BI subscriptCorrection \~ps-char\~n
+.EE
+.RE
+.
+where
+.I ps-char
+is the PostScript name of the character,
+and
+.I n
+is the desired value of the corresponding parameter in thousandths of an
+em.
+.
+These parameters are normally needed only for italic (or oblique) fonts.
+.
+.
+.\" ====================================================================
+.SH OPTIONS
+.\" ====================================================================
+.
+Whitespace is permitted between a command-line option and its argument.
+.
+.
+.TP
+.BI \-a n
+Use
+.I n
+as the slant parameter in the font file;
+this is used by
+.I groff
+in the positioning of accents.
+.
+By default
+.I afmtodit
+uses the negative of the
+.B ItalicAngle
+specified in the AFM file;
+with true italic fonts it is sometimes desirable to use a slant that is
+less than this.
+.
+If you find that characters from an italic font have accents placed too
+far to the right over them,
+then use the
+.B \-a
+option to give the font a smaller slant.
+.
+.
+.TP
+.B \-c
+Include comments in the font file in order to identify the PostScript
+font.
+.
+.
+.TP
+.BI \-d desc-file
+The device description file is
+.I desc-file
+rather than the default
+.IR DESC .
+.
+If not found in the current directory,
+the
+.I devps
+subdirectory of the default font directory is searched (this is true for
+both the default device description file and a file given with option
+.BR \-d ).
+.
+.
+.TP
+.BI \-e enc-file
+The PostScript font should be reencoded to use the encoding described
+in
+.IR enc-file .
+.
+The format of
+.I enc-file
+is described in
+.IR grops (@MAN1EXT@).
+.
+If not found in the current directory,
+the
+.I devps
+subdirectory of the default font directory is searched.
+.
+.
+.TP
+.BI \-f name
+The internal name of the
+.I groff
+font is set to
+.IR name .
+.
+.
+.TP
+.BI \-i n
+Generate an italic correction for each character so that the
+character's width plus the character's italic correction is equal to
+.I n
+thousandths of an em
+plus the amount by which the right edge of the character's bounding box
+is to the right of the character's origin.
+.
+If this would result in a negative italic correction, use a zero
+italic correction instead.
+.
+.
+.IP
+Also generate a subscript correction equal to the
+product of the tangent of the slant of the font and
+four fifths of the x-height of the font.
+.
+If this would result in a subscript correction greater than the italic
+correction, use a subscript correction equal to the italic correction
+instead.
+.
+.
+.IP
+Also generate a left italic correction for each character
+equal to
+.I n
+thousandths of an em
+plus the amount by which the left edge of the character's bounding box
+is to the left of the character's origin.
+.
+The left italic correction may be negative unless option
+.B \-m
+is given.
+.
+.
+.IP
+This option is normally needed only with italic (or oblique) fonts.
+.
+The font files distributed with
+.I groff
+were created using an option of
+.B \-i50
+for italic fonts.
+.
+.
+.TP
+.BI \-o output-file
+The output file is
+.I output-file
+instead of
+.IR font .
+.
+.
+.TP
+.B \-k
+Omit any kerning data from the
+.I groff
+font;
+use only for monospaced (constant-width) fonts.
+.
+.
+.TP
+.B \-m
+Prevent negative left italic correction values.
+.
+Roman font files distributed with
+.I groff
+were created with
+.B \-i0\ \-m
+to improve spacing with
+.IR @g@eqn (@MAN1EXT@).
+.
+.
+.TP
+.B \-n
+Don't output a
+.B ligatures
+command for this font;
+use with monospaced (constant-width) fonts.
+.
+.
+.TP
+.B \-s
+The font is special.
+.
+The effect of this option is to add the
+.B special
+command to the font file.
+.
+.
+.TP
+.B \-v
+Print version and exit.
+.
+.
+.TP
+.B \-x
+Don't use the built-in Adobe Glyph List.
+.
+.
+.\" ====================================================================
+.SH FILES
+.\" ====================================================================
+.
+.TP
+.I @FONTDIR@/\:devps/\:DESC
+Device description file.
+.
+.
+.TP
+.IR @FONTDIR@/\:devps/\: F
+Font description file for font
+.IR F .
+.
+.
+.TP
+.I @FONTDIR@/\:devps/\:download
+List of downloadable fonts.
+.
+.
+.TP
+.I @FONTDIR@/\:devps/\:text.enc
+Encoding used for text fonts.
+.
+.
+.TP
+.I @FONTDIR@/\:devps/\:generate/\:textmap
+Standard mapping.
+.
+.
+.\" ====================================================================
+.SH "SEE ALSO"
+.\" ====================================================================
+.
+.IR "Groff: The GNU Implementation of troff" ,
+by Trent A.\& Fisher and Werner Lemberg,
+is the primary
+.I groff
+manual.
+.
+Section \(lqUsing Symbols\(rq may be of particular note.
+.
+You can browse it interactively with \(lqinfo \(aq(groff)Using
+Symbols\(aq\(rq.
+.
+.
+.LP
+.IR groff (@MAN1EXT@),
+.IR gropdf (@MAN1EXT@),
+.IR grops (@MAN1EXT@),
+.IR groff_font (@MAN5EXT@),
+.IR perl (1)
+.
+.
+.\" ====================================================================
+.\" ### Emacs settings:
+.\" Local Variables:
+.\" mode: nroff
+.\" fill-column: 72
+.\" End:
+.\" vim: set filetype=groff textwidth=72:
diff --git a/src/utils/afmtodit/afmtodit.am b/src/utils/afmtodit/afmtodit.am
new file mode 100644 (file)
index 0000000..48e3c29
--- /dev/null
@@ -0,0 +1,64 @@
+# Automake rules for 'src utils afmtodit'
+#
+# File position: <groff-source>/src/utils/afmtodit/afmtdodit.am
+#
+# Copyright (C) 2013-2018 Free Software Foundation, Inc.
+#
+# Latest update: 22 Aug 2015
+#
+# This file is part of groff.
+#
+# groff 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.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+#
+########################################################################
+
+afmtodit_srcdir = $(top_srcdir)/src/utils/afmtodit
+
+bin_SCRIPTS += afmtodit
+man1_MANS += src/utils/afmtodit/afmtodit.1
+EXTRA_DIST += \
+  src/utils/afmtodit/afmtodit.1.man \
+  src/utils/afmtodit/afmtodit.pl \
+  src/utils/afmtodit/afmtodit.tables \
+  src/utils/afmtodit/make-afmtodit-tables
+
+afmtodit: $(afmtodit_srcdir)/afmtodit.pl $(afmtodit_srcdir)/afmtodit.tables
+       $(AM_V_GEN)if test -n "$(PERL)"; then \
+         sed -e "s|/usr/bin/perl|$(PERL)|" \
+             -e "s|[@]VERSION[@]|$(VERSION)|" \
+             -e "s|[@]FONTDIR[@]|$(fontdir)|" \
+             -e "/[@]afmtodit.tables[@]/ r $(afmtodit_srcdir)/afmtodit.tables" \
+             -e "/[@]afmtodit.tables[@]/ d" \
+             $(afmtodit_srcdir)/afmtodit.pl \
+             >afmtodit; \
+       else \
+         sed -e "s|[@]VERSION[@]|$(VERSION)|" \
+             -e "s|[@]FONTDIR[@]|$(fontdir)|" \
+             -e "/[@]afmtodit.tables[@]/ r $(afmtodit_srcdir)/afmtodit.tables" \
+             -e "/[@]afmtodit.tables[@]/ d" \
+             $(afmtodit_srcdir)/afmtodit.pl \
+             >afmtodit; \
+       fi \
+       && chmod +x afmtodit
+
+
+########################################################################
+# Editor settings
+########################################################################
+#
+# Local Variables:
+# mode: makefile-automake
+# fill-column: 72
+# End:
+# vim: set filetype=automake textwidth=72:
diff --git a/src/utils/afmtodit/afmtodit.man b/src/utils/afmtodit/afmtodit.man
deleted file mode 100644 (file)
index 21d9b8e..0000000
+++ /dev/null
@@ -1,401 +0,0 @@
-.TH AFMTODIT @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
-.SH NAME
-afmtodit \- create font files for use with groff \-Tps and \-Tpdf
-.
-.
-.\" --------------------------------------------------------------------
-.\" Leagal Terms
-.
-.de co
-Copyright \[co] 1989-2014 Free Software Foundation, Inc.
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the
-entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
-Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be included in
-translations approved by the Free Software Foundation instead of in
-the original English.
-..
-.
-.\" --------------------------------------------------------------------
-.\" Definitions
-.
-.\" Like TP, but if specified indent is more than half
-.\" the current line-length - indent, use the default indent.
-.de Tp
-.  ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP
-.  el .TP "\\$1"
-..
-.
-.de OP
-.  ie \\n(.$-1 .RI "[\ \fB\\$1\fP\ " "\\$2" "\ ]"
-.  el .RB "[\ " "\\$1" "\ ]"
-..
-.
-.\" --------------------------------------------------------------------
-.SH SYNOPSIS
-.\" --------------------------------------------------------------------
-.
-.nr a \n(.j
-.ad l
-.nr i \n(.i
-.in +\w'\fBafmtodit 'u
-.ti \niu
-.B afmtodit
-.OP \-ckmnsvx
-.OP \-a n
-.OP \-d desc_file
-.OP \-e enc_file
-.OP \-f internal_name
-.OP \-i n
-.OP \-o out_file
-.I afm_file
-.I map_file
-.I font
-.br
-.ad \na
-.
-.
-.LP
-The whitespace between a command line option and its argument is optional.
-.
-.
-.\" --------------------------------------------------------------------
-.SH DESCRIPTION
-.\" --------------------------------------------------------------------
-.
-.B afmtodit
-creates a font file for use with groff,
-.BR grops ,
-and
-.BR gropdf .
-.
-.B afmtodit
-is written in perl;
-you must have perl version 5.004 or newer installed in order to run
-.BR afmtodit .
-.
-.
-.LP
-.I afm_file
-is the AFM (Adobe Font Metric) file for the font.
-.
-.
-.LP
-.I map_file
-is a file that says which groff character names map onto
-each PostScript character name;
-this file should contain a sequence of lines of the form
-.IP
-.I
-ps_char groff_char
-.LP
-where
-.I ps_char
-is the PostScript name of the character and
-.I groff_char
-is the groff name of the character (as used in the groff font file).
-.
-The same
-.I ps_char
-can occur multiple times in the file;
-each
-.I groff_char
-must occur at most once.
-.
-Lines starting with
-.B #
-and blank lines are ignored.
-.
-If the file isn\[aq]t found in the current directory, it is searched
-in the \[oq]devps/generate\[cq] subdirectory of the default font
-directory.
-.
-.
-.LP
-If a PostScript character is not mentioned in
-.IR map_file ,
-and a generic groff glyph name can't be deduced using the Adobe Glyph
-List (AGL, built into
-.BR afmtodit ),
-then
-.B afmtodit
-puts the PostScript character into the groff font file as an unnamed
-character which can only be accessed by the
-.B \eN
-escape sequence in
-.BR troff .
-.
-In particular, this is true for glyph variants like \[oq]foo.bar\[cq];
-all glyph names containing one or more periods are mapped to unnamed
-entities.
-.
-If option
-.B \-e
-is not specified, the encoding defined in the AFM file (i.e., entries
-with non-negative character codes) is used.
-.
-Please refer to section \[oq]Using Symbols\[cq] in the groff info file
-which describes how groff glyph names are constructed.
-.
-.
-.LP
-Characters not encoded in the AFM file (i.e., entries which have \-1
-as the character code) are still available in groff; they get glyph
-index values greater than 255 (or greater than the biggest character
-code used in the AFM file in the unlikely case that it is greater than
-255) in the groff font file.
-.
-Glyph indices of unencoded characters don\[aq]t have a specific order;
-it is best to access them with glyph names only.
-.
-.
-.LP
-The groff font file will be output to a file called
-.IR font ,
-unless the
-.B \-o
-option is used.
-.
-.
-.LP
-If there is a downloadable font file for the font, it may be listed in
-the file
-.BR @FONTDIR@/devps/download ;
-see
-.BR grops (@MAN1EXT@).
-.
-.
-.LP
-If the
-.B \-i
-option is used,
-.B afmtodit
-will automatically generate an italic correction,
-a left italic correction and a subscript correction
-for each character
-(the significance of these parameters is explained in
-.BR groff_font (@MAN5EXT@));
-these parameters may be specified for individual characters by
-adding to the
-.I afm_file
-lines of the form:
-.IP
-.BI italicCorrection\  ps_char\ n
-.br
-.BI leftItalicCorrection\  ps_char\ n
-.br
-.BI subscriptCorrection\  ps_char\ n
-.LP
-where
-.I ps_char
-is the PostScript name of the character,
-and
-.I n
-is the desired value of the corresponding parameter in thousandths of an em.
-.
-These parameters are normally needed only for italic (or oblique) fonts.
-.
-.
-.\" --------------------------------------------------------------------
-.SH OPTIONS
-.\" --------------------------------------------------------------------
-.
-.TP
-.BI \-a n
-Use
-.I n
-as the slant parameter in the font file;
-this is used by groff in the positioning of accents.
-.
-By default
-.B afmtodit
-uses the negative of the ItalicAngle specified in the afm file;
-with true italic fonts it is sometimes desirable to use
-a slant that is less than this.
-.
-If you find that characters from an italic font have accents
-placed too far to the right over them,
-then use the
-.B \-a
-option to give the font a smaller slant.
-.
-.TP
-.B \-c
-Include comments in the font file in order to identify the PS font.
-.
-.TP
-.BI \-d desc_file
-The device description file is
-.I desc_file
-rather than the default
-.BR DESC .
-.
-If not found in the current directory, the \[oq]devps\[qc]
-subdirectory of the default font directory is searched (this is true
-for both the default device description file and a file given with
-option
-.BR \-d ).
-.
-.TP
-.BI \-e enc_file
-The PostScript font should be reencoded to use the encoding described
-in enc_file.
-.
-The format of
-.I enc_file
-is described in
-.BR grops (@MAN1EXT@).
-.
-If not found in the current directory, the \[oq]devps\[cq]
-subdirectory of the default font directory is searched.
-.
-.TP
-.BI \-f name
-The internal name of the groff font is set to
-.IR name .
-.
-.TP
-.BI \-i n
-Generate an italic correction for each character so that the
-character's width plus the character's italic correction is equal to
-.I n
-thousandths of an em
-plus the amount by which the right edge of the character's bounding box
-is to the right of the character\[aq]s origin.
-.
-If this would result in a negative italic correction, use a zero
-italic correction instead.
-.
-.IP
-Also generate a subscript correction equal to the
-product of the tangent of the slant of the font and
-four fifths of the x-height of the font.
-.
-If this would result in a subscript correction greater than the italic
-correction, use a subscript correction equal to the italic correction
-instead.
-.
-.IP
-Also generate a left italic correction for each character
-equal to
-.I n
-thousandths of an em
-plus the amount by which the left edge of the character's bounding box
-is to the left of the character\[aq]s origin.
-.
-The left italic correction may be negative unless option
-.B \-m
-is given.
-.
-.IP
-This option is normally needed only with italic (or oblique) fonts.
-.
-The font files distributed with groff were created using an option of
-.B \-i50
-for italic fonts.
-.
-.TP
-.BI \-o out_file
-The output file is
-.I out_file
-instead of
-.IR font .
-.
-.TP
-.B \-k
-Omit any kerning data from the groff font.
-.
-This should be used only for mono-spaced fonts.
-.
-.TP
-.B \-m
-Prevent negative left italic correction values.
-.
-Roman font files distributed with groff were created with
-.B \-i0\ \-m
-to improve spacing with
-.BR @g@eqn (@MAN1EXT@).
-.
-.TP
-.B \-n
-Don't output a
-.B ligatures
-command for this font.
-.
-Use this with constant-width fonts.
-.
-.TP
-.B \-s
-The font is special.
-.
-The effect of this option is to add the
-.B special
-command to the font file.
-.
-.TP
-.B \-v
-Print version.
-.
-.TP
-.B \-x
-Don't use the built-in Adobe Glyph List.
-.
-.
-.\" --------------------------------------------------------------------
-.SH FILES
-.\" --------------------------------------------------------------------
-.
-.Tp \w'\fB@FONTDIR@/devps/download'u+2n
-.B @FONTDIR@/devps/DESC
-Device description file.
-.
-.TP
-.BI @FONTDIR@/devps/ F
-Font description file for font
-.IR F .
-.
-.TP
-.B @FONTDIR@/devps/download
-List of downloadable fonts.
-.
-.TP
-.B @FONTDIR@/devps/text.enc
-Encoding used for text fonts.
-.
-.TP
-.B @FONTDIR@/devps/generate/textmap
-Standard mapping.
-.
-.
-.\" --------------------------------------------------------------------
-.SH "SEE ALSO"
-.\" --------------------------------------------------------------------
-.
-.BR groff (@MAN1EXT@),
-.BR grops (@MAN1EXT@),
-.BR groff_font (@MAN5EXT@),
-.BR perl (1)
-.
-.
-.LP
-The groff info file, section \[oq]Using Symbols\[cq].
-.
-.
-.\" --------------------------------------------------------------------
-.SH COPYING
-.\" --------------------------------------------------------------------
-.co
-.
-.
-.\" Local Variables:
-.\" mode: nroff
-.\" End:
index 4f2ce83..954c58e 100644 (file)
@@ -1,6 +1,6 @@
 #! /usr/bin/perl -w
 # -*- Perl -*-
-# Copyright (C) 1989-201 Free Software Foundation, Inc.
+# Copyright (C) 1989-2018 Free Software Foundation, Inc.
 #      Written by James Clark (jjc@jclark.com)
 #
 # This file is part of groff.
@@ -16,7 +16,7 @@
 # for more details.
 #
 # You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 use strict;
 
@@ -65,7 +65,7 @@ my (@encoding, %in_encoding);
 my (%width, %height, %depth);
 my (%left_side_bearing, %right_side_bearing);
 
-open(AFM, $afm) || die "$prog: can't open \`$ARGV[0]': $!\n";
+open(AFM, $afm) || die "$prog: can't open '$ARGV[0]': $!\n";
 
 while (<AFM>) {
     chomp;
@@ -179,7 +179,7 @@ my ($sizescale, $resolution, $unitwidth);
 $sizescale = 1;
 
 open(DESC, $desc) || open(DESC, $sys_desc) ||
-    die "$prog: can't open \`$desc' or \`$sys_desc': $!\n";
+    die "$prog: can't open '$desc' or '$sys_desc': $!\n";
 while (<DESC>) {
     next if /^#/;
     chop;
@@ -203,7 +203,7 @@ if ($opt_e) {
 
     my $sys_opt_e = $groff_sys_fontdir . "/devps/" . $opt_e;
     open(ENCODING, $opt_e) || open(ENCODING, $sys_opt_e) ||
-       die "$prog: can't open \`$opt_e' or \`$sys_opt_e': $!\n";
+       die "$prog: can't open '$opt_e' or '$sys_opt_e': $!\n";
     while (<ENCODING>) {
        next if /^#/;
        chop;
@@ -224,7 +224,7 @@ if ($opt_e) {
 my (%nmap, %map);
 
 open(MAP, $map) || open(MAP, $sys_map) ||
-    die "$prog: can't open \`$map' or \`$sys_map': $!\n";
+    die "$prog: can't open '$map' or '$sys_map': $!\n";
 while (<MAP>) {
     next if /^#/;
     chop;
@@ -235,11 +235,11 @@ while (<MAP>) {
            # The PostScript character "space" is automatically mapped
            # to the groff character "space"; this is for grops.
            warn "you are not allowed to map to " .
-                "the groff character \`space'";
+                "the groff character 'space'";
        }
        elsif ($field[0] eq "space") {
            warn "you are not allowed to map " .
-                "the PostScript character \`space'";
+                "the PostScript character 'space'";
        }
        else {
            $nmap{$field[0]} += 0;
@@ -247,7 +247,7 @@ while (<MAP>) {
            $nmap{$field[0]} += 1;
 
            # There is more than one way to make a PS glyph name;
-           # let us try Unicode names with both `uni' and `u' prefixes.
+           # let us try Unicode names with both 'uni' and 'u' prefixes.
            my $utmp = $AGL_to_unicode{$field[0]};
            if (defined $utmp && $utmp =~ /^[0-9A-F]{4}$/) {
                foreach my $unicodepsname ("uni" . $utmp, "u" . $utmp) {
@@ -295,19 +295,19 @@ if (!$opt_x) {
            #   Drop all characters from the glyph name starting with the
            #   first occurrence of a period (U+002E FULL STOP), if any.
            #   ?? We avoid mapping of glyphs with periods, since they are
-           #   likely to be variant glyphs, leading to a `many ps glyphs --
+           #   likely to be variant glyphs, leading to a 'many ps glyphs --
            #   one groff glyph' conflict.
            #
            #   If multiple glyphs in the font represent the same character
-           #   in the Unicode standard, as do `A' and `A.swash', for example,
+           #   in the Unicode standard, as do 'A' and 'A.swash', for example,
            #   they can be differentiated by using the same base name with
            #   different suffixes.  This suffix (the part of glyph name that
            #   follows the first period) does not participate in the
            #   computation of a character sequence.  It can be used by font
            #   designers to indicate some characteristics of the glyph.  The
            #   suffix may contain periods or any other permitted characters.
-           #   Small cap A, for example, could be named `uni0041.sc' or
-           #   `A.sc'.
+           #   Small cap A, for example, could be named 'uni0041.sc' or
+           #   'A.sc'.
 
            next if $ch =~ /\./;
 
@@ -331,7 +331,7 @@ if (!$opt_x) {
                    $utmp = "U+" . $utmp;
                }
 
-               #   * Otherwise, if the component is of the form `uni'
+               #   * Otherwise, if the component is of the form 'uni'
                #     (U+0075 U+006E U+0069) followed by a sequence of
                #     uppercase hexadecimal digits (0 .. 9, A .. F, i.e.,
                #     U+0030 .. U+0039, U+0041 .. U+0046), the length of
@@ -354,7 +354,7 @@ if (!$opt_x) {
                    }
                }
 
-               #   * Otherwise, if the component is of the form `u' (U+0075)
+               #   * Otherwise, if the component is of the form 'u' (U+0075)
                #     followed by a sequence of four to six uppercase
                #     hexadecimal digits {0 .. 9, A .. F} (U+0030 .. U+0039,
                #     U+0041 .. U+0046), and those digits represent a number
@@ -397,7 +397,7 @@ if (!$opt_x) {
 }
 
 # Check explicitly for groff's standard ligatures -- many afm files don't
-# have proper `L' entries.
+# have proper 'L' entries.
 
 my %default_ligatures = (
   "fi", "f i",
@@ -415,7 +415,7 @@ while (my ($lig, $components) = each %default_ligatures) {
 
 # print it all out
 
-open(FONT, ">$outfile") || die "$prog: can't open \`$outfile' for output: $!\n";
+open(FONT, ">$outfile") || die "$prog: can't open '$outfile' for output: $!\n";
 select(FONT);
 
 print("# This file has been generated with " .
index cda121a..57a0657 100644 (file)
@@ -2038,7 +2038,7 @@ my %unicode_decomposed = (
 
 # This table has been algorithmically derived from the file glyphlist.txt,
 # version 2.0, available from partners.adobe.com, on 2005-12-09.  For glyphs
-# `Delta', `Omega', and `mu', the values have been manually changed to the
+# 'Delta', 'Omega', and 'mu', the values have been manually changed to the
 # ones from aglfn.txt, version 1.6.
 my %AGL_to_unicode = (
   "A", "0041",
index c60aeb1..251a415 100755 (executable)
@@ -1,9 +1,9 @@
 #! /bin/sh
 #
-# make-afmtodit-tables -- script for creating the `unicode_decomposed'
-#                         and `AGL_to_unicode' tables
+# make-afmtodit-tables -- script for creating the 'unicode_decomposed'
+#                         and 'AGL_to_unicode' tables
 #
-# Copyright (C) 2005-201 Free Software Foundation, Inc.
+# Copyright (C) 2005-2018 Free Software Foundation, Inc.
 #      Written by Werner Lemberg <wl@gnu.org>
 #
 # This file is part of groff.
@@ -19,7 +19,7 @@
 # for more details.
 #
 # You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 #
 # usage:
 #   make-afmtodit-tables \
 #     UnicodeData.txt version-string glyphlist.txt > afmtodit.in
 #
-# `UnicodeData.txt' is the central database file from the Unicode standard.
+# 'UnicodeData.txt' is the central database file from the Unicode standard.
 # Unfortunately, it doesn't contain a version number which must be thus
 # provided manually as an additional parameter.
 #
-# `glyphlist.txt' holds the Adobe Glyph List (AGL).
+# 'glyphlist.txt' holds the Adobe Glyph List (AGL).
 #
 # This program needs a C preprocessor.
 #
@@ -50,11 +50,11 @@ version_string="$2"
 glyph_list="$3"
 
 if test ! -f "$1"; then
-  echo "File \`$1' doesn't exist" >&2
+  echo "File '$1' doesn't exist" >&2
   exit 2
 fi
 if test ! -f "$3"; then
-  echo "File \`$3' doesn't exist" >&2
+  echo "File '$3' doesn't exist" >&2
   exit 2
 fi
 
diff --git a/src/utils/hpftodit/Makefile.sub b/src/utils/hpftodit/Makefile.sub
deleted file mode 100644 (file)
index 657e4df..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-# Makefile.sub for `src utils hpftodit'
-#
-# File position: <groff-source>/src/utils/hpftodit/Makefile.sub
-#
-# Copyright (C) 2014  Free Software Foundation, Inc.
-#
-# This file is part of `font utf8' which is part of `groff'.
-#
-# `groff' is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 2 of the License, or
-# (at your option) any later version.
-#
-# `groff' 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
-# <http://www.gnu.org/licenses/gpl-2.0.html>.
-#
-########################################################################
-
-PROG=hpftodit$(EXEEXT)
-MAN1=hpftodit.n
-XLIBS=$(LIBGROFF)
-MLIB=$(LIBM)
-OBJS=hpftodit.$(OBJEXT) \
-     hpuni.$(OBJEXT)
-CCSRCS=$(srcdir)/hpftodit.cpp \
-       $(srcdir)/hpuni.cpp
-
-########################################################################
-# Emacs settings
-########################################################################
-#
-# Local Variables:
-# mode: makefile
-# End:
diff --git a/src/utils/hpftodit/hpftodit.1.man b/src/utils/hpftodit/hpftodit.1.man
new file mode 100644 (file)
index 0000000..566a72f
--- /dev/null
@@ -0,0 +1,428 @@
+.TH HPFTODIT @MAN1EXT@ "@MDATE@" "groff @VERSION@"
+.SH NAME
+hpftodit \- create font description files for use with groff \-Tlj4
+.
+.
+.\" Save and disable compatibility mode (for, e.g., Solaris 10/11).
+.do nr hpftodit_C \n[.C]
+.cp 0
+.
+.
+.\" ====================================================================
+.\" Legal Terms
+.\" ====================================================================
+.\"
+.\" Copyright (C) 1994-2018 Free Software Foundation, Inc.
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of
+.\" this manual under the conditions for verbatim copying, provided that
+.\" the entire resulting derived work is distributed under the terms of
+.\" a permission notice identical to this one.
+.\"
+.\" Permission is granted to copy and distribute translations of this
+.\" manual into another language, under the above conditions for
+.\" modified versions, except that this permission notice may be
+.\" included in translations approved by the Free Software Foundation
+.\" instead of in the original English.
+.
+.
+.\" ====================================================================
+.SH SYNOPSIS
+.\" ====================================================================
+.
+.SY hpftodit
+.OP \-aqs
+.OP \-i n
+.I tfm-file
+.I map-file
+.I output-font
+.YS
+.
+.SY hpftodit
+.B \-d
+.I tfm-file
+.RI [ map-file ]
+.YS
+.
+.SY hpftodit
+.B \-\-help
+.YS
+.
+.SY hpftodit
+.B \-v
+.SY hpftodit
+.B \-\-version
+.YS
+.
+.
+.\" ====================================================================
+.SH DESCRIPTION
+.\" ====================================================================
+.
+.B hpftodit
+creates a font file for use with a Hewlett-Packard LaserJet\~\%4-series
+(or newer) printer with
+.BR "groff \-Tlj4" ,
+using data from an HP tagged font metric (TFM) file.
+.
+.I tfm-file
+is the name of the TFM file for the font;
+Intellifont and TrueType TFM files are supported,
+but symbol set TFM files are not.
+.
+.I map-file
+is a file giving the
+.I groff
+names for characters in the font;
+this file should consist of a sequence of lines of the form:
+.RS
+.EX
+.IR "m u c1 c2 " "\&.\|.\|.\& [#" " comment" "]"
+.EE
+.RE
+where
+.I m
+is a decimal integer giving the MSL (Master Symbol List) number of the
+character,
+.I u
+is a hexadecimal integer giving the Unicode value of the character,
+and
+.IR c1 ,
+.IR c2 ", .\|.\|."
+are the
+.I groff
+names of the character
+(see
+.BR groff_char (7)
+for a list).
+.
+The values can be separated by any whitespace;
+the Unicode value must use uppercase digits A\^\[en]\^F,
+and must be without a leading
+.RB \[oq] 0x \[cq],
+.RB \[oq] u \[cq],
+or
+.RB \[oq] U+ \[cq].
+Unicode values corresponding to composite glyphs are decomposed;
+e.g.,
+.RB \[oq] u00C0 \[cq]
+becomes
+.RB \[oq] u0041_0300 \[cq].
+.
+The name for a glyph without a
+.I groff
+name may be given as
+.BI u XXXX
+if the glyph corresponds to a Unicode value,
+or as an unnamed glyph
+.RB \[oq] \-\-\- \[cq].
+.
+If the given Unicode value is in the Private Use Area
+(0xE000\^\[en]\^0xF8FF),
+the glyph is included as an unnamed glyph.
+.
+Refer to
+.BR groff_diff (@MAN1EXT@)
+for additional information about unnamed glyphs and how to access them.
+.
+.
+.LP
+Blank lines and lines beginning with
+.RB \[oq] # \[cq]
+are ignored.
+.
+A
+.RB \[oq] # \[cq]
+following one or more
+.I groff
+names begins a comment.
+.
+Because
+.RB \[oq] # \[cq]
+is a valid
+.I groff
+name,
+it must appear first in a list of
+.I groff
+names if a comment is included,
+e.g.,
+.
+.RS
+.EX
+.B
+3   0023   #   # number sign
+.EE
+.RE
+.
+or
+.
+.RS
+.EX
+.B
+3   0023   # sh   # number sign
+.EE
+.RE
+.
+rather than
+.
+.RS
+.EX
+.B
+3   0023   sh #   # number sign
+.EE
+.RE
+.
+which will treat the first
+.RB \[oq] # \[cq]
+as the beginning of the comment.
+.
+.
+.LP
+The
+.I groff
+font file is written to the specified
+.IR output-font ;
+if this operand is
+.RB \[oq] \- \[cq],
+the font file is written to the standard output.
+.
+.
+.LP
+The
+.B \-s
+option should be given if the font is special
+(a font is \[lq]special\[rq] if
+.I groff
+should search it whenever a character is not found in the current font).
+.
+If the font is special,
+it should be listed in the
+.B fonts
+command in the DESC file;
+if it is not special,
+there is no need to list it,
+since
+.I groff
+can automatically mount it when it's first used.
+.
+.
+.LP
+If the
+.B \-i
+option is used,
+.B hpftodit
+automatically will generate an italic correction,
+a left italic correction and a subscript correction
+for each character
+(the significance of these parameters is explained in
+.BR groff_font (@MAN5EXT@)).
+.
+.
+.\" ====================================================================
+.SH OPTIONS
+.\" ====================================================================
+.
+.TP
+.B \-a
+Include characters in the TFM file that are not included in
+.IR map-file .
+.
+A glyph with corresponding Unicode value is given the name
+.RI u XXXX ;
+a glyph without a Unicode value is included as an unnamed glyph
+\[oq]\-\^\-\^\-\[cq].
+.
+A glyph with a Unicode value in the Private Use Area
+(0xE000\^\[en]\^0xF8FF) also is included as an unnamed glyph.
+.
+.
+.IP
+This option provides a simple means of adding Unicode-named and
+unnamed glyphs to a font without including them in the map file,
+but it affords little control over which glyphs are placed in a regular
+font and which are placed in a special font.
+.
+The presence or absence of the
+.B \-s
+option has some effect on which glyphs are included:
+without the
+.B \-s
+option,
+only the \[lq]text\[rq] symbol sets are searched for matching glyphs;
+with the
+.B \-s
+option,
+only the \[lq]mathematical\[rq] symbol sets are searched.
+.
+Nonetheless,
+restricting the symbol sets searched isn't very selective\[em]many
+glyphs are placed in both regular and special fonts.
+.
+Normally,
+the
+.B \-a
+option should be used only as a last resort.
+.
+.
+.TP
+.B \-d
+Dump information about the TFM file to the standard output;
+this option can be useful for ensuring that a TFM file is a proper match
+for a font,
+and that the contents of the TFM file are suitable.
+.
+The information includes the values of important TFM tags,
+and a listing (by MSL number for Intellifont TFM files or by Unicode
+value for TrueType TFM files) of the glyphs included in the TFM file.
+.
+The unit of measure \[oq]DU\[cq] for some tags indicates design units;
+there are 8782\~design units per em for Intellifont fonts,
+and 2048\~design units per em for TrueType fonts.
+.
+Note that the accessibility of a glyph depends on its inclusion in a
+symbol set;
+some TFM files list many glyphs but only a few symbol sets.
+.
+.IP
+The glyph listing includes the glyph index within the TFM file,
+the MSL or Unicode value,
+and the symbol set and character code that will be used to print the
+glyph.
+.
+If
+.I map-file
+is given,
+.I groff
+names are given for matching glyphs.
+.
+If only the glyph index and MSL or Unicode value are given,
+the glyph does not appear in any supported symbol set and cannot be
+printed.
+.
+.IP
+With the
+.B \-d
+option,
+.I map-file
+is optional,
+and
+.I output-font
+is ignored if given.
+.
+.TP
+.B \-q
+Suppress warnings about characters in the map file that were not found
+in the TFM file.
+.
+Warnings never are given for unnamed glyphs or by glyphs named by their
+Unicode values.
+.
+This option is useful when sending the output of
+.B hpftodit
+to the standard output.
+.
+.TP
+.B \-v
+Print the
+.B hpftodit
+version number and exit.
+.
+.TP
+.B \-s
+The font is special.
+.
+This option adds the
+.B special
+command to the font file,
+and affects the order in which HP symbol sets are searched for each
+glyph.
+.
+Without the
+.B \-s
+option,
+the \[lq]text\[rq] sets are searched before the \[lq]mathematical\[rq]
+symbol sets.
+With the
+.B \-s
+option,
+the search order is reversed.
+.
+.TP
+.BI \-i n
+Generate an italic correction for each character so that the character's
+width plus the character's italic correction is equal to
+.I n
+thousandths of an em plus the amount by which the right edge of the
+character's bounding is to the right of the character's origin.
+.
+If this would result in a negative italic correction,
+use a zero italic correction instead.
+.
+.IP
+Also generate a subscript correction equal to the product of the tangent
+of the slant of the font and four fifths of the x-height of the font.
+.
+If this would result in a subscript correction greater than the italic
+correction,
+use a subscript correction equal to the italic correction instead.
+.
+.IP
+Also generate a left italic correction for each character equal to
+.I n
+thousandths of an em plus the amount by which the left edge of the
+character's bounding box is to the left of the character's origin.
+.
+The left italic correction may be negative.
+.
+.IP
+This option normally is needed only with italic or oblique fonts;
+a value of 50 (0.05\~em) usually is a reasonable choice.
+.
+.
+.\" ====================================================================
+.SH FILES
+.\" ====================================================================
+.
+.TP
+.I @FONTDIR@/\:devlj4/\:DESC
+device description file
+.
+.
+.TP
+.IR @FONTDIR@/\:devlj4/\: F
+Font description file for font
+.I F
+.
+.
+.TP
+.IR @FONTDIR@/\:devlj4/\:generate/\: * .map
+symbol mapping files
+.
+.
+.\" ====================================================================
+.SH "SEE ALSO"
+.\" ====================================================================
+.BR groff (@MAN1EXT@),
+.BR groff_diff (@MAN1EXT@),
+.BR grolj4 (@MAN1EXT@),
+.BR groff_font (@MAN5EXT@),
+.BR lj4_font (@MAN5EXT@)
+.
+.
+.\" Restore compatibility mode (for, e.g., Solaris 10/11).
+.cp \n[hpftodit_C]
+.
+.
+.\" ====================================================================
+.\" Editor settings
+.\" ====================================================================
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" fill-column: 72
+.\" End:
+.\" vim: set filetype=groff textwidth=72:
similarity index 50%
rename from font/devX100/Makefile.sub
rename to src/utils/hpftodit/hpftodit.am
index f0947fd..a7c3466 100644 (file)
@@ -1,37 +1,42 @@
-# Makefile.sub for `font devX100'
+# Automake rules for 'src utils hpftodit'
 #
-# File position: <groff-source>/font/devX100/Makefile.sub
+# File position: <groff-source>/src/utils/hpftodit/hpftodit.am
 #
-# Copyright (C) 2014
-#   Free Software Foundation, Inc.
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
 #
-# Last update: 2 Sep 2014
+# Latest update: 22 Aug 2015
 #
-# This file is part of `font utf8' which is part of `groff'.
-#
-# `groff' is free software; you can redistribute it and/or modify it
+# 'groff' is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
 # the Free Software Foundation, either version 2 of the License, or
 # (at your option) any later version.
 #
-# `groff' is distributed in the hope that it will be useful, but
+# 'groff' 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
+# along with this program.  If not, see
 # <http://www.gnu.org/licenses/gpl-2.0.html>.
 #
 ########################################################################
 
-DEV=X100
-DEVFILES=DESC TR TI TB TBI CR CI CB CBI HR HI HB HBI NR NI NB NBI S
+bin_PROGRAMS += hpftodit
+man1_MANS += src/utils/hpftodit/hpftodit.1
+EXTRA_DIST += src/utils/hpftodit/hpftodit.1.man
+hpftodit_LDADD = libgroff.a $(LIBM) lib/libgnu.a
+hpftodit_SOURCES = \
+  src/utils/hpftodit/hpftodit.cpp \
+  src/utils/hpftodit/hpuni.cpp
+
 
 ########################################################################
-# Emacs settings
+# Editor settings
 ########################################################################
 #
 # Local Variables:
-# mode: makefile
+# mode: makefile-automake
+# fill-column: 72
 # End:
+# vim: set filetype=automake textwidth=72:
index 069608d..1298955 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1994-201 Free Software Foundation, Inc.
+/* Copyright (C) 1994-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 /*
 TODO
@@ -344,7 +344,7 @@ main(int argc, char **argv)
   current_lineno = -1;         // no line numbers
   if (!debug_flag && !equal(argv[optind + 2], "-"))
     if (freopen(argv[optind + 2], "w", stdout) == NULL)
-      fatal("cannot open `%1': %2", argv[optind + 2], strerror(errno));
+      fatal("cannot open '%1': %2", argv[optind + 2], strerror(errno));
   current_filename = argv[optind];
 
   check_units(f, tfm_type, &ppi, &upem);
@@ -403,7 +403,7 @@ File::File(const char *s)
   // on byte counts.
   int fd = open(s, O_RDONLY | O_BINARY);
   if (fd < 0)
-    fatal("cannot open `%1': %2", s, strerror(errno));
+    fatal("cannot open '%1': %2", s, strerror(errno));
   current_filename = s;
   struct stat sb;
   if (fstat(fd, &sb) < 0)
@@ -938,7 +938,7 @@ output_charset(const int tfm_type)
             && charcode_name_table[charcode]) {
       char *name = charcode_name_table[charcode]->name;
       // don't warn about Unicode or unnamed glyphs
-      //  that aren't in the the TFM file
+      //  that aren't in the TFM file
       if (tfm_type == UNICODE && !quiet_flag && !equal(name, UNNAMED)
          && !is_uname(name)) {
        fprintf(stderr, "%s: warning: symbol U+%04X (%s",
@@ -1339,7 +1339,7 @@ read_map(const char *file, const int tfm_type)
   errno = 0;
   FILE *fp = fopen(file, "r");
   if (!fp) {
-    error("can't open `%1': %2", file, strerror(errno));
+    error("can't open '%1': %2", file, strerror(errno));
     return 0;
   }
   current_filename = file;
diff --git a/src/utils/hpftodit/hpftodit.man b/src/utils/hpftodit/hpftodit.man
deleted file mode 100644 (file)
index 0f37a7d..0000000
+++ /dev/null
@@ -1,385 +0,0 @@
-.tr ~
-.TH HPFTODIT @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
-.SH NAME
-hpftodit \- create font description files for use with groff \-Tlj4
-.
-.
-.\" --------------------------------------------------------------------
-.\" Legal Terms
-.\" --------------------------------------------------------------------
-.
-.de co
-Copyright \[co] 1994-2014 Free Software Foundation, Inc.
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the
-entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
-Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be included in
-translations approved by the Free Software Foundation instead of in
-the original English.
-..
-.
-.\" --------------------------------------------------------------------
-.\" Definitions
-.\" --------------------------------------------------------------------
-.
-.\" Like TP, but if specified indent is more than half
-.\" the current line-length - indent, use the default indent.
-.de Tp
-.ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP
-.el .TP "\\$1"
-..
-.de CW
-.ie \\n(.$>2 \&\\$1\f(CR\\$2\fP\\$3
-.el \&\f(CR\\$1\fP\\$2
-..
-.
-.tr ~
-.
-.\" --------------------------------------------------------------------------
-.SH SYNOPSIS
-.\" --------------------------------------------------------------------------
-.B hpftodit
-[
-.B \-adqsv
-]
-[
-.BI \-i n
-]
-.I tfm_file
-.I map_file
-.I font
-.PP
-It is possible to have whitespace between the
-.B \-i
-option and its parameter.
-.
-.
-.\" --------------------------------------------------------------------------
-.SH DESCRIPTION
-.\" --------------------------------------------------------------------------
-.
-.B hpftodit
-creates a font file for use with a Hewlett-Packard LaserJet~4\(enseries
-(or newer) printer with
-.BR "groff \-Tlj4" ,
-using data from an HP tagged font metric (TFM) file.
-.I tfm_file
-is the name of the TFM file for the font; Intellifont and
-TrueType TFM files are supported, but symbol set TFM files are not.
-.I map_file
-is a file giving the groff names for characters in the font; this file
-should consist of a sequence of lines of the form:
-.IP
-.I
-m u c1 c2 \fR.\|.\|. [
-.CW #
-.I comment
-]
-.
-.
-.LP
-where
-.I m
-is a decimal integer giving the MSL number of the character,
-.I u
-is a hexadecimal integer giving the Unicode value of the character,
-and
-.IR c1 ,
-.IR c2 ", .\|.\|."
-are the groff names of the character.
-.
-The values can be separated by any whitespace; the Unicode value must
-use uppercase digits A\^\(en\^F, and must be without a leading
-.CW \[oq] 0x \[cq],
-.CW \[oq] u \[cq],
-or
-.CW \[oq] U+ \[cq].
-Unicode values corresponding to composite glyphs are decomposed; e.g.,
-.CW \[oq] u00C0 \[cq]
-becomes
-.CW \[oq] u0041_0300 \[cq].
-.
-The name for a glyph without a groff name may be given as
-.CW u \fIXXXX\fP
-if the glyph corresponds to a Unicode value, or as an unnamed glyph
-.CW \[oq] --- \[cq].
-.
-If the given Unicode value is in the Private Use Area
-(0xE000\^\(en\^0xF8FF), the glyph is included as an unnamed glyph.
-.
-Refer to
-.BR groff_diff (@MAN1EXT@)
-for additional information about unnamed glyphs and how to access them.
-.
-.
-.LP
-Blank lines and lines beginning with
-.CW \[oq] # \[cq]
-are ignored.
-.
-A
-.CW \[oq] # \[cq]
-following one or more groff names begins a comment.
-.
-Because
-.CW \[oq] # \[cq]
-is a valid groff name, it must appear first in a list of
-groff names if a comment is included, e.g.,
-.IP
-.CW "3   0023   #   # number sign"
-.LP
-or
-.IP
-.CW "3   0023   # sh   # number sign"
-.LP
-rather than
-.IP
-.CW "3   0023   sh #   # number sign"
-.LP
-which will treat the first
-.CW \[oq] # \[cq]
-as the beginning of the comment.
-.
-.
-.LP
-.I font
-is the name of the groff font file.
-.
-The groff font file is written to
-.IR font ;
-if
-.I font
-is specified as
-.CW \[oq] - \[cq],
-the output is written to the standard output.
-.
-.
-.LP
-The
-.B \-s
-option should be given if the font is special
-(a font is
-.I special
-if
-.B troff
-should search it whenever
-a character is not found in the current font).
-.
-If the font is special,
-it should be listed in the
-.B fonts
-command in the DESC file;
-if it is not special, there is no need to list it, since
-.B troff
-can automatically mount it when it\[aq]s first used.
-.
-.
-.LP
-If the
-.B \-i
-option is used,
-.B hpftodit
-automatically will generate an italic correction,
-a left italic correction and a subscript correction
-for each character
-(the significance of these parameters is explained in
-.BR groff_font (@MAN5EXT@)).
-.
-.
-.\" --------------------------------------------------------------------------
-.SH OPTIONS
-.\" --------------------------------------------------------------------------
-.
-.TP
-.B \-a
-Include characters in the TFM file that are not included in the map
-file.
-.
-A glyph with corresponding Unicode value is given the name
-.RI u XXXX ;
-a glyph without a Unicode value is included as an unnamed glyph
-\&\[oq]\-\^\-\^\-\[cq].
-.
-A glyph with a Unicode value in the Private Use Area
-(0xE000\^\(en\^0xF8FF) also is included as an unnamed glyph.
-.
-.IP
-This option provides a simple means of adding Unicode-named and
-unnamed glyphs to a font without including them in the map file, but
-it affords little control over which glyphs are placed in a regular
-font and which are placed in a special font.
-.
-The presence or absence of the
-.B \-s
-option has some effect on which glyphs are included: without the
-.B \-s
-option, only the \(lqtext\(rq symbol sets are searched for matching
-glyphs; with the
-.B \-s
-option, only the \(lqmathematical\(rq symbol sets
-are searched.
-.
-Nonetheless, restricting the symbol sets searched isn\[aq]t very
-selective\(emmany glyphs are placed in both regular and special fonts.
-.
-Normally, the
-.B \-a
-option should be used only as a last resort.
-.
-.
-.TP
-.B \-d
-Dump information about the TFM file to the standard output; this
-option can be useful for ensuring that a TFM file is a proper match
-for a font, and that the contents of the TFM file are suitable.
-.
-The information includes the values of important TFM tags, and a
-listing (by MSL number for Intellifont TFM files or by Unicode value
-for TrueType TFM files) of the glyphs included in the TFM file.
-.
-The unit of measure \[oq]DU\[cq] for some tags indicates design units;
-there are 8782 design units per em for Intellifont fonts, and 2048
-design units per em for TrueType fonts.
-.
-Note that the accessibility of a glyph depends on its inclusion in a
-symbol set; some TFM files list many glyphs but only a few symbol
-sets.
-.
-.IP
-The glyph listing includes the glyph index within the TFM file, the MSL
-or Unicode value, and the symbol set and character code that will be
-used to print the glyph.
-.
-If
-.I map_file
-is given,
-groff names are given for matching glyphs.
-.
-If only the glyph index and MSL or Unicode value are given, the glyph
-does not appear in any supported symbol set and cannot be printed.
-.
-.IP
-With the
-.B \-d
-option,
-.I map_file
-is optional, and
-.I font
-is ignored if given.
-.
-.TP
-.B \-q
-Suppress warnings about characters in the map file that were not found
-in the TFM file.
-.
-Warnings never are given for unnamed glyphs or by glyphs named by their
-Unicode values.
-.
-This option is useful when sending the output of
-.B hpftodit
-to the standard output.
-.
-.TP
-.B \-v
-Print the
-.B hpftodit
-version number.
-.
-.TP
-.B \-s
-The font is special.
-.
-This option adds the
-.B special
-command to the font file, and affects the order in which HP symbol sets
-are searched for each glyph.
-.
-Without the
-.B \-s
-option, the \[lq]text\[rq] sets are searched before
-the \[lq]mathematical\[rq] symbol sets.
-With the
-.B \-s
-option, the search order is reversed.
-.
-.TP
-.BI \-i n
-Generate an italic correction for each character so that the
-character\[aq]s width plus the character\[aq]s italic correction is
-equal to
-.I n
-thousandths of an em plus the amount by which the right edge of the
-character\[aq]s bounding is to the right of the character\[aq]s
-origin.
-.
-If this would result in a negative italic correction, use a zero italic
-correction instead.
-.
-.IP
-Also generate a subscript correction equal to the product of the
-tangent of the slant of the font and four fifths of the x-height of
-the font.
-.
-If this would result in a subscript correction greater than the italic
-correction, use a subscript correction equal to the italic correction
-instead.
-.
-.IP
-Also generate a left italic correction for each character equal to
-.I n
-thousandths of an em plus the amount by which the left edge of the
-character\[aq]s bounding box is to the left of the character\[aq]s
-origin.
-.
-The left italic correction may be negative.
-.
-.IP
-This option normally is needed only with italic or oblique fonts;
-a value of 50 (0.05 em) usually is a reasonable choice.
-.
-.
-.\" --------------------------------------------------------------------------
-.SH FILES
-.\" --------------------------------------------------------------------------
-.
-.ad 0
-.TP \w'\fB@FONTDIR@/devlj4/generate/\fP\,\fI*\/\fP.map'u+2n
-.B @FONTDIR@/devlj4/DESC
-Device description file.
-.TP
-.BI @FONTDIR@/devlj4/ F
-Font description file for font
-.IR F .
-.TP
-.BI @FONTDIR@/devlj4/generate/ * .map
-Symbol mapping files
-.
-.
-.\" --------------------------------------------------------------------
-.SH "SEE ALSO"
-.\" --------------------------------------------------------------------
-.BR groff (@MAN1EXT@),
-.BR groff_diff (@MAN1EXT@),
-.BR grolj4 (@MAN1EXT@),
-.BR groff_font (@MAN5EXT@),
-.BR lj4_font (@MAN5EXT@)
-.
-.
-.\" --------------------------------------------------------------------
-.SH "COPYING"
-.\" --------------------------------------------------------------------
-.co
-.
-.
-.\" Local Variables:
-.\" mode: nroff
-.\" End:
index 6622e28..72f1742 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 2003-201 Free Software Foundation, Inc.
+/* Copyright (C) 2003-2018 Free Software Foundation, Inc.
      Written by Jeff Conrad (jeff_conrad@msn.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include "lib.h"
 #include "stringclass.h"
diff --git a/src/utils/indxbib/Makefile.sub b/src/utils/indxbib/Makefile.sub
deleted file mode 100644 (file)
index 466f627..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-# Makefile.sub for `src utils indxbib'
-#
-# File position: <groff-source>/src/utils/indxbib/Makefile.sub
-#
-# Copyright (C) 2014  Free Software Foundation, Inc.
-#
-# This file is part of `font utf8' which is part of `groff'.
-#
-# `groff' is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 2 of the License, or
-# (at your option) any later version.
-#
-# `groff' 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
-# <http://www.gnu.org/licenses/gpl-2.0.html>.
-#
-########################################################################
-
-PROG=indxbib$(EXEEXT)
-MAN1=indxbib.n
-XLIBS=$(LIBBIB) $(LIBGROFF)
-MLIB=$(LIBM)
-OBJS=\
-  indxbib.$(OBJEXT) \
-  signal.$(OBJEXT)
-CCSRCS=\
-  $(srcdir)/indxbib.cpp
-CSRCS=\
-  $(srcdir)/signal.c
-NAMEPREFIX=$(g)
-RM=rm -f
-
-install_data: $(srcdir)/eign
-       -test -d $(DESTDIR)$(datadir) \
-         || $(mkinstalldirs) $(DESTDIR)$(datadir)
-       -test -d $(DESTDIR)$(dataprogramdir) \
-         || $(mkinstalldirs) $(DESTDIR)$(dataprogramdir)
-       -test -d $(DESTDIR)$(datasubdir) \
-         || $(mkinstalldirs) $(DESTDIR)$(datasubdir)
-       if test -f /usr/lib/eign; then \
-         $(MK) $(DESTDIR)$(common_words_file); \
-         ln -s /usr/lib/eign $(DESTDIR)$(common_words_file) 2>/dev/null \
-           || ln /usr/lib/eign $(DESTDIR)$(common_words_file) 2>/dev/null \
-           || cp /usr/lib/eign $(DESTDIR)$(common_words_file); \
-       else \
-         $(RM) $(DESTDIR)$(common_words_file); \
-         $(INSTALL_DATA) $(srcdir)/eign $(DESTDIR)$(common_words_file); \
-       fi
-
-uninstall_sub:
-       $(RM) $(DESTDIR)$(common_words_file)
-
-########################################################################
-# Emacs settings
-########################################################################
-#
-# Local Variables:
-# mode: makefile
-# End:
similarity index 57%
rename from src/utils/indxbib/indxbib.man
rename to src/utils/indxbib/indxbib.1.man
index 313e6c0..25a6aab 100644 (file)
@@ -1,42 +1,36 @@
-.TH @G@INDXBIB @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
+.TH @G@INDXBIB @MAN1EXT@ "@MDATE@" "groff @VERSION@"
 .SH NAME
 @g@indxbib \- make inverted index for bibliographic databases
 .
 .
-.de co
-Copyright \[co] 1989-2014 Free Software Foundation, Inc.
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the
-entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
-Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be included in
-translations approved by the Free Software Foundation instead of in
-the original English.
-..
-.
-.\" --------------------------------------------------------------------
+.\" ====================================================================
+.\" Legal Terms
+.\" ====================================================================
+.\"
+.\" Copyright (C) 1989-2018 Free Software Foundation, Inc.
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of
+.\" this manual under the conditions for verbatim copying, provided that
+.\" the entire resulting derived work is distributed under the terms of
+.\" a permission notice identical to this one.
+.\"
+.\" Permission is granted to copy and distribute translations of this
+.\" manual into another language, under the above conditions for
+.\" modified versions, except that this permission notice may be
+.\" included in translations approved by the Free Software Foundation
+.\" instead of in the original English.
+.
+.
+.\" ====================================================================
 .SH SYNOPSIS
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
-.nr a \n(.j
-.ad l
-.nr i \n(.i
-.in +\w'\fB@g@indxbib 'u
-.ti \niu
-.B @g@indxbib
-.de OP
-.ie \\n(.$-1 .RI "[\ \fB\\$1\fP" "\\$2" "\ ]"
-.el .RB "[\ " "\\$1" "\ ]"
-..
-.OP \-vw
+.SY @g@indxbib
+.OP \-w
 .OP \-c file
 .OP \-d dir
 .OP \-f file
@@ -47,13 +41,23 @@ the original English.
 .OP \-n n
 .OP \-o file
 .OP \-t n
-.RI [\  filename \|.\|.\|.\ ]
-.ad \na
+.RI [ filename
+\&.\|.\|.\&]
+.YS
+.
+.SY @g@indxbib
+.B \-\-help
+.YS
 .
+.SY @g@indxbib
+.B \-v
+.SY @g@indxbib
+.B \-\-version
+.YS
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH DESCRIPTION
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .B @g@indxbib
 makes an inverted index for the bibliographic databases in
@@ -65,7 +69,7 @@ and
 .BR lkbib (@MAN1EXT@).
 .
 The index will be named
-.IB filename @INDEX_SUFFIX@\fR;
+.RI filename @INDEX_SUFFIX@ ;
 the index is written to a temporary file which is then renamed to
 this.
 .
@@ -74,7 +78,7 @@ If no filenames are given on the command line because the
 option has been used, and no
 .B \-o
 option is given, the index will be named
-.BR @DEFAULT_INDEX_NAME@@INDEX_SUFFIX@ .
+.IR @DEFAULT_INDEX_NAME@@INDEX_SUFFIX@ .
 .
 .
 .LP
@@ -92,7 +96,7 @@ character.
 The values set by the
 .BR \-c ,
 .BR \-n ,
-.BR \-l
+.BR \-l ,
 and
 .B \-t
 options are stored in the index;
@@ -114,12 +118,12 @@ option is also stored in the index
 and will be used in verifying records found using the index.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH OPTIONS
-.\" --------------------------------------------------------------------
+.\" ====================================================================
+.
+Whitespace is permitted between a command-line option and its argument.
 .
-It is possible to have whitespace between a command line option and its
-parameter.
 .
 .TP
 .B \-v
@@ -136,7 +140,7 @@ Each file is a separate record.
 Read the list of common words from
 .I file
 instead of
-.BR @COMMON_WORDS_FILE@ .
+.IR @COMMON_WORDS_FILE@ .
 .
 .TP
 .BI \-d dir
@@ -167,7 +171,7 @@ option can be given at most once.
 .
 .TP
 .BI \-i string
-Don\[aq]t index the contents of fields whose names are in
+Don't index the contents of fields whose names are in
 .IR string .
 .
 Initially
@@ -225,7 +229,7 @@ is 100.
 .TP
 .BI \-o basename
 The index should be named
-.IB basename @INDEX_SUFFIX@\fR.
+.RI basename @INDEX_SUFFIX@ .
 .
 .TP
 .BI \-t n
@@ -237,41 +241,36 @@ Initially
 is 6.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH FILES
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
-.TP \w'\fBindxbib\fIXXXXXX'u+2n
-.IB filename @INDEX_SUFFIX@
+.TP
+.RI filename @INDEX_SUFFIX@
 Index.
 .
 .TP
-.B @DEFAULT_INDEX_NAME@@INDEX_SUFFIX@
+.I @DEFAULT_INDEX_NAME@@INDEX_SUFFIX@
 Default index name.
 .
 .TP
-.B @COMMON_WORDS_FILE@
+.I @COMMON_WORDS_FILE@
 List of common words.
 .
 .TP
-.BI indxbib XXXXXX
+.IR indxbib XXXXXX
 Temporary file.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "SEE ALSO"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .BR @g@refer (@MAN1EXT@),
 .BR lkbib (@MAN1EXT@),
 .BR @g@lookbib (@MAN1EXT@)
 .
 .
-.\" --------------------------------------------------------------------
-.SH COPYING
-.\" --------------------------------------------------------------------
-.co
-.
-.
 .\" Local Variables:
 .\" mode: nroff
 .\" End:
+.\" vim: set filetype=groff:
diff --git a/src/utils/indxbib/indxbib.am b/src/utils/indxbib/indxbib.am
new file mode 100644 (file)
index 0000000..221ed58
--- /dev/null
@@ -0,0 +1,59 @@
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Latest update: 22 Aug 2015
+#
+# This file is part of groff.
+#
+# groff 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.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+
+indxbib_srcdir = $(top_srcdir)/src/utils/indxbib
+prefixexecbin_PROGRAMS += indxbib
+indxbib_SOURCES = \
+  src/utils/indxbib/indxbib.cpp \
+  src/utils/indxbib/signal.c
+src/utils/indxbib/indxbib.$(OBJEXT): defs.h
+indxbib_LDADD = libbib.a libgroff.a $(LIBM) lib/libgnu.a
+PREFIXMAN1 += src/utils/indxbib/indxbib.1
+EXTRA_DIST += \
+  src/utils/indxbib/indxbib.1.man \
+  src/utils/indxbib/eign
+
+install-data-local: install_indxbib
+install_indxbib: $(indxbib_srcdir)/eign
+       -test -d $(DESTDIR)$(datadir) \
+         || $(mkinstalldirs) $(DESTDIR)$(datadir)
+       -test -d $(DESTDIR)$(dataprogramdir) \
+         || $(mkinstalldirs) $(DESTDIR)$(dataprogramdir)
+       -test -d $(DESTDIR)$(datasubdir) \
+         || $(mkinstalldirs) $(DESTDIR)$(datasubdir)
+       if test -f /usr/lib/eign; then \
+         rm -f $(DESTDIR)$(common_words_file); \
+         ln -s /usr/lib/eign $(DESTDIR)$(common_words_file) 2>/dev/null \
+           || ln /usr/lib/eign $(DESTDIR)$(common_words_file) 2>/dev/null \
+           || cp /usr/lib/eign $(DESTDIR)$(common_words_file); \
+       else \
+         rm -f $(DESTDIR)$(common_words_file); \
+         $(INSTALL_DATA) $(indxbib_srcdir)/eign $(DESTDIR)$(common_words_file); \
+       fi
+
+uninstall-local: uninstall_indxbib
+uninstall_indxbib:
+       rm -f $(DESTDIR)$(common_words_file)
+
+
+########################################################################
+### Emacs settings
+# Local Variables:
+# mode: makefile-automake
+# End:
index ee568d8..018e53e 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include "lib.h"
 
@@ -221,7 +221,7 @@ int main(int argc, char **argv)
     name_max = file_name_max(".");
   const char *filename = p ? p + 1 : base_name;
   if (strlen(filename) + sizeof(INDEX_SUFFIX) - 1 > name_max)
-    fatal("`%1.%2' is too long for a filename", filename, INDEX_SUFFIX);
+    fatal("'%1.%2' is too long for a filename", filename, INDEX_SUFFIX);
   if (p) {
     p++;
     temp_index_file = new char[p - base_name + sizeof(TEMP_INDEX_TEMPLATE)];
@@ -247,7 +247,7 @@ int main(int argc, char **argv)
       errno = 0;
       fp = fopen(foption, "r");
       if (!fp)
-       fatal("can't open `%1': %2", foption, strerror(errno));
+       fatal("can't open '%1': %2", foption, strerror(errno));
     }
     string path;
     int lineno = 1;
@@ -307,7 +307,7 @@ int main(int argc, char **argv)
   ignore_fatal_signals();
   if (unlink(index_file) < 0) {
     if (errno != ENOENT)
-      fatal("can't unlink `%1': %2", index_file, strerror(errno));
+      fatal("can't unlink '%1': %2", index_file, strerror(errno));
   }
   if (link(temp_index_file, index_file) < 0)
     fatal("can't link temporary index file: %1", strerror(errno));
@@ -379,7 +379,7 @@ static void read_common_words_file()
   errno = 0;
   FILE *fp = fopen(common_words_file, "r");
   if (!fp)
-    fatal("can't open `%1': %2", common_words_file, strerror(errno));
+    fatal("can't open '%1': %2", common_words_file, strerror(errno));
   common_words_table = new word_list * [hash_table_size];
   for (int i = 0; i < hash_table_size; i++)
     common_words_table[i] = 0;
@@ -416,7 +416,7 @@ static int do_whole_file(const char *filename)
   errno = 0;
   FILE *fp = fopen(filename, "r");
   if (!fp) {
-    error("can't open `%1': %2", filename, strerror(errno));
+    error("can't open '%1': %2", filename, strerror(errno));
     return 0;
   }
   int count = 0;
@@ -453,7 +453,7 @@ static int do_file(const char *filename)
   // byte counts to be consistent with fseek.
   FILE *fp = fopen(filename, FOPEN_RB);
   if (fp == 0) {
-    error("can't open `%1': %2", filename, strerror(errno));
+    error("can't open '%1': %2", filename, strerror(errno));
     return 0;
   }
   int filename_index = filenames.length();
index 4ff6fa9..aaf42fb 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1992-201 Free Software Foundation, Inc.
+/* Copyright (C) 1992-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -14,7 +14,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 /* Unfortunately vendors seem to have problems writing a <signal.h>
 that is correct for C++, so we implement all signal handling in C. */
@@ -35,6 +35,9 @@ that is correct for C++, so we implement all signal handling in C. */
 extern "C" {
 #endif
 
+/* Prototype */
+void catch_fatal_signals(void);
+
 extern void cleanup(void);
 
 static RETSIGTYPE handle_fatal_signal(int signum)
diff --git a/src/utils/lkbib/Makefile.sub b/src/utils/lkbib/Makefile.sub
deleted file mode 100644 (file)
index bbd78c8..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-# Makefile.sub for `src utils lkbib'
-#
-# File position: <groff-source>/src/utils/lkbib/Makefile.sub
-#
-# Copyright (C) 2014  Free Software Foundation, Inc.
-#
-# This file is part of `font utf8' which is part of `groff'.
-#
-# `groff' is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 2 of the License, or
-# (at your option) any later version.
-#
-# `groff' 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
-# <http://www.gnu.org/licenses/gpl-2.0.html>.
-#
-########################################################################
-
-PROG=lkbib$(EXEEXT)
-MAN1=lkbib.n
-XLIBS=$(LIBBIB) $(LIBGROFF)
-MLIB=$(LIBM)
-OBJS=lkbib.$(OBJEXT)
-CCSRCS=$(srcdir)/lkbib.cpp
-
-########################################################################
-# Emacs settings
-########################################################################
-#
-# Local Variables:
-# mode: makefile
-# End:
diff --git a/src/utils/lkbib/lkbib.1.man b/src/utils/lkbib/lkbib.1.man
new file mode 100644 (file)
index 0000000..566900c
--- /dev/null
@@ -0,0 +1,166 @@
+.TH LKBIB @MAN1EXT@ "@MDATE@" "groff @VERSION@"
+.SH NAME
+lkbib \- search bibliographic databases
+.
+.
+.\" ====================================================================
+.\" Legal Terms
+.\" ====================================================================
+.\"
+.\" Copyright (C) 1989-2018 Free Software Foundation, Inc.
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of
+.\" this manual under the conditions for verbatim copying, provided that
+.\" the entire resulting derived work is distributed under the terms of
+.\" a permission notice identical to this one.
+.\"
+.\" Permission is granted to copy and distribute translations of this
+.\" manual into another language, under the above conditions for
+.\" modified versions, except that this permission notice may be
+.\" included in translations approved by the Free Software Foundation
+.\" instead of in the original English.
+.
+.
+.\" ====================================================================
+.SH SYNOPSIS
+.\" ====================================================================
+.
+.SY lkbib
+.OP \-n
+.OP \-i fields
+.OP \-p filename
+.OP \-t n
+.I key
+\&.\|.\|.\&
+.YS
+.
+.SY lkbib
+.B \-\-help
+.YS
+.
+.SY lkbib
+.B \-v
+.SY lkbib
+.B \-\-version
+.YS
+.
+.
+.\" ====================================================================
+.SH DESCRIPTION
+.\" ====================================================================
+.
+.I lkbib
+searches bibliographic databases for references that contain the keys
+.I key
+\&.\|.\|.\& and prints any references found on the standard output.
+.
+.I lkbib
+will search any databases given by
+.B \-p
+options, and then a default database.
+.
+The default database is taken from the
+.I \%REFER
+environment variable if it is set,
+otherwise it is
+.IR @DEFAULT_INDEX@ .
+.
+For each database
+.I filename
+to be searched,
+if an index
+.RI filename @INDEX_SUFFIX@
+created by
+.IR @g@indxbib (@MAN1EXT@)
+exists, then it will be searched instead;
+each index can cover multiple databases.
+.
+.
+.\" ====================================================================
+.SH OPTIONS
+.\" ====================================================================
+.
+Whitespace is permitted between a command-line option and its argument.
+.
+.
+.TP
+.B \-\-help
+Display a usage message and exit.
+.
+.
+.TP
+.BI \-i string
+When searching files for which no index exists,
+ignore the contents of fields whose names are in
+.IR string .
+.
+.
+.TP
+.BI \-p filename
+Search
+.IR filename .
+.
+Multiple
+.B \-p
+options can be used.
+.
+.
+.TP
+.BI \-t n
+Only require the first
+.I n
+characters of keys to be given.
+.
+Initially
+.I n
+is\~6.
+.
+.
+.TP
+.B \-v
+.TQ
+.B \-\-version
+Display version information and exit.
+.
+.
+.\" ====================================================================
+.SH ENVIRONMENT
+.\" ====================================================================
+.
+.TP
+.I REFER
+Default database.
+.
+.
+.\" ====================================================================
+.SH FILES
+.\" ====================================================================
+.
+.TP
+.I @DEFAULT_INDEX@
+Default database to be used if the
+.I \%REFER
+environment variable is not set.
+.
+.
+.TP
+.RI filename @INDEX_SUFFIX@
+Index files.
+.
+.
+.\" ====================================================================
+.SH "SEE ALSO"
+.\" ====================================================================
+.IR @g@refer (@MAN1EXT@),
+.IR @g@lookbib (@MAN1EXT@),
+.IR @g@indxbib (@MAN1EXT@)
+.
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" End:
+.\" vim: set filetype=groff:
similarity index 60%
rename from arch/misc/Makefile.sub
rename to src/utils/lkbib/lkbib.am
index db61b43..2ac97b6 100644 (file)
@@ -1,5 +1,6 @@
-# Copyright (C) 2004-2014 Free Software Foundation, Inc.
-#      Written by Keith Marshall (keith.d.marshall@ntlworld.com)
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Latest update: 22 Aug 2015
 #
 # This file is part of groff.
 #
 # for more details.
 #
 # You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-MOSTLYCLEANADD=shdeps.sed
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-all: shdeps.sed
+bin_PROGRAMS += lkbib
+man1_MANS += src/utils/lkbib/lkbib.1
+EXTRA_DIST += src/utils/lkbib/lkbib.1.man
+lkbib_LDADD = libbib.a libgroff.a $(LIBM) lib/libgnu.a
+lkbib_SOURCES = src/utils/lkbib/lkbib.cpp
+src/utils/lkbib/lkbib.$(OBJEXT): defs.h
 
-shdeps.sed: $(srcdir)/shdeps.sh
-       $(SHELL) $(srcdir)/shdeps.sh "$(RT_SEP)" "$(SH_SEP)" "$(bindir)" > $@
 
 ########################################################################
-# Emacs settings
-########################################################################
-#
+### Emacs settings
 # Local Variables:
-# mode: makefile
+# mode: makefile-automake
 # End:
index b1fa691..06f56de 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include "lib.h"
 
@@ -68,7 +68,7 @@ int main(int argc, char **argv)
        char *ptr;
        long n = strtol(optarg, &ptr, 10);
        if (n == 0 && ptr == optarg) {
-         error("bad integer `%1' in `t' option", optarg);
+         error("bad integer '%1' in 't' option", optarg);
          break;
        }
        if (n < 1)
diff --git a/src/utils/lkbib/lkbib.man b/src/utils/lkbib/lkbib.man
deleted file mode 100644 (file)
index fa7eb2a..0000000
+++ /dev/null
@@ -1,169 +0,0 @@
-.TH LKBIB @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
-.SH NAME
-lkbib \- search bibliographic databases
-.
-.
-.\" --------------------------------------------------------------------
-.\" Legal Terms
-.\" --------------------------------------------------------------------
-.
-.de co
-Copyright \[co] 1989-2014 Free Software Foundation, Inc.
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the
-entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
-Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be included in
-translations approved by the Free Software Foundation instead of in
-the original English.
-..
-.
-.\" --------------------------------------------------------------------
-.\" Definitions
-.\" --------------------------------------------------------------------
-.
-.\" Like TP, but if specified indent is more than half
-.\" the current line-length - indent, use the default indent.
-.de Tp
-.  ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP
-.  el .TP "\\$1"
-..
-.
-.\" --------------------------------------------------------------------
-.SH SYNOPSIS
-.\" --------------------------------------------------------------------
-.
-.B lkbib
-[
-.B \-v
-]
-[
-.BI \-i fields
-]
-[
-.BI \-p filename
-]
-[
-.BI \-t n
-]
-.IR key \|.\|.\|.
-.
-.
-.\" --------------------------------------------------------------------
-.SH DESCRIPTION
-.\" --------------------------------------------------------------------
-.
-.B lkbib
-searches bibliographic databases for references that contain the keys
-.IR key \|.\|.\|.\&
-and prints any references found on the standard output.
-.
-.B lkbib
-will search any databases given by
-.B \-p
-options, and then a default database.
-.
-The default database is taken from the
-.SB REFER
-environment variable if it is set,
-otherwise it is
-.BR @DEFAULT_INDEX@ .
-.
-For each database
-.I filename
-to be searched,
-if an index
-.IB filename @INDEX_SUFFIX@
-created by
-.BR @g@indxbib (@MAN1EXT@)
-exists, then it will be searched instead;
-each index can cover multiple databases.
-.
-.
-.\" --------------------------------------------------------------------
-.SH OPTIONS
-.\" --------------------------------------------------------------------
-.
-It is possible to have whitespace between a command line option and its
-parameter.
-.
-.
-.TP
-.B \-v
-Print the version number.
-.
-.TP
-.BI \-p filename
-Search
-.IR filename .
-.
-Multiple
-.B \-p
-options can be used.
-.
-.TP
-.BI \-i string
-When searching files for which no index exists,
-ignore the contents of fields whose names are in
-.IR string .
-.
-.TP
-.BI \-t n
-Only require the first
-.I n
-characters of keys to be given.
-.
-Initially
-.I n
-is\~6.
-.
-.
-.\" --------------------------------------------------------------------
-.SH ENVIRONMENT
-.\" --------------------------------------------------------------------
-.
-.TP \w'\fBREFER'u+2n
-.SB REFER
-Default database.
-.
-.
-.\" --------------------------------------------------------------------
-.SH FILES
-.\" --------------------------------------------------------------------
-.
-.Tp \w'\fB@DEFAULT_INDEX@'u+2n
-.B @DEFAULT_INDEX@
-Default database to be used if the
-.SB REFER
-environment variable is not set.
-.
-.TP
-.IB filename @INDEX_SUFFIX@
-Index files.
-.
-.
-.\" --------------------------------------------------------------------
-.SH "SEE ALSO"
-.\" --------------------------------------------------------------------
-.BR @g@refer (@MAN1EXT@),
-.BR @g@lookbib (@MAN1EXT@),
-.BR @g@indxbib (@MAN1EXT@)
-.
-.
-.\" --------------------------------------------------------------------
-.SH COPYING
-.\" --------------------------------------------------------------------
-.co
-.
-.
-.\" Local Variables:
-.\" mode: nroff
-.\" End:
diff --git a/src/utils/lookbib/Makefile.sub b/src/utils/lookbib/Makefile.sub
deleted file mode 100644 (file)
index 8e42cbb..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-# Makefile.sub for `src utils lookbib'
-#
-# File position: <groff-source>/src/utils/lookbib/Makefile.sub
-#
-# Copyright (C) 2014  Free Software Foundation, Inc.
-#
-# This file is part of `font utf8' which is part of `groff'.
-#
-# `groff' is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 2 of the License, or
-# (at your option) any later version.
-#
-# `groff' 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
-# <http://www.gnu.org/licenses/gpl-2.0.html>.
-#
-########################################################################
-
-PROG=lookbib$(EXEEXT)
-MAN1=lookbib.n
-XLIBS=$(LIBBIB) $(LIBGROFF)
-MLIB=$(LIBM)
-OBJS=lookbib.$(OBJEXT)
-CCSRCS=$(srcdir)/lookbib.cpp
-NAMEPREFIX=$(g)
-
-########################################################################
-# Emacs settings
-########################################################################
-#
-# Local Variables:
-# mode: makefile
-# End:
diff --git a/src/utils/lookbib/lookbib.1.man b/src/utils/lookbib/lookbib.1.man
new file mode 100644 (file)
index 0000000..b395226
--- /dev/null
@@ -0,0 +1,131 @@
+.TH @G@LOOKBIB @MAN1EXT@ "@MDATE@" "groff @VERSION@"
+.SH NAME
+@g@lookbib \- search bibliographic databases
+.
+.
+.\" ====================================================================
+.\" Legal Terms
+.\" ====================================================================
+.\"
+.\" Copyright (C) 1989-2018 Free Software Foundation, Inc.
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of
+.\" this manual under the conditions for verbatim copying, provided that
+.\" the entire resulting derived work is distributed under the terms of
+.\" a permission notice identical to this one.
+.\"
+.\" Permission is granted to copy and distribute translations of this
+.\" manual into another language, under the above conditions for
+.\" modified versions, except that this permission notice may be
+.\" included in translations approved by the Free Software Foundation
+.\" instead of in the original English.
+.
+.
+.\" ====================================================================
+.SH SYNOPSIS
+.\" ====================================================================
+.
+.SY @g@lookbib
+.OP \-i string
+.OP \-t n
+.I filename
+\&.\|.\|.\&
+.YS
+.
+.SY @g@lookbib
+.B \-\-help
+.YS
+.
+.SY @g@lookbib
+.B \-v
+.SY @g@lookbib
+.B \-\-version
+.YS
+.
+.
+.\" ====================================================================
+.SH DESCRIPTION
+.\" ====================================================================
+.
+.I @g@lookbib
+prints a prompt on the standard error (unless the standard input is not
+a terminal),
+reads from the standard input a line containing a set of keywords,
+searches the bibliographic databases
+.I filename
+\&.\|.\|.\& for references containing those keywords,
+prints any references found on the standard output,
+and repeats this process until the end of input.
+.
+For each database
+.I filename
+to be searched,
+if an index
+.RI filename @INDEX_SUFFIX@
+created by
+.IR @g@indxbib (@MAN1EXT@)
+exists, then it will be searched instead;
+each index can cover multiple databases.
+.
+.
+.\" ====================================================================
+.SH OPTIONS
+.\" ====================================================================
+.
+Whitespace is permitted between a command-line option and its argument.
+.
+.
+.TP
+.B \-\-help
+Display a usage message and exit.
+.
+.
+.TP
+.BI \-i string
+When searching files for which no index exists,
+ignore the contents of fields whose names are in
+.IR string .
+.
+.
+.TP
+.BI \-t n
+Only require the first
+.I n
+characters of keys to be given.
+Initially
+.I n
+is\~6.
+.
+.
+.TP
+.B \-v
+.TQ
+.B \-\-version
+Display version information and exit.
+.
+.
+.\" ====================================================================
+.SH FILES
+.\" ====================================================================
+.
+.TP
+.RI filename @INDEX_SUFFIX@
+Index files.
+.
+.
+.\" ====================================================================
+.SH "SEE ALSO"
+.\" ====================================================================
+.IR @g@refer (@MAN1EXT@),
+.IR lkbib (@MAN1EXT@),
+.IR @g@indxbib (@MAN1EXT@)
+.
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" End:
+.\" vim: set filetype=groff:
similarity index 61%
rename from Makefile.dev
rename to src/utils/lookbib/lookbib.am
index 43be225..2557575 100644 (file)
@@ -1,5 +1,6 @@
-# Copyright (C) 1989-2014 Free Software Foundation, Inc.
-#   Written by James Clark (jjc@jclark.com)
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Latest update: 22 Aug 2015
 #
 # This file is part of groff.
 #
 # for more details.
 #
 # You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-#
-# Makefile.dev
-#
-all: $(DEVFILES) $(DEVSCRIPTS)
-install_data: install_dev
-uninstall_sub: uninstall_dev
-install_dev: $(DEVFILES) $(DEVSCRIPTS)
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+prefixexecbin_PROGRAMS += lookbib
+PREFIXMAN1 += src/utils/lookbib/lookbib.1
+EXTRA_DIST += src/utils/lookbib/lookbib.1.man
+lookbib_LDADD = libbib.a libgroff.a $(LIBM) lib/libgnu.a
+lookbib_SOURCES = src/utils/lookbib/lookbib.cpp
+
 
 ########################################################################
-# Emacs settings
-########################################################################
-#
+### Emacs settings
 # Local Variables:
-# mode: makefile
+# mode: makefile-automake
 # End:
index 6b3faa6..f3f82e5 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include "lib.h"
 
@@ -34,9 +34,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. */
 #include "posix.h"
 #include "nonposix.h"
 
-extern "C" {
-  const char *Version_string;
-}
+extern "C" const char *Version_string;
 
 static void usage(FILE *stream)
 {
@@ -68,7 +66,7 @@ int main(int argc, char **argv)
        char *ptr;
        long n = strtol(optarg, &ptr, 10);
        if (n == 0 && ptr == optarg) {
-         error("bad integer `%1' in `t' option", optarg);
+         error("bad integer '%1' in 't' option", optarg);
          break;
        }
        if (n < 1)
diff --git a/src/utils/lookbib/lookbib.man b/src/utils/lookbib/lookbib.man
deleted file mode 100644 (file)
index 3947046..0000000
+++ /dev/null
@@ -1,123 +0,0 @@
-.TH @G@LOOKBIB @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
-.SH NAME
-@g@lookbib \- search bibliographic databases
-.
-.
-.\" --------------------------------------------------------------------
-.\" Legal Terms
-.\" --------------------------------------------------------------------
-.
-.de co
-Copyright \[co] 1989-2014 Free Software Foundation, Inc.
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the
-entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
-Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be included in
-translations approved by the Free Software Foundation instead of in
-the original English.
-..
-.
-.\" --------------------------------------------------------------------
-.SH SYNOPSIS
-.\" --------------------------------------------------------------------
-.
-.B @g@lookbib
-[
-.B \-v
-]
-[
-.BI \-i string
-]
-[
-.BI \-t n
-]
-.IR filename \|.\|.\|.
-.
-.
-.\" --------------------------------------------------------------------
-.SH DESCRIPTION
-.\" --------------------------------------------------------------------
-.
-.B @g@lookbib
-prints a prompt on the standard error (unless the standard input is not
-a terminal),
-reads from the standard input a line containing a set of keywords,
-searches the bibliographic databases
-.IR filename \|.\|.\|.\&
-for references containing those keywords,
-prints any references found on the standard output,
-and repeats this process until the end of input.
-.
-For each database
-.I filename
-to be searched,
-if an index
-.IB filename @INDEX_SUFFIX@
-created by
-.BR @g@indxbib (@MAN1EXT@)
-exists, then it will be searched instead;
-each index can cover multiple databases.
-.
-.
-.\" --------------------------------------------------------------------
-.SH OPTIONS
-.\" --------------------------------------------------------------------
-.
-It is possible to have whitespace between a command line option and its
-parameter.
-.
-.TP
-.B \-v
-Print the version number.
-.
-.TP
-.BI \-i string
-When searching files for which no index exists,
-ignore the contents of fields whose names are in
-.IR string .
-.
-.TP
-.BI \-t n
-Only require the first
-.I n
-characters of keys to be given.
-Initially
-.I n
-is\~6.
-.
-.
-.\" --------------------------------------------------------------------
-.SH FILES
-.\" --------------------------------------------------------------------
-.
-.TP \w'\fIfilename\fB@INDEX_SUFFIX@'u+2n
-.IB filename @INDEX_SUFFIX@
-Index files.
-.
-.
-.\" --------------------------------------------------------------------
-.SH "SEE ALSO"
-.\" --------------------------------------------------------------------
-.BR @g@refer (@MAN1EXT@),
-.BR lkbib (@MAN1EXT@),
-.BR @g@indxbib (@MAN1EXT@)
-.
-.
-.\" --------------------------------------------------------------------
-.SH COPYING
-.\" --------------------------------------------------------------------
-.co
-.
-.
-.\" Local Variables:
-.\" mode: nroff
-.\" End:
diff --git a/src/utils/pfbtops/Makefile.sub b/src/utils/pfbtops/Makefile.sub
deleted file mode 100644 (file)
index 16f192b..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-# Makefile.sub for `src utils pfbtops'
-#
-# File position: <groff-source>/src/utils/pfbtops/Makefile.sub
-#
-# Copyright (C) 2014  Free Software Foundation, Inc.
-#
-# This file is part of `font utf8' which is part of `groff'.
-#
-# `groff' is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 2 of the License, or
-# (at your option) any later version.
-#
-# `groff' 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
-# <http://www.gnu.org/licenses/gpl-2.0.html>.
-#
-########################################################################
-
-PROG=pfbtops$(EXEEXT)
-MAN1=pfbtops.n
-OBJS=pfbtops.$(OBJEXT)
-CSRCS=$(srcdir)/pfbtops.c
-XLIBS=$(LIBGROFF)
-MLIB=$(LIBM)
-LINK.c=$(CCC) $(CCFLAGS) $(LDFLAGS)
-
-########################################################################
-# Emacs settings
-########################################################################
-#
-# Local Variables:
-# mode: makefile
-# End:
diff --git a/src/utils/pfbtops/pfbtops.1.man b/src/utils/pfbtops/pfbtops.1.man
new file mode 100644 (file)
index 0000000..8f90ff6
--- /dev/null
@@ -0,0 +1,98 @@
+.TH PFBTOPS @MAN1EXT@ "@MDATE@" "groff @VERSION@"
+.SH NAME
+pfbtops \- translate Printer Font Binary files to PostScript ASCII
+.
+.
+.\" ====================================================================
+.\" Legal Terms
+.\" ====================================================================
+.\"
+.\" Copyright (C) 1989-2018 Free Software Foundation, Inc.
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of
+.\" this manual under the conditions for verbatim copying, provided that
+.\" the entire resulting derived work is distributed under the terms of
+.\" a permission notice identical to this one.
+.\"
+.\" Permission is granted to copy and distribute translations of this
+.\" manual into another language, under the above conditions for
+.\" modified versions, except that this permission notice may be
+.\" included in translations approved by the Free Software Foundation
+.\" instead of in the original English.
+.
+.
+.\" ====================================================================
+.SH SYNOPSIS
+.\" ====================================================================
+.
+.SY pfbtops
+.RI [ pfb-file ]
+.YS
+.
+.SY pfbtops
+.B \-\-help
+.YS
+.
+.SY pfbtops
+.B \-v
+.SY pfbtops
+.B \-\-version
+.YS
+.
+.\" ====================================================================
+.SH DESCRIPTION
+.\" ====================================================================
+.
+.I pfbtops
+translates a PostScript font in Printer Font Binary (PFB) format to
+ASCII, splitting overlong lines in text packets into smaller chunks.
+.
+If
+.I pfb-file
+is omitted, the PFB file will be read from the standard input.
+.
+The ASCII format PostScript font will be written on the standard output.
+.
+PostScript fonts for MS-DOS are normally supplied in PFB format.
+.
+.
+.LP
+The resulting ASCII format PostScript font can be used with groff,
+if it is first listed in
+.I @FONTDIR@/\:devps/\:download
+and
+.IR @FONTDIR@/\:devpdf/\:download .
+.
+.
+.\" ====================================================================
+.SH OPTIONS
+.\" ====================================================================
+.
+.TP
+.B \-\-help
+Display a usage message and exit.
+.
+.
+.TP
+.B \-v
+.TQ
+.B \-\-version
+Display version information and exit.
+.
+.
+.\" ====================================================================
+.SH "SEE ALSO"
+.\" ====================================================================
+.
+.IR grops (@MAN1EXT@),
+.IR gropdf (@MAN1EXT@)
+.
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" End:
+.\" vim: set filetype=groff:
diff --git a/src/utils/pfbtops/pfbtops.am b/src/utils/pfbtops/pfbtops.am
new file mode 100644 (file)
index 0000000..3390969
--- /dev/null
@@ -0,0 +1,34 @@
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Latest update: 22 Aug 2015
+#
+# This file is part of groff.
+#
+# groff 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.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+
+bin_PROGRAMS += pfbtops
+man1_MANS += src/utils/pfbtops/pfbtops.1
+EXTRA_DIST += src/utils/pfbtops/pfbtops.1.man
+pfbtops_SOURCES = src/utils/pfbtops/pfbtops.c
+pfbtops_LDADD = libgroff.a $(LIBM) lib/libgnu.a
+# We use the following trick to force the use of C++ compiler
+# See the Automake manual, "Libtool Convenience Libraries"
+nodist_EXTRA_pfbtops_SOURCES = src/utils/pfbtops/dummy.cpp
+
+
+########################################################################
+### Emacs settings
+# Local Variables:
+# mode: makefile-automake
+# End:
index 2caf318..f3464aa 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1992-201 Free Software Foundation, Inc.
+/* Copyright (C) 1992-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -14,7 +14,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 /* This translates ps fonts in .pfb format to ASCII ps files. */
 
diff --git a/src/utils/pfbtops/pfbtops.man b/src/utils/pfbtops/pfbtops.man
deleted file mode 100644 (file)
index 4f4bd22..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-.TH PFBTOPS @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
-.SH NAME
-pfbtops \- translate a PostScript font in .pfb format to ASCII
-.
-.
-.\" --------------------------------------------------------------------
-.\" Legal Terms
-.\" --------------------------------------------------------------------
-.
-.de co
-Copyright \[co] 1989-2014 Free Software Foundation, Inc.
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the
-entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
-Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be included in
-translations approved by the Free Software Foundation instead of in
-the original English.
-..
-.
-.\" --------------------------------------------------------------------
-.SH SYNOPSIS
-.\" --------------------------------------------------------------------
-.
-.B pfbtops
-[
-.B \-v
-]
-[
-.I pfb_file
-]
-.
-.
-.\" --------------------------------------------------------------------
-.SH DESCRIPTION
-.\" --------------------------------------------------------------------
-.
-.B pfbtops
-translates a PostScript font in
-.B .pfb
-format to ASCII, splitting overlong lines in text packets into smaller
-chunks.
-.
-If
-.I pfb_file
-is omitted the pfb file will be read from the standard input.
-.
-The ASCII format PostScript font will be written on the standard output.
-.
-PostScript fonts for MS-DOS are normally supplied in
-.B .pfb
-format.
-.
-.
-.LP
-The resulting ASCII format PostScript font can be used with groff.
-.
-It must first be listed in
-.B @FONTDIR@/devps/download
-and
-.BR @FONTDIR@/devpdf/download .
-.
-.
-.\" --------------------------------------------------------------------
-.SH OPTIONS
-.\" --------------------------------------------------------------------
-.TP
-.B \-v
-Print the version number.
-.
-.
-.\" --------------------------------------------------------------------
-.SH "SEE ALSO"
-.\" --------------------------------------------------------------------
-.BR grops (@MAN1EXT@),
-.BR gropdf (@MAN1EXT@)
-.
-.
-.\" --------------------------------------------------------------------
-.SH COPYING
-.\" --------------------------------------------------------------------
-.co
-.
-.
-.\" Local Variables:
-.\" mode: nroff
-.\" End:
diff --git a/src/utils/tfmtodit/Makefile.sub b/src/utils/tfmtodit/Makefile.sub
deleted file mode 100644 (file)
index fe85d4b..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-# Makefile.sub for `src utils tfmtodit'
-#
-# File position: <groff-source>/src/utils/tfmtodit/Makefile.sub
-#
-# Copyright (C) 2014  Free Software Foundation, Inc.
-#
-# This file is part of `font utf8' which is part of `groff'.
-#
-# `groff' is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 2 of the License, or
-# (at your option) any later version.
-#
-# `groff' 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
-# <http://www.gnu.org/licenses/gpl-2.0.html>.
-#
-########################################################################
-
-PROG=tfmtodit$(EXEEXT)
-MAN1=tfmtodit.n
-XLIBS=$(LIBGROFF)
-MLIB=$(LIBM)
-OBJS=tfmtodit.$(OBJEXT)
-CCSRCS=$(srcdir)/tfmtodit.cpp
-
-########################################################################
-# Emacs settings
-########################################################################
-#
-# Local Variables:
-# mode: makefile
-# End:
similarity index 57%
rename from src/utils/tfmtodit/tfmtodit.man
rename to src/utils/tfmtodit/tfmtodit.1.man
index a6e4073..605942d 100644 (file)
@@ -1,72 +1,65 @@
-.TH TFMTODIT @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
+.TH TFMTODIT @MAN1EXT@ "@MDATE@" "groff @VERSION@"
 .SH NAME
 tfmtodit \- create font files for use with groff \-Tdvi
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .\" Legal Terms
-.\" --------------------------------------------------------------------
-.
-.de co
-Copyright \[co] 1989-2014 Free Software Foundation, Inc.
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the
-entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
-Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be included in
-translations approved by the Free Software Foundation instead of in
-the original English.
-..
-.
-.\" --------------------------------------------------------------------
+.\" ====================================================================
+.\"
+.\" Copyright (C) 1989-2018 Free Software Foundation, Inc.
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of
+.\" this manual under the conditions for verbatim copying, provided that
+.\" the entire resulting derived work is distributed under the terms of
+.\" a permission notice identical to this one.
+.\"
+.\" Permission is granted to copy and distribute translations of this
+.\" manual into another language, under the above conditions for
+.\" modified versions, except that this permission notice may be
+.\" included in translations approved by the Free Software Foundation
+.\" instead of in the original English.
+.
+.
+.\" ====================================================================
 .\" Definitions
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .ie t .ds tx T\h'-.1667m'\v'.224m'E\v'-.224m'\h'-.125m'X
 .el .ds tx TeX
-.\" Like TP, but if specified indent is more than half
-.\" the current line-length - indent, use the default indent.
-.de Tp
-.ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP
-.el .TP "\\$1"
-..
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH SYNOPSIS
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
-nr a \n(.j
-.ad l
-.nr i \n(.i
-.in +\w'\fBtfmtodit 'u
-.ti \niu
-.B tfmtodit
-.de OP
-.ie \\n(.$-1 .RI "[\ \fB\\$1\fP" "\\$2" "\ ]"
-.el .RB "[\ " "\\$1" "\ ]"
-..
-.OP \-sv
+.SY tfmtodit
+.OP \-s
 .OP \-g gf_file
 .OP \-k skewchar
 .I tfm_file
 .I map_file
 .I font
-.br
-.ad \na
+.YS
+.
+.SY tfmtodit
+.B \-\-help
+.YS
 .
+.SY tfmtodit
+.B \-v
+.SY tfmtodit
+.B \-\-version
+.YS
 .
-.\" --------------------------------------------------------------------
+.
+.\" ====================================================================
 .SH DESCRIPTION
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .B tfmtodit
 creates a font file for use with
@@ -120,7 +113,7 @@ it should be listed in the
 command in the DESC file;
 if it is not special, there is no need to list it, since
 .B troff
-can automatically mount it when it\[aq]s first used.
+can automatically mount it when it's first used.
 .
 .
 .LP
@@ -143,7 +136,7 @@ Metafont can be made to put this information in the gf file by loading
 the following definition after
 .B cmbase
 when creating
-.BR cm.base :
+.IR cm.base :
 .IP
 .nf
 .ft B
@@ -158,7 +151,7 @@ def ignore_math_fit(expr left_adjustment,right_adjustment) =
 For the EC font family, load the following definition after
 .B exbase
 (it is probably easiest to patch
-.B exbase.mf
+.I exbase.mf
 locally):
 .IP
 .nf
@@ -172,9 +165,9 @@ def ignore_math_fit(expr left_adjustment,right_adjustment) =
 .ft R
 .LP
 The gf file created using this modified
-.B cm.base
+.I cm.base
 or
-.B exbase
+.I exbase
 should be specified with the
 .B \-g
 option.
@@ -186,12 +179,12 @@ option should not be given for a font for which
 is true.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH OPTIONS
-.\" --------------------------------------------------------------------
+.\" ====================================================================
+.
+Whitespace is permitted between a command-line option and its argument.
 .
-It is possible to have whitespace between a command line option and its
-parameter.
 .
 .TP
 .B \-v
@@ -230,34 +223,29 @@ is a gf file produced by Metafont containing special and numspecial
 commands giving additional font metric information.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH FILES
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
-.Tp \w'\fB@FONTDIR@/devdvi/DESC'u+2n
-.B @FONTDIR@/devdvi/DESC
+.TP
+.I @FONTDIR@/devdvi/DESC
 Device description file.
 .
 .TP
-.BI @FONTDIR@/devdvi/ F
+.IR @FONTDIR@/devdvi/ F
 Font description file for font
 .IR F .
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "SEE ALSO"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .BR groff (@MAN1EXT@),
 .BR grodvi (@MAN1EXT@),
 .BR groff_font (@MAN5EXT@)
 .
 .
-.\" --------------------------------------------------------------------
-.SH COPYING
-.\" --------------------------------------------------------------------
-.co
-.
-.
 .\" Local Variables:
 .\" mode: nroff
 .\" End:
+.\" vim: set filetype=groff:
similarity index 61%
rename from Makefile
rename to src/utils/tfmtodit/tfmtodit.am
index 05ef002..77aba71 100644 (file)
--- a/Makefile
@@ -1,5 +1,6 @@
-# Copyright (C) 1989-2014 Free Software Foundation, Inc.
-#      Written by James Clark (jjc@jclark.com)
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Latest update: 22 Aug 2015
 #
 # This file is part of groff.
 #
 # for more details.
 #
 # You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-#
-# Makefile.init
-#
-SHELL=/bin/sh
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+bin_PROGRAMS += tfmtodit
+man1_MANS += src/utils/tfmtodit/tfmtodit.1
+EXTRA_DIST += src/utils/tfmtodit/tfmtodit.1.man
+tfmtodit_SOURCES = src/utils/tfmtodit/tfmtodit.cpp
+tfmtodit_LDADD = libgroff.a $(LIBM) lib/libgnu.a
 
-.PHONY: all
-all:
-       $(SHELL) configure
-       $(MAKE) all
 
 ########################################################################
-# Emacs settings
-########################################################################
-#
+### Emacs settings
 # Local Variables:
-# mode: makefile
+# mode: makefile-automake
 # End:
index 6fef258..f83d98d 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-/* Copyright (C) 1989-201 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -15,7 +15,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 /* I have tried to incorporate the changes needed for TeX 3.0 tfm files,
 but I haven't tested them. */
@@ -276,14 +276,14 @@ int tfm::load(const char *file)
   errno = 0;
   FILE *fp = fopen(file, FOPEN_RB);
   if (!fp) {
-    error("can't open `%1': %2", file, strerror(errno));
+    error("can't open '%1': %2", file, strerror(errno));
     return 0;
   }
   int c1 = getc(fp);
   int c2 = getc(fp);
   if (c1 == EOF || c2 == EOF) {
     fclose(fp);
-    error("unexpected end of file on `%1'", file);
+    error("unexpected end of file on '%1'", file);
     return 0;
   }
   int lf = (c1 << 8) + c2;
@@ -291,16 +291,16 @@ int tfm::load(const char *file)
   unsigned char *buf = new unsigned char[toread];
   if (fread(buf, 1, toread, fp) != (size_t)toread) {
     if (feof(fp))
-      error("unexpected end of file on `%1'", file);
+      error("unexpected end of file on '%1'", file);
     else
-      error("error on file `%1'", file);
+      error("error on file '%1'", file);
     a_delete buf;
     fclose(fp);
     return 0;
   }
   fclose(fp);
   if (lf < 6) {
-    error("bad tfm file `%1': impossibly short", file);
+    error("bad tfm file '%1': impossibly short", file);
     a_delete buf;
     return 0;
   }
@@ -317,12 +317,12 @@ int tfm::load(const char *file)
   int ne = read2(ptr);
   np = read2(ptr);
   if (6 + lh + (ec - bc + 1) + nw + nh + nd + ni + nl + nk + ne + np != lf) {
-    error("bad tfm file `%1': lengths do not sum", file);
+    error("bad tfm file '%1': lengths do not sum", file);
     a_delete buf;
     return 0;
   }
   if (lh < 2) {
-    error("bad tfm file `%1': header too short", file);
+    error("bad tfm file '%1': header too short", file);
     a_delete buf;
     return 0;
   }
@@ -416,7 +416,7 @@ int gf::load(const char *file)
   errno = 0;
   FILE *fp = fopen(file, FOPEN_RB);
   if (!fp) {
-    error("can't open `%1': %2", file, strerror(errno));
+    error("can't open '%1': %2", file, strerror(errno));
     return 0;
   }
   if (getc(fp) != pre || getc(fp) != gf_id_byte) {
@@ -533,7 +533,7 @@ int gf::load(const char *file)
        goto eof;
       break;
     default:
-      fatal("unrecognized opcode `%1'", op);
+      fatal("unrecognized opcode '%1'", op);
       break;
     }
   }
@@ -602,7 +602,7 @@ int read_map(const char *file, char_list **table)
   errno = 0;
   FILE *fp = fopen(file, "r");
   if (!fp) {
-    error("can't open `%1': %2", file, strerror(errno));
+    error("can't open '%1': %2", file, strerror(errno));
     return 0;
   }
   for (int i = 0; i < 256; i++)
@@ -645,8 +645,8 @@ int read_map(const char *file, char_list **table)
 
 
 /* Every character that can participate in a ligature appears in the
-lig_chars table. `ch' gives the full-name of the character, `name'
-gives the groff name of the character, `i' gives its index in
+lig_chars table. 'ch' gives the full-name of the character, 'name'
+gives the groff name of the character, 'i' gives its index in
 the encoding, which is filled in later  (-1 if it does not appear). */
 
 struct S {
@@ -752,7 +752,7 @@ int main(int argc, char **argv)
     return 1;
   errno = 0;
   if (!freopen(font_file, "w", stdout)) {
-    error("can't open `%1' for writing: %2", font_file, strerror(errno));
+    error("can't open '%1' for writing: %2", font_file, strerror(errno));
     return 1;
   }
   printf("name %s\n", font_file);
diff --git a/src/utils/xtotroff/Makefile.in b/src/utils/xtotroff/Makefile.in
deleted file mode 100644 (file)
index bcc8229..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-# Copyright (C) 2004-2014  Free Software Foundation, Inc.
-#      Written by James Clark (jjc@jclark.com)
-#
-# This file is part of groff.
-#
-# groff 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.
-#
-# groff 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 <http://www.gnu.org/licenses/>.
-
-builddir=@abs_builddir@
-top_srcdir=@abs_top_srcdir@
-top_builddir=@abs_top_builddir@
-SHELL=@SHELL@
-
-devdir=$(top_builddir)/font
-driverdir=$(top_srcdir)/src/devices/xditview
-mkinstalldirs=$(SHELL) $(top_srcdir)/mkinstalldirs
-
-xtotroff=$(builddir)/xtotroff
-DPIS=75 100
-
-RM=rm -f
-
-all:
-       @echo "Say \`make fonts' to generate fonts for gxditview."
-
-fonts: $(xtotroff) $(driverdir)/DESC.in $(driverdir)/FontMap
-       fonts=`sed -e 's/[       ].*//' $(driverdir)/FontMap`; \
-       for dpi in $(DPIS); do \
-         echo Making devX$$dpi; \
-         test -d $(devdir)/devX$$dpi \
-           || $(mkinstalldirs) $(devdir)/devX$$dpi; \
-         $(RM) $(devdir)/devX$$dpi/DESC; \
-         sed -e "s/res 75/res $$dpi/" $(driverdir)/DESC.in \
-           >$(devdir)/devX$$dpi/DESC; \
-         (cd $(devdir)/devX$$dpi; \
-          $(RM) Makefile.sub; \
-          echo DEV=X$$dpi >Makefile.sub; \
-          echo DEVFILES=DESC $$fonts >>Makefile.sub; \
-          $(xtotroff) -r $$dpi -s 10 $(driverdir)/FontMap); \
-         echo Making devX$$dpi-12; \
-         test -d $(devdir)/devX$$dpi-12 \
-           || $(mkinstalldirs) $(devdir)/devX$$dpi-12; \
-         $(RM) $(devdir)/devX$$dpi-12/DESC; \
-         sed -e "s/res 75/res $$dpi/" \
-             -e 's/unitwidth 10/unitwidth 12/' $(driverdir)/DESC.in \
-           >$(devdir)/devX$$dpi-12/DESC; \
-         (cd $(devdir)/devX$$dpi-12; \
-          $(RM) Makefile.sub; \
-          echo DEV=X$$dpi-12 >Makefile.sub; \
-          echo DEVFILES=DESC $$fonts >>Makefile.sub; \
-          $(xtotroff) -r $$dpi -s 12 $(driverdir)/FontMap); \
-       done
-
-########################################################################
-# Emacs settings
-########################################################################
-#
-# Local Variables:
-# mode: makefile
-# End:
diff --git a/src/utils/xtotroff/Makefile.sub b/src/utils/xtotroff/Makefile.sub
deleted file mode 100644 (file)
index b4de0de..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-# Makefile.sub for `src utils xtotroff'
-#
-# File position: <groff-source>/src/utils/stotroff/Makefile.sub
-#
-# Copyright (C) 2014  Free Software Foundation, Inc.
-#
-# This file is part of `font utf8' which is part of `groff'.
-#
-# `groff' is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 2 of the License, or
-# (at your option) any later version.
-#
-# `groff' 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
-# <http://www.gnu.org/licenses/gpl-2.0.html>.
-#
-########################################################################
-
-PROG=xtotroff$(EXEEXT)
-MAN1=xtotroff.n
-MLIB=$(LIBM)
-XLIBS=$(LIBXUTIL) $(LIBGROFF)
-EXTRA_CFLAGS=$(X_CFLAGS)
-EXTRA_LDFLAGS=$(X_LIBS) $(X_PRE_LIBS) -lXaw -lXt -lX11 $(X_EXTRA_LIBS)
-OBJS=xtotroff.$(OBJEXT)
-CSRCS=$(srcdir)/xtotroff.c
-
-########################################################################
-# Emacs settings
-########################################################################
-#
-# Local Variables:
-# mode: makefile
-# End:
diff --git a/src/utils/xtotroff/xtotroff.1.man b/src/utils/xtotroff/xtotroff.1.man
new file mode 100644 (file)
index 0000000..4833f55
--- /dev/null
@@ -0,0 +1,149 @@
+.TH XTOTROFF @MAN1EXT@ "@MDATE@" "groff @VERSION@"
+.SH NAME
+xtotroff \- convert X font metrics into GNU troff font metrics
+.
+.
+.\" ====================================================================
+.\" Legal Terms
+.\" ====================================================================
+.\"
+.\" Copyright (C) 2004-2018 Free Software Foundation, Inc.
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of
+.\" this manual under the conditions for verbatim copying, provided that
+.\" the entire resulting derived work is distributed under the terms of
+.\" a permission notice identical to this one.
+.\"
+.\" Permission is granted to copy and distribute translations of this
+.\" manual into another language, under the above conditions for
+.\" modified versions, except that this permission notice may be
+.\" included in translations approved by the Free Software Foundation
+.\" instead of in the original English.
+.
+.
+.\" ====================================================================
+.SH SYNOPSIS
+.\" ====================================================================
+.
+.SY xtotroff
+.OP \-r resolution
+.OP \-s point-size
+.I font-map
+.YS
+.
+.SY xtotroff
+.B \-\-help
+.YS
+.
+.SY xtotroff
+.B \-v
+.SY xtotroff
+.B \-\-version
+.YS
+.
+.
+.\" ====================================================================
+.SH DESCRIPTION
+.\" ====================================================================
+.
+.I xtotroff
+takes a
+.IR font-map ,
+which maps
+.IR groff (@MAN1EXT@)
+fonts to X11 fonts,
+creates GNU
+.IR troff (@MAN1EXT@)
+metric files for all fonts listed.
+.
+Each line in
+.I font-map
+consists of a
+.I groff
+font name and an X font name as a X Logical Font Description (XLFD)
+pattern,
+separated by whitespace.
+.
+Example:
+.
+.
+.PP
+.RS
+.EX
+TB \-adobe\-times\-bold\-r\-normal\-\-*\-*\-*\-*\-p\-*\-iso8859\-1
+.EE
+.RE
+.
+.
+.PP
+The wildcards in the patterns are filled with the arguments to the
+.B \-r
+and
+.B \-s
+switches.
+.
+If a font name is still ambiguous,
+.I xtotroff
+aborts.
+.
+.
+.\" ====================================================================
+.SH OPTIONS
+.\" ====================================================================
+.
+Whitespace is permitted between a command-line option and its argument.
+.
+.
+.TP
+.B \-\-help
+Display a usage message and exit.
+.
+.
+.TP
+.BI \-r resolution
+Set the resolution for all font patterns in
+.IR font-map .
+.
+The value is used for both the horizontal and vertical resolution.
+.
+If not specified, a resolution of 75dpi is assumed.
+.
+.
+.TP
+.BI \-s point-size
+Set the point size for all font patterns in
+.IR font-map .
+.
+If not specified, a size of 10pt is assumed.
+.
+.
+.TP
+.B \-v
+.TQ
+.B \-\-version
+Display version information and exit.
+.
+.
+.\" ====================================================================
+.SH BUGS
+.\" ====================================================================
+The only supported font encodings are \(lqiso8859\-1\(rq and
+\(lqadobe\-fontspecific\(rq.
+.
+.
+.\" ====================================================================
+.SH "SEE ALSO"
+.\" ====================================================================
+.IR groff (@MAN1EXT@),
+.IR gxditview (@MAN1EXT@),
+.IR troff (@MAN1EXT@)
+.
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" End:
+.\" vim: set filetype=groff:
diff --git a/src/utils/xtotroff/xtotroff.am b/src/utils/xtotroff/xtotroff.am
new file mode 100644 (file)
index 0000000..9b2630b
--- /dev/null
@@ -0,0 +1,36 @@
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
+# Latest update: 22 Aug 2015
+#
+# This file is part of groff.
+#
+# groff 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.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+
+if !WITHOUT_X11
+bin_PROGRAMS += xtotroff
+man1_MANS += src/utils/xtotroff/xtotroff.1
+xtotroff_SOURCES = src/utils/xtotroff/xtotroff.c
+XLIBS=$(LIBXUTIL) $(LIBGROFF)
+xtotroff_LDADD = libxutil.a libgroff.a $(X_LIBS) $(X_PRE_LIBS) \
+  -lXaw -lXt -lX11 $(X_EXTRA_LIBS) $(LIBM) lib/libgnu.a
+xtotroff_CPPFLAGS = $(AM_CPPFLAGS) $(X_CFLAGS)
+endif
+EXTRA_DIST += src/utils/xtotroff/xtotroff.1.man
+
+
+########################################################################
+### Emacs settings
+# Local Variables:
+# mode: makefile-automake
+# End:
index 92e5235..8545a5e 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1992-201 Free Software Foundation, Inc.
+/* Copyright (C) 1992-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -14,7 +14,7 @@ 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 <http://www.gnu.org/licenses/>. */
+along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 /*
  * xtotroff
@@ -60,11 +60,11 @@ Display *dpy;
 unsigned resolution = 75;
 unsigned point_size = 10;
 
-int charExists(XFontStruct * fi, int c)
+static int charExists(XFontStruct * fi, int c)
 {
   XCharStruct *p;
 
-  /* `c' is always >= 0 */
+  /* 'c' is always >= 0 */
   if ((unsigned int) c < fi->min_char_or_byte2
       || (unsigned int) c > fi->max_char_or_byte2)
     return 0;
diff --git a/src/utils/xtotroff/xtotroff.man b/src/utils/xtotroff/xtotroff.man
deleted file mode 100644 (file)
index e8e8f73..0000000
+++ /dev/null
@@ -1,137 +0,0 @@
-.TH XTOTROFF @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
-.SH NAME
-xtotroff \- convert X font metrics into GNU troff font metrics
-.
-.
-.\" --------------------------------------------------------------------
-.\" Legal Terms
-.\" --------------------------------------------------------------------
-.
-.de co
-Copyright \[co] 2004-2014 Free Software Foundation, Inc.
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the
-entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
-Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be included in
-translations approved by the Free Software Foundation instead of in
-the original English.
-..
-.
-.\" --------------------------------------------------------------------
-.SH SYNOPSIS
-.\" --------------------------------------------------------------------
-.
-.B xtotroff
-[
-.BI \-r \%resolution
-]
-[
-.BI \-s \%point-size
-]
-[
-.B \-v
-]
-.I FontMap
-.
-.
-.\" --------------------------------------------------------------------
-.SH DESCRIPTION
-.\" --------------------------------------------------------------------
-.
-.B xtotroff
-takes a
-.IR FontMap ,
-which maps
-.B groff
-fonts to X11 fonts,
-creates GNU
-.B troff
-metric files for all fonts listed.
-.
-Each line in
-.I FontMap
-consists of GNU
-.B troff
-font name and an X font name (XLFD) pattern, separated by whitespace.
-.
-Example:
-.
-.PP
-.in +2n
-.nf
-TB   -adobe-times-bold-r-normal--*-*-*-*-p-*-iso8859-1
-.fi
-.in
-.
-.
-.PP
-The wildcards in the patterns are filled with the arguments to the
-.B \-r
-and
-.B \-s
-switches.
-.
-If a font name is still ambiguous,
-.B xtotroff
-aborts.
-.
-.
-.\" --------------------------------------------------------------------
-.SH OPTIONS
-.\" --------------------------------------------------------------------
-.
-It is possible to have whitespace between a command line option and its
-parameter.
-.
-.TP
-.BI \-r resolution
-Set the resolution for all font patterns in
-.IR FontMap .
-.
-The value is used for both the horizontal and vertical resolution.
-.
-If not specified, a resolution of 75dpi is assumed.
-.
-.TP
-.BI \-s point-size
-Set the point size for all font patterns in
-.IR FontMap .
-.
-If not specified, a size of 10pt is assumed.
-.
-.TP
-.B \-v
-Print the version number.
-.
-.
-.\" --------------------------------------------------------------------
-.SH BUGS
-.\" --------------------------------------------------------------------
-The only supported font encodings are \[oq]iso8859-1\[cq] and
-\[cq]adobe-fontspecific\[cq].
-.
-.
-.\" --------------------------------------------------------------------
-.SH "SEE ALSO"
-.\" --------------------------------------------------------------------
-.BR gxditview (@MAN1EXT@)
-.
-.
-.\" --------------------------------------------------------------------
-.SH COPYING
-.\" --------------------------------------------------------------------
-.co
-.
-.
-.\" Local Variables:
-.\" mode: nroff
-.\" End:
diff --git a/stamp-h.in b/stamp-h.in
deleted file mode 100644 (file)
index 9788f70..0000000
+++ /dev/null
@@ -1 +0,0 @@
-timestamp
index bf24c60..c070635 100644 (file)
@@ -1,54 +1,50 @@
 #! /bin/sh
 #
-# Copyright (C) 1989-2014 Free Software Foundation, Inc.
-# 
+# Copyright (C) 1989-2018 Free Software Foundation, Inc.
+#
 # This file is part of groff.
-# 
+#
 # groff 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.
-# 
+#
 # groff 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 <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #
 # This script runs groff without requiring that it be installed.
 
 SEP='@PATH_SEPARATOR@'
-builddir=@abs_top_builddir@/src
+builddir=@abs_top_builddir@
 srcdir=@abs_top_srcdir@
 
-GROFF_BIN_PATH=\
-$builddir/roff/groff$SEP\
-$builddir/roff/troff$SEP\
-$builddir/preproc/preconv$SEP\
-$builddir/preproc/pic$SEP\
-$builddir/preproc/eqn$SEP\
-$builddir/preproc/tbl$SEP\
-$builddir/preproc/grn$SEP\
-$builddir/preproc/refer$SEP\
-$builddir/preproc/soelim$SEP\
-$builddir/preproc/html$SEP\
-$builddir/devices/grops$SEP\
-$builddir/devices/grodvi$SEP\
-$builddir/devices/grotty$SEP\
-$builddir/devices/grolj4$SEP\
-$builddir/devices/grolbp$SEP\
-$builddir/devices/grohtml$SEP\
-$builddir/devices/gropdf$SEP\
-$builddir/devices/xditview
+GROFF_BIN_PATH=$builddir
 
 XENVIRONMENT=$srcdir/src/devices/xditview/GXditview.ad
 export XENVIRONMENT
 
 GROFF_COMMAND_PREFIX=
-GROFF_FONT_PATH=$builddir/../font$SEP$srcdir/font
-GROFF_TMAC_PATH=$srcdir/tmac
+GROFF_FONT_PATH=$builddir/font\
+$SEP$srcdir/font\
+
+GROFF_TMAC_PATH=$srcdir/tmac\
+$SEP$builddir/tmac\
+$SEP$srcdir/contrib/mom\
+$SEP$builddir/contrib/mom\
+$SEP$srcdir/contrib/hdtbl\
+$SEP$builddir/contrib/hdtbl\
+$SEP$srcdir/contrib/mm\
+$SEP$builddir/contrib/mm\
+$SEP$srcdir/contrib/mm/locale\
+$SEP$builddir/contrib/mm/locale\
+$SEP$srcdir/contrib/pdfmark\
+$SEP$builddir/contrib/pdfmark\
+
 export GROFF_BIN_PATH GROFF_COMMAND_PREFIX GROFF_FONT_PATH GROFF_TMAC_PATH
 
-exec $builddir/roff/groff/groff ${1+"$@"}
+exec $builddir/groff -b -ww ${1+"$@"}
index dc7b8a7..65ec04f 100644 (file)
@@ -1,33 +1,33 @@
-.\" -*- nroff -*-
-.\"
 .\" 62bit.tmac
 .\"
-.\" Copyright (C) 2003-201 Free Software Foundation, Inc.
+.\" Copyright (C) 2003-2018 Free Software Foundation, Inc.
 .\"      Written by Werner Lemberg (wl@gnu.org)
 .\"
 .\" This file is part of groff.
 .\"
-.\" groff 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
+.\" groff 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.
 .\"
-.\" groff 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.
+.\" groff 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 <http://www.gnu.org/licenses/>.
-.\"
+.\" along with this program.  If not, see
+.\" <http://www.gnu.org/licenses/>.
 .\"
 .\"
-.\" This file provides macros for addition, multiplication, and division of
-.\" 62bit signed integers.  Its main application is to `scale' 31bit values,
-.\" namely, to perform the operation `a * b / c' accurately.
+.\" This file provides macros for addition, multiplication, and division
+.\" of 62-bit signed integers.  Its main application is to 'scale'
+.\" 31-bit values--namely, to perform the operation 'a * b / c'
+.\" accurately.
 .\"
-.\" Note that it is the duty of the user to check whether the input values
-.\" fit within 31 bits (this is the range [-1073741824,1073741823]).
+.\" Note that it is the duty of the user to check whether the input
+.\" values fit within 31 bits (this is the range
+.\" [-1073741824,1073741823]).
 .\"
 .
 .if d add31to62 \
@@ -36,8 +36,8 @@
 .
 .\" .add31to62 <x> <y> <z>
 .\"
-.\" Add a 31bit signed integer to a signed 62bit integer.  Result is a
-.\" signed 62bit integer:
+.\" Add a 31-bit signed integer to a signed 62-bit integer.  Result is a
+.\" signed 62-bit integer:
 .\"
 .\"   <x> + (<y>h * 2^30 + <y>l) = <z>h * 2^30 + <z>l
 .\"
@@ -74,7 +74,7 @@
 .
 .\" .mult31by31 <x> <y> <z>
 .\"
-.\" Multiply two 31bit signed integers.  Result is a 62bit signed
+.\" Multiply two 31-bit signed integers.  Result is a 62-bit signed
 .\" integer:
 .\"
 .\"   <x> * <y> = <z>h * 2^30 + <z>l
 .
 .\" .div62by31 <x> <y> <z>
 .\"
-.\" Divide a signed 62bit integer by a 31bit integer.  Result is a
-.\" 31bit signed integer:
+.\" Divide a signed 62-bit integer by a 31-bit integer.  Result is a
+.\" 31-bit signed integer:
 .\"
 .\"   (<x>h * 2^30 + <x>l) / <y> = <z>
 .\"
 .  nr \\$3 \\n[62bit-3]
 ..
 .
-.\" EOF
+.\" ====================================================================
+.\" Editor settings
+.\" ====================================================================
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" fill-column: 72
+.\" End:
+.\" vim: set filetype=groff textwidth=72:
index 71f8c7c..cf01a03 100644 (file)
@@ -10,24 +10,24 @@ The localization process involves two files.
   - A locale independent file (trans.tmac) responsible for activating those
     localized strings.
 
-All you have to do is to create a new file named `LL.tmac' where `LL' is
-your country code (`de' for Germany, `el' for Greece, ...), maybe using
-`fr.tmac' as a template.
+All you have to do is to create a new file named 'LL.tmac' where 'LL' is
+your country code ('de' for Germany, 'el' for Greece, ...), maybe using
+'fr.tmac' as a template.
 
-The first thing to do is to redefine the string `locale' to your language.
+The first thing to do is to redefine the string 'locale' to your language.
 
   .ds locale german\"
 
 Then change all the translations in the predefined strings.  Don't forget
 the \" at the end of each string, preventing spaces from lurking around.
 
-After `trans.tmac' has been called by
+After 'trans.tmac' has been called by
 
   .mso trans.tmac
 
 you must redefine the date strings in order to use the day and month names
 translated earlier.  If you don't feel comfortable with groff maybe you
-should use the definitions used in `fr.tmac'.  Nevertheless, you should take
+should use the definitions used in 'fr.tmac'.  Nevertheless, you should take
 care of the order of the date elements.
 
   - If your date format is MM/DD/YY:
@@ -44,11 +44,11 @@ care of the order of the date elements.
 
 Other date formats can be handled similarly.
 
-NOTE: For the mm package, in the `ISODATE' macro, only the first definition
-      of `cov*new-date' must be changed (see `fr.tmac').
+NOTE: For the mm package, in the 'ISODATE' macro, only the first definition
+      of 'cov*new-date' must be changed (see 'fr.tmac').
 
 Finally, change groff behaviour in order to comply with your locale.  For
-example, `fr.tmac' changes the default encoding, sets the sentence spaces,
+example, 'fr.tmac' changes the default encoding, sets the sentence spaces,
 and final activates hyphenation, provided there are hyphenation patterns
-available (which should be put into files named `hyphen.LL' for
+available (which should be put into files named 'hyphen.LL' for
 consistency).
diff --git a/tmac/Makefile.sub b/tmac/Makefile.sub
deleted file mode 100644 (file)
index 1506232..0000000
+++ /dev/null
@@ -1,184 +0,0 @@
-# Makefile.sub for `tmac'
-#
-# File position: <groff-source>/tmac/Makefile.sub
-#
-# Copyright (C) 1989-2014  Free Software Foundation, Inc.
-#      Written by James Clark (jjc@jclark.com)
-#
-# This file is part of groff.
-#
-# groff 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.
-#
-# groff 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 <http://www.gnu.org/licenses/>.
-#
-########################################################################
-
-MAN7=\
-  groff_ms.n \
-  groff_man.n \
-  groff_me.n \
-  groff_mdoc.n \
-  groff_trace.n \
-  groff_www.n
-
-NORMALFILES=\
-  man.tmac mandoc.tmac andoc.tmac an-old.tmac an-ext.tmac \
-  ms.tmac \
-  me.tmac \
-  mdoc.tmac \
-  pic.tmac \
-  a4.tmac papersize.tmac \
-  62bit.tmac \
-  ec.tmac \
-  safer.tmac \
-  trace.tmac \
-  ps.tmac psold.tmac pspic.tmac psatk.tmac \
-  pdf.tmac \
-  dvi.tmac \
-  tty.tmac tty-char.tmac \
-  latin1.tmac latin2.tmac latin5.tmac latin9.tmac cp1047.tmac \
-  unicode.tmac \
-  X.tmac Xps.tmac \
-  lj4.tmac \
-  lbp.tmac \
-  html.tmac html-end.tmac \
-  devtag.tmac \
-  europs.tmac \
-  composite.tmac fallbacks.tmac \
-  eqnrc \
-  refer.tmac refer-me.tmac refer-ms.tmac \
-  troffrc troffrc-end \
-  trans.tmac \
-  hyphen.us hyphenex.us \
-  fr.tmac hyphen.fr \
-  sv.tmac hyphen.sv \
-  de.tmac den.tmac hyphen.det hyphen.den hyphenex.det \
-  cs.tmac hyphen.cs hyphenex.cs \
-  ja.tmac
-
-# These files are handled specially during installation and deinstallation.
-SPECIALFILES=an.tmac s.tmac www.tmac
-
-# These files are processed with `strip.sed'.
-STRIPFILES=e.tmac doc.tmac doc-old.tmac
-MDOCFILES=doc-common doc-ditroff doc-nroff doc-syms
-mdocdir=$(tmacdir)/mdoc
-
-MOSTLYCLEANADD=\
-  stamp-wrap stamp-sed *-wrap www.tmac-sed \
-  stamp-strip e.tmac-s doc.tmac-s doc-old.tmac-s \
-  doc-common-s doc-ditroff-s doc-nroff-s doc-syms-s mdoc.local-s
-tmac_s_prefix=
-tmac_an_prefix=
-tmac_wrap=
-sys_tmac_prefix=
-pnmtops_nosetpage="pnmtops"
-
-RM=rm -f
-
-all: stamp-strip stamp-wrap stamp-sed
-
-install_data: $(NORMALFILES) $(SPECIALFILES) man.local \
-              stamp-strip stamp-wrap stamp-sed
-       -test -d $(DESTDIR)$(tmacdir) \
-         || $(mkinstalldirs) $(DESTDIR)$(tmacdir)
-       -test -d $(DESTDIR)$(systemtmacdir) \
-         || $(mkinstalldirs) $(DESTDIR)$(systemtmacdir)
-       -test -d $(DESTDIR)$(localtmacdir) \
-         || $(mkinstalldirs) $(DESTDIR)$(localtmacdir)
-       if test -n "$(tmac_wrap)"; then \
-         for m in ""$(tmac_wrap); do \
-           $(INSTALL_DATA) $$m-wrap $(DESTDIR)$(systemtmacdir)/$$m.tmac; \
-         done; \
-       fi
-       for f in $(NORMALFILES); do \
-         $(RM) $(DESTDIR)$(tmacdir)/$$f; \
-         $(INSTALL_DATA) $(srcdir)/$$f $(DESTDIR)$(tmacdir)/$$f; \
-       done
-       $(RM) $(DESTDIR)$(tmacdir)/$(tmac_s_prefix)s.tmac
-       $(INSTALL_DATA) $(srcdir)/s.tmac \
-         $(DESTDIR)$(tmacdir)/$(tmac_s_prefix)s.tmac
-       $(RM) $(DESTDIR)$(tmacdir)/$(tmac_an_prefix)an.tmac
-       $(INSTALL_DATA) $(srcdir)/an.tmac \
-         $(DESTDIR)$(tmacdir)/$(tmac_an_prefix)an.tmac
-       $(RM) $(DESTDIR)$(tmacdir)/www.tmac
-       $(INSTALL_DATA) www.tmac-sed $(DESTDIR)$(tmacdir)/www.tmac
-       for f in $(STRIPFILES); do \
-         $(RM) $(DESTDIR)$(tmacdir)/$$f; \
-         $(INSTALL_DATA) $$f-s $(DESTDIR)$(tmacdir)/$$f; \
-       done
-       -test -d $(DESTDIR)$(mdocdir) || $(mkinstalldirs) $(DESTDIR)$(mdocdir)
-       for f in $(MDOCFILES); do \
-         $(RM) $(DESTDIR)$(mdocdir)/$$f; \
-         $(INSTALL_DATA) $$f-s $(DESTDIR)$(mdocdir)/$$f; \
-       done
-       -test -f $(DESTDIR)$(localtmacdir)/man.local \
-         || $(INSTALL_DATA) $(srcdir)/man.local \
-              $(DESTDIR)$(localtmacdir)/man.local
-       -test -f $(DESTDIR)$(localtmacdir)/mdoc.local \
-         || $(INSTALL_DATA) mdoc.local-s $(DESTDIR)$(localtmacdir)/mdoc.local
-
-stamp-strip: $(STRIPFILES) $(MDOCFILES) mdoc.local
-       for f in $(STRIPFILES) $(MDOCFILES) mdoc.local; do \
-         $(RM) $$f-s; \
-         sed -f $(srcdir)/strip.sed $(srcdir)/$$f >$$f-s; \
-       done
-       touch $@
-
-stamp-wrap:
-       if test -n "$(tmac_wrap)"; then \
-         for m in ""$(tmac_wrap); do \
-           $(RM) $$m-wrap; \
-           if test "$$m" = an; then \
-             echo .do mso andoc.tmac >>$$m-wrap; \
-           fi; \
-           echo .cp 1 >>$$m-wrap; \
-           echo .so $(sys_tmac_prefix)$$m >>$$m-wrap; \
-         done; \
-       fi
-       touch $@
-
-stamp-sed: www.tmac
-       sed -e "s;@PNMTOPS_NOSETPAGE@;$(pnmtops_nosetpage);g" \
-         $(srcdir)/www.tmac > www.tmac-sed
-       touch $@
-
-uninstall_sub:
-       -if test -n "$(tmac_wrap)"; then \
-         for m in ""$(tmac_wrap); do \
-           $(RM) $(DESTDIR)$(systemtmacdir)/$$m.tmac; \
-         done; \
-       fi
-       -for f in $(NORMALFILES) $(STRIPFILES); do \
-         $(RM) $(DESTDIR)$(tmacdir)/$$f; \
-       done
-       $(RM) $(DESTDIR)$(tmacdir)/$(tmac_s_prefix)s.tmac
-       $(RM) $(DESTDIR)$(tmacdir)/$(tmac_an_prefix)an.tmac
-       $(RM) $(DESTDIR)$(tmacdir)/www.tmac
-       -if cmp -s $(DESTDIR)$(localtmacdir)/man.local \
-                  $(srcdir)/man.local; then \
-         $(RM) $(DESTDIR)$(localtmacdir)/man.local; \
-       fi
-       -if cmp -s $(DESTDIR)$(localtmacdir)/mdoc.local \
-                  $(srcdir)/mdoc.local; then \
-         $(RM) $(DESTDIR)$(localtmacdir)/mdoc.local; \
-       fi
-       -for f in $(MDOCFILES); do $(RM) $(DESTDIR)$(mdocdir)/$$f; done
-       -test -d $(DESTDIR)$(mdocdir) && rmdir $(DESTDIR)$(mdocdir)
-
-########################################################################
-# Emacs settings
-########################################################################
-#
-# Local Variables:
-# mode: makefile
-# End:
index 818d539..6e21564 100644 (file)
@@ -1,7 +1,7 @@
-Here are some hints about testing modifications to macro packages 
-and manual pages.
+Here are some hints about testing modifications to macro packages and
+manual pages.
 
-1. Use groff's `-ww' option to catch potential problems.
+1. Use groff's '-ww' option to catch potential problems.
    Ideally, there shouldn't be any warnings.
 
 2. For a well-formedness check, run doclifter (http://catb.org/~esr/doclifter)
index f9fd490..89da313 100644 (file)
--- a/tmac/TODO
+++ b/tmac/TODO
@@ -15,7 +15,7 @@ footnote height.)
 Possibly have a place above which the footnote trap must not be
 placed.
 
-Improved indexing, not using tm, controlled by string variable (eg
+Improved indexing, not using tm, controlled by string variable (e.g.,
 -dIDX=file.idx).
 
 When changing from multi-column to narrower columns, we could avoid
index 9d7f09a..750b668 100644 (file)
@@ -1,5 +1,3 @@
-.\" -*- nroff -*-
-.\"
 .\" X.tmac
 .\"
 .nr _C \n(.C
 .el \
 .  do mso cp1047.tmac
 .
-.\" make sure that no blank lines creep in at the end of this file.
+.\" ====================================================================
+.\" Editor settings
+.\" ====================================================================
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" fill-column: 72
+.\" End:
+.\" vim: set filetype=groff textwidth=72:
index 54339ec..d9f884d 100644 (file)
@@ -1,5 +1,3 @@
-.\" -*- nroff -*-
-.\"
 .\" Xps.tmac
 .\"
 .do mso ps.tmac
 .el \
 .  do mso cp1047.tmac
 .
-.\" make sure that no blank lines creep in at the end of this file.
+.\" ====================================================================
+.\" Editor settings
+.\" ====================================================================
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" fill-column: 72
+.\" End:
+.\" vim: set filetype=groff textwidth=72:
index 1abc21e..51a2d01 100644 (file)
@@ -1,11 +1,9 @@
-.\" -*- nroff -*-
-.\"
 .\" a4.tmac
 .\"
 .\" Set up groff for A4 paper.  Must be called before any other macro
 .\" package.
 .\"
-.\" Some output drivers need an additional command line switch `-p' to
+.\" Some output drivers need an additional command-line switch '-p' to
 .\" override the default paper length set in the driver specific DESC
 .\" file.
 .\"
 .\" for ms, mdoc, man
 .do if !r LL .nr LL \n[.l]u
 .
-.\" EOF
+.\" ====================================================================
+.\" Editor settings
+.\" ====================================================================
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" fill-column: 72
+.\" End:
+.\" vim: set filetype=groff textwidth=72:
index 585af20..b8599e7 100644 (file)
@@ -1,25 +1,23 @@
-.\" -*- nroff -*-
-.\"
 .\" an-ext.tmac
 .\"
-.\" Copyright (C) 2007-201 Free Software Foundation, Inc.
+.\" Copyright (C) 2007-2018 Free Software Foundation, Inc.
 .\"
 .\" Written by Eric S. Raymond <esr@thyrsus.com>
 .\"            Werner Lemberg <wl@gnu.org>
 .\"
 .\" You may freely use, modify and/or distribute this file.
 .\"
-.\" The code below provides extension macros for the `man' macro package.
-.\" Care has been taken to make the code portable; groff extensions are
-.\" properly hidden so that all troff implementations can use it without
-.\" changes.
+.\" The code below provides extension macros for the 'man' macro
+.\" package.  Care has been taken to make the code portable; groff
+.\" extensions are properly hidden so that all troff implementations can
+.\" use it without changes.
 .\"
-.\" With groff, this file is sourced by the `man' macro package itself.
+.\" With groff, this file is sourced by the 'man' macro package itself.
 .\" Man page authors who are concerned about portability might add the
 .\" used macros directly to the prologue of the man page(s).
 .
 .
-.\" Convention: Auxiliary macros and registers start with `m' followed
+.\" Convention: Auxiliary macros and registers start with 'm' followed
 .\"             by an uppercase letter or digit.
 .
 .
 .  \" XXX to be written
 ..
 .
-.\" EOF
+.\" ====================================================================
+.\" Editor settings
+.\" ====================================================================
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" fill-column: 72
+.\" End:
+.\" vim: set filetype=groff textwidth=72:
index b46202a..971d2cd 100644 (file)
@@ -1,37 +1,37 @@
-.\" -*- nroff -*-
-.\"
 .\" an-old.tmac
 .\"
-.\" Copyright (C) 1989-201 Free Software Foundation, Inc.
+.\" Copyright (C) 1989-2018 Free Software Foundation, Inc.
 .\"      Written by James Clark (jjc@jclark.com)
 .\"
 .\" This file is part of groff.
 .\"
-.\" groff 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
+.\" groff 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.
 .\"
-.\" groff 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.
+.\" groff 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 <http://www.gnu.org/licenses/>.
+.\" along with this program.  If not, see
+.\" <http://www.gnu.org/licenses/>.
 .\"
-.\"  -rcR=1 => Create a single, very long page instead of multiple pages.
-.\"            Useful for online display.  Default in nroff mode.
-.\"            Desactivate with -rcR=0.
+.\"  -rcR=1 => Create a single, very long page instead of multiple
+.\"            pages.  Useful for online display.  Default in nroff
+.\"            mode.  Deactivate with -rcR=0.
 .\"  -rC1 => Number pages continuously, rather than start each at 1.
-.\"  -rD1 => Double-sided printing, ie different odd and even page footers.
+.\"  -rD1 => Double-sided printing, ie different odd and even page
+.\"          footers.
 .\"  -rPnnn => Number first page nnn.
-.\"  -rSxx => Use size `xx'pt (either 10, 11, or 12) for document rather
+.\"  -rSxx => Use size 'xx'pt (either 10, 11, or 12) for document rather
 .\"           than the default size of 10pt.
 .\"  -rXnnn => Number pages after nnn as nnna, nnnb, nnnc, ...
 .\"
 .\" The file man.local is loaded at the end.  Put local additions there.
-.\" If you need to add things to TH, use `.am1 TH'.
+.\" If you need to add things to TH, use '.am1 TH'.
 .\"
 .
 .if !\n(.g .ab These man macros work only with groff.
 .cp 0
 .
 .if (\n[.x]\n[.y] < 118) \
-.  ab You need GNU troff version 1.18 or higher to run this version of man!
+.  ab You need GNU troff 1.18 or higher to run this version of man!
+.
+.\" Define a string for use in diagnostic messages.
+.ds an-old an-old.tmac
 .
 .if !r D .nr D 0
 .if !r C .nr C 0
 .if !r S .nr S 10
-.\" we must use consecutive page numbers when using postscript to generate
-.\" html images, and we must not reset the page number at the beginning
-.\" (the `ps4html' register is automatically added to the command line by
-.\" the pre-html preprocessor)
+.\" We must use consecutive page numbers when using PostScript to
+.\" generate HTML images, and we must not reset the page number at the
+.\" beginning (the 'ps4html' register is automatically added to the
+.\" command line by the pre-HTML preprocessor).
 .if !r ps4html \
 .  if r P .pn 0\n[P]
 .if !r cR \{\
 .if !r LL \{\
 .
 .  \" but if that isn't predefined...
-.  \" then try to respect any prior `.ll' request.
+.  \" then try to respect any prior '.ll' request.
 .  nr LL \n[.l]
 .
 .  \" For troff, this is sufficient to give us a default line length of
 .  \" 6.5i, but for nroff, we prefer a default of 78n to nroff's default
 .  \" 65n.  This has the unfortunate side effect that we will override a
-.  \" user's `.ll 65n' request, with our preferred 78n default; we can't
-.  \" possibly know that the 65n came from a `.ll' request, and MUST
+.  \" user's '.ll 65n' request, with our preferred 78n default; we can't
+.  \" possibly know that the 65n came from a '.ll' request, and MUST
 .  \" assume that it was set by nroff, as its built-in default!  If the
-.  \" user wants to force this setting, then he MUST use the `-rLL=65n'
-.  \" option, or an equivalent `.nr LL 65n' request.
+.  \" user wants to force this setting, then he MUST use the '-rLL=65n'
+.  \" option, or an equivalent '.nr LL 65n' request.
 .  if n \
 .    if (\n[LL] = 65n) \
 .      nr LL 78n
 .if \n[an-html] .nr C 1
 .if r ps4html .nr C 1
 .
-.\" we redefine .ne to avoid page breaks if cR is set; instead, the page
-.\" length is increased to the necessary amount (this is needed for tables)
+.\" We redefine .ne to avoid page breaks if cR is set; instead, the page
+.\" length is increased to the necessary amount (this is needed for
+.\" tables).
 .\"
-.\" similarly, we redefine .bp if cR is set, adjusting the page length to
-.\" the current position so that no empty lines are inserted
+.\" Similarly, we redefine .bp if cR is set, adjusting the page length
+.\" to the current position so that no empty lines are inserted.
 .if \n[cR] \{\
 .  de1 ne
 .    ie \\n[.$] \
 .    DEVTAG-EO-TL
 .  \}
 .
-.  de an-init \" We have to do it like this to get multiple man pages right.
+.  de an-init \" This approach gets multiple man pages right.
 .    ds an-title "\\$1\"
 .    ds an-section "\\$2\"
 .    ds an-extra1 "\\$3\"
 .  \}
 .  PD
 .  if !r SN \
-.    nr SN 3n \" the indentation of sub-sub-headings relative to sub-headings
+.    nr SN 3n \" indentation of sub-sub-headings relative to sub-heads
 .  set-an-margin
 .  nr an-tag-sep 1n
 .
 .  ti 0
 .  nr need_eo_h 1
 .  DEVTAG-NH \\n[an-level]
-.  it 1 an-trap
+.  itc 1 an-trap
 .  nr an-no-space-flag 1
 .  nr an-break-flag 1
 .  ps \\n[PS-SH]u
 .  fi
 .  in \\n[IN]u
 .  ti \\n[SN]u
-.  it 1 an-trap
+.  itc 1 an-trap
 .  nr an-no-space-flag 1
 .  nr an-break-flag 1
 .  ps \\n[PS-SS]u
 ..
 .
 .de1 B
-.  it 1 an-trap
+.  itc 1 an-trap
 .  ft B
 .  if \\n[.$] \&\\$*
 ..
 .
 .de1 I
-.  it 1 an-trap
+.  itc 1 an-trap
 .  ft I
 .  if \\n[.$] \,\\$*\/
 ..
 .
 .de1 SM
-.  it 1 an-trap
+.  itc 1 an-trap
 .  ps -1
 .  if \\n[.$] \&\\$*
 ..
 .
 .de1 SB
-.  it 1 an-trap
+.  itc 1 an-trap
 .  ps -1
 .  ft B
 .  if \\n[.$] \&\\$*
 .de1 TP
 .  sp \\n[PD]u
 .  if \\n[.$] .nr an-prevailing-indent (n;\\$1)
-.  it 1 an-trap
+.  itc 1 an-trap
 .  in 0
 .  if !\\n[an-div?] \{\
 .    ll -\\n[an-margin]u
 .  di
 .  nr an-div? 0
 .  ll
-.  \" We must emit the diversion in a separate environment to
-.  \" assure that a possible margin character is printed correctly.
+.  \" We must emit the diversion in a separate environment to assure
+.  \" that a possible margin character is printed correctly.
 .  ev an-2
 .  evc 0
 .  mc
 .    in (\\n[an-margin]u + \\n[an-prevailing-indent]u)
 .  \}
 .  el \{\
-.    \" In nroff mode, the indentation value should be an integer multiple
-.    \" of the character cell, to avoid different results compared to the
-.    \" the .ie part above.
+.    \" In nroff mode, the indentation value should be an integer
+.    \" multiple of the character cell, to avoid different results
+.    \" compared to the .ie part above.
 .    ne (1v + 1u)
 .    DEVTAG-COL 1
 .    an-div
 .  ns
 ..
 .
-.ds an-empty \" this is referenced to avoid looping on eg .RB ( \\ )
+.ds an-empty \" this is referenced to avoid looping on, e.g., .RB ( \\ )
 .
 .de1 RI
 .  if \\n[.$] \{\
 .
 .de1 IR
 .  if \\n[.$] \{\
-.    ds an-result \&\f[I]\\$1\f[R]\"
+.    ds an-result \&\f[I]\,\\$1\f[R]\"
 .    shift
 .    while (\\n[.$] >= 2) \{\
 .      as an-result \/\\$1\f[I]\,\\$2\f[R]\"
 .
 .de1 IB
 .  if \\n[.$] \{\
-.    ds an-result \&\f[I]\\$1\"
+.    ds an-result \&\f[I]\,\\$1\"
 .    shift
 .    while (\\n[.$] >= 2) \{\
 .      as an-result \/\f[B]\\$1\f[I]\,\\$2\\*[an-empty]\"
 .de1 R
 \c
 .  ie \\n[.$] \{\
-.    tm `R' is a string (producing the registered sign), not a macro.
+.    tmc \\*[an-old]: \\n[.F]: line \\n[.c]: 'R' is a string
+.    tm1 " (producing the registered sign), not a macro.
 .    nop \\$*
 .  \}
 .  el \{\
 .  \}
 ..
 .
-.\" these strings must work in compatibility mode also
+.\" These strings must work in compatibility mode also.
 .
 .ds S \s'\\n(PSu'\"
 .ie c\[tm] .ds Tm \(tm\"
 .if !\n[an-html] \{\
 .  if !rHY \{\
 .    ie \n[cR] \
-.      nr HY 12
+.      nr HY 4
 .    el \
-.      nr HY 14
+.      nr HY 6
 .  \}
 .  hy \n[HY]
 .\}
 .
 .cp \n[_C]
 .
-.\" end of an-old.tmac
+.\" ====================================================================
+.\" Editor settings
+.\" ====================================================================
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" fill-column: 72
+.\" End:
+.\" vim: set filetype=groff textwidth=72:
index 89bd747..79a58b0 100644 (file)
@@ -1,4 +1,13 @@
-.\" -*- nroff -*-
 .\" an.tmac
 .\"
 .do mso andoc.tmac
+.
+.\" ====================================================================
+.\" Editor settings
+.\" ====================================================================
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" fill-column: 72
+.\" End:
+.\" vim: set filetype=groff textwidth=72:
index 38a59a9..7f1f3ca 100644 (file)
@@ -1,28 +1,27 @@
-.\" -*- nroff -*-
-.\"
 .\" andoc.tmac
 .\"
 .\" Load either an-old.tmac or doc.tmac.  Multiple man pages can be
 .\" handled.
 .\"
 .\"
-.\" Copyright (C) 1991-201 Free Software Foundation, Inc.
+.\" Copyright (C) 1991-2018 Free Software Foundation, Inc.
 .\"      Written by James Clark (jjc@jclark.com)
 .\"
 .\" This file is part of groff.
 .\"
-.\" groff 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
+.\" groff 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.
 .\"
-.\" groff 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.
+.\" groff 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 <http://www.gnu.org/licenses/>.
+.\" along with this program.  If not, see
+.\" <http://www.gnu.org/licenses/>.
 .\"
 .
 .if !\n(.g \
 .als andoc-em em
 .als andoc-bp bp
 .
-.de1 reload-doc
-.  ch an-header   \" remove trap set by an-old.tmac
-.  ch an-footer   \" remove trap set by an-old.tmac
-.  ch an-p-footer \" remove trap set by an-old.tmac
 .
-.  als em andoc-em
-.  als bp andoc-bp
-.  rm Dd          \" disable load-only-once, see doc.tmac
+.\" We must not use '.de1' for 'reload-doc' or 'reload-man'!  'doc.tmac'
+.\" unconditionally switches compatibility mode off, but '.de1' would
+.\" ignore this, restoring the mode that was active before.  Similarly,
+.\" we have to switch back to the original compatibility mode for man
+.\" documents in case there is a mix of mdoc and man input files.
+.\"
+.\" Due to a bug in GNU troff it necessary to have a no-op line between
+.\" '.do' and '\*'.
+.
+.
+.de reload-doc
+.  do ch an-header   \" remove trap set by an-old.tmac
+.  do ch an-footer   \" remove trap set by an-old.tmac
+.  do ch an-p-footer \" remove trap set by an-old.tmac
+.
+.  do als em andoc-em
+.  do als bp andoc-bp
+.  do rm Dd          \" disable load-only-once, see doc.tmac
 .
-.  mso doc.tmac
+.  do mso doc.tmac
 .
-.  als TH reload-man
-\\*[Dd]\\
+.  do als TH reload-man
+.
+\\*(Dd\\
 ..
 .
-.de1 reload-man
-.  ch header      \" remove trap set by doc.tmac
-.  ch footer      \" remove trap set by doc.tmac
+.de reload-man
+.  do cp \n(.C       \" restore original compatibility mode
+.
+.  do ch header      \" remove trap set by doc.tmac
+.  do ch footer      \" remove trap set by doc.tmac
 .
-.  als em andoc-em
-.  als bp andoc-bp
-.  rm RI          \" disable load-only-once, see an-old.tmac
-.  blm            \" no blank line macro
-.  rm TH
+.  do als em andoc-em
+.  do als bp andoc-bp
+.  do rm RI          \" disable load-only-once, see an-old.tmac
+.  do blm            \" no blank line macro
+.  do rm TH
 .
-.  mso an-old.tmac
+.  do mso an-old.tmac
 .
-.  als Dd reload-doc
-\\*[TH]\\
+.  do als Dd reload-doc
+.
+\\*(TH\\
 ..
 .
 .als TH reload-man
 .
 .cp \n[_C]
 .
-.\" end of andoc.tmac
+.\" ====================================================================
+.\" Editor settings
+.\" ====================================================================
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" fill-column: 72
+.\" End:
+.\" vim: set filetype=groff textwidth=72:
index 5203585..529de98 100644 (file)
@@ -1,4 +1,3 @@
-.\" -*- nroff -*-
 .\" composite.tmac
 .
 .do composite ga u0300
 .do composite ,  u0327
 .do composite ho u0328
 .
-.\" EOF
+.\" ====================================================================
+.\" Editor settings
+.\" ====================================================================
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" fill-column: 72
+.\" End:
+.\" vim: set filetype=groff textwidth=72:
index 759ca9a..251365d 100644 (file)
@@ -1,5 +1,3 @@
-.\" -*- nroff -*-
-.\"
 .\" cp1047.tmac
 .\"
 .nr _C \n(.C
 .trin \[char253]\[`U]
 .trin \[char254]\['U]
 .cp \n(_C
+.
+.\" ====================================================================
+.\" Editor settings
+.\" ====================================================================
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" fill-column: 72
+.\" End:
+.\" vim: set filetype=groff textwidth=72:
index c0efeda..4d0706f 100644 (file)
@@ -1,24 +1,23 @@
-.\" -*- mode: nroff; coding: iso-latin-2; -*-
-.\"
 .\" Czech localization for groff
 .\"
-.\" Copyright (C) 2007-201 Free Software Foundation, Inc.
+.\" Copyright (C) 2007-2018 Free Software Foundation, Inc.
 .\"   Written by Marcela Ma¹láòová (mmaslano@redhat.com)
 .\"
 .\" This file is part of groff.
 .\"
-.\" groff 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
+.\" groff 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.
 .\"
-.\" groff 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.
+.\" groff 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 <http://www.gnu.org/licenses/>.
+.\" along with this program.  If not, see
+.\" <http://www.gnu.org/licenses/>.
 .\"
 .\" Please send comments to mmaslano@redhat.com.
 .
 .      \" update the date
 .      ds DY \n[dy] \*[MO] \n[year]
 .      \" set hyphenation flags
-.      nr HY 12
+.      nr HY 1
 .\}
 .
 .
 .mso latin2.tmac
 .
 .
-.\" Czech hyphenation
+.\" Czech hyphenation (\lefthyphenmin=2, \righthyphenmin=2)
 .ss 12 0
-.hy 12
+.hy 1
 .hcode á á  Á á
 .hcode è è  È è
 .hcode ï ï  Ï ï
 .hpfa hyphenex.cs
 .
 .
-.\" man, mdoc and mdoc-old are intentionally left untouched:
-.\" usually these packages are translated in the sources of the documents.
+.\" man, mdoc and mdoc-old are intentionally left untouched: usually
+.\" these packages are translated in the sources of the documents.
+.
+.\" ====================================================================
+.\" Editor settings
+.\" ====================================================================
 .
-.\" end of cs.tmac
+.\" Local Variables:
+.\" mode: nroff
+.\" coding: latin-2
+.\" fill-column: 72
+.\" End:
+.\" vim: set filetype=groff textwidth=72:
index e1e1cb3..0bad3d6 100644 (file)
@@ -1,24 +1,23 @@
-.\" -*- mode: nroff; coding: iso-latin-1; -*-
-.\"
 .\" German localization for groff
 .\"
-.\" Copyright (C) 2006-201 Free Software Foundation, Inc.
-.\"   Written by Werner Lberg (wl@gnu.org)
+.\" Copyright (C) 2006-2018 Free Software Foundation, Inc.
+.\"   Written by Werner Lemberg (wl@gnu.org)
 .\"
 .\" This file is part of groff.
 .\"
-.\" groff 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
+.\" groff 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.
 .\"
-.\" groff 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.
+.\" groff 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 <http://www.gnu.org/licenses/>.
+.\" along with this program.  If not, see
+.\" <http://www.gnu.org/licenses/>.
 .\"
 .\" Please send comments to groff@gnu.org.
 .
 .      \" update the date
 .      ds DY \n[dy].\~\*[MO] \n[year]
 .      \" set hyphenation flags
-.      nr HY 12
+.      nr HY 1
 .\}
 .
 .
 .mso latin1.tmac
 .
 .
-.\" German hyphenation
+.\" German hyphenation (\lefthyphenmin=2, \righthyphenmin=2)
 .ss 12 0
-.hy 12
-.hcode ä ä  Ä ä
-.hcode ö ö  Ö ö
-.hcode ü ü  Ü ü
+.hy 1
+.
+.hcode ä ä  â â  à à  á á  ã ã  å å  æ æ
+.hcode ç ç
+.hcode é é  è è  ë ë  ê ê
+.hcode í í  ì ì  î î  ï ï
+.hcode ñ ñ
+.hcode ó ó  ò ò  ô ô  ö ö  ø ø
+.hcode ú ú  ü ü  û û
+.
+.hcode Ä ä  Â â  À à  Á á  Ã ã  Å å  Æ æ
+.hcode Ç ç
+.hcode É é  È è  Ë ë  Ê ê
+.hcode Í í  Ì ì  Î î  Ï ï
+.hcode Ñ ñ
+.hcode Ó ó  Ò ò  Ô ô  Ö ö  Ø ø
+.hcode Ú ú  Ü ü  Û û
+.
 .hcode ß ß
 .
 .hla de
 .ie r \*[locale]-new-hyphenation-patterns \
 .  hpf hyphen.den
-.el \{\
+.el \
 .  hpf hyphen.det
-.  hpfa hyphenex.det
-.\}
 .
 .
-.\" man, mdoc and mdoc-old are intentionally left untouched:
-.\" usually these packages are translated in the sources of the documents.
+.\" man, mdoc and mdoc-old are intentionally left untouched: usually
+.\" these packages are translated in the sources of the documents.
+.
+.\" ====================================================================
+.\" Editor settings
+.\" ====================================================================
 .
-.\" end of de.tmac
+.\" Local Variables:
+.\" mode: nroff
+.\" coding: latin-1
+.\" fill-column: 72
+.\" End:
+.\" vim: set filetype=groff textwidth=72:
index 4f482b3..5c26258 100644 (file)
@@ -1,28 +1,35 @@
-.\" -*- mode: nroff; coding: iso-latin-1; -*-
-.\"
 .\" German localization for groff (new orthography)
 .\"
-.\" Copyright (C) 2006-201 Free Software Foundation, Inc.
+.\" Copyright (C) 2006-2018 Free Software Foundation, Inc.
 .\"   Written by Werner Lemberg (wl@gnu.org)
 .\"
 .\" This file is part of groff.
 .\"
-.\" groff 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
+.\" groff 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.
 .\"
-.\" groff 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.
+.\" groff 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 <http://www.gnu.org/licenses/>.
+.\" along with this program.  If not, see
+.\" <http://www.gnu.org/licenses/>.
 .\"
 .\" Please send comments to groff@gnu.org.
 .
 .nr german-new-hyphenation-patterns 1
 .mso de.tmac
 .
-.\" end of den.tmac
+.\" ====================================================================
+.\" Editor settings
+.\" ====================================================================
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" fill-column: 72
+.\" End:
+.\" vim: set filetype=groff textwidth=72:
index fde3ade..54836a0 100644 (file)
@@ -1,4 +1,3 @@
-.\" -*- nroff -*-
 .ig
 devtag.tmac - macro package for adding tags to roff documents.
 
@@ -11,7 +10,7 @@ Installed position: groff's main macro directory.
 
 This file is part of groff, the GNU roff type-setting system.
 
-Copyright (C) 2004-2014 Free Software Foundation, Inc.
+Copyright (C) 2004-2018 Free Software Foundation, Inc.
 written by Gaius Mulley <gaius@glam.ac.uk>.
 
 groff is free software; you can redistribute it and/or modify it under
@@ -25,7 +24,7 @@ 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 <http://www.gnu.org/licenses/>.
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 
 ------------------------------------------------------------------------
@@ -120,11 +119,12 @@ reasonably generic and could be applied to other devices.
 .cp \n[_C]
 .
 .
-.\" --------------------------------------------------------------------
-.\" Emacs settings
-.\" --------------------------------------------------------------------
+.\" ====================================================================
+.\" Editor settings
+.\" ====================================================================
 .
 .\" Local Variables:
 .\" mode: nroff
+.\" fill-column: 72
 .\" End:
-.\" EOF
+.\" vim: set filetype=groff textwidth=72:
similarity index 87%
rename from tmac/doc-common
rename to tmac/doc-common-u
index e63fdb4..0d2e418 100644 (file)
@@ -1,7 +1,5 @@
-.\" -*- nroff -*-
-.\"
 .\" Copyright (c) 1991, 1993
-.\"    The Regents of the University of California.  All rights reserved.
+.\"   The Regents of the University of California.  All rights reserved.
 .\"
 .\" Redistribution and use in source and binary forms, with or without
 .\" modification, are permitted provided that the following conditions
@@ -9,24 +7,26 @@
 .\" 1. Redistributions of source code must retain the above copyright
 .\"    notice, this list of conditions and the following disclaimer.
 .\" 2. Redistributions in binary form must reproduce the above copyright
-.\"    notice, this list of conditions and the following disclaimer in the
-.\"    documentation and/or other materials provided with the distribution.
+.\"    notice, this list of conditions and the following disclaimer in
+.\"    the documentation and/or other materials provided with the
+.\"    distribution.
 .\" 3. [Deleted.  See
 .\"     ftp://ftp.cs.berkeley.edu/pub/4bsd/README.Impt.License.Change]
-.\" 4. Neither the name of the University nor the names of its contributors
-.\"    may be used to endorse or promote products derived from this software
-.\"    without specific prior written permission.
+.\" 4. Neither the name of the University nor the names of its
+.\"    contributors may be used to endorse or promote products derived
+.\"    from this software without specific prior written permission.
 .\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS"
+.\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+.\" PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR
+.\" CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+.\" SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+.\" LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+.\" USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+.\" ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+.\" OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+.\" OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
 .\"     @(#)doc-common 8.1 (Berkeley) 06/08/93
@@ -34,8 +34,8 @@
 .\"     %beginstrip%
 .
 .
-.\" Macro Identifiers.  For each user macro a corresponding register with
-.\" the same name must exist.  Its value must not be zero.
+.\" Macro Identifiers.  For each user macro a corresponding register
+.\" with the same name must exist.  Its value must not be zero.
 .
 .nr %A 1
 .nr %B 1
 .nr Xr 10n
 .
 .
-.\" macros which must be processed after the closing delimiter of `Op'
+.\" macros which must be processed after the closing delimiter of 'Op'
 .\" and friends
 .ds doc-after-Ao
 .ds doc-after-Bo
 .\" NS   doc-volume-as-XXX
 .\" NS   doc-volume-ds-XXX
 .\" NS
-.\" NS width register `Dt' set above
+.\" NS width register 'Dt' set above
 .
 .\" an alternative, more detailed scheme for naming the manual sections
 .\"
 .
 .  if !\n[cR] \
 .    if \n[nl] \{\
-  .    doc-setup-header
+.      doc-setup-header
 .      bp
 .    \}
 ..
 .\" NS doc-default-operating-system global string
 .\" NS   the exact (default) version of the operating system
 .\" NS
-.\" NS override this in `mdoc.local', if necessary
+.\" NS override this in 'mdoc.local', if necessary
 .
 .ds doc-default-operating-system BSD
 .
 .\" NS local variables:
 .\" NS   doc-operating-system-XXX-XXX
 .\" NS
-.\" NS width register `Os' set above
+.\" NS width register 'Os' set above
 .
 .ds doc-operating-system-ATT-7   7th\~Edition
 .als doc-operating-system-ATT-7th doc-operating-system-ATT-7
 .      ie d doc-operating-system-BSD-\$2 \
 .        ds doc-operating-system "\*[doc-operating-system-BSD-\$2]
 .      el \
-.        tm mdoc warning: .Os: Unknown BSD version `\$2' (#\n[.c])
+.        tm mdoc warning: .Os: Unknown BSD version '\$2' (#\n[.c])
 .  \}\}
 .  el \{ .ie "\$1"FreeBSD" \{\
 .    ds doc-operating-system FreeBSD
 .      ie d doc-operating-system-FreeBSD-\$2 \
 .        as doc-operating-system \~\*[doc-operating-system-FreeBSD-\$2]
 .      el \
-.        tm mdoc warning: .Os: Unknown FreeBSD version `\$2' (#\n[.c])
+.        tm mdoc warning: .Os: Unknown FreeBSD version '\$2' (#\n[.c])
 .  \}\}
 .  el \{ .ie "\$1"DragonFly" \{\
 .    ds doc-operating-system DragonFly
 .      ie d doc-operating-system-DragonFly-\$2 \
 .        as doc-operating-system \~\*[doc-operating-system-DragonFly-\$2]
 .      el \
-.        tm mdoc warning: .Os: Unknown DragonFly version `\$2' (#\n[.c])
+.        tm mdoc warning: .Os: Unknown DragonFly version '\$2' (#\n[.c])
 .  \}\}
 .  el \{ .ie "\$1"NetBSD" \{\
 .    ds doc-operating-system NetBSD
 .      ie d doc-operating-system-NetBSD-\$2 \
 .        as doc-operating-system \~\*[doc-operating-system-NetBSD-\$2]
 .      el \
-.        tm mdoc warning: .Os: Unknown NetBSD version `\$2' (#\n[.c])
+.        tm mdoc warning: .Os: Unknown NetBSD version '\$2' (#\n[.c])
 .  \}\}
 .  el \{ .ie "\$1"OpenBSD" \{\
 .    ds doc-operating-system OpenBSD
 .      ie d doc-operating-system-OpenBSD-\$2 \
 .        as doc-operating-system \~\*[doc-operating-system-OpenBSD-\$2]
 .      el \
-.        tm mdoc warning: .Os: Unknown OpenBSD version `\$2' (#\n[.c])
+.        tm mdoc warning: .Os: Unknown OpenBSD version '\$2' (#\n[.c])
 .  \}\}
 .  el \{ .ie "\$1"Darwin" \{\
 .    ds doc-operating-system Darwin
 .      ie d doc-operating-system-Darwin-\$2 \
 .        as doc-operating-system \~\*[doc-operating-system-Darwin-\$2]
 .      el \
-.        tm mdoc warning: .Os: Unknown Darwin version `\$2' (#\n[.c])
+.        tm mdoc warning: .Os: Unknown Darwin version '\$2' (#\n[.c])
 .  \}\}
 .  el \{\
 .    ds doc-operating-system \$1
 .
 .
 .\" NS doc-date-string global string
-.\" NS   the manual page date as set by `Dd'
+.\" NS   the manual page date as set by 'Dd'
 .
 .ds doc-date-string
 .
 .\" NS local variables:
 .\" NS   doc-date-XXX
 .\" NS
-.\" NS width register `Dd' set above
+.\" NS width register 'Dd' set above
 .
 .ds doc-date-1  January
 .ds doc-date-2  February
 .  ie \n[.$] \{\
 .    ie "\$1"$Mdocdate:" \
 .      ds doc-date-string \$2\~\$3, \$4
-.    el .ie (\n[.$] == 3) \
+.    el \{ .ie (\n[.$] == 3) \
 .      ds doc-date-string \$1\~\$2 \$3
 .    el \{\
 .      ds doc-date-string "\*[doc-date-\n[mo]]
 .      as doc-date-string \~\n[dy], \n[year]
-.    \}
+.    \}\}
 .  \}
 .  el \
 .    ds doc-date-string Epoch
 .
 .
 .\" NS doc-hyphen-flags global register
-.\" NS   the parameter for the `.hy' request
+.\" NS   the parameter for the '.hy' request
 .\" NS
-.\" NS override this in `mdoc.local', if necessary.
+.\" NS override this in 'mdoc.local', if necessary.
 .
-.nr doc-hyphen-flags 12
+.nr doc-hyphen-flags 4
 .
 .
 .\" NS doc-header macro
 .\" NS   finish output
 .
 .de doc-end-macro
-.  \" We may still have a partial line in the environment.  If this is the
-.  \" case, and we happen to be on the last line of the page, the `.fl'
-.  \" request will cause the page to be ejected and troff will immediately
-.  \" exit.  If we are in nroff mode, this would be unfortunate, since we
-.  \" would never get a chance to output the footer.  So we fudge the page
-.  \" length to make sure that the last page is never ejected until we want
-.  \" it to be.
+.  \" We may still have a partial line in the environment.  If this is
+.  \" the case, and we happen to be on the last line of the page, the
+.  \" '.fl' request will cause the page to be ejected and troff will
+.  \" immediately exit.  If we are in nroff mode, this would be
+.  \" unfortunate, since we would never get a chance to output the
+.  \" footer.  So we fudge the page length to make sure that the last
+.  \" page is never ejected until we want it to be.
 .
 .  if \n[cR] \
 .    pl +3v
 .\" NS Pp user macro (not parsed, not callable)
 .\" NS   new paragraph
 .\" NS
-.\" NS width register `Pp' set above
+.\" NS width register 'Pp' set above
 .
 .als Pp doc-paragraph
 .
 .\" NS Lp user macro (not parsed, not callable)
 .\" NS   same as .Pp
 .\" NS
-.\" NS width register `Lp' set above
+.\" NS width register 'Lp' set above
 .
 .als Lp doc-paragraph
 .
 .\" NS Nd user macro (not parsed, not callable)
 .\" NS   print name description
 .\" NS
-.\" NS width register `Nd' set above
+.\" NS width register 'Nd' set above
 .
 .de Nd
 .  nop \[em] \$*
 .
 .
 .\" NS doc-in-synopsis-section global register (bool)
-.\" NS   whether we are in the `synopsis' section
+.\" NS   whether we are in the 'synopsis' section
 .
 .nr doc-in-synopsis-section 0
 .
 .
 .\" NS doc-in-library-section global register (bool)
-.\" NS   whether we are in the `library' section
+.\" NS   whether we are in the 'library' section
 .
 .nr doc-in-library-section 0
 .
 .
 .\" NS doc-in-see-also-section global register (bool)
-.\" NS   whether we are in the `see also' section
+.\" NS   whether we are in the 'see also' section
 .
 .nr doc-in-see-also-section 0
 .
 .
 .\" NS doc-in-files-section global register (bool)
-.\" NS   whether we are in the `files' section
+.\" NS   whether we are in the 'files' section
 .
 .nr doc-in-files-section 0
 .
 .
 .\" NS doc-in-authors-section global register (bool)
-.\" NS   whether we are in the `authors' section
+.\" NS   whether we are in the 'authors' section
 .
 .nr doc-in-authors-section 0
 .
 .\" NS   doc-reg-Sh1
 .\" NS   doc-section-XXX
 .\" NS
-.\" NS width register `Sh' set in doc-common
+.\" NS width register 'Sh' set in doc-common
 .
 .ds doc-section-name        NAME
 .ds doc-section-synopsis    SYNOPSIS
 .
 .de Sh
 .  ie \n[doc-arg-limit] \{\
-.    \" we only allow `Sh' within `Sh'; it will change the font back to
-.    \" `doc-Sh-font'
+.    \" we only allow 'Sh' within 'Sh'; it will change the font back to
+.    \" 'doc-Sh-font'
 .    ie "\*[doc-macro-name]"Sh" \{\
 .      nr doc-arg-ptr +1
 .      ie (\n[doc-arg-limit] >= \n[doc-arg-ptr]) \{\
 .    if t \
 .      ad
 .
-.    \" this resolves e.g. `.Sh "SEE ALSO"'
+.    \" this resolves e.g. '.Sh "SEE ALSO"'
 .    doc-first-parameter \$*
 .
 .    ie "\*[doc-str-dfp]"\*[doc-section-name]" \{\
 .\" NS   doc-reg-Ss
 .\" NS   doc-reg-Ss1
 .\" NS
-.\" NS width register `Ss' set above
+.\" NS width register 'Ss' set above
 .
 .de Ss
 .  ie \n[doc-arg-limit] \{\
-.    \" we only allow `Ss' within `Ss'; it will change the font back to
-.    \" `doc-Sh-font'
+.    \" we only allow 'Ss' within 'Ss'; it will change the font back to
+.    \" 'doc-Sh-font'
 .    ie "\*[doc-macro-name]"Ss" \{\
 .      nr doc-arg-ptr +1
 .      ie (\n[doc-arg-limit] >= \n[doc-arg-ptr]) \{\
 .
 .de Rd
 .  tm MDOC GLOBAL REGISTER DUMP
-.  tm doc-macro-name == `\*[doc-macro-name]'
+.  tm doc-macro-name == '\*[doc-macro-name]'
 .  tm doc-arg-limit == \n[doc-arg-limit]
 .  tm doc-num-args == \n[doc-num-args]
 .  tm doc-arg-ptr == \n[doc-arg-ptr]
 .
 .  nr doc-reg-Rd 1
 .  while (\n[doc-reg-Rd] <= \n[doc-arg-limit]) \{\
-.    tm doc-arg\n[doc-reg-Rd] == `\*[doc-arg\n[doc-reg-Rd]]'
+.    tm doc-arg\n[doc-reg-Rd] == '\*[doc-arg\n[doc-reg-Rd]]'
 .    tm doc-type\n[doc-reg-Rd] == \n[doc-type\n[doc-reg-Rd]]
-.    tm doc-space\n[doc-reg-Rd] == `\*[doc-space\n[doc-reg-Rd]]'
+.    tm doc-space\n[doc-reg-Rd] == '\*[doc-space\n[doc-reg-Rd]]'
 .    nr doc-reg-Rd +1
 .  \}
 .
 .  tm doc-indent-synopsis-active == \n[doc-indent-synopsis-active]
 .  tm doc-have-decl == \n[doc-have-decl]
 .  tm doc-have-var == \n[doc-have-var]
-.  tm doc-command-name == `\*[doc-command-name]'
-.  tm doc-quote-left == `\*[doc-quote-left]'
-.  tm doc-quote-right == `\*[doc-quote-right]'
+.  tm doc-command-name == '\*[doc-command-name]'
+.  tm doc-quote-left == '\*[doc-quote-left]'
+.  tm doc-quote-right == '\*[doc-quote-right]'
 .  tm doc-nesting-level == \n[doc-nesting-level]
 .  tm doc-in-list == \n[doc-in-list]
-.  tm doc-space == `\*[doc-space]'
-.  tm doc-saved-space == `\*[doc-saved-space]'
+.  tm doc-space == '\*[doc-space]'
+.  tm doc-saved-space == '\*[doc-saved-space]'
 .  tm doc-space-mode == \n[doc-space-mode]
 .  tm doc-have-space == \n[doc-have-space]
 .  tm doc-have-slot == \n[doc-have-slot]
 .
 .  nr doc-reg-Rd 0
 .  while (\n[doc-reg-Rd] <= \n[doc-display-depth]) \{\
-.    tm doc-display-type-stack\n[doc-reg-Rd] == `\*[doc-display-type-stack\n[doc-reg-Rd]]'
+.    tm doc-display-type-stack\n[doc-reg-Rd] == '\*[doc-display-type-stack\n[doc-reg-Rd]]'
 .    tm doc-display-indent-stack\n[doc-reg-Rd] == \n[doc-display-indent-stack\n[doc-reg-Rd]]
 .    tm doc-display-ad-stack\n[doc-reg-Rd] == \n[doc-display-ad-stack\n[doc-reg-Rd]]
 .    tm doc-display-fi-stack\n[doc-reg-Rd] == \n[doc-display-fi-stack\n[doc-reg-Rd]]
 .
 .  nr doc-reg-Rd 1
 .  while (\n[doc-reg-Rd] <= \n[doc-fontmode-depth]) \{\
-.    tm doc-fontmode-font-stack\n[doc-reg-Rd] == `\n[doc-fontmode-font-stack\n[doc-reg-Rd]]'
-.    tm doc-fontmode-size-stack\n[doc-reg-Rd] == `\n[doc-fontmode-size-stack\n[doc-reg-Rd]]'
+.    tm doc-fontmode-font-stack\n[doc-reg-Rd] == '\n[doc-fontmode-font-stack\n[doc-reg-Rd]]'
+.    tm doc-fontmode-size-stack\n[doc-reg-Rd] == '\n[doc-fontmode-size-stack\n[doc-reg-Rd]]'
 .    nr doc-reg-Rd +1
 .  \}
 .
 .
 .  nr doc-reg-Rd 1
 .  while (\n[doc-reg-Rd] <= \n[doc-list-depth]) \{\
-.    tm doc-list-type-stack\n[doc-reg-Rd] == `\*[doc-list-type-stack\n[doc-reg-Rd]]'
+.    tm doc-list-type-stack\n[doc-reg-Rd] == '\*[doc-list-type-stack\n[doc-reg-Rd]]'
 .    tm doc-list-have-indent-stack\n[doc-reg-Rd] == \n[doc-list-have-indent-stack\n[doc-reg-Rd]]
 .    tm doc-list-indent-stack\n[doc-reg-Rd] == \n[doc-list-indent-stack\n[doc-reg-Rd]]
 .    tm doc-compact-list-stack\n[doc-reg-Rd] == \n[doc-compact-list-stack\n[doc-reg-Rd]]
-.    tm doc-tag-prefix-stack\n[doc-reg-Rd] == `\*[doc-tag-prefix-stack\n[doc-reg-Rd]]'
-.    tm doc-tag-width-stack\n[doc-reg-Rd] == `\*[doc-tag-width-stack\n[doc-reg-Rd]]'
+.    tm doc-tag-prefix-stack\n[doc-reg-Rd] == '\*[doc-tag-prefix-stack\n[doc-reg-Rd]]'
+.    tm doc-tag-width-stack\n[doc-reg-Rd] == '\*[doc-tag-width-stack\n[doc-reg-Rd]]'
 .    tm doc-list-offset-stack\n[doc-reg-Rd] == \n[doc-list-offset-stack\n[doc-reg-Rd]]
 .    tm doc-enum-list-count-stack\n[doc-reg-Rd] == \n[doc-enum-list-count-stack\n[doc-reg-Rd]]
 .    nr doc-reg-Rd +1
 .  \}
 .
-.  tm doc-saved-Pa-font == `\*[doc-saved-Pa-font]'
+.  tm doc-saved-Pa-font == '\*[doc-saved-Pa-font]'
 .  tm doc-curr-type == \n[doc-curr-type]
-.  tm doc-curr-arg == `\*[doc-curr-arg]'
+.  tm doc-curr-arg == '\*[doc-curr-arg]'
 .  tm doc-diag-list-input-line-count == \n[doc-diag-list-input-line-count]
 .  tm doc-num-columns == \n[doc-num-columns]
 .  tm doc-column-indent-width == \n[doc-column-indent-width]
 .  tm doc-is-func == \n[doc-is-func]
 .  tm doc-have-old-func == \n[doc-have-old-func]
 .  tm doc-func-arg-count == \n[doc-func-arg-count]
-.  tm doc-func-arg == `\*[doc-func-arg]'
+.  tm doc-func-arg == '\*[doc-func-arg]'
 .  tm doc-num-func-args == \n[doc-num-func-args]
 .  tm doc-func-args-processed == \n[doc-func-args-processed]
 .  tm doc-have-func == \n[doc-have-func]
 .
 .  nr doc-reg-Rd 0
 .  while (\n[doc-reg-Rd] <= \n[doc-author-count]) \{\
-.    tm doc-author-name\n[doc-reg-Rd] == `\*[doc-author-name\n[doc-reg-Rd]]'
+.    tm doc-author-name\n[doc-reg-Rd] == '\*[doc-author-name\n[doc-reg-Rd]]'
 .    nr doc-reg-Rd +1
 .  \}
 .
 .  tm doc-book-count == \n[doc-book-count]
-.  tm doc-book-name == `\*[doc-book-name]'
+.  tm doc-book-name == '\*[doc-book-name]'
 .  tm doc-date-count == \n[doc-date-count]
-.  tm doc-date == `\*[doc-date]'
+.  tm doc-date == '\*[doc-date]'
 .  tm doc-publisher-count == \n[doc-publisher-count]
-.  tm doc-publisher-name == `\*[doc-publisher-name]'
+.  tm doc-publisher-name == '\*[doc-publisher-name]'
 .  tm doc-journal-count == \n[doc-journal-count]
-.  tm doc-journal-name == `\*[doc-journal-name]'
+.  tm doc-journal-name == '\*[doc-journal-name]'
 .  tm doc-issue-count == \n[doc-issue-count]
-.  tm doc-issue-name == `\*[doc-issue-name]'
+.  tm doc-issue-name == '\*[doc-issue-name]'
 .  tm doc-optional-count == \n[doc-optional-count]
-.  tm doc-optional-string == `\*[doc-optional-string]'
+.  tm doc-optional-string == '\*[doc-optional-string]'
 .  tm doc-page-number-count == \n[doc-page-number-count]
-.  tm doc-page-number-string == `\*[doc-page-number-string]'
+.  tm doc-page-number-string == '\*[doc-page-number-string]'
 .  tm doc-corporate-count == \n[doc-corporate-count]
-.  tm doc-corporate-name == `\*[doc-corporate-name]'
+.  tm doc-corporate-name == '\*[doc-corporate-name]'
 .  tm doc-report-count == \n[doc-report-count]
-.  tm doc-report-name == `\*[doc-report-name]'
+.  tm doc-report-name == '\*[doc-report-name]'
 .  tm doc-reference-title-count == \n[doc-reference-title-count]
-.  tm doc-reference-title-name == `\*[doc-reference-title-name]'
-.  tm doc-reference-title-name-for-book == `\*[doc-reference-title-name-for-book]'
+.  tm doc-reference-title-name == '\*[doc-reference-title-name]'
+.  tm doc-reference-title-name-for-book == '\*[doc-reference-title-name-for-book]'
 .  tm doc-url-count == \n[doc-url-count]
-.  tm doc-url-name == `\*[doc-url-name]'
+.  tm doc-url-name == '\*[doc-url-name]'
 .  tm doc-volume-count == \n[doc-volume-count]
-.  tm doc-volume-name == `\*[doc-volume-name]'
+.  tm doc-volume-name == '\*[doc-volume-name]'
 .  tm doc-have-author == \n[doc-have-author]
 .
-.  tm doc-document-title == `\*[doc-document-title]'
-.  tm doc-volume == `\*[doc-volume]'
-.  tm doc-section == `\*[doc-section]'
-.  tm doc-operating-system == `\*[doc-operating-system]'
-.  tm doc-date-string == `\*[doc-date-string]'
+.  tm doc-document-title == '\*[doc-document-title]'
+.  tm doc-volume == '\*[doc-volume]'
+.  tm doc-section == '\*[doc-section]'
+.  tm doc-operating-system == '\*[doc-operating-system]'
+.  tm doc-date-string == '\*[doc-date-string]'
 .  tm doc-header-space == \n[doc-header-space]
 .  tm doc-footer-space == \n[doc-footer-space]
 .  tm doc-display-vertical == \n[doc-display-vertical]
-.  tm doc-header-string == `\*[doc-header-string]'
+.  tm doc-header-string == '\*[doc-header-string]'
 .  tm doc-in-synopsis-section == \n[doc-in-synopsis-section]
 .  tm doc-in-library-section == \n[doc-in-library-section]
 .  tm doc-in-see-also-section == \n[doc-in-see-also-section]
 .
 .ec
 .
-.\" EOF
+.\" ====================================================================
+.\" Editor settings
+.\" ====================================================================
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" fill-column: 72
+.\" End:
+.\" vim: set filetype=groff textwidth=72:
similarity index 79%
rename from tmac/doc-ditroff
rename to tmac/doc-ditroff-u
index cb42c68..18aa5db 100644 (file)
@@ -1,7 +1,5 @@
-.\" -*- nroff -*-
-.\"
 .\" Copyright (c) 1991, 1993
-.\"    The Regents of the University of California.  All rights reserved.
+.\"   The Regents of the University of California.  All rights reserved.
 .\"
 .\" Redistribution and use in source and binary forms, with or without
 .\" modification, are permitted provided that the following conditions
@@ -9,24 +7,26 @@
 .\" 1. Redistributions of source code must retain the above copyright
 .\"    notice, this list of conditions and the following disclaimer.
 .\" 2. Redistributions in binary form must reproduce the above copyright
-.\"    notice, this list of conditions and the following disclaimer in the
-.\"    documentation and/or other materials provided with the distribution.
+.\"    notice, this list of conditions and the following disclaimer in
+.\"    the documentation and/or other materials provided with the
+.\"    distribution.
 .\" 3. [Deleted.  See
 .\"     ftp://ftp.cs.berkeley.edu/pub/4bsd/README.Impt.License.Change]
-.\" 4. Neither the name of the University nor the names of its contributors
-.\"    may be used to endorse or promote products derived from this software
-.\"    without specific prior written permission.
+.\" 4. Neither the name of the University nor the names of its
+.\"    contributors may be used to endorse or promote products derived
+.\"    from this software without specific prior written permission.
 .\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS"
+.\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+.\" PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR
+.\" CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+.\" SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+.\" LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+.\" USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+.\" ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+.\" OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+.\" OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
 .\"     @(#)doc-ditroff        8.1 (Berkeley) 06/08/93
@@ -66,7 +66,7 @@
 .\}\}
 .
 .
-.\" the `doc-xx-font' strings must not be empty!
+.\" the 'doc-xx-font' strings must not be empty!
 .
 .ds doc-caption-font \f[R]\s[\n[.ps]u]
 .ds doc-caption-font2 \f[R]\s[\n[.ps]u]
 .ds doc-left-singlequote \[oq]
 .ds doc-right-singlequote \[cq]
 .
-.\" the following strings are `official'
+.\" the following strings are 'official'
 .ds <= \[<=]
 .ds >= \[>=]
 .ds Lq \[lq]
 .
 .
 .\" NS doc-get-width macro
-.\" NS   computes the width of a string as a multiple of `doc-fixed-width':
-.\" NS   `.doc-get-width string'
+.\" NS   computes the width of a string as a multiple of
+.\" NS   'doc-fixed-width': '.doc-get-width string'
 .\" NS
 .\" NS modifies:
 .\" NS   doc-width
 .
 .\" NS doc-get-arg-width macro
 .\" NS   computes the width of an argument as a multiple of
-.\" NS   `doc-fixed-width': `.doc-get-arg-width arg-index'
+.\" NS   'doc-fixed-width': '.doc-get-arg-width arg-index'
 .\" NS
 .\" NS modifies:
 .\" NS   doc-width
 .\" NS   doc-reg-Ql1
 .\" NS   doc-reg-Ql2
 .\" NS
-.\" NS width register `Ql' set in doc-common
+.\" NS width register 'Ql' set in doc-common
 .
 .de Ql
 .  if !\n[doc-arg-limit] \{\
 .  nr doc-reg-Ql (\n[doc-arg-ptr] + 1)
 .  doc-get-arg-width \n[doc-reg-Ql]
 .
-.  \" don't use quotes if we have more than two succeeding string arguments
+.  \" don't use quotes if we have more than two succeeding string
+.  \" arguments
 .  nr doc-reg-Ql +1
 .  if (\n[doc-arg-limit] >= \n[doc-reg-Ql]) \
 .    if (\n[doc-type\n[doc-reg-Ql]] == 2) \
 .    Li
 .  el \{\
 .    ie \n[doc-arg-ptr] \{\
-.      \" we replace `Ql' with `Li'
+.      \" we replace 'Ql' with 'Li'
 .      ds doc-arg\n[doc-arg-ptr] Li
 .      nr doc-arg-ptr -1
 .    \}
 .    el \{\
 .      \" if .Ql has been called directly, we must shift all elements in
-.      \" the argument vector to the right so that we can insert `Li'
+.      \" the argument vector to the right so that we can insert 'Li'
 .      nr doc-reg-Ql \n[doc-arg-limit]
 .      nr doc-reg-Ql1 (\n[doc-arg-limit] + 1)
 .      while \n[doc-reg-Ql] \{\
 .
 .ec
 .
-.\" EOF
+.\" ====================================================================
+.\" Editor settings
+.\" ====================================================================
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" fill-column: 72
+.\" End:
+.\" vim: set filetype=groff textwidth=72:
similarity index 70%
rename from tmac/doc-nroff
rename to tmac/doc-nroff-u
index 8f5e0ca..bd96f0b 100644 (file)
@@ -1,7 +1,5 @@
-.\" -*- nroff -*-
-.\"
 .\" Copyright (c) 1991, 1993
-.\"    The Regents of the University of California.  All rights reserved.
+.\"   The Regents of the University of California.  All rights reserved.
 .\"
 .\" Redistribution and use in source and binary forms, with or without
 .\" modification, are permitted provided that the following conditions
@@ -9,24 +7,26 @@
 .\" 1. Redistributions of source code must retain the above copyright
 .\"    notice, this list of conditions and the following disclaimer.
 .\" 2. Redistributions in binary form must reproduce the above copyright
-.\"    notice, this list of conditions and the following disclaimer in the
-.\"    documentation and/or other materials provided with the distribution.
+.\"    notice, this list of conditions and the following disclaimer in
+.\"    the documentation and/or other materials provided with the
+.\"    distribution.
 .\" 3. [Deleted.  See
 .\"     ftp://ftp.cs.berkeley.edu/pub/4bsd/README.Impt.License.Change]
-.\" 4. Neither the name of the University nor the names of its contributors
-.\"    may be used to endorse or promote products derived from this software
-.\"    without specific prior written permission.
+.\" 4. Neither the name of the University nor the names of its
+.\"    contributors may be used to endorse or promote products derived
+.\"    from this software without specific prior written permission.
 .\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS"
+.\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+.\" PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR
+.\" CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+.\" SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+.\" LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+.\" USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+.\" ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+.\" OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+.\" OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
 .\"     @(#)doc-nroff  8.1 (Berkeley) 06/08/93
@@ -40,7 +40,7 @@
 .
 .if !r D .nr D 0
 .
-.\" use -rcR=0 to have multiple pages instead of a single, very long page
+.\" use -rcR=0 for multiple pages instead of a single, very long page
 .
 .if !r cR .nr cR 1
 .
@@ -48,7 +48,7 @@
 .
 .nr S 10
 .
-.\" the `doc-xx-font' strings must not be empty!
+.\" the 'doc-xx-font' strings must not be empty!
 .
 .ds doc-caption-font \f[R]
 .ds doc-caption-font2 \f[R]
 .ds doc-left-singlequote \[oq]
 .ds doc-right-singlequote \[cq]
 .
-.\" the following strings are `official'
+.\" the following strings are 'official'
 .ds <= \[<=]
 .ds >= \[>=]
 .ds aa \[aa]
 .ds ga \[ga]
 .ds q \[dq]
+.ds Lq \[lq]
+.ds Rq \[rq]
 .ds Ne \[!=]
 .ds Le \[<=]
 .ds Ge \[>=]
 .ds Ba \f[R]|\f[]
 .ds Am &
 .
-.\" Unicode TTYs have all glyph forms; for other TTY character sets we need
-.\" character representations which are different from GNU troff's standard
-.\" forms.
+.\" Unicode TTYs have all glyph forms; for other TTY character sets we
+.\" need character representations which are different from GNU troff's
+.\" standard forms.
 .ie '\*[.T]'utf8' \{\
-.  ds Rq \[rq]
-.  ds Lq \[lq]
 .  ds ua \[ua]
 .  ds Pi \[*p]
 .  ds If \[if]
 .\}
 .el \{\
-.  ds Rq ''
-.  ds Lq ``
 .  ds ua ^
 .  ds Pi pi
 .  ds If infinity
 .
 .
 .\" NS doc-get-width macro
-.\" NS   computes the width of a string as a multiple of `doc-fixed-width':
-.\" NS   `.doc-get-width string'
+.\" NS   computes the width of a string as a multiple of
+.\" NS   'doc-fixed-width': '.doc-get-width string'
 .\" NS
 .\" NS modifies:
 .\" NS   doc-width
 .
 .\" NS doc-get-arg-width macro
 .\" NS   computes the width of an argument as a multiple of
-.\" NS   `doc-fixed-width': `.doc-get-arg-width arg-index'
+.\" NS   'doc-fixed-width': '.doc-get-arg-width arg-index'
 .\" NS
 .\" NS modifies:
 .\" NS   doc-width
 .\" NS   doc-quote-left
 .\" NS   doc-quote-right
 .\" NS
-.\" NS width register `Ql' set in doc-common
+.\" NS width register 'Ql' set in doc-common
 .
 .de Ql
 .  if !\n[doc-arg-limit] \{\
 .
 .ec
 .
-.\" EOF
+.\" ====================================================================
+.\" Editor settings
+.\" ====================================================================
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" fill-column: 72
+.\" End:
+.\" vim: set filetype=groff textwidth=72:
similarity index 96%
rename from tmac/doc-old.tmac
rename to tmac/doc-old.tmac-u
index 4478f53..ddb782f 100644 (file)
@@ -1,5 +1,3 @@
-.\" -*- nroff -*-
-.\"
 .\" Copyright (c) 1990 The Regents of the University of California.
 .\" All rights reserved.
 .\"
@@ -9,24 +7,26 @@
 .\" 1. Redistributions of source code must retain the above copyright
 .\"    notice, this list of conditions and the following disclaimer.
 .\" 2. Redistributions in binary form must reproduce the above copyright
-.\"    notice, this list of conditions and the following disclaimer in the
-.\"    documentation and/or other materials provided with the distribution.
+.\"    notice, this list of conditions and the following disclaimer in
+.\"    the documentation and/or other materials provided with the
+.\"    distribution.
 .\" 3. [Deleted.  See
 .\"     ftp://ftp.cs.berkeley.edu/pub/4bsd/README.Impt.License.Change]
-.\" 4. Neither the name of the University nor the names of its contributors
-.\"    may be used to endorse or promote products derived from this software
-.\"    without specific prior written permission.
+.\" 4. Neither the name of the University nor the names of its
+.\"    contributors may be used to endorse or promote products derived
+.\"    from this software without specific prior written permission.
 .\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS"
+.\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+.\" PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR
+.\" CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+.\" SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+.\" LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+.\" USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+.\" ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+.\" OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+.\" OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
 .\"     @(#)doc-old.tmac       5.2 (Berkeley) 3/13/91
 .              ds f1 \&
 .      \}
 .      mN \\$1
-.\" Here are the args: `\\$1'  `\\$2'  `\\$3'  `\\$4'
+.\" Here are the args: '\\$1'  '\\$2'  '\\$3'  '\\$4'
 .      ie \\n(mN .\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
 .      el \{\
 .              as f1 \&\\$1
 .      el .as f1 \fP\\*(rP\fP
 .\}
 ..
+.\" ====================================================================
+.\" Editor settings
+.\" ====================================================================
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" fill-column: 72
+.\" End:
+.\" vim: set filetype=nroff textwidth=72:
similarity index 92%
rename from tmac/doc-syms
rename to tmac/doc-syms-u
index 084dd82..3822008 100644 (file)
@@ -1,7 +1,5 @@
-.\" -*- nroff -*-
-.\"
 .\" Copyright (c) 1991, 1993
-.\"    The Regents of the University of California.  All rights reserved.
+.\"   The Regents of the University of California.  All rights reserved.
 .\"
 .\" Redistribution and use in source and binary forms, with or without
 .\" modification, are permitted provided that the following conditions
@@ -9,24 +7,26 @@
 .\" 1. Redistributions of source code must retain the above copyright
 .\"    notice, this list of conditions and the following disclaimer.
 .\" 2. Redistributions in binary form must reproduce the above copyright
-.\"    notice, this list of conditions and the following disclaimer in the
-.\"    documentation and/or other materials provided with the distribution.
+.\"    notice, this list of conditions and the following disclaimer in
+.\"    the documentation and/or other materials provided with the
+.\"    distribution.
 .\" 3. [Deleted.  See
 .\"     ftp://ftp.cs.berkeley.edu/pub/4bsd/README.Impt.License.Change]
-.\" 4. Neither the name of the University nor the names of its contributors
-.\"    may be used to endorse or promote products derived from this software
-.\"    without specific prior written permission.
+.\" 4. Neither the name of the University nor the names of its
+.\"    contributors may be used to endorse or promote products derived
+.\"    from this software without specific prior written permission.
 .\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS"
+.\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+.\" PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR
+.\" CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+.\" SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+.\" LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+.\" USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+.\" ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+.\" OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+.\" OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
 .\"     @(#)doc-syms   8.1 (Berkeley) 06/08/93
@@ -48,7 +48,7 @@
 .\" NS local variable:
 .\" NS   doc-str-Ux
 .\" NS
-.\" NS width register `Ux' defined in doc-common
+.\" NS width register 'Ux' defined in doc-common
 .
 .de Ux
 .  nr doc-curr-font \n[.f]
@@ -90,7 +90,7 @@
 .\" NS   doc-str-Bx1
 .\" NS   doc-str-Bx-XXX
 .\" NS
-.\" NS width register `Bx' defined in doc-common
+.\" NS width register 'Bx' defined in doc-common
 .
 .ds doc-str-Bx-Reno  \-Reno
 .ds doc-str-Bx-reno  \-Reno
 .\" NS Ud user macro (not parsed, not callable)
 .\" NS   print "currently under development" (HISTORY section)
 .\" NS
-.\" NS width register `Ud' defined in doc-common
+.\" NS width register 'Ud' defined in doc-common
 .
 .de Ud
 .  nop \&currently under development.
 .\" NS   doc-str-At1
 .\" NS   doc-str-At-XXX
 .\" NS
-.\" NS width register `At' defined in doc-common
+.\" NS width register 'At' defined in doc-common
 .
 .ds doc-str-At-32v \&Version\~32V
 .as doc-str-At-32v " \*[doc-Tn-font-size]AT&T UNIX\*[doc-str-At]
 .          ds doc-str-At1 "\*[doc-str-At-\*[doc-arg\n[doc-arg-ptr]]]
 .        el \{\
 .          tmc mdoc warning: .At: Unknown AT&T UNIX version
-.          tm1 " `\*[doc-arg\n[doc-arg-ptr]]' (#\n[.c])
+.          tm1 " '\*[doc-arg\n[doc-arg-ptr]]' (#\n[.c])
 .          nr doc-arg-ptr -1
 .      \}\}
 .      el \
 .\" NS   doc-str-Dx
 .\" NS   doc-str-Dx1
 .\" NS
-.\" NS width register `Dx' defined in doc-common
+.\" NS width register 'Dx' defined in doc-common
 .
-.\" we use the doc-operating-system-DragonFly-* strings defined in doc-common
+.\" we use the doc-operating-system-DragonFly-* strings defined in
+.\" doc-common
 .
 .de Dx
 .  nr doc-curr-font \n[.f]
 .          as doc-str-Dx1 \~\*[doc-operating-system-DragonFly-\*[doc-arg\n[doc-arg-ptr]]]
 .        el \{\
 .          tmc mdoc warning: .Dx: Unknown DragonFly version
-.          tm1 " `\*[doc-arg\n[doc-arg-ptr]]' (#\n[.c])
+.          tm1 " '\*[doc-arg\n[doc-arg-ptr]]' (#\n[.c])
 .          as doc-str-Dx1 \~\*[doc-arg\n[doc-arg-ptr]]
 .      \}\}
 .      el \
 .\" NS   doc-str-Fx
 .\" NS   doc-str-Fx1
 .\" NS
-.\" NS width register `Fx' defined in doc-common
+.\" NS width register 'Fx' defined in doc-common
 .
-.\" we use the doc-operating-system-FreeBSD-* strings defined in doc-common
+.\" we use the doc-operating-system-FreeBSD-* strings defined in
+.\" doc-common
 .
 .de Fx
 .  nr doc-curr-font \n[.f]
 .          as doc-str-Fx1 \~\*[doc-operating-system-FreeBSD-\*[doc-arg\n[doc-arg-ptr]]]
 .        el \{\
 .          tmc mdoc warning: .Fx: Unknown FreeBSD version
-.          tm1 " `\*[doc-arg\n[doc-arg-ptr]]' (#\n[.c])
+.          tm1 " '\*[doc-arg\n[doc-arg-ptr]]' (#\n[.c])
 .          as doc-str-Fx1 \~\*[doc-arg\n[doc-arg-ptr]]
 .      \}\}
 .      el \
 .\" NS   doc-str-Nx
 .\" NS   doc-str-Nx1
 .\" NS
-.\" NS width register `Nx' defined in doc-common
+.\" NS width register 'Nx' defined in doc-common
 .
-.\" we use the doc-operating-system-NetBSD-* strings defined in doc-common
+.\" we use the doc-operating-system-NetBSD-* strings defined in
+.\" doc-common
 .
 .de Nx
 .  nr doc-curr-font \n[.f]
 .          as doc-str-Nx1 \~\*[doc-operating-system-NetBSD-\*[doc-arg\n[doc-arg-ptr]]]
 .        el \{\
 .          tmc mdoc warning: .Nx: Unknown NetBSD version
-.          tm1 " `\*[doc-arg\n[doc-arg-ptr]]' (#\n[.c])
+.          tm1 " '\*[doc-arg\n[doc-arg-ptr]]' (#\n[.c])
 .          as doc-str-Nx1 \~\*[doc-arg\n[doc-arg-ptr]]
 .      \}\}
 .      el \
 .\" NS   doc-str-Ox
 .\" NS   doc-str-Ox1
 .\" NS
-.\" NS width register `Ox' defined in doc-common
+.\" NS width register 'Ox' defined in doc-common
 .
 .de Ox
 .  nr doc-curr-font \n[.f]
 .\" NS   doc-str-Bsx
 .\" NS   doc-str-Bsx1
 .\" NS
-.\" NS width register `Bsx' defined in doc-common
+.\" NS width register 'Bsx' defined in doc-common
 .
 .de Bsx
 .  nr doc-curr-font \n[.f]
 .\" NS Bt user macro (not parsed, not callable)
 .\" NS   print "is currently in beta test." (HISTORY section)
 .\" NS
-.\" NS width register `Bt' defined in doc-common
+.\" NS width register 'Bt' defined in doc-common
 .
 .de Bt
 .  nop \&is currently in beta test.
 .\" NS   doc-str-St1
 .\" NS   doc-str-St-XXX
 .\" NS
-.\" NS width register `St' defined in doc-common
+.\" NS width register 'St' defined in doc-common
 .
 .\" ANSI/ISO C
 .ds doc-str-St--ansiC-89       \*[Ai] \*[doc-str-St]X\^3.159-1989
 .        ds doc-str-St1 "\*[doc-str-St-\*[doc-arg\n[doc-arg-ptr]]]
 .      el \{\
 .        tmc "mdoc warning: .St: Unknown standard abbreviation
-.        tm1 " `\*[doc-arg\n[doc-arg-ptr]]' (#\n[.c])
+.        tm1 " '\*[doc-arg\n[doc-arg-ptr]]' (#\n[.c])
 .        tm1 "              Please refer to the groff_mdoc(7) manpage for a
 .        tm1 "              list of available standard abbreviations.
 .    \}\}
 .\" NS   doc-str-Lb1
 .\" NS   doc-str-Lb-XXX
 .\" NS
-.\" NS width register `Lb' defined in doc-common
+.\" NS width register 'Lb' defined in doc-common
 .
 .ds doc-str-Lb-libarchive  Reading and Writing Streaming Archives Library (libarchive, \-larchive)
 .ds doc-str-Lb-libarm      ARM Architecture Library (libarm, \-larm)
 .      ds doc-str-Lb1 "\*[doc-str-Lb-\*[doc-arg\n[doc-arg-ptr]]]
 .    el \{\
 .      tmc "mdoc warning: .Lb: no description for library
-.      tm1 " `\*[doc-arg\n[doc-arg-ptr]]' available (#\n[.c])
+.      tm1 " '\*[doc-arg\n[doc-arg-ptr]]' available (#\n[.c])
 .      ds doc-str-Lb1 library \*[Lq]\*[doc-arg\n[doc-arg-ptr]]\*[Rq]
 .    \}
 .
 .
 .ec
 .
-.\" EOF
+.\" ====================================================================
+.\" Editor settings
+.\" ====================================================================
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" fill-column: 72
+.\" End:
+.\" vim: set filetype=groff textwidth=72:
similarity index 91%
rename from tmac/doc.tmac
rename to tmac/doc.tmac-u
index 80c6b88..f172fd8 100644 (file)
@@ -1,7 +1,5 @@
-.\" -*- nroff -*-
-.\"
 .\" Copyright (c) 1991, 1993
-.\"    The Regents of the University of California.  All rights reserved.
+.\"   The Regents of the University of California.  All rights reserved.
 .\"
 .\" Redistribution and use in source and binary forms, with or without
 .\" modification, are permitted provided that the following conditions
@@ -9,32 +7,34 @@
 .\" 1. Redistributions of source code must retain the above copyright
 .\"    notice, this list of conditions and the following disclaimer.
 .\" 2. Redistributions in binary form must reproduce the above copyright
-.\"    notice, this list of conditions and the following disclaimer in the
-.\"    documentation and/or other materials provided with the distribution.
+.\"    notice, this list of conditions and the following disclaimer in
+.\"    the documentation and/or other materials provided with the
+.\"    distribution.
 .\" 3. [Deleted.  See
 .\"     ftp://ftp.cs.berkeley.edu/pub/4bsd/README.Impt.License.Change]
-.\" 4. Neither the name of the University nor the names of its contributors
-.\"    may be used to endorse or promote products derived from this software
-.\"    without specific prior written permission.
+.\" 4. Neither the name of the University nor the names of its
+.\"    contributors may be used to endorse or promote products derived
+.\"    from this software without specific prior written permission.
 .\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS"
+.\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+.\" PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR
+.\" CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+.\" SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+.\" LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+.\" USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+.\" ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+.\" OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+.\" OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
 .\"     @(#)doc        8.1 (Berkeley) 06/08/93
 .\"
-.\" Modified by jjc@jclark.com as follows: the doc-* files are assumed to be
-.\" installed as mdoc/doc-* rather than tmac.doc-* (the filename
-.\" `tmac.doc-common' would be too long); when using groff, the doc-* files
-.\" are loaded using the `mso' request.
+.\" Modified by jjc@jclark.com as follows: the doc-* files are assumed
+.\" to be installed as mdoc/doc-* rather than tmac.doc-* (the filename
+.\" 'tmac.doc-common' would be too long); when using groff, the doc-*
+.\" files are loaded using the 'mso' request.
 .\"
 .\" Modified by
 .\"
@@ -89,7 +89,7 @@
 .
 .\" NS doc-num-args global register
 .\" NS   number of arguments to handle (must be set to \n[.$] prior to
-.\" NS   `doc-parse-arg-vector' request)
+.\" NS   'doc-parse-arg-vector' request)
 .
 .nr doc-num-args 0
 .
 .
 .
 .\" NS doc-parse-args macro
-.\" NS   parse arguments (recursively) (`.doc-parse-args arg ...')
+.\" NS   parse arguments (recursively) ('.doc-parse-args arg ...')
 .\" NS
 .\" NS modifies:
 .\" NS   doc-arg-limit
 .
 .  nr doc-arg-limit +1
 .
-.  \" handle `|' and `...' specially
+.  \" handle '|' and '...' specially
 .  ie        "\$1"|" \
 .    ds doc-arg\n[doc-arg-limit] \f[R]|\f[]
 .  el \{ .ie "\$1"..." \
 .
 .\" NS doc-remaining-args macro
 .\" NS   output remaining arguments as-is, separated by spaces (until
-.\" NS   `doc-num-args' is exhausted)
+.\" NS   'doc-num-args' is exhausted)
 .\" NS
 .\" NS modifies:
 .\" NS   doc-arg-ptr
 .
 .\" NS doc-append-arg macro
 .\" NS   append one argument to argument vector:
-.\" NS   `.doc-append-arg [arg] [type]'
+.\" NS   '.doc-append-arg [arg] [type]'
 .\" NS
 .\" NS modifies:
 .\" NS   doc-arg-limit
 .
 .
 .\" NS Fl user macro
-.\" NS   handle flags (appends `-' and prints flags): `.Fl [arg ...]'
+.\" NS   handle flags (appends '-' and prints flags): '.Fl [arg ...]'
 .\" NS
 .\" NS modifies:
 .\" NS   doc-arg-ptr
 .\" NS local variables:
 .\" NS   doc-reg-Fl (for communication with doc-flag-recursion)
 .\" NS
-.\" NS width register `Fl' set in doc-common
+.\" NS width register 'Fl' set in doc-common
 .
 .de Fl
 .  nr doc-curr-font \n[.f]
 .
 .
 .\" NS doc-flag-recursion macro
-.\" NS   `Fl' flag recursion routine (special handling)
+.\" NS   'Fl' flag recursion routine (special handling)
 .\" NS
 .\" NS modifies:
 .\" NS   doc-arg-ptr
 .
 .    ie (\n[doc-reg-dfr1] == 2) \{\
 .      \" handle vertical bar -- doc-reg-Fl is set for the first call of
-.      \" doc-flag-recursion only; we need this to make `.Fl | ...' work
+.      \" doc-flag-recursion only; we need this to make '.Fl | ...' work
 .      \" correctly
 .      ie "\*[doc-str-dfr]"\*[Ba]" \{\
 .        if \n[doc-reg-Fl] \
 .  el \{\
 .    nr doc-reg-dpr \n[doc-arg-ptr]
 .
-.    \" the `\%' prevents hyphenation on a dash (`-')
+.    \" the '\%' prevents hyphenation on a dash ('-')
 .    ie (\n[doc-reg-dpr1] == 2) \
 .      nop \%\*[doc-str-dpr]\&\c
 .    el \{\
 .
 .
 .\" NS Ar user macro
-.\" NS   command line `argument' macro: `.Ar [args ...]'
+.\" NS   command-line 'argument' macro: '.Ar [args ...]'
 .\" NS
 .\" NS modifies:
 .\" NS   doc-arg-ptr
 .\" NS local variable:
 .\" NS   doc-str-Ar-default
 .\" NS
-.\" NS width register `Ar' set in doc-common
+.\" NS width register 'Ar' set in doc-common
 .
 .ds doc-str-Ar-default "file\ .\|.\|.
 .
 .\" NS Ad user macro
 .\" NS   Addresses
 .\" NS
-.\" NS width register `Ad' set in doc-common
+.\" NS width register 'Ad' set in doc-common
 .
 .als Ad doc-generic-macro
 .ds doc-Ad-usage address
 .\" NS Cd user macro
 .\" NS   config declaration (for section 4 SYNOPSIS)
 .\" NS
-.\" NS   this function causes a break; it uses the `Nm' font
+.\" NS   this function causes a break; it uses the 'Nm' font
 .\" NS
 .\" NS modifies:
 .\" NS   doc-arg-ptr
 .\" NS   doc-indent-synopsis
 .\" NS   doc-macro-name
 .\" NS
-.\" NS width register `Cd' set in doc-common
+.\" NS width register 'Cd' set in doc-common
 .
 .de Cd
 .  if !\n[doc-arg-limit] \{\
 .\" NS Cm user macro
 .\" NS   interactive command modifier (flag)
 .\" NS
-.\" NS width register `Cm' set in doc-common
+.\" NS width register 'Cm' set in doc-common
 .
 .als Cm doc-generic-macro
 .ds doc-Cm-usage interactive_command_modifier
 .\" NS Dv user macro
 .\" NS   defined variable
 .\" NS
-.\" NS   this function uses the `Er' font
+.\" NS   this function uses the 'Er' font
 .\" NS
-.\" NS width register `Dv' set in doc-common
+.\" NS width register 'Dv' set in doc-common
 .
 .als Dv doc-generic-macro
 .ds doc-Dv-usage defined_variable
 .\" NS Em user macro
 .\" NS   emphasis
 .\" NS
-.\" NS width register `Em' set in doc-common
+.\" NS width register 'Em' set in doc-common
 .
 .als Em doc-generic-macro
 .ds doc-Em-usage text
 .\" NS Er user macro
 .\" NS   errno type
 .\" NS
-.\" NS width register `Er' set in doc-common
+.\" NS width register 'Er' set in doc-common
 .
 .als Er doc-generic-macro
 .ds doc-Er-usage text
 .\" NS Ev user macro
 .\" NS   environment variable
 .\" NS
-.\" NS width register `Ev' set in doc-common
+.\" NS width register 'Ev' set in doc-common
 .
 .als Ev doc-generic-macro
 .ds doc-Ev-usage text
 .\" NS
 .\" NS   this function causes a break
 .\" NS
-.\" NS width register `Fd' set in doc-common
+.\" NS width register 'Fd' set in doc-common
 .
 .de Fd
 .  ie ((\n[.$] >= 1) & (\n[doc-arg-limit] == 0)) \{\
 .\" NS   #include statement in SYNOPSIS
 .\" NS   <header.h> if not in SYNOPSIS
 .\" NS
-.\" NS   this function causes a break; it uses the `Fd' font
+.\" NS   this function causes a break; it uses the 'Fd' font
 .\" NS
 .\" NS modifies:
 .\" NS   doc-arg-ptr
 .\" NS   doc-indent-synopsis
 .\" NS   doc-macro-name
 .\" NS
-.\" NS width register `In' set in doc-common
+.\" NS width register 'In' set in doc-common
 .
 .de In
 .  if !\n[doc-arg-limit] \{\
 .\" NS Fr user macro
 .\" NS   function return value
 .\" NS
-.\" NS   this function uses the `Ar' font
+.\" NS   this function uses the 'Ar' font
 .\" NS
-.\" NS width register `Fr' set in doc-common
+.\" NS width register 'Fr' set in doc-common
 .
 .als Fr doc-generic-macro
 .ds doc-Fr-usage function_return_value
 .\" NS Ic user macro
 .\" NS   interactive command
 .\" NS
-.\" NS width register `Ic' set in doc-common
+.\" NS width register 'Ic' set in doc-common
 .
 .als Ic doc-generic-macro
 .ds doc-Ic-usage interactive_command
 .\" NS Li user macro
 .\" NS   literals
 .\" NS
-.\" NS width register `Li' set in doc-common
+.\" NS width register 'Li' set in doc-common
 .
 .als Li doc-generic-macro
 .ds doc-Li-usage argument
 .\" NS Ms user macro
 .\" NS   math symbol
 .\" NS
-.\" NS   this function uses the `Sy' font
+.\" NS   this function uses the 'Sy' font
 .\" NS
-.\" NS width register `Ms' set in doc-common
+.\" NS width register 'Ms' set in doc-common
 .
 .als Ms doc-generic-macro
 .ds doc-Ms-usage math_symbol
 .\" NS   doc-indent-synopsis-active
 .\" NS   doc-macro-name
 .\" NS
-.\" NS width register `Nm' set in doc-common
+.\" NS width register 'Nm' set in doc-common
 .
 .de Nm
 .  if !\n[doc-arg-limit] \{\
 .        doc-parse-space-vector
 .    \}\}
 .    el \{\
-.      \" handle `.Nm ...' in SYNOPSIS
+.      \" handle '.Nm ...' in SYNOPSIS
 .      if \n[doc-in-synopsis-section] \{\
 .        if "\*[doc-macro-name]"Nm" \{\
 .          br
 .
 .
 .\" NS Pa user macro
-.\" NS   pathname: `.Pa [arg ...]'
+.\" NS   pathname: '.Pa [arg ...]'
 .\" NS
 .\" NS modifies:
 .\" NS   doc-arg-ptr
 .\" NS   doc-curr-size
 .\" NS   doc-macro-name
 .\" NS
-.\" NS width register `Pa' set in doc-common
+.\" NS width register 'Pa' set in doc-common
 .
 .de Pa
 .  if !\n[doc-arg-limit] \{\
 .\" NS Sy user macro
 .\" NS   symbolics
 .\" NS
-.\" NS width register `Sy' set in doc-common
+.\" NS width register 'Sy' set in doc-common
 .
 .als Sy doc-generic-macro
 .ds doc-Sy-usage symbolic_text
 .\" NS Me user macro
 .\" NS   menu entries
 .\" NS
-.\" NS width register `Me' set in doc-common
+.\" NS width register 'Me' set in doc-common
 .
 .als Me doc-generic-macro
 .ds doc-Me-usage menu_entry
 .\" NS   doc-curr-size
 .\" NS   doc-macro-name
 .\" NS
-.\" NS width register `Tn' set in doc-common
+.\" NS width register 'Tn' set in doc-common
 .
 .de Tn
 .  if !\n[doc-arg-limit] \{\
 .\" NS Va user macro
 .\" NS   variable name
 .\" NS
-.\" NS width register `Va' set in doc-common
+.\" NS width register 'Va' set in doc-common
 .
 .als Va doc-generic-macro
 .ds doc-Va-usage variable_name
 .\" NS No user macro
 .\" NS   normal text macro (default text style if mess up)
 .\" NS
-.\" NS width register `No' set in doc-common
+.\" NS width register 'No' set in doc-common
 .
 .als No doc-generic-macro
 .ds doc-No-usage normal_text
 .
 .
 .\" NS doc-quote-left global string
-.\" NS   left quotation character for `doc-enclose-string' and
-.\" NS   `doc-enclose-open'
+.\" NS   left quotation character for 'doc-enclose-string' and
+.\" NS   'doc-enclose-open'
 .
 .ds doc-quote-left
 .
 .
 .\" NS doc-quote-right global string
-.\" NS   right quotation character for `doc-enclose-string' and
-.\" NS   `doc-enclose-close'
+.\" NS   right quotation character for 'doc-enclose-string' and
+.\" NS   'doc-enclose-close'
 .
 .ds doc-quote-right
 .
 .\" NS   doc-quote-left
 .\" NS   doc-quote-right
 .\" NS
-.\" NS width register `Op' set in doc-common
+.\" NS width register 'Op' set in doc-common
 .
 .de Op
 .  if !\n[doc-arg-limit] \
 .\" NS   doc-quote-left
 .\" NS   doc-quote-right
 .\" NS
-.\" NS width register `Aq' set in doc-common
+.\" NS width register 'Aq' set in doc-common
 .
 .de Aq
 .  if !\n[doc-arg-limit] \
 .\" NS   doc-quote-left
 .\" NS   doc-quote-right
 .\" NS
-.\" NS width register `Bq' set in doc-common
+.\" NS width register 'Bq' set in doc-common
 .
 .de Bq
 .  if !\n[doc-arg-limit] \
 .\" NS   doc-quote-left
 .\" NS   doc-quote-right
 .\" NS
-.\" NS width register `Brq' set in doc-common
+.\" NS width register 'Brq' set in doc-common
 .
 .de Brq
 .  if !\n[doc-arg-limit] \
 .\" NS   doc-quote-left
 .\" NS   doc-quote-right
 .\" NS
-.\" NS width register `Dq' set in doc-common
+.\" NS width register 'Dq' set in doc-common
 .
 .de Dq
 .  if !\n[doc-arg-limit] \
 .\" NS   doc-quote-left
 .\" NS   doc-quote-right
 .\" NS
-.\" NS width register `Eq' set in doc-common
+.\" NS width register 'Eq' set in doc-common
 .
 .de Eq
 .  if !\n[doc-arg-limit] \
 .\" NS   doc-quote-left
 .\" NS   doc-quote-right
 .\" NS
-.\" NS width register `Pq' set in doc-common
+.\" NS width register 'Pq' set in doc-common
 .
 .de Pq
 .  if !\n[doc-arg-limit] \
 .\" NS   doc-quote-left
 .\" NS   doc-quote-right
 .\" NS
-.\" NS width register `Qq' set in doc-common
+.\" NS width register 'Qq' set in doc-common
 .
 .de Qq
 .  if !\n[doc-arg-limit] \
 .\" NS   doc-quote-left
 .\" NS   doc-quote-right
 .\" NS
-.\" NS width register `Sq' set in doc-common
+.\" NS width register 'Sq' set in doc-common
 .
 .de Sq
 .  if !\n[doc-arg-limit] \
 .
 .
 .\" NS Es user macro
-.\" NS   set up arguments (i.e., the left and right quotation character as
-.\" NS   first and second argument) for .En call
+.\" NS   set up arguments (i.e., the left and right quotation character
+.\" NS   as first and second argument) for .En call
 .\" NS
 .\" NS modifies:
 .\" NS   doc-arg-ptr
 .
 .
 .\" NS doc-have-slot global register (bool)
-.\" NS   set if `doc-enclose-string' has created a slot for closing
+.\" NS   set if 'doc-enclose-string' has created a slot for closing
 .\" NS   delimiter
 .
 .nr doc-have-slot 0
 .
 .  nr doc-arg-ptr +1
 .  doc-print-prefixes
-.  \" the final `\)' prevents hyphenation in case the next character is `\%'
+.  \" the final '\)' prevents hyphenation in case next character is '\%'
 .  nop \)\*[doc-quote-left]\)\c
 .  ie (\n[doc-arg-limit] < \n[doc-arg-ptr]) \{\
 .    \" last argument
 .      ie (\n[doc-reg-des] == \n[doc-arg-limit]) \
 .        doc-append-arg "\)\*[doc-quote-right]\)" 3
 .      el \{\
-.        \" if a previous call to `doc-enclose-string' has already created
-.        \" a slot, prepend argument
+.        \" if a previous call to 'doc-enclose-string' has already
+.        \" created a slot, prepend argument
 .        ie \n[doc-have-slot] \
 .          ds doc-arg\n[doc-reg-des] "\*[doc-quote-right]\)\*[doc-arg\n[doc-reg-des]]
 .        el \{\
 .
 .
 .\" NS En user macro
-.\" NS   enclose arguments with quotation characters set up with `.Es'
+.\" NS   enclose arguments with quotation characters set up with '.Es'
 .
 .als En doc-enclose-string
 .
 .\" NS   doc-macro-name
 .\" NS   doc-quote-left
 .\" NS
-.\" NS width register `Ao' set in doc-common
+.\" NS width register 'Ao' set in doc-common
 .
 .de Ao
 .  if !\n[doc-arg-limit] \
 .\" NS   doc-macro-name
 .\" NS   doc-quote-right
 .\" NS
-.\" NS width register `Ac' set in doc-common
+.\" NS width register 'Ac' set in doc-common
 .
 .de Ac
 .  if !\n[doc-arg-limit] \
 .\" NS   doc-macro-name
 .\" NS   doc-quote-left
 .\" NS
-.\" NS width register `Bo' set in doc-common
+.\" NS width register 'Bo' set in doc-common
 .
 .de Bo
 .  if !\n[doc-arg-limit] \
 .\" NS   doc-macro-name
 .\" NS   doc-quote-right
 .\" NS
-.\" NS width register `Bc' set in doc-common
+.\" NS width register 'Bc' set in doc-common
 .
 .de Bc
 .  if !\n[doc-arg-limit] \
 .\" NS   doc-macro-name
 .\" NS   doc-quote-left
 .\" NS
-.\" NS width register `Bro' set in doc-common
+.\" NS width register 'Bro' set in doc-common
 .
 .de Bro
 .  if !\n[doc-arg-limit] \
 .\" NS   doc-macro-name
 .\" NS   doc-quote-right
 .\" NS
-.\" NS width register `Brc' set in doc-common
+.\" NS width register 'Brc' set in doc-common
 .
 .de Brc
 .  if !\n[doc-arg-limit] \
 .\" NS   doc-macro-name
 .\" NS   doc-quote-left
 .\" NS
-.\" NS width register `Do' set in doc-common
+.\" NS width register 'Do' set in doc-common
 .
 .de Do
 .  if !\n[doc-arg-limit] \
 .\" NS   doc-macro-name
 .\" NS   doc-quote-right
 .\" NS
-.\" NS width register `Dc' set in doc-common
+.\" NS width register 'Dc' set in doc-common
 .
 .de Dc
 .  if !\n[doc-arg-limit] \
 .\" NS   doc-macro-name
 .\" NS   doc-quote-left
 .\" NS
-.\" NS width register `Eo' set in doc-common
+.\" NS width register 'Eo' set in doc-common
 .
 .de Eo
 .  if !\n[doc-arg-limit] \
 .\" NS   doc-macro-name
 .\" NS   doc-quote-right
 .\" NS
-.\" NS width register `Ec' set in doc-common
+.\" NS width register 'Ec' set in doc-common
 .
 .de Ec
 .  if !\n[doc-arg-limit] \
 .\" NS   doc-macro-name
 .\" NS   doc-quote-left
 .\" NS
-.\" NS width register `Oo' set in doc-common
+.\" NS width register 'Oo' set in doc-common
 .
 .de Oo
 .  if !\n[doc-arg-limit] \
 .\" NS   doc-macro-name
 .\" NS   doc-quote-right
 .\" NS
-.\" NS width register `Oc' set in doc-common
+.\" NS width register 'Oc' set in doc-common
 .
 .de Oc
 .  if !\n[doc-arg-limit] \
 .\" NS   doc-macro-name
 .\" NS   doc-quote-left
 .\" NS
-.\" NS width register `Po' set in doc-common
+.\" NS width register 'Po' set in doc-common
 .
 .de Po
 .  if !\n[doc-arg-limit] \
 .\" NS   doc-macro-name
 .\" NS   doc-quote-right
 .\" NS
-.\" NS width register `Pc' set in doc-common
+.\" NS width register 'Pc' set in doc-common
 .
 .de Pc
 .  if !\n[doc-arg-limit] \
 .\" NS   doc-macro-name
 .\" NS   doc-quote-left
 .\" NS
-.\" NS width register `Qo' set in doc-common
+.\" NS width register 'Qo' set in doc-common
 .
 .de Qo
 .  if !\n[doc-arg-limit] \
 .\" NS   doc-macro-name
 .\" NS   doc-quote-right
 .\" NS
-.\" NS width register `Qc' set in doc-common
+.\" NS width register 'Qc' set in doc-common
 .
 .de Qc
 .  if !\n[doc-arg-limit] \
 .\" NS   doc-macro-name
 .\" NS   doc-quote-left
 .\" NS
-.\" NS width register `So' set in doc-common
+.\" NS width register 'So' set in doc-common
 .
 .de So
 .  if !\n[doc-arg-limit] \
 .\" NS   doc-macro-name
 .\" NS   doc-quote-right
 .\" NS
-.\" NS width register `Sc' set in doc-common
+.\" NS width register 'Sc' set in doc-common
 .
 .de Sc
 .  if !\n[doc-arg-limit] \
 .\" NS   doc-macro-name
 .\" NS   doc-quote-left
 .\" NS
-.\" NS width register `Xo' set in doc-common
+.\" NS width register 'Xo' set in doc-common
 .
 .de Xo
 .  if !\n[doc-arg-limit] \
 .\" NS   doc-macro-name
 .\" NS   doc-quote-right
 .\" NS
-.\" NS width register `Xc' set in doc-common
+.\" NS width register 'Xc' set in doc-common
 .
 .de Xc
 .  if !\n[doc-arg-limit] \
 .
 .
 .\" NS doc-nesting-level global register
-.\" NS   used by `doc-enclose-open' and `doc-enclose-close'
+.\" NS   used by 'doc-enclose-open' and 'doc-enclose-close'
 .
 .nr doc-nesting-level 0
 .
 .
 .
 .\" NS Pf user macro
-.\" NS   prefix: `.Pf prefix arg ...'
+.\" NS   prefix: '.Pf prefix arg ...'
 .\" NS
 .\" NS modifies:
 .\" NS   doc-arg-ptr
 .\" NS   doc-macro-name
 .\" NS   doc-quote-left
 .\" NS
-.\" NS width register `Pf' set in doc-common
+.\" NS width register 'Pf' set in doc-common
 .
 .de Pf
 .  if !\n[doc-arg-limit] \
 .
 .
 .\" NS Ns user macro
-.\" NS   remove space (space removal done by `doc-parse-args')
+.\" NS   remove space (space removal done by 'doc-parse-args')
 .\" NS
 .\" NS modifies:
 .\" NS   doc-argXXX
 .\" NS   doc-macro-name
 .\" NS
-.\" NS width register `Ns' set in doc-common
+.\" NS width register 'Ns' set in doc-common
 .
 .de Ns
 .  if !\n[doc-arg-limit] \{\
 .\" NS Ap user macro
 .\" NS   append an apostrophe
 .\" NS
-.\" NS width register `Ap' set in doc-common
+.\" NS width register 'Ap' set in doc-common
 .
 .de Ap
 .  ie !\n[doc-arg-limit] \
-.    tm Usage: `Ap' cannot be first macro on a line (no `.Ap') (#\n[.c])
+.    tm Usage: 'Ap' cannot be first macro on a line (no '.Ap') (#\n[.c])
 .  el \{\
 .    nop \)'\)\c
 .    nr doc-arg-ptr +1
 .
 .
 .\" NS doc-saved-space global string
-.\" NS   saved value of `doc-space'
+.\" NS   saved value of 'doc-space'
 .
 .ds doc-saved-space "\*[doc-space]
 .
 .
 .
 .\" NS Sm user macro
-.\" NS   space mode (`.Sm'/`.Sm on'/`.Sm off')
+.\" NS   space mode ('.Sm'/'.Sm on'/'.Sm off')
 .\" NS
 .\" NS   without argument, toggle space mode
 .\" NS
 .\" NS local variables:
 .\" NS   doc-reg-Sm
 .\" NS
-.\" NS width register `Sm' set in doc-common
+.\" NS width register 'Sm' set in doc-common
 .
 .de Sm
 .  ie \n[doc-have-space] \
 .        ds doc-space "\*[doc-saved-space]
 .        nr doc-space-mode 1
 .
-.        \" finish line only if it is interrupted and `doc-have-space'
+.        \" finish line only if it is interrupted and 'doc-have-space'
 .        \" isn't set
 .        if \n[doc-reg-Sm] \
 .          if \n[.int] \
 .
 .  nr doc-arg-ptr +1
 .
-.  \" avoid a warning message in case `Sm' is the last parameter
+.  \" avoid a warning message in case 'Sm' is the last parameter
 .  if !d doc-arg\n[doc-arg-ptr] \
 .    ds doc-arg\n[doc-arg-ptr]
 .
 .    if \n[doc-num-args] \
 .      doc-parse-space-vector
 .
-.    \" finish line only if it is interrupted and `doc-have-space'
+.    \" finish line only if it is interrupted and 'doc-have-space'
 .    \" isn't set
 .    if \n[doc-reg-Sm] \
 .      if \n[.int] \
 .    while (\n[doc-reg-Sm] <= \n[doc-arg-limit]) \{\
 .      ds doc-space\n[doc-reg-Sm]
 .      nr doc-reg-Sm +1
-.      \" the body of a `while' request must end with the fitting `\}'!
+.      \" the body of a 'while' request must end with the fitting '\}'!
 .    \}
 .  \}
 .
 .  \" do we have parameters to print?
 .  ie (\n[doc-arg-limit] > \n[doc-arg-ptr]) \{\
-.    \" skip `Sm' argument
+.    \" skip 'Sm' argument
 .    nr doc-arg-ptr +1
 .    doc-print-recursive
 .  \}
 .\" NS doc-get-arg-type macro
 .\" NS   get argument type
 .\" NS
-.\" NS   this macro expects the width of the argument in `doc-width'
+.\" NS   this macro expects the width of the argument in 'doc-width'
 .\" NS
 .\" NS modifies:
 .\" NS   doc-arg-type
 .
 .
 .\" NS doc-get-arg-type* macro
-.\" NS   similar to as `doc-get-arg-type' but uses doc-argXXX strings
+.\" NS   similar to as 'doc-get-arg-type' but uses doc-argXXX strings
 .\" NS
-.\" NS   this macro sets the `doc-width' register using the `length' request
-.\" NS   to get the number of characters in a string literally
+.\" NS   this macro sets the 'doc-width' register using the 'length'
+.\" NS   request to get the number of characters in a string literally
 .\" NS
 .\" NS modifies:
 .\" NS   doc-arg-type
 .de doc-set-spacing-1
 .  nr doc-reg-dssfm1 \n[\*[doc-arg\n[doc-arg-limit]]]
 .
-.  \" closing macros like .Ac, Bc., etc. have value 3 (remove space before
-.  \" argument)
+.  \" closing macros like .Ac, Bc., etc. have value 3 (remove space
+.  \" before argument)
 .  ie (\n[doc-reg-dssfm1] == 3) \{\
 .    if \n[doc-arg-limit] \{\
 .      nr doc-reg-dssfm (\n[doc-arg-limit] - 1)
 .    ds doc-space\n[doc-arg-limit] "\*[doc-space]
 .  \}
 .  el \{\
-.    \" macros like .Ap and .Ns have value 2 (remove space before and after
-.    \" argument)
+.    \" macros like .Ap and .Ns have value 2 (remove space before and
+.    \" after argument)
 .    ie (\n[doc-reg-dssfm1] == 2) \{\
 .      if \n[doc-arg-limit] \{\
 .        nr doc-reg-dssfm (\n[doc-arg-limit] - 1)
 .
 .
 .\" NS doc-fontmode-font-stackXXX global register
-.\" NS   stack of saved current font values from `Bf' macro
+.\" NS   stack of saved current font values from 'Bf' macro
 .\" NS
 .\" NS limit:
 .\" NS   doc-fontmode-depth
 .
 .
 .\" NS doc-fontmode-size-stackXXX global register
-.\" NS   stack of saved current size values from `Bf' macro
+.\" NS   stack of saved current size values from 'Bf' macro
 .\" NS
 .\" NS limit:
 .\" NS   doc-fontmode-depth
 .\" NS   doc-fontmode-size-stackXXX
 .\" NS   doc-macro-name
 .\" NS
-.\" NS width register `Bf' set in doc-common
+.\" NS width register 'Bf' set in doc-common
 .
 .de Bf
 .  ds doc-macro-name Bf
 .    el \{ .ie "\$1"-symbolic" \
 .      nop \*[doc-Sy-font]\c
 .    el \{\
-.      tmc mdoc warning: Unknown keyword `\$1' in .Bf macro
+.      tmc mdoc warning: Unknown keyword '\$1' in .Bf macro
 .      tm1 " (#\n[.c])
 .  \}\}\}\}\}\}\}
 .  el \
 .\" NS modifies:
 .\" NS   doc-macro-name
 .\" NS
-.\" NS width register `Ef' set in doc-common
+.\" NS width register 'Ef' set in doc-common
 .
 .de Ef
 .  ds doc-macro-name Ef
 .
 .
 .\" NS doc-keep-type global register
-.\" NS   current keep type; 1 is `-words', 2 is `-lines', 3 is unknown
+.\" NS   current keep type; 1 is '-words', 2 is '-lines', 3 is unknown
 .
 .nr doc-keep-type 0
 .
 .\" NS   doc-keep-type
 .\" NS   doc-macro-name
 .\" NS
-.\" NS width register `Bk' set in doc-common
+.\" NS width register 'Bk' set in doc-common
 .
 .de Bk
 .  ds doc-macro-name Bk
 .    doc-set-hard-space
 .  \}
 .  el \{\
-.    tm mdoc warning: Unknown keyword `\$1' in .Bk macro (#\n[.c])
+.    tm mdoc warning: Unknown keyword '\$1' in .Bk macro (#\n[.c])
 .    nr doc-keep-type 3
 .  \}\}\}
 .
 .\" NS   doc-keep-type
 .\" NS   doc-macro-name
 .\" NS
-.\" NS width register `Ek' set in doc-common
+.\" NS width register 'Ek' set in doc-common
 .
 .de Ek
 .  ds doc-macro-name Ek
 .
 .
 .\" NS doc-is-compact global register (bool)
-.\" NS   set if the `compact' keyword is given
+.\" NS   set if the 'compact' keyword is given
 .
 .nr doc-is-compact 0
 .
 .\" NS Bd user macro
 .\" NS   begin display
 .\" NS
-.\" NS width register `Bd' set in doc-common
+.\" NS width register 'Bd' set in doc-common
 .\" NS
 .\" NS modifies:
 .\" NS   doc-curr-font
 .    nf
 .  \}
 .  el \{\
-.    tm1 "mdoc warning: Unknown keyword `\$1' (or missing display type)
+.    tm1 "mdoc warning: Unknown keyword '\$1' (or missing display type)
 .    tm1 "              in .Bd macro (#\n[.c])
 .    nr doc-reg-Bd 0
 .  \}\}\}\}\}
 .        warn (\n[.warn] - (\n[.warn] / 32 % 2 * 32))
 .
 .        \" values without a scaling indicator are taken as strings;
-.        \" we test whether the parameter string with and without the last
-.        \" character yields identical numerical results (ignoring the
-.        \" scaling indicator)
+.        \" we test whether the parameter string with and without the
+.        \" last character yields identical numerical results (ignoring
+.        \" the scaling indicator)
 .        ds doc-str-ddBa "\$2
 .        substring doc-str-ddBa 0 -2
 .        if \B\a(\*[doc-str-ddBa])\a \{\
 .      nr doc-reg-ddBa 2
 .    \}
 .    el \
-.      tm mdoc warning: .Bd `-file' keyword requires argument (#\n[.c])
+.      tm mdoc warning: .Bd '-file' keyword requires argument (#\n[.c])
 .  \}
 .  el \
-.      tm mdoc warning: Unknown keyword `\$1' in .Bd macro (#\n[.c])
+.      tm mdoc warning: Unknown keyword '\$1' in .Bd macro (#\n[.c])
 .  \}\}
 .
 .  if (\n[doc-reg-ddBa] < \n[.$]) \{\
 .\" NS   doc-display-type-stackXXX
 .\" NS   doc-macro-name
 .\" NS
-.\" NS width register `Ed' set in doc-common
+.\" NS width register 'Ed' set in doc-common
 .
 .de Ed
 .  ds doc-macro-name Ed
 .\" NS Bl user macro
 .\" NS   begin list
 .\" NS
-.\" NS width register `Bl' set in doc-common
+.\" NS width register 'Bl' set in doc-common
 .\" NS
 .\" NS modifies:
 .\" NS   doc-arg-ptr
 .  \}
 .  el \{ .ie "\$1"-tag" \{\
 .    ds doc-list-type-stack\n[doc-list-depth] tag-list
+.    nr doc-list-indent-stack\n[doc-list-depth] 6n
 .    nr doc-list-have-indent-stack\n[doc-list-depth] 1
 .  \}
 .  el \{ .ie "\$1"-item" \{\
 .    linetabs 1
 .  \}
 .  el \{\
-.    tm1 "mdoc warning: Unknown list type `\$1' (or missing list type)
+.    tm1 "mdoc warning: Unknown list type '\$1' (or missing list type)
 .    tm1 "              in .Bl macro
 .    tm
 .    nr doc-arg-ptr 0
 .\" NS   doc-list-offset-stackXXX
 .\" NS   doc-num-columns
 .\" NS   doc-tag-prefix-stackXXX
-.\" NS   doc-tag-width-stackXXX
 .\" NS
 .\" NS local variables:
 .\" NS   doc-box-dBla
 .  if (\n[doc-arg-limit] < \n[doc-arg-ptr]) \
 .    return
 .
-.  \" avoid a warning message in case e.g. `-offset' has no parameter
+.  \" avoid a warning message in case e.g. '-offset' has no parameter
 .  nr doc-reg-dBla (\n[doc-arg-ptr] + 1)
-.  if !d doc-arg\n[doc-reg-dBla] \
+.  if (\n[doc-arg-limit] < \n[doc-reg-dBla]) \
 .    ds doc-arg\n[doc-reg-dBla]
 .
 .  nr doc-reg-dBla 1
 .      nr doc-list-indent-stack\n[doc-list-depth] +\n[doc-reg-dBla1]n
 .    \}
 .    el \
-.      tm mdoc warning: `-nested' allowed with nested .Bl macros only (#\n[.c])
+.      tm mdoc warning: '-nested' allowed with nested .Bl macros only (#\n[.c])
 .  \}
 .
 .  el \{ .ie "\*[doc-arg\n[doc-arg-ptr]]"-width" \{\
 .    nr doc-arg-ptr +1
-.    ds doc-tag-width-stack\n[doc-list-depth] TagwidtH
-.
 .    ds doc-str-dBla "\*[doc-arg\n[doc-arg-ptr]]
 .    substring doc-str-dBla 0 0
 .    ie \a.\a\*[doc-str-dBla]\a \{\
 .        warn (\n[.warn] - (\n[.warn] / 32 % 2 * 32))
 .
 .        \" values without a scaling indicator are taken as strings;
-.        \" we test whether the parameter string with and without the last
-.        \" character yields identical numerical results (ignoring the
-.        \" scaling indicator)
+.        \" we test whether the parameter string with and without the
+.        \" last character yields identical numerical results (ignoring
+.        \" the scaling indicator)
 .        ds doc-str-dBla1 "\*[doc-str-dBla]
 .        substring doc-str-dBla1 0 -2
 .        if \B\a(\*[doc-str-dBla1])\a \{\
 .        ds doc-arg\n[doc-num-columns] "\*[doc-arg\n[doc-arg-ptr]]
 .    \}
 .    el \{\
-.      tmc mdoc warning: Unknown keyword `\*[doc-arg\n[doc-arg-ptr]]'
+.      tmc mdoc warning: Unknown keyword '\*[doc-arg\n[doc-arg-ptr]]'
 .      tm1 " in .Bl macro (#\n[.c])
 .  \}\}
 .
 .    nr doc-list-indent-stack\n[doc-reg-dsgv]-saved \n[doc-list-indent-stack\n[doc-reg-dsgv]]
 .    nr doc-compact-list-stack\n[doc-reg-dsgv]-saved \n[doc-compact-list-stack\n[doc-reg-dsgv]]
 .    ds doc-tag-prefix-stack\n[doc-reg-dsgv]-saved "\*[doc-tag-prefix-stack\n[doc-reg-dsgv]]
-.    ds doc-tag-width-stack\n[doc-reg-dsgv]-saved "\*[doc-tag-width-stack\n[doc-reg-dsgv]]
 .    nr doc-list-offset-stack\n[doc-reg-dsgv]-saved \n[doc-list-offset-stack\n[doc-reg-dsgv]]
 .    nr doc-enum-list-count-stack\n[doc-reg-dsgv]-saved \n[doc-enum-list-count-stack\n[doc-reg-dsgv]]
 .    nr doc-reg-dsgv +1
 .    nr doc-list-indent-stack\n[doc-reg-drgv] \n[doc-list-indent-stack\n[doc-reg-drgv]-saved]
 .    nr doc-compact-list-stack\n[doc-reg-drgv] \n[doc-compact-list-stack\n[doc-reg-drgv]-saved]
 .    ds doc-tag-prefix-stack\n[doc-reg-drgv] "\*[doc-tag-prefix-stack\n[doc-reg-drgv]-saved]
-.    ds doc-tag-width-stack\n[doc-reg-drgv] "\*[doc-tag-width-stack\n[doc-reg-drgv]-saved]
 .    nr doc-list-offset-stack\n[doc-reg-drgv] \n[doc-list-offset-stack\n[doc-reg-drgv]-saved]
 .    nr doc-enum-list-count-stack\n[doc-reg-drgv] \n[doc-enum-list-count-stack\n[doc-reg-drgv]-saved]
 .    nr doc-reg-drgv +1
 .\" NS local variables:
 .\" NS   doc-str-El
 .\" NS
-.\" NS width register `El' set in doc-common
+.\" NS width register 'El' set in doc-common
 .
 .de El
 .  if \n[.$] \{\
 .\" NS   doc-str-It
 .\" NS   doc-XXX-list-type
 .\" NS
-.\" NS width register `It' set in doc-common
+.\" NS width register 'It' set in doc-common
 .
 .nr doc-bullet-list-type 1
 .nr doc-column-list-type 0
 .
 .  ie (\n[doc-reg-It] == 1) \{\
 .    if \n[.$] \{\
-.      tm1 "mdoc warning: .It macros in lists of type `\*[doc-str-It]'
+.      tm1 "mdoc warning: .It macros in lists of type '\*[doc-str-It]'
 .      tm1 "              don't take arguments (#\n[.c])
 .  \}\}
 .  el \{\
 .          doc-print-recursive
 .    \}\}\}
 .    el \{\
-.      tm1 "mdoc warning: .It macros in lists of type `\*[doc-str-It]'
+.      tm1 "mdoc warning: .It macros in lists of type '\*[doc-str-It]'
 .      tm1 "              require arguments (#\n[.c])
 .    \}
 .  \}
 .
-.  \" the previous call of `.doc-print-recursive' can contain calls to
-.  \" opening macros like `.Ao'; we then defer the call of `doc-xxx-list'
+.  \" the previous call of '.doc-print-recursive' can contain calls to
+.  \" opening macros like '.Ao'; we then defer the call of
+.  \" 'doc-xxx-list'
 .  if !\n[doc-nesting-level] \
 .    doc-\*[doc-str-It]
 ..
 .
 .
 .\" NS doc-tag-list macro
-.\" NS   .It item of list-type `tag'
+.\" NS   .It item of list-type 'tag'
 .\" NS
 .\" NS modifies:
 .\" NS   doc-have-space
 .  box
 .  unformat doc-item-box\n[doc-list-depth]
 .
-.  \" we use a box without `.nf' to compute the tag width (via `dl' register)
+.  \" we use a box without '.nf' to compute the tag width (via 'dl' register)
 .  box doc-box-dtl
 .  ev doc-env-dtl
 .  evc 0
 .  ev
 .  box
 .
-.  if !"TagwidtH"\*[doc-tag-width-stack\n[doc-list-depth]]" \{\
-.    if !\n[doc-list-have-indent-stack\n[doc-list-depth]] \{\
-.      in -(\n[doc-list-indent-stack\n[doc-list-depth]]u + \n[doc-digit-width]u)
-.      nr doc-list-have-indent-stack\n[doc-list-depth] 1
-.    \}
-.    doc-get-tag-width
-.  \}
 .  doc-set-vertical-and-indent 1
 .  nr doc-reg-dtl (\n[doc-list-indent-stack\n[doc-list-depth]]u + \n[doc-digit-width]u)
 .  ti -\n[doc-reg-dtl]u
 ..
 .
 .
-.\" NS doc-get-tag-width macro
-.\" NS   resolve unknown tag width (`tag' list-type only)
-.\" NS
-.\" NS modifies:
-.\" NS   doc-list-indent-stackXXX
-.\" NS   doc-tag-width-stackXXX
-.\" NS
-.\" NS requires:
-.\" NS   doc-curr-arg
-.\" NS   doc-curr-type
-.
-.de doc-get-tag-width
-.  ie (\n[doc-curr-type] == 1) \{\
-.    ds doc-tag-width-stack\n[doc-list-depth] \*[doc-curr-arg]
-.    nr doc-list-indent-stack\n[doc-list-depth] \n[\*[doc-curr-arg]]
-.  \}
-.  el \{\
-.    ds doc-tag-width-stack\n[doc-list-depth] No
-.    nr doc-list-indent-stack\n[doc-list-depth] \n[No]
-.  \}
-..
-.
-.
 .\" NS doc-set-vertical-and-indent macro
 .\" NS   set up vertical spacing (if not compact) and indentation (with
 .\" NS   offset if argument is non-zero)
 .ds doc-tag-prefix-stack1
 .
 .
-.\" NS doc-tag-width-stackXXX global string
-.\" NS   stack of strings indicating how to set up current element of
-.\" NS   doc-list-indent-stackXXX -- if set to TagwidtH, user has set it
-.\" NS   directly; if it is a macro name, use the macro's width value;
-.\" NS   otherwise, `doc-get-tag-width' uses width value of `No'.
-.\" NS
-.\" NS limit:
-.\" NS   doc-list-depth
-.
-.ds doc-tag-width-stack0
-.ds doc-tag-width-stack1
-.
-.
 .\" NS doc-list-offset-stackXXX global register
 .\" NS   stack of list offsets
 .\" NS
 .
 .
 .\" NS doc-end-list macro
-.\" NS   list end function; resets indentation (and offset if argument is
-.\" NS   non-zero)
+.\" NS   list end function; resets indentation (and offset if argument
+.\" NS   is non-zero)
 .\" NS
 .\" NS modifies:
 .\" NS   doc-list-depth
 .\" NS   doc-list-offset-stackXXX
 .\" NS   doc-list-type-stackXXX
 .\" NS   doc-tag-prefix-stackXXX
-.\" NS   doc-tag-width-stackXXX
 .\" NS   doc-enum-list-count-stackXXX
 .\" NS
 .\" NS local variables:
 .  nr doc-list-indent-stack\n[doc-reg-dils] 0
 .  nr doc-list-offset-stack\n[doc-reg-dils] 0
 .  ds doc-tag-prefix-stack\n[doc-reg-dils]
-.  ds doc-tag-width-stack\n[doc-reg-dils] \*[doc-tag-width-stack\n[doc-list-depth]]
 .  ds doc-list-type-stack\n[doc-reg-dils]
 .  nr doc-compact-list-stack\n[doc-reg-dils] 0
 .  nr doc-enum-list-count-stack\n[doc-reg-dils] 0
 .\" NS   doc-list-offset-stackXXX
 .\" NS   doc-list-type-stackXXX
 .\" NS   doc-tag-prefix-stackXXX
-.\" NS   doc-tag-width-stackXXX
 .\" NS   doc-enum-list-count-stackXXX
 .
 .de doc-decrement-list-stack
 .  nr doc-list-indent-stack\n[doc-list-depth] 0
 .  nr doc-list-offset-stack\n[doc-list-depth] 0
 .  ds doc-tag-prefix-stack\n[doc-list-depth]
-.  ds doc-tag-width-stack\n[doc-list-depth]
 .  nr doc-compact-list-stack\n[doc-list-depth] 0
 .  nr doc-enum-list-count-stack\n[doc-list-depth] 0
 ..
 .\" NS local variables:
 .\" NS   doc-reg-Xr
 .\" NS
-.\" NS width register `Xr' set in doc-common
+.\" NS width register 'Xr' set in doc-common
 .
 .de Xr
 .  if !\n[doc-arg-limit] \{\
 .\" NS Sx user macro
 .\" NS   cross section reference
 .\" NS
-.\" NS width register `Sx' set in doc-common
+.\" NS width register 'Sx' set in doc-common
 .
 .als Sx doc-generic-macro
 .ds doc-Sx-usage section_header
 .
 .
 .\" NS doc-set-column-tab macro
-.\" NS   establish tabs for list-type column: `.doc-set-column-tab num_cols'
+.\" NS   establish tabs for list-type column: '.doc-set-column-tab num_cols'
 .\" NS
 .\" NS modifies:
 .\" NS   doc-column-indent-width
 .\" NS modifies:
 .\" NS   doc-arg-ptr
 .\" NS
-.\" NS width register `Ta' set in doc-common
+.\" NS width register 'Ta' set in doc-common
 .
 .de Ta
 .  ie \n[doc-arg-limit] \{\
 .\" NS Dl user macro
 .\" NS   display (one line) literal
 .\" NS
-.\" NS   this function uses the `Li' font
+.\" NS   this function uses the 'Li' font
 .\" NS
 .\" NS modifies:
 .\" NS   doc-arg-ptr
 .\" NS   doc-curr-size
 .\" NS   doc-macro-name
 .\" NS
-.\" NS width register `Dl' set in doc-common
+.\" NS width register 'Dl' set in doc-common
 .
 .de Dl
 .  ta T .5i
 .\" NS   doc-arg-ptr
 .\" NS   doc-macro-name
 .\" NS
-.\" NS width register `D1' set in doc-common
+.\" NS width register 'D1' set in doc-common
 .
 .de D1
 .  ta T .5i
 .\" NS   doc-have-var
 .\" NS   doc-macro-name
 .\" NS
-.\" NS width register `Vt' set in doc-common
+.\" NS width register 'Vt' set in doc-common
 .
 .de Vt
 .  if !\n[doc-arg-limit] \{\
 .\" NS   doc-is-func
 .\" NS   doc-macro-name
 .\" NS
-.\" NS width register `Ft' set in doc-common
+.\" NS width register 'Ft' set in doc-common
 .
 .de Ft
 .  if !\n[doc-arg-limit] \{\
 .
 .
 .\" NS doc-have-old-func global register (bool)
-.\" NS   set if `Ot' has been called
+.\" NS   set if 'Ot' has been called
 .
 .nr doc-have-old-func 0
 .
 .\" NS   doc-have-var
 .\" NS   doc-is-func
 .\" NS
-.\" NS width register `Ot' set in doc-common
+.\" NS width register 'Ot' set in doc-common
 .
 .de Ot
 .  nr doc-have-old-func 1
 .\" NS   doc-curr-size
 .\" NS   doc-macro-name
 .\" NS
-.\" NS width register `Fa' set in doc-common
+.\" NS width register 'Fa' set in doc-common
 .
 .de Fa
 .  if !\n[doc-arg-limit] \{\
 .\" NS   doc-is-func
 .\" NS   doc-macro-name
 .\" NS
-.\" NS width register `Fn' set in doc-common
+.\" NS width register 'Fn' set in doc-common
 .
 .de Fn
 .  if !\n[doc-arg-limit] \{\
 .\" NS   doc-macro-name
 .\" NS   doc-saved-nesting-level
 .\" NS
-.\" NS width register `Fo' set in doc-common
+.\" NS width register 'Fo' set in doc-common
 .
 .de Fo
 .  if (\n[doc-in-func-enclosure]) \{\
 .\" NS   doc-saved-nesting-level
 .\" NS   doc-macro-name
 .\" NS
-.\" NS width register `Fc' set in doc-common
+.\" NS width register 'Fc' set in doc-common
 .
 .de Fc
 .  if !\n[doc-in-func-enclosure] \{\
 ..
 .
 .
-.\" Very crude references: Stash all reference info into boxes, print out
-.\" reference on .Re macro and clean up.  Ordering very limited, no fancy
-.\" citations, but can do articles, journals, and books -- need to add
-.\" several missing options (like city etc).  Should be able to grab a refer
-.\" entry, massage it a wee bit (prefix a `.' to the %[A-Z]) and not worry
-.\" (ha!).
+.\" Very crude references: Stash all reference info into boxes, print
+.\" out reference on .Re macro and clean up.  Ordering very limited, no
+.\" fancy citations, but can do articles, journals, and books -- need to
+.\" add several missing options (like city etc).  Should be able to grab
+.\" a refer entry, massage it a wee bit (prefix a '.' to the %[A-Z]) and
+.\" not worry (ha!).
 .
 .
 .\" NS doc-is-reference global register (bool)
 .\" NS   doc-is-reference
 .\" NS   doc-reference-count
 .\" NS
-.\" NS width register `Rs' set in doc-common
+.\" NS width register 'Rs' set in doc-common
 .
 .de Rs
 .  ie \n[.$] \
 .\" NS modifies:
 .\" NS   doc-is-reference
 .\" NS
-.\" NS width register `Re' set in doc-common
+.\" NS width register 'Re' set in doc-common
 .
 .de Re
 .  ie \n[.$] \
 .    unformat doc-reference-title-name-for-book
 .    chop doc-reference-title-name-for-book
 .    ie ((\n[doc-journal-count] == 1) : (\n[doc-book-count] == 1)) \{\
-.      nop \)\*[q]\)\*[doc-reference-title-name-for-book]\)\*[q]\c
+.      nop \)\*[Lq]\)\*[doc-reference-title-name-for-book]\)\*[Rq]\c
 .      doc-finish-reference \n[doc-reference-title-count]
 .    \}
 .    el \{\
 .\" NS local variables:
 .\" NS   doc-env-%A
 .\" NS
-.\" NS width register `%A' set in doc-common
+.\" NS width register '%A' set in doc-common
 .
 .de %A
 .  if (\n[doc-arg-limit] : (\n[.$] == 0)) \{\
 .\" NS local variables:
 .\" NS   doc-env-%B
 .\" NS
-.\" NS width register `%B' set in doc-common
+.\" NS width register '%B' set in doc-common
 .
 .de %B
 .  if (\n[doc-arg-limit] : (\n[.$] == 0)) \{\
 .\" NS local variables:
 .\" NS   doc-env-%C
 .\" NS
-.\" NS width register `%C' set in doc-common
+.\" NS width register '%C' set in doc-common
 .
 .de %C
 .  if (\n[doc-arg-limit] : (\n[.$] == 0)) \{\
 .\" NS local variables:
 .\" NS   doc-env-%D
 .\" NS
-.\" NS width register `%D' set in doc-common
+.\" NS width register '%D' set in doc-common
 .
 .de %D
 .  if (\n[doc-arg-limit] : (\n[.$] == 0)) \{\
 .\" NS local variables:
 .\" NS   doc-env-%I
 .\" NS
-.\" NS width register `%I' set in doc-common
+.\" NS width register '%I' set in doc-common
 .
 .de %I
 .  if (\n[doc-arg-limit] : (\n[.$] == 0)) \{\
 .\" NS local variables:
 .\" NS   doc-env-%J
 .\" NS
-.\" NS width register `%J' set in doc-common
+.\" NS width register '%J' set in doc-common
 .
 .de %J
 .  if (\n[doc-arg-limit] : (\n[.$] == 0)) \{\
 .\" NS local variables:
 .\" NS   doc-env-%N
 .\" NS
-.\" NS width register `%N' set in doc-common
+.\" NS width register '%N' set in doc-common
 .
 .de %N
 .  if (\n[doc-arg-limit] : (\n[.$] == 0)) \{\
 .\" NS local variables:
 .\" NS   doc-env-%O
 .\" NS
-.\" NS width register `%O' set in doc-common
+.\" NS width register '%O' set in doc-common
 .
 .de %O
 .  if (\n[doc-arg-limit] : (\n[.$] == 0)) \{\
 .\" NS local variables:
 .\" NS   doc-env-%P
 .\" NS
-.\" NS width register `%P' set in doc-common
+.\" NS width register '%P' set in doc-common
 .
 .de %P
 .  if (\n[doc-arg-limit] : (\n[.$] == 0)) \{\
 .\" NS local variables:
 .\" NS   doc-env-%Q
 .\" NS
-.\" NS width register `%Q' set in doc-common
+.\" NS width register '%Q' set in doc-common
 .
 .de %Q
 .  if (\n[doc-arg-limit] : (\n[.$] == 0)) \{\
 .\" NS local variables:
 .\" NS   doc-env-%R
 .\" NS
-.\" NS width register `%R' set in doc-common
+.\" NS width register '%R' set in doc-common
 .
 .de %R
 .  if (\n[doc-arg-limit] : (\n[.$] == 0)) \{\
 .\" NS local variables:
 .\" NS   doc-env-%T
 .\" NS
-.\" NS width register `%T' set in doc-common
+.\" NS width register '%T' set in doc-common
 .
 .de %T
 .  if (\n[doc-arg-limit] : (\n[.$] == 0)) \{\
 .\" NS local variables:
 .\" NS   doc-env-%U
 .\" NS
-.\" NS width register `%U' set in doc-common
+.\" NS width register '%U' set in doc-common
 .
 .de %U
 .  if (\n[doc-arg-limit] : (\n[.$] == 0)) \{\
 .\" NS local variables:
 .\" NS   doc-env-%V
 .\" NS
-.\" NS width register `%V' set in doc-common
+.\" NS width register '%V' set in doc-common
 .
 .de %V
 .  if (\n[doc-arg-limit] : (\n[.$] == 0)) \{\
 .\" NS   doc-curr-font
 .\" NS   doc-curr-size
 .\" NS
-.\" NS width register `Hf' set in doc-common
+.\" NS width register 'Hf' set in doc-common
 .
 .de Hf
 .  ie ((\n[.$] == 1) & (\n[doc-arg-limit] == 0)) \{\
 .
 .
 .\" NS doc-have-author global register (bool)
-.\" NS   set in `An'
+.\" NS   set in 'An'
 .
 .nr doc-have-author 0
 .
 .\" NS   doc-have-author
 .\" NS   doc-macro-name
 .\" NS
-.\" NS width register `An' set in doc-common
+.\" NS width register 'An' set in doc-common
 .
 .de An
 .  if !\n[doc-arg-limit] \{\
 .\" NS Rv user macro
 .\" NS   return values
 .\" NS
-.\" NS width register `Rv' set in doc-common
+.\" NS width register 'Rv' set in doc-common
 .\" NS
 .\" NS local variables:
 .\" NS   doc-str-Rv-std-prefix
 .
 .de Rv
 .
-.\" XXX: what does this function without `-std'?
+.\" XXX: what does this function without '-std'?
 .
 .  if \n[doc-arg-limit] \{\
 .    tm Usage: .Rv not callable by other macros (#\n[.c])
 .\" NS Ex user macro
 .\" NS   exit status
 .\" NS
-.\" NS width register `Ex' set in doc-common
+.\" NS width register 'Ex' set in doc-common
 .\" NS
 .\" NS local variables:
 .\" NS   doc-str-Ex-std-prefix
 .
 .de Ex
 .
-.\" XXX: what does this function without `-std'?
+.\" XXX: what does this function without '-std'?
 .
 .  if \n[doc-arg-limit] \{\
 .    tm Usage: .Ex not callable by other macros (#\n[.c])
 .\" NS Lk user macro
 .\" NS   link (for conversion to HTML)
 .\" NS
+.\" NS modifies:
+.\" NS   doc-arg-ptr
+.\" NS   doc-curr-font
+.\" NS   doc-curr-size
+.\" NS   doc-macro-name
+.\" NS
 .\" NS local variables:
-.\" NS   doc-reg-Lk
-.\" NS   doc-str-Lk
+.\" NS   doc-lasttext-Lk
+.\" NS   doc-target-Lk
 .
 .de Lk
-.  ds doc-str-Lk Sy \$@
-.
-.  ie (\n[.$] > 1) \{\
-.    doc-get-arg-type \$2
-.    ie (\n[doc-arg-type] < 3) \{\
-.      Em \)\$2:
-.      ds doc-str-Lk Sy "\$1"
-.      doc-get-width "\$1"
-.      shift 2
-.      if \n[.$] \
-.        as doc-str-Lk " \$@
+.  if !\n[doc-arg-limit] \{\
+.    ds doc-macro-name Lk
+.    doc-parse-args \$@
+.  \}
+.
+.  if !\n[doc-arg-limit] \
+.    return
+.
+.  \" The first argument is the target URI.
+.  nr doc-arg-ptr +1
+.  ds doc-target-Lk "\*[doc-arg\n[doc-arg-ptr]]
+.  nr doc-arg-ptr +1
+.
+.  \" Search backwards for the first closing punctuation.
+.  nr doc-lasttext-Lk \n[doc-arg-limit]
+.  while (\n[doc-lasttext-Lk] >= \n[doc-arg-ptr]) \{\
+.    if !(\n[doc-type\n[doc-lasttext-Lk]] == 3) \
+.      break
+.    nr doc-lasttext-Lk -1
+.  \}
+.
+.  \" Print the link text, if any.
+.  nr doc-curr-font \n[.f]
+.  nr doc-curr-size \n[.ps]
+.  if (\n[doc-arg-ptr] <= \n[doc-lasttext-Lk]) \{\
+.    nop \*[doc-Em-font]\c
+.    while (\n[doc-arg-ptr] < \n[doc-lasttext-Lk]) \{\
+.      nop \*[doc-arg\n[doc-arg-ptr]]
+.      nr doc-arg-ptr +1
 .    \}
-.    el \
-.      doc-get-width "\$1"
+.    nop \*[doc-arg\n[doc-arg-ptr]]\f[\n[doc-curr-font]]\s[\n[doc-curr-size]u]:
+.    nr doc-arg-ptr +1
 .  \}
-.  el \
-.    doc-get-width "\$1"
 .
-.  ie n \
-.    nr doc-reg-Lk 26
-.  el \
-.    nr doc-reg-Lk 38
-.  ie (\n[doc-width] >= \n[doc-reg-Lk]) \
-.    D1 \*[doc-str-Lk]
-.  el \
-.    \*[doc-str-Lk]
+.  \" Print the link target.
+.  nop \*[doc-Sy-font]\*[doc-target-Lk]\c
+.  nop \f[\n[doc-curr-font]]\s[\n[doc-curr-size]u]\c
+.
+.  \" Print the delimiters, if any.
+.  while (\n[doc-arg-ptr] <= \n[doc-arg-limit]) \{\
+.    nop \*[doc-arg\n[doc-arg-ptr]]\c
+.    nr doc-arg-ptr +1
+.  \}
+.  nop \&
+.  doc-reset-args
 ..
 .
 .
 .als Ds doc-defunct-macro
 .
 .als Or doc-defunct-macro
-.ds doc-Or-usage use `|'
+.ds doc-Or-usage use '|'
 .
 .als Sf doc-defunct-macro
 .ds doc-Sf-usage use .Pf or .Ns
 .
 .de em
 .  tm1 "mdoc error: end-macro (.em) respecification is not allowed. (#\n[.c])
-.  tm1 "            Should this have been `.Em ...'?
+.  tm1 "            Should this have been '.Em ...'?
 .  ab
 ..
 .
 .ec
 .
 .
-.\" For UTF-8, map some characters conservatively for the sake
-.\" of easy cut and paste.
+.\" For UTF-8, map some characters conservatively for the sake of easy
+.\" cut and paste.
 .
 .if '\*[.T]'utf8' \{\
 .  rchar \- - ' `
 .\" load local modifications
 .mso mdoc.local
 .
-.\" EOF
+.\" ====================================================================
+.\" Editor settings
+.\" ====================================================================
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" fill-column: 72
+.\" End:
+.\" vim: set filetype=groff textwidth=72:
index 96cfbb7..8997ffc 100644 (file)
@@ -1,5 +1,3 @@
-.\" -*- nroff -*-
-.\"
 .\" dvi.tmac
 .\"
 .nr _C \n(.C
@@ -785,3 +783,13 @@ D\v'-.33m'\s0\v'.33m'
 .  do mso latin1.tmac
 .el \
 .  do mso cp1047.tmac
+.
+.\" ====================================================================
+.\" Editor settings
+.\" ====================================================================
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" fill-column: 72
+.\" End:
+.\" vim: set filetype=groff textwidth=72:
similarity index 86%
rename from tmac/e.tmac
rename to tmac/e.tmac-u
index 92d3f7a..96afd99 100644 (file)
@@ -1,5 +1,3 @@
-.\" -*- nroff -*-
-.\"
 .\"    @(#)e.tmac      2.31 (Berkeley) 5/21/88
 .\"    Modified by James Clark for use with groff.
 .\"
@@ -8,30 +6,31 @@
 .\"
 .\" Redistribution and use in source and binary forms are permitted
 .\" provided that this notice is preserved and that due credit is given
-.\" to the University of California at Berkeley. The name of the University
-.\" may not be used to endorse or promote products derived from this
-.\" software without specific prior written permission. This software
-.\" is provided ``as is'' without express or implied warranty.
+.\" to the University of California at Berkeley.  The name of the
+.\" University may not be used to endorse or promote products derived
+.\" from this software without specific prior written permission.  This
+.\" software is provided "as is" without express or implied warranty.
+.\"
 .\"    %beginstrip%
 .\"
-.\"**********************************************************************
-.\"*                                                                   *
-.\"*   ******  - M E   N R O F F / T R O F F   M A C R O S  ******     *
-.\"*                                                                   *
-.\"*   Produced for your edification and enjoyment by:                 *
-.\"*           Eric Allman                                             *
-.\"*           Electronics Research Laboratory                         *
-.\"*           U.C. Berkeley.                                          *
-.\"*   current address:                                                *
-.\"*           Britton-Lee, Inc.                                       *
-.\"*           1919 Addison Street Suite 105                           *
-.\"*           Berkeley, California  94704                             *
-.\"*                                                                   *
-.\"*   VERSION 2.31    First Release: 11 Sept 1978                     *
-.\"*                                                                   *
-.\"*   Documentation is available.                                     *
-.\"*                                                                   *
-.\"**********************************************************************
+.\"**************************************************************
+.\"*                                                           *
+.\"*   ****  - M E   N R O F F / T R O F F   M A C R O S  **** *
+.\"*                                                           *
+.\"*   Produced for your edification and enjoyment by:         *
+.\"*           Eric Allman                                     *
+.\"*           Electronics Research Laboratory                 *
+.\"*           U.C. Berkeley.                                  *
+.\"*   current address:                                        *
+.\"*           Britton-Lee, Inc.                               *
+.\"*           1919 Addison Street Suite 105                   *
+.\"*           Berkeley, California  94704                     *
+.\"*                                                           *
+.\"*   VERSION 2.31    First Release: 11 Sept 1978             *
+.\"*                                                           *
+.\"*   Documentation is available.                             *
+.\"*                                                           *
+.\"**************************************************************
 .\"
 .\"    Code on .de commands:
 .\"            ***     a user interface macro.
@@ -49,7 +48,7 @@
 .do mso devtag.tmac
 .
 .if !\n(.g .ig
-.de @R                 \" --- initialize number register to 0, if undefined
+.de @R         \" --- initialize number register to 0, if undefined
 .if !r\\$1 .nr \\$1 0
 ..
 .
@@ -82,7 +81,7 @@
 .if \n(pf .nx
 .
 .if !\n(.g .ig
-.de @S                 \" --- initialize string/macro to empty, if undefined
+.de @S         \" --- initialize string/macro to empty, if undefined
 .if !d\\$1 .ds \\$1 \" empty
 ..
 .
 'ce 0
 ..
 .
-.de @D                 \" --- determine display type (Indent, Left, Center)
+.de @D         \" --- determine display type (Indent, Left, Center)
 .ds |p "\\$3
 .nr _d 0
 .if "\\$2"C" \
 .
 ..
 .
+.rn nm @#              \" --- rename to original command
+.de nm                 \" --- turn on number mode preserving font info
+.ie \\n(.$ \
+\{\
+.      nr _S \\n(.s
+.      nr _F \\n(.f
+.      ps \\n[_#p]
+.      ft \\n[_#f]
+.      @# \\$1 \\$2 \\$3 \\$4
+.      ft \\n(_F
+.      ps \\n(_S
+.      rr _F
+.      rr _S
+.\}
+.el .@#
+..
+.
 .de @z                 \" --- end macro
 .if \n@>1 .tm >> @z, .z=\\n(.z ?a=\\n(?a
 .if !"\\n(.z"" \
 .\}
 ..
 .
-.de ef                 \" *** define even foot
+.de ef                 \" *** define even footer
 .ie !\\n(.$ \
 .      rm |6
 .el \
 .      ds |7 "\*($*
 ..
 .
-.de ep                 \" *** end page (must always be followed by a .bp)
+.de ep                 \" *** end page (must be followed by a .bp)
 .if \\n(nl>0 \
 \{\
 .      wh 0
 .      nr bm \\n(.Vu
 .if (\\n(_w<=\\n($l)&(\\n(?W=0) \
 \{\
-.      nr _b (\\n(ppp*\\n($vu)/200u    \" compute fudge factor (must be < 1P)
+.      \" Compute fudge factor (must be < 1P).
+.      nr _b (\\n(ppp*\\n($vu)/200u
 .      if \\n(_bu>((\\n(bmu-\\n(fmu-((\\n(tpp*\\n($vu)/100u))/2u) \
 .              nr _b (\\n(ppp*\\n($vu)/100u-\n(.Vu
 .      nr _b +\\n(bmu
 .nr _B \\n(_bu
 .ch @f
 .wh -\\n(_bu @f
-.nr _b +(\\n(ppp*\\n($vu)/100u \" add 1 paragraph v in case of sweep past
+.nr _b +(\\n(ppp*\\n($vu)/100u \" add 1 paragraph v in case sweep past
 .if \n@>2 .tm @n .p=\\n(.p bm=\\n(bm _b=\\n(_b _B=\\n(_B
 .nr ?f 0                       \" reset footnote flag
 .if \\n(?o \
 \{\
-.      (f _\"                  \" reprocess footnotes which run off page
+.      (f _\"          \" reprocess footnotes which run off page
 .      nf
 .      |o
 .      fi
 .ec
 .if \\n(?T \
 \{\
-.      nr T. 1                 \" for tbl commands (to output bottom line)
-.      T# 1\"                  \" output the sides and bottom lines
+.      nr T. 1         \" for tbl commands (to output bottom line)
+.      T# 1\"          \" output the sides and bottom lines
 .      br
 .\}
 .ev 2
 .if \n@>2 .tm  >> @e
 .@O \\n(_ou
 .rs
-.sp |\\n(.pu-\\n(fmu-((\\n(tpp*\\n($vu)/100u)  \" move to footer position
+.\" Move to footer position.
+.sp |\\n(.pu-\\n(fmu-((\\n(tpp*\\n($vu)/100u)
 .@t $f\"                       \" output footer title
 .nr ?h 0
 .bp
 ..
 .
 .de n1                 \" *** line numbering 1
-.nm 1
 .ll -\w'0000'u
 .nr ?n 1
+.nr _#p \\n(.s
+.nr _#f \\n(.f
+.nm 1
 ..
 .
 .de n2                 \" *** line numbering 2
 \{\
 .              ds |i \\$1
 .              ds |j \\$1
-.              do substring |i 0 0  \" pick off leading char and rest to check
+.              \" Pick off leading char and rest to check.
+.              do substring |i 0 0  \"
 .              do substring |j 1    \" for +N / -N
 .              ie `\\*(|i`+` \
 .                      nr ln (\\n[_ln])+\\*(|j
 .                              nr ln (\\n[_ln])-\\*(|j
 .                      el \
 .                              nr ln \\$1  \" unsigned N
+.              nr _#p \\n(.s
+.              nr _#f \\n(.f
 .              nm \\n(ln
 .              nr ?n 2
 .              rm |i |j
 .
 .
 .if !\n(.g .ig
-.de re                 \" *** reset tabs (TROFF defines 15 stops default)
+.de re         \" *** reset tabs (TROFF defines 15 stops default)
 .ta T 0.5i
 ..
 .
 .@p \\n(_0u
 .nr _I \\n(.iu
 .in 0
+.nm
 .di |i
 \&\\$1
 .br
 .di
+.if \\n(?n \
+.      nm \\n(ln
 .in \\n(_Iu
 .ds |j \\*(|i\\
 .ie \\w"\\*(|j" \
 .rr _0
 .if !\\n(?b \
 .      nr dn +(\\n(ppp*\\n($vu)/200u+\\n(zsu
-.nr dl -\n(.H                  \" fudge factor necessary to make it work
+.nr dl -\n(.H          \" fudge factor necessary to make it work
 .ie ((\\n(dn+\n(.V)>=\\n(.t):(\\n(?a):((\\n(dl>\\n($l)&(\\n($c>1)) \
 \{\
 .      nr ?a 1
 .nf
 .ls 1
 .in 0
-.sp \\n(zsu
+.if !`\\$2`ns` .sp \\n(zsu     \" no pre-spacing if (b .. )b
 .if \\n(?n \
 .      nm \\n(ln
 .\\$1
 .@)
 .if (\\n(bt=0):(\\n(.t<\\n(bt) \
 .      ne \\n(dnu              \" make it all on one page
-.@k |k
+.@k |k ns
 .ev                             \" return from display environment
 .sp \\n(bsu+\\n(.Lv-1v
 ..
 .br
 .if "\\n(.z"|c" .tm Line \\n(c. -- Nested .(c requests
 .if \\n(?n .nm
+.if ``\\n(.z` \
+\{\
+.      @C 1            \" Ensure env. set up for centering in open text
+.      ev
+.\}
 .di |c
 ..
 .
 .      nm
 .ev
 .rm |c
+.if \\n(?n \
+.      nm \\n(ln
 ..
 .
 .
 .
 .de )l                 \" *** end list
 .br
-.if \\n(?n \
-.      nm
 .ev
+.if \\n(?n \
+.      nm \\n(ln
 .sp \\n(bsu+\\n(.Lv-1v
 .nr ?k 0
 ..
 .\"
 .\"    PIC
 .\"
-.de PS         \" *** start picture: $1=height, $2=width in units or inches
+.de PS \" *** start picture: $1=height, $2=width in units or inches
 .sp 0.3
 .do HTML-IMAGE
 .nr g7 \\$2
 .ls 1
 .if \\n(?n \
 \{\
-.      de PS_nm_check &&        \" define macro to emit .nm at top diversion
+.      de PS_nm_check && \" define macro to emit .nm at top diversion
 .      if \n@>4 .tm -- PS: \\\\$1 \\\\$2 .z=\\\\n(.z PS_nm_cnt=\\\\n[PS_nm_cnt]
-.      \"                       \" multiple .PS/.PE in a keep.
+.      \" Multiple .PS/.PE in a keep.
 .      if `\\\\$2`init` \
 .              do nr PS_nm_cnt \\\\n[PS_nm_cnt]+1
 .      ie `\\\\n(.z`` \
 .\}
 .el \!.PS_nm_check \\\\$1
 .&&
-.      mk _q                    \" emit a single numbered line for PS picture
+.      mk _q           \" emit a single numbered line for PS picture
 .      rs
 \&\ 
 .      br
 .if (1i>=240u)&(1p<=\\n($R)&(\\n($R<=4p) .nr $V \\n($R00/1p
 ..
 .
-.de @E                 \" --- store in _F argument to \f for restoring font
+.de @E         \" --- store in _F argument to \f for restoring font
 .ie \\n(.f<10 \
 .      ds _F \\n(.f
 .el \
 ..
 .
 .de sm                 \" *** print in smaller font
-\s-1\\$1\\s0\\$2
+\s-1\\$1\\s+1\\$2
 ..
 .
 .de @F                 \" --- change font (0 -> no change)
 .              if !\\n(?f \
 .                      rm |f
 .              da |f
-.\" next five lines could be dropped if headers had their own environment
+.\" Next 5 lines could be dropped if headers had their own environment.
 .              in 0            \" reset everything from .bc
 .              xl \\n($lu-\\n(fuu
 .              @F \\n(ff
 .\}
 ..
 .
-.de @N                 \" --- set no fill mode in the top-level diversion
+.de @N         \" --- set no fill mode in the top-level diversion
 .ie "\\n(.z"" .nf
 .el \!.@N
 ..
 .      tm Line \\n(c. -- Bad mode to .++
 .nr ?R 0
 .if \\n(_0>10 \
-.\{
+\{\
 .      nr ?R 1
 .      nr _0 -10
 .\}
 .      pn 1                    \" must do before .ep
 .if !\\n(_0=\\n(_M .if \\n(_M=3 \
 .      pn 1                    \" must do before .ep
-.ep\"                          \" end page for correct page number types
+.ep\"                  \" end page for correct page number types
 .if \\n(_0=1 \
 \{\
 .      af ch 1
 .
 .
 .rr x
-.nr $v \n(.v00+\n(.sp-1/\n(.sp \" vs as percentage of ps for .sz request
+.nr $v \n(.v00+\n(.sp-1/\n(.sp \" vs as % of ps for .sz request
 .nr $V \n($v                   \" same for displays & footnotes
 .nr hm 4v                      \" header margin
 .nr tm 7v                      \" top margin
 .nr fm 3v                      \" footer margin
 .nr tf 3                       \" title font: (real) Times Bold
 .nr tp 10                      \" title point size
-.hy 14
+.hy 6
 .nr bi 4m                      \" indent for blocks
 .nr pi 5n                      \" indent for paragraphs
 .nr pf 1                       \" normal text font
 .\"            *** OTHER INITIALIZATION ***
 .
 .
-.\" GNU pic sets this register to 1, to indicate that \x should not be used.
+.\" GNU pic sets this register to 1 to indicate that \x should not be
+.\" used.
 .@R 0x
 .ds { \v'-0.4m'\x'\\n(0x=0*-0.2m'\s-3
-.ds } \s0\v'0.4m'
+.ds } \s+3\v'0.4m'
 .\" for compatibility with traditional -me
 .\" (the first will work only in compatibility mode)
 .ds [ \*{
 .ds ] \*}
 .ds < \v'0.4m'\x'\\n(0x=0*0.2m'\s-3
-.ds > \s0\v'-0.4m'
+.ds > \s+3\v'-0.4m'
 .ds - \(em
 .\" Avoid warnings from groff -ww.
 .@S |0
 .@S $9
 .@S ..
 .
-.@R po\"                       \" simulated page offset
-.@R $0\"                       \" section depth
-.@R $i\"                       \" paragraph base indent
-.@R $p\"                       \" numbered paragraph number
-.@R $r\"                       \" ratio of vs to ps (may override $v)
-.@R $R\"                       \" same for displays (may override $V)
-.@R df\"                       \" display font: same as surrounding text
-.@R so\"                       \" additional section title offset
-.@R fu\"                       \" footnote undent
-.@R bt\"                       \" block keep threshold
-.@R *\"                                \" has \** been referenced?
-.@R ?a\"                       \" pending floating keep at page top?
-.@R ?b\"                       \" pending floating keep at page bottom?
-.@R ?C\"                       \" at chapter header?
-.@R ?e\"                       \" in equation?
-.@R ?H\"                       \" suppress headers and footers next page?
-.@R ?I\"                       \" has the header trap been sprung?
-.@R ?n\"                       \" n1 mode?
-.@R ?o\"                       \" footnote overflow?
-.@R ?R\"                       \" renumbered chapter?
-.@R ?s\"                       \" skip next page?
-.@R ?T\"                       \" inside .TS H?
-.@R ?W\"                       \" wide floating keep at page bottom?
-.@R ?w\"                       \" wide floating keep at page top?
+.@R po\"               \" simulated page offset
+.@R $0\"               \" section depth
+.@R $i\"               \" paragraph base indent
+.@R $p\"               \" numbered paragraph number
+.@R $r\"               \" ratio of vs to ps (may override $v)
+.@R $R\"               \" same for displays (may override $V)
+.@R df\"               \" display font: same as surrounding text
+.@R so\"               \" additional section title offset
+.@R fu\"               \" footnote undent
+.@R bt\"               \" block keep threshold
+.@R *\"                        \" has \** been referenced?
+.@R ?a\"               \" pending floating keep at page top?
+.@R ?b\"               \" pending floating keep at page bottom?
+.@R ?C\"               \" at chapter header?
+.@R ?e\"               \" in equation?
+.@R ?H\"               \" suppress headers and footers next page?
+.@R ?I\"               \" has the header trap been sprung?
+.@R ?n\"               \" n1 mode?
+.@R ?o\"               \" footnote overflow?
+.@R ?R\"               \" renumbered chapter?
+.@R ?s\"               \" skip next page?
+.@R ?T\"               \" inside .TS H?
+.@R ?W\"               \" wide floating keep at page bottom?
+.@R ?w\"               \" wide floating keep at page top?
 .
 .nr fi 0.3i
 .nr _o \n(.o
 .ds #v 0.6m
 .
 .\"                    \" accents
-.ds ' \k_\h'-(\\n(.wu*8/10-\*(#h)'\(aa\h'|\\n_u'
-.ds ` \k_\h'-(\\n(.wu*7/10-\*(#h)'\(ga\h'|\\n_u'
+.ds ' \h'0'\k_\h'-(\\n(.wu*8/10-\*(#h)'\(aa\h'|\\n_u'
+.ds ` \h'0'\k_\h'-(\\n(.wu*7/10-\*(#h)'\(ga\h'|\\n_u'
 .
 .\"                    \" umlaut
-.ds : \k_\h'-(\\n(.wu*8/10-\*(#h+0.1m)'\v'-\*(#v'\z.\h'0.2m'.\h'|\\n_u'\v'\*(#v'
+.ds : \h'0'\k_\h'-(\\n(.wu*8/10-\*(#h+0.1m)'\v'-\*(#v'\z.\h'0.2m'.\h'|\\n_u'\v'\*(#v'
 .
 .\"                    \" circumflex and tilde
-.ds ^ \k_\h'-(\\n(.wu-\*(#h-0.05m)'^\h'|\\n_u'
-.ds ~ \k_\h'-(\\n(.wu-\*(#h-0.05m)'~\h'|\\n_u'
+.ds ^ \h'0'\k_\h'-(\\n(.wu-\*(#h-0.05m)'^\h'|\\n_u'
+.ds ~ \h'0'\k_\h'-(\\n(.wu-\*(#h-0.05m)'~\h'|\\n_u'
 .
 .\"                    \" cedilla and czech
-.ds , \k_\h'-(\\n(.wu)',\h'|\\n_u'
-.ds v \k_\h'-(\\n(.wu*9/10-\*(#h)'\v'-\*(#v'\s-4v\s0\v'\*(#v'\h'|\\n_u'
+.ds , \h'0'\k_\h'-(\\n(.wu)',\h'|\\n_u'
+.ds v \h'0'\k_\h'-(\\n(.wu*9/10-\*(#h)'\v'-\*(#v'\s-4v\s0\v'\*(#v'\h'|\\n_u'
 .
 .\"                    \" Norwegian A or angstrom
-.ds o \k_\h'-(\\n(.wu+\w'\(de'u-\*(#h)/2u'\v'-0.4n'\z\(de\v'0.4n'\h'|\\n_u'
+.ds o \h'0'\k_\h'-(\\n(.wu+\w'\(de'u-\*(#h)/2u'\v'-0.4n'\z\(de\v'0.4n'\h'|\\n_u'
 .
 .\"                    \" there exists, for all
 .ds qe \s-2\v'0.45m'\z\(em\v'-0.625m'\z\(em\v'-0.625m'\(em\v'0.8m'\s0\h'-0.1m'\v'-0.05m'\(br\v'0.05m'\h'0.1m'
 .@U ac
 ..
 .
-.\" EOF
+.\" ====================================================================
+.\" Editor settings
+.\" ====================================================================
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" fill-column: 72
+.\" End:
+.\" vim: set filetype=nroff textwidth=72:
index 72208a1..b3af384 100644 (file)
@@ -1,24 +1,23 @@
-.\" -*- mode: nroff; coding: iso-latin-9; -*-
-.\"
 .\" French localization for groff
 .\"
-.\" Copyright (C) 2006, 2007, 2009 Free Software Foundation, Inc.
+.\" Copyright (C) 2006-2018 Free Software Foundation, Inc.
 .\"   Written by Fabrice Ménard (menard.fabrice@wanadoo.fr)
 .\"
 .\" This file is part of groff.
 .\"
-.\" groff 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
+.\" groff 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.
 .\"
-.\" groff 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.
+.\" groff 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 <http://www.gnu.org/licenses/>.
+.\" along with this program.  If not, see
+.\" <http://www.gnu.org/licenses/>.
 .\"
 .\" Please send comments to menard.fabrice@wanadoo.fr.
 .
 .      \" update the date
 .      ds DY \n[dy] \*[MO] \n[year]
 .      \" set hyphenation flags
-.      nr HY 12
+.      nr HY 4
 .\}
 .
 .
 .mso latin9.tmac
 .
 .
-.\" French hyphenation
+.\" French hyphenation (\lefthyphenmin=2, \righthyphenmin=3)
 .ss 12 0
-.hy 12
+.hy 4
 .hcode à à  À à
 .hcode â â  Â â
 .hcode ç ç  Ç ç
 .hpf hyphen.fr
 .
 .
-.\" man, mdoc and mdoc-old are intentionally left untouched:
-.\" usually these packages are translated in the sources of the documents.
+.\" man, mdoc and mdoc-old are intentionally left untouched: usually
+.\" these packages are translated in the sources of the documents.
+.
+.\" ====================================================================
+.\" Editor settings
+.\" ====================================================================
 .
-.\" end of fr.tmac
+.\" Local Variables:
+.\" mode: nroff
+.\" coding: latin-9
+.\" fill-column: 72
+.\" End:
+.\" vim: set filetype=groff textwidth=72:
diff --git a/tmac/groff_man.7.man b/tmac/groff_man.7.man
new file mode 100644 (file)
index 0000000..ef5f9f5
--- /dev/null
@@ -0,0 +1,2613 @@
+'\" t
+.TH GROFF_MAN @MAN7EXT@ "@MDATE@" "groff @VERSION@"
+.SH NAME
+groff_man \- GNU roff macro package for formatting man pages
+.
+.
+.\" Save and disable compatibility mode (for, e.g., Solaris 10/11).
+.do nr groff_man_C \n[.C]
+.cp 0
+.
+.
+.\" ====================================================================
+.\" Legal Terms
+.\" ====================================================================
+.\"
+.\" Copyright (C) 1999-2018 Free Software Foundation, Inc.
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of
+.\" this manual under the conditions for verbatim copying, provided that
+.\" the entire resulting derived work is distributed under the terms of
+.\" a permission notice identical to this one.
+.\"
+.\" Permission is granted to copy and distribute translations of this
+.\" manual into another language, under the above conditions for
+.\" modified versions, except that this permission notice may be
+.\" included in translations approved by the Free Software Foundation
+.\" instead of in the original English.
+.
+.
+.\" ====================================================================
+.SH SYNOPSIS
+.\" ====================================================================
+.
+.SY "groff \-man"
+.RI [ option
+\&.\|.\|.\&]
+.RI [ input-file
+\&.\|.\|.\&]
+.SY "groff \-m man"
+.RI [ option
+\&.\|.\|.\&]
+.RI [ input-file
+\&.\|.\|.\&]
+.YS
+.
+.
+.\" ====================================================================
+.SH DESCRIPTION
+.\" ====================================================================
+.
+The
+.I man
+macro package for
+.I groff
+is used to produce manual pages
+.\" We use an unbreakable space \~ here to keep the phrase intact for
+.\" its introduction; in subsequent discussion, that is not important.
+(\(lqman\~pages\(rq)
+like the one you are reading.
+.
+GNU
+.IR roff 's
+implementation was written by James Clark.
+.
+.
+.PP
+This document presents the macros thematically to aid learners;
+for those needing only a quick reference,
+the following table lists them alphabetically,
+with cross-references to appropriate subsections below.
+.
+.
+.PP
+.TS
+l l l.
+Macro  Meaning Subsection
+.T&
+lB l l.
+_
+\&.B   Bold    Font style macros
+\&.BI  Bold, italic alternating        Font style macros
+\&.BR  Bold, roman alternating Font style macros
+\&.EE  Example end     Document structure macros
+\&.EX  Example begin   Document structure macros
+\&.I   Italic  Font style macros
+\&.IB  Italic, bold alternating        Font style macros
+\&.IP  Indented paragraph      Paragraph macros
+\&.IR  Italic, roman alternating       Font style macros
+\&.LP  (Left) paragraph        Paragraph macros
+\&.ME  Mail-to end     Hyperlink and email macros
+\&.MT  Mail-to start   Hyperlink and email macros
+\&.OP  (Command-line) option   Command synopsis macros
+\&.P   Paragraph       Paragraph macros
+\&.PP  Paragraph       Paragraph macros
+\&.RB  Roman, bold alternating Font style macros
+\&.RE  Relative-indent end     Document structure macros
+\&.RI  Roman, italic alternating       Font style macros
+\&.RS  Relative-indent start   Document structure macros
+\&.SB  Small bold      Font style macros
+\&.SH  Section heading Document structure macros
+\&.SM  Small   Font style macros
+\&.SS  Subection heading       Document structure macros
+\&.SY  Synopsis start  Command synopsis macros
+\&.TH  Title heading   Document structure macros
+\&.TP  Tagged paragraph        Paragraph macros
+\&.TQ  Tagged paragraph continuation   Paragraph macros
+\&.UE  URL end Hyperlink and email macros
+\&.UR  URL start       Hyperlink and email macros
+\&.YS  Synopsis end    Command synopsis macros
+.TE
+.
+.
+.PP
+Macros whose use we discourage
+.RB ( .AT ,
+.BR .BT ,
+.BR .DT ,
+.BR .HP ,
+.BR .PD ,
+.BR .PT ,
+and
+.BR .UC )
+are described in subsection \(lqDeprecated features\(rq, below.
+.
+.
+.\" ====================================================================
+.SS "Macro reference preliminaries"
+.\" ====================================================================
+.
+Each macro is described in a tagged paragraph.
+.
+Closely related macros,
+such as
+.B .EX
+and
+.BR .EE ,
+are grouped together.
+.
+.
+.PP
+Optional macro arguments are indicated by surrounding them with square
+brackets.
+.
+If a macro accepts multiple arguments,
+arguments containing whitespace must be double-quoted ("one two"),
+to be interpreted correctly.
+.
+Most macro arguments are strings that will be output as text;
+exceptions are noted.
+.
+.
+.PP
+Bear in mind that
+.I groff
+is fundamentally a programming system for typesetting.
+.
+Consequently,
+the verb \(lqto set\(rq is frequently used below in the sense \(lqto
+typeset\(rq.
+.
+.
+.\" ====================================================================
+.SS "Document structure macros"
+.\" ====================================================================
+.
+The highest level of organization of a man page is determined by this
+group of macros.
+.
+.B .TH
+(title heading) identifies the document as a man page and defines
+information enabling its indexing by
+.IR mandb (8)
+or a similar tool.
+.
+.
+Sections
+.RB ( .SH ),
+one of which is mandatory and many of which are standardized,
+facilitate quick location of relevant material by the reader and aid
+the man page writer to discuss all essential aspects of the topic.
+.
+Subsections
+.RB ( .SS )
+are optional and permit sections that grow long to develop in a
+controlled way.
+.
+Many technical discussions require examples;
+lengthy ones,
+especially those reflecting multiple lines of input to or output from
+the system,
+are usefully bracketed by
+.B .EX
+and
+.BR .EE .
+.
+When none of the foregoing meets a structural demand,
+a section of the discussion can be manually indented within
+.B .RS
+and
+.B .RE
+macros.
+.
+.
+.TP
+.BI .TH " title section"\c
+.RI " [" footer-middle ]\c
+.RI " [" footer-outside ]\c
+.RI " [" header-middle ]
+Define the title of the man page as
+.I title
+and the section as
+.IR section .
+.
+See
+.IR man (1)
+for details on the section numbers and suffixes applicable to your
+system.
+.
+.I title
+and
+.I section
+are positioned together at the left and right in the header line
+(with
+.I section
+in parentheses immediately appended to
+.IR title ).
+.
+.I footer-middle
+is centered in the footer line.
+.
+.I footer-outside
+is positioned at the left in the footer line (or at the left on
+even pages and at the right on odd pages if double-sided printing is
+active).
+.
+.I header-middle
+is centered in the header line.
+.
+If
+.I section
+is a simple integer between 1 and\~9 (inclusive),
+or is exactly \(lq3p\(rq,
+there is no need to specify
+.IR header-middle ;
+the macro package will supply text for it.
+.
+.
+.IP
+For HTML output, headers and footers are completely suppressed.
+.
+.
+.IP
+Additionally, this macro starts a new page; the page number is reset
+to\~1
+(unless the
+.B \-rC1
+option is given on the command line).
+.
+This feature is intended only for formatting multiple man pages.
+.
+.
+.IP
+A man page should contain exactly one
+.B .TH
+call at or near the beginning of the file,
+prior to any other macro calls.
+.
+.
+.IP
+By convention,
+.I footer-middle
+is the most recent modification date of the man page source document,
+and
+.I footer-outside
+is the name and version or release of the project providing it.
+.
+.
+.TP
+.BR .SH " ["\c
+.IR heading-text ]
+Set
+.I heading-text
+as a section heading flush left.
+.
+The text following
+.B .SH
+up to the end of the line,
+or the text on the next input line if
+.B .SH
+is given no arguments,
+is set in bold
+(or the font specified by the string register
+.BR HF )
+slightly larger than the base font size.
+.
+Additionally,
+the left margin and indentation affecting subsequent text are reset to
+their default values.
+.
+Text on input lines after
+.I heading-text
+is set as a normal paragraph
+.RB ( .PP ).
+.
+.
+.IP
+The content of
+.I heading-text
+and ordering of sections has been standardized by common practice,
+as has much of the layout of material within sections.
+.
+For example,
+a section called \(lqName\(rq or \(lqNAME\(rq must exist,
+must be the first section after the
+.B .TH
+call,
+and must contain only a line of the form
+.RS \" Invisibly move left margin to current .IP indent.
+.RS \" Now indent further, visibly.
+.IR page-topic [\c
+.BR , " \&.\|.\|.\&]"
+.B \e\-\ \c
+.I summary-description
+.RE \" Move left margin back to .IP indentation.
+for a man page to be properly indexed.
+.
+See
+.IR man (7)
+for the conventions prevailing on your system.
+.RE \" Move left margin back to standard position.
+.
+.
+.TP
+.BR .SS " ["\c
+.IR subheading-text ]
+Set
+.I subheading-text
+as a subsection heading indented (by default) partway between a section
+heading and a normally-indented paragraph
+.RB ( .PP ).
+.
+The text following
+.B .SS
+up to the end of the line,
+or the text on the next input line if
+.B .SS
+is given no arguments,
+is set in bold
+(or the font specified by the string register
+.BR HF )
+at the base font size.
+.
+Additionally,
+the left margin and indentation affecting subsequent text are reset to
+their default values.
+.
+Text on input lines after
+.I subheading-text
+is set as a normal paragraph
+.RB ( .PP ).
+.
+.
+.TP
+.B .EX
+.TQ
+.B .EE
+Begin and end example.
+.
+After
+.BR .EX ,
+filling and hyphenation are disabled and a constant-width (monospaced)
+font is selected.
+.
+Calling
+.B .EE
+enables filling and restores the previous hyphenation setting and font.
+.
+.
+.\" BEGIN EXAMPLE (TODO: move to tutorial/style guide when we have it)
+.IP
+Example regions are useful for formatting code,
+shell sessions,
+and text file contents.
+.
+.
+.\" END EXAMPLE (TODO: move to tutorial/style guide when we have it)
+.IP
+These macros are defined on many (but not all) legacy Unix systems
+running classic
+.IR troff .
+.
+To be certain your page will be portable to those systems, copy
+their definitions from the
+.I \%an\-ext.tmac
+file of a
+.I groff
+installation.
+.
+.
+.TP
+.BR .RS " ["\c
+.IR indent ]
+Move the left margin to the right by the value
+.IR indent ,
+if specified,
+and by a default amount otherwise;
+see subsection \(lqHorizontal and vertical spacing\(rq below.
+.
+Calls to
+.B .RS
+can be nested;
+each call increments by\~1 the indentation level used by
+.BR .RE .
+.
+The indentation level prior to any
+.B .RS
+calls is\~1.
+.
+.
+.TP
+.BR .RE " ["\c
+.IR level ]
+Move the left margin back to that corresponding to indentation level
+.IR level .
+.
+If no argument is given, move the left margin one level back.
+.
+.
+.\" ====================================================================
+.SS "Paragraph macros"
+.\" ====================================================================
+.
+A typical paragraph
+.RB ( .PP )
+is set at the current left margin,
+which by default is indented from the left margin of the output device.
+.
+In man pages and other technical literature,
+definition lists are frequently encountered;
+these can be set as \(lqtagged paragraphs\(rq
+.RB ( .TP
+and
+.BR .TQ ),
+which have one or more leading tags followed by a paragraph that has an
+additional left indent.
+.
+The indented paragraph
+.RB ( .IP )
+macro is useful to continue the indented content of a narrative started
+with
+.BR .TP ,
+or to present an itemized or ordered list.
+.
+.
+.TP
+.B .LP
+.TQ
+.B .PP
+.TQ
+.B .P
+Begin a new paragraph;
+these macros are synonymous.
+.
+They break the output line at the current position,
+followed by a vertical space downward by a default amount
+(which can be changed by the deprecated
+.B .PD
+macro).
+.
+The font size and style are reset to defaults;
+see subsection \(lqFont style macros\(rq below.
+.
+Finally, the left margin and indentation are reset to default values.
+.
+.
+.TP
+.BR .TP " ["\c
+.IR indent ]
+Set a tagged, indented paragraph.
+.
+The input line following this macro,
+known as the
+.IR tag ,
+is printed at the current left margin.
+.
+Subsequent text is indented by
+.IR indent ,
+if specified,
+and by a default amount otherwise;
+see subsection \(lqHorizontal and vertical spacing\(rq below.
+.
+.
+.IP
+If the tag is not as wide as the indentation,
+the paragraph starts on the same line as the tag,
+at the applicable indentation,
+and continues on the following lines.
+.
+Otherwise,
+the descriptive part of the paragraph begins on the line following the
+tag,
+entirely indented.
+.
+The line containing the tag can include a macro call,
+for instance to set the tag in bold with
+.BR .B .
+.
+.
+.IP
+.B .TP
+was used to write the first paragraph of this description of
+.BR .TP ,
+and
+.B .IP
+the subsequent ones.
+.
+.
+.TP
+.B .TQ
+Set an additional tag for a paragraph tagged with
+.BR .TP .
+.
+The pending output line is broken.
+.
+The tag on the input line following this macro and subsequent lines are
+handled as with
+.BR .TP .
+.
+.
+.IP
+This macro is not defined on legacy Unix systems running classic
+.IR troff .
+.
+To be certain your page will be portable to those systems,
+copy its definition from the
+.I \%an\-ext.tmac
+file of a
+.I groff
+installation.
+.
+.
+.IP
+The descriptions of
+.BR .LP ,
+.BR .PP ,
+and
+.B .P
+above were written using
+.B .TP
+and
+.BR .TQ .
+.
+.
+.TP
+.BR .IP " ["\c
+.IR tag "] "\c
+.RI [ indent ]
+Set an indented paragraph with an optional tag.
+.
+The
+.I tag
+and
+.I indent
+arguments,
+if present,
+are handled as with
+.BR .TP ,
+with the exception that the
+.I tag
+argument to
+.B .IP
+cannot include a macro call.
+.
+.
+.\" BEGIN EXAMPLE (TODO: move to tutorial/style guide when we have it)
+.IP
+Two convenient use cases for
+.B .IP
+are
+.
+.
+.RS \" Invisibly move left margin to current .IP indent.
+.RS \" Now indent further, visibly.
+.IP (1) 4n
+to start a new paragraph with the same indentation as the previous
+.B .IP
+or
+.B .TP
+paragraph,
+if no
+.I indent
+argument is given;
+and
+.
+.
+.IP (2)
+to set a paragraph with a short
+.I tag
+that is not semantically important,
+such as a bullet (\(bu)\(emobtained with the \(oq\e(bu\(cq character
+escape\(emor list enumerator,
+as seen in this very paragraph.
+.RE \" Move left margin back to .IP indentation.
+.RE \" Move left margin back to standard position.
+.
+.
+.\" END EXAMPLE (TODO: move to tutorial/style guide when we have it)
+.\" ====================================================================
+.SS "Command synopsis macros"
+.\" ====================================================================
+.
+Command synopses are a staple of section\~1 and\~8 man pages.
+.
+These macros aid you to construct one that has the classical Unix
+appearance.
+.
+Furthermore,
+some tools are able to interpret these macros semantically and treat
+them appropriately for localization and/or presentation.
+.
+A command synopsis is wrapped in
+.BR .SY / .YS
+calls,
+with command-line options of some formats indicated by
+.BR .OP .
+.
+.
+.PP
+These macros are not defined on legacy Unix systems running classic
+.IR troff .
+.
+To be certain your page will be portable to those systems, copy
+their definitions from the
+.I \%an\-ext.tmac
+file of a
+.I groff
+installation.
+.
+.
+.TP
+.BI .SY " command"
+Begin synopsis.
+.
+Hyphenation is turned off.
+.
+The
+.I command
+argument is set in bold.
+.
+The output line is filled as normal,
+but if a break is required,
+subsequent output lines are indented by the width of
+.I command
+plus a space.
+.
+.
+.TP
+.BI .OP " option-name"\/\c
+.RI " [" option-argument ]
+Indicate an optional command parameter called
+.IR option-name ,
+which is set in bold.
+.
+If the option takes an argument, specify
+.I option-argument
+using a noun, abbreviation, or hyphenated noun phrase.
+.
+If present,
+.I option-argument
+is preceded by a space and set in italics.
+.
+Square brackets (in roman) surround both arguments.
+.
+.
+.TP
+.B .YS
+End synopsis.
+.
+Restore indentation and hyphenation to previous values.
+.
+.
+.PP
+Multiple
+.B .SY/.YS
+blocks can be specified,
+for instance to distinguish differing modes of operation of a complex
+command like
+.IR tar (1);
+each will be separated by a paragraph space.
+.
+.
+.PP
+.B .SY
+can also be repeated multiple times before a closing
+.BR .YS ,
+which is useful to indicate synonymous ways of invoking a particular
+mode of operation.
+.
+.
+.\" BEGIN EXAMPLE (TODO: move to tutorial/style guide when we have it)
+.PP
+For example,
+.
+.
+.IP
+.\" from src/roff/groff/groff.1.man
+.EX
+\&.SY groff
+\&.OP \e\-abcegiklpstzCEGNRSUVXZ
+\&.OP \e\-d cs
+\&.OP \e\-f fam
+\&.OP \e\-F dir
+\&.OP \e\-I dir
+\&.OP \e\-K arg
+\&.OP \e\-L arg
+\&.OP \e\-m name
+\&.OP \e\-M dir
+\&.OP \e\-n num
+\&.OP \e\-o list
+\&.OP \e\-P arg
+\&.OP \e\-r cn
+\&.OP \e\-T dev
+\&.OP \e\-w name
+\&.OP \e\-W name
+\&.RI [ file
+\e&.\e|.\e|.\e&]
+\&.YS
+\&.
+\&.SY groff
+\&.B \e\-h
+\&.SY groff
+\&.B \e\-\e\-help
+\&.YS
+.
+.
+.IP
+
+.EE
+.
+.
+.PP
+produces the following output.
+.
+.
+.RS
+.PP
+.SY groff
+.OP \-abcegiklpstzCEGNRSUVXZ
+.OP \-d cs
+.OP \-f fam
+.OP \-F dir
+.OP \-I dir
+.OP \-K arg
+.OP \-L arg
+.OP \-m name
+.OP \-M dir
+.OP \-n num
+.OP \-o list
+.OP \-P arg
+.OP \-r cn
+.OP \-T dev
+.OP \-w name
+.OP \-W name
+.RI [ file
+\&.\|.\|.\&]
+.YS
+.
+.SY groff
+.B \-h
+.SY groff
+.B \-\-help
+.YS
+.RE
+.
+.
+.PP
+Several features of the above example are of note.
+.\" END EXAMPLE (TODO: move to tutorial/style guide when we have it)
+.\" TODO: Some of the normative discussion below can go there, too.
+.
+.
+.IP \(bu
+The empty request (.),
+which does nothing,
+is used for vertical spacing in the input file for readability by the
+document maintainer.
+.
+Do not put empty lines in a
+.I roff
+source document.
+.
+.
+.IP \(bu
+The command and option names are presented in
+.B bold
+to cue the user that they should be input literally.
+.
+.
+.IP \(bu
+Option dashes are specified with the \(oq\e\-\(cq escape sequence;
+this is an important practice to make them clearly visible and to
+facilitate cut-and-paste from the rendered man page to a shell prompt or
+text file.
+.
+.
+.IP \(bu
+Option arguments and command operands are presented in
+.I italics
+(underlined on some output devices, such as terminals and emulators),
+to cue the user that they must be replaced with appropriate text.
+.
+.
+.IP \(bu
+Symbols that are neither to be typed literally nor simply replaced
+appear in the roman style;
+brackets surround optional arguments,
+and an ellipsis indicates that the previous syntactical element may be
+repeated arbitrarily.
+.
+.
+.IP
+Some man pages use a brace-and-pipe notation such as
+.RB \(lq{ \-\-diff | \-\-compare }\(rq
+to indicate that one and only one of the \(oq|\(cq-separated items
+within the braces must be input.
+.
+If this braced construct is furthermore surrounded by square brackets,
+it means that at most one of the items is accepted.
+.
+.
+.IP
+Authors of man pages should note the use of the zero-width space
+escape sequence \(oq\e&\(cq on both sides of the ellipsis;
+this is a good practice to avoid surprises in the event the ellipsis
+gets refilled in your text editor.
+.
+See \(lqPortability\(rq, below.
+.
+The morbidly curious may consult
+.IR groff (7)
+regarding the narrow-space escape sequence \(oq\e|\(cq.
+.
+.
+.\" ====================================================================
+.SS "Hyperlink and email macros"
+.\" ====================================================================
+.
+Email addresses are bracketed with
+.BR .MT / .ME
+and URL hyperlinks with
+.BR .UR / .UE .
+.
+.
+.PP
+These macros are not defined on legacy Unix systems running classic
+.IR troff .
+.
+To be certain your page will be portable to those systems, copy
+their definitions from the
+.I \%an\-ext.tmac
+file of a
+.I groff
+installation.
+.
+.
+.TP
+.BI .MT " address"
+.TQ
+.BR .ME " ["\c
+.IR punctuation ]
+Identify
+.I address
+as an RFC 6068
+.I addr-spec
+for a \(lqmailto:\(rq URI with the text between the two macro
+calls as the link text.
+.
+A
+.I punctuation
+argument to
+.B .ME
+is placed at the end of the link text without intervening space.
+.
+Note that
+.I address
+may not be visible in the output text,
+particularly if the man page is being viewed as HTML.
+.
+On a device that is not a browser,
+.I address
+is set in angle brackets after the link text and before
+.IR punctuation .
+.
+.
+.\" BEGIN EXAMPLE (TODO: move to tutorial/style guide when we have it)
+.IP
+When rendered by
+.I groff
+to a TTY or PostScript output device,
+.RS
+.IP
+.EX
+Contact
+\&.MT fred.foonly@\e:fubar.net
+Fred Foonly
+\&.ME
+for more information.
+.EE
+.RE
+.
+.
+.IP
+displays as: \(lqContact Fred Foonly
+\(lafred.foonly@\:fubar.net\(ra for more information.\(rq.
+.
+.
+.IP
+The use of \(oq\e:\(cq to insert hyphenless discretionary breaks is a
+.I groff
+extension and can be omitted.
+.
+.
+.\" END EXAMPLE (TODO: move to tutorial/style guide when we have it)
+.TP
+.BI .UR " URL"
+.TQ
+.BR .UE " ["\c
+.IR punctuation ]
+Identify
+.I URL
+as an RFC 3986 URI hyperlink with the text between the two macro calls
+as the link text.
+.
+A
+.I punctuation
+argument to
+.B .UE
+is placed at the end of the link text without intervening space.
+.
+Note that
+.I URL
+may not be visible in the output text,
+particularly if the man page is being viewed as HTML.
+.
+On a device that is not a browser,
+.I URL
+is set in angle brackets after the link text and before
+.IR punctuation .
+.
+.
+.\" BEGIN EXAMPLE (TODO: move to tutorial/style guide when we have it)
+.IP
+When rendered by
+.I groff
+to a TTY or PostScript output device,
+.RS
+.IP
+.EX
+The GNU Project of the Free Software Foundation hosts the
+\&.UR https://\e:www.gnu.org/\e:software/\e:groff/
+Groff home page
+\&.UE .
+.EE
+.RE
+.
+.
+.IP
+displays as: \(lqThe GNU Project of the Free Software Foundation hosts
+the Groff home page
+\(lahttps://\:www.gnu.org/\:software/\:groff/\(ra.\(rq.
+.
+.
+.IP
+The use of \(oq\e:\(cq to insert hyphenless discretionary breaks is a
+.I groff
+extension and can be omitted.
+.
+.
+.\" END EXAMPLE (TODO: move to tutorial/style guide when we have it)
+.\" ====================================================================
+.SS "Font style macros"
+.\" ====================================================================
+.
+The
+.I man
+macro package is limited in its font styling options,
+offering only
+.BR bold \~( .B ),
+.I italic\c
+.RB \~( .I ),
+and roman (the default).
+.
+Italic text is usually set underscored instead on terminals and other
+classical
+.IR nroff -style
+output devices.
+.
+The
+.B .SM
+and
+.B .SB
+macros set text in roman or bold, respectively, at a smaller point size;
+these differ visually from regular-sized roman or bold text only on
+.IR troff -style
+output devices.
+.
+The foregoing macros cause word breaks before and after their arguments,
+but it is often necessary to set text in different styles without
+intervening whitespace.
+.
+The macros
+.BR .BI ,
+.BR .BR ,
+.BR .IB ,
+.BR .IR ,
+.BR .RB ,
+and
+.BR .RI ,
+where \(oqB\(cq, \(oqI\(cq, and \(oqR\(cq indicate bold, italic, and
+roman, respectively,
+set their odd- and even-numbered arguments in alternating styles,
+with no whitespace separating them.
+.
+.
+.PP
+Because font styles are presentational rather than semantic,
+conflicting traditions have arisen regarding which font styles should be
+used to mark file or path names,
+environment variables,
+in-line literals,
+and even man page cross-references.
+.
+.
+.PP
+The default font size and family (for
+.I troff
+output devices)
+is 10-point Times.
+.
+The default style is roman.
+.
+.
+.TP
+.BR .B \~[\c
+.IR text ]
+Set
+.I text
+in bold.
+.
+If the macro is given no arguments,
+the text of the next input line is set in bold.
+.
+.
+.\" BEGIN USAGE (TODO: move to tutorial/style guide when we have it)
+.IP
+Use bold
+for literal portions of syntax synopses,
+for command-line options in running text,
+and for literals that are major topics of the subject under discussion;
+for example,
+this page uses bold for macro and register names.
+.
+In
+.BR .EX / .EE
+examples of interactive I/O (such as a shell session),
+set only the user-typed input in bold.
+.
+.
+.
+.\" END USAGE (TODO: move to tutorial/style guide when we have it)
+.TP
+.BR .I \~[\c
+.IR text ]
+Set
+.I text
+in italics.
+.
+If the macro is given no arguments,
+the text of the next input line is set in italics.
+.
+.
+.\" BEGIN USAGE (TODO: move to tutorial/style guide when we have it)
+.IP
+Use italics
+for file and path names,
+for environment variables,
+for enumeration or preprocessor constants in C,
+for variable (user-determined) portions of syntax synopses,
+for the first occurrence only of a technical concept being introduced,
+for names of works of software
+(including commands and functions,
+.\" The following is an interesting exception that seems to have arisen
+.\" organically and nearly universally.
+but excluding names of operating systems or their kernels),
+and anywhere a parameter requiring replacement by the user is
+encountered.
+.
+An exception involves variable text in a context that is already marked
+up in italics,
+such as file or path names with variable components;
+in such cases,
+follow the convention of mathematical typography:
+set the file or path name in italics as usual
+(see
+.B .IR
+below),
+but use roman for the variable part,
+and italics again in running roman text when referring to the variable
+material.
+.
+.
+.\" END USAGE (TODO: move to tutorial/style guide when we have it)
+.TP
+.BR .SM \~[\c
+.IR text ]
+Set
+.I text
+one point size smaller than the default size.
+.
+If the macro is given no arguments,
+the text of the next input line is set smaller.
+.
+.
+.IP
+.IR Note :
+.IR nroff -style
+output devices,
+such as terminals,
+will render
+.I text
+at the normal font size instead.
+.
+Do not rely upon
+.B .SM
+to communicate semantic information distinct from using roman style at
+the normal size;
+it will be hidden from readers using such devices.
+.
+.
+.TP
+.BR .SB \~[\c
+.IR text ]
+Set
+.I text
+in bold,
+one point size smaller than the default size.
+.
+If the macro is given no arguments,
+the text of the next input line is set smaller and in bold.
+.
+.
+.IP
+.IR Note :
+.IR nroff -style
+output devices,
+such as terminals,
+will render
+.I text
+in bold at the normal font size instead.
+.
+Do not rely upon
+.B .SB
+to communicate semantic information distinct from using bold style at
+the normal size;
+it will be hidden from readers using such devices.
+.
+.
+.\" BEGIN USAGE (TODO: move to tutorial/style guide when we have it)
+.PP
+Note what is
+.I not
+prescribed for setting in bold or italics above:
+elements of \(lqsynopsis language\(rq such as ellipses and brackets
+around options;
+proper names and adjectives;
+titles of anything other than works of literature or software;
+identifiers for standards documents or technical reports such as
+CSTR\~#54,
+RFC\~1918,
+Unicode\~11.0,
+or
+POSIX.1-2017;
+acronyms;
+and occurrences after the first of a technical term or piece of jargon.
+.
+Again,
+the names of operating systems and their kernels are,
+by practically universal convention,
+set in roman.
+.
+.
+.PP
+Be frugal with the use of italics for emphasis,
+and particularly with the use of bold.
+.
+Brief runs of literal text,
+such as references to individual characters or short strings,
+including section and subsection headings of man pages,
+are suitable objects for quotation;
+see the
+\(oq\e(lq\(cq,
+\(oq\e(rq\(cq,
+\(oq\e(oq\(cq,
+and
+\(oq\e(cq\(cq
+escapes in subsection \(lqPortability\(rq below.
+.
+.
+.\" END USAGE (TODO: move to tutorial/style guide when we have it)
+.PP
+Unlike the above font style macros,
+the font alternation macros below accept only arguments on the same
+line as the macro call.
+.
+If whitespace is required within one of the arguments,
+first consider whether the same result could be achieved with as much
+clarity by using the single-style macros on separate input lines.
+.
+When it cannot,
+double-quote an argument with one or more embedded space characters.
+.
+Setting all three different styles within one whitespace-delimited word
+presents challenges;
+it is possible with the \(oq\ec\(cq and/or \(oq\ef\(cq escapes,
+but see subsection \(lqPortability\(rq below for caveats.
+.
+.
+.TP
+.BI .BI " bold-text italic-text"\c
+\~\&.\|.\|.\&
+Set each argument in bold and italics, alternately.
+.
+.
+.\" BEGIN EXAMPLE (TODO: move to tutorial/style guide when we have it)
+.RS
+.IP
+.\" from src/roff/troff/troff.1.man
+.EX
+\&.BI \e\-r name = n
+.EE
+.RE
+.
+.
+.\" END EXAMPLE (TODO: move to tutorial/style guide when we have it)
+.TP
+.BI .BR " bold-text roman-text"\c
+\~\&.\|.\|.\&
+Set each argument in bold and roman, alternately.
+.
+.
+.\" BEGIN EXAMPLE (TODO: move to tutorial/style guide when we have it)
+.RS
+.IP
+.\" from tmac/groff_ms.7.man
+.EX
+Any such change becomes effective with the first use of
+\&.BR .NH ,
+\&.I after
+the new alias is defined.
+.EE
+.RE
+.
+.
+.\" END EXAMPLE (TODO: move to tutorial/style guide when we have it)
+.TP
+.BI .IB " italic-text bold-text"\c
+\~\&.\|.\|.\&
+Set each argument in italics and bold, alternately.
+.
+.
+.\" BEGIN EXAMPLE (TODO: move to tutorial/style guide when we have it)
+.RS
+.IP
+.\" from man/groff_tmac.5.man
+.EX
+All macro package files must be named
+\&.IB name .tmac
+to fully use the
+\&.I tmac
+mechanism.
+.EE
+.RE
+.
+.
+.\" END EXAMPLE (TODO: move to tutorial/style guide when we have it)
+.TP
+.BI .IR " italic-text roman-text"\c
+\~\&.\|.\|.\&
+Set each argument in italics and roman, alternately.
+.
+.
+.\" BEGIN EXAMPLE (TODO: move to tutorial/style guide when we have it)
+.RS
+.IP
+.\" from man/groff_out.5.man
+.EX
+This is the first command of the
+\&.IR prologue .
+.EE
+.RE
+.
+.
+.\" END EXAMPLE (TODO: move to tutorial/style guide when we have it)
+.TP
+.BI .RB " roman-text bold-text"\c
+\~\&.\|.\|.\&
+Set each argument in roman and bold, alternately.
+.
+.
+.\" BEGIN EXAMPLE (TODO: move to tutorial/style guide when we have it)
+.RS
+.IP
+.\" from src/preproc/eqn/eqn.1.man
+.EX
+Also, the statement
+\&.RB \e(oq "delim on" \e(cq
+is not handled specially.
+.RE
+.EE
+.
+.
+.\" END EXAMPLE (TODO: move to tutorial/style guide when we have it)
+.TP
+.BI .RI " roman-text italic-text"\c
+\~\&.\|.\|.\&
+Set each argument in roman and italics, alternately.
+.
+.
+.\" BEGIN EXAMPLE (TODO: move to tutorial/style guide when we have it)
+.RS
+.IP
+.\" from contrib/mm/groff_mm.7.man
+.EX
+\&.RI [ file
+\e&.\e|.\e|.\e&]
+.EE
+.RE
+.
+.
+.\" END EXAMPLE (TODO: move to tutorial/style guide when we have it)
+.\" ====================================================================
+.SS "Horizontal and vertical spacing"
+.\" ====================================================================
+.
+The
+.I indent
+argument accepted by
+.BR .RS ,
+.BR .IP ,
+.BR .TP ,
+and the deprecated
+.B .HP
+is a number plus an optional scaling indicator.
+.
+If no scaling indicator is given,
+the
+.I man
+package assumes \(oqn\(cq;
+that is,
+the width of a letter \(lqn\(rq in the font current when the macro is
+called.
+.
+See section \(lqNumerical Expressions\(rq in
+.IR groff (7)
+for further details.
+.
+An indent specified in a call to
+.BR .IP ,
+.BR .TP ,
+or the deprecated
+.B .HP
+persists until
+(1) another of these macros is called with an explicit indent
+argument,
+or (2)
+.BR .SH ,
+.BR .SS ,
+or
+.B .PP
+or its synonyms is called;
+these clear the indent entirely.
+.
+.
+.PP
+Indents set by
+.B .RS
+move the left margin and persist until
+.BR .RS ,
+.BR .RE ,
+.BR .SH ,
+or
+.B .SS
+is called.
+.
+.
+The default indentation,
+exhibited by ordinary
+.B .PP
+paragraphs not within an
+.BR .RS / .RE
+relative indent,
+is 7.2n in
+.I troff
+mode and 7n in
+.I nroff
+mode.
+.
+The HTML output device is an exception;
+it ignores indentation completely.
+.
+This same indentation is used again (additively) for the defaults of
+.BR .IP ,
+.BR .TP ,
+.BR .RS ,
+and the deprecated
+.BR .HP .
+.
+Section headings
+.RB ( .SH )
+are set flush with the left margin of the output device,
+and subsection headings
+.RB ( .SS )
+are indented 3n.
+.
+.
+.PP
+Resist the temptation to mock up tabular or multi-column output with
+ASCII tab characters or the indentation arguments to
+.BR .IP ,
+.BR .TP ,
+.BR .RS ,
+or the deprecated
+.BR .HP ;
+the result may not render comprehensibly on an output device you fail to
+check,
+or which is developed in the future.
+.
+The table preprocessor
+.IR @g@tbl (@MAN1EXT@)
+can likely meet your needs.
+.
+.
+.PP
+The following macros cause a line break with the
+insertion of vertical space:
+.BR .SH ,
+.BR .SS ,
+.BR .TP ,
+.BR .TQ ,
+.B .PP
+(and its synonyms),
+.BR .IP ,
+and the deprecated
+.BR .HP .
+.
+The default inter-section and inter-paragraph spacing is 1\~line in
+.I nroff
+mode,
+and 0.4v in
+.I troff
+mode.
+.
+(The deprecated macro
+.B .PD
+can change this vertical spacing,
+but its use is discouraged.)
+.
+The macros
+.BR .RS ,
+.BR .RE ,
+.BR .EX ,
+and
+.B .EE
+also cause a break but no insertion of vertical space.
+.
+.
+.\" ====================================================================
+.SS "Number registers"
+.\" ====================================================================
+.
+Number registers are described in section \(lqOptions\(rq below.
+.
+.
+.\" ====================================================================
+.SS "String registers"
+.\" ====================================================================
+.
+The following strings are defined.
+.
+.
+.TP
+.B \e*R
+expands to the character escape for the \(lqregistered sign\(rq glyph,
+\(oq\e(rg\(cq,
+if available,
+and \(lq(Reg.)\(rq otherwise.
+.
+.
+.
+.TP
+.B \e*S
+expands to an escape setting the font size to the document default.
+.
+.
+.TP
+.B \e*(HF
+expands to the font identifier used to print headings and subheadings.
+.
+The default is \(oqB\(cq.
+.
+.
+.TP
+.B \e*(lq
+.TQ
+.B \e*(rq
+expand to the character escapes for left and right double-quotation
+marks,
+\(oq\e(lq\(cq and \(oq\e(rq\(cq, respectively.
+.
+.
+.TP
+.B \e*(Tm
+expands to the character escape for the \(lqtrade mark sign\(rq glyph,
+\(oq\e(tm\(cq,
+if available,
+and \(lq(TM)\(rq otherwise.
+.
+.
+.\" ====================================================================
+.SS "Interaction with preprocessors"
+.\" ====================================================================
+.
+When a preprocessor like
+.I @g@tbl
+or
+.I @g@eqn
+is needed,
+a hint can be given to the man page formatter by making the first line
+of a man page look like this:
+.
+.
+.PP
+.RS
+.BI "\(aq\e\(dq " word
+.RE
+.
+.
+.PP
+Note that the line starts with an apostrophe (\(aq),
+not a dot,
+and that a single space character follows the double quote.
+The
+.I word
+consists of one letter for each needed preprocessor:
+\(oqe\(cq for
+.IR @g@eqn ,
+\(oqr\(cq for
+.IR @g@refer ,
+and
+\(oqt\(cq for
+.IR @g@tbl .
+.
+Modern implementations of the
+.I man
+program interpret this first line and automatically call the right
+preprocessor(s).
+.
+.
+.PP
+The usual
+.I tbl
+and
+.I eqn
+macros for table and equation inclusion,
+.BR .TS ,
+.BR .T& ,
+.BR .TE ,
+.BR .EQ ,
+and
+.BR .EN ,
+may be used freely.
+.
+Note that
+.I nroff
+output devices are extremely limited in presentation of mathematical
+equations.
+.
+.
+.\" TODO BEGIN: move subsection to tutorial/style guide when we have it
+.\" ====================================================================
+.SS Portability
+.\" ====================================================================
+.
+The two major syntactical categories of
+.I roff
+languages are requests and escapes.
+.
+Since the
+.I man
+macros are implemented in terms of
+.I groff
+requests and escapes,
+one can,
+in principle,
+supplement the functionality of
+.I man
+with these lower-level elements where necessary.
+.
+.
+.PP
+Note,
+however,
+that using raw
+.I groff
+requests is likely to make your page render poorly on the class of
+viewers that transform it to HTML.
+.
+Some requests make implicit assumptions about things like character
+and page sizes that may not hold in an HTML environment;
+also,
+many of these viewers don't interpret the full
+.I groff
+vocabulary,
+a problem that can lead to portions of your text being silently dropped.
+.
+.
+.PP
+For portability to modern viewers,
+it is best to write your page entirely with the macros described in this
+page
+(except for the ones identified as deprecated,
+which should be avoided).
+.
+The macros we have described as extensions
+.RB ( .EX / .EE ,
+.BR .SY / .OP / .YS ,
+.BR .UR / .UE ,
+and
+.BR .MT / .ME )
+should be used with caution, as they may not yet be built in to
+some viewer that is important to your audience.
+.
+If in doubt, copy the implementation into your page\(emafter the
+.B .TH
+call and the \(lqName\(rq section,
+to accommodate timid
+.I mandb
+implementations.
+.
+.
+.PP
+Similar caveats apply to escapes.
+.
+Some escape sequences are however required for correct typesetting
+even in man pages and usually do not cause portability problems:
+.
+.
+.TP
+.B \e\(dq
+Comment.
+.
+Everything after the double-quote to the end of the input line is
+ignored.
+.
+Whole-line comments are frequently placed immediately after the empty
+request \(oq.\(cq.
+.
+.
+.TP
+.BI \e newline
+Join the next input line to the current one.
+.
+Except for the update of the input line counter (used for diagnostic
+messages and related purposes),
+a series of lines ending in backslash-newline is transparent to
+.IR groff .
+.
+Use this escape to break excessively input long lines for document
+maintenance.
+.
+.
+.TP
+.B \e\(ti
+Adjustable, non-breaking space character.
+.
+Use this escape to prevent a break inside a short phrase or between a
+numerical quantity and its corresponding unit(s).
+.
+.
+.RS
+.IP
+.EX
+Before starting the motor, set the output speed to\e\(ti1.
+There are 1,024\e\(tibytes in 1\e\(tikiB.
+CSTR\e\(ti#8 documents the B language.
+.EE
+.RE
+.
+.
+.TP
+.B \e&
+Zero-width space.
+.
+Append to an input line to prevent an end-of-sentence punctuation
+sequence from being recognized as such, or insert at the beginning of an
+input line to prevent a dot or apostrophe from being interpreted as the
+beginning of a
+.I roff
+request.
+.
+.
+.TP
+.B \e(aq
+ASCII apostrophe.
+.
+Use for syntax elements of programming languages because some
+output devices might replace unescaped apostrophes with right single
+quotation marks.
+.
+.
+.TP
+.B \e(oq
+Opening single quotation mark.
+.
+.TQ
+.B \e(cq
+Closing single quotation mark.
+.
+.
+.IP
+Use these for paired directional single quotes, \(oqlike this\(cq.
+.
+.
+.TP
+.B \e(dq
+ASCII double-quote.
+.
+Sometimes needed after macro calls to prevent the interpretation of the
+ASCII quotation mark character \(oq\(dq\(cq as the beginning or end
+of a macro argument.
+.
+.
+.TP
+.B \e(lq
+Left double quotation mark.
+.
+.TQ
+.B \e(rq
+Right double quotation mark.
+.
+.
+.IP
+Use these for paired directional double quotes, \(lqlike this\(rq.
+.
+.
+.TP
+.B \e(em
+Em-dash.
+.
+Use for an interruption in a sentence\(emsuch as this one.
+.
+.
+.TP
+.B \e(en
+En-dash.
+.
+Use to separate the two ends of a range,
+in particular between numbers,
+for example: the digits 1\(en9.
+.
+.
+.TP
+.B \e(ga
+ASCII grave accent.
+.
+Use for syntax elements of programming languages,
+for example shell command substitutions,
+because some output devices might replace unescaped grave accents with
+left single quotation marks.
+.
+.
+.TP
+.B \e(ha
+ASCII circumflex accent.
+.
+Use for syntax elements of programming languages because some output
+devices might replace unescaped circumflex accents with non-ASCII glyphs
+like the Unicode U+02C6 modifier letter circumflex.
+.
+.
+.TP
+.B \e(ti
+ASCII tilde.
+.
+Use for syntax elements of programming languages because some output
+devices might replace unescaped tildes with non-ASCII glyphs like the
+Unicode U+02DC small tilde.
+.
+.
+.TP
+.B \e\-
+Minus sign.
+.
+Also use this to display syntax elements that require the ASCII
+hyphen-minus character,
+for example command-line options and C language operators.
+.
+The unescaped \(oq\-\(cq input character is not appropriate for
+these cases because it may render as a hyphen on some output devices.
+.
+.
+.TP
+.B \ec
+.
+If this escape sequence occurs at the end of an input line, no white
+space is inserted between the last glyph on it and the first glyph
+resulting from the next input line.
+.
+This is occasionally useful when three different fonts are needed
+in a single word.
+.
+.
+.RS
+.IP
+.\" contrib/pdfmark/pdfroff.1.man
+.EX
+Normally, the final output file should be named
+\&.IB file .pdf\ec
+\e&.
+.EE
+.RE
+.
+.
+.IP
+Note that when using this trick with the
+.B .BI
+or
+.B .RI
+macros, you will need to manually add an italic correction escape
+\(oq\e/\(cq before the \(oq\ec\(cq due to way macros expand their
+arguments.
+.
+.
+.RS
+.IP
+.\" from contrib/mom/groff_mom.7.man
+.EX
+Files processed with
+\&.B groff \e\-mom
+(or
+\&.BI "\e\-m " mom\e/\ec
+) produce PostScript output by default.
+.EE
+.RE
+.
+.
+.IP
+Alternatively,
+and perhaps with better portability,
+the \(oq\ef\(cq font escape sequence can be used;
+see below.
+.
+Using \(oq\ec\(cq to include the output from more than one input line
+into the next-line argument of a
+.B .TP
+macro will render incorrectly with
+.I groff
+1.22.3,
+.I mandoc
+1.14.1,
+older versions of these programs,
+and perhaps with some other formatters.
+.
+.
+.TP
+.B \ee
+Widely used in man pages to represent a backslash output glyph.
+.
+It works reliably as long as the
+.B .ec
+request is not used,
+which should never happen in man pages,
+and it is slightly more portable than the more exact \(oq\e(rs\(cq
+(\(lqreverse solidus\(rq) escape sequence.
+.
+.
+.TP
+.BR \efB ,\  \efI ,\  \efR ,\  \efP
+Switch to bold, italic, roman, or back to the previous font,
+respectively.
+.
+Either these or \(oq\ec\(cq is needed when three different fonts are
+required in a single whitespace-delimited word.
+.
+.
+.RS
+.IP
+.\" second example from contrib/pdfmark/pdfroff.1.man
+.EX
+\&.RB [ \e\-\e\-reference\e\-dictionary=\efI\e,name\e/\efP ]
+.IP
+\&.RB [ \e\-\e\-reference\e\-dictionary=\ec
+\&.IR name ]
+.EE
+.RE
+.
+.
+.IP
+Font escapes may be more portable than \(oq\ec\(cq.
+.
+As shown above,
+it is up to you to account for italic corrections with \(oq\e/\(cq and
+\(oq\e,\(cq, which are themselves
+.I groff
+extensions,
+if desired and if supported by your implementation.
+.
+.
+.IP
+Note that
+\(oq\efP\(cq reliably returns to the style in use immediately preceding
+the previous \(oq\ef\(cq escape only if no
+sectioning,
+paragraph,
+or font face macro calls have intervened.
+.
+.
+.IP
+As long as only two fonts are needed in any single whitespace-delimited
+word,
+font alternation macros like
+.B .BI
+usually result in more readable source code than \(oq\ef\(cq escapes do.
+.
+.
+.PP
+For maximum portability, escape sequences and special characters
+not listed above are better avoided in man pages.
+.
+.
+.\" TODO END: move subsection to tutorial/style guide when we have it
+.\" ====================================================================
+.SS "Deprecated features"
+.\" ====================================================================
+.
+Use of the following is discouraged.
+.
+.
+.TP
+.BR .AT " ["\c
+.IR system " [" release ]]
+Alter the footer for use with AT&T man pages,
+overriding any definition of the
+.I footer-outside
+argument to
+.BR .TH .
+.
+This macro exists only for compatibility; don't use it.
+.
+.
+.IP
+The first argument
+.I system
+can be:
+.
+.
+.RS \" Invisibly move left margin to current .IP indent.
+.RS \" Now indent further, visibly.
+.TP
+3
+7th edition
+.I (default)
+.
+.
+.TP
+4
+System III
+.
+.
+.TP
+5
+System V
+.RE \" Move left margin back to .IP indentation.
+.RE \" Move left margin back to standard position.
+.
+.
+.IP
+The optional second argument
+.I release
+specifies the release number,
+such as in \(lqSystem V Release 3\(rq.
+.
+.
+.TP
+.B .BT
+Set the page footer.
+.
+Redefine this macro to get control of the footer.
+.
+.
+.TP
+.B .DT
+Set tabs every 0.5\~inches.
+.
+Since this macro is always called during a
+.B .TH
+macro, it makes sense to call it only if the tab positions have been
+changed.
+.
+.
+.IP
+Use of this presentation-level macro is deprecated.
+.
+It translates poorly to HTML, under which exact whitespace control
+and tabbing are not readily available.
+.
+Thus, information or distinctions that you use
+.B .DT
+to express are likely to be lost.
+.
+If you feel tempted to use it, you should probably be composing a
+table using
+.IR @g@tbl (@MAN1EXT@)
+markup instead.
+.
+.
+.TP
+.BR .HP " ["\c
+.IR indent ]
+Set up a paragraph with a hanging left indentation.
+.
+The
+.I indent
+argument,
+if present,
+is handled as with
+.BR .TP .
+.
+.
+.IP
+Use of this presentation-level macro is deprecated.
+.
+While it is universally portable to legacy Unix systems, a hanging
+indentation cannot be expressed naturally under HTML, and many
+HTML-based manual viewers simply interpret it as a starter for a
+normal paragraph.
+.
+Thus, any information or distinction you tried to express with the
+indentation may be lost.
+.
+.
+.TP
+.BR .PD " ["\c
+.IR vertical-space ]
+Define the vertical space between paragraphs or (sub)sections.
+.
+The optional argument
+.I vertical-space
+specifies the amount of space;
+the default scaling is \(oqv\(cq).
+.
+Without an argument,
+the spacing is reset to its default value;
+see \(lqHorizontal and vertical spacing\(rq above.
+.
+.
+.IP
+Use of this presentation-level macro is deprecated.
+.
+It translates poorly to HTML, under which exact control of
+inter-paragraph spacing is not readily available.
+.
+Thus, information or distinctions that you use
+.B .PD
+to express are likely to be lost.
+.
+.
+.TP
+.B .PT
+Set the page header.
+.
+Redefine this macro to get control of the header.
+.
+.
+.TP
+.BR .UC " ["\c
+.IR version ]
+Alter the footer for use with BSD man pages,
+overriding any definition of the
+.I footer-outside
+argument to
+.BR .TH .
+.
+This macro exists only for compatibility; don't use it.
+.
+.
+.IP
+The argument
+.I version
+can be:
+.
+.
+.RS \" Invisibly move left margin to current .IP indent.
+.RS \" Now indent further, visibly.
+.TP
+3
+3rd Berkeley Distribution
+.I (default)
+.
+.
+.TP
+4
+4th Berkeley Distribution
+.
+.
+.TP
+5
+4.2 Berkeley Distribution
+.
+.
+.TP
+6
+4.3 Berkeley Distribution
+.
+.
+.TP
+7
+4.4 Berkeley Distribution
+.RE \" Move left margin back to .IP indentation.
+.RE \" Move left margin back to standard position.
+.
+.
+.\" ====================================================================
+.SS "History"
+.\" ====================================================================
+.
+According to its own
+.IR man (7)
+page,
+Version 7 Unix (1979) supported all of the macros described in this page
+not listed as GNU extensions,
+except
+.BR .P ,
+.BR .SB ,
+.BR .SS ,
+and the deprecated
+.BR .AT ,
+.BR .BT ,
+.BR .PT ,
+and
+.BR .UC .
+.
+The only string registers defined were
+.B R
+and
+.BR S ;
+no number registers were documented.
+.
+.
+.\" ====================================================================
+.SH OPTIONS
+.\" ====================================================================
+.
+The following
+.I groff
+options set number registers recognized and used by the
+.I man
+macro package.
+.
+.
+.TP
+.B \-rcR=1
+Continuous rendering.
+.
+Create a single,
+very long page instead of multiple pages.
+.
+This is the default in
+.I nroff
+mode.
+.
+Use
+.B \-rcR=0
+to disable it.
+.
+.
+.TP
+.B \-rC1
+Number pages continuously.
+.
+If more than one man page is given on the command line, number the
+pages continuously, rather than starting each at\~1.
+.
+.
+.TP
+.B \-rD1
+Enable double-sided printing.
+.
+Footers for even and odd pages are formatted differently;
+see the description of
+.B .TH
+in \(lqDocument structure macros\(rq,
+above.
+.
+.
+.TP
+.BI \-rFT= footer-distance
+Set distance of the footer,
+relative to the bottom of the page if negative or relative to the top if
+positive,
+to
+.IR footer-distance .
+.
+The default is \-0.5i.
+.
+.
+.TP
+.BI \-rHY= flags
+Set hyphenation flags.
+.
+Permissible values of
+.I flags
+are documented in section \(lqHyphenation\(rq of
+.IR groff (7).
+.
+The default is\~4 if continuous rendering is enabled
+.RB ( \-rcR=1
+above),
+and\~6 otherwise.
+.
+.
+.TP
+.BI \-rIN= indent
+Set the body text indentation (for normal paragraphs) to
+.IR indent .
+.
+See \(lqHorizontal and vertical spacing\(rq above for the default
+indentation value.
+.
+For
+.IR nroff ,
+.I indent
+should always be an integer multiple of unit \(oqn\(cq to get consistent
+indentation.
+.
+.
+.TP
+.BI \-rLL= line-length
+Set line length.
+.
+If this option is not given, the line length is set to respect any
+value set by a prior \(lq.ll\(rq request (which
+.I must
+be in effect when the
+.B .TH
+macro is invoked),
+if this differs from the built-in default for the formatter;
+otherwise it defaults to 78n in
+.I nroff
+mode and 6.5i in
+.I troff
+mode.
+.
+.
+.IP
+Note that the use of a \(lq.ll\(rq request to initialize the line
+length is supported for backward compatibility with some versions of
+the
+.I man
+program;
+direct initialization of the
+.B LL
+register should
+.I always
+be preferred to the use of such a request.
+.
+In particular, note that a \(lq.ll\~65n\(rq request does
+.I not
+preserve the normal
+.I nroff
+default line length
+(the
+.I man
+default initialization to 78n prevails),
+whereas the
+.B \-rLL=65n
+option,
+or an equivalent \(lq.nr\~LL\~65n\(rq request preceding the use of the
+.B .TH
+macro,
+.I does
+set a line length of 65n.
+.
+.
+.TP
+.BI \-rLT= title-length
+Set title length.
+.
+If this option is not given, the title length defaults to the line
+length.
+.
+.
+.TP
+.BI \-rP n
+Start enumeration of pages at
+.I n
+rather than\~1.
+.
+.
+.TP
+.BI \-rS point-size
+Use
+.I point-size
+as the base document font size.
+.
+Acceptable values are 10, 11, or 12.
+.
+See subsection \(lqFont style macros\(rq above for the default.
+.
+.
+.TP
+.BI \-rSN= subsection-indent
+Set subsection indentation to
+.IR subsection-indent .
+.
+See \(lqHorizontal and vertical spacing\(rq above for the default
+indentation value.
+.
+.
+.TP
+.BI \-rX p
+After
+.RI page " p" ,
+number pages as
+.IR p a,
+.IR p b,
+.IR p c,
+and so forth.
+.
+For example, the option
+.B \-rX2
+produces the following page
+numbers: 1, 2, 2a, 2b, 2c, and so on.
+.
+.
+.\" ====================================================================
+.SH FILES
+.\" ====================================================================
+.
+.TP
+.I @MACRODIR@/\:man.tmac
+.TQ
+.I @MACRODIR@/\:an.tmac
+These are wrapper files to call
+.IR andoc.tmac .
+.
+.
+.TP
+.I @MACRODIR@/\:andoc.tmac
+This brief
+.I groff
+program detects whether the
+.I man
+or
+.I mdoc
+macro package is being used by a document and loads the correct macro
+definitions,
+taking advantage of the fact that pages using them must call
+.B .TH
+or
+.BR .Dd ,
+respectively,
+as their first macro.
+.
+Because the wrappers above load this file,
+a
+.I man
+program or user typing,
+for example,
+\(lqgroff \-man page.1\(rq,
+need not know which package the file
+.I page.1
+uses.
+.
+Multiple man pages, in either format, can be handled.
+.
+.
+.TP
+.I @MACRODIR@/\:an\-old.tmac
+Most
+.I man
+macros are contained in this file.
+.
+It also loads the GNU extensions from
+.I an\-ext.tmac
+(see below).
+.
+.
+.TP
+.I @MACRODIR@/\:an\-ext.tmac
+The extension macro definitions for
+.BR .SY ,
+.BR .OP ,
+.BR .YS ,
+.BR .TQ ,
+.BR .EX / .EE ,
+.BR .UR / .UE ,
+and
+.BR .MT / .ME
+are contained in this file,
+which is written in classic
+.I troff
+and permissively licensed\(emnot copylefted.
+.
+Man page authors concerned about portability to legacy Unix systems are
+encouraged to copy these definitions into their pages,
+and maintainers of
+.I troff
+implementations or work-alike systems that format man pages are
+encouraged to re-use them.
+.
+.
+.IP
+Note that the definitions for these macros are read after the call of
+.BR .TH ,
+so they will replace any macros of the same names preceding it in your
+file.
+.
+If you use your own implementations of these macros,
+they must be defined after calling
+.B .TH
+to have any effect.
+.
+.
+.TP
+.I @LOCALMACRODIR@/\:man.local
+Local changes and customizations should be put into this file.
+.
+.
+.\" ====================================================================
+.SH NOTES
+.\" ====================================================================
+.
+Some tips on troubleshooting your man pages follow.
+.
+.
+.TP
+.RB \(bu " .RS" " doesn't indent relative to my indented paragraph"
+The
+.B .RS
+macro sets the indentation relative to the amount of a
+.I normal
+paragraph
+.RB ( .PP
+and its synonyms).
+.
+The same default indentation amount is used for
+.BR .RS ,
+.BR .IP ,
+.BR .TP ,
+and the deprecated
+.BR .HP .
+.
+If you need to start an indent relative to an indented paragraph,
+call
+.B .RS
+repeatedly until an acceptable indentation is achieved,
+or give
+.B .RS
+an indentation argument that is at least as much as the paragraph's
+indentation amount relative to an adjacent
+.B .PP
+paragraph.
+.
+See \(lqHorizontal and vertical spacing\(rq above for the values.
+.
+.
+.TP
+.RB \(bu " .RE" " doesn't reset the indent to the expected level"
+.TQ
+\(bu warning: scale indicator invalid in this context
+.TQ
+\(bu warning: number register \(aqan\-saved\-margin\c
+.IR n "\(aq not defined"
+.TQ
+\(bu warning: number register 'an\-saved\-prevailing\-indent\c
+.IR n "\(aq not defined"
+The
+.B .RS
+macro takes an indentation
+.I amount
+as an argument;
+the
+.B .RE
+macro's argument is a specific indentation
+.IR level .
+.B .RE\~1
+goes to the level before any
+.B .RS
+macros were called,
+.B .RE\~2
+goes to the level of the first
+.B .RS
+call you made,
+and so forth.
+.
+If you desire symmetry in your macro calls,
+simply issue one
+.B .RE
+without an argument
+for each
+.B .RS
+that precedes it.
+.
+.
+.IP
+After calls to the
+.B .SH
+and
+.B .SS
+sectioning macros,
+all relative indents are cleared and calls to
+.B .RE
+have no effect.
+.
+.
+.\" ====================================================================
+.SH AUTHORS
+.\" ====================================================================
+.
+The GNU version of the
+.I man
+macro package was written by James Clark and contributors.
+.
+The extension macros were written by
+.MT wl@\:gnu.org
+Werner Lemberg
+.ME
+and
+.MT esr@\:thyrsus.com
+Eric S.\& Raymond
+.ME .
+.
+.
+.PP
+This document was originally written for the Debian GNU/Linux system by
+.MT sgk@\:debian.org
+Susan G.\& Kleinmann
+.ME .
+.
+It was corrected and updated by Werner Lemberg and G.\& Branden
+Robinson.
+.
+The extension macros were documented by Eric S.\& Raymond;
+he also originated the portability section,
+to which Ingo Schwarze contributed most of the material on escape
+sequences.
+.
+.
+.\" ====================================================================
+.SH "SEE ALSO"
+.\" ====================================================================
+.
+.IR "Groff: The GNU Implementation of troff" ,
+by Trent A.\& Fisher and Werner Lemberg,
+is the main
+.I groff
+documentation.
+.
+You can browse it interactively with \(lqinfo groff\(rq.
+.
+.
+.PP
+.IR @g@tbl (@MAN1EXT@),
+.IR @g@eqn (@MAN1EXT@),
+and
+.IR @g@refer (@MAN1EXT@)
+are preprocessors used with man pages.
+.
+.
+.PP
+.IR man (1)
+describes the man page formatter on your system.
+.
+.
+.PP
+.IR groff_mdoc (@MAN7EXT@)
+describes the
+.I groff
+version of the BSD-originated alternative macro package for man pages.
+.
+.
+.PP
+.IR groff (@MAN7EXT@),
+.IR groff_char (@MAN7EXT@),
+.IR man (7)
+.
+.
+.\" Restore compatibility mode (for, e.g., Solaris 10/11).
+.cp \n[groff_man_C]
+.
+.
+.\" ====================================================================
+.\" ### Emacs settings:
+.\" Local Variables:
+.\" mode: nroff
+.\" fill-column: 72
+.\" End:
+.\" vim: set filetype=groff textwidth=72:
diff --git a/tmac/groff_man.man b/tmac/groff_man.man
deleted file mode 100644 (file)
index 85b37ba..0000000
+++ /dev/null
@@ -1,1276 +0,0 @@
-.\" -*- nroff -*-
-.TH GROFF_MAN @MAN7EXT@ "@MDATE@" "Groff Version @VERSION@"
-.SH NAME
-groff_man \- groff man macros to support generation of man pages
-.
-.
-.\" --------------------------------------------------------------------
-.\" Legal Terms
-.\" --------------------------------------------------------------------
-.
-.de co
-Copyright \[co] 1999-2014 Free Software Foundation, Inc.
-
-Permission is granted to make and distribute verbatim copies of this
-manual provided the copyright notice and this permission notice are
-preserved on all copies.
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the
-entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
-Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be included in
-translations approved by the Free Software Foundation instead of in
-the original English.
-..
-.
-.de au
-This manual page was originally written for the Debian GNU/Linux
-system by
-.MT sgk@debian.org
-Susan G.\& Kleinmann
-.ME .
-
-It was corrected and updated by
-.MT wl@gnu.org
-Werner Lemberg
-.ME .
-
-The extension macros were documented (and partly designed) by
-.MT esr@thyrsus.com
-Eric S.\& Raymond
-.ME ;
-he also wrote the portability advice.
-..
-.
-.\" --------------------------------------------------------------------
-.SH SYNOPSIS
-.\" --------------------------------------------------------------------
-.
-.SY "groff\ \-man"
-.RI [ options
-.IR .\|.\|.\& ]
-.RI [ files
-.IR .\|.\|.\& ]
-.
-.SY "groff\ \-m\ man"
-.RI [ options
-.IR .\|.\|.\& ]
-.RI [ files
-.IR .\|.\|.\& ]
-.YS
-.
-.
-.\" --------------------------------------------------------------------
-.SH DESCRIPTION
-.\" --------------------------------------------------------------------
-.
-The
-.B man
-macros used to generate
-.I man\~pages
-with
-.I groff
-were written by James Clark.
-.
-This document provides a brief summary of the use of each macro in that
-package.
-.
-.
-.\" --------------------------------------------------------------------
-.SH OPTIONS
-.\" --------------------------------------------------------------------
-.
-The
-.B man
-macros understand the following command line options (which define
-various registers).
-.
-.
-.TP
-.B \-rcR=1
-This option (the default if in nroff mode) creates a single, very
-long page instead of multiple pages.
-.
-Say
-.B \-rcR=0
-to disable it.
-.
-.
-.TP
-.B \-rC1
-If more than one manual page is given on the command line, number the
-pages continuously, rather than starting each at\~1.
-.
-.
-.TP
-.B \-rD1
-Double-sided printing.
-.
-Footers for even and odd pages are formatted differently.
-.
-.
-.TP
-.BI \-rFT= dist
-Set distance of the footer relative to the bottom of the page if
-negative or relative to the top if positive.
-.
-The default is \-0.5i.
-.
-.
-.TP
-.BI \-rHY= flags
-Set hyphenation flags.
-.
-Possible values are 1\~to hyphenate without restrictions, 2\~to not
-hyphenate the last word on a page, 4\~to not hyphenate the last two
-characters of a word, and 8\~to not hyphenate the first two characters
-of a word.
-.
-These values are additive; the default is\~14.
-.
-.
-.TP
-.BI \-rIN= width
-Set body text indentation to
-.IR width .
-.
-The default is 7n for
-.IR nroff ,
-7.2n for
-.IR troff .
-.
-For
-.IR nroff ,
-this value should always be an integer multiple of unit \[oq]n\[cq] to
-get consistent indentation.
-.
-.
-.TP
-.BI \-rLL= line-length
-Set line length.
-.
-If this option is not given, the line length is set to respect any
-value set by a prior \[oq].ll\[cq] request (which
-.I must
-be in effect when the \[oq].TH\[cq] macro is invoked),
-if this differs from the built\-in default for the formatter;
-otherwise it defaults to 78n in
-.I nroff
-mode and 6.5i in
-.I troff
-mode.
-.
-.
-.IP
-Note that the use of a \[oq].ll\[cq] request to initialize the line
-length is supported for backward compatibility with some versions of
-the
-.B man
-program;
-direct initialization of the \[oq]LL\[cq] register should
-.I always
-be preferred to the use of such a request.
-.
-In particular, note that a \[oq].ll\ 65n\[cq] request does
-.I not
-preserve the normal
-.I nroff
-default line length,
-(the
-.B man
-default initialization to 78n prevails), whereas, the
-\[oq]\-rLL=65n\[cq] option, or an equivalent \[oq].nr\ LL\ 65n\[cq]
-request preceding the use of the \[oq]TH\[cq] macro,
-.I does
-set a line length of 65n.
-.
-.
-.TP
-.BI \-rLT= title-length
-Set title length.
-.
-If this option is not given, the title length defaults to the line
-length.
-.
-.
-.TP
-.BI \-rP nnn
-Enumeration of pages start with
-.I nnn
-rather than with\~1.
-.
-.
-.TP
-.BI \-rS xx
-Base document font size is
-.I xx
-points
-.RI ( xx
-can be 10, 11, or\~12) rather than 10\~points.
-.
-.
-.TP
-.BI \-rSN= width
-Set sub-subheading indentation to
-.IR width .
-The default is 3n.
-.
-.
-.TP
-.BI \-rX nnn
-After page\~\c
-.IR nnn ,
-number pages as
-.IR nnn a,
-.IR nnn b,
-.IR nnn c,
-etc.
-.
-For example, the option \[oq]\-rX2\[cq] produces the following page
-numbers: 1, 2, 2a, 2b, 2c, etc.
-.
-.
-.\" --------------------------------------------------------------------
-.SH USAGE
-.\" --------------------------------------------------------------------
-.
-This section describes the available macros for manual pages.
-.
-For further customization, put additional macros and requests into the
-file
-.BR man.local ,
-which is loaded immediately after the
-.B man
-package.
-.
-.
-.TP
-.B .EX
-.TQ
-.B .EE
-Example/End Example.
-.
-After
-.BR .EX ,
-filling is disabled and the font is set to constant-width.
-.
-This is useful for formatting code, command, and configuration-file
-examples.
-.
-The
-.B EE
-macro restores filling and restores the previous font.
-.
-.
-.IP
-These macros are defined on many (but not all) legacy Unix systems
-running classic troff.
-.
-To be certain your page will be portable to those systems, copy
-their definitions from the
-.B \%an-ext.tmac
-file of a
-.BR groff
-installation.
-.
-.
-.TP
-.BI .HP " \fR[\fPnnn\fR]\fP"
-Set up a paragraph with hanging left indentation.
-.
-The indentation is set to
-.I nnn
-if that argument is supplied (the default unit is \[oq]n\[cq] if
-omitted), otherwise it is set to the previous indentation value
-specified with
-.BR .TP ,
-.BR .IP ,
-or
-.B .HP
-(or to the default value if none of them have been used yet).
-.
-Font size and face are reset to its default values.
-.
-The following paragraph illustrates the effect of this macro with
-hanging indentation set to\~4 (enclosed by
-.B .RS
-and
-.B .RE
-to set the left margin temporarily to the current indentation):
-.
-.
-.RS
-.HP 4
-This is a paragraph following an invocation of the
-.B HP
-macro.
-.
-As you can see, it produces a paragraph where all lines but the first
-are indented.
-.RE
-.
-.
-.IP
-Use of this presentation-level macro is deprecated.
-.
-While it is universally portable to legacy Unix systems, a hanging
-indentation cannot be expressed naturally under HTML, and many
-HTML-based manual viewers simply interpret it as a starter for a
-normal paragraph.
-.
-Thus, any information or distinction you tried to express with the
-indentation may be lost.
-.
-.
-.TP
-.BI .IP " \fR[\fPdesignator\fR]\fP \fR[\fPnnn\fR]\fP"
-Set up an indented paragraph, using
-.I designator
-as a tag to mark its beginning.
-.
-The indentation is set to
-.I nnn
-if that argument is supplied (the default unit is \[oq]n\[cq] if
-omitted), otherwise it is set to the previous indentation value
-specified with
-.BR .TP ,
-.BR .IP ,
-or
-.B .HP
-(or to the default value if none of them have been used yet).
-.
-Font size and face of the paragraph (but not the designator) are reset
-to its default values.
-.
-.
-.IP
-To start an indented paragraph with a particular indentation but
-without a designator, use \[oq]""\[cq] (two doublequotes) as the
-second argument.
-.
-.
-.IP
-For example, the following paragraphs were all set up with bullets as
-the designator, using \[oq].IP\ \\(bu\ 4\[cq].
-.
-The whole block has been enclosed with
-.B .RS
-and
-.B .RE
-to set the left margin temporarily to the current indentation value.
-.
-.
-.RS
-.IP \(bu 4
-.B IP
-is one of the three macros used in the
-.B man
-package to format lists.
-.
-.
-.IP \(bu 4
-.B HP
-is another.
-.
-This macro produces a paragraph with a left hanging indentation.
-.
-.
-.IP \(bu 4
-.B TP
-is another.
-.
-This macro produces an unindented label followed by an indented
-paragraph.
-.RE
-.
-.
-.TP
-.B .LP
-.TQ
-.B .PP
-.TQ
-.B .P
-These macros are mutual aliases.
-.
-Any of them causes a line break at the current position, followed by a
-vertical space downwards by the amount specified by the
-.B PD
-macro.
-.
-The font size and shape are reset to the default value (normally 10pt
-Roman).
-.
-Finally, the current left margin and the indentation is reset to the
-default values.
-.
-.
-.TP
-.BI .RE " \fR[\fPnnn\fR]\fP"
-This macro moves the left margin back to level
-.IR nnn ,
-restoring the previous left margin.
-.
-If no argument is given, it moves one level back.
-.
-The first level (i.e., no call to
-.B .RS
-yet) has number\~1, and each call to
-.B .RS
-increases the level by\~1.
-.
-.
-.TP
-.BI .RS " \fR[\fPnnn\fR]\fP"
-This macro moves the left margin to the right by the value
-.I nnn
-if specified (default unit is \[oq]n\[cq]); otherwise it is set to the
-previous indentation value specified with
-.BR .TP ,
-.BR .IP ,
-or
-.B .HP
-(or to the default value if none of them have been used yet).
-.
-The indentation value is then set to the default.
-.
-.
-.IP
-Calls to the
-.B RS
-macro can be nested.
-.
-.
-.TP
-.BI .SH " \fR[\fPtext for a heading\fR]\fP"
-Set up an unnumbered section heading sticking out to the left.
-.
-Prints out all the text following
-.B .SH
-up to the end of the line (or the text in the next input line if there
-is no argument to
-.BR .SH )
-in bold face
-(or the font specified by the string
-.BR HF ),
-one size larger than the base document size.
-.
-Additionally, the left margin and the indentation for the following
-text is reset to the default values.
-.
-.
-.TP
-.BI .SS " \fR[\fPtext for a heading\fR]\fP"
-Set up a secondary, unnumbered section heading.
-.
-Prints out all the text following
-.B .SS
-up to the end of the line (or the text in the next input line if there
-is no argument to
-.BR .SS )
-in bold face
-(or the font specified by the string
-.BR HF ),
-at the same size as the base document size.
-.
-Additionally, the left margin and the indentation for the following
-text is reset to the default values.
-.
-.
-.TP
-.BI .TH " title section \fR[\fPextra1\fR]\fP \fR[\fPextra2\fR]\fP \fR[\fPextra3\fR]"
-Set the title of the
-.I man\~page
-to
-.I title
-and the section to
-.IR section ,
-which must take on a value between 1 and\~8.
-.
-The value
-.I section
-may also have a string appended, e.g.\& \[oq].pm\[cq], to indicate a
-specific subsection of the
-.IR \%man\~pages .
-.
-Both
-.I title
-and
-.I section
-are positioned at the left and right in the header line (with
-.I section
-in parentheses immediately appended to
-.IR title .
-.
-.I extra1
-is positioned in the middle of the footer line.
-.
-.I extra2
-is positioned at the left in the footer line (or at the left on
-even pages and at the right on odd pages if double-sided printing is
-active).
-.
-.I extra3
-is centered in the header line.
-.
-.
-.IP
-For HTML output, headers and footers are completely suppressed.
-.
-.
-.IP
-Additionally, this macro starts a new page; the new line number is\~1
-again (except if the \[oq]\-rC1\[cq] option is given on the command
-line) -- this feature is intended only for formatting multiple
-.IR \%man\~pages ;
-a single
-.I \%man\~page
-should contain exactly one
-.B TH
-macro at the beginning of the file.
-.
-.
-.TP
-.BI .TP " \fR[\fPnnn\fR]\fP"
-Set up an indented paragraph with label.
-.
-The indentation is set to
-.I nnn
-if that argument is supplied (the default unit is \[oq]n\[cq] if omitted),
-otherwise it is set to the previous indentation value specified with
-.BR .TP ,
-.BR .IP ,
-or
-.B .HP
-(or to the default value if none of them have been used yet).
-.
-.
-.IP
-The first input line of text following this macro is interpreted as a
-string to be printed flush-left, as it is appropriate for a label.
-.
-It is not interpreted as part of a paragraph, so there is no attempt
-to fill the first line with text from the following input lines.
-.
-Nevertheless, if the label is not as wide as the indentation the
-paragraph starts at the same line (but indented), continuing on the
-following lines.
-.
-If the label is wider than the indentation the descriptive part of the
-paragraph begins on the line following the label, entirely indented.
-.
-Note that neither font shape nor font size of the label is set to a
-default value; on the other hand, the rest of the text has default
-font settings.
-.
-.
-.IP
-The
-.B TP
-macro is the macro used for the explanations you are just reading.
-.
-.
-.TP
-.B .TQ
-The
-.B TQ
-macro sets up header continuation for a
-.B TP
-macro.
-.
-With it, you can stack up any number of labels (such as in a
-glossary, or list of commands) before beginning the indented
-paragraph.
-.
-For an example, look up the documentation of the
-.BR LP ,
-.BR PP ,
-and
-.BR P
-macros.
-.
-.
-.IP
-This macro is not defined on legacy Unix systems running classic
-troff.
-.
-To be certain your page will be portable to those systems,
-copy its definition from the
-.B \%an-ext.tmac
-file of a
-.BR groff
-installation.
-.
-.
-.PP
-To summarize, the following macros cause a line break with the
-insertion of vertical space (which amount can be changed with the
-.B PD
-macro):
-.BR SH ,
-.BR SS ,
-.BR TP ,
-.BR TQ ,
-.B LP
-.RB ( PP ,
-.BR P ),
-.BR IP ,
-and
-.BR HP .
-The macros
-.BR RS ,
-.BR RE ,
-.BR EX ,
-and
-.B EE
-also cause a break but no insertion of vertical space.
-.
-.
-.\" --------------------------------------------------------------------
-.SH "MACROS TO SET FONTS"
-.\" --------------------------------------------------------------------
-.
-The standard font is Roman; the default text size is 10\~point.
-.
-.
-.TP
-.BI .B " \fR[\fPtext\fR]\fP"
-Causes
-.I text
-to appear in bold face.
-.
-If no text is present on the line where the macro is called the text
-of the next input line appears in bold face.
-.
-.
-.TP
-.BI ".BI " text
-Causes text on the same line to appear alternately in bold face and
-italic.
-.
-The text must be on the same line as the macro call.
-.
-Thus
-.
-.
-.RS
-.IP
-\&.BI this "word and" that
-.
-.
-.PP
-would cause \[oq]this\[cq] and \[oq]that\[cq] to appear in bold face,
-while \[oq]word and\[cq] appears in italics.
-.RE
-.
-.
-.TP
-.BI ".BR " text
-Causes text on the same line to appear alternately in bold face and
-roman.
-.
-The text must be on the same line as the macro call.
-.
-.
-.TP
-.BI .I " \fR[\fPtext\fR]\fP"
-Causes
-.I text
-to appear in italic.
-.
-If no text is present on the line where the macro is called the text
-of the next input line appears in italic.
-.
-.
-.TP
-.BI ".IB " text
-Causes text to appear alternately in italic and bold face.
-.
-The text must be on the same line as the macro call.
-.
-.
-.TP
-.BI ".IR " text
-Causes text on the same line to appear alternately in italic and
-roman.
-.
-The text must be on the same line as the macro call.
-.
-.
-.TP
-.BI ".RB " text
-Causes text on the same line to appear alternately in roman and bold
-face.
-.
-The text must be on the same line as the macro call.
-.
-.
-.TP
-.BI ".RI " text
-Causes text on the same line to appear alternately in roman and
-italic.
-.
-The text must be on the same line as the macro call.
-.
-.
-.TP
-.BI .SB " \fR[\fPtext\fR]\fP"
-Causes the text on the same line or the text on the next input line to
-appear in boldface font, one point size smaller than the default font.
-.
-.
-.TP
-.BI .SM " \fR[\fPtext\fR]\fP"
-Causes the text on the same line or the text on the next input line to
-appear in a font that is one point size smaller than the default font.
-.
-.
-.\" --------------------------------------------------------------------
-.SH "MACROS TO DESCRIBE HYPERLINKS AND EMAIL ADDRESSES"
-.\" --------------------------------------------------------------------
-.
-The following macros are not defined on legacy Unix systems
-running classic troff.
-.
-To be certain your page will be portable to those systems, copy
-their definitions from the
-.B \%an-ext.tmac
-file of a
-.BR groff
-installation.
-.
-.
-.PP
-Using these macros helps ensure that you get hyperlinks when your
-manual page is rendered in a browser or other program that is
-Web-enabled.
-.
-.
-.TP
-.BI .MT " address"
-.TQ
-.BI .ME " \fR[\fPpunctuation\fR]\fP"
-Wrap an email address.
-.
-The argument of
-.B .MT
-is the address; text following, until
-.BR .ME ,
-is a name to be associated with the address.
-.
-Any argument to the
-.B ME
-macro is pasted to the end of the link text.
-.
-On a device that is not a browser,
-.
-.
-.RS
-.IP
-.EX
-contact
-\&.MT fred.foonly@\e:fubar.net
-Fred Foonly
-\&.ME
-for more information
-.EE
-.RE
-.
-.
-.IP
-usually displays like this: \[lq]contact Fred Foonly
-<fred.foonly@\:fubar.net> for more information\[rq].
-.
-.
-.IP
-The use of
-.B \e:
-to insert hyphenless breakpoints is a groff extension and can
-be omitted.
-.
-.
-.TP
-.BI .UR " URL"
-.TQ
-.BI .UE " \fR[\fPpunctuation\fR]\fP"
-Wrap a World Wide Web hyperlink.
-.
-The argument to
-.B .UR
-is the URL; thereafter, lines until
-.B .UE
-are collected and used as the link text.
-.
-Any argument to the
-.B UE
-macro is pasted to the end of the text.
-.
-On a device that is not a browser,
-.
-.
-.RS
-.IP
-.EX
-this is a link to
-\&.UR http://\e:randomsite.org/\e:fubar
-some random site
-\&.UE ,
-given as an example
-.EE
-.RE
-.
-.
-.IP
-usually displays like this: \[lq]this is a link to some random
-site <http://\:randomsite.org/\:fubar>, given as an example\[rq].
-.
-.
-.IP
-The use of
-.B \e:
-to insert hyphenless breakpoints is a groff extension and can be
-omitted.
-.
-.
-.\" --------------------------------------------------------------------
-.SH "MACROS TO DESCRIBE COMMAND SYNOPSES"
-.\" --------------------------------------------------------------------
-.
-The following macros are not defined on legacy Unix systems
-running classic troff.
-.
-To be certain your page will be portable to those systems, copy their
-definitions from the
-.B \%an-ext.tmac
-file of a
-.BR groff
-installation.
-.
-.
-.PP
-These macros are a convenience for authors.
-.
-They also assist automated translation tools and help browsers in
-recognizing command synopses and treating them differently from
-running text.
-.
-.
-.TP
-.BI .OP " key value"
-Describe an optional command argument.
-.
-The arguments of this macro are set surrounded by option braces
-in the default Roman font; the first argument is printed with
-a bold face, while the second argument is typeset as italic.
-.
-.
-.TP
-.BI .SY " command"
-Begin synopsis.
-.
-Takes a single argument, the name of a command.
-.
-Text following, until closed by
-.BR .YS ,
-is set with a hanging indentation with the width of
-.I command
-plus a space.
-.
-This produces the traditional look of a Unix command synopsis.
-.
-.
-.TP
-.B .YS
-This macro restores normal indentation at the end of a command
-synopsis.
-.
-.
-.PP
-Here is a real example:
-.
-.
-.IP
-.EX
-\&.SY groff
-\&.OP \e-abcegiklpstzCEGNRSUVXZ
-\&.OP \e-d cs
-\&.OP \e-f fam
-\&.OP \e-F dir
-\&.OP \e-I dir
-\&.OP \e-K arg
-\&.OP \e-L arg
-\&.OP \e-m name
-\&.OP \e-M dir
-\&.OP \e-n num
-\&.OP \e-o list
-\&.OP \e-P arg
-\&.OP \e-r cn
-\&.OP \e-T dev
-\&.OP \e-w name
-\&.OP \e-W name
-\&.RI [ file
-\&.IR .\e|.\e|. ]
-\&.YS
-.EE
-.
-.
-.PP
-produces the following output:
-.
-.
-.RS
-.PP
-.SY groff
-.OP \-abcegiklpstzCEGNRSUVXZ
-.OP \-d cs
-.OP \-f fam
-.OP \-F dir
-.OP \-I dir
-.OP \-K arg
-.OP \-L arg
-.OP \-m name
-.OP \-M dir
-.OP \-n num
-.OP \-o list
-.OP \-P arg
-.OP \-r cn
-.OP \-T dev
-.OP \-w name
-.OP \-W name
-.RI [ file
-.IR .\|.\|. ]
-.YS
-.RE
-.
-.
-.PP
-If necessary, you might use
-.B br
-requests to control line breaking.
-.
-You can insert plain text as well; this looks like the traditional
-(unornamented) syntax for a required command argument or filename.
-.
-.
-.\" --------------------------------------------------------------------
-.SH "MISCELLANEOUS"
-.\" --------------------------------------------------------------------
-.
-The default indentation is 7.2n in troff mode and 7n in nroff mode
-except for
-.BR grohtml ,
-which ignores indentation.
-.
-.
-.TP
-.BI .AT " \fR[\fPsystem \fR[\fPrelease\fR]]\fP"
-Alter the footer for use with \f[CR]AT&T\f[]
-.IR \%man\~pages .
-This command exists only for compatibility; don\[aq]t use it.
-.
-See the
-.I groff
-info manual for more.
-.
-.
-.TP
-.B .BT
-Print the footer string.
-.
-Redefine this macro to get control of the footer.
-.
-.
-.TP
-.B .DT
-Set tabs every 0.5\~inches.
-.
-Since this macro is always called during a
-.B TH
-macro, it makes sense to call it only if the tab positions have been
-changed.
-.
-.
-.IP
-Use of this presentation-level macro is deprecated.
-.
-It translates poorly to HTML, under which exact whitespace control
-and tabbing are not readily available.
-.
-Thus, information or distinctions that you use
-.B .DT
-to express are likely to be lost.
-.
-If you feel tempted to use it, you should probably be composing a
-table using
-.BR @g@tbl (@MAN1EXT@)
-markup instead.
-.
-.
-.TP
-.BI .PD " \fR[\fPnnn\fR]\fP"
-Adjust the empty space before a new paragraph or section.
-.
-The optional argument gives the amount of space (default unit is
-\[oq]v\[cq]); without parameter, the value is reset to its default
-value (1\~line in nroff mode, 0.4v\~otherwise).
-.
-This affects the macros
-.BR SH ,
-.BR SS ,
-.BR TP ,
-.B LP
-(resp.\&
-.B PP
-and
-.BR P ),
-.BR IP ,
-and
-.BR HP .
-.
-.
-.IP
-Use of this presentation-level macro is deprecated.
-.
-It translates poorly to HTML, under which exact control of
-inter-paragraph spacing is not readily available.
-.
-Thus, information or distinctions that you use
-.B .PD
-to express are likely to be lost.
-.
-.
-.TP
-.B .PT
-Print the header string.
-.
-Redefine this macro to get control of the header.
-.
-.
-.TP
-.BI .UC " \fR[\fPversion\fR]\fP"
-Alter the footer for use with \f[CR]BSD\f[]
-.IR man\~pages .
-This command exists only for compatibility; don\[aq]t use it.
-.
-See the
-.I groff
-info manual for more.
-.
-.
-.PP
-The following strings are defined:
-.
-.
-.TP
-.B \e*R
-The \[oq]registered\[cq] sign.
-.
-.
-.TP
-.B \e*S
-Switch back to the default font size.
-.
-.
-.TP
-.B \e*(lq
-.TQ
-.B \e*(rq
-Left and right quote.
-.
-This is equal to \[oq]\e(lq\[cq] and \[oq]\e(rq\\[cq], respectively.
-.
-.
-.TP
-.B \e*(HF
-The typeface used to print headings and subheadings.
-.
-The default is \[oq]B\[cq].
-.
-.
-.TP
-.B \e*(Tm
-The \[oq]trademark\[cq] sign.
-.
-.
-.PP
-If a preprocessor like
-.B @g@tbl
-or
-.B @g@eqn
-is needed, it has become common to make the first line of the
-.I \%man\~page
-look like this:
-.
-.
-.PP
-.RS
-.BI '\e"\  word\""
-.RE
-.
-.
-.PP
-Note the single space character after the double quote.
-.I word
-consists of letters for the needed preprocessors: \[oq]e\[cq] for
-.BR @g@eqn ,
-\[oq]r\[cq] for
-.BR @g@refer ,
-and \[oq]t\[cq] for
-.BR @g@tbl .
-.
-Modern implementations of the
-.B man
-program read this first line and automatically call the right
-preprocessor(s).
-.
-.
-.\" --------------------------------------------------------------------
-.SH "PORTABILITY AND TROFF REQUESTS"
-.\" --------------------------------------------------------------------
-.
-Since the
-.B man
-macros consist of groups of
-.I groff
-requests, one can, in principle, supplement the functionality of the
-.B man
-macros with individual
-.I groff
-requests where necessary.
-.
-See the
-.I groff
-info pages for a complete reference of all requests.
-.
-.
-.PP
-Note, however, that using raw troff requests is likely to make your
-page render poorly on the (increasingly common) class of viewers that
-render it to HTML.
-.
-Troff requests make implicit assumptions about things like character
-and page sizes that may break in an HTML environment; also, many of
-these viewers don\[aq]t interpret the full troff vocabulary, a problem
-that can lead to portions of your text being silently dropped.
-.
-.
-.PP
-For portability to modern viewers, it is best to write your page
-entirely in the requests described on this page.
-.
-Further, it is best to completely avoid those we have described as
-\[oq]presentation-level\[cq]
-.RB ( .HP ,
-.BR .PD ,
-and
-.BR .DT ).
-.
-.
-.PP
-The macros we have described as extensions
-.RB ( .EX / .EE ,
-.BR .SY / .OP / .YS ,
-.BR .UR / .UE ,
-and
-.BR .MT / .ME )
-should be used with caution, as they may not yet be built in to
-some viewer that is important to your audience.
-.
-If in doubt, copy the implementation onto your page.
-.
-.
-.\" --------------------------------------------------------------------
-.SH FILES
-.\" --------------------------------------------------------------------
-.
-.TP
-.B man.tmac
-.TQ
-.B an.tmac
-These are wrapper files to call
-.BR andoc.tmac .
-.
-.
-.TP
-.B andoc.tmac
-Use this file in case you don\[aq]t know whether the
-.B man
-macros or the
-.B mdoc
-package should be used.
-Multiple man pages (in either format) can be handled.
-.
-.
-.TP
-.B an-old.tmac
-Most
-.B man
-macros are contained in this file.
-.
-.
-.TP
-.B an-ext.tmac
-The extension macro definitions for
-.BR .SY ,
-.BR .OP ,
-.BR .YS ,
-.BR .TQ ,
-.BR .EX/.EE ,
-.BR .UR/.UE ,
-and
-.BR .MT/.ME
-are contained in this file.
-.
-It is written in classic troff, and released for free re-use,
-and not copylefted; manual page authors concerned about
-portability to legacy Unix systems are encouraged to copy these
-definitions into their pages, and maintainers of troff
-or its workalikes are encouraged to re-use them.
-.
-.
-.IP
-Note that the definitions for these macros are read after the call of
-.BR TH ,
-so they will replace macros of the same names given at the beginning of
-your file.
-.
-If you must use your own definitions for these macros, they must be
-given after calling
-.BR TH .
-.
-.
-.TP
-.B man.local
-Local changes and customizations should be put into this file.
-.
-.
-.ad l
-.\" --------------------------------------------------------------------
-.SH "SEE ALSO"
-.\" --------------------------------------------------------------------
-.BR @g@tbl (@MAN1EXT@),
-.BR @g@eqn (@MAN1EXT@),
-.BR @g@refer (@MAN1EXT@),
-.BR man (1),
-.BR man (7),
-.BR groff_mdoc (7)
-.
-.
-.\" --------------------------------------------------------------------
-.SH COPYING
-.\" --------------------------------------------------------------------
-.co
-.\" --------------------------------------------------------------------
-.SH AUTHORS
-.\" --------------------------------------------------------------------
-.au
-.
-.
-.\" --------------------------------------------------------------------
-.\" ### Emacs settings:
-.\" Local Variables:
-.\" mode: nroff
-.\" End:
similarity index 96%
rename from tmac/groff_mdoc.man
rename to tmac/groff_mdoc.7.man
index abba14e..2e9824d 100644 (file)
@@ -10,7 +10,7 @@
 .\"
 .\"
 .\" Copyright (C) 1990, 1993
-.\"     The Regents of the University of California.  All rights reserved.
+.\"   The Regents of the University of California.  All rights reserved.
 .\"
 .\" Redistribution and use in source and binary forms, with or without
 .\" modification, are permitted provided that the following conditions
 .\" 1. Redistributions of source code must retain the above copyright
 .\"    notice, this list of conditions and the following disclaimer.
 .\" 2. Redistributions in binary form must reproduce the above copyright
-.\"    notice, this list of conditions and the following disclaimer in the
-.\"    documentation and/or other materials provided with the distribution.
+.\"    notice, this list of conditions and the following disclaimer in
+.\"    the documentation and/or other materials provided with the
+.\"    distribution.
 .\" 3. [Deleted.  See
 .\"     ftp://ftp.cs.berkeley.edu/pub/4bsd/README.Impt.License.Change]
-.\" 4. Neither the name of the University nor the names of its contributors
-.\"    may be used to endorse or promote products derived from this software
-.\"    without specific prior written permission.
+.\" 4. Neither the name of the University nor the names of its
+.\"    contributors may be used to endorse or promote products derived
+.\"    from this software without specific prior written permission.
 .\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS"
+.\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+.\" PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR
+.\" CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+.\" SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+.\" LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+.\" USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+.\" ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+.\" OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+.\" OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
 .\"     @(#)mdoc.samples.7 8.2 (Berkeley) 12/30/93
 .\"
-.\" This reference invokes every macro in the package several
-.\" times and is guaranteed to give a worst case performance
-.\" for an already extremely slow package.
+.\" This reference invokes every macro in the package several times and
+.\" is guaranteed to give a worst case performance for an already
+.\" extremely slow package.
 .\"
 .
 .Dd November 2, 2010
@@ -96,7 +98,7 @@ The manual domain is defined as macros that are a subset of the day to day
 informal language used to describe commands, routines and related
 .Ux
 files.
-Macros in the manual domain handle command names, command line arguments and
+Macros in the manual domain handle command names, command-line arguments and
 options, function names, function parameters, pathnames, variables, cross
 references to other manual pages, and so on.
 These domain items have value for both the author and the future user of the
@@ -724,20 +726,20 @@ used.
 .
 .Pp
 Under
-.Tn \*[operating-system] ,
+.Tn \*[doc-operating-system] ,
 the following sections are defined:
 .Pp
 .TS
 l l l.
-1      \*[volume-operating-system] \*[volume-ds-1]
-2      \*[volume-operating-system] \*[volume-ds-2]
-3      \*[volume-operating-system] \*[volume-ds-3]
-4      \*[volume-operating-system] \*[volume-ds-4]
-5      \*[volume-operating-system] \*[volume-ds-5]
-6      \*[volume-operating-system] \*[volume-ds-6]
-7      \*[volume-operating-system] \*[volume-ds-7]
-8      \*[volume-operating-system] \*[volume-ds-8]
-9      \*[volume-operating-system] \*[volume-ds-9]
+1      \*[doc-volume-operating-system] \*[doc-volume-ds-1]
+2      \*[doc-volume-operating-system] \*[doc-volume-ds-2]
+3      \*[doc-volume-operating-system] \*[doc-volume-ds-3]
+4      \*[doc-volume-operating-system] \*[doc-volume-ds-4]
+5      \*[doc-volume-operating-system] \*[doc-volume-ds-5]
+6      \*[doc-volume-operating-system] \*[doc-volume-ds-6]
+7      \*[doc-volume-operating-system] \*[doc-volume-ds-7]
+8      \*[doc-volume-operating-system] \*[doc-volume-ds-8]
+9      \*[doc-volume-operating-system] \*[doc-volume-ds-9]
 .TE
 .Pp
 .
@@ -746,16 +748,16 @@ A volume name may be arbitrary or one of the following:
 .Pp
 .TS
 l l.
-USD    \*[volume-ds-USD]
-PS1    \*[volume-ds-PS1]
-AMD    \*[volume-ds-AMD]
-SMM    \*[volume-ds-SMM]
-URM    \*[volume-ds-URM]
-PRM    \*[volume-ds-PRM]
-KM     \*[volume-ds-KM]
-IND    \*[volume-ds-IND]
-LOCAL  \*[volume-ds-LOCAL]
-CON    \*[volume-ds-CON]
+USD    \*[doc-volume-ds-USD]
+PS1    \*[doc-volume-ds-PS1]
+AMD    \*[doc-volume-ds-AMD]
+SMM    \*[doc-volume-ds-SMM]
+URM    \*[doc-volume-ds-URM]
+PRM    \*[doc-volume-ds-PRM]
+KM     \*[doc-volume-ds-KM]
+IND    \*[doc-volume-ds-IND]
+LOCAL  \*[doc-volume-ds-LOCAL]
+CON    \*[doc-volume-ds-CON]
 .TE
 .Pp
 .
@@ -773,7 +775,7 @@ its value is prepended to the default volume name as specified by the
 second parameter.
 By default, the following architecture keywords are defined:
 .
-\# we use `No' to avoid hyphenation
+\# we use 'No' to avoid hyphenation
 .Bd -ragged -offset indent
 .No acorn26 , acorn32 , algor , alpha , amd64 , amiga , amigappc ,
 .No arc , arm , arm26 , arm32 , armish , atari , aviion ,
@@ -804,16 +806,16 @@ prevents the digit\~7 from being a valid numeric expression.
 .Bl -tag -width ".Li .Dt\ FOO\ 2\ i386" -compact -offset indent
 .It Li ".Dt FOO 7"
 .Ql FOO(7)
-.Ql \*[volume-operating-system] \*[volume-ds-7]
+.Ql \*[doc-volume-operating-system] \*[doc-volume-ds-7]
 .It Li ".Dt FOO 7 bar"
 .Ql FOO(7)
-.Ql \*[volume-operating-system] \*[volume-ds-7]
+.Ql \*[doc-volume-operating-system] \*[doc-volume-ds-7]
 .It Li ".Dt FOO \e&7 bar"
 .Ql FOO(7)
 .Ql bar
 .It Li ".Dt FOO 2 i386"
 .Ql FOO(2)
-.Ql \*[volume-operating-system]/\*[volume-as-i386] \*[volume-ds-2]
+.Ql \*[doc-volume-operating-system]/\*[doc-volume-as-i386] \*[doc-volume-ds-2]
 .It Li ".Dt FOO \*[q]\*[q] bar"
 .Ql FOO
 .Ql bar
@@ -841,7 +843,7 @@ This macro is neither callable nor parsed.
 .Xc
 If the first parameter is empty,
 the default
-.Sq Tn "\*[operating-system]"
+.Sq Tn "\*[doc-operating-system]"
 is used.
 This may be overridden in the local configuration file,
 .Pa mdoc.local .
@@ -1054,7 +1056,7 @@ from the example above might be referred to as
 .Em operands
 or
 .Em file arguments .
-Some command line argument lists are quite long:
+Some command-line argument lists are quite long:
 .
 .Bd -ragged
 .Bl -tag -width ".Nm make" -offset indent -compact
@@ -1389,7 +1391,7 @@ The default width is 15n.
 .
 The
 .Ql .Fl
-macro handles command line flags.
+macro handles command-line flags.
 It prepends a dash,
 .Ql \- ,
 to the flag.
@@ -1627,10 +1629,10 @@ produces:
 .
 .Bd -ragged -offset indent
 \# a small hack to suppress a warning message
-.ds section-old "\*[section]
-.ds section 3
+.ds doc-section-old "\*[doc-section]
+.ds doc-section 3
 .Rv -std atexit
-.ds section "\*[section-old]
+.ds doc-section "\*[doc-section-old]
 .Ed
 .Pp
 .
@@ -1657,10 +1659,10 @@ produces:
 .
 .Bd -ragged -offset indent
 \# a small hack to suppress a warning message
-.ds section-old "\*[section]
-.ds section 1
+.ds doc-section-old "\*[doc-section]
+.ds doc-section 1
 .Ex -std cat
-.ds section "\*[section-old]
+.ds doc-section "\*[doc-section-old]
 .Ed
 .Pp
 .
@@ -2993,7 +2995,7 @@ section.
 .It Li ".Sh EXAMPLES"
 There are several ways to create examples.
 See the
-.Em EXAMPLES
+.Sx "Examples and Displays"
 section below for details.
 .
 .It Li ".Sh DIAGNOSTICS"
@@ -3249,7 +3251,7 @@ accepts currently is
 .Fl words
 (this is also the default if no option is given) which is useful for
 preventing line breaks in the middle of options.
-In the example for the make command line arguments (see
+In the example for the make command-line arguments (see
 .Sx What's in a Name ) ,
 the keep prevented
 .Xr nroff
@@ -3925,14 +3927,8 @@ the width of
 .Aq Ar string
 (typeset with a fixed-width font) is taken as the width.
 .Pp
-If a width is not specified for the tag list type, every time
-.Ql .It
-is invoked, an attempt is made to determine an appropriate width.
-If the first argument to
-.Ql .It
-is a callable macro, the default width for that macro will be used;
-otherwise, the default width of
-.Ql .No
+If a width is not specified for the tag list type,
+.Sq 6n
 is used.
 .It Fl offset Ao Ar string Ac
 If
@@ -3989,7 +3985,7 @@ and
 .Ql .Ot .
 They are documented here for completeness \- if you know how to use them
 properly please send a mail to
-.Mt bug-groff@gnu.org
+.Mt groff@gnu.org
 (including an example).
 .
 .Bl -tag -width ".Li .Bt"
@@ -4294,6 +4290,12 @@ and certainly should be able to.
 .\" the right margin adjustment is normally ragged and the problem is
 .\" not as severe.
 .
+.\" ====================================================================
+.\" Editor settings
+.\" ====================================================================
+.
 .\" Local Variables:
 .\" mode: nroff
+.\" fill-column: 72
 .\" End:
+.\" vim: set filetype=groff textwidth=72:
diff --git a/tmac/groff_me.7.man b/tmac/groff_me.7.man
new file mode 100644 (file)
index 0000000..ab3f4ae
--- /dev/null
@@ -0,0 +1,527 @@
+'\" t
+.TH GROFF_ME @MAN7EXT@ "@MDATE@" "groff @VERSION@"
+.SH NAME
+groff_me \- \(lqme\(rq macro package for formatting documents with GNU \
+roff
+.
+.
+.\" ====================================================================
+.\" Legal Terms
+.\" ====================================================================
+.\"
+.\" Copyright (C) 1980 The Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms are permitted
+.\" provided that the above copyright notice and this paragraph are
+.\" duplicated in all such forms and that any documentation,
+.\" advertising materials, and other materials related to such
+.\" distribution and use acknowledge that the software was developed
+.\" by the University of California, Berkeley.  The name of the
+.\" University may not be used to endorse or promote products derived
+.\" from this software without specific prior written permission.
+.\" THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
+.\" IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
+.\" WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+.\"
+.\"    @(#)me.7        6.4 (Berkeley) 4/13/90
+.\"
+.\" Modified for groff by jjc@jclark.com
+.\" Changed to use TBL and eliminate low-level troff hackery by ESR
+.\" (this enables it to be lifted to structural markup).
+.
+.
+.\" ====================================================================
+.SH SYNOPSIS
+.\" ====================================================================
+.
+.SY "groff \-me"
+.RI [ option
+\&.\|.\|.\&]
+.RI [ input-file
+\&.\|.\|.\&]
+.YS
+.SY "groff \-m me"
+.RI [ option
+\&.\|.\|.\&]
+.RI [ input-file
+\&.\|.\|.\&]
+.YS
+.
+.
+.\" ====================================================================
+.SH DESCRIPTION
+.\" ====================================================================
+.
+The
+.I me
+package of macro definitions for the
+.I roff
+language provides a convenient facility for preparing technical papers
+in various formats.
+.
+This manual page describes the GNU version of the
+.I me
+macros, which is
+part of the
+.I groff
+document formatting system.
+.
+This version can be used with both GNU
+.I troff
+and Unix
+.IR troff .
+.
+.
+.PP
+Many
+.I roff
+requests are unsafe in conjunction with this package; however, the
+following requests may be used with impunity after the first
+.BR .pp :
+.TS
+l l.
+\fB.bp\fP      begin new page
+\fB.br\fP      break output line here
+\fB.sp\fP \fIn\fP      insert \fIn\fP spacing lines
+\fB.ls\fP \fIn\fP      (line spacing) \fIn\fP=1 single, \fIn\fP=2 double space
+\fB.na\fP      no alignment of right margin
+\fB.ce\fP \fIn\fP      center next \fIn\fP lines
+\fB.ul\fP \fIn\fP      underline next \fIn\fP lines
+.TE
+.PP
+.I Note:
+In contrast to its behavior with other macro packages and \(lqraw\(rq
+.IR roff ,
+when using the
+.I me
+package,
+the
+.B .sp
+request will
+.I not
+put space at the top of a page.
+.
+.
+.PP
+Output of the
+.IR pic ,
+.IR eqn ,
+.IR refer ,
+and
+.I tbl
+preprocessors
+is acceptable as input.
+.
+.
+.\" ====================================================================
+.SS Macro Reference
+.\" ====================================================================
+.
+Numeric arguments to macros are denoted with lowercase letters and
+string arguments with uppercase.
+.
+An optional macro argument such as
+.I x
+appears in brackets,
+.BI [ x \/\c
+.BR ] .
+.
+Note that arguments to macros generally must be quoted if they contain
+whitespace.
+.
+An exception is the argument to header and footer macros, which require
+some explanation.
+They take the form
+.RI \(lq c
+.I left c middle c right
+.IR c \(rq,
+with spaces added here for clarity.
+The strings
+.IR left ,
+.IR middle ,
+and
+.I right
+correspond to their page placement and can contain unprotected
+whitespace, but must not contain the (non-space) character
+.IR c ,
+which delimits them.
+For brevity, the table presents header and footer arguments as
+.IR clcmcrc .
+Popular choices for
+.I c
+are the ASCII apostrophe
+.RB \(lq \(aq \(rq
+and the ASCII double quote
+.RB \(lq \(dq \(rq.
+.
+.
+.PP
+This list is incomplete;
+some requests are too complex to summarize in a table, and some that
+are listed below accept additional arguments not shown.
+See the
+.I \-me Reference Manual
+for interesting details.
+.
+.
+.PP
+.na
+.TS
+l l l lx.
+Request        Initial Causes  Explanation
+       Value   Break
+_
+\&.(c  \-      yes     T{
+Begin centered block.
+T}
+\&.(d  \-      no      T{
+Begin delayed text.
+T}
+\&.(f  \-      no      T{
+Begin footnote.
+T}
+\&.(l  \-      yes     Begin list.
+\&.(q  \-      yes     T{
+Begin major quote.
+T}
+\&.(x [\fIX\fP]        \-      no      T{
+Begin item in index (named
+.IR X ).
+T}
+\&.(z  \-      no      T{
+Begin floating keep.
+T}
+\&.)c  \-      yes     T{
+End centered block.
+T}
+\&.)d  \-      yes     T{
+End delayed text.
+T}
+\&.)f  \-      yes     T{
+End footnote.
+T}
+\&.)l  \-      yes     End list.
+\&.)q  \-      yes     T{
+End major quote.
+T}
+\&.)x  \-      yes     T{
+End index item.
+T}
+\&.)z  \-      yes     T{
+End floating keep.
+T}
+\&.++ \fIM\fP [\fIclcmcrc\fP]  \-      no      T{
+Define paper section as
+.IR M ,
+which must be one of
+.B C
+(chapter),
+.B A
+(appendix),
+.B P
+(preliminary, i.e., front matter or table of contents),
+.B AB
+(abstract),
+.B B
+(bibliography),
+.B RC
+(chapters renumbered from page one each chapter),
+or
+.B RA
+(appendix renumbered from page one)
+(and set page header to
+.IR clcmcrc ).
+T}
+\&.+c [\fIT\fP]        \-      yes     T{
+Begin chapter (or appendix, etc., as set by
+.BR .++ )
+(with title
+.IR T ).
+T}
+\&.1c  1       yes     T{
+One-column format on a new page.
+T}
+\&.2c  1       yes     T{
+Two-column format.
+T}
+\&.EN  \-      yes     T{
+Space after equation
+produced by
+.I eqn
+or
+.IR neqn .
+T}
+\&.EQ [\fIM\fP [\fIT\fP]]      \-      yes     T{
+Begin displayed equation (with indentation
+.IR M ,
+which must be one of
+.B C
+(centered, default),
+.B I
+(indented),
+or
+.B L
+(justified left) (and title
+.I T
+in right margin)).
+T}
+\&.GE  \-      yes     T{
+End \fIgremlin\fP picture.
+T}
+\&.GS  \-      yes     T{
+Begin \fIgremlin\fP picture.
+T}
+\&.PE  \-      yes     T{
+End \fIpic\fP picture.
+T}
+\&.PS  \-      yes     T{
+Begin \fIpic\fP picture.
+T}
+\&.TE  \-      yes     T{
+End
+.I tbl
+table.
+T}
+\&.TH  \-      yes     T{
+End heading of
+.I tbl
+table.
+T}
+\&.TS [\fBH\fP]        \-      yes     T{
+Begin
+.I tbl
+table; if
+.BR H ,
+table repeats heading on each page.
+T}
+\&.b [\fIX\fP [\fIY\fP]]       \-      no      T{
+Print
+.I X
+in bold (appending
+.I Y
+in the previous font); if no arguments, switch to bold.
+T}
+\&.ba \fIn\fP  0       yes     T{
+Augment the base indent (for regular text, like paragraphs)
+by
+.IR n .
+T}
+\&.bc  \-      yes     T{
+Begin new column.
+T}
+\&.bi [\fIX\fP [\fIY\fP]]      \-      no      T{
+Print
+.I X
+in bold italics (appending
+.I Y
+in the previous font); if no arguments, switch to bold italics.
+T}
+\&.bu  \-      yes     T{
+Begin bulleted paragraph.
+T}
+\&.bx [\fIX\fP [\fIY\fP]]      \-      no      T{
+Print \fIX\fP in a box (with Y appended).
+Renders reliably only in no-fill mode.
+T}
+\&.ef \fIclcmcrc\fP    """"    no      T{
+Set even-numbered page footer.
+T}
+\&.eh \fIclcmcrc\fP    """"    no      T{
+Set even-numbered page header.
+T}
+\&.fo \fIclcmcrc\fP    """"    no      T{
+Set page footer.
+T}
+\&.hx  \-      no      T{
+Suppress headers and footers on next page.
+T}
+\&.he \fIclcmcrc\fP    """"    no      T{
+Set page header.
+T}
+\&.hl  \-      yes     T{
+Draw a horizontal line.
+T}
+\&.i [\fIX\fP [\fIY\fP]]       \-      no      T{
+Print
+.I X
+in italics (appending
+.I Y
+in the previous font); if no arguments, switch to italics.
+T}
+\&.ip [\fIX\fP [\fIn\fP]]      \fIn\fP=5n      yes     T{
+Start indented paragraph (with hanging tag
+.I X
+(and indentation
+.IR n )).
+T}
+\&.lp  \-      yes     T{
+Begin paragraph with first line flush left.
+T}
+\&.np  1       yes     T{
+Start numbered paragraph.
+T}
+\&.of \fIclcmcrc\fP    """"    no      T{
+Set odd-numbered page footer.
+T}
+\&.oh \fIclcmcrc\fP    """"    no      T{
+Set odd-numbered page header.
+T}
+\&.pd  \-      yes     T{
+Print delayed text.
+T}
+\&.pp  \-      yes     T{
+Begin paragraph with indented first line.
+T}
+\&.r [\fIX\fP [\fIY\fP]]       \-      no      T{
+Print
+.I X
+in roman (appending
+.I Y
+in the previous font); if no arguments, switch to roman.
+T}
+\&.re  0.5i    no      T{
+Reset tabs to default values.
+T}
+\&.sh [\fIn\fP [\fIT\fP]]      \fIn\fP=1       yes     T{
+Start numbered section; print section number (set to
+.I n
+(and title
+.IR T ))
+in bold.
+T}
+\&.sk  \-      no      T{
+Leave the next page blank.
+Only one page is remembered ahead.
+T}
+\&.sm \fIX\fP [\fIY\fP]        \-      no      T{
+Print
+.I X
+in a smaller point size (appending
+.I Y
+at the previous size).
+T}
+\&.sz \fIn\fP  10p     no      T{
+Augment the point size by
+.I n
+points.
+T}
+\&.tp  \-      yes     T{
+Begin title page.
+T}
+\&.u \fIX\fP [\fIY\fP] \-      no      T{
+Underline
+.I X
+(appending
+.I Y
+without underlining).
+Renders reliably only in no-fill mode.
+T}
+\&.uh [\fIT\fP]        \-      yes     T{
+Start unnumbered section (and print title
+.I T
+in bold).
+T}
+\&.xp [\fIX\fP]        \-      no      T{
+Print index (named
+.IR X ).
+T}
+.TE
+.
+.
+.\" ====================================================================
+.SH FILES
+.\" ====================================================================
+.
+.I @MACRODIR@/me.tmac
+(a wrapper file for
+.IR e.tmac )
+.br
+.I @MACRODIR@/e.tmac
+.
+.
+.\" ====================================================================
+.SH NOTES
+.\" ====================================================================
+.
+Early
+.I roff
+macro packages limited themselves to a single-letter namespace
+.RI ( mm ,
+.IR ms ,
+.IR mv ,
+.IR mn ,
+etc.).
+.
+.\" 'When I started writing the -me macros it began as something in my
+.\" private tree (I don't remember what I called it).  Then some other
+.\" folks on the INGRES project wanted to use it, but our system admin
+.\" at the time didn't want to dicker with the system namespace at the
+.\" behest of a mere undergraduate, so he didn't like anything that was
+.\" actually descriptive lest people think it was "official".  He
+.\" finally consented to "-meric" (which I always hated), since it was
+.\" obviously non-official.  By the time my macros became popular around
+.\" Berkeley it got shortened to "-me", much to my relief.
+.\"
+.\" Of course, if AT&T had been willing to let Berkeley have -ms then
+.\" most likely -me would never have happened at all.  Without a macro
+.\" package, nroff/troff is basically unusable; -me stepped into the
+.\" vacuum.' -- Eric Allman
+.\"
+.\" https://minnie.tuhs.org//pipermail/tuhs/2018-November/015412.html
+.
+The \(lqe\(rq in \(lqme\(rq stands for \(lqEric P.\& Allman\(rq,
+who wrote the macro package and the original technical papers
+documenting it while an undergraduate at the University of California.
+.
+.
+.\" ====================================================================
+.SH SEE ALSO
+.\" ====================================================================
+.
+.BR groff (1),
+.BR troff (1)
+.
+.
+.PP
+Two manuals are available in source and rendered form.
+.
+On your system,
+they may be compressed and/or available in additional formats.
+.
+.
+.TP
+.I @DOCDIR@/meintro.me
+.TQ
+.I @DOCDIR@/meintro.ps
+is
+.IR "Writing Papers with Groff Using \-me" ,
+by Eric P.\& Allman and James Clark.
+.
+.
+.TP
+.I @DOCDIR@/meref.me
+.TQ
+.I @DOCDIR@/meref.ps
+is the
+.IR "\-me Reference Manual" ,
+by Eric P.\& Allman and James Clark.
+.
+.
+.PP
+For preprocessors supported by
+.IR me ,
+see
+.BR eqn (1),
+.BR grn (1),
+.BR pic (1),
+.BR refer (1),
+and
+.BR tbl (1).
+.
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" tab-with: 20
+.\" End:
+.\" vim: set filetype=nroff tabstop=20:
diff --git a/tmac/groff_me.man b/tmac/groff_me.man
deleted file mode 100644 (file)
index 2a54bfd..0000000
+++ /dev/null
@@ -1,354 +0,0 @@
-'\" t
-.hc %
-.TH GROFF_ME @MAN7EXT@ "@MDATE@" "@VERSION@"
-.UC 3
-.SH NAME
-groff_me \- troff macros for formatting papers
-.
-.
-.\" Copyright (C) 1980 The Regents of the University of California.
-.\" All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms are permitted
-.\" provided that the above copyright notice and this paragraph are
-.\" duplicated in all such forms and that any documentation,
-.\" advertising materials, and other materials related to such
-.\" distribution and use acknowledge that the software was developed
-.\" by the University of California, Berkeley.  The name of the
-.\" University may not be used to endorse or promote products derived
-.\" from this software without specific prior written permission.
-.\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
-.\" IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
-.\" WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-.\"
-.\"    @(#)me.7        6.4 (Berkeley) 4/13/90
-.\"
-.\" Modified for groff by jjc@jclark.com
-.\" Changed to use TBL and eliminate low-level troff hackery by ESR
-.\" (this enables it to be lifted to structural markup).
-.
-.
-.\" --------------------------------------------------------------------
-.SH SYNOPSIS
-.\" --------------------------------------------------------------------
-.
-.B "groff \-me"
-[ options ]
-file ...
-.br
-.B "groff \-m\ me"
-[ options ]
-file ...
-.
-.
-.\" --------------------------------------------------------------------
-.SH DESCRIPTION
-.\" --------------------------------------------------------------------
-.
-This manual page describes the GNU version of the \-me macros,
-which is part of the groff document formatting system.
-.
-This version can be used with both GNU troff and Unix troff.
-.
-This package of
-.I troff
-macro definitions provides a canned formatting
-facility for technical papers in various formats.
-.
-.
-.PP
-The macro requests are defined below.
-.
-Many
-.I troff
-requests are unsafe in conjunction with this package, however, these
-requests may be used with impunity after the first \&.pp:
-.TS
-l l.
-\&.bp  begin new page
-\&.br  break output line here
-\&.sp n        insert n spacing lines
-\&.ls n        (line spacing) n=1 single, n=2 double space
-\&.na  no alignment of right margin
-\&.ce n        center next n lines
-\&.ul n        underline next n lines
-.TE
-.PP
-Output of the
-.I pic,
-.I eqn,
-.I refer,
-and
-.I tbl
-preprocessors
-is acceptable as input.
-.
-.
-.\" --------------------------------------------------------------------
-.SH FILES
-.\" --------------------------------------------------------------------
-.
-/usr/share/groff/1.21/tmac/me.tmac (a wrapper file for e.tmac)
-.br
-/usr/share/groff/1.21/tmac/e.tmac
-.
-.
-.\" --------------------------------------------------------------------
-.SH "SEE ALSO"
-.\" --------------------------------------------------------------------
-.
-.BR groff (1),
-.BR troff (1)
-.br
-\-me Reference Manual, Eric P.\& Allman
-.br
-Writing Papers with Groff Using \-me
-.
-.
-.\" --------------------------------------------------------------------
-.SH REQUESTS
-.\" --------------------------------------------------------------------
-.
-This list is incomplete;
-see
-.I "The \-me Reference Manual"
-for interesting details.
-.
-.
-.PP
-.na
-.TS
-l l l lx.
-Request        Initial Causes  Explanation
-       Value   Break
-_
-\&.(c  \-      yes     T{
-Begin centered block
-T}
-\&.(d  \-      no      T{
-Begin delayed text
-T}
-\&.(f  \-      no      Begin footnote
-\&.(l  \-      yes     Begin list
-\&.(q  \-      yes     T{
-Begin major quote
-T}
-\&.(x \fIx\fR  \-      no      T{
-Begin indexed item in index
-T}
-\&.(z  \-      no      T{
-Begin floating keep
-T}
-\&.)c  \-      yes     T{
-End centered block
-T}
-\&.)d  \-      yes     T{
-End delayed text
-T}
-\&.)f  \-      yes     End footnote
-\&.)l  \-      yes     End list
-\&.)q  \-      yes     T{
-End major quote
-T}
-\&.)x  \-      yes     T{
-End index item
-T}
-\&.)z  \-      yes     T{
-End floating keep
-T}
-\&.++ \fIm H\fR        \-      no      T{
-Define paper section.
-.I m
-defines the part of the paper, and can be
-.B C
-(chapter),
-.B A
-(appendix),
-.B P
-(preliminary, e.g., abstract, table of contents, etc.),
-.B B
-(bibliography),
-.B RC
-(chapters renumbered from page one each chapter),
-or
-.B RA
-(appendix renumbered from page one).
-T}
-\&.+c \fIT\fR  \-      yes     T{
-Begin chapter (or appendix, etc., as
-set by \&.++).
-.I T
-is the chapter title.
-T}
-\&.1c  1       yes     T{
-One column format on a new page.
-T}
-\&.2c  1       yes     T{
-Two column format.
-T}
-\&.EN  \-      yes     T{
-Space after equation
-produced by
-.I eqn
-or
-.IR neqn .
-T}
-\&.EQ \fIx y\fR        \-      yes     T{
-Precede equation; break out and
-add space.
-Equation number is
-.IR y .
-The optional argument \fIx\fR
-may be
-.I I
-to indent equation (default),
-.I L
-to left-adjust the equation, or
-.I C
-to center the equation.
-T}
-\&.GE  \-      yes     T{
-End \fIgremlin\fP picture.
-T}
-\&.GS  \-      yes     T{
-Begin \fIgremlin\fP picture.
-T}
-\&.PE  \-      yes     T{
-End \fIpic\fP picture.
-T}
-\&.PS  \-      yes     T{
-Begin \fIpic\fP picture.
-T}
-\&.TE  \-      yes     End table.
-\&.TH  \-      yes     T{
-End heading section of table.
-T}
-\&.TS \fIx\fR  \-      yes     T{
-Begin table; if \fIx\fR is
-.I H
-table has repeated heading.
-T}
-\&.b \fIx\fR   no      no      T{
-Print
-.I x
-in boldface; if no argument switch to boldface.
-T}
-\&.ba \fI+n\fR 0       yes     T{
-Augments the base indent by
-.I n.
-This indent is used to set the indent on regular text
-(like paragraphs).
-T}
-\&.bc  no      yes     T{
-Begin new column
-T}
-\&.bi \fIx\fR  no      no      T{
-Print
-.I x
-in bold italics (nofill only)
-T}
-\&.bu  \-      yes     T{
-Begin bulleted paragraph
-T}
-\&.bx \fIx\fR  no      no      T{
-Print \fIx\fR in a box (nofill only).
-T}
-\&.ef \fI\'x\'y\'z\'\fR        \'\'\'\'        no      T{
-Set even footer to x  y  z
-T}
-\&.eh \fI\'x\'y\'z\'\fR        \'\'\'\'        no      T{
-Set even header to x  y  z
-T}
-\&.fo \fI\'x\'y\'z\'\fR        \'\'\'\'        no      T{
-Set footer to x  y  z
-T}
-\&.hx  \-      no      T{
-Suppress headers and footers on next page.
-T}
-\&.he \fI\'x\'y\'z\'\fR        \'\'\'\'        no      T{
-Set header to x  y  z
-T}
-\&.hl  \-      yes     T{
-Draw a horizontal line
-T}
-\&.i \fIx\fR   no      no      T{
-Italicize
-.I x;
-if
-.I x
-missing, italic text follows.
-T}
-\&.ip \fIx y\fR        no      yes     T{
-Start indented paragraph,
-with hanging tag
-.IR x .
-Indentation is
-.I y
-ens (default 5).
-T}
-\&.lp  yes     yes     T{
-Start left-blocked paragraph.
-T}
-\&.np  1       yes     T{
-Start numbered paragraph.
-T}
-\&.of \fI\'x\'y\'z\'\fR        \'\'\'\'        no      T{
-Set odd footer to x  y  z
-T}
-\&.oh \fI\'x\'y\'z\'\fR        \'\'\'\'        no      T{
-Set odd header to x  y  z
-T}
-\&.pd  \-      yes     T{
-Print delayed text.
-T}
-\&.pp  no      yes     T{
-Begin paragraph.
-First line indented.
-T}
-\&.r   yes     no      T{
-Roman text follows.
-T}
-\&.re  \-      no      T{
-Reset tabs to default values.
-T}
-\&.sh \fIn x\fR        \-      yes     T{
-Section head follows,
-font automatically bold.
-.I n
-is level of section,
-.I x
-is title of section.
-T}
-\&.sk  no      no      T{
-Leave the next page blank.
-Only one page is remembered ahead.
-T}
-\&.sm \fIx\fR  \-      no      T{
-Set
-.I x
-in a smaller pointsize.
-T}
-\&.sz \fI+n\fR 10p     no      T{
-Augment the point size by
-.I n
-points.
-T}
-\&.tp  no      yes     T{
-Begin title page.
-T}
-\&.u \fIx\fR   \-      no      T{
-Underline argument (even in \fItroff\fR).
-(Nofill only).
-T}
-\&.uh  \-      yes     T{
-Like .sh but unnumbered.
-T}
-\&.xp \fIx\fR  \-      no      Print index.
-.TE
-.ad
-
-.
-.\" Local Variables:
-.\" mode: nroff
-.\" tab-with: 20
-.\" End:
similarity index 73%
rename from tmac/groff_ms.man
rename to tmac/groff_ms.7.man
index 9464bab..a9f1e94 100644 (file)
@@ -1,67 +1,55 @@
 '\" t
+.TH GROFF_MS @MAN7EXT@ "@MDATE@" "groff @VERSION@"
+.SH NAME
+groff_ms \- GNU roff manuscript macro package for formatting documents
+.
+.
+.\" Save and disable compatibility mode (for, e.g., Solaris 10/11).
 .do nr groff_ms_C \n[.C]
 .cp 0
-.TH GROFF_MS @MAN7EXT@ "@MDATE@" "Groff Version @VERSION@"
-.SH NAME
-groff_ms \- groff ms macros
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .\" Legal Terms
-.\" --------------------------------------------------------------------
-.
-.de co
-Copyright \[co] 1989-2014 Free Software Foundation, Inc.
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the
-entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
-Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be included in
-translations approved by the Free Software Foundation instead of in
-the original English.
-..
-.
-.de au
-Original manual page by James Clark et al, rewritten by
-.MT lkollar@despammed.com
-Larry Kollar
-.ME .
-..
-.
-.\" --------------------------------------------------------------------
+.\" ====================================================================
+.\"
+.\" Copyright (C) 1989-2018 Free Software Foundation, Inc.
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of
+.\" this manual under the conditions for verbatim copying, provided that
+.\" the entire resulting derived work is distributed under the terms of
+.\" a permission notice identical to this one.
+.\"
+.\" Permission is granted to copy and distribute translations of this
+.\" manual into another language, under the above conditions for
+.\" modified versions, except that this permission notice may be
+.\" included in translations approved by the Free Software Foundation
+.\" instead of in the original English.
+.
+.
+.\" ====================================================================
 .SH SYNOPSIS
-.\" --------------------------------------------------------------------
-.
-.B groff
-.B \-ms
-[
-.IR options .\|.\|.\&
-]
-[
-.IR files .\|.\|.\&
-]
-.br
-.B groff
-.B \-m\ ms
-[
-.IR options .\|.\|.\&
-]
-[
-.IR files .\|.\|.\&
-]
+.\" ====================================================================
+.
+.SY "groff -ms"
+.RI [ option
+\&.\|.\|.\&]
+.RI [ input-file
+\&.\|.\|.\&]
+.SY "groff -m ms"
+.RI [ option
+\&.\|.\|.\&]
+.RI [ input-file
+\&.\|.\|.\&]
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH DESCRIPTION
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 This manual page describes the GNU version of the
 .I ms
@@ -73,8 +61,7 @@ typesetting system.
 The
 .I ms
 macros are mostly compatible with the documented behavior of the 4.3
-.SM BSD
-Unix
+BSD Unix
 .I ms
 macros (see
 .I Differences from troff ms
@@ -86,9 +73,9 @@ macros are suitable for reports, letters, books, and technical
 documentation.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH USAGE
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The
 .I ms
@@ -117,8 +104,9 @@ are specific to AT&T or Berkeley, and are not supported in
 .TP
 .B "Format and layout"
 By setting number registers,
-you can change your document\[aq]s type (font and size),
-margins, spacing, headers and footers, and footnotes.
+you can change your document's
+margins, spacing, headers and footers, footnotes,
+and the base point size for the text.
 .
 See
 .I "Document control registers"
@@ -127,7 +115,7 @@ below for more details.
 .TP
 .B "Cover page"
 A cover page consists of a title,
-and optionally the author\[aq]s name and institution,
+and optionally the author's name and institution,
 an abstract, and the date.
 .
 See
@@ -147,9 +135,9 @@ which you can add by placing the
 macro at the end of your document.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Document control registers"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The following table lists the document control
 number registers.
@@ -165,7 +153,6 @@ macro.
 .ne 12
 .B Margin settings
 .RS
-.na
 .TS
 cb   cb cb cb
 lfCW l  l  l.
@@ -251,7 +238,7 @@ _
 FL     Footnote length next footnote   \[rs]n[LL]*5/6
 FI     Footnote indent next footnote   2n
 FF     Footnote format next footnote   0
-FPS    Point size      next footnote   \[rs]n[PS]-2
+FPS    Point size      next footnote   \[rs]n[PS]\-2
 FVS    Vert.\& spacing next footnote   \[rs]n[FPS]+2
 FPD    Para.\& spacing next footnote   \[rs]n[PD]/2
 _
@@ -271,19 +258,18 @@ DD        Display, table, eqn, pic spacing        next para.      0.5v
 MINGW  Minimum width between columns   next page       2n
 _
 .TE
-.ad
 .RE
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Cover page macros"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 Use the following macros to create a cover page for your document
 in the order shown.
 .
 .TP
-.B .RP [no]
+.BR ".RP " [ no ]
 Specifies the report format for your document.
 .
 The report format creates a separate cover page.
@@ -312,7 +298,8 @@ on page\~1 of the document.
 The default is to suppress the header.
 .
 .TP
-.BI ".DA [" xxx ]
+.B .DA\c
+.RI " [" xxx ]
 (optional) Print the current date,
 or the arguments to the macro if any,
 on the title page (if specified)
@@ -322,7 +309,8 @@ This is the default for
 .IR nroff .
 .
 .TP
-.BI ".ND [" xxx ]
+.B .ND\c
+.RI " [" xxx ]
 (optional) Print the current date,
 or the arguments to the macro if any,
 on the title page (if specified)
@@ -342,7 +330,7 @@ macro into the title, until reaching the author name or abstract.
 .
 .TP
 .B .AU
-Specifies the author\[aq]s name.
+Specifies the author's name.
 .
 You can specify multiple authors by using an
 .B AU
@@ -350,12 +338,12 @@ macro for each author.
 .
 .TP
 .B .AI
-Specifies the author\[aq]s institution.
+Specifies the author's institution.
 .
 You can specify multiple institutions.
 .
 .TP
-.B .AB [no]
+.BR ".AB " [ no ]
 Begins the abstract.
 .
 The default is to print the word
@@ -371,9 +359,9 @@ suppresses this heading.
 End the abstract.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS Paragraphs
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 Use the
 .B PP
@@ -386,18 +374,56 @@ macro to create paragraphs with no initial indent.
 .PP
 The
 .B QP
-macro indents all text at both left and right margins.
+macro indents all text at both left and right margins
+by the amount of the register
+.BR QI .
 .
-The effect is identical to the HTML
+The effect is reminiscent of the HTML
 .B <BLOCKQUOTE>
+tag.
 .
-The next paragraph or heading returns margins to normal.
+The next paragraph or heading returns the margins to normal.
+.
+.B QP
+inserts the vertical space specified in register
+.B PD
+as inter-paragraph spacing.
+.
+.
+.PP
+A paragraph bracketed between the macros
+.B QS
+and
+.B QE
+has the same appearance as a paragraph started with
+.B QP
+and a following paragraph started with
+.BR LP .
+.
+Both
+.B QS
+and
+.B QE
+insert the inter-paragraph spacing specified in
+.B PD
+and the text is indented on both sides by the amount of register
+.BR QI .
+.
+The text between
+.B QS
+and
+.B QE
+can be split into further paragraphs by using
+.B \&.LP
+or
+.BR \&.PP .
 .
 .
 .PP
 The
 .B XP
-macro produces an exdented paragraph.
+macro produces an \(lqexdented\(rq paragraph; that is, one with a
+hanging indent.
 .
 The first line of the paragraph begins at
 the left margin,
@@ -430,9 +456,7 @@ the first line of the paragraph is printed.
 .PP
 Similarly,
 when a section heading
-(see subsection
-.I Headings
-below)
+(see subsection \[lq]Headings\[rq] below)
 precedes any of these paragraph types,
 the
 .B HORPHANS
@@ -448,9 +472,9 @@ then a page break is forced
 the heading is printed.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS Headings
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 Use headings to create a hierarchical structure
 for your document.
@@ -463,8 +487,8 @@ macros print headings in
 using the same font family and point size as the body text.
 .
 For output devices which support scalable fonts,
-this behaviour may be modified,
-by defining the document control registers,
+this behaviour may be modified by defining the document control
+registers
 .B GROWPS
 and
 .BR PSINCR .
@@ -481,8 +505,8 @@ The argument
 .I xx
 is either a numeric argument to indicate the
 level of the heading, or
-.I S\ xx\ xx\ \c
-".\|.\|."
+.B S\~\c
+.IR "xx\~xx\~" .\|.\|.\&
 to set the section number explicitly.
 .
 If you specify heading levels out of sequence,
@@ -555,44 +579,44 @@ is interpreted in
 basic units;
 the
 .I p
-scaling factor should be employed,
-when assigning a value specified in points.
+scaling factor should be employed when assigning a value specified in
+points.
 .
 .IP
 The style used to represent the section number,
 within a numbered heading,
 is controlled by the
-.B SN-STYLE
+.B SN\-STYLE
 string;
 this may be set to either the
-.B SN-DOT
+.B SN\-DOT
 or the
-.B SN-NO-DOT
+.B SN\-NO\-DOT
 style,
 (described below),
 by aliasing
-.B SN-STYLE
+.B SN\-STYLE
 accordingly.
 .
 By default,
-.B SN-STYLE
+.B SN\-STYLE
 is initialised by defining the alias
 .RS
 .nf
 .IP
-\&.als SN-STYLE SN-DOT
+\&.als SN\-STYLE SN\-DOT
 .fi
 .RE
 .IP
 it may be changed to the
-.B SN-NO-DOT
+.B SN\-NO\-DOT
 style,
 if preferred,
 by defining the alternative alias
 .RS
 .nf
 .IP
-\&.als SN-STYLE SN-NO-DOT
+\&.als SN\-STYLE SN\-NO\-DOT
 .fi
 .RE
 .IP
@@ -605,28 +629,28 @@ the new alias is defined.
 After invoking
 .BR .NH ,
 the assigned heading number is available in the strings
-.B SN-DOT
+.B SN\-DOT
 (as it appears in the default formatting style for numbered headings,
 with a terminating period following the number),
 and
-.B SN-NO-DOT
+.B SN\-NO\-DOT
 (with this terminating period omitted).
 .
 The string
 .B SN
 is also defined,
 as an alias for
-.BR SN-DOT ;
+.BR SN\-DOT ;
 if preferred,
 the user may redefine it as an alias for
-.BR SN-NO-DOT ,
+.BR SN\-NO\-DOT ,
 'ne 10
 by including the initialisation:
 .
 .RS
 .nf
 .IP
-\&.als SN SN-NO-DOT
+\&.als SN SN\-NO\-DOT
 .fi
 .RE
 .
@@ -638,8 +662,10 @@ the change becomes effective with the next use of
 the new alias is defined.
 .
 .TP
-.BI .SH\ [ xx ]
+.B .SH\c
+.RI " [" xx ]
 Unnumbered subheading.
+.
 The use of the optional
 .I xx
 argument is a GNU extension,
@@ -678,9 +704,9 @@ in 11.5pt
 text.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS Highlighting
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The
 .I ms
@@ -688,7 +714,8 @@ macros provide a variety of methods to highlight
 or emphasize text:
 .
 .TP
-.B ".B [\fItxt\fP [\fIpost\fP [\fIpre\fP]]]"
+.B .B\c
+.RI " [" txt " [" post " [" pre ]]]
 Sets its first argument in
 .BR "bold type" .
 .
@@ -714,7 +741,7 @@ For example,
 .
 .IP
 prints
-.RB ( foo ).
+.RB \(lq( foo )\(rq.
 .
 .IP
 If you give this macro no arguments,
@@ -723,7 +750,8 @@ prints all text following in bold until
 the next highlighting, paragraph, or heading macro.
 .
 .TP
-.B ".R [\fItxt\fP [\fIpost\fP [\fIpre\fP]]]"
+.B .R\c
+.RI " [" txt " [" post " [" pre ]]]
 Sets its first argument in
 roman (or regular) type.
 .
@@ -732,7 +760,8 @@ It operates similarly to the
 macro otherwise.
 .
 .TP
-.B ".I [\fItxt\fP [\fIpost\fP [\fIpre\fP]]]"
+.B .I\c
+.RI " [" txt " [" post " [" pre ]]]
 Sets its first argument in
 .IR "italic type" .
 It operates similarly to the
@@ -740,15 +769,17 @@ It operates similarly to the
 macro otherwise.
 .
 .TP
-.B ".CW [\fItxt\fP [\fIpost\fP [\fIpre\fP]]]"
-Sets its first argument in a constant width face.
+.B .CW\c
+.RI " [" txt " [" post " [" pre ]]]
+Sets its first argument in a constant-width face.
 .
 It operates similarly to the
 .B B
 macro otherwise.
 .
 .TP
-.B ".BI [\fItxt\fP [\fIpost\fP [\fIpre\fP]]]"
+.B .BI\c
+.RI " [" txt " [" post " [" pre ]]]
 Sets its first argument in bold italic type.
 .
 It operates similarly to the
@@ -756,14 +787,16 @@ It operates similarly to the
 macro otherwise.
 .
 .TP
-.BI ".BX [" txt ]
+.B .BX\c
+.RI " [" txt ]
 Prints its argument and draws a box around it.
 .
 If you want to box a string that contains spaces,
 use a digit-width space (\[rs]0).
 .
 .TP
-.BI ".UL [" txt " [" post ]]
+.B .UL\c
+.RI " [" txt " [" post ]]
 Prints its first argument with an underline.
 .
 If you specify a second argument,
@@ -805,9 +838,9 @@ Print the enclosed
 as a superscript.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS Indents
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 You may need to indent sections of text.
 .
@@ -834,9 +867,9 @@ and
 .BR RE .
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS Lists
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The
 .B IP
@@ -845,9 +878,8 @@ macro handles duties for all lists.
 Its syntax is as follows:
 .
 .TP
-.BI ".IP [" marker " [" width ]]
-.
-.IP
+.B .IP\c
+.RI " [" marker " [" width ]]
 The
 .I marker
 is usually a bullet character
@@ -863,14 +895,14 @@ specifies the indent for the body of each list item.
 .
 Once specified, the indent remains the same for all list items in the
 document until specified again.
-.\" -----
+.\" =====
 .br
 .ne 15
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Tab stops"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 Use the
 .B ta
@@ -885,9 +917,9 @@ You can redefine the
 macro to create a different set of default tab stops.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Displays and keeps"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 Use displays to show text-based examples or figures
 (such as code listings).
@@ -913,7 +945,7 @@ Display macro       Type of display
 With keep      No keep
 _
 \&.DS L        \&.LD   Left-justified.
-\&.DS I [\fIindent\fP] \&.ID   T{
+\&.DS I [\,\fIindent\/\fP]     \&.ID   T{
 Indented (default indent in the \fBDI\fP register).
 T}
 \&.DS B        \&.BD   T{
@@ -945,7 +977,8 @@ X11 documents which actually use
 .B Ds
 and
 .B De
-always load a specific macro file from the X11 distribution (macros.t)
+always load a specific macro file from the X11 distribution
+.RI ( macros.t )
 which provides proper definitions for the two macros.
 .
 .PP
@@ -1009,12 +1042,12 @@ Text in the box is automatically placed in a diversion
 (keep).
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Tables, figures, equations, and references"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The
-.I \-ms
+.I ms
 macros support the standard
 .I groff
 preprocessors:
@@ -1028,8 +1061,8 @@ Mark text meant for preprocessors by enclosing it
 in pairs of tags as follows:
 .
 .TP
-.BR ".TS [H]" " and " .TE
-Denotes a table, to be processed by the
+.BR .TS " [" H "] and " .TE
+Denote a table to be processed by the
 .I tbl
 preprocessor.
 .
@@ -1050,7 +1083,7 @@ prints the header on the next page as well.
 .
 .TP
 .BR .PS " and " .PE
-Denotes a graphic, to be processed by the
+Denote a graphic to be processed by the
 .I pic
 preprocessor.
 .
@@ -1064,8 +1097,10 @@ or by using a graphics program such as
 .IR xfig .
 .
 .TP
-.BR ".EQ [\fI\,align\/\fP]" " and " .EN
-Denotes an equation, to be processed by the
+.B .EQ\c
+.RI " [" align "] and "\c
+.B .EN
+Denote an equation to be processed by the
 .I eqn
 preprocessor.
 .
@@ -1077,11 +1112,11 @@ argument can be
 or\~\c
 .B I
 to center (the default), left-justify, or indent
-the equation.
+the equation, respectively.
 .
 .TP
 .BR .[ " and " .]
-Denotes a reference, to be processed by the
+Denote a reference to be processed by the
 .I refer
 preprocessor.
 .
@@ -1092,9 +1127,9 @@ to the preprocessor and the format of the
 bibliographic database.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS Footnotes
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The
 .I ms
@@ -1134,11 +1169,12 @@ register as follows:
 .
 .TP
 0
-Prints the footnote number as a superscript; indents the footnote (default).
+Prints the footnote number as a superscript; indents the footnote
+(default).
 .
 .TP
 1
-Prints the number followed by a period (like\~1.\&)
+Prints the number followed by a period (that is,\~\(lq1.\(rq\&)
 and indents the footnote.
 .
 .TP
@@ -1147,10 +1183,11 @@ Like\~1, without an indent.
 .
 .TP
 3
-Like\~1, but prints the footnote number as a hanging paragraph.
+Like\~1, but prints the footnote number as a paragraph with a hanging
+indent.
 .
-.LP
 .RE
+.LP
 You can use footnotes safely within keeps and displays,
 but avoid using numbered footnotes within floating keeps.
 .
@@ -1172,9 +1209,9 @@ are in the same order as the corresponding occurrences of
 .BR \[rs]** .
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Headers and footers"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 There are three ways to define headers and footers:
 .
@@ -1184,22 +1221,24 @@ Use the strings
 .BR CH ,
 and
 .B RH
-to set the left, center, and right headers; use
+to set the left, center, and right headers.
+Use
 .BR LF ,
 .BR CF ,
 and
 .B RF
 to set the left, center, and right footers.
 .
-This works best for documents that do not distinguish
-between odd and even pages.
+The string-setting approach works best for documents that do not
+distinguish between odd and even pages.
 .
 .IP \(bu
 Use the
 .B OH
 and
 .B EH
-macros to define headers for the odd and even pages; and
+macros to define headers for the odd and even pages,
+and
 .B OF
 and
 .B EF
@@ -1211,16 +1250,25 @@ The syntax for these macros is as follows:
 .RS
 .
 .IP
-.B ".OH '\fIleft\/\fP'\,\fIcenter\/\fP'\,\fIright\/\fP'"
+.BI . XX " \[aq]" left \[aq] center \[aq] right \[aq]
 .RE
 .
 .IP
+where
+.I XX
+is one of the foregoing four macros and each of
+.IR left ,
+.IR center ,
+and
+.I right
+is text of your choice.
+.
 You can replace the quote (\[aq]) marks with any character not
 appearing in the header or footer text.
 .
 .
-.PP
-You can also redefine the
+.IP \(bu
+You can redefine the
 .B PT
 and
 .B BT
@@ -1230,15 +1278,15 @@ the header and footer, respectively.
 The header process also calls the (undefined)
 .B HD
 macro after
-.B PT ;
+.BR PT ;
 you can define this macro if you need additional processing
 after printing the header
 (for example, to draw a line below the header).
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS Margins
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 You control margins using a set of number registers.
 .
@@ -1268,9 +1316,9 @@ provide the information necessary to
 derive the right margin.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Multiple columns"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The
 .I ms
@@ -1295,7 +1343,8 @@ Single-column mode.
 Two-column mode.
 .
 .TP
-.BI ".MC [" width " [" gutter ]]
+.B .MC\c
+.RI " [" column-width " [" gutter-width ]]
 Multi-column mode.
 .
 If you specify no arguments, it is equivalent to the
@@ -1303,9 +1352,9 @@ If you specify no arguments, it is equivalent to the
 macro.
 .
 Otherwise,
-.I width
+.I column-width
 is the width of each column and
-.I gutter
+.I gutter-width
 is the space between columns.
 .
 The
@@ -1313,9 +1362,9 @@ The
 number register is the default gutter width.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Creating a table of contents"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 Wrap text that you want to appear in the table of contents in
 .B XS
@@ -1378,13 +1427,13 @@ specified by the
 string.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Fractional point sizes"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 Traditionally, the
 .I ms
-macros only support integer values for the document\[aq]s font size
+macros only support integer values for the document's font size
 and vertical spacing.
 .
 To overcome this restriction, values larger than or equal to 1000 are
@@ -1409,9 +1458,9 @@ Due to backwards compatibility, the value of
 must be smaller than 40000 (this is 40.0 points).
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "DIFFERENCES FROM troff ms"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The
 .I "groff ms"
@@ -1446,7 +1495,7 @@ rather than silently to ignore them.
 Some Bell Labs localisms are not implemented by default.
 .
 However, if you call the otherwise undocumented
-.BR SC
+.B SC
 section-header macro, you will enable implementations of three other
 archaic Bell Labs macros:
 .BR UC ,
@@ -1467,7 +1516,7 @@ macros both collide with different macros in the Berkeley version of
 .IP
 These emulations are sufficient to give back the 1976 Kernighan\~&
 Cherry paper
-.I "Typesetting Mathematics \(en User\[aq]s Guide"
+.I "Typesetting Mathematics \(en User's Guide"
 its section headings, and restore some text that had gone missing as
 arguments of undefined macros.
 .
@@ -1561,20 +1610,20 @@ macro is evaluated.
 This implies that
 .B PO
 should not be used early in the document, unless it is changed also:
-Remember that accessing an undefined register automatically defines it.
+remember that accessing an undefined register automatically defines it.
 .br
 .ne 23
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS Strings
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 You can redefine the following strings to adapt the
 .I "groff ms"
 macros to languages other than English:
+.RS
 .TS
-center;
 cb   cb
 lfCW l.
 String Default Value
@@ -1596,12 +1645,13 @@ MONTH11 November
 MONTH12        December
 _
 .TE
+.RE
 .
 .
 .PP
 The
-.B \[rs]*-
-string produces an em dash \[em] like this.
+.B \[rs]*\-
+string produces an em dash\[em]like this.
 .
 .
 .PP
@@ -1609,16 +1659,16 @@ Use
 .B \[rs]*Q
 and
 .B \[rs]*U
-to get a left and right typographer\[aq]s quote,
+to get a left and right typographer's quote,
 respectively, in
 .I troff
 (and plain quotes in
 .IR nroff ).
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS Text Settings
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The
 .B FAM
@@ -1652,12 +1702,12 @@ The hyphenation flags (as set by the
 request) are set from the
 .B HY
 register;
-the default is\~14.
+the default is\~6.
 .
 .
 .PP
 Improved accent marks
-(as originally defined in Berkeley\[aq]s
+(as originally defined in Berkeley's
 .I ms
 version)
 are available by specifying the
@@ -1672,11 +1722,11 @@ For example,
 produces an n with a tilde over it.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "NAMING CONVENTIONS"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
-The following conventions are used for names of macros, strings and
+The following conventions are used for names of macros, strings, and
 number registers.
 .
 External names available to documents that use the
@@ -1726,46 +1776,53 @@ and\~\c
 Names containing only uppercase letters and digits.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH FILES
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
-.B @MACRODIR@/ms.tmac
+.I @MACRODIR@/ms.tmac
 (a wrapper file for
-.BR s.tmac )
+.IR s.tmac )
 .br
-.B @MACRODIR@/s.tmac
+.I @MACRODIR@/s.tmac
+.
+.
+.
+.\" ====================================================================
+.SH AUTHORS
+.\" ====================================================================
+The GNU version of the
+.I ms
+macro package was written by James Clark and contributors.
 .
+This document was (re-)written by
+.MT lkollar@\:despammed.com
+Larry Kollar
+.ME .
 .
 .
-.\" --------------------------------------------------------------------
-.ad l
+.\" ====================================================================
 .SH "SEE ALSO"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .BR groff (@MAN1EXT@),
 .BR @g@troff (@MAN1EXT@),
 .BR @g@tbl (@MAN1EXT@),
 .BR @g@pic (@MAN1EXT@),
 .BR @g@eqn (@MAN1EXT@),
-.BR @g@refer (@MAN1EXT@),
-.I Groff: The GNU Implementation of troff
-by Trent Fisher and Werner Lemberg.
+.BR @g@refer (@MAN1EXT@)
 .
 .
-.\" --------------------------------------------------------------------
-.SH COPYING
-.\" --------------------------------------------------------------------
-.co
-.\" --------------------------------------------------------------------
-.SH AUTHORS
-.\" --------------------------------------------------------------------
-.au
+.PP
+.IR "Groff: The GNU Implementation of troff" ,
+by Trent A.\& Fisher and Werner Lemberg
 .
 .
+.\" Restore compatibility mode (for, e.g., Solaris 10/11).
 .cp \n[groff_ms_C]
 .
 .
 .\" Local Variables:
 .\" mode: nroff
 .\" End:
+.\" vim: set filetype=groff:
similarity index 60%
rename from tmac/groff_trace.man
rename to tmac/groff_trace.7.man
index 7b04373..85c2952 100644 (file)
@@ -1,4 +1,4 @@
-.TH GROFF_TRACE @MAN7EXT@ "@MDATE@" "Groff Version @VERSION@"
+.TH GROFF_TRACE @MAN7EXT@ "@MDATE@" "groff @VERSION@"
 .SH NAME
 groff_trace \- groff macro package trace.tmac
 .
@@ -6,50 +6,44 @@ groff_trace \- groff macro package trace.tmac
 .\" File position: <groff-source>/tmac/groff_trace.man
 .
 .
-.\" --------------------------------------------------------------------
-.\" Legal Terms
-.\" --------------------------------------------------------------------
+.\" Save and disable compatibility mode (for, e.g., Solaris 10/11).
+.do nr groff_trace_C \n[.C]
+.cp 0
 .
-.de co
-Copyright \[co] 2002-2014 Free Software Foundation, Inc.
-
-This file is part of groff, the GNU roff type-setting system.
-
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.3 or
-any later version published by the Free Software Foundation; with the
-Invariant Sections being this .ig-section and AUTHOR, with no
-Front-Cover Texts, and with no Back-Cover Texts.
-
-A copy of the Free Documentation License is included as a file called
-FDL in the main directory of the groff source package.
-..
-.
-.de au
-Written by
-.MT groff-bernd.warken-72@web.de
-Bernd Warken
-.ME .
-..
 .
-.ds Ellipsis .\|.\|.\&\"
-.
-.
-.\" --------------------------------------------------------------------
+.\" ====================================================================
+.\" Legal Terms
+.\" ====================================================================
+.\"
+.\" Copyright (C) 2002-2018 Free Software Foundation, Inc.
+.\"
+.\" This file is part of groff, the GNU roff type-setting system.
+.\"
+.\" Permission is granted to copy, distribute and/or modify this
+.\" document under the terms of the GNU Free Documentation License,
+.\" Version 1.3 or any later version published by the Free Software
+.\" Foundation; with no Invariant Sections, with no Front-Cover Texts,
+.\" and with no Back-Cover Texts.
+.\"
+.\" A copy of the Free Documentation License is included as a file
+.\" called FDL in the main directory of the groff source package.
+.
+.
+.\" ====================================================================
 .SH SYNOPSIS
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .SY "groff \-m trace"
-.RI [ options
-.IR \*[Ellipsis] ]
-.RI [ files
-.IR \*[Ellipsis] ]
+.RI [ option
+\&.\|.\|.\&]
+.RI [ input-file
+\&.\|.\|.\&]
 .YS
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH DESCRIPTION
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The
 .I trace
@@ -66,7 +60,7 @@ This greatly eases to track down an error in some macro.
 .
 .P
 This tracing process is activated by specifying the groff or troff
-command line option
+command-line option
 .BR \-m\ trace .
 .
 This works also with the
@@ -81,7 +75,7 @@ Only macros that are defined after this line are traced.
 .
 .
 .P
-If command line option
+If the command-line option
 .B \-r\ trace-full=1
 is given (or if this register is set in the document), number and
 string register assignments together with some other requests are
@@ -105,9 +99,9 @@ Instead, the existing macro definition and appending facilities are
 modified such that they display diagnostic messages.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH EXAMPLES
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 In the following examples, a roff fragment is fed into groff via
 standard input.
@@ -121,7 +115,7 @@ The resulting diagnostic messages are displayed directly below the
 corresponding example.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Command line option"
 Example:
 .
@@ -148,7 +142,7 @@ The entry and the exit of each macro call is displayed on the terminal
 (standard output) \[em] together with the arguments (if any).
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Nested macro calls"
 Example:
 .
@@ -179,7 +173,7 @@ This shows that macro calls can be nested.
 This powerful feature can help to tack down quite complex call stacks.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SS "Activating with .mso"
 Example:
 .
@@ -203,8 +197,8 @@ Example:
 .RE
 .
 .P
-Here, the tracing is activated within the document, not by a command
-line option.
+Here, the tracing is activated within the document, not by a
+command-line option.
 .
 As tracing was not active when macro
 .I before
@@ -214,9 +208,9 @@ the macro
 is fully protocolled.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH PROBLEMS
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 Because
 .B trace.tmac
@@ -243,7 +237,7 @@ request it passes \[oq]\en[bar]\[cq] instead.
 .
 .
 .P
-The solution to this problem is to use groff\[aq]s
+The solution to this problem is to use groff's
 .B \eE
 escape which is an escape character not interpreted in copy mode, for
 example
@@ -254,9 +248,9 @@ example
 .EE
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH FILES
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 The
 .I trace
@@ -269,21 +263,44 @@ see
 for details.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH ENVIRONMENT
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .TP
-.B $GROFF_TMAC_PATH
+.GROFF_TMAC_PATH
 A colon-separated list of additional tmac directories in which to
 search for macro files; see
 .BR groff_tmac (@MAN5EXT@)
 for details.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
+.SH AUTHORS
+.\" ====================================================================
+.
+The
+.I trace
+macro packages was written by James Clark.
+.
+This document was written by
+.MT groff\-bernd.warken\-72@\:web.de
+Bernd Warken
+.ME .
+.
+.
+.\" ====================================================================
 .SH "SEE ALSO"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
+.
+.IR "Groff: The GNU Implementation of troff" ,
+by Trent A.\& Fisher and Werner Lemberg,
+is the primary
+.I groff
+manual.
+.
+You can browse it interactively with \[lq]info groff\[rq].
+.
 .
 .TP
 .BR groff (@MAN1EXT@)
@@ -306,23 +323,11 @@ A general description of groff macro packages.
 .BR groff (@MAN7EXT@)
 A short reference for the groff formatting language.
 .
-.P
-A complete reference for all parts of the groff system is found in the
-groff
-.BR info (1)
-file.
-.
-.
-.\" --------------------------------------------------------------------
-.SH COPYING
-.\" --------------------------------------------------------------------
-.co
-.\" --------------------------------------------------------------------
-.SH AUTHORS
-.\" --------------------------------------------------------------------
-.au
+.\" Restore compatibility mode (for, e.g., Solaris 10/11).
+.cp \n[groff_trace_C]
 .
 .
 .\" Local Variables:
 .\" mode: nroff
 .\" End:
+.\" vim: set filetype=groff:
similarity index 72%
rename from tmac/groff_www.man
rename to tmac/groff_www.7.man
index c4d5761..9c2f204 100644 (file)
@@ -1,45 +1,38 @@
-.TH GROFF_WWW @MAN7EXT@ "@MDATE@" "Groff Version @VERSION@"
+.TH GROFF_WWW @MAN7EXT@ "@MDATE@" "groff @VERSION@"
 .SH NAME
 groff_www \- groff macros for authoring web pages
 .
 .\" User level guide to using the -mwww macroset
 .
+.
+.\" Save and disable compatibility mode (for, e.g., Solaris 10/11).
 .do nr groff_www_C \n[.C]
 .cp 0
 .do mso www.tmac
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .\" Legal Terms
-.\" --------------------------------------------------------------------
-.
-.de co
-Copyright \[co] 2000-2014 Free Software Foundation, Inc.
-
-This file is part of groff.
-
-groff 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.
-
-groff 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
-.UR http://www.gnu.org/licenses/
-GPLs
-.UE .
-..
+.\" ====================================================================
+.\"
+.\" Copyright (C) 2000-2018 Free Software Foundation, Inc.
+.\"
+.\" This file is part of groff, the GNU roff type-setting system.
+.\"
+.\" 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
+.\" <http://www.gnu.org/licenses/>.
 .
-.de au
-.B \%grohtml
-was written by
-.MTO gaius@glam.ac.uk "Gaius Mulley"
-..
 .
 .\" we need the .LK here as we use it in the middle as an example --
 .\" once the user requests .LK then the automatic generation of links
@@ -49,23 +42,25 @@ was written by
 .HR
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH SYNOPSIS
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
-.B "groff \-mwww"
-[ options ]
-file ...
+.SY "groff \-m www"
+.RI [ option
+\&.\|.\|.\&]
+.RI [ input-file
+\&.\|.\|.\&]
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH DESCRIPTION
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 This manual page describes the GNU \-mwww macro package, which is part of
 the groff document formatting system.
 .
-The manual page is very a basic guide, and the html device driver
+The manual page is very a basic guide, and the HTML device driver
 .RB ( \%grohtml )
 has been completely rewritten but still remains as in an alpha state.
 .
@@ -73,7 +68,7 @@ It has been included into the distribution so that a lot of people have a
 chance to test it.
 .
 Note that this macro file is automatically called (via the
-.B troffrc
+.I troffrc
 file) if you use
 .B \-Thtml
 or
@@ -95,14 +90,13 @@ l l.
 \&.HX@automatic heading level cut off
 \&.BCL@specify colours on a web page
 \&.BGIMG@specify background image
-\&.URL@create a url using two parameters
-\&.FTP@create an ftp reference
-\&.MTO@create a html email address
-\&.FTP@create an ftp reference
-\&.TAG@generate an html name
+\&.URL@create a URL using two parameters
+\&.FTP@create an FTP reference
+\&.MTO@create an HTML email address
+\&.TAG@generate an HTML name
 \&.IMG@include an image file
-\&.PIMG@include png image
-\&.MPIMG@place png on the margin and wrap text around it
+\&.PIMG@include PNG image
+\&.MPIMG@place PNG on the margin and wrap text around it
 \&.HnS@begin heading
 \&.HnE@end heading
 \&.LK@emit automatically collected links.
@@ -118,13 +112,13 @@ l l.
 \&.DLE@definition list end
 \&.LI@insert a list item
 \&.DC@generate a drop capital
-\&.HTML@pass an html raw request to the device driver
+\&.HTML@pass an HTML raw request to the device driver
 \&.CDS@code example begin
 \&.CDE@code example end
 \&.ALN@place links on left of main text.
 \&.LNS@start a new two-column table with links in the left.
 \&.LNE@end the two-column table.
-\&.LINKSTYLE@initialize default url attributes.
+\&.LINKSTYLE@initialize default URL attributes.
 .TE
 .
 .
@@ -138,9 +132,9 @@ and
 preprocessors is acceptable as input.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH REQUESTS
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .TP
 .B .JOBNAME filename
@@ -151,7 +145,7 @@ A file is split whenever a \&.SH or \&.NH\ 1 is encountered.
 Its argument is the file stem name for future output files.
 .
 This option is equivalent to
-.BR \%grohtml \[aq]s
+.BR \%grohtml 's
 .B \-j
 option.
 .
@@ -181,7 +175,7 @@ tells
 that no heading links should be created at all.
 .
 Another method for turning automatic headings off is by issuing the
-the command line switch
+command-line switch
 .B \-P\-l
 to
 .BR groff .
@@ -210,7 +204,7 @@ If
 and
 .B after
 are absent then the
-.B url
+.B URL
 becomes the anchor text.
 .
 Hyphenation is disabled while printing the actual URL;
@@ -219,7 +213,9 @@ explicit breakpoints should be inserted with the
 escape.
 .
 Here is how to encode
-.URL http://\:foo.\:org/ "foo" :
+.UR http://\:foo.\:org/
+foo
+.UE :
 .RS
 .IP
 .B .URL http://\[rs]:foo.\[rs]:org/ "foo" :
@@ -233,21 +229,23 @@ or
 it appears as:
 .RS
 .IP
-foo \[la]\f[C]http://foo.org\f[]\[ra]:
+foo \[la]\f[CR]http://foo.org\f[]\[ra]:
 .RE
 .
 .IP
 The URL macro can be of any type; for example we can reference
-.URL pic.html "Eric Raymond\[aq]s pic guide"
+.UR pic.html
+Eric Raymond's pic guide
+.UE
 by:
 .RS
 .IP
-.B .URL pic.html \[dq]Eric Raymond\[aq]s pic guide\[dq]
+.B .URL pic.html \[dq]Eric Raymond's pic guide\[dq]
 .RE
 .
 .TP
 .B .MTO address [description] [after]
-Generate an email html reference.
+Generate an email HTML reference.
 .
 The first argument is mandatory as the email address.
 .
@@ -262,8 +260,10 @@ An optional third argument is stuff printed immediately afterwards.
 Hyphenation is disabled while printing the actual email address.
 .
 For example,
-.MTO joe@user.org "Joe User"
-was achieved by the following macro:
+.MT joe@user.org
+Joe User
+.ME
+can be achieved by the following macro:
 .RS
 .IP
 .B .MTO joe@user.org \[dq]Joe User\[dq]
@@ -285,9 +285,9 @@ or
 .
 .TP
 .B .FTP url [description] [after]
-indicates that data can be obtained via ftp.
+indicates that data can be obtained via FTP.
 .
-The first argument is the url and the second is the browser text.
+The first argument is the URL and the second is the browser text.
 .
 A third argument, similar to the macros above, is intended for stuff
 printed immediately afterwards.
@@ -296,21 +296,25 @@ The second and the third parameter are optional.
 .
 Hyphenation is disabled while printing the actual URL.
 .
-As an example, here the location of the
-.FTP ftp://\:ftp.gnu.org/ "GNU ftp server" .
+As an example, here is the location of the
+.UR ftp://\:ftp.gnu.org/
+GNU FTP server
+.UE .
 .
-The macro example above was specified by:
+The macro example above can be specified as:
 .RS
 .IP
-.B .FTP ftp://\[rs]:ftp.gnu.org/ \[dq]GNU ftp server\[dq] .
+.B .FTP ftp://\[rs]:ftp.gnu.org/ \[dq]GNU FTP server\[dq] .
 .RE
 .
 .TP
 .B .TAG name
-Generates an html name tag from its argument.
+Generates an HTML name tag from its argument.
 .
 This can then be referenced using the
-.URL #URL URL
+.UR #URL
+URL
+.UE
 macro.
 .
 As you can see, you must precede the tag name with
@@ -343,7 +347,8 @@ The first argument is the horizontal location: right, left, or center
 or
 .BR \-C ).
 .
-Alignment is centered by default (\-C).
+Alignment is centered by default
+.RB ( \-C ).
 .
 The second argument is the filename.
 .
@@ -353,9 +358,9 @@ If the width is absent it defaults to 1\~inch.
 .
 If the height is absent it defaults to the width.
 .
-This maps onto an html img tag.
+This maps onto an HTML img tag.
 .
-If you are including a png image then it is advisable to use the
+If you are including a PNG image then it is advisable to use the
 .B PIMG
 macro.
 .
@@ -365,7 +370,7 @@ Include an image in PNG format.
 .
 This macro takes exactly the same parameters as the
 .B IMG
-macro; it has the advantage of working with postscript and html devices
+macro; it has the advantage of working with PostScript and HTML devices
 also since it can automatically convert the image into the EPS format,
 using the following programs of the
 .B netpbm
@@ -375,7 +380,7 @@ package:
 and
 .BR pnmtops .
 .
-If the document isn\[aq]t processed with
+If the document isn't processed with
 .B \-Thtml
 or
 .B \-Txhtml
@@ -479,7 +484,7 @@ In this case you might wish to disable automatic links to headings.
 This can be done via
 .B \-P\-l
 from the command line.
-.\" or by using a call to `.HX 0'.
+.\" or by using a call to \[lq].HX 0\[rq].
 .
 .
 .TP
@@ -553,7 +558,7 @@ Example:
 .
 .TP
 .B .HTML
-All text after this macro is treated as raw html.
+All text after this macro is treated as raw HTML.
 .
 If the document is processed without
 .B \-Thtml
@@ -638,7 +643,7 @@ This should be called at the end of the document if \&.ALN was used.
 .
 .TP
 .B ".LINKSTYLE color [ fontstyle [ openglyph closeglyph ] ]"
-Initialize default url attributes to be used if this macro set is not
+Initialize default URL attributes to be used if this macro set is not
 used with the HTML device.
 .
 The macro set initializes itself with the following call
@@ -646,7 +651,7 @@ The macro set initializes itself with the following call
 .IP
 .nf
 .ft B
-\&.LINKSTYLE blue C \e[la] \e[ra]
+\&.LINKSTYLE blue CR \e[la] \e[ra]
 .ft P
 .fi
 .RE
@@ -655,67 +660,72 @@ The macro set initializes itself with the following call
 but these values will be superseded by a user call to LINKSTYLE.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH SECTION HEADING LINKS
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 By default
 .B \%grohtml
 generates links to all section headings and places these at the top of the
-html document.
+HTML document.
 .
 (See
-.URL #LK LINKS
+.UR #LK
+LINKS
+.UE
 for details of how to switch this off or alter the position).
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH LIMITATIONS OF GROHTML
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .
 .LP
 .B tbl
 information is currently rendered as a PNG image.
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH FILES
-.\" --------------------------------------------------------------------
-@MACRODIR@/www.tmac
-.
+.\" ====================================================================
 .
-.\" --------------------------------------------------------------------
-.SH BUGS
-.\" --------------------------------------------------------------------
+.I @MACRODIR@/www.tmac
 .
-Report bugs to the
-.MTO bug-groff@\:gnu.org "Groff Bug Mailing List" .
 .
-Include a complete, self-contained example that will allow the bug to
-be reproduced, and say which version of groff you are using.
+.\" ====================================================================
+.SH AUTHORS
+.\" ====================================================================
+The
+.I www
+macro package
+was written by
+.MT gaius@\:glam.ac.uk
+Gaius Mulley
+.ME ,
+with additions by
+.MT wl@\:gnu.org
+Werner Lemberg
+.ME
+and
+.MT groff\-bernd.warken\-72@\:web.de
+Bernd Warken
+.ME .
 .
 .
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .SH "SEE ALSO"
-.\" --------------------------------------------------------------------
+.\" ====================================================================
 .BR groff (@MAN1EXT@),
-.BR @g@troff (@MAN1EXT@)
+.BR @g@troff (@MAN1EXT@),
 .BR \%grohtml (@MAN1EXT@),
 .BR netpbm (1)
 .
 .
-.\" --------------------------------------------------------------------
-.SH COPYING
-.\" --------------------------------------------------------------------
-.co
-.\" --------------------------------------------------------------------
-.SH AUTHORS
-.\" --------------------------------------------------------------------
-.au
-.
-.
+.\" Restore compatibility mode (for, e.g., Solaris 10/11).
 .cp \n[groff_www_C]
 .
+.
 .\" Local Variables:
 .\" mode: nroff
 .\" End:
+.\" vim: set filetype=groff:
index ef0f09f..93e8043 100644 (file)
@@ -1,23 +1,24 @@
-% This is the groff hyphenation pattern file `hyphen.cs' for Czech.
+% This is the groff hyphenation pattern file 'hyphen.cs' for Czech.
 %
-% It is based on the TeX pattern file `czhyphen.tex', version 3 (1995),
+% It is based on the TeX pattern file 'czhyphen.tex', version 3 (1995),
 % prepared by Pavel ©eveèek <pavel@lingea.cz>.
 %
 % Here is the copyright message:
 %
-%   This is free software; you can redistribute it and/or modify
-%   it under the terms of the GNU General Public License as published by
+%   This is free software; you can redistribute it and/or modify it
+%   under the terms of the GNU General Public License as published by
 %   the Free Software Foundation; either version 2 of the License, or
 %   (at your option) any later version.
 %
-%   This file is distributed in the hope that it will be useful,
-%   but WITHOUT ANY WARRANTY; without even the implied warranty of
-%   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-%   GNU General Public License for more details.
+%   This file is distributed in the hope that it will be useful, but
+%   WITHOUT ANY WARRANTY; without even the implied warranty of
+%   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+%   General Public License for more details.
 %
 %   You should have received a copy of the GNU General Public License
 %   along with this program; if not, write to the Free Software
-%   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+%   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%   02110-1301 USA.
 %
 % Please check the original file for more details.
 %
@@ -3663,8 +3664,13 @@ z
 ¾¹4tì
 }
 
+% ======================================================================
+% Editor settings
+% ======================================================================
+%
 % Local Variables:
+% mode: tex
 % coding: latin-2
+% fill-column: 72
 % End:
-%
-% End of file `hyphen.cs'.
+% vim: set filetype=tex textwidth=72:
index 1fb55dc..0c63672 100644 (file)
-% This is the groff hyphenation pattern file `hyphen.den' for German with
-% hyphenation rules for the new orthography.
+% This is the groff hyphenation pattern file 'hyphen.den' for German
+% with hyphenation rules for the new orthography.
 %
-% It is based on the TeX pattern file `dehyphn.tex', revision level 31
-% (2001-05-07).
+% It is based on the file 'dehyphn-x-2017-03-31.pat' taken from the
+% 'dehyph-exptl-0.41' package, converted to latin-1 encoding.
 %
-% Here is the copyright message:
+% Below is the original copyright message.
 %
-%   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%   dehyphn   --  TeX-Trennmuster fuer die
-%                 neue deutsche Rechtschreibung
+% -------------------------------------------------------------------------
 %
-%                 TeX hyphenation patterns for the
-%                 new German orthography
-%   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% TeX-Trennmuster für die reformierte (2006) deutsche Rechtschreibung
 %
+% Copyright (c) 2013-2017
+% Stephan Hennig, Werner Lemberg, Guenter Milde, Sander van Geloven,
+% Georg Pfeiffer, Gisbert W. Selke, Tobias Wendorf
 %
-%   Copyright (C) 1988,1991 Rechenzentrum der Ruhr-Universitaet Bochum
-%                 [german hyphen patterns]
-%   Copyright (C) 1993,1994,1999 Bernd Raichle/DANTE e.V.
-%                 [macros, adaption for TeX 2]
-%   Copyright (C) 1998--2001 Walter Schmidt
-%                 [adaption to new German orthography]
+% Licensed under the MIT license. Full license text available from
 %
-%   -----------------------------------------------------------------
-%   IMPORTANT NOTICE:
+%   http://opensource.org/licenses/mit-license.php
 %
-%   This program can be redistributed and/or modified under the terms
-%   of the LaTeX Project Public License Distributed from CTAN
-%   archives in directory macros/latex/base/lppl.txt; either
-%   version 1 of the License, or any later version.
-%   -----------------------------------------------------------------
 %
-% Please check the original file for more details.
+% The word list is available from
 %
-% It has been made suitable for groff by expanding all macros to real
-% characters in latin-1 encoding.
+%   http://repo.or.cz/w/wortliste.git?a=commit;h=5fd786fcb1ed48448e058672f1f58d185653d8c6
 %
+% The used patgen parameters are
+%
+%   1 1 | 2 5 | 1 1 1
+%   2 2 | 2 5 | 1 2 1
+%   3 3 | 2 6 | 1 1 1
+%   4 4 | 2 6 | 1 4 1
+%   5 5 | 2 7 | 1 1 1
+%   6 6 | 2 7 | 1 6 1
+%   7 7 | 2 13 | 1 4 1
+%   8 8 | 2 13 | 1 8 1
+
 \patterns{%
-.aa6l .ab3a4s .ab3ei .abi2 .ab3it .ab1l .ab1r .ab3u .ad3o4r .alti6
-.ana3c .an5alg .an1e
-.ang8s2t1
-.an1s .ap1p .ar6sc .ar6ta .ar6tei .as2z
-.au2f1 .au2s3 .be5erb .be3na .ber6t5r .bie6r5 .bim6s5t .brot3 .bru6s
-.ch6 .che6f5 .da8c .da2r .dar5in .dar5u .den6ka .de5r6en .des6pe
-.de8spo .de3sz .dia3s4 .dien4 .dy2s1 .ehren5 .eine6 .ei6n5eh .ei8nen
-.ein5sa .en6der .en6d5r .en3k4 .en8ta8 .en8tei .en4t3r .epo1 .er6ban
-.er6b5ei .er6bla .er6d5um .er3ei .er5er .er3in .er3o4b .erwi5s .es1p
-.es8t1l .es8t1n
-.ex1a2 .ex3em .fal6sc .fe6st5a .flu4g3 .furch8 .ga6ner .ge3n4a
-.ge5rö
-.ges6
-.halb5 .halbe6 .hal6br .haup4 .hau4t .heima6 .he4r3e
-.her6za .he5x .hin3 .hir8sc .ho4c .hu3sa .hy5o .ibe5 .ima6ge .in1
-.ini6 .is5chi .jagd5 .kal6k5o .ka6ph .ki4e .kop6f3 .kraf6 .kü5ra
-.lab6br .liie6 .lo6s5k .lö4s3t .ma5d .mi2t1 .no6th .no6top
-.obe8ri .ob1l .obs2 .ob6st5e .or3c .ort6s5e .ost3a .oste8r .pe4re
-.pe3ts .ph6 .po8str .rau4m3 .re5an .ro8q .ru5the .rü5be
-.sch8 .se6e .se5n6h .se5ra .si2e .spi6ke .st4 .sy2n
-.tages5 .tan6kl .ta8th .te6e .te8str .to6der .to8nin .to6we .um1
-.umpf4 .un1 .une6 .unge5n .ur1c .ur5en .ve6rin .vora8 .wah6l5 .we8ges
-.we8s2t .wes3te
-.wo6r .wor3a .wun4s .zi4e .zuch8 .ände8re .öch8 aa1c aa2gr
-aal5e aa6r5a a5arti aa2s1t aat2s 6aba ab3art 1abdr 6abel aben6dr
-ab5erk ab5err ab5esse 1abf 1abg 1abhä ab1ir 1abko a1bl ab1la
-5ablag a6blaß ab4ler ab1lu a8blä 5a6blö abma5c
-1abn ab1ra ab1re 5a6brec ab1ro
-ab1s
-ab8sk abs2z 3abtei ab1ur 1abw
-5abze 5abzu ab1än abäu8 a4ce. a5chal ach5art ach5au a1che
-a8chent ach6er. a6ch5erf a1chi ach1l ach3m ach5n a1cho ach3re a1chu
-ach1w a1chy ach5äf ack1o acks6t ack5sta a1d 8ad. a6d5ac ad3ant
-ad8ar 5addi a8dein ade5o8 adi5en 1adj 1adle ad1op a2dre 3adres adt1
-1adv a6dä a1e2d ae1r a1er. 1aero 8afa a3fal af1an a5far a5fat
-af1au a6fentl a2f1ex af1fr af5rau af1re 1afri af6tent af6tra aft5re
-a6f5um 8afä ag5abe 5a4gent ag8er ages5e 1aggr ag5las ag1lo a1gn
-ag2ne 1agog a6g5und a1ha a1he ah5ein a4h3erh a1hi ahl1a ah1le ah4m3ar
-ahn1a a5ho ahra6 ahr5ab ah1re ah8rei ahren8s ahre4s3 ahr8ti ah1ru a1hu
-ah8ö ai3d2s ai1e aif6 a3inse ai4re. a5isch. ais8e a3ismu ais6n
-aiso6 a1j 1akad a4kade a1ke a1ki 1akko 5akro1 a5lal al5ans 3al8arm
-al8beb al8berw alb5la 3album al1c a1le a6l5e6be a4l3ein a8lel a8lerb
-a8lerh a6lert 5a6l5eth 1algi al4gli al3int al4lab al8lan al4l3ar
-alle3g a1lo a4l5ob al6schm al4the
-al4t3re 8a1lu alu5i a6lur
-alu3ta a1lä a6mate 8ame. 5a6meise am6m5ei am6mum am2n ampf3a
-am6schw am2ta a1mu a1mä a3nac a1nad anadi5e an3ako an3alp 3analy
-an3ame an3ara a1nas an5asti a1nat anat5s an8dent ande4s3 an1ec an5eis
-an1e2k 4aner. a6n5erd a8nerf a6n5erke 1anfa 5anfert 1anfä 3angab
-5angebo an3gli ang6lis an2gn 3angri ang5t6 5anhä ani5g ani4ka
-an5i8on an1kl an6kno an4kro 1anl anma5c anmar4 3annah anne4s3 a1no
-5a6n1o2d 5a6n3oma 5a6nord 1anr an1sa 5anschl an4soz an1st 5anstal
-an1s2z 5antenn an1th 5anwä a5ny an4z3ed 5anzeig 5anzieh 3anzug
-an1ä 5anäs a1nö anö8d a1os a1pa 3apfel a2ph1t
-aph5ä6 a1pi 8apl apo1c apo1s
-a6pos2t
-a6poth 1appa ap1pr a1pr
-a5pä a3pü a1ra a4r3af ar3all 3arbei 2arbt ar1c 2a1re ar3ein
-ar2gl 2a1ri ari5es ar8kers ar6les ar4nan ar5o6ch ar1o2d a1rol ar3ony
-a8ror a3ros ar5ox ar6schl 8artei ar6t5ri a1ru a1ry 1arzt arz1w
-ar8zä arä8m arö6 ar5öm ar1ü2 a1sa a6schec
-asch5l asch3m a6schn a3s4hi as1pa asp5l
-as5tev 1asth
-a1str ast3re 8a1ta ata5c ata3la a6tapf ata5pl a1te a6teli aten5a
-ate5ran 6atf 6atg a1th at3hal 1athl 2a1ti 5atlant 3atlas 8atmus 6atn
-a1to a6t5ops ato6ra a6t5ort. 4a1tr a6t5ru at2t1h at5t6hä 6a1tu
-atz1w a1tä a1tü au1a au6bre auch3a au1e aue4l 5aufent
-3auffü 3aufga 1aufn auf1t 3auftr 1aufw 3auge. au4kle aule8s 6aum
-au8mar aum5p 1ausb 3ausd 1ausf 1ausg au8sin
-au4sta 1ausw 1ausz
-aut5eng au1th 1auto auße8 a1v ave5r6a aver6i a1w a6wes a1x
-a2xia a6xio a1ya a1z azi5er. 8aß 1ba 8ba8del ba1la ba1na
-ban6k5r ba5ot bardi6n ba1ro basten6 bau3sp 2b1b bb6le b2bli 2b1c 2b1d
-1be be1a be8at. be1ch 8becht 8becke. be5el be1en bee8rei be5eta bef2
-8beff be1g2 behö8 bei1s 6b5eisen bei3tr b8el bel8o belu3t be3nac
-bend6o be6ners be6nerw be4nor ben4se6 bens5el be1nä be1nü
-be1o2 b8er. be1ra be8rac ber8gab. ber1r be1rü bes8c bes5erh
-bes2p be5tha bet5sc be1un be1ur 8bex be6zwec 2b1f8
-2b1g2
-bga2s5 bge1 2b1h bhole6 1bi bi1bl b6ie bi1el bi1la bilä5 bi1na
-bi4nok
-bi6stu bi5tr bit4t5r b1j 2b1k2 bkü6 bl8 b6la.
-6b1lad 6blag 8blam 1blat b8latt 3blau. b6lav 3ble. b1leb b1led
-8b1leg 8b1leh 8bleid 8bleih 6b3lein
-ble4m3o 4blich b4lind
-8bling b2lio 5blit b4litz b1loh 8b1los 1blu 5blum 2blun blut3a blut5sc
-3blä bläs5c 5blö 3blü blü8sc 2b1m 2b1n 1bo
-bo1ch bo5d6s boe5 8boff 8bonk bo1ra b1ort 2b1p2 b1q 1br brail6 brast8
-bre4a b5red 8bref 8b5riem b6riga bro1s b1rup b2ruz 8bröh
-brös5c 8bs b1sa b8sang b2s1ar b1sc bs3erl bs3erz b8sof b1s2p
-bst1h b3stru b5stä b6sun 2b1t b2t1h 1bu bu1ie bul6k b8ure bu6sin
-6b1v 2b1w 1by1 by6te. 8b1z
-1bä b5ä6s5 1bü
-b6ü5bere büge6 bügel5e bür6sc 1ca cag6 ca5la ca6re
-ca5y c1c 1ce celi4c celich5 ce1ro c8h 2ch. 1chae ch1ah ch3akt cha6mer
-8chanz 5chara 3chari 5chato 6chb 1chef 6chei ch3eil ch3eis 6cherkl
-6chf 4chh 5chiad 5chias 6chins 8chj chl6 5chlor 6ch2m 2chn6 ch8nie
-5cho. 8chob choi8d 6chp ch3ren ch6res ch3rü 2chs 2cht cht5ha
-cht3hi 5chthon ch6tin 6chuh chu4la 6ch3unt chut6t 8chw 1ci ci5tr c2k
-2ck. ck1ei 4ckh ck3l ck3n ck5o8f ck1r 2cks ck5stra ck6s5u c2l 1c8o
-con6ne 8corb cos6t c3q 1c6r 8c1t 1cu 1cy 5cä1 cö5 1da.
-8daas 2dabg 8dabr 6dabt 6dabw 1dac da2gr 6d5alk 8d5amt dan6ce.
-dani5er dan8ker 2danl danla6 6dans 8danzi 6danzu d1ap da2r1a8 2d1arb
-d3arc dar6men 4d3art 8darz 1dat 8datm 2d1auf 2d1aus 2d1b 2d1c 2d1d
-d5de d3d2h ddämme8 1de 2deal de5an de3cha de1e defe6 6deff 2d1ehr
-5d4eic de5isc de8lar del6s5e del6spr de4mag de8mun de8nep dene6r
-8denge. 8dengen de5o6d 2deol de5ram 8derdb der5ein de1ro der1r d8ers
-der5um de4s3am de4s3an de4sau de6sil de4sin de8sor de4spr de2su 8deul
-de5us. 2d1f df2l 2d1g 2d1h 1di dia5c di5ara dice5 di3chr di5ena di1gn
-di1la dil8s di1na 8dind 6dinf 4d3inh 2d1ins di5o6d di3p4t di8sen dis1p
-di5s8per di6s5to
-dis3tr
-di8tan di8tin d1j 6dje 2dju 2d1k 2d1l 2d1m
-2d1n6 dni6 dnje6 1do 6d5obe do6berf 6d5ony do3ran 6dord 2d1org dor4t3h
-6doth dott8e 2d1p d5q dr4 1drah 8drak d5rand 6dre. 4drech
-d6reck 4d3reg 8d3reic d5reife 8drem 8d1ren 2drer 8dres. 6d5rh 1dria
-d1ric 8drind droi6 dro5x 1dru 8drut drös5c 1drü drü5b
-drü8sc 2ds d1sa d6san dsat6 d1sc 5d6scha. 5dschik dse8e d8serg
-8dsl d1sp d4spak ds2po d8spä d1st d1sü 2dt d1ta d1te d1ti
-d1to dt1s6 d1tu d5tä 1du du5als du1b6 du1e duf4t3r 4d3uh du5ie
-8duml 8dumw 2d1und du8ni 6d5unt dur2c durch3 6durl 6dursa 8durt
-dus1t
-du8schr 2d1v 2d1w dwa8l 2d1z 1dä 6däh 8dänd dä6r
-dö8bl d5öl dör6fl dö8sc d5ö4st
-1dü ea4ben e1ac e1ah e1akt e1al. e5alf e1alg e5a8lin e1alk e1all
-e5alp e1alt e5alw e1am e1and ea6nim e1ar. e5arf e1ark e5arm e3art
-e5at. e6ate e6a5t6l e8ats e5att e6au. e1aus e1b e6b5am ebens5e
-eb4lie eb4ser eb4s3in e1che e8cherz e1chi ech3m 8ech3n ech1r ech8send
-ech4su e1chu eck5an e5cl e1d ee5a ee3e ee5g e1ei ee5isc eei4s3t
-ee6lend e1ell ee5lö e1erd ee3r4e ee8reng eere6s5 ee5rä
-ee6tat e1ex e1f e6fau e8fe8b 3effek ef3rom ege6ra eglo6si 1egy e1ha
-e6h5ach eh5ans e6hap eh5auf e1he e1hi ehl3a eh1le ehl5ein eh1mu ehn5ec
-e1ho ehr1a eh1re ehre6n eh1ri eh1ru ehr5um e1hu eh1w e1hy e1hä
-e1hö e3hüt ei1a eia6s ei6bar eich3a eich5r ei4dar ei6d5ei
-ei8derf ei3d4sc ei1e 8eifen 3eifri 1eign eil1d ei6mab ei8mag ein1a4
-ei8nat ei8nerh ei8ness ei6nete ein1g e8ini ein1k ei6n5od ei8nok ei4nor
-e3insä ei1o e1irr ei5ru ei8sab ei5schn ei6s5ent ei8sol ei4t3al
-eit3ar eit1h ei6thi ei8tho eit8samt ei6t5um e1j 1ekd e1ke e1ki e1k2l
-e1kn ekni4 e1la e2l1al 6elan e6lanf e8lanl e6l5ans el3arb el3arm
-e6l3art 5e6lasti e6lauge elbst5a e1le 6elef ele6h e6l5ehe e8leif
-e6l5einh 1elek e8lel 3eleme e6lemen e6lente el5epi e4l3err e6l5ersc
-elf2l elg2 e6l5ins ell8er 4e1lo e4l3ofe el8soh el8tent 5eltern e1lu
-elut2 e1lä e1lü em8dei em8meis 4emo emo5s 1emp1f 1empt 1emto
-e1mu emurk4 emurks5 e1mä en5a6ben en5achs en5ack e1nad en5af
-en5all en3alt en1am en3an. en3ant en3anz en1a6p en1ar en1a6s 6e1nat
-en3auf en3aus en2ce enda6l end5erf end5erg en8dess 4ene. en5eck
-e8neff e6n5ehr e6n5eim en3eis 6enem. 6enen e4nent 4ener. e8nerd
-e6n3erf e4nerg 5energi e6n5erla en5ers e6nerst en5erw 6enes e6n5ess
-e2nex en3glo 2eni enni6s5 ennos4 enns8 e1no e6nober eno8f en5opf
-e4n3ord en8sers ens8kl en1sp ens6por en5t6ag enta5go en8terbu en6tid
-3entla ent5ric 5entwic 5entwu 1entz enu5i e3ny en8zan en1öf
-e1nös e1nüg eo1c e5o6fe e5okk e1on. e3onf e5onk e5onl e5onr
-e5opf e5ops e5or. e1ord e1org eo5r6h eo1t e1pa e8pee e6p5e6g ep5ent
-e1p2f e1pi 5epid e6pidem e1pl 5epos e6pos. ep4p3a e1pr e1pä e1q
-e1ra. er5aal 8eraba e5rabel er5a6ben e5rabi er3abs er3ach era5e
-era5k6l er3all er3amt e3rand e3rane er3ans e5ranz. e1rap er3arc
-e3rari er3a6si e1rat erat3s er3auf e3raum 3erbse er1c e1re 4e5re.
-er3eck er5egg er5e2h 2erei e3rei. e8reine er5einr 6eren. e4r3enm
-4erer. e6r5erm er5ero er5erst e4r3erz er3ess 5erfül er8gan.
-5ergebn er2g5h 5ergänz 5erhöhu 2e1ri eri5ak e6r5iat e4r3ind
-e6r5i6n5i6 er5ins e6r5int er5itio er1kl 3erklä 5erlös.
-ermen6s er6nab 3ernst 6e1ro. e1rod er1o2f e1rog 6e3roi ero8ide e3rol
-e1rom e1ron e3rop8 e2r1or e1ros e1rot er5ox ersch4 5erstat er6t5ein
-er2t1h er5t6her 2e1ru eruf4s3 e4r3uhr er3ums e5rus 5erwerb e1ry er5zwa
-er3zwu erä8m er5äs erö8 e3rös. e6r1ü2b e1sa
-esa8b e8sap e6s5a6v e1sc esch4l ese1a es5ebe eserve5 e8sh es5ill
-es3int es4kop e2sl eso8b e1sp espei6s5 es2po es2pu 5essenz e6stabs
-e6staf e6st5ak est3ar e8stob e1str est5res es3ur e2sz e1sü e1ta
-et8ag etari5e eta8ta e1te eten6te et5hal e5thel e1ti 1etn e1to e1tr
-et3rec e8tscha et8se et6tei et2th et2t1r e1tu etu1s et8zent et8zw
-e1tä e1tö e1tü eu1a2 eu1e eue8rei eu5fe euin5 euk2
-e1um. eu6nio e5unter eu1o6 eu5p 3europ eu1sp eu5str eu8zo e1v eval6s
-eve5r6en ever4i e1w e2wig ex1or 1exp 1extr ey3er. e1z e1ä2
-e5ö8 e1ü e8ßes fa6ch5i fade8 fa6del fa5el.
-fal6lo falt8e fa1na fan4gr 6fanl 6fap far6ba far4bl far6r5a 2f1art
-fa1sc fau8str fa3y 2f1b2 6f1c 2f1d 1fe 2f1eck fe6dr feh6lei f6eim
-8feins f5eis fel5en 8feltern 8femp fe5rant 4ferd. ferri8 fe8stof
-fe6str fe6stum fe8tag fet6ta fex1 2ff f1fa f6f5arm f5fe ffe5in ffe6la
-ffe8ler ff1f f1fla ff3lei ff4lie ff8sa ff6s5ta 2f1g2 fgewen6 4f1h 1fi
-fid4 fi3ds fieb4 fi1la fi8lei fil4m5a f8in. fi1na 8finf fi8scho fi6u
-6f1j 2f1k2 f8lanz fl8e 4f3lein 8flib 4fling f2lix 6f3lon 5flop 1flor
-5f8läc 3flöt 2f1m 2f1n 1fo foh1 f2on fo6na 2f1op fo5ra
-for8mei for8str for8th for6t5r fo5ru 6f5otte 2f1p8 f1q fr6 f5ram
-1f8ran f8raß f8re. frei1 5frei. f3reic f3rest f1rib
-8f1ric 6frig 1fris fro8na fräs5t 2fs f1sc f2s1er f5str
-fs3tät 2ft f1tak f1te ft5e6h ftere6 ft1h f1ti f5to f1tr ft5rad
-ft1sc ft2so f1tu ftwi3d4 ft1z 1fu 6f5ums 6funf fun4ka fu8ßend
-6f1v 2f1w 2f1z 1fä fä1c 8färm 6fäug
-fä8ß föde3 8föf 3för 1fü
-fün4f3u 1ga ga6bl 6gabw 8gabz g3a4der ga8ho ga5isc 4gak ga1la
-6g5amt ga1na gan5erb gan6g5a ga5nj 6ganl 8gansc 6garb 2g1arc 2g1arm
-ga5ro 6g3arti ga8sa ga8sc ga6stre 2g1atm 6g5auf gau5fr g5aus 2g1b g5c
-6gd g1da 1ge ge1a2 ge6an ge8at. ge1e2 ge6es gef2 8geff ge1g2l ge1im
-4g3eise geist5r gel8bra gelt8s ge5lö ge8nin gen3k 6g5entf
-ge3nä ge1or ge1ra ge6rab ger8au 8gerhö ger8ins ge1ro 6g5erz.
-ge1rä ge1rü ge1s ges2p
-ge2s7te. ge2s7ten ge2s7ter ge2s7tik
-ge5unt 4g3ex3 2g1f8 2g1g g1ha 6g1hei
-5ghel. g5henn 6g1hi g1ho 1ghr g1hö 1gi gi5la gi8me. gi1na
-4g3ins
-gis1tr
-g1j 2g1k 8gl. 1glad g5lag glan4z3 1glas 6glass 5glaub
-g3lauf 1gle. g5leb 3gleic g3lein 5gleis 1glem 2gler 8g3leu gli8a
-g2lie 3glied 1g2lik 1g2lim g6lio 1gloa 5glom 1glon 1glop g1los g4loss
-g5luf 1g2ly 1glü 2g1m gn8 6gn. 1gna 8gnach 2gnah g1nas g8neu
-g2nie g3nis 1gno 8gnot 1go goe1 8gof 2gog 5gogr 6g5oh goni5e 6gonist
-go1ra 8gord 2g1p2 g1q 1gr4 g5rahm gra8m gra4s3t 6g1rec gre6ge 4g3reic
-g5reit 8grenn gri4e g5riem 5grif 2grig g5ring 6groh 2grot gro6ß
-4grut 2gs gs1ab g5sah gs1ak gs1an gs8and gs1ar gs1au g1sc
-gs1ef g5seil gs5ein g2s1er gs1in g2s1o gso2r gs1pr g2s1u 2g1t g3te
-g2t1h 1gu gu5as gu2e 2gue. 6gued 4g3uh 8gums 6g5unt
-gut3h gu2tu
-4g1v 2g1w gy1n g1z 1gä 8gä8m 6gärm 1gö 1gü
-6güb 1haa hab8r ha8del hade4n 8hae ha5el. haf6tr 2hal. ha1la
-hal4b5a 6hale 8han. ha1na han6dr han6ge. 2hani h5anth 6hanz 6harb
-h3arbe h3arme ha5ro ha2t1h h1atm hau6san ha8ß h1b2 h1c h1d
-he2bl he3cho h3echt he5d6s 5heft h5e6he. hei8ds h1eif 2hein he3ism
-he5ist. heit8s3 hek6ta hel8lau 8helt he6mer 1hemm 6h1emp hen5end
-hen5klo hen6tri he2nu 8heo he8q her3ab he5rak her3an 4herap her3au
-h3erbi he1ro he8ro8b he4r3um her6z5er he4spe he1st heta6 het5am he5th
-heu3sc he1xa hey5e h1f2 h1g hgol8 h1h h1iat hie6r5i hi5kt hil1a2
-hil4fr hi5nak hin4ta hi2nu hi5ob hirn5e hir6ner hi1sp hi1th hi5tr
-5hitz h1j h6jo h1k2 hlabb4 hla4ga hla6gr h5lai hl8am h1las h1laß
-hl1c h1led h3lein h5ler. h2lif h2lim h8linf hl5int h2lip
-h2lit h4lor h3lose h1läs hme5e h2nee h2nei hn3eig h2nel hne8n
-hne4p3f hn8erz h6netz h2nip h2nit h1nol hn5sp h2nuc h2nud h2nul hoch1
-1hoh hoh8lei 2hoi ho4l3ar 1holz h2on ho1ra 6horg 5horn. ho3sl hos1p
-ho4spi h1p hpi6 h1q 6hr h1rai h8rank h5raum hr1c hrcre8 h1red h3reg
-h8rei. h4r3erb h8rert hrg2 h1ric hr5ins h2rom hr6t5erl hr2t1h hr6t5ra
-hr8tri h6rum hr1z hs3ach h6s5amt h1sc h6s5ec h6s5erl hs8erle h4sob
-h1sp h8spaß h8spel hs6po h4spun h1str h4s3tum hs3und
-h1sü h5ta. h5tab ht3ac ht1ak ht3ang h5tanz ht1ar ht1at h5taub
-h1te h2t1ec ht3eff ht3ehe h4t3eif h8teim h4t3ein ht3eis h6temp h8tentf
-hte8ren h6terfü h8tergr h4t3erh h6t5ersc h8terst h8tese h8tess
-h2t1eu h4t3ex ht1he ht5hu h1ti ht5rak hts3ah ht1sc ht6sex ht8sk ht8so
-h1tu htz8 h5tüm hub5l hu6b5r huh1l h5uhr. huld5a6 hu8lent
-hu8lä h5up. h1v h5weib h3weis h1z hä8kl häl8s
-häma8tu8 hä8sche. hät1s häu4s3c 2hö.
-2höe 8höi hö6s hös5c hühne6 hül4s3t
-hütte8re i5adn i1af i5ak. i1al. i1al1a i1alb i1ald i5alei i1alf
-i1alg i3alh i1alk i1all i1alp i1alr i1als i1alt i1alv i5alw i3alz
-i1an. ia5na i3and ian8e ia8ne8b i1ang i3ank i5ann i1ant i1anz i6apo
-i1ar. ia6rab i5arr i1as. i1asm i1ass i5ast. i1at. i5ats i1au i5azz
-i6b5eig i6b5eis ib2le i4blis i6brig i6b5unt i6büb i1che ich5ei
-i6cherb i1chi ich5ins ich1l ich3m ich1n i1cho icht5an icht3r i1chu
-ich1w ick6s5te ic5l i1d id3arm 3ideal ide8na 3ideol ide5rö i6diot
-id5rec id1t ie1a ie6b5ar iebe4s3 ie2bl ieb1r ie8bra ie4bre ie8bä
-ie2dr ie1e8 ie6f5ad ief5f ie2f1l ie4fro ief1t i1ei ie4l3ec ie8lei
-ie4lek i3ell i1en. i1end ien6e i3enf i5enn ien6ne. i1enp i1enr
-i5ensa ien8stal i5env i1enz ie5o ier3a4b ie4rap i2ere ie4rec ie6r5ein
-ie6r5eis ier8er i3ern. ie8rum ie8rund ie6s5che ie6tau ie8tert ie5the
-ie6t5ri i1ett ie5un iex5 2if i1fa if5ang i6fau if1fr if5lac i5f6lie
-i1fre ift5a if6t5r ig3art 2ige i8gess ig5he i5gla ig2ni i5go ig3rot
-ig3s2p i1ha i8ham i8hans i1he i1hi ih1n ih1r i1hu i8hum ih1w 8i1i ii2s
-ii2t i1j i1k i6kak i8kerz i6kes ik4ler i6k5unt 2il i5lac i1lag il3ans
-i5las i1lau il6auf i1le ile8h i8lel il2fl il3ipp il6l5enn i1lo ilt8e
-i1lu i1lä i8mart imb2 i8mele i8mid imme6l5a i1mu i1mä
-i5mö ina5he i1nat in1au inau8s 8ind. in4d3an 5index ind2r 3indus
-i5nec i2n1ei i8nerw 3infek 1info 5ingeni ing5s6o 5inhab ini5er. 5inj
-in8kät in8nan i1no inoi8d in3o4ku in5sau in1sp 5inspe 5instit
-5instru ins4ze 5intere 5interv in3the in5t2r i5ny inä2 i1när
-in1äs inö8 in5öd i1nös 2io io1a8 io1c iode4 io2di
-ioi8 i1ol. i1om. i1on. i5onb ion2s1 i1ont i5ops i5o8pt i1or.
-i3oral io3rat i5orc i1os. i1ot. i1o8x 2ip i1pa i1pi i1p2l i1pr i1q
-i1ra ir6bl i1re i1ri ir8me8d ir2m1o2 ir8nak i1ro ir5rho ir6schl
-ir6sch5r i5rus i5ry i5rä i1sa i8samt i6sar i2s1au i8scheh i8schei
-isch5m isch3r ischä8 is8ele ise3ra i4s3erh is3err isi6de i8sind
-is4kop ison5e is6por i8s5tum i5sty i5sö i1ta it5ab. i2t1a2m
-i8tax i1te i8tersc i1thi i1tho i5thr it8hä i1ti i8ti8d iti6kl
-itmen4 i1to i8tof it3ran it3rau i1tri itri5o it1sc it2se it5spa it8tru
-i1tu it6z5erg it6z1w i1tä itä6r5e ität2 itäts5
-i1tü i1u iu6r 2i1v i6vad iva8tin i8vei i6v5ene i8verh i2vob i8vur
-i1w iwi2 i5xa i1xe i1z ize8n i8zir i6z5w iä8m i1ä6r
-i5ät. i5äv i1ö8 iü8 i6ß5ers ja5la
-je2t3r 6jm 5jo jo5as jo1ra jou6l ju5cha jugen4 jugend5 jung5s6
-3jä 1ka 8kachs 8kakz ka1la kal5d kam5t ka1na 2kanl 8kapf ka6pl
-ka5r6a 6k3arbe ka1ro kar6p5f 4k3arti 8karz ka1rä kasi5e ka6teb
-kat8ta kauf6s kau3t2 2k1b 2k1c 4k1d kehr6s kehrs5a 8keic 2k1eig 6k5ein
-6k5eis ke6lar ke8leis ke8lo 8kemp k5ente. k3entf 8k5ents 6kentz ke1ra
-k5erlau 2k1f8 2k1g 2k1h ki5fl 8kik king6s5 6kinh ki5os ki5sp ki5th
-8ki8ö 2k1k2 kl8 1kla 8klac k5lager kle4br k3leib 3kleid kle5isc
-4k3leit k3lek 6k5ler. 5klet 2klic 8klig k2lim k2lin 5klip 5klop k3lor
-1klä 2k1m kmani5e kn8 6kner k2ni knä8 1k2o ko1a2 ko6de.
-ko1i koi8t ko6min ko1op ko1or ko6pht ko3ra kor6d5er ko5ru ko5t6sc k3ou
-3kow 6k5ox 2k1p2 k1q 1kr8 4k3rad 2k1rec 4k3reic kre5ie 2krib 6krig
-2krip 6kroba 2ks k1sa k6sab ksal8s k8samt k6san k1sc k2s1ex k5spat
-k5spe k8spil ks6por k1spr kst8 k2s1uf 2k1t kta8l kt5a6re k8tein kte8re
-k2t1h k8tinf kt3rec kt1s 1ku ku1ch kuck8 k3uhr ku5ie kum2s1 kunfts5
-kun2s kunst3 ku8rau ku4ro kurz1
-4kusti ku1ta ku8ß
-6k1v 2k1w ky5n 2k1z 1kä kä4m 4k3ämi käse5 1kö
-kö1c kö1s 1kü kü1c kür6sc
-1la.
-8labf 8labh lab2r 2l1abs lach3r la8dr 5ladu 8ladv 6laff laf5t la2gn
-5laken 8lamb la6mer 5lampe. 2l1amt la1na 1land lan4d3a lan4d3r lan4gr
-8lanme 6lann 8lanw 6lanä 8lappa lap8pl lap6pr l8ar. la5ra lar4af
-la8rag la8ran la6r5a6s l3arbe la8rei 6larm. la8sa la1sc la8sta lat8i
-6l5atm 4lauss 4lauto 1law 2lb l8bab l8bauf l8bede l4b3ins l5blo
-lbst5an lbst3e 8lc l1che l8chert l1chi lch3m l5cho lch5w 6ld l4d3ei
-ld1re l6düb le2bl le8bre lecht6s5 led2r 6leff le4gas 1lehr lei6br
-le8inf 8leinn 5leistu 4lektr le6l5ers lemo2 8lemp l8en. 8lends
-6lendun le8nend len8erw 6l5ents 4l3entw 4lentz 8lenzy 8leoz 6lepi
-le6pip 8lepo 1ler l6er. 8lerbs 6l5erde le8reis le8rend le4r3er 4l3erg
-l8ergr 6lerkl 6l5erzie 8lerö 8lesel lesi5e le3sko le3tha let1s
-5leuc 4leuro leu4s3t le5xe 6lexp l1f 2l1g lgend8 l8gh lglie3 lglied6
-6l1h 1li li1ar li1as 2lick li8dr li1en lien6n li8ers li8ert 2ließ
-3lig li8ga8b li1g6n li1l8a 8limb li1na 4l3indu lings5
-4l3inh 6linj link4s3 4linkt 2lint 8linv
-4lipp 5lipt 4lisam
-livi5e 6l1j 6l1k l8keim l8kj lk2l lko8f lkor8 lk2sa lk2se 6ll l1la
-ll3a4be l8labt ll8anl ll1b ll1c ll1d6 l1le l4l3eim l6l5eise ller3a
-l4leti l5lip l1lo ll3ort ll5ov ll6spr llte8 l1lu ll3urg l1lä
-l5lü l6lüb 2l1m l6m5o6d 6ln l1na l1no 8lobl lo6br 3loch.
-l5o4fen 5loge. 5lohn 4l3ohr 1lok l2on 4l3o4per lo1ra 2l1ord 6lorg
-4lort lo1ru 1los. lo8sei 3losig lo6ve lowi5 6l1p lp2f l8pho l8pn
-lp4s3te l2pt l1q 8l1r 2ls l1sa l6sarm l1sc l8sec l6s5erg l4s3ers l8sh
-l5s6la l1sp ls4por ls2pu l1str l8suni l1sü 2l1t lt5amp l4t3ein
-l5ten l6t5eng l6t5erp l4t3hei lt3her l2t1ho l6t5i6b lti1l l8trö
-lt1sc lt6ser lt4s3o lt5ums lu8br lu2dr lu1en8 8lu8fe luft3a luf8tr
-lu6g5r 2luh l1uhr lu5it 5luk 2l1umf 2l1umw 1lun 6l5u6nio 4l3unte lu5ol
-4lurg 6lurs l3urt lu4sto
-lus1tr
-lu6st5re lu8su lu6tal lu6t5e6g lu8terg
-lu3the lu6t5or lu2t1r lu6ß5 l1v lve5r6u 2l1w 1ly lya6
-6lymp ly1no l8zess l8zo8f l3zwei lz5wu 3länd lä5on
-lä6sc lät1s 5läuf 2läug läu6s5c lä5v
-l1öl 1lös lö1ß6t 6l1übe 1ma
-8mabg ma5chan mad2 ma5el 4magg mag8n ma1la ma8lau mal5d 8malde mali5e
-malu8 ma8lut 2m1amp 3man mand2 man3ds 8mangr mani5o 8m5anst 6mappa
-4m3arbe mar8kr ma1r4o mar8schm 3mas ma1sc ma1tö 4m5auf ma5yo 2m1b
-mb6r 2m1c 2m1d md6sä 1me me1ch me5isc 5meld mel8sa 8memp me5nal
-men4dr men8schl men8schw 8mentsp me1ra mer4gl me1ro 3mes me6s5ei 
-meta3s2
-me1th
-me8ß 2m1f6 2m1g 2m1h 1mi mi1a mi6ale mi1la 2m1imm mi1na
-mi5nü mi4s3an mit1h mi5t6ra 3mitt mitta8 mi6ß5 6mj
-2m1k8 2m1l 2m1m m6mad m6m5ak m8menth m8mentw mme6ra m2mn mm5sp mm5ums
-mmut5s m8män m1n8 m5ni 1mo mo5ar mo4dr 8mof mo8gal mo4kla mol5d
-m2on mon8do mo4n3od
-mon2s1tr
-mont8a 6m5ony mopa6 mo1ra mor8d5a mo1sc mo1sp 5mot
-moy5 2mp m1pa mpfa6 mpf3l mphe6 m1pi mpin6 m1pl mp2li m2plu mpo8ste
-m1pr mprä5 mp8th mput6 mpu5ts m1pö 8m1q 2m1r 2ms ms5au m1sc
-msch4l ms6po m3spri m1str 2m1t mt1ar m8tein m2t1h mt6se mt8sä
-mu5e 6m5uh mumi1 1mun mun6dr muse5e mu1ta 2m1v mvol2 mvoll3 2m1w 1my
-2m1z mä6kl 1män mä1s mä5tr mäu4s3c 3mäß
-möb2 6möl 1mü 5mün 3müt 1na.
-n5ab. 8nabn n1abs n1abz na6bä na2c nach3e 3nacht 1nae na5el
-n1afr 1nag 1n2ah na8ha na8ho 1nai 6nair na4kol n1akt nal1a 8naly 1nama
-na4mer na1mn n1amp 8n1amt 5nanc nan6ce n1and n6and. 2n1ang 1nani
-1nann n1ans 8nanw 5napf. 1n2ar. na2ra 2n1arc n8ard 1nari n8ark
-6n1arm 5n6ars 2n1art n8arv 6natm nat6s5e 1naue 4nauf n3aug 5naui n5auk
-na5um 6nausb 6nauto 1nav 2nax 3naz 1naß n1b2 nbau5s n1c
-nche5e nch5m 2n1d nda8d n2d1ak nd5ans n2d1ei nde8lac ndel6sa n8derhi
-nde4se nde8stal n2dj ndnis5 n6d5or6t nd3rec nd3rot nd8samt nd6sau
-ndt1h n8dumd 1ne ne5as ne2bl 6n5ebn 2nec 5neei ne5en ne1g4l 2negy
-4n1ein 8neis 4n3e4lem 8nemb 2n1emp nen1a 6n5energ nen3k 8nentb
-4n3en3th 8nentl 8n5entn 8n5ents ne1ra ne5r8al ne8ras 8nerbi 6n5erde.
-nere5i6d nerfor6 6n5erhö 8nerlö 2n1err n8ers. 6n5ertra
-2n1erz nesi3e net1h neu4ra neu5sc 8neuß n1f nf5f nf2l
-nflei8 nf5lin nft8st n8g5ac ng5d ng8en nge8ram ngg2 ng1h n6glic ng3rip
-ng8ru ng2se4 ng2si n2g1um n1gy n8gäl n1h nhe6r5e 1ni ni1bl
-ni5chä ni8dee n6ie ni1en nie6s5te niet5h ni8etn 4n3i6gel n6ik
-ni1la 2n1imp ni5na 2n1ind 8ninf 6n5inh ni8nit 6n5inn 2n1ins 4n1int
-n6is
-nis1tr
-ni1th ni1tr n1j n6ji n8kad nk5ans n1ke n8kerla n1ki nk5inh
-n5klö n1k2n n8k5not nk3rot n8krü nk5spo nk6t5r n8kuh
-n6küb n5l6 nli4mi n1m nmen4s n1na n8nerg nni5o n1no nn4t3ak nnt1h
-nnu1e n1ny n1nä n1nö n1nü no5a no4b3la 4n3obs 2nobt
-noche8 no6die no4dis no8ia no5isc 6n5o6leu no4mal noni6er 2n1onk n1ony
-4n3o4per 6nopf 6nopti no3ra no4ram nor6da 4n1org 2n1ort n6os no1st
-8nost. no8tan no8ter noty6pe 6n5ox n1p2 n1q n1r nrös3 6ns n1sac
-ns3ang n1sc n8self n8s5erf n8serg n6serk ns5erw n8sint n1s2pe n1spr
-n6s5tat.
-n6stob n1str n1ta n4t3a4go nt5anh nt3ark nt3art
-n1te nt3eis nte5n6ar nte8nei nter3a nte6rei nt1ha nt6har n3ther nt5hie
-n3thus n1ti nti1c n8tinh nti1t ntlo6b ntmen8 n1to nt3o4ti n1tr ntra5f
-ntra5ut nt8rea nt3rec nt8rep n4t3rin nt8rop n4t3rot n4trü nt1s
-nts6an nt2sk n1tu nt1z n1tä n1tö n8töl n1tü 1nu
-nu1a nu5el nu5en 4n1uhr nu5ie 8numl 6n5ums 6n5umw 2n1und 6nuni 6n5unr
-2n1unt 2nup 2nu6r n5uri nu3skr nu5ta n1v 8n1w 1nys n1za n6zab n2z1ar
-n6zaus nzi4ga n8zof n6z5unt n1zw n6zwir 1näc 5näe 5näi
-n8äl nä6m nä6re n5ärz 5näus n1öl
-1nöt n5öz 5nü. 6n1ü2b 5nüß
-o5ab. oa2l o8ala o1a2m o1an ob1ac obe4ra o6berh 5o4bers o4beru
-obe6ser 1obj o1bl o2bli ob5sk 3obst. ob8sta obst5re ob5sz o1che
-oche8b o8chec o3chi och1l och3m ocho8f o3chro och3to o3chu och1w o1d
-o2d1ag od2dr ode5i ode6n5e od1tr o5e6b o5e6der. oe8du o1ef o1e2l
-o1e2p o1er. o5e8x o1fa of8fan 1offi of8fin of6f5la o5fla o1fr 8o1g
-og2n o1ha o1he o6h5eis o1hi ohl1a oh1le oh4l3er 5ohm. oh2ni o1ho
-oh1re oh1ru o1hu oh1w o1hy o1hä o5ia o1id. o8idi oi8dr o5ids
-o5isch. oiset6 o1ism o3ist. o5i6tu o1j o1k ok2l ok3lau o8klä
-1okta o1la old5am old5r o1le ole5in ole1r ole3u ol6gl ol2kl olk4s1
-ol8lak ol8lauf. ol6lel ol8less o1lo
-ol1s ol2ster
-ol6sk o1lu oly1e2 5olym
-o2mab om6an o8mau ombe4 o8merz om5sp o1mu o8munt o1mä o1mö
-o1na ona8m on1ax on8ent o6n5erb 8oni oni5er. on1k on6n5a6b o1no ono1c
-o4nokt 1ons onts8 o1nä oo8f 1oog oo2pe oo2sa o1pa 3o4pera o3pfli
-opf3lo opf3r o1pi o1pl o2pli o5p6n op8pa op6pl o1pr o3p4ter 1opti
-o1pä o5pö o1q o1ra. o3rad o8radd 1oram o6rang o5ras o8rauf
-or5cha or4d3a4m or8dei or8deu 1ordn or4dos o1re o5re. ore2h o8r5ein
-ore5isc or6enn or8fla or8fli 1orga 5orgel. or2gl o1ri 5o6rient or8nan
-or8nä o1ro or1r2h or6t5an or8tau or8tere o1rus o1ry o1rä
-or1ü2 o1sa osa3i 6ose o8serk o1sk o6ske o6ski os2kl os2ko os2kr
-osni5e o2s1o2d o3s4per o4stam o6stau o3stra ost3re osu6 o6s5ur o5s6ze
-o1ta ot3auf o6taus o1te o6terw o1th othe5u o2th1r o1ti o1to oto1a
-ot1re o1tri o1tro ot1sc o3tsu ot6t5erg ot2t3h ot2t5r ot8tö o1tu
-ou3e ouf1 ou5f6l o5u6gr ou5ie ou6rar ou1t6a o1v o1wa o1we o6wer. o1wi
-owid6 o1wo o5wu o1xe oy5al. oy1e oy1i o5yo o1z oza2r 1o2zea ozo3is
-oö8 oß5elt oß1t 3paa pa6ce 5pad pag2 1pak
-pa1la pa8na8t pani5el pa4nor pan1s2 1pap pap8s pa8rei par8kr paro8n
-par5o6ti part8e 5partei 3partn pas6sep pa4tha 1pau 6paug pau3sc p1b
-8p5c 4p1d 1pe 4peic pe5isc 2pek pen3k pen8to8 p8er pe1ra pere6 per5ea
-per5eb pe4rem 2perr per8ran 3pers 4persi pe3rü pe4sta pet2s
-p2f1ec p4fei pf1f pf2l 5pflanz pf8leg pf3lei 2pft pf3ta p1g 1ph 2ph.
-2p1haf 6phb 8phd 6p5heit ph5eme 6phg phi6e 8phk 6phn p5holl pht2
-ph3tha 4ph3the phu6 6phz pi1en pi5err pi1la pi1na 5pinse pioni8e 1pis
-pi1s2k pi1th p1k pl8 5pla p2lau 4plei p3lein 2pler 6p5les 2plig p6lik
-6p5ling p2liz plo8min 6p1m p1n 1p2o 8poh 5pol po8lan poly1 po3ny po1ra
-2porn por4t3h po5rö 5poti p1pa p6p5ei ppe6la pp5f p2p1h p1pi pp1l
-ppp6 pp5ren
-pp1s pp2ste
-p5pö pr6 3preis 1pres 2p3rig 5prinz 1prob 1prod
-5prog pro8pt pro6t5a prote5i 8proß prä3l 1präs
-präte4 1prüf p5schl 2pst 1p2sy p1t p8to8d pt1s 5p6ty 1pu
-pu1b2 2puc pu2dr puf8fr 6p5uh pun8s pu8rei pu5s6h pu1ta p1v p3w 5py
-py5l p1z pä6der p5ä6m pä8nu 8pär pät5h
-pät1s qu6 1qui 8rabk ra6bla 3rable ra2br r1abt 6rabz ra4dan ra2dr
-5rafal ra4f3er ra5gla ra2g3n 6raha ral5am 5rald 4ralg ra8lins 2rall
-ral5t 8ramei r3anal r6and ran8der ran4dr 8ranf 6ranga 5rangi ran8gli
-r3angr rans5pa 8ranw r8anz. ra5or 6rapf ra5pl rap6s5er 2r1arb 1rarh
-r1arm ra5ro 2r1art 6r1arz ra8tei ra6t5he 6ratl ra4t3ro r5atta raue4n
-6raus. r5austa rau8tel raut5s ray1 r1b rb5lass r6bler rb4lie rbon6n
-r8brecht rb6s5tä r8ces r1che rch1l rch3m rch3re rch3tr rch1w 8rd
-r1da r8dachs r8dap rda5ro rde5ins rdio5 r8dir rd3ost r1dr r8drau 1re.
-re1ak 3reakt re3als re6am. re1as 4reben re6bl rech5a r8edi re3er
-8reff 3refl 2reh 5reha r4ei. reich6s5 8reier 6reign re5imp 4r3eina
-6r3einb 6reing 6r5einn 6reinr 4r3eins r3eint reli3e 8r5elt 6rempf
-2remt ren5a6b ren8gl r3enni 1reno 5rente 4r3enth 8rentl 4r3entw 8rentz
-ren4zw re1on requi5 1rer rer4bl 6rerbs 4r3erd 8rerhö 8rerkl
-4r3erla 8rerlö 4r3erns 6r5ernä rer5o 6r5erreg r5ertr r5erwec
-r5erö re2sa re8schm 2ress re5u8ni 6rewo 2r1ex r1f r8ferd rf4lie
-8r1g r8gah rge4bl rge5na rgest4 rg6ne r2gni2 r8gob r4g3ret rg8sel r1h8
-r2hy 5rhyt ri1ar ri5cha rid2g r2ie rieg4s5 ri8ei ri1el ri6ele ri1en
-ri3er. ri5ers. ri6fan ri8fer ri8fr 1r2ig ri8kn ri5la rimä8
-ri1na r8inde rin4ga rin6gr 1rinn 6rinner rino1 r8insp 4rinst
-ri1nä ri5o6ch ri1o2d ri3o6st 2r1ir r2is ri3sko ri8spr
-ri5sv r2it 6r5i6tal ri5tr ri6ve. 8r1j 6rk r1ke rkehrs5 r1ki r3klin
-r1k2n rk3str rk4t3an rk6to r6kuh rkä4s3t r1l r5li rline5a 6r1m
-r6manl rma4p r4m3aph r8minf r8mob rm5sa 2rn r1na rna8be r5ne rn2ei
-r6neif r6nex r6nh rn1k r1no r6n5oc rn1sp r1nä r1nü ro6bern
-6robs ro1ch 3rock. ro5de ro1e 4rofe ro8hert 1rohr ro5id ro1in ro5isc
-6rolym r2on 6roog ro6phan r3ort ro1s2p ro5s6w ro4tau ro1tr ro6ts 5rout
-r1p rpe8re rp2f r2ps r2pt r1q 2rr r1ra r1re rrer6
-rr6hos r5rhö
-r1ri r1ro rro8f rr8or rror5a r1ru r3ry r1rä r1rö r1rü
-2r1s
-r2ste r2sti
-r6sab r4sanf rse6e rse5na r2sh r6ska r6ski rs2kl r8sko r2sl rs2p
-r6stauf r8sterw r8stran rswi3d4 r2sz 2r1t rt3art r8taut r5tei rt5eige
-r8tepe r4t3erh r8terla r4t3hei r5t6hu r4t3int rt5reif rt1sc rt6ser
-rt6s5o rt6s5u rt5und r8turt rube6 ru1en 1r4uf ruf4st ru1ie 2r1umg
-2r1uml 2rums run8der run4d5r 6rundz 6runf 8runs 2r1unt 2r1ur r6us
-ru6sta
-rus1tr
-ru6tr 1ruts r1v rven1 rvi2c r1w r1x r1za rz5ac r6z5al
-r8z1ar r8zerd r6z5erf rz8erh rz4t3h r8zum rä4ste räu8sc
-r1öf 5röhr rö5le 3röll 5römis r1ör
-rö2sc 3rümp 1sa. 1saa s3a4ben sa2bl 2s1abs 6s1abt 6sabw
-3sack. 6s3a4der 1saf sa1fa 4s1aff sa5fr 1sag 1sai sa1i2k1 4s1akt 1sal
-sa1la 4s3alpi 6salter salz3a 1sam s5anb san2c 1sand s5angeh 6sanl
-2s1ans 6s3antr 8s1anw s1ap s6aph 8sapo sap5p6 s8ar. 2s1arb 3sarg
-s1arm sa5ro 2s1art 6s1arz 1sas 1sat sat8a 2s1atl sa8tom 3s8aue s5auff
-sau5i s6aur 2s1aus 5s6ause 2s1b2 2sca s4ce 8sch. 3scha. 5schade
-3schaf 3schal sch5ame 8schanc 8schb 1sche 6schef 8schex 2schf 2schg
-2schh 1schi 2schk 5schlag 5schlu 6schmäß
-6schnaß 1scho 6schord 6schp 3schri 8schric 8schrig
-8schrou 6schs 2scht sch3ta sch3tr 1schu 8schunt 6schv 2schz 5schö
-5schü 2sco scre6 6scu 2s1d 1se se5an se1ap se6ben se5ec see5i6g
-se3erl 8seff se6han se8hi se8hö 6s5eid. 2s1eig s8eil 5sein.
-sei5n6e 6s5einh 3s8eit 3sel. se4lar selb4 6s3e4lem se8lerl 2s1emp
-sen3ac se5nec 6s5ents 4sentz s8er. se8reim ser5inn 8sermä
-8s5erzi 6seröf se1um 8sexa 6sexp 2s1f2 sfal8ler 2s3g2 sge5b2 s1h
-s8hew 5s6hip 5s4hop 1si 2siat si1b sicht6s 6s5i6dee siege6s5 si1en
-si5err si1f2 si1g2n si6g5r si8kau sik1i si4kin si2kl si8kü si1la
-sil6br si1na 2s1inf sin5gh 2s1inh sinne6s5 2s1ins si5ru si5str 4s1j
-s1k2 6sk. 2skau skel6c skelch5 s6kele 1s2ki. 3s4kin. s6kiz s8kj
-6skn 2skow 3skrib 3skrip 2sku 8skü s1l s8lal slei3t s4low 2s1m
-s1n 6sna 6snot 1so so1ch 2s1odo so4dor 6s5o4fen solo3 s2on so5of 4sope
-so1ra 2s1ord 4sorga sou5c so3un 4s3ox sp2 8spaa 5spal 1span 2spap
-s2pec s4peis 1spek s6perg 4spers s6pes 2s1pf 8sphi 1s2phä 1spi
-spi4e 6s5pig 6spinse 2spis 2spla 2spol 5s6pom 6s5pos 6spoti 1spra
-3s8prec 6spreis 5spring 6sprob 1spru s2pul 1s2pur 6spy 5spän
-1spü s1q 2s1r
-2ssa 2sse 2ssi 2sso 2ssä 2ssö 2ssü 2s1sch
-sse8nu ssini6s ssoi6r 2st.
-1sta 4stafe 2stag
-sta3la 6stale
-4s2talg
-8stalk 8stamt 6st5anf 4stans 6stanw 6starb sta4te
-6staus 2stb 6stc 6std
-s1te
-4steil
-6steppi
-8stesse 6stf 2stg 2sth st1ha st3hei s8t1hi st1ho st5hu
-s1ti
-s2ti4el
-4s2tigm
-6s2tind
-4s2tinf
-s2ti8r
-2stk 2stl 2stm
-1sto 6stoll. 4st3ope
-6stopf. 6stord 6stp
+.ab1a
+.abi4t
+.ab3l
+.abo2
+.ab3ol
+.ab1or
+.ab3s2
+.ab3u
+.ade3n
+.ae3
+.aft2
+.ag4n
+.ag4r
+.ag2u
+.ai2s
+.akt2a
+.al2e
+.al3k
+.al3lei
+.al5len
+.al3se
+.al4tan
+.al4tei
+.alter6s5
+.alt3s4
+.al2tu
+.ampe4
+.amt2s1
+.amt4sc
+.ana1c
+.an3d2
+.anden6k
+.and4ri
+.an1er
+.ang2
+.an3g4li
+.angs4
+.angst3
+.ani2s
+.an3k4
+.an3na
+.an3s2
+.an4si.
+.an3z2
+.ap5p6le.
+.aps2
+.ari1e
+.ar3k2a
+.ar4m3ac
+.ar4mun
+.ar2sc
+.ar4tan
+.ar4t3ei
+.arter4
+.ar6t5erh
+.ar2tr
+.arz2
+.asbe2
+.as4ta
+.as3tr
+.ata1
+.ate2
+.at4h
+.at4r
+.au3d
+.aue2
+.au4f3
+.aufs4
+.au2s3
+.auss2
+.auß2
+.ax2
+.äm3
+.är6schl
+.ät2h
+.ät2s
+.bahn3
+.bah6ner
+.baus4
+.be3erb
+.bel2a
+.be3r4a
+.be3r2e
+.ber4g3a
+.ber6g5e6b
+.ber4g3r
+.ber4tr
+.bi4os
+.bi2t
+.bit1a
+.boge2
+.bogen3
+.bogens6
+.bo4s3k
+.bu4ser
+.by4t
+.ca2s3t
+.ch4
+.char8mes
+.chi3er
+.dab4
+.da2r1
+.dar3in
+.darm1
+.da4te.
+.da4tes
+.de2al
+.de1i
+.dein2
+.de3lo
+.de8ments
+.den4ka
+.den4kl
+.den4ko
+.de1o2
+.de3r4en
+.de1s
+.de3sk
+.des2t
+.di3el
+.di4en
+.dien4e
+.dien6st
+.dienst7a8d
+.do3b
+.do2mo
+.don4a
+.do1pe
+.dor2f1
+.dy2s3
+.ebe2r1
+.edu3s
+.eg2o
+.eh2e
+.ehe1i
+.ei3e2
+.ei3f2e
+.ei3k
+.ein3d
+.eine2
+.ei4neb
+.ein6erl
+.eise4
+.ei2sp
+.eis3s4
+.ei2s3t
+.ei4tr
+.eke2
+.ek3li
+.el2a
+.el2bi
+.el2bl
+.elb3s
+.el4fei
+.el2fl
+.el2i
+.el6st
+.em3m2
+.en1
+.en4da
+.en4d3er4
+.en2d3r
+.end3s
+.en4dü
+.en2gl
+.enn2
+.ent3
+.en2ta
+.en4tei
+.en4tio
+.en4t1r
+.en5trop
+.ents4
+.er4bei
+.er8brecht
+.er2bu
+.er4dan
+.er4dei
+.erden6k
+.er4dep
+.er4d3er
+.er1e
+.ere3c
+.erf4
+.er1i
+.ers2
+.er8stein
+.erster6
+.er8stritt.
+.er8stritten.
+.er4z3el
+.er4zen4
+.ese3le
+.es3p
+.es3ta
+.est6e
+.es3th
+.es3t3r
+.et2s
+.eu1
+.eu3g4
+.eu3r4
+.eu3t
+.ext4
+.fe3la
+.fer4no
+.fi3est
+.fi4le.
+.fi4len
+.fi2s
+.flug1
+.for2t
+.fs4
+.fu2sc
+.ga2me
+.ga4s1
+.gas3e
+.ga4t
+.gd2
+.gebe4a
+.geb2l
+.gee4
+.gel4b3r
+.gel2d1
+.ge3lu
+.ge5nar
+.ge3n4e
+.gene7cke
+.ge3n2o
+.ge3r4a
+.ge3r2e
+.ge3ro
+.ger4s
+.ge3s4a
+.ge3u
+.glan2
+.gol6der
+.gs4
+.halt4e
+.hau2t1
+.he2
+.he4bei
+.he3fe
+.he3le
+.her3an
+.he3rat
+.her6b5ra
+.he3rer
+.he3ri
+.he6r5inn
+.hin3u
+.hips4
+.hi4s
+.hof1e
+.ho4fen
+.ho4met
+.ho4st
+.ia4
+.im2a
+.ima4ge
+.im5m2
+.in1
+.ind4
+.in3gl
+.ink2
+.in3n2e
+.in3sk
+.inu1
+.ioni1
+.ire3
+.is2a
+.is3t
+.it2h
+.iv2
+.ivo3
+.joni1
+.jor3
+.ka2b3l
+.ka2i
+.ka3le
+.ka3ta
+.ka4t3io
+.ki4e
+.klang3
+.ko3b
+.kopf1
+.kor4da
+.kraf2
+.ks4
+.kus2
+.la3be
+.la3ho
+.lase2
+.le4ar
+.le4gas
+.le3n2i
+.len3z
+.lich8t7er8s
+.li2f
+.li4ve.
+.lo4g3in
+.lo2sc
+.los3s4
+.lo3ver
+.luster6
+.lus4tr
+.lut4h
+.ma3d
+.ma3ge
+.mal4e
+.ma2st
+.mat4c
+.matu3
+.md2
+.me3l2a
+.me3ne
+.me3no
+.men8schl
+.men8schw
+.ment4
+.mes4sp
+.mi2f
+.mik4
+.mil2z
+.mi2st
+.mi4t1
+.mm2
+.mutter5
+.na3no
+.na3t
+.nat2h
+.näs1c
+.nebe4n
+.ner2f
+.ne1ro
+.ne2s
+.nich2
+.nicht5e
+.ni4e
+.ni3k4l
+.no4th
+.nus4
+.oa3s
+.ob1a
+.obe2
+.ober5ei
+.of2e
+.oper4
+.or2a
+.ord4e
+.ort2
+.ort4h
+.orts3e
+.os3s
+.os4tal
+.os5t6alg
+.oste2
+.os4t3el
+.ost5end
+.os8ten8de
+.oste6re
+.os8terwe
+.os4t3r
+.os2tu
+.ot1
+.ozo4
+.öd2
+.öl3l
+.pab4
+.pa2r1e
+.par3t4h
+.pe2c
+.pe3la
+.pe3le
+.pf4
+.ph4
+.poka2
+.po4st
+.pro1
+.ps2
+.rabe4
+.ra3ch4e
+.ra3me
+.ra3sa
+.rau2m
+.rau8schl
+.räu3sc
+.re3ale
+.reb3s2
+.re3cha
+.re5insz
+.reis6e5i
+.rei4st
+.reli1
+.res6tr
+.ri4as
+.richt6e
+.ro4a
+.ro3be
+.ro2h
+.ro3m4a
+.ro2tr
+.rö2s
+.ruf3s
+.ruh2r1
+.runder6
+.rü1b
+.rü6cker6
+.sa3br
+.sali3e
+.sami1
+.sau1c
+.sau5er.
+.sch4
+.schaf8t7end
+.scheiner8
+.se3ck
+.se2ei
+.se2ha
+.sen4f
+.sen3s
+.se3re
+.se1ro
+.se2t1
+.sha2
+.si3gn
+.si4te
+.ski1e
+.skis2
+.sour2
+.spani7er.
+.spiege8lei
+.st4
+.ste2i
+.steiner8k
+.sto4re
+.sucher6
+.tage4s
+.tan4k3a
+.tan4k3l
+.ta3ra
+.tar3t
+.ta2t3h
+.ta2to
+.ta4tor
+.ta2t1u
+.te2e
+.te2f
+.tehe3
+.teiler8s
+.tei8l7ersc
+.te3l
+.te3no
+.ten3s
+.te1ra
+.te2s
+.te4st
+.tester8g
+.tester8h
+.test3r
+.th4
+.ti2e
+.ti2me
+.ti4mes
+.ti2s
+.ti8sch7end
+.tite4
+.tode4
+.to4der
+.todes5
+.to2n
+.to4nat
+.to4nin
+.to4pl
+.to2pr
+.to2w
+.tri3es
+.tro2s
+.ts4
+.tsa3
+.tse3
+.tu3ra
+.tu3ri
+.turm1
+.tur4ma
+.ub2
+.ufe2
+.ufer1
+.ul2b3
+.um3
+.uma2
+.ume2
+.umo2
+.un3a2
+.un3d
+.une2
+.un3g
+.uni4t
+.un3s
+.uns4t
+.ur3a2d
+.uran6fa
+.ur1c
+.ur1e
+.ur4inf
+.ur3o4m
+.ur1o2p
+.ur3s2
+.ut2a
+.ut3r
+.übe4
+.ve5n2e
+.voll1
+.vo4r
+.wah4l
+.wa2s
+.weg5s
+.wei4ta
+.welter8e
+.welter8kl
+.wer6ker
+.wer4kr
+.wer4tr
+.wetterer8s
+.wi4e
+.wor2
+.wort5en6
+.wor8tend
+.wor4tu
+.wur2f1
+.xe3
+.ya4l
+.zahn3
+.zel4la
+.zelle4
+.zel6leb
+.zeug4i
+.zi2e
+.zie4l3u
+.zin4ka
+.zin4s3c
+.zin4st
+.zuch2
+.zucht3
+.zug3l
+.zu4gra
+.zu2pf
+.zwe2
+.zweigen8
+.zwei8g7end
+a1ab
+aa2be
+aa1c
+a1a2ce
+aa2gr
+a1akt
+aals2t
+a1a2n
+a2ans
+a1aq
+2a2ar
+aa2r3a
+aar3b
+aar3d
+aa3rea
+aa2rei
+aarf4
+aar3g2
+aar3k4
+aar3t4
+1aas
+aata2
+aa2th
+aa4t3r
+aat4s3
+2a3au
+a1ä
+a1b
+2aba
+ab1alt
+ab2am
+ab2ant
+ab1au
+ab1ä
+ab2är
+ab2äu
+2abbat
+2abbin
+1abd
+4a3be.
+4a3bec
+abe1e
+ab1eic
+abe3i4d
+ab1eil
+ab1ein
+4ab2el
+abe2la2
+abe4l3in
+1abent
+2aber
+a2berd
+a3beri
+ab1er2k
+ab1er2r
+ab1er2z
+4abes
+abe2s1e
+ab3esse
+2ab2et
+2abew
+1abf
+1abg
+3abga
+1abh
+2abi
+4abil
+ab1ins
+ab1ir
+abi3s4t
+3ab1it
+1abk
+ab1l
+1a2bla
+a4blag
+a3blat
+a4blau
+1a2blä
+3ab3lei
+2ablet
+ab3li
+a2blin
+ab4lit
+2ablo
+1a2blö
+2ablu
+1abn
+2abo
+3a2bo.
+ab2of
+3a2bon
+4abot
+2abö
+ab3r
+a4brä
+a2bre
+2abro
+ab4ros
+2abrö
+1ab5sc
+1ab3s2p
+abst2
+ab3sz
+1abtei
+abte2s
+3abtr
+2abu
+a2bum
+ab1ur
+2abü
+1abw
+2aby
+aby4t
+3abz
+2a3ca
+ac1c
+a1cem
+a1cen
+a2ceo
+ach1a
+a1chal
+a3chari
+ach3as
+ach3au
+2achb
+a1che
+a2ch1e4c
+ach1ei
+ach4ei.
+a2chep
+a4cherf
+ach5erfa
+a4ch3erh
+a4ch3erl
+a4cherö
+a4ch3erw
+2achf
+2a1chi
+a2chim
+ach3l
+2ach3m
+ach3n
+a1cho
+a3cho.
+ach1ob
+a2cho2r
+ach3ö
+2ach3r
+2achsc
+achs4el
+ach3s4i
+ach3skr
+achs4or
+ach3su
+a4cht
+ach4tak
+ach8tersp
+ach6t5erw
+ach4t1o
+ach8traum
+ach8träume.
+ach8träumen.
+ach6trit
+acht6sal
+ach4tum
+a1chu
+ach1u2f
+ach3ü
+2achv
+4ach1w
+a2chy
+2a1ci
+4ack.
+a1ckar
+a3ckel
+a2ckin
+ack2sp
+acksta4
+2a1cl
+acon4n
+2acu
+a1ç
+a1d
+2ad.
+2ada.
+4adab
+a2dac
+a2dad
+ad2ag
+ad1ama
+a2d1an
+3adap
+4a3d2a2r3
+2adat
+a2d1au
+a3dau.
+1a2dä
+ad1c
+1add
+2ade.
+ade2al
+a3dec
+a3dee
+adefi2
+2adeg
+4aden
+ade1ra
+4ade1s
+ade3s2p
+ades4s
+2adf
+4adh
+4adi
+adi3en
+adi3er.
+adie4sc
+adi4st
+3adj
+2adli
+3admi
+4admu
+ad2ob
+1a2dop
+2adp
+2adq
+2ad3rec
+ad3rei
+ad3run
+2ads2
+ad3st
+ad3sz
+2ad2t1
+ad4te2
+adt3h
+1adv
+2a1e1
+ae2b
+a2ec
+ae2ck
+ae2d
+ae2i
+a2ek
+a3el.
+a2ela
+a2ele
+a2eli
+a3els
+ae2m
+ae2o3
+ae2p
+a3er.
+3a2er2o1
+aes2a
+ae2sc
+aes5t
+a2ew
+ae2x
+2afa
+af1ab
+a2f1a2n
+a3far
+a2f1au
+2afä
+a2f1än
+2afe
+a2f1ec
+a4fentl
+a4f1ep
+aff4a
+af2f3l
+af4flu
+aff2s
+2afi
+afi2e1i
+afi6kanz
+afi4kat
+afi2t
+2af3l
+a1flu
+2afo
+a2f3oc
+a2ford
+afo1s
+2afra
+af3rau
+af3rä
+af3re
+2afro
+af3rö
+af4rü
+af3s2a
+af3s2h
+af2si
+af2sp
+afs4t
+af2t1a
+af2tei
+af2te2l
+aft4erk
+af2t1o
+af2tö
+aft3r
+af2tra
+af4t5re
+aft4stä
+af2tur
+a2f3ur
+2afü
+afür3
+a1g
+2ag.
+2aga
+ag1a2b
+ag1a2d
+ag1ar
+a2g1au
+agd1
+ag2del
+ag2di
+ag2dr
+ag2du
+4age.
+age1i
+agein4s
+age4ler
+ag2em
+4a3gen.
+age4neb
+a2gent
+2ages
+age4sam
+age4s3i
+age2s3p
+ages6sen
+age4s3ti
+3aggr
+a2g1id
+a2gim
+2a2g1l
+ag4lan
+ag4las
+ag3le
+a4glö
+2agm
+ag2n
+ag4nat
+a4gnä
+ag4ne.
+ag4nu
+ag3rat
+a2g3re
+a2g3ri
+ag4ro
+2ags
+ag3s2ah
+ag4sam
+ag3s4eid
+ags8porta
+ags4tan
+ag1ste
+ag3stö
+2agt
+ag2th
+2agu
+a2gund
+2ah.
+a1ha
+ah2an
+ah4at
+a1hä
+2a1he
+ahe1in
+a2h1er2h
+ahe1s
+ahe1u
+a1h2i
+ahin3
+ah2l3a2
+ah2l1ä
+ah4l1ei
+ahle4na
+ah4l3erd
+ah4l3erh
+ahl1o2
+ah2lö
+ahl3sz
+ahme1i
+ahme3s
+ah3mu
+ah4n3a
+ah3nee
+ahn3el
+ah4nerd
+ahner4e
+ahner6le
+ahner4n
+ah2nin
+ah2no
+1a2hor
+ah1os
+a2h3ö
+4ahr
+ahr1a
+ah3r2e
+ahren6sc
+ahre4s
+ah3ri
+ahr6tage
+ahr6teng
+ahr2ti
+ahr4tri
+ahr4tro
+ahr4tun
+ah2ta
+ah2te2l
+ah2t1ex
+ah4t5r
+aht3s6
+a1hu
+ah1w
+a1hy
+2ai.
+ai3a4
+a1ia.
+2aib
+ai2bl
+aid2s
+ai1e4
+ai3en3
+aif4
+ai1fr
+ai3g4
+a3ik.
+ai3ke
+ai2lar
+ail3d4
+ai2lei
+ail3g
+ai2lo
+4ain
+ain2a
+a1ind
+ai5n4e
+ain3s
+ains2p
+3airb
+ai2sa
+a3isch.
+ai5schw
+ai3s2e
+ait4
+a3iv.
+a3ivl
+a3ivs
+a1j
+a2jat
+aje2
+ajekt4o
+2ak.
+a3ka.
+2aka3b4
+a2ka3d2
+2akal
+2a3kam
+2akar
+ak4at
+aka4tak
+1akaz
+4akä
+2akb
+2akc
+2akd
+2a1ke
+a2kef
+a2k1em
+a2k1ent
+a2kes
+a2keu
+4a1ki
+ak1ins
+aki1s
+1akku
+2ak3l
+ak4li
+a1kna
+2ako
+2a1kr
+4akra
+ak4ri
+2aks
+ak3sh
+ak2t1a2b
+2aktb
+ak2tel
+akt2er
+2aktik
+2aktis
+2aktm
+ak2tö
+ak2t3r
+akt4ri
+2aktsi
+2aktsp
+2aktst
+2aktw
+a1ku
+2akun
+a2kup
+2akur
+aku2s
+4a3kü
+1akz
+3akze
+a1la
+2ala.
+4alabo
+al2abr
+al1af
+al1age
+2alai
+al3akr
+al1am
+al1ana
+4aland
+a2lang
+al1anz
+al1app
+a3lar.
+al3arc
+a3lare
+al2arm
+2al3arr
+a2lart
+ala2s
+al1asi
+al1ass
+ala2t1a
+al4atm
+alat3z
+al1au
+al3aug
+a1lä
+a2l1äm
+al1än
+al1äu
+3albat
+al2bär
+alber4e
+al4berh
+al4b3er4w
+al2b1l
+al2boh
+alb3ru
+alb3s
+al2dä
+al4d3erl
+al4d3ern
+alde2s
+ald3inn
+al2dr
+alds2
+2ale
+4a3le.
+ale4ar
+al1eb
+ale2be
+al1ec
+a4l3ef
+a2l1ei
+a3l2eic
+a4l3ein
+a2l1el
+3a2lema
+alen1
+4a3len.
+3alenc
+alende4
+al3endr
+a4l3ends
+a2leng
+al2enn
+a3lentf
+ale2p
+al1epo
+4aler.
+a2l1erb
+a2l1erf
+a2l1erh
+aler4kl
+a2l3erl
+al1erm
+aler4mi
+a2l1er4r
+a2l1ert
+3a4l3erwä
+4ales
+a2l1e4sk
+a2less
+a2l1eu
+al3exi
+alf4r
+2alg.
+3algi
+al2gli
+al3glo
+1algo
+3algor
+2ali
+al2imb
+al1imm
+ali4nal
+al1ind
+a2l1inq
+al1ins
+alken1
+al2klö
+al2kne
+1alkoh
+alk3s
+alks4t
+al2lab
+al2l1an
+al2l1ap
+al2l1a2r
+al2l1au
+al3le.
+al4lec
+3allee
+al3lend
+all3erk
+al3les
+al2lid
+alli5er.
+alli7ers.
+al2lob
+al2lop
+al2löf
+al2map
+al4m3ast
+almo6de.
+a2l1ob
+3aloe
+a2lof
+4alog
+alo2ga
+alo2gr
+al1ont
+al1ort
+a2l1ö
+al2ös
+3alp.
+3alpe.
+1alph
+al2pho
+alrat4
+al3sak
+al6schei
+alsch3s
+al3ska
+al5s6terb
+al2stu
+al2sum
+al2t1ak
+al3tam
+alt1an
+1altä
+al4temu
+al4t3er5f
+al2teu
+al2tin
+alt1op
+al2tö
+al4t3rat
+al2tre
+al4t3ri
+al2t3ro
+alt4stü
+2altu
+a1lu
+alu3b4
+al2u3f
+alu3g
+al1u2k
+a2lum
+al1umb
+al1ur
+a3lus
+4aly
+al2zar
+al2zau
+alz4erk
+al2zw
+2am.
+am2a
+ama3d2
+ama3g
+a2malg
+2a3m4an
+a2m3ap
+3a2maz
+2amä
+4ame.
+a2meb
+2amel
+am4e4n1
+amen6spr
+ame3r2a
+a2m1erf
+a2meri
+ame5r2u
+ame1s
+a4mesh
+a3met
+2amf
+am4ing
+2amir
+2amis
+2amit
+2amk
+2aml
+2amm.
+2ammal
+am4mant
+am2mar
+am2mei
+am2mid
+ammi2e
+am2min
+am2mor
+am2mö
+ammu2
+amni1
+a2mö
+2ampe.
+2ampen
+am4pf
+amp2f1a2
+ampf1o
+2am2ple
+2ampo
+am3pr
+2am2s
+am3sa
+4amsc
+am4schl
+3amse
+am3s2h
+am3so
+am3sp
+am3su
+1amt.
+am2t1a2
+am4tau
+am2t1ä
+am2tei
+amt3eig
+am4tel
+am4t3ern
+am2t1ex
+am4tis
+am2tit
+am2to4
+am6tou
+am2tö
+am2t3r
+am6tre
+am4tri
+am2t1u
+2amu
+3a2mul
+2ana.
+2anab
+ana3c
+4anad
+anadi1
+an2ag
+2a3nak
+an1alg
+ana4lin
+an4a3ma
+2anan
+an4and
+2ana1s
+a5nat.
+ana4th
+a5n4atm
+ana4tr
+an3aug
+1an1äs
+1anb
+2anbas
+2anbu
+an3ch
+2and.
+3an3d2ac
+and3arm
+and3ei
+anden6ga
+an4d3ent
+and5erob
+ande2s
+an2d1ex
+and4sas
+and2so
+and6spar
+and6spas
+and2su
+4andu2
+an2d1ur
+andy1
+2ane
+4ane.
+an3e2c
+a3nee
+an2ei.
+an3eif
+3aneig
+a4neis
+3a2n1e4k
+ane2mi
+4anen
+aner4fa
+an2erh
+a4nerke
+4anern
+a4nerz.
+an4erze
+an1eth
+1anf
+2anf.
+2anfab
+3anfä
+an3fe
+2anfi
+an4fj
+anf3le
+4anfors
+anf5rau
+2anfs
+an3f2u
+2ang.
+1angab
+an2gan
+an2g1ar
+2ange.
+1angeb
+1angeh
+an2g1ei
+an4g3erf
+an4g3er4w
+an4g3erz
+2angh
+2angie
+ang1l
+an2gla
+ang3n
+ang1r
+ang3ra
+1an3gri
+2angs.
+angt4
+1anh
+2a3n2i
+ani3d
+ani3els
+ani5ers.
+ani3g2
+ani3ke
+3a4nim
+a4n3ind
+a4n3ins
+ani2o
+an3i4on
+a4niso
+2anj
+2ank.
+an2kab
+an2k1ak
+an2kan
+an2kei
+2anken
+ank5erfa
+2anki
+an2klö
+an2klu
+ank3no
+an4k3opf
+an2ko4r
+ank1r
+ank3ra
+an4kras
+ank3rä
+an2kro
+2anks
+ank3se
+anks2p
+2ankt
+1anl
+2anlad
+3anlag
+2anmo
+1anmu
+2ann.
+1annah
+an2nar
+an3ne
+an4nef
+annen3s4
+2anns
+ann4s3p
+2annt
+2ano.
+ano3b
+an1od
+2anof
+2anog
+anoi3
+a3nol
+ano2la
+1a2nom
+a3nom.
+a2n1or
+2a3nos
+2a1nö
+2anpu
+1anr
+2anrö
+an3sar
+1an3s2ä
+3anschr
+an3skr
+ans1pa
+ans3pon
+1anspr
+1anst
+ans4tr
+an3s2z
+2ant.
+an2t3ar
+anta4re
+an3t2ä
+1antá
+3antei
+an3tha
+2antie
+3antise
+2anto
+anton2
+1antr
+ant3rin
+1antw
+2anu
+an4ut
+a1nü
+1anw
+2anwi
+an2zä
+2anzb
+2anzd
+1anzei
+anze4n
+2anzg
+2anzh
+an2zid
+an2z1i4n
+2anzk
+2anzm
+2anzr
+2anzs
+2anzt
+1anzü
+3anzün
+2anzv
+2anzw
+an2zwa
+an2zwi
+2anzy
+2ao
+aof4
+ao3i
+a1op
+aopf4
+a1or
+a1os5
+aost2
+a3ot.
+aot4r
+ao3t2s
+2a1ö2
+a1p
+4ap.
+2apa
+a2pe.
+a3pel
+a2pé
+a2pf
+ap2fa
+1apfel
+2apfes
+a3pfl
+a2pht
+2api
+2ap3l
+ap4la
+ap4lä
+ap4lo
+ap2n
+a2pot
+ap3pu
+2apr
+4apro
+aps4ter
+ap5t2
+2a3pu
+2ar.
+a1ra
+a3ra.
+ar2ab
+2ar3abb
+ar3abf
+ar3abt
+ara3d2
+ar3adr
+ara3ge
+a2r3al
+a3r4ale
+a3rali
+a3ralo
+2aran
+a2r1ang
+a2r1anz
+2arap
+a2r3app
+2arar
+a3ras
+ara2st
+a2r1au
+a1rä
+1arb
+2arb.
+2arba
+ar2bak
+ar2b3at
+ar2bau
+4arbef
+ar4b3ein
+2arbek
+2arben
+2arber
+arb3erl
+4arbi
+2ar2bl
+2arbo
+2arb1r
+ar2b3re
+2arbs2
+arb3sk
+arb3so
+2arb3t4
+2arbu
+1ar1c
+2archl
+2archr
+ar2dau
+arde2l
+ar2dob
+ar2dop
+ar2d3r
+ar2du
+a2rea
+are5aler
+a2reb4
+aree2
+ar1eff
+ar1ehr
+ar1eid
+a3reih
+areim3
+a2rein
+arein4b
+arein4s
+arein4t
+a2rele
+4arem
+4a5ren.
+a5reni
+aren6sem
+are3r2a
+arer2e
+a4r3erei
+a2rerg
+a2r1er3h
+a2reri
+a2rerk
+a2rerl
+ar2erw
+are3u
+arf1r
+arf3ra
+arf2sp
+4arg.
+ar3gan
+ar2gl
+ar2gn
+2arg4o
+ar3g4r
+2arh
+2ari
+ar2ia
+a2rid
+ari3e2n
+ari3erd
+ari3erg
+ar3inf
+arin3it
+arin3s4
+ar1int
+a3rio
+ar2ir
+ar4is
+ari2su
+a3riu
+ar2kal
+ar2k1ar
+ark3aue
+ar2kil
+2ark3l
+ar4klag
+ar2kle
+ar2klo
+ark4lö
+ar2kor
+ark3s4a
+ark2se
+ark3she
+ark6tre
+ar2les
+ar3mad
+ar2m1au
+ar3m2ä
+3armee
+ar2m1eg
+ar2m1ei
+ar4merk
+arm2or
+ar2mum
+4armü
+ar2nan
+arn2el
+ar3ni
+ar4nin
+a1ro
+4aroc
+aro8ckeng
+ar1o2d
+ar1of
+aro2fe
+a3rol
+aro3m
+aron2
+a2r1o2p
+a2ror
+aros3
+a2r1ö
+2arp
+arp3fe
+2arr
+ar2r1ad
+ar2r3as
+arre4n1
+ar2r3or
+2arsa
+ar3se
+ar3s2h
+2ar3s2i
+ar2tau
+2artb
+ar3t2e
+2artei
+arter6la
+ar2the
+art3ho
+ar3t2i
+2arto
+art3r
+art4res
+2arts
+art3ske
+2artuc
+2aru
+a2r1uh
+ar1um
+a3rumm
+a2rü
+2arv
+arwa2
+2ary
+ar2zau
+ar2zä
+2arze
+2arzi
+ar2zö
+1arzt
+arz4tei
+arz4tem
+arz2t3r
+2arzu
+ar2z1w
+2asa
+a4s3aa
+a2s3af
+a3sag
+as2al
+as1am
+as3art
+asa2s
+as3at
+asau4f
+a2s3aug
+a2sä
+as3ät
+a6sca
+a4schec
+a4schef
+a4sch3ei
+a6scherg
+a3s4chi
+a2schm
+2ascht
+a3schu
+a4schum
+4a3se
+a4seb
+a4sec
+a4s1ef
+as1eie
+as1emi
+a5sen.
+ase4na
+ase4n3o
+as2er
+a4s3erke
+as4es
+ase4t
+a4sex
+a3s2hi
+as3hir
+a2s3i2k
+2asim
+asin2g
+as1inn
+2asis
+aska3s
+as3ob
+as1of
+a5sol
+a5som
+as1o2p
+as1or
+a4soz
+a2sö
+a2s1p
+aspek6to
+as2ph
+a3s2pi
+as3pio
+a4spir
+as2pra
+2as3sa
+ass2ab
+ass6aus.
+ass2e
+ass3ein
+asse3le
+as3s2i
+as3ski
+as3so
+as2spo
+as2spr
+as2st
+as3sta
+as3stei
+as3sti
+as3str
+as3stu
+2as3ta
+a1stas
+as4tati
+as4tau
+a3stä
+as3te
+ast2el
+ast2er
+as4t3ese
+as4tex
+a4s2th
+as3tie
+as3til
+as3to
+as4tof
+ast3orc
+a1str
+ast3re
+as3t4ren
+ast5roll
+as3tub
+2asu
+as2ur
+a3sus
+a2sü
+aswa2s
+2asy.
+3asyl
+a1ß
+aße4
+aßen3
+2a1t
+4ata
+at1abe
+at1abr
+at2a1f
+a5t2a3g
+at1akt
+ata3l
+a3tam
+at1apf
+at2asc
+at3att
+a2t1au
+a3tau.
+at2ax
+at1än
+4atb
+at2c
+a2teb
+a3tec
+ateien6d
+at1eig
+3a2teli
+3a2temg
+at2en
+ate4na
+atens4e
+a2tep
+ate3r4al
+ate3ran
+atern2
+ater3st
+ate2ru
+4ates
+ates4sa
+a3tet
+at2eu
+a2tew
+at2ex
+at3hag
+a3t4heb
+a2th3in
+3athl
+a4thr
+at2hu
+4a3ti
+ati3ka
+ati4kab
+ati6k5erw
+a4tinf
+ation4
+at2is
+ati2sa
+ati2se
+atis3s
+3atla
+4atli
+3atm
+4atma
+4atmä
+4atmus
+ato4man
+ato4men
+3atomk
+ato2mo
+at1ort
+ato3s
+atra4t
+a2trau
+a2t3rä
+at3re
+4atri
+at3rin
+a2t3rom
+at4ron
+at3rot
+at3rü
+at2sa
+at4schn
+at2se
+at2si
+at2s1o
+at2s1p
+ats3tät
+at3ta
+3attac
+at4tad
+at4t1ak
+at4tang
+at4tar
+at4tau
+at2tä
+4atte.
+at2t3ec
+at2tei
+att2el
+at5ter
+at3thä
+4atto
+at2t3rä
+att3s4
+at3t2u
+a3tub
+atu2n
+a3tü
+atze4l
+atz3ela
+atz3elt
+at2z1er
+a3tzere
+at2z1in
+at2zo
+atz3t4
+at2z1w
+a2u
+2au.
+2au3a2
+2aub
+au2bab
+au2ban
+au2bau
+aube4n
+au2beu
+au2blä
+au2bli
+au2blo
+au2blu
+aub2si
+4auc
+aude4r3i
+au2dr
+2aue
+aue2b
+au2ere
+aue3rei
+au5erein
+auer3ö
+au5erst.
+au3ert
+aue2s
+au2fa
+auf1an
+2aufe.
+2aufeh
+4aufen.
+3aufent
+auf1er
+au4ferk
+au2feu
+auff4
+auf3ind
+1aufla
+1aufn
+2aufo
+auf3ski
+auf3t4
+2auft.
+2aug
+aug2ar
+4augeb
+4augeh
+4augel
+aug2er
+4augl
+4augr
+au3gu
+au3h
+2au1i
+au3in
+au2is
+2auj
+auk3t
+aule2s
+aul4les
+au3lü
+4aum
+au2mal
+au4m3ent
+au2m1e2r1
+aum3eri
+au2mid
+au2mil
+aum1o
+au2mor
+aum3p2
+aum3s6
+au4mun
+4aun
+au3n2a
+aun2e
+au4nei
+au2nio
+au2no
+au3nu
+a4unz
+au1o
+2aup2
+aup4ter
+2aur2
+au3ra
+au1rh
+aurü3
+au2s1ah
+ausan8ne.
+au2sau
+2ausc
+au6schmi
+1ausd
+2ause.
+au4s1eh
+2ausen
+au4s3erb
+au4s3erf
+au4s3erk
+aus3erp
+au4serw
+1ausf
+1ausg
+au2sin
+au2sis
+1ausl
+au2so
+aus1or
+au2spr
+1ausr
+3aussag
+aus4se.
+aus3s4t
+aust2a
+2auste
+au5stein
+aust2o
+3ausü
+1ausw
+1ausz
+auße2
+2aut.
+au2t1äu
+2autb
+2aute
+au4t1e2l
+au4ten4g
+au4t3erh
+2autg
+1auto
+au4trö
+2auts2
+2auu
+2auv
+auve4
+2auw
+2aux
+2auz
+au3ze
+auz2w
+2a1ü
+a1v
+av2a
+a3vang
+avas4
+ava3t2
+avener4
+2avi
+a2vr
+2a1w
+awi3e
+a1x
+ax2am
+a2xans
+ax2e
+a3xid
+a2xio
+ay1
+2a1ya
+ay2al
+ay2as
+a1yeu
+ayma4
+ays2
+aysi1
+ay3t
+ay2u
+2a1z
+a3z4a
+aza3d
+3a4zal
+az2i
+az2o3
+a3z2u
+az2zen
+az2z1in
+az2zw
+ä1a
+1ää
+ä1b
+ä2b3l
+äb2s
+ä1ce
+ä1che
+äche1e
+äche4n
+ä1chi
+äch3l
+ä2chr
+äch4s3a
+äch2s1o
+äch2sp
+äch2st
+ächt4e
+ä1chu
+ä1ck
+ä1d
+ä2da
+äde1s2
+ä2d1ia
+ä2dr
+äd2s
+2ä1e
+äe2x
+äfe4n
+äf2fl
+äfig3
+äfigs4
+äf3l
+äf3r
+äf4ro
+äf2s
+äf3t2e
+äft4s3
+ä1g
+ä2g1a
+1ä2gä
+ägd2
+äge1i
+äge2r3a
+äge3s
+ä2g3l
+äg2n
+ä2g3r
+äg4ra
+äg3s4ta
+äg3s4tr
+1ä2gy
+äh1a
+2ä3he
+ä4h1ei
+äher8gebn
+äher5t
+ä1hi
+äh1in
+ähl1a
+äh3l2e
+äh4l3e4be
+äh5ler
+2ähm
+äh3na
+äh3ne
+1ähnl
+2ähr
+äh2rel
+äh3ri
+2ähs
+2äht
+ä1hu
+äh1w
+2äi
+ä1im
+ä1is.
+ä3isch.
+ä1isk
+ä1j
+ä1k
+äka2la
+äk3l
+ä2kle
+äk4li
+ä2k3r
+ä1la
+älbe2
+äl2bl
+älk3
+älks4
+äl2l1a
+äl2p3
+äl4schl
+äl2st
+äl3te
+ä1lu
+2äma
+ä3me
+ämer2s
+ämi3en
+2äml
+ämoni3e
+2ämp
+ämp7f4e
+äm2s
+ämt2e
+2än.
+änd2e
+än2dr
+2än2e
+äne2n1
+äne1s
+2än2f5
+änft2
+2än3g2e
+änge4ra
+2än2g3l
+än2gr
+äng3se
+2ä3n2i
+än3k2e
+än2k3l
+än2kr
+änk2s
+än3n4e4
+2äns
+än4s1a
+än2s1c
+äns2e
+änte3le
+2änz
+ä1on
+äo3s2
+ä1pa
+1äpfel
+äp2pl
+äp2pr
+äp2s1c
+äp4st
+1äq
+ä2r3a4
+är4af
+är1ä
+är2b3le
+är1c
+2ärd
+ärde4s
+2äre
+ä2r1ei
+ä2r1e2l
+är2em
+äre2n
+ä2rene
+är2er
+är2es
+ärf2s
+är3ge
+ä2rind
+är1int
+är3ke
+ärk2s
+ärm3arm
+ärme1e
+ärm3ent
+ärm2s
+är1ob
+är1of
+äro2p
+ä1rö
+är3re
+ärse2
+är2seb
+är4seh
+ärs1er
+är2si
+är3spu
+är2st
+är3str
+2ärt
+ärt4e
+är2th
+ärt2s3
+ä2rü
+1ärz
+är3ze
+är2zu
+är2zw
+2ä3s2e
+äse3g
+äse1i4
+äse5ref
+äser4ei
+äse4ren
+äser2i
+äse3t
+ä3s2kr
+ä2s1p
+2äs2s1c
+äss2e
+äss5erkr
+äss5ersa
+äss3erw
+äs2sp
+äs2s3t
+ä4s3t
+äst2e
+1ästh
+äs4tr
+ä3su
+ä1ß
+äß1erk
+äß1ers
+ä2t3a2
+2ä3te
+äte3a
+äte1e
+äte1i
+äte3l2
+äte2n
+äteo2
+ät1ob
+ä2t3r
+ät2s3a
+ät2sä
+ät4schl
+ät4schr
+ät2s1i2
+äts3l
+äts1or
+ät2s1p
+ät2s3t
+ät2tei
+ätte4n
+ät4tr
+ätze3l
+ät2zw
+2äub
+äu2b3l
+äu2br
+äu1c
+äu3d
+äude3
+äuder2
+äu3el
+2ä2uf
+1äug
+äug3l
+2äul
+2äum
+äu2ma
+äum3p
+äumpf4
+äum4s5
+2ä2un
+äun2e
+äu3nu
+2äu3r2
+äure1
+2ä3us.
+2äusc
+äu4schi
+äu4schm
+äu3s2e
+äuse1i
+ä3usg
+ä3usk
+ä3usn
+äu2sp
+äus2s1c
+1äuß
+äut2e
+äu2tr
+ä1v
+1äx
+ä1z
+â1t
+á1n
+3ba.
+b3a2ba
+2babf
+2babg
+ba2bl
+ba2br
+2b1abs
+bach7t4e
+ba4ck3er
+back3s4
+ba3d2e
+bade1i
+2b1adel
+2b1adl
+2b1adm
+b1a2dr
+ba2du
+2b1af
+bah6nene
+bais2
+b2ak
+ba2ka
+ba2k1er
+ba2k1i
+bak1l
+bak3r
+ba2kra
+ba2kre
+ba2lab
+ba2l1ak
+ba3lal
+ba2lau
+ba4l3erk
+balk4a
+balke4
+bal4l3eh
+bal4l3ei
+baller6e
+bal6ler6g
+ball6erk
+bal3ti
+2b1am
+b2ama
+ba2me
+ban2a
+3b2and
+band1a
+ban4dal
+ban4dan
+ban4dar
+ban6deng
+ban2dr
+ba3n2e
+2banf
+b1ang
+ban3gl
+ban4k1a
+banker4
+ban2kl
+ban2kn
+ban2kr
+ban2ku
+2banl
+b1anna
+ban2o
+2b1ans4
+b1an3t
+2banw
+b1anz
+ba2r3ab
+ba2rad
+bar3ast
+ba2r3at
+bar3de
+ba2rei
+ba3r2en
+barer5ei
+bar3n
+b2aro
+3bar2s
+bar3sc
+b1arz
+bar3zw
+3bas
+ba3sa
+ba2sc
+bas2i
+bas4sa
+bas4sei
+bas4st
+ba2st
+ba4t3ent
+bat2o
+3bau.
+bau3b
+bauer4l
+bauer4s
+bau1fl
+bau1fr
+bau3g2
+b2auk
+bau3r
+bau1s
+bau3s2k
+baus4t
+b1a2x
+ba1yo
+3b2ä1c
+3b2äd
+2b1äh
+b2äl
+2bärz
+b2äs
+2bäug
+4b1b
+b3be
+bbe4n3
+bbens2
+bbe4p
+bb3le.
+bb3ler
+bb2lö
+b3brec
+b3bru
+bbru2c
+bb2s
+bbu1
+2b1c
+2b5d4
+bde1s
+bdome4
+1be.
+3bea
+be3an
+be3ar
+3beb
+b1ebb
+1be1c
+2becht
+2b1e2del
+bedi4
+be1e2h
+bee2l
+be1ela
+bee4rei
+be1erl
+be1ert
+be1eta
+bef4
+2b1eff
+be3g2
+begas1
+be2he.
+beh5ri
+bei3b
+2b1eier
+bei1f4
+bei4ge.
+bei3k4
+bei3l2a
+2b1eime
+be1ind
+be1inh
+bein6hal
+bein4hi
+bei3sc
+beis2e
+bei1s4t
+beit2s
+3bek
+3bel
+be3lag
+be3las
+be3lec
+4be2lek
+be2l1en
+bel3ere
+be2let
+bel3f
+be3l2i
+beli4e
+bel3la
+belle4n3
+bel3li
+be2l3om
+be2löf
+bel3sz
+bel3t
+bel4un
+1bem
+2b1emp
+2bemul
+1ben
+be5nabe
+ben3ar
+be4nas
+be4nat
+b2ene
+be3nei
+be4n3end
+be4ners
+be4ness
+ben2eu
+3beng
+be4nis
+ben3n
+5benp
+b2ens
+ben4s3pa
+ben4spr
+benst4
+3bensz
+2b1entb
+2bentd
+4benteu
+2bentf
+ben3th
+ben6thei
+bent4r
+2b1ents
+2b3entw
+ben3un
+ben3z2
+be1o
+2b1epi
+be1ra
+be2r3am
+be2ran
+ber3a2s
+berb2
+ber3d
+b4ere
+be2re2b
+ber2ec
+bere3ck
+ber4ei.
+be4r3eiw
+be4rene
+ber4erg
+ber4erw
+bere4sc
+berf4
+3berg.
+ber4g3af
+ber4gal
+berg3as
+ber4hab
+ber4in.
+be5r6inne
+berin4s
+ber3iss
+ber3kr
+ber3n2a
+b1ernt
+be2rö
+3bers.
+ber3st4a
+bert2a
+bert2e
+bert2i
+b4eru
+ber3ze
+ber2zö
+3b2e1s
+be3s2a
+bes4abb
+be4sap
+be4sar
+be2s1er
+be2s1id
+be3s4lo
+bes2po
+bes3sa
+bess4e
+b3esst.
+bes3sz
+be4stab
+beste2
+be6stein
+bester4
+bes6terh
+best2i
+bes3tin
+be4stol
+bes4to4r
+bes3tos
+best4r
+be4s5trä
+be4s3tur
+be3s4ze
+3bet
+be3tam
+bet2sp
+be1un
+be1ur
+3bev
+3b2ew
+2b3e2x
+3b2ez
+2b5f4
+bfal2
+bfal3t
+2b1g4
+b5ga
+bge3
+bgel2e
+bge5n
+bges4
+2b1h2
+b5hä
+1bi
+3bib2
+bibe2
+biber1
+bi2c
+bien3s
+bieres4
+bie2s
+biet2s
+3bietu
+bik2a
+bi2ke.
+bi2kes
+bi2k3re
+3bil
+bi3la
+bil2an
+bi4l3ans
+bi4lau
+bil4deb
+bi2lei
+4billu
+bi2lu
+2bimp
+2b1inb
+bin2e
+b1inf
+2b1inh
+bi2nok
+2b1int
+2b1inv
+bi2o3
+biri1
+3bis
+b1iso
+bi2sp
+bis2s1c
+bi2st4
+bi3sta
+3b2it.
+b2ita
+bit2an
+b2ite
+bi3ti
+bi2tu
+bi3z2
+4b1j
+bjek4to
+2b5k4
+bl4
+2bl.
+bla3b4
+2b1lac
+b3lad
+b2lanc
+b3late
+b2latt
+b2lau.
+b3laus4
+2b3law
+2b1län
+b2läse
+3blät
+b2le
+3ble2a
+b3leb
+3blec
+b3leg
+2bleh
+b4lei.
+2b3leid
+2bleih
+b3lein
+blei3sc
+2bleit
+ble3l
+2b3lenk
+b3lese
+2blesu
+ble3s4z
+b4let
+b3leu
+2blich
+3blick
+b2lie
+2blief
+2blig
+bling4
+b2lis
+2blis.
+b2lit
+b3lite
+3blitz
+b2lo
+3b4loc
+b3los
+3b4lum
+2blun
+b2lus
+3blut
+blu4tem
+blut1o
+3blü
+2b1m
+4b5n2
+bnas4
+bni2
+bnis1
+bo4a
+bo5as
+b1o2b
+bo3ben
+bob3r
+bo2c
+bo3ch2
+bo3d2
+boe1
+bo2e3i
+2b1of
+bo3fe
+boh3re
+boh4rei
+boh2u
+bo1is
+bo2lan
+bo2lau
+bol5le
+3bon.
+bon2an
+bon2da
+bon2d1e
+bo2ne
+2b1onk
+3bons
+boo2l
+boo2ti
+b1op
+3bor.
+bo1r2an
+bo2r3as
+bo4rä
+bor2da
+bor2d3r
+bo2rei
+bo4rig
+bor2s
+b1ort
+bor4ter
+bor6t5rat
+bo4ruh
+bo2sc
+bo3se
+bo4s3p
+3bot
+bote3n4e
+bo3th
+bot2st
+bot3t
+3b2ox
+bo2xo
+bö2b3
+2böf
+2b1öl
+bölk3
+2b1p4
+bpa2g
+2b1q
+b2r4
+2br.
+b4ra.
+2b3rad
+2b4rah
+b4ra3k
+brast4
+2b3rat.
+bra4t3er4
+2b3ratg
+3brä
+4bräd
+brä4u
+2bre.
+6b5rechte
+2b3red
+2b3ref
+2breg
+b3reif
+2brek
+breli1
+3b4rem
+2b3rent
+2breo
+2b3rep
+b4rer
+bret6t5en
+bri2da
+brie4fa
+2b3riem
+b4rien
+bri2er
+b3ries
+2brigk
+b4rina
+2b3rind
+b4rio
+b4risc
+b3ritt
+2b3roh
+2b3rol
+b4ron
+2b3rost
+bro4tr
+brot3t4
+2b3rou
+3b4rö
+b4ruc
+2bruf
+b4rum
+2b3rund
+brus4
+brust3
+bru2th
+3brü
+4b3rüb
+2b1s
+b2s1ad
+bs2am
+bs3amb
+b4s3amt
+bsat2
+bsau2r
+b4s3är
+b3s2äu
+b3sc
+bsch2
+b4schan
+b6schef
+bs2chi
+b4sco
+bs2cu
+b3se.
+bse2b
+b3sel.
+bse2n1
+b3sen.
+b2s1ent
+bs1erf
+bs1erg
+bs3e4r3in
+bs1erk
+bs1ers
+b3s2es
+b3set
+b2sim
+bsi4t
+b4ski
+bs2ku
+b4sl
+b2s1of
+b3s2oh
+b4sop
+bso2r
+b2sö
+b3s2pi
+bs2pl
+bs2pu
+bss2
+bs2t
+bst1a2b
+bst1ak
+bst3ank
+bs4t1as
+b3stä
+bs3tät
+bst1er
+bst3h
+b3stic
+bst3ink
+b2stip
+b3sto
+b4stob
+b4stod
+bs4tol
+b4stor
+b3stö
+b4strac
+b2s3trä
+b4s3treu
+bs4tri
+bst3ro
+b3stü
+b4stüb
+b2s1un
+bs2zep
+bs2zi
+4b1t
+bta2s
+btast3r
+b5te
+b2t3h
+b3ti
+bti2s
+bt4r
+btran2
+bts2
+b3tü1
+buche4
+bu4chec
+bucher4
+bu6ch5ers
+bu2chi
+buch3sp
+bu2e3
+bu2f
+bul2l3a
+2bumf
+2b3umk
+2buml
+2b3umr
+bun4d3er
+bunde4s
+b1une
+bung4
+b3un3gn
+2b1unh
+bur1c
+b2urg
+burg1a
+bur4gan
+bur4gar
+bur4gin
+bur2gr
+bu3r2i
+2burn
+b3ursa
+burts3
+bu2sa
+bu2sc
+bus3cha
+bu3sche
+bu6schei
+busch3w
+bu2sin
+bu2s1p
+bu2su
+bus1un
+2büb
+bü1c
+bügel3e
+2b1v
+4b5w
+3b2y1
+by3p2
+bys4
+2b1z4
+b5ze
+bzeit1
+1c2a
+cab4
+ca3bl
+ca2c
+ca2e3
+ca3g2
+ca1h
+cal2a
+cal2f3
+cal3t
+3cam
+2can
+cana3
+ca2pe
+car3b
+car5n
+carri1
+car2s
+ca3s2a3
+cas5to
+ca3t2h
+ca1y2
+cä3
+cäs2
+c1b
+2cc
+c1ce
+c1ch2
+cchi1
+c2d2
+c3do
+2cec
+1ced
+ce2dr
+ce1er
+2cef
+ce1i
+ce3in
+2cek
+3cels
+cen3a
+ce3nu
+ceo2
+1ce1r
+cere1
+cere3u
+ce3r2i
+ce3s4h
+1cet
+ceta2
+cet1am
+ce1u
+1cé
+c1f
+c1g
+c2h
+4ch.
+2chab
+ch3a2b3i
+cha2ck
+2chaf
+2ch1a2g
+2ch1ak
+chal6l5ei
+3chanc
+chan3f
+ch1ang
+4chanl
+4chanz
+3chao
+4char.
+3chara
+3chard
+3charta
+cha2sc
+chasi1
+1chato
+2chatt
+ch5austr
+chau3t
+ch1äh
+ch1ärm
+ch1äs
+1châ
+2chb
+2chc
+2chd
+che3b4
+ch3e4ben
+ch3echt
+ch1edi
+1chef
+3chef.
+che4fer
+3chefs
+2cheh
+2chei
+ch1eim
+4chelem
+che4ler
+3chemi
+2chemp
+che4neb
+che2no
+4chents
+4chentw
+cher3a
+4ch3erbs
+6chergeb
+4cherke
+cher6zie
+ch3es4s
+ches5t
+2ch1e4ta
+2ch3e4x
+1ché
+2chf
+2chg
+2chh
+1chia
+4chic
+chi3na
+4chind
+3chines
+2chinf
+2chinh
+2ch1ins
+2ch1int
+2ch1inv
+1chip.
+1chiru
+2chiso
+2chj
+2chk
+2chl4
+ch2le
+chle2i
+ch2lu
+4ch2m
+2chn4
+chner8ei.
+c4ho
+2chob
+cho2f
+ch1off
+chof4s
+ch1oh
+cho3l2a
+ch1orc
+ch1ori
+ch2os
+ch3öl
+3chör
+2chp
+ch2r4
+2chra
+ch3rad
+2chre
+ch3rh
+4chrit
+3chromo
+3chron
+4chs
+ch2spo
+ch4stal
+2cht
+ch2tru
+2chuf
+2chuh
+2chum
+2ch1unf
+2chunm
+2chunt
+2chur
+ch1urs
+2chut
+chut4t
+4chü
+2chv
+4chw
+1chy
+2chz
+ci2ak
+ci1c
+ci1es
+cill2
+ci2na2
+c1int
+ci2s1
+1cit
+c1j
+c2k
+4ck.
+ck1a
+1cka.
+2cka2b
+2cka2c
+ck2ad
+1ck2ag
+2ckal
+cka2m
+2ckan
+2ckap
+cka4r1
+1ckat
+ck1ä
+2ckb
+2ckc
+2ckd
+1cke
+2ckef
+4ckeff
+2ck1eh
+4ck1ei
+2ckemp
+cke4na
+6cken6sem
+4ckentf
+4ckentw
+cke2ra
+ck2ere
+6ckergeb
+4ck3er4hö
+ckerk4
+ck2ern
+2cke2ro
+ck1err
+6ckerzeu
+4ckese
+4ckex
+2ckf
+2ckg
+2ckh
+1cki
+2ck1id
+ck1in
+3ck4is
+2ckk
+2ck3l
+2ckm
+2ck3n
+2ck1o2
+ck3ot
+ck3ö2
+2ckp
+2ck3r
+4cks
+cks2al
+ck3sc
+ck4spen
+cks4tri
+2ckt
+ck3te
+ckt2i
+1cku
+2ck1uh
+2ck1um3
+2ckunt
+2ck1up
+2ckü
+2ckv
+2ckw
+1cky
+2ckz
+c2l2
+cle4a
+clet4
+clin2g
+cli2p1
+clip3a
+clo1
+clo2ck
+1clu
+clu4b
+c2m2
+c3me
+c3mu
+1c2o
+3coa
+co2c
+co3ch
+3co2d2
+co4de.
+co3di
+cof3f2
+coi4
+co1it
+co2ke
+co3la3
+co2leu
+co5l2o
+3com
+com4te.
+comtes4
+con2ne
+co2pe
+co1ra
+cor2da
+co4re
+cor3t
+cos3t
+co4te
+coti2
+cô4
+2cp
+2c1q
+1c2r2
+c3rä
+3cre2
+4cree
+cre4mes
+cros4
+cry2
+2cs
+cs2a
+cs4f
+c2si
+c1s2ti
+c1s4tr
+4c1t
+c3ti4
+ctio2
+ctur6
+1c2u
+2cua
+cu2e
+cu2p3
+cussi4
+c1w
+1cy
+c1z
+3da.
+da1a
+2d1ab
+d3a2bak
+d2abä
+d2abe
+d3a2ben
+d3a2bi
+d3a2bo
+dab4ra
+da2bri
+da3brie
+d2ab4rü
+d1ac
+d2ac.
+dach3a
+da2cho
+4d3achse
+d1ad
+da2de
+dad4r
+d1af
+2daff
+dafo4n
+d1ag
+dagi4
+dag2o
+dah3l
+da1h2o
+dail5
+da1in
+2d1air
+da1is
+da2kro
+dal2a
+2d1a2lar
+dal3b2
+4d1all
+da3lö
+2d1alp
+d1alt2
+2dalte
+da1lü
+3dam
+d1amma
+4d1ammä
+damo3
+d2amp
+damp7f8erf
+4d1amt
+3d2an.
+d1ana
+da2nan
+da4nat
+2danb
+dan4ce.
+d1and2
+2danda
+d2andy
+3dane
+4d3anei
+2danf
+d1ang
+2danh
+d2ank
+dan2kl
+dan2k1o
+dan2kr
+2danna
+d1a2no
+2d1ans
+2danw
+d2anz.
+2danzi
+2danzü
+2d1ap
+d2aph
+da2por
+4dapp
+4daq
+da2r1a
+2darb2
+2d3arc
+dar2da
+dar2d1e
+dare2
+daren1
+dar3g
+3darl
+dar2m1a
+dar2m1i
+dar4mu
+da2r3o
+3dars
+2d1art
+dar2th
+dar2tr
+da2ru
+d1arz
+da1s2
+da3sh
+d1as3p
+das4t
+d1asy
+da3t2e2
+date4n
+4d3atl
+4datm
+da2tom
+dat2st
+2d3atta
+3daub
+2daud
+dau3e2
+dauer3e
+2d3au2f
+2d3aug
+2dauk
+da3unt
+2d1aus3
+3daw
+d1ax
+3däc
+2d1äg
+2d1äh
+2d1ämt
+2d1änd
+2d1äng
+2d1äp
+2däq
+2därz
+2d1ä2u
+dä3us
+2däx
+2d1b4
+dbe2e
+dbu2c
+2dc
+d3ch
+4d1d2
+d3da
+d3dä
+d3de
+d3dh
+d5do
+1de
+dea2d
+de3alo
+de3ar
+de3a2t
+d2eb4
+3debü
+de1c
+de4ca.
+de2cka
+deco3
+de2del
+de2dit
+2de3e4
+de2fa.
+2d1eff
+def4l
+deg2
+de3gl
+deh2a
+dehe2
+3dehn
+2d1ehr
+d1ei
+3d2eic
+2deid
+de3i4den
+4deie
+2deig
+de3il
+3d2eim
+4deime
+4deinb
+dein2d
+de3inse
+dein6sta
+4deinw
+2deise
+d4e1ism
+dei2sp
+2dekz
+de2l1ac
+del4ade
+de3lak
+de4l3aug
+del3änd
+del3b2
+del1ec
+delei4g
+de3lein
+2delek
+2delem
+de2len
+deler2
+deler4r
+2delf.
+2delfm
+3delik
+del2la
+dell3au
+del2l1ä
+delle2
+del4l3eb
+del4lei
+del4l3er
+de2l1ob
+del2se
+del2so
+del2s1p
+del3t4
+dem2ar
+2d1emb
+dement4
+de6mentg
+dem5ents
+de3min
+2d1emot
+2d1emp
+d2en.
+den2am
+dend2
+de2n1e2d
+de4n3end
+4denerg
+den2es
+4d3en4ge.
+de2ni
+denk3li
+denko4
+de2nos
+dens4am
+den6scho
+4den4sem
+den6sere
+den6s5tau
+2dentd
+4dentf
+2d1entg
+den3th
+2dentn
+2dentw
+2dentz
+de3nu
+den6zers
+de2ob
+2deol
+de1on
+depi2
+dep4l
+2depoc
+dep5t
+d4er.
+dera2b
+der3af
+dera2n
+de3rand
+de2r3ap
+de1ra4s
+de4r3asi
+der2bl
+4d1erbs
+2derdb
+de2re2b
+de4reck
+de4r3ei4s
+d4eren
+de4r3end
+de3r4erb
+de3r4erf
+derer3n
+der3ero
+derer4t
+derer6ze
+de2r1eu
+derf4
+d4erfl
+d2erhü
+derin4f
+de6rinnu
+derin8teg
+der3k2
+4derklä
+d2erm
+de1ro
+de2rop
+derö2
+der3r
+derst2
+der3sta
+dert7ende.
+dert4ra
+6dertrag
+der8trage
+3de3ru
+de4ruh
+de4rum
+2d1erz.
+2d1erzv
+d2es.
+de2sa
+des1ah
+de4sam
+de2s1än
+de2seb
+de4se2h
+de2sei
+2d1esel
+des3elt
+de3sem
+des4end
+desen3e
+de2set
+de4sin
+des1o
+de2sor
+de2s1p
+de3spe
+dess2
+dess4t
+dest5alt
+de3stel
+des6temp
+de5stern
+des4tex
+de1sto
+dest5rat
+de3stri
+des4tum
+de2su
+des1un
+3desw
+det2
+de3ta
+deten4t
+de2thi
+2d3etw
+2d1eul
+de1un
+de1url
+de3us
+2d1e2vid
+devil2
+de2xer
+de2xis
+2d1f6
+2d1g2
+dgas3tr
+d2ge.
+dge3r
+dger2e
+dge3s
+d2gesh
+dge2t3a
+dge4t1e
+2d1h2
+dha1s4
+4dho
+d3hu
+1di
+di2a
+di3ar
+dia3s4
+diat4
+di4ath
+3dic
+di1ce
+di3chl
+dicht6er
+4d3i2co
+d2ida
+2d1ide
+2didy
+di2e
+di3e4d
+di3enb
+die4neb
+diener6l
+di3e2ni
+dienst5r
+dien3z
+di3ers.
+dies1c
+di3e2th
+3dif
+3dig
+dige2s
+dig4n
+dik2a
+dil2s3
+2d1imb
+2dimp
+din4a
+2d1ind
+di3n2e
+2d1inf
+3ding
+2d1inh
+2d1in1it
+2d1inj
+2d1ins
+2d3int
+2d1inv
+di2o3b
+dio4n3i
+dion3s4
+di3ora
+dio5s2
+di2osk
+di1p4
+di3pt
+d1i2ra
+di4re.
+di2ren
+di2rin
+di2ris
+2d1irl
+2d1irr
+di2s1a2
+2diso
+di2sp
+di3s4per
+2d1isr
+dist2
+di1s4ta
+di2s3te
+di4stra
+di4sz
+di2ta
+dite1c
+di4t3erl
+di4t3erm
+di4t3ers
+di1the
+di2tin
+di2tob
+di4t3r
+dit3s
+di2t1u
+di5v2
+di3z2
+2d1j
+2d1k4
+4d1l2
+d3la
+dla3g
+dlap4
+d3le
+dle2ra
+dli4f
+dl3m
+dl3s
+2d3m2
+4d3n2
+d5ne
+dni2
+dnis1
+do5a
+d1ob
+3d2oba
+d1of
+do2fe
+2d1oh
+doll2
+d3o2ly
+do2mal
+do2mar
+dom2e
+domen1
+do4ming
+do2mu
+do5n2a
+do3nan
+donau1
+doni1e
+2dope
+2d1opf
+do1r4a
+2d1orc
+2d1ord
+dor2f1a
+dor2fä
+dor2f1i
+dor2fl
+dor2fo
+dor2fr
+dor2f3u
+2d1org
+dori1
+d2orn
+2dort
+dor4ter
+dor4tr
+d2os.
+dose4
+do5s2k
+2dosm
+dos3s
+dost1
+dos4t3a
+doste4c
+dos4tel
+dos6teng
+dos4tes
+dos4ti
+dos4tr
+do4s2tu
+do3ta
+do2t3o
+do2tre
+do3un
+dow2s
+dox2
+d1ö
+dö2d
+dö2f
+4döl1
+döll2
+d2ön
+3d2ör
+dö2s1c
+2d3p2
+dpass3
+dpo2st
+2d1q
+d2r4
+3d4ra.
+3d4rab
+2d3rad
+2drahm
+2d3rak
+3d4ral
+d3ramp
+d3rand
+dran3k
+2d3rast
+2draub
+2d3rauc
+d4rauf
+2draum
+2draup
+2dräd
+d4räh
+2d3rät
+2d3räu
+4dre.
+2d3rea
+d4rea.
+d4reas
+3d4reck
+2d3ref
+2dreg
+3d4reh
+dre2ha
+2d3reic
+3d4reie
+d4reiv
+d4rej
+2drek
+dreli1
+4drem
+4d3ren
+4d3rep
+4d3rer
+4dres.
+d4resc
+2drese
+dres6sei
+d4rew
+2d3rez
+2d3rh
+d3ri
+d4ri.
+3d4ria
+d4rib
+2d5ric
+d4rid
+d4rie
+d5rieg
+3drif
+4driff
+d4rift
+d4rik
+d4ril
+d4rin.
+2d5rind
+2drip
+3d4risc
+2drisi
+2driss
+3d4rit
+4dritu
+2d3rob
+d3roc
+d3rod
+d4rog
+2drohr
+3d4rohu
+d4roi
+2d3roll
+2d3rose
+d4ross
+2d3rost
+2d3rot
+2d3rou
+2d3rov
+d3row
+drö2sc
+d5rub
+3d4ruc
+2d3rud
+2d3ruh
+4d5rut
+drü1b
+drü5cke
+3d4rüs
+2d1s
+ds3ab
+d2s1alk
+d4s1amt
+d2san
+ds3ane
+ds3assi
+dsau2
+d2saut
+ds1än
+ds2äu
+4dsb
+d4schef
+d4schin
+dsch4r
+d3s2co
+d2scr
+d2s1e2b
+dse2e
+d2s1ef
+ds1eh
+d4sehe
+ds4eign
+d2sein
+d2s1emb
+dsen3er
+d2s1eng
+d2s1ent
+d2s1erf
+d2serh
+d2s1erk
+ds1err
+d2s1ers
+d2s1ert
+d2serz
+dse4t
+d2s1eta
+d2s1ev
+d2sex
+d3sha2
+ds2hak
+d4shal
+d3sho
+d4shor
+d2sid
+d2s1im
+d3s2inf
+d3s2kal
+d3s2kel
+4dsl
+d4sli
+d3soh
+d2sop
+dso2r
+ds1ori
+d2sö
+ds3part
+ds1pas
+d2s1pat
+d2spä
+d2s1pec
+d4speri
+d2s3ph
+d3s2pi
+ds2por
+d6sporto
+d3spri
+d2spro
+ds2pu
+dss4
+dst2
+d4stag
+d2stas
+ds3tauf
+d4s3täti
+d2ste
+d3stec
+d3stei
+d4steil
+d5stell
+d4stem
+d4sten
+d3s4tern
+ds2ti
+ds4til
+ds4tip
+d4stoch
+ds4tol
+d5strei
+ds4tri
+d3s4tro
+ds2tur
+ds1ums
+d2sun
+ds2zen
+2d1t
+dta2be
+d3t2ac
+dtach3
+dta2d
+dt2ag
+dta2n
+d3t2as
+dt2ax
+d5tea
+d2th
+d4thei
+dt3hi
+dt3ho
+dt4hy
+d3to2
+d4to4b
+dt2op
+d3tö
+dt3r
+dtran2
+dts2
+dt3sa
+dt5st
+dtt4
+dt2un
+d3t2ur
+d3tü
+d3ty
+1du
+du1alv
+du1ar
+dub3l
+du2bli
+du1ce
+du2f
+2d1ufe
+duf4ter
+duf4to
+duf2tr
+2d1uh
+du1i
+du2kr
+du4l3art
+2d1umb
+2dumd
+2d1u2m1e
+2dumf
+2dumg
+4d3umk
+2duml
+d2ump
+2dumr
+2d1ums
+d2ums.
+2d1umv
+du2n
+2d3un3d
+dund2a
+dun4de
+2d1unf
+dung4
+2d1ungl
+2d1uni
+dun3ke
+dun2kl
+2dunr
+dun2s
+2dunsi
+dunst3r
+2dunt
+2dunw
+2d3unz
+du1os
+dur2
+dur3au
+durch3
+2d1urk
+2d1url
+2d1urn
+2d1ursa
+2d1ur3t
+du4schn
+du4schr
+du4sch3w
+2düb
+d3über
+düns3
+2d1v2
+4d1w
+dwa2
+dwa4r
+dwes2
+dwest1
+1d2y
+4dyl
+3dyn
+dy2sp
+4d3z2
+2e1a
+e3ab
+ea2be
+e4abi
+ea2b3l
+ea2bo
+ea4br
+ea2c
+eadli4
+ea2dr
+ea2g
+ea3ga4
+ea3g4l
+eakt2
+e2akta
+e3akto
+ea2la
+e3alei
+e4alem
+ea4l3ent
+ealer2
+e3a4lerg
+ealer4t
+e3alex
+e3a2lin
+e2alo
+e2alti2
+eal3tr
+ea2l3u2
+eam3
+e2am4e
+eam1o
+eamt2
+ea4na
+ean3a2r
+ea4nä
+e3anf
+e2ano
+e3ar.
+ea2ra
+e2are
+e4are.
+ea2r1ei
+ea4rene
+e4arer
+e4ares
+ea2ro
+e3arz
+e3a2sc
+easin4
+ea4sp
+eas3s
+eate2
+eater1
+e3ath
+eat3s2
+e3at5t4
+eatu3
+e3aue
+e3auf
+eau2fe
+e4aufo
+eau3g
+eau3n
+e2av
+e3ä2
+e1b
+2eba
+e3bak
+eba2p
+e3bän
+2ebea
+2ebec
+2ebed
+ebe1er
+2ebeg
+eb2el
+ebe4ler
+ebe2lo
+ebenen3
+2eber
+ebe4ras
+ebert4
+4ebes
+ebese2
+ebe4s3eh
+2ebet
+ebet4s
+2ebew
+2ebh
+2ebi
+2ebl
+e3blä
+eb3le.
+eb3ler
+eb4leu
+e3blie
+eb3lo
+eb2lö
+2ebo
+e2bob
+ebot2
+ebö2s
+2ebr
+eb4rea
+2eb2s1
+eb4sche
+ebse2
+ebs3in
+ebs3pa
+ebs3tau
+eb4stät
+ebs3tem
+ebs3t4h
+ebs3ti
+eb3str
+2ebu
+e2bunt
+ebu2t1
+eby4t
+2e3ca
+2e3ce
+ech1am
+ech1ä
+2e1che
+ech1ei
+ech2en1
+e6ch5erzi
+e1chi
+ech3l
+ech3m
+ech3n
+e2cho.
+ech1ob
+ech3ö2
+ech3r
+ech4ri
+ech5sel
+ech3ser
+echst5re
+ech3t4ei
+ech6terh
+echter8ha
+e1chu
+ech1w
+e1ci
+eci4a
+ec4k
+ecke4n1
+e4ckerr
+eck4sta
+2eckt
+3eckty
+2e1cl
+2eco
+e3cr
+ec1s
+2ect
+e1d
+ed2a
+ed2dr
+ed2e
+ede2al
+ede3n4er
+edens1
+eden4se
+eden4sp
+edeo2
+ede2r
+eder3a
+ede4ran
+eder3t2
+edes2t
+ed2i
+e3di.
+edi3an
+2edip
+edi6teng
+e3d2o
+ed2ö
+e3drei
+ed2sal
+ed4seh
+ed2s1es
+ed2si
+ed2s1o
+ed2s1p
+ed2s3tr
+ed2s1u
+edu2s
+e3dy1
+edys4
+2ee
+ee3a4
+eeb2l
+ee1c
+ee4ce
+ee2cho
+e1e2ck
+e2ed
+eede3
+eede1s
+eed3s2
+ee3e2
+e1eff
+eef4l
+eeg4
+e1ei
+ee3ing
+eein4se
+eeis3s
+eel2e
+e3e2lek
+eele4n
+eel2ö
+e2e3m2a
+ee3mä
+e1emb
+e1emp
+e1en
+eena2g
+e2e3nä
+e2enc
+e2e3ne
+een1er
+e2eno
+een3s
+een2z
+ee3o
+e2ep
+ee3po
+eer3as
+e1erbt
+e1erd
+ee3re
+eer1ei
+ee4r3en4g
+eer2e2s
+eer3k
+ee1ro
+ee1rö2
+eer2ös
+eerst4
+eert2
+ee3r2un
+e1erz
+e2e1s2
+ee3sh
+ees3k
+ee3sp
+ee3s4t
+e2et.
+eet2a
+ee2tat
+ee2th
+eet2i
+eet4r
+ee2tu
+ee1u2
+e2ew
+eewa4r
+e1e2x
+e1f
+e2f1ad
+ef1ana
+ef1ar
+e2farc
+e2fat
+2efä
+e2fäu
+2efe
+e2f1e2b
+e3fef
+efe4l3ei
+ef1em
+e2femi
+efe2n1
+3e2f1ene
+e2fent
+efer5f
+efeuil4
+3effek
+1effi
+ef2fl
+2efi
+ef1id
+e2f1ins
+efi2s
+2efl
+ef4le
+e3f4lu
+e3flü
+2e3f2o
+2efr
+ef4reih
+ef3rol
+ef3rom
+ef4ru
+ef4rü
+efs2
+ef3so
+ef3sp
+ef2tan
+ef2tei
+2efu
+e2fum
+2efü
+e1g
+eg1a2m
+eg2anz
+egd4
+e3ge
+ege4l3au
+ege8l7ei8er
+ege4ler
+ege2lo
+eg2en
+ege4n1a
+ege6nero
+ege2ra
+ege4s5tr
+ege1u
+2egi
+2egl
+e2glo
+e2glu
+e2gn
+eg3nä
+eg3ni
+ego1p
+eg4rö
+eg4run
+egs2ag
+eg4sal
+eg4s3an
+egsau3g
+eg3se
+eg4sei
+egs2e3l
+eg4sin
+eg4sk
+eg4so
+egs2pe
+egst2
+eg4sto
+eg2th
+egung4
+egus3
+2e1ha
+eh1ach
+e3h2ah
+eh2al
+ehalt4s
+e3hand
+eh1arm
+e2harz
+e3haut
+e1hä
+e1he
+eh1eff
+eh1ein
+e3helf
+eh1elt
+e4hense
+e4h3ente
+ehen4tr
+1e2hep
+2eher
+ehe1ra
+e2h1erf
+e2h1er2l
+ehe3str
+2e1hi
+eh3im
+eh1lam
+eh2l3au
+eh1lä
+ehl3ein
+eh4lent
+eh5l2er
+ehlo2
+ehl1or
+ehl2se
+ehls2t
+2ehm
+eh2mab
+eh4mant
+eh3mu
+2ehn
+eh3na
+eh3no
+2e1ho
+eho2f
+eho2l
+eh3oly
+ehö4rer
+eh2r1a2
+ehr1ä
+ehr1e2c
+eh2rei
+eh2rel
+ehr6erle
+ehr4ern
+ehre3s
+eh4rin
+ehr1ob
+eh1roc
+ehr1of
+eh1rö
+ehs2
+eh3sh
+ehst2
+eh1ste
+2eht2
+eh3ta
+eht4r
+2e1hu
+eh1unf
+e2huni
+e3hur
+e1hü
+eh3üb
+eh1w
+e1hy
+2ei3a2
+ei2bar
+ei2bli
+ei4blu
+eibu4t
+ei4b3ute
+e4ic
+ei1ce
+ei2cho
+e2id
+ei2d1a
+ei3de
+eid4ein
+ei4deis
+eid5erre
+2eidn
+ei3do
+ei4ds
+ei1e
+eie2b
+ei3e2l
+eie2m
+4ei3e2n
+eienge4
+eien3s
+eie2t
+4eif.
+ei1flo
+1eifr
+2eig.
+2eiga
+eig2ar
+2eigä
+2eigeb
+2eigeh
+4eigeno
+5eigensc
+2eig2er
+2eiges
+2eigew
+2eigi
+ei3gl
+ei4glo
+1ei2g3n
+ei4g3rat
+2eigre
+2eigrö
+2eigru
+2eigrü
+2eigs
+2eigt
+2eigu
+4eih
+ei2hum
+ei2kak
+eik4am
+eik2ar
+eik2i
+eik2l
+ei3k4la
+ei3klä
+e2il
+2eil.
+ei2lam
+eila2n
+eil3ane
+ei4lant
+ei4lanz
+ei2lar
+2eilb
+eil3d4
+ei4lein
+eile2n1
+ei2let
+eil3f4
+eilm2
+ei2lob
+eil2ö
+2eim.
+ei2mab
+ei2m1ag
+eim3all
+eim3alp
+ei2m1or
+2eimp
+eim2p4l
+eim3sa
+ei2mur
+e4i2n1a
+ei4nac
+eina2d
+ei4n3an
+ei4na4s
+ei4n3at
+ei4n3ä
+ein6derk
+ein3ebe
+ei2nel
+ei4n3en4g
+ei6nen6se
+ein5erbe
+ei4nerf
+ei4nerk
+einer6sc
+ei2neu
+ein4fiz
+2einfo
+ein4fo.
+ein4fos
+ein3g2
+3einger
+e4ingr
+e2inhä
+ei2n3ie
+e1init
+ein3k4
+ein6karn
+3einkä
+e2inl
+ein3n2
+ein4nen
+ei2n1o2
+3einric
+e4insa
+3einsat
+e2insc
+5einschä
+ein6stal
+ein6terv
+ein4tol
+3eintö
+1einu
+ei3o2
+ei1p
+eip2f
+2eir
+eir2c
+ei3re
+e1irr
+e4is.
+ei2sa
+ei3sas
+ei6schwu
+ei4serg
+ei4s3erl
+ei6s5erst
+ei4s3erw
+1eisho
+ei3s2ky
+eis2pe
+e2iss
+eisser6s
+ei1sto
+eis4tol
+ei2sum
+ei2sur
+1eiswo
+e2it
+ei2t1a2b
+ei2tal
+ei2tan
+ei2tap
+ei2tar
+ei4tat
+2eitä
+ei2tän
+eite4ra
+ei4tess
+ei2t3h
+ei2tin
+ei2tor
+ei4trau
+ei4tro
+eitsa4g
+eitt4
+4eitu
+ei4t1um
+ei2t1ur
+eit3z2
+eiv2
+eive4
+ei2zar
+eiz1in
+2e3j
+e1k
+e3k2a
+2ekä
+1ekd
+ek2e
+e3ke.
+e3ke4n
+e3kes
+e3key
+e3k2l
+ek4n
+e3k2o
+ekor4da
+2e3kr
+ek4s1p
+2ekt
+ek2tan
+ek5t6ante
+ek2t3at
+ek2tä
+ek2te2l
+ekt3erf
+ekt3erk
+ek4t3er4z
+ekt2o
+ek2t3o4b
+2e3ku
+ekur2a
+e3k2w
+1ekz
+e1la
+ela2br
+el2abt
+el3abu
+ela2ck
+el3ader
+el1af
+2elai
+e2l1ak
+el1a2m
+el2a3mi
+e3lamp
+el1ana
+e4landa
+e2l3a2ne
+e2lanm
+e4l1ans
+e2l1ant
+e4lanw
+e2l1anz
+2elao
+e2l1ap
+e2l1ar
+ela2re
+el3a2ri
+el3arr
+ela2s
+el1a4si
+el1asp
+ela3su
+2elat
+el3aufw
+2e1lä
+2eld
+el4d3erf
+elder4p
+elder4s
+eld5erst
+el3des
+el3dri
+eld3s2
+4e3le.
+e3lea
+elea2r
+ele2c
+el3echt
+4eleh
+el3ehe.
+2elei
+e6l5ei6ern
+e2l1ein
+e3leine
+1elek
+e2l1el
+1e2lem
+2e3lem.
+e3lema
+ele2mi
+2el1emp
+2e3len.
+elen1e
+elen4k3l
+e4lense
+e2l1ent
+e3lep
+2eler
+e3ler.
+eler2a
+el1erd
+e6lereig
+el1erf
+e4ler4fa
+e4lerfi
+e2lerg
+el1erh
+el1erk
+e2l1erl
+e4l3ernä
+eler2ö
+e2l1err
+el1eru
+el1erw
+eles2
+e2l1ess
+e2l1e4ta
+ele2ti
+elet4ta
+el1evo
+el1ex
+e3lex.
+1elf.
+elf2er
+1elfm
+1elft
+elgi5er.
+elgi5ers
+el3g2l
+eli4are
+e2l1id
+2e3lie
+eli3ef.
+2elig
+e2lim
+elin3a
+eli3no
+el1ita
+2elk
+elk3s2c
+el4larb
+el4lart
+el3lär
+el5le.
+ell3ein
+ell3eis
+el4lel
+el5lend
+ellenen5
+ellen5s
+ell2er
+el3les
+el2lim
+1ellip
+el2lor
+ell2ö
+ell3sp
+elm2e
+elm3ein
+2eln
+2elo
+e2l3oa
+el1obe
+e2lof
+e2lol
+e2lonk
+e2l1or
+e3lore
+elo2ri
+e3lot
+e3l2ov
+2elö
+elö2s
+el3p4
+el4s5ein
+els2ph
+el5stern
+el2sum
+el4tans
+elte4m
+el5ten.
+el4t3ent
+elter4b
+elter4f
+elter6le
+3elter4n
+elter6sc
+elte2s
+el4tesc
+el3the
+2e1lu
+el1uf
+e2l1um
+el1ur
+el3use
+elu2t
+el3uto
+e1lü
+2ely
+e2lya
+el3z2ac
+el2zar
+el4zene
+el2zwa
+2elzy
+e1m
+e2m3a2b
+em1alk
+e2manf
+e2m1ano
+e2m1ans
+em1app
+e4m1a4s3p
+em1aus
+2emä
+em2äh
+e3mäs
+1emba
+1embo
+3embry
+em2dä
+emd1r
+em2dra
+2eme
+e2m1e2b
+e2mef
+e2mele
+e3m2en
+emen6gel
+emen3ta
+emen4t3h
+e2m1erl
+em1erw
+e4mesu
+3e2meti
+e2m1i2d
+2emie
+emi2ei
+e2mig
+emi3k2
+em1im
+2emin
+emi3n2a
+e3mind
+em1int
+1e2mir
+e3misc
+1emiss
+emi3tr
+emma3u
+em2m1ei
+e2moa
+e2mof
+e2mop
+emo3s
+1empf4
+em3pfl
+em3po
+empo1s
+em2sa
+em4scha
+em2sim
+em2spr
+em2st
+em3t4
+1e2mul
+e3mur
+2emü
+e2na
+4ena.
+e4n3a2b
+4ena2c
+e4n3ack
+2e3nad
+enadi4
+e4naf
+4enah
+en3ak
+en1al
+e4nalb
+e3nale
+en2alg
+ena3l2i
+e4nalk
+e4nalm
+e4nalo
+enal3p
+4en1am
+ena4n
+e4nand
+en3ane
+e4nant
+e4nanz
+e4n3a2p
+en3a2re
+en3ark
+en3aro
+en1as
+ena2sc
+e4nast
+2enat
+4e5nati
+e4natl
+enat4s
+e4n3att
+4enatu
+enau2f
+en3aug
+e4n3aur
+e4naut
+en1a2x
+en3a2z
+e2n1ä
+e4när
+en2ce.
+1ency
+end2ac
+en2dal
+en4dang
+2endel
+ende4lä
+en4d3es4s
+en2dex
+en3d4ort
+end3rom
+end3s4au
+end3s2l
+end3s2p
+end3sz
+en3d2um
+en3d2ü
+2ene.
+ene4ben
+en1e2c
+e2neff
+en2eid
+e3neien
+e4neige
+4eneigu
+e4nein
+e4neis
+en1e4kl
+e2n1el
+ene4le
+2ene2m
+e2nemi
+2enen
+e4nense
+e4n1ent
+en4entr
+e2n1ep
+4e3ner.
+en2era
+e2n1erd
+e4n3erei
+e2nerf
+en4erfr
+1energ
+e2nerh
+e2nerk
+e2n1erl
+e4nermi
+e4n3ermo
+4enern
+e4n3erne
+ene2ro
+e2n1err
+en1ers
+4eners.
+e2n1ert
+en4ert.
+e2n1eru
+e2n1erw
+2enes
+e4n1e2sc
+e2n1ess
+en1eta
+e2neth
+en1eul
+e2n1ev
+e4ne2x
+en3f
+enf2a
+enf2u
+1engad
+1engag
+en3g2al
+enge3r4a
+en3g2i
+en3gn
+eng2o
+1engp
+eng4ra
+eng3se
+2eni
+e3ni.
+e3nic
+e2nid
+4e3nie
+eni3er.
+eni3erp
+eni5ers.
+en3i2ko
+en3ill
+eni4m
+en1ima
+en1imi
+e2nin
+e3nio
+eni2ö
+e2nir
+e4n3iso
+e3nit2
+e3niv
+enk3aus
+enk3erg
+en4k3erk
+en3k2ü
+en2nef
+en2nel
+en4ner4f
+enn3erg
+en4n3erl
+enni6ger
+2enniv
+enns2
+enn3ste
+e2n3oa
+e2n1ob
+e3nobel
+eno2br
+e2n3oc
+e2nof
+en3ol
+eno2ma
+e2n1op
+e2n1o2r
+en2ora
+eno4ri
+4enorm
+en1ost
+4e3not
+eno2w
+2e1nö
+en1ö2d
+en3sabb
+en3sac
+en2san
+en5sche
+en2seb
+1ensem
+ensen3e
+ens3ere
+en2sid
+en3spo
+ens4por
+enst5alt
+en4s3tät
+ens4tel
+ens6temp
+ens2th
+2ens4to
+enst2ü
+ens3umf
+en5t2ag
+en4tanm
+en4tanw
+ent4ark
+1entd
+en3t2el
+ente2n
+en4terb
+1entf
+2entfo
+2entfö
+1entga
+3entgeg
+en2thi
+1enthu
+1enthü
+en4tid
+1entla
+1entn
+en2t1os
+2entö
+en4t3rol
+1entsc
+1entso
+ent4sto
+1entw
+4entwet
+3entwic
+1entz
+e2n1u
+e3nu.
+e4nur
+2enu4t
+e4nuto
+e1nü
+enü1st
+4enwü
+2e1ny2
+enz2äp
+1enzep
+enz3erg
+en4z3erk
+en4zerl
+en4z3erm
+enz5ersc
+enzlan4
+enzo2l
+e1ñ
+4eo
+e1o2b1
+eo3ben
+eo3bl
+eo3br
+eo1c
+eoch2
+eo3dr
+e1of
+eo3g2
+e1oh
+eo3la
+e3o2ly
+eom2
+e1on.
+e1ond
+e1onf
+e1onh
+e1onl
+e1onp
+e1onr
+e1ons
+eo1o
+e1opf
+e1or
+e3or.
+eo1ra
+e3orb
+e3ord
+e3ors
+eort2
+e3orw
+eo1s2
+e3os.
+eo3se
+e1oste
+eot2e
+eo1ul
+e1ö2
+e1p
+2ep2a
+epa2g
+epas6ser
+2eper
+e3p2f4
+1e2pid
+e2pig
+e2pik
+1e2pile
+e3pio
+1epis
+2epist
+1e2pit
+ep3le
+1e2poc
+eport4
+1e2pos.
+ep2p1a
+ep2pei
+eppe3l
+ep4pl
+ep2pr
+2epr
+ep3sh
+ep2tal
+ept2an
+ep2tau
+e3pu
+epu2s
+4e3q
+er1a
+e3ra.
+e2rach
+e3rad.
+e3radi
+e2radj
+e2radm
+e4radmi
+e4r3adr
+eraf4a
+era2g
+e1rah
+e1rai
+er3aic
+e2rak
+e3rake
+e1rald
+eral4eb
+er3alke
+e2r3all
+er2an.
+era4na
+eran3d4
+e3rand.
+e4rangr
+e2ranh
+e2rano
+e1rap
+er3apf
+er3apr
+e2rar
+er3are
+e3rari
+er3arr
+e3ras.
+er3asc
+e1rast
+era2ß
+e3rati
+e2ratl
+er3att
+e1raub
+e1rauc
+er3aue
+erau2f
+er3aug
+e2ra2v
+e1raw
+e2r3ax
+e1raz
+e1rä
+er1äf
+er1äh
+er1ä2m
+er1äp
+e2r1äs
+er1ätz
+3erbarm
+erb2au
+erb2e
+erb2sp
+er1c
+er3chl
+erch2o
+erda3me
+1erdb
+er3de
+2erdec
+2erdel
+er4d3en4g
+erd3erw
+erdes4t
+erdeu2
+1erdg
+er2dob
+erd3st
+2erdy
+4ere.
+er1eb
+ere4ben
+e3r2ech
+er3echs
+er1e2ck
+er1edi
+ere4dit
+er1eff
+er1e2h
+ere4i
+6e3rei.
+6e3reib
+er1eig
+4ereih
+e4r3eime
+e2rein
+er3eis.
+er5eisar
+er3eisb
+er3eisf
+er3eisr
+erei5str
+er1e2l
+e2rele
+ere3lev
+ereli1
+2e3rem
+e4r1ema
+er1emb
+e2remp
+e4remu
+2eren
+e3ren.
+e3rena
+eren1e
+e4rense
+e4rentn
+e4rents
+e3renz
+eren8z7en8d
+er1epe
+2erer.
+2ererb
+er3erf
+erer3fa
+e4rerfo
+e2r1erh
+e2rerk
+erer4kl
+e2rerl
+4erern.
+e4rerne
+e2rer2o
+erer4ri
+er1ers
+4erers.
+e8rersche
+e2rert
+2ererv
+2ererw
+2eres
+er1ess
+eres3sk
+er1e4ta
+ere2th
+e4r1e2ti
+3er1eul
+ere4vid
+erf2e
+er3for
+erf4r
+4erfür
+er4g3are
+4ergebi
+3ergebn
+4ergebü
+4ergeha
+4ergehä
+ergel6s3
+erg5elst
+4ergeni
+3ergiee
+er2gop
+4ergrem
+erg3s
+ergs2o
+ergs2p
+ergs4t
+e4rh
+1erhab
+2erhai
+4erhals
+2erham
+2erhas
+3erhebu
+er3hei
+2erher
+er3hu
+2eri
+e2riat
+e3rib
+4e3ric
+e4r3ico
+e2r1id
+eri2de
+4e3rie
+eri3e2n1
+e3ri3k
+erik4l
+4e3rin.
+er1inb
+e2rind
+e2r1ini
+er1ink
+er1inl
+er1int
+e3rio
+4eris
+e2risr
+3eritr
+e3riv
+2erk.
+2erkaj
+er3ker
+1erklä
+2erkm
+2erkre
+erk5t4
+2erl.
+2erlag
+3erlaub
+3erlebn
+4erleh
+erm2
+er3mag
+er3me
+ermen4s
+er4m3ers
+er3mi
+er4n3alt
+er3ne
+er4nene
+er4nerf
+er4nerk
+3erneue
+ern1os
+2e1ro.
+e1roa
+er1ob
+ero2bl
+ero2br
+e2r1o2f
+e1rog
+e1roh
+4e1rok
+e1rol
+er3oly
+e1rom
+er3omb
+2e3ron
+er3onk
+e2roo
+er1o2p
+e4ro4r
+eror2a
+e1ros
+1erosi
+e3rosit
+e1rou
+e1row
+er1ox
+e1roz
+erö2d
+2eröh
+erö4l
+er1ös
+er3p
+er3rä
+2erren
+er3ror
+2errü
+er3s2a
+ers4ana
+ersch4
+erse4h3u
+ers2el
+er3sen
+er5s2i
+er3sk
+er3sp
+4ersted
+er3stel
+erst5ers
+4erstil
+ers4tod
+ers6tr
+er3swi
+er3sz
+ert1ab
+erta2d
+er3tat
+4erteig
+er4t3erf
+er4t3er4g
+er4ter4h
+er4terk
+er4ters
+er2tho
+4ertö
+4ertru
+erts2e
+ert3s2p
+2eru
+eruf4s3
+e4r3uhr
+er1u2m1
+er1und
+e4rundu
+erung4
+3erup
+er3use
+e2r3uz
+erü4b
+3erweck
+er4zerk
+er4z3ers
+es3ab
+e4sabe
+e3sac
+es2ach
+e2s1a2d
+e3saf
+es3ak
+e2s3all
+es3ampl
+es2ank
+es2anm
+es2anr
+es3anz
+e3sap
+es3apf
+es3a2ra
+e3sarg
+e3sa2s
+es2ast
+es3ato
+es3aus
+esa2v
+es1ax
+2esb
+esbi5er.
+e3s2ce
+esch2
+es4chem
+es4chi
+e2s3ec
+es1ehr
+e2s3ein
+ese3in4s
+es2el
+ese4nal
+ese4neu
+esen3o
+es2ens
+esen3sk
+eser4at
+ese4r1u2
+eses2k
+e2s3e2x
+2esf
+2esh
+es2har
+es3he
+2esi
+esi3er.
+e2s1il
+esi2st
+es2kat
+e4s3ke
+e4s3kl
+es3ku
+e4sky
+es3l
+2esm
+es3ob
+es2oh
+eso2r
+eso3re
+es2ort
+e3s2ö
+e3spal
+e3s4pan
+es4park
+es2pek
+e2spel
+e4spers
+e2sph
+e3s2pi
+e3s2por
+e3spra
+e3spu
+2esr
+2ess.
+es2s1ag
+essali3
+essau4s
+1essay
+2essä
+2es3sc
+es3se
+ess4erf
+ess3erg
+es4serh
+2essk
+2esso
+es2sof
+2essp
+es2s1pa
+es2spu
+es4stab
+es3str
+es3stu
+estab4b
+esta3ge
+est1ak
+es4tanb
+es4tang
+e4stant
+e1stap
+e1star
+e4starb
+e2st1a4s
+e1stat
+e4staum
+e4staus
+es2tec
+est5eing
+est5eink
+est5einl
+e1stel
+e4sten
+es4t3eng
+est5erha
+ester6ke
+es4ter4ö
+es4t3erz
+es4t3ess
+es2th
+es2tid
+e4stig
+e1stil
+e2stip
+estmo6de
+1estni
+est1ob
+e2s3tom
+est3ori
+es4tr
+es5trac
+e3strec
+e1stu
+est3ums
+es2tur
+e1s6tü
+e3sty
+e3suh
+es1um
+e2s3ums
+es3unt
+es1ur
+2es3w
+e3sy
+es3z
+es4zene
+2e1ß
+e2ß1el
+e2ßent
+eße3re
+e2ß1er2g
+e1t
+etab4
+et2abl
+eta2c
+2e3taf
+2etal
+et1a2mi
+et4an.
+et1ant
+et4at
+etat3r
+et2ax
+et1äh
+2etb
+2e3te
+ete2e
+e4t1ein
+ete3ke
+et2en
+eten3d2
+ete2o
+eter4hö
+eter4tr
+ete2s
+2etg
+et2h
+2eth.
+e3tha
+e4t3hal
+et3hä
+1et4hi
+e2thik
+1ethn
+e4thot
+et3hü
+e2tid
+eti2m
+etin1
+e4tinf
+e2tinh
+et1ini
+eti2ta
+eti2th
+2eto
+e2t1o2f
+et2on
+eto4n3al
+etons4
+e4torg
+2etr
+e4traum
+et3rec
+e2t3res
+et4ros
+ets2c
+etscher7e
+etsch3w
+et4sh
+ets1p
+et2spe
+et2ste
+et3su
+et4sum
+ett1a
+et2ta2b
+et2tad
+et2t3ak
+etta2m
+et4tang
+et4tans
+ett2as
+et2tau
+et2tei
+ette4n1
+et2t3h
+et4tim
+et2t3r
+et2t1um
+3e2tui
+e3tur
+e3tü
+2etw
+etwa4r
+1etym
+2etz
+et2zw
+eu1a2
+eu3b4
+2euc
+euch4ta
+2eud
+eude1s
+eudi4e
+eu2eb
+euer3ei
+eue6reif
+eue6reis
+eueren4
+euerer6s
+euerer6t
+eu3eri
+eu3erk
+eu3err
+eu2esc
+4euf
+euf2a
+eu2fer
+eu2g1a
+eu6gense
+eu3g2er
+eu4g3ing
+eu2gre
+eu2gri
+eugs4
+eug3sp
+eu3h
+eu1id
+eu1in1
+1e4uk
+eu2kä
+eulan2
+euland3
+eu3l2e
+eul2i
+2e1um
+e3um.
+eu3ma
+e3umb
+e3umf
+e3uml
+e3um2s
+eum4se
+eum4s1p
+e3umw
+2euna
+eun2e
+eu4nei
+e3un2g
+eu2nio
+eu4nis
+eunk2
+eun3ka
+eu1o2
+eu1p
+eu3p2f
+eu2ral
+eu4r1an
+eu4r3ast
+e2ure
+euren2
+eu4rens
+eur4er
+eur3f4
+1euro
+e3usar
+eu2sis
+eu3sp
+eust4
+eu1sta
+eu1sto
+eu1s4tr
+eut2e
+eut2h
+1eu3tha
+eu5t2o
+eut6scha
+eut6schn
+eut6schr
+2eux
+eu2za
+eu2zo
+eu2z1w
+e3ü
+e1v
+e2vak
+e3var
+eva2s
+2ev2e
+eve5ri
+evie3le
+2evor
+e1w
+ewä2s
+e2we.
+ewei4sc
+ewert4
+e3wir
+ewi2s
+e3wit
+2ex.
+e2xam
+2exas
+ex3at
+2exc
+2exd
+e2xel
+e2xem
+ex1er
+2exes
+e1xi
+2exik
+e2xil
+e2x1in
+1exis
+ex3l
+3exp
+2exs
+2ext.
+2ex2ta
+ex2tin
+1extr
+2extu
+2extv
+2exu
+e2xum
+2e3xy
+2ey1
+ey2n
+ey4ne
+eys2
+e1z
+e3z2a
+ez2ä
+e2z1enn
+e3zi
+ezi2s
+ez2o
+e3zoh
+ez2w
+é1b
+é1c
+é1g
+égi2
+é1h
+é1l
+élu2
+é1o
+é1p
+é1r
+é1s
+é1t2
+é1u2
+é1v
+é1z2
+è1c
+è1m
+è1n
+è1r
+1ën
+ê1p
+ê4t
+1fa
+fab4
+2f1ab5b
+fa2ben
+2fabf
+2fabg
+2f1a2b5l
+2fabn
+3f2abr
+2f1ab5s
+2fabw
+fa4cheb
+fa4chel
+fa2ch3i
+fa2cho
+fach3s4p
+fa2del
+f1ader
+fa2di
+fa2dr
+fa3ec
+fah6l5ent
+5fahrt
+fai3b
+f1a2ka
+fa2ke
+f3aktio
+f2akto
+3f2aku
+fa3la
+fa3le
+fal2kl
+fal4l3ei
+fall5ent
+fal6lerk
+faller6s
+fal6scha
+fal6schl
+fal6schm
+fal2tr
+f1amt
+3f2an.
+fa2nar
+2fanb
+fand2a
+fan2gr
+2f1an3k
+2fanl
+4fann
+f1anp
+2fanr
+2fanw
+2f1an3z
+2f1a2p
+f2ar
+far2b1a
+far4bel
+far4b3er
+far4bin
+farb1l
+far2bo
+far2b3r
+far2b3u
+f3arc
+3fa5ri
+far2r1a
+far2rh
+farr3s
+2f3art
+2f3arz
+fa3s4a
+fa3sh
+fa2st
+2f1astr
+fa2ß
+f3at
+f4at.
+fa2to
+f4ats
+2f1auf
+f3aug
+f1ausb
+faus4t3r
+3f4av
+fa2xa
+1fä
+fä1c
+fäh4rin
+fäh2r1u
+f1älte
+2fäq
+2f1ärm
+2färz
+fässer4
+fäs6serk
+fäs6serw
+fä2ßer
+2f1ätz
+2fäug
+2fäx
+4f1b2
+fbau1
+fber2
+2f1c
+f3ch
+2f3d4
+fdien2
+1fe
+3fe.
+featu4
+fe2c
+f2ech
+fe3che
+fe2dr
+fe2e1i
+feein5
+fe1em
+2f1e2he
+feh4lei
+f2eie
+f2eind
+2f1eing
+fe3ins.
+2f1einw
+f1eis
+5fek
+fe2l1a
+fel3au
+fe2l1ä
+fel2da
+felde4m
+feld6erh
+fel2dr
+fel4d5ri
+2fe2lek
+2felem
+fe2l1er
+fe2les
+fe2l1o
+fel4s3oh
+fels2t
+felt2
+6fel6tern
+f2em.
+fem4m
+2f1emp
+fen1a
+fen3au
+4fenerg
+fe2ni
+fe2no
+fen3s2a
+fen5s2c
+fenst2
+f1ent
+2f3entf
+f2enti
+4f3entla
+f2ento
+2f3entw
+2f3entz
+3fep
+fe2pi
+f2er.
+fe1ra
+fe2rab
+fe2ral
+fe4rang
+fer4ant
+fe4ranz
+fe2rau
+fe2r1ä
+2ferd.
+fer3da
+ferd2e3
+f2ere
+fe2re2b
+fe2rec
+3ferei
+4f3ereig
+fe4r3eis
+f4erel
+fer3ell
+fe4rer4g
+fer4fah
+ferg4
+f4ergr
+ferie4n3
+4fer4leb
+f2ern.
+fer4nei
+fe2rö
+f4erpa
+f4erpf
+f4erpl
+f4erra
+fer4reg
+ferri2
+f2ers.
+f2ert
+fert4r
+f2erz
+fess2e
+fe2st
+fest3a4b
+fest3an
+fest3ei
+fes4t1o
+fest3r
+2f1e2ta
+fe4tag
+3fete
+fet4t3a
+fetti3s
+2feu.
+feuer3ö
+3few
+2f1ex
+3fez
+1fé
+4f1f
+ffab6s
+ff1a2d
+f3f2ak
+ff3ar
+f3fas
+ff1au
+f2f1e2b
+ffe2e
+f2f1ef
+f2f1ei
+ffe3in.
+ffe5inha
+ffe2m
+f2f1emi
+ff2en
+ff3erle
+fff4
+ffi3k
+f2fim
+ffin3s
+ff1lag
+ff3le
+ff3li
+f3flu
+f3flü
+ff1ox
+ff1rak
+f3f4rä
+ff3ro
+ffs2am
+ff2s1p
+ffs3tan
+ffs3ti
+ff3stü
+fft2
+ffus3s
+4f3g2
+fgeb2
+fge3s
+4f3h2
+1fi
+3fi.
+fi2ar
+fi3at
+fid2
+fi2do
+fien3
+fi1er2f
+fi2k1as
+fi2kel
+fi2kin
+fi2kn
+fi2k1o4
+fi2k3r
+f2il
+fi2l1an
+fil3d
+fi2les
+fi3li
+fi4lin
+fil2ip
+fil2ma
+fil2mä
+fil4med
+fil4mei
+fi2lo
+2fimp
+3f2ina
+2f1inf
+fing2
+fing4e
+fing4s4
+fi3ni
+f2ink
+fin2s
+fin3sc
+fin3sti
+2f1int
+fi2o
+fi3ol
+fi2r
+fi3ra
+fi4re
+fir3me
+fi3s2a
+fi4sch3a
+fi6schei
+fisch3l
+fisch3o
+fi4schr
+fi4sch3w
+fi3s2h
+2f1i2so
+fis2p
+fi2s3t
+fite2
+fi2tin
+fit1o2
+fi4tor
+five4
+fi2xel
+2f1j
+3f2jo
+4f1k4
+fka4t3
+f2l2
+2fl.
+f3lad
+f5land
+f4lans
+f3lap
+f4lasc
+f3lats
+flauma4
+3f4läc
+4fläd
+f3län
+f3läu
+fl4e
+f5le.
+2f3leb
+f4lee
+2f5lein
+flek3
+flekt2
+f3ler
+f4lex
+f3li.
+3f4lim
+fli4ne
+f3ling
+2flins
+2f5lon
+1f4lop
+f4lor
+1floß
+1f4lot
+flo2w
+f3lö
+4flöf
+f4lög
+1f4luc
+1f4lug
+flu4gen
+flu4ger
+1f4luss
+f4lut
+flut1o
+f4lü
+f5lüm
+4f3m2
+fma5che
+fma2d
+2f3n2
+fni2s
+1fo
+f1ob
+fo2be
+2fober
+fob2l
+2f1o2f
+3foli3
+fol2k3
+fo2na
+fo4nan
+fon3au
+fon3dr
+fo3n2er
+fo4nin
+fo2nop
+fons4
+fo2nu
+2f1op
+4f3org
+fo3rin
+3form
+for4m3a4g
+for4mas
+for4m3ei
+forni7er.
+for6schl
+for4st
+for4t3ei
+for4ter
+for2th
+for2t3r
+fort3s2
+for3tu
+for2u
+fot4r
+fo2x
+1fö
+2fö2f
+2f1ök
+4f1öl
+för4s5
+4f3p4
+2f1q
+f2r2
+f3ra.
+frach6tr
+2f3rad
+2f3rah
+fra4m
+f3rand
+f5rap
+f3rat
+1frau.
+f3rauc
+2fräd
+1f4rän
+2fre.
+f3rec
+f3red
+2fref
+2freg
+f4rei.
+f3reic
+f4reie
+frei1f
+f4reig
+frei3k2
+2freim
+2frein
+2frek
+2f3rep
+2frest
+3f4reu
+2f3ric
+fricht6e
+fri3d
+fri2e
+2frig
+f4ri3k
+f3rip
+1fris
+f4risc
+f4rist
+2f3roc
+2frol
+1f4ro2n
+fro4n1a
+f4rop
+fro2s
+f3rot
+frös2
+f3ru
+f4ruc
+f3rü
+4f1s
+f2s1al
+f2sa2n
+fs3ane
+fs3ar
+f2s1a2s
+f2saut
+fs2än
+f3sc
+f4sca
+f4sce
+f4schan
+f4schef
+f4schro
+f4scr
+f2s1e2b
+f4s1ehr
+fse2n
+fs1en1e
+f2s1ent
+f2s1er
+fse4t
+f2s1eta
+f2s1i2d
+f3s2ky
+f2s1o2
+f3soh
+f3sol
+fs2on
+f3spann
+f2s1pas
+f2sph
+f3s2pl
+f3s2por
+f2spre
+f2spro
+fs2pul
+fs3s4
+fs2t
+fs3tak
+f2stas
+f3stat
+fs3tät
+f4stäti
+f3stel
+f3stern
+fs3th
+f2stip
+fs4tol
+fst4r
+f4s3tres
+fs3trü
+fs3tut
+f4stüte
+fs1ums
+f2s1un
+f3sy
+4f1t
+f4ta.
+ft1a2be
+ft1abl
+ft1af
+ft2ag
+ft1ala
+ft1an
+ft1a2r
+f3tat
+ft3att
+f2t1äu
+fte2c
+ft1eck
+ft1edi
+ft1eh
+fte2he
+ft1eig
+ft1ein
+ft1eis
+ft1eli
+ft1emi
+f4t1ent
+ft3erfü
+ft1erk
+f2t1erl
+f2t1erz
+f2t1e2ti
+f2t1ex
+f2t3h
+f4t5hei
+f3ti
+f4tid
+ft1in
+f4tinf
+f4tins
+fto2
+f2t1of
+ft3om
+f2t3ot
+f3t4ran
+ft3res
+f4tric
+ft3ro
+ft3ruh
+ft2s1
+ft4sam
+ft3s2c
+ft4sche
+ftse2
+ft4seh
+ftsen1
+fts3i
+ft3st
+ft4staf
+fts3tät
+ft4stei
+ft4stem
+ft6stier
+ft6s5treu
+ftstro4
+ft4stru
+f2tum
+ft1urk
+ft1url
+f3tü
+ftwa4
+ft3z2
+ftze3d
+1fu
+3fuc
+3fug
+f2uh
+fuku3
+f1um
+fun6derg
+2f1unf
+fung4
+2f1ungl
+2f1u2ni
+fun2kl
+fun2ko
+fun2k3r
+fun2ku
+2f1unm
+2funr
+2funt
+f2ur
+furch2
+fu4re.
+2f3url
+fus2sa
+fus2s1p
+fus2st
+fu2ß1er
+3fut
+1fü
+2füb
+fühl4sc
+fün2
+fü2r
+2f1v
+4f1w
+f1ya
+4f1z
+fz2a
+fzeiten6
+fzei8t7end
+fz2ö
+fzu2ga
+fz2w
+3ga.
+2gabf
+2gabg
+g4abi
+ga2b3l
+gab2o
+g1abr
+gab4ri
+2gabsc
+2gabtr
+ga3bu
+2gabw
+2gabz
+ga1c
+gade2r
+ga3di
+gadi4e
+2gadl
+2ga2dr
+gae2
+ga1fl
+5gag.
+ga1k
+ga2ka
+ga2ku
+gal2a
+ga3laf
+ga2lar
+2g1alau
+2g1alg
+gal3lo
+2g1alp
+2g1alta
+2g1altd
+g1a2lu
+ga2mec
+ga3mel
+gam3ma
+5g4amo
+2g1amt
+g1ana
+2ganb
+gan3d2
+2ganf
+gan2g1a
+4gangeb
+gan2gr
+gang4sp
+gan2g1u
+2g1ank
+2ganl
+2ganmu
+3g2ano
+2ganr
+gans2
+g2ans.
+2g1ansi
+2ganst
+2ganw
+ga1ny
+g1anz
+ga3pe
+2g1app
+ga1q
+3gar.
+g2ara
+2garc
+3g2ard
+ga3r2i
+2g1arm
+ga3r2o
+gar2s
+2g1arti
+ga3ru
+2g1arz
+ga2s
+g2as.
+gas3al
+ga5schu
+gase2
+ga5se.
+ga4sei
+ga4sel
+ga4se4m
+ga4sent
+gas3s2
+5g4asse.
+g4assen
+6gassess
+gas4t3el
+gast3rä
+ga3t2a
+gat2h
+2gatm
+gat4r
+gau1c
+2g1auf
+2g3aug
+g2auk
+gau5ne
+2g1aus
+2g1aut
+2g1äp
+gär3th
+2gärz
+gä4u
+2g1b4
+gber2
+gbi2
+gbon2
+gby4t
+2g1c
+2gd
+g1da
+gd2ad
+gda3de
+g2dak
+g2dan
+g2dar
+g2dau
+g1dä1
+g2dei4
+gdel6s
+gd2en
+g2d3ent
+g2der
+gd2es
+g1do
+g2dop
+gd2or
+g1dö
+g1d3r
+gd3s2
+gdt4
+ge3a2
+geb2a
+ge3ble
+geb4lin
+gebot4
+3gebü
+ge1c
+ge3ck
+ged4
+ge1e2
+ge3ec
+geest3
+3gefä
+4g1eff
+gef4l
+gef4r
+ge3fu
+gegen1
+gegen3s4
+ge3g2l
+ge3hei
+2g1eid
+ge4ie2
+2g1eif
+ge4ig
+g2eil
+gein1
+ge1ini
+ge1inn
+2g1einr
+gein5sti
+gein2v
+ge1ir
+ge2is
+2g1eise
+gei3sh
+geis4sc
+gei2st
+2gek.
+gelb1r
+gel4b3ra
+gelb3s
+gelder4
+gel6derh
+gel6ders
+ge3lec
+gele5cke
+2ge2lek
+2gelem
+ge4lene
+gel3ere
+ge4lerk
+geler3ö
+ge4l3ers
+ge2lev
+gel3f
+gel1i4m
+gel3la
+gell2i
+gel2ö
+gel3sa
+gels2p
+gels2t
+gel3ste
+gel3sz
+gel3ta
+gelt4r
+gel3z2
+gem2
+ge4ma.
+gem6e
+4g1emp
+ge3mu
+g4en.
+ge3na
+ge4n1ac
+ge4nak
+ge4n3al
+ge4nam
+ge4nar
+ge4nat
+gen4aug
+ge3nä
+ge4näu
+g2enc
+4genda.
+4g3endmo
+gen2dr
+gen3eid
+gener4f
+4generg
+ge4n3ern
+gen6erwe
+gener4z
+ge4ness
+ge3nid
+ge2nim
+gen3k4
+gen3n
+gen4sam
+gen3sk
+gen3sz
+gen3tä
+2gentf
+gen3t4h
+gen5tr
+2gentw
+geo2ri
+ge1ou
+g2e3p4
+ge1ra
+ge2ra2b
+ge2r3al
+ge3rann
+ge4rant
+ge4r3a2r
+2gerdg
+ge4rene
+ge4reng
+ge4ren4s
+ge4r3ent
+ger2er
+gerin4f
+ger4inn
+gerin4t
+4ger4klä
+g3erlas
+ger5me
+ger3no
+2g1ernt
+ge1ro
+ge2rob
+ge2rop
+ge1r2ö
+ger4sat
+4ger4seh
+ge3r2u
+g1erzä
+ge1s2
+g2es.
+ges3auf
+3gesc
+gesch4
+ge6sche.
+ge2s3eb
+4g3e4sel.
+ge4s3elt
+ge2s3er
+ge3sha
+ge3si
+ges4pi
+ges3s4t
+gest2
+gest4a
+ge3stak
+ge3st6e
+ge4s3ter
+ges3th
+ge4s3tur
+ge3t2a
+ge4tang
+ge4tant
+g1etap
+ge3ti
+get4ri
+get3s
+ge5t4u
+2g1e1ul
+ge3u4t
+ge3wa
+4g1e2x
+2g5f4
+gfi2l
+4g1g
+gga4t
+g5ge
+gge2ne
+gg2l
+g3gla
+g3glo
+g2g3n
+gg4r
+ggs2
+2g1h
+4gh.
+gh2a
+3ghale
+gh2e
+3g2het
+3g2hie
+gh1l
+3gh2r
+ghs2
+gh3sc
+g2hu
+gh1w
+gich2
+gicht1
+gi2eb
+gie3g
+gi2e1i
+gi2e3l
+giel2a
+gie3n
+gien2e
+gi4eno
+gie3re
+gie1st
+giet2
+gif2tr
+gift5s
+gi2gu
+gi2kel
+2g1ill
+gi2me.
+gi4mes
+gi2met
+2gimp
+2gind
+gi3ne
+2g1inf
+gin2ga
+2ginh
+2g1ins
+2g1int
+2ginv
+gi2ob
+2giok
+2g3isel
+git2a
+gi3tu
+gi4us
+2g1j
+4g5k4
+gl2
+4gl.
+4g1lab
+2g1lac
+2gladu
+2g1lag
+2g1lam
+2gland
+3glanz1
+gla2s1c
+glas3t4
+3g2laub
+2g1lauf
+2gläuf
+gl3b
+g2l4e
+2g3le.
+3glea
+2g3leb
+g3lec
+4g3led
+g3lee
+2g3leg
+2gleh
+g4leic
+4g3lein
+gleiter8s
+glei4t5r
+g3len
+4glenk
+4g3ler
+glerei4
+2gles
+3gles.
+g3lese
+g3lev
+g2lia
+2glib
+3g2lid
+g2lie
+2g3lieb
+2glif
+g2lik
+4glil
+g2lim
+4glin
+g2lio
+2glis
+3g2lit
+g3lite
+g2liz
+g3lize
+g2loa
+g2lob
+g2loc
+2g3loch
+g2lok
+g2lom
+g2lop
+g2lor
+2glos
+g2lot
+2glöch
+2glös
+2glöw
+2gls
+g1lu
+2g3luf
+2gluk
+4g3lun
+g2lut
+3glü
+g1lüg
+2glw
+3g2ly
+2g1m2
+g1n
+2gn.
+g2n2a
+g4na.
+2gnac
+2g5nah
+gn4al
+gna4l3er
+2gnanl
+3g2nä
+2gnb
+2gnc
+2gnd
+gn2e
+g3neh
+2gn3ent
+gne2tr
+2gnf
+2gng
+2gnh
+g2nie
+g2nif
+g4nin
+2gnint
+2gni4s3
+gnise2
+2gnk
+2gnl
+2gnm
+g2no
+g4non
+gno1r
+g3not
+2gnp
+2gnr
+2gns
+2gnt
+2gnu
+3g2num.
+g2nü
+2gnv
+2gnw
+g2ny
+2gnz
+go4a
+goa3li
+g1ob
+go3be
+2gobj
+gob2l
+2g1o2f
+2gog
+2g1oh2
+goh3ren
+go1i
+go3in
+gol2a
+gol2fr
+3gon.
+gon2e
+3gons
+goo2
+2gope
+gopf4
+go4pos
+2gopt
+gor2a
+2gord
+2g1org
+go2s1
+gos3p
+gost2
+2g1osz
+go3t2h
+got6terb
+got6t5erg
+3gou
+go1y
+gö2f
+g1öl
+3göt
+2g3p4
+2g1q
+g2r4
+g4rab
+gra2ba
+gra2bi
+gra4bl
+2g3radl
+2g3rah
+2g3rak
+gram1
+gram8m7en8d
+gram6mer
+g3rand.
+2gra2r
+grar1e
+gra2s3a
+gra4sh
+gra4sp
+gra2st
+2g3raub
+grau3f
+2graum
+grau3sk
+2gräd
+gräs1c
+g3räu
+2g5re.
+g4reb
+2g3rec
+g3rede
+g4re2e
+2g3ref
+2grege
+2g3reic
+grei4fr
+2g3reih
+g3rein
+g3reit
+g4rem
+2g3renn
+gre3no
+gren6z5ei
+grenz3w
+g4rer
+gres6ser6
+g3ret
+g3rev
+2g3ric
+gri2e
+2g3riem
+g3riese
+g4rif
+2grig
+gril4la
+4g3ring
+4g3rinn
+g4rip
+gro2ba
+gro3ber
+gro2bl
+gro2b3r
+2groc
+2groh
+2g3rol
+gron4
+2g3rose
+g4ross
+gros6sel
+2g3rost
+g4rot
+2gröh
+2gruf.
+g4ruft
+2g3ruh
+g3rui
+2g3rum
+grun2g
+3g4rup
+3grus
+3gruß
+2g3rut
+2g3rüc
+g4rün
+4g2s1
+g4s3a2b
+g3sack
+g4sa2d
+g4s3a2k
+g3sal
+g4salb
+g4sall
+g4salm
+g4salt
+gs2am
+g4s3ama
+gs3amb
+g4s3amp
+g4sant
+gsa4p
+gs3a2r
+g3sat
+gsau2g
+g3sau4r
+gsa2v
+g3säu
+g3s2c
+g4sca
+g4s3ce
+gsch4
+g4schef
+g4s3co
+gse2
+gs2e3h
+g3s2eil
+g3s2eis
+gse4kl
+g3sel.
+g4sela
+g3seln
+gs3em
+gsen1
+g4sent
+g4ser
+g3sere
+gs3er1i
+g4se4s
+gse4t
+g4seu
+gsfi2l
+gsh4
+gs3ha
+gsi2d
+gs3i2k
+g3sil
+gs3in
+g4s3ita
+gs2ki1e
+g4sm
+g4sn
+gso2
+gso4b
+g3sol
+g4s3op
+g5s4orge
+gs2pac
+gs4pant
+g4spas
+g3s2pek
+g3s2pi
+g5s4pie
+g4s3pl
+g3spor
+gs6port.
+g6sporto
+g4s3pru
+gsrat4
+gsrü2c
+gs3s4
+gs3ta
+g3stan
+g4stanz
+g3star
+gs4tati
+gs3tä
+g3steh
+g3stein
+g3stel
+gs4tell
+gste2r
+gst3err
+g1steu
+gs2thy
+g3stif
+g3stil
+g3stim
+g3stir
+g3sto
+g4stoch
+g4stod
+g4stor
+gs3tö
+gs4tör
+gs3tr
+gst4ra
+g3s4tras
+gs4trat
+gst5reit
+gst4res
+g4streu
+gst3rit
+gst3ros
+g3stun
+gs3tü
+g4sw
+g3sy
+2g1t
+g3te
+gtei3s
+gt3h
+gt4hy
+g3t2i
+gti2m
+g3to
+gt4r
+gt2s
+g3tü
+gu4ale
+gu3am
+gu1an.
+gu1ant
+gu1as
+gu1c
+gu4d3r
+gu2e
+2gued
+guet4
+2g1u2f
+2g1uh
+gu1ins
+gu1is
+gum2e
+3gumm
+gummi1
+gun2e
+2g1unf
+g2ung.
+gunge2
+4gungew
+2g1ungl
+2g1u2ni
+2g3unk
+2gunr
+gun2s
+2gunt
+gure4
+2g1url
+gur2th
+gur2tr
+gurt3s
+guru1
+gu2s
+gus3a
+gu3sc
+guschi5
+gu3se
+gus4ser
+gus2s1o
+gus2sp
+gus4st
+gu4st
+gust3a4b
+gus3te
+gust3en
+gus6tend
+gus6terl
+gus4tr
+gu2t
+gut1a
+gut3er4h
+gut3h
+gut4sa
+gut2sp
+2güb
+3gür3
+güs3
+2g1v
+2g1w
+gy3n
+gyp2a
+2g3z2
+gzeu4gi
+hab2a
+hab2e
+h3abf
+hab2i
+2habn
+h1a2br
+h1abs
+2habw
+ha4ch3en
+ha2cho
+hacks4
+ha2del
+hade2n
+h1adle
+hado2
+h1a2dr
+2hae
+ha4far
+haf2e
+h1affä
+haf3f4l
+h2aft
+haf4to
+haf2tr
+haft4s3p
+h2agg
+h1ah
+h2ahs
+h2ai
+3hai.
+h2aj
+2haka
+ha1k4l
+2h2al.
+halan4c
+h1a2lar
+ha2lau
+hal2ba
+hal4bel
+hal4bin
+hal2b3r
+hal2bu
+2hale
+hal6lere
+hal6lerf
+hal6lerg
+ha3lo
+4halp
+hal4sei
+hal4sk
+hal2sp
+hal2st
+hal4tal
+hal4tei
+hal6t3r
+h2ame
+2h1amt
+h2an.
+2hana
+ha2nal
+ha2nan
+2hanb
+h2anbe
+h2and
+han2da
+han2d3r
+hand3s
+ha2nem
+han2f1
+han6g5end
+2hani
+han2kr
+2hanl
+2hano
+2hanr
+h1ansc
+2hanz
+2h1ap
+3h2ape
+ha2pl
+ha2po
+ha2pr
+h2a3ra
+ha4rab
+2harb
+h2ard
+har2fr
+h1arm.
+har3ma
+h2arme
+har4me.
+har4ne
+ha2rom
+hart4e
+har2th
+h1arti
+har2tr
+har4tri
+har2za
+h2as
+4ha3sa
+has4c
+has2h3
+has4sa
+hasser4
+has4s3t
+has3t
+ha2str
+h1a2ß
+ha2ta
+h3atl
+ha2t3r
+2hats
+hatt2
+h3attr
+h1audi
+h1aufb
+hau5f6lie
+hau3f4lo
+2h1aufm
+h1aufs
+h3au3g
+h1aukt
+hau2sa
+hau4san
+hau2sc
+h2ause
+hau4sel
+hau6s5ent
+hau4spa
+hau4spe
+haussen6
+hau4sur
+hau2ta
+4hauto
+hau4t3r
+ha2ve.
+häde2
+h1äff
+hä2kl
+2härz
+hä6s5chen
+2häug
+häu2s1c
+hä3usp
+2h3b4
+hba4ras
+hbe3r2e
+2h1c
+2h3d4
+hdan2
+4hea
+he3be
+heb3eis
+he2b3l
+he3br
+he3bu
+he3ch2e
+he3chi
+he1cho
+h3echs
+he3cke
+hed2g
+he2dit
+he2el
+hee3le
+he1e4m
+hee2s
+he1e2t
+h2ef.
+he2fan
+he2fau
+he2f1ei
+he3f2em
+hef3erm
+2heff
+he2fid
+he4f3ing
+he2f5l
+2hefr
+hef4ra
+he2fre
+3heft
+he2fu
+he3gu
+he2hel
+h4eib
+h1eie
+h1eif
+h1eig
+he2im
+hei4mal
+hei4man
+hei4mar
+hei4mei
+heim3p
+hei4mu
+2hein
+heine2
+hei4neb
+hei6nene
+hei4n3er
+h3eintr
+4heio
+he1ism
+he1ist
+heit4s3
+h1eiw
+hekt3a
+he2l1an
+he2l3au
+hel1ec
+he2lek
+h3elem
+he2len
+h2elf
+he3li
+hel4l3au
+hel4mei
+he3lo
+he4lof
+hel2or
+he2lö
+2helt
+2h1emb
+3hemd
+he3mi
+he4mia
+h3e4miss
+3hemm
+2h3emp
+h2en.
+hen3a2
+he4nas
+he4nat
+hen3ebe
+henen1
+hen3end
+he4nene
+he4nens
+hen3erg
+he4nerm
+he2n1e4t
+henfal4
+2henga
+hen4gag
+hen4kan
+hen4kau
+henst2
+hen3str
+hent2a
+hen3te
+hen3tr
+h1ents
+2h3entw
+h3entz
+he4n3u
+hen3z2
+4he2o
+he3on
+he3op
+he3pa
+he3ph
+h1e2pi
+hept2
+h2er.
+her3a2b
+he2rad
+4herap
+he4r3a2r
+he2rat
+herb2
+h2ere
+he2re2b
+he4reck
+her4eif
+4he3reig
+he6reis.
+her7eises
+he2rel
+he4rene
+he6rersc
+he4rerw
+h1er2fo
+6hergebn
+2herif
+herin4d
+herin4f
+he6rin6nu
+herin4s
+h1erke
+her4klä
+h5erkran
+her3la
+h2ern
+he3ro
+he4r3o2b
+he4rof
+he4rop
+he4rot
+h1erör
+hert4
+her3th
+her3tr
+her3um
+her4zap
+h3erzeu
+her2z1w
+he3s4a
+4hese
+he3si
+he3s2p
+hes6tä
+he3stro
+he2tap
+he3tä
+heter2
+he3th
+het2i
+he3t4s
+h2eu
+heu3g
+he2um
+3heusc
+he3x
+he1x2a
+2hexp
+he1y2
+1hè
+2h3f4
+hfaller6
+hfan2
+hfel2l3
+hfi2s
+hflei2
+2h3g4
+hgas1
+hget4
+2h1h2
+hhoh2
+4hi.
+4hia
+hi2ac
+hi2ang
+h1iat
+4hic
+hi1ce
+hich6t5er
+hicht6sp
+2hid
+hi3d2e
+hi2e
+hi3ens
+hier3i
+hie4rin
+hiers2
+hif3f4r
+hi2k3r
+hi2l3a4
+hile3n2
+hil2fr
+h2im
+2hima
+h3i4mit
+h4imm
+h3impe
+hi2n
+hi3nak
+hi3nam
+hi3nap
+hi5nas
+h2inde
+hi3nel
+hin2en1
+h1inf
+h1inh
+2hi3n2i
+hin3n2
+hi3no
+hin3s2
+hin2t1a
+2hio
+hi3ob
+hi4on
+hi3or
+hi2p3
+hi4pl
+hips2
+hi4pu
+hi2r
+hi3ra
+2hi3re
+hi3ri
+hir2m1a
+hir2mi
+hirn1
+hir4ner
+hir2s
+1hirt
+2his.
+his2a
+hi2se
+h1i2so
+hi3tac
+hi2tan
+hi2tel
+hi1th
+hit2i
+hit3z2e
+hi2v1o
+2h1j
+2h1k4
+hkamp2
+h2keu
+h3kö
+4hl
+hl2ag
+hla2gr
+hla2l
+hlan4d3a
+hl1ans
+hl1anz
+h1las
+h1lat
+h1laut
+h1lay
+h3läche
+h1läs
+h1läu
+hlb4
+hl3d4
+h3le.
+hle3a
+h3leb
+h3led
+hle3e4
+h3lein
+h2leis
+h3leist
+h5len.
+hle4nas
+hlenen3
+hl2enn
+h4l3entr
+h4lents
+hl2enz
+h3ler
+hle2r3a
+hl4ere
+h2lerg
+hl2erk
+h6l3er4nä
+hle3run
+hl1erw
+h4lerz
+h3les
+h4lesi
+hles4t
+hlf4
+h2lie
+h3lied
+h2lif
+h2lim
+hl1ind
+h2lip
+h2lis
+h2lit1
+hl3l2
+hlm2
+h2lo
+hl1ob
+h3loc
+h3log
+hlo2re
+h4lorm
+h3los.
+h3losi
+hlos4st
+hl2ö
+h2lös
+hl4sar
+hl2ser
+hls3ka
+hl3s2lo
+hl5s6tern
+hls3tie
+hl5str
+hl2su
+hl3t2
+h3luf
+h3luk
+h3lumpe
+h1lüf
+hlz2
+2h1m
+h3mad
+h3mag
+h3mak
+h3man
+h2mant
+h3mar
+h4marc
+h3mä
+h4mäc
+h4mäh
+h4mäl
+hm2e
+h3me.
+h3med
+hme1e4
+hmeer4s
+h3mein
+h3meld
+hme3le
+h3men
+hmen2s
+hme2ra
+hme1s2t
+h3mex
+hmi2e
+h3mil
+h3mind
+h3mini
+h3minz
+h3mirr
+h2mo
+h3mop
+h3mot
+h3m2ö
+h4möl
+hm3p2
+hm2s
+hm3sa
+hms1p
+h2mu
+h3mul
+2hn
+h2na
+hna2c
+h3nag
+h3nam
+h4nar
+h4natt
+h3nau.
+h2nä
+hn1äh
+hn3d4
+hn2e
+hne3b
+hne2e3
+h2n3ef
+hn3eig
+hn3ein
+h2nel
+hne4n1
+hn4eng
+hne4pf
+h3ner
+hner4de
+hner3ei
+h4n3e2ro
+h4n3ersa
+hn4es
+hn3ex
+hn3f4
+hnflei4
+hnhof8stras
+h2nic
+h2nid
+h2nie
+hn1im
+h2nip
+hnk4
+h2nor
+hn3sa
+hn3s2p
+hns4to
+hnsuch4
+hnts2
+h2nul
+h2n1unf
+hn3z2
+ho4ar
+ho3bern
+ho2b3l
+ho2ch3
+ho4cha
+hoche2
+ho2cka
+hocker4
+ho6ckerl
+hock3t
+4hocy
+2hod
+2ho2e
+ho2f1a2
+ho2fä
+ho2feu
+hof3f4a
+ho2f3l
+ho2f1o
+ho2f3r
+ho2fu
+2hoi
+ho2l1a2
+hol3ar
+4holdy
+3hole
+ho2l1ei
+hol3g4
+hol3k
+holl2
+ho2l1op
+hol3s
+2holy
+h3olym
+3holz
+hol6zene
+hom2e
+ho2me.
+ho2mec
+ho2med
+h2on
+4hon.
+hond4
+4hone
+hon2er
+4hong
+4honh
+4honk
+4hons
+4hony
+ho1on
+hoo2r
+2hope
+ho1ra
+ho2rak
+h1o2r2an
+ho2rar
+ho2rau
+h1or3d
+2hore
+ho4rens
+ho3ret
+2h1org
+horo2
+ho2rop
+hor3ta
+hor4ter
+h1ortu
+hose2
+ho2sei
+ho3sl
+ho4sla
+4hosö
+ho2sp
+ho3spr
+ho4ßene
+2hot.
+ho3th
+4hotr
+2hot3s2
+2ho2w1
+h1o2x
+ho1y2
+4hoz
+1h2ö
+2hö.
+hö2c
+hö3ck
+h4öh
+5höhe
+hö2s1
+h3öst
+2h3p4
+h1q
+4hr
+hra2b
+hr3a2c
+hr3ad
+hr1a2g
+h1r4ah
+h1rai
+h1rane
+hr3ap
+hr3ass
+h3rat
+h3räu
+hrb4
+hr1c
+hr3d
+h2rec
+h3r2ech
+h3red
+h3ref
+hr1eh
+h4rei.
+hrei4ba
+hrei4br
+h3reic
+h3reif
+h4r3eig
+hr4eini
+h4reinl
+h4reins
+hrei3th
+hreli1
+h3rep
+hrer6geb
+hr2erk
+h4rerla
+h6rer6leb
+hr2erm
+hrer3s
+hrer4sa
+hrer6tüc
+hr2erw
+hr2erz
+h3re2s3
+hress2
+hrest2
+hre4t
+h2r1eta
+h2r1eu
+h2rev
+h3rez
+hrg2
+h2ri
+h3ric
+h4rick
+hri4e
+h3riesl
+h3rin
+hr1int
+h4rist
+hrit6tel
+hrk4
+hr3l
+hrm2
+h3rog
+h3roh
+h1ro2l
+h4romat
+h4rome
+h4romi
+h4romo
+h4ron
+h1ropa
+hro4r
+h3rou
+h3rö2s
+hrr4
+hr2s1ac
+hr4s3and
+hr3schl
+hr2sen
+hr2s1er
+hr2set
+hr4sh
+hr2sin
+hrs3k
+hrs3l
+hr4s1of
+hr3spa
+hrst2
+hr2su
+hr2tab
+hr2tan
+hr2te2l
+hr2th
+hr2top
+hrt3ric
+hrt2sa
+hrt2se
+hrt4sin
+hrt2sp
+h3ruh
+hr1ums
+h3rut
+h3rü
+h4rüb
+h4ry
+hrz2
+4hs
+h4s3acht
+h2s1a2d
+h2s1alk
+h2sall
+h4samt
+h2san
+h2s1as
+h2sath
+h2saud
+h2s3aur
+h2saut
+h2säh
+h2säug
+h4schan
+hs4cr
+h2s3ec
+hse2e
+h4s1ehr
+h2s1eie
+h4seind
+h6seinst
+h3sele
+hse4lin
+hse4mis
+h4s3endw
+h2s1erf
+h2s1erg
+h2serh
+h2s1erk
+h2s1erl
+hs1ern
+h4sernä
+hs4erne
+h2serö
+h2s1erw
+h2serz
+h2seth
+h2sex
+h3s2ext
+hsha2k
+h2s1i2d
+hs2im
+h2s3ing
+h3s4inni
+h4s3ita
+hs2kal
+h3skand
+hs1of
+h2sofe
+h2sop
+hs1org
+h2spac
+h4s3pani
+h2s1par
+h2s1pat
+h3spec
+h3spei
+h3sperb
+h2sph
+hs4pie
+h3spoi
+h2sprä
+h2spro
+hss4
+h1sta
+hs3tabl
+h2staf
+hst3alt
+h3st2an
+h2s3tau
+h2s3täu
+h1stec
+h1stei
+h1stel
+h4stele
+h3s4terb
+h3s4tern
+h1s2ti
+hs3tie
+hs4tief
+h2stit
+h1sto
+h2stol
+h2stor
+h1str
+hst3ran
+h4s3treu
+hs4tri
+hstro2
+hs3tum
+h1stun
+h1stü
+h2s1u
+hs2ung
+4h1t
+ht1a
+h2ta2d
+ht2ag
+ht4akt.
+ht4akte
+h2tall
+h4talo
+h2talt
+h4ta2m
+h2ta2n
+ht3ane
+h3t2ank
+h3tanz
+h2tap
+h2ta2r
+ht3arr
+ht2a2s
+h2t3asi
+h2tasy
+h2t3a2t
+h3tat.
+h3tate
+h2tau
+h4tax
+ht1ä
+h2tär
+ht3e4ber
+ht1e2c
+hte3cha
+h2t1e2d
+ht1eff
+ht1e2he
+h2teif
+h2t1eig
+h4t3eilz
+h2t1eim
+ht1ein
+h2t1eis
+h2t1eke
+h4t3elas
+hte6l5ei.
+h4telek
+h4t3elfe
+h4t3elit
+hte4m
+h2t1emi
+h2temp
+h4tenga
+h4t3engl
+h4t3enta
+h4tentf
+h4tents
+hter6de.
+hterer6s
+ht3erfü
+h6terfül
+h6tergeb
+ht3ergr
+hter6gri
+ht1erh
+hter6häl
+hter8höhu
+h6terleb
+h6t5erleu
+h6terneu
+ht5erspa
+hter8spar
+ht3erst
+h6tersta
+ht3erwä
+ht3erze
+h4t1e2se
+h4t1ess
+h3tet
+h4t1e2th
+h2t1eu
+h4textr
+h2t3h2
+h4thei
+h3thera
+h3thes
+ht4heu
+h4tho
+h2ti2d
+h2t1im
+h2t1i6n3
+ht3ine
+h4tisr
+htni2
+hto2
+h2t1ob
+htod1
+h2t1of
+h4t3oly
+h2tope
+ht1or
+h4tord
+ht3rak
+h3tran
+ht3rand
+h4t3ras
+ht3rat
+ht6rates
+ht3rau
+h4traub
+ht6raume
+ht3rec
+h5treck
+h4tref
+ht3rei
+h2trek
+h2t3res
+ht4ri
+h4t5ric
+h4t5rieg
+h4t5rin
+h2t3rol
+h2t3ros
+ht3röm
+ht3ru
+h2t3rü
+h4ts
+ht2sah
+ht2sal
+ht4s3a4n
+ht2scr
+ht4sein
+ht2sel
+ht4s3end
+ht4seng
+htse2r1
+ht4s3eri
+htsha2
+ht3s4hak
+hts3k
+ht3skal
+ht2s1o
+ht2sp
+hts3tät
+hts2ti
+hts5trau
+ht4s3tur
+ht4s3tür
+htt4
+htti2
+h3tub
+htu2e
+h2t1urs
+h3tü
+ht3z2
+hu2b1a
+hu2b1ei
+hu4bel
+hu2b1en2
+hu2bi
+hu2b3l
+hu4b5r
+hu2bu
+hu1c
+hu2fa
+hu2h3a
+hu2h1i
+h1uhr
+h1uhu
+hu2kä
+hu2k1i
+huko1
+huk3t4
+hu2l3a2
+hu2lä
+hule2
+hu2l1eb
+hu2l1ei
+hu2lem
+hu4l3eng
+hu4lent
+hu2l1er
+hu2let
+hu2lid
+hu2l3in
+hull2
+hu2lo
+hu2lö
+hul3s4
+hu3m2a
+h1umh
+2h1ums
+hu2n
+h1una
+hun3d2e
+hunde3i
+hunde3s
+2hunf
+hung2
+hun3ge
+hung4s
+hungsa4
+h1uni
+h1unm
+2hunt
+h1ups
+2hur
+hur3g2
+hur2th
+hu3sa
+hu2so
+hus2s3a
+hus4ser4
+hus2s1o
+hus2sp
+hus2st
+hu2tab
+hu2ti
+hu2t1o4
+hu2t3r
+hut2t
+hut4zen
+hut4z3er
+hut2zu
+h2ü
+hübe4
+h3über
+h4übs
+h3übu
+hüf2
+hühne4
+hüs3
+2h1v
+hvil2
+2hw2
+h2wall
+hwe1c
+h1weib
+h1weih
+hwein6sa
+h2wirr
+hy2lor
+3hym
+h1yo
+3hyp
+hy2pe.
+2hy2t
+2h1z
+hz2a
+h3z2o
+hzug4
+h3z2w
+i1a
+i2aa
+i2ab
+i2ache
+i3ad.
+ia3do
+i2af
+iaf4l
+i2ag
+i4ago
+i2a1h2
+i2aj
+ia2kei
+ia2kr
+i2aku
+i3al.
+i3a2l1a2
+ial3ar
+ial3as
+ia2lä
+i3al3b4
+i3alc
+i3al3d4
+i3a2leb
+i3alef
+i3alei
+ia3lek
+i3alel
+i3aleng
+i3alent
+i3alerb
+i3alerf
+i3alerh
+i3a4lerm
+i3a2l1et
+i3alex
+i3alf
+i3alg
+i3a2lia
+i3alim
+i3a2lin
+i3alj
+i3alk
+i5al3l
+iall2a
+ial4ler
+iall2i
+i3alm
+i3aln
+ia2lon
+ia2l1o2r
+ial3p
+i3alr
+i3als
+i3al3t4
+ia2l3u4
+i3alv
+i3al3z2
+i2am
+i3am.
+i3amp
+iampe4
+i3an.
+ian2a
+ia2nal
+ian3alt
+ia2nau
+i3and2
+ia2n1e2b
+ian2er
+i3anl
+i3ans
+ian2s1p
+i3ant
+i3anw
+i3anz
+ia1o
+i2ap
+ia3pf
+i2a1q
+i3ar.
+i2a2ra
+i4ari
+i3as.
+ia3sh
+i2asi
+ia3s2p
+ias3s
+iast4
+i3at.
+i4ate
+i3at2h
+i4athe
+1iatr
+i3ats
+i3au
+ia3un
+i2av
+2iä
+i1ä2m
+i1äp
+iär2
+i1är.
+iär3m
+i1ärs
+i1ät
+i3ä4tem
+iä2ti
+iä4tr
+iät3s4
+2i1b
+ib1art
+i2b1auf
+i2b1aus
+i2baut
+ib2bli
+i2b1eig
+i2b1eis
+ibe4n1
+i2b1ep
+i6ber6geb
+ibe1ro
+i2bim
+i2b1in
+i2blad
+i2bleu
+i3blu
+ib2o
+i2bö
+i2b3rau
+i2b3ren
+ib3ric
+i2b3roc
+ib2ser
+ib4ste
+ib2un
+i2b3unk
+i2b3unt
+ibus1
+2ic
+i3ca
+ic1c
+ice1s
+ich1a
+ich6art.
+ich1ä
+i1che
+ich1ei
+ich2er
+icherin5
+i1chi
+ich1l
+ich3le
+ich3li
+i3ch4lo
+ich5m
+ich3n
+i1cho
+ich3ort
+i2ch3r
+ich6sele
+ichsen3
+ich2s1i
+ich4spe
+ich6stie
+ich4tab
+ich4tan
+ich2tr
+i1chu
+ich1w
+i1ci
+ic1in
+i3cke
+ick1s
+ickt2
+i1cl
+ic3la
+i5cu
+i1d
+id2ab
+i3d2ac
+id1a2n
+i3d2ans
+i3dat
+id1au
+id2ax
+idä1
+i2dea
+1idee
+2idel
+idel4ä
+i4demu
+ide4n1o
+iden4se
+ide2on
+i3der
+4ider.
+iderin8nu
+ide1rö
+ider6reg
+ide3so
+ides2p
+2idia
+1i2dio
+idi1s
+idni3
+id2o
+i2dol
+2idoo
+i2dö
+2i2d3r
+id4ru
+i3dsc
+id2set
+id2s1p
+idt4
+2idu
+1i2dy
+ie3a2
+ie2bä
+ie2bl
+ie2b3re
+ie2bri
+ie4b3rü
+ieb4sto
+ie1c
+ie2cho
+iech3t
+ie2ck
+ie2d3an
+ie3de
+ie2dr
+ie1e2
+ie2f1an
+ie2fau
+ie2fäh
+ief1ei
+iefe2m
+ief3f4
+ief2i
+ie2f3l
+ie4fonk
+ief1r
+ie2fro
+ie2gl
+ie4g5li
+ie3g4n
+ieg3r
+ieg4ra
+ie2gre
+ieg4s3c
+ieg4se
+ieg4st
+ie2h1in
+ieh3r4
+i1ei
+ie1ind
+i2e2l1a
+iel3d4
+i2ele
+ie2l1e2b
+iel1ec
+iel3eid
+ie2lek
+i4elen
+ie4lene
+ie4leng
+ieler4e
+ieler6fi
+ieler8geb
+ieler6ke
+ieler6la
+ieler8lebn
+iel4erw
+ieles4
+ielf4
+ieli2d
+i1ell2
+ie2lo2b
+ie4lor
+i2els2
+iel3sz
+ielt2
+iel3ta
+iem2e
+2i1en
+i3en.
+i3ena
+ien1ag
+ien4am
+ie4nas
+i3enä
+i3end
+i2ene
+ien1eb
+i3enec
+i3e2nek
+iener6fo
+ien3er4g
+iener6la
+i3enex
+i3enf
+i3eng4
+ienge4f
+ienge4z
+i3enh
+ie2nim
+ie4n3in
+i3enj
+i3enk
+i3enla
+i3enle
+i3enm
+i3enn
+i3e2no
+i3enö
+i3enp
+i3enr
+ien2s
+i3ens.
+i3en3sa
+i3en3sc
+i3en3s2e
+ien3si
+ien3s2k
+i3en3s2p
+iens6t5er
+ienst5rä
+i3en3sz
+ien4tar
+i3enth
+i3enty
+ie3nu
+ie4num
+i3env
+i3enw
+i3enz
+ie1o4
+ier3a2
+ie2rad
+ie2rap
+i3erbun
+i2ere
+ie4reck
+ie4r3eis
+ie3r2er
+ierer3k
+ie4r3erz
+ie2ret
+ierf4
+ierg4
+i1ergi
+ierk2
+i1ern
+i3ern.
+i2erni
+ie1ro
+ie2rö
+ier4re.
+ier4s3eh
+ier3sei
+iers2t
+ier3sta
+ier3ste
+ier3te
+ierts4
+ier3z2
+ie2san
+i2esc
+i2ese
+iesen3s4
+ie3s4pa
+ie4spu
+ies6ser6g
+ies2st
+iess3ti
+iest6e
+ie1str
+iet1a
+ie4tag
+ie2tan
+ie2tap
+ie2tat
+ie2tau
+ie4t3ent
+ie4t3erh
+ie4t3ert
+ie4tha
+i4ethe
+iet3her
+ie2t3ho
+ie2thy
+ie2t1o4b
+ie2t1ö2s
+ie4t3ri
+ie2t3ru
+iet2se
+i1ett
+iet3zw
+ieu2e
+i2e1un
+ie2w1u
+i1e2x
+2if
+if1ar
+i2f3arm
+if4at
+i2f1au
+if1än
+i2fec
+i2f1ef
+if1ein
+if2e4n
+i2f1erg
+if1erh
+if2far
+if2f3l
+if2fro
+iff2s
+iff4ste
+if3l
+if1lac
+i1f4lä
+iflo4
+if4los
+i1flü
+if3r
+i1fre
+if4rev
+if2s
+if3sa
+if3se
+if3sp
+if3sta
+if4t3a
+if2ted
+if2t3ef
+if4t1ei
+if2te2l
+if2tep
+if4terk
+ifte2s
+if4t3esc
+if2t1op
+ift1r
+if2tra
+if4t3ri
+if2tro
+ift3sp
+ifts2t
+ift3sz
+if2tur
+i1fy
+2i1g
+iga1i
+i2garb
+ig1art
+iga3s4
+i2g3att
+igd4
+i6gebrau
+i4gefar
+ig1ein
+ige4na
+ige6nene
+ige4nid
+ige2ra
+ig5erwer
+ig1erz
+iger4ze
+i2g1ess
+i2gim
+i2gl
+i4glag
+i4g3lim
+ig4na
+i4gnä
+i3g4neu
+ig4no
+i3g2o
+igo1p
+ig3rad
+ig3re
+ig4ren
+i2grou
+ig3sa
+igs2ag
+ig4sal
+ig3sä
+ig4schr
+ig3s2o
+ig3sp
+ig4spa
+ig3stei
+ig4sti
+ig4s3to
+ig3str
+ig6stras
+ig3s4tü
+igung4
+2i1h
+i2har
+i5hea
+ihe1e
+ih1elt
+ihe4n
+ihe1u
+ih3m
+ih3n
+ih3r
+ihs2
+ih1um.
+ih1w
+ii2
+ii3a4
+i1ie
+i3ig
+ii3h
+i1im
+i3in
+i1i4s
+i2is.
+ii3t
+i1it.
+i1j
+1i2js
+2i1k
+ika2ge
+ik1ak
+ikaken3
+i2kakt
+ik3amt
+i4k1ang
+i6kantei
+ikanten8n
+ik1art
+ik3att
+i2k1au
+i3kaz
+ik1äh
+i2kär
+4ike
+i2keb
+ik1ebe
+ike2c
+i2k1ed
+i2kef
+i2k1ei
+ike4l1
+ike2n1
+i2k1ens
+ike2ra
+i2k1e4r2e
+i2k1er2f
+i5kerfam
+i2k1er2h
+i2ker2l
+i2kero
+i2ke3ru
+i2k1eta
+i3ki.
+i3kie
+ik1in
+i2kins
+iki1s
+i2k3l
+ik4län
+i3k4leri
+i3k4let
+ik4lim
+i3klu
+i2kne
+i2k1off
+iko1p2
+ik1o4ri
+iko1s
+i2köl
+ik3rä
+i2kres
+ik4ris
+i2krö
+iks2
+ik3sa
+ik3ste
+ik3sz
+ikt3erk
+ik4t3esk
+ik2t3re
+ikt2u
+i2k1uh
+i2kup
+i3kus
+i2kü
+i1la
+i2lab
+ila2br
+i4labs
+i2l1ac
+i2l1ak
+il3a2ma
+il1anm
+il1ans
+ilan6zer
+i2larb
+il1asp
+i2l1au
+i3laub
+i3l4aufb
+i1lä1
+i2lär
+2ilb
+ilb4l
+il2c
+il5chen
+il2da
+ild3ebe
+il4d3en4t
+il3der
+ild4erp
+ilde2s
+ildi2
+ild1o
+il2dor
+il2dr
+2ile
+il1e2c
+il1ein
+il1el
+i2lemb
+il1ent
+i4lentl
+i4lents
+i2l1erd
+iler4ei
+i6lereig
+il1erf
+iler4fo
+i2ler2g
+i2l1er2h
+i4lerkl
+il1err
+i4lerri
+il2erz
+ile4th
+il1ex
+ilf2
+ilfe3s
+il2f3l
+il2f3re
+ilf4s3
+il2gl
+2ilh
+2ili
+ili3e4n3
+iliga2
+ili4g3ab
+ilik4
+i2l1ind
+i4l3init
+il1ins
+i2l1ip
+i3lip.
+i3lips
+ill2an
+il4lenn
+il3l2er
+1illu
+il2mak
+il2m1ap
+il2m1au
+ilm1ei
+il2min
+il2mor
+2ilo
+il1ob
+il2of
+il2oh
+il2op
+i2l1or
+i3lou
+il1ox
+il4sein
+ils4to
+ilt2
+il3t4h
+i1lu
+i2lum
+ilung4
+il1ur
+i3lus
+ilü4
+2ilv4
+il2zar
+il2zau
+ilz1er
+il2zwa
+imad2
+ima3i
+im2al
+i2m3anh
+im1ans
+i2marc
+im3aren
+i2m1arm
+i2m1art
+im4at
+imat5sc
+ima4tur
+i2m1aus
+i2maut
+1imbi
+i2meg
+im1ein
+i2mej
+i2mek
+i2mele
+i2melf
+im2en
+i2m1erf
+i2m1erl
+i2m1erz
+i4me3sh
+i2meti
+i2mew
+i2m1i2d
+i2mim
+i2m1ind
+i2minf
+i2m1ins
+im2mä
+im2mei
+immen1
+imm3ent
+im6menth
+1immo
+2imo
+i2m1ob
+i2mo2p
+i2mö
+1imp
+imp2fa
+im3pfo
+imp2s
+im3pse
+im3sph
+2imt
+imt2e
+im3t2i
+imt3s2
+imtu2
+2imu
+im2um
+im1urk
+2in.
+in3ab
+ina2be
+in1a2c
+in1ad
+i4n3ae
+i3nald
+inaler4
+ina6lere
+in2alp
+in1am
+in2an
+in3ana
+in3ann
+i2narb
+i2narm
+in2ars
+in3att
+i2n3au
+2inä
+i2n1äh
+in2är
+in1äs
+2ind.
+inda2
+ind2ac
+in2dal
+in2dan
+2indä
+in3de
+2inde.
+ind4eid
+2inden
+ind5erke
+inde3sp
+1index
+ind2i
+1indik
+in3dö
+2indr
+ind4ri
+ind3se
+1indus
+in3d2ü
+2ine
+i4ne4ben
+in1e2c
+i3nee
+i2neff
+in4elen
+in2em
+ine3nä
+i2neng
+i4n3enzy
+i5ner.
+i4n3erbi
+in2erh
+in3erle
+i6ner6leb
+iner4lö
+i4n3er4tr
+i4nesk
+in2et
+in1eu
+ine3un
+ine2x
+in3f4
+1infiz
+1info
+2ing
+4inga
+in2g1af
+in2g1ag
+in2g1al
+in2gam
+ing1ar
+in2g3at
+3ingeni
+in3g2er
+in4g3erw
+in2gl
+in3gla
+in3glä
+in2gor
+ing4s3am
+ings6por
+ing4s3pr
+1inhab
+2inhar
+2inhau
+2inhe
+in2i3d
+2inie
+2inig
+ini3k4r
+2inis
+ini3se
+init2
+i3nitz
+3inkarn
+1inkas
+in4k3ent
+ink4er
+in3k2ü
+inma4le
+4inn.
+inne4n
+in4ner4m
+4innl
+in2nor
+1innta
+2ino
+in1od
+in3ols
+in1or
+ino1s
+inost2
+i3no3t
+i2n1ou
+i1nö
+in1ö2d
+2inri
+ins2am
+in6samt.
+insch2
+2inse.
+in2seb
+2insed
+2insen
+ins2i
+2insk
+in4sm
+3instal
+in4s3tät
+2inst2e
+ins4tip
+3instit
+ins4to
+4instra
+ins4tri
+in4strü
+1insuf
+ins3umz
+in2sur
+in3s2z
+2inta
+in3te
+2inte.
+1integ
+2inth
+inthi1
+int2o
+2intö
+2in3t4r
+4inträ
+3intrig
+int3s
+i2n1u
+i4nuh
+in3unz
+4inverm
+invil2
+i1ny2
+in3z2e
+inz2i
+inz2u
+in3zwä
+i1ñ
+2i1o
+io1c
+io2d
+io3e4
+i2of
+iof4l
+i2oh
+io3k6r
+i3ol.
+i3om.
+io3me
+i3oms
+ion2
+i3on.
+ion3an
+io2n3au
+ion3d2
+io4nee
+i3ong
+i3onn
+io2nor
+i3ons3
+i2ony
+i2oo
+i2o1p
+i3o4pf
+i3opt
+i2or
+i3or.
+i3orc
+ior2e
+iore4n
+io1r2h
+i3orp
+i3ors
+i3ort
+i3os.
+io3sh
+io5ska
+ios2p
+i2o1st
+ios2u
+i2o3sz
+io3t
+i3ot.
+iot4r
+i3ots
+i2ou
+i2ov
+i3o2x
+i3oz.
+i1ö2k
+i1ön
+i1ös.
+i1öst
+2ip.
+i1pa
+ip2an
+i1pe
+i3per
+2ipf2
+i3pfan
+iph2
+2i1pi
+ipi3el
+ipi3en
+ip2pan
+ip3pe
+ipp1f
+ip4pl
+ip3pu
+i1pr
+2ips
+ip2sa
+ip2sei
+ip2sp
+ips3t
+ip4sta
+ip4stü
+ipt2a
+ipt2u
+2ipu
+2i1q
+i1r4a
+i3ra.
+2i3rad
+i3ras
+irat2
+i1rä
+ir1äh
+ir2b3l
+ir1c
+ir2ch1o
+ir4e
+i3ree
+2irek
+ire4na
+i3ré
+irg4s
+ir2he
+ir2i
+iri3a
+2i5rig
+2irk
+irke4n
+ir4kene
+ir2k3l
+irli4n
+ir2m1ag
+ir2mak
+ir2mau
+ir2mä
+ir2m1ei
+irme4n1
+ir2m1o2
+irm4th
+ir2mum
+ir4munt
+2irn
+ir2n3a
+ir4nat
+ir2no
+i3ro
+1iron
+i1rö
+irpla4
+irre4l
+ir2rh
+ir3sche
+ir4schl
+ir4schm
+ir4sch3r
+ir4sch3w
+ir3se3
+ir3s2h
+ir2st
+irt2s3t
+2iru
+ir1u2m
+iru2s1
+i3r2ü
+i3sac
+i4samp
+i4s1amt
+is2ap
+isa2r
+is3are
+i3sat
+i2sau
+is3auf
+isau2g
+i2säh
+i2s1än
+2isb
+i2sca
+i4schar
+i3s2che
+i4schef
+i4sch3e4h
+isch3ei
+i6schemi
+i6scher6z
+i4schin
+i5sching
+i2schl
+i2schm
+isch3ma
+i4schna
+i4sch3re
+isch3ru
+i4schüb
+i4schwa
+i6schwir
+i4schwo
+isch3wu
+i4schwü
+i2scr
+2ise
+ise3a
+ise1e
+iseh2a
+ise3hi
+is4eind
+i4seint
+is4e3li
+i6sel6ter
+ise2n1
+ise4n3a2
+is2end
+isen3s
+ise4r3ei
+is1erg
+i2serh
+i2s1erm
+i2s1es4s
+is2et
+i4s3etat
+i3s2eu
+2isf
+4ish
+isi2a
+i2s1i2d
+isin3g4
+isi1s
+i4ski
+i4sku
+is3la
+3islam
+2isma
+2ismi
+i2s1of
+1i2sol
+3isom
+is2o2n3
+isonen4
+iso6nend
+i2sop
+is1org
+is1ort
+3i2sot
+2isp
+is1pa
+i2spar
+is1pe
+is1pic
+is2por
+i2spro
+is3sa
+is4s1ac
+is4sau
+iss3che
+is6schen
+iss3erf
+iss2po
+is2st
+is3sta
+iss3tr
+is3stu
+is2sum
+is4tab
+ist3a2c
+ist2an
+is3tang
+i1stat
+is3täu
+ist4e
+i1stel
+iste4n
+istes3
+i1steu
+ist2id
+i1stil
+is3t6o
+is4toc
+is3tör
+is3tr
+ist4ra
+ist3rei
+i1stro
+is4tru
+i1stü
+i3suf
+isum3p
+i2sü
+i1ß
+iß1er2s
+it1ab.
+it1abs
+ital3a
+it1alt
+it1a2m
+it1an
+ita3ne
+it3anr
+ita2po
+it1app
+it1a2re
+it1art
+i3tat
+it1au
+i3tauc
+i2taut
+4itä
+it1änd
+i2t1äs
+ität2
+it1eff
+i2t1ei
+it2eic
+2itel
+ite4l1a
+i4telek
+i2temp
+ite2n
+iten3s2
+i4tents
+i2tepo
+i6tereig
+it2erö
+i8t7ersche
+i4t1esk
+i2t1ex
+i3text
+i5thr
+i2thy
+i5tic
+i2tid
+i5tig
+1itii
+iti3ker
+it1in1
+i4tiso
+iti3sp
+iti2v5a
+itmen2
+4ito
+it1ob
+ito4be
+i5toc
+i2t1of
+it1o2p
+it2os
+2itr
+it3raf
+it3ras
+it3rau
+it3räu
+it3re
+i4tref
+it4ret
+it3rob
+it3rom
+i2t3run
+it2sa
+its1ag
+it2s1e
+it4se2h
+it4s3e2r1
+it2s1o
+2itt
+it2teb
+itt3hä
+it2t1o4b
+it2top
+it4tri
+itt3rol
+itt6schi
+itt4seh
+itt4sei
+itt4sor
+itt2sp
+itt4sti
+it1uh
+it1ums
+it2ung
+i2tuns
+ituran4
+it1urg
+itut4
+i3tü
+it2ze2c
+itz2er
+itz3erg
+it6zergr
+it4z3erl
+it2z1w
+2i3u2
+iu4m1
+iuma2
+ium4se
+iun2
+ius3t
+i1ü4
+2i1v
+i2v1ad
+i2v1ak
+i2v1am
+iv1an
+i2v1ä
+i2veb
+i2v1ef
+iv1ei
+iv1elt
+ive4n
+iv1ene
+i2v1ent
+ive3re
+iver8folge
+iv1erh
+iver4kl
+iv1erl
+iver3s
+ive3s
+i2v1e4x
+iv1ins
+i3vol
+i2vr
+i2vun
+i2v1ur
+2i1w
+2i1x
+i2xa
+ix2em
+i3xi
+ixt2
+4i1z
+i2z1ag
+i2zan
+i2z1ap
+i3z2as
+iz1au
+i2zaus
+i2zän
+izei3c
+izeits4
+i2zele
+ize2n
+i4zener
+i2z1erl
+iz1ir
+i2zo2f
+i2zö
+i2zuna
+i2z1w
+i3z2wi
+izz4a
+í1l
+j2a
+jab4
+ja1c
+jah4r3ei
+jahr2s
+ja3l2a
+ja3ne
+jani1
+jani3t4
+ja5ru
+jas2o
+ja1st
+jat2
+je2a
+jean2s
+je2g
+jek2ta
+jek4ter
+jek4tin
+jekt3o2
+jektor4
+jek4t3r
+je2p
+jes3t
+je2t1a
+je4t3h
+je2tin
+je4tor
+je2t3r
+jet3s2
+jet3t
+je2t1u2
+je3v
+je3w
+ji2a
+jit3
+ji2v
+joa3
+jo2b1
+job3r
+jo4da
+jo2i
+jong2
+jo1r2a
+jord2
+jo2sc
+3jou
+jou2l
+j2u
+ju2b3l
+jugen6
+jugend3
+ju1i
+ju2k
+ju3l2
+jung3s4
+ju3ni
+ju3r4a
+jur2o
+jus3t
+ju3t2e1
+2j1v
+1ka
+ka3ar
+2k1abb
+kab2bl
+2kabd
+2k1a2ben
+2kabf
+2kabg
+2kabh
+2kabn
+2k3a2bo
+2k1abs
+2k1abt
+2kabw
+2kabz
+ka1c
+kade2r
+2k1adm
+2k3a2dr
+3kadu
+2kadv
+ka1f4l
+ka1fr
+kaf3t2
+kag2
+kaga3
+2k1age
+3kah
+ka1ho
+ka1in
+kaken2
+ka1k4l
+2k1akt.
+4kala.
+kala3b4
+ka2lan
+kal3d
+ka2leb
+ka4l1eh
+ka4lens
+kal3eri
+3k2alk
+kal2k1a
+kal4kan
+kal2k3l
+kall2i
+2k1allt
+ka2lop
+ka2l1os
+kal4tex
+kal4th
+ka2lu
+k2amt
+kan4al
+ka4n1a2s
+ka2nau
+3kanä
+2kanb
+kan3d4
+2kanda
+2kandä
+kan2e
+2kanf
+2kanim
+kank4
+2kanl
+2kanom
+2k1anor
+2k1ans
+k2ans.
+kan4tar
+6k5antenn
+2k1anth
+ka3nu
+4kanw
+2k1anzu
+2kanzü
+ka2o1
+3kara
+2karbe
+2karc
+k2ard
+kar3d2a
+k1area
+k2arg
+ka3r2i
+kari3es
+k2ark
+2k1arm
+kar2pf
+k2ars
+k2ar3ta
+k2arte
+k1arti
+4kartik
+karu2
+k2arw
+3k2asc
+kasi1
+kas2o
+ka4sp
+ka2s3t
+2k1ast.
+ka4ste
+kas6tras
+3kasu
+ka3sz
+ka2tan
+3kateg
+ka3t2h
+ka4t3r
+2katt4
+kau4fer
+kau2f1o
+kauf4s3a
+kauf4sp
+kaufs7tem
+k2aus.
+2k1auss
+2kausw
+kau3t2
+2kauto
+2kaz
+1kä
+k1ämi
+2k1änd
+kär2
+2k1ärg
+kä2s1c
+käse3
+4k3b4
+kbo4n
+kbu2s
+kby4
+2k3c
+2k3d4
+ke2ben
+2k1e1c
+ke2di
+k1ef
+2keff
+kefi2
+kege2
+ke2gl
+ke2he.
+ke2hen
+kehr2s
+kehr4s3o
+2k1eic
+2k1eig
+kei2li
+ke2im
+2k1ein
+ke1in2d
+kein4e
+k1ei1s
+2keise
+keit2
+ke2la
+kel1ac
+ke3lag
+ke4l3am
+kel1au
+ke2lä
+kel3b4
+keld4
+kel3eis
+2ke2lek
+ke2l1en
+ke2l1er
+kel7l4e
+kell2i
+ke2l1o2
+ke2lö
+kel3sk
+k4elt
+ke2mi
+2k1emp
+k2en.
+ken1a
+ken3au
+kend4
+ken3dr
+ke2n1e2b
+kenen1
+ke4nene
+ke4nens
+kener4n
+4ken4gag
+k5en6gel.
+ke2nim
+ken3in
+4kenlad
+4kenläd
+kenn2a
+kenn2e
+ke2no
+4kensem
+ken3si
+ken3s2k
+ken5s6tei
+ken3sz
+k3en4te.
+ken6ten.
+2kentf
+2k1entg
+ken3th
+2k1entl
+2k1ents
+2kentw
+2kentz
+ken3z2
+2ke1o2
+2kep
+ke2pl
+k2er.
+ke1ra
+ke2ran
+ke2rau
+ke2r1ä
+ker4ble
+k2erc
+2kerd
+ke2re2b
+ke3reig
+ker3ein
+4kerfah
+k4erfam
+ker2fo
+ker5g
+k3ergeb
+2kergu
+ke6rin6nu
+kerin6st
+kerin4t
+k3erken
+k2erko
+k2erl
+k3er4lau
+k3erleb
+k6erlebe
+ker2na
+ker4nei
+4k3erneu
+ker6n5eur
+k1ero
+ker8oberung.
+ke1rod
+2k3eros
+ker4reg
+k2ers.
+2kersa
+kerz2
+k1erz.
+ker4zeu
+2k1er2zi
+k6es.
+ke2sa
+k1ese
+ke2sel
+kes2sa
+ke4t1a
+ket2ag
+kete4
+ke4t1eb
+ke4tel
+ke4th
+ket3ha
+ke2tu
+ke1up
+keu6schl
+2k1e2va
+2k1e2x
+key3
+4k3f4
+2k3g2
+kga4s1
+kge3s4
+2k1h4
+kho3m
+k3hu
+ki3a
+ki4ad
+kia2r
+ki1c
+2ki2de
+ki3d4r
+k2ids
+2kidy
+ki2el
+kie4lei
+kiel3o
+2kiern
+kier2s
+kier4st
+kie2z
+ki1f4l
+ki1f4r
+ki3k4
+2ki3l2a
+2kilä
+ki3lo
+3kin.
+4kindex
+2k1indi
+2k1indu
+2k1inf
+king3s
+2kinh
+k2ini
+kini3k2
+k2inn
+ki3n4o3
+kinos2
+kin3s
+2k1inse
+2k1inst
+2k1int
+ki3or
+kio4s
+3kir
+2k1i2so
+kis2p
+kis3s
+kist2
+kis4to
+kiv2
+kive4
+2kiz
+2k3j
+2k1k4
+kkab4
+kl4
+4kl.
+4kla.
+2k1lac
+klan2
+2kland
+klan3du
+k4lar
+k1last
+k1lauf
+k3laug
+2kläd
+k2lär
+k2le
+4k3le.
+kle2br
+k3leg
+2kleh
+k3leit
+k3lem.
+2k3ler
+kle2ra
+2k3leu
+kle3us
+2klic
+k2lien
+k2lif
+2klig
+3k2lim
+k2lin
+k3lin.
+3k4lina
+k4link
+k2lip
+k2lir
+k2lisc
+2klist
+klit2s
+2k3liz
+2k3loc
+klo2i3
+2klok
+3k4lop
+k3lor
+2klose
+klost6
+2klöc
+2klöf
+k2löst
+k4löt
+k1lu
+klu4b
+k2lud
+k2lug
+k2lum
+klung4
+2klux
+2k1lüc
+2kly
+2k1m
+4kma
+kma2la
+k2n2
+2k5nach
+2k3nad
+2knah
+2k5nam
+2k3näp
+k3ne
+k4nec
+kne1e
+2knes
+2knetz
+2k5neu
+2kney
+2k5niv
+kno2b3l
+k4nol
+2knorm
+2knov
+k3nu
+2knum
+k6nur
+1ko
+ko5ad
+ko2al
+2k3oas
+kobal2
+2kobj
+kob4s
+2k1o2fe
+kof3f2
+koh4a
+kohl2e
+kohle3i
+koh3lu
+koka3
+ko3l2a
+ko3le
+kol2k3
+3kom
+4k3omn
+ko4mu
+k2on
+ko2nem
+kon2i
+kon3s4
+kont6e
+ko2nu
+2kop.
+2ko1pe
+kopfa2
+kop4fen
+kop6f5err
+2kop3s
+ko3pte
+2kopz
+ko3r2a
+kor2ba
+kor2bl
+kor2br
+2k1orc
+korden3
+korder4
+kor6derg
+ko2rel
+2k1org
+ko3ri
+kor3m
+kor4nac
+kor2n3ä
+kor4no2
+2korpi
+k2os
+ko4sk
+ko2sp
+3kost
+ko2stü
+k3osz
+ko2ter
+ko3ti
+kot4r
+kot3s2
+kot4tak
+k1ou
+ko3un
+3kow
+ko2we
+2k1o2x
+1kö
+k2öf
+k1öl
+2k1p2
+2k3q
+k2r2
+2k3rad
+2k3rah
+k4ral
+k3rats
+2kraum
+k4raw
+k4raz
+k4räc
+2kräd
+k4rän
+2k3räum
+2k5re.
+2k3reak
+2k3real
+2k3rec
+2kred.
+2k3rede
+2kredn
+2kredu
+2k3ref
+4kreg
+2k3reic
+kre1i2e4
+kreier4
+k3reif
+2k3reih
+2kreim
+krei6sei
+krei4st
+kreli1
+k3ren
+k3res
+2kresu
+k3rev
+2k3rh
+2krib
+2k3ric
+2k3ries
+2krip
+k3risi
+krob4
+k4roch
+4k3roh
+k4roi
+k4rok
+k4ron
+k4rop
+2krot
+3kroth
+k3rou
+2kröh
+2kruf
+2k3run
+4ks
+ks3a2b
+k3sac
+ksa2k
+k4s1amt
+k2san
+ks3a2r
+k2sau
+k2sav
+k2säh
+ksch4
+ks2chi
+k2s1e2b
+k2s1ec
+ks1ei
+ks2eid
+ks2eif
+k4seind
+ks2end
+k2s1eng
+k2s1ent
+ks1er
+ks2ere
+k2serf
+k2serg
+k2serk
+k2serl
+k2sers
+k2serw
+k2s1e2v
+k2sex
+ks3ha
+k2s1i2d
+k2s1in
+k2s1is
+ks3kl
+k4sm
+ks1o
+ks2on
+k2sop
+k2so2r
+k2sö
+ks1pa
+k2spal
+k3s2pat
+k2spä
+k3spe
+ks2pel
+k2sph
+ks2por
+ks2pul
+ks3s4
+k1st2
+k2stal
+k4s3tanz
+k3stat4
+k3stäl
+ks4tel
+ks2tep
+k4stier
+k2stit
+ks4tol
+k2stor
+k4strop
+k2stuc
+k2stum
+k2stur
+k2stüt
+k2s1u
+k3sul
+ks2zen
+4k1t
+kt1abr
+kt1abs
+k2t1ad
+kt1akt
+k3tal
+kt1am
+kt1an
+kt2and
+k2t1a2r
+kta4re
+kta3ri
+k2t1au
+kt3aug
+ktä3s
+kt1äu
+kt1ein
+k4t1ela
+kte4n1
+kten3s2
+k2tent
+k4tentf
+k4tents
+kten3z
+kte1ra
+kt4ere
+k4t3erfo
+kt1erg
+k2t1erh
+k2terö
+kte3ru
+kt1eta
+k2tex
+k2t3h
+k2ti2d
+kti2me
+kt3ing
+kt1ini
+kt3inn
+k2tins
+ktion4
+kt2is
+kti2s1e
+kti4ter
+k2t1of
+k3t4ran
+kt3ras
+k2t3rau
+k4tref
+kt4ro
+ktro1s
+kt3run
+kt3rü
+kt3s
+kts4a
+kts2el
+ktsen1
+kts1o
+kt4sor
+kts2pa
+kts4t
+kts2ti
+kt1s2z
+ktt2
+k3tub
+kt1ums
+k2tuns
+kturen4
+k3tü
+kt3z
+ku2al
+ku1c
+kud4r
+3kug
+ku2h
+2k1uhr
+ku3la
+ku3l2e
+ku3l2i
+4kulp
+kul4to
+kul2tr
+kum2e
+2kumg
+2k3uml
+kum2s1
+k2u3n2a
+kun3da
+kunden3
+kung4
+kun4s4
+kunst3
+2kunt
+2kunw
+2k1up.
+kur2bl
+ku2rei
+kuri2e
+kuri4er
+2k1urk
+ku2ro
+kurs1c
+kur2sp
+kur4ste
+kur4str
+2k1urt
+kus3a2r
+ku4schl
+ku2sp
+ku2s3t
+ku2su
+2kut.
+1kü
+kü1c
+3küne
+3kür
+kür4s
+2k3v
+2k1w
+k3wa
+2k3z2
+kze3l
+3la.
+la3ar
+l1ab
+3l2ab.
+la3b2a
+l2abä
+2labb
+lab2br
+2labd
+2la2ben
+4labf
+4labg
+2labh
+3labil
+la2bit
+2la2b3l
+2labn
+3lab2o
+4labo.
+la3b4ra
+2labs
+la2bus
+2labw
+2labz
+la1ce
+la2ce.
+l2ache
+lacks2
+1lad
+2l1ada
+2ladd
+3laden
+la3d2i
+2ladj
+2l1adl
+2ladm
+2l1a2dr
+3l2adu
+2laf
+la2fa
+la2f1ei
+laf1r
+laf3s
+laf3t4
+la2fu
+3lafü
+la2g1a
+lag3d
+l2ager
+4lagg
+la2gio
+lag3l
+la4g3n
+lago4
+la2gob
+2la1ho
+3lai
+lake2
+la2kin
+l2akk
+la1k4l
+la2kro
+lak3t
+2l1al
+3lala.
+la2lar
+3lali
+4lalt
+l2ama
+lami3t
+lam2m1a
+1lammf
+2lamn
+la2mor
+l2amp
+2l1amt
+lamt4s
+la4mun
+la2na
+la3nad
+la3nan
+la4nat
+la4nau
+2la4nä
+3l2and
+lan2da
+lan4dam
+land3au
+lan6d5erw
+lan6d5erz
+lan6d5inn
+lan2d3r
+la2nem
+lan3erd
+laner4f
+2lanf
+lan6g5esc
+lang3s4
+2lanha
+l2anhe
+2lanl
+2l1ann
+l1ano
+la2nof
+2l1anp
+2lans2
+l1ansi
+2lantw
+2lanw
+lan2z1w
+3lao
+2l1apf
+la2ph
+l1a2po
+lap2pl
+la2r1an
+2larc
+lar1e2b
+la2r1ei
+la2rel
+la4rene
+larf4
+lar3g
+lar3ini
+2larm.
+la2ro
+2l1arom
+l1ar3t
+lart4h
+l3arti
+3laru
+l2as.
+la4sam
+la4sä
+4lasd
+la5seb
+la4sei
+la4s1e2l
+l2asg
+2lash
+la2sin
+la2sis
+2lask
+la2so
+2la4sp
+3lasser
+lass4tr
+l2a2st
+las4t3an
+la4ste
+las4t3ri
+la4stu
+lat2ak
+la3t2e
+la4tel
+la5t4i
+2l3atl
+2latm
+lat2o
+la2tö
+la2t3ra
+lat4ri
+lat2s
+lat3st
+2lat2t1a
+lat4tan
+lat4tex
+lat2th
+lat4t3in
+lat2t3r
+latzer4
+1laub.
+lauben6s5
+lau2b3r
+laubs1
+laub4se
+lau4fin
+lau2fo
+lau4fri
+1laug
+lau3gl
+2laun.
+la4us
+3l2aus.
+2l1ausb
+lau6scha
+2lausd
+2lausf
+2lausg
+2lausl
+2lausr
+2l1auss
+2lausw
+2lausz
+2lauto
+lau2tr
+la3va
+lave4n
+1law
+lawa4
+l2ay
+lä1c
+3läd
+2l1ähn
+2lämt
+1länd
+2l1äpf
+2läq
+lär4mar
+l1ärme
+2lärz
+lä2s1c
+2lät
+2läub
+2läuc
+2läue
+1läuf
+2läug
+2läx
+1là
+4l1b
+l3bac
+l2bant
+lb3a2ri
+lbau1c
+lb1ärm
+lbb4
+lbby4
+l4b3eink
+l4b3eise
+lbe4ral
+lbe3rei
+lberin5
+lbe7s
+l4b1e4ta
+l2b1id
+l2b1ins
+l3b2lat
+l3blä
+lb3le
+l2bled
+l2bli
+l3blo
+l3b2lö
+l3b2lu
+l2b1o2ra
+lb3rea
+lb2s
+lb3sa
+lb3se
+lb4sh
+lb3si
+lb4sk
+lb3so
+lb3sp
+lbs4t
+lbst3ac
+lbst3ei
+lbst1u
+l2b1uf
+l3bum
+lbu4n
+lbzei2
+2l1c
+l3ca
+l3che
+l4chei
+l4chent
+l3chi
+lch3le
+lch3li
+l3chlo
+lch3n
+lch1ob
+lch3r
+lch3s2
+lch3ü
+lch1w
+l2ck
+l3cl
+l3co
+4l1d
+ld3a2b1
+ld2ac
+ld3a2ck
+l2dad
+l2daf
+lda2g
+l2d1ah
+l2d1ak
+l2d1al
+l2d1a4n
+ld3ane
+lda2r
+l2d3ari
+ld1arm
+ld1ass
+l3dat
+l4d3ato
+l2d1au
+ld3aus
+l3däm
+ld1är
+ld1ät
+l3de.
+lde4ben
+l2dein7
+l2deis
+l2d1elf
+l2d1e2mi
+l2d1ems
+lde4na
+lden5erg
+l4dentl
+l3der.
+l4d3erfa
+l6der6geb
+ld1erh
+l4der4he
+l3d2erl
+l6d5erlas
+l3d2ern
+l2d1er2p
+lder4tr
+lde3sa
+l2d1es2s
+lde3str
+l2dex
+ld1id
+ld1i4mi
+l2dob
+l2dop
+ldo2r
+l2d1ori
+ld2os
+ld2ö2
+ld3r
+ld4ram
+l2dran
+l2drec
+ld5rie
+ld4ris
+l3d4ru
+l2drüc
+ld3sa
+lds4an
+ld3st
+ldt4
+ld3th
+ldt5s
+ld3tu
+l2d1ul
+l2d1um
+ldwes4
+1le
+le2ad
+le3ar
+le2as
+leben4s3
+le2bl
+le2b3re
+2lec
+lech1a
+le2chi
+lech7t6e
+le2er
+le3f2a
+2l1eff
+le2g1ab
+leg1as
+le2gä
+lege1i
+le2gl
+lego3
+leg4r
+3leh
+4lehe.
+leh3r2e
+4lehs
+4leht
+lei4ble
+l2eid
+leif1a
+lei4fan
+lei4fei
+leifer6g
+leif3s
+2l1eig
+3leih
+lei3l2
+leim3p
+l2ein.
+l2eind
+lein4du
+l4eine
+lei6nerb
+le2inf
+le2ini
+4leink
+4l3einsa
+2leint
+l2einu
+le4is
+leisch5a
+lei8schei
+lei6scho
+lei6sern
+l1eisf
+leis6s5er
+l4eist
+lei4str
+lei4ßer
+l2eit
+lei2ta
+lei4to
+leit3sk
+leit3s4t
+3leko
+2lektr
+2lekz
+3l2ela
+le2le
+le3lei
+2lelek
+4leleme
+le3len
+le3les
+2lelf.
+l2eli
+l2em.
+le2mau
+le2m1ei
+3lemes
+3lemet
+lem1o2
+le2mor
+2lemp
+lem3s
+le2mu
+le4mun
+l4en.
+len1a
+le4na2d
+le4n3an
+le4n3a4t
+2lency
+4lendet
+l1endp
+4lendun
+le2n1ed
+4lenerg
+le4neur
+4leneuv
+len4gag
+len4kau
+len4k3lo
+len4klu
+l1enni
+len6sein
+4len4sem
+len3ska
+len3sz
+2lentf
+2l1entk
+4lentla
+2lentn
+4l3en4tro
+4l3entw
+lent4wä
+5lentwet
+2lentz
+2l1enzy
+leo2f
+le1os
+2lep
+3lepa
+3lepf
+4l1e2pi
+3lepr
+lep5t
+l2er.
+l2e1ra
+le2rag
+le2rap
+le2ra2s
+le2rau
+le2r1ä
+le2re2b
+ler2e3c
+l3ereig
+le4r3ei4m
+le4r3eis
+le2rel
+le4reng
+le4rerg
+lerer5k
+le4rers
+l3erfas
+2l1erfo
+l2erfr
+l2erfü
+l1erg
+l2erga
+l4ergef
+3lergeh
+6lergen.
+l4erger
+l4erges
+3l4ergew
+2lergi
+l2ergl
+l2ergr
+4l3erhol
+lerin4s
+lerk2
+l2erka
+2lerke
+l1erkl
+4lerklä
+l4erkle
+l2erko
+ler3kr
+ler3l
+5l6erlebe
+3l4erlei
+2lermä
+ler4nal
+3l4erne
+ler4nei
+2l1erö
+3l2erra
+ler4ric
+l4ers.
+l1ersa
+lers2t
+ler4sto
+le2rup
+l4erwa
+ler4wer
+2ler2wo
+2l1erz
+ler2zä
+l3erzeu
+ler2zo
+l4es.
+les2am
+les4e
+le3sei
+2l1esel
+le3s4h
+lesi1
+le3sk
+les4ki
+les2ko
+le2spo
+lest6
+le1sta
+leste3r
+lester6i
+les2ti
+le1sto
+le1str
+3lesu
+4lesw
+2lesy
+2le2tap
+2le2tat
+le2thi
+let2i
+letsche6
+let4tel
+let4top
+lett1r
+letts2
+le2u
+4leue
+3le3u2f
+l2euk
+2l1eul
+le3unt
+2leuro
+3l2eut
+le2vol
+2lex
+3lexik
+le2xis
+4l1f
+l3fah
+l2f1ec
+lfe1e
+lf3einh
+l2feis
+lf2en
+l4ferei
+lfe4rel
+lf1erl
+l3fi
+l3f4lä
+lf3led
+lf3lo
+l3f4lu
+lf3ram
+lf3res
+lf4ru
+lf4rü
+lf2spe
+lf2s3ti
+lf2su
+lfun2
+lfur1
+2l1g
+l3gas
+lga3t
+lgd4
+lgen2a
+lgens4
+lgeräu3
+l2geti
+l3g2i
+lg2lö
+l3go
+lg4p
+l3g4ra
+l3g4ro
+lgung4
+2l3h2
+4lhe
+3lhi.
+1li
+li2ad
+li4am.
+lian2g
+li2ast
+3lib4
+libi1
+li1c
+lich4ta
+lich4to
+4lick
+li2cka
+li2cl
+li3d2a
+2l1ido
+li4ds
+3lie.
+liebe4s5
+li1efa
+3liefer
+li1efk
+li3efl
+lie4n1a2
+li3ene
+lien3s
+lie4rei
+lier4sp
+lie2s1c
+3lig
+li4g3ers
+lig4n
+lig4ra
+li2gre
+li3ker
+lik2o
+likop4
+lik2sp
+lik4ter
+lik4t1o2
+lik2u
+li3l
+lil2a
+li3m2a1
+limas4
+limat4
+2limm
+3limo
+2limp
+lin2a
+li3nar
+2l1indu
+li2nef
+li2neh
+li2nep
+li2nes
+2l1inf
+2l1inh
+li5nie
+lin1it
+2l1inj
+lin4kan
+lin4kar
+link2s
+li2nol
+l2ins.
+l2insa
+4linsel
+2linsp
+2linst
+2l1insu
+2linsz
+2l1int
+li3nu
+2l1inv
+2linz
+li2o
+li4om
+3li1pf
+3lipt
+3lis.
+li3s2a
+li3schm
+li4schu
+4lis2h
+li3shi
+2l1isl
+2lisol
+2lisot
+li2sp
+liss4
+3list
+lit4a
+li2tal
+li3t2ä
+l2i3t2e
+li4t3r
+lit1s2
+lit3se
+lit3sz
+li3tu
+li6tun
+li4tur
+litz4er
+3liu
+liv2e
+li2vea
+li2ves
+livi3e
+li3vr
+4lixi
+li2zau
+li2z3ä
+lizei3
+4l3j
+2l1k
+l3kale
+lk1alp
+l3k2an
+l3kap
+l3kar.
+lk1erd
+lke3r2e
+lk2l
+lk3lad
+l3k4las
+lk3lic
+l3k4lu
+lk2men
+lk4ne
+lk5ner
+lkor2b1
+l2k3ru
+lk2s1
+lkse2
+lk4spe
+lks3t
+lkt2
+lk2ü
+4l1l
+l2labk
+ll2abr
+l2labt
+l3labu
+l3lage
+lla3gl
+l2l1am
+ll3a2ma
+l3lame
+ll2anb
+lla4ner
+l3lans.
+ll4anwa
+ll1anz
+ll1arm
+l4latm
+ll3att
+ll3aufg
+ll1aus
+ll1äm
+l2lär
+llb4
+llch4
+lld4
+ll5ebene
+l3lec
+ll1ech
+lle3er
+l2l1ef
+ll1eic
+ll1eim
+ll2eis
+l4leise
+lle2la
+l3len.
+lle4na
+llen3dr
+ll5en6dun
+l4lentf
+l4lents
+l3lep
+l3ler.
+lle2ra
+ll2ere
+l6lereig
+ller4fo
+l8lergene
+l4lergo
+l4l3ermi
+l4l3ernt
+ll3ertr
+ll2es
+ll1exe
+llf4
+llg2
+lli4gan
+l2limb
+l2l1ind
+l4linf
+ll1ins
+ll3k4
+ll3l2
+ll5m2
+ll3n2
+ll1ob
+l2lobe
+l2lof
+ll3ol
+ll1opf
+ll1or
+l4lorb
+l2lo2ri
+l2l1ou
+l3low
+ll2säu
+ll2s1es
+ll3ska
+ll2spr
+ll3t
+llt2e
+llt2i
+llti2m
+llts2
+ll1ur
+llus5t6
+l3ly
+ll3z2
+2l1m
+l2m3a2b
+l2m1ad
+lm1a2ge
+lm1aka
+l2m1a2m
+l3mana
+lm1apf
+lm1art
+lm3att
+lm1äst
+lmbu2
+lm1c
+lmd2
+lm3e4dit
+l2m1ef
+l2m1e2p
+lmer2
+l2m1erf
+l2m1erl
+l2m1erz
+l4messa
+l2m1id
+lm1ind
+lm1ins
+l2mof
+lm1orc
+lm3p2
+lmpf4
+lm3s2k
+lms6t
+lm3ste
+lm3s2z
+lm3t4
+l2mum
+l4munt
+4ln
+lna2r
+ln3are
+lnd2
+l3n2e
+lnes2s
+l2nin
+lnus2
+l1nü
+l1ny
+1lo
+lo4ak
+3lob.
+l2oba
+3lobb
+lobe2s
+2lobj
+l1o2bl
+l2obr
+lob4ri
+lo4chel
+2loe
+l1of
+lo2fe
+lo4gh
+lo2gl
+lo2gor
+lo2gre
+loh2e
+4l1ohr
+loi4r
+3lok
+4l3okk
+lo2k3r
+5loks
+l4ole
+2l3o2ly
+lomä3
+lo2min
+lo4nin
+lo2n1o
+lo2o
+2lope
+lop2p1a
+2lopt
+lor3am
+lor2an
+lo4rä
+3lorb
+2l1orc
+2l1ord
+lo3r2en
+4l1or3g2
+4lork
+4lorp
+2lort2
+lo4sa
+3lose
+lo4ske
+lo2spe
+lo2spr
+lo4ste
+los3to
+los3t4r
+4loß
+lo2ta
+lot4e
+lot2h
+lo3tha
+loti4o
+2l1ov
+lo2ve
+2lox
+1lö
+lö2b3
+2löck
+2löd
+lö2f
+2l3öfe
+2l1öhr
+2lök
+2l1öl3
+2löp
+3lösc
+3lösu
+4löß
+4löz
+2l1p
+lp2ar
+l4p1är
+lp2f
+lph4
+l3phä
+l2phir
+lp1ho
+l3phr
+lpt4
+l3pu
+2l1q
+2l3r2
+lrau2s
+lrebs2
+lre1s
+lrö2
+lrut4
+4l1s
+ls3a2b
+l3sac
+l2s1a2d
+ls2al
+l4s1amb
+l4samp
+ls2amt
+l2san
+ls3ane
+l3sare
+l3sarg
+l3sark
+lsau2
+lsau4m
+lsau4r
+l3s2äm
+ls2äug
+ls1äus
+l4schin
+l4schmü
+lschs2
+l2s1e2b
+l3seil
+ls2ele
+ls1eli
+ls1er
+l2serf
+l2serg
+l2serh
+l2serk
+l2serl
+l2sers
+l2serw
+lse2t
+ls1eta
+ls2ext
+ls3ha
+l2s1id
+l2simp
+ls2kal
+l3s4kele
+ls2ky
+l2sop
+l4s3ort.
+l3s2öl
+l2spac
+l2s3ph
+l2s1pir
+l3s2pit
+ls2po
+l3spri
+ls2pu
+l3spul
+ls3s4
+lst2a
+lstab6
+ls3tabl
+ls4taf
+lstahl3
+l2stas
+l4stat.
+l4state
+l4s3täti
+l2ste
+l3stea
+l3stec
+l3steh
+l3stei
+l4steil
+l3stel
+l3stemp
+l4sten
+ls4t3erk
+ls6terne
+ls6terns
+ls2tie
+ls4tip
+l2stit
+l4stoch
+ls4tol
+ls4tri
+ls6tru
+l2s3trü
+ls2tu
+ls4tüm
+l3suf
+ls1um
+l2s1un
+ls2und
+ls3unk
+4l1t
+l2tab
+lt1abs
+ltag4
+lt1alg
+lt1am
+l4tame
+ltampe4
+l5t2an.
+ltan3d
+l2t1ap
+lt1ara
+lt1art
+l3tarta
+l3tartu
+l2t3ato
+l2t1au
+lt3aut
+lt1äh
+ltbau1
+lte2c
+lt1eh
+l3tehu
+lt1eig
+lt1ein
+l2t1eis
+l4t1elt
+lte3mi
+lt2en
+lten6gel
+lten4sp
+lt3ents
+lte4ral
+lter4fa
+l3t2erg
+lter6ken
+lter4nä
+lt2erö
+lter4se
+l4t1esk
+lt2est
+lte3str
+l2t3h
+l3thas
+l4thei
+lt4hem
+l3t4hu
+l3tic
+l2ti2d
+ltimo4
+l3tine
+lti3t
+l2t1o4b
+l2t1o2f
+l4tord
+l4torg
+l4t1o2ri
+lto2w
+lt1öl
+lt1ös
+l4t1öt
+ltra3l
+lt3räu
+lt3rec
+lt3rei
+lt3ris
+lt3rol
+l2t3rö
+l4ts
+lts2eh
+lt2se2l
+lt4s3ort
+lt2s1pe
+lt3s2ph
+lt2sti
+lt3t
+l3tub
+lt1uh
+l2t1um
+lturan4
+ltu2r1i
+l3tü
+lu1an
+4lu2b3
+luba2
+lubs2
+lu2dr
+lu2es
+1lu2f2
+2l1ufe
+2luff
+lu3fo
+luf4t1a
+luft3e
+luf4tei
+luft3r
+lu2g1a
+lu2g1e2b
+lu2gei
+lugen1
+lu2g3i
+lug3l
+lu2go
+lu2g3r
+lug3sp
+lu2gu
+2l1uh
+lu1id
+lu1is.
+lul2ö
+lumbi1
+2lumd
+lume4
+2lumf
+2lumg
+2l1umh
+2lumk
+2luml
+l2ump
+1lumpe
+lum2ph
+2lumr
+2l1ums
+lu3mu
+2l1umw
+2lumz
+1lu2n
+2l1una
+2l1unf
+lung4sc
+2l1uni
+2lunr
+2l1uns
+2lunt
+2lunw
+4luo
+2lur
+l2ura
+lu2r1an
+lu2rei
+lu2ri
+l1urn
+lu2ro
+l1urt
+lu4ru
+2luse
+lu2sp
+lus4s3a
+lus2s1c
+lus4sei
+lus4s3er4
+lus2s1o
+lus4s1p
+lus2s3t
+lus4stä
+1lu2st
+lus6terl
+lus4t1o2
+lust3re
+lu2s1u
+lu2t3a
+lu4tas
+lu4tau
+lu2tä
+lu2t1e4g
+lu2tel
+luter2
+lu4t3erg
+luter4s
+lu6t5ersa
+2luto
+lu2t1o4f
+lu2top
+lu4t1or
+lu4t3r
+lut5schl
+3lux
+2lüb
+3lübd
+lück4e2
+lücker3
+5lüd
+2lüh
+lü2hel
+lüh1l
+2l1v2
+lva3
+l3vl
+lv3r
+4l3w
+2lx
+1ly
+ly1a
+ly3c
+2lymp
+3lyn
+ly3no
+ly1o
+ly3onn
+3lys
+ly3t
+2l1z
+l2z1ac
+l2z1ag
+l2zan
+l2z1ap
+l2zat
+lz1aus
+l2zäp
+l2zär
+lze2l
+l2zele
+l4z3enth
+l2z1er2h
+l2z1id
+lzi4m
+lz1imi
+lz3l
+l2zo2f
+l2zö
+lz3t2
+l2z1u4fe
+l2z1ur
+lzvol2
+lz1w
+lz2wec
+l2zwu
+1ma
+3ma.
+maa2
+m1ab
+m3a2bar
+m2abä
+2mabb
+m2abe
+2m3abf
+2mabg
+2mabk
+m2abli
+2mabm
+m2ab4ra
+ma2bri
+2mabs
+2mabt
+ma3chan
+mach2e
+mach8terh
+mach8t7ers
+mach4tr
+ma2ci
+mack2s
+ma3dac
+mada2m
+m2adä
+ma2del
+2m1adm
+2m1a2d4r
+ma4d2s
+mae4
+ma1f4
+mag2a
+ma2ge.
+ma2geb
+ma2gef
+ma2geg
+ma2gek
+ma2gep
+ma4ges.
+ma2get
+ma2gev
+ma2gew
+2m1agg
+magi5er.
+magi5ers
+ma3gl
+ma3g4n
+2m1ago
+mahl4st
+ma1ho
+mai4s3e
+ma2ke.
+2m1akt
+mal2ag
+mal1ak
+ma4lakt
+ma2lan
+ma2l3at
+ma2lau
+2mal2de
+m2aldi
+ma3l2e
+ma4lex
+mali1e
+mal3lo
+2mallt
+m2alp
+mal3t
+malu4
+ma2l3ut
+3malv
+ma2mid
+mam3m
+2m1a2nal
+ma2nar
+2m1a4nat
+ma2nau
+2m1anä
+2manb
+man2ce
+man3d4
+man3ers
+ma2net
+m2anfr
+man3g2
+m4angel
+man4gl
+2m1angr
+m2anh
+3manip
+2manl
+m2anle
+5m2ann
+2m1ansa
+2mansä
+man2th
+mant3he
+2mantw
+manu3
+2manw
+2manz
+m1anza
+ma2or
+ma1q
+4marag
+mar2an
+2marb
+mar3g2
+3ma1rh
+ma3r2i
+m2ark
+mar2kr
+4mar2o
+maro3d
+4marr
+mar6schl
+mar6schm
+mar6schr
+mar2sp
+mar2su
+2m1arti
+ma3r2u
+m1arz
+3mas
+ma3s4a
+mas2e
+ma3s2p
+massen3
+mas4st
+mas4ta
+mas4tel
+mas4ti
+mas4to
+mas4tr
+ma4s3z
+3maß
+ma2ta2b
+ma2tan
+ma2tä
+m3a2tel
+ma4t3erd
+ma4t3erz
+m4atme
+2matmo
+ma4tort
+mat3se
+mat3sp
+matt4r
+mat3url
+2m1au2f
+3maul
+3ma3un
+mau3r
+2mausd
+mau2ta
+m4ay
+ma1yo
+1mä
+2m1ähn
+mäh1r
+2m1änd
+2mäo
+2m1äp
+2mäq
+mär1
+mär2kl
+mär2z
+mär4zer
+3mäß
+mä3t4r
+mäu2s1c
+2m1b2
+mbe2e
+mbera2
+mbe3r2e
+mbert4
+mb4l
+mble1i
+m3b4r
+mbu3sc
+mbut2
+mby4t
+2mc
+m3ch
+2m1d
+m2dan
+m2d1a2s
+md3ato
+md1är
+mde2a
+m2dei
+mder2
+m2d1erl
+md3ras
+md3s2e
+mdt4
+m2d1um
+1me
+me3a
+meb4
+me2ben
+3mebr
+me1c
+medi3e4
+me1ef
+me3e4n1
+mee4rei
+2m1eff
+meg4
+mega3
+me4gel
+3meh
+meh6l3er
+meh6rert
+2m1eif
+2m1eig
+m2ei3l2
+mein4da
+meinde3
+meiner6k
+3m2einu
+3m2eist
+me3l4ant
+me2l1au
+melb2
+mel3d2
+melde3i
+me2lek
+2melem
+me2ler
+melet4
+2melf.
+3melk
+mel4k3ei
+mell2
+3melo
+me2lob
+mel2se
+mel3t4
+6mel6tern
+2m1e2mis
+2m1emp
+2m1e2mu
+me3nage
+me4n3an
+men3ar
+me4nas
+men3au
+2m1endl
+menen1
+4men4gag
+men3ge
+me2nim
+men3k4
+men2on
+men4se.
+6mensemb
+men4sen
+men4ser
+men6ses
+men2so
+menst4
+m4enta
+men4t3ak
+ment5eig
+men6t5ers
+2mentn
+ment4sp
+me1o
+2meou
+2meö
+2mepa
+2m1e2pi
+3m4er.
+me1ra
+me3rak
+mer4a3s4
+mera3um
+me2re2b
+me4rens
+mer4err
+mer4erw
+mer3f
+4m3ergän
+me3rid
+merin4d
+merin4t
+4merklä
+mern3s2
+m4ersh
+mer3sm
+mer4sto
+mert4r
+merz6eng
+3mes
+me2sal
+me4sä
+4meser
+mes2po
+mes1pr
+2mes2sa
+mess3an
+mes6ser6g
+mes4s1o
+mes2sp
+mes2st
+me1sto
+me3sze
+me3ta
+meta1s
+me3th
+me4trig
+met6t5en6d
+me3tu
+meu1
+2m1ex
+me2xe
+1mé
+2m1f4
+mfi2le
+2m1g2
+2m1h4
+1mi
+mi3a2b
+mia2n
+mi1ä
+mibi1
+mic1e
+mi1ch
+mi2ci
+mi3da
+mi2di.
+mi3dr
+2midy
+mie3dr
+mi3ele
+mi4e3no
+mien3s
+mierer4
+mie4rob
+mie1s
+mie2ti
+mie4to
+mie2tr
+mi1f4
+3mige
+mi3h
+mi2k1an
+mi2kar
+mi2kel
+mi2kin
+mi3k4l
+mi3kr
+mi2ku
+mi3l2a
+milch1
+mil4che
+mild4s
+mi3l2i
+4milz
+m2im2a
+2m1imm
+2mimp
+min2ac
+min5anze
+m2inde
+minde4s
+2m1indu
+mi2nef
+miner1
+mi4n3e4ri
+min2eu
+2minfo
+min2ga
+ming3s
+2minh
+mi3ni
+mini3k4
+mi3n2o
+mi4n3of
+2m1inse
+mi3nu
+mioni1
+mi1p
+3mir.
+3miri
+3mirs
+3mirw
+3mirz
+3mis.
+mi2sa
+mi3sau
+mi4scha
+mi4schr
+mi4sch3w
+mise1
+mis2p
+mis5sar
+mis4ser
+mi2ste
+mi1sto
+mi1s4tr
+3mit
+mi2ta
+mite2
+mi2t3h
+mi2to
+mi2tr
+mit3s2
+mit5sa
+mitt2e
+mi2t1u
+4mitz
+mi3v2
+2m1j
+4m1k4
+m3kn
+4m1l2
+ml3c
+m3le
+ml3f
+ml3k
+m3lo
+ml3p
+ml3s
+2m1m
+mma3a
+m2mab
+m2m1ak
+m2m1al
+m2m1ans
+mm1anz
+mm1art
+mma1st
+m2m1au
+mm1äu
+m2m1e2b
+m2m1ef
+mm1ein
+mme4lin
+mme4na
+mm2ene
+m4mentl
+m4mentw
+mme4r3a2
+mme4rec
+mme2s
+mme3sc
+mmes5t
+mme4sz
+m2m1eu
+mmgas4
+mmi3el
+mmi3k
+mm1inb
+mm1inh
+m2m1ins
+mm1int
+mmi3sc
+mmi1s4t
+mmi5tw
+mm3p2
+mmpf4
+mm2s
+mm3sa
+mm3s2i
+mm3so
+mm3s2p
+mm3sta
+mm3sti
+mmt2
+mm3te
+m2mum
+mm2un
+mmu3r
+mmül2
+mmüll1
+2m3n2
+m4nesi
+1mo
+mo2be
+2mobj
+2m1obs
+3m2od
+mo3de
+mode3s
+mo2dr
+m1of
+mo2fe
+3mog
+2mog.
+mo2g1al
+3m2oh
+moh2a
+moi3r
+mo2k1l
+mol3d
+3mom
+mom2e
+3m2on
+mo2nä
+mon4dac
+mon4del
+mon2do
+mo2ner
+mon2i
+mon2s3
+mon3sa
+mons4e
+mon3s4u
+mont2a
+mon3th
+mo1ny
+3m2o2o
+2mo1pe
+mo2per
+2m1opf
+2mopt
+mo1ra
+mo2rak
+mor2an
+mo2rar
+mor2d3a
+mor2dr
+morf4
+mor3g
+morgen5s6
+mor3t2
+3mos
+moster4
+mos2ti
+mo3ti
+mo5to
+mot4r
+mous2
+2m1o2x
+mo1y
+1mö
+möbe2
+mö2c
+2mö2f
+4mök
+2m1öl
+m1ört
+4m1p
+mpa3ne
+mpe4lin
+mpe2n1
+m2p1ene
+m2pf
+mpf1ef
+mp4f3erf
+mpf3erg
+mp6fer6ge
+mpf3erp
+mp6ferpr
+mp4f3err
+mp4f3er4z
+mpf3l
+mp2fr
+mp1haf
+mp1hos
+mp3lei
+m4p3lem.
+m2p3len
+m2p3les
+mp4lis
+m3pon
+mpor6tag
+mpor6ter6
+mp3sh
+mp3str
+m3pu
+2m1q
+2m3r2
+4m1s
+m2sam
+m2san
+m4sap
+ms1as
+m3sat
+m2sau
+msau3e
+m3sä
+m4s1än
+m3sc
+msch2
+m4sco
+m3se
+m4s1e2d
+m4s1ef
+m4sein
+m4se2le
+mse2n
+m4s1ene
+m4sent
+ms2erh
+m4s1eu
+m4sex
+mso2r
+ms1ori
+m2spä
+m2sped
+ms2po
+m2spot
+m2spro
+ms2pu
+ms3s4
+m3stä
+m3steh
+m3stei
+m3stel
+ms2ti
+m2stit
+m3s4to
+m3s4tr
+ms5trä
+m3s2tu
+ms4tü
+ms1ums
+m2sü
+m3sy
+2m1t
+mt1ab
+mt1ak
+mta2m
+mt1ar
+mt3arr
+mt3aug
+m2t1e2d
+mt1ein
+mt1eis
+mt1elt
+m4tenga
+m4t3engl
+mt1ent
+m4tentf
+m4tentg
+m4tentr
+m4tents
+m2t1erb
+m4t3erei
+m2t1erf
+m2t1erg
+m2t3e2r1i
+m2t1erk
+m2t1erl
+m2t1ers
+m2t1ert
+m2t1eta
+m2t1eu
+m2t1ev
+m2t3h
+m2ti2d
+m2tim
+m2t1in
+m2t1i2r
+mti2s
+mt1ita
+mtmen2
+mt1ob
+mt1op
+m2t1öl
+mt1ös
+m2t3ro
+m2trö
+m4ts
+mt2sa
+mt3sco
+mt2s1e
+mt3send
+mt3s2ka
+mt3s4kel
+mts3tät
+mt3stu
+mt1um
+mtu3re
+m3tü
+mt3z
+1mu
+mu1a
+mu3cke
+mu4ckel
+2m1uh
+mu3la
+3muld
+mul4lau
+3mult
+m4umb
+3mumi
+m1ums
+mum2s1p
+3mun
+mun6derf
+mu2ner2
+4m1unf
+4m3ungeb
+mu3ni
+mu4nin
+4mu4niv
+4munw
+4munz
+muru2
+mu4r1uf
+3m4us
+mu4s1a
+mu2s1o
+mu2sp
+mu2s3t
+4must.
+must4e
+mu2su
+mut1au
+mut4str
+1mü
+2müb
+3müh
+mü2her
+mühl1a
+mül4len
+3mün
+3müt
+mütter3
+2m1v
+mvoll1
+2m1w2
+mwa2
+mwa4r
+mweg4s
+mwel4
+mwelt3
+mwu1
+3my
+my1al
+my3l2
+my2s3
+2m1z2
+1na
+3na.
+2n1ab
+na2bä
+naben3s4
+n3abh
+3nabi
+na2b3l
+na2bor
+na2br
+nab4rü
+4n3abs2
+na2b3u
+3nac
+na2ch1
+nachen4
+na5chen.
+n3achse
+nach3sp
+nach8t7ersc
+nacht8raum
+5nachw
+na3dab
+4nadd
+nade4l1
+na2der
+4n1adl
+4n1adm
+4n1a2dr
+4nadv
+3nae
+2n1af
+na1fra
+nag2a
+na2gem
+4n1agg
+n1a2gi
+na3gin
+na3g4r
+3n2ah
+na2h1a
+4n3ahn
+4n3aho
+3nai
+nai2e
+n1aig
+4n1air
+nai4re
+n2ais
+2n1ak
+na2ka
+3nakä
+3nako
+na2kro
+4nakt
+n4al.
+na2l1a2
+nal3am
+na4lar
+na2lä
+2n1albk
+n2ald
+nal3da
+n4ale
+na2leb
+nal3ei
+na4l3ent
+na6lerei
+na4ler4g
+na4lerm
+na4l3erw
+nales2
+nal1et
+nal1ex
+nalf4
+nalg2
+nal3gl
+na2lid
+nal3l2a
+nal2ph
+n2als.
+nal3t2
+nal5tr
+n2alty
+na2lu
+2naly
+na2mat
+3name
+na3me.
+4na2mei
+n4a3men
+namens3
+4n1a2mer
+na2mid
+na3m4n
+3n2amo
+n1amp
+nam4sp
+2n1amt
+namt4s
+n1an
+2n3an.
+4na2na
+na4nat
+n3a4nä
+4n3anb
+n3and2
+nan1eu
+4n3anf
+4n3ang
+4nanh
+2nani
+4n3ank
+4n3anl
+3n2ann
+4n3anna
+4nano
+4n3anp
+2nanr
+4n3ans4
+2nantr
+2nanw
+n2anz.
+nanzen4
+nan6zene
+nan6zeng
+na3ot
+na2per
+n1apfe
+4napfel
+na2pos
+na2pr
+nap2si
+n1aq
+n1ar
+3nar.
+na2r1a
+2narc
+n2ard
+n2are
+3nar2i
+n2ark
+n2arle
+n2aro
+na2rom
+nar2rh
+2nart
+n2arta
+n2arth
+na3r2u
+3nas
+n4as.
+na3sä
+na4schw
+n2asf
+4n1a4sp
+nas2s1c
+4n1assi
+nas4ta
+na2str
+4nasy
+nasyl2
+na2sym
+3nat
+na4t3au
+nat1ei
+na2tem
+na2th
+4natm
+nat2o
+4natom
+5nats1
+nat4sa
+n1au
+4nauf
+nauf4fr
+nau2fr
+5naui
+3n2aul
+4nausb
+4nausd
+4nausf
+4nausg
+4nausl
+n2auso
+4nausr
+4n3auss
+4nausw
+4nausz
+3nav
+nave4
+navi5er.
+navi5ers
+1nä
+4näb
+3n4äc
+3näe
+n1äf
+3näg
+3nähe
+nä2hi
+3nähm
+4n1ähn
+nä2hu
+3näi
+2n1ä2m
+4n1än
+4näpfel
+2näq
+när4s5t
+3näs
+nä2sc
+n2äss
+4näst
+2näu
+3nä1um
+4näuß
+4n3b4
+nbe2in
+nbe3r2e
+nbes2
+nby4
+2n1c
+n2c3ab
+n3can
+n3ce4n3
+n3ces.
+n3chl
+nch3m
+n2ck
+ncor2
+n5cu
+4n1d
+n2da2d
+nda1f
+nd2ag
+n3dai
+n2d1ak
+n4dakt
+n2dana
+n2dani
+n2danl
+nd1ann
+n2d1anz
+n3dap
+nd3arr
+n3dat
+nd3att
+nd1au
+n2daut
+n2dax
+nd1c
+nde4al.
+n2d1ede
+n3dee
+n2dei
+n4dei.
+nd3elfe
+ndel3l
+ndel4s3a
+ndels5en
+nde4mot
+nden3sk
+n4dentl
+n4dents
+nde3o
+n5der.
+n5deren
+nderer3
+nd2erh
+n5deri
+nder6läs
+nde4rob
+n4de4ros
+n6der6sat
+nder5ste
+n3d2es1
+nde2se
+ndes3s
+n2deth
+ndia3
+nd1imm
+n2dob
+ndo1c
+n2dof
+ndo6na
+n2dopt
+nd1or
+n2do2ri
+ndo1st
+n2d3ott
+n2dö
+nd2ös
+nd4ram
+n2d3rat
+nd3rau
+n2d3re
+n2drif
+n2droc
+n2drod
+n2d3rö
+n2drui
+n2d3run
+nd4sene
+nd2spr
+nd3th
+nd3ti
+ndt4r
+n2duns
+ndwa5re
+ndy3
+1ne
+3ne.
+ne2ap
+3neas
+ne3at
+ne3au
+ne2bl
+2n1ebn
+neb4r
+2nec
+3neca
+3nece
+ne1ck
+neck2a
+ne2dit
+2nee
+neei2
+ne3e4in
+ne3eis
+neen2
+nee1r2
+nee3t
+n1ef
+n2ef.
+n2e3f2a
+2nefr
+2n1egg
+neg4l
+n1e2go
+neg4r
+n1e2he
+2nehe.
+2nehem
+2nehen2
+ne3her
+3nehm
+4n3ehr
+2n1ei
+3neia
+4neic
+nei4dei
+4neier
+3neigt
+3neigu
+4neing
+4neinh
+4neinl
+4neinz
+4neip
+neiss4
+ne2ke
+2n1eks
+nek3t2
+ne2l
+3ne3lä
+nel3b
+n1ele
+4nelek
+4nelem
+ne3len
+ne3l2i
+ne4lim
+ne4lit
+3nelk
+n2ell
+nel2l1a
+nel4lei
+3ne3l2o
+3nelu
+n2em.
+4n1emb
+n1emi
+4n3emp
+2n1ems
+4nemu
+3nen
+n4en.
+n2e4n3a
+ne5nac
+n2enb
+n2enc
+nen4dar
+4n1endb
+4n1endd
+4n1endf
+n1endg
+4n1endh
+4n1endk
+n1endl
+4n1endp
+4n1endt
+4n1endw
+ne2n1e2b
+nen3ei
+nene4m
+nenen1
+ne4nene
+ne2neu
+n2enf
+4n1engb
+nen4gen
+4n1engs
+4n1engt
+n1engu
+n2enh
+ne4n3i
+n2enj
+n2enk4
+n2enm
+nen4nar
+ne2no4
+nen3s2e
+nen3sk
+nen3s2p
+5n2en3t2a
+4n1entb
+4nentd
+4nentf
+5n2enti
+4n1entl
+4nentn
+5nentr
+4n1ents
+4n3entw
+4nentz
+ne4n3u
+n2env
+n2enw
+nen5z2e
+ne2o3b
+ne2oh
+ne2or
+neos4
+3nepa
+ne2pen
+2nepf
+ne2pi
+ne2pos
+nept4
+n4er.
+ne1ra
+ne2ra2b
+ne2rac
+ne2r3af
+ne2rag
+ne3r4al
+ne2ram
+ne2ran
+ne2r3ap
+n2erat
+ne2rau
+nerb2a
+4n3erbe.
+4n3erben
+2nerdb
+nere2
+ne2reb
+ne2rec
+5nerei.
+n1erf
+4nerfas
+3nerfr
+2nerfü
+2ner3g4
+3nergr
+n1erh
+4n3erhö
+3neri
+n2erj
+n1erk4
+5nerka
+n2erkö
+n2erli
+2n1erlö
+n1ermi
+n2ern.
+2n1ernä
+4n3erneu
+2n1ernt
+n1eros
+n1eröf
+ne1rös
+n2ers.
+2n1ersa
+4n3ersts
+nert4
+3nert.
+ne2rup
+n2erv
+4nerwar
+2n1erz
+nerz2a
+3nes
+n2es.
+ne2sal
+nes2an
+ne2sei
+ne2s1ev
+2ne3sh
+nesi1
+ne3ska
+ne2s1of
+ne2s1or
+ne2s1pa
+4n1es2si
+nes4sig
+ne1sta
+ne2ste
+nes3ti
+4n1est3r
+4nesyn
+3neß
+ne2tab
+2ne4tag
+net1ak
+ne2t1an
+2ne2tap
+2n1e2tat
+ne4te2l
+ne2th
+ne4t3ha
+ne3the
+ne3ti
+ne4tin
+n4ett
+net3ta
+net3te
+net3tr
+2n1e2tu
+net4zer
+net2z1i
+ne2u
+neu1c
+neu4ere
+neuer4f
+neuer4k
+neuer4r
+neuer4s
+neuer4w
+neu3g4
+n2eun
+2n1eup
+neur2
+3n2evi
+ne2vol
+n2ew
+2n1ex
+5ney
+3nez
+3né
+2n1f
+n3f2al
+nfalt4
+n3f2ang
+nf4ar
+n3f2ä
+n3f2en
+n3f2er
+nf2es
+n4fex
+nff4
+n3fi
+nfi4le.
+nf4le
+nf2o
+nfo1s
+nf4r
+nf3s2
+nf2tan
+nf2t3r
+nft4st
+nfts3tr
+nf3tu
+n2f1u
+4n1g
+n2g1a2c
+ng1ad
+n2g1ak
+ng1a2me
+ng1ams
+nga2n
+ng1and
+n2g1ans
+ng1ant
+n3g2ars
+n2g1a2v
+n2g1äl
+ng3d4
+n2g1ein
+ngelb4
+nge3l4ei
+n3g4en
+n5gene
+nge5nerw
+ngen3sa
+nge4ram
+n2g1erg
+ng3erse
+nger4zä
+n3g4es
+nge3s4a
+nge3sp
+ngg3s
+ng3hu
+n2g1id
+ng2lad
+ng2läs
+n2glic
+ng4lok
+n3glot
+n2gn
+ng3ne
+n4g3ni
+ng4nom
+ng2nu
+ng2ob
+ng1opf
+ng1or
+n2gö
+n2g3rai
+ng4ran
+n2g3rat
+ng3roc
+ngs3au
+ng4scr
+ng4s3e4h
+ng4sek
+ng4sens
+n4gt
+ng3ts
+n2gum
+ngung4
+ngzei4t
+4n3h2
+n7halts
+n5he
+nhe2r
+1ni
+3n2ia
+ni3ak
+nibb4
+ni1ce
+n1id
+3n2id.
+ni2de
+3n2i3de.
+4nidee
+n2idi
+ni3d4r
+2n3idy
+n2ie
+nie3b
+ni1el
+nie3l2a
+nie4n3
+ni3ene
+ni3eni
+nie4rei
+ni4erna
+nie2sa
+ni2eu
+nife4s3
+ni1fl
+ni2g1a2
+2n3i2gel
+2niget
+nig3li
+ni2gn
+ni2gre
+nig4san
+nig4sp
+nihi3
+ni2kar
+3nike
+ni2kel
+ni3k4erh
+ni2ki
+nik3ing
+ni2kor
+ni2k3r
+nik3t4
+3n2il
+ni3l2a
+ni3l2i
+4n3imp
+n1in1
+3nin.
+n2ina
+nin2ac
+ni2nal
+3n2inb
+2nind
+2ninf
+3ning
+ning4s
+2ninh
+4nink2
+3nino
+ni2nor
+3n2inp
+2nins
+n2ins.
+4n3int
+n2i3nu
+4n3inv
+3n2inw
+ni2ob
+ni3ok
+ni3ol
+ni3ora
+n2ip
+ni4ron
+n1irr
+3n2is
+ni4sam
+ni2san
+ni2sä
+nis3cha
+ni4schw
+ni2s1e
+ni3se.
+ni2som
+4nisot
+ni2sp
+ni3spi
+nis3s4
+ni2s1u
+2nit
+3nita
+ni2ti
+nit2o
+3nitr
+nit3s4
+nit2ta
+nit6tele
+nit6ter6g
+nit6t5er6k
+nit4tra
+nitt3ri
+nitt4sa
+ni3v2
+3nix
+2n1j
+4n1k
+nk1abr
+n2k1ac
+nka2ge
+n3kal
+n4kalg
+nk1ang
+nk1apf
+nk3art.
+nka3sc
+n2katm
+nk1aus
+n2kaut
+n2k1äh
+n2k1äp
+nke2c
+nk1ei.
+nke4lei
+n4kelem
+nke4na
+nken4te
+nk2er
+n4k3erle
+nke4ros
+nk3ersa
+nke2t
+nk1eti
+n2ketu
+nk1id
+n2kim
+nk1inh
+n2k1ins
+n4klade
+n3klag
+nk3leis
+n2k3len
+nk3les
+n3klin
+nk2lo
+nk4nac
+nk4neb
+n2knis
+n2knit
+n2k1o4be
+n2kopt
+nko2r
+nkord2
+nk1ori
+n2k1ort
+n2köl
+nk4rab
+nk3rät
+n4kre.
+n2k3rel
+n2kren
+nk3rep
+n2k3rez
+nk3ro
+n2krol
+nk2sal
+nk2se
+nk3sen
+nk2so
+nks2ti
+nk3s2z
+nk2tak
+nk2tan
+nk4tau
+nk4tent
+nk4terg
+nk4t3ern
+nkte3sk
+nkt2et
+nk2tin
+nkt1it
+nk2top
+nkt1r
+nkt3ric
+nk2tro
+nk2tru
+nkt4sen
+n2kum
+nk1ums
+nku2n
+nk1urh
+n2küb
+2n3l2
+nla3ge
+nle2ga
+nle3x
+2n1m2
+n3ma
+n3mä
+nmen2s
+n5mi
+4n1n
+nna2be
+n2nada
+n2nalg
+n2n1all
+n2nan
+nna3st
+n2nau
+n3nec
+nn2ei.
+n4nein
+n3nelb
+nne4le
+nne3lu
+nn2ens
+nner4ei
+n6n5ereig
+nner4fü
+nner6geb
+nn4ergr
+nn2erh
+nn2erk
+nner4la
+nn2ero
+nne2rö
+nn3erwa
+nner6war
+nner2z
+nne4s1e
+nn2eu
+nn2ex
+nn3f
+nng4
+n3n2i
+n4n3iso
+nnis3t
+nno2b
+nno3be
+n2nof
+n2nop
+nno2r
+nn1ori
+nn4sam
+nn3se
+nn3s2p
+nnst4
+nn4stoc
+nn2stö
+nn5t2a
+nn2th
+n2n1uf
+n2n1unf
+nn1ur
+nnvoll4
+nnvol5le
+1no
+3no.
+no5at
+n2obel
+2nobj
+no2bla
+n2oble
+3noblo
+3noblö
+2n1ob2s
+no1c
+noche4
+noch4r
+2no2d
+no3dr
+no2ed
+n1of
+no2fe
+2noff
+2n1oh
+n2ohe
+no3id.
+2n3okk
+nok2l
+n4ol.
+n3ole
+no2leu
+no4lig
+no2liv
+2no2ly
+3nom2e3
+3nomp
+non2e
+n1onk
+nons4
+n1ont
+2nony
+3n2opa
+no2per
+no2pi
+n1ops
+3nor.
+nor2a
+no2rad
+n2o1rak
+no3ral
+no3r4ar
+2norc
+nor4da
+3nordb
+nor4des
+nor2d5r
+no3r2e
+2n1org
+3norh
+3n2orl
+5norm
+norm2a
+nor3mal
+3norö
+3nors
+2n1ort
+3n2os.
+nos2e1
+no3sh
+no5sk
+no2s3p
+2no2sti
+nost1r
+2nostv
+nos2u
+no2tan
+no3tart
+no2tä
+not1e4i
+no6tentr
+no2ter2
+noterb3
+no2tex
+not3h
+no2tho
+no2t3in
+no2t3op
+no2tr
+3nov
+2n1o2x
+3noz
+2nöd
+4nö2f
+4n1ök
+4n1öl
+n2ör
+1n2öt
+4n3p4
+npa2ge
+npa2s
+npf4
+npro1
+npsy3
+2n1q
+6n3r2
+nran2
+nräu3s
+nrebe2
+nreli1
+nre3s4z
+nrö2s
+nrücker6
+4n1s
+n3sabo
+n2s1a2d
+n2s1agi
+ns3a2k
+n2sall
+ns4alp
+n2salt
+ns4anat
+n2sanm
+nsa2r
+n3s2arg
+n3sark
+nsa2s
+ns4ath
+nsau4r
+nsau2s
+n2saut
+ns2av
+ns2ax
+n2s1än
+ns2äug
+n2s1äus
+n3sche.
+n4schef
+nsch5eul
+n4schl.
+nscht4
+n3schu
+nsch7werd
+ns4cr
+ns1eb
+ns2eh
+nse2ha2
+nseh5ere
+nsei4n3
+n4seinf
+n4seint
+ns2ele
+ns3elem
+n2sem.
+n2sene
+nsen4sp
+n2sepo
+n2s1erf
+ns1erg
+n2serh
+n2s1erk
+ns4erko
+ns3erle
+n4s3erne
+n2serö
+ns1ers
+n4sersc
+ns3ertr
+n2s1erw
+n2serz
+n2seth
+n2sety
+n2s1eu
+ns2ext
+nsfi2l
+ns1id
+nsi4den
+n3sil
+n2simp
+ns2inf
+n2sini
+nsinn2
+nsinns3
+ns3int
+n3sis
+n4siso
+nsi4te
+nsi2tr
+n3s2kal
+n3s2kel
+ns2kis
+n3skle
+n3s2ky
+n3smara
+n2s1o2d
+ns1of
+n2soff
+ns4om
+n4s1ont
+n2s1op
+ns2orc
+n4s3ort.
+ns2pac
+nspa2g
+n3spe
+ns4pek
+ns2pel
+n5s4pen
+n4speri
+n4spers
+n2sph
+n3s2pi
+ns4pie
+ns4pir
+n2spo
+n2sprä
+n4s3prie
+n2spro
+nsrü2
+ns3s4
+ns3tabl
+ns8tagent
+nst1ak
+n4stale
+nsta2n1
+n3stand
+nst3ane
+n3star
+n2stas
+n4stat.
+n6staten
+ns4tati
+n4stats
+n3stäm
+n3s4tän
+nst5eife
+nst7einhe
+ns4tent
+ns2tep
+nst5erge
+n3steri
+n5s6terne
+n5s6terns
+ns4teu
+ns2ti
+n3s4tic
+n3stif
+n4stilg
+n3stim
+n2stob
+nst5opfe
+ns4tor
+ns4tric
+n4strie
+n4strik
+ns4trip
+ns6trun
+ns2tu
+nst3u4t
+ns4tüm
+n3suf
+ns2um
+ns1un
+ns2ung
+ns4unk
+ns2unw
+ns4unz
+n2s1urs
+n2sut
+n3sy
+ns4zene
+4n1t
+n3t2a3c
+ntak4ta
+nta4lin
+n4t1all
+nta2lo
+nt2alp
+nta3ne
+n4tansp
+nt1ant
+n4tanza
+n3t2arb
+nt1ark
+n3t2arm
+n3taro
+nt1ar3t
+n4tarti
+nt3artu
+n3t2arz
+n2tath
+nt1äm
+n2t1äu
+nte3au
+nte1e
+nte3g6
+nt1eh
+n3tehe
+n2teig
+n4t1ein
+n2t1eis
+nte4lin
+n2t1e2mo
+nt4en
+nte4na
+nten6te.
+ntera2
+nte6r5eis
+nt4erh
+nt4erk
+nt4erm
+nt4ern
+nt4ers
+nt4ert
+nte3sa
+n4t1es4s
+nte2st
+n6testri
+n2t1e4ta
+nteu3
+nteu6eri
+nte3v
+ntge4n
+nt3hel
+nt3ho
+nt4hos
+n3thr
+nt4hu
+n2t5hum
+nt4hy
+n3t2i
+nti3c
+ntim3p
+ntine4
+n4t3inf
+n4t3inh
+ntini1
+n5t4lem
+ntmen2
+ntmo4
+ntni2
+ntnis1
+ntopf3e
+n4torg
+n4t3o4rie
+nto1s
+nt4ral
+nt1rau
+nt4raum
+nt3rea
+nt3rec
+n5t4ree
+nt3reif
+n5trep
+nt4repr
+nt3rich
+n4t3rieg
+nt4rig
+n2troh
+n3trop
+n2t3rü
+n4ts
+nts2ah
+nt3sp
+nt4spar
+nt5spe
+nts2t
+ntt2
+n3tub
+ntu4re.
+ntu1s
+n3tü
+nt3z
+1nu
+3nu1a
+nu4ale
+nu3a2r3
+nubi1
+2nu1c
+3nud
+nude2
+3nue
+nu2es
+nuf2
+nu2fe
+3nug
+2n1uh
+3nuhi
+4nuhr
+3nui
+nuk4
+nu3kl
+nu2kr
+nul2l1a
+nulle2
+nul4l3eb
+nul4lei
+n2um.
+nu2ma
+2n3umb
+4numf
+4numg
+2numl
+3numm
+2numr
+2n1ums
+2n1umv
+4numw
+2n3umz
+nu4n
+4nuna
+4n1une
+3n2ung4
+4n3ungl
+4n1uni
+n3unk
+2nunr
+nun3s
+4nunt
+4nunv
+4nunw
+3nuo
+2nup
+2nur
+nu2ra
+nu4r2i
+nur3s
+nur2z
+3nu2s
+nu3sc
+nu3se
+nu3spo
+nuss3er4
+nus6serl
+3nut
+nu2t1a
+n3uto
+nu4t3r
+3nuu
+3nux
+3nuz
+3nü.
+2nü4b
+nür1c
+3nüs
+1nüt
+2n1v2
+n3ver
+n3vl
+nvoran4
+2n3w
+1ny.
+1nyh
+n1yo
+1nyr
+1nys
+1nyw
+4n1z
+n2z1ach
+n2z1a2g
+nza2k
+n2zan
+nz3a4ne
+n3zani
+n2zar
+nza2s
+n2zat
+n2z1au
+n2zän
+n2zär
+nze4l3a
+n6zenerg
+n4zen4se
+n4zentl
+nz3erem
+n2z1erh
+nz1erl
+nzer4lö
+nz5erste
+nzer6tra
+n4zerwe
+n3z2es
+nze3sk
+nze2t
+nz1eta
+nze3u4t
+nz1id
+nzi2ga
+nzig4s
+n2zinh
+n2z1ini
+nz1int
+nz3le
+n2zof
+n2z1op
+n2zöl
+nz3s
+nz1wa
+n2z1wä
+n2zwet
+n2zwir
+n2zwö
+n2z1wu
+ño1
+2o3a2
+o4a3bi
+o4ac
+oa3che
+oa3chi
+o4ad
+oa3de
+oad4st
+oa3in
+oa3k2e
+oak1l
+o4a3la
+o4a3mi
+oa4n
+o2a4r
+o2as
+o5ass
+o4at
+o5au
+o1ä
+o1b
+2ob.
+o3b2al
+ob2am
+ob2as
+ob1auf
+2o3b2ä
+2obb
+ob2e
+2obe.
+2obea
+2o3bec
+2obef
+o2b3ein
+2oben
+obe4na
+oben3d4
+o2ber
+o3ber.
+o4berb
+ober5eis
+1oberf
+ober3in
+oberin6g
+obe4ris
+7oberungs
+2obev
+2obez
+2o3b2i
+obi4t
+ob3ite
+3obj
+ob1la
+ob3lei
+1ob3li
+2oblo2
+2ob2lö
+ob2lu
+2obo
+ob1or
+2obö
+ob3rei
+2obrü
+ob3s2h
+ob3sk
+obs2p
+ob3sz
+2o3bu
+o4bunt
+obu2s
+obu2t3
+2o3bü
+o4büb
+2oby
+oby4t
+2oc
+o3ca
+oc1c
+o1ce
+och1a
+ocha2b
+ocha2r
+o1che
+oche4b
+o2ch1e4c
+och1eh
+och1ei
+oche2l
+ocher4k
+ochi4d
+och3l
+och3m
+och1o
+och3ö2
+och3r
+och1s
+ocht4
+o1chu
+ochu2f
+och3u4t
+och1w
+o1ci
+o1ck
+o2ckar
+o2ckau
+o3cke
+o6ck5ersc
+o3cki
+o4ckin
+ock3sz
+ock3ta
+o1cl
+o3cu
+o1ç
+o1d
+2o3d2a
+od3ak
+od2dr
+o3dec
+o3d2e3i
+odein3
+ode4l3ag
+ode2n1
+ode2s1e
+ode3sp
+o3dex
+2o3dia
+odi3c
+2odif
+2o3dir
+odium4
+2odn
+o2don
+odo4s
+2odr
+o2dre
+odt4
+2o3du
+o3dy
+2o1e2
+oe3di
+oe4m
+oen1e
+o3er
+o4e3s
+oe4sc
+o2e3t
+o3et.
+oet4h
+o3ets
+2ofa
+ofa2c
+of1a2d
+of1a2g
+of2ang
+of1au
+2ofä
+o2f1e2b
+o2f1ec
+o2f1e2d
+o2f1ei
+o2fent
+2o3fer
+o4f1erb
+2o3f2es
+o2f1e2t
+of1eun
+of2f1a
+off3erz
+of2f1in
+1offiz
+of2f3l
+of2fo
+of2f3r
+offs2
+off3sh
+off3si
+off3sp
+off3t4
+of2fu
+2ofi
+ofi3k4l
+ofi3s4
+2o1fl
+of3le
+of3li
+of4lö
+2ofo
+2ofö
+2o1fr
+of3rä
+of4rü
+of2s1
+of4sam
+of3sä
+ofs2ch
+of4sen
+of3sta
+of4staf
+of3str
+2oft
+oft2a
+of2tei
+of3th
+2ofu
+of3ur
+2o1g
+o2g1ab
+o2g1ac
+oga3d
+og1ang
+og1ans
+o2g1ei
+ogeld2
+oge2l1i
+ogener4
+ogeni3
+ogen4id
+ogerätein8
+og2gl
+o3gh
+ogi2er
+ogin1
+o2g1ini
+og1l
+og3le
+og2lo
+o3g4n
+ogo4i
+og1o2ri
+og3s2p
+og1ste
+og3sti
+2o1ha
+oh1alk
+o1hä
+o1he
+o3he.
+oh1eis
+o3hem
+o3hen.
+ohen3s
+o3her.
+o3here
+oh1er4t
+oh1er2z
+o3hes
+2o1hi
+2ohl
+ohl1a
+oh2la2d
+oh2lä
+oh3lec
+ohl1ei
+oh3lep
+ohler2
+oh4lerg
+oh4l3erh
+oh4lerw
+oh3lo
+oh4l1o2r
+ohls2e
+oh2lu
+ohm2
+1ohmi
+oh4n1ac
+ohn1ap
+oh3nee
+oh2ni
+1ohnm
+oh2n1o
+ohn3sk
+2o1ho
+ohol1e
+oho4len
+o2h1o2p
+2ohö
+oh3öl
+ohr3a2
+oh4rat
+oh2rel
+oh2rem
+ohren3s
+ohrer2
+oh4rerg
+oh3rie
+oh4rin
+oh2rol
+ohrt4r
+oh1s
+o1hu
+oh1w
+2o1hy
+2oi
+o1i2d
+oi4da
+o3ie
+o1im
+o1in
+o4ine
+oi2r
+o2isc
+o3isch.
+o1ism
+oiss2
+oi1th
+o1i4tu
+2o1j
+ojek8tori
+2o1k
+ok2a
+oka3b2
+ok3ac
+oka3i
+oka2la
+okale2
+oka6lere
+okas4t
+ok2e
+3o2kel
+oki4o
+ok1lä
+ok2li
+ok2o
+oko4pt
+ok2so
+ok2s1p
+ok5t2
+3okw
+2ol
+o1la
+ol3abu
+olaf4
+ol1ant
+ol2ar
+ol4arm
+olar3s2
+o3l2as
+olast4
+ol1a2v
+4o1lä
+ol1ät
+4olc
+ol2chr
+ol4d1am
+ol2dä
+ol2d1ed
+ol2dei
+ol4d3eng
+old5ersa
+olde2s
+ol2deu
+ol2dim
+ol2d3o
+ol4dr
+4ole.
+o2l1ef
+ol1eie
+o2l1eis
+oler2
+o2l1ert
+ole1s
+ole3s2t
+ol2e3u2
+ol1exz
+o1lé
+ol2fa
+ol2fem
+olf3ere
+ol2f3l
+olf1r
+ol2f3ra
+olft4
+olge4ne
+ol2gl
+ol2g3r
+ol2i
+olie4n1
+oli2er
+oli3k4
+oli5tu
+3oliv
+oli3ze
+ol3ke
+ol2kl
+ol2k3re
+ol2l1ac
+ol2lad
+ol2l1ak
+oll3am
+ol2l1au
+ol2l1e2b
+ol4l1e2c
+ol2l1ei
+ol2lel
+oller6ge
+ol4ler4k
+ol4l3erw
+ol4l3ess
+oll3s2a
+oll3sp
+4olo
+ol2of
+olo1p
+ol1ort
+ol3s2k
+ol4ster
+ol3t4h
+o1lu
+olu2th
+ol2y
+ol2z1a2
+ol3zan
+ol4z3ern
+ol2zim
+ol2zo
+ol2zw
+2om
+o2mab
+oma2bl
+o2m1a2ge
+om1alg
+om1all
+oma4ner
+om3ansc
+o4mante
+o2m1ap
+o2m1ars
+o2m1art
+omar4te
+o4m1a2sy
+o3mat
+o2m1au
+o2meb
+om1ebe
+o2m1ef
+o2m1ei
+o2mel
+o3meld
+o5men.
+om1ene
+o4mep
+om1er2h
+omer4s
+o2meru
+om1er2z
+omi2c3
+omiet1
+o3mig
+om1ind
+om3ing
+om1ins
+o2m1int
+om3ma
+omm2e
+o4mn
+3omni
+4omo
+o2m3oa
+o2m1org
+om1o2ri
+om3pf
+oms2
+om3sk
+om3t4
+o2mum
+o4munt
+2ona
+on3a2b
+ona3g
+o3nal
+onaler6e
+on3ann
+onan6z5ei
+on1ap
+o2narb
+ona3th
+onat2s
+on2au
+on3auf
+2onä
+on1äh
+2onc
+on2dan
+onderer5
+onde8rers
+ond1r
+on2dra
+on4drin
+ond3sk
+2one
+on1e2c
+o3nee
+o2nef
+one3h
+on3ein
+one2m
+on1ema
+one2n1
+o4n3ends
+on2eng
+onen3s2
+o3ner.
+o2n1erb
+on1erd
+oner4fa
+on1erg
+o2nerh
+on4erka
+on1erö
+on1ers
+o3nett
+on2eu
+on3f2
+2ong
+on3gla
+ong4r
+ong3s2
+on2gue
+2o3ni
+on2i3d
+onie3g
+o4nikr
+o4nim
+o4nind
+on3ing
+o4ninh
+on2inn
+o4nins
+on3k2
+1onke
+3onkel
+onli4
+onlo2c
+2onn
+on3n2an
+on3n2e
+ono1
+o3nod
+o2nof
+o2noke
+on1orc
+on3ord
+ono3s
+onot4
+ons1a
+on4sam
+on2seb
+onsen1
+onse4t
+onsi2d
+ons3ing
+on4s3l
+ons1p
+onst2a
+onst4r
+ons5tri
+on3ta
+on2t1eb
+on2te2l
+ont5end
+on4t3erl
+on2th
+on4t3rat
+2onuk
+o3nur
+2onut
+on3v
+1ony
+on3z2
+onze3in
+o1ñ
+1oog
+oo2ka
+oo2k3l
+oo2kn
+oo2mo
+o1op
+o1or
+oor3d
+oo4sk
+oos3s4
+oo2su
+oo2t1a
+oot1ei
+oo4t3h
+oo2tr
+oot2st
+oo2tur
+2o1ö2
+2op.
+o1pa
+opab4
+op1akt
+opa2le
+o3pa5s
+opa3s4t
+1ope
+2ope.
+o1pec
+2o1ped
+op1ef
+2o1pei
+o1pek
+2opel
+ope3l4a3
+2o1pen
+o2pera
+op1erh
+2opf.
+op2f3a
+op3fah
+op2fä
+o2pfe
+op2fin
+opf3la
+op1flü
+op2fo
+4oph2
+o3phe
+o1p2i
+opi5a4
+opi3er.
+opi5ers.
+opie4r3u
+opin2
+2opl
+op3lag
+o2p3le
+op3li
+o3p2n
+2o3po
+opo2la
+op2pan
+op4pl
+1oppo
+op2p3r
+2oppt
+2o1pr
+3o4psi
+op3sz
+1op3t4
+o2pum
+2opy
+2o1q
+2or.
+or1a
+2ora.
+o1raa
+2or3a2b
+o2rabb
+o2r3add
+or3adr
+o1r2ag
+1orake
+o1ral
+oral3l
+o4r3alm
+or4alt
+or2am
+or3a2mi
+o1ran3d4
+oran2f
+o4rang
+oran2m
+oran4ze
+or3ap
+2orar
+or3arr
+o1ras
+o2r3att
+2orau
+oraus6wa
+2o1raw
+o3rä
+or1änd
+or1ät
+orb2l
+or1c
+2orca
+or2ce
+2ord.
+4orda
+ord1am
+or2dar
+or2dau
+2ordb
+ord3eng
+orde4s
+or2deu
+or4d3ing
+or2d1ir
+or2dit
+1ordn
+or2do2
+2ordr
+ord3s2t
+ord3t
+2ordu
+2ordw
+2ore
+ore2a
+o2r1e2b
+o2r1e2ck
+o5ree
+or1eff
+ore2h
+or1eig
+oreli1
+orems2
+o2r1er
+o3r2ere
+orer1i
+o3r2ero
+or1e2th
+o2r1eu
+2orf
+or2far
+orf3li
+or3g4a
+2orget
+or3ghi
+2orgia
+orgi1e
+or2gl
+or3gla
+or3gle
+or2gn
+2orgr
+2orh
+2oria
+2oric
+4o3rie.
+o3rien.
+o6rienti
+o3rier
+4oril
+or1ima
+ori4mi
+4orin1
+o2rind
+2oris
+2oriu
+2ork
+or3k2a
+or4k3ar
+ork4r
+ork2s
+2orm
+or2mam
+or4mans
+orm3asp
+or2m1eb
+or4m3erf
+or4m3er4g
+or2mor
+orm3ord
+or2mum
+ormu4n
+or4muni
+or4munt
+ormwa5
+or2n1a2c
+or2nal
+or2nar
+or5ne.
+or3ni
+or4nin
+or3no1
+2o1ro
+o2r1ob
+or3oly
+oro3n2a
+oro2pe
+or1opf
+o2ro2r
+o3rou
+o2r1ox
+2o1rö
+2orp
+2orq
+2orr
+orr4a
+or3r2e
+or3rh
+2ors2
+or3s4a
+or3sh
+or3si
+or3sk
+or3sz
+or2t1ak
+or2t1an
+orta2r
+or2t1au
+or2tef
+orte4n
+or4ten5g
+ort3erb
+or4t3ere
+ort3erf
+orter6fa
+ort3erg
+or4terk
+or4t3erl
+orter6sc
+or2t3e2v
+or2the
+or2tin
+or4t3off
+or4to2r
+or2tö
+or4trau
+or4t3räu
+ort3re
+or2t1um
+2o3ru
+or2uf
+or1uh
+orum4s
+o4r3un
+o5rus
+o2rü
+o2rya
+or3z2e
+2o3s2a
+os3ad
+osal2
+osa1s
+2osc
+o2s3ca
+osch3ar
+o3sche
+osch3le
+os2co
+2ose
+ose1e
+ose1in2
+os2el
+ose2n
+o2s1er4k
+os2ex
+2osh
+o3s2hi
+os2ho
+os4hu
+2osi
+o3sk
+o4ska
+os2kal
+o4ski
+2os2kl
+2os2ko
+o4skr
+os2lo
+1osm
+os4mog
+2oso
+osol1
+o2sö
+2os1p
+os2pac
+os2pe
+os3pec
+o3sphä
+o3s2po
+os4pot
+os2pra
+2oss
+os6s3a2c
+oss3ala
+os2san
+oss3and
+os4sä
+os2sei
+os4s3en4k
+os4s3enz
+os2s1ep
+oss2er
+os4s3er4b
+osser4e
+oss5erei
+os4s3er4f
+os2sik
+os2sim
+os2s1o2
+os4son
+os2sp
+oss1pa
+os2s3t
+os4sto
+ost1a
+os4tam
+os3tarr
+osta4s
+os4tat
+ost1ei
+oste2n
+oster3e
+ost5erwe
+oster8wei
+ostes5s
+ost3eur
+os2t3h
+os2tid
+os3til
+os2tit
+ost1o4b
+os3toc
+os4t1or
+o2stö
+ost3ran
+ost3rä
+ost3re
+ost3rot
+ost3uf
+os2tug
+2osu4
+os1um
+2o3sy
+o3s4ze
+2oß
+o2ß1el
+o2ß1en2k
+o2ß1enz
+oßer2
+o2ß1erb
+o2ß1ere
+o2ß1erf
+oß1is
+2o1t
+o3tabe
+o2t1abi
+o2t1ah
+o2t1ak
+o3tal
+o3tam
+ot1ant
+ota2s
+ot1ast
+o2t1au
+o3tau.
+ot1ä
+o2teb
+ote1i
+o4t1eib
+o4t1eic
+ote3i4n
+o4t1eis
+ote4l1a
+ote4lin
+o3tem
+o4t1emi
+ot2em3p2
+ote4na
+o4tentb
+ot3entr
+ot1erb
+o4t1er2l
+o4t1erw
+ote2s
+o3the
+o4them
+o2t3hi
+o2thr
+4oti
+ot2id
+o2til
+o2t1i2m
+ot2in
+ot3inh
+otli4
+ot2o
+otob4
+ot3opf
+oto4rei
+oto1s
+o2t1ö
+o3tran
+ot3rat
+ot4rau
+ot3re
+ot3rin
+ot3roc
+ot3rus
+ot2s3at
+ot3sch
+ots2en
+ots1o
+ots1p
+ots2pe
+ot2spr
+ots3tau
+ot3sti
+ot3stra
+ott1a
+ot2tan
+ot4ta2s
+ot2teb
+ot4terh
+ot4terk
+otte2s5
+ot2t3h
+ot4tim
+ott2o
+ot2t3r
+ot3t4ra
+ot4tri
+ot3t4ru
+ot1url
+o3tü
+ouff6
+ou1f4l
+ou4ge
+ou3gl
+o1uh
+ou1is.
+ou2le.
+ou2les
+2o1um
+2o2u2n
+oun4ge.
+4o4ur
+oure2
+ou2ret
+ouri4
+ourie4
+ourme4
+our4ne.
+ou3s2i
+3outp
+out3s2
+ou3tu4
+2o1ü
+o1v
+ov2a
+2ovel
+o3ven
+ove3s4
+2ovi
+oviso3
+2ovo
+2o1w
+o3wec
+owe2r1
+o2wh
+o3wi
+o2wu
+o1x
+2ox.
+ox2a
+2oxk
+ox3l
+o2xu
+1oxy
+o1yo
+oy1s2
+2o3z2
+3o4zea
+ozen4ta
+ozes4sc
+4ozi
+ozir3
+ozon1a
+oz3z
+órd2
+ö1b
+öbe4l3i
+öb2l
+ö2b3le
+ö2b3r
+öb2s3
+ö1c
+öch1l
+ö2chr
+öch2s
+öch4ste
+öchst5ei
+öchst3r
+öchs4tu
+ö3cke
+ö1d
+ödel3l
+öde1r
+ödi3
+ödien3
+ödin3
+öd2st
+1ödu
+ö1e
+1öf
+öf2fl
+öf3l
+ö1g
+öge3le
+ögen2s1
+ö2g3l
+ö2g3r
+ö1he
+öhe4n1
+öhl2e4
+öhre4
+öh3ri
+ö1hu
+ö3ig.
+ö3isch.
+ö1ke
+1ö2ko3
+ök3r
+ök2s
+ö2l
+3öl.
+öl1a2
+öl1ei
+öl1em
+öl4en
+öl2f1ei
+ölf2er
+öl1in
+ölk4e
+öl2k3l
+ölks4
+öll1a
+öl3le
+3ölm
+öl2nar
+ölo2
+öls2
+öl3sa
+öl3sz
+öl3tu
+1ölu
+ölz2w
+ö1m
+öm2s
+ön2e
+ö3ni
+önizi1
+önn2e
+ön2s
+ön3sc
+ön3sp
+öo1
+öo2ta
+öoti1
+2öp
+ö1pe
+öpf3l
+öp4s3t
+ör3a2
+ör2b3l
+ör1c
+ör2dr
+ör3dra
+ö2r1ec
+ö2r1ei
+ö2r1e2l
+ö2r1em
+öre2n1
+ö2r1ene
+ö2rent
+ö3r2erb
+ö2r1er2e
+örer2f
+ö2rer2g
+ö2rer2l
+ör2err
+ör2erw
+ö3r2erz
+ör1ess
+ör2f3l
+ör2gl
+ö2rim
+ör2kl
+örn2e
+örner4v
+ör1o2
+örpe2
+örs2e
+ör3sk
+ört2e
+öru4
+ö2r1une
+ö2sa
+2ösc
+ö2sch3a
+ösche2
+ö4sch3ei
+öscher3
+ö6sch5erf
+ö6sch5eri
+ö2schi
+ö2sch1l
+ö2sch3m
+ö2schn
+ö2schw
+ös1ei
+ö2sein
+öse3str
+ö3set
+2ösl
+ö2sp
+ös2s1c
+ös2st
+ö2st
+öst1a2
+ös3te
+ös2th
+ös3tr
+ö3su
+ö1ß
+ößen3
+öß2ti
+ö1t
+ö4t3a
+öte4n1
+ö2t3r
+öts2
+öt2sc
+öt2tr
+ö1v2
+ö1w
+ö1z
+öze3
+özes4
+1pa.
+1paa
+1pac
+p2ad
+pa3da
+2p3a2dr
+pa1fr
+1pag4
+pa3gh
+pa1ho
+1pak
+pa1k4l
+pak4to
+3pala
+pala3t
+3palä
+3pal2e
+pa3l2i
+1palm
+pal2ma
+pal2mä
+pal2m1o
+2palt
+pal2ta
+pal4tei
+pal2tr
+pa2m3a
+pa2nar
+pa4n3at
+pan3d
+pan4ds
+pa2neu
+panf4
+pang4
+pa4nisl
+pank4
+2panl
+2pann
+panne2
+pan4n3eb
+1pa2no
+pan3sl
+pan3t4h
+1panto
+2pantr
+panz2
+pan5ze
+1pap
+papi2
+papieren8
+papie8r7end
+pap2pr
+pap4s
+pa1q
+1para
+pa4r3aff
+par3akt
+pa4rant
+2parb
+1p2arc
+par3d
+2parer
+parer8geb
+1parf
+2parfö
+2parg
+pargel6d
+1park.
+par4k3am
+par4kau
+par4kr
+1park1s
+par3m2
+par3ne
+1pa2ro
+2parp4
+2parr
+4parta
+1parti
+1partn
+3party
+par3z
+pas2e
+pa3s2p
+pas6sein
+passer4
+pas6serg
+pas2s1p
+pa4st
+2paß
+pat1a
+pat4c
+pa5t4e2
+2patel
+1pat4h
+1pati
+1pat4r
+1pau
+2p1auf
+pa3uni
+2pausz
+1pav
+pay2
+1pä
+3pä2c
+pä3cke
+pä4ck3er
+3päd
+päde2
+pä2d1er
+3pär
+3päs
+pä4t1e2h
+pä4tent
+pä4tep
+pä4t3erb
+pä2t3h
+pä2to
+pä4tr
+pät3s4
+2p1b
+2p3c
+2p1d2
+pda4
+1pe.
+pe2a2
+pea4r
+pea4s
+p1e2b
+pech1
+1peda
+1peel
+pe2en
+2pef
+4p1eff
+1peg
+pei1
+2peic
+1peil
+p2eim
+2peis
+pekt4i
+pekt4sp
+2peku
+1p4el
+3pel.
+pe2l1a2
+pe4lai
+pe2l1ä
+peld4
+3pele
+pe4l1e2h
+pe2l1er
+pe2let
+pe2leu
+peli2d
+peli4n
+pe4l3ink
+pel3inn
+pel3k
+pel3l2a
+pell4e
+pell2i
+pe2lob
+3pels
+pel3sp
+1pem
+pe3nal
+pe4nas
+pen3d2a
+pe4nen1
+pe4ni2t
+pe2n1o
+pens2a
+3pen3si
+pen3s2o3
+pens2p
+pen6ster
+1pensu
+pen3sz
+pent2a
+2pentw
+penty2
+1pep
+pe3pi
+pept2
+pe1ra
+per2am
+per3as
+pe2rau
+pe2r1ä
+pere2b
+perer2
+perer3z
+pere1s
+pe3r2i3d
+3perio
+1perle
+3pero
+per4r3an
+1pers
+2perse
+2persi
+3persp
+peru2
+pe3run
+1perü
+perwa4r
+pe3s2a
+pese2n
+1pes5s2
+pe2st
+pes4ter
+pest1o
+3pet
+pet4r
+2pex
+1pé
+2pf.
+p2f1ab
+p2fad
+p2faf
+pf1ai
+p2f1ak
+pf1am
+pf1ans
+p2fa2r
+pf3are
+p2f1au
+1pfä
+p2fär
+p2f1äu
+4pfe.
+p2fef
+p2fei
+pf1eim
+pf1ein
+pfe2l
+p3fen.
+p4fener
+p2fent
+p4f1ep
+pfe2r5a
+p4ferde
+pfer6pro
+pf4es
+pf3f4
+p2f1i2d
+pf1inn
+p2f1in3s
+pfi2s
+pf1lam
+pf4lan
+pf3lä
+pf4leg
+pf3lei
+pf3lo
+p2f3om
+p2for
+pf3r
+pf1ra
+pf4rü
+2pfs2
+pf3sa
+pf3se
+pf3sl
+pf3sz
+2pf3t4
+p2fum
+2p3g2
+pgra2
+1ph
+2ph.
+ph2a
+phal4te4
+p1hand
+3pha1s
+p1hau
+phä1
+3phän
+4phär
+2phb
+2phd
+2p1hei
+phen3d2
+phe4n1e
+phen3s2
+2ph1ers
+2phf
+2phg
+phien3
+phik1a
+phi4kan
+2phk
+ph2l
+2phm
+2phn
+p2ho.
+p2hob
+2phö
+ph4r
+2phro
+2phs
+ph3t4
+2phthe
+phu4s
+phu3t
+2p1hü
+3phy
+2phz
+pi2a1
+piab4
+pia3k4
+pi4ali
+pia3n
+piap2
+pias4
+pi1ce
+pid2
+pi2el
+piel3a
+3pier
+pie2ra
+pie4reb
+pi3gl
+1pil
+pi3le
+3pilo
+pil4zer
+pil2zw
+p2im
+3pin.
+pi2nad
+3ping
+pingen4
+ping3s
+3pins.
+3pinse
+pin3s2p
+pi2o
+pi3o2i3
+pi3onu
+pi3os
+3pip
+pi2pe
+3pirate
+pi3ri
+3pirin
+1pis
+2piso
+pit2a
+pi3t2h
+pit2s
+pitz2e
+pi2z1in
+2p1j
+2p1k2
+pku2
+1p2l2
+2pl.
+3pla
+4p3lad
+p1lah
+pla3na
+p4lau
+pla2y
+3plä
+2p3le.
+ple1c
+ple2e
+p4leg
+ple3n2
+2p3ler
+2plig
+3p4lik
+p4liz
+2p3lu
+plu2s
+2p3m2
+2p1n2
+1p2o
+pob2
+po1c
+3pock
+3pod
+3poe
+po2el
+2poh
+po2i
+po3id
+3poin
+3pol
+po2lan
+po2l1au
+pold2e
+po3li
+polo3p
+pol3z2
+pom2ph
+2pond
+pont2
+po1ob
+po2p1ak
+po2p1ar
+po1pe
+po2pl
+po3pt
+po1rau
+porf4
+por3s
+3portal
+por2th
+3porti
+3porto.
+3portos
+3portr
+por4tre
+por6tric
+poss2
+po4sta
+pos4tag
+po2stä
+pos4tei
+pos3tel
+pos4tem
+po1s4tr
+post3ra
+po2ta
+pot1ar
+3potä
+3pote
+pot2h
+po2t3in
+pott1r
+po2t1u
+po3un
+po2w4
+po3x
+pö2bl
+pö2c
+2p1p
+p2p1ab
+pp1ans
+p2pat
+pp1au
+ppe3e
+pp1ei
+ppeli5ne
+ppels2
+ppel5ste
+pp2e2n1
+ppe4na
+p2p1erz
+p2pf4
+pp1fr
+p2p1h
+p4p1i4a
+pp3l
+p4p1lac
+p4plan
+pp1lä
+p2ple
+pp3oh
+p2p1ö2
+pp3p4
+p2p3ra
+p2p5rä
+p2pri
+pp3rol
+pp3rot
+p2p3ru
+p4ps
+pp3s4a
+pps2p
+pp3sy
+ppt4
+pp5te
+p4p1um
+p2r2
+1prak
+1prax
+p4rä
+1präd
+1präf
+1präg
+1präl
+3präm
+1präp
+3präs
+1präv
+2pre.
+2prec
+3pred
+2pree1
+pre2ei
+2preg
+1prei
+3preis
+prei4s3c
+prei6sei
+2preiz
+1prem
+pren4ga
+2p3rer
+1pres
+press4e
+pri4e
+2prig
+pri2l1
+2pring
+prings4
+1prinz
+pri2t1
+prit3a
+priter4
+prit5t
+1priv
+1pro
+3prob
+pro3be
+2proc
+7p4rod
+3p4rog
+3proj
+4pross
+pro1st
+prot2e
+3proto
+2prott
+2prö
+1prüf
+1prüg
+2prüh
+2prün
+2p1s
+4ps.
+ps1ad
+ps2hi
+ps1id
+p2sö
+ps4pi
+pss4
+p2st
+p3sta
+pst1au
+p3stä
+p3stea
+p3stel
+pst3erh
+ps2th
+p3s2ti
+ps4to
+p3stö
+ps2tu
+p3stü
+3p2sy
+4psys
+ps2ze
+2p1t
+pt1a
+pt2ab
+pta2g
+pt3a4t
+p3te
+p4t1e2b
+p4t3ec
+p4t1ei
+p4tele
+p4temp
+4pten
+p4t1en2g
+p4t1ent
+p4t1ep
+pt3erei
+p4t1erw
+p4t1erz
+p4t1e2ti
+p2t3h
+p3ti
+p4t1in1
+pt3ing
+pto2mo
+pto2p
+p4tos
+pto2w
+pt3r
+pt3s2
+pt4sl
+pts4t
+pt1uh
+pt1um
+p3tung
+pt1urs
+ptü4
+3p2ty
+pt3z2
+1pu
+pu1a
+pub4
+2puc
+pu2dr
+2p1uh
+2puk
+pu2kl
+pu2k1o
+pu2lin
+pul2sp
+pul2s5t
+2pulw
+pum2pl
+3pun
+4pund
+pun2e
+pun2s
+4punt
+2pur
+pu2ra
+pu2rei
+pus2h
+pu3she
+pu2s3t
+3put
+pu5t2e
+put2s
+puzi3
+1püf
+2pül
+pül3l2
+2p1v
+2p1w
+pwa4r
+3py1
+py3t
+2p1z2
+qu4
+que3rel
+quer5n
+que4te.
+1queu
+1ra.
+r1aa
+ra2ab
+2raac
+2raal
+ra3ar
+r2a1as
+r1ab
+ra2b1ar
+r2abä
+1rabbi
+rab2bl
+2rabd
+rabdru4
+ra2bei
+rab2er
+rab3erd
+2rabf
+2rabg
+2rabh
+1r4abi
+2rabk
+r2able
+ra2bli
+ra4b5lo
+2ra2br
+2rabs4
+2rabt
+2r3abw
+1raby
+2rabz
+r2ac.
+ra2ce
+2r1acet
+ra4cheb
+ra2cho
+rach6t5rä
+ra2chu
+r2ack
+1r2ad
+r4ad.
+rada2
+ra4dam
+2radap
+3radar
+ra2dei
+3radf
+3radh
+3radio
+3rado
+3radp
+ra4d1r
+rad5ri
+rad5t4
+ra2el
+r2af
+raf3ahn
+raf3ar
+rafe2
+ra2f1er
+raf3r
+raft5s
+rages4
+2ragg
+ra3g4le
+4ragm
+ra2gn
+r2ago
+1rah.
+rahle4n
+5r4ahm
+r1ahn
+2ra1ho
+ra3hö
+4raht
+r2ai
+2raic
+rail2l
+2r3air
+ra3ke
+2rakk
+3ra1k4l
+ra2kre
+r3a2kro
+2rakti
+ra2kus
+3rakü
+2rakz
+r2al
+r4al.
+ra2la2
+ra4l3ab
+ral1ak
+ra3lamp
+rala4s
+ra2lä
+ral3b4
+3r4ald
+ra4l3end
+ra4lent
+ra4l5ern
+ra3lex
+r4ali
+ra2lid
+rali1e
+ra4lind
+ra4l3ing
+2r3alk.
+2r3alm.
+2ralp.
+4ralpe
+r4als
+ral3sk
+ral3su
+r3alt
+3r4al5t4h
+ra2l3u
+3raly
+rama3s
+ra2mei
+ra2mer
+r2ami
+r2amm
+ram4man
+ram6mens
+ram6m5ers
+ram4m3u
+2ramn
+3ramsc
+2r1amt
+ramt4s
+ran3ade
+r1a2nal
+ra2nan
+ra2nar
+ra2nau
+2ranb
+r2anbe
+r4anda
+r4ande
+ran4dep
+ran4d3er
+3r2andi
+rand3s
+rand5se
+3raner
+2ranf
+2ranga
+ran6g5e6be
+1rangi
+r2angl
+rangs2
+rang5ste
+rani1e
+r3a4nil
+ran3ka
+ran2kr
+ran2kü
+4ranl
+2r1anm
+r2anmi
+r2anmu
+2ranna
+rano2i
+2r1anp
+2ranr
+2rans
+r2ans.
+r1ansc
+ran4spa
+4r5antei
+r1anth
+2rantr
+1ranu
+2ranw
+r2anz.
+r2ap
+2rapf
+2rapo
+ra2pok
+ra2pos
+rap2pr
+2ra2pri
+2r1aq
+r1ar
+r2ar1a
+2rarc
+r2are
+3r4arei
+raren1
+r2arf4
+ra3rie
+rar3in
+ra3ris
+r3a4rist
+4r3arit
+r2ark
+raro2
+ra2rom
+2rart
+2rarz
+rar3zw
+r2as
+r4as.
+ras2a
+ra4schl
+ra3spr
+ra2sta
+r4aste
+ras4t3ei
+r3asth
+ras4to
+2rasyl
+2raß
+1rat
+r4at.
+rat1a
+rat2ak
+ra2tan
+ra2t1ei
+r3atel
+ra4tid
+2ratm
+rat2o
+2r3a2tom
+ra5tor
+rat4r
+2ratta
+2rattr
+4ratz
+rat3ze
+4rau.
+3raub.
+rau3e4n
+2rauf
+rau3fä
+2rau3g2
+3raum
+rau4m3ag
+rau4man
+rau2m1i
+3raup
+4raur
+2rausb
+3raus2c
+2rausd
+2rausf
+2rausg
+raus8gewä
+2raush
+2rausl
+rau2sp
+2rauss
+raus8scheidu
+raus5se
+2rausv
+2rausw
+2rauto
+raut1r
+rau4tra
+rau4tro
+raut5s
+1raü
+r2ax
+raxe3
+r3axt
+4räb
+3r2äd
+4räf
+rä1fr
+4räg
+2räh
+4räm
+3rän.
+3räni
+3räns
+2räp
+2räq
+2r1är
+r2är.
+rä3ra
+rä1ro
+rä2sc
+räse2
+räte1s
+3rätse
+4rätz
+rä2u
+4räue
+räu2s
+räus4c
+räu7schen.
+2räuss
+2räuß
+4räut
+2räx
+4r1b
+r2b1ab
+r3bac
+rba4del
+rb2al
+r2bang
+r2bant
+rba3re
+rb1art
+r2barz
+rb1auf
+rbb2
+rb1ech
+rbe3erf
+rbei5d2
+rbe3inf
+rb3einh
+rbe3int
+r4belä
+rbel2o
+r3ben.
+rbe3r2e
+rber6gin
+rbe3rum
+r2bim
+r2binf
+rbit2a
+rbi3tu
+rb4la2d
+r2blan
+r8blasser
+r4b3last
+r3blat
+r3blau
+r2b3le.
+r3blen
+rb3ler
+r2bleu
+rb2lin
+rb2lö
+rb2ob
+rb3ras
+rb3rea
+r8b7rechts
+rb4sam
+rb2sei
+rb2ser
+rb2s1o
+rb4stä
+rb2su
+rb2u
+rbü4b
+rby4t
+4rc
+r1ce
+rce4n
+r1che.
+r1chen
+r1ch2i
+rch3l
+r3ch4lo
+rch3m
+rch3r
+rch1s4
+rch3sp
+rch3t2a
+rchter6r
+rch1w
+r1ci
+r2ck
+r1cl
+r1ç
+4r1d
+rd2ac
+r2daf
+r2d1ak
+r2d1a2l
+rd2amm
+rd1an
+rdani1
+rd1ara
+rd1ark
+r2darz
+rdär2
+r3de.
+r2dei
+rd2ei.
+r4deis
+r2d1elb
+r2delf
+rdem6
+rden3d
+r4dengl
+rde4nu
+rde3ob
+rde3r4er
+rderin6s
+r4d3ernt
+r3des
+rde3sp
+r4d1ex
+r2d1inn
+rd1iri
+rd1ita
+r2dof
+r3don
+rd1os
+rd3oss
+rdo4st
+r2dö
+rd3rat
+r2drau
+rd4ri
+rd5ris
+rd4rö
+r3d4rü
+rd2sän
+rd3s2k
+rd3s2z
+rdt4
+rd3th
+rdt2s
+r2d1uk
+1re
+3re.
+rea2d
+rea6l5erw
+4re2am
+re3at.
+re3ats
+2reä
+re2b1a
+re2b1l
+reb1r
+reb3ra
+reb3so
+rech3ar
+4rechs
+2reck.
+2recki
+3red.
+re3da
+4redd
+2redi
+re2dik
+3redn
+3redu
+re1e
+3refe
+4reff
+r2eff.
+3refl
+3refo
+3reg
+rege4l3ä
+4r1egg
+re3gi
+2reh
+re2hac
+re2har
+rehen1
+re4hene
+re4h3ent
+re2hi
+reh1l4
+re2h1o
+re3hol
+re2hü
+r2ei.
+r2eib
+rei4bel
+rei4ble
+2reid
+r2eie
+4reier.
+rei4fei
+4reifel
+2reig
+3reigä
+3reigeh
+r4eigel
+6reigens
+3reigi
+4reign
+3reigru
+rei3l2a
+rei3l2i
+2r1eilt
+3reim
+reim2p
+r1ein
+rein2a
+rei5nac
+rei3nal
+2reinb
+rein4du
+rei3n4e3c
+reinen5
+2reinf
+re4info
+4reinn
+4r3einr
+rein8s7tre
+rein4sz
+rein6teg
+re1in2v
+4reisar
+4reisb
+reises4
+2reisf
+2reish
+2reisr
+reister6
+2reisw
+4reiti
+reit3s2
+3rek
+4re2ke
+4rekk
+r2el.
+re3lat
+2relb
+rel2e
+relea4
+re5lei
+re2lek
+4relem
+r2elev
+2relf
+2relit
+2relix
+r2ell
+rel4lar
+rel4lei
+re3lo
+r2els
+2relt
+relu2
+r4em.
+4remb
+rem2da
+re2m1ei
+r2emi
+re3mig
+2remis
+4remit
+4rempf
+rems1c
+rem4str
+2rem2u
+r4en.
+r2ena
+2rena.
+re4nac
+re3nal
+re4n3an
+2r1endg
+3rendi
+ren3dr
+ren2eu
+5renf
+4rengag
+2rengp
+3renh
+re2ni
+3renl
+3renm
+ren4nar
+ren6nene
+renns4
+renrü2
+ren6sein
+ren6serg
+rens2p
+2rentd
+2rentf
+3rentfo
+2r1entg
+r3enthä
+2r1entl
+2r1ents
+2rentw
+2rentz
+r2enz
+ren6z5er6f
+renzer6l
+ren6z5er6s
+renzer6w
+ren4z3in
+ren2zw
+re2ob
+re1on
+re3or
+3repe
+4re2pen
+2repi
+re2pis
+2repoc
+2r1e2pos
+4repp
+3repu
+3r4er.
+rera2
+2r1erb
+rer2bi
+3r2erbr
+2r1erd
+rere2
+4r3ereig
+r1e4rek
+re2r1ep
+r2erer
+2r1erf
+4rerfah
+r4erfe
+3r2erfr
+rer2fü
+r1erg
+4r3ergeb
+5rergebü
+r4ergen
+3r4erges
+2rergo
+rer2gr
+r4ergru
+rer2hö
+r1erk
+rer4kan
+rer2ke
+4r3erken
+3r2erki
+3r2erko
+r1erl
+2r3er2la
+5r4erlag
+r3erleb
+r2erli
+2rerlö
+2r1erm
+rer2n
+2r1ernä
+r1erne
+2r1erni
+4r3erns
+4r1ernt
+re1ro
+re2rob
+re4rosi
+2r1er2ö
+r1erre
+rer4reg
+rer4rei
+r1erri
+5r2ers.
+2r1ersa
+rer3sc
+r6erschi
+r2erse
+2rersp
+rer2st
+r6erstad
+r1ert4
+r2erte
+4rerträ
+r1erw
+2rerwa
+rer4wac
+rer4wec
+r4erwes
+2r1erz
+rer2zä
+3r2erzy
+3r4es.
+re2sa
+re4sam
+re3sar
+re4schw
+3rese
+re4se2h
+3resol
+3reson
+res2po
+2ress
+4resse
+res6s5erw
+4ressu
+re1sta
+res4tas
+res4tex
+2res2tu
+3resu
+re2t1ak
+re2tau
+re2thy
+re4trol
+re2u
+reu4eri
+reu3g2
+2reul
+re3uni
+2r1eur
+4reuu
+2reü
+4r3eva
+2r1evid
+rewa4r
+re2wi
+2rewo
+2r1e2x1
+2rezi
+1ré
+4r1f
+r3fam
+r2fent
+r3f2es
+rff2
+rf3fe
+rfi4le.
+r4fland
+r3f4lä
+rf3lic
+rf4lö
+r3flü
+r2fo2b
+rfolg4s
+r3fot
+r4frauc
+rf4ru
+rf4rü
+rf4sam
+rf2s1ä
+rf2su
+rf2ta
+rft4r
+rf2u
+rfzu3
+4r1g
+r2g1a2d
+r2g1ah
+r2g1ak
+rga4ner
+r2g1ap
+r2garb
+rg3art.
+r2g1ask
+rgas4ta
+rga3su
+rgd2
+rge4an
+rge2bl
+r2g1e2c
+r3g2el
+rge4l3er
+rgen6sem
+rgen4z3w
+r4ge4tap
+r2geto
+r7gie
+rgi4sel
+r2glan
+r2gleu
+r2glig
+rg2log
+rg2lu
+r2g3na
+r2gne
+r2g3ni
+r2g3no
+r2g3oa
+r2go4b
+r3gog
+rg3op
+r2g1or
+rgö2
+r2g1öd
+r2g3ral
+rg4rau
+r2greg
+r2g3res
+r2gret
+rg3rin
+r3grun
+rg3rüs
+rg3sä
+rg3se
+rgs2ei
+rg4sel
+rg3s4i
+rg3sp
+rgs2pe
+rgs2po
+rgs2ti
+rgs4tr
+rgs2tu
+rg3su
+r1h4
+2rh.
+2rha
+r2ha.
+r4haltb
+r3han
+2rhä
+r2he.
+r5hea
+2rheb
+2rhef
+2rheit
+2rher
+2rhi
+2rhof
+rho2i3
+2rhol
+2rhot
+2rhöl
+2rhs
+rhu2s
+2rhü
+1ri
+ria3ne
+ri2ano
+ria1s
+ri2ast
+ri3at
+ri4atr
+rib2bl
+ri1ce
+ri1cha
+richt8spo
+3richtu
+ri2con
+ri2dau
+ri3de.
+4ridee
+ri2de2l
+ri4ds
+r2ie
+rief1a
+4riefm
+rie2f3r
+ri2e1i
+riein1
+ri1el
+rie3l2a
+ri3els
+ri4enä
+riene2
+ri3eni
+rien3s
+rie4nu
+ri1er.
+rie3re
+riere4n
+ri3ers.
+rie3sa
+ri1eu
+ri2f1a
+ri2fä
+ri2fei
+ri2fer
+rif6f5end
+rif4fer
+ri2f1o
+ri2fr
+rif3s
+rif4ter
+3rig
+4riga
+4r3i2gel
+ri4gene
+5rigj
+rig1l
+4rigr
+4rij
+ri2kar
+ri2kä
+ri2kin
+ri2kn
+ri4kone
+ri2kor
+2rima
+ri2mag
+ri2mau
+ri2me.
+2rimm
+2rimp
+rim2s
+rim4sc
+rim4st
+rin2c
+r1ind
+rin4dex
+rin6dize
+2rindu
+ri3n2e
+rine1i
+2r1inf
+rin2fo
+3r2infr
+rin2ga
+ring3le
+rin2gr
+2r1inh
+2rinit
+4rinj
+4rink
+rin2kl
+rin2ko
+rin2kr
+2rinl
+6r5innenm
+4r3inner
+2r1innr
+r1innu
+2r1inq
+2r1ins
+3r2ins.
+rin4sek
+rin2so
+r4inspi
+3r2insy
+2rint
+4rinte
+rin4t5re
+2r1inv
+ri2ob
+4r1ir
+r2is
+ris2a
+ri3san
+ri4sch3o
+ri4schw
+3risik
+ri3s2ko
+rismu2
+r3iso
+2risol
+ri4s3p
+r3isr
+3riss
+ri4s3t
+ris6t5ers
+ris4t3r
+r2it
+rit2a
+r3i2tal
+rit3ant
+2ri3t4r
+rits2
+rit2t3a
+3ritter
+rit4to
+rit2t1r
+5ritu
+rix1
+1rí
+2r1j
+4r1k
+rka2b3l
+r2k1ak
+rk1all
+rk2am
+rk1are
+rk1asp
+rkauf4s
+r2k1äh
+r2kef
+r3kel
+r4kelem
+rke2n1
+rken3s4t
+rk5ersta
+r2k1erw
+r3ket
+r2k1im
+rk4las
+rk4lau
+rk4lim
+r2klis
+rk2lo
+rk2lu
+rk4n
+rk5nu
+r2kob
+r3kol
+r3kon
+rk1o4ri
+r2kou
+rk2ö
+rk3räu
+r3kri
+rk3rin
+r2k3rom
+r2krou
+rk2sei
+rk2sel
+rk2ser
+rk3shi
+rk2so
+rk2sp
+rkstati6
+rk4stec
+rk4stoc
+rk2ta
+rk2tel
+rk4t3eng
+rk4tent
+rk4t3erf
+rk4terg
+rk4t3erl
+rkt3ers
+rk6tersc
+rk4t3erw
+rk4t3erz
+rk4teta
+rk2tin
+rk4t1o2
+rkto4b
+rk2t3r
+rk4tri
+rk2tum
+rk2um
+rku2n
+rku2sa
+r2küb
+2r1l
+rl2ab
+r3lag
+r5land
+rlan4d3i
+r2l1ar
+r2l1a2sc
+r2l3aug
+rle2a
+r3lec
+r3lep
+r3lex
+rlg4
+r3l2i
+rli4ne.
+rli2s
+r3l2o
+rlou1
+rl2ö
+rlös3s
+rls2a
+rl2spr
+rl3ste
+rl2s5to
+rl3t
+r3l2u
+r3ly
+rlz2
+4r1m
+r2mab
+r2m1ad
+rma2la
+rm1ald
+rm1ami
+r2m1ank
+r4mantr
+rm1anz
+r2m3aph
+r2marc
+r2marz
+rma4s3pe
+rmat2o
+rm2är
+rm3d2
+rm1ef
+r4m3einh
+rme4na
+rm2ene
+r2ment
+r2meo
+r2m1erh
+r2m1erl
+r2m1erp
+rm2es
+rme1st
+rmes4z
+rmeta2
+r2mide
+rmi6nanz
+rminen4
+rmi6neng
+rmon3s4
+rm1o2ri
+rmo1s
+rm3p2
+rm3sa
+rm3s2k
+rm3t2
+rmu2n
+r4muna
+r2muni
+4rn
+rna2b
+r3nad
+rn4ade
+r3nage
+r2n1all
+rna4n
+rn4and
+rn3ani
+r2nanz
+rna2r
+rn3are
+r4n3ari
+r4n1ast
+r4n3att
+r2nau
+rn3aug
+rnd4
+rn3de
+rn3dr
+r4nef
+rn2eid
+r4neif
+r4neis
+rn1ema
+rne2n
+rn1ene
+rn2eng
+r2n1ep
+r4n1erg
+rn4erhi
+r4n1erl
+r4n1ert
+r4n1erw
+r4nerz
+r5nes
+rn2e2t
+rne4tem
+rne4to
+rn2eu
+rne3uf
+r4nex
+rn3f
+rn3g2
+r2nid
+r2nin
+r3nit
+rnk2
+rnn2
+r3nod
+rn2oh
+rn3oly
+r2n1op
+r2n1or
+rn1ö
+rnö2d
+rn3s2a
+rn3s2ä
+rn3s4p
+rns2u
+rn3s2z
+rn3t2a
+rn3t2e
+rn1ur
+r1nü
+r1ny
+rnz2
+2robj
+rob2l
+1robo
+ro2bo2r
+ro2bre
+2robs
+ro1c
+roch2a
+3rock.
+r2o3de
+ro3e4
+2roff
+ro3fl
+4rog.
+rog2a
+3rogg
+roh1l
+4rohn
+ro2hö
+3rohr
+3roi
+ro3in
+ro1ir
+rok2l
+ro3le
+ro2liv
+rol4lan
+rolle4
+rol6lerg
+rolls2
+rol3s
+2roly
+4rom.
+ro2mad
+ro2mal
+3roman.
+2romb
+romen3e
+ro2m1er2
+2romn
+rom3s
+4romt
+r2on
+ro3n4ab
+ro2nan
+3rond
+4ronk
+3ronn
+rons2
+ron4tan
+ron6tend
+ron4t3r
+ron2t1u
+ro1ny
+ro1o2f
+ro1pe
+2ropf
+1ropl
+2ropt
+r1or
+ro2r3al
+ro2rat
+2rorc
+ro2rel
+ro2ro
+ror3th
+rort2s
+ror2ü
+ro3sh
+ro3s2i
+ro5s2k
+ros4sal
+ros4san
+ros2s1c
+ros4st
+ro1sta
+ros6t1r
+ro2sum
+4r3osz
+4roß
+ro2ßi
+ro2tan
+ro4tas
+ro4t3au
+ro2tä
+ro3te
+ro2tei
+ro2t3ho
+ro2tru
+rot3s
+rots2o
+rot2ta
+ro3tu
+3roul
+ro3unt
+5rout
+4roy
+rö2b3l
+rö2du
+2rö2f
+3röh
+2r1ök
+1röl
+2röl.
+rö3le
+röl2l
+r1ölp
+3römi
+r1ör
+r2ös.
+rös1c
+r2öse
+1rösl
+4röß
+3rötu
+4r1p2
+r3pa
+r3pe
+rper3in
+rpf4
+r2pli
+rp4lu
+rpo2st
+rpro1
+rp3se
+rps3t
+r4pt
+r3pu
+2r1q
+2r1r
+rr2ab
+rrat2s
+rr1auf
+rr1äm
+rrb2
+rr1c
+r5rega
+r5regi
+rr2ei
+rre2le
+rre2pa
+rr2er
+rrer4s
+r3res
+rre2ve
+rr2hen
+rr2hos
+rr2i
+rri3k2
+rrm2
+rrn3au
+rr2o
+rr3obs
+rro3m
+rro2re
+rrr2
+rr2st
+rr3str
+rr3stu
+rr2th
+r3r2u
+r3r2ü
+rrz2
+4r1s
+r3sabo
+r2s1a2d
+rs2al
+r4samp
+r4s1amt
+rs2an
+r4sanf
+r4s3ang
+rs3anm
+r4sanp
+rs3ant
+rs3anz
+rs3ar
+rs4ark
+r4sarm
+r4sch3e4b
+r6scherl
+r3schu
+r2s1ebe
+rse2e
+r2s1ef
+r2sein
+rse2n
+rs2end
+rse4ne
+r2sepi
+rs1ere
+r2serh
+rs1ers
+r2serz
+rse2t
+rs1eta
+rs2ext
+r3s2hav
+r3shir
+r3sho
+rs2hor
+r4shu
+rs2il
+rs2ka
+rs2kel
+rs2ki
+rs2kl
+r4skor
+r3s4kri
+r4sky
+rs4mog
+r3s4no
+r3so
+r4sob
+r4s1op
+r4sord
+r4sorie
+r4s3ort.
+rs2p
+r4spara
+r3spe
+r4s3ph
+rs4por
+r4sput
+rss2
+rst3abl
+rst3ala
+r4stale
+r4stans
+r4stant
+r2stas
+r7stati
+r7statu
+r3stä
+rst5eing
+r6st5eint
+rs4temp
+rster2
+rs4t4erb
+rst3erl
+r3s4tern
+rst3erw
+rs2tev
+rs2t3h
+rs2ti
+r3stie
+r2stin
+rst3ing
+r3stink
+r2stip
+r2stit
+r3sto
+rs4tol
+rs4tor
+r4stot
+rs4tr
+r3stra
+rst3ran
+r6strang
+rs2tu
+rs4tuc
+r3s4tü
+rsuch4s
+r3suf
+r3sy
+r1ß
+4r1t
+r2tabo
+rt1abs
+rta2ck
+r2t1ad
+r2t3ae
+r3taf
+rt3akr
+r4t3albe
+rta3l2e
+r2t1all
+rt1am
+rt2ame
+r3t2anb
+r2t1ang
+rt1ann
+rt1ant
+r2t1ar
+rt3att
+r3taufe
+rt3äh
+rt1änd
+rt1ärm
+rte1e2
+r3teh
+rt1ein
+rt4eind
+r4t3einh
+rtei1s4
+r2telf
+rtels4t
+r2temo
+rte2n1
+rte4na
+rten3s4
+r4t3ents
+rten3z
+rteo2
+rt3erei
+r6tereig
+r4terfa
+r4ter4fo
+rt1erh
+rt1erk
+r4t3erla
+rter8löse
+rter6mit
+r4t3ernä
+r2terö
+rter4re
+rt1ers
+rt4ersp
+rt1erz
+rte3s2k
+r2texa
+rt3he
+r2t3hi
+rt3hol
+rt2hum
+r3tic
+r2tid
+rtik2
+r2t1ima
+r4t3inf
+rt2is
+r2t1o4b
+r5top.
+rto1pf
+rt1or
+r4torg
+r4trak
+rt3rams
+rt3rand
+rt3rati
+rt3rec
+r3tre1s
+r4t3ris
+rt3rol
+rt3roma
+r3trop
+r2trou
+rtrü2c
+r4ts
+rt4seh
+rts2el
+rt3sex
+rts3ing
+rt2s1o
+rt2spa
+rt2spr
+rt4s3tan
+rts4tie
+rt3t4
+rt1umb
+rt2u3na
+r2t1up
+r2t1urt
+rtu4t
+r2t3ute
+r3tü
+rt3z2
+1ru
+ru1a
+ru4ale
+ru3a2r3
+rube4
+ruben3
+rubens4
+rub2i
+ru6ckerl
+ru2cku
+rude2a
+ru2dr
+3ruf
+ru2fa
+ruff4
+ruf2s
+rufs1p
+ruf4ter
+ru2g3r
+3ruhm
+2r1uhr
+3ruin
+ru1ins
+ru1is
+2rum
+4r3umd
+4r3umf
+4r3umg
+ru2mi
+4r3uml
+4r3umsa
+4r3umw
+4rumz
+2r1una
+2rund
+run4d1a
+runden5e
+run4d3er
+runds2
+run2e
+runei2
+4r1unf
+run2ga
+2rungl
+4r1u2ni
+r3unio
+ru4nis.
+run2kr
+4r1unl
+2r1unm
+4runn
+4runr
+r1unse
+4r3unt
+4runw
+2rupd
+ru3pr
+4r3u2r
+rur1e
+5ru3ro
+ru2si
+rus2p
+rus2s1p
+rus4st
+ru2st
+ru2tab
+rute4
+ru4tei
+ru4t1el
+rut3h
+ru4t1o4
+ru2t3r
+rut6scha
+4ruz
+ru2z1w
+1rü
+2rüb
+4rübu
+rü1ch
+rü4ckel
+rücks4
+rü2hel
+rüher2
+rüh1l
+4rümm
+rün3z
+2r1v
+rv2el
+rve4n1e
+rvenen4
+r4ventz
+rve3s
+r3v2o
+2r1w
+rwe4gel
+r3wei
+rwelt4s
+r5werk
+r5wert
+r2wo.
+r3woh
+r3wort
+rwun3s
+4r1x
+1ry
+ry2c
+ry3sth
+rysti1
+2r1z
+rz2ans
+r2zant
+r2zar
+r2zat
+r3zähn
+rz2än
+r5zene
+rz1eng
+r4z3ents
+rze2p
+rze2ra
+r2z1erd
+r2z1erf
+r2z1erg
+rz1erk
+r2z1erl
+r2z1erw
+r2z1ess
+rz1id
+rz1int
+rzir3
+rz2of
+r2z3ot
+rz2tan
+rz3te
+rz2th
+rzu4g3l
+r2zwä
+r3z2wec
+r2zwir
+1sa
+3sa.
+3s2aa
+2s1ab
+sab2ä
+4sabd
+sa2be
+3sabet
+s3abi
+sa2bit
+sa2bl
+4sabm
+sa2bor
+sa2br
+4s3abs
+4s1acc
+5s2ache
+sa2cho
+sach3t
+s2ack
+2s1ada
+2s1adm
+2s1a2dr
+3safa
+sa4fe
+4s3aff
+sa1f4r
+s2aft
+saf4tr
+3saga
+sag2e
+5sagen.
+4s3agent
+2s1agg
+sa2gio
+sa2git
+sag4n
+s1a2gr
+s2ahs
+3s2ai
+sa3i2k1
+sail2
+sai4r
+2s1ak
+sa2ka
+sak2e
+3saki
+4sakk
+4sakt
+3s2al.
+s2al2a
+sa2l3an
+sa2lar
+sa3lat
+3salb
+sal3bl
+3sald
+sa4lerk
+3sali
+sa2l1id
+s1all
+sal4le.
+3salo
+sal2se
+s1alt
+s2al3t4h
+3salz
+3sam
+4s1a2mat
+4s1a2mei
+s3ameri
+5samm
+6s1amma
+4s1amn
+s1am3p4
+4samph
+sam4ta
+sam4to
+samt3st
+s1an
+s2an.
+2s3a2na
+sa4nä
+2s3anb
+s2an2c
+3s2and
+san4dan
+san4dri
+sand3s
+sa2ner
+3sang.
+2s3anh
+3sani
+3sanken
+2s3anl
+2sa2no
+2s3anp
+2s3ans
+s4anse
+san4sk
+san3sp
+4santei
+4s3antr
+4s3anw
+2sanz
+2s1ap
+sa2pe
+sa2po
+sap3p
+3sapr
+2s1aq
+2s1ar
+3s4ar.
+3sara
+4s3arb
+3s2ard
+s2are
+s3area
+sar2ga
+sa3rin
+s2ark
+4sarm.
+sa2rom
+s3arr
+s2ars
+4sart
+sa4r1u2
+sas2a
+2s1asc
+2s1a4si
+2s1a4sp
+sas2tu
+4s1asy
+sat2a
+sa4t3ant
+sat1ei
+2s3a4tem
+s3ath
+3sat2i
+2s3atl
+2satm
+sat2o
+sa4tol
+sa2tom
+sa2tr
+s3atta
+4s3attr
+3satz
+5satza
+sat4zel
+sat4z3en
+s1au
+3sau.
+3sauc
+3sau2e
+2sauf
+4s3aufb
+saug3le
+sau2gr
+3saum
+sauri1
+2saus
+3saus.
+4s3ausb
+4sausf
+4sausg
+sau2sp
+4sauss
+3sauste
+4s3ausw
+2sauß
+s1av
+sa2ve
+sa2xi
+sa2y
+1sä
+3s2äb
+3s2äc
+3s2äg
+s1äh
+4s3ähn
+3säl
+4s1ält
+2s1äm
+4s3änd
+4s3äp
+2säq
+2s1är
+3s2ärg
+3s2ät
+3säul
+4säuß
+4s3b4
+sba4ne
+sbau6men
+sbe3r2e
+1sc
+2sc.
+2scab
+2scac
+2scal
+2scam
+2scar
+2s1ce
+4s3cei
+sc4h
+4sch.
+3schaf
+3s2chal
+sch3ana
+4schanc
+4schang
+4schao
+4schara
+4sch3ar5m
+s2chä
+2schäq
+4schb
+4schc
+2schd
+sch2e
+4schech
+6schef.
+6schefi
+6schefs
+s4chei
+4sch3ei.
+sch6ein.
+4schemp
+s4cher
+sch5erfü
+3sches
+4schess
+s2cheu
+4schex
+2schf
+2schg
+2schh
+schi4d
+schi4e
+s4chif
+4schiru
+3schis
+2schk
+s4chl
+sch4lac
+4schle.
+6schlein
+4schloc
+4schlöc
+4schmas
+4schmed
+2schmö
+4schmüh
+2schmy
+2schn.
+4schneb
+4schnut
+4schobj
+4schorc
+2schox
+4schör
+4schp
+2schq
+4schrad
+4schre.
+4schrin
+4s3chris
+sch3rom
+4schron
+4schrou
+4schs
+schs2e
+sch3s2k
+schs4ti
+4sch3t
+scht2a
+scht2i
+scht2o
+s4chu
+4schunt
+2schv
+sch4web
+4schweg
+6schwerk
+4schwet
+4schwid
+3schwu
+2schz
+2scj
+4s3cl
+2sco
+3s2cop
+s2cr
+2scs
+2scu
+4s3d2
+sda3me
+sde1s2
+sdien4e
+sdi1st
+sd4r
+1se
+se3ar
+se3at.
+seb2
+5sebä
+2s1e2ben
+2s1echo
+sech4st
+2s1echt
+4s1e2ck
+se2dik
+3see
+see1i4
+se2e3ig
+se2el
+see3len
+se3en.
+seen2e
+se3er.
+see1ra
+seer2e
+se3e2r1i
+se1ers
+see3s4
+see3t
+4s3eff
+sef4l
+3s2eg
+4s3e2gal
+se2gl
+seg4r
+3seh
+seh1a
+se2hag
+se2hel
+seher4e
+se4herk
+se2h1in
+seh3l
+se2h3ö
+seh3re
+seh5r2i
+seh1s
+seh3t
+se2hüb
+2sei.
+2s1eic
+2s1eid.
+sei3da
+4s3eifer
+4s1eig
+sei3le
+s2eim
+s1ein
+5s4ein.
+2seinb
+sein4du
+2sei3n2e
+seine3i
+4seinfl
+sein4fo
+4seing
+2s3einh
+2seini
+2seink
+2seinl
+2seinn
+4seinr
+s4eins.
+4seinsc
+4seinsp
+sein8stit
+sein6str
+4seintr
+2seinw
+2s3einz
+2s1eis
+3s2eit
+seit2s
+3sek
+4s1e2kel
+4sekz
+s2el.
+se2l1a
+se3lad
+3s2elb
+sel1ec
+se2lef
+2s3e2leg
+4selem
+se2ler
+sel3ers
+2self.
+s3e2lit
+2s1elix
+s2ell
+se2lob
+s2els
+sel3sz
+selz2
+sem2a
+sem2e
+2s1emis
+4s3emp
+s4en.
+3sena
+se4nad
+se3nal
+se4nas
+sen3au
+s2enb
+2s1endl
+sen3d4r
+senen1
+se4nene
+4senerg
+se4ners
+se4ness
+s2enf
+3s4eni
+se2n1im
+3s2enk
+se2no
+se4nott
+se4noz
+3sens
+s2ensa
+sen4s3e4h
+4sensem
+s4ensi
+s2enso
+senst2
+sen8s7turm
+sent2a
+sen3tä
+2sentd
+4sentf
+4s1entg
+4sentla
+4sentn
+sen3tr
+4s1ents
+2sentw
+4sentwu
+4sentwü
+2sentz
+se4n3u
+sen4zer
+sen3zw
+seo2r
+se2pen
+3seq
+s4er.
+se2r3a2d
+ser3al
+ser3ass
+ser3äus
+serb2
+s3erbe.
+se2re2b
+6sereign
+se4r3eim
+5s4eren
+se4r3enk
+s4erfe
+s2erfr
+s1erfü
+4serfül
+ser3g2
+s2ergr
+s1erh
+2serhö
+3seri
+5serie
+ser3k4
+4s3ermit
+s2ern.
+s3erneu
+4s3ernt
+2s1e2ros
+s1erot
+s1erö
+4seröf
+3s2ers.
+2sersa
+4serseh
+ser6sehn
+4ser4set
+se3ru
+se4ruh
+ser2um
+se4rup
+5s4er3v
+s1erz
+5s4es.
+se3s4a
+se2sel
+se3sk
+2s1essa
+se1sta
+se3stec
+se3stei
+se5stemp
+sest3ri
+set2a
+2s3e4tap
+se2tat
+s1e2th
+4s1e2tik
+se3tun
+se2ty
+3setz
+3seuc
+4s1eul
+seum4sc
+se1u2n
+s1ex
+5sex.
+2sexa
+se2x3en
+s2exi
+s2exo
+4sexp
+sex3t4r
+4sexz
+1sé
+4s3f4
+sfal6l5er
+4s3g4
+sgang4
+sga3su
+sge3s4a
+2s1h
+4sh.
+sh2a
+3s2ha.
+shal4li
+shalt2
+shalt4s
+4shan
+s2has.
+s3hä
+sh2e
+3shi.
+3shid
+s2hip
+shi4r
+sh3n
+4s3hoc
+4s3hof
+4shom
+3s2hop
+sho4re
+3s4how
+4s3hö
+sh4r2
+4shs
+s3hu
+1si
+si2ad
+2siat
+5s4i1c
+si2cha
+sid2
+s2ide.
+s2i3do
+2sidy
+3s4ie
+sie2bu
+sieh1e
+sie4hes
+si3e2n3
+si1err
+si1f4
+3s4ig
+si2g1a2
+si2gei
+sig4n
+si2g3r
+sig4st
+si2k1ab
+si2kak
+si2kar
+si2k1ä
+si2k1el
+siken2
+sik3erl
+si2ket
+si2k3i
+sikin1
+si2k3n
+siko3
+si2k3r
+sik3s
+sik3t4
+si2ku
+sil2br
+sil2e
+3sili
+s1ill
+3silo
+2s1imm
+sim4st
+3simu
+si3n4a
+2s1ind
+2s1inf
+s3infor
+sing1a
+sin3g4le
+sin2g3r
+sings2
+sing3sa
+sing3so
+2s1inh
+s1in1i
+sini1e
+sinner4
+2s1inno
+2s1inq
+2s1ins
+s2ins.
+2s1int
+2s1inv
+3sio
+sion4
+sirn4
+2sirr
+3siru
+si2sa
+si4sam
+3s2isc
+si4schu
+si2s1e2
+si2sis
+s1i2so
+si2s3p
+sis3s4
+3s4ist
+si2su
+3s2it
+si2tal
+si2tau
+si2tra
+sit2u
+si2va
+sive3
+si4v3erf
+siv1o4
+si2vor
+siz2
+1sí
+2s3j
+2s1k2
+4sk.
+sk4a
+4s3kab
+s3kad
+4skalk
+4s3kam
+4s3kana
+4skanä
+3skanda
+4s3kap
+4s3kar
+4s3kas
+ska4te.
+4skateg
+ska4tes
+ska4to
+4skä
+4skb
+ske2li
+4sken
+3skep
+4sker
+s3kh
+3s2ki.
+3s2kif
+3s2kik
+s3kin
+4skir
+ski1s
+s2kis.
+3skiz
+sk4l
+4s3klas
+3s2klav
+4s3klu
+4sk4n
+4skoh
+4skol
+4skom
+4s3kon
+3skop.
+sko2pr
+4skos
+4skow
+4skö
+4s3kra
+s3kre
+4s3kro
+4sk3s
+4sk3t2
+skto2
+3skulp
+4skun
+sku2s1
+4skü
+4skv
+2s1l2
+sl4a
+s3lab
+3slal
+sla2ve
+s2law
+s3lä
+sl3b
+4s3le
+sler3s
+s3li
+3s4lip
+s3lo.
+slo3be
+s3loc
+s3loe
+s3lof
+3s2low
+s3ly
+2s3m2
+sma3b4
+sma3sc
+sme3na
+smi2t
+2s3n2
+snab4
+sni4a
+sni3er.
+sni3ers
+4s5not
+1so
+3so.
+2s3oas
+2s1o2b
+3s2o3ba
+4sobj
+4s3obo
+so1c
+so3et
+s1o2fe
+3soft
+3sog
+sog4l
+s1o2he
+3sohl
+sohle2
+2s3ohng
+2s1ohr
+3soi
+2s3ok
+3sol.
+so3la
+so4lau
+3sold
+3sole
+so2l1ei
+so3li
+sol2la
+sol4ler
+so3l2o
+4s3o2ly
+som2e
+3son
+son2a
+sone4
+son3sä
+son4s1o
+so3o
+2sope
+2s1opf
+3sopr
+sop3s
+s1orc
+2s3ord
+sore2
+so2rei
+so2rel
+4s1orga
+so1rh
+2s1o2rie
+so2ro
+3sorp
+3s2orti
+so4ru
+3sos
+s2os.
+4so4sk
+4sosm
+4s1ost
+4s1osz
+3so3ß
+soth1o
+3sott
+soun2
+sound1
+so3unds
+so3unt
+s1out
+3sov
+3sow
+2s1ox
+3soz
+s3o4ze
+1sö
+sö2c
+s1ö2d
+2sö2f
+2s1ök
+2s1öl
+2s1ös
+1sp2
+2sp.
+4spaa
+s2pace
+2spack
+2spag
+2spak
+2spala
+2spalä
+3spalt
+spa2m
+s2pan.
+3spannu
+3spant
+2spanz
+2spap
+2s3para
+s4parka
+2sparo
+5s6parten
+4spartn
+4sparty
+3spaß
+3spat.
+2spati
+4spatr
+2spau
+3s2paz
+s2pä
+2späd
+3späh
+2spär
+2späs
+2s3pe.
+2speg
+3speic
+4spein
+4spensi
+spe3p4
+s2pera
+3s2perg
+s1peri
+4sperle
+2spero
+s2perr
+2spers
+2sperü
+4spet
+3s4pez
+4s3pf4
+2spha
+s2phä
+3sphär
+s3phe
+s4phin
+3s2pi4e
+4spier
+spier4r
+s3pi2k
+4s3pil
+3spio
+2spip
+4s3pis
+2sp4l
+4spla
+4splä
+4sple
+sp5le.
+3s2pli
+4s3plu
+2s3pn
+2spod
+4spoe
+2spog
+s2poi
+4s3pok
+4spol
+s2pons
+2spop
+s2pore
+s2porn
+spor6tag
+4s3pos
+4spote
+4spr.
+3s2prac
+2sprak
+s2pran
+2sprax
+3spräc
+2spräm
+s2prän
+4spräs
+3s4prec
+4spred
+4spreis
+5s2pren
+2s3pres
+s2pric
+3spring
+4sprinz
+s2prit
+2sprob
+4sprog
+4sproj
+4sprop
+3spross
+2sproz
+3sprö
+3s2pru
+3sprüc
+2sprüf
+3sprün
+4s3ps
+2s4pt
+2spub
+2spud
+3spuk
+3s2pule
+2spun
+4spunk
+2spup
+3s4pur
+spu4rer
+2sput
+4spy
+2s1q
+4s3r4
+srat2s
+sre3cha
+sreli1
+sre4th
+srö2s
+srücker6
+6s1s
+ssa3bl
+ssa3bo
+s5sack
+ss4agi
+s2s1aj
+ss3alba
+s2sall
+s4samt
+s2sanf
+s4sang
+ss2ann
+s4sano
+s4sans
+ss2ant
+s4sanz
+ss2ara
+s3sars
+ssa1s
+ss3att
+ssau3e
+ssau4r
+s3s2ä
+s4sce
+ssch2
+s3schw
+s4sco
+s2scr
+s4seben
+ss1ec
+sse1e
+sseh2a
+ss4eind
+sse3int
+s4seis
+s3sel
+sse2lö
+s3sen.
+ssen6sem
+ss1epe
+sse6ratt
+ss2erf
+ss3erfü
+ss4ergr
+sser4hö
+sser6mit
+sser4öf
+ss3erse
+ss4eru
+sser6wei
+sses4sa
+s4s3estr
+sse3ta
+ss3i2ko
+s2sill
+s2simp
+ssing3s
+s2s1isr
+s3skala
+ss3l
+ss1off
+ssoi4
+s3sol
+s4sop
+ss2orc
+ss2phi
+s3spi
+ss2pot
+s3sprä
+s3spri
+s2spro
+ssquet4
+ss3s4
+sssau4
+sst2a
+s4stag
+ss3tak
+s3stä
+sst2e
+s3stel
+s3s2tep
+s3s4tern
+ss4teu
+ss2ti
+s3sto
+ss4tör
+s3stran
+s3s4tras
+s3s4trat
+s3strä
+s3strec
+s3strom
+s3strö
+ss2tur
+s3stü
+s2sumg
+s2sumr
+ss1ums
+ss2ur
+s3sy
+s1t
+4st.
+s2ta
+2sta.
+3staa
+3stab.
+2stabb
+4stabel
+4stabit
+2stabl
+st2ac
+3s4tad
+4stadm
+3staff
+2stag
+3stagl
+3s4tagr
+3s4tah
+2stak
+3staks
+2stala
+sta3lak
+2s3talb
+s4talg
+s3ta3l2i
+2stalk
+st1alp
+st1alr
+st1a2mi
+1stamm
+1stan
+2stanb
+s4tand
+2stanf
+s4tanh
+2stanl
+s4tanm
+4st1ann
+st3ansp
+2stanw
+stapo1
+4stapol
+4s3tapos4
+4s3tapot
+st1app
+s4tar.
+s4tarb
+sta6rens
+4stari
+s4tark
+s4tarm
+s4t2ars
+s4tart
+s4tase
+s4tasi
+stast4
+s3tat.
+2statb
+3stati
+7statth
+s4tau.
+2stauf
+2staug
+3s4taur
+4stausb
+4stausg
+4stausr
+4stauss
+s4taut
+s4t1a2ve
+4stax
+1s2tä
+3stäb
+3städ
+4stäg
+4stäp
+5s4tär
+3stätt
+2s3täus
+2stb
+2st3c
+2std
+4ste.
+4steam
+4stechn
+s2te2d
+st1edi
+2stee
+3s2teg
+ste2g3r
+1steh
+s2tei
+2steic
+st1eid
+3steig
+stei4gr
+2steil
+6steinga
+s4teins
+stein6sp
+s2tel
+2stel.
+s3tele
+s3telf
+st2ell
+stel6l5än
+2steln
+2stels
+2stem
+ste4mar
+ste6ment
+3stemm
+2sten
+s5ten.
+ste4na
+s4t3ends
+st2ens4
+s4tentf
+s4tents
+st1e2po
+2ster
+4s5ter.
+ste2r3a
+s6terben
+3sterbo
+3s4tereo
+st3erfü
+6sterinf
+6sterinh
+4sterm
+3s4ternb
+4ste2s1
+ste3sc
+stes4se
+s4testn
+stes5tr
+2s3tet
+ste4tag
+3s4teti
+3s4tett
+3s2teu
+1steue
+4steuf
+st1eun
+st1ev
+s2tew
+4stex
+s2texa
+2stf
+2stg
+2sth
+st4hen
+s2t3hi
+st3ho
+s2thu
+2stia
+2stib
+1stich
+2stie.
+4stief.
+4stiefl
+s2tieg
+s2tiel
+2stien
+1s2tif
+2stig
+3s4tigm
+2s3tik
+s2t2il
+1s2tim
+4stimma
+2stimp
+st1inb
+s4tinf
+s3tinn
+s2tins
+2s2tint
+2stio
+2stip.
+s4tipe
+4stipp.
+s2ti2r
+st1ira
+st1iri
+4stis
+s4tisl
+st1ita
+2stite
+1stitu
+2stiv
+2stj
+2stk
+4stl
+2stm
+2stn
+s2to
+2sto.
+sto2bl
+4stocht
+2stod
+4stod.
+1stof
+s4toff
+2stok
+4s5tole
+sto3mi
+4ston
+s4to4ne
+4stoo
+2stopo
+4stor.
+s4torb
+2store
+2s4torg
+2stori
+2storp
+2stors
+2stort
+s4tory
+sto3s2t
+1stoß
+4stote
+2stotr
+4stou
+2stow
+2stoz
+1s2tö
+4stöch
+2s3töl
+2stön
+3stör
+2stöt
+2stp
+2stq
+s2tr
+2strac
+4s3trad
+st4rade
+stra4fa
+4s5trag
+3strah
+4strahi
 4strai
-s3tral
-6s5traum 3straß
-3strec 6s3tref 8streib 5streif 6streno 6stres 6strev
-2st5rig
-8s2t1ris
-s8troma st5rose 
-2s1trua
-4struf 3strum
-6sträg 2st1s6 2stt
-1stu stu5a 4stuc 2stue 8stun. 2stv 2stw s2tyl
-6stz 1stä 8stäg
-1stö
-1stü 8stüch 4stür.
-1su su2b1 3suc su1e su2fe su8mar 6sumfa 8sumk 2s1unt sup1p2 6s5u6ran
-6surte 2s1v 2s1w 1sy 8syl. sy5la syn1 sy2na syne4 s1z s4zend 5s6zene.
-8szu 1sä 6s5änd 6säugi 6säuß
-5söm 2s1ü2b 1süc sü8di 1sün 5süß
-taats3 4tab. taba6k ta8ban tab2l ta6bre 4tabs t3absc
-8tabz 6t3acht ta6der 6tadr tad6s tad2t 1tafe4 1tag ta6ga6 ta8gei
-tage4s tag6s5t tah8 tahl3 tai6ne. ta5ir. tak8ta tal3au 1tale ta8leng
-tal5ert 6t5a6mer 6tamp tampe6 2t1amt tan5d6a tan8dr tands5a tani5e
-6tanl 2tanr t3ans 8t5antr tanu6 t5anw 8tanwa tan8zw ta8rau 6tarbe
-1tari 2tark 2t1arm ta1ro 2tart t3arti 6tarz ta1sc ta6sien ta8stem
-ta8sto t5aufb 4taufn 8taus. 5tause 8tausf 6tausg t5ausl 2t1b2 2t1c
-t6chu 2t1d te2am tea4s te8ben 5techn 4teff te4g3re te6hau 2tehe te4hel
-2t1ehr te5id. teig5l 6teign tei8gr 1teil 4teinh t5einhe 4teis t5eisen
-8teiw te8lam te4lar 4telek 8telem te6man te6n5ag ten8erw ten5k tens4p
-ten8tro 4t3entw 8tentz te6pli 5teppi ter5a6b te3ral ter5au 8terbar
-t5erbe. 6terben 8terbs 4t3erbt t5erde. ter5ebe ter5ein te8rers terf4
-8terhö 6terklä ter8nor ter6re. t8erscha t5e6sel te8stau
-t3euro te1xa tex3e 8texp tex6ta 2t1f2 2t1g2 2th. th6a 5tha. 2thaa
-6t1hab 6t5haf t5hah 8thak 3thal. 6thals 6t3hand 2t1hau 1the. 3t4hea
-t1heb t5heil t3heit t3helf 1theo 5therap 5therf 6t5herz 1thes 1thet
-5thi. 2t1hil t3him 8thir 3this t5hj 2th1l 2th1m th1n t5hob t5hof
-4tholz 6thopti 1thr6 4ths t1hum 1thy 4t1hä 2t1hö t1hü
-ti1a2m ti1b tie6fer ti1en ti8gerz tig3l ti8kin ti5lat 1tilg t1ind
-tin4k3l ti3spa ti5str 5tite ti5tr ti8vel ti8vr 2t1j 2t1k2 2t1l tl8a
-2t1m8 2t1n 3tobe 8tobj to3cha 5tocht 8tock tode4 to8del to8du to1e
-6t5o6fen to1in toi6r 5toll. to8mene t2ons 2t1ony to4per 5topf. 6topt
-to1ra
-to1s to2ste
-to6ska tos2l 2toti to1tr t8ou 2t1p2 6t1q tr6 tra5cha
-tra8far traf5t 1trag tra6gl tra6gr t3rahm 1trai t6rans tra3sc tra6st
-3traue t4re. 2trec t3rech t8reck 6t1red t8ree 4t1reg 3treib 4treif
-8t3reis 8trepo tre6t5r t3rev 4t3rez 1trib t6rick tri6er 2trig t8rink
-tri6o5d trizi5 tro1a 3troc trocke6 troi8d tro8man. tro3ny 5tropf
-6t5rosa t5roß 5trub 5trup trut5 1träg 6t1röh
-5trüb trü3bu t1rüc t1rüs 2ts ts1ab t1sac tsa8d
-ts1ak t6s5alt ts1an ts1ar ts3auf t3schr t5schä tse6e tsee5i
-tsein6s ts3ent ts1er t8serf t4serk t8sh 5t6sik t4s3int ts5ort.
-t5s6por t6sprei
-t1st t2ste
-t6s5tanz ts1th t6stit t4s3tor 1t2sua t2s1uf
-t8sum. t2s1u8n t2s1ur 2t1t tt5eif tte6sa tt1ha tt8ret tt1sc tt8ser
-tt5s6z 1tuc tuch5a 1tu1e 6tuh t5uhr tu1i tu6it 1tumh 6t5umr 1tums
-8tumt 6tund 6tunf 2t1unt tu5ra tu6rau tu6re. tu4r3er 2t1v 2t1w 1ty1
-ty6a ty8la 8tym 6ty6o 2tz tz5al tz1an tz1ar t8zec tzeh6 tzehn5 t6z5ei.
-t6zor t4z3um t6zäu 5täg 6täh t5ält t8än
-täre8 8tä8st 6täuß t5öffen
-8tö8k 1tön 4tüb t6ü5ber. 5tüch 1tür.
-u3al. u5alb u5alf u3alh u5alk u3alp u3an. ua5na u3and u5ans u5ar.
-ua6th u1au ua1y u2bab ubi5er. u6b5rit ubs2k u5bö u8büb 2uc
-u1che u6ch5ec u1chi uch1l uch3m uch5n uch1r uch5to ucht5re u1chu uch1w
-uck1a uck5in u1d ud4a u1ei u6ela uene8 u6ep u1er uer1a ue8rerl uer5o
-u8esc u2est u8ev u1fa u2f1ei u4f3ent u8ferh uf1fr uf1l uf1ra uf1re
-uf1rä uf1rü uf1s2p uf1st uft1s u8gabt u8gad u6gap ugeb8 u8gn
-ugo3s4 u1ha u1he u1hi uh1le u1ho uh1re u1hu uh1w u1hä u1hö
-6ui ui5en u1ig u3ins uin8tes u5isch. u1j 6uk u1ke u1ki u1kl u8klu
-u1k6n u5ky u1la uld8se u1le ul8lac ul6lau ul6le6l ul6lo ulni8 u1lo
-ulo6i ult6a ult8e u1lu ul2vr u1lä u1lö 3umfan 5umlau umo8f
-um8pho u1mu umu8s u5mö u1n1a un2al un6at unau2 6und. 5undein
-un4d3um 3undzw undü8 un8düb une2b un1ec une2h un3eis 3unfal
-1unfä 5ungea 3unglü ung2s1 un8gä 1u2nif un4it un8kro
-unk5s u1no unpa2 uns2p unvol4 unvoll5 u5os. u1pa u1pi u1p2l u1pr
-up4s3t up2t1a u1q u1ra ur5abs ura8d ur5ah u6rak ur3alt u6rana u6r5ans
-u8rap ur5a6ri u8ratt u1re ur3eig ur8gri u1ri ur5ins 3urlau urmen6
-ur8nan u1ro 3ursac ur8sau ur8sei ur4sk 3urtei u1ru uru5i6 uru6r u1ry
-ur2za ur6zä ur5ä6m u5rö u1rü urück3 u1sa
-usa4gi u2s1ar u2s1au u8schec usch5wi u2s1ei use8kel u8sl u4st3a4b
+4strak
+2stral
+s5trank
+4strans
+1strap
+1stras
+3straß
+4straum
+4sträc
+4s5träg
+4sträne
+2stre.
+s4trea
+4stref
+4streib
+3st6reif
+2strep
+2stret
+4streuh
+2strib
+strie3s4
+2s4trig
+1s4trik
+2s5tris
+2striu
+s3troc
+s3trog
+3s4troh
+3strom.
+s4trome
+4stropf
+2stros
+st4ross
+1strö
+2ströp
+1stru
+2strua
+2strub
+s4trud
+2strug
+3struk
+2strun
+4strup
+1strü
+4s4t3s2
+sts4t
+2st3t4
+st2u
+1stub
+4stuch
+3s4tud
+2stue
+3stuf
+2stug
+st3uga
+3stuh
+s2t3uk
+2stumo
+2stum2s
+stum4sc
+2stumt
+2stun.
+st3una
+1stund
+2stune
+2stung
+s2t3uni
+4stunn
+2stuns
+2stunt
+2stuö
+stu3ra
+stu5re
+2st3url
+4sturn
+2st3urt
+3s2turz
+2stus
+1s2tut
+1stüc
+4stüch
+3s4tück
+3stüh
+4stür.
+4stüre
+3stürz
+1stüt
+2stütc
+2stv
+2stw
+stwor2
+2sty
+4sty.
+1s2tyl
+4styp
+4stys
+2st3z2
+1su
+su1an
+3su2b3
+su4ba2
+4subi
+su4br
+3su1c
+su2cha
+su2cho
+suchs3p
+3sud
+su2eb
+2s1u2f
+su3fi
+2s1uh
+3sui
+su1is
+su1it.
+su2k
+su3l2i
+sul3t
+3sulta
+su2m1a
+s2ume
+su2mei
+su2mel
+sument4
+su6ments
+2sumf
+s3umfa
+s3umfe
+su2min
+3summ
+sum1o2
+su2mor
+3s2ump
+s3umsa
+2sumse
+s2umsp
+2s3umst
+2s3umwa
+su2n
+3sun.
+2s1una
+sunder4
+sun6d5erh
+sunds4
+su4ne
+4s1unf
+6sungena
+s1ungl
+sung4s
+4s1uni
+2s1unm
+2s1uns
+s4uns.
+s4unst
+2sunt
+2sunw
+s4unwa
+3s2up
+sup3p4
+su2ra
+sure4
+su2rer
+3surf
+2s1urk
+s1url
+su2r1o
+s1urt
+su2s1
+su3s2a
+s3u2t
+su4te
+su3tr
+3suv
+1sü
+2sü4b
+3süc
+sü2d1
+süden4
+3sün
+3s2üs
+3süß
+4s3v2
+svoran4
+2s1w
+4s3we
+swe6gers
+sweh2
+4swie
+4swil
+4swis
+4swit
+1s4y
+2sy2l1
+sym3
+sy2n3
+sy4nä
+3sy4s3
+2s1z2
+4s3za
+4szä
+4s3zei
+4szel
+3s2zena
+3s2ze3n2e
+4s3zent
+4s3zer
+s2zes
+4szet
+4szeu
+3s2zew
+4s3zie
+4s3zo
+4s3zu
+4s3zü
+4s3zw
+2ß3a4
+2ß1ä
+2ß1b4
+2ß1c
+2ß1d2
+1ße
+2ß1e2b
+2ß1ec
+2ß1ef
+2ß1e2g
+2ß1ei
+ße2la
+ße2le
+2ßelek
+2ß1emp
+ße4n3a2
+4ßenerg
+ße2ni
+ße2no
+ßens4t
+2ß1entl
+2ßentz
+2ß1e2p
+ßer3b
+ßer2ei
+ß2ers.
+2ßer4se
+ßer3t
+ß1erw
+2ß1es2s
+2ß1est3r
+2ß1ex
+2ß1f4
+2ß3g2
+ßge2bl
+2ß1h
+1ßi
+ßi2g1a2
+ßig4s
+2ß3i2k
+2ß1il
+2ß1im
+2ß1in
+2ß1j
+2ß3k4
+2ß1l
+ßler3
+2ß1m
+2ß1n2
+2ß3o2
+ßos2
+2ß1ö2
+2ß1p2
+ß1q
+2ß3r2
+ßrö2
+2ß3s4
+ßsau4
+ßsch2
+2ß1t
+ßt1in
+ß3tü
+2ß1um
+ß1unf
+2ßunt
+2ß1ü4
+2ß1v
+2ß1w
+2ß1z2
+1ta
+3ta.
+4taa
+5taan
+4tab.
+ta2b3an
+2t1abb
+2tabd
+3tabel
+2taben
+4tabf
+2tabg
+4tabh
+2t1a2bit
+2tabk
+2tabla
+4tabm
+2t3abn
+2ta4br
+4tabs
+t1abst
+2t3abt
+4tabw
+4tabz
+2t1ac
+4tachs
+3tacu
+t1ada
+2tadd
+ta2der
+tadi3
+t1adm
+ta2dol
+t1a2dr
+ta3d2s
+tad6t3
+ta2er
+3taf.
+3tafe
+4tafet
+4taff
+t1afg
+t1afr
+3tag
+ta2ga
+ta2g1e2i
+tagen1
+t3agent
+4t1agg
+4ta3gl
+4t1a2go
+tag4san
+tags3c
+tag4st
+tah2
+tahls4t
+ta3i2k
+tai2l1
+ta1ins
+tai4r
+ta1ir.
+ta1i2s
+2t1a2ka
+ta3kes
+2t1akk
+ta2kro
+tak4t1o2
+t2aktu
+2takz
+3t2al.
+ta2la
+ta3lag
+tal1an
+ta3lat
+tal3au
+4talb.
+4talbk
+tal3d4
+3tale
+ta4l3end
+tal3eng
+ta4lens
+tal6ents
+ta4lerg
+ta2let
+tal2ga
+tali6ene
+tal4l3ac
+tall3ei
+tal2l1ö2
+tall3s2
+2t1alm.
+3talo
+ta2lop
+ta2l1o2r
+tal2se
+tals3en
+t1alta
+tal3th
+talt4r
+ta2lu
+2tam
+3tam.
+3tame
+5t2amen
+t1a2mer
+tamm1a
+tam4m3er
+t1ampl
+3tams
+t1amt
+2t1a2na
+tan3ab
+4tanal
+ta4nat
+2t1a4nä
+2tanb
+3tanc
+tan3da
+tand4ar
+tan2dr
+tand4st
+ta4nerf
+4tanf
+4tangeb
+tan4gra
+2tanh
+t2anho
+t4ani
+3tanj
+tan2kl
+4t3anl
+t1anm
+4t1anna
+3t2anne
+t1ano
+2tanp
+t1ans
+t2ans.
+4tansi
+tan4tan
+t4ante.
+4tantei
+2tantr
+2tanwa
+2tanwä
+t2anz.
+t1anza
+4tanzei
+2t1anzu
+4tanzü
+tan2z1w
+tao2
+ta3or
+t4ape
+ta2pes
+2tapf
+ta2pl
+ta4poka
+3tapol
+t2appe
+ta2ra
+2tarab
+3tarabb
+ta3rak
+2taram
+tar3ap
+t2arau
+2tarb
+3tarba
+3tarbek
+3tarber
+3tarbi
+3tar3bl
+2tarc
+3tarchr
+t2ard
+t2arei
+ta2rel
+ta2r1er
+tar3g
+ta1r2h
+3tari
+tark4l
+t2arko
+4tarkt
+t2arl
+2t1arm
+t2armä
+ta2rom
+2tart
+t2ar2ta
+tar6ter6e
+3t2arth
+t1arti
+3t4artis
+tar4to
+tar2tr
+ta2ru
+2t1arz
+3tarzu
+3t2as.
+ta3sa
+3tasc
+ta5se
+4t1asp
+2t3assi
+3tast
+tas4tem
+tas4to
+t4at.
+ta2ta2b
+ta2tan
+3tatb
+t4ate
+tat1ei
+t5a2tel
+ta2tem
+3taten
+ta2t1er
+t3atl
+ta2tom
+ta2tr
+3tatsa
+2tatt
+tau2b1a
+3taubh
+tau2bl
+tau2br
+tauchs4
+tauch5sp
+4taud
+2t1auf
+3taufe.
+4taufg
+4taufl
+tau3f4li
+t3aufo
+taufs4
+3taug
+4t3auge
+t1auk
+3taum
+2t1ausb
+3tausc
+tau6scha
+tau6schm
+tau6schr
+tau6schw
+2tausd
+t2ause
+4tausf
+4t3ausg
+t1ausk
+4tausl
+2tausr
+4t3auss
+2t5ausw
+4tausz
+4tauu
+3tav
+4tava
+ta2van
+3tax
+4t1axt
+3taz
+1tä
+2tää
+4täb
+tä1c
+4täd
+t2äf
+3täg
+4tägä
+4tägy
+2täh
+4täll
+2t1ält
+4tä2m
+t1ämt
+t1ängs
+3tänz
+4t1äp
+2täq
+tä4reng
+tä2ru
+2tärz
+tä2s
+t2ät
+3tätigk
+4tätt
+2täug
+2täuß
+2täx
+1tà
+4t3b4
+tbauer4
+tbe3r2e
+tblock5e
+tblocken8
+tby4t
+4t1c
+t3cha
+t3che
+tch2i
+tch3l
+t3chr
+t2ch1u
+tch1w
+t4ck
+t3cl
+tcor2
+t3cr
+4t5d4
+tdar2m1
+tdun2
+1te
+3te.
+te2a2
+tea3c
+te3ad
+te3ag
+2teak
+te3al
+3team
+te3an
+te3ar
+tea4s
+3teba
+t4ebb
+2t1e2ben
+t2ech
+2teche
+3techn
+te2chu
+2teck
+te2cki
+tecks4
+2t1ecu
+te2dit
+te1em
+teen1
+te2er.
+te1erw
+tee3t
+3tefa
+2teff
+2t1egg
+2teh
+3teha
+te2hac
+3tehä
+3tehi
+te2him
+3tehö
+t1ehr
+3tei.
+3teic
+tei1fl
+teik2
+3t2eil
+tei2la
+tei6lent
+teim2
+2tein
+t2ein.
+t2eine
+teinen4
+tei6nens
+tein6hab
+t3einkü
+te2is
+t1eis.
+t1eisb
+te5isch.
+t1eiw
+tei3z
+te2kel
+tekt4
+3tel.
+3te2la
+tel3ab
+tel1ac
+te3lan
+te4lant
+tel1au
+te2lä
+3telb4
+3teld4
+tel1ec
+tel3ehr
+2telem
+tel3eng
+te2ler
+tele3s
+te2leu
+4t3elf.
+3telg
+tel1in
+te2lit
+3telk
+tel6lant
+tel3le
+tel6lein
+tel3li
+4tellu
+3teln
+te2lob
+te4lost
+te2l1ö
+3telp
+3tels
+tel3s2k
+3telt4
+tel3ta
+3tem.
+3tema
+te2map
+te2mau
+t2emb
+te2m1ei
+te2m1er
+te2mi
+tem3i2m
+tem3ing
+2temm
+te2m1o2r
+3temper
+2tempf
+4tempfi
+tem3s
+te2mu
+te4mun
+3ten
+t6en.
+ten1a2
+te4nad
+te4n3an
+te4nas
+te4nat
+ten3au
+ten3ä
+ten3da
+4t3endal
+tend4an
+4tendap
+4t5endf
+4t1endl
+t6endo
+4t5endp
+ten3d4r
+te2n1e2b
+te2nef
+te2neh
+ten3ei
+te3n4ei.
+tene4m
+tenen1
+te4n3end
+te4nene
+te4neng
+te4nens
+4t3energ
+te4n3ern
+te4ness
+tenf4
+4t1eng.
+teng2a
+ten4gag
+4t3engla
+te2ni
+te4nil
+ten1im
+te4n3in
+tenk4
+ten3n2
+te2nol
+te3nö
+ten3se
+4t3ensem
+ten6serg
+tens2p
+tens3th
+t1entb
+4tentd
+ten3te
+4t3entl
+4t3entn
+ten6tric
+4t3en4tro
+2t1ents
+4t5entw
+4tentz
+te2ny
+teo2f
+2tep.
+2t1e2pi
+2teppu
+tept2
+3t4er.
+t4era
+tera2b
+ter3a2c
+te2rad
+te1ral
+tera2m
+ter4ane
+te2r3ap
+ter3a2s
+4terbos
+2t1erbs
+2t1erbt
+3terc
+ter3d
+4t3erde.
+terd2s
+3tere.
+te2re2b
+te2rec
+t3ereig
+3tere2m
+te4r3emi
+3teren
+te4r3end
+te4rene
+te4reng
+te4r3ent
+3terer
+terer3k
+terer3l
+te4r3erp
+te4rers
+te4rerw
+3teres
+te2ret
+t4erfr
+terg2
+ter3ga
+6tergebn
+t6ergem
+t6erges
+t6ergew
+ter3gl
+6tergrei
+t4ergru
+t6erhall
+t4erhan
+t4erhau
+t4erhäu
+t4erhei
+7t2erhi
+t2erho
+6terhöhu
+t2erhu
+te3ria
+ter3iko
+2teril
+terin5d
+3terinf
+3terinh
+ter3k
+4terklä
+t4erlä
+t4erli
+3term
+t2ern.
+ter4nar
+2t6ernc
+ter4obe
+2teros
+t1e2r1ö
+t4erp
+t4erra
+ter4re.
+t4erro
+t4ers.
+t2erse
+terst4
+t4erst.
+t6erstad
+ter6stat
+t4erstä
+t4ersti
+t4erstr
+t4erstu
+t4erstü
+tert4
+ter3ta
+t4eru2
+te4r1uf
+t4erv
+4t3erwäh
+4tery
+ter3z2a
+2t1erzb
+t4erzei
+4terzeu
+ter5zo
+ter3zw
+3tes
+tes3a2c
+tesa2k
+tes2c
+tes4pen
+te2spr
+2t1essa
+tes3si
+tes3tan
+tes4tel
+tes6terg
+tes6terh
+tes6terk
+t3est3ri
+te2su
+tet2
+3t2et.
+te4tabl
+2te2tap
+te2tat
+4tetl
+3teuf
+3teum
+3te1u2n
+4teunu
+2t1eup
+3teur.
+te2va
+te2vi
+tewa2s
+3tewo
+t1e1xa
+2t1e2xe
+te3xel
+2t1e2xi
+4texp
+tex4ta
+2t1exz
+6t3f6
+4t1g2
+tga4s3er
+t3ge
+tgenen3
+tger2a
+tger2i
+tg4r
+t1h
+4th.
+2th2a
+3t4ha.
+3t2hag
+4thak
+3thal.
+t2hali
+3thalp
+t2han.
+t3hand
+t3hap
+4t3hau
+2thä
+4thäl
+2thb
+t2h2e
+1the.
+3thea
+2t3heb
+2t3hef
+2t3hei
+t4he1in
+t4hek
+3t4hema
+2themd
+t4heme
+2themm
+1then
+t4hene
+t4heni
+3theo
+t3herd
+t4herm
+thero3
+t3herr
+2t3herz
+4t3hess
+2thf
+1t2hi
+3thi.
+thic3k4
+t3hiel
+thi3er.
+2t3hil
+2t3him
+t3hin
+thi3nu
+2t3hir
+2thk
+2th3l
+4th3m2
+thmu2
+2th3n
+1t2ho
+2t3hob
+t3hoc
+tho3chr
+t3hof
+2t3hoh
+t4hol.
+t4holo
+2tholz
+tho1s
+2t3hot
+3thotr
+2thou4
+t3hov
+4t3hö
+2thp
+1th2r2
+2ths
+2tht2
+2thub
+2thuh
+4t5hun
+2thut
+2thü
+2thv
+t2hy
+1ti
+ti2ad
+ti3ag
+tial2l
+ti3a2m
+ti2are
+3tib
+2tic
+3ticc
+ti1ce
+t1id
+t2id.
+4tidee
+ti4d3en4d
+tie3br
+3tief.
+4tiefel
+3tiefl
+tie2fr
+tieg4
+2tieh
+ti2e1i
+ti1el
+ti2el.
+tiel3a
+ti3e4n1
+tien3s
+3tiera
+tie4rei
+tie4reu
+ti2ern
+tie3s2t
+4tieß
+ti1eu
+3tif.
+ti3fe
+ti1f4r
+3tig
+ti2gan
+4t3i2gel
+ti4gerz
+ti2git
+tih2
+ti2kam
+ti2kar
+ti4kau
+ti3k2en
+tik4ere
+ti2kin
+ti4klu
+ti2kn
+tik1r
+ti2kra
+ti2krä
+ti4k3rei
+ti4lant
+ti2lar
+ti2lei
+ti2lel
+3tilg
+2tillu
+ti3lo
+ti2lö
+tilt4
+ti2lu
+ti2ma2g
+4timm
+timm1a
+tim4man
+t3immat
+timmer4
+tim6merg
+3timo
+2timp
+tim2s
+3tin.
+ti3naf
+ti3nak
+ti2nam
+ti2n3an
+4t3ind
+ti5n2e
+tine1i
+2t1inf
+tin2g1a
+tin4g3l
+ting3s
+t1inh
+3tinis
+t1in1it
+4tinj
+2t1inka
+tin2k1l
+tin2kn
+tin2kr
+2t1inku
+t2inn
+ti2nor
+t1ins
+3t2ins.
+t3insa
+t2insä
+4t3inse
+tin4spa
+tin4sum
+t1int
+ti3nu
+tin2um
+4t1inv
+3tio
+ti2osk
+tioxi3
+3tip
+ti3p4l
+ti4que.
+3tirad
+ti1rh
+ti4ron
+3tis
+ti6schei
+tisch3l
+tisch3w
+ti2sei
+tis2el
+ti3sk
+2t1isl
+ti2sp
+2t1isr
+tiss4
+ti3s2th
+tis3ti
+ti1s4tr
+ti2su
+tit2a
+ti2tal
+3ti3te
+ti1th
+ti3ti
+2ti3tu
+tium4s
+3tiv
+ti2van
+ti2vel
+ti4vene
+tiver2
+ti4verh
+ti4verk
+ti4verl
+ti2v1o
+ti4v3r
+ti2za
+ti2zir
+2t1j
+4t3k4
+4t3l2
+6tla
+tlan2g
+tl4e
+t2lef
+tlei6der
+tle2ra
+6tli
+tlings5
+tlit1
+t5lö
+tlung4
+4t3m4
+tma2st
+tmen8schl
+tmen6t5
+tmo4des
+4t3n4
+t5na
+tnes2
+tnes4s
+1to
+3to.
+to4as
+to5at
+t2oba
+to3be
+2tobj
+tob2l
+t1obs
+3tobt
+to1c
+t3ochs
+3tocht
+to6ck5ent
+3t4od
+tod1er2
+to4d1un
+tof4fa
+tof6f5ent
+tof4f3er
+2toffi
+toff3s
+3tog
+2t3ohr
+3toi
+toi4r
+4toiz
+3toj
+3tok4
+3tol
+to3le
+4tolp
+4tolz
+tomar4b
+2tomg
+to2min
+2tomk
+3tomo
+to2m1u
+to4mun
+3ton
+to2nan
+tond2
+to2n2eh
+toner6ke
+to4n3ig
+to3ny
+3too
+3top.
+to2pak
+to2pan
+to2pat
+to4pfe
+top1hi
+3topo
+2to4pt
+3tor
+t4or.
+to4rän
+4torc
+t1ord
+t2ordi
+4t3ordn
+t4ore
+to4rein
+to2rel
+to2rem
+to3ren
+tor4fan
+t1or3g
+4torga
+t5orient
+tor3int
+5tork
+to2rop
+to2rö
+t4ors
+4t1ort.
+tor3ta
+t1orth
+4tortn
+4tort2s
+to4ru
+t2orw
+tos2e
+to3s2h
+tos2p
+4toss
+3tost
+4toß
+to1ßu
+to2tä
+3tote
+to2tho
+3totr
+tots2
+5t2ou
+touil2
+to3un
+3tow
+3toz
+1tö
+3töch
+4töck
+2t1ö2d
+2tö2f
+4t1ök
+2töl.
+3tön
+t1öst
+3töt
+2t3p4
+tpf4
+tpi2n
+2t1q
+1t2r4
+2tr.
+5tra.
+3trac
+tra3cha
+tra3chl
+2t3rad.
+5trade
+tra4dem
+t3radie
+2tradp
+tra4fah
+tra4far
+3t4rag
+3trahi
+6trahl
+2trahm
+5t4rai
+3trak
+4t3rake
+5t4rakt
+5tral
+tra4leb
+tral3l
+3t4ran.
+4trand
+4trang
+t3rann
+5t4rans
+tra2st
+6traß
+4traub.
+4trauc
+t4raue
+t4rauf
+2traup
+5träc
+2träd
+3träg
+5träne
+4träng
+4träs
+4träß
+t1räts
+2träuc
+4träus
+4träuß
+4t5re.
+2trea
+t3reak
+4treb
+tre2br
+4trec
+t3rech
+t4reck
+5treck.
+tre5cke
+2t3red
+3tref
+4trefe
+5treff
+4trefl
+4trefo
+4treg
+2t3reh
+t4rei.
+3t4reib
+4treic
+4treif
+2t3reig
+2t3reih
+t4reik
+4t3rein
+2t3reis
+tre7isch.
+4treit
+t3reiz
+4t3rel
+t4rem
+t4ren.
+5trend
+6trendi
+5trennu
+t3rent
+2trepe
+2t3repo
+3trepp
+t3repr
+t4rer
+t4res.
+tre2ta
+t4rete
+tret3r
+tre4tri
+2t3rett
+3treuh
+4t3rev
+2t3rez
+5t4ré
+2t3rh
+3tri
+t4rib
+t4rick
+t4rid2
+5trieb
+trie3fr
+tri4ena
+tri2er
+tri4ers
+4trig.
+2trige
+5t4rigg
+tri3gl
+t4rik
+tri4ke.
+tri4kes
+5triko
+t3rind
+4tring
+tri3ni
+4t3rinn
+t4rip
+4tript
+4t5riv
+tri2x
+trizi1
+3tro.
+tro3b4
+4trock.
+3troe
+t4roi
+tro4kes
+trol4la
+6trom.
+tro6mans
+4tromb
+tro4men
+tro2mi
+4tromk
+4troml
+4troms
+4tromt
+3tron
+tro3na
+t4rop
+3tropf
+tro3sm
+3trost
+2trout
+5troy
+4t3röc
+2tröh
+6tröm
+3tröp
+3trös
+4t3röss
+3tröt
+3trua
+3trub
+2t3ruc
+4truf
+4truk
+trum2
+t3rumä
+trums1
+t3rund
+5trunk
+5t4rup
+t3russ
+2t3rut
+tru2th
+4truw
+trü1be
+trü1bu
+2t3rüc
+trücker6
+t4rüg
+3trümm
+try1
+2ts
+4ts.
+ts3ab
+t3sac
+t4sachs
+t2s1a2d
+ts1ahn
+ts5alben
+t2sall
+ts2ame
+t4samp
+t4s1amt
+t2san
+ts3ane
+ts3a2r
+t2s1a2s3
+t2sau
+ts2av
+t2säh
+ts1än
+ts1äus
+t4sch3am
+t6schart
+t3sche
+t4schef
+t3schl
+tsch4li
+t4schro
+t3schü
+ts2cor
+t2s1e2b
+tse2e
+t2sef
+ts1eh
+tse4he.
+t3seil
+t3seme
+ts1eng
+ts2ens
+t2s1ent
+t2s1ep
+t2s1er
+t6s5essen
+tse2t
+ts1eta
+t2seth
+t2s1eti
+t2s1e2v
+t2sex
+t3sexi
+t2s1i2d
+t2si2k
+ts3iko
+tsing4
+t2sini
+ts1ir
+4tsk
+t3skala
+ts4kele
+t4s3ko
+ts1off
+t3sol
+t3som
+t2s1op
+tso2r
+t2s1ori
+ts3ort.
+t3s2ouv
+t2sö
+t2spac
+t2spal
+ts1par
+ts4pare
+ts1pas
+t2spat
+ts3pate
+t2spä
+t3sped
+t3spei
+t3s2pek
+t2sph
+t3s2pi
+t4s3pic
+t4spins
+t2spo
+t3s2pon
+t3s2por
+t2spro
+ts2pul
+ts4put
+ts5s4
+t1st4
+t4stabe
+t2staf
+t4stag
+ts3tak
+t4stale
+t4s3tanz
+t4stas
+t4stat.
+t4s3täti
+t2stea
+t3stein
+ts4terb
+t3s4tern
+t3s4tero
+t4s5th
+t3stif
+t3stim
+t4stit
+t4stoch
+t4stoi
+ts4tol
+t4stren
+ts4tric
+t4strie
+ts2tu
+t5stub
+ts4tüm
+t4sty
+t2s1u
+5tsubi
+ts3un
+t4sw
+tswa2s
+t3sy
+4t1t
+tt1ab
+tt2ac
+tt3achs
+tt1ad
+tt2ag
+tta6g5ess
+t4t1ah
+tta2ke
+tt2al
+tta4n
+t4tana
+t2tanm
+tt2ant
+t4t1ap
+tt1art
+tt1äh
+tt1ebe
+tt1eif
+tt1ein
+t2t1eis
+t3tel
+tte4la
+tte4l3e4b
+tte4len
+tte4lin
+ttel1o
+t2temu
+tte4na
+t4tentb
+t4tentf
+t4tents
+t2teo
+tt4ere
+tte4rik
+tte2ro
+tt2erö
+tt2es1
+tte4sa
+tte4s3ä2
+tte2so
+tt2häu
+tt3hi
+t2t3ho
+t3ti
+t4tid
+t4t3igi
+t4tinf
+t4tins
+tt2int
+tt4lef
+t4torg
+tto1s
+t2trou
+tt3rü
+tt2sal
+tt2sen
+tts1p
+tt2spe
+tt2spr
+tt4s3tät
+tt3s2z
+tt1u2f
+t3tü
+tt3z2
+1tu
+3tua
+tu4ale
+tu1alm
+tu1alv
+tu3an
+2tub2
+tuba3b
+3tuc
+tu2chi
+tu1cho
+2tud
+tudie4n3
+3tue
+tu2ere
+2tuf
+tuf2e
+tu3fen
+t3u2fer
+3tuff
+tu2gan
+4tuh
+tuh4ler
+tu1ist
+tu2kr
+tul2i
+3tum.
+tum2b5l
+3tume
+4t3umf
+2t3umg
+2t1umh
+2t3umk
+2tuml
+3t2umo
+2t3umr
+4t3umsat
+2t1umsc
+tum2si
+tum2so
+tum4s5tr
+2t3umt
+2t1umw
+2t3umz
+3tun.
+2t1una
+2t1und
+tund2e
+3tune
+tun2en
+2t3unf
+3tung.
+t3unga
+3tunge
+tung4s
+2tunif
+2tu2nio
+2tuniv
+2t1unm
+3tunn
+t1u2no
+t3uns
+3tuns.
+4t3unt
+2t1unv
+2t1up.
+tu2r1ag
+tu2ran
+turan4l
+tu2ras
+tu2rä
+tur1c
+tu2r1e2b
+tu2rei
+tur3eis
+tu4rene
+tu2r1er
+tu4res
+tu2re4t
+tu2r3e2v
+tur3f4
+turg2
+tu2rid
+turin1
+tur4mun
+3turn
+tu2r3o
+turo2p
+tu4ru
+3tus
+tu2sa
+tu4schl
+tu2se
+tu2so
+tu3ta
+2tü
+4tüb
+tü3ber.
+3tüch
+tück2s
+3tüf
+4tüh
+3tüm
+3tür.
+tür1c
+3türe
+3türg
+3tür3s
+3türw
+4türz
+3tütc
+3tüte
+4tütz
+4t1v2
+t3vo
+tvoran4
+4t3w
+t5wa2
+twi4e
+t4wist
+1ty1
+2t1y2a
+3typ
+ty2pa
+tys2
+2t1z
+t2za2
+tz1ag
+tz3ar
+tz1au
+t2z1ä
+t3zäh
+tz1ec
+t2z1e2d
+tz1ehr
+t2z1eie
+t4z1eis
+tze4n1
+tz2ene
+tzen5s4t
+t4z3entg
+t4zentl
+t4z3ents
+tz2ere
+tzer6gre
+tz1erw
+t3zer3z
+t3ze2s3
+tze2t
+tz1eti
+t2z1i2d
+tzig4s
+tz1int
+t2z3om
+tz2th
+tz2tin
+tzu2gu
+t2zuni
+tzwan4d3
+tz1wä
+tz1wi
+t3zwie
+tz1wu
+2ua
+u3a2b
+u1a2c
+uad4r
+ua2g
+u1al.
+u1a2l1a
+u1a2l1ä
+u1alb
+u1ald
+uale2
+u3a2leb
+u3a4lent
+u3aler2
+ua4lerg
+ual3erk
+u3a2let
+u1alf
+u1alg
+u1alh
+u3a2lid
+u1aln
+ua2lo
+u1alp
+u1alr
+u1als
+u1al5t4
+ua2lu
+u1alw
+u1alz
+u1am
+uan2a
+u1ans
+uant2
+uan3ta
+u3ar.
+uara2b
+u1ars
+uar4t3an
+ua3sa
+uasi1
+ua2th
+uat2i
+uat2o
+u3au
+u1ay
+u1äm
+uä2s
+u1äu
+2u1b
+ubb2l
+ube2be
+u8be8cken.
+ube2e
+u2b1ehe
+u4b3eins
+ube4n1a
+uben3o
+ub2er
+u4b3erde
+ubert4
+ub4es
+ub1eul
+u3bit
+ub2l
+ub3läu
+ub3lic
+ub3lu
+ub4lut
+u2bob
+u2bop
+u2b3oz
+ub3ric
+u2b3rit
+ub4rü
+ub2san
+ubsau2
+ub4sche
+ub2s1o
+ub2sp
+ubst2
+ub3t4h
+4uc
+uc1c
+uch1a
+u1cha.
+uch1ä
+u1che
+uch1ec
+u2ched
+uch1ei
+ucherin8t
+u3ches
+u1chi
+uch3im
+uch1in
+uch3l
+uch3m
+uch3n
+uch1op
+u2ch3r
+uch4sel
+uch2so
+uch2sp
+uchst2
+uch6t5erf
+uch6t5ert
+ucht3re
+u1chu
+uch3ü
+uch1w
+u1ci
+uck3elf
+u2ckem
+u4ckent
+uck2er
+ucker8geb
+u2ck3i
+uck4sti
+u1cl
+2u1d
+u3d2a
+ud2e
+ude3i4
+udein7
+udel3se
+ude2n1
+uden3e
+uden3s2
+udert4
+udes2
+udi3en
+uditi4
+ud2ob
+u2don
+ud3ra
+u3dru
+2u1e
+ue2ck
+u2ed
+ue2en4
+u2eg
+u2eh
+ue2k
+u4ela
+ue2le
+ueli4
+uel4lau
+ue2mi
+uen1
+u3en.
+ue4n3a2
+u3end
+uene2
+ue2ner
+uen4gag
+uenge2
+uen2gl
+u3e2ni
+uenk4
+ue2no
+uen6zene
+uen2zu
+uen2zw
+u2ep
+ue2r3a2
+uera4t
+ue2r1ä
+uerb2
+uer6baut
+uer3d2
+uere2
+ue2rec
+uer4ei.
+ue4rein
+ue4r3emi
+u3eremp
+u3e4r3ent
+ue3r4erb
+u3ererf
+ue4rer4g
+uerer4h
+uerer4l
+uerer4m
+ue6rersc
+uerer6sp
+ue6rerst
+uer3esk
+ue2ret
+u3erex
+uer3g2
+u3erin4t
+u3erl.
+u3ern
+uer4nan
+uer4ne
+uern3s4t
+ue2r3o4
+uer2ö
+u3errü
+uer3sc
+uerst6
+uer3t4
+u3eruh
+u3erum
+u3erunf
+u3erunt
+u3erwi
+uer3z2
+ue2ta
+ue4tek
+ue2ti
+u2ev
+ue2x1
+uf1ab
+u3fac
+ufa2ck
+u3fah
+uf1ak
+u3fal
+ufall4
+u3fam
+ufa2n
+uf3ane
+u2f3a2r
+u3fas
+uf1aß
+ufa2t
+uf1au
+u2f1än
+u2f1äs
+u2f1ä2ß
+u2f1ei
+ufel4s3a
+u2f1em
+u3fen.
+u2fent
+u2ferf
+u2f1erh
+u4ferla
+u4ferle
+u4ferne
+u2f1et
+2uff
+uf3fe
+uff4l
+uf2fro
+u2f1id
+u2fim
+u2f1ins
+uf3l
+u2fob
+ufo2r
+uf1ori
+uf3r
+uf5sä
+uf2spo
+uf4stab
+uf4s3tic
+2uft
+ufta2b
+uft1eb
+uft3erd
+uft3er4g
+ufter4l
+uf4tin
+uft3s2
+u2fum
+2u1g
+ug2abe
+u4gabte
+u2g1a2d
+u2g1ak
+u2gani
+u2g1ans
+u2ganz
+u2g1ap
+ug1ar
+ug1au
+ug3d4
+u3ge.
+ug1ei
+u2geig
+u2gein
+uge4lob
+ugen3s2
+u2g1erf
+u2g1erl
+u2gerr
+u2gerv
+u2g1esk
+ug2et
+ugg2
+ugge4st
+ug2gl
+ug3g4t
+ug3hu
+u2g1i2d
+u2gim
+ug1in
+u2gl
+u4g1lä
+u6gleitb
+u6gleitu
+u4glic
+u4glis
+ug3liz
+u4g3lo
+u4glu
+u4g3n
+ugo3
+ugo4b
+ug3oc
+ug3om
+u3gon
+ugo4p
+ug1or
+u3gos
+u2gö
+u2g3rä
+u2greg
+u4g3reis
+u2gres
+ug3rie
+ug3ro
+u2grou
+ug3rüs
+ug3sei
+ug3span
+ugs4por
+ug4spr
+ug4spu
+ugs4tan
+ug3stä
+ugs4to
+ug3s4tr
+ug3stu
+ug4stur
+ug3s4tü
+u2gum
+ug4unge
+ug2uns
+ugu3te
+u2gü
+u1h
+uh2a
+2u5he
+uhe3a2
+uhe1s
+2uhi
+2uhl
+uh1la
+uh2lar
+uh1lä
+uh4l3ent
+uhl3erb
+uh2li
+2uhm
+uhr1a
+uhrei4s
+uh2r3er3
+2uh3ri
+uh4rin
+uh2r3o
+uh2ru
+uh4rü
+uhs4
+u2hu
+2uhü
+uh1w
+2ui
+ui1ch
+ui2che
+ui4cker
+u1ie
+ui1em
+u3ig
+u4ige
+uil4les
+u1im
+u3in.
+u3isch.
+u3ischs
+uis2e
+uisi4n
+ui4s5t
+uit3s
+u1j
+uk2a
+ukä2
+uk1äh
+u3käu
+u1k2e
+uke2n1
+u1ki
+2u1k2l
+ukle1i
+uk4n
+uko2m1
+uk2ö
+u1kr
+uk2ta
+uk2t1el
+uk4tent
+uk2t1er
+uk2tin
+uk4t3o4ri
+uk4t3r
+ukts2
+uk2tum
+u1ku
+uku2s
+uk2ü
+u1l
+ul1am
+ulan2e
+ul2ar
+ula2s
+ul1äm
+ulb4l
+ul4dan
+ul2dei
+ul2dr
+uld2se
+2ule
+u2l1el
+ul1emb
+ule4n
+ul1er2h
+ule2t
+ul1eta
+2ul3f4
+ul1id
+uli2k
+ul1ins
+ul3ka
+ul2kn
+ull1au
+ul3le
+ul4lerk
+ul3l2i
+ul2lo
+ull3s2
+ulm2e
+ulni2
+ulo2i
+u2lop
+u2l1or
+ulp1h
+ul2pha
+ul2sa
+ul4sam
+ul2s1ec
+ul2sei
+ul2ser
+uls2th
+ul2sum
+4ult2a
+ult3ar
+ul4tri
+ult3s
+u2lü
+ul2vr
+ulz2w
+u2mab
+u2m1ad
+u2m1a2k
+um1all
+um1ang
+um1anz
+u2m1ap
+um1a2r
+u2marc
+u2marm
+u2mart
+u3mat
+u4matl
+u4matm
+u2m1aus
+u2maut
+u2m1äh
+1umd2
+u3me.
+u2m1ef
+u2m1ein
+umen1e
+um5engel
+umer2a
+u2m1erf
+um1erg
+u3merk
+u2m1erl
+um1erw
+umes2t
+1umf
+1umg
+um1ide
+um1ind
+um1inh
+um1ir
+1umk
+1uml
+2umm
+um2mei
+u2m3ot
+ump2fa
+ump4fin
+umpf4li
+um2pho
+1umr
+um4sam
+um4s3an
+1umsat
+um4s1er
+um2sim
+um2s1pe
+um2sum
+um3t4
+u2m3um
+u2m1u2r
+1umz
+un1
+4un.
+2una.
+1unab
+un2a3br
+un2ag
+un2al
+u3n2am
+u2n3an
+u2nap
+u2narb
+2un2a1s4
+un3at
+un2är
+2und.
+un2da
+unda2b
+und3ak
+un4dap
+1undd
+2unde
+un3de.
+underer6
+und3erf
+und3erö
+underten8
+under8tend
+und3erz
+un2dex
+1undf
+2undg
+un2dim
+1undn
+undo2b
+un2dop
+un2dor
+4un2d3r
+4unds.
+2undsc
+und3sp
+und3st
+un2d1um
+undü4
+1undv
+1undz
+u3ne
+une2b
+une2d
+un3eid
+un3ein
+un3eis
+un2emi
+une4n1
+unen2t
+u4nerk
+u4n3erz.
+un2es4
+unf2
+un3fa
+unft4s
+un2gam
+un2gat
+3ungena
+unge3r4e
+1unget
+1ungew
+ung5h
+un2glu
+1unglü
+un2go
+un2gr
+ung3ri
+ungs3
+ung4sa
+ungs5tr
+u3nic
+3u2nif
+uni3k4
+un2im
+1unio
+un2ir
+un3iro
+un3isl
+u3n2it
+1u2niv
+2unk
+un2k1a2
+un3ker
+un2k1es
+un2ket
+un2kne
+unko2p
+un2kro
+unk3s2
+unk4tit
+unk2tr
+unk4tri
+unlö2
+unna2
+un2n1ad
+unn2e2
+unne4n
+u2nob
+uno4r
+un2os
+1unr
+uns2
+2uns.
+unsch5el
+un3se
+1un3si
+un3sk
+un3sp
+unsta4g
+unste4c
+uns4t1r
+4unsy
+4unsz
+1unt
+un3ta
+un3te
+unte4ri
+4unti
+un3tr
+unt3s
+2untu
+3unty
+2u2nu
+u3nuc
+unvol2
+unvoll3
+1unw
+4unwä
+3unwe
+u2ny
+2unz
+un3z2a
+unz2e
+2uo
+u1o2b
+u3of
+u3or.
+u1or3c
+uore4
+u3o2ret
+u3ors
+u1ort
+u1orw
+uos2
+u1os.
+uote2
+u1o2x
+uö2d
+u1ök
+u1pa
+3upd
+u1pe2
+uper1
+upe4re
+uperer4
+up2fa
+u2pfe
+u2pf1i
+up2fu
+3upg
+u3p4i
+up4lu
+up2pl
+u1pr
+upra3
+u2p3ras
+up4t3a2
+upten1
+up4tene
+upt3erf
+upt3erg
+upt3erk
+upt3ers
+up4tid
+up4tim
+up4t1o
+up4tr
+u1q
+4ur.
+u1ra
+u2rab
+u3raba
+ura2be
+u2r1akt
+u2ral4t
+u2r1a2m
+ura4na
+uran3a4t
+u3rand
+ur1ang
+uran4ge
+ur2anh
+uran5s
+ur1anz
+ur3ap
+u2r3ar
+ura4ri
+u3rasc
+ur3asp
+ura4str
+ur4ate
+ura3to
+u2r3att
+u2r1au
+2u1rä
+ur1äl
+ur1ä2m
+ur1än
+ur3b2a
+2urc
+urch1
+urcht3e
+urd2
+ur3da
+ur3di
+ur1eff
+ur1eig
+u2rele
+ure2n
+ure4na
+uren6gag
+u4rense
+u4rentn
+u2r1ep
+ur1er3h
+urer3k
+ur2ert
+u2rerw
+ur1eta
+ur2eth
+ure3u
+2urf
+ur2f3l
+ur2fro
+urf4spr
+urf3t
+ur6gense
+urg3inn
+urg1l
+ur2gla
+ur2gri
+urgros4
+urg3s4
+uri2c
+ur1ide
+uri3en
+u2rind
+urin8stin
+ur3ku
+ur3l
+ur4mant
+ur4matt
+ur2mau
+urm2ei
+ur4mern
+urmet1
+ur2mum
+ur2mun
+ur3n2e
+4u1ro
+ur1off
+uro1s4
+urost2
+2u1rö
+ur3p4
+2urr
+ur3re
+3ur3sac
+ur2san
+ursau4
+ur2s1er
+ur4s1of
+ur2spa
+urst4r
+ur3sze
+urt2
+2urta
+ur2tai
+urt3ein
+ur3ti
+ur2tro
+urt3sc
+u3ru
+uruf4
+urü2
+ur2z1a2
+ur2zä
+ur2z1ec
+ur2zep
+ur2zi
+ur2z1op
+urzt4
+ur2z1w
+2us
+us3a2b
+u4s3af
+usa2gi
+u4s1amb
+u4samt
+u2sang
+us2ann
+us3ark
+u2s1a2s3
+u2säh
+u4schab
+u4schak
+u3sche.
+u4schef
+usch5eic
+u4sch3eu
+u3schi
+usch3mü
+u3schu
+usch5wer
+u3se.
+u3s2e3b
+u2s1ec
+u2s1ei
+u3seid
+u4sense
+u4sentl
+u3sep
+use3ran
+use4rec
+u2s1erl
+u2serp
+us1erw
+u2s1ese
+u2sex
+u3si.
+u2sid
+usi3er.
+usi5ers.
+us1inn
+us1is.
+us3kl
+us3oc
+us1oh
+u3sol
+u2sop
+us1ou
+u2spac
+us3part
+u2s1pas
+us1pe
+u3s2pec
+u3s2pek
+u2sph
+us1pic
+u3spit
+u3s4piz
+u2spo
+us2por
+u2spu
+usrich7
+us2s1eb
+usse4g
+uss2el
+usse4n
+us2sep
+us5ser.
+uss3erf
+usser4z
+us4sesp
+us2sez
+us2sof
+us2sum
+u1stal
 us3tau
-u2s1uf u8surn ut1ac u1tal uta8m u1tan ut1ar u1tas ut1au
-u1te u8teic u4tent u8terf u6terin u4t3hei ut5ho ut1hu u1ti utine5
-uti6q u1to uto5c u1tr ut1sa ut1s6p ut6stro u1tu utz5w u1u u1v uve5n
-uve3r4ä u1w u1xe u5ya uy5e6 u1yi u2z1eh u8zerh u5ö uße6n
-ußen5e 8vanb 6vang 6varb var8d va6t5a va8tei
-va2t1r 2v1b 6v5c 6vd 1ve 6ve5g6 ver1 ver5b verb8l ve2re2 verg8 ve2ru8
-ve1s ve2s3p ve3xe 2v1f 2v1g 6v5h vi6el vie6w5 vi1g4 vi8leh vil6le.
-8vint vi1ru vi1tr 2v1k 2v1l 2v1m 4v5n 8vo8f voi6le vol8lend vol8li
-v2or1 vo2re vo8rin vo2ro 2v1p 8vra v6re
-2v2s
-2v1t 2v1v 4v3w 2v1z
-waffe8 wa6g5n 1wah wah8n wa5la wal8din wal6ta wan4dr 5ware wa8ru
-war4za 1was w5c w1d 5wech we6fl 1weg we8geng weg5h weg3l we2g1r
-weh6r5er 5weise weit3r wel2t welt3r we6rat 8werc 5werdu wer4fl 5werk.
-wer4ka wer8ku wer4ta wer8term we2sp
-we8s4tend
-we8str
-we8stö wet8ta wich6s5t 1wid wi2dr wiede4 wieder5 wik6 wim6ma
-win4d3r 5wirt wisch5l 1wj 6wk 2w1l 8w1n wo1c woche6 wol6f wor6t5r 6ws2
-w1sk 6w5t 5wunde. wun6gr wu1sc wu2t1 6w5w wy5a wärme5 wä1sc
-1xag x1ak x3a4men 8xamt x1an 8x1b x1c 1xe. x3e4g 1xen xe1ro x1erz
-1xes 8xf x1g 8x1h 1xi 8xid xi8so 4xiste x1k 6x1l x1m 8xn 1xo 8x5o6d
-8x3p2 x1r x1s6 8x1t x6tak x8terf x2t1h 1xu xu1e x5ul 6x3w x1z 5ya.
-y5an. y5ank y1b y1c y6cha y4chia y1d yen6n y5ern y1g y5h y5in y1j
-y1k2 y1lak yl1al yla8m y5lax y1le y1lo y5lu y8mn ym1p2 y3mu y1na yno2d
-yn1t y1on. y1o4p y5ou ypo1 y1pr y8ps y1r yri3e yr1r2
-ys5iat ys8ty
-y1t y3w y1z yä8m z5a6b zab5l 8za6d 1zah za5is 4z3ak 6z1am 5zange.
-8zanl 2z1ara 6z5as z5auf 3zaun 2z1b 6z1c 6z1d 1ze ze4dik 4z3eff 8zein
-zei4ta zei8ters ze6la ze8lec zel8th 4zemp 6z5engel zen8zin 8zergä
-zer8i ze1ro zers8 zerta8 zer8tab zer8tag 8zerz ze8ste zeu6gr 2z1ex
-2z1f8 z1g 4z1h 1zi zi1en zi5es. 4z3imp zi1na 6z5inf 6z5inni zin6s5er
-8zinsuf zist5r zi5th zi1tr 6z1j 2z1k 2z1l 2z1m 6z1n 1zo zo6gl 4z3oh
-zo1on zor6na8 4z1p z5q 6z1r 2z1s8 2z1t z4t3end z4t3hei z8thi 1zu zu3al
-zu1b4 zu1f2 6z5uhr zun2a 8zunem zunf8 8zungl zu1o zup8fi zu1s8 zu1z
-2z1v zw8 z1wal 5zweck zwei3s z1wel z1wer z6werg 8z5wes 1zwi zwi1s
-6z1wo 1zy 2z1z zz8a zzi1s 1zä 1zö 6zöl. zö1le
-1zü 2z1ü2b ä1a6 äb1l ä1che ä3chi
-äch8sc äch8sp ä5chu äck5a äd1a äd5era
-ä6d5ia ä1e ä5fa äf1l äft6s äg1h
-äg3le ä6g5nan äg5str ä1he ä1hi äh1le
-äh5ne 1ähnl äh1re äh5ri äh1ru ä1hu
-äh1w 6äi ä1isc ä6ische ä5ism ä5j
-ä1k äl1c ä1le ä8lei äl6schl ämi1e
-äm8n äm8s ä5na 5änderu äne5i8 äng3l
-änk5l ä1no än6s5c ä1pa äp6s5c 3äq
-är1c ä1re äre8m 5ärgern är6gl ä1ri
-3ärmel ä1ro ärt6s5 ä1ru 3ärztl ä5rö
-ä6s5chen äsen8s äs1th äta8b ä1te äteri4
-äter5it ä6thy ä1ti 3ätk ä1to ät8schl
-äts1p ä5tu äub1l äu1e 1äug äu8ga
-äu5i ä1um. ä1us. 1äuß ä1z
-ö1b ö1che ö5chi
-öch8s2tei
-öch8str öcht6
-5ö6dem 5öffn ö1he öh1l8 öh1re ö1hu
-ö1is ö1ke 1ö2ko 1öl. öl6k5l öl8pl
-ö1mu ö5na önig6s3 ö1no ö5o6t öpf3l
-öp6s5c ö1re ör8gli ö1ri ör8tr ö1ru
-5österr ö1te ö5th ö1ti ö1tu ö1v ö1w
-öwe8 ö2z üb6e2 3ü4ber1 üb1l üb1r
-5ü2bu ü1che ü1chi ü8ch3l üch6s5c ü8ck
-ück1a ück5ers üd1a2 ü6deu üdi8t ü2d1o4
-üd5s6 üge4l5a üg1l üh5a ü1he ü8heh
-ü6h5erk üh1le üh1re üh1ru ü1hu üh1w
-ü3k ü1le ül4l5a ül8lo ül4ps ül6s5c
-ü1lu ün8da ün8fei ünk5l ün8za ün6zw
-ü5pi ü1re ü8rei ür8fl ür8fr ür8geng
-ü1ri ü1ro ür8sta
-ü1ru üse8n
-ü8sta ü8stes
-ü3ta ü1te ü1ti
-üt8tr ü1tu üt8zei ü1v ß1a8 5ßa.
-ß8as ß1b8 ß1c ß1d
-1ße ß5ec 8ße8g 8ße8h
-2ß1ei 8ßem ß1f8 ß1g ß1h
-1ßi ß1k ß1l ß1m
-ß1n ß1o ß1p8 ß5q
-ß1r ß1s2 ßst8 ß1ta
-ß1te ßt3hei ß1ti ß5to
-ß1tr 1ßu8 6ß5um ß1v ß1w
-ß1z
-2s1ta.
-i2s1tal
-2s1tani 2s1tan.
-fe2s1ta
-ta2s1ta
-te2s1ta
-nd2ste
-ve2ste
-3s2tec
-4s3techn
-3s2teg
-3s2teh
-3s2tein 3s2teig 3s2teif
-3s2tell 3s2telz
-a4s3tel
-3s2temm
-3s2temp
-3s2tep
-s3s2ter t3s2tern
-3s2teue
-6s4teuro
-bs2ti
-te2s3ti
-ve2sti
-3s2tic
-3s2tieb
-3s2tieg
-3s2tif
-3s2til
-3s2tim
-3s2tink
-3s2titu
-a2s1to
-gu2s1to
-ku2s1to
-i2s1tol i2s1tor
-ve2s1to
-2s1tung
-2s7tus
-o2s1tul
-aus3s4
-ens3s4
-gs3s4
-.mis2s1
-s2s1b8
-s2s3chen
-s2s3d
-s2s5ec
-2s2s1ei
-s2s3f
-s2s1g
-s2s3h
-s2s3k
-s2s3l
-s2s3m
-s2s3n
-s2s3p8
-s2s5q
-s2s3r
-s2s3s2
-sss2t8
-as2s3te
-is2s3te
-us2s3te
-üs2s3te
-s2st3hei
-s2s3ti
-s2s1to
-s2s1tr
-6ss5um
-s2s3v
-s2s3w
-s2s3z
-1cker.
-1ckert
-1ckad
-1cke.
-1ckel
-1cken
-4ck1ent
-1ckere
-1ckern
-1ckeru
-1ckie
-1ckig
-1ckun
+us4tein
+u1stel
+ust3erl
+us2th
+us3ther
+us3t2in
+us3tr
+u3s4tras
+us6tris
+u1stu
+u2stun
+u2stur
+u2sumd
+u2sumg
+u2sumz
+3usus
+u2sü
+2u1ß
+u2ß1u
+2u1t
+u3taf
+u2t1alt
+u4t1a2m
+ut2ans
+u2t1ap
+u2t1ar
+uta2s
+u2taut
+ut1äh
+u2tär
+ut3c
+ut1e2d
+u3teh
+ut1ei.
+ut1eie
+ut1ein
+u3tek
+ut1ela
+u3tem
+ute2n1
+uten2a
+u2tent
+u4tentf
+uter3a
+ute4ral
+ute5r4er
+ute6ring
+ute4ros
+ut2es
+u3t2et
+u2t2ev
+u2t1ex
+utfi2
+ut3hel
+u2t3hi
+u2t3ho
+u2thu
+u2thy
+u2tid
+uti2vi
+utli4n
+uto3
+uto4ber
+u3tom
+u2tops
+utor2a
+u4tord
+utos4
+u2töl
+4utr
+ut3rea
+u2trou
+ut3rü
+4uts
+ut3sau2
+ut2säu
+ut4schl
+ut4schm
+ut4scho
+ut4schö
+ut3ser
+ut3s2k
+ut3te
+ut5t2l
+utt4le
+utts2
+utu2b
+u2tum
+utu4n
+u4t1une
+utu4re
+utu3ro
+utu5ru
+u3tü
+u4tz
+ut2zeh
+utz3eng
+utz2er
+ut2zet
+ut2z1in
+ut2z1w
+2u3u4
+uufe2
+uum1
+uuma4
+u1ü2
+2u1v4
+u2ve.
+uve3rä
+u1w
+2u1x
+ux2e
+ux2o
+ux3t2
+u1ya
+2u1z
+u2z1ec
+uz2er
+uzo2f
+uz3ot
+uz1we
+uz3z2
+1üb
+üb1ä
+2übc
+2übd
+üb4e2
+übe3c
+übe3le
+übe4na
+übe3ne
+über3
+ü4bet
+üb3l
+üb3r
+üb2s3t
+2üc
+ü1che
+üch3l
+üch2s1c
+ücht4e
+ü3cke4n
+ück1er
+ück3eri
+ücker6ke
+ü4ckers
+ü2ckin
+ü4d3a4
+üde2c
+üde2l
+ü3den.
+üden2g
+ü3d2ens
+üd3o4
+üd3r
+üd3s2
+üd3t4
+üdu2
+üe2
+üeb3
+ü1ei
+ü2f1a
+ü2f1ä
+ü2f1ei
+ü2fent
+üfer2
+ü2f1erg
+üf2fl
+ü2f3i
+üf3l
+ü2fo
+üf3ter
+ü2fum
+ü1g
+üg2e
+üge2l1a2
+üge2lä
+üge4lec
+üge6lei6s
+üge2lo
+ügen3s
+ü2g3l
+ü2gn
+üg3s2
+üg4s3t
+üh3a2
+ü1he
+ü2h1ei
+ü2h1eng
+ü2h1ent
+üh1er
+ü2herf
+ü2her2k
+ü2her2z
+ü2hex
+üh1i4
+ühla2
+üh1lä
+ühl2er
+ühl4sta
+ühl4sti
+üh3mo
+üh3ne
+ühn2s
+üh1o2
+üh3r2e
+ühr3ei.
+ühre2n1
+ühren3s4
+üh1ro
+ühr3ta
+üh1s
+ühs2p
+üh3t2
+üht4r
+ü1hu
+üh1w
+ü1k2
+ül1a
+ül2c
+ü3l2e
+ü4l3ef
+üle2ra
+ül2l1a2
+ül2l1ei
+üll2er
+ül2lid
+ül2lo
+ül2lö
+ülls2
+ü2lö
+ü1lu
+ü2ma
+ü2ment
+üme2ra
+ü2m1id
+ü2m1in
+ü2m1u
+2ün
+ü4n3a2
+ün2da
+ün2dr
+ünd3s
+ü2n1erd
+ünf1
+ünf3li
+ün2g3l
+ün2s
+ün3sc
+ün3se
+ün3sp
+ünster3
+ün3str
+ün2za
+ünzu2
+ün2zun
+ün2zw
+ü1pe
+üpf3l
+ü1pi
+üp2pl
+ür1a
+ü2r1ei
+ü2r1e2l
+ür2fl
+ür2fr
+ür4g3en4g
+ürge4ra
+ürk2e
+ü1r2o3
+ürom2
+üror2
+ürr2
+ür2s
+ür3sc
+ür3se
+ür3si
+ür3sp
+ürte2l3
+ürt4h
+ürz2a
+ür2z1in
+ür2zö
+ür2z1w
+üs2a
+ü2schl
+üs2e
+üse1e2
+üse3l2
+üse4n
+üse1r4
+üse1s
+üse3t
+üs2s3a
+üs2s1c
+üss2e
+üs4s1o
+üs2st
+üst3a2
+üste2n
+2ü1ß
+2üt
+ü2t1al
+üte3m
+üte4n
+üten3s
+ütent4
+üten3z2
+üte2ra
+üte2r1e
+üterich6
+üter3n
+ü2t3h
+ü2t3r
+üt2s1
+ütte4n
+üt2tr
+üt3z2e
+üt2zw
+ü1v
+ü1z
+3va.
+2v1ab
+vab4r
+va1c
+va1f4
+vag2a
+va2la
+2valu
+2vanb
+2vang
+2varb
+v1arm
+va1s2
+2v1ass
+v4at
+va2t1a2
+va2tei
+va4t3eng
+va4tess
+va2t3h
+va4tid
+vatik2
+va4tim
+va4t1in
+vati8ons.
+va4tord
+va4t3r
+vat3s4
+va2t1u
+2v1au
+2v1b
+2v1c
+2v1d2
+1ve2
+ve3an
+ve3ar
+veau1s
+ve3b4
+ve3d
+ve3fa
+ve3g
+ve3h2
+2veig
+v2eil
+2vein
+veit2
+veits3
+ve3la
+2velan
+ve4l1au
+v1ele
+ve3lei
+ve3li
+ve3lo
+ve3ma
+ve3me
+2vemu
+ve3nal
+ve4nas
+ven2c
+ve3ne
+ve3ni
+ve4nin
+ve3nö
+ven6t3ag
+ve3of
+ver1
+ver3a
+ve3rad
+2veral
+ve3rand
+ver4ane
+vera4s
+ver6bart
+ver3b2l
+ver3d2
+vere2
+ve4rek
+verf4
+ver3fa
+ver3g4
+ve3ri
+ve4rin
+ver3k
+vern2
+ver4sep
+vert4
+ver5te
+ver3u4
+ves1
+ve3sa
+2ve3s2c
+2ve3s2e
+ves3ti
+ve3t
+vete1
+vete3r
+2veü
+ve3v
+ve3w
+ve3x
+2v1f4
+2v1g
+2v1h
+vi2ad
+vi3ar
+vi4a3t
+vi2ä
+vi2c
+vi3de
+vid3s2t
+vie2h1a
+vi2el
+viela2
+viele2
+vi2er
+vie4rec
+vie2w1
+vig2
+2vii
+v2il
+vi2l1a
+vi2lä
+vi4l1e2h
+vi2lei
+vi4lers
+vi2l3in
+2v1i2m
+vima2
+vi4na
+2v1in3d
+ving5
+2v1int
+vi3sa
+vise4
+vi3s2i
+vi3s2o
+vi2sp
+vis2u
+viv2
+vi3z
+vize1
+2v1k
+2v1l2
+v3le3
+v2lie
+2v1m
+vm2e
+2v1n2
+1vo
+2v1ob
+vo2be
+vob4l
+vo3ga
+voge2l1
+vo2gu
+vol2a
+vol2l1a
+vollen6
+vol6lend
+vol6lert
+vol2li
+2v1op
+vo2r1
+vor3a
+voran8schl
+vore2
+vor3g
+vo3ri
+vo4rie
+vo5rig
+vorm2
+vormen4
+vor3o
+vort4
+vot2a
+voy1
+vö2c
+2v1p
+vr2
+v1ra
+v2ree
+3v2ri
+v1ro
+2vs
+vs2c
+vs2e
+vs2p
+v1sta
+v1steu
+v3s2z
+2v1t
+vue3
+vu2enu
+vu2et
+2vumf
+2vumg
+2vumk
+2v1ü
+2v1v
+2v1w
+2v1z
+w2a
+1waa
+wab2bl
+wa3che
+wach8stub
+wach4t4r
+1wack
+waffe2
+waffel3
+1wag
+wa5ge
+3wage4n
+wa2g3n
+wa3go
+1wah
+wahl5ent
+wah4ler
+wah2l1i
+1wal
+wala3c
+wa2lar
+2walb
+wal2d3a
+wal4din
+wa2les
+wa3li
+wal2m1
+wals2
+wal2t1a
+wal6tere
+wal6terl
+wal4to
+wal4tur
+3walz
+wa3na
+wan2d1a2
+wandels6
+wan2dr
+w3anf
+2wang
+wan3g2e
+wang4s
+1wann
+wan6z5en6d
+wan4zer
+wa2p
+1war2e
+ware1i
+wa3ren
+1warn
+wart4e
+war2th
+1was
+wa3sa
+was2c
+wa4scha
+wa3sche
+wa4sch3l
+wa4schw
+wa3sh
+was3s
+wass4e2
+wa3su
+w2ä
+1wäh
+1wäl
+2wäng
+1wäs
+wäs2c
+wäss4e
+2w3äu
+2w1b2
+wbu2
+2w1c
+2w1d
+we2a
+we2b1a
+webe1i
+we2b3l
+we2bo
+we2b3r
+webs2c
+we3cke.
+we5cken.
+we3ckes
+we2e2
+weed3
+we2fl
+1weg
+we2g1a
+we4g1ei
+weg5ersc
+we4g3l
+we4gn
+we2g1o2
+we2g3r
+weg3s
+wegs2a
+wegs4t
+1weh
+weh4r3er
+wei2bl
+weib4r
+wei3dr
+2weie
+weifel6d
+wei2gr
+weigs4
+wei3k4
+3weil
+wei3nel
+weins3a
+weinsau6
+wei3sc
+weis6sel
+weis6spi
+wei2t3r
+wei5ze
+wel5le4
+wel6schl
+wel6schr
+wel2t1
+wel4t3a2
+welte2
+wel6t5en6d
+wel4th
+welt3i
+wel4to
+wel4t3r
+wen3a2
+wendes4
+wen2gl
+we3n2i
+wen2ka
+wen4kla
+wen4k3ri
+we2r3a2
+wer5be
+werbe3i
+wer2bl
+werb2s
+1werbu
+werd2
+werde3i
+5werdens
+1werdu
+werer2
+wer2fl
+2werg
+wer6gels
+wer2g3o
+wer2gr
+werin2
+we4r3io
+1werk.
+wer2k1a
+1werke
+wer2ki
+wer2k3l
+wer2kn
+wer2ko
+wer4kre
+wer2ku
+we2rö
+wer2s
+wer2t1a
+wer2tä
+wer3t3ei
+wer6teig
+werter6k
+wer6t5erm
+wer2th
+wer4t1o2
+wer4tre
+wer4t3ri
+wer4tum
+1wes2e
+we2s1p
+we4st
+wes4t1a
+weste2
+west3ei
+wes6ten6d
+wes4tex
+wes4ti
+wes4t1o4
+west3r
+wes2tu
+1wet
+2wets
+wett3s
+2w3ey
+2w1g
+whi4
+w3ho
+w2i
+wicht4s
+wi1cka
+1wid
+wi2e
+2wieb
+1wied
+wie3l
+wie3n2e
+1wild
+wim2ma
+wim4m3u
+win2a
+win4d3e4c
+win4dei
+win6d5erz
+1win2d5r
+2wing
+win2g3r
+win2kl
+win8n7er8sc
+win2no
+win3s
+wint2
+1wi4r
+wire3
+wisch3l
+wi5s2e
+wi2sp
+1wiss
+wiss4z
+wi3th
+1witz.
+1witzl
+wiz2
+2w1k
+2w1l
+2w1m
+2wn
+wns2a
+wn3sh
+1wo1c
+wo2cha
+woch2e4
+1woh
+woh4lei
+1wolf
+wolf2s3
+wol2la
+wol4ler
+wor3a
+wor3d
+wo2r3i
+worn2
+wort1a
+wor4tel
+wor6terh
+wor4t3r
+wort3s2
+wo4r3u
+wor3ü
+wot2
+1wöc
+wöl2fo
+wört4h
+2w1p
+w2r
+w3ro
+4w1s
+ws2e
+w3s2h
+w3s2k
+ws2t
+2w1t
+wti2
+1wuc
+wuch4sc
+wuch4st
+w1u2f
+wul2
+wul3se
+wund4e
+wung3r
+wungs4
+wun2s
+wunsch5l
+4wur.
+wur2fa
+wur2f1o
+wur2fr
+wur2s
+1wurst
+wus2
+wus3te
+1wu4t1
+1wüh
+wül2
+wün3
+1würf
+1würst
+2w1w
+2w1z
+x1a
+1xa.
+2xa2b
+1x2ad
+1xae
+xa1fl
+1x2a3g2
+2xal
+xal2l
+xa2m
+xand4
+x2an3t2
+x2anz
+1x2as
+2x1b4
+2xc
+x1ce
+x1ch
+x1cl
+4x1d
+xda4
+1xe
+2x1e4g
+2xek
+xe2l
+x1ele
+x1em
+3x2em.
+x2ems
+x2en
+xen3s2
+x2er.
+x2ere
+2xerl
+xers2
+2x1eu
+2x1ex
+4x1f
+2x1g
+2x1h
+xi1c
+xich2
+2xid
+xi2dan
+xide2
+xi2dei
+xi2d1em
+x1i2do
+xi4ds
+3x2ie
+xie3l
+xi3g
+xi2ler
+xi2lo
+xi2l1u
+xim2
+xin3s2
+x2is1
+xi2sa
+xis2c
+xi2se
+xi2so2
+xi2sp
+xis3s2
+xis3t
+xis4tä
+xi2su
+x1i4tu
+xive4
+2x1j
+2x1k2
+xkal2
+4x2l2
+x3lä
+x3le
+2x1m
+2x1n
+2xod
+2x3oe4
+x1or
+2x1ö2
+4x1p
+xpor6ter
+xpor4t3r
+x1q
+2x1r
+4x3s2
+4x1t
+xt1a
+x3tan
+xt2ant
+x3tas
+x2t1ä
+x3tät
+xtblo4
+x2t1e2d
+xt1ein
+x2t1el
+x4tent
+x2t1er2f
+x2t1ev
+xtfi2
+x2t3h
+x2tid
+xti2la
+x2til2l
+xt1o2
+x4tor
+xtra3b4
+x2t3ran
+x2trau
+xt3rec
+xt3s2
+x2t1um
+x2t1un
+1xu
+xu1a
+2x1u2n
+xu2s3
+xuss4
+2xv
+2x1w
+2xy
+3xy.
+3xys
+2x1z
+2yab
+1ya2c
+y2ach
+y2ag
+ya1h
+y1al.
+y1a2m
+y2ana
+yan2g
+y1ank
+y2a3ra
+ya2s3
+yat2
+ya3z
+y1ät
+y1b
+y1c
+y2chi
+y3chis
+ych3n
+y1d4
+y3dr
+ydri4
+ydrid1
+y1e
+y2ec
+ye2d
+y2ef
+y2el
+yen4n
+y2ere
+yer2n1
+y2es
+yes2p
+y3est
+ye2th
+y1f2
+y1g
+ygi2
+ygie5
+yg2l
+y1h
+yhr2
+y3i4
+y1j
+y1k2
+yke3n
+yk4l
+yk3s2
+y1l
+yl1a2c
+y2l1a2m
+yla2n
+yl3ane
+y3lant
+yl4ante
+yl4anti
+y4lantr
+y3lat
+ylau2
+yl3c
+yle2
+y2le.
+yl1em
+y2l1es
+y2l1et
+yli4n
+yloi4
+yloid1
+yloni1
+yl1ora
+yl3s2
+ym4a
+ym4e
+ymp4
+ym2pha
+ympi1
+yn2eu
+yn3k2
+y2n1o
+yno4d
+yno4t
+yob2
+yoga3
+yom4
+yon2a
+yon4i
+y1ont
+y1o1s2
+y2ost
+y1ou
+2y1p
+ypa2
+yp1ab3
+yp1an
+yp2e2
+y2pf
+y2p1i2d
+y2p1in
+y2p3l
+ypo3
+y4p3s
+yp3t
+ypu2
+y2p1um
+y1q
+y1r
+yra3k
+y3r2e
+y3ri
+yri2a
+yri1e
+yri3en
+y3ro
+yros3t
+yrr2
+ys2an
+ys2c
+ys2e1
+ysein2
+y3s2h
+y4s3l
+ysme3
+ys4po
+ys1pr
+yst2e
+yst4h
+ys2the
+ys3to
+ys3tr
+ys4tra
+y4stro
+y3s2ty
+ysu2
+y2s1ur
+y3s2z
+y1t2
+y2te.
+y2tes
+yt4h
+ythe1
+y3to1
+ytos2
+y4t3r
+yt3t
+y1u2r
+y1v
+y1w
+y1y
+y1z2
+yze3r2
+2z1a2b
+zab3l
+za1c
+2z1a2d
+2z1af
+za3gr
+3z2ah
+zah3le
+zah4ner4
+2z3ak
+4zakk
+2z1al
+3zali
+2z1a2m
+z1a2n
+z2an.
+4za4na
+2zanb
+za3ne
+2zanf
+2zangs
+3z2ank
+zan2ka
+2zanr
+zans4
+zanti1
+za4pf
+z1aq
+z1ar
+3zar.
+2zarb
+2zarm
+3z2aro
+zar2tr
+2z1as
+za2sc
+zast4
+z3at
+zat2e
+za2to
+3zaub
+z1au2f
+2z3aug
+3zaun
+z3aur
+2z1aut
+zä2
+2z1äc
+z2äh
+zä3hi
+2z1äm
+z1än
+z1äp
+z1är
+2z1äus
+2zäuß
+4z3b4
+zbe3r2e
+zbü1b
+zbübe3
+2z3c
+2z3d2
+zdan2
+zdä1
+zdi1st
+3ze.
+2z1e2ben
+ze1c
+2z1e2cho
+ze1e2
+zeeu3
+2z1eff
+z1e2ga
+zehe4
+zehen1
+zeh2l
+ze3ho
+z2ei1f4
+zeil2
+zei3la
+zeile4
+2z1ein
+ze3in.
+z2e1ind
+zei4ne
+z2eino
+ze3inse
+ze2i1s4
+zei3sk
+zeist4
+3zeit
+zei2t1a
+zei4t3er
+zei4to
+zei2tr
+zei4t3ri
+ze2l1a
+zela2d
+ze2l1ä
+zel3d
+2ze2lek
+2zelem
+ze2len
+ze2l1er
+ze2l1in
+2z1e2lit
+zel3la
+zel4l3ac
+zel6lein
+zel6ler6t
+zell3s2
+zelm4
+ze2l1o
+zels2
+zel3sa
+zel3sz
+zelu2
+zembe2
+2z1emp
+5zen.
+ze4n1ac
+ze4nas
+zen3au
+ze3n2em
+zenen1
+4zenge.
+z4engl
+2zengp
+zen3n
+ze2n3o
+ze4not
+4zensem
+zens2p
+zen4tha
+z2entn
+zent3s
+2zentw
+2zentz
+zen4z3er
+zen2zw
+zeo4r
+3z2er.
+ze2rad
+ze1ral
+ze2re2b
+z2erfe
+2z1ergä
+4z3ergeb
+z4erges
+z4ergl
+zer4gon
+2z1ergu
+z2erhe
+2z3erhö
+zerin6te
+z2erko
+3zerl.
+zer4lau
+zer4le.
+4zerleb
+zer4len
+2zerlö
+3z2ern
+zer4nan
+zer4n3e4b
+zer4nei
+2z1erö
+zer2öf
+2z1erq
+4z3erreg
+zers2
+z2ers.
+2z1er4sa
+zerta2
+zer4t3ag
+zert4an
+zer6teng
+zer6tere
+zer6terl
+zer4tin
+zer4to
+6z5ertrag
+zer6trau
+z1erwe
+2z1erz
+zer2ze
+4z3erzi
+ze2sä
+ze3sch
+zes1e
+ze2sp
+ze4spo
+ze4spr
+zes2sa
+zes4seb
+zes4sei
+zessen4
+zes6s5end
+zes6sent
+zes4ser4
+zes2sp
+zes2st
+ze1sta
+ze3stau
+zes5tr
+zes6tra
+2zeta
+2z1e2th
+ze2tr
+2zetts
+zeu2g3r
+2z1eul
+ze1ur
+2z1e2x1
+4z3f4
+zfeue2
+2z3g4
+zger2a
+zger4s3
+2z1h2
+z2hen
+zhir3
+zi3ar
+zich2o
+zi2dei
+zie4ler
+zie2l1i
+zien3s
+zi1erh
+zi1es
+zi3ess
+z2il
+zil2e
+zill2
+2zimp
+zim4t3
+2z1ind
+zin2e
+zin3ei
+2z1inf
+z1inh
+zi4n3in
+zin1it
+2z1inj
+zin2na
+zin4o
+zin2sa
+zin4ser
+4zinsuf
+2zint
+2z1inv
+zi2o3
+zirk2
+zirk6s
+2z1i2so
+zisse4
+zi3s2z
+zi2tan
+zite4
+zi1th
+zithe2
+zi4t1o4
+ziv2
+2z1j
+4z1k4
+2z1l2
+zlei3ti
+zle1s
+z3ly
+2z1m2
+zme2e
+2z3n2
+z3oas
+2z1ob
+z1of
+zo2gl
+zog4s3
+2z1oh
+zol2la
+zoller4
+zol6lert
+zon3s4
+zon4t3er
+zo2o
+2zope
+2z1o2r
+zo3re
+3z2orn
+zor4ne
+2z1osz
+2z1ou
+2zö2f
+2z1ök
+z1öl
+3z2öll
+2zöls
+2zön
+4z3p4
+2z1q
+4z3r2
+4z1s4
+z3sa
+zsau2
+z3sh
+z3sk
+zspor2
+z3sz
+2z1t
+zta2n
+zt3ane
+z2t1au
+z4tehe
+ztein1
+zt3eins
+zt2el
+z4t1ent
+z4t1erz
+zte3str
+zt3he
+z3t4hem
+z3t4her
+zt3hi
+zt3ho
+z3thr
+z3thy
+z3tic
+zt3rec
+zt3s2
+z3tü
+zu1
+zu3a
+zub4
+3zuc
+zuch2e
+zud4
+zudi4
+zu2el
+zu3e2r1
+zu3f4
+zu2gar
+zu4gent
+zu3g1l
+zu4gla
+zu4glö
+zu2go
+zug1un
+2z1uhr
+zu3hu
+zui2
+zu3k
+zul2
+2z1um.
+zum2a
+2z1umb
+zumen2
+2zumf
+2zumg
+zum2i
+2zuml
+2zumr
+2z1ums
+zum2u
+2zunab
+zun2e
+2z1unem
+zunf4
+zung4
+4zunget
+2z1ungl
+z1uni
+2zu2nio
+2zuniv
+2zunr
+2z1uns
+2zunt
+zuo2
+zup2fi
+zu3pl
+zu3r4a
+2z1urk
+2z1url
+2z1urn
+2z1urs
+2z1urt
+zu3s4
+zusch4
+zu3t2
+zut4r
+zut4u
+zut3z
+zuz2
+2zü4b
+3züc
+zür1c
+2z1v
+zw2
+z1wac
+2zwag
+2zwah
+2zwal
+2zwap
+z1war
+2zwa2s
+2zwäs
+2z1wed
+2zweg
+2zweh
+z2weig
+2zweil
+zweiter6
+2z1wel
+2z1wen
+2z1wer
+2z1wes
+z2wic
+zwi4e
+3zwing
+2zwirt
+z2wisc
+2zwiss
+z2wit
+2z1wo
+z1wör
+z1wur
+2z1wü
+zy1an.
+zy2le
+4z1z
+z3z2a
+zza3b4
+z4z3al
+zz4at
+z2z1id
+zzin1
+zz1ini
+zzi1s4
+zz2ö
+zzug4s
 }
 
+\endinput
+
+% ======================================================================
+% Editor settings
+% ======================================================================
+%
 % Local Variables:
+% mode: tex
 % coding: latin-1
+% fill-column: 72
 % End:
-%
-% End of file `hyphen.den'.
+% vim: set filetype=tex textwidth=72:
index bbcedc5..e24030e 100644 (file)
-% This is the groff hyphenation pattern file `hyphen.det' for German with
-% traditional hyphenation rules.
+% This is the groff hyphenation pattern file 'hyphen.det' for German
+% with hyphenation rules for the traditional orthography.
 %
-% It is based on the TeX pattern file `dehypht.tex' as of 03 March 1999.
+% It is based on the file 'dehypht-x-2017-03-31.pat' taken from the
+% 'dehyph-exptl-0.41' package, converted to latin-1 encoding.
 %
-% Here is the copyright message:
+% Below is the original copyright message.
 %
-%   Copyright (C) 1988,1991 Rechenzentrum der Ruhr-Universitaet Bochum
-%                 [german hyphen patterns]
-%   Copyright (C) 1993,1994,1999 Bernd Raichle/DANTE e.V.
-%                 [macros, adaption for TeX 2]
+% -------------------------------------------------------------------------
 %
-%   -----------------------------------------------------------------
-%   IMPORTANT NOTICE:
+% TeX-Trennmuster für die traditionelle deutsche Rechtschreibung
 %
-%   This program can be redistributed and/or modified under the terms
-%   of the LaTeX Project Public License Distributed from CTAN
-%   archives in directory macros/latex/base/lppl.txt; either
-%   version 1 of the License, or any later version.
-%   -----------------------------------------------------------------
+% Copyright (c) 2013-2017
+% Stephan Hennig, Werner Lemberg, Guenter Milde, Sander van Geloven,
+% Georg Pfeiffer, Gisbert W. Selke, Tobias Wendorf
 %
-% Please check the original file for more details.
+% Licensed under the MIT license. Full license text available from
 %
-% It has been made suitable for groff by expanding all macros to real
-% characters in latin-1 encoding.
+%   http://opensource.org/licenses/mit-license.php
 %
+%
+% The word list is available from
+%
+%   http://repo.or.cz/w/wortliste.git?a=commit;h=5fd786fcb1ed48448e058672f1f58d185653d8c6
+%
+% The used patgen parameters are
+%
+%   1 1 | 2 5 | 1 1 1
+%   2 2 | 2 5 | 1 2 1
+%   3 3 | 2 6 | 1 1 1
+%   4 4 | 2 6 | 1 4 1
+%   5 5 | 2 7 | 1 1 1
+%   6 6 | 2 7 | 1 6 1
+%   7 7 | 2 13 | 1 4 1
+%   8 8 | 2 13 | 1 8 1
+
 \patterns{%
-.aa6l .ab3a4s .ab3ei .abi2 .ab3it .ab1l .ab1r .ab3u .ad3o4r .alti6
-.ana3c .an5alg .an1e .ang8s .an1s .ap1p .ar6sc .ar6ta .ar6tei .as2z
-.au2f1 .au2s3 .be5erb .be3na .ber6t5r .bie6r5 .bim6s5t .brot3 .bru6s
-.ch6 .che6f5 .da8c .da2r .dar5in .dar5u .den6ka .de5r6en .des6pe
-.de8spo .de3sz .dia3s4 .dien4 .dy2s1 .ehren5 .eine6 .ei6n5eh .ei8nen
-.ein5sa .en6der .en6d5r .en3k4 .en8ta8 .en8tei .en4t3r .epo1 .er6ban
-.er6b5ei .er6bla .er6d5um .er3ei .er5er .er3in .er3o4b .erwi5s .es1p
-.es8t .ex1a2 .ex3em .fal6sc .fe6st5a .flu4g3 .furch8 .ga6ner .ge3n4a
-.ge5rö .ges6 .halb5 .halbe6 .hal6br .haup4 .hau4t .heima6 .he4r3e
-.her6za .he5x .hin3 .hir8sc .ho4c .hu3sa .hy5o .ibe5 .ima6ge .in1
-.ini6 .is5chi .jagd5 .kal6k5o .ka6ph .ki4e .kop6f3 .kraf6 .kü5ra
-.lab6br .liie6 .lo6s5k .lö4s3t .ma5d .mi2t1 .no6th .no6top
-.obe8ri .ob1l .obs2 .ob6st5e .or3c .ort6s5e .ost3a .oste8r .pe4re
-.pe3ts .ph6 .po8str .rau4m3 .re5an .ro8q .ru5the .rü5be
-.rü8stet .sch8 .se6e .se5n6h .se5ra .si2e .spi6ke .st4 .sy2n
-.tages5 .tan6kl .ta8th .te6e .te8str .to6der .to8nin .to6we .um1
-.umpf4 .un1 .une6 .unge5n .ur1c .ur5en .ve6rin .vora8 .wah6l5 .we8ges
-.wo6r .wor3a .wun4s .zi4e .zuch8 .ände8re .öch8 aa1c aa2gr
-aal5e aa6r5a a5arti aa2s1t aat2s 6aba ab3art 1abdr 6abel aben6dr
-ab5erk ab5err ab5esse 1abf 1abg 1abhä ab1ir 1abko a1bl ab1la
-5ablag a6blaß ab4ler ab1lu a8blä 5a6blö abma5c
-1abn ab1ra ab1re 5a6brec ab1ro ab1s ab8sk abs2z 3abtei ab1ur 1abw
-5abze 5abzu ab1än abäu8 a4ce. a5chal ach5art ach5au a1che
-a8chent ach6er. a6ch5erf a1chi ach1l ach3m ach5n a1cho ach3re a1chu
-ach1w a1chy ach5äf ack1o acks6t ack5sta a1d 8ad. a6d5ac ad3ant
-ad8ar 5addi a8dein ade5o8 adi5en 1adj 1adle ad1op a2dre 3adres adt1
-1adv a6dä a1e2d ae1r a1er. 1aero 8afa a3fal af1an a5far a5fat
-af1au a6fentl a2f1ex af1fr af5rau af1re 1afri af6tent af6tra aft5re
-a6f5um 8afä ag5abe 5a4gent ag8er ages5e 1aggr ag5las ag1lo a1gn
-ag2ne 1agog a6g5und a1ha a1he ah5ein a4h3erh a1hi ahl1a ah1le ah4m3ar
-ahn1a a5ho ahra6 ahr5ab ah1re ah8rei ahren8s ahre4s3 ahr8ti ah1ru a1hu
-ah8ö ai3d2s ai1e aif6 a3inse ai4re. a5isch. ais8e a3ismu ais6n
-aiso6 a1j 1akad a4kade a1ke a1ki 1akko 5akro1 a5lal al5ans 3al8arm
-al8beb al8berw alb5la 3album al1c a1le a6l5e6be a4l3ein a8lel a8lerb
-a8lerh a6lert 5a6l5eth 1algi al4gli al3int al4lab al8lan al4l3ar
-alle3g a1lo a4l5ob al6schm al4the altist5 al4t3re 8a1lu alu5i a6lur
-alu3ta a1lä a6mate 8ame. 5a6meise am6m5ei am6mum am2n ampf3a
-am6schw am2ta a1mu a1mä a3nac a1nad anadi5e an3ako an3alp 3analy
-an3ame an3ara a1nas an5asti a1nat anat5s an8dent ande4s3 an1ec an5eis
-an1e2k 4aner. a6n5erd a8nerf a6n5erke 1anfa 5anfert 1anfä 3angab
-5angebo an3gli ang6lis an2gn 3angri ang5t6 5anhä ani5g ani4ka
-an5i8on an1kl an6kno an4kro 1anl anma5c anmar4 3annah anne4s3 a1no
-5a6n1o2d 5a6n3oma 5a6nord 1anr an1sa 5anschl an4soz an1st 5anstal
-an1s2z 5antenn an1th 5anwä a5ny an4z3ed 5anzeig 5anzieh 3anzug
-an1ä 5anäs a1nö anö8d a1os a1pa 3apfel a2ph1t
-aph5ä6 a1pi 8apl apo1c apo1s a6poste a6poth 1appa ap1pr a1pr
-a5pä a3pü a1ra a4r3af ar3all 3arbei 2arbt ar1c 2a1re ar3ein
-ar2gl 2a1ri ari5es ar8kers ar6les ar4nan ar5o6ch ar1o2d a1rol ar3ony
-a8ror a3ros ar5ox ar6schl 8artei ar6t5ri a1ru a1ry 1arzt arz1w
-ar8zä arä8m arö6 ar5öm ar1ü2 a1sa a6schec
-asch5l asch3m a6schn a3s4hi as1pa asp5l a8steb as5tev 1asth a6stoc
-a1str ast3re 8a1ta ata5c ata3la a6tapf ata5pl a1te a6teli aten5a
-ate5ran 6atf 6atg a1th at3hal 1athl 2a1ti 5atlant 3atlas 8atmus 6atn
-a1to a6t5ops ato6ra a6t5ort. 4a1tr a6t5ru at2t1h at5t6hä 6a1tu
-atz1w a1tä a1tü au1a au6bre auch3a au1e aue4l 5aufent
-3auffü 3aufga 1aufn auf1t 3auftr 1aufw 3auge. au4kle aule8s 6aum
-au8mar aum5p 1ausb 3ausd 1ausf 1ausg au8sin 3auss au4sta 1ausw 1ausz
-aut5eng au1th 1auto auße8 a1v ave5r6a aver6i a1w a6wes a1x
-a2xia a6xio a1ya a1z azi5er. 8aß 1ba 8ba8del ba1la ba1na
-ban6k5r ba5ot bardi6n ba1ro basten6 bau3sp 2b1b bb6le b2bli 2b1c 2b1d
-1be be1a be8at. be1ch 8becht 8becke. be5el be1en bee8rei be5eta bef2
-8beff be1g2 behö8 bei1s 6b5eisen bei3tr b8el bel8o belu3t be3nac
-bend6o be6ners be6nerw be4nor ben4se6 bens5el be1nä be1nü
-be1o2 b8er. be1ra be8rac ber8gab. ber1r be1rü bes8c bes5erh
-bes2p be5tha bet5sc be1un be1ur 8bex be6zwec 2b1f8 bfe6st5e 2b1g2
-bga2s5 bge1 2b1h bhole6 1bi bi1bl b6ie bi1el bi1la bilä5 bi1na
-bi4nok bi5str bi6stu bi5tr bit4t5r b1j 2b1k2 bkü6 bl8 b6la.
-6b1lad 6blag 8blam 1blat b8latt 3blau. b6lav 3ble. b1leb b1led
-8b1leg 8b1leh 8bleid 8bleih 6b3lein blei3s ble4m3o 4blich b4lind
-8bling b2lio 5blit b4litz b1loh 8b1los 1blu 5blum 2blun blut3a blut5sc
-3blä bläs5c 5blö 3blü blü8sc 2b1m 2b1n 1bo
-bo1ch bo5d6s boe5 8boff 8bonk bo1ra b1ort 2b1p2 b1q 1br brail6 brast8
-bre4a b5red 8bref 8b5riem b6riga bro1s b1rup b2ruz 8bröh
-brös5c 8bs b1sa b8sang b2s1ar b1sc bs3erl bs3erz b8sof b1s2p
-bst1h b3stru b5stä b6sun 2b1t b2t1h 1bu bu1ie bul6k b8ure bu6sin
-6b1v 2b1w 1by1 by6te. 8b1z bzi1s 1bä b5ä6s5 1bü
-b6ü5bere büge6 bügel5e bür6sc 1ca cag6 ca5la ca6re
-ca5y c1c 1ce celi4c celich5 ce1ro c8h 2ch. 1chae ch1ah ch3akt cha6mer
-8chanz 5chara 3chari 5chato 6chb 1chef 6chei ch3eil ch3eis 6cherkl
-6chf 4chh 5chiad 5chias 6chins 8chj chl6 5chlor 6ch2m 2chn6 ch8nie
-5cho. 8chob choi8d 6chp ch3ren ch6res ch3rü 2chs 2cht cht5ha
-cht3hi 5chthon ch6tin 6chuh chu4la 6ch3unt chut6t 8chw 1ci ci5tr c2k
-2ck. ck1ei 4ckh ck3l ck3n ck5o8f ck1r 2cks ck5stra ck6s5u c2l 1c8o
-con6ne 8corb cos6t c3q 1c6r 8c1t 1cu 1cy 5cä1 cö5 1da.
-8daas 2dabg 8dabr 6dabt 6dabw 1dac da2gr 6d5alk 8d5amt dan6ce.
-dani5er dan8ker 2danl danla6 6dans 8danzi 6danzu d1ap da2r1a8 2d1arb
-d3arc dar6men 4d3art 8darz 1dat 8datm 2d1auf 2d1aus 2d1b 2d1c 2d1d
-d5de d3d2h ddämme8 1de 2deal de5an de3cha de1e defe6 6deff 2d1ehr
-5d4eic de5isc de8lar del6s5e del6spr de4mag de8mun de8nep dene6r
-8denge. 8dengen de5o6d 2deol de5ram 8derdb der5ein de1ro der1r d8ers
-der5um de4s3am de4s3an de4sau de6sil de4sin de8sor de4spr de2su 8deul
-de5us. 2d1f df2l 2d1g 2d1h 1di dia5c di5ara dice5 di3chr di5ena di1gn
-di1la dil8s di1na 8dind 6dinf 4d3inh 2d1ins di5o6d di3p4t di8sen dis1p
-di5s8per di6s5to dis5tra di8tan di8tin d1j 6dje 2dju 2d1k 2d1l 2d1m
-2d1n6 dni6 dnje6 1do 6d5obe do6berf 6d5ony do3ran 6dord 2d1org dor4t3h
-do6ste 6doth dott8e 2d1p d5q dr4 1drah 8drak d5rand 6dre. 4drech
-d6reck 4d3reg 8d3reic d5reife 8drem 8d1ren 2drer 8dres. 6d5rh 1dria
-d1ric 8drind droi6 dro5x 1dru 8drut drös5c 1drü drü5b
-drü8sc 2ds d1sa d6san dsat6 d1sc 5d6scha. 5dschik dse8e d8serg
-8dsl d1sp d4spak ds2po d8spä d1st d1sü 2dt d1ta d1te d1ti
-d1to dt1s6 d1tu d5tä 1du du5als du1b6 du1e duf4t3r 4d3uh du5ie
-8duml 8dumw 2d1und du8ni 6d5unt dur2c durch3 6durl 6dursa 8durt du1s
-du8schr 2d1v 2d1w dwa8l 2d1z 1dä 6däh 8dänd dä6r
-dö8bl d5öl dör6fl dö8sc d5ö4st dös3te
-1dü ea4ben e1ac e1ah e1akt e1al. e5alf e1alg e5a8lin e1alk e1all
-e5alp e1alt e5alw e1am e1and ea6nim e1ar. e5arf e1ark e5arm e3art
-e5at. e6ate e6a5t6l e8ats e5att e6au. e1aus e1b e6b5am ebens5e
-eb4lie eb4ser eb4s3in e1che e8cherz e1chi ech3m 8ech3n ech1r ech8send
-ech4su e1chu eck5an e5cl e1d ee5a ee3e ee5g e1ei ee5isc eei4s3t
-ee6lend e1ell ee5lö e1erd ee3r4e ee8reng eere6s5 ee5rä
-ee6tat e1ex e1f e6fau e8fe8b 3effek ef3rom ege6ra eglo6si 1egy e1ha
-e6h5ach eh5ans e6hap eh5auf e1he e1hi ehl3a eh1le ehl5ein eh1mu ehn5ec
-e1ho ehr1a eh1re ehre6n eh1ri eh1ru ehr5um e1hu eh1w e1hy e1hä
-e1hö e3hüt ei1a eia6s ei6bar eich3a eich5r ei4dar ei6d5ei
-ei8derf ei3d4sc ei1e 8eifen 3eifri 1eign eil1d ei6mab ei8mag ein1a4
-ei8nat ei8nerh ei8ness ei6nete ein1g e8ini ein1k ei6n5od ei8nok ei4nor
-e3insä ei1o e1irr ei5ru ei8sab ei5schn ei6s5ent ei8sol ei4t3al
-eit3ar eit1h ei6thi ei8tho eit8samt ei6t5um e1j 1ekd e1ke e1ki e1k2l
-e1kn ekni4 e1la e2l1al 6elan e6lanf e8lanl e6l5ans el3arb el3arm
-e6l3art 5e6lasti e6lauge elbst5a e1le 6elef ele6h e6l5ehe e8leif
-e6l5einh 1elek e8lel 3eleme e6lemen e6lente el5epi e4l3err e6l5ersc
-elf2l elg2 e6l5ins ell8er 4e1lo e4l3ofe el8soh el8tent 5eltern e1lu
-elut2 e1lä e1lü em8dei em8meis 4emo emo5s 1emp1f 1empt 1emto
-e1mu emurk4 emurks5 e1mä en5a6ben en5achs en5ack e1nad en5af
-en5all en3alt en1am en3an. en3ant en3anz en1a6p en1ar en1a6s 6e1nat
-en3auf en3aus en2ce enda6l end5erf end5erg en8dess 4ene. en5eck
-e8neff e6n5ehr e6n5eim en3eis 6enem. 6enen e4nent 4ener. e8nerd
-e6n3erf e4nerg 5energi e6n5erla en5ers e6nerst en5erw 6enes e6n5ess
-e2nex en3glo 2eni enni6s5 ennos4 enns8 e1no e6nober eno8f en5opf
-e4n3ord en8sers ens8kl en1sp ens6por en5t6ag enta5go en8terbu en6tid
-3entla ent5ric 5entwic 5entwu 1entz enu5i e3ny en8zan en1öf
-e1nös e1nüg eo1c e5o6fe e5okk e1on. e3onf e5onk e5onl e5onr
-e5opf e5ops e5or. e1ord e1org eo5r6h eo1t e1pa e8pee e6p5e6g ep5ent
-e1p2f e1pi 5epid e6pidem e1pl 5epos e6pos. ep4p3a e1pr e1pä e1q
-e1ra. er5aal 8eraba e5rabel er5a6ben e5rabi er3abs er3ach era5e
-era5k6l er3all er3amt e3rand e3rane er3ans e5ranz. e1rap er3arc
-e3rari er3a6si e1rat erat3s er3auf e3raum 3erbse er1c e1re 4e5re.
-er3eck er5egg er5e2h 2erei e3rei. e8reine er5einr 6eren. e4r3enm
-4erer. e6r5erm er5ero er5erst e4r3erz er3ess 5erfül er8gan.
-5ergebn er2g5h 5ergänz 5erhöhu 2e1ri eri5ak e6r5iat e4r3ind
-e6r5i6n5i6 er5ins e6r5int er5itio er1kl 3erklä 5erlös.
-ermen6s er6nab 3ernst 6e1ro. e1rod er1o2f e1rog 6e3roi ero8ide e3rol
-e1rom e1ron e3rop8 e2r1or e1ros e1rot er5ox ersch4 5erstat er6t5ein
-er2t1h er5t6her 2e1ru eruf4s3 e4r3uhr er3ums e5rus 5erwerb e1ry er5zwa
-er3zwu erä8m er5äs erö8 e3rös. e6r1ü2b e1sa
-esa8b e8sap e6s5a6v e1sc esch4l ese1a es5ebe eserve5 e8sh es5ill
-es3int es4kop e2sl eso8b e1sp espei6s5 es2po es2pu 5essenz e6stabs
-e6staf e6st5ak est3ar e8stob e1str est5res es3ur e2sz e1sü e1ta
-et8ag etari5e eta8ta e1te eten6te et5hal e5thel e1ti 1etn e1to e1tr
-et3rec e8tscha et8se et6tei et2th et2t1r e1tu etu1s et8zent et8zw
-e1tä e1tö e1tü eu1a2 eu1e eue8rei eu5fe euin5 euk2
-e1um. eu6nio e5unter eu1o6 eu5p 3europ eu1sp eu5str eu8zo e1v eval6s
-eve5r6en ever4i e1w e2wig ex1or 1exp 1extr ey3er. e1z e1ä2
-e5ö8 e1ü e8ßes fa6ch5i fade8 fa6del fa5el.
-fal6lo falt8e fa1na fan4gr 6fanl 6fap far6ba far4bl far6r5a 2f1art
-fa1sc fau8str fa3y 2f1b2 6f1c 2f1d 1fe 2f1eck fe6dr feh6lei f6eim
-8feins f5eis fel5en 8feltern 8femp fe5rant 4ferd. ferri8 fe8stof
-fe6str fe6stum fe8tag fet6ta fex1 2ff f1fa f6f5arm f5fe ffe5in ffe6la
-ffe8ler ff1f f1fla ff3lei ff4lie ff8sa ff6s5ta 2f1g2 fgewen6 4f1h 1fi
-fid4 fi3ds fieb4 fi1la fi8lei fil4m5a f8in. fi1na 8finf fi8scho fi6u
-6f1j 2f1k2 f8lanz fl8e 4f3lein 8flib 4fling f2lix 6f3lon 5flop 1flor
-5f8läc 3flöt 2f1m 2f1n 1fo foh1 f2on fo6na 2f1op fo5ra
-for8mei for8str for8th for6t5r fo5ru 6f5otte 2f1p8 f1q fr6 f5ram
-1f8ran f8raß f8re. frei1 5frei. f3reic f3rest f1rib
-8f1ric 6frig 1fris fro8na fräs5t 2fs f1sc f2s1er f5str
-fs3tät 2ft f1tak f1te ft5e6h ftere6 ft1h f1ti f5to f1tr ft5rad
-ft1sc ft2so f1tu ftwi3d4 ft1z 1fu 6f5ums 6funf fun4ka fu8ßend
-6f1v 2f1w 2f1z 1fä fä1c 8färm 6fäug
-fä8ß föde3 8föf 3för 1fü
-fün4f3u 1ga ga6bl 6gabw 8gabz g3a4der ga8ho ga5isc 4gak ga1la
-6g5amt ga1na gan5erb gan6g5a ga5nj 6ganl 8gansc 6garb 2g1arc 2g1arm
-ga5ro 6g3arti ga8sa ga8sc ga6stre 2g1atm 6g5auf gau5fr g5aus 2g1b g5c
-6gd g1da 1ge ge1a2 ge6an ge8at. ge1e2 ge6es gef2 8geff ge1g2l ge1im
-4g3eise geist5r gel8bra gelt8s ge5lö ge8nin gen3k 6g5entf
-ge3nä ge1or ge1ra ge6rab ger8au 8gerhö ger8ins ge1ro 6g5erz.
-ge1rä ge1rü ge1s ges2p ge5unt 4g3ex3 2g1f8 2g1g g1ha 6g1hei
-5ghel. g5henn 6g1hi g1ho 1ghr g1hö 1gi gi5la gi8me. gi1na
-4g3ins gi3str g1j 2g1k 8gl. 1glad g5lag glan4z3 1glas 6glass 5glaub
-g3lauf 1gle. g5leb 3gleic g3lein 5gleis 1glem 2gler 8g3leu gli8a
-g2lie 3glied 1g2lik 1g2lim g6lio 1gloa 5glom 1glon 1glop g1los g4loss
-g5luf 1g2ly 1glü 2g1m gn8 6gn. 1gna 8gnach 2gnah g1nas g8neu
-g2nie g3nis 1gno 8gnot 1go goe1 8gof 2gog 5gogr 6g5oh goni5e 6gonist
-go1ra 8gord 2g1p2 g1q 1gr4 g5rahm gra8m gra4s3t 6g1rec gre6ge 4g3reic
-g5reit 8grenn gri4e g5riem 5grif 2grig g5ring 6groh 2grot gro6ß
-4grut 2gs gs1ab g5sah gs1ak gs1an gs8and gs1ar gs1au g1sc
-gs1ef g5seil gs5ein g2s1er gs1in g2s1o gso2r gs1pr g2s1u 2g1t g3te
-g2t1h 1gu gu5as gu2e 2gue. 6gued 4g3uh 8gums 6g5unt gu1s gut3h gu2tu
-4g1v 2g1w gy1n g1z 1gä 8gä8m 6gärm 1gö 1gü
-6güb 1haa hab8r ha8del hade4n 8hae ha5el. haf6tr 2hal. ha1la
-hal4b5a 6hale 8han. ha1na han6dr han6ge. 2hani h5anth 6hanz 6harb
-h3arbe h3arme ha5ro ha2t1h h1atm hau6san ha8ß h1b2 h1c h1d
-he2bl he3cho h3echt he5d6s 5heft h5e6he. hei8ds h1eif 2hein he3ism
-he5ist. heit8s3 hek6ta hel8lau 8helt he6mer 1hemm 6h1emp hen5end
-hen5klo hen6tri he2nu 8heo he8q her3ab he5rak her3an 4herap her3au
-h3erbi he1ro he8ro8b he4r3um her6z5er he4spe he1st heta6 het5am he5th
-heu3sc he1xa hey5e h1f2 h1g hgol8 h1h h1iat hie6r5i hi5kt hil1a2
-hil4fr hi5nak hin4ta hi2nu hi5ob hirn5e hir6ner hi1sp hi1th hi5tr
-5hitz h1j h6jo h1k2 hlabb4 hla4ga hla6gr h5lai hl8am h1las h1laß
-hl1c h1led h3lein h5ler. h2lif h2lim h8linf hl5int h2lip
-h2lit h4lor h3lose h1läs hme5e h2nee h2nei hn3eig h2nel hne8n
-hne4p3f hn8erz h6netz h2nip h2nit h1nol hn5sp h2nuc h2nud h2nul hoch1
-1hoh hoh8lei 2hoi ho4l3ar 1holz h2on ho1ra 6horg 5horn. ho3sl hos1p
-ho4spi h1p hpi6 h1q 6hr h1rai h8rank h5raum hr1c hrcre8 h1red h3reg
-h8rei. h4r3erb h8rert hrg2 h1ric hr5ins h2rom hr6t5erl hr2t1h hr6t5ra
-hr8tri h6rum hr1z hs3ach h6s5amt h1sc h6s5ec h6s5erl hs8erle h4sob
-h1sp h8spaß h8spel hs6po h4spun h1str h4s3tum hs3und
-h1sü h5ta. h5tab ht3ac ht1ak ht3ang h5tanz ht1ar ht1at h5taub
-h1te h2t1ec ht3eff ht3ehe h4t3eif h8teim h4t3ein ht3eis h6temp h8tentf
-hte8ren h6terfü h8tergr h4t3erh h6t5ersc h8terst h8tese h8tess
-h2t1eu h4t3ex ht1he ht5hu h1ti ht5rak hts3ah ht1sc ht6sex ht8sk ht8so
-h1tu htz8 h5tüm hub5l hu6b5r huh1l h5uhr. huld5a6 hu8lent
-hu8lä h5up. h1v h5weib h3weis h1z hä8kl häl8s
-häma8tu8 hä8sche. hät1s häu4s3c 2hö.
-2höe 8höi hö6s hös5c hühne6 hül4s3t
-hütte8re i5adn i1af i5ak. i1al. i1al1a i1alb i1ald i5alei i1alf
-i1alg i3alh i1alk i1all i1alp i1alr i1als i1alt i1alv i5alw i3alz
-i1an. ia5na i3and ian8e ia8ne8b i1ang i3ank i5ann i1ant i1anz i6apo
-i1ar. ia6rab i5arr i1as. i1asm i1ass i5ast. i1at. i5ats i1au i5azz
-i6b5eig i6b5eis ib2le i4blis i6brig i6b5unt i6büb i1che ich5ei
-i6cherb i1chi ich5ins ich1l ich3m ich1n i1cho icht5an icht3r i1chu
-ich1w ick6s5te ic5l i1d id3arm 3ideal ide8na 3ideol ide5rö i6diot
-id5rec id1t ie1a ie6b5ar iebe4s3 ie2bl ieb1r ie8bra ie4bre ie8bä
-ie2dr ie1e8 ie6f5ad ief5f ie2f1l ie4fro ief1t i1ei ie4l3ec ie8lei
-ie4lek i3ell i1en. i1end ien6e i3enf i5enn ien6ne. i1enp i1enr
-i5ensa ien8stal i5env i1enz ie5o ier3a4b ie4rap i2ere ie4rec ie6r5ein
-ie6r5eis ier8er i3ern. ie8rum ie8rund ie6s5che ie6tau ie8tert ie5the
-ie6t5ri i1ett ie5un iex5 2if i1fa if5ang i6fau if1fr if5lac i5f6lie
-i1fre ift5a if6t5r ig3art 2ige i8gess ig5he i5gla ig2ni i5go ig3rot
-ig3s2p i1ha i8ham i8hans i1he i1hi ih1n ih1r i1hu i8hum ih1w 8i1i ii2s
-ii2t i1j i1k i6kak i8kerz i6kes ik4ler i6k5unt 2il i5lac i1lag il3ans
-i5las i1lau il6auf i1le ile8h i8lel il2fl il3ipp il6l5enn i1lo ilt8e
-i1lu i1lä i8mart imb2 i8mele i8mid imme6l5a i1mu i1mä
-i5mö ina5he i1nat in1au inau8s 8ind. in4d3an 5index ind2r 3indus
-i5nec i2n1ei i8nerw 3infek 1info 5ingeni ing5s6o 5inhab ini5er. 5inj
-in8kät in8nan i1no inoi8d in3o4ku in5sau in1sp 5inspe 5instit
-5instru ins4ze 5intere 5interv in3the in5t2r i5ny inä2 i1när
-in1äs inö8 in5öd i1nös 2io io1a8 io1c iode4 io2di
-ioi8 i1ol. i1om. i1on. i5onb ion2s1 i1ont i5ops i5o8pt i1or.
-i3oral io3rat i5orc i1os. i1ot. i1o8x 2ip i1pa i1pi i1p2l i1pr i1q
-i1ra ir6bl i1re i1ri ir8me8d ir2m1o2 ir8nak i1ro ir5rho ir6schl
-ir6sch5r i5rus i5ry i5rä i1sa i8samt i6sar i2s1au i8scheh i8schei
-isch5m isch3r ischä8 is8ele ise3ra i4s3erh is3err isi6de i8sind
-is4kop ison5e is6por i8s5tum i5sty i5sö i1ta it5ab. i2t1a2m
-i8tax i1te i8tersc i1thi i1tho i5thr it8hä i1ti i8ti8d iti6kl
-itmen4 i1to i8tof it3ran it3rau i1tri itri5o it1sc it2se it5spa it8tru
-i1tu it6z5erg it6z1w i1tä itä6r5e ität2 itäts5
-i1tü i1u iu6r 2i1v i6vad iva8tin i8vei i6v5ene i8verh i2vob i8vur
-i1w iwi2 i5xa i1xe i1z ize8n i8zir i6z5w iä8m i1ä6r
-i5ät. i5äv i1ö8 iü8 i6ß5ers ja5la
-je2t3r 6jm 5jo jo5as jo1ra jou6l ju5cha jugen4 jugend5 jung5s6 ju1s
-3jä 1ka 8kachs 8kakz ka1la kal5d kam5t ka1na 2kanl 8kapf ka6pl
-ka5r6a 6k3arbe ka1ro kar6p5f 4k3arti 8karz ka1rä kasi5e ka6teb
-kat8ta kauf6s kau3t2 2k1b 2k1c 4k1d kehr6s kehrs5a 8keic 2k1eig 6k5ein
-6k5eis ke6lar ke8leis ke8lo 8kemp k5ente. k3entf 8k5ents 6kentz ke1ra
-k5erlau 2k1f8 2k1g 2k1h ki5fl 8kik king6s5 6kinh ki5os ki5sp ki5th
-8ki8ö 2k1k2 kl8 1kla 8klac k5lager kle4br k3leib 3kleid kle5isc
-4k3leit k3lek 6k5ler. 5klet 2klic 8klig k2lim k2lin 5klip 5klop k3lor
-1klä 2k1m kmani5e kn8 6kner k2ni knä8 1k2o ko1a2 ko6de.
-ko1i koi8t ko6min ko1op ko1or ko6pht ko3ra kor6d5er ko5ru ko5t6sc k3ou
-3kow 6k5ox 2k1p2 k1q 1kr8 4k3rad 2k1rec 4k3reic kre5ie 2krib 6krig
-2krip 6kroba 2ks k1sa k6sab ksal8s k8samt k6san k1sc k2s1ex k5spat
-k5spe k8spil ks6por k1spr kst8 k2s1uf 2k1t kta8l kt5a6re k8tein kte8re
-k2t1h k8tinf kt3rec kt1s 1ku ku1ch kuck8 k3uhr ku5ie kum2s1 kunfts5
-kun2s kunst3 ku8rau ku4ro kurz1 ku1st 4kusti ku1ta ku8ß
-6k1v 2k1w ky5n 2k1z 1kä kä4m 4k3ämi käse5 1kö
-kö1c kö1s 1kü kü1c kür6sc kü1s 1la.
-8labf 8labh lab2r 2l1abs lach3r la8dr 5ladu 8ladv 6laff laf5t la2gn
-5laken 8lamb la6mer 5lampe. 2l1amt la1na 1land lan4d3a lan4d3r lan4gr
-8lanme 6lann 8lanw 6lanä 8lappa lap8pl lap6pr l8ar. la5ra lar4af
-la8rag la8ran la6r5a6s l3arbe la8rei 6larm. la8sa la1sc la8sta lat8i
-6l5atm 4lauss 4lauto 1law 2lb l8bab l8bauf l8bede l4b3ins l5blo
-lbst5an lbst3e 8lc l1che l8chert l1chi lch3m l5cho lch5w 6ld l4d3ei
-ld1re l6düb le2bl le8bre lecht6s5 led2r 6leff le4gas 1lehr lei6br
-le8inf 8leinn 5leistu 4lektr le6l5ers lemo2 8lemp l8en. 8lends
-6lendun le8nend len8erw 6l5ents 4l3entw 4lentz 8lenzy 8leoz 6lepi
-le6pip 8lepo 1ler l6er. 8lerbs 6l5erde le8reis le8rend le4r3er 4l3erg
-l8ergr 6lerkl 6l5erzie 8lerö 8lesel lesi5e le3sko le3tha let1s
-5leuc 4leuro leu4s3t le5xe 6lexp l1f 2l1g lgend8 l8gh lglie3 lglied6
-6l1h 1li li1ar li1as 2lick li8dr li1en lien6n li8ers li8ert 2ließ
-3lig li8ga8b li1g6n li1l8a 8limb li1na 4l3indu lings5
-4l3inh 6linj link4s3 4linkt 2lint 8linv lion5s6t 4lipp 5lipt 4lisam
-livi5e 6l1j 6l1k l8keim l8kj lk2l lko8f lkor8 lk2sa lk2se 6ll l1la
-ll3a4be l8labt ll8anl ll1b ll1c ll1d6 l1le l4l3eim l6l5eise ller3a
-l4leti l5lip l1lo ll3ort ll5ov ll6spr llte8 l1lu ll3urg l1lä
-l5lü l6lüb 2l1m l6m5o6d 6ln l1na l1no 8lobl lo6br 3loch.
-l5o4fen 5loge. 5lohn 4l3ohr 1lok l2on 4l3o4per lo1ra 2l1ord 6lorg
-4lort lo1ru 1los. lo8sei 3losig lo6ve lowi5 6l1p lp2f l8pho l8pn
-lp4s3te l2pt l1q 8l1r 2ls l1sa l6sarm l1sc l8sec l6s5erg l4s3ers l8sh
-l5s6la l1sp ls4por ls2pu l1str l8suni l1sü 2l1t lt5amp l4t3ein
-l5ten l6t5eng l6t5erp l4t3hei lt3her l2t1ho l6t5i6b lti1l l8trö
-lt1sc lt6ser lt4s3o lt5ums lu8br lu2dr lu1en8 8lu8fe luft3a luf8tr
-lu6g5r 2luh l1uhr lu5it 5luk 2l1umf 2l1umw 1lun 6l5u6nio 4l3unte lu5ol
-4lurg 6lurs l3urt lu4sto lu3str lu6st5re lu8su lu6tal lu6t5e6g lu8terg
-lu3the lu6t5or lu2t1r lu6ß5 l1v lve5r6u 2l1w 1ly lya6
-6lymp ly1no l8zess l8zo8f l3zwei lz5wu 3länd lä5on
-lä6sc lät1s 5läuf 2läug läu6s5c lä5v
-l1öl 1lös lö1ß6t 6l1übe 1ma
-8mabg ma5chan mad2 ma5el 4magg mag8n ma1la ma8lau mal5d 8malde mali5e
-malu8 ma8lut 2m1amp 3man mand2 man3ds 8mangr mani5o 8m5anst 6mappa
-4m3arbe mar8kr ma1r4o mar8schm 3mas ma1sc ma1tö 4m5auf ma5yo 2m1b
-mb6r 2m1c 2m1d md6sä 1me me1ch me5isc 5meld mel8sa 8memp me5nal
-men4dr men8schl men8schw 8mentsp me1ra mer4gl me1ro 3mes me6s5ei me1th
-me8ß 2m1f6 2m1g 2m1h 1mi mi1a mi6ale mi1la 2m1imm mi1na
-mi5nü mi4s3an mit1h mi5t6ra 3mitt mitta8 mi6ß5 6mj
-2m1k8 2m1l 2m1m m6mad m6m5ak m8menth m8mentw mme6ra m2mn mm5sp mm5ums
-mmut5s m8män m1n8 m5ni 1mo mo5ar mo4dr 8mof mo8gal mo4kla mol5d
-m2on mon8do mo4n3od mont8a 6m5ony mopa6 mo1ra mor8d5a mo1sc mo1sp 5mot
-moy5 2mp m1pa mpfa6 mpf3l mphe6 m1pi mpin6 m1pl mp2li m2plu mpo8ste
-m1pr mprä5 mp8th mput6 mpu5ts m1pö 8m1q 2m1r 2ms ms5au m1sc
-msch4l ms6po m3spri m1str 2m1t mt1ar m8tein m2t1h mt6se mt8sä
-mu5e 6m5uh mumi1 1mun mun6dr muse5e mu1ta 2m1v mvol2 mvoll3 2m1w 1my
-2m1z mä6kl 1män mä1s mä5tr mäu4s3c 3mäß
-möb2 6möl 1mü 5mün 3müt 1na.
-n5ab. 8nabn n1abs n1abz na6bä na2c nach3e 3nacht 1nae na5el
-n1afr 1nag 1n2ah na8ha na8ho 1nai 6nair na4kol n1akt nal1a 8naly 1nama
-na4mer na1mn n1amp 8n1amt 5nanc nan6ce n1and n6and. 2n1ang 1nani
-1nann n1ans 8nanw 5napf. 1n2ar. na2ra 2n1arc n8ard 1nari n8ark
-6n1arm 5n6ars 2n1art n8arv 6natm nat6s5e 1naue 4nauf n3aug 5naui n5auk
-na5um 6nausb 6nauto 1nav 2nax 3naz 1naß n1b2 nbau5s n1c
-nche5e nch5m 2n1d nda8d n2d1ak nd5ans n2d1ei nde8lac ndel6sa n8derhi
-nde4se nde8stal n2dj ndnis5 n6d5or6t nd3rec nd3rot nd8samt nd6sau
-ndt1h n8dumd 1ne ne5as ne2bl 6n5ebn 2nec 5neei ne5en ne1g4l 2negy
-4n1ein 8neis 4n3e4lem 8nemb 2n1emp nen1a 6n5energ nen3k 8nentb
-4n3en3th 8nentl 8n5entn 8n5ents ne1ra ne5r8al ne8ras 8nerbi 6n5erde.
-nere5i6d nerfor6 6n5erhö 8nerlö 2n1err n8ers. 6n5ertra
-2n1erz nesi3e net1h neu4ra neu5sc 8neuß n1f nf5f nf2l
-nflei8 nf5lin nft8st n8g5ac ng5d ng8en nge8ram ngg2 ng1h n6glic ng3rip
-ng8ru ng2se4 ng2si n2g1um n1gy n8gäl n1h nhe6r5e 1ni ni1bl
-ni5chä ni8dee n6ie ni1en nie6s5te niet5h ni8etn 4n3i6gel n6ik
-ni1la 2n1imp ni5na 2n1ind 8ninf 6n5inh ni8nit 6n5inn 2n1ins 4n1int
-n6is ni3str ni1th ni1tr n1j n6ji n8kad nk5ans n1ke n8kerla n1ki nk5inh
-n5klö n1k2n n8k5not nk3rot n8krü nk5spo nk6t5r n8kuh
-n6küb n5l6 nli4mi n1m nmen4s n1na n8nerg nni5o n1no nn4t3ak nnt1h
-nnu1e n1ny n1nä n1nö n1nü no5a no4b3la 4n3obs 2nobt
-noche8 no6die no4dis no8ia no5isc 6n5o6leu no4mal noni6er 2n1onk n1ony
-4n3o4per 6nopf 6nopti no3ra no4ram nor6da 4n1org 2n1ort n6os no1st
-8nost. no8tan no8ter noty6pe 6n5ox n1p2 n1q n1r nrös3 6ns n1sac
-ns3ang n1sc n8self n8s5erf n8serg n6serk ns5erw n8sint n1s2pe n1spr
-n6s5tat. n5s6te. n6stob n1str n1ta n4t3a4go nt5anh nt3ark nt3art
-n1te nt3eis nte5n6ar nte8nei nter3a nte6rei nt1ha nt6har n3ther nt5hie
-n3thus n1ti nti1c n8tinh nti1t ntlo6b ntmen8 n1to nt3o4ti n1tr ntra5f
-ntra5ut nt8rea nt3rec nt8rep n4t3rin nt8rop n4t3rot n4trü nt1s
-nts6an nt2sk n1tu nt1z n1tä n1tö n8töl n1tü 1nu
-nu1a nu5el nu5en 4n1uhr nu5ie 8numl 6n5ums 6n5umw 2n1und 6nuni 6n5unr
-2n1unt 2nup 2nu6r n5uri nu3skr nu5ta n1v 8n1w 1nys n1za n6zab n2z1ar
-n6zaus nzi4ga n8zof n6z5unt n1zw n6zwir 1näc 5näe 5näi
-n8äl nä6m nä6re n5ärz 5näus n1öl
-1nöt n5öz 5nü. 6n1ü2b 5nüß
-o5ab. oa2l o8ala o1a2m o1an ob1ac obe4ra o6berh 5o4bers o4beru
-obe6ser 1obj o1bl o2bli ob5sk 3obst. ob8sta obst5re ob5sz o1che
-oche8b o8chec o3chi och1l och3m ocho8f o3chro och3to o3chu och1w o1d
-o2d1ag od2dr ode5i ode6n5e od1tr o5e6b o5e6der. oe8du o1ef o1e2l
-o1e2p o1er. o5e8x o1fa of8fan 1offi of8fin of6f5la o5fla o1fr 8o1g
-og2n o1ha o1he o6h5eis o1hi ohl1a oh1le oh4l3er 5ohm. oh2ni o1ho
-oh1re oh1ru o1hu oh1w o1hy o1hä o5ia o1id. o8idi oi8dr o5ids
-o5isch. oiset6 o1ism o3ist. o5i6tu o1j o1k ok2l ok3lau o8klä
-1okta o1la old5am old5r o1le ole5in ole1r ole3u ol6gl ol2kl olk4s1
-ol8lak ol8lauf. ol6lel ol8less o1lo ol1s ol6sk o1lu oly1e2 5olym
-o2mab om6an o8mau ombe4 o8merz om5sp o1mu o8munt o1mä o1mö
-o1na ona8m on1ax on8ent o6n5erb 8oni oni5er. on1k on6n5a6b o1no ono1c
-o4nokt 1ons onts8 o1nä oo8f 1oog oo2pe oo2sa o1pa 3o4pera o3pfli
-opf3lo opf3r o1pi o1pl o2pli o5p6n op8pa op6pl o1pr o3p4ter 1opti
-o1pä o5pö o1q o1ra. o3rad o8radd 1oram o6rang o5ras o8rauf
-or5cha or4d3a4m or8dei or8deu 1ordn or4dos o1re o5re. ore2h o8r5ein
-ore5isc or6enn or8fla or8fli 1orga 5orgel. or2gl o1ri 5o6rient or8nan
-or8nä o1ro or1r2h or6t5an or8tau or8tere o1rus o1ry o1rä
-or1ü2 o1sa osa3i 6ose o8serk o1sk o6ske o6ski os2kl os2ko os2kr
-osni5e o2s1o2d o3s4per o4stam o6stau o3stra ost3re osu6 o6s5ur o5s6ze
-o1ta ot3auf o6taus o1te o6terw o1th othe5u o2th1r o1ti o1to oto1a
-ot1re o1tri o1tro ot1sc o3tsu ot6t5erg ot2t3h ot2t5r ot8tö o1tu
-ou3e ouf1 ou5f6l o5u6gr ou5ie ou6rar ou1t6a o1v o1wa o1we o6wer. o1wi
-owid6 o1wo o5wu o1xe oy5al. oy1e oy1i o5yo o1z oza2r 1o2zea ozo3is
-oö8 oß5elt oß1t 3paa pa6ce 5pad pag2 1pak
-pa1la pa8na8t pani5el pa4nor pan1s2 1pap pap8s pa8rei par8kr paro8n
-par5o6ti part8e 5partei 3partn pas6sep pa4tha 1pau 6paug pau3sc p1b
-8p5c 4p1d 1pe 4peic pe5isc 2pek pen3k pen8to8 p8er pe1ra pere6 per5ea
-per5eb pe4rem 2perr per8ran 3pers 4persi pe3rü pe4sta pet2s
-p2f1ec p4fei pf1f pf2l 5pflanz pf8leg pf3lei 2pft pf3ta p1g 1ph 2ph.
-2p1haf 6phb 8phd 6p5heit ph5eme 6phg phi6e 8phk 6phn p5holl pht2
-ph3tha 4ph3the phu6 6phz pi1en pi5err pi1la pi1na 5pinse pioni8e 1pis
-pi1s2k pi1th p1k pl8 5pla p2lau 4plei p3lein 2pler 6p5les 2plig p6lik
-6p5ling p2liz plo8min 6p1m p1n 1p2o 8poh 5pol po8lan poly1 po3ny po1ra
-2porn por4t3h po5rö 5poti p1pa p6p5ei ppe6la pp5f p2p1h p1pi pp1l
-ppp6 pp5ren pp1s p5pö pr6 3preis 1pres 2p3rig 5prinz 1prob 1prod
-5prog pro8pt pro6t5a prote5i 8proß prä3l 1präs
-präte4 1prüf p5schl 2pst 1p2sy p1t p8to8d pt1s 5p6ty 1pu
-pu1b2 2puc pu2dr puf8fr 6p5uh pun8s pu8rei pu5s6h pu1ta p1v p3w 5py
-py5l p1z pä6der p5ä6m pä8nu 8pär pät5h
-pät1s qu6 1qui 8rabk ra6bla 3rable ra2br r1abt 6rabz ra4dan ra2dr
-5rafal ra4f3er ra5gla ra2g3n 6raha ral5am 5rald 4ralg ra8lins 2rall
-ral5t 8ramei r3anal r6and ran8der ran4dr 8ranf 6ranga 5rangi ran8gli
-r3angr rans5pa 8ranw r8anz. ra5or 6rapf ra5pl rap6s5er 2r1arb 1rarh
-r1arm ra5ro 2r1art 6r1arz ra8tei ra6t5he 6ratl ra4t3ro r5atta raue4n
-6raus. r5austa rau8tel raut5s ray1 r1b rb5lass r6bler rb4lie rbon6n
-r8brecht rb6s5tä r8ces r1che rch1l rch3m rch3re rch3tr rch1w 8rd
-r1da r8dachs r8dap rda5ro rde5ins rdio5 r8dir rd3ost r1dr r8drau 1re.
-re1ak 3reakt re3als re6am. re1as 4reben re6bl rech5a r8edi re3er
-8reff 3refl 2reh 5reha r4ei. reich6s5 8reier 6reign re5imp 4r3eina
-6r3einb 6reing 6r5einn 6reinr 4r3eins r3eint reli3e 8r5elt 6rempf
-2remt ren5a6b ren8gl r3enni 1reno 5rente 4r3enth 8rentl 4r3entw 8rentz
-ren4zw re1on requi5 1rer rer4bl 6rerbs 4r3erd 8rerhö 8rerkl
-4r3erla 8rerlö 4r3erns 6r5ernä rer5o 6r5erreg r5ertr r5erwec
-r5erö re2sa re8schm 2ress re5u8ni 6rewo 2r1ex r1f r8ferd rf4lie
-8r1g r8gah rge4bl rge5na rgest4 rg6ne r2gni2 r8gob r4g3ret rg8sel r1h8
-r2hy 5rhyt ri1ar ri5cha rid2g r2ie rieg4s5 ri8ei ri1el ri6ele ri1en
-ri3er. ri5ers. ri6fan ri8fer ri8fr 1r2ig ri8kn ri5la rimä8
-ri1na r8inde rin4ga rin6gr 1rinn 6rinner rino1 r8insp 4rinst
-ri1nä ri5o6ch ri1o2d ri3o6st 2r1ir r2is ri3sko ri8spr ri8stü
-ri5sv r2it 6r5i6tal ri5tr ri6ve. 8r1j 6rk r1ke rkehrs5 r1ki r3klin
-r1k2n rk3str rk4t3an rk6to r6kuh rkä4s3t r1l r5li rline5a 6r1m
-r6manl rma4p r4m3aph r8minf r8mob rm5sa 2rn r1na rna8be r5ne rn2ei
-r6neif r6nex r6nh rn1k r1no r6n5oc rn1sp r1nä r1nü ro6bern
-6robs ro1ch 3rock. ro5de ro1e 4rofe ro8hert 1rohr ro5id ro1in ro5isc
-6rolym r2on 6roog ro6phan r3ort ro1s2p ro5s6w ro4tau ro1tr ro6ts 5rout
-r1p rpe8re rp2f r2ps r2pt r1q 2rr r1ra r1re rrer6 rr6hos r5rhö
-r1ri r1ro rro8f rr8or rror5a r1ru r3ry r1rä r1rö r1rü
-2r1s r6sab r4sanf rse6e rse5na r2sh r6ska r6ski rs2kl r8sko r2sl rs2p
-r6stauf r8sterw r8stran rswi3d4 r2sz 2r1t rt3art r8taut r5tei rt5eige
-r8tepe r4t3erh r8terla r4t3hei r5t6hu r4t3int rt5reif rt1sc rt6ser
-rt6s5o rt6s5u rt5und r8turt rube6 ru1en 1r4uf ruf4st ru1ie 2r1umg
-2r1uml 2rums run8der run4d5r 6rundz 6runf 8runs 2r1unt 2r1ur r6us
-ru6sta ru3str ru6tr 1ruts r1v rven1 rvi2c r1w r1x r1za rz5ac r6z5al
-r8z1ar r8zerd r6z5erf rz8erh rz4t3h r8zum rä4ste räu8sc
-r1öf 5röhr rö5le 3röll 5römis r1ör
-rö2sc 3rümp 1sa. 1saa s3a4ben sa2bl 2s1abs 6s1abt 6sabw
-3sack. 6s3a4der 1saf sa1fa 4s1aff sa5fr 1sag 1sai sa1i2k1 4s1akt 1sal
-sa1la 4s3alpi 6salter salz3a 1sam s5anb san2c 1sand s5angeh 6sanl
-2s1ans 6s3antr 8s1anw s1ap s6aph 8sapo sap5p6 s8ar. 2s1arb 3sarg
-s1arm sa5ro 2s1art 6s1arz 1sas 1sat sat8a 2s1atl sa8tom 3s8aue s5auff
-sau5i s6aur 2s1aus 5s6ause 2s1b2 2sca s4ce 8sch. 3scha. 5schade
-3schaf 3schal sch5ame 8schanc 8schb 1sche 6schef 8schex 2schf 2schg
-2schh 1schi 2schk 5schlag 5schlu 6schmäß
-6schnaß 1scho 6schord 6schp 3schri 8schric 8schrig
-8schrou 6schs 2scht sch3ta sch3tr 1schu 8schunt 6schv 2schz 5schö
-5schü 2sco scre6 6scu 2s1d 1se se5an se1ap se6ben se5ec see5i6g
-se3erl 8seff se6han se8hi se8hö 6s5eid. 2s1eig s8eil 5sein.
-sei5n6e 6s5einh 3s8eit 3sel. se4lar selb4 6s3e4lem se8lerl 2s1emp
-sen3ac se5nec 6s5ents 4sentz s8er. se8reim ser5inn 8sermä
-8s5erzi 6seröf se1um 8sexa 6sexp 2s1f2 sfal8ler 2s3g2 sge5b2 s1h
-s8hew 5s6hip 5s4hop 1si 2siat si1b sicht6s 6s5i6dee siege6s5 si1en
-si5err si1f2 si1g2n si6g5r si8kau sik1i si4kin si2kl si8kü si1la
-sil6br si1na 2s1inf sin5gh 2s1inh sinne6s5 2s1ins si5ru si5str 4s1j
-s1k2 6sk. 2skau skel6c skelch5 s6kele 1s2ki. 3s4kin. s6kiz s8kj
-6skn 2skow 3skrib 3skrip 2sku 8skü s1l s8lal slei3t s4low 2s1m
-s1n 6sna 6snot 1so so1ch 2s1odo so4dor 6s5o4fen solo3 s2on so5of 4sope
-so1ra 2s1ord 4sorga sou5c so3un 4s3ox sp2 8spaa 5spal 1span 2spap
-s2pec s4peis 1spek s6perg 4spers s6pes 2s1pf 8sphi 1s2phä 1spi
-spi4e 6s5pig 6spinse 2spis 2spla 2spol 5s6pom 6s5pos 6spoti 1spra
-3s8prec 6spreis 5spring 6sprob 1spru s2pul 1s2pur 6spy 5spän
-1spü s1q 2s1r 2s1s2 sse8nu ssini6s ssoi6r 2st. 1sta 4stafe 2stag
-sta3la 6stale 4stalg 8stalk 8stamt 6st5anf 4stans 6stanw 6starb sta4te
-6staus 2stb 6stc 6std 1ste 4steil 3s2tel st3elb 8stemb 6steppi 8stese
-8stesse 6stf 2stg 2sth st1ha st3hei s8t1hi st1ho st5hu 1sti sti4el
-4stigm sti3na 6stind 4stinf sti8r 2stk 2stl 2stm 1sto 6stoll. 4st3ope
-6stopf. 6stord 6stp 5stra. 4strai 3s4tral 6s5traum 3straß
-3strec 6s3tref 8streib 5streif 6streno 6stres 6strev
-5s6tria 6strig 5strik 8strisi 3s4troa s8troma st5rose 4struf 3strum
-6sträg 2st1s6 2stt 1stu stu5a 4stuc 2stue 8stun. 2stv 2stw s2tyl
-6stz 1stä 8stäg 1stö 1stü 8stüch 4stür.
-1su su2b1 3suc su1e su2fe su8mar 6sumfa 8sumk 2s1unt sup1p2 6s5u6ran
-6surte 2s1v 2s1w 1sy 8syl. sy5la syn1 sy2na syne4 s1z s4zend 5s6zene.
-8szu 1sä 6s5änd 6säugi 6säuß
-5söm 2s1ü2b 1süc sü8di 1sün 5süß
-taats3 4tab. taba6k ta8ban tab2l ta6bre 4tabs t3absc
-8tabz 6t3acht ta6der 6tadr tad6s tad2t 1tafe4 1tag ta6ga6 ta8gei
-tage4s tag6s5t tah8 tahl3 tai6ne. ta5ir. tak8ta tal3au 1tale ta8leng
-tal5ert 6t5a6mer 6tamp tampe6 2t1amt tan5d6a tan8dr tands5a tani5e
-6tanl 2tanr t3ans 8t5antr tanu6 t5anw 8tanwa tan8zw ta8rau 6tarbe
-1tari 2tark 2t1arm ta1ro 2tart t3arti 6tarz ta1sc ta6sien ta8stem
-ta8sto t5aufb 4taufn 8taus. 5tause 8tausf 6tausg t5ausl 2t1b2 2t1c
-t6chu 2t1d te2am tea4s te8ben 5techn 4teff te4g3re te6hau 2tehe te4hel
-2t1ehr te5id. teig5l 6teign tei8gr 1teil 4teinh t5einhe 4teis t5eisen
-8teiw te8lam te4lar 4telek 8telem te6man te6n5ag ten8erw ten5k tens4p
-ten8tro 4t3entw 8tentz te6pli 5teppi ter5a6b te3ral ter5au 8terbar
-t5erbe. 6terben 8terbs 4t3erbt t5erde. ter5ebe ter5ein te8rers terf4
-8terhö 6terklä ter8nor ter6re. t8erscha t5e6sel te8stau
-t3euro te1xa tex3e 8texp tex6ta 2t1f2 2t1g2 2th. th6a 5tha. 2thaa
-6t1hab 6t5haf t5hah 8thak 3thal. 6thals 6t3hand 2t1hau 1the. 3t4hea
-t1heb t5heil t3heit t3helf 1theo 5therap 5therf 6t5herz 1thes 1thet
-5thi. 2t1hil t3him 8thir 3this t5hj 2th1l 2th1m th1n t5hob t5hof
-4tholz 6thopti 1thr6 4ths t1hum 1thy 4t1hä 2t1hö t1hü
-ti1a2m ti1b tie6fer ti1en ti8gerz tig3l ti8kin ti5lat 1tilg t1ind
-tin4k3l ti3spa ti5str 5tite ti5tr ti8vel ti8vr 2t1j 2t1k2 2t1l tl8a
-2t1m8 2t1n 3tobe 8tobj to3cha 5tocht 8tock tode4 to8del to8du to1e
-6t5o6fen to1in toi6r 5toll. to8mene t2ons 2t1ony to4per 5topf. 6topt
-to1ra to1s to6ska tos2l 2toti to1tr t8ou 2t1p2 6t1q tr6 tra5cha
-tra8far traf5t 1trag tra6gl tra6gr t3rahm 1trai t6rans tra3sc tra6st
-3traue t4re. 2trec t3rech t8reck 6t1red t8ree 4t1reg 3treib 4treif
-8t3reis 8trepo tre6t5r t3rev 4t3rez 1trib t6rick tri6er 2trig t8rink
-tri6o5d trizi5 tro1a 3troc trocke6 troi8d tro8man. tro3ny 5tropf
-6t5rosa t5roß 5trub 5trup trut5 1träg 6t1röh
-5trüb trü3bu t1rüc t1rüs 2ts ts1ab t1sac tsa8d
-ts1ak t6s5alt ts1an ts1ar ts3auf t3schr t5schä tse6e tsee5i
-tsein6s ts3ent ts1er t8serf t4serk t8sh 5t6sik t4s3int ts5ort.
-t5s6por t6sprei t1st t6s5tanz ts1th t6stit t4s3tor 1t2sua t2s1uf
-t8sum. t2s1u8n t2s1ur 2t1t tt5eif tte6sa tt1ha tt8ret tt1sc tt8ser
-tt5s6z 1tuc tuch5a 1tu1e 6tuh t5uhr tu1i tu6it 1tumh 6t5umr 1tums
-8tumt 6tund 6tunf 2t1unt tu5ra tu6rau tu6re. tu4r3er 2t1v 2t1w 1ty1
-ty6a ty8la 8tym 6ty6o 2tz tz5al tz1an tz1ar t8zec tzeh6 tzehn5 t6z5ei.
-t6zor t4z3um t6zäu 5täg 6täh t5ält t8än
-täre8 8tä8st 6täuß t5öffen
-8tö8k 1tön 4tüb t6ü5ber. 5tüch 1tür.
-u3al. u5alb u5alf u3alh u5alk u3alp u3an. ua5na u3and u5ans u5ar.
-ua6th u1au ua1y u2bab ubi5er. u6b5rit ubs2k u5bö u8büb 2uc
-u1che u6ch5ec u1chi uch1l uch3m uch5n uch1r uch5to ucht5re u1chu uch1w
-uck1a uck5in u1d ud4a u1ei u6ela uene8 u6ep u1er uer1a ue8rerl uer5o
-u8esc u2est u8ev u1fa u2f1ei u4f3ent u8ferh uf1fr uf1l uf1ra uf1re
-uf1rä uf1rü uf1s2p uf1st uft1s u8gabt u8gad u6gap ugeb8 u8gn
-ugo3s4 u1ha u1he u1hi uh1le u1ho uh1re u1hu uh1w u1hä u1hö
-6ui ui5en u1ig u3ins uin8tes u5isch. u1j 6uk u1ke u1ki u1kl u8klu
-u1k6n u5ky u1la uld8se u1le ul8lac ul6lau ul6le6l ul6lo ulni8 u1lo
-ulo6i ult6a ult8e u1lu ul2vr u1lä u1lö 3umfan 5umlau umo8f
-um8pho u1mu umu8s u5mö u1n1a un2al un6at unau2 6und. 5undein
-un4d3um 3undzw undü8 un8düb une2b un1ec une2h un3eis 3unfal
-1unfä 5ungea 3unglü ung2s1 un8gä 1u2nif un4it un8kro
-unk5s u1no unpa2 uns2p unvol4 unvoll5 u5os. u1pa u1pi u1p2l u1pr
-up4s3t up2t1a u1q u1ra ur5abs ura8d ur5ah u6rak ur3alt u6rana u6r5ans
-u8rap ur5a6ri u8ratt u1re ur3eig ur8gri u1ri ur5ins 3urlau urmen6
-ur8nan u1ro 3ursac ur8sau ur8sei ur4sk 3urtei u1ru uru5i6 uru6r u1ry
-ur2za ur6zä ur5ä6m u5rö u1rü urück3 u1sa
-usa4gi u2s1ar u2s1au u8schec usch5wi u2s1ei use8kel u8sl u4st3a4b
-us3tau u3s4ter u2s1uf u8surn ut1ac u1tal uta8m u1tan ut1ar u1tas ut1au
-u1te u8teic u4tent u8terf u6terin u4t3hei ut5ho ut1hu u1ti utine5
-uti6q u1to uto5c u1tr ut1sa ut1s6p ut6stro u1tu utz5w u1u u1v uve5n
-uve3r4ä u1w u1xe u5ya uy5e6 u1yi u2z1eh u8zerh u5ö uße6n
-ußen5e 8vanb 6vang 6varb var8d va6t5a va8tei
-va2t1r 2v1b 6v5c 6vd 1ve 6ve5g6 ver1 ver5b verb8l ve2re2 verg8 ve2ru8
-ve1s ve2s3p ve3xe 2v1f 2v1g 6v5h vi6el vie6w5 vi1g4 vi8leh vil6le.
-8vint vi1ru vi1tr 2v1k 2v1l 2v1m 4v5n 8vo8f voi6le vol8lend vol8li
-v2or1 vo2re vo8rin vo2ro 2v1p 8vra v6re 2v1s 2v1t 2v1v 4v3w 2v1z
-waffe8 wa6g5n 1wah wah8n wa5la wal8din wal6ta wan4dr 5ware wa8ru
-war4za 1was w5c w1d 5wech we6fl 1weg we8geng weg5h weg3l we2g1r
-weh6r5er 5weise weit3r wel2t welt3r we6rat 8werc 5werdu wer4fl 5werk.
-wer4ka wer8ku wer4ta wer8term we2sp we8stend we6steu we8str
-we8stö wet8ta wich6s5t 1wid wi2dr wiede4 wieder5 wik6 wim6ma
-win4d3r 5wirt wisch5l 1wj 6wk 2w1l 8w1n wo1c woche6 wol6f wor6t5r 6ws2
-w1sk 6w5t 5wunde. wun6gr wu1sc wu2t1 6w5w wy5a wärme5 wä1sc
-1xag x1ak x3a4men 8xamt x1an 8x1b x1c 1xe. x3e4g 1xen xe1ro x1erz
-1xes 8xf x1g 8x1h 1xi 8xid xi8so 4xiste x1k 6x1l x1m 8xn 1xo 8x5o6d
-8x3p2 x1r x1s6 8x1t x6tak x8terf x2t1h 1xu xu1e x5ul 6x3w x1z 5ya.
-y5an. y5ank y1b y1c y6cha y4chia y1d yen6n y5ern y1g y5h y5in y1j
-y1k2 y1lak yl1al yla8m y5lax y1le y1lo y5lu y8mn ym1p2 y3mu y1na yno2d
-yn1t y1on. y1o4p y5ou ypo1 y1pr y8ps y1r yri3e yr1r2 y1s ys5iat ys8ty
-y1t y3w y1z yä8m z5a6b zab5l 8za6d 1zah za5is 4z3ak 6z1am 5zange.
-8zanl 2z1ara 6z5as z5auf 3zaun 2z1b 6z1c 6z1d 1ze ze4dik 4z3eff 8zein
-zei4ta zei8ters ze6la ze8lec zel8th 4zemp 6z5engel zen8zin 8zergä
-zer8i ze1ro zers8 zerta8 zer8tab zer8tag 8zerz ze8ste zeu6gr 2z1ex
-2z1f8 z1g 4z1h 1zi zi1en zi5es. 4z3imp zi1na 6z5inf 6z5inni zin6s5er
-8zinsuf zist5r zi5th zi1tr 6z1j 2z1k 2z1l 2z1m 6z1n 1zo zo6gl 4z3oh
-zo1on zor6na8 4z1p z5q 6z1r 2z1s8 2z1t z4t3end z4t3hei z8thi 1zu zu3al
-zu1b4 zu1f2 6z5uhr zun2a 8zunem zunf8 8zungl zu1o zup8fi zu1s8 zu1z
-2z1v zw8 z1wal 5zweck zwei3s z1wel z1wer z6werg 8z5wes 1zwi zwi1s
-6z1wo 1zy 2z1z zz8a zzi1s 1zä 1zö 6zöl. zö1le
-1zü 2z1ü2b ä1a6 äb1l ä1che ä3chi
-äch8sc äch8sp ä5chu äck5a äd1a äd5era
-ä6d5ia ä1e ä5fa äf1l äft6s äg1h
-äg3le ä6g5nan äg5str ä1he ä1hi äh1le
-äh5ne 1ähnl äh1re äh5ri äh1ru ä1hu
-äh1w 6äi ä1isc ä6ische ä5ism ä5j
-ä1k äl1c ä1le ä8lei äl6schl ämi1e
-äm8n äm8s ä5na 5änderu äne5i8 äng3l
-änk5l ä1no än6s5c ä1pa äp6s5c 3äq
-är1c ä1re äre8m 5ärgern är6gl ä1ri
-3ärmel ä1ro ärt6s5 ä1ru 3ärztl ä5rö
-ä6s5chen äsen8s äs1th äta8b ä1te äteri4
-äter5it ä6thy ä1ti 3ätk ä1to ät8schl
-äts1p ä5tu äub1l äu1e 1äug äu8ga
-äu5i ä1um. ä1us. 1äuß ä1z
-ö1b ö1che ö5chi öch8stei öch8str öcht6
-5ö6dem 5öffn ö1he öh1l8 öh1re ö1hu
-ö1is ö1ke 1ö2ko 1öl. öl6k5l öl8pl
-ö1mu ö5na önig6s3 ö1no ö5o6t öpf3l
-öp6s5c ö1re ör8gli ö1ri ör8tr ö1ru
-5österr ö1te ö5th ö1ti ö1tu ö1v ö1w
-öwe8 ö2z üb6e2 3ü4ber1 üb1l üb1r
-5ü2bu ü1che ü1chi ü8ch3l üch6s5c ü8ck
-ück1a ück5ers üd1a2 ü6deu üdi8t ü2d1o4
-üd5s6 üge4l5a üg1l üh5a ü1he ü8heh
-ü6h5erk üh1le üh1re üh1ru ü1hu üh1w
-ü3k ü1le ül4l5a ül8lo ül4ps ül6s5c
-ü1lu ün8da ün8fei ünk5l ün8za ün6zw
-ü5pi ü1re ü8rei ür8fl ür8fr ür8geng
-ü1ri ü1ro ür8sta ür8ster ü1ru üse8n
-ü8sta ü8stes ü6s5tete ü3ta ü1te ü1ti
-üt8tr ü1tu üt8zei ü1v ß1a8 5ßa.
-ß8as ß1b8 ß1c ß1d
-1ße ß5ec 8ße8g 8ße8h
-2ß1ei 8ßem ß1f8 ß1g ß1h
-1ßi ß1k ß1l ß1m
-ßmana8 ß1n ß1o ß1p8 ß5q
-ß1r ß1s2 ßst8 ß1ta
-ß1te ßt3hei ß1ti ß5to
-ß1tr 1ßu8 6ß5um ß1v ß1w
-ß1z
+.ab1a
+.ab3l
+.abo2
+.ab3ol
+.ab1or
+.ab3s2
+.ab3u
+.ade3n
+.ae3
+.aft2
+.ag2a
+.ag4r
+.ag2u
+.ai2s
+.akt2a
+.al2e
+.al3k
+.al3lei
+.al5len
+.al3se
+.al4tei
+.alter6s5
+.alt1s
+.al2tu
+.ampe4
+.amt2s
+.ana1c
+.an3d2
+.anden6k
+.and4ri
+.an1er
+.ang2
+.an3gli
+.ang4s2
+.angst3
+.ani2s
+.an3k4
+.an3na
+.an3s2
+.an4si.
+.an3z2
+.aos4
+.ap5p6le.
+.aps2
+.ari1e
+.ar3k2a
+.ar4m3ac
+.ar4mun
+.ar2sc
+.ar4tan
+.ar4t3ei
+.arter4
+.ar6t5erh
+.ar2tr
+.arz2
+.as6sest
+.as2t
+.ata1
+.ate2
+.at4h
+.au3d
+.aue2
+.au4f3
+.aufs2
+.au2s1
+.au6stes
+.auß2
+.ax2
+.äm3
+.är6schl
+.ät2h
+.ät2s
+.äu3
+.bahn3
+.bah6ner
+.baus4
+.be3erb
+.bel2a
+.be3r4a
+.be3r2e
+.ber4g3a
+.ber6g5e6b
+.ber4g3r
+.ber4tr
+.bi4os
+.bi2t
+.bit1a
+.boge2
+.bo4s3k
+.bu4ser
+.bus3se
+.bu7s8ser.
+.bussy8stem.
+.ch4
+.char8mes
+.chi3er
+.dab4
+.da2r1
+.dar3in
+.darm1
+.da4te.
+.da4tes
+.de2al
+.de1i
+.dein2
+.de3lo
+.de8ments
+.den4ka
+.den4kl
+.den4ko
+.de1o2
+.de3r4en
+.derma3
+.dermas6
+.de3sk
+.di3el
+.di4en2
+.dien8sta
+.dienst7a8d
+.do3b
+.do2mo
+.do1pe
+.dor2f1
+.dy2s3
+.ebe2r1
+.edu3s
+.eg2o
+.eh2e
+.ehe1i
+.ei3e2
+.ei3f2e
+.ei3k
+.einbus6
+.ein3d
+.eine2
+.ei4neb
+.ein6erl
+.eise4
+.ei2sp
+.eis3s2
+.ei4s1t
+.ei2tr
+.eke2
+.ek3li
+.el2bi
+.el2bl
+.el4fei
+.el2fl
+.el2i
+.em3m2
+.en1
+.en4da
+.en4d3er4
+.en2d3r
+.en4dü
+.en2gl
+.enn2
+.ent3
+.en2ta
+.en4tei
+.en4tio
+.en2t1r
+.ents2
+.epi1
+.ep3p
+.er4bei
+.er8brecht
+.er2bu
+.er4dan
+.er4dei
+.erden6k
+.er4dep
+.er4d3er
+.er1e
+.ere3c
+.erf4
+.er1i
+.ers2
+.er8stein
+.erster6
+.er8sterb
+.er8stritt.
+.er8stritten.
+.ert2
+.er4z3el
+.er4zen4
+.ese3le
+.es3p
+.es2st
+.es2t
+.est6e
+.est3r
+.et2s
+.eu1
+.eu3g4
+.eu3r4
+.eu3t
+.eve4r
+.ext4
+.fe3la
+.fer4no
+.fe4sta
+.fid2
+.fi4le.
+.fi4len
+.fi2s
+.flö8s7se.
+.flö8s7sen.
+.flö8s7ses
+.flug1
+.fs4
+.fu2sc
+.ga2me
+.gangs4
+.ga4s3e
+.ga6sten
+.ga2t
+.gd2
+.gebe4a
+.geb2l
+.gel4b3r
+.gel2d1
+.ge3lu
+.ge5nar
+.ge3n4e
+.ge3n2o
+.gente4
+.ge3r4a
+.ge3r2e
+.ge3ro
+.ge3s2
+.get4
+.ge3u
+.glan2
+.gla4s3t
+.gol6der
+.grif8fes
+.gus2
+.haft3s
+.hal5le
+.hal2s
+.halt4e
+.hau4sa
+.hau2t1
+.he2
+.he4bei
+.he3fe
+.he3le
+.her3an
+.he3rat
+.her6b5ra
+.he3rer
+.he3ri
+.he6r5inn
+.hin3u
+.hof1e
+.ho4fen
+.ho4met
+.höch2
+.ia2
+.il3
+.im2a
+.ima4ge
+.im5m2
+.in1
+.ind4
+.in3gl
+.ink2
+.in3n2e
+.in3sk
+.inu1
+.ioni1
+.ire3
+.is2a
+.it2h
+.iv2
+.ivo3
+.joni1
+.jor3
+.ka2b5l
+.ka2i
+.ka3le
+.ka3ta
+.ka4t3io
+.ken6num
+.ker3s
+.ki4e
+.klang3
+.ko3b
+.kopf1
+.kor4da
+.kraf2
+.ks4
+.kus2
+.la3be
+.la3ho
+.lase2
+.le4ar
+.le4gas
+.le3n2i
+.len3z
+.lich8t7er8s
+.li2f
+.li3po
+.li4ve.
+.lo4g3in
+.lo2sc
+.los3s2
+.lo3ver
+.lö4ss
+.lus2
+.luster6
+.lu4str
+.lut4h
+.ma3d
+.mal4e
+.mas8sen.
+.ma4str
+.mat4c
+.matu3
+.md2
+.me3l2a
+.me3ne
+.me3no
+.men8schl
+.men8schw
+.ment4
+.mes4sp
+.mi2f
+.mik4
+.mil2z
+.mi2t1
+.mm2
+.na3no
+.na3t
+.nat2h
+.näs5c
+.nebe4n
+.ner2f
+.ne1ro
+.nich2
+.nicht5e
+.ni2e
+.ni3k4l
+.nob4
+.no2c
+.no2s
+.no4th
+.nul2
+.nus4
+.oa5s
+.ob1a
+.obe2
+.ober5ei
+.of2e
+.ohr5s
+.oper4
+.or2a
+.ord4e
+.ort2
+.ort4h
+.orts3e
+.os3s
+.os5t6alg
+.oste2
+.ost3el
+.ost5end
+.osten8de
+.oste6re
+.ost3r
+.ot1
+.ozo4
+.öl3l
+.pab4
+.pa2r1e
+.par3t4h
+.pe2c
+.pe3la
+.pe3le
+.pe4ste
+.pf4
+.ph4
+.poka2
+.po6stei
+.po4str
+.ps2
+.rabe4
+.ra3ch4e
+.ra3me
+.ra4sp
+.ra4s3s
+.rau2m
+.rau8schl
+.re3ale
+.rebs2
+.re3cha
+.re5insz
+.reis6e5i
+.reli1
+.res2t
+.re4stu
+.ri4as
+.richt6e
+.ro4a
+.ro3be
+.ro2ha
+.ro3m4a
+.ro2tr
+.ro3tu
+.rö2sc
+.rö4ss
+.rös3se
+.ruf3s
+.ruh2r1
+.runder6
+.ru5s6ses
+.rü1b
+.rücker6
+.rü4ss
+.sa3br
+.sali1
+.sami1
+.sas2
+.sa3sse
+.sau1c
+.sau5er.
+.sä5s4
+.sch4
+.schaf8t7end
+.scheiner8
+.scho7s8se.
+.scho7s8ses.
+.se2ei
+.se2ha
+.sein2
+.sen4f
+.sen3s
+.se3re
+.se1ro
+.se2t1
+.sha2
+.si3gn
+.si2te
+.ski1e
+.sour2
+.spani7er.
+.spä5s4
+.spiege8lei
+.st4
+.ste2i
+.steiner8k
+.sto4re
+.stras4
+.sucher6
+.tage4s
+.tan4k3a
+.tan4k3l
+.ta3ra
+.tar3t
+.ta2t3h
+.ta2to
+.ta2t1u
+.te2e
+.te2f
+.tehe3
+.teiler8s
+.tei8l7ersc
+.te3l
+.te3no
+.ten3s
+.te1ra
+.te6stei
+.te6stel
+.tester8g
+.tester8h
+.th4
+.ti2e
+.ti2me
+.ti4mes
+.ti2s
+.ti8sch7end
+.tite4
+.tode2
+.to4der
+.to2n
+.to4nat
+.to3nes
+.to4nin
+.to4pl
+.to2pr
+.to2w
+.tras3
+.tra4ss
+.tri3e4s
+.trockenmas8
+.ts4
+.tsa3
+.tse3
+.tu3ra
+.tu3ri
+.turm1
+.tur4ma
+.ub2
+.ufe2
+.ufer1
+.ul2b3
+.um3
+.ume2
+.umo2
+.ums2
+.un3a2
+.un3d
+.une4
+.un3g
+.uni2t
+.ur3a2d
+.ural4
+.uran6fa
+.ur1c
+.ur1e
+.ur4inf
+.ur3o4m
+.ur1o2p
+.ur3s2
+.ut2a
+.ut3r
+.übe4
+.ve5n2e
+.vol2
+.vo4r
+.wah4l
+.wa2s
+.weg5s
+.wei4ta
+.welter8e
+.welter8kl
+.wer6ker
+.wer4kr
+.wer4tr
+.wetterer8s
+.wi4e
+.wor2
+.wort5en6
+.wur2f1
+.xe3
+.ya4l
+.zahn3
+.zeit3s
+.zel4la4
+.zelle4
+.zel6lei
+.zel4li
+.zeug4i
+.zi2e
+.zie4l3u
+.zin4ka
+.zin4s3c
+.zin4st
+.zol2
+.zuch2
+.zucht3
+.zug3l
+.zu4gra
+.zu2pf
+.zweigen8
+.zwei8g7end
+a1ab
+aa2be
+aa1c
+a1a2ce
+aa2gr
+a1akt
+a1a2n
+a2ans
+a1aq
+2a2ar
+aa2r3a
+aar3b
+aar3d
+aa3rea
+aa2rei
+aarf4
+aar3g2
+aar3k4
+aar3t4
+1aas
+aas1t
+aa2th
+aa2t3r
+aat4s1
+2a3au
+a1ä
+a1b
+2aba
+ab1alt
+ab2am
+ab2ant
+ab1au
+ab2aut
+ab1ä
+ab2är
+ab2äu
+2abbat
+2abbin
+1abd
+4a3be.
+4a3bec
+abe1e
+ab1eic
+abe3i4d
+ab1eil
+ab1ein
+4ab2el
+abe2la
+abela4d
+abe2le
+abe4l3in
+1abent
+2aber
+a2berd
+a3beri
+ab1er2k
+ab1er2r
+ab1er2z
+4abes
+abe2s1e
+ab3esse
+abes2t
+ab1eß
+2ab2et
+2abew
+1abf
+1abg
+3abga
+1abh
+2abi
+4abil
+ab1ins
+ab1ir
+3ab1it
+1abk
+ab1l
+1a2bla
+a4blag
+a3blat
+a4blau
+1a2blä
+ab4le.
+3ab3lei
+2ablet
+ab3li
+a2blin
+ab4lit
+2ablo
+1a2blö
+2ablu
+abma3s
+1abn
+2a3bo
+3a4bo.
+ab2of
+3a4bon
+4abot
+2abö
+ab3r
+a4brä
+a2bre
+2abro
+ab4ros
+2abrö
+1absc
+1ab3s2p
+abs2t2
+1abtei
+3abtr
+2abu
+a2bum
+ab1ur
+2abü
+1abw
+2aby
+3abz
+2a3ca
+ac1c
+a1cem
+a1cen
+a1cet
+ach1a
+a1chal
+a3chari
+ach3as
+ach3au
+2achb
+a1che
+a2ch1e2c
+ach1ei
+ach4ei.
+a2chep
+a4cherf
+ach5erfa
+a4ch3erh
+a4ch3erl
+a4cherö
+a4ch3erw
+2achf
+2a1chi
+a2chim
+ach3l
+2ach3m
+ach3n
+a1cho
+a3cho.
+ach1ob
+a2cho2r
+ach3ö
+2ach3r
+2achsc
+achs4el
+ach3s4i
+ach3skr
+achs4or
+ach3su
+a4cht
+ach4tak
+ach8tersp
+ach6t5erw
+ach4tin
+ach2t1o
+ach8traum
+ach8träume.
+ach8träumen.
+ach6trit
+ach4tum
+a1chu
+ach1u2f
+ach3ü
+2achv
+4ach1w
+a2chy
+2a1ci
+4ack.
+ackmu4
+ackmus3
+ack2sp
+acksta4
+2a1cl
+a3co
+acon4n
+2acu
+a1ç
+a1d
+2ad.
+2ada.
+4adab
+a2dac
+a2dad
+ad2ag
+adai4
+ad1ama
+a2d1an
+3adap
+4a3d2a2r3
+2adat
+a2d1au
+a3dau.
+1a2dä
+ad1c
+1add
+2ade.
+ade2al
+a3dec
+a3dee
+adefi4
+2adeg
+4aden
+a3dena
+ade1ra
+4ades2
+ade3sp
+ades4s
+2adf
+4adh
+4adi
+adi3en
+adi3er.
+adie4sc
+3adj
+2adli
+4admu
+ad2ob
+1a2dop
+2adp
+2adq
+2ad3rec
+ad3rei
+ad3run
+2ads2
+ad3sz
+2ad2t1
+adte2
+adt3h
+1adv
+2a1e1
+ae2b
+a2ec
+ae2d
+ae2i
+a2ek
+a3el.
+a2ela
+a2ele
+a2eli
+a3els
+ae2m
+ae2o3
+ae2p
+a3er.
+3a2er2o
+aes2a
+ae4sc
+ae2ta
+a2ew
+ae2x
+2afa
+af1ab
+a2f1a2n
+a3far
+a2f1au4
+2afä
+a2f1än
+2afe
+a2f1ec
+a4fentl
+a4f1ep
+aff4a
+af2f3l
+af4flu
+2afi
+afi2e1i
+afi6kanz
+afi4kat
+afi2t
+2af3l
+af1la
+a1flu
+2afo
+a2f3oc
+a2ford
+2afra
+af3rau
+af3rä
+af3re
+2afro
+af3rö
+af4rü
+af3s2a
+af3sh
+af2si
+af2sp
+af2t1a
+af2tei
+af2te2l
+aft4erk
+af2t1o
+af2tö
+aft3r
+af2tra
+af2t5re
+af2tur
+a2f3ur
+2afü
+a1g
+2ag.
+2aga
+ag1a2b
+ag1a2d
+ag1am
+ag1ar
+a2g1au
+agd1
+ag2del
+ag2di
+ag2dr
+ag2du
+4age.
+age1i
+agein4s
+age4ler
+ag2em
+2agen.
+age4neb
+a4gentu
+2ages
+age4sam
+age4s3i
+age2s3p
+ages5s
+ages6sen
+age4s3ti
+3aggr
+a2g1id
+a2gim
+2a2g1l
+ag4lan
+ag4las
+a4glö
+2agm
+ag2n
+ag4nat
+a4gnä
+ag4ne.
+ag4nu
+ag3rat
+a2g3re
+a2g3ri
+ag4ro
+2ags
+ag3sah
+ag4sam
+ag3s4eid
+ags8porta
+ag2s1tr
+2agt
+ag2th
+2agu
+a2gund
+2ah.
+a1ha
+ah2an
+ah4at
+a1hä
+2a1he
+ahe1in
+a2h1er2h
+ahe1u
+a1h2i
+ahin3
+ah2l3a2
+ah2l1ä
+ah4l1ei
+ah2lel
+ahle4na
+ah4l3erd
+ah4l3erh
+ahl1o2
+ah2lö
+ahl3sz
+ahme1i
+ah3mu
+ah4n3a
+ah2nä
+ah3nee
+ahn3el
+ah4nerd
+ahner4e
+ahner6le
+ahner4n
+ah2nin
+ah2no
+1a2hor
+ah1os
+a2h3ö
+4ahr
+ahr1a
+ah3r2e
+ahren6sc
+ahre4s3
+ah3ri
+ahrta2
+ahr2ti
+ahr4tri
+ahr4tro
+ahr4tun
+ah2ta
+ah2te2l
+ah2t1ex
+ah2t5r
+aht1s2
+a1hu
+ah1w
+a1hy
+2ai.
+ai3a4
+a1ia.
+2aib
+ai2bl
+aid4s
+aids1t
+ai1e4
+ai3en1
+aif4
+ai1fr
+ai3g4
+a3ik.
+ai3ke
+ai2lar
+ail3d4
+ai2lei
+ail3g
+ai2lo
+4ain
+ain2a
+a1ind
+ai5n4e
+ain3s
+ains2p
+3airb
+ai2sa
+a3isch.
+ai5schw
+ai3s2e
+ais3sen
+ais5st
+ait4
+a3iv.
+a3ivl
+a3ivs
+a1j
+a2jat
+ajekt4o
+2ak.
+2aka3b4
+a2ka3d2
+2akal
+2a3kam
+2akar
+ak4at
+aka4tak
+1akaz
+4akä
+2akb
+2akc
+2akd
+2a1ke
+a2kef
+a2k1em
+a2k1ent
+a2kes
+a2keu
+4a1ki
+ak1ins
+1akku
+2ak3l
+ak4li
+a1kna
+2ako
+2a1kr
+ak4ri
+3akro3
+2aks
+ak3sh
+ak2t1a2b
+ak4tag
+ak3tan
+2aktb
+ak2tel
+ak3ten
+akt2er
+2aktik
+2aktis
+2aktm
+ak2tö
+ak2t3r
+ak3t4ri
+2aktsi
+2aktsp
+2aktst
+2aktw
+a1ku
+2akun
+a2kup
+2akur
+4a3kü
+1akz
+3akze
+a1la
+2ala.
+4alabo
+al2abr
+al1af
+al1age
+2alai
+al1akr
+al1am
+al1ana
+4aland
+a2lang
+al1anz
+al1app
+a3lar.
+al3arc
+a3lare
+al2arm
+2al3arr
+a2lart
+ala2s
+al1asi
+al1ass
+ala2t1a
+al4atm
+alat3z
+al1au
+al3aug
+a1lä
+a2l1äm
+al1än
+al1äu
+3albat
+al2bär
+alber4e
+al4berh
+al4b3er4w
+al2b3l
+al2boh
+alb3ru
+alb5st
+al2dä
+al4d3erl
+al4d3ern
+alde2s
+ald3inn
+al2dr
+alds2
+2ale
+4ale.
+ale4ar
+al1eb
+ale2be
+al1ec
+a4l3ef
+a2l1ei
+a3l2eic
+a4l3ein
+a2l1el
+5a2lema
+alen1
+4a3len.
+3alenc
+alende4
+al3endr
+a4l3ends
+a2leng
+al2enn
+ale2p
+al1epo
+4aler.
+a2l1erb
+a2l1erf
+a2l1erh
+aler4kl
+a2l3erl
+al1erm
+aler4mi
+a2l1er4r
+a2l1ert
+3a4l3erwä
+4ales
+a2l1e4sk
+a2less
+a2l1eu
+al3exi
+alf4r
+2alg.
+3algi
+al2gli
+al3glo
+1algo
+3algor
+2ali
+al2imb
+al1imm
+ali4nal
+al1ind
+a2l1inq
+al1ins
+alken1
+al2klö
+al2kne
+1alkoh
+alk3s
+al2lab
+alla3d
+alla2m
+al2lan
+al2l1ap
+al2l1a2r
+al6later
+al2lä
+al3läu
+al4lec
+3allee
+alle4gi
+al4leh
+al3lend
+all3erk
+al3les
+alle3se
+al2leu
+al2lid
+alli5er.
+alli7ers.
+al2lob
+al2lo2c
+al2lop
+al2lo2s
+al2lö2
+all3öse
+al2luf
+allu4s
+al2lü4s
+al2map
+al3mas
+al4m3ast
+almo6de.
+a2l1ob
+3aloe
+a2lof
+4alog
+alo2ga
+alo2gr
+al1ont
+al1ort
+a2l1ö
+al2ös
+3alp.
+3alpe.
+1alph
+al2pho
+alp4r
+alrat2
+al3sak
+al6schei
+al3ses
+al4sh
+al3skl
+al2stu
+al2sum
+al2t1ak
+al2t1an
+1altä
+al4temu
+al4t3er5f
+al2teu
+al2tin
+alt1op
+al2tö
+al4t3rat
+al2tre
+al2t3ri
+al2t3ro
+alt4stü
+2altu
+a1lu
+alu3b4
+al2u3f
+alu3g
+al1u2k
+a2lum
+al1umb
+al1ur
+a3lus
+4aly
+al2zar
+al2zau
+alz4erk
+al2zw
+2am.
+am2a
+ama3d2
+ama3g
+2amah
+a2malg
+2a3m4an
+a2m3ap
+2amar
+ama4sta
+a2maz
+2amä
+4ame.
+a2meb
+2amel
+am4e4n1
+amen6s5pr
+ame3r2a
+a2m1erf
+a2meri
+ame5r2u
+a4mesh
+a3met
+2amf
+am4ing
+2amir
+2amis
+2amit
+2amk
+2aml
+2amm.
+am2ma2c
+2ammal
+amma2n
+am2mar
+am2mas
+amma4sc
+am2maß
+am4ma4te
+ammen8ge.
+ammes3
+am2mid
+ammi2e
+am2min
+am2mit
+am4mo2d
+am2mö
+ammu2
+amm3unt
+am4mus
+am4mü
+amni1
+a2mö
+2ampe.
+2ampen
+am4pf
+amp2f1a2
+ampf1o
+2am2ple
+2ampo
+am3pr
+4amsc
+am4schl
+am3sh
+1amt.
+am2t1a2
+am2t1ä
+am2tei
+amt3eig
+am2tel
+2amtem
+am4t3ern
+am2t1ex
+am2tis
+am2tit
+am2to4
+am2tö
+am2t3r
+am2t1u
+2amu
+3a2mul
+2ana.
+2anab
+ana3c
+anadi1
+an2ag
+2a3nak
+an1alg
+ana4lin
+ana3ma
+2anan
+an4and
+2anas
+a5nat.
+ana4th
+a5n4atm
+ana2tr
+an3aug
+1an1äs
+1anb
+2anbas
+2anbu
+an3ch
+2and.
+3an3d2ac
+and3arm
+and3ei
+anden6ga
+an4d3ent
+and5erob
+ande2s
+an2d1ex
+and4sas
+and2so
+and6spar
+and6spas
+and6s5paß
+and2su
+4andu2
+an2d1ur
+2ane
+4ane.
+an3ec
+a3nee
+an2ei.
+an3eif
+3aneig
+a4neis
+3a2n1e4k
+ane2mi
+4anen
+aner4fa
+an2erh
+a4nerke
+4anern
+a4nerz.
+an4erze
+an1eth
+1anf
+2anf.
+2anfab
+3anfä
+an3fe
+2anfi
+an4fj
+anf3le
+4anfors
+anf5rau
+2anfs
+an3f2u
+4ang.
+1angab
+an2gan
+an2g1ar
+2ange.
+1angeb
+1angeh
+an2g1ei
+an4g3erf
+an4g3er4w
+an4g3erz
+2angh
+2angie
+ang1l
+an2gla
+ang3n
+ang1r
+ang3ra
+1an3gri
+4angs.
+angt4
+1anh
+2a3n2i
+ani3d
+4anie
+ani3els
+ani5ers.
+ani3g2
+ani3ke
+3a4nim
+a4n3ind
+a4n3ins
+ani2o
+an3i4on
+a4niso
+anis2t
+2anj
+2ank.
+an2kab
+an2k1ak
+an2kan
+an2kei
+2anken
+ank5erfa
+2anki
+an2klö
+an2klu
+ank3no
+an4k3opf
+an2ko4r
+ank1r
+ank3ra
+an4kras
+ank3rä
+an2kro
+2anks2
+ank3se
+2ankt
+3ankü
+1anl
+2anlad
+3anlag
+anma3s2
+2anmo
+1anmu
+2ann.
+1annah
+an2nar
+an3ne
+an4nef
+2anns
+ann4s3p
+2annt
+2ano.
+ano3b
+an1od
+2anof
+2anog
+anoi3
+a3nol
+ano2la
+1a2nom
+a3nom.
+a2n1or
+2a3nos
+2a1nö
+2anpu
+1anr
+2anrö
+an3s4ar
+1an3s2ä
+1ansc
+an3skr
+ans1pa
+ans3pon
+1anspr
+1anst
+an3s2z
+2ant.
+an2t3ar
+anta4re
+an3t2ä
+1antá
+3antei
+an3tha
+2antie
+3antise
+2anto
+anton2
+3antr
+ant3rin
+1antw
+2anu
+anus3s
+an4ut
+a1nü
+1anw
+2anwi
+an2zä
+2anzb
+2anzd
+1anzei
+anze2n
+2anzes
+2anzg
+2anzh
+an2zid
+an2z1i4n
+2anzk
+2anzm
+2anzr
+2anzs
+2anzt
+1anzü
+3anzün
+2anzv
+2anzw
+an2zwa
+an2zwi
+2anzy
+2ao
+aof4
+ao3i4
+a1op
+aopf4
+a1or
+a1os3
+aost2
+a3ot.
+aot4r
+ao3t2s
+2a1ö4
+a1p
+4ap.
+2apa
+a2pe.
+a3pel
+a2pé
+a2pf
+ap2fa
+1apfel
+2apfes
+a3pfl
+a2pht
+2api
+2ap3l
+ap4la
+ap4lä
+ap4lo
+ap2n
+a2pot
+2apr
+4apro
+ap4ster
+ap2sto
+ap2str
+ap3t2
+2a3pu
+2ar.
+a1ra
+a3ra.
+ar2ab
+2ar3abb
+ar3abf
+ar3abt
+ara3d2
+ar3adr
+a2r3al
+a3rale
+a3ra3li
+a3ralo
+2aran
+a2r1ang
+a2r1anz
+2arap
+a2r3app
+2arar
+a3ras
+a2r1au
+a1rä
+1arb
+2arb.
+2arba
+ar2bak
+ar2b3at
+ar2bau
+2arbef
+ar4b3ein
+2arbek
+2arben
+2arber
+4arbi
+2ar2bl
+2arbo
+2arb1r
+ar2bre
+2arbs2
+arb3se
+arb3sk
+arb3so
+2arb3t4
+2arbu
+1ar1c
+2archl
+2archr
+ar2dau
+arde2l
+ar2dob
+ar2dop
+ar2d3r
+ar2du
+a2rea
+are5aler
+a2reb4
+aree2
+ar1eff
+ar1ehr
+ar1eid
+a3reih
+areim3
+a2rein
+arein4b
+arein4s
+arein4t
+a2rele
+4arem
+4a5ren.
+a5reni
+aren6sem
+are3r2a
+arer2e
+a4r3erei
+a2rerg
+a2r1er3h
+a2reri
+a2rerk
+a2rerl
+ar2erw
+are3u
+arf1r
+arf3ra
+arf2sp
+4arg.
+ar3gan
+ar2gl
+ar2gn
+2arg4o
+ar3g4r
+2arh
+2ari
+ar2ia
+a2rid
+ari3e2n
+ari3erd
+ari3erg
+ari5ers.
+ar3inf
+arin3it
+ar1int
+a3rio
+ar2ir
+ar4is
+ari2su
+a3riu
+ar2kal
+ar2k1ar
+ark3aue
+ar2kil
+2ark3l
+ar4klag
+ar2kle
+ar2klo
+ark4lö
+ar2kor
+ark3s2a
+ark2se
+ark3she
+arku2
+ar2les
+ar3mad
+ar2mau
+ar3m2ä
+3armee
+ar2m1eg
+ar2m1ei
+ar4merk
+arm2or
+ar2mum
+4armü
+ar2nan
+arn2el
+ar3ni
+ar4nin
+a1ro
+4aroc
+ar1o2d
+ar1of
+aro2fe
+a3rol
+aro3m
+aron2
+a2r1op
+a2ror
+a2r1ö
+2arp
+arp3fe
+2arr
+ar2r3ad
+ar2r3as
+ar2rek
+arre4n1
+ar2r3or
+2arsa
+ar3s2h
+2ar3s2i
+ar3sse
+ar2tau
+2artb
+ar3t2e
+2artei
+artel6li6
+arter6la
+ar2the
+art3ho
+art2i
+2arto
+art3r
+art4res
+2arts
+art3ske
+2artuc
+2aru
+a2r1uh
+ar1um
+a3rumm
+a2rü
+2arv
+arwa2
+2ary
+ar2zau
+ar2zä
+2arze
+2arzi
+ar2zö
+1arzt
+arz2t3r
+2arzu
+ar2z1w
+2asa
+a4s3aa
+as2ad
+a4s3af
+as2al
+as1am
+as3art
+asa2s2
+asa3sse
+as3at
+asau4f
+a2s3aug
+asau2s1
+as3ät
+a2sca
+a4schec
+a4schef
+a4sch3ei
+a6scherg
+as4chi
+a2schm
+2ascht
+a3schu
+a4schum
+4a3se
+a4seb
+a4sec
+a4s1ef
+as1eie
+as1emi
+a5sen.
+ase4na
+ase4n3o
+asens2
+as1ent
+as2er
+a4s3erke
+as4es
+ase2t
+as1eta
+a4sex
+a4s3ha
+as2hi
+as3hir
+a2s3i2k
+2asim
+asin2g
+as1inn
+2asis
+a4s3l
+a4sm
+a4sn
+a1so
+as3ob
+as1o2f
+a3sol
+a3som
+aso2p
+as1or
+a4soz
+as1p
+as3pe
+aspek6to
+a4spel
+as4pen
+a4s2ph
+as2pi
+as4pin
+as3pio
+a4spir
+a4spl
+as3sa
+ass2ab
+ass6aus.
+ass2e
+ass3ein
+as3sel
+asse3le
+as3ser
+asserma6
+a4ss2i
+as3sin
+as3ski
+as3so
+as2spo
+as2spr
+as4st
+as5sta
+as5stei
+as5sti
+as5str
+as5stu
+2asta
+a4stab
+a3stä
+a4s1tec
+as2tee
+ast2el
+a4stemp
+a4s3tep
+ast2er
+a4st3ese
+as2tex
+a4s2th
+a2stoc
+ast3orc
+as4trau
+a2st3re
+ast4ren
+a3stro
+a4strol
+ast5roll
+a4s1tub
+a4stuf
+a2stum
+2a1su
+as2ur
+a3sus
+a4sw
+aswa2s
+2asy.
+3a4syl
+as3z
+aße4
+aß2en3
+a2ß1er
+aß2th
+2a1t
+4ata
+at1abe
+at1abr
+at2a1f
+a3t2a3g
+a3tah
+at1akt
+ata3l
+a3tam
+at3ank
+at1apf
+at2asc
+at3att
+a2t1au
+a3tau.
+at1än
+4atb
+at2c
+4ate.
+a2teb
+ateien6d
+at1eig
+3a2teli
+a3tell
+3atemg
+at2en
+ate4na
+atens4
+a2tep
+ate3r4al
+ate3ran
+atern2
+ate2ru
+4ates
+at2eu
+a2tew
+at2ex
+at3hag
+a3t4heb
+a2th3in
+3athl
+a4thr
+at2hu
+4a3ti
+ati3ka
+ati4kab
+ati6k5erw
+a4tinf
+at2is
+ati2sa
+ati2se
+atis3s
+3atla
+4atli
+4atlo
+3atm
+4atma
+4atmä
+4atmus
+ato4man
+ato4men
+3atomk
+ato2mo
+at1ort
+a3tra.
+atra2t
+a2trau
+a2t3rä
+at3re
+4atri
+at3rin
+a2t3rom
+a3t4ron
+at3rot
+at3rü
+at2sa
+at4schn
+at2se
+at2si
+ats1o
+ats1p
+ats3tät
+at3ta
+3attac
+at4tad
+at2ta2g
+at4t1ak
+at2ta2l
+at4tang
+at4tar
+at4tau
+at2tä
+4atte.
+at2tec
+at2tei
+at3t2el
+at4temp
+at5ter
+attes2
+at3thä
+4atto
+at2t3rä
+att3s2
+at3t2u
+at2ty2
+atu2n
+atze4l
+atz3ela
+atz3elt
+at2z1er
+a3tzere
+at2z1i
+at2zo
+atz3t4
+at2z1w
+a2u
+2au.
+2au1a2
+2aub
+au2bab
+au2ban
+au2bau
+au2bei
+aube4n
+au2beu
+au2blä
+au2bli
+au2blo
+au2blu
+aub2si
+aubu4s
+4auc
+aude4r3i
+au2dr
+2aue
+aue2b
+au2ere
+aue3rei
+au5erein
+auer3ö
+au5erst.
+au3ert
+au2fa
+auf1an
+aufas2
+3aufber
+2aufe.
+2aufeh
+4aufen.
+3aufent
+auf1er
+au4ferk
+au2feu
+auff4
+auf3ind
+1aufla
+1aufn
+2aufo
+auf3ski
+auf3t4
+2auft.
+5aufzeic
+3aufzug
+1aufzü
+2aug
+aug2ar
+4augeb
+4augeh
+4augel
+aug2er
+4augl
+4augr
+au3gu
+2auh
+au3ha
+auh1u
+2au1i
+au3in
+au2is
+2auj
+auk3t
+aule2s
+aul4les
+au3lü
+4aum
+au2mal
+au4m3ent
+au2m1e2r1
+aum3eri
+au2mid
+au2mil
+aum1o
+au2mor
+aum3p2
+aum3s2
+au4mun
+4aun
+au3n2a
+aun2e
+au4nei
+au2nio
+au2no
+au3nu
+a4unz
+2aup2
+aup4ter
+2aur2
+au3ra
+au1rh
+au4sag
+au2s1ah
+ausan8ne.
+au2sau
+2ausc
+au6schmi
+1ausd
+2ause.
+au4s1eh
+2ausen
+au4s3erb
+au4s3erf
+aus3erk
+aus3erp
+au4serw
+1ausf
+1ausg
+au2sin
+au4sis
+1ausl
+au2so
+aus1or
+au2spr
+1ausr
+1auss2
+au3sse
+aus4se.
+au8ssende
+aus4ser
+aus4ses
+au2st2a
+aus3tau
+2auste
+au4stec
+aus3tie
+aust2o
+au2stö
+aus3tri
+3ausü
+1ausw
+1ausz
+auße2
+au3ßen
+a4ut
+au2t1äu
+2autb
+au2t1e2l
+auten4g
+au4t3erh
+2autg
+1auto
+au2trö
+2auts2
+2auu
+2auv
+auve4
+2auw
+2aux
+2auz
+au3ze
+auz2w
+2a1ü
+a1v
+av2a
+a3vang
+ava3t2
+avener4
+2avi
+a2vr
+av2s
+2a1w
+awi3e
+a1x
+ax2am
+a2xans
+ax2e
+a3xid
+a2xio
+axi2s
+ay1
+2a1ya
+ay2al
+ay2as
+a1yeu
+ayma2
+aysi1
+ay3t
+ay2u
+2a1z
+a3z4a
+aza3d
+3a4zal
+az2i
+az2o3
+a3z2u
+az2zen
+az2z1in
+az2zw
+ä1a
+1ää
+ä1b
+ä2b3l
+äb2s
+ä1ce
+ä1che
+äche1e
+äche4n
+ächenma5
+ächenmas8
+ä1chi
+äch3l
+ä2chr
+äch4s3a
+äch2s1o
+äch2sp
+ächt4e
+ä1chu
+ä1d
+ä2da
+ä2d1ia
+ä2dr
+äd2s
+äd3te
+2ä1e
+äe2x
+äfe4n
+äf2f3l
+äf3l
+äf3r
+äf4ro
+äf2s
+äft2
+äft4s
+ä1g
+ä2g1a
+1ä2gä
+ägd2
+ä5ge
+äge1i
+äge2r3a
+ä2g3l
+äg2n
+ä2g3r
+äg4ra
+äg2s
+äg3sc
+äg3sta
+äg3str
+1ä2gy
+äh1a
+2ä1he
+äh1ein
+äher8gebn
+äher3t
+ä1hi
+äh1in
+ähl1a
+äh3l2e
+äh4l3e4be
+äh5ler
+4ähm
+äh3na
+äh3ne
+1ähnl
+2ähr
+äh2rel
+äh3ri
+2äh2s
+2äht
+ä1hu
+äh1w
+2äi
+ä1im
+ä1is.
+ä3isch.
+ä1isk
+ä1j
+ä1k
+äka2la
+äk3l
+ä2kle
+äk4li
+ä2k3r
+ä1la
+älbe2
+äl2bl
+älk3
+älks2
+äl2l1a
+äl2p3
+äl4schl
+ä1lu
+2äma
+ämer2s
+ämi3en
+2äml
+äm2ma4
+ämmas2
+ämoni3e
+2ämp
+ämp7f4e
+äm2s
+ämt2e
+2än.
+änd2e
+än2dr
+2än2e
+äne2n1
+2än2f3
+änft2
+2än3g2e
+änge4ra
+2än2g3l
+än2gr
+ängs2
+äng3se
+2ä3n2i
+än3k2e
+än2k3l
+än2kr
+än3n4e4
+2äns
+än4s1a
+än2s1c
+äns2e
+änte3le
+2änz
+ä1on
+äo3s2
+ä1pa
+1äpfel
+äp2pl
+äp2pr
+äp2s1c
+1äq
+ä2r3a4
+är4af
+är1ä
+är2b3le
+är1c
+2ärd
+ärde4s
+2äre
+ä2r1ei
+ä2r1e2l
+är2em
+äre2n
+ä2rene
+är2er
+är2es
+är3ge
+ä2rind
+är1int
+är3ke
+ärm3arm
+ärme1e
+ärm3ent
+är1ob
+är1of
+ä1rö
+är3re
+ärse2
+är2seb
+är4seh
+ärs1er
+är2si
+är3spu
+2ärt
+ärt4e
+är2th
+ärt4s1
+ä2rü
+1ärz
+ärz3te
+är2zu
+är2zw
+ä1s
+äs4c
+2ä3s2e
+äse3g
+äse1i4
+äse5ref
+äser4ei
+äse4ren
+äser2i
+äse3t
+ä5si
+ä3s2kr
+ä2s1p
+ä3s2s
+2äs4s1c
+äss2e
+äss5erkr
+äss5ersa
+äss3erw
+ä5sses
+äs4sh
+äs4s1t
+äs4t2e
+1ästh
+ä2str
+ä1ß
+2äßc
+äß1erk
+äß1ers
+ä2t3a4
+2ä3te
+äte3a
+äte1e
+äte1i
+äte3l2
+äte2n
+äteo2
+äte3se
+ä2th
+ä1ti
+ä1to
+ät1ob
+ät3r
+ät2sa
+äts3au
+ät2sä
+ät4schl
+ät4schr
+ät2s1i2
+äts3l
+äts1or
+äts1p
+ät4s1t
+äts3te
+ät2tei
+ätte4n
+ät2tr
+ä1tu
+ätze3l
+ät2zw
+äu2b3l
+äu2br
+äu1c
+äu3d
+äude3
+äuder2
+äu3el
+2ä2uf
+1äug
+äu4g3l
+2äul
+2äum
+äu2ma
+äum3p
+äumpf4
+äum2s1
+2ä2un
+äun2e
+äu3nu
+2äu3r2
+äure1
+äu1s
+2ä3us.
+2äusc
+äu4schi
+äu4schm
+äu6schü
+äu3s2e
+äuse1i
+ä3usg
+ä3usk
+ä3usn
+äu2s1p
+äu3s2s
+äuss1c
+1äuß
+äut2e
+äu2tr
+ä1v
+1äx
+ä1z
+â1t
+á1n
+5ba.
+b3a2ba
+2babf
+2babg
+ba2bl
+ba2br
+2b1abs
+bach7t4e
+back3er
+back3s2
+ba3d2e
+bade1i
+2b1adel
+2b1adl
+2b1adm
+b1a2dr
+ba2du
+2b1af
+bah6nene
+bais2
+b2ak
+ba2ka
+ba2k1er
+ba2k1i
+bak1l
+bak3r
+ba2kra
+ba2kre
+ba2lab
+ba2l1ak
+ba3lal
+ba2lau
+ba4l3erk
+balk4a
+balke4
+bal4lan
+balle4b
+bal4l3ei
+baller6e
+bal6ler6g
+ball6erk
+bal4li4g
+bal4lo4k
+ballö3s
+bal3ti
+2b1am
+b2ama
+ba2me
+ban2a
+3b2and
+band1a
+ban4dal
+ban4dan
+ban4dar
+ban6deng
+ban2dr
+ba3n2e
+2banf
+b1ang
+ban3gl
+ban4k1a
+banker4
+ban2kl
+ban2kn
+ban2kr
+ban2ku
+2banl
+b1anna
+ban2o
+2b1ans
+b1an3t
+2banw
+b1anz
+ba2r3ab
+ba2rad
+bar3ast
+ba2r3at
+bar3de
+ba2rei
+ba3r2en
+barer5ei
+bar3n
+b2aro
+3bars
+b1arz
+bar3zw
+3bas
+ba3sa
+ba2sc
+bas2i
+bas4sa
+bas4sei
+bas6st
+bas4t
+ba2str
+ba2ß1
+ba4t3ent
+bat2o
+3bau.
+bau3b
+bauer4l
+bauer4s
+bau3fa
+bau1fl
+bau1fr
+bau3g2
+b2auk
+bau3r
+bau3s2k
+bau3sta
+b1a2x
+ba1yo
+3b2äc
+bä1ch
+3b2äd
+2b1äh
+b2äl
+2bärz
+b2ä4s3
+2bäug
+4b1b
+bbe4n
+bbe4p
+b4be2se
+bb3ler
+bb2lö
+b3brec
+b3bru
+bbru2c
+bb2s
+bbu1
+2b1c
+bch2
+2b5d4
+bdome4
+1be.
+3bea
+be3an
+be3ar
+3beb
+b1ebb
+1bec
+be1ch
+2becht
+2b1e2del
+bedi4
+be1e2h
+bee2l
+be1ela
+bee4rei
+be1erl
+be1ert
+be1eta
+bef4
+2b1eff
+be3g2
+begas1
+be2he.
+beh5ri
+bei3b
+2b1eier
+bei1f4
+bei4ge.
+bei3k4
+bei3l2a
+2b1eime
+be1ind
+be1inh
+bein6hal
+bein4hi
+bei3s2
+bei5st
+beit2s
+3bek
+3bel
+be3lag
+be3las
+be3lec
+4be2lek
+be2l1en
+bel3ere
+be2let
+bel3f
+be3l2i
+beli4e
+bel3la
+belle4n3
+bel3li
+be2l3om
+be2löf
+bel3sz
+bel3t
+bel4un
+1bem4
+2b1emp
+2bemul
+1ben
+3ben.
+be5nabe
+ben3ar
+be4nas
+be4nat
+benä4
+bend3s2
+b2ene
+be3nei
+be4n3end
+be4ners
+ben2eu
+3beng
+be4nis
+ben3n
+5benp
+b2ens
+ben4s3pa
+ben4spr
+benst4
+3bensv
+3bensz
+2b1entb
+2bentd
+4benteu
+2bentf
+ben3th
+ben6thei
+bent4r
+2b1ents
+2b3entw
+be2nu
+ben3un
+ben3z2
+be1o
+2b1epi
+be1ra
+be2r3am
+be2ran
+ber3a4s
+berb2
+ber3d
+b4ere
+be2re2b
+ber2ec
+ber4ei.
+be4r3eiw
+be4rene
+ber4erg
+ber4erw
+bere4sc
+berf4
+3berg.
+ber4g3af
+ber4gal
+berg3a4s
+ber4hab
+ber4in.
+be5r6inne
+berin4s
+ber3iss
+ber3kr
+bermas4
+berma7sse
+ber3n2a
+b1ernt
+be2rö4
+3bers.
+ber5se
+ber3st4a
+ber3t2a
+bert2e
+bert2i
+b4eru
+ber3ze
+ber2zö
+3b2es
+be3sa
+bes4abb
+bes2am
+be4sap
+be4sar
+bes2au
+be2s1er
+be2s1id
+be5s4lo
+bes2po
+bes3sa
+bess4e
+b3esst.
+bes3sz
+beste2
+be6stein
+bester4
+be6sterh
+best2i
+bes3tin
+be4s3tol
+be4sto4r
+best4r
+be4strä
+be4s3tur
+be3s2ze
+3bet
+be3tam
+bet2to
+be1un
+be1ur
+3bev
+3b2ew
+2b3e2x
+3b2ez
+2b5f4
+bfal2
+bflö4
+bflös3
+2b1g4
+b5ga
+bgas1
+bga4st
+bge3
+bgel2e
+bge5n
+bges2
+2b1h2
+b5hä
+1bi
+3bib2
+bibe2
+biber1
+bi2c
+bieres4
+bie4str
+biet4s
+3bietu
+bik2a
+bi2ke.
+bi2kes
+bi2k3re
+3bil
+bi3la
+bi4lans
+bi4lau
+bil4deb
+bi2lei
+4billu
+bi2lu
+2bimp
+2b1inb
+3bin2e
+b1inf
+2b1inh
+bi2nok
+2b1int
+2b1inv
+bi2o3
+biri1
+3bis
+bis2a
+b1iso
+bi2sp
+bis4s1c
+bist4
+bi3sta
+bi2s1to
+bi2stu
+bi2stü
+3b2it.
+b2ita
+bit2an
+b2ite
+bit2ta2
+bi2tu
+bi3tum
+bi3tus
+bi3z2
+4b1j
+bjek4to
+2b5k4
+bl4
+2bl.
+bla3b4
+2b3lac
+b3lad
+b5lag
+b2lanc
+b3late
+b2latt
+b4lau.
+b3laus
+2b3law
+2b1län
+b2läse
+3blät
+b2le
+3ble2a
+b3leb
+3blec
+b3lee
+b3leg
+2bleh
+2b3leid
+2bleih
+b3lein
+blei3s
+2bleit
+ble3l
+2b3lenk
+b3lese
+2blesu
+ble3sz
+b4let
+b3leu
+2blich
+3blick
+b2lie
+2blief
+2blig
+bling4
+b2lis
+2blis.
+b2lit
+3blitz
+b2lo
+3b4loc
+b3los2
+blo3sse
+3b4lum
+2blun
+b2lus
+3blut
+blut1o
+3blü
+2b1m
+bmas2
+4b5n2
+bnas4
+bni2
+bnis1
+bo4a
+bo5as
+b1o2b
+bo3ben
+bob3r
+bo1ch2
+bo3d2
+boe1
+bo2e3i
+2b1of
+bo3fe
+boh3re
+boh4rei
+boh2u
+bo1is
+bo2lan
+bo2lau
+bol3le
+5bon.
+bon2an
+bon2da
+bon2d1e
+bo2ne
+2b1onk
+5bons
+boo4l
+boo2ti
+b1op
+bo1r2an
+bo2r3as
+bo4rä
+bor2da
+bor2d3r
+bo2rei
+bo4rig
+b1ort
+bor4ter
+bor6t5rat
+bo4ruh
+bo2sc
+bo3se
+bo4s3p
+3bot
+bote3n4e
+bo3th
+bot2st
+bot3t
+3b2ox
+bo2xo
+bö2b3
+2böf
+2b1ö4l
+2b1p4
+bpa2g
+2b1q
+b2r4
+2br.
+b4ra.
+2b3rad
+2b4rah
+b4ra3k
+bra4ss
+brast4
+2b3rat.
+bra4t3er4
+2b3ratg
+3brä
+4bräd
+brä4u
+2bre.
+6b5rechte
+2b3red
+2b3ref
+2breg
+b3reif
+2b3rek
+breli1
+3b4rem
+2b3rent
+2breo
+2b3rep
+b4rer
+bret6t5en
+bri2da
+brie4fa
+2b3riem
+b4rien
+bri2er
+b3ries
+2brigk
+b4rina
+2b3rind
+b4rio
+b4risc
+2briß
+b3ritt
+2b3roh
+2b3rol
+b4ron
+2b3rost
+bro2tr
+brot3t4
+2b3rou
+3b4rö
+b4ruc
+2bruf
+b4rum
+2b3rund
+bru4s
+brust3
+bru2th
+3brü
+4b3rüb
+brü4ss
+2b1s
+b2sad
+bs1amb
+b4samt
+bsas2
+bsa3sse
+bsau2r
+bs1än
+b4s3är
+b3säu
+b5sc
+bsch2a
+b6schan
+b6schef
+b6sco
+bs2cu
+b3se.
+bs1e2b
+b3sel.
+bse2n1
+b3sen.
+b2s1ent
+bs1er
+bs3e4r3in
+b3ses
+b3set
+b2sim
+bsi2t
+b4ski
+bs3ko
+bs2ku
+b2s1of
+b3s2oh
+b4sop
+bso2r
+b2sö
+b3s2pi
+bs2pl
+bs2pu
+bs3s2
+bst1a2b
+bs2t1ak
+bst3ank
+bs2t1a4s
+bs2tau
+b3stä
+bs1tät
+bst1er
+b4stern
+bst3h
+b3stic
+bst3ink
+b2stip
+b3sto
+b4stob
+b4stod
+b4stor
+b3stö
+b3stra
+b2s1trä
+b4s3treu
+bst3ro
+bs2tu
+b3stü
+b4stüb
+bs1ums
+b2s1un
+b3sz
+bs2zep
+bs2zi
+4b1t
+bta4st3r
+b5te
+b2t3h
+bti2s
+bt4r
+btran2
+bts2
+btü1
+bu4chec
+bucher6
+bu6ch5ers
+bu3ches
+bu2chi
+buch3s4p
+bu2e3
+bu2f
+bull3a
+2bumf
+2b3umk
+2buml
+2b3umr
+bun4d3er
+bunde4s
+b1une
+b3un3gn
+2b1unh
+bur1c
+b2urg
+burg1a
+bur4gan
+bur4gar
+bur4gin
+bur2gr
+bu3r2i
+2burn
+b3ursa
+burt4s
+bu2sa
+bu2sc
+bus3cha
+bu3sche
+bu6schei
+busch3w
+bu2si
+bu2s1p
+bu4sses
+bu6s5term
+bu2s1tr
+bu2su
+bus1un
+2büb
+bü1c
+bügel3e
+bü3s4
+2b1v
+4b5w
+3b2y1
+by3p2
+bys2
+2b1z4
+b5ze
+bzeit1
+bzu1
+1c2a
+cab4
+ca3bl
+ca2c
+ca2e3
+ca3g2
+ca1h
+cal2a
+cal2f3
+cal3t
+2can
+cana3
+ca2pe
+car3b
+car3n
+carri1
+ca3s2a3
+ca3t2h
+ca1y2
+cä3
+cäs2
+c1b
+2cc
+c1ce
+c1ch2
+cchi1
+c2d2
+c3do
+2cec
+1ced
+ce2dr
+ce1e
+2cef
+ce1i
+ce3in
+2cek
+3cels
+cen3a
+ce3nu
+ceo2
+1ce1r
+cere1
+cere3u
+ce3r2i
+ce3s4h
+cet1am
+ce1u
+1cé
+c1f
+c1g
+c2h
+4ch.
+2chab
+ch3a2b3i
+2chac
+2ch1a2g
+2ch1ak
+3chanc
+chan3f
+ch1ang
+4chanl
+2chanz
+1chao
+2char.
+1chara
+3chard
+3charta
+cha2sc
+chasi1
+1chato
+2chatt
+2chatu
+ch5austr
+chau3t
+ch1äh
+ch1ärm
+ch1äs
+1châ
+2chb
+6chc
+2chd
+che3b
+ch3e4ben
+ch3echt
+ch1edi
+1chef
+3chef.
+che4fer
+3chefs
+2chei
+ch1eim
+4chelem
+che4ler
+1chemi
+3chemik
+2chemp
+che4neb
+che2no
+4chents
+4chentw
+cher3a
+4ch3erbs
+6chergeb
+4cherke
+cher6zie
+ch3es2s
+2ch1e2ta
+2ch3e4x
+1ché
+2chf
+2chg
+2chh
+1chia
+2chic
+chi3na
+4chind
+3chines
+2chinf
+2chinh
+2ch1ins
+2ch1int
+2ch1inv
+1chip.
+1chiru
+2chiso
+2chj
+2chk
+2chl4
+ch2le
+chle2i
+ch2lu
+4ch2m4
+2chn4
+chner8ei.
+ch2neu
+c4ho
+2chob
+cho2f
+ch1off
+chof2s
+ch1oh
+cho3l2a
+ch1orc
+ch1ori
+ch2os
+ch3öl
+2chön
+3chör
+2chp
+ch2r4
+2chra
+ch3rad
+chra3g
+2chre
+chre3s
+ch3rh
+2chrit
+3chromo
+3chron
+4chs
+ch4stal
+2cht
+ch2tru
+2chuf
+2chuh
+2ch1unf
+2chunm
+2chunt
+2chur
+ch1urs
+2chut
+2chü
+2chv
+2chw
+1chy
+2chz
+ci2ak
+ci1c
+ci1es
+cill2
+ci2na2
+c1int
+ci2s1
+cisch2
+1cit
+c1j
+4c2k
+c4k1a
+cka2b
+ck2ad
+ck2ag
+cka2m
+cka4r1
+ck1ä
+ck1eh
+ck1ei
+cke4na
+cken6sem
+cke2ra
+ck2ere
+ck3er4hö
+ckerk4
+ck2ern
+cke2ro
+ck1err
+cket2t
+ck1id
+ck1in
+ck4is
+ck3l
+ck3n
+ck1o2
+ck3ot
+ck3ö2
+ck3r
+cks2al
+ck3sc
+ck4spen
+ck3te
+ckt2i
+ck1uh
+ck1um3
+ck1up
+c2l2
+c4le
+cle4a
+clet2
+clin2g
+cli2p1
+clip3a
+clo1c
+1clu
+clu4b
+c2m2
+c3me
+c3mu
+1c2o
+co1ch
+co2d2
+co4de.
+co3di
+cof3f2
+coi2
+co1it
+co2ke
+co3la1
+co2leu
+co5l2o
+com4te.
+comtes4
+con2ne
+co2pe
+co1ra
+cor2da
+co4re
+cor3t
+cos4
+co2te
+coti2
+2cp
+c1q
+1c2r2
+cra4s
+c3rä
+3cre2
+4cree
+cre4mes
+cros4
+cry2
+2c1s2
+cs4f
+c2si
+cs3so
+4c1t
+cti4
+ctio2
+ction5
+ctur6
+1c2u
+2cua
+cu2e
+cu2p3
+cussi4
+c1w
+3cy
+c1z
+3da.
+da1a
+2d1ab
+d3a2bak
+d2abä
+d2abe
+d3a2ben
+d3a2bi
+d3a4bo
+dab4ra
+da2bri
+da3brie
+d2ab4rü
+d1ac
+d2ac.
+dach3a
+da2cho
+4d3achse
+d1ad
+da2de
+dad4r
+d1af
+2daff
+dafo4n
+d1ag
+dagi4o
+dag2o
+dah3l
+da1h2o
+dai2
+dail5
+da1in
+2d1air
+da1is
+da2kro
+dal2a
+2d1a2lar
+dal3b4
+4d1all
+da3lö
+2d1alp
+d1al3t2
+2dalte
+da1lü
+3dam
+d1amma
+4d1ammä
+damo3
+d2amp
+damp7f8erf
+4d1amt
+3d2an.
+d1ana
+da2nan
+da4nat
+2danb
+dan4ce.
+d1and2
+2danda
+d2andy
+3dane
+4d3anei
+2danf
+d1ang
+2danh
+d2ank
+dan2kl
+dan2k1o
+dan2kr
+2danna
+d1a2no
+2d1ans
+2danw
+d2anz.
+2danzi
+2danzü
+2d1ap
+d2aph
+da2por
+4dapp
+2daq
+da2r1a
+2darb2
+2d3arc
+dar2da
+dar2d1e
+dare2
+daren1
+dar3g
+3darl
+dar2m1a
+dar2m1i
+dar4mu
+da2r3o
+3dars4
+2d1art
+dar2th
+dar2tr
+da2ru
+d1arz
+das2
+da3sh
+d1asp
+das3s
+d1asy
+dat2e2
+da3tei
+date4n
+4d3atl
+4datm
+da2tom
+dat2st
+2d3atta
+3daub
+2daud
+dau3e2
+dauer3e
+2d3au2f
+2d3aug
+2dauk
+da3unt
+2d1aus
+3daw
+d1ax
+3däc
+2d1äg
+2d1äh
+2d1ämt
+2d1änd
+2d1äng
+2d1äp
+2däq
+2därz
+2d1ä2u
+dä3us
+2däx
+2d1b4
+dbe2e
+dbu2c
+dbu3s
+2dc
+d3ch
+4d1d2
+d3da
+d3dä
+d3de
+d3dh
+d5do
+1de
+dea2d
+de3alo
+de3ar
+de3a2t
+d2eb4
+3debü
+de1ch
+deco3
+de2del
+de2dit
+2de3e4
+de2fa.
+2d1eff
+def4l
+deg2
+de3gl
+deh2a
+dehe2
+3dehn
+2d1ehr
+d1ei
+3d2eic
+2deid
+de3i4den
+4deie
+2deig
+de3il
+3d2eim
+4deime
+4deinb
+dein2d
+de3inse
+dein6sta
+4deinw
+2deise
+d4e1ism
+dei2sp
+2dekz
+de2l1ac
+del4ade
+de3lak
+de4l3aug
+del3änd
+del3b2
+del1ec
+delei4g
+de3lein
+2delek
+2delem
+de2len
+deler2
+deler4r
+2delf.
+2delfm
+3delik
+del4lan
+del4lar
+dell3au
+del2l1ä
+dell3eb
+del4lei
+del4ler
+del2lö2
+de2l1ob
+del2se
+del2so
+del2s1p
+del3t
+dem2ar
+2d1emb
+dement4
+de6mentg
+dem5ents
+de3min
+2d1emot
+2d1emp
+d2en.
+den2am
+de2n1e2d
+de4n3end
+4denerg
+de3n2es
+4d3en4ge.
+de2ni
+denk3li
+de2nos
+dens4am
+den6s5cho
+4den4sem
+den6sere
+den6s5tau
+2dentd
+den3te
+4dentf
+2d1entg
+den3th
+2dentn
+2dentw
+2dentz
+den6zers
+de2ob
+2deol
+de1on
+depi4so
+dep4l
+2depoc
+dep5t
+d4er.
+dera2b
+der3af
+dera2n
+de3rand
+de2r3ap
+de1ras
+de4r3asi
+der2bl
+4d1erbs
+2derdb
+de2re2b
+de4reck
+de3reie
+de4r3ei4s
+d4eren
+de4r3end
+de3r4erb
+de3r4erf
+derer3n
+der3ero
+derer4t
+de2r1eu
+derf4
+d4erfl
+d2erhü
+derin4f
+de6rinnu
+derin8teg
+der3k2
+4derklä
+d4erlan
+d2erm
+de1ro
+de2rop
+derö4
+der3r
+derst2
+der3sta
+dert7ende.
+dert4ra
+6dertrag
+der8trage
+3de3ru
+de4ruh
+de4rum
+2d1erz.
+2d1erzv
+d2es.
+de2sa
+de4s1a2g
+des1ah
+de4s1am
+des3an
+de2s1än
+de2seb
+de4s1e2h
+de2sei
+des3eil
+2d1esel
+des3elt
+de3sem
+des4end
+desen3e
+de3sens
+des3erm
+de2set
+de4s1in
+3desk
+des1o
+de2sor
+de2s1p
+de3spe
+dess2
+des3se
+des5st
+de6st5alt
+de6stant
+de8steige
+de8steins
+des4tex
+de4stit
+de6st5rat
+de4stre
+de2su
+des1un
+3desw
+de3ta
+deten4t
+de2thi
+2d3etw
+2d1eul
+deum3
+de1un
+de1url
+de3us
+2d1e2vid
+devil4
+de2xer
+de2xis
+2d1f6
+2d1g2
+dgas3tr
+d2ge.
+dge3r
+dger2e
+dge3s
+d2gesh
+dge2t3a
+dge4t1e
+2d1h2
+4dho
+d3hu
+1di
+di2a
+di3ar
+dia3s
+diat4
+di4ath
+dib4
+3dic
+di1ce
+di3chl
+dicht6er
+4d3i2co
+d2ida
+2d1ide
+2didy
+di2e
+di3e4d
+di3enb
+di3end
+die4neb
+diener6l
+di3e2ni
+dienst5r
+dien3z
+di3ers.
+dies3c
+di3e2th
+3dif
+3dig
+dige4s
+dig4n
+dik2a
+dil2s1
+2d1imb
+2dimp
+din4a
+2d1ind
+di3n2e
+2d1inf
+3ding
+2d1inh
+2d1in1it
+2d1inj
+2d1ins
+2d3int
+2d1inv
+di2o3b
+dio4n3i
+dion5s2
+di3ora
+dio5s2
+di2osk
+di1p4
+di3pt
+d1i2ra
+di4re.
+di2ren
+di2rin
+di2ris
+2d1irl
+2d1irr
+di4s1a2
+2diso
+di2sp
+di3s4per
+2d1isr
+dist2
+distel3
+di2s1to
+di4s3tra
+di4sz
+di2ta
+dite1c
+di4t3erl
+di4t3erm
+di4t3ers
+di2tin
+di2tob
+di2t3r
+dit3s
+di2t1u
+di5v2
+diz2
+2d1j
+2d1k4
+4d1l2
+dlap4
+d3le
+dle2ra
+dli4f
+dl3m
+dl3s
+2d3m2
+4d3n2
+d5ne
+dni2
+dnis1
+dni3v
+do5a
+d1ob
+3d2oba
+dob4l
+do1chi
+d1of
+do2fe
+2d1oh
+doll2
+d3o2ly
+do2mal
+do2mar
+domen1
+do4ming
+do2mu
+don2a
+do5nan
+doni1
+2dope
+2d1opf
+do1r4a
+2d1orc
+2d1ord
+dor2f1a
+dor2fä
+dor2f1i
+dor2fl
+dor2fo
+dor2fr
+dor2f3u
+2d1org
+dori1
+d2orn
+2dort
+dor4ter
+dor2tr
+d2os.
+dose4
+do5s2k
+2dosm
+do2st1
+dost3a
+do3ta
+do2t3o
+do2tre
+do3un
+dow2s
+dox2
+d1ö
+dö2d
+dö2f
+4dö4l3
+dölla3
+d2ön
+3d2ör
+dö2s1c
+2d3p2
+dpass3
+dpo4st
+2d1q
+d2r4
+3d4ra.
+3d4rab
+2d3rad
+2drahm
+2d3rak
+3d4ral
+d3ramp
+d3rand
+dran3k
+dra4s3s
+2d3rast
+2draub
+2d3rauc
+d4rauf
+2draum
+2draup
+2dräd
+d4räh
+2d3rät
+2d3räu
+4dre.
+2d3rea
+d4rea.
+d4reas
+3d4reck
+2d3ref
+2dreg
+3d4reh
+dre2ha
+2d3reic
+3d4reie
+d4reiv
+d4rej
+2drek
+dreli1
+4drem
+4d3ren
+4d3rep
+4d3rer
+4dres.
+d4resc
+2drese
+dres6sei
+d4rew
+2d3rez
+2d3rh
+d3ri
+3d4ri.
+3d4ria
+d4rib
+2d5ric
+d4rid
+d4rie
+d5rieg
+3drif
+4driff
+d4rift
+d4rik
+d4ril
+d4rin.
+2d5rind
+2drip
+3d4risc
+2drisi
+2driss
+2driß
+3d4rit
+4dritu
+2d3rob
+d3roc
+d3rod
+d4rog
+2drohr
+3d4rohu
+d4roi
+2d3roll
+2d3rose
+d4ross
+2d3rost
+2d3rot
+2d3rou
+2d3rov
+d3row
+drö2sc
+d5rub
+3d4ruc
+2d3rud
+2d3ruh
+4d5rut
+drü1b
+3d4rüs
+2d1s
+ds3ab
+d2s1alk
+d4s1amt
+d2san
+ds3ane
+ds3assi
+dsau2
+d2saut
+ds1än
+ds2äu
+4dsb
+d4schef
+d4schin
+dsch4r
+d3s2co
+d2scr
+d2s1e2b
+dse2e
+d2s1ef
+ds1eh
+d4sehe
+ds4eign
+d2sein
+d2s1emb
+dsen3er
+d2s1eng
+d2s1ent
+d2s1erf
+d2serh
+d2s1erk
+ds1err
+d2s1ers
+d2s1ert
+d2serz
+dse2t
+d2s1eta
+d2s1ev
+d2sex
+d3sha2
+ds2hak
+d4shal
+d3sho
+d4shor
+d2sid
+d2s1im
+d3s2inf
+d3s2kal
+d3s2kel
+4dsl
+d4sli
+d3soh
+d2sop
+dso2r
+ds1ori
+d2sö
+ds3part
+ds1pa4s3
+d2s1pat
+d2spä
+d2s1pec
+ds2pen
+d4speri
+d2s3ph
+d3s2pi
+ds2por
+d6sporto
+d3spri
+d2spro
+ds2pu
+dss2
+dst2
+d4stabe
+d2stas
+ds3tauf
+d4s3täti
+d4stea
+d4stele
+ds2til
+d2s1tis
+d4stoch
+d2stod
+dstras4
+d4stren
+d3s2tro
+ds1ums
+d2sun
+ds2zen
+2d1t
+dta2be
+d3t2ac
+dtach3
+dta2d
+d3t2ag
+dtam3m
+dta2n
+d3t2as
+d3tea
+d2th
+d4thei
+dt3hi
+dt3ho
+dt4hy
+d3to2
+d4to4b
+dt2op
+d3tö
+dt3r
+dtran2
+dt1s2
+dt3sa
+dt5st
+dtt4
+dt2un
+d3t2ur
+d3ty
+1du
+du1alv
+du1ar
+dub3l
+du2bli
+du1ce
+du2f
+2d1ufe
+duf4ter
+duf2to
+duf2tr
+2d1uh
+du1i
+du2kr
+du4l3art
+dult4
+2d1umb
+2dumd
+2d1u2m1e
+2dumf
+2dumg
+4d3umk
+2duml
+d2ump
+2dumr
+2d1ums
+d2ums.
+2d1umv
+du2n
+2d3un3d
+dund2a
+dun4de
+2d1unf
+2d1ungl
+2d1uni
+dun3ke
+dun2kl
+2dunr
+2dunsi
+dun4st3r
+2dunt
+2dunw
+2d3unz
+du1os
+dur2c
+durch3
+2d1urk
+2d1url
+2d1urn
+2d1ursa
+2d1urt
+du4schn
+du4schr
+du4sch3w
+dus2t
+2düb
+d3über
+2d1v2
+4d1w
+dwa2
+dwa4r
+dwe2s
+dwest1
+1d2y
+4dyl
+3dyn
+dys1
+dy2sp
+4d3z2
+2e1a
+e3ab
+ea2be
+e4abi
+ea2b3l
+ea4bo
+ea4br
+eadli4
+ea2dr
+ea2g
+ea3ga2
+ea3g4l
+eakt2
+e2akta
+e3akto
+ea2la
+e3alei
+e4alem
+ea4l3ent
+ealer2
+e3a4lerg
+e3alex
+e3a2lin
+eal5le
+eal3lö
+eallö3s
+e2alo
+e2alti2
+eal3tr
+ea2l3u2
+eam3
+e2am4e
+eam1o
+eams2
+eamt2
+ea4na
+ean3a2r
+e3anf
+e2ano
+e3ar.
+ea2ra
+e2are
+e4are.
+ea2r1ei
+ea4rene
+e4arer
+e4ares
+ea2ro
+e3arz
+e3a4sc
+easin4
+ea2sp
+eas5s
+eate2
+eater1
+e3ath
+eat3s
+e3at3t4
+eatu3
+e3aue
+e3auf
+eau2fe
+e4aufo
+eau3g
+eau3n
+eaus3s
+e2av
+e3ä4
+e1b
+2eba
+e3bak
+eba2p
+e3bän
+2ebea
+2ebec
+2ebed
+ebe1er
+2ebeg
+eb2el
+ebe4ler
+ebe2lo
+ebenen3
+2e3ber
+ebe4ras
+ebert4
+4ebes
+ebese2
+ebe4s3eh
+2ebet
+ebet4s
+2ebew
+2ebh
+2ebi
+2ebl
+eb2laß
+e3blä
+eb3ler
+eb4leu
+e3blie
+eb3lo
+eb2lö
+2ebo
+e2bob
+ebö2s
+2ebr
+eb4rea
+2eb2s
+eb6sche
+ebse2
+ebs3in
+ebs1o
+ebs1p
+ebs3pa
+ebs3tau
+eb4stät
+ebst4h
+ebs1ti
+eb4stot
+eb3str
+eb4sz
+2ebu
+e2bunt
+ebus3s
+ebu2t1
+2eca
+2e1ce
+ech1am
+ech1ä
+2e1che
+ech1ei
+ech2en1
+e6ch5erzi
+e1chi
+ech3l
+ech3m
+ech3n
+e2cho.
+ech1ob
+ech3ö2
+ech3r
+ech4ri
+ech3ser
+echst5re
+ech3t4ei
+ech6terh
+echter8ha
+e1chu
+ech1w
+e1ci
+eci4a
+ec4k
+ecke4n1
+eck3ser
+eck4sta
+2eckt
+3eckty
+2e1cl
+2eco
+2ect
+e1d
+ed2a
+ed2dr
+ed2e
+ede2al
+ede3n4er
+eden4s3e
+eden4s3p
+edeo2
+ede2r
+eder3a
+ede4ran
+ederer4
+edert2
+ed2i
+e3di.
+edi3an
+2edip
+edma3
+edmas2
+e3d2o
+ed2ö
+e3drei
+ed4seh
+ed2s1es
+ed2si
+ed2s1o
+ed2s1p
+ed2s1tr
+ed2s1u
+edu2s
+e3dy
+edys2
+2ee
+ee3a2
+eeb2l
+ee1c
+ee2ce
+ee2cho
+e1eck
+e2ed
+eed3s2
+ee3e2
+e1eff
+eef4l
+eeg4
+e1ei
+ee3ing
+eein4se
+eei5se
+eeis3s
+eel2e
+e3e2lek
+eele4n
+eel2ö
+e2e3m2a
+eemas3s
+ee3mä
+e1emb
+e1emp
+e1en
+eena2g
+e2e3nä
+e2enc
+e2e3ne
+een1er
+e2eno
+een3s
+een2z
+ee3o
+e2ep
+ee3po
+eer3as
+e1erbt
+e1erd
+ee3re
+eer1ei
+ee4r3en4g
+eer2e4s1
+eer3k
+ee1ro
+ee1rö
+eer2ös
+eers2
+eerst4
+eert2
+ee3r2un
+e1erz
+e2es
+ee3sh
+ee3sp
+ees2t
+e2et.
+eet2a
+ee2tat
+ee2th
+eet2i
+eet4r
+ee2tu
+ee1u2
+e2ew
+eewa4r
+eeweis4
+e1e2x
+e1f
+e2f1ad
+ef1ana
+ef1ar
+e2farc
+e2fat
+2efä
+efäs4
+efä5sse
+e2fäu
+2efe
+e2f1e2b
+e3fef
+efe4l3ei
+ef1em
+e2femi
+efe2n1
+3e2f1ene
+e2fent
+efer5f
+efer5r
+efeuil4
+ef2fä2
+3effek
+1effi
+ef2fl
+2efi
+ef1id
+e2f1ins
+efi2s
+2efl
+ef4le
+e3f4lu
+e3flü
+2e3f2o
+2efr
+ef4reih
+ef3rol
+ef3rom
+ef4ru
+ef4rü
+efs2
+ef3sc
+ef3so
+ef3sp
+ef2tan
+ef2tei
+2efu
+e2fum
+2efü
+e1g
+eg1a2m
+eg2anz
+egd4
+e3ge
+ege4l3au
+ege8l7ei8er
+ege4ler
+ege2lo
+eg2en
+ege4n1a2
+ege6nero
+ege2ra
+ege4s3to
+ege4s3tr
+ege1u
+2egi
+2egl
+e2glo
+e2glu
+e2gn
+eg3nä
+eg3ni
+ego1p
+egro5sse
+eg4rö
+eg4run
+eg4sal
+eg4s3an
+eg3sau
+egsau3g
+eg3se
+eg4sei
+egs2e3l
+egs2pe
+egst2
+eg2th
+2e1ha
+eh1ach
+e3h2ah
+eh2al
+ehalt4s
+e3hand
+eh1arm
+e2harz
+e3haut
+e1hä
+ehäs3
+e1he
+eh1eff
+eh1ein
+e3helf
+eh1elt
+e4hense
+e4h3ente
+ehen4tr
+1e2hep
+2eher
+ehe1ra
+e2h1erf
+e2h1er2l
+2e1hi
+eh3im
+ehis4
+ehl1a
+eh1lam
+eh2l3au
+eh1lä
+ehl3ein
+eh4lent
+eh5l2er
+ehlo2
+ehl1or
+ehl2se
+2ehm
+eh2mab
+eh4mant
+eh3mu
+2ehn
+eh3na
+eh3no
+2e1ho
+eho2f
+eho2l
+eh3oly
+ehö4rer
+eh2r1a4
+ehr1ä
+ehr1ec
+eh2rei
+eh2rel
+ehr6erle
+ehr4ern
+ehre3s
+eh4rin
+ehr1ob
+eh1roc
+ehr1of
+eh1rö
+eh2s2
+eh3sa
+eh3se
+eh3sh
+eh3si
+eh3so
+eh3sp
+ehst2
+eh3sta
+eh3sto
+eh3str
+2eht2
+eh3ta3
+eht4r
+2e1hu
+eh1unf
+e2huni
+e3hur
+e1hü
+eh3üb
+eh1w
+e1hy
+2ei3a4
+ei2bar
+ei2bli
+ei4blu
+eibu2t
+ei4b3ute
+ei1ce
+ei2cho
+e2id
+ei2d1a
+ei3de
+eid4ein
+ei4deis
+eid5erre
+2eidn
+ei3do
+ei4ds
+ei1e
+eie2b
+ei3e2l
+eie2m
+4ei3e2n
+eienge4
+eie4s
+eie2t
+4eif.
+ei1flo
+1eifr
+2eig.
+2eiga
+eig2ar
+2eigä
+2eigeb
+2eigeh
+4eigeno
+5eigensc
+2eig2er
+2eiges
+2eigew
+2eigi
+ei3gl
+ei4glo
+1ei2g3n
+ei4g3rat
+2eigre
+2eigrö
+2eigru
+2eigrü
+2eigs
+2eigt
+2eigu
+4eih
+ei2hum
+ei2kak
+eik4am
+eik2ar
+eik2i
+eik2l
+ei3k4la
+ei3klä
+e2il
+2eil.
+ei2lam
+eila2n
+eil3ane
+ei4lant
+ei4l3anz
+ei2lar
+2eilb
+eil3d4
+ei4lein
+eile2n1
+ei2let
+eil3f4
+eilm2
+ei2lob
+eil2ö
+2eim.
+ei2mab
+ei2m1a2g
+eim3all
+eim3alp
+ei2m1or
+2eimp
+eim2p4l
+eim3sa
+ei2mur
+e4i2n1a
+ei4nac
+eina2d
+ei4n3an
+ei4na4s
+ei4n3at
+ei2n3ä
+ein6derk
+ein3ebe
+ei2nel
+ei4n3en4g
+ei6nen6se
+ein5erbe
+ei4nerf
+ei4nerk
+einer6sc
+ei2neu
+ein4fiz
+5einflus
+5einfluß
+2einfo
+ein4fo.
+ein4fos
+ein3g2
+3einger
+e4ingr
+e2inhä
+ei2n3ie
+e1init
+ein3k4
+ein6karn
+3einkä
+e2inl
+ein3n2
+ein4nen
+ei2n1o4
+1einri
+e4insa
+einsas6s
+einsa7sse
+3einsat
+e2insc
+5einschä
+ein6stal
+ein6terv
+3eintö
+3einträ
+1einu
+ei3o2
+ei1p
+eip2f
+2eir
+eir2c
+ei3re
+e1irr
+e4is.
+ei2sa
+ei3sas
+ei6schwu
+ei4serg
+ei4s3erl
+ei6s5erst
+ei4s3erw
+1eisho
+ei3s2ky
+eis2pe
+e2i3s2s
+eisser6s
+ei2str
+eistra6s
+ei2sum
+ei2sur
+1eiswo
+e2it
+ei2t1a2b
+ei2tal
+ei2tan
+ei2tap
+ei2tar
+ei4tat
+2eitä
+ei2tän
+ei3tei
+eite4ra
+ei2t3h
+ei2tin
+ei2tor
+ei4trau
+ei2tro
+eit4sag
+eit3t4
+ei2t1um
+ei2t1ur
+eit3z2
+eiv2
+eive4
+ei2zar
+ei2z1in
+2e3j
+e1k
+e3k2a
+2ekä
+1ekd
+ek2e
+e3ke.
+e3ke4n
+e3kes
+e3key
+e3k2l
+ek4n
+e3k2o
+ekor4da
+e3kr
+ek4s1p
+2ekt
+ek5t6ante
+ek2t3at
+ek2tä
+ek2te2l
+ekt3erf
+ekt3erk
+ek4t3er4z
+ekt2o
+ek2t3o4b
+2e3ku
+ekur2a
+e3k2w
+1ekz
+e1la
+ela2br
+el2abt
+el3abu
+el3ader
+el1af
+2elai
+e2l1ak
+el1a2m
+el2a3mi
+e3lamp
+el1ana
+e4landa
+e2l3a2ne
+e2lanm
+e4lans
+e2l1ant
+e4lanw
+e2l1anz
+2elao
+e2l1ap
+e2l1ar
+ela2re
+el3a2ri
+el3arr
+el1a4si
+el1asp
+2elat
+el3aufw
+2e1lä
+e3läd
+2eld
+el4d3erf
+eld3erl
+elder4p
+elder4s
+eld5erst
+el3des
+el3dri
+eld3s2
+4ele.
+e3lea
+elea2r
+el3echt
+4eleh
+el3ehe.
+2elei
+e6l5ei6ern
+e2l1ein
+e3leine
+1elek
+e2l1el
+1e2lem
+2e3lem.
+e3lema
+ele2mi
+2el1emp
+2e3len.
+elen1e
+elen4k3l
+e4lense
+e2l1ent
+e3lep
+2eler
+e3ler.
+eler2a
+el1erd
+e6lereig
+el1erf
+e4ler4fa
+e4lerfi
+e2lerg
+el1erh
+el1erk
+e2l1erl
+e4l3ernä
+eler2ö
+e2l1err
+el1eru
+el1erw
+eles2
+e2l1ess
+e2l1e2ta
+ele2ti
+elet4ta
+el1evo
+el1ex
+e3lex.
+1elf.
+elf2er
+1elfm
+1elft
+elgi5er.
+elgi5ers
+el3g2l
+eli4are
+e2l1id
+2e3lie
+eli3ef.
+2elig
+e2lim
+elin3a
+eli3no
+el1ita
+2elk
+elks2
+elk3sc
+ella3d
+el2lap
+el4larb
+el4lart
+ella2s
+ell2ei
+ell3ein
+el4lel
+ellenen5
+ell2er
+el3lie
+el2lil
+1ellip
+el2lo2g
+el2lor
+el2lot
+ell2ö
+ell3sp
+el2lu2m
+el2lü
+elm2a
+elm2e
+elm3ein
+2eln
+2elo
+e2l3oa
+el1obe
+e2lof
+e2lol
+e2lonk
+e2l1or
+e3lore
+elo2ri
+e3lot
+e3l2ov
+2elö
+el3p4
+el4s5ein
+el2sum
+el4tans
+el3te.
+elte4m
+el5ten.
+el4t3ent
+elter4b
+elter4f
+elter6le
+3elter4n
+elter6sc
+el3the
+elt3se
+2e1lu
+el1uf
+e2l1um
+el1ur
+el3use
+elu2t
+el3uto
+e1lü
+2ely
+e2lya
+el3z2ac
+el2zar
+el4zene
+el2zwa
+2elzy
+e1m
+e2m3a2b
+em1alk
+e2manf
+e2m1ano
+e2m1ans
+em1app
+e4m1a2sp
+emas2s
+ema3sse
+e3maß
+2emä
+em2äh
+emb6
+1emba
+1embo
+3embry
+em2dä
+emd1r
+em2dra
+2eme
+e2m1e2b
+e2mef
+e2mele
+e3m2en
+emen6gel
+emen3ta
+emen4t3h
+e2m1erl
+em1erw
+e4mesu
+3e2meti
+e2m1i2d
+2emie
+emi2ei
+e2mig
+emi3k2
+em1im
+2emin
+emi3n2a
+e3mind
+em1int
+1e2mir
+e3misc
+1emiss
+em2map
+emma3u
+em2mec
+e2moa
+e2mof
+e2mop
+emo3s
+1empf4
+em3pfl
+em3po
+empo5s
+em2sa
+em4scha
+em2sim
+em2spr
+em3t4
+1e2mul
+e3mur
+e3mus
+2emü
+emü3s2
+e2na
+4ena.
+e4n3a2b
+4enac
+e4n3ack
+2e3nad
+enadi4
+e4naf
+4enah
+en3ak
+en1al
+e4nalb
+e3nale
+en2alg
+ena3l2i
+e4nalk
+e4nalm
+e4nalo
+enal3p
+4en1am
+ena4n
+e4nand
+en3ane
+e4nant
+e4nanz
+e4n3a2p
+en3a2re
+en3ark
+en3aro
+en1a2s
+ena4sc
+e4na4st
+2enat
+4e5nati
+e4natl
+enat2s
+e4n3att
+4enatu
+e4nau2f
+en3aug
+e4n3aur
+e4naut
+en1a2x
+en3a2z
+e2n1ä
+e4när
+enbu4s3
+en2ce.
+1ency
+end2ac
+en2dal
+en4dang
+2endel
+ende4lä
+endermas8
+en4d3es4s
+en2dex
+en3d4ort
+end3rom
+end3s2l
+end3s2p
+end3sz
+en3d2um
+en3d2ü
+2ene.
+ene4ben
+en1ec
+e2neff
+en2eid
+e3neien
+e4neige
+4eneigu
+e4nein
+e4neis
+en1e4kl
+e2n1el
+ene4le
+2ene2m
+e2nemi
+2enen
+e4nense
+e4n1ent
+en4entr
+e2n1ep
+4e3ner.
+en2era
+e2n1erd
+e4n3erei
+e2nerf
+en4erfr
+1energ
+e2nerh
+e2nerk
+e2n1erl
+e4nermi
+e4n3ermo
+4enern
+e4n3erne
+ene2ro
+e2n1err
+en1ers
+4eners.
+e2n1ert
+en4ert.
+e2n1eru
+e2n1erw
+2enes
+e2n1e4sc
+e2n1ess
+en1eta
+e2neth
+en1eul
+e2n1ev
+e4ne2x
+en3f
+enf2a
+enf2u
+1engad
+1engag
+en3g2al
+enge3r4a
+en3g2i
+en3gn
+eng2o
+1engp
+eng4ra
+eng3s2
+2eni
+e3ni.
+e3nic
+e2nid
+4e3nie
+eni3er.
+eni3erp
+eni5ers.
+en3i2ko
+en3ill
+eni4m
+en1ima
+en1imi
+e2nin
+e3nio
+eni2ö
+e2nir
+e4n3iso
+e3nit2
+e3niv
+enk3aus
+enk3erg
+en4k3erk
+en3k2ü
+en2nef
+en2nel
+en4ner4f
+enn3erg
+en4n3erl
+enni6ger
+2enniv
+e2n3oa
+e2n1ob
+e3nobel
+enob4le
+eno2br
+e2n3oc
+e2nof
+en3ol
+eno2ma
+e2n1op
+e2n1o2r
+en2ora
+eno4ri
+4enorm
+eno4s
+en1ost
+4e3not
+eno2w
+2e1nö
+en1ö2d
+en3sabb
+en2san
+ensas4s
+ensa5sse
+en5sche
+en2seb
+1ensem
+en4sen3e
+ens3ere
+en2sid
+en3spo
+ens4por
+ens4tak
+enst5alt
+en4s3tät
+ens4tel
+en6stele
+en6s5test
+2ensto
+enst2ü
+ens3umf
+en2sun
+en3t2ag
+2entan
+en4tanm
+en4tanw
+ent4ark
+1entd
+en3t2el
+ente2n
+en4terb
+1entf
+2entfo
+2entfö
+1entga
+3entgeg
+en2thi
+1enthu
+1enthü
+en2tid
+1entla
+1entn
+en2t1os
+2entö
+en4t3rol
+1entsc
+1entso
+ent4sto
+1entw
+4entwet
+3entwic
+1entz
+en1u
+e2nuf
+e2num
+2enu2t
+e4nuto
+e1nü
+4enwü
+2e1ny2
+enz2äp
+1enzep
+enz3erg
+en4z3erk
+en4zerl
+en4z3erm
+enz5ersc
+enzlan4
+enzo2l
+e1ñ
+4eo
+e1o2b1
+eo3ben
+eo3bl
+eo3br
+eo1c
+eoch2
+eo3dr
+e1of
+eo3g2
+e1oh
+eo3la
+e3o2ly
+e1on.
+e1ond
+e1onf
+e1onh
+e1onl
+e1onp
+e1onr
+e1ons
+eo1o
+e1opf
+e1or
+e3or.
+eo1ra
+e3orb
+e3ord
+e3ors
+eort4
+e3orw
+eos2
+e3os.
+eo3se
+e1o4ste
+eot2e
+eo1ul
+e1ö4
+e1p
+2ep2a
+epa2g
+epas6ser
+2eper
+e3p2f4
+eph2
+1e2pid
+e2pig
+e2pik
+1e2pile
+e3pio
+1epis
+2epist
+1e2pit
+ep3le
+1e2poc
+eport4
+1e2pos.
+ep2pa
+ep2pei
+eppe3l
+ep2pin
+ep4p3l
+ep2pr
+2epr
+ep3sh
+ep2tal
+ept2an
+ep2tau
+e3pu
+epu2s
+2e3q
+er1a
+e3ra.
+e2rach
+e3rad.
+e3radi
+e2radj
+e2r3adm
+e4radmi
+e4r3adr
+eraf4a
+era2g
+e1rah
+e1rai
+er3aic
+e2rak
+e3rake
+e1rald
+eral4eb
+er3alke
+e2r3all
+er2an.
+era4na
+eran3d4
+e3rand.
+e4rangr
+e2ranh
+e2rano
+e1rap
+er3apf
+er3apr
+e2rar
+er3are
+e3rari
+er3arr
+e3ras.
+er3asc
+era4sie
+era2sp
+era4s3s
+e1rast
+era2ß
+era3te.
+e3rati
+er3att
+e1raub
+e1rauc
+er3aue
+erau2f
+er3aug
+e2ra2v
+e1raw
+e2r3ax
+e1raz
+e1rä
+er1äf
+er1äh
+er1ä2m
+er1äp
+e2r1ä4s
+er1ätz
+3erbarm
+erb2au
+erb2e
+erb2sp
+er1c
+er3chl
+erch2o
+erda3me
+1erdb
+er3de
+2erdec
+2erdel
+er4d3en4g
+erd3erw
+erdeu2
+1erdg
+er2dob
+2erdy
+4ere.
+er1eb
+ere4ben
+e3r2ech
+er3echs
+er1eck
+er1edi
+ere4dit
+er1eff
+er1e2h
+ere4i
+6e3rei.
+6e3reib
+er1eig
+4ereih
+e3reik
+e4r3eime
+e2rein
+er3eis.
+er5eisar
+er3eisb
+er3eisf
+er3eisr
+erei5str
+er1e2l
+e2rele
+ere3lev
+ereli1
+2e3rem
+e4r1ema
+er1emb
+e2remp
+e4remu
+2eren
+e3ren.
+e3rena
+eren1e
+e4rense
+e4rentn
+e4rents
+e3renz
+eren8z7en8d
+er1epe
+2erer.
+2ererb
+er3erf
+e4rerfo
+e2r1erh
+e2rerk
+erer4kl
+e2rerl
+4erern.
+e4rerne
+e2rer2o
+erer4ri
+er1ers
+4erers.
+e8rersche
+e2rert
+2ererv
+2ererw
+2eres
+er1ess
+eres3sk
+er1eß
+er1eta
+ere2th
+e4r1e2ti
+3er1eul
+ere4vid
+erf2e
+er3for
+erf4r
+4erfür
+er4g3are
+4ergebi
+3ergebn
+4ergebü
+4ergeha
+4ergehä
+erg5elst
+4ergeni
+3ergiee
+er2gop
+4ergrem
+erg1s2o
+ergs2p
+e4rh
+1erhab
+2erhai
+4erhals
+2erham
+2erhas
+3erhebu
+er3hei
+2erher
+er3hu
+2eri
+e2riat
+e3rib
+4e3ric
+e4r3ico
+e2r1id
+eri2de
+4e3rie
+eri3e2n1
+eri5ers.
+e3ri3k
+erik4l
+4e3rin.
+er1inb
+e2rind
+e2r1ini
+er1ink
+er1inl
+er1int
+e3rio
+4eris
+e2risr
+3eritr
+e3riv
+2erk.
+2erkaj
+er3ker
+1erklä
+2erkm
+2erkre
+erk3t4
+2erl.
+2erlag
+3erlaub
+3erlebn
+4erleh
+erm2
+er3mag
+er3me
+ermen4s
+er4m3ers
+er3mi
+er4n3alt
+er3ne
+er4nene
+er4nerf
+er4nerk
+3erneue
+ern1os
+2e1ro.
+e1roa
+er1ob
+ero2bl
+ero2br
+e2r1o2f
+e1rog
+e1roh
+4e1rok
+e1rol
+er3oly
+e1rom
+er3omb
+2e3ron
+er3onk
+e2roo
+er1op
+e4ro4r
+eror2a
+e1ros
+1erosi
+e3rosit
+e1rou
+e1row
+er1ox
+e1roz
+erö2d
+2eröh
+erö4l
+er1ö2s
+er3p
+er4rade
+er3rä
+2erren
+erri3er
+er3ror
+2errü
+er3s2a
+ers4ana
+ersch4
+erse4h3u
+ers2el
+er5s2i
+er3sk
+ersma3s4
+4ersted
+er6st5ers
+4erstil
+er3swi
+er3sz
+er2t1ab
+erta2d
+er3tat
+4erteig
+er4t3erf
+er4t3er4g
+er4ter4h
+er4terk
+er4ters
+er2tho
+4ertö
+4ertru
+ert3s2e
+ert1s2p
+2eru
+eruf4s
+e4r3uhr
+er1u2m1
+er1und
+e4rundu
+3erup
+er3use
+e2r3uz
+erü4b
+3erweck
+er4zerk
+er4z3ers
+e1s
+es3ab
+es2abb
+e4sabe
+e3sac
+esa2d
+e3saf
+e2sall
+es2an
+es4and
+es3anf
+es3ant
+esa2ra
+e3sarg
+e3sa1s2
+esa3ss
+es3ato
+esa2v
+es1ax
+esäs4
+es2äu
+2esb
+esbi5er.
+e3s2ce
+es2chi
+esch2l
+esch2n
+e4sco
+e3se.
+es1ebe
+e2s1ec
+es1ehr
+e2sein
+ese3in4s
+es2el
+ese4nal
+ese4neu
+e3senk
+esen3o
+esen3sk
+eser4at
+ese4r1u2
+eses2k
+es1eta
+es3e2x
+2esf
+2esh
+es3ha
+es4ham
+es4har
+es3he
+2esi
+esi3er.
+e2s1il
+e4s3ins
+e4siso
+es2kat
+e4s3ke
+e4skl
+e4sky
+e4s3l
+2e4sm
+e4sn
+es2oh
+es2opa
+eso2r
+eso3re
+es2ort
+e3s2ö
+e3spal
+e3s4pan
+es4park
+es2pek
+e2spel
+e4spers
+e4sph
+e3s2pi
+e3s2por
+e3spra
+e3s2pu
+2esr
+2ess.
+es4s1a2g
+essali3
+essau4s
+1essay
+2essä
+2essc
+e4ssel
+e4ssent
+ess4erf
+e4ss3erg
+es4serh
+2essk
+2esso
+es2sof
+2essp
+es2s1pa
+es2spu
+es4stab
+es4ste
+estab4b
+e4stabs
+esta5ge
+est1ak
+e3s2tan
+e4starb
+es2t1a4s
+e3stat
+es2tau
+e4staum
+es2te.
+este2c
+est5eing
+e6st5eink
+e6st5einl
+e4st3eng
+est5erha
+ester6ke
+e4ster4ö
+e4st3erz
+estes2
+e4st3ess
+e3sti
+e4stid
+e4stip
+estmo6de
+1estni
+es2t1ob
+e2stod
+est3ori
+e4strad
+e5strec
+e5strick
+es2tu
+est3ums
+e3s2tü
+e3s2ty
+e3suh
+es1um
+e2sums
+es1ur
+2e4sw
+e3sy
+e2ß1el
+e2ßent
+eße3re
+e2ß1erg
+e1t
+e3ta.
+etab4
+et2abl
+et2a2c
+2e3taf
+2etal
+etal4la4
+etal6li6n
+et1a2mi
+e3t4an.
+et1ant
+etari1
+et4at
+etat3r
+et1äh
+2etb
+2e3te
+ete2e
+e4t1ein
+ete3ke
+et2en
+eten3d2
+ete2o
+eter4hö
+eter4tr
+ete4sp
+2etg
+et2h
+2eth.
+e3tha
+e4t3hal
+et3hä
+1et4hi
+e2thik
+1ethn
+e4thot
+et3hü
+e2tid
+eti2m
+etin1
+e2tinh
+et1ini
+eti2ta
+eti2th
+e4tl
+2eto
+e2t1o2f
+et2on
+eto4n3al
+etons4
+e2torg
+2etr
+e4traum
+et3rec
+e2t3res
+et4ros
+ets2c
+etscher7e
+etsch3w
+et4sh
+et1so
+ets1p
+et1su
+ett1a
+et2ta2b
+et2tad
+et2tak
+etta2m
+ett2as
+et2tau
+et2tä
+et2tei
+ette4n1
+et4th
+et2tö4
+et2t3r
+et2t1um
+et2tur
+et2tü4
+3e2tui
+e3tur
+2e4tw
+etwa4r
+1etym
+e3typ
+2etz
+etze4s
+et2zw
+eu1a2
+eu3b4
+2euc
+euch4ta
+2eud
+eudi4e
+eu2eb
+euer3ei
+eue6reif
+eue6reis
+eueren4
+euerer6s
+euerer6t
+eu3eri
+eu3erk
+eu3err
+eue3s
+eu2e5sc
+4euf
+euf2a
+eu2fer
+eu2g1a
+eu6gense
+eu3g2er
+eu4g3ing
+eu2gre
+eu2gri
+eug1s2
+eu3h
+eu1id
+eu1in1
+1e4uk
+eu2kä
+eulan2
+euland3
+eu3l2e
+eul2i
+2e1um
+e3um.
+eu3ma
+euma3s2
+e3umb
+e3umf
+e3uml
+e3um2s
+eums1p
+eum3st
+e3umw
+2euna
+eun2e
+eu4nei
+e3un2g
+eu2nio
+eu4nis
+eunk2
+eun3ka
+eu1o2
+eu1p
+eup2f
+eu2ral
+eu4r1an
+eu4r3ast
+e2ure
+euren2
+eu4rens
+eur4er
+eur3f4
+1euro
+eu1s4
+e3usar
+eu4sis
+eus5k
+eu3sp
+eu3ss
+eust4
+eut2e
+eu5ted
+eut2h
+1eu3tha
+eu3t2o
+eut6scha
+eut6schn
+eut6schr
+2eux
+eu2za
+eu2zo
+eu2z1w
+e3ü
+e1v
+e2vak
+e3var
+eva2s3
+2ev2e
+eve5ri
+evie3le
+2evor
+ev2s
+e1w
+ewä4
+ewä6s
+e2we.
+ewei4sc
+ewert4
+e3wir
+ewi2s
+e3wit
+2ex.
+e2xam
+2exas
+ex3at
+2exc
+2exd
+e2xel
+e2xem
+ex1er
+2exes
+e1xi
+e3xie
+2exik
+e2xil
+e2x1in
+1exis
+ex3l
+3exp
+2exs
+2ext.
+2ex2ta
+ex2tin
+1extr
+2extu
+2extv
+2exu
+e2xum
+2e3xy
+ey2n
+ey3no
+eys2
+e1z
+e3z2a
+ez2ä
+e2z1enn
+e3zi
+ezi2s
+ez2o
+e3zoh
+ez2w
+é1b
+é1c
+é1g
+égi2
+é1h
+é1l
+élu2
+é1o
+é1p
+é1r
+é1s
+é1t2
+é1u2
+é1v
+é1z2
+è1c4
+è1m
+è1n
+è1r
+1ën
+ê1p
+1fa
+fab4
+2f1ab5b
+fa2ben
+2fabf
+2f1a2bl
+2fabn
+f2abr
+2f1ab5s
+fa4cheb
+fa4chel
+fa2ch3i
+fa2cho
+fachs2
+fach3sp
+fa2ci
+fa2del
+f1ader
+fa2di
+fa2dr
+fa3ec
+fah6l5ent
+fai3b4
+f1a2ka
+fa2ke
+f3aktio
+f2akto
+3f2aku
+fa3la
+fa3le
+fal2kl
+falla2
+fal4lei
+fal6lenk
+fall5ent
+fal6lerk
+faller6s
+fal2li4
+fal6scha
+fal6schl
+fal6schm
+fal3te
+fal2tr
+3fam
+4famp
+f1amt
+3f2an.
+fa2nar
+2fanb
+fand2a
+fan2gr
+2f1an3k
+2fanl
+4fann
+f1anp
+2fanr
+2fanw
+2f1an3z
+2f1a2p
+f2ar
+far2b1a
+far4bel
+far4b3er
+far4bin
+farb3l
+far2bo
+far2b3r
+far2b3u
+f3arc
+3fa5ri
+far2r1a
+farre2
+far4rec
+far4reg
+far2rh
+2f3art
+2f3arz
+3fas.
+fa3s4a
+fa3sh
+f1assi
+fas2t
+2f1a4str
+fa2ß
+f1aße
+f3at
+f4at.
+fa2to
+f4ats
+2f1auf
+f3aug
+fau2s
+f1ausb
+faust3r
+3f4av
+fa2xa
+1fä
+fä1c
+fäh4rin
+fäh2r1u
+f1älte
+2fäq
+2f1ärm
+2färz
+fä4s
+fä6s3ser4
+3fäßc
+fä2ßer
+2f1ätz
+2fäug
+2fäx
+4f1b2
+fbau1
+fber2
+2f1c
+f3ch
+2f3d4
+fdien4e
+1fe
+3fe.
+featu4
+f2ech
+fe2dr
+fe2e1i
+feein5
+fe1em
+2f1e2he
+feh4lei
+f2eie
+f2eind
+2f1eing
+fe3ins.
+2f1einw
+f1ei3s
+5fek
+fe2l1a
+fel3au
+fe2l1ä
+fel2da
+felde4m
+feld6erh
+fel2dr
+fel4d5ri
+2fe2lek
+2felem
+fe2l1er
+fe2les
+fel3la
+fel4lan
+fel2lä
+fe2l1o
+fel4s3oh
+6fel6tern
+felt4r
+fel3tu
+f2em.
+fem4m
+2f1emp
+fen1a
+fena2g
+fen3au
+4fenerg
+fe2ni
+fe2no
+fen3s2a
+fen5s2c
+fenst2
+fen6stri
+f1ent
+2f3entf
+f2enti
+4f3entla
+f2ento
+2f3entw
+2f3entz
+fe2nu
+3fep
+fe2pi
+f2er.
+fe1ra
+fe2rab
+fe2ral
+fe4rang
+fer4ant
+fe4ranz
+fe2rau
+fe2r1ä
+2ferd.
+fer3da
+ferd2e3
+f2ere
+fe2re2b
+fe2rec
+3ferei
+4f3ereig
+fe4r3eis
+f4erel
+fer3ell
+fe4rer4g
+fer4fah
+ferg4
+f4ergr
+ferie4n3
+4fer4leb
+f2ern.
+fer4nei
+fe2rö
+f4erpa
+f4erpf
+f4erpl
+f4erra
+fer4reg
+ferri2
+f2ers.
+f2ert
+fert4r
+f2erz
+fess2e
+fes2t
+fe2sta
+fest3a4b
+fest3an
+fe4st3ei
+fe4stin
+fe2st1o
+fe2st3r
+2f1e2ta
+3fete
+fet4t3a
+fetti3s
+2feu.
+feuer3ö
+3few
+2f1ex
+3fez
+1fé
+4f1f
+f3fa.
+f2fa2b
+ffa2ce
+ff1a2d
+f3fak
+f3fal
+ff1alt
+ff1ans
+ff3ar
+ff4arb
+ffa4s
+ff1au
+ffa2z
+f2f1e2b
+ffe2e
+f2f1ef
+f2f1ei
+ffe3in.
+ffe5inha
+ffel3l
+ffe2m
+f2f1emi
+ff2en
+ff3erle
+f2fetz
+fff4
+ffi3k
+f2fil
+f2fim
+ffi2xi
+ff1lag
+ff3li
+f3flu
+f3flü
+ffo2
+ff1ox
+f2fö
+ff1rak
+f3f4rä
+ff3ro
+ffs2am
+ff3sch
+ff2s1p
+ffs4tau
+ffs1ti
+ff3stü
+fft2
+ffus3s
+4f3g2
+fgeb2
+fge3s2
+4f3h2
+1fi
+3fi.
+fi2ar
+fi3at
+fiden2
+fi2do
+fi1er2f
+fi2k1as
+fi2kel
+fi2kin
+fi2kn
+fi2k1o4
+fi2k3r
+f2il
+fi2l3an
+fil3d
+fi2les
+fi3li
+fi4lin
+fil2ip
+fil2ma
+fil2mä
+fil4med
+fil4mei
+fi2lo
+2fimp
+3f2ina
+2f1inf
+fing2
+fing4e
+fings2
+fi3ni
+f2ink
+2f1int
+fi2o
+fi3ol
+fi2r
+fi3ra
+fi4re
+fir3me
+fi3s4a
+fi4sch3a
+fi6schei
+fisch3l
+fisch3o
+fi4schr
+fi4sch3w
+fi3s2h
+2f1i2so
+fis2p
+fite2
+fi2tin
+fit1o2
+fi2tor
+five4
+fi2xel
+2f1j
+3f2jo
+4f1k4
+fka4t3
+f2l2
+2fl.
+f3lad
+f5land
+f4lans
+f3lap
+f4lasc
+f3lats
+flauma4
+3f4läc
+4f3läd
+f3län
+f3läu
+fl4e
+f5le.
+2f3leb
+2f5lein
+flek3
+flekt2
+f3ler
+f4lex
+f3li.
+3f4lim
+fli4ne
+f3ling
+2flins
+2f5lon
+1f4lop
+f4lor
+flo7s8ses.
+1f4loß
+1f4lot
+flo2w
+f3lö
+4flöf
+1f4luc
+1f4lug
+flu4gen
+flu4ger
+1f4luss
+1fluß
+f4lut
+flut1o
+f4lü
+f5lüd
+f5lüm
+4f3m2
+fma5che
+fma2d
+fmas2s
+fma3sse
+2f3n2
+fni2s
+1fo
+f1ob
+fo2be
+2fober
+fob2l
+2f1o2f
+foli3
+fol2k3
+fo2na
+fo4nan
+fon3au
+fon3dr
+fo3n2er
+fo4nin
+fo2nop
+fons2
+fo2nu
+2f1op
+4f3org
+fo3rin
+for4m3a4g
+for4mas
+for4m3ei
+forni7er.
+for6schl
+for4sta
+for4sti
+for4t3ei
+for4ter
+for2th
+for2t3r
+fort3s2
+for3tu
+for2u
+fot4r
+fo2x
+1fö
+2fö2f
+2f1ök
+4f1ö4l
+4f3p4
+2f1q
+f2r2
+f3ra.
+frach6tr
+2f3rad
+2f3rah
+fra4m
+f3rand
+f5rap
+f3rat
+1frau.
+f3rauc
+2fräd
+1f4rän
+2fre.
+f3rec
+f3red
+2fref
+2freg
+f4rei.
+f3reic
+f4reie
+frei1f
+f4reig
+frei3k2
+2freim
+2frein
+2f3rek
+2f3rep
+2frest
+3f4reu
+2f3ric
+fricht6e
+fri3d
+fri2e
+2frig
+f4ri3k
+f3rip
+1fris
+f4risc
+f4rist
+fri6ster
+2f3roc
+2frol
+1f4ro2n
+fro4n1a
+f4rop
+fro2sc
+f3rot
+frös2
+f3ru
+f4ruc
+f3rü
+4f1s
+f2s1al
+f2sa2n
+fs3ane
+fs3ar
+f2s1a4s
+f2saut
+fs2än
+f2sca
+f4sce
+f4schan
+f4schef
+f4schro
+f2scr
+f2s1e2b
+f4sehr
+fse2n
+fs1en1e
+f2s1ent
+f2s1er
+fse2t
+f2s1eta
+f2s1i2d
+f3s2ky
+f2s1o2
+f3soh
+f3sol
+f3s2on
+fsp4
+f3spann
+f2s1pas
+f2sph
+fs2pie
+f3s2pl
+f3s2por
+f2spre
+f2spro
+fs2pul
+fs3s2
+fs2tal
+f2stas
+f3s2tat
+f4s3täti
+f2stip
+f2s1tis
+fst4r
+f4s3tres
+fs1trü
+fs1tut
+f4stüte
+fs1ums
+f2s1un
+f3sy
+4f1t
+f2ta.
+ft1a2be
+ft1abl
+ft1af
+f3t2ag
+ft1ala
+ft1an
+ft1a2r
+f3tat
+ft3att
+f2t1äu
+ft1eck
+ft1edi
+ft1eh
+fte2he
+ft1eig
+ft1ein
+ft1eis
+ft1eli
+ft1emi
+f2t1ent
+ft3erfü
+ft1erk
+f2t1erl
+f2t1erz
+f2t1e2ti
+f2t1ex
+f2t3h
+f4t5hei
+f3ti
+f4tid
+ft1in
+f4tinf
+f4tins
+fto2
+f2t1of
+ft3om
+f3tor.
+f2t3ot
+f3t4ran
+ft3ro
+ft3ruh
+fts1
+ft2sa
+ft4sa2g
+ft4sam
+fts2c
+ft2se2
+ft4seh
+ftsen1
+ft2s3i
+ft4stem
+ft4ster
+ft4stes
+ft3stie
+ft6stier
+ft3stri
+fttra4
+f2tum
+ft1urk
+ft1url
+ftwa4
+ft3z2
+ftze3d
+1fu
+3fuc
+3fug
+f2uh
+fuku3
+f1um
+fun6derg
+2f1unf
+2f1ungl
+2f1u2ni
+fun2kl
+fun2ko
+fun2k3r
+fun2ku
+2f1unm
+2funr
+2funt
+f2ur
+furch2
+fu4re.
+2f3url
+fus2
+fu3sse
+fus6sen
+fu4sser
+fuss1p
+fuss1t
+fus4ste
+fu2ß1er
+3fut
+1fü
+2füb
+fühl4sc
+fün2
+fü2r
+fü3s2
+2f1v
+4f1w
+f1ya
+4f1z
+fz2a
+fzeiten6
+fzei8t7end
+fz2ö
+fzu2ga
+fz2w
+3ga.
+2gabf
+2gabg
+g4abi
+ga2b5l
+gab2o
+g1abr
+gab4ri
+2gabsc
+2gabtr
+ga3bu
+2gabw
+2gabz
+gade2r
+ga3di
+gadi4e
+2gadl
+2ga2dr
+gae2
+ga1fl
+5gag.
+ga1k
+ga2ka
+ga2ku
+gal2a
+ga3laf
+ga2lar
+2g1alau
+2g1alg
+gall4e
+gal3lo
+2g1alp
+2g1alta
+2g1altd
+g1a2lu
+ga2mec
+ga3mel
+gam3ma
+5g4amo
+2g1amt
+g1ana
+2ganb
+gan3d2
+2ganf
+gan2g1a
+4gangeb
+gan2gr
+gang4sp
+gan2g1u
+2g1ank
+2ganl
+2ganmu
+3g2ano
+2ganr
+gans2
+2g1ansi
+2ganst
+2ganw
+ga1ny
+g1anz
+ga3pe
+2g1app
+ga1q
+3gar.
+g2ara
+2garc
+3g2ard
+ga3r2i
+2g1arm
+ga3r2o
+2g1arti
+ga3ru
+2g1arz
+ga2s
+g2as.
+gas3al
+ga4sam
+gase2
+ga5se.
+ga4sei
+ga4sel
+ga4se4m
+ga5ses
+ga4set
+gas5s2
+5g4asse.
+g4assen
+6gassess
+ga5ssest
+ga4st3el
+ga3sti
+ga4stin
+gastra4
+gastras5
+gas4t3rä
+ga3stri
+ga6strom
+gas1tu
+ga3t2a
+gat2h
+2gatm
+gat4r
+gau1c
+2g1auf
+2g3aug
+g2auk
+gau5ne
+2g1au4s
+2g1aut
+2g1äp
+gär3th
+2gärz
+gäs2
+gä4u
+2g3b4
+gbau5s
+gber2
+gbi2
+gbon2
+2g1c
+2gd
+g1da
+gd2ad
+gda3de
+g2dak
+g2dan
+g2dar
+g2dau
+g1dä1
+g2dei4
+gd2en
+g2d3ent
+g2der
+gd2es
+g1do
+g2dop
+gd2or
+g1dö
+g1d3r
+gd3s2
+gdt4
+1ge
+ge3a2
+geb2a
+ge3ble
+geb4lin
+gebot2
+3gebü
+ge1c
+ged4
+ge1e2
+ge3ec
+geest3
+3gefä
+4g1eff
+gef4l
+gef4r
+ge3fu
+gegen1
+ge3g2l
+ge3hei
+2g1eid
+ge4ie2
+2g1eif
+ge4ig
+g2eil
+gein1
+ge1ini
+ge1inn
+2g1einr
+gein5sti
+gein2v
+ge1ir
+ge2is4
+2g1eise
+gei3sh
+gei4sta
+2gek.
+gelb1r
+gel4b3ra
+gelb5s
+gelder4
+gel6derh
+gel6ders
+ge3lec
+2ge2lek
+2gelem
+ge4lene
+gel3ere
+ge4lerk
+geler3ö
+ge4l3ers
+ge2lev
+gel3f
+gel1i4m
+gel3l2a
+gel3le
+gell2i
+gel2ö
+gel3s2a
+gels2p
+gel3sz
+gel3ta
+gelt4r
+gel3z2
+gem2
+ge4ma.
+gem6e
+4g1emp
+gem3s
+ge3mu
+ge3na
+ge4n1ac
+ge4nak
+ge4n3al
+ge4nam
+ge4nar
+ge4nat
+gen4aug
+ge3nä
+ge4näu
+g2enc
+4genda.
+4g3endmo
+gen2dr
+gen3eid
+gener4f
+4generg
+ge4n3ern
+gen6erwe
+gener4z
+ge3nid
+ge2nim
+gen3k4
+genma7sse.
+gen3n
+gen3sk
+gen3sz
+gen3tä
+2gentf
+gen3t4h
+gen3tr
+2gentw
+ge2nun
+genzma3
+genzmas6
+geo2ri
+ge1ou
+g2e3p4
+ge1ra
+ge2ra2b
+ge2r3al
+ge3rann
+ge4rant
+ge4r3a2r
+2gerdg
+ge4rene
+ge4reng
+ge4ren4s
+ge4r3ent
+ger2er
+gerin4f
+ger4inn
+gerin4t
+4ger4klä
+g3erlas
+germas6s
+ger5me
+ger3no
+2g1ernt
+ge1ro
+ge2rob
+ge2rop
+ge1r2ö
+ger4sat
+4ger4seh
+ge3r2u
+g1erzä
+g6es.
+3ges2c
+ge6sche.
+ge2seb
+4g3e4sel.
+ge4s3elt
+ge2s1er
+ge3sha
+ge3s2i
+ges2p
+ges4pi
+gess2t
+gest2
+gest4a
+gest6e
+ge4s3tur
+get2a
+g1etap
+get3s
+ge3t4u
+2g1e1ul
+ge3u2t
+ge3wa
+4g1e2x
+2g3f4
+gfi4l
+2g1g
+gga2t
+g5ge
+gge2ne
+gg2l
+g3gla
+g3glo
+g2g3n
+gg4r
+2g1h
+4gh.
+gh2a
+3ghale
+gh2e
+3g2het
+3g2hie
+gh1l
+3gh2r
+ghs2
+g2hu
+gh1w
+gia2s
+gich2
+gicht1
+gi2eb
+gie3g
+gi2e1i
+gi2e3l
+giel2a
+gie3n
+gien2e
+gi4eno
+gie3re
+gies4
+giet2
+gif2tr
+gift5s
+gi2gu
+gi2kel
+2g1ill
+3gime
+gi2me.
+gi4mes
+gi2met
+2gimp
+2gind
+gi3ne
+2g1inf
+gin2ga
+2ginh
+2g1ins
+2g1int
+2ginv
+gi2ob
+2giok
+2g3isel
+git2a
+gi4us
+2g1j
+4g3k4
+gl2
+4gl.
+4g1lab
+2g1lac
+2gladu
+2g1lag
+2g1lam
+2gland
+3glanz1
+gla2s1c
+glast4
+gla4str
+gla4stu
+3g2laub
+2g1lauf
+g1läd
+g1läß
+2gläuf
+gl3b
+g2l4e
+2gle.
+3glea
+2g3leb
+g3lec
+4g3led
+g3lee
+2g3leg
+2gleh
+g4leic
+4g3lein
+gleiter8s
+glei4t5r
+g3len
+4glenk
+4g3ler
+glerei4
+2gles
+3gles.
+g3lese
+g3lev
+g2lia
+2glib
+3g2lid
+g2lie
+2g3lieb
+2glif
+g2lik
+4glil
+g2lim
+4glin
+g2lio
+2glis
+3g2lit
+g3lite
+g2liz
+g3lize
+g2loa
+g2lob
+g2loc
+2g3loch
+g2lok
+g2lom
+g2lop
+g2lor
+2glos
+g2lot
+2glöch
+2glös
+2glöw
+2gls
+g1lu
+2g3luf
+2gluk
+4g3lun
+g2lut
+3glü
+g1lüg
+2glw
+3g2ly
+2g1m2
+g1n
+2gn.
+g2n2a
+g4na.
+2gnac
+2g5nah
+gn4al
+gna4l3er
+2gnanl
+3g2nä
+2gnb
+2gnc
+2gnd
+gn2e
+g3neh
+2gn3ent
+gne2tr
+2gnf
+2gng
+2gnh
+g2nie
+g2nif
+g4nin
+2gnint
+2gni2s3
+gnise2
+2gnk
+2gnl
+2gnm
+g2no1
+g4non
+g3not
+2gnp
+2gnr
+2gns
+2gnt
+2gnu
+3g2num.
+g2nü
+2gnv
+2gnw
+g2ny
+2gnz
+go4a
+goa3li
+g1ob
+go3be
+2gobj
+gob2l
+go4c
+2g1o2f
+2gog
+2g1oh2
+goh3ren
+go1i2
+go3in
+gol2a
+gol2fr
+3gon.
+gon2e
+3gons
+goo2
+2gope
+gopf4
+go2pos
+2gopt
+gor2a
+2gord
+2g1org
+go2si
+go2sp
+gost2
+2g1osz
+go3t2h
+got6terb
+got6t5erg
+3gou
+go1y
+gö2f
+g1ö4l
+3göt
+2g3p4
+2g1q
+g2r4
+g4rab
+gra2ba
+gra2bi
+gra4bl
+2g3radl
+2g3rah
+2g3rak
+gram1
+gram8m7en8d
+gram6mer
+g3rand.
+2gra2r
+grar1e
+gra4s3a
+gra4sh
+gra4sp
+gra4str
+2g3raub
+grau3f
+2graum
+grau3sk
+2gräd
+gräs5c
+g3räu
+2g5re.
+g4reb
+2g3rec
+g3rede
+g4re2e
+2g3ref
+2grege
+2g3reic
+grei4fr
+2g3reih
+g3rein
+g3reit
+g3rek
+g4rem
+2g3renn
+gre3no
+gren6z5ei
+grenz3w
+g4rer
+gres6ser6
+g3ret
+g3rev
+2g3ric
+gri2e
+2g3riem
+g3riese
+g4rif
+2grig
+gril4la
+4g3ring
+4g3rinn
+g4rip
+gro2ba
+gro3ber
+gro2bl
+gro2b3r
+2groc
+2groh
+2g3rol
+gron4
+gros2
+2g3rose
+g4ross
+gro5sse.
+gro7ssen.
+gro7sser.
+gro7sses.
+2g3rost
+g4roß
+g4rot
+2gröh
+2gruf.
+g4ruft
+2g3ruh
+g3rui
+2g3rum
+grun2g
+3g4rup
+3grus
+grus2s
+gru3sse
+3gruß
+2g3rut
+2g3rüc
+g4rün
+grüs2
+4gs
+g2sa
+g4s3ab
+gs3ach
+g3sack
+g4sa2d
+g4s3a2k
+g3s1al
+g4salb
+g4sall
+g4salm
+g4salt
+g4sama
+gs1amb
+g4samp
+gs3ane
+g4sant
+gsa4p
+gs3a2r
+gs1as
+g3sat
+gs3ato
+gsau2g
+g3sau4r
+gsa2v
+gs1ä
+g3sch4
+g4schef
+gs2chi
+gs3d
+g2s1e2
+gs2e3h
+g3s2eil
+g3s2eis
+gse4kl
+g3sel.
+g4s3ela
+g3seln
+gs3em
+gsen1
+gs2enk
+g4sent
+g4ser
+g3sere
+gs3er1i
+g4se4s
+g4seu
+gsfi4l
+gsh4
+gs3ha
+g2s1i
+gsi2d
+g3sig
+gs3i2k
+g3sil
+gs3in
+g4sis
+g4sita
+gs2ki1e
+gsmas8sen
+gs1o2
+gso4b
+g3son
+g2s3op
+g5s4orge
+g5soz
+gs1p4
+gs2pac
+gs4pant
+g3s2pek
+g3s2pi
+g5spie
+gs3pl
+g3spor
+gs6port.
+g6sporto
+g4s3pru
+gs3s2
+g2s1tab
+g2s1tät
+gs2te.
+gs4tem.
+g4stemp
+gs4ten.
+gste2r
+gs4ter.
+gs4tere
+g6sterei
+g4sterm
+gst3err
+gs4tes.
+g4stest
+gs2thy
+g3s2ti
+gs3tie
+gs3tis
+gs1tot
+gst4ra
+g3stras
+gst5reit
+gst4res
+g4s3treu
+gst3rit
+gst3ros
+g2stru
+gs1trü
+gs1tur
+gs1u
+gsü3s
+g3sy
+4g1t
+g3te
+gt3h
+gt4hy
+gt2i
+gti2m
+g3to
+gt4r
+1gu
+gu4ale
+gu3am
+gu1an.
+gu1ant
+gu1as
+gu4d3r
+gu2e
+2gued
+guet2
+2g1u2f
+2g1uh
+guil3
+gu1ins
+gu1i4s
+gum2e
+3gumm
+gummi1
+gun2e
+2g1unf
+g2ung.
+gunge2
+4gungew
+2g1ungl
+2g1u2ni
+2g3unk
+2gunr
+2gunt
+3gur
+gure4
+4g1url
+gur2th
+gur2tr
+gurt3s
+gu2s3a
+gu2sä
+guschi5
+gus3se.
+gus3ses
+guss1o
+gus2sp
+gus4st
+gust3a4b
+gu4stap
+gu6stein
+gust3en
+gu3sti
+gu2str
+gu2ß1
+gußt4
+gu2t
+gut1a
+gu3te
+gu4t3er4h
+gut3h
+gut4sa
+gut2s3p
+2güb
+3gür3
+gü3st
+2g3v
+2g1w
+gy3n
+gyp2a
+2g3z2
+gzeu4gi
+hab2a
+hab2e
+hab2i
+2habn
+h1a2br
+h1abs
+2habw
+ha4ch3en
+ha2cho
+ha2del
+hade2n
+h1adle
+hado2
+h1a2dr
+2hae
+ha4far
+haf2e
+h1affä
+haf3f4l
+h2aft
+haf2tr
+haft2s
+hafts3p
+h2agg
+h1ah
+h2ahs
+h2ai
+3hai.
+h2aj
+2haka
+ha1k4l
+2h2al.
+halan4c
+h1a2lar
+ha2lau
+hal2ba
+hal4bel
+hal4bin
+hal2b3r
+hal2bu
+2hale
+2halk
+hal4lei
+hal6lere
+hal6lerf
+hal6lerg
+hal4leu
+hal4lo4k
+ha3lo
+4halp
+hal2sp
+hal4tal
+hal4tei
+hal2t5r
+h2ame
+2h1amt
+ham3te
+h2an.
+2hana
+ha2nal
+ha2nan
+2hanb
+h2anbe
+h2and
+han2da
+han2d3r
+ha2nem
+han2f1
+han6g5end
+hang3s
+2hani
+han2kr
+2hanl
+2hano
+2hanr
+2hanz
+hao2s
+2h1ap
+3h2ape
+ha2pl
+ha2po
+ha2pr
+h2a3ra
+ha4rab
+2harb
+h2ard
+har2fr
+h1arm.
+har3ma
+h2arme
+har4me.
+har4ne
+ha2rom
+hart4e
+har2th
+h1arti
+har2tr
+har2za
+h2as
+4ha3sa
+has2c
+has4h3
+has4sa
+hasser4
+has6s1t
+ha4str
+ha2ß1
+h1aße
+ha2ta
+h3atl
+ha2t3r
+2hats
+hatt2
+h3attr
+h1audi
+h1aufb
+hau5f6lie
+hau3f4lo
+2h1aufm
+h1aufs
+h3au3g
+h1aukt
+hau2sa
+hau4san
+hau2sc
+h2ause
+hau4sel
+hau6s5ent
+hau4spa
+hau4spe
+hau4ss
+haus5sen6
+hau4s3ti
+hau4sto
+hau4sur
+h2aut.
+hau2ta
+4hauto
+hau2t3r
+ha2ve.
+3hax
+häde2
+h1äff
+hä2kl
+2härz
+hä4s
+hä5sc
+hä6s5chen
+2häug
+häu2s1c
+hä3usp
+2h1b4
+hba4ras
+hbe3r2e
+2h1c
+2h3d4
+hdan2
+4hea
+he3be
+heb3eis
+he2bl
+he3br
+he3bu
+he3ch2e
+he3chi
+he1cho
+h3echs
+hed2g
+he2dit
+he2el
+hee3le
+he1e4m
+hee2s
+he1e2t
+h2ef.
+he2fan
+he2fau
+he2f1ei
+he3f2em
+hef3erm
+2heff
+he2fid
+he4f3ing
+he2f5l
+2hefr
+hef4ra
+he2fre
+3heft
+he2fu
+he3gu
+he2hel
+h4eib
+h1eie
+h1eif
+h1eig
+he2im
+hei4mal
+hei4mar
+hei4mei
+heim3p
+hei4mu
+2hein
+heine2
+hei4neb
+hei6nene
+hei4n3er
+h3eintr
+4heio
+he1ism
+heis4s
+he1i4st
+heit4s1
+h1eiw
+hekt3a
+he2l1an
+he2l3au
+hel1ec
+he2lek
+h3elem
+he2len
+h2elf
+he3li
+hell3au
+hel4lic
+hel4mei
+he3lo
+he4lof
+hel2or
+he2lö
+2helt
+hema4s3
+2h1emb
+3hemd
+he3mi
+he4mia
+h3e4miss
+3hemm
+2h3emp
+h2en.
+hen3a2
+he4nas
+he4nat
+hen3ebe
+henen1
+hen3end
+he4nene
+he4nens
+hen3erg
+he4nerm
+he2n1e4t
+henfal4
+2henga
+hen4gag
+hen4kan
+hen4kau
+hen3st2
+hent2a
+hen3te
+hen3tr
+h1ents
+2h3entw
+h3entz
+he4n3u
+hen3z2
+4he2o
+he3on
+he3op
+he3pa
+he3ph
+h1e2pi
+hept2
+h2er.
+her3a2b
+he2rad
+4herap
+he4r3a2r
+he2rat
+herau2
+herb2
+h2ere
+he2re2b
+he4reck
+her4eif
+4he3reig
+he6reis.
+her7eises
+he2rel
+he4rene
+he6rersc
+he4rerw
+h1er2fo
+6hergebn
+2herif
+herin4d
+herin4f
+he6rin6nu
+herin4s
+h1erke
+her4klä
+h5erkran
+her3la
+herma3s
+h2ern
+he3ro
+he4r3o4b
+he4rof
+he4rop
+he4rot
+h1erör
+her3sta
+hert4
+her3th
+her3um
+her4zap
+h3erzeu
+her2z1w
+he3sa
+4hese
+he3si
+he3s2p
+hes2t
+he2tap
+he3tä
+heter2
+he3th
+het2i
+he3t2s
+h2eu
+heu3g
+he2um
+3heusc
+he3x
+he1x2a
+2hexp
+he1y2
+1hè
+4h1f4
+hfaller6
+hfan2
+hfel2l3
+hfi2s
+hflei2
+2h3g4
+hgas1
+hga4sen
+hget4
+2h1h2
+hhoh2
+4hi.
+4hia
+hi2ac
+hi2ang
+h1iat
+4hic
+hi1ce
+hich6t5er
+hicht6sp
+2hid
+hi3d2e
+hi2e
+hi3ens
+hier3i
+hie4rin
+hiers2
+hif3f4r
+hi2k3r
+hi2l3a4
+hile3n2
+hil2fr
+h2im
+2hima
+h1imb
+h3i4mit
+h4imm
+h3impe
+hi2n
+hi3nak
+hi3nam
+hi3nap
+hi5nas
+h2inde
+hi3nel
+hin2en1
+h1inf
+h1inh
+2hi3n2i
+hin3n2
+hi3no
+hin2t1a
+2hio
+hi3ob
+hi4on
+hi3or
+hi2p1
+hip3f
+hi4pl
+hip3o
+hi2r
+hi3ra
+hi3re
+hi3ri
+hir2m1a
+hir2mi
+hirn1
+hir4ner
+hir2s
+1hirt
+2his.
+his2a
+hi2se
+h1i2so
+hi2spa
+hi3tac
+hi2tan
+hi2tel
+hit2i
+hit3z2e
+hi2v1o
+2h1j
+2h1k4
+hkamp2
+h2keu
+hklo3s
+4hl
+hl2ag
+hla2gr
+hla2l
+hlam8meng
+hlan4d3a
+h1las
+h1lat
+h3laus.
+h1laut
+h1lay
+h3läche
+h3läd
+h1läs
+h1läß
+h1läu
+hl3d4
+hle3a
+h3leb
+h3led
+hle3e4
+h3lein
+h2leis
+h3leist
+h5len.
+hle4nas
+hlenen3
+hl2enn
+h4l3entr
+h4lents
+hl2enz
+h3ler
+hle2r3a
+hl4ere
+h2lerg
+hl2erk
+h6l3er4nä
+hle3run
+hl1erw
+h4lerz
+h3les
+h4lesi
+hlf4
+h2lie
+h3lied
+h2lif
+h2lim
+hl1ind
+h2lip
+h2lis
+h3list
+h2lit1
+hl3l2
+hlle3b
+hlm2
+hlma3s2
+h2lo
+hl1ob
+h3loc
+h3log
+hlo2re
+h4lorm
+h3los.
+h3losi
+hlos4st
+hlo2ß1
+hl2ö
+h2lös3
+hlö4ss
+hl4sar
+hl2ser
+hls3ka
+hl3s2lo
+hls3tie
+hl3str
+hl2su
+hl3t4
+h3luf
+h3luk
+h3lumpe
+h1lüf
+hlz2
+2h1m
+h3mad
+h3mag
+h3mak
+h3man
+h2mant
+h3mar
+h4marc
+h3mas
+hma3sse
+h3maß
+h3mä
+h4mäc
+h4mäh
+h4mäl
+hm2e
+h3me.
+h3med
+hme1e4
+hmeer4s
+h3mein
+h3meist
+h3meld
+hme3le
+h3men
+hmen2s
+hme2ra
+h3mex
+hmi2e
+h3mil
+h3mind
+h3mini
+h3minz
+h3mirr
+h2mo
+h3mop
+h3mot
+h3m2ö
+h4möl
+hm3p2
+hm2s1p
+h2mu
+h3mul
+h3musi
+2hn
+h2na
+h3nag
+h3nam
+h4nar
+h4natt
+h3nau.
+hn1äh
+hn3d4
+hn2e
+hne3b
+hne2e3
+h2n3ef
+hn3eig
+hn3ein
+h2nel
+hne4n1
+hn4eng
+hne4pf
+h3ner
+hner4de
+hner3ei
+h4n3e2ro
+h4n3ersa
+hn4es
+hn3ex
+hn3f4
+hnflei4
+hnhof8stra8s
+h2nic
+h2nid
+h2nie
+hn1im
+h2nip
+hnk4
+h2nor
+hn3sa
+hn3s2p
+hns2t
+hnsuch4
+hntra4
+hnts2
+h2nul
+h2n1unf
+hn3z2
+ho4ar
+ho3bern
+ho2bl
+ho2c
+hoch3
+hoche2
+hocker4
+hock3t
+4hocy
+2hod
+2ho2e
+hoe3n
+ho4f1a4
+ho2fä
+ho2feu
+hof3f4a
+ho2f3l
+ho2f1o
+ho2f3r
+ho2fu
+2hoi
+ho2l1a
+hol3ar
+4holdy
+3hole
+ho2l1ei
+hol3g4
+hol3k
+holl2
+ho2l1op
+holt4
+2holy
+h3olym
+3holz
+hol6zene
+hom2e
+ho2me.
+ho2mec
+ho2med
+h2on
+4hon.
+hond4
+4hone
+hon2er
+4hong
+4honh
+4honk
+4hons
+4hony
+ho1on
+hoo2r
+2hope
+ho1ra
+ho2rak
+h1o2r2an
+ho2rar
+ho2rau
+h1or3d
+2hore
+ho4rens
+ho3ret
+2h1org
+ho2rop
+hor3ta
+hor4ter
+hort3s
+h1ortu
+hos3a
+ho3se2
+ho4sei
+ho3sl
+ho4sla
+4hosö
+ho2str
+ho4ßene
+2hot.
+ho3th
+4hotr
+2hot1s2
+2ho2w1
+h1o2x
+ho1y2
+4hoz
+hô1
+1h2ö
+2hö.
+hö2c
+h4öh
+5höhe
+hö4l
+hö4s
+hös1c
+hös3se
+h3öst
+2h3p2
+h1q
+4hr
+hra2b
+hr3ac
+hr3ad
+hr1a2g
+h1r4ah
+h1rai
+h1rane
+hr3ap
+hr3as3s
+h3rat
+h3räu
+hrb4
+hr1c
+hr3d
+h2rec
+h3r2ech
+h3red
+h3ref
+hr1eh
+h4rei.
+hrei4ba
+hrei4br
+h3reic
+h3reif
+h4r3eig
+hr4eini
+h4reinl
+h4reins
+hrei3th
+hreli1
+h3rep
+hrer6geb
+hr2erk
+h4rerla
+h6rer6leb
+hr2erm
+hrer4sa
+hrer5st
+hrer6tüc
+hr2erw
+hr2erz
+h3re2s1
+hres5s2
+hrest2
+hre4t
+h2r1eta
+h2r1eu
+h2rev
+h3rez
+hrg2
+hrga4
+hrgu4
+h2ri
+h3ric
+h4rick
+hri4e
+h3riesl
+h3rin
+hr1int
+h4rist
+hrk4
+hr3l
+hrm2
+h3rog
+h3roh
+h1ro2l
+h4romat
+h4rome
+h4romi
+h4romo
+h4ron
+h1ropa
+hro4r
+h3rou
+h3rö2s
+hr2s1ac
+hr4s3and
+hr3sch
+hr2sen
+hr2s1er
+hr2set
+hr4sh
+hr2sin
+hrs3k
+hrs3l
+hr2s1of
+hr3spa
+hrst2
+hr4stec
+hr6stele
+hr2su
+hr2tab
+hr2tan
+hr2te2l
+hr2th
+hr2top
+hrt3ric
+hrt2sa
+hrt2se
+hrt4sin
+hrt2sp
+hrt4ste
+h3ruh
+hr1ums
+h3rut
+h3rü
+h4rüb
+h4ry
+hrz2
+4h1s
+h4s3acht
+h2sa2d
+h2s1alk
+h2sall
+h4samt
+h2san
+h2s1as
+h2sath
+h2saud
+h2s3aur
+h2saut
+h2säh
+h2säug
+h3sc
+h4schan
+hs4cr
+h2s3ec
+hse2e
+h4s1ehr
+h2s1eie
+h4seind
+h6seinst
+hsela2
+h3sele
+hse4lin
+hse4mis
+h4s3endw
+h2s1erf
+h2s1erg
+h2serh
+h2s1erk
+h2s1erl
+hs1ern
+hs4erne
+h2serö
+h2s1erw
+h2serz
+h2seth
+h2sex
+h3s2ext
+hsha2k
+h2s1i2d
+hs2im
+h2s3ing
+h3s4inni
+h4s1ita
+hs2kal
+h3skand
+hs1of
+h2sofe
+h2sop
+hs1org
+h2spac
+h4s3pani
+h2s1par
+h2s1pat
+h3spec
+h3spei
+h2sper
+h2sph
+h2spo
+h3spoi
+h2sprä
+h2spro
+hss2
+h2staf
+hst3alt
+hst2an
+h2stau
+h2stäl
+h2stäu
+h4stea
+h4stele
+h4sterm
+hs1tie
+h2stin
+h2stit
+h2s1tol
+h2s1tor
+h3stö
+hst3ran
+h4s3treu
+hstro2
+h2stu
+h3stun
+h3stü
+h2s1u
+hs2ung
+h3sy
+4h1t
+ht1a
+h2ta2d
+ht2ag
+ht4akt.
+ht4akte
+h2tall
+h2talo
+h2talt
+hta2m
+h2ta2n
+ht3ane
+h3tank
+h3tanz
+h2tap
+h2ta2r
+ht3arr
+ht2as
+h2t3asi
+h2tasy
+h2t3a2t
+h3tat.
+h3ta3te
+h2tau
+h3taug
+h4t3ax
+ht1ä
+h2tär
+h3te.
+ht3e4ber
+ht1ec
+hte3cha
+h2t1e2d
+ht1eff
+ht1e2he
+h2teif
+h2t1eig
+h4t3eilz
+h2t1eim
+ht1ein
+h2t1eis
+h2t1eke
+ht3elas
+hte6l5ei.
+h4telek
+h4t3elfe
+h4t3elit
+hte4m
+h2t1emi
+h2temp
+h3ten.
+ht3engl
+ht3enta
+h4tentf
+hter6de.
+hterer6s
+ht3erfü
+h6terfül
+h6tergeb
+ht3ergr
+hter6gri
+ht1erh
+hter6häl
+hter8höhu
+h6terleb
+h6t5erleu
+h6terneu
+ht5erspa
+hter8spar
+ht3erst
+h6tersta
+ht3erwä
+ht3erze
+h2t1ese
+h2t1ess
+h2t1e2th
+h2t1eu
+h3teum
+h3teun
+h4textr
+h2t3h2
+h4thei
+h3thera
+h3thes
+ht4heu
+h4tho
+h2ti2d
+h3tig
+h2t1im
+ht1i6n3
+h2t3ine
+h2tins
+h2tisr
+htni2
+hto2
+h2t1ob
+htod1
+h2t1of
+h2t3oly
+h2tope
+ht1or
+h2tord
+ht3rak
+h3tran
+ht3rand
+h2t3ras
+ht3rat
+ht6rates
+ht3rau
+h4traub
+ht6raume
+ht3rec
+h3treck
+ht3rei
+h2trek
+h2t3res
+ht4ri
+ht5ric
+h4t5rieg
+h2t5rin
+h3trit
+h2t3rol
+h2t3ros
+h2t3roß
+ht3röm
+ht3ru
+h2t3rü
+ht2sah
+ht2sal
+ht4s3a4n
+ht2scr
+ht4sein
+ht2sel
+ht4s3end
+ht4seng
+htse2r1
+hts3eri
+htsha2
+ht3s4hak
+hts3k
+ht3skal
+hts1o
+hts3tät
+ht4s3tem
+hts2ti
+ht4s3tur
+ht4s3tür
+htt4
+htti2
+htu2e
+h2t1urs
+ht3z2
+hu2a
+hu2b1a
+hu2bei
+hu4bel
+hu2b1en2
+hu2bi
+hu2b3l
+hu4b5r
+hu2bu
+hu2fa
+hu2h3a
+hu2h1i
+h1uhr
+h1uhu
+hu2kä
+hu2k1i
+huk3t2
+hu2l3a2
+hu2lä
+hule2
+hu2l1eb
+hu2l1ei
+hu2lem
+hu4l3eng
+hu4lent
+hu2l1er
+hu2let
+hu2lid
+hu2l3in
+hul3l2
+hu2lo
+hu2lö
+hul3s
+hu3m2a
+h1umh
+2h1ums
+hu2n
+h1una
+h2und
+hun3d2e
+hunde3i
+2hunf
+hung2
+hun3ge
+h1uni
+h1unm
+2hunt
+h1ups
+2hur
+hur3g2
+hur2th
+hu3sa
+hus3h
+hu2so
+hus2s3a
+hus3sen
+husser4
+hus2s1o
+hus2sp
+hus4st
+hu2ß1
+hu2tab
+hu2ti
+hu2t1o4
+hu2t3r
+hut2t
+hut4zen
+hut4z3er
+hut2zu
+h2ü
+hübe4
+h3über
+h4übs
+h3übu
+hüf2
+hühne4
+2h1v
+hvil4
+2hw2
+h2wall
+hwe1c
+h1weib
+h1weih
+hwein6sa
+hweis4s
+h2wirr
+hyle4
+hyl4l
+hy2lor
+3hym
+h1yo
+3hyp
+hy2pe.
+2hy2t
+2h1z
+hz2a
+h3z2o
+hzug4
+h3z2w
+i1a
+i2aa
+i2ab
+iab4l
+i2ache
+i3ad.
+ia3do
+i2af
+iaf4l
+i2ag
+i4ago
+i2a1h2
+i2aj
+ia2kei
+ia2kr
+i2aku
+i3al.
+i3a2l1a2
+ial3ar
+ial3as
+ia2lä
+i3al3b4
+i3alc
+i3al3d4
+i3a2leb
+i3alef
+i3alei
+ia3lek
+i3alel
+i3aleng
+i3alent
+i3alerb
+i3alerf
+i3alerh
+i3a4lerm
+i3a2l1et
+i3alex
+i3alf
+i3alg
+i3a2lia
+i3alim
+i3a2lin
+i3alj
+i3alk
+i5al3l
+ial4ler
+iall2i
+i3alm
+i3aln
+ia2lon
+ia2l1o2r
+ial3p
+i3alr
+i3al3s
+i3al3t4
+ia2l3u2
+i3alv
+i3al3z2
+i2am
+i3am.
+i3amp
+iampe4
+i3an.
+ian2a
+ia2nal
+ian3alt
+ia2nau
+i3and2
+ia2n1e2b
+ian2er
+i3anl
+i3ans
+ian2s1p
+i3ant
+i3anw
+i3anz
+ia1o
+i2ap
+ia3pf
+i2a1q
+i3ar.
+i2a2ra
+i4ari
+i3as.
+ia3sh
+i2asi
+ia1s2p
+ias5s
+iast4
+i3at.
+i4ate
+i3at2h
+i4athe
+1iatr
+i3ats
+i3au
+ia3un
+iau2s1
+i2av
+2iä
+i1ä2m
+i1äp
+i1är.
+i1ärs
+i1ät
+i3ä4tem
+iä2ti
+iät3s2
+2i1b
+ib1art
+i2b1auf
+i2b1aus
+i2baut
+ib3be
+ib2bli
+i2b1eig
+i2b1eis
+ibe4n1
+i2b1ep
+i6ber6geb
+ibe1ro
+i2bim
+i2b1in
+i2blad
+i2bleu
+i3blu
+ib2o
+i2bö
+i2b3rau
+i2b3ren
+ib3ric
+i2b3roc
+ib2ser
+ib4ste
+ib2un
+i2b3unk
+i2b3unt
+ibus1c
+ibus3s
+2ic
+i3ca
+ic1c
+ich1a
+ich6art.
+ich1ä
+i1che
+ich1ei
+ich2er
+icherin5
+ichermas8
+ichgro3
+i1chi
+ich1l
+ich3le
+ich3li
+i3ch4lo
+ich5m
+ichmas4
+ich3n
+i1cho
+ich3ort
+i2ch3r
+ich6sele
+ichsen3
+ich2s1i
+ich6stie
+ich4tab
+ich4tan
+ich4tin
+ich2tr
+i1chu
+ich1w
+i1ci
+ic1in
+ickt2
+i1cl
+ic3la
+i5cu
+i1d
+id2ab4
+i3d2ac
+id1a2n
+i3d2ans
+i3dat
+id1au
+id2ax
+idä1
+idbu4
+i2dea
+1idee
+2idel
+idel4ä
+i4demu
+ide4n1o
+iden4se
+ide2on
+i3der
+4ider.
+iderin8nu
+ide1rö
+ider6reg
+ide3so
+ides2p
+2idia
+1i2dio
+idni3
+id2o
+i2dol
+2idoo
+i2dö
+2i2dr
+i3dsc
+id2set
+id2s1p
+idt4
+2idu
+1i2dy
+ie3a2
+ie2bä
+ie2bl
+ie2b3re
+ie2bri
+ie4b3rü
+ieb4sto
+ie1c
+ie2cho
+iech3t
+ie2d3an
+ie3de
+ie2dr
+ie1e2
+ie2f1an
+ie2fau
+ie2fäh
+ief1ei
+iefe2m
+ief3f4
+ief2i
+ie2f3l
+ie4fonk
+ief1r
+ie2fro
+ie2gl
+ie4g5li
+ie3g4n
+ieg3r
+ieg4ra
+ie2gre
+ieg2s
+ieg4s3c
+ieg4se
+ieg4s1t
+ie2h1in
+ieh3r4
+i1ei
+ie1ind
+i2e2l1a
+iel3d4
+i2ele
+ie2l1e2b
+iel1ec
+iel3eid
+ie2lek
+i4elen
+ie4lene
+ie4leng
+ieler4e
+ieler6fi
+ieler8geb
+ieler6ke
+ieler6la
+ieler8lebn
+iel4erw
+ieles4
+ielf4
+ieli2d
+i1ell
+ie2lo4b
+ie4lor
+i2els2
+iel3sz
+ielt2
+iel3ta
+iem2e
+2i1en
+i3en.
+i3ena
+ien1a2g
+ien2am
+ie4nas
+i3enä
+i2ene
+ien1eb
+i3enec
+i3e2nek
+iener6fo
+ien3er4g
+iener6la
+i3enex
+i3enf
+i3eng4
+ienge4f
+ienge4z
+i3enh
+ie2nim
+ie4n3in
+i3enj
+i3enk
+i3enla
+i3enle
+i3enm
+ienma3s4
+i3enn
+i3e2no
+i3enö
+i3enp
+i3enr
+i3ens.
+i3ensa
+i3ensc
+i3ens2e
+ien3s2k
+i3ens2p
+ien6st5er
+ien6stop
+iens4tr
+ienst5rä
+i3en3sz
+ien4tar
+i3enth
+i3enty
+i3env
+i3enw
+i3enz
+ie1o4
+ier3a2
+ie2rad
+ie2rap
+i2ere
+ie4reck
+ie4r3eis
+ie3r2er
+ierer3k
+ie4r3erz
+ie2ret
+ierf4
+ierg4
+i1ergi
+ierk4
+ierken4
+ierma6ss
+i1ern
+i3ern.
+i2erni
+ie1ro
+ie2rö
+ier4re.
+ier4s3eh
+ier3sei
+ier3sta
+ier3te
+ier3z2
+ie3s2
+ie4san
+i2esc
+i2ese
+ie4sh
+ie4s3k
+ie4spu
+iesser6g
+iess3ti
+iest6e
+ie4stin
+ießer4g
+iet1a
+ie2ta2g
+ie2tan
+ie2tap
+ie2tat
+ie2tau
+ie4t3ent
+ie4t3erh
+ie4t3ert
+ie4tha
+i4ethe
+iet3her
+ie2t3ho
+ie2thy
+ie2t1o4b
+ie2t1ö2s
+ie2t3ri
+ie2t3ru
+iet2se
+i1ett
+iet3zw
+ieu2e
+i2e1un
+ie2w1u
+i1e2x
+2if
+if1ab
+if1ar
+i2f3arm
+if4at
+i2f1au
+if1än
+i2fec
+i2f1ef
+if1ein
+if2e4n
+i2f1erg
+if1erh
+if2fa
+iffe4s
+if6feste
+if2f3l
+if4form
+if2fro
+iff2s
+iff4ste
+if3l
+if1lac
+i1f4lä
+iflo4
+if4los
+i1flü
+if3r
+i1fre
+if4rev
+ifrü4
+if3sa
+if4t3a
+if2ted
+if2t3ef
+if2t1ei
+if2te2l
+if2tep
+if4terk
+ifte4s
+if4t3esc
+if2t1op
+ift1r
+if2tra
+if2t3ri
+if2tro
+ift1sp
+ifts2t
+ift3sz
+if2tur
+i1fy
+2i1g
+iga1i
+i2garb
+ig1art
+iga3s
+i2g3att
+igd4
+i6gebrau
+i4gefar
+ig1ein
+ige4na
+ige6nene
+ige4nid
+igen5s
+ige2ra
+igerma3
+ig5erwer
+ig1erz
+iger4ze
+i2g1ess
+i2gim
+i2gl
+i4glag
+i4g3lim
+ig4na
+i4gnä
+i3g4neu
+ig4no
+i3g2o
+igo1p
+ig3rad
+ig3re
+ig4ren
+igro3
+i2grou
+ig3sa
+ig4sal
+ig3sä
+ig4schr
+ig1s2o
+ig1sp
+ig2spa
+ig4sti
+ig2s1to
+ig2stö
+ig6stra6s
+ig4stur
+2i1h
+i2har
+i5hea
+ihe1e
+ih1elt
+ihe4n
+ihe1u
+ih3m
+ih3n
+ih3r
+ih2s
+ih3sp
+ih3sti
+ih1um.
+ih1w
+ii2
+ii3a4
+i1ie
+i3ig
+ii3h
+i1im
+i3in
+i1i4s
+i2is.
+ii3t
+i1it.
+i1j
+1i2js
+2i1k
+ika2ge
+ik1ak
+ikaken3
+i2kakt
+ik3amt
+i4k1ang
+i6kantei
+ikanten8n
+ik1art
+ik3att
+i2k1au
+i3kaz
+ik1äh
+i2k1än
+i2kär
+4ike
+i2keb
+ik1ebe
+i2k1ed
+i2kef
+i2k1ei
+ike4l1
+ike2n1
+i2k1ens
+ike2ra
+i2k1e4r2e
+i2k1er2f
+i5kerfam
+i2k1er2h
+i2ker2l
+i2kero
+i2ke3ru
+i2k1eta
+i3ki.
+i3kie
+ik1in
+i2kins
+i2k3l
+ik4län
+i3k4leri
+i3k4let
+ik4lim
+i3klu
+i2kne
+i2k1off
+iko1p2
+ik1o4ri
+ikot3t
+i2köl
+ik3rä
+i2kres
+ik4ris
+i2krö
+ik3sa
+ik3s2z
+ik3ta
+ikt3erk
+ik4t3esk
+ik2t3re
+ikt2u
+i2k1uh
+i2kup
+i3kus
+i2kü
+i1la
+i2lab
+ila2br
+i4labs
+i2l1ac
+i2l1ak
+il3a2ma
+il1anm
+il2anz
+ilan6zer
+i2larb
+il1asp
+i2l1au
+i3laub
+i3l4aufb
+ilau2s1
+i1lä1
+i2lär
+2ilb
+il2c
+il5chen
+il2da
+ild3ebe
+il4d3en4t
+il3der
+ild4erp
+ildi2
+ild1o
+il2dor
+il2dr
+ildwe4
+2ile
+il1ec
+ileid4
+il1ein
+il1el
+i2lemb
+il1ent
+i4lentl
+i4lents
+i2l1erd
+iler4ei
+i6lereig
+il1erf
+iler4fo
+i2ler2g
+i2l1er2h
+i4lerkl
+il1err
+i4lerri
+il2erz
+ile4th
+il1ex
+ilf2
+il2f3l
+il2f3re
+ilf4s1
+il2gl
+2ilh
+2ili
+ili3e4n3
+iliga2
+ili4g3ab
+ilik4
+i2l1ind
+i4l3init
+il1ins
+i2l1ip
+i3lip.
+i3lips
+il2lad
+ill2an
+ill4ant
+il2lä2
+il2leg
+ille4ge
+il4lenn
+il3l2er
+1illu
+il2mak
+il2m1ap
+il2mau
+ilm1ei
+il2min
+il2mor
+2ilo
+il1ob
+il2of
+il2oh
+il4on
+il2op
+i2l1or
+i3lou
+il1ox
+il4sein
+ils2to
+ilt2
+il3t4h
+i1lu
+i2lum
+il1ur
+i3lus
+ilü4
+2ilv4
+il2zar
+il2zau
+ilz1er
+il2zwa
+imad2
+ima3i
+im2al
+i2m3anh
+i2mans
+i2marc
+im3aren
+i2m1arm
+i2m1art
+im4at
+imat5sc
+ima4tur
+i2maus
+i2maut
+i2meg
+im1ein
+i2mej
+i2mek
+i2mele
+i2melf
+im2en
+i2m1erf
+i2m1erl
+i2m1erz
+i4me3sh
+imes3s
+i2meti
+i2mew
+i2m1i2d
+i2mim
+i2m1ind
+i2minf
+i2m1ins
+3immatr
+immen1
+imm3ent
+im6menth
+im2mit
+1immo
+im4mo2d
+im2mö
+imni2
+2imo
+i2m1ob
+i2mo2p
+i2mö
+1imp
+imp2fa
+im3pfo
+imp2s
+im3pse
+2imt
+imt2e
+im3t2i
+imts2
+imtu2
+2imu
+im2um
+im1urk
+2in.
+in3ab
+ina2be
+in1ac
+in1ad
+i4n3ae
+i3nald
+inaler4
+ina6lere
+in2alp
+in1am
+in2an
+in3ana
+in3ann
+i2narb
+i2narm
+in2ars
+in3att
+i2n3au2
+inaus1
+2inä
+i2n1äh
+in2är
+in1äs
+2ind.
+inda2
+ind2ac
+in2dal
+in2dan
+2indä
+in3de
+2inde.
+ind4eid
+2inden
+ind5erke
+inde3sp
+indes4t
+1index
+ind2i
+1indik
+in3dö
+2indr
+ind4ri
+ind3se
+1indus
+in3d2ü
+2ine
+i4ne4ben
+in1ec
+i3nee
+i2neff
+in4elen
+in2em
+ine3nä
+i2neng
+i4n3enzy
+i5ner.
+i4n3erbi
+in2erh
+in3erle
+i6ner6leb
+iner4lö
+i4n3er4tr
+i3nes
+in2et
+in1eu
+ine3un
+ine2x
+in3f4
+1infiz
+1info
+2ing
+4inga
+in2g1af
+in2g1a2g
+in2g1al
+in2gam
+ing1ar
+in2g3at
+3ingeni
+in3g2er
+in4g3erw
+in2gl
+in3gla
+in3glä
+ingmas4
+in2gor
+ing4sam
+ings6por
+ing4s3pr
+1inhab
+2inhar
+2inhau
+2inhe
+in2i3d
+2inie
+2inig
+ini3k4r
+2inis
+ini3se
+init2
+i3nitz
+3inkarn
+1inkas
+in4k3ent
+ink4er
+inks1t
+ink4ste
+in3k2ü
+inma4le
+4inn.
+inne4n
+in4ner4m
+in2neu
+in4ni2v
+4innl
+in2nor
+1innta
+2ino
+in1od
+in3ols
+in1or
+inost2
+i3no3t
+i2n1ou
+i1nö
+in1ö2d
+2inri
+ins2am
+in6samt.
+insch2
+2inse.
+in2seb
+2insed
+2insen
+ins2i
+2insk
+in4sm
+3instal
+in4s3tät
+2inst2e
+3instit
+4instra
+in4strü
+1insuf
+ins3umz
+in2sur
+in3s2z
+2inta
+in3te
+2inte.
+1integ
+2inth
+inthi1
+in3ti
+int2o
+2intö
+2in3t4r
+4inträ
+3intrig
+int3s
+i2n1u
+i4nuh
+in3unz
+inu3t
+4inverm
+invil4
+i1ny2
+in3z2e
+inz2i
+inz2u
+in3zwä
+i1ñ
+2i1o
+ioa4
+io1c
+io2d
+io3du
+io3e4
+i2of
+iof4l
+i2oh
+io3k6r
+i3ol.
+i3om.
+io3me
+i3oms
+ion2
+i3on.
+ion3an
+io2n3au
+ion3d2
+io4nee
+i3onn
+io2nor
+i3on4s1
+ions3a
+ions3el
+i2ony
+i2oo
+i2o1p
+i3o4pf
+i3opt
+i2or
+i3or.
+i3orc
+ior2e
+iore4n
+io1r2h
+i3orp
+i3ors
+i3ort
+i3os.
+io3sh
+io5ska
+i2ost
+ios2u
+i2o3sz
+io3t
+i3ot.
+iot4r
+i3ots
+i2ou
+i2ov
+i3o2x
+i3oz.
+i1ö2k
+i1ön
+i1ös.
+i1ö4st
+2ip.
+i1pa
+ip2an
+i1pe
+i3per
+2ipf2
+i3pfan
+iph2
+2i1pi
+ipi3el
+ipi3en
+i2poi
+ip2pan
+ip3pe
+ipp1f
+ip4pl
+i1pr
+2ips
+ip2sa
+ip2sei
+ip2sp
+ip2sta
+ip2stü
+ipt2a
+ipt2u
+2ipu
+2i1q
+i1r4a
+i3ra.
+2i3rad
+i3ras
+irat2
+i1rä
+ir1äh
+ir2bl
+ir1c
+ir2ch1o
+ir4e
+i3ree
+2irek
+ire4na
+i3ré
+irg2
+irg4s
+ir2he
+ir2i
+iri3a
+2i5rig
+2irk
+irke4n
+ir4kene
+ir2k3l
+irli4n
+ir2m1a2g
+ir2mak
+ir2mau
+ir2mä
+ir2m1ei
+irme4n1
+ir2m1o2
+irm4th
+ir2mum
+ir4munt
+2irn
+ir2n3a
+ir4nat
+ir2no
+i3ro
+1iron
+i1rö
+irpla2
+ir2rei
+irre4l
+ir4reli
+ir2rh
+irs2
+ir4schl
+ir4schm
+ir4sch3r
+ir4sch3w
+ir3se3
+ir3sh
+irt2s1t
+2iru
+ir1u2m
+iru2s1
+i3r2ü
+i1s
+i3sac
+i4samp
+i4s1amt
+is2ap
+isa2r
+is3are
+i3sat
+i2sau
+is3auf
+isau2g
+i2säh
+i2s1än
+2isb
+i2sca
+i2sce
+i4schar
+i3s2che
+i4schef
+i4sch3e4h
+isch3ei
+i6schemi
+i6scher6z
+i4schin
+i5sching
+i2schl
+i2schm
+isch3ma
+i4schna
+i4sch3re
+isch3ru
+i6schüb
+i4schwa
+i6schwir
+i4schwo
+isch3wu
+i4schwü
+i2scr
+2ise
+ise3a
+ise1e
+iseh2a
+ise3hi
+is4eind
+i4seint
+is2el
+ise3li
+i6sel6ter
+ise2n1
+ise4n3a2
+is2end
+isen3s
+ise4r3ei
+is1erg
+i2serh
+i2s1erm
+i2s1es2s
+is2et
+i4s3etat
+i3s2eu
+2isf
+4ish
+isi2a
+i2s1i2d
+i3sin3g4
+i4ski
+i4sku
+is3la
+3islam
+2isma
+2ismi
+i2s1of
+1i2sol
+3isom
+is2o2n3
+isonen4
+iso6nend
+i2sop
+is1org
+is1ort
+3i2sot
+2isp
+is1pa
+i2spar
+is1pe
+is1pic
+is2por
+i2spro
+is3sa
+is4s1ac
+is4sau
+is3sc
+iss3che
+is3senk
+iss3erf
+issermas8
+is3so
+is3sp
+iss2po
+is2st
+is3sta
+is4ste
+is3strä
+is3stu
+is2su
+i2stab
+ist3ac
+is4tal
+i4stam
+ist2an
+i4s3tang
+ist4e
+i4stea
+i4s1tec
+iste4n
+ist2id
+ist6o
+ist4ra
+is3tras3
+ist3rei
+i3stro
+i2stur
+is1tüm
+i3suf
+isum3p
+i2sü
+i1ß
+iß1er4s
+i1ta
+it1ab.
+it1abs
+i3tag
+ital3a
+ital5l
+it1alt
+it1a2m
+it1an
+ita3ne
+it3anr
+ita2po
+it1app
+it1a2re
+it1art
+i3tat
+it1au
+i3tauc
+i2tauf
+i2taut
+4i1tä
+it1änd
+i2t1äs
+ität2
+i1te
+it1eff
+i2t1ei
+it2eic
+i4teig
+i4tein
+i4teis
+2itel
+ite4l1a
+i4telek
+i2temp
+ite2n
+i3ten.
+i2tepo
+i6tereig
+it2erö
+i8t7ersche
+i2t1esk
+i2t1ex
+i3text
+i3thr
+i1ti
+i3tic
+i2tid
+i3tig
+1itii
+iti3ker
+it1in1
+i3tis
+i4tiso
+iti3sp
+i4tiss
+i3tiv
+iti2v5a
+itmen2
+4i1to
+i3to.
+it1ob
+ito4be
+i3toc
+i2t1of
+it1o2p
+it2os
+i1tö
+2i1tr
+it3raf
+it3ras
+it3rau
+it3räu
+it3re
+i2tref
+it4ret
+it3rob
+it3rom
+i2t3run
+it2sa
+its1a2g
+it2s1e
+it4se2h
+its3e2r1
+its1o
+it4stec
+it4s3tem
+it4sten
+it4s3tes
+itstra6s
+2itt
+it2teb
+it4temp
+itt3hä
+it2t1o4b
+it2top
+it2tri
+itt3rol
+itt6schi
+itt4seh
+itt4sei
+itt4sti
+i1tu
+it1uh
+it1ums
+it2ung
+i2tuns
+ituran4
+it1urg
+itut4
+i1tü
+2itz
+it2zec
+itz2er
+itz3erg
+it6zergr
+it4z3erl
+it2z1w
+2i3u2
+ium1
+iuma4
+ium2se
+iun2
+iungs3
+ius1t
+i1ü4
+2i1v
+i2v1ad
+i2v1ak
+i2v1am
+iv1an
+i2v1ä
+i2veb
+i2v1ef
+iv1ei
+iv1elt
+ive4n
+iv1ene
+i2v1ent
+ive3re
+iver8folge
+iv1erh
+iver4kl
+iv1erl
+iver3s
+i2v1e4x
+iv1ins
+i3vol
+i2vr
+i2vun
+i2v1ur
+2i1w
+2i1x
+i2xa
+ix2em
+ixt2
+4i1z
+i2z1ag
+i2zan
+i2z1ap
+i3z2as
+iz1au
+i2zaus
+i2zän
+izei3c
+izeit3s4
+i2zele
+ize2n
+i4zener
+iz1erg
+i2z1erl
+iz1ir
+i2zo2f
+i2zö
+i2zuna
+i2z1w
+i3z2wi
+izz4a
+í1l
+j2a
+jab4
+jah4r3ei
+jahr4s
+ja3l2a
+ja3ne
+jani1
+jani3t4
+ja5ru
+jas2o
+jat2
+je2a
+jean2s
+je2g
+jek2t3a
+jek4ter
+jek4tin
+jekt3o2
+jektor4
+jek2t3r
+je2p
+je2t1a
+je4t3h
+je2tin
+je2tor
+je2t3r
+jet3t
+je2t1u2
+ji2a
+ji2v
+joa3
+jo2b1
+job3r
+jo4da
+jo2i
+jong2
+jo1r2a
+jord2
+jo2sc
+3jou
+jou4l
+j2u
+ju2bl
+jude2
+jugen6
+jugend3
+ju1i
+ju2k
+ju3l2
+jung5s2
+ju3ni
+ju3r4a
+jur2o
+ju3t2e1
+2j1v
+1ka
+3ka.
+ka3ar
+2k1abb
+kab2bl
+2kabd
+2k1a2ben
+2kabf
+2kabg
+2kabh
+2kabn
+2k3a4bo
+2k1abs
+2k1abt
+2kabw
+2kabz
+ka1c
+kade2r
+2k1adm
+2k3a2dr
+3kadu
+2kadv
+ka1f4l
+ka1fr
+kaf3t2
+kag2
+2k1age
+3kah
+ka1ho
+ka1in
+kaken2
+ka1k4l
+2k1akt.
+4kala.
+kala3b4
+ka2lan
+kal3d
+ka2leb
+ka4l1eh
+ka4lens
+kal3eri
+3k2alk
+kal2k1a
+kal4kan
+kal2k3l
+kal3l
+kall2i
+kallö3
+2k1allt
+ka2lop
+ka2l1os
+kals2
+kal4tex
+kal4th
+ka2lu
+k2amt
+3kana
+kan4al
+ka4n1a4s
+ka2nau
+3kanä
+2kanb
+kan3d4
+2kanda
+2kandä
+kan2e
+2kanf
+3kani
+4kanim
+kank4
+2kanl
+2kanom
+2k1anor
+2k1ans
+k2ans.
+kan4tar
+6k5antenn
+2k1anth
+ka3nu
+4kanw
+2k1anzu
+2kanzü
+ka2o1
+3kara
+2karbe
+2karc
+k2ard
+kar3d2a
+k1area
+k2arg
+ka3r2i
+kari3es
+k2ark
+2k1arm
+kar2pf
+k2ars
+k2ar3ta
+k2arte
+k1arti
+4kartik
+karu2
+k2arw
+3k2asc
+kasi1
+kas2o
+ka2sp
+kas2t
+2k1ast.
+ka3sta
+ka4ster
+3kasu
+ka3sz
+ka2tan
+3kateg
+ka3t2h
+ka2t3r
+kat3se
+2katt4
+kau4fer
+kau2f1o
+kauf4s3a
+kauf4sp
+kauf8s7tem
+k2aus.
+2kauss
+2kausw
+kau3t2
+2kauto
+2kaz
+1kä
+k1ä2mi
+kär2
+2k1ärg
+kä2s5c
+käse3
+kä3th
+4k3b4
+kbe1
+kbo4n
+kby2
+2k3c
+2k3d4
+ke2ben
+2k1ec
+ke2di
+k1ef
+2keff
+kefi4
+kege2
+ke2gl
+ke2he.
+ke2hen
+kehr2s
+kehrs3o
+2k1eic
+2k1eig
+kei2li
+2k1ein
+ke1in2d
+kein4e
+k1eis
+2keise
+keit2s
+ke2la
+kel1ac
+ke3lade
+ke3lag
+ke4l3am
+kel1au
+ke2lä
+kel3b
+keld4
+kel3eis
+2ke2lek
+ke2l1en
+ke2l1er
+kel3la
+kel7l4e
+kell2i
+ke2l1o2
+ke2lö
+kel3sk
+k4elt
+ke2mi
+2k1emp
+k2en.
+ken1a
+ken3au
+kenbu5s4
+ken3dr
+ke2n1e2b
+kenen1
+ke4nene
+ke4nens
+kener4n
+4ken4gag
+k5en6gel.
+ke2nim
+ken3in
+4kenlad
+4kenläd
+kenmas8sen
+kenn2a
+kenn2e
+ke2no
+4kensem
+ken3s2i
+ken3s2k
+ken5s4te
+ken3sz
+k3en4te.
+ken6ten.
+4kentf
+2k1entg
+ken3th
+2k1entl
+2k1ents
+2kentw
+2kentz
+ken3z2
+2ke1o2
+2kep
+ke2pl
+k2er.
+ke1ra
+ke2ran
+ke2rau
+ke2r1ä
+ker4ble
+k2erc
+4kerd
+ke2re2b
+ke3reig
+ker3ein
+4kerfah
+k4erfam
+ker2fo
+ker5g
+k3ergeb
+2kergu
+ke6rin6nu
+kerin6st
+kerin4t
+k3erken
+k2erko
+k2erl
+k3er4lau
+k3erleb
+k6erlebe
+ker2na
+ker4nei
+4k3erneu
+ker6n5eur
+k1ero
+ker8oberung.
+ke1rod
+2k3eros
+ker4reg
+k2ers.
+2kersa
+kerz2
+k1erz.
+ker4zeu
+2k1er2zi
+k6es.
+ke2s3a
+k1ese
+ke2sel
+kes2sa
+ke2t1a
+ket2ag
+kete4
+ke4t1eb
+ke4tel
+ke4th
+ket3ha
+ket3s
+ketta4s
+kett3h
+ke2tu
+ke1up
+keu6schl
+2k1e2va
+2k1e2x
+4k3f4
+2k3g2
+kga4s1
+kge3s2
+2k1h4
+kho3m
+k3hu
+ki3a
+ki4ad
+kia2r
+ki1ch
+2ki2de
+ki3dr
+k2ids
+2kidy
+ki2el
+kie4lei
+kiel3o
+2kiern
+kier2s
+kie4sa
+kie2z
+ki1f4l
+ki1f4r
+ki3k4
+2ki3l2a
+2kilä
+ki3lo
+3kin.
+4kindex
+2k1indi
+2k1indu
+2k1inf
+king3s
+2kinh
+k2ini
+kini3k2
+k2inn
+ki3n4o
+kin3s
+2k1inse
+2k1inst
+2k1int
+ki3or
+kio4s
+3kir
+2k1i2so
+kis2p
+kis5s
+kist2
+kiv2
+kive4
+2kiz
+2k3j
+2k1k4
+kkab4
+kl4
+4kl.
+4kla.
+2k1lac
+klan2
+2kland
+klan3du
+k4lar
+k1last
+k1lauf
+k3laug
+2k1läd
+k2lär
+k2le
+4kle.
+kle2br
+k3leg
+2kleh
+k3leit
+k3lem.
+2k3ler
+kle2ra
+2k3leu
+kle3us
+2klic
+k2lien
+k2lif
+2klig
+3k2lim
+k2lin
+k3lin.
+3k4lina
+k4link
+k2lip
+k2lir
+k2lisc
+2klist
+klit2s
+2k3liz
+2k3loc
+klo2i3
+2klok
+3k4lop
+k3lor
+klos2
+2klose
+klo3sse
+klost6
+2klöc
+2klöf
+k2löst
+k4löt
+k1lu
+klu4b
+k2lud
+k2lug
+k2lum
+2klux
+2k1lüc
+2kly
+2k1m2
+4kma
+kma2la
+kmas2
+kma3sse
+k2n2
+2k5nach
+2k3nad
+2knah
+2k5nam
+2k3näp
+k3ne
+k4nec
+kne1e
+2knes
+2knetz
+2k5neu
+2kney
+kni4e
+2k5niv
+kno2bl
+k4nol
+2knorm
+2knov
+k3nu
+2knum
+k6nur
+1ko
+ko5ad
+ko2al
+2k3oas
+kobal2
+2kobj
+kob4s
+2k1o2fe
+kof3f2
+koh4a
+kohl2e
+kohle3i
+koh3lu
+ko3l2a
+ko3le
+kol2k3
+3kom
+4k3omn
+ko4mu
+k2on
+ko2nem
+kon2i
+kon3s4
+kont6e
+ko2nu
+2kop.
+2ko1pe
+kopfa2
+kop4fen
+kop6f5err
+2kops
+ko3pte
+2kopz
+ko3r2a
+kor2ba
+kor2bl
+kor2br
+2k1orc
+korden3
+korder4
+kor6derg
+ko2rel
+2k1org
+ko3ri
+kor3m
+kor4nac
+kor2n3ä
+kor4no2
+2korpi
+k2os
+ko4sk
+ko2s1p
+3kost
+k3osz
+ko2ter
+ko3ti
+kot4r
+kot1s2
+kot4tak
+k1ou
+ko3un
+3kow
+ko2we
+2k1o2x
+1kö
+k2öf
+k1ö4l
+2k1p2
+2k3q
+k2r2
+2k3rad
+2k3rah
+k4ral
+kras3
+kra4ss
+k3rats
+2kraum
+k4raw
+k4raz
+k4räc
+2kräd
+k4rän
+2k3räum
+2k5re.
+2k3reak
+2k3real
+2k3rec
+2kred.
+2k3rede
+2kredn
+2kredu
+2k3ref
+4kreg
+2k3reic
+kre1i2e4
+kreier4
+k3reif
+2k3reih
+2kreim
+krei6sei
+kreli1
+k3ren
+k3res
+2kresu
+k3rev
+2k3rh
+2krib
+2k3ric
+2k3ries
+2krip
+k3risi
+krob4
+k4roch
+4k3roh
+k4roi
+k4rok
+k4ron
+k4rop
+kro4ss
+kro3st
+2krot
+3kroth
+k3rou
+2kröh
+2kruf
+2k3run
+4k1s
+ks3ab
+k3sac
+ksa2k
+k4s1amt
+k2san
+ks3a2r
+k2sau
+k2sav
+k2säh
+ksch4
+ks2chi
+k2s1e2b
+k2s1ec
+ks1ei
+ks2eid
+ks2eif
+k4seind
+ks2end
+k2s1eng
+k2s1ent
+ks1er
+ks2ere
+k2serf
+k2serg
+k2serk
+k2serl
+k2sers
+k2serw
+k2s1e2v
+k2sex
+k2s1i2d
+k2s1in
+k4s1is
+ks3kl
+k4sm
+kso2
+k3s2on
+k2sop
+k2s1or
+k2sö
+ks1pa
+k2spal
+k3s2pat
+k2spä
+k3spe
+ks2pel
+ks2pen
+k2sph
+ks2por
+ks2pul
+ks5s2
+kst2
+k2stal
+k4s3tanz
+kstat4
+ks3tat.
+k3stäl
+ks4tel
+ks1tie
+k4stier
+k2s1tis
+k2stit
+k2s1tor
+k4strop
+k2stuc
+k2stum
+k2s1tur
+k2stüt
+k2s1u
+k3sul
+ks2zen
+4k1t
+kt1abr
+kt1abs
+k2t1ad
+k3tag
+kt1akt
+k3tal
+kt1am
+k2t1an
+kt2and
+k2t1a2r
+kta4re
+kta3ri
+k2t1au
+kt3aug
+ktau2s
+ktä3s
+kt1äu
+kt1ein
+k2t1ela
+kte3li
+kte4n1
+k2t1ent
+k4tentl
+kten3z
+kte1ra
+kt4ere
+k4t3erfo
+kt1erg
+k2t1erh
+k2terö
+kte3ru
+kt1eta
+k2tex
+k2t3h
+k2ti2d
+kti2me
+kt3ing
+kt1ini
+kt3inn
+k2tins
+kt2is
+kti2s1e
+kti2st
+kti4ter
+k2t1of
+k3t4ran
+kt3ras
+k2t3rau
+kt4ro
+ktro3me
+kt3run
+kt3rü
+kt1s
+kt3s4a
+kt3sä
+kt3se
+kts2el
+ktsen1
+kts1o
+kt2sor
+kts2pa
+kt3s2z
+ktt2
+kt1ums
+k2tuns
+kturen4
+kt3z
+ku2al
+ku1c
+kud4r
+3kug
+ku2h
+2k1uhr
+kuh3s
+ku3la
+ku3l2e2
+ku3l2i
+2kulp
+kul2to
+kul2tr
+kum2e
+2kumg
+2k3uml
+kum2s
+k2u3n2a
+kun3da
+kun4s
+kunst3
+2kunt
+2kunw
+2k1up.
+kur2bl
+ku2rei
+kuri2e
+2k1urk
+ku2ro
+kurs1c
+kur2sp
+kur4ste
+kur4str
+2k1urt
+kus3a2r
+ku4schl
+ku2sp
+kus3ses
+kus1ta
+ku2su
+ku2ß
+2kut.
+1kü
+kü1c
+3küne
+3kür
+kür2s
+2k3v
+2k1w
+k3wa
+2k3z2
+kze3l
+3la.
+la3ar
+l1ab
+3l2ab.
+la3b2a
+l2abä
+2labb
+lab2br
+2labd
+2la2ben
+4labf
+4labg
+2labh
+3labil
+la2bit
+2la2b3l
+2labn
+3lab2o
+4labo.
+la3b4ra
+2labs
+la2bus
+2labw
+2labz
+la1ceb
+l2ache
+lacks2
+1lad
+2l1ada
+2ladd
+la3de.
+la3d2i
+2ladj
+2l1adl
+2ladm
+2l1a4dr
+3l2adu
+2laf
+la2fa
+la2f1ei
+laf1r
+laf3t4
+la2fu
+3lafü
+la2ga
+lag3d
+l2ager
+4lagg
+la2gio
+lag3l
+la4g3n
+lago4
+la2gob
+2la1ho
+3lai
+lai4s1t
+lake2
+la2kin
+l2akk
+la1k4l
+la2kro
+lak3t
+2l1al
+3lala.
+la2lar
+3lali
+4lalt
+l2ama
+lami3t
+lam2m1a
+lammen8ge
+1lammf
+2lamn
+la2mor
+l2amp
+l3ampu
+2l1amt
+lamt2s
+la4mun
+la2na
+la3nad
+l1anal
+la3nan
+la4nat
+la4nau
+2la2nä
+3l2and
+lan2da
+lan4dam
+land3au
+lan6d5erw
+lan6d5erz
+lan6d5inn
+lan2d3r
+la2nem
+lan3erd
+laner4f
+2lanf
+lan6g5esc
+lang3s2
+2lanha
+l2anhe
+2lanl
+2l1ann
+l1ano
+la2nof
+2l1anp
+2lans2
+l1ansi
+l4ant.
+2lantw
+2lanw
+lan2z1w
+3lao
+2l1apf
+la2ph
+l1a2po
+lap2pl
+la2r1an
+2larc
+lar1e2b
+la2r1ei
+la2rel
+la4rene
+larf4
+lar3g
+lar3ini
+la2ro
+2l1arom
+l1ar3t
+lart4h
+l3arti
+3laru
+l2as.
+la4sam
+la4sä
+4lasd
+la5seb
+la4sei
+la4s1e2l
+l2asg
+2lash
+la2sin
+la4sis
+2lask
+la2so
+2la2sp
+3lasser
+l2ast
+la2sta
+last3an
+la4steu
+las2to
+la2str
+last3ri
+las3tro
+las3tur
+la2stü
+1la2ß3
+lat2ak
+la3t2e
+la4tel
+la5t4i
+2l3atl
+2latm
+lat2o
+la2tö
+la2t3ra
+lat4ri
+lat6schm
+2lat4ta
+lat4tex
+lat2th
+lat4t3in
+lat2t3r
+latzer4
+1laub.
+lauben6s5
+lau2b3r
+laub4se
+laub4st
+lau4fin
+lau2fo
+lau4fri
+1laug
+lau3gl
+3laun
+4laun.
+la4us
+2l1ausb
+lau6scha
+2lausd
+2lausf
+2lausg
+2lausl
+2lausr
+2lauss
+2lausz
+2lauto
+lau2tr
+la3va
+lave4n
+1law
+lawa4
+l2ay
+lä1c
+2l1ähn
+1länd
+l1äpf
+2läq
+lär4mar
+l1ärme
+2lärz
+lä2s5c
+lä4s3s
+2lät
+2läub
+2läuc
+2läue
+1läuf
+2läug
+2läx
+1là
+4l1b
+l3bac
+l2bant
+lb3a2ri
+lbau1c
+lb1ärm
+lbb4
+l4b3eink
+l4b3eise
+lbe4ral
+lbe3rei
+lberin5
+lbe7s
+l4b1e2ta
+l2b1id
+l2b1ins
+l3b4lat
+l3b4lä
+l2b3led
+l2bli
+l3b4lo
+l3b4lö
+l3b4lu
+l2b1o2ra
+lb3rea
+lb2s2
+lb3sa
+lb3se
+lb3si
+lb3so
+lb3sp
+lbst3ac
+lb4ste
+lbst3ei
+lbst1u
+l2b1uf
+l3bum
+lbu4n
+lbus3s
+lbzei2
+2l1c
+l3ca
+lch2au
+l3che
+l4chei
+l4chent
+lchermas8
+l3chi
+lch3le
+lch3li
+l3chlo
+lch3n
+lch1ob
+lch3r
+lch3s2
+lch3ü
+lch1w
+l3cl
+l3co
+4l1d
+ld3a2b1
+ld2ac
+ld3ack
+l2dad
+l2daf
+lda2g
+l2d1ah
+l2d1ak
+l2d1al
+l2d1a4n
+ld3ane
+lda2r
+l2d3ari
+ld1arm
+ld1ass
+l3dat
+l4d3ato
+l2d1au
+ld3au4s
+l3däm
+ld1är
+ld1ät
+ldbus2
+l3de.
+lde4ben
+l2dein7
+l2deis
+l2d1elf
+l2d1e2mi
+l2d1ems
+lde4na
+lden5erg
+l4dentl
+l3der.
+l4d3erfa
+l6der6geb
+ld1erh
+l4der4he
+l3d2erl
+l6derlas
+l6derlaß
+l3d2ern
+l2d1er2p
+lder4tr
+lde3sa
+lde4sel
+l2d1es2s
+l2dex
+ldi2c
+ld1id
+ld1i4mi
+l2dob
+l2dop
+ldo2r
+l2d1ori
+ld2os
+ld2ö2
+ld3r
+ld4ram
+l2dran
+l2drec
+ld5rie
+ld4ris
+l3d4ru
+l2drüc
+ld3sa
+ldt4
+ld3th
+ldt5s
+ld3tu
+l2d1ul
+l2d1um
+ldy2
+1le
+3le.
+le2ad
+le3ar
+le2as
+3le3ba
+leben4s3
+le2bl
+le2b3re
+2lec
+lech1a
+le2chi
+lech7t6e
+le2er
+le3f2a
+2l1eff
+le2g1ab
+leg1as
+le2gä
+lege1i
+le2gl
+3leg4r
+3leh
+4lehe.
+leh3r2e
+4lehs
+4leht
+lei4ble
+l2eid
+leif1a
+lei4fan
+lei4fei
+leifer6g
+2l1eig
+3leih
+lei3l2
+leim3p
+l2ein.
+leinbu4
+leinbus5
+l2eind
+lein4du
+l4eine
+lei6nerb
+le2inf
+le2ini
+4leink
+4l1einn
+l3einsa
+2leint
+l2einu
+le4is
+leisch5a
+lei8schei
+lei6scho
+lei6sern
+l1eisf
+lei6ss5er
+leis3st
+lei4ßer
+l2eit
+lei2ta
+leit3sk
+leits4t
+3leko
+2lektr
+2lekz
+3l2ela
+le2le
+le3lei
+2lelek
+6leleme
+le3len
+le3les
+2lelf.
+l2eli
+lel3s
+l2em.
+le2m1au
+le2m1ei
+3lemes
+3lemet
+lem1o2
+le2mor
+2lemp
+le2mu
+le4mun
+l4en.
+len1a
+le4na2d
+le4n3an
+le4n3a2t
+2lency
+l1endp
+4lendun
+l4endur
+le2n1ed
+4lenerg
+le4neur
+4leneuv
+len4gag
+len4kau
+len4k3lo
+len4klu
+l1enni
+len6sein
+4len4sem
+len6serk
+len3ska
+len3sz
+2l1entk
+4lentla
+2lentn
+4l3en4tro
+4l3entw
+lent4wä
+5lentwet
+2lentz
+2l1enzy
+leo2f
+le1os
+2lep
+3lepa
+3lepf
+4l1e2pi
+lep4pi
+3lepr
+lep5t
+l2er.
+l2e1ra
+le2rag
+le2rap
+le2ra4s
+le2rau
+le2r1ä
+le2re2b
+ler2ec
+l3ereig
+le4r3ei4m
+le4r3eis
+le2rel
+le4reng
+le4rerg
+lerer5k
+le4rers
+l3erfas
+2l1erfo
+l2erfr
+l2erfü
+l1erg
+l2erga
+l4ergef
+3lergeh
+6lergen.
+l4erger
+l4erges
+3l4ergew
+2lergi
+l2ergl
+l2ergr
+lergro3
+4l3erhol
+lerin4s
+lerk2
+l2erka
+2lerke
+l1erkl
+4lerklä
+l4erkle
+l2erko
+ler3kr
+ler3l
+5l6erlebe
+3l4erlei
+2lermä
+ler4nal
+3l4erne
+ler4nei
+2l1erö
+3l2erra
+ler4ric
+l4ers.
+l1ersa
+ler4sto
+le2rup
+l4erwa
+ler4wer
+2ler2wo
+2l1erz
+ler2zä
+l3erzeu
+ler2zo
+l4es.
+les2am
+les2e
+le3seb
+le3sei
+2l1esel
+le3s4h
+lesi1
+le3sk
+les4ki
+les2ko
+le2spo
+les3se
+les3si
+lest6
+leste3r
+lester6i
+3lesu
+4lesw
+2lesy
+2le2tap
+2le2tat
+le2thi
+let2i
+letsche6
+let2to2
+lett1r
+lett1s2
+le2u
+4leue
+3le3u2f
+l2euk
+2l1eul
+le3unt
+3l2eut
+le2vol
+2lex
+3lexik
+le2xis
+3ley
+4l1f
+l3fah
+lfäs3
+l2f1ec
+lfe1e
+lf3einh
+l2feis
+lf2en
+l4ferei
+lfe4rel
+lf1erl
+l3fi
+l3f4lä
+lf3led
+lf3lo
+l3f4lu
+lf3ram
+lf3res
+lf4ru
+lf4rü
+lf2spe
+lf2s1ti
+lf2su
+lfun2
+lfur1
+2l1g
+l3gas
+lga3t
+lgd4
+lgen2a
+lgeräu3
+l2geti
+l3g2i
+lg2lö
+l3go
+lgoa3
+lg4p
+l3g4ra
+l3g4ro
+lgro3s
+lg2s
+lg4s3t
+2l3h2
+4lhe
+3lhi.
+1li
+l4ia
+li2ad
+li4am.
+lian2g
+li2ast
+3lib4
+libi3
+li1c
+lich4ta
+lich4to
+4lick
+li2cl
+li3d2a
+2l1ido
+li4ds
+liebe4s3
+li1efa
+3liefer
+li1efk
+li3efl
+lie4n1a2
+li3ene
+lie4rei
+lie4s3c
+lie4sta
+lif4fes
+lif2fo
+3lig
+li4g3ers
+lig4n
+lig4ra
+li2gre
+ligs2
+li3ker
+li3k2o
+likop4
+lik2sp
+lik4tau
+lik4ter
+lik2t1o2
+lik2u
+li3l
+lil2a
+li3m2a
+lima1c
+limat4
+2l1imb
+2limm
+3limo
+2limp
+lin2a
+li3nar
+2l1indu
+li2nef
+li2neh
+li2nep
+li5ner
+li2nes
+2l1inf
+2l1inh
+lin1it
+2l1inj
+lin4kan
+lin4kar
+link2s
+li2nol
+l2ins.
+l2insa
+4linsel
+2linsp
+2linst
+2l1insu
+2linsz
+2l1int
+li3nu
+2l1inv
+2linz
+li2o
+li4om
+lion5s
+3li1pf
+3lipt
+3lis.
+li3s2a
+li3schm
+li4schu
+4lis2h
+li3shi
+2l1isl
+2lisol
+2lisot
+li2sp
+liss4
+2liß
+lit4a
+li2tal
+li3t2ä
+l2i3t2e
+li1th
+li2t3r
+lit1s2
+lit3se
+lit3sz
+li4tun
+li2tur
+litz4er
+3liu
+liv2e
+li2vea
+li2ves
+livi3e
+li3vr
+4lixi
+li2zau
+li2z3ä
+lizei3
+4l3j
+2l1k
+l3kale
+lk1alp
+l3k2an
+l3kap
+l3kar.
+l3ke
+lk1erd
+lke3r2e
+lk2l
+lk3lad
+l3k4las
+lk3lic
+l3k4lu
+lk2men
+lk4ne
+lk5ner
+lkor2b
+l2k3ru
+lk2s1
+lkse2
+lk4spe
+lkt2
+lk2ü
+4l1l
+lla2be
+l2labk
+ll2abr
+l2labt
+l3labu
+ll3acht
+lla2de
+ll1aff
+lla3gl
+l2l1am
+ll3a2ma
+ll2anb
+lla4ner
+l2lani
+l3lans.
+ll4anwa
+ll1anz
+ll3appr
+ll1arm
+lla6tern
+l2lath
+l4latm
+l2l3att
+l2lau
+ll3aufg
+ll3aufk
+llau2s1
+l4lausf
+ll3aust
+l2la2w
+l2l1äm
+l3läs
+l2läu
+llb2
+llch4
+lld4
+l2le2b
+ll5ebene
+l3lec
+ll1ech
+lle3er
+l2l1ef
+lle2gu
+lle2he
+l2leib
+ll1eic
+ll1eim
+l4l3eise
+lle2la
+l3len.
+lle4na
+ll3endl
+llen3dr
+ll3endu
+llen6dun
+llen5se
+l4lentf
+l4lents
+l3lep
+l3ler.
+lle2ra
+l3lere
+l6lereig
+ller4fo
+l8lergene
+l4lergo
+l4l3ermi
+l4l3ernt
+ll3ertr
+ll6erwei
+ll2es
+l3les.
+l2le2se
+l2leuc
+l3leur.
+ll1exe
+llf4
+llg2
+l2lieb
+l2lieg
+lli4gan
+l3lik
+lli4la
+l2l1ind
+l4linf
+ll1ins
+llin6sen
+l2lipo
+ll3k4
+ll5m2
+ll3n2
+ll1ob
+l2lobe
+l2lo2d
+l2lof
+llo2ge
+ll3ol
+ll1opf
+ll1or
+l4lorb
+l2lo2ri
+llo2te
+l2l1ou
+l3low
+llö2g
+l3löh
+ll2säu
+ll2s1es
+ll3ska
+ll2spr
+ll4stor
+ll3t
+llt2e
+llt2i
+llti2m
+llt4r
+llts2
+llu2d
+llu2me
+l3lung
+l2lu2p
+ll1ur
+llust6
+l3lut
+l2lüc
+llü2d
+l2lü2g
+l3ly
+ll3z2
+4l1m
+l2m3a2b
+l2m1ad
+lm1a2ge
+lm1aka
+l2m1a2m
+l3mana
+lm1apf
+lm1art
+lm3att
+lmä2s
+lm1ä4st
+lm1c
+lmd2
+lm3e4dit
+l2m1ef
+l2m1e2p
+lmer2
+l2m1erf
+l2m1erl
+l2m1erz
+l4messa
+l2m1id
+lm1ind
+lm1ins
+lm3m
+l2mof
+lm1orc
+lm3p2
+lmpf4
+lm3s2k
+lms2t
+lm3str
+lm3s2z
+lm3t4
+l2mum
+l4munt
+4ln
+lna2r
+ln3are
+l3n2e
+lnes2
+l2nin
+lnus2
+l1nü
+l1ny
+1lo
+lo4ak
+3lob.
+l2oba
+3lobb
+lobe4s
+2lobj
+l1o2bl
+l2obr
+lob4ri
+lo4chel
+3lodr
+2loe
+l1of
+lo2fe
+lo4gh
+lo2gl
+lo2gor
+lo2gre
+lo3h2e
+4l1ohr
+loi4r
+3lok
+4l3okk
+lo2k3r
+5loks
+l4ole
+2l3o2ly
+lomä3
+lo2min
+lo4nin
+lo2n1o
+lo2o
+2lope
+lop2p1a
+lop2pr
+2lopt
+lor3am
+lor2an
+lo4rä
+3lorb
+2l1orc
+2l1ord
+lo3r2en
+4l1or3g2
+4lork
+4lorp
+2lort4
+lo4sa
+3lose
+lo4ske
+lo2spe
+lo2s1pr
+los3ta
+lo4stel
+lo4steu
+lo2s3to
+lo2s3t4r
+lo2ßu
+lo2t1a
+lot4e
+lot2h
+lo3tha
+loti4o
+lots2
+2l1ov
+lo2ve
+2lox
+1lö
+lö2b3
+2löck
+2löd
+lö2f
+2l3öfe
+4lög
+2l1öhr
+2lök
+2l1ö4l
+2löp
+3lösc
+4löß
+4löz
+2l1p
+lp2ar
+l4p1är
+lp2f
+lph4
+l3phä
+l2phir
+lp1ho
+l3phr
+lpt4
+l3pu
+2l1q
+2l3r2
+lra4ss
+lrau2s
+lrebs2
+lrö4
+lrös3
+lrut4
+4l1s
+ls3a4b
+l3sac
+l2sa2d
+l3s2al
+l4s1amb
+l4samp
+l2san
+ls3ane
+l3sare
+l3sarg
+l3sark
+lsau2
+lsau4m
+lsau4r
+l3s2äm
+lsä6s
+ls2äug
+ls1äus
+l4schin
+l4schmü
+l3se.
+l2s1e2b
+l3seil
+ls2ele
+ls1eli
+ls1er
+l2serf
+l2serg
+l2serh
+l2serk
+l2serl
+l2sers
+l2serw
+lse2t
+ls1eta
+ls3ha
+l2s1id
+l2simp
+ls2kal
+l3s4kele
+l4skla
+l4sko
+ls2ky
+l2sop
+l4s3ort.
+l3sos
+l3s2öl
+l2spac
+ls2pe
+l2s3ph
+l2s1pir
+ls2po
+l3spri
+ls2pu
+l3spul
+l2spun
+l4s3s2
+lst2a
+lstab6
+ls2taf
+l2stas
+l4s3tat.
+l4state
+l3stau
+l4s3täti
+l4st3erk
+l4s3terr
+l2s1tis
+l2stit
+l4stoch
+ls1tor
+l4stor.
+l4store
+l4stors
+ls2tra
+l2s1trü
+l3suf
+ls1um
+l2s1un
+ls2und
+ls3unk
+4l1t
+l3ta.
+l2tab
+lt1abs
+ltag4
+lt1alg
+lt1am
+l3tami
+ltampe4
+l3t2an.
+ltan3d
+l2t1ap
+lt1ara
+lt1art
+l3tarta
+l3tartu
+l2t3ato
+l2t1au
+lt3aut
+lt1äh
+ltbau1
+lt1eh
+lt1eig
+l4t1ein
+l2t1eis
+l2t1elt
+lte3mi
+l3t2en
+lten6gel
+lten4sp
+l4tentl
+lt3ents
+lte4ral
+lter4fa
+l3t2erg
+lter6ken
+lter4nä
+lt2erö
+lter4se
+l2t1esk
+l3t2est
+l3tet.
+l2t3h
+l3thas
+l4thei
+lt4hem
+l3t4hu
+l2ti2d
+ltimo4
+l3tine
+lti3t
+l2t1o4b
+l2t1o2f
+l2tord
+l2torg
+l2t1o2ri
+lto2w
+lt1öl
+l3tön
+lt1ös
+lt1öt
+ltra3l
+lt3räu
+lt3re
+lt3ris
+lt3rol
+l2t3rö
+l4ts
+lts2eh
+lt2se2l
+lts3ort
+lts1pe
+lt1s2ph
+lt4stec
+lt2sti
+lt3t
+lt1uh
+l2t1um
+lt2um.
+lturan4
+ltu2r1i
+lu1an
+4lu2b3
+luba2
+lub5s2
+lu2dr
+lu2es
+1lu2f2
+2l1ufe
+2luff
+lu3fo
+luf4t1a
+luft3e
+luft3r
+lu2g1a
+lu2g1e2b
+lu2gei
+lugen1
+lu2g3i
+lug3l
+lu2go
+lu2g3r
+lug3se
+lu2gu
+2l1uh
+lu1id
+lu1is.
+lul2ö
+lumbi1
+lume4
+2lumf
+2lumg
+l1umh
+2lumk
+2luml
+l2ump
+1lumpe
+lum2ph
+2lumr
+2l1ums
+lu3mu
+2l1umw
+2lumz
+1lu2n
+2l1una
+2l1unf
+2l1uni
+2lunr
+2l1uns
+2lunt
+2lunw
+4lu2o
+lu2pf
+2lur
+l2ura
+lu2r1an
+lu2rei
+lu2ri
+l1urn
+lu2ro
+l1urt
+lu4ru
+lu2san
+2luse
+lu2sp
+lus4s3a
+lus2s1c
+lus4sei
+lus3sen
+luss3er6
+lus2s1o
+lus2s1p
+lus4s1t
+1lust
+lu2sta
+lu2stä
+lu6sterl
+lu2st1o2
+lu3str
+lust3re
+lu2s1u
+4lu2ß1
+lu2t3a4
+lu2tä
+lu2t1e4g
+lu2tel
+luter2
+lut3erg
+luter4s
+lu6t5ersa
+2luto
+lu2t1o2f
+lu2top
+lu2t1or
+lu2t3r
+lut5schl
+3lux
+2lüb
+3lübd
+lück4e2
+lücker3
+2lüd
+2lüh
+lü2hel
+lüh1l
+2l1v2
+lva3
+l3vl
+l3vo
+lv3r
+4l3w
+lweis4s
+2lx
+1ly
+ly1a
+ly3c
+2lymp
+3lyn
+ly3no
+ly1o
+ly3onn
+3lys4
+ly3t
+2l1z
+lza2
+l2z1ac
+l2z1ag
+l2zan
+l2z1ap
+l2zat
+lz1aus
+l2zäp
+l2zär
+lze2l
+l2zele
+l4z3enth
+l2z1er2h
+l2z1id
+lzi4m
+lz1imi
+lz3l
+l2zo2f
+l2zö
+lz3t2
+l2z1u4fe
+lzug4s
+l2z1ur
+lzvol2
+lz1w
+lz2wec
+l2zwu
+1ma
+3ma.
+maa2
+m1ab
+m3a2bar
+m2abä
+2mabb
+m2abe
+2m3abf
+2mabg
+2mabk
+m2abli
+2mabm
+m2ab4ra
+ma2bri
+2mabs
+2mabt
+ma3chan
+mach2e
+mach8terh
+mach8t7ers
+mach4tr
+ma2ci
+mack2s
+ma3dac
+mada2m
+m2adä
+ma2del
+2m1adm
+2m1a2d4r
+ma4d2s
+ma2es
+ma1f4
+mag2a
+ma2ge.
+ma2geb
+ma2gef
+ma2geg
+ma2gek
+ma2gep
+ma4ges.
+ma2get
+ma2gev
+ma2gew
+2m1agg
+magi5er.
+magi5ers
+ma3gl
+2magm
+ma3g4n
+2m1ago
+mahl2s
+ma1ho
+mai4s3e
+ma2ke.
+2m1akt
+mal2ag
+mal1ak
+ma4lakt
+ma2lan
+ma2l3at
+ma2lau
+2mal2de
+m2aldi
+ma3l2e
+ma4lex
+mali1
+mal3lo
+mal3lö3
+2mallt
+m2alp
+mal3t4
+malu2
+ma2l3ut
+3malv
+ma2mid
+mam3m
+2m1a2nal
+ma2nar
+2m1a4nat
+ma2nau
+2m1anä
+2manb
+man2ce
+man3d4
+man3ers
+ma2net
+m2anfr
+man3g2
+m4angel
+man4gl
+2m1angr
+m2anh
+3manip
+2manl
+m2anle
+man3s
+2m1ansa
+2mansä
+man4sh
+man2th
+mant3he
+2mantw
+manu3
+2manw
+2manz
+m1anza
+ma2or
+ma1q
+4marag
+mar2an
+2marb
+mar3g2
+3ma1rh
+ma3r2i
+m2ark
+mar2kr
+4mar2o
+maro3d
+4marr
+mar6schl
+mar6schm
+mar6schr
+mar2sp
+mar2su
+2m1arti
+ma3r2u
+m1arz
+ma3s4a
+mas2e
+3ma1s2p
+ma3sses
+mas6ses.
+mas6sest
+mass1t
+ma3s2su
+3mas2t
+ma2sti
+ma4sz
+ma2ta2b
+ma2tan
+ma2tä
+m3a2tel
+ma4t3erd
+ma4t3erz
+m4atme
+2matmo
+ma4tort
+3matr
+mat3se
+mat1sp
+matta3g
+matt4r
+mat3url
+2m1au2f
+3maul
+3ma3un
+mau3r
+2mausd
+mau4ss
+mau2ta
+m4ay
+ma1yo
+1mä
+3mäc
+2m1ähn
+mäh1r
+4m1änd
+3männ
+2mäo
+2m1äp
+mär1
+mär2kl
+mär2z
+mä1t4r
+mäu2s1c
+2m1b4
+mbe2e
+mbera2
+mbe3r2e
+mbert4
+mble1i
+m3br
+mbu3sc
+mbut2
+2mc
+m3ch
+2m1d
+m2dan
+m2d1a4s
+md3ato
+md1är
+mde2a
+m2dei
+mder2
+m2d1erl
+md3ras
+md3s2e
+mdt4
+m2d1um
+1me
+me3a
+meau2
+meb4
+me2ben
+3mebr
+me1c
+medi3e4
+me1ef
+me3e4n1
+mee4rei
+2m1eff
+meg4
+mega3
+me4gel
+3meh
+meh6l3er
+meh6rert
+2m1eif
+2m1eig
+m2ei3l2
+mein4da
+meiner6k
+3m2einu
+m2eist
+me3l4ant
+me2l1au
+melb2
+mel3d2
+melde3i
+me2lek
+2melem
+me2ler
+melet2
+2melf.
+3melk
+mel4k3ei
+mell2i
+3melo
+me2lob
+mel2se
+mel3t4
+6mel6tern
+2m1e2mis
+2m1emp
+2m1e2mu
+m2en.
+me3nage
+me4n3an
+men3ar
+me4nas
+men3au
+2mendl
+menen1
+4men4gag
+men3ge
+me2nim
+men3k4
+men2on
+men4se.
+6mensemb
+men4sen
+men4ser
+men4ses
+men2so
+menst4
+m4enta
+men4t3ak
+ment5eig
+men6t5ers
+2mentn
+ment4sp
+me1o
+2meou
+2meö
+2mepa
+2m1e2pi
+3m4er.
+me1ra
+me3rak
+mer4as
+mera3um
+me2re2b
+me4rens
+mer4err
+mer4erw
+mer3f
+4m3ergän
+me3rid
+merin4d
+merin4t
+4merklä
+m4ersh
+mer3sm
+mert4r
+merz6eng
+3mes
+me2sal
+me2sä
+mes2e
+4meser
+mes2po
+2mes2sa
+mess3an
+mes6ser6g
+mes2s1o
+mes2sp
+mes2st
+me2str
+me3sze
+3me2ß3
+me3ta
+me3th
+met6t5en6d
+meu1
+2m1ex
+me2xe
+1mé
+2m1f4
+mfi4le
+2m1g2
+2m1h4
+1mi
+mi3a2b
+mia2n
+mi1ä
+mibi1
+mic1e
+mi1ch
+mi2ci
+mi3da
+mi2di.
+mi3dr
+2midy
+mie3dr
+mi3ele
+mi4e3no
+mierer4
+mie4rob
+mie2ti
+mie2to
+mie2tr
+mi1f4
+3mige
+mi3h
+mi2k1an
+mi2kar
+mi2kel
+mi2kin
+mi3k4l
+mi3kr
+mi2ku
+mi3la
+milch1
+mil4che
+mi3l2i
+mil3le
+4milz
+m2im2a
+2m1imm
+2mimp
+min2ac
+min5anze
+m2inde
+2m1indu
+mi2nef
+miner1
+mi4n3e4ri
+min2eu
+2minfo
+min2ga
+mings2
+2minh
+mi3ni
+mini3k4
+mi3n2o
+mi4n3of
+2m1inse
+mi3nu
+mioni1
+mi1p
+3mir.
+3miri
+3mirs
+3mirw
+3mirz
+3mis.
+mi2sa
+mi3sau
+mi4scha
+mi4schr
+mi4sch3w
+mise1
+mis2p
+mis5sar
+mis4ser
+mis4s1t
+mi2sta
+mi2ß1
+3mit
+mi2ta
+mite2
+mi2t3h
+mi2to
+mi2tr
+mi3tra
+mit3s2
+mit5sa
+mit3ta
+mit3t2e
+mi2t1u
+4mitz
+mi3v2
+2m1j
+2m1k4
+m3kn
+2m1l2
+ml3c
+m3le
+ml3f
+ml3k
+m3lo
+ml3p
+ml3s
+2m1m
+mma3a
+m2mab
+m2m1ak
+m2m1al
+m2mans
+mm1anz
+mm1art
+mm2as
+mmas4p
+mma2ß
+m2m1au
+m2mä4
+mm1äu
+m2m1e2b
+mme2c
+m2m1ef
+m4meh
+m2mei
+mm1ein
+mm3eise
+mme4lin
+mme4na
+mm2ene
+m4mentl
+m4mentw
+m2me2nü
+mme4r3a2
+mme4rec
+mme2s1
+mmes3a
+mme3sc
+mme4sz
+m2me4te
+m2m1eu
+mmi3el
+mmi3k
+mmi3m
+mm1inb
+mm1inh
+m2m1ins
+mm1int
+mmi3sc
+m4mita
+mmi3tw
+m2mo2l
+m2mor
+mm3p2
+mmpf4
+mms2
+mm3sa
+mm3si
+mmt2
+mm3te
+m2mum
+mm2un
+mmu3r
+m2mus
+mmül2
+2m3n2
+m4nesi
+1mo
+mo2be
+2mobj
+2m1obs
+3m2od
+mo3de
+mode3s
+mo2dr
+m1of
+mo2fe
+3mog
+2mog.
+mo2g1al
+3m2oh
+moh2a
+moi3r
+mo2k1l
+2mol.
+mol3d
+3mom
+mom2e
+3m2on
+mo2nä
+mon4dac
+mon4del
+mon2do
+mo2ner
+mon2i
+mon3s2
+mont2a
+mon3th
+mo1ny
+3m2o2o
+2mo1pe
+mo2per
+2m1opf
+2mopt
+mo1ra
+mo2rak
+mor2an
+mo2rar
+mor2d3a
+mor2dr
+morf4
+mor3g
+mor3t2
+3mos
+moster4
+mo2sto
+mot4r
+mous2
+2m1o2x
+mo1y
+1mö
+möbe2
+mö2c
+2mö2f
+4mök
+2m1ö4l
+m1ört
+4m1p
+mpa3ne
+mpe4lin
+mpe2n1
+m2p1ene
+m2pf
+mpf1ef
+mp4f3erf
+mpf3erg
+mp6fer6ge
+mpf3erp
+mp6ferpr
+mp4f3err
+mp4f3er4z
+mpf3l
+mp2fr
+mp1haf
+mp1hos
+mp3lei
+m4p3lem.
+m2p3len
+m2ples
+m3pon
+mpor6ter6
+mpot2
+mps2
+mp3sh
+m3pu
+2m1q
+2m3r2
+4m1s
+m2san
+ms1as
+m3sat
+msau3e
+m2s1än
+msch2
+m3se.
+m2s1e2d
+m2s1ef
+m2sein
+m2se2le
+mse2n
+m2s1ene
+m2sent
+ms1erf
+ms2erh
+m3set
+m2s1eu
+m2sex
+mso2r
+ms1ori
+m2spä
+m2sped
+ms2por
+m2spot
+m2spro
+ms2pu
+ms3s4
+m4stag
+m2stal
+m2stit
+ms1ums
+m2sü
+2m1t
+mt1ab
+mt1ak
+mta2m
+mt1ar
+mt3arr
+mt3aug
+m2t1e2d
+m3tei.
+mt1ein
+mt1eis
+mt1elt
+m4tenga
+m4t3engl
+mt1ent
+m4tentf
+m4tentg
+m4tentr
+m2t1erb
+m4t3erei
+m2t1erf
+m2t1erg
+m2t3e2r1i
+m2t1erk
+m2t1erl
+m2t1ers
+m2t1ert
+m2t1eta
+m2t1eu
+m2t1ev
+m2t3h
+m2ti2d
+m2tim
+m2t1in
+m2t1i2r
+mti2s
+mt1ita
+mtmen2
+mt1ob
+mt1op
+m2t1öl
+mt1ös
+mtra4s3
+m2t3ro
+m2trö
+m4ts
+mt2sa
+mts3chi
+mt3sco
+mt2s1e
+mt3send
+mt3s2ka
+mt3s4kel
+mt1sor
+mts3tät
+mt1um
+mtu3re
+mt3z
+1mu
+mu1a
+2m1uh
+mu3la
+3muld
+3mult
+m4umb
+3mumi
+m1ums
+mum2s1p
+3mun
+mun6derf
+mu2ner2
+4m1unf
+4m3ungeb
+mu3ni
+mu4nin
+4mu4niv
+4munw
+4munz
+muru2
+mu4r1uf
+m4us
+3mus.
+mu4s1a
+3musc
+mu2s1o
+mu2sp
+mu3s4se.
+mu3s4ses
+mus4ste
+must4e
+mu2s1to
+mu2str
+mu2su
+muße3
+mut4str
+1mü
+2müb
+3müh
+mü2her
+mühl1a
+mül4len
+3mün
+mü3s2si
+3müt
+2m1v
+mvoll1
+2m1w2
+mwa2
+mwa4r
+mweg2
+mwel4t3
+mwu1
+3my
+my1al
+my3l2
+2m1z2
+mzel4li
+mzu1
+mzug4
+1na
+3na.
+2n1ab
+na2bä
+n3abh
+3nabi
+na2b3l
+na4bor
+na4bos
+na2br
+nab4rü
+4n3abs2
+na2b3u
+3na2c
+nach1
+nachen4
+na5chen.
+n3achse
+nach3sp
+nach8t7ersc
+nacht8raum
+5nachw
+na3dab
+4nadd
+nade4l1
+na2der
+4n1adl
+4n1adm
+4n1a2dr
+4nadv
+3nae
+2n1af
+na1fra
+nag2a
+na2gem
+4n1agg
+n1a2gi
+na3gin
+na3g4r
+3n2ah
+na2h1a
+4n3ahn
+4n3aho2
+3nai
+nai2e
+n1aig
+4n1air
+nai4re
+n2ais
+2n1ak
+na2ka
+3nakä
+3nako
+na2kro
+4nakt
+n4al.
+na2l1a2
+nal3am
+na4lar
+na2lä
+2n1albk
+n2ald
+nal3da
+n4ale
+na2leb
+nal3ei
+na4l3ent
+na6lerei
+na4ler4g
+na4lerm
+na4l3erw
+nales2
+nal1et
+nal1ex
+nalf4
+nalg2
+nal3gl
+na2lid
+nal3la
+nal2ph
+nal3s
+n2als.
+nal3t2
+n2alty
+na2lu
+2naly
+na2mat
+3name
+na3me.
+4na2mei
+n4a3men
+4n1a2mer
+na2mid
+na3m4n
+3n2amo
+n1amp
+nam2sp
+2n1amt
+namt2s
+n1an
+2n3an.
+4na2na
+na4nat
+n3a2nä
+4n3anb
+n3and2
+nan1eu
+4n3anf
+4n3ang
+4nanh
+2nani
+4n3ank
+4n3anl
+3n2ann
+4n3anna
+4nano
+4n3anp
+2nanr
+4n3ans
+2nantr
+2nanw
+n2anz.
+nanzen4
+nan6zene
+nan6zeng
+na3ot
+na2per
+n1apfe
+4napfel
+na2pos
+na2pr
+nap2si
+n1aq
+n1ar
+3nar.
+na2r1a
+2narc
+n2ard
+n2are
+3nar2i
+n2ark
+n2arle
+n2aro
+na2rom
+nar2rh
+2nart
+n2arta
+n2arth
+na3r2u
+3nas
+n4as.
+na4schw
+n2asf
+4n1a2sp
+nas2s1c
+4n1assi
+4nasy
+nasyl4
+3naß
+3nat
+nat3au
+nat1ei
+na2th
+4natm
+nat2o
+4natom
+5nats1
+nat4sa
+n1au
+nauf4fr
+nau2fr
+5naui
+3n2aul
+4nausb
+4nausd
+4nausf
+4nausg
+4nausl
+n2auso
+4nausr
+4n3auss
+4nausw
+4nausz
+nau3te
+3nav
+nave4
+navi5er.
+navi5ers
+1nä
+4näb
+3n4äc
+3näe
+n1äf
+3näg
+3nähe
+nä2hi
+3nähm
+4n1ähn
+nä2hu
+3näi
+2n1ä2m
+4n1än
+2näp
+2näq
+nä2sc
+n2ä6s3s
+2näu
+3nä1um
+4näuß
+2n3b4
+nbe2in
+nbe3r2e
+nbu3s
+nby2
+2n1c
+n2c3ab
+n3can
+n3ce4n3
+n3ces.
+nch2a
+n3chl
+nch3m
+ncor2
+n3cu
+4n1d
+n2da2d
+nda1f
+nd2ag
+n3dai
+n2d1ak
+n4dakt
+n2dana
+n2dani
+n2danl
+nd1ann
+n2d1anz
+n3dap
+nd3arr
+n3dat
+nd3att
+nd1au
+n2daut
+n2dax
+nd1c
+nde4al.
+n2d1ede
+n3dee
+n2dei
+n4dei.
+nd3elfe
+ndel3l
+ndel4sa
+ndels5en
+nde4mot
+nden3sk
+n4dentl
+n4dents
+nde3o
+n5der.
+n5deren
+nderer3
+nd2erh
+n5deri
+nder6läs
+nde4rob
+n4de4ros
+n6der6sat
+n3d2es
+nde2se
+ndes3s
+n2deth
+ndia3
+nd1imm
+n2dob
+n2dof
+ndo2n3a
+n2dopt
+nd1or
+n2do2ri
+ndo3st
+n2d3ott
+n2dö
+nd2ös
+nd4ram
+n2d3rat
+nd3rau
+n2d3re
+n2drif
+n2droc
+n2drod
+n2d3rö
+n2drui
+n2d3run
+nd4sene
+nd2spr
+nd3th
+ndt4r
+n2duns
+ndwa5re
+ndy3
+1ne
+3ne.
+ne2ap
+3nea4s
+ne3at
+ne3au
+ne2bl
+2n1ebn
+neb4r
+2nec
+3neca
+3nece
+neck2a
+ne2dit
+2nee
+neei2
+ne3e4in
+ne3eis
+neema4
+neen2
+nee1r2
+nee3t
+n1ef
+n2ef.
+n2e3f2a
+2nefr
+2n1egg
+neg4l
+n1e2go
+neg4r
+n1e2he
+2nehe.
+2nehem
+2nehen2
+ne3her
+3nehm
+4n3ehr
+2n1ei
+3neia
+4neic
+nei4dei
+4neier
+3neigt
+3neigu
+4neing
+4neinh
+4neinl
+4neinz
+4neip
+neiss4
+ne2ke
+2n1eks
+nek3t2
+ne2l
+3ne3lä
+nel3b
+n1ele
+4nelek
+4nelem
+ne3len
+ne3l2i
+ne4lim
+ne4lit
+3nelk
+n2ell
+nel2la4
+nel4lei
+nel4lif
+3ne3l2o
+3nelu
+n2em.
+ne3mas
+4n1emb
+n1emi
+4n3emp
+2n1ems
+4nemu
+3nen
+n4en.
+n2e4n3a4
+ne5nac
+n2enb
+n2enc
+nen4dar
+4n1endb
+4n1endd
+4n1endf
+n1endg
+4n1endh
+4n1endk
+n1endl
+4n1endp
+4n1endt
+4n1endw
+ne2n1e2b
+nen3ei
+nene4m
+nenen1
+ne4nene
+ne2neu
+n2enf
+4n1engb
+nen4gen
+4n1engs
+4n1engt
+n1engu
+nen4gun
+n2enh
+ne4n3i
+n2enj
+n2enk4
+n2enm
+nen4nar
+ne2no4
+nen3s2e
+nen3sk
+nen3s2p
+5n2en3t2a
+4n1entb
+4nentd
+4nentf
+5n2enti
+4n1entl
+4nentn
+nen3to
+5nentr
+4n1ents
+4n3entw
+4nentz
+ne4n3u
+n2env
+n2enw
+nen5z2e
+ne2o3b
+ne2oh
+ne2or
+3nepa
+ne2pen
+2nepf
+ne2pi
+ne2pos
+nept4
+n4er.
+ne1ra
+ne2ra2b
+ne2rac
+ne2r3af
+ne2rag
+ne3r4al
+ne2ram
+ne2ran
+ne2r3ap
+n2erat
+ne2rau
+nerb2a
+4n3erbe.
+4n3erben
+2nerdb
+ne2re2b
+ne2rec
+5nerei.
+n1erf
+4nerfas
+3nerfr
+2nerfü
+2ner3g4
+3nergr
+n1erh
+4n3erhö
+3neri
+n2erj
+n1erk4
+5nerka
+n2erkö
+n2erli
+2n1erlö
+nerma3
+nermas4
+n1ermi
+n2ern.
+2n1ernä
+4n3erneu
+2n1ernt
+n1eros
+n1eröf
+ne1rös
+n2ers.
+2n1ersa
+4n3ersts
+nert4
+3nert.
+ne2rup
+n2erv
+4nerwar
+2n1erz
+nerz2a
+n2es.
+ne2sei
+ne2s1ev
+2ne3sh
+nesi1
+ne3ska
+ne2s1of
+ne2s1or
+ne2s1pa
+4n1es2si
+2n1e2st3r
+4nesyn
+3n2eß
+ne2tab
+2ne2tag
+net1ak
+ne2t1an
+2ne2tap
+2n1e2tat
+ne2tau
+ne4te2l
+ne2th
+ne4t3ha
+ne3the
+ne3ti
+ne4tin
+net1s2
+n4ett
+net3ta
+net3te
+net3tr
+2n1e2tu
+net4zer
+net2z1i
+ne2u
+neu1c
+neu4ere
+neuer4f
+neuer4k
+neuer4r
+neuer4s
+neuer4w
+neu3g4
+n2eun
+2n1eup
+neur2
+3n2evi
+ne2vol
+n2ew
+2n1ex
+5ney
+3nez
+3né
+2n1f
+n3f2al
+nfalt2
+n3f2ang
+nf4ar
+n3f2ä
+n3f2en
+n3f2er
+nf2es
+n4fex
+nff4
+n3fi
+nfi4le.
+nf4le
+nf2o
+nf4r
+nf3s2
+nf2tan
+nf3tei
+nf2t3r
+nft2st
+nft4ste
+n2f1u
+4n1g
+n2g1ac
+ng1ad
+n2g1ak
+ng1a2me
+ng1ams
+nga2n
+ng1and
+ngang6st
+n2gans
+ng1ant
+n3g2ars
+n2g1a2v
+n2g1äl
+ng3d4
+n2g1ein
+nge3l4ei
+n3g4en
+n5gene
+nge5nerw
+ngenmas6
+ngen3s2
+nge4ram
+n2g1erg
+ng3erse
+nger4zä
+n3g4es
+nge3s2a
+nge3sp
+ng3hu
+n2g1id
+ng2lad
+ng2läs
+n2glic
+ng4lok
+n3glot
+ngma7sse.
+n2gn
+ng3ne
+n4g3ni
+ng4nom
+ng2nu
+ng2ob
+ng1opf
+ng1or
+n2gö
+n2g3rai
+ng4ran
+n2g3rat
+ng3roc
+ngro3s
+ng2s1
+ngsa2g
+ngs3an
+ngs3au
+ng5schr
+ng4s3e4h
+ngs3pa
+ng4stec
+ngt2
+ng3ts
+n2gum
+ngzei4t
+4n3h2
+n7halts
+n5he
+nhe2r
+1ni
+3n2ia
+ni3ak
+nibb4
+nib4l
+ni1ce
+n1id
+3n2id.
+ni2de
+3n2i3de.
+4nidee
+n2idi
+ni3dr
+2n3idy
+n2ie
+nie3b
+ni1el
+nie3l2a
+nie4n
+ni3ene
+ni3eni
+nie4rei
+ni4erna
+nie4sa
+ni2eu
+ni1fl
+ni2g1a2
+2n3i2gel
+2niget
+nig3li
+ni2gn
+ni2gre
+nig4san
+nig4sp
+nihi3
+ni2kar
+3nike
+ni2kel
+ni3k4erh
+ni2ki
+nik3ing
+ni2kor
+ni2k3r
+nik3t4
+3n2il
+ni3l2a
+ni3l2i
+nil3l
+4n3imp
+n1in1
+3nin.
+n2ina
+nin2ac
+ni2nal
+3n2inb
+2nind
+2ninf
+3ning
+2ninh
+4nink2
+3nino
+ni2nor
+3n2inp
+2nins
+n2ins.
+4n3int
+n2i3nu
+4n3inv
+3n2inw
+ni2ob
+ni3ok
+ni3ol
+ni3ora
+n2ip
+ni4ron
+n1irr
+3n2is
+ni4sam
+ni2san
+ni2sä
+nis3cha
+ni4schw
+ni2s1e
+ni3se.
+nis3el
+ni2som
+4nisot
+ni2sp
+ni3spi
+nis5s4
+ni2stu
+ni3stun
+ni2s1u
+2nit
+3nita
+ni1th
+ni2ti
+nit2o
+3nitr
+nit3s4
+nit4tec
+nit6tell
+nit6ter6g
+nit6t5er6k
+nit4tie
+nit4tra
+nitt3ri
+nitt4sa
+niv2
+3nix
+2n1j
+4n1k
+nk1abr
+n2k1ac
+nka2ge
+n3kal
+n4kalg
+nk1ang
+nk1apf
+nk3art.
+nka3sc
+n2katm
+nk1aus
+n2kaut
+n2k1äh
+n2k1äp
+nk1ei.
+nke4lei
+n4kelem
+nkelma3
+nkelmas6
+nke4na
+nken4te
+nk2er
+n4k3erle
+nke4ros
+nk3ersa
+nke2t
+nk1eti
+n2ketu
+nk1id
+n2kim
+nk1inh
+n2k1ins
+n4klade
+n3klag
+nk3leis
+n2k3len
+nk3les
+n3klin
+nk2lo
+nk4nac
+nk4neb
+n2knis
+n2knit
+n2k1o4be
+n2kopt
+nko2r
+nkord2
+nk1ori
+nko4rie
+n2k1ort
+n2köl
+nk4rab
+nk3rät
+n4kre.
+n2k3rel
+n2kren
+nk3rep
+n2k3rez
+nk3ro
+n2krol
+nk2sal
+nk2se
+nk3sen
+nk2so
+nks2ti
+nk3s2z
+nk2tak
+nk4terg
+nk4t3ern
+nkte3sk
+nkt2et
+nk2tin
+nkt1it
+nk2top
+nkt1r
+nkt3ric
+nk2tro
+nk2tru
+nkt4sen
+n2kum
+nk1ums
+nku2n
+nk1urh
+n2küb
+2n3l2
+nle2ga
+nle3x
+nli4ne
+2n1m2
+n3ma
+n3mä
+nmen2s
+n5mi
+4n1n
+nna2be
+n2nada
+n2nalg
+n2n1all
+n2nan
+n2nau
+n3nä
+n3nec
+nn2ei.
+n4nein
+n3nelb
+nne4le
+nne3lu
+nn2ens
+nner4ei
+n6n5ereig
+nner4fü
+nner6geb
+nn4ergr
+nn2erh
+nn2erk
+nner4la
+nn2ero
+nne2rö4
+nn3erwa
+nner6war
+nner2z
+nne4s1e
+n2ness
+nn2eu
+nn2ex
+nn3f
+nng4
+n3n2i
+n4n3iso
+nno2b
+nno3be
+n2nof
+n2nop
+nno2r
+nn1ori
+nn4sam
+nn3se
+nn3s2p
+nnst4
+nns3tat
+nn4stoc
+nn2stö
+nn3t2a
+nn2th
+n2n1uf
+n2n1unf
+nn1ur
+1no
+3no.
+no5at
+n2obel
+2nobj
+no2bla
+n2oble
+3noblo
+3noblö
+2n1obs
+no1c
+noche4
+noch4r
+2no2d
+no3dr
+no2ed
+n1of
+no2fe
+2noff
+2n1oh
+n2ohe
+no3id.
+2n3okk
+nok2l
+n4ol.
+n3ole
+no2leu
+no4lig
+no2liv
+2no2ly
+3nome3
+3nomp
+non2e
+n1onk
+n1ont
+2nony
+3n2opa
+no2per
+no2pi
+n1ops
+3nor.
+nor2a
+no2rad
+n2o1rak
+no3ral
+no3r4ar
+2norc
+nor4da
+3nordb
+nor4des
+nor2d5r
+no3r2e
+2n1org
+3norh
+3n2orl
+5norm
+norm2a
+nor3mal
+3norö
+3nors
+2n1ort
+3n2os.
+nos2e1
+no3sh
+no5sk
+no2sp
+2nosti
+nost1r
+2nostv
+nos2u
+no2tan
+no3tart
+no2tä
+not1e4i
+no6tentr
+no2ter2
+noterb3
+no2tex
+not3h
+no2tho
+no2t3in
+no2t3op
+no2tr
+3nov
+2n1o2x
+3noz
+2nöd
+4nö2f
+4n1ök
+4n1ö4l
+n2ör
+nö4s3s
+1n2öt
+4n3p4
+npa2ge
+npf4
+npsy3
+2n1q
+6n3r2
+nran2
+nra4s3s
+nräu3s
+nrebe2
+nreli1
+nre3sz
+nrö2s
+nrücker6
+4n1s
+n3sabo
+n2sa2d
+n4s1agi
+ns3a2k
+n2sall
+nsa2r
+ns3are
+n3s2arg
+ns3ari
+n3sark
+nsa4s
+ns4ath
+nsau4r
+nsau4se
+n2saut
+ns2av
+ns2ax
+n2s1än
+ns2äug
+n2s1äus
+n4schef
+nsch5eul
+n4schl.
+nscht4
+n3schu
+nsch7werd
+ns4cr
+ns1eb
+ns2eh
+nse2ha2
+nseh5ere
+nsei4n
+n4seinf
+n4seint
+ns2ele
+ns3elem
+n2sem.
+nsen4sp
+n2sepo
+n2s1erf
+ns1erg
+n2serh
+n3seri
+ns1erk
+ns3erle
+n4s3erne
+n2serö
+ns1ers
+n4sersc
+ns3ertr
+n2s1erw
+n2serz
+n2seth
+n2s1eu
+nsfi4l
+ns3hor
+ns1id
+nsi4den
+n2simp
+n2sini
+nsinn2
+ns3int
+nsi2te
+nsi2tr
+n3s2kal
+n3s2kel
+ns2kis
+n3skle
+n3s2ky
+n3smara
+n2s1o2d
+ns1of
+n2soff
+ns4om
+n2s1ont
+n2sop
+ns2orc
+n4s3ort.
+nsp4
+ns2pac
+n3s2pek
+ns2pel
+n5s4pen
+n4speri
+n2sph
+ns2pi
+n5spie
+n2spo
+n2sprä
+n4s3prie
+n2spro
+n4s3s2
+nst1ak
+n4stale
+nsta2n1
+nst3ane
+n2stas
+n4s3tat.
+n6staten
+n4stats
+ns2tau
+n5s2te.
+n4steif
+nst5eife
+nst7einhe
+ns4tem.
+ns4ten.
+n4stent
+ns4ter.
+nst5erge
+n7stern
+ns4tes.
+n5steu
+n5s2tic
+n4stilg
+n2stob
+n4stole
+nst5opfe
+n4strac
+n4strad
+n6strieb
+n4strik
+ns4trun
+ns2tum
+nst3u2t
+n3suf
+ns2um
+ns1un
+ns2ung
+n2s1urs
+n2sut
+n3sy
+ns2zin
+4n1t
+n3t2a3c
+ntak4ta
+nta4lin
+n4t1all
+nta2lo
+nt2alp
+nta3ne
+n4tansp
+nt1ant
+n4tanza
+n3t2arb
+nt1ark
+n3t2arm
+n3taro
+nt1art
+n4tarti
+nt3artu
+n3t2arz
+n2tath
+n2tauf
+nt1äm
+n2t1äu
+n3te.
+nte3au
+nte1e
+nte3g6
+n2t1eh
+n3tehe
+n2teig
+n4t1ein
+n2t1eis
+nt1e2mo
+nt4en
+n3ten.
+nte4na
+nten6te.
+ntera4
+nte6r5eis
+nt4erh
+nt4erk
+nt4erm
+nt4ern
+nt4ers
+nt4ert
+n3tes2
+nte3sa
+n4t1ess
+n6testri
+n3tet.
+n2t1e2ta
+nteu3
+nteu6eri
+nte3v
+ntge4n
+nt3hel
+nt3ho
+nt4hos
+n3thr
+nt4hu
+n2t5hum
+nt4hy
+nt2i
+ntim3p
+nt3inf
+n2t3inh
+ntini1
+n3t4lem
+ntmen2
+ntmo4
+ntni2
+ntnis1
+ntopf3e
+n2torg
+n4t3o4rie
+nt4ral
+ntras3s
+nt1rau
+nt4raum
+nt3rea
+nt3rec
+n3t4ree
+nt3reif
+n3trep
+nt4repr
+nt3rich
+n4t3rieg
+nt4rig
+n2troh
+n3trop
+n2t3rü
+n4t1s
+nts2ah
+nts2p
+nt4s3par
+nt5spe
+nts2ti
+nt2sur
+ntt2
+nttü3
+ntu4re.
+n4tw
+nt3z
+1nu
+3nu1a
+nu4ale
+nu3a2r3
+nubi1
+2nuc
+nude2
+3nue
+nu2es
+nuf2
+nu2fe
+2n1uh
+3nuhi
+3nui
+nuk4
+nu3kl
+nu2kr
+null3eb
+nul4lin
+n2um.
+nu2ma
+2n3umb
+2numf
+2numg
+2numl
+3numm
+2numr
+2n1ums
+2n1umv
+2n3umz
+nu4n
+2nuna
+2n1une
+3n2ung
+4n3ungl
+4n1uni
+n3unk
+2nunr
+2nunt
+2nunv
+2nunw
+3nuo
+2nup
+2nur
+nu2ra
+nu4r2i
+nurs2
+nur2z
+3nu2s
+nu3sc
+nu3se
+nus1p
+nu3spo
+nuss3er4
+nu4s1t
+nu2ß1
+3nut
+nu2t1a
+n3uto
+nu2t3r
+3nuu
+3nux
+3nuz
+2nü4b
+nür1c
+1nüt
+2n1v2
+n3ver
+n3vl
+nvoran4
+2n3w
+nwei4st
+1ny.
+1nyh
+nyle4
+n1yo
+1nyr
+1nys
+1nyw
+4n1z
+n2z1ach
+n2z1a2g
+nza2k
+n2zan
+nz3a4ne
+n3zani
+n2zar
+nza4s
+n2zat
+n2z1au
+n2zän
+n2zär
+nze4l3a
+nzel3l
+n6zenerg
+n4zen4se
+n4zentl
+nz3erem
+n2z1erh
+nz1erl
+nzer4lö
+nz5erste
+nzer6tra
+n4zerwe
+n3z2es
+nze3sk
+nze3str
+nze2t
+nz1eta
+nze3u2t
+nz1id
+nzi2ga
+n2zinh
+n2z1ini
+nz1int
+nz3le
+nzlei3
+n2zof
+n2z1op
+n2zöl
+nzug2s
+nz1wa
+n2z1wä
+n2zwet
+n2zwir
+n2zwö
+n2z1wu
+ño1
+2o3a2
+o4a3bi
+o4ac
+oa3che
+oa3chi
+o4ad
+oa3de
+oa3in
+oa3k2e
+oak1l
+o4a3la
+o4a3mi
+oa4n
+o2a4r
+o2a3s
+oa4si
+o5ass
+o4at
+oa3te
+o5au
+o1ä
+o1b
+2ob.
+o3b2al
+obal3l
+ob2am
+ob2as
+ob1auf
+2o3b2ä
+2obb
+ob2e
+2obe.
+2obea
+2o3bec
+2obef
+o2b3ein
+2oben
+obe4na
+oben3d4
+o2ber
+o3ber.
+o4berb
+ober5eis
+1oberf
+ober3in
+oberin6g
+obe4ris
+7oberungs
+2obev
+2obez
+2o3b2i
+obi2t
+ob3ite
+3obj
+ob1la
+ob3lei
+1ob3li
+2oblo
+2ob2lö
+ob2lu
+2obo
+ob1or
+2obö
+ob3rei
+2obrü
+ob3s2h
+ob3sk
+obs2p
+2o3bu
+o4bunt
+obus3s
+obu2t3
+2o3bü
+o4büb
+2oby
+2oc
+o3ca
+oc1c
+o1ce
+och1a
+ocha2b
+ocha2r
+o1che
+oche4b
+o2ch1ec
+och1eh
+och1ei
+oche2l
+ocher4k
+ochi4d
+och3l
+och3m
+och1o
+och3ö2
+och3r
+ocht4
+o1chu
+ochu2f
+och3u2t
+och1w
+o3ci
+ock5ersc
+ock3sz
+ock3ta
+o1cl
+o3co
+o1ç
+o1d
+2o3d2a
+od3ak
+od2dr
+o3de2c
+o3d2e3i
+odein3
+ode4l3ag
+ode2n1
+ode2s1e
+ode3sp
+o3dex
+2o3dia
+odi3c
+2odif
+2o3dir
+2odn
+o2don
+odo4s
+2odr
+o2dre
+odt4
+2odu
+o3dy
+2o1e2
+oe4b
+oe3di
+oe4m
+oen1e
+o3er
+o4e3s
+oe4sc
+o2e3t
+o3et.
+oet4h
+o3ets
+2ofa
+of1a2d
+of1a2g
+of2ang
+of1au
+2ofä
+o2f1e2b
+o2f1ec
+o2f1e2d
+o2f1ei
+o2fent
+2o3fer
+o4f1erb
+2o3f2es
+o2f1e2t
+of1eun
+of2fa2
+of4fal
+of4fam
+off1an
+off3erz
+of2f1in
+of2fir
+of2fix
+1offiz
+of2f3l
+of2fo
+of2f3r
+offs2
+off3sh
+off3si
+off3sp
+off3t4
+of2fu
+of2fü
+2ofi
+ofi3k4l
+2o1fl
+of3le
+of3li
+of4lö
+2ofo
+2ofö
+2o1fr
+of3rä
+of4rü
+ofs1
+of2sa
+of4sam
+ofs2ch
+of2se
+of2si
+of2sp
+of4staf
+of2sto
+ofs2tr
+ofstra8ssen
+of2su
+2oft
+oft2a
+of2tei
+of3th
+2ofu
+of3ur
+2o1g
+o2g1ab
+o2g1ac
+oga3d
+og1ang
+o2g1ei
+ogeld2
+oge2l1i
+ogener4
+ogeni3
+ogen4id
+ogenmas6
+ogerätein8
+og2gl
+o3gh
+ogi2er
+ogin1
+o2g1ini
+o3gis
+og1l
+og2lo
+o3g4n
+ogo4i3
+og1o2ri
+og2s
+og3sc
+og3si
+og3s2p
+ogs1t
+2o1ha
+oh1alk
+o1hä
+o1he
+o2h1eis
+o2h1er2t
+o2h1er2z
+2o1hi
+2ohl
+ohl1a
+oh2la2d
+oh2lä
+oh3lec
+ohl1ei
+oh3lep
+ohler2
+oh4lerg
+oh4l3erh
+oh4lerw
+oh3lo2
+oh4l1or
+ohls2
+oh2lu
+ohm2a
+1ohmi
+oh3mu
+oh4n1ac
+ohn1ap
+oh3nee
+oh2ni
+1ohnm
+oh2n1o
+ohn3sk
+2o1ho
+ohol1e
+oho4len
+o2h1o2p
+2ohö
+oh3öl
+ohr3a2
+oh4rat
+oh2rel
+oh2rem
+ohren3s
+ohrer2
+oh4rerg
+oh3rie
+oh4rin
+oh2rol
+ohrt4r
+o1hu
+oh1w
+2o1hy
+2oi
+o1i2d
+oi4da
+o3ie
+o1im
+o1in
+o4ine
+oi2r
+o2isc
+o3isch.
+oi3se
+o1ism
+oiss2
+oi4st
+o1i2tu
+2o1j
+2o1k
+ok2a
+oka3b2
+ok3ac
+oka3i
+oka2la
+okale2
+oka6lere
+ok2e
+3o2kel
+oki4o
+ok1lä
+ok2li
+ok2o
+oko4pt
+ok2so
+ok2s1p
+oks2t
+ok3t2
+3okw
+2ol
+o1la
+ol3abu
+olaf4
+ol1ant
+ol2ar
+ol4arm
+o3l2a3s
+olast4
+ol1a2v
+4o1lä
+ol1ät
+4olc
+ol2chr
+ol4d1am
+ol2dä
+ol2d1ed
+ol2dei
+ol4d3eng
+old5ersa
+ol2deu
+ol2dim
+ol2d3o
+ol4dr
+4ole.
+o2l1ef
+ol1eie
+o2l1eis
+oler2
+o2l1er3t
+ol2e3u2
+ol1exz
+o1lé
+ol2fa
+ol2fem
+olf3ere
+ol2f3l
+olf1r
+ol2f3ra
+olft4
+olge4ne
+ol2gl
+ol2g3r
+ol2i
+olie4n1
+oli2er
+oli3k4
+oli3tu
+3oliv
+oli3ze
+ol2kl
+olk3re
+oll1ac
+ol4la4d
+ol2l1ak
+ollä2
+ol2läd
+oll1eb
+ol4l1ec
+ol2lei
+oll3ein
+ol3lem
+oller6ge
+ol4ler4k
+oll3erw
+oll3ess
+ol2lic
+ol4li4st
+ol2lo2c
+ol2lo2g
+ol2lö2
+olls2
+oll3sa
+oll3sp
+ol2lu
+ol3lus
+4olo
+ol2of
+olo1p
+ol1ort
+ol3s2k
+ol3te
+ol3t4h
+ol3ti
+o1lu
+olu2th
+ol2y
+ol2z1a
+ol3zan
+ol4z3ern
+ol2zim
+ol2zo
+ol2zw
+2om
+o2mab
+oma2bl
+o2m1a2ge
+om1alg
+om1all
+oma4ner
+o4mante
+o2m1ap
+o2m1ars
+o2m1art
+omar4te
+o2m1a2sy
+o3mat
+o2m1au
+o2meb
+om1ebe
+o2m1ef
+o2m1ei
+o2mel
+o3meld
+o5men.
+o4mep
+om1er2h
+omer2s
+o2meru
+om1er2z
+omi2c3
+omiet1
+o3mig
+om1ind
+om3ing
+om1ins
+o2m1int
+om3ma
+om3mä
+om3m2e
+om3mu
+o4mn
+3omni
+4omo
+o2m3oa
+o2m1org
+om1o2ri
+om3pf
+omp4l
+oms2
+om3sk
+om3t4
+o2mum
+o4munt
+o3mus
+2ona
+on3a2b
+ona3g
+o3nal
+onaler6e
+on3ann
+onan6z5ei
+on1ap
+o2narb
+ona3th
+onat2s
+on2au
+2onä
+on1äh
+2onc
+on2dan
+onderer5
+onde8rers
+ond1r
+on2dra
+on4drin
+ond3sk
+2one
+on1ec
+o3nee
+o2nef
+one3h
+on3ein
+one2m
+on1ema
+one2n1
+o4n3ends
+on2eng
+o3ner.
+o2n1erb
+on1erd
+oner4fa
+on1erg
+o2nerh
+on4erka
+on1erö
+on1ers
+o3nett
+on2eu
+on3f2
+on3gla
+ong4r
+ong3s
+on2gue
+2o3ni
+on2i3d
+onie3g
+o4nikr
+o4nim
+o4nind
+on3ing
+o4ninh
+on2inn
+o4nins
+on3k2
+1onke
+3onkel
+onli2
+onli6n
+onlo2c
+2onn
+on3n2an
+on3n2e
+ono1
+o3nod
+o2nof
+o2noke
+on1orc
+on3ord
+ono3s
+onot4
+ons1a2
+on2seb
+onsen1
+onse2t
+on4sho
+onsi2d
+ons3ing
+on4s3l
+ons1p
+onst2a
+ons3tie
+onst4r
+on3ta
+on2t1eb
+on2te2l
+ont5end
+on4t3erl
+on2th
+on4t3rat
+2onuk
+o3nur
+2onut
+on3v
+1ony
+on3z2
+onze3in
+o1ñ
+oofs2
+1oog
+oo2ka
+oo2k3l
+oo2kn
+oo2mo
+o1op
+o1or
+oor3d
+oo4sk
+oo2su
+oo2t1a
+oot1ei
+oo4t3h
+oo2tr
+oot2s1t
+oo2tur
+2o1ö4
+2op.
+o1pa
+opab4
+op1akt
+opa2le
+o3pas
+1ope
+2ope.
+o1pec
+2o1ped
+op1ef
+2o1pei
+o1pek
+2opel
+ope3l4a3
+2open
+o2pera
+op1erh
+o1pes
+2opf.
+op2f3a
+op3fah
+op2fä
+o2pfe
+op2fin
+opf3la
+op1flü
+op2fo
+op3for
+4oph2
+o3phe
+o1p2i
+opi5a2
+opi3er.
+opi5ers.
+opie4r3u
+opin2
+2opl
+op3lag
+o2p3le
+op3li
+o3p2n
+2opo
+opo2la
+op2pan
+op4pl
+1oppo
+2oppt
+2o1pr
+3o4psi
+ops2t
+op3sz
+1op3t4
+o2pum
+2opy
+2o1q
+2or.
+or1a
+2ora.
+o1raa
+2or3a2b
+o2rabb
+o2r3add
+or3adr
+o1r2ag
+1orake
+o1ral
+oral5l
+o4r3alm
+or4alt
+or2am
+or3a2mi
+o1ran3d4
+oran2f
+oran2m
+oran4ze
+or3ap
+2orar
+or3arr
+o1ras
+o2r3att
+2orau4
+orau2s
+oraus6wa
+2o1raw
+o3rä
+or1änd
+or1ät
+orb2l
+or1c
+2orca
+or2ce
+2ord.
+2orda
+ord1am
+or2dar
+or2dau
+2ordb
+ord3eng
+orde4s
+or2deu
+or4d3ing
+or2d1ir
+or2dit
+1ordn
+or2do4
+2ordr
+ord3t
+2ordu
+2ordw
+2ore
+ore2a
+o2r1e2b
+o2r1eck
+o5ree
+or1eff
+ore2h
+or1eig
+oreli1
+orems2
+o2r1er
+o3r2ere
+orer1i
+o3r2ero
+or1e2th
+o2r1eu
+2orf
+or2far
+orf3li
+or3g4a
+2orget
+or3ghi
+2orgia
+orgi1e
+or2gl
+or3gla
+or3gle
+or2gn
+2orgr
+2orh
+2oria
+2oric
+4o3rie.
+o3rien.
+o6rienti
+o3rier
+4oril
+or1ima
+ori4mi
+4orin1
+o2rind
+2oris
+2oriu
+2ork
+or3k2a
+or4k3ar
+ork4r
+ork3s
+2orm
+or2mam
+or4mans
+orm3asp
+or2m1eb
+or4m3erf
+or4m3er4g
+or2mor
+orm3ord
+or2mum
+ormu4n
+or4muni
+or4munt
+ormvol4
+ormwa5
+or2n1ac
+or2nal
+or2nar
+or5ne.
+or3ni
+or4nin
+or3no
+2o1ro
+o2r1ob
+or3oly
+oro3n2a
+or1opf
+o2ro2r
+o3rou
+o2r1ox
+2o1rö
+2orp
+2orq
+2orr
+orr4a
+or3r2e
+or3rh
+2ors2
+or3s4a
+or3sh
+or3si
+or3sk
+or3sz
+or2t1ak
+or2tan
+orta2r
+or2tau
+or2tef
+orte4n
+or4ten5g
+ort3erb
+or4t3ere
+ort3erf
+orter6fa
+ort3erg
+or4terk
+or4t3erl
+orter6sc
+or2t3e2v
+or2the
+or2tin
+or4t3off
+or2to2r
+or2tö
+or4trau
+or4t3räu
+ort3re
+or2t1um
+2o3ru
+or2uf
+or1uh
+orum4s
+o4r3un
+o5rus3
+o2rü
+o2rya
+or3z2e
+o1s
+2o3s2a
+osa3b
+os3ad
+osal2
+2osc
+o4s3ca
+osch3ar
+o3sche
+osch3le
+2ose
+ose1e
+ose1in2
+os2el
+ose2n
+osens2
+o2s1er4k
+os2ex
+2osh
+o3s2hi
+os4hu
+2osi
+o3sk
+o4ska
+os2kal
+o4ski
+2os2kl
+2os2ko
+o4skr
+os2lo
+1osm
+os4mog
+2os2o
+osol1
+o2sö
+2osp
+os1pec
+o3s2po
+2oss
+os6s3ac
+oss3ala
+oss3and
+os4sä
+o6ssel
+o3ssem.
+oss3en4k
+o3ssent
+oss3enz
+oss1ep
+oss2er
+oss3er4b
+osser4e
+oss5erei
+oss3er4f
+o4ssi
+os2s1o2
+os2sp
+oss1pa
+os2s1t
+os2su
+os2t
+ost1a
+o2stab
+o3stal.
+osta4s
+ost1ei
+oste2n
+o4s3tep
+o4sterd
+oster3e
+ost5erwe
+oster8wei
+ost3eur
+ost3h
+o2stid
+o2stin
+ost1o4b
+os3ton
+o2st1or
+ost3ran
+o2st3rä
+ost3re
+ost3rot
+ost3uf
+2osu4
+os1um
+2osy
+o3s4ze
+2oß
+o2ß1el
+o2ß1en2k
+o2ß1enz
+oßer2
+o2ß1erb
+o2ß1ere
+o2ß1erf
+oß1is
+oß1u
+2o1t
+o2t1abi
+ot1ah
+o2t1ak
+o3tal
+o3tam
+ot1ant
+ota4s
+ot1ast
+o2t1au
+o3tau.
+ot1ä
+o2teb
+ote1i
+o4t1eib
+o4t1eic
+ote3i4n
+o4t1eis
+ote4l1a
+o3tem
+o4t1emi
+ot2em3p2
+ote4na
+o4tentb
+ot3entr
+ot1erb
+o4t1er4l
+o4t1erw
+o3the
+o4them
+o2t3hi
+o2thr
+4oti
+ot2id
+o2til
+o2t1i2m
+ot2in
+ot3inh
+o4tl
+otli4
+ot2o
+otob4
+ot3opf
+oto4rei
+o2t1ö
+o3tran
+otra4s3
+ot3rat
+ot4rau
+ot3re
+ot3rin
+ot3roc
+ot3ru
+ot2s3at
+ots1o
+ots1p
+ots2pe
+ot3s4tra
+ott3akt
+ott3an
+ot2t1a4s
+ot2tau
+ot2teb
+ot4terh
+ot4terk
+ot3te4s3
+ot2t3h
+ott2o
+ot2t3r
+ot3t4ra
+ot3t4ru
+ot1url
+oub4
+ouff6
+ou1f4l
+ou4ge
+ou3gl
+o1uh
+ou1is.
+ou4le.
+ou2les
+2o1um
+2o2u2n
+oung5
+oun4ge.
+oungs2
+o4up
+4our
+oure2
+ou2ret
+ouri2e4
+ourme4
+our4ne.
+ou3s2i
+ou3s2t
+o4ut
+3outp
+out3s2
+outu4
+2o1ü
+o1v
+ov2a
+2ovel
+o3ven
+2ovi
+oviso3
+2ovo
+2o1w
+o3wec
+owe2r1
+o2wh
+o3wi
+o2wu
+o1x
+2ox.
+ox2a
+2oxk
+ox3l
+o2xu
+1oxy
+o1yo
+2o3z2
+3o4zea
+ozen4ta
+ozes4sc
+ozir3
+ozon1a
+oz3z
+órd2
+ö1b
+öbe4l3i
+öb2l
+ö2ble
+ö2b3r
+ö1ch
+öch3l
+ö2chr
+öchs2t
+öch6st5ei
+öchst3r
+ö1d
+öde1r
+ödi3
+ödin3
+1ödu
+ö1e
+1öf
+öf2fa
+öf2fl
+öf3l
+öge3le
+ögen4s1
+ög3l
+ög3r
+ög2s
+ö1he
+öhe4n1
+öhl2e4
+öhre4
+öh3ri
+öh2s
+ö1hu
+ö3ig.
+ö3isch.
+ö1ke
+1ö2ko3
+ök3r
+ök2s
+ö2l
+3öl.
+öl1a2
+öl1ei
+öl1em
+öl2f1ei
+ölf2er
+öl1in
+ölk4e
+öl2k3l
+öl2la2
+öll1an
+3ölm
+öl2nar
+ölo2
+öls2
+öl3sa
+öl3sz
+öl3tu
+1ölu
+ölz2w
+ö1m
+öm2s
+ön2e
+ö3ni
+önizi1
+önn2e
+öo1
+öo2ta
+öoti1
+2öp
+ö1pe
+öpf3l
+ör3a2
+örb2e
+ör2b3l
+ör1c
+ör2dr
+ör3dra
+ö2r1ec
+ö2r1ei
+ö2r1e2l
+ö2r1em
+öre2n1
+ö2r1ene
+ö2rent
+ö3r2erb
+ö2r1er2e
+örer2f
+ö2rer2g
+ö2rer2l
+ör2err
+ör2erw
+ö3r2erz
+ör1ess
+ör2f3l
+ör2gl
+ö2rim
+ör2kl
+örn2e
+örner4v
+ör1o
+örpe2
+örs2e
+ör3sk
+ört2e
+öru4
+ö2r1une
+ö1s
+ö2sa
+2ösc
+ö2sch3a
+ösche2
+ö4sch3ei
+öscher3
+ö6sch5erf
+ö6sch5eri
+ö2schi
+ö2sch1l
+ö2sch3m
+ö2schn
+ö2schw
+ös1ei
+ö2sein
+ös4en
+ös4es
+2ösl
+ös2o
+ö2sp
+ö3s2s
+ös4s1c
+ö4s3set
+ös4st
+ös4t
+ö2st1a2
+ös4u
+ö1ß
+ößen3
+öß2ti
+ö1t
+ö2t3a
+öte4n1
+ö2t3r
+öt2sc
+öt2tr
+ö1v2
+ö1w
+ö1z
+öze3
+özes4
+1pa.
+1paa
+1pac
+p2ad
+pa3da
+2p3a2dr
+pa1fr
+1pag4
+pa3gh
+pa1ho
+1pak
+pa1k4l
+pak2to
+3pala
+pala3t2
+3palä
+3pal2e
+pa3l2i
+1palm
+pal2ma
+pal2mä
+pal2m1o
+2palt
+pal2ta
+pal4tei
+pal2tr
+pa2m3a
+pa2nar
+pa4n3at
+pan3d
+pan4ds
+pa2neu
+panf4
+pang4
+pa4nisl
+pank4
+2panl
+2pann
+panne2
+pan4n3eb
+4pannu
+1pa2no
+pan3sl
+pan3t4h
+1panto
+2pantr
+panz2
+pan5ze
+1pap
+papi2
+papieren8
+papie8r7end
+pap2pr
+pa1q
+1para
+pa4r3aff
+par3akt
+pa4rant
+2parb
+1p2arc
+par3d
+2parer
+parer8geb
+1parf
+2parfö
+2parg
+pargel6d
+1park.
+par4k3am
+par4kau
+par4kr
+1parks
+par3m2
+par3ne
+1pa2ro
+2parp4
+2parr
+4parta
+1parti
+1partn
+3party
+par3z
+pas2e
+pa1s2p
+pas6sein
+passer4
+pas6serg
+pas2s1p
+pas2t
+pa2ßu
+pat1a
+pat4c
+pa3t4e2
+2patel
+1pat4h
+1pati
+1pat4r
+1pau
+2p1auf
+pa3uni
+2pausz
+1pav
+pay2
+1pä
+3päc
+päck3er
+3päd
+päde2
+pä2d1er
+3pär
+3pä4s3
+pä4t1e2h
+pä4tent
+pä4tep
+pä4t3erb
+pät3h
+pä2to
+pä2tr
+pät5s
+2p1b
+pbe1
+2p3c
+2p1d2
+pda2
+1pe.
+pe2a2
+pea4r
+pea4s
+p1e2b
+pech1
+1peda
+1peel
+pe2en
+2pef
+4p1eff
+1peg
+pei1
+2peic
+1peil
+p2eim
+2peis
+1peit
+pekt4i
+1p2el
+3pel.
+pe2l1a2
+pe4lai
+pe2l1ä
+peld4
+3pele
+pe4l1e2h
+pe2l1er
+pe2let
+pe2leu
+peli2d
+peli4n
+pe4l3ink
+pel3inn
+pel3k
+pel3l2a
+pel3lä
+pel3l4e
+pell2i
+pe2lob
+3pels4
+pel3sp
+1pem
+1pen
+pe3nal
+pe4nas
+pen3d2a
+pe4nen1
+pe4ni2t
+pe2n1o
+pens2
+3pen3si
+pen3so3
+pen3sz
+pent2a
+2pentw
+penty2
+pe2nu
+1pep
+pe3pi
+pept2
+pe1ra
+per2am
+per3as
+pe2r1ä
+pere2b
+perer4f
+pe3r2i3d
+3perio
+1perle
+1perlh
+3pero
+perra2
+per4r3an
+per4rä2
+per4ric
+per6rieg
+1pers
+2perse
+2persi
+3perso
+3persp
+peru2
+pe3run
+1perü
+perwa4r
+pe3s2a
+pes2e
+pese2n
+1pes5s2
+pes2t
+pest1o
+pe4stop
+3pet
+pet4r
+1pé
+2pf.
+p2f1ab
+p2fad
+p2faf
+pf1ai
+p2f1ak
+pf1am
+pf1ans
+p2fa2r
+pf3are
+p2f1au
+1pfä
+p2fär
+p2f1äu
+4pfe.
+p2fef
+p2fei
+pf1eim
+pf1ein
+pfe2l
+p3fen.
+p4fener
+p2fent
+p4f1ep
+pfe2r5a
+p4ferde
+pfer6pro
+pf4es
+pf3f4
+pffa3
+p2f1i2d
+pf1inn
+p2f1ins
+pf1lam
+pf4lan
+pf3lä
+pf4leg
+pf3lei
+pf3lo
+p2f3om
+p2for
+pf3r
+pf1ra
+pf4rü
+pfs2
+pf3sa
+pf3se
+pf3sl
+pf3so
+pf3sz
+pf3t4
+p2fum
+2p3g2
+pgra2
+1ph
+2ph.
+phal4te
+p1hand
+3phas
+p1hau
+phä1
+3phän
+2phb
+2phd
+2p1hei
+phen3d2
+phe4n1e
+phen3s
+2ph1ers
+2phf
+2phg
+phik1a
+phi4kan
+2phk
+ph2l
+2phm
+2phn
+p2ho.
+p2hob
+pho2s
+2phö
+ph4r
+2phro
+2phs
+ph3t4
+2phthe
+phu4s
+phu3t
+2p1hü
+3phy
+2phz
+pi2a1
+piab4
+pia3k4
+pi4ali
+pia3n
+piap2
+pia3s
+pi1ce
+pi2el
+piel3a2
+1pier
+pie2ra
+pie4reb
+pies4
+1pig
+pi3gl
+1pil
+pi3le
+3pilo
+pil4zer
+pil2zw
+p2im
+3pin.
+pi2nad
+3ping
+pingen4
+ping3s
+3pins.
+3pinse
+pin3s2p
+pi2o
+pi3o2i3
+pi3onu
+pi3os
+3pip
+pi2pe
+3pirate
+pi3ri
+3pirin
+1pis
+2piso
+pis2t
+pi3sto
+pit2a
+pi3t2h
+pit2s
+pitz2e
+pi2z1in
+2p1j
+2p1k2
+pku2
+1p2l2
+2pl.
+3pla
+p3lab
+4p3lad
+p3lah
+pla3na
+pla2y
+3plä
+2ple.
+ple1c
+ple2e
+p4leg
+ple3n2
+2p3ler
+p3les
+p3lic
+2plig
+3plik
+2p3lu
+2p3m2
+2p1n2
+1p2o
+pob2
+po1c
+3pock
+3pod
+3poe
+po2el
+2poh
+po2i
+po3id
+3poin
+3pol
+po2lan
+po2l1au
+pold2e
+po3li
+pol3lo
+polo3p
+pol3z2
+pom2ph
+2pond
+pont2
+po1ob
+po2p1ak
+po2p1ar
+po2pl
+po3pt
+po1rau
+porf4
+3portal
+por2th
+3porti
+3porto.
+3portos
+3portr
+por4tre
+por6tric
+pos3s2
+pos4t
+po2sta
+po4stad
+po2stä
+po4stei
+po4stem
+post3ra
+po2ta
+pot1ar
+3potä
+3pote
+pot2h
+po2t3in
+pott1r
+po2t1u
+po3un
+po2w4
+po3x
+pö2bl
+pö2c
+2p1p
+p2p1ab
+pp1ang
+pp1ans
+ppa2p
+p2pat
+pp1au
+ppe3e
+pp1ei
+ppeli5ne
+pp2e2n1
+ppe4na
+p2p1erz
+p2pf4
+pp1fr
+p2p1h2
+p2p1i4a
+p4p3lac
+p4plan
+pp3lä
+p2p3le
+pp3lis
+pp3oh
+p2p1ö2
+pp3p2
+p2p3ra
+p2p5rä
+pp3ren
+p2pri
+pp3rol
+pp3rot
+p2p3ru
+p4ps2
+pp3sa
+pp3sy
+ppt4
+pp5te
+p3puc
+p2pul
+p2p1um
+p2punk
+p3pur
+p2r2
+1prak
+pra4s3
+pra5sp
+1prax
+p4rä
+1präd
+1präf
+1präg
+1präl
+3präm
+1präp
+3präs
+1präv
+2pre.
+2prec
+3pred
+2pree1
+pre2ei
+2preg
+1prei
+3preis
+prei4s3c
+prei6sei
+prei4ss
+2preiz
+1prem
+pren4ga
+2p3rer
+1pres
+press4e
+1preß
+pri4e
+2prig
+pri2l1
+2pring
+prings4
+1prinz
+pri2t1
+prit3a
+priter4
+prit3t
+1priv
+1pro1
+3prob
+pro3be
+2proc
+7prod
+3prog
+3proj
+2pross
+2proß
+prot2e
+3proto
+2prott
+2prö
+1prüf
+1prüg
+2prüh
+2prün
+2p1s
+4ps.
+p3sat
+ps1id
+ps3k
+p2sö
+ps4pi
+pss2
+p2st1au
+pst3erh
+p2stu
+3p2sy
+4psys
+ps2ze
+2p1t
+pt1a
+pt2ab
+pta2g
+pt3a2t
+pt3ax
+p3te
+p4t1e2b
+p4t3ec
+p4t1ei
+p4tele
+p4temp
+4pten
+p4t1en2g
+p4t1ent
+p4t1ep
+pt3erei
+p4t1erw
+p4t1erz
+p4t1e2ti
+p2t3h
+p3ti
+p4t1in1
+pt3ing
+pto2mo
+pto2p
+p4tos
+pto2w
+ptpo4
+pt3r
+pt1s2
+pts4t
+pt1uh
+pt1um
+p3tung
+pt1urs
+p2tü4
+3p2ty
+pt3z2
+1pu
+pu1a
+pub4
+2puc
+pu2dr
+2p1uh
+2puk
+pu2kl
+pu2k1o
+pu2lin
+pul2sp
+pul2s1t
+3pulv
+2pulw
+pum2pl
+4pund
+pun2e
+pun2s
+2punt
+2pur
+pu2ra
+pu2rei
+pus2h
+pu3she
+3put
+pu5t2e
+put2s
+puzi3
+1püf
+pül3l
+2p1v
+2p1w
+pwa4r
+3py1
+py3t
+2p1z2
+qu4
+quel4la
+que3rel
+quer5n
+que4te.
+1queu
+1ra.
+r1aa
+ra2ab
+2raac
+2raal
+ra3ar
+r2a1as
+r1ab
+ra2b1ar
+r2abä
+1rabbi
+rab2bl
+2rabd
+ra2bei
+rab2er
+rab3erd
+2rabf
+2rabg
+2rabh
+1r4abi
+2rabk
+r2able
+ra2bli
+ra4b5lo
+2ra2br
+2rabs2
+2rabt
+2r3abw
+1raby
+2rabz
+r2ac.
+ra2ce
+2r1acet
+ra4cheb
+ra2cho
+4racht
+rach6t5rä
+ra2chu
+r2ack
+1r2ad
+r4ad.
+rada2
+ra4dam
+2radap
+3radar
+ra2dei
+rade5s
+3radf
+3radh
+3radio
+4radit
+3rado
+3radp
+ra4d1r
+rad5ri
+rad3t4
+ra2el
+r2af
+raf3ahn
+raf3ar
+rafe2
+ra2f1er
+raf3r
+rages4
+2ragg
+ra3gle
+4ragm
+ra2gn
+r2ago
+rag4sta
+1rah.
+rahle4n
+5r4ahm
+r1ahn
+2ra1ho
+ra3hö
+4raht
+r2ai
+2raic
+rail4l
+2r3air
+ra3ke
+2rakk
+3ra1k4l
+ra2kre
+ra2kro
+2rakti
+ra2kus
+3rakü
+2rakz
+r2al
+r4al.
+ra2la2
+ra4l3ab
+ral1ak
+ra3lamp
+rala4s
+ra2lä
+ral3b4
+3r4ald
+r4ale
+ra4l3end
+ra4lent
+ra4l5ern
+ra3lex
+r4ali
+ra2lid
+rali1e
+ra4lind
+ra4l3ing
+2r3alk.
+2r3alm.
+2ralp.
+4ralpe
+r4als
+ral3su
+r3alt
+3r4al3t4h
+ra2l3u
+3raly
+ra2mei
+ra2mer
+r2ami
+r2amm
+ram4man
+ram6mens
+ram6m5ers
+ram4mit
+ram4mu
+2ramn
+3ramsc
+2r1amt
+ramt2s
+ran3ade
+r1a2nal
+ra2nan
+ra2nar
+ra2nau
+2ranb
+r2anbe
+r4anda
+r4ande
+ran4dep
+ran4d3er
+3r2andi
+rand3s
+3raner
+2ranf
+2ranga
+ran6g5e6be
+1rangi
+r2angl
+rangs2
+rani1e
+r3a4nil
+ran2kr
+ran2kü
+4ranl
+2r1anm
+r2anmi
+r2anmu
+2ranna
+rano2i
+2r1anp
+2ranr
+2rans
+r2ans.
+ran4spa
+4r5antei
+r1anth
+2rantr
+1ranu
+2ranw
+r2anz.
+r2ap
+2rapf
+2rapo
+ra2pok
+ra2pos
+rap2pr
+2ra2pri
+2r1aq
+r1ar
+r2ar1a
+2rarc
+r2are
+3r4arei
+raren1
+r2arf4
+ra3rie
+rar3in
+ra3ris
+r3a4rist
+4r3arit
+r2ark
+raro2
+ra2rom
+2rart
+2rarz
+rar3zw
+r2a3s2
+r4as.
+ra4schl
+ra4sk
+ras3si
+ras3sp
+r4aste
+ra4st3ei
+r3asth
+ra4sto
+ras3tri
+2rasyl
+2raß
+1rat
+r4at.
+rat1a
+rat2ak
+ra2tan
+ra2t1ei
+r3atel
+ra3tes
+ra4tid
+2ratla
+2ratm
+rat2o
+2r3a2tom
+ra3tor
+rat4r
+r4ats
+2ratta
+2rattr
+4ratz
+rat3ze
+4rau.
+3raub.
+4raue
+rau3e4n
+2rauf
+rau3fä
+2rau3g
+3raum
+rau4m3ag
+rau4man
+rau5mes
+rau2m1i
+3raup
+4raur
+2rausb
+3raus2c
+2rausd
+2rausf
+2rausg
+raus8gewä
+2raush
+2rausl
+rau2sp
+2rauss
+raus8scheidu
+raus3tr
+2rausv
+2rausw
+2raut
+raut1r
+rau4tra
+rau4tro
+raut5s
+1raü
+r2ax
+raxe3
+raxi4s1
+r3axt
+4räb
+räch4s
+3r2äd
+4räf
+rä1fr
+4räg
+2räh
+4räm
+3rän.
+3räni
+3räns
+2räp
+2räq
+2r1är
+r2är.
+rä3ra
+rä1ro
+rä4sc
+räse2
+rä2st
+3rätse
+4rätz
+rä2u
+4räue
+räu2s
+räus2c
+räu7schen.
+2räuss
+2räuß
+4räut
+2räx
+4r1b
+r2b1ab
+r3bac
+rba4del
+rb2al
+r2bang
+r2bant
+rba3re
+rb1art
+r2barz
+rb1auf
+rbb2
+rb1ech
+rbe3erf
+rbei5d2
+rbe3inf
+rb3einh
+rbe3int
+r4belä
+rbel2o
+rbe3r2e
+rber6gin
+rb1erl
+rbe3rum
+r2bim
+r2binf
+rbit2a
+rbi3tu
+rb2la
+rb4la2d
+r2blan
+r8blasser
+r4b3last
+r3blat
+r3blau
+r2ble.
+r3blen
+rb3ler
+r2bleu
+rb2lin
+rb2lö
+rb3lös
+rbmas3
+rb2ob
+rb3ras
+rb3rea
+r8b7rechts
+rb4sam
+rb2sei
+rb2ser
+rb2s1o
+rb4stä
+rb2su
+rb4sz
+rb2u
+rbü4b
+4rc
+r1ce
+rce4n
+r1che.
+r1chen
+r1ch2i
+rch3l
+r3ch4lo
+rch3m
+rch3r
+rchs2
+rch3sp
+rch3t2a
+rchter6r
+rch1w
+r1ci
+r1cl
+r1ç
+4r1d
+rd2ac
+r2daf
+r2d1ak
+r2d1a2l
+rd2amm
+rd1an
+rdani1
+rd1ara
+rd1ark
+r2darz
+rdär2
+r3de.
+r2dei
+rd2ei.
+r4deis
+r2d1elb
+r2delf
+rdels2
+rdem6
+rden3d2
+r4dengl
+rde3ob
+rde3r4er
+rderin6s
+r4d3ernt
+r3des
+rde3sp
+r4d1ex
+r2d1inn
+rd1iri
+rd1ita
+r2dof
+r3don
+rd1os
+rd3oss
+r2dö
+rd3rat
+r2drau
+rd4ri
+rd5ris
+rd4rö
+r3d4rü
+rd2sän
+rd3s2k
+rd3s2z
+rd3th
+rdt4r
+rdt2s
+r2d1uk
+1re
+3re.
+rea2d
+rea6l5erw
+4re2am
+re3at.
+re3ats
+2reä
+re2b1a
+re2b1l
+reb1r
+reb3ra
+reb3so
+rech3ar
+4rechs
+2reck.
+2recki
+3red.
+4redd
+2redi
+re2dik
+3redn
+3redu
+re1e
+3refe
+4reff
+r2eff.
+3refl
+3refo
+3reg
+rege4l3ä
+4r1egg
+2reh
+re2hac
+re2har
+rehen1
+re4hene
+re4h3ent
+re2hi
+reh1l4
+re2h1o
+re3hol
+re2hü
+r2ei.
+r2eib
+rei4bel
+rei4ble
+2reid
+r2eie
+4reier.
+rei4fei
+4reifel
+2reig
+3reigä
+3reigeh
+r4eigel
+6reigens
+3reigi
+4reign
+3reigru
+rei3l2a
+rei3l2i
+2r1eilt
+3reim
+reim2p
+r1ein
+rein2a
+rei5nac
+rei3nal
+2reinb
+rein4du
+rei3n4ec
+reinen5
+2reinf
+re4info
+4reinn
+4r3einr
+rein8s7tre
+rein4sz
+rein6teg
+re1in2v
+4reisar
+4reisb
+2reisf
+2reish
+2reisr
+reister6
+rei6s5tro
+2reisw
+4reiti
+reit3s2
+re2ke
+4rekk
+r2el.
+re3lat
+2relb
+rel2e
+relea4
+re5lei
+re2lek
+4relem
+r2elev
+2relf
+2relit
+2relix
+r2ell
+rel4lar
+rel4lei
+re3lo
+r2els
+2relt
+relu2
+r4em.
+4remb
+rem2da
+re2m1ei
+r2emi
+re3mig
+2remis
+4remit
+4rempf
+rems1c
+rem4str
+2rem2u
+r4en.
+r2ena
+2rena.
+re4nac
+re3nal
+re4n3an
+r1endg
+3rendi
+ren3dr
+ren2eu
+5renf
+4rengag
+2rengp
+3renh
+re2ni
+3renl
+3renm
+ren4nar
+ren6nene
+ren6sein
+ren6serg
+rens2p
+2rentd
+2rentf
+3rentfo
+2r1entg
+r3enthä
+2r1entl
+2r1ents
+2rentw
+2rentz
+r2enz
+ren6z5er6f
+renzer6l
+ren6z5er6s
+renzer6w
+ren4z3in
+ren2zw
+re2ob
+re1on
+re3or
+3repe
+4re2pen
+2repi
+re2pis
+2repoc
+2r1e2pos
+4repp
+3repu
+3r4er.
+rera2
+2r1erb
+rer2bi
+3r2erbr
+2r1erd
+rere2
+4r3ereig
+r1erek
+re2r1ep
+r2erer
+2r1erf
+4rerfah
+r4erfe
+3r2erfr
+rer2fü
+r1erg
+4r3ergeb
+5rergebü
+r4ergen
+3r4erges
+2rergo
+rer2gr
+r4ergru
+rer2hö
+re3rin
+r1erk
+rer4kan
+rer2ke
+4r3erken
+3r2erki
+3r2erko
+r1erl
+2r3er2la
+5r4erlag
+r3erleb
+r2erli
+2rerlö
+2r1erm
+rer2n
+2r1ernä
+r1erne
+2r1erni
+4r3erns
+4r1ernt
+re1ro
+re2rob
+re4rosi
+2r1er2ö
+r1erre
+rer4reg
+rer4rei
+r1erri
+5r2ers.
+2r1ersa
+rer5sc
+r6erschi
+r2erse
+2rersp
+rer4sta
+r6erstad
+r1ert4
+r2erte
+4rerträ
+r1erw
+rer4wac
+rer4wec
+r4erwes
+2r1erz
+rer2zä
+3r2erzy
+3r4es.
+re2sa
+re4sam
+re3sar
+re4schw
+3rese
+re4se2h
+3reson
+res2po
+2ress
+4resse
+res6s5erw
+res4sto
+4ressu
+3rest
+re6stent
+re4stra
+4restu
+3resu
+2re2ß1
+re2t1ak
+re2tau
+re2thy
+re4trol
+re2u
+reu4eri
+reu3g2
+2reul
+re3uni
+2r1eur
+2reü
+4r3eva
+2r1evid
+rewa4r
+re2wi
+2rewo
+2r1e2x1
+2rezi
+1ré
+4r1f
+r5fahrt
+rfall4s
+rfäs3
+r2fent
+r3f2es
+rff2
+rf3fe
+rfi4le.
+r4fland
+r3f4lä
+rf3lic
+rf4lö
+r3flü
+r2fo2b
+rfolg4s
+r3foli
+r3fot
+r4frauc
+rf4ru
+rf4rü
+rf4sam
+rf2s1ä
+rf2su
+rf2ta
+rf4tin
+rft4r
+rf2u
+rfzu3
+2r1g
+r2g1a2d
+r2g1ah
+r2g1ak
+rga4ner
+r2g1ap
+r2garb
+rg3art.
+r2g1ask
+rgas2t
+rga5stes
+rga3su
+rgd2
+rge4an
+rge2bl
+r2g1e2c
+r3g2el
+rge4l3er
+rgen6sem
+rgen4z3w
+r4ge4tap
+r2geto
+r7gie
+rgi4sel
+r2glan
+rgleich8s7
+r2gleu
+r2glig
+rg2log
+rg2lu
+r2g3na
+r2gne
+r2g3ni
+r2g3no
+r2g3oa
+r2go4b
+r3gog
+rg3op
+r2g1or
+rgö2
+r2g1öd
+r2g3ral
+rg4rau
+r2greg
+r2gres
+r2gret
+rg3rin
+rgro5sse
+r3grun
+rg3rüs
+rg3se
+rgs2ei
+rg4sel
+rg3s4i
+rg1sp
+rgs2pe
+rgs2po
+rgs4ti
+rgs2tu
+rg1su
+r1h4
+2rh.
+2rha
+r2ha.
+r4haltb
+r3han
+2rhä
+r2he.
+r5hea
+2rheb
+2rhef
+2rheit
+2rher
+2rhi
+2rhof
+rho2i3
+2rhol
+2rhot
+2rhöl
+2rhs
+2rhü
+1ri
+ria3ne
+ri2ano
+ri2ast
+ri3at
+ri4atr
+rib2bl
+ri1ce
+ri1cha
+richt8spo
+3richtu
+ri2con
+ri2dau
+ri3de.
+4ridee
+ri2de2l
+rid3r
+ri4ds
+r2ie
+rieb6ste
+rief1a
+4riefm
+rie2f3r
+rieg4s
+ri2e1i
+riein1
+ri1el
+rie3l2a
+ri3els
+ri4enä
+riene2
+ri3eni
+rie2nu
+ri1er.
+rie3re
+riere4n
+ri1eu
+ri2f1a
+ri2fä
+ri2fei
+ri2fer
+rif6f5end
+rif4fer
+ri2f1o
+ri2fr
+rif4ter
+3rig
+4riga
+4r3i2gel
+ri4gene
+5rigj
+rig1l
+4rigr
+4rij
+ri2kar
+ri2kä
+ri2kin
+ri2kn
+ri4kone
+ri2kor
+2rima
+ri2mag
+ri2mau
+ri2me.
+2rimm
+2rimp
+rim2s
+rin2c
+r1ind
+rin4dex
+rin6dize
+2rindu
+ri3n2e
+rine1i
+2r1inf
+rin2fo
+3r2infr
+rin2ga
+ring3le
+rin2gr
+2r1inh
+2rinit
+4rinj
+4rink
+rin2kl
+rin2ko
+rin2kr
+2rinl
+6r5innenm
+4r3inner
+2r1innr
+r1innu
+4r1inq
+2r1ins2
+3r2ins.
+rin4sek
+rin2so
+r4inspi
+3r2insy
+2rint
+4rinte
+rin4t5re
+2r1inv
+ri2ob
+4r1ir
+r2is
+ris2a
+ri3s4an
+ri4sch3o
+ri4schw
+3risik
+ri3s2ko
+rismu2
+r3iso
+2risol
+ri4s3p
+r3isr
+3riss
+rist5ers
+ristes4
+ri6stess
+ri4st3r
+3ri2ß1
+r2it
+rit2a
+r3i2tal
+rit3ant
+2ri3t4r
+rit1s2
+rit4t3au
+rit4tei
+3ritter
+rit2to
+rit2t1r
+5ritu
+rix1
+ri3xi
+1rí
+2r1j
+4r1k
+rka2b5l
+r2k1ak
+rk1all
+rk2am
+rk1are
+rk1asp
+rkauf4s
+r2k1äh
+r2kef
+r3kel
+r4kelem
+rke2n1
+rk5ersta
+r2k1erw
+r3ket
+r2k1im
+rk4las
+rk4lau
+rk4lim
+r2klis
+rk2lo
+rk2lu
+rk4n
+rk5nu
+r2kob
+r3kol
+r3kon
+rk1o4ri
+r2kou
+rk2ö
+rk3räu
+r3kri
+rk3rin
+r2k3rom
+r2krou
+rk2sei
+rk2sel
+rk2ser
+rk2so
+rk2sp
+rk3spi
+rkstati6
+rk4stec
+rk4stoc
+rk2ta
+rk2tel
+rk4t3eng
+rk4t3erf
+rk4terg
+rk4t3erl
+rkt3ers
+rk6tersc
+rk4t3erw
+rk4t3erz
+rk4teta
+rk2tin
+rk2t1o2
+rkto4b
+rk2t3r
+rk2tum
+rk2um
+rku2n
+rku2sa
+rkus3s
+rku2s1t
+r2küb
+2r1l
+rl2ab
+r3lag
+r5land
+rlan4d3i
+r2l1ar
+r2l1a4sc
+rlas2t
+r2l3aug
+rle2a
+r3lec
+r3lep
+r3lex
+rlg4
+r3l2i
+rli4ne.
+r3l2o
+rlou1
+rl2ö
+rlös5s
+rls2a
+rl2spr
+rl2sto
+rl3t
+r3l2u
+rlus2t
+rlu6ster
+rlu4str
+r3ly
+rlz2
+4r1m
+r2mab
+r2m1ad
+rma2la
+rm1ald
+rm1ami
+r2m1ank
+r4mantr
+rm1anz
+r2m3aph
+r2marc
+r2marz
+rma4spe
+rma5ssen
+rmas8sens
+rmat2o
+rm2är
+rm3d2
+r4m3einh
+rme4na
+rm2ene
+r2ment
+r2meo
+r2m1erh
+r2m1erl
+r2m1erp
+rm2es
+rme3sa
+rme3st
+rmeta2
+r2mide
+rmi6nanz
+rminen4
+rmi6neng
+rm3m
+rm1o2ri
+rm3p2
+rms2
+rm3sa
+rm3sk
+rm3sta
+rm3t2
+rmu2n
+r4muna
+r2muni
+2rn
+rna2b
+r3nad
+rn4ade
+r3nage
+r2n1all
+rna4n
+rn4and
+rn3ani
+r2nanz
+rna2r
+rn3are
+r4n3ari
+r4n1a4st
+r4n3att
+r2nau
+rn3aug
+rn3de
+rn3d4r
+r4nef
+rn2eid
+r4neif
+r4neis
+rn1ema
+rne2n
+rn1ene
+rn2eng
+r2n1ep
+r4n1erg
+rn4erhi
+r4n1erl
+r4n1ert
+r4n1erw
+r4nerz
+r5nes
+rn2e2t
+rne4tem
+rn2eu
+rne3uf
+r4nex
+rn3f
+rn3g2
+r2nid
+r2nin
+r3nit
+rnk2
+rnn2
+r3nod
+rn2oh
+rn3oly
+r2n1op
+r2n1or
+rn1ö
+rnö2d
+rn3s2a
+rn3s2ä
+rn3s4p
+rns2u
+rn3s2z
+rn3t2a
+rn3t2e
+rn1ur
+r1nü
+r1ny
+rnz2
+2robj
+rob2l
+1robo
+ro2bo2r
+ro2bre
+2robs
+ro1ch
+roch2a
+3rock.
+r2o3de
+ro3e4
+2roff
+ro3fl
+4rog.
+rog2a
+3rogg
+roh1l
+4rohn
+ro2hö
+3rohr
+3roi
+ro3in
+rok2l
+ro3le
+ro2liv
+rol4lan
+rolle4
+roll4en
+rol6lerg
+rol6lerw
+rolli4n
+rol6lini
+2roly
+4rom.
+ro2mad
+ro2mal
+3roman.
+2romb
+romen3e
+ro2m1er2
+2romn
+4romt
+r2on
+ro3n4ab
+ro2nan
+3rond
+4ronk
+3ronn
+rons2
+ron4tan
+ron6tend
+ron2t3r
+ron2t1u
+ro1ny
+ro1o2f
+2ro2pf
+1ropl
+2ropt
+r1or
+ro2r3al
+ro2rat
+2rorc
+ro2rel
+ro2ro
+ror3th
+rort4s
+ror2ü
+ro3sh
+ro3s2i
+ro5s2k
+ros2p
+ros4san
+ross1c
+ros4st
+ro3sta
+ros3tel
+ro2st1r
+ro2sum
+4r3osz
+ro2ßi
+ro2ßu
+ro2tan
+rot3au
+ro2tä
+ro3te
+ro2tei
+ro2t3ho
+ro2tru
+rot1s
+rots2o
+3roul
+ro3unt
+5rout
+4roy
+rö2b3l
+rö2du
+2rö2f
+3röh
+2r1ök
+1röl
+2röl.
+rö3le
+r1ölp
+3römi
+r1ör
+r2ös.
+rös1c
+r2ö3se
+1rösl
+4röß
+3rötu
+2r1p2
+r3pa
+r3pe
+rperer5
+rper3in
+rpf4
+r2pli
+rp4lu
+rpo4str
+rp3se
+rps1t
+r4pt
+r3pu
+2r1q
+2r1r
+rr2ab
+rra4s3s
+rrat2s
+rr1auf
+rr1äm
+rrb2
+rr1c
+r5rega
+rr2ei
+rre2le
+rre2pa
+rr2er
+rrer2s
+r3res
+rres2t
+rre2ve
+rr2hen
+rr2hos
+rr2i
+rri3k2
+rrm2
+rrn3au
+rr2o
+rr3obs
+rro3m
+rro2re
+rr2th
+r3r2u
+r3r2ü
+rrz2
+4r1s
+r3sabo
+r2sa2d
+rs2al
+r4samp
+r4s1amt
+rs2an
+rs3ana
+r4sanf
+r4s3ang
+rs3anm
+r4sanp
+rs3ar
+rs4ark
+r4sarm
+rsch3e4b
+r3schen
+r6scherl
+r3schu
+r2s1ebe
+rse2e
+r2s1ef
+r2sein
+rse2n
+r3sena
+rs2end
+rse4ne
+r2sepi
+rs1ere
+r2serh
+rs1ers
+r2serz
+rse2t
+rs1eta
+rs2ext
+r3s2hav
+r3shir
+r3sho
+rs2hor
+r4shu
+rs2il
+rs2ka
+rs2kel
+rs2ki
+rs2kl
+r4skor
+r3s4kri
+r4sky
+rs4mog
+r3s4no
+r2sop
+r4s3ort.
+rs2p4
+rspa3s
+r2s3ph
+r3spi
+r3spl
+rs4por
+r2spun
+rs3s2
+rst3abl
+r5stad
+rst3ala
+r4stale
+r4stans
+r4stant
+r2stas
+rs2tau
+rs2tea
+rs2tee
+rst5eing
+r6st5eint
+rster2
+rst4erb
+r6sterbt
+r4st3erl
+r4sterö
+r4st3erw
+rs2t3h
+rst3ing
+r2stip
+r2stit
+rs2tob
+r2s1tot
+rs2tra
+rst3ran
+r6strang
+r4stris
+rs2tu
+rsuch4s
+r3suf
+rsü3s
+r3sy
+rs2zin
+r1ß
+4r1t
+rt1abs
+r2t1ad
+r2t3ae
+rt1akr
+r4t3albe
+rta3l2e
+r2t1all
+rt1am
+r3t2ame
+rt1an
+rt2anb
+r2tang
+r2tanw
+r2t1ar
+rt3att
+r4tauft
+rt3äh
+rt1änd
+rt1ärm
+r3te.
+rte1e2
+rt1ein
+rt4eind
+r4t3einh
+r2telf
+rte3li
+rtel6lei
+rte2n1
+r3ten.
+rte4na
+rten3s2
+r4t3ents
+rten3z
+rteo2
+rt3erei
+r6tereig
+r4terfa
+r4ter4fo
+rt1erh
+rt1erk
+r4t3erla
+rter8löse
+rter6mit
+r4t3ernä
+r2terö
+rter4re
+rt1ers
+rt4ersp
+rt1erz
+r3tes2
+rte3sk
+r2texa
+rt3he
+r2t3hi
+rt3hol
+rt2hum
+r2tid
+rtik2
+r2t1ima
+rt3inf
+rt2is
+r2t1o4b
+r3top.
+rto1pf
+rt1or
+r2torg
+r3tork
+rt3rams
+rt3rand
+rtra4s3
+rt3rati
+rt3rec
+r3tres
+rt3ris
+rt3rol
+rt3roma
+r3trop
+r2trou
+r4ts
+rt3sän
+rt3sch
+rt4seh
+rts2el
+rt3sex
+rts3ing
+rts1o
+rt1spe
+rt4s3tan
+rts4tie
+rt3t4
+rt1umb
+rt2u3na
+r4tunt
+r2t1up
+r2t1urt
+rtu2t
+r2t3ute
+rt3z2
+1ru
+ru1a
+ru4ale
+ru3a2r3
+rube4
+rub2i
+ru3ches
+rucht3s
+rude2a
+ru2dr
+3ruf
+ru2fa
+ruff4
+ruf2s1
+ruf4ter
+ru2g3r
+3ruhm
+2r1uhr
+3ruin
+ru1ins
+ru1is
+2rum
+4r3umd
+4r3umf
+4r3umg
+ru2mi
+4r3uml
+4r3umsa
+4r3umw
+4rumz
+2r1una
+2rund
+run4d1a
+runden5e
+run4d3er
+run2e
+runei2
+4r1unf
+run2ga
+2rungl
+4r1u2ni
+r3unio
+ru4nis.
+run2kr
+4r1unl
+2r1unm
+4runn
+4runr
+r1unse
+4r3unt
+4runw
+2rupd
+ru3pr
+4r3u2r
+rur1e
+5ru3ro
+ru2si
+rus2p
+rus3sen
+rus2s1p
+rus6st
+rus2t
+ru2tab
+rute4
+ru2tei
+ru2t1el
+rut3h
+ru2t1o2
+ru2t3r
+rut6scha
+4ruz
+ru2z1w
+1rü
+2rüb
+4rübu
+rü1ch
+rücks2
+rück5sta
+rü2hel
+rüher2
+rüh1l
+4rümm
+rün3z
+rü3ss
+rü4ssi
+2r1v
+rv2el
+rve4n1e
+rvenen4
+r4ventz
+rve5s
+r3v2o
+rv2s
+2r1w
+rwe4gel
+r3wei
+rwelt4s
+r5werk
+r5wert
+r2wo.
+r3woh
+r3wort
+rwun3s
+4r1x
+1ry
+ry2c
+ry3s2t
+rysti1
+2r1z
+rz2ans
+r2zant
+r2zar
+r2zat
+r3zähn
+rz2än
+rzell4a
+r5zene
+rz1eng
+r4z3ents
+rze2p
+rze2ra
+r2z1erd
+r2z1erf
+r2z1erg
+rz1erk
+r2z1erl
+r2z1erw
+rzes2
+r2z1ess
+rz1id
+rz1int
+rzir3
+rz2of
+r2z3ot
+rz2tan
+rz2th
+rzu4g3l
+r2zwä
+r3z2wec
+r2zwir
+1sa
+3sa.
+3s2aa
+2s1a2b
+sa3b2ä
+4sabd
+3sabet
+s3abi
+4sabm
+sa4bor
+4s3abs
+4s1acc
+5s2ache
+sa2cho
+sachs2
+sach3t
+s2ack
+s1ad
+2s3ada
+2s3adm
+2s3a2dr
+sa4fe
+4s1aff
+sa1f4r
+3saft
+saf2tr
+3sag
+sag2e
+sa3ge.
+5sa3gen.
+4s3a4gent
+4s1agg
+sa2git
+sag4n
+4s1a2gr
+3sahs
+3s2ai
+sa3i2k1
+sail4
+sai4r
+2s1ak
+sa2ka
+sak2e
+3saki
+4sakk
+4sakt
+3s2al.
+s2al2a
+sa2l3an
+sa2lar
+sa3lat
+sal3bl
+3sald
+sa4lerk
+3sali
+sa2l1id
+s1all
+sal4le.
+sallo3
+3salo
+sal2se
+2s1alt
+s2al3t4h
+3salz
+3sam
+s1ama
+4sa2mat
+s2ame
+4s3a2mei
+s3ameri
+5s2amm
+6s3amma
+4s1amn
+s1am3p4
+4samph
+s2ams
+s1an
+s2an.
+2sa2na
+sa2nä
+2s3anb
+s2an2c
+3s2and
+san4dan
+san4dri
+sand3s
+sa2ner
+3sang.
+2s3anh
+3sani
+3sanken
+2s3anl
+2sanm
+2sa2no
+2s3anp
+2s3ans
+s4anse
+san4sk
+san3sp
+4santei
+4santr
+4s3anw
+2s3anz
+s4anz.
+2s1ap
+sa2pe
+sa2po
+sap3p
+3sapr
+2s1aq
+2s1ar
+3s4ar.
+3sara
+4sarb
+3s2ard
+s2are
+s3area
+sar2ga
+sa3rin
+s2ark
+sa2rom
+s3arr
+s2ars
+4sart
+sa4r1u2
+2s1asc
+2s1a4si
+2s1a2sp
+4s1asy
+3saß
+sat2a
+sa4t3ant
+sat1ei
+2s3a2tem
+s3ath
+3sat2i
+2s3atl
+2satm
+sat2o
+sa2tol
+sa2tom
+sa2tr
+s3atta
+4s3attr
+3satz
+5satza
+sat4zel
+sat4z3en
+s1au
+3sau.
+3sauc
+3sau2e
+2sauf
+4s3aufb
+saug3le
+sau2gr
+sau3h
+3saum
+sauri1
+2saus
+3saus.
+4s3ausb
+4sausf
+4sausg
+sau2sp
+4sauss
+3sauste
+4s3ausw
+2sauß
+s1av
+sa2ve
+sa2xi
+sa3xo
+sa2y
+1s2äb
+3s2äc
+3s2äg
+s1äh
+4s3ähn
+2s1ält
+2s1äm
+4s3änd
+3sänf
+4s3äp
+2säq
+2s1är
+3s2ärg
+sä4s3
+sä5sse
+3s2ät
+1säu
+2säuß
+4s3b4
+sba4ne
+sbau6men
+sbe3r2e
+sbus3
+1sc
+2sc.
+2scab
+2scac
+2scaf
+2scal
+2scam
+2scar
+s1ce
+4s3cei
+sc4h
+6sch.
+s2chal
+sch3ana
+4schanc
+4schang
+5schanz
+4schao
+4s3chara
+4sch3ar5m
+s2chä
+2schäq
+2schb
+2schc
+2schd
+sch2e
+3sche.
+4schech
+6schef.
+6schefi
+6schefs
+4sch3ei.
+sch6ein.
+4schemp
+s4cher
+sch5erfü
+3sches
+4schess
+s2cheu
+4schex
+2schf
+2schg
+2schh
+schi4d
+schi4e
+5schif
+4schiru
+3schis
+2schk
+sch4lac
+4schle.
+6schlein
+4schloc
+4schlöc
+4schmas
+4schmed
+4schmoh
+2schmö
+4schmüh
+2schmy
+2schn.
+4schneb
+4schnut
+4schobj
+4schorc
+2schox
+4schör
+4schp
+2schq
+4schrad
+4schre.
+4schrep
+4schrin
+s3chris
+sch3rom
+4schron
+4schrou
+6schs2
+sch3sk
+6scht
+sch3t2a
+sch3te
+scht2i
+scht2o
+scht1s
+s4chu
+4schunt
+5schü
+2schv
+sch4web
+4schweg
+6schwerk
+4schwet
+4schwid
+s5chy
+2schz
+2scj
+6s1cl
+2sco
+3s2cop
+s2cr
+2scs
+2scu
+4s1d2
+sda3me
+sdien4e
+s3do
+sd4r
+1se
+se3ar
+se3at.
+seau4
+seb2
+5sebä
+2s1e2ben
+2s1echo
+sech6str
+2s1echt
+2s1eck
+se2dik
+3see
+see1i4
+se2e3ig
+se2el
+see3len
+se3en.
+seen2e
+se3er.
+see1ra
+seer2e
+se3e2r1i
+se1ers
+see5s2
+see3t
+2s3eff
+sef4l
+3s2eg
+s3e2gal
+se2gl
+seg4r
+3seh
+seh1a
+se2ha2g
+se2hel
+seher4e
+se4herk
+se2h1in
+seh3l
+se2h3ö
+seh3re
+seh5r2i
+seh3s
+seh3t
+se2hüb
+2sei.
+2s1eic
+2s1eid.
+sei3da
+4s3eifer
+2s1eig
+sei3le
+s2eim
+s1ein
+5s2ein.
+2seinb
+seinbus6
+sein4du
+2sei3ne
+seine3i
+4seinfl
+sein4fo
+2seing
+2s3einh
+2seini
+2seink
+2seinl
+2seinn
+2seinr
+s4eins.
+4seinsc
+4seinsp
+sein8stit
+sein6str
+4seintr
+2seinw
+2s3einz
+2s1eis
+3s2eit
+seits1
+3sek
+4s1e2kel
+4sekz
+s2el.
+se2l1a
+se3lad
+3s2elb
+sel1ec
+se2lef
+2s3e2leg
+2selem
+se2ler
+sel3ers
+2self.
+s1e2lit
+2s1elix
+s2ell
+sel3le
+se2lob
+s2els
+sel3sz
+selz2
+sem2a
+sem2e
+2s1emis
+2s3emp
+s4en.
+se4nad
+se3nal
+se4nas
+sen3au
+s2enb
+3sendet
+4s1endl
+sen3d4r
+senen1
+se4nene
+4senerg
+se4ners
+s2enf
+5seni
+se2n1im
+3senku
+se2no
+se4nott
+se4noz
+s2ensa
+sen4s3e4h
+4sensem
+s2enso
+senst2
+sen8s7turm
+sent2a
+sen3tä
+2sentd
+2sentf
+4sentg
+4sentn
+sen3tr
+2s1ents
+2sentw
+2sentz
+se4n3u
+3senva
+sen4zer
+sen3zw
+seo2r
+se2pen
+5seq
+s4er.
+se2r3a2d
+ser3al
+ser3ass
+ser3äus
+serb2
+s3erbe.
+se2re2b
+se4r3eim
+s4eren
+se4r3enk
+s4erfe
+s2erfr
+s1erfü
+4serfül
+ser3g2
+s1ergä
+s2ergr
+s1erh
+5serie
+ser3k4
+3serl.
+4s3ermit
+s2ern.
+2s1ernä
+s3erneu
+4s3ernt
+s1e2ros
+s1erot
+s1erö
+s2ers.
+2sersa
+ser6sehn
+4ser4set
+se3ru
+se4ruh
+ser2um
+s1e4rup
+3s4er3v
+s1erz
+s4es.
+se3s2a
+se2sel
+2sesh
+se3sk
+s1essa
+sest3ri
+set2a
+2s1e4tap
+se2tat
+s1e2th
+2s1e2tik
+set1s
+se3tun
+2se2ty
+3setz
+3seuc
+4s3eul
+se1u2n
+s1ex
+5sex.
+2sexa
+se2x3en
+s2exi
+s2exo
+4sexp
+sex3t4r
+2sexz
+6s3f4
+sfal6l5er
+4s3g4
+sgang4
+sga3su
+sge3s2
+sgro3
+2s1h
+4sh.
+sh2a
+3s2ha.
+s3hac
+shal4li
+shalt2
+4shan
+4shc
+sh2e
+1shen
+4shf
+3shi.
+3shid
+s4hig
+s2hip
+s2hi4r
+4shk
+sh3n
+4shoc
+4shof
+4shom
+3s2hop
+sho4re
+5show
+4shö
+sh4r2
+4shs
+4sht
+s3hu
+4s3hü
+1si
+si2ad
+sial5l
+sia4s
+2siat
+sib4
+5s4i1c
+si2cha
+sid2
+s2ide.
+s2i3do
+2sidy
+3s4ie
+sie2bu
+sieh1
+sie4hes
+si3e2n
+si1err
+si1f4
+si2g1a
+si2gei
+sig4n
+si2g3r
+sigs2
+si2k1ab
+si2kak
+si2kar
+si2k1ä
+si2k1el
+siken2
+sik3erl
+si2ket
+si2k3i
+sikin1
+si2k3n
+siko3
+si2k3r
+sik3s2
+sik3t4
+si2ku
+sil2br
+sil2e
+3sili
+s1ill
+3silo
+3sim.
+2s1imm
+sim2st
+3simu
+si3n4a
+2s1ind
+2s1inf
+sing1a
+sin3g4le
+sin2g3r
+sing3s2
+2s1inh
+s1in1i1
+sinner4
+2s1inno
+2s1inq
+2s1ins
+s2ins.
+2s1int
+2s1inv
+3sio
+sirn4
+2sirr
+3siru
+3sis
+si2sa
+si4sam
+si4schu
+si2s1e2
+si4sis
+s1i2so
+si2s3p
+sis3s
+s2ist
+si4star
+si3sto
+si2stu
+si2su
+3sit
+si2tal
+si2tau
+si2tra
+s2it2u
+3siu
+si2va
+sive3
+si4v3erf
+siv1o4
+si2vor
+siz2
+1sí
+4s3j
+2s1k2
+4sk.
+sk4a
+4s3kab
+s3kad
+1skala
+4skalk
+4s3kam
+4skana
+4skanä
+3skanda
+4s3kap
+4s3kar
+4s3kas
+ska4te.
+4skateg
+ska4tes
+ska2to
+4skä
+4skb
+ske2li
+4sken
+3skep
+4sker
+s3kh
+3s2ki.
+3s2kif
+3s2kik
+s3kin
+4skir
+s2kis.
+3skiz
+sk4l
+4s3klas
+3s2klav
+4s3klu
+4sk4n
+4skoh
+4skol
+4skom
+4skon
+3skop.
+sko2pr
+4skos
+4skow
+4skö
+4skra
+4skro
+4sk3s
+4sk3t2
+skto2
+3skulp
+4skun
+sku2s3
+4skü
+4skv
+2s1l2
+4sl.
+s3lab
+3slal
+sla2ve
+s2law
+sl3b
+4s5le
+s3li
+3s4lip
+4sln
+s3lo.
+slo3be
+s3loc
+s3loe
+s3lof
+3s2low
+s3lu
+s3ly
+2s3m4
+sma3b4
+sma3sc
+sme3na
+smi2t3
+2s3n2
+snab4
+sni4a
+sni3er.
+sni3ers
+4s5not
+3so.
+2s3oas
+2s1o2b
+3s2o3ba
+4sobj
+4s3obo
+so1ch
+so3et
+s1ofe
+so2fen
+3soft
+3sog
+s1o2he
+3sohl
+sohle2
+2s3ohng
+2s1ohr
+3soi
+2s3ok
+1sol
+3sol.
+so3la
+so4lau
+3sold
+3sole
+so2l1ei
+so3li
+sol2la2
+sol4ler
+so3l2o
+4s3o2ly
+1som
+1son
+son2a
+sone4
+son3sä
+son4s1o
+so3o
+s1op
+2sope
+2sopf
+3sopr
+1sorb
+s1orc
+2s1ord
+sore2
+so2rei
+so2rel
+2s1orga
+so1rh
+2s1o2rie
+so2ro
+3sorp
+3s2orti
+so4ru
+1so3s2
+3s2os.
+3sosc
+so4sk
+2so4sm
+2s1o4st
+s1o4sz
+3so3ß
+soth1o
+3sott
+soun2
+sound1
+so3unds
+so3unt
+s1out
+3sov
+3sow
+2s1ox
+3soz
+s3o4ze
+s1ö2d
+2sö2f
+2s1ök
+2s1ö4l
+2s1ö4s
+sp2
+2sp.
+2spaa
+s2pace
+2spack
+2spag
+spa2ge
+2spak
+2spala
+2spalä
+3spalt
+spa2m
+1span
+s2pan.
+3spannu
+2spano
+3spant
+2spanz
+4spap
+2s3para
+1spare
+s4parka
+2sparo
+1sparr
+5s6parten
+4spartn
+4sparty
+spas2
+spa3sse
+spa5ssi
+1spat.
+2spati
+2spatr
+2spau
+3s2paz
+s2pä
+2späd
+3späh
+2spär
+2späs
+2spe.
+2speg
+1spei
+3speic
+4spein
+1spend
+4spensi
+spe3p4
+s2pera
+3sperb
+3s2perg
+s1peri
+4sperle
+2spero
+s2perr
+sper4ra
+2spers
+4spet
+3s4pez
+2s3pf4
+4spha
+s2phä
+3sphär
+s3phe
+1spi
+3spi4e
+4s3pier
+spier4r
+s3pi2k
+4s3pil
+2spip
+4s3pis
+3s2pit
+3s2piz
+2spl
+4spla
+4splä
+3s2pli
+4s3p4lu
+2s3pn
+2spod
+4spoe
+s2poi
+2s3pok
+4spol
+1spon
+s2pons
+2spop
+1spor
+s2pore
+s2porn
+4s3pos
+4spote
+4spr.
+3s2prac
+s2pran
+2sprax
+3spräc
+2spräm
+s2prän
+2spräs
+3sprec
+2spred
+4spreis
+5s2pren
+2s3pres
+3spring
+4sprinz
+s2prit
+4sprob
+4sprod
+2sprog
+4sproj
+2sprop
+5spross
+2sproz
+3sprö
+3s2pru
+3sprüc
+2sprüf
+1sprün
+2s3ps
+2spt
+2spub
+2spud
+1spuk
+3s2pule
+s3pun
+2spup
+3spur
+spu4rer
+2sput
+1spü
+2spy
+2s1q
+4s3r4
+sra4s3s
+srat2s
+sre3cha
+sreli1
+sre4th
+sro3tu
+srö2s
+srücker6
+2s1s
+6ss.
+4ssa
+s3sa3ba
+ssa3bl
+ssa5bo
+s5sack
+ss2ad
+ss4agi
+s2s1aj
+ss3alba
+s2sall
+s4samt
+s2sanf
+s4sang
+s4sano
+s4sans
+ss2ant
+s4sanz
+ss2ara
+s3sars
+ss3att
+ssau3e
+ssau4r
+4s3s2ä
+4ssb
+6ssc
+s2sce
+ssch2
+s2scr
+4ssd
+4ss1ec
+4sse1e
+4ssef
+4sseg
+4sseh
+sseh2a
+4ssei
+ss4eind
+sse3int
+4ssek
+4sselek
+sse2lö
+4ssemp
+6ssendet
+4s3sendu
+6ssenerg
+ssenmas6
+ssen6sem
+4ssentl
+4ssentz
+ss1epe
+sse6ratt
+ss2erf
+ss3erfü
+ss4ergr
+sser4hö
+sser6mit
+s2serö
+sser4öf
+4ss3erse
+ss4eru
+sser6wei
+4ssesc
+3ssesh
+sses4sa
+4ss3e4str
+sse3ta
+s3sety
+4ssez
+4ssf
+4ssg
+4ssh
+ss3hi
+4ssic
+ss3i2ko
+s2simp
+6ssio
+s4s1isr
+4ssit
+4ssj
+4ssk
+s3skala
+4s4s3l
+4ssm
+4ssn
+4sso
+sso2f
+ss1off
+ssoi4
+s3sol
+s4sop
+ss2orc
+4ssö
+4ssp
+ss2pen
+ss2phi
+s3sprä
+s3spri
+ssquet4
+4ssr
+4s4s3s4
+sssau4
+4sst
+sst2a
+s5stad
+s6stag
+s3stä
+ss1t2e
+s4ste.
+s5stel
+s5s2tep
+s5stern
+s4stes
+s4stet
+s5steu
+ss1tis
+s3sto
+s5stop
+ss1tor
+s3stras
+s3strat
+s3strö
+s3stü
+4ssum
+s2sumg
+s2sumr
+ss1ums
+4ssunt
+4ssup
+ss2ur
+s3sus
+4ssü
+4ssv
+4ssw
+4s3sy
+4ssz
+1st
+6st.
+3s4ta.
+5staa
+5stab.
+2stabb
+4stabel
+2stabg
+2stabh
+4stabit
+2stabl
+2stabn
+2stabt
+2stabz
+st2ac
+3s2tad
+4stada
+4stadm
+4stadr
+2stag
+3s2tagr
+3stah
+2stak
+2stala
+sta3lak
+2stalb
+2stalg
+3sta3l2i
+2stalk
+st1alp
+st1alr
+3stam
+st1a2mi
+4stampl
+4stamt
+4stanb
+s2tand
+4stanf
+6stangeh
+4stanh
+4stanl
+4stanm
+4st1ann
+st3ansp
+4stanst
+2stanw
+4stanza
+2st1app
+s2tar.
+sta6rens
+s2t2ars
+2stasc
+stast4
+2statb
+7s2tati
+7statth
+7statu
+2stauf
+2staug
+5staur
+2staus
+st1a2ve
+2stax
+3stäb
+3städ
+2stäg
+2stält
+2stämt
+3ständ
+4stäp
+5s2tär
+3stätt
+2stäus
+4stb
+2st3c
+4std
+3ste
+4steam
+s2tean
+4stechn
+4stecu
+ste2d
+st1edi
+ste2g3r
+s2teh
+4stehr
+4steic
+4st1eid
+5s2teig
+stei4gr
+4steil
+6steinga
+6steinhe
+stein6sp
+s2tel
+s3tele
+5st2ell
+stel6l5än
+ste4mar
+ste6ment
+6stemper
+4stempf
+ste4na
+4st3ends
+st2ens
+4stentf
+4stentl
+4stents
+4stentw
+4stepi
+st1e2po
+ste2r3a
+s2terb
+4sterbs
+6stereig
+s2terf
+st3erfü
+st2erg
+s2terh
+s2terj
+s2terk
+sterma7sse
+s2tern
+6sterras
+s2ters
+ste4s1e
+stes3ta
+4stestb
+4stestn
+stes3tr
+4stests
+ste4tag
+s2teu
+4steuf
+st1eun
+st1ev
+4stex
+s2texa
+4stf
+2stg
+2sth
+st4hen
+st3hi
+st3ho
+4stief.
+4stiefl
+3s4tiel
+3stif
+st2il
+4stimma
+2stimp
+2st1inb
+2stinf
+3sting
+2stins
+4stint
+s4tio
+2stip.
+sti2r
+st1ira
+st1iri
+st1ita
+2stite
+2stj
+2stk
+4stl
+4stm
+stma3s2
+2stn
+sto2bl
+4stocht
+s2tode
+3s2tof
+stof8fens
+6stoffiz
+3stoj
+sto3mi
+2stomn
+2ston
+s2to4ne
+2stope
+2stopo
+2stord
+2storg
+s2tory
+3stos
+4stou
+4stöch
+2stöl
+5s2tör
+2stöst
+2stöt
+4stp
+2stq
+st4rade
+3straf
+stra4fa
+2strag
+3s2trah
+2strai
+3s2tral
+4strans
+s2tras
+3straß
+4straum
+2sträc
+2s3träg
+4sträne
+2stre.
+4strech
+2stref
+2streg
+4streib
+5st6reif
+2strep
+2stret
+2strev
+3s4tria
+2strib
+4strig
+4strisi
+2striu
+4stroc
+3s2trof
+3stroh
+3s2trok
+4stropf
+3s4tropo
+st4ross
+4strost
+3stroy
+2ströp
+2strub
+3struk
+s2trum
+2strun
+4strup
+4st3s2
+stsas2
+2st3t4
+st2u
+3stub
+4stuch
+3stud
+2stue
+3stuf
+2stug
+st3uga
+3stuh
+2stuk
+2stumo
+2stumr
+2stum2s
+s3tumsc
+2stumt
+2stumz
+2stun.
+2st3una
+2stune
+2stunf
+2st3uni
+2stuns
+2stunt
+3stuö
+stu3ra
+stu5re
+2st3url
+2s3turn
+2st3urt
+3s2turz
+4stüch
+3s2tück
+3stüh
+2stür.
+2stüre
+2stürg
+2stürs
+2stürw
+2stütc
+2stv
+2stw
+stwor2
+2sty
+4sty.
+4s3typ
+4stys
+2st3z2
+1su.
+su1an
+3su2b3
+su4ba2
+4subi
+su4br
+5su1c
+su2cha
+su2cho
+3sud
+su2eb
+2s1u2f
+su3fi
+2s1uh
+1sui
+su1is
+su1it.
+su2k
+su3l2i
+su2m1a
+s2ume
+su2mei
+su2mel
+sument4
+su6ments
+2sumf
+s3umfa
+s3umfe
+su2min
+3summ
+sum1o2
+su2mor
+s2ump
+s3umsa
+2sumse
+s2umsp
+2s3umst
+2s3umwa
+su2n
+2s1una
+sunder4
+sun6d5erh
+sunds4
+su4ne
+4s1unf
+6sungena
+s3ungl
+4s1uni
+2s1unm
+s1uns
+2sunt
+3s2up
+sup3p4
+su2ra
+sure4
+su2rer
+3surf
+2s1urk
+s1url
+su2r1o
+s1urt
+su2s
+su3s2a
+sus1e
+sus1i
+s3u2t
+su3tr
+2sü4b
+3süc
+sü2d1
+süden4
+sü3den.
+3sün
+1süs4
+sü3sse
+sü3ssi
+1süß
+4s3v2
+svoran4
+2s1w
+s3we
+swe6gers
+sweh2
+4swie
+4swil
+4swis
+4swit
+s3wö
+s3wu
+1s2y
+2sy2l3
+sym3
+sy2n3
+3sy5s
+2s1z2
+4s3za
+4szä
+4s3zei
+4szel
+3s2zena
+3s2ze3n2e
+4s3zent
+4s3zer
+s2zes
+s2zeß
+s4zew
+4s3zie
+s3zins
+4s3zo
+sz3ta
+4s3zu
+4s3zü
+4s3zw
+4szy
+2ß3a4
+ßan1
+ßat3
+2ß1ä
+2ß1b4
+ßbus3
+2ß1c
+2ß1d4
+1ße
+2ß1e2b
+2ß1ec
+2ß1ef
+2ß1e2g
+2ß1ei
+ße2l
+2ßelek
+ße3lu
+2ß1emp
+ße4n3a4
+4ßenerg
+ße2ni
+ße2no
+2ß1entl
+2ßentz
+ße2nu
+2ß1e2p
+3ß2er.
+ßer3b
+ßer2ei
+ße2ro
+ß2ers.
+2ßerse
+ßer3t
+ß1erw
+ße2s
+2ß1es2s
+2ß1est3r
+ße2t
+2ß1ex
+2ß1f4
+2ß3g2
+ßge2bl
+2ß1h2
+1ßi
+ßi2g1a
+2ß3i2k
+2ß1il
+2ß1im
+2ß1in
+ß1j
+2ß3k4
+2ß1l2
+2ß1m2
+2ß3n2
+2ß3o2
+ß1ö4
+2ß1p2
+2ß1q
+ßquet2
+4ß3r2
+ßreli1
+ßrö2
+ßrus3
+2ß3s4
+ßsau4
+ßsch2
+2ß1t
+ßt3h
+ßt1in
+ßts2
+1ßu2
+ß1uf
+2ß1uh
+2ß1um
+ß2ung
+ß1uni
+2ßunt
+ß1ü4
+2ß1v
+2ß1w
+2ß1z2
+2taa
+2tab.
+ta2b3an
+2t1abb
+2tabd
+1tabel
+2tabf
+2tabg
+2tabh
+2t1a2bit
+2tabk
+2tabla
+1table
+4tabm
+2t3abn
+2ta4br
+4tabs
+t1abst
+2t3abt
+4tabw
+4tabz
+2t1ac
+3tacu
+t1ada
+2tadd
+ta2der
+tadi3
+tadi4s
+t1adm
+ta2dol
+t1a2dr
+ta3d2s
+tad4t3
+ta2er
+1tafe
+2tafet
+t1afg
+t1afr
+1tag
+ta2ga
+ta2g1e2i
+tagen1
+4t3a4gent
+2t1agg
+ta3gl
+2t1a2go
+tag2s1
+tag4san
+tag4st
+2tah
+tah2li
+3tai
+ta3i2k
+tai2l1
+ta1ins
+tai4r
+ta1ir.
+ta1i2s
+1tak
+2t1a2ka
+ta3kes
+2t1akk
+ta2kro
+2taks
+tak2t1o2
+t2aktu
+2takz
+3t2al.
+ta2la
+ta3lag
+tal1an
+ta3lat
+tal3au
+1talb
+tal3d4
+1tale
+ta4l3end
+tal3eng
+ta4lens
+tal6ents
+ta4lerg
+ta2let
+tal2ga
+tali6ene
+tal4l3ac
+tal4leg
+tal4lei
+tal4let
+tal6leut
+tal6lin6s
+tal4los
+tall2ö
+tall3s
+tal4lus
+2t1alm.
+ta2lop
+ta2l1o2r
+tal2se
+tals3en
+t1al3ta
+tal3th
+talt4r
+ta2lu
+2tam
+3tam.
+t2amen
+t1a2mer
+tam2ma2
+tam4m3er
+tam4mi
+tam4mut
+t1ampl
+3t2ams
+t1amt
+t1a2na
+tan3ab
+4tanal
+ta4nat
+2t1a2nä
+tan3da
+tand4ar
+tan2dr
+ta4nerf
+4tanf
+4tangeb
+tan4gra
+2tanh
+t2anho
+t4ani
+3tanj
+1t2ank
+tan2kl
+2t3anl
+t1anm
+4t1anna
+3t2anne
+t1ano
+t1ans
+t2ans.
+4tansi
+tan4tan
+t4ante.
+4tantei
+2tantr
+2tanwa
+2tanwä
+t2anz.
+t1anza
+4tanzei
+t1anzu
+4tanzü
+tan2z1w
+tao2
+ta3or
+t4ape
+ta2pes
+2tapf
+ta2pl
+ta4poka
+t2appe
+ta2ra
+2tarab
+3tarabb
+ta3rak
+2taram
+tar3ap
+t2arau
+2tarb
+3tarba
+3tarbek
+3tarber
+3tarbi
+3tar3bl
+2tarc
+3tarchr
+t2ard
+t2arei
+ta2rel
+ta2r1er
+tar3g
+ta1r2h
+3tari
+tark4l
+t2arko
+4tarkt
+t2arl
+2t1arm
+t2armä
+ta2rom
+2tart
+t2arta
+tar6ter6e
+3t2arth
+t1arti
+3t4artis
+tar2to
+tar2tr
+ta2ru
+2t1arz
+3tarzu
+t2as.
+ta3sa
+1tasc
+ta5se
+4t1asp
+2t3assi
+1tast
+ta4stem
+ta2sto
+ta3str
+t4at.
+ta2ta2b
+ta2tan
+3tatb
+t4ate
+tat1ei
+t5a2tel
+ta2tem
+1taten
+ta2t1er
+t3atl
+ta2tom
+ta2tr
+1tatsa
+2tatt
+tau2b1a
+1taubh
+tau2bl
+tau2br
+tauchs4
+tauch5sp
+2taud
+t1auf
+3taufe.
+4taufg
+tau3f4li
+2taufn
+t3aufo
+taufs2
+2taufw
+1taug
+4t3auge
+t1auk
+3taum
+1taume
+1taus
+2t1ausb
+tau6scha
+tau6schm
+tau6schr
+tau6schw
+2tausd
+t2ause
+2tausf
+t3ausg
+t1ausk
+2tausl
+2tausr
+2t3auss
+2t5ausw
+2tausz
+ta2van
+3t2ax
+taxi3s
+4t3axt
+2tää
+2täb
+tä1c
+2täd
+t2äf
+1täg
+2tägy
+2täh
+3täle
+2täll
+2t1ält
+4tä2m
+t1ämt
+t1ängs
+1tänz
+2t1äp
+2täq
+tä4reng
+tä2ru
+2tärz
+tä2s
+t2ät
+3tätigk
+4tätt
+2täug
+1täus
+2täuß
+2täx
+1tà
+4t3b4
+tbauer4
+tbe3r2e
+tblock5e
+tblocken8
+tbus3
+2t1c
+t3cha
+t3che
+tch2i
+tch3l
+t3chr
+t2ch1u
+tch1w
+t3cl
+tcor2
+t3cr
+4t5d4
+tdar2m1
+tdun2
+1te2a2
+tea3c
+te3ad
+te3ag
+2teak
+te3al
+teamma3
+te3an
+te3ar
+tea4s
+3teba
+t4ebb
+2t1e2ben
+t2ech
+1techn
+te2chu
+2teck
+t1ecu
+te2dit
+1tee
+te1em
+teen1
+te2er.
+te1erw
+tee3t
+3tefa
+2teff
+2t1egg
+te2hac
+2tehe
+te2him
+2t1ehr
+1teic
+tei1fl
+teik2
+1t2eil
+tei2la
+tei6lent
+teim2
+2tein
+t2ein.
+teinbus6
+t2eine
+teinen4
+tei6nens
+tein6hab
+t3einkü
+te2i3s
+t1eis.
+t1eisb
+te5isch.
+tei3t
+t1eiw
+tei3z
+te2kel
+tek3t4
+te2la
+tel3ab
+tel1ac
+te3lan
+te4lant
+tel1au
+te2lä
+teld4
+tel1ec
+1telef
+1teleg
+tel3ehr
+2telem
+tel3eng
+te2ler
+te2leu
+4t3elf.
+te4lim
+te2l1in
+te2lit
+tel6lant
+tel3le
+tel6lein
+tel3li
+tel6li6st
+te2lob
+te4lost
+te2l1ö
+tel3s2k
+tel3ta
+telt4r
+te2map
+te2m1au
+te3mä
+t2emb
+te2m1ei
+te2m1er
+2temg
+te2mi
+tem3i2m
+tem3ing
+2teml
+2temn
+2temo
+te2m1o2r
+3temper
+2tempf
+1tempo
+te2mu
+te4mun
+t6en.
+ten1a2
+te4nad
+te4n3an
+te4nas
+te4nat
+ten3au
+ten3ä4
+ten3da
+t3endal
+tend4an
+4tendap
+2t5endf
+2t1endl
+t6endo
+2t5endp
+ten3d4r
+te2n1e2b
+te2nef
+te2neh
+ten3ei
+te3n4ei.
+tene4m
+tenen1
+te4n3end
+te4nene
+te4neng
+te4nens
+4t3energ
+te4n3ern
+tenf4
+t1eng.
+teng2a
+4ten4gag
+t3engla
+te2ni
+te4nil
+ten1im
+te4n3in
+tenk4
+ten3n2
+te2nol
+te3nö
+4t3ensem
+ten6serg
+1tenso
+tens2p
+t2enta
+t1entb
+2tentd
+ten3te
+2t3entl
+2t3entn
+ten6tric
+t3en4tro
+2t1ents
+4t5entw
+2tentz
+te2nu
+te2ny
+teo2f
+2t1e2pi
+tept2
+t4er.
+t4era
+tera2b
+ter3ac
+te2rad
+te1ral
+tera2m
+ter4ane
+te2r3ap
+ter3as
+2t1erbs
+2t1erbt
+ter3d
+4t3erde.
+terd2s
+te2re2b
+te2rec
+t3ereig
+tere2m
+te4r3emi
+te4r3end
+te4rene
+te4reng
+te4r3ent
+terer3k
+terer3l
+te4r3erp
+te4rers
+te4rerw
+te2ret
+t4erfr
+terg2
+ter3ga
+6tergebn
+t6ergem
+t6erges
+t6ergew
+ter3gl
+6tergrei
+t4ergru
+2t1ergu
+2tergü
+t6erhall
+t4erhan
+t4erhau
+t4erhäu
+t4erhei
+t2erhi
+t2erho
+6terhöhu
+t2erhu
+te3ria
+ter3iko
+terin5d
+ter3k
+4terklä
+t4erlä
+t4erli
+termas4
+1termi
+t2ern.
+ter4nar
+t6ernc
+ter4obe
+2teros
+t1e2r1ö
+t4erp
+t4erra
+3terras
+ter4re.
+t4erro
+t4ers.
+t2erse
+terst4
+t4erst.
+t6erstad
+ter6stat
+t4erstä
+t4ersti
+t4erstr
+t4erstu
+t4erstü
+ter3t4a
+tert2o
+t4eru2
+te4r1uf
+t4erv
+4t3erwäh
+4tery
+ter3z2a
+2t1erzb
+t4erzei
+4terzeu
+ter5zo
+ter3zw
+te2s
+tes3ac
+tesa2k
+te3sä
+te3sc
+tes3eli
+te3ser
+te3si
+te3so
+te3sp
+tes1pe
+te4spr
+2t1essa
+3tesse.
+tes3si
+tes2t
+tes3tät
+1testb
+te6sterg
+te6sterh
+te6sterk
+test3r
+t3estri
+1tests
+t2et.
+te4tabl
+2te2tap
+te2tat
+4tetl
+3teuf
+te1u2n
+2t1eup
+te2va
+te2vi
+tewa2s
+3tewo
+1tex
+t1e1xa
+2t1e2xe
+te3xel
+2t1e2xi
+4texp
+tex4ta
+2t1exz
+2t3f6
+tfäs3
+2t1g2
+tga4s3er
+t3ge
+tgenen3
+tger2a
+tger2i
+tg4r
+tgro3
+t1h
+4th.
+2th2a
+3t4ha.
+3t2hag
+4thak
+3thal.
+t2hali
+3thalp
+t2han.
+t3hand
+t3hap
+4t3hau
+2thä
+4thäl
+2thb
+4thc
+1t2h2e
+3thea
+2t3heb
+2t3hef
+2t3hei
+t4he1in
+3t4hek
+t4hema
+2themd
+t4heme
+2themm
+t4hene
+t4heni
+3theo
+t3herd
+t4herm
+thero3
+2t3herr
+2t3herz
+4t3hess
+2thf
+t2hi
+3thi.
+thic3k4
+t3hiel
+thi3er.
+2t3hil
+2t3him
+t3hin
+thi3nu
+2t3hir
+2thk
+2th3l
+4th3m2
+thmu2
+2th3n
+t2ho
+2t3hob
+t3hoc
+tho3chr
+t3hof
+2t3hoh
+t4hol.
+t4holo
+2tholz
+2t3hot
+3thotr
+2thou4
+t3hov
+2t3hö
+2thp
+1th2r2
+2ths
+2tht2
+2thub
+2thuh
+4t5hun
+2thut
+2thü
+2thv
+t2hy
+ti2ad
+ti3ag
+tial2l
+ti3a2m
+ti2are
+tib4
+ti1ce
+ti3chr
+t1id
+t2id.
+4tidee
+ti4d3en4d
+tie3br
+1tief.
+4tiefel
+1tiefl
+tie2fr
+tieg4
+ti2e1i
+ti1el
+ti2el.
+tiel3a
+ti3e2n1
+tie4rei
+tie4reu
+tiermas6
+ti2ern
+1tierr
+2tieß
+ti1eu
+1tif.
+ti3fe
+tif3f
+ti1f4r
+ti2gan
+2t3i2gel
+ti4gerz
+ti2git
+tih2
+tihi4
+ti2kam
+ti2kar
+ti4kau
+ti3k2en
+tik4ere
+ti2kin
+ti4klu
+ti2kn
+tik1r
+ti2kra
+ti2krä
+ti4k3rei
+tiks2
+ti4lant
+ti2lar
+ti2lei
+ti2lel
+1tilg
+3tilgu
+tille4b
+2tillu
+ti3lo
+ti2lö
+tilt4
+ti2lu
+ti2ma2g
+2timm
+tim2ma
+timma6te
+timmer4
+tim6merg
+tim4mit
+2timp
+ti3naf
+ti3nak
+ti2nam
+ti2n3an
+2t3ind
+ti5n2e
+tine1i
+2t1inf
+tin2g1a
+tin4g3l
+ting3s2
+t1inh
+3tinis
+t1in1it
+4tinj
+t1inka
+tin2k1l
+tin2kn
+tin2kr
+t1inku
+t2inn
+ti2nor
+t1ins
+t2ins.
+t3insa
+t2insä
+4t3inse
+tin4spa
+tin4sum
+t1int
+ti3nu
+tin2um
+4t1inv
+3tio
+ti2osk
+tioxi3
+1tip.
+ti3p4l
+3tips
+ti4que.
+1tirad
+ti1rh
+ti4ron
+ti6schei
+tisch3l
+tisch3w
+ti2sei
+ti3sk
+t1isl
+ti2sp
+t1isr
+ti3s2th
+ti4s3tic
+ti2su
+2t1iß
+tit2a
+ti2tal
+3ti3te
+tium2s
+ti2van
+ti2vel
+ti4vene
+tiver2
+ti4verh
+ti4verk
+ti4verl
+ti2v1o
+ti4v3r
+ti2za
+ti2zir
+2t1j
+4t3k4
+2t3l2
+4tla
+tlan2g
+tl4e
+tlei6der
+tle2ra
+4tli
+tlings3
+tli5ni
+tlit1
+t5lö
+2t1m2
+tmen8schl
+tmen4t5
+tmo4des
+t3mu
+4t3n4
+t5na
+tnes4
+tni3v
+to4as
+to5a4t
+t2oba
+1to3be
+2tobj
+tob2l
+t1obs
+1tobt
+to1ch
+2t3ochs
+1tocht
+2tock
+tock5ent
+1t4od
+tod1er2
+todes3t
+to2d1un
+toffen8st
+tof6f5ent
+tof4f3er
+2toffi
+2t3ohr
+toi4r
+tok4
+to3le
+1toler
+tomar4b
+tom1en
+2tomg
+to2min
+2tomk
+1tomo
+to2m1u
+to4mun
+1ton
+to2nan
+ton3au
+tond2
+to2n2eh
+toner6ke
+to4n3ig
+to3ny
+3too
+to3om
+to2pak
+to2pan
+to2pat
+top1hi
+1topo
+2to4pt
+t4or.
+to4rän
+t1ord
+t2ordi
+2t3ordn
+t4ore
+to4rein
+to2rel
+to2rem
+to3ren
+tor4fan
+t1or3g
+2torga
+6t5orient
+tor3int
+to2rop
+to2rö
+1torp
+t4ors
+2t1ort.
+tor3ta
+1torte
+t1orth
+tort4s
+to4ru
+to3rü
+to4rüb
+t2orw
+to3s2
+tos4s
+to2tä
+1toten
+to2tho
+1t2ou
+touil4
+to3un
+tö2c
+1töch
+2töck
+2t1ö2d
+2tö2f
+4t1ök
+1tö4l
+2töl.
+1tön
+t1ö4st
+1töt
+2t3p4
+tpf4
+tpi2n
+2t1q
+t2r4
+2tr.
+t4rab
+1trac
+tra3cha
+tra3chl
+2t3rad.
+tra4dem
+1tradi
+t3radie
+2tradp
+tra4fah
+tra4far
+1t4rag
+tra5gen
+2trahm
+3t4rai
+2t3rake
+t4rakt
+tra4leb
+tral3l
+1tram
+3t4ran.
+4trand
+1trank
+t3rann
+5t4rans
+1trapp
+tra4sta
+tra4str
+2traß
+1trau
+4traub.
+4trauc
+t4rauf
+2traup
+traus2
+2trauß
+1träc
+2träd
+1träg
+1träne
+t1räts
+2träuc
+1träum
+4t5re.
+2trea
+t3reak
+2treb
+tre2br
+2trec
+t3rech
+t4reck
+3treck.
+2t3red
+1tref
+2trefe
+2trefl
+2trefo
+2treg
+2t3reh
+t4rei.
+1t4reib
+2treif
+2t3reig
+2t3reih
+t4reik
+2t3rein
+2t3reis
+tre7isch.
+2treit
+t3reiz
+t3rek
+2t3rel
+t4rem
+t4ren.
+1trend
+1trenn
+t3rent
+2trepe
+2t3repo
+1trepp
+t3repr
+t4rer
+t4res.
+1tret
+tre2ta
+t4rete
+tret3r
+tre4tri
+2t3rett
+t4reu
+2t3rev
+2t3rez
+3t4ré
+2t3rh
+3t4rib
+t4rick
+t4rid2
+1trieb
+1trief
+trie3fr
+tri4ena
+tri2er
+2trig.
+2trige
+t4rigg
+tri3gl
+t4rik
+tri4ke.
+tri4kes
+1triko
+1tril
+1trin
+t3rind
+2tring
+tri3ni
+t3rinn
+3trio
+t4rip
+2triß
+1triu
+2t5riv
+tri2x
+trizi1
+tro3b4
+1troc
+4trock.
+t4roi
+tro4kes
+trol4la
+2trom.
+tro6mans
+tro4men
+tro2mi
+1tromp
+tro3na
+t4rop
+tro1pe
+3tropf
+tro3sm
+1trost
+2trout
+4t3röc
+2tröh
+2tröm
+1tröp
+2t3rö4s3s
+1tröt
+1trub
+2t3ruc
+4truf
+1trug
+4t4ruk
+trum2
+t3rumä
+trums1
+t3rund
+1trunk
+3t4rup
+t3russ
+2t3ruß
+2t3rut
+tru2th
+trü1be
+trü1bu
+2t3rüc
+trücker6
+t4rüg
+3trümm
+try1
+2ts
+4ts.
+ts3ab
+t3sac
+t4sachs
+t2sa2d
+ts1ahn
+ts5alben
+t2sall
+t4samp
+t4s1amt
+t2san
+ts3ane
+ts3a2r
+t2s1a4s
+tsa5ssen
+t2sau
+ts2av
+t1sä
+t2säh
+t2s1än
+ts1äus
+t2sce
+t4sch3am
+t6schart
+t4schef
+t3schl
+tsch4li
+t3schra
+t4schro
+ts2cor
+t2s1e2b
+tse2e
+t2sef
+ts1eh
+tse4he.
+t3seil
+t3seme
+ts1eng
+t3s2ens
+t2s1ent
+t2s1ep
+t2s1er
+t6s5essen
+tse2t
+ts1eta
+t2seth
+t2s1eti
+t2s1e2v
+t2sex
+t3sexi
+t2s1i2d
+t2si2k
+ts3iko
+tsing4
+t2sini
+ts1ir
+4tsk
+t1skal
+t3skala
+ts4kele
+t4s3ko
+tsmas4s
+tsma5sse
+ts1off
+tso2r
+ts1ori
+ts3ort.
+t3sos
+t1s2ouv
+ts1par
+ts4pare
+ts1pas
+ts3pate
+t1sped
+t1s2pek
+ts4pend
+ts2pi
+t2s3pic
+t4spins
+ts3ple
+ts2pon
+ts2por
+ts4put
+ts5s4
+tst4
+t4stabe
+t2staf
+t4stale
+ts3tanz
+t2stas
+t4s3tat.
+t4s3täti
+t2stea
+t4stee
+t4s1tep
+t4sterm
+t4s3terr
+ts1tie
+t3s2til
+t3stim
+t2s1tis
+t2stit
+t4stoch
+t2stoi
+t2stor
+t4strac
+t4strad
+ts4traf
+t4stren
+ts4tric
+t4strie
+ts2tro2
+ts2tub
+ts2tüm
+ts1u
+3tsubi
+t2sumz
+ts3un
+t1sü
+tsü3s
+tswa2s
+4t1t
+tt1ab
+tt2ac
+tt3achs
+t5tack
+tt1ad
+tt2ag
+tta6g5ess
+t4t1ah
+tta2ke
+tt2al
+t2ta4n
+tt4anke
+t3t2ant
+t4t1ap
+tt1art
+tt1äh
+t2tän
+tt1ebe
+tt3echs
+tt1eif
+tt1ein
+t2t1eis
+tte4la
+tte4l3e4b
+t4te4leg
+tte4len
+ttel3l
+ttel1o
+t2temu
+tte4na
+ttens2
+t4tentb
+t4tentf
+t2teo
+t3ter
+tt4ere
+tt2erg
+tte4rik
+ttermas7s
+tter3nä
+tte2ro
+tt2erö
+tt2es
+tte4sa
+tte4s3ä
+tte4s1o
+t4teuf
+tt2häu
+tt3hi
+t2t3ho
+t2tid
+t2t3igi
+t2tins
+tt2int
+tt4lef
+t3to.
+t2torg
+t3tos
+ttras3s
+t2trou
+tt3rü1
+tt2sen
+tts1p
+tt4s3tät
+tt4s3tem
+tt4ster
+tt3s2z
+ttu2
+ttu3b
+t2tuc
+tt1uf
+t4tunt
+t2tu4s
+ttü2
+tt3z2
+3tua
+tu4ale
+tu1alm
+tu1alv
+tu3an
+tub2
+tuba3b
+1tuc
+tu2chi
+tu1cho
+tudie4n3
+3tue
+tu3en
+tu2ere
+2tuf
+tuf2e
+tu3fen
+t3u2fer
+3tuff
+tuf4fel
+tu2gan
+3tuge
+2tuh
+tuh4ler
+tu1ist
+t3u2kr
+tul2i
+1tum
+tum2b5l
+4t3umf
+2t3umg
+2t1umh
+2t3umk
+2tuml
+3t2umo
+2tump
+2t3umr
+4t3umsat
+2t1umsc
+tum2si
+tum2so
+2t3umt
+2t1umw
+t3umz
+1tun.
+2t1una
+2t1und
+tund2e
+1tune
+tun2en
+2t3unf
+t3unga
+2tunif
+2tu2nio
+2tuniv
+2t1unm
+3tunn
+t1u2no
+t3uns
+1tuns.
+2t3unt
+2t1unv
+2t1up.
+tu2r1a2g
+tu2ran
+turan4l
+tu2ras
+tu2rä
+tur1c
+tu2r1e2b
+tu2rei
+tur3eis
+tu4rene
+tu2r1er
+tu4res
+tu2re2t
+tu2r3e2v
+tur3f4
+turg2
+tu2rid
+turin1
+tur4mun
+1turn
+tu2r3o
+tur3s2
+tu4ru
+tu2sa
+tu4schl
+tu2se
+tu2so
+tu3ta
+2tüb
+tü3ber.
+1tüch
+tück2s
+1tüf
+2tüh
+1tür.
+tür1c
+1türe
+1türg
+1türs
+1türw
+2türz
+1tütc
+1tüte
+2tütz
+2t1v2
+t3vo
+tvoran4
+2t3w
+twa2
+twä4
+twi4e
+t4wist
+1ty
+3ty.
+2t1ya
+ty2pa
+3tys
+2t1z
+t2za2
+tz1ag
+tz3ar
+tz1au
+t2z1ä
+t3zäh
+tz1ec
+t2z1e2d
+tz1ehr
+t2z1eie
+t4z1eis
+tze4n1
+tz2ene
+t4z3entg
+t4zentl
+t4z3ents
+tz2ere
+tzer6gre
+tz1erw
+t3zer3z
+tzes1
+tze2t
+tz1eti
+tz1i2d
+tz1int
+t2z3om
+tz2th
+tz2tin
+tzu2gu
+t2zuni
+tzwan4d3
+tz1wä
+tz1wi
+t3zwie
+tz1wu
+2ua
+u3a4b
+u1a2c
+uad4r
+u1a2g
+u1ah
+u1al.
+u1a2l1a
+u1a2l1ä
+u1alb
+u1ald
+uale2
+u3a2leb
+u3a4lent
+u3aler2
+ua4lerg
+ual3erk
+u3a2let
+u1alf
+u1alg
+u1alh
+u3a2lid
+ual3l
+ualle2
+u1aln
+ua2lo
+u1alp
+u1alr
+u1als
+u1al3t4
+ua2lu
+u1alw
+u1alz
+u1am
+uan2a
+u1ans
+uant2
+u3ar.
+uara2b
+u1ars
+uar4t3an
+ua3sa
+ua2th
+uat2i
+uat2o
+u3au
+uau2s
+u1ay
+u1äm
+u1än
+uäs4
+u1äu
+2u1b
+ubb2l
+ube2be
+u8becken.
+ube2e
+u2b1ehe
+ub1ein
+ube4n1a
+uben3o
+ub2er
+u4b3erde
+ubert4
+ub4es
+ub1eul
+u3bit
+ub2l
+ub3läu
+ub3lic
+ub3lu
+ub4lut
+u2bob
+u2bop
+u2b3oz
+ub3ric
+u2b3rit
+ub4rü
+ub2san
+ubsau2
+ub6s3che
+ub2s1o
+ub2sp
+ubst2
+ub4sz
+ub3t4h
+ubu3s
+2uc
+uc1c
+uch1a
+u1cha.
+uch1ä
+u1che
+uch1ec
+u2ched
+uch1ei
+ucherin8t
+ucherma8s
+u1chi
+uch3im
+uch1in
+uch3l
+uch3m
+uchma6ss
+uch3n
+uch1op
+u2ch3r
+uch4sel
+uch2so
+uch2sp
+uchst2
+uch6t5erf
+uch6t5ert
+ucht3re
+u1chu
+u2chum
+uch3ü
+uch1w
+u1ci
+uck3elf
+uck2er
+ucker8geb
+uck3i
+uck4sti
+uck3t
+u1cl
+2u1d
+u3d2a
+ud2e
+ude3i4
+udein7
+udel3se
+uden1
+uden3e
+udert4
+udi3en
+uditi4
+ud2ob
+u2don
+ud3ra
+u3dru
+2u1e
+u2ed
+ue2en4
+u2eg
+u2eh
+ue2k
+u4ela
+ue2le
+ueli4
+uel2la
+uel3lan
+uel2lä
+ue2mi
+uen1
+u3en.
+ue4n3a2
+u3end
+uene2
+ue2ner
+uen4gag
+uenge2
+uenge4m
+uen2gl
+u3e2ni
+uenk4
+ue2no
+ue2nu
+uen6zene
+uen2zu
+uen2zw
+u2ep
+ue2r3a2
+ue2r1ä
+uerb2
+uer6baut
+uer3d2
+uere2
+ue2rec
+uer4ei.
+ue4rein
+ue4r3emi
+u3eremp
+u3e4r3ent
+ue3r4erb
+u3ererf
+ue4rer4g
+uerer4h
+uerer4l
+uerer4m
+ue6rersc
+uerer6sp
+ue6rerst
+uer3esk
+ue2ret
+u3erex
+uer3g2
+u3erin4t
+u3erl.
+uerma6s
+u3ern
+uer4nan
+uer4ne
+ue2r3o4
+uer2ö
+uer3r
+u3errü
+uer3sc
+uerst6
+uer3t4
+u3eruh
+u3erum
+u3erunf
+u3erunt
+u3erwi
+uer3z2
+ue4s
+ue5se
+ue5sp
+ue2ta
+ue4tek
+ue2ti
+u2ev
+ue2x1
+uf1ab
+u3fac
+u3fah
+uf1ak
+u3fal
+ufall4
+ufa2n
+uf3ane
+u2f3a2r
+ufa2t
+uf1au
+u2f1än
+u2f1ä6s
+u2f1ä2ß
+u2f1ei
+ufel4s3a
+u2f1em
+u3fen.
+u2fent
+u2ferf
+u2f1erh
+u4ferla
+u4ferle
+u4ferne
+u2f1eß
+u2f1et
+2uff
+uf3fe
+uffel2
+uff4l
+uf2fro
+u2f1id
+u2fim
+u2f1ins
+uf3l
+u2fob
+ufo2r
+uf1ori
+uf3r
+uf5sä
+uf3sc
+uf2spo
+uf4stab
+uf4ster
+uf4s3tic
+2uft
+ufta2b
+uft1eb
+uf3ten
+uft3erd
+uft3er4g
+ufter4l
+uf4tin
+uft3s2
+u2fum
+2u1g
+ug2abe
+u4gabte
+u2g1a2d
+u2g1ak
+ugang4
+u2gani
+u2gans
+u2ganz
+u2g1ap
+ug1ar
+uga4s
+ug1au
+ug3d4
+u3ge.
+ug1ei
+u2geig
+u2gein
+uge4lob
+ugenma3
+ugenmas6
+u2g1erf
+u2g1erl
+u2gerr
+u2gerv
+u2g1esk
+ug2et
+ugg2
+ug2gl
+ug5g4t
+ug3hu
+u2g1i2d
+u2gim
+ug1in
+u2gl
+u4g1lä
+u6gleitb
+u6gleitu
+u4glic
+u4glis
+ug3liz
+u4g3lo
+u4glu
+u4g3n
+ugo3
+u2go4b
+u2g3oc
+u2g3om
+ugo4p
+u2g1or
+u2gö
+u2g3rä
+u2greg
+u4g3reis
+u2gres
+ug3rie
+ug3ro
+ugro3s
+u2grou
+ug3rüs
+ug3sei
+ugsma3
+ugsmas4
+ug2spe
+ugs4por
+ug3stä
+ugs1te
+ug4stur
+u2gum
+ug4unge
+ug2uns
+ugu6sten
+ugu6ster
+u2gü
+u1h
+uh2a
+2u5he
+uhe3a
+2uhi
+2uhl
+uh1la
+uh2lar
+uh1lä
+uh4l3ent
+uhl3erb
+uh2li
+2uhm
+uhr1a
+uhrei4s
+uh2r3er5
+2uh3ri
+uh4rin
+uh2r3o
+uh2ru
+uh4rü
+uhs4
+u2hu
+2uhü
+uh1w
+2ui
+ui1ch
+ui2che
+u1ie
+ui1em
+u3ig
+u4ige
+uil4les
+u1im
+u3in.
+uin3n
+u3isch.
+u3ischs
+uis2e
+uisi4n
+ui2st
+uit3s
+u1j
+uk2a
+uk1äh
+u3käu
+u1k2e
+uke2n1
+u1ki
+2u1k2l
+ukle1i
+u1k4n
+uko2m1
+uk2ö
+u1kr
+uk2ta
+uk2t1el
+uk2t1er
+uk2tin
+uk4t3o4ri
+uk2t3r
+ukts2
+uk2tum
+u1ku
+uku2s
+uk2ü
+u1l
+ul1am
+ulan2e
+ul2ar
+ula2sc
+ul1äm
+ul4dan
+ul2dei
+ul2dr
+uld2se
+2ule
+u2l1el
+ul1emb
+ule4n
+ul1er2h
+ule4s1t
+ule2t
+ul1eta
+2ulf4
+ul1id
+uli2k
+ul1ins
+ul3ka
+ul2kn
+ulla2g
+ull1au
+ul2lä
+ul3len
+ul3l2i
+ulli2n
+ul2lo
+ul2lö2
+ull3s2
+ulm2e
+ulni2
+ulo2i
+u2lop
+u2l1or
+ulp1h
+ul2pha
+ul2sa
+ul4sam
+ul2s1ec
+ul2sei
+ul2ser
+ul2sum
+2ult2a
+ult3ar
+ul2tri
+ult3s
+u2lü
+ul2vr
+ulz2w
+u2mab
+u2m1ad
+u2m1a2k
+um1all
+um1ang
+u5mann
+um1anz
+u2m1ap
+um1a2r
+u2marc
+u2marm
+u2mart
+u3mat
+u4matl
+u4matm
+u2maus
+u2maut
+u2m1äh
+1umd2
+u3me.
+u2m1ef
+u2m1ein
+umen1e
+um5engel
+umens2
+umer2a
+u2m1erf
+um1erg
+u3merk
+u2m1erl
+um1erw
+ume4s
+1umf
+1umg
+um1ide
+um1ind
+um1inh
+um1ir
+1umk
+1uml
+2umm
+um3mä
+um4mess
+u2m3ot
+ump2fa
+ump4fin
+umpf4li
+um2pho
+1umr
+um4sam
+um4s3an
+1umsat
+um2s1er
+um2sim
+um2s1pe
+um4stem
+um2sum
+um3t4
+u2m3um
+u2m1u2r
+1umz
+un1
+2un.
+2una.
+1unab
+3unabh
+un2a3br
+un2ag
+un2al
+u3n2am
+u2n3an
+u2nap
+u2narb
+2un2as
+un3at
+unau2s
+un2är
+2und.
+un2da
+unda2b
+un4dap
+1undd
+2unde
+un3de.
+underer6
+und3erf
+und3erö
+underten8
+under8tend
+und3erz
+un2dex
+1undf
+2undg
+un2dim
+1undn
+undo2b
+un2dop
+un2dor
+2un2d3r
+4unds.
+2undsc
+und3sp
+un2d1um
+undü4
+1undv
+1undz
+u3ne
+une2b
+une2d
+un3eid
+un3ein
+un3eis
+un2emi
+une4n1
+unen2t
+u4nerk
+u4n3erz.
+un2es2
+unf2
+un3fa
+unft2s
+un2gam
+un2gat
+3ungena
+unge3r4e
+1unget
+1ungew
+un2glu
+1unglü
+un2go
+un2gr
+ung3ri
+ung4s
+ungs3tr
+ungstra8s7
+u3nic
+3u2nif
+uni3k4
+un2im
+1unio
+un2ir
+un3iro
+un3isl
+u3n2it
+1u2niv
+2unk
+un2k1a2
+un3ker
+un2k1es
+un2ket
+un2kne
+unko2p
+un2kro
+unk3s2
+unk4tit
+unk2tr
+unlö2
+un2n1ad
+unn2e2
+unne4n
+u2nob
+uno4r
+un2os
+1unr
+uns2
+2uns.
+unsch5el
+1unsi
+un3sk
+un3sp
+uns4t
+unsta4g
+unst1r
+2unsy
+2unsz
+1unt
+un3ta
+un3te
+unte4ri
+2unti
+un3tr
+unt3s
+2untu
+3unty
+2u2nu
+u3nuc
+u1nü
+unvol2
+unvoll3
+1unw
+2unwä
+u2ny
+2unz
+un3z2a
+unz2e
+2uo
+u1o2b
+u3of
+u1op
+u1or
+u3or.
+u3or3c
+uore4
+u3o2ret
+u3ors
+u3ort
+u3orw
+u1os.
+uote2
+u3o2x
+u1ö2d
+u1ök
+u1pa
+3upd
+u1pe2
+uper1
+upe4re
+uperer4
+up2fa
+upf1i
+u1pfl
+u1p2fu
+3upg
+u3p4i
+up4lu
+up2pl
+u1pr
+upra3
+u2p3ras
+up4t3a2
+upten1
+up4tene
+upt3erf
+upt3erg
+upt3erk
+upt3ers
+up4tid
+up4tim
+upt1o
+u1q
+4ur.
+u1ra
+u2rab
+u3raba
+ura2be
+u2r1akt
+u2ral2t
+u2r1a2m
+ura4na
+uran3a4t
+u3rand
+ur1ang
+uran4ge
+ur2anh
+uran5s
+ur1anz
+ur3ap
+u2r3ar
+ura4ri
+u3rasc
+ur3a4sp
+ura4str
+ur4ate
+ura3to
+u2r3att
+u2r1au
+2u1rä
+ur1äl
+ur1ä2m
+ur1än
+ur3b2a
+2urc
+urch1
+urchas4
+urcht3e
+ur3d2a
+ur3d2i
+ur1eff
+ur1eig
+u2rele
+ure2n
+ure4na
+uren6gag
+u4rense
+u4rentn
+u2r1ep
+ur1er3h
+urer3k
+ur2ert
+u2rerw
+ur1eta
+ur2eth
+ure3u
+2urf
+ur2f3l
+ur2fro
+urf4spr
+urf3t
+ur6gense
+urg3inn
+urg1l
+ur2gla
+ur2gri
+uri2c
+ur1ide
+uri3en
+u2rind
+urin8stin
+ur4mant
+ur4matt
+ur2mau
+urm2ei
+ur4mern
+urmet1
+ur2mum
+ur2mun
+ur3n2e
+4u1ro
+ur1off
+urost2
+2u1rö
+ur3p4
+2urr
+ur3re
+3ursac
+ur2san
+ursau4
+ur2s1er
+ur2s1of
+ur2spa
+urst4r
+ur2sun
+urt2
+2urta
+ur4tai
+urt3ein
+ur2tro
+u3ru
+ur2z1a
+ur2zä
+ur2z1ec
+ur2zep
+ur2zi
+ur2z1op
+urzt4
+ur2z1w
+2us
+us3a4b
+u4s3af
+usa2gi
+u3sal
+u4sall
+u4s1amb
+u4samt
+u2sang
+us2ann
+us3ark
+us5art
+u2s1a4s
+us3ate
+u1sä
+u2säh
+u2sce
+u4schab
+u4schak
+u4schef
+usch5eic
+u4sch3eu
+u3schi
+usch3mü
+u3schu
+usch5wer
+u3se.
+u3s2e3b
+u2s1ec
+u2s1ei
+u3seid
+u4sense
+u4sentl
+u3sep
+use3ran
+use4rec
+u2s1erl
+u2serp
+us1erw
+u2s1ese
+u2sex
+u3si.
+u2sid
+usi3er.
+usi5ers.
+u3sig
+us1inn
+us5is.
+us3kl
+usmas2
+usma5sse
+u1so
+us3oc
+us1oh
+u3sol
+u2sop
+us1ou
+u1sö
+u1sp
+u2spac
+us3part
+u2s1pas
+u3spec
+u3spek
+u2sph
+us1pic
+u2spo
+us2por
+u2spu
+usrich7
+us2s3eb
+usse4g
+u4s3sel
+us2se4n
+us5sende
+us6seni
+us2sep
+us2ser
+us3ser.
+uss3erf
+usser4z
+u4sset
+us2sez
+u3s2sig
+uss3k
+us2sof
+us2sum
+u2stab
+u3stal
+us2ten
+us2ter
+ust3erl
+ust2in
+u3stis
+u2s1tor
+u3stras
+u2s3trä
+u4strit
+u2s1tur
+us3ty
+u1su
+u2sumd
+u2sumg
+u2sumz
+3usus
+2uß
+u2ß1u
+2u1t
+u3ta.
+u3taf
+u2t1alt
+ut1a2m
+ut2ans
+u2t1ap
+u2t1ar
+u2taut
+ut1äh
+u2tär
+ut3c
+u3te.
+u4t1e2d
+ut1ei.
+ut1eie
+ut1ein
+ut1ela
+ute2n1
+u3ten.
+uten2a
+u2tent
+uter3a
+ute4ral
+ute5r4er
+ute6ring
+ute4ros
+u3t2es
+u3t2et
+u2t2ev
+u2t1ex
+utfi4
+ut3hel
+u2t3hi
+u2t3ho
+u2thu
+u2thy
+u2tid
+uti2vi
+utli4n
+utmas2
+utma5sse
+u3to.
+uto4ber
+uto3c
+u5to3m
+uto1p
+uto3pa
+u2tops
+utor2a
+u2tord
+u2töl
+4utr
+ut3rea
+u2trou
+ut3rü
+ut3sau2
+ut2säu
+ut3sche
+ut4schl
+ut4schm
+ut4scho
+ut4schö
+ut3ser
+ut3s2k
+ut1so
+ut1s2p
+ut3sto
+ut3tan
+ut3t2l
+utt4le
+utt1s2
+utu2b
+u2tum
+utu4n
+u2t1une
+utu4re
+utu3ro
+utu5ru
+u4tz
+utze2
+ut2zeh
+utz3eng
+utz2er
+ut2zet
+ut2z1in
+ut2z1w
+2u3u4
+uum1
+uuma2
+uungsma5
+uungsmas8
+u1ü4
+u1v4
+u2ve.
+uve3rä
+u1w
+2u1x
+ux2e
+ux2o
+uxt2
+u1ya
+2u1z
+u2z1ec
+uz2er
+uzo2f
+uz3ot
+uz1we
+uz3z2
+uzz4l
+1üb
+üb1ä
+2übc
+2übd
+üb4e2
+übe3le
+übe4na
+übe3ne
+über3
+überas4
+ü4bet
+üb3l
+üb3r
+2üc
+ü1che
+üch3l
+üch4s1c
+ücht4e
+ücke4n
+ück1er
+ück3eri
+ücker6ke
+ü4d3a4
+üde2l
+üden2g
+ü3d2ens
+üd3o4
+üdö4
+üd3r
+üd3s2
+üd3t4
+üdu2
+üdwe4
+üe2
+üeb3
+ü1ei
+ü4f1a
+ü2f1ä
+ü2f1ei
+ü2fent
+üfer2
+ü2f1erg
+üf2fl
+ü2f3i
+üf3l
+ü2fo
+üf3te
+üf4tei
+ü2fum
+ü1g
+üg2e
+üge2l1a2
+üge2lä
+üge4lec
+üge6lei6s
+üge2lo
+ügen3s
+ü2g3l
+ü2gn
+üg3s
+üh3a4
+ü1he
+ü2h1ei
+ü2h1eng
+ü2h1ent
+üh1er
+ü2herf
+ü2her2k
+ü2her2z
+ü2hex
+üh1i4
+üh1lä
+ühl2er
+ühl4sta
+ühl4sti
+üh3mo
+üh3ne
+üh1o2
+üh3r2e
+ühr3ei.
+ühre2n1
+üh1ro
+ühr3ta
+ühs2
+üh3sp
+üh3stu
+üh3t2
+üht4r
+ü1hu
+üh1w
+ü1k2
+ül1a
+ül2c
+ü3l2e
+ü4l3ef
+üle2ra
+ül2la4
+üll1ad
+üll1au
+ül2lei
+üll2er
+ül4leu
+ül2lic
+ül2lid
+ül2li2n
+ül2lo
+ül2lö
+ülls2
+ü2lö
+ü1lu
+ü2ma
+ü2ment
+üme2ra
+ü2m1id
+ü2m1in
+ü2m1u
+2ün
+ü4n3a
+ün2da
+ün2dr
+ü2n1erd
+ünf1
+ünf3li
+ün2g3l
+üngs2
+ünster3
+ün2za
+ünzu2
+ün2zun
+ün2zw
+ü1pe
+üpf3l
+ü1pi
+üp2p3l
+ür1a
+ü2r1ei
+ü2r1e2l
+ür2fl
+ür2fr
+ür4g3en4g
+ürge4ra
+ürk2e
+ü1r2o3
+ürom2
+üror2
+ür4ster
+ürte2l1
+ürt4h
+ürz2a
+ür2z1in
+ür2zö
+ür2z1w
+üs2a
+ü2schl
+üs2e
+üse1e2
+üse3l2
+üse4n
+üse1r4
+üse3t
+ü1sp
+üs2s3a
+üs2s1c
+üss2e
+ü4s3sel
+üs2s1o
+üs4st
+üs2su
+üs4t
+ü2st3a2
+ü4stei
+üste2n
+ü2str
+ü1su
+ü1ß
+2üt
+ü1ta
+ü2t1al
+ü1te
+üte3m
+üte4n
+üten3s
+ütent4
+üten3z2
+üte2ra
+üte2r1e
+üterich6
+üter3n
+ü2t3h
+ü1ti
+üt3r
+üt2s1
+ütte4n
+üt2tr
+ü1tu
+üt3z2e
+üt2zw
+ü1v
+ü1z
+3va.
+2v1ab
+vab4r
+va1c
+va1f4
+vag2a
+va2la
+2valu
+2vanb
+2vang
+2varb
+v1arm
+vas2
+2v1ass
+v4at
+va2t1a2
+va2tei
+va4t3eng
+vates2
+va2t3h
+va4tid
+vatik2
+va4tim
+va4t1in
+vati8ons.
+va4tord
+va2t3r
+vat3s2
+va2t1u
+vat3z
+2v1au
+vä1
+2v1b
+2v1c
+2v1d2
+1ve2
+ve3an
+ve3ar
+veau3s
+ve3b4
+ve3c
+ve3d
+ve3fa
+ve3g
+ve3h2
+2veig
+v2eil
+2vein
+veit2
+veits1
+ve3la
+2velan
+ve4l1au
+v1ele
+ve3lei
+ve3li
+ve3lo
+ve3ma
+ve3me
+2ve3mu
+ve3nal
+ve4nas
+ven2c
+ve3ne
+ve3ni
+ve4nin
+ve3nö
+ven5st
+ven4t3ag
+ve3nü
+ve3of
+ver1
+ver3a
+ve3rad
+2veral
+ve3rand
+ver4ane
+vera4s
+ver6bart
+ver3b2l
+ver3d2
+vere2
+verf4
+ver3fa
+ver3g4
+vergas6
+verga7sse
+ve3ri
+ve4rin
+ver3k
+vermas8sen
+vern2
+ver4sep
+ver3sta
+vert4
+ver5te
+ver3u4
+ve3s
+2vesc
+2vese
+ve4sh
+ve4s1p
+ves4t
+ve3t
+vete1
+vete3r
+2veü
+ve3v
+ve3w
+ve3x
+2v1f4
+2v1g
+2v1h
+vi2ad
+vi3ar
+vi4a3t
+vi2ä
+vi3de
+vie2ha
+vi2el
+viela2
+viele2
+vi2er
+vie4rec
+vie2w1
+vig2
+2vii
+v2il
+vi2l1a
+vi2lä
+vi4l1e2h
+vi2lei
+vi4lers
+vi2l3in
+vil3l
+2v1i2m
+vima2
+vi4na
+2v1in3d
+ving3
+2v1int
+vi3sa
+vise4
+vi3s2i
+vi3s2o
+vi2sp
+vis2u
+viv2
+vi3z
+vize3
+2v1k
+2v1l2
+v3le3
+v2lie
+2v1m
+vm2e
+2v1n2
+1vo
+2v1ob
+vo2be
+vob4l
+vo3ga
+voge2l1
+vo2gu
+vol2a
+voll3ar
+voll7auf.
+vollen6
+voll5end
+2v1op
+vo2r1
+vor3a
+voran8schl
+vore4
+vor3g
+vo3ri
+vo4rie
+vo5rig
+vorm2
+vormen4
+vor3o
+vorö4
+vort4
+vot2a
+voy1
+2v1p
+vr2
+v1ra
+v2ree
+3v2ri
+v1ro
+2v1s2
+v3sz
+2v1t
+vue3
+vu2enu
+vu2et
+2vumf
+2vumg
+2vumk
+2v1ü
+2v1v
+2v1w
+2v1z
+w2a
+1waa
+wab2bl
+wa3che
+wach8stub
+wach4t4r
+1wack
+waffe2
+waffel3
+1wag
+wa5ge
+wage4n
+wa2g3n
+wa3go
+1wah
+wahl5ent
+wah4ler
+wah2l1i
+1wal
+wala3c
+wa2lar
+2walb
+wal2d3a
+wal4din
+wa2les
+wa3li
+wal4li4n
+wal2m1
+wals2
+walt1a
+wal6tere
+wal6terl
+wal2to
+wal4tur
+wa3na
+wan2d1a2
+wan2dr
+w3anf
+2wang
+wan3g2e
+wang4s
+1wann
+wan6z5en6d
+wan4zer
+wa2p
+1war2e
+ware1i
+wa3ren
+1warn
+wart4e
+war2th
+1was
+wa3sa
+was2c
+wa4scha
+wa3sche
+wa3schi
+wa4sch3l
+wa4schw
+wa3sh
+wass4e2
+wa3su
+w2ä
+1wäh
+1wäl
+wäm3
+2wäng
+1wäs3
+wä5sc
+wä4ss
+wäss4e
+2w3äu3
+2w1b2
+wbu2
+2w1c
+2w1d
+we2a
+we2b1a
+webe1i
+we2b3l
+we2bo
+we2b3r
+we2e2
+weed3
+we2fl
+1weg
+we2g1a
+we4g1ei
+weg5ersc
+we4g3l
+we4gn
+we2g1o2
+we2g3r
+weg1s
+wegs2a
+1weh
+weh4r3er
+wei2bl
+weib4r
+wei3dr
+2weie
+weifel6d
+wei2gr
+wei3k4
+1weil
+wei3nel
+weins3a
+weinsau6
+wei3sc
+wei2t3r
+weit1s
+wei5ze
+welle4
+wel6schl
+wel6schr
+wel2t1
+welt3a2
+welte4
+wel6t5en6d
+wel4th
+welt3i
+welt3r
+wem2ma2
+wen3a2
+wen2gl
+we3n2i
+wen2ka
+wen4kla
+wen4k3ri
+we2r3a2
+wer5be
+werbe3i
+wer2bl
+werb2s
+1werbu
+werd2
+werde3i
+5werdens
+1werdu
+werer2
+wer2fl
+2werg
+wer6gels
+wer2g3o
+wer2gr
+werin2
+we4r3io
+1werk.
+wer4k1a
+1werke
+wer2ki
+wer2k3l
+wer2kn
+wer2ko
+wer4kre
+wer2ku
+we2rö
+wer4sta
+wer2ta
+wer2tä
+wer3t3ei
+wer6teig
+werter6k
+wer6t5erm
+wer2th
+wer2t1o2
+wer4tre
+wer4t3ri
+wer4tum
+1we3s2e
+wesen4s3
+we2sp
+wes4t
+we4st1a
+we4stec
+we4st3ei
+we5sten.
+we6sten6d
+we5stens
+we4steu
+we4sti
+we4st1o4
+we2st3r
+we4stu
+1wet
+2wets
+wett3s
+2w1ey
+2w1g
+whi2
+w3ho
+w2i
+wicht4s
+1wid
+wi2e
+2wieb
+1wied
+wie3l2
+wie3n2e
+wie4st
+1wild
+wim2ma
+wim4m3u
+win2a
+win4d3ec
+win4dei
+win6d5erz
+1win2d5r
+2wing
+win2g3r
+win2kl
+win8n7er8sc
+win2no
+win4num
+win3s
+wint2
+1wi4r
+wire3
+wisch3l
+wi3s2e
+wi2sp
+1wiss
+wiss4z
+wi3st
+wi3th
+1witz.
+1witzl
+wiz2
+2w1k
+2w1l
+2w1m
+2wn
+wns2a
+wn3sh
+1wo1c
+wo2cha
+woch2e4
+1woh
+woh4lei
+1wolf
+wolf2s
+wol4la
+wol2lä
+wol4ler
+wor3a
+wor3d
+wo2r3i
+worn2
+wort1a
+wor4tel
+wor6terh
+wor2t3r
+worts2
+wo4r3u
+wor3ü
+wot2
+1wöc
+wöl2fo
+wört4h
+2w1p
+w2r
+w3ro
+2w1s
+ws2e
+w3s2h
+w3s2k
+2w1t
+wti2
+1wuc
+wuch4sc
+wuch4st
+w1u2f
+wuls2
+wul3se
+wund4e
+wung3r
+wung5s2
+wun2s
+wunsch5l
+4wur.
+wur2fa
+wur2f1o
+wur2fr
+wurs4
+1wurst
+wus4
+1wu2t1
+1wüh
+1würf
+1würst
+wüs4
+2w1w
+2w1z
+x1a
+1xa.
+2xa2b
+1x2ad
+1xae
+xa1fl
+1x2a3g2
+2xal
+xal2l
+xa2m
+xand4
+x2an3t2
+x2anz
+1x2as
+xau3
+xaus2
+2x1b4
+2xc
+x1ce
+x1ch
+x1cl
+4x1d
+xda2
+xdy2
+1xe
+2x1e4g
+2xek
+xe2l
+x1ele
+x1em
+3x2em.
+x2ems
+x2en
+xen3s2
+x2er.
+x2ere
+2xerl
+xers2
+2x1eu
+2x1ex
+4x1f
+2x1g
+2x1h
+xib4
+xi1c
+xich2
+2xid
+xi2dan
+xide2
+xi2dei
+xi2d1em
+x1i2do
+xi4ds
+x2ie
+xie3l
+xi3g
+xi2ler
+xi2lo
+xi2l1u
+xim2
+xin3s2
+x2is
+xi2sa
+xi2s1e
+xi2s1o2
+xi2sp
+xis5s2
+xi3stä
+xi2su
+x1i2tu
+xive4
+2x1j
+2x1k2
+xkal2
+4x2l2
+x3lä
+x3le
+2x1m
+2x1n
+2xod
+2x3oe4
+x1or
+2x1ö2
+4x1p
+xpor6ter
+xpor4t3r
+x1q
+2x1r
+4x3s2
+4x1t
+xt1a
+x3ta.
+x3tan
+xt2ant
+x3tas
+x2t1ä
+x3tät
+x2t1e2d
+xt1ein
+x2t1el
+x2tent
+x2t1er2f
+x2t1ev
+xtfi4
+x2t3h
+x2tid
+xti2la
+x2til2l
+xt1o2
+x2tor
+xtra3b4
+x2t3ran
+x2trau
+xt3rec
+xt3s2
+x2t1um
+x2t1un
+1xu
+xu1a
+2x1u2n
+xu2s3
+xuss2
+2xv
+2x1w
+2xy
+3xy.
+3xys
+2x1z
+2yab
+1ya2c
+y2ach
+y2ag
+ya1h
+y1al.
+y1a2m
+y2ana
+yan2g
+y1ank
+y2a3ra
+ya4s
+yat2
+y1ät
+y1b
+y1c4
+y2chi
+y3chis
+ych3n
+y1d4
+y3dr
+ydri4
+ydrid1
+y1e
+y2ec
+ye2d
+y2ef
+y2el
+yen4n
+y2ere
+yer2n1
+y2es
+yes2p
+y3e4st
+ye2th
+y1f2
+y1g
+ygi2
+ygie5
+yg2l
+y1h
+yhr2
+y3i4
+y1j
+y1k2
+yke3n
+yk3s
+y1l
+yl1a2c
+y2l1a2m
+yla2n
+y3lant
+yl4ante
+yl4anti
+y4lantr
+y3lat
+ylau2
+yl3c
+yle2
+y4le.
+yl1em
+y2l1es
+y2l1et
+yli4n
+yl2lo2
+yl2lö2
+yloi4
+yloid1
+yloni1
+yl1ora
+ym4a
+ym4e
+ymp2
+ym2pha
+ympi1
+yn2eu
+yn3k2
+y2n1o
+yno4d
+yno2t
+yob2
+yoga3
+yom4
+yon2a
+yon4i
+y1ont
+y1os
+y2ost
+y1ou
+2y1p
+ypa2
+yp1ab3
+yp1an
+yp2e2
+y2pf
+y2p1i2d
+y2p1in
+y2p3l
+ypo3
+y4p3s
+yp3t
+ypu2
+y2p1um
+y1q
+y1r
+yra3k
+y3r2e
+y3ri
+yri2a
+yri1e
+yri3en
+y3ro
+yro6ste
+yrr2
+y1s
+ys2an
+ys2c
+ys2e1
+ysein2
+y3s2h
+y4s3l
+ysme3
+ys2o
+ys2pa
+ys2pi
+yst2e
+yst4h
+ys2tra
+y4stro
+y3s2ty
+ysu2
+y2sur
+y3s2z
+y1t2
+y2te.
+y2tes
+yt4h
+ythe1
+y3to
+y4t3r
+yt3t
+y1u2r
+y1v
+y1w
+y1y
+y1z2
+yzer2
+2z1a2b
+zab3l
+za1cha
+za1chä
+2z1a2d
+2z1af
+za3gr
+3z2ah
+zah3le
+zah4ner4
+2z3ak
+4zakk
+2z1al
+3zali
+2z1a2m
+z1a2n
+z2an.
+4za4na
+2zanb
+za3ne
+2zanf
+2zangs
+3z2ank
+zan2ka
+2zanr
+zanti1
+za4pf
+z1aq
+z1ar
+3zar.
+2zarb
+2zarm
+3z2aro
+zar2tr
+2z1as
+za4sc
+za3st4
+2z1aß
+z3at
+zat2e
+za2to
+3zaub
+z1au2f
+2z3aug
+3zaun
+z3aur
+2z1aut
+2z1äc
+z2äh
+2z1äm
+z1än
+z1äp
+z1är
+2z1äus
+2zäuß
+4z3b4
+zbe3r2e
+zbü1b
+zbübe3
+2z3c
+2z3d2
+zdan2
+zdä1
+3ze.
+zeau3
+zeaus4
+2z1e2ben
+2z1echo
+ze1e2
+zeeu3
+2z1eff
+z1e2ga
+zehe4
+zehen1
+zeh2l
+ze3ho
+z2ei1f4
+zeil2
+zei3la
+zeile4
+2z1ein
+ze3in.
+zeinbus6
+z2e1ind
+zei4ne
+z2eino
+ze3inse
+ze2i3s2
+zeist4
+3zeit
+zei2t1a
+zei4t3er
+zei2tr
+zeit3ri
+ze2l1a
+zela2d
+zelau2
+ze2l1ä
+zel3d
+2ze2lek
+2zelem
+ze2len
+ze2l1er
+ze2l1in
+2z1e2lit
+zel3la
+zel4l3ac
+zel2lä
+zel4leh
+zel6lein
+zel6ler6t
+zelli4n
+zelm4
+ze2l1o
+zels2
+zel3sa
+zel3sz
+zelu2
+zembe2
+2z1emp
+5zen.
+ze4n1ac
+ze4nas
+zen3au
+ze3n2em
+zenen1
+4zenge.
+z4engl
+2zengp
+zen3n
+ze2n3o
+ze4not
+4zensem
+zens2p
+zen4tha
+z2entn
+zent3s
+2zentw
+2zentz
+ze2nu
+zen4z3er
+zen2zw
+zeo4r
+3z2er.
+zer3a
+ze1ral
+zere2b
+z2erfe
+z2erga
+2z1ergä
+4z3ergeb
+z4erges
+z4ergl
+zer4gon
+2zergu
+z2erhe
+2z3erhö
+ze3ri
+zerin6te
+z2erko
+3zerl.
+zer4lau
+zer4le.
+4zerleb
+zer4len
+2zerlö
+3z2ern
+zer4nan
+zer4n3e4b
+zer4nei
+2z1erö
+zer2öf
+2z1erq
+4z3erreg
+z2ers.
+2z1er4sa
+zerta2
+zer4t3ag
+zert4an
+zer6tere
+zer6terl
+zer4tin
+zer2to
+6z5ertrag
+zer6trau
+z1erwe
+2z1erz
+zer2ze
+4z3erzi
+ze2s
+3zes.
+ze3sc
+zes1e
+zes3er
+ze4s3po
+ze4spr
+zes2sa
+zes4sei
+zessen4
+zes6s5end
+zes4ser4
+zes2sp
+ze3sta
+zes2th
+ze2ß1
+2zeta
+2z1e2th
+ze2tr
+2zetts
+zeu2g3r
+2z1eul
+ze1ur
+2z1e2x1
+2z3f4
+zfäs3
+zfeue2
+2z3g4
+zgang5
+zger2a
+zger2s1
+2z1h2
+z2hen
+zhir3
+3zi.
+zial5l
+zi3ar
+zich2o
+zi2dei
+zid3r
+zie4ler
+zie2l1i
+zi1erh
+zi1es
+zi3ess
+3zig
+3z2il
+zil2e
+zill2
+z2imm
+2zimp
+zim2t3
+2z1ind
+zin2e
+zin3ei
+2z1inf
+z1inh
+zi4n3in
+zin1it
+2z1inj
+zin2na
+zin4o
+zin2sa
+zin4ser
+4zinsuf
+z1inv
+zi2o3
+zirk2
+zirk6s
+2z1i2so
+zisse4
+zis4t
+zistras6
+zi3s2z
+zi2tan
+zite4
+zithe2
+zi2t1o4
+ziv2
+2z1j
+4z1k4
+2z1l2
+z3ly
+2z1m2
+zmas6sen
+zme2e
+2z3n2
+z3oas
+2z1ob
+z1of
+zo2gl
+2z1oh
+zolla2
+zol3le
+zol4lei
+zoller4
+zol6lert
+zol2li2
+zon3au
+zon3s4
+zon4t3er
+zo2o
+2zope
+2z1o2r
+zo3re
+3z2orn
+zor4ne
+2z1osz
+2z1ou
+2zö2f
+2z1ök
+z1öl
+zö4le
+3z2öll
+2zöls
+2zön
+2z3p4
+2z1q
+2z3r2
+4z1s2
+z3sa
+zsau2
+z3sh
+z3sk
+zspor2
+z3str
+z3sz
+2z1t
+zta2n
+zt3ane
+z2t1au
+ztein1
+zt3eins
+zt2el
+z2t1ent
+z2t1erz
+z3tes
+zte3str
+zt3he
+z3t4hem
+z3t4her
+zt3hi
+zt3ho
+z3thr
+z3thy
+zt3rec
+zt3s
+zu3a
+zu1ä2
+zub4
+zubus2
+3zuc
+zuch2e
+zud4
+zudi4
+zu2el
+zu3e2r1
+zu3f4
+zu2gar
+zu4gent
+zu3g1l
+zu4gla
+zu4glö
+zug4ste
+zug1un
+2z1uhr
+zu3hu
+zu1i2
+zu3k
+zul2
+2z1um.
+zum2a
+2z1umb
+zumen2
+2zumf
+2zumg
+zum2i
+2zuml
+2zumr
+2z1ums
+zum2u
+2zunab
+zun2e
+2z1unem
+4zunget
+2z1ungl
+z1uni
+2zu2nio
+2zuniv
+2zunr
+2z1uns
+2zunt
+zuo2
+zup2fi
+zu3pl
+zu3r4a
+2z1urk
+2z1url
+2z1urn
+2z1urs
+2z1urt
+zu3s2
+zusch4
+zu3t2
+zut4r
+zut4u
+zut3z
+zuz2
+2zü4b
+3züc
+zür1c
+2z1v
+zw2
+z1wac
+2zwag
+2zwah
+2zwal
+2zwap
+z1war
+2zwa2s
+2zwäs
+2z1wed
+2zweg
+2zweh
+z2weig
+2zweil
+zwei3s
+zweiter6
+2z1wel
+2z1wen
+2z1wer
+2z1wes
+z2wic
+zwi4e
+3zwing
+2zwirt
+z2wisc
+2zwiss
+z2wit
+2z1wo
+z1wör
+z1wur
+2z1wü
+zy1an.
+zy2le4
+4z1z
+z3z2a
+zza3b4
+z4z3al
+zz4at
+zze3s
+z2z1id
+zzin1
+zz1ini
+zz2ö
+zzug4s
 }
 
+\endinput
+
+% ======================================================================
+% Editor settings
+% ======================================================================
+%
 % Local Variables:
+% mode: tex
 % coding: latin-1
+% fill-column: 72
 % End:
-%
-% End of file `hyphen.det'.
+% vim: set filetype=tex textwidth=72:
index 97c75f8..163d7fa 100644 (file)
@@ -1,7 +1,7 @@
-% This is the file `hyphen.fr'.
+% This is the file 'hyphen.fr'.
 %
-% It contains the same hyphenation patterns as `frhyph.tex'.  Here the
-% copyright message:
+% It contains the same hyphenation patterns as 'frhyph.tex'.  Here is
+% the copyright message:
 %
 %    frhyph.tex % French hyphenation patterns
 %   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -14,7 +14,7 @@
 %
 % To make the patterns workable with groff, all accent macros in the
 % patterns have been converted to use latin-9 characters directly
-% (this is, the oe ligature `½' is used), and everything except the
+% (this is, the oe ligature '½' is used), and everything except the
 % \patterns command has been discarded since it isn't needed (and groff
 % doesn't understand this stuff anyway).
 %
@@ -1317,8 +1317,13 @@ privatdo3zent.
 
 \endinput
 
+% ======================================================================
+% Editor settings
+% ======================================================================
+%
 % Local Variables:
+% mode: tex
 % coding: latin-9
+% fill-column: 72
 % End:
-%
-% End of file `hyphen.fr'.
+% vim: set filetype=tex textwidth=72:
index 407e156..67de5cf 100644 (file)
@@ -1,12 +1,14 @@
-% --------------------------------------------------------------------------
-% Swedish hyphenation patterns. 
+% ----------------------------------------------------------------------
+% Swedish hyphenation patterns.
 %
 % Copyright 1994 by Jan Michael Rynning. All rights reserved.
-% This program may be distributed and/or modified under the conditions of
-% the LaTeX Project Public License, either version 1.2 of this license or
-% (at your option) any later version.  The latest version of this license
-% is in http://www.latex-project.org/lppl.txt and version 1.2 or later is
-% part of all distributions of LaTeX version 1999/12/01 or later.
+%
+% This program may be distributed and/or modified under the conditions
+% of the LaTeX Project Public License, either version 1.2 of this
+% license or (at your option) any later version.  The latest version of
+% this license is in http://www.latex-project.org/lppl.txt and version
+% 1.2 or later is part of all distributions of LaTeX version 1999/12/01
+% or later.
 %
 % Last update: 1994-03-03 (March 3, 1994).
 % Revision history:
 % 1991-11-13: Added another some 6500 compound words, all of which were
 %             incorrectly hyphenated by the old patterns.
 % 1992-01-30: Changed macros to ^^, for use with LaTeX and dc fonts.
-% 1994-03-03: The hyphenated dictionary now contains about 118,000 words.
-%             The hyphenation now works much better for compound words.
-%             Patgen parameters: 1 2 20, 2 1 8, 1 4 7, 3 2 1, 1 10000 4.
-%             
+% 1994-03-03: The hyphenated dictionary now contains about 118,000
+%             words.  The hyphenation now works much better for compound
+%             words.  Patgen parameters: 1 2 20, 2 1 8, 1 4 7, 3 2 1, 1
+%             10000 4.
+%
 % This file contains Swedish hyphenation patterns for TeX.  It assumes
 % that you have fonts with the Swedish letters in the positions where
 % they occur in ISO Latin 1 (ISO 8859/1):
 % correctly if \lefthyphenmin>=1 and \righthyphenmin>=2.
 %
 % These hyphenation patterns work quite well for simple words, but not
-% quite as well for compound words.  I'm working on improving the quality,
-% by adding more words.  If you know any Swedish words which are not
-% correctly hypheneted using these patterns, or if you have questions or
-% comments, please contact me:
+% quite as well for compound words.  I'm working on improving the
+% quality, by adding more words.  If you know any Swedish words which
+% are not correctly hypheneted using these patterns, or if you have
+% questions or comments, please contact me:
 %
 % Jan Michael Rynning <jmr@incolumitas.se>
-% --------------------------------------------------------------------------
+% ----------------------------------------------------------------------
 \message{Swedish hyphenation patterns, Jan Michael Rynning, 1994-03-03.}
 {
 % Set \catcode, \uccode, and \lccode for the Swedish letters.
@@ -4755,3 +4758,12 @@ z4zin
 }
 }
 
+% ======================================================================
+% Editor settings
+% ======================================================================
+%
+% Local Variables:
+% mode: tex
+% fill-column: 72
+% End:
+% vim: set filetype=tex textwidth=72:
index 86e113c..770c171 100644 (file)
@@ -1,7 +1,7 @@
 % The Plain TeX hyphenation tables [NOT TO BE CHANGED IN ANY WAY!]
-% Unlimited copying and redistribution of this file are permitted as long
-% as this file is not modified. Modifications are permitted, but only if
-% the resulting file is not named hyphen.tex.
+% Unlimited copying and redistribution of this file are permitted as
+% long as this file is not modified.  Modifications are permitted, but
+% only if the resulting file is not named hyphen.tex.
 \patterns{ % just type <return> if you're not using INITEX
 .ach4
 .ad4der
@@ -4467,3 +4467,12 @@ ref-or-ma-tion
 ret-ri-bu-tion
 ta-ble
 }
+% ======================================================================
+% Editor settings
+% ======================================================================
+%
+% Local Variables:
+% mode: tex
+% fill-column: 72
+% End:
+% vim: set filetype=tex textwidth=72:
index dc8a711..ed32239 100644 (file)
   úhlo-pøíè-ky
 }
 
-%%% Local Variables:
-%%% mode: tex
-%%% coding: latin-2
-%%% End:
+% ======================================================================
+% Editor settings
+% ======================================================================
+%
+% Local Variables:
+% mode: tex
+% coding: latin-2
+% fill-column: 72
+% End:
+% vim: set filetype=tex textwidth=72:
diff --git a/tmac/hyphenex.det b/tmac/hyphenex.det
deleted file mode 100644 (file)
index c74eeba..0000000
+++ /dev/null
@@ -1,3838 +0,0 @@
-% dehyphtex.tex
-%
-% Errata für dehypht.tex 1999-03-03
-%
-% kompiliert 2006-01-28
-%
-% Copyright (C) 2005, 2006 Werner Lemberg <wl@gnu.org>
-%
-% This program can be redistributed and/or modified under the terms
-% of the LaTeX Project Public License Distributed from CTAN
-% archives in directory macros/latex/base/lppl.txt; either
-% version 1 of the License, or any later version.
-%
-%
-% Achtung: Diese Datei muß *nach* german.sty geladen werden!
-% Attention: This file must be loaded *after* german.sty!
-%
-% In web2c-basierten TeX-Implementationen ist es notwendig, die
-% Variable `hyph_size' (in texmf.cnf) auf einen größeren Wert wie
-% z.B. 5000 zu setzen, um einen Kapazitätsüberlauf der
-% Trennstellenausnahmen zu vermeiden.
-% Web2c based TeX implementations need to increase the value of
-% `hyph_size' (in texmf.cnf) to, say, 5000 to avoid an overflow
-% of TeX's exception dictionary.
-%
-
-\begingroup
-
-\catcode `\ä=11 \catcode `\Ä=11
-\catcode `\ö=11 \catcode `\Ö=11
-\catcode `\ü=11 \catcode `\Ü=11
-\catcode `\^^ff=11 \catcode `\^^Y=11 % ß
-
-\lccode `\Ä=`\ä \lccode `\ä=`\ä
-\lccode `\Ö=`\ö \lccode `\ö=`\ö
-\lccode `\Ü=`\ü \lccode `\ü=`\ü
-\lccode `\^^ff=`\^^ff \lccode `\^^Y=`\^^Y
-
-\hyphenation{
-%
-%
-% falsche Trennungen einfacher Wörter
-%
-  Aa-les % Aal-es
-  Af-gha-nin-nen % Af-ghan-in-nen
-  ag-gres-si-ve-rem % ag-gres-si-ver-em
-  ag-gres-si-ve-ren % ag-gres-si-ver-en
-  ag-gres-si-ve-rer % ag-gres-si-ver-er
-  ag-gres-si-ve-res % ag-gres-si-ver-es
-  AIDS % AI-DS
-  ak-ti-ve-rem % ak-ti-ver-em
-  ak-ti-ve-ren % ak-ti-ver-en
-  ak-ti-ve-rer % ak-ti-ver-er
-  ak-ti-ve-res % ak-ti-ver-es
-  ak-tu-el-le-rer % ak-tu-el-ler-er
-  ak-zep-ta-ble-rer % ak-zep-ta-bler-er
-  Ale-man-nin-nen % Ale-mann-in-nen
-  Al-ler-gie % All-er-gie
-  Al-ler-gi-en % All-er-gi-en
-  al-ler-gisch % all-er-gisch
-  al-ler-gi-sche % all-er-gi-sche
-  al-ler-gi-schem % all-er-gi-schem
-  al-ler-gi-schen % all-er-gi-schen
-  al-ler-gi-scher % all-er-gi-scher
-  al-ler-gi-sches % all-er-gi-sches
-  Al-ma-na-chen % Al-ma-nach-en
-  am-bi-tiö-se % am-bi-ti-öse
-  am-bi-tiö-sem % am-bi-ti-ösem
-  am-bi-tiö-sen % am-bi-ti-ösen
-  am-bi-tiö-ser % am-bi-ti-öser
-  am-bi-tiö-ses % am-bi-ti-öses
-  Ana-lo-gons % Ana-lo-g-ons
-  ang-le % an-gle
-  An-gli-zis-men % An-g-li-zis-men
-  An-gli-zis-mus % An-g-li-zis-mus
-  ano-mal % an-omal
-  ano-ma-le % an-oma-le
-  ano-ma-lem % an-oma-lem
-  ano-ma-len % an-oma-len
-  ano-ma-ler % an-oma-ler
-  ano-ma-le-re % an-oma-le-re
-  ano-ma-le-rem % an-oma-le-rem
-  ano-ma-le-ren % an-oma-le-ren
-  ano-ma-le-rer % an-oma-ler-er
-  ano-ma-le-res % an-oma-le-res
-  ano-ma-les % an-oma-les
-  Ano-ma-lie % An-oma-lie
-  Ano-ma-li-en % An-oma-li-en
-  ano-mal-ste % an-omal-ste
-  ano-mal-stem % an-omal-stem
-  ano-mal-sten % an-omal-sten
-  ano-mal-ster % an-omal-ster
-  ano-mal-stes % an-omal-stes
-  An-thro-po-ide % An-thro-poi-de
-  An-thro-po-iden % An-thro-poi-den
-  Ar-gons % Ar-g-ons
-  ASCII % AS-CII
-  As-sem-bler % As-sem-b-ler
-  As-sem-blern % As-sem-b-lern
-  As-sem-blers % As-sem-b-lers
-  as-sem-blie-re % as-sem-b-lie-re
-  as-sem-blie-ren % as-sem-b-lie-ren
-  as-sem-blie-rend % as-sem-b-lie-rend
-  as-sem-blie-ren-de % as-sem-b-lie-ren-de
-  as-sem-blie-ren-dem % as-sem-b-lie-ren-dem
-  as-sem-blie-ren-den % as-sem-b-lie-ren-den
-  as-sem-blie-ren-der % as-sem-b-lie-ren-der
-  as-sem-blie-ren-des % as-sem-b-lie-ren-des
-  as-sem-blierst % as-sem-b-lierst
-  as-sem-bliert % as-sem-b-liert
-  as-sem-blier-te % as-sem-b-lier-te
-  as-sem-blier-tem % as-sem-b-lier-tem
-  as-sem-blier-ten % as-sem-b-lier-ten
-  as-sem-blier-ter % as-sem-b-lier-ter
-  as-sem-blier-tes % as-sem-b-lier-tes
-  as-sem-blier-test % as-sem-b-lier-test
-  as-sem-blier-tet % as-sem-b-lier-tet
-  Aste-ro-iden % Aste-roi-den
-  at-trak-ti-ve-rem % at-trak-ti-ver-em
-  at-trak-ti-ve-ren % at-trak-ti-ver-en
-  at-trak-ti-ve-rer % at-trak-ti-ver-er
-  at-trak-ti-ve-res % at-trak-ti-ver-es
-  auf-kremp-le % auf-krem-ple
-  auf-munt-re % auf-mun-tre
-  auf-wieg-le % auf-wie-gle
-  Aut-op-sie % Au-top-sie
-  Aut-op-si-en % Au-top-si-en
-  au-to-ri-tä-rem % au-to-ri-tär-em
-  au-to-ri-tä-ren % au-to-ri-tär-en
-  au-to-ri-tä-rer % au-to-ri-tär-er
-  au-to-ri-tä-res % au-to-ri-tär-es
-  Ba-ro-nin-nen % Ba-ron-in-nen
-  Base-ball % Ba-se-ball
-  Bea-mer % Be-a-mer
-  Bea-mern % Be-a-mern
-  Bea-mers % Be-a-mers
-  bech-re % be-ch-re
-  Bie-ren % Bier-en
-  Bie-res % Bier-es
-  Bis-tü-mer % Bi-stü-mer
-  Bis-tü-mern % Bi-stü-mern
-  bla-ma-ble-rer % bla-ma-bler-er
-  blätt-re % blät-tre
-  brei-ige % breii-ge
-  brei-igem % breii-gem
-  brei-igen % breii-gen
-  brei-iger % breii-ger
-  brei-iges % breii-ges
-  Bro-ten % Bro-t-en
-  Bro-tes % Bro-t-es
-  brü-ste-te % brüs-te-te
-  brü-ste-ten % brüs-te-ten
-  brü-ste-test % brüs-te-test
-  brü-ste-tet % brüs-te-tet
-  bru-ta-le-rer % bru-ta-ler-er
-  büg-le % bü-g-le
-  bükst % bü-kst
-  bükt % bü-kt
-  butt-re % but-tre
-  Bytes % By-tes
-  chart-re % char-tre
-  Che-fin-nen % Chef-in-nen
-  chif-frier % chif-fri-er
-  Chi-nins % Chin-ins
-  Cho-le-ste-rins % Cho-le-ste-r-ins
-  Ci-nea-sten % Ci-ne-a-sten
-  ci-nea-stisch % ci-ne-a-stisch
-  ci-nea-sti-sche % ci-ne-a-sti-sche
-  ci-nea-sti-schem % ci-ne-a-sti-schem
-  ci-nea-sti-schen % ci-ne-a-sti-schen
-  ci-nea-sti-scher % ci-ne-a-sti-scher
-  ci-nea-sti-sches % ci-ne-a-sti-sches
-  cle-ve-rem % cle-ver-em
-  cle-ve-rer % cle-ver-er
-  cle-ve-res % cle-ver-es
-  Code % Co-de
-  Codes % Co-des
-  Cou-sins % Cous-ins
-  Deal % De-al
-  dealt % de-alt
-  deal-te % de-al-te
-  deal-ten % de-al-ten
-  deal-test % de-al-test
-  deal-tet % de-al-tet
-  de-fi-zi-tä-rem % de-fi-zi-tär-em
-  de-fi-zi-tä-ren % de-fi-zi-tär-en
-  de-fi-zi-tä-rer % de-fi-zi-tär-er
-  de-fi-zi-tä-res % de-fi-zi-tär-es
-  De-ka-nin-nen % De-kan-in-nen
-  De-sign-er % De-si-gner
-  De-sign-erin % De-si-gne-rin
-  De-sign-erin-nen % De-si-gne-rin-nen
-  De-sign-ern % De-si-gnern
-  De-sign-ers % De-si-gners
-  De-signs % De-si-gns
-  des-il-lu-sio-nier % des-il-lu-sio-ni-er
-  de-struk-ti-ve-rem % de-struk-ti-ver-em
-  de-struk-ti-ve-ren % de-struk-ti-ver-en
-  de-struk-ti-ve-rer % de-struk-ti-ver-er
-  de-struk-ti-ve-res % de-struk-ti-ver-es
-  De-vons % De-v-ons
-  dick-ste % dicks-te
-  dick-stem % dicks-tem
-  dick-sten % dicks-ten
-  dick-ster % dicks-ter
-  dick-stes % dicks-tes
-  Diö-ze-san % Di-öze-san
-  Diö-ze-sa-ne % Di-öze-sa-ne
-  Diö-ze-sa-nen % Di-öze-sa-nen
-  Diö-ze-sans % Di-özes-ans
-  Diö-ze-se % Di-öze-se
-  Diö-ze-sen % Di-öze-sen
-  dö-ste % dös-te
-  dö-sten % dös-ten
-  dö-stest % dös-test
-  dö-stet % dös-tet
-  dräng-le % drän-g-le
-  dribb-le % drib-ble
-  Drückers % Drück-ers
-  dunk-le-rer % dunk-ler-er
-  ed-le-rer % ed-ler-er
-  ef-fek-ti-ve-rem % ef-fek-ti-ver-em
-  ef-fek-ti-ve-ren % ef-fek-ti-ver-en
-  ef-fek-ti-ve-rer % ef-fek-ti-ver-er
-  ef-fek-ti-ve-res % ef-fek-ti-ver-es
-  ega-li-tä-rem % ega-li-tär-em
-  ega-li-tä-ren % ega-li-tär-en
-  ega-li-tä-rer % ega-li-tär-er
-  ega-li-tä-res % ega-li-tär-es
-  Ego-isten % Egoi-sten
-  Ego-istin % Egoi-stin
-  Ego-istin-nen % Egoi-stin-nen
-  ego-istisch % egoi-stisch
-  ego-isti-sche % egoi-sti-sche
-  ego-isti-schem % egoi-sti-schem
-  ego-isti-schen % egoi-sti-schen
-  ego-isti-scher % egoi-sti-scher
-  ego-isti-sches % egoi-sti-sches
-  eif-re % ei-fre
-  ein-bürg-re % ein-bür-g-re
-  ein-ei-ige % ein-eii-ge
-  ein-ei-igem % ein-eii-gem
-  ein-ei-igen % ein-eii-gen
-  ein-ei-iger % ein-eii-ger
-  ein-ei-iges % ein-eii-ges
-  eit-le-rer % eit-ler-er
-  eli-tä-rem % eli-tär-em
-  eli-tä-ren % eli-tär-en
-  eli-tä-rer % eli-tär-er
-  eli-tä-res % eli-tär-es
-  emo-tio-na-le-rer % emo-tio-na-ler-er
-  emo-tio-nel-le-rer % emo-tio-nel-ler-er
-  er-lernst % er-l-ernst
-  ex-klu-si-ve-rem % ex-klu-si-ver-em
-  ex-klu-si-ve-ren % ex-klu-si-ver-en
-  ex-klu-si-ve-rer % ex-klu-si-ver-er
-  ex-klu-si-ve-res % ex-klu-si-ver-es
-  ex-pan-si-ve-rem % ex-pan-si-ver-em
-  ex-pan-si-ve-ren % ex-pan-si-ver-en
-  ex-pan-si-ve-rer % ex-pan-si-ver-er
-  ex-pan-si-ve-res % ex-pan-si-ver-es
-  ex-plo-si-ve-rem % ex-plo-si-ver-em
-  ex-plo-si-ve-ren % ex-plo-si-ver-en
-  ex-plo-si-ve-rer % ex-plo-si-ver-er
-  ex-plo-si-ve-res % ex-plo-si-ver-es
-  ex-zes-si-ve-rem % ex-zes-si-ver-em
-  ex-zes-si-ve-ren % ex-zes-si-ver-en
-  ex-zes-si-ve-rer % ex-zes-si-ver-er
-  ex-zes-si-ve-res % ex-zes-si-ver-es
-  fäch-le % fä-chle
-  fäch-re % fä-ch-re
-  fah-le-rer % fah-ler-er
-  fa-mi-liä-re % fa-mi-li-äre
-  fa-mi-liä-rem % fa-mi-li-ärem
-  fa-mi-liä-ren % fa-mi-li-ären
-  fa-mi-liä-rer % fa-mi-li-ärer
-  fa-mi-liä-re-re % fa-mi-li-äre-re
-  fa-mi-liä-re-rem % fa-mi-li-äre-rem
-  fa-mi-liä-re-ren % fa-mi-li-äre-ren
-  fa-mi-liä-re-rer % fa-mi-li-äre-rer
-  fa-mi-liä-re-res % fa-mi-li-äre-res
-  fa-mi-liä-res % fa-mi-li-äres
-  Fa-sans % Fas-ans
-  fau-le-rer % fau-ler-er
-  Fea-tures % Fea-tu-res
-  Fer-nan-do % Fer-n-an-do
-  Fer-nan-dos % Fer-n-an-dos
-  feu-da-le-rer % feu-da-ler-er
-  Feuille-ton % Feuil-le-ton
-  Feuille-tons % Feuil-le-tons
-  fi-de-le-rer % fi-de-ler-er
-  fieb-rig % fie-brig
-  fieb-ri-ge % fie-bri-ge
-  fieb-ri-gem % fie-bri-gem
-  fieb-ri-gen % fie-bri-gen
-  fieb-ri-ger % fie-bri-ger
-  fieb-ri-ges % fie-bri-ges
-  File % Fi-le
-  Files % Fi-les
-  filt-re % fil-tre
-  finst-re % fin-stre
-  flatt-re % flat-tre
-  flaue-rem % flau-e-rem
-  flaue-res % flau-e-res
-  fle-xi-ble-rer % fle-xibler-er
-  flö^^fft % flö-^^fft
-  flö^^ff-ten % flö-^^fften
-  flö^^ff-test % flö-^^fftest
-  flö^^ff-tet % flö-^^fftet
-  Flu-ges % Flug-es
-  flunk-re % flun-k-re
-  folg-re % fol-g-re
-  folt-re % fol-tre
-  for-ma-le-rer % for-ma-ler-er
-  for-mel-ler-er % for-mel-ler-er
-  Fou-rier % Fou-ri-er
-  Fou-riers % Fou-ri-ers
-  frä-ste % fräs-te
-  frä-sten % fräs-ten
-  frä-stest % fräs-test
-  frä-stet % fräs-tet
-  Freak % Fre-ak
-  Freaks % Fre-aks
-  freie-ste % frei-e-ste
-  funkst % funk-st
-  futt-re % fut-tre
-  Gan-dhi % Gand-hi
-  Gan-dhis % Gand-his
-  gäng-le % gän-g-le
-  Gar-ni-so-nen % Gar-ni-so-n-en
-  Gate-way % Ga-te-way
-  Gate-ways % Ga-te-ways
-  Gaulles % Gaul-les
-  ge-dop-ter % ge-do-pter
-  ge-döst % ge-d-öst
-  ge-eggt % ge-e-ggt
-  ge-egg-ten % ge-e-gg-ten
-  ge-frä-ste % ge-fräs-te
-  ge-frä-stem % ge-fräs-tem
-  ge-frä-sten % ge-fräs-ten
-  ge-frä-ster % ge-fräs-ter
-  ge-frä-stes % ge-fräs-tes
-  Ge-hir-nen % Ge-hir-n-en
-  gei-le-rer % gei-ler-er
-  ge-kne-belt % ge-k-ne-belt
-  ge-kne-bel-te % ge-k-ne-bel-te
-  ge-kne-bel-tem % ge-k-ne-bel-tem
-  ge-kne-bel-ten % ge-k-ne-bel-ten
-  ge-kne-bel-ter % ge-k-ne-bel-ter
-  ge-kne-bel-tes % ge-k-ne-bel-tes
-  ge-kneift % ge-k-neift
-  ge-kne-tet % ge-k-ne-tet
-  ge-kne-te-te % ge-k-ne-te-te
-  ge-kne-te-tem % ge-k-ne-te-tem
-  ge-kne-te-ten % ge-k-ne-te-ten
-  ge-kne-te-ter % ge-k-ne-te-ter
-  ge-kne-te-tes % ge-k-ne-te-tes
-  ge-lobst % ge-l-obst
-  ge-lü-ste-te % ge-lüs-te-te
-  ge-lü-ste-ten % ge-lüs-te-ten
-  ge-lü-ste-test % ge-lüs-te-test
-  ge-lü-ste-tet % ge-lüs-te-tet
-  ge-naue-rem % ge-nau-e-rem
-  ge-naue-res % ge-nau-e-res
-  ge-neckt % gen-eckt
-  ge-neck-te % gen-eck-te
-  ge-neck-tem % gen-eck-tem
-  ge-neck-ten % gen-eck-ten
-  ge-neck-ter % gen-eck-ter
-  ge-neck-tes % gen-eck-tes
-  ge-ne-rel-le-rer % ge-ne-rel-ler-er
-  ge-nia-le-rer % ge-nia-ler-er
-  ge-nui-ne % ge-nu-i-ne
-  ge-reckt % ge-r-eckt
-  ge-rü-ste-te % ge-rüs-te-te
-  ge-rü-ste-tem % ge-rüs-te-tem
-  ge-rü-ste-ten % ge-rüs-te-ten
-  ge-rü-ste-ter % ge-rüs-te-ter
-  ge-rü-ste-tes % ge-rüs-te-tes
-  ge-schah % ge-sch-ah
-  ge-scha-hen % ge-sch-a-hen
-  ge-sche-he % ge-sch-ehe
-  ge-schneuzt % ge-sch-neuzt
-  ge-schrien % ge-schri-en
-  ge-spei-set % ge-speis-et
-  ge-spei-ste % ge-speis-te
-  ge-spei-stem % ge-speis-tem
-  ge-spei-sten % ge-speis-ten
-  ge-spei-ster % ge-speis-ter
-  ge-spei-stes % ge-speis-tes
-  ge-starrt % ge-st-arrt
-  ge-star-tet % ge-st-ar-tet
-  ge-star-te-te % ge-st-ar-te-te
-  ge-star-te-tem % ge-st-ar-te-tem
-  ge-star-te-ten % ge-st-ar-te-ten
-  ge-star-te-ter % ge-st-ar-te-ter
-  ge-star-te-tes % ge-st-ar-te-tes
-  ge-streun-ter % ge-stre-un-ter
-  ge-trig-gert % get-rig-gert
-  ge-wich-ste % ge-wichs-te
-  ge-wich-stem % ge-wichs-tem
-  ge-wich-sten % ge-wichs-ten
-  ge-wich-ster % ge-wichs-ter
-  ge-wich-stes % ge-wichs-tes
-  Glan-zes % Glanz-es
-  gra-ste % gras-te
-  gra-sten % gras-ten
-  gra-stest % gras-test
-  gra-stet % gras-tet
-  gra-ziö-se % gra-zi-öse
-  gra-ziö-sem % gra-zi-ösem
-  gra-ziö-sen % gra-zi-ösen
-  gra-ziö-ser % gra-zi-öser
-  gra-ziö-ses % gra-zi-öses
-  grüb-le % grü-b-le
-  gurg-le % gur-gle
-  hag-le % ha-gle
-  hal-bem % hal-b-em
-  hal-ben % hal-b-en
-  hal-bes % hal-b-es
-  halft-re % half-tre
-  hap-re % ha-p-re
-  Hard-ware % Hard-wa-re
-  heb-le % he-ble
-  heik-le % hei-kle
-  heik-lem % hei-klem
-  heik-le-re % hei-kle-re
-  heik-le-rem % hei-kle-rem
-  heik-le-ren % hei-kle-ren
-  heik-le-rer % hei-kler-er
-  heik-le-res % hei-kle-res
-  heik-les % hei-kles
-  hei-le-rer % hei-ler-er
-  hel-le-rer % hel-ler-er
-  her-in-nen % he-rin-nen
-  Her-me-lins % Her-mel-ins
-  he-ro-ische % he-ro-i-sche
-  he-ro-ischem % he-ro-i-schem
-  he-ro-ischen % he-ro-i-schen
-  he-ro-ischer % he-ro-i-scher
-  he-ro-isches % he-ro-i-sches
-  High-tech % Hight-ech
-  hingst % hin-gst
-  hingt % hin-gt
-  hinkst % hin-kst
-  hinkt % hin-kt
-  hink-te % hin-k-te
-  hink-ten % hin-k-ten
-  hink-test % hin-k-test
-  hink-tet % hin-k-tet
-  Hir-nen % Hir-n-en
-  Hitch-cock % Hit-ch-cock
-  Hitch-cocks % Hit-ch-cocks
-  hob-le % ho-ble
-  hoh-le-rem % hohl-e-rem
-  hoh-le-rer % hohler-er
-  hoh-le-res % hohl-e-res
-  holp-re % hol-p-re
-  Hom-mage % Hom-ma-ge
-  Hot-line % Hot-li-ne
-  Hot-lines % Hot-li-nes
-  hu-ma-ni-tä-rem % hu-ma-ni-tär-em
-  hu-ma-ni-tä-ren % hu-ma-ni-tär-en
-  hu-ma-ni-tä-rer % hu-ma-ni-tär-er
-  hu-ma-ni-tä-res % hu-ma-ni-tär-es
-  hu-man-ste % hum-an-ste
-  hu-man-stem % hum-an-stem
-  hu-man-sten % hum-an-sten
-  hu-man-ster % hum-an-ster
-  hu-man-stes % hum-an-stes
-  hump-le % hum-ple
-  hung-re % hun-g-re
-  idea-le-rer % idea-ler-er
-  ide-el-le-rer % ide-el-ler-er
-  il-lu-stre % il-lust-re
-  il-lu-strem % il-lust-rem
-  il-lu-stren % il-lust-ren
-  il-lu-strer % il-lust-rer
-  il-lu-stres % il-lust-res
-  imk-re % im-kre
-  im-pul-si-ve-rem % im-pul-si-ver-em
-  im-pul-si-ve-ren % im-pul-si-ver-en
-  im-pul-si-ve-rer % im-pul-si-ver-er
-  im-pul-si-ve-res % im-pul-si-ver-es
-  in-di-vi-du-el-le-rer % in-di-vi-du-el-ler-er
-  In-do-ne-sie-rin % In-do-ne-si-e-rin
-  In-do-ne-sie-rin-nen % In-do-ne-si-e-rin-nen
-  in-ten-si-ve-rem % in-ten-si-ver-em
-  in-ten-si-ve-ren % in-ten-si-ver-en
-  in-ten-si-ve-rer % in-ten-si-ver-er
-  in-ten-si-ve-res % in-ten-si-ver-es
-  Isaacs % Isaa-cs
-  Ita-lie-ne-rin % Ita-li-e-ne-rin
-  Ita-lie-ne-rin-nen % Ita-li-e-ne-rin-nen
-  Ita-lie-nern % Ita-li-e-nern
-  Ita-lie-ners % Ita-li-e-ners
-  Jag-den % Jag-d-en
-  Jar-gons % Jar-g-ons
-  Je-re-mia-de % Je-re-mi-a-de
-  Je-re-mia-den % Je-re-mi-a-den
-  Jon-gleur % Jong-leur
-  Jo-sephs % Jo-se-phs
-  jub-le % ju-ble
-  kabb-le % kab-ble
-  kab-le % ka-ble
-  Ka-na-die-rin % Ka-na-di-e-rin
-  Ka-na-die-rin-nen % Ka-na-di-e-rin-nen
-  Ka-nons % Ka-n-ons
-  Ka-pi-tä-nin-nen % Ka-pi-tän-in-nen
-  ka-pri-ziö-se % ka-pri-zi-öse
-  ka-pri-ziö-sem % ka-pri-zi-ösem
-  ka-pri-ziö-sen % ka-pri-zi-ösen
-  ka-pri-ziö-ser % ka-pri-zi-öser
-  ka-pri-ziö-se-re % ka-pri-zi-öse-re
-  ka-pri-ziö-se-rem % ka-pri-zi-öse-rem
-  ka-pri-ziö-se-ren % ka-pri-zi-öse-ren
-  ka-pri-ziö-se-rer % ka-pri-zi-öse-rer
-  ka-pri-ziö-se-res % ka-pri-zi-öse-res
-  ka-pri-ziö-ses % ka-pri-zi-öses
-  ka-pri-ziö-se-ste % ka-pri-zi-öse-ste
-  ka-pri-ziö-se-stem % ka-pri-zi-öse-stem
-  ka-pri-ziö-se-sten % ka-pri-zi-öse-sten
-  ka-pri-ziö-se-ster % ka-pri-zi-öse-ster
-  ka-pri-ziö-se-stes % ka-pri-zi-öse-stes
-  ka-ri-ka-ti-ve-rem % ka-ri-ka-ti-ver-em
-  ka-ri-ka-ti-ve-ren % ka-ri-ka-ti-ver-en
-  ka-ri-ka-ti-ve-res % ka-ri-ka-ti-ver-es
-  ka-riö-se % ka-ri-öse
-  ka-riö-sem % ka-ri-ösem
-  ka-riö-sen % ka-ri-ösen
-  ka-riö-ser % ka-ri-öser
-  ka-riö-ses % ka-ri-öses
-  ka-ri-ta-ti-ve-rem % ka-ri-ta-ti-ver-em
-  ka-ri-ta-ti-ve-ren % ka-ri-ta-ti-ver-en
-  ka-ri-ta-ti-ve-rer % ka-ri-ta-ti-ver-er
-  ka-ri-ta-ti-ve-res % ka-ri-ta-ti-ver-es
-  Ka-tar-rhe % Ka-tarr-he
-  Ka-tar-rhen % Ka-tarr-hen
-  Ka-tarrhs % Ka-tarr-hs
-  ka-ta-stro-pha-le-rer % ka-ta-stro-pha-ler-er
-  Kath-rin % Ka-thrin
-  Kath-rins % Ka-thrins
-  Kat-rin % Ka-trin
-  Kat-rins % Ka-trins
-  keg-le % ke-gle
-  kelt-re % kel-tre
-  kent-re % ken-tre
-  Khmer % Kh-mer
-  Ki-osks % Ki-o-sks
-  klimp-re % klim-p-re
-  kling-le % klin-gle
-  knabb-re % knab-b-re
-  knatt-re % knat-tre
-  kneb-le % kne-ble
-  knien % kni-en
-  knist-re % kni-stre
-  knob-le % kno-ble
-  kol-le-gia-le-rer % kol-le-gia-ler-er
-  kom-for-ta-ble-rer % kom-for-ta-bler-er
-  kom-mer-zi-el-le-rer % kom-mer-zi-el-ler-er
-  Kom-mi-li-to-nin-nen % Kom-mi-li-ton-in-nen
-  kon-ser-va-ti-ve-rem % kon-ser-va-ti-ver-em
-  kon-ser-va-ti-ve-ren % kon-ser-va-ti-ver-en
-  kon-ser-va-ti-ve-rer % kon-ser-va-ti-ver-er
-  kon-ser-va-ti-ve-res % kon-ser-va-ti-ver-es
-  kon-struk-ti-ve-rem % kon-struk-ti-ver-em
-  kon-struk-ti-ve-ren % kon-struk-ti-ver-en
-  kon-struk-ti-ve-rer % kon-struk-ti-ver-er
-  kon-struk-ti-ve-res % kon-struk-ti-ver-es
-  Kon-ter-feis % Kon-ter-f-eis
-  Kon-ti-nents % Kon-tin-ents
-  kont-re % kon-tre
-  Kop-fes % Kopf-es
-  Ko-reas % Ko-re-as
-  kor-re-lie-rend % kor-re-li-e-rend
-  kor-re-lie-ren-de % kor-re-li-e-ren-de
-  kor-re-lie-ren-dem % kor-re-li-e-ren-dem
-  kor-re-lie-ren-den % kor-re-li-e-ren-den
-  kor-re-lie-ren-der % kor-re-li-e-ren-der
-  kor-re-lie-ren-des % kor-re-li-e-ren-des
-  krabb-le % krab-ble
-  krea-ti-ve-rem % krea-ti-ver-em
-  krea-ti-ve-ren % krea-ti-ver-en
-  krea-ti-ve-rer % krea-ti-ver-er
-  krea-ti-ve-res % krea-ti-ver-es
-  kre-ierst % kre-i-erst
-  kre-iert % kre-i-ert
-  kre-ier-te % kre-i-er-te
-  kre-ier-tem % kre-i-er-tem
-  kre-ier-ten % kre-i-er-ten
-  kre-ier-ter % kre-i-er-ter
-  kre-ier-tes % kre-i-er-tes
-  kre-ier-test % kre-i-er-test
-  kre-ier-tet % kre-i-er-tet
-  kribb-le % krib-ble
-  kri-mi-nel-le-rer % kri-mi-nel-ler-er
-  Krish-na % Kris-h-na
-  Krish-nas % Kris-hnas
-  ku-bier % ku-bi-er
-  kug-le % ku-gle
-  küh-le-rer % küh-ler-er
-  kul-tu-rel-le-rer % kul-tu-rel-ler-er
-  Kum-pa-nin-nen % Kum-pan-in-nen
-  kurb-le % kur-ble
-  Ku-rier % Ku-ri-er
-  Ku-riers % Ku-ri-ers
-  kur-zem % kur-z-em
-  kur-zen % kur-z-en
-  kur-zer % kur-z-er
-  kur-zes % kur-z-es
-  la-bi-le-rer % la-bi-ler-er
-  lag-re % la-g-re
-  laue-rem % lau-e-rem
-  laue-res % lau-e-res
-  läut-re % läu-tre
-  le-ga-le-rer % le-ga-ler-er
-  Le-nins % Len-ins
-  Len-nons % Len-n-ons
-  Le-se-rin-nen % Le-se-r-in-nen
-  li-be-ra-le-rer % li-be-ra-ler-er
-  lief-re % lie-fre
-  Lis-sa-bons % Lis-sa-b-ons
-  Lob-by-isten % Lob-by-i-sten
-  Log-in % Lo-gin
-  Lon-dons % Lon-d-ons
-  lö-ste % lös-te
-  lö-sten % lös-ten
-  lö-stest % lös-test
-  lö-stet % lös-tet
-  loy-ale % loya-le
-  loy-alem % loya-lem
-  loy-alen % loya-len
-  loy-aler % loya-ler
-  loy-ales % loya-les
-  lu-kra-ti-ve-rem % lu-kra-ti-ver-em
-  lu-kra-ti-ve-ren % lu-kra-ti-ver-en
-  lu-kra-ti-ve-rer % lu-kra-ti-ver-er
-  lu-kra-ti-ve-res % lu-kra-ti-ver-es
-  Lu-nas % Lu-n-as
-  lung-re % lun-g-re
-  lu-xu-riö-se % lu-xu-ri-öse
-  lu-xu-riö-sem % lu-xu-ri-ösem
-  lu-xu-riö-sen % lu-xu-ri-ösen
-  lu-xu-riö-ser % lu-xu-ri-öser
-  lu-xu-riö-se-re % lu-xu-ri-öse-re
-  lu-xu-riö-se-rem % lu-xu-ri-öse-rem
-  lu-xu-riö-se-ren % lu-xu-ri-öse-ren
-  lu-xu-riö-se-rer % lu-xu-ri-öse-rer
-  lu-xu-riö-se-res % lu-xu-ri-öse-res
-  lu-xu-riö-ses % lu-xu-ri-öses
-  lu-xu-riö-se-ste % lu-xu-ri-öse-ste
-  lu-xu-riö-se-stem % lu-xu-ri-öse-stem
-  lu-xu-riö-se-sten % lu-xu-ri-öse-sten
-  lu-xu-riö-se-ster % lu-xu-ri-öse-ster
-  lu-xu-riö-se-stes % lu-xu-ri-öse-stes
-  ma-li-ziö-se % ma-li-zi-öse
-  ma-li-ziö-sem % ma-li-zi-ösem
-  ma-li-ziö-sen % ma-li-zi-ösen
-  ma-li-ziö-ser % ma-li-zi-öser
-  ma-li-ziö-ses % ma-li-zi-öses
-  Ma-nage-ment % Ma-na-ge-ment
-  Ma-nage-ments % Ma-na-ge-ments
-  mang-le % man-gle
-  ma-nua-le % ma-nu-a-le
-  Ma-nua-len % Ma-nu-a-len
-  Ma-ries % Ma-ri-es
-  mart-re % mar-tre
-  mas-si-ve-rem % mas-si-ver-em
-  mas-si-ve-ren % mas-si-ver-en
-  mas-si-ve-rer % mas-si-ver-er
-  mas-si-ve-res % mas-si-ver-es
-  Mat-thi-as % Matt-hi-as
-  me-lo-diö-se % me-lo-di-öse
-  me-lo-diö-sem % me-lo-di-ösem
-  me-lo-diö-sen % me-lo-di-ösen
-  me-lo-diö-ser % me-lo-di-öser
-  me-lo-diö-ses % me-lo-di-öses
-  meut-re % meu-tre
-  Mi-lans % Mi-l-ans
-  mi-no-ische % mi-no-i-sche
-  mi-no-ischem % mi-no-i-schem
-  mi-no-ischen % mi-no-i-schen
-  mi-no-ischer % mi-no-i-scher
-  mi-no-isches % mi-no-i-sches
-  mi-nu-tiö-se % mi-nu-ti-öse
-  mi-nu-tiö-sem % mi-nu-ti-ösem
-  mi-nu-tiö-sen % mi-nu-ti-ösen
-  mi-nu-tiö-ser % mi-nu-ti-öser
-  mi-nu-tiö-ses % mi-nu-ti-öses
-  mi-se-ra-ble-rer % mi-se-ra-bler-er
-  mitt-le-rer % mitt-ler-er
-  mo-bi-le-rer % mo-bi-ler-er
-  mo-dern-ste % mo-d-ern-ste
-  mo-dern-stem % mo-d-ern-stem
-  mo-dern-sten % mo-d-ern-sten
-  mo-dern-ster % mo-d-ern-ster
-  mo-dern-stes % mo-d-ern-stes
-  mog-le % mo-gle
-  mo-nu-men-ta-le-rer % mo-nu-men-ta-ler-er
-  Mor-phe-me % Mor-ph-e-me
-  Mor-phe-men % Mor-ph-e-men
-  Mo-sai-ke % Mo-sa-ike
-  Mo-sai-ken % Mo-sa-ik-en
-  mul-ti-ples % mul-tip-les
-  Mus-se-lins % Mus-sel-ins
-  my-ste-riö-se % my-ste-ri-öse
-  my-ste-riö-sem % my-ste-ri-ösem
-  my-ste-riö-sen % my-ste-ri-ösen
-  my-ste-riö-ser % my-ste-ri-öser
-  my-ste-riö-ses % my-ste-ri-öses
-  nag-le % na-gle
-  nai-ve-rem % nai-ver-em
-  nai-ve-ren % nai-ver-en
-  nai-ve-rer % nai-ver-er
-  nai-ve-res % nai-ver-es
-  ne-ga-ti-ve-rem % ne-ga-ti-ver-em
-  ne-ga-ti-ve-ren % ne-ga-ti-ver-en
-  ne-ga-ti-ve-rer % ne-ga-ti-ver-er
-  ne-ga-ti-ve-res % ne-ga-ti-ver-es
-  neue-rem % neu-e-rem
-  neue-res % neu-e-res
-  neun-ter % ne-un-ter
-  neu-tra-le-rer % neu-tra-ler-er
-  nie-ste % nies-te
-  nie-sten % nies-ten
-  nie-stest % nies-test
-  nie-stet % nies-tet
-  Ni-veaus % Ni-ve-aus
-  no-bler % no-b-ler
-  nörg-le % nör-gle
-  nor-ma-le-rer % nor-ma-ler-er
-  nüch-tern-ste % nüch-t-ern-ste
-  nüch-tern-stem % nüch-t-ern-stem
-  nüch-tern-sten % nüch-t-ern-sten
-  nüch-tern-ster % nüch-t-ern-ster
-  nüch-tern-stes % nüch-t-ern-stes
-  ob-jek-ti-ve-rem % ob-jek-ti-ver-em
-  ob-jek-ti-ve-ren % ob-jek-ti-ver-en
-  ob-jek-ti-ve-rer % ob-jek-ti-ver-er
-  ob-jek-ti-ve-res % ob-jek-ti-ver-es
-  Ob-stes % Obst-es
-  of-fi-zi-el-le-rer % of-fi-zi-el-ler-er
-  of-fi-ziö-se % of-fi-zi-öse
-  of-fi-ziö-sem % of-fi-zi-ösem
-  of-fi-ziö-sen % of-fi-zi-ösen
-  of-fi-ziö-ser % of-fi-zi-öser
-  of-fi-ziö-ses % of-fi-zi-öses
-  Ok-to-bers % Ok-t-obers
-  On-line % On-li-ne
-  Ozons % Oz-ons
-  Pa-blos % Pab-los
-  Pa-lä-sti-nen-se-rin-nen % Pa-lä-sti-nen-se-r-in-nen
-  Pa-lä-sti-nen-sers % Pa-lä-sti-nensers
-  pa-lav-re % pa-la-vre
-  pa-na-me-si-sche % pan-a-me-si-sche
-  pa-na-me-si-schen % pan-a-me-si-schen
-  Pa-ra-bo-lo-ide % Pa-ra-bo-loi-de
-  Pa-ra-bo-lo-iden % Pa-ra-bo-loi-den
-  Pa-ra-bo-lo-ides % Pa-ra-bo-loi-des
-  Pa-ra-do-xons % Pa-ra-do-x-ons
-  Pa-raf-fin % Par-af-fin
-  pa-ra-si-tä-rem % pa-ra-si-tär-em
-  pa-ra-si-tä-ren % pa-ra-si-tär-en
-  pa-ra-si-tä-rer % pa-ra-si-tär-er
-  pa-ra-si-tä-res % pa-ra-si-tär-es
-  Par-fums % Parf-ums
-  Par-terres % Par-ter-res
-  par-ti-el-le-rer % par-ti-el-ler-er
-  pas-si-ve-rem % pas-si-ver-em
-  pas-si-ve-ren % pas-si-ver-en
-  pas-si-ve-rer % pas-si-ver-er
-  pas-si-ve-res % pas-si-ver-es
-  Pen-ta-gons % Pen-ta-g-ons
-  Pent-house % Penthou-se
-  per-fid-ste % per-fi-dste
-  per-fid-stem % per-fi-dstem
-  per-fid-sten % per-fi-dsten
-  per-fid-ster % per-fi-dster
-  per-fid-stes % per-fi-dstes
-  Per-for-mance % Per-for-man-ce
-  Pe-rio-de % Pe-ri-ode
-  Pe-rio-den % Pe-ri-oden
-  pe-rio-disch % pe-ri-odisch
-  pe-rio-di-sche % pe-ri-odi-sche
-  pe-rio-di-schem % pe-ri-odi-schem
-  pe-rio-di-schen % pe-ri-odi-schen
-  pe-rio-di-scher % pe-ri-odi-scher
-  pe-rio-di-sches % pe-ri-odi-sches
-  Pe-rio-di-zi-tät % Pe-ri-odi-zi-tät
-  Per-se-rin-nen % Per-se-r-in-nen
-  pflast-re % pfla-stre
-  pilg-re % pil-g-re
-  Pipe-line % Pi-pe-li-ne
-  Pipe-lines % Pi-pe-li-nes
-  Plä-doyer % Plä-doy-er
-  Pla-ne-to-iden % Pla-ne-toi-den
-  Pla-teaus % Pla-te-aus
-  plätsch-re % plät-sch-re
-  plau-si-ble-rer % plau-si-bler-er
-  pok-re % po-k-re
-  polst-re % pol-stre
-  polt-re % pol-tre
-  Po-ly-gons % Po-ly-g-ons
-  Po-pe-line % Po-pe-li-ne
-  Porte-feuille % Por-te-feuil-le
-  Porte-feuilles % Por-te-feuil-les
-  Porte-mon-naie % Por-te-mon-naie
-  Porte-mon-naies % Por-te-mon-nai-es
-  po-si-ti-ve-rem % po-si-ti-ver-em
-  po-si-ti-ve-ren % po-si-ti-ver-en
-  po-si-ti-ve-rer % po-si-ti-ver-er
-  po-si-ti-ve-res % po-si-ti-ver-es
-  pos-ses-si-ve-rem % pos-ses-si-ver-em
-  pos-ses-si-ve-ren % pos-ses-si-ver-en
-  pos-ses-si-ve-rer % pos-ses-si-ver-er
-  pos-ses-si-ve-res % pos-ses-si-ver-es
-  prak-ti-ka-ble-rer % prak-ti-ka-bler-er
-  pral-le-rer % pral-ler-er
-  prä-mierst % prä-mi-erst
-  prä-miert % prä-mi-ert
-  prä-mier-te % prä-mi-er-te
-  prä-mier-tem % prä-mi-er-tem
-  prä-mier-ten % prä-mi-er-ten
-  prä-mier-ter % prä-mi-er-ter
-  prä-mier-tes % prä-mi-er-tes
-  prä-mier-test % prä-mi-er-test
-  prä-mier-tet % prä-mi-er-tet
-  prä-ten-tiö-se % prä-ten-ti-öse
-  prä-ten-tiö-sem % prä-ten-ti-ösem
-  prä-ten-tiö-sen % prä-ten-ti-ösen
-  prä-ten-tiö-ser % prä-ten-ti-öser
-  prä-ten-tiö-ses % prä-ten-ti-öses
-  pri-mi-ti-ve-rem % pri-mi-ti-ver-em
-  pri-mi-ti-ve-ren % pri-mi-ti-ver-en
-  pri-mi-ti-ve-rer % pri-mi-ti-ver-er
-  pri-mi-ti-ve-res % pri-mi-ti-ver-es
-  pro-duk-ti-ve-rem % pro-duk-ti-ver-em
-  pro-duk-ti-ve-ren % pro-duk-ti-ver-en
-  pro-duk-ti-ve-rer % pro-duk-ti-ver-er
-  pro-duk-ti-ve-res % pro-duk-ti-ver-es
-  pro-fi-ta-ble-rer % pro-fi-ta-bler-er
-  pro-gres-si-ve-rem % pro-gres-si-ver-em
-  pro-gres-si-ve-ren % pro-gres-si-ver-en
-  pro-gres-si-ve-rer % pro-gres-si-ver-er
-  pro-gres-si-ve-res % pro-gres-si-ver-es
-  pro-sai-sche % pro-sa-i-sche
-  pro-sai-schem % pro-sa-i-schem
-  pro-sai-schen % pro-sa-i-schen
-  pro-sai-scher % pro-sa-i-scher
-  pro-sai-sches % pro-sa-i-sches
-  Pro-tei-ne % Pro-te-i-ne
-  Pro-tei-nen % Pro-te-i-nen
-  pro-vo-ka-ti-ve-rem % pro-vo-ka-ti-ver-em
-  pro-vo-ka-ti-ve-ren % pro-vo-ka-ti-ver-en
-  pro-vo-ka-ti-ve-rer % pro-vo-ka-ti-ver-er
-  pro-vo-ka-ti-ve-res % pro-vo-ka-ti-ver-es
-  prüg-le % prü-g-le
-  Puz-zle % Puzz-le
-  Puz-zles % Puzz-les
-  ra-di-ka-le-rer % ra-di-ka-ler-er
-  Ra-dons % Ra-d-ons
-  räk-le % rä-kle
-  Ralphs % Ral-phs
-  ra-tio-nel-le-rer % ra-tio-nel-ler-er
-  ratt-re % rat-tre
-  Rau-mes % Raum-es
-  re-dun-dant % red-un-dant
-  re-dun-dan-te % red-un-dan-te
-  re-dun-dan-tem % red-un-dan-tem
-  re-dun-dan-ten % red-un-dan-ten
-  re-dun-dan-ter % red-un-dan-ter
-  re-dun-dan-tes % red-un-dan-tes
-  Re-dun-danz % Red-un-danz
-  Re-dun-dan-zen % Red-un-dan-zen
-  re-el-le-rer % re-el-ler-er
-  Re-gimes % Re-gi-mes
-  reg-le % re-gle
-  reich-ste % reichs-te
-  reich-stem % reichs-tem
-  reich-sten % reichs-ten
-  reich-ster % reichs-ter
-  reich-stes % reichs-tes
-  Re-kruts % Re-k-ruts
-  re-la-ti-ve-rem % re-la-ti-ver-em
-  re-la-ti-ve-ren % re-la-ti-ver-en
-  re-la-ti-ve-rer % re-la-ti-ver-er
-  re-la-ti-ve-res % re-la-ti-ver-es
-  re-li-giö-se % re-li-gi-öse
-  re-li-giö-sem % re-li-gi-ösem
-  re-li-giö-sen % re-li-gi-ösen
-  re-li-giö-ser % re-li-gi-öser
-  re-li-giö-ses % re-li-gi-öses
-  remp-le % rem-ple
-  ren-ta-ble-rer % ren-ta-bler-er
-  re-pres-si-ve-rem % re-pres-si-ver-em
-  re-pres-si-ve-ren % re-pres-si-ver-en
-  re-pres-si-ve-rer % re-pres-si-ver-er
-  re-pres-si-ve-res % re-pres-si-ver-es
-  re-spek-ta-ble-rer % re-spek-ta-bler-er
-  re-vo-lu-tio-nier % re-vo-lu-tio-ni-er
-  rülp-ste % rülps-te
-  rülp-sten % rülps-ten
-  rülp-stest % rülps-test
-  rülp-stet % rülps-tet
-  Ru-mä-nin-nen % Ru-män-in-nen
-  rü-ste-te % rüs-te-te
-  rü-ste-ten % rüs-te-ten
-  rü-ste-test % rüs-te-test
-  rü-ste-tet % rüs-te-tet
-  Saa-les % Saa-l-es
-  sabb-re % sab-b-re
-  sa-ni-tä-rem % sa-ni-tär-em
-  sa-ni-tä-ren % sa-ni-tär-en
-  sa-ni-tä-rer % sa-ni-tär-er
-  sa-ni-tä-res % sa-ni-tär-es
-  säub-re % säu-b-re
-  saue-res % sau-e-res
-  Sau-nas % Sau-n-as
-  Scha-fot-te % Schaf-ot-te
-  Scha-fot-ten % Schaf-ot-ten
-  schäk-re % schä-k-re
-  scha-le-rer % scha-ler-er
-  Schar-la-tans % Schar-la-t-ans
-  scheue-rem % scheu-e-rem
-  scheue-res % scheu-e-res
-  scheue-rest % scheu-e-rest
-  schien % schi-en
-  schlabb-re % schlab-bre
-  schlabb-rig % schlab-brig
-  schlabb-ri-ge % schlab-bri-ge
-  schlabb-ri-gem % schlab-bri-gem
-  schlabb-ri-gen % schlab-bri-gen
-  schlabb-ri-ger % schlab-bri-ger
-  schlabb-ri-ges % schlab-bri-ges
-  schläng-le % schlän-g-le
-  schlaue-rem % schlau-e-rem
-  schlaue-res % schlau-e-res
-  schlenk-re % schlen-k-re
-  schleu-ste % schleus-te
-  schleu-sten % schleus-ten
-  schleu-stest % schleus-test
-  schleu-stet % schleus-tet
-  schlitt-re % schlit-tre
-  Schlos-se-rin-nen % Schlos-se-r-in-nen
-  schmirg-le % schmir-gle
-  schmugg-le % schmug-gle
-  schnatt-re % schnat-tre
-  schnee-ig % schne-eig
-  schnee-ige % schne-ei-ge
-  schnee-igem % schne-ei-gem
-  schnee-igen % schne-ei-gen
-  schnee-iger % schne-ei-ger
-  schnee-iges % schne-ei-ges
-  schnel-le-rer % schnel-ler-er
-  schnieg-le % schnie-gle
-  Schreins % Schr-eins
-  schrien % schri-en
-  schril-le-rer % schril-ler-er
-  schüch-tern-ste % schüch-t-ern-ste
-  schüch-tern-stem % schüch-t-ern-stem
-  schüch-tern-sten % schüch-t-ern-sten
-  schüch-tern-ster % schüch-t-ern-ster
-  schüch-tern-stes % schüch-t-ern-stes
-  schwabb-le % schwab-ble
-  schwäng-re % schwän-g-re
-  schwär-mend % schwär-me-nd
-  schwär-men-de % schwär-me-n-de
-  schwär-men-dem % schwär-me-n-dem
-  schwär-men-den % schwär-me-n-den
-  schwär-men-der % schwär-me-n-der
-  schwär-men-des % schwär-me-n-des
-  Schwär-mern % Schwär-me-rn
-  Schwär-mers % Schwär-me-rs
-  Schwei-^^ffers % Schwei^^ff-ers
-  schwu-le-rer % schwu-ler-er
-  schwü-le-rer % schwü-ler-er
-  seg-le % se-gle
-  se-ni-le-rer % se-ni-ler-er
-  sen-si-ble-rer % sen-si-bler-er
-  sen-ten-ziö-se % sen-ten-zi-öse
-  sen-ten-ziö-sem % sen-ten-zi-ösem
-  sen-ten-ziö-sen % sen-ten-zi-ösen
-  sen-ten-ziö-ser % sen-ten-zi-öser
-  sen-ten-ziö-se-re % sen-ten-zi-öse-re
-  sen-ten-ziö-se-rem % sen-ten-zi-öse-rem
-  sen-ten-ziö-se-ren % sen-ten-zi-öse-ren
-  sen-ten-ziö-se-rer % sen-ten-zi-öse-rer
-  sen-ten-ziö-se-res % sen-ten-zi-öse-res
-  sen-ten-ziö-ses % sen-ten-zi-öses
-  sen-ten-ziö-se-ste % sen-ten-zi-öse-ste
-  sen-ten-ziö-se-stem % sen-ten-zi-öse-stem
-  sen-ten-ziö-se-sten % sen-ten-zi-öse-sten
-  sen-ten-ziö-se-ster % sen-ten-zi-öse-ster
-  sen-ten-ziö-se-stes % sen-ten-zi-öse-stes
-  sen-ti-men-ta-le-rer % sen-ti-men-ta-ler-er
-  se-riö-se % se-ri-öse
-  se-riö-sem % se-ri-ösem
-  se-riö-sen % se-ri-ösen
-  se-riö-ser % se-ri-öser
-  se-riö-se-re % se-ri-öse-re
-  se-riö-se-rem % se-ri-öse-rem
-  se-riö-se-ren % se-ri-öse-ren
-  se-riö-se-rer % se-ri-öse-rer
-  se-riö-se-res % se-ri-öse-res
-  se-riö-ses % se-ri-öses
-  se-riö-se-ste % se-ri-öse-ste
-  se-riö-se-stem % se-ri-öse-stem
-  se-riö-se-sten % se-ri-öse-sten
-  se-riö-se-ster % se-ri-öse-ster
-  se-riö-se-stes % se-ri-öse-stes
-  Se-riö-si-tät % Se-ri-ösi-tät
-  Se-rums % Ser-ums
-  ser-vi-le-rer % ser-vi-ler-er
-  sieg-le % sie-gle
-  sim-pler % simp-ler
-  sim-ple-re % simp-le-re
-  sim-ple-rem % simp-le-rem
-  sim-ple-ren % simp-le-ren
-  sim-ple-rer % simp-ler-er
-  sim-ple-res % simp-le-res
-  sim-ples % simp-les
-  sint-re % sin-tre
-  Skalps % Skal-ps
-  Skla-ve-rei-en % Skla-ver-ei-en
-  skur-ri-le-rer % skur-ri-ler-er
-  Soft-ware % Soft-wa-re
-  So-li-tä-ren % So-li-tär-en
-  so-zia-le-rer % so-zia-ler-er
-  spe-zia-le-rer % spe-zia-ler-er
-  spe-zi-el-le-rer % spe-zi-el-ler-er
-  spieg-le % spie-gle
-  Spio-nin-nen % Spion-in-nen
-  splitt-re % split-tre
-  spon-tan-ste % spon-t-an-ste
-  spon-tan-stem % spon-t-an-stem
-  spon-tan-sten % spon-t-an-sten
-  spon-tan-ster % spon-t-an-ster
-  spon-tan-stes % spon-t-an-stes
-  sta-bi-le-rer % sta-bi-ler-er
-  stahlst % stahl-st
-  stänk-re % stän-k-re
-  stei-le-rer % stei-ler-er
-  stemp-le % stem-ple
-  ster-be % st-er-be
-  ste-ri-le-rer % ste-ri-ler-er
-  Ste-ro-ide % Ste-roi-de
-  stil-le-rer % stil-ler-er
-  stöb-re % stö-b-re
-  stolp-re % stol-p-re
-  stramp-le % stram-ple
-  stra-pa-ziö-se % stra-pa-zi-öse
-  stra-pa-ziö-sem % stra-pa-zi-ösem
-  stra-pa-ziö-sen % stra-pa-zi-ösen
-  stra-pa-ziö-ser % stra-pa-zi-öser
-  stra-pa-ziö-ses % stra-pa-zi-öses
-  stup-ste % stups-te
-  stup-sten % stups-ten
-  stup-stest % stups-test
-  stup-stet % stups-tet
-  stu-rer % stur-er
-  stu-re-rem % stur-e-rem
-  stu-re-res % stur-e-res
-  sub-stan-ti-el-le-rer % sub-stan-ti-el-ler-er
-  sub-stan-zi-el-le-rer % sub-stan-zi-el-ler-er
-  sub-ti-le-rer % sub-ti-ler-er
-  Sul-fids % Sul-fi-ds
-  Sy-rie-rin % Sy-ri-e-rin
-  Sy-rie-rin-nen % Sy-ri-e-rin-nen
-  Ta-lents % Tal-ents
-  Tam-bu-rins % Tam-bu-r-ins
-  te-le-fo-nier % te-le-fo-ni-er
-  ten-den-ziö-se % ten-den-zi-öse
-  ten-den-ziö-sem % ten-den-zi-ösem
-  ten-den-ziö-sen % ten-den-zi-ösen
-  ten-den-ziö-ser % ten-den-zi-öser
-  ten-den-ziö-se-re % ten-den-zi-öse-re
-  ten-den-ziö-se-rem % ten-den-zi-öse-rem
-  ten-den-ziö-se-ren % ten-den-zi-öse-ren
-  ten-den-ziö-se-rer % ten-den-zi-öse-rer
-  ten-den-ziö-se-res % ten-den-zi-öse-res
-  ten-den-ziö-ses % ten-den-zi-öses
-  ten-den-ziö-se-ste % ten-den-zi-öse-ste
-  ten-den-ziö-se-stem % ten-den-zi-öse-stem
-  ten-den-ziö-se-sten % ten-den-zi-öse-sten
-  ten-den-ziö-se-ster % ten-den-zi-öse-ster
-  ten-den-ziö-se-stes % ten-den-zi-öse-stes
-  ter-tiä-re % ter-ti-äre
-  ter-tiä-rem % ter-ti-ärem
-  ter-tiä-ren % ter-ti-ären
-  ter-tiä-rer % ter-ti-ärer
-  ter-tiä-res % ter-ti-äres
-  te-xa-nisch % te-x-a-nisch
-  te-xa-ni-sche % te-x-a-ni-sche
-  te-xa-ni-schem % te-x-a-ni-schem
-  te-xa-ni-schen % te-x-a-ni-schen
-  te-xa-ni-scher % te-x-a-ni-scher
-  te-xa-ni-sches % te-x-a-ni-sches
-  Ti-ta-nin-nen % Ti-tan-in-nen
-  Ti-tans % Ti-t-ans
-  tol-le-rer % tol-ler-er
-  To-re-ros % To-re-r-os
-  to-ta-li-tä-rem % to-ta-li-tär-em
-  to-ta-li-tä-ren % to-ta-li-tär-en
-  to-ta-li-tä-rer % to-ta-li-tär-er
-  to-ta-li-tä-re-re % to-ta-li-tär-ere
-  to-ta-li-tä-re-rem % to-ta-li-tär-erem
-  to-ta-li-tä-re-rer % to-ta-li-tär-erer
-  to-ta-li-tä-re-res % to-ta-li-tär-eres
-  to-ta-li-tä-res % to-ta-li-tär-es
-  tra-di-tio-nel-le-rer % tra-di-tio-nel-ler-er
-  tramp-le % tram-ple
-  trans-por-ta-ble-rer % trans-por-ta-bler-er
-  treue-rem % treu-e-rem
-  treue-res % treu-e-res
-  trick-ste % tricks-te
-  trick-sten % tricks-ten
-  trick-stest % tricks-test
-  trick-stet % tricks-tet
-  Tris-tesse % Tristes-se
-  tri-um-pha-le-rer % tri-um-pha-ler-er
-  Tri-umphs % Tri-um-phs
-  tri-via-le-rer % tri-via-ler-er
-  Tsche-tsche-ni-en % Tschet-sche-ni-en
-  Tsche-tsche-ni-ens % Tschet-sche-ni-ens
-  tsche-tsche-nisch % tschet-sche-nisch
-  tsche-tsche-ni-sche % tschet-sche-ni-sche
-  tsche-tsche-ni-schem % tschet-sche-ni-schem
-  tsche-tsche-ni-schen % tschet-sche-ni-schen
-  tsche-tsche-ni-scher % tschet-sche-ni-scher
-  tsche-tsche-ni-sches % tschet-sche-ni-sches
-  tunkst % tunk-st
-  Ty-ran-nin-nen % Ty-rann-in-nen
-  ubi-qui-tä-rem % ubi-qui-tär-em
-  ubi-qui-tä-ren % ubi-qui-tär-en
-  ubi-qui-tä-rer % ubi-qui-tär-er
-  ubi-qui-tä-res % ubi-qui-tär-es
-  üb-le-rer % üb-ler-er
-  uni-ver-sel-le-rer % uni-ver-sel-ler-er
-  uni-ver-si-tä-rem % uni-ver-si-tär-em
-  uni-ver-si-tä-ren % uni-ver-si-tär-en
-  uni-ver-si-tä-rer % uni-ver-si-tär-er
-  uni-ver-si-tä-res % uni-ver-si-tär-es
-  Urans % Ur-ans
-  Urins % Ur-ins
-  va-ria-ble-rer % va-ria-bler-er
-  ver-ba-le-rer % ver-ba-ler-er
-  Ver-fas-se-rin-nen % Ver-fas-se-r-in-nen
-  ver-finst-re % ver-fin-stre
-  ver-hök-re % ver-hö-k-re
-  ver-körp-re % ver-kör-p-re
-  ver-läng-re % ver-län-g-re
-  ver-rieg-le % ver-rie-gle
-  ver-scherb-le % ver-scher-ble
-  ver-üb-le % ver-ü-b-le
-  ver-witt-re % ver-wit-tre
-  ver-wü-ste-tem % ver-wüs-te-tem
-  ver-wü-ste-ten % ver-wüs-te-ten
-  ver-wü-ste-ter % ver-wüs-te-ter
-  ver-wü-ste-tes % ver-wüs-te-tes
-  ver-wü-ste-test % ver-wüs-te-test
-  ver-wü-ste-tet % ver-wüs-te-tet
-  Viet-nam % Vi-et-nam
-  Viet-na-me-se % Vi-et-na-me-se
-  Viet-na-me-sen % Vi-et-na-me-sen
-  Viet-na-me-sin % Vi-et-na-me-sin
-  Viet-na-me-sin-nen % Vi-et-na-me-sin-nen
-  Viet-nams % Vi-et-nams
-  vi-ta-le-rer % vi-ta-ler-er
-  vög-le % vö-gle
-  vo-la-ti-le-rer % vo-la-ti-ler-er
-  vol-le-rer % vol-ler-er
-  Wag-gons % Wag-g-ons
-  wär-mend % wär-me-nd
-  wär-men-de % wär-me-n-de
-  wär-men-dem % wär-me-n-dem
-  wär-men-den % wär-me-n-den
-  wär-men-der % wär-me-n-der
-  wär-men-des % wär-me-n-des
-  weig-re % wei-g-re
-  werk-le % wer-kle
-  wich-ste % wichs-te
-  wich-sten % wichs-ten
-  wich-stest % wichs-test
-  wich-stet % wichs-tet
-  Wien % Wi-en
-  witt-re % wit-tre
-  woh-le-rem % wohl-e-rem
-  woh-le-rer % wohler-er
-  woh-le-res % wohl-e-res
-  wü-ste-te % wüs-te-te
-  wü-ste-ten % wüs-te-ten
-  wü-ste-test % wüs-te-test
-  wü-ste-tet % wüs-te-tet
-  ze-le-brier % ze-le-bri-er
-  zen-tra-le-rer % zen-tra-ler-er
-  Zen-tri-gramm % Zent-ri-gramm
-  Zen-tri-gram-me % Zent-ri-gram-me
-  Zen-tri-gram-men % Zent-ri-gram-men
-  Zen-tri-gramms % Zent-ri-gramms
-  ze-re-mo-niö-se % ze-re-mo-ni-öse
-  ze-re-mo-niö-sem % ze-re-mo-ni-ösem
-  ze-re-mo-niö-sen % ze-re-mo-ni-ösen
-  ze-re-mo-niö-ser % ze-re-mo-ni-öser
-  ze-re-mo-niö-se-re % ze-re-mo-ni-öse-re
-  ze-re-mo-niö-se-rem % ze-re-mo-ni-öse-rem
-  ze-re-mo-niö-se-ren % ze-re-mo-ni-öse-ren
-  ze-re-mo-niö-se-rer % ze-re-mo-ni-öse-rer
-  ze-re-mo-niö-se-res % ze-re-mo-ni-öse-res
-  ze-re-mo-niö-ses % ze-re-mo-ni-öses
-  ze-re-mo-niö-se-ste % ze-re-mo-ni-öse-ste
-  ze-re-mo-niö-se-stem % ze-re-mo-ni-öse-stem
-  ze-re-mo-niö-se-sten % ze-re-mo-ni-öse-sten
-  ze-re-mo-niö-se-ster % ze-re-mo-ni-öse-ster
-  ze-re-mo-niö-se-stes % ze-re-mo-ni-öse-stes
-  zet-re % ze-tre
-  Zin-no-bers % Zin-n-obers
-  zitt-re % zit-tre
-  zög-re % zö-g-re
-  züg-le % zü-g-le
-  züng-le % zün-gle
-  zwink-re % zwin-k-re
-%
-%
-% falsche Trennungen von zusammengesetzten Wörtern
-%
-  ab-gehst % ab-ge-hst
-  ab-geht % ab-ge-ht
-  ab-hob-le % ab-ho-ble
-  ab-hobst % ab-h-obst
-  ab-machst % ab-ma-chst
-  ab-macht % ab-ma-cht
-  ab-mach-te % ab-ma-ch-te
-  ab-mach-ten % ab-ma-ch-ten
-  ab-mach-test % ab-ma-ch-test
-  ab-mach-tet % ab-ma-ch-tet
-  ab-rieg-le % ab-rie-gle
-  ab-sau-ge % ab-s-au-ge
-  ab-schobst % ab-sch-obst
-  ab-seg-le % ab-se-gle
-  ab-spieg-le % ab-spie-gle
-  ab-stemp-le % ab-stem-ple
-  ab-ster-be % ab-st-er-be
-  ab-sterbt % ab-st-erbt
-  an-baust % an-bau-st
-  an-ge-schrien % an-ge-schri-en
-  an-ge-starrt % an-ge-st-arrt
-  an-ge-starr-tem % an-ge-st-arr-tem
-  an-ge-starr-ten % an-ge-st-arr-ten
-  an-ge-starr-ter % an-ge-st-arr-ter
-  an-ge-starr-tes % an-ge-st-arr-tes
-  an-hobst % an-h-obst
-  an-iso-trop % ani-so-trop
-  an-iso-tro-pe % ani-so-tro-pe
-  an-iso-tro-pem % ani-so-tro-pem
-  an-iso-tro-pen % ani-so-tro-pen
-  an-iso-tro-per % ani-so-tro-per
-  an-iso-tro-pes % ani-so-tro-pes
-  an-kling-le % an-klin-gle
-  an-kurb-le % an-kur-ble
-  an-machst % an-ma-chst
-  an-macht % an-ma-cht
-  an-mach-te % an-ma-ch-te
-  an-mach-ten % an-ma-ch-ten
-  an-mach-test % an-ma-ch-test
-  an-mach-tet % an-ma-ch-tet
-  an-nag-le % an-na-gle
-  an-pöb-le % an-pö-ble
-  an-sau-ge % an-s-au-ge
-  an-schien % an-schi-en
-  an-trafst % an-tra-fst
-  an-traft % an-tra-ft
-  ape-rio-disch % ape-ri-odisch
-  ape-rio-di-sche % ape-ri-odi-sche
-  ape-rio-di-schem % ape-ri-odi-schem
-  ape-rio-di-schen % ape-ri-odi-schen
-  ape-rio-di-scher % ape-ri-odi-scher
-  ape-rio-di-sches % ape-ri-odi-sches
-  are-li-giö-se % are-li-gi-öse
-  are-li-giö-sem % are-li-gi-ösem
-  are-li-giö-sen % are-li-gi-ösen
-  are-li-giö-ser % are-li-gi-öser
-  are-li-giö-ses % are-li-gi-öses
-  auf-fäch-re % auf-fä-ch-re
-  auf-ge-schrien % auf-ge-schri-en
-  auf-hobst % auf-h-obst
-  auf-möb-le % auf-mö-ble
-  Auf-pas-se-rin-nen % Auf-pas-se-r-in-nen
-  auf-reihst % auf-rei-hst
-  auf-reiht % auf-rei-ht
-  auf-reih-te % auf-rei-h-te
-  auf-reih-ten % auf-rei-h-ten
-  auf-reih-test % auf-rei-h-test
-  auf-reih-tet % auf-rei-h-tet
-  auf-rei^^fft % auf-rei-^^fft
-  auf-rü-ste-ten % auf-rüs-te-ten
-  auf-rü-ste-test % auf-rüs-te-test
-  auf-rü-ste-tet % auf-rüs-te-tet
-  auf-sau-ge % auf-s-au-ge
-  auf-schrien % auf-schri-en
-  auf-wär-mend % auf-wär-me-nd
-  auf-wär-men-de % auf-wär-me-n-de
-  auf-wär-men-dem % auf-wär-me-n-dem
-  auf-wär-men-den % auf-wär-me-n-den
-  auf-wär-men-der % auf-wär-me-n-der
-  auf-wär-men-des % auf-wär-me-n-des
-  aus-gebt % aus-ge-bt
-  aus-ge-rü-ste-te % aus-ge-rüs-te-te
-  aus-ge-rü-ste-tem % aus-ge-rüs-te-tem
-  aus-ge-rü-ste-ten % aus-ge-rüs-te-ten
-  aus-ge-rü-ste-ter % aus-ge-rüs-te-ter
-  aus-ge-rü-ste-tes % aus-ge-rüs-te-tes
-  aus-lobst % aus-l-obst
-  aus-sau-ge % aus-s-au-ge
-  aus-ster-be % aus-st-er-be
-  aus-sterbt % aus-st-erbt
-  aus-tobst % aus-t-obst
-  aus-zu-tau-schen % aus-zut-au-schen
-  aus-zu-tau-schend % aus-zut-au-schend
-  aus-zu-tau-schen-de % aus-zut-au-schen-de
-  aus-zu-tau-schen-dem % aus-zut-au-schen-dem
-  aus-zu-tau-schen-den % aus-zut-au-schen-den
-  aus-zu-tau-schen-der % aus-zut-au-schen-der
-  aus-zu-tau-schen-des % aus-zut-au-schen-des
-  be-dien % be-di-en
-  be-flüg-le % be-flü-g-le
-  be-hobst % be-h-obst
-  be-jub-le % be-ju-ble
-  be-lag-re % be-la-g-re
-  be-lief-re % be-lie-fre
-  be-mäng-le % be-män-g-le
-  be-mutt-re % be-mut-tre
-  be-neb-le % be-ne-ble
-  be-schien % be-schi-en
-  be-sieg-le % be-sie-gle
-  be-stacht % be-st-acht
-  be-stahlst % be-stahl-st
-  be-völk-re % be-völ-k-re
-  be-ziff-re % be-zif-fre
-  da-blieb % da-b-lieb
-  da-hin-glitt % da-hing-litt
-  da-hin-glit-te % da-hing-lit-te
-  da-hin-glit-ten % da-hing-lit-ten
-  da-hin-glit-test % da-hing-lit-test
-  da-hin-glit-tet % da-hing-lit-tet
-  da-hin-glittst % da-hing-littst
-  da-hin-ster-be % da-hin-st-er-be
-  da-hin-sterbt % da-hin-st-erbt
-  da-von-schlei-che % da-v-on-schlei-che
-  da-von-schlei-chen % da-v-on-schlei-chen
-  da-von-schlei-chend % da-v-on-schlei-chend
-  da-von-schlei-chen-de % da-v-on-schlei-chen-de
-  da-von-schlei-chen-dem % da-v-on-schlei-chen-dem
-  da-von-schlei-chen-den % da-v-on-schlei-chen-den
-  da-von-schlei-chen-der % da-v-on-schlei-chen-der
-  da-von-schlei-chen-des % da-v-on-schlei-chen-des
-  da-von-schleichst % da-v-on-schleichst
-  da-von-schleicht % da-v-on-schleicht
-  da-von-spa-zier-te % da-v-onspa-zier-te
-  da-zu-lernst % da-zu-l-ernst
-  ein-baust % ein-bau-st
-  ein-flö^^fft % ein-flö-^^fft
-  ein-flö^^ff-te % ein-flö-^^ffte
-  ein-flö^^ff-ten % ein-flö-^^fften
-  ein-flö^^ff-test % ein-flö-^^fftest
-  ein-flö^^ff-tet % ein-flö-^^fftet
-  ein-ge-flö^^fft % ein-ge-flö-^^fft
-  ein-ge-flö^^ff-te % ein-ge-flö-^^ffte
-  ein-ge-flö^^ff-tem % ein-ge-flö-^^fftem
-  ein-ge-flö^^ff-ten % ein-ge-flö-^^fften
-  ein-ge-flö^^ff-ter % ein-ge-flö-^^ffter
-  ein-ge-flö^^ff-tes % ein-ge-flö-^^fftes
-  ein-ge-schleu-ste % ein-ge-schleus-te
-  ein-ge-schleu-stem % ein-ge-schleus-tem
-  ein-ge-schleu-sten % ein-ge-schleus-ten
-  ein-ge-schleu-stes % ein-ge-schleus-tes
-  ein-la-gre % ein-la-g-re
-  ein-lief-re % ein-lie-fre
-  ein-schlich % ein-sch-lich
-  ein-schli-che % ein-sch-li-che
-  ein-schli-chen % ein-sch-li-chen
-  ein-schli-chest % ein-sch-li-chest
-  ein-schlichst % ein-sch-lichst
-  ein-schlicht % ein-sch-licht
-  ein-schlief % ein-sch-lief
-  ein-trafst % ein-tra-fst
-  ein-traft % ein-tra-ft
-  ein-zu-tau-chen % ein-zut-au-chen
-  ein-zu-tau-chend % ein-zut-au-chend
-  ein-zu-tau-chen-de % ein-zut-au-chen-de
-  ein-zu-tau-chen-dem % ein-zut-au-chen-dem
-  ein-zu-tau-chen-den % ein-zut-au-chen-den
-  ein-zu-tau-chen-der % ein-zut-au-chen-der
-  ein-zu-tau-chen-des % ein-zut-au-chen-des
-  ein-zu-tau-schen % ein-zut-au-schen
-  ein-zu-tau-schend % ein-zut-au-schend
-  ein-zu-tau-schen-de % ein-zut-au-schen-de
-  ein-zu-tau-schen-dem % ein-zut-au-schen-dem
-  ein-zu-tau-schen-den % ein-zut-au-schen-den
-  ein-zu-tau-schen-der % ein-zut-au-schen-der
-  ein-zu-tau-schen-des % ein-zut-au-schen-des
-  ein-zu-üben % ein-zuü-ben
-  ein-zu-übend % ein-zuü-bend
-  ein-zu-üben-de % ein-zuü-ben-de
-  ein-zu-üben-dem % ein-zuü-ben-dem
-  ein-zu-üben-den % ein-zuü-ben-den
-  ein-zu-üben-der % ein-zuü-ben-der
-  ein-zu-üben-des % ein-zuü-ben-des
-  ent-blö^^fft % ent-blö-^^fft
-  ent-blö^^ff-te % ent-blö-^^ffte
-  ent-blö^^ff-tem % ent-blö-^^fftem
-  ent-blö^^ff-ten % ent-blö-^^fften
-  ent-blö^^ff-ter % ent-blö-^^ffter
-  ent-blö^^ff-tes % ent-blö-^^fftes
-  ent-blö^^ff-test % ent-blö-^^fftest
-  ent-blö^^ff-tet % ent-blö-^^fftet
-  ent-er-be % en-t-er-be
-  ent-fernst % ent-f-ernst
-  ent-hobst % ent-h-obst
-  ent-rieg-le % ent-rie-gle
-  ent-rü-ste-te % ent-rüs-te-te
-  ent-rü-ste-tem % ent-rüs-te-tem
-  ent-rü-ste-ten % ent-rüs-te-ten
-  ent-rü-ste-ter % ent-rüs-te-ter
-  ent-rü-ste-tes % ent-rüs-te-tes
-  ent-rü-ste-test % ent-rüs-te-test
-  ent-rü-ste-tet % ent-rüs-te-tet
-  ent-schlief % ent-sch-lief
-  ent-schlie-fen % ent-sch-lie-fen
-  ent-schlie-fest % ent-sch-lie-fest
-  ent-schliefst % ent-sch-liefst
-  ent-schlieft % ent-sch-lieft
-  ent-schlös-se % ent-sch-lös-se
-  ent-schlös-sen % ent-sch-lös-sen
-  ent-schlös-sest % ent-sch-lös-sest
-  ent-schlö^^fft % ent-schlö-^^fft
-  ent-ziff-re % ent-zif-fre
-  ent-zweist % ent-zwei-st
-  er-blas-se % erb-las-se
-  er-blas-sen % erb-las-sen
-  er-blas-send % erb-las-send
-  er-blas-sen-de % erb-las-sen-de
-  er-blas-sen-dem % erb-las-sen-dem
-  er-blas-sen-den % erb-las-sen-den
-  er-blas-sen-der % erb-las-sen-der
-  er-blas-sen-des % erb-las-sen-des
-  Erb-las-se-rin-nen % Erb-las-se-r-in-nen
-  er-blas-sest % erb-las-sest
-  er-eif-re % er-ei-fre
-  er-folg-reich-ste % er-folg-reichs-te
-  er-folg-reich-stem % er-folg-reichs-tem
-  er-folg-reich-sten % er-folg-reichs-ten
-  er-folg-reich-ster % er-folg-reichs-ter
-  er-folg-reich-stes % er-folg-reichs-tes
-  er-hal-ten-ge-blie-ben % er-halt-en-ge-blie-ben
-  er-hal-ten-ge-blie-be-ne % er-halt-en-ge-blie-be-ne
-  er-hal-ten-ge-blie-be-nem % er-halt-en-ge-blie-be-nem
-  er-hal-ten-ge-blie-be-nen % er-halt-en-ge-blie-be-nen
-  er-hal-ten-ge-blie-be-ner % er-halt-en-ge-blie-be-ner
-  er-hal-ten-ge-blie-be-nes % er-halt-en-ge-blie-be-nes
-  er-klirr-te % er-k-lirr-te
-  er-klun-ge-nen % er-k-lun-ge-nen
-  er-läut-re % er-läu-tre
-  er-munt-re % er-mun-tre
-  er-schien % er-schi-en
-  er-stacht % er-st-acht
-  erster-be % er-st-er-be
-  er-sterbt % er-st-erbt
-  er-wär-mend % er-wär-me-nd
-  er-wär-men-de % er-wär-me-n-de
-  er-wär-men-dem % er-wär-me-n-dem
-  er-wär-men-den % er-wär-me-n-den
-  er-wär-men-der % er-wär-me-n-der
-  er-wär-men-des % er-wär-me-n-des
-  er-wischt % er-wi-scht
-  er-wisch-te % er-wi-sch-te
-  er-wisch-tem % er-wi-sch-tem
-  er-wisch-ten % er-wi-sch-ten
-  er-wisch-ter % er-wi-sch-ter
-  er-wisch-tes % er-wi-sch-tes
-  er-wisch-test % er-wi-sch-test
-  er-wisch-tet % er-wi-sch-tet
-  er-zitt-re % er-zit-tre
-  fa-ta-le-rer % fa-ta-ler-er
-  fest-nag-le % fest-na-gle
-  fest-zu-ma-chen % festz-u-ma-chen
-  fest-zu-ma-chend % festz-u-ma-chend
-  fest-zu-ma-chen-de % festz-u-ma-chen-de
-  fest-zu-ma-chen-dem % festz-u-ma-chen-dem
-  fest-zu-ma-chen-den % festz-u-ma-chen-den
-  fest-zu-ma-chen-der % festz-u-ma-chen-der
-  fest-zu-ma-chen-des % festz-u-ma-chen-des
-  flott-zu-ma-chen % flottz-u-ma-chen
-  flott-zu-ma-chend % flottz-u-ma-chend
-  flott-zu-ma-chen-de % flottz-u-ma-chen-de
-  flott-zu-ma-chen-dem % flottz-u-ma-chen-dem
-  flott-zu-ma-chen-den % flottz-u-ma-chen-den
-  flott-zu-ma-chen-der % flottz-u-ma-chen-der
-  flott-zu-ma-chen-des % flottz-u-ma-chen-des
-  ganz-wö-chig % gan-zwö-chig
-  ganz-wö-chi-ge % gan-zwö-chi-ge
-  ganz-wö-chi-gem % gan-zwö-chi-gem
-  ganz-wö-chi-gen % gan-zwö-chi-gen
-  ganz-wö-chi-ger % gan-zwö-chi-ger
-  ganz-wö-chi-ges % gan-zwö-chi-ges
-  glor-reich-ste % glor-reichs-te
-  glor-reich-stem % glor-reichs-tem
-  glor-reich-sten % glor-reichs-ten
-  glor-reich-ster % glor-reichs-ter
-  glor-reich-stes % glor-reichs-tes
-  gut-zu-ma-chen % gutz-u-ma-chen
-  gut-zu-ma-chend % gutz-u-ma-chend
-  gut-zu-ma-chen-de % gutz-u-ma-chen-de
-  gut-zu-ma-chen-dem % gutz-u-ma-chen-dem
-  gut-zu-ma-chen-den % gutz-u-ma-chen-den
-  gut-zu-ma-chen-der % gutz-u-ma-chen-der
-  gut-zu-ma-chen-des % gutz-u-ma-chen-des
-  halt-zu-ma-chen % haltz-u-ma-chen
-  Hard-rock % Har-d-rock
-  her-an-ging % he-r-an-ging
-  her-an-gin-ge % he-r-an-gin-ge
-  her-an-gin-gen % he-r-an-gin-gen
-  her-an-gingst % he-r-an-gingst
-  her-an-gingt % he-r-an-gingt
-  her-aus-gebt % her-aus-ge-bt
-  her-um-lung-re % her-um-lun-g-re
-  her-um-nörg-le % her-um-nör-gle
-  hoch-ge-reckt % hoch-ge-r-eckt
-  hoch-ge-reck-te % hoch-ge-r-eck-te
-  hoch-ge-reck-tem % hoch-ge-r-eck-tem
-  hoch-ge-reck-ten % hoch-ge-r-eck-ten
-  hoch-ge-reck-ter % hoch-ge-r-eck-ter
-  hoch-ge-reck-tes % hoch-ge-r-eck-tes
-  ho-mo-ero-tisch % ho-moe-ro-tisch
-  ho-mo-ero-ti-sche % ho-moe-ro-ti-sche
-  ho-mo-ero-ti-schem % ho-moe-ro-ti-schem
-  ho-mo-ero-ti-schen % ho-moe-ro-ti-schen
-  ho-mo-ero-ti-scher % ho-moe-ro-ti-scher
-  ho-mo-ero-ti-sches % ho-moe-ro-ti-sches
-  hy-per-ak-tiv % hy-pe-rak-tiv
-  hy-per-ak-ti-ve % hy-pe-rak-ti-ve
-  hy-per-ak-ti-vem % hy-pe-rak-ti-vem
-  hy-per-ak-ti-ven % hy-pe-rak-ti-ven
-  hy-per-ak-ti-ver % hy-pe-rak-ti-ver
-  hy-per-ak-ti-ves % hy-pe-rak-ti-ves
-  il-loy-ale % il-loya-le
-  il-loy-alem % il-loya-lem
-  il-loy-alen % il-loya-len
-  il-loy-aler % il-loya-ler
-  il-loy-ales % il-loya-les
-  In-kauf-nah-me % In-k-auf-nah-me
-  in-ter-agie-re % in-ter-a-gie-re
-  in-ter-agie-ren % in-ter-a-gie-ren
-  in-ter-agie-rend % in-ter-a-gie-rend
-  in-ter-agie-ren-de % in-ter-a-gie-ren-de
-  in-ter-agie-ren-dem % in-ter-a-gie-ren-dem
-  in-ter-agie-ren-den % in-ter-a-gie-ren-den
-  in-ter-agie-ren-der % in-ter-a-gie-ren-der
-  in-ter-agie-ren-des % in-ter-a-gie-ren-des
-  in-ter-agierst % in-ter-a-gierst
-  in-ter-agiert % in-ter-a-giert
-  in-ter-agier-te % in-ter-a-gier-te
-  in-ter-agier-tem % in-ter-a-gier-tem
-  in-ter-agier-ten % in-ter-a-gier-ten
-  in-ter-agier-ter % in-ter-a-gier-ter
-  in-ter-agier-tes % in-ter-a-gier-tes
-  in-ter-agier-test % in-ter-a-gier-test
-  in-ter-agier-tet % in-ter-a-gier-tet
-  in-ter-me-diä-re % in-ter-me-di-äre
-  in-ter-me-diä-rem % in-ter-me-di-ärem
-  in-ter-me-diä-ren % in-ter-me-di-ären
-  in-ter-me-diä-rer % in-ter-me-di-ärer
-  in-ter-me-diä-res % in-ter-me-di-äres
-  in-ter-viewst % in-ter-view-st
-  ir-gend-et-was % ir-gen-det-was
-  Kon-ka-te-na-ti-on % Kon-ka-te-n-a-ti-on
-  Kon-tra-bäs-se % Kon-tra-b-äs-se
-  Kon-tra-bäs-sen % Kon-tra-b-äs-sen
-  lang-an-hal-ten-de % lan-gan-hal-ten-de
-  lang-an-hal-ten-den % lan-gan-hal-ten-den
-  los-ge-saust % los-ges-aust
-  mit-jub-le % mit-ju-ble
-  mit-lief-re % mit-lie-fre
-  mit-zu-ma-chen % mitz-u-ma-chen
-  mit-zu-ma-chend % mitz-u-ma-chend
-  mit-zu-ma-chen-de % mitz-u-ma-chen-de
-  mit-zu-ma-chen-dem % mitz-u-ma-chen-dem
-  mit-zu-ma-chen-den % mitz-u-ma-chen-den
-  mit-zu-ma-chen-der % mitz-u-ma-chen-der
-  mit-zu-ma-chen-des % mitz-u-ma-chen-des
-  nach-eif-re % nach-ei-fre
-  nach-lief-re % nach-lie-fre
-  nach-rü-ste-te % nach-rüs-te-te
-  nach-rü-ste-ten % nach-rüs-te-ten
-  nach-rü-ste-test % nach-rüs-te-test
-  nach-rü-ste-tet % nach-rüs-te-tet
-  nie-der-knien % nie-der-kni-en
-  nie-der-saust % nie-ders-aust
-  nie-der-sau-ste % nie-ders-au-ste
-  nie-der-sau-sten % nie-ders-au-sten
-  nie-der-sau-stest % nie-ders-au-stest
-  nie-der-sau-stet % nie-ders-au-stet
-  preis-gebt % preis-ge-bt
-  schlu^^ff-folg-re % schlu^^ff-fol-g-re
-  sit-zen-ge-las-sen % sitz-en-ge-las-sen
-  sit-zen-ge-las-se-nen % sitz-en-ge-las-se-nen
-  sit-zen-ge-las-se-ner % sitz-en-ge-las-se-ner
-  sit-zen-ge-las-se-nes % sitz-en-ge-las-se-nes
-  über-a^^ffen % übera-^^ffen
-  über-a^^ffest % übera-^^ffest
-  über-blätt-re % über-blät-tre
-  über-flüg-le % über-flü-g-le
-  über-lag-re % über-la-g-re
-  über-lief-re % über-lie-fre
-  über-rump-le % über-rum-ple
-  über-win-te-re % über-w-in-te-re
-  über-wint-re % über-win-tre
-  um-blätt-re % um-blät-tre
-  um-ge-rü-ste-te % um-ge-rüs-te-te
-  um-ge-rü-ste-tem % um-ge-rüs-te-tem
-  um-ge-rü-ste-ten % um-ge-rüs-te-ten
-  um-ge-rü-ste-ter % um-ge-rüs-te-ter
-  um-ge-rü-ste-tes % um-ge-rüs-te-tes
-  um-kremp-le % um-krem-ple
-  um-lag-re % um-la-g-re
-  um-lernst % um-l-ernst
-  um-neb-le % um-ne-ble
-  um-rü-ste-te % um-rüs-te-te
-  um-rü-ste-ten % um-rüs-te-ten
-  um-rü-ste-test % um-rüs-te-test
-  um-rü-ste-tet % um-rüs-te-tet
-  um-schwär-mend % um-schwär-me-nd
-  um-schwär-men-de % um-schwär-me-n-de
-  um-schwär-men-dem % um-schwär-me-n-dem
-  um-schwär-men-den % um-schwär-me-n-den
-  um-schwär-men-der % um-schwär-me-n-der
-  um-schwär-men-des % um-schwär-me-n-des
-  um-seg-le % um-se-gle
-  um-zing-le % um-zin-gle
-  un-ak-zep-ta-ble-rer % un-ak-zep-ta-bler-er
-  un-at-trak-ti-ve-rem % unat-trak-ti-ver-em
-  un-at-trak-ti-ve-ren % unat-trak-ti-ver-en
-  un-at-trak-ti-ve-rer % unat-trak-ti-ver-er
-  un-at-trak-ti-ve-res % unat-trak-ti-ver-es
-  un-bru-ta-le-rer % un-bru-ta-ler-er
-  un-ed-le-rer % un-ed-ler-er
-  un-ent-halt-sam % un-en-t-halt-sam
-  un-ent-halt-sa-me % un-en-t-halt-sa-me
-  un-ent-halt-sa-mem % un-en-t-halt-sa-mem
-  un-ent-halt-sa-men % un-en-t-halt-sa-men
-  un-ent-halt-sa-mer % un-en-t-halt-sa-mer
-  un-ent-halt-sa-me-re % un-en-t-halt-sa-me-re
-  un-ent-halt-sa-me-rem % un-en-t-halt-sa-me-rem
-  un-ent-halt-sa-me-ren % un-en-t-halt-sa-me-ren
-  un-ent-halt-sa-me-rer % un-en-t-halt-sa-me-rer
-  un-ent-halt-sa-me-res % un-en-t-halt-sa-me-res
-  un-ent-halt-sa-mes % un-en-t-halt-sa-mes
-  Un-ent-halt-sam-keit % Un-en-t-halt-sam-keit
-  un-ent-halt-sam-ste % un-en-t-halt-sam-ste
-  un-ent-halt-sam-stem % un-en-t-halt-sam-stem
-  un-ent-halt-sam-sten % un-en-t-halt-sam-sten
-  un-ent-halt-sam-ster % un-en-t-halt-sam-ster
-  un-ent-halt-sam-stes % un-en-t-halt-sam-stes
-  un-fle-xi-ble-rer % un-fle-xibler-er
-  un-ge-naue-rem % un-ge-nau-e-rem
-  un-ge-naue-res % un-ge-nau-e-res
-  un-ge-nau-ste % un-ge-n-au-ste
-  un-ge-nau-stem % un-ge-n-au-stem
-  un-ge-nau-sten % un-ge-n-au-sten
-  un-ge-nau-ster % un-ge-n-au-ster
-  un-ge-nau-stes % un-ge-n-au-stes
-  un-kol-le-gia-le-rer % un-kol-le-gia-ler-er
-  un-kom-for-ta-ble-rer % un-kom-for-ta-bler-er
-  un-prak-ti-ka-ble-rer % un-prak-ti-ka-bler-er
-  un-pro-duk-ti-ve-rem % un-pro-duk-ti-ver-em
-  un-pro-duk-ti-ve-ren % un-pro-duk-ti-ver-en
-  un-pro-duk-ti-ve-rer % un-pro-duk-ti-ver-er
-  un-pro-duk-ti-ve-res % un-pro-duk-ti-ver-es
-  un-ra-tio-nel-le-rer % un-ra-tio-nel-ler-er
-  un-re-el-le-rer % un-re-el-ler-er
-  un-rein-ste % unr-ein-ste
-  un-rein-stem % unr-ein-stem
-  un-rein-sten % unr-ein-sten
-  un-rein-ster % unr-ein-ster
-  un-rein-stes % unr-ein-stes
-  un-ren-ta-ble-rer % un-ren-ta-bler-er
-  un-ska-liert % un-s-ka-liert
-  un-ska-lier-te % un-s-ka-lier-te
-  un-ska-lier-tem % un-s-ka-lier-tem
-  un-ska-lier-ten % un-s-ka-lier-ten
-  un-ska-lier-ter % un-s-ka-lier-ter
-  un-ska-lier-tes % un-s-ka-lier-tes
-  un-ter-heb-le % un-ter-he-ble
-  un-ter-zu-tau-chen % un-ter-zut-au-chen
-  un-treue-rem % un-treu-e-rem
-  un-treue-res % un-treu-e-res
-  ver-ank-re % ver-an-k-re
-  ver-ärg-re % ver-är-g-re
-  ver-arz-tend % ver-arzt-end
-  ver-arz-ten-de % ver-arzt-en-de
-  ver-arz-ten-dem % ver-arzt-en-dem
-  ver-arz-ten-den % ver-arzt-en-den
-  ver-arz-ten-der % ver-arzt-en-der
-  ver-arz-ten-des % ver-arzt-en-des
-  ver-biest-re % ver-bie-stre
-  ver-darb % verd-arb
-  ver-dar-ben % verd-ar-ben
-  ver-darbst % verd-arbst
-  ver-daust % verd-aust
-  ver-flicht % ver-f-licht
-  ver-flichtst % ver-f-lichtst
-  ver-gitt-re % ver-git-tre
-  ver-gött-re % ver-göt-tre
-  ver-hung-re % ver-hun-g-re
-  ver-jub-le % ver-ju-ble
-  ver-klun-gen % ver-k-lun-gen
-  ver-klun-ge-ne % ver-k-lun-ge-ne
-  ver-klun-ge-nem % ver-k-lun-ge-nem
-  ver-klun-ge-nen % ver-k-lun-ge-nen
-  ver-klun-ge-ner % ver-k-lun-ge-ner
-  ver-klun-ge-nes % ver-k-lun-ge-nes
-  ver-lag-re % ver-la-g-re
-  ver-lernst % ver-l-ernst
-  ver-lobst % ver-l-obst
-  ver-nag-le % ver-na-gle
-  ver-neb-le % ver-ne-ble
-  ver-plemp-re % ver-plem-p-re
-  ver-prüg-le % ver-prü-g-le
-  ver-saust % vers-aust
-  ver-schlam-pe % ver-sch-lam-pe
-  ver-schrien % ver-schri-en
-  ver-schrump-le % ver-schrum-ple
-  ver-sieg-le % ver-sie-gle
-  ver-te-le-fo-nier % ver-te-le-fo-ni-er
-  ver-weig-re % ver-wei-g-re
-  ver-zög-re % ver-zö-g-re
-  vor-bei-flim-mernd % vor-beif-lim-mernd
-  vor-bei-flim-mern-de % vor-beif-lim-mern-de
-  vor-bei-flim-mern-dem % vor-beif-lim-mern-dem
-  vor-bei-flim-mern-den % vor-beif-lim-mern-den
-  vor-bei-flim-mern-der % vor-beif-lim-mern-der
-  vor-bei-flim-mern-des % vor-beif-lim-mern-des
-  vor-spieg-le % vor-spie-gle
-  vor-wär-mend % vor-wär-me-nd
-  vor-wär-men-de % vor-wär-me-n-de
-  vor-wär-men-dem % vor-wär-me-n-dem
-  vor-wär-men-den % vor-wär-me-n-den
-  vor-wär-men-der % vor-wär-me-n-der
-  vor-wär-men-des % vor-wär-me-n-des
-  weg-sch-lich % weg-sch-lich
-  weg-sch-li-chen % weg-sch-li-chen
-  weg-sch-li-chest % weg-sch-li-chest
-  weg-sch-lichst % weg-sch-lichst
-  weg-sch-licht % weg-sch-licht
-  weg-sein % weg-s-ein
-  weg-ster-be % weg-st-er-be
-  weg-sterbt % weg-st-erbt
-  wei-ter-blätt-re % wei-ter-blät-tre
-  wert-vol-le-rer % wert-vol-ler-er
-  wett-eif-re % wett-ei-fre
-  wett-rü-ste-te % wett-rüs-te-te
-  wett-rü-ste-ten % wett-rüs-te-ten
-  wett-rü-ste-test % wett-rüs-te-test
-  wett-rü-ste-tet % wett-rüs-te-tet
-  wi-der-spieg-le % wi-der-spie-gle
-  wun-der-vol-le-rer % wun-der-vol-ler-er
-  wund-rei-ben % wun-drei-ben
-  zer-flatt-re % zer-flat-tre
-  zer-knitt-re % zer-knit-tre
-  zer-mart-re % zer-mar-tre
-  zer-splitt-re % zer-split-tre
-  zer-stacht % zer-st-acht
-  zer-tramp-le % zer-tram-ple
-  zu-ge-rü-ste-te % zu-ge-rüs-te-te
-  zu-ge-rü-ste-tem % zu-ge-rüs-te-tem
-  zu-ge-rü-ste-ten % zu-ge-rüs-te-ten
-  zu-ge-rü-ste-ter % zu-ge-rüs-te-ter
-  zu-ge-rü-ste-tes % zu-ge-rüs-te-tes
-  zu-jub-le % zu-ju-ble
-  zu-rück-blätt-re % zu-rück-blät-tre
-  zu-rück-blieb % zu-rück-b-lieb
-  zu-rück-blie-be % zu-rück-b-lie-be
-  zu-rück-blie-ben % zu-rück-b-lie-ben
-  zu-rück-bliebst % zu-rück-b-liebst
-  zu-rück-bliebt % zu-rück-b-liebt
-  zu-rück-reg-le % zu-rück-re-gle
-  zu-rü-ste-te % zu-rüs-te-te
-  zu-rü-ste-ten % zu-rüs-te-ten
-  zu-rü-ste-test % zu-rüs-te-test
-  zu-rü-ste-tet % zu-rüs-te-tet
-  zu-sam-men-baust % zu-sam-men-bau-st
-  zu-zwink-re % zu-zwin-k-re
-%
-%
-% falsche Trennungen ausgewählter Komposita
-%
-  Eber-esche % Ebe-re-sche
-  Erz-diö-ze-se % Erz-di-öze-se
-  Fi-nanz-äm-ter % Fi-nan-zäm-ter
-  Fi-nanz-äm-tern % Fi-nan-zäm-tern
-  Frisch-obst % Fri-sch-obst
-  fuchs-teu-fels-wild % fuch-steu-fels-wild
-  fuchs-teu-fels-wil-de % fuch-steu-fels-wil-de
-  fuchs-teu-fels-wil-dem % fuch-steu-fels-wil-dem
-  fuchs-teu-fels-wil-den % fuch-steu-fels-wil-den
-  fuchs-teu-fels-wil-der % fuch-steu-fels-wil-der
-  fuchs-teu-fels-wil-des % fuch-steu-fels-wil-des
-  fünf-ak-tig % fün-fak-tig
-  fünf-ak-ti-ge % fün-fak-ti-ge
-  fünf-ak-ti-gem % fün-fak-ti-gem
-  fünf-ak-ti-gen % fün-fak-ti-gen
-  fünf-ak-ti-ger % fün-fak-ti-ger
-  fünf-ak-ti-ges % fün-fak-ti-ges
-  Gas-öfen % Gasö-fen
-  Grund-ein-heit % Gr-und-ein-heit
-  Grund-ein-hei-ten % Gr-und-ein-hei-ten
-  Heiz-öls % Hei-zöls
-  Hof-rat % Ho-frat
-  kampf-er-fah-ren % kamp-fer-fah-ren
-  kampf-er-fah-re-ne % kamp-fer-fah-re-ne
-  kampf-er-fah-re-nem % kamp-fer-fah-re-nem
-  kampf-er-fah-re-nen % kamp-fer-fah-re-nen
-  kampf-er-fah-re-ner % kamp-fer-fah-re-ner
-  kampf-er-fah-re-nes % kamp-fer-fah-re-nes
-  Kampf-er-fah-rung % Kamp-fer-fah-rung
-  Kampf-er-fah-run-gen % Kamp-fer-fah-run-gen
-  kampf-er-probt % kamp-fer-probt
-  kampf-er-prob-te % kamp-fer-prob-te
-  kampf-er-prob-tem % kamp-fer-prob-tem
-  kampf-er-prob-ten % kamp-fer-prob-ten
-  kampf-er-prob-ter % kamp-fer-prob-ter
-  kampf-er-prob-tes % kamp-fer-prob-tes
-  Mu-sik-no-ten % Mu-si-kno-ten
-  Post-äm-ter % Po-stäm-ter
-  Pro-zent-zahl % Pro-z-ent-zahl
-  So-wjet-uni-on % So-wje-tu-ni-on
-  Tat-or-te % Ta-tor-te
-  Tat-or-ten % Ta-tor-ten
-  Tat-or-tes % Ta-tor-tes
-  Tat-orts % Ta-torts
-%
-%
-% fehlende Trennstellen einfacher Wörter
-%
-  Aa-le % Aale
-  Aa-len % Aalen
-  Ab-itu-re % Ab-iture
-  ab-strak-te-re % ab-strak-tere
-  ab-strak-te-rem % ab-strak-terem
-  ab-strak-te-ren % ab-strak-teren
-  ab-strak-te-rer % ab-strak-terer
-  ab-strak-te-res % ab-strak-teres
-  Ad-re-na-lin % Ad-rena-lin
-  Ad-re-na-lins % Ad-rena-lins
-  Ak-tio-nä-re % Ak-tio-näre
-  Ak-tio-nä-ren % Ak-tio-nären
-  Ak-tu-ars % Ak-tuars
-  Al-ma-na-che % Al-ma-nache
-  Am-ne-stie % Amne-stie
-  Am-ne-sti-en % Amne-sti-en
-  am-ne-stie-re % amne-stie-re
-  am-ne-stie-ren % amne-stie-ren
-  am-ne-stie-rend % amne-stie-rend
-  am-ne-stie-ren-de % amne-stie-ren-de
-  am-ne-stie-ren-dem % amne-stie-ren-dem
-  am-ne-stie-ren-den % amne-stie-ren-den
-  am-ne-stie-ren-der % amne-stie-ren-der
-  am-ne-stie-ren-des % amne-stie-ren-des
-  am-ne-stierst % amne-stierst
-  am-ne-stiert % amne-stiert
-  am-ne-stier-te % amne-stier-te
-  am-ne-stier-tem % amne-stier-tem
-  am-ne-stier-ten % amne-stier-ten
-  am-ne-stier-ter % amne-stier-ter
-  am-ne-stier-tes % amne-stier-tes
-  am-ne-stier-test % amne-stier-test
-  am-ne-stier-tet % amne-stier-tet
-  Am-ne-stie-rung % Amne-stie-rung
-  amü-sant % amüsant
-  amü-san-te % amüsan-te
-  amü-san-tem % amüsan-tem
-  amü-san-ten % amüsan-ten
-  amü-san-ter % amüsan-ter
-  amü-san-tes % amüsan-tes
-  An-da-lu-si-er % An-da-lu-sier
-  An-da-lu-si-ers % An-da-lu-siers
-  än-de-re % än-dere
-  and-rem % andrem
-  and-res % andres
-  An-häng-seln % An-hängseln
-  An-häng-sels % An-hängsels
-  Ar-me-ni-er % Ar-me-nier
-  Ar-me-ni-ers % Ar-me-niers
-  As-pekt % Aspekt
-  As-pek-te % Aspek-te
-  As-pek-ten % Aspek-ten
-  As-pek-tes % Aspek-tes
-  As-pekts % Aspekts
-  As-pik % Aspik
-  As-pi-rant % Aspi-rant
-  As-pi-ran-ten % Aspi-ran-ten
-  As-pi-ra-ti-on % Aspi-ra-ti-on
-  As-pi-ra-tio-nen % Aspi-ra-tio-nen
-  aus-zu-ar-ten % aus-zuar-ten
-  au-to-ri-tä-re % au-to-ri-täre
-  Axi-oms % Axioms
-  Bas-sins % Bassins
-  Bay-er % Bayer
-  be-dach-te-ren % be-dach-teren
-  Bi-blio-gra-phi-en % Bi-blio-gra-phien
-  Bie-re % Biere
-  bi-nä-re % bi-näre
-  bi-nä-rem % bi-närem
-  bi-nä-ren % bi-nären
-  bi-nä-rer % bi-närer
-  bi-nä-res % bi-näres
-  Bio-gra-phi-en % Bio-gra-phien
-  blö-dem % blödem
-  blo-^^ffem % blo^^ffem
-  Bö-en % Böen
-  brü-stest % brüstest
-  büff-le % büffle
-  bü-ge-le % bü-gele
-  Bul-le-tin % Bulle-tin
-  Cha-ot % Chaot
-  Cha-rak-te-re % Cha-rak-tere
-  Cha-rak-te-ren % Cha-rak-teren
-  Che-fin % Chefin
-  Chi-nas % Chinas
-  Clo-chard % Clochard
-  Clo-chards % Clochards
-  Da-che % Dache
-  Da-ches % Daches
-  Da-chung % Dachung
-  de-fi-zi-tä-re % de-fi-zi-täre
-  de-fla-tio-nä-re % de-fla-tio-näre
-  de-fla-tio-nä-rem % de-fla-tio-närem
-  de-fla-tio-nä-ren % de-fla-tio-nären
-  de-fla-tio-nä-rer % de-fla-tio-närer
-  de-fla-tio-nä-res % de-fla-tio-näres
-  Desk-top % Desktop
-  Desk-tops % Desktops
-  Des-pot % Despot
-  Des-po-ten % Despo-ten
-  dich-te-ren % dich-teren
-  Dien-sten % Diensten
-  Dien-stes % Dienstes
-  dien-te % diente
-  dien-ten % dienten
-  dien-test % dientest
-  dien-tet % dientet
-  doo-fe % doofe
-  doo-fem % doofem
-  doo-fen % doofen
-  doo-fer % doofer
-  doo-fe-re % doofe-re
-  doo-fe-rem % doofe-rem
-  doo-fe-ren % doofe-ren
-  doo-fe-rer % doofe-rer
-  doo-fe-res % doofe-res
-  doo-fes % doofes
-  Dou-bles % Doubles
-  Dou-blet-te % Doublet-te
-  Dra-gée % Dragée
-  Dra-gées % Dragées
-  dunk-le % dunkle
-  dunk-lem % dunklem
-  dunk-len % dunklen
-  dunk-les % dunkles
-  düst-re % düstre
-  ech-te-ren % ech-teren
-  ega-li-tä-re % ega-li-täre
-  ei-lends % eilends
-  ei-nen % einen
-  ei-nend % einend
-  ei-nen-de % einen-de
-  ei-nen-dem % einen-dem
-  ei-nen-den % einen-den
-  ei-nen-der % einen-der
-  ei-nen-des % einen-des
-  eit-re % eitre
-  ek-le % ekle
-  Ek-lip-sen % Eklip-sen
-  eli-tä-re % eli-täre
-  en-do-therm % endo-therm
-  en-do-ther-me % endo-ther-me
-  en-do-ther-mem % endo-ther-mem
-  en-do-ther-men % endo-ther-men
-  en-do-ther-mer % endo-ther-mer
-  en-do-ther-mes % endo-ther-mes
-  ent-re % entre
-  En-tre-pre-neur % Entre-pre-neur
-  En-tre-pre-neu-ren % Entre-pre-neu-ren
-  En-tre-pre-neurs % Entre-pre-neurs
-  En-tro-pie % Entro-pie
-  En-zi-ans % En-zians
-  Eu-tha-na-sie % Eutha-na-sie
-  evo-lu-tio-nä-re % evo-lu-tio-näre
-  evo-lu-tio-nä-rem % evo-lu-tio-närem
-  evo-lu-tio-nä-ren % evo-lu-tio-nären
-  evo-lu-tio-nä-rer % evo-lu-tio-närer
-  evo-lu-tio-nä-res % evo-lu-tio-näres
-  ex-ak-te-re % ex-ak-tere
-  fa-de-re % fa-dere
-  fa-de-rem % fa-derem
-  fa-de-ren % fa-deren
-  fa-de-rer % fa-derer
-  fa-de-res % fa-deres
-  fa-de-ste % fa-deste
-  fa-de-stem % fa-destem
-  fa-de-sten % fa-desten
-  fa-de-ster % fa-dester
-  fa-de-stes % fa-destes
-  fai-re % faire
-  fal-sche % falsche
-  fal-schem % falschem
-  fal-schen % falschen
-  fal-scher % falscher
-  fal-sche-re % falsche-re
-  fal-sche-rem % falsche-rem
-  fal-sche-ren % falsche-ren
-  fal-sche-rer % falsche-rer
-  fal-sche-res % falsche-res
-  fal-sches % falsches
-  fal-sche-ste % falsche-ste
-  fal-sche-stem % falsche-stem
-  fal-sche-sten % falsche-sten
-  fal-sche-ster % falsche-ster
-  fal-sche-stes % falsche-stes
-  Fan-ta-si-en % Fan-tasi-en
-  Fe-bru-ars % Fe-bruars
-  feuch-te-ren % feuch-teren
-  Fi-as-ko % Fias-ko
-  Fi-as-kos % Fias-kos
-  fieb-re % fiebre
-  fle-xi-blem % fle-xiblem
-  fle-xi-blen % fle-xiblen
-  fle-xi-bler % fle-xibler
-  fle-xi-ble-re % fle-xible-re
-  fle-xi-ble-rem % fle-xible-rem
-  fle-xi-ble-ren % fle-xible-ren
-  fle-xi-ble-res % fle-xible-res
-  fle-xi-bles % fle-xibles
-  flie-^^ffest % flie^^ffest
-  Flo-ri-ans % Flo-rians
-  Flu-ge % Fluge
-  Flu-or % Fluor
-  flüst-re % flüstre
-  frak-ta-le % frak-tale
-  frak-ta-lem % frak-talem
-  frak-ta-len % frak-talen
-  frak-ta-ler % frak-taler
-  frak-ta-les % frak-tales
-  Frö-sche % Frösche
-  Frö-schen % Fröschen
-  Ful-das % Fuldas
-  funk-le % funkle
-  Funk-tio-nä-re % Funk-tio-näre
-  Funk-tio-nä-ren % Funk-tio-nären
-  furch-te % furchte
-  furch-ten % furchten
-  fu-^^ffend % fu^^ffend
-  fu-^^ffen-dem % fu^^ffen-dem
-  fu-^^ffen-der % fu^^ffen-der
-  fütt-re % füttre
-  gab-le % gable
-  Gab-ler % Gabler
-  Gab-lern % Gablern
-  Gab-lers % Gablers
-  Gal-li-er % Gal-lier
-  Gal-li-ers % Gal-liers
-  Gau-chos % Gauchos
-  gauk-le % gaukle
-  ge-an-gelt % gean-gelt
-  ge-an-gel-te % gean-gel-te
-  ge-an-gel-tem % gean-gel-tem
-  ge-an-gel-ten % gean-gel-ten
-  ge-an-gel-ter % gean-gel-ter
-  ge-an-gel-tes % gean-gel-tes
-  ge-an-kert % gean-kert
-  ge-an-ker-te % gean-ker-te
-  ge-an-ker-tem % gean-ker-tem
-  ge-an-ker-ten % gean-ker-ten
-  ge-an-ker-ter % gean-ker-ter
-  ge-an-ker-tes % gean-ker-tes
-  ge-ant-wor-tet % geant-wor-tet
-  ge-char-tert % gechar-tert
-  ge-char-ter-te % gechar-ter-te
-  ge-char-ter-tem % gechar-ter-tem
-  ge-char-ter-ten % gechar-ter-ten
-  ge-char-ter-ter % gechar-ter-ter
-  ge-char-ter-tes % gechar-ter-tes
-  Ge-fä-^^ffe % Ge-fä^^ffe
-  Ge-fä-^^ffen % Ge-fä^^ffen
-  Ge-fä-^^ffes % Ge-fä^^ffes
-  ge-fau-lenzt % gefau-lenzt
-  ge-fault % gefault
-  ge-faul-te % gefaul-te
-  ge-faul-tem % gefaul-tem
-  ge-faul-ten % gefaul-ten
-  ge-faul-ter % gefaul-ter
-  ge-faul-tes % gefaul-tes
-  gefoppt % gefoppt
-  ge-fopp-te % gefopp-te
-  ge-fopp-tem % gefopp-tem
-  ge-fopp-ten % gefopp-ten
-  ge-fopp-ter % gefopp-ter
-  ge-fopp-tes % gefopp-tes
-  ge-hüllt % gehüllt
-  ge-hüll-te % gehüll-te
-  ge-hüll-tem % gehüll-tem
-  ge-hüll-ten % gehüll-ten
-  ge-hüll-ter % gehüll-ter
-  ge-hüll-tes % gehüll-tes
-  ge-hüpft % gehüpft
-  ge-klickt % geklickt
-  Ge-kni-ster % Ge-knister
-  Ge-kni-sters % Ge-knisters
-  ge-kni-stert % ge-knistert
-  ge-linkt % gelinkt
-  ge-link-te % gelink-te
-  ge-link-tem % gelink-tem
-  ge-link-ten % gelink-ten
-  ge-link-ter % gelink-ter
-  ge-link-tes % gelink-tes
-  ge-lü-stest % ge-lüstest
-  ge-mä-^^ffem % ge-mä^^ffem
-  ge-misch-te-ren % ge-misch-teren
-  ge-na-sest % ge-nasest
-  ge-na-set % ge-naset
-  Gen-dar-men % Gen-darmen
-  Ge-ne-rä-le % Ge-nerä-le
-  Ge-ne-rä-len % Ge-nerä-len
-  ge-nie-^^ffest % ge-nie^^ffest
-  ge-nö^^fft % genö^^fft
-  Ge-nüs-se % Genüs-se
-  Ge-nüs-sen % Genüs-sen
-  ge-ohr-feigt % geohr-feigt
-  ge-ohr-feig-te % geohr-feig-te
-  ge-ohr-feig-tem % geohr-feig-tem
-  ge-ohr-feig-ten % geohr-feig-ten
-  ge-ohr-feig-ter % geohr-feig-ter
-  ge-ohr-feig-tes % geohr-feig-tes
-  Ge-räu-sche % Ge-räusche
-  Ge-räu-schen % Ge-räuschen
-  Ge-räu-sches % Ge-räusches
-  ge-rech-te-ren % ge-rech-teren
-  ge-rö-chelt % ge-röchelt
-  ge-rö-chel-te % ge-röchel-te
-  ge-rö-chel-tem % ge-röchel-tem
-  ge-rö-chel-ten % ge-röchel-ten
-  ge-rö-chel-ter % ge-röchel-ter
-  ge-rö-chel-tes % ge-röchel-tes
-  ge-rö-stet % ge-röstet
-  ge-rö-ste-te % ge-röste-te
-  ge-rö-ste-tem % ge-röste-tem
-  ge-rö-ste-ten % ge-röste-ten
-  ge-rö-ste-ter % ge-röste-ter
-  ge-rö-ste-tes % ge-röste-tes
-  ge-rö-tet % ge-rötet
-  ge-rö-te-te % ge-röte-te
-  ge-rö-te-tem % ge-röte-tem
-  ge-rö-te-ten % ge-röte-ten
-  ge-rö-te-ter % ge-röte-ter
-  ge-rö-te-tes % ge-röte-tes
-  Ge-rü-stes % Ge-rüstes
-  ge-saust % gesaust
-  ge-sau-ste % gesau-ste
-  ge-sau-stem % gesau-stem
-  ge-sau-sten % gesau-sten
-  ge-sau-ster % gesau-ster
-  ge-sau-stes % gesau-stes
-  ge-schef-felt % geschef-felt
-  ge-schef-fel-te % geschef-fel-te
-  ge-schef-fel-tem % geschef-fel-tem
-  ge-schef-fel-ten % geschef-fel-ten
-  ge-schef-fel-ter % geschef-fel-ter
-  ge-schef-fel-tes % geschef-fel-tes
-  ge-schick-te-re % ge-schick-tere
-  ge-schick-te-rem % ge-schick-terem
-  ge-schick-te-ren % ge-schick-teren
-  ge-schick-te-rer % ge-schick-terer
-  ge-schick-te-res % ge-schick-teres
-  ge-staf-felt % gestaf-felt
-  ge-staf-fel-te % gestaf-fel-te
-  ge-staf-fel-tem % gestaf-fel-tem
-  ge-staf-fel-ten % gestaf-fel-ten
-  ge-staf-fel-ter % gestaf-fel-ter
-  ge-staf-fel-tes % gestaf-fel-tes
-  ge-such-te-ren % ge-such-teren
-  ge-ulkt % geulkt
-  ge-ulk-te % geulk-te
-  ge-ulk-tem % geulk-tem
-  ge-ulk-ten % geulk-ten
-  ge-ulk-ter % geulk-ter
-  ge-ulk-tes % geulk-tes
-  ge-woll-te-re % ge-woll-tere
-  ge-woll-te-rem % ge-woll-terem
-  ge-woll-te-ren % ge-woll-teren
-  ge-woll-te-rer % ge-woll-terer
-  ge-woll-te-res % ge-woll-teres
-  ge-woll-te-ste % ge-woll-teste
-  ge-woll-te-stem % ge-woll-testem
-  ge-woll-te-sten % ge-woll-testen
-  ge-woll-te-ster % ge-woll-tester
-  ge-woll-te-stes % ge-woll-testes
-  ge-wünsch-te-ren % ge-wünsch-teren
-  gie-^^ffest % gie^^ffest
-  gipf-le % gipfle
-  Glan-ze % Glanze
-  Go-yas % Goyas
-  Grie-^^ffes % Grie^^ffes
-  Gro-bi-ans % Gro-bians
-  gro-^^ffe % gro^^ffe
-  gro-^^ffem % gro^^ffem
-  gro-^^ffen % gro^^ffen
-  gro-^^ffer % gro^^ffer
-  gro-^^ffes % gro^^ffes
-  grü-be-le % grü-bele
-  Grü-be-lei % Grü-belei
-  Grü-be-lei-en % Grü-belei-en
-  häk-le % häkle
-  Häl-se % Hälse
-  Häl-sen % Hälsen
-  han-ge % hange
-  hätsch-le % hätschle
-  hau-te % haute
-  hau-ten % hauten
-  hau-test % hautest
-  hau-tet % hautet
-  hech-le % hechle
-  heid-ni-sche % heid-nische
-  heid-ni-schem % heid-nischem
-  heid-ni-schen % heid-nischen
-  heid-ni-scher % heid-nischer
-  heid-ni-sches % heid-nisches
-  hei-^^ffem % hei^^ffem
-  Hekt-ar % Hektar
-  Hekt-ars % Hektars
-  He-ras % Heras
-  hier-an % hieran
-  hier-aus % hieraus
-  hie-^^ffest % hie^^ffest
-  hind-re % hindre
-  Hin-du-is-mus % Hin-duis-mus
-  hint-an % hintan
-  Hir-sche % Hirsche
-  Hir-schen % Hirschen
-  Hir-sches % Hirsches
-  hoh-le-re % hohle-re
-  hoh-le-ren % hohle-ren
-  Ho-lo-gra-phi-en % Ho-lo-gra-phien
-  Ho-stes-sen % Hostes-sen
-  hu-ma-ni-tä-re % hu-ma-ni-täre
-  Ide-als % Ideals
-  ide-al-ste % ideal-ste
-  ide-al-stem % ideal-stem
-  ide-al-sten % ideal-sten
-  ide-al-ster % ideal-ster
-  ide-al-stes % ideal-stes
-  Idi-ots % Idiots
-  ima-gi-nä-re % ima-gi-näre
-  ima-gi-nä-rem % ima-gi-närem
-  ima-gi-nä-ren % ima-gi-nären
-  ima-gi-nä-rer % ima-gi-närer
-  ima-gi-nä-res % ima-gi-näres
-  Im-pre-sa-rio % Im-presa-rio
-  Im-pre-sa-ri-os % Im-presa-ri-os
-  in-fla-tio-nä-re % in-fla-tio-näre
-  in-fla-tio-nä-rem % in-fla-tio-närem
-  in-fla-tio-nä-ren % in-fla-tio-nären
-  in-fla-tio-nä-rer % in-fla-tio-närer
-  In-fla-tio-nä-res % In-fla-tio-näres
-  in-ji-zie-re % inji-zie-re
-  in-ji-zie-ren % inji-zie-ren
-  in-ji-zie-rend % inji-zie-rend
-  in-ji-zie-ren-de % inji-zie-ren-de
-  in-ji-zie-ren-dem % inji-zie-ren-dem
-  in-ji-zie-ren-den % inji-zie-ren-den
-  in-ji-zie-ren-der % inji-zie-ren-der
-  in-ji-zie-ren-des % inji-zie-ren-des
-  in-ji-zierst % inji-zierst
-  in-ji-ziert % inji-ziert
-  in-ji-zier-te % inji-zier-te
-  in-ji-zier-tem % inji-zier-tem
-  in-ji-zier-ten % inji-zier-ten
-  in-ji-zier-ter % inji-zier-ter
-  in-ji-zier-tes % inji-zier-tes
-  in-ji-zier-test % inji-zier-test
-  in-ji-zier-tet % inji-zier-tet
-  in-tak-te-re % in-tak-tere
-  in-tak-te-rem % in-tak-terem
-  in-tak-te-ren % in-tak-teren
-  in-tak-te-rer % in-tak-terer
-  in-tak-te-res % in-tak-teres
-  Ja-gu-ars % Ja-guars
-  Jah-we % Jahwe
-  Jah-wes % Jahwes
-  Je-su-it % Je-suit
-  jon-glie-re % jonglie-re
-  jon-glie-ren % jonglie-ren
-  jon-glie-rend % jonglie-rend
-  jon-glie-ren-de % jonglie-ren-de
-  jon-glie-ren-dem % jonglie-ren-dem
-  jon-glie-ren-den % jonglie-ren-den
-  jon-glie-ren-der % jonglie-ren-der
-  jon-glie-ren-des % jonglie-ren-des
-  jon-glierst % jonglierst
-  jon-gliert % jongliert
-  jon-glier-te % jonglier-te
-  jon-glier-ten % jonglier-ten
-  jon-glier-test % jonglier-test
-  jon-glier-tet % jonglier-tet
-  Ju-ni-ors % Ju-niors
-  Ju-ris-pru-denz % Ju-rispru-denz
-  Ju-sti-ti-ars % Ju-sti-tiars
-  Ka-li-for-ni-er % Ka-li-for-nier
-  Kal-li-gra-phi-en % Kal-li-gra-phien
-  kä-me % käme
-  kä-men % kämen
-  Ka-nä-le % Kanä-le
-  Ka-nä-len % Kanä-len
-  Ka-plan % Kaplan
-  Kar-di-nä-le % Kar-dinäle
-  Kar-di-nä-len % Kar-dinälen
-  kasp-re % kaspre
-  Ka-vi-ars % Ka-viars
-  ka-vi-tös % ka-vitös
-  ka-vi-tö-se % ka-vitö-se
-  ka-vi-tö-sem % ka-vitö-sem
-  ka-vi-tö-sen % ka-vitö-sen
-  ka-vi-tö-ser % ka-vitö-ser
-  ka-vi-tö-ses % ka-vitö-ses
-  Ketch-ups % Ketchups
-  klett-re % klettre
-  knap-pe-rem % knap-perem
-  Knä-ste % Knäste
-  Knä-sten % Knästen
-  knosp-ten % knospten
-  Koa-la % Koala
-  Kof-fe-ins % Koffe-ins
-  Ko-ka-in % Ko-kain
-  Ko-lum-bi-ens % Ko-lum-biens
-  Kom-in-tern % Komin-tern
-  Kom-mis-sio-nä-re % Kom-mis-sio-näre
-  Kom-mis-sio-nä-ren % Kom-mis-sio-nären
-  kom-pak-te-re % kom-pak-tere
-  kom-pak-te-rem % kom-pak-terem
-  kom-pak-te-ren % kom-pak-teren
-  kom-pak-te-rer % kom-pak-terer
-  kom-pak-te-res % kom-pak-teres
-  kom-pe-ten-te % kom-pe-tente
-  kom-pe-ten-tem % kom-pe-tentem
-  kom-pe-ten-ten % kom-pe-tenten
-  kom-pe-ten-ter % kom-pe-tenter
-  kom-pe-ten-te-re % kom-pe-tente-re
-  kom-pe-ten-te-rem % kom-pe-tente-rem
-  kom-pe-ten-te-ren % kom-pe-tente-ren
-  kom-pe-ten-te-rer % kom-pe-tente-rer
-  kom-pe-ten-te-res % kom-pe-tente-res
-  kom-pe-ten-tes % kom-pe-tentes
-  kom-pe-ten-te-ste % kom-pe-tente-ste
-  kom-pe-ten-te-stem % kom-pe-tente-stem
-  kom-pe-ten-te-sten % kom-pe-tente-sten
-  kom-pe-ten-te-ster % kom-pe-tente-ster
-  kom-pe-ten-te-stes % kom-pe-tente-stes
-  Kom-po-ste % Kom-poste
-  Kom-po-sten % Kom-posten
-  Kom-po-stes % Kom-postes
-  Kon-cho-ide % Kon-choide
-  Kon-cho-iden % Kon-choiden
-  Kon-fek-tio-nä-re % Kon-fek-tio-näre
-  Kon-fek-tio-nä-ren % Kon-fek-tio-nären
-  kon-flu-en-te % kon-flu-ente
-  kon-flu-en-tem % kon-flu-entem
-  kon-flu-en-ten % kon-flu-enten
-  kon-flu-en-ter % kon-flu-enter
-  kon-flu-en-tes % kon-flu-entes
-  Kon-tra-ste % Kon-traste
-  Kon-tra-sten % Kon-trasten
-  Kon-tra-stes % Kon-trastes
-  kon-tra-stier % kon-trastier
-  kon-tra-stie-re % kon-trastie-re
-  kon-tra-stie-ren % kon-trastie-ren
-  kon-tra-stie-rend % kon-trastie-rend
-  kon-tra-stie-ren-de % kon-trastie-ren-de
-  kon-tra-stie-ren-dem % kon-trastie-ren-dem
-  kon-tra-stie-ren-den % kon-trastie-ren-den
-  kon-tra-stie-ren-der % kon-trastie-ren-der
-  kon-tra-stie-ren-des % kon-trastie-ren-des
-  kon-tra-stierst % kon-trastierst
-  kon-tra-stiert % kon-trastiert
-  kon-tra-stier-te % kon-trastier-te
-  kon-tra-stier-ten % kon-trastier-ten
-  kon-tra-stier-test % kon-trastier-test
-  kon-tra-stier-tet % kon-trastier-tet
-  Kop-fe % Kopfe
-  kor-rek-te-re % kor-rek-tere
-  kor-rek-te-rem % kor-rek-terem
-  kor-rek-te-ren % kor-rek-teren
-  kor-rek-te-rer % kor-rek-terer
-  kor-rek-te-res % kor-rek-teres
-  kra-kee-lend % kra-keelend
-  kra-kee-len-de % kra-keelen-de
-  kra-kee-len-dem % kra-keelen-dem
-  kra-kee-len-den % kra-keelen-den
-  kra-kee-len-der % kra-keelen-der
-  kra-kee-len-des % kra-keelen-des
-  kri-tik-lo-se % kri-tiklo-se
-  kri-tik-lo-sem % kri-tiklo-sem
-  kri-tik-lo-sen % kri-tiklo-sen
-  kri-tik-lo-ser % kri-tiklo-ser
-  kri-tik-lo-ses % kri-tiklo-ses
-  kür-ze-ste % kür-zeste
-  kür-ze-stem % kür-zestem
-  kür-ze-sten % kür-zesten
-  kür-ze-ster % kür-zester
-  kür-ze-stes % kür-zestes
-  kusch-le % kuschle
-  läch-le % lächle
-  La-mé % Lamé
-  La-més % Lamés
-  La-sa-gne % Lasa-gne
-  La-sa-gnen % Lasa-gnen
-  läst-re % lästre
-  Leg-as-the-nie % Leg-asthe-nie
-  Leg-as-the-ni-ker % Leg-asthe-ni-ker
-  Leg-as-the-ni-ke-rin % Leg-asthe-ni-ke-rin
-  Leg-as-the-ni-ke-rin-nen % Leg-asthe-ni-ke-rin-nen
-  Leg-as-the-ni-kern % Leg-asthe-ni-kern
-  Leg-as-the-ni-kers % Leg-asthe-ni-kers
-  le-gen-dä-re % le-gen-däre
-  le-gen-dä-rem % le-gen-därem
-  le-gen-dä-ren % le-gen-dären
-  le-gen-dä-rer % le-gen-därer
-  le-gen-dä-res % le-gen-däres
-  Le-gio-nä-re % Le-gio-näre
-  Le-gio-nä-ren % Le-gio-nären
-  leich-te-ren % leich-teren
-  lie-^^ffest % lie^^ffest
-  lind-re % lindre
-  Li-ne-als % Li-neals
-  lisp-le % lisple
-  Li-tho-gra-phi-en % Li-tho-gra-phien
-  löff-le % löffle
-  Ly-ze-ums % Ly-zeums
-  Ma-gen-ta % Magen-ta
-  Ma-gi-er % Ma-gier
-  Ma-gi-ers % Ma-giers
-  Mam-mo-gra-phi-en % Mam-mo-gra-phien
-  Mar-ti-nas % Mar-tinas
-  Mar-xi-sten % Marxi-sten
-  Ma-xi-mi-li-ans % Ma-xi-mi-lians
-  Me-ga-li-then % Me-ga-lithen
-  meist-re % meistre
-  Men-thol % Menthol
-  Men-thols % Menthols
-  Me-nüs % Menüs
-  Mi-cha-els % Mi-chaels
-  mi-li-zio-nä-re % mi-li-zio-näre
-  Mi-li-zio-nä-ren % Mi-li-zio-nären
-  Mil-li-ar-dä-re % Mil-li-ar-däre
-  Mil-li-ar-dä-ren % Mil-li-ar-dären
-  Mil-li-ar-dä-rin % Mil-li-ar-därin
-  Mil-li-ar-dä-rin-nen % Mil-li-ar-därin-nen
-  Mil-lio-nä-re % Mil-lio-näre
-  Mil-lio-nä-ren % Mil-lio-nären
-  mind-re % mindre
-  Mi-ri-am % Mi-riam
-  Mi-ri-ams % Mi-riams
-  mi^^ff-trau-isch-ste % mi^^ff-trauisch-ste
-  mi^^ff-trau-isch-stem % mi^^ff-trauisch-stem
-  mi^^ff-trau-isch-sten % mi^^ff-trauisch-sten
-  mi^^ff-trau-isch-ster % mi^^ff-trauisch-ster
-  mi^^ff-trau-isch-stes % mi^^ff-trauisch-stes
-  Mit-ta-ge % Mit-tage
-  Mit-ta-gen % Mit-tagen
-  Moi-ré % Moiré
-  Mo-no-gra-phi-en % Mo-no-gra-phien
-  mul-ti-pler % mul-tipler
-  munk-le % munkle
-  must-re % mustre
-  Ne-gli-gé % Ne-gligé
-  Ne-gli-gés % Ne-gligés
-  Obo-en % Oboen
-  omi-nö-se % omi-nöse
-  omi-nö-sem % omi-nösem
-  omi-nö-sen % omi-nösen
-  omi-nö-ser % omi-nöser
-  omi-nö-ses % omi-nöses
-  opf-re % opfre
-  or-di-nä-re % or-di-näre
-  or-di-nä-rem % or-di-närem
-  or-di-nä-ren % or-di-nären
-  or-di-nä-rer % or-di-närer
-  or-di-nä-re-re % or-di-näre-re
-  or-di-nä-re-rem % or-di-näre-rem
-  or-di-nä-re-ren % or-di-näre-ren
-  or-di-nä-re-rer % or-di-näre-rer
-  or-di-nä-re-res % or-di-näre-res
-  or-di-nä-res % or-di-näres
-  ori-gi-nä-re % ori-gi-näre
-  ori-gi-nä-rem % ori-gi-närem
-  ori-gi-nä-ren % ori-gi-nären
-  ori-gi-nä-rer % ori-gi-närer
-  ori-gi-nä-res % ori-gi-näres
-  Or-tho-gra-phi-en % Or-tho-gra-phien
-  Oze-an % Ozean
-  Oze-ans % Ozeans
-  Pap-stes % Papstes
-  pa-ra-si-tä-re % pa-ra-si-täre
-  pas-sa-blem % pas-sablem
-  pas-sa-blen % pas-sablen
-  pas-sa-bler % pas-sabler
-  pas-sa-bles % pas-sables
-  Pa-vi-ans % Pa-vians
-  Pen-sio-nä-re % Pen-sio-näre
-  Pen-sio-nä-ren % Pen-sio-nären
-  per-fek-te-re % per-fek-tere
-  per-fek-te-rem % per-fek-terem
-  per-fek-te-ren % per-fek-teren
-  per-fek-te-rer % per-fek-terer
-  per-fek-te-res % per-fek-teres
-  pfeff-re % pfeffre
-  Phan-ta-si-en % Phan-tasi-en
-  Phi-lo-so-phi-en % Phi-lo-so-phien
-  Pho-to-gra-phi-en % Pho-to-gra-phien
-  Pin-gu-in % Pin-guin
-  plum-pe-rem % plum-perem
-  Po-et % Poet
-  Por-no-gra-phi-en % Por-no-gra-phien
-  Prä-va-lenz % Präva-lenz
-  pri-mä-re % pri-märe
-  pri-mä-rem % pri-märem
-  pri-mä-ren % pri-mären
-  pri-mä-rer % pri-märer
-  pri-mä-res % pri-märes
-  pu-bli-kes % pu-blikes
-  puff-re % puffre
-  pulv-re % pulvre
-  quä-lend-ste % quälend-ste
-  quä-lend-stem % quälend-stem
-  quä-lend-sten % quälend-sten
-  quä-lend-ster % quälend-ster
-  quä-lend-stes % quälend-stes
-  Ra-fa-el % Rafa-el
-  Ra-fa-els % Rafaels
-  Ra-pha-els % Ra-phaels
-  Rau-me % Raume
-  Räu-sche % Räusche
-  räusp-re % räuspre
-  re-vo-lu-tio-nä-re % re-vo-lu-tio-näre
-  re-vo-lu-tio-nä-rem % re-vo-lu-tio-närem
-  re-vo-lu-tio-nä-ren % re-vo-lu-tio-nären
-  re-vo-lu-tio-nä-rer % re-vo-lu-tio-närer
-  re-vo-lu-tio-nä-res % re-vo-lu-tio-näres
-  röch-le % röchle
-  Rös-chen % Röschen
-  Ru-in % Ruin
-  rui-nö-se % rui-nöse
-  rui-nö-sem % rui-nösem
-  rui-nö-sen % rui-nösen
-  rui-nö-ser % rui-nöser
-  rui-nö-ses % rui-nöses
-  run-der % runder
-  rü-stest % rüstest
-  rü-stet % rüstet
-  sai-so-nal % sai-sonal
-  sai-so-na-le % sai-sona-le
-  sai-so-na-lem % sai-sona-lem
-  sai-so-na-len % sai-sona-len
-  sai-so-na-ler % sai-sona-ler
-  sai-so-na-les % sai-sona-les
-  sa-lop-pe-rem % sa-lop-perem
-  sa-ni-tä-re % sa-ni-täre
-  schauk-le % schaukle
-  scheff-le % scheffle
-  scheit-re % scheitre
-  schie-^^ffest % schie^^ffest
-  schlap-pe-rem % schlap-perem
-  schlech-te-ren % schlech-teren
-  Schlen-dri-ans % Schlen-drians
-  schlich-te-ren % schlich-teren
-  schlie-^^ffest % schlie^^ffest
-  schmett-re % schmettre
-  schnö-dem % schnödem
-  schnörk-le % schnörkle
-  schnüff-le % schnüffle
-  Scho-bers % Schobers
-  schust-re % schustre
-  schwaf-le % schwafle
-  schwef-le % schwefle
-  schwel-te % schwelte
-  schwel-test % schweltest
-  schwel-tet % schweltet
-  se-kun-dä-re % se-kun-däre
-  se-kun-dä-rem % se-kun-därem
-  se-kun-dä-ren % se-kun-dären
-  se-kun-dä-rer % se-kun-därer
-  se-kun-dä-res % se-kun-däres
-  Se-ni-ors % Se-niors
-  Skan-di-na-vi-ens % Skan-di-na-viens
-  Skan-di-na-vi-er % Skan-di-na-vier
-  Skan-di-na-vi-ers % Skan-di-na-viers
-  Ski-er % Skier
-  So-li-tä-re % So-li-täre
-  Spa-ghet-ti % Spaghet-ti
-  Spa-ni-er % Spa-nier
-  Spa-ni-ers % Spa-niers
-  Spie-^^ffes % Spie^^ffes
-  spie-^^ffest % spie^^ffest
-  sprenk-le % sprenkle
-  sprie-^^ffest % sprie^^ffest
-  sprö-dem % sprödem
-  staff-le % staffle
-  stah-len % stahlen
-  stap-le % staple
-  sta-tio-nä-re % sta-tio-näre
-  sta-tio-nä-rem % sta-tio-närem
-  sta-tio-nä-ren % sta-tio-nären
-  sta-tio-nä-rer % sta-tio-närer
-  sta-tio-nä-res % sta-tio-näres
-  Ste-no-gra-phi-en % Ste-no-gra-phien
-  Ste-tho-skop % Stetho-skop
-  Ste-tho-sko-pe % Stetho-sko-pe
-  Ste-tho-sko-pen % Stetho-sko-pen
-  Ste-tho-skops % Stetho-skops
-  stie-^^ffest % stie^^ffest
-  Stot-te-rers % Stot-terers
-  stu-re % sture
-  stu-re-re % sture-re
-  stu-re-ren % sture-ren
-  stu-re-rer % sture-rer
-  sü-^^ffem % sü^^ffem
-  Ta-ba-ke % Ta-bake
-  ta-fe-le % ta-fele
-  taf-le % tafle
-  tag-ein % tagein
-  tak-le % takle
-  Tam-tam % Tamtam
-  Tam-tams % Tamtams
-  tätsch-le % tätschle
-  Te-le-fo-nat % Te-le-fonat
-  Te-le-fo-na-te % Te-le-fona-te
-  Te-le-fo-na-ten % Te-le-fona-ten
-  Te-le-fo-nats % Te-le-fonats
-  Te-nö-re % Tenö-re
-  Te-nö-ren % Tenö-ren
-  Ther-mo-sta-ten % Ther-mo-staten
-  tie-fer % tiefer
-  tie-fe-re % tiefe-re
-  tie-fe-rem % tiefe-rem
-  tie-fe-ren % tiefe-ren
-  tie-fe-rer % tiefe-rer
-  tie-fe-res % tiefe-res
-  töpf-re % töpfre
-  To-po-gra-phi-en % To-po-gra-phien
-  tö-rich-te-ren % tö-rich-teren
-  tork-le % torkle
-  to-ta-li-tä-re % to-ta-li-täre
-  to-ta-li-tä-re-ren % to-ta-li-täreren
-  trocke-ne % trockene
-  trocke-nem % trockenem
-  trocke-nen % trockenen
-  trocke-ner % trockener
-  trocke-ne-re % trockene-re
-  trocke-ne-rem % trockene-rem
-  trocke-ne-ren % trockene-ren
-  trocke-ne-rer % trockene-rer
-  trocke-ne-res % trockene-res
-  trocke-nes % trockenes
-  trü-ber % trüber
-  trü-be-re % trübe-re
-  trü-be-rem % trüber-em
-  trü-be-ren % trüber-en
-  trü-be-rer % trüber-er
-  trü-be-res % trüber-es
-  Tsche-chi-ens % Tsche-chiens
-  tusch-le % tuschle
-  Ty-po-gra-phi-en % Ty-po-gra-phien
-  ubi-qui-tä-re % ubi-qui-täre
-  uni-ver-si-tä-re % uni-ver-si-täre
-  Va-rie-té % Va-rieté
-  Va-rie-tés % Va-rietés
-  ver-dirbst % verdirbst
-  ver-dirbt % verdirbt
-  ver-drie-^^ffest % ver-drie^^ffest
-  ver-düst-re % ver-düstre
-  ver-ek-le % ver-ekle
-  ver-kupf-re % ver-kupfre
-  ver-pulv-re % ver-pulvre
-  ver-rä-te-ri-sche % ver-rä-te-rische
-  ver-rä-te-ri-schem % ver-rä-te-rischem
-  ver-rä-te-ri-schen % ver-rä-te-rischen
-  ver-rä-te-ri-scher % ver-rä-te-rischer
-  ver-rä-te-ri-sches % ver-rä-te-risches
-  ver-schie-de-ne-re % ver-schie-de-nere
-  ver-schie-de-ne-rem % ver-schie-de-nerem
-  ver-schie-de-ne-ren % ver-schie-de-neren
-  ver-schie-de-ne-rer % ver-schie-de-nerer
-  ver-schie-de-ne-res % ver-schie-de-neres
-  ver-schlech-terst % ver-schlechterst
-  ver-schlecht-re % ver-schlechtre
-  ver-übe-le % ver-übele
-  ver-wü-stest % ver-wüstest
-  Ve-te-ri-nä-re % Ve-te-ri-näre
-  Ve-te-ri-nä-ren % Ve-te-ri-nären
-  Vi-sio-nä-re % Vi-sio-näre
-  Vi-sio-nä-ren % Vi-sio-nären
-  voll-ends % vollends
-  Wah-len % Wahlen
-  Wäm-ser % Wämser
-  Wäm-sern % Wämsern
-  wa-rum % warum
-  watsch-le % watschle
-  We-ges % Weges
-  wei-^^ffem % wei^^ffem
-  weit-aus % weitaus
-  wett-re % wettre
-  Wie-de-hopf % Wie-dehopf
-  Wie-de-hop-fe % Wie-dehop-fe
-  Wie-de-hop-fen % Wie-dehop-fen
-  Wie-de-hopfs % Wie-dehopfs
-  wirb-le % wirble
-  wisp-re % wispre
-  woh-le-re % wohle-re
-  woh-le-ren % wohle-ren
-  wor-in % worin
-  wor-um % worum
-  wüh-lend-ste % wühlend-ste
-  wüh-lend-sten % wühlend-sten
-  wüh-lend-stes % wühlend-stes
-  Wun-sche % Wunsche
-  Wun-sches % Wunsches
-  würf-le % würfle
-  wü-stes % wüstes
-  wü-stest % wüstest
-  wü-ste-ste % wüste-ste
-  wü-ste-stem % wüste-stem
-  wü-ste-sten % wüste-sten
-  wü-ste-ster % wüste-ster
-  wü-ste-stes % wüste-stes
-  Zai-re % Zaire
-  zirk-le % zirkle
-  zisch-le % zischle
-  Zu-be-hö-re % Zu-be-höre
-  Zu-be-hö-ren % Zu-be-hören
-  Zuch-ten % Zuchten
-  zu-frie-de-ne-re % zu-frie-de-nere
-  zu-frie-de-ne-rem % zu-frie-de-nerem
-  zu-frie-de-ne-ren % zu-frie-de-neren
-  zu-frie-de-ne-rer % zu-frie-de-nerer
-  zu-frie-de-ne-res % zu-frie-de-neres
-  Zu-tat % Zutat
-  Zu-ta-ten % Zuta-ten
-  zweif-le % zweifle
-%
-%
-% fehlende Trennungen von zusammengesetzten Wörtern
-%
-  ab-dunk-le % ab-dunkle
-  ab-flie-^^ffest % ab-flie^^ffest
-  ab-ge-brüh-te-ren % ab-ge-brüh-teren
-  ab-gie-^^ffest % ab-gie^^ffest
-  ab-lie^^ff % ablie^^ff
-  ab-rü-stest % ab-rüstest
-  ab-schie-^^ffest % ab-schie^^ffest
-  ab-schlie-^^ffest % ab-schlie^^ffest
-  an-ek-le % an-ekle
-  an-ge-fault % an-gefault
-  an-ge-faul-te % an-gefaul-te
-  an-ge-faul-tem % an-gefaul-tem
-  an-ge-faul-ten % an-gefaul-ten
-  an-ge-faul-ter % an-gefaul-ter
-  an-ge-faul-tes % an-gefaul-tes
-  an-ge-klickt % an-geklickt
-  an-ge-klick-te % an-geklick-te
-  an-ge-klick-tem % an-geklick-tem
-  an-ge-klick-ten % an-geklick-ten
-  an-ge-klick-ter % an-geklick-ter
-  an-ge-klick-tes % an-geklick-tes
-  an-ge-pö-belt % an-gepö-belt
-  an-ge-pö-bel-te % an-gepö-bel-te
-  an-ge-pö-bel-tem % an-gepö-bel-tem
-  an-ge-pö-bel-ten % an-gepö-bel-ten
-  an-ge-pö-bel-ter % an-gepö-bel-ter
-  an-ge-pö-bel-tes % an-gepö-bel-tes
-  an-glot-ze % anglot-ze
-  an-glot-zen % anglot-zen
-  an-glot-zend % anglot-zend
-  an-glot-zen-de % anglot-zen-de
-  an-glot-zen-dem % anglot-zen-dem
-  an-glot-zen-den % anglot-zen-den
-  an-glot-zen-der % anglot-zen-der
-  an-glot-zen-des % anglot-zen-des
-  an-glot-zest % anglot-zest
-  an-glotzt % anglotzt
-  an-glotz-te % anglotz-te
-  an-glotz-ten % anglotz-ten
-  an-glotz-test % anglotz-test
-  an-glotz-tet % anglotz-tet
-  an-kä-me % an-käme
-  an-kä-men % an-kämen
-  an-klick-bar % anklick-bar
-  an-klick-ba-re % anklick-ba-re
-  an-klick-ba-rem % anklick-ba-rem
-  an-klick-ba-ren % anklick-ba-ren
-  an-klick-ba-rer % anklick-ba-rer
-  an-klick-ba-res % anklick-ba-res
-  an-klicke % anklicke
-  an-klicken % anklicken
-  an-klickend % anklickend
-  an-klicken-de % anklicken-de
-  an-klicken-dem % anklicken-dem
-  an-klicken-den % anklicken-den
-  an-klicken-der % anklicken-der
-  an-klicken-des % anklicken-des
-  an-klickst % anklickst
-  an-klickt % anklickt
-  an-klick-te % anklick-te
-  an-klick-ten % anklick-ten
-  an-klick-test % anklick-test
-  an-klick-tet % anklick-tet
-  an-läch-le % an-lächle
-  an-schie-^^ffest % an-schie^^ffest
-  an-schlie-^^ffest % an-schlie^^ffest
-  an-ti-kes % an-tikes
-  an-wink-le % an-winkle
-  an-zu-klicken % an-zuklicken
-  an-zu-klickend % an-zuklickend
-  an-zu-klicken-de % an-zuklicken-de
-  an-zu-klicken-dem % an-zuklicken-dem
-  an-zu-klicken-den % an-zuklicken-den
-  an-zu-klicken-der % an-zuklicken-der
-  an-zu-klicken-des % an-zuklicken-des
-  an-zu-nä-hern % an-zunä-hern
-  an-zu-nä-hernd % an-zunä-hernd
-  an-zu-nä-hern-de % an-zunä-hern-de
-  an-zu-nä-hern-dem % an-zunä-hern-dem
-  an-zu-nä-hern-den % an-zunä-hern-den
-  an-zu-nä-hern-der % an-zunä-hern-der
-  an-zu-nä-hern-des % an-zunä-hern-des
-  an-zweif-le % an-zweifle
-  Ar-bei-ter-schaft % Ar-beiter-schaft
-  Arsch-lö-cher % Arschlö-cher
-  Arsch-lö-chern % Arschlö-chern
-  Arsch-lochs % Arschlochs
-  auf-fal-lend-ste % auf-fallend-ste
-  auf-fal-lend-stem % auf-fallend-stem
-  auf-fal-lend-sten % auf-fallend-sten
-  auf-fal-lend-ster % auf-fallend-ster
-  auf-fal-lend-stes % auf-fallend-stes
-  auf-ge-bläh-te-ren % auf-ge-bläh-teren
-  auf-ge-weck-te-re % auf-ge-weck-tere
-  auf-ge-weck-te-rem % auf-ge-weck-terem
-  auf-ge-weck-te-ren % auf-ge-weck-teren
-  auf-ge-weck-te-rer % auf-ge-weck-terer
-  auf-ge-weck-te-res % auf-ge-weck-teres
-  auf-ge-wen-det % auf-ge-wendet
-  auf-ge-wen-de-te % auf-ge-wende-te
-  auf-ge-wen-de-tem % auf-ge-wende-tem
-  auf-ge-wen-de-ten % auf-ge-wende-ten
-  auf-ge-wen-de-ter % auf-ge-wende-ter
-  auf-ge-wen-de-tes % auf-ge-wende-tes
-  auf-gie-^^ffest % auf-gie^^ffest
-  auf-lie-^^ffe % auflie-^^ffe
-  auf-lie-^^ffen % auflie-^^ffen
-  auf-lie-^^ffest % auflie^^ffest
-  auf-lie-^^ffet % auflie-^^ffet
-  auf-rü-stest % auf-rüstest
-  auf-schie-^^ffest % auf-schie^^ffest
-  auf-schlie-^^ffest % auf-schlie^^ffest
-  auf-spie-^^ffest % auf-spie^^ffest
-  auf-stap-le % auf-staple
-  auf-staust % aufstaust
-  aus-flie-^^ffest % aus-flie^^ffest
-  aus-ge-koch-te-ren % aus-ge-koch-teren
-  aus-ge-nüch-tert % aus-genüch-tert
-  aus-ge-nüch-ter-te % aus-genüch-ter-te
-  aus-ge-nüch-ter-tem % aus-genüch-ter-tem
-  aus-ge-nüch-ter-ten % aus-genüch-ter-ten
-  aus-ge-nüch-ter-ter % aus-genüch-ter-ter
-  aus-ge-nüch-ter-tes % aus-genüch-ter-tes
-  aus-ge-nützt % aus-genützt
-  aus-ge-nütz-te % aus-genütz-te
-  aus-ge-nütz-tem % aus-genütz-tem
-  aus-ge-nütz-ten % aus-genütz-ten
-  aus-ge-nütz-ter % aus-genütz-ter
-  aus-ge-nütz-tes % aus-genütz-tes
-  aus-ge-schmück-te-re % aus-ge-schmück-tere
-  aus-ge-schmück-te-rem % aus-ge-schmück-terem
-  aus-ge-schmück-te-ren % aus-ge-schmück-teren
-  aus-ge-schmück-te-rer % aus-ge-schmück-terer
-  aus-ge-schmück-te-res % aus-ge-schmück-teres
-  aus-ge-such-te-ren % aus-ge-such-teren
-  aus-gie-^^ffest % aus-gie^^ffest
-  aus-höhl-te % aus-höhlte
-  aus-höhl-ten % aus-höhlten
-  aus-höhl-test % aus-höhltest
-  aus-höhl-tet % aus-höhltet
-  aus-lie-^^ffest % aus-lie^^ffest
-  aus-löff-le % aus-löffle
-  aus-rü-stest % aus-rüstest
-  aus-schlie-^^ffest % aus-schlie^^ffest
-  aus-stie-^^ffest % aus-stie^^ffest
-  aus-würf-le % aus-würfle
-  be-eh-re % beeh-re
-  be-eh-ren % beeh-ren
-  be-eh-rend % beeh-rend
-  be-eh-ren-de % beeh-ren-de
-  be-eh-ren-dem % beeh-ren-dem
-  be-eh-ren-den % beeh-ren-den
-  be-eh-ren-der % beeh-ren-der
-  be-eh-ren-des % beeh-ren-des
-  be-ehrst % beehrst
-  be-ehrt % beehrt
-  be-ehr-te % beehr-te
-  be-ehr-tem % beehr-tem
-  be-ehr-ten % beehr-ten
-  be-ehr-ter % beehr-ter
-  be-ehr-tes % beehr-tes
-  be-ehr-test % beehr-test
-  be-ehr-tet % beehr-tet
-  be-gie-^^ffest % be-gie^^ffest
-  be-hind-re % be-hindre
-  bei-pflich-te % beipflich-te
-  bei-pflich-ten % beipflich-ten
-  bei-pflich-tend % beipflich-tend
-  bei-pflich-ten-de % beipflich-ten-de
-  bei-pflich-ten-dem % beipflich-ten-dem
-  bei-pflich-ten-den % beipflich-ten-den
-  bei-pflich-ten-der % beipflich-ten-der
-  bei-pflich-ten-des % beipflich-ten-des
-  Bei-pflich-tens % Beipflich-tens
-  bei-pflich-test % beipflich-test
-  bei-pflich-tet % beipflich-tet
-  bei-pflich-te-te % beipflich-te-te
-  bei-pflich-te-ten % beipflich-te-ten
-  bei-pflich-te-test % beipflich-te-test
-  bei-pflich-te-tet % beipflich-te-tet
-  Bei-pflich-tung % Beipflich-tung
-  Bei-pflich-tun-gen % Beipflich-tun-gen
-  bei-zu-pflich-ten % bei-zupflich-ten
-  be-kä-me % be-käme
-  be-kä-men % be-kämen
-  be-läch-le % be-lächle
-  be-lie^^ff % belie^^ff
-  be-lie-^^ffe % belie-^^ffe
-  be-lie-^^ffen % belie-^^ffen
-  be-lie^^ffest % belie^^ffest
-  be-lie^^fft % belie^^fft
-  be-must-re % be-mustre
-  be-rät % berät
-  be-rätst % berätst
-  berg-ab % bergab
-  berg-an % bergan
-  be-schei-de-ne-re % be-schei-de-nere
-  be-schei-de-ne-rem % be-schei-de-nerem
-  be-schei-de-ne-ren % be-schei-de-neren
-  be-schei-de-ne-rer % be-schei-de-nerer
-  be-schei-de-ne-res % be-schei-de-neres
-  be-schie-^^ffest % be-schie^^ffest
-  be-schlie-^^ffest % be-schlie^^ffest
-  be-schränk-te-re % be-schränk-tere
-  be-schränk-te-rem % be-schränk-terem
-  be-schränk-te-ren % be-schränk-teren
-  be-schränk-te-rer % be-schränk-terer
-  be-schränk-te-res % be-schränk-teres
-  be-see-lend % be-seelend
-  be-see-len-de % be-seelen-de
-  be-see-len-dem % be-seelen-dem
-  be-see-len-den % be-seelen-den
-  be-see-len-der % be-seelen-der
-  be-see-len-des % be-seelen-des
-  be-stah-len % be-stahlen
-  be-zweif-le % be-zweifle
-  da-bei-blei-be % da-beiblei-be
-  da-bei-blei-ben % da-beiblei-ben
-  da-bei-blei-bend % da-beiblei-bend
-  da-bei-blei-ben-de % da-beiblei-ben-de
-  da-bei-blei-ben-dem % da-beiblei-ben-dem
-  da-bei-blei-ben-den % da-beiblei-ben-den
-  da-bei-blei-ben-der % da-beiblei-ben-der
-  da-bei-blei-ben-des % da-beiblei-ben-des
-  da-bei-bleibst % da-beibleibst
-  da-bei-bleibt % da-beibleibt
-  da-hin-glei-te % da-hinglei-te
-  da-hin-glei-ten % da-hinglei-ten
-  da-hin-glei-tend % da-hinglei-tend
-  da-hin-glei-ten-de % da-hinglei-ten-de
-  da-hin-glei-ten-dem % da-hinglei-ten-dem
-  da-hin-glei-ten-den % da-hinglei-ten-den
-  da-hin-glei-ten-der % da-hinglei-ten-der
-  da-hin-glei-ten-des % da-hinglei-ten-des
-  da-hin-glei-test % da-hinglei-test
-  da-hin-glei-tet % da-hinglei-tet
-  da-hin-ve-ge-tie-re % da-hinve-ge-tie-re
-  da-hin-ve-ge-tie-ren % da-hinve-ge-tie-ren
-  da-hin-ve-ge-tie-rend % da-hinve-ge-tie-rend
-  da-hin-ve-ge-tie-ren-de % da-hinve-ge-tie-ren-de
-  da-hin-ve-ge-tie-ren-dem % da-hinve-ge-tie-ren-dem
-  da-hin-ve-ge-tie-ren-den % da-hinve-ge-tie-ren-den
-  da-hin-ve-ge-tie-ren-der % da-hinve-ge-tie-ren-der
-  da-hin-ve-ge-tie-ren-des % da-hinve-ge-tie-ren-des
-  da-hin-ve-ge-tierst % da-hinve-ge-tierst
-  da-hin-ve-ge-tiert % da-hinve-ge-tiert
-  da-hin-ve-ge-tier-te % da-hinve-ge-tier-te
-  da-hin-ve-ge-tier-ten % da-hinve-ge-tier-ten
-  da-hin-ve-ge-tier-test % da-hinve-ge-tier-test
-  da-hin-ve-ge-tier-tet % da-hinve-ge-tier-tet
-  da-lag % dalag
-  da-la-gen % dala-gen
-  dem-ent-spre-chend % dement-spre-chend
-  dem-ent-spre-chen-de % dement-spre-chen-de
-  dem-ent-spre-chen-dem % dement-spre-chen-dem
-  dem-ent-spre-chen-den % dement-spre-chen-den
-  dem-ent-spre-chen-der % dement-spre-chen-der
-  dem-ent-spre-chen-des % dement-spre-chen-des
-  dem-je-ni-gen % demje-ni-gen
-  Dom-pfaff % Dompfaff
-  durch-flie-^^ffest % durch-flie^^ffest
-  durch-zu-at-men % durch-zuat-men
-  eben-er-dig % ebener-dig
-  eben-er-di-ge % ebener-di-ge
-  eben-er-di-gem % ebener-di-gem
-  eben-er-di-gen % ebener-di-gen
-  eben-er-di-ger % ebener-di-ger
-  eben-er-di-ges % ebener-di-ges
-  ein-eng-bar % eineng-bar
-  ein-eng-ba-re % eineng-ba-re
-  ein-eng-ba-rem % eineng-ba-rem
-  ein-eng-ba-ren % eineng-ba-ren
-  ein-eng-ba-rer % eineng-ba-rer
-  ein-eng-ba-res % eineng-ba-res
-  ein-en-ge % einen-ge
-  ein-en-gen % einen-gen
-  ein-en-gend % einen-gend
-  ein-en-gen-de % einen-gen-de
-  ein-en-gen-dem % einen-gen-dem
-  ein-en-gen-den % einen-gen-den
-  ein-en-gen-der % einen-gen-der
-  ein-en-gen-des % einen-gen-des
-  Ein-en-gens % Einen-gens
-  ein-engst % einengst
-  ein-engt % einengt
-  ein-eng-te % eineng-te
-  ein-eng-ten % eineng-ten
-  ein-eng-test % eineng-test
-  ein-eng-tet % eineng-tet
-  Ein-en-gung % Einen-gung
-  Ein-en-gun-gen % Einen-gun-gen
-  ein-flie-^^ffest % ein-flie^^ffest
-  ein-ge-hüllt % ein-gehüllt
-  ein-ge-hüll-te % ein-gehüll-te
-  ein-ge-hüll-tem % ein-gehüll-tem
-  ein-ge-hüll-ten % ein-gehüll-ten
-  ein-ge-hüll-ter % ein-gehüll-ter
-  ein-ge-hüll-tes % ein-gehüll-tes
-  ein-ge-schleu-ster % ein-ge-schleuster
-  ein-gie-^^ffest % ein-gie^^ffest
-  ein-lie-^^ffest % ein-lie^^ffest
-  ein-schie-^^ffest % ein-schie^^ffest
-  ein-schläf-re % ein-schläfre
-  ein-schlie-^^ffest % ein-schlie^^ffest
-  ein-schüch-terst % ein-schüchterst
-  ein-schücht-re % ein-schüchtre
-  ein-zu-eb-nen % ein-zueb-nen
-  ein-zu-eb-nend % ein-zueb-nend
-  ein-zu-eb-nen-de % ein-zueb-nen-de
-  ein-zu-eb-nen-dem % ein-zueb-nen-dem
-  ein-zu-eb-nen-den % ein-zueb-nen-den
-  ein-zu-eb-nen-der % ein-zueb-nen-der
-  ein-zu-eb-nen-des % ein-zueb-nen-des
-  ein-zu-en-gen % ein-zuen-gen
-  ein-zu-en-gend % ein-zuen-gend
-  ein-zu-en-gen-de % ein-zuen-gen-de
-  ein-zu-en-gen-dem % ein-zuen-gen-dem
-  ein-zu-en-gen-den % ein-zuen-gen-den
-  ein-zu-en-gen-der % ein-zuen-gen-der
-  ein-zu-en-gen-des % ein-zuen-gen-des
-  ein-zu-hül-len % ein-zuhül-len
-  ein-zu-hül-lend % ein-zuhül-lend
-  ein-zu-hül-len-de % ein-zuhül-len-de
-  ein-zu-hül-len-dem % ein-zuhül-len-dem
-  ein-zu-hül-len-den % ein-zuhül-len-den
-  ein-zu-hül-len-der % ein-zuhül-len-der
-  ein-zu-hül-len-des % ein-zuhül-len-des
-  ein-zu-räu-men % ein-zuräu-men
-  ein-zu-räu-mend % ein-zuräu-mend
-  ein-zu-räu-men-de % ein-zuräu-men-de
-  ein-zu-räu-men-dem % ein-zuräu-men-dem
-  ein-zu-räu-men-den % ein-zuräu-men-den
-  ein-zu-räu-men-der % ein-zuräu-men-der
-  ein-zu-räu-men-des % ein-zuräu-men-des
-  ein-zu-sau-gen % ein-zusau-gen
-  ein-zu-sau-gend % ein-zusau-gend
-  ein-zu-sau-gen-de % ein-zusau-gen-de
-  ein-zu-sau-gen-dem % ein-zusau-gen-dem
-  ein-zu-sau-gen-den % ein-zusau-gen-den
-  ein-zu-sau-gen-der % ein-zusau-gen-der
-  ein-zu-sau-gen-des % ein-zusau-gen-des
-  em-por-ge-blickt % em-por-geblickt
-  em-por-ge-blick-te % em-por-geblick-te
-  em-por-ge-blick-tem % em-por-geblick-tem
-  em-por-ge-blick-ten % em-por-geblick-ten
-  em-por-ge-blick-ter % em-por-geblick-ter
-  em-por-ge-blick-tes % em-por-geblick-tes
-  em-por-schie-^^ffest % em-por-schie^^ffest
-  ent-ei-le % entei-le
-  ent-ei-len % entei-len
-  ent-ei-lend % entei-lend
-  ent-ei-len-de % entei-len-de
-  ent-ei-len-dem % entei-len-dem
-  ent-ei-len-den % entei-len-den
-  ent-ei-len-der % entei-len-der
-  ent-ei-len-des % entei-len-des
-  ent-eilst % enteilst
-  ent-eilt % enteilt
-  ent-eil-te % enteil-te
-  ent-eil-tem % enteil-tem
-  ent-eil-ten % enteil-ten
-  ent-eil-ter % enteil-ter
-  ent-eil-tes % enteil-tes
-  ent-eil-test % enteil-test
-  ent-eil-tet % enteil-tet
-  ent-er-ben % enter-ben
-  ent-er-bend % enter-bend
-  ent-er-ben-de % enter-ben-de
-  ent-er-ben-dem % enter-ben-dem
-  ent-er-ben-den % enter-ben-den
-  ent-er-ben-der % enter-ben-der
-  ent-er-ben-des % enter-ben-des
-  ent-erbst % enterbst
-  ent-kä-me % ent-käme
-  ent-kä-men % ent-kämen
-  ent-lie^^ff % entlie^^ff
-  ent-lie-^^ffe % entlie-^^ffe
-  ent-lie-^^ffen % entlie-^^ffen
-  ent-lie-^^ffest % entlie^^ffest
-  ent-lie-^^ffet % entlie-^^ffet
-  ent-lie^^fft % entlie^^fft
-  ent-rü-stest % ent-rüstest
-  ent-schie-de-ne-re % ent-schie-de-nere
-  ent-schie-de-ne-rem % ent-schie-de-nerem
-  ent-schie-de-ne-ren % ent-schie-de-neren
-  ent-schie-de-ne-rer % ent-schie-de-nerer
-  ent-schie-de-ne-res % ent-schie-de-neres
-  ent-schlie-^^ffest % ent-schlie^^ffest
-  ent-sprie-^^ffest % ent-sprie^^ffest
-  er-ah-ne % erah-ne
-  er-ah-nen % erah-nen
-  er-ah-nend % erah-nend
-  er-ah-nen-de % erah-nen-de
-  er-ah-nen-dem % erah-nen-dem
-  er-ah-nen-den % erah-nen-den
-  er-ah-nen-der % erah-nen-der
-  er-ah-nen-des % erah-nen-des
-  er-ahnst % erahnst
-  er-ahnt % erahnt
-  er-ahn-te % erahn-te
-  er-ahn-tem % erahn-tem
-  er-ahn-ten % erahn-ten
-  er-ahn-ter % erahn-ter
-  er-ahn-tes % erahn-tes
-  er-ahn-test % erahn-test
-  er-ahn-tet % erahn-tet
-  er-bla^^fft % erbla^^fft
-  er-bla^^ff-te % erbla^^ff-te
-  er-bla^^ff-tem % erbla^^ff-tem
-  er-bla^^ff-ten % erbla^^ff-ten
-  er-bla^^ff-ter % erbla^^ff-ter
-  er-bla^^ff-tes % erbla^^ff-tes
-  er-bla^^ff-test % erbla^^ff-test
-  er-bla^^ff-tet % erbla^^ff-tet
-  er-fah-ren-ste % er-fah-renste
-  er-fah-ren-stem % er-fah-renstem
-  er-fah-ren-sten % er-fah-rensten
-  er-fah-ren-ster % er-fah-renster
-  er-fah-ren-stes % er-fah-renstes
-  er-fah-rungs-ge-mä-^^ffem % er-fah-rungs-ge-mä^^ffem
-  er-gie-^^ffest % er-gie^^ffest
-  er-heit-re % er-heitre
-  er-klett-re % er-klettre
-  er-leich-terst % er-leichterst
-  er-leicht-re % er-leichtre
-  er-lie-^^ffest % er-lie^^ffest
-  er-nüch-terst % er-nüchterst
-  er-nücht-re % er-nüchtre
-  er-ört-re % er-örtre
-  er-schie-^^ffest % er-schie^^ffest
-  er-schlie-^^ffest % er-schlie^^ffest
-  er-schrick % erschrick
-  er-schrickst % erschrickst
-  er-schrickt % erschrickt
-  er-schüt-te-re % er-schüt-tere
-  er-schütt-re % er-schüttre
-  er-wei-ter-bar % er-weiter-bar
-  er-wei-ter-ba-re % er-weiter-ba-re
-  er-wei-ter-ba-rem % er-weiter-ba-rem
-  er-wei-ter-ba-ren % er-weiter-ba-ren
-  er-wei-ter-ba-rer % er-weiter-ba-rer
-  er-wei-ter-ba-res % er-weiter-ba-res
-  Er-wei-ter-bar-keit % Er-weiter-bar-keit
-  er-weit-re % er-weitre
-  er-wünsch-te-ren % er-wünsch-teren
-  Fern-ost % Fernost
-  fern-öst-lich % fernöst-lich
-  fern-öst-li-che % fernöst-li-che
-  fern-öst-li-chem % fernöst-li-chem
-  fern-öst-li-chen % fernöst-li-chen
-  fern-öst-li-cher % fernöst-li-cher
-  fern-öst-li-ches % fernöst-li-ches
-  fort-ho-le % fortho-le
-  fort-ho-len % fortho-len
-  fort-ho-lend % fortho-lend
-  fort-ho-len-de % fortho-len-de
-  fort-ho-len-dem % fortho-len-dem
-  fort-ho-len-den % fortho-len-den
-  fort-ho-len-der % fortho-len-der
-  fort-ho-len-des % fortho-len-des
-  fort-holst % fortholst
-  fort-holt % fortholt
-  fort-hol-te % forthol-te
-  fort-hol-ten % forthol-ten
-  fort-hol-test % forthol-test
-  fort-hol-tet % forthol-tet
-  froh-locke % frohlocke
-  froh-locken % frohlocken
-  froh-lockend % frohlockend
-  froh-locken-de % frohlocken-de
-  froh-locken-dem % frohlocken-dem
-  froh-locken-den % frohlocken-den
-  froh-locken-der % frohlocken-der
-  froh-locken-des % frohlocken-des
-  froh-lockst % frohlockst
-  froh-lockt % frohlockt
-  froh-lock-te % frohlock-te
-  froh-lock-ten % frohlock-ten
-  froh-lock-test % frohlock-test
-  froh-lock-tet % frohlock-tet
-  furcht-er-re-gend % furchter-re-gend
-  furcht-er-re-gen-dem % furchter-re-gen-dem
-  furcht-er-re-gen-den % furchter-re-gen-den
-  furcht-er-re-gen-der % furchter-re-gen-der
-  ge-mei-ner-wei-se % ge-meiner-wei-se
-  ge-nau-so-schnell % ge-nau-soschnell
-  gleich-kä-me % gleich-käme
-  gleich-kä-men % gleich-kämen
-  gro-^^ffen-teils % gro^^ffen-teils
-  halb-dunk-le % halb-dunkle
-  halb-dunk-lem % halb-dunklem
-  halb-dunk-len % halb-dunklen
-  halb-dunk-les % halb-dunkles
-  Hand-um-dre-hen % Handum-dre-hen
-  her-aus-lie^^ff % her-auslie^^ff
-  her-aus-lie-^^ffe % her-auslie-^^ffe
-  her-aus-lie-^^ffen % her-auslie-^^ffen
-  her-aus-lie-^^ffest % her-auslie^^ffest
-  her-aus-lie^^fft % her-auslie^^fft
-  her-aus-schie-^^ffest % her-aus-schie^^ffest
-  her-aus-trat % her-austrat
-  her-aus-tra-ten % her-austra-ten
-  her-aus-tra-test % her-austra-test
-  her-aus-tra-tet % her-austra-tet
-  her-aus-tratst % her-austratst
-  her-aus-tre-te % her-austre-te
-  her-aus-tre-ten % her-austre-ten
-  her-aus-tre-tend % her-austre-tend
-  her-aus-tre-ten-de % her-austre-ten-de
-  her-aus-tre-ten-dem % her-austre-ten-dem
-  her-aus-tre-ten-den % her-austre-ten-den
-  her-aus-tre-ten-der % her-austre-ten-der
-  her-aus-tre-ten-des % her-austre-ten-des
-  her-aus-tre-tet % her-austre-tet
-  her-aus-tritt % her-austritt
-  her-aus-trittst % her-austrittst
-  her-vor-stie-^^ffest % her-vor-stie^^ffest
-  hilf-lo-se % hilflo-se
-  hilflo-sem % hilflo-sem
-  hilf-lo-sen % hilflo-sen
-  hilflo-ser % hilflo-ser
-  hilf-lo-se-re % hilflo-se-re
-  hilflo-se-rem % hilflo-se-rem
-  hilf-lo-se-ren % hilflo-se-ren
-  hilf-lo-se-rer % hilflo-se-rer
-  hilflo-se-res % hilflo-se-res
-  hilf-lo-ses % hilflo-ses
-  hilf-lo-se-ste % hilflo-se-ste
-  hilflo-se-stem % hilflo-se-stem
-  hilf-lo-se-sten % hilflo-se-sten
-  hilflo-se-ster % hilflo-se-ster
-  hilf-lo-se-stes % hilflo-se-stes
-  hin-aus-schie-^^ffest % hin-aus-schie^^ffest
-  hin-aus-trat % hin-austrat
-  hin-aus-tra-ten % hin-austra-ten
-  hin-aus-tra-test % hin-austra-test
-  hin-aus-tra-tet % hin-austra-tet
-  hin-aus-tratst % hin-austratst
-  hin-aus-tre-te % hin-austre-te
-  hin-aus-tre-ten % hin-austre-ten
-  hin-aus-tre-tend % hin-austre-tend
-  hin-aus-tre-ten-de % hin-austre-ten-de
-  hin-aus-tre-ten-dem % hin-austre-ten-dem
-  hin-aus-tre-ten-den % hin-austre-ten-den
-  hin-aus-tre-ten-der % hin-austre-ten-der
-  hin-aus-tre-ten-des % hin-austre-ten-des
-  hin-aus-tre-tet % hin-austre-tet
-  hin-aus-tru-gen % hin-austru-gen
-  hin-ein-sah % hin-einsah
-  hin-ein-sa-hen % hin-einsa-hen
-  hin-ein-sahst % hin-einsahst
-  hin-ein-saht % hin-einsaht
-  hin-ter-lie-^^ffest % hin-ter-lie^^ffest
-  hin-weg-dreht % hin-wegdreht
-  hoch-schie-^^ffest % hoch-schie^^ffest
-  hun-dert-zwan-zig % hun-dertzwan-zig
-  In-gang-set-zung % In-gangset-zung
-  In-gang-set-zun-gen % In-gangset-zun-gen
-  in-ji-zier-bar % inji-zier-bar
-  in-ji-zier-ba-re % inji-zier-ba-re
-  in-ji-zier-ba-rem % inji-zier-ba-rem
-  in-ji-zier-ba-ren % inji-zier-ba-ren
-  in-ji-zier-ba-rer % inji-zier-ba-rer
-  in-ji-zier-ba-res % inji-zier-ba-res
-  in-kom-pe-ten-te % in-kom-pe-tente
-  in-kom-pe-ten-tem % in-kom-pe-tentem
-  in-kom-pe-ten-ten % in-kom-pe-tenten
-  in-kom-pe-ten-ter % in-kom-pe-tenter
-  in-kom-pe-ten-tes % in-kom-pe-tentes
-  in-kor-rek-te-re % in-kor-rek-tere
-  in-kor-rek-te-rem % in-kor-rek-terem
-  in-kor-rek-te-ren % in-kor-rek-teren
-  in-kor-rek-te-rer % in-kor-rek-terer
-  in-kor-rek-te-res % in-kor-rek-teres
-  jahr-aus % jahraus
-  jahr-ein % jahrein
-  kurz-schlie-^^ffest % kurz-schlie^^ffest
-  laut-hals % lauthals
-  letzt-hin % letzthin
-  los-ei-se % losei-se
-  los-ei-sen % losei-sen
-  los-ei-send % losei-send
-  los-ei-sen-de % losei-sen-de
-  los-ei-sen-dem % losei-sen-dem
-  los-ei-sen-den % losei-sen-den
-  los-ei-sen-der % losei-sen-der
-  los-ei-sen-des % losei-sen-des
-  los-ei-sest % losei-sest
-  los-eist % loseist
-  los-ei-ste % losei-ste
-  los-ei-sten % losei-sten
-  los-ei-stest % losei-stest
-  los-ei-stet % losei-stet
-  los-lie^^ff % loslie^^ff
-  los-lie-^^ffe % loslie-^^ffe
-  los-lie-^^ffen % loslie-^^ffen
-  los-lie-^^ffest % loslie^^ffest
-  los-lie^^fft % loslie^^fft
-  mit-hält % mithält
-  mit-hältst % mithältst
-  mit-kä-me % mit-käme
-  mit-kä-men % mit-kämen
-  mit-sen-de % mitsen-de
-  mit-sen-den % mitsen-den
-  mit-sen-dend % mitsen-dend
-  mit-sen-den-de % mitsen-den-de
-  mit-sen-den-dem % mitsen-den-dem
-  mit-sen-den-den % mitsen-den-den
-  mit-sen-den-der % mitsen-den-der
-  mit-sen-den-des % mitsen-den-des
-  mit-sen-dest % mitsen-dest
-  mit-sen-det % mitsen-det
-  nach-kä-me % nach-käme
-  nach-kä-men % nach-kämen
-  nach-kä-mest % nach-kämest
-  nach-kä-met % nach-kämet
-  nach-lie^^ff % nachlie^^ff
-  nach-lie-^^ffe % nachlie-^^ffe
-  nach-lie-^^ffen % nachlie-^^ffen
-  nach-lie-^^ffest % nachlie^^ffest
-  nach-lie^^fft % nachlie^^fft
-  Nach-mit-ta-ge % Nach-mit-tage
-  Nach-mit-ta-gen % Nach-mit-tagen
-  Nach-ruhm % Nachruhm
-  Nach-ruhms % Nachruhms
-  nach-rü-stest % nach-rüstest
-  nach-träu-mend % nachträu-mend
-  nach-träu-men-de % nachträu-men-de
-  nach-träu-men-dem % nachträu-men-dem
-  nach-träu-men-den % nachträu-men-den
-  nach-träu-men-der % nachträu-men-der
-  nach-träu-men-des % nachträu-men-des
-  nach-träumst % nachträumst
-  nach-träumt % nachträumt
-  nach-träum-te % nachträum-te
-  nach-träum-ten % nachträum-ten
-  nach-träum-test % nachträum-test
-  nach-träum-tet % nachträum-tet
-  nach-trau-re % nachtrau-re
-  nach-zu-ah-men % nach-zuah-men
-  nach-zu-ah-mend % nach-zuah-mend
-  nach-zu-ah-men-de % nach-zuah-men-de
-  nach-zu-ah-men-dem % nach-zuah-men-dem
-  nach-zu-ah-men-den % nach-zuah-men-den
-  nach-zu-ah-men-der % nach-zuah-men-der
-  nach-zu-ah-men-des % nach-zuah-men-des
-  Nah-ost % Nahost
-  Nichts-tun % Nichtstun
-  nie-der-ge-drück-te-re % nie-der-ge-drück-tere
-  nie-der-ge-drück-te-rem % nie-der-ge-drück-terem
-  nie-der-ge-drück-te-ren % nie-der-ge-drück-teren
-  nie-der-ge-drück-te-rer % nie-der-ge-drück-terer
-  nie-der-ge-drück-te-res % nie-der-ge-drück-teres
-  nie-der-lie-^^ffest % nie-der-lie^^ffest
-  nie-der-schie-^^ffest % nie-der-schie^^ffest
-  nie-der-schmett-re % nie-der-schmettre
-  non-plus-ul-tra % non-plusul-tra
-  Rat-schlä-ge % Ratschlä-ge
-  Rat-schlä-gen % Ratschlä-gen
-  re-ak-tio-nä-re % re-ak-tio-näre
-  re-ak-tio-nä-rem % re-ak-tio-närem
-  re-ak-tio-nä-ren % re-ak-tio-nären
-  re-ak-tio-nä-rer % re-ak-tio-närer
-  re-ak-tio-nä-re-re % re-ak-tio-näre-re
-  re-ak-tio-nä-re-rem % re-ak-tio-näre-rem
-  re-ak-tio-nä-re-ren % re-ak-tio-näre-ren
-  re-ak-tio-nä-re-rer % re-ak-tio-näre-rer
-  re-ak-tio-nä-re-res % re-ak-tio-näre-res
-  re-ak-tio-nä-res % re-ak-tio-näres
-  rechts-um % rechtsum
-  re-in-ve-stiert % rein-ve-stiert
-  schlaf-lo-se % schlaflo-se
-  schlaf-lo-sem % schlaflo-sem
-  schlaf-lo-sen % schlaflo-sen
-  schlaf-lo-ser % schlaflo-ser
-  schlaf-lo-ses % schlaflo-ses
-  über-a^^ff % übera^^ff
-  über-a^^fft % übera^^fft
-  über-dachst % überdachst
-  über-flie-^^ffest % über-flie^^ffest
-  über-fütt-re % über-füttre
-  über-gab % übergab
-  über-ge-blie-be-nen % über-geblie-be-nen
-  über-gie-^^ffest % über-gie^^ffest
-  über-klett-re % über-klettre
-  über-lie-^^ffest % über-lie^^ffest
-  über-schie-^^ffest % über-schie^^ffest
-  über-tölp-le % über-tölple
-  um-gie-^^ffest % um-gie^^ffest
-  um-rü-stest % um-rüstest
-  um-schlie-^^ffest % um-schlie^^ffest
-  un-ab-läs-sig % un-abläs-sig
-  un-ab-läs-si-ge % un-abläs-si-ge
-  un-ab-läs-si-gem % un-abläs-si-gem
-  un-ab-läs-si-gen % un-abläs-si-gen
-  un-ab-läs-si-ger % un-abläs-si-ger
-  un-ab-läs-si-ges % un-abläs-si-ges
-  un-an-ge-brach-te-ren % un-an-ge-brach-teren
-  un-at-trak-tiv % unat-trak-tiv
-  un-at-trak-ti-ve % unat-trak-ti-ve
-  un-at-trak-ti-vem % unat-trak-ti-vem
-  un-at-trak-ti-ven % unat-trak-ti-ven
-  un-at-trak-ti-ver % unat-trak-ti-ver
-  un-at-trak-ti-ve-re % unat-trak-ti-ve-re
-  un-at-trak-ti-ves % unat-trak-ti-ves
-  un-at-trak-tiv-ste % unat-trak-tiv-ste
-  un-at-trak-tiv-stem % unat-trak-tiv-stem
-  un-at-trak-tiv-sten % unat-trak-tiv-sten
-  un-at-trak-tiv-ster % unat-trak-tiv-ster
-  un-at-trak-tiv-stes % unat-trak-tiv-stes
-  un-be-dach-te-ren % un-be-dach-teren
-  un-be-herrsch-te-ren % un-be-herrsch-teren
-  un-be-schei-de-ne-re % un-be-schei-de-nere
-  un-be-schei-de-ne-rem % un-be-schei-de-nerem
-  un-be-schei-de-ne-ren % un-be-schei-de-neren
-  un-be-schei-de-ne-rer % un-be-schei-de-nerer
-  un-be-schei-de-ne-res % un-be-schei-de-neres
-  un-be-schränk-te-re % un-be-schränk-tere
-  un-be-schränk-te-rem % un-be-schränk-terem
-  un-be-schränk-te-ren % un-be-schränk-teren
-  un-be-schränk-te-rer % un-be-schränk-terer
-  un-be-schränk-te-res % un-be-schränk-teres
-  un-be-wach-te-ren % un-be-wach-teren
-  un-dich-te-ren % un-dich-teren
-  un-ech-te-ren % un-ech-teren
-  un-ent-schie-de-ne-re % un-ent-schie-de-nere
-  un-ent-schie-de-ne-rem % un-ent-schie-de-nerem
-  un-ent-schie-de-ne-ren % un-ent-schie-de-neren
-  un-ent-schie-de-ne-rer % un-ent-schie-de-nerer
-  un-ent-schie-de-ne-res % un-ent-schie-de-neres
-  un-er-fah-ren-ste % un-er-fah-renste
-  un-er-fah-ren-stem % un-er-fah-renstem
-  un-er-fah-ren-sten % un-er-fah-rensten
-  un-er-fah-ren-ster % un-er-fah-renster
-  un-er-fah-ren-stes % un-er-fah-renstes
-  un-er-reich-te-ren % un-er-reich-teren
-  un-er-wünsch-te-ren % un-er-wünsch-teren
-  un-fai-re % un-faire
-  un-fein-ste % unfein-ste
-  un-fein-stem % unfein-stem
-  un-fein-sten % unfein-sten
-  un-fein-ster % unfein-ster
-  un-fein-stes % unfein-stes
-  un-fle-xi-blem % un-fle-xiblem
-  un-fle-xi-blen % un-fle-xiblen
-  un-fle-xi-bler % un-fle-xibler
-  un-fle-xi-ble-re % un-fle-xible-re
-  un-fle-xi-ble-rem % un-fle-xible-rem
-  un-fle-xi-ble-ren % un-fle-xible-ren
-  un-fle-xi-ble-res % un-fle-xible-res
-  un-fle-xi-bles % un-fle-xibles
-  un-ge-rech-te-ren % un-ge-rech-teren
-  un-ge-schick-te-re % un-ge-schick-tere
-  un-ge-schick-te-rem % un-ge-schick-terem
-  un-ge-schick-te-ren % un-ge-schick-teren
-  un-ge-schick-te-rer % un-ge-schick-terer
-  un-ge-schick-te-res % un-ge-schick-teres
-  un-ge-woll-te-re % un-ge-woll-tere
-  un-ge-woll-te-rem % un-ge-woll-terem
-  un-ge-woll-te-ren % un-ge-woll-teren
-  un-ge-woll-te-rer % un-ge-woll-terer
-  un-ge-woll-te-res % un-ge-woll-teres
-  un-ge-woll-te-ste % un-ge-woll-teste
-  un-ge-woll-te-stem % un-ge-woll-testem
-  un-ge-woll-te-sten % un-ge-woll-testen
-  un-ge-woll-te-ster % un-ge-woll-tester
-  un-ge-woll-te-stes % un-ge-woll-testes
-  un-li-mi-tiert % un-limi-tiert
-  un-li-mi-tier-te % un-limi-tier-te
-  un-li-mi-tier-tem % un-limi-tier-tem
-  un-li-mi-tier-ten % un-limi-tier-ten
-  un-li-mi-tier-ter % un-limi-tier-ter
-  un-li-mi-tier-tes % un-limi-tier-tes
-  Un-men-schen % Un-menschen
-  un-pa-trio-tisch % un-patrio-tisch
-  un-pa-trio-ti-sche % un-patrio-ti-sche
-  un-pa-trio-ti-schem % un-patrio-ti-schem
-  un-pa-trio-ti-schen % un-patrio-ti-schen
-  un-pa-trio-ti-scher % un-patrio-ti-scher
-  un-pa-trio-ti-sche-re % un-patrio-ti-sche-re
-  un-pa-trio-ti-sche-rem % un-patrio-ti-sche-rem
-  un-pa-trio-ti-sche-ren % un-patrio-ti-sche-ren
-  un-pa-trio-ti-sche-rer % un-patrio-ti-sche-rer
-  un-pa-trio-ti-sche-res % un-patrio-ti-sche-res
-  un-pa-trio-ti-sches % un-patrio-ti-sches
-  un-pa-trio-tisch-ste % un-patrio-tisch-ste
-  un-pa-trio-tisch-stem % un-patrio-tisch-stem
-  un-pa-trio-tisch-sten % un-patrio-tisch-sten
-  un-pa-trio-tisch-ster % un-patrio-tisch-ster
-  un-pa-trio-tisch-stes % un-patrio-tisch-stes
-  un-ser-ei-ner % un-serei-ner
-  un-ter-brecht % un-terbrecht
-  un-ter-höh-le % unter-höh-le
-  un-ter-höh-len % unter-höh-len
-  un-ter-höh-lend % unter-höh-lend
-  un-ter-höh-len-de % unter-höh-len-de
-  un-ter-höh-len-dem % unter-höh-len-dem
-  un-ter-höh-len-den % unter-höh-len-den
-  un-ter-höh-len-der % unter-höh-len-der
-  un-ter-höh-len-des % unter-höh-len-des
-  un-ter-höhlst % unter-höhlst
-  un-ter-höhlt % unter-höhlt
-  un-ter-höhl-te % unter-höhlte
-  un-ter-höhl-tem % unter-höhltem
-  un-ter-höhl-ten % unter-höhlten
-  un-ter-höhl-ter % unter-höhlter
-  un-ter-höhl-tes % unter-höhltes
-  un-ter-höhl-test % unter-höhltest
-  un-ter-höhl-tet % unter-höhltet
-  un-ter-lie-^^ffest % un-ter-lie^^ffest
-  un-tie-fer % un-tiefer
-  un-tie-fe-re % un-tiefe-re
-  un-tie-fe-rem % un-tiefe-rem
-  un-tie-fe-ren % un-tiefe-ren
-  un-tie-fe-rer % un-tiefe-rer
-  un-tie-fe-res % un-tiefe-res
-  un-trink-bar % untrink-bar
-  un-trink-ba-re % untrink-ba-re
-  un-trink-ba-rem % untrink-ba-rem
-  un-trink-ba-ren % untrink-ba-ren
-  un-trink-ba-rer % untrink-ba-rer
-  un-trink-ba-res % untrink-ba-res
-  un-trüg-lich % untrüg-lich
-  un-trüg-li-che % untrüg-li-che
-  un-trüg-li-chem % untrüg-li-chem
-  un-trüg-li-chen % untrüg-li-chen
-  un-trüg-li-cher % untrüg-li-cher
-  un-trüg-li-ches % untrüg-li-ches
-  un-ver-fälsch-te-ren % un-ver-fälsch-teren
-  un-zu-frie-de-ne-re % un-zu-frie-de-nere
-  un-zu-frie-de-ne-rem % un-zu-frie-de-nerem
-  un-zu-frie-de-ne-ren % un-zu-frie-de-neren
-  un-zu-frie-de-ne-rer % un-zu-frie-de-nerer
-  un-zu-frie-de-ne-res % un-zu-frie-de-neres
-  ur-äl-te-ste % uräl-te-ste
-  ur-äl-te-stem % uräl-te-stem
-  ur-äl-te-sten % uräl-te-sten
-  ur-äl-te-ster % uräl-te-ster
-  ur-äl-te-stes % uräl-te-stes
-  ur-auf-ge-führt % urauf-ge-führt
-  ur-auf-ge-führ-te % urauf-ge-führ-te
-  ur-auf-ge-führ-tem % urauf-ge-führ-tem
-  ur-auf-ge-führ-ten % urauf-ge-führ-ten
-  ur-auf-ge-führ-ter % urauf-ge-führ-ter
-  ur-auf-ge-führ-tes % urauf-ge-führ-tes
-  ver-brecht % verbrecht
-  ver-breit-re % ver-breitre
-  ver-darbt % verdarbt
-  ver-dunk-le % ver-dunkle
-  ver-fälsch-te-ren % ver-fälsch-teren
-  ver-flie-^^ffest % ver-flie^^ffest
-  ver-fluch-te-ren % ver-fluch-teren
-  ver-fütt-re % ver-füttre
-  ver-gie-^^ffest % ver-gie^^ffest
-  ver-hätsch-le % ver-hätschle
-  ver-hie-^^ffest % ver-hie^^ffest
-  ver-hind-re % ver-hindre
-  ver-kör-pe-re % ver-kör-pere
-  ver-lie-^^ffest % ver-lie^^ffest
-  ver-lort % verlort
-  ver-mind-re % ver-mindre
-  ver-schauk-le % ver-schaukle
-  ver-schie-^^ffest % ver-schie^^ffest
-  ver-schlie-^^ffest % ver-schlie^^ffest
-  ver-starb % verstarb
-  ver-star-ben % verstar-ben
-  ver-starbst % verstarbst
-  ver-starbt % verstarbt
-  ver-staust % verstaust
-  ver-steck-te-re % ver-steck-tere
-  ver-steck-te-rem % ver-steck-terem
-  ver-steck-te-ren % ver-steck-teren
-  ver-steck-te-rer % ver-steck-terer
-  ver-steck-te-res % ver-steck-teres
-  ver-stie-^^ffest % ver-stie^^ffest
-  ver-strick-te-re % ver-strick-tere
-  ver-strick-te-rem % ver-strick-terem
-  ver-strick-te-ren % ver-strick-teren
-  ver-strick-te-rer % ver-strick-terer
-  ver-strick-te-res % ver-strick-teres
-  ver-zweif-le % ver-zweifle
-  Ve-te-ran % Ve-teran
-  voll-auf % vollauf
-  voll-en-de % vollen-de
-  voll-en-den % vollen-den
-  voll-en-dend % vollen-dend
-  voll-en-den-de % vollen-den-de
-  voll-en-den-dem % vollen-den-dem
-  voll-en-den-den % vollen-den-den
-  voll-en-den-der % vollen-den-der
-  voll-en-den-des % vollen-den-des
-  Voll-en-dens % Vollen-dens
-  voll-en-dest % vollen-dest
-  voll-en-det % vollen-det
-  voll-en-de-te % vollen-de-te
-  voll-en-de-tem % vollen-de-tem
-  voll-en-de-ten % vollen-de-ten
-  voll-en-de-ter % vollen-de-ter
-  voll-en-de-tes % vollen-de-tes
-  voll-en-de-test % vollen-de-test
-  voll-en-de-tet % vollen-de-tet
-  voll-en-det-sten % vollen-det-sten
-  Voll-en-dung % Vollen-dung
-  Voll-en-dun-gen % Vollen-dun-gen
-  vor-aus-ei-le % vor-ausei-le
-  vor-aus-ei-len % vor-ausei-len
-  vor-aus-ei-lend % vor-ausei-lend
-  vor-aus-ei-len-de % vor-ausei-len-de
-  vor-aus-ei-len-dem % vor-ausei-len-dem
-  vor-aus-ei-len-den % vor-ausei-len-den
-  vor-aus-ei-len-der % vor-ausei-len-der
-  vor-aus-ei-len-des % vor-ausei-len-des
-  vor-aus-eilst % vor-auseilst
-  vor-aus-eilt % vor-auseilt
-  vor-aus-eil-te % vor-auseil-te
-  vor-aus-eil-ten % vor-auseil-ten
-  vor-aus-eil-test % vor-auseil-test
-  vor-aus-eil-tet % vor-auseil-tet
-  vor-aus-zu-ah-nen % vor-aus-zuah-nen
-  vor-bei-la^^fft % vor-beila^^fft
-  vor-bei-schie-^^ffest % vor-bei-schie^^ffest
-  vor-gauk-le % vor-gaukle
-  vor-ge-rück-te-ren % vor-ge-rück-teren
-  vor-ge-strig % vor-gestrig
-  vor-ge-stri-ge % vor-gestri-ge
-  vor-ge-stri-gem % vor-gestri-gem
-  vor-ge-stri-gen % vor-gestri-gen
-  vor-ge-stri-ger % vor-gestri-ger
-  vor-ge-stri-ges % vor-gestri-ges
-  vor-kä-me % vor-käme
-  Vor-mit-ta-ge % Vor-mit-tage
-  Vor-mit-ta-gen % Vor-mit-tagen
-  Vor-mit-ta-ges % Vor-mit-tages
-  vor-schie-^^ffest % vor-schie^^ffest
-  vor-zu-mer-ken % vorzu-mer-ken
-  vor-zu-mer-kend % vorzu-mer-kend
-  vor-zu-mer-ken-de % vorzu-mer-ken-de
-  vor-zu-mer-ken-dem % vorzu-mer-ken-dem
-  vor-zu-mer-ken-den % vorzu-mer-ken-den
-  vor-zu-mer-ken-der % vorzu-mer-ken-der
-  vor-zu-mer-ken-des % vorzu-mer-ken-des
-  vor-zu-täu-schen % vor-zutäu-schen
-  vor-zu-täu-schend % vor-zutäu-schend
-  vor-zu-täu-schen-de % vor-zutäu-schen-de
-  vor-zu-täu-schen-dem % vor-zutäu-schen-dem
-  vor-zu-täu-schen-den % vor-zutäu-schen-den
-  vor-zu-täu-schen-der % vor-zutäu-schen-der
-  vor-zu-täu-schen-des % vor-zutäu-schen-des
-  weg-schlie-^^ffest % weg-schlie^^ffest
-  weg-strei-che % wegstrei-che
-  weg-strei-chen % wegstrei-chen
-  weg-strei-chend % wegstrei-chend
-  weg-strei-chen-de % wegstrei-chen-de
-  weg-strei-chen-dem % wegstrei-chen-dem
-  weg-strei-chen-den % wegstrei-chen-den
-  weg-strei-chen-der % wegstrei-chen-der
-  weg-strei-chen-des % wegstrei-chen-des
-  weg-streichst % wegstreichst
-  weg-streicht % wegstreicht
-  wei-ter-flie-^^ffest % wei-ter-flie^^ffest
-  wei-ter-zu-ma-chen % wei-terzu-ma-chen
-  wei-ter-zu-ma-chend % wei-terzu-ma-chend
-  wei-ter-zu-ma-chen-de % wei-terzu-ma-chen-de
-  wei-ter-zu-ma-chen-dem % wei-terzu-ma-chen-dem
-  wei-ter-zu-ma-chen-den % wei-terzu-ma-chen-den
-  wei-ter-zu-ma-chen-der % wei-terzu-ma-chen-der
-  wei-ter-zu-ma-chen-des % wei-terzu-ma-chen-des
-  Welt-all % Weltall
-  Welt-alls % Weltalls
-  wett-rü-stest % wett-rüstest
-  wohl-be-dach-te-ren % wohl-be-dach-teren
-  zer-brecht % zerbrecht
-  zer-drück-te-re % zer-drück-tere
-  zer-drück-te-rem % zer-drück-terem
-  zer-drück-te-ren % zer-drück-teren
-  zer-drück-te-rer % zer-drück-terer
-  zer-drück-te-res % zer-drück-teres
-  zer-fah-ren-ste % zer-fah-renste
-  zer-fah-ren-stem % zer-fah-renstem
-  zer-fah-ren-sten % zer-fah-rensten
-  zer-fah-ren-ster % zer-fah-renster
-  zer-fah-ren-stes % zer-fah-renstes
-  zer-flie-^^ffest % zer-flie^^ffest
-  zer-knick-te-re % zer-knick-tere
-  zer-knick-te-rem % zer-knick-terem
-  zer-knick-te-ren % zer-knick-teren
-  zer-knick-te-rer % zer-knick-terer
-  zer-knick-te-res % zer-knick-teres
-  zer-lie-^^ffest % zer-lie^^ffest
-  zer-schie-^^ffest % zer-schie^^ffest
-  zer-schmett-re % zer-schmettre
-  zer-stie-^^ffest % zer-stie^^ffest
-  zu-flie-^^ffest % zu-flie^^ffest
-  zu-flüst-re % zu-flüstre
-  zu-gabt % zugabt
-  zu-gie-^^ffest % zu-gie^^ffest
-  zu-in-nerst % zuin-nerst
-  zu-läch-le % zu-lächle
-  zu-lie^^ff % zulie^^ff
-  zu-lie-^^ffe % zulie-^^ffe
-  zu-lie-^^ffen % zulie-^^ffen
-  zu-lie-^^ffest % zulie^^ffest
-  zu-lie^^fft % zulie^^fft
-  zu-nä-he % zunä-he
-  zu-nä-hen % zunä-hen
-  zu-nä-hend % zunä-hend
-  zu-nä-hen-de % zunä-hen-de
-  zu-nä-hen-dem % zunä-hen-dem
-  zu-nä-hen-den % zunä-hen-den
-  zu-nä-hen-der % zunä-hen-der
-  zu-nä-hen-des % zunä-hen-des
-  zu-nähst % zunähst
-  zu-näht % zunäht
-  zu-näh-te % zunäh-te
-  zu-näh-ten % zunäh-ten
-  zu-näh-test % zunäh-test
-  zu-näh-tet % zunäh-tet
-  zu-rü-stest % zu-rüstest
-  zu-sam-men-flie-^^ffest % zu-sam-men-flie^^ffest
-  zu-schie-^^ffest % zu-schie^^ffest
-  zu-schlie-^^ffest % zu-schlie^^ffest
-  zwei-fels-oh-ne % zwei-felsoh-ne
-  zwei-hän-dig % zweihän-dig
-  zwei-hän-di-ge % zweihän-di-ge
-  zwei-hän-di-gem % zweihän-di-gem
-  zwei-hän-di-gen % zweihän-di-gen
-  zwei-hän-di-ger % zweihän-di-ger
-  zwei-hän-di-ges % zweihän-di-ges
-%
-%
-% fehlende Trennungen ausgewählter Komposita
-%
-  Arz-nei-schrank % Arzneischrank
-  Ei-er-uhr % Eier-uhr
-  Ei-er-uh-ren % Eier-uh-ren
-  Fach-ärz-te % Fachärz-te
-  Fach-ärz-ten % Fachärz-ten
-  Fach-ärz-tin % Fachärz-tin
-  Fach-ärz-tin-nen % Fachärz-tin-nen
-  Fern-glä-ser % Fernglä-ser
-  Fleisch-wolf % Fleischwolf
-  Froh-na-tur % Frohna-tur
-  Froh-na-tu-ren % Frohna-tu-ren
-  fünf-ein-halb % fünfein-halb
-  Glatt-eis % Glatteis
-  Glatt-ei-ses % Glattei-ses
-  Ha-sel-nüs-se % Ha-selnüs-se
-  Ha-sel-nüs-sen % Ha-selnüs-sen
-  Haupt-ein-gang % Hauptein-gang
-  Haupt-ein-gän-ge % Hauptein-gän-ge
-  Haupt-ein-gän-gen % Hauptein-gän-gen
-  Haupt-ein-gangs % Hauptein-gangs
-  him-mel-blaue % him-melblaue
-  him-mel-blau-em % him-melblau-em
-  him-mel-blau-en % him-melblau-en
-  him-mel-blau-er % him-melblau-er
-  him-mel-blau-es % him-melblau-es
-  Kehr-sei-te % Kehrsei-te
-  Kehr-sei-ten % Kehrsei-ten
-  Kraft-akt % Kraftakt
-  Lehr-äm-ter % Lehräm-ter
-  Mai-glöck-chen % Maiglöck-chen
-  Mai-glöck-chens % Maiglöck-chens
-  Maul-esel % Maulesel
-  Maul-eseln % Mauleseln
-  Maul-esels % Maulesels
-  Meer-en-gen % Meeren-gen
-  Wal-nüs-se % Walnüs-se
-  Wal-nüs-sen % Walnüs-sen
-}
-
-\endgroup
-
-\endinput
-
-%%% Local Variables:
-%%% mode: tex
-%%% coding: latin-1
-%%% End:
index 7cc5466..fba3e8d 100644 (file)
@@ -40,13 +40,13 @@ while (<>) {
   s/\\[^123456\s{]+//g;
   # remove all paired { ... }
   1 while s/{(.*?)}/\1/g;
-  # skip lines which now have only whitespace before `&'
+  # skip lines which now have only whitespace before '&'
   next if m/^\s*&/;
   # remove comments
   s/%.*//;
   # remove trailing whitespace
   s/\s*$//;
-  # remove trailing `*' (used as a marker in the document)
+  # remove trailing '*' (used as a marker in the document)
   s/\*$//;
   # split at whitespace
   @field = split(' ');
@@ -69,7 +69,7 @@ while (<>) {
     }
   }
   else {
-    # for `&', split at `&' with trailing whitespace
+    # for '&', split at '&' with trailing whitespace
     @field = split(/&\s*/);
     print "  $field[1]\n";
   }
index 1996317..3f3075c 100644 (file)
@@ -1,21 +1,25 @@
-% Hyphenation exceptions for US English, based on the hyphenation exception
-% log article in TUGBoat.
+% Hyphenation exceptions for US English,
+% based on hyphenation exception log articles in TUGboat.
 %
-% Copyright 2007 TeX Users Group.
+% Copyright 2008 TeX Users Group.
 % You may freely use, modify and/or distribute this file.
 %
 % This is an automatically generated file.  Do not edit!
 %
-% Please contact Barbara Beeton <bnb@ams.org> for corrections and omissions.
+% Please contact the TUGboat editorial staff <tugboat@tug.org>
+% for corrections and omissions.
 
 \hyphenation{
   acad-e-my
   acad-e-mies
   ac-cu-sa-tive
   acro-nym
+  acro-nyms
   acryl-amide
   acryl-amides
   acryl-alde-hyde
+  acu-punc-ture
+  acu-punc-tur-ist
   add-a-ble
   add-i-ble
   adren-a-line
   al-ge-bra-i-cal-ly
   am-phet-a-mine
   am-phet-a-mines
+  anach-ro-nism
+  anach-ro-nis-tic
   an-a-lyse
   an-a-lysed
   analy-ses
+  analy-sis
+  an-eu-rysm
+  an-eu-rysms
+  an-eu-rys-mal
   an-iso-trop-ic
   an-iso-trop-i-cal-ly
   an-isot-ro-pism
   an-isot-ropy
-  anom-aly
-  anom-alies
+  an-ni-ver-sary
+  an-ni-ver-saries
+  anom-a-ly
+  anom-a-lies
   anti-deriv-a-tive
   anti-deriv-a-tives
   anti-holo-mor-phic
   an-tin-o-my
   an-tin-o-mies
-  an-ti-nu-clear
-  an-ti-nu-cle-on
-  an-ti-rev-o-lu-tion-ary
+  anti-nu-clear
+  anti-nu-cle-on
+  anti-rev-o-lu-tion-ary
+  a-peri-odic
   apoth-e-o-ses
   apoth-e-o-sis
+  ap-pen-di-ces
   ap-pen-dix
+  ap-pen-dixes
   ar-chi-me-dean
   ar-chi-pel-ago
   ar-chi-pel-a-gos
   ar-chiv-ist
   ar-chiv-ists
   ar-che-typ-al
+  ar-che-type
+  ar-che-types
   ar-che-typ-i-cal
   arc-tan-gent
   arc-tan-gents
+  a-spher-ic
+  a-spher-i-cal
   as-sign-a-ble
   as-sign-or
   as-sign-ors
+  as-sist-ant
+  as-sist-ance
   as-sist-ant-ship
   as-sist-ant-ships
+  as-trol-o-ger
+  as-trol-o-gers
+  as-tron-o-mer
+  as-tron-o-mers
   asymp-to-matic
   as-ymp-tot-ic
   asyn-chro-nous
   ath-er-o-scle-ro-sis
   at-mos-phere
   at-mos-pheres
+  at-tri-bute
   at-trib-uted
   at-trib-ut-able
   au-to-ma-tion
   au-tom-a-ton
   au-tom-a-ta
-  au-to-num-ber-ing
+  auto-num-ber-ing
   au-ton-o-mous
+  auto-re-gres-sion
+  auto-re-gres-sive
   auto-round-ing
   av-oir-du-pois
-  band-leader
-  band-leaders
+  back-scratcher
+  back-scratch-ing
+  band-lead-er
+  band-lead-ers
   bank-rupt
+  bank-rupts
   bank-rupt-cy
   bank-rupt-cies
   bar-onies
   ba-thym-e-try
   bathy-scaphe
   bean-ies
+  be-drag-gle
+  be-drag-gled
+  bed-rid-den
+  bed-rock
+  be-dwarf
+  be-dwarfs
   be-hav-iour
   be-hav-iours
   bevies
+  bib-lio-graph-i-cal
   bib-li-og-ra-phy-style
+  bib-units
   bi-dif-fer-en-tial
   big-gest
+  big-shot
+  big-shots
   bill-able
   bio-math-e-mat-ics
   bio-med-i-cal
   bio-med-i-cine
   bio-rhythms
+  bio-weap-ons
+  bio-weap-on-ry
   bit-map
   bit-maps
   bland-er
   bland-est
   blind-er
+  blind-est
   blondes
   blue-print
   blue-prints
   bo-lom-e-ter
+  bo-lom-e-ters
   book-sell-er
   book-sell-ers
   bool-ean
   brusquer
   buf-fer
   buf-fers
+  bun-gee
+  bun-gees
   busier
-  busiest
+  busi-est
   bussing
   butted
   buzz-word
   buzz-words
+  cache-abil-ity
+  cache-able
   ca-coph-o-ny
   ca-coph-o-nies
   call-er
   cam-era-men
   cart-wheel
   cart-wheels
+  ca-tarrh
   ca-tarrhs
+  ca-tas-tro-phe
+  ca-tas-tro-phes
   cat-a-stroph-ic
   cat-a-stroph-i-cally
+  ca-tas-tro-phism
   cat-e-noid
   cat-e-noids
   cau-li-flow-er
+  chan-cery
   chap-ar-ral
   char-treuse
+  chemo-kine
+  chemo-kines
   chemo-ther-apy
   chemo-ther-a-pies
   chloro-meth-ane
   cig-a-rettes
   cinque-foil
   co-asso-cia-tive
+  coch-leas
+  coch-lear
+  co-designer
+  co-designers
   co-gnac
   co-gnacs
   co-ker-nel
   com-po-nent-wise
   comp-trol-ler
   comp-trol-lers
+  com-put-able
+  com-put-abil-ity
   con-form-able
   con-form-ist
   con-form-ists
   con-form-ity
+  con-ge-ries
   con-gress
   con-gresses
+  con-struc-ted
+  con-struc-ti-ble
+  con-struc-ti-bil-ity
   con-trib-ute
   con-trib-utes
   con-trib-uted
+  copy-right-able
   co-re-la-tion
   co-re-la-tions
   co-re-li-gion-ist
   co-re-spon-dent
   co-re-spon-dents
   co-se-cant
+  co-semi-sim-ple
   co-tan-gent
   cour-ses
   co-work-er
   croc-o-diles
   cross-hatch
   cross-hatched
+  cross-hatch-ing
   cross-over
   cryp-to-gram
   cryp-to-grams
   cus-tom-ize
   cus-tom-izes
   cus-tom-ized
+  cy-ber-virus
+  cy-ber-viruses
+  cy-ber-wea-pon
+  cy-ber-wea-pons
+  cy-to-kine
+  cy-to-kines
   dachs-hund
   dam-sel-fly
   dam-sel-flies
-  ca-coph-o-ny
-  ca-coph-o-nies
   dactyl-o-gram
   dactyl-o-graph
   data-base
   data-paths
   date-stamp
   date-stamps
+  de-allo-cate
+  de-allo-cates
+  de-allo-cated
+  de-allo-ca-tion
+  de-allo-ca-tions
   de-clar-able
   de-fin-i-tive
   de-lec-ta-ble
   demi-semi-qua-vers
   de-moc-ra-tism
   demos
+  der-i-va-tion
+  der-i-va-tions
+  der-i-va-tion-al
   de-riv-a-tive
   de-riv-a-tives
   dia-lec-tic
   dis-par-and
   dis-par-ands
   dis-traught-ly
+  dis-trib-ut-able
   dis-trib-ute
   dis-trib-utes
   dis-trib-uted
+  dis-trib-u-tive
   dou-ble-space
+  dou-ble-spaced
   dou-ble-spac-ing
+  dou-ble-talk
   doll-ish
   drift-age
   driv-ers
   drom-e-dary
   drom-e-daries
+  drop-let
+  drop-lets
   du-op-o-list
   du-op-o-lists
-  du-op-oly
+  du-op-o-ly
+  du-op-o-lies
   dys-lexia
   dys-lec-tic
+  dys-topia
   east-end-ers
+  eco-sys-tem
+  eco-sys-tems
   eco-nom-ics
+  econ-o-mies
   econ-o-mist
   econ-o-mists
   ei-gen-class
   ei-gen-val-ues
   electro-mechan-i-cal
   electro-mechano-acoustic
+  elec-tro-pho-re-sis
+  elec-tro-pho-ret-ic
   elit-ist
   elit-ists
+  en-dos-copy
+  en-dos-copies
   en-tre-pre-neur
+  en-tre-pre-neurs
   en-tre-pre-neur-ial
   ep-i-neph-rine
+  eps-to-pdf
   equi-vari-ant
   equi-vari-ance
+  er-go-nom-ic
+  er-go-nom-ics
+  er-go-nom-i-cally
+  es-sence
+  es-sences
   eth-ane
+  eth-yl-am-ine
+  eth-yl-ate
+  eth-yl-ated
   eth-yl-ene
+  ethy-nyl
+  ethy-nyl-a-tion
+  eu-sta-chian
   ever-si-ble
   evert
   everts
   evert-ed
   evert-ing
+  ex-plan-a-tory
   ex-quis-ite
   ex-tra-or-di-nary
+  face-lifts
+  face-lift-ing
   fall-ing
   fermi-ons
+  figu-rine
+  figu-rines
   fi-nite-ly
   fla-gel-lum
   fla-gel-la
   flow-chart
   flow-charts
   fluoro-car-bon
+  fluor-os-copies
+  fluor-os-copy
   for-mi-da-ble
   for-mi-da-bly
   for-syth-ia
   free-loader
   free-loaders
   friend-lier
+  friend-li-est
   fri-vol-ity
   fri-vol-i-ties
   friv-o-lous
+  front-end
+  front-ends
   ga-lac-tic
   gal-axy
   gal-ax-ies
+  gaz-et-teer
+  gaz-et-teers
   gas-om-e-ter
   ge-o-des-ic
   ge-o-det-ic
+  ge-om-eter
+  ge-om-eters
   geo-met-ric
   geo-met-rics
   ge-o-strophic
   geo-ther-mal
   ge-ot-ro-pism
+  giga-nodes
   gno-mon
   gno-mons
+  gran-di-ose
   grand-uncle
   grand-uncles
   griev-ance
   griev-ances
   griev-ous
   griev-ous-ly
+  group-like
   hair-style
   hair-styles
   hair-styl-ist
   hair-styl-ists
+  half-life
+  half-lives
   half-space
   half-spaces
+  half-tone
+  half-tones
   half-way
   har-bin-ger
   har-bin-gers
   har-le-quin
   har-le-quins
   hatch-eries
+  hei-nous
+  he-lio-pause
+  he-lio-trope
   hemi-demi-semi-qua-ver
   hemi-demi-semi-qua-vers
   he-mo-glo-bin
   he-mo-phil-iacs
   hemo-rhe-ol-ogy
   he-pat-ic
+  he-pat-ica
   her-maph-ro-dite
   her-maph-ro-dit-ic
   he-roes
   hexa-dec-i-mal
+  hip-po-po-ta-mus
+  holo-deck
+  holo-decks
   ho-lo-no-my
   ho-meo-mor-phic
   ho-meo-mor-phism
+  ho-meo-stat-ic
+  ho-meo-stat-ics
+  ho-meo-sta-sis
   ho-mo-thetic
   horse-rad-ish
   hot-bed
   hot-beds
+  hounds-teeth
+  hounds-tooth
   hy-dro-ther-mal
+  hy-per-elas-tic-ity
+  hy-phen-a-tion
+  hy-phen-a-tions
+  hy-po-elas-tic-ity
   hy-po-thal-a-mus
+  ico-nog-ra-pher
+  ico-nog-ra-phers
+  icon-o-graph-ic
+  ico-nog-ra-phy
   ideals
   ideo-graphs
   idio-syn-crasy
   ig-nit-ers
   ig-ni-tor
   ignore-spaces
+  il-li-quid
+  il-li-quid-ity
+  im-mu-ni-za-tion
+  im-mu-no-mod-u-la-to-ry
   im-ped-ance
   im-ped-ances
   in-du-bi-ta-ble
   in-fin-i-tes-i-mal
   in-fra-struc-ture
   in-fra-struc-tures
+  input-enc
   in-stall-er
   in-stall-ers
+  in-teg-rity
   in-ter-dis-ci-pli-nary
   in-ter-ga-lac-tic
+  in-ter-view-ee
+  in-ter-view-ees
   in-utile
   in-util-i-ty
+  ir-ra-tio-nal
   ir-re-duc-ible
   ir-re-duc-ibly
   ir-rev-o-ca-ble
+  iso-geo-met-ric
+  iso-geo-met-rics
+  iso-ther-mal
   isot-ropy
   iso-trop-ic
   itin-er-ary
   key-notes
   key-stroke
   key-strokes
+  kilo-nodes
   kiln-ing
   lac-i-est
   lam-en-ta-ble
   land-scap-er
   land-scap-ers
+  lar-ce-n
   lar-ce-ny
-  lar-ce-n-ist
+  lar-ce-nies
+  lar-ce-nist
   leaf-hop-per
   leaf-hop-pers
+  leaf-let
+  leaf-lets
+  let-ter-spaces
+  let-ter-spaced
   let-ter-spac-ing
+  leu-ko-cyte
+  leu-ko-cytes
+  leu-ko-triene
+  leu-ko-trienes
   life-span
   life-spans
   life-style
   life-styles
+  lift-off
   light-weight
   lim-ou-sines
   line-backer
   line-spacing
   li-on-ess
+  li-quid-ity
   lith-o-graphed
   lith-o-graphs
   lo-bot-omy
   lo-bot-om-ize
   loges
   long-est
+  look-ahead
   lo-quac-ity
   love-struck
+  macro-eco-nomic
   macro-eco-nomics
+  macro-econ-omy
+  make-in-dex
   mal-a-prop-ism
   mal-a-prop-isms
   man-slaugh-ter
   man-u-script
+  man-u-scripts
   mar-gin-al
   math-e-ma-ti-cian
   math-e-ma-ti-cians
   med-ic-aid
   medi-ocre
   medi-oc-ri-ties
+  mega-fau-na
+  mega-fau-nal
   mega-lith
   mega-liths
+  mega-nodes
   meta-bol-ic
   me-tab-o-lism
   me-tab-o-lisms
   me-tab-o-lite
   me-tab-o-lites
+  meta-form
+  meta-forms
   meta-lan-guage
   meta-lan-guages
-  meta-phor-ic
+  meta-phor
+  meta-phors
+  meta-phor-i-cal
+  meta-phor-i-cal-ly
+  meta-sta-bil-ity
+  meta-stable
+  meta-table
+  meta-tables
+  metem-psy-cho-sis
+  meth-am-phet-a-mine
   meth-ane
+  meth-od
+  meth-yl-am-mo-nium
+  meth-yl-ate
+  meth-yl-ated
+  meth-yl-a-tion
+  meth-yl-ene
   me-trop-o-lis
   me-trop-o-lises
   met-ro-pol-i-tan
   met-ro-pol-i-tans
+  micro-eco-nomic
   micro-eco-nomics
+  micro-econ-omy
+  micro-en-ter-prise
+  micro-en-ter-prises
   mi-cro-fiche
   mi-cro-fiches
   micro-organ-ism
   micro-organ-isms
+  mi-cro-struc-ture
+  mid-after-noon
   mill-age
   mil-li-liter
   mimeo-graphed
   mimeo-graphs
   mim-ic-ries
+  mine-sweeper
+  mine-sweepers
   min-is
   mini-sym-po-sium
   mini-sym-po-sia
   mis-chie-vous-ly
   mi-sers
   mi-sog-a-my
+  mne-mon-ic
+  mne-mon-ics
   mod-el-ling
+  mo-lec-u-lar
   mol-e-cule
   mol-e-cules
   mon-archs
   mono-chrome
   mono-en-er-getic
   mon-oid
+  mon-oph-thong
+  mon-oph-thongs
   mono-pole
   mono-poles
   mo-nop-oly
+  mono-space
+  mono-spaced
+  mono-spacing
   mono-spline
   mono-splines
   mono-strofic
   mud-rooms
   mul-ti-fac-eted
   mul-ti-plic-able
+  mul-ti-plic-ably
   multi-user
+  name-space
+  name-spaces
   neo-fields
   neo-nazi
   neo-nazis
   new-est
   news-let-ter
   news-let-ters
+  nil-po-tent
   nitro-meth-ane
+  node-list
+  node-lists
   no-name
   non-ar-ith-met-ic
   non-emer-gency
   non-smooth
   non-uni-form
   non-uni-form-ly
+  non-zero
   nor-ep-i-neph-rine
   not-with-stand-ing
   nu-cleo-tide
   oli-gop-o-lists
   oli-gop-oly
   oli-gop-ol-ies
+  om-ni-pres-ent
+  om-ni-pres-ence
+  ono-mat-o-poe-ia
+  ono-mat-o-po-et-ic
   op-er-and
   op-er-ands
   orang-utan
   over-views
   ox-id-ic
   pad-ding
+  page-rank
   pain-less-ly
   pal-ette
   pal-ettes
-  par-a-bola
+  pa-rab-ola
   par-a-bol-ic
   pa-rab-o-loid
   par-a-digm
   para-mag-net-ism
   para-medic
   para-methyl-anisole
+  pa-ram-e-tri-za-tion
   pa-ram-e-trize
   para-mil-i-tary
   para-mount
   path-o-gen-ic
   peev-ish
   peev-ish-ness
+  pen-al-ty
+  pen-al-ties
   pen-ta-gon
   pen-ta-gons
   pe-tro-le-um
+  phe-nol-phthalein
   phe-nom-e-non
   phenyl-ala-nine
   phi-lat-e-list
   phos-phor-ic
   pho-to-graphs
   pho-to-off-set
+  phtha-lam-ic
+  phthal-ate
+  phthi-sis
   pic-a-dor
   pic-a-dors
   pipe-line
   placa-ble
   plant-hop-per
   plant-hop-pers
+  pla-teau
+  pla-teaus
   pleas-ance
   plug-in
   plug-ins
   pol-ter-geist
+  poly-an-dr
+  poly-an-dry
+  poly-an-drous
+  poly-dac-tyl
+  poly-dac-tyl-lic
   poly-ene
   poly-eth-yl-ene
   po-lyg-a-mist
   po-lyg-a-mists
   polyg-on-i-za-tion
+  po-lyg-y-n
+  po-lyg-y-ny
+  po-lyg-y-nous
+  pol-yp
+  pol-yps
+  po-lyph-o-n
+  po-lyph-o-ny
   po-lyph-o-nous
+  poly-phon-ic
   poly-styrene
   pome-gran-ate
   poro-elas-tic
   pos-tur-al
   pre-am-ble
   pre-am-bles
+  pre-dict-able
+  pre-fers
   pre-loaded
   pre-par-ing
   pre-print
   pre-prints
   pre-proces-sor
   pre-proces-sors
+  pres-ent-ly
   pre-split-ting
   pre-wrap
   pre-wrapped
   prog-e-nies
   prog-e-ny
   pro-gram-mable
+  pro-kary-ote
+  pro-kary-otes
+  pro-kary-ot-ic
   prom-i-nent
   pro-mis-cu-ous
   prom-is-sory
   pro-hib-i-tive
   pro-hib-i-tive-ly
   pro-sciut-to
+  pros-ta-glan-din
+  pros-ta-glan-dins
+  pro-style
+  pro-styles
   pro-test-er
   pro-test-ers
   pro-tes-tor
   prov-ince
   prov-inces
   pro-vin-cial
+  pro-virus
+  pro-viruses
   prow-ess
   pseu-do-dif-fer-en-tial
   pseu-do-fi-nite
   psy-che-del-ic
   psychs
   pu-bes-cence
+  pur-ges
   quad-ding
   qua-drat-ic
   qua-drat-ics
   quad-ra-ture
+  quad-ri-lat-er-al
+  quad-ri-lat-er-als
   quad-ri-pleg-ic
+  quad-ru-ped
+  quad-ru-peds
+  quad-ru-pole
+  quad-ru-poles
   quaint-er
   quaint-est
   qua-si-equiv-a-lence
   raff-ish-ly
   ram-shackle
   rav-en-ous
+  re-allo-cate
+  re-allo-cates
+  re-allo-cated
+  re-arrange
+  re-arranges
+  re-arranged
   re-arrange-ment
   re-arrange-ments
   rec-i-proc-i-ties
   re-di-rect-ion
   re-duc-ible
   re-echo
+  re-edu-cate
+  ref-u-gee
+  ref-u-gees
+  re-imple-ment
+  re-imple-ments
+  re-imple-mented
+  re-imple-men-ta-tion
+  ren-ais-sance
   re-phrase
   re-phrases
   re-phrased
   re-po-si-tions
   re-print
   re-prints
+  re-print-ed
   re-stor-able
   retro-fit
   retro-fit-ted
   ro-bots
   ro-botic
   ro-bot-ics
+  roof-top
+  roof-tops
   round-table
   round-tables
   sales-clerk
   sales-clerks
   sales-woman
   sales-women
+  sa-lient
   sal-mo-nel-la
   sal-ta-tion
   sar-sa-par-il-la
+  sat-el-lite
+  sat-el-lites
   sauer-kraut
   scat-o-log-i-cal
+  scene-shift-er
+  scene-shift-ing
   sched-ul-ing
   schiz-o-phrenic
   schnau-zer
   semi-rings
   semi-sim-ple
   semi-skilled
+  sem-itic
+  ser-geant
+  ser-geants
   sero-epi-de-mi-o-log-i-cal
-  ser-vo-mech-anism
-  ser-vo-mech-anisms
+  ser-vo-me-chan-i-cal
+  ser-vo-mech-a-nism
+  ser-vo-mech-a-nisms
   ses-qui-pe-da-lian
   set-up
   set-ups
   se-vere-ly
+  shap-able
   shape-able
   shoe-string
   shoe-strings
+  shop-lift-er
+  shop-lift-ing
+  show-hy-phens
   side-step
   side-steps
   side-swipe
+  sign-age
+  single-space
+  single-spaced
+  single-spacing
   sky-scraper
   sky-scrapers
+  sln-uni-code
   smoke-stack
   smoke-stacks
   snor-kel-ing
   spe-lunk-er
   spend-thrift
   spher-oid
+  spher-oids
   spher-oid-al
   sphin-ges
   spic-i-ly
+  spin-or
   spin-ors
+  spokes-man
+  spokes-per-son
+  spokes-per-sons
   spokes-woman
   spokes-women
   sports-cast
   strat-a-gems
   stretch-i-er
   strip-tease
-  strong-hold
   strong-est
+  strong-hold
   stu-pid-er
   stu-pid-est
   sub-dif-fer-en-tial
   sub-ex-pres-sion
   sub-ex-pres-sions
+  sub-node
+  sub-nodes
+  sub-scrib-er
+  sub-scrib-ers
+  sub-tables
   sum-ma-ble
+  super-deri-va-tion
+  super-deri-va-tions
   super-ego
   super-egos
   su-prem-a-cist
   su-prem-a-cists
+  sur-gery
+  sur-ge-ries
+  sur-ges
   sur-veil-lance
   swim-ming-ly
   symp-to-matic
   syn-chro-nous
   syn-chro-tron
   taff-rail
+  take-over
+  take-overs
   talk-a-tive
   ta-pes-try
   ta-pes-tries
   tem-po-rar-ily
   ten-ure
   test-bed
+  tera-nodes
+  tetra-butyl-ammo-nium
+  text-height
+  text-length
   text-width
   thal-a-mus
   ther-mo-elas-tic
   tool-kit
   tool-kits
   topo-graph-i-cal
+  topo-iso-mer-ase
+  topo-iso-mer-ases
   toques
   trai-tor-ous
   trans-ceiver
   trans-ceivers
+  trans-par-en-cy
+  trans-par-en-cies
   trans-gress
   trans-ver-sal
   trans-ver-sals
   tra-ver-sals
   tri-ethyl-amine
   treach-eries
+  tribes-man
+  trip-let
+  trip-lets
+  tri-plex
+  tri-plex-es
   trou-ba-dour
   tur-key
   tur-keys
   un-err-ing-ly
   un-friend-ly
   un-friend-li-er
+  un-in-stan-ti-at-ed
   vaguer
   vaude-ville
   vic-ars
   wad-ding
   wall-flower
   wall-flow-ers
+  warm-er
   warm-est
   waste-water
   wave-guide
   wave-guides
   wave-let
   wave-lets
+  weap-ons
+  weap-on-ry
   web-like
+  web-log
+  web-logs
   week-night
   week-nights
+  weight-lift-er
+  weight-lift-ing
   wheel-chair
   wheel-chairs
   which-ever
   work-horse
   work-horses
   wrap-around
+  wrap-arounds
   wretch-ed
   wretch-ed-ly
   yes-ter-year
+  Alex-an-der
+  Alex-an-drine
   al-ge-brai-sche
+  Al-gon-quian
+  Al-gon-quin
   Al-le-ghe-ny
+  Apol-lo-dorus
   Ar-kan-sas
   ATP-ase
   ATP-ases
+  Auf-lage
   Aus-tral-asian
-  auto-mati-sier-ter
+  auto-ma-ti-sier-ter
+  Beb-chuk
   Be-die-nung
   Bembo
-  bib-li-o-gra-phi-sche
+  bi-blio-gra-phi-sche
   Bos-ton
   Brown-ian
   Bruns-wick
   Bu-da-pest
+  Burck-hardt
+  Cara-theo-dory
   Car-ib-bean
   Charles-ton
   Char-lottes-ville
+  Ches-ter
+  Chiang
+  Chich-es-ter
+  Cohen
   Co-lum-bia
   Czecho-slo-va-kia
   Del-a-ware
   Dijk-stra
+  Dor-ches-ter
+  Dorf-leit-ner
+  Drechs-ler
   Duane
   dy-na-mi-sche
+  Eijk-hout
+  Engle
+  Engel
   Eng-lish
   Euler-ian
   Evan-ston
   Free-BSD
   funk-tsional
   Gauss-ian
+  Ge-sell-schaft
   Ghost-script
   Ghost-View
+  Gott-fried
+  Gott-lieb
   Grass-mann-ian
   Greifs-wald
   Grothen-dieck
   Hel-sinki
   Her-mit-ian
   Hibbs
+  Hoef-ler
+  Hoek-water
   Hok-kai-do
+  Huber
+  Image-Magick
   Jac-kow-ski
   Jan-u-ary
   Ja-pa-nese
+  Java-Script
+  Jung-ian
   Kad-om-tsev
   Kan-sas
   Karls-ruhe
+  Keynes-ian
   Kor-te-weg
   Krishna
   Krish-na-ism
   Krish-nan
+  Kron-ecker
   Lan-cas-ter
   Le-gendre
   Leices-ter
   Lip-schitz-ian
   Loj-ban
   Lou-i-si-ana
+  Lucas
+  MacBeth
   Mac-OS
+  Ma-gel-lan
+  Ma-la-ya-lam
   Man-ches-ter
   Mar-kov-ian
   Markt-ober-dorf
   Mass-a-chu-setts
   Max-well
+  Meth-od-ist
+  Meth-od-ism
   Mi-cro-soft
+  Min-kow-ski
   Min-ne-ap-o-lis
   Min-ne-sota
+  Mont-real
   Mos-cow
-  Nach-richten
+  Nach-rich-ten
   Nash-ville
   Net-BSD
   Net-scape
+  Nietz-sche
   Nij-me-gen
   Noe-ther-ian
   Noord-wijker-hout
+  Noto-wi-digdo
   No-vem-ber
+  Obst-feld
   Open-BSD
   Open-Office
+  Oreo-pou-los
   Pala-tino
   Pa-ler-mo
   Pe-trov-ski
   Pfaff-ian
   Phil-a-del-phia
-  phil-o-soph-i-sche
+  phi-lo-so-phi-sche
   Poin-care
   Po-ten-tial-glei-chung
+  Po-to-mac
+  Pres-by-terian
+  Pres-by-terians
+  Pyong-yang
+  Py-thag-o-ras
+  Py-thag-o-re-an
   Ra-dha-krish-nan
   raths-kel-ler
+  Ravi-kumar
+  Reich-lin
   Rie-mann-ian
   Ryd-berg
-  schot-tische
-  Schro-ding-er
+  Schim-mel-pfen-nig
+  schot-ti-sche
+  Schro-din-ger
   Schwa-ba-cher
   Schwarz-schild
+  Schweid-nitz
+  Schwert
   Sep-tem-ber
+  Shore-ditch
+  Skoup
   Stokes-sche
   Stutt-gart
   Sus-que-han-na
   Tau-ber-ian
   tech-ni-sche
   Ten-nes-see
+  Thiruv-ananda-puram
+  Tol-ches-ter
   To-ma-szew-ski
+  Toyo-ta
   ty-po-graphique
   Ukrain-ian
-  ver-all-ge-mein-erte
-  Ver-ein-i-gung
+  ver-all-ge-mei-nerte
+  Ver-ei-ni-gung
   Ver-tei-lun-gen
+  Vid-ias-sov
+  Vieth
   viiith
   viith
   Wahr-schein-lich-keits-theo-rie
+  Wein-stein
+  Werk-zeuge
   Wer-ner
   Wer-ther-ian
+  Will-iam
+  Will-iams
   Win-ches-ter
   Wirt-schaft
   wis-sen-schaft-lich
+  Wolff-ian
   xviiith
   xviith
   xxiiird
index ca3db03..90faf71 100644 (file)
@@ -1,25 +1,24 @@
-.\" -*- mode: nroff; coding: utf-8; -*-
-.\"
 .\" Japanese localization for groff
 .\"
-.\" Copyright (C) 2009-201 Free Software Foundation, Inc.
+.\" Copyright (C) 2009-2018 Free Software Foundation, Inc.
 .\"   Written by Fumitoshi UKAI <ukai@debian.or.jp> and
 .\"   Colin Watson <cjwatson@debian.org>
 .\"
 .\" This file is part of groff.
 .\"
-.\" groff 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
+.\" groff 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.
 .\"
-.\" groff 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.
+.\" groff 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 <http://www.gnu.org/licenses/>.
+.\" along with this program.  If not, see
+.\" <http://www.gnu.org/licenses/>.
 .\"
 .\" Please send comments to groff@gnu.org.
 .
 .cflags 128 \C'[CJKprepunct]'
 .cflags 266 \C'[CJKpostpunct]'
 .cflags 512 \C'[CJKnormal]'
+.
+.\" ====================================================================
+.\" Editor settings
+.\" ====================================================================
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" fill-column: 72
+.\" End:
+.\" vim: set filetype=groff textwidth=72:
index ea2ba05..8f4a2f0 100644 (file)
@@ -1,5 +1,3 @@
-.\" -*- nroff -*-
-.\"
 .\" papersize.tmac
 .\"
 .\" Set up groff for various paper sizes.
@@ -8,17 +6,17 @@
 .\"
 .\"   groff ... -dpaper=<format> ...
 .\"
-.\" Possible values for `format' are the same as the predefined `papersize'
-.\" values (see the groff_font man page) except a7-d7.  An appended `l'
-.\" (ell) character denotes landscape orientation.  Examples: `a4', `c3l',
-.\" `letterl'.
+.\" Possible values for 'format' are the same as the predefined
+.\" 'papersize' values (see the groff_font man page) except a7-d7.  An
+.\" appended 'l' (ell) character denotes landscape orientation.
+.\" Examples: 'a4', 'c3l', 'letterl'.
 .\"
-.\" Most output drivers need additional command line switches `-p' and
-.\" `-l' to override the default paper length and orientation as set in
+.\" Most output drivers need additional command-line switches '-p' and
+.\" '-l' to override the default paper length and orientation as set in
 .\" the driver specific DESC file.
 .\"
-.\" For example, use the following for PS output on A4 paper in landscape
-.\" orientation::
+.\" For example, use the following for PS output on A4 paper in
+.\" landscape orientation:
 .\"
 .\"   groff -Tps -dpaper=a4l -P-pa4 -P-l -ms foo.ms > foo.ps
 .
@@ -96,8 +94,8 @@
 .  ds paper-ledger-width 17i
 .  ds paper-statement-length 8.5i
 .  ds paper-statement-width 5.5i
-.  \" These dimensions for executive paper format is what all
-.  \" printer manufacturers use.
+.  \" These dimensions for executive paper format are what all printer
+.  \" manufacturers use.
 .  ds paper-executive-length 10.5i
 .  ds paper-executive-width 7.25i
 .
 .    nr paper-w 1
 .
 .  ie \n[paper-w] \
-.    tm warning: Unknown paper size `\*[paper]'
+.    tm warning: Unknown paper size '\*[paper]'
 .  el \
 .    if !r LL \
 .      nr LL \n[.l]u  \" for ms, mdoc, man
 .
 .cp \n[_C]
 .
-.\" EOF
+.\" ====================================================================
+.\" Editor settings
+.\" ====================================================================
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" fill-column: 72
+.\" End:
+.\" vim: set filetype=groff textwidth=72:
index cae880a..d282755 100644 (file)
@@ -1,10 +1,8 @@
-.\" -*- nroff -*-
-.
 .ig
 
 pdf.tmac
 
- Copyright (C) 2011-2014 Free Software Foundation, Inc.
+ Copyright (C) 2011-2018 Free Software Foundation, Inc.
       Written by Deri James <deri@chuzzlewit.myzen.co.uk>
 
 This file is part of groff.
@@ -801,5 +799,14 @@ am solely responsible for any bugs I may have introduced into this file.
 .de pdfswitchtopage
 .nop \!x X pdf: switchtopage \\$*
 ..
-.\"
-.\" pdf.tmac: end of file / vim: ft=groff
+.de pdfpause
+.nop \!x X ps: exec %%%%PAUSE
+..
+.de pdftransition
+.nop \!x X pdf: transition \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8
+..
+.\" Local Variables:
+.\" mode: nroff
+.\" End:
+.\" vim: filetype=groff:
+.\" pdf.tmac: end of file
diff --git a/tmac/pdfpic.tmac b/tmac/pdfpic.tmac
new file mode 100644 (file)
index 0000000..0400c1c
--- /dev/null
@@ -0,0 +1,148 @@
+.\" pdfpic.tmac
+.\"
+.\" Define the PDFPIC macro.
+.\"
+.\" When used other than with gropdf, the image is converted to .eps
+.\" and processing passed over to PSPIC.
+.\"
+.\" Usage:
+.\"
+.\"   .PDFPIC [-L|-R|-C|-I <indent>] <file> [<width> [<height>]]
+.\"
+.\" Requires the poppler-utils package (for pdfinfo and pdftops).
+.\" Requires running groff in unsafe mode.
+.
+.do if d PDFPIC .nx
+.
+.nr _C \n(.C
+.cp 0
+.
+.de @abort
+.  ab [PDFPIC]: \\$* Aborting.
+..
+.de PDFPIC
+.  if !\\n[.U] \
+.    @abort Use of \\$0 requires giving groff the -U option.
+.
+.  nr convert-pdf 0
+.  if !'\\*[.T]'pdf' .nr convert-pdf 1
+.
+.  nr pdf-offset-mode 0
+.
+.  \" left-aligned?
+.  ie '\\$1'-L' \{\
+.    nr pdf-offset-mode 1
+.    if \\n[convert-pdf] .ds pspic-args \\$1 \"
+.    shift
+.  \}
+.  el \{\
+.    \" right-aligned?
+.    ie '\\$1'-R' \{\
+.      nr pdf-offset-mode 2
+.      if \\n[convert-pdf] .ds pspic-args \\$1 \"
+.      shift
+.    \}
+.    el \{\
+.      \" indented?
+.      ie '\\$1'-I' \{\
+.        nr pdf-offset-mode 3
+.        nr pdf-offset (m;\\$2)
+.        if \\n[convert-pdf] .ds pspic-args \\$1 \\$2 \"
+.        shift 2
+.      \}
+.      el \{\
+.        \" centered is the default
+.        ie '\\$1'-C' \{\
+.          if \\n[convert-pdf] .ds pspic-args \\$1 \"
+.          shift
+.        \}
+.        el .nr pdf-offset-mode 0
+.      \}
+.    \}
+.  \}
+.  br
+.
+.  ds is-pdf \\$1
+.  substring is-pdf -3
+.  if !'\\*[is-pdf]'pdf' \
+.    @abort \\$1 at line \\n[.c] is not a PDF file, or lacks a .pdf extension.
+.
+.\" if driver is not gropdf, convert image to .eps
+.  if \\n[convert-pdf] \{\
+.    ds img-file \\$1
+.    substring img-file 0 -5
+.
+.    sy pdftops -eps \\$1
+.    shift
+.
+.    as pspic-args \\*[img-file].eps \\$*
+.
+.    PSPIC \\*[pspic-args]
+.    return
+.  \}
+.
+.\" get image dimensions
+.  ec @
+.  sy pdfinfo @$1 | \
+grep "Page *size" | \
+sed -e 's/Page *size: *\\([[:digit:].]*\\) *x *\\([[:digit:].]*\\).*$/\
+.nr pdf-wid (p;\\1)\\n\
+.nr pdf-ht  (p;\\2)/' \
+> /tmp/pdfpic\n[$$]
+.  so /tmp/pdfpic\n[$$]
+.  sy rm /tmp/pdfpic\n[$$]
+.  ec
+.
+.  \" if we have a <width> parameter, use it as the final
+.  \" image width; otherwise we use the image's natural width
+.  \" or the current line length, whatever is smaller
+.  ie (\\n[.$] >= 2) \
+.    nr pdf-deswid (i;\\$2)
+.  el \
+.    nr pdf-deswid ((\\n[.l] - \\n[.i]) <? \\n[pdf-wid])
+.
+.  \" compute the final image height (with proper rounding),
+.  \" based on the image's aspect
+.  nr pdf-desht (\\n[pdf-deswid] * 1000 + (\\n[pdf-wid] / 2) \
+                / \\n[pdf-wid] * \\n[pdf-ht] \
+                + 500 / 1000)
+.
+.  \" if we have a <height> parameter, use it as the final
+.  \" image height in case it is smaller than the height
+.  \" value we have just computed
+.  if ((\\n[.$] >= 3) & (\\n[pdf-desht] > (i;0\\$3))) \{\
+.    nr pdf-desht (i;\\$3)
+.    \" recompute the final image width since we always
+.    \" keep the correct image aspect
+.    nr pdf-deswid (\\n[pdf-desht] * 1000 + (\\n[pdf-ht] / 2) \
+                   / \\n[pdf-ht] * \\n[pdf-wid] \
+                   + 500 / 1000)
+.  \}
+.
+.  \" reserve vertical space for image
+.  ne (\\n[pdf-desht]u + 1v)
+.
+.  \" compute image offset w.r.t. the current left margin
+.  if (\\n[pdf-offset-mode] == 0) \
+.    nr pdf-offset (\\n[.l] - \\n[.i] - \\n[pdf-deswid] / 2)
+.  if (\\n[pdf-offset-mode] == 1) \
+.    nr pdf-offset 0
+.  if (\\n[pdf-offset-mode] == 2) \
+.    nr pdf-offset (\\n[.l] - \\n[.i] - \\n[pdf-deswid])
+.
+\h'\\n[pdf-offset]u'\
+\X'pdf: pdfpic \\$1 -L \\n[pdf-deswid]z \\n[pdf-desht]z'
+.  if !r PDFPIC_NOSPACE \{\
+.    sy echo ".nr PDFPIC_NOSPACE 0$GROFF_PDFPIC_NOSPACE" > /tmp/x\n[$$]
+.    so /tmp/x\n[$$]
+.    sy rm /tmp/x\n[$$]
+.  \}
+.  if \\n[PDFPIC_NOSPACE]==0 \{\
+.    br
+.    sp \\n[pdf-desht]u
+.  \}
+..
+.
+.cp \n[_C]
+.
+.\" end of pdfpic.tmac
index 8a8cdd2..948754f 100644 (file)
@@ -1,11 +1,9 @@
-.\" -*- nroff -*-
-.\"
 .\" pspic.tmac
 .\"
 .\" Define the PSPIC macro.
 .\"
-.\" When used other than with -Tps, -Tdvi, -Thtml, or -Txhtml it draws a box
-.\" around where the picture would go.
+.\" When used other than with -Tps, -Tdvi, -Thtml, or -Txhtml it draws a
+.\" box around where the picture would go.
 .\"
 .\" Usage:
 .\"
 .    \}
 .    el \{\
 .      ie '\*[.T]'ps' \{\
-.        \" prepare values for grops; the `ps-invis' and `ps-endinvis' escapes
-.        \" are for groff's -X switch to provide a PS preview with xditview:
-.        \" it uses -Tps for formatting but xditview can't handle EPS files,
-.        \" thus alternative code is enclosed between those two escapes
+.        \" prepare values for grops; the 'ps-invis' and 'ps-endinvis'
+.        \" escapes are for groff's -X switch to provide a PS preview
+.        \" with xditview: it uses -Tps for formatting but xditview
+.        \" can't handle EPS files, thus alternative code is enclosed
+.        \" between those two escapes
 .        ds ps-invis \X'ps: invis'
 .        ds ps-endinvis \X'ps: endinvis'
 .        ds ps-import \X'ps: import \E$1 \En[llx] \En[lly] \En[urx] \En[ury] \
 \Z'\D'p 0 \\n[ps-desht]u \
         (\\n[ps-deswid]u - \\n[.H]u) 0 \
         0 -\\n[ps-desht]u''\
-\# for convenience we also display the image file name (centered vertically);
+\# for convenience we also display the image file name (centered
+\# vertically);
 \Z'\v'((\\n[ps-desht]u / 2u) \
        + (\w'\\$1'u * 0) \
        + ((\\n[rst]u + \\n[rsb]u) / 2u))'\h'1m'\\$1'\
 .
 .cp \n[_C]
 .
-.\" end of pspic.tmac
+.\" ====================================================================
+.\" Editor settings
+.\" ====================================================================
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" fill-column: 72
+.\" End:
+.\" vim: set filetype=groff textwidth=72:
index 05283bc..f8b0c03 100644 (file)
@@ -1,8 +1,6 @@
-.\" -*- nroff -*-
-.\"
 .\" ptx.tmac
 .\"
-.\"   Provide `.xx' macro to format permuted index entries as created
+.\"   Provide '.xx' macro to format permuted index entries as created
 .\"   by GNU ptx.
 .\"
 .\" Written 2008 by Werner Lemberg (wl@gnu.org)
 .
 .nf
 .
-.\" eof
+.\" ====================================================================
+.\" Editor settings
+.\" ====================================================================
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" fill-column: 72
+.\" End:
+.\" vim: set filetype=groff textwidth=72:
index e681bcc..10a90c6 100644 (file)
@@ -1,26 +1,25 @@
-.\" -*- mode: nroff; coding: iso-latin-1; -*-
-.\"
 .\" refer-me.tmac
 .\"
 .\" Refer support for me macros.
 .\"
-.\" Copyright (C) 2011-201 Free Software Foundation, Inc.
+.\" Copyright (C) 2011-2018 Free Software Foundation, Inc.
 .\"   Written by Werner Lemberg (wl@gnu.org)
 .\"
 .\" This file is part of groff.
 .\"
-.\" groff 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
+.\" groff 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.
 .\"
-.\" groff 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.
+.\" groff 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 <http://www.gnu.org/licenses/>.
+.\" along with this program.  If not, see
+.\" <http://www.gnu.org/licenses/>.
 .\"
 .\" Please send comments to groff@gnu.org.
 .
 .
 .mso refer.tmac
 .
-.\" EOF
+.\" ====================================================================
+.\" Editor settings
+.\" ====================================================================
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" fill-column: 72
+.\" End:
+.\" vim: set filetype=groff textwidth=72:
index 4f37dc0..4453ecf 100644 (file)
@@ -1,26 +1,25 @@
-.\" -*- mode: nroff; coding: iso-latin-1; -*-
-.\"
 .\" refer-ms.tmac
 .\"
 .\" Refer support for ms macros.
 .\"
-.\" Copyright (C) 2011-201 Free Software Foundation, Inc.
+.\" Copyright (C) 2011-2018 Free Software Foundation, Inc.
 .\"   Written by Werner Lemberg (wl@gnu.org)
 .\"
 .\" This file is part of groff.
 .\"
-.\" groff 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
+.\" groff 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.
 .\"
-.\" groff 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.
+.\" groff 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 <http://www.gnu.org/licenses/>.
+.\" along with this program.  If not, see
+.\" <http://www.gnu.org/licenses/>.
 .\"
 .\" Please send comments to groff@gnu.org.
 .
 .
 .mso refer.tmac
 .
-.\" EOF
+.\" ====================================================================
+.\" Editor settings
+.\" ====================================================================
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" fill-column: 72
+.\" End:
+.\" vim: set filetype=groff textwidth=72:
index 3448f91..4727643 100644 (file)
@@ -1,42 +1,41 @@
-.\" -*- mode: nroff; coding: iso-latin-1; -*-
-.\"
 .\" refer.tmac
 .\"
-.\" This is an interface to `refer', originally part of `s.tmac'.
+.\" This is an interface to 'refer', originally part of 's.tmac'.
 .\"
-.\" Copyright (C) 2011-201 Free Software Foundation, Inc.
+.\" Copyright (C) 2011-2018 Free Software Foundation, Inc.
 .\"   Written by Werner Lemberg (wl@gnu.org)
 .\"
 .\" This file is part of groff.
 .\"
-.\" groff 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
+.\" groff 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.
 .\"
-.\" groff 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.
+.\" groff 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 <http://www.gnu.org/licenses/>.
+.\" along with this program.  If not, see
+.\" <http://www.gnu.org/licenses/>.
 .\"
 .\" Please send comments to groff@gnu.org.
 .
 .
 .\" The following macros must be defined:
 .\"
-.\"   ref*error                     -- print an error message (in arg1)
+.\"   ref*error                     -- print an error message (in $1)
 .\"
-.\"   ref*text-label-start          -- start a reference in text (formatted
-.\"                                    reference number in arg1)
+.\"   ref*text-label-start          -- start a reference in text
+.\"                                    (formatted reference # in $1)
 .\"   ref*text-label-end            -- end a reference in text
 .\"
-.\"   ref*biblio-item-start         -- a reference item with label (in arg1)
-.\"                                    in the bibliography block
-.\"   ref*biblio-item-start-nolabel -- a reference item without label in the
-.\"                                    bibliography block
+.\"   ref*biblio-item-start         -- a reference item with label
+.\"                                    (in $1) in the bibliography block
+.\"   ref*biblio-item-start-nolabel -- a reference item without label in
+.\"                                    the bibliography block
 .\"   ref*biblio-item-end           -- end a reference item in the
 .\"                                    bibliography block
 .\"
 .\"
 .\" The following strings must be defined:
 .\"
-.\"   ref*refnum-start              -- start reference number formatting in
-.\"                                    footnote
-.\"   ref*refnum-end                -- end reference number formatting in
-.\"                                    footnote
+.\"   ref*refnum-start              -- start reference number formatting
+.\"                                    in footnote
+.\"   ref*refnum-end                -- end reference number formatting
+.\"                                    in footnote
 .\"
 .\"   [.                            -- start reference number in text
-.\"                                    (directly inserted by `refer')
-.\"   .]                            -- end reference number in text (directly
-.\"                                    inserted by `refer')
+.\"                                    (directly inserted by 'refer')
+.\"   .]                            -- end reference number in text
+.\"                                    (directly inserted by 'refer')
 .\"
 .\" Here is the specification of the five possible reference styles
-.\" provided by `refer'.  The example entries are taken from the ms
-.\" macro package
+.\" provided by 'refer'.  The example entries are taken from the ms
+.\" macro package.
 .\"
 .\"   ref*spec!0  Q A T S V N P I C D O      -- other
 .\"   ref*spec!1  Q A T J S V N P I C D O    -- journal article
 .\"   ref*spec!3  Q A T B E S V P I C D O    -- article within book
 .\"   ref*spec!4  Q A T R G P I C D O        -- technical report
 .\"
-.\" Now the setup for the formatting of reference entries.  The given example
-.\" entries for the various strings are taken from the ms macro package.
+.\" Now the setup for the formatting of reference entries.  The given
+.\" example entries for the various strings are taken from the ms macro
+.\" package.
 .\"
-.\" Each string defines five arguments which are passed to a macro, with the
-.\" meaning as below.  Please refer to the man page of `refer' for more
-.\" details on the fields.  To allow fine-tuning, two levels are implemented:
-.\" For the refer field X and style Y the string `ref*spec!X:Y' is looked up.
-.\" If it doesn't exist, the string `ref*spec!X' is used instead.
+.\" Each string defines five arguments which are passed to a macro, with
+.\" the meaning as below.  Please refer to the man page of 'refer' for
+.\" more details on the fields.  To allow fine-tuning, two levels are
+.\" implemented: For the refer field X and style Y the string
+.\" 'ref*spec!X:Y' is looked up.  If it doesn't exist, the string
+.\" 'ref*spec!X' is used instead.
 .\"
-.\"   arg 1  the punctuation character to use to separate this field from the
-.\"          previous field
+.\"   arg 1  the punctuation character to use to separate this field
+.\"          from the previous field
 .\"   arg 2  a string to insert after the punctuation character of the
 .\"          previous field (normally a space)
 .\"   arg 3  a string with which to prefix this field
 .\"   arg 4  a string with which to postfix this field
-.\"   arg 5  a string to add after the punctuation character supplied by the
-.\"          next field
+.\"   arg 5  a string to add after the punctuation character supplied
+.\"          by the next field
 .\"
 .\"                  1  2   3        4     5
-.\"   ----------------------------------------------------------------------
+.\"   ------------------------------------------------------------------
 .\"   ref*spec!A     ,  " "                       -- author name
-.\"   ref*spec!B     "" " " "in \fI" ""    "\fP"  -- book title of article
+.\"   ref*spec!B     "" " " "in \fI" ""    "\fP"  -- bk title of article
 .\"   ref*spec!D     "" " " "("      ")"          -- date of publication
 .\"   ref*spec!E     ,  " " "ed. "                -- editor
-.\"   ref*spec!G     "" " " "("      ")"          -- US Gov. ordering number
+.\"   ref*spec!G     "" " " "("      ")"          -- US Gov. ordering #
 .\"   ref*spec!J     ,  " " "\fI"    ""    "\fP"  -- journal name
 .\"   ref*spec!N     "" "(" ""       ")"          -- issue number
 .\"   ref*spec!O     .  " "                       -- other information
 .      ie d ref*spec!\\$1 \
 .              ref*build \\$1 \\*[ref*spec!\\$1]
 .      el \{\
-.              ref*error "unknown reference type `\\$1'"
+.              ref*error "unknown reference type '\\$1'"
 .              ref*build 0 \\*[ref*spec!0]
 .      \}
 .      ref*print
 .\" First argument is the field letter.
 .\" Second argument is the punctuation character to use to separate this
 .\" field from the previous field.
-.\" Third argument is a string to insert after the punctuation character of
-.\" the previous field (normally a space).
+.\" Third argument is a string to insert after the punctuation character
+.\" of the previous field (normally a space).
 .\" Fourth argument is a string with which to prefix this field.
 .\" Fifth argument is a string with which to postfix this field.
 .\" Sixth argument is a string to add after the punctuation character
 ..
 .
 .
-.\" EOF
+.\" ====================================================================
+.\" Editor settings
+.\" ====================================================================
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" fill-column: 72
+.\" End:
+.\" vim: set filetype=groff textwidth=72:
index cf0eca8..1d0b0ae 100644 (file)
@@ -1,9 +1,8 @@
-.\" -*- nroff -*-
 .ig
 
 s.tmac
 
-Copyright (C) 1989-201 Free Software Foundation, Inc.
+Copyright (C) 1989-2018 Free Software Foundation, Inc.
      Written by James Clark (jjc@jclark.com)
 
 This file is part of groff.
@@ -19,7 +18,7 @@ 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 <http://www.gnu.org/licenses/>.
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
 ..
 .if !\n(.g .ab These ms macros require groff.
 .if \n(.C \
@@ -132,13 +131,13 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .als AI cov*err-not-before-tl
 .als AB cov*err-not-before-tl
 .de cov*first-page-init
-.\" Invoked by `.wh 0' trap on first page.
+.\" Invoked by '.wh 0' trap on first page.
 .\" We should not come here again, but at short page length,
 .\" recursion may occur; remove trap and macro to avoid it.
 .ch cov*first-page-init
 .rm cov*first-page-init
 .if !'\\n[.ev]'0' \{\
-.      @error must be in top-level environment, not `\\n[.ev]',
+.      @error must be in top-level environment, not '\\n[.ev]',
 .      @error when first page is started
 .\}
 .par@init
@@ -367,8 +366,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .als FS @FS
 .als FE @FE
 .CHECK-FOOTER-AND-KEEP
-.\" If anything was printed below where the footer line is normally printed,
-.\" then that's an overflow.
+.\" If anything was printed below where the footer line is normally
+.\" printed, then that's an overflow.
 .if -\\n[FM]/2+1v+\\n[cov*page-length]<\\n[nl] .@error cover sheet overflow
 .pl \\n[cov*page-length]u
 .bp 1
@@ -576,7 +575,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 ..
 .de pg*end-page
 .po \\n[PO]u
-.\" Make sure we don't exit if there are still floats or footnotes left-over.
+.\" Make sure we don't exit if there are still floats or footnotes
+.\" left-over.
 .ie \\n[kp@head]<\\n[kp@tail]:\\n[fn@have-overflow] \{\
 .      \" Switching environments ensures that we don't get an unnecessary
 .      \" blank line at the top of the page.
@@ -585,7 +585,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .      ev
 .\}
 .el \{\
-.      \" If the text has ended and there are no more footnotes or keeps, exit.
+.      \" If the text has ended and there are no more footnotes or
+.      \" keeps, exit.
 .      if \\n[pg@text-ended] .ex
 .      if r pg*next-number \{\
 .              pn \\n[pg*next-number]
@@ -619,8 +620,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .de pg@super-eject
 .br
 .if !'\\n(.z'' .@error-recover diversion open while ejecting page
-.\" Make sure we stay in the end macro while there is still footnote overflow
-.\" left, or floating keeps.
+.\" Make sure we stay in the end macro while there is still footnote
+.\" overflow left, or floating keeps.
 .while \\n[kp@tail]>\\n[kp@head]:\\n[pg@fn-flag] \{\
 .      rs
 .      bp
@@ -656,7 +657,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .      el .fn*do-FS
 .\}
 ..
-.\" Second argument of `no' means don't embellish the first argument.
+.\" Second argument of 'no' means don't embellish the first argument.
 .de fn*do-FS
 .if \\n[fn*open] .@error-recover nested FS
 .nr fn*open 1
@@ -796,7 +797,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .\}
 .el \!.fn*embed-end
 ..
-.\" It's important that fn@print-sep use up exactly fn@sep-dist vertical space.
+.\" It's important that fn@print-sep use up exactly fn@sep-dist vertical
+.\" space.
 .de fn@print-sep
 .ev fn
 .in 0
@@ -878,8 +880,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .\}
 ..
 .de kp*do-top
-.\" If the first keep won't fit, only force it out if we haven't had a footnote
-.\" and we're at the top of the page.
+.\" If the first keep won't fit, only force it out if we haven't had a
+.\" footnote and we're at the top of the page.
 .nr kp*force \\n[pg@fn-flag]=0&(\\n[nl]<=\\n[pg@header-bottom])
 .nr kp*fits 1
 .while \\n[kp@tail]>\\n[kp@head]&\\n[kp*fits] \{\
@@ -1024,7 +1026,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .\" Paragraph-level formatting.
 .\" Load time initialization.
 .de par@load-init
-.\" PS and VS might have been set on the command-line
+.\" PS and VS might have been set on the command line
 .if !rPS .nr PS 10
 .if !rLL .nr LL 6i
 .ll \\n[LL]u
@@ -1049,7 +1051,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .              par*vs "(\\n[PS] + 2)"
 .\}
 .if dFAM .fam \\*[FAM]
-.if !rHY .nr HY 14
+.if !rHY .nr HY 6
 .hy \\n[HY]
 .TA
 .CHECK-FOOTER-AND-KEEP
@@ -1297,7 +1299,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .      nr \\n[.ev]:pri \\n[\\n[.ev]:pri!\\n[\\n[.ev]:il]]
 .\}
 .el .@error unbalanced \\$0
-.par@reset
+.ie '\\$0'QE' .par*start 0 0
+.el .par@reset
 ..
 .de @QS
 .br
@@ -1310,7 +1313,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .nr \\n[.ev]:li +\\n[QI]
 .nr \\n[.ev]:ri +\\n[QI]
 .nr \\n[.ev]:ai \\n[\\n[.ev]:PI]
-.par@reset
+.par*start 0 0
 ..
 .als @QE @RE
 .\" start boxed text
@@ -1332,8 +1335,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .B2
 ..
 .\" end boxed text
-.\" Postpone the drawing of the box until we're in the top-level diversion,
-.\" in case there's a footnote inside the box.
+.\" Postpone the drawing of the box until we're in the top-level
+.\" diversion, in case there's a footnote inside the box.
 .de B2
 .ie '\\n(.z'par*box-div' \{\
 .      br
@@ -1392,20 +1395,23 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .if !rHORPHANS .nr HORPHANS 1
 .
 .\" \n[GROWPS] and \n[PSINCR] cause auto-increment of header point size.
-.\" Initialise them, so they have no effect, unless explicitly set by the user.
+.\" Initialise them, so they have no effect, unless explicitly set by
+.\" the user.
 .if !rGROWPS .nr GROWPS 0
 .if !rPSINCR .nr PSINCR 1p
 .
 .de SH-NO-TAG
 .par@finish
-.\" Keep the heading and the first few lines of the next paragraph together.
-.\" (\n[HORPHANS] defines "first few" -- default = 1; user may redefine it).
+.\" Keep the heading and the first few lines of the next paragraph
+.\" together.  (\n[HORPHANS] defines "first few" -- default = 1; user
+.\" may redefine it).
 .nr sh*minvs \\n[HORPHANS]v
 .if \\n[sh*psincr]<0 .nr sh*psincr 0
 .ie \\n(VS<1000 .par*vs \\n(VSp+\\n[sh*psincr]u
 .el .par*vs \\n(VSp/1000u+\\n[sh*psincr]u
 .ne 2v+\\n[sh*minvs]u+\\n[\\n[.ev]:PD]u+\\n(.Vu
-.\" Adjust point size for heading text, as specified by \n[GROWPS] and \n[PSINCR].
+.\" Adjust point size for heading text, as specified by \n[GROWPS] and
+.\" \n[PSINCR].
 .ie \\n(PS<1000 .ps \\n(PS+\\n[sh*psincr]u
 .el .ps \\n(PSz/1000u+\\n[sh*psincr]u
 .sp 1
@@ -1497,12 +1503,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .\" footnote paragraphs
 .\" FF is the footnote format
 .nr FF 0
-.\" This can be redefined. It gets a second argument of `no' if the first
-.\" argument was supplied by the user, rather than automatically.
+.\" This can be redefined. It gets a second argument of 'no' if the
+.\" first argument was supplied by the user, rather than automatically.
 .de FP
 .br
 .if !d par*fp!\\n[FF] \{\
-.      @error unknown footnote format `\\n[FF]'
+.      @error unknown footnote format '\\n[FF]'
 .      nr FF 0
 .\}
 .ie '\\$2'no' .par*fp!\\n[FF]-no "\\$1"
@@ -1723,8 +1729,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .              nf
 .              ie \\n[dl] \{\
 .\"                     --fixme-- this really should not be necessary
-.\"                     and indicates that there is extra space creeping into
-.\"                     an equation when ps4html is enabled..
+.\"                     and indicates that there is extra space creeping
+.\"                     into an equation when ps4html is enabled..
 .                      ie r ps4html .ds@need \\n[dn]u-1v+\n[.V]u+1i
 .                      el .ds@need \\n[dn]u-1v+\n[.V]u
 .                      chop eqn*div
@@ -1748,7 +1754,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .              sp \\n[DD]u
 .              ta \\*[eqn*tabs]
 .      \}
-.      el \{
+.      el \{\
 .\" must terminate empty equations in html and ps4html as they contain
 .\" the EQN-HTML-IMAGE-END suppression nodes
 .              if \\n[dl] .chop eqn*div
@@ -1876,7 +1882,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .ds U \(rq
 .ds - \(em
 .\" Characters
-.\" The idea of this definition is for the top of the 3 to be at the x-height.
+.\" The idea of this definition is for the top of the 3 to be at the
+.\" x-height.
 .if !c\[yogh] .char \[yogh] \Z'\v'\w'x'*0-\En[rst]u'\s[\En[.s]*8u/10u]\
 \v'\w'3'*0+\En[rst]u'3\s0'\h'\w'\s[\En[.s]*8u/10u]3'u'
 .\" Accents
@@ -1951,15 +1958,17 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .\" ******** module bell ********
 .\" ****************************
 .\" Emulate Bell Labs localisms. Note, (a) they're not documented, and
-.\" (b) the .P1 and .UC macros collide with different ones in Berkeley ms.
-.\" We hack around this by conditionalizing the behavior of P1; UC was
-.\" not defined by groff and will be a no-op if called Berkeley style
-.\" with no arguments, so there is no problem with hijacking it here.
+.\" (b) the .P1 and .UC macros collide with different ones in Berkeley
+.\" ms.  We hack around this by conditionalizing the behavior of P1; UC
+.\" was not defined by groff and will be a no-op if called Berkeley
+.\" style with no arguments, so there is no problem with hijacking it
+.\" here.
 .\"
-.\" What's done here is sufficient to give back the Guide to EQN (1976) its
-.\" section headings and restore some text that had gone missing as macro
-.\" arguments; no warranty express or implied is given as to how well the
-.\" typographic details these produce match the original Bell Labs macros.
+.\" What's done here is sufficient to give back the Guide to EQN (1976)
+.\" its section headings and restore some text that had gone missing as
+.\" macro arguments; no warranty express or implied is given as to how
+.\" well the typographic details these produce match the original Bell
+.\" Labs macros.
 .\"
 .\" P1 is now defined in module pg.
 .de SC
@@ -1976,4 +1985,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 .      DE
 .\}
 ..
-.\" Make sure that no blank lines creep in at the end of this file.
+.\" ====================================================================
+.\" Editor settings
+.\" ====================================================================
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" fill-column: 72
+.\" End:
+.\" vim: set filetype=groff textwidth=72:
index 0bb59f8..7175637 100644 (file)
@@ -1,12 +1,13 @@
-# strip comments, spaces, etc., after a line containing `%beginstrip%'
 /%beginstrip%/,$ {
+  /%beginstrip%/c\
+.\\" This is a generated file, created by 'tmac/strip.sed' in groff's\
+.\\" source distribution from a file having '-u' appended to its name.
   s/^\.[        ]*/./
   s/^\.\\".*/./
   s/^\\#.*/./
   s/\\".*/\\"/
   s/\\#.*/\\/
-  /\(.[ad]s\)/!s/[      ]*\\"//
-  /\(.[ad]s\)/s/\([^    ]*\)\\"/\1/
-  s/\([^/]\)doc-/\1/g
+  /.[ad]s/!s/[  ]*\\"//
+  /.[ad]s/s/\([^        ]*\)\\"/\1/
+  /^\.$/d
 }
-/^\.$/d
index df2519f..22e82ad 100644 (file)
@@ -1,24 +1,23 @@
-.\" -*- mode: nroff; coding: iso-latin-1; -*-
-.\"
 .\" Swedish localization for groff
 .\"
-.\" Copyright (C) 2006-201 Free Software Foundation, Inc.
+.\" Copyright (C) 2006-2018 Free Software Foundation, Inc.
 .\"   Written by Werner Lemberg (wl@gnu.org)
 .\"
 .\" This file is part of groff.
 .\"
-.\" groff 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
+.\" groff 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.
 .\"
-.\" groff 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.
+.\" groff 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 <http://www.gnu.org/licenses/>.
+.\" along with this program.  If not, see
+.\" <http://www.gnu.org/licenses/>.
 .\"
 .\" Please send comments to groff@gnu.org.
 .
 .      \" update the date
 .      ds DY \n[dy] \*[MO] \n[year]
 .      \" set hyphenation flags
-.      nr HY 8
+.      nr HY 4
 .\}
 .
 .
 .mso latin1.tmac
 .
 .
-.\" Swedish hyphenation
+.\" Swedish hyphenation (\lefthyphenmin=1, \righthyphenmin=2)
 .ss 12 0
-.hy 8
+.hy 32
 .hcode å å  Å å
 .hcode ä ä  Ä ä
 .hcode ö ö  Ö ö
 .hpf hyphen.sv
 .
 .
-.\" man, mdoc and mdoc-old are intentionally left untouched:
-.\" usually these packages are translated in the sources of the documents.
+.\" man, mdoc and mdoc-old are intentionally left untouched: usually
+.\" these packages are translated in the sources of the documents.
+.
+.\" ====================================================================
+.\" Editor settings
+.\" ====================================================================
 .
-.\" end of sv.tmac
+.\" Local Variables:
+.\" mode: nroff
+.\" coding: latin-1
+.\" fill-column: 72
+.\" End:
+.\" vim: set filetype=groff textwidth=72:
diff --git a/tmac/tmac.am b/tmac/tmac.am
new file mode 100644 (file)
index 0000000..bee6229
--- /dev/null
@@ -0,0 +1,270 @@
+# Copyright (C) 1989-2018 Free Software Foundation, Inc.
+#      Written by James Clark (jjc@jclark.com)
+#      Automake migration by Bertrand Garrigues
+#
+# Latest update: 22 Aug 2015
+#
+# This file is part of groff.
+#
+# groff 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.
+#
+# groff 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 <http://www.gnu.org/licenses/>.
+tmac_srcdir = $(top_srcdir)/tmac
+tmac_builddir = $(top_builddir)/tmac
+
+man7_MANS += \
+  tmac/groff_ms.7 \
+  tmac/groff_man.7 \
+  tmac/groff_me.7 \
+  tmac/groff_mdoc.7 \
+  tmac/groff_trace.7 \
+  tmac/groff_www.7
+
+TMACNORMALFILES = \
+  tmac/man.tmac \
+  tmac/mandoc.tmac \
+  tmac/andoc.tmac \
+  tmac/an-old.tmac \
+  tmac/an-ext.tmac \
+  tmac/ms.tmac \
+  tmac/me.tmac \
+  tmac/mdoc.tmac \
+  tmac/pic.tmac \
+  tmac/a4.tmac \
+  tmac/papersize.tmac \
+  tmac/62bit.tmac \
+  tmac/ec.tmac \
+  tmac/safer.tmac \
+  tmac/trace.tmac \
+  tmac/ps.tmac \
+  tmac/psold.tmac \
+  tmac/pdfpic.tmac \
+  tmac/pspic.tmac \
+  tmac/psatk.tmac \
+  tmac/pdf.tmac \
+  tmac/dvi.tmac \
+  tmac/tty.tmac \
+  tmac/tty-char.tmac \
+  tmac/latin1.tmac \
+  tmac/latin2.tmac \
+  tmac/latin5.tmac \
+  tmac/latin9.tmac \
+  tmac/cp1047.tmac \
+  tmac/unicode.tmac \
+  tmac/X.tmac \
+  tmac/Xps.tmac \
+  tmac/lj4.tmac \
+  tmac/lbp.tmac \
+  tmac/html.tmac \
+  tmac/html-end.tmac \
+  tmac/devtag.tmac \
+  tmac/europs.tmac \
+  tmac/composite.tmac \
+  tmac/fallbacks.tmac \
+  tmac/eqnrc \
+  tmac/refer.tmac \
+  tmac/refer-me.tmac \
+  tmac/refer-ms.tmac \
+  tmac/troffrc \
+  tmac/troffrc-end \
+  tmac/trans.tmac \
+  tmac/hyphen.us \
+  tmac/hyphenex.us \
+  tmac/fr.tmac \
+  tmac/hyphen.fr \
+  tmac/sv.tmac \
+  tmac/hyphen.sv \
+  tmac/de.tmac \
+  tmac/den.tmac \
+  tmac/hyphen.det \
+  tmac/hyphen.den \
+  tmac/cs.tmac \
+  tmac/hyphen.cs \
+  tmac/hyphenex.cs \
+  tmac/ja.tmac \
+  tmac/zh.tmac
+NORMALFILES = `echo $(TMACNORMALFILES) | sed -e "s|tmac/||g"`
+
+# TMACSTRIPFILES are built from their unstripped version (-u)
+TMACSTRIPFILES = tmac/e.tmac tmac/doc.tmac tmac/doc-old.tmac
+
+# Files installed in tmacdir
+dist_tmac_DATA = $(TMACNORMALFILES) tmac/an.tmac tmac/s.tmac
+nodist_tmac_DATA = $(TMACSTRIPFILES) tmac/www.tmac
+
+TMACMDOCFILES = \
+  tmac/doc-common \
+  tmac/doc-ditroff \
+  tmac/doc-nroff \
+  tmac/doc-syms
+MDOCFILES = `echo $(TMACMDOCFILES) | sed -e "s|tmac/||g"`
+mdocdir=$(tmacdir)/mdoc
+# Files installed in mdocdir
+nodist_mdoc_DATA = $(TMACMDOCFILES)
+
+# Installed in localtmacdir
+dist_localtmac_DATA = tmac/man.local tmac/mdoc.local
+
+MOSTLYCLEANFILES += $(TMACMDOCFILES) tmac/www.tmac $(TMACSTRIPFILES) \
+   tmac/stamp-wrap \
+   tmac/*-wrap
+
+EXTRA_DIST += \
+  tmac/fixmacros.sed \
+  tmac/groff_ms.7.man \
+  tmac/groff_man.7.man \
+  tmac/groff_me.7.man \
+  tmac/groff_mdoc.7.man \
+  tmac/groff_trace.7.man \
+  tmac/groff_www.7.man \
+  tmac/hyphenex.pl \
+  tmac/LOCALIZATION \
+  tmac/man.ultrix \
+  tmac/psfig.tmac \
+  tmac/ptx.tmac \
+  tmac/strip.sed \
+  tmac/TESTING-HINTS \
+  tmac/TODO \
+  tmac/www.tmac.in
+
+dist-hook: tmac-dist-hook
+tmac-dist-hook:
+       chmod u+w $(distdir)/tmac
+       for f in $(TMACMDOCFILES) $(TMACSTRIPFILES); do \
+         cp -f $(top_srcdir)/$$f-u $(distdir)/tmac; \
+       done
+
+$(TMACMDOCFILES) $(TMACSTRIPFILES): 
+       $(MKDIR_P) $(top_builddir)/tmac
+       for f in $(TMACMDOCFILES) $(TMACSTRIPFILES); do \
+          sed -f $(tmac_srcdir)/strip.sed $(top_srcdir)/$$f-u > $(top_builddir)/$$f; \
+       done
+
+tmac/www.tmac: tmac/www.tmac.in
+       $(MKDIR_P) $(top_builddir)/tmac
+       sed -e "s;[@]PNMTOPS_NOSETPAGE[@];$(pnmtops_nosetpage);g" \
+         $(tmac_srcdir)/www.tmac.in > $(top_builddir)/tmac/www.tmac
+
+# The installation of groff compatibility wrappers for vendor-provided
+# non-GNU macro sets is controlled by 'compatibility_wrappers' (see the
+# commentary surrounding m4/groff.m4's
+# GROFF_WITH_COMPATIBILITY_WRAPPERS).  Collision detection variables of
+# the form 'tmac_<macro>_prefix' are defined in Makefile.am, to assist
+# in the installation of groff-provided macro sets.
+#
+# When 'compatibility_wrappers' is 'no', one step is performed:
+#   - the groff-provided macro set implementations are installed in
+#     <prefix>/share/groff/<version>/tmac/ with the original macro set
+#     name
+#
+# When 'compatibility_wrappers' is 'yes', two steps are performed:
+#   - the groff-provided macro set implementations are installed in
+#     <prefix>/share/groff/<version>/tmac/ with a prefix of
+#     $(tmac_prefix) (which is usually 'g', via the appropriate
+#     collision detection variable)
+#   - the generated compatibility wrappers are installed in
+#     <prefix>/lib/groff/site-tmac, with the original macro set name
+#
+# When 'compatibility_wrappers' is 'manual', two steps are performed:
+#   - the groff-provided macro set implementations are installed in
+#     <prefix>/share/groff/<version>/tmac/ with the original macro set
+#     name
+#   - the generated compatibility wrappers are installed in
+#     <prefix>/lib/groff/site-tmac, with a name of
+#     <macro><wrapper_suffix>, (which is usually '-os', see
+#     'wrapper_suffix_default' in Makefile.am)
+
+
+all: tmac/stamp-wrap
+
+# Generate groff compatibility wrappers for all non-GNU OS provided
+# macro sets.
+tmac/stamp-wrap:
+       $(MKDIR_P) $(top_builddir)/tmac;
+       if test -n "$(tmac_wrap)"; then \
+         for m in ""$(tmac_wrap); do \
+           $(RM) $(top_builddir)/tmac/$$m-wrap; \
+           if test "$$m" = an; then \
+             echo .do mso andoc.tmac >>$(top_builddir)/tmac/$$m-wrap; \
+           fi; \
+           echo .cp 1 >>$(top_builddir)/tmac/$$m-wrap; \
+           echo .so $(sys_tmac_prefix)$$m >>$(top_builddir)/tmac/$$m-wrap; \
+         done; \
+       fi
+       touch $@
+
+# Install groff compatibility wrappers into
+# <prefix>/lib/groff/site-tmac.
+install-data-local: install_tmac_wrap
+install_tmac_wrap:
+       $(MKDIR_P) $(DESTDIR)$(systemtmacdir);
+       if test "$(compatibility_wrappers)" != "no"; then \
+         if test -n "$(tmac_wrap)"; then \
+           for m in ""$(tmac_wrap); do \
+             $(INSTALL_DATA) $(tmac_builddir)/$$m-wrap \
+                $(DESTDIR)$(systemtmacdir)/$$m$(wrapper_suffix).tmac; \
+           done; \
+         fi; \
+       fi
+
+# Rename the groff implementations of colliding macro sets to have a
+# prefix.
+install-data-hook: install_tmac_wrap_hook
+install_tmac_wrap_hook:
+       if test "$(compatibility_wrappers)" = "yes"; then \
+         if test -n "$(tmac_wrap)"; then \
+           if test -f $(DESTDIR)$(tmacdir)/s.tmac -a -n "$(tmac_s_prefix)"; \
+           then \
+             mv $(DESTDIR)$(tmacdir)/s.tmac \
+                $(DESTDIR)$(tmacdir)/$(tmac_s_prefix)s.tmac; \
+           fi; \
+           if test -f $(DESTDIR)$(tmacdir)/an.tmac -a -n "$(tmac_an_prefix)"; \
+           then \
+             mv $(DESTDIR)$(tmacdir)/an.tmac \
+                $(DESTDIR)$(tmacdir)/$(tmac_an_prefix)an.tmac; \
+           fi; \
+         fi; \
+       fi
+
+# Uninstall groff compatibility wrappers & renamed groff implementation
+# macro sets.
+uninstall_groffdirs: uninstall_tmac_hook
+uninstall_tmac_hook:
+       if test -n "$(tmac_wrap)"; then \
+         if test "$(compatibility_wrappers)" != "no"; then \
+           for m in ""$(tmac_wrap); do \
+             $(RM) $(DESTDIR)$(systemtmacdir)/$$m$(wrapper_suffix).tmac; \
+           done; \
+         fi; \
+         $(RM) -f $(DESTDIR)$(tmacdir)/$(tmac_an_prefix)an.tmac; \
+         $(RM) -f $(DESTDIR)$(tmacdir)/$(tmac_s_prefix)s.tmac; \
+       fi
+       if test -d $(DESTDIR)$(mdocdir); then \
+         rmdir $(DESTDIR)$(mdocdir); \
+       fi
+       if test -d $(DESTDIR)$(tmacdir); then \
+         rmdir $(DESTDIR)$(tmacdir); \
+       fi
+       if test -d $(DESTDIR)$(localtmacdir); then \
+         rmdir $(DESTDIR)$(localtmacdir); \
+       fi
+
+
+########################################################################
+# Editor settings
+########################################################################
+#
+# Local Variables:
+# mode: makefile-automake
+# fill-column: 72
+# End:
+# vim: set filetype=automake textwidth=72:
index 63885bd..aea231a 100644 (file)
@@ -1,47 +1,45 @@
-.\" -*- nroff -*-
-.\"
 .\" trace.tmac
 .\"
 .\" Load this before a macro package that you want to trace.
 .\"
 .\"
-.\" Copyright (C) 1989-201 Free Software Foundation, Inc.
+.\" Copyright (C) 1989-2018 Free Software Foundation, Inc.
 .\"      Written by James Clark (jjc@jclark.com)
 .\"
 .\" This file is part of groff.
 .\"
-.\" groff 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
+.\" groff 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.
 .\"
-.\" groff 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.
+.\" groff 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 <http://www.gnu.org/licenses/>.
+.\" along with this program.  If not, see
+.\" <http://www.gnu.org/licenses/>.
 .\"
 .
 .
 .\" Tracing within groff means replacing the original macros or requests
-.\" with special versions which act as wrappers to emit tracing information.
-.\" A natural consequence of creating such wrappers is that arguments must
-.\" be expanded once more.  In most cases it doesn't matter, however,
-.\" sometimes it makes a difference.
+.\" with special versions which act as wrappers to emit tracing
+.\" information.  A natural consequence of creating such wrappers is
+.\" that arguments must be expanded once more.  In most cases it doesn't
+.\" matter, however, sometimes it makes a difference.
 .\"
 .\" To limit side effects, only macros are traced by default, together
-.\" with some requests like `.return' which don't take (user) arguments.
+.\" with some requests like '.return' which don't take (user) arguments.
 .\" If you want more tracing, especially of number and string register
-.\" assignments, add the `-r trace-full=1' command line option.
+.\" assignments, add the '-r trace-full=1' command-line option.
 .
 .
-.\" Regarding the usage of `.do': All lines of macros which should
-.\" work in compatibility mode must be protected if they contain
-.\" GNU troff extensions and are defined with `.de'.  Example: `.ds',
-.\" but not `.ds1', since the latter can't be called in compatibility
-.\" mode.
+.\" Regarding the usage of '.do': All lines of macros which should work
+.\" in compatibility mode must be protected if they contain GNU troff
+.\" extensions and are defined with '.de'.  Example: '.ds', but not
+.\" '.ds1', since the latter can't be called in compatibility mode.
 .
 .
 .do if d !!!sp \
 .    ecs
 .    ec
 .    !!substring \$*
-.    tm1 "\*[!!!sp]*** .substring \$* (-> `\*[\$1]')
+.    tm1 "\*[!!!sp]*** .substring \$* (-> '\*[\$1]')
 .    ecr
 .  .
 .
 .    do ecr
 .  .
 .
-.  !!c We must use `.de' for the redefinition of .mso to avoid
+.  !!c We must use '.de' for the redefinition of .mso to avoid
 .  !!c side effects; for example, it might be called with
-.  !!c `.do mso ...'.
+.  !!c '.do mso ...'.
 .
 .  rn mso !!mso
 .
 .  do ecr
 ..
 .
-.!!c Now the central tracing macros.  The redefined `de' macros
-.!!c create wrapper macros `foo' which emit tracing messages
-.!!c before and after the call to the traced macro `!!foo'.
+.!!c Now the central tracing macros.  The redefined 'de' macros
+.!!c create wrapper macros 'foo' which emit tracing messages
+.!!c before and after the call to the traced macro '!!foo'.
 .!!c
-.!!c Note that we define `!!foo' in advance so that an alias to
-.!!c `!!!!foo' is possible.  The latter occurs if `foo' is
+.!!c Note that we define '!!foo' in advance so that an alias to
+.!!c '!!!!foo' is possible.  The latter occurs if 'foo' is
 .!!c called as \\[foo].
 .!!c
-.!!c The call to `dei' must be the last instruction in the macro
+.!!c The call to 'dei' must be the last instruction in the macro
 .!!c (since it continues the definition of the macro to trace).
 .
 .!!rn de !!de
 .
 .cp \n(_C
 .
-.\" EOF
+.\" ====================================================================
+.\" Editor settings
+.\" ====================================================================
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" fill-column: 72
+.\" End:
+.\" vim: set filetype=groff textwidth=72:
index 0025065..f380f70 100644 (file)
@@ -1,32 +1,32 @@
-.\" -*- mode: nroff; -*-
-.\"
 .\" Localization for groff
 .\"
-.\" Copyright (C) 2006-201 Free Software Foundation, Inc.
+.\" Copyright (C) 2006-2018 Free Software Foundation, Inc.
 .\"   Written by Fabrice Ménard (menard.fabrice@wanadoo.fr)
 .\"
 .\" This file is part of groff.
 .\"
-.\" groff 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
+.\" groff 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.
 .\"
-.\" groff 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.
+.\" groff 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 <http://www.gnu.org/licenses/>.
+.\" along with this program.  If not, see
+.\" <http://www.gnu.org/licenses/>.
 .\"
 .\" Please send comments to menard.fabrice@wanadoo.fr.
 .
 .
 .\" This file translates some predefined strings used in the packages
-.\" distributed with groff.  The translations are actually done in locale
-.\" specific files (for example, fr.tmac for French) which are also
-.\" responsible for defining the string locale (`.ds locale french').
+.\" distributed with groff.  The translations are actually done in
+.\" locale specific files (for example, fr.tmac for French) which are
+.\" also responsible for defining the string locale ('.ds locale
+.\" french').
 .\"
 .\" trans.tmac should stay locale-independent.
 .
 .      TOC_HEADER_STRING "\*[\*[locale]-toc_header_string]"
 .\}
 .
-.\" end of trans.tmac
+.\" ====================================================================
+.\" Editor settings
+.\" ====================================================================
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" coding: latin-1
+.\" fill-column: 72
+.\" End:
+.\" vim: set filetype=groff textwidth=72:
index 759b870..6dca1db 100644 (file)
@@ -1,5 +1,3 @@
-.\" -*- nroff -*-
-.\"
 .\" Startup file for troff.
 .
 .\" This is tested by pic.
@@ -40,7 +38,7 @@ troffrc!X100 troffrc!X100-12 troffrc!lj4 troff!lbp troffrc!html troffrc!pdf
 .el \
 .      do tr \[char65]\~
 .
-.\" Set the hyphenation language to `us'.
+.\" Set the hyphenation language to 'us'.
 .do hla us
 .
 .\" Load hyphenation patterns and exceptions.
@@ -52,5 +50,14 @@ troffrc!X100 troffrc!X100-12 troffrc!lj4 troff!lbp troffrc!html troffrc!pdf
 .
 .\" Handle PS images.
 .do mso pspic.tmac
+.do mso pdfpic.tmac
 .
-.\" Don't let blank lines creep in here.
+.\" ====================================================================
+.\" Editor settings
+.\" ====================================================================
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" fill-column: 72
+.\" End:
+.\" vim: set filetype=groff textwidth=72:
index 93ca2b7..d24d38d 100644 (file)
@@ -9,7 +9,8 @@
 .\" - work with all of -Tascii, -Tlatin1, -Tutf8, and -Tcp1047.
 .\" - work on devices that display only the last overstruck character
 .\"   as well as on devices that support overstriking
-.\" - represent the character's graphical shape (not its meaning)
+.\" - help understanding the character's meaning, only aiming to imitate
+.\"   a particular graphical shape when that doesn't hinder understanding
 .\"
 .\" Note that the optical appearance of the definitions contained in this
 .\" file is inferior compared to that of the replacement characters defined
 .tty-char \[rn] \*[tty-rn]
 .tty-char \[ua] \z|^
 .tty-char \[da] \z|v
-.tty-char \[sc] S
+.tty-char \[sc] <section>
 .tty-char \[ct] \z/c
-.tty-char \[dg] \z|-
-.tty-char \[dd] \z|=
-.tty-char \[ib] (\z=_
-.tty-char \[ip] \z=_)
-.tty-char \[sb] (=
-.tty-char \[sp] =)
-.tty-char \[if] oo
-.tty-char \[pt] oc
+.tty-char \[dg] <*>
+.tty-char \[dd] <**>
+.tty-char \[ib] <subset\~or\~equal>
+.tty-char \[ip] <superset\~or\~equal>
+.tty-char \[sb] <proper\~subset>
+.tty-char \[sp] <proper\~superset>
+.tty-char \[nb] <not\~subset>
+.tty-char \[nc] <not\~superset>
+.tty-char \[if] <infinity>
+.tty-char \[pt] <proportional\~to>
 .tty-char \[es] {}
-.tty-char \[ca] (^)
-.tty-char \[cu] U
-.tty-char \[de] o
-.tty-char \[di] -:-
-.tty-char \[tdi] -:-
+.tty-char \[ca] <intersection>
+.tty-char \[cu] <union>
+.tty-char \[de] <degree>
+.tty-char \[di] /
+.tty-char \[tdi] /
 .tty-char \[no] ~
 .tty-char \[tno] ~
-.tty-char \[gr] \Z'\*[tty-rn]'V
-.tty-char \[is] \z'\z,I
-.tty-char \[mo] E
-.tty-char \[pd] a
-.tty-char \[sr] \e/
-.tty-char \[*C] \z_H
-.tty-char \[*D] \z_/\z_\e
-.tty-char \[*F] \zIO
-.tty-char \[*G] |\*[tty-rn]
-.tty-char \[*H] \z-O
-.tty-char \[*L] /\e
-.tty-char \[*P] TT
-.tty-char \[*Q] \zIY
-.tty-char \[*S] \z_\Z'\*[tty-rn]'>
-.tty-char \[*W] \z_O
-.if c\[ss] .tty-char \[*b] \[ss]
-.tty-char \[*b] B
-.tty-char \[*a] a
-.tty-char \[*c] \z,E
-.tty-char \[*d] d
-.tty-char \[*e] e
-.tty-char \[+e] e
-.tty-char \[*f] \z|o
-.tty-char \[+f] \z|o
-.tty-char \[*g] y
-.tty-char \[*h] \z-0
-.tty-char \[+h] \z-0
-.tty-char \[*i] i
-.tty-char \[*k] k
-.tty-char \[*l] \z>\e
-.tty-char \[*m] \z,u
-.tty-char \[*n] v
-.tty-char \[*p] \z-n
-.tty-char \[+p] \z-w
-.tty-char \[*q] \z|u
-.tty-char \[*r] p
-.tty-char \[*s] \z-o
-.tty-char \[*t] \z~t
-.tty-char \[*u] u
-.tty-char \[*w] w
-.tty-char \[*x] x
-.tty-char \[*y] n
-.tty-char \[*z] \z,C
-.tty-char \[ts] s
-.\" Definition of \[ss] should follow that of \[*b].
-.tty-char \[ss] B
+.tty-char \[gr] <nabla>
+.tty-char \[is] <integral>
+.tty-char \[integral] <integral>
+.tty-char \[sum] <sum>
+.tty-char \[product] <product>
+.tty-char \[coproduct] <coproduct>
+.tty-char \[mo] <element\~of>
+.tty-char \[pd] <del>
+.tty-char \[sr] <sqrt>
+.tty-char \[sqrt] <sqrt>
+.tty-char \[*C] <Xi>
+.tty-char \[*D] <Delta>
+.tty-char \[*F] <Phi>
+.tty-char \[*G] <Gamma>
+.tty-char \[*H] <Theta>
+.tty-char \[*L] <Lambda>
+.tty-char \[*P] <Pi>
+.tty-char \[*Q] <Psi>
+.tty-char \[*S] <Sigma>
+.tty-char \[*W] <Omega>
+.tty-char \[*b] <beta>
+.tty-char \[*a] <alpha>
+.tty-char \[*c] <xi>
+.tty-char \[*d] <delta>
+.tty-char \[*e] <epsilon>
+.tty-char \[+e] <epsilon>
+.tty-char \[*f] <phi>
+.tty-char \[+f] <phi>
+.tty-char \[*g] <gamma>
+.tty-char \[*h] <theta>
+.tty-char \[+h] <theta>
+.tty-char \[*i] <iota>
+.tty-char \[*k] <kappa>
+.tty-char \[*l] <lambda>
+.tty-char \[*m] <mu>
+.tty-char \[*n] <nu>
+.tty-char \[*p] <pi>
+.tty-char \[+p] <pi>
+.tty-char \[*q] <psi>
+.tty-char \[*r] <rho>
+.tty-char \[*s] <sigma>
+.tty-char \[*t] <tau>
+.tty-char \[*u] <upsilon>
+.tty-char \[*w] <omega>
+.tty-char \[*x] <chi>
+.tty-char \[*y] <eta>
+.tty-char \[*z] <zeta>
+.tty-char \[ts] <sigma>
+.tty-char \[ss] ss
 .tty-char \[c*] \zO\[mu]
 .tty-char \[c+] \zO+
 .tty-char \[AN] ^
 .tty-char \[dA] \z=v
 .if c\[md] .tty-char \[pc] \[md]
 .if c\[pc] .tty-char \[md] \[pc]
-.if c\[pc] .tty-char \[a.] \[pc]
-.tty-char \[Im] I
-.tty-char \[Re] R
+.ie c\[pc] .tty-char \[a.] \[pc]
+.el .tty-char \[a.] .
+.tty-char \[Im] <Im>
+.tty-char \[Re] <Re>
 .tty-char \[/L] \z/L
 .tty-char \[/l] \z/l
-.tty-char \[%0] %o
+.tty-char \[%0] <permille>
 .tty-char \[ao] o
 .tty-char \[a"] """"
 .tty-char \[ab] \z'`
 .tty-char \[ah] v
 .tty-char \[ho] \[ac]
-.tty-char \[/_] \z_/
+.tty-char \[/_] <angle>
 .tty-char \[=~] =~
 .tty-char \[|=] -~
-.tty-char \[Ah] N
-.tty-char \[CR] _|
-.tty-char \[fa] \z-V
-.tty-char \[nm] \z/E
-.tty-char \[pp] \z_|
+.tty-char \[Ah] <Aleph>
+.tty-char \[CR] <cr>
+.tty-char \[fa] <for\~all>
+.tty-char \[nm] <not\~element\~of>
+.tty-char \[pp] <perpendicular>
 .tty-char \[sd] ''
-.tty-char \[st] -)
-.tty-char \[te] 3
+.tty-char \[st] <such\~that>
+.tty-char \[te] <there\~exists>
 .if c\[md] .tty-char \[tf] .\[md].
-.tty-char \[tf] .:.
+.tty-char \[tf] <therefore>
 .if c\[md] .tty-char \[3d] .\[md].
-.tty-char \[3d] .:.
+.tty-char \[3d] <therefore>
 .tty-char \[wp] p
 .tty-char \[~~] ~~
 .tty-char \[Fn] \z,f
 .tty-char \[rk] }
 .tty-char \[lt] ,-
 .tty-char \[rt] -.
+.tty-char \[CL] C
+.tty-char \[SP] S
+.tty-char \[HE] H
+.tty-char \[DI] D
 .\" Latin characters
-.tty-char \[r!] \z,i
+.tty-char \[r!] !
 .tty-char \[Po] \z-L
 .tty-char \[Cs] \zox
 .tty-char \[Ye] \z=Y
 .tty-char \[Of] \z_a
 .tty-char \[Fo] <<
 .tty-char \[a-] \*[tty-rn]
-.tty-char \[S2] 2
-.tty-char \[S3] 3
-.tty-char \[ps] 9|
+.tty-char \[S2] ^2
+.tty-char \[S3] ^3
+.tty-char \[ps] <paragraph>
 .tty-char \[md] .
 .tty-char \[pc] .
 .tty-char \[ac] ,
-.tty-char \[S1] 1
+.tty-char \[S1] ^1
 .tty-char \[Om] \z_o
 .tty-char \[Fc] >>
-.tty-char \[r?] \z'c
+.tty-char \[r?] ?
 .tty-char \[`A] \z`A
 .tty-char \['A] \z'A
 .tty-char \[^A] \z^A
 .tty-char \['I] \z'I
 .tty-char \[^I] \z^I
 .tty-char \[:I] \z"I
-.tty-char \[-D] \z-D
+.tty-char \[-D] Dh
 .tty-char \[~N] \z~N
 .tty-char \[`O] \z`O
 .tty-char \['O] \z'O
 .tty-char \[^U] \z^U
 .tty-char \[:U] \z"U
 .tty-char \['Y] \z'Y
-.tty-char \[TP] \zIb
+.tty-char \[TP] Th
 .tty-char \[`a] \z`a
 .tty-char \['a] \z'a
 .tty-char \[^a] \z^a
 .tty-char \['i] \z'i
 .tty-char \[^i] \z^i
 .tty-char \[:i] \z"i
-.tty-char \[Sd] \z`\z'o
+.tty-char \[Sd] dh
 .tty-char \[~n] \z~n
 .tty-char \[`o] \z`o
 .tty-char \['o] \z'o
 .tty-char \[^u] \z^u
 .tty-char \[:u] \z"u
 .tty-char \['y] \z'y
-.tty-char \[Tp] \zpb
+.tty-char \[Tp] th
 .tty-char \[:y] \z"y
 .\" for Turkish
 .tty-char "\[G ab]" G
 .tty-char "\[I .]" I
 .\"tty-char \[:y] \ij
 .tty-char \[arrowvertex] |
-.tty-char \[mc] \z,u
+.tty-char \[mc] <micro>
 .cp \n[_C]
 .
 .ie '\*(.T'cp1047' \
index 1bf7204..471fb8b 100644 (file)
@@ -1,5 +1,3 @@
-.\" -*- nroff -*-
-.\"
 .\" tty.tmac
 .\"
 .nr _C \n(.C
 .
 .po 0
 .
-.ie c\[pc] \
-.  tr \[bu]\[pc]
-.el \
-.  if c\[md] \
-.    tr \[bu]\[md]
+.if !'\*[.T]'utf8' \{\
+.  ie c\[pc] \
+.    tr \[bu]\[pc]
+.  el \
+.    if c\[md] \
+.      tr \[bu]\[md]
+.\}
 .
 .fchar \[bu] \z+o
 .fchar \[14] 1/4
@@ -65,6 +65,7 @@
 .fchar \[eu] EUR
 .fchar \[Eu] EUR
 .fchar \[.i] i
+.fchar \[.j] j
 .fchar \[bq] ,
 .
 .if '\*[.T]'utf8' \
 .    do mso latin1.tmac
 .
 .\" If you want the character definitions in tty-char.tmac to be loaded
-.\" automatically, remove the `\"' from the next line.
+.\" automatically, remove the '\"' from the next line.
 .\"do mso tty-char.tmac
+.
+.\" ====================================================================
+.\" Editor settings
+.\" ====================================================================
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" fill-column: 72
+.\" End:
+.\" vim: set filetype=groff textwidth=72:
similarity index 93%
rename from tmac/www.tmac
rename to tmac/www.tmac.in
index ccc2399..0ccadf9 100644 (file)
@@ -10,23 +10,23 @@ Installed position: groff's main macro directory.
 
 This file is part of groff, the GNU roff type-setting system.
 
-Copyright (C) 2001-201 Free Software Foundation, Inc.
+Copyright (C) 2001-2018 Free Software Foundation, Inc.
 written by Gaius Mulley <gaius@glam.ac.uk>, with additions by
 Werner Lemberg <wl@gnu.org> and
 Bernd Warken <groff-bernd.warken-72@web.de>.
 
 groff 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.
+Software Foundation, either version 3 of the License, or (at your
+option) any later version.
 
-groff is distributed in the hope that it will be useful, but WITHOUT
-ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+groff 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 <http://www.gnu.org/licenses/>.
+You should have received a copy of the GNU General Public License along
+with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 
 ------------------------------------------------------------------------
@@ -34,8 +34,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 ------------------------------------------------------------------------
 
 A simple set of macros to provide HTML (or XHTML) documents with basic
-www functionality.  It should work with any macro set.  In the following,
-HTML always denotes XHTML also.
+www functionality.  It should work with any macro set.  In the
+following, HTML always denotes XHTML also.
 ..
 .
 .
@@ -51,6 +51,15 @@ HTML always denotes XHTML also.
 .cp 0
 .
 .
+.\" Taken from tmac/an-ext.tmac
+.\" Map mono-width fonts to standard fonts for groff's TTY device.
+.if n \{\
+.  do ftr CR R
+.  do ftr CW R
+.  do ftr CI I
+.  do ftr CB B
+.\}
+.
 .ie r xhtml \
 .  ds www-> />\"
 .el \
@@ -78,7 +87,7 @@ HTML always denotes XHTML also.
 .
 .
 .\" --------------------------------------------------------------------
-.\" Test for `.substring'; result in register `www.substring_ok'.
+.\" Test for '.substring'; result in register 'www.substring_ok'.
 .\" The automated break points in .URL addresses are only added if
 .\" this register is non-zero.
 .\"
@@ -161,7 +170,7 @@ HTML always denotes XHTML also.
 .\"
 .\" Add a space character between any two adjacent characters in string
 .\" <name> and restore result into the string variable <name>; space
-.\" characters are first replaced by the word `space'.
+.\" characters are first replaced by the word 'space'.
 .\"
 .de www:splitstr
 .  if !(\\n[.$] == 1) \
@@ -194,9 +203,9 @@ HTML always denotes XHTML also.
 .\" --------------------------------------------------------------------
 .\" www:url_breaks (<string_name>)
 .\"
-.\" Add `\:' (possible break point) within URL strings after `/'.
+.\" Add '\:' (possible break point) within URL strings after '/'.
 .\"
-.\" Smart about multiple `/', existing `\:', and space characters;
+.\" Smart about multiple '/', existing '\:', and space characters;
 .\" does not set a break point if less than 5 characters would go to
 .\" the next line.
 .\"
@@ -215,12 +224,12 @@ HTML always denotes XHTML also.
 .\" --------------------------------------------------------------------
 .\" www:url_breaks_split (<result> <char> [<char>...])
 .\"
-.\" Add `\:' within URL strings, but arguments are a split string.
+.\" Add '\:' within URL strings, but arguments are a split string.
 .\"
 .\" Arguments: >=2: <result> <char> [<char>...]
 .\"
 .de www:url_breaks_split
-.  nr \\$0:min 5             \" minimal number of characters for next line
+.  nr \\$0:min 5        \" minimal number of characters for next line
 .  if (\\n[.$] < 2) \
 .    www:error .\\$0 expects at least 2 arguments.
 .  ds \\$0:res \\$1\"
@@ -245,7 +254,7 @@ HTML always denotes XHTML also.
 .      shift
 .      continue
 .    \}
-.    \" we are at a `/' character
+.    \" we are at a '/' character
 .    while '\\$1'/' \{\
 .      as \\$0:s /\"
 .      if (\\n[.$] == 0) \{\
@@ -282,7 +291,7 @@ HTML always denotes XHTML also.
 .    \" was implemented via .nop \&\X^html:\\$*^ but
 .    \" is now implemented using HTML-NS to utilize code factoring.
 .    \"
-.    \" the `\&' makes the vertical mode leave, so to say
+.    \" the '\&' makes the vertical mode leave, so to say
 .    \"
 .    nop \&\c
 .    HTML-NS \\$*
@@ -302,7 +311,7 @@ HTML always denotes XHTML also.
 .\"
 .de HTML</p>
 .  ie \\n[www-html] \{\
-.    \" the `\&' makes the vertical mode leave, so to say
+.    \" the '\&' makes the vertical mode leave, so to say
 .    nop \&\X^html</p>:\\$*^
 .  \}
 .  el \
@@ -337,8 +346,8 @@ HTML always denotes XHTML also.
 .\"   Automatic heading level cut off.
 .\"
 .\"   N is the depth limit of automatically linked headings.  So a depth
-.\"   of 2 would cause grohtml to generate a list of links for `.NH 1'
-.\"   and `.NH 2' but not for `.NH 3'.
+.\"   of 2 would cause grohtml to generate a list of links for '.NH 1'
+.\"   and '.NH 2' but not for '.NH 3'.
 .\"
 .de HX
 .  if \\n[www-html] \
@@ -460,7 +469,7 @@ HTML always denotes XHTML also.
 .\" --------------------------------------------------------------------
 .\" MTO address description [after]
 .\"
-.\"   ADDRESS is the email address (without the `mailto:' prefix).
+.\"   ADDRESS is the email address (without the 'mailto:' prefix).
 .\"
 .\"   DESCRIPTION is the optional name.  If an empty argument is given,
 .\"   ADDRESS is used instead.
@@ -572,7 +581,7 @@ HTML always denotes XHTML also.
 .\"   The default value for WIDTH and HEIGHT is zero; the default
 .\"   alignment is centering (-C).
 .\"
-.\" Note: This macro can only be used with the `-U' option of groff,
+.\" Note: This macro can only be used with the '-U' option of groff,
 .\"       activating unsafe mode, if not used with -Thtml; the PNG image
 .\"       is then converted to the EPS format using netpbm utilities.
 .\"
@@ -694,13 +703,13 @@ HTML always denotes XHTML also.
 ..
 .
 .\" www-handle-percent arg N1 N2 S1
-.\"                    arg - input string (number or number%)
-.\"                    output parameters:
-.\"                    N1 - name of number register 1=absolute 0=percentage
-.\"                    N2 - number register name for absolute value
-.\"                    S1 - string register name for percentage value
+.\"     arg - input string (number or number%)
+.\"     output parameters:
+.\"         N1 - name of number register 1=absolute 0=percentage
+.\"         N2 - number register name for absolute value
+.\"         S1 - string register name for percentage value
 .\"
-.de www-handle-percent 
+.de www-handle-percent
 .  ds www-percent \\$1\"
 .  substring www-percent -1 -1
 .
@@ -728,9 +737,9 @@ HTML always denotes XHTML also.
 .\"   The height and width can also be given as a percentage.
 .\"   The PostScript device converts the percentage width into an
 .\"   absolute value by using \\n[.l], and the height by using \\n[.p].
-.\"   
 .\"
-.\" Note: This macro can only be used with the `-U' option of groff,
+.\"
+.\" Note: This macro can only be used with the '-U' option of groff,
 .\"       activating unsafe mode, if not used with -Thtml; the PNG image
 .\"       is then converted to the EPS format using netpbm utilities.
 .\"
@@ -896,8 +905,8 @@ HTML always denotes XHTML also.
 .\"   End heading.
 .\"
 .\" If your heading contains URL, FTP, MTO macros you might wish to
-.\" disable automatic links to headings.  This can be done via `-P-l'
-.\" from the command line or by using a cakk to `.HX 0'.
+.\" disable automatic links to headings.  This can be done via '-P-l'
+.\" from the command line or by using a cakk to '.HX 0'.
 .\"
 .nr www-heading-no -1
 .
@@ -959,8 +968,8 @@ HTML always denotes XHTML also.
 .\"   Generate an HTML title only.  This differs from the -ms .TL macro
 .\"   which generates both an HTML title and an H1 heading.
 .\"
-.\"   This is useful when an author wishes to use an HTML title as search
-.\"   engine fodder but a graphic title in the document.
+.\"   This is useful when an author wishes to use an HTML title as
+.\"   search engine fodder but a graphic title in the document.
 .\"
 .\"   The macro terminates when a space or break is seen (.sp, .br).
 .\"
@@ -1238,8 +1247,8 @@ HTML always denotes XHTML also.
 .\"
 .\"   L is the letter to be dropped and enlarged.
 .\"
-.\"   TEXT is the following text whose height the first letter should not
-.\"   exceed.
+.\"   TEXT is the following text whose height the first letter should
+.\"   not exceed.
 .\"
 .\"   COLOR is the optional color of the dropped letter (default black).
 .\"
@@ -1255,10 +1264,10 @@ HTML always denotes XHTML also.
 .  el \{\
 .    ie r ps4html \{\
 .      www-make-unique-name
-.      \" To avoid interferences with another DC macro call which is located
-.      \" very near to the current one, we draw the glyph on a separate page.
-.      \" Otherwise it could theoretically happen that the dropped capital
-.      \" glyphs overlap.
+.      \" To avoid interferences with another DC macro call which is
+.      \" located very near to the current one, we draw the glyph on a
+.      \" separate page.  Otherwise it could theoretically happen that
+.      \" the dropped capital glyphs overlap.
 .      bp
 .      ev www-DC
 .      vs 320p
@@ -1315,7 +1324,7 @@ HTML always denotes XHTML also.
 .
 .\" --------------------------------------------------------------------
 .\" www-make-unique-name - generate another unique name in string
-.\"                        `www-unique-name'
+.\"                        'www-unique-name'
 .\"
 .de www-make-unique-name
 .  nr www-png-no +1
@@ -1410,9 +1419,9 @@ HTML always denotes XHTML also.
 .\"
 .\" now set up TS, TE, EQ, EN default macros
 .\"
-.\" we must not use `.als': the definition of .TE in s.tmac, for example,
-.\" calls .HTML-IMAGE-END, which would refer to itself due to the alias,
-.\" causing an endless loop
+.\" we must not use '.als': the definition of .TE in s.tmac, for
+.\" example, calls .HTML-IMAGE-END, which would refer to itself due to
+.\" the alias, causing an endless loop
 .\"
 .if !d TS \{\
 .  de TS
@@ -1472,7 +1481,7 @@ HTML always denotes XHTML also.
 .\" start of some code
 .\"
 .de CDS
-.  ft C
+.  ft CR
 .  nf
 ..
 .
@@ -1571,8 +1580,8 @@ HTML always denotes XHTML also.
 .\" LINKSTYLE color [fontstyle [openglyph closeglyph]]
 .\"
 .\"   Initialize www.tmac so that when this macro set is used with
-.\"   non-HTML devices the urls are rendered the user defined attributes.
-.\"   For example:
+.\"   non-HTML devices the urls are rendered the user defined
+.\"   attributes.  For example:
 .\"
 .\"   LINKSTYLE blue CR < >
 .\"
@@ -1603,7 +1612,7 @@ HTML always denotes XHTML also.
 .\" final setup
 .\" --------------------------------------------------------------------
 .
-.LINKSTYLE blue C \[la] \[ra]
+.LINKSTYLE blue CR \[la] \[ra]
 .
 .if \n[www-html] \{\
 .  nh
@@ -1615,11 +1624,12 @@ HTML always denotes XHTML also.
 .
 .\" now set
 .
-.\" --------------------------------------------------------------------
-.\" Emacs settings
-.\" --------------------------------------------------------------------
+.\" ====================================================================
+.\" Editor settings
+.\" ====================================================================
 .
 .\" Local Variables:
 .\" mode: nroff
+.\" fill-column: 72
 .\" End:
-.\" EOF
+.\" vim: set filetype=groff textwidth=72:
diff --git a/tmac/zh.tmac b/tmac/zh.tmac
new file mode 100644 (file)
index 0000000..131fabc
--- /dev/null
@@ -0,0 +1,57 @@
+.\" Chinese localization for groff
+.\"
+.\" Copyright (C) 2015-2018 Free Software Foundation, Inc.
+.\"   Written by Darcy SHEN <sadhen1992@gmail.com>
+.\"   using 'ja.tmac' as a template
+.\"
+.\" This file is part of groff.
+.\"
+.\" groff 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.
+.\"
+.\" groff 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
+.\" <http://www.gnu.org/licenses/>.
+.\"
+.\" Please send comments to groff@gnu.org.
+.
+.
+.\" The following rules work for both zh_CN and zh_TW.
+.
+.\" Locale string
+.
+.ds locale chinese\"
+.
+.
+.class [CJKprepunct] \
+  , : ; > } \
+  \[u2026] \[u201D] \
+  \[u3001] \[u3002] \[u3009] \[u300B] \[u300D] \[u300F] \[u3011] \
+  \[uFF01] \[uFF09] \[uFF0C] \[uFF1A] \[uFF1B] \[uFF1F]
+.class [CJKpostpunct] \
+  \[u201C] \[u3008] \[u300A] \[u300C] \[u300E] \[u3010] \[uFF08]
+.
+.\" Chinese glyphs.
+.class [CJKnormal] \
+  \[u4E00]-\[u9FFF]
+.
+.cflags 128 \C'[CJKprepunct]'
+.cflags 266 \C'[CJKpostpunct]'
+.cflags 512 \C'[CJKnormal]'
+.
+.\" ====================================================================
+.\" Editor settings
+.\" ====================================================================
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" fill-column: 72
+.\" End:
+.\" vim: set filetype=groff textwidth=72: